index

2010年 12月
 
      1 2 3 4 5
  6 7 8 9 10 11 12
  13 14 15 16 17 18 19
  20 21 22 23 24 25 26
  27 28 29 30 31    
2011年 1月
            1 2
  3 4 5 6 7 8 9
  10 11 12 13 14 15 16
  17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            
2011年 2月
 
    1 2 3 4 5 6
  7 8 9 10 11 12 13
  14 15 16 17 18 19 20
  21 22 23 24 25 26 27
  28            

アレ

ついったー   ▽20110131b #日記

子供の頃から,本ばっか読んで育ったもんで,目の前にある文章はぜんぶ読む癖がついてしまっていて.

Twitter なんて,自分には大して関係ない文章がものすごい勢いで流れてる場所なんで, 行ったらきっと目が離せなくなって他の事が出来なくなるに違いないだろうから,と, ずっと手を出さないようにしてたわけですよ.

でもここ数年は色々な情報がまず Twitter で流れるなんてことが多くて (これはこれで,いち私企業のサービスがまるで公共インフラみたいに扱われてるのが心配なのだが), まぁ読まないわけにもいかんので, フォローはしないでリストだけ作って read-only で読んでたりした.

そしたらだいぶ,不要な情報を読まずに捨てる…… つまり外出してから家に戻った時にタイムラインを全部読むみたいなことをせずに済ませられるようになってきたので, そろそろ普通にユーザとして使おうかなーと思いました.


それにしても元々から,あまり刺激のない生活を送ってるしそういうのが好きなんで, 特にツイートする内容もねーのですがね.

どっか行ったり何か食べたり仕事に詰まったりしたら何か呟くことにするw


あと,せっかくだから,こっちの日記に呟いた内容をまとめられたりしたらいいな.

3月に Symfony2 が正式版になるみたいだから, それ出たらこっちのサイトも練習がてら組み換えて, その辺の連携というかなんかそういうのも作ってみよっと.


ぎっくりしてました   ▽20110130b #日記

12月中旬くらいのある土曜日,外出するため着替えようとしたらギックリ腰にw

片足立ちで靴下を履こうとしたら落としちゃって, 片足立ちのまま拾おうとしたらその瞬間に腰の辺りで何かが破裂するようなショックが発生して, そのままくずおれてまるまる10日間くらい寝込みましたさ.

まず当日と翌日,さらにその次の日まで,まっったく身動きできず. ふとんに転がって,なんとか最初に俯せから仰向けにしたのはいいが, その位置で身体をずらすことすら出来ず,起き上がるなどもってのほかで.

家族・親戚にポカリとストローを買って来てもらって,かろうじて水分だけは補給しながら, 火曜日の昼に死ぬ気でなんとか立ち上がれるようになるまで食事抜きでした.

怖いねぇギックリ腰w


その後も……まずマトモに立ち上がって歩けるようになるのに10日間くらい, 短時間だけ椅子に座れるようになるのにさらに数日, 以前のように仕事が出来るようになったのが12月のほとんど暮れくらいで, やっと 1月下旬くらいになって,ほぼ日常生活で痛みがないくらいになりましたとさ.

昔やった時より遥かに重篤な症状だったので,これはもうレンジのマックスいってんだろー. と思ったら,Wikipedia によると 「3週間程度-3ヶ月以内に自然に治ることがほとんどである」ですって.

すると何かい,あたしの全治1ヶ月ちょいってのは,症状にしちゃ軽い方かい……

ないわーギックリ腰ないわーw


this version of PCRE is not compiled with PCRE_UTF8 support   ▽20100428a #プログラミング #PHP

自宅サーバの PHP のお話~.

自宅サーバは FreeBSD で,PHP は ports で入れてたんだけど, つい最近まで ports の lang/php5 は PHP5.2 系列だった.

で,メインの apache に PHP-5.2.x が入ってるのはいいんだけど, 仕事で PHP5.3 を使うことになったので, もうひとつ別のポートで apache を立てて, そっちに野良コンパイルの PHP5.3 を入れて使ってた.

(この間幾星霜)

