さとやn Blog

試合はRuby,勝負はC#!

2009年06月

Chrome iframe

仕事の方ですが、やっとChromeがインストールできるようになったので(それまではどうやってもProxy認証で止まってた、、、)早速インストール&JavaScriptの実行速度の恩恵を一番受けるであろう作業「Selenium」(知らない人は調べてください。その価値はあります ※開発者限定)を実行! 素晴らしく早い、、。
FireFox3.5(RC)より断然速い、、、。
Safariよりも体感で1割強速い、、。
しかし問題が、、、、。
Seleniumは内部でフレームを使用していているのですが、Chromeはどうもフレーム内で表示されているページのwindow.onbeforeunloadイベントをサポートしていないようです。ググったけど同じような現象で困ってる外人さんが何人かいましたし、、、。半日かけてなんとかしようと思ったけど、駄目でした、、、。残念、、、。FF,IEはOKなのに、、、。


やっとわかったマイケルジャクソンの曲名 「ベンのテーマ」

先日亡くなってしまったマイケルジャクソンですが、基本的にバンドサウンド以外興味がないため聴くことはなかったのですが、2,3年前に車でFMを聴いていたらある曲が流れてきて「あ、これなんかすげー良い曲じゃん! だれ?」と思ったら「マイケルジャクソンでxxxxxでした」とアナウンス。自宅に戻った時には曲名をすっかり忘れてしまい、時々思い出してはあの曲なんて言うんだろう? と思いながら数年過ぎてしまいました。ここ最近の特集でやっと曲名が判明したので早速iTunesで購入! これはほんとに良い曲でした、、、。ていうか唄ってんの声変わりする前のマイケルジャクソンなの?? 確かに凄い人だったのですね、、、。

ピンクの携帯

携帯のディスプレイの調子が悪く、そろそろ買い換え時かなと思い、量販店に行って買おうと思ったらまだ分割支払いが4ヶ月分残っているとのこと。今買い換えると12000円近く余計に払わなくてはならないと言うことで、修理出しました。安心プランに加入しているとかで無料で行けそう、ということです。で借りてきた代替機がこちら、、、。おサイフケータイ対応の在庫はピンクと紫色でどー見ても男性向けとは言い難く、紫よりはピンクの方が良いだろうってことで一昨日からピンクの携帯を使ってます。コンビニでスイカで支払う時結構恥ずかしい、、、、。



iPhoneへの道のりは遠い、、、、
Facebookの方では思わせぶりなこと書いて期待させてしまったようです、、、。済みません、、、(^^;)
だってとっくにもう本体料金支払い終わってると思ってた、、、、

新宿 さがみ

今日は新宿は小田急ビル13階にある和風料理店「さがみ」で飲んできました。
値段は高めですが料理はさすがにおいしいです。
お店はこちら
中々自分からは行けません、、、
でも色々仕事の話などもできて収穫がありました。
でも飲み過ぎてすでに頭が痛い、、、、。


JavaScript

良くいるというか、今まで3人くらい見たのですが、
parseInt("07") // => 7? 期待通り

parseInt("08") // => 0? なんで?
parseInt("09") // => 0? なんで?
文字列を数値に変換する際にparseIntを使ったりすると、よく日付や時間等0埋めされた文字列で08,09が期待した8,9に変換されず0になってしまって困る、というのがよくあるようです。
頭に0がついている数字は8進数表現と解釈されてしまうので、当然7の次は桁があがって10になってしまうため、8,9という数字自体がないからなのですが。

で、どうすればいいのかというと、いくつか方法はありますが、一番簡単なのが 1で割る 方法です。
var s = "09";
var i = s / 1;
alert(i); // 9 が表示されるはず
alert(typeof i);? //Number と表示されるはず。
これはよく使われる手です。何故そうなるかはJavaScriptの仕様なのでどこかで確認してください。

