2013年8月24日土曜日

Ubuntu 12.04 に Xen をインストールする(失敗)

参考: http://gihyo.jp/admin/serial/01/ubuntu-recipe/0198

Ubuntuをホスト環境としてXenインストールするために xen-hypervisor-4.1 というパッケージを入れればよいと書いてありますが、4.1の部分は変わっているかもしれないので、「xen-hypervisor」という名前を含むパッケージを探すと:

$ apt-cache search xen-hypervisor

xen-hypervisor-4.1-amd64 - Xen Hypervisor on AMD64
xen-hypervisor-4.1-i386 - Xen Hypervisor on i386
と出たので、「xen-hypervisor-4.1-amd64」を入れようと試みました。

$ sudo apt-get install xen-hypervisor-4.1-amd64

以下の特別パッケージがインストールされます:
  bridge-utils libaio1 libc6-xen librados2 librbd1 libxen-4.1 libxenstore3.0
  qemu-keymaps qemu-utils xen-utils-4.1 xen-utils-common xenstore-utils
提案パッケージ:
  xen-docs-4.1
推奨パッケージ:
  xen-hypervisor-4.1
以下のパッケージが新たにインストールされます:
  bridge-utils libaio1 libc6-xen librados2 librbd1 libxen-4.1 libxenstore3.0
  qemu-keymaps qemu-utils xen-hypervisor-4.1-amd64 xen-utils-4.1
  xen-utils-common xenstore-utils
アップグレード: 0 個、新規インストール: 13 個、削除: 0 個、保留: 4 個。
5,200 kB のアーカイブを取得する必要があります。
この操作後に追加で 13.3 MB のディスク容量が消費されます。
続行しますか [Y/n]? Y
取得:1 http://jp.archive.ubuntu.com/ubuntu/ precise-updates/main bridge-utils i386 1.5-2ubuntu7 [32.0 kB]
取得:2 http://jp.archive.ubuntu.com/ubuntu/ precise/main libaio1 i386 0.3.109-2ubuntu1 [6,648 B]
取得:3 http://jp.archive.ubuntu.com/ubuntu/ precise-updates/main libc6-xen i386 2.15-0ubuntu10.4 [1,241 kB]
取得:4 http://jp.archive.ubuntu.com/ubuntu/ precise-updates/main librados2 i386 0.41-1ubuntu2.1 [817 kB]
取得:5 http://jp.archive.ubuntu.com/ubuntu/ precise-updates/main librbd1 i386 0.41-1ubuntu2.1 [53.9 kB]
取得:6 http://jp.archive.ubuntu.com/ubuntu/ precise-updates/main libxen-4.1 i386 4.1.2-2ubuntu2.10 [141 kB]
取得:7 http://jp.archive.ubuntu.com/ubuntu/ precise-updates/main libxenstore3.0 i386 4.1.2-2ubuntu2.10 [20.7 kB]
取得:8 http://jp.archive.ubuntu.com/ubuntu/ precise-updates/universe qemu-keymaps all 1.0.50-2012.03-0ubuntu2.1 [19.1 kB]
取得:9 http://jp.archive.ubuntu.com/ubuntu/ precise-updates/main qemu-utils i386 1.0+noroms-0ubuntu14.10 [383 kB]
取得:10 http://jp.archive.ubuntu.com/ubuntu/ precise-updates/universe xen-hypervisor-4.1-amd64 i386 4.1.2-2ubuntu2.10 [742 kB]
取得:11 http://jp.archive.ubuntu.com/ubuntu/ precise-updates/universe xenstore-utils i386 4.1.2-2ubuntu2.10 [13.4 kB]
取得:12 http://jp.archive.ubuntu.com/ubuntu/ precise/universe xen-utils-common all 4.1.2-1ubuntu1 [96.5 kB]
取得:13 http://jp.archive.ubuntu.com/ubuntu/ precise-updates/universe xen-utils-4.1 i386 4.1.2-2ubuntu2.10 [1,633 kB]
5,200 kB を 4秒 で取得しました (1,121 kB/s) 
dpkg: 警告: ファイル '/var/lib/dpkg/status' を解析。28748 行目付近、パッケージ 'designkit.702840f10216893fc3494b731e825b33666733d6.1':
 バージョン文字列 'v5.0.0' にエラー: バージョン番号が数字から始まっていません
dpkg: 警告: ファイル '/var/lib/dpkg/available' を解析。30170 行目付近、パッケージ 'designkit.702840f10216893fc3494b731e825b33666733d6.1':
 バージョン文字列 'v5.0.0' にエラー: バージョン番号が数字から始まっていません
