ページ

2012年1月31日

今日のTracのTicket

アリエルでは、様々な仕事をTrac(バグ管理システム)に登録して管理しています。すべての問題はTracのチケットを通してやりとりされます。バグ管理だけじゃなく、コミュニケーションツールの一つになっています。

今日は、アリエル史上もっとも大きな出来事の一つがありました。しかし、実際には金曜日に本人のいないところで盛り上がって、今日は食傷気味でした。もう、このままでいいと大勢が思っていた中で、 アリエルのCTOの社内婚約発表会がありました。そのときの内容はまた、別の機会に・・・。

その社内発表会と時を同じくして、結婚式を挙げるというチケットが登録されました。チケットのオーナーはもちろんアリエルCTOです。CTOは結婚式を挙げたくないって言っています。CTOはすかさず「再現手順がないので」という意味不明な理由でwontfixで閉じようとします。 

しかし、そんなむなしい努力もアリエルのチケットキーパーの目を逃れることはできません。すかさず、「バグじゃないので再現手順は不要です」と言ってチケットはreopenされます。priorityもurgentに変わっています。Sevirityもmajorです。これは、全社員が注目すべきであると、意味します。

実際に結婚式が達成されたかどうかを判定するテスターもアサインされて、「結婚式をするかどうかは、新郎の意思は関係ないです。新婦とその両親の意向があるだけです」とコメントされます。

さらに、本当にテストが十分かどうか、と言うレビューが行われることになりました。横から、「おそらく、結婚式を挙げないともっと素敵なことが待っている。ふふふ」と、脅しともとれるコメントが追記されています。

さらに、「簡潔にわかりやすく、かつ詳しくリリースノートをお願いします」と、リリースノートと言うか、プレスリリースと言うか、そういうものをまとめることが必須になりました。

 

たぶん、もうみんな飽きちゃったので、あとはこのチケットを生暖かく見守るだけです。

CTOの結婚について質問があれば、広報担当を自認する僕が適当に尾ひれをつけて、ないことないこと、答えるよ。

 

でわでわ 



2012年1月29日

MacBook AirでOSの再インストール

僕はオタクではないので基本的にOSの再インストールなんてしません。人にPCをあげたり売ったりするときぐらいです。Windowsで一年に一回OSをインストールし直す人がいるっていう都市伝説を聞いたことがありますが、信じられません。

そんな一般人の僕ですが、MacBook AirのOSを再インストールしました。去年の夏、持っていたMacBook Airを嫁に奪われました。MacBookを使おうと思ったのですが、重い・・・。と言うことで、MacBook Airを買ったのですが、時間がなかったのでTimeMachineから復元しました。でも、その時から何となく、調子がいまいち。でも、それほど気になるほどじゃなかったのです。でも、最近、頻繁にOSがフリーズします。一週間に一度ぐらいから、二日か三日に一度ぐらいフリーズします。ちょっとストレスがたまりますよね。

なので、今回はTimeMachineから復元はせずに、OSを再インストールしてから手でデータを移動しました。まあ、データ自体、それほどないし、設定も割と素の状態で使っているので、一日あればなんとかなるものです。

こういうときじゃないと、アップデートとか設定の見直しをしないので、その辺もちょこっと。と言ってもEmacs関係のもろもろぐらいなんですが・・・。

世間ではvimが流行っているらしいですが、やっぱり僕にとっては設定ファイルエディタと時々コミットログエディタでしかないです。

気分的には動作が速くなった気がします。きっと気分だけの問題だと思います。 

 

 でわでわ。 



2012年1月27日

あなたはどの言語のヒト?

先日、会社のヒトとランチをしていたとき、「おおたにさんって、PythonとJavaのヒトですよね」って言われました。数カ月前に会社の製品のバグを直していたら、別のヒトに「おおたにさんってJavaScriptもかけたんですか?」 って言われた時はショックでした。でも、今回はちょっと違います。

ちなみに僕がプログラミングを始めた頃は、僕の記憶が間違い無ければJavaはまだこの地球上にプログラミング言語としては存在していなかったと思います。ショックじゃなかったというのは、その程度に僕は若いって思われていたんだと言う意味です。CTOはおじさんまるだしで「C言語ラブ」とか言ってますが、きっとCTOと僕では世代が違うのでしょう。

Basicをやっていた頃は暗黒期として忘れ去るとして、学生のころはCとかC++で遊んでいました。そのあと、社会人になってからJavaをこっそり始めました。いや、卒業間近にjavaの0.9なんとかがでて、そのへんから触り始めたかも。多分、25才ぐらいのころかも。アリエルになってからは、最初はCとかC++でコードを書いていました。なので、アリエルに大昔から入る人は、Java屋さんじゃなくってC/C++屋さんです。

