Let’s note J9の店頭モデルとマイレッツ倶楽部

SSDに換装してWindows7まで入れたLet’s note R5が、仕事で使うには遅すぎて遅すぎて耐えきれなくなったので、Let’s note J9を購入しました。Sandy Bridge搭載のLet’s noteとか待ちたかったけど、やむなし。

J9は店頭モデルとパナソニックの直販モデル(マイレッツ倶楽部)があるのですが、迷った末に店頭モデル購入。なにせ店頭モデルは10万を切る値段で、直販モデルは30万前後とかなり差があるので…

この店頭モデルと直販モデルの性能差を、あまり手間もかけずに縮めようとするのが今回の趣旨です。

とりあえず本体はPCボンバーの通販にて86,879円でした。Let’s note J9 CF-J9NYABHR シフォンホワイト。Amazonだと95000円くらいですか。

プレミアムエディションと店頭モデルの比較表をエントリの下の方に載せておくので参考までに。

CPUが上記モデルではCore i3 370M(2.40GHz)、直販のプレミアムエディションモデルだとCore i7 640M(2.80GHz)なのですが、これはまぁ、埋められません。でも経験上アーキテクチャが同じなら差は驚くほどは体感を得られないので、別にいいと思います。

必須なのはSSDです。J9では換装がすごくやりやすくなったので、おすすめです。体感速度が全然違う上に、振動にも強くなります。SSDは256GBにすると2011年1月現在で5万円前後というところでしょうか。120GBなら安心のIntel製でも2万円くらいで買えます。

あと、メモリですが、プレミアムエディションモデルでは元々4GBが載っているので、増設して8GBまで増やせますが、店頭モデルでは2GBなので増やせても6GBまでということになります。

自分の用途はChromeのタブを100個くらい開いてVisual StudioやEclipseでプログラムを書くのがメインなので、4GBくらいは必要なラインです。6GBあれば安心です。4GBの追加メモリモジュールも大抵5000円もしないので上限まで入れておけばいいと思います。

6GBのメモリを使うとなると、店頭モデルに標準でインストールされているWindows7は32bit版なので、上限的につらいところです。が、最近のLet’s noteではOSの32bitと64bitをBIOSメニューから簡単に切り替えができます。まぁ、切り替えというかBIOSメニューからリカバリーをする時にインストールするOSを32bitにするか64bitにするかを選択できるということなのですが。

SSDに入れ替える前にリカバリーディスクを作成して、復元領域をバックアップするのですが、その時OSが64bitでも、復元時には購入時に入っていたOSと同じになります。64bitにしてからリカバリーディスクを作れば後の手間がなくていいかと思ったのですが、単純に二度手間になるだけなので、64bit切り替えはSSDへのリカバリー後にやりましょう。

リカバリーディスクの作成にはDVD-Rドライブが必要になります。Let’s noteのマニュアルでおすすめされているのはBUFFALOのポータブルDVDドライブです。

個人的にはスロットインタイプが好きなので、以下のようなものを使ってます。

Windowsのプログラムから「リカバリーディスク作成ユーティリティ」を選択して、空のDVD-Rメディアをドライブに入れて実行するだけです。一層のディスクなら、2枚必要になります。「取扱説明書 準備と設定ガイド」にリカバリーディスクの作成について詳しく書いてあるので、そちらも参照してください。

SSDの換装は、こちらのブログが写真付きでわかりやすく解説されています。

Panasonic CF-J9のHDD を換装する | ゆめとちぼーとげんじつと

メモリの増設はこちらで。

レッツノート J9 メモリ増設 – satoweb_log

SSDを入れ替えたあと、リカバリーディスクを使ってSSD上にリカバリー領域を復元します。リカバリー領域を復元後に電源を再度入れると、セットアップが開始します。セットアップをしてもそのあとにWindowsを入れ直すことになるので、復元後、そのままBIOSメニューを開いて再インストールへと進むのが良いかと思います。

64bitへの切り替え方はマニュアルに書いてあります。Windows起動前にBIOSメニューを表示して、工場出荷時の状態に戻す途中で、32bitにするか64bitにするか聞かれるので、64bitを選択するだけでOKです。

