読者です 読者をやめる 読者になる 読者になる

Servant に Experimental モジュールとして追加された認証の仕組み

はじめに 久しぶりに Haskell に戻って Servant を触ってみたら,いつの間にか認証周りの仕組みが実験的に追加されていました. 興味がわいたため,Authentication in Servant とコードを読みながら少しだけ仕組みをのぞいてみました. バージョン情報 lts-7…

「Chainerによる実践深層学習」を読みながら Chainer に入門した話

はじめに 「Chainerによる実践深層学習」という本を読みながら実際に chainer を触ってみました. http://shop.ohmsha.co.jp/shopdetail/000000004728/ 実際に書いたコードはこちらです. https://github.com/krdlab/examples/tree/master/try-chainer 翻訳…

RabbitMQ の分散構成はどうするのが良さそうか?

はじめに モジュール間連携のイベントバスとして RabbitMQ を使用したいのですが,クラスタを組む場合にどうするのが良いのかな?ということを調べてみました *1. なお,以降では「CAP のうち CP 特性が欲しい」ということを念頭において調査しています. …

Haskell で書いた Web サービスにおける IO 部分の自動テスト

Haskell で書いた Web サービスの自動テストを考えたとき,IO の部分が問題になる場合があります. KVS や DBMS を利用する部分は CI サービス上で必要なものを起動すれば問題ないのですが,外部サービスと連携する部分は問題として残ります. またデグレす…

OpenID Connect 1.0 Relying Party を実装するための Haskell 用ライブラリ

タイトルの通り,OpenID Connect 1.0 のクライアントライブラリを作りました.Hackage に上げてありますので cabal install で導入できます. 背景 Web サービスを作成するにあたって認証をどうするかは悩ましいところです.先々の展望を考慮して自前で実装…

haskell-servant の利用例とちょっとだけ仕組みの調査

はじめに Haskell には大小様々な Web フレームワークがあります.(yesod, scotty, spock, apiary, rest, 等々) API サーバを作りたいときは scotty を利用することが多かったのですが,つい最近 haskell-servant というパッケージ群を知りました. 小さな A…

haskell-relational-record の MySQL driver

こちらの記事 で作者の方が haskell-relational-record の解説をされています. MySQL からも使いたいなぁと思ったので,他の RDBMS driver をまねて MySQL driver を書いてみました. haskell-relational-record-driver-mysql 少しずつブラッシュアップして…

Haskell の machines に入門してみた,というお話

はじめに io-streams パッケージがリリースされた折にふと「conduit,pipes,io-streams 以外の streaming data を扱うライブラリには何があるんだろうか?」と疑問に思いつぶやいてみたところ, machines がある ということを教えていただきました. 気にな…

LTSV format parser in Haskell

はじめに 少し前から LTSV が話題になっています.ログ出力データの処理がやりやすそうです. http://ltsv.org/ 上記サイトに載っているとおり仕様がシンプルですから,パーサの練習問題としてもってこいな気がしました. attoparsec による実装 ByteString …

cassy: Cassandra client for Haskell

最近 Cassandra を利用する機会がありまして,今回はその絡みで調べてみたことです. そういえば最近になって 1.2 がリリースされましたね.atomic_batch とか気になります. はじめに cassy は Haskell で書かれた Cassandra クライアントです.ClientOptio…

LAPACK wrapper + Matrix/Vector + Some well-known statistical techniques = Lisys

長らく放置状態になっていた Lisys ですが,コード管理を GitHub に変更しました.コード管理が中途半端なまま放置するのは精神的によくありませんでしたので.https://github.com/krdlab/lisys これはなに? 「LAPACK のほんの一部を C# 向けにラップ + Mat…

resourcet パッケージのコードを読んでみた

久しぶりに時間を確保できたため,Resource モナドのあたりを調査してみました.結果としてはよくわからない部分*1 が残っているのですが,ごちゃごちゃを一旦整理する目的で書き出してみました. 見出し はじめに 基本的な使い方 リソース解放 例外安全性 m…

Conduit で Twitter Streaming API を扱う

忙しいときほど他のことをやりたくなるのは人の性なのか...というわけで今回も Haskell 関連の内容です. はじめに Twitter の Streamimg API から取得した内容を Conduit で処理する,という内容です.Streaming API は Source として利用するのに最適な…

超単純 HTTP サーバ (練習)

去年から,仕事の合間に時間を見つけてはちまちまと Haskell の勉強をしていました. でも本を読むだけでは今一なので,ここら辺で一回まとまったものを書いてみようかと.初心者なのは承知の上でコードをさらそうかと. あと Haskell 良いですね.まだうま…

TameJS と Fiber による非同期処理の記述 (2/2)

前回の続きで今回は Fiber の話題.ずいぶんと日が空いてしまいました. 見出し はじめに 環境 node-fibers とは? Fiber の利用例 Fiber を使った非同期処理の記述例 終わりに はじめに 今回は fiber を導入し,非同期 API のコールバック周りを少し整理し…

TameJS と Fiber による非同期処理の記述 (1/2)

