あるフォルダ以下のサイズを求めるのに du を使っていたが、どうもduはブロックサイズに影響されるようで、環境によってまちまちになる、と。
Webをあさったらlsの結果からファイルサイズを求める方法があったので、それをアレンジして find の結果から集計するようにしてみた。
find . -type f -printf "%s %f\n" | awk '{i+=$1}END{print i}'
サイズ出すだけなら%fはいらないっすよ。
SyntaxHighlighter
2014年5月13日火曜日
2014年4月2日水曜日
CakePHPでConfigure::write('debug', 0); にしたら真っ白になったよー
頭も真っ白ですね。
さておき、
開発環境から本番環境へ持って行く時、debugを0にしてサイトアクセスしたら何も表示されないでやんの。
ひぃぃぃ、と思ってググるググる。
幾つか引っかかるけど、どれもピンとこない感じでして…
あれこれやってるうちに、debug 0でも表示出来てたヾ(o゚ω゚o)ノ゙
ググって出てきた対処法でもどうしてもダメなとき、app/tmp のしたのcacheを消したり、debugを2にしてみたり、0にしてみたりしてみて!!
さておき、
開発環境から本番環境へ持って行く時、debugを0にしてサイトアクセスしたら何も表示されないでやんの。
ひぃぃぃ、と思ってググるググる。
幾つか引っかかるけど、どれもピンとこない感じでして…
あれこれやってるうちに、debug 0でも表示出来てたヾ(o゚ω゚o)ノ゙
ググって出てきた対処法でもどうしてもダメなとき、app/tmp のしたのcacheを消したり、debugを2にしてみたり、0にしてみたりしてみて!!
2014年3月29日土曜日
redmine の DMSFをいれるよー
勢い、ドキュメント管理をredmine使ってやるよ!って言ってしまった。
そして、いざ使ってみるとredmineでは階層構造で文書を管理できない…。正確には「カテゴリ-タイトル-文書」という程度にはできるが、もっと柔軟なディレクトリは作れない。
そこで検索して出てきたのが、redmine_dmsfでした。
が使えます。ファイルは一度に複数登録可能。ただし、ディレクトリをドラッグ&ドロップしてもダメでした。だから階層構造を作るには、ディレクトリを作り、ファイル投入、ディレクトトリを作り、ファイル投入を繰り返さないとだめなのねん(´ー`)
インストールは ここ のところにある通り。migrationとかやるのでちょっと怖かったですが、やってみたらあっさりうまくいきました。#でも実施前はバックアップしときなよ!
試したredmineのバージョンなど。
今のところ日本語ファイル名のものを登録してもちゃんと動いてる…(^ω^) イイネ!
なにげに迷ったのがディレクトリの作り方。
答えは簡単。リスト右上の+ボタンでした。
これでなんとかなりそうだ .。゚+.(・∀・)゚+.゚
そして、いざ使ってみるとredmineでは階層構造で文書を管理できない…。正確には「カテゴリ-タイトル-文書」という程度にはできるが、もっと柔軟なディレクトリは作れない。
そこで検索して出てきたのが、redmine_dmsfでした。
- ドラッグ&ドロップによるファイル登録
- ディレクトリ構造
が使えます。ファイルは一度に複数登録可能。ただし、ディレクトリをドラッグ&ドロップしてもダメでした。だから階層構造を作るには、ディレクトリを作り、ファイル投入、ディレクトトリを作り、ファイル投入を繰り返さないとだめなのねん(´ー`)
インストールは ここ のところにある通り。migrationとかやるのでちょっと怖かったですが、やってみたらあっさりうまくいきました。#でも実施前はバックアップしときなよ!
試したredmineのバージョンなど。
今のところ日本語ファイル名のものを登録してもちゃんと動いてる…(^ω^) イイネ!
なにげに迷ったのがディレクトリの作り方。
答えは簡単。リスト右上の+ボタンでした。
これでなんとかなりそうだ .。゚+.(・∀・)゚+.゚
2014年3月26日水曜日
CakePHP2.4 で userごとのpasswordハッシュ値をつくるよ
結論からいうとできませんでした。ゴリゴリとCakePHPのソースを侵食すれば行けるのかもしれませんが…
CakePHP2.4からパスワードのハッシュのカスタマイズはPasswordHasherクラスを基底としたクラスを作り、登録することで出来ます。
でもこのPasswordHasherのhash()っていうメソッド、$passwordっていうパスワード文字列しか渡せない。ユーザーIDが渡せない。
hash($password, $additional)みたいな感じでハッシュ生成時に追加できる文字列指定できればいいのに…。
ストレッチングはパスワード文字列があればまぁ簡単にできるんだけどなあ。CakePHP作ってる方面ではユーザーIDを混ぜ込む文化がないのかな?
結局 AuthComponentの_findUser()に手を入れないとダメな感じであきらめモード。残念。
CakePHP2.4からパスワードのハッシュのカスタマイズはPasswordHasherクラスを基底としたクラスを作り、登録することで出来ます。
でもこのPasswordHasherのhash()っていうメソッド、$passwordっていうパスワード文字列しか渡せない。ユーザーIDが渡せない。
hash($password, $additional)みたいな感じでハッシュ生成時に追加できる文字列指定できればいいのに…。
ストレッチングはパスワード文字列があればまぁ簡単にできるんだけどなあ。CakePHP作ってる方面ではユーザーIDを混ぜ込む文化がないのかな?
結局 AuthComponentの_findUser()に手を入れないとダメな感じであきらめモード。残念。
2014年3月19日水曜日
CakePHP で modified が更新されない
すっかりCakePHPにおまかせで、その機能を疑ってもいなかったんですが。
よくよく見てみると、パスワード変更してusersテーブル見てみたら、modifiedが更新されてないでやんの。('A`)
ググってみたりしたけどイマイチわからず。
で、行き着いたところが、「updateするmodelのmodifiedに値が入ってると、その値でアップデートする」ということだ。
よくよく見てみると、パスワード変更してusersテーブル見てみたら、modifiedが更新されてないでやんの。('A`)
ググってみたりしたけどイマイチわからず。
で、行き着いたところが、「updateするmodelのmodifiedに値が入ってると、その値でアップデートする」ということだ。
$this->loadModel('User');
$userInfo = $this->User->findById($this->Session->read('Auth.User.id'));
なんてやっといて、
$userInfo['User']['password'] = $newPassword1;
if (!$this->User->save($userInfo, array(
'validate' => true,
'fieldList' => array('password')))) {
$this->tx->rollback();
return $this->passwordChangeError('パスワードの変更でエラーが起きました。');
}
ってやると、findByした時の値が入ってるから、更新されない。だからsave前にnullを突っ込んでやる。
$userInfo['User']['password'] = $newPassword1;
$userInfo['User']['modified'] = null; // ######################### ここ #####################
if (!$this->User->save($userInfo, array(
'validate' => true,
'fieldList' => array('password')))) {
$this->tx->rollback();
return $this->passwordChangeError('パスワードの変更でエラーが起きました。');
}
これで更新されるようになったよ…
なんかイマイチな気がする。
他に手があるんだろうか?
Twitter Bootstrap と CakePHP ライセンスはどうなっているか
Twitter Bootstrap は Apache License 2 のようです。
CakePHP は MITライセンス とのこと。
どちらも商用利用可能。緩めのライセンスです。ありがたいことです。
CakePHP は MITライセンス とのこと。
どちらも商用利用可能。緩めのライセンスです。ありがたいことです。
2014年3月17日月曜日
MySQLのevent scheduler(イベントスケジューラー)を使うよ
イベントスケジューラ自体の動作確認
追記: イベントのステータス(最後に実行されたのはいつ?とか)はmysql.eventの中身でわかる。
select * from mysql.event;
まず、my.cnfで不活性にしてないか確認する。
あればコメントアウトしておく。
[mysqld]
# event_scheduler=DISABLED
端末でMySQLにログインする。
次のコマンドを叩く。
mysql> select @@global.event_scheduler;
+--------------------------+
| @@global.event_scheduler |
+--------------------------+
| OFF |
+--------------------------+
1 row in set (0.00 sec)
ONにする。
mysql> set global event_scheduler=ON;
Query OK, 0 rows affected (0.01 sec)
mysql> select @@global.event_scheduler;
+--------------------------+
| @@global.event_scheduler |
+--------------------------+
| ON |
+--------------------------+
1 row in set (0.00 sec)
my.cnfに書いておく。
[mysqld]
event_scheduler=ON
どんなイベントが登録されているか見る。(参考 - http://dev.mysql.com/doc/refman/5.1-olh/ja/show-events.html)
mysql> SHOW EVENTS;
各イベントの中身はSHOW CREATEで見ることができる。
mysql> SHOW CREATE EVENT <your_event_name>;
追記: イベントのステータス(最後に実行されたのはいつ?とか)はmysql.eventの中身でわかる。
select * from mysql.event;
登録:
投稿 (Atom)