2008-01-01から1年間の記事一覧

PHP_ObjectでPHPマニュアルをパースするサンプル

php

PHP_ObjectでPHPマニュアルをパースしてCSVファイルを作成するサンプル http://jp.php.net/download-docs.php 一つのhtmlファイルとして配布されているPHPマニュアルから関数の説明部分をパースしCSVファイルを作成する。 ファイルはあらかじめダウンロード…

Singletonパターン

Head First デザインパターンのメモ。 Singletonパターン 一つのクラスがただ一つのインスタンスを持つことを保証し、 インスタンスにアクセスするグローバルポイントを提供する。 注意点 マルチスレッドアプリケーションに対してはパフォーマンスとリソース…

CakePHPのレンダリング処理(render)

CakePHP1.2、viewのレンダリング処理部分についてのメモ。 Controller::render() viewを解釈して、結果をoutputプロパティに文字列として格納するメソッド。 戻り値としてレンダリング結果を返す。実際の出力まではやらない。 複数回呼び出すと、出力内容は…

Abstract Factoryパターン

Head First デザインパターンのメモ。 Abstract Factoryパターン 具象クラスを指定することなく、一連の関連オブジェクトや 依存オブジェクトを作成するためのインターフェースを提供する。 Abstract FactoryとFactory Method 多くの場合Abstract Factoryの…

Factory Methodパターン

Head First デザインパターンのメモ。 Factory Methodパターン オブジェクト作成のためのインターフェースを定義するが、 どのクラスをインスタンス化するかについてはサブクラスに決定させる。 Factory Methodにより、クラスはサブクラスにインスタンス化を…

Decoratorパターン

Head First デザインパターンのメモ。 Decoratorパターン オブジェクトに付加的な責務を動的に付与する。 デコレータはサブクラスの代替となる柔軟な機能拡張手段を提供する。 特徴 装飾するオブジェクトと同じスーパークラスを持つ 複数のDecoratorクラスを…

Observerパターン

Head First デザインパターンのメモ。 Observerパターン オブジェクト間の1対多の依存関係を定義し、あるオブジェクトの状態が変化すると、 それに依存しているすべてのオブジェクトが自動的に通知され更新されるようにする。 新聞の定期購読 発行者(Subject…

CakePHPでSmartyを使う

CakeForgeというオープンソース開発サイトで公開されているSmarty ViewクラスでSmartyを使う方法メモ。 Smarty View class ダウンロードしたSmartyViewクラスのファイルをsmarty.phpにリネームして以下に設置。 app/views/smarty.php Smarty本体をダウンロー…

Strategyパターン

Head First デザインパターンのメモ。 Strategyパターン 一連のアルゴリズムを定義してそれぞれをカプセル化し、それらを交換可能にする。 Strategyパターンによって、アルゴリズムを使用するクライアントとは独立して、アルゴリズムを変更できる。 設計時の…

UbuntuにPostgreSQLをインストール&設定

MySQLみたいに簡単にできると思ったらちょっとはまった。 開発環境用の設定。 インストール $ sudo apt-get install postgres インストールするとUbuntuにpostgresというユーザーがつくられるのでパスワードを設定。 postgresユーザーになるとDBに接続できる…

Head First デザインパターンを読む

これはわかりやすい。 対象読者はJavaの知識がある人のようですが 他の言語のオブジェクト指向をかじったことがある人なら十分理解できると思う。 デザインパターン入門 誰かが、すでにあなたの問題を解決してしまっています。 パターンを頭の中にロードし、…

openpearでPHP_Objectというライブラリを公開しました

php

PHP_Object - openpear 実用性はほとんどないライブラリですが。 以下説明。 openpearに書いてあるものほとんどそのままです。 PHP_Object PHPを純粋なオブジェクト指向プログラミング言語っぽく書けるようにする。 主にメソッドチェーンするためのライブラ…

CakePHPのエラー処理(cakeError)

CakePHP1.2のエラーハンドリング方法。 Error Handling :: Common Tasks With CakePHP :: The Manual :: 1.2 Collection :: The Cookbook Object::cakeError() 基本的に、ObjectクラスのcakeErrorというメソッドを使うらしい。 appディレクトリ以下に、error…

CakePHPのリクエストパラメータチェック

リクエストパラメータに、不要な値が含まれていた場合は取り除く。 値がなかった場合は空文字の値を追加する。 array('name', 'mail', 'password', 'password_confirm'), ); $this->_paramNormalize($this->data, $keys); } function _paramNorm…

エンジニアのための時間管理術を読んだ

エンジニアといっても、「本書はプログラマを対象としてません」だそうです。 システム管理者(SA)向け。 SAのタイムマネジメントの原則 タイムマネジメント情報を一つにまとめる。整理された状態を保つ。 能力は重要な作業のために温存しておく。オーガナ…