なんとなく MediaWiki をインストールしてみた. 5.3 の方に入れたら,「PHP-5.3.1 はバグあるので動きませぬ. 5.3.2 を使ってネ!」というメッセージ.

で,ふと見たら lang/php5 は PHP5.3 になっていて, lang/php52 ってのが追加されてた.ワーオ.

せっかくなので,メインを lang/php5 の PHP-5.3.2 にして, 別ポートの方を 5.2 にしよう.そうしよう.ってことで入れ替えた.


で嬉々として MediaWiki のインスコ画面を見たら, なにやら warning が出ていました.

PHP Warning: preg_match(): Compilation failed: this version of PCRE is not compiled with PCRE_UTF8 support at ~~

PCRE が UTF8 対応じゃないので正規表現のコンパイルでエラー出てますよっと.ほへー.

PHP は 5.3 から PCRE エクステンションは常時組み込まれるようになっていて, 5.2 時代には php5-pcre って ports があったのだけど, 5.3 になってからその ports はなくなって (php52-pcre ってのはある), つまり PCRE って組み込みなんじゃねーの? デフォルトで UTF8 非対応のコンパイルなの? と思ったが,Makefile を見てみるとー.


.if defined(WITH_BUNDLED_PCRE)
CONFIGURE_ARGS+=--with-pcre-regex=yes
PLIST_SUB+=     PCRE=""
.else
LIB_DEPENDS+=   pcre.0:${PORTSDIR}/devel/pcre
CONFIGURE_ARGS+=--with-pcre-regex=${LOCALBASE}
PLIST_SUB+=     PCRE="@comment "
.endif


だそうで.つまり lang/php5 のコンパイル時に WITH_BUNDLED_PCRE を指定しないと, 内蔵 PCRE は使わず,textproc/pcre の ports のが使われるんじゃないカナ?

ports の PCRE が UTF8 非対応ってこともねーと思うのだけど, 訓練された PHPer はこういう時迷わずバンドルバージョンを使います. かつて gd とかで痛い目に.


というわけで,lang/php5 をもっちり再コンパイルして, MediaWiki も文句言わなくなりました.ヤッフー.

未来の自分への備忘録とはいえ, なんであたしの文章ってこう無駄に長いんだろうね?w

str_getcsv() と setlocale()   ▽20100409a #プログラミング #PHP

PHP には fgetcsv() とか str_getcsv() なんつー無精くさい関数があって, 名前を見た通りファイルや文字列を CSV として解釈して配列で返してくれるというもの.

「CSV」って特に定まった規格のあるフォーマットじゃないんで, しかも一番有名なのが一番変則的な Excel 出力 CSV なんで, マトモに読み書きしようとすると地味にけっこう大変だったりする.

