Catalystプロジェクト作成手順

Catalystはヘルパーが充実しているので使わないと損

プロジェクト作成

Webディレクトリ以下にM,V,Cを纏める

catalyst.pl Sample::Web
cd Sample-Web

コントローラー作成

script/sample_web_create.pl controller hello

ビュー作成(TT or TTSite)

script/sample_web_create.pl view TT TT
script/sample_web_create.pl view TT TTSite

ビュー作成(JSON)

Ajaxのデータ交換にJSONを使う

script/sample_web_create.pl view JSON JSON

モデル作成(DBIC)

mkdir db
sqlite3 db/sample.db < db/schema_sqlite.sql
script/sample_web_create.pl model DB DBIC::Schema Sample::Schema create=static dbi:SQLite:db/sample.db

DBIx::Class::Schema::Loader

小規模のシステムを即席で作る必要が出たので
最近流行のDBIx::Class::Schema::Loaderを使って楽に開発をやろうと思い調査中。


schema_sqlite.sql

CREATE TABLE agent
(
       agent_id INTEGER PRIMARY KEY,
       agent_name VARCHAR(50)
);

---
--- Load some sample data
---
INSERT INTO agent VALUES (0, 'takao0');
INSERT INTO agent VALUES (1, 'takao1');
INSERT INTO agent VALUES (2, 'takao2');
INSERT INTO agent VALUES (3, 'takao3');
INSERT INTO agent VALUES (4, 'takao4');
INSERT INTO agent VALUES (5, 'takao5');
INSERT INTO agent VALUES (6, 'takao6');
INSERT INTO agent VALUES (7, 'takao7');
INSERT INTO agent VALUES (8, 'takao8');
INSERT INTO agent VALUES (9, 'takao9');


test.pl

#!/usr/local/bin/perl
use strict;
use warnings;
use lib 'lib';

# スキーマクラスを use
use Test::SchemaLoader;

# スキーマクラスのインスタンスを作成
my $schema = Test::SchemaLoader->connect('dbi:SQLite:dbname=db/test.db');

# ResultSet を作成し全レコード取得
# resultsetの引数はagentではなくAgentと書く必要がある
# DBIx::Class::Schema::Loaderがテーブルをモジュールに変換するときにTest::SchemaLoader::Agentとしているため
my $rs = $schema->resultset('Agent')->search;

# 件数を出力
warn $rs->count, " rows";

while (my $row = $rs->next) {
	warn sprintf "* %s: %s", $row->agent_id, $row->agent_name; 
}


Test::SchemaLoader.pm

package Test::SchemaLoader;
use strict;
use warnings;

use base qw/DBIx::Class::Schema::Loader/;

__PACKAGE__->loader_options(
	debug => 1,
);

1;


実行。

C:\home\takao\catalyst\test>sqlite3 db\test.db < db\schema_sqlite.sql
C:\home\takao\catalyst\test>set DBIC_TRACE=1
C:\home\takao\catalyst\test>perl test.pl
Test::SchemaLoader::Agent->load_components("Core");
Test::SchemaLoader::Agent->table("agent");
Test::SchemaLoader::Agent->add_columns(
  "agent_id",
  {
    data_type => "INTEGER",
    default_value => undef,
    is_nullable => 1,
    size => undef,
  },
  "agent_name",
  {
    data_type => "VARCHAR",
    default_value => undef,
    is_nullable => 1,
    size => 50,
  },
);
Test::SchemaLoader::Agent->set_primary_key("agent_id");
SELECT COUNT( * ) FROM agent me:
10 rows --- at test.pl line 16.
SELECT me.agent_id, me.agent_name FROM agent me:
* 0: takao0 at test.pl line 20.
* 1: takao1 at test.pl line 20.
* 2: takao2 at test.pl line 20.
* 3: takao3 at test.pl line 20.
* 4: takao4 at test.pl line 20.
* 5: takao5 at test.pl line 20.
* 6: takao6 at test.pl line 20.
* 7: takao7 at test.pl line 20.
* 8: takao8 at test.pl line 20.
* 9: takao9 at test.pl line 20.

Webアクセシビリティ認定アドバイザー資格取得

アクセシビリティユーザビリティには9年近く関わっていて得意分野なので
形にしておこうと思い資格取得しました。


参考書籍は以下のテキストを使いました。


