Foreman で環境変数を設定しよう

Foreman 使っていますか? Foreman はプロセスの実行を一元化する為のツールです。詳しくは http://blog.daviddollar.org/2011/05/06/introducing-foreman.html を見てください。 Heroku を使っている人ならもうおなじみのツールだと思います。Cedar Stack で…

Ruby1.9.3

Ruby を 1.9.2 から 1.9.3 にバージョンアップした時に、一カ所つまずいたことがあったのでメモ。 環境 Ubuntu 11.10 ビルドの手順はこちら 問題 Ruby をインストールした後 gem コマンドを実行すると、以下のメッセージが表示された。 It seems your ruby i…

Control.Applicative.(<$)

Control.Applicative モジュールに (<$) という関数があります。が、どういう関数なのかわからないので調べます。 型 ghci> :m +Control.Applicative ghci> :t (<$) (<$) :: Functor f => a -> f b -> f a 型を見ると、b は使われずに a が残るようです。実…

Aspen to Cedar

Heroku から Aspen stack から Cedar stack に移行してくださいね、というメールが来ました。 現在 Aspen stack 上で稼働しているサービスは 2 つあり、そのうち一つは破棄してかまわないサービスでしたが、 もう一つは残しておきたかったので、移行すること…

Haskell でソート

Haskell を学習し始めた頃、学習の一環として色々なソートを実装していたのを思い出した。そのときと比べて今はどうなのか、ちょっと試したくなりましたので、再び実装してみた。 現代版のコード (gist) バブルソート マージソート 選択ソート 挿入ソート 比…

Random Bool

すごいHaskell P.340 に State モナドを使って乱数の生成をきれいに書く例が載っている。 import System.Random import Control.Monad.State randomSt :: (RandomGen g, Random a) => State g a randomSt = state random threeConins :: State StdGen (Bool,…

State モナドって...

前回 Writer、Reader、State モナドの理解を深めようと書いたので、State モナドについて詳しく見ていこうと思う。すごいHaskellたのしく学ぼう! を参考に進める。 State の定義 すごいHaskell P. 335 より。 newtype State s a = State { runState :: s -> …

モナドって...

なんとなくモナドのことが分かってきたかな、どうだろう。っていうのが最近の感覚。 モナドが実現しようとしていることは大体理解できたと思っている。実現しようとしていることが何か、一言で言うと、注力したい部分だけに注力できるようにし、注力したくな…

PHPカンファレンス2012に参加してきました

PHPカンファレンス2012に参加してきました。 PHPカンファレンスに参加するのは今回がはじめて。過去の写真を見ると小ホール(?)ごとにセッションを行なっているようだったが、今回は大ホールの中をパーティションで区切って各セッションを開く形となっていた…

list 2

前もちょっと書いたけど、list() の使い方に関して。ちょっと納得いかんのですよ。 バージョン 試した PHP は以下のバージョンです。マシンは MacBook Air。 % php -v PHP 5.3.10 with Suhosin-Patch (cli) (built: Feb 20 2012 22:55:53) Copyright (c) 199…

コメントの罠

PHPUnit でテストを作成していたときのこと、なぜかテストケースとして認識されないテストケースがあった。そのコードを模したコードと、実行結果を以下に載せる。 assertTrue(true); } } % phpunit unit.php PHPUnit 3.6.8 by Sebast…

list

だからどうしたっていう話なんですが。

microtime の罠

こんなコードを書いていると痛い目にあいますよという話。もとい、痛い目にあった話。 問題 こんなコードというのは次のようなコード。

バリデーション重要

検索のリクエストだからといって、入力されたパラメータをバリデーションせずにそのまま SQL にバインドしてはだめ。 数値を期待している変数に、数値として解釈できない文字列が渡された場合、SQL の実行に失敗してしまう。Oracle の場合は エラー: ORA-017…

-fno-warn-unused-do-bind

Haskell でコンパイルするとき (ghci) にはいつも -Wall オプションをつけるようにしている。でもそれがかえって邪魔になる場合がある。例えばどんなときかというと、以下のようなコードの場合。 parseFloat :: Parser LispVal parseFloat = do num1 <- many…

aria2 のインストール

aria2 をインストールしたときのメモ。 Homebrew をインストールしてから、brew コマンドで aria2 をインストールするという流れ。 Homebrew のインストール % /usr/bin/ruby -e "$(/usr/bin/curl -fsSL https://raw.github.com/mxcl/homebrew/master/Librar…

