7/23 に Android 対応モバイル Suica サービスが開始されたと言うことでさっそくインストールした。
普通にマーケットからするするっとインストール。
寝かせておいた W53CA に SIM を移して、久々に立ち上げて機種変更の手続き。
また IS03 に SIM を入れ替えて移行の手続き。
ちょっとめんどくさかったけど、トラブルなく移行できた。
残ってた 1500 ほどのポイントも生き返った。
後は今使用中のカードタイプの定期券をモバイル Suica に移せるといいんだけど、できるんだっけ?
[2011-07-28_追記]
コールセンターに問い合わせてみたら、機種変更にて引き継いだ場合、別カードの定期情報は取り込めないらしい。
がっかり
2011/07/25
Android にモバイル Suica がやってきたよ
投稿者
pinzolo
時刻:
10:35
0 件のコメント
:

http://pinzolog.blogspot.com/2011/07/android-suica.htmlAndroid にモバイル Suica がやってきたよ
2011/06/16
すべての submit に disable_with を
submit ボタンをダブルクリックとかされて、二重登録されてしまうことありますね。
その対策として、クライアント側でお手軽なのが、submit ボタンを押された瞬間に disabled にしてやるというのがあります。
サーバ側でのチェックをするには token を組み込むだのありますが、今回はクライアント側 JavaScript のお話のみということで。
Rails だと非常に簡単にこの機能を提供していて、f.submit :disable_with => '処理中' みたいな感じでできます。
submit_tag でも同様です。(f.submit は submit_tag を呼び出してるし)
ところが、全てのフォームにおいてこれを仕込んでいくのは非常にめんどくさい。
どうせなら一度の設定でアプリケーション全体に適応させましょう。
やってみると意外と簡単で、$RAILS_ROOT/config/initializers の下にこんなコードのファイルを配置するだけ。
これで全ての submit は二度押し禁止になりました。
しかし、submit でダウンロードさせた場合、レスポンスがファイルにいってしまうので disabled のまま画面は止まってしまいます。
そんなときは、f.submit :disabl_with => '' のように空文字を渡すだけで大丈夫。
その対策として、クライアント側でお手軽なのが、submit ボタンを押された瞬間に disabled にしてやるというのがあります。
サーバ側でのチェックをするには token を組み込むだのありますが、今回はクライアント側 JavaScript のお話のみということで。
Rails だと非常に簡単にこの機能を提供していて、f.submit :disable_with => '処理中' みたいな感じでできます。
submit_tag でも同様です。(f.submit は submit_tag を呼び出してるし)
ところが、全てのフォームにおいてこれを仕込んでいくのは非常にめんどくさい。
どうせなら一度の設定でアプリケーション全体に適応させましょう。
やってみると意外と簡単で、$RAILS_ROOT/config/initializers の下にこんなコードのファイルを配置するだけ。
module ActionView module Helpers module FormTagHelper alias_method :original_submit_tag, :submit_tag def submit_tag(value=nil, options={}) options[:disable_with] = '処理中...' unless options[:disable_with] original_submit_tag(value, options) end end end end
これで全ての submit は二度押し禁止になりました。
しかし、submit でダウンロードさせた場合、レスポンスがファイルにいってしまうので disabled のまま画面は止まってしまいます。
そんなときは、f.submit :disabl_with => '' のように空文字を渡すだけで大丈夫。
投稿者
pinzolo
時刻:
21:35
5 件のコメント
:

http://pinzolog.blogspot.com/2011/06/submit-disablewith.htmlすべての submit に disable_with を
ラベル:
rails
2011/04/27
devise でカスタム認証ロジックを組み込む
たとえば、退職したユーザにはログインさせたくないけど、表示等の関係でユーザ情報を削除できない場合、users テーブルに can_login 列などを作って、フラグ管理しますよね。
んで can_login 列の値でログインを制御したい場合、どう組み込めばいいかなーと悩んでたんですがとりあえずできたのでエントリにしてみます。
devise やコアとなってる warden にそんな機能はありそうなもんだけど、よくわからなかったので自前で仕込みました。
で、認証を行っているメソッドに追加処理をつっこんでやればいいわけです。
devise の lib/devise/controllers/helpers.rb を見ると、authenticate_user! は warden.authenticate! を、current_user は warden.authenticate を呼びだしてる模様。
warden のソースで lib/warden/proxy.rb を見ると、authenticate! も authenticate も _perform_authentication を呼び出しているので、ここで細工してやればよさそう。
んで、最終的には $RAILS_ROOT/config/initializers/extensions/warden_extension.rb を配置して、中身はこんな感じ。
んで、その内容自体を元メソッドとして上書きってな感じ。
リダイレクトループにさえならなければ、もっとシンプルなソースになったのに、残念だ。
んで can_login 列の値でログインを制御したい場合、どう組み込めばいいかなーと悩んでたんですがとりあえずできたのでエントリにしてみます。
devise やコアとなってる warden にそんな機能はありそうなもんだけど、よくわからなかったので自前で仕込みました。
で、認証を行っているメソッドに追加処理をつっこんでやればいいわけです。
devise の lib/devise/controllers/helpers.rb を見ると、authenticate_user! は warden.authenticate! を、current_user は warden.authenticate を呼びだしてる模様。
warden のソースで lib/warden/proxy.rb を見ると、authenticate! も authenticate も _perform_authentication を呼び出しているので、ここで細工してやればよさそう。
んで、最終的には $RAILS_ROOT/config/initializers/extensions/warden_extension.rb を配置して、中身はこんな感じ。
# -*- coding: utf-8 -*- module Warden class Proxy alias_method :original_perform_authentication, :_perform_authentication private def _perform_authentication(*args) user, opts = original_perform_authentication(*args) # このチェックを入れないとリダイレクトループになる unless winning_strategy && winning_strategy.user user = nil if user && !user.can_login? end [user, opts] end end end元メソッド呼び出したあとに、追加でカスタムロジックを追加している。
んで、その内容自体を元メソッドとして上書きってな感じ。
リダイレクトループにさえならなければ、もっとシンプルなソースになったのに、残念だ。
2011/04/10
eclipse galileo にPyDev をインストール
どうせ GAE やるなら Java よりも Python よね。
Java の方が慣れているし、コーディングしやすいんだけど、せっかくの勉強ということで。
というわけで、PyDev を Eclipse にインストールした。
まずは Eclipse を立ち上げて、[ヘルプ] > [新規ソフトウェアのインストール...]
作業対象に http://pydev.org/updates と入力し、[追加]ボタンで PyDev と名づけて [OK] ボタンで保存(上の状態になる)。
上の [Eclipse PyDev] にチェックを入れて [次へ]
インストールの確認なので何もせず [次へ]
ライセンスの確認。同意しますをチェックして [完了]
Now Installing...
証明書の信頼が必要らしい。とりあえず両方共チェックして [OK]
Eclipse の再起動を促されるので再起動。
パースペクティブに PyDev が登録されているから大丈夫だろう。
Java の方が慣れているし、コーディングしやすいんだけど、せっかくの勉強ということで。
というわけで、PyDev を Eclipse にインストールした。
まずは Eclipse を立ち上げて、[ヘルプ] > [新規ソフトウェアのインストール...]
作業対象に http://pydev.org/updates と入力し、[追加]ボタンで PyDev と名づけて [OK] ボタンで保存(上の状態になる)。
上の [Eclipse PyDev] にチェックを入れて [次へ]
インストールの確認なので何もせず [次へ]
ライセンスの確認。同意しますをチェックして [完了]
Now Installing...
証明書の信頼が必要らしい。とりあえず両方共チェックして [OK]
Eclipse の再起動を促されるので再起動。
パースペクティブに PyDev が登録されているから大丈夫だろう。
投稿者
pinzolo
時刻:
10:54
0 件のコメント
:

http://pinzolog.blogspot.com/2011/04/eclipse-galileo-pydev.htmleclipse galileo にPyDev をインストール
2011/04/09
Ubuntu 10.04 に Eclipse をインストール
今更ながら Google App Engine で遊ぶために、Eclipse をインストール。
まずは本体をインストール。面倒なので少々古くても apt で入れる。
次に日本語化のために、Merge Doc Projectから、Pleiades 本体をダウンロード。
解凍してインストールした Eclipse に上書き。
eclipse.ini を編集。(sudo が必要)
最後に下記を追加。
端末で eclipse -clean とすれば完了。無事に Eclipse が日本語化されました。
まずは本体をインストール。面倒なので少々古くても apt で入れる。
% sudo aptitude install eclipse
次に日本語化のために、Merge Doc Projectから、Pleiades 本体をダウンロード。
解凍してインストールした Eclipse に上書き。
% unzip pleiades.zip % cd pleiades % sudo cp -R features/* /usr/lib/eclipse/features % sudo cp -R plugins/* /usr/lib/eclipse/plugins
eclipse.ini を編集。(sudo が必要)
最後に下記を追加。
-javaagent:/usr/lib/eclipse/plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar(ついでに、-showsplash と org.eclipse.platform をコメントアウトしておけば、起動時の splash を変えられるそうな。)
端末で eclipse -clean とすれば完了。無事に Eclipse が日本語化されました。
投稿者
pinzolo
時刻:
1:08
0 件のコメント
:

http://pinzolog.blogspot.com/2011/04/ubuntu-1004-eclipse.htmlUbuntu 10.04 に Eclipse をインストール
2011/03/23
stylesheet_link_tag で media を指定する
Rails3 で作成した画面を印刷すると表示されているように印刷できない。
なんでかなーと調べてみると、デフォルトの stylesheet_link_tag は media="screen" を出力するから、印刷時にスタイルが適応されていない。
media を指定する場合、例えば media="all" で出力したい場合は
なんでかなーと調べてみると、デフォルトの stylesheet_link_tag は media="screen" を出力するから、印刷時にスタイルが適応されていない。
media を指定する場合、例えば media="all" で出力したい場合は
<%= stylesheet_link_tag :test, :media => 'all' %>と指定してやればいいようだ。
投稿者
pinzolo
時刻:
17:52
0 件のコメント
:

http://pinzolog.blogspot.com/2011/03/stylesheetlinktag-media.htmlstylesheet_link_tag で media を指定する
2011/02/28
Rails3 で POP 受信したメールを DB に登録する
現在作成しているアプリケーションで、メールを取り込む必要が出てきたので、学習した。
まずは、何も考えず登録するだけのコード。
サンプルでよくある $STDIN.read で取得するデータを POP3 で取得するにはどうすればいいかだけがカギかな。
ところが今回の環境では、サーバからメールを削除できないという条件があった。
(正確には別の手段で10日以上たったメールを削除している)
このため、差分受信を自前で実装しなければならない。
すでに受信したメールを判別するには、一意なキーが必要だけど候補は二つ。
Net::POPMail#unique_id か Mail#message_id でも、Mail オブジェクトを作るためには、m.pop でメールを受信しなければならない。(pop を呼び出す前までは、LIST コマンドで取得した数値だけ持っている)
というわけで、Net::POPMail#unique_id で判別したい。すなわち、unique_id を DB に登録した、
しかし、ActionMailer#receive メソッドで自動的に Mail オブジェクトにパースされると、この unique_id の値がどっかに行くようだ。
なので、引数が一つしか渡せない ActionMailer#receive では unique_id を DB に登録するのは無理だ。
というわけで、ActionMailer#receive を使うのは諦めるしかない。
結局、下記のようなコードになった。
でも、そもそも差分受信のロジックを要勉強な気がする。
どっかのメーラのソースでも読むべきかな
まずは、何も考えず登録するだけのコード。
サンプルでよくある $STDIN.read で取得するデータを POP3 で取得するにはどうすればいいかだけがカギかな。
class MailClient Net::POP3.start('mail_server', 110, 'account', 'password') do |pop| pop.mails.each |m| UserMailer.receive(m.pop) m.delete end end end
ところが今回の環境では、サーバからメールを削除できないという条件があった。
(正確には別の手段で10日以上たったメールを削除している)
このため、差分受信を自前で実装しなければならない。
すでに受信したメールを判別するには、一意なキーが必要だけど候補は二つ。
Net::POPMail#unique_id か Mail#message_id でも、Mail オブジェクトを作るためには、m.pop でメールを受信しなければならない。(pop を呼び出す前までは、LIST コマンドで取得した数値だけ持っている)
というわけで、Net::POPMail#unique_id で判別したい。すなわち、unique_id を DB に登録した、
しかし、ActionMailer#receive メソッドで自動的に Mail オブジェクトにパースされると、この unique_id の値がどっかに行くようだ。
なので、引数が一つしか渡せない ActionMailer#receive では unique_id を DB に登録するのは無理だ。
というわけで、ActionMailer#receive を使うのは諦めるしかない。
結局、下記のようなコードになった。
class MailClient Net::POP3.start('mail_server', 110, 'account', 'password') do |pop| registered_unique_id_list = UserMail.select(:unique_id).all.collect { |um| um.unique_id } pop.mails.each |m| unless registered_unique_id_list.include?(m.unique_id) mail = Mail.new(m.pop) save_mail(mail, m.unique_id) end end end endとりあえずは、これで動いている。
でも、そもそも差分受信のロジックを要勉強な気がする。
どっかのメーラのソースでも読むべきかな
投稿者
pinzolo
時刻:
22:53
0 件のコメント
:

http://pinzolog.blogspot.com/2011/02/rails3-pop-db.htmlRails3 で POP 受信したメールを DB に登録する
ラベル:
rails
2011/02/16
gem をアップデートしたら redmine の表示がおかしくなった
既存サーバに新しく rails アプリを登録したときに、最新環境にしたら redmine の表示がおかしくなった。
rails のバージョンは freeze されているけど、I18n なんかはシステムの gem を利用しているので、その影響だろう。
こんな風に、I18n の変数展開がうまくいっていない。
対応自体は簡単で、RAILS_ROOT/config/locals/ja.yml のリプレースホルダの形式を変更すればいい。
{{count}} のような旧形式で定義されているので、これを %{count} の形式に変更する。
あとは passenger なり、apache なりを再起動すればok。
要するに以前の形式のサポートが打ち切られたわけですね。
rails のバージョンは freeze されているけど、I18n なんかはシステムの gem を利用しているので、その影響だろう。
こんな風に、I18n の変数展開がうまくいっていない。
対応自体は簡単で、RAILS_ROOT/config/locals/ja.yml のリプレースホルダの形式を変更すればいい。
{{count}} のような旧形式で定義されているので、これを %{count} の形式に変更する。
あとは passenger なり、apache なりを再起動すればok。
要するに以前の形式のサポートが打ち切られたわけですね。
投稿者
pinzolo
時刻:
11:37
0 件のコメント
:

http://pinzolog.blogspot.com/2011/02/gem-redmine.htmlgem をアップデートしたら redmine の表示がおかしくなった
2011/02/15
rails3 で div.field_with_errors を抑制する
div で囲んでくれるため、デザイン的に結構邪魔な Rails の field_with_errors。
これを出力しないには application.rb に一行足すのが一番簡単っぽい。
これを出力しないには application.rb に一行足すのが一番簡単っぽい。
config.action_view.field_error_proc = proc { |input, instance| input }
投稿者
pinzolo
時刻:
11:43
0 件のコメント
:

http://pinzolog.blogspot.com/2011/02/rails3-divfieldwitherrors.htmlrails3 で div.field_with_errors を抑制する
ラベル:
rails
2011/02/03
IS03にEdyがやってきた
Edyがスマートフォンに対応しました
ということでようやく Edy が IS03 で使えるようになったようです。
さっそくインストールしてみましょう。
スマートフォンでEdyを利用するを参考に進めてみましょう。
まあ、ココにアクセスして指示通りに行うだけですけど。
ちなみにアプリケーションの[おサイフケータイ]→[サービス紹介サイト]からもいけます。
ただ、デフォルトブラウザじゃないとできなかった。Opera や Dolphin Browser じゃプラグインの関係なのか登録までこぎ着けることができなかった。
Opera だとスマートフォン用サイトすら表示されなかったし。
必要事項を入力して登録は完了したけど、まだ利用できない。
チャージしようと思ったけど、クレジットカードは登録に二日ほどかかるということでチャージできない。
あとでコンビニからチャージしてみましょう。
で、実はここで終わりじゃなくて・・・
再びアプリケーションから[おサイフケータイ]を選ぶと[電子マネー「Edy」]という項目が増えています。
タップすると Edy のアプリケーションダウンロード画面に遷移します。
ちゃんと専用アプリも用意されているんですね。
まあ、チャージなどはアプリから仕様としても結局ブラウザ経由のようですけど。
ともあれ、これで一つ便利になった。あとは Suica だ
ということでようやく Edy が IS03 で使えるようになったようです。
さっそくインストールしてみましょう。
スマートフォンでEdyを利用するを参考に進めてみましょう。
まあ、ココにアクセスして指示通りに行うだけですけど。
ちなみにアプリケーションの[おサイフケータイ]→[サービス紹介サイト]からもいけます。
ただ、デフォルトブラウザじゃないとできなかった。Opera や Dolphin Browser じゃプラグインの関係なのか登録までこぎ着けることができなかった。
Opera だとスマートフォン用サイトすら表示されなかったし。
必要事項を入力して登録は完了したけど、まだ利用できない。
チャージしようと思ったけど、クレジットカードは登録に二日ほどかかるということでチャージできない。
あとでコンビニからチャージしてみましょう。
で、実はここで終わりじゃなくて・・・
再びアプリケーションから[おサイフケータイ]を選ぶと[電子マネー「Edy」]という項目が増えています。
タップすると Edy のアプリケーションダウンロード画面に遷移します。
ちゃんと専用アプリも用意されているんですね。
まあ、チャージなどはアプリから仕様としても結局ブラウザ経由のようですけど。
ともあれ、これで一つ便利になった。あとは Suica だ
ラベル:
IS03
登録:
投稿
(
Atom
)