rakudaininjaのはてなダイアリー - 方向性模索中 このページをアンテナに追加 RSSフィード

2014/03/23

x86のQNAPが欲しいので次モデルに思いを馳せた

動機

現在使っているQNAP TS-219 PII (CPU: Marvell)のランダムな待ち時間に限界を感じて買い換えたい。

候補はTS-469 Pro (Atom)だけれど、発売から2年経っているモデルを割引無しで今買うのはどうなんだ、ということで調べてみました。

(TS-219PIIのために付け加えると、ファイルサーバ兼メディアサーバとしてとても優秀で+αの事もできる良い子です。常時走りっぱなしでコンスタントにファイルを読むアプリがあるのと、それに別のファイルスキャンや処理が複数重なってしまうとシングルコアのMarvellでは厳しい、というだけです。トランスコードも諦めたほうがいいです。)


現行モデルたち

既存のモデルの販売日、搭載CPUとその販売日、消費電力などの一覧です。(主に2-6ベイのAtom-i3モデル。発売日はAmazon US)

QNAPのNASは型番からある程度の性能がわかるようになっており、数字部分の1桁目が搭載ドライブ数、2桁目がCPUのクラス、3桁目がクラス内でのランクです(9が一番良い)。

詳しくはこちら -> 404 Not Found

型番CPUモデルCPU世代TDPCPU発売日本体発売日(Amazon US)最大メモリ搭載量消費電力(スリープ)消費電力(作動時)
TS-259 Pro Atom D510 (1.66GHz, 2(4)core, 1MB cache) Pine Trail 13W 2010 Q1 2010 Q1 3GB 16W25W
TS-259 Pro+ Atom D525 (1.8GHz, 2(4)core, 1MB cache) Pine Trail 13W 2010 Q2 2010 ? 3GB 16W25W
TS-269L (V1) Atom D2550 (1.86GHz, 2(4)core, 1MB cache) Cedar Trail10W 2012 Q1 2012 7/21 3GB 19W23W
TS-469L (V1) Atom D2550 (1.86GHz, 2(4)core, 1MB cache) Cedar Trail10W 2012 Q1 2012 8/6 3GB 25W43W
TS-269 Pro Atom D2700 (2.13GHz, 2(4)core, 1MB cache) Cedar Trail10W 2011 Q3 (EOL) 2012 7/22 3GB 19W23W
TS-469 Pro Atom D2700 (2.13GHz, 2(4)core, 1MB cache) Cedar Trail10W 2011 Q3 (EOL) 2012 8/6 3GB 25W43W
TS-470 Celeron G550 (2.6GHz, 2(2)core, 2MB cache) Sandy Bridge 65W 2012 Q2 (EOL) 2013 8/5 16GB 23.9W38.4W
TS-670 Celeron G550 (2.6GHz, 2(2)core, 2MB cache) Sandy Bridge 65W 2012 Q2 (EOL) 2013 8/5 16GB 26.3W49.8W
TS-870 Celeron G550 (2.6GHz, 2(2)core, 2MB cache) Sandy Bridge 65W 2012 Q2 (EOL) 2013 8/5 16GB 29.1W59.9W
TS-470 Pro i3-3220 (3.3GHz, 2(4)core, 3MB cache) Ivy Bridge 55W 2012 Q3 2013 10/21 16GB 22.8W38.2W
TS-670 Pro i3-3220 (3.3GHz, 2(4)core, 3MB cache) Ivy Bridge 55W 2012 Q3 2013 10/21 16GB 24.6W48.7W
TS-870 Pro i3-3220 (3.3GHz, 2(4)core, 3MB cache) Ivy Bridge 55W 2012 Q3 2013 10/21 16GB 28.1W58.9W
TS-879 Pro i3-2120 (3.3GHz, 2(4)core, 3MB cache) Sandy Bridge 65W 2011 Q1 2011 8/18 16GB 39W101W

Atomモデルx5x, x6x - 今回の検討ライン

Atomモデルのx5x, x6x系は、メインである'Pro'と、CPUクロックを落とすなどした廉価版の’L'がほぼ同時に発売されています。

x69Lではその後'Pro'と同じCPUを搭載したx69L-V2が発売されて、'Pro'との違いはLCDとHDDベイのロック機能とSATA速度のみになりました。


Celeron/i3モデル x7x - Atomモデルの倍の価格だが低消費電力

Celeron/i3のx7x系は、i3を使ったフラグシップモデルのx79 Proが2011 Q1に発売された後、2年後の2013 Q2にCeleron搭載で廉価版のx70、翌2013 Q3にCPU強化版のx70 Proが発売されました。

x70 Proにもi3が搭載された結果、879 Proよりも870 Proの方が性能が良いという、型番と性能が逆転する面白い現象が起きています。

