13:28 Leopardでmysqlが起動しない

Leopardが環境設定パネルから起動できない件で

とりあえず、回避策

sudo chown -R (user) /usr/local/mysql/data

つまり、mysqlが(user)の権限で起動してるってことだよね

以前どうだったのか確認できない。。

スタートアップの起動もできないみたいなんだけど、

こちらはmysqlの対応待ちで

13:26 一番時間かかるのはyum updateだったり

とあるはてな社員の日記 - まっさらなサーバを30分で本番投入できるようにする

yumのレポジトリをローカルにミラーしていて、それを使ったとしても、

一番時間かかるのはyum updateだったりしませんか?

前職では、update済み && CPANモジュール追加済み install diskを使ってた。

13:29 perlbalとnginx

perlbalでnginxをbackendに置く時は、verify_backendをoffに。

nginxがOPTIONSをサポートしていない?

perlbal - nginx - fastcgi

という組み合わせがうまくうごかない。

nginxがコンテンツを返していると思うんだけど、Perlbalが受け取らないのかなぁ。

12:46 アイコン(サムネイル)を作るモジュール

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;

14:55 運用

システム管理者はcronじゃない

12:07 斜め上ですが

naoyaのはてなダイアリー - Linux I/O のお話 write 編

すばらしす。参考になります。

ただ、運用しているサーバにメモリが足せるのも

ハードを自作するはてなならではかなとか思った。

21:31 Cache::Memcached 1.21 その3

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);
             }

19:09 Cache::Memcached 1.21続き

まだまだ怪しい

[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.

こんなログがでて死にます

14:25 Cache::Memcached 1.21

--- 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 = ();
 }

14:03 Catalyst::Plugin::Session::Store::Memcached

kazeburo< Cache::Memcachedを1.21にすると、Cache::Memcached::Managedがうまく動かなくなって、Catalyst::Plugin::Session::Store::Memcachedが使えない件

< 1 2 3 4 5 6 7 8 9 10 >