まあ、僕はCはシンプルなのでいいですが、昔の僕が知っていた頃のC++と今のC++は全くの別物になってしまったので、もう、書くことはできないでしょう。というか、よくわからん。必要ないので勉強しようとしないし…。

最近の僕の知っている若者は、Javaとかスクリプト系の言語をやっとけばいいのに、CとかC++とかを勉強したがるような感じがします。しかも、そのような奇特な人は、言語の上っ面だけじゃなくって、かなりちゃんと勉強しています。すごすぎます。 

まあ、一時期、C/C++は一部の特殊な用途に限定されていくって思っていた時期もありましたが、今後はどうなっていくんでしょう?なんにせよ、言語自体はそれほど重要じゃないので、いろんな言語ができたほうがいいですね。

でわでわ 




2012年1月26日

六本木500円ランチ

最近、アリエルの朝組に英語名ができました。Early Bird Mafiaとして正式な(?)組織として認定されました。朝組は朝が早いのでお腹が空くのも早いです。そのため、朝組は11時30分ぐらいに昼食を食べに行きます。

そして、先週ぐらいから500円ランチが朝組のブームになり始めました。アリエルは六本木にありますが、六本木で500円ランチ?数は少ないですが、六本木でも500円ランチはあります。

ちなみに500円ランチの定義は550円までのランチという独自の定義を使用しています。この定義になったのは、駄菓子屋という天丼やさんの天丼の値段が税込み525円だからです。550円までOKというのは、もし、消費税がまかり間違って10%になったとしても、ルールの変更をする必要がないからです。

駄菓子屋以外にも、六本木の交差点を東京タワーに向かって少し行ったところにトルコ料理屋が3軒並んでいます。そのどの店でも500円のケパブ丼が食べられます。真ん中の店が一番オイシいですが、ケパブ丼の量は一番少ないです。と言うか、少なすぎます。

昨日は、串かつ男というところの味噌カツ丼でした。衣はさくさくしてオイシかったです。その1.6倍の値段を出せば、800円の定食があります。IMG_0272.jpg

六本木は安い店の数が少ないので大変です。しかし、赤坂まで足を伸ばせば沢山500円ランチがあることを発見してしまいました。CTOはもう、お年なので遠くまで歩けないそうですが、朝組のメンバーであれば、赤坂まではランチ圏内です。

まあ、まだ、六本木500円ランチを制覇しきれていないので、赤坂遠征はも少し先になりそうです。 



2012年1月24日

第8回ありえるえりあ勉強会、終わった

僕の気分次第で開催されるありえるえりあ勉強会の第8回が終わりました。まとめは多分、ここ。今回のお題は「pypyのキホンの気」です。アンケートを見ると、基本だと思ったら途中からついて行けなくなった、と言う、僕の想定通りの展開になって、うれしい限りです。8回の勉強会の中で、scalaとpypyが置いてけぼり感がだせて良かったと思っています。

アンケートの中にPythonのもっと基本的なこととかWebアプリケーションの作り方についてもやって欲しい、ってありましたが、残念ながらありえるえりあ勉強会ではやりません。他の心優しい勉強会を主催しているヒトに御願いしてください。簡単に言っちゃえば、僕がよく知っていることは勉強会では取り上げないんですね。ごめんなさい。

今回の勉強会で、まず、JITについて。これ、面白かったです。まあ、当日僕は休んだのustで見ただけですが・・・。pypyのJITの仕組み、ずっと僕は誤解していました。実際に速くなっているからそうなんだろうけど、やっぱりそれで本当に速くなるの?って感じが・・・。よく分かっていない証拠ですね。

静的解析について。ust見るまで何をやるか、本当に知らなかったのですが、うーん、僕は静的解析、あまり興味がないことが分かった。と言うか、境界線上には型の情報があったほうがいいと思っているので、その辺はぼくのPythonの嫌いなところなので、興味がない理由の一つかもしれません。

やっぱりpypyなので、50人ちょっとしか集まりませんでした。いや、あの寒い中50人以上も集まった言うべきか・・・。僕は集まった人数は全然気にしないのですが、pypyだけでもこんなに集まったことには驚きです。 

次回は4月終わりか5月頃です。 

でわでわ 



2012年1月23日

増殖するMac

