ホーム > アーカイブ > 2009-02
2009-02
symfonyでsqlを節約
- 2009/02/25
- Web開発関連
doSelectJoinXXX()
っていう関数を使うと 2 つのテーブルを join した結果を SQL 1 本で取得できる。
この関数は schema.yml で外部参照を設定すると自動で生成される。
symfonyでセッションを利用するときにやっといたほうがいいこと
- 2009/02/24
- Web開発関連
ひとつは、セッション名の変更。
all:
storage:
class: sfSessionStorage
param:
session_name: my_cookie_name
もう一つは有効期限の設定。
all:
user:
class: myUser
param:
timeout: 1800 # 秒単位のセッションの寿命
php のセキュリティをざっと理解するには↓↓
symfony1.1でフロントと管理ツールの公開ディレクトリを切り替える方法
symfony の web ディレクトリはフロントとバックヤードで共通になってしまう。気持ち悪いので、切り替える方法を考えてみた。
まず以下のように backend ディレクトリを作成する。中身は web ディレクトリをそのままコピーする。
apps/
cache/
config/
data/
doc/
lib/
log/
plugins/
test/
web/
backend/ ← バックヤード用の公開ディレクトリを作成
次に、以下のように config/ProjectConfiguration.class.php の setup メソッドで公開ディレクトリを変更する。
[php]
class ProjectConfiguration extends sfProjectConfiguration
{
public function setup()
{
$this->setWebDir($this->getRootDir().'/backend');
}
}
あとはドキュメントルートを backend に設定すれば、フロントとバックで別ディレクトリを利用できるはず。でも結局ドキュメントルートを切り替える必要がある。。
技術評論社
売り上げランキング: 62157

情報弱者向けの本
エッセンスがよくまとまっている
symfony1.1+oracle用のパッチファイル
- 2009/02/19
- Web開発関連
symfony1.1 + oracle で propel:build-all を実行すると、propel:insert-sql でエラーが発生する。原因は、生成された SQL 内(data/sql/lib.model.schema.sql)のコメントがオラクルのコメントになっていないことと、テーブル名とカラム名がダブルコーテーションで囲まれていることです。
毎回 sql を修正しているわけにもいかないのでパッチを作って対応しました。
これで propel:build-all-load frontend みたいなコマンドもするっと実行できます。
ソフトバンククリエイティブ
売り上げランキング: 166284