ここまですれば、安い店頭モデルでもかなり快適になると思います。まぁ、実際そこまでしなくてもかなり快適ですが。

プレミアムエディションモデルと店頭モデルの抜粋した比較表は以下になります。bluetoothのモジュールの値段なんて大した額ではないでしょうから、ほぼCPUとSSD代とバッテリーパック代、OFFICE代、FOMA代ということになるでしょうか。OSの差額もありますが。

総額 86,879円+19,950円+4,476円=111,305円になりました。

ちなみにバッテリーパック(L)はこちら。

標準バッテリーパック CF-VZSU68JS 商品概要 | パソコン | Panasonic

直販よりはAmazonの方が3000円ほど安いですね。価格.comで見る限りだと20,129円くらいからあるようです。

品番 CF-J9LV4ADP(ワイヤレスWANモデル) CF-J9NYABHR
インストールOS Windows® 7 Professional 64ビット 正規版 (日本語版) (Windows XP Mode 搭載) Windows® 7 Home Premium 32ビット 正規版 (日本語版)
CPU インテル® CoreTM i7-640M プロセッサー インテル® Core™ i3-370M プロセッサー
(スマートキャッシュ 4MB、 動作周波数 2.80 GHz、ターボ・ブースト・テクノロジー利用時は最大3.46GHz) (インテル®スマートキャッシュ 3 MB、動作周波数 2.40 GHz)
チップセット モバイル インテル® HM55 Express チップセット
メインメモリー 標準4GB(オンボード) / 最大8GB(DDR3 SDRAM) 空きスロット1 標準2GB DDR3 SDRAM (最大6GB)、空きスロット1
ビデオメモリー 最大1696 MB(メインメモリーと共用) 最大763MB/2GBまたは4GBのメモリー増設時 最大1563MB(Windows 7[32ビット]の場合)(メインメモリーと共用)
グラフィックアクセラレーター インテル® HD グラフィックス搭載 (インテル® CoreTM i7-640M プロセッサーに内蔵) インテル® HD グラフィックス (インテル® Core™ i3-370M プロセッサーに内蔵)
HDD/SSD SSD256GB (Serial ATA) 160 GB HDD (Serial ATA、5400回転/分 2.5型HDD)
無線LAN/WiMAX インテル® Centrino® Advanced-N + WiMAX 6250
WiMAX: IEEE802.16e-2005 準拠(受信最大20Mbps:送信最大6Mbps)
無線LAN : IEEE802.11a(W52/W53/W56)/b/g/n 準拠 (WPA2-AES/TKIP対応、Wi-Fi準拠)
ワイヤレスWAN ワイヤレスWANモジュール内蔵(FOMA®HIGH-SPEED対応)(受信最大7.2Mbps:送信最大5.7Mbps) なし
Bluetooth Ver.2.1 +EDR/Class 2 なし
LAN 1000BASE-T/100BASE-TX/10BASE-T
ExpressCardスロット 搭載されていません
SDメモリー SDメモリーカード×1スロット (SDHCメモリーカード/SDXCメモリーカード対応 / 著作権保護技術対応)
拡張メモリースロット DDR3 204ピン SO-DIMM専用スロット×1(1.5V/PC3-6400/DDR3 SDRAM)
インターフェース USBポート×3(USB2.0)、LANコネクター(RJ-45)、外部ディスプレイコネクター(アナログRGB ミニDsub 15ピン)、HDMI出力端子、FOMAカードスロット USBポート×3(USB2.0)、LANコネクター(RJ-45)、外部ディスプレイコネクター(アナログRGB ミニD-sub 15ピン)、HDMI出力端子
バッテリー駆動時間 バッテリー(S)使用時:約6.5時間 約7.5時間
バッテリー(L)使用時:約9.5時間 約11時間(別売バッテリーパック[L]使用時)


Eclipse 3.6(Helios)でAndroid SDKのコード補完が遅い問題

Android開発時に、コード補完が死ぬほど遅い問題の解決方法をまとめておきます。

