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

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

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する。

RVM

RVM をインストールした。 % rvm use 1.9.2 --default --default を付けると、選択したバージョンが再ログイン時に適用される。

git-sh

git-shをインストールした。 便利なところは git を使うときに、「git 〜」と打たなくて済む。 プロンプトにブランチ名が表示される。(色も付けられる) % git sh master!git-sh> status # {ブランチ名}!{ディレクトリ} > {コマンド} # On branch master not…

ping

iTunes に Ping という機能が付いた。昔 ping コマンドをネットワークの勉強がてら実装したことがあったのを思い出した。そのときは C 言語しか知らなかったので C で実装した。今は C 以外にも幾つか使える言語ができたので、それらで実装してみようと思っ…

何様のつもり?

また岡崎図書館のこと。 一般の人は逮捕された男性が悪いと考えている、ということを Yahoo! ニュースのコメントを見て知った。私を含め、私の身近な人たちはその逆の考えの人が多い。 畑が違うと同じものでも違った見え方をするんだ。 と、思うわけで。自分…

岡崎図書館事件で思い出した

岡崎図書館事件での技術的な調査の結果が公開された。 直接開発に携わったわけではないが、過去に似たような現象が発生しているWebサービスがあったなと思い出した。 そのサービスは、ある一定数のリクエストを受けるとそれ以降のレスポンスを返さなくなって…

パラメトリック多相

パラメトリック多相とは何かと考えていたら、 関数はパラメータを持ち、これを実際の値に束縛します。Haskell の型はパラメータを持つことができ、これを別の型に束縛できます。 Real World Haskell――実戦で学ぶ関数型言語プログラミング この一文で理解でき…

アジャイルプラクティス

アジャイルプラクティスという本を買った。すでに図書館で借りて読んでいるのだけど、手元に置いておきたくて買った。アジャイルというと、よくは分らないのだけれど新しい画期的な手法なん〜てイメージがあるのだけれど*1、問題を早く見つけ出すために、よ…

たてよみったー

「たてよみったー」を作った。 特徴 縦読み文章が簡単に作成できちゃう 使い方 テキストボックスに縦読みさせたい文字を入れます おわり お役立ち指数 0 構成 Ruby Sinatra JQuery Twitter Streaming API

このしたでんきあぶない

Heroku のエラーページをはじめて見た。随所に日本を感じさせる Heroku だが、エラーページまでとはね。 *1 *1:Event IDはこちらで全部 0 にした。

サン

Aさん:「サンのスイッチが〜」 Bさん:「サンのことは詳しくないからな〜、スイッチ出してるんだ?」 という会話が聞こえてきた。 Aさんは「SAN*1」、Bさんは「Sun*2」の事を言っていたらしい。 ややこしいなあ。 *1:Storage Area Network *2:Sun Microsyst…

TimeMachine のバックアップディスクを LS-CH1.0TL に変えた

Mac

いきさつ 今まで Mac のバックアップを TimeMachine を使って USB 接続の外付け HDD に記録していた。その外付け HDD の容量は 120 GBで、Mac の内蔵 HDD の容量も 120GB。これまでギリギリのところでバックアップをしてきたけど、ついに容量不足でバックア…

ついていけません

今年のはじめ頃からのんびり読み進めていた Real World Haskell は現在13章が終わったところ。本の半ばにして、内容についていけなくなった...。とりあえず、この次のモナドの章と、面白そうな部分に目を通したら、はじめに戻ろうかな。 関数型言語難しいで…

Sinatraでファイルをアップロードさせる方法

このまえ Sinatra でファイルをダウンロードさせる方法を書いた。では逆、アップロードはどうだろう?試したところ、次のようになった。 require 'rubygems' require 'sinatra' require 'haml' get '/' do haml :index end # アップロードされたファイルを返…

プロセス置換

zsh

きっかけは RVM(Ruby Version Manager) をインストールしようとしたときだった。 Github の Repository を使ったインストール方法に以下のコマンドが書かれていた。 bash curl http://rvm.beginrescueend.com/releases/rvm-install-head ) http://rvm.beginr…

Sinatraでファイルをダウンロードさせる方法

attachment を使うと簡単にファイルをダウンロードさせることができる。例えば、CSVファイルをダウンロードする場合は次のように書ける。 require 'rubygems' require 'sinatra' get '/test.csv' do content_type 'text/csv' attachment 'test.csv' <<-EOS f…

文字列の中に文字列の中の文字がすべて存在する?

ある文字列 a の中に別のある文字列 b を構成する文字がすべて存在するかを調べる。 もう少し条件を加えると、b の文字の順番を保っていること。例えば、こんな感じ。 # OK a = 'xyz123' b = 'xz3' # NG a = 'xyz123' b = '3zx' # 順番が合っていない # NG a…

ARP

先日のエントリに、VirtualBox のネットワーク構成を変更しようかどうしようか、なんて書いた。結局、変更することにした。 変更すること自体そう手間はかからなかったのだけれど、ちょっと問題が発生。 問題というのは、仮想マシン間での通信ができなくなっ…

AirPort を使ってブリッジ接続ができるようになっていた

先日 VirtualBox を 3.2.0 にアップグレードしました。 前のバージョンでは仮想マシンのネットワークの割り当てをブリッジアダプタにした場合、 AirPort の認識に問題があるようで AirPort を使用することができませんでした。AirPort を使ってブリッジ接続…