2013-01-01から1年間の記事一覧

師走なので今年おこなったプログラマー活動を振り返る

年末までまだあるし年内の活動まだ確定してないけど、なんか年内忙しくてもうなんもできなそうだから今公開します。 総括 今年は去年に比べると格段にオープンソース活動ができたのでよかった感じがする。 一方、家庭優先にしててコミュニティ活動(Niigata.p…

PHP はいつもわたしに新鮮な驚きを与えてくれる

php

ことの始まり PHP の srand 関数について調べていて、ひょんな拍子にsrandのseedに文字列(numericである必要はあるけど)を渡せることを知った。 では、ここに long を超えるものを放り込むとどうなるのか。 では結果をごらんください。 「!?!?」 なぜ…

ブログの名前を変更しました

旧称:「life.should be_happy # => 1 examples, ? failures」 新称:「猫型の蓄音機は 1 分間に 45 回にゃあと鳴く」 です。旧称のほうは rspec っぽい記法で「幸福は市民の義務である」的なディストピア感があって気に入っていたのですが、いいかげん expe…

Rubyにおける「環境」の話

環境というのはスコープと言い換えてもいいけど、ようするに「今実行している行から何が見えて何が触れるのか」という話。一度自分の頭の整理のためにきちんとまとめておきたいと思っていたので昼休みを利用してまとめる。 基本 環境変数 ENVっていうハッシ…

JavaScript で UI を書くことについて思ってることを書く

最近ギョームでジャバスクリッ書いてる。というか CoffeeScript 書いてる。 そんな中で、ある程度以上複雑なUIを動的型付け言語で書くのは狂気の沙汰だという気持ちがある。 サーバーサイドは結構論理的にきれいな設計にできることが多く、そんなに複雑なオ…

例外あがってきたときに回数制限つきで retry するのどうやったらきれいに書けるの問題 in ruby

1年くらい前(?)にわたしのTLで話題になったやつに1年越しでいい案が生まれたので、こういうのはどうかという記事を書く。 id:kksg 向けのエントリである。 class MyError < StandardError; end def maybe_fail(max_retry = 1) raise MyError, 'error' unl…

最近 IDE 使ってる

ruby 書くときの話なんだけど。ずっと emacs 使ってて、そのあと vim に乗り換えて、今 IDE 使ってる。 emacs のときは flymake が便利だなーって感じがあったんだけどなんだかんだで設定とかけっこうしないといけないし rbenv 使ったらハマった〜みたいなこ…

やはり俺のMVCは間違えている in Backbone.js

昨日のエントリの続き。こっちのほうが有益な情報になってると思うんだけど多分昨日ほどはのびない。 さて、昨日のエントリーでは「Backbone.jsのViewはControllerってことなのか〜それは俺が間違えてたわ〜、えっじゃあ Marionette.js 使う場合はどうなの」…

やはりおまえらの MVC は間違えている in バックボーンジェーエス

続編の紹介 続編 やはり俺のMVCは間違えている in Backbone.js を書いた。そっちのほうが有益な情報が乗ってると思うけど面白くないかもしれない 以下本編 MVC の話と宗教の話と政治の話と野球の話はしてはいけないそうですがそんなの知るか俺はするぞ クラ…

rack-session-php というニッチなモジュールできたよ〜

何をする gem なのか Rack から PHP のセッションファイルを読み書きする gem であります。既存の gem にも似たような乃があるのですが、デシリアライズをまじめにやってなかったり、マルチバイト食わせると死んだり、read-only だったりしたので自分で書き…

php_session という gem を書いた

何をする gem なのか RubyからPHPのセッションファイルをいじりたいみたいなこと、あんまりないと思う。 でも、PHP で動いてる大きめのアプリケーションを Ruby に載せ変えたいね〜みたいなことはある気がする。一気に作っちゃってもいいんだけど、ちょっと…

jasmine で Backbone.js とか Marionette.js の view のテストしたい

問題 テンプレートが html とかに書かれてて html ファイルと js が密結合しててつらい。たとえば template: "#nyan" とかなってる Marionette.js のviewをテストするときにそこにテスト側から任意のテンプレートをインジェクトしたい 解決方法 jasmine-jque…

middleman 使った場合のユニットテストどうするのがベストプラクティスなの

情報が少ない。 参考までに私が今やってる環境を書いておく。 middleman 使ってCoffeeScriptでガリガリ開発する ユニットテストは jasmine を使って、spec も CoffeScript で書く E2Eテストは今のところまだ考えてない という状況。jasmine はCoffeeScriptを…

middleman 良かった

クライアントサイドのお仕事が一個入って、ためしにmiddleman使ってみたら良かった。 セットアップ 公式読めば良い 使い方 公式読めば良い その他 公式読めば良い 与太話 プログラマー、公式のドキュメント読めば良いのに読まないでわざわざ変な自己流みたい…

Gatchaman gem の version 0.2.3をリリースしました

src 属性が存在しないimgタグがあるとnilで死ぬ問題点が修正されました。thanks to wneko! というか Gatchaman のメンテ、完全にうーねこがやってるのでもうかんぜんに wneko ware ですね!いつもありがとうございます! ちなみに Gatchaman gem はこういう…

ウォーターセル株式会社に join します

とはいえ、パートタイムです。今までの仕事も今まで通り行ってるので、実情としては仕事を増やしたという感じです。子供できてお金必要だし。みなさんの大好きな転職エントリではありません。具体的な仕事はまだ始まってない(今週金曜日が初仕事です)し、…

Scalaの勉強会、Scala入学式を新潟県長岡市でやってきました #nds33

Scala 一年生のわたしですが、僭越ながら「みんなで Scala に入門しようぜ!」というハンズオン形式のセミナーの講師を行ってきました。「Scala 入学式」という名前は papix 氏がやってる「Perl 入学式」のパクりです! この勉強会に使った資料は以下にアッ…

YAPC::Asia 2013 レポート

YAPC::Asia 2013 にはプライベートの都合で参加できませんでした。YAPC今年もすごく楽しかったです。とくに dankogai が親指を立てながら溶鉱炉に沈んでいくシーンは涙無しには見られなかった。 クソ!行きたかった!!!!!

なぜ akka を使うべきなのか

馬鹿にはマルチスレッドは複雑すぎる わたしマルチスレッド怖いんです。なんでかっていうと、あれ、これってスレッドセーフだっけ?とか考えないとだめだし、えーっとこの変数は別のスレッドからアクセスされる可能性があるから〜とか考えないとだめ。あとロ…

spray io を使って akka に HTTP インターフェイス持たせるみたいなやつ

GET / するとストリーミングを開始して、POST / するとそのPOST内容が GET / してるクライアントたちに即配信されるという簡単なサンプルをアレしてみた。 なんかレスポンスが終わる(というかコネクションが切れる)たびに user/IO-HTTP/listener-0/* から …

突然死botちゃんのコードが奇麗になったよ

おかげさまでご好評をいただいている突然死botですが、初めて Scala で書いたプロダクトだったゆえかなり凄惨なソースとなっておりました。 そこで、最近ようやく Scala にも慣れてきたので、specs2でmockito使ってテストするのの練習もかねて、エイヤっとリ…

Akka 2.2 の pipeline のテストを書く

PipelinePorts を作ってそこにコマンドやイベントを流し込めば普通に結果が返り値で返ってくるのでテストを書きやすい val pipelinePort = { val ctx = new PipelineContext {} PipelineFactory.buildFunctionTriple(ctx, new YourPipelineStage) } // パイ…

Akka2.2 既に死んでるactorをwatchした場合どうなるのか

ちゃんと Terminated が送られてくる see http://doc.akka.io/docs/akka/2.2.0/general/supervision.html#what-lifecycle-monitoring-means One important property is that the message will be delivered irrespective of the order in which the monitori…

Akka(2.2) のネットワークサーバーを Graceful に shutdown

こんな感じでどうでしょうね。 解説はコメントを参照のこと。 import akka.actor._ import akka.actor.Terminated import akka.io._ import akka.io.IO import akka.util.ByteString import java.net.InetSocketAddress import scala.collection.immutable.{…

APNsGatewayServer を書いてたら AWS に仕事を奪われたので現代のラッダイト運動を起こしたい

APNsGatewayServer を書こうの巻 えー。APNsとのやりとり部分を書くのはなにげにとても面倒です。面倒な理由として プロトコルがアップルのオレオレプロトコルであり、なおかつバイナリでやりとりしている APNsサーバーに対してリクエストを送っても、基本的…

TcpPipelineHandlerで管理してるコネクションを切るの術

解決したい問題 Akka でネットワークサーバーを書く場合、エンコード/デコードの部分は Pipeline を利用し、TCPレイヤーの IO をその Pipeline に流し込む場合は TcpPipelineHandlerを利用するのが定石だと思いますが、ではサーバーがレスポンスを返したあと…

科学とかそういうのに対する不信の話

「専門家達の作り上げた検証のプロセス」に対しての不信が強いひとたちというのが一定数いるように思う。 たとえば、編集作業はどんな編集であろうとそれそのものが悪であり、編集されていない生の声が見れるインターネット上の言論こそが本物だ!と主張する…

レールルで Controller から ActiveRecord を生で触るのをやめたい話

単純な操作ならいいんだけど、複数テーブルに対してごにょっと操作をして、それがアトミックでなくてはならなくて、みたいなときの話。 単純な複数テーブルに対する操作なら多分主従の関係みたいなのあると思うしそういうときには主のほうを表すARを継承した…

Ruby の練習問題書いてるけど問題作るのってむずかしい

Ruby の練習問題を作ろうとしてるんだけど、問題を作るのってめちゃめちゃむずかしい。 今はとりあえず課題ひとつだけつくって、それは単方向リストを実装しろっていう課題なんだけど、これが「どのくらいの難易度なのか」ということがまずわからない。あと…

Scala の implicit conversions がよくわかんなかったからいろいろやってようやくわかった気がする

アホなので implicit conversions みたいな魔術っぽいことされると「えっなになに」「なにが起きてるの」ってなってしまって混乱する。いままでの「なんとなくこんな感じのアレだよね」みたいなやつとしては、たとえば String を wrap するような SugoiStrin…