参考にしたのは以下。

つまりはソースコードをダウンロードして展開しておけばいいということですね。

2.2(froyo)の場合

http://android.git.kernel.org/?p=platform/frameworks/base.git;a=snapshot;h=froyo;sf=tgz

base-froyo-73e150c.tar.gz、107MBでダウンロードは10分ほどでした。

展開すると、pax_global_headerというファイルとbase-froyo-73e150cというディレクトリができるので、base-froyo-73e150cをsoucesに名前変更して、

android-sdk-windows\platforms\android-8

の下に移動して完了。

2.1(eclair)の場合はダウンロードURLのh=froyoをh=eclairに変更して、展開先をandroid-7\sourcesにすればOK。

展開すればEclipse再起動しなくても有効になります。


A cache key must contain both a module and an action parameter

Symfony 1.4にて、Flash上のリンクからページにリンクをしたところ、500エラーが発生。

A cache key must contain both a module and an action parameter

同じURLをそのまま別のウィンドウで開くと問題なく開けるので、リクエストを見比べたところ、違いはrefererの有無だけ。

エラーはinclude_partialの先で起きていて、調べていくと、パラメータを渡さないpartialに、config/cache.ymlでcontextual: trueとしていたのが問題でした。

falseにして解決。

ちなみにこのException自体も、本来は404を出すはずのところらしいです。

あと、キャッシュ有効にしないとこのエラーは出ません。


Ubuntu 10.10 (Maverick Meerkat) ServerにJDK6をインストールする

今回の情報元。
How to install Sun JDK on Ubuntu 10.10 "Maverick meerkat"? – Stack Overflow

まずはaptラインの設定。

# vi /etc/apt/source.list

末尾に

deb http://archive.canonical.com/ubuntu maverick partner
deb-src http://archive.canonical.com/ubuntu maverick partner

を追加。

# aptitude update
# aptitude install sun-java6-jdk

で、OK。


jarファイルをEXEにする

Javaのアーカイブ形式であるjarファイルを、そのままでは使いにくいのでEXEの実行形式にしたいと思います。

IKVM.NETを利用すると.NET対応のDLLやEXEに変換できます。実際には.NET上のJavaランタイムで実行するだけのようですが、.NET対応にしておいた方が、個人的には色々と便利です。

IKVM.NET

まずはEXEにしてみます。上記サイトからダウンロードしたikvmを解凍して、コマンドラインから、ikvmcを実行するだけです。

ニコニコ動画の動画ファイルをローカルにキャッシュするプロクシで有名な、NicoCacheをEXE化します。

cd ikvm-0.44.0.5
bin\ikvmc -target:exe NicoCache.jar

で、NicoCache.exeができあがります。EXEを別の場所に移す時は、binディレクトリの他のDLLも一緒にコピーする必要があるので注意。

ついでにDLL化も同じ要領でできます。

bin\ikvmc -target:library NicoCache.jar

DLL化しておけば、.NETのプログラムから扱いやすくなりますね。という前フリ。

ちなみにikvmcのその他のオプションはこちら。

SourceForge.net: Ikvmc – ikvm


IP電話とUPnPとWZR-HP-G300NHの話

OCNのドットフォンを申し込んだので、さっそくセットアップ。

回線契約はフレッツネクスト。OCNドットフォン光を申し込むと送られてくる、VE-TA10という機器を使います。

すでに家の中にWZR-HP-G300NHでLANが構築されているので、スループットが不安なVE-TA10をルータモードにせずに、現状のWZR-HP-G300NH配下にVE-TA10を、アダプタモードとして接続しています。

配線構成図は以下のページのまま。

VE-TA10|IP電話の設定追加|OCN

で、電話機から自分の電話番号と市外局番を指定すれば良いだけなのですが、いくら設定しても、VE-TA10の「050IP電話」のLEDが点灯しません。消灯状態です。ちなみに設定方法は以下。

VE-TA10|IP電話の初期設定|OCN

「050IP電話」が有効にならない理由は、UPnPが利用できないから、ということらしいです。

