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持っているわけではないので、そこに不満を感じるかどうかは、わからないけど。。ちょっと、疑問。。

2008年8月15日

初めてのRuby - 文字列

文字列は数値の固まりなのか?
irb(main):012:0> str = "Test"
irb(main):013:0> str[0]
=> 84
irb(main):014:0> str[0,1]
=> "T"
irb(main):018:0> str[0].class
=> Fixnum
irb(main):019:0> str.class
=> String
んー、イマイチしっくり来ないなぁ、、。。
str[0]        #=> "T"
str[0].to_i # 84
とかじゃ、ダメなのかなぁ、、。

初めてのRuby - 配列の長さ付き添字と添字代入

Rubyを修得するべく、事始めに、「初めてのRuby」を購入、先日届いたので読み始めたのですが、、若干気持ち悪いところがあったので書いてみる。

1.長さ付き参照
a = [1,2,3,4]
p a[0,2] #=> [1,2,3]
これが気持ち悪い、、というのも、Perlだと
@a = (1,2,3,4);
print @a[0,2]; #=> 13
という事になる。範囲添字というものがあるのに、何故、"長さ付き添字"と"範囲添字"が同じ挙動をする必要があるのじゃろう、、。。0,2って指定してるんだから、0,2の要素が取り出せた方が良いんじゃないかな、、。。指定した要素を取り出す時は、どうするんだろう。。もう少し、読み進めるか。。。

2.添字代入
a = [1,2,3,4]
a[0..2] = "A" #=> ["A",4]
これが気持ち悪い、、ってか、消えちゃうのかよ!!なんで、こんな挙動になるんだ。。。Perlとの挙動が違うので、意図しない間違えが頻発しそうだ。。。ちゃんと把握しとかないと。。。

2008年6月12日

Perlモジュールの依存関係を調べる

依存関係を調べる方法は無いかと探していたら、素晴らしいサイトを発見!!
まさに、それが知りたかったという情報が全て記載されているじゃないですかい!!
こちら↓で紹介されていて、まさにコレを探し求めていた!!
たまには呪文をとなえてみるか:仕事版:[Perl] 依存モジュールをしらべる方法

http://cpandeps.cantrell.org.uk/

いやぁ〜あるところにはあるのですね、しかも、Pure Perlかどうかまで調べてくれるなんて、最高です。それに、CPAN testerのテストが、どれぐらい通っているのかとかも出してくれて、必要なら詳細を見て環境とかも確認できるから、非常に便利、重宝しそうですwww

2008年6月2日

Catalyst::Authentication::Store::DBIx::Classが無い

Catalyst::Plugin::Authentication::Store::DBIx::Class をインストールしようとしたのですが、
>cpan install Catalyst::Plugin::Authentication::Store::DBIx::Class
CPAN: Storable loaded ok
Going to read /home/root/.cpan/Metadata
Database was generated on Mon, 02 Jun 2008 06:06:53 GMT
Warning: Cannot install Catalyst::Plugin::Authentication::Store::DBIx::Class, don't know what it is.
Try the command

i /Catalyst::Plugin::Authentication::Store::DBIx::Class/

to find objects with matching identifiers.
とか言われて、、どうやら、レポジトリに無いもようなので、しかた無く、ソースを落としてきてインストールした。。。

なんで、レポジトリに無いの??日本のあちこちのCPAN Mirrorを探しても無い、、orz
http://search.cpan.org/ には、あるのに、、

【追記】
どうやら、"Catalyst::Plugin::Authentication::Store::DBIx::Class" をインストールするときは、cpan install Catalyst::Authentication::Store::DBIx::Classって指定しなければいけに模様。。。orz
同じ名前にしてよ、、。。

2008年6月1日

MySQL5.0のクエリキャッシュについて->ドン引き

今、Software Design (ソフトウエア デザイン) 2008年 06月号 [雑誌]を読んでいて、衝撃の話しが載っていたので、備忘録として書いておく。。。
MySQL5.0までは、このプリペアードステートメントによって実行したSELECT文は、MySQLが持っているクエリキャッシュにヒットしないという弱点がありました。クエリキャッシュとは、SELECT文の実行結果をキャッシュしておいて、次回以降同じSELECT文が実行されたときに、それを実行せずにキャッシュしてある結果をそのまま返すという機能です。
 テーブルの中身が更新された場合はそのキャッシュが消滅しますが、読み取り主体のテーブルなどに対するアクセスでは非常に高い効果を発揮します。クエリキャッシュを使いたいという理由でプリペアードステートメントを使わないという方もいたと思いますが、MySQL5.1からは機能するようになっています。

