RabbitMQ 3.x から Queue のミラーリング方法が変更になった

今まで, Queue 作成時に指定していたミラーリングのパラメータは廃止になり, rabbitmqctl コマンドで指定するように変更なった. Perl の AnyEvent::RabbitMQ や Python の kombu(celery) で x-ha-policy を指定する方法は, RabbitMQ 2.x までしか通用しない.…

Python の amqplib とか py-amqp で Message を Consume する際, ヘッダに x-death が付与されていると落ちる件

データに謎の 'A' という型が定義されているのが問題. AMQP の Elementary domains を見たのだけれど 'A' が何か見当たらない…。助けて偉い人orz とりあえず, amqplib 1.0.2 は, 以下の黒魔術で回避可能. kombu 2.5.0 から amqplib に代わり py-amqp がデフ…

Python Web Framework Advent Calendar 2012 (9日目) Django Model で Named Scope

前置き この記事は、2012 Pythonアドベントカレンダー(Webフレームワーク) - connpass の 9 日目の記事となります。 今回は、Rails の Named Scope の真似を Django Model で実現する方法と、それを利用した論理削除の紹介を行います。 Django Model で Name…

ZeroMQ Erlang Binding(NIF) の inproc と Erlang の素のメッセージ送信の速度を比較してみた

コードと結果は下記の通り https://gist.github.com/3193117Erlang で作ったサーバに LL で作ったワーカーをぶら下げようと考えており、どうせならナウでヤングな ZeroMQ を間に入れてみようと思い立ちました。 ズボラな私は、ZeroMQ にワーカーのロードバラ…

100マス計算のシートを生成する

パズル教室にて娘の数学的センスをベタ褒めされたものの、計算速度が遅いので100マス計算を家族でやるようにと指示を受けた。 早速、Python で100マス計算シートを HTML 形式で出力するコマンドを作成したのだが、身近に Haskeller が居るのだから Haskell …

Z会三年生中学受験コース5月のてんさく問題を Python で解いてみた

妻と娘から次の質問をされた。 4けたの数について、それぞれの位の数字を大きいじゅんにならべた数から小さいじゅんにならべた数をひくという計算を行います。 1974 について、この計算を 100 回行った答えを書きなさい。 転職先の会社で Python を使うこと…

転職します

本日(2012年5月31日)をもって、現在お世話になっている会社を退社し、明日から別の会社に入社します。 他所様に伝えるべき何かを持ち合わせてはいないのですが、私に職を紹介してくれたN氏、現職の方々、次職の方々への私信という事で慣れない筆を執りました…

Scala で Android アプリ開発(NDK 編)

下準備 始めに /path/to/hello-world/project/build.scala を次のように修正する。 // ..snip.. object AndroidBuild extends Build { lazy val main = Project ( "Hello World", file("."), settings = General.fullAndroidSettings ++ AndroidNdk.settings…

Scala で Android アプリ開発(AlertDialog 編)

毎回、AlertDialog を作るのは面倒なので、次のようなオブジェクトを作っておく。 package com.github.cooldaemon.HelloWorld import _root_.android.content.Context import _root_.android.app.{Dialog, AlertDialog => AAlertDialog} import _root_.andro…

Scala で Android アプリ開発(AsyncTask 編)

ScalaでAndroidアプリ作成時、AsyncTaskの可変長引数メソッドが使えないことへの対策とサンプル ― Gist を丸パクリ。Scala は、可変長引数を持つメソッドを上書きできないので、可変長引数を上書き済みの /path/to/hello-world/src/main/java/com/github/coo…

Scala で Android アプリ開発(Log 編)