僕の家では、嫁は、僕のお古のLets Noteが壊れてから、ネットブックと呼ばれていたEeePCを使っていましたが、半年ほど前に調子が悪くなってから、MacBook Airを使うようになりました。それも僕のお古なんですが・・・。最初はCtrlキーの位置が違うとか、日本語と英語の切り替えはどうするんだ?って不満を漏らしていましたが、いつのまにか気に入ったようです。トラックバッドも複数の指での操作をマスターしたようです。慣れればなんとかなるもんなんですね。そんなこんなで、我が家ではWindowsは僕のiMacのVM上にだけ存在しています。

増殖しているのは僕の家の話ではありません。先日、会社の女の子と、会社を辞めた女の子とランチしました。そのとき、「おーたにさん、PCが壊れてMacを買ったんですよ。買ってて来て、家で10分もしないうちにネットワークにつながっていいですね。起動も速いし・・・。コンピュータってこんなに速かったんですね。」って。うーん、Linuxは大昔、カーネルのコンパイルとかから始めていたので、Windowsですら僕にとってはネットワークにつながるのは早いんですが・・・。ついでに、WindowsもMacも設定で困った経験がないので・・・。起動スピードはよく分かりません。ずっとスリープさせているし・・・。

そしたら、別の女の子が「うちもMac買ったんですよ。MacBook Proですが・・・」ってうれしそうに言ってきます。 

僕もMacでiTunesでごにょごにょしたり、写真の管理をしたりしていますが、メインの使い方は苦労しないUnixでしかないんですよね。ターミナルとEmacsとブラウザがあれば良くって、それ以外は少しごにょごにょ程度です。そう言えば、 嫁がMSのOfficeなぜ入っていないんだ?買ってくれ?って言われたりしますが・・・。

と言うことで、オープンソースの開発者は圧倒的にMac比率が高くなって久しいですが、普通の家庭もMac比率が高くなっているんでしょうか?それとも、単に僕の周りだけなんでしょうか? 



2012年1月19日

東大が秋入学?

夜ご飯を作りながらNHKを見ていると、東大が秋入学にするかも、って流れてました。メリットとかいろいろ言っていましたが、もう大学を卒業して久しいので、秋だろうと春だろうとどうでもいいです。で、NHKの人が、秋入学になると、高校を卒業してから入学までの半年のギャップと卒業してから会社への入社までの半年のギャップがあるので、大学側がなんとかプランを用意してあげないといけない、そうしないと、学生は何もしないまま半年を過ごしてしまう、って言ってました。なんとも素敵な意見ですね。

高校卒業から入学までの間のことはともかく、大学卒業から入社まで大学が面倒見るって、なんともお年寄りの発想です。たぶん、今はなきロータスには帰国子女ように秋にも新卒の人が来ていたような気がします。企業も10月から新卒の人に働いてもらえばいいだけです。東大だけで人が少なすぎるなら、新卒の人に4月採用か10月採用かを選ばせればいいだけのような・・・。新卒は4月からだけってのがおかしいのです。

で、22歳を超えた大人に半年間の過ごし方が分からなくって、何もできないって、お節介もいいところです。何もしないなら何もしないで、そういう時期があってもいいし、自分で判断できるんだから何かやってみるのもいいんじゃないのかな?大学がそんなところまで面倒見る必要ってないでしょう。

僕の学生の頃は、農学部から脱走したニワトリを捕まえて夕飯にしたり、海で密漁(?)して8年間(大学院じゃなくって普通の学部生ね)の学生生活を送った人がいます。どこに就職していったかは覚えてませんが・・・。大学ってそんな変なところだと思います。

でわでわ 



2012年1月18日

websocket client 0.5のリリース

ちまちま作っていたwebsocketのpythonのクライアントライブラリをアップデートしました。バージョンは0.5ですね。以前サポートしてたプロトコルのバージョンは、echo.websocket.orgで使えなくなってしまっていたので、古いプロトコルのコードはごっそり消しました。今回はRFC6455になったhybi13だけをサポートしています。いや、サポートしているつもり。

日本人が使っているって聞いたことないので、日本語でかいても無意味なような気もしますが・・・

テキスト転送だけじゃなく、バイナリデータの転送もできます。一つのデータを複数のフレームが分割して送受信できるみたいですが、それはまだ、対応していません。


リュックに逆戻り

昔はずっとリュックを愛用していました。でも、いい年してリュックばかりも・・・、と思って、メッセンジャーバッグを使い始めたのが、多分2,3年前です。デザインもとても気に入っていたのですが、基本的にノートPCと言うか、MacBook Airを持ち歩くので片方の肩に負荷がかかって、とてもバランスが悪いです。まあ、簡単に言えば肩がこります。MacBook Airもたかだか1kgぐらいなんですけどね。