以前に未選択のパッケージ bridge-utils を選択しています。
(データベースを読み込んでいます ... 現在 317695 個のファイルとディレクトリがインストールされています。)
(.../bridge-utils_1.5-2ubuntu7_i386.deb から) bridge-utils を展開しています...
以前に未選択のパッケージ libaio1 を選択しています。
(.../libaio1_0.3.109-2ubuntu1_i386.deb から) libaio1 を展開しています...
以前に未選択のパッケージ libc6-xen を選択しています。
(.../libc6-xen_2.15-0ubuntu10.4_i386.deb から) libc6-xen を展開しています...
以前に未選択のパッケージ librados2 を選択しています。
(.../librados2_0.41-1ubuntu2.1_i386.deb から) librados2 を展開しています...
以前に未選択のパッケージ librbd1 を選択しています。
(.../librbd1_0.41-1ubuntu2.1_i386.deb から) librbd1 を展開しています...
以前に未選択のパッケージ libxen-4.1 を選択しています。
(.../libxen-4.1_4.1.2-2ubuntu2.10_i386.deb から) libxen-4.1 を展開しています...
以前に未選択のパッケージ libxenstore3.0 を選択しています。
(.../libxenstore3.0_4.1.2-2ubuntu2.10_i386.deb から) libxenstore3.0 を展開しています...
以前に未選択のパッケージ qemu-keymaps を選択しています。
(.../qemu-keymaps_1.0.50-2012.03-0ubuntu2.1_all.deb から) qemu-keymaps を展開しています...
以前に未選択のパッケージ qemu-utils を選択しています。
(.../qemu-utils_1.0+noroms-0ubuntu14.10_i386.deb から) qemu-utils を展開しています...
以前に未選択のパッケージ xen-hypervisor-4.1-amd64 を選択しています。
(.../xen-hypervisor-4.1-amd64_4.1.2-2ubuntu2.10_i386.deb から) xen-hypervisor-4.1-amd64 を展開しています...
以前に未選択のパッケージ xenstore-utils を選択しています。
(.../xenstore-utils_4.1.2-2ubuntu2.10_i386.deb から) xenstore-utils を展開しています...
以前に未選択のパッケージ xen-utils-common を選択しています。
(.../xen-utils-common_4.1.2-1ubuntu1_all.deb から) xen-utils-common を展開しています...
以前に未選択のパッケージ xen-utils-4.1 を選択しています。
(.../xen-utils-4.1_4.1.2-2ubuntu2.10_i386.deb から) xen-utils-4.1 を展開しています...
man-db のトリガを処理しています ...
ureadahead のトリガを処理しています ...
ureadahead will be reprofiled on next reboot
dpkg: 警告: ファイル '/var/lib/dpkg/status' を解析。28936 行目付近、パッケージ 'designkit.702840f10216893fc3494b731e825b33666733d6.1':
 バージョン文字列 'v5.0.0' にエラー: バージョン番号が数字から始まっていません
bridge-utils (1.5-2ubuntu7) を設定しています ...
libaio1 (0.3.109-2ubuntu1) を設定しています ...
libc6-xen (2.15-0ubuntu10.4) を設定しています ...
librados2 (0.41-1ubuntu2.1) を設定しています ...
librbd1 (0.41-1ubuntu2.1) を設定しています ...
libxen-4.1 (4.1.2-2ubuntu2.10) を設定しています ...
libxenstore3.0 (4.1.2-2ubuntu2.10) を設定しています ...
qemu-keymaps (1.0.50-2012.03-0ubuntu2.1) を設定しています ...
qemu-utils (1.0+noroms-0ubuntu14.10) を設定しています ...
xen-hypervisor-4.1-amd64 (4.1.2-2ubuntu2.10) を設定しています ...
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-3.2.0-52-generic
Found initrd image: /boot/initrd.img-3.2.0-52-generic
Found linux image: /boot/vmlinuz-3.2.0-51-generic
Found initrd image: /boot/initrd.img-3.2.0-51-generic
Found linux image: /boot/vmlinuz-3.2.0-49-generic
Found initrd image: /boot/initrd.img-3.2.0-49-generic
Found linux image: /boot/vmlinuz-2.6.32-49-generic
Found initrd image: /boot/initrd.img-2.6.32-49-generic
Found memtest86+ image: /boot/memtest86+.bin
Found Ubuntu 9.04 (9.04) on /dev/sda1
done
xenstore-utils (4.1.2-2ubuntu2.10) を設定しています ...
xen-utils-common (4.1.2-1ubuntu1) を設定しています ...
xen-utils-4.1 (4.1.2-2ubuntu2.10) を設定しています ...
update-alternatives: /usr/lib/xen-default (xen-default) を提供するために 自動モード で /usr/lib/xen-4.1 を使います。
dpkg-query: 警告: ファイル '/var/lib/dpkg/status' を解析。28936 行目付近、パッケージ 'designkit.702840f10216893fc3494b731e825b33666733d6.1':
 バージョン文字列 'v5.0.0' にエラー: バージョン番号が数字から始まっていません
