Eee PC 701ネタ2007年07月15日 15時38分24秒

レビュー記事がでている

ちょっと前だが、NotebookReview.comがAsusで実際にEee PC 701を触ったレビューを載せていた。 スペックは以下のものらしい。

  • ディスプレイ: 7吋ディスプレイ
  • CPU: i910チップセット、Pen-M 900MHz(Dothanコア)
  • メモリ: 512MB
  • OS: AsusカスタマイズのLinux
  • ストレージ: 8GBまたは16GBのフラッシュドライブ
  • バッテリ: 3時間(4セル)
  • 外寸: 226.06mm x 165.1mm x 20.8-34.8mm (幅 x 奥行 x 厚さ)
  • 重量: 2ポンド(約900グラム)
  • その他
    • 30万画素のWebcam
    • 3ポート USB
    • VGA出力
    • SDカードリーダー
    • モデム
    • Ethernet
    • ヘッドフォン出力
    • マイク入力
ディスプレイの画素数は明記されていないが、おそらくこちらの記事推定800x480ドットから大きく外れてはいなそう。

目新しそうな話として、起動が10秒、終了が5秒だそうな。このくらいならこまめに起動→作業→終了があまり苦にならなそうだ。

$199はなくなった?

英語が弱いdara-jとしてはかなり自信がないが、どうも価格は$250に底上げされるっぽい。というのも、スペック表のところでストレージが8GB or 16GBとなっていて、Intel基調講演時に$199としてあげられていた2Gバージョンが載せられていない。まぁ$250でも安いっちゃ安いんだけど、気持ち的に$200以下よりはちょっとうーん..となるなぁ。

ちなみに発売は8月下旬を見てるみたい。

関連記事

小型PCとトースターと弁当箱2007年07月15日 15時52分52秒

Dellから小型PC

デルからMini-ITX採用のデスクトップPC、中国向け - Engadget Japanese

CPUはインテル205 (Celeron M)、チップセットはSiSM661GX、メモリ256MB / 512MB、HDD 40GB / 80GB、CDまたはDVD-ROMドライブ。OSは"正版" XP Home。
というスペックであまり魅力もない上、価格は米ドルで$340くらい。と価格的にもなんだかなぁ。といった按配だが、まぁ小さいのでとりあえず注目してみたり。日本ででるかはわからんけどね。

トースター、ほすぃ

トースター型と弁当箱型PCがデモ、クアッドコア対応予告も: AKIBA PC Hotline!

ツクモケース王国でトースターを筐体にしたPCの展示してるそうな。

市販されている家庭用トースターから部品を取り出し、代わりにC3 600MHz搭載Mini-ITXマザーボードや2.5インチHDD、電源基板を収納して、PCに仕立てている。
ということで1品もののカスタマイズだが、なんだかむやみにそそる
なお、当初はパンのスロットから光学ドライブや液晶パネルが飛び出るようにする予定だったが、実現できなかったとのこと。
残念。

もう一方の記事はT-ZONE PC DIY SHOPで、

3段重ねの重箱を筐体に用い、最上段にNano-ITXマザーボード「EPIA-N8000E」を、中段に2.5インチHDDと電源基板を収納している。
というシロモノ。正直、ぱっと見は興味なかった(トースターの輝きには敵うまい)が、
最下段は空になっており、同店は冗談半分に「弁当を入れることができ、PCの熱による保温効果?もある」とも。
にはグラっときた。これで毎日あたたかい昼飯にありつけるのか!?

ミニチュアネタ2本2007年07月15日 16時17分14秒

楽器のミニチュア(ただし紙)

ボール紙で作られた、レトロ・オーディオ機器のミニチュア : Gizmodo Japan(ギズモード・ジャパン)

こりゃ可愛い!しかもよくできてるし。この記事の写真だとスケールがイマイチわかんないけど、ネタ元には手がいっしょに写ってる写真もあるので「あぁ、小さいのだなぁ」と思う。いや、色味がよいね。

小さい自転車