(Yii において) メールアドレスの長さは 254 バイト以下で

メールアドレスのバリデーションの仕様に、 長さは 256 バイト以内であること、という仕様を入れていた。テスト時 256バイトのメールアドレスを入力したときに、なぜかエラーになる。そのときの設定は以下。問題ないはずなんだが。 256, 'encoding' => fals…

Haskell Platform 2012.2.0.0 をインストール

こういう書き方も出来るんだ。case や let 〜 in ではよくやるけど、where でも出来るんだ。左辺は関数名と引数、右辺は式だとばかり思っていた。例示したコードは適当。 foo xs = h * (-1): ts where (h:ts) = xs -- ここ where でも出来るのならと思って T…

すごいHaskell 始めました。

冷やし中華始めました、みたいな感じで。 すごいHaskellたのしく学ぼう! を読んでいる。Haskell の全くの初心者ではないので、はじめの方はそれほど知らないことはないだろうと思っていたけど、そうでもなかった。まだまだ勉強不足ですな。 知らなかったとこ…

引数を引き回す

いままで幾つか Haskell のコードを書いてきた。そうしているうちに、「関数プログラミングとは『永続データプログラミングを奨励していること』」の意味が理解できてきた。データの値を書き換える(再代入)のではなくデータを新しく作る、ということかな、…

局所変数

こういう書き方も出来るんだ。case や let 〜 in ではよくやるけど、where でも出来るんだ。左辺は関数名と引数、右辺は式だとばかり思っていた。例示したコードは適当。 foo xs = h * (-1): ts where (h:ts) = xs -- ここ where でも出来るのならと思って T…

7つの言語 7つの世界

図書館に「7つの言語 7つの世界」の予約をしたのはいつだったろうか?予約をしたことをすっかり忘れていたところ、先週になって貸し出しの用意ができたと連絡が来た。なので、早速借りてきて読んでいるところ。 練習問題も幾つかあったので、解いてみようと…

array_mapの性能

array_map 使っていますか。私はあまり使いません。Ruby や Haskell だと map はよく使うのですが、PHP では foreach ばかり使っていて、array_map はあまり使いません。 使わない理由としては、いちいち関数を定義するのが面倒、と言うのがまず一つ。Haskel…

Yii に関する覚え書き (スキーマキャッシュ)

http://www.yiiframework.com/doc/guide/1.1/ja/database.ar#sec-2 にはアクティブレコードを使用する場合、データベーススキーマに変更がないのであれば、キャッシュを使うことでメタデータの分析をしなくて済む、とある。 説明には schemaCachingDuration …

Yii に関する覚え書き (バリデーションルール:length編)

ドキュメントをよく読め、ということです。 バリデーションの設定で、以下のような設定を書いた場合、username の長さが3以上かつ12以下であることをチェックする。 array('username', 'length', 'min'=>3, 'max'=>12), 始め、"長さ"というのは文字数のこと…

Bootstrap 化

Bootstrap があっという間にバージョン2.x になってししまった。 私が Bootstrap を知ったのは去年の秋頃だったと思う。それから Bootstrap を使って何か作ろうと思っていたのだが、公開できるほどのモノは現在のところできていない。 なので、とりあえず自…

undefined method `dependencies' for Appname:Class (NoMethodError)

padrino でアプリを作ろうとしていきなりつまずいてしまった。 つまずいた内容は以下の通り。メソッドが定義されていないとのこと。 % padrino start /home/user/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/padrino-core-0.10.5/lib/padrino-core…

わかりやすい書き方

コードを書く上で心がけることの一つに「わかりやすく書く」というのがあると思う。 先日、ユーザのパスワードとして入力できる文字を半角英数字 + 記号のみとした場合、その妥当性の検証はどの様に書くかということが話題になった (文字列長に関しては今は…

Yii に関する覚え書き (Selenium)

Yii というか、Selenium に関してなのだが。 環境 主なのはこちらを参照 Selenium Server 2.17.0 PHPUnit 3.6.8 PHPUnit_Selenium 1.2.0 問題 テストに関するチュートリアル を試していたのだが、Selenium を使ったテストどうしてもパスしない。テスト結果は…

Yii に関する覚え書き (PHP Fatal error: Cannot instantiate abstract class CActiveRecord)

Yii のチュートリアルを試していると、"PHP Fatal error: Cannot instantiate abstract class CActiveRecord" というエラーが発生して先に進まなくなってしまった。 上記のエラーが発生するは CActiveRecord を継承したクラスが実装すべきメソッドを実装して…