2冊目に買うべき本
この本は酷い
誤植が・・・
環境変数の NLS_LANG の使い方
- 2009/02/13
- データベース関連
環境変数の NLS_LANG って今までよくわかってなかった。
今日はまってやっと理解したのが、NLS_LANG はオラクルクライアント側の文字コードを指定するものだということ。オラクルはデータベースの文字コードと NLS_LANG を比較して異なる場合は、データベースにデータを格納する際にデータベースの文字コードに変換して格納するという機能がある。今回 NLS_LANG を間違ってデータベース側の文字コードを設定していたので、文字コード変換がされず不具合になっていた。
PHPfestチュートリアル:Oracle Database 10g Express EditionおよびZend Core for Oracle
Oracleデータベースは指定された文字セットで作成されます。 PHPでは、NLS_LANG環境変数を設定することで独自の文字セットを選択できます。 Oracleクライアント(PHP)のグローバリゼーション設定では、ロケールのための適切なデータ形式、Oracleのエラー・メッセージに使用される言語、言語のソートの順番などのデフォルト値を指定できます。 NLS_LANGは、Webサーバーを起動する環境で設定する必要があります。
dreamhost に redmine をインストール
- 2009/02/11
- Web開発関連
dreamhost に redmine をインストールした。参考にしたのは Redmine - DreamHost 。
ほんとにこの通りにやったら動いた。ただ英語がちゃんと読めてなくてけっこうはまったのでつまづいた箇所をメモしておく。
- 0. 基本は下の英語をよく読んで作業を進める
- 1.2. 「Specify your web directory:」というドキュメントルートの設定項目が dreamhost のドメイン設定画面にあるので、そのドキュメントルートを「yoursubdomain.yourdomain.com」から「yoursubdomain.yourdomain.com/public」に変更する。
- 12. .htaccess をこの 6 行で置き換えます。
- 99. config/environment.rb の line:8「RAILS_GEM_VERSION」を 2.2.2 に変更します。これをしないとバージョンが一致しないエラーが発生しました。
1. Make sure the domain supports “Ruby on Rails Passenger (mod_rails)?”
2. Specify your web directory: /home/username/yoursubdomain.yourdomain.com/public
* you must add the public!!!
2. From the Dreamhost control panel create a new MySQL database named yourdatabasename
3. ssh into your Dreamhost account
4. cd ~/yoursubdomain.yourdomain.com
5. svn export --force svn://rubyforge.org/var/svn/redmine/branches/0.7-stable ./
* check http://www.redmine.org/wiki/redmine/Download for the latest version
6. also watch out for permissions
* chmod -v -R 755 ./*
7. cd ~/yoursubdomain.yourdomain.com/config
8. cp database.yml.example database.yml
9. nano database.yml
1. edit the database.yml config file with the appropriate info. Should be similar to the following
production:
adapter: mysql
database: yourdatabasename
username: yourusername
password: yourpassword
host: mysql.yourdomain.com
10. cd ~/yoursubdomain.yourdomain.com/public
11. cp dispatch.rb.example dispatch.rb
12. nano .htaccess (replace with following text)
Options +FollowSymLinks +ExecCGI
RewriteEngine On
RewriteRule ^$ index.html [QSA]
RewriteRule ^([^.]+)$ $1.html [QSA]
RewriteCond %{REQUEST_FILENAME} !-f
ErrorDocument 500 "H2Application errorH2 Rails application failed to start properly"
* replace the H2 with the proper HTML tag when you place it in the .htaccess
13. cd ~/yoursubdomain.yourdomain.com
14. from application root type
* rake db:migrate RAILS_ENV="production"
15. also type the following to load config defaults
* rake redmine:load_default_data RAILS_ENV="production"
* choose "en" for english
16. browse to http://yoursubdomain.yourdomain.com
文字化けが発生しないか調べる時に入力する文字達
- 2009/02/09
- Web開発関連
symfony × MySQL × Shift_JIS: 0×5c関連
symfonyで作成したテスト用アプリケーションで「ソ」一文字を登録。
PHPで名前を扱う場合、文字コード指定に注意が必要 - Affirmative Way
たつさき - Google 検索
髙(はしごたか), 﨑(たつさき)
symfonyでモバイル開発する際に参考になるだろうリンク
- 2009/02/08
- Web開発関連
モバイル開発@symfony :: handsOut.jp がかなり良い感じ。以下コードを引用してみる。
apps/app_name/config/filters.yml
web_debug: ~
security: ~
# generally, you will want to insert your own filters here
mobile:
class: myMobileFilter
cache: ~
common: ~
flash: ~
execution:
apps/app_name/config/autoload.yml
PEAR:
name: PEAR
files:
Net_UserAgent_Mobile: /path/to/Net/UserAgent/Mobile.php
myMobileFilter.class.php (抜粋)
// preFilter
$request = $this->getContext()->getRequest();
$response = $this->getContext()->getResponse();
if ($this->isFirstCall()) {
$agent = @Net_UserAgent_Mobile::singleton();
switch (true) {
case $agent->isDoCoMo():
$carrier = 'docomo';
$response->setContentType('application/xhtml+xml; charset=Shift_JIS'); // 出力ヘッダを指定
$response->addStylesheet('/path/to/docomo.css'); // キャリア別のスタイルシートを指定
break;
case $agent->isEzweb():
$carrier = 'ezweb';
$response->addStylesheet('/path/to/ezweb.css'); // キャリア別のスタイルシートを指定
// 中略
}
$request->setAttribute('agent', $agent);
$request->setAttribute('carrier', $carrier);
// sfPictogramMobilePlugin
$pictogram = sfPictogramMobile::factory($carrier, 'utf8');
$request->setAttribute('pictogram', $pictogram);
}
$filterChain->execute();
// postFilter
$content = $response->getContent();
$content = $request->getAttribute('pictogram')->replace($content);
// 出力前に CSS をインライン展開
if ($request->getAttribute('carrier') == 'docomo') {
$content = HTML_CSS_Mobile::getInstance()->setBaseDir('/path/to/doc_root')->apply($content);
}
$response->setContent($content);
}
apps/app_name/templates/layout.php (抜粋)
<html xmlns="http://www.w3.org/1999 /xhtml" xml:lang="ja" lang="ja">
<head>
apps/app_name/templates/_dtd.php
<?php case 'docomo': ?><?php echo '<'; ?>?xml version="1.0" encoding="Shift_JIS" ?>
<!DOCTYPE html PUBLIC "//imode group (ja)//DTD XHTML iXHTML(Locale/Ver.=ja/1.1) 1.0//EN" "ixhtml_4ja_10.dtd">
<?php break; ?>
<?php case 'ezweb': ?>
<?php echo '<'; ?>?xml version="1.0" encoding="Shift_JIS" ?>
<!DOCTYPE html PUBLIC "//OPENWAVE//DTD XHTML 1.0//EN" "http://www.openwave.com/DTD/xhtmlbasic.dtd">
// 以下略
他にも helper を使って、mailto や input 要素の問題などを吸収する方法や、モバイルのセッションを、SessionStorage を使って解決する方法が書いてある。
以下のファイルを作成、編集
apps/app_name/lib/helper/MobileHelper.php
apps/app_name/lib/myMobileFrontController.class.php
apps/app_name/lib/myMobileSessionStorage.class.php
apps/app_name/config/factories.yml
memokami::楽天テクノロジーカンファレンス「PHPで作る携帯サイト」 :: handsOut.jp もすごくいい感じ。
おちゃべり
- 2009/02/07
- 日記
おちゃべりが見たい!!星野真里はなんか良い感じです。
星野真里 オフィシャルブログ 「ことばあそび」 powered by アメーバブログ
売り上げランキング: 1645

星野真里がよい
さよならみどりちゃん
ヒリヒリする、恋のお話
漫画を読んでいた人にはおすすめ
14番目の月
所感
- 2009/02/04
- 日記
自分の書きたいコードを書け - 脱職業プログラマのすすめ - ひがやすを blog
自分の書きたいコードを書くというのは、人からやらされてるんじゃなくて、自ら動くということなのでそれなりに成長すると思う。自分のやりたいことをどれだけ実現していけるかっていうのは大事だなぁと思っています。
ホーム > アーカイブ > 2009-02

![symfony×PHP [LLフレームワークBooks] (LLフレームワークBOOKS # 3)](http://ecx.images-amazon.com/images/I/41gbS%2BvOscL._SL160_.jpg)
![symfony徹底攻略 [PHP徹底攻略シリーズ] (PHP徹底攻略シリーズ)](http://ecx.images-amazon.com/images/I/51wL5doVKJL._SL160_.jpg)
![さよならみどりちゃん [DVD]](http://ecx.images-amazon.com/images/I/31S5QDJS1KL._SL160_.jpg)