2009年1月アーカイブ

今週から徐々に使い始めたInspiron Mini 12の感想。

いいところ
  • 画面が広い
  • キーピッチが広い
  • 軽い
いやなところ
  • HDDアクセスランプがない
  • 英語配列キーボードでも「,」「.」「/」のキーの幅が狭い
  • トラックパッドのボタンが軽い
  • ACアダプタがでかい
  • ACアダプタの接続が横にあるので接続中は幅をとる
  • ディスプレイの方が重いので膝にのっけて使ってるとのけぞることがある

文句の方が多いですが、デバイスとしては概ね満足しています。
Ubuntuのインストールは意外にはまったので、そのうち書きます。

12月の頭に申し込んでクリスマスどころか寒中見舞いになってしまいましたが、ようやく届きました。

  • 12/8 申し込み
  • 12/9 イーモバイル申し込み
  • 12/12 受注
  • 12/24 製造開始
  • 1/10 製造完了
  • 1/13 輸送開始
  • 1/14 受け入れ作業
  • 1/14 出荷
  • 1/15 入手

いやー長かったっす。

で、来たのがこれ。

RIMG0140.JPG

何気に筐体の色を変えてみました。

スペックは
  • Windows XP
  • Atom Z530
  • 60GB HDD
  • 1GB RAM
な感じです。

RIMG0144.JPG

XPのリカバリCDとDrivers and UtilitesディスクとWebCam Central SoftwareのCD-ROMが付いてました。

RIMG0143.JPG

日本語のマニュアルは付いていませんでした。

RIMG0142.JPG

ACアダプタは小さいのですが、このタイプなので場合によっては二口占領するかも。

RIMG0141.JPG

ご覧の通り、テカテカで結構映りこみします。

とにかく軽くて薄いです。キータッチは深さもそこそこありいい感じです。タッチパッドのボタンは少し軽く感じました。

で、Windowsを一回も立ち上げることなくUbuntuインストールしてるとこ。

追記 (2009/1/16) : 何気にjgp.jpをwhoisしてみたら2009/01/15 20:23:49付けで取得されていたので.jpドメインの6クリックドメインは売り切れです。失効を待ちましょう。

唐突ですが、僕の名前は携帯ではとても不便です。

hide

を携帯で入力しようと思うとhとi、dとeがそれぞれ同じキーに配置されているので

4を2回(g->h)
カーソル移動
4を3回(g->h->i)
3を1回(d)
カーソル移動
3を2回(d->e)

計10回もキーを押さなきゃならないわけです。

そんな中、ムームードメインからこんな広告メールが来てました。

今回は、携帯電話から3クリックで入力できる文字列を
現在キャンペーン中の".inドメイン"編でお送りします。

☆┃3┃ク┃リ┃ッ┃ク┃入┃力┃
━┛━┛━┛━┛━┛━┛━┛━┛

携帯電話で3クリック(+.in)で入力することができ
.net .tvでは既に取得されている文字列も
.inドメインならまだまだ取得可能!       (1月13日調べ)
------------------------------------------------------------
[ajw.in] [awj.in] [djw.in] [dmj.in] [dpj.in] [dwm.in]

[gjm.in] [jdg.in] [jdw.in] [jwm.in] [mjg.in] [mwg.in]

[mwj.in] [mwp.in] [pdj.in] [pjt.in] [twj.in] [twm.in]

[wdg.in] [wpd.in] [wgm.in] [wgw.in]
------------------------------------------------------------
携帯サイトを運営予定の方、是非上記文字列をご検討ください。

なるほど。
携帯ならではの発想ですね。

でも.inだったら.inを打つのに5クリック必要で計8クリックだけど、.jpなら最短の6クリックで入力可能です。
で、こんなスクリプト書いて動かしてみました。

#!/usr/bin/perl

use strict;
use warnings;

use Math::Combinatorics;

my @chars = (qw/a d g j m p t w/);
my @domains = map { join '', @$_ } (map { permute(@$_) } combine(3, @chars));
for my $c (@chars) {
    for (my $i = 0; $i <= $#chars; $i++) {
        push @domains, "$c$chars[$i]$c" if $c ne $chars[$i];
    }
}

