09072012 drum'n'bass
ドラムンベースだけじゃなくて、ドラムステップやダブステップがうまく散りばめられて聞き飽きしない。
- No beggining
- Get Away From Here
あたりが好き
09072012 drum'n'bass
ドラムンベースだけじゃなくて、ドラムステップやダブステップがうまく散りばめられて聞き飽きしない。
あたりが好き
08072012 git
ちょっと先の9/1の話ですが、静岡のB-nestでやるので興味があれば参加するといいと思います。
Gitの入門的な内容から、GitHubの簡単な使い方ぐらいをやる予定です。Gitを独りで使えればGitHubも快適に使えるので、とりあえずこんな感じでいいかなと。誰かがグループ開発のさわりを入れてくれるんだったら歓迎、個人的に興味あるし(職場で独りで開発なんでグループ作業ってのを経験したことがない)。
あとLTが幾つか入るみたいです。僕も空気を読まずにmagitの話でもしようかしら。
07072012 life
売上を増やすか、原価を下げるかだけど後者の話。
プロセスの改善の話とか、不正ギリギリをついていくテクニックとか、価格交渉の話とかなかなかおもしろい。
特に面白かったのは、商品を知らない相手に高く売りつける技術
筆者が「売り買いは知的ゲームだ」と書いてある部分は同意できるかな。基本的に客が分かる価値の最大化が戦略でしょう。
実際に似たようなことを経験した。去年ぐらいに部署を移って、昔付き合いのあった会社の営業が売り込みにきたんだが、製品の技術とか関係ない接待トークみたいなノリで営業してきたので、製品の細かい部分を事細かに質問したら、
「次回は技術のちゃんとわかる営業を連れてきます」
と言ってきたので、
「以前はちゃんと技術の分かる方も毎回同席してたはずなんだけど、今回は時間の無駄でしたねー」
とチクリと返してやったら、
「御社の前担当者は技術をあまり理解なさらなかったので」的なことをポロリした。
あちゃー確かにバレてるわと思ったのであった。
07072012 Haskell
Guess the NumberをHaskellで
import System.Random randomNumGen :: IO Int randomNumGen = getStdRandom (randomR (1,20)) main :: IO () main = do print "Hello! What is your name?" myName <- getLine print $ "Well, " ++ myName ++ ", I am thinking of a number between 1 and 20." print "Take a guess." answer <- randomNumGen guessNumber 0 answer myName where guessNumber gt answer name = if gt > 4 then do print $ "Nope. The number I was thinking of was " ++ show answer else do line <- getLine let guess = read line :: Int case (compare guess answer) of LT -> print "Your guess is too low." >> guessNumber (gt + 1) answer name GT -> print "Your guess is too high." >> guessNumber (gt + 1) answer name EQ -> print $ "Good job, " ++ name ++ "! You guessed my number in " ++ (show gt) ++ " guesses!"
ユーザーからの入力を読み込んでIntに直すときに
line <- getLine let guess = read line :: Int
ってやったけど、本当はどうやるのがいいんだろうか?
それから、名前と答えを関数で持ちまわるのがダサいが、こういう場合ReaderTとStateTどっち使うべきなんだろうか?
07072012 Haskell
Write Yourself a Scheme in 48 Hoursを読んでいるが、9,10章を流し読みしたので、一通り読み終わった。
丁度読んでる途中にWeb+DB PRESSを久しぶりに買った(Perl Meets Beats目当てで)んだけど、僕の中では「大規模コードリーディング」がヒットした。メタ知識重要ってことで。
Haskellのコードリーディングの場合は、手続きを追っかけると言うよりは、hoogleで型から関数の意味(すなわち単語の意味)を調べたり、文脈を考えながらセクションの意味を理解したり、クラスの意味を理解したりと、メタ知識をどんだけ仕入れるかが重要だったりするのでgoogle使用率が妙に高くなる感じ。
それから、本を読む本の技術が結構生きてくるのかなぁと。
もう少し効率的に読めるようにしたい。
05072012 Haskell
Write Yourself a Scheme in 48 Hoursを読んでいる。8章のクロージャ
定義がこうなっていた。
PrimitiveFunc ([LispVal] -> ThrowsError LispVal) Func {params :: [String], vararg :: (Maybe String), body :: [LispVal], closure :: Env}
スタックにつまないで環境をそのまま詰め込むのか。
そういえばRWHでも似たようなこと書いてあったような気がしたんだけど、どこだか忘れた。
Haskellの場合はカリー化で束縛してもいいし、データコンストラクタで束縛してもいいのか。
04072012 Haskell
Write Yourself a Scheme in 48 Hoursを読んでいる。6,7章の状態をどうもたせるかのあたり。
6章のIOはSystem.IOにすれば動く
Data.IORefを使うのは初めてなんだけど、第20回 更新を高速化するためのSTモナドを読んだら、なんとなく方向性はわかった気がする。
要するにモナドにくるんで内部ではやりたい放題だけど、外からは素直に見えるようにするってことでしょ?
そういえば数学ガールのガロア理論で出てきた「閉じている」っていうのとモナドのfunctorのT: X -> Xってのは関係あるのかね?
03072012 javascript
Desireの容量が小さすぎて、アップデートに失敗しまくる毎日が続くし、新しいアプリを入れられないしで、さすがに嫌になったので、iPhone4sに変えた。
これでTitanium Mobileを実機で遊べてちょっといいかもと思っているので、積んであるクックブックを読もうかなと。それからAppleの開発者ライセンス購入しないとな。
Appcelerator Titanium Smartphone App Development Cookbook緑の本もいいらしい。