02082011 life
1章のインターネットと2章のDNSの話はわかりやすくて良かったが、知っているのを前提で読んだからな気もするなぁ。
例えば、中高生あたりが読んで素直に理解できる内容なんだろうか?というあたりが知りたいが、amazonの書評は偏ってるからなぁ、booklogも見てみたけど「初心者にはいいのでは」っていう評価してるのは初心者じゃないからなぁ。
ちなみに僕はコレが欲しい
02082011 life
1章のインターネットと2章のDNSの話はわかりやすくて良かったが、知っているのを前提で読んだからな気もするなぁ。
例えば、中高生あたりが読んで素直に理解できる内容なんだろうか?というあたりが知りたいが、amazonの書評は偏ってるからなぁ、booklogも見てみたけど「初心者にはいいのでは」っていう評価してるのは初心者じゃないからなぁ。
ちなみに僕はコレが欲しい
01082011 Python
xooqで本を渡す際に、背表紙の裏側にtwitterアイコン入りのQRコードシールを張っておいたらウッフィーが増えて面白いかなと思い、簡単なPythonスクリプトを書いてみた。
import urllib import Image from cStringIO import StringIO twitter_id = "kzfm" url = "http://chart.apis.google.com/chart?chs=200x200&cht=qr&chl=http://twitter.com/%s" % twitter_id buffer = urllib.urlopen(url).read() qr_image = Image.open(StringIO(buffer)) twurl = "http://img.tweetimag.es/i/%s_m" % twitter_id twbuffer = urllib.urlopen(twurl).read() tw_image = Image.open(StringIO(twbuffer)) qr_image.paste(tw_image, (147, 147)) qr_image.save("twqr.png")

01082011 life
成功するためには、致命的でない失敗を如何に重ねるかと誰かが言ったように、先人の経験から学ぶことは非常に意味のあるものです。
本書は、18人のエキスパートによるエッセイ集のようなもので、様々な経験が語られているので参考になった。
とりわけメトリクスの重要性はウェブオペレーションに限らず全てのカイゼンが必要なプロジェクトにおける真実だよなぁと思った。
あと、読んでいてこれって創薬プロジェクトが抱えている問題そのものじゃないかと思ったりした。という視点で見てみると
が創薬研究において何を意味しているのかを考えるのは意義深いかもと感じた。
インフラはアプリケーションである
31072011 javascript
Node.jsとcoffee-scriptの勉強のために読んでみた。coffee-scriptは(javascriptよりも)読みやすくていいですね。
サーバーにあるファイルを読み書きできます。

複数のクライアントで同時に開いても変更がリアルタイムで反映されているので面白い。
でも使い道がよくわからない。
31072011 life
風邪を引いたり出張が重なったりして行かない日が続くと足が遠のいてしまうことがあるが、そこそこ定期的に通えているという僕のジムライフは、脳が教える! 1つの習慣を読んだおかげで、それなりに楽しく取り組んでいる。
ジムではランニングマシンばかりなので、CNNのiPodを聞くこととと走ることを結びつけている。そうすると今回20分しか走らなかったじゃなくて今日は20分英語の勉強したという風にポジティブに捉えるようになるので、ちょっとだけでもジムで走ることが肯定されるのでよいです。
あと走り終わるとすっきりするので、その後のコーディングとか集中できるのも良いですね。
31072011 life
自分はどっちよりだかよく理解しておいて、意図的に逆の思考にスイッチするようにすると良い解決策がみつかりやすいように思う(経験論)
会議の前に自分の頭の中でブレーン・ストーミングを済ませてしまいます。会議は、その上で何か足りないものを拾うとか、アイデアのベースをみんなで共有するために行います。
30072011 javascript
Blog rolling with mongoDB, express and Node.jsの写経だが、このエントリはわかりやすいですね。