試験は基本的にはテキスト通りに出題されるので
テキストの内容を理解できれば問題なく合格できます。


少し内容が簡単過ぎました。
もう少し難しい資格が欲しいですね。

Informix Dynamic Server V9 System Administrator資格取得

Informixデータベース使用暦7年の知識&技術の証明として
Informix Dynamic Server V9 System Administrator資格を取得しました。


この資格は次の2教科を取得することで認定される資格で、
プロメトリックで受けることができます。

  1. 000-915:System Administration For Informix Dynamic Server V9(日本語)
  2. 000-910:Managing And Optimizing Informix Dynamic Server Databases(日本語)


System Administration For Informix Dynamic Server V9は
2006年夏に取得していたのですが、
もう1教科(000-910)は取得できていなかったので今回挑戦しました。


Managing And Optimizing Informix Dynamic Server Databasesは
試験名通りパフォーマンスチューニング系の問題が多かったですね。
フラグメント(式,ラウンドロビン)やらオプティマイザの制御関係や、
UPDATE STATISTICS関係の問題が多数出ていました。


制約(CONSTRAINTS)も範囲なのですが
普段使わないのでマニュアルで必死に覚えてから挑戦しました。


取り合えず合格してよかった。

SSDによるデータベース高速化

少し前にチューニングしたデータベースで
さらにパフォーマンスアップする必要が出たので
最近流行?のSSDを使ったデータベースの高速化について検討してみたのでメモ。
ここ間違ってない?等フィードバック下さると嬉しい。

現在のサーバー構成

パフォーマンスアップ対象のデータベースサーバーは
データベースファイルをNAS(NFSv3接続)においている。
数TBレベルの比較的大規模なデータベースサーバー。

SSDの特性

リードは早いがライトが遅い

基本的にはエンタープライズ向け製品であればリード/ライトスピード両方ともがHDDより数倍向上するが
一般向け製品の中にはランダムライト速度がHDDより劣る製品もある。
SLCタイプはMLCタイプに比べてライト速度が早いためデータベース用途ではSLCタイプを選択したほうが良い。

書き換え回数に上限がある

ウェアレベリング(書き込み分散化技術)やキャッシュメモリの搭載などの緩和策が取られているSSDを選択したほうが良い

容量あたりの単価がHDDと比較して極めて高価
HDDのような大容量品が少ない


詳しくはwikipediaで確認

SSDインターフェース

大きく分けてSATAタイプとPCIExpressタイプと2種類のタイプが存在する。

SATAタイプ

簡単にHDDの代わりとして活用することができRAIDによる大容量化&冗長化も可能だが、
PCIExpressバスに比べてSATAバスは低スピードのためバススピードがボトルネックになりやすい。
SATA2.6の場合は300MB/sec程度のスピードが出る。

PCIExpressタイプ

PCIExpressタイプは大容量化&冗長化は難しいが、
PCI Express1.1の場合は250MB/sec程度のスピードが出る。
PCI Express1.1 x4の場合は1000MB/sec程度のバススピードが出る。
単純にHDDを置き換えるという使い方は出来ないため利用する際は注意が必要。


HDDとSSDの価格を比較すると同容量で5〜10倍程度の価格差があるため、
現在の数百本あるNASのディスクを全てSSDに変えることは難しい。
またNASのディスクをSSDに変えたところで所詮NFSv3接続のため
ネットワーク&バス側がボトルネックになり応答時間の向上はすぐに限界になる。
今回はPCIExpressのSSDを利用した性能向上にターゲットを絞って検討する事とする。

SSDのレイテンシ

HPのSSDでレイテンシは50マイクロ秒以下となっている。
DDRメモリのレイテンシが約40ナノ秒程度と考えるとメモリの代わりにはならない。
これは今後改善されていくと思われる。

PCIExpressのSSDを使ったデータベースの高速化

PCIExpressタイプのSSDは容量が限られる為
どの領域をSSD上に移すかがパフォーマンスアップの肝となる。


SSDに移行する領域の判断時は以下の3つの点を考慮するとよい。

  • セグメント容量:容量が限られるため少ない容量でいかに高速化するかを考える
  • I/O頻度:アクセス頻度の高い領域を移さないと勿体無い
  • I/O特性:ライトよりリードの多い領域をSSDに移すと効果的
ログ領域

