IE の次期バージョンのレンダリングエンジンについて
2009年03月32日に MS (MycloneSoft) は IE (InnermetExoplorer) の次期バージョンのレンダリングエンジンに関して声明を発表しました。
発表によると次期バージョンである InnermetExoplorer 360 には Trident ではなく Gecko を用いるとのこと。
また、JavaScript の実行エンジンも TraceMonkey になる可能性が高いそうだ。
この変更によって、以下のようなバグが発生する可能性がある。
- CSS のセレクタの前に "* html" を入れると認識されなくなる
- document.all が Syntax Error となる
- http://www.microsoft.com/ のレイアウトが崩れる
その他にも、某ブラウザに於けるレイアウトやスクリプト関係の 仕様 が無視されたり、動作しなくなるといった現象が起こる可能性があることを示唆しており、注意を喚起している。
なお、この情報は 2009年04月02日以降に予告無く変更・撤回される可能性がある。
最後に、id:moshimonry にはコレが限界です。
センス無くてゴメンナサイ。
GMail のボタンに関する考察
お久しぶりです。id:moshimonry です。
3 ヶ月ぶりくらいの日記ですが、ちゃんと生きてました。会社をクビになったわけでもありません。
ファンの方は心配されたかも知れませんが、id:moshimonry は今日も元気に会社に泊まってますw
さて、本題
最近、障害などもあって、モテモテな GMail が結構素敵なことになっています。
まだ Google Apps の方がテーマ対応してはいないものの、細かい所でデザインが洗練されています。
特に今回着目したのが「ボタン」です。
と言っても「立てば芍薬、座れば牡丹、歩く姿は百合の花」のボタンではありません。
………ごめんなさい。
「検索」とか「移動」とかのボタンです。
かなり、OS 標準のボタンっぽい感じになっており、視覚的に「あ、これはボタンだな」って分かりやすいように感じます。
しかも、背景がグラデーションしてるので、盛り上がった感じの表示です。
「画像でやってるのかなぁ?」と思ったら、流石は Google 先生。なんと div タグと CSS (とちょっとの JavaScript) で構築されています。(たぶん)
勝手に色々解読してみたので、以下に記したいと思います。
単数形⇔複数形の変換メソッドを作ってみた
長い 前置き
相変わらず合宿報告をしないまま別のエントリです。
弊社のデータベースに於けるテーブル名の命名規約として、「基本的に複数形で定義する」というルールが存在します。
まぁ、私が勝手に考えて勝手に始めたことなので仲間のみんなには半ば強引に納得して貰ってる感がありますが、気にしたら負けだと思っています。
んで、システム開発を行うに当たって、いわゆるフレームワークと呼ばれるモノを作って *1 おり、その中での根幹機能に完全自作の O/R マッパーがあります。
O/R マッパーってのは、ザックリと説明するなら「Object と Relational-database の Mapping を行うモノ」っていう代物です。
データベースの各テーブル・各行をオブジェクトと見なして、オブジェクト指向な言語でのプログラムに於いて SQL を意識せずにデータベース操作を行えるようにするわけですね。*2
んで、その O/R マッパーはテーブル単位でクラスを作ってるんですが、そのクラス名は「テーブル名を単数化してアンダースコアで分割して各単語の頭文字を大文字にする *3」という命名規約を遵守する形で定義されています。
ってことは、単数形⇔複数形の変換が必要になるわけです。
………。長い前置きですね。
ってことで本題。
< PHP 5.3.0 なシステム上で static なメソッド・メンバを参照する
前置き
合宿の報告を 1 ヶ月近くサボっているにも関わらず敢えて関係無いネタを投下してみる。
PHP 5.3.0 ではかなり色々な機能が追加されることは有名ですね。
無名関数とかクロージャとか…。 (うろ覚えw)
んで、その中でちょっとしたことなんだけど、個人的に結構大きい変更があります。
それは、static なメソッド・メンバを動的にコール出来るようになるってことです!
寧ろ、今まで出来なかったのが不思議でならない今日この頃ですが、まぁそれは置いておいて。
サンプルコードはこんな感じ。
<?php class Monry_Sample { public static $hoge = "fuga"; public static function getHoge() { return self::$hoge . "!!\n"; } } $class_name = "Monry_Sample"; echo $class_name::$hoge; // fuga echo $class_name::getHoge(); // fuga!!\n // 未検証・未調査だけど、以下のも行けるのかな? $variable_name = "hoge"; $method_name = "getHoge"; echo $class_name::$$variable_name; echo $class_name::$method_name();
このコードは PHP 5.2.x までは "Paamayim Nekudotayim" がどーとか*1 って怒られます。
じゃあ、PHP 5.2.x で動かすにはどうすれば良いのかを考えてみました。
*1:要するにダブルコロンの使い方がオカシイってこと
第八回 株式会社もしも開発合宿 二日目
さて、二日目です。
実はこのエントリを 28 日に書いてるのは内緒です。
べ、別にサボってたわけじゃないんだからね!
昨日のうちに環境設定を済ませてあったので、朝からガリガリ開発です。
二日目 午前
一応普段の業務開始時刻である 10:00 を目処に作業開始です。
とりあえず、各々が目標設定を行っているので、その目標に向かってひたすらコーディングなり勉強なりをします。
私は溜まってる開発案件をひたすらこなすことを目標としているので、お気に入りの音楽を MacBook Air で再生しながらノリノリで開発ですよ。
ま、特に取り立てて書くことも無い感じですね。
二日目 午後
合宿メンバーに「テンプレート *1 の構築について」を聞かれたので図解入りで説明。
あんまり詳しくは書けないんだけど、テンプレートをレイヤーに見立てて HTML タグの入れ子構造とのマッピングを説明してみた。
レイヤー重ねの説明の際に、こだわって図解したもんだから、周りから「キモい」だの「病的」だの言われましたが、めげません。強い子です。
あとは、HTML の div タグの考え方とか、フローティングの概念とかも説明しました。
要点を掻い摘むとこんな感じ。
- まずは、デザイナさんから上がってくるレイアウトを ヘッダ・コンテンツ・フッタ に分解します。
- 次に、コンテンツ部を直感でパーツ単位に分解します。
- んで、細分化されたパーツ分だけテンプレートファイルを作ります。
- そいで、それぞれを div タグとして枠線付けるなり背景色塗るなりで視覚化しつつフローティングさせて実際の文書構造を構築していきます。
- ほんで、実際に切り出した画像とかテキストとかを埋めつつピクセル単位のレイアウトを制御します。
- 最後に、各主要ブラウザにて表示チェックを行って完成です。
- チェックするブラウザは以下の通り。
- Internet Explorer 6
- Internet Explorer 7
- Firefox 3 (Win, Mac)
- Safari (Mac)
- 場合によっては Opera や Netscape や Win 版 Safari なんかも対象になったりします。
- チェックするブラウザは以下の通り。
まぁ、ウチは fixed layout *2 なので、ピクセル単位のレイアウトが必須になるわけですね。
実験的に liquid layout *3 とか elastic layout *4 とかも試してみたいですね。
実際、Am@zon とか R@kuten とかは liquid だし、リクエストセッション単位でレイアウトを切り替えて CVR の変化を測定してみたいかも。
んで、反省会
とは言え、みんなかなり集中して作業に取り掛かって疲れているので、26 時くらいでお開き。
くだらない話で盛り上がったとさ。
第八回 株式会社もしも開発合宿 一日目
株式会社もしもでは、不定期で開発合宿なるイベントが行われます。
どんなイベントかってーと、那須とか修善寺とかの観光地で客室とか研修室とかに籠もってひたすらお仕事をするという、なんとも 不健康 生産的 なイベントです。
私が入社してから既に四回目を数え、株式会社もしもとしては既に八回目を数えます。
会社設立が 2006 年なので四半期に一回やってる計算になります。
で、具体的にどんなことをやるのかと言えば、新機能をリリースする際に一気に集中して開発を進めたり、普段オフィスでは開発出来ないようなラボ的な機能を実装してみたり、はたまた新しく入社した人のスキルアップの勉強をしたり、といった具合に濃密な合宿なわけです。
会社のお金で遠隔地に行くわけで、何らかの成果を残さないと経営陣とか経理の人とかに怒られちゃうので、ある意味普段の業務よりも必死かもしれませんw
初日はネットワークの設定とかサーバの点火とか
ってことで、私ともう一名が車を出して渋谷から修善寺を目指して出発です。
途中、東名高速道路の海老名サービスエリアに立ち寄って、あとはひたすら雨の高速道路をかっ飛ばします。
んで、現地到着が 20 時ちょい前。
早速、研修室に赴きネットワークの設定です。
が、なんか繋がらない。
っつーか、外には出れてるっぽいんだけど、DNS の名前解決が出来てない。
スタッフの人に連絡して、大本のルータをいじいじしてもらって、どうにか解決。
んで、会社から持ってきた開発用のラックマウントサーバを起動。すげぇ爆音だけど、起動した。
途中なんどかホテルスタッフの人がルータの調整をやってたのか不安定になることはあったけど、どうにか環境は整いましたとさ。
一つミスったのは、こっちのネットワークの 192.168.xxx.yyy の xxx をオフィスのローカルと同じにしちゃったので、VPN がつなげないってことくらいかな?
まぁ、開発サーバをこっちに持ってきている以上、オフィスには無理して繋がなくても良いんだけど。
んで、開発開始
既に時刻は 22 時を回っていますが、まだ焦るような時間じゃない。
お風呂が 24 時で閉まっちゃうから余裕を見て 23:30 くらいには研修室出て風呂の準備するってことで、残りの時間でちょこちょこ開発してみます。
とりあえず現状で溜まってるシステム改修案件の一つをサクっと改修。
あとは、明日以降にやる開発案件の要件を整理して、簡単な設計を脳内で纏めてみた。
とりあえず、合宿前にフレームワークの改修を済ませてあったので、開発自体は速く終わりそうかな?
テスト工数がどれだけ取れるかが勝負ってことで。
最後は、定例反省会
まぁ、寝る前に酒飲んでグダグダ話してるだけなんだけど。
でも、こんな時でも仕事の話がチョイチョイ出てくるあたりがビョウキですね。