2015年6月30日火曜日

任天堂株主総会でのすれちがい

先日任天堂第75期定期株主総会に参加してきました。
以前に比べるとNintendo3DSを開いている株主は少なくなった気配ですが、
それでも例年どおり会場では多くのすれちがいができました。
実は当日は1日京都に滞在しており、全体としては60人のMiiとすれちがえました。
ですが株主総会会場でのすれちがいがほとんどで、それ以外では10人程でした。
平日で、かつ雨で、人ごみをうろうろしていた時間帯も関係あると思われるものの、
世界に誇る観光都市京都でこれではちょっと寂しく感じます。

さて、この度の京都旅行によるすれちがいの状況をアップデートしておきます。
直前の状況から変更部分のみ書き残しておきます。

さすがの株主総会で[すれちがい合戦]所有者と大量にすれちがえ、
別世界の国王と勝負した数は150戦から182戦にジャンプアップできました。
旧バージョン相当での最後のぼうしチケットのための300戦に向け励みとなります。

すでにクリアしている[すれちがいゾンビ]はメダル集め中で、ただいま56個。
ちなみに見たことがある道具が24、たおしたゾンビの数が3682、
そしてぼうしチケットは15枚集めています。

[すれちがいフィッシング]はようやく2つ目の島をクリアできました。
なお、釣った魚の種類は63種です。
もくひょうチェックでは42個を達成済みで、ぼうしチケットは8枚です。

広場内ゲーム以外では、すれちがい回数は2112回、
お祝いリストの達成数は62、
音楽リストの残りはすれちがいフィッシング系で35、すれちがいゾンビ系が1です。
すれちがいマップについては1県加えて、日本は残り4県になりました。
最後に[すれちがい誕生日]は126日です。

2015年6月29日月曜日

任天堂第75期定期株主総会

今年も参加してきました、任天堂の株主総会。
当日の京都はあいにくの雨ではありましたが、
そう暑くはなく、かえってよかったような気もします。

で、その内容はというと、別に大したことはなく、
あらかじめ送付されている通知をざっくりと舐めるだけで、
早々に質疑応答へと移りました。
どうせ当たらないだろうと思いつつも挙手していたところ、
当たったかもしてなくて、担当者がマイクを持ってきてくれたんですけど、
直後に後ろの方から質問が聞こえてきて、どうやら私じゃなかったみたいです。
それにしてもちゃんと答えてくれそうにないことばかり訊くのはねぇ。
事業内容について細かく把握していればそんな質問しないでしょ的なものも飛び出しましたし、
あー、私に質問させてくれないかな。
ところで株主総会に出席して、質疑応答に手を挙げないし、
野次も飛ばさないような方は何しにしているんでしょうかね。

もしかしてお土産目当て?
ですが今年のお土産はいつもの小さいペットボトルのお茶と、
去年より安っぽいタオルと、昨年よりも安いに違いないポケモンのお菓子で、
年々グレードが下がっているような気がします。
それはいいとしても、それらを収める紙袋には一言いいたい。
総会後は京都観光するのが私の常なのですが、
紐状の持ち手が手に食い込んで痛いので何とかしてほしいんです。
タオルやお菓子がかさばって小さめの鞄にはしまえないですし。
話を戻しますが、任天堂の株主総会だと[すれちがい]目当てというのはありえます。
今年は会場でスマートフォンを使っている方の方が多かったのが残念ですが、
Nintendo3DSを開いている方も多数おられましたし。
なお、株主総会でのすれちがいについてはまた日をあらためてということで。

余談になりますが、今年は別の会社の株主総会にも行ってきました。
そちらでは質問させてもらえたのですが、
そもそも質問したのは200人ぐらいいる中の私を含めた3人だけという静かな会でした。
ちなみにこちらのほうがお土産は豪華でした。

2015年6月25日木曜日

isaiをアップデートしちゃだめ!!

私のデータ通信用スマートフォンau isaiにファームウェアのアップデートがきました。
まさかのLollipopかと思いつつ、何の気なしにアップデートしてみると
バージョンは下表のようになりましたがKitKatのままです。
 アップデート前アップデート後
Androidバージョン4.4.24.4.2
ベースバンドバージョン M8974A-AAAANAZM-1.0.190099 M8974A-AAAANAZM-1.0.190099
カーネルバージョン3.4.03.4.0
ビルド番号KOT49I.LGL2220dKOT49I.LGL2220e
ソフトウェアバージョンLGL2220dLGL2220e

まあ改善箇所は
1.Googleパッチを適用してユーザビリティの向上
2.端末の利便性と機能性を向上
とかかれていたのでさもありないん。

しかしこのアップデートには恐るべき改悪が含まれているのでした。
なんとSIMロックフリー化していたのが無効にされ、
もう隠しメニューに入れなくなっています…orz
ドコモ系MVNOを利用していましたが、
ロック画面には「アプリケーションネットワークロック中です」と悲しいお知らせが表示され、
[設定]アプリケーションでも[モバイルデータ]メニューはオンにできません。
あー、アップデートなんてろくでもねー。
もはや後の祭りではありますが、もうアップデートがあることさえ知りたくないので、
アップデートのチェックを無効にしておきます。
[設定]アプリケーションの[一般]アイコンで
[端末情報]-[更新センター]-[ソフトウェア更新]メニューで[自動確認]のチェックを外しておきます。

