説明だけみるとPro Scalaのほうが面白そうな気がするが両方とも欲しい気分
説明だけみるとPro Scalaのほうが面白そうな気がするが両方とも欲しい気分
昨晩から嫌な予感はしていたのだが、朝起きたら喉がザラザラで熱っぽい(+今月まだ有給とってないわ)ってことで、休んだ。
午前中寝てたら、佐川のヒトが本持ってきてくれたので読んだ。
ライフハック系の本というよりは働き方のメッセージ色が強いかな。 アイデア出しの本が読みたいんだったら、本書の参考のとこにあげられている本を何冊が読めばいいんではないかな。
「おわりに」に
断言します。これからはカヤックのように、面白く働くことにこだわる会社や個人が増えてきます
ってのがまずあって、そういう結論をイメージしながら本を組み立てたのかなと思った。
会社があってそこにヒトが集まるんじゃなくて、ヒトが集まって面白いことをやるから結果法人格としての会社という体裁になんだろうなぁと。
27112009 Haskell
プログラミングHaskell8章
本の通りにdo記法使うと動かなかったのでbindをつかってせっせと書いた。そのおかげで、←とか>>=見るとラムダ式が意識できるようになってきた。
第14回 関数脳のつくり方 Second Season 〜モナドで悟りをひらく〜
関数型言語で「プログラムの実行順序を保証」したり
import Char type Parser a = String -> [(a,String)] myreturn :: a -> Parser a myreturn v = \inp -> [(v,inp)] myfailure :: Parser a myfailure = \inp -> [] myitem :: Parser Char myitem = \inp -> case inp of [] -> [] (x:xs) -> [(x,xs)] parse :: Parser a -> String -> [(a,String)] parse p inp = p inp (>>==) :: Parser a -> (a -> Parser b) -> Parser b p >>== f = \inp -> case parse p inp of [] -> [] [(v,out)] -> parse (f v) out -- p :: Parser (Char,Char) -- p = myitem >>== \x -> -- myitem >>== \y -> -- myitem >>== \z -> -- myreturn (x,z) (+++) :: Parser a -> Parser a -> Parser a p +++ q = \inp -> case parse p inp of [] -> parse q inp [(v,out)] -> [(v,out)] sat :: (Char -> Bool) -> Parser Char sat p = myitem >>== \x -> if p x then myreturn x else myfailure digit :: Parser Char digit = sat isDigit lower :: Parser Char lower = sat isLower upper :: Parser Char upper = sat isUpper letter :: Parser Char letter = sat isAlpha alphanum :: Parser Char alphanum = sat isAlphaNum char :: Char -> Parser Char char x = sat (== x) string :: String -> Parser String string [] = myreturn [] string (x:xs) = char x >>== \_ -> string xs >>== \_ -> myreturn (x:xs) many :: Parser a -> Parser [a] many p = many1 p +++ myreturn [] many1 :: Parser a -> Parser [a] many1 p = p >>== \v -> many p >>== \vs -> myreturn (v:vs) ident :: Parser String ident = lower >>== \x -> many alphanum >>== \xs -> myreturn (x:xs) nat :: Parser Int nat = many1 digit >>== \xs -> myreturn (read xs) space :: Parser () space = many (sat isSpace) >>== \_ -> myreturn () token :: Parser a -> Parser a token p = space >>== \_ -> p >>== \v -> space >>== \_ -> myreturn v identifer :: Parser String identifer = token ident natural :: Parser Int natural = token nat symbol :: String -> Parser String symbol xs = token (string xs) -- 8-1 -- int :: Parser Int int = char '-' >>== \_ -> nat >>== \n -> myreturn (-n) +++ nat -- -- -- -- 8-2 -- comment :: Parser () comment = string "--" >>== \_ -> many (sat (/= '\n')) >>== \_ -> myreturn () -- -- --
26112009 Python matplotlib
Pythonの描画ライブラリであるmatplotlibの本が出てた。
Matplotlib for Python Developers: Build Remarkable Publication Quality Plots the Easy Way欲しいのう
ダイレクトメッセージを送れるかどうかで判断するみたいなつぶやきが流れてたので。
setでごにょれば良かろうと。
import twitter
api = twitter.Api(username='user',password='pass')
friends = set([u.name for u in api.GetFriends()])
followers = set([u.name for u in api.GetFollowers()])
print "follow and followed: " + ",".join(list(friends.intersection(followers)))
print "not follow but followed: " + ",".join(list(followers.difference(friends)))
print "follow but not followed: " + ",".join(list(friends.difference(followers)))
もう、自分でなんか作ったときにちゃんと読めばいいやって気分になってしまったので流し読み。
Chapter 19
ここまで読めばあとはなんかつくるだけ。というか作りたい物は決まっていて、文献管理システムをPylonsで書き直すのだ
おは(ようを)あり(がとう)ではなくて おは(が)あり(ました)
つまり
isOha? :: Str -> Bool
なスクリプト。
#!/usr/bin/env python
# -*- encoding:utf-8 -*-
import twitter
api = twitter.Api(username='user',password='pass')
oha = [r.user.screen_name for r in api.GetReplies() \
if r.text.encode('utf-8').find('おは') > -1]
thx = "@" + " @".join(oha) + "おはありです"
status = api.PostUpdate(thx.decode('utf-8'))
pypiにあるtwitterじゃなくてpython-twitterを使いたかったので、既にインストールされてたtwitterモジュールはpythonモジュールのアンインストール - kokiyaの日記を参考に消した。
Chapter14のチュートリアルをやった。簡単なblogみたいなものを作っていく(コメントシステム、タグ、認証系まで)三部作なんだけど、一つの章が分量があるので疲れる。