Arch LinuxホストのKVMにゲストをインストールしたときのメモ

個人的に設定を忘れないためのメモなので、特に読む必要はない。

前提条件

virt-managerから起動しようとすると色々permission deniedとかでたので/etc/libvirt/qemu.confの変更

# The user for QEMU processes run by the system instance. It can be
# specified as a user name or as a user id. The qemu driver will try to
# parse this value first as a name and then, if the name doesn't exist,
# as a user id.
#
# Since a sequence of digits is a valid user name, a leading plus sign
# can be used to ensure that a user id will not be interpreted as a user
# name.
#
# Some examples of valid values are:
#
#       user = "qemu"   # A user named "qemu"
#       user = "+0"     # Super user (uid=0)
#       user = "100"    # A user named "100" or a user with uid=100
#
user = "root"

# The group for QEMU processes run by the system instance. It can be
# specified in a similar way to user.
group="root"
# Path to the setuid helper for creating tap devices.  This executable
# is used to create <source type='bridge'> interfaces when libvirtd is
# running unprivileged.  libvirt invokes the helper directly, instead
# of using "-netdev bridge", for security reasons.
bridge_helper = "/usr/lib/qemu/qemu-bridge-helper"

vnet0にIPv4が割り当てられていないっぽかったので、iptablesの変更

# iptables -I FORWARD -m physdev  --physdev-is-bridged -j ACCEPT

PT3 + recdvb + MirakurunでNHK BSプレミアムのEGPが取得できない問題に対応

PT3で録画するために http://cgi1.plala.or.jp/~sat/?x=entry:entry160313-022002 のrecdvbを使っていいたのだが、NHK BSプレミアムEPGの取得ができなかった。
正確に言うと、NHK BSプレミアムだけに限らず同じチャンネルでTSIDが異なる放送局のEPGが取得できなかった。


なので、BSxy_z形式のチャンネルはtune()時にTSIDを指定するように変更した。
https://gist.github.com/2GMon/3621dd5054ab20c2a8c565fc236de093

Pebble Timeを使い始めたのでAndroid Wearと比較

Pebble Timeが11月17日にamazon.comから届いて1週間使ってみた結果とても気に入ったので、今まで使っていたAndroid Wear(LG Watch R)との比較をしてみようと思います。
LG Watch Rを1年近く使い続けてはいるのですが、Android Wearのバッテリーの持ち具合と充電に専用クレードルが必要という運用のしづらさに辟易していました。一日充電忘れた時や旅行の時に使えなくなるのはツラいです。そんな時にPebble Timeは技適に通っていて、日本語フォントパックも存在するというのを見かけたので11月7日にポチってしまいました。10日で届くとはなかなか早いです。

amazon.jpでも購入できるものを、なぜamazon.comで購入したかというと、単純に安かったからです。156ドル(20,000円以下)で購入できました。amazon.jpだと翌日には届いているのでしょうが、27,000円なのでだいぶお高いです。7,000円払うなら10日くらい待っても全然問題なかったのでamazon.comを選びました。
ヤフオクで落札というのも考えたのですが、これも23,0000円くらいになりそうな感じです(amazon.comで購入して、ヤフオクに流せば儲かる?)

スマートウォッチに以下の機能を求めている人間が、Pebble Timeを褒めるために書いた比較ということを念頭に置いたうえで読んでください。

  • ポケットや鞄から携帯を取り出して通知を確認するのが面倒なので、手軽に通知を確認できる (ポケットや鞄から携帯を取り出した時にどうでもいい通知だとイラッとする)
  • バッテリーの充電がしやすい
  • バッテリーが長持ちする

デザイン

ファッション性などは興味が無いのでよくわかりません。
初めてLG Watch Rを着けた時は特に何も感じなかったのですが、Pebble Timeと着け比べてみると大きく感じます。特に気になったのが分厚さです。測ってみると数mmしか違わないのですが、Pebble Timeの方が袖に引っかかったりしないのでストレスが少ないです。
一方、一番の違いであるディスプレイの形は円形でも矩形でも使い勝手はあまり変わりません。 バンドに関しては、LG Watch Rの皮っぽいバンドよりも、Pebble Timeのさらさらした感じのやわらかいゴムバンドのほうが気に入っています。

バッテリー・充電方法

LG Watch Rは1.5日くらい保つので普段使いには困らないのですが、旅行に行った時などに困りました。旅行先でもモバイルバッテリーなどで毎日充電すればいいのですが、専用のクレードルを持ち運ぶ労力が意外とバカになりません。この点ではmicroUSBで充電できるsonyのsmartwatchは素晴らしいと思います。
今のところPebble Timeは4.5日くらい保っています。充電時間も短いので、2日に1回くらい風呂に入っている間に充電すれば十分使えています。しばらく充電を忘れても使える安心感は素晴らしいです。Pebble TimeもmicroUSBではなく、専用の充電ケーブルが必要なので充電方法についてはどっちもどっちです。しかし、短期間の旅行であれば充電の必要がないため便利だと思います。
風呂に入っている間に充電が完了するので、寝ている間もPebble Timeを着けています。このおかげでアラームを設定しておけば目覚ましとしても利用できます。今まで大音量目覚まし時計を使っていたのですが、それよりもバイブレーションの方が気持ちよく起きることができています。

