$LOAD_PATH.delete('.')

1.9.2 から $LOAD_PATH($:)にカレントディレクトリを含まなくなった、というを今頃知った。少しハマった。 http://www.ruby-lang.org/ja/news/2010/08/18/ruby-1-9-2-is-released/

readHex

戻り値の型に関して readHex の戻り値の型がなぜ [(a, String)] になっているのだろう、(a, String) でいいのでは、と思った。 ghci> :m Numeric ghci> :t readHex readHex :: (Num a) => String -> [(a, String)] ghci> readHex "7dbZYX" [(2011,"ZYX")] gh…

Parsec on Ubuntu

Ubuntu で Parsec を使えるようにするためのメモ。 % sudo apt-get install libghc6-parsec3-dev

SSH ポートフォワードで MySQL サーバにログインするときのメモ

localhost は MySQL サーバへの接続が許可されていない。192.0.2.2 は MySQL サーバへの接続の許可されている。 そんなときに localhost から MySQL サーバへログインする方法。 + localhost SSH, MySQL client + | + 192.0.2.2 SSH server + | + 192.0.2.3 …

リモートホストのファイルを編集する

Vim

Vim で scp を使ってリモートホストのファイルを、リモートホストにログインすることなく編集することができる。 パスはリモートホストのホームディレクトリからの相対パス。 % vim scp://192.0.2.1/work/foo.txtこんなことしなくてもログインして編集すれば…

私的 Getting Started with Heroku

Heroku でアプリを公開する手順のメモ。 頻繁に新しいアプリを公開するわけでもないので、毎回コマンドを調べながらている。いるのだが、面倒になってきたのでまとめ。 git 関連 この辺りは飛ばしてもいい。次。 % cd path/to/myapp % git init % git add . …

任意の長さの文字列を生成する方法 その2

PHP

以前 PHPで任意の長さの文字列を生成するにはどうしたらいいかなんて書いていたけど、そのときは str_pad() の存在を知らなかった。

fs.watchFile

花粉が舞っている。部屋の中でおとなしくしているのが正解。だからディスプレイの前に鎮座。 Air.new().delete(花粉) ファイル更新の検知 node-dev がどうやってファイルの更新を検知しているか、が気になったのでソースを見てみた。ちなみに、node-dev の大…

Express を試してみる

Webアプリケーションフレームワークである Express を試してみた。 Sinatra inspired web development framework for node https://github.com/visionmedia/express と書かれている通り、Sinatra に近い。 環境 % node -v v0.5.0-pre % express -v 1.0.7 サ…

node.js でファイル操作 (Streams)

今まで JavaScript ではファイルを扱うコードを書いたことはなかった(そもそも扱えないし)。node.js ではファイルも扱うことができる。今回は Stream インタフェースを試してみた。 % node -v v0.5.0-pre イベントの確認 まずは、イベントがどのような順番で…

npm をインストール

node.js のインストール手順の最後に npm のインストールがあった。ただそれは root 権限でインストールしなければならなそうだった。 あまり開発環境に影響がでるようなことはしたくないので、root 権限がなくてもインストールできる方法はないかなと探して…

node.jsをインストール 2

パッケージ版でインストールしたが、古かったので、make してみる。 インストール パッケージでインストールした node.js を削除 % sudo apt-get purge nodejs ソースのダウンロード % git clone git://github.com/ry/node.git ビルド https://github.com/ry…

node.jsをインストール