価格はAtomモデルの倍程度になりますが、同じHDDベイ数のモデルで比べると、スリープ時・作動時ともにAtomモデルより省電力で動きます。


モデルチェンジは2年毎? CPUは前年のデスクトップモデル

買い替えを考えている身としては、Atomモデル(x5x,x6x)、 Celeron/i3モデル(x7x)ともにモデルチェンジは概ね2年毎で、約1年前に発売されたデスクトップ向けのCPUを使用しているのに注目します。

Intelのロードマップに合わせているのでしょうが、交互にやっているようにも見えるので2014年はAtom系の番でしょうか。(憶測)


TS-469Proの次は何なのか - Celeron J で2014年のどこか?


搭載CPUについて

デスクトップ向けAtomはCedar Trailで打ち止めで、次バージョンであるBay Trail-DはCeleronブランド(Celeron J)として発売されました。

順当に考えると次モデルはこのCeleron Jを利用すると思われ、CPUの発売が2013 Q3,4だったので搭載モデルは2014 Q2-Q4あたりに出るのではないかと思います。


Celeron JはAtom時代より価格が上がっており、単品ではCeleron(Ivy, Haswell)よりも高額です。

なのでこれを期にx86の下位モデルはAtom系をやめて全てCeleronに統一してしまう、という選択もありえると思いますが、下で書いた通り、Celeronの発熱の問題からしばらくはAtom系が残るのではと思います。


型番について

型番については、これまで下2桁を富豪的に使ってきたツケが回ってきていて、469の次の47xはi3/Xeonに既に使われており、470 Airなど新しいサフィックスを作らない限りは470に新Atom(Celeron J)の空きはありません。

その47x系もやり繰りに困っており、最上位であるxx9の879はi3だけど、ラック用でECCメモリ搭載のEC1279UだとXeon。また470も無印はCeleron(Sandy)だけど、470 Proになるとi3になるなど、名前付けの苦労が見て取れます。

次バージョンくらいでi3/Xeonをx8xに移すか、Celeron/i3をx73か75に移してx71をCeleron J、という風にしてくるのではと思いますが、個人的には46A, 46B...とx6x系Atomの延命を見たいです。




Atom(Celeron J)モデルは無くなるか - 無くならないだろう

結論から書くと、聞き取りやブログ等を読んで回った限りでは、Atomモデルは数世代残るだろうと思います。


Atomをやめてもいい理由

消費電力に関して、上の表でAtom, Celeron(Sandy), i3(Ivy)と比べた場合は、現行のAtomモデルが最も消費電力が大きくなっています。

近年のCPUの省電力技術により、Atomより上のモデルが、NAS用途の省電力に追い付いてきたと言ってもいいかもしれません。


またQNAP NASの醍醐味は追加アプリを入れることによる機能拡張であり、QNAP自身のOSもQTS4.0以降メモリを必要とするデスクトップ部分を強化しているため、メモリが多いほど楽しめる、かつ使っているうちにあれもこれもしたくなるNASです。

CPUの入れ替えは本体の買い替えを(99%)意味しますが、メモリは後からの追加が簡単なので、Atomの最大メモリも増えてきているとはいえ、同じモデルなら制限が緩いに越したことはありません。


処理能力に関して、QNAPに限らず現在多くのNASにAtomが使われている理由の1つは、単純なRead/Writeの場合、ネットワーク部分がボトルネックになっておりCPUの性能はAtom程度あれば大きく影響しないという点でしょう(実際TS-469 ProとTS-470/479 Proで読み書きの性能差が無かったというテストデータもあります)。

しかしギガビットLANも家庭レベルで普及し、10ギガビットLANも現実的になってきている中、モデルチェンジは数年に一回、かつ一度導入したら大抵数年使い続けるNASでは、そろそろこの前提も崩れてもよいのではと思います。



それでもCeleronはまだ熱い

もう一度上の表を見てみると、Celeron(Sandy), i3とAtomでは、全体的な消費電力は横並びですが、TDPはi3(Ivy)で55Wまで下がったとはいえ、Atomは10Wで大きな差があります。

そしてこの差が、価格差がしばらく縮まらない原因になるのではと思いました。


TS-470の内部を写真付きで解説しているブログを見ましたが、Celeronの熱を放出するために結構トリッキーなことをやっています。

NASの設計でTDPとその放熱が大切なのは知っていましたが、この努力を見るとi3(Ivy)の55Wはまだ安価に扱える数字ではなく、複雑な構成にしなければいけない以上、2014 Q1現在で倍程度ある価格差が、実感するほど埋まるのはまだ先ではないかと思います。

冷却側のイノベーションやコストダウンよりも、CPU側が歩み寄る速度の方が早いかもしれません。



まとめ

2年サイクルを信じるなら、2014年にx69系の新型がでるかもしれませんね。(憶測)

