Make: Onlineの "Tool Review: MetaWatch Android-Compatible Wristwatch" ていう記事 で MetaWatch を知った!Android-Compatible... というところだけでも「おっ?」と思うのに、見た目もすっごくかっこいいし、しかも、$199 だって!これすっごく欲しいよ!!
TI の e-store で買えるらしい。TI といえば、eZ430-Chronos が前から気になってるんだけど、これ系の何かが MetaWatch のベースにもなってるのかな。eZ430-Chronos のときは、これに書いてあるように技適とらなきゃいけなかったんだけど、MetaWatch は日本でも手軽に使えるようになってくれるとうれしいなあー。
11/10/2011
11/08/2011
Madeon さんの Pop Culture はノリノリ!
2,3ヶ月前だったか、はてぶ で知った Madeon さんの Pop Culture。
こんな楽器(?)があるの知らなかったよ。
みんながすごいすごいと言ってたのは↑の live mashup バージョンなんだけど、Music Video バージョンを見るとすごさが倍増。知らない曲ばっかりでわからなかったけど、いろんな曲が使われてるのだ。
僕が一番気に入ってるのは↓の Dance Video バージョン。ダンスそのものも超ノリノリで楽しいんだけど、特に 2:48 付近の展開が大好き!
みんな才能ゆたかだかなー。
こんな楽器(?)があるの知らなかったよ。
みんながすごいすごいと言ってたのは↑の 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。
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() を適切な形で定義すればいい。こうすれば、それぞれのコマンドのソースを変えなくて済むからイケてる感じ。
set_program_name() は argv[0] から実行されたコマンド名だけを取り出して program_name ていうグローバル変数に設定する。program_name 変数は lib/progname.h で extern 定義されてるから、set_program_name(argv[0]) した後は、program_name 変数にアクセスすることでコマンド名が取れるってこと。
このあたりは、ロケール関係。いままで使ったことないから、これはどっかで改めて勉強しよう。
[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 に書いてある。
---
後編に続く。
$ apt-get source coreutils今回は前編。yes.c の main() 関数の前半部分、yes(1) のメイン処理に移る前の部分を読む。
62 initialize_main (&argc, &argv);[initialize_main]
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);
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.[set_program_name]
Generally a noop, but used in particular for native VMS. */
#ifndef initialize_main
# define initialize_main(ac, av)
#endif
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. */[setlocale, bindtextdomain, textdomain]
extern const char *program_name;
このあたりは、ロケール関係。いままで使ったことないから、これはどっかで改めて勉強しよう。
[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 は:
Kickstarter については、また改めて MAKE: Japan のブログ をじっくり読むとして、やっぱり、ハードもできるようになりたいなあと思う。
Crowd-funding(クラウドファンディング:大衆から資金を調達する仕組み)Kickstarter から一番多くの資金を得たという an iPod nano watch の画像みたら、なにこれすごい!かっこいい!ほしいよ、これ(下に動画貼りました)。
Kickstarter については、また改めて MAKE: Japan のブログ をじっくり読むとして、やっぱり、ハードもできるようになりたいなあと思う。
11/03/2011
ブログに本の画像を貼る方法
dankogai さんのブログ の書評の記事には本の画像がのっている。こういうのを僕のブログでもやりたいな、と思ったので、やり方を調べてみた。
やり方のひとつとして、Amazon アソシエイト(アフィリエイト) を利用する方法があるみたい。Amazon のアカウントがあれば、数分で画像をはりつけるための URL が作れるようになる。ほかにもいろいろな機能があるみたいだけど、それはまた今度調べよう。
というわけで、おととい?書いた WEB+DB のブログ記事のところに画像を追加した。
やり方のひとつとして、Amazon アソシエイト(アフィリエイト) を利用する方法があるみたい。Amazon のアカウントがあれば、数分で画像をはりつけるための URL が作れるようになる。ほかにもいろいろな機能があるみたいだけど、それはまた今度調べよう。
というわけで、おととい?書いた WEB+DB のブログ記事のところに画像を追加した。
11/02/2011
「アイデアを目に見える形にしてこそのエンジニア」
WEB+DB PRESS Vol.65 に掲載されている、中島聡さんの「Software is Beautiful」の第10回のテーマは「アイデアを目に見える形にしてこそのエンジニア」。
こういう風になりたい、と思うことがそのまま書かれてた。思いついたアイデアをサクっと作れるようになりたいなあ。
関係ないけど、この記事の中に出てくる、中島聡さんの高校生のころの話がすごい。僕の高校時代とはまったく違うなあ、と思ったけど、でも、そういえば、僕、高校のとき何してたんだっけ。。。
登録:
投稿 (Atom)

