以前から検討していた地デジ対応テレビをついに購入。買ったのは「Sony BRAVIA KDL-32F5」。
地デジやBS放送などについてまったく知識がなく、分配器と分波器についてビックカメラ店員に説明してもらいました。そんなこんなでようやく設置完了。14インチ韓国製液晶テレビから切り替えたので、ものすごい綺麗さ。。。なんかむしろ目が痛くなるorz
でもこの大画面(私にとっては)でやるゲームは大した迫力があります。まもなくPS3同梱版のFF13が届くので、非常に楽しみです♪
グーグルは12月3日、日本語入力ソフト「Google 日本語入力」を無料にて公開した。ネット上では、“マニアックなワードも収録されていて便利”“使い勝手がいい”など、早くも「Google 日本語入力」を賞賛する声が挙がっており、評価は上々のようだ。
では、公開から10日ほど経った今、すでに利用しているという人はどれほどいるのだろうか。
インターネットコムは、japan.internet.com の読者に対し「Google 日本語入力」についてミニアンケートを実施、それによると、半数以上(56.7%)がすでに「Google 日本語入力」を利用していることがわかった。
なお、3割(31.5%)も「使ってみたい」と回答しており、「使ってみたいと思わない」としたのは約1割(11.8%)と少数だった。
現在 IME と言えば、マイクロソフトの Microsoft IME や、ジャストシステムの ATOK などが主流だが、今後「Google 日本語入力」が、その位置に取って代わる日は来るのだろうか。
元記事:http://japan.internet.com/wmnews/20091214/6.html
japan.internet.com Webマーケティング より引用
快進撃の「Google日本語入力」! …まだ試してないですorz
「Amazon アソシエイト(Associate)」とはいわゆるAmazonによる”アフェリエイト”サービスです。”アフェリエイト”とは登録した人が自分のサイトなどで商品を紹介し、その紹介を経由して商品が売れた場合、その紹介者に企業からお金が入るというサービスです。ぶっちゃけ企業の手先ですw
人気サイトなどを運営されている方の場合、どんどんお金が入るらしく、有名サイト様ですと、たまに還元サービスなどを実施して、いつも利用してくれる人たちに商品をプレゼント!…なんてことまでしているみたいです。
※注意 いつもしているわけではありません。
と、いいつつも、このサイトがそんなに人気のあるサイトではありませんし、商品を買ってもらえるほど信頼性のあるサイトではありませんので、私自身は収入を得られるつもりは毛頭ありません=私は還元しませんw
今回やってみようと思ったのは、ただ興味を持ったからです。”Amazon ECS”で使用するためにアフェリエイトを行う為のアソシエイトIDを持っているんですが、そのID宛てに「今回の成功報酬は0円です」とかってメールがやたらくるので、ちょっと興味を持ってやり方を調べてみました。
Amazon アソシエイトの公式サイトを眺めていましたが、どうやらAmazonのサイトで商品単位やウィッシュリストなどでタグを生成してくれるので、それを貼り付ければいいようです。早速やってみます。
好きな商品へのリンクを作成できる。表示する要素や色なども選べるし、テキストのみも可能。しかし、よく見ますね、これ。。。
Amazonでの検索結果を貼り付けるバージョン。下のリンクの内容が鼻に付くのは勘弁してくださいm(_ _)m
好きなカテゴリへのバナーリンクを作成できる。これはゲームのバナーリンクです。
大きさだけを選んでAmazonのバナーを表示する機能。これもよく見ますね。
ウェジットも結構ある。ウェジットはたくさん貼り付けると重いので、その中から一つサンプルで配置。サイトにそぐう商品を紹介してくれるウェジットらしい。いったい、どんなものがひょうじされるやら。。。
なるほど、よく見たことがあるものばかりで、どれだけ普及しているかが伺い知れます。さて続いてWordPress用のAmazon アソシエイト機能を調査してみます。
これについてはこちらの参考サイトをご覧ください。
見ての通り、全部同じサイト様です。こちらの一連の記事を読むと、WordPress のプラグインはよっぽどのことがない限り使わない方がいいことがわかります。私も習ってプラグインは使わないことにします。
他のサイトのアフェリエイトで有名なのは、やっぱり”Google Adsense“や”楽天アフェリエイト“でしょうか。この辺もそのうち調査してみたいですね。
先日から楽天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 で全文検索を探すと”Tritonn”とか”Hyper Estraier”とか、よくわからないプラグインが出てきました。これらを勉強するのがなんとなく嫌だったので、ごり押しでできないものかと考えました。
本来の全文検索とは言いがたいかもしれませんが、入力された検索語句をスペースで区切って、それらすべてを OR 条件で結べばそれっぽいものになると考え、やってみることに。
とりあえず変更前の状況はこんな感じです。
#検索文字列を取得
@keywords = params[:keywords]
#where句を取得
title_cond = 'title like :title or other_title like :title '
#パラメータを取得
keyword = '%' + @keywords + '%'
#SQL実行
@books = Book.paginate :page => params[:page],
:per_page => 10,
:conditions => [title_cond, {:title => keyword}],
:order => "id"
この状態だと検索語句として入力した文字列がそのまま当てはまる本しか拾えません。これを全文まがいにしてみます。
#検索文字列を取得
@keywords = params[:keywords]
#where句を取得する変数の初期化
title_cond = ''
#パラメータを取得するハッシュ配列の初期化
hTitle = Hash::new
#検索文字列を半角・全角スペースで区切る
for word in @keywords.split(/ | /)
#空欄は条件に含めない
if word != '' then
#2回目からは先頭に"or"をつける
title_cond += 'or ' if title_cond != ''
#パラメータ変数を含むwhere句の取得
title_cond += 'title like :title' + i.to_s + ' or other_title like :title' + i.to_s + ' '
#パラメータハッシュ配列にパラメータを追加
hTitle[('title' + i.to_s).intern] = '%' + word + '%'
#パラメータ変数のインデックスをカウントアップ
i += 1
end
end
#SQL実行
@books = Book.paginate :page => params[:page],
:per_page => 10,
:conditions => [title_cond, hTitle],
:order => "id"
特に困ったのが、:condtions に動的な複数の引数を設定する方法です。ハッシュ配列を指定してあげればいいことはわかっていましたが、Paginate 内でハッシュ配列のkeyの呼び出し方が文字列ではなくシンボルだったので、ハッシュ配列のKeyはシンボルを指定しなければいけません。しかし動的にシンボルを使用する方法がわからず悪戦苦闘しました。なんとか intern メソッドを発見して解決しました。
予想よりも時間がかかりましたが、解決できてよかったです。
でめ備忘録 » [Ruby on Rails] amazon-ecs が Amazon Product Advertising API の署名認証に対応していること
先日、投稿した記事では rubygem の”amazon-ecs”が署名認証に対応しているということを書きました。確かに対応はしています。しかし、私の使用していたバージョン(0.5.3)では対応されていませんでした! 対応されているバージョンは“0.5.5″以降です。お詫びして訂正させていただきます。
さてさくっと謝罪したところで(反省なし)、さっそく”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
とりあえずこれで正常に動作するようになりました。ただ、以前より格段に重くなったような。。。仕方ないといえば仕方ないですが。。。
この記事には続きがあります。
でめ備忘録 » [Ruby on Rails] amazon-ecs が Amazon Product Advertising API の署名認証に対応していること (2)
2009年8月4日。Amazon ECS を使用した Rails の蔵書管理システムを実行したところ、以下のような表示になりました。
Amazon::RequestError HTTP Response: 400 Bad Request
これを見て、そーいえばなんか Amazon からメールが来てせっつかれていたなぁ~と思い出しました。でも英語のメールとか読む気が起きなかったので、他人任せにしようとネットを検索して、以下のサイトを参照させていただきました。
Amazon Product Advertising API (認証対応) | Diaspar Journal
ソースとかを読むと、要するに REST でデータを取得してくる際に”Secret Key”を追加しろ、ということらしい。
理屈はわかりましたが、私は gem のツール”amazon-ecs”をそのまま使用しているので、こちらのソースを修正しなければいけないということになります。…めんどい。
で、誰かやってないかなぁ~とネットを調査したところ、こちらのサイトを発見しました。
amazon-ecsに署名認証をつけるようにした - おもしろWEBサービス開発日記
こちらの方が”amazon-ecs”を修正してくださっているそうです。おおすばらしい! ぜひともパクらせていただきましょう!!
…ん? github? 最近、 Rails 市場に触れていなかったので、よくわかりませんでしたが、どうやらパッチとかを公開しておける場所らしい。ここから Download してインストールするのかぁ…なんか嫌な予感が。。。
Killed
案の定、CORESERVER では github からインストールしようとすると削除されてしまいました。
参考: でめ備忘録 » [Server] [Ruby on Rails] さくらインターネットからCORESERVERへRailsアプリを移動する (2)
さてさてどうするか。 github のローカルからのインストール方法を調べるか。。。
考えてみたところ、今回の秘密キーの認証ですが、昔 .NET で Amazon ECS を使用していたときは当然のように指定していました。そーいやなんで Rails だといらないのかなぁ~と不思議に思っていたんですが。。。そして気がついたのが、“amazon-ecs”は認証に対応していないのか、ということです。
調査してみたところ…やっぱり”amazon-ecs”は秘密キーに対応していました!! 少なくとも私が使用している”amazon-ecs 0.5.5″では既に対応されていました。
RubyForge: Amazon ECS: Project Info
使用方法は以下の通り。
config/environment.rb
require 'amazon/ecs'
Amazon::Ecs.debug = true
Amazon::Ecs.options = {
:aWS_access_key_id => "自分のアクセスキー",
:associate_tag => "自分のアソシエイトID", #省略可
:country => :jp,
:aWS_secret_key => "自分の秘密キー" #←追加
}
なんとか無事に動くようになりました。よかったよかった。
amazon-ecs のバージョンが間違っていました。
署名認証に対応しているバージョンは2009年7月18日リリースの 0.5.5 です。
amazon-ecs CHANGELOGより引用
0.5.6 2009-07-21
----------------
* Update parameter value encoding to support special characters
0.5.5 2009-07-18
----------------
* Sign request
以前、私はRoRの蔵書管理(書だけではありませんが・・・)システムを作成し、そのシステムにAmazon ECSを設定し、未購入商品の最安値情報を自動的に取得して、目標価格を下回った場合にアラートを出してくれる機能を作成しました。
このシステムは以前から楽天情報の取得も視野に入れていたのですが、非公式ウェブサービスしかなかった為、とりあえず保留にしておきました。
しかし最近調査したところによると、既に正式サービスが開始されていて、十分使用に耐えられる状態になっているとのことでした。と、いうわけでさっそく使ってみました。
公式サイト:【楽天ウェブサービス】RAKUTEN WEBSERVICE
RoRで楽天APIを使用しているサイトが見つからなかったので、Rubyでの使い方を紹介しているこちらのサイトを参考にさせていただきました。
しかしこちらのコードをそのまま利用すると、ソートパラメータに"最安値順:+itemPrice"などを指定した場合に、"+"が変換されず、上手い具合に検索結果を返してくれません。なのでかなりごり押しでその部分を修正してみました。
require "rubygems"
require "rexml/document"
require "open-uri"
class RakutenItemSearch
attr_reader :search_result
def initialize(developer_id=nil, affiliate_id=nil)
if developer_id
@developer_id_query = "developerId=#{developer_id}"
else
return nil, "Developer IDをセットして下さい"
end
@affiliate_id_query = "&affiliateId=#{affiliate_id}" if affiliate_id
@request_url = "http://api.rakuten.co.jp/rws/2.0/rest"
end
def item_search(options=nil)
# "type"としてkeyword、genreIdのいずれかを指定
if ["keyword", "genreId"].include?options[:type]
options_query = "{options[:type]}=#{options[:query]}"
else
return nil, "keyword, genreIdのいずれかを\"type\"にセットして下さい", ""
end
options_query += "&shopCode=#{options[:shopCode]}" if options[:shopCode]
options_query += "&hits=#{options[:hits]}" if options[:hits]
options_query += "&page=#{options[:page]}" if options[:page]
options_query += "&minPrice=#{options[:minPrice]}" if options[:minPrice]
options_query += "&maxPrice=#{options[:maxPrice]}" if options[:maxPrice]
options_query += "&availability=#{options[:availability]}" if options[:availability]
options_query += "&field=#{options[:field]}" if options[:field]
options_query += "&carrier=#{options[:carrier]}" if options[:carrier]
# sorting type
if options[:sort]
if ["+affiliateRate","-affiliateRate","+reviewCount","-reviewCount",
"+itemPrice","-itemPrice","+updateTimestamp","-updateTimestamp","random"].include?options[:sort]
options_query += "&sort=#{options[:sort]}"
else
return nil, "ソート方式が不正"
end
end
options_query_encoded = URI.encode(options_query)
# URI.encodeでは'=+'が変換されないので、手動で置換する
options_query_encoded = options_query_encoded.gsub(/=\+/,'=%2B')
@search_request = "#{@request_url}?#{@developer_id_query}#{@affiliate_id_query}#{options_query_encoded}
&operation=ItemSearch&version=2009-04-15".gsub!("\n","").gsub!(" ","")
xml_result = open(@search_request)
@search_result, return_text = xml_to_array(xml_result)
return @search_result, return_text
end
def xml_to_array(xml_result)
doc = REXML::Document.new xml_result
doc.elements.each("Response/header:Header/Status") do |status|
unless status.text == "Success"
return_text = status.text
unless doc.elements["Response/header:Header/StatusMsg"]
return_text += " " + doc.elements["Response/header:Header/StatusMsg"].text
end
return nil, return_text
end
end
result = Hash.new
doc.elements.each("Response/Body/*") do |ele|
result[:count] = ele.elements["count"].text.to_i
result[:page] = ele.elements["page"].text.to_i
result[:first] = ele.elements["first"].text.to_i
result[:last] = ele.elements["last"].text.to_i
result[:hits] = ele.elements["hits"].text.to_i
result[:carrier] = ele.elements["carrier"].text.to_i
result[:pageCount] = ele.elements["pageCount"].text.to_i
result[:item] = Array.new
ele.elements.each("Items/Item") do |item|
result[:item].push({:itemName => item.elements["itemName"].text,
:itemCode => item.elements["itemCode"].text,
:itemPrice => item.elements["itemPrice"].text.to_i,
:itemCaption => item.elements["itemCaption"].text,
:itemUrl => item.elements["itemUrl"].text,
:affiliateUrl => item.elements["affiliateUrl"].text,
:imageFlag => item.elements["imageFlag"].text.to_i,
:smallImageUrl => item.elements["smallImageUrl"].text,
:mediumImageUrl => item.elements["mediumImageUrl"].text,
:availability => item.elements["availability"].text,
:taxFlag => item.elements["taxFlag"].text,
:postageFlag => item.elements["postageFlag"].text.to_i,
:creditCardFlag => item.elements["creditCardFlag"].text,
:shopOfTheYearFlag => item.elements["shopOfTheYearFlag"].text,
:affiliateRate => item.elements["affiliateRate"].text,
:startTime => item.elements["startTime"].text,
:endTime => item.elements["endTime"].text,
:reviewCount => item.elements["reviewCount"].text,
:reviewAverage => item.elements["reviewAverage"].text,
:shopName => item.elements["shopName"].text,
:shopCode => item.elements["shopCode"].text,
:shopUrl => item.elements["shopUrl"].text,
:genreId => item.elements["genreId"].text
})
end
end
return result, ""
end
end
修正した箇所は以下の通りです。
使い方は以下の通りに
search = RakutenItemSearch.new("DEVID","AFFID")
options = {
:type => "keyword",
:query => "激安",
:hits => 10,
:sort => "+itemPrice",
:carrier => 0,
:availability => 0,
:field => 0,
}
result, error_message = search.item_search(options)
#エラーメッセージを出力
if error_message != ""
flash[:notice] = error_message
else
#取得後の処理を記述
end
とりあえずこんな感じで
昨日、「Bronze DBA 11g」に合格し、以前に取得した「SQL基礎Ⅰ」と合わせて、晴れて「Oracle Master Database Bronze」資格を取得しました。
PG稼業も5年目となりましたが、未だに資格とは縁がなく、初めて取得した資格なので何気に嬉しかったです。
で、その勢いのまま次の「Silver DBA 11g」試験を受けることにしました。
「Silver DBA 11g」は2008年9月に始まったばかりの試験です。教材も問題集はあるものの、教科書がまだ発売されていません。
しかし勢いづいている私は、「ORACLEフリーク」のみんなの受験記を参考に、10gの黒本教科書と、インプレスの問題集を購入し、いざ勉強を始めてみました。今考えればもっと確認しておけばなぁ~と思い悩むしだいです。
とりあえずこちらをご覧ください。
テスト内容チェックリストの欄を比較してみるとお分かりいただけるかと思いますが、今回は大幅に出題範囲に変更があります!
とはいえ、内容がそこまで変わっているかといえばそうではない。。。と勝手に考えていたんですが、インプレスの問題集をやっていると、11gの新機能についての記述が大変多いことに気づきました。また、そういうものに限って、『詳しい説明がほしいぐらいに理解しづらい』んですorz (ex.マルチブロックサイズ)
私としては正直、11g Silver を検討されている方には 10g 教科書をオススメできません。
CCNAやMCP、Oracleなど資格試験の取得に大きな貢献を果たしているC社の問題集ですが、「ORACLEフリーク」を参照するに、Silver 11gについてはあまり効果を発揮していないようです。
でもまぁ考えてみれば、まだ始まったばかりの試験ですし、きっと『バイトが間に合っていない』のではないでしょうか?
もしC社を検討されている方がいらっしゃいましたら、教科書ともども、もうしばらく待ったほうがいいかもしれません。
…ちなみに、2009年4月21日現在、C社のHPにアクセスできません。昨日はアクセスできましたし、whois検索でもなくなっているようので、ドメイン更新でも忘れたのでしょうか?w
| 月 | 火 | 水 | 木 | 金 | 土 | 日 |
|---|---|---|---|---|---|---|
| « 12 月 | ||||||
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 29 | 30 | 31 | ||||
WP Cumulus Flash tag cloud by Roy Tanck requires Flash Player 9 or better.