事故にあってしまったことは仕方ないとして、すぐにリカバリーすることを考えます。
いろいろと事情があって、実はisaiは2台持っており、もう一つは家人に貸しております。
まああまり使っていないので、とりあえず数日はそれを借りることにします。
そして速攻でクリックしたmineoプリペイドパック(NanoSIM)が届き次第、
それをロックされたisaiに差し込んで利用することにします。
今回isaiはSIMロックされましたが、auの発行するSIMなら使えるはずなので、
au系MVNOのmineoなら多分大丈夫です。
ただし、2015年9月以降、mineoにはドコモ系SIMカードもラインナップされるので、
今はともかく、今後注意が必要になるかもしれません。
このプリペイドパックはとりあえず1GB分はデータ通信でき、
手数料なしにそのままポストペイ契約に移行できるのでお得です。
プリペイド期間中に動作確認できるので安心感もあります。
運用コストもそれなりに低いですし。
mineoの難点は12ヶ月の最低使用期間があることですが、
今の状況なら多分それ以上使うでしょうし、
それを過ぎればいつでも違約金なしで解約できますからよしとします。
もし使えないとしてもプリペイド期間満了を持って止めればいいですし。

なおisaiのmineoでの動作状況はまたの機会に書くつもりですので続報をお持ちください。
って、待ってる方もいないでしょうが。

2015年6月24日水曜日

avahi

Xenやらlxc(Linuxコンテナ)やらkvmやらVirtualBoxやら、
仮想マシンが多くなってくると各マシンへのリモートログインが面倒なことになります。
何らかの方法でそれらマシンのIPアドレスを知る必要があり、
一番の解決法は各マシンに固定のIPアドレスを設定してそれを覚えておくことでしょうか。
しかしマシンが多くなると固定IPアドレスをつけるのすら面倒ですし、
何か事情があって別のネットワークに移すとかなると地獄を見ます。
やっぱりIPアドレス配布はDHCPに任せたい。

で、少しでもいい環境にするために思いつくのが、
DHCPサーバから割り当てたIPアドレスとその配布先のホスト名を
DNSサーバに通知させてダイナミックDNSを構築し、
アクセス先をホスト名で指定できる環境にすることです。
私自身以前運用していた事があります。
ただダイナミックDNSを動かすDNSサーバと、
インターネットに接続するためのDNSサーバを別にせざるを得なかったり、
クライアントからうまいこと名前解決できるようにしなければならなかったりと、
あらゆる場面でうまく運用できるわけではありません。
というか廉価なブロードバンドルータがDHCPサーバになってるようだと多分無理です。

面倒なことはしたくないし楽な手が何かないかなと考えていた矢先、
いいものがあることを知りました。avahiです。
そういえば大昔に何かの絡みで調べた記憶がうっすらあります。
Apple社のBonjourと同種で、avahiはZeroconfの実装です。
本来Zeroconfにはいろいろ機能があるみたいですが、
ここで注目すべきは、マルチキャストDNSで
ローカルネットワーク内のマシンの名前解決をする機能です。
同一サブネット上にあり、かつavahiが動作しているマシン同士であれば、
IPアドレスではなく、ホスト名指定でアクセスできてしまいます。

avahiはUbuntu 14.04では既に入っているかもしれませんが、
以下を実行してインストールします。
# apt-get install avahi-daemon
"/etc/hostname"設定ファイルにかかれているホスト名と"local"ドメインの組み合わせで、
そのマシンが特定できます。
例えばsshでログインしたければ、
$ ssh <リモートマシンのホスト名>.local
で可能です。IPアドレスを確認する手間が省けます。

sshと言えば、私はWindowsのcygwinからのLinuxへのリモートログインも多用するので
cygwinでも使えるようにします。
すでにパッケージがインストールされているとして、cygwin(bash)上で以下を実行します。
$ /usr/bin/messagebus-config
$ /usr/sbin/avahi-daemon-config
2行目を実行した際、
*** Info: `net start avahi-daemon' or `cygrunsrv -S avahi-daemon'. Otherwise,
と表示されるので、
$ net start avahi-daemon
も実行します。しかしこの時
システム エラー 1075 が発生しました。
依存関係サービスが存在しないか、または削除の対象としてマークされています。
と表示されてしまいました。

しょうがないので[コントロールパネル]の[管理ツール]から[コンピューターの管理]を開き、
[サービスとアプリケーション]-[サービス]を見てみると、
[CYGWIN D-Bus system service]は開始されているのに
[CYGWIN Avahi servise]は開始されておらず、
手動で開始しようとしても先と同等のエラーとなります。
で、[コンピューターの管理]の[システム ツール]-[イベント ビュー]-[カスタム ビュー]-[管理イベント]
で該当エラーを見ると、どうもBonjourが必要なよう。

Apple社のサイトを見てもWindows版のBonjourは単体ではなさそうで、
iTunesを入れるしかないかと思っていたところ、
Bonjour Print Services for Windowsなるパッケージを見け、
試しにインストールしたところ、avahiも起動するようになりました。

これによりcygwinからssh時に"<ホスト名>.local"で接続先を指定できるようになりました。
のみならず、通常のコマンドプロンプトでのping等でも使えますし、
chromeブラウザ等でも"http://"をつけることでそのウェブサーバにアクセスできます。
なかなか便利です。

2015年6月23日火曜日

すれちがいガ~デン完了

Nintendo3DSでちまちま遊んでいたすれちがいガ~デンがようやく完了しました。
全種全色の花を咲かせたのに続き、
花のおしごとも全部カンペキ、金メダルとなりました。
いや~長かった。

ということですれちがい広場の現状について書き残しておきます。
まず[ピースあつめの旅]ですが、
2015年4月12日に配信された[モンスターハンター4G]まですべて集まっています。
また[すれちがい迷宮]も2周目をクリアしました。
そして[すれちがい合戦]は最後のぼうしチケットのため、
すれちがった方との対戦300回に向けてまだ150回ほど残っています。

そんな訳で、今メインで遊んでいるのは、
新作の[すれちがいフィッシング]と[すれちがいゾンビ]のみです。
とは言え[すれちがいゾンビ]はすでにクリアしており、
メダル集めを地味にやっております。ただいま44個。
ちなみに見たことがある道具が22、たおしたゾンビの数が2880、
ゾンビ図鑑は31種をコンプしていますがレアゾンビ図鑑は1種のみです。
そしてぼうしチケットは12枚集めています。