セグメント容量:小さい
I/O頻度:高い
I/O特性:ライトが多い

ログ領域はライトが多いため逆に遅くなる可能性があるが、
HPのSSDはデータ転送速度:Read時 最大700MB/s、Write時 最大600MB/s、
最大100,000 IOPS、遅延約50マイクロ秒のため検証の価値はある。

テンプ領域

セグメント容量:小さい
I/O頻度:高い
I/O特性:リード&ライト

ETLアプリケーションではテンプ領域でソートと集計を行う事が多いので効果的。

インデックス領域

セグメント容量:大きい
I/O頻度:色々
I/O特性:リード&ライト

物理アクセスが多いセグメントのTOP5をSSDに移行するなどが効果的。

データ領域

セグメント容量:非常に大きい
I/O頻度:色々
I/O特性:リード&ライト

物理アクセスが多いセグメントのTOP5をSSDに移行するなどが効果的。

データベースの物理アクセス情報の取り方

OracleだとAWRレポートにあるSegments by Physical Readsが判断の材料になる。
Informixだと以下のサイトのスクリプト等を活用して情報をとるとよい。

PCIExpress SSDのバックアップ方法

データベースファイルレベルのバックアップを行っている場合は
NASのバックアップに合わせてSSD内のファイルもバックアップする必要がある。


データベース静止モードでバックアップをとっている場合は
SSD to NASの場合はデータベース静止時間が長くなるため
PCIExpressのカードを2枚挿し同一筐体内でのSSD to SSDバックアップが現実的と思われる。
(製品によってはカード内部でバックアップ機能?を持つものもあるようだ)


たとえばデータベースのデータファイルをSSD-1とSSD-2に交互に作成し、
お互いファイルを相手のSSDにバックアップするという泥臭い方法も検討。

参考情報

検証にあたって以下のエントリーを参考にさせていただいた。Blog主に感謝。


またOracle OpenWorld Tokyo 2009のDELL社&EMC社のSSDに関するセッションも非常に参考になった。
DELL社から近いうちにOracle&DELL&EMCの検証に関するホワイトペーパーが出るようだ。


EMC社が公開している以下の情報も参考になった。
技術情報を公開してくださっているOracle社&DELL社&EMC社に感謝。

参考:メモリディスクによるデータベース検証

Solarisマシンにて小規模データベースを作り
メモリディスクを使う事によりOLTPの処理時間がどの程度変動するかを確認した。

注意点
  • 古いマシンで検証を行ったためCPUがボトルネックになってた
  • SSDは一般的に書き込みが遅いといわれているのでメモリディスクとは差が出る
  • データ容量はログ領域 < インデックス領域 < データ領域
検証結果
  • ALLローカルディスク:約450秒
  • ALLメモリディスク:約421秒
  • インデックス領域,データ領域をメモリディスク:約426秒
  • インデックス領域をメモリディスク:約437秒
  • ログ領域をメモリディスク:約432秒

男のスーツスタイル基本の「き」

最近ファッション指南が流行っているとのことで
僭越ながら私も男のスーツスタイルについて纏めてみたのでここで公開します。

ビジネスマン5年目になってやっと分かり始めてきた男のスーツスタイル基本の「き」です。
技術と同じで奥が深い世界ですね。

スーツ

スーツの命はラペル!

 ラペルを見れば良い仕立てのスーツか見分けれると言われるほどラペルは重要です。
 スーツの命であるラペルロールを潰さないように収納には注意しましょう。
  ・肩に厚みのあるハンガーを使う
  ・スーツ同士の間隔を空けて収納する

最近の3つボタンの主流は段返り3つボタン

 第1ボタンの下でラペルがロールを描いて反り返る"段返り"タイプが最近の主流です。

ボタンを留める位置

 上着は一番下のボタンを外します。
 ラペルの折り返しが第1ボタンより下で始まる3つボタンの場合は2つ目のボタンだけ留めます。
 ボタン位置はウエストの一番細い部分で留めるのが最適とされています。

座ったときはボタンを外し、立ったときはボタンを留める

 スーツは立った状態で着用しボタンを留めたときに一番綺麗に見えるように作られています。
 イスに座る際はボタンを外してから座るようにするとジャケットにシワが入ったり、着崩れを防ぐことができます。


 また立ったときにボタンを留めないのはだらしなく見え時には礼を顧みない行為とみなされます。
 お客様先では立ったらボタンを留めるようにしましょう。