Atom系とCeleron/i3系の価格差は現在倍近くあるので、待てる人は待つのも正解かもしれません。

[3/23 追記] 去年の新モデル発表は4月だったと情報を頂きました。ありがとうございました。


待ちたくない。今買いたい。という僕のような人は、現状のラインナップでは、AtomではなくCeleron/i3のx70系も検討して良いと思います。

消費電力は現行のAtomモデルより小さいですし、同じ処理をさせてもCPU時間が少なくて済むでしょうから、日々のランニングコストは少なくなることが期待できます。

初期コストさえ払えばその後少ないランニングコストでより良いパフォーマンスを得られ続け、結果スペックが陳腐化するのも遅らせることができるでしょう。

また将来必要になった時、LANを10ギガビットに拡張もできます。

色々と拡張できるとはいえ本質はNASであってLAN無しでは価値が無く、またQNAPは通常なら切り捨てる型落ちモデルにまで最新OSを提供する面倒見の良い会社であることを考えると、この部分の拡張性は考慮して良いと思います。(欲しくなっただけ)



あとがき

QNAPは台湾の会社なのでまず中国等のアジアから売り出すことが多く、その後世界展開を始めますが、日本への展開は年々遅くなっているように感じます。

TS-470 Proなどのハイエンドモデルはついに日本には投入されず、欲しいと思ってもサポートのリスクを許容して輸入するしか方法がありません。

日本では携帯電話等一部を除いてハイエンド商品は売れなくなったと言われて久しいですが(日本だけではありませんが)、それが長年続いた結果、自分の好きな分野で自分の国の市場価値が下がっていくのを見るのは多少寂しいものがあります。

無駄遣いは考えものですが、毎日使う物や時間を買える類の商品にはきちんと料金を払って、その分空いた時間やリソースで生産性を増やしてお金やサービスを回して行きたいと思いました。個人でも仕事でも。(ハイエンドを買う理由を探している)

2013/11/15

NetGearのスイッチユーティリティーのダウンロードサイトが罠

引っ越し先のネット用に、NetGearのGS108Eを2台購入しました。

気軽に買える家庭向け価格帯のスイッチでVLANを組もうとするとほぼGS108E一択なので、使っている人も多いのではと思います。


スイッチの設定変更はProSafe Plus Configuration Utilityという専用ソフトで行います。

せっかくなのでCDに入っているバージョンではなく、最新版をダウンロードしてスイッチにログインしようとすると。。。


f:id:rakudaininja:20131115234244j:image:w360


説明書に載っているデフォルトパスワードなのにIncorrect passwordでログインできません。そんなばかな。

踏んでしまったかと思いFactory Resetするも効果なし。


さて、故障を疑ってもおかしくない状況ですが、念のためもう1台買ったスイッチで試してみても同じ結果なので、CDからソフトを入れなおすかと思いつつふと我に返ってNetGearのサイトに戻ってみると、


f:id:rakudaininja:20131115232525j:image:w360


なんと各バージョンは番号順ではなく辞書順に並んでおり、最新版だと信じ込んでいた一番上のパッケージはダウンロード可能な中で一番古いものでした。

気を取り直してv2.2.34をダウンロードして、無事にスイッチの設定画面に入ることができました。

どこかのバージョンで暗号化の仕様が変わった、ということでしょう。


そんなバージョンを一緒に置いておくな、リリースノートはどこだ、最新版は一番上にするかハイライトしてくれ、辞書順にするなら1桁目に0をつけろ、ファームウェアではできてるんだからがんばれ。

など、思わなくはないですが、全て自己責任です。

ダウンロードの際はきちんとバージョンを確認しましょう、というお話でした。


物は良いので設定後は非常に快調に動いています。タグVLAN便利。

2013/04/24

git svnでリポジトリのインポートができない

git svn でsvnのリポジトリをローカルgitにインポートしようとしたところ、Git.pmのエラーが出て失敗しました。

$ git svn clone https://test.com/svn/svn_repos
Initialized empty Git repository in /Volumes/DATA/work/git/svn_repos/.git/
'tempfile' can't be called as a method at /usr/local/Cellar/git/1.8.2.1/lib/perl5/site_perl/Git.pm line 1115

各バージョンは下の通りです。

perl-5.16.3でやっても同じでした。

git-1.8.2.1
svn-1.6.17
perl-5.14.4

探した限りパッチが見当たらなかったので直してみましょう。

僕の環境ではこれで動きます。

 *** /usr/local/Cellar/git/1.8.2.1/lib/perl5/site_perl/Git.pm.20130424	2013-04-08 07:52:04.000000000 +0900
--- /usr/local/Cellar/git/1.8.2.1/lib/perl5/site_perl/Git.pm	        2013-04-24 06:15:12.000000000 +0900
***************
*** 1111,1117 ****
  			$tmpdir = $self->repo_path();
  		}
  
