情けない

まだまだjQueryに不慣れなワタクシ。今回見事にハマったポイントがこれ。

<form action=“target.php” method=”post” enctype=”application/x-www-form-urlencoded” target=”_self” id=“source” accept-charset=”UTF-8″>
</form>

こんなフォームに対して

jQuery(‘<input/>’,type:’hidden’,id:’secret’,value:0}).appendTo(jQuery(‘#source’));

として

<input value=”0″ id=“secret” type=”hidden”>

を付加してsourceをsubmit()してやっても、target.phpにsecretが渡らない。原因は … name属性がないから。正解は

jQuery(‘<input/>’,type:’hidden’,id:’secret’,value:0,name:’secret’}).appendTo(jQuery(‘#source’));

ロスタイムは3時間弱(涙)。

mod_authn_dbdでユーザ認証

本業方面で長〜いこと重宝してきたmod_auth_pgsqlが、Cent7で遂に使えなくなった。正確にはApache2.4からなんだが、代替手法としてmod_authn_dbdをと思ったらこなれた情報が少なくて、動かすまでに結構苦労した。以下はその際の備忘録。

@ 動作環境

[root@tako ~]# cat /etc/redhat-release
CentOS Linux release 7.1.1503 (Core)

[root@tako ~]# psql –version
psql (PostgreSQL) 9.2.13

[root@tako ~]# httpd -v
Server version: Apache/2.4.6 (CentOS)
Server built:   Aug 24 2015 18:11:25

@ 準備

1. データベースhogeと、認証に必要なアカウントとパスワードを保持するテーブルmemberを作る。

psql=# select account,password from member;
account| password
—————+———-
user01 | A_235&bc
user02 | &se8ad_3
user03 | i58-Gz23
(3 行)

2. PostgreSQLでpgcryptoを使えるようにする

psql hoge -f /usr/share/pgsql/extension/pgcrypto–1.0.sql
psql hoge -c “create extension pgcrypto”

この段階で「SELECT crypt(password,gen_salt(‘des’)) FROM member WHERE account=‘user01’」として結果が返ればOK。

3. Apacheのディレクティブでmod_authn_dbdのための設定をする

以下は仮想ホストでのそれ。先頭に+++と付いている行がmod_authn_dbdに関するところ。

<VirtualHost www.anywhere.domain:80>
DocumentRoot /var/asproot
+++ DBDriver pgsql
+++ DBDParams “host=localhost dbname=hoge user=postgres password=postgres”
+++ DBDMin  4
+++ DBDKeep 8
+++ DBDMax  20
+++ DBDExptime 300
<Directory “/var/asproot”>
+++ AuthType Basic
+++ AuthName “ASP Server”
+++ AuthBasicProvider dbd
+++ AuthDBDUserPWQuery “SELECT crypt(password,gen_salt(‘des’)) FROM member WHERE account=%s”
+++ Require valid-user
allow from all
Options None
</Directory>
LogLevel debug
ErrorLog logs/asp.err.log
TransferLog logs/asp.access.log
ServerName www.anywhere.domain
</VirtualHost>

※  .htaccessには書けない
※  AuthDVUserPWQueryの%sは’’で囲わない

これが噂のWROOM02

まだ暑かった頃、せっかくソーラー+LiPoの環境があるのだからベランダで温度・湿度・気圧を24時間測定してこれをサーバにアップしてやろう、と考えた。プロトコルはHTTPしか考えていなかったので、最初はRasPiから室内のWi-Fi親機経由にしようかと思った。が、これだとRasPiの消費電力が高すぎて24時間連続運転できない(注1)とわかり☓。

次はArduino(Miniあたり)からBluetoothで室内のRasPiに送信し、そこからサーバへというのを検討。しかし技適の取れたBluetoothモジュールは高いし、またそれだけのためにRasPiを常時起動しておくのは如何にも勿体無いしで、ウ~ンとなっていた。

そんな折、Arduinoから使えるWi-FiモジュールとしてWROOM02というやつの存在を知った。しかもなんとそれ自体単独でArduinoとして動作するというではないか! AVRではないのでスリープとかINTとかがどうなのか心配だが、それはもう試してみるしかあるまい! と早速予約注文、2週間後に届いたのがこれ。忙しさにカマけていて放置状態だったこれを昨日、遂に動かしてみた。

ヘッダピンを付け0と2と15とEN、そしてVccとGNDを先達の教えに従って接続(注2)、手持ちのFTDIアダプタでクロス接続して電源ON。すると「ぐちゃぐちゃぐちゃ … ready」が見えたので「よっしゃー!」とばかりにAT→豆腐。ん?  AT→豆腐。んん?  AT→豆腐 … 「OK」が来ない!

その後も、いくらボーレートを変えても通信パラメータを変えてもリセットしても電源抜いても文字化け続き。果たして俺が何か初歩的なところで間違っているのか、それともモジュールかボードがおかしいのか、調べる気力体力は既に残っていなかった。「動いた」とは、とても言えませんなこれは。

という訳で、初日はここまで。何か進展があったら続き書く。

追記:  一夜明け、何かヒントがないかと探していたら既に同じセンサで同じ事を考え、既に成功させている方々が大勢(涙)。

更なる追記:  実は短気なワタシ、その続きをやる前にこっちを注文しちまいました。それが届いたのでソク足をつけ、試してみたら一発で動くじゃありませんか。むろんWi-Fi接続もできたし、スケッチの書き込みも○。ま、ひとまずこれでブームのケツには追いつけたかなと。

また追記: スイッチサイエンスのがすぱっと動いた一方、マイクロテクニカの方はどーやっても動いてくれない。実はコレ、買ってすぐに取説見てEN/2/15をハンダでショートした。たぶんこのせいなんじゃないかと。悔しいが、しばらく放置する。

注1: テストはB+で行ったが、数時間しかもたない。A+なら多少はマシなんだろうが、どうせ24時間はムリ。

注2: このボード、チップの足がその並び通りピンに出ていない。ENがどこにあるのか、最初わからなかった。いったい何を考えとんだか。

‘BeatRing’ comming soon …

ぐちゃぐちゃ iPad Air (3.3mm, f/2.4, 1/24 sec, ISO160)

SparkFunの「Sound Detector(以下SDと略)」と出会ったこの日から、密かに作ってきたのがこれ。いったい何かというと「入力がマイクで出力がリングLED」なVUメータ+スペアナもどきで「LEDの点灯数がレベル、表示色がスペクトラム」という、ただそれだけのもの。AdafruitのPro Trinket(5V)とNeoPixelリング12連(以下NPと略)、そしてスペクトルの取得にはサンハヤトのMM-3830をMCP3208経由で使っている。

予定ではとっくの昔に完成し、ケースに収まって持ち歩きできるようになっている筈だった。それが未だバラック状態なのは、試作を終えてUNOをTrinketに、電源をLiPoに、そして更には充電できるようにとしたところから次々とハマったため。中でもいちばん手を焼いたのがSDで、実はSparkFunのサイトにこんな記述がある。Google翻訳によると

「サウンド検出器は、アナログ回路であり、そのように、それはほとんどのデジタル回路よりも、電源のノイズに敏感です。カプセルは、有効電力レールを横切って座っている分圧器であるので、カプセルの出力上に供給ライン上のノイズを転写します。チェーン内の次の回路は高利得アンプであるため、供給上の任意のノイズは、その後増幅されることになります。そのため、音検出器は、多くの回路よりも慎重な電源構成が必要な場合があります。」

とまあ、こんな調子でアナログ的な弱みがつらつら。そこでDC-DCをいいのに替えたり、あちこちにコンデンサやら抵抗やらを挟んでみたりしたが全然ダメ。その後原因がNP点灯時の電圧降下によるものと判明したところからは、またもや試行錯誤の連続。そしてどうにか安定動作するところまで辿り着いたのが、つい最近のこと。

まだこの先にはハコ入れという難関が控えてはいるが、今度こそ本当にゴールが見えてきたという感じでホッとしているところ。早くこれ持って外へ出たいもんだ。

7セグは絶滅危惧種か!?

これまで回路の電流を測るのにこれを使ってきたが、配線が面倒で毎回思い出すのに苦労していた。どうせハイサイドでしか使わないんだし、もちっと楽なのはないかと思って探していたら、なんとこれまたAdafruitにあった。INA219だそうで、早速購入した。むろん問題なく動いたし、Adafruitの製品らしく小奇麗にまとまっていて◎。

そこで次はバッテリー駆動の際のそれを測るべく、値を手持ちのLCDに出してみた。かー、もっさりしていて見づらい! これではアカンと、隠遁状態だった同じくAdafruitのI2C7セグに交換。1秒おきにVとAを交互に出すようにしてみた。うーん、視認性の良さは比較にならないし、何よりこのキビキビ感が気持ちいい!  やはりこういうのは7セグに限るな、と再認識。

2015-10-16 16.03.47 iPad Air (3.3mm, f/2.4, 1/24 sec, ISO64)

だがAdafruitのこれ、I2Cで楽なのはいいがデカくて少々お高い。もっとコンパクトで安いのはないかと探したが、ない。んじゃー自作といきますか! と思い立ち、現物見ながら考えようとアキバへ。

ところがビックリ、小型の4桁7セグなんてどこにもない。昔はどこにでもあったもんだが、今や「売れないから置かない」んだそうで。言われてみりゃあ確かに最近、7セグって滅多に見ない。仕方ないので、帰ってからネットでポチることにした。少々テンション↓だが、続きはそれから。

2015-10-16 21.39.26 iPad Air (3.3mm, f/2.4, 1/15 sec, ISO400)

追記: ひと足先にMAX7219が届いたので、手持ちのこれとの組み合わせで動かしてみた。ライブラリはこれ。今回のTrinketは5V。ISETとVccとの間に抵抗(ここでは10KΩ)を入れないとウンともスンとも言わないので注意(これで1時間近くを無駄にした)。次はこれをどうやって3.3Vで動かしてやろうか、いま思案中。