環境 Ubuntu 10.10 インストール % sudo apt-get install nodejs % nodejs -v 0.1.97 テスト ソース httpserver.js var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('He…

VirtualBox Guest Additions install (VirtualBox 4.0, Ubuntu 10.10 server)

ホストOSとゲストOSで時刻の同期が取れていなかった。 Guest Additionsを入れると、同期を取れるようになるらしいのでインストールする*1。[メニュー] -> [デバイス] -> [Guest Additions のインストール] で VBoxGuestAdditions.iso をストレージに割り当て…

環境構築メモ(Ubuntu 10.10 + Ruby1.8.7)

Railsアプリを新しいサーバに移すことになった。そのときの手順のメモ。 環境概要 Ubuntu 10.10 Ruby 1.8.7 Rails 2.3.5 パッケージインストール システム % sudo apt-get install vim % sudo apt-get install zsh % sudo apt-get install apache2 % sudo ap…

GHCiのプロンプトをカスタマイズ?

GHCi でモジュールを多くインポートするとプロンプトが長くなり見づらくなることがあります。例えばこんな感じ。 Prelude> Prelude> :m Monad Char List Array Time Ratio IO Directory Control.OldException Prelude Monad Char List Array Time Ratio IO D…

乱数? IO?

1〜6までの数をランダムで返す関数 dice を作ろうとしたが頓挫。 作ろうとした dice の型は次の通り。 dice :: Int Haskell で乱数を扱うにはどうすればよいかと調べていたところ、次のようにすればよいらしい。 getStdRandom $ randomR (1, 6) getStdRandom…

正規表現のすゝめ?

正規表現使、便利ですよね。使っていますか? Webサービスの開発に関わっている人なら少なからず使ったことはあるのではないでしょうか。例えば、文字列置換やスクレイピング、バリデーション、Apache の mod_rewrite や Rails の routes のような URL 書き…

オブジェクトの反復処理の使いどころ

PHP

PHP 5 は、たとえば foreach 命令などによる反復処理を可能とするよう オブジェクトを定義する手段を提供します。 デフォルトで、 全ての アクセス権限がある プロパティは、反復処理に使用することができます。 PHP: オブジェクトの反復処理 - Manual 使っ…

QuickCheck で答え合わせ

プログラミングHaskell の練習問題で QuickCheck を使うのに、ちょうどよさそうな問題があったので試してみた。 問題は、map と filter を使って [f x | x filteredMap :: (a -> b) -> (a -> Bool) -> [a] -> [b] filteredMap f p = map f . filter p 先日 Q…

QuickCheck メモ

QuickCheck はテストケースを自動で作成してくれる、というのを知った。http://d.hatena.ne.jp/kazu-yamamoto/20101027/1288173335。少し試してみた。 install Ubuntu 10.04.1 % sudo apt-get install libghc6-quickcheck2-dev sample code import Test.Quic…

Pusher で現在オンラインのユーザを管理する(してくれる)

Pusher には誰がオンラインになっているかを管理してくれる機能がある。http://pusherapp.com/docs/presence。 この機能を知るまでは自前で管理しようとしていたが、面倒なのでこちらに切り替えた。詳しくは公式のドキュメントを参照。 ちょっとつまずいたの…

gemの管理方法が変わっていた

前まで Heroku での gem の管理は .gems というファイルを作り、そこに使用する gem ライブラリを追加していたのだけれど、いつの間にか bundler を使うことができるようになっていた。 Sinatra を使う場合での bundler の設定方法もドキュメントに書かれて…

Chat on Pusher

Pusher を使ってチャットアプリを作った。コレ → http://chatto.heroku.com/。バックエンドは相変わらず Sinatra。Twitter のアカウントを使ってチャットができる。チャットの内容をツイートしたりする機能はなし。 Pusher 周りは Pusher のサイトに Demo と…

任意の長さの文字列を生成する方法

PHP

1000バイトの文字列(内容は不問)が欲しいとき、どうやってその文字列を作成するのが簡単だろうか?実際に手で打ち込んだり、マクロを使うってのはなしで。 ループを使って連結する

文字列への文字単位のアクセス

PHP

シングルバイト文字列の前から n 番目の文字を取り出す方法に関して。 substr() を使うのと、配列のようにオフセットを指定するのではどちらが速いのか気になったので試してみた。関数の呼び出しのオーバーヘッドがある分 substr() の方が遅いだろうと予想。…

array_combine, extract

PHP

array_combine array_combine ― 一方の配列をキーとして、もう一方の配列を値として、ひとつの配列を生成する PHP: array_combine - Manual 使いどころがわからなかったこの関数だけど、CSVフィアルを扱うプログラムを書いていて、キーに名前を付ける場合に…

配列を結合する

PHP

連想配列のキーに数字のみの文字列を使用すると、キーは文字列ではなく整数になるパターンがある。 'one', '02' => 'two', '0x3' => 'three', ' 4' => 'four' ) ); # array(4) { # [1]=> // これのこと # string(3) "one" # ["02"]=> # string(3) "two" # […

memory_get_usage

PHP

memory_get_usage ― PHP に割り当てられたメモリの量を返す PHP: memory_get_usage - Manual 最近この関数の存在を知った。今までは ps や top コマンドでメモリの使用量を見ていたのだけど、これがあればもう少し細かく見れそう。 サンプル ソース

CSV

CSV形式のデータを作成する方法はどういう方法がメジャーなんだろうか? 私がよく用いる方法 配列にデータを追加していき最後にその配列をjoinする。