〜 SoftwareDesign 2008/06 P131-132 より引用 〜
マジでぇ〜!!ORACLEとかと同じで、効くのかと思ってたよ、、。。今更と思うかもしれないが、、ちゃんと調べておかないと、いけないね、、、orz
うわぁ〜、今まで作ってた物は、全然キャッシュ効いてないって事かぁ、、、orz

2008年5月14日

Bloggerでも、はてブのコメントを表示する

masuidriveさんが、ステキツールを作成してくれたので、例の如く Blogger でも表示したいって事で、付けてみました。
手順としては、masuidrive on rails - ブログにはてブのコメントを表示するhatana_bookmark_anywhere.js を参照して頂くとして、一点だけ Blogger での注意点と、<div id="hatena_bookmark_anywhere" ></div> の設置場所について、私がやった方法を紹介します。

注意点
scriptタグ等の配置の際に、[カスタマイズ]→[レイアウト]→[HTML の編集]へ移動してから、チェックボックス[ウィジットのテンプレートを展開]をチェックしてから編集を行って下さい。

設置場所
各投稿のコメントの下に表示する場合は、<div id='main-wrapper'>の一番下あたりだと、ちょうど良い感じ??でしたので、だいたいの場所は、
  <div id='hatena_bookmark_anywhere'></div>
</div>

<div id='sidebar-wrapper'>
sidebar-wrapper の手前のdivタグが、main-wrapperの終了タグなので、その中に記述。

まったく、競合とか発生してないので、かなり良い感じです!!
masuidriveさん、アリガトウゴザイマス!!

と言っても、このブログに、はてブが、ほとんど付いて無いので、かなり寂しい感じだww

2008年5月5日

メモリ、認識してないじゃん。

FreeBSDインストールして、満足してたのですが、今日ふとメモリを見てたら、4GB乗せたはずなのに、2GBしか認識していなかった事に気づく、、BIOSで認識してたから、、安心してた。。迂闊だ、、。
っで、いろいろ調べてみたのだが、原因も対策もよくわからん、、。
とりあえず、やってみた事。

BIOSで、"Memory Remap Feature" を Enable で、BIOS 4GB認識 FreeBSD 2GB認識
BIOSで、"Memory Remap Feature" を disable で、BIOS 2.8GB認識 FreeBSD 2.8GB認識

とりあえず、BIOSで4GB認識しなきゃ意味ないから、Enableに戻したけど、、。
2GBしか認識されないって、、、。
環境詳細
CPU: Intel Core2 Quad 2.4GHz
メモリ: DIMM DDR2 SDRAM PC2-6400 2GBx2 (サムスン)
マザーボード: ASUS P5B-VM
OS: FreeBSD 7.0-RELEASE
んー、困った、、とりあえず、ここで止まるわけには、いかんので、作業を進めるか、、。

【追記 08/06/06】
インストールイメージの選択が、そもそも間違ってた、、orz
いつもi386使ってたので、何も気にせず使ってたのですが、今回のマシンは、Intel Core 2 Quad、Intel-64アーキテクチャというものなので、amd64版を入れなければいけない、、。。
FreeBSDのREADME.txtに、
AMD64 and Intel EM64T based PC hardware (amd64)
って書いてあった、、orz
amd64版入れたら、普通に4GBメモリ認識しました。。。ちなみに、i386版で、4GB以上認識させるには、kernelオプションで、PAEってのを有効にしてビルドかけないといけないらすぃ。。
※Intel-64は、EM64T base らしい、、詳しくは、Wikipedia@Intel 64 って事らしいです。

2008年3月22日

マシンのセットアップ