前回からかなり時間が空いてしまいました...やっと時間取れた.今回は 2 回に分け,1 回目で TameJSを,2 回目で node-fibers を取り上げたいと思います. ちなみに,「この方法が良い」と言うよりは「こんな方法もありますよね」というスタンスで書いて…

node.js アプリの負荷分散構成を考える

node.js の負荷分散について考えてみました (フェイルオーバは考慮できていません).個人レベルなので 1 台のハード上に仮想マシンを 5〜6 個立ち上げて実験しています. 見出し はじめに cluster で負荷分散 寄り道:cluster の仕組み 例えばこんな全体構成…

Mongoose のモデルに独自メソッドを追加する

久しぶりに Mongoose ネタです.Schema の API である static メソッドについて少しだけ. 今回は短め. 見出し 何ができる? 登録した関数内での処理 実際の定義 参考にした情報 何ができる? 例えば User というモデルを定義 (UserSchema) したとします.U…

ちょっとだけ Inside node.js

またしてもスケジュールきつめのプロジェクトに放り込まれた KrdLab です.Java ジャバしてます.IDE がないとコード書くのがしんどすぎて,もううんざりです. はじめに 何らかのプラットフォームを利用する場合,その仕組みについて知っておくことは,より…

Mongoose のコネクション周り

node.js + MongoDB はイイ感じです.というわけで Mongoose ネタの続き. 見出し connect と disconnect 明示的にコネクションを扱う Connection とイベント connect と disconnect require で取得する Mongoose オブジェクトには connect と disconnect が…

node.js から MongoDB にアクセス (Mongoose の紹介)

node.js から MongoDB にアクセススためのライブラリに Mongoose があります.今回はこれを紹介しようと思います.O/R Mapper っぽく使えるように設計されており,既存の O/R Mapper を使ったことがある人にとっては,比較的わかりやすい仕様です. 見出し M…

お久しぶりです

今,大災害の発生により大変なときであり,ここ数日のニュースは見てるとしゃれになりません. ひとまず今自分にできることを済ませた上で,できる限り平常運転で行こうと思います.何卒ご了承くださいますようお願い申し上げます. ...大学時代の研究室…

Y combinator

最近は残業と休日出勤ばかりでうんざりの KrdLab です. 今回はちょっと毛色の違う話題を.内容はいつの間にか自分用のまとめになってしまいましたが... Y combinator とは? 不動点コンビネータの一種. 不動点とは,ある関数 F を定義したとき,F(p) = …

OutOfMemoryError を分析する

最近仕事で Java ばかりの KrdLab です.そんな中,Eclipse の Memory Analyzer (MAT) が素晴らしかったので紹介. http://www.eclipse.org/mat/ はじめに Java ではメモリリークによって OutOfMemoryError (OOME) が発生する.このリークを特定する作業はな…

2011 年開始

あけましておめでとうございます. 2010 年は日記の更新が滞ってしまいました. 今年は週一ぐらいのペースで更新したいな,と思う元日.あと,Lisys は現在 Google の Project Hosting サービスへの移行を検討しています.ではでは.

DataMapper 0.10.2 Reading (その 4: dm-core/core_ext/)

このディレクトリに配置されたコードは,ruby の標準クラス (モジュール) を拡張するためのもの.具体的には以下の 3 つが拡張されている. Enumerable Kernel Symbol それぞれは小さなコードだが,影響範囲は広い. Enumerable empty?/one?/first/size メソ…

一気に

下書きのままだった記事をアップしてみた. 続くったら,続くんです.

Pocket WiFi

Pocket WiFi なるものを購入してみた.思ってたよりも小さい.スゲーつるつるしてる.プランは「新にねん」で「スーパーライトデータ」にした.これだと本体価格は 15,580 円になる.「にねん M」だと 5,980 円になるが,差額の 9,600 円は 24ヶ月で分割され…

DataMapper 0.10.2 Reading (その 3: dm-core/)

今回からは dm-core/ 以下のコードを見ていきます. 配置確認 うーん,かなり変更されている... dm-core/ adapters/ abstract_adapter.rb data_objects_adapter.rb in_memory_adapter.rb mysql_adapter.rb oracle_adapter.rb postgres_adapter.rb sqlite3…

忘れてた...

DataMapper を 0.10.2 に upgrade したとき... {:nullable=>false} is deprecated, use {:required=>true} instead (./tables.rb:14)あー,ですよねー.

DataMapper 0.10.2 Reading (その 2: dm-core.rb)

やはり,最初はここから. 0.9.x に比べて,格段にモジュール化が進み,非常にシンプルになっている. 最初の方 ひたすら require して,必要なコードを読み込んでいる.所々 TODO があるので,また変わるんだろうなぁ... DataMapper.root module DataMap…

新年 2010

あけましておめでとうございます.今年もよろしくお願いいたします.

DataMapper 0.10.2 Reading (その 1: パッケージ)

今回から 0.10.2 のコードへ突入. その前に,0.9.11 のコードを読み進めたときの反省点. 全体像の把握をきちんとしていなかった 気づいたら深さ優先になってた 図がない! 自分で読み返してもわかりづらい! と,いうわけで,気をつけろよ!>自分 パッケ…

