勉強会

とりあえずしゃべってきた。
完全に空気読めてない感満載だったのは、しかたあるまい。。。
チャレンジしたということに意義があると思いたい。
基本的に話すの苦手だしね。


あー、でも感想書くまでが勉強会だよんっていうのを
広めておくの忘れてたな。
発表側に回るとそういうレスがあることのありがたみっていうのを痛感。
そういうのも集約できるとこがあるといいですねん。


壁紙の話があったのでポインタを貼っておく。
99番目辺りかな?もともとは199の方を使ってたり。。。
http://vipvipblogblog.blog119.fc2.com/blog-entry-220.html


あとこれが一番役立つと思うから貼っておく。
CakePHP の Shell。app/vendors/shell あたりにいれればいいはず。
DockTest の環境構築と PHPDoc の作成ができるようになってます。

<?php

class DocTestShell extends Shell {
    var $uses = null;

    function main()
    {
        while ($ret = up($this->in("Select Mode(pear|phpdoc)", 'pear/phpdoc/q', 'Q'))) {
            switch ($ret) {
            case 'Q':
                break 2;
            case 'PEAR':
                $this->pear();
                break;
            case 'PHPDOC':
                $this->phpdoc();
                break;
            }
        }

        $this->out('End!', true);
    }

    function pear()
    {
        $res = (up($this->in("install pear?", 'Y/n', 'Y')) == 'Y');
        $this->shell('pear channel-update pear.php.net', $res);
        $this->shell('pear upgrade PEAR', $res);
        $this->out('');

        $rest = (up($this->in("install PHPUnit3?", 'Y/n', 'Y')) === 'Y');
        $this->shell('pear channel-discover pear.phpunit.de', $res);
        $this->shell('pear install phpunit/PHPUnit', $res);
        $this->out('');

        $res = (up($this->in("install DocTest?", 'Y/n', 'Y')) === 'Y');
        $this->shell('pear install http://kunit.jp/maple4/Maple4_DocTest-0.2.0.tgz', $res);
        $this->out('');

        $res = (up($this->in("install Options? (Stagehand_Testrunner & Net_Growl)", 'Y/n', 'Y')) === 'Y');
        $this->shell('pear channel-discover pear.piece-framework.com', $res);
        $this->shell('pear install -f -a piece/stagehand_testrunner', $res);
        $this->out('');

        $work = $this->in('input working directory.', null, getcwd());
        $this->createFile($work.DS.'doctest.php', $this->doctest_template());
        $this->out('');

        $BASEDIR = '__BASEDIR__';
        $this->createFile($work.DS.'classes'.DS.$BASEDIR, '');
        $this->createFile($work.DS.'tests_c'.DS.$BASEDIR, '');
    }

    function phpdoc()
    {
        $work = '~/doctest/';
        $phpdir = $work.'classes';
        $todir = $work.'phpdoc';
        $this->out('create phpdoc');

        passthru("phpdoc -d {$phpdir} -o HTML:frames:phphtmllib -t {$todir}");
    }

    function shell($cmd, $isRun = true)
    {
        $this->out($cmd, true);
        if ($isRun) {
            passthru(escapeshellcmd($cmd));
        }
    }

    function doctest_template()
    {
        return <<<TEMPLATE
<?php
require_once 'Maple4/DocTest.php';

passthru('clear');

if (isset(\$argv[1]) && realpath(\$argv[1])) {
    \$pathname = realpath(\$argv[1]);
} else {
    echo "Usage: php doctest.php [dirname or filename]\\n";
    exit;
}

\$options = array(
    'compileDir' => dirname(__FILE__) . '/tests_c', // UnitTestファイルを格納するフォルダ
    'color' => false,                               // コンソールに色(緑/赤)をつけるかどうか
    'report' => null,                               // カバレッジレポートを出力するかどうか。出力するディレクトリを指定する
    'forceCompile' => true,                         // UnitTestファイルを毎回作成するかどうか
    'notify' => null,                               // Growl用設定
/*
    'notify' => array(
        'type' => 'growl',
        'title' => 'Test Results',
        'password' => '',
        'greePriority' => 0,
        'greeStickey'  => false,
        'redPriority'  => 2,
        'redStickey'   => false,
    ),
*/
);

Maple4_DocTest::create()->run(\$pathname, \$options);
TEMPLATE;
    }

    function _welcome()
    {
    }

    function help()
    {
    }
}

?>