The blogsphere

Loading...

2009年6月18日木曜日

EC-CUBEでPHPとSmartyと戯れた

このエントリーをはてなブックマークに追加

EC-CUBEな案件で拡張的な話しがあったので、初めてPHPを触る事に。

1日2日触っていると、だいぶ要領が分かって来たのか、自分でクラスを作成できるようになった。

でも、ライブラリ関連の挙動が怪しく、、思うように動いてくれない....

EC-CUBEのソースは微妙だと思う....どうやら、PHP界隈では、CakePHPが良さそう、、、。
PerlではCatalyst, RubyではRails, PHPならCakePHPといった感じなのだろうか。

今度、少しCakePHPについて学習してみようかな

そうそう、PHPで驚いたのが、error_log って関数があって、そいつに文字列渡すと、ApacheとかのWebサーバのエラーログに出力される。

これって、言語レベルで実装されている事に驚く....。

2009年5月14日木曜日

Out Of Memory Killerと戦う

このエントリーをはてなブックマークに追加

某クライアントさんからメモリ不足時のプログラムの挙動についてテストしろって内容があって、どのようにしてメモリ不足を起こすかと思って、以下のようにしてメモリを大量消費してみた。

perl -e 'my @Array; $#Array = 1000000000; sleep;'
しばらくすると、"Terminated!!" とか出て突然、落ちたから何事かと思って、隣の人に聞いたら、OOM Killerなる奴がいるらしく、そいつの仕業って事を知った。

ってか、Linuxにこんな機能があったなんて初めて知った。

なんどもやってたら、memcachedとかMySQLとか容赦なく殺されて逝ったwww
なぜか、apacheは死ななかったけど、、、たまたまかな??

MySQLが、必至に restart している挙動に、健気だなぁとか思った。

あと、top で、perlのプロセス見てたら、メモリ消費が "1.0g" とか出てて、ちゃんと1ギガ消費してたら、その通りに出るんだなぁとか、、、。。ってか、1.0gとかって初めて見たwww

OOM Killer:ITpro

2009年4月3日金曜日

ハッシュの値へのリファレンスを取得しました

このエントリーをはてなブックマークに追加

my $hash_ref = { hogehoge => 1 };
my $scalar_ref = ¥($hash_ref->{hogehoge});
$hash_ref->{hogehoge} = 2;
print $$scalar_ref, "¥n";
初めは取れるのか?と思ってたのだが、意外とあっさり。

本当は、、
my $object = Class->new;
my $scalar_ref = ¥($object->hogehoge);
$object->hogehoge(2);
print $$scalar_ref, "¥n";
みたいに、アクセサーから取得したかったのだけど、どうやら、returnの時に値のコピーが発生しているようで、取得できなかった。。。

まぁ、なんで、こんな事がやりたかったかと言うと、DB上にファイルを保存する事になって、そのファイルの内容を取り出す関係で、極力、変数のコピーは避けたかったので、、、という説明じゃわからないね。まぁ、そんな感じの時に必要だったのよ。

簡単に説明すれば、DBIx::Class::InflateColumn::Fileしたかったの。

IO::Fileに、変数の参照渡して、スカラー変数をファイルみたいに、open したかった。

2009年1月23日金曜日

iAntiVirusが暴走する...

このエントリーをはてなブックマークに追加

何かのひょうしに、iAntiVirus が、ひどい暴走して、、にっちもさっちもいかないのです。。とりあえず、最近は止めっぱなしだけど。。。困ったなぁ。。

まぁ、暴走というかエラー吐きまくりで、system.log が大変な事になるんだけど。。
どなたか、対処方法とか知ってたら教えてー

Jan 23 04:54:22 104 [0x0-0x1e01e].com.pctools.iAntiVirus[200]: iAntiVirus::kFSMonitorC error in worker thread @ IODataQueueDequeue, code = -536870181.
Jan 23 04:54:52: --- last message repeated 35242 times ---
Jan 23 04:54:22 104 [0x0-0x1e01e].com.pctools.iAntiVirus[200]: iAntiVirus::kFSMonitorC error in worker thread @ IODataQueueDequeue, code = -536870181.
Jan 23 04:55:22: --- last message repeated 40570 times ---
Jan 23 04:54:23 104 [0x0-0x1e01e].com.pctools.iAntiVirus[200]: iAntiVirus::kFSMonitorC error in worker thread @ IODataQueueDequeue, code = -536870181.
Jan 23 04:55:52: --- last message repeated 38227 times ---
Jan 23 04:54:23 104 [0x0-0x1e01e].com.pctools.iAntiVirus[200]: iAntiVirus::kFSMonitorC error in worker thread @ IODataQueueDequeue, code = -536870181.
Jan 23 04:56:22: --- last message repeated 42702 times ---
Jan 23 04:54:24 104 [0x0-0x1e01e].com.pctools.iAntiVirus[200]: iAntiVirus::kFSMonitorC error in worker thread @ IODataQueueDequeue, code = -536870181.
Jan 23 04:56:52: --- last message repeated 44623 times ---
Jan 23 04:54:25 104 [0x0-0x1e01e].com.pctools.iAntiVirus[200]: iAntiVirus::kFSMonitorC error in worker thread @ IODataQueueDequeue, code = -536870181.
Jan 23 04:57:22: --- last message repeated 47837 times ---
Jan 23 04:54:25 104 [0x0-0x1e01e].com.pctools.iAntiVirus[200]: iAntiVirus::kFSMonitorC error in worker thread @ IODataQueueDequeue, code = -536870181.
Jan 23 04:57:52: --- last message repeated 58602 times ---
Jan 23 04:54:26 104 [0x0-0x1e01e].com.pctools.iAntiVirus[200]: iAntiVirus::kFSMonitorC error in worker thread @ IODataQueueDequeue, code = -536870181.
Jan 23 04:58:22: --- last message repeated 60940 times ---
Jan 23 04:54:27 104 [0x0-0x1e01e].com.pctools.iAntiVirus[200]: iAntiVirus::kFSMonitorC error in worker thread @ IODataQueueDequeue, code = -536870181.
Jan 23 04:58:52: --- last message repeated 64267 times ---

