2012/05/27

CakePHP での ログ設定 (CakePHP 1.3.6)


◎config/core.php
//PHP エラーレベルで指定
Configure::write('log', E_ERROR | E_WARNING | E_PARSE);
[Mode]
debug=0 の時
Fatal → Apacheエラーに出る
WARNIG → appエラーに出る

debug=1 の時 ↑上記のエラーに加えて、
Notice → appデバッグログに出る


◎ログファイル指定
[apache] vhostで設定 /etc/httpd/conf.d/vhosts/[user].conf
CustomLog /var/log/httpd/app_name_access_log common
ErrorLog /var/log/httpd/app_name_error_log ←PHPエラーとかが出る。

[app] アプリCakeのLogクラス)で出すログ
   →config/設定ファイル.phpで指定する
// ログPATH設定
CakeLog::config('custom_path', array(
'engine' => 'FileLog',
'path' => '/var/log/httpd/[app_name]_'
));
【出力先】
  → 「debug.log」、「error.log」は Cakeがエラーレベルに応じて出しわけます
  → Controller内とかでLogクラス使って出したものが出ます
 LOG_DEBUG:/var/log/httpd/[app_name]_debug.log
 LOG_ERROR:/var/log/httpd/[app_name]_error.log


【エラー出すときに使う↓メモ】
#var_dump(srlen(array())); //Fatal Error
var_dump(srlen('',)); //Pars Errore
var_dump(strlen(array())); //WARNIG
#var_dump($a); //Notice

 



文字列フィールドの 平均バイト数を出す

select avg(b.length) from (SELECT length(comment) as length from blogs where del_flg=0) as b;

$.each() でスキップする


phpだと continue;
jQuery.each()の場合は return true;



Carbon Emacs


Carbon Emacs (おまけ)
Ctl+X+F で file find モード
※Ctl押しながら 「X」 続けて「F」と押す
※ユーザのhomeディレクトリ配下を見てる

Carbon Emacsパッケージは、銭谷誠司氏が開発を続けているMac OS X向けのEmacsパッケージである。有用スクリプト等がデフォルトで含まれているほか、日本語環境向けのパッチなども導入されており、日本語環境で利用するならもっともおすすめできるEmacsパッケージである。
参考)Emacs超入門[1]:Emacsの基本的な使い方とショートカットキー - SourceForge.JP Magazine : オープンソースの話題満載 -http://sourceforge.jp/magazine/09/04/06/1138226/2



デフォルトの ComponentとHelper


coreのcontroller.phpで確認すると
特に指定しないでも、
デフォルトで呼ばれる(使える) ComponentとHelperは以下のとおり

var $helpers = array('Session', 'Html', 'Form');

var $components = array('Session');

↑これを 各コントローラ(app_controller.phpとか自前_controller.php)で使うときは
にオーバーライドするか、functionの中に

$this->helpers[] = 'Javascript';
と書いておk~




任意の場所で Auth(User)情報を使いたいとき


【View】
session ヘルパーを使う
$session->read('Auth.User.id');
【Controller】
Session コンポーネントを使う

参考)



auto_increment リセット


ALTER TABLE `table` PACK_KEYS =0 CHECKSUM =0 DELAY_KEY_WRITE =0 AUTO_INCREMENT =1
※あちこちでみかけた、
alter `table` test auto_increment=1;」
じゃ、出来なかった


===========================
(追記)2012/10/24

テーブルに データが入ったままの場合は 別の方法で振り直す

オートインクリメント(自動連番)カラムの値を振り直す場合、下記の手順で実行する(例では ID カラムがこれに該当)
  1. ID カラムを削除
    alter table TBL-NAME drop column ID;
    オートインクリメント・カラムは各テーブルに一つだけしか作成できないので、連番を振り直す場合は、一旦カラムを削除して新たに作り直す必要がある
  2. 新規 ID カラム(整数型・自動連番)を追加
    alter table TBL-NAME add ID int(5) primary key not null auto_increment first;
    primary key は重複を許さない主キーのことであり、NOT NULL でなければならない


参考)
MySQL よく使うコマンド - WEB + PC http://weblogs.tail-lagoon.com/WebPC/2008/03/18/15/

今更ながら Cakeを焼く


cakeコマンドは coreの中のcake/console/cake (←shell)をbashで叩く
 →たたかれると 単に 同ディレクトリの cake.phpが呼ばれるだけ
これでうまくいかないなら
直接 php -q cake.php を叩けばいい
 ※ただ 上記のbashを利用すると自動でphpコマンドに「 -working」オプションをつけてくれるけどね カレントディレクトリが入るっぽい
■appをビルドする
cake bake
 →app アプリ一式をべべーっと作ってくれます
■各Controllerとか つくる
 ↑で作成した appディレクトリに行って
 cake bakeを叩くと なにつくるかーって聞かれます
$app>cake bake
Welcome to CakePHP v1.3.6 Console
---------------------------------------------------------------
App : app
Path: /hoge/huga/app
---------------------------------------------------------------
Interactive Bake Shell
---------------------------------------------------------------
[D]atabase Configuration
[M]odel
[V]iew
[C]ontroller
[P]roject
[F]ixture
[T]est case
[Q]uit
What would you like to Bake? (D/M/V/C/P/F/T/Q)
 Controllerなら[C]すかね?
 そっからの参考は→こちら
手順的な流れは M→C→V かな



ファイル名一括変更

※ Unixには無いらしい


rename [ -option ] perlexpr [ files ]
Unixには無いらしい
こんなファイルがあったとして
diary_YYYYMMDD.html
例)2011/08月分のファイルを一括バックアップリネーム→.html_bkにする
# 一覧確認
ls -l diary_201108??.html
rename 's/.html/.html_bk/' diary_201108??.html
# 一覧(再)確認
ls -l diary_201108??.html
参考)
ファイル名を一括変更するには(renameコマンド) - UbuntuJapanese Wiki






日付指定で touch


-d
touch -d "2 February 2011" [file_path]
touch -d "2003/1/1 00:00:00 am" [file_path]
 ※日時の設定は一般的な書き方をすることができる(例:"2000/1/8 13:14:00","Sat Jan 8 00:15:00 JST 2000",など)
-t
touch -t 200512011205 [file_path] 2005年12月1日12時05分に更新
 ※([CC]YY)MMDDhhmm[.SS]



[Perl] モジュールが使えるか確認する


perl -MMODULE_NAME -e ''
  ex)Image::Magick が利用可能かどうか調べる
  perl -MImage::Magick -e ''
モジュールが使えないとエラーが出る
Can't locate Image/Magick.pm in @INC (@INC contains: [....この部分は環境によって異なる.....]).
BEGIN failed--compilation aborted.
使える場合は 何も出ない
参考)