2010年4月13日火曜日

IEでセッションが使えない

ドメインが原因でし (アンダーバーは使っちゃだめ!)

[PHP-users 29064] Re: セッションが使えないので教えてください。

ローカルの開発環境で特にバーチャルドメイン使ってる場合だと、こういう現象が起きそうですね。というか起きました。SafariやFirefoxは大丈夫だったので、クライアントの問題だろうとセキュリティの設定を見たけど分からず、ググったら出てきました。確かに、昔使ってた開発環境ではアンダーバーは使わずにハイフンを使ってたなー。

2010年4月8日木曜日

Smarty3はget_template_vars()じゃなくてtpl_vars[key]->value

Smarty3のドキュメントはどこだ!

今日、ある部分の自動化を行っていて、SmartyとControllerとのフレームワークの連携のところのバグをなおしていたんですが、そのバグの原因がtpl_varsが返すのが配列じゃなくてオブジェクトだったということ!Smarty3からはオブジェクト指向を全面に出してるとはどこかで目にしたけど。まさかそこまでオブジェクトにするとは!という感じで、形見の狭い思いでせっせとバグ潰ししてました。get_class_methodsとかってオブジェクト渡したらget_classして自動でクラス名取得して対応しろよ!とか思いませんか?ぶつぶつ...

というか、Smarty3のドキュメントってどこにあるんだろう。正式なものでなくてもいいので、分かりやすいところに置いておいてほしいなー。今日初めてSmarty3の中身のコードを読みました。3秒くらい。こいつか!ってすぐ分かったので、綺麗なコードだと思います。でもドキュメントはほしい。Smarty2との互換性がない部分が多い。

Yzwを作ってるうちに...間違いがいろいろと...

Viewとの連携のところで、View側にすぐさま丸投げすればいいところを、フレームワーク側で一時的に面倒を見てる部分があるんですが、それは間違いだということに気がつきました。さっさとviewに渡してしまって、あとはお前で管理しろよ!ってところはそうした方がいい。他との連携の兼ね合いでフレームワークが仲介をするなら別だけど。こういう仕様の修正をしだせばやっぱり夏頃までは公開できないか...

ちなみに今日はDispatcher兼Router役の20〜30行ほどのクラスに、CakePHPのnamed parameterみたいな(URL中の/page:1/とか)のを取り入れました。あとはpaginatorもどきを作れば、一覧の並べ替えとかはDRYにできるなーとニンマリ企んでいます。

とりあえず、明日、というか今日を乗り切れば、テストフレームワークとの連携も真剣に考えないと。フレームワークにバグがあるだろうから、他の変更の副作用が予想外のところに出た時のために、テストを自動化しとかないと...

2010年4月6日火曜日

ワーカホリック

最近残業多いな

ワーカホリックかもしれない。これは褒め言葉じゃなくて、一種の病気というか麻痺状態。打ち込める趣味や、人との交友関係が薄い人がなりやすいんだけど、今の自分は案外そうかもしれない。あまり勤勉じゃないけど

たぶんワーカホリックといっても、二種類に分けられる気がするし、そのどちらも当てはまる場合があると思う。1つは、惰性で残業するタイプで、残業する俺エライと思ってそこで自尊心を守ろうとするタイプ。こういうのはスケジュール引きが下手。あ、僕の事ですw 2つめは我武者らタイプ。とにかく走り抜けろ的な感じで、自分の健康も顧みずガンガンやり、ある日プッツリ逝っちゃうか、入院するまでやる人。僕はこのタイプではないですw

でもワーカホリックってよくないですね。時間をかければ仕事をこなせるのは当たり前で、残業すれば体力と気力が持てば仕事も進むけど、そういうやり方してると日中に集中できてなかったり、合理化をしようとしない。

でもでもでもでも、僕みたいなタイプのワーカホリックの一番いけないところは、周りまで残業させる雰囲気を作り出してしまうこと。これはさっさと仕事を終わらせて帰りたいと思ってる人のやる気を削ぐし、残業してる人同士の不気味な連帯感を生む。昨日何時まで残業したって話を自慢しだせば末期に近い。期日前で優先度が非常に高いタスクのために残業するのは当然のことだけど、優先度順も付けずにとにかく期日優先でやる場合、エアコンとか電気代が嵩む上に、深夜手当まで付けないといけないから、僕が経営者だったら「帰れ!」と言うと思う。日頃は定められた時間内に仕事を終わらせるよう努めるべきで、多少の余力を余しておき、いざという時に残業してタスクをこなすというのがいいんだと思う。それにこの業界は日々の業務をこなしながら何でも習得できるほど浅くはないから、時間を作って独学で勉強していかないといけないし。なんとかせねば。

せっかく良さげな人が入ってきたのに、給料低いは残業多い(というか帰りにくい)はで辞められちゃったんじゃあ、こちらもダメージがでかいし、んじゃ僕も辞めちゃおうってなっちゃうだろうから、改善しないとね。

自分のスキルが全然だめだから仕方ないという原罪意識が残業を助長してるのもあるなー。でもそれだったら、家で勉強すればいい話だ。感情に流されないようにしなきゃ。

最近のYzw事情

コードを綺麗に整形するのと、テストコードを書くのをすれば公開してもいいレベルだとは思うのですが。0.2くらいのバージョンでw まだまだ作り込もうと思えば作り込めますね。最近はYzwのユーザスクリプト側を充実させることが多いので、あまりコアの方を手入れしてませんでしたが、URLに日本語を使えるようにしたり対応やビューとの連携の強化をしてました。RailsやCakePHPからも拝借してる部分があって、SinatraとCakePHPが混ざった感じになってます。既にある案件で使っているので、そろそろサイトを準備してドキュメント化を進めねば。

Yzw自体はすごくシンプルで一見使い道もなさそうなんだけど、 FooController < AppController < Yzwと継承をさせると、結構面白い事ができます。Yzwをシンプルに保つためにAppControllerにいろいろ書いたりしてるんですが、他のプロジェクトでも同じようなことをしないといけないのは無駄なので、ライブラリ化するかYzwに直接手を加えればいいと思ってはいるんですが。Yzwの拡張方法を便利で簡単にする方法も時間を作って探っていこうと思います。

最近、MVCのことをもう一回ちゃんと勉強し直そうと頑張っています。Yzwを作りながら、目的と役割をきちんと捉え、コードでそれを表現していくことに勤しんでいます。時間に追われてるとなかなかまともにやれないけど、コードが綺麗にかけた時はほんと嬉しい。あとはテストコード...w テストコードを書く事で、それぞれの仕事を細分化&単純化しメンテナンス性を上げ、ソフトウェアの信頼性を上げねば!

でも今一番やりたいのは、あの人のシルエットを切り抜いてYzwサイトで使う事!!(笑)