1/31/2012

Lego とモレスキンのコラボノートが3月14日に登場!


これは、イイ!ここのリンクから「登録」すれば、注文可能になった時に amazon さんが教えてくれるって!!

wired の記事 の写真もぜひ見てほしい!どれも、これも、かわいいなー。ひとつあげるとしたら、緑のやつが好き。

でも、僕はいまのモレスキンを使い終わるまでは新しいのは買えないな。いくら、これが限定品でも...

1/30/2012

IcedCoffeeScript もいいかもしれない

過去、何度か JavaScript に挑戦して、そのたびに挫折してきた僕にとって CoffeeScript は救世主だった。jQuery も使ったら、やりたいことが簡単にかけて感動した。

そんな CoffeeScript から folk した IcedCoffeeScript なんてものを見つけた。
IcedCoffeeScript (ICS) adds two new keywords: await and defer. These additions simply and powerfully streamline asynchronous control flow, both on the server and on the browser. Say goodbye to callback pyramids; say adios to massive code rewrites when synchronization requirements change slightly. Say hello to clean, readable, maintainable control flow for network and asynchronous operations!
await と defer というふたつのキーワードを使って、非同期な処理をきれいにかけるみたい。これはよさそうだ。TameJS ってのの CoffeeScript 版。CoffeeScript に pull request を出したのが去年の12月。そのときはこの拡張機能のことを "Tame" って呼んでたけど、つい昨日(?) "IcedCoffeeScript" って名前にしたんだねー。

GitHub の pull request と、それに対するコメントを読んだのははじめてだったんだけど、結構面白い。最初のうちは、「+1」とか言われてたのに、途中で「-∞」なんて言われちゃったり。。ちょっと、かわいそう。。

でも、作者の maxtaco さんはかっこいい。さらりと、かどうかはわからないけど、
As for the voting, looks like it's about +10, and negative infinity, so unless we find a higher order of positive infinity, this is all moot.

って言ってる。なんか、余裕を感じるなー。

というわけで、IcedCoffeeScript は便利そう、ということもあるけど、maxtaco さんを応援したい気持ちになったから、 ちょっと使ってみようと思う!

1/29/2012

どうして bin と sbin, usr/bin, usr/sbin が分かれてるの?

Rob Landley さんのメイル によると、
「Ken Thompson さんと Dennis Ritchie さんが PDP-11 上で UNIX を開発してた時に、OS が大きくなってひとつのディスクに収まらなくなったから、ユーザのホームディレクトリを置いてあるふたつめのディスクに /bin, /sbin, /lib, /tmp などなどのディレクトリを作って OS のファイルを移した。ひとつめのディスクにはふたつめのディスクをマウントするのに必要なもの、例えば mount はひとつめのディスクに配置した。」
んだそうで。へー。とはいえ、initrd とか initramfs がでてきたり、shared library のせいで /bin と /usr/bin を独立に扱えなくなったり(バージョンがあってないといけないってことだと思う)、そもそもディスクが安くなったりしたことで、上で書いた理由はもはや意味をなさなくなったらしい。だけど、おもしろいのは、次のところ。
Of course once the split existed, some people made other rules to justify it.
「AT&T 由来のものは / (root) に置いて、各ディストロ(IBM AIX, Dec Ultrix, SGI Irix)のファイルは /usr に置いて、各ユーザがインストールしたものは /usr/local や /opt に置くようになった」と続けてる。

いまどきは Filesystem Hierarchy Standard (FHS) を見れば、各ディレクトリの役割がつかめる。こういう歴史の話はおもしろい。
# こういう英語の文章をさらりと読めるようになりたいな。。。

1/21/2012

Git と Mercurial のほんとの違い

Jason Chu さんが The Real Difference Between Git and Mercurial という記事を書いていたので、ちょっとお勉強。

僕は Mercurial をほとんど使ったことないから Mercurial の解説部分は実感が持てなかったけど、最近使い始めた Git のほうは「ほほぉー」とちょっとはわかった気になった。

Git は各 commit がひとつのファイルになっていて、branch は commit に対するポインタになってるってことが Git のポイントの一つなんだっ!おぉー。。
Another great example is git commit --amend. If you want to modify the most recent commit, to add something you forgot or just change the commit message, git commit --amend will create a whole new set of file objects, tree objects, and a commit object. After it’s done those things, it updates the branch pointer. If you then decide that that wasn’t really what you wanted to do, you can just point the branch pointer back at the previous commit with git reset --hard HEAD@{1} (or by looking through the reflog for the commit hash that the branch used to point at).
以下、Jason Chu さんの記事を読みながらとったメモ:

[共通点]
  • 2005年に開発開始
  • ファイルの revision の参照にファイルのハッシュ値を使う
  • ハッシュ値は manifest (tree) 内に管理される
  • 履歴を Directed Acyclic Graphs (DAGs) として管理
  • bisect, history rewriting, branch, selective commit などの高度な機能を提供 
 
[Mercurial の特徴]
  • 性能を向上させるため、Revlog というファイルフォーマットを開発
  • すべてのファイルはインデックスとデータファイルをまとめたもの
  • データファイルはスナップショットを含む
  • 差分のスナップショットはそのファイルのデルタの数がある閾値を超えたら作られる
  • インデックスはデータファイルの一部で、ファイルのリビジョンを表す
  • file revision から manifest が作られ、manifest から commit が生成される
  • この構造のおかげで、ファイルの生成や検索、(差分の?)計算は高速
  • ディスク使用量が比較的少なく、ネットワーク転送時も効率がいい
  • mercurial の branch は、commit をある branch に関連付ける感じ

[Git の特徴]
  • file blobs の形式で各種情報を格納
  • revision をすばやく保存するために、revision ごとに完全なファイルのコピーが作られる
  • ファイルのコピーは圧縮されるが、それでも多くの重複がでるため、データ量を減らすための packing がされる
  • それぞれの内容を個々のファイルに格納するため、hisotory がより扱いやすく、rsync などでコピーすることも可能
  • git の history は線形ではない(簡単に入れ替えたりもできるってことかな、差分じゃないから)
  • git の branch は commit へのポインタを管理する感じ --> だから rollabac とかしやすいぽい

1/13/2012

I'm Watch もよさげだぞ!

MetaWatch もいいけど、I'm Watch もいい!

http://www.imwatch.it/en-en/smartwatch/specs/
Google Reader の広告でよく目にしてたんだけど、これのことだったんだ。。単なる、iPod nano のホルダーなのかと思ってた....I'm Watch さん、ごめんなさい。Hello Android の CES 関連記事 読むまで君のこと知らなかったよ。。

音楽再生機能とか、音楽配信サービスとかにはあんまり興味がないんだけど、まず、見た目がかっくいいし、Bluetooth でスマートフォンと接続できるし、もうこれで十分な感じ。$250 からってことは、2.5万円弱で買えるし、値段もまあまあいいんじゃないかな。

I'm Watch の OS は Android。CNET によると、Android 1.6 らしい。へー。


んで、 ガジェット通信 によると日本に直送してくれるらしいけど、でも、技適がね....


1/11/2012

Ruby で16進数文字列をドット区切り10進数文字列に変換する

例えば、0xdeadbeef を表す文字列 "deadbeef" をドット区切りの10進数文字列に変換したい場合、Array#pack と String#unpack を使ってできる。
> ["deadbeef"].pack("H*").unpack("C*").join(".")
=> "222.173.190.239"
数値リテラルの 0xdeadbeef をドット区切りの10進数文字列に変換したい場合は、Fixnum#to_s を使って16進数文字列に変換すれば、上で書いた方法でドット区切りの10進数文字列に変換できる。
> [0xdeadbeef.to_s(16)].pack("H*").unpack("C*").join(".")
=> "222.173.190.239"
手元の Ruby  のバージョンはこちら。もっといい方法あるのかな。に、しても、Array#pack と String#unpack は便利だなー。
$ ruby -v
ruby 1.9.2p290 (2011-07-09 revision 32553)

1/05/2012

Amazon Silk が僕の Android デバイスの上で動いちゃう?

Hello Android によると Kindle Fire の Silk Browser が僕の Android デバイスの上でも動いちゃうかもしれないらしい。元の記事は こちら。うーん、びびりな僕は、ちょっと様子見、ということで。そもそも、これって、いろんな意味で大丈夫なのか??

ところで、Amazon Silk の公式ブログ があるなんて知らなかった。いまのところ、記事が一つしかないけど、RSS フィード購読しよっかな。
Each time you load a web page, Silk makes a dynamic decision about which of these subsystems will run locally and which will execute remotely.  In short, Amazon Silk extends the boundaries of the browser, coupling the capabilities and interactivity of your local device with the massive computing power, memory, and network connectivity of our cloud.
Silk、おもしろいなあ。触ってみたい-。