アイフォンからNowってみたなう

あまり使わない関数
array_filter()


    空の要素が混じっているのを取り除く
    $arr = array(1,2,,3,,4,5,,,,6);

    $result = array_filter(arr,”array_null_del"));     

    //配列中の空を削除
 //trueを返せばその値だけ$resultに入る
    function _array_null_del($v){
     if($v == null || $v == ""){
         return false;
        }
        return true;
    }

    $resultの中はarray(1,2,3,4,5,6)となる

何のときに使用したのかわすれたが、配列の空の要素だけ取り除きたかった時があったのでメモ書き。

CakePHPをダウンロードして解凍して展開後のお話。
URLがどのように解釈されているかのお話。

【.htaccess】と【index.php】
この2つの組み合わせが3つ存在します。

1つ目:CakePHP直下
2つ目:app直下
3つ目:webroot直下

それぞれの【.htaccess】の中身が下記になります。

【CakePHP直下】

<IfModule mod_rewrite.c>
   RewriteEngine on
   RewriteRule    ^$ app/webroot/    [L]
   RewriteRule    (.*) app/webroot/$1 [L]
</IfModule>

【app直下】

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule    ^$    webroot/    [L]
    RewriteRule    (.*) webroot/$1    [L]
</IfModule>

【webroot直下】

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>

【.htaccess】ファイルの設定により、
http://URL/controller/action/param
となっているURLでアクセスした場合、
http://URL/app/webroot/index.php?url=controller/action/param
と言うように解釈され処理が進んでいきます。

これには当然mod_rewrite.htaccessが利用できる場合に限られますが、じゃー利用できない場合はと言うと、
【CakePHP直下】のindex.phpファイルがmod_rewrite・.htaccessの変わりを行います。

そして解釈されたURL(http://URL/app/webroot/index.php?url=controller/action/paramの形)は
【webroot直下】のindex.phpファイル内でDispatcherに渡されて,URLからコントローラー・モデル・ビューを判断し、それぞれのインスタンス生成が行われます。

この時、命名規則に関する処理は【inflector.php】と言うファイル内で解決されています。
単語の先頭を大文字にしたり複数形の処理もここで行われています。
personがなんでpeopleって解釈されるか疑問だったんですよねー

ちなみにdispatcherinflectorのファイルの場所は
cake/dispatcher.php
cake/libs/inflector.php
にあります。

app/config/core.php内の下記定数の値を0~3のどれかにを変更することで
cakephpのデバッグをコントロールできます。
Configure::write(’debug’, 0~3);

0:本番運用

エラー出力無し。
app/tmp/cache/models の中にDBスキーマのキャッシュファイルがあるが,
これは【1】以上にしないと更新されない。
【0】後にDBを変更したときは、手動でこのキャッシュファイルを消さないといけない。

1:開発用(PHPエラー出力)

error_reporting(E_ALL)
ini_set(’display_errors’, 1)
上記2つが内部的に実行されます。

2:開発用(1プラスDBクエリー情報の出力)

・ (default) 8 queries took 10 ms」クエリの数(8)と,合計時間(10ms)
・Nr 実行したクエリーの連番
・Query 実行したSQL文
・Error エラー情報
・Affected UPDATEやDELETEの際は,影響した行数、 SELECTの場合は結果の行数
・Nom. rows 結果の行数
・Took (ms) DB上でのクエリの実行時間

3:開発用(2プラスコントローラーのオブジェクト情報)

ビューかコントローラーに記述する必要がある。
これはあまり使用しないでしょう。オブジェクト情報が見たければ、その都度pr($this)など記述
すればいいと思います。

ubuntu9.10
数年ぶりのリナックス。
viのコマンドもすべて忘却。

コマンドメモ、とりあえずメモ。
あとから整理する、と思う。


マウントされているUSBなどの情報一覧。
どのデバイスが使われているのか見る時
スーパーユーザーじゃないと表示されない
fdisk -l

フォルダやファイルのパーミッションまで見れる
ls -l

どっとから始まるファイルなども表示
ls -a

スーパーユーザーに変身
このコマンドの後パスワード聞いてくる
sudo su

現在実行中のプロセス表示
ps ax
ps ax|grep firefox

プロセスを停止
kill 上記プロセス番号

IPアドレス確認
ifconfig

画面のTOPからの入力になる
Ctrl+l

自動起動されているものを見る
3,4,5がonで自動起動されている
chkconfig --list

----------------------samba----------------------
サンババージョン確認
vは大文字
smdb -V

/etc/samba/smb.conf
smb.conf設定ファイル
強制的にパーミッション777で共有を作成する時
read only = No
force create mode = 0777
force directory mode = 0777
guest only = Yes

ユーザー追加
smbpasswd -a ユーザー名

サンバ再起動
sudo /etc/init.d/samba restart

----------------------vim----------------------
インサートモードに移行
i
コマンドモードに移行
ESCボタン

上書き保存
:w

上書き保存+終了
ZZ

ページ下送り
Ctrl+d
ページ上送り
Ctrl+u

x カーソル位置の文字を削除
dd 行の削除
p 削除データの貼り付け
u 編集の取り消し
/ 文字の検索
? 逆方向の文字の検索 

a コマンドモードから入力モードに切り替え(カーソル位置の後ろから文章を追加)
i コマンドモードから入力モードに切り替え(カーソル位置の前に文章を追加)
o コマンドモードから入力モードに切り替え(カーソル位置の行の次の行に追加)
R コマンドモードから入力モードに切り替え(カーソル位置の文章を置き換え)
Esc 入力モードからコマンドモードに切り替え 

:w→Enter viを終了せずにファイルを保存
ZZ ファイルを保存しviを終了
:q !→Enter ファイルを保存せずにviを終了 

app/config/core.php ファイル内の
Configure::write(’debug’, 2);
この設定が2以上で発行されたSQL文がページの下部に表示されます。

発行されたSQL文をファイルに取得します。


cake/libs/model/datasources/dbo
  ┃
  ┗dbo_mysql_log.phpを作成

<?php

uses("model".DS."datasources".DS."dbo".DS."dbo_mysql");
class DboMysqlLog extends DboMysql{

	var $queryNo = 1;

	function execute($sql){

		$ret = parent::execute($sql);

		if(defined("LOG_SQL") && LOG_SQL){
			$this->log(sprintf("%d.%s",$this->queryNo,$sql),LOG_DEBUG);
			$this->queryNo++;
		}

		return $ret;

	}
}

?>
--

②app/config/database.php
  ┃
  ┗’driver’ => ‘mysql_log’,にする

var $default = array(
	'driver' => 'mysql_log',
	'persistent' => false,
	'host' => 'localhost',
	'login' => 'verynight',
	'password' => 'xxxxxx',
	'database' => 'database',
	'prefix' => '',
	'encoding' => 'utf-8'
);
--

③定数LOG_SQLをapp/config/bootstrap.phpにてdefineする

これで
app/tmp/logs/debug.log にSQL文が出力される。

出力内容を見やすくカスタマイズするには①のdbo_mysql_log.phpファイルにて
function showLog()をオーバーライドしてゴリゴリ書くらしい。

カテゴリー
ブログロール