2009年1月1日木曜日

WebDAV on lighttpd

このエントリーをはてなブックマークに追加

困った...起動しない...

# /usr/local/etc/rc.d/lighttpd start
Starting lighttpd.
2009-01-01 04:12:30: (plugin.c.165) dlopen() failed for: /usr/local/lib/lighttpd/mod_webdav.so /usr/local/lib/lighttpd/mod_webdav.so: Undefined symbol "uuid_unparse"
2009-01-01 04:12:30: (server.c.610) loading plugins finally failed
ports でインストールした時に、
configure: WARNING: uuid/uuid.h: accepted by the compiler, rejected by the preprocessor!
configure: WARNING: uuid/uuid.h: proceeding with the compiler's result
こんなのとか出てたから怪しいんだけど、、e2fsprogs-libuuid のインストールは、問題無い感じだった。。
# uname -v
FreeBSD 7.0-RELEASE-p7 #0: Sun Dec 21 08:31:52 UTC 2008
んー、、lighttpd-1.4.20 だと、webdavは、ダメなのかなぁ。。。

2008年9月4日木曜日

Catalyst::Plugin::FormValidator::Simple が、、、

このエントリーをはてなブックマークに追加

Apache/mod_perl2 で、Catalystアプリを動かしていて、、
Catalyst::Plugin::FormValidator::Simple を使ってたら、、messages.yml の設定が反映されなくて困ってて、調べてたら、、、原因を発見して、、落ち込む。。。

FormValidator::Simple は、class変数に messages.yml の設定読み込んでるので、Apacheで複数のCatalystアプリを動かしている状態だと、、messages.ymlの設定が上書きされて、、かなり困る。。。もういいや、lightppd に変更しよう。。

激しくイマサラ.....orz

2008年8月27日水曜日

メニューという都合の良いインタフェース

このエントリーをはてなブックマークに追加

そば屋の味はカレーライスを売り始めた時から下降線をたどる - Life is beautiful

このエントリーを読んでいて、"めちゃめちゃ簡単さ" という事、そして "できるだけメニューの数を増やさずにサービスの価値を高めて行こう" という部分で、ふと思った事が、実は、我々開発者(自分だけかも、、)は、メニューという開発者にとって都合の良いインタフェースに頼っていたのではないかと思った。

メニューを開けば、あらゆる機能にアクセスできる、反面、あらゆる機能がそこに詰め込まれ、ユーザの選択肢を増やしてしまっている。。迷わせる。。
だから、Appleは、メニューに機能追加するのではなく、新しいインタフェースを提供する事で、ユーザに悩ませる事無く、機能追加を実現している。そして、その新しいインタフェースを、如何に自然に操作できるように提供するか、そこが一番の関心事なのだと。
機能追加自体には、何の問題も無いのだけど、その機能を提供する方法に問題があるのだろう。

豊富な機能を提供しても、必要な時に見つからなければ、何の意味も無い事。。逆に言うと、必要な時に必要な機能を提供できる事が一番なわけだから。機能提供にも、一つのシナリオが大事なのかな。ただ、そのシナリオはいろいろだから、時にユーザに不満をもたらす事となる場合もあるのかもしれない。。。
多くのインタフェースは、機能のカテゴライズと、関心事の集約、そして、違う関心事については、それぞれ、デファクト、あるいは、自然にアクセスできるところに配置する事が大事なのかなー。

ふと思ったけど、そうすると、iPhone/iPodtouchのトップ画面にあるアプリケーション群というインタフェースは、なぜ、ただ並べただけのインタフェースにしたのだろう。。。アプリケーションが増えれば増える程、選択肢が増えて、目的のアプリケーションを探すのは、手間にならないのだろうか??んー、でも、それを解決してくれるのが、アイコンなのかもしれないなー。。実際にiPhone持っているわけではないので、そこに不満を感じるかどうかは、わからないけど。。ちょっと、疑問。。