若干、前回紹介したスペックとは変わったけど、とりあえず、マシン動いた
Antecすごいね、静かすぎ、、初めて起動したとき、あまりの静かさに、大丈夫か心配なぐらいだったよ、、
外付けのHDDより静かで、かなりの衝撃w
っで、今、BIOSアップデートしてFreeBSD-7-RELEASEをインストールして、いくつかのディレクトリを、ZFSに変えました、、sysinstallは、zfsで構築サポートしてないので、いっかいUFSに構築してから、ZFSに移行した、けっこう、手間取った、、。
Minimalでインストールしたから、これから、いろいろと入れなければ、、しかも、まだネットには繋いでない、というか、ケーブルも無いし、今、Emobileしか入ってないので、自宅ように別途プロバイダ契約して、今日、やっとモデム来たところ、たぶん、今週中には、ネットに繋がる予定、ってか、繋げないとアプリのインストールめんどすぎだし、それまで、待ちだな、、。

2008年3月5日

自宅サーバー設置計画

いいかげん、自宅にサーバー置いて遊びたいよ、、という事で、いろいろ探し始めて、要求的には、常時稼働で静穏で、省スペース、省エネで、それなりに、性能の良いものを、、。っで、いろいろ探した結果、今のところ、こんな感じで行こうかなという、メモ書き的な構成。
ケース: Mini P180 (ガンメタル)
CPU: Core 2 Duo E8200 BOX
マザーボード: ASUS P5B-VM
メモリ: DIMM DDR2 SDRAM PC2-6400 1GB (サムスン)
HDD: IODATA HDI-SA250H7 (250G SATAII300 7200)

メモリは、2GB〜4GBで、HDDは2本を予定、できればミラーしたい、、だいたい8万〜9万円ぐらいかな?でも、ディスプレイとキーボード無いから、買わないと、、。ちなみに、キーボードは、IBM で探してて、トラックポイント付きのテンキーなしが良いかと、、でも、無いんだよなぁ、、探してるけど。。アキバに直接行って探した方が良いかも、、;
っで、OSは、FreeBSD 7.0 RELEASEにして、boot 以外を、ZFSにしようかと、、。
ってか、今まで自分で組み立てしたこと無いのに、いきなり、この構成で大丈夫か、かなり不安です。。
おかしい所とかあったら、ぜひツッコミをお願いします。。。

ケースは、良いもの選んだはずなので、一応、静穏できるはずだけど、、CPUファンとかHDDの回転音が、もしかしたら、ひどいかも、、でも、組んでみない事には、よくわからん、、何せ、初なので。。。

がんばれ俺。

2008年2月7日

Web2.0 が一番必要なところ、、

引用:Web 2.0は危険かも‥
極めて大雑把なガイドラインではあるが、Web2.0を導入するとしたらどの程度の割合が妥当と考えられるかを、ユーザエクスペリエンスのタイプ別に見てみよう。

* 情報発信系/マーケティング系ウェブサイト(企業、行政、非営利団体のサイトなど):10%
* eコマースサイト:20%
* メディアのサイト:30%
* イントラネット:40%
* アプリケーション:50%

アプリケーションで割合が高くなっているのは、ユーザが同じ操作を繰り返すため、リッチなUIの恩恵を受ける可能性が高くなると考えられるからだ。逆に、一般的なウェブサイトでは操作の繰り返しが非常に少ない。GUIを作り込んでショートカットを多用しても、操作が複雑になるばかりで、ユーザにとってはうま味が少ないのである。

ウェブサイトのユーザビリティにとって問題となるのは、ある操作に10秒かかるか、1秒で済むかという話ではない。どんな操作も、ユーザは一度か二度しか行わない。サイトが分かりにくくて思うように操作ができなかったときに失うこととなる5分とか10分が問題なのだ。(そんな経験を一度でもすれば、ユーザはたいていサイトを後にする。ビジネスチャンスが失われるということだ。) 一度限りの操作には、シンプルさが効率よりもずっと重要なのである。

上記の内容に非常に共感した、、イントラネットの業務アプリなど日々の繰り返し操作が非常に頻繁で、時間がお金に直結するような内容こそ、"Web2.0" ここで言うところの、Ajax などによるRIAの構築が急務であると感じている、自分の技術力がもっと高ければ、もっと迅速な開発により効果的な業務アプリケーションを構築できるのだろうと、、、。