去年の末ぐらいから、段々耐えられなくなったというか、リュックが恋しくなってきました。一応、以前使っていたリュックもあるのですが、海用になっています。海が家の近くなので、夏は毎週海水浴です。つまり、カバンの中に砂とか潮とか一杯なのです。潮は洗ったので大丈夫ですが、細かな砂は取れきれません。それに、取れたとしても海に持って行くカバンはいずれにしても必要なのです。

と言うことで、新しいカバンを買いました。ターガス・ジャパン Dashバックパック(ブラック) TSB111AP って言う奴です。もう、作っていないので、在庫限りです。PCを入れるための場所がちゃんと確保されているがポイントです。15インチ強のサイズまで入ります。11インチのAirなら横向きで入ります。下の方に重心が来て、いい感じかもです。ポケットも一杯あって、雨が降ったときもカバンを覆うカッパみたいなのがあってPCを保護できます。カバンの中にiPodとかiPhoneをおいて、肩のあたりからイヤホンのジャックが出ていてそこにイヤホンをつなげればすっきりする、みたいになっていますが、これは、ちょっとどうなんだろう?

買ったのはちょっと前のモデルなんですが、最新のモデルはPCを入れるところだけじゃなく、タブレットを入れるところもあります。なんと、時代を反映しているんだ!どんなにちゃんと保護されようと重さは変わらないので、体を鍛えるにはいいかもしれません。僕はiPadは家の外には出さないので関係ないですね。 

メッセンジャーバッグからリュックに戻って、左右のバランスが取れていい感じです。本当はもう少し小さなリュックが欲しかったのですが、それさえ除けば気に入っています。 それから、全体の大きさの割にモノが入る量が少ないような気もするので、いろんなおもちゃを持ち歩くヒトは気を付けた方がいいかも。


でわでわ 



2012年1月17日

OB訪問って何?

僕が社会人になった頃は、今ほど就職が大変じゃなかった頃ですが、バブルははじけていていました。そのころも就職氷河期とか言われていたような気がします。でも、まあ、それなりにいい加減な就職活動で就職できたので、今よりは言い時代だったのかもしれません。

さて、これを読んでいてなおさら思ったのですが、OB訪問って何なんでしょう?そんなことやったことないので、分かりません。All Aboutの記事をざっと見ると、うーん、何のために必要なのか、さっぱり分かりません。一応、目的が

・やりたいことを捜す
・内定をとる
・人脈を広げる 

仕事の実際の内容を聞けるのはいいかもしれませんが、昔ならともかく、今はネットもあるし、もっと手軽に情報が手に入るような気がします。IT系のエンジニア志望なら、どこかの勉強会に行けば大量に情報が手に入ります。 

人脈をつくるって意味不明です。 内定をとるって、内定を出すための意思決定者とほど遠いところで何かをやってどうにかなるもんなんでしょうか?

まあ、 僕はたまたま最初に受けた会社に何となく通っちゃって、その次に受けた会社は面接でつまらなそうだったのでその場で断ったような感じなので、社会の"常識"とかけ離れているのかもしれません。

でわでわ



2012年1月13日

rfcになったwebsocketのデータ転送の部分

前回の続きです。前回はハンドシェークまでだったので、今回はデータ転送の部分です。大昔のプロトコルはテキストの転送は0x00で始まって0xffで終わるって言う単純なモノだったので楽でした。その後、データの転送にABNFでframeをつかってヘッダー領域とデータ領域に分けられ、面倒になりました。と言うことで、今回はこのデータの転送のお話。

データ転送はframeでヘッダー部分とデータ部分に大別されます。
ヘッダー部分は最初の一バイト目にいろんなフラグとデータのタイプを設定します。
2バイト目がデータをマスクするのか?と言う情報とデータの長さの情報を設定します。データは最大64bitのintの長さまで設定できます。データの長さに応じて、2バイト目から最大4バイト消費されます。
その次のバイトからがデータになります。2バイト目でマスクを使用するように設定されていれば、マスクで使用する情報が4バイト分設定されて、その次のバイトからマスクされたデータがセットされます。マスクしない場合は、データ部に入るとすぐに実データがセットされます。

マスクって言うのは、データの各バイトをxorしているだけです。ハンドシェークのkeyとacceptは、途中におかしなプロキシがいた場合の単純な解決法だと好意的に解釈できんですが、このマスクはさらに意味不明です。ハンドシェークのときにマスクで使用するバイトを交換するなら分かるんですが、各データ転送フレームごとにマスクのキーを送るって意味不明です。例えるなら、共通鍵で暗号化したデータを共通鍵と一緒におくるようなもんです。解読すれば一瞬でデータが復元できます。何を守りたいのか分かりません。base64を暗号化って言っているようなモノです。