んが,この getcsv() はなぜかよく出来ていて, Excel 形式の(データ中に " を含む場合は "" と書く,とかの)データもさくさく読めちゃったりするので, カジュアルに使うには楽出来て良かったりする.

(もちろん悪意ユーザからの攻撃データとかが想定される場面ではもっと注意して制限したフォーマットを使うべき).


んが,こういう文字列を解析する系の関数では必ず出て来る日本語エンコーディング問題.

自分の手元のサーバでは普通に読めたファイルが, 他の場所ではなぜか日本語を含む一部の項目だけ読み落とされた,なんて事象が起きた. しかも,他の場所で Web から動かした場合のみで, 同じ処理をコマンドラインから動かすと期待通りに動く.

しかも日本語が全てダメというのでもなく,読めてる項目と読めてない項目がある……

コマンドラインと Web で挙動が違うというと, 例えば違う設定ファイルを読んで動いてるかーとかなんだけど, 全部の日本語が文字化けってわけではなく一部は正常に読めてるので, エンコーディング設定とかってわけではなさそう.

これが単に文字化けしてるとかなら, PHP 設定の mbstring.internal_encoding とファイル自体のエンコーディングが合ってないとか, そういう原因だろうと推測できるのだけど……


というわけで軽く Web で調べると, 「fgetcsv() は日本語に対応していない」とかってのを見かける. いえそんなことはありません.うちの環境では読めてるし.

次に「日本語は "" で括らないとダメ」というのが. いえそんな(ry ……でも読めてる項目は "" で括られていて読めてない項目は括られていないってのが判明.

"" の有無で,内部で違う処理になってるんだろうか. たしかに,"" がなければ単に次の , を探せばいいだけだが, "" の場合は \" とかのエスケーピングを避けながら終端 " を探さないといけないので, 内部処理は違ってそうだ.


というわけでソースを読んでみると,確かに処理が違っている. php-5.3.2/ext/standard/file.c の 2150行目あたり. mblen() で日本語を意識しながらぽちぽちと文字を飛ばして行っている処理がありました.

で,この mblen() はどういうエンコーディングを扱ってるんだ? と思ったら, これが標準ライブラリをそのまま読んでるだけで( ext/standard/php_string.h ), 環境設定の mbstring.internal_encoding とかを意識してはいないみたい.

ってことで,そっち方面のエンコーディングを変更するために, setlocale() を使うってわけなのねー.


setlocale( LC_ALL, 'ja_JP.UTF-8' );


で,期待通りの動作になりました. Web と CLI で挙動が違うのは,環境変数 LANG によるものでした,ということで.


答えが判ってから探すと情報が見つかる罠. はっはっは.

それにしても mbstring 設定があるけどそっちは mbstring モジュール用で, 他の箇所では locale 設定をきちんとしとけ,とか, いかにも PHP らしいテキトーっぷりです.ははは.


CATV+スカパーe2 →CATV+スカパー光   ▽20100405a #日記

スカパーe2 からスカパー HD に置き換えるなんて計画を考えていたら,「スカパー光 ハイビジョン放映を 5月から」とかそういうw

誰だよあたしの脳内にロガー仕込んだの……

さて,スカパー光ってのがうちの B フレッツで使えるかどうかがわからんのでそこは要確認なのだが, もし可能なら,前回のスカパー HD で視聴と思っていたチャネルが全部スカパー光で HD 放映されることになる.

スカパー光の録画保存はスカパー HD と同様に DTCP-IP だそうなので, スカパー用のアンテナを設置しないで全てを実現出来る.わーお,ゆめのようー.

ちなみになぜフレッツやってるのに要確認かというと, うちのフレッツは「ベーシック」という特殊なタイプで (名前がベーシックなのに特殊とかおかしいと思う > NTT), この手の家庭向けサービスは何かとハブられたり 「一部地域」だったり「設置料がバカ高」だったりするのだ.


さて,そんなこんなで光がいいにゃーとか思ってたら, G+ HD は e2 で既に HD 放映という事実が判明.

わっふう! とばかりに e2 で G+ HD を契約 IN, ついでにフジテレビ ONE/TWO/NEXT を契約 OUT!

でも G+ HD で NASCAR 第5戦を録画したら SD だったw まぁそれでも CATV の SD よりキレイだったけどさw


さて,そんなこんなで仕事がようやく緩くなってきた昨今, ふと CATV の方からメールが来ているのを見ると, 4月1日から CATV で G+ HD 放映開始だとw

なんだか弄ばれているような気がする昨今. まぁ世の中が確実に HD に移行しつつあるということで.


その後,NASCAR 第6戦を録画したら,しっかり HD だった. アメリカのシリーズは独占契約でなかったりするとこういう事があるからなぁ. 放映チャネルすら別だったりするんだし,SD/HD 混在くらいなんともないぜ.おそろしす.


CATV+スカパーe2 →CATV+スカパーHD   ▽20100323a #日記

ふと気がつくと,契約している CATV であるところのYouTV で, フジテレビ ONE/TWO/NEXT が HD 放送になっていた.

あれ……? NEXT が HD 放映してるのでわざわざ契約したスカパー e2 の立場はどこへ……?

というので軽く検索してみると,スカパー HD の方では いつの間にかスカパー e2 よりも HD 番組が増えているんですなー. e2 の利点はもはや,BS/CS 両対応チューナで見れるっていう,それだけなのか……

で,現在 CATV で SD で見ている G+GAORA は spHD の方だと HD で見れるようだ. J SPORTS 系列も,ESPN 含めて全部 HD.ぬぬぬぬ.

じゃーもう CATV と e2 はヤメて spHD だけにすりゃいいじゃん? と思っても, spHD の方は同時に 1番組しか録画出来ないように見える. だいたい録画装置内蔵チューナがなくてそれ用に何かを用意しなきゃならんとか面倒だし, あまりこいつに依存したくない感……

ということで,主に見るチャネルと HD 対応状況を表にして考えてみよう. 色つきは今持ってる契約で見れるところ,赤が今録画に使っているチャネル.

チャネル名 CATV spe2 spHD
フジテレビ ONE HD SD HD
フジテレビ TWO HD SD HD
フジテレビ NEXT HD HD HD
G+ SD SD HD
GAORA SD SD HD
J SPORTS 1 SD SD HD
J SPORTS 2 SD SD HD
J SPORTS Plus SD HD HD
J SPORTS ESPN SD SD HD
ディスカバリー HD SD HD

これを,以下のような形態に変更していきたい.

チャネル名 CATV spe2 spHD
フジテレビ ONE HD SD HD
フジテレビ TWO HD SD HD
フジテレビ NEXT HD HD HD
G+ SD SD HD
GAORA SD SD HD
J SPORTS 1 SD SD HD
J SPORTS 2 SD SD HD
J SPORTS Plus SD HD HD
J SPORTS ESPN SD SD HD
ディスカバリー HD SD HD

依存したくないといいつつ依存度高けえ……w

さて,そうなると,録画環境をどうしたらいいかだが……

e2 がなくなるということは,地デジと BS を CATV でカバー出来てる以上, 今ある 3波対応 HDD レコーダが完全に不要になるということか. なんてこった.高かったのに.一度も BD 焼いてないし.

で,それをリプレースする形で,spHD チューナと, I/O DATA の HDD を設置して, spHD チューナの D 端子出力から PV4 へ接続して録画・編集っと.

けっこう手間と金がかかる上に,録画の利便性に関してはむしろ退化している. 多重録画出来ないし.ホントもう,困ったものですなぁ……

Future of PHP 6   ▽20100320a #プログラミング #PHP

Future of PHP6

  • PHP6 は Unicode ベースで作ってて内部は UTF-16 を使うことになっていた
  • でも実際実装してみると CPU 食うわメモリ食うわ互換性取りにくいわ
  • このアプローチはダメっぽいので PHP6 はなかったことにして考え直そう
  • しばらくは 5.3 が stable となりますよ
  • 作り直したやつが 5.4 なのか 6.0 なのか,はたまた 7.0 なのかは未定

(゚д゚)

個人的には,PHP6 で予定だった欲しい機能が 5.3 にほとんど載ってるんで, まぁ全然問題ねーですが.

この上さらに何かするなら,

  • 関数コールの ( ) を演算子にしてください.
  • 配列参照の [ ] を演算子にしてください.
  • 配列宣言の array( ) に何か syntax sugar 作ってください.
  • 前に提案されてた ifsetor( ) みたいのを(関数形式じゃなくて ?? : みたいな演算子形式で)実装してください.

ってとこですかね.



首都高、浜崎橋 JCT の分岐方法を変更   ▽20100314a #クルマ

首都高、都心環状線(外回り)浜崎橋JCTの分岐方法を変更

Yes!!

横浜方面のあたしには嬉しい変更.

本当は4車線を 2-2 で分岐できれば良かったんだろうけどねー.拡幅は無理だしなあの辺w

教条的な「環状線は 2,分岐は 1」みたいな理屈でずっと環状線側に 2車線振ってたけど, 環状線は分岐直後に左からすぐ合流があるんで実質 1車線だったから, この変更は理に適ってるといえよう.

CKEditor でオリジナルの画像ブラウザを作る的な   ▽20100313a #プログラミング #JavaScript

CKEditor

投稿フォームとかの類で wysiwyg な操作で HTML を入力できますよー,っていう, 似たようなのだと TinyMCE とか色々あって, こいつは FCKEditor というのが前身で,それの Ver.3 が CKEditor として開発されましたってことらしい.

ちなみに FCK とか CK って何ぞ. と思って調べたら作者の名前が Frederico Caldeira Knabben でした. なるほど把握.なんで F が取れたのかまでは追ってないので,そのうち調べてみよう.


で,これ自身はクライアント側で動く <textarea> タグの拡張品で, 最終的には普通のテキスト(HTML)が出来上がるものなんだけど, HTML といえば当然,画像も入れないといけません.

今でこそ HTML の中に画像を埋め込んだりとかも出来るけど, 基本的には画像は HTML とは異なるデータとしてサーバに置いてあって, そこへのポインタを HTML 内に書くもの.

ということは CKEditor もクライアント側だけでは話が完結せず, サーバ側と連携を取らないとどうにもならないわけだ.

で,この CKEditor はその画像関係のサーバ側とのやりとりが API 化されていて, それに従ってサーバ側に存在する画像の一覧から選択したりするプログラムを書けば, ローカルの快適な操作感を崩さずに画像の操作を行なえる.

そのサーバ側で動くコードが CKFinder という名で提供されていて, まぁ普通に考えれば「これとセットで使いましょう」なんだけど.


しかしこの CKFinder の方は,普通に仕事で作るサイトで使おうとすると, どうしても有料になってしまうのであります.

めっさ暴利でぼったくりってわけじゃないんだけど,ていうかむしろ大して高くないんだけど まぁ予算に組み込むとかの処理は地味に面倒なので,微妙に使いづらい.

というわけで,CKFinder ほどじゃないけど画像ブラウザを自作します.


なんか前置きが長いのはいつもの事だが内容が短いのもいつもの事で.

まずは公式ドキュメントを参照しつつ,サーバ画像ブラウザを.

  • textarea を CK 化させる時のオプションに,「filebrowserBrowseUrl」とかを書いてやると,画像ブラウザを呼び出す機能が有効化される.
  • filebrowserBrowseUrl の方は,その URL がパラメタ(後述)付きでコールされる.
  • filebrowserUploadUrl の方は,その URL にパラメタ(後述)を付けた URL に対して,「upload」というフィールド名でファイルが POST される.

ここまではいい.次こっちのページ.「パラメタ」について書いてある.

  • 複数のパラメタが付いてくるけどひとまず重要なのは「CKEditorFuncNum」.
  • サーバブラウザは任意の方法でユーザに画像を選択させたら,その画像を示す URL を CKEditor に返してやる必要がある.
  • CKEditor に URL を返す方法は:


window.opener.CKEDITOR.tools.callFunction( CKEditorFuncNum, URL );


この JavaScript 関数コールを,サーバブラウザ側のウィンドウで実行してやる. すると,呼び出し側の画像ダイアログに,その URL が入る.わーい.


そして次は画像アップロード処理.これが画像ブラウザと微妙に違う処理が必要でわかりにくい.stackoverflow.comのここも参照する.

  • 上述の通り,パラメタ付き URL にファイルが POST されてくる.
  • サーバ側コードは,ファイルを処理して,OK ならそのファイル(画像)の URL を,エラーならエラーメッセージを生成する.
  • サーバは下記の内容を持つ HTML をレスポンスすること.

その HTML とは:


 <html>
  <body>
   <script type="text/javascript">
    window.parent.CKEDITOR.tools.callFunction( 
      CKEditorFuncNum, 
      '(URL)', 
      '(message)' 
    );
   </script>
  </body>
 </html>


ってな感じ.

サーバ側の処理で,処理が成功した場合は (URL) に URL を,(message) は空に.

逆に処理が失敗した場合は (URL) を空に,(message) にエラーメッセージを.


と,まぁ,こんな感じだった.

自作サーバブラウザなら,デザインとか機能(多すぎて困る場合がほとんどだがw)も顧客に合わせて色々と出来ていい感じです.


さーまだ仕事あるぞー.がんばろー.

ごはん   ▽20100310b #食べ物

今日は南砂で簡単なサーバ作業. conf を書き換えて httpd をリブートするだけの簡単なお仕事です.

帰りに「とうかんや」で醤油ラーメン味玉チャーシュー大盛り.

まんぞく.

日々仕事漬けだと,ときどき食べる美味しい店の美味しいごはんが大変に美味しいです.

index