11/30/2011

CloudCore VPS がすっごく安い!

CloudCore VPS のトップページのコピー
11月15日にリリースされた CloudCore VPS っていう、KDDI さんがやってる仮想化サーバ提供サービス。なんてったって、安いし、いろいろ OS 選べるし!!
CPU 1コア・メモリ2 GB・ディスク容量100GBという高スペックながら、月
額945円※2~という低価格での提供が可能になりました。このほかに、万
が一の時でも過去の時点に戻すことができるVMイメージの自動バックアッ
プ・リカバリ機能やLinux系OSだけでなく、FreeBSD、Solarisなどにも対
応した豊富なOS選択肢を設けるなど、今後もさまざまな機能を追加する予
定です。
さっそく大人気みたいで、「CloudCore VPS 新規受付の一時停止につきまして」 ってアナウンスがでてる。それだけ、みんなも「イイ!」って思ったってことだ。再開したら申し込んで、遊んでみようかなー。

11/28/2011

Wired の写真をブログに貼っても OK!(商用利用は除く)

Steve Wozniak captured by Jon Snyder/Wired.com 
ちょっと前に technology review の記事 で知ったんだけど、Wired が所有するいくつかの写真が Creative Commons ライセンスの下で自由に使えることになったらしい。


Wired のアナウンス から写真の利用に関する部分を抜粋すると:
Placing our photos under CC BY-NC license means that designated images are free for all to republish, with minor restrictions, as follows:
  • Photos must be properly attributed to the photographer and Wired.com, and, if used online, we ask for a link back to the original story where the photo first appeared.
  • We welcome editorial use by bloggers or any other publisher, but we are not authorizing commercial use, like using one of our photos in an advertisement.
  • Remixes and mashups are allowed.
要約(超訳?)すると:
  1. 写真がその写真を撮った写真家と Wired に帰属することをちゃんと表示すること。もし、オンラインで使う場合には、写真が使われているオリジナルの記事にリンクを張ること。
  2. 商用利用は禁止する。たとえば、写真を広告に使ってはいけない。
  3. 写真の二次利用(リミックスやマッシュアップ)をしてもいい。
すごいのは、なんで写真を第三者が自由に使えるようにしたのか、てところ。「許可なくリンクを張ることは禁ずる」的なサイトもあるのに、写真を自由に使ってもいいなんてっ!それは、technology review の記事 によると、Wired に対して外部からリンクをいっぱい張ってもらうのが目的。なんで、リンクを張ってもらおうとするかというと:
Google search rankings work in part based on how many incoming links reference a story.
ってことで、いっぱいリンクを張ってもらえばもらうほど、Wired のサイトの価値が上がってくわけ。これが、technology review の記事のタイトル、Link Marketing Scheme ってことだ。やばい、Wired さん、頭よすぎっ!!

というわけで、Steve Wozniak’s 9 Favorite Gadgets という記事にある、僕が好きな Woz さんの写真を貼ってみた!http://www.flickr.com/photos/wiredphotostream/ もどうぞ。

11/25/2011

雷家@川崎



お気に入りのラーメン家さんのひとつ。
今日は 中味濃め固めのりたま とキャベチャ を食べた!
おいしかったー

中味濃め固めのりたま

キャベチャ
お店の場所は川崎駅からちょっと離れてる。けど、その間、歩いてるときに期待が高まる感じがまたいいのよねー。雷家の食べログのページ の地図はちょい場所がずれてるので注意!

川崎駅からはやや離れている

11/22/2011

青木靖さんが Charlie Todd さんの講演を翻訳してる!

こないだブログに書いた TED での Charlie Todd さんの講演を青木靖さんが訳してくれる!!わーい。

字幕を見てても理解できてなかった部分がいっぱいあるから、青木靖さんの訳を見て、英語の勉強のつもりでもっかい TED を見てみよー。と、さらに!青木靖さんのページ には付録として、Improv Everywhere の人気がある動画も貼り付けてあるー!



夢のような試合 : Best Game Ever

