駒形電産

MicrosoftがiPodのパッケージを作ったとしたら。 スペック表ががうける。

windows_rg.png

Windows RG(Really Good Edition) 2004年頃のもの。今だったらYoutubeにあるようなもんで、動きを伴ったネタを公開するのに敷居が下がってるのは楽しい。

Software Design 2006/6 に乗ってたヤツ。書籍にURLあっても面倒でなかなか見ないのでここに置いておきます。

そろそろ、「何このUbuntuに夢中な無職」と思われそうなのでたまにはPHPのコードを書いてみました。(無職はスルー)

Webアプリで、思い付いた何かを作るのに何がだるいかというと、DB。オブジェクトを次使うときまでとっておきたい(永続化)だけなのに何故こんな面倒臭いか。

設定が要らなくて、ファイルとか吐かないO/Rマッパーはできないものかと思って試しに書いてみた。

<?php
require_once 'DB.php';

class DB_Object_Abstruct
{
    var $_con = null;
    var $_name = "";

    function get($column, $value)
    {
        $row = $this->_con->getRow(
            "SELECT * FROM {$this->_name} WHERE $column = ?" ,
            array($value),
            DB_FETCHMODE_ASSOC
        );
        foreach ($row as $name => $val) {
            $this->$name = $val;
        }
    }
}

class DB_Object
{
    var $dsn = "";

    function DB_Object($dsn = "")
    {
        $this->dsn = $dsn;
    }

    function factory($name)
    {
        eval("class {$name} extends DB_Object_Abstruct { var \$_name = '{$name}'; }");
        $obj =  new $name;
        $con = DB::connect($this->dsn);
        $obj->_con = $con;
        return $obj;
    }
}
?>

まだgetメソッドだけ。 これを、

<?php
require_once 'DB/Object.php';

$dbo = new DB_Object($dsn);
$user = $dbo->factory('user');
$user->get('id', 1);
print_r($user);
?>

こうやって使う。

PEAR :: PEPr :: Details :: HTTP_Client_Curl, HTTP_Request_Curl

>> Description Implementation of HTTP_Client and HTTP_Request that uses the curl extension to support HTTPS over HTTP proxy, which is currently not supported by HTTP_Client and HTTP_Request classes.

PEPrにDraftで~Curlが。 何でそんなにCurlを愛す?誰かおれにCurlの素晴らしさを説いて下さい。

[php-study 217] Re: 3月勉強会開催日変更と参加者初期化のおしらせ

「Ethnaを利用して何か作ってみよう」という事で 参加者はノートパソコン等を持参していただき、 (別に限定するわけではないのでXoopsモジュールでも良いですが) Ethnaを利用した何かを一人一つ作ってみようというものです。 (パソコンない人はペアプログラミングでもおもしろそうです。)

とりあえずEthnaを知らない人も多いと思うので 私がEthnaの基本的な操作説明を行います。 Ethnaを知らない方はその操作説明で基本的な使いかたを覚えてください。

その後、各自適当に自分の作りたいものを作ります。 自分一人でもくもくと作業するのもよいですが、 他人のソースや開発環境をのぞいてみるのもおもしろいかと思います。

タダでEthnaが覚えられる!ってことで25日の勉強会申し込みましたー! もう面倒臭いからコード書いちゃおうぜって感じが実践的でイイ。予習しとかないと・・・。 コード!コード!コード!(白目)

PEAR :: PEPr :: Details :: Services_IM

>> Description Provides a standard O-O interface to the many IM protocols currently available. Easily extensible with a class hierarchy to support the protocols.

PEPrにDraftでServies_IMが。そりゃ実現すれば便利だけども先、長そうだなー。

p0t: Beautifyしてくれねえ

http://www.waterproof.fr/products/phpCodeBeautifier/

とかってどうでしょうか?確かPEARの書式にも変換できた気がします。

Posted by shimooka at March 20, 2006 09:41 PM

shimookaさんよりBeautify情報。早速試してみました。どうやらPHPEditっていうエディタの副産物のようです。当然Windowsアプリ。

phpCodeBeautifier http://www.waterproof.fr/products/phpCodeBeautifier/

php_code_beautifier.png

おお、ほぼ完璧じゃないスか。これはいいものだぁあー

と、思ったらコマンドラインからだと何故かほとんどのオプションが利かない。そんでこんな感じになる。

C:\WINDOWS\Temp\phpCB-devel-0.8-2003-09-18>phpCB --comment-rendering-style PEAR
--equal-align-position 50 --padding-char-count 4 dirty.php
<?
require_once("Foo/Bar.php");
$foo = foo();
function connect (& $dsn, $persistent = false){
     if(is_array($dsn))
        {
         $dsninfo = & $dsn;
         }
    else
        {
         $dsninfo = DB :: parseDSN($dsn);
         }

     if(!$dsninfo || !$dsninfo['phptype'])
    {
         return $this -> raiseError();
         }
     return true;
    }
?>

バッチ的に古いコードを一括で変換したいところ!

PHPコーディングスタイル矯正中のおれですが、これが標準だと思うと「コレはコレで結構・・・」とかなってきて書き途中のコードも全部PEARスタイルにしたくなってきた。手で全部直すのはかったりぃので昔気になってたPEAR PHP_Beautifierを試してみることにしました。PHP_Beautifierはいまだに0.1.7(beta)だそうなのでまたpreferred_stateをbetaに、

colinux:~% sudo pear config-set preferred_state beta

そしてなぜかPHP5じゃなきゃ駄目らしいので切り替え

colinux:~% sudo update-alternatives --config php

