ApplyingCustomJoinsInDoSelect - symfony - Trac
Applying custom joins in doSelect* method
http://propel.phpdb.org/docs/user_guide/chapters/FindingObjects.html(Criterionの使い方がある)
月別アーカイブ: 2007年2月
PHP Text DB API
Using Constants in YAML Configuration Files
symfony PHP5 framework Chapter 5 - Configuring Symfony
Using Constants in YAML Configuration Files
Some configuration settings rely on the value of other settings. To avoid setting the same value twice, symfony supports constants in YAML files. On encountering a setting name (one that can be accessed by sfConfig::get()
) in capital letters enclosed in %
signs, the configuration handlers replace them with their current value. See Listing 5-20 for an example.
Listing 5-20 - Using Constants in YAML Files, Example from autoload.yml
autoload:
symfony:
name: symfony
path: %SF_SYMFONY_LIB_DIR%
recursive: on
exclude: [vendor]
The path parameter will take the value returned by sfConfig::get('sf_symfony_lib_dir'). If you want one configuration file to rely on another, you need to make sure that the file you rely on is already parsed (look in the symfony source to find out the order in which the configuration files are parsed). app.yml
is one of the last files parsed, so you may rely on others in it.
Monospace/Fixed Width Programmer's Fonts
Installing Apache on Windows XP With Skype
Installing Apache on Windows XP With Skype | Finding The Sweet Spot - Beyond SEO and Web Design
Installing Apache on Windows XP With Skype
SSHで公開鍵認証を使う
1. ssh-keygen コマンドで鍵ペアを作成する
$ ssh-keygen -t rsa
秘密鍵の保存先を聞いてくるので、デフォルトのままEnter。
パスフレーズを2回入力。
すると、以下の鍵ペアのファイルが ~/.ssh/ に作成される。
- id_rsa
- id_rsa.pub
2. SSHサーバに公開鍵を登録する
ユーザのホームディレクトリに1.で作成した公開鍵を転送する。(FTPで転送してもよい。)
$ scp ~/.ssh/id_rsa.pub user@host:
サーバ側で、catコマンドとリダイレクションを使って転送した公開鍵を登録する。(登録するファイルは ~/.ssh/authorized_keys)
$ cat id_rsa.pub >> ~/.ssh/authorized_keys
「~/.ssh」ディレクトリと「~/.ssh/authorized_keys」はオーナーだけに読み書き可能なようにパーミッションを設定する。
$ chmod 700 ~/.ssh $ chmod 600 ~/.ssh/authorized_keys
- クライアント側のユーザのホームディレクトリのパーミッションにも注意する。所有者以外の書込み権を設定してあるとだめ。
たとえば、/home/hogeのパーミッションが777の場合、公開鍵認証でsshログインしようとすると、
Permission denied (publickey,gssapi-with-mic).
というエラーになる。この場合、サーバ側のログ(/var/log/secure)では
Authentication refused: bad ownership or modes for directory /home/hoge
となっていて、/hoem/hogeのパーミッションに問題があるということ。
所有者以外の書込み権を設定してあるとだめ。700、711、755にすればOK。
3. 公開鍵認証方式でログインする
$ ssh -l user host
パスフレーズを聞いてくるので、ssh-keygenコマンドで指定したパスフレーズを入力する。
(接続先サーバのパスワードではないことに注意)
4. クライアント側の設定
id_rsa ファイルをクライアント側にコピーする。
例:
ユーザのホームディレクトリ\.ssh
- 秘密鍵のパーミッションに注意。秘密鍵のパーミッションがopenすぎるとだめ。
以下はmacosxでのエラーの例。@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Permissions 0640 for '/Users/xxx/.ssh/id_rsa' are too open. It is recommended that your private key files are NOT accessible by others. This private key will be ignored. bad permissions: ignore key: /Users/xxx/.ssh/id_rsa Permission denied (publickey,gssapi-with-mic).
id_rsaを600にすればOK。
- cwRsyncで公開鍵認証を使用する場合は、環境変数HOMEの下の「.ssh」(known_hostsファイルが作成されるディレクトリ)に秘密鍵ファイル(id_rsa)を置く。
例:
HOME=/home/pistolfly
でcygwinがD:\cygwinの場合、
D:\cygwin\home\.ssh
に秘密鍵ファイルを置く。
(rsyncの-eまたは--rshオプションのsshコマンドで-iオプションで秘密鍵のパスを指定してもよい。)rsyncしてパスフレーズの入力を促されたところ
C:\sfprojects\reserve>symfony sync production >> exec rsync --progress --dry-run -azC...s.net:/usr/local/share/reserve/ Enter passphrase for key '/cygdrive/c/Documents and Settings/pistolfly/.ssh/id_r sa':
- TeraTermでは、ログイン時に「RSA/DSA鍵を使う」を選択して、秘密鍵に上記ディレクトリの秘密鍵ファイルを指定して、秘密鍵のパスフレーズを入力する。
5. パスワード認証を許可しないようする
/etc/ssh/sshd_config (サーバ側) を編集する。
PasswordAuthentication yes
を
PasswordAuthentication no
にする。
rootのログインも禁止しておく。
PermitRootLogin no
root権限でsshdをreloadする。(rootでログインしたままで)
$ /etc/init.d/sshd reload
参考:
FedoraCore5ビギナーズバイブル11-2-2
最終回 セキュアなSSHサーバーを構築する:ITpro
リモート接続に SSH を使う
@IT:鍵交換方式のsshでアクセスするには
request parameterからの更新
基本パターン
if ($this->hasRequestParameter('xxx')) { $this->model->setXxx($this->getRequestParameter('xxx')); }
または
if ($this->getRequestParameter('xxx') !== null) { $this->model->setXxx($this->getRequestParameter('xxx')); }
※チェックボックスの場合は、チェックボックスを含むフォームを処理するアクションで、以下のようにデフォルトをセットする必要がある。
if (!$this->hasRequestParameter('xxx')) { $this->getRequest()->setParameter('xxx', false); }
または
if ($this->getRequestParameter('xxx') == null) { $this->getRequest()->setParameter('xxx', false); }
日付
(input_date_tag, select_day_tag+select_month_tag+select_year_tag)
if ($this->hasRequestParameter('date')) // または if ($this->getRequestParameter('date') !== null) { if ($this->getRequestParameter('date')) { try { $dateFormat = new sfDateFormat($this->getUser()->getCulture()); if (!is_array($this->getRequestParameter('date'))) { $value = $dateFormat->format($this->getRequestParameter('date'), 'i', $dateFormat->getInputPattern('d')); } else { $value_array = $this->getRequestParameter('date'); if (is_numeric($value_array['year']) && is_numeric($value_array['month']) && is_numeric($value_array['day'])) { $value = $value_array['year'].'-'.$value_array['month'].'-'.$value_array['day'].(isset($value_array['hour']) ? ' '.$value_array['hour'].':'.$value_array['minute'].(isset($value_array['second']) ? ':'.$value_array['second'] : '') : ''); } else { $value = null; } } $this->model->setDate($value); } catch (sfException $e) { // not a date } } else { $this->model->setDate(null); } }
日付時刻
日付とほぼ同じだが、値をテキストで受け取った場合(rich=true)のフォーマット引数が異なる。
$value = $dateFormat->format($this->getRequestParameter('date'), 'i', $dateFormat->getInputPattern('d'));
日付時刻
$value = $dateFormat->format($this->getRequestParameter('date'), 'I', $dateFormat->getInputPattern('g'));