! 		($$temp_fd, $fname) = File::Temp->tempfile(
  			'Git_XXXXXX', UNLINK => 1, DIR => $tmpdir,
  			) or throw Error::Simple("couldn't open new temp file");
  
--- 1111,1117 ----
  			$tmpdir = $self->repo_path();
  		}
  
! 		($$temp_fd, $fname) = File::Temp::tempfile(
  			'Git_XXXXXX', UNLINK => 1, DIR => $tmpdir,
  			) or throw Error::Simple("couldn't open new temp file");

似たようなポストがすでにあるのでいずれパッケージが出るとは思いますが、差し当たりということで。

http://lists-archives.com/git/791282-git-pm-with-recent-file-temp-fail.html

git svnってパッケージングの時にテストもされない程、もはや誰も使ってないんですかね。

2013/04/16

Homebrewでinstall vimが失敗する

今度はvimが入りませんでした。

$ brew install vim
==> Cloning https://vim.googlecode.com/hg/
Updating /Library/Caches/Homebrew/vim--hg
pulling from https://vim.googlecode.com/hg/
searching for changes
no changes found
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
==> Checking out tag v7-3-896
hg archive: option --subrepos not recognized
hg archive [OPTION]... DEST

create an unversioned archive of a repository revision

    By default, the revision used is the parent of the working
    directory; use -r/--rev to specify a different revision.

    To specify the type of archive to create, use -t/--type. Valid
    types are:

    "files" (default): a directory full of files
    "tar": tar archive, uncompressed
    "tbz2": tar archive, compressed using bzip2
    "tgz": tar archive, compressed using gzip
    "uzip": zip archive, uncompressed
    "zip": zip archive, compressed using deflate

    The exact name of the destination archive or directory is given
    using a format string; see 'hg help export' for details.

    Each member added to an archive file has a directory prefix
    prepended. Use -p/--prefix to specify a format string for the
    prefix. The default is the basename of the archive, with suffixes
    removed.

options:

    --no-decode  do not pass files through decoders
 -p --prefix     directory prefix for files in archive
 -r --rev        revision to distribute
 -t --type       type of distribution to create
 -I --include    include names matching the given patterns
 -X --exclude    exclude names matching the given patterns

use "hg -v help archive" to show global options
Error: Failure while executing: /usr/local/bin/hg archive --subrepos -y -r v7-3-896 -t files /private/tmp/vim-DXwl

Mercurial (hg)がらみのエラーのようです。

--subrepos オプションが見つからない、とのことなのでhgのバージョンの問題でしょうか。


普段使っていないだけあってHomebrew経由ではなく、バージョンも4年前のものでした。

$ hg --version
Mercurial Distributed SCM (version 1.3.1)

Copyright (C) 2005-2009 Matt Mackall <mpm@selenic.com> and others
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

このバイナリは/usr/local/binにあるので、brew installがsymlinkを作るのを邪魔します。

念のため古き良き方法でバックアップしておきましょう。

$ mv -i /usr/local/bin/hg /usr/local/bin/hg.20130416
$ brew install mercurial
==> Downloading http://mercurial.selenic.com/release/mercurial-2.5.4.tar.gz
Already downloaded: /Library/Caches/Homebrew/mercurial-2.5.4.tar.gz
==> make local
==> Caveats
Extensions have been installed to:
  /usr/local/opt/mercurial/libexec/hgext

Bash completion has been installed to:
  /usr/local/etc/bash_completion.d
==> Summary
/usr/local/Cellar/mercurial/2.5.4: 531 files, 7.3M, built in 11 seconds

これでvimが入ります

$ brew install vim
==> Cloning https://vim.googlecode.com/hg/
Updating /Library/Caches/Homebrew/vim--hg
warning: vim.googlecode.com certificate with fingerprint bc:0f:42:98:b6:f1:fb:34:19:55:b2:fb:d4:df:c8:e4:b6:bb:0d:6e not verified (check hostfingerprints or web.cacerts config setting)
pulling from https://vim.googlecode.com/hg/
searching for changes
no changes found
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
==> Checking out tag v7-3-896
==> ./configure --prefix=/usr/local --mandir=/usr/local/Cellar/vim/7.3.896/share/man --enable-gui=no --without-x --enable-multibyte --with-tlib=ncurse
==> make
==> make install prefix=/usr/local/Cellar/vim/7.3.896 STRIP=/usr/bin/true
/usr/local/Cellar/vim/7.3.896: 1531 files, 24M, built in 74 seconds
$ vim --version
VIM - Vi IMproved 7.3 (2010 Aug 15, compiled Apr 16 2013 07:47:30)
MacOS X (unix) version
Included patches: 1-896

ちなみにmac vimはエラーなしでした。