対して[すれちがいフィッシング]は遅々として進まず、
島は1つだけしかクリアできていません。
他の島は餌の集まり具合によってつまみ食いしている感じです。
なお、釣った魚の種類は52種で、
もくひょうチェックでは35個を達成済みです。
ぼうしチケットは7枚です。

広場内ゲーム以外では、
新ゲームの登場によりぼうしチケットがデフレしたため、
ぼうし交換所のぼうしはコンプできました。
そうなると次はふきだしは集めになるのでしょうが、
もう飽きたのでこちらは集める気なしです。
広場には3000人以上集まり、すれちがい回数は2041回、
お祝いリストの達成数は62、
音楽リストの残りはすれちがいフィッシング系で39、
すれちがいゾンビ系が1です。
すれちがいマップについては日本は残り5県なのですが、これが埋まらない…orz
海外は3ヶ国で、アメリカが3州、フランスとドイツが1つずつです。
最後に[すれちがい誕生日]は92日です。

今週は任天堂の株主総会が開催されます。私も出席予定です。
例年会場で数十人とすれちがいできます。
昨期は営業黒字にはなったことですし、
スペシャルMiiの配信復活にも期待したいところです。
もちろんそれだけが目当てということではありません。
質疑応答で岩田社長に当ててもらえれば質問できるようにネタは仕込んであります。

2015年6月22日月曜日

おしかったプロジェクトマネージャ試験

性懲りもなく今年も受験したプロジェクトマネージャ試験。
あと何回か受ければ偶然合格するだろう的なノリでほぼ無勉強でのぞみました。
で、最大の懸案である午後IIの論述試験のテーマが幸運にも私にとって書きやすいもので、
もしかしたらいけるかな、とか思っていましたが、
現実はそう甘くなく、B判定で不合格となってしまいました。
まああとで考えてみるとネガティブなネタを選んでしまい、
話にふくらみがなかったと反省はしております。

ちなみに今年は午前IIが96点と1問間違えただけで、
また午後Iは62点と合格ラインギリギリということで、
えらく極端な結果でした。
そのわりに午後IIがB判定というのは中途半端ではあります。

さて、こんなに書けることなど滅多にない午後IIでB判定ということで、
一体どうすりゃ合格できるんだ?
同じ論述試験でもシステムアーキテクトやITストラテジストは一発合格しましたが、
こちらは理系的、イノベーション的なのに比べ、
プロジェクトマネージャは文系的、オペレーション的なんですよね。
まあ私の個人的な感想ですが。
そんなわけで私向きでないんでしょう。

秋に受けようと考えているITサービスマネージャ試験も
多分にオペレーション的なところがあり、私には不向きと思われ、
合格はなかなか難しそうなのですが、
これを逃すと長く保持してきた午前I免除を手放すことになります。
いや、午前Iは何も勉強しなくても問題ありませんが、
開始が朝早くなるのはちょっと問題です。
そんなことを考えていると、そろそろIT系資格はもういいかなと。

2015年6月18日木曜日

ガンダムSEED DESTINYの最終話

10年以上前にテレビで機動戦士ガンダムSEEDが放送されていました。
特に興味があったわけではないのですが、
たまたま観た途中の回で知ったフェイズシフトがツボにハマり、
最終話までずっと観てしまいました。結構楽しめました。

その続編として放送された機動戦士ガンダムSEED DESTINYについては、
正直面白くなかったものの惰性で最初から最後まで観てしまいました。
最低な部分はたくさんありましたが、特に最終回の最後の場面は最悪でした。
すでに記憶が定かでないのですが、
とりあえずモビルスーツをたくさん並べた静止画だったような気がします。

時は流れ、最近になってSEED DESTINYのHDリマスター版の
最終話を観る機会があったのですが、なんか違う…
私がテレビの初回放送時に見た部分を圧縮して、
後日談を加えたような構成になっています。
きっと放送日まで時間がなかったのでテレビ版はとりあえず間に合わせで何とかして、
あとはランニングチェンジでちゃんとしたということでしょうね。

2015年6月17日水曜日

Ubuntu 14.04とKVM

XenLinuxコンテナと仮想マシンを試してみましたが、今回はKVMです。
KVMはエミュレータのQEMUとLinuxカーネルの機能と
CPUの仮想化支援機能Intel VT(またはAMD-V)を利用した仮想環境です。
ハイパーバイザー型の完全仮想化なので、使い方はXenに近くなります。
ということで前回Xenをセットアップした環境
KVMを導入する事を前提とし、そこで記述した事については、ここでは省きます。

最初にKVMのインストールのために以下を実行します。
# apt-get install qemu-kvm

ところでゲストOSをインストールするためにXenと同様"virt-install"を使ったのですが、
WARNING  KVM acceleration not available, using 'qemu'
と表示されてしまいます。ゲストOSは動いているもののかなり遅い。
環境的にはVirtualBoxのようなホスト型と変わらないはずなので、
我慢できない速度というわけではありませんが。
で、"cat /proc/cpuinfo"の実行結果を見るとvmxが見当たりません。なんで?
いろいろ調べて、Xenサポートkernelを使っているとvmxが見えなくなることが分かりました。
なるほど、XenとKVMは実質的に排他なんですね。

ということでホストOSを再起動し、ブートローダーでXenなしの'Ubuntu'を起動します。
なおこれをデフォルトで起動するようにしたければ、
# chmod 644 /boot/grub/grub.cfg
してから設定ファイル"/boot/grub/grub.cfg"の
set default="Ubuntu GNU/Linux, with Xen hypervisor"
set default="Ubuntu"
に変更し、最後に以下を実行します。
# chmod 444 /boot/grub/grub.cfg