PHPの黒魔術

php

タイプヒンティング(Type Hinting)の拡張 PHPTypeSafeで目から鱗が落ちた Type Hints for scalar values これはすごい。 アイデアもそうですが方法が。 通常はエラーとなるところをset_error_handlerで、 コントロールするということのようです。 あまり変な…

Joel on Softwareを読んだ

再読。読み物としても面白い。 ジョエルテスト ソフトウェアチームのクオリティを評価するテスト。 1. ソース管理してる? 2. ワンストップでビルドできる? 3. デイリービルドしてる? 4. バグデータベースはある? 5. 新しいコードを書く前にバグを直して…

Vimと、はてなダイアリーのシンタックス・ハイライトを同じにする

vim

はてなダイアリーのスーパーpre記法のハイライトを、vimと同じに変更する方法。 vimにデフォルトでインストールされているプラグイン、tohtml.vimを使う。 tohtml.vimを使うとコマンド一発で、ハイライト付htmlが作成できる。 2html.vim : ファイルをシンタ…

プログラミングPHP 第2版を読んだ

気になったところをメモ。 スタティック変数 関数が終了しても破棄されない。関数内でしか使用できない。

Windows XPのhosts

すぐ場所をわすれるのでメモ。 C:\WINDOWS\system32\drivers\etc\hosts hosts = PC内でホスト名をIPアドレスに変換する際に参照されるファイル

SQL、Selectの評価順

sql

sql、select文の評価順序じょっぱりのぐだめぎ: select 文の評価順序 from where group having select union order limit 評価順序を意識するかどうかで、sqlの書き方やチューニング方法が大きくかわりそうです。

PHP、オブジェクトに配列っぽく[]でアクセスできるように

php

PHP5で追加されたSPLのArrayAccessクラスを使うと、 配列っぽい書き方でクラスにアクセスすることができるみたいです。 配列演算子オーバーロードもしくは PHP 5 の配列エミュレート機能全般 ArrayAccess Interface Reference data = $array; } public funct…

MySQLでInsertもしくはUpdate(ON DUPLICATE KEY UPDATE)

mysqlにはON DUPLICATE KEY UPDATEというのがあるらしい(mysql 4.1.0以降)。 ユニーク制約のあるカラムに、重複の値をinsertしようとすると、かわりに対象レコードがupdateされる。MySQL 4.1 リファレンスマニュアル :: 6.4.3 INSERT 構文 mysql> INSERT INT…

Ubuntuのディレクトリ構成

ubuntuというかlinuxのルートディレクトリ構成メモ /bin 基本的なコマンドが入っている /dev デバイスファイルが配置されている /etc システムや各種プログラムの設定ファイルを格納 /home ユーザのホームディレクトリ /lib 共有ライブラリなど /sbin rootが…

RubyでMidi

midiファイル(smf)をプログラムで作成する方法を探したら、 Rubyのモジュールを公開している方がいました。http://www.funaba.org/music.html とりあえずインストールしてみる configやsetupでインストール先などを変更できるようです。 $ ruby install.rb…

UbuntuでSambaの設定

開発用にvar/www以下を全て共有する場合 ユーザーの作成 $ sudo smbpasswd -a 【ユーザ名】 設定 $ sudo vi /etc/samba/smb.conf workgroup = WORKGROUP #windowsのワークグループ名 hosts allow = 192.168.1. #接続を許可するIPを指定 [www] comment = www …

CakePHP1.2のapp/configディレクトリ

acl.ini.php アクセス制御設定用 acl = access control list(アクセス制御リスト) aco = access control object(アクセス制御対象) aro = access request object(アクセス要求対象) bootstrap.php コアとなるbootstrap.phpが読み込まれた後、app/webroot…

UbuntuにSubversionをインストール

インストール $ sudo apt-get install subversion subversion-tools libapache2-svn 設定 $ sudo vi /etc/apache2/mods-available/dav_svn.conf 以下のようにコメントを外す Basic認証をかけたりもできるようです。 <Location /svn> DAV svn SVNParentPath /var/lib/svn #一</location>…

CakePHP1.2のScaffold(bake)

cakephp1.2のscaffold*1の作り方メモ。 $ cake/console/cake bake 上記コマンドで、対話的にscaffoldの作成ができる。 ./cake bake model のように引数を渡してもOK Database Configuration = app/config/database.phpを作成 Project = 新しいプロジェクト(…

UbunutでApacheの設定

apacheの設定ディレクトリ $ cd /etc/apache2 サイト別の設定を作る $ sudo cp sites-available/default sites-available/my_site $ sudo vi sites-available/my_site $ sudo vi ports.conf #ポート設定を追加 サイトを有効にする $ sudo a2ensite my_site $…