$ brew install macvim
==> Downloading https://github.com/b4winckler/macvim/archive/snapshot-66.tar.gz
######################################################################## 100.0%
==> ./configure --with-features=huge --with-tlib=ncurses --enable-multibyte --with-macarchs=x86_64 --enable-perlinterp --enable-pythoninterp --enable-
==> make getenvy
==> make
==> Caveats
MacVim.app installed to:
  /usr/local/Cellar/macvim/7.3-66

To link the application to a normal Mac OS X location:
    brew linkapps
or:
    ln -s /usr/local/Cellar/macvim/7.3-66/MacVim.app /Applications
==> Summary
/usr/local/Cellar/macvim/7.3-66: 1759 files, 27M, built in 2.1 minutes
$ brew linkapps
Linking /usr/local/Cellar/macvim/7.3-66/MacVim.app
Finished linking. Find the links under /Users/all/Applications.

おつかれさまでした。

2013/04/15

Homebrewでinstall svn が失敗する x 2

Mac OS X Snow Leopardでbrew install subversionがうまく動かなかったので、対処方法のメモです。

$ brew install svn
==> Downloading http://www.apache.org/dyn/closer.cgi?path=subversion/subversion-1.7.9.tar.bz2
Already downloaded: /Library/Caches/Homebrew/subversion-1.7.9.tar.bz2
==> ./configure --prefix=/usr/local/Cellar/subversion/1.7.9 --with-apr=/usr/bin --with-ssl --with-zlib=/usr --with-sqlite=/usr/local/opt/sqlite --with
==> make
      _svn_cl__edit_string_externally in util.o
      _svn_cl__edit_string_externally in util.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
make: *** [subversion/svn/svn] Error 1

READ THIS: https://github.com/mxcl/homebrew/wiki/troubleshooting

These open issues may also help:
    https://github.com/mxcl/homebrew/issues/17613
    https://github.com/mxcl/homebrew/pull/19100
    https://github.com/mxcl/homebrew/issues/15393

この問題に当たったようです。

https://github.com/mxcl/homebrew/issues/14884

要はすでにApache (httpd)が入っているとsubversionがbrew installできない、ということなのでApacheを抜いてやりなおします。

$ brew uninstall httpd
$ brew cleanup httpd
$ brew install svn
==> Downloading http://www.apache.org/dyn/closer.cgi?path=subversion/subversion-1.7.9.tar.bz2
Already downloaded: /Library/Caches/Homebrew/subversion-1.7.9.tar.bz2
==> ./configure --prefix=/usr/local/Cellar/subversion/1.7.9 --with-apr=/usr/bin --with-ssl --with-zlib=/usr --with-sqlite=/usr/local/opt/sqlite --with
==> make
==> make install
==> Caveats
Bash completion has been installed to:
  /usr/local/etc/bash_completion.d
==> Summary
/usr/local/Cellar/subversion/1.7.9: 98 files, 7.6M, built in 4.3 minutes
$ brew install httpd

これでSubversionが入ってめでたし、と思いきやserfがリンクに失敗していて動きません。

$ svn --version
dyld: Library not loaded: /usr/local/lib/libsqlite3.0.8.6.dylib
  Referenced from: /usr/local/lib/libserf-1.0.0.0.dylib
  Reason: image not found
Trace/BPT trap

解決方法は色々ありますが、brew uninstall/cleanup/install serfで入れ直すのが楽でしょう。

バッドノウハウの見本です。


neonで失敗するケースもあるようです。

このあたりを参照。

https://github.com/mxcl/homebrew/issues/17172

HomebrewはGitHubに情報がまとまっているので検索しやすいのがいいですね。


$ svn --version
svn, version 1.7.9 (r1462340)
   compiled Apr 15 2013, 22:47:13

Copyright (C) 2013 The Apache Software Foundation.
This software consists of contributions made by many people; see the NOTICE
file for more information.
Subversion is open source software, see http://subversion.apache.org/

無事に入りました。


Leopard->Snow Leopardのアップグレードをした上に途中でMacPortからHomebrewに移行したMacBookPro (Core2Duo!)を使っているので、パッケージ・リンクまわりはちょくちょくコケます。

その度にOS再インストールして全部入れ直すかいっそ買い替えたい欲求にかられますが、そんなテスト前症候群さえやりすごせば普段はサクサク動くのでまだいけるかな。

ただセキュリティ的にSnow Leopardはそろそろやめた方がいいんでしょうね。

2012/09/30

YAPC::Asia 2012に参加してきました

9/28-29でYAPC::Asia 2012に参加してきました。

f:id:rakudaininja:20120928095720j:image


会場変更

今年の会場は馴染みの東工大を離れ、東大本郷の伊藤国際学術研究センターでした。

