Installing Apache on Windows XP With Skype | Finding The Sweet Spot - Beyond SEO and Web Design
Installing Apache on Windows XP With Skype
年別アーカイブ: 2007年
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'));
"pros and cons"、"nature and nurture"とはどういう意味か?
Retrieve information about the current route
Retrieve information about the current route
If you need to retrieve information about the current route, for instance to prepare a future 'back to page xxx' link, you should use the methods of the sfRouting object. For instance, if your routing.yml defines:<code> my_rule: url: /call_my_rule param: { module: mymodule, action: myaction } </code>Use the following calls in the action:
<code> // if you require an URL like http://myapp.example.com/call_my_rule/param1/xxx/param2/yyy $uri = sfRouting::getInstance()->getCurrentInternalUri(); // will return 'mymodule/myaction?param1=xxx¶m2=yyy' $uri = sfRouting::getInstance()->getCurrentInternalUri(true); // will return '@myrule?param1=xxx¶m2=yyy' $route = sfRouting::getInstance()->getCurrentRouteName(); // will return 'myrule' </code>The URIs returned by the ->getCurrentInternalUri() method can be used in a call to a link_to() helper.
In addition, you might want to get the first or the last action called in a template. The following variables are automatically updated at each request and are available to templates:
$sf_first_action
$sf_first_module
$sf_last_action
$sf_last_module
Complement complex SQL in SYMFONY
Code Snippets
Complement complex SQL in SYMFONY
http://propel.phpdb.org/trac/ticket/57
集計関数を使用する例
SELECT MIN(reserve.MINUTES_PER_UNIT), reserve.NUMBER_PER_UNIT
FROM reserve
WHERE reserve.TYPE='time' AND reserve.RESERVE_GROUP_ID=1
GROUP BY reserve.TYPE,reserve.RESERVE_GROUP_ID
$c = new Criteria();
$c->add(ReservePeer::TYPE, $reserve_type);
$c->add(ReservePeer::RESERVE_GROUP_ID, $reserve_group_id);
$c->addSelectColumn('MIN('.ReservePeer::MINUTES_PER_UNIT.')');
$c->addGroupByColumn(ReservePeer::TYPE);
$c->addGroupByColumn(ReservePeer::RESERVE_GROUP_ID);
$rs = ReservePeer::doSelectRS($c);
while ($rs->next())
{
$minutes_per_unit = $rs->getInt(1);
}
「ようこそ」画面に特定のユーザーを表示させないようにする
ITmedia エンタープライズ:Windows Tips「「ようこそ」画面に特定のユーザーを表示させないようにする」
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserList
に、非表示にしたいアカウント名のDWORD値を作成して、値を0にする。
Windows Vistaでも同じ方法でアカウントを非表示にできる。
File structure explained
http://www.symfony-project.com/book/trunk/file_structure
symfonyのディレクトリパスは、sfConfigで取得できる。
// root directory structure
'sf_cache_dir_name' => 'cache',
'sf_log_dir_name' => 'log',
'sf_lib_dir_name' => 'lib',
'sf_model_dir_name' => 'model',
'sf_web_dir_name' => 'web',
'sf_data_dir_name' => 'data',
'sf_config_dir_name' => 'config',
'sf_apps_dir_name' => 'apps',
// global directory structure
'sf_app_dir' => $sf_root_dir.DIRECTORY_SEPARATOR.'apps'.DIRECTORY_SEPARATOR.$sf_app,
'sf_model_dir' => $sf_root_dir.DIRECTORY_SEPARATOR.'model',
'sf_lib_dir' => $sf_root_dir.DIRECTORY_SEPARATOR.'lib',
'sf_web_dir' => $sf_root_dir.DIRECTORY_SEPARATOR.'web',
'sf_upload_dir' => $sf_root_dir.DIRECTORY_SEPARATOR.'web'.DIRECTORY_SEPARATOR.'uploads',
'sf_base_cache_dir' => $sf_root_dir.DIRECTORY_SEPARATOR.'cache'.DIRECTORY_SEPARATOR.$sf_app,
'sf_cache_dir' => $sf_root_dir.DIRECTORY_SEPARATOR.'cache'.DIRECTORY_SEPARATOR.$sf_app.DIRECTORY_SEPARATOR.$sf_environment,
'sf_log_dir' => $sf_root_dir.DIRECTORY_SEPARATOR.'log',
'sf_data_dir' => $sf_root_dir.DIRECTORY_SEPARATOR.'data',
'sf_config_dir' => $sf_root_dir.DIRECTORY_SEPARATOR.'config',
actionの forward、handleErrorXxxx、validateXxxx実行時の注意点
- forward時には、各action間で$thisのプロパティは引き継がれない。
- forward時には、各actionで毎回preExecuteとpostExecute()が実行される。
- validationは、actionの実行前に行われるため、validateXxxx()、handleErrorXxxx()の実行時には、preExecute()、postExecute()は実行されない。