Improv Everywhere のミッションの中でお気に入りのもののひとつ、Best Game Ever。なんでもない少年野球の試合が、メジャーリーグの試合みたいになっちゃった!選手の子供たちも監督も、観客として参加したエージェントもいい思い出になっただろうなあー。


 

NBC sports の実況が始まるところとか、 Good Year の飛行船(?)が現れるところとかが特に好きっ!


11/19/2011

Google 日本ブログによる、緯度・経度の調べ方

Google 日本ブログの「Google マップの使い方講座 第一回 緯度経度編」 に名所の緯度・経度の調べ方が書いてある。ちょっと前に、僕が書いた内容とテーマが同じ。奇遇だなあ。

Google 日本ブログで紹介されている緯度・経度を知りたいときに使える Labs 機能
でも、Google 日本ブログが紹介している方法は僕の方法と違う。Labs 機能を使うらしい。個人的には、僕が見つけた方法のように、緯度・経度を知りたい場所を右クリックする方法のほうが好きだけど、いくつもやり方があるということで。

あと、奇遇な点は、名所の例が東京タワーだったことだ。

11/17/2011

ルイーダの酒場@六本木


ルイーダの酒場というと、アリアハンのしか頭に浮かばなかったんだけど、実はいろいろあるらしい。で、さらに、六本木にもあるらしい。

お店の雰囲気、店員さんの服装とか内装とか、メニューもドラゴンクエストワールド。おもしろいのは、入場のご案内にあるように、土日祝日と平日の混んでるときは75分制だということかな。ドラクエがわかる人といってみるにはいいお店かも。

しかし、六本木なんて、数えるほどしか行ったことないなあ。もしもルイーダの酒場にいくなら、ドラクエもわかって、六本木にも詳しい人といかないと路頭に迷いそうだ。。



ルイーダの酒場は六本木5丁目の信号の近く!

11/16/2011

Improv Everywhere のミッションに参加したらどんな気分になるんだろう

TED で Charlie Todd さんの The shared experience of absurdity を見た。この講演は Improv Everywhere の話。
Improv Everywhere is a New York City-based prank collective that causes scenes of chaos and joy in public places.
英語が難しくってよく話の内容はよくわからなかったんだけど、Improv Everywhere がやってることはとっても楽しそう。講演で紹介されてたミッションの中だと、僕は High Five Escalator が好き。巻き込まれた人たちの心の広さというか、一緒に楽しんでるところ、表情がいい!アメリカって怖そうなイメージがあるんだけど、こういうの見てると楽しそうで、文化的に豊かな印象を受けた。世界は広いなあ。


11/15/2011

Google マップ画像をブログに埋め込む方法

どうやれば Google マップの地図画像をブログに埋め込めるのかな?と思って調べてみたら、結構簡単だった。先走って Maps API キーってのを取得しちゃったんだけど、商用とかじゃなくて、地図画像をブログに貼るだけなら、もはやいらないらしい。
注: Google Static Maps API は、Maps API キーがなくても使用できるようになりました。
画像取得のための API に関するドキュメントはStatic Maps API V2 デベロッパー ガイド。これを読むと、表示したい場所を緯度経度か住所で指定するらしい。日本語で住所を指定しようとするとちょいめんどくさそうな気がしたから、僕は緯度経度で指定することにした。

目的の場所の緯度経度を取得する方法はどうすればいいのかな?いろいろあるかもだけど、僕がやった方法は次の3ステップ。

[1] 目的の場所、ここでは東京タワーを Google マップ で表示。


[2] 目的の場所(東京タワー)を指しているマーカーを右クリックして「この場所について」を選択。このときのポイントは、なるべく地図を拡大してから右クリックすること。そうじゃないと、目的の場所からちょっとずれた緯度経度がとれちゃうかもしれない。



 [3] Google マップの検索窓に緯度経度が表示される。