libc-bin のトリガを処理しています ...
ldconfig deferred processing now taking place
xen-hypervisor-4.1xen-hypervisor-4.1

2013年6月17日月曜日

Androidで「艦これ」をプレイする方法


友達に進められて艦隊これくしょん(通称:艦これ)を始めてみました。

しかし、現在対応機種はWindowsとMac OSのみ。UbuntuなどのLinuxでもプレイは問題なくできますが、Androidを使って外でも気軽にプレイしたいところです。

AndroidのFirefoxブラウザはflashが動くので、設定をすればプレイすることができます。私はFirefoxをインストールして次の2つの設定をしました。

FirefoxでPCサイトを見るためのアドオン Phony をインストール

PCサイトモードにチェック

Firefoxを起動してメニューを見ると「PCサイトモード」という項目があるのでチェック!


これで、Firefoxを再起動(Androidも再起動?)して、艦これのサイトへ行くとプレイできるようになりました。たまに 「Flash Playerの実効速度が遅くなっています」とか言われるけれど、キャンセルして待てば大丈夫。



環境
  • Xperia GX: SO-04D
  • Android 4.0.4
  • Firefox 21.0

2013年6月12日水曜日

Google Newsで特定のメディアを消す方法

Google Newsではいろいろなニュースメディアからの記事を一覧できますが、特定のメディアを表示させないようにカスタマイズすることができます。

例えば朝日新聞(asahi.com)からの記事を表示させないように設定する方法は次の通りです。

  1. まず、news.google.comにアクセスし、歯車の設定ボタンを押します。
  2. 次に、「ニュース提供元を調整」とあるすぐ下のテキストボックスに「asahi.com」と入力して、「+」を押します。
  3.  するとすぐ下の領域にasahi.comという項目とスライダーバーが出てきます。
  4.  スライダーを一番左まで寄せて「ほぼ読まない」にすれば完了です。
以上で、 朝日新聞の記事は消えて、表示されなくなります。

2013年4月5日金曜日

PlayのFutureの注意点

Play frameworkでプログラミングするときは基本的にブロックする処理は避けるべきです。
しかし、通信処理や重い計算などでどうしても、一時的にブロックしてしまうことはあり得ます。そんなときはFutureを使えばよいですが、使い方にちょっと注意が必要らしいです。

次の例は5分ごとに"Hello"を返す WebSocket  サーバーの実装です。

package controllers

import play.api._
import play.api.mvc._
import play.api.libs.iteratee.Iteratee
import play.api.libs.iteratee.Enumerator
import scala.concurrent.Future
import play.api.libs.concurrent.Execution.Implicits._
import scala.language.reflectiveCalls

object Application extends Controller {
  
  def index = WebSocket.using {
    req =>
      val in = Iteratee.consume[String]()
    
      val out = Enumerator.repeatM {
        Future {
          create()
        }
      }

      (in, out)
  }
  
  def create () : String = {
    Thread.sleep(5 * 60 * 1000) //重い処理を表現
    "Hello"
  }
}

Future { } に 重い処理を渡していますが、このときに暗黙の引数としてExecutionContextが必要です。ググると「play.api.libs.concurrent.Execution.Implicits._」をimportするとよいみたいな記事が見つかったので、その通りにしたというところです。

しかし、このサーバーを実行した上で、このwebsocketサービスを利用するページをブラウザでたくさん(5~10)のタブでどんどん開くと、Playサーバーが応答しなくなってしまいます。他のサービスや、静的コンテンツなどもplayのものはすべてbusyになってしまいます。

問題の原因はおそらく、Futureでくるんだ処理が実行される環境(ExecutionContext)です。Playのドキュメント「Understanding Play thread pools」を読むとだいたい次のような事が書いてあります。
  • Playでブロックする処理や重い処理を書くときは、それがどのThread Poolで実行されるか意識する必要がある
  • Playには目的に応じていくつかのThread Poolがある
  • Thread Poolの設定はapplication.confでする
