Action*3 思いをカタチにするためのBlog。思うだけなら誰でもできる。さあ今、何をする?Actionを起こせ! 2010-08-31T16:12:13Z http://www.terut.net/?feed=atom WordPress terut http:// <![CDATA[ruby1.9.2 + Rails3.0 を試してみる。〜その1〜]]> http://www.terut.net/?p=275 2010-08-31T16:12:13Z 2010-08-31T16:11:06Z ついにRails3.0がリリースされましたな。

ruby1.9もruby1.9.2がリリースされ、そろそろ移行してみようかなと思ってます。

ということで、早速試してみたw

ruby1.9.2をインストール

まずはruby1.9.2をインストール。

macportsでのインストールをする。

とりあえず、以下を実行してmacportsを最新にする。

$ sudo port selfupdate

終わったらrubyのインストール。

macportsではruby19という名前でインストールできる。

$ sudo port install ruby19

# fetch failedとかいうError が出た。どうもfetchに失敗しているらしい。

# 詳細を見ようと以下のコマンドで試す。

$ sudo port -d install ruby19

なぜかインストールできたw まあリポジトリの問題だったのかも。

これで一応、ruby1.9.2のインストールは完了。

$ /opt/local/bin/ruby1.9 -v

これで ruby1.9.2 が入ったことが確認出来ます。

Rails3.0のインストール

いつものごとくgemからインストール。

$ sudo gem install rails

# Documentの生成に失敗したりしてたけどまあいいや。

$ rails -v

これで確認出来る。

インストール完了。

アプリを作成

rails3.0ではアプリの作り方も変わっている感じ。

# rails new [apps_path] というコマンドを打つ。

$ rails new demo

あれ、前からだっけ?確かnewはなかったような気がするけども。

まあ、これで作成できた。

とりまscaffold

railsを入れたらとりあえず試すのがscaffold。

サンプルとかが見れるので、ありがたい。

routingとかも設定変わってると思うのでこれで確認する。

$ rails generate scaffold Post content:string

ふむ。scaffoldの構文が前とちょっと変わっているような気がする。

出来上がったもののなかにもview以下に_form.html.erbなるものが追加されとるなー。

とりあえず今日はここまで。

]]>
0
terut http:// <![CDATA[Subversionへのユーザーの追加の仕方。]]> http://www.terut.net/?p=270 2010-08-05T13:00:22Z 2010-08-05T12:52:48Z Subversionのユーザーの作成の仕方。

すっかり忘れてたw

#新規作成

/usr/local/apache/bin/htpasswd -c svnusers hogetarou

#追加

/usr/local/apache/bin/htpasswd -b svnusers hogetarou hogetaroupassword

これで忘れないかというとたぶん忘れる。

]]>
0
terut http:// <![CDATA[ビルドしたApache2にPassengerをインストールする]]> http://www.terut.net/?p=264 2010-07-23T14:40:58Z 2010-07-23T14:36:15Z 意外と記事がなく、なおかつ sudo を使っていて半端なくハマったので、メモ。

僕の場合、httpdはソースからビルドしてインストールするのだが、あまりこの辺の情報ってない気がするね。

Pathを通せば、問題なくPassengerをインストールできるんだけど、sudoで色々やってるとハマるので気をつけること。

Passengerのインストール

手順としては以下のように進める。

httpdをソースからインストールしているとして、

$sudo gem install passenger

$sudo passenger-install-apache2-module

これでOKなはずなんだが、エラー。
Checking for required software...
* GNU C++ compiler... found at /usr/bin/g++
* Ruby development headers... found
* OpenSSL support for Ruby... found
* RubyGems... found
* Rake... found at /usr/local/ruby-1.8.7/bin/rake
* rack... found
* Apache 2... found at /usr/sbin/httpd
* Apache 2 development headers... not found
* Apache Portable Runtime (APR) development headers... not found
* Apache Portable Runtime Utility (APU) development headers... not found

となる。

Apache 2… found at /usr/sbin/httpd だと…

ソースからインストールした場合、全部持っているので、not foundなのはおかしい上に認識しているhttpdのパスが違う。

$ sudo yum list installed | grep httpd

調べてみると案の定、yum で httpd がインストールされてた。

即、アンインストール。

$ sudo yum remove httpd

さて、これでいけるかと思いきや、またまたエラーがでた。

Checking for required software...
* GNU C++ compiler... found at /usr/bin/g++
* Ruby development headers... found
* OpenSSL support for Ruby... found
* RubyGems... found
* Rake... found at /usr/local/ruby-1.8.7/bin/rake
* rack... found
* Apache 2... not found
* Apache 2 development headers... not found
* Apache Portable Runtime (APR) development headers... not found
* Apache Portable Runtime Utility (APU) development headers... not found

