2009/12/07

rvmを導入しようとしてなかったことにするまで

rvmを導入しようとしてなかったことにするまでの顛末
自分の知識が足りないため挫折

rvm自体はすんなり入ったあと

$ sudo rvm install 1.9.2-head
<i> Installing Ruby from source to: /usr/local/rvm/ruby-1.9.2-head </i>
<i> Running autoconf </i>
<e> Error running '/usr/bin/autoconf', please check /usr/local/rvm/log/ruby-1.9.2-head/autoconf.error.log </e>
<e> Skipping configure step, 'configure' script does not exist, did autoconf not run successfully? </e>
<i> Compiling ruby-1.9.2-head, this may take a while, depending on your cpu(s)... </i>
<e> Error running 'make ', please check /usr/local/rvm/log/ruby-1.9.2-head/make.error.log </e>

$ view /usr/local/rvm/log/ruby-1.9.2-head/autoconf.error.log

[2009-12-07 00:06:55] /usr/bin/autoconf
configure.in:6: error: Autoconf version 2.60 or higher is required
configure.in:6: the top level
autom4te: /usr/bin/m4 failed with exit status: 63

$ autoconf --version
autoconf (GNU Autoconf) 2.59
Written by David J. MacKenzie and Akim Demaille.

Copyright (C) 2003 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

$ cd src/

$ wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.65.tar.gz

$ tar xzf autoconf-2.65.tar.gz

$ cd autoconf-2.65

$ ./configure --prefix=/opt/autoconf2_65
$ make

$ sudo /usr/sbin/checkinstall --fstrans=no -R

# rpm -ivh /usr/src/redhat/RPMS/i386/autoconf-2.65-1.i386.rpm

# autoconf -V
autoconf (GNU Autoconf) 2.59
Written by David J. MacKenzie and Akim Demaille.

Copyright (C) 2003 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

# /opt/autoconf2_65/bin/autoconf -V
autoconf (GNU Autoconf) 2.65
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+/Autoconf: GNU GPL version 3 or later
<http://gnu.org/licenses/gpl.html>, <http://gnu.org/licenses/exceptions.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by David J. MacKenzie and Akim Demaille.

気を取り直して
$ sudo rvm install 1.9.2-head
autoconfが古いって言われる
設定でautoconfの場所指定できないかなと思って探しはじめたのが間違いだった
/usr/bin/autoconf
決め打ちなわけないって所に気づくまでが長い
rvmのそれっぽいところのソース見たら
rvm_autoconf="$(which autoconf)"
って書いてあった
ここを上書くコマンドオプションはなさげ。どこ見てるんだろう。PATHかな?ってようやく把握。

$ which autoconf
/usr/bin/autoconf

$ echo $PATH
/usr/local/rvm/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/sane/bin:/opt/python2.6/bin/:/opt/curl/bin/

$ PATH=/opt/autoconf2_65/bin/:$PATH
$ export PATH

$ sudo rvm install 1.9.2-head
<i> Installing Ruby from source to: /usr/local/rvm/ruby-1.9.2-head </i>
<i> Updating ruby from http://svn.ruby-lang.org/repos/ruby/trunk </i>
<i> Running autoconf </i>
<i> Configuring ruby-1.9.2-head, this may take a while depending on your cpu(s)... </i>
<i> Compiling ruby-1.9.2-head, this may take a while, depending on your cpu(s)... </i>
<i> Installing ruby-1.9.2-head </i>
<i> Installation of ruby-1.9.2-head is complete. </i>
<i> Updating rubygems for ruby-1.9.2-head </i>
<i> Installing gems for ruby-1.9.2-head. </i>
<i> Installing rake </i>
<i> Installation of gems for ruby-1.9.2-head is complete. </i>

できたっ!