ポケットに物を入れすぎない

 ポケットが膨らんだスーツはシルエットを崩すのでポケットに入れるものは最低限にする必要があります。
 二つ折りの財布をパンツの後ろポケットに入れるとパンツの形が崩れるので気を使う人はお札を長財布、小銭は別途小銭入れに入れたりします。

パンツの裾のタイプはダブルが一般的

 冠婚葬祭ならシングル、ビジネスではダブルが一般的です。

パンツのプリーツ

 クラシックスタイルなら1か2プリーツ、モードスタイルならノープリーツです。

パンツのクリース

 クリースとはパンツの前面に入れられた縦の折り目の事です。
 消えかかったクリースは品位を損なうので常に美しい折り目を保つようにしないといけません。

スーツはローテーション

 3〜4着のスーツを着まわすのが基本です。
 スーツを休ませずに連日着用すると生地のハリが衰え寿命が縮まります。

体に合うスーツが無いときはオーダー

 イージーオーダーで10万前後、フルオーダーで15万以上です。
 値段は仕立ての良さと生地によって変わります。
 標準体型から外れている体型の場合は仮縫いで体に合わせれるフルオーダーがお勧めです。
 同じ店でオーダーを繰り返すと、より体にフィットした最高の一着に近付きます。

質の良いスーツはクリーニングに注意

 質の良いスーツは体に合わせて立体的に作られます。
 クリーニングに出すときは十分に注意しましょう。

素材はウールが一般的

ドレスシャツ(ワイシャツ)

ワイシャツというのは日本にドレスシャツを広めた大和屋シャツ店の創業者がwhite shirtを聞き間違えたため
ドレスシャツの元は下着のシュミーズ
海外では一般的にドレスシャツ自体が下着なので下に下着は着ない

 日本では高温多湿の気候の関係でドレスシャツの下に下着を身に着けてる人も居ます。
 汗でベチョベチョのドレスシャツは見苦しいというのもありますね。

下着を身に着けるなら透けないようにするのが鉄則

 間違っても柄入りや色付きの下着を着ないようにしましょう。
 透けないタイプのTシャツも発売されています。

ノーネクタイスタイルの時に下着を身に着けるならV or Uネックシャツを着用し見えないようにする
ドレスシャツは下着なのでお客様との会議時は基本的に上着を着る

 といっても高温多湿の日本では常に上着を着てすごすのは現実的ではないので
 普段は上着を脱ぐなど柔軟にしても大丈夫です。

色は白無地か淡細系ブルーがビジネスの定番

 白をベースにしたストライプもお勧め
 クレリックシャツで変化をつけるのもありです。

シャツの袖は1cm出す

 気を付けの姿勢でシャツの袖が見えないと上着がオーバーサイズに見えるので気をつけましょう。

シャツの襟は1.5cm,2cm出す

 襟と袖の2つの部分をのぞかせる事でバランス良く見えます。

体に合うシャツが無いときはオーダー

 1万5000円〜4万円程度でオーダーできます。
 スーツと同じく生地によって値段が大きく変わります。

素材はコットンが一般的

スリーピーススーツ

スリーピースの場合は上着のボタンを留めなくてもOK

 スリーピーススーツの場合は上着のボタンを留めなくても失礼にはあたりません。
 外しているほうがベストを綺麗に見せることができるので良いです。

スリーピースのベストはスーツと同じで一番下のボタンは外すのがルール

ネクタイ

ベルトのバックルに少しかかるぐらいがベストな位置
ネクタイは小紋柄、ドット柄(水玉)、ソリッド(無地)が基本

 ストライプ(レジメンタル)は英国の艦隊旗に由来し、
 特定の団体や大学に属する象徴となっているため
 国際舞台では身に着けないほうが無難です。

素材はシルクが一般的

靴下(ホーズ)

靴 or スーツの色に合わせるのが基本

 客先で靴を脱いでスリッパに履き替える可能性があるので
 スーツの色に合わせるほうが無難ですね。

比較的薄めで透けないものを選ぶ
スーツスタイルに白の靴下はタブー

 白はスポーツソックスです。スーツには絶対にあわせません。
 これしてしまうと"恥"ですので気をつけましょう。
 ただお茶会などで白足袋の代わりに白の靴下を使う場合もあります。