名前データが大量に欲しくなって

テーブルに突っ込むデータとして,名前データが欲しくなったわけです.そしたらこんな記事を発見. http://itpro.nikkeibp.co.jp/article/COLUMN/20060131/228230/ とりあえず ruby 用に書き直してみた.重複云々の部分 (元記事の if 文) は省略しています.…

DataMapper Reading (その 4: Adapter 補足)

前回積み残した TODO の Adapter について.実際に DB へ SQL 発行を行うのが Adapter なので,こいつを実装すればいろんなストレージにアクセスできるようになる.なお,自分で Adapter を実装する場合は,in_memory_adapter.rb が参考になる. AbstractAda…

DataMapper Reading (その 3: 検索メソッド all の処理)

かなーり間が空いてしまいましたが,続きます.早く version 10.x に突入したい.今回は代表的な検索用メソッドである Model#all を読んでいきます. Model#all module DataMapper module Model def all(query = {}) query = scoped_query(query) query.repo…

DataMapper の公式サイトが...

デザインが新しくなってる. http://datamapper.org/ 内容は充実しているのだろうか? (なんか Transaction が見つからないけど)

DataMapper Reading (その 2: モデルの save 処理)

今回はモデルの save 処理を軸に読み進めていきます. Resource#save メソッド モデルの save メソッドは,Resource モジュールに定義されている. module Resource def save(context = :default) ... associations_saved = false child_associations.each {…

OB 会と異人館

10/10 (土) は OB 会,10/11 (日) は神戸の異人館に行ってきました. OB 会 楽しかったよ!みんなあんまり変わってねぇなぁ! だが,変化がないわけではない (だって,あんまり詳しくかけないじゃん...). 異人館 神戸の異人館.JR 新神戸駅から徒歩 10 …

DataMapper Reading (その 1: module DataMapper)

DataMapper モジュールには,setup や repository メソッド,migration 関連メソッドが定義されている. 対象バージョン 0.9.11 DataMapper.setup メソッド # 使用例 DataMapper.setup(:default, 'mysql://localhost/hoge_db') DataMapper を使うときに必ず…

DataMapper Reading (はじまり)

DataMapper のコードを読む.最終的には Adapter を実装したい. 公式 http://datamapper.org/ github http://github.com/datamapper 作業環境 OS ubuntu 9.04 DataMapper 0.9.11 (data_objects や extlib は 0.9.12) でもこれは途中まで (0.10.1 に上がって…

DataMapper を使う (Hook)

メソッド呼び出し前後に callback を仕掛けることができる. DataMapper Hooks http://datamapper.org/doku.php?id=docs:hooks インスタンスメソッドに対する Hook class Post include DataMapper::Resource ... before :save, :do_before_save # save メソ…

DataMapper を使う (Single Table Inheritance)

DataMapper で STI を表現する場合は,以下のようにする. class Person include DataMapper::Resource property :id, Serial property :name, String property :type, Discriminator ... end class Employee < Person property :dept, String # 所属 end cl…

twitter はじめてみた

とりあえずさわってみよう,ということで. サイドバーに表示させてみた.

DataMapper を使う (Index)

以下の記事によれば,property の定義で index の指定ができるようです. http://jlaine.net/2008/6/2/specifying-indeces-in-datamapper 具体的には,property 定義で :index => true を指定する. unique index にしたい場合は :unique_index => true を指…

DataMapper を使う (Transactions)

今回は Transaction 機能について. 公式サイト http://datamapper.org/doku.php?id=docs:transactions 環境 dm-core-0.9.11 モデル定義 class Account include DataMapper::Resource property :id, Serial property :name, String, :nullable => false prop…

DataMapper を使う (Associations)

目次 has n and belongs_to (One-To-Many) has n, :through (One-To-Many-Through) ここでちょっと補足 has, and belongs to, many (Or Many-To-Many) Self-Referential Has, and belongs to, many Adding To Associations Removing From Associations Custo…

DataMapper を使う (Finding)

さて,今回は検索について.1ヶ月ぐらい前に書いたものだけど... (この続き→ DataMapper を使う - KrdLabの不定期日記) いつも通り以下のサイトを参考に,ざっと使い方をメモってみた. http://datamapper.org/doku.php?id=docs:finders 使えるメソッド D…

シャーロック・ホームズを久々に読み直している件

おもしろい.何度読んでもおもしろい. 睡眠不足になる.タスケテ... 新訳シャーロック・ホームズ全集を全巻購入 (バスカヴィル家の犬と回想は発送待ちだが). 新訳シャーロック・ホームズ全集 (光文社文庫) 「推理博物館」も購入. シャーロック・ホーム…

JUDE のセットアップ (ただのメモ)

# cd ~/tmp jude-community-5_5.zip をダウンロード unzip jude-community-5_5.zip sudo mv jude_community/ /usr/local/share/ sudo vim /usr/local/share/jude_community/jude 以下のように書き換える JUDE_HOME=/usr/local/share/jude_community #JUDE_HO…