2010年11月22日

Ruby on Rails in_groups_of(*)

in_groups_ofとは?


配列を指定数単位で区切ることが可能

環境


ruby1.9.1
rails2.3.5

使用方法


hoge=[1,2,3,4,5]
hoge.in_groups_of(2)
=>[[1, 2], [3, 4], [5, nil]]


たとえばdivで区切りたいときに使用
<div class="hoge1">1,2</div>
<div class="hoge2">3,4</div>
<div class="hoge3">5</div>
こんな感じ
posted by RicK at 19:20| Comment(0) | TrackBack(0) | 日記

2010年11月01日

Ruby on Rail 検索キーワード取得

検索キーワード取得とは?


通常googleなどで検索してから各HPへ遷移すると思いますが、
そのとき検索に使用したキーワードを各HPで取得するということです。

環境


rails1.2.6

取得方法


取得方法は至って簡単
request.env['HTTP_REFERER']

これで取得可能です。
urlなどよけいなものもついていますが、
d=の後ろがキーワードなので、そこだけ正規表現などで取り出してください。

日本語は文字化けしているようになっていますが、
エンコードされているだけです。
デコードしてあげましょう。
CGI.unescape(request.env['HTTP_REFERER'])

まだ化けてる時がありません。その時は文字コードを修正します。
CGI.unescape(request.env['HTTP_REFERER']).kconv(Kconv::UTF8,Kconv::SJIS)

上記は、SJISからUTF8へ変換しています。

注意


検索からSSLへ遷移する場合ですが、
なんとdocomoは、HTTP_REFERERが取得できません。
昔なんかおこしたらしく、REFERERが削除されるようになったらしいです。
いやなんとも迷惑な話です。
違うページをはさんでredirectとかならできると思うのですが、
それはだめとかいわれそうですよね。。。
いぁまったく、どうしろというんですかねぇ。
posted by RicK at 16:09| Comment(0) | TrackBack(0) | 日記

2010年10月06日

Ruby on Rails Redmine

remineとは?


タスク管理ツールです。
SubVersionとかも管理できるんですが、今回はredmineのinstallです。

環境


ruby 1.8.6
rails 1.2.5
sqlite 3.5.3
CentOS 5.2
redmine 0.6.4
download /usr/local/src
ソース /var/

Redmine Install


$wget http://rubyforge.org/frs/download.php/33789/redmine-0.6.4.tar.gz
// redmine 7.0以降はrails2系でないとダメらしいです。
$ tar xvf http://rubyforge.org/frs/download.php/33789/redmine-0.6.4.tar.gz
$ cp -a redmine-0.6.4 /var/

Redmine 設定


$ cd /var/redmine-0.6.4
$ cp config/database.yml.sample config/database.yml
$ vi config/database.yml
production:
adapter: sqlite3
dbfile: redmine.db
timeout: 5000

[gem sqlite3-ruby install]
$ gem intall sqlte3-ruby

$ rake db:migrate RAILS_ENV=production
$ rake redmine:load_default_data RAILS_ENV=production
Select language: bg, cs, de, en, es, fr, he, it, ja, ko, nl, pl, pt, pt-br, ro, ru, sr, sv, zh, zh-tw [en] ja ←jaを入力してenter


Rdmine 起動


monbrelを使用して起動します。
$ vi config/mongrel_cluster.yml
port: "3000"
environment: production
log_file: /var/redmine-0.6.4/log/mongrel.mongrel.log
public_file: /var/redmine-0.6.4/public
servers: 1

$ mongrel_rails cluster::start


これでlocalhost:3000でアクセス可能です。
posted by RicK at 15:40| Comment(0) | TrackBack(0) | 日記

2010年09月14日

Ruby on Rails find first

firstとは?


firstとはその名の通り最初です。
詳細話すと終わっちゃううのこんだけ。

環境


rails 1.2.4

使いどころ


例:
@hoge = Hoge.find(:all)

こうすると@hogeの中には配列で何個かデータが取れます。

もぅ予想がついたと思いますが、この最初のデータを取り出します。
基本的に使用することはないでしょうが、
何らかの理由でallでとってから最初だけ欲しい場合、
やむなく
@hoge[0]

なんて風に書いたことあるかもしれません。
これはとてつもなくださいですよね。
なんというか初心者丸出し的な。。。

そんなわけで少しでも見た感じかっこ良くするために
@hoge.first

とするわけです。

なんとなくかっこいいですよねw
posted by RicK at 16:00| Comment(0) | TrackBack(0) | 日記