UPnPが有効かどうかを簡単に調べるには、Windows Live Messengerを使って調べられます。メニューのツールから、オプションを開いて、接続ページの状況というところに、「非 UPnP ポート制限付きNAT(restricted)を経由してインターネットに接続しています。」と表示されていたら、UPnPが有効になっていません。メニューのツールが見つけられない場合は、Altキーを押すことでメニューが表示されます。

ちなみにUPnP調査ツールみたいなものは他にも色々あるとは思います。

で、UPnPは有効にしているはずなので、改めてWZR-HP-G300NHの設定画面で、UPnPの状態を確認してみると、確かに「UPnP機能」を「使用する」にチェックが入っています。設定メニューは、「ゲーム&アプリ」から、「UPnP」を選択すると表示されます。

で、先ほどのLive Messengerの状態から見るに、UPnPが有効ではないという状況のようです。調べてみると、このWZR-HP-G300NHというルータでは、UPnPを使用する設定にしてあっても、機能が無効になることがあるとのこと。

あれもこれも興味ありますねん!

上記のページの手順に従って、「UPnP機能」の「使用する」を一度チェックを外す。「設定」ボタンを押す→10秒ほど待機→もう一度チェックを入れる→12秒ほど待機、で見事につながるようになりました。Live Messengerの接続状況(一度Live Messengerを終了する必要があります)を確認すると、UPnPを利用して接続できている旨に、表示内容が変わります。

これで、IP電話も正常に接続できるようになりました。

ちなみにルータのファームウェアは1.74。2010年10月時点で最新です。もう更新されないんだろうなぁ…WZR-HP-G300NHは色々不安定です。無線など特に。注意しましょう。


symfonyで携帯端末用のテンプレート切り替えを実装する

symfony 1.4で、PCサイトの携帯版を作ることになりました。

アクションは共通にして、テンプレートのファイル名を、携帯とPCで切り分けるようにしたいと思います。

例:
templates/indexSuccess.php (PC用)
templates/indexSuccess.mobile.php (携帯用)

で、これはフォーマットを指定することで実現できます。フォーマットに関してはJobeetを参照。

Practical symfony | 15日目: Web サービス | symfony | Web PHP Framework

まずは携帯キャリアのIPから高速にキャリア判定をしてくれるプラグインを準備しておきます。

sfMobileIPPluginをsymfony 1.4で使ってみた

次にフィルタを用意します。

app/frontend/lib/filter/myMobileLayoutFilter.class.php

<?php

class myMobileLayoutFilter extends sfFilter
{
    public function execute($filterChain)
    {
        if ($this->isFirstCall()) {
            
            if (sfMobileIP::carrier() != 'pc') {
                $request = $this->getContext()->getRequest();
                $request->setRequestFormat('mobile');
            }
            
        }

        $filterChain->execute();
    }
}

最後にfilters.ymlを編集すればOKです。

app/frontend/config/filters.yml

rendering: ~
security:  ~

myMobileLayoutFilter:
  class: myMobileLayoutFilter

cache:     ~
execution: ~

layoutのテンプレートも携帯版を用意しておきます。

例:

app/frontend/templates/layout.php (PC用)

app/frontend/templates/layout.mobile.php (携帯用)

注意点として、partialなども全部「.mobile.php」の形式のファイルがないと動作しません。どこかでファイルを作り忘れるとsfRenderExceptionが投げられるので注意してください。ちなみに、dev環境だとそのまま真っ白な画面になってしまって、原因追求がしにくいようです。

その場合は、ログファイルにてチェックしましょう。

log/frontend_dev.log

symfony [err] {sfRenderException} The template "indexSuccess.mobile.php" does not exist or is unreadable in "".


Visual Studio 2005をWindows 7で使う

インストール自体は普通にできます。

インストール後、以下の2つのファイルを順番にインストールします。
SP1の方は431MBほどあるので注意。

ダウンロードの詳細 : Visual StudioR 2005 Team Suite SP1
ダウンロードの詳細 : VS2005 SP1 Update for Vista

あと、Visual Studio起動時に表示されるスタートページのニュースチャンネルは、該当URLがすでになくなっているので、スタートページ自体表示しないようにした方がいいかもしれません。