すねの地肌が見えるのはスーツスタイルではタブー

 十分な長さのビジネスソックス選びを心がけましょう

ベルト

革製品の中ではベルトは一番濃い色にする

 明るい色が体の中心に来ると色彩バランスが崩れやすいので
 ベルトを一番濃い色にするとうまくまとまります。

ベルト穴の中央でとまる長さに合わせる

 5穴のときは真ん中の3穴で合わせると良いです。

スーツより濃い色を履く

 足元が引き締まります

革靴のフォーマル度(世界共通)

 フォーマル度の高いもの順にカジュアル系へ
  ストレートチップ
  プレーントウ
  キャップトウメダリオン
  ウイングチップ
  モンクストラップ
  Uチップ
  ローファー
 ローファーはカジュアル系になるので
 スーツスタイルでは止めとくほうが無難です。

靴はメンテナンスをしっかりと

 靴を見ればその人の事が分かるとまでも言われたりします。
 綺麗な服を着ても靴が汚れてボロボロだと意味がありません。
 メンテナンスはしっかりしましょう。

靴購入時は十分にフィッティングを

 足のサイズは1日でも微妙に変化します。
 夕方が一番足が大きくなる時間なので午後5時以降フィッティングするとベストです。
 フィッティング時はプロに十分な時間をかけて見てもらいましょう。

靴はローテーション

 革は汗や湿気などで湿った状態になると弱くなります。
 3足以上でローテーションがベストです。
 通勤時しか履かないのであれば2足ローテーションでもいいでしょう。

ポイント

革小物の色は揃えるのが基本

 靴,ベルト,時計,名刺入れ,財布など色は出来るだけ揃えましょう。

金具の系統をそろえる

 カジュアルスタイルでも基本ですが
 ゴールド系、シルバー系など金具の系統をそろえると
 ちぐはぐな印象になりません。

シャツとネクタイは3色以内におさえる

 シャツとネクタイの色を合わせて3色以内にするとバランスが良くなります

ストライプのスーツ・シャツ・ネクタイ等を合わせるときは幅を変える

 ストライプの幅を変える事でバランス良く見えます。

お金をかけるポイント

 スーツ数十万、シャツ数万、靴数万とスーツスタイルを徹底すると高くなります。
 予算が限られる場合はまず靴にお金をかけましょう。
 靴=>ネクタイ=>シャツ=>スーツにお金をかけるのがベストです。

  「クラシックで上質な靴とネクタイは、スーツが上質でもそうでなくても、
   スーツスタイルを際立たせる。
   逆に靴とネクタイが貧相であれば、それが例え注文服であっても、
   全体の印象は驚くほどみすぼらしくなる」落合正勝氏

参考書籍

スーツスタイルに関する定番本です。

[新版]男の服装術 スーツの着こなしから靴の手入れまで

[新版]男の服装術 スーツの着こなしから靴の手入れまで

iPhoneを1日触った感想

16GBブラックを買ったのですが噂どおり指紋付き捲りです。
指紋が気になるひとはホワイトを買うといいでしょう。


ソフトバンクの3Gネットワーク回線スピードは
私の自宅近辺だと0.23Mbpsと少し低速です。
電波のよいところにいっても0.35Mbps程度ですね。
これは少し気に食わない結果です。速度制限かけてる感じがしますね。


GPSは屋内だと位置情報を取得できませんでした。
車で走りながらカーナビ代わりに使えるかやってみましたが、
誤差数メートル程度で中々の精度です。


文字入力はやはり既存の携帯電話より劣ってる感はあります。
メール打ち捲くる人にとっては現状は不満だと思います。
まあこれは今後改善されるでしょう。


標準のYouTubeWi-Fiで接続すると高画質ですが
3Gで接続すると画質落とされてしまいイマイチです。
これは正直画質を落としすぎです。。
YouTubeの初期ページさえも遅いのは改善の余地ありですね。


今回AppleはAppStoreというアプリケーション提供のサービスを展開しています。
ここでリリースされているアプリを見てみると小規模のアプリが多いです。
無償のアプリが多いですが有償のアプリでも価格は100円〜2000円程度と比較的安価です。


今日使って高い可能性を秘めたガジェットであることは確信できました。
このiPhoneの潜在能力が発揮されるかは
これから発売されるアプリ&アイデア次第ですね。