そこで、AkkaでThread Poolを用意してそこで重い処理をするように明示的に指定するという方法を取りました。修正後のコードは以下の通りです。
package controllers

import play.api._
import play.api.mvc._
import play.api.libs.iteratee.Iteratee
import play.api.libs.iteratee.Enumerator
import scala.concurrent.Future
import scala.language.reflectiveCalls
import play.api.libs.concurrent.Akka
import play.api.Play.current

object Application extends Controller {
  
  def index = WebSocket.using {
    req =>
      val in = Iteratee.consume[String]()
    
      val executionContext = Akka.system.dispatcher
      val out = Enumerator.repeatM {
        Future {
          create()
        } (executionContext)
      }

      (in, out)
  }
  
  def create () : String = {
    Thread.sleep(5 * 60 * 1000)
    "Hello"
  }
}




環境
  • Play 2.1.1
  • Scala 2.10.1

2012年12月28日金曜日

月額980円のイオンSIMをXperia GX (SO-04D)で使うための設定

[amazon]B008VD2IMG[/amazon] [amazon]B009SGPM3C[/amazon] [amazon]B00A3KB5DI[/amazon] [amazon]B00965KEYW[/amazon] [amazon]B00856QA4G[/amazon]
月額980円のイオンb-mobile SIMがマイクロSIMに対応し、LTE(Xi)通信も出きるようになっていたので、買ってみた。端末は Xperia GX
(SO-04D)。




まず、マイクロSIMをカードから取り、端末に慎重にはめ込んだら、次の手順で通信の設定をする。

1. ホーム画面のメニューアイコン(画像のピンクで囲ったところ)をタップ



2. 「設定」をタップ



3. 「その他」をタップ

4. 「モバイルネットワーク」をタップ

5. 「アクセスポイント名」をタップ

6. 画面右下の部分をタップ, 「新しいAPN」をタップ


8. 「名前」、「APN」、「ユーザー名」、「パスワード」、「認証タイプ」をカードの入っていた紙の設定に合わせる



9. 画面右下の点々をタップ, 「保存」をタップ


11. 今、作成したAPN 「bmobile」を選択



12. ブラウザでインターネットにつながることを確認する



参考: Xperia AX (SO-01E) でb-mobile SIMを使うための手順

2012年12月24日月曜日

中野剛志という官僚の考えがすごい

24:07あたりから注目。


http://www.youtube.com/v/-PEDiog4xXI?start=1447

公務員って言うのは、民間と比べるとはるかに生活が安定している。身分が保証は、厳密に言えばされてはいないんですけれども、民間に比べればはるかに生活は安定しているんですね。で、私が公務員に魅力を感じた理由の一つは、これは誤解を恐れず有り体に言うと生活の安定なんですね。
なんか、生活の安定を求めるのは消極的みたいなことを言ったりするんですけど、これは全然違って、リスクの多い人生だと自分の言いたいことを言うってことをやっぱりできないわけですね。
つまり、公務員がなぜ生活が安定しているかをもう一回考える必要があって


例えば、マスコミが悪いとか皆さんおっしゃいますが、マスコミだって広告収入が必要ですから、そうそう楯突いたりできないわけです、広告主とか経済界とかに対して。あるいは世論とか部数とかありますから。

政治家の先生はお国のために働いていただきたいし、そういう覚悟の方多いと思いますが、選挙で通らないと困るわけで、現に日本の場合は私の知る限りでは、お国のために頑張った先生ほど、選挙でみんなで叩いたり落としたりしているケースが少なくないんですね。そうすると、政治家としての地位が危うくなるのでしたら、やりたいことできないし、特に政治家の先生の場合はお金がかかるので、生活がかかっちゃうと。生活がかかっちゃったら、言いたいこと言えないわけですね。

で、民間も、もちろんそうで、民間企業はそれこそ生活がかかっていますし、そもそも忙しくてそうそう天下国家っていうことに係り合う暇もないわけですし、係り合っても、あまりお客様から批判されるようなことを、正しいからと言ってやって商売ができなくなると家族が路頭に迷うってことがある。そうすると、ビクつくのは全然しょうがないことなんです。

しかし世の中、多数派が勝つとは限りません。いや、たいてい間違えるわけなんです。
みんなが間違った方向に突っ走ったときに、そうじゃないんだって言う人たちが必要で、そういう人たちは世論の動きとかに関係なく、身分を保証して、生活の安定を得た上で言うべき存在が必要です。

