近況:沖縄→茨城→徳島(帰宅)

二月の終わりに沖縄に卒業旅行へいってました.
さらに沖縄から本土に帰ってきてからは地元に帰らず茨城県の知人宅に直行し、そこで缶詰で3日ほどWebサービスの開発.
そしてやっと先週はじめに地元、徳島に帰宅。
cakePHP関係などで書きたいことも何個かたまっているので、ぼちぼち更新していこうと思います.


沖縄での写真を一枚、首里城の正面写真.

卒論終了

とりあえず卒論終わって、一息!
提出前日ぐらいまでC言語でNICのドライバいじってたが,なんとか動作するとこまでもってけた.

今は,来月リリースの新しいWebサービスの追い込み中。
しかも金曜日から沖縄にしばらくいく予定。もうしばらくは忙しそう。

来月の終わりぐらいに,1週間ぐらいぼーとする時間がほしい。

PEAR::Text_Wikiの記法拡張について

について書こうと思ってAPIやらデフォルトの記法について詳しくまとめてあるサイトが、さっきから急に見えない
いや見れるんだけど記事が削除されてるぽい。URLは以下。いちおうgoogleのキャッシュで見れるけど。。。
http://wiki.ciaweb.net/yawiki/index.php?area=Text_Wiki
\(^o^)/

うーん、このサイトを管理してるPaul M. JonesさんはText_Wikiの開発者みたいなんだけど
PEARのメンテナーのところを見ると今はinactiveになっている。
とりあえず、データが残ってないようであれば後日、メールで問い合わせてみようと思う。

CakePHPのヘルパーからPEAR::Text_Wikiを使ってお手軽変換

前提としてwiki記法で書かれたテキストをDB等に保存してるとする。
んでviewで出力するときにこんな感じでwiki記法をhtmlに変換できたらお手軽で便利そう。

<h1>Wikiデータ</h1>
<?php echo $wiki->transform( $wikiString ) ?>

こんなヘルパーを実装する方法を説明します。

1.PEAR::Text_WikiをCakephpにインストール

PEARライブラリをCakephpにインストールする方法については、方法も何種類かあるし、いろんなところに情報があると思うので省きます。
vendorsから呼び出してでText_Wikiを利用できる状態にしてください。

2.wikiヘルパーの作成

app/views/helpersにwiki.phpを作成

<?php                                                                                
    class WikiHelper extends Helper {
        function transform($text){

            //PEAR呼び出し部分、ここはCakePHPにどのようにPEARを導入してるかによって異なるので適宜書き換えてください
            vendor('pear_ini');
            include_once('Text/Wiki.php');

            $wiki =& new Text_Wiki();
            
            //日本語文字化け対策                                            
            $wiki->setFormatConf('Xhtml', 'translate', HTML_SPECIALCHARS);

            //変換部分
            $xhtml = $wiki->transform($text,'xhtml'); 
            return $xhtml;
        }
    }   
?> 

2.使用例

view部分で$wikiStringにwiki記法で書かれたテキストが入っているとすると

<h1>Wikiデータ</h1>
<?php echo $wiki->transform( $wikiString ) ?>

xhtmlに整形されたデータが出力されます。

PEAR::Text_Wiki

このモジュール拡張性も優れてるし、使いやすいしなのになんでこんなに広まってないんだろう。
どんぐらい便利かというと、これ使えばwiki同士の相互変換アプリケーションとか簡単に組めそうな感じ。
が、PukiWiki記法やHatena記法の拡張が、まだ作られてない。。。
とりあえず、しばらく使ってみて、自分が使いやすいようにちょこちょこ拡張なんかも作っていくかも。

コードリーディングについて思うこと

prototype.jsをgihyo.jpの連載を参考に読んでいて感じてるのは
コードリーディングって教材として解説があるとぜんぜん効率が違うなぁということ。
(もちろんベストはコード書いた本人から解説を聞けることだろうけど)


大学の研究でNICドライバのコードを読んでるけど、一番時間かかるのが
今読んでいる部分が「何をするための処理」なのか、その部分のコードの目的、意図を理解すること。
それがわからないと、コードの内容を理解できない。
逆にわかると、一気にすらすら読める。


研究で読んでるNICドライバはコメントによる注釈が少めなので
「何をするための処理」なのかを理解するためにはソースコードを眺めないとわからない。
ドキュメントも、英語、日本語ともにほぼない。


一方prototype.jsではコードを解説してくれてるサイトがわりと多いので
処理ごとにそこが「何をするための処理」なのかをソースコードを読まなくても解説を読めば理解できる
つまり、読む部分が行っている処理の目的、意図がわかったあとでソースコードを読むことができる。
これは、手探りで読むのに比べてはるかに楽だ。
コードの解説を書いてくれてる先人達に感謝感謝。


ということで僕も、手探りの状態でコードリーディングしなきゃいけない状況になったときは
後の人たちのためにドキュメントを残していこうと思う。