数学ガールが届いた

ついでにマクルーハンも。

1338629404

ProductName 数学ガール ガロア理論 (数学ガールシリーズ 5)
結城 浩
ソフトバンククリエイティブ / 1995円 ( 2012-06-01 )


マクルーハン理論

ProductName マクルーハン理論―電子メディアの可能性 (平凡社ライブラリー)
マーシャル マクルーハン
平凡社 / 1260円 ( 2003-03 )


今日の畑(120602)

去年は10個だったが、今年は約3倍の収量だった。

1338626112

二回目なので、根切りと茎落としはさくっと終了。

1338626114

紐で縛って吊るして干した。

1338626116

1338626118

雨が振らなければ明日はジャガイモの収穫。

Rubyスクリプティングテクニック

あまりテスト駆動じゃなかった。

ProductName Rubyスクリプティングテクニック ―テスト駆動による日常業務処理術
Brian Marick
オライリー・ジャパン / 2625円 ( 2008-02-23 )


例題やりたかったら、テスト駆動JavascriptかPython Testingがいいと思う。

ProductName テスト駆動JavaScript
Christian Johansen
アスキー・メディアワークス / ?円 ( 2011-11-25 )


ProductName Python Testing: Beginner's Guide
Daniel Arbuckle
Packt Publishing / 3220円 ( 2010-01-31 )


代入とは状態付きの計算

14.3 計算の状態の正体

これは、僕のなかで非常に納得のいくものだった。

Haskell以外のほとんどの言語における「代入」という操作は、状態付きの計算と捉えることができます。

MooseやPythonでlispとかschemeを書いたことがあったが、そのときに環境というスタックを用意したなぁと妙に納得した。

ProductName すごいHaskellたのしく学ぼう!
Miran Lipovača
オーム社 / 2940円 ( 2012-05-23 )


この本は、日本の初級Haskellerのレベルを押し上げる役割を担うんじゃないかなぁと。少なくとも僕は本書を読んだことで、haskell細胞が進化した(by トリコ)

それからWriterモナドが面白いなぁと改めて思ったので写経。

import Control.Monad.Writer

gcd' :: Int -> Int -> Writer [String] Int
gcd' a b
     | b == 0 = do
         tell ["Finished with " ++ show a]
     return a
     | otherwise = do
         tell [show a ++ " mod " ++ show b ++ " = " ++ show (a `mod` b)]
     gcd' b (a `mod` b)

実行すると、ログがついて回るのでsndで抜き出す。

