javascript: 2007年8月アーカイブ
盛り上がってるところ*1に水を差すようですが、
気になって仕事が手につきません。
さっき前の席の人に「なんでニヤニヤ*2してるんですか?」って聞かれました。
そろそろお昼なのに、食事も喉を通らないかもしれないので、
書いてしまいます。
はてダで Javascript を実行するという件について。
先日、自分のはてなダイアリーにブログパーツを設置できるようになったので、事実上の JavaScript 解禁になりました。
ということで、JavaScript の eval を貼り付けるガジェットを Google Gadgets で作ってみました。
てっく煮ブログ - はてなダイアリーで JavaScript eval
やりたくなる気持ちはわかります。
僕も id:amachang さん(面識も本題に関係もないのに名前出してすいません)とかのスクリプトとか、その場で実行したいです。
でも、外部から来た変数に eval したらいかんと思うのですよ。
↓例えばこんなことできちゃう
いきなりこんな画面でボタン押す方がおかしいですが、
このガジェットを使用することで
「任意の人が自分の手を汚さずに(リンクを張るだけで)任意のコードを
実行させることができる」
んじゃないかと思います。
自動実行とかもやろうと思えばきっとできちゃうわけですからね。
代案があまり思いつかないですが、
- 任意の人が
- リンクを張るだけで
の部分を何とか出来そうな気がします。
トークンとセットじゃないと eval しないとか。
個人的には、外部から来た変数への eval は御法度だと思ってるんですが、
実際のところはどうなんでしょうね。
*1:はてブ http://b.hatena.ne.jp/entry/http%3A//d.hatena.ne.jp/nitoyon/20070820/javascript_eval_on_hatena_diary
*2:ニヤニヤしてたのは、やらしいことを考えていたからです
CakePHP をいきなり実践投入して2ヶ月程たった。
最近は Web アプリ作る時に当たり前のように Ajax 使うし、
それを当たり前のように要求される。
(要求されるのはほとんどがアニメーションとかの部分であって、特に ajax ではないけど。)
で、それを当たり前のようにこなすに当たり、CakePHP は便利なんだけど、
何が便利かっていうと、 決して php から Ajax コードを記述する、
Ajax helper があるからではない。
せっかくだから Ajax helper を何度か使おうとしたけど、
結局全く使わなかった。(使えなかった)
php から javascript を記述しようとすると、痒いところが多すぎる。
じゃあ CakePHP は何が便利かっていうと、
controller 内 の action で、
$this->layout = '';
こうするだけで、簡単に layout なしの HTML パーツを生成できるから便利。
それを javascritp で受け取って表示するコードなんて、すぐ書ける。
- HTML の生成は PHP が行う
- javascript はそれを受け取って表示する
- それ以外のアニメーションを含む HTML の加工は javascript が行う
それって当たり前のことなんだけど、改めてそう決めておけばメンテナンス性が落ちることもない。ハズ。
下手に Ajax helperを使ってしまうと、
どうしてもある部分では PHPで、ある部分は javascript に書かれてて、
しかもその境界があいまいになっちゃったりする。
関係ないけど javascript HTML テンプレートとか使い出したらいよいよ危ない。
html helper もいろいろあるけど、
html タグを書きたくない病の人向けすぎる。 form 関連だけで十分。
div タグとか img タグとか、そんなもん手で書けばよいと思う。
最近のデザイナーさんは smarty 混じりの html くらいなら普通に手を入れてくれるし。
僕のまわりのデザイナーさんが優秀なだけかもしれんけど。
それが smarty じゃなくて php コードだったらまた話は違ってくると思う。
確かめたわけじゃないけど。
なんでかっていうと、 「<?」これとか「?>」これとかが ぱっと見で html タグと区別しづらいから。
僕自身、PHP 混じり HTML 文見るとイラっとするし。
だから、PHP プログラマはできるだけ HTML 書きたくない病にかかったりするんだと思ってる。