それぞれのバイトの各bitの説明をしようかと思ったけど、めんどいので今日はここまで。と言うか、最初のバイトの2バイト目から4バイト目までの意味もまだよく知らないんですが・・・

2012年1月6日

RFCになったwebsocketのハンドシェイクの部分

@t2y に「You've been writing only about cat, recently. I feel you are over.」っていわれちゃいました。そんなことではいけないと思い、それから最新のwebsocketに対応してくれ、ってリクエストが来ているwebscoketのpython clientもバージョンアップすべく、RFCになったほうを読んでいます。大きな処理の流れは、昔のwebsocketと大きくは違わないので割愛します。

まず、サーバに接続してリクエストを投げます。クライアントからのリクエストはこんな感じです。今回はecho.websocket.orgに対してリクエストを投げています。

GET / HTTP/1.1
Host: echo.websocket.org
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: c6b8hTg4EeGb2gQMztV1/g==
Origin: http://echo.websocket.org
Sec-WebSocket-Protocol: chat, superchat
Sec-WebSocket-Version: 13

websocketのサーバに接続するとき、Sec-WebSocket-KeyとHost, Origin以外のヘッダーはほぼ固定ですね。Sec-WebSocket-Keyだけがリクエストごと変更されます。まあ、同じでも問題ないんだけど。

Sec-WebSocket-Keyはuuidの16bitのバイト列をbase64エンコードしたもの、っていうことになっています。でも、サーバの実装は長さのチェックとかしていなさそうなので、何でもいいかも。

このリクエストに対してサーバは、
HTTP/1.1 101 Web Socket Protocol Handshake
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: Kxep+hNu9n51529fGidYu7a3wO0=
Server: Kaazing Gateway
Date: Fri, 06 Jan 2012 07:39:19 GMT

となります。echo.websocket.orgってKaazing Gateway使っているんですね。で、Sec-WebSocket-Acceptでちゃんとしたサーバかをチェックしていますが、以前にも書きましたが、これで何がセキュアになるのか、さっぱり分かりません。

Sec-WebSocket-Acceptは、Sec-WebSocket-Keyで送った文字列に258EAFA5-E914-47DA-95CA-C5AB0DC85B11をconcatして、shaでdigestしたもののbase64エンコードした値です。えっ?何言ってんだって?コードだと

s = sec_websocket_key + "258EAFA5-E914-47DA-95CA-C5AB0DC85B11"
digest = sha.sha(s).digest()
print base64.encodestring(digest).lower()

と言うことです。これでサーバからのレスポンスのSec-WebSocket-Acceptと、クライアントで計算した値が同じであればハンドシェークは成功です。まあ、厳密いえばUpgradeヘッダーとかその辺の値のバリデーションも必要なんですが・・・。

でも、大昔よりは幾分シンプルになりましたね。

次回は実際のデータ転送について。


2012年1月5日

第8回ありえるえりあ勉強会のお知らせ


あけましておめでとうございます。年もあけて、みなさん、新年の抱負を胸に抱きつつ、日夜技術への探求を続けていると思います。そんなエンジニアのためかどうかは知りませんが、1月20日にありえるえりあ勉強会を行います。今回で8回目となりました。やっと8回目・・・。回数が少ないのは僕のせいが半分、会場の確保が大変なのが半分です。

さて、今回の勉強会のタイトルは、実行委員長が暴走して「初めてさわる! おっ!? pypy ( ゚∀゚)o彡」になりました(タイトルは「pypyのキホンの気」に変更になりました)。タイトル、ふざけてますね。でも、内容は、pypyの紹介に始まります。pypyって、pythonで書かれたpythonの処理系です。pypyの紹介ではそんなことは当たり前として、pypyを使って自前の言語「おっXX言語」の実装方法について説明があるかもしれません。

その後に、どう言う内容になるかよく分かっていないんですが、静的解析について話が続きます。これは、もうちょっと概要が分からないと説明できないです。ごめんなさい。

それからJITについてです。誰かが「今時の言語でJITがついていないモノって、ふっ」って笑っていましたが、そのJITの一般的なお話とpypyのJITの仕組みについてのお話です。

多分、Pythonに限らず、言語の処理系のお話などに興味のある方であれば楽しめると思います。Pythonに期待しすぎると、つまらないかもしれません。タイトルはふざけていますが、中身はものすごいです。 見かけに騙されちゃいけません。

 

それでは、興味のあるひとはどうぞ。