なんだと。。

Apache 2… not found だと…

PATHの問題だと思い、PATHを設定することにした。

$ export PATH=$PATH:/usr/local/httpd-2.2/bin
$ sudo passenger-install-apache2-module
Checking for required software...
* GNU C++ compiler... found at /usr/bin/g++
* Ruby development headers... found
* OpenSSL support for Ruby... found
* RubyGems... found
* Rake... found at /usr/local/ruby-1.8.7/bin/rake
* rack... found
* Apache 2... not found
* Apache 2 development headers... not found
* Apache Portable Runtime (APR) development headers... not found

* Apache Portable Runtime Utility (APU) development headers... not found
だが、しかし見つからない。
なぜだ。。なぜなんだと小一時間悩んだ。

sudoの仕様

問題は sudo の仕様にあった。

sudo は環境変数を初期化してしまうため(前に調べた気がしたけど、すっかり忘れてた)、httpdへのパスが通ってなかったのだ。

環境変数を引き継ぐのは sudo -i を使う。

もしくはもうrootでやっちゃっていいかも。



$ su
# export PATH=$PATH:/usr/local/httpd-2.2/bin
# passenger-install-apache2-module
Checking for required software...
* GNU C++ compiler... found at /usr/bin/g++
* Ruby development headers... found
* OpenSSL support for Ruby... found
* RubyGems... found
* Rake... found at /usr/local/ruby-1.8.7/bin/rake
* rack... found
* Apache 2... found at /usr/local/httpd-2.2.15/bin/httpd
* Apache 2 development headers... found at /usr/local/httpd-2.2.15/bin/apxs
* Apache Portable Runtime (APR) development headers... found at /usr/local/httpd-2.2.15/bin/apr-1-config
* Apache Portable Runtime Utility (APU) development headers... found at /usr/local/httpd-2.2.15/bin/apu-1-config
いけたぜーーーーーーーーーーーーーーーー!!!
超はまったけど、よかった。
]]>
0
terut http:// <![CDATA[Windows上でCentOSをインストール]]> http://www.terut.net/?p=261 2010-06-30T11:59:09Z 2010-06-30T11:58:41Z いまさらながら、VMware Playerを使って確認する環境をWindows上に用意することに。

慣れてきたらもう開発環境自体Linuxでいいのかもしれない。

Ubuntuが気になってるしね。

大体、まとめサイトがあるようなので、ポイントだけ書いていく。

VMwareのリソース

メモリ512MB, コア1、ハードは10Gをとりあえず割り当てといた。

まあたぶんこれで問題ないと信じたいw

CentOSのインストール

ネットワークインストールのドキュメントがあまりなかったので、メモ書き。

CentOSのHomePageからDownloadリンクをたどり、ミラーでCentOS-5.5-x86_64-netinstall.isoをゲット。

VMwareを起動して、新規作成時にダウンロードしたisoを指定する。

VMwareToolがいるか聞かれるのでダウンロードしてくださいな。

で、その後はいつものCentOSのインストール画面になるので、ボンボンすすめてくだしあ。

言語(Japanese), キーボード(jp106), インストール方法(HTTP)と進むとTCP/IPの設定画面が出てくる。

Web site nameとCentOS directoryを入力するように促されるので、それぞれ、”ftp.riken.jp”と”Linux/centos/5.4/os/x86_64″を入力。

32bitの人はx86_64のところは場合によってはi386にするといいはず。

とても参考になりました。

ありがとうございます!

http://d.hatena.ne.jp/mujiryouhin/20100204/1265280036

]]>
0
terut http:// <![CDATA[DBDDesigner4でデータベースにアクセスできない]]> http://www.terut.net/?p=259 2010-06-26T08:42:20Z 2010-06-26T08:42:20Z ER図を作りたかったので、久々にDBDDesigner4を使ってみた。

以前も、データベースにアクセスできなくったぐぐったにもかかわらず、忘れていたのでメモ。

DBDDesigner4にはリバースエンジニアリング機能がある。既存DBからER図を作ってくれる優れもの。

メニューの[ Database > Reverse Engineering ] でデータベースから接続をするとER図ができる仕組み。

だが、しかしUsername/Password Invalidとかいうエラーの嵐。

ふざけんなと思ったら。

MySQL4.1以降に接続するときは、パスワードをmysqlに変更する必要があるんだって。

mysqlというユーザーを一緒に作ってパスワードを設定しなおしたらうまくいった。

SET PASSWORD FOR “[username]“@’[host]‘ = OLD_PASSWORD(‘[somepassword]‘);

これで終了。

無事接続できましたとさ。

]]>
0
terut http:// <![CDATA[MemcachedとTokyoCabinet/TokyoTyrant]]> http://www.terut.net/?p=256 2010-06-21T13:14:49Z 2010-06-21T13:14:49Z 仕事で使いそうなのでベンチマークとってみた。

