24012010 life
沼津往復で読みきった。内容的には、知らない人向けにわかり易く説明した感じ。読み終わって7つの法則がイマイチ。復活というよりはホームページ世代の人達に今時の状況を説明しました(7章に分けて)みたいな。
- Unique Sales Proposition (UPS)
- 買う理由がないから買えない
- Lead Exchange
24012010 life
沼津往復で読みきった。内容的には、知らない人向けにわかり易く説明した感じ。読み終わって7つの法則がイマイチ。復活というよりはホームページ世代の人達に今時の状況を説明しました(7章に分けて)みたいな。
24012010 Haskell
プログラム・プロムナードのRubicキューブと置換の乗算を読んで2X2のソルバーを書いていたんだけど、巡回とねじりを覚えれば基本的に解けるのでリアルのほうを揃える方に夢中になってしまった。

*Main> prodPerm [e,t,t,e,s',b,b,s,e',t,t,e,s',b,b,s,e',e']
[[TSW,WTS,SWT],[TES,EST,STE]]
*Main> prodPerm [e,e,s,s,e',n',e,s,s,e',n,e']
[[STE,WTS,ETN],[EST,SWT,NET],[TES,TSW,TNE]]
23012010 Haskell
プログラム・プロムナードのRubicキューブと置換の乗算を読んでいたら、文字のローテションをしたいときにcycleを使っているのを見つけた。
import List
shift n c xs = case elemIndex c xs of
Nothing -> c
Just i -> cycle xs !! (i + n)
こんな感じ。
*Main> shift 1 'y' ['a'.. 'z']
'z'
*Main> shift 1 'z' ['a'.. 'z']
'a'
*Main> shift 1 ' ' ['a'.. 'z']
' '
これを使えばプログラミングHaskellのシーザー暗号は次のように書ける
import List
chrs = ['a'..'z']
shift n c xs = case elemIndex c xs of
Nothing -> c
Just i -> cycle xs !! (i + n)
encode n xs = [shift n x chrs | x <- xs]
実行
*Main> encode 3 "haskell is fun"
"kdvnhoo lv ixq"
創造は個人のステップ、イノベーションは集団としてのプロセス
22012010 Haskell
UDPとTCPでsyslogサーバとクライアント作って通信させる。
Real World Haskell―実戦で学ぶ関数型言語プログラミング28章はSTMだけどこれはJava並行処理プログラミング読んでからにしよう。
これで一通り読んだので、そのうちもう一度読む。二周目は練習問題解きながら。
はじめて日本酒を飲むヒトのための本として書かれているが、最近の日本酒ガイドとしても良い。フレッシュでフルーティーさの強い日本酒を選んでいる。
入手しにくい銘柄もあるけど、日本酒リストとしての価値を考えるとお買い得感はある。
この先には燗をつける楽しみが待っているけど、燗つけて楽しいお酒とかは又違ってくるので続編をいま燗で飲むべき全国の36銘柄とかやって欲しいなぁ。
呑み飽きしない度で銘柄探したりとか、2000円以内で美味しい銘柄とか、入り口さえ超えてしまえば世界は広いと思う。
22012010 Haskell
HaXmlとHDBCを使ってXMLの構文解析とSQLiteのデータベース操作を組み合わせてpodcastのダウンローダーをつくるというなかなか楽しい章だが、このまえSQLAlchemyの本読んでたから、SQL文を直接埋め込むのはなんか面倒くさかった。
Real World Haskell―実戦で学ぶ関数型言語プログラミング順調に消化するはずだったがHaXmlを使ったパーサーが文句を言う
PodParser.hs:40:11:
`CFilter' is not applied to enough type arguments
Expected kind `?', but `CFilter' has kind `* -> *'
In the type signature for `channel':
channel :: CFilter
んー?型が悪いの?
Prelude Text.XML.HaXml> :i CFilter
type CFilter i = Content i -> [Content i] -- Defined in Text.XML.HaXml.Combinators
あれ?type CFilter = Content -> [Content]じゃない。
多分これだな。
風邪でノドが痛いので休んで読書の日。
ふたメルさん(笑)
製薬業界のことを大雑把につかむためにもおすすめの良書だと思う。 製薬業界の中の人だったら5章6章は面白いと思う。
成果主義とか危険だよね、つけが回ってくるのは確実だもん。あと、パラダイムシフトはあるよね多分。でもみんな割とのほほんとしてるよね、受け皿ないのに。
でも、オープンイノベーション的な事には触れてなかった気がする。もうちょっと技術に特化したかたちのベンチャーの垂直統合的なモデルはもうちょっと盛り上がってもいいと思っているのだけども、難しいのかな。SBDDとかアウトソースでいいような、自分でやっててアレだけど「これってコンサルだよなぁ」といつも思うもん。
21012010 Haskell
効率のよいエラーの仕組みを導入。
type ThrowsError = Either LispError
みたいなのが慣れない。Either a bがaとbの両方をとるみたいに感じちゃうからか。実際に下のようにしてみると納得出来るんだけど。
ここにあった例を
int_sqrt :: Int -> (Either Int Double)
int_sqrt x | fsdx * fsdx == x = Left fsdx
| otherwise = Right sdx
where sdx = sqrt $ fromIntegral x
fsdx = floor sdx
このように変えてみた
type Leftint = Either Int
int_sqrt :: Int -> (Leftint Double)
int_sqrt x | fsdx * fsdx == x = Left fsdx
| otherwise = Right sdx
where sdx = sqrt $ fromIntegral x
fsdx = floor sdx
まぁそうだよなと思う。