オープンしたばかりの建物で、全館無線LAN対応、会議室の椅子がバロン(座りやすい)、見晴らしのよい階段、など全体的にオシャレで高級感のある会場です。

特にホールの音響設備が良かったのでスピーチも聞きやすく、会議をするには良いホールだと思います。

反面、物販禁止なので当日券が販売できない(!)、携帯電波が入りづらい、ホール席の電源の大半がハリボテ、などITイベントには向かない部分も見られましたが、そこは運営の方の努力でカバーして頂き、ストレス無く参加することができました。


今年は聴いた後に手を動かしたくなるトークが多かったのですが、特にモチベーションの上がったトークはこの3つでした。


What Does Your Code Smell Like?

Perlの作者、Larry Wall氏によるPerl 5ファイル => Perl 6へのライブデバッグセッション。

Perl 6を試してみよう、という気になりました。さすがPerlの父。

Perl 6はPerl 5のパッと見解りづらい=Perlっぽい部分が綺麗に書き直されて”普通”の文法になる、という印象でしたが、実際のコードやPerl 5からの変換を生で見ると、これはこれで結局Perl以外の人には嫌われそうなコードになる≒Perlっぽさが消えてないことに良い意味で安心しました。


内容とは別に、Larryの片手でVimを操る技術は何度見てもよくわかりません。マイクを持ってもらっている時ですら片手で操作してるので、Siriのようなものを仕込んで音声操作しているんだと今でも信じています。



Perlと出会い、Perlを作る

個人的今年のベストスピーカー賞。

mixiの新卒入社Masaaki GoshimaさんがperlをC++でフルスクラッチ再実装している話。

この手の話は、これをやりたい、こうなったらいいな、となりがちですが、5月からの約5ヶ月でベースの部分が動いてベンチを取るところまでできている、その開発スピードが素晴らしいです。

突如作りたくなって自分Lisp作りを始めたあの感覚が戻ってきました。

gperlが半年後にmixiに載るのを楽しみにしています。



Profiling memory usage of Perl applications

Devel::NYTProfの人 Tim Bunceによる、撃たないで!私はテーブルです!という謎のジョークから始まる、メモリプロファイリングがいかに難しいかと現状・開発中のsolutionの話。

Perlのメモリ周りの話を複数混ぜて、可視化のデモまで含めた、もう少し突っ込んで測ってみたい気にさせてくれる楽しい発表でした。

彼のもう一つのトーク Performance Profiling with Devel::NYTProf も大変参考になりました。

最適化はするな、きっと副作用がある => でもどうしてもする必要があるなら・・・というスタンスは大切ですね。



TAKESAKOさん++

TAKESAKOさんの機械学習のトークの後の希望者ジャンケンに勝って、サイボウズ・ラボでのパターン認識と機械学習 (PRML)の輪読に使われていた教科書ガイドを頂きました。

f:id:rakudaininja:20120929152138j:image

ISBNを取得した、れっきとした書籍です。Amazonでも売られています。のみならず、ジュンク堂でなんと総合ランキング1位を獲得した書籍です。

TAKESAKOさん、ありがとうございます!

f:id:rakudaininja:20120930043131j:image


さっそく教科書を買って読み始めよう、というところなのですが、上下巻合わせて15,000円します。英語の原書ならAmazon.comで6,800円ぐらいなので、数日寝させてからどちらにするか決めます。


まとめ

発表スライド・映像はYAPC::Asiaページにリンクが張られるそうです。

http://yapcasia.org/2012/talk

LT-Thonが全然聞けなかったので、どこかにまとまってませんかね。


年に1回お祭り的にモチベーションを上げることのできるYAPC::Asiaを、今年も2日間満喫できました。

運営のJPA、ボランティアスタッフの皆様、おつかれさまでした。

f:id:rakudaininja:20120929185817j:image

2009/11/14

[] Go言語 インストールメモ

Google発オープンソースプログラミング言語 "The Go Programming Language"を早速試してみた。

インストールで1ヶ所詰まったのでメモ。

環境はMac OS X 10.5.8。

基本、公式のInstalling Goを参考に。


環境変数

以下を~/.bashrc, ~/.profile 等に設定。

GOROOTはどこでもいいし、GOROOTとGOBINも離れててOK。

export GOROOT=$HOME/go

export GOOS=darwin

export GOARCH=amd64

export GOBIN=$GOROOT/bin

export PATH=$PATH:$GOBIN


Mercurial

Mercurial入ってなかったのでインストール。

sudo easy_install mercurial


ソースコード取得

hg clone -r release https://go.googlecode.com/hg/ $GOROOT

ここで

ValueError: unknown locale: UTF-8

というエラーで止まってしまった。


言語設定2行を~/.profileに入れて回避。

export LANG=ja_JP.UTF-8

export LC_ALL=ja_JP.UTF-8


ビルド