やっと入った。

colinux:~% sudo pear install PHP_Beautifier

これでphp_beautifierコマンドが使えるようになるので試しにこんな感じのコードをBeautifyしてもらう。

colinux:~% cat ~/www/php-examples/dirty.php
<?
require_once("Foo/Bar.php");
$foo=foo();
function connect ( &$dsn,$persistent=false ){
  if( is_array($dsn) )
  {
    $dsninfo = &$dsn;
  }
  else
  {
    $dsninfo = DB::parseDSN($dsn);
  }

  if( !$dsninfo || !$dsninfo['phptype'] )
  {
    return $this->raiseError();
  }
  return true;
}
?>

PEARスタイルに変えてくれそうな設定で変換。

colinux:~% php_beautifier -l "Pear()" ~/www/php-examples/dirty.php
<?
require_once ("Foo/Bar.php");

$foo = foo();

function  connect ( &$dsn, $persistent = false)
{

  if ( is_array($dsn)) {

    $dsninfo =  &$dsn;
    } else {

    $dsninfo =  DB::parseDSN($dsn);
    }

  if ( !$dsninfo ||  !$dsninfo['phptype']) {

    return  $this->raiseError();
    }

  return  true;
}

?>
Mar 20 19:26:10 php_beautifier [info] Filters used: Pear
Mar 20 19:26:10 php_beautifier [info] /home/komagata/www/php-examples/dirty.php to STDOUT done
Mar 20 19:26:10 php_beautifier [info] 0 seconds needed

うわっ、なにこれ、びみょう・・・。

コードを見やすくするためにPHPのコーディングスタイルもPEAR標準に従って読みやすくしていきたい。

よく読んでみるとPEAR標準コーディング規約は結構細かく書いてある。viやemacsでの設定も書いてあるので便利だ。大まかにまとめるとこんな感じ。
  • インデントはスペース4個(タブは駄目)
  • 半角75-85 文字ごとに改行することを推奨。(必須ではない)
  • if, for, while, switch等の制御構造と括弧の間はスペース1個。
  • 制御構造の中括弧は条件と同じ行。(間はスペース1個)
  • 関数コールでの関数名と括弧の間にはスペース無し。
  • 代入のイコールの左右はスペースを入れる。(沢山入れて見栄えを揃えても良い)
  • 関数定義の中括弧は次の行の関数名と同じ位置。(one true braceと言うらしい)
  • デフォルト値付き引数は引数リストの終わりに置くこと。(なるべく右側ってこと)
  • Perl/Shell形式のコメントは使ってはいけない。
  • include~およびrequire~は命令であり関数ではないので括弧は付けない。
  • PHPショートタグは使ってはいけない。(<?のこと)
  • 文字エンコードは ISO-8859-1 を使用しなければならない。
  • 改行はLF。
  • PHP終了タグ(?>)の後は改行を一つ入れる。
  • 変数展開や特殊文字を含まない文字列はシングルクォートを使う。(via koyhogeさん)

大体こんな感じのコードになるようです。

&lt;?php
require_once 'Foo/Bar.php';

$foo = foo();

function connect(&$dsn, $persistent = false)
{
    if (is_array($dsn)) {
        $dsninfo = &$dsn;
    } else {
        $dsninfo = DB::parseDSN($dsn);
    }

    if (!$dsninfo || !$dsninfo['phptype']) {
        return $this-&gt;raiseError();
    }

    return true;
}
?&gt;

意外と「うわっ、勘弁してくれよ!」っていう感想の人が多いんじゃないでしょうか。おれもそうですが、頑張って自分の体を合わせて行きたい!(ドM)

PEAR :: Manual :: コードの提供

コードの提供にあたっての要求事項

コード自体およびパッケージの著者に対して、 いくつかの要求事項があります。

  1. 標準コーディング規約への合致

新しいパッケージの作成か、既存のパッケージへの付加かに係わらず、 PEAR にコードを提供する場合は、 標準コーディング規約 に合致している必要があります。 標準コーディング規約というものが良いものかどうかについては 多くの議論がありましたが、絶対に必要なものであるとの決定に達しました。 さらに議論する意義はありません。

チャリのスポーク(ホイールの骨のとこ)が折れたっ・・・。

SPORK.jpg

近所の自転車屋に持っていくと、「部品が無いから買った店に行け」と言われたので買った店である新宿JOKER本館に相談しに行った。

パーツのメーカーのことなどを聞かれたが自転車に無知なので何を言ってるのか全然わからない。正直に、「それはなんですか?」とか「普通はxxxするものですか?」など聞いてみたり、「それはこういう風にはできないんですか?」と言ってみたりしたけど、「そんな初歩的なことも知らないのか」といったような嘲笑を浴びせられて、とても悲しい気持ちになりました。

LAUGH.jpg

惨めな気分で帰ったんですが、こんな時jkondoなら・・・などと考えてたら面白くなってきたので初心者にもちゃんと説明してくれる自転車屋を粘り強く探そうと思います。(おすすめ店があったら教えてください)

jkondoの日記 – LASIKの検査を受けてきました その2

この先生なら僕のなんでなんで攻撃(?)にも粘り強く耐えて、納得のいく説明をしてくれるんじゃないかと期待を寄せて検査を受けてきました。

AppleInsider | Apple plans 17-inch MacBook Pro by June

macbookpro.jpg

These sources say the 17-inch MacBook Pro has been penciled-in for a release at or around Apple’s annual World Wide Developers Conference, which has historically taken place around June.

6月のWWDCで17インチMacBookが発表の噂?12インチは更に先かよ・・・。