my (@ok, @fail);
for (@domains) {
    my $domain = "$_.jp";
    my $result = `/usr/bin/whois -h whois.jprs.jp $domain`;
    push @ok,   $domain if $result =~ /No match/;
    push @fail, $domain if $result =~ /Try Aganin/;
    sleep 10;
}

print join("\n", @ok);

結果は2008/1/15時点で何と1件。

jgp.jp

は空いているようですね。

ちなみにjpドメイン以外で携帯で2クリックで打てるccTLDは

ad
ag
ga
am
ma
pa
at
aw
gd
dj
md
dm
td
mg
gm
pg
gp
tg
gt
gw
jm
jp
tj
pm
mp
tm
mt
mw
tp
pt
pw
tw

これだけあります。
面倒なので調べてませんが、組み合わせでは携帯向けの素敵ドメイン名がまだ空いてるかもしれませんね。

ちなみにこんなのもあります。
3文字4文字ドメイン名検索 - !JP 日本レジストリサービス

追記 (2009/02/09):
Using Unicode in Catalyst Applicationsを参考に一部改変しました。

以前、Catalystでマルチバイトを取り扱うときのまとめという記事を書いたのですが、情報が少し古いので、最近僕がやっている方法を紹介します。

この記事では
  • Catalyst 5.7015
  • Catalyst::View::TT 0.27
  • Catalyst::Plugin::ConfigLoader 0.22
  • Catalyst::Plugin::FillInForm 0.10
  • Catalyst::Plugin::Static::Simple 0.20
  • Catalyst::Plugin::Unicode 0.8
の環境で紹介しています。

また、基本的にDBICに関しては以前の記事の通りDBIx::Class::UTF8Columnsを使うという感じです。

追記:
Using Unicode in Catalyst ApplicationsによるとDBDのオプションで指定する方法が紹介されています。ここに補足記事を書きました

まず、こんな感じのアプリケーションを用意します。

MyApp
package MyApp;

use strict;
use warnings;

use Catalyst::Runtime '5.70';

use parent qw/Catalyst/;
use Catalyst qw/
                ConfigLoader
                Static::Simple
                FillInForm
                /;
our $VERSION = '0.01';
__PACKAGE__->config( name => 'MyApp' );
__PACKAGE__->setup();

1;
MyApp::View::TT
package MyApp::View::TT;

use strict;
use base 'Catalyst::View::TT';

__PACKAGE__->config(TEMPLATE_EXTENSION => '.tt');

1;
MyApp::Controller::Root
package MyApp::Controller::Root;

use strict;
use warnings;

use parent 'Catalyst::Controller';

__PACKAGE__->config(namespace => '');

sub index : Path : Args(0) {
    my ($self, $c) = @_;

    my $foo = $c->req->param('foo');
    $c->stash->{foo} = $foo;
    $c->stash->{length} = length $foo;

    $c->stash->{template} = 'index.tt';
    $c->forward($c->view('TT'));
    $c->fillform;
}

1;
root/index.tt
<html>
<body>
<h1>日本語テスト</h1>
<form method="post">
<input type="text" name="foo" />
<input type="submit" name="submit" />
</form>
<hr/>
[% foo %] ([% length %])
</body>
</html>

このまま立ち上げてブラウザでアクセスしても特に文字化けすることはありません。フォームにマルチバイト文字を入力しても化けません。が、$lengthの値が意図しない値になってます。これは、デフォルトではリクエストパラメータにUTF8フラグが立っていないためバイト数になっていることが原因です。

都度decodeしてUTF8フラグを立てるのもいいですが、僕は面倒なのでCatalyst::Plugin::Unicodeを使っています。

MyApp
-- snip --

use Catalyst qw/
                ConfigLoader
                Static::Simple
                FillInForm
                Unicode
                /;

-- snip --

