プログラム

Ethna_MailSenderにSJISのテンプレートを渡してしまうと…。

以下の箇所で止まる。ループから抜けられないみたいだが、中までは追っていない。
いや、ちゃんとテンプレートをEUC-JPで渡せよ。って話です。はい。

<?php // 色づけ用
// class/Ethna_MailSender.php (2007-04-19 14:59:38版?)
function _parse($mail)
{
(中略)
$header[$i][] = preg_replace('/([^\x00-\x7f]+)/e', "Ethna_Util::encode_MIME('$1')", $value);  // ここから抜けられない
}
?>

うーん。

あと、ソース自体が今は多少変更あるみたいですが、こことは関係ないはず。*1
でも、やっぱりテンプレートの文字コードをちゃんとあわせい!という話な気もする。いや、気じゃなくてそうだ。

*1:〜はず。というところがポイントである

AIR Beta3

AIR Beta3が出ていたのでいれてみるとまたいろいろ動かなくなる。
例によってアプリケーションディスクリプタファイルの仕様が変更されている様だ。

invalid application descriptor: application filename must have a non-empty value.

とか表示されるし。
いろいろ調べてみたところ、

が主立ったところか。直してみたらとりあえず動く様にはなったが、まだ目的のプログラムは動かない。起動はするのだが。
参考にしたページはここ
その中で紹介されていたアプリケーションディスクリプタファイルをそのまま掲載。

<?xml version="1.0" encoding="utf-8" ?>
<application xmlns="http://ns.adobe.com/air/application/1.0.M6">
<id>com.example.ExampleApplication</id>
<name>Example Co. Example Application 1.0</name>
<version>1.0</version>
<filename>Example Application</filename>
<description>This is a sample AIR application.</description>
<copyright>(c) 2007 Example Co., Inc.</copyright>
<initialWindow>
<content>〜.swf</content>
<title>Example Application</title>
<systemChrome>standard</systemChrome>
<transparent>false</transparent>
<visible>true</visible>
</initialWindow>
</application>

今日はここまでかなぁ。

YAML

PHPYAMLを読み込ませたかったので調べたら次のライブラリが簡単で便利だったので紹介。

"spyc"
a simple php yaml class

Spyc is a YAML loader/dumper written in PHP. Given a YAML document, Spyc will return an array which you can use however you see fit. Given an array, Spyc will return a string which contains a YAML document built from your data.

使い方は非常に単純でsourceforgeからダウンロードしたtar.gzの中にspyc.php, yaml-dump.php, yaml-load.php といったファイルがあるのでそれらを自分が呼び出せる位置に置く。
ここでは、スクリプトの下のspycディレクトリに置いたとします。

<?php
require_once("spyc/spyc.php");
$yaml = Spyc::YAMLLoad('sample.yaml');
?>

これで、sample.yamlの内容(構造)が$yamlで表現されます。
上の例は解析だけだったけど、逆にYAMLを出力することもできる。便利だ。

これを使って何を企んでるのかというと、任意のYAMLを解析してその出力結果をハードウェア設計の方に利用しようかと。
ある程度動くところまで書けたので今日はここで終わり。

ったく。

寝れないので仕方ないので本日巷で話題のGoogle Chart APIを使ってみた。
お約束通り、自作のフィードリーダ(http://feeddown.sakura.ne.jp/)のトップページでグラフを書かせてみた。
最近10日間の回収フィードアイテム数を表示するというもの。あっという間に書けてしまった。
すごくシンプルだけど使い勝手がよくて用途も多いのではないだろうか。
というか、いままでいろんな言語のライブラリとかでグラフ出力できるものがあったけど、選ぶとしたらこちら使ってしまいそうだ。

とりあえず。

動き始めたので...。
http://feeddown.sakura.ne.jp/intro/?account=hideack
ちょっといろいろ変えたいところはあるのですが、とりあえずということで。
購読しているフィードで、おもしろい!とか、これいい!という記事があったらすぐに紹介できる仕組みを作りました。
将来的にはここからコメント付きでRSSなりAtomなりを派生生成させたいなぁ。

MySQLでLIMITとOFFSETは併用できない。

テーブルの6行目から10行分抽出とかというクエリーを発行したいとき、

SELECT * FROM table名 LIMIT 10 OFFSET 5;

と書きたくなるところだが、MySQLの場合は、

SELECT * FROM table名 LIMIT 5,10;

と書く。
OFFSET指定は先頭が0開始。

shortcut.js

JavaScriptで簡単にキーボードのショートカットを実装するためのライブラリ "shortcut.js"
シンプルで且つ激しく便利。使い方は、見ての通り。

shortcut.add("r",function() {
alert("rが押されました");
},{
'type':'keydown',
'propagate':true,
'disable_in_input':true,
'target':document
});

第1引数はショートカットの定義。"Ctrl+C"といった書き方もできます。
第2引数はショートカットが実行された場合の処理内容。
第3引数は設定用のパラメータを含めたArrayを渡す。
Arrayの詳細は

  • type:String
    • 種類は'keydown','keyup','keypress'の3通り。指定が無い場合は'keydown'となる
  • disable_in_input:Boolean
    • 入力フォームであるINPUT要素にフォーカスがあっているときにショートカットを有効にするか否かの設定。指定しないとfalse
  • target:DOM Node
    • 指定しないとdocumentが指定されます。

もっとも、おそらくページを見れば全てわかるでしょう...。
あと久しぶりに技術的なこと書いた。

sakuraサーバ

今年の3月くらいから自作feedリーダーが動き続けていて、細々と作って細々と利用しているのだけど、そういえばどのくらいの量なのかな。と思い調べてみた。

mysql> SELECT COUNT(*) FROM FEED_DATA;

                      • +
COUNT(*)
                      • +
17074
                      • +

1 row in set (0.01 sec)

件数で17000かぁ。
容量にして24Mbyte程度。まだ全然少ないな。
記事が一定量以上たまったら検索の方法で少し試みたいアイディアがあるので試してみる予定。
「この考え方、結構おもしろいかも。」と、私が思うくらいなので世界には1000人(いや、それ以上)同じことを考えている人はいるだろう。きっと。ただ、手を動かすのがそのうち何人居るか知らないけど。それと、肝心な「実用になるのか!」という大きな問題もあるが...。

あと、もしこのフィードリーダーを使ってもらえる人*1が自分以外にも出てきたら、そこでも試してみたいことがあったり。
試したいことはたくさんあるのだけど、実力が追いつかず。修行が足りない。

…ふと思ったが、これはナンなんだ?仕事ではないしな。趣味か?

*1:相当忍耐強い人でないと無理である

VisualStudio2005の文字コード

扱いのデフォルトはUNICODEなのですね。
なので、プログラムの中でWindowsのクリップボードに文字列をコピーしなければならない時は、

SetClipboardData(CF_TEXT, strSource);

では無く、

SetClipboardData(CF_UNICODETEXT, strSource);

としなければならない。*1
google等の検索エンジンで「クリップボード VC コピー」などとやると、VisualStudio2005以前の例が多いので、CF_TEXTを使っていることが多いが、これをそのままVS2005でやるとコピーできない。

*1:プロジェクトの設定で使用する文字コードを切り替えれば問題ないけど、デフォルトはUNICODEになっている