ツール→オプション→環境→スタートアップで。


sfMobileIPPluginをsymfony 1.4で使ってみた

sfMobileIPPluginという、IPベースで高速にキャリア判定をするsymfonyプラグインがあったので、使ってみました。

1.0用に作られているらしく、一部修正する必要があります。

とりあえずやってみてダメだった手順。

$ ./symfony plugin:add-channel openpear.org
$ ./symfony plugin:install -s beta openpear.org/sfMobileIPPlugin

ダウンロードしてインストールを試みる。(これもXMLがおかしいと言われて不可)

$ ./symfony plugin:install ./sfMobileIPPlugin-0.0.13.tgz

ダメっぽいので適当にディレクトリ作って解凍しました。これでセットアップできました。

$ mkdir tmp
$ mv sfMobileIPPlugin-0.0.13.tgz ./tmp/
$ cd tmp/
$ tar xvzf ./sfMobileIPPlugin-0.0.13.tgz
$ mv ./sfMobileIPPlugin-0.0.13 ../plugins/sfMobileIPPlugin

configのyml類はconfigディレクトリに移さずに使える模様です。configにコピーしておけばオーバーライドできるので開発環境の場合はconfigにコピーしたあと、ローカルのネットワーク範囲を追加しておけば便利かと思います。

手動で設置したので、ProjectConfigurationにプラグインを使用するように記述する必要があります。

config/ProjectConfiguration.class.phpの

public function setup()
{
  ...
}

$this->enablePlugins('sfMobileIPPlugin');

を追加します。

1.4ではすでに存在しないメソッドがあるので、それも書き換えます。

plugins/sfMobileIPPlugin/lib/sfMobileIP.class.php

static protected function configFile()
{
  $config_dir  = sfConfig::get('sf_config_dir_name');
  $config_file = $config_dir.DIRECTORY_SEPARATOR.'mobile_ips.yml';
  return sfConfigCache::getInstance()->checkConfig($config_file);
}

を以下のように修正。

static protected function configFile()
{
  return sfContext::getInstance()->getConfigCache()->checkConfig('config/mobile_ips.yml');
}

あと、pear::Net_IPv4が必要です。これがないとdev環境でもエラーを出さずに途中で止まります。

symfonyコマンドでもインストールできますが、pluginディレクトリが汚くなるので、オートロードできる場所にNet_IPv4.phpファイルを適当に設置すれば良いかと思います。

http://pear.php.net/package/Net_IPv4/download

あとは

./symfony cc

を実行して、プログラム内でsfMobileIP::carrier()を実行すればキャリアを読み取れます。


debian lennyにJDKをインストールする

aptでインストールできますが、non-freeパッケージを有効にする必要があります。

# vi /etc/apt/sources.list

末尾に1行追加します。

deb http://ftp.jp.debian.org/debian/ lenny non-free

# aptitude update

# aptitude install sun-java6-jdk
パッケージリストを読み込んでいます… 完了
依存関係ツリーを作成しています
状態情報を読み取っています… 完了
拡張状態情報を読み込んでいます
パッケージの状態を初期化しています… 完了
タスクの記述を読み込んでいます… 完了
以下の新規パッケージがインストールされます:
  avahi-daemon{a} dbus{a} dbus-x11{a} gsfonts{a} gsfonts-x11{a} java-common{a} libasound2{a}
  libavahi-common-data{a} libavahi-common3{a} libavahi-core5{a} libdaemon0{a} libdbus-1-3{a} libnss-mdns{a}
  libxi6{a} libxtst6{a} odbcinst1debian1{a} sun-java6-bin{a} sun-java6-jdk sun-java6-jre{a} unixodbc{a}
更新: 0 個、新規インストール: 20 個、削除: 0 個、保留: 0 個。
61.7MB のアーカイブを取得する必要があります。展開後に 175MB のディスク領域が新たに消費されます。
先に進みますか? [Y/n/?]

途中でライセンスの確認をされます。
問題なければ続行すれば後は勝手に進んでインストール完了です。