13:28 Leopardでmysqlが起動しない
Leopardが環境設定パネルから起動できない件で
とりあえず、回避策
sudo chown -R (user) /usr/local/mysql/data
つまり、mysqlが(user)の権限で起動してるってことだよね
以前どうだったのか確認できない。。
スタートアップの起動もできないみたいなんだけど、
こちらはmysqlの対応待ちで
Leopardが環境設定パネルから起動できない件で
とりあえず、回避策
sudo chown -R (user) /usr/local/mysql/data
つまり、mysqlが(user)の権限で起動してるってことだよね
以前どうだったのか確認できない。。
スタートアップの起動もできないみたいなんだけど、
こちらはmysqlの対応待ちで
とあるはてな社員の日記 - まっさらなサーバを30分で本番投入できるようにする
yumのレポジトリをローカルにミラーしていて、それを使ったとしても、
一番時間かかるのはyum updateだったりしませんか?
前職では、update済み && CPANモジュール追加済み install diskを使ってた。
perlbalでnginxをbackendに置く時は、verify_backendをoffに。
nginxがOPTIONSをサポートしていない?
perlbal - nginx - fastcgi
という組み合わせがうまくうごかない。
nginxがコンテンツを返していると思うんだけど、Perlbalが受け取らないのかなぁ。
ImageMagickでAnimated GIFのサムネイルをきれいにつくる方法 : blog.nomadscafe.jpのオマケ
package Iconizer; use strict; use warnings; use base qw/Class::Accessor::Fast/; use IPC::Run; use File::Copy; __PACKAGE__->mk_accessors( qw/input size output width height frames/ ); sub do_identify { my $self = shift; my %identify; my $h = IPC::Run::start( [ '/usr/bin/identify', $self->input ], map { \$identify{$_} } qw/in out error/ ); my $identify = $h->finish; die "identify failed: $identify{error}\n" unless $identify; my @identify = split /\n/, $identify{out}; $self->frames(scalar @identify); if ( $identify[0] =~ / \d+x\d+ (\d+)x(\d+)\+\d\+\d/ ) { $self->width($1); $self->height($2); } elsif ( $identify[0] =~ / (\d+)x(\d+) / ) { $self->width($1); $self->height($2); } else { die "cannot identify file\n"; } } sub do_convert { my $self = shift; my $resize_height = $self->size; my $resize_width = $self->size; if ( $self->width > $self->height ) { $resize_width = int ($self->width * $self->size)/$self->height; } else { $resize_height = int ($self->height * $self->size)/$self->width; } $resize_width ||= 1; $resize_height ||= 1; my $top=0; my $left=0; if ( $resize_width > $resize_height ) { $left = int ($resize_width - $self->size)/2; } else { $top = int ($resize_height - $self->size)/2; } my %convert; my $h = IPC::Run::start( [ '/usr/bin/convert', '-size', $self->width . "x" . $self->height, $self->input, '-coalesce', '-resize', $resize_width . "x" . $resize_height, '-sharpen', '1', '-crop', sprintf("%sx%s+%s+%s", $self->size,$self->size,$left,$top), '+repage', '-deconstruct', $self->output ], map { \$convert{$_} } qw/in out error/ ); my $convert = $h->finish; die "convert failed: $convert{error}\n" unless $convert; my $ext; my $name; if ( $self->output =~ /\.([^.]+)$/ ) { $name = $`; $ext = $1; } if ( -f "$name-0.$ext" ) { File::Copy::copy("$name-0.$ext", $self->output); for(my $i=0;$i<$self->frames;$i++){ unlink "$name-$i.$ext"; } } } package main; my $icon = Iconizer->new({ input => "input.gif", output => "output.gif", size => 32 }) $icon->do_identify; $icon->do_convert;
システム管理者はcronじゃない
naoyaのはてなダイアリー - Linux I/O のお話 write 編
すばらしす。参考になります。
ただ、運用しているサーバにメモリが足せるのも
ハードを自作するはてなならではかなとか思った。
buck2sockを使わないようにしてみた
--- Cache-Memcached-1.21.orig/lib/Cache/Memcached.pm 2007-05-03 07:06:59.000000000 +0900 +++ Cache-Memcached-1.21/lib/Cache/Memcached.pm 2007-05-10 21:08:55.000000000 +0900 @@ -162,12 +162,12 @@ sub _dead_sock { my ($sock, $ret, $dead_for) = @_; - if (my $ipport = $sock_map{\$sock}) { + if (my $ipport = $sock_map{$sock}) { my $now = time(); $host_dead{$ipport} = $now + $dead_for if $dead_for; delete $cache_sock{$ipport}; - delete $sock_map{\$sock}; + delete $sock_map{$sock}; } @buck2sock = (); return $ret; # 0 or undef, probably, depending on what caller wants @@ -175,10 +175,10 @@ sub _close_sock { my ($sock) = @_; - if (my $ipport = $sock_map{\$sock}) { + if (my $ipport = $sock_map{$sock}) { close $sock; delete $cache_sock{$ipport}; - delete $sock_map{\$sock}; + delete $sock_map{$sock}; } @buck2sock = (); } @@ -563,8 +563,8 @@ my $tries; while (1) { my $bucket = $hv % $bcount; - $sock = $buck2sock[$bucket] ||= $self->sock_to_host($self->{buckets}[ $bucket ]) - and last; + $sock = $self->sock_to_host($self->{buckets}[ $bucket ]); + last if $sock; next KEY if $tries++ >= 20; $hv += _hashfunc($tries . $real_key); }
まだまだ怪しい
[Thu May 10 16:09:46 2007] [error] No map found matching for UNKNOWN(0xbb3c814) at /usr/lib/perl5/vendor_perl/5.8.8/Cache/Memcached.pm line 658, <DATA> line 1.\n [Thu May 10 16:09:47 2007] [error] No map found matching for SCALAR(0xbf86c34) at /usr/lib/perl5/vendor_perl/5.8.8/Cache/Memcached.pm line 658, <DATA> line 1.\n [Thu May 10 16:09:48 2007] [error] No map found matching for UNKNOWN(0xb7932d4) at /usr/lib/perl5/vendor_perl/5.8.8/Cache/Memcached.pm line 658, <DATA> line 1.\n Use of uninitialized value in string eq at /usr/lib/perl5/vendor_perl/5.8.8/Cache/Memcached.pm line 423, <DATA> line 1.
こんなログがでて死にます
--- Cache-Memcached-1.21.orig/lib/Cache/Memcached.pm 2007-05-03 07:06:59.000000000 +0900
+++ Cache-Memcached-1.21/lib/Cache/Memcached.pm 2007-05-10 13:55:11.000000000 +0900
@@ -162,12 +162,12 @@
sub _dead_sock {
my ($sock, $ret, $dead_for) = @_;
- if (my $ipport = $sock_map{\$sock}) {
+ if (my $ipport = $sock_map{$sock}) {
my $now = time();
$host_dead{$ipport} = $now + $dead_for
if $dead_for;
delete $cache_sock{$ipport};
- delete $sock_map{\$sock};
+ delete $sock_map{$sock};
}
@buck2sock = ();
return $ret; # 0 or undef, probably, depending on what caller wants
@@ -175,10 +175,10 @@
sub _close_sock {
my ($sock) = @_;
- if (my $ipport = $sock_map{\$sock}) {
+ if (my $ipport = $sock_map{$sock}) {
close $sock;
delete $cache_sock{$ipport};
- delete $sock_map{\$sock};
+ delete $sock_map{$sock};
}
@buck2sock = ();
}
kazeburo< Cache::Memcachedを1.21にすると、Cache::Memcached::Managedがうまく動かなくなって、Catalyst::Plugin::Session::Store::Memcachedが使えない件