さて、再起動後に"kvm-ok"を実行すると今度は大丈夫そうなので、
やっとのことゲストOSのインストールをします。
Xenの時と同様に以下を実行します。
# mkdir -p /opt/kvm/<仮想マシン名>
# cd /opt/kvm/<仮想マシン名>
# virt-install --name <仮想マシン名> --ram <メモリサイズ(単位:MB)> --disk <仮想HDDとなるファイル名>,size=<仮想HDDのサイズ(単位:GB)> --cdrom=<インストールDVD(ISOイメージファイル or 物理ドライブのデバイスファイル)>
ゲストOSのセッティングはXenのときと同じで構いません。
またインストールに失敗したときに消すファイルは
"/etc/libvirt/qemu/<仮想マシン名>.xml"となります。

さて、ゲストOSの起動は
virsh start <仮想マシン名>
で行います。ゲストOSにシリアルコンソールを設定していれば
virsh console <仮想マシン名>
でコンソールに接続できます。
または起動時に
virsh start <仮想マシン名> --console
とすることでそのままログインできるようになります。

さてその他の設定をしておきましょう。ホスト側で
# virsh edit <仮想マシン名>
を実行するとXML形式のゲスト環境が変更できます。
例えばvcpuタグの値でCPU数が、memoryタグでメモリ容量が変更できます。
ゲストOSで使えるネットワークインターフェイスの追加は
# virsh attach-interface <仮想マシン名> bridge <ホストのインターフェイス名> --config
で、HDDの追加は
# virsh attach-disk <仮想マシン名> <ホストのブロックデバイスファイル> hdb --config
で可能です。
これらはゲストでeth1や/dev/sdbに割り当てられます。

XenとKVMは排他ではありますが、
ブートローダで起動するカーネルを切り替えるだけなので使い分けは可能です。
ではどちらがいいかというと、個人的にはKVMですかね。
実装速度や設定面では大きな差は見られませんが、
Xen環境だとIntel VTが必要なVirtualBoxも動かないのが痛いかな。

2015年6月16日火曜日

ウェブページからメール送信

ウェブページで訪問者から何らかのメッセージを送信してもらうような場合、
最近ならウェブアプリケーション内で処理してしまうのが普通です。
すなわち、Facebookや各種ブログのように、自分が次にログインした時に
他人から届いたメッセージが読めるというようなシステムです。
企業の問い合わせページなんかでも同様のシステムが採用されている例が多いのではないでしょうか。

そこまでのシステムがなくても、ウェブページ上のフォームに色々入力してもらって、
その内容をPHP等で組んだスクリプトに渡し、
そこから特定のメールアドレスにそれら内容を含んだメールを送るようなこともできます。
特に難しくもなく、Apache+PHP程度のサーバで実現可能です。
この方法のいいところは、如何にもウェブアプリケーションっぽく見せられることと、
送信先メールアドレスを送信者から隠せる事だったりするのですが、
逆にそのメールの送信元が入力者のものではないのが問題になるかもしれませんし、
最近はSPFやらDKIMやらの関係で勝手メールサーバの肩身が狭いなんてこともあります。

ではそういう問題もなくもっとローテクでできないかというと、
いにしえからのmailtoスキームは今でも使えます。
<a href="mailto:<送信先メールアドレス>">クリックしてメール送信</a>
HTMLファイルになどと入れておいてこれをクリックさせれば
そのクライアント環境で利用可能なメールアプリケーションが起動し、
入力者はメールを使っていことを意識しながら送る事ができます。
もしメールの件名や本文にテンプレートをあらかじめ表示したければ、
先の<送信先メールアドレス>の部分を
<送信先メールアドレス>?subject=<件名>&amp;body=拝啓%0a%0d<本文>%0a%0d敬具%0a%0d
の様にすることで可能です。
さすがにこんな手を使っているサイトをとんと見た記憶がありませんが、
記憶の隅にでも止めておけば最後の手段として有効かもしれません。

2015年6月15日月曜日

おかわりSIM

現在、携帯電話とスマートフォンの2台持ちをしています。
スマートフォンau isaiはsimロックフリーにしてドコモ系MVNOを利用しています。
スマートフォンは使わないときは電源を切っていますし、
自宅等無線LANが使えるときにはそちらを利用しており、
3G/LTEでの月あたりの通信料は、スマートフォン計測の数値で1GB弱です。
ちなみに半分以上はIngressの通信分です。
まあこれは普段の月であって、旅行等をすれば通信料は多めになります。

現在利用中のMVNOのサービスは、月に約1000円で約2GBが使えます。
となると500円程度で1GB使え、必要なときに通信量を足せるサービスが、私には最適そうです。
そしてこの度登場したのが日本通信のおかわりSIMです。
500円で1GBの高速通信が基本で、通信料がオーバーすると250円加算され、
それにより余分に1GB通信できるようになります。
これを繰り替えしますが青天井ということはなく、5GBの1500円が上限となり、
以後は追加料金なしで200kbpsでの低速通信のみが可能となります。
その時でも追加料金を払って高速通信できるTurboChargeは使えます。
ただし100MB/300円や500MB/1200円と割高ですが。

私のケースで言えば、あまり使わない、あるいは普通に使う分には月額500円で済み、
何かの理由で通信料が多くなっても1500円上限ならかなり安心して使えます。
月に5GB以上の高速通信が必要なことはほとんどないでしょう。
TurboChargeを常用するような事態になるとおかわりSIMを選択する意義が薄れますが、
緊急で使うだけならまあ許せます。
ということでどうやら私にぴったりそうです。

早速現在使用中のサービスの解約手続きをとり、
おかわりSIM(ナノサイズ)を購入です。
普通のネット通販でおかわりSIMのパッケージを購入した場合、
申込手続きまで1ヶ月の猶予があるので、
使用中のサービスが切れてからおもむろに開通させればいいでしょう。
ただし、初めてMVNOのSIMカードを挿すスマートフォンだと、
おかわりSIMが動かない事態もありえるので、
発生する無駄な料金は保険料と割り切って、
おかわりSIMの動作確認を優先した方がいいかもしれません。

