yunomuのブログ

酒とゲームと上から目線

glide getやglide upが動かない

glide getで新しいライブラリをインストールしようとするとこんなエラーが出た。 [ERROR] Error scanning github.com/golang/protobuf/ptypes/duration: open /Users/yunomu/.glide/cache/src/https-github.com-golang-protobuf-ptypes-duration: no such fi…

cabalでビルドをカスタマイズする

cabalファイルだけでは足りない事がある。どうしても単一のプログラムではできないこともあるし、TemplateHaskellでも生成できなくてやむなくソースコードを自動生成するスクリプトを書かざるを得ない事もあります。自動生成なんかやると何かに負けた気分に…

Javaの例外のスタックトレースを操作する(しない)

Javaで、例外を作成するメソッドを作りたくなることが数年に1回くらいある。で、大抵はそんなこと実はやらないほうがよくて、やらないんですけど、まあやることになったとします。やるなよ。 そんでこんなメソッドを作る。 private Exception makeException(…

ファイルとファイルディスクリプタとファイルのようなものたち

プログラムからファイルを読もうとしたらどうするか。 まずディスクを選んで、ディスクに書き込まれているファイルシステムを調べる。次にファイルシステムの管理情報に基づいて目的のファイルのデータブロックを探す。具体的にはファイルシステムの形式に従…

ディスク拡張したのにディスク容量が増えないんだけど(ファイルシステムの話)

例えばAmazon EC2のEBSのように、ディスクが仮想化されるようになり、そうするとディスクの容量を拡張するというよくわかんない事がお手軽にできるようになり、「ディスク容量増やしたんだけどOSから見ると増えてない。なんで」みたいな事が起こり、「ディス…

パッケージ管理システムのこと

自分で作ったプログラムを実行することは、ほとんどの場合で簡単にできます。だいたい動作確認しながら作るので当たり前です。 でも自分で作ったプログラムを人に渡して使ってもらおうとすると、これが結構面倒くさい。 ここでプログラムというのは、実行フ…

死んでもTwitterで遊ぼう

先生が「死ぬまでTwitterで遊ぼう」みたいな事を言ったら、学生に「いや別に死んでもTwitterできますよプログラマなんだから」みたいな事を言われた、という話を去年京都で飲んだ時に聞いた。 そういえば私は昔、人間を作りたくて色々勉強してた事を思い出し…

Android SDKのSQLiteDatabase#execSQLのbindArgsの型

AndroidSDKのSQLiteDatabase#execSQLのマニュアル [http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html#execSQL(java.lang.String, java.lang.Object[])] よくあるsqlとbindArgs(Object配列)を渡す構造なんですが、このbi…

SSHがつながらない

前回と同じネットワーク構成で。 AからVPN経由でCへのSSH接続を試みる。 % ssh 192.168.2.11 ssh_exchange_identification: read: Connection reset by peerつながらない。Aからインターネット経由でC(eth0)へのSSH接続は普通にできる。 % ssh server_public…

ネットワークがつながらない

基本がわかっていないとなにもかもわからなくなる。 出来事 外で借りてるサーバ(C)を使ってこんな感じのネットワークを作った。 AはWindows 7 Aの隣に何台かノート(D)やら携帯(E)やらがある BはUT-VPNクライアントが動く程度のLinux(CentOS 5系だったと思う)…

haskell-relational-recordとMySQLの識別子の大文字小文字

haskell-relational-record(hrr)とMySQLを使ってプログラムを書いてみようと思った。書き方自体はこのあたり。 https://github.com/khibino/haskell-relational-record https://github.com/krdlab/haskell-relational-record-driver-mysql元々haskell-relati…

Frappuccinoの使い方

前回、Frappuccinoの件をあまりにももののついでみたいに書いてしまったんですが、使おうとすると例によってドキュメントが無くてソースを読む事になって、なったので、その時の足跡です。 https://github.com/steveklabnik/frappuccino Source 前準備として…

Chrome remote-debuggingの話と見せかけてWebSocketとかfrappuccinoとか

最近ちょっとブラウザで遊んでいたので、共有というか。Google Chromeにremote debuggingという機能があります。 https://developers.google.com/chrome-developer-tools/docs/debugger-protocol要するにJavaScript開発者にはおなじみのDeveloper toolsが使…

ノートの使い方

ノートの話をたまに書いているので、じゃあ次はペンの話でも書こうかと思ったけど、ノートの使い方の話は書いてないよねと指摘を受けたので書いてみます。そういやそうだよね。断片的には書いてるけど。まず基本として、ノートは記憶の補助として使っていま…

アルゴリズム問題

最近、CodeIQというサイトの「今週のアルゴリズム」を解くのが楽しい。元々私はこういうアルゴリズム問題を解くのが非常に苦手なんですが、まあこの「今週のアルゴリズム」の問題は簡単だし。20分とはいえないかもしれないけど1時間もかかんない感じだし。で…

UTCTimeをEqで検査する

UTCTimeが関わるテストをQuickCheckで書こうとしてハマった。まずUTCTimeをランダム生成するために、UTCTimeをArbitraryのインスタンスにしようとした。 UTCTimeはDayとDiffTimeの組になっていて、DayとDiffTimeはIntegerから作れるし、IntegerはArbitraryの…

文具トーク

たまにキングジムとかコクヨのサイトを眺める趣味がある。 文具屋では当たり前に便利なものがそろっているんですが、こういうサイトだと新製品とかなんかよくわからないアイテムがあったりして、また違う面白さがあったりします。面白いだけで買ったりとかは…

Haskellで可変長引数

可変長引数を作りたかったわけではないんだけど、というか何がしたかったんだかよく覚えていないんだけど、こういうのを作った。 class Test a where test :: a -> Int test = const 0 instance Test a => Test (b -> a) where test f = 1 + test (f undefin…

io-streams

そろそろio-streamsで遊んでみよう。いや遊んでたのは実のところ随分前なんですけど。 http://hackage.haskell.org/package/io-streamsio-streamsというのはHaskellのストリーム処理ライブラリの一つで、シンプルなのが売りなのかな。 ストリーム処理には私…

スタイラスペンとブギーボードの話

iPad用に静電気タイプのスタイラスペンを買って使ってみてますけど、ここまで書いた段階でもういいやって感じです。参ったな高かったのに。 http://www.princeton.co.jp/product/digitalaudio/psatpa1.html電源入れないと書けないので電池を気にしなきゃいけ…

JavaコードをHaskellで書きなおすのに手こずった話

「続・アルゴリズムを学ぼう」が発売されて、校正をほんのちょっと手伝ったお礼かなんかで発売された本を頂きまして、ぼちぼち読んだりしています。 前作に比べて使いやすいというか、親しみやすいネタが多くて面白いですね。 「続・アルゴリズムを学ぼう」h…

lens

しーんじてーこーころがとーきーめーいたー瞬間をー遠い昔のことですが、こんな記事を書きました。 record update - yunomuのブログ recordのupdateめんどくさいよねという話。で、コメント欄でふみさんに「lensあるよ」って言われました。 http://hackage.h…

手帳とノートと私

システム手帳というデバイスは、並列した大量の情報を処理するために機関銃が一般化して散兵戦が主になった頃の軍で生まれた、「つまりシステム手帳はミリタリーアイテムなんだよ!」って軍オタが言っていたのを聞いたことがありますが、本当かどうかは知り…

ノートにこだわりが出てくる

久しぶりに日記的な文章を。あ、お酒は飲んでません。最近、主戦場が徐々にソースコード以外の部分にも及び始めていて、それにともない武器の優位性や重要度も変化しつつあって、つまりノートをまたよく使うようになってきました。雑多な色々を整理したいな…

record update

Haskellのrecordを使っているとこういう事をよくやる。 data Test = T { a :: Int, b :: String } updateA :: Test -> (Int -> Int) -> Test updateA t f = t { a = f (a t) } Test型のデータのaをf関数を使って更新したい。例えばほら、Stateにはmodify関数…

jhcをビルドする

環境:Mac OS X 10.8.2, GHC 7.4.2jhcはだいたい下記の記事に書いてあるとおりなんですが(autoreconfやaclocalが無い時はautoconfとautomakeをMacPortsとかでインストールするとたぶん大丈夫)、いろいろ引っかかりましたので。 簡約!λカ娘(4)の紹介とjhcの…

Haskellで特定のモジュールのコンパイルが遅すぎる

1つのモジュールのコンパイルに時間がかかりすぎて、5分間何も出力がなかったとしてビルド失敗扱いされるの、つらいものがある— 就活用アカウントさん (@eagletmt) 2013年1月24日という話があって。具体的にはaws-sdk(https://github.com/worksap-ate/aws-sd…

Haskell忘年会でAWS SDK for Haskellについて喋った

去る12月16日に行われたHaskell忘年会なるイベントでしゃべってきました。 忘年会もなにも勉強会とかにはあんましで出かけないのでほとんどの方ははじめましてという感じ? いや知ってる人も割といましたね。同僚とか同僚とか。その時の発表スライドです。 A…

少しはテストを楽しくやる(QuickCheck)

テストって別にやりたくないわけじゃないっていうかやりたいんですけど、なんかつい後回しになってしまうというか。 でも例えば外部システムとの連携部分だったりすると私は割と真面目にテストを書くんですが、普段はなんかなんとなく面倒臭い。面倒くさいと…

readを使って文字列をRead aに変換しようとする

最初はreadTextみたいな関数を作ろうとしていました。 readの、StringじゃなくてTextを取る版。 readText :: Read a => Text -> a で、最初はこんな感じで実装しようとしていた。 module Main where import Data.Text (Text) import qualified Data.Text as …