Google Code Prettify
2013年3月16日
Cocoa Emacs 24.3 構築 (2013/03版)
当てるパッチは inline patch とポップアップフリーズ対応パッチくらい。
24.3 には既にフルスクリーン実装が入っているので、よく使われているフルスクリーンパッチは外した。
普通に安定してる。。。良い事。
但し、フルスクリーン時に、ツールバー表示をトグルすると上下に変な隙間が出て、変だ。
どうしたもんだかなぁ
2011年6月5日
2011年5月26日
MacOSX で Zen Touch 2 (Android2.2)を開発端末にしてみる
自分の携帯を Androidの開発端末として使うのは、日常生活でメールや連絡が来たりするときに結構困る場合がある。なので、3〜4インチ程度の安いAndroid 端末が無いかなと物色したら、Zen Touch 2 がよさげ。
、、、
静電式のものに慣れているので、感圧式タッチパネルが違和感ありまくり操作がし辛いこと。
実物を見ないで、購入したので自業自得だが、、、ついでに、Android Market 非対応のも、、、 余り Android 端末としてはお薦めできないなぁ。。。まぁ音楽プレーヤーですね。
今まで扱った Android 端末は、何もせずに MacOSX の Android 開発用の SDK で認識されたので、気に留めるなかったが、こいつは認識しない。。。
はて、どうしたもんだかなぁ
2011年2月15日
polipo + MacOSX で使う
普通の PC にインストールした Linux サーバに Squid + Squidguard で使っていたんだが、 別サーバを必ず立ち上げていないと行けないのが面倒なので、、、 乗り遅れ感が否めないが、polipo を常用をする環境を整えてみた。
移行に関しては、GUIは必要ないが launchd との繋ぎの設定ファイルを準備するのが面倒なので MacPorts パッケージを使いつつ、自前に用意したバイナリを使った。
本家サイトで公開されている git レポジトリを元に数点修正したものを使った。
- 64 bit 環境だと stdarg 絡みで落ちるっぽい部分?を修正
- redirector の入出力の行仕様をpolipo側でダミーで合わせた
- censorReferer を maybe に設定した時、サブドメインに加えて指定のサイトリストも Referer を通す機能を追加
修正した履歴はgithubに公開してある。
最後の機能は、画像用を公開してるドメインが短縮した別ドメインに置き Referer で制限しているサイトに対応するためで、設定値uncensorRefererFileに、forbiddenと同じ形式で書けば、Referer を削除せずにスルーしてくれる。
まぁ、polipo も使えない事はないかなぁ。。。あとは、forbidden/redirector で Location を返す挙動がなんとかなれば、いいのになぁ。。。もうちょっと弄ってみるかなぁ
2011年1月27日
Mail.app の備忘録から Evernote に移行する
発売日に予約した IS03 が漸く入荷したので受け取ってきた。
いじり倒せる Android 端末が入手できた。 事前に電池のもちが異様に悪いと噂があったので、Killerアプリ等でコマメにアプリを終了し倒すように気を付けているので、ある程度許せる範囲に留まっている気がする。
まぁ、ノートパソコンにあるような大容量バッテリとかが出てくるのは、歓迎するが。。。どうなんだろう。
MacOSX の Mail.app には備忘録の機能が付いており、iOSとの組み合わせで同期が可能である。 結構便利でサクサク使っていたが、新規に Android でも同じようなことがしたくなって調べてみると、 どうも Evernoteが良いらしい。
メモに特化したアプリ、各プラットフォームにアプリがあり、相互に連携できる。。。なんか世の中凄いことになってるんだなぁ。。。
Mail.app の備忘録に蓄積したメモ書きを EverNote にサクっと移行するには、、、
どうすれば良いのだろうか?
何のことはない AppleScript を使うのが定石らしい。
参考URLの先コードを 「ユーティリティ」>「AppleScriptエディタ」にコピペして、「mailbox "Notes"」に書き換えて、実行すれば、「Imported Notes」という名前のノートブックの中にほぼ全部(「このMac内」の奴)コピー出来た。
あとは、ちまちまタグ付けや整理すればまた使いやすくなるのかなぁ。。。
参考URL
2010年11月9日
Google Chrome が吐き出すログをちょっとだけ片付ける
Mac OSX 上の Google Chrome は、何故か system.log にデバックか実装上の何かしらの情報を沢山吐く。
システムの他の問題を調査するときジャマ臭い。。。なんとかならんのかなぁ。
syslogd には高度なフィルタ機能が実装されていないので、system.log に書き出される行に関しては何ともしがたい。
但し、MacOSXでは syslogd とは別に asl という仕組みが並行して導入されている。「コンソール.app」 のデータベース検索以下の情報は asl の仕組みから取得している。
asl には、結構便利なフィルタ機能が実装されている。なので、件のログを収集しないようにするには、/etc/asl.conf の最後に次の設定を付け加えれば良さそうである。
# /etc/asl.conf に追加
# ommit com.google.Chrome
? [S= Sender com.google.Chrome] ignore
追記
良く考えれば、Chromeからのログを除外した「新規データベース検索」を登録しとけば良かったのかぁ。。。
2010年11月6日
MacOSXでRAMディスク上にブラウザのキャッシュを割り当てる
MacBook Pro 15(Late 2008)は公式では最大メモリ容量は4Gまでサポートなのだが、ファームウェアを最新のアップデート(MacBook Pro EFI ファームウェア・アップデート 1.8)を適用すれば、最大 8G まで普通に認識し速度低下せずに使えるそうである。
2009年末位には結構高価だったのだが、最近値下がりして手ごろになってきたので、交換した。 次いで HDD も交換して SSD (TOSHIBA THNS256GG8BBAA)に入れ替えた。
まぁ、SSD に入れ替えたお陰でOSの起動もアプリの起動も機敏で、いい感じ。
空きメモリが増えてたので、ちょっと1Gくらいブラウザのキャッシュに割り当ててみた。
MacOSX では「hdid」コマンドを使えば簡単にRAMディスクを作成できる。
ramlabel="RamDisk"
ramdev=$(hdid -nomount ram://10240)
diskutil eraseDisk HFS+ ${ramlabel} ${ramdev}
で、コイツを rc.localに仕込んでやれば、起動時にRAMディスクを作成できる。
なぜか上手く行かない。起動後に手打ちで入力すれば、出来るのだが、、、
はて、なんでだろうかぁ?
まぁ、ググっても明快な正解がわからない。。。
当てずっぽに答えれば、『「hdiejectd」デーモンが起動して、正常に定常状態に無いときには「hdid」は機能しない』っぽいのかなぁ。。。多分 SSD で起動が拙速になったからだと思うが、、、
上記の憶測のもとに rc.local を次のようにすれば、起動直後にユーザ用にRAMディスクに載ってる作業領域が作れるようになる。
#!/bin/sh
RAMSIZE=1024 # MBtyes
MP=/tmp/ramdisk
MYNAME=username
# Start hdiXXX
launchctl start com.apple.hdiejectd
sleep 5
# Make RamDIsk
RAMNUMSECTORS=$((${RAMSIZE}*2048))
ramdev=$(hdid -verbose -kernel -nomount ram://${RAMNUMSECTORS})
newfs_hfs -v ramdisk $ramdev
[ -d ${MP} ] || mkdir ${MP}
mount -t hfs -o nobrowse $ramdev ${MP}
# Finder.appで /Volume 以下で参照したいときは nobrowse を外す
# for ${MYNAME}
mkdir ${MP}/${MYNAME}
chown -R ${MYNAME}:${MYNAME} ${MP}/${MYNAME}
あとは、ログイン項目に、次のような キャッシュを調節するシェルスクリプトを埋め込んだ Automator アプリを登録すれば良い。
まぁ、サクサクになったのかなぁ?
追記 (2010/11/06)
コードをちょっとだけ整理して、Xcode と TMPDIR もRAMDISKにのせてみた。
追記 (2010/12/23)
TMPDIR もRAMDISKに載せると、どうも ramdisk のアクセス出来ない現象が時々発生し、キャッシュを載せている Chromeなどのブラウザが固まって、まともに使えない結果になる。。。どうも TMPDIR は ramdisk に載せて運用するのは難しそうである。仕方がないので、設定を削除してみた。。。ここ1ヶ月は、安定してるっぽいので正解かな。。。
2010年10月16日
dotfiles を github に上げてみた
dotfiles を公開レポジトリに上げるのが最近の流行らしい。なので、僕も github に上げてみた。
結構古くから VCS に入れて適当に履歴を記録したんだが、 「git rebase -i 」を使うと commit を修正できるので、 CVS ~ Subversion ~ git に変更する過程の履歴を 適当に整理してみた。
うん、なんとも紆余曲折がある、、、未だにちょっと壊れ気味の設定だなぁ。。。
2010年5月12日
Cocoa Emacs が落ちる
Cocoa Emacs は安定していると思ったが、 どうもポップアップダイアログが出ると暫くして落ちてしまう。
flymake をチマチマ使えるように設定を弄ったら、時々でるポップアップに刺さる。。。
しようがないので、gdbで追っかけてみた。
調べてみたら、次のような簡単な処理でも、 ポップアップが出て暫くしてEmacsが落ちるようである。
どうも inline patch 側での処理抜けらしい。。。 こんな感じに修正すると落ちなくなった
うん、すこぶる快適
2010年5月1日
Cocoa Emacs 64bit版を作ってみる
最近、また Emacs にはまっている。
ここ数年は vi やら eclipse やら JeditX やら xcode やらを広く浅く使っていて、 いまいちスッキリしない感じで、まぁ年なのか諦めていた。 Snow Leopardにアップグレードを期に、 ちょっと設定等を手入れしてMacOSX/Windowsで使い出したらすこぶる手になじむ。。。
はて、なんでEmacsを使うのを忘れていたのかんなぁ。。。
そう、当時 Emacs 20か 21 (mule-2.3だったかもしれん、、、)だったかなぁ。 UTF8/Unicodeを使う為にはMule-UCSとかいうパッケージが必要で、 そいつを組み合わせると普通に使えるのだが、起動も動作ももっさりしていまいちだった。。。
今日のEmacsはサクッとUnicode系の一群のcoding-systemが使えて、それなりに軽快に動作する。
良い時代になったなぁ。。。
MacOSX 上の定番は CarbonEmacsで、 かなりしっかりメンテナンスされており、実に安定している。ただ、ベースにしてるのがEmacs22だったり、Carbonベースだったり、32bitバージョンだったり、本当に細かく気になる人が気になる程度。
ふと気づくと 本家 Emacs では既に 64bit Cocoa版が構築でき、かつ日常作業で問題ならないくらいは安定してるらしい(1,2)。また、フォントの等幅調節設定や日本語入力等のinline patchなどが入手が可能で、 ほぼ CarbonEmacs を置き換えて使えるレベルになっている(と思う)。
なので、Cocoa Emacs 64bit を構築してみる。
ソースを取ってくる
うん、一番の難関は Bazaar という分散VCSを使う事かもしれない。。。準オフィシャルなGitレポジトリがあるので、Gitに慣れてる場合はこっちを使うのが吉。僕は、へたれなので git の方を使った。
- Bazaar レポジトリ: http://bzr.savannah.gnu.org/r/emacs/trunk/
- Git レポジトリ: git://repo.or.cz/emacs.git
取り敢えず、 ローカルネットに emacs.git のミラーレポジトリを立てて、そのマシン上でフォークして個人用の共用レポジトリを作る。 その個人用レポジトリから作業マシンに複製を展開する。 また、継続的にupstreamを追っかけるため、ミラーレポジトリもリモートとして登録する。
% ssh server # ローカルネットの server にログイン % cd /git % git clone --mirror git://repo.or.cz/emacs.git % git clone --bare --reference emacs.git emacs.git emacs-my.git ... % ssh client # 作業マシンにログイン % cd ~/work % git clone git+ssh://server/git/emacs-my.git emacs % cd emacs % git remote add upstream git+ssh://server/git/emacs.git % git fetch upstream
個人用レポジトリを挟んだのは、バックアップを意図してなんだが、、、git使いはそんな事はしないのかなぁ。。。分からんなぁ。。。
パッチをあてる
続いてMacEmacs JP から inline_patch を取って当てる。
% ssh client # 作業マシンにログイン % cd ~/work/emacs % git checkout -b topic EMACS_PRETEST_23_1_96 # 次いでに topic ブランチも作っとく % pathc -p0 < emacs-inline.patch
構築する
あとは、configure/make で問題が無ければ nextstep/Emacs.app の場所で 64bit Cocoa Emacs が構築される。
% ssh client # 作業マシンにログイン % cd ~/work/emacs % eval "$(PATH= /usr/libexec/path_helper -s)" # PATHをクリーンにする % ./configure --with-ns % make install % open nextstep/Emacs.app # Emacsの実行確認
なんともあっけなく構築できた。 ただ、僕は masterブランチの方にパッチを丁寧に当てた物(24.0.50とか)を使っている。すこぶる快適。
定期的追っかける
まぁ、忘れそうなので次いでに書いとく。
ミラーレポジトリは次のコマンドで更新する。
% ssh server # server にログイン % cd /git/emacs.git % git fetch
そして、作業レポジトリで upstream を追っかけるには
% ssh client # 作業マシンにログイン % cd ~/work/emacs % git fetch upstream % git rebase upstream/master topic # upstream 先端に rebase % git push origin :topic # topicブランチを削除し、 % git push origin topic:topic # 新しくtopicブランチをプッシュ
いまいち Git の使い方に慣れない/分からないので、間違ってるかもしれん。。。
そういえば、github にも Emacsのミラーレポジトリが上がってるので、そのうち生えてくるかもしれん。。。
それにしても覚える事が次から次と現れて、知恵熱が出っぱなしだなぁ。。。
初期設定のemacs.elはまた次回。
追記 (2010/05/06)
フォント以外の設定は、殆ど定型文っぽいので以下の用に設定した。
フォントの設定は「Emacs23 の フォント設定」を参照
追記 (2010/05/12)
どうもポップアップダイアログが出たとき落ちる問題にはパッチが必要。
2009年10月15日
IPSec のスループット
ネットワークのスループットを測定する環境を整えたので、次いでに IPSec を通してた時のものも測定してみた。
測定の条件は
- スループット測定ツール nuttcp の計測用データチャンネル 5001/tcp を上り/下りにそれぞれ IPSec に通す。
- racoon ver.1 でサポートされていない暗号化スイートも測定したいので、鍵を手動で設定する。
- ESP認証/暗号の組み合わせで計測する。(AHは使わん)
- 追加で IPComp での圧縮の効果を見たい気がする。
setkey で、手動で鍵を設定する方法は多々情報(1、2)があるので、そちらを参考にして欲しい。ただ、IPComp を組み合わせる例が乏しいのでこの部分だけ。
IPComp を組み合わせて使う
IPSec設定済みで、ESPのみを使うSPDが次にようになってるだろう。
... spdadd xx.xx.xx.xx[port] yy.yy.yy.yy tcp -P out ipsec esp/transport//require; ...
このときSPDのルールの順番が重要になる。カプセル化の下の方から、要は IPComp ⇒ ESP ⇒ AH の順に書き下していくことになる。
従ってIPCompを組み合わせるには、次のようにすればよい。
... add xx.xx.xx.xx[port] yy.yy.yy.yy ipcomp zzzz -C deflate; spdadd xx.xx.xx.xx[port] yy.yy.yy.yy tcp -P out ipsec ipcomp/transport//use esp/transport//require;
ただ、ベンチマークに流れるデータは「0」の羅列なので、いまいち効果が分からん。。。
なので計測は諦めた。
IPSec スループットの計測
前とほぼ同じ環境とmacbook pro を加えたものを用意、全ての計測に MTU 1500 / ロック周波数変更は全て無効にしMAXにした。また、TCP/IP通信に関するパラメータを修正せずにデフォルトにした。
- ref1 - M2NPV-VM / Athlon64X2 2.0GHz / DDR2-667 4GB / Intel Pro/1000PT (外付け)
- ref2 - M4A78-EM / Athlon X2 5050e 2.6GHz / DDR2-800 8GB / RTL8112
- via - VIA-EN12000EG / VIA C7 1.2GHz / DDR2-533 1G / VT6122
- osx - MacBookPro5,1 / Intel Core 2 Duo 2.4 GHz / DDR3-1066 2G x 2 / onboard Gigabit Ethernet
- hub - Gigabit Hub(GS908M)
| 認証/暗号 | ref1⇔ref2 | ref1⇔via | ref1⇔osx | |||||||
|---|---|---|---|---|---|---|---|---|---|---|
| throughput (Mbps) | CPU % | throughput (Mbps) | CPU % | throughput (Mbps) | CPU % | |||||
| ref1 | ref2 | ref1 | via | ref1 | osx | |||||
| no ipsec | ⇒ | 941.3580 | 10 | 28 | 785.1857 | 6 | 50 | 936.9429 | 9 | 54 |
| ⇐ | 941.2461 | 17 | 24 | 723.7100 | 12 | 99 | 938.3451 | 18 | 77 | |
| null/null | ⇒ | 934.6834 | 99 | 38 | 566.8947 | 13 | 93 | 932.0707 | 31 | 62 |
| ⇐ | 787.4495 | 18 | 46 | 520.2880 | 13 | 99 | 879.3127 | 25 | 99 | |
| null/des-cbc | ⇒ | 229.5461 | 99 | 8 | 72.9094 | 2 | 95 | 136.6533 | 3 | 14 |
| ⇐ | 197.0768 | 14 | 26 | 73.4657 | 4 | 99 | 129.1215 | 6 | 99 | |
| null/3des-cbc | ⇒ | 110.5173 | 100 | 4 | 30.8918 | 2 | 87 | 59.2064 | 1 | 7 |
| ⇐ | 76.8033 | 11 | 1 | 30.5976 | 1 | 99 | 56.5818 | 3 | 98 | |
| null/aes-cbc | ⇒ | 466.7989 | 99 | 33 | 392.0739 | 14 | 91 | 475.7789 | 95 | 43 |
| ⇐ | 472.1796 | 28 | 36 | 396.2264 | 17 | 99 | 376.3890 | 22 | 99 | |
| null/aes-ctr | ⇒ | 495.4163 | 77 | 58 | 218.6071 | 7 | 71 | |||
| ⇐ | 383.9987 | 16 | 7 | 258.7430 | 17 | 99 | ||||
| null/blowfish-cbc | ⇒ | 316.0327 | 99 | 11 | 77.6054 | 3 | 74 | 263.7795 | 15 | 31 |
| ⇐ | 244.9774 | 11 | 4 | 84.1580 | 4 | 99 | 228.4810 | 13 | 99 | |
| null/twofish-cbc | ⇒ | 372.5317 | 99 | 19 | 100.8360 | 5 | 73 | |||
| ⇐ | 289.2720 | 15 | 9 | 102.0088 | 5 | 99 | ||||
| null/camellia-cbc | ⇒ | 340.9916 | 100 | 15 | 86.7841 | 3 | 60 | |||
| ⇐ | 267.3560 | 18 | 5 | 84.5675 | 4 | 99 | ||||
| hmac-md5/null | ⇒ | 537.2857 | 99 | 24 | 244.7170 | 7 | 87 | 578.8675 | 99 | 49 |
| ⇐ | 453.2448 | 29 | 14 | 230.2019 | 11 | 99 | 572.5809 | 29 | 99 | |
| hmac-sha1/null | ⇒ | 370.0861 | 100 | 15 | 360.3754 | 20 | 86 | 414.4706 | 99 | 41 |
| ⇐ | 296.1913 | 11 | 7 | 350.0287 | 20 | 99 | 469.5587 | 57 | 98 | |
| hmac-sha256/null | ⇒ | 307.0078 | 99 | 16 | 302.9315 | 100 | 41 | 278.9001 | 17 | 33 |
| ⇐ | 240.0495 | 12 | 4 | 336.2512 | 19 | 96 | 248.9149 | 28 | 99 | |
| aes-xcbc-mac/null | ⇒ | 447.6017 | 99 | 20 | 216.0013 | 6 | 80 | |||
| ⇐ | 347.9881 | 13 | 12 | 271.0801 | 21 | 99 | ||||
| hmac-md5/3des-cbc | ⇒ | 101.5172 | 100 | 5 | 29.0609 | 1 | 88 | 57.0069 | 1 | 7 |
| ⇐ | 71.0862 | 11 | 1 | 28.4519 | 1 | 100 | 54.5636 | 4 | 98 | |
| hmac-md5/aes-cbc | ⇒ | 326.0155 | 99 | 17 | 205.8441 | 9 | 79 | 349.0338 | 80 | 27 |
| ⇐ | 266.2639 | 18 | 5 | 198.6511 | 12 | 99 | 296.4431 | 27 | 98 | |
| hmac-sha1/3des-cbc | ⇒ | 94.1899 | 100 | 5 | 30.1900 | 1 | 85 | 56.6619 | 1 | 5 |
| ⇐ | 66.1646 | 12 | 1 | 29.8474 | 2 | 99 | 52.0154 | 4 | 96 | |
| hmac-sha1/aes-cbc | ⇒ | 259.3614 | 99 | 15 | 253.1157 | 99 | 56 | 275.3661 | 98 | 25 |
| ⇐ | 202.5055 | 12 | 4 | 286.0077 | 20 | 93 | 270.1091 | 26 | 97 | |
| hmac-sha1/aes-ctr | ⇒ | 257.3152 | 99 | 14 | 193.6954 | 4 | 97 | |||
| ⇐ | 199.9059 | 12 | 3 | 209.8745 | 16 | 99 | ||||
| aes-xcbc-mac/aes-cbc | ⇒ | 283.0864 | 99 | 15 | 207.2613 | 11 | 62 | |||
| ⇐ | 225.1556 | 13 | 4 | 233.3907 | 26 | 99 | ||||
| aes-xcbc-mac/aes-ctr | ⇒ | 281.3969 | 99 | 15 | 154.4989 | 7 | 70 | |||
| ⇐ | 220.3145 | 12 | 4 | 178.5399 | 13 | 99 | ||||
異様にたくさん計測したが、あんまり意味が無い気がしないでもない。
- 暗号化方式の性能は
aes系 > blowfish/twofish/camellia >> DES > 3DES
VIA C7 では aes系 >> それ以外 - 認証方式の性能は
hmac-md5 > aes-xcbc-mac > hmac-sha1/hmac-sha256
ただ、あまり差異はない。
VIA C7 では hmac-sha1/hmac-sha256 >> それ以外 - des-cbc/3des-cbc は他の暗号化方法に比べて5~10倍くらい遅い。もう、見る影が無い。
- aes 系の実装には多くの開発リソースが割かれており、x86 コードでも十分早い。VIA PadLock が圧倒的に有利という訳ではない、不利という訳でもない。
- 個々のNICドライバの個性がある。
e1000e(Linux) / nvenet(MacOSX) に関しては送信時のCPU負荷が100%になる傾向があり、r8169 に関してはどう考えてもCPU利用率が低くなる。
これが NIC 自体の性能か、TCPと組み合わせで何らかのビジーウェイトが起きるのかは、いまいち不明。。。nuttcp/netperf で発生するトラフィックパータンに対する適性なのだろうか。
送信性能が上がるチューニングが必要なのだろうか? - 普通運用する hmac-sha1/aes-cbc は 約250Mbps のスループットが出る。PadLock を使えば同様の性能が出る。
結論
VIA-EN12000EG 上の Linux で IPSec を使うと約250Mbps程度のスループットの性能があり、Athlon64X2 2.0GHz と同程度の性能である。
Intel Atom はどの程度なのだろうかぁ?
2009年9月10日
Time Machine を iSCSI 経由で使う (3) - 性能比較
ボリュームをiSCSIの載せたときの性能と、IPSecで保護した場合やWiFi経由にした場合の性能劣化を測定してみた。
設定条件
接続の経路に結構余分な機器が挟まっているが、 測定用に別環境は用意していないためである。 実環境ベースと考えて勘弁してもらいたい。
Linux ターゲット側
- ASUS M2NPV-VM / Athlon64X2 3800+ (2GHz) / DDR2-533 1G x 4
- onboard Gigabit Ethernet (nVidia MCP51)を利用。
Mac OSX のイニシエータ側
- MacBookPro5,1 / Intel Core 2 Duo / 2.4 GHz / DDR3-1066 2G x 2
- onboard Gigabit Ethernet / AirMac(WiFi) を利用。
- Wifi経由では 802.11n/WPA2でアクセスポイントに接続
接続形態
- ローカルHDD
MacBookPro
⇔ ExpressCard(GH-EXC-ESA2/eSATA接続) ⇔ HDDケース(LHR-DS02SAU2BU) ⇔ HDD - 有線ネットワークでは
MacBookPro
⇔ Gigabit Hub(LSW-GT-8NSR)
⇔ Gigabit Hub(GS908M) ⇔ Gigabit Hub(GS908M)
⇔ Linux マシン(SATA接続) ⇔ HDD - Wifi経由では
MacBookPro
⇔ AirMac Extreme (2007モデル?有線100Baseの奴)
⇔ Gigabit Hub(GS908M) ⇔ Gigabit Hub(GS908M)
⇔ Linux マシン(SATA接続) ⇔ HDD
測定したHDD
- SATA 320G HDD(ST3320620AS)
- 3.0Gbps が有効になる用にジャンパー設定
- iSCSI/ローカル接続でも同じモデルを利用
測定結果
| ローカルHDD | GigaEther | Wifi経由 | GigaEther | Wifi経由 | ||
| IPSec 無 | IPSec 有 | |||||
| Sequential | Uncached Write [4K blocks] | 58.19 | 60.51 | 5.34 | 13.15 | 5.48 |
| Uncached Write [256K blocks] | 47.58 | 50.82 | 7.33 | 12.65 | 4.72 | |
| Uncached Read [4K blocks] | 16.16 | 6.02 | 1.46 | 4.75 | 1.38 | |
| Uncached Read [256K blocks] | 75.55 | 28.86 | 3.39 | 15.86 | 4.90 | |
| Random | Uncached Write [4K blocks] | 1.25 | 1.36 | 1.32 | 1.35 | 1.26 |
| Uncached Write [256K blocks] | 26.19 | 24.37 | 6.19 | 13.10 | 6.93 | |
| Uncached Read [4K blocks] | 0.64 | 0.61 | 0.45 | 0.58 | 0.43 | |
| Uncached Read [256K blocks] | 26.68 | 23.66 | 3.21 | 11.17 | 4.63 | |
ゴタク
iSCSI を有線/noIPSec で通す場合、シーケンシャル読込み以外はほとんど劣化が無い。 シーケンシャル読込みはキャッシュがほとんど効かない為か、iSCSIターゲット実装の良し悪しが出ていると思う。 また、チューニングを実施せずにデフォルト設定にしているので、それも影響しているのかも。
IPSec で保護すると、約120Mbps (15Mbyte/sec) 程度で頭打ちになっている。IPSec の実効帯域と思われる。Gigabit Ethernet なのに帯域が一割程度とはちょっと情けない。IPSec 固有の問題か、Linux の実装の問題か、iSCSI との組み合わせか、判然としない。何処に文句を言っていいのか分からない。
iSCSI を無線にした場合は、大きな問題は経路の帯域である。iSCSIとか、IPSec の有無とかは、もはや問題ではない。周囲の電波状況によって影響を受けるが、WPA2で50Mbpsくらいは流れるので良いのかなぁ。
結論
iSCSIをIPSecで保護することは、 無線を使って Time Machine でバックアップすることには殆ど影響しないと言えそうだ。 また、差分は一時間に一度であり、有線であっても約 120Mbps 程度の帯域を確保できることを考えると、 目くじらを立てるものではないのかなぁ。
2009年9月8日
Time Machine を iSCSI 経由で使う (2) - IPSecで保護
iSCSI はブロックデータが Network 上に流れるので気を付けなくはいけない。 専用のネットワークかVLANとかを組むのが定石らしいが、そうでない場合 IPSec が使うのが望ましいらしい。
設定が面倒で、大抵ノーガードですなぁ。
MacOSX でも普通にIPSecが使えるので、iSCSI のデータのみを保護する設定をしてみよう。
IPSec の設定内容
- Linux と Mac OSX の相互にIPSec接続をする。
- 既に iSCSI の設定が済んでおり、Linux側のiSCSIターゲットボリュームをMacOSX側のiSCSIイニシエータからマウントできる。
- IPSec はトランスポートモードで使い、iSCSI のデータ(3260/tcp)に限定する。
- IKE デーモンは racoon (IKEv1) を使う。
- 認証は事前共有秘密鍵/aggressive mode を使う。
- 暗号はAES/SHA1をなるべく使う。
| 役割 | IPアドレス | ホスト名 | |
|---|---|---|---|
| Linux 側 | iSCSIターゲット | 192.168.0.10/24 (固定) | server1 |
| MacOSX 側 | iSCSIイニシエータ | 192.168.0.20/24 | client1 |
SADの設定
基本的に、上りと下りのそれぞれで、サーバ側のIPアドレスとポート番号を指定すれば、iSCSI通信のみに限定できる。クライアント側は、DHCP等で振れる事を考えて範囲指定にする。
BSDの実装では PF tag なるものがあり「spdadd tagged」と組み合わせてフィルタルールに溶け込ませる事ができるそうなのだが、Linux側では同等の機能が実装されていないようなので残念ですなぁ。。。
Linux ターゲット側
# apt-get install ipsec-tools
/etc/ipsec-tools.conf
...
flush;
spdflush;
spdadd 192.168.0.10[3260] 192.168.0.0/24 tcp -P out ipsec esp/transport//require;
spdadd 192.168.0.0/24 192.168.0.10[3260] tcp -P in ipsec esp/transport//require;
Mac OSX のイニシエータ側
MacOSXでは、setkey 用の設定ファルの置き場がデフォルトでは用意されていないので、適当な場所に保存して、起動時に setkey コマンドで読み込み必要がある。
/etc/racoon/setkey.conf
flush;
spdflush;
spdadd 192.168.0.0/24 192.168.0.10[3260] tcp -P out ipsec esp/transport//require;
spdadd 192.168.0.10[3260] 192.168.0.0/24 tcp -P in ipsec esp/transport//require;
racoonの設定
Linux/MacOSX ともに、racoon を使うので設定ファイル racoon.conf の内容はほぼ同じになる。ただし、事前共有秘密鍵ファイル psk.txt は、同じ鍵をそれぞれの相手側のものとして書く必要があり、ちょっと注意が必要。
Linux ターゲット側
/etc/racoon/racoon.conf
...
remote anonymous {
exchange_mode aggressive,main;
my_identifier fqdn "server1"; # サーバの認識情報
dpd_delay 20;
proposal {
encryption_algorithm 3des;
lifetime time 2 hour;
hash_algorithm sha1;
authentication_method pre_shared_key;
dh_group 2;
}
generate_policy off;
}
sainfo anonymous {
pfs_group 2;
lifetime time 1 hour;
encryption_algorithm aes, 3des;
authentication_algorithm hmac_sha1;
compression_algorithm deflate;
}
/etc/racoon/psk.txt
...
client1 secret1
Mac OSX のイニシエータ側
他にVPNなど IPSec を使うものと衝突する可能性がある気がしないでも無い。。。anonymous の部分をアドレス指定しれば、行けそうな気がするが。。。未検証。
/etc/racoon/racoon.conf
...
remote anonymous {
exchange_mode aggressive,main;
my_identifier fqdn "client1"; # クライアントの認識情報
dpd_delay 20;
proposal {
encryption_algorithm 3des;
lifetime time 2 hour;
hash_algorithm sha1;
authentication_method pre_shared_key;
dh_group 2;
}
generate_policy off;
}
sainfo anonymous {
pfs_group 2;
lifetime time 1 hour;
encryption_algorithm aes, 3des;
authentication_algorithm hmac_sha1;
compression_algorithm deflate;
}
/etc/racoon/psk.txt
...
server1 secret1
racoonは自動に起動しないので、適当名タイミングで起動する必要はある。
% sudo setkey -f /etc/racoon/setkey.conf % sudo racoon自動起動するには、「マスタリングIPsec 第2版」に記述の方法が簡単である。
確認
IPSec はアプリケーション側の修正の必要の無い物なので、、、普通にボリュームをマウントすると普通に使える。
まぁ気休めに、IPSec_SAをチェックすれば、
# setkey -D 192.168.0.20 192.168.0.10 esp mode=transport spi=131341201(0x07d41b91) reqid=0(0x00000000) E: aes-cbc 8250b455 59cc8799 c0d0b0b0 71b570a8 A: hmac-sha1 6ff81843 b28130ed a5722694 32b134ee a0fc5b96 seq=0x00000000 replay=4 flags=0x00000000 state=dying created: Sep 8 14:51:43 2009 current: Sep 8 15:40:54 2009 diff: 2951(s) hard: 3600(s) soft: 2880(s) last: Sep 8 14:51:45 2009 hard: 0(s) soft: 0(s) current: 50750612(bytes) hard: 0(bytes) soft: 0(bytes) allocated: 49393 hard: 0 soft: 0 sadb_seq=1 pid=1233 refcnt=0 192.168.0.10 192.168.0.20 esp mode=transport spi=17664308(0x010d8934) reqid=0(0x00000000) E: aes-cbc 5d2d422b fe916f6d 501fedce e3d9650d A: hmac-sha1 6cfbf657 2eb74cb3 b64b5074 e34148b9 7bcaf934 seq=0x00000000 replay=4 flags=0x00000000 state=dying created: Sep 8 14:51:43 2009 current: Sep 8 15:40:54 2009 diff: 2951(s) hard: 3600(s) soft: 2880(s) last: Sep 8 14:51:45 2009 hard: 0(s) soft: 0(s) current: 2142076(bytes) hard: 0(bytes) soft: 0(bytes) allocated: 26881 hard: 0 soft: 0 sadb_seq=2 pid=1233 refcnt=0
ついでに tcpdump でサーバ側のパケットの流れを見れば、ESPパケットが飛び交ってるのが見える。。。
# tcpdump -i eth0 not port 22 ... 15:38:24.183860 IP client1 > server1: ESP(spi=0x07d41b91,seq=0xc0ba), length 116 15:38:24.184162 IP server1 > client1: ESP(spi=0x010d8934,seq=0x68e6), length 116 15:38:24.184625 IP client1 > server1: ESP(spi=0x07d41b91,seq=0xc0bb), length 68 15:38:27.186886 IP client1 > server1: ESP(spi=0x07d41b91,seq=0xc0bc), length 116 ...
まとめ
SADの設定をちまちま行えば、他の通信もIPSecで保護が出来そうである。気になるのは、パフォーマンスがどこまで劣化するかなのだが。。。あまり期待は出来ないのかなぁ。。。
2009年9月3日
Time Machine を iSCSI 経由で使う (1) - 設定
Leopard から実装された Time Machine は非常に使い易い。 ただ、常にノートブックに外付けのHDDをぶら下げるのは、可搬性が損なわれる。 Time Capsule を使えば良いのだが、約10M Byte/s 位しか出ないらしい。
どうも iSCSI 経由で外部ストレージを繋げてバックアップ先に指定すれば、いい感じになれるらしい。
最近 Linux でよく使われているターゲットは「iSCSI Enterprise Target」であり、Debian lenny からカーネルモジュールもパッケージ化されており、apt 一発で使える。また、ストレージ層は Linux に依存しており、フォーマット縛りが無い。そのため、HDD単体をiSCSI経由で接続して使っていた場合、そのHDDをUSB等の変換アダプタで直に接続しても、そのままで使える利点がある。
Mac OSX のイニシエータは標準では用意されていないが、サードベンダー製の「globalSAN iSCSI Initiator for OS X」が無料で制限なしで利用できる。
コイツらを組み合わせると、Time Machine の初期化やリカバリ時だけマシンに直付けして、差分バックアップ運用時はiSCSI経由で行う事が出来る。
Linux で iSCSI target 設定
設定の内容は、
- お手軽な単方向CHAP認証を使い、ユーザ名 iscsiadmin /パスワードは12~16文字の適当な文字列にする。
- IQN(ISCSI Qualified Name)は iqn.YYYY-MM.domainなんたらをユニークになるように適当に付ける。
- デバイスの名前に関しては、固定される用に /dev/sd? ではなく /dev/disk/by-id/? を使う。
- イニシエータ制限をサブネット範囲でかけておく。
Debian lenny にバイナリパッケージが用意されている。
# apt-get install iscsitarget iscsitarget-modules-2.6-amd64
/etc/default/iscsitarget
ISCSITARGET_ENABLE=true
/etc/ietd.conf
IncomingUser iscsiadmin 123456789012
Target iqn.2009-09.com.example:stroage.fileserver.timemachine
IncomingUser iscsiadmin 123456789012
Lun 0 Path=/dev/disk/by-id/scsi-XXXXXX,Type=blockio
/etc/initiators.allow
ALL xx.xx.xx.xx/24
うんで、/etc/init.d/iscsitargt start で、iSCSI ターゲットのサービスを有効化する。
Linux の Open-ISCSIを使って確認
適当な iSCSI イニシエータが必要なので、Open-iSCSI を設定して確認する。
# apt-get install open-iscsi/etc/iscsi/iscsid.conf
...
node.session.auth.authmethod = CHAP
node.session.auth.username = iscsiadmin
node.session.auth.password = 123456789012
...
discovery.sendtargets.auth.authmethod = CHAP
discovery.sendtargets.auth.username = iscsiadmin
discovery.sendtargets.auth.password = 123456789012
...
うんで、/etc/init.d/open-iscsi start で、iSCSI イニシエータのサービスを有効化する。
取り敢えず、検索すると
# iscsi_discovery xx.xx.xx.xx iscsiadm: No active sessions. Set target iqn.2009-09.com.example:stroage.fileserver.timemachine to automatic login over tcp to portal xx.xx.xx.xx:3260 Logging out of session [sid: 5, target: iqn.2009-09.com.example:stroage.fileserver.timemachine, portal: xx.xx.xx.xx,3260] Logout of [sid: 5, target: iqn.2009-09.com.example:stroage.fileserver.timemachine, portal: xx.xx.xx.xx,3260]: successful discovered 1 targets at xx.xx.xx.xx何となく、ターゲットが発見できる。
ついでに、ノードに接続して確認すると
# iscsiadm -m node -p xx.xx.xx.xx -l Logging in to [iface: default, target: iqn.2009-09.com.example:stroage.fileserver.timemachine, portal: xx.xx.xx.xx,3260] Login to [iface: default, target: iqn.2009-09.com.example:stroage.fileserver.timemachine, portal: xx.xx.xx.xx,3260]: successful # cat /proc/scsi/scsi ... Host: scsi27 Channel: 00 Id: 00 Lun: 00 Vendor: IET Model: VIRTUAL-DISK Rev: 0 Type: Direct-Access ANSI SCSI revision: 04 ... # iscsiadm -m node -p xx.xx.xx.xx -u Logging out of session [sid: 7, target: iqn.2009-09.com.example:stroage.fileserver.timemachine, portal: xx.xx.xx.xx,3260] Logout of [sid: 7, target: iqn.2009-09.com.example:stroage.fileserver.timemachine, portal: xx.xx.xx.xx,3260]: successfulまぁ、ディスクが見える!
Mac OSX 上での設定
globalSAN iSCSI Initiator for OS Xから、パッケージをインストールして再起動し、GUIに従って設定すれば良い。
- 「システム環境設定」から「globalSAN iSCSI」を選択
- 「Portals」タブで、ターゲットマシンのIPを追加する。このとき、「Advanced Settings」で、CHAP認証を有効にして、User Name/Target Secret をISCSIターゲットで設定したものにする。
- 「Targets」タブにISCSIターゲットのIQNが見えるようになる。
- ISCSIターゲットのIQNを選択して「Log On」をする。
- 後の扱いはローカル接続のHDDと同じで、必要に応じて「ディスクユーティリティ」で初期化する。
Time Machine の設定は、ローカル接続のHDDと同じような扱いで、HFS+のボリュームを作って指定すれば普通に使える。。。快適じゃぁ。。。
2009年4月19日
MacOSX で USB-RS232 アダプタを使う
USB-RS232 アダプタで MacOSX 対応のドライバを提供してるのはあまり見かけない。 初期設定を RS232 経由で行うルータとかハブとかがあり、その時だけWindowsとか言う奴を使っていた。
しつこく探してみたところ、オープンソースでドライバを作っているところがあった。 Prolific 社の PL2303 チップを使ったUSBアダプタ全般で使えるようである。
手持ちにある以下の二種類のアダプタで問題なく使えた。
アレイドの奴は使えて結構嬉しい。端末エミュレータには、MacPorts から screen を使えばよい。
% screen /dev/tty.PL2303-XXXXXXXX 9600 cs8端末から抜けたいときはつかさず C-a C-\ とかやる。
2008年10月23日
MacOSX 上の Acrobat の OCR の奇妙な文字化けに対処する
MacOSX の OCR の選択肢は狭く、ちょっと躊躇する分野である。そのため、Acrobat 搭載の OCR が重宝すると思う。
しかし!!
僕の持っている Acrobat 8.1.2 では OCR 処理後に埋め込まれる文字が奇妙な文字化けを起こして、全く使えなかった。
ググりまくっても対処法が見つからずに途方に暮れていた。
はて?なんすかね?
ふと文字化け文字列をコピペして UTF-8として再認識させると 80% 位が日本語として識別できるようになった。
詳しく調べてみると、OCR処理後に埋め込まれる文字列が「90ms-RKSJ-H」というエンコードで符号化される(要するにShift-JISの亜流)はずが、コイツの中身が勝手に「UTF-8」になってるっぽい?らしい。
小一日後、、、ふと思ったのが、環境変数LANGかなくらい。。。
LANG変数は、結構昔に ~/.MacOSX/environment.plistで ja_JP.UTF-8 と設定してある。
コイツを削除してみた。。。
あぁぁ、奇妙な文字化けがなくなったぁぁ。
どうやら、MacOSX 版の Acrobat Pro 8.1.2 に含まれる OCR 機能は、勝手に環境変数LANGを参照して、文字化けになってるっぽい。
なんだかなぁ、、、疲れる仕様だなぁ
2008年8月5日
NicoProxy2 と Squid を MacOSX 上で 組み合わせる
最近は元気が無いがニコニコ動画は面白い。Youtube や Veoh に上がってる動画も面白い。
しかし、動画のファイルサイズは HTML/CSS/JavaScript に比べて大きすぎるためか、 キャッシュプロクシとは本当に相性が悪すぎる。Squid でキャッシュ保存するサイズを大きめに取って対処していたのだが、、、どうも気持ちが悪い。
ニコニコ動画限定だが専用のキャッシュサーバ「NicoProxy2」が出てきている。そのうち、動画専用キャッシュサーバがぼこぼこ出て来るんかいなぁ。
なので、Squid と NicoProxy2 を組み合わせてみた。
ユーザは外部サイトを Squid を通してアクセスする状況で、Squid がニコニコ動画の動画リクエストのみNicoProxy2 に委託するのが目的。
NicoProxy2の立ち上げ
手軽に launchd 経由で立ち上げたいので daemondo が含まれる MacPorts を入れてく。
ソースを取ってきて、適当な場所に置く。
# ls -l /opt/local/etc/nicoproxy/ total 24 -rw-r--r-- 1 root admin 321 Aug 5 16:36 conf.yml -rw-r--r-- 1 root admin 8062 Aug 5 18:58 nicoproxy.rb
もうこの状態で、conf.yml を弄れば、Proxy として機能すると思う。動作確認したら、launchd 用の定義ファイルとラッパースクリプトを書く。
/opt/local/etc/LaunchDaemons/org.macports.nicoproxy/org.macports.nicoproxy.plist
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Debug</key> <false/> <key>Label</key> <string>org.macports.nicoproxy</string> <key>OnDemand</key> <false/> <key>ProgramArguments</key> <array> <string>/opt/local/bin/daemondo</string> <string>--label=nicoproxy</string> <string>--start-cmd</string> <string>/opt/local/etc/LaunchDaemons/org.macports.nicoproxy/nicoproxy.wrapper</string> <string>start</string> <string>;</string> <string>--stop-cmd</string> <string>/opt/local/etc/LaunchDaemons/org.macports.nicoproxy/nicoproxy.wrapper</string> <string>stop</string> <string>;</string> <string>--restart-cmd</string> <string>/opt/local/etc/LaunchDaemons/org.macports.nicoproxy/nicoproxy.wrapper</string> <string>restart</string> <string>;</string> <string>--pid=none</string> </array> <key>RunAtLoad</key> <false/> </dict> </plist>
/opt/local/etc/LaunchDaemons/org.macports.nicoproxy/nicoproxy.wrapper
#!/bin/sh
prefix=/opt/local
pidfile=/opt/local/var/run/nicoproxy.pid
Start()
{
cd /opt/local/etc/nicoproxy
ruby ./nicoproxy.rb &
echo $! > $pidfile
}
Stop()
{
kill `cat $pidfile`
}
Restart()
{
Stop
Start
}
Run()
{
case $1 in
start ) Start ;;
stop ) Stop ;;
restart) Restart ;;
* ) echo "$0: unknown argument: $1";;
esac
}
Run $1
launchd に登録すれば、再起動しても自動的に上がってくれる筈?
# launchctl load -w /opt/local/etc/LaunchDaemons/org.macports.nicoproxy/org.macports.nicoproxy.plist ... # launchctl list | grep nicoproxy 62595 - org.macports.nicoproxy ... # ln -s /opt/local/etc/LaunchDaemons/org.macports.nicoproxy/org.macports.nicoproxy.plist /Library/LaunchDaemons/
まぁ、MacPorts に含まれていないのに、org.macports.XXXX なのは愛嬌ってことで。
Squid と連携する
Squid は、MacPorts のものを入れ、取り敢えず動かせる所まではやっておく。NicoProxy2 連携用に、次の設定を加える。但し、例では NicoProxy2 のポートは 25255に変えてあり、自身のホストがCNAMEとか追加して nicoproxy.example.com で引けるようになっているので、各自の環境に合わせる必要がある。
squid.conf
... # nico proxy acl nico url_regex -i ^http://www\.nicovideo\.jp/api/getflv/? acl nico url_regex -i ^http://.*\.nicovideo\.jp/smile\? cache_peer nicoproxy.example.com. parent 25255 0 proxy-only no-query cache_peer_access nicoproxy.example.com. allow nico never_direct allow nico
まとめ
NicoProxy2はon-the-flyでは転送しないのかぁ。。。
2008年8月1日
Remote がiTunesから登録を解除される問題の対処法
iPhone/iPod touch アプリに Remote という、iTunes を制御できる優れものアプリがあるらしい。iPod touch のファームを 2.0 に上げて以来試しているが、なぜかiTunesから登録が解除される挙動に悩まされてきた。。。
今日なんと対処法が分かった。。。
どうも4桁のピンコードを入力した後に、折り返しに iTuens から iPod touch へ HTTP アクセスがあって登録が完了するらしい。このとき iTunes が動いてるマシンにプロクシ設定があるとき、折り返しアクセスが HTTPプロクシを通して返され、別のIPアドレスから登録完了の通知なので iPod touch に拒絶されるのが原因らしい。。。あばば
つまり、4桁のピンコード登録時にはiTunes が動いてるマシンのプロクシを一時的に切れば良い。
で登録できましたよ〜〜。。。Remote アプリいいすぅね。。。
2008年7月28日
libvirt on MacOSX を試してみる
あまり意味は無いが、libvirt は Windows 上でも動いているので、UNIXを名乗ってる MacOSX でも動かないことは無いと思うので試してみた。
依存するライブラリやパッケージをインストールするために MacPorts を使う。。。取り敢えず適当に入れとく。
次に、gnutls/pkgconfigを入れる。
$ sudo port install gnutls $ sudo port install pkgconfig
libvirtのサイトから、ソースを取ってくる。4カ所修正を行い、configure & make を行う。
$ tar xfz libvirt-0.4.4.tar.gz $ cd libvirt-0.4.4 $ sed -i .bak 's/test -z "\$PKG_CONFIG/test -n \"$PKG_CONFIG/' configure $ sed -i .bak 's#-Wl,--version-script=\$(srcdir)/libvirt_sym.version##' src/Makefile.in $ sed -i .bak 's/xdr_quad_t/xdr_int64_t/;s/xdr_u_quad_t/xdr_u_int64_t/' qemud/remote_protocol.c $ sed -i .bak 's/rl_completion_matches/completion_matches/' src/virsh.c $ ./configure --without-xen --without-qemu --without-libvirtd --without-storage-fs $ make $ make install
実際使えるのは、virsh のみだが、リモート対向の libvirtd の設定に応じてURIを指定する必要がある。 ssh経由のトランスポートを指定する場合、socket オプションを明示する必要がある。 あと、お互いのシステムで nc コマンドが動く必要がある。
$ virsh -c qemu+ssh://remote-machine/system?socket=/var/run/libvirt/libvirt-sock
普通に動く。。。
ただ、virt-managerを入れようとしてるが macports の gtk2 が上手く入らんので、試せん。。。意味無いなぁ。
gtk2が入らないのは #15816が原因で、port sync で問題なくインストールで来た。でも、virt-managerが依存する virtinst とかは libxen ? が必要なのでイマイチ動かん。。。
2008年7月16日
iPod touch で App Store から沢山落としてみた。
巷では iPhone 3G の話題が沸騰してるが、 2年でトータル20万以上も出費とは、、、 私は当分買わない。
iPod Touch でもカメラとBluetoothとGPSが付けば、電話機能なんて要らんし。。。
「iPhone 2.0 Software Update 」を適用さえすれば、Wi-Fiが届く場所にいる限り、殆ど同じ触りごごちが味わえる。
幾つか漫画のアプリがあるが、結構サクサクして読み易い。コミックの配信プラットフォームとしてもありかと思う。
ただし、アプリ単体のみの課金パターンしか用意されていないようなので、ホーム画面に漫画の数だけ無数のアイコンが並ぶのはやだなぁ。
「無料のビューア」+「専用の有料コンテンツ」のパターンとかそのうち出てくるのかなぁ。。。課金はそれぞれ用意するとかなのかぁ。。。
ふぅーむ。。。アップルに期待すっかぁ
久しぶりの投稿
かなり期間が空いてしまったが、ブログを再開してみようと思う。 2013年3月が直前の投稿だったが、頻繁に更新していた時期が 2011年11月までなので、8年間ぶりとなる。 8年間なにをしていたのかと言えば、2回転職して未だにIT技術者の職を得ている。 その...
-
最初に購入したComputerは、かのツタンカーメンCMで有名なX68000無印でした。付属のグラデウスを1周もできずにズルしてクリアーしたのもよい思い出です。先日、実家に預けてある荷物の整理をしたところ、X68000で使っていた5inchフロッピーディスクが大量に出てきました。...
-
libvirt の管理下の仮想化ドメインから、virt-manager を使って、仮想グラフィック画面をVNC経由でアクセスすると、正しくキー入力ができない場合がある。 kvm/qemu のエミュレータに対してキーボードのレイアウトを指定するオプションを付ければ、対応が可能で...
-
かなり期間が空いてしまったが、ブログを再開してみようと思う。 2013年3月が直前の投稿だったが、頻繁に更新していた時期が 2011年11月までなので、8年間ぶりとなる。 8年間なにをしていたのかと言えば、2回転職して未だにIT技術者の職を得ている。 その...