以上で、東京タワーの緯度経度が取得できた。あとはStatic Maps API V2 デベロッパー ガイドに従ってやりたいことをすればおk!たとえば、上の例で取得した東京タワーの場所に「T」の文字がついたマーカーを置いて、400x400の画像(32ビットPNG)が欲しければ
http://maps.google.com/maps/api/staticmap?markers=color:blue|label:T|35.658565,139.745471&zoom=16&size=400x400&format=png32&maptype=roadmap&sensor=false
というURLを作ればいい。 マーカーは複数置けるし、拡大・縮小は zoom のパラメータで調整。sensor はユーザの位置を GPS とかのセンサーで取得するかどうかを指定する。ブログに何かの地図を貼り付けるだけなら sensor=false でいいと思う。下の画像は maptype を roadmap じゃなくて satellite にしたバージョン。




よし、これで、東京タワーに「T」のマーカーを置いた衛星画像(地図)がゲットできた!

あとはブログの画像埋め込み機能を使って、画像のソースのところにさっき作った URL を貼ってあげれば、ブログに地図を埋め込むことができるぅー。

11/14/2011

FreeBSD と GNU coreutils の yes(1) のコードを読んで

すっごくすっきりしてる FreeBSD の yes(1) の実装と、GNU coreutils のお決まり処理をいろいろやってる GNU coreutils の yes(1) の実装。僕はすっきり実装の FreeBSD のほうが好きだなあ。

今回初めて知ったのは、FreeBSD と GNU coreutils の yes(1) の挙動の違い。

Ubuntu (11.04) で yes a b c を実行すると、
$ yes a b c | head -n1
a b c
 て感じだけど、FreeBSD (8.2-RELEASE) だと
% yes a b c | head -n1
a
になっちゃう。シェルスクリプトとかで yes(1) を使うときでスペース区切りの文字列を扱いたければダブルクォートとかでくくればどっちの場合でも動きそうだ。

ふたたび、Ubuntu (11.04) だと、
$ yes "a b c" | head -n1
a b c
 って感じだし、FreeBSD (8.2-RELEASE) も
% yes "a b c" | head -n1
a b c 
ということで、おんなじ結果になる。よかったよかった。

ところで、yes(1) の使い道についてのヒントは en.wikipedia.org の yes (Unix) の記事に書いてある。へー、(テスト目的とかで?)適当なファイルを作りたい時にも便利なんだねー。

よし、今度は tail(1) に挑戦してみよー。ちょっと難しそうだけど...


11/13/2011

GNU coreutils の yes(1) を読む(後編)

GNU coreutils の yes(1) を読む(前編) の続き、yes.c の残りは次のようになっている。
     75   if (argc <= optind)
     76     {
     77       optind = argc;
     78       argv[argc++] = bad_cast ("y");
     79     }
     80
     81   for (;;)
     82     {
     83       int i;
     84       for (i = optind; i < argc; i++)
     85         if (fputs (argv[i], stdout) == EOF
     86             || putchar (i == argc - 1 ? '\n' : ' ') == EOF)
     87           {
     88             error (0, errno, _("standard output"));
     89             exit (EXIT_FAILURE);
     90           }
     91     }
最初の if 文は、引数の数(argc)が argv の中で次に処理されるべき要素を示すインデックス(optind)以下の場合に実行される、ということで、典型的には yes(1) が引数無しで呼ばれたときに if 文の中に入る。if 文の bad_cast() は、src/system.h で定義されていて、const char * を引数にして、char * で返す関数。const だったものを強引に const 外すから、bad_ なのかな。

次の while 文が、yes(1) の出力処理を実行してる。argv の optind から順に fputs していって、最後の要素を fputs したら改行文字を putchar(3) する。というわけで、

$ yes a b c
のように実行すると、"a b c" が出力されるわけだ。
$ yes
みたく、引数がない場合は、argv[optind] に "y" が設定されるから、"y" が連続して出力される。

この yes.c を読んで気になったのは、78行目、
     78       argv[argc++] = bad_cast ("y");
の部分。これ、メモリ破壊起こすんじゃないのかな....argv の要素数は argc で与えられているわけで、argv[argc] は与えられた領域を超えちゃってるような。ググって調べてみたけど、78行目みたいなことができる根拠がわからなかった。。誰か教えて!!

