2010年7月アーカイブ

 shema.ymlに色々書いてsymfony doctrine:build --modelを実行すると色々なクラスが自動的に生成される。lib/model/doctrine以下には、各モデル毎に[ModelName].class.phpと[ModelName]Table.class.phpという2つのクラスが生成される。

その2つの使い分けは何となくやってたんだけど、最近明快な答が載ったページ(英語)を見つけたのですっきりした。

まぁソースコードを見ればすぐ分かるんだけど、継承関係としては以下の通り。

  • Doctrine_Record > sfDoctrineRecord > [ModelName]
  • Doctrine_Table > [ModelName]Table

てことで、[ModelName]Tableの方は、テーブルからデータを取ってきたりする処理を記載して、取ってきたレコードに対する処理は[ModelName]クラスの方に記載する。

symfonyでコマンドを入力する。例えばsymfony project:deploy --go xxxxとか。で、何かエラーが出るとする。画面に出力されるメッセージから色々判断しなきゃいけないんだけど、出力が長い場合、画面の幅に収まるように、symfonyの内部で勝手に.....とかに省略されてしまい非常に不便。

設定で簡単に変えられないか調べたんだけど、分からなかったので結局ソースを直接修正した。

/lib/command/sfFormatter.class.php の38行目辺り(symfony 1.4.5の場合)。以下の値を大きな値に変更すればOK。

    $maxLineSize = 65;

参考にしたページ(英語)。

今までずっと安定して使えてたEclipseがつい数日前に急に不安定になった。

特に設定とかも買えてないし、新しいプラグインとかも入れてないんだけど…多分、今まで使ってなかった機能を使い始めたのかな。別にそんな覚えもないんだけど。

いずれにせよ、そのままだと作業に非常に差し支えるので調べてみた。結論から言うと、Eclipseが使うメモリ使用量を増やしてあげたら安定するようになった。

■まずはログを確認

Eclipseが落ちたら、まずはワークスペースの中の.metadata/.logというファイルを見る。自分の場合、そこで以下のようなエラーが出ていた。

java.lang.OutOfMemoryError: PermGen space

 PermGenが何かという説明はとりあえず置いておく。

DoctrineのfindBy

| コメント(0) | トラックバック(0)

symfony 1.4だとDoctrineが標準になったので必然的に使う事になってる。

もしかしたら世間的には常識なのかもしれないけど、昨日発見して感動した事。

Doctrine::getTable("TableA")->findByField1AndField2("val1", "val2");

ってやると以下のSQLが実行される。

SELECT * FROM TableA WHERE Field1='val1' AND Field2 ='val2'

複数のカラムにまたがる検索も一発で出来るのは非常に便利。当然 findByField1AndField2 なんてメソッドは自分で用意しなくても使える。

最近のORマッパーってこんなもん?

自分用メモ。

symfonyでは、独自の設定項目をapp.ymlに追加していく事が出来る。それの読み込み方は以下の通り。

sfConfig::get('app_foo')

まぁこれはすぐ分かるんだけど、app.ymlの中身が以下のように階層構造になってたらどうすれば良いんだろうと思ってググってみたら、このページが見付かった。実際にまだ試してないけど・・・

all:
  foo:
    bar: "val"

symfonyはご存じの通りwebアプリケーションを作るためのPHPのフレームワークなんだけど、それ以外にも便利なな機能がある。

システムを作るのって、単に表に出てくる機能を作るだけじゃなくて、バックアップだったりデータのメンテナンスだったりってのも含まれるんだけど、バックグラウンドで動くタスク・ジョブを簡単に作れる機能がsymfonyにはある。1.2のリファレンスにcookbookに説明があるので、1.2から出来た機能かも。

 ま、このページの説明で大体間に合ってしまう気もするけど、少し説明。

自分用メモ。

MSDNのページ:Using Performance Tools to Obtain a Baseline (IIS 6.0)

アプリケーションプールについて調べてた時に見つけたページ

 

PHP on IIS

| コメント(0) | トラックバック(0)

■IIS+PHP(WIMP、WISP)

PHPをIIS上で動かすというのは以前に比べて割と一般的になってきたっぽい。今やっている案件の一つもWISP(Windows、IIS、SQL Server、PHP)構成。

ちょっと調べ物をしていたら、MSのIISのページから「PHP on IIS」なるページへのリンクがある事に気づいた。そこまでポピュラーになってるとは知らなかった。

■ISAPI → FastCGI

知らないついでにもう一つ。PHPはISAPIで動かすものって思ってたけど、今ではFastCGIがサポートされているそうだ。隔世の感がある。

こちらのページではIIS 7.5とPHP 5.3のインストール、設定について書いてある。こちらのページはIIS 7.5とPHP 5.2。それ以外にも色々ページが合った。

自分用メモ。

今やってる仕事で、他のDB(SQL Server)からMySQLにデータを移行する必要があったので、CSVを使う事にした。

MySQLでCSVやTSVをインポートするのは非常に簡単。このページを参考にした。TSVの場合は terminated by '\t' とすればOK。

Apacheの設定をいじっていたら、起動時に以下のエラーが出るようになった。

httpd: apr_sockaddr_info_get() failed for www.example.com
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName

ググったらすぐ解決法が見付かった。自分はこのページの4番に該当。httpd.confのServerNameを指定したら直った。

 仕事で久しぶりにSQL Serverを使う事になった。動作検証、技術コンサルティングの仕事。バージョンはSQL Server 2005。

■インストール

とりあえずテスト環境を構築せねばと言う事で、SQL Server 2005 Express Editionを自分の開発用PC(Windows 7)に入れる事にした。

Microsoftのサイトよりインストーラをダウンロードして実行しようとしたら、Windows 7は対応OSに入っていない事に気づいた…ま、結論から言うとSQL Server 2005のService Pack 3を入れればOKらしい。

手順としてはとりあえず無印のSQL Server 2005をインストール(この時点ではSQL Server 2005は起動してはいけない)。その後にSP3を入れる。

ちなみに、自分の環境の場合、(64ビット環境のせいか)SQL Server 2005 SP 3インストールの時に一部コンポーネントのインストールが出来ない状態だったが、Windows UpdateでSQL Server 2005 SP 3をインストールしたら上手く行った。その後に起動も出来たので、とりあえず良しとする。

 

LimeSurveyを触っていたら以下のようなPHPのNoticeが出た。

Notice: Use of undefined constant auto - assumed 'auto' in C:\xampp\htdocs\limesurvey\common.php on line 4505

autoって定数が定義されていないのか。調べてみたら、該当行ではmb_convert_encoding関数が使われてた。でも、autoって指定すると自動的に文字コードを判別するはずだし、定義されていないはずはないよなぁと思って色々調べたけど、結局以下のように引用符でくくったらエラーが出なくなった。あほらし・・・

auto → "auto"

ちなみに、ほんとに"auto"っていう引数が使えないケースもあるらしく、php.iniの設定を変えたなんていう人もいた()。

このブログの作者

名前:kazu
仕事:IT関係の何でも屋
メール:kazu 後幕 kazu どと tv
詳しくはこの辺

このアーカイブについて

このページには、2010年7月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2010年6月です。

次のアーカイブは2010年8月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

ウェブページ