それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

情報に利子が付く

今日も、へんな会社の作り方を再読中。


情報に利子が付くを考えてた。ブログをHatenaやライブドアで書くとコメントや、トラバを拾いやすい。つまり書いたことに対して利子が付いて返ってくる。これだ。どうせブログ書くなら利子(コメント)がつきやすいサービスを利用するに決まっている、エントリに対するコメント率を利率だとすると、Mixiがダントツで利率が良いわけだ。

ブログ事業者はユーザーのエントリを預かって運用する。ユーザーのエントリを使ってサービスを盛り上げる。盛り上げたら事業者の利益になり、ユーザに利率(コメント率)が上がる。利率が良いところに預けるのは当然だ。情報に利子が付くという発想はとても大事だと思った。


そう考えると、ブログサービスやサービスを充実させる方向性が見えてくるんじゃないかな。

Spyc PHPのYAML実装


PHPにはYAMLに、Spyc.class.phpを使う。Symfonyにも組み込まれていり。コレ便利。他にも使っている。



PHPからYAMLを扱うには。とてもSimple

YAMLを配列にロードする。

$yml ="--
hoge:
 - bar
foo:
 bar: 1";
$array = Spyc::YAMLLoad($yml);#引数は文字列、またはファイル名のどちらか

#static以外にインスタンスを使っても良い
$spyc = new Spyc;
$array = $spyc->load("settings.yml");

配列をYAMLにロードする。

$array[] = array("a", "b", "c");
$array["test"] = array("1", "2", "3");
$yml = Spyc::YAMLDump($array);

これだけ。YAMLをどんどん使いましょう。

これ以外にも設定には、parse_ini_file、JSON、serialize、Pear::Configが使えます。組み合わせて使うと嬉しい。

JavaのProperitesとYAMLをマージしつつ、XMLで出力して遊ぶ。

Pear::Configと組み合わせYAMLXMLと相互変換

$config = new Config();
$prop   = $config->parseConfig( "GenericConf",
                                "java.properties"
                                array("comment" =>"#",
                                      "equals"  =>"=",
                                      "newline" =>"\\" );
                               );
$array = $prop->toArray("PHPArray");
$yaml  = Spyc::YAMLLoad("perl.dumper.yml");
$array = array_merge( $array, $yaml );
$element = $config->parseConfig( "PHPArray", $array );

$xml = $element->toString("xml");

YAMLXMLに変換したり、PHPのINIファイルにしたり相互変換がとても便利です。相互変換にはPear::Config_Container_PHPArray を経由しています。変換するときに、toString($TARGET_TYPE);と書くのがミソ。


ただ、APIドキュメントがないので、Hackできないじゃん。と思ってSpycをphpDocumentorに掛けてみた。


Spyc.class.phpの概要

Variable Summary Description | Vars (details) | Methods (details)

  • mixed $_allNodes
  • mixed $_dumpIndent
  • mixed $_dumpWordWrap
  • mixed $_haveRefs
  • mixed $_inBlock
  • mixed $_isInline
  • mixed $_lastIndent
  • mixed $_lastNode

Method Summary Description | Vars (details) | Methods (details)

  • static string YAMLDump (array $array, [int $indent = false], [int $wordwrap = false])
  • static array YAMLLoad (string $input)
  • string dump (array $array, [int $indent = false], [int $wordwrap = false])
  • array load (string $input)
  • array _array_kmerge (array $arr1, array $arr2)
  • array _buildArray ()
  • string _doFolding ($value $value, $indent)
  • string _doLiteralBlock ($value $value, $indent $indent)
  • string _dumpNode ($key $key, $value $value, $indent $indent)
  • array _gatherChildren (int $nid)
  • int _getIndent (string $line)
  • array _inlineEscape ( $inline)
  • void _linkRef ( &$n, $key, [ $k = null], [ $v = null])
  • bool _linkReferences ()
  • bool _makeReferences ( &$z, object $z)
  • boolean _nodeArrayizeData ( &$node, array $node)
  • array _parseLine (string $line)
  • mixed _toType (string $value)
  • string _yamlize ($key $key, $value $value, $indent $indent)
  • string _yamlizeArray ($array $array, $indent $indent)


殆ど全てがProtectedかPrivate。なのでHackすることが、なにもない。Pear::Configと組み合わせて相互変換くらいか。

残念なのは、YAMLをロードするとHASHになること。Pear::ConfigもArrayを扱う。オブジェクトでロードできたら便利だろうけど。。。リフレクション書いてみようかな。

どこでもモブログ

XREAロリポモブログできないんでイライラしてた。

というわけで、どこでもモブログを作った。


動作原理は簡単。

ウチのメールアドレスを発行するんで、そこへメールを送る。すると、ウチのメールサーバーが指定したCGIにアクセスし、メールの中身をCGIへPOSTする。


MTならXML_RPCのURL、BloggerならAtomPPのURLをCGIに指定してやればいいです。




クローズドテスター募集します。参加してくれる人は、コメントヨロシク。

あ、面倒なユーザー登録は要りません。はてな認証APIです。はてなアカウント用意してください。



Plaggerの逆を目指している。

PlaggerはCron定期実行でメールが送られる。でもその逆を行く。メールを送るとCGIがPlaggerを起動させ、メールを返してくれる。定期実行が要らない。これ重要。



CGI起動させるのでモブログできる。

ただし、XML_RPCに限定しないので、たとえば、はてなダイアリーに投稿するLWP作っておく、このCGIをメール経由で呼び出してやる。モブログ非対応でも確実にモブログできる。