2010年09月01日

Ruby auの絵文字をメールで受け取って表示させるとエラー

現象


絵文字あるのメールを
NKF.nkf("-w",本文)

として保存して表示させると。
auの場合hメソッドをつけているにもかかわらず意味不明な記号のような漢字のようなものになって表示のときにエラーになります。
docomoだと=になります。
softbankはためしてないのでわかりません。

auの場合も、特定の絵文字のみで(例えば鉛筆の絵文字)、
他の絵文字だと保存する前に消滅したり、明らかに常用語でない漢字になって
絵文字が表示されなかったりします。

とりあえずエラーはまずいのでエラーをなくします。

環境


ruby1.8.6
NKF2.0.7

原因


どうやらNKFの2.0.7以前のものにはMIMEをエンコードすると正しく出力されないバグがあるらしいです。

対策


1、ライブラリーを2.0.8以降のものにする
2、おかしいのはutf-8らしいので、一度他の文字コードにしてから変換

自分は2でやりました。
NKF.nkf("-w",NKF.nkf("-j",本文))

こんな感じです。

結果


一応エラー自体はなくなりました。
ただ、特定の絵文字を使うと他の日本語なども巻き込んで文字化け状態で表示されます。

絵文字を抜かす処理とか絵文字だったらメール受け取らないとかの処理をしないとかもなぁ。。。
携帯は面倒ですよねほんと
posted by RicK at 17:28| Comment(0) | TrackBack(0) | 日記

2010年08月24日

Ruby on Rails formのsubmitを押すとなぜか戻るエラー

エラー概要


あるページをhttpsにかえたところauのみformがおかしくなりました。
どうおかしくなったかというと、submitボタンを押しても次の画面へ遷移せずに、
なぜかブラウザの戻るボタンと同じで前の画面へ遷移するようになりました。

エラー原因


htmlの階層構造ミス
恐らく主にdivだと思いますが、divが閉じていなかったり逆に閉じる/divだけあったりと
様々ですが、とりあえず構造ミスです。

httpsでないと発生しない上に、docomoとsoftbankでも発生しません。
おそらくauでも機種依存はあるでしょう。
まぁ階層構造のミスという単純なミスではありますが、
エラーなどは出ず、しかもauだけという気づきにくいものなのでご注意を。
posted by RicK at 18:37| Comment(0) | TrackBack(0) | 日記

2010年08月20日

公開鍵作成方法

公開鍵とは?


公開されている自分の証明とでもいえばいでしょうか。
まぁsshなどの自動ログインなどで使用されます。

作成方法


ssh-keygen -t rsa
// 鍵を作成する場所です。.ssh/id_rsaに作るのでこのままEnter
Enter file in which to save the key (/Users/hoge/.ssh/id_rsa):
// パスワード入力
Enter passphrase (empty for no passphrase):
// パスワード再入力
Enter same passphrase again:


~/.ssh/id_rsa
~/.ssh/id_rsa.pub

この2つが作成されます。
id_rsaが秘密鍵
id_rsa.pubが公開鍵です。
posted by RicK at 14:12| Comment(0) | TrackBack(0) | 日記

2010年08月06日

Ruby on Rails CSV Error

CSVとは?


データをカンマ区切りで並べたものです。

環境


rails1.2.6

Error


SYLKファイル開けない

とでる

解決


列名(カラム名ではない)が最初IDだとだめらしい
列名をidとかにすれば解決
posted by RicK at 18:55| Comment(0) | TrackBack(0) | 日記

2010年08月04日

Ruby on Rails file_column

file_columnとは?


画像をアップするためのプラグインです。

環境


rails2.2.2
app/models/hoge.rb
app/views/hoge.html.erb

install


パターン1
ruby script/plugin install

パターン2


使用方法


hogeテーブルに
t.string image

カラムを追加

$ vi hoge.rb
file_column :image,
// カラム名指定
:magick =>{version =>{
:icon => "15x15"
}
},
:web_root => "images/",
:root_path => File.join(RAILS_ROOT,"public","images")
// 上記の場所に作成される。
// ここで多少場所を変えたりはできるが、大幅に場所を変えようとするとプラグインを改造しないと無理っぽい
// カラム名指定以外はなくても問題ない

$ vi hoge.html.erb
<% form_for(@blog, :html => {:multipart => true}) do |f| %>
<%= file_column_field "image", "image", "icon" %>
// これはプラグインのヘルパー、第3引数はなくてもいいし、あればmodelで指定したサイズが作成される