これとは別にevalを使うという手もありますが、eval の場合は対象文字列が数値表現でなかった場合に例外を投げてしまいます。
var i = eval("08");? //これはOK
var i = eval("hoge"); //エラー発生
割る1の方法なら
var i = "hoge" / 1;? // => NaN
となるので対処の仕様があります。
それに08,09は対応できても結局010はちゃんと8になってしまうので使えません、、、。

あとは正規表現使って頭の0を消してからparseIntする方法。。
これも面倒です。

ちなみにこれとは逆に数値を文字列に変換する際によく使われるのがから文字と連結する方法です。
var s = "" + 9;? // s = "9"
alert(typeof s);? //Stringと表示されるはず

カレンダーがらみのJavaScriptライブラリなどのソースを見てみるとよく書いてありますね。。。
なので決してバグではありませんので、ご注意ください。






jQuery







仕事でいろいろJavaScriptでのUI効果を取り入るべく、jQueryを導入したのですが、どうもjQueryに詳しいと思われているようです。
自分から使うのは実は初めてで、それまではWebデザインチームの若手デザイナが使っていて、うまくいかない時などに質問に答えるためにちょっと調べたりするくらいでした。
しかし今やjQueryはあの何でも自社製にしたがるMicrosoftが標準で採用するくらい勢いのあるフレームワークに成長しています。
2年以上前でしょうか、jQueryなるものを教えてくれた某有名サイトの若手デザイナさんには感謝しています。あのときに一緒にやってなければまだ「jQueryか〜、名前は知っているけど、、、」てな感じだったでしょう。
やっぱ時代はjQueryでしょうか、、、、。やっと私も好きになりました。


ドキュメントの大切さ: Ajaxとはいえ非同期とは限りません

仕事での話ですが、なにやらあるページを抜ける際に必ず不可思議なポップアップウィンドウが表示されて自動的に消える、という実装がありました。
気にはなってはいたのですが、あまり興味もなかったので放置していました。

ところがそれのせいで納品先にはブラウザのポップアップを許可するように設定してください、と言ってまわっているとのこと。

先日、たまたまその部分の実装を目にする機会があったので、というか暇だったのでソースを眺めていたら見つけてしまったのですが、別にフツーにXmlHttpRequestで投げればいいじゃん、という内容のものでした。

やりたいこととしては、そのページを抜ける際にサーバーにとある処理をさせたい、というだけのもので、window.beforeunloadイベントをフックして、その中でwindow.openでURLにサーバー側にさせたい処理のアクションを指定して実行していました。

なぜPrototypeが標準で使える環境でそんなことをしているのかと不思議になってしまい、「ウィンドウ出さないようにしましょうか?」と言ってみると「え、だってできないんじゃないですか?」との返答。

どうもソースを見てみると、Ajaxでやろうとした形跡がコメントアウトで残っていました。で、納得。非同期で実行してるからうまくいかずにわざわざ別ウィンドウ開いてたのか、、、。

PrototypeのAjaxオプションには、asynchronousというオプションがあり、これに false を指定すれば非非同期(ようは同期)で動くのでXmlHttpRequestの処理が終わるまで制御は戻らずに、ちゃんと処理が終わってからイベントを抜けるようにできます。
デフォルトはtrueで非同期なんですけど(Ajaxっていうくらいですから、、、)。
これを長いこと放っておいたのか、、、。

というわけで、以下のように書けば、同期で動いてくれます。

new Ajax.Request(
? "http://リクエスト先URL",
? {
??? asynchronous: false
? });
alert("ちゃんとリクエストが処理されてからこのメッセージが表示されます");

簡単な話です。
ちなみにjQueryなら、
$.ajax({
? async: false,
? url: "http://リクエスト先URL"
});

