In today’s rapidly evolving tech landscape, optimizing performance is a critical factor, especially when dealing with large-scale processing on cloud platforms. Many of you might find yourselves needing to automate Chrome on a server for v…
なぜ、この記事を書くのか? 約9年ぶりの投稿です。9年前、情報公開が難しい会社(とあるFinTech企業)から情報公開を価値と認めてくれる会社(gumi)へ転職したため、所属企業の名前で記事を書いたり、イベントに登壇したりしていました。結果、この個人ブログ…
今まで, Queue 作成時に指定していたミラーリングのパラメータは廃止になり, rabbitmqctl コマンドで指定するように変更なった. Perl の AnyEvent::RabbitMQ や Python の kombu(celery) で x-ha-policy を指定する方法は, RabbitMQ 2.x までしか通用しない.…
データに謎の 'A' という型が定義されているのが問題. AMQP の Elementary domains を見たのだけれど 'A' が何か見当たらない…。助けて偉い人orz とりあえず, amqplib 1.0.2 は, 以下の黒魔術で回避可能. kombu 2.5.0 から amqplib に代わり py-amqp がデフ…
前置き この記事は、2012 Pythonアドベントカレンダー(Webフレームワーク) - connpass の 9 日目の記事となります。 今回は、Rails の Named Scope の真似を Django Model で実現する方法と、それを利用した論理削除の紹介を行います。 Django Model で Name…
コードと結果は下記の通り https://gist.github.com/3193117Erlang で作ったサーバに LL で作ったワーカーをぶら下げようと考えており、どうせならナウでヤングな ZeroMQ を間に入れてみようと思い立ちました。 ズボラな私は、ZeroMQ にワーカーのロードバラ…
パズル教室にて娘の数学的センスをベタ褒めされたものの、計算速度が遅いので100マス計算を家族でやるようにと指示を受けた。 早速、Python で100マス計算シートを HTML 形式で出力するコマンドを作成したのだが、身近に Haskeller が居るのだから Haskell …
妻と娘から次の質問をされた。 4けたの数について、それぞれの位の数字を大きいじゅんにならべた数から小さいじゅんにならべた数をひくという計算を行います。 1974 について、この計算を 100 回行った答えを書きなさい。 転職先の会社で Python を使うこと…
本日(2012年5月31日)をもって、現在お世話になっている会社を退社し、明日から別の会社に入社します。 他所様に伝えるべき何かを持ち合わせてはいないのですが、私に職を紹介してくれたN氏、現職の方々、次職の方々への私信という事で慣れない筆を執りました…
下準備 始めに /path/to/hello-world/project/build.scala を次のように修正する。 // ..snip.. object AndroidBuild extends Build { lazy val main = Project ( "Hello World", file("."), settings = General.fullAndroidSettings ++ AndroidNdk.settings…
毎回、AlertDialog を作るのは面倒なので、次のようなオブジェクトを作っておく。 package com.github.cooldaemon.HelloWorld import _root_.android.content.Context import _root_.android.app.{Dialog, AlertDialog => AAlertDialog} import _root_.andro…
ScalaでAndroidアプリ作成時、AsyncTaskの可変長引数メソッドが使えないことへの対策とサンプル ― Gist を丸パクリ。Scala は、可変長引数を持つメソッドを上書きできないので、可変長引数を上書き済みの /path/to/hello-world/src/main/java/com/github/coo…
ログを出力する際、ログ出力位置の情報も一緒に出力する。 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…
ActionBar は使いたいけれど、ターゲットの API Level が低い場合に重宝する ActionBarSherlock を Scala から使う。 sbt プロジェクト設定 まずは依存するライブラリを指定する。準備編を参考に作成したディレクトリ /path/to/hello-world の直下に main.sb…
Toast 表示中に Toast を表示すると問題があるらしい*1ので、次のようなラッパーオブジェクトを用意する。 package は、準備編で用意したもの。 package com.github.cooldaemon.HelloWorld import _root_.android.content.Context import _root_.android.wid…
備忘という名の引き継ぎ的なアレ。Mac OSX 10.7 上で開発する事を前提とする。 sbt の準備 この辺りを見ながら sbt-launch.jar をダウンロードし、/usr/local/bin 配下に sbt-launch-0.11.3.jar という名前で保存する。 このままだと使い難いので、下記の Sh…
とりあえず使い方だけメモ 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…
この記事は、Scala Advent Calendar JP 2011 の14日目です。無理を言って、二日間も枠を頂いてしまいました。今回は、Scalaz 6.0.3 の concurrent について解説を行います。個人的には Scalaz.concurrent の主役は Promise だと思っているので、早速、その解…
この記事は、Scala Advent Calendar JP 2011 の13日目です。今回は、Scala STM 0.4 から導入された CommitBarrier の解説を行います。 CommitBarrier の基本 まずは、下記のコードをご覧ください。 import org.scalatest.fixture.FixtureFunSuite import sca…
前回メモし忘れていた Either の小ネタを紹介。 例の如く scalaz の import は必須。 import scalaz._ import Scalaz._ Either を取得した後、普通は、処理の分岐を下記のように記述する。 1.right[String] match { case Right(n :Int) => n + 1 case Left(s…
下記で取り上げられているネタについてメモを残す。 Scala の Either についての考察 - scalaとか・・・ Scala勉強会第53回 (EitherやScalazのValidationについて) - Togetter Either と Scalaz Either は flatMap メソッドを持たないので for 式では使えな…
scalaz の ExampleState に StateT のサンプルが無かったので試してみた。 気が向いたら、そもそも State モナドって何よ?という所から説明書くかも。 package com.github.cooldaemon.try_scalaz import scalaz._ object TryState { import Scalaz._ def ru…
二年半前に gen_server のコールバックモジュール内で badarith が発生すると supervisor ごと落とされる というメモを残したにも関わらず、すっかり内容を忘れてしまい、変な Process Design の poolboy*1 の poolboy_sup が安全か検証をするのに時間が掛か…
今ひとつ Alloy を理解できていないので、Erlang や Scala で使う Supervisor Tree の仕様を記述まずは、集合を定義してみる。 abstract sig Actor { parent : lone Supervisor } sig Worker extends Actor {} sig Supervisor extends Actor { child : Actor…
クラスタリングやキューのミラーリングの詳細は、下記参照の事。 RabbitMQ - Clustering Guide RabbitMQ - Highly Available Queues RabbitMQ をクラスタリングする 今回はサーバを複数用意できなかったので、一つのサーバ上で RabbitMQ を二つ起動する。 % …
iPhone/iPad/iPod で暗号化(AES256 を使用)したデータをサーバ側で復号化するのに半日ハマったのでメモ。まず、ObjC 側。CCCrypt の解説は方々に存在しているので割愛。IV に NULL を指定しているので 0x00 が 16 Byte という事になる。 CCCrypt( kCCEncrypt…
STM の動作確認のため、下記のようなコードを書いたのですが…*1 import org.scalatest.fixture.FixtureFlatSpec import org.scalatest.matchers.ShouldMatchers import scala.concurrent.stm._ class RefSpec extends FixtureFlatSpec with ShouldMatchers {…
Scala for = Haskell do (Java の例外を Either で包んだ後の話し) が少し好評だったので、調子に乗ってちょいネタ。 for 構文を使うと match case のネストを避けられるけれど、じゃー、下記のように書けるのかと言うと… for { a <- Some(1) b <- Right(2).…
サーバの入れ替えを行う際に、時間を無駄にしたのでメモ。旧環境では、下記のコードで問題なく動作していたのだが… // ..snip.. var r = getXMLHttpRequest(); r.open('POST', CGI_PATH, true); var args = formContents('form_id'); this.d = sendXMLHttpRe…
最近、こっそりと RabbitMQ Java Client の Scala Wrapper を書いています。 Scala から Java のライブラリを使う場合、例外処理の扱いに困るのですが、当然、RabbitMQ Java Client も例外投げまくりです。 そこで scala.util.control.Exception.allCatch を…