MongoDBって使いやすそうなので、SQLiteから乗り換えようかなと思ってちょっと調べたところMongoKitはSQLAlchemyっぽいような気がしたんだけどどうなんだろうかねぇ。結局javascriptだとクラス関係ないしJSON(BSON)だからMongoとの相性がいいんだろうか?あとでもう少し調べてみよう。
さて、上のエントリのブログのサンプルで使われていたHTMLとCSSのテンプレートエンジンが面白かったので調べてみた。
zen-codingみたいなノリでサクサク書いていけるっぽい。
Jade - robust, elegant, feature rich template engine for nodejs
Hamlっぽいとか書いてあったんだけどHaml知らんからなぁ(普段はFlask+Jinja2使ってます)。
CSSをシンプルに書ける独自のスタイル指定言語らしい。構造化してすっきりと記述できるみたい。
Expressive, robust, feature-rich CSS language built for nodejs
スクリーンキャストもありますね。
CSSなんてすぐにぐちゃぐちゃになって可読性が落ちるので、CSSなんてバイナリと一緒で人が読むもんじゃないんだぜみたいな立場にたてば、DRYを保てるようなこういった仕組みは良いんだろうなと思う、っていうか良い。
モジュールをインストールするとstylusっていうコマンドがついてきて、別にNode.jsじゃなくても使えるのでFlaskで使おうかなと思っている。
こんなstylがあるとして
body font-family "Helvetica Neue", "Lucida Grande", "Arial" font-size 13px text-align center text-stroke 1px rgba(255, 255, 255, 0.1) color #555 h1, h2 margin 0 font-size 22px color #343434 h1 text-shadow 1px 2px 2px #ddd font-size 60px
コマンドラインからコンパイル
$ ../../node_modules/stylus/bin/stylus style.styl
compiled style.css
できた。
body { font-family: "Helvetica Neue", "Lucida Grande", "Arial"; font-size: 13px; text-align: center; text-stroke: 1px rgba(255,255,255,0.1); color: #555; } h1, h2 { margin: 0; font-size: 22px; color: #343434; } h1 { text-shadow: 1px 2px 2px #ddd; font-size: 60px; }
30072011 javascript
普通にスクリプトとして使えるので、覚えてくるとなかなか楽しいですね。Node.jsのモジュール一覧を眺めながら面白そうなのをいじっています。
今日はgrowlで遊んでみてますが、通知はgrowlnotify経由なのであらかじめインストールしておく必要があります(入ってなくてもエラーを吐かないので一瞬悩む)。
#!/usr/bin/env node require.paths.push('/usr/local/lib/node_modules') var TwitterNode = require('twitter-node').TwitterNode , growl = require('growl'); var twit = new TwitterNode({ user: '####', password: '####', track: ['perl','python','haskell','javascript'] }); twit.addListener('error', function(error) { console.log(error.message); }); twit.addListener('tweet', function(tweet) { growl.notify("@" + tweet.user.screen_name + ": " + tweet.text); }).stream();
node.jsとNginxが相性がいいって見かけたので、さくらVPSのApacheをNginxに置き換えようかなぁと思いNginxの本を注文してみた。
30072011 HTML5
夏の出版ラッシュか?
Want to create exciting HTML5 graphics without spending eternity in JavaScript? You can! This provides a basic overview of the two declarative languages bound to HTML5 - CSS 3.0 and Scalable Vector Graphics (SVG).
ほしい物リストが大きくなっていく
29072011 javascript
Calipsoのコード読んでたらnode.jsはスクリプトとして動かせることに気づいたのでスクリプトにしてみた。
といっても一行足すだけだけどね。
モジュールのパスがおかしかったのでrequire.pathで足してみたけど、なんでおかしいのかわからん。どこかに余計な環境変数を入れてあるのかなぁ。
#!/usr/bin/env node require.paths.push('/usr/local/lib/node_modules') var TwitterNode = require('twitter-node').TwitterNode , sys = require('sys'); var twit = new TwitterNode({ user: '######', password: '######', track: ['perl','python','haskell','javascript'] }); twit.addListener('error', function(error) { console.log(error.message); }); twit .addListener('tweet', function(tweet) { sys.puts("@" + tweet.user.screen_name + ": " + tweet.text); }) .stream();