2012年2月29日水曜日
2012年2月16日木曜日
cronのログ
cron自体が実行されたかどうかのログ
/etc/syslog.confに下記を設定
cron.* /var/log/cron
cronに登録したコマンドのログ
コマンド >> log.log 2>> err-log.log
>>は1>>の省略系
1とか2はプロセスが持つファイルディスクリプタ(ファイル記述子)の番号。
0(標準入力),1(標準出力),2(標準エラー出力)は固定番号。
gitのconfig3種類
参考
pro Git
gitは
- /etc/gitconfig
- ~/.gitconfig
- git管理下のプロジェクト/.git/config
の順に設定を読む込む。
優先順位は後から読み込んだほう。
config --global は~/.gitconfigに書き込んでいる
サブシェル
参考
サブシェル
- シェルから起動した別プロセスのシェル
起動
- ()でくくる
利用例
(cd ~/ ; make)
別プロセスでcdとmakeが行われているので、このコマンド実行後のディレクトリは
cdする前のディレクトリのまま
export
親シェルを継承したサブシェル(別プロセス)に変数をコピー(孫以下にも適用)
コピーなので、他シェルに影響しない。
プロトタイプ
最初に&があると、特別扱いされて、無名サブルーチンの sub を省略して「間接オブジェクト」スロットにブロックだけを置くことができる(この場合、ブロックの後ろにはコンマは置かない)。
func(@ary, sub { $_*2 } ) が func { $_*2 } @ary になる。
sub hoge ($&) {}
hoge 'foo', sub {}; #ok
sub hoge2 (&$) {}
hoge2 {} 'foo'; #ok
sub aaa (&) {}
aaa sub{} #ok
sub mymap (&@) {}
mymap {} qw( a b c d ); #ok
mymap sub{}, qw( a b c d ); #ok
mymap sub{} qw( a b c d ); #NG subが付くと、コンマが必要
Plack::Builderの例
package Plack::Builder;
sub builder (&) {
}
app.psgiの中で、
builder {
...
$app;
}
で実行できる。
暗号系、Cipherとか
Plain Text(平文)=> Encrypt(暗号化)=> Cipher Text(暗号文)
Salt(塩) 暗号化する前の対象文字列に、いくつか文字列を追加しておくこと。
2012年2月9日木曜日
文字コードメモ
http://unknownplace.org/memo/2008/02/17/#e001:=utf8::is_utf8
ë が latin-1 では "\x{eb}" だけど utf-8 では "\x{c4}\x{ab}"
2012年2月8日水曜日
Dropboxをubuntuに入れる
wget https://www.dropbox.com/download?dl=packages/dropbox.py
で取得したスクリプトを実行。
dropbox.py start -i
表示されたパスにブラウザでアクセスして、ログインパスワード入力。
これでDropboxディレクトリが出来ている。
lsof -i:17500
とすると、UDPが動いている。これを切るのは、
wget http://dl.dropbox.com/u/340607/pyDropboxValues.py
wget http://dl.dropbox.com/u/340607/dropbox_set_lansync.py
なんだけど、
An error occured: Unhandled DB schema version 2
と怒られる。
んー、なんだろ。とりあえず、dropboxデーモン切っておこう、、、
2012年2月6日月曜日
Amon2 make testが通るまで
追記
だいぶ情報が古いです。
今(2014.02.16)はcpanm --install-deps . でとくにエラーもならず入った。
あとJSLintではなくJSHintに変わってる。
チュートリアル
いろいろインストール
cpanm Amon2 Amon2::DBI
cpanm Plack::Middleware::ReverseProcy
cpanm DBD::SQLite
cpanm HTML::FillInForm::Lite
cpanm Test::WWW::Mechanize::PSGI
バグ
とりあえずハマるのは、SQL-Interp-1.20がテストでコケルこと。古いバージョンにする。
cpanm http://search.cpan.org/CPAN/authors/id/M/MA/MARKSTOS/SQL-Interp-1.10.tar.gz
セットアップ
skinnyというオプションはないみたい?
amon2-setup.pl --skinny Hello
ここまでで、plackup app.psgiが動いた。しかしmake testが全然通らない。
ぉ、パスの部分を見るとperl5.10と書いてある。これはシステムperl。
今はperlbrewで5.14になってるはずなんだけど。
makefileにも5.10と書いてある。
とりあえずmake cleanして、もう一度perl Makefile.PL && make && make test
今度はOK.makefileにも5.14と書いてある。はて、何だったんだろ。
JSLint
JSLintが入ってないので、skipされているtestがある。
でもJSLintの入れ方がわかんね!
散々時間を食ったけど最終的にまたしてもtokuhiromさんのブログで解決。
sudo aptitude install libnspr4
wget http://www.javascriptlint.com/download/jsl-0.3.0-src.tar.gz
tar xzvf jsl-0.3.0-src.tar.gz
cd jsl-0.3.0/src/
make -f Makefile.ref
cp -a Linux_All_DBG.OBJ/jsl /usr/local/bin/
やっとmake testが通った、、、
is_deeplyの代わり
これはすごい。超見やすかった。
is_deeplyだと失敗したときに、どこが違うのかわからないけど、テキストに落としてから差分をとればいい、とのこと。
http://d.hatena.ne.jp/tokuhirom/20080308/1204999977
use YAML; use Test::More; use Text::Diff; $got_dump = YAML::Dump($got); $expected_dump = YAML::Dump($expected); ok $got_dump eq $expected_dump, Text::Diff::diff(\$got_dump, \$expected_dump);
apacheからnginxに切り替える際に、リトライを書き換えるのが大変なとき
フロントをapacheからnginxに切り替える際に、リライトの設定をするのが面倒なら、
not foundだったものはすべてバックエンドに流すのもアリ。