サイズ指定


320x240と320x240>と320x240!の違い
・320x240:縦横比を維持して、このサイズに収まる大きさにする。
・320x240>:これより小さい画像は小さいままで拡大しない。
・320x240!:縦横比を無視して、このサイズぴったりにあわせる。

エラーなど


uninitialized constant FileColumn::ClassMethods::Inflector

解決
$ vi vender/plugins/file_column/lib/file_column.rb
Inflector.underscore(self.name).to_s
// 下記へ変更
self.name.to_s.underscore


$ vi vendor/plugins/file_column/init.rb

ここにあるrequire 'test_case'がある場合はコメントアウト

Type Error

multipart => true

の指定忘れ
posted by RicK at 16:43| Comment(0) | TrackBack(0) | 日記

2010年08月02日

Ruby技術者認定試験

Ruby技術者認定試験

受けてきました。
んでもって書いているということは合格したってことです。
というわけでこれから受けるという人に流れの説明。

参考資料



練習問題1
練習問題2

勉強方法


参考資料にあるRuby技術者認定試験公式ガイドを購入
(書店にはあんまりないのでご注意を)
この参考書の過去問を解く、、、無論合格圏外w
次に練習問題1を解く、、、もちろん合格圏外w
ついでに練習問題2も解きます。。これは結構難しいですね。

とまぁ、全部ダメダメだったわけですが、
公式ガイドを何度も読んで100問ある問題も
何度も解きまして、練習問題も3往復くらい解いて
問題をみたら答えがぱっと出るくらいになれば完璧ですね。

申し込み


受験の申し込みは1週間くらい前で十分です。
毎日やっているので混むこともほとんどないです。
PROMETRICで、Webから申し込むことができますが、
その前に、「試験予約の流れ」と「当日の受験手順」をみてください。
Ruby認定試験は、PCで行う試験で基本技術者のような
紙と鉛筆を使用して行う試験ではありませんので、
「当日の受験手順」を行ってちょっとなれておいた方がいいかもしれません。

試験直前


受験票?には、15分前集合とありましたが自分の時は10分前集合でした。
日曜日の1時で受験者人数は7人程です。
試験会場に入る前に荷物をロッカーに預けて、
持ち込めるのは、ロッカーの鍵と手渡された
メモ用紙(といっても紙でなくプラスチックのようなもんで消せないし1枚しかない、まぁいえばあとでもっとらえるらしいですが)
ペン、あとよくみてないですが注意書き?がはいった入れ物です。
机にはヘッドホンがおいてあり、音が気になる人は使用してもいいようです。

試験


さて、いよいよ試験開始です。
最初はもらったカードの番号を入力して、注意書きみたいなのが2枚ほど
続いてそこから1時間半の試験がスタートしました。
ちなみに、試験会場に入ったら自分勝手に始めていいそうです。
問題は、まぁ書いてある勉強法を行えば問題ないと思います。
とりあえず自分は、見直しマークにすべてチェックを入れてみました。
(チェック入れないと見直しできないと思って。。)
解答を全部埋めて残り時間をみてみると、残り1時間ありましたw
そこから全部を見直しマーク外しつつ見直して、
ケアレスミスが2つほどありました。
1つ目は、concatをconnectだったかなんかと間違えていた。
2つ目は、選択するのが2つなのに1つしかチェックしてなかった。
いやぁ見直しは大切ですよねw
それで全部見直した後に再度2つ選択しなくてはいけないところを
2つ以下や以上選択していないか確認してから終了しました。
終了するとアンケート画面になり、
Rubyを普段使用しているか?
Rubyをどのように使用しているか?
Rubyを初めてどのくらいか?
などを答えて終了となりました。

終わった瞬間に

合格です。
あなたの得点は90点です。

と真ん中にぽつんと出てきて危うく見逃すところでしたが、
さすがPCでやるだけあって結果がすぐ出てきますね。
ちなみに見直しをしても残り時間は30分ありました。

試験後


上の画面をみて終了ボタンを押したら無言で外の受付までいって
終了を知らせます。
合格のA4の薄ぺらな紙1枚をもらって終了です。

正式な紙?は、後日届くそうです。

ちなみに合格するために必要な点数は75%の75点です。
37~38/50で合格ということですね。
受験料は、15,750円と高めですがRubyの会社ですと、
5人以上この資格を持っていればそこから認定?してもらえるらしいです。
posted by RicK at 15:51| Comment(0) | TrackBack(0) | 日記