この日記は不定期に更新されます。なんにせよ、大したことは書かれないはずですが。
取扱上の注意
間違って検索サイトから来られた方へ(よくある検索 pattern)
アンテナ管理者の方へ
・ えぶりん I から回収してあった meter assy を移植した。
・ 本来 DE51V の NA 車に搭載されている meter は夜間の視認性が非常に悪い。目盛りの刻まれた panel は透過式ではないただの鉄板だし針も光らないので、panel の縁から漏れる光のみを頼りに針を読まなければならない。Shift indicator も単に丸い緑の lamp が 6 つ並んでいるだけで、position によって色や形が違うわけでもなければ、文字の形に光るわけでもないし、そもそも文字が照らされない。
・ 一方、turbo 車に搭載されている meter は、panel は透過型だし、針も光るし、shift indicator も文字の形に silk が抜かれていてわかりやすい。そして、何と言っても tacho meter が付いている。そこで、turbo 車用の meter を入手してえぶりん I に付けていたのだが、事故の衝撃で meter の取り付け台座が完膚なきまでに破壊されてしまったため、そのままではインパネに全く固定できない。
・ そんなわけで、このところ時間を見つけてはアルミ材で台座をつける加工をチマチマと行なっていたのだが、ついに昨夜終わったので、いよいよ取りつけることに。
・ まずステアリングカバーを外し、ボルトを 4 本抜き取ってステアリングコラムを落とす。
・ グローブボックスの中身を出して、取り外す。そこから手を突っ込んで、A/C SW ハーネスの connector を抜く。そして、インパネを固定しているネジを外し、brake flude filler 部のふたを外して手を突っ込んで panel を引っ張りつつ空調ダクトを外す。‥‥‥これがかなり固くて、ずいぶんてこずった。
・ A/C SW ハーネスは空調制御 SW box の背面に clamp されているのだが、これがまたすんなり外れてくれない。仕方がないので、center cluster をばらして audio とカーナビを手前に引き出して、作業。‥‥‥何とか外すことができた。
・ また brake flude filler 部から手を突っ込んで、車速 wire を meter assy から抜く。
・ 空調の制御 panel の照明が引っ掛かってインパネをあまり引っ張り出せなかったのだが、できた隙間から何とか固定ネジを外し、meter assy を引き出す。connector を 3 つ外して、分離完了。ついでに、rear wiper SW からハーネスを外し、rear wiper controller 用ハーネスを車両側ハーネスと SW との間に挟み込む。
・ NA 車では、メインハーネスの E07 connector(運転席右側の膝下にある白い connector)までは tacho 信号が来ているが、そこから meter までのインパネハーネスには線が入っていないので、meter assy を交換しただけでは tacho meter が動作しない(えぶりん I でもここに wire を追加してあった)。で、えぶりん I から回収してあった線と端子を使って G01 の pin 3 と G11 の pin 5 を接続。ここで一旦 tacho 付き meter に connector を接続して engine 始動。‥‥‥Tacho meter が動作した。よしよし。
・ ほぼ逆の手順で元に戻していく。インパネを固定する段階になって meter assy の固定ネジを間違えたことに気づいてまたインパネを外す羽目に (__;。ともあれ、元通りに組み上げて、再度 engine をかける。‥‥‥ちゃんと動いてるな。ここまでで作業開始から約 2H。‥‥‥こんなことばっかり手慣れてしまって、どーすんだろーな。
・ そんなこんなで、やっと落ち着いた。せっかくばらしたのだからと assy の透明 plastic cover も #2000 の耐水でさっと磨いて傷を均らしてからキズクリアープロで仕上げてあった*1ので、見た目もかなりすっきり。
・ でもまだ問題が。
どちらも近いうちにどーにかしたいところ。
*1: 本来キズクリアープロは車体の塗装面用で、透明樹脂の傷消し用には別の製品があるんだが、そっちはつくばに置いてきちゃったので‥‥‥。キズクリアープロの主剤はアクリル樹脂なのでアクリルとの相性はいいはずだが、材質によっては有機溶剤が悪影響を及ぼさないとも限らないので、不安な方は、透明アクリル専用の製品(カルナバワックスが配合されていて艶出し効果もある)を使うのをお奨めしておく。
・ モヤモヤしてた件。とりあえず、battery は「復活前でも 12V 程度電圧は出てた」とのことなので、sulfation はさほど深刻ではなかろう、という話に。というわけで、CHARGE lamp については当面気にしないことにした (^^;。
・ 一方、空調制御 panel の照明がつかない件は実用上結構支障がある。てな訳で、打ち合わせのあと、その足で豊洲の超ビバホームへ。
・ 再び作業。グローブボックスを取り外し、A/C SW の connector を抜く。ステアリングコラムを落とす。メータークラスタを取り外す。‥‥‥Cable が抜けてたりはしなさそう。
・ Cable を根本のほうへ手繰ると、空調制御 panel の背面から右方へ走り、rear wiper SW の下部で 2P connector を介してメインハーネスに収容されていた。そこでステアリングコラム方へ cable を抜き出し、ILL On 時に赤線に電圧が来てるかどうか見てみた。‥‥‥来てるなー。GND 側も導通がある。電球の方もぱっと見てみたが、切れてるようには見えない。うーん。
・ どのみち予備があっても損はないので、現物を持って売り場へ。‥‥‥なんで 12V 用の T5 メータ球がないんだ。24V 用は 2 種類もあるのに‥‥‥ T_T。
・
超オートバックスに廻ろうかと思ったが、ステアリングをつけたり外したりがめんどくさい。うーん、うっすらとでもついてくれればだいぶ違うから、当面は 24V 用で凌ぐかなぁ‥‥‥と思ったところで、ふと気付いた。そういや、たまたま先日取り外した meter が車に積みっ放しですねっ。べ、別にこんなときのために積んどいたわけじゃないんだからねっ。勘違いしないでよねっ。
・ 旧 meter から電球を取り出して socket に挿してみると‥‥‥おお、ついたついた。というわけで、たまたま球が切れてたようです。うむー。
・ 逆手順で組み付け。実質的な作業時間は 1H 弱。一時期は meter の付け外しに 40 分くらいしかかかっていなかったので、だいぶ手際が悪くなってるな。‥‥‥慣れてたからってあまり幸せにはなれないけど‥‥‥。
・ まだ間に合うので、超オートバックスへ。‥‥‥辛うじてありました。2 個入り package を 1 つ購入。
・ さて、電球である以上はまたいつか切れるわけだし、そのたびに meter cluster を脱着するのはかったるいな。どのみち(とりあえず付けた電球のせいと思うが)ちょっと薄暗いし、こっちも LED 化するか。白色 LED と CRD と小信号用 diode の在庫はあるが、T5 ウェッジベースの在庫がないな。拡散 cap もないかも。買ってくるか‥‥‥。
・ 狙った訳じゃないんだが、超ビバホームを出る頃には雨はほぼ止んでいた。帰り着くころには完全に上がっている。キコキコと帰宅。‥‥‥あ、車に傘忘れた‥‥‥。
・ 帰宅後、打ち合わせた件の準備作業。
・ 「CakePHP を使ってほしい」とのことなので ports から install したんだが、すんなり動かなかった。Default の welcome page が正しく表示されるようになるには、以下の作業が必要(すでにやってあったことを含めてメモメモ)。
mbstring は welcome page の表示にはとりあえず不要かもしれないが、どのみち必要になるようなので、いっしょに入れておいた方が幸せになれる。lang/php5-extensions を使えば両者をまとめて install できる(ほかの module も山ほど入るが‥‥‥)。
・ なんか降りそうだなー、と思いつつ外出。車に乗ったら、案の定降り始めた。
・ まずはアキバへ。秋月電子通商で 5φ と 3φ の拡散 cap(白色)を購入。次に千石電商へ。T5 のウェッジベースを買おうと思ったら、T5 の LED 球が 2 種類販売されていたので、そちらも購入。
・ その足で武蔵小杉へ。2 月までやってた仕事の打ち上げで、先方の方々といっしょに春日寿司。ずいぶんご無沙汰してしまっていたのだが、今回もたらふく。大変美味しゅうございました :-D==。
・ 帰ってから、買ってきた LED 球の test。普通の 5mm LED を使った 2 本入り 150 円のものと、SMD LED を使った 4 本入り 450 円のもの。
・ まずは 5mm LED のほう。照射角 30°のものらしい。Meter の indicator ならともかく、空調制御 panel 用には向かない。拡散 cap をかぶせてみたが、ちょっと光量が落ちすぎる。
・ 次に SMD LED のほう。‥‥‥光量もあるし、照射角も結構広い。これは良さげ。試しに取り付けてみるかな。
・ なんか情報を漁っていたら、「default の welcome page に image が表示されてなかったり style sheet が適用されてなかったら、何かがおかしい」というような情報があった。‥‥‥備後じゃん。
・ Install path がおかしいのかと思ってごそごそいじっていたら、「image が表示されて style sheet も適用された error page」が表示されるようになった(爆)。調べてみると、これまた「install path がおかしい」時の症状らしい(基本 files 群を正しく読み込めていない)。あれー。
・ さらにいろいろいじってるうちに、/usr/local/www/cakephp/app/config/database.php 内の「driver」の指定を書き換え忘れていたことに気づいた(今回は PostgreSQL を使用する)。ここを書き換えたら、無事にそれっぽい welcome page が表示された。うーん、「driver の指定が正しくない」っていう error を表示してくれれば、判りやすいのになぁ。
・ で、「database に接続できてないよん」と言われているので(PostgreSQL はまだ単に install しただけなので、然も有りなん)、とりあえず期待されている DB を作成してみることにした。PostgreSQL 自体もう大分忘れてしまっているので、メモ。
これで warning も消えて文字通り「all green」。やれやれ。
・ それはそうと、ports から CakePHP を install すると、install された /usr/local/etc/apache22/Includes/cakephp.conf によって DocumentRoot も上書きされるんだね。これはいいやら悪いやら。一方、port の install 時に「Install for production server (make confighelp)」を check しておかないと、.htaccess が install されない。なんだかなー。
・ とりあえず welcome page が表示されるようになったので tutorial の blog を参考に file を作っていったんだが‥‥‥「そんな file はしらん」と言われてしまう。ううむ。
・ httpd.conf の DocumentRoot の設定をいじくってみたり CakePHP の「Install for production server (make confighelp)」を入れたり切ったりしながらなんどか install しなおしてみたりしてもうまくいかない。これは困ったな。
・ ‥‥‥とかやってるうちに、apache の再起動時の sanity check で warning が出てるのが気になってきた。で、それをよく見てみると‥‥‥ports で CakePHP を install したとき /usr/local/etc/apache22/Includes/ に置かれる cakephp.conf が、<Location> section の中で AllowOverride directive を使ってるのが原因だ、ということに気が付いた。「AllowOverride を All にしろ」というのは CakePHP の install において重要な注意点とされているものだ。「AllowOverride directive が <Location> section の中では無視される」ということであれば、ここでは <Location> ではなく <Directory> を使うべきなんじゃないの?
・ というわけで、/usr/local/etc/apache22/Includes/cakephp.conf の <Location> を <Directory> に書き換えてみた。‥‥‥をを、動いた、動いた。なんだろなー。これは port の方で当然 care すべきことなんじゃないかと思うんだけど、ほかの人は嵌ってないのかな?
・
ちうわけで、何となく動き始めた。つるかめつるかめ。
・ そろそろ残件を片付けてすっきりしたいので、車いじり。
・ まずは空調制御 panel の電球交換。SMD LED 使用の球に入れ換えた。グローブボックスを外して、ステアリングコラムを落として、mater cluster を外して電球を交換し、逆手順で組み上げる。所要時間は全部で 30 分程度。よしよし、だいぶん感が戻ってきた。(← ?)
・ ‥‥‥やっぱり、真ん中がかなり明るくなるな。まあ、全体的にぼんやりしてるよりはマシなので、これでよしとする。またそのうち mater cluster を外すことがあったら、LED の中心付近をちょっと汚してみるか。ほんとなら何らかの lens をつけるのが正しいんだけど、熱が心配なんだよなー。
・ それはそうと、以前に引っ張った床下配線はその後火も噴かず無事に推移 (^^;。そこで、ナビや keyless entry など増設した unit の +B と ACC を床下経由の直結配線に切り替え。さらに、助手席足下から右 head light 裏に HID 用の準備配線を通す。ついでなので HID Unit の動作確認をし、そのあとで+側を切っておく。
・ 当面の課題は片付いたので、しばらく開けっ放しだったトンネルカバーを装着。‥‥‥うーん、ぴったり嵌らないな。トンネルカバーは床に近くなるほど空間的に余裕がないので、そこに配線が落っこちてきてるのが主な原因だろう。配線や connector をできるだけ上のほうに持ち上げて何とか押し込んだけど、もっとちゃんと固定するようにしないとな。こんなときは足下の空間の少なさに難渋する。
・ しかし、純正アースポイントのうちの 1 個所のネジが完全に馬鹿になってるのがなんかヤだな。何でこんなことに。えぶりん I から回収してあったネジ類から同じ寸法のタッピングネジを入れてみようとしたが、なんとネジが負けてしまう。折りを見てタップ切ってみるか‥‥‥。
・ 先日から文書の編集 system を作っているのだが、CakePHP に弄ばれていたり。こういった tool は、tool 側で想定している使い方から一歩外れると非常に厄介。
・ やりたいのは、「入力された文章を解析し、必要であれば画像 file を upload させたい」ということ。任意の数の画像を扱いたいので、upload させる画面は文章の編集と別の画面にしたい。
・ 最初は変数で phase を持って処理を切り替えようと思ったんだが、controller と view の code が複雑になり過ぎたので、upload が必要だった場合は別の action に遷移するようにし、必要な情報は session で引き継ぐようにした‥‥‥んだが‥‥‥。
・ 1 点目。Action の遷移に redirect() を使うと session が引き継がれない。flash() を使えば正しく引き継がれる(ただし、app/config/core.php で Security.level を low に設定することが必要)。だが、flash() を使うと debug が 0 以外の時にいちいち click しないと次の画面に進まないのが鬱陶しい。これは redirect() や flash() の代わりに次の code を使うと良さげ(「/test/upload」に jump するとした場合)。
header('Refresh: 0; /test/upload'); $this->set('page_title', '画像のアップロード'); $this->set('pause', 0); $this->set('url', '/test/upload'); $this->set('message', 'しばらくお待ち下さい'); $this->render(false, 'flash');
・ 2 点目。一つの画面で同時に複数の file を upload させたい場合、
<input name="upload_file[]" type="file" />
のようにして「[]」で終わる name 属性を与えた <input> 要素を配置する必要がある(添字は空にする)。ところが、このような名前を持った <input> 要素を CakePHP の form helper ではどうも生成できないっぽい(結果として、最初の 1 つしか正しく upload されない)。仕方がないので、べた書きで <input> 要素を出力することにした。この結果は POST 後に $_FILES 配列に格納されるが、通常 CakePHP が期待する(と思われる)構造とは異なるので、$form->file() の結果と同様に扱うには変換が必要。たとえば、3 つの file を upload させたい場合、<input> 要素は
<input name="upload_file[]" type="file" /> <input name="upload_file[]" type="file" /> <input name="upload_file[]" type="file" />
のように書く。で、通常 CakePHP は
[upload_file] = array( [0] = array( [file] = array( [name] = [type] = [tmp_name] = [error] = [size] = ) ) [1] = array( [file] = array( [name] = [type] = [tmp_name] = [error] = [size] = ) ) [2] = array( [file] = array( [name] = [type] = [tmp_name] = [error] = [size] = ) ) )
という構造を期待するが、$_FILES には以下の形式で格納される。
$_FILES[upload_file] = array( [file] = array( [name] = array( [0] = [1] = [2] = ) [type] = array( [0] = [1] = [2] = ) [tmp_name] = array( [0] = [1] = [2] = ) [error] = array( [0] = [1] = [2] = ) [size] = array( [0] = [1] = [2] = ) ) )
・ 3 点目。File の upload form を <table> 要素で出力し、その右側に現在保存されている画像の preview を表示したい(画像の大きさはまちまち)。で、file には番号や説明などがついているため、一つの file の upload form は以下のように 5 行で構成されている。
画像 1 位置: 左 ALT: ほげほげ 説明: ほにゃらら ファイル: (ここに <input> が置かれる) (必要に応じてここに message が出力される)
また、個々の entry の下には空の行が 1 行出力される(合計 6 行)。この右側に空行を除く 5 行分の高さで画像を表示したいのだが、事前に高さがわからないので、<img src> で直接 height を指定することができない。こんなときは <table> の表示後に Javascript で height を書き換えるしかないのだが、そのやりかた。
まず、表示する画像をそのまま表示すると <table> の大きさに影響を与えてしまうので、<img src> の height には十分に小さな値(たとえば 1px)を指定しておく。また、name にはそれぞれ異なりかつ規則的な名前を与えておく(ここでは「image0」〜「image2」とする)。さらに、高さを取得するため、<table> 要素に id を指定する(ここでは「id="upload_form"」とする)。
Javascript を正しい位置に出力するには、Javascript helper を使用する。これには controller で以下の宣言が必要(ほかに必要な helper がない場合でも必ず array() で記述すること)。
var $helpers = array('Javascript');
実際の script を出力するには codeBlock() method を使用するが、複数回に分けて出力するとその都度 <script>〜</script> で囲まれてしまうので、一連の script は次のようにして一つの文字列に組み上げなければならない(表示する画像がない場合は $image[$filename] が空になっているので、そのときは高さの設定を skip するようになっている)。
$script = ' var table_height, image_height; function change_image_size() { table_height = document.getElementById("upload_form").offsetHeight; image_height = Math.floor(table_height / '.$num_entries.' * 5 / 6); '; for ($cnt = 0; $cnt < $num_entries; $cnt++) { if ($filename[$cnt] != '') { $script = $script.' document.image'.$cnt.'.style.height = image_height+"px"; '; } } $script = $script.' } window.onload = change_image_size; '; $javascript->codeBlock($script, array('inline' => false));
こうしておくと、<table> の描画(image の読込を含む)が完了した時点で table の高さを計算し、画像の大きさが再設定される。ちなみに、onload ではなく onresize event を用いている例もあるようだが、そうすると無限 loop に陥ってしまうことがあるので要注意。
・ HID を復活させた。‥‥‥懐かしい明るさ‥‥‥ T_T。
・ 取り付けた HID はえぶりん I で使っていたもの(KLARHEIT 製)。4300K のものを付けていたのだが、昨年夏に片側の burner と ballast がお亡くなりになったので、burner のみ新品を買い足し、ballast は予備(比較を兼ねて 6000K も同時に買っていたのだが、視認性に問題があったので burner は結局使わなかった)のものと交換していた。しかし、せっかく burner を新品に交換した 1 ヶ月後に事故で右目の burner を破壊されてしまったので、両側の ballast と左目の burner を回収し(右目は遮光板のみ再利用)、えぶりん II に移植したわけ。
・ で、やっぱり light の取り付け部の奥行きが足りない。えぶりん I でもそうだったのでこれはわかっていたことではある。えぶりん I では電球の真後ろ(困ったことにここには丁度グロメットがあったりする)をゴンゴン突いてへこませ、さらに light unit の取り付け部に座金を何枚か挟んで少し浮かせてたんだよね。なにせ、手元にある HID の burner は台座から尻までの奥行きが 43mm もあるからな‥‥‥。ちなみに、通常の電球を使った場合は約 35mm。
・ とりあえずは対向車に迷惑にならないよう固定して凌ぐ。だが、burner の尻がグロメットに当たっていて台座そのものは浮いてしまっているので、グロメットのゴムと light unit 内の反射板のヒンジの弾力によって何とか固定している状態。固定ネジを長いものに替えて座金を挟めばある程度改善できるが、明日「奥行き 40mm」だという HID set が届くことになっているので、それを着けて見よう。もっとも、そっちはそっちで遮光板の追加加工をしなければならないんだけど‥‥‥。現物を見ないと最終的にはわからないが、写真を見る限りではかなりの勢いで漏れそう。
・ 遮光板といえば、今回つけたものも遮光板を追加してある。窓が「凸」型なので「HI 時に路面が照らされない」という良くありがちな問題は発生しないのだが、標準の状態では LO 時に上方向にもだだ漏れだったので、それをせき止める遮光板を追加している。そのせいで LO 時の上方向へのグレアはかなり解消されてるんだけど、片側だけ隙間から若干漏れがあるのでちょっと不満。もし新しく届くほうの遮光板加工に時間がかかりそうなら、今付けてるやつの遮光板を作り直すか‥‥‥(薄い真鍮板を切り出して追加するだけなので、加工そのものには 1H もかからない)。
・ 某クションで落札してあった HID が届いた。出品者は「オート ケーユー」。
・ 早速開封してみると‥‥‥ballast 小っさ! しかし、それはともかくとして、
Full kit で 5,680 円/set だし、こんなもんなのかなぁ。しかし、イグナイタはともかく、burner の台座の件は何か釈然としない。
メールはこちらへ...[五反田 秋彦 as (五) / a-gota @(at) agt .(dot) ne .(dot) jp]
この日記は、GNSを使用して作成されています。作製者の GORRY さんに感謝 m(__)m。