月毎覚書
2009年7月
table of contents
- 20090730:KohanaからMovable Typeの記事タイトル/リンクを生成してみる
- 20090727:サイトのスキン関係改良?
- 20090726:Amazon Adviertising API対応作業メモ
- 20090725:【重要・あと30日です】Product Advertising API の署名認証利用開始のお願い
- 20090719:TABLE自動表示
- 20090718:画像表示関係のCSSを考える
- 20090718:メニューリンクの再帰処理
- 20090715:こわいことやってたんだ
- 20090714:XML/SWF ChartsからFusionChartsへ:あっさり方針変更
- 20090715:googleには載ったようだ
- 20090714:XML/SWF Charts を使ってみる
- 20090713:yahooディレクトリ登録
- 20090709:APCでは速度改善なし
- 20090708:google登録
- 20090708:APCを動作させるが、MacPortsがおせっかいな件
- 20090708:サイトをgoogleに登録
- 20090707:zenphoto利用はやめる
- 20090705:ClockLinkのサーバ停止原因判明
- 20090705:Artisteerで頁構成を作った
- 20090704:Simplexmlを勉強する
- 20090704:「20090620:時計表示リンクというのがあるんだ」が無くなっている件
- 20090702:Artisteerを買う
20090730:KohanaからMovable Typeの記事タイトル/リンクを生成してみる
MovableType(MT)で書いたブログの自記事のリンクを生成表示する簡易タグを作成。
まずMTのdatabaseテーブルを調べる。
sqlite3コマンドで調査
sqlite> .tables mt_asset mt_field mt_permission mt_templatemap mt_association mt_fileinfo mt_placement mt_trackback mt_author mt_ipbanlist mt_plugindata mt_ts_error mt_blog mt_log mt_role mt_ts_exitstatus mt_category mt_notification mt_session mt_ts_funcmap mt_comment mt_objectasset mt_tag mt_ts_job mt_config mt_objectscore mt_tbping mt_entry mt_objecttag mt_template
このうち、ブログIDとタイトル、URL情報を含まれているテーブルをテキトウにアタリをつけて探す。
mt_entryにIDとタイトル,mt_fileinfoにIDとURLがあるのがわかる。ここまでくれば簡単で、
---
public function blog_link($id) {
$sqlite_db_path = MTのsqlite dbパス;
$dbn = new PDO("sqlite:".$sqlite_db_path,'','');
$mt = $dbn->query(
"SELECT entry_title,fileinfo_url
FROM mt_entry,mt_fileinfo
WHERE fileinfo_entry_id=entry_id AND entry_id=".$id);
$row = $mt->fetch(PDO::FETCH_ASSOC);
...略
あとは、$row配列を利用して、アンカーリンクを作ってやればいい。
blog_link((3))
と書けばJLGのたたき売りmyblogが表示される。これはブログ内でも、このhttp://bsn.river.tcの各ページでも機能する。
それより、ブログ記事に対応したID番号を確認するほうが問題。MTの通常画面を透かしてみても、どうもID情報は存在しないからだ。電脳網で調べると、どうやら編集画面記事一覧でURLを見てID番号を確認しなければならないみたいで、なぜそういう手間なことになっているのかワカランでした。
しかたがないのでKohana側から一覧リスト出来るようにスクリプトを書く[1]。下の画面がそれです。記事が増えてきたらKohanaのpaging機能を用いることにしてとりあえず一枚画面で大丈夫でしょう。その前にこのサイト、沈没する可能性大なわけだし。
20090727:サイトのスキン関係改良?
いわゆるスキンを選択出来るように改良。前のスキンのほうが好みだけど、とりあえず実験としてこのサイトのスキンも変えてみた。スキンのレイアウト骨格はArtisteergoogle で作る。
スキンの選択は、文書ルートにおいてあるsite.ymlで行う。
ルートにあるsite.ymlの中身
name:"both sides now" url:"bns.river.tc" skin_name:"country"<=現在のスキン名 cache:TRUE map: /scarborough/: /kohana/: /making_app/: /basic/: /memo/: /profile/:
20090726:Amazon Adviertising API対応作業メモ
認証利用に新しく必要なのは、SecretAccessKey。これはAmazon Web Services でログインすれば手に入る。
で、Amazon Product Advertising APIへ対応する(PEAR)と、http://d.hatena.ne.jp/p4life/20090510/1241954889を参照して、いままで使ってたPEARのAmazonECS4をやめて、同じくPEARのServices_Amazon-betaを使って、SecretAccessKeyをクラスインスタンスの引数に入れておくだけでいい。。全然面倒くさくなかったぢやないか。
リクエストuriは下記のようになった。
PEARクラスのgetLastUrlで取得したuri
http://ecs.amazonaws.jp/onca/xml? AWSAccessKeyId=秘 &AssociateTag=略 &ItemId=秘<=もちろん恥ずかしいから &Operation=ItemLookup &ResponseGroup=Medium &Service=AWSECommerceService &Timestamp=2009-07-26T02%3A24%3A41Z<==エンコードされている &Version=2009-03-31 &Signature=秘
20090725:【重要・あと30日です】Product Advertising API の署名認証利用開始のお願い
海の日周辺であれこれ浮かれいたら、あっと言う間に7月も終わるのかい。2009年6月の項目でメモってたAmazon Advertising API変更についてのメールが再度来てるのを見逃してました。気がついた時に対応しないとまずいですね。
20090719:TABLE自動表示
PEAR HTML_Tableを使えば、楽でした。=>表テスト
20090718:画像表示関係のCSSを考える
amazonのサービスで項目・画像を取得して
+------+ 画像 +------+ 項目 文字列 +------+
のよう配置出来るようにCSSを書いてFireFoxでは、右のように(右の画像の左下)表示されてるので安心してたのだが、さきほどscreenshot.jpでMS IE8での表示をチェックしたら
+------+ 画像 項目 +------+
となっているのだもの・・・。これは直さざる得ない。
20090718:メニューリンクの再帰処理
Artisteergoogle は、メニューリンクのjavascriptが付いてくるので、ul/li要素内にul要素を入れてネストするだけで、マウスオーバーで子のリンクが表示できるようになる。
いままで、頁カテゴリーの親子関係付けを処理せず放置していたのだが、とりあえずやってみた。文書ルートの処理用ファイル(YAMLgoogle )に、map項目を設け、つぎのように書いておく。
文書ルートのsite.yml内のカテゴリーリンク項目記述
map: /scarborough/: /kohana/: /basic/: /making_app/: /memo/: /profile/:
上の例では/kohana/の子が、/kohana/basic/,/kohana/making_app/。この情報をもとに、それぞれのディレクトリの情報ファイル(これもYAML)を見に行って、リンク用タイトルを得て、あとはVIEWでループを回して、リンク生成。
20090715:こわいことやってたんだ
中国政府、ネット依存症治療の電気ショックを禁止に(ロイター)
20090714:XML/SWF ChartsからFusionChartsへ:あっさり方針変更
グラフをあっさりとFusionChartsFree版(2.1)に変更した。表示用に各種言語に対応したコード類が提供されてるのがミソ。もちろんPHPのクラスもある。
フリー版でも機能が多くて、ぼくには使いこなせそうになく、複数の折れ線グラフが使えるだけで、もう満足しました。
使い方メモ
--------------前提--
(1)同梱のjavascript URLをHTMLのhead部で指定していること
<script language="Javascript" src="/skins/Charts/FusionCharts.js">
</script>
のような感じ。
(2)*swfがURLパス内にあること。
--------------手順--
0.Code/PHPClass/Includes/FusionCharts_Gen.phpを読み込む
1.$FC->setSwfPath(*swfファイルのあるURLパス名);
2.$FC=new FusionCharts(グラフタイプ,幅,高);でインスタンスを作る
グラフタイプは、上の例だとMSLine1(複数折れ線)
このタイプの名前が表示を司る*swfの名前になる
3.$FC->setChartParams(x/y軸とかキャプション表示のパラメタ);
4.$FC->addCategory(x軸の項目);これはループで回す。上の例だと
1993等の年号
5.$FC->addDataset(データ);これはループで回す
6.$result = $FC->renderChart(FALSE,FALSE);二番目引数TRUEなら
直接出力
出力されるjavascript
<script type="text/javascript" >
var chart_MSLine1 = new FusionCharts("/skins/Charts/FCF_MSLine.swf",
"MSLine1", "480", "480", "0", "0", "","noScale","EN");
//Provide entire XML data using dataXML method
chart_MSLine1.setDataXML("<graph xAxisName='X軸のタイトル'
yAxisName='yaxis' caption='編年テスト' decimalPrecision='0'
formatNumberScale='0' ><categories ><category name='1993' />
<category name='' /><category name='1995' /><category name='' />
<category name='1997' /><category name='' /></categories>
<dataset seriesName='JPN' color='AFD8F8' ><set value='123' />
<set value='333' /><set value='223' /><set value='345' />
<set value='443' /><set value='343' /></dataset>
<dataset seriesName='FRA' color='F6BD0F' ><set value='321' />
<set value='323' /><set value='139' /><set value='43' />
<set value='34' /><set value='138' /></dataset>
<dataset seriesName='GR' color='8BBA00' ><set value='121' />
<set value='299' /><set value='39' /><set value='532' />
<set value='98' /><set value='388' /></dataset></graph>");
chart_MSLine1.render("MSLine1Div");
</script>
上のPHPの用例はjavascriptの中(chart_MSLine1.setDataXML関数)にデータを埋め込むもので、*xmlファイルを指定することもできる。その場合、$FC->addDataset等などは必要ない。
20090715:googleには載ったようだ
本日朝、とりあえずサイト名を検索したところgoogleのデータベースには登録されているようである。
試しにbsn.river.tcgoogle 。
20090714:XML/SWF Charts を使ってみる
グラフをWebで描画する必要があって、それ用のスクリプトを探してみた。最初JpGraphを考えたが、そこまでの機能は必要ないのでパス。google のchart APIというのもあったが、外部依存したくないのでパス。結局、http://www.maani.us/のswfアプリケーションを採用。同梱のjavascriptで動作可能なので、条件にあわせてjavascriptの変数を代える部分だけをPHPで書けばいいだろう。
20090713:yahooディレクトリ登録
google bot君が来てくれてるみたいなので、「外部リンク」情報をつけるためにyahooディレクトリに登録しました。電子工作のディレクトリです。記事がまだほとんどKohanaがらみのものしかないので、一応PHPディレクトリを追加登録(という項目が登録画面にある)してます。いつごろ載るかな。
20090709:APCでは速度改善なし
外部からapacheのabで速度比較をしたが、APCでは殆ど改善なし。考えてみればあたりまえのところがあって、このサイトは2009年6月の覚えで書いたように、リバースプロキシで動かしてるからだ。LAN内のリバースプロキシサーバ<=>HTTP本体サーバの通信よりは、サーバーになってる玄箱の処理速度とか、光対応出来てない回線速度が足を引っ張ってるようである。後回しになってるリバースプロキシの調整をやれば、そのへんは改善されるかもしれないけれど試行錯誤が多そうで面倒なので多分やらない(<=家訓)。
ということで、面倒ではないKohanaのCacheを動かしてみた。もちろん早くなりました(cf. Cacheを使う)
20090708:google登録
本日googleにURLを登録しました。公開開始です。
20090708:APCを動作させるが、MacPortsがおせっかいな件
おまじないとして、PHP PECLのAPCをMacportsで入れる。port install php5-apc
で、、、、入れたら、php.iniいじらなくても動作している。
macports関係のメーリングリストに載ってた情報で気付いて、phpinfoでmacportsのコンパイルオプションを見ると、--with-config-file-scan-dir=/opt/local/var/db/php5だったんだ。そうなってるのは知らなかった。
---
cat /opt/local/var/db/php5/APC.ini extension=APC.so
でも、どうだろう。それを使うにしても、/opt/local/var/db/なんていう無関係なディレクトリじゃなくてphp.iniのディレクトリ(/opt/local/etc/php5/)に近いところにすべきだと思うよ。
20090708:サイトをgoogleに登録
Kohanaで作っていたアプリ(モジュール)が動いているので、このサイトのURLをgoogleに登録しました。なんやかんやで、作り始めてから、公開までに、一月ぐらいかかりました。でもサイトの目的はKohanaの作成メモの公開じゃなくて、電気工作日記の公開だったはず。本末転倒はこの程度にしてと。
20090707:zenphoto利用はやめる
2009年6月で書いたWEBアルバムアプリケーションzenphotoであるが、使うのはやめました。理由はアプリケーションを作るの画像の取り扱いにて。
20090705:ClockLinkのサーバ停止原因判明
20090704にhttp://www.clocklink.com/がDNSエラーになると書いたが、復活してる。結構気に入ってたので、よかったよかった。倒産したのかとおもってしまった(DNS解決エラーってかなり深刻だから)。
http://www.clocklink.com/new_content.php?id=95&page=17月2日から4am on July 4, PSTgoogle まで火災原因でデータセンターが停止したということなので、かなり長期にわたったわけですね。
こういうことがあるので、単にjavascriptを張るだけじゃまずいかもしれないですね。頁自体の読み込みがとても遅くなる。相手方が生きてるかどうかを判定した上でjavascriptを動かすような仕掛けを考えたほうが、いいかもしれない。
20090705:Artisteerで頁構成を作った
入れ子の密林をなんとか踏破して、VIEW+CSSをとりあえず作った。
CMSのskinとかを作る人って、エライなあと思った。手間がすごい。
と、ここまで書いて、とりあえず記念撮影 。下のようなものが本日の構成である。本日の、などと書いたところを見ると、手間だと言いながら気に入らなくて作り直す可能性は否定できません。
↓いままでの仮レイアウトだったもの
↓今回作ったもの
代わり映えしないといえばそれまでだが、それほど手間なく作り直せるし、ボタン画像なんかも自動生成してくれるみたいだし、メニューリンクを、なにも考えないでjavascriptで表示出来るとか、配置のズレみたいなものを考えなくてもいいとか、やはり利が大きいので自分で一からしこしこ作るのはもはや考えられない。
20090704:Simplexmlを勉強する
Artisteerは、お手軽Webレイアウトソフトで便利である。ただ、出力して出来るHTML の「タグ」が入れ子の入れ子の入れ子の入れ子の入れ子になっていて、加えて表示用のダミーの文字列がたくさんあるので、何処から何処までが有意の要素の塊なのかすぐに判らなくなる。
HTMLソースの不必要な塊や記述をちぎっては投げちぎっては投げ、必要なところだけをKohanaのVIEWに使うという作戦なので困った。
さいしょ、FireFoxのアドインのFireBuggoogle を入れてみて、HTML要素を樹木表示しつつ、エディタで編集していたのだけれど、出力ファイルのインデントが深すぎてすぐに間違う。
そこで、これをXMLファイルと見なして要素タグのみを抜き出して、浅いインデントを付けたファイルを作ればいいんじゃないかと考える。最初はsed/gawkで安直に手を付け始めたのが意外と難敵だったのですぐに諦め(出来ないことは出来ない<=家訓)、PHP5がもっているXML解析関数のsimplexmlを勉強しようと少し頑張った(少しは頑張る振りをしろ<=家訓)。
結論。勉強しなくてよろしい。
http://www.php.net/manual/ja/function.simplexml-element-asXML.phpの取説頁にarian.stolwijk [at] gmail [dot] com さんとrgezella at gmail dot comさんのSimpelXMLElementが投稿・修正した拡張クラスを使えば、Artisteerの出力HTMLファイルにちょっと手を加えるだけで[2]、さっくりと出来るのであった。おかげで、入れ子の水準をエディタ二分割視認するのが楽になった。どうもありがとう。
あとは、Artisteerの使ってるCSSのID/CLass名などを抜き出すスクリプトなどを書けば、VIEW回りを作れそうである。
20090704:「20090620:時計表示リンクというのがあるんだ」が無くなっている件
http://www.clocklink.com/のDNSが見当たりません。
20090702:Artisteerを買う
なんとかKohanaでControllerとModelは出来て、Viewに取り掛かろうとしているのだが構成とか美術能力がないので、米国のExtensoftという会社が売ってる「网頁自動作成柔体[3]というのを、買ってしまった。試用版をいじってたら、なぜか欲しくなったので衝動で。