北海道苫小牧市出身の初老PGが書くブログ

永遠のプログラマを夢見る、苫小牧市出身のおじさんのちらしの裏

ghci 7.10 と 8.0 のレコード記法の違い

DuplicateRecordFields を実装した影響だと思うけど、 ghci で重複するレコード名を定義したときの振る舞いが 7.10 と 8.0 で違ってる。 まず 7.10 。「フィールド定義が消される」という振る舞いに見える。 $ stack --resolver ghc-7.10 ghci Configuring G…

stackのコードを読む(2)

stack.yaml はどこで読むのか Runner.hs#withBuildConfigAndLock なんてのがあって、ここで読んでいる。実際に読んでいるのは Config.hs#loadProjectConfigとかで、こいつが FromJSONのインスタンス になっていてパースしてる。設定の優先順位とかは この辺 …

stackのコードを読む

stackのコードを読んでるのでメモ。まだ全然肝心なところに入ってない。 パーサーでコマンドライン引数をパースして、パースの結果として得られる関数を実行する作り optparse-applicativeをフォークして使っている なんの処理を加えてるのかは読んでない 例…

Data.List.(\\)

(\\) という演算子 *1 でリストの差を取れるのだけど、こいつは最初の出現しか削除してくれない。というのを知らなくて、バグった。 Prelude> import Data.List Prelude Data.List> [1, 2, 2, 3, 3, 1] \\ [1, 2, 3] [2,3,1] 複数引くとその個数だけ消える。…

式と型と値

JavaもHaskellも静的型付けの言語だけど、Javaをやっている人とHaskellをやっている人で、「静的型付け」という言葉で頭に描くイメージはだいぶ違うと思う。 じゃあどう違うのかってのを説明すると小難しい話になりがちなのだけど、Haskell 2010 Language Re…

Surface Studio の電源が落ちた

昨日の午前中までは安定していたSurface Studioが、昨日の午後から突然画面が暗転するようになってしまった。初めスリープから復帰できずにシャットダウンしたので、 Surface Book がスリープからの復帰がかなり不安定だったこともあってそれと同じかなくら…

ghcと文字コードとWindowsと

