タグ : Programing
先日から楽天WEBサービスから利用している楽天APIで商品検索を実行すると以下のようなエラーが発生する問題が起きています。 503 Service Unavailable このエラー自体はよく見かけるエラーですが、少し前から頻発してました。この件についての公式リリースはこちらです。 RWS開発日記 — 503エラーに関するお問合せについて - 楽天ウェブサービスの開発・運用チームのブログ - こちらのリリースを読むと、どうやら1秒間に1リクエスト以上実行すると503エラーとなり、しばらくは利用できなくなる…ということらしいです。まぁその仕様変更自体はしかたがないので、リクエスト実行前に1秒停止するロジックを追加し、1秒に1回以下に絞ってみました。 options_query_encoded = URI.encode(options_query) # URI.encodeでは'=+'が変換されないので、手動で置換する options_query_encoded = options_query_encoded.gsub(/=\+/,'=%2B') search_request_url = "#{@request_url}?#{@developer_id_query}#{@affiliate_id_query}#{options_query_encoded} &operation=ItemSearch&version=2009-04-15".gsub!("\n","").gsub!(" ","") @search_request = search_request_url #2009/11/13 リクエストの回数制限対応 sleep 1 xml_result = open(@search_request) しかしやっぱり503エラーになってしまいます。しょうがないので解決するまで一時的に楽天APIの使用を停止することにしました。…まったく勘弁してください。 - [ 続きを読む ]
前回の記事 でめ備忘録 » [Ruby on Rails] amazon-ecs が Amazon Product Advertising API の署名認証に対応していること “amazon-ecs”が署名認証対応していることについての訂正 先日、投稿した記事では rubygem の”amazon-ecs”が署名認証に対応しているということを書きました。確かに対応はしています。しかし、私の使用していたバージョン(0.5.3)では対応されていませんでした! 対応されているバージョンは“0.5.5″以降です。お詫びして訂正させていただきます。 “amazon-ecs”のバージョンアップ さてさくっと謝罪したところで(反省なし)、さっそく”amazon-ecs”のバージョンアップと入りましょう。 CORESERVER ではリモートでのgemのインストールが止められてしまいます。 参考:でめ備忘録 » [Server] [Ruby on Rails] さくらインターネットからCORESERVERへRailsアプリを移動する (2) ですので、今回もダウンロードしてローカルからインストールします。いろいろ調べたところ、バージョンアップと共にインストールしなければいけないものがいくつかありましたので、それらも一緒に記述しておきます。 wget http://rubyforge.org/frs/download.php/60727/rubyforge-1.0.4.gem wget http://rubyforge.org/frs/download.php/56871/rake-0.8.7.gem wget http://rubyforge.org/frs/download.php/61757/hoe-2.3.3.gem wget http://files.rubyforge.vm.bytemark.co.uk/ruby-hmac/ruby-hmac-0.3.2.gem wget http://rubyforge.org/frs/download.php/60602/amazon-ecs-0.5.6.gem gem install --local rubyforge gem install --local rake gem install --local hoe gem install --local ruby-hmac gem install --local amazon-ecs とりあえずこれで正常に動作するようになりました。ただ、以前より格段に重くなったような。。。仕方ないといえば仕方ないですが。。。 - [ 続きを読む ]
実際にRailsアプリを移植する ようやく Ruby on Rails アプリの移行が完了しましたので、備忘録を残していきます。 さくらインターネットとCORESERVERの違い MySQL 4.0.27 ⇒ 5.1.2.2rc MySQLがUTF8対応 MySQLデータベースを複数持てる FastCGI対応 これが意外とエラーを起こしました。 まず、当然として"environment.rb"の"GEM_HOME"を前回設定した"GEM_HOME"に直します。 $LOAD_PATH.push("/home/xxx/lib/ruby/site_ruby/1.8") $LOAD_PATH.push("/home/xxx/lib/ruby") ENV['GEM_HOME'] ||= '/home/xxx/lib/ruby/gem' ↓ $LOAD_PATH.push("/virtual/xxx/lib/ruby/site_ruby/1.8") $LOAD_PATH.push("/virtual/xxx/lib/ruby") ENV['GEM_HOME'] ||= '/virtual/xxx/lib/ruby/gem' 続いてデータベースをUNICODEで作成する。 UTF8で統一(XREA + MySQL + Ruby) | Diaspar Journal 更に"database.yml"の設定を作成したデータベースにあわせる。その際に"encoding: utf8"を指定しておく。 そしてそのままソースをUP。"rake db:migrate"でDBを作成し、実行してみるが、「Script Not Found」というエラーが。。。更になにもいじらずに更新してみると、「Application Error」に。。。 一から作り直す 挙動が明らかにおかしいので、一から作り直してみることに。railsコマンドでプロジェクトを作成し、"environment.rb"、"database.yml"と、appフォルダ、dbフォルダ、publicフォルダ下の3つフォルダを上書き。 実行してみると。。。動いた!! FastCGIのおかげか、挙動が物凄く早い!! まったくロード感がないし、Amazon A2S(ECS)を実行してみても、まったく待ち時間がない!! Ajax系の入力補助(マスタを用いたオートコンプリート機能を実装してます)も早くて快適でした!! 結論、Ruby on Railsを実行するには、さくらインターネットよりCORESERVERの方がいいです。早々にMTごとCORESERVERに移りたいと思います。 ※ ちなみに MySQL 5.1 になると結構予約語が増えていて、私は二個ほどフィールド名とかぶってエラーになりました。CORESERVER上のMySQLの予約語はこちらからご確認ください。 MySQL :: MySQL 5.1 リファレンスマニュアル :: 8.3 MySQLでの予約語の扱い - [ 続きを読む ]
CORESERVER に Ruby on Rails をローカルからインストールする 前回の記事に引き続き、CORESERVERにRuby on Railsをインストールしてみました。予想外にてこずりましたので、ここに備忘録を残しておきたいと思います。 .bashrcの作成エラー 基本的にはこちらのサイトを参考にインストールを実行していきました。 CORESERVERにRuby on Railsをインストールする | stick stack 途中、”.bashrc”ファイルの作成でこんなミスをしてしまい、エラーになりました。 export PATH=$PATH:$HOME/bin export RUBYLIB=$HOME/lib/ruby/site_ruby/1.8:$HOME/lib/ruby export GEM_HOME=$HOME/lib/ruby/gem ←最後に改行が入っている ↓ ~/lib/ruby/gem? ←最後の改行が変換できず、妙なフォルダが出来上がってしまった。 こんなのは当然の知識かもしれませんが^^; Ruby on Railsのインストールエラー こちらも解決して、gemコマンドが実行できるようになったので、引き続き作業を実行していくと、Ruby on Railsのインストール中に以下のようなエラーが発生しました。 xxx@s99:~> gem install rails -v 2.0.2 --include-dependencies Successfully installed rails-2.0.2 Successfully installed rake-0.8.3 Successfully installed activesupport-2.0.2 Successfully installed activerecord-2.0.2 Successfully installed actionpack-2.0.2 Successfully installed actionmailer-2.0.2 Successfully installed activeresource-2.0.2 Installing ri documentation for rake-0.8.3... Installing ri documentation for activesupport-2.0.2... Installing ri documentation for activerecord-2.0.2... Killed xxx@s99:~> Killedなんて不穏当な文字列が出てきました。インストールが出来たか確認する為に、railsコマンドを実行してみますが、以下のようなエラーが発生してしまいます。 xxx@s99:~> rails - [ 続きを読む ]
form_for と form_tag の書き換えについて form_forからform_tagへの書き換え 以下の理由から、scaffoldで作成したnewとeditのform_forをform_tagに書き換えました。 Rails 2.0以前のように、newやeditの共通部分をrenderで”_form.html.erb”を読み込む為 form_forでActiveRecordをソースにしたコンボボックスの指定方法がわからない為 new.html.erb <% form_for(@model_name) |f| %> ...(省略)... <%= f.submit "Create" %> <% end %> ↓ <% form_tag :action => "create" do %> <%= render :partial =%> "form" %> <%= submit_tag "Create" %> <% end %> この変更をした後に、_form.html.erbという名前でnewとeditの共通部分を抜き出したファイルを作成した。抜き出した箇所は以下のように変更した。 <%= f.text_field :field_name %> ↓ <%= text_field :model_name, :field_name %> これでコンボボックスを指定してみる。 mai <%= select_tag :model_name, :field_name, Model.find(:all, {:conditions => "value > 1", :order => "value asc"}).collect {|i| [ i.title, i.id ] } - [ 続きを読む ]
MySQL 導入に伴い、何か自作のCGIプログラムを作成したいと思い、CGIプログラム言語について調べてみた。 代表的なのはやはりこの三つ。 Perl Ruby Python Perlはイメージ通り古くからある言語。昔はCGI=Perlと勘違いしていたもんだ。ただ古臭さがぬぐえなかったので、対象から外した。 Rubyは何といっても日本人が開発して、今、世界に広まっていっている言語! 愛国心はあまりないが、同族が作ったといわれると多少惹かれるものがあります。 Pythonは世界中で既に使用されている言語。開発実績は Google, YouTube, Microsoft と名だたる大企業のCGIがこれで書かれています。海外ではすっかりメジャーですが、エンコードの問題のせいか、日本ではあまり普及されていないようです。 結局、選択したのは Python です。Ruby と比較して、実績という部分で大きく幅を開けているし、なにより Google ファンの私としては必然的にこれを選びました。 とりあえず「Python 入門」でググって、出てきたサイトを片っ端から眺めて、大体基礎的な構文は理解した。CGI組み込みも適当な定型句を検索して当て込めば実装できそうだ。 …と、ここまで知識を得たところで、私の目の前に「Google App Engine」という文字が現れた。 「Google App Engine」とは Google が提供する”Application Server Service” で、自分で開発したアプリケーションを Google 上で実行できるサービスだ。2008年5月に正式に公開され、現在のところ「Python」のみに対応している。 以前は「Python」という遠い言語+「GQL」という初めて耳にする問い合わせ言語ということで二の足を踏んでいたが、今回は「Python」の部分の素養があった為、急に魅力的なワードに見えてきた。 しかも「GQL」も調べてみれば何のことはない、SQLの亜種のようだ。 …これは試してみるしかないでしょう! とりあえず自サバ上でのアプリは後回しにして、Google App Engine をいじってみたいと思います。 - [ 続きを読む ]
- [ 続きを読む ]
coalesce [コーアレス] nullが入ってきそうなフィールドにかけて、nullの代わりに取得するものを設定する。 ex) --実行SQL select key1 , coalesce(null_or_number, 0) from schema.db_name --実行結果 SEQ | key1 | null_or_number ----|-------|----------------- 1 | K01 | 100 2 | K02 | 0 ←本当ならここにnullが入るはずだった 但し、レコード自体が取得されない場合、意味はない - [ 続きを読む ]
さくらインターネット イー・モバイル ウルトラモバイル データカード フリーソフト プラグイン 拡張機能 新にねん 楽天 雑記 901-X 2008年冬 Amazon A2S Amazon ECS API Chrome CORESERVER DB2 Eee PC FastCGI Firefox gem Google Google App Engine Google IME Greasemonkey Mobile MovableType MySQL Netbook NTT ドコモ NTT DoCoMo PeopleSoft Programing Python RoR Ruby on Rails Server SQL SSH Tools UNIX UTF-8 Web WordPress Amazon (4) Firefox (2) Google (3) Mobile (3) MovableType (1) Netbook (2) Oracle Master (1) Programing (15) Ruby on Rails (12) Server (5) SQL (4) Tools (7) Web (8) Web Service (7) WordPress (3) 楽天 (3) 雑記 (3)
WP Cumulus Flash tag cloud by Roy Tanck requires Flash Player 9 or better.