2015年6月11日木曜日

24KGP

とある金色の物体に"24KGP"なる刻印が押されているのに気がつきました。
まさか24金?
それにしては軽いが…調べてみてやっぱり。
GPとはgold platedの略で、つまりは金メッキということです。
まあ大昔にタダでもらったものですから、さもありなん。

2015年6月10日水曜日

Ubuntu 14.04とLinuxコンテナ

前回Xenを使ってみましたが、今回はlxc(Linuxコンテナ)です。
lxcはLinux Kernelの比較的新しいバージョンに組み込まれた機能を利用しており、
Intel VTやAMD-Vのようなハードウェアによる支援も必要ないため、
ハードルは低いもののXen等よりも制約がきついという欠点があります。
ホストとゲストで同じカーネルを利用しなければならないところはOpenVZと同じですね。
またホスト上のあるディレクトリをゲストのルートファイルシステムにするchrootな発想で、
ゲストはホストに寄生するような恰好です。
まあ、だからこそ軽くていいのですが。

では早速インストールします。以下を実行します。
# apt-get install lxc
そしてゲストOSの準備です。以下を実行します。
# lxc-create -t <テンプレート名> -n <ゲスト名>
ここでテンプレート名は、"/usr/share/lxc/templates/"ディレクトリにたくさんある
"lxc-<テンプレート名>"ファイルの中から選びます。
ホストOSはUbuntu 14.04(64bit)ですし、ここ最近はUbuntuしか扱っていないので、
迷わず"ubuntu"を選びます。
長い処理の完了直前には以下のようなメッセージが出ます。
##
# The default user is 'ubuntu' with password 'ubuntu'!
# Use the 'sudo' command to run tasks as root in the container.
##
作り付けの一般ユーザが"ubuntu"、そのパスワードが"ubuntu"という情報です。

ゲストOSを起動するには以下を実行します。
# lxc-start -n <ゲスト名>
超素早く立ち上がりコンソールが現れます。
先ほどの情報でログインして好きに使いましょう。
でも作り付けのアカウントをそのままにしておくのも何なので、
新しいユーザの作成した上で削除してしまいます。以下を実行します。
$ sudo su -
# passwd
# groupadd <グループ名>
# useradd -m -g <グループ名> -s /bin/bash -N <ユーザ名>
# passwd <ユーザ名>
# userdel -r ubuntu

この時点ではゲストのネットワークはホストのlxcbr0に接続され、
NAT経由で外部にアクセスすることになります。
ゲストを使う上ではそれでも不便はないのですが、
このままだとリモートからゲストにアクセスするのが面倒です。
ということで前回Xenでやったように
ブリッジに接続してローカルネットに直接乗り入れます。
既にbr0が存在するとして、"/var/lib/lxc/<ゲスト名>/config"設定ファイルの
lxc.network.link = lxcbr0
lxc.network.link = br0
に変更してゲストを立ち上げ直すだけで、
ネットワーク上のDHCPサーバからIPアドレスがもらえます。
もし、物理PCに2つのネットワークインターフェイスがあり、
ゲストから両方につなぎたければ、"lxc.network.*"の設定を重ねます。
すなわち以下のようにします。
lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = br0
lxc.network.hwaddr = xx:xx:xx:xx:xx:xx

lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = br1
lxc.network.hwaddr = xx:xx:xx:xx:xx:xx
これによりゲストのeth0とeth1がホストのbr0とbr1に接続されます。
ただし、このままだどDHCPでIPアドレスをもらえるのはeth0だけになります。
ゲスト側の"/etc/network/interfaces"設定ファイルに以下を追加すれば、
eth1も自動設定されるようになります。
auto eth1
iface eth1 inet dhcp

ゲストOSのルートファイルシステムの実体は
"/var/lib/lxc/<ゲスト名>/rootfs"ディレクトリになります。
ここには見慣れた光景があります。
当然ゲストもホストもアクセスできます。
もしゲストの作業領域を別に用意したければ、
"/var/lib/lxc/<ゲスト名>/fstab"設定ファイルに例えば
/opt3 opt2 none bind,create=dir
のように記述すると、
ゲストの"/opt2"からホスト上の"/opt3"へアクセスできます。
排他的に物理パーティションを使わなければならないXenとは正反対で、
ホストにマウントしていなければゲストから利用できません。
注意すべき点は、ホストのユーザーとゲストのユーザーは別物ということで、
共有ディレクトリ内であっても、
個別のファイルを共有するには適切にパーミッションを設定する必要があります。

以上で十分常用できる環境にはなりますが、
DVDからインストールしたUbuntu 14.04とは異なる点もあります。
とりあえず私は2点ほどに出会いました。
一つ目はパッケージ管理のための"apt-add-repository"が
ゲスト環境にはなかったことです。
これはゲスト環境で
# apt-get install software-properties-common
を実行することで解決できました。
もう一つは"apt-get install"で":i386"付きな32ビットのライブラリパッケージが
インストールできなかったことです。
しょうがないので32ビットのlib*.soをホストからコピーしてきて
ゲストの"/lib/i386-linux-gnu/"ディレクトリに置き、
ゲストで
# echo '/lib/i386-linux-gnu' > /etc/ld.so.conf.d/<ライブラリ名>.conf
# ldconfig
を実行するとなんとかなりました。
こんな小手先の技を使うのも悪くはないですが、
lxcでうまく動かなければ素直に他の仮想環境を使った方が多分楽です。

2015年6月9日火曜日

スマートフォンでヘッドフォンのボタンを押すと

リモコンボタン付きイヤフォンって、
私が初めて購入した携帯型ステレオカセットプレーヤーにもついていました。
うーん、完全に歳がバレますね。
ちなみにそれはWalkmanではありません。
その頃からソニー嫌いの片鱗はあったんですね。

