2013-01-01から1年間の記事一覧
「小説家という職業」という本を読んだ(小説家になりたいと考えているわけではない)。 小説家という職業 (集英社新書)作者: 森博嗣出版社/メーカー: 集英社発売日: 2010/06/17メディア: 新書購入: 7人 クリック: 273回この商品を含むブログ (103件) を見る…
長い間Webサービスの開発に携わっているのだけれど、HTTP について全然理解していなかったんだ、と思わされる出来事があった。 そのこととは、名前ベースのバーチャルホストのこと。今までは、ドメイン名を変えれば同じサーバ上に複数のサービスを稼働させら…
ここ最近ブログを書いていなかったけれど(確認したら 2013年8月8日が最後だった)、書かかないのは損なんんじゃないのか、と思った。 なので、具体的な目標はないけれど、できるだけ書いてみようと思う。 その一歩目がこれ。
JSON の要素が全部が必須であれば簡単だけれども、そうでない場合が往々にしてある。公式のドキュメントにはサンプルがなかったので、ここにメモしておく。 値なし Person の middleName がオプション値。型は Maybe Text。パース時に (.:?) を使用する。mid…
($) と (.) のことをよくわかっていないので調べる。 ghci で見てみる。 Prelude> :i ($) ($) :: (a -> b) -> a -> b -- Defined in `GHC.Base' infixr 0 $ Prelude> :i (.) (.) :: (b -> c) -> (a -> b) -> a -> c -- Defined in `GHC.Base' infixr 9 . ($)…
Hakell で ping を作った。Haskell で ping を作ろうと思ってから2年以上も経ってしまった。 コードは Gist にある。 ping を作る中で一番苦労したところは、送信するパケットを作成ところ。String (Char) でどうやってデータを作ればいいのかわからなかった…
そろそろネットワークのプログラムを書いてみようと思ったので、echo サーバを書いてみた。 意外に簡単に書けてしまった。 C しか知らなかった頃は、頑張って scoket, bind, listen ... とかシステムコール呼び出してたけど(あと引数の構造体を作るのが面倒…
Haskell のライブラリのソースを見ていると、go というローカル関数名がよく使われているのに気付く。今日はData.Map のソース を読んでいたけれど、go だらけだった。 なぜだろうと思う人は他にもいるようで stackoverflow にそのことに関する質問が投稿さ…
無限リストに foldl を適用すると停止しないと言うのを前に書いたが、なぜ停止しないのだろうか。 なぜ停止しないのか foldl の定義はこうなっている。 foldl f z0 xs0 = lgo z0 xs0 where lgo z [] = z lgo z (x:xs) = lgo (f z x) xs f を(&&) とした場合…
今まで foldr についていい加減な理解をしていたが、やっと正しく理解できた(気がする)。理解できていなかったのは、無限リストに適用しても停止する(ことがある)のは何故かというところ。 よくある例 Prelude.and を foldr と (&&) を使って作ってみる…
Twitter のタイムラインを取得して、どうのこうのするバッチを作っている(まだ途中)。Twitter のタイムラインを取得する API は認証が必要。Webサービスやアプリ等は OAuth を使うが、バッチの場合はそうも行かない。バッチなど人が介在しないシステムでは…
開発環境の DB の中身を本番環境 (Heroku) の DB にインポートする手順。詳しくは https://devcenter.heroku.com/articles/heroku-postgres-import-export を参照。開発環境の DB は Postgres. 1. 開発環境の DB を dump する。 % PGPASSWORD=myapp_password…
ここを参考にする。 前提 xxx という Heroku のアプリを作成したとする。作成したアプリの URL は xxx.herokuapp.com www.example.com というドメインを作成したアプリに割り当てる。 Herokuの設定 割り当てたいドメインを追加する。Web の管理画面からでも…
思い立ったが吉日、Gem を作成することにした。 どんな Gem かというと、Sinatra の Extension で、Ajax でのリクエストのみを受け付けるルートに Ajax でないリクエスト が来た場合に ステータスコード 403 を返すというもの。公開した Gem はこちら。 403 …
配列の比較は、まず配列の要素数の大小を比較する。 このおかげでソートが自分の期待通りに行かないということがわかった。 次の配列をソートする場合を考える。