home>>各種設定memo>>月毎覚書

月毎覚書

2009年7月

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機能を用いることにしてとりあえず一枚画面で大丈夫でしょう。その前にこのサイト、沈没する可能性大なわけだし。



mt_id_list.png

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のサービスで項目・画像を取得して

+------+
  画像
+------+
  項目
  文字列
+------+

ff.png のよう配置出来るようにCSSを書いてFireFoxでは、右のように(右の画像の左下)表示されてるので安心してたのだが、さきほどscreenshot.jpでMS IE8での表示をチェックしたら



+------+
  画像    項目
+------+

ie8.png となっているのだもの・・・。これは直さざる得ない。



20090718:メニューリンクの再帰処理

Artisteergoogle は、メニューリンクのjavascriptが付いてくるので、ul/li要素内にul要素を入れてネストするだけで、マウスオーバーで子のリンクが表示できるようになる。

linkmenu.png

いままで、頁カテゴリーの親子関係付けを処理せず放置していたのだが、とりあえずやってみた。文書ルートの処理用ファイル(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のクラスもある。


Chart.

フリー版でも機能が多くて、ぼくには使いこなせそうになく、複数の折れ線グラフが使えるだけで、もう満足しました。

使い方メモ

--------------前提--
(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等などは必要ない。

FusionChartsテスト

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とかを作る人って、エライなあと思った。手間がすごい。

と、ここまで書いて、とりあえず記念撮影 。下のようなものが本日の構成である。本日の、などと書いたところを見ると、手間だと言いながら気に入らなくて作り直す可能性は否定できません。

↓いままでの仮レイアウトだったもの

diff_IE_FireFox.jpg

↓今回作ったもの

first_layout.jpg

代わり映えしないといえばそれまでだが、それほど手間なく作り直せるし、ボタン画像なんかも自動生成してくれるみたいだし、メニューリンクを、なにも考えないで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]、さっくりと出来るのであった。おかげで、入れ子の水準をエディタ二分割視認するのが楽になった。どうもありがとう。

simplexml.jpg

あとは、Artisteerの使ってるCSSのID/CLass名などを抜き出すスクリプトなどを書けば、VIEW回りを作れそうである。

20090704:「20090620:時計表示リンクというのがあるんだ」が無くなっている件

http://www.clocklink.com/のDNSが見当たりません。

20090702:Artisteerを買う

なんとかKohanaでControllerとModelは出来て、Viewに取り掛かろうとしているのだが構成とか美術能力がないので、米国のExtensoftという会社が売ってる「网頁自動作成柔体[3]というのを、買ってしまった。試用版をいじってたら、なぜか欲しくなったので衝動で。














annex

補足情報はありません













note
[1] 調べてみると、MTのテンプレートに <$MTBlogID$> というタグを書けばいいみたいだが、MTのテンプレートを一切弄らないというのが家訓であるので、採用しない。
[2] 各行にある要素内容の文字列を削ることと、 一行に複数ある要素タグを一行一つに切り分けることが必要。
[3] というのかどうか知らない。 中国インターネット用語集 をみて単語を並べてみただけ。
」のArtisteer2