$ rvm list
   ruby-1.9.2-head  ( ruby -v # => ruby 1.9.2dev (2009-12-06 trunk 26029) [i686-linux]) )
=> system ( ruby -v # => ruby 1.8.7 (2009-06-12 patchlevel 174) [i686-linux] )

$ ruby -v
ruby 1.8.7 (2009-06-12 patchlevel 174) [i686-linux]

$ rvm 1.9.2-head
cp: cannot create regular file `/usr/local/rvm/ruby-1.9.2-head/.irbrc': 許可がありません
$ sudo rvm 1.9.2-head

$ ruby -v
ruby 1.9.2dev (2009-12-06 trunk 26029) [i686-linux]

おおお

$ rvm system

$ ruby -v
ruby 1.9.2dev (2009-12-06 trunk 26029) [i686-linux]

ありゃりゃ

$ sudo rvm system
$ ruby -v
-bash: /usr/local/bin/ruby: そのようなファイルやディレクトリはありません

しょんあ

$ rvm list
   ruby-1.9.2-head  ( ruby -v # => ruby 1.9.2dev (2009-12-06 trunk 26029) [i686-linux]) )
<i> No system ruby found. </i>

ひょえー

$ sudo rvm use ruby -v 1.8.7
<i> Now using ruby 1.8.7 p174 </i>
$ ruby -v
ruby 1.8.7 (2009-06-12 patchlevel 174) [i686-linux]

$ gem list

*** LOCAL GEMS ***

rake (0.8.7)

ぎゃふん
も、もとのgemは…
まあいっかあ

やっぱよくない
passengerの動かし方とかpgのインストール方法とか手順はちゃんと書いてあるけど めんどいな…
自分だとどこが問題か切り分け出来なくなりそ

rvm: Ruby Version Manager - Troubleshooting
http://rvm.beginrescueend.com/troubleshooting/

rvmはなかったことにしよう
$ ruby -v
ruby 1.8.7 (2009-06-12 patchlevel 174) [i686-linux]

帰ってきたgemたち
$ gem list

*** LOCAL GEMS ***

actionmailer (2.3.5, 2.3.4, 2.3.3, 2.3.2, 2.2.2)

ZenTest (4.0.0)

おしまい

2009/12/06

php5.3をmake install

php5.3を入れたのでconfigureオプションを書いておく。
$ ./configure --help
とにらめっこしたけれど最終的にはよく分からなかった。
checkinstallでrpmから入れたかったけれど下記エラーが解決できないのでめげた。シンボリックリンクもあるんだけど入らない。なぜかmake installだと入る。なぜだ。

# rpm -ivh /usr/src/redhat/RPMS/i386/php-5.3.1-1.i386.rpm

エラー: 依存性の欠如:
        libcurl.so.4 は php-5.3.1-1.i386 に必要とされています
$ ./configure \
--prefix=/opt/php5_3_1 \
--program-suffix=531 \
--with-apxs2=/usr/sbin/apxs \
--enable-mbstring \
--enable-mbregex \
--enable-gd-native-ttf \
--enable-sockets \
--enable-exif \
--with-curl=shared,/opt/curl \
--with-gettext \
--with-gmp \
--with-openssl \
--with-zlib \
--with-layout=GNU \
--enable-ftp \
--with-gd=shared \
--with-mysqli=mysqlnd \
--with-mysql=mysqlnd \
--with-xmlrpc=shared \
--enable-dom=shared \
--enable-soap=shared \
--with-xsl=shared \
--enable-xmlreader=shared \
--enable-xmlwriter=shared \
--with-pdo-mysql=shared \
--enable-zip \
--enable-zend-multibyte \
--with-mcrypt \
--enable-pdo=shared \
--with-pdo-sqlite=shared \
--with-sqlite=shared
$ make
$ sudo make install

.bashrc
alias php5.3='/opt/php5_3_1/bin/php531'
$ source ~/.bashrc

$ php5.3 -v
PHP 5.3.1 (cli) (built: Dec  6 2009 00:28:27)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2009 Zend Technologies

結局curlが有効にならないけどいったんまあいいとする
make install のほうがチェックが適当なのかな

2009/11/28

twitterの検索APIは発言内の読点を無視して検索結果を返してくる

twitterの検索APIは発言内の読点を無視して検索結果を返してくる

現象

「うんこ」で検索した結果に「うん、この中に(以下略)」が入っていた
「うんこ」だけをまぬけに置換していると「うん、この中に」がすり抜ける
「うんこ」で検索した結果の中で「うんこ」を別の文字に置き換えて改変tweetする迷惑botを動かしてて気づいた

対策

「うんこ」にほかの文字が入っていても置き換えてしまうのも悪くはない
でも置き換えが出来なかったらその発言無視して次の発言の改変に行く方がシンプルで楽そう
頻度が低ければorどうでもよければ 気にしないのがいい

句点がどうなのかとかほかの記号がどうなのかとかは知らない
ゲンミツにやりたいときは気をつける
そういうのが入りやすい検索キーワードで何かしたいときは頭の片隅に入れておく

全文検索ってこういうものなのを知らなかっただけかもしれない

2009/11/01

cakephpはフルスタックフレームワークで進む

将来のcakephpについてCakeMatsuri懇親会でGrahamとJoelに質問してみた。
正直に言えば、知ってる英単語とサービスを並べたらどうにかがんばって理解して答えてくれた。

質問
最近pythonでもperlでもrubyでもフルスタックなフレームワークが小さなプラガブルなフレームワークに変わっている。ruby on railsさえも!
フルスタックのフレームワークcakephpはこれからもフルスタックのフレームワークなの?それとも?

答え
Graham
cakephpはこれからもフルスタックのフレームワークだよ

Joel
cakephpはこれからもフルスタックのフレームワークだよ
全部入りを求める人たち・アプリケーションとそうでないという人たち・アプリケーションは別のターゲットにいる
一番いいと思う選択を提供したい
(ORMやテンプレートエンジン選べるようにならないかな?ってきいた)
cakephp2からmodel層がActiveRecordパターンからDataMapperパターンに変わるから、DataMapperの先が今以上にフレキシブルに書けるようにはなるよ
Merbのプラガブルなのいいよね
(Doctrineの話をしてくれてよくわからなくて聞きなおして3回ぐらいかみくだいて説明してくれたけどわからなかったのでわかったことにした)

感想と余談
懇親会の話は懇親会だけにとどめておくものだという正論は忘れた。
将来のcakephpについて講演してたgrahamに聞くのが本命だったのだけど、先にgrahamに聞いてうまくいかなかった部分をブラッシュアップしてJoelに聞けたので、結果的にJoelのほうがいっぱい話を聞けた。

そのあと自分が聞きたこと聞けて満足してたら
Joel「今日のトピックのなかで何が一番エキサイティングだった?」
て逆に質問された
ぼく「将来のcakephpの話が一番だった」
ぼく「あ、次はkey-valueの話」
とってつけたみたいに付け加えちゃったので
ぼく「クラウドやスケーラブルなプログラミングにも興味あるよ!」
って自分から話振った上にあわわになるなどどうしようもなかったりもした。
共用サーバはもうありえないよな、というところで一致した。
あんまり中身のあることしゃべれなかったけどいっぱいいっぱいだったので仕方ない。
文字に起こしてみたら質問の答えも満足に得られてないことが判明したけどいっぱいいっぱいだったので仕方ない。

一生懸命聞いてくれる相手に意図を伝えられるぐらいには英語使えるようになろうと思った。
CakeMatsuriの中でぼくにとってはこの会話が一番エキサイティングだったよ、ありがとうGraham、ありがとうJoel。
I thank Graham and Joel. Talking with you is my most exciting topic in CakeMatsuri.

2009/10/24

rackspace cloud serverを一瞬だけ試してみた

rackspace cloud serverがどんなのかな?と思って一瞬だけ試してみました。

大本営によると

Rackspace Cloud Computing & Hosting |  Rackspace a Top Cloud Provider
- InfiBase did the research
http://www.rackspacecloud.com/blog/2009/08/05/rackspace-a-top-cloud-provider-infibase-did-the-research/

amazon ec2と同じぐらい使われてる、ってほんとかな
slicehostを買収した会社というほうがわかりやすいかもしれません。

顛末はこちらに書きました。
rackspace-database (codekataclub)
http://codekata.sane.jp/Home/rackspace-database

感想

クラウドといっても思ったほど身構えなくていい
海外VPSと変わらない
すぐ使えた
でもインスタンス削除すると消えるっていまだによくわかってなくてこわい

情報

Rackspace Cloud ServersがAmazon EC2よりも優れている点 | cloudrop
Rackspace Cloud Computing & Hosting |  Rackspace a Top Cloud Provider - InfiBase did the research
Rackspace / Cloud Server 導入記
Xen対応VPS Prgmr.comとRackspace Cloudの簡単な比較 - MacBook(仮)モウ想記

2009/10/19

ImageMagick, RMagick, OpenCV, ffmpeg, objectdetectを入れた

急に画像を触りたくなったので。
インストール手順をメモしておく

# yum --enablerepo=remi,rpmforge,epel,centosplus install ffmpeg ffmpeg-devel

Dependencies Resolved

=============================================================================
Package                 Arch       Version          Repository        Size
=============================================================================
Installing:
ffmpeg-devel            i386       0.5-2.el5.rf     rpmforge          2.6 M
Updating:
alsa-lib                i386       1.0.17-1.el5     base              412 k
freetype                i386       2.2.1-21.el5_3   updates           310 k
Installing for dependencies:
SDL                     i386       1.2.10-8.el5     base              233 k
SDL-devel               i386       1.2.10-8.el5     base              643 k
a52dec                  i386       0.7.4-8.el5.rf   rpmforge           78 k
a52dec-devel            i386       0.7.4-8.el5.rf   rpmforge           23 k
alsa-lib-devel          i386       1.0.17-1.el5     base              1.4 M
amrnb                   i386       7.0.0.2-1.el5.rf  rpmforge          237 k
amrwb                   i386       7.0.0.3-1.el5.rf  rpmforge          190 k
cppunit                 i386       1.12.0-4.el5.1   epel              187 k
dirac                   i386       1.0.2-1.el5.rf   rpmforge          2.9 M
faac                    i386       1.26-1.el5.rf    rpmforge          151 k
faac-devel              i386       1.26-1.el5.rf    rpmforge          5.6 k
faad2                   i386       2.6.1-1.el5.rf   rpmforge          329 k
faad2-devel             i386       2.6.1-1.el5.rf   rpmforge          6.4 k
ffmpeg                  i386       0.5-2.el5.rf     rpmforge          2.5 M
ffmpeg-libpostproc      i386       0.5-2.el5.rf     rpmforge           40 k
freetype-devel          i386       2.2.1-21.el5_3   updates           146 k
imlib2                  i386       1.4.0-1.el5.rf   rpmforge          947 k
imlib2-devel            i386       1.4.0-1.el5.rf   rpmforge          160 k
lame                    i386       3.98.2-1.el5.rf  rpmforge          569 k
lame-devel              i386       3.98.2-1.el5.rf  rpmforge           21 k
libICE-devel            i386       1.0.1-2.1        base               13 k
libSM-devel             i386       1.0.1-3.1        base              9.4 k
libXext-devel           i386       1.0.1-2.1        base               57 k
libXrandr-devel         i386       1.1.1-3.1        base               14 k
libXrender-devel        i386       0.9.1-3.1        base              8.8 k
libXt-devel             i386       1.0.2-3.1.fc6    base              332 k
libid3tag               i386       0.15.1b-5.el5    epel               45 k
libogg                  i386       2:1.1.3-3.el5    base               19 k
libtheora               i386       1.0alpha7-1      base              708 k
mesa-libGLU             i386       6.5.1-7.7.el5    base              227 k
mesa-libGLU-devel       i386       6.5.1-7.7.el5    base               91 k
x264                    i386       0.0.0-0.4.20090708.el5.rf
rpmforge          898 k
x264-devel              i386       0.0.0-0.4.20090708.el5.rf
rpmforge          299 k
xvidcore                i386       1.2.2-1.el5.rf   rpmforge          511 k
xvidcore-devel          i386       1.2.2-1.el5.rf   rpmforge          141 k

Transaction Summary
=============================================================================
Install     36 Package(s)
Update       2 Package(s)
Remove       0 Package(s)

Total download size: 17 M
Is this ok [y/N]: y

ガツン

# yum --enablerepo=remi,rpmforge,epel,centosplus install gtk2-devel libpng-devel libjpeg-devel libtiff-devel

Dependencies Resolved

=============================================================================
Package                 Arch       Version          Repository        Size
=============================================================================
Installing:
gtk2-devel              i386       2.10.4-20.el5    base              2.8 M
libjpeg-devel           i386       6b-37            base              105 k
libtiff-devel           i386       3.8.2-7.el5_3.4  updates           465 k
Updating:
glib2                   i386       2.12.3-4.el5_3.1  updates           674 k
libpng                  i386       2:1.2.10-7.1.el5_3.2  updates
     241 k
libtiff                 i386       3.8.2-7.el5_3.4  updates           306 k
Installing for dependencies:
atk-devel               i386       1.12.2-1.fc6     base              126 k
cairo-devel             i386       1.2.4-5.el5      base              131 k
fontconfig-devel        i386       2.4.1-7.el5      base              168 k
glib2-devel             i386       2.12.3-4.el5_3.1  updates           1.2 M
libXcursor-devel        i386       1.1.7-1.1        base               14 k
libXfixes-devel         i386       4.0.1-2.1        base              9.4 k
libXft-devel            i386       2.1.10-1.1       base               16 k
libXi-devel             i386       1.0.1-3.1        base               52 k
libXinerama-devel       i386       1.0.1-2.1        base              5.1 k
libpng-devel            i386       2:1.2.10-7.1.el5_3.2  updates
     181 k
pango-devel             i386       1.14.9-5.el5.centos  updates           274 k

Transaction Summary
=============================================================================
Install     14 Package(s)
Update       3 Package(s)
Remove       0 Package(s)

Total download size: 6.8 M
Is this ok [y/N]: y

ガツン

# yum --enablerepo=remi,rpmforge,epel,centosplus install opencv opencv-devel

Dependencies Resolved

=============================================================================
Package                 Arch       Version          Repository        Size
=============================================================================
Installing:
opencv-devel            i386       1.0.0-3.el5      epel              4.4 M
Installing for dependencies:
opencv                  i386       1.0.0-3.el5      epel              2.5 M

Transaction Summary
=============================================================================
Install      2 Package(s)
Update       0 Package(s)
Remove       0 Package(s)

Total download size: 6.9 M
Is this ok [y/N]: y

# yum --enablerepo=remi,rpmforge,epel,centosplus install ImageMagick
ImageMagick-devel

Dependencies Resolved

=============================================================================
Package                 Arch       Version          Repository        Size
=============================================================================
Installing:
ImageMagick-devel       i386       6.2.8.0-4.el5_1.1  base               75 k
Installing for dependencies:
ImageMagick             i386       6.2.8.0-4.el5_1.1  base              3.3 M
bzip2-devel             i386       1.0.3-4.el5_2    base               38 k
ghostscript             i386       8.15.2-9.4.el5_3.7  updates           5.9 M
ghostscript-devel       i386       8.15.2-9.4.el5_3.7  updates            40 k
ghostscript-fonts       noarch     5.50-13.1.1      base              801 k
lcms                    i386       1.18-0.1.beta1.el5_3.2  updates
       176 k
lcms-devel              i386       1.18-0.1.beta1.el5_3.2  updates
       156 k
libcroco                i386       0.6.1-2.1        base              127 k
libgsf                  i386       1.14.1-6.1       base              116 k
librsvg2                i386       2.16.1-1.el5     base              178 k
libwmf                  i386       0.2.8.4-10.2     updates           834 k
urw-fonts               noarch     2.3-6.1.1        base              4.5 M

Transaction Summary
=============================================================================
Install     13 Package(s)
Update       0 Package(s)
Remove       0 Package(s)

Total download size: 16 M
Is this ok [y/N]: y

ガツン

# convert --vesrion
Version: ImageMagick 6.2.8 04/17/08 Q16
file:/usr/share/ImageMagick-6.2.8/doc/index.html
Copyright: Copyright (C) 1999-2006 ImageMagick Studio LLC

$ sudo gem list rmagick -r

*** REMOTE GEMS ***

rmagick (2.12.2)
rmagick4j (0.3.7)

$ sudo gem install rmagick
Building native extensions.  This could take a while...
ERROR:  Error installing rmagick:
        ERROR: Failed to build gem native extension.

/usr/local/bin/ruby extconf.rb
checking for Ruby version >= 1.8.5... yes
checking for gcc... yes
checking for Magick-config... yes
checking for ImageMagick version >= 6.3.5... no
Can't install RMagick 2.12.2. You must have ImageMagick 6.3.5 or later.

はい
remiにImageMagick2 6.5.5.6-1てのがあって、これがImageMagickのより新しいバージョンぽいので
入れてみる

# yum --enablerepo=remi,rpmforge,epel,centosplus install ImageMagick2
ImageMagick2-devel

Dependencies Resolved

=============================================================================
Package                 Arch       Version          Repository        Size
=============================================================================
Installing:
ImageMagick2-devel      i386       6.5.5.6-1.el5.remi  remi               87 k
Installing for dependencies:
ImageMagick2            i386       6.5.5.6-1.el5.remi  remi              2.0 M
jasper-devel            i386       1.900.1-9.el5    epel              379 k
jasper-libs             i386       1.900.1-9.el5    epel              152 k

Transaction Summary
=============================================================================
Install      4 Package(s)
Update       0 Package(s)
Remove       0 Package(s)

Total download size: 2.6 M
Is this ok [y/N]: y

Transaction Check Error:
  file /usr/bin/Magick-config from install of
ImageMagick2-devel-6.5.5.6-1.el5.remi conflicts with file from package
ImageMagick-devel-6.2.8.0-4.el5_1.1
  file /usr/bin/Wand-config from install of
ImageMagick2-devel-6.5.5.6-1.el5.remi conflicts with file from package
ImageMagick-devel-6.2.8.0-4.el5_1.1
  file /usr/lib/pkgconfig/ImageMagick.pc from install of
ImageMagick2-devel-6.5.5.6-1.el5.remi conflicts with file from package
ImageMagick-devel-6.2.8.0-4.el5_1.1
  file /usr/lib/pkgconfig/Wand.pc from install of
ImageMagick2-devel-6.5.5.6-1.el5.remi conflicts with file from package
ImageMagick-devel-6.2.8.0-4.el5_1.1
  file /usr/share/man/man1/Magick-config.1.gz from install of
ImageMagick2-devel-6.5.5.6-1.el5.remi conflicts with file from package
ImageMagick-devel-6.2.8.0-4.el5_1.1
  file /usr/share/man/man1/Wand-config.1.gz from install of
ImageMagick2-devel-6.5.5.6-1.el5.remi conflicts with file from package
ImageMagick-devel-6.2.8.0-4.el5_1.1

Error Summary
-------------

はい
消す

# yum remove ImageMagick ImageMagick-devel

Dependencies Resolved

=============================================================================
Package                 Arch       Version          Repository        Size
=============================================================================
Removing:
ImageMagick             i386       6.2.8.0-4.el5_1.1  installed          11 M
ImageMagick-devel       i386       6.2.8.0-4.el5_1.1  installed         312 k

Transaction Summary
=============================================================================
Install      0 Package(s)
Update       0 Package(s)
Remove       2 Package(s)

Is this ok [y/N]: y

# yum --enablerepo=remi,rpmforge,epel,centosplus install ImageMagick2
ImageMagick2-devel

Dependencies Resolved

=============================================================================
Package                 Arch       Version          Repository        Size
=============================================================================
Installing:
ImageMagick2-devel      i386       6.5.5.6-1.el5.remi  remi               87 k
Installing for dependencies:
ImageMagick2            i386       6.5.5.6-1.el5.remi  remi              2.0 M
jasper-devel            i386       1.900.1-9.el5    epel              379 k
jasper-libs             i386       1.900.1-9.el5    epel              152 k

Transaction Summary
=============================================================================
Install      4 Package(s)
Update       0 Package(s)
Remove       0 Package(s)

Total download size: 2.6 M
Is this ok [y/N]: y

入った
remiへの依存度がまたひとつ増した

# convert --help
-bash: convert: command not found

convertがない


$ sudo gem list rmagick --both

*** LOCAL GEMS ***



*** REMOTE GEMS ***

rmagick (2.12.2)
rmagick4j (0.3.7)

$ sudo gem install rmagick
Building native extensions.  This could take a while...
Successfully installed rmagick-2.12.2
1 gem installed
Installing ri documentation for rmagick-2.12.2...
No definition for Magick_colors
No definition for Magick_fonts
No definition for Magick_init_formats
No definition for Magick_limit_resource
No definition for Magick_set_cache_threshold
No definition for Magick_set_log_event_mask
No definition for Magick_set_log_format
No definition for Image_initialize
No definition for Image_combine
No definition for Image_constitute
No definition for Image__load
No definition for Image_capture
No definition for Image_ping
No definition for Image_read
No definition for Image_read_inline
No definition for Image_from_blob
No definition for Image_adaptive_blur
No definition for Image_adaptive_blur_channel
No definition for Image_adaptive_resize
No definition for Image_adaptive_sharpen
No definition for Image_adaptive_sharpen_channel
No definition for Image_adaptive_threshold
No definition for Image_add_compose_mask
No definition for Image_add_noise
No definition for Image_add_noise_channel
No definition for Image_add_profile
No definition for Image_affine_transform
No definition for Image_remap
No definition for Image_alpha
No definition for Image_alpha_q
No definition for Image_aref
No definition for Image_aset
No definition for Image_auto_gamma_channel
No definition for Image_auto_level_channel
No definition for Image_auto_orient
No definition for Image_auto_orient_bang
No definition for Image_properties
No definition for Image_bilevel_channel
No definition for Image_black_threshold
No definition for Image_blend
No definition for Image_blue_shift
No definition for Image_blur_image
No definition for Image_blur_channel
No definition for Image_border
No definition for Image_border_bang
No definition for Image_change_geometry
No definition for Image_change_geometry
No definition for Image_changed_q
No definition for Image_channel
No definition for Image_compare_channel
No definition for Image_check_destroyed
No definition for Image_compare_channel
No definition for Image_channel_depth
No definition for Image_channel_extrema
No definition for Image_channel_mean
No definition for Image_charcoal
No definition for Image_chop
No definition for Image_clut_channel
No definition for Image_clone
No definition for Image_color_flood_fill
No definition for Image_color_histogram
No definition for Image_colorize
No definition for Image_colormap
No definition for Image_composite
No definition for Image_composite_bang
No definition for Image_composite_affine
No definition for Image_composite_channel
No definition for Image_composite_channel_bang
No definition for Image_composite_mathematics
No definition for Image_composite_tiled
No definition for Image_composite_tiled_bang
No definition for Image_compress_colormap_bang
No definition for Image_contrast
No definition for Image_contrast_stretch_channel
No definition for Image_convolve
No definition for Image_convolve_channel
No definition for Image_copy
No definition for Image_crop
No definition for Image_crop_bang
No definition for Image_cycle_colormap
No definition for Image_decipher
No definition for Image_define
No definition for Image_deskew
No definition for Image_delete_compose_mask
No definition for Image_delete_profile
No definition for Image_despeckle
No definition for Image_destroy_bang
No definition for Image_destroyed_q
No definition for Image_difference
No definition for Image_dispatch
No definition for Image_displace
No definition for Image_display
No definition for Image_dissolve
No definition for Image_distort
No definition for Image_distortion_channel
No definition for Image__dump
No definition for Image_dup
No definition for Image_each_profile
No definition for Image_edge
No definition for Image_emboss
No definition for Image_encipher
No definition for Image_enhance
No definition for Image_equalize
No definition for Image_equalize_channel
No definition for Image_erase_bang
No definition for Image_excerpt
No definition for Image_excerpt_bang
No definition for Image_export_pixels
No definition for Image_export_pixels_to_str
No definition for Image_extent
No definition for Image_find_similar_region
No definition for Image_flip
No definition for Image_flip_bang
No definition for Image_flop
No definition for Image_flop_bang
No definition for Image_frame
No definition for Image_function_channel
No definition for Image_gamma_channel
No definition for Image_gamma_correct
No definition for Image_gaussian_blur
No definition for Image_gaussian_blur_channel
No definition for Image_get_pixels
No definition for Image_gray_q
No definition for Image_gray_q
No definition for Image_histogram_q
No definition for Image_implode
No definition for Image_import_pixels
No definition for Image_init_copy
No definition for Image_inspect
No definition for Image_level2
No definition for Image_level_channel
No definition for Image_level_colors
No definition for Image_levelize_channel
No definition for Image_linear_stretch
No definition for Image_liquid_rescale
No definition for Image_magnify
No definition for Image_magnify_bang
No definition for Image_map
No definition for Image_marshal_dump
No definition for Image_marshal_load
No definition for Image_mask
No definition for Image_matte_flood_fill
No definition for Image_median_filter
No definition for Image_minify
No definition for Image_minify_bang
No definition for Image_modulate
No definition for Image_monochrome_q
No definition for Image_motion_blur
No definition for Image_negate
No definition for Image_negate_channel
No definition for Image_normalize
No definition for Image_normalize_channel
No definition for Image_oil_paint
No definition for Image_opaque
No definition for Image_opaque_channel
No definition for Image_opaque_q
No definition for Image_ordered_dither
No definition for Image_paint_transparent
No definition for Image_palette_q
No definition for Image_pixel_color
No definition for Image_polaroid
No definition for Image_posterize
No definition for Image_preview
No definition for Image_profile_bang
No definition for Image_quantize
No definition for Image_quantum_operator
No definition for Image_radial_blur
No definition for Image_radial_blur_channel
No definition for Image_raise
No definition for Image_random_threshold_channel
No definition for Image_recolor
No definition for Image_reduce_noise
No definition for Image_resize
No definition for Image_resize_bang
No definition for Image_roll
No definition for Image_rotate
No definition for Image_rotate_bang
No definition for Image_sample
No definition for Image_sample_bang
No definition for Image_scale
No definition for Image_scale_bang
No definition for Image_segment
No definition for Image_selective_blur_channel
No definition for Image_separate
No definition for Image_sepiatone
No definition for Image_set_channel_depth
No definition for Image_shade
No definition for Image_shadow
No definition for Image_sharpen
No definition for Image_sharpen_channel
No definition for Image_shave
No definition for Image_shave_bang
No definition for Image_shear
No definition for Image_sigmoidal_contrast_channel
No definition for Image_signature
No definition for Image_sketch
No definition for Image_solarize
No definition for Image_spaceship
No definition for Image_sparse_color
No definition for Image_splice
No definition for Image_spread
No definition for Image_stegano
No definition for Image_stereo
No definition for Image_strip_bang
No definition for Image_store_pixels
No definition for Image_swirl
No definition for Image_sync_profiles
No definition for Image_texture_flood_fill
No definition for Image_threshold
No definition for Image_thumbnail
No definition for Image_thumbnail_bang
No definition for Image_tint
No definition for Image_to_color
No definition for Image_to_blob
No definition for Image_transparent
No definition for Image_transparent_chroma
No definition for Image_transpose
No definition for Image_transpose_bang
No definition for Image_transverse
No definition for Image_transverse_bang
No definition for Image_trim
No definition for Image_trim_bang
No definition for Image_undefine
No definition for Image_unique_colors
No definition for Image_unsharp_mask
No definition for Image_unsharp_mask_channel
No definition for Image_vignette
No definition for Image_watermark
No definition for Image_wave
No definition for Image_wet_floor
No definition for Image_white_threshold
No definition for Image_write
No definition for ImageList_remap
No definition for ImageList_animate
No definition for ImageList_append
No definition for ImageList_average
No definition for ImageList_coalesce
No definition for ImageList_composite_layers
No definition for ImageList_deconstruct
No definition for ImageList_display
No definition for ImageList_flatten_images
No definition for ImageList_fx
No definition for ImageList_map
No definition for ImageList_montage
No definition for ImageList_morph
No definition for ImageList_mosaic
No definition for ImageList_optimize_layers
No definition for ImageList_quantize
No definition for ImageList_to_blob
No definition for ImageList_write
No definition for Draw_annotate
No definition for Draw_clone
No definition for Draw_composite
No definition for Draw_draw
No definition for Draw_dup
No definition for Draw_get_type_metrics
No definition for Draw_get_multiline_type_metrics
No definition for Draw_initialize
No definition for Draw_init_copy
No definition for Draw_inspect
No definition for Draw_marshal_dump
No definition for Draw_marshal_load
No definition for Draw_primitive
No definition for DrawOptions_initialize
No definition for Pixel_from_color
No definition for Pixel_from_HSL
No definition for Pixel_from_hsla
No definition for Pixel_spaceship
No definition for Pixel_case_eq
No definition for Pixel_eql_q
No definition for Pixel_initialize
No definition for Pixel_init_copy
No definition for Pixel_clone
No definition for Pixel_dup
No definition for Pixel_fcmp
No definition for Pixel_hash
No definition for Pixel_intensity
No definition for Pixel_marshal_dump
No definition for Pixel_marshal_load
No definition for Pixel_to_color
No definition for Pixel_to_HSL
No definition for Pixel_to_hsla
No definition for Pixel_to_s
No definition for Montage_initialize
No definition for rm_no_freeze
No definition for Info_initialize
No definition for Info_channel
No definition for rm_no_freeze
No definition for Info_define
No definition for Info_aset
No definition for Info_aref
No definition for Info_undefine
No definition for PolaroidOptions_initialize
No definition for GradientFill_initialize
No definition for GradientFill_fill
No definition for TextureFill_initialize
No definition for TextureFill_fill
No definition for ImageMagickError_initialize
No definition for Enum_initialize
No definition for Enum_to_s
No definition for Enum_to_i
No definition for Enum_spaceship
No definition for Enum_case_eq
Installing RDoc documentation for rmagick-2.12.2...
No definition for Magick_colors
No definition for Magick_fonts
No definition for Magick_init_formats
No definition for Magick_limit_resource
No definition for Magick_set_cache_threshold
No definition for Magick_set_log_event_mask
No definition for Magick_set_log_format
No definition for Image_initialize
No definition for Image_combine
No definition for Image_constitute
No definition for Image__load
No definition for Image_capture
No definition for Image_ping
No definition for Image_read
No definition for Image_read_inline
No definition for Image_from_blob
No definition for Image_adaptive_blur
No definition for Image_adaptive_blur_channel
No definition for Image_adaptive_resize
No definition for Image_adaptive_sharpen
No definition for Image_adaptive_sharpen_channel
No definition for Image_adaptive_threshold
No definition for Image_add_compose_mask
No definition for Image_add_noise
No definition for Image_add_noise_channel
No definition for Image_add_profile
No definition for Image_affine_transform
No definition for Image_remap
No definition for Image_alpha
No definition for Image_alpha_q
No definition for Image_aref
No definition for Image_aset
No definition for Image_auto_gamma_channel
No definition for Image_auto_level_channel
No definition for Image_auto_orient
No definition for Image_auto_orient_bang
No definition for Image_properties
No definition for Image_bilevel_channel
No definition for Image_black_threshold
No definition for Image_blend
No definition for Image_blue_shift
No definition for Image_blur_image
No definition for Image_blur_channel
No definition for Image_border
No definition for Image_border_bang
No definition for Image_change_geometry
No definition for Image_change_geometry
No definition for Image_changed_q
No definition for Image_channel
No definition for Image_compare_channel
No definition for Image_check_destroyed
No definition for Image_compare_channel
No definition for Image_channel_depth
No definition for Image_channel_extrema
No definition for Image_channel_mean
No definition for Image_charcoal
No definition for Image_chop
No definition for Image_clut_channel
No definition for Image_clone
No definition for Image_color_flood_fill
No definition for Image_color_histogram
No definition for Image_colorize
No definition for Image_colormap
No definition for Image_composite
No definition for Image_composite_bang
No definition for Image_composite_affine
No definition for Image_composite_channel
No definition for Image_composite_channel_bang
No definition for Image_composite_mathematics
No definition for Image_composite_tiled
No definition for Image_composite_tiled_bang
No definition for Image_compress_colormap_bang
No definition for Image_contrast
No definition for Image_contrast_stretch_channel
No definition for Image_convolve
No definition for Image_convolve_channel
No definition for Image_copy
No definition for Image_crop
No definition for Image_crop_bang
No definition for Image_cycle_colormap
No definition for Image_decipher
No definition for Image_define
No definition for Image_deskew
No definition for Image_delete_compose_mask
No definition for Image_delete_profile
No definition for Image_despeckle
No definition for Image_destroy_bang
No definition for Image_destroyed_q
No definition for Image_difference
No definition for Image_dispatch
No definition for Image_displace
No definition for Image_display
No definition for Image_dissolve
No definition for Image_distort
No definition for Image_distortion_channel
No definition for Image__dump
No definition for Image_dup
No definition for Image_each_profile
No definition for Image_edge
No definition for Image_emboss
No definition for Image_encipher
No definition for Image_enhance
No definition for Image_equalize
No definition for Image_equalize_channel
No definition for Image_erase_bang
No definition for Image_excerpt
No definition for Image_excerpt_bang
No definition for Image_export_pixels
No definition for Image_export_pixels_to_str
No definition for Image_extent
No definition for Image_find_similar_region
No definition for Image_flip
No definition for Image_flip_bang
No definition for Image_flop
No definition for Image_flop_bang
No definition for Image_frame
No definition for Image_function_channel
No definition for Image_gamma_channel
No definition for Image_gamma_correct
No definition for Image_gaussian_blur
No definition for Image_gaussian_blur_channel
No definition for Image_get_pixels
No definition for Image_gray_q
No definition for Image_gray_q
No definition for Image_histogram_q
No definition for Image_implode
No definition for Image_import_pixels
No definition for Image_init_copy
No definition for Image_inspect
No definition for Image_level2
No definition for Image_level_channel
No definition for Image_level_colors
No definition for Image_levelize_channel
No definition for Image_linear_stretch
No definition for Image_liquid_rescale
No definition for Image_magnify
No definition for Image_magnify_bang
No definition for Image_map
No definition for Image_marshal_dump
No definition for Image_marshal_load
No definition for Image_mask
No definition for Image_matte_flood_fill
No definition for Image_median_filter
No definition for Image_minify
No definition for Image_minify_bang
No definition for Image_modulate
No definition for Image_monochrome_q
No definition for Image_motion_blur
No definition for Image_negate
No definition for Image_negate_channel
No definition for Image_normalize
No definition for Image_normalize_channel
No definition for Image_oil_paint
No definition for Image_opaque
No definition for Image_opaque_channel
No definition for Image_opaque_q
No definition for Image_ordered_dither
No definition for Image_paint_transparent
No definition for Image_palette_q
No definition for Image_pixel_color
No definition for Image_polaroid
No definition for Image_posterize
No definition for Image_preview
No definition for Image_profile_bang
No definition for Image_quantize
No definition for Image_quantum_operator
No definition for Image_radial_blur
No definition for Image_radial_blur_channel
No definition for Image_raise
No definition for Image_random_threshold_channel
No definition for Image_recolor
No definition for Image_reduce_noise
No definition for Image_resize
No definition for Image_resize_bang
No definition for Image_roll
No definition for Image_rotate
No definition for Image_rotate_bang
No definition for Image_sample
No definition for Image_sample_bang
No definition for Image_scale
No definition for Image_scale_bang
No definition for Image_segment
No definition for Image_selective_blur_channel
No definition for Image_separate
No definition for Image_sepiatone
No definition for Image_set_channel_depth
No definition for Image_shade
No definition for Image_shadow
No definition for Image_sharpen
No definition for Image_sharpen_channel
No definition for Image_shave
No definition for Image_shave_bang
No definition for Image_shear
No definition for Image_sigmoidal_contrast_channel
No definition for Image_signature
No definition for Image_sketch
No definition for Image_solarize
No definition for Image_spaceship
No definition for Image_sparse_color
No definition for Image_splice
No definition for Image_spread
No definition for Image_stegano
No definition for Image_stereo
No definition for Image_strip_bang
No definition for Image_store_pixels
No definition for Image_swirl
No definition for Image_sync_profiles
No definition for Image_texture_flood_fill
No definition for Image_threshold
No definition for Image_thumbnail
No definition for Image_thumbnail_bang
No definition for Image_tint
No definition for Image_to_color
No definition for Image_to_blob
No definition for Image_transparent
No definition for Image_transparent_chroma
No definition for Image_transpose
No definition for Image_transpose_bang
No definition for Image_transverse
No definition for Image_transverse_bang
No definition for Image_trim
No definition for Image_trim_bang
No definition for Image_undefine
No definition for Image_unique_colors
No definition for Image_unsharp_mask
No definition for Image_unsharp_mask_channel
No definition for Image_vignette
No definition for Image_watermark
No definition for Image_wave
No definition for Image_wet_floor
No definition for Image_white_threshold
No definition for Image_write
No definition for ImageList_remap
No definition for ImageList_animate
No definition for ImageList_append
No definition for ImageList_average
No definition for ImageList_coalesce
No definition for ImageList_composite_layers
No definition for ImageList_deconstruct
No definition for ImageList_display
No definition for ImageList_flatten_images
No definition for ImageList_fx
No definition for ImageList_map
No definition for ImageList_montage
No definition for ImageList_morph
No definition for ImageList_mosaic
No definition for ImageList_optimize_layers
No definition for ImageList_quantize
No definition for ImageList_to_blob
No definition for ImageList_write
No definition for Draw_annotate
No definition for Draw_clone
No definition for Draw_composite
No definition for Draw_draw
No definition for Draw_dup
No definition for Draw_get_type_metrics
No definition for Draw_get_multiline_type_metrics
No definition for Draw_initialize
No definition for Draw_init_copy
No definition for Draw_inspect
No definition for Draw_marshal_dump
No definition for Draw_marshal_load
No definition for Draw_primitive
No definition for DrawOptions_initialize
No definition for Pixel_from_color
No definition for Pixel_from_HSL
No definition for Pixel_from_hsla
No definition for Pixel_spaceship
No definition for Pixel_case_eq
No definition for Pixel_eql_q
No definition for Pixel_initialize
No definition for Pixel_init_copy
No definition for Pixel_clone
No definition for Pixel_dup
No definition for Pixel_fcmp
No definition for Pixel_hash
No definition for Pixel_intensity
No definition for Pixel_marshal_dump
No definition for Pixel_marshal_load
No definition for Pixel_to_color
No definition for Pixel_to_HSL
No definition for Pixel_to_hsla
No definition for Pixel_to_s
No definition for Montage_initialize
No definition for rm_no_freeze
No definition for Info_initialize
No definition for Info_channel
No definition for rm_no_freeze
No definition for Info_define
No definition for Info_aset
No definition for Info_aref
No definition for Info_undefine
No definition for PolaroidOptions_initialize
No definition for GradientFill_initialize
No definition for GradientFill_fill
No definition for TextureFill_initialize
No definition for TextureFill_fill
No definition for ImageMagickError_initialize
No definition for Enum_initialize
No definition for Enum_to_s
No definition for Enum_to_i
No definition for Enum_spaceship
No definition for Enum_case_eq

膨大にエラー出たけど今度はRMagick入ったみたい
大丈夫そうな根拠は一切ないが

$ irb
irb(main):001:0> require 'rubygems'
=> true
irb(main):002:0> require 'RMagick'
=> true
irb(main):003:0> quit

convertなどなどはtoolsにあるようだ
# yum --enablerepo=remi,rpmforge,epel,centosplus install ImageMagick2-tools

Dependencies Resolved

=============================================================================
Package                 Arch       Version          Repository        Size
=============================================================================
Installing:
ImageMagick2-tools      i386       6.5.5.6-1.el5.remi  remi               54 k

Transaction Summary
=============================================================================
Install      1 Package(s)
Update       0 Package(s)
Remove       0 Package(s)

Total download size: 54 k
Is this ok [y/N]: y

$ convert --version
Version: ImageMagick 6.5.5-6 2009-09-05 Q16 OpenMP http://www.imagemagick.org
Copyright: Copyright (C) 1999-2009 ImageMagick Studio LLC

$ convert logo: logo.gif
$ ls -ltar
合計 52
drwxrwxr-x 15 sane sane  4096 10月 19 01:43 ..
-rw-rw-r--  1 sane sane   114 10月 19 01:44 test.rb
-rw-rw-r--  1 sane sane 38341 10月 19 01:59 logo.gif
drwxrwxr-x  2 sane sane  4096 10月 19 01:59 .

$ vi test.rb

require 'rubygems'
require 'RMagick'
img = Magick::ImageList.new('logo.gif')
img.resize(100, 100).write('new.gif')

$ ruby test.rb

$ ls -ltar
合計 56
drwxrwxr-x 15 sane sane  4096 10月 19 01:43 ..
-rw-rw-r--  1 sane sane 38341 10月 19 01:59 logo.gif
-rw-rw-r--  1 sane sane   115 10月 19 01:59 test.rb
-rw-rw-r--  1 sane sane  3681 10月 19 01:59 new.gif
drwxrwxr-x  2 sane sane  4096 10月 19 01:59 .

やったね!
teratermからだから画像見えないけど

$ sudo gem list objectdetect --both

*** LOCAL GEMS ***



*** REMOTE GEMS ***

objectdetect (0.0.3)

$ sudo gem install objectdetect
Building native extensions.  This could take a while...
Successfully installed objectdetect-0.0.3
1 gem installed
Installing ri documentation for objectdetect-0.0.3...
Installing RDoc documentation for objectdetect-0.0.3...

完了
あとであそぶ

反省?
$ view /etc/redhat-release

CentOS release 5.2 (Final)

手元の環境がCentOS5.2だったのをおもいだした
いまさら遅いけど yum では exclude=*el5_3*にしておいたほうがよかったかもしれない


参考リンク
MacOSX に OpenCV を入れて ruby で遊んでみる - Where he came from, and where he is going to go?
ImageMagick (RMagick)をMacにインストール:Goodpic
CentOS 4.4にRMagick をインストールする | 山本隆の開発日誌
RMagick のインストール - まゆの日記
CentOS4で3gp→Flvを変換(ffmpeg) 前編 | データセンターの専用サーバ データセンターダイレクト ブログ
Convertコマンドを使う (ImageMagick事始め) :: Blue Pill
floatingdays: CentOSに yumで FFmpegをインストール
Webコピペ屋::CentOS5にOpenCVをインストール
Webコピペ屋::CentOS5にyumでffmpegをインストール
RMagickをインストールしてみる(Windows) | Katawara.*

2009/10/18

cucumberハンズオンのcodekata

2009-09-27のrailstokyoのセッション、cucumberハンズオンの復習をやりました。codekata!
codekataのページに追加しました。

一応ぎりぎり44回が開かれる前に滑り込みで間に合いました

todo-kata1 (codekataclub)
http://codekata.sane.jp/todo/kata1

Rails' Wiki - Rails勉強会@東京第43回
http://wiki.fdiary.net/rails/?RailsMeetingTokyo-0043

2009/10/06

remiからyumでphp5.2.10を入れる

結論から言うと
# yum --enablerepo=remi update php --exclude=php*5.3*
これでremiからyumでphp5.2.10が入る

$ php -v
PHP 5.2.10 (cli) (built: Jun 21 2009 11:10:43)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies

apacheをreloadしてやって完了


phpのバージョンを5.2.8から上げようとしてremiを見ると5.3.0しかない。

murahashi kenichi: yumでないと使えない子なので UtterRambl ...
yumでないと使えない子なので UtterRamblingsでphp5.2.11+mysql5.0 か remiでphp5.3.0+mysql5.1か の二択
とつぶやいたら @suzuki が手取り足取り教えてくれた。

suzuki: @sanemat メモった。http://bit.
@sanemat メモった。 http://suzuki.tdiary.net/20091004.html#p02

ただ、教えていただいた方法だとぼくの環境が悪いのかうまくいかなかったのでremiのforumを探す
php-pecl-apc installation for php 5.2.10 (missing dependency) (Page 1) - User support - Les RPM de Remi - Forums
Problems with php 5.3, how to reinstall 5.2.10? (Page 1) - User support - Les RPM de Remi - Forums

で、下記でいけそうな感じがしたのでやってみたらbingo
# yum --enablerepo=remi update php --exclude=php*5.3*
変にexcludeにマッチしちゃうものがあったらダメだけど、特にそういうこともなく、無事にphp5.2.10が入ったように見える

おしまい

返す刀でmysqlのバージョンも上げておいた

# service mysqld stop
# yum --enablerepo=remi update mysql
# service mysqld start
$ mysql --version
mysql  Ver 14.14 Distrib 5.1.39, for redhat-linux-gnu (i686) using readline 5.1

最終的に出来た環境は
php5.2.10 + mysql5.1.39 なり

2009/10/03

「つらくないコードを書こう」という題でlimonadeの話をしてきた PHP勉強会@関東#46

第46回PHP勉強会@関東でLT「つらくないコードを書こう」という題でlimonadeの話をしてきました。

LT資料
http://www.slideshare.net/sanemat/20090930-phpstudy-limonade
デモ用コード
http://github.com/sanemat/ktsukishima/tree/phpstudy46

参加者のみなさんとust越しに見てくださった方には段取り含めた不手際でごめんなさいというしかない発表でした。でも後悔せずにまたやります。ありがとうございました。

以下デモでやりたかったことをまとめておきます。


デモでやりたかったこと

想定

http://example.com/
のドキュメントルート
/home/foo/app/public/

目標

サブディレクトリ下に携帯3キャリア対応のページを作成
ただし、ライブラリなど余計なファイルはドキュメントルート下におかないこと
http://example.com/limonade/

事前確認

下記ファイルを編集してapacheとvirtualhostが設定済みか確認
/home/foo/app/public/index.html

ファイル確認

$ cd /home/foo/app
$ ls -R
.:
public

./public:
index.html

この時点では./public/index.htmlのみ。

git clone

/home/foo/app/
下にlimonade+ライブラリ+サンプルファイルのlimonadeディレクトリを作る

$ git clone git://github.com/sanemat/ktsukishima.git limonade
Initialized empty Git repository in /home/foo/app/limonade/.git/
remote: Counting objects: 148, done.
remote: Compressing objects: 100% (74/74), done.
remote: Total 148 (delta 51), reused 146 (delta 50)
Receiving objects: 100% (148/148), 156.50 KiB | 150 KiB/s, done.
Resolving deltas: 100% (51/51), done.

limonadeディレクトリが出来たのでそこに移動

$ cd limonade

phpstudy46タグが振ってあるので、チェックアウト

$ git checkout phpstudy46
Note: moving to "phpstudy46" which isn't a local branch
If you want to create a new branch from this checkout, you may do so
(now or later) by using -b with the checkout command again. Example:
  git checkout -b <new_branch_name>
HEAD is now at e3d6438... delete initial files

一階層上に戻る

$ cd ..

以下のファイルがgitリポジトリから引っ張ってこられた

$ ls -R
.:
limonade  public

./limonade:
lib  public  vendor  views

./limonade/lib:
AUTHORS-limonade  LICENSE-limonade  limonade.php

./limonade/public:
index.php  sample.css

./limonade/vendor:
HTML  LICENSE-HTML_CSS_Selector2XPath  Net  PEAR.php  Text

./limonade/vendor/HTML:
CSS  CSS.php  Common.php

./limonade/vendor/HTML/CSS:
Error.php  Mobile.php  Selector2XPath.php

./limonade/vendor/Net:
UserAgent

./limonade/vendor/Net/UserAgent:
Mobile  Mobile.php

./limonade/vendor/Net/UserAgent/Mobile:
Common.php   DoCoMo      EZweb.php  NonMobile.php  Willcom.php
Display.php  DoCoMo.php  Error.php  SoftBank.php

./limonade/vendor/Net/UserAgent/Mobile/DoCoMo:
ScreenInfo.php

./limonade/vendor/Text:
Pictogram

./limonade/vendor/Text/Pictogram:
Mobile  Mobile.php

./limonade/vendor/Text/Pictogram/Mobile:
Common.php  Docomo.php  Exception.php  Ezweb.php  Nonmobile.php  Softbank.php  data

./limonade/vendor/Text/Pictogram/Mobile/data:
docomo_convert.json  ezweb_convert.json  softbank_convert.json
docomo_emoji.json    ezweb_emoji.json    softbank_emoji.json

./limonade/views:
layout.default.html.php  qa_how_to_start.html.php

./public:
index.html

ちなみにこのlimonade本体は0.4のブランチにauto_globals_jit onでも動作するパッチをあてたもの
またディレクトリ構成をフレームワーク付属のものとは変えています

limonade

まだここには何もない
http://example.com/limonade/

ドキュメントルートに移動

$ cd /home/foo/app/public/

追加アプリのpublicディレクトリにシンボリックリンクを張る

$ ln -s ../limonade/public limonade

Hello limonade!
http://example.com/limonade/

How to Start limonade?
http://example.com/limonade/?/how_to_start/

$ cd /home/foo/app/limonade
$ vi views/qa_how_to_start.html.php

before(), after() で分かりやすいフック

limonade/public/index.php
のbefore(), after() の記述によって
テンプレート内では$emoji変数でdomomoの基本絵文字が3キャリア互換で記述できる
たとえば<?=$emoji[154];?>とやれば爆弾の絵文字が出せる。

(ここがモンスターメソッドになってしまったのでもうちょっとましな設計が必要)

before()でしていること
Net_UserAgent_Mobile呼び出し
Text_Pictogram_MobileでdocomoのUTF-8絵文字としていったん全部扱う
テンプレート記述を中間記法に変換する

after()でしていること
Net_UserAgent_Mobileの判別でdocomo, au, softbankにそれぞれ振り分け
キャリアごとに
xmlのencodingとhtmlのheadを表示する文字コード表記に置き換え(docomo, auはShift_JIS, softbank, pcはUTF-8)
出力文字列の文字コードを変換
docomoの場合のみHTML_CSS_MobileでCSSをインラインに変換
絵文字をキャリアごとに出力フォーマットを変えて出力
headerのContent-Typeをキャリアごとに出力

目標確認

サブディレクトリ下に携帯3キャリア対応のページを作成
ただし、ライブラリなど余計なファイルはドキュメントルート下におかないこと
http://example.com/limonade/
達成!

メッセージ

コアとちょっとのファイルでやりたいことが実現できる
ファイル数が少ないこと、ファイルが小さいこと、それももちろんだけれど、
コアも含めたアプリ全体の見通しのよさがlimonade一番のメリット

2009/09/23

how to install memcached and to use in php and ruby

memcachedのインストール、設定とphp, rubyからの使い方。
php, ruby間でのmemcache越しのデータやり取り。覚え書き。
rubyはirbから、phpはphp -a からそれぞれ対話型で呼び出し。

インストール
# yum --enablerepo=remi,rpmforge,epel,centosplus install memcached
version 1.4.1 installed from remi

php
# pecl install memcache
version 2.2.5 installed

# yum install php-pecl-memcache
ではだめ。
インストール完了したように見えるがエラーが発生

ruby
$ sudo gem install cached_model

seattle.rb作のrails用(activerecord用)プラグイン
そのうちこれもいるよね、ということでまとめて入れてしまう
同時にmemcache-clientがインストールされる
必要なのはmemcache-client

サービス
# service memcached start
# chkconfig memcached on

php 使い方
$m = new Memcache;
$m->addServer( '127.0.0.1', 11211 );
$m->add( 'foo', 'bar', 0, 3600 );
echo $m->get( 'foo' );
bar

ruby使い方
require 'rubygems'
require 'memcache'
cache = MemCache.new( '127.0.0.1:11211' )

cache['hoge'] = {'piyo' => 'piyopiyo'}
=> {"piyo"=>"piyopiyo"}
p cache['hoge']
{"piyo"=>"piyopiyo"}
=> nil

phpからruby
$m->add( 'foo', 'bar', 0, 3600 );

p cache.get( 'foo', true )
"bar"
=> nil

rubyからphp
cache.set( 'eleven', '11', 0, true )
=> "STORED\r\n"

echo $m->get( 'eleven' );
11

やりとりできるのは文字列型に変換されたものなので注意
というよりはたまたまうまくやり取りしているように見えるだけの気がする
後ろ側はメモリ上のkeyvalueストアなんだから、調べてきちんと渡せば出来そうだけど
用途がなさそう
jsonにしてつっこんで別言語から引っ張り出す方がまだ現実的
それだと言語別のmemcacheにした意味があんまね。

rubyからphp
ache.set( 'eleven', [1,2,3], 0, true )
=> "STORED\r\n"

var_dump( $m->get( 'eleven' ) );
string(3) "123"

phpからruby
$m->set( 'unko', array(0,1,2,5), 0, 3600 );
var_dump( $m->get( 'unko' ) );
array(4) {
  [0]=>
  int(0)
  [1]=>
  int(1)
  [2]=>
  int(2)
  [3]=>
  int(5)
}

cache.get( 'unko', true )
"a:4:{i:0;i:0;i:1;i:1;i:2;i:2;i:3;i:5;}"
=> nil

参考リンク
[memcached] memcache-client導入手順(Rubyクライアント) - Life with IT
http://l-w-i.net/t/memcached/0install_003.txt
ruby,php,perlでmemcacheの中身を使い回す | Parse Error
http://sugizou.jugem.jp/?eid=132
java で memcached に入れたものを ruby で取り出す (その逆も) - Learning to be Me
http://d.hatena.ne.jp/bubbles/20081029/1225291896

最近のトラックバック

information

  • author : sanemat
    表記はsanemat あるいは SANE もしくはsanematsu, sane
    sanemat's portfolio
    (murahashi kenichi)
  • サイト内検索
ブログ powered by TypePad