2008
土曜日は第6回 WEwLC 読書会。もう終わりってことで、全体のおさらいをして、24章を角谷さんが発表。
24章は心構えというか「もうだめだ」から復帰してプログラミングの楽しさを取り戻すはなしだ。あるいは死なないために。いままでのカタログ的な内容とは大分ちがっているんだけど、この本は序文も「最初は楽しかったよね。プログラミングは楽しかったよね。」からはじまっているので、完全に唐突ってわけでもない。
趣味を仕事にした自分の場合、プログラミングの楽しさを失うのは大分こまる。ので、修正より長いテストコードを書いてみたり、外からみた振る舞いにほとんど影響しない部分をいじってバグをいれてしまったり、Wiki 上の議事録めいたものに噛み付いたりしている。最後のはコード関係ない。
いまのところ楽しさは失われてない、と思う。大変ではある。動いているところは触るな、なんていわれないという点では周囲に恵まれている。
なお、次からは『Clear Code』読書会になるかもしれないらしいです。まだ確定ではないですが。
http://ku.tumblr.com/post/58781926
blog.keitap.comのどこかにFFFFOUND!で日本語入ってたら英語圏のひとはもう読んでくれない、っていう話、あった気がするんだけど見つけられない。ほかのところかなー。
これ?
http://fladdict.net/blog/2007/06/post_76.html
どんなにわかりやすいナビゲーションでも、説明がいらないコンテンツでも、ページに日本語がいっぱいあると、彼らは帰る。
さがしてたら、逆のはなしもあって面白かった。母国語以外に耐えられるひとって少ないのか。
http://fladdict.net/blog/2008/04/post_151.html
ナビゲーションを英単語にした場合、たとえそれが平易な英単語でも、小学生・中学低学年を全滅させる。
そのあと koyachi さんの家でみんなで鍋。おれがお金のはなしをしすぎた。ごめん。
金曜から気が滅入ってたんだけど、布団からでて Make 行ってきた。多摩美は遠い!次回はもうちょっと早くに、暖かい格好をして、かばんをもって行こうと思いました。反省点多し。
The Breadboard Band が見れたのと、GRL の DVD 買ったのと、いろいろ久しぶりな人に会えたのは良かった。hysysk は初めて会った。
ハードウェアは最近全然さわっていないです。Make も一ヶ月くらい前は「なんか作って出そう!」と友達と言ってたんだけど結局なにもできず。会場で売ってる部品も死蔵する未来がちらついて買えなかった。でも、オーム社から出てるほうの『+GAINER』には名前が載りました。
AtomPub には edited 要素があることを教えてもらった。
http://gihyo.jp/dev/feature/01/atompub/0003
フィードに含まれるエントリの中には,app:editedという要素が入っているかもしれません。これは,最終更新日時を示すものです。atom:updatedも似たような要素ですが,重要な変更が行われた日時を指すもので,必ずしも全ての更新が対象ではありません。
http://cdivilly.wordpress.com/2007/08/31/time-values-in-atompub/
In summary atom:updated is a value determined by the user, app:edited is determined by the server, some clients (e.g. a feed reader) will be interested in atom:updated, other clients (e.g. a blog editor) will be interested in app:edited.
そんなに細々と制御しなくても、と思う。
LittleBigPlanet すごいですね。
クレイアニメっぽい。
最近の電車待ちの時間は iPhone で http://news.ycombinator.com/ をながめたりしている。英語はあいかわらずぼんやりとしか分からないし、ひまつぶしにニュースを読んでればいつか!なんてうまいはなしは無いと思う。
最近はやっぱり経済関係のはなしもあがってて、ついに No more depression posts, solve it instead てのが投稿されていた。
We are the guys and girls that solve this, not the people that whine about it, right?
そうですね。
I am robot and proud "Uphill City" 購入。タワレコ特典で CD をもらう。
Uphill City は日本盤を買ったのでライナーノーツがあった。
電子音楽/エレクトロニカ好きの人だけに限らない、より幅広い音楽ファンにも受け入れられる可能性 (例えば最近の Perfume がそうだったように) もある、
こんなところに Perfume が。
http://www.macrumors.com/iphone/2008/10/05/iphone-2-2-includes-hidden-japanese-emoji-icons/
The latest iPhone 2.2 firmware has one hidden feature that should please Japanese iPhone customers: the inclusion of 461 emoji characters.
本当ならすごいけど、そんな日本ローカル仕様に手間かけたりするんかな。
まえに KDDI 絵文字のまじった ISO-2022-JP の parser を書いて http://github.com/kzys/imap-client/tree/master に置いてあるんだけど、Apple が対応してくれるんなら放置したい。
http://adjb.net/index.php?entry=entry081001-155040 をみて、Sun の樋浦さんがジャストシステムで働いていることを知った。
http://www.itmedia.co.jp/enterprise/articles/0511/18/news039.html
「従来、XMLアプリケーションと呼ばれていたものは、既存の構造の上にXMLデータに対応した変換機能を付けただけ。それに対してxfyはクリーンな XMLエンジンを核として、XMLデータを一切変換なしに利用できる。こうでないとXMLアプリケーションとは呼べない」と話すのは、ジャストシステムのパロアルトオフィスでCOO兼チーフサイエンティストを務める樋浦秀樹氏。
2005年か。
せっかく日本に生まれたんだから、国際化とか文字セット・エンコーディング関係についても英語圏の人に説明できるくらいに詳しくあるべきなんだろうか、と Amazon で CJKV 本でも買おうと思ったら一万円以上するのねあれ。
Larry Ellison と Richard Stallman が両方とも「クラウドコンピューティング」とやらに疑問を呈していて、でも一字一句おなじことをいうのはおかしいので調べた。
http://japan.cnet.com/news/biz/story/0,2000056020,20381234,00.htm
Stallman氏は、Guardianが現地時間9月29日に掲載した記事の中で、「クラウドコンピューティングに関して興味深いのは、われわれはクラウドコンピューティングを再定義し、その中にわれわれがすでに行っている全てを含めてしまったことだ」と述べている。
http://www.itmedia.co.jp/enterprise/articles/0810/01/news031.html
Wall Street Journalのベン・ワーゼン氏のブログ記事には、クラウドコンピューティングに対するエリソン氏の痛烈な批判が掲載されている。
「クラウドコンピューティングで興味深いのは、クラウドコンピューティングという言葉が再定義され、われわれが既に行っているあらゆることが含まれるようになったことである。
Stallman のほうの原文にあたってみる。
http://news.cnet.com/8301-1001_3-10054253-92.html
"The interesting thing about cloud computing is that we've redefined cloud computing to include everything that we already do," Stallman said, in a report posted by The Guardian on Monday.
ここですでに "Stallman said," がある。Guardian をみてみよう。
http://www.guardian.co.uk/technology/2008/sep/29/cloud.computing.richard.stallman
His comments echo those made last week by Larry Ellison, the founder of Oracle, who criticised the rash of cloud computing announcements as "fashion-driven" and "complete gibberish".
"The interesting thing about cloud computing is that we've redefined cloud computing to include everything that we already do," he said.
ここの "he said." が誰かってはなしだと思う。Larry Ellison の原文は http://www.eweek.com/c/a/IT-Infrastructure/Oracle-CEO-Larry-Ellison-Spits-on-Cloud-Computing-Hype/ で、ここから引用先に。
http://blogs.wsj.com/biztech/2008/09/25/larry-ellisons-brilliant-anti-cloud-computing-rant/
"The interesting thing about cloud computing is that we've redefined cloud computing to include everything that we already do," he said.
Larry Ellison が言ったっぽいですね。
「DIS」ってひとくくりにせず批評・批判・中傷・難癖とか明確に分けて表記したほうが、わかりやすくていいんじゃないかと思った。「ネガティブコメント」についても同上。
http://fastladder.com/account/openid
Add your OpenID
Fastladder は複数の OpenID をひとつのアカウントにひもづけられる。
http://jp.techcrunch.com/archives/20080923touching-the-android-its-no-iphone-but-its-close/
Googleのサーゲイとラリーの両ファウンダーがローラーブレードで登場して、この電話機はまるでコンピュータのようにハックできるところがすばらしいのだ、と語った。(サーゲイは、内蔵のアクセロメーターを使って、投げ上げた電話機が床に落ちるまで何秒かかるかを測るアプリを書いた。この男はオタクだ)。
http://japanese.engadget.com/2008/09/23/t-mobile-google-android/
ブリン:この日を迎えてとても嬉しい。自分はちょいgeekでものを弄ったり作ったりするのが好き。Linuxをいじって育った。Android とG1はおなじ喜びを与えてくれる。G1用に最初に書いたアプリは「空中に投げて手でキャッチするまでの時間計測」。実際に投げてみせる。(だれでもアプリを開発して(Androidマーケットで)配布できるという文脈で普通に「App Store」と発言)。
http://jp.techcrunch.com/archives/20080923the-g1-almost-perfect/
じつは私は、G1をサーゲイとラリー・のようなオタクによって、われわれオタクのためにデザインされたベータ版デバイスだと思っている。
『Eric Sink on the Business of Software』を読んだ。ソフトウェアを考えて開発して売るまでのやりかたや落とし穴についてのはなし。副題は「革新的ソフトウェア企業の作り方」だけど、個人的には「革新的」というよりは地に足がついてる感じをうけた。
Eric Sink は SourceGear でソースコード管理システムなどの Windows 開発者むけソフトウェアを開発しているひと。なのだけど p.64 でおそろしいことが
それでこの流れに飛び乗って、オープンソースのオフィススイートを作る AbiSource を立ち上げ、ワープロソフトの開発に取りかかった。
AbiWord 作ってたのか!ちなみにこの章のタイトルは「もっと失敗しよう」で、AbiWord は「ビジネスにならなかった」とされている。
『My Job Went To India』を読んだので Plagger をさわってみた。
http://plagger.org/trac/wiki/PlaggerCommitterGuidelines をみて gist のページを plagger タグつきで Delicious に登録してみたけど、これで良いのでしょうか?
日曜日は WEwLC 読書会でサイボウズラボ。発表してきました。
一通り訳してからスライドを作って、当日は訳はあまり参照せず。でも、スライドをベースに話したら速くなりすぎたような気がしたので、次は訳文をベースにスライドは補足にという分担で話そうと思いました。
12章
- ピンチポイントにとりあえずテストを書く: Facade 的なところを押さえれば、Facade の中をいじるときにある程度支えになる。
- private メソッドのテストは、public メソッドから呼ばれるんだからいらないんじゃないか、的な話はありがちで、そこらへんを思い出した。バグの有無が分かるだけでもまずは良いよね。ただ後々 Facade の中にもテスト書けばバグの場所までわかりやすくなるのでなお良い。
13章
14章
- ライブラリへの依存関係はみんな切り離す感じらしい。おれは仕事でちょっと切り離しつつ「やりすぎかなー」と思ってたので、やや自信がついた。
15章
- 発表した。
- Wiki にも書いたけど Skin and Wrap で wrapper と元のクラスとが is-a なのか has-a なのかよくわからなかった。mock じゃなくて wrap なので has-a かなー。個人的には Skin and Wrap はほとんどやったことがない。
16章
- 突然コードリーディング的な章。
- Scratch Refactoring とか、新人研修とかでやるのは楽しそうだと思いました。
17章
- No Structure なものをいじるというよりは「そう感じられるけど実は No Structure じゃない」ということを認識する感じ。コミュニケーション論というか。
- Naked CRC って名前くらいは書きなよ、と思ったんだけど、あれは机の上の消しゴムとかコーヒカップとかを移動してああだこうだするようなシチュエーションについて語っていたっぽい。「もう CRC って呼ばないでいいじゃん」というはなしになった。
- 物語度高めの Conversation Scrutiny は関西弁に訳されていた。すごい。
18章
- IDE だと並び順が、的な話は Emacs 使ってる側からするとあんまり。
- 実コードのファイル名からテストが書かれたファイル名を (その逆も) 機械的に求められるようにするのは、適当なキーに切り替える関数を割り当てられて良いかも。rails.el は出来るんだっけ?
19章
- OOPL じゃない場合。といっても OOPL でも OOP じゃなく書けるのがほとんどなので、言語はそんなに重要じゃないと思う。
- 提示される策は C じゃないひとが考えた感じがした。xUnit 系は C3 あたりが起源らしいけど、むかしの Unix 系のコードをさがすと単体テストも見つかりそうな気がする。手元のコードを grep してたら memcached-1.2.5/stats.c は #ifdef UNIT_TEST があった。
- 会社の C 愛好家が「C++ で良いのは namespace だ」と言ってたのを思い出した。globalResultNotifier もやりたいことはたぶん namespace で出来ると思う。
懇親会ではなぜか REST, OpenID のはなしをしたり (IdCon 行こうかな)、Excel のはなしをしたり (いつも通り) していました。
時間的に間が空いたのが目で見えるのはわれながら良いな。まあ、横にカレンダーでもつければ代替可能だけど。
いま日記をかいてるこのシステムを作ったときは、一年かけていろいろ機能追加するつもりだったんだけど、実際やってみるとめんどくさい。来年は自作しないで、べたべたに WordPress でも使おうかと思っている。
http://jp.makezine.com/blog/2008/09/make_tokyo_meeting_02.html
11/8 多摩美 八王子キャンパス
出展者の募集は 9/16- なのでいまから作って応募ってわけにはいかないけど、Arduino か iPhone で小ネタくらいは作ってもっていて人に見せたい。
http://googlemac.blogspot.com/2008/09/platforms-and-priorities.html
The initial public beta release of Chromium (the open source project for Google Chrome) builds and runs on Microsoft Windows, but we are actively working on versions for Mac OS X and Linux as well.
http://src.chromium.org/svn/trunk/ から checkout できるっぽい。Google の開発手法に興味がある人々には http://dev.chromium.org/developers/testing とか http://codereview.chromium.org/ とか良いかも。
Google Chrome みたよ。インクリメンタルサーチでスクロールバーに色がつくとことか、リンクにマウス乗せたときの URI の表示とか、最大化するとタイトルバーが細くなるとか、いろいろとよくできてる。OS 標準を無視しすぎだけど。
引数で --app=URI でタイトルバーとかが消えるので Prism, Fluid みたいにも使える。ブラウザからシームレスにサイト専用ブラウザができるのは、Safari の Web クリップなんかも似てるような。
インスペクタは Apple からもってきてる。Resources/Inspector/inspector.html には
Copyright (C) 2006, 2007, 2008 Apple Inc. All rights reserved.
とはいっている。
V8 はビルドが Scons なのが目新しい。ネイティブコードまわりをちらみしたら Sun の名前があってびっくりしたけど http://code.google.com/p/v8/source/browse/trunk/LICENSE にちゃんと "Strongtalk assembler" ってあった。
http://code.google.com/p/v8/source/browse/trunk/src/assembler-ia32.h の XMMRegister で http://google.com/codesearch?q=XMMRegister すると JDK が出てくる。
あと jscre (JavaScriptCore's variant of the PCRE library) と dtoa (double-to-ascii, 倍精度小数点数の文字列への変換) が外から。
しかし WebKit のひとが SquirrelFish とかやってるのに V8 なんてよくやるよなー。こわい。JavaScript 部分さしかえって大仕事だと思うんだけど (読んでないです)
前のアルバイト先のひとに「RFC は数行に一回ヘッダがはいったりなんか古い感じのフォーマットですよねー」というはなしをしたら「あれはちゃんとフォントサイズとか余白とか設定するときれいにそろうし Ctrl+L の改ページコードもはいってる」と教えてもらった。
で、会社のひとにそのはなしをしたら http://tools.ietf.org/html/rfc2223 を教えてもらって、あと http://tools.ietf.org/html/rfc2629 をみつけた。
http://openid.net/developers/specs/ は実は RFC っぽいフォーマットのテキスト版も提供されている。Yadis は http://yadis.org/wiki/Yadis_1.0_(HTML) に
The HTML version has been automatically generated from the OpenOffice document with Export to MediaWiki export plugin.
なんてあるから OpenOffice フォーマットがソースっぽい。newtype すぎだろ。
ちなみに REST 本は読みかけです。S3 のあたりまでは読んだと思う。
http://yohei-y.blogspot.com/2007/10/atompub-rfc-5023.html
AtomPub は全ての、とはいかないまでも、多くの Web サービスのベースとなることができるプロトコルです。たとえば blog 、何らかのデータベース、画像/映像リポジトリ、 Wiki、カレンダー、ソーシャルブックマークなど、title/author/updated というメタデータがあって、その読み書きができるサービスは全て AtomPub ベースの API を出せる可能性があるでしょう。
2007年に youhei さんが書いてた。
Twitter クローンだったら Twitter にそろえてほしい気もするけど、そういう先行者との互換性を抜きにすれば、大抵の CRUD 系は AtomPub で乗り切れる気がしている。
http://github.com/kzys/memcacheb/tree/master
最近 memcacheb というのを作りはじめました。Web ブラウザから memcached の中身をのぞける Web アプリケーションで、いまのところ表示と削除ができます。作成と更新はこれから。
Subversion が Lisp みたいなフォーマットで通信しているのは、まえに ukai さんの書かれた http://ukai.jp/debuan/2003s/subversion-arch.txt を見たので知っていたんだけど、IMAP にも Parenthesized List なんてものがあった。さらに NIL もあるよ!
FOAF に OpenID のはなしがはっているというので読んだ。
http://xmlns.com/foaf/spec/
はじめてまじめに読んだんだけど icqChatID, msnChatID, aimChatID, jabberID, yahooChatID とかあってびっくりした。OnlineAccount は普通だと思うんだけど、なんでそれを特殊化 (スキーマの文脈でなんて呼ぶのかわからない) して各サービスむけに要素を定義してるんだろう。
has-a ですむものがあらゆる is-a になってるプログラムをみた気分。
Web 2.0 Expo って今年もやるんですね。
http://www.cmptech.jp/web2expo/outline/
私たちはWeb2.0の戦略だけではなく、デザイン、プログラミング、オペレーション、そしてバイラルマーケティングまでを視野に入れて取り組んでいきます。限られたエリア(空間・領域)で模倣している会社としてではなく、真の勝者になろう!
真の勝者!こんなキャラだったっけ…。
http://kaoriha.org/nikki/archives/000469.html
東は「賞を獲るなんて簡単だ、沖縄方言を書けばいい」と長らく信じていて、それを『オキナワの少年』で実行したら狙いどおり芥川賞、東は「やっぱりだ」と号泣したという。
http://d.hatena.ne.jp/jun-jun1965/20080809
その作家の四年前の随筆集『貧の達人』(たま出版)を読んで、衝撃を受けた。知っている人は知っているのだろうが、この作家は明らかに精神を病んでいる。宇宙人がどうとか言うのも、ちょっとしたオカルト好きの範疇ではない。
Twitter も FriendFeed もフィードがあるんだから、Michael Arrington は Google Reader で個々のユーザーを直接読めば良いんじゃないかと思った。
ホームとか Dashboard とか呼ばれるものには、いくつかログインユーザーにしか表示できないものも混じっている。Twitter だったら protected な人とか。
Pownce は個人的なフィードのアドレスにパスワード的なものを含めることで、これを解決しようとしていて、例えばおれのプライベートなノートのフィードは http://pownce.com/feeds/private/kzys-foo12bar.rss みたいなアドレスになる。foo12bar が "secret key" で http://pownce.com/settings/secret_key/ で確認できる。
http://youkoseki.com/text/solitary_community
データの山から有意な情報が発見されると、キャリアがガジェットへ配信するコミュニティ・ニュースに表示される。タケルとコスモが友達になりました、テニス部の三人が映画に行きました、おめでとうタケルとコスモは恋人に進化しました、ハルオが駅前のカフェ「ボアーズ」をお気に入りにしました、あいにくですがタケルとコスモは破局しました。
http://jp.techcrunch.com/archives/20080806an-evolving-cultural-curiosity-we-need-a-fake-follow/
つまり私が言いたいのは、TwitterもFriendFeedも友だちをグループ化したり、希望に応じて友だちの一部だけ近況を追える何らかの仕組みを整備する必要がある、ということだ。それかもっと手っ取り早いアプローチは「Fake Follow(偽フォロー)」、これをくれ。
「ホームのマイミクシィ最新日記の表示」みたい。Michael Arrington は業界人だから特殊な気もするけど、日本以外でもそういうものを求めている人がいるとは思わなかった。
友人である == このひとの日記・最近聴いた音楽・ブックマーク・"What are you doing now?" に興味があるってのはどのくらい正しいんだろう。「興味」のとりあつかいが一律同じなのがまずいのかもしれない。
個人的には、友人が新しいサービス X を使いはじめたのは知りたいけど、その X 上での更新情報を常時配信するかは選択肢がほしい。ただ、そうやって友人の情報をどう扱うかをコンピュータに伝えるには、それを自分のなかで明確にする必要があって、それは少し躊躇があるかもしれない。
http://outsiders.cocolog-nifty.com/long_tail/2005/07/post_0b72.html
友達"は特に趣向に関してはとっても無愛想な装置だ。悲しい事に、僕の友達のほとんどは音楽に関しては不快な趣向を持っている(だからと言ってそれを彼らに向けるわけではない)一方、僕が頼っている音楽のレコメンデーションのほとんどは一度も会ったことのない人達だ、Rhapsody編集者かMP3ブログか。
こっちはレコメンデーションのはなし。
CPAN のはなしは他の人としていたので、こっちにも転載。
http://clip.livedoor.com/page/http://blog.8-p.info/2008/90
単にCPAN Authorになっただけではダメで、「社内で認められる、役に立つもの」を作ってないと手当てはもらえないんだけどね、実は。
DreamHost にドメインもサーバーも任せていた 8-p.info, blog.8-p.info, hg.8-p.info, svn.8-p.info を、ドメインは全部 VALUE DOMAIN に、サーバーは 8-p.info だけ Slicehost に引越中。メールサーバーはこわいので 8-p.info には置かず、VALUE DOMAIN で Gmail に転送することにした。
こういう作業をすると、おれのインターネット理解の浅さを実感する。HTTP は分かっているつもりだけど DNS は全然だめだ。
oEmbed は JSONP むきの小ネタだと思うんだけど、JSONP は仕様にはいっていない。
http://oohembed.com/ が JSONP なプロキシとして使えるらしいんだけど、ぜんぶのリクエストが oohEmbed に飛ぶのは設計としてきれいではないし、やっぱり仕様にいれてほしい。
oEmbed
oEmbed is a format for allowing an embedded representation of a URL on third party sites.
Lingr には YouTube のビデオの URI をはるとその場で展開する という機能がある。あるいは、はてなの http 記法でニコニコ動画貼付 とか。
oEmbed は、この類の機能を汎用的に (各サービス毎にコードをかき分けずに) 実現できる仕様らしい。
月曜に休んじゃったせいか、明日が金曜というのが信じがたい。
Web アプリケーションを作りたいという気持ちが高まってきて Slicehost で VPS ひとつ契約したのが 8/8 で一週間前の金曜。8/7 は帰りそこねて、Paul Graham のアジテーションを読みながら Hacker News の AutoPagerize SITEINFO を書いたりしていました。
と、ひとごとのように書いたら Ishan さんからメールがきてる件について。
Everyone's bookmarks for "GreasePocket Blog" on Delicious
hmm how do you think about it? > kzys
限定された環境こそユーザースクリプト重要というのは誰かがどっかで書いてて、GreasePocket も便利そう。動画をみるぶんには自前ブラウザっぽい。WebView つかって、読み込み後に特定の JavaScript を実行するブラウザ。
GreaseKit はあらゆる WebKit アプリに寄生するためと、当時お気に入りだった Safari を再実装しないために Input Manager (LD_PRELOAD みたいなやつ) でやっていて、もし GreasePocket がこのまま Mobile Safari を再実装するとしたら結構大変そうだと思う。
さらに再実装したとして App Store に出せるかどうか。前に Firefox が iPhone に載せられないとかで Mozilla のひとが怒ってたけど、WebKit つかった汎用ブラウザはどうなんだろう。さすがに出せるかなー。
こうやって Apple 様のお考えをうかがうのは「Web ではない」ので面倒だけど、Nintendo DS とかに比較すればまだかわいい。と、都合よくいろんな比較対象を持ち出すのが信者っぽい。
ストリートビューに、うちのベランダに干してある洗濯物が写っている。
第三回 WEwLC 読書会懇親会
- ペンギン本読んだ。Python は紙媒体に書くのにコンパクトだしリスト内包表記も統計むき便利。でもレコメンとか計算多いので実際にやるとしたら遅い。
- 「delicious がっかり」「Google ブックマーク便利」「自作だろー」
- 会社コードと自分コードと
- 『エンジニアのためのWord再入門講座』のひとはもともとは UNIX のひと
- Excel カンファレンスはプレゼンテーションも Excel しばりで
- MagicPoint のひとは、いまは 別の WYSIWYG なプレゼンツール を作っている
- less プレゼンってあったよね
- Prophet が Perl だったので読むのをあきらめた
- CPAN Author は別に審査も無いのに「一人前として認められた」感があるのがすごい。livedoor が手当だしたりしてるからかな。
- 弾さんでプログラマ出世マンガ「現在は執筆活動など」
- Object Mentor, Inc. での Michael の立ち位置を妄想
- サンプルコードの無意味なバリエーションはやっぱり実話に基づいているのか
時間がたつと忘れがち。
その WEwLC (Working Effectively With Legacy Code) の読書会の第三回。今回は遅刻したけど一応皆勤、なのに一度も発表していないです。次回こそ。
9章:
- 囲みの "Test Code vs. Production Code" のからみで、テストコードの重複は気にするか否かという議論があった。おれは気にするけど、あえて愚直に書くという派もあるらしい。でも「関数を追うのはわかりにくい」は OOP 禁止令の近所な気がする。
- テストの粒度というか、モックで前後を固めたらリファクタリングの影響するコード量が増えて良くなかったという話もここで。
- Global Dependency として出てくる Singleton でいろいろ。つーかグローバル変数だしね。GoF のひとはそろそろだめなパターンについて総括してほしいとか。
- (designpattern-users.jp とかいま思いついた。まぁ、あのフォーマットに乗る必要は今更ないと思うけど、位置づけとしてはああいう)
- C++ のはなしは、個人的には、本の中でやろうとしていることがよくわからなかった。
- 既存のコードへのテストはホワイトボックステストになりがち、というはなしも。
10章:
- CCAImage はテストのためにカプセル化をゆるめるのはどうよという議論が。
- final クラス (Java, 継承できない) はみんな思い出があるらしい。意思の感じられない final クラスとか、迷信に基づく高速かの final クラスとか。
- GUI のテストは書くのが偉いと思った。Frame 継承するのかというのはさておき。
11章:
- 例1がコードジェネレータなこと、いまひとつ活用されてない effective sketch, 例2の実装のひどさとつっこまれまくり。
12章:
- effective sketch の続きらしく抽象的な話とチラ見せのコードとで進むので、みんな困っていた。
ほかの読書会がどうなのかは知らないけど、WEwLC は発表方法にしばりがないのも面白いです。説得じゃなくて議論のためのプレゼンとか、いろいろ考えたくなる。
C より Python のほうが読みたいので Git じゃなく Mercurial が好きなんだけど、それはそれとして GitHub は良さそうなので最近アカウントをとった。
WEwLC 読書会の懇親会でも GitHub のはなしをした。SourceForge, Google Code ではプロジェクトの下にぶらさがってたのが、人の下にプロジェクトがぶらさがってて、とかそういう。
そう言い聞かせてアカウントをとったところなので、実感としてはちゃんとわかっていない。落ち着いたら、なにかレポジトリを置いてみようと思う。
iPhone 購入。キャリアのメールを使うために IMAP サーバーと SMTP サーバーのアドレスを自分で入力する携帯電話なんて!
店員がかわいかった (中川翔子に似ていた)
アドレス帳の引継は 小野マトペさんの書かれたスクリプト をいじったものを使いました。ありがとうございます。
http://gist.github.com/3821
というわけで private タグをつけてまわってるんですが、Google ブックマークって既存の項目を編集するとリロードかかるよー。好みじゃない!
ほとんどタグいじらないから気づかなかった、ってつまり todo タグを消化してないという。
しかし Google ブックマークは UI も好みなので、移行はむずかしい。
ブックマークの一覧:
★ Foo
★ Bar
ここで削除すると (もちろんページ遷移無しに) Foo の ★ が ☆ になる
☆ Foo
★ Bar
ここで ☆ をクリックするとまた ★ に戻って、つまりアンドゥなのです。
Twitter 使っている人だと Fav 一覧と同じっていえばいいか。これ良い。
Google にログインしてブックマークのフィードとってラベルで検閲して 8-p.info にコピー、が簡単さ (自分で書くコード少ない) と便利さ (Google ブックマーク) と正しさ (公開) のちょうどなバランスだと思いました。
http://blog.bulknews.net/mt/archives/002063.html
no strict ぜんぶじゃなくて、no strcit 'refs' だけを許可することもできるのか。
# no strict 'refs'
[TestingAndDebugging::ProhibitNoStrict]
allow = refs
テストがこけたら ## no critic する、みたいなデファクトスタンダードが確率されると元も子もないので、個々のコードで ## no critic するより全体の厳しさを狭めに下げるほうが良い気がしてきた。
こういう細かい設定は
% perldoc Perl::Critic::Policy::TestingAndDebugging::ProhibitNoStrict
でみれる。
CPAN にある Data::ObjectDriver 0.05 の make test がこける。http://code.sixapart.com/svn/Data-ObjectDriver/trunk/ にある最新のものだと直っているので、そのうち CPAN にリリースされるんだろう。
http://code.sixapart.com/trac/Data-ObjectDriver/changeset/471
変更点は
- eval "..." → eval { ... }
- return undef → return (うちだとこけなかった)
と、あと ProhibitNoStrict を t/98-perl_critic.t で指定しているんだけど、個人的には
Index: lib/Data/ObjectDriver/Driver/Cache/Memcached.pm
===================================================================
--- lib/Data/ObjectDriver/Driver/Cache/Memcached.pm (revision 511)
+++ lib/Data/ObjectDriver/Driver/Cache/Memcached.pm (working copy)
@@ -39,7 +39,7 @@
return $ret;
};
- no strict 'refs';
+ no strict 'refs'; ## no critic (ProhibitNoStrict)
*{join q{::}, __PACKAGE__, $driver_method} = $sub;
}
Index: lib/Data/ObjectDriver/Driver/DBD.pm
===================================================================
--- lib/Data/ObjectDriver/Driver/DBD.pm (revision 511)
+++ lib/Data/ObjectDriver/Driver/DBD.pm (working copy)
@@ -10,7 +10,7 @@
my($name) = @_;
die "No Driver" unless $name;
my $subclass = join '::', $class, $name;
- no strict 'refs';
+ no strict 'refs'; ## no critic (ProhibitNoStrict)
unless (defined ${"${subclass}::"}) {
eval "use $subclass"; ## no critic
die $@ if $@;
のほうが厳しさが保たれるので好き。Six Apart くらいだと PBP がなんぼのもんじゃーい、なのかもしれない。
RT をみると http://rt.cpan.org/Public/Bug/Display.html?id=37197 に
perlcritic test is failed. please don't include t/98-perl_critic.t in distribution package.
って tokuhirom さんが書いてた。PBP がなんぼのもんじゃーい。
Google ブックマークはブックマークしたサイトの全文検索があって公開が無い。公開できる Google ノートブックはブックマークしたサイトの全文検索が無く、Google Shared Stuff はそもそも検索が無い。
さがしていたら Yahoo! ブックマーク が全文検索と公開を兼ね備えていた。試す。
http://www.macotakara.jp/blog/index.php?ID=623
デベロッパーは、iPhone シミュレータ上でしか確認することが出来ず、実機での検証は、App Storeから購入しないと検証出来ないという信じられない状況なので、そうゆう状況を招いたApple側がお詫びするのが普通だと私は思います。
さすがに「シミュレータのみ」まで酷くはなかったと思います。
http://developer.apple.com/jp/iphone/program/details.html
更にiPhoneデベロッパプログラムにお申し込み頂くと、iPhone実機上でコードを検証したり、App Store経由でフリーウェアや商用アプリケーションのいずれも配布したり、Ad Hoc配布チャネル経由で友人、家族、同僚に配布したりすることもできます。
http://anobar.jp/
製品そのものは良いと思うけど、サイトの 不動産コピー 感がすごい。
kanasan.js サイ本読書会#5に参加してきた
yharaさんの作成中のサービス、ブックマークレットをブックマークレットから選択できるサービス。便利そう。
それ blummy?
http://www.nicovideo.jp/watch/sm1780019
借金借金!
映像はなんなんだろうと探してみたら、The Great Swindle という労働組合の勧誘映画で、Prelinger Archives にあった。
タクシーの乗り方を学んだ。X が運転手で / がドア。数字が小さい人が偉い。
/4 X
/231
Leopard + GNU screen 問題つづき。
http://www.opensource.apple.com/darwinsource/10.5.4/screen-12/patches/ の screen.c.diff ってのが問題の patch です。ここらへんの patch があたった screen を make すると
% wget http://www.opensource.apple.com/darwinsource/tarballs/other/screen-12.tar.gz
% tar xf screen-12.tar.gz
% cd screen-12
% ls
Makefile screen/ screen.plist
patches/ screen-4.0.3.tar.gz
% make
Configuring screen...
this is screen version 4.0.3
checking for gcc... gcc
...
Building screen...
CPP="gcc -E " srcdir=/Users/kzys/screen-12/screen sh /Users/kzys/screen-12/screen/osdef.sh
AWK=awk srcdir=/Users/kzys/screen-12/screen sh /Users/kzys/screen-12/screen/comm.sh
AWK=awk srcdir=/Users/kzys/screen-12/screen sh /Users/kzys/screen-12/screen/term.sh
gcc -c -I. -I/Users/kzys/screen-12/screen -arch ppc -arch ppc64 -arch i386 -arch x86_64 -g -Os -pipe -mdynamic-no-pic -DRUN_LOGIN -fno-altivec /Users/kzys/screen-12/screen/sc\
reen.c
/Users/kzys/screen-12/screen/screen.c:106:24: error: vproc_priv.h: No such file or directory
/Users/kzys/screen-12/screen/screen.c:106:24: error: vproc_priv.h: No such file or directory
/Users/kzys/screen-12/screen/screen.c:106:24: error: vproc_priv.h: No such file or directory
/Users/kzys/screen-12/screen/screen.c: In function 'main':
...
lipo: can't open input file: /private/tmp/ccag3ag8.out (No such file or directory)
make[1]: *** [screen.o] Error 1
make: *** [build] Error 2
%
こけて、vproc_priv.h は launchd-258.12.tar.gz にはいっている。launchd は ADC にはいってないとダウンロードできません。
screen.c.diff が使っている _vprocmgr_move_subset_to_user を呼び出すちいさいプログラムは書けました。
#include <stdio.h>
#include <unistd.h>
#include "libvproc_public.h"
#include "libvproc_private.h"
#import <Cocoa/Cocoa.h>
int main(int argc, char* argv[])
{
NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
uid_t user = geteuid() ? geteuid() : getuid();
char* session_type = argv[1];
if (_vprocmgr_move_subset_to_user(user, session_type) == NULL) {
NSLog(@"_vprocmgr_move_subset_to_user(%d, %s)\n",
user, session_type);
} else {
return 1;
}
NSLog(@"pasteboard = %@", [NSPasteboard generalPasteboard]);
[pool release];
return 0;
}
これに Types of launchd agent の Session Type を与えると
% cc -I ~/launchd-258.12/launchd/src vprocmgr.m -framework Cocoa
% ./a.out Aqua
2008-07-25 23:09:58.377 a.out[46550:10b] _vprocmgr_move_subset_to_user(501, Aqua)
2008-07-25 23:09:58.379 a.out[46550:10b] pasteboard = <NSPasteboard: 0x10afe0>
% ./a.out StandardIO
2008-07-25 23:10:01.393 a.out[46554:10b] _vprocmgr_move_subset_to_user(501, StandardIO)
2008-07-25 23:10:01.395 a.out[46554:10b] pasteboard = <NSPasteboard: 0x10ab30>
% ./a.out Background
2008-07-25 23:10:05.448 a.out[46558:10b] _vprocmgr_move_subset_to_user(501, Background)
2008-07-25 23:10:05.450 a.out[46558:10b] pasteboard = (null)
% ./a.out LoginWindow
2008-07-25 23:10:12.608 a.out[46562:10b] _vprocmgr_move_subset_to_user(501, LoginWindow)
2008-07-25 23:10:12.610 a.out[46562:10b] pasteboard = <NSPasteboard: 0x10ab40>
%
Background にするとペーストボードにアクセスできないのは再現できる。
http://cybozu.co.jp/events/10th/pathtraq/
サイボウズ10周年記念サイトの Pathtraq ページにある
- 複数の Web サイトのニュースをまとめてアクセスランキングチェックができます
- サイトに来た人がどこからきてどこへ行ったか追うことができます
- ひとつのサイト内での人気ページが分かります
これらは pathtraq.com のはなしで、ツールバーを使う導線になっていないのをみて、こう、大変そうだなーと思った記憶がある。
ひっそりと書いてある
【Q】行動追跡されちゃうの?【A】いいえ。アクセス統計のみ行います。
も意味がわかりづらい。
http://bazaar.launchpad.net/~drizzle-developers/drizzle/development/revision/94
DOS removal. DOS... hard to believe aye?
Drizzle の変更履歴をながめてたら MS-DOS 対応が削除されててうけた。
http://yui.yahooapis.com/2.5.2/build/reset/reset.css
YUI Rest CSS は
html{color:#000;background:#FFF;}
しているので注意。ページ全体の背景色を変更するときは body ではなく html に background-color を指定する必要がある。
body に background-color を指定しても (ブラウザに縦スクロールバーが出ないくらいに) body が短いと、ページ全体が塗りつぶされず下に白色の部分が残る。
まえに友達の家で見た松岡修造のビデオ、あれ公式サイトにあったのかー。
use strict;
use warnings;
use Web::Scraper;
use URI;
use LWP::Simple;
sub non_flv_files {
my ($uri) = @_;
my $scraper = scraper {
process '//select[@name="mySel"]/option', 'links[]' => '@value'
};
grep {
$_ && $_ !~ /^javascript:/
} @{ $scraper->scrape(URI->new($uri))->{links} };
}
sub flv_files {
my ($uri) = @_;
my $html = LWP::Simple::get($uri);
my @result;
while ($html =~ m{message/shuzo(\d+)\.html}g) {
push @result, "http://www.shuzo.co.jp/video/matsuoka/matsuoka_$1.flv";
}
@result;
}
map {
print "$_\n";
} (non_flv_files('http://www.shuzo.co.jp/contents.htm'),
flv_files('http://www.shuzo.co.jp/_js/js.js'));
小西真奈美の「今日の大丈夫。」をちょっと思い出した。
Leopard の /usr/bin/screen には Apple の patch が当たってて、pbcopy, pbpaste とか動かないし、アプリケーションを直接起動するのも失敗する。MacPorts からいれるなり自分で make するなり、避けて生活するのが無難。
% /Applications/TextEdit.app/Contents/MacOS/TextEdit
2008-07-05 00:32:54.430 TextEdit[1222:10b] ****** Returning nil _server **********
patch では、プログラムを launchd 用語の "background session" とやらで動かすように変更していて、それと Technical Note TN2083 にある AppKit が Deamon Safe じゃないあたりが関係してるんじゃないかと思っている。まだちゃんと調べきれていない。
Unit Testing iPhone apps with Ruby: rbiphonetest
Objective-C で書いたクラスについて、RubyCocoa で Ruby インタプリタのなかでインスタンスを作って、Test::Unit でテストを書くらしい。Objective-C だけでも OCUnit でテストは書けるので、それと比較したメリットがよくわからなかった。
今日役に立った Mac 豆知識: アプリケーションの設定は大抵 ~/Library/Preferences にはいるので、最近インストールしたアプリケーションの設定を一度クリアしたいときは
% ls -t ~/Library/Preferences | head
で見て、それらしいファイルを消す。
http://hg.8-p.info/dotfile/file/d1217a2209f5/emacs#l145
Objective-C も Xcode はほとんど使わず Emacs で書いています。
http://www.foldr.org/~michaelw/objective-c/objc-c-mode.el をつかうとメソッドの : がそろうようにインデントできる。
あと、ヘッダの拡張子が .h で素の C とかぶるので、@end がふくまれていたら objc-mode で開くよう magic-mode-alist も設定した。
携帯電話にはだいたい5,000円/月ほど払っていて、iPhone 買うと+3,000円くらい。一日あたり+100円であり、1日コーヒー1杯の値段で、えー。
iPod touch のほうが板っぽくて見た目は好き。でもどこでもネットワークにつながって GPS がついてカメラがついて、となると迷う、というかかなり iPhone 寄りになる。
Cocoa 関係で持っている本は『Happy Machintosh Developing Time Second Edition』と『Mac OS X Cocoa プログラミング』のふたつ。
前者は http://hmdt.jp/ の木下さんの本で、派手でかけあし。後者は Aaron Hillegass のいわゆる「ヒレガス本」で、地味で堅実。あと大学図書館で『入門 Cocoa』を読んだ記憶がある。
Web だと http://cocoadevcentral.com/ がきれいで親切、というと読み込んでるみたいですが、そんなに読んでいないです。良さそうだからあとで読む。
Objective-C で hello world してみる。
#import <Foundation/Foundation.h>
int main(int argc, char* argv[])
{
NSLog(@"hello world");
return 0;
}
ふつうですね。 #import は #ifdef ガードつきの #include で、@"hello world" が NSString です。
% gcc -Wall a.m -framework Foundation && ./a.out
2008-07-17 22:55:03.955 a.out[35063:10b] hello world
%
あー、NSLog はログをだすときの関数なので出力がごてごてしてる。printf デバッグには便利です。
あえて Objective-C で hello world 書くとしたらどうなるんだろう…。
#import <Foundation/Foundation.h>
int main(int argc, char* argv[])
{
NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
[@"hello world\n" writeToFile: @"/dev/stdout"
atomically: NO];
[pool release];
return 0;
}
長い!writeToFile:atomically: の第二引数を YES にすると、ファイルへの書き込みを atomic にするために、一時ファイルに書き込んでからリネームするようになります。ここではそうされると困るので NO で。
% gcc -Wall a.m -framework Foundation && ./a.out
hello world
%
うごきました。次は NSAutoreleasePool か NSLog のはなしをします。
MacRuby をためしてみた。MacRuby は Apple の Laurent Sansonetti (lrz) が中心となって開発している Ruby 実装で、くわしくは http://chopine.be/lrz/talks/RubyKaigi2008.pdf をどうぞ。
% svn co http://svn.macosforge.org/repository/ruby/MacRuby/trunk MacRuby-trunk
...
Checked out revision 380.
% cd MacRuby-trunk
% rake
...
compiling socket
rake aborted!
Command failed with status (): [./miniruby -I./lib -I.ext/common -I./- -r....]
/Users/kzys/src/MacRuby-trunk/rakefile:519
(See full trace by running task with --trace)
%
こけた。rake してみる。
% rake
...
compiling socket
generating constants.h
...
making macruby
make: Nothing to be done for `macruby'.
%
あ、通った。自動生成するコードの依存関係が変なんでしょうか。
% ./macruby
dyld: Library not loaded: /Library/Frameworks/MacRuby.framework/Versions/0.3/usr/lib/libmacruby.dylib
Referenced from: /Users/kzys/src/MacRuby-trunk/./macruby
Reason: image not found
zsh: trace trap ./macruby
% otool -L macruby
macruby:
/Library/Frameworks/MacRuby.framework/Versions/0.3/usr/lib/libmacruby.dylib (compatibility version 0.3.0, current version 0.3.0)
/usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 111.1.1)
%
/Library/Frameworks に置けばいいんだろうけど、開発中のものを sudo rake install するのもなー。
% rm macruby
% rake
...
/usr/bin/gcc -I. -I./include -I/usr/include/libxml2 -arch ppc -arch i386 -fno-common -pipe -O2 -g -Wall -Wno-parentheses -Wno-deprecated-declarations -Werror main.o gc-stub.o -L.
-lmacruby -o macruby
...
%
macruby がフレームワークをリンクしているわけではない。
% rm *.dylib
% rake
...
/usr/bin/gcc -I. -I./include -I/usr/include/libxml2 -arch ppc -arch i386 -fno-common -pipe -O2 -g -Wall -Wno-parentheses -Wno-deprecated-declarations -Werror array.o bignum.o class.o compar.o complex.o dir.o enum.o enumerator.o error.o eval.o load.o proc.o file.o gc.o hash.o inits.o io.o marshal.o math.o numeric.o object.o pack.o parse.o process.o prec.o random.o range.o rational.o re.o regcomp.o regenc.o regerror.o regexec.o regparse.o regsyntax.o ruby.o signal.o sprintf.o st.o string.o struct.o time.o transcode.o util.o variable.o version.o blockinlining.o compile.o debug.o iseq.o vm.o vm_dump.o thread.o cont.o id.o objc.o bs.o encoding.o dln.o dmyext.o enc/ascii.o missing/lgamma_r.o prelude.o -lpthread -ldl -lxml2 -lobjc -lffi -lauto -framework Foundation -dynamiclib -undefined suppress -flat_namespace -install_name /Library/Frameworks/MacRuby.framework/Versions/0.3/usr/lib/libmacruby.dylib -current_version 0.3 -compatibility_version 0.3 -o libmacruby.1.9.0.dylib
...
%
ここか。install_name をはずしてみる。
% /usr/bin/gcc -I. -I./include -I/usr/include/libxml2 -arch ppc -arch i386 -fno-common -pipe -O2 -g -Wall -Wno-parentheses -Wno-deprecated-declarations -Werror array.o bignum.o class.o compar.o complex.o dir.o enum.o enumerator.o error.o eval.o load.o proc.o file.o gc.o hash.o inits.o io.o marshal.o math.o numeric.o object.o pack.o parse.o process.o prec.o random.o range.o rational.o re.o regcomp.o regenc.o regerror.o regexec.o regparse.o regsyntax.o ruby.o signal.o sprintf.o st.o string.o struct.o time.o transcode.o util.o variable.o version.o blockinlining.o compile.o debug.o iseq.o vm.o vm_dump.o thread.o cont.o id.o objc.o bs.o encoding.o dln.o dmyext.o enc/ascii.o missing/lgamma_r.o prelude.o -lpthread -ldl -lxml2 -lobjc -lffi -lauto -framework Foundation -dynamiclib -undefined suppress -flat_namespace -current_version 0.3 -compatibility_version 0.3 -o libmacruby.1.9.0.dylib
% rm macruby
% rake
...
% ./macruby
うごいた!
% ./macruby -e 'p "hello".class.ancestors'
[NSCFString, NSMutableString, NSString, Comparable, Object, NSObject, Kernel]
おおお。なんかはさまってる!
まわりの人がブログを書いていなくてさみしい。昔よく読んでいた人も、最近知り合ったひとも、なんかみんな書いていない。よくわからないけど、自分は前みたいに書こうと思い直した。
そもそも Web に断片的な情報ばかりが散在していくのが嫌で、せめて 8-p.info にはまとまった文章を置いて、通知だけをフィードで読めるところでやろうとしてたんだけど、やっぱりこれは詰まりました。
もっとここをブログっぽくしたい。
いままでこのシステムには Twitter をみならってエントリの再編種はなかった (CRUD の CR しかない) のだけど、ちょっと書きにくいので、これから実装する。
前哨戦として OpenID の RP になれるようにした。あとはログイン成功したらセッションつくって、とかしよう。
土日がろくに休めなかったので月曜はぐったりしてたけど、夜は寝たので、今日はふつう。
http://hg.8-p.info/dotfile/rev/e486c35bf917
anything.el でファイルを開こうとして、候補に /PATH/TO/VERY/DEEP/DIR/foo があって、でも開きたいのは /PATH/TO/VERY/DEEP/DIR/bar なときがある。
おれは anything-map, anything-type-attributes をいじって、候補表示中にタブを一回押すとアクションの選択、さらにもう一回押すと C-x C-f したとき風のファイル名入力欄にあらかじめ /PATH/TO/VERY/DEEP/DIR/foo が入力されてる、ってしてる。
で、3文字消して bar RET で開く。
Userscripts.org にスクリーンショットはアップロードできない。
HTML を書く欄はあるので、画像ファイルはどこか外に置いて、それを img src で指定すればいい。
http://userscripts.org/scripts/show/29741
会社で日報を書くとき、Trac のタイムラインから自分の commit だけをぬきだしてベースにしているひとのために、タイムラインをインクリメンタルにフィルタするスクリプトを書いた。
先週末は RubyKaigi 2008 に行ってきた。
最後に RejectKaigi に出して RejectRejectKaigi でしゃべったりしたのですが、ぜんぜんだめでした。RejectKaigi, RejectRejectKaigi 同時進行のおかげでちょっと救われたけど、聞いてくださった方々すみません。
2007年に 来年の RubyKaigi は行く と書いたのはちゃんと達成したので、次は
- Lightning Talks ないし、ちゃんと reject されてから RejectKaigi に参加する
- スタッフとして参加する
- Perl のほうに参加する
のあたりをめざします。
Base64 へのエンコードでバグをだすゆとり世代ですこんばんは。金のはなしをするのは止めたい。
つくばのはなしは今週中に書きます。
http://www.rt-shop.jp/blog/?p=11
秋葉原で Gainer とか Arduino とか買えるようになっているらしい。
外神田ビル5F ってことは 鈴商 の上ですね。
http://photozou.jp/ は自分のページに背景画像を設定できるのだけど、写真と背景がぶつかっているものがわりとある。
『レボリューション・イン・ザ・バレー』p. 63
MacPaint の作者である Bill Atkinson は、自分のデスクトップパターンを定義することをユーザーに許すのは間違いだと僕に文句を言ってきた。思ったほど見栄えの良いパターンを作るのは難しいからだ。彼は、誰かが醜いデスクトップを作ることに我慢ならなかったのだ。
Google ブックマーク良いよ。全文検索重要。写真や動画に文字列でタグをつけるのはまだしも、文字列に文字列でタグをつけるのは間違いだったんじゃないかと思いつつある。
公開できないのは一長一短。仕事関係も気にせずブックマークできるけど、みんながソーシャルブックマークを捨ててしまうと日々の情報共有に支障がでる。現状の自分は give せず take ばっかりしていて、こういう人が増えると世界は後退する。
だれでも構築運営できるコラボレーションシステムの実現 (PDF)
qwikWeb について江渡さんが書いた論文!さっき気づいたけど出たのは4月か。
http://twitter.com/bulkneets/statuses/831135347
加藤くんのことで思い出したんだけどkzys元気?
元気だけど「mala さんが元気? ってきいてるよ」って先輩にいわれた。
Catalyst のデフォルトの設定ファイルは YAML ではなく Config::General というやつになるらしい。
http://search.cpan.org/dist/Config-General/
Apache の httpd.conf みたいであんまり好きじゃない…。
ブログの世代交代ははげしい。「最近で Perl だとどこから読みはじめるといいんだろう」みたいなことを人に聞いたら
というはなしになった。
http://8-p.info/gainer-ruby/
はてなブックマークでたまにブックマークされているので、先頭に Funnel について追記した。
Perl の実装のごく一部を読みました。文法のぐだぐだを発見的手法で解決してる Perl やばい。
http://8-p.info/perl-interpolation/
最近 memcached のはなしを聞く機会があって、以来まわりのテクノロジをながめている。Consistent Hashing は Perl でやってみました。
http://8-p.info/consistent-hashing/
memcached は設計された単純さがすてきだと思います。
『Working Effectively With Legacy Code』という、テストが無いコードにいかにテストを書くかを論じている良い本があって、その読書会で横浜。
きらびやかな新テクノロジーの本ではないので、読書会中の議論も地というか沼地に足がついていて、IT 業界残酷物語みたいなはなしが多かった。その点では、新しい仕事はけっこうめぐまれているのかもなー。まあまだわからないけれど。
前の職場の人にも会って、帰りにマックでだらだらしゃべった。
http://dataportability.org/ の "Official Blog" が Tumblr な件。
iPhone Developer Program きた! 待っているあいだすごくそわそわしたので、各過程に何日かかったかをあとでまとめます。そのくらいは NDA にひっかからないと思う。思うとかいってないでちゃんと読めというはなしではある。
実機はどうしよう。iPhone はもちろん iPod touch すら持ってないんだけど WWDC までは待とうか。おれの TODO リストは LIFO 疑惑があるので、いま iPod を買うと会社クビになったりしそうです。
http://blog.hacklife.net/archives/51532138.html で紹介されている DHH の講演はみました。個人に広告出すより、超大企業でないビジネスの人達に課金するほうが現実的らしい。
そういえばイントラ向けグループウェアの類いは広告モデルじゃないな。使っていてすごい素敵で悔しい気持ちになったことがあるかっていうと、無いけど。
Web 広告のはなしを聞いた。
http://cruel.org/jwz/savers.html
じきに、読者を広告主に売り渡す仕事をするのは雑誌だけじゃなくなる。きみの上司もその一味になる。これは映画の中のタイアップ広告と同じくらいむかつく技術革新だ。思いつかないほうがいいことってのも世の中にはあるのだ。
Web サービスのほとんどは広告が収入源だ。広告なしではサーバー代も給料も払えないけど、一方でニュースサイトがひとつの記事をやたらとページングするのもきっと広告のためだ。
広告のことを忘れられたら、どのくらいサイトを良くできるだろう。いまはテレビ番組があって映画が無い状態で、それをみて「あー映像ってこんなものなのね」となるのは、個人的には嫌だと思う。
映画が撮れれば、お金を払う観客を見つけられるだろうか。
http://www.ustream.tv/channel/brownbaglunchce
まえアルバイトしていた会社が昼食中の発表会 (BBL, Brown Bag Lunch or Burning Boys Love) の様子を録画・公開していて、ちゃんと毎週みながらにやにやしている。
試みそのものも、内容もおもしろいと思う。技術発表会というわけではなくテーマは C++ から世界一周・キノコまで。場所は休憩室で参加は任意。ここらへんの意図については Brown Bag Lunch に書いてある。
ブラウンバッグミーティングはチーム内での知識の共有をどうこう、と『アジャイル プラクティス』の p.32 にはあって、なんで世界に公開するのかはよくわからない。とはいえ、おかげでおれも見れる訳だし、公開することより隠すことに理由が必要な組織のほうが素敵だと思う。
ジョン前田の『シンプリシティの法則』を買った。
http://d.hatena.ne.jp/a666666/20080220/1203495697
先日参加した cross-cultural engineer party の懇親会で、 OpenBSD コミッタの Ryan さんに「この本はおすすめだよ」とわざわざカバンから出して見せていただいた The Laws of Simplicity という本を買いました。洋書です。
原書は表紙が良いなあ。
http://hg.8-p.info/ の URI を clean (== hgwebdir.cgi とかはさまないよう) にした。
手順は例によって http://8-p.info/mercurial-dreamhost.html に。
ブログ書くと良いですよ、みたいなことを人に言いつつも自分が書いていないという。
いそがしすぎて Web もみないし趣味プログラミングもしてません、ってわけではない。このシステムに HTML の pre がないので、Python の iter(f.readline, "") がきれいとか、こまごまとしたコードのはなしが書きにくいというのはあるかもしれない。
pre くらいはあってもいいかな。まとまった技術情報はちゃんとバージョン管理システムにつっこもう、と思っているので、なんでも書ける必要はないんだけど。
URI を生成するところでしくりました。ごめんなさい。LDR に同じ記事が二つずつでててかっこわるい…。
前の職場でも、その前の職場でもドジ研のひとが重要な位置についていた。
そして今週、新しい職場でもドジ研のひとをみつけました。秘密結社こわい。
ちょっと文章を改変。「またクビか」でしめるのは良くない。
投稿したエントリをいじる機能は未実装なので http://sqlitebrowser.sourceforge.net/ を使った。
http://code.google.com/p/tombloo/
「ライセンスはMIT Licenseと表示されていますが、このプロジェクトで作成された全ての部分はパブリックドメインです。」
機械可読なデータで嘘をつくのは止めて!と思って Google Code みてたらパブリックドメインってライセンスとして選択できないらしい。なるほど。
http://groups.google.com/group/google-code-hosting/browse_thread/thread/a8bf8b048314f380
でも「Please do not upload public domain software and label it "MIT" licensed. That is a violation of our terms of service.」らしいですよ。
即興音楽にくらべると即興演劇のひとはずいぶんとポップだった。企業研修にも使われています!だとか。体制側ですね。
日付順でならぶってことはウィンドウの縦軸は時間軸なわけで、書いた時間が離れているエントリは見た目にも離して表示してみた。
http://blog.deadbeaf.org/2008/03/19/gainer-cplusplus-2/
Ruby から Gainer をどうこうするやつにはバグがあるらしいので直さないと。
じつは http://gainer.rubyforge.org/ とかとってたのですが、Funnel の存在を考えると微妙な気がしてきました。
http://www.web-across.com/observe/d6eo3n000004meds.html
PARCO 関係がやってるストリートスナップ、2008-02 から「よく見るHPやブログは?」という質問ができた。
MacUpdate のよいところに「勝手に更新される」ところがある。たとえば最近の GreaseKit はリリース情報を自分で登録していない。りりってしばらくすると「MacUpdate Dev: GreaseKit updated」なんてメールが届いて、勝手に更新されている。
運営側が全部チェックとか、自動化とかは考えにくいので、第三者からの投稿をうけつけているんだろうと思う。(他人のソフトウェアの情報を更新したことが無いので確信は無い)
livedoor Reader 上のフィードの個々のエントリって link 要素で区別されてる?
エントリ毎のページを作ってなかったので、link を全部トップページにしてたら、エントリ一個しかあがってこない。上書きされてる感じ。しょうがないのでエントリ毎のページを実装。
Mac むけのソフトウェアを書いたら http://www.macupdate.com/ に登録すると良いと思う。ページ下の「Submit a File」から。ユーザー登録は特に必要ない。
DreamHost の process killer は dispatch.fcgi という名前のプロセスは殺さないらしい。Wiki 上の Catalyst と Django のページに、FastCGI で動かすならファイル名は dispatch.fcgi にしとこうぜ!とか 書いてある。
http://wiki.dreamhost.com/Catalyst http://wiki.dreamhost.com/Django
Catalyst の勉強に Web アプリケーションを書いてみた。なのでそこをブログ代わりに。
まえ書いてたのは URI もそのままに残してあって、http://blog.8-p.info/page/1 あたりからも辿れます。もう半年かー。