使い方は簡単ですなー。

まー、環境構築手順とかあとでのせときます。

]]>
0
terut http:// <![CDATA[Railsのlink_toで#ID(シャープID)を使う。]]> http://www.terut.net/?p=250 2010-06-16T05:31:09Z 2010-06-16T05:29:19Z アンカーといったり、URI参照といったり、フラグメント参照といったりするみたいですね。

要するにページ遷移後にhttp://foo.com/index#hogehogeとするとHTML要素のIDがhogehogeの部分を表示するということです。

よく「このページのTOPへ」なんて書いてありますよね。

アレです。Rails2.3.5で試しましたよっと。

なにやら


<%= link_to "hogeの一番下へ", :controller => :index, :action => :index,  :anchor => :hogehoge %>

とやるみたいですな。

試したらうまくいきました。

ユーザービリティをあげる意味でも単純なのでぜひ。

]]>
0
terut http:// <![CDATA[MySQLのLikeでバックスラッシュを検索すると・・・。]]> http://www.terut.net/?p=238 2010-06-14T09:39:05Z 2010-06-14T09:33:39Z MySQLのLike検索を実装して謎にぶちあたった。。

マニュアルを見ても、ググっても答えが分からない。

通常、Like検索の部分一致を成立させるには%を使う。

Like検索とワイルドカード


SELECT * FROM hoge WHERE foo LIKE "%bar%"

こんな具合。

んで[ %,  _  ]の2文字を検索する場合、通常、[ \ ] でエスケープする必要がある。

ワイルドカードだかららしい。

つまり [ \%, \_ ] としてやれば [ %, _ ] を検索できるというわけ。

エスケープ文字自体を検索

では [ \ ] を検索するにはどうするのか??

マニュアルによると[ \\\\ ]とすればいいらしい。

Likeの場合、パーサーにより一度2重化され、[ \\ ] となり、パターンのマッチのときにさらに2重化され [ \ ] となり検索できる仕組みらしい。

んで、早速試す。


SELECT * FROM hoge WHERE foo LIKE "%\\\\%"

だが、しかし・・・。

0件なんですけどーーーーーーーーw

バックスラッシュを検索するには?

結局、以下のようにしたらうまくいった。

色々試した結果。


SELECT * FROM hoge WHERE foo LIKE "%\\\\\\%"

なぜなんだ。。

うーむ。

さらに [ \ ] のエスケープをRailsでのコードに落とし込むと。

def self.escape_query(query)
  return nil unless query
  query.gsub(/\\/,'\\\\\\\\\\').gsub(/%/, '\%').gsub(/_/, '\_')
end

なぜだ?

なぜなんだ・・・。

大きな勘違いをしてるんでしょうか。

教えてエロイ人。

]]>
0
terut http:// <![CDATA[RubyGemsのRepositoryにつながらない件。]]> http://www.terut.net/?p=228 2010-06-09T03:25:39Z 2010-06-09T02:59:41Z いつからか分からないけど、RubyGemsのRepositoryにつながらなくなってた。

色々探したけど、日本語の情報がなかった(2010/06/09 12:00現在)ようなので共有。

どうやらDNSがダウンしてるらしい。

どんなエラー?

現象は以下のようなことが起こりますよっと。


ERROR: http://rubygems.org/ does not appear to be a repository.

ERROR: could not find gem rails locally or in a repository.

解決方法は?

んで、対策はこちら。

# rubygems DNS is temporarily down, put this into your /etc/hosts to install gems,
# but don't forget to remove the entries once their DNS is back up again

72.4.120.124 rubygems.org
207.171.181.231 production.s3.rubygems.org
216.137.45.24 production.cf.rubygems.org

ということで hosts に上記を書き込み、無事解決。

Windows XPの場合→「C:\WINDOWS\system32\drivers\etc」

DNSが復旧したら元に戻すのを忘れないでね!とのこと。

忘れずに戻すようにしないといかんですな。

参考: http://gist.github.com/429688

]]>
0
terut http:// <![CDATA[Cometのソースを読む。]]> http://www.terut.net/?p=226 2010-06-03T12:34:59Z 2010-06-03T12:34:59Z 今更ながらCometのソースを読んでいる。

なかなかこれが面白い。CometといえばLingrというサービス。

技術の総称で、要するに疑似pushをするということ。

HTTPリクエストつかんでおいて、あるリクエストをトリガーにつかんでおいたすべてのリクエストに対してレスポンスを返すらしい。

こういうのを実際にサービスに使ってみるというチャレンジと発想を持ったエンジニアになりたいなー。

久しぶりにJavaを読むのは楽しいね。

]]>
0