ghc さんは、エラーメッセージに ascii の範囲外の文字を平気で使ってくる。これ、環境によってはハマるので勘弁して欲しい。具体的にはWindowsなんだけど。 例えばこんなメッセージ。 Prelude> 3 / 4 :: Int <interactive>:1:1: error: • No instance for (Fractional In</interactive>…

入門Haskell(10年前の本)

久々に入門Haskellのsamegameを作る章を読んだ。本を買った当時は頭に入ってこなくて流し読みしかしなかった記憶があるけど、今読むと書いてあることはシンプルだった。 この本に問題があるわけではなく10年前の本なので当たり前だけど、なんだかなあと思う…

tls周りが遅くて悲しい

昨日のプログラム のプロファイリング取った。 ... tlsManagerSettings Network.HTTP.Client.TLS 51910 0 0.0 0.0 87.7 92.5 mkManagerSettings Network.HTTP.Client.TLS 51911 0 0.0 0.0 87.7 92.5 ... decodeLenient Data.ByteString.Base64.Lazy 55231 0 …

ストーカー、始めました

冬休みの工作。 lotz84さんが https://github.com/lotz84/haskell/ のHaskellのブックマークをガンガン更新していて、これはいいものだと思ったのでストーカーするバッチを書いた。 soozy.slack.com *1 の #haskell というほとんど誰も使っていない部屋に更…

Surface Studio を買った

ここ数年年末に散財することが多いのだけど、今年は Surface Studio を買った。Surface Pro3、Surface Bookと買い進めてSurface製品の3台目。 10/26 日の発表直後にpreorderして、手元に届いたのは 12/19 だった。i7のモデルを選んだので、本来発送開始が来…

AWSにドブ課金するよ

AWS を含めたクラウドは商売のやり方が昔から本当に嫌いで個人では絶対触りたくないのだけど、そうも言ってられない時代なので今後はどっぷりと課金していく決意をする。 久々なので IAM 周りを色々と見て、問題なさそうなことを確認。 http://dev.classmeth…

ResourceTのコードリーディング

雑に読んだメモ。だいたい構造わかったので満足。 Readerモナドを自前で定義している 開放用のアクションを登録するマップを保持 RefCount は fork 用のリファレンスカウント、 NextKey はリリースに必要なキーの採番用 前者は minBound から加算、 後者は m…

はてなダイアリーからはてなブログに移行した

ようやく重い腰を上げて http://d.hatena.ne.jp/hiratara を http://hiratara.hatena.diary.jp へ移行した。かなり枯れてきてるので移行しても問題は起きないだろうし、markdownに対応されてるのは便利。はてな記法とか覚えてないし。 http://hiratara.githu…

$&のpodはきちんと読むべき

心に傷を負ったのでこれを記しておく。 The use of this variable anywhere in a program imposes a considerable performance penalty on all regular expression matches. perlvar perl5.18なら直ってるみたいな噂も小耳に挟んだけど変わらなそげ。手元のp…

「アドテクノロジー開発現場の話」を聞いてた

同僚である@myfinderさんが登壇した、Tech Compass【Vol.07】に出席してきました。マイナビさんにレポートをあげていますので、興味のある方がいらっしゃいましたらご覧ください。 超絶トラフィックをミリ秒で処理する、アドテクノロジー開発現場の話 合わせ…

確率と測度

定義を忘れないようにまとめ。用語とかは以下の本のもの。はじめての確率論 測度から確率へ佐藤 坦 Ωを標本空間となる集合とする。これは任意の集合でよい。 σ-集合体 Ωの部分集合の集合B⊂P(Ω)がσ-集合体 ⇔ Ω∈B、a∈B⇒a^C∈B、A_k∈B⇒∪A_k∈B (加算無限和) σ集合…

lambdabot-hipchat-plugins

HipChatを使う機会があったので、lambdabotをHipChatへ組み込むプラグインを書いてる。とりあえず年内ぎりぎりでなんとなくは動くようになった。以下、この件に関するメモ。 HipChatのAPI WEB APIとXMPPが使える。メッセージのストリーミングはXMPPを使うこ…

今日は「秋のエンジニアぶつかり稽古 2013」の日です

@__kanさんを見に来てます。メモを取る必要のあるイベントかわかりませんが、一応。 行事の内田さんより YAPCでのカヤックさんの企画 かん関とあんちぽ関の取り組み 「俺の本気を見せてやる」プレゼンタイム 吉高由里子と僕 / @hisaichi5518さん コピペ辛い→…

ペアプロの新ジャンル「ぶつかり稽古」の面白さ

秋のエンジニアぶつかり稽古 2013で横綱級エンジニアのペアプログラミングを見てきたのだけど、これが想像以上に面白かった。他のイベントでもドンドンやるべき。「ぶつかり稽古」はあんちぽさん(@kentaroさん)が考案した新しいエンターテインメントペアプロ…

関手圏からHaskへの関手

こんな感じでいいのかな。 class HFunctor hf where hfmap :: (Functor f, Functor f') => (forall t . f t -> f' t) -> hf f -> hf f' 以下は、型bを固定した時に定義できる関手F_bで、Functor fを型f bに移すような関手の定義。 data FunctorB b g = Funct…

Mouse-1.3でMooseと挙動が違うコード

コンフリクトした場合はスーパークラス側のメソッドが優先されるべきなんだけど、"Hage te nai"が出力される。 package Role1; use Moose::Role; sub hage { "Hage te ru" } package Role2; use Moose::Role; sub hage { "Hage te nai" } package Super; use…

I/Oストリーミングライブラリの実装の基礎 - 後編

前回の続きである。予告通り、2つのストリーミングの「出力」と「入力」をつなげる処理、そして、ストリームの命令列を解釈する処理系を実装する。 2つのストリームを1つにする(考え方) 「出力」と「入力」をどうくっつけるといいのか。それぞれのストリーム…

I/Oストリーミングライブラリの実装の基礎 - 前編

conduitやpipesなどのストリーミングライブラリの実装は結構わかりにくい。Pipes to Conduitsという一連のエントリが分かりやすい解説なのだが、それでも序盤からFunctorやFreeモナドを駆使していてハードルが高めな印象を受ける。理解するには自分で実装す…

auで持ち込み機種変した

5Sを買ったので、妻の4Sを余ったiPhone 5を持ち込んで機種変更した。4Sを買った時の毎月割は継続可能。その点も含めて、全体的にLTE関連のプランに変更が必要なものの、ショップの店員さん曰く、今までと月額の支払いは変わらないとのこと。ただし、プラン変…

自宅を光回線にした

スマートバリュー適用のためにeAccessのADSLをauひかりにした。5Mbps程度だった回線速度が最大値で500Mbpsを記録するようになった。始めUSENやインターコネクトのスピードテストを使ってたんだけど、これだと100Mbps以上の回線速度をうまく測れてない気がす…

今日はYAPC::Asia Tokyo 2013の2日目です

2日目です。地元開催なので、地の利を生かして朝からタリーズでのんびり朝食などとっております。今日もgihyo.jpさんのスペシャルレポートにレポーターとして参加しています。

YAPC::Asia Tokyo 2013 を終えて

今年もYAPCが終わった。スタッフを始めとした関係者の皆様には、本当にありがたいと思っている。また、gihyo.jpの担当の@k_takaさんには、今年も大変お世話になった。さて、今年のYAPCに参加して感じたことが2つある。まず、世の中は自分が思った以上に進ん…

今日はYAPC::Asia Tokyo 2013の1日目です

一日目です。今日もgihyo.jpさんのスペシャルレポートにレポーターとして参加しています。

今日はYAPC::Asia Tokyo 2013の前夜祭です

今年もYAPC::Asia Tokyoの季節がやって参りました。今年の会場は慶應義塾日吉キャンパスです。夕方から始まる前夜祭から参加する予定ですので、いつものように適当にメモをとっていきます。今年もgihyo.jpさんのスペシャルレポートにレポーターとして参加し…