$10にしてみるー>違うなー>アクセスログみるー>調整、を繰り返す。
面倒くさい!となったので番号を振るようにしました。
head -1 access_log | awk '{for(i=1;i<NF;i++){ printf "%d:%s\n",i,$i;} }'
これを手打ちorコピペorエイリアスするのも面倒くさいので、もっと簡単な方法ないだろうか。
head -1 access_log | awk '{for(i=1;i<NF;i++){ printf "%d:%s\n",i,$i;} }'
use IO::Socket::SSL qw/inet4/
とするとipv4を強制できる。 $self->${ \"method_${type}" }
#!/usr/bin/env perl
use strict;
use warnings;
use B;
sub print_hoge {
print "hoge\n";
};
my $coderef = \&print_hoge;
warn B::svref_2object($coderef)->GV->NAME; #print_hoge
$ strace -ff -e open /usr/local/mysql/bin/mysqld_multi start 55,56 2>&1 | grep my\.cnf
[pid 23345] open("/etc/my.cnf", O_RDONLY|O_LARGEFILE) = 3
[pid 23347] open("/etc/my.cnf", O_RDONLY|O_LARGEFILE) = 3
[pid 23344] open("/etc/my.cnf", O_RDONLY|O_LARGEFILE) = 3
mysql --helpだと
Default options are read from the following files in the given order:の箇所にデフォで読み込まれる順番が書いてあるんですが、デフォのときの話だし、straceでみるのが楽ですね。
$ strings /usr/local/mysql/bin/mysqlbug | grep configure # This is set by configure CONFIGURE_LINE="./configure '--prefix=/usr/local/mysql'.....
~/myapp/etc/development/nginx.conf
~/myapp/etc/production/nginx.conf
上記のように開発環境と本番環境の2つを別々に管理していると、開発環境でテストしてもテストできたのはdevelopmentのほうだけで、
実際に使われるproductionのほうはテストされてません。 server {
listen 80;
server_name <?= $_[0]->{PROJECT_HOST} ?>;
....
}
#!/usr/bin/env perl
use File::Slurp qw/ write_file /;
use Text::MicroTemplate qw/:all/;
use Text::MicroTemplate::File;
my $mtf = Text::MicroTemplate::File->new(
include_path => [ 'tmpl' ],
);
for my $env (qw/ development production /) {
my $C = do "../config/${env}.pl";
die $@ if $@;
warn $C->{PROJECT_HOST};
my $filled_template = $mtf->render_file('nginx.conf', $C);
write_file( "${env}/nginx.conf", {binmode => ':utf8'},$filled_template );
}
make.plを実行すると各種ファイルが更新されます。 $ git log -p 5da8dbab2a815c00617ab60b641391ada8d96f40 protocol.txt
$ git name-rev 5da8dbab2a815c00617ab60b641391ada8d96f40
> 5da8dbab2a815c00617ab60b641391ada8d96f40 tags/1.3.2~164
1.3.2からでした。
$ memcached -h | head -1
sub _delete_me {
my $self = shift;
$self->{_dbh}->delete($self->{_sid}, $self->{_data}); #秒数入れる第2引数にハッシュリファレンスいれてる
}
プロトコルが何回か変わったのかもしれませんが、$self->session->expireがまったく効いてませんでした。
$db->single( member => $where );
DBIx::QueryLogで確認すると、
SELECT (略) FROM `member` LIMIT 1
となります。
Amon2を使ってる場合、MyApp::DBにsingleメソッドを作ってそこでバリデーションしています。
./sqlite2coredata mydb_file
mv ~/output/myapp.xcdatamodeld/myapp.xcdatamodel/contents ~/hoge/myapp.xcdatamodeld/myapp.xcdatamodel/contents
$ sqlt -f MySQL -t SQLite ~/test.sql > test_sqlite.sql
しかし括弧でサイズ指定などしている箇所が残っているので、ワンライナーで削除しました。
sub render {
my ($c,$filename,$vars) = @_;
....
no warnings 'redefine';
local *Teng::Row::update = sub { die 'Teng::Row::update not allow in view' };
local *Teng::Row::delete = sub { die 'Teng::Row::delete not allow in view' };
....
$c->SUPER::render(...);
}
mysqladmin -i 1 processlist
if [ -d "${HOME}/.bash.d" ] ; then
for f in "${HOME}"/.bash.d/*.sh ; do
. "$f" && echo load "$f"
done
unset f
fi
で読み込みます。(このやり方の元ネタがあったけど忘れた)cpanm Term::GnuScreen::WindowArrayLike;
もしくはMinillaを使用しているのでgithubからリポジトリを取得してminil install。
Qオプションがない場合、新しいバージョンのscreenをインストールしてください。
# .screenrc
# push is [C-t l p]
escape ^Tt
bind l command -c window_array_like
bind -c window_array_like p exec perl -e 'use Term::GnuScreen::WindowArrayLike; Term::GnuScreen::WindowArrayLike->new->push'
.screenrcを設定して任意のキーに割り当てて使用する。上記はC-t + l + p でpushメソッドが実行される。
$ cpanm Pod::Cpandoc::Cache
$ ccpandoc Acme::No
$ ccpandoc -m Acme::No
$ ccpandoc -c Acme::No
# support Pod::Perldoc::Cache
$ ccpandoc -MPod::Perldoc::Cache -w parser=Pod::Text::Color::Delight Acme::No