「1/8」に敏感な人へ贈る、高品位ミニチュア自転車 : Gizmodo Japan(ギズモード・ジャパン)

続けてGizmodoより。記事が熱いなぁ。自転車だけに、曽田正人並に熱い。

正直、dara-jは自転車にとんと興味がないが、写真見ただけでデキのよさはよくわかる。1/8スケールなので「アレとあわせるのか?」などと考えていたら、

もちろん22cmクラスのアクションフィギュアとの相性もよしだ!
って、モロにココの「RAH220」を想像してますね?

マイヨ・グランペールを着たバッタ男かぁ、見てみたいなぁ

蛇足:dara-j的にはMEDICOMよりもこちらのシリーズのほうが好み。プロポーションが圧倒的によい。

Zend Frameworkのソースを読んで思ったこと2007年07月15日 18時26分38秒

まぁ、この辺りはPHPな方々には当たり前チックな話かもしらんが、Zend Frameworkのソースを読んだりしてて感心したのでいくつかメモをば。

メソッドチェーン

Zend_Db_Selectのように、実行前にいくつものパラメータを与える必要があるオブジェクトはパラメータを設定するメソッドの戻り値がオブジェクト自身になっていて、メソッドチェーン(Zendは「流暢なインターフェイス」とか言ってるみたいだが)を利用できる。jQueryっぽく合理的だ。

以下はちょっとしたサンプル。Zend_Db_Selectはfrom()、join()、where()など、SQLの句に相当するメソッドを使ってSELECTクエリを構築するオブジェクト。これを使って、「SELECT id FROM bookmarks WHERE id < 100」を作る場合は、

// $db は接続済みのZend_Db_Adapter
$select = $db->select();

// メソッドチェーンでクエリを構築
$select->from( 'bookmarks' )
	->where( 'id < 100' );

こんな感じ。まぁこの程度は普通に
$db->query( 'SELECT id FROM bookmarks WHERE id < 100' );
でいいんだけども。

アクセッサメソッドが楽しくなった

割とMS系の言語に慣れているので、クラスのフィールドへアクセスするのにアクセッサメソッド(getter/setter)を使うのはちょっと抵抗があった。だってプロパティ表記のがシンプルじゃん。ま、使うしかないんだけどもね。

なんだけども、setterを「流暢なインターフェイス」にすることで、プロパティアクセスよりも使い勝手がよくなるってことをZFが教えてくれた。

例えばZend_Auth_Adapter_DbTable。このクラスはZend_Authによる認証処理のバックエンドにデータベース使用するためのアダプタなのだが、使用するにあたり「認証テーブルのテーブル名」「IDのカラム名」「パスワードのカラム名」を設定してやる必要がある。これをそれぞれ「setTableName(string $tableName)」「setIdentityColumn(string $identityColumn)」「setCredentialColumn(string $credentialColumn)」を使って設定するのだが、これらはメソッドチェーンで使用できる。

// Zend_Auth_Adapter_DbTableはDB接続するので
// Zend_Db_Adapterを必要とする。
// $dbはZend_Db_Adapter。
$auth_adapter = new Zend_Auth_Adapter_DbTable( $db );

// テーブル名、IDカラム、パスワードカラムを順次割り当てる
$auth_adapter->setTableName( 'accounts' )
	->setIdentityColumn( 'login_id' )
	->setCredentialColumn( 'password' );

てな具合。いや、コンストラクタで一気に指定できるんだけどね、本当は。ちょっと他にいい「set~」系のクラスが思いつかなかったもんで。

でも、これって言語に依存しないから、C#なんかでもこういう設計にするのもアリかも。

コンストラクタ引数の処理のアイディア

例えばコンストラクタにいろいろパラメータを設定しなきゃなんない場合に、仮引数を延々とたくさん並べてあると結構うんざりな感じになる(まぁ意味的には厳密なのでそのほうがよいのかも知らんけど)んだけども、prototype.jsのAjax.Requestなんかは第二引数に「options」という無名オブジェクトを受け取る仕様にして「だらだらとした仮引数」を回避している。