argc <= optind になる場合とか、そのほかいろんな制約がわかってないけど、たとえば、↓のようになってればすっきりするんだけど。。
@@ -74,8 +74,8 @@

   if (argc <= optind)
     {
-      optind = argc;
-      argv[argc++] = bad_cast ("y");
+      optind = argc - 1;
+      argv[optind] = bad_cast ("y");
     }
ま、いいやっ!

11/10/2011

暗証番号無しで iPad2 のロックを解除できるバグ?

Bruce Schneier さんのブログ で紹介されてたんだけど、Smart Cover があれば 暗証番号を入れなくても画面ロックが解除できちゃうバグ(不具合)が iPad2 にあるみたい。 紹介されていたのは この Casey Chan さんの記事。何がどうなるのかは、この動画を見れば(英語がわからなくても)大体わかる。


思ったことはふたつ:
- こういう不具合とかバグ見つける人すごい!
- セキュリティって大変....

MetaWatch が欲しい!

Make: Onlineの "Tool Review: MetaWatch Android-Compatible Wristwatch" ていう記事MetaWatch を知った!Android-Compatible... というところだけでも「おっ?」と思うのに、見た目もすっごくかっこいいし、しかも、$199 だって!これすっごく欲しいよ!!

TI の e-store で買えるらしい。TI といえば、eZ430-Chronos が前から気になってるんだけど、これ系の何かが MetaWatch のベースにもなってるのかな。eZ430-Chronos のときは、これに書いてあるように技適とらなきゃいけなかったんだけど、MetaWatch は日本でも手軽に使えるようになってくれるとうれしいなあー。

11/08/2011

Madeon さんの Pop Culture はノリノリ!

2,3ヶ月前だったか、はてぶ  で知った Madeon さんの Pop Culture。
こんな楽器(?)があるの知らなかったよ。



みんながすごいすごいと言ってたのは↑の live mashup バージョンなんだけど、Music Video バージョンを見るとすごさが倍増。知らない曲ばっかりでわからなかったけど、いろんな曲が使われてるのだ。


僕が一番気に入ってるのは↓の Dance Video バージョン。ダンスそのものも超ノリノリで楽しいんだけど、特に 2:48 付近の展開が大好き!


みんな才能ゆたかだかなー。

11/06/2011

GNU coreutils の yes(1) を読む(前編)

FreeBSD に続き、GNU coretutils の yes.c を前編、後編の2回に分けて読んでみる。対象のソースは Ubuntu 11.04 上で以下のコマンド実行してダウンロードできた coreutils-8.5 の yes.c。
$ apt-get source coreutils
 今回は前編。yes.c の main() 関数の前半部分、yes(1) のメイン処理に移る前の部分を読む。
     62   initialize_main (&argc, &argv);
     63   set_program_name (argv[0]);
     64   setlocale (LC_ALL, "");
     65   bindtextdomain (PACKAGE, LOCALEDIR);
     66   textdomain (PACKAGE);
     67
     68   atexit (close_stdout);
     69
     70   parse_long_options (argc, argv, PROGRAM_NAME, PACKAGE_NAME, Version,
     71                       usage, AUTHORS, (char const *) NULL);
     72   if (getopt_long (argc, argv, "+", NULL, NULL) != -1)
     73     usage (EXIT_FAILURE);
[initialize_main]
gnu.core-utils.bugs に Bernard Giroud さんが投稿したメイルによると、initialize_main() は VMS ていうシステム上で redirect を実現するためのアイデアが起源になってるらしい。VMS 上では必ずしも bash (シェル) 上でコマンドが実行されなくて、redirect するのにちょっと工夫がいるみたい。この VMS は OpenVMS のことかな?

initialize_main() の定義は coreutils/src/system.h にある。さっきの VMS とか、そのほか、ちょっと変わった環境で redirect とか実現したい場合は、system.h 内の initialize_main() を適切な形で定義すればいい。こうすれば、それぞれのコマンドのソースを変えなくて済むからイケてる感じ。
/* Redirection and wildcarding when done by the utility itself.
   Generally a noop, but used in particular for native VMS. */