それはおいておいて、最近のスマートフォンでもボタン付きイヤホンは利用されています。
現在私のデータ通信用メイン機au isaiには、
ボタンが3つとマイクのついた、ワンセグテレビのアンテナ兼用のイヤフォンが同梱されていました。
ケーブルがきしめんなのが少々鬱陶しいですが、
この方がかえって絡まりにくくていいのかもしれません。

で、この3つのボタンのうち2つは音量のアップダウンに使えます。
残りの1つは決定ボタンみたいなもので、
アプリケーションによってはいろいろ動作させる事ができるようですが、
長押しするとなんと音声検索が起動するんですね。初めて知りました。
まあイヤフォンなど滅多に使用しないので、あまり関係ないのですが。

ところでこのイヤフォンをNexus7(2013/WiFi)につないでも、
長押しで音声検索が起動できました。
しかし音量については調整できません。
調べてみるとAndroidではその辺の規格が端末により異なるようで、
音声検索が起動しているのも実は奇跡なのかもしれません。

イヤフォンの分野もだいぶ無線が幅を利かすようになってきており、
LDACなるコーデックの登場によりBluetoothでも音楽鑑賞できるレベルにはなってきているようです。
有線のイヤフォンがニッチに追いやられる日も遠い未来ではないかもしれません。
それにしても新しいMacBookはAppleらしくなく返す返すも残念です。
外部端子を1ポートのUSB Type-Cだけにするというすごい割り切りをしているくせに、
アナログのイヤフォン端子だけは残っているのはねぇ。
ユーザーの使い勝手を考えての事なんでしょうけど、
だったらUSB Type-Aを2ポートほど余計につけとけよ、とか思ってしまいます。

ちなみにMacBook Proで前から不親切だと感じているのは、
起動時に起動音の音量が制御できないことです。
って、イヤフォンを挿してればスピーカーから音が出ないので、
もしかしてそのために新しいMacBookでもイヤフォン端子を残しているのか?
と思ったら手元のMacBook Proではイヤフォン挿してても起動音が爆音で鳴りました。

何だか話が脱線してきましたが、ついでなのでこの機会にちょっと調べてみると、
MuteConというアプリケーションを常駐させることで、Macの電源オフ時に強制的にミュートさせることができ、
結果起動音を鳴らなくすることはできるようです。
しかし、BootcampでWindowsを立ち上げていたりするケースでは対応できません。
Windows用の同様の機能を持つアプリケーションを導入して穴を塞ぐ必要があります。
またトリプルブートでUbuntuがあったりするとそちらも別途対応となります。
まあ実は起動音には自己診断結果の通知という側面もあるので、
私は鳴らしっぱなしにしておくことになりました。
重いのでそうそう持ち歩くつもりもありませんし、
他人の迷惑になる事もないでしょうから。

2015年6月8日月曜日

IngressがLevel9に

最盛期から比べればかなり緩めにやっているIngress
Level8から1ヶ月強でLevel9となりました。
AP集めのペースは以前より加速していますが、
強くなってリンクのたくさん張られた敵ポータルを焼いて大きく稼げるので、
効率がよくなっているんですよね。

さて、Level9になるには金・銀メダルを必要数集めなければなりませんが、
Sojourner(金)、Trekker(銀)はまじめ(?)にプレーを続けていれば自然ともらえます。
また、意図せずたまったXMの消費のために、遠くのポータルキーを頻繁にリチャージしていると、
Recharger(銀)が簡単にもらえます。
あとはまめにグリフハックしてTranslator(銀)を獲得しました。
なおステータスの詳細は後述します。
Level9にはこれでも十分でしたが、事情があってLevel10までは上げたいため、
頑張ってミッションを25個クリアし、SpecOps(銀)を取りました。
またRecharger(金)は特に頑張らなくとも取れました。
これでLevel10への残り要件は1600000APだけとなります。
これからは暑さが本格的になりますし、もうだいぶ飽きてきたので、
さらに緩めにプレーして、3~4ヶ月かけてLevel10にしようかと考えているところです。

最後に参考までに私のLevel9昇格直後ぐらいの状況を書き残しておきます。
獲得APは 2412428AP です。
メダルは以下のものが銅メダルです。
Verified,Explorer,Pioneer,Connector,Guardian,Liberator,Mind Controller,Engineer,Builder,Purifier
取得した銀メダルは以下のとおりです。
SpecOps,Translator,Trekker
そして金メダルは以下のとおりです。
Sojourner,Recharger
あと色々な数値は以下のとおりです。
Unique Portals Visited402
XM Collected10439269XM
Distance Walked276km
Resonators Deployed3361
Links Created588
Control Fields Created 195
Mind Units Captured1557MUs
Longest LinkEver Created2km
LargestControl Field287MUs
XM Recharged3326203XM
Portals Captured333
Unique Portals Captured118
Mods Deployed451
Resonators Destroyed2035
Portals Neutralized242
Enemy Links Destroyed758
Enemy Control Fields Destroyed506
Max Time Portal Held9days
Max Time Link Maintained2days
Max Link Length x Days2km-days
Max Time Field Held2days
Largest Field MUs x Days204MU-days
Unique Mission Completed25
Hacks2873
Glyph Hack Points3613
Longest Hacking Streak92days

2015年6月4日木曜日

コンタクトレンズが飛んだ

なんだか言葉で説明し辛いのですが、
蛍光灯2個点灯/1個点灯/豆電球点灯/消灯をひもを引っ張って切り替える
天井に吊るす照明器具がありますよね。
こんなののことです。
これのひもが長くできるように延長ひもをつけているんですけど、
先日この下についてる大きなつまみが目に当たってコンタクトレンズ(ハード)が吹っ飛びました。
いや、ヒットの瞬間は目をつぶっていたと思いますし、別に痛かったわけでもなく、
しばらく気が付かなかったんですけど。