例えば裁判官はそうですよね。司法と言うのがまずそうです。これは世界的にもそうです。いくつかそういうポジションが必要で、あと2つあるとしたら、1つはやっぱり官僚制なんですよ。だから官僚はマスメディアに煽られた世論に迎合してはいけない。なぜならば迎合しなくても正しいことを追求できるように生活が安定しているわけですね。もちろん官僚がいつも正しいってことを言ってことではなくて、でもこういうことですってことも言ってオプションを示して、オプションも示さずに物を言えないってことになると危険なので。しかも最後は、日本は誰がなんといおうと、政治主導なんです。僕は全然、官主導だなんて思っていなくて、大臣が任命権を持っています。だから政治主導であるということは日本は制度的にも実質的にも間違いないので、官僚は思いのままなんてできやしないんです。だから、逆に言うと官僚は世論に流されずに、自分たちが思うことを、オプションを示すとか、もっと言うと叩かれてナンボの世界で、しかも国民だっていろんな情報が錯綜している中、煽られたりして一瞬間違えた判断をするかもしれない。まぁ正しいかどうかは別として、例を挙げるならば、あれだけの原発事故が怒れば、誰だって一瞬 脱原発と思うわけです。だけども一年経ってみると、そう簡単でないことは明かです。そのときに原発はみんな心理的にやばい状況でまずいと思ってるんだけど、必要なんだというようなことを言う存在がやはり必要で、それは今の瞬間流されやすい世論と関係なく頑張ることで、次の年、いや5年後、いやヘタすると10年後、20年後、その官僚が死んだ後に歴史的に判断してもらう、そういう存在が必要で官僚とはそのために生活が安定している。

もう一つは大学、とりわけ国立大学の先生方ですね。この先生方も同じように勝手放題やって勝手な研究やったって大学の職で食っていけるんですね。



そういった存在の人々が立ち上がらなければいけないわけです。ところがもし世論に迎合するとこれは身分保障って言う特権だけもらってズルやっている。大学の先生もそうで、大学の先生と官僚って言うのは、生活の安定という特権をもらっているのだから、使わせてもらおうじゃないか、ということでやらなきゃいかんのです。もちろん、左遷とかあるかもしれないけれど、食えなくなるわけじゃないんだから、余裕なわけですよ。そりゃ、食えるか食えないかを覚悟して働いている民間の人とか政治家の先生に比べれば全然御の字なんですよ。その特権をもらって、世論に迎合するなんてことは、これはとんでもない話で、そのことをもう一回皆さんにご理解をいただきたいというような気持ちもございます。

2012年12月22日土曜日

イオンSIMが使えるAndroid4.0端末の性能比較

[amazon]B00AFT0H0O[/amazon][amazon]B00AFSROLK[/amazon][amazon]B00AAU6XVA[/amazon][amazon]B008VD2IMG[/amazon][amazon]B008PRYNVC[/amazon][amazon]B008LALDN4[/amazon]

性能順に並べてみた。


名前型番値段CPUクロック数メモリバッテリー容量重さ価格.com
ARROWS VF-04E¥52800nVidia AP33 Max 1.5GHz(Quad Core)ROM 64GB、RAM 2GB2420mAh約152g価格.com
AQUOS PHONE ZETASH-02E¥56800APQ8064 1.5GHz(クアッドコア)ROM 32GB、RAM 2GB2320mAh約152g価格.com
Xperia™ AXSO-01E¥47800MSM8960 1.5GHz(Dual Core)ROM 16GB、RAM 1GB1700mAh約120g価格.com
Xperia™ GXSO-04D¥388001.5GHzデュアルコア CPUROM 16GB、RAM 1GB1700mAh約127g価格.com
AQUOS PHONE siSH-01E¥48800MSM8960 1.5GHz(Dual CoreROM 16GB/RAM 1GB1660mAh約115g価格.com
REGZA PhoneT-02D¥35400MSM8960 1.5GHz(Dual Core)ROM 8GB、RAM 1GB1800mAh約139g価格.com
MEDIAS XN-07D約30,000Qualcomm MSM8960 1.5GHz (Dual Core)ROM 8GB、RAM 1GB1800mAh約119g価格.com
ELUGA powerP-07D¥36,500MSM8960 1.5GHz(Dual Core)ROM 8GB、RAM 1GB1800mAh約129g価格.com
GALAXY NEXUSSC-04D約30,0001.2GHz(デュアルコア)ROM 16GB、RAM 1GB2000mAh約138g価格.com
AQUOS PHONE stSH-07D¥32500MSM8255 1.0GHzROM 4GB/RAM 1GB1520mAh約108g価格.com

参考: Androidスマホのスペック表のROMとRAMの違い、ROMの表記