Amazonのコーディング
昨日、My Releaseの情報を更新しようと思ったらAmazonのホームページの仕様が変わったみたい、ソースを見てみると以前の様にテーブルでレイアウトされたものとスタイルシートでレイアウトされたものがあり(見た目は同じ)、毎回新しいレイアウトなのでは無く、ときどき新しいレイアウトになるみたい。
おそらく、分散化させてるサーバーの一部が変更になったのだろう。
結局、古いのも残して新旧のソースを判断して情報を抽出する様に修正した。
昨日、My Releaseの情報を更新しようと思ったらAmazonのホームページの仕様が変わったみたい、ソースを見てみると以前の様にテーブルでレイアウトされたものとスタイルシートでレイアウトされたものがあり(見た目は同じ)、毎回新しいレイアウトなのでは無く、ときどき新しいレイアウトになるみたい。
おそらく、分散化させてるサーバーの一部が変更になったのだろう。
結局、古いのも残して新旧のソースを判断して情報を抽出する様に修正した。
MyReleaseの方が先日アクセス数が多かった(2・3割増し)、ブログパーツの効果が出たのだと思うが今日になるといつも通りに戻っていた。
まあ、こんなもんかもしれない、何件かブログパーツを付けてくれてるブログも見つけた、あまり被リンクされていないので他のサイトに載るのはうれしい。
調子に乗ってMyReleaseを少し修正した、
・公開リストからダイレクトにユーザーのサイトにリンクするように変更
・携帯版もユーザーサイトへのリンクを追加
・携帯版のコミュニティの入り口作成
そうすると、自分のページとして貼ってあるuda2.comのトップページが携帯に対応してないのでレイアウトが崩れる事が分かった(それでも一応は見えてるが・・・)
そこでuda2.comのトップページを携帯でもそれなりに見える様に修正した。
元々変わったレイアウトなので他で使えるかは疑問があるが・・・
実際は携帯に対応したというよりはi-modeに対応した感じになる、i-modeでも使える基本的なタグを使って組んでからCSSでPC用のレイアウトを施した。
ついでにこのブログのトップを携帯で閲覧した際は携帯ページに飛ばす様にした。
これはPHP化してあるので楽勝でした。
クレナビの他にもサイトを作る予定だし、XPが終了して、来月から地デジ告知が入って、8月にはオリンピックなんで特価部も忙しくなりそうだと思ってたら、そろそろ夏のドラマが始まるんでMyReleaseの特集ページ入れ替えなきゃならない。
やらなきゃいけない事は他にもいろいろあるのにまたツールを作った。
以前からAmazonで言うところのISBN-13のハイフンの打つタイミングがよく分からないので調べてみたら桁数は違うけど規則性がある事を発見した。
例えば、978-4088745213だと正式には978-4-08-874521-3になる。
wikipedia風に言うと「接頭記号」-「グループ記号」-「出版者記号」-「書名記号」-「チェックデジット」となる。「接頭記号」と「グループ記号」と「チェックデジット」は桁数が決まってるので問題無いが「出版者記号」「書名記号」は桁数が決まっていない、そこでISBN 出版社リストを見ていると「出版者記号」の頭の2桁を見ると桁数が分かる事を発見した。
PHPで書くと下記の様な感じだ($aに「出版者記号」の頭の2桁が代入されてるとする)
if ($a < 25) $keta = 2;
else if ($a < 75) $keta = 3;
else if ($a < 86) $keta = 4;
else if ($a < 90) $keta = 5;
else if ($a < 99) $keta = 6;
else $keta = 7;
更に調べてみるとISBN-10とISBN-13は現在のところ変換可能という事が分かった。
ISBN-13とISBNの大きな違いは「接頭記号」が付くかどうかで、「接頭記号」には978と979があるという事でISBN-10からISBN-13への変換は無理と思いこんでいたんだけど実際は979は使われていないみたい。そうなると978付けて「チェックデジット」を付け直すと変換が可能という事になる。
ISBN変換
結構前から構想してたがなかなか特価部の方に時間を食われてできなかったブログパーツが完成した。iTunes StoreブログパーツみたいにFlashで作ろうかとも思ったけどサイズを自由に変更できて文字を確実に見せるにはFlashだと面倒なのでインラインフレームの方式にした。
(予定が早まったのでコミュニティの方はかなり雑になってしまった・・・)
とりあえずは出来たのだが色の指定の方法がでクレームが付いて直すことになった。
その指摘は「色コードが分からないという」という事だった、構想の段階では「色コード分かるかな~」と思ってたのだが制作に入るとすっかり忘れていた、ということで直す事になったがカラーピッカーを作るのがめんどくさい、昔作ったはずなんだがどっかにいったし、自分が作ったのだとしょぼいしブラウザの対応とか考えると遠い話になってくるそこでオープンソースなAJAXを使うことにした。
AJAXなカラーピッカーも結構ある選ぶ参考にしたのがJavaScriptist(トップページが怖いサイト)
PhotoShop-like JavaScript Color Picker
JavaScriptistじゃないところからみつけたPhotoShop風カラーピッカー、デザイン的には一番いい感じだけどでかい。
jQuery color picker
Painter風カラーピッカー、これもかっこいいし、jQueryを使ってるのでなんか安心
ColorPicker(script.aculo.us)
windows風カラーピッカー、script.aculo.usとかいうのを使ってるらしいがよく分からんので調べてみたらprototype.jsに追加するものらしい、見た目は上の2つに劣るがポップアップなのでいい感じだ。
結局、ColorPicker(script.aculo.us)を使うことにした、見た目は画像とCSSをいじって調整することにした。設置は簡単に終わった。見た目のほうはフィーダーの画像を作り直して、CSSの方はボタンの色を変更して、なぜかカラーピッカーの下のカラーコードが入るテキストボックスのフォントサイズが変になったのでテキストボックスのサイズを変更した。
結果的に、このブログを書く時間やAJAXを探す時間よりも早くできた。
ブログパーツを紹介するサイトに登録しているうちにすごいのを発見した。
ブログパーツ|1-click Award
とりあえず、このサイトあまり深く見ると自信をなくしそうなので見ないようにします。
iPhoneで私を含め世間は色めきだっているが、WEBクリエーターとしてはiPhoneのサイト制作も気になるところ、
asahi.comなど既に対応してるところもあるし、iMTなるものを入れたらmovabletypeの管理画面もiPhone仕様になるらしい。
今のところ分かったのは
ユーザーエージェント
iPhoneは
Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A543a Safari/419.3
iPod touchは
Mozilla/5.0 (iPod; U; CPU like Mac OS X; en) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/3A100a Safari/419.3
(ん?iPod touchってブラウザが付いてたんですね。)
但し、iPhone 3Gでは無いので微妙に数値は変わると思う。
表示可能範囲は
縦長表示時 横320px × 縦356px
横長表示時 横480px × 縦208px(Telomere参照)
metaタグの「view-port」で表示領域や拡縮等の表示設定ができる
javascriptのwindow.onorientationchangeで方向が分かるらしい。サンプル
iUI.jsというのを使えばWEBサイトをiPhoneのOS(?)の様な見た目になるらしい。
Yahoo!画像検索でも使われてるとの事。
以前タッチパネルPC(今はタブレットPC)使ってたんで分かるんだけど普通のWEBサイトは指でクリックしづらいので、こういった作り込みは必須になるかと思う。
iPhoneにはアプリ制作のSDKが用意されていておそらくそれで作ったであろうゲームが買える様になっている。だが私のメモリ容量はいっぱいいっぱいでこれ以上覚える事は避けたい、Flashが対応してくれたら色々出来そうな気もするけど、Flash対応は未だ噂の域を超えてない。
Flash liteでいいから使えたらな~
MyReleaseのアナライザをチェックするといつもdocomoが6割を占める圧倒的な数になる、しかも505iという古い機種が多い。「世の中そんなに携帯長いこと使ってる人がいるんやな~」とか「MyReleseって携帯ユーザー多いな~」とか思ってたんだけど、生ログを調べてみると犯人はGooglebotだった。
DoCoMo/1.0/N505i/c20/TB/W20H10 (compatible; Googlebot-Mobile/2.1; +http://www.google.com/bot.html)
これを除外すると履歴ファイルは半分以下になった。
ちなみにYahooは携帯ごとに分けてるらしい。
DoCoMo/2.0 SH902i (compatible; Y!J-SRD/1.0; http://help.yahoo.co.jp/help/jp/search/indexing/indexing-27.html)
KDDI-CA33 UP.Browser/6.2.0.10.4 (compatible; Y!J-SRD/1.0; http://help.yahoo.co.jp/help/jp/search/indexing/indexing-27.html)
Vodafone/1.0/V705SH (compatible; Y!J-SRD/1.0; http://help.yahoo.co.jp/help/jp/search/indexing/indexing-27.html)
更に明らかに検索エンジンと思われるモノを外し、
Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
Mozilla/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slurp)
Mozilla/5.0 (compatible; Yahoo! Slurp/3.0; http://help.yahoo.com/help/us/ysearch/slurp)
Mozilla/5.0 (compatible; Yahoo! DE Slurp; http://help.yahoo.com/help/us/ysearch/slurp)
調査したところ下馬評通りIEが一番人気だった。
前回の価格表示を画像に埋め込む事にした。
前に作った価格.comとconeco.netとベストゲートとベストプライスの比較サイトを一括でチェックするやつに追加する感じで入力していくとブログに貼るソースデータを作れる様にしたかったので、それを更にハッティンさせて画像をトリミングしてその中に価格表示を埋め込む事にした。
今回の肝は「jsCropperUI」というやつだ。
demo
半年以上前から存在は知ってたんだけど「いつかやろう」とほったらかしていた。
どうも、AJAXとかオープンソース系は乗り気になれないんだけど。こんなの自分では作れないのでトリミング座標はcropperに任せて作ったんだけどずっとjavascriptエラーがでてる。
深刻なエラーではないのか普通に動作はするんだけど気になる。
エラーの場所を見るとデバッグみたいな英語が書いてあったので「いらないか」と思って消したら、エラーがでなくなった。
http://uda2.com/blog/price/
まだ、細かいトコ詰めてないんで動作が怪しいけど、これのおかげてそんなに安くないのについつい載せてしまった。
あと残る問題は見に来る人が少ない事だけだ・・・・
どうも心躍る!期間限定激安高校「大特価情報部」の価格表示があんまり激安感が無かったので激安な表示にすることにした。
参考にしたのは激安で有名なドン・キホーテのチラシだ。
なんか、いい感じで数字が重なって激安感が出てる。
チラシの数字部分とカンマと円をトレースして、赤黄の部分と黒白(背景が白なんで白はイマのところ意味無い)の部分の各2枚のpngを作った。
赤白
黒白
↑こんな感じの画像。
そんで、PHPのGDってのを使って
白いベースを作って
黒白の画像を左からつめつめで乗せていって
次に赤黄の画像を左からつめつめで乗せていって
最後に点を打っている。
画像があればその画像を表示してなければ作る感じなんで、なんかの間違いで大人気ブログになっても大丈夫なはず。
http://uda2.com/price/priceimage/19800.png
赤いところの数字をいろいろ変えてみて。
(0~999999円まで対応)
これ作るのに半日かかってしまった、一日100PVも超えられないページには豪華すぎる価格表示!
どうっすか?
PHP4で開発していて「これって簡単に出来る関数ないかな?」と思ってネットを検索するとPHP5のみ対応みたいな記事をよく見るようになってきた。
今回作ってるスクリプトは心躍る!期間限定激安高校「大特価情報部」を更新する際に「本当に安いのか」を調べる為、複数の価格比較サイトを行き来して調査してたんだけど結構面倒なんで、複数の価格比較サイトの情報を一括して検索できないかと考えて作ってたんだけどget_headersっていうページヘッダの情報を得る関数を使おうと思ったらPHP5専用だった。
個人用なんでスクリプトはどこに置いても問題ないんで、DNRH-001その3でPHP4をインストールしてしまったのをPHP5に置き換えようとしてみたが他のソフトとのかねあいで弾かれてしまった。
PHP4とPHP5を安全に共存させる方法ってのを見て共存の道を探してみたがどうもハードルが高かそうなので諦めた。
今借りてるサーバーでPHPが使えないか調べたところココ(XREA)にはCGI版が入ってるらしい
PHPをCGIとして動かす方法についてにそのやり方が載っていた。拡張子をcgiに変更する必要も無く「#!/usr/local/bin/php」を入れる必要も無いとすごく楽。
やってみたらすんなり動いた。
http://uda2.com/blog/price/
CGI版は遅いと聞いていたけど元々重いのであんまり差は分からなかった。
XREAはたま~にページが表示できませんになったりするけど開発者には優しいな。
気になる仕事50職の年収公開SPを観て自分との年収の差に愕然としながら、PHPを弄ってるとあることに気づいた。
mbereg_replace
ん?「mb_ereg_replace」で無くて?
もしかしたら誤記してしまってたのか?
と一瞬青くなったがよく考えてみると何の問題もなくずっと動いてる。
調べてみると「mbereg_replace」というのもあるそうだ。PHPを始めた頃よく参考にしてたSAK 図書館でmbereg_replaceを使ってたんでそのままこの記述にしてたんだろう。
それでも気になるので更に調べてみるとれぶろぐに「mb_ereg 系の関数は PHP 4.2.0 以降でないと使えないことが判明。」とあった。
前回、「i18n_」系の関数の為に処理を追加したのに「mbereg_」系でも処理を追加しなくてはならないのか~?
あ、よく考えるとオレってオープンソースなの作った事無いから、その都度サーバーに合わせて修正すればいいんやった。
ま、とりあえず「mb_ereg_replace」に統一しときますか。