操作感

アプリのメニューなどで一気に移動したいときはタッチパネルで操作できるLG Watch Rの方が圧倒的に便利です。さらに、Pebble Timeはボタン操作なので本体をしっかり掴んで操作する必要があり、操作感はタッチパネルに劣ります。しかし、通知を消すくらいしか操作しないので、そこまで気にすることはないと思っています。

通知機能

直ぐに確認する必要のないアプリからの通知がくると鬱陶しいので、LG Watch R, Pebble Time共に通知しないアプリを設定できるのは便利です。また、LG Watch Rに来た通知を左にスワイプしてできる操作はPebble Timeでもできるようです。(Android Wearアプリをインストールしている場合のみ?)
Pebble Timeの方が便利だと思ったのは、同じアプリから複数の通知が来たときの操作、バイブレーションが強いこと、バイブレーションさせない時間帯を指定できることです。LG Watch Rだと通知が折りたたまれてしまって特定の通知を選択しにくいのですが、Pebble Timeは上下のボタンを2度押しすることで切り替えていくことができます。バイブレーションも強く気づかないことがなくなりました。そして、寝ている間に着けていても通知で起こされるということがありません。
逆にLG Watch Rの方が便利だと思ったのは、Gmailのプレビューが全文きちんと表示されることです。Pebble Timeは後ろの方が省略されてしまったり、日本語化パッケージに入っていない文字が豆腐になってしまいます。

あと、Google Nowを全く使わないのでLG Watch Rで表示されるのが鬱陶しかったのですが、Pebble Timeはそれがなくて快適です。

アプリ

LG Watch Rの方がアプリでできることは多いと思うのですが、個人的にスマートウォッチで操作が必要なアプリを使いたいと思わないのでPebble Timeでも十分です。音楽の一時停止、音量変更、曲スキップくらいはPebble Timeでもできています。ボタンを押す回数が多いので面倒くさいし、ちゃんと動いてくれなかったりもするけど…

センサー

LG Watch Rには心拍計や気圧センサーも入っていますが、Pebble Timeは3軸加速度センサーだけのようです。なので、アクティビティトラッカーなどとして利用したい場合はあまり役に立たないと思います。歩数ぐらいは取れますが。
Pebble Timeの搭載センサーは少ないですが、Fitbit Charge HRも利用しているので、気にしていません。腕に2つもバンドを巻くのは嫌な人の方が多いと思うので、これは参考にならないかも。

まとめ

スマートウォッチでいろいろ操作したいなどを求めなければPebble Timeサイコーです。でも、Pebble Timeの方がいいと思っているのは基本的にバッテリー周りだけで、他の機能はどっちでもあまり変わらないと思っているので、バッテリーの保ちが良くて充電用クレードルが必要ないAndroid Wearが出てくればそっちに乗り換える気もしてます。

ほとんどのスマートウォッチメーカーは何でバッテリー保ちや充電方法を優先してくれないんでしょうかね?

Acme::Nogizaka46を作ってみた

2015年11月26日に紅白歌合戦の出演者発表があるというニュースを見かけて以下の記事を思い出しました。


"第一回ももクロハッカソンに参加して Acme::MomoiroClover リリースしました - 2nd life" http://secondlife.hatenablog.jp/entry/20110904/1315129581

何故今更 Acme::MomoiroClover を作ったかと云うと、今までに日本のアイドルの Acme シリーズは二つ、Acme::MorningMusume と Acme::AKB48 があります。その Acme が存在するアイドル2ユニットに共通していえることの一つに、どちらも紅白歌合戦に参加したことがあることが言えます。つまるところ、日本の Acme::アイドル が作られたのユニットは100%紅白出場しているため、ももクロちゃんの今の目標である紅白歌合戦出場をほんの少しでもサポートできたらと思い、験担ぎの意味を込めて作りました!!

ももクロもちゃんと紅白出演しましたね。一方、乃木坂ちゃんたちは2014年の紅白歌合戦に出演確定とか言われていながら、不祥事などがあったせいか出演できませんでした。そこで、今年こそは出演して欲しいと思い応援するためにAcme::Nogizaka46を作りました。初めてのperlとモジュールの登録とに手間取りましたが、ぎりぎり発表に間に合ってよかったです。まあ、NHK内ではもう決まっていると思うので、応援という意味では今更作っても無駄なのかもしれませんが…