gccが入ってないならインストール。

$GOBINで設定したディレクトリが無いなら作って、PATHに入ってる事を確認。

cd $GOROOT/src/

./all.bash

--- cd ../test

N known bugs; 0 unexpected bugs

と出れば成功。


Hello World

hello.goファイル作成
package main

import "fmt"

func main() {
	fmt.Printf("hello, world\n")
}

コンパイル

6g hello.go

これでhello.6ができる。


リンク

6l hello.6

これで6.outができる。

6l -o hello.out hello.6

とすれば名前も変えられる。


実行

./6.out

> hello, world

よしよし。

[] Go言語メモ

オブジェクトシンボル確認

6nmでコンパイル後のオプジェクトのシンボルを確認できる。

6nm hello.6

>

...

U type.string

U type.unit8


Cライブラリ リンク

Cのライブラリを6cでコンパイルすれば6lでリンクできる。

6c gogo.c

6g hello.go

6l gogo.6 hello.6


gccgoを使う方法もある。また今度。

Setting up and using gccgo

2009/03/19

2009/03/16

[] ElScreen

Screen風の画面切り替え用Emacsスクリプト。タブ表示・操作が便利。

-> ElScreen

.emacs.el

;; ElScreen
(require 'elscreen)
(if window-system
    (define-key elscreen-map "\C-z" 'iconify-or-deiconify-frame)
  (define-key elscreen-map "\C-z" 'suspend-emacs))

使い方

  • C-z c : 新規ウィンドウ
  • C-z k : ウィンドウを閉じる
  • C-z K : 他のウィンドウを閉じる
  • C-z p : 前のウィンドウ
  • C-z n : 次のウィンドウ
  • C-z a : 直前のウィンドウ
  • C-z 0-9 : ウィンドウ番号指定

C-z はデフォルトでsuspendなので、変更したければ

(setq elscreen-prefix-key "\C-z")

C-x C-zもsuspendなので、とりあえずそのまま。


escreen.elの

(defcustom elscreen-display-tab t

(defcustom elscreen-display-tab nil

にしてやればタブが消えて見た目スッキリ。


以下を.emacs.elに足せばtitleにスクリーンの一覧が表示されるので、クリックでタブを切り替えたりしないのであれば困らない。

(defun elscreen-frame-title-update ()
  (when (elscreen-screen-modified-p 'elscreen-frame-title-update)
    (let* ((screen-list (sort (elscreen-get-screen-list) '<))
	   (screen-to-name-alist (elscreen-get-screen-to-name-alist))
	   (title (mapconcat
		   (lambda (screen)
		     (format "%d%s %s"
			     screen (elscreen-status-label screen)
			     (get-alist screen screen-to-name-alist)))
		   screen-list " ")))
      (if (fboundp 'set-frame-name)
	  (set-frame-name title)
	(setq frame-title-format title)))))

(eval-after-load "elscreen"
  '(add-hook 'elscreen-screen-update-hook 'elscreen-frame-title-update))

2009/03/15

[] Carbon Emacs memo

さっさと使い始めたいときの設定

~/.emacs.el

;; load path
(setq load-path (cons "~/bin/emacs/lisp" load-path))

;; no startup page
(setq inhibit-startup-message t)

;; no backup file
(setq backup-inhibited t)

;; window setting
(if window-system (progn
  (setq initial-frame-alist '((width . 100) (height . 40) (top . 180)))
  (set-background-color "Black")
  (set-foreground-color "White")
  (set-cursor-color "Gray")
))
;; enable history cache
(setq history-length t)
(when (require 'session nil t)
  (setq session-initialize '(de-saveplace session keys menus places)
        session-globals-include '((kill-ring 50)
                                  (session-file-alist 500 t)
                                  (file-name-history 10000)))
  (add-hook 'after-init-hook 'session-initialize)

  ;; keep cursor position
  (setq session-undo-check -1))

;; enable minibuf isearch
(require 'minibuf-isearch nil t)

session.el, minubuf-isearch.el はここから。

コマンド履歴だけならsession.el不要。

-> session.el

-> minibuf-isearch.el


.profile

alias emacs='open -a /Applications/Emacs.app'

2009/03/07

[] MacBook memo

リッドクローズモードを試す。モニタだけ直差し。キーボード・マウスはsynergy経由でWindowsのやつを使う。

synergyからWindowsのHHK使うと、英字配列なのに日本語扱いされる。

  • KeyRemap4MacBookのマッピングを外してみてもうまくいかず。
  • マッピングのXML作って読ませるとうまくいく。が、めんどい上にノート側のキーボードが逆になる。
  • ここの通りPSJ.keylayoutでも解決。ことえりのkeyboard layoutをPS/2Jに。ノート側はやっぱり逆になるので、USに戻してやらなきゃいけない。

[] MacBook memo

w3mが入ってなかった。入れよう。と思ったら./configureに失敗。gcのライブラリも要るらしい。入れたあとは無事コンパイルできた。

-> w3m

-> A garbage collector for C and C++

2009/03/01

[] CentOS memo

php-mbstringがデフォルトで入ってない。

2008/11/01

2008/06/05

rakudaininja2008-06-05

[] "下妻物語"  嶽本 野ばら

2008/05/28

rakudaininja2008-05-28

[] "日本の10大新宗教"  島田 裕巳

2008/05/17

[] YAPC::Asia 2008に行ってきた

YAPC::Asia 2008に参加してきた。

YAPC(ヤプシー)はPerlの最新技術・実用報告・ネタなどを一組20-40分(Lightning Talkは5分)で次々発表していくPerlコミュニティーのカンファレンス。

今年の::Asiaは@東工大。過去最大規模だったらしい。


バリバリPerl使い ってわけではないので正直ついていけない話題もいくつかあったけど、わかるトークの面白さとPerlコミュニティーのフレンドリーさとで、そんなことを気にせず楽しめたし、わからない話も家で頑張って追ってみようかな、という気になった。実際に工夫して使ってる人の話は面白い。

家に帰ってコードが書きたくなる、とても良いイベントだった。以下雑感。


  • Perl6の話題が全然なかった。Larry Wallが最初にちまっと説明したのが唯一かな。むしろ5.8から5.10にしようよ、なんてトピックがあったりするぐらいまだまだPerl5。今年のクリスマスもムリか。
  • そういえば、Larry Wall(Perlの作者)を初めて生で見た。
  • pathtraq, Moose, 5.10, consistent-hashingは使ってみようかな。
  • Moose大人気で、使ったことないと時代遅れっぽいけど今更始めても時代遅れな気分。
  • Perlは空気を読む。たまに読みすぎる。
  • Perl is undead. Z-dayとか。
  • ノベルティがTシャツじゃなくなってちょっと残念。なので去年のやつを購入。
  • 去年は出張とモロにかぶって行けなかったので、今年は2ヶ月前から上司に「休みます」宣言しておいた。来年は京都かも(ネタかも)とのこと。京都旅行か。いいな。

2008/05/16

rakudaininja2008-05-16

[] "革命社長"  吉越 浩一郎

2008/05/08

rakudaininja2008-05-08

[] "神戸在住"  木村 紺

2008/05/05

rakudaininja2008-05-05

[] "ダーリンは外国人2"  小栗 左多里

2008/05/04

rakudaininja2008-05-04

[] "効率が10倍アップする新・知的生産術"  勝間 和代

2008/04/29

rakudaininja2008-04-29

[] "ダーリンの頭ン中"  小栗 左多里

2008/04/27

rakudaininja2008-04-27

[] "ダーリンは外国人"  小栗 左多里

2008/04/26

rakudaininja2008-04-26

[] "夢を与える"  綿矢 りさ

2008/04/12

rakudaininja2008-04-12

[] "マネーはこう掴む 個人で使えるデリバティブ"  藤巻 健史

2008/04/08

rakudaininja2008-04-08

[] "ウェブ時代 5つの定理"  梅田 望夫

2008/04/05

rakudaininja2008-04-05

[] "野村證券王国"  邦光 史郎

2008/03/20

rakudaininja2008-03-20

[] "インテリジェンス人間論"  佐藤 優

2008/03/08

rakudaininja2008-03-08

[] "中田英寿 鼓動"  小松 成美

2008/03/02

[] SICP

"Structure and Interpretation of Computer Programs".

思うところあって読み始め。大学時代に一度挫折(主に日本語の問題)してるので今度こそ。


ラマ・ラクダ(Perl)と並列になるから、あっち側の目標をとりあえず3ヶ月に延長。


計算機プログラムの構造と解釈

計算機プログラムの構造と解釈

2008/02/25

rakudaininja2008-02-25

[] "敗者のゲーム" チャールズ・エリス

2008/02/24

[] MacBookを買おうと思っている

で、CMが良い薄くて軽いヤツじゃなくて、近いうちに発表されるとウワサの新型MacBookProにする予定なんだけど、会社のMac使いの人に「タッチパッド付くだけじゃなくて、モニタが全種類LEDバックライトになるらしいから気を付けた方がいいよ」とアドバイスを受けた。なるほど。

青色好きとして、LEDの黄色っぽさがOKか否か。現物を見に、とりあえずヨドバシ吉祥寺へ。

kyokyo 2008/03/01 00:52 LEDの実物見てそんなにイヤじゃなかったので、新型の方の15インチProを買うことにしました。人生初Mac(大学除く)です。値段を下げるらしいVistaも一緒に買って入れて、全部新しい物から始めるかどうか悩み中。