ログを出力する際、ログ出力位置の情報も一緒に出力する。 package com.github.cooldaemon.HelloWorld import _root_.android.util.{Log => ALog} object Log { val TAG = "HelloWorld" def e(m: String) = printlog(ALog.e, m) def w(m: String) = printlog…

Scala で Android アプリ開発(ActionBarSherlock 編)

ActionBar は使いたいけれど、ターゲットの API Level が低い場合に重宝する ActionBarSherlock を Scala から使う。 sbt プロジェクト設定 まずは依存するライブラリを指定する。準備編を参考に作成したディレクトリ /path/to/hello-world の直下に main.sb…

Scala で Android アプリ開発(Toast 編)

Toast 表示中に Toast を表示すると問題があるらしい*1ので、次のようなラッパーオブジェクトを用意する。 package は、準備編で用意したもの。 package com.github.cooldaemon.HelloWorld import _root_.android.content.Context import _root_.android.wid…

Scala で Android アプリ開発(準備編)

備忘という名の引き継ぎ的なアレ。Mac OSX 10.7 上で開発する事を前提とする。 sbt の準備 この辺りを見ながら sbt-launch.jar をダウンロードし、/usr/local/bin 配下に sbt-launch-0.11.3.jar という名前で保存する。 このままだと使い難いので、下記の Sh…

Scala で Iteratee と Enumerator を書く練習

とりあえず使い方だけメモ package com.github.cooldaemon.scalaz_test import scalaz._ object TryIteratee { import Scalaz._ import IterV._ def run { implicit val ListEnum = new Enumerator[Seq] { def apply[E, A](e: Seq[E], i: IterV[E, A]): Iter…

Scalaz.concurrent

この記事は、Scala Advent Calendar JP 2011 の14日目です。無理を言って、二日間も枠を頂いてしまいました。今回は、Scalaz 6.0.3 の concurrent について解説を行います。個人的には Scalaz.concurrent の主役は Promise だと思っているので、早速、その解…

Scala STM CommitBarrier

この記事は、Scala Advent Calendar JP 2011 の13日目です。今回は、Scala STM 0.4 から導入された CommitBarrier の解説を行います。 CommitBarrier の基本 まずは、下記のコードをご覧ください。 import org.scalatest.fixture.FixtureFunSuite import sca…

scalaz.Bifunctor と Either

前回メモし忘れていた Either の小ネタを紹介。 例の如く scalaz の import は必須。 import scalaz._ import Scalaz._ Either を取得した後、普通は、処理の分岐を下記のように記述する。 1.right[String] match { case Right(n :Int) => n + 1 case Left(s…

Either と scalaz.Validation

下記で取り上げられているネタについてメモを残す。 Scala の Either についての考察 - scalaとか・・・ Scala勉強会第53回 (EitherやScalazのValidationについて) - Togetter Either と Scalaz Either は flatMap メソッドを持たないので for 式では使えな…

scalaz.StateT で scalaz.State と Option を組み合わせる

scalaz の ExampleState に StateT のサンプルが無かったので試してみた。 気が向いたら、そもそも State モナドって何よ?という所から説明書くかも。 package com.github.cooldaemon.try_scalaz import scalaz._ object TryState { import Scalaz._ def ru…

続:gen_server のコールバックモジュール内で badarith が発生すると supervisor ごと落とされる

二年半前に gen_server のコールバックモジュール内で badarith が発生すると supervisor ごと落とされる というメモを残したにも関わらず、すっかり内容を忘れてしまい、変な Process Design の poolboy*1 の poolboy_sup が安全か検証をするのに時間が掛か…

Supervisor Tree を Alloy で記述してみた

今ひとつ Alloy を理解できていないので、Erlang や Scala で使う Supervisor Tree の仕様を記述まずは、集合を定義してみる。 abstract sig Actor { parent : lone Supervisor } sig Worker extends Actor {} sig Supervisor extends Actor { child : Actor…

RabbitMQ のクラスタリング機能にキューのミラーリングが追加されたので RabbitFoot (AnyEvent::RabbitMQ) から試してみる

クラスタリングやキューのミラーリングの詳細は、下記参照の事。 RabbitMQ - Clustering Guide RabbitMQ - Highly Available Queues RabbitMQ をクラスタリングする 今回はサーバを複数用意できなかったので、一つのサーバ上で RabbitMQ を二つ起動する。 % …

CCCrypt(Objective-C) で暗号化したデータを Crypt::OpenSSL::AES(perl) で復号化する

iPhone/iPad/iPod で暗号化(AES256 を使用)したデータをサーバ側で復号化するのに半日ハマったのでメモ。まず、ObjC 側。CCCrypt の解説は方々に存在しているので割愛。IV に NULL を指定しているので 0x00 が 16 Byte という事になる。 CCCrypt( kCCEncrypt…

ScalaTest で FixtureFlatSpec を使う場合の疑問点など

STM の動作確認のため、下記のようなコードを書いたのですが…*1 import org.scalatest.fixture.FixtureFlatSpec import org.scalatest.matchers.ShouldMatchers import scala.concurrent.stm._ class RefSpec extends FixtureFlatSpec with ShouldMatchers {…

List, Either, Option を for 構文で使う話しの続き(toSeq, toRight, toOption を使いこなしてますか?)

Scala for = Haskell do (Java の例外を Either で包んだ後の話し) が少し好評だったので、調子に乗ってちょいネタ。 for 構文を使うと match case のネストを避けられるけれど、じゃー、下記のように書けるのかと言うと… for { a <- Some(1) b <- Right(2).…

Mochikit で sendXMLHttpRequest する際に Content-Type を設定しないと、CGI.pm で URL エンコードされた POST データを受け取れない

サーバの入れ替えを行う際に、時間を無駄にしたのでメモ。旧環境では、下記のコードで問題なく動作していたのだが… // ..snip.. var r = getXMLHttpRequest(); r.open('POST', CGI_PATH, true); var args = formContents('form_id'); this.d = sendXMLHttpRe…

Scala for = Haskell do (Java の例外を Either で包んだ後の話し)

最近、こっそりと RabbitMQ Java Client の Scala Wrapper を書いています。 Scala から Java のライブラリを使う場合、例外処理の扱いに困るのですが、当然、RabbitMQ Java Client も例外投げまくりです。 そこで scala.util.control.Exception.allCatch を…

Unite を始めてみた(ack と組み合わせて使う方法など…)

vim

Vim の Plugin を更新がてら、Yokohama.vim #0 の頃から気になっていた Unite に入門してみました。 基本設定 一先ずインストール後に下記のようなキーマッピングにしてみました。 nmap ;; :Unite nmap ;s :Unite source<CR> nmap ;b :Unite buffer<CR> nmap ;f :Uni</cr></cr>…

neocomplcache + snipMate をやめて neocomplcache 単体に切り替える

vim

久しぶりに neocomplcache を git pull したら snipMate の multiple snippets*1 に対応していたので、neocomplcache 単体に切り替えてみました。 これで、snipMate_complete.vim は、お払い箱です。 .vimrc に追加した内容 始めに、snipMate の TAB キーを…