Acme::MorningMusumeのコピペモジュールなので使い方が変わらないですし、書くのが面倒くさいので使い方はREADMEを読んでください。(自己満足のために作りたかっただけで、利用されるとは思ってないのもある)


一応、今回モジュールを作る上で勉強したことをさらっとまとめておきます。

モジュールの作り方

いまだとMinillaを使うのが良さそうでした。
http://qiita.com/ishikawa@github/items/e02baedec4990120299d

CPAN Authorになるために

CPAN側の変更が少しありますが、大体以下の通りでできました。
http://www.kawa.net/works/perl/tips/cpan.html

感想

初めてperlを書きましたが、perlオブジェクト指向はなかなか独特で慣れるのに時間がかかりそうだと感じました。すでにruby, php, pythonはある程度書けるので、自分で新しくperlで何か書くことはないかな。ですが、perlモジュールをしっかり読んだことでperlへの抵抗感はかなり薄れたので良かったのではないかと思ってます。

ただのコピペモジュールのままでは寂しいから、乃木坂46のことを好きでいる間は何らかのデータを増やせていければいいなぁ

awesomeの全てのtagにアプリを表示する

mikutterといつも一緒にいられるプラグインを作りました! - もぐてっくを見て良さそうだと思ったので、WMにawesomeを使っているのであればプラグインをインストールしなくてもいい方法をメモしておく。


デフォルトでショートカット(おそらくMod + Control + Shift + 数字)が設定されてるawful.client.toggletagを使ってもいいと思うが、いちいち手動で設定するのも面倒くさい。
できれば、アプリ起動時に自動的に全てのtagに表示されて欲しい。
このようなとき、awful.rulesを利用すれば実現できる。https://awesome.naquadah.org/doc/api/modules/awful.rules.html


例えば、以下のようにすればmikutterを起動した時に1〜9までの全てのtagにmikutterが表示されるようになる。

show_in_all_tags = function(c)
    c:tags({tags[client.focus.screen][1], tags[client.focus.screen][2], tags[client.focus.screen][3],
    tags[client.focus.screen][4], tags[client.focus.screen][5], tags[client.focus.screen][6],
    tags[client.focus.screen][7], tags[client.focus.screen][8], tags[client.focus.screen][9]})
end

awful.rules.rules = {
    { rule = { class = "Mikutter.rb" },
      callback = function(c) show_in_all_tags(c) end },
}

ISUCON4オンライン予選に参加した

同期の@foostan@wozakiと参加してきた。


一瞬でも1位になりたくて、10時に速攻でインスタンス立ち上げてベンチ走らせたが、少し手間取り結局2位。これが今回の最高順位で、最終的なスコアは22500くらいになった。

やったこと

  • DBにindex貼った
  • High Performance Railsでerbよりslimの方が速いと書いてあったのでslimにした
  • slimにしたらスコアが下がったのでerbに戻した
  • 静的ファイルはnginxで返すようにした
  • ベンチマークの並列度を上げてみた
  • nginxのToo many open filesに悩んだ結果、ファイルディスクリプタの上限を変更すればいいことに気づいた(worker_rlimit_nofile)
  • nginxのCannot assign requested addressに悩んだ結果、TIME_WAITのコネクションを早く開放すればいいことに気づいた(tcp_tw_recycle)
  • ログインに失敗した回数をusersテーブルに入れようとして失敗
  • クエリをEXPLAINで眺めたりしていた

やりたかったこと

やった効果があまり感じられなかったもの

  • プロファイリング
  • top, vmstat

反省

  • top、vmstat、プロファイリング結果よりもレスポンスタイムをもっと見ればよかった
  • ファイルディスクリプタとTIME_WAITを知らないせいで時間を使いすぎてアプリの変更をする時間がほとんど無かった
  • 再起動用のコマンドをalias登録などしておけばよかった
  • AWSのクーポンをもらっているのだから人数分+計測用のインスタンスを立てればよかった

ベンチマークの並列度を上げた状態で捌ききるために、ファイルディスクリプタ上限とTIME_WAITを対応するだけでスコアが20000になったが、それ以外のチューニングがほとんどできなかったのが辛い。まだまだ知識や経験が不足してるのを実感した。次の機会は頑張りたい。

最近のPCSCでカードリーダーSCR3310をつかう

pcsc-tools 1.4系ではSCR3310-NTTComのデバイス情報が削除されているようなので、デバイス情報を追加するだけでよい。以下の3つを/usr/lib/pcsc/drivers/ifd-ccid.bundle/Contents/Info.plistに追加する(Debian Wheezyの場合)

  • ifdVendorIDの最後に0x04E6
  • ifdProductIDの最後に0x511A
  • ifdFriendlyNameの最後にNTTCom SCR3310

追加した後pcscdを再起動すればカードリーダーが使えるようになるはず