Archive for the ‘プログラム’ Category
Macはじめました
GJ!をASPしてみる
散髪に行ったら娘が知らないオジサンを見るみたいな目でガン泣きだよ!!
バリバリ開発の僕が営業チックな部署に配属されると言うパワハラを受けるにあたって、自分のスキルを知らしめるためにこんなものを作ってみた。うそ。結構前から作ってました。
railsで初めて作りました。@herokugarden。
詳しい説明はそのうち。
ユーザー登録はそのうち始めます。まだ作り中なんで、いろいろガラっと変わるかもしれません。
【restful_authentication】認証メールとDBのactivation_codeが全然違う件
メールでユーザー認証とか格好いいよね
railsにrestful_authenticationというプラグインがある。
いざ実装すると面倒くさいユーザー認証のあたりを受け持ってくれる。
しかもよくWebサイトでのユーザー登録で見かける、ブラウザで登録→登録したメールアドレスに確認メールを投げる→メール中のactivation用URLに飛ぶことでユーザー登録完了という流れを簡単に実装してくれる。(プラスしてacts_as_state_machineプラグインも使用するけど)
ちょっと今作っているWebサイトがあって、それに使えそうなので試してみた。
http://terrazilog.quipu.jp/?eid=585865(てらじろぐ)
上記サイト様に詳しく説明されていたのでそれに従う。
要約すると以下
- plugin入れーの
- userとsessionモデルgenerateしーの
- routes.rbにルート書きーの
- SMTPサーバにメールを投げる設定しーの
- オブザーバ使えるようにしーの
嫁ぎー
以上。で、db:createとdb:migrateすると、DBとテーブルが作られます。
で、試しに/users/newからユーザーの登録処理をやってみる。
無事登録したメールアドレスに、ユーザー認証用のURLが書かれたメールが飛んだ。
activation_code偽装
これでよかった、実験は成功で終わらないのが僕の悪いところ。メールにかかれた認証URLをクリックしても、ユーザーのstateがpending(activeになる前の保留状態)から変わらない。
何度登録を繰り返してもうまくいかないので、usersテーブルの中のactivation_codeを確認する。
あれ?activation_codeがメールに書かれてるものと違っている・・・?
メールに書かれたURLは
http://localhost:3000/activate/XXXXXXXXXXXXXXX
みたいな感じで、XXXのところがactivationコードになるのだけど、ここがDBに登録されているものとまったく違っている。これじゃあ認証できないわけだ。
調べてみると、user_mailerモデルのsignup_notification(送信するメールをごにょごにょするところ)までのactivation_codeと、userコントローラーでcreateが終わった時でactivation_codeが異なっている様だ。
要するに、ここにアクセスしてくださいね、とメールを送った後に、なぜかそのURLを書き換えてしまっている状態。
解決方法
activation_codeを複数回設定しているとしか思えないのだけど、ソースをおったけどよく判りませんでした。
なので僕お得意のやっつけで、
メールの設定をしているsignup_notificationの中で、userの設定をDBに書き込んで対処しました。
class UserMailer < ActionMailer::Base
def signup_notification(user)
user.save
・・・・
すげー強引。
いちおうこれでやったら、DBの中とメールで送られてきたactivation_codeが等しいものになりました。
このativation_codeが変わってしまうのがどうしても判らなくて、先達の教えを請おうといつものようにGoogleったんだけど、なぜか全然同じような問題に関する記述が見当たらなかった。え?なんで?僕だけなの?なんで???
メール認証で間違ったURLを送りつけるとかけっこうクリティカルな問題なのに、他に聞かないってことは僕の環境のせいなんだろうか。
ちなみに環境はrails2.2.2、mysql5.0.27、pluginは多分最新のもの、OSはwindowsXPです。
対処はわかっても今だ原因は判らないというモヤモヤ。
Firefox限定問題、XMLHttpRequestでXMLとかKMLを読むときの4096byte制限について
わけあって、KMLをJavascriptで読み込んだりしていた。
KMLとは、Googleさん主導で考案されて、今や標準規格となった緯度経度なんかの地理情報を表すフォーマットです。Google Earthなんかも使ってます。
で、XMLHttpRequestでKMLを読み込んで、取得した緯度経度列を画面上にプロットするまでは簡単だったんだけど、Firefox限定でなにかおかしい。や、XMLHttpRequestって時点でFirefoxというか非IEなんだけども。
この時はIEとFirefoxで確認していたんだけど、GoogleEarthで作成したKMLが、IEだと最後まで表示されているのだけど、Firefoxでは途中までしか表示できない。
ちなみに、IE側での描画はVML、FirefoxはCANVASでやっていたんだけど、どうやってもFirefoxが最後まで描画できない。
どうも座標数が増えると描画できないようなので、じゃあいくつまで表示できてるのよ、と数を数えてみると、きっちり4096bytes。どう考えてもあやしい。あやしすぎる。
さくらにhpricot(続報)
YATTAHHHHHHHHHHHHHHH!!(マシ・オカ)
昨日から悩んでた、さくらレンタルサーバーでhpricotを使うってのができたよ。
単純に、gemへのパスが通ってなかっただけでした。ケアレスケアレス。
vi $HOME/.cshrc
で開いて
GEM_HOMEへのパスを書いてあげないと、しっかりとgemを見に行ってくれません。だから昨日requireした時こけてたのか。
setenv GEM_HOME $HOME/local/lib/ruby/gems/1.8/
僕の環境(ruby1.8で/localにインストール)の場合、上記の1行を加えてから保存。その後source $HOME/.cshrcの呪文で見事、hpricotが使えるようになりました。よっしゃよっしゃ。
さくらにhpricotでスクレイピングバフンバフーン
さくらサーバーにhpricotを入れて、スクレイピングなぞ嗜もう、お、オレ、超Web屋っぽくね?なんて悦に入ろうとしたら超苦労した。
というか、まだ解決してないんだけど、とりあえずの備忘録。解決しました。最後に追記しています。
rails de Amazon (AMAZON::ECSプラグイン)はソート順おかしくね?
こんばんは。最近は家でも会社でもめっきりrubyばっかりいじっているRubyistな僕です。
誕生石もルビーだし。
きょうびRubyっつーたらrailsでしょ、ってことでrailにも手を出している。
ところで僕はよくブックオフで漫画を買うんだけど、古本ってことで当然売りに出ている巻から買っていくもんだから、長期連載ものを集めてたりするともう、あれー、どこまで買ったけな?なんてことが良くあって、ヘタこくと同じ巻を被って購入してしまったりして後で悲しい思いをすることになる
なんで、簡単に持っている本(とかDVDとか)の登録、閲覧ができるような蔵書管理用のアプリをrailsの練習を兼ねて作ってます。
ナスをはげしくつっこみたい
いや、ubuntuちゃんにNASをね。マウントしたかったんだけど。
Vaio君のHDDが貧弱なもので、外部ストレージとしてNASを使うのです。
僕が使ってるNASは今は亡きPC-SUCCESSで昔買ったIO-DATAのLANDISK。
Vaioノートにubuntu、無線LANもついてます
不景気の昨今、明日突然に会社をおん出されてもツブシがきくように、ここらでruby on railsでもまじめにやっとくか、ってことで家PCにインストール。
しばらくはwindowsでやってたんだけど、windowsだとなぜかgemが通らなかったりしてもうディスプレイを窓から投げたいくらいイライラさせられた。ゲイツ君ンところの子は、まったくダメな子だなあ。
なんでVmwareにFedoraをつっこんでみたんだけど、一個ノートPC(VAIO)が余っていたことを思い出したので、もうこいつをLinuxにreplaceして開発マシン&簡易サーバーにしたててしまおうと。
FlexでのGJ!ランキング表示をちょっと変更してみました
以前公開した、拍手数表示のFlashブログパーツをちょっと変更しました。
変更点
・記事リストの上部分に余白を多目に取った(ここにオリジナルなロゴを置いたりするといいと思うよ!)
・TOP10と全記事の切り替えをラジオボタンからタブに切り替えた(わかりやすいね!)
・デザインがちょっとiPodTouch風(COOLだね!)
・背景スキン(gjbg.gif)を透過gifにすれば角丸な形にも(可愛いね!)
うーん、これくらいかな?