ZFのソースを見ていても、いくつかこういったパターンを使用しているのだが、ここでちょっとした工夫をしていた。

どういうことかというと、パラメータリストに相当する連想配列のキーをあらかじめconstで宣言しているのだ。

基本抽象クラスZend_Db_Table_Abstractのソースより一部抜粋。

/**
 * Class for SQL table interface.
 *
 * @category   Zend
 * @package    Zend_Db
 * @subpackage Table
 * @copyright  Copyright (c) 2005-2007 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
abstract class Zend_Db_Table_Abstract
{

	const ADAPTER          = 'db';
	const SCHEMA           = 'schema';
	const NAME             = 'name';
	const PRIMARY          = 'primary';
	// 中略
	
	// コンストラクタ
	public function __construct($config = array())
	{
		/**
		 * Allow a scalar argument to be the Adapter object or Registry key.
		 */
		if (!is_array($config)) {
			$config = array(self::ADAPTER => $config);
		}

		foreach ($config as $key => $value) {
			switch ($key) {
				case self::ADAPTER:
					$this->_setAdapter($value);
					break;
				case self::SCHEMA:
					$this->_schema = (string) $value;
					break;
				case self::NAME:
					$this->_name = (string) $value;
					break;
				case self::PRIMARY:
					$this->_primary = (array) $value;
					break;

				// 中略

	            default:
					// ignore unrecognized configuration directive
					break;
			}
		}

		$this->_setup();
	}
	// 中略
}
といった具合に、連想配列のキーと付き合わせるものをあらかじめconstにしておくことで、マッチングミスを軽減しているようなのだ。

当然、呼び出し側でもパラメータを設定するのに

$config = array(
	Zend_Db_Table_Abstract::ADAPTER => $db,
	Zend_Db_Table_Abstract::NAME => 'bookmarks',
	// (略
);
といった具合にconstを使用することができる。こうすることで、
  • キー名をタイプミスを呼び出し時ではなくコンパイル時に発見できる
  • (PDTのように)コード補完機能があるエディタ上でミスなく指定できる
というメリットを作り出している。まぁ、アプローチとしてはすごくまっとうでわかりやすいので、dara-jがアタマわるいだけという話もあるが、結構目からウロコが落ちたり落ちなかったり。JSでも使えそうだな。

まとめ

jQueryですでに実現されているけど、メソッドチェーンは思いのほか気持ちよく使える上、大体の言語で(是非はあると思うが)そのまま応用が効くので個人的には積極的に採用していこうかな、と。

全部入りポータブルデバイス2007年07月15日 19時27分34秒

全部入り

めったやたらと機能を詰め込むデバイスにUSB接続のメモリカードリーダーがある。例えば27+1種類とか31種類とか33種類とか。もうわけわかりません

ところがこちらのデバイス、もっと節操ありません。(というか比べるものじゃないんだが)

PMP / console emulator breaks a whole bunch of laws - Engadget

「Portable Media Player」('r'が抜けてました。ハヅカシ...:07.07.15 20:34)。ヒネリありません。まんまです。 機能的にはなんと形容していいかわからんシロモノですが、記事からわかるスペックは

  • エミュレータ機能
    • NES(ファ●コン)
    • SNES(スーパーファミ●ン)
    • Sega MD(●ガドライブ)
    • SMC(●ガ マス●ーシステム)
  • 動画
    • AVI
    • MPEG-4
    • DivX
    • XviD
  • オーディオ
    • MP3
    • WMA
    • FLAC playback(←ってなに?)
  • 1.3MピクセルのMPEG-4カメラ内蔵
  • MP3 ボイスレコーダー
  • E-Bookリーダー(←ってなんの規格のやつだ?)
  • 4GB以上のSDカードサポート(←SDHC?)
といった具合に無駄に豪華絢爛なカタログスペック。

「中華圏」ということ以外、どこで作ってるのかわからん全部入りデバイスですが、興味がある方はこちらのサイトで購入できます。わずか$109.68で。