ドキュメントは見ればちゃんと書いてあることです。ちゃんと見るようにしましょう!
非同期処理は実は結構面倒な側面が多いので、特に理由がなければ非同期オプションはfalseにした方が何かと書きやすいのです。
マルチスレッドのプログラミングが結構面倒なように、、、。?
jQueryのAjaxオプションのドキュメント
PrototypeのAjaxオプションのドキュメント

明日携帯を買いに行ってきます。

渋谷ではたらく社長の告白 (幻冬舎文庫)

友人に勧められて借りて読んでみました。 確かに実話だけに面白かったです。あくまでそーゆーことがあったんだ、、、ってな意味で、、、。経営者って色々大変なんですね、、、、。
タイトル渋谷ではたらく社長の告白 (幻冬舎文庫)
著者/監督/Artist藤田 晋
価格, 出版¥ 560 幻冬舎
評価★★★★

2009-06-21

【「BOOK」データベースより】
二一世紀を代表する会社を作りたい―。高校生のときに抱いた起業の夢は、サイバーエージェントの設立により実現した。しかし、社長になった彼を待っていたのは、厳しい現実だった。ITバブルの崩壊、買収の危機、社内外からの激しい突き上げ…。孤独と絶望、そして成功のすべてを赤裸々に告白したノンフィクション。夢を追う人必読の書。


アンチエイジング

最近なんかばんばん出しているみたいな新堂冬樹。この間サンジャポにも出てたけど、、、。
ちゃんと食べてちゃんと運動するのが一番のような気がします、、、、。

タイトルアンチエイジング
著者/監督/Artist新堂 冬樹
価格, 出版¥ 1,575 ポプラ社
評価★★★

2009-06-22

【「BOOK」データベースより】
アンチエイジング…その功罪を問う衝撃作。ふと鏡を見て、妻は思う。「夫が愛してくれなくなったのは、この皺?身体?」街で女を振り返り、夫は思う。「あと十歳若ければ、俺だって…」夫婦は、手段を選ばず「老い」に抗おうとした。幼子のことも省みずに…どうしても愛を取り戻したかった妻と、たった一度の過ちを犯した夫。隠し切れなくなった嘘がボロボロと互いを覆い尽くし、二人を結ぶ絆は完全に崩壊してゆく。アラフォー世代に贈る、ある哀切な夫婦の物語。


TextMate2

改めて http://blog.macromates.com/2009/working-on-it/? のレスポンスを眺めていると、皆さん作者の久しぶりのコメント(しかも長目のコメント)に興奮しているようですね。元々バージョンアップは無料の予定だったのに、「有料で全然構わない!」「有料にすべきだ」「もう待てません。金払います!」など、中には「アプリ自体に寄付ボタンをつけろ」というのもあるくらいです。
後は「俺がテスターになる、いや、テスターにならせてくれ!」みたいのとか、、、。いいユーザーばかりです、、、(^^;)

実際にレスにもありましたが、アップデートすると言っておきながら2年経っていても皆さんネガティブの反応がほとんどないのは、この作者が現行TextMateで素晴らしい仕事をしたからに他なりません。私も非常に同感です。実際私と同じくTextMateがマックを購入した理由だ、という方もレスしてましたね。まあ、Windows版クローンのeTextEditorというのもあるんですが、、、。やっぱ本家にはかないません。

そんなわけで皆さんのレスを読んでいたら私も「日本語テスターにさせてくれ」とか言ってみたくなりました、、、。ていうかこれの日本語化の手伝いさせてくれ、かな、、、。

久しぶりに深夜に作業中。。。。

追記:
訂正です。eTextEditorが本家にはかなわない、と書きましたが、一点だけ勝っている点があります。しかも非常に重要な点で、、、。日本語フォントをちゃんと扱えること!(インライン入力ができないのは同じですが、、)。ていうか2バイト文字ユーザーでTextmate2を待ちわびてる一番の理由って多分この点なんでしょうけど、、、、。半角表示にあまりにも慣れてしまったのか。。。。


livedoor プロフィール
QRコード
QRコード
  • ライブドアブログ