#ifndef initialize_main
# define initialize_main(ac, av)
#endif
[set_program_name]
set_program_name() は argv[0] から実行されたコマンド名だけを取り出して program_name ていうグローバル変数に設定する。program_name 変数は lib/progname.h で extern 定義されてるから、set_program_name(argv[0]) した後は、program_name 変数にアクセスすることでコマンド名が取れるってこと。
/* String containing name the program is called with.  */
extern const char *program_name;
[setlocale, bindtextdomain, textdomain]
このあたりは、ロケール関係。いままで使ったことないから、これはどっかで改めて勉強しよう。

[atexit]
atexit(3) はプロセスが通常終了するときに呼ばれるべき関数を登録する。yes.c だと、標準出力を閉じてそうな、close_stdout() を atexit(3) で登録してる。atexit(3) もいままで使ったことなかったけど、これは便利そうだ。

[parse_long_options]
yes(1) が --help か --version 付きで呼ばれたときの設定をする。--help と --version は coreutils のコマンドで共通みたい。このあたりの作りもかっこいいな。

[getopt_long]
第三引数の "+" の意味は man 3 getopt に書いてある。
If  the first character of optstring is '+' or the environment variable POSIXLY_CORRECT is set, then option  processing  stops as soon as a nonoption argument is encountered.
yes.c の getopt_long(...) を呼び出してるところ、オプション以外の引数があったらそこで解析をやめるし、何かオプションが指定されてたらそれはエラーだよ、って意味。getopt_long(3) は正しく解析できたときに -1 を返すから。

---
後編に続く。

scrumblr を勉強すれば node.js と仲良くなれるかも?

最近興味があるもののひとつが node.js。
昨日、ちょっと時間があったから、node.js をキーワードにして Google で検索していたら、かちびと.net がヒットして、scrumblr を知った。

scrumblr
a web-based simulation of a physical agile sprint board that supports real-time collaboration. it is built using node.js, websockets (using socket.io), CSS3, and jquery. i hope you like it.
とのことだけど、すっごく簡単にいうと、ホワイトボード+付箋紙 のウェブサービス。
デモページ で遊べば雰囲気がつかめるはず。

scrumblr が実現していること、さくさく感もさることながら、この見た目、フォント、すっごくいい!僕好み。github でソースコードを公開してくれてるし、せっかくだから勉強させてもらおうかなあ。






11/05/2011

Kickstarter に大注目!

MAKE: Japan のブログ で知ったんだけど、Kickstarter っていう、資金援助のプラットフォームがあるらしい。MAKE: Japan のブログ の記事中の Ryo Chijiiwa さんの言葉を借りると、Kickstarter は:
Crowd-funding(クラウドファンディング:大衆から資金を調達する仕組み)
Kickstarter から一番多くの資金を得たという an iPod nano watch の画像みたら、なにこれすごい!かっこいい!ほしいよ、これ(下に動画貼りました)。

Kickstarter については、また改めて MAKE: Japan のブログ をじっくり読むとして、やっぱり、ハードもできるようになりたいなあと思う。




11/03/2011

ブログに本の画像を貼る方法

dankogai さんのブログ の書評の記事には本の画像がのっている。こういうのを僕のブログでもやりたいな、と思ったので、やり方を調べてみた。

やり方のひとつとして、Amazon アソシエイト(アフィリエイト) を利用する方法があるみたい。Amazon のアカウントがあれば、数分で画像をはりつけるための URL が作れるようになる。ほかにもいろいろな機能があるみたいだけど、それはまた今度調べよう。

というわけで、おととい?書いた WEB+DB のブログ記事のところに画像を追加した。

11/02/2011

「アイデアを目に見える形にしてこそのエンジニア」


WEB+DB PRESS Vol.65 に掲載されている、中島聡さんの「Software is Beautiful」の第10回のテーマは「アイデアを目に見える形にしてこそのエンジニア」。



こういう風になりたい、と思うことがそのまま書かれてた。思いついたアイデアをサクっと作れるようになりたいなあ。

関係ないけど、この記事の中に出てくる、中島聡さんの高校生のころの話がすごい。僕の高校時代とはまったく違うなあ、と思ったけど、でも、そういえば、僕、高校のとき何してたんだっけ。。。