*Main> mapM_ putStrLn $ snd $ runWriter (gcd' 4351 3776)
4351 mod 3776 = 575
3776 mod 575 = 326
575 mod 326 = 249
326 mod 249 = 77
249 mod 77 = 18
77 mod 18 = 5
18 mod 5 = 3
5 mod 3 = 2
3 mod 2 = 1
2 mod 1 = 0
Finished with 1

Haskellはやっぱり面白いなぁ。もう少し書けるようになりたい。

feedparserとwerkzeug.contrib.atomで時間の型を合わせる

仕事でfeedaggregatorを作る必要があって、家でやるならplaggerでいいじゃんとか思うんだけど、職場でそれやっちゃうとメンテナンスできるヒトがいなくなっちゃって困るし、インストールも時間がかかるので、requestsとfeedparserでちゃっちゃと作ることにした。

実は非同期のクローラーが作ってみたくかったので、Tornadoでつくったのもあるんだけど、サイトアクセスのタイミングがよく分からないのと、最初はそれほど多くのサイトにアクセスしそうにないので同期型のクローラーを動かすことにした次第。

feedparserでparseするとupdate_parsedとかpublished_parsedはtime.struct_time型になるのでwerkzeug.contrib.atomに食わせるにはdatetime型に変換する必要がある。

この場合にはfromtimestampメソッドを使えばいい。

updated=datetime.fromtimestamp(mktime(e.updated_parsed))

時間の変換は結構めんどくさいね。

ちょいデキ!

新幹線の中で読んだ。付箋を忘れたのであまりかけないのが残念だが、ちょっとしたTips集になっていて、面白いことが色々書いてあるので、ブックオフなんかで投げ売りされてたら買って読んでみるといいです。

ProductName ちょいデキ! (文春新書)
青野 慶久
文藝春秋 / ?円 ( 2007-09 )


Expressのroutes

朝からカフェオレを飲みながら。

expressコマンドを叩くと、routesが別になってるのはRoRかなんかのお作法に倣ったのかな。

.
├── app.js
├── package.json
├── public
│   ├── images
│   ├── javascripts
│   └── stylesheets
│       └── style.css
├── routes
│   └── index.js
└── views
    ├── index.jade
    └── layout.jade

でapp.jsを見ると

var express = require('express')
  , routes = require('./routes');

ってなってるんだけど、これって

var express = require('express')
  , routes = require('./routes/index');

と同じということでいいんだろうか?実際動くんだけど。CommonJSのrequireの仕組みを見れば書いてあるんですかね?あとで探す。

おまけ

来月の終わりに静岡でNode.jsの勉強会があります。私はCoffeeScriptとExpressでウェブアプリを作るっていうハンズオンをやる予定にしてますので、暇があれば参加すると楽しいと思います。

年収崩壊

5年くらいの前の本をブックオフで買って、当たっているかなぁと答え合わせを兼ねて読むのも面白い。本書では「年収300万円も今や危うい」って書いてあるが、結局上向く気配もないだろうし、まぁこれからもないだろう。

それでも、経済成長を目指すっていうのはいばらのみちでしょうね。人口が減少している国で経済が成長しているという例はあるんだろうか?

結局は節約しましょうっていうのが本書のサバイバル術の主張なんであまり面白いことはかいてないんだけどね。

ProductName 年収崩壊―格差時代に生き残るための「お金サバイバル術」 (角川SSC新書)
森永 卓郎
角川SSコミュニケーションズ / 798円 ( 2007-10 )


さて、僕が常々不思議だなぁと思っているのが、本書に書いてあるように

若いうちは本来の貢献よりも安い給料で働き、年をとったら働き以上の給料をもらうのが年功序列

だというわけです。実際に僕もバリバリ働いてた頃に、給料少なすぎんだろって上司に噛み付いたら、上と同じような返事が返ってきたし、労組系のヒトは基本的にこういうマインドですね(その当時の上司もそうだった)

なので、成果主義に移行した時点で労組は一定の役割を果たしたってことで解散すればいいのに、なぜかユニオンショップに移行してしまったりとか。あほくさすぎて、それ以来一切組合に関わらんようにしてる。

これからの働き方において、労組は枷にしかならないんじゃないかなぁ。

結論

労組は堕落、給料は下落

CoffeeScriptファーストガイドはモダンなWebアプリケーション開発ガイド

後半Node.jsを使ったウェブアプリ開発のためのヒント集みたいになっていて、CoffeeScriptである必然性を感じなかったんだが、個人的に7章後半の運用まわりが非常に参考になったので良かったということで。

初心者向けの入門書というよりはすでにCoffeeScriptである程度書いているヒトが、文法おさらいしつつ、よさげなライブラリを使って効率的に開発しましょうって感じの内容だった。

そもそもCoffeeScriptが(javascriptへコンパイルという)一手間を加えるだけのものなので、そこにどういう価値を見出すかでCoffeeScriptへの向きあいかたが決まってくると思う。僕の場合はPythonっぽくかけて括弧のネストから解放されるのに魅力を感じたのと、リスト内包表記はやっぱいいよねーってあたりですね。

まぁ、応用考えたら、CoffeeScriptらしさっていうのは必然的に薄まってくるよなぁと思いながら読んでた。最後のほうにクライアントサイドMVCの話が出てたけどSpineに触れてないのは残念だったかな。

  • 文法のところではdoを使ったクロージャの作り方と、複数行の正規表現は知らなかった
  • CoffeeDoc
  • Node.jsのデバッガ
  • ログ出力モジュール winston
  • npmパッケージの開発方法が簡単に紹介されていた

具体的な例をやりたければテスト駆動JavascriptのサンプルをCoffeScriptで書いてみるのがいいんじゃないかなぁと。で、わからないところを本書で補うと。

ProductName テスト駆動JavaScript
Christian Johansen
アスキー・メディアワークス / ?円 ( 2011-11-25 )