これによって$c->req->paramで取れる値には全てUTF8フラグが立ちます。これでいちいちdecodeする手間が省けて、$c->stash->{length}にも文字数が入るようになりました。が、実行するとわかる通り、フォームにマルチバイト文字を入力すると「日本語テスト」の部分が文字化けします。TTで読み込まれた文字列にはUTF8フラグが立っていないのにUTF8フラグが立っている[% foo %]を評価したためです。

これを回避するために以前ではCatalyst::View::TT::ForceUTF8を使っていましたが、Catalyst::View::TT 0.21からTemplate::Providerをサポートするようになったのでこれを利用します。この設定にはTemplate::Provider::Encodingのインストールが必要です。

MyApp::View::TT
-- snip --

__PACKAGE__->config(
    TEMPLATE_EXTENSION => '.tt',
    DEFAULT_ENCODING   => 'utf8',
    PROVIDERS          => [
        {
            name        => 'Encoding',
            copy_config => [qw(DEFAULT_ENCODING INCLUDE_PATH PRE_CHOMP POST_CHOMP)]
        }
    ],
);

-- snip --

追記:
Using Unicode in Catalyst ApplicationsによるとTTのENCODINGオプションを指定するだけで良いみたいです。seems to be undocumentedとありますが、TTのFAQに書いてありました

__PACKAGE__->config(
    TEMPLATE_EXTENSION => '.tt',
    ENCODING   => 'utf8',
);

これで解消されます。

今度はMyApp::Controller::Rootで明示的に$c->stash->{foo}にマルチバイト文字を指定してみます。

MyApp::Controller::Root
-- snip --

sub index : Path : Args(0) {
    my ($self, $c) = @_;

    my $foo = 'ほげ';
    $c->stash->{foo} = $foo;
    $c->stash->{length} = length $foo;

-- snip --

化けます。

これは
MyApp::Controller::Root
package MyApp::Controller::Root;

use strict;
use warnings;

use utf8;

use parent 'Catalyst::Controller';

-- snip --

これで回避できます。ちなみにこうすることによって

$c->req->params->{foo} = 'ほげ';

のように、Controll内で直接リクエストパラメータを指定してFillInFormしても化けないのでCatalyst::Plugin::FillInForm::ForceUTF8などは必要なくなります。

また、Catalyst::Plugin::ConfigLoaderを使っていてconfigファイルにマルチバイト文字を使用している場合、$c->config->{'bar}で取れる値にはUTF8フラグは立っていないため、TTで表示しようとすると文字化けします。

$c->stash->{'bar'} = $c->config->{bar};

これを回避するにはConfig::Generalベースのconfigの場合は

MyApp
-- snip --

__PACKAGE__->config(
    name => 'MyApp' ,
    'Plugin::ConfigLoader' => {
        driver => {
            'General' => { -UTF8 => 1 },
        }
    },
);

-- snip --

とします。

YAMLベースの場合はYAML::Syck 0.70以上があればYAML::Syck、なければYAMLが使われます。YAML::Syckが入っている場合は

MyApp
-- snip --

$YAML::Syck::ImplicitUnicode = 1;
__PACKAGE__->config( name => 'MyApp' );

-- snip --

とします。

YAML::Syckが入っていなくてYAMLを使う場合は

MyApp
-- snip --

use YAML;

__PACKAGE__->config(
    'name' => 'MyApp',
);
__PACKAGE__->setup();

sub finalize_config {
    my $c = shift;

    my $yaml = YAML::Dump($c->config);
    utf8::decode($yaml);
    $c->config(YAML::Load($yaml));
    $c->next::method(@_);
}

-- snip --

のようにすると文字化けしません。

あけましておめでとうございます。

...といってももう仕事も始まって、いつまでもお正月気分でいられないわけですが、本年もよろしくお願い申し上げます。

というわけで、今年は新しい家族を迎えて新年を迎えることになりました。

2009010318310000

ももちゃんです。よろしくお願いします。

プロフィール

このアーカイブについて

このページには、2009年1月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2008年12月です。

次のアーカイブは2009年2月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。