そもそもほぼ純粋乱視(円錐角膜)の私はハードのコンタクトレンズを使っています。
で、コンタクトがなくてもそれなりに見えるので、
時々つけてるのかつけてないのかわからなくなります。
今回もそんな調子で外れたことに長時間気づかなかったのですが、
どうも外れてるような気がする。
鏡で確認すると確かにないし、ずれてもない。
いったいどこにいったのか行動を思い返してみて、
先の延長ひもが目に当たったことぐらいしか思い当たらない。
で、部屋の中を探し回ってみるも見つからない。

今使っているのはもう十数年ほど前に作ったもので、
数年ほど前に買い換えようかと眼科医に診てもらった際に、
度も合っているしレンズもきれいだし、買い換える必要ないとかいわれたので
今でもそのまま使っています。
というわけで、十分元は取ってるとはいいつつも、
予定外の出費は痛いのでさらに探していると…ありました。
2mぐらい先に吹っ飛んでいました。結構飛ぶものなんですね。
いや、これだけ飛んだことでかえって踏んだりせずにすみました。

ずれて取れなくなったり、洗ってて落としたりということは何度も経験しましたが、
こんな落とし方は初めてです。
元プロ野球選手の達川捕手(広島)が試合中に落として
大騒ぎしていたことをふと思い出しました。

2015年6月3日水曜日

Ubuntu 14.04とXen

CDブートできなかったPCの呪いが最近になって解けました。
そこでwubiでのインストールによるlupin環境では動かすことができなかった
Xen仮想環境をUbuntu 14.04で使ってみることにしました。
DVDブートしてUbuntu 14.04専用PCを仕立てるところまでは省くとし、
ここではXen導入から書くことにします。

まずは以下を実行してホスト環境のセットアップです。
# apt-get install xen-hypervisor-amd64
# update-grub
# reboot
ブートメニューで[Ubuntu GNU/Linux, with Xen hypervisor]が自動起動されるようになり、
これでホストOS(Domain0)環境が整います。
ホストOSはもちろん何の変哲もないLinux環境として引き続き普通に使えます。

そして設定ファイル"/etc/xen/xend-config.sxp"については、
(network-script network-bridge)
の行が存在していることを確かめておきます。

次にゲストOS(DomainU)のインストールツールを導入します。
# apt-get install virtinst
# apt-get install virt-viewer

続いて仮想ネットワークの準備です。
設定ファイル"/etc/network/interfaces"の末行に以下を追加します。
auto br0
iface br0 inet dhcp
  bridge_ports eth0
再起動するとネットワーク接続にeth0インターフェイスを直接使うのを止めて、
代わりにbr0インターフェイスを使用するようになります。
br0とeth0の間に仮想スイッチングハブを挿んで、
そこにゲストOSもつなげられるようにするイメージです。

ところでUbuntuではNetworkMangerなるデーモンが動いていて
それがネットワークの管理をしてくれるようです。
先に直接設定ファイルを触ってしまいましたが、これらが干渉する可能性があるようです。
私の環境ではネットワークが頻繁に切れ(そういう通知が画面右上に出てくる)ました。
ということでNetworkMangerは、以下を実行して止めておいた方が良さそうです。
# stop network-manager
# echo "manual" > /etc/init/network-manager.override

いよいよゲストOSのインストールです。
が、その前に完全仮想化か準仮想化を選択しなければなりません。
前者はCPUに支援機能が必要で、後者はそれなりに対応したゲストOSが必要になります。
Intel VTやAMD-Vが使えるのなら、深く考えず完全仮想化でいいと思われます。
ということで完全仮想化でインストールにかかります。以下を実行します。
# mkdir -p /opt/xen/<仮想マシン名>
# cd /opt/xen/<仮想マシン名>
# virt-install --connect=xen:/// --hvm --name <仮想マシン名> --ram <メモリサイズ(単位:MB)> --disk <仮想HDDとなるファイル名>,size=<仮想HDDのサイズ(単位:GB)> --cdrom=<インストールDVD(ISOイメージファイル or 物理ドライブのデバイスファイル)>
この後virt-viewerが立ち上がりで仮想マシンの画面が表示されるので、
普通のPCにインストールするのと同様の感覚で作業が進められます。
もし何らかの理由でインストールを途中止めした場合、
同じ仮想マシン名で仮想マシンを作ろうとしてもエラーになります。
その場合は以下を実行して一旦削除する必要があります。
# rm /etc/libvirt/libxl/<仮想マシン名>.xml
# reboot

さて、今回私はホストOSと同じUbuntu 14.04をゲストOSとしてインストールしましたが、
インストールが完了した流れでそのままある程度の設定を行います。
以下を実行してrootユーザの設定を行い、
sshサーバを立ち上げ、シリアルコンソールを設定し、終了させます。
$ sudo su -
# passwd
# exit
$ su -
# apt-get update
# apt-get install openssh-server
# update-rc.d ssh defaults
# apt-get install vim
# cd /etc/init/
# cp tty1.conf  ttyS0.conf 
# sed -e 's/tty1/ttyS0/' < tty1.conf > ttyS0.conf 
# shutdown -h now
なお、ゲストOSのIPアドレスが分からないときに、
最後の砦となるのがシリアルコンソールになります。

インストールできたゲストOSを普段使えるようにします。
以下を実行してxlコマンドで操作できるようにします。
# virsh -c xen:/// domxml-to-native xen-xm /etc/libvirt/libxl/<仮想マシン名>.xml > /etc/xen/<仮想マシン名>
この後は
# xl create -c /etc/xen/<仮想マシン名>
を実行することでゲストOSが立ち上がります。
ここで現れるコンソールはゲストOSのシリアルコンソールで、
ちゃんと設定していないと何も出ません。
ネットワーク経由での接続のみが頼りとなります。
なお、このコンソールを閉じるには[crrl]+[']']を押します。

ちなみに、xlコマンドには多数のサブコマンドがありますが、
とりあえず以下を覚えておきましょう。
xl list
稼働中OS(ホスト+ゲスト)の一覧
xl shutdown <仮想マシン名>
ゲストOSの終了
xl destroy <仮想マシン名>
ゲストOSの強制終了
xl console <仮想マシン名>
稼働中のゲストOSにシリアルコンソールで接続
xl create /etc/xen/<仮想マシン名>
ゲストOSを起動
xl create -c /etc/xen/<仮想マシン名>
ゲストOSを起動してシリアルコンソールを開く
xl top
稼働中OSのリソース状況

最後に仮想マシンの設定を直すため、
"/etc/xen/<仮想マシン名>"ファイルを編集します。
メモリ(memory)やCPU数(vcpus)はホストマシンに合わせて調整すればいいでしょう。
他でおすすめなのはHDDとネットワークの追加です。
disk = [ "file:<仮想HDDとなるファイル名のフルパス>,hda,w", ",hdc:cdrom,r" ]
disk = [ "file:<仮想HDDとなるファイル名のフルパス>,hda,w", ",hdc:cdrom,r", "phy:<物理HDDのパーティションのデバイスファイル>,hdb,w" ]
のように変更すると、指定したHDDのパーティションが
そのままゲストOSからアクセスできるようになります。
ゲストOSで以下のように実行すれば"/opt2"にマウントできます。
# mkdir -p /opt2
# mount -t ext4 /dev/xvdb /opt2
ただし、ホストOSで未マウントである必要があります。つまり排他使用ということです。
システムは小さな仮想HDDにしておけばバックアップや移動が容易になりますし、
大きな物理パーティションを作業領域にすればパフォーマンスが上がりますし、
多種のゲストOSから同一の大きな物理パーティションを切り替えて使うなんてこともできます。

ネットワークについては
vif = [ "mac=xx:xx:xx:xx:xx:xx,bridge=br0,script=vif-bridge" ]
vif = [ "mac=xx:xx:xx:xx:xx:xx,bridge=br0,script=vif-bridge","bridge=virbr0,script=vif-bridge" ]
に変更しておきます。
virbr0はローカルマシン内の閉じたネットワークです。
ホストOSがDHCPサーバとなり、
"/var/lib/libvirt/dnsmasq/default.leases"ログファイルに
ホスト名とMACと、それに配布したIPアドレスが記録されるので、
ゲストOSのIPアドレスを探ることができ、
万一シリアルコンソールでつながらなくなったときに頼みの綱のIPアドレスが分かります。
なお、ホストOSのDHCPサーバは
# virsh net-edit default
で設定ファイルを編集できます。
ちなみに複数のネットワークポートを搭載するマシンだと
br1を追加するようなこともあるでしょうが、
その場合はmacアドレスも設定した方がいいようです。
書いていないと、起動毎にmacアドレスが変わってしまうのか、
DHCPサーバからもらうIPアドレスが毎回違うなんてことになります。

VMwareなどと比べてはるかにとっつきにくいXenですが、
非常に便利ですので使いでがあります。

2015年6月2日火曜日

タスクスケジューラの電源オフ中のイベント

Windows7タスクスケジューラで毎日一定時刻にアプリケーションを起動しているのですが、
大した問題ではないので特に気にしていなかった、前々から体験していた不思議な現象の原因が、
ひょんなことからタスクスケジューラにある事が分かりました。

実はタスクスケジューラにある時刻に何かするように設定していると、
その時刻にPCの電源がオフだった場合、
指定時刻から相当な時間が経過していたとしても、次の起動時に実行されてしまいます。
それがあるべき姿のような気もしますが、用途によっては余計なお世話です。

例えば職場で平日だけ実行したい事を[毎日]するように設定していて、
週末はPCの電源が入らないようなケースでは、
週明けの朝にPCの電源を入れた直後に過ぎた週末分まで実行してしまうことになります。
ちなみにこのような場合、タスクスケジューラで[毎日]ではなく[毎週]実行するよう設定し、
月曜日から金曜日のチェックボックスをすべてチェックしておけば解決できます。

2015年6月1日月曜日

デスクトップPCにトラックパッド

プライベートでのメインマシンMacBookProには
ポインティングデバイスとしてトラックパッドが付いています。
これに慣れてしまうとマウスより使いやすくていいんですよね。
絵を1ビット単位で修正するとかいうような
細かい作業をするときはマウスの方がいいのですが、
普段の雑な操作で問題ない作業ではトラックパッドのほうが操作性がよく、
手の負担も少なくてすみます。

というわけで、Windows7なデスクトップPCで使えるようなタブレットを買ってみることにしました。
本当はApple純正のMagic TrackpadがMacBookProと質感が似てそうで良さそうなのですが、
接続がBluetoothというのが気に入りません。
もちろんWindowsでもBootcamp用のドライバを導入したり、
USB接続のBluetoothアダプターを挿せば快適に使えるはずなのですが、
BIOSとか他のOSとかキーボード・マウス切替器とか考慮して
ELECOM M-TP01DSWHにしました。
この製品にはWindows8対応との記述がありますが、
ジェスチャーを諦めればWindows7でもUbuntu14.04でも汎用ドライバでしっかり使えます。

実際に使ってみると、さわり心地がマウスのT620に近く、
長時間擦っていると指の腹がヒリヒリします。
このあたりApple品質には程遠いという印象です。
機能的には2本指スワイプでスクロースがしっかりできるので納得はできます。
ただ細かくポイントするのはしんどいのでマウスとの併用がよさそうです。
私はキーボードの右にマウス、左にトラックパッドを置いて、
トラックポイントは左手で専らスクロール操作に使用しています。
なお、ジェスチャーについては、Ubuntu14.04でしか確認していませんが、
三本指での上下フリックで[コンピューターとオンラインリソースを検索]が開き、
4本指上下スワイプで音量の制御もできます。
Chromeブラウザでなら三本指での左右フリックでのページ戻り/送りが行え、
ピンチイン/アウトでページの拡大縮小もできます。
結構便利です。