2012年7月22日日曜日

放課後電子波クラブ

kobo買ってました

ブログではAmazonアソシエイト使っておきながら、実生活では楽天メイン(ポイントサービスこっちの方がいいから)である私。その甲斐あってかいつのまにかプラチナ会員になってたってことで実質4980円。スペックとかはちと物足りなく感じたが、まあ電子書籍ことはじめとしてはいいかなと、すぐに飛びつきました。スマホもタブレットも持っていない私が初めて手にした次世代デバイス、その実力は…って、もう至るところでとっくに言い尽くされていますが、僕の場合は…
  1. まず箱から取り出すのに一苦労
    蓋が中々取れんかった。蓋の指入れるスキマがただでさえピッチピチな上、箱自体が固めでスキマ広げにくい。僕は結局ハサミ入れて側面一つ外した
  2. セットアップ時、メルマガ受け取る設定にしないと先へ進めなかった。
  3. とりあえず無料の青空文庫の宮沢賢治や太宰治作品をいくつか入れてみたが、殆どの作品が表紙と奥付(最終ページ)だけで、肝心の中身が無いんですけど…プリインストールの『フランダースの犬』や『源氏物語』さえも。
    しかも奥付の作品名が開いてるのと違うの多数(『銀河鉄道の夜』開いてるのに奥付には『風の又三郎』って表示されてるみたいな)
  4. そもそもデスクトップアプリでライブラリ(入れた本一覧)を確認出来ないってどうなのよ?ていうか2回目以降ライブラリの同期すらできないんですけど…
  5. 内蔵時計のタイムゾーンがデフォルトUTC。言語で「日本語」選択したんだから、JTCに自動設定してくれよ。
  6. Wi-Fi設定のネットワーク入力欄が左側3分の1くらい欠けている。セキュリティ用のマスクか?それなら暗号キーと同じ仕様(チェックボックスで切替)にしてくれよ。
こんなところかな。中にはセットアップすらままならない方もいらっしゃるようで。

とりあえずデスクトップアプリはバージョン3.0.1を使うべし

上記の3, 4はどうもデスクトップアプリの不具合っぽいですね。ダウンロード元が英語サイトの場合、アプリのバージョンは3.0.0なんですけど、こいつがいけないみたいです。英語サイトには、セットアップ時にURLが表示されたのか、公式のFAQから辿ったのか、どうやって辿り着いたが忘れましたが、とにかく「公式」の情報だった筈。今は修正されてるかどうかは分かりません。

と、前置きが長くなってしまいましたが、アプリはバージョン3.0.1を使いましょう。これでライブラリ同期やデータクラッシュの不具合は解決したみたいです。日本語サイトからダウンロードできます。URLは以下。
※情報元

暗号キーの入力は死ねた

koboにはWi-Fi接続機能があるので、早速設定に取りかかった訳ですが…もう二度とやりたくねぇ!

ってのは、僕はMacにも当たり前のようにセキュリティソフト導入する程に、セキュリティには気を遣っており、そんな僕のパスワードの類の桁数は
「最大桁数に最も近い素数」
という運用ルールとしているので、無線LANの暗号キーは61桁に設定していたんですよ。PC端末増設する場合は、テキストファイルからコピペして済ませられたから特に不便感じてなかったので、今回のようなコピペできないケースってのは全く想定外でした…

だがこの61桁のランダム文字列入力が一発OKだったのには自分で自分を褒めてやりたい。

で、電子書籍買ってますか-?

買ってませんw。理由は価格。何故か紙の本と殆ど変わらない。著者の方々には申し訳ないけど、僕はビジネス本・新書・小説の類は殆ど中古か図書館レンタルなので、この価格設定だと踏み切れません。kobo手に入れたその日の夜、ブックオフオンラインで本購入している自分がいましたよ。電子書籍様子見ってことで、今月は本の購入控えてたので、そりゃあもうがっさりと買っている自分がいましたよ。

漫画に関しては基本新品で買うんですけど、漫画は電子書籍より紙の方がいいというのが個人的感覚。理由は以下。
  1. 漫画は小説などと比べて文字量が少ないので、頻繁にページ繰りが発生する。
    ページ繰りは圧倒的に紙の方が速い。
  2. 電子書籍では全文検索は可能でも「あのシーンどこだっけ?」といった「画像検索」はできない。
    これを行う際にキーとなってくるのは、これまたページ繰り速度。
  3. 紙だと「前半3分の1辺り」のような「二分探索的ページ繰り」も可能。
これらは『ブラックジャックによろしく』や『テルマエ・ロマエ』の無料版電子本を読んだときに体感済。まあ慣れの問題かもしれないけど。

ていうか、紙の本だと見開き2ページだけど電子書籍だと1ページ(2ページにできなくもないだろうけど小さくなって読みづらいよね)ってこととかも考えると、電子書籍って速読には向いてないよね。

ただまあ場所取らないってのはでかいんだよなぁ…これからどうしていこうか。

2012年7月16日月曜日

僕歪週末号~大っ津、オラ悟空

厳密には週末じゃないけど、明日からの日々に対する悲しみは週末以上でしょ?

冷静に観察すると物凄い髪型だね

ふーん。
「原作:鳥山明」ってなってるけど、これは鳥山先生がストーリー書くってこと?それとも「戦隊ものガンダム」みたく「原案:富野由悠季」ってのと同じ意味合い?

ちなみに僕は今年30歳という思いっきりドラゴンボールリアルタイム世代。「超サイヤ人のバーゲンセール」の頃は小学生で、男子の誕生日プレゼントの定番はドラゴンボール文房具。あの頃、文房具の大半は金髪マッチョマンの絵が描かれた物で占められていた。

バトル漫画ということで、服ビリビリの上半身裸パターンが結構多かった気がするが、絵面だけ見ると外国のホモアニメに見えなくもないな。

【切望】「因果応報」の物理法則化

僕の移動時のお供である『松本人志の放送室』。前回の週末号で、「第249回『マイケル・ジャクソン SMAP×SMAP出演裏話』の回を聞いた日がたまたま彼の命日だった」というのをお伝えしましたが、今週また似たようなことが。

それは…「いじめ」に対する見解を述べている第266回。ニュースに取り上げられて話題になった第345回と同じ事言ってます。内容の引用や紹介はしませんので各自ググってください。案の定、このタイミングなので再度取り上げられているようです。ちなみに僕の松本氏の意見に対する見解というか感想は、「一理あるとは思うけど、一番悪いのはやっぱり自殺に追い込む側だよね」という、まあ恐らく一番多いであろう意見です。

ところで、こういう事件があると「もし自分がイジメに遭ったとしたら…」って時々考えてしまう。僕だったらどうするんだろう。僕は基本的に
「オレは殴られたら必ず殴り返す!!」 by ガッツ from 『ベルセルク』
とか
「俺を殺す気なら、殺してやる」 by 武蔵 from 『バガボンド』
とか
「死なば諸共ーー!!」 by ジロン from 『戦闘メカ ザブングル』
って気性なので、自殺以外の方法による反撃を決めたいところですね。ちなみに僕は生まれてこの方「喧嘩」をしたことはございません。

少し話は逸れるけど、こういった「目には目を」的な話になると、
「復讐したって何も解決しない」
とか
「憎しみの連鎖を生むだけだ」
とか
「不毛。もっと有意義なことに時間やエネルギー使おうよ」
なんて意見が出てくる。さて、「憎しみの連鎖」と言うが、「連鎖」ってのは「基となる憎しみ」あってのもの。「加害者」の方は「憎しみをゼロから生み出す」という、錬金術師も真っ青な事している。明らかに「連鎖」よりも質が悪い。ビジネスライクに「憎しみの絶対量」って観点で考えてみると、加害者放っておいたらその量は確実に増え続けることになる(反省の有無はここでは考えない)。

なので、「生み出すもの」が一番悪い、元は断ってしまうべきだ、そのために何らかの一石は投じるべきだってことで、復讐はした方がいいのかなってのが僕の考え(こういう問題で「方がいいのかな」ってのも変ですが)。まあ「必ず復讐すべし!」とは思ってないです。

いやしかし、今回の事件はかなりの世論が味方についているので、事後の事に関してはこれ以上酷くはならないだろうけど、表沙汰にならずひどいままの事件っていっぱいあるんだろうな…「底辺ニートの俺がついに日本人の平均年収を超えた」とかでもかなり酷い目に遭わされたみたいだし…

ていうか、「因果応報」をただの思想・概念ではなく、明確に物理法則化してくんないかな、神。そうしてくれたら確実に犯罪減るのに。神と言えば、それに近い存在である「天使」の肖像画を美術の授業とかで時々目にしてきたけど、若い女性ばかりで熟女を見たことがない気がするのは気のせい?僕が見落としているだけ?もし僕の見落としでないのであれば、神と言えども女性は若い方が好きだと思っているということか。熟女の魅力・魔力を理解できていないクソガキに、森羅万象を統べる資格なんてあるのか?

2012年7月1日日曜日

僕歪週末号~僕に踊れと言うのか?

「リッピング」を初耳った時「キス技の一種か?」と思ったのも今は昔

「泥棒」って奴は本当に悪い奴だ。
「物を盗む」という行為自体が悪いのは勿論、
皆が「戸締まり」に神経使わなければいけない社会にした事も悪い。
~松本人志

今週の出来事ではないですが、「違法ダウンロード刑罰化」と「DVDリッピング違法化」可決されちゃいましたね。

「因果応報」を信じてエロ動画すら真面目にちゃんと購入している僕にとっては、違法ダウンロード刑罰化で被る被害はゼロだし、いいぞーどんどんしょっぴけーって心境。そういえば最近はミスチルライブの日にレズものDVD3本購入したっけな。

引越前に処分したおかず達の一部。
そう、「所持」してる分ではなく「処分」した分でこれです。

ただDVDリッピング違法化に関しては、正直いただけない。「自分で購入した商品のリッピングもNG」という点が。確かに、ネット上の「DVDレンタルサービス崩壊」という声の多さを鑑みると、レンタルDVDからぶっこ抜いてる人間は結構いるみたいなので、レンタル品に関して規制が導入されるのはまあしょうがないとしても…ていうか話は逸れるがエロDVDはレンタルすべきものではない(モザイクでかくて粗いし時間も短い)。

はぁ~…DVD一々持ち運んだり入れ替えたりするのめんどくせぇよ…。DVD販売する側の方達にお願い、せめてセル版にはコピー防止技術を搭載しないでいただきたい。僕は今までもそしてこれからもちゃんと買いますから。

訃フォー!から早2年ですか

人生で一番無駄な時間は移動時間です。
~『宇宙兄弟』より

通勤ラッシュが名物の大東京。「スキマ時間の有効活用」と称し、通勤時間すなわち電車内で読書やらスマフォ・タブレットやらゲーム機を広げている人間が多いが、それを嫌悪している僕は、通勤時間のお供にはiPodしか選択肢がありません。そして今週も『放送室』を聴きながら通勤。そしてある日、第249回の「マイケル・ジャクソン SMAP×SMAP出演裏話」の回に突入。面白さと不愉快さが入り交じるその裏話を聞きながら出社すると、僕の勤め先はオフィスでラジオかかってるんですけど、耳に入ってきたのはマイケル・ジャクソンの曲(正直興味ないから曲名までは分からん)。

この程度のことは特に気にかけず、自席について仕事を始めたのだが、かかる曲は次から次へとマイケル(次から次へと曲名分からんけど)。どうもその日、彼の命日だったみたいですね。

転職して収入大幅アップ、引っ越しして住居レベルもアップ(ダウンかもしれんが)、そして年齢の10の位が「3」に更新された事だし、今年は新たに何か初めてみようかなと思っていたところに発生したこの事象。始めるべきは…ダンス…なのか?


[Python]Eclipseプラグイン「PyDev」インストールメモ

EclipseのPython開発用プラグイン「PyDev」のインストールメモです。
それにしても「パイデブ」って、何かそんな名前のマニア向けシリーズありそうっすね。

試した環境

  • Eclipse 3.7 Classic(非日本語化)
楽天にならって自分も英語力を強化しようと思い立ち、Eclipseは日本語化せず使用することを決心しました。そのため、当エントリにおけるEclipseのメニューや選択項目は英語となりますので、ご了承ください。あと画像はめんどくさいので無しで。

ところでEcilpseと言えば、確か毎年6月に新バージョンリリースされますが、今回覗いてみたらバージョン4.2がリリースされてました。プラグインの互換性とかどうなんだろう。

PyDevインストール

Available Software
「Help」メニュー >「Install New Software...」を押下。
「Work with」欄右にある「Add...」ボタンを押下し、以下情報を入力。
  • Name:お好きな値を ※俺なら「PyDev」
  • Location:http://pydev.org/updates
    ※ここの入力値は以下ページに記載されています。
    Download - PyDev
「OK」押下したらリストに「PyDev」ともう一つ表示される。「PyDev」展開して「PyDev for Eclipse」をチェックして「Next」押下。
Install Details
「Next」押下。
Review Licenses
「I accept…」選択して「Finish」
Installing Software
ひたすら待つ。途中「Do you trust these certificates?」と証明書を信頼するかどうか聞かれると思うので、表示された項目をチェックして「OK」押下。
完了したらEclipse再起動。
インストール確認
パースペクティブや新規プロジェクト作成ウィザードで「PyDev」が選択項目に存在していればOK。

Pythonインタプリタ設定

これやっとかないと、肝心の入力補完をやってくれません。
「Window」メニュー > 「Preferences」> 「PyDev」>「Interpreter - Python」と辿り、「New...」を押下。
表示されるダイアログに以下情報入力。
  • Interpreter Name:お好きな値を ※俺なら「Python2.7」
  • Interpreter Executable:Python実行ファイルのパス
    ※Windowsなら「C:\Python27\python.exe」とか
この通りなので、Eclipseを動かす環境上にPythonインストールしておく必要があります。

「OK」押下し、Pythonライブラリのディレクトリにチェックが入っていることを確認して再び「OK」。

最初のダイアログに戻るので、「System PYTHONPATH」に先程チェックが入っていたディレクトリが表示されているのを確認。

以上、ザッツオール。

Python実行環境はLinux。EclipseはWindows上。
Linux上にPython外部ライブラリいろいろ入れてるけど、Windows環境にも入れるのめんどくせぇよって時には

pipやeasy_installで追加したライブラリのディレクトリをSambaでマウントし、Windows側から参照できる状態にしておき、先程のインタプリタ設定の「System PYTHONPATH」に追加すればよろしい。Python2.7をソースからインストールしたCentOS6.2環境だと、ディレクトリのパスは
/usr/local/lib/python2.7/site-packages/
でした。

まあこの辺の設定のことだけを考えると、LinuxにX入れてそこで開発するのが一番楽だわな。

2012年6月24日日曜日

[Python 2.7]インストールメモ

業務系SIerを脱出してWeb系の世界に飛びこんで早1年半、仕事でのメイン言語はJava1.4(!)からPython2.7へと変わったのに、そういえばPythonネタまだ一つも書いてなかったなーってことでまずはインストールメモ。
つってもこの先別に大したネタなんてないですけど。

試した環境

3系はフレームワークとかの対応が芳しくないようなので(Djangoとか)、当ブログでは暫くの間2系でいきます。
ちなみにCentOSにはデフォルトでインストール済ですが(yumとかPython製なので)、2.4とか2.6とかバージョン古いです。
  • CentOS 5.6, 6.2
  • Python 2.7.3

Pythonインストール

事前準備
zlibはeasy_install使うのに必要。
# yum install gcc zlib zlib-devel
ダウンロード&configure
ダウンロードページは以下。
$ wget http://www.python.org/ftp/python/2.7.3/Python-2.7.3.tgz
$ tar xvzf Python-2.7.3.tgz
$ cd Python-2.7.3
$ ./configure --with-threads --enable-shared
コンパイル&インストール
Modules/Setupの一部行をアンコメント(コメントアウトの対義語だよ知ってた?)。
$ vim Modules/Setup
zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz

そしてお馴染みのコマンド。
$ make
# make install
ライブラリ設定&動作確認
# vim /etc/ld.so.conf.d/python2.7.conf
/usr/local/lib
# /sbin/ldconfig
$ python -V
Python 2.7.3
動作確認で以下エラー発生したら
$ python -V
python: error while loading shared libraries: libpython2.7.so.1.0:
cannot open shared object file:

共有ライブラリ確認してみる。
$ ldd python
…
libpython2.7.so.1.0 => not found
…

上記の状態の場合、ライブラリへのシンボリックリンクを/lib配下に作成。
# ln -s {Pythonソースルート}/libpython2.7.so.1.0 /usr/local/lib/libpython2.7.so.1.0

pipインストール

いわゆるパッケージ管理システムです。Rubyで言うところのgem、PHPではpear。
まずはeasy_installのインストール
setuptoolsってのの中に入っている。ダウンロードページは以下。
$ wget http://pypi.python.org/packages/2.7/s/setuptools/setuptools-0.6c11-py2.7.egg#md5=fe1f997bc722265116870bc7919059ea
# sh setuptools-0.6c11-py2.7.egg
easy_install使ってpipインストール
# easy_install pip
使い方
他人のふんどしをお借りします。

参考



2012年6月5日火曜日

[Selenium 2] Try & Error集 2

バージョン2.21で「Could not load native events component」例外が発生する

確認バージョン:Selenium 2.21
ブラウザ:Firefox 9, 12
対処法:バージョン上げる ※2.22検証済

以前書いたマウスホバー実現方法のエントリで、
「現時点のSelenium最新バージョン2.21はFirefox12に対応していないようで動かず…」
と書きましたが、あの後Firefox9で試してみたら9でも例外発生しました。
発生した例外は以下。

org.openqa.selenium.InvalidElementStateException: Cannot perform native interaction: Could not load native events component.

発生元は以下。

上記以外でも発生するかもしれません。

発生原因は不明。きっとSeleniumのデグレでしょう。バージョン2.22にしたら解決。

「MoveTargetOutOfBoundsException」例外の対処法

確認バージョン:Selenium 2.18
ブラウザ:Firefox 9
対処法:事前にターゲットが見えるように座標やウィンドウサイズ調整する

ただリンクやボタンをクリックするだけといった何てこと無い処理で、時々以下例外が発生することがありました。

org.openqa.selenium.interactions.MoveTargetOutOfBoundsException: Element cannot be scrolled into view

ターゲットがウィンドウ領域外にある場合、見える位置まで自動スクロールしてから処理が実行されるのですが、どうも時々スクロールがうまくいかない場合がある模様。
スクロールが原因なのであれば、JavaScriptで座標調整したり、ウィンドウ最大化するなどして、予めターゲットが見えるような状態にしておけばよい。

※サイト・ページによっては、上記コードが働かない場合がありました。原因不明。

FirefoxのJavaScriptを無効化できない!

確認バージョン:Selenium 2.18, 2.21
ブラウザ:Firefox 9
対処法:不明

それっぽいメソッドがあったので使ってみたのですが、falseセットしても無効化できず。

OSやブラウザバージョンとか他にいろいろ設定して試してみてもダメだった。

[Selenium 2] Firefox起動時のポートロック待ち時間変更方法

試した環境

  • ブラウザ:Firefox 9
  • JDK 6
  • Selenium 2.18, 2.21, 2.22
  • Windows 7 64bit

ある日のこと、Seleniumテストケースを並行して数十個同時にスタートした時、以下の例外が発生した。

org.openqa.selenium.WebDriverException: Unable to bind to locking port 7054 within 45000 ms
…

調べてみると、どうもSeleniumはブラウザプロセス起動する時にTCP7054番ポートをロックするらしく、このポートのロックを一定時間待っても獲得できない場合に上記例外が発生する模様。ちなみにロックはプロセス起動したら開放されるっぽい。

この値はFirefoxBinaryクラスのtimeoutプロパティの値で、デフォルトでは45秒。変更したい場合は以下のように、タイムアウト値を設定したFirefoxBinaryオブジェクトをコンストラクタに渡せばよい。

同時にCapabilitiesオブジェクトも使いたいんだけど…

例えばプロキシを使用する場合は、以下のようにCapabilitiesを使用する訳ですが…

FirefoxDriverのコンストラクタには、FirefoxBinaryとCapabilitiesをパラメータとするものが用意されていません。どうしたらいいんでしょう。Help me...的な事を当初書いていたら、hutyaoさんからコメント欄にてご教示いただけました。ありがとうございます!
CapabilitiesオブジェクトにFirefoxBinaryを入れる

それと、プロキシ設定はCapabilitiesオブジェクトではなくFirefoxProfileでも指定可能だよってことも教えていただきました。

<非推奨>
FirefoxDriverのソースからメソッドコピペするというダッサイ方法
僕の頭ではこんな方法しか思いつきませんでした…

以下のimport文とメソッドをコピーし、適当なクラスに貼り付けてください。アクセス修飾子はprivateなので、適宜変更してください。

そしてFirefox起動ロジックは以下のような感じで。

僕は上記コピペメソッドや一連の生成ロジックはFactoryクラスに持たせています。

コピペなんてDRYの原則に反してるじゃねぇか!って方はSeleniumのソース弄ってください。僕としては、コピペ元はjarの中のソースなんで別にいいかなって思いますけど。

※繰り返しますが当節の方法は非推奨です。

2012年5月28日月曜日

僕歪週末号~『得』の指数関数的増加

絶対にキレイな女の子の方が金を持ってるよ。
キレイな女の子はみんな奢ってくれるやん。
クリスマスや誕生日に「欲しいもん、何?」とか聞かれて、答えたもん貰えるやんか。
自分が「あれ買いたい」と思て貯めてたお金が浮くねんな。
ブサイクな子、全部実費や。
なんなら、旅行でも現地集合、現地解散や。全部自腹!
~ 島田紳助 『松本紳助』にて

あ、週末過ぎてた…

今週にかけて散々語り尽くされた話題のWebサービス、studygift
僕のような下郎には、語り尽くされたもの以上の鋭い指摘や独自の見解といったものはハッキリ言ってありません。下郎らしく
「彼女が仮に所謂『ブサイク』クラスタに属していたといたら、このサービス存在しなかっただろうな」
という程度しか語れません。でも恐らく真理ですよね。この話題を目にする度、冒頭の言葉を思い出した。キレイ・カワイイ子というのは、それ自体で得なのに、マネー社会においては冒頭の言葉や上記サービスのように金銭的にも得をしていく、と(※1)。支援者の男女比ってどうなってるんでしょうかね。

僕は学生生活が楽しくなかった部類の人間ということがあってか、物語の主人公がもし「ブサイク」「ハゲ」「コミュ障」「お笑いセンス低すぎ」とかだったら…という妄想というか二次創作を時々していたのだけど…そういう「雑魚」が主人公だと絵にならなくて全然面白くないんですよ。だから「何故(ソーシャルネットワークでは既に成功者の部類に入る)彼女なのか?もっと他の誰にも見向きもされない苦労人を助けるべきでは?」的な意見があったような気がするけど、サービス一発目としてはやはりある程度「絵になる」要素があった方がいいと思うので、個人的には人選はまあ妥当な線だと思う。

結局、「Web上で声を掛けて数百万円を集める」ってのは、ある意味その人の能力とも言えるし(それだけの地位というか状況を築いたという事実)、単純に彼女のサバイバル能力の高さというのを見せつけられた出来事だった、というのが下郎である僕の感想。

あ、だからその「能力」ってのは果たしてブサイクだったら得られたものなのか?って出だしだったっけか…

※1
もちろん苦労も多いでしょうけど(同姓の嫉妬やらストーカー被害とか)、トータルではやっぱり得だよね。まあ彼女は特別美人って訳ではないと思うけど。

『紳助』に『studygift』って、どちらも今となってはあまり使いたくは無いワードだな。

2012年5月27日日曜日

[Selenium 2] Try & Error集

「window is null」例外対処法

確認バージョン:Selenium 2.2
ブラウザ:Firefox 4
対処法:バージョン上げる ※2.15以降検証済

見てお分かりの通り、かなり古いバージョンでのお話ですが…
コードを実行していたら、突然「window is null」的な例外が発生し、キャッチしてfinally節でWebDriver#close()してるのにブラウザ閉じないという現象に遭遇した。
残念ながら例外メッセージはメモが見つからなかったのでお見せできませんが(何分古いバージョンのお話なもので…)、以下みたいなのだったっけな…
Handling “Selenium (WebDriver) Exception: this.getWindow() is null” ~ Nishant Verma
org.openqa.selenium.WebDriverException: this.getWindow() is null

恐らくブラウザウィンドウの参照を見失ってアクセスできなくなったとかそんな感じの事なんでしょう。

発生原因は不明。ただ発生するページ・しないページがハッキリしていたので、ページ構造とかDOCTYPEとかが関係しているのかもしれない。
対処法は見つからず。ただバージョンを2.15に上げたら全く発生しなくなった。

リッチテキスト要素(iframe)スイッチ例外対処法

確認バージョン:Selenium 2.15・2.18
ブラウザ:Firefox 9
対処法:JavaScript使って入力

ブログの記事エディタのような所謂リッチテキストエディタへの文字入力で遭遇したトラブル。
エディタの実態はiframe要素だったので、定石に従って以下のように書いたら…例外発生。

発生した例外は確か以下(「確か」ですみません…)。
org.openqa.selenium.WebDriverException: Permission denied for to get property HTMLDocument.compatMode


発生原因は不明。「compatMode」とかあるので、これももしかしたらDOCTYPEが関係しているのかも(申し訳ないですが未検証)。
対処法は、JavaScriptでinnerHTMLプロパティセットするというNotスマートな方法しか見つからず。

ちなみにSeleniumバージョン2.2だと発生しませんでした。はいそうです、前述の「window is null」対処によるデグレです。

要素クリックでの「Permission denied」対処法

確認バージョン:Selenium 2.15・2.18
ブラウザ:Firefox 9
対処法1:リターンキー送出
対処法2:フォーカス(orマウスホバー)してからクリック ※効き目無い場合あり

ボタンやリンクを普通に「WebDriver#click()」したら発生。例外は前述のiframeのものと同じです。これも発生するページ・しないページはハッキリしていました。
対処法は以下の通り。

ちなみにこれもSeleniumバージョン2.2では発生しませんでした。


2012年5月6日日曜日

僕歪黄金号〜今年も家計が火の鳥

黄金の日々は皆様いかがでしたでしょうか。
私としましては、以前に技術系エントリでも述べた通り、いろいろな出費により今年も家計が火の鳥がために、「ただの土日がループしている」日々を乱舞しておりました。とりあえず伊坂幸太郎作品の乱読がメインでした。あと久しぶりに山村貞子4部作(『リング』『らせん』『ループ』『バースデイ』)も読んだ。

ちなみに出費の内訳は主に
  • 引っ越し(ついでの家具総買い替え)
  • 歯列矯正
です。前者で50万オーバー。後者は実際の出費はまだですが、100万近くが相場ですよね。30歳到達M字型ハゲのおっさんが歯列矯正って何今更色気づいてんだよって言われそうな気もしますが、いやもう外見とかじゃなくて単純に体の歪みの主因のような気がしてずーーーっと直したかったんですよ。でも基本給手取りはずーーーっと17万円で手が出せず、転職が成功してやっとそこそこの収入になったのでやっと手が出せるようになったと思ったら中年スタートしちゃってたんですよ!

そして引っ越し。今までは手取り17万のくせに家賃9万のマンションに住んでたんですけど、やはり「高かろう、良かろう」なのか、昨年の震災時の被害たるやすこぶる軽微でした(もちろん運が良かっただけかもしれませんが)。そんな具合で他にもいろいろと満足させてくれてたマンションですが、やはり完璧なものなどこの世には存在せず、
  • 大通り沿い
    窓開けてられない。テレビや音楽はノイズキャンセリング機器必須。
  • シンクが狭い。流しが小さい。
    まな板とかでかめの鍋・フライパンは風呂場で体とともに洗っていた。故にふた開けたら陰毛発見すること多々あり。
  • 地域の治安が悪い
    警視庁の犯罪情報マップによれば。幸い、実感するような事はなかったけど。あ、『仁義なき戦い』ってプリントされたTシャツ着てエスカレーターの右側ふさいでいるおっさんを見たことはあった。
ってのが結構鬱陶しかった。こうして改めて振り返ってみると、あまり良い物件ではなかったかもね。

なので、収入も増えたことだし、上記の不満を全て解決してプラスその他譲れない条件(南向き、角部屋など)を満たす物件を、許容家賃も13万円台までとかなり高めに設定してゆっくり納得いくまで探そうと動き出したのだけど・・・その矢先、すぐ隣のマンション(角部屋なのでホント目と鼻の先)の解体工事+新規マンション建築が始まることになり、さらに解体するマンションにアスベストが発見されたなんて知らせを聞かされ、心に焦りが生じてしまったのかもしれない。動き出して2週間、最初に訪問した不動産屋にて、事前にネットで調べてブクマしていた物件は悉くクローズしていることを聞かされ(しかも結構前にとの事。データベース更新しといてよ・・・)、うんざり感とアスベスト除去工事開始が近づいている焦りで、「何か違うな、気になるな」と思いつつも一応条件は満たしていたので「まあここでいいか」と妥協。家賃は3万以上アップの12万半ば。

結果は・・・前述の通り条件は満たしていたのだけど、失敗。その主因は「実際住んでみないとわからん」類いのものでした。

本当に鉄筋コンクリートか?

前の引っ越しの時もそうだったけど、譲れない条件の一つとして『鉄筋コンクリート造り』を掲げていた。繰り返すけど昨年の震災時の被害たるやすこぶる軽微だったので(鉄コンの力かどうかはわからんけど)。というわけで当然新居も当然鉄筋コンクリート造りな訳なんですけど・・・あの、4月にものすごい風強い日が2日程あったじゃないですか。あの風で建物が揺れたんですよ。建物揺れるくらいだから、窓も当然ものすごくガタガタガタガタいって夜うるさくて堪りませんでしたよ。前の家賃9万のマンションだと、台風でも建物はもちろん窓が(睡眠妨害されるほど)ガタガタいう事なんてなかったのに・・・本命の地震においても、同一震度でも揺れは前のマンションよりも大きい気がする。

そして、一番認めたくない、気のせいだと思いたいことが一つ。地震や強風などで建物が揺れる現象が発生した後、風呂場などのスライドドアがつっかえて閉まりにくくなる事が発生。毎回ではないし、しばらくすれば元に戻るのだけど、これって要するに揺れの力で建物が変形したってことじゃないのか?大学生の頃の木造ぼろアパートではそういう事多々あったけど、家賃12万の鉄筋コンクリートだぞ!?

遮音性や断熱性も低い。上下階の部屋のスライドドアのスライディング音が普通に聞こえる。前のマンションでは風呂場で震えるような事はなかったが、現在は前述の木造ぼろアパート時代を思い起こさせる程で、真冬は風呂に入るのが億劫だった(まあ夏は涼しいかもしれんけど)。加えて地味に腹立ったのが、蛇口でお湯をひねって湯がでてくるまでの時間が長い。あんまりにも長いので時間計ってみたら、シャワーで40秒、洗面台に至っては1分10秒という結果!真冬に朝急いでいる時の1分10秒のタイムロスは結構イラつく。

繰り返しますが、家賃12万なんですけど!

本当に東京か?

大都会東京で23区なのに、電車が行きも帰りも10分に1本なんて思ってもみなかった。2・3分に1本に染まりきった精神、そして僕は技術者として周りに遅れをとっていると思っている身なので、このタイムロスには地味にイラつかされる(毎日ってのが辛いね)。

あとは飲食店の少なさ。これは前の地域との比較になってしまうけど、ホント少ない。すき家も松屋も富士そばも無い。オリジン弁当も若菜もない。B級ラーメン・つけ麺屋(味源レベル)も全然無い。ちょっと違うけど徒歩5分圏内のコンビニも無い。昔ながらの飲み屋ばっかり。

手取り17万であった転職前は外食する余裕が無く、まっずい自作カレーをほぼ毎日4年半食してきた反動で、転職して収入が増えた途端外食しまくって幸福感とともに体重も増えて同僚の結婚式二次会で半年前に着られてたスーツが着られず大慌てした身にとっては、選択肢が全然無いこの状況は辛い。「外食ばっかりしてないで自炊しろ」という何者かのお達しかなーと前向きに捉えようとしたけど、一人暮らしの自炊って金銭的コストだけじゃなくて時間的コストも考慮するとそこまでコスパ良くない気がするのだけど。しかも外食の方が確実に美味しいし。

とまあ、これらに関しては事前に調査可能な項目だから、ちゃんと調べとけよって話ですけどね。電車の待ち時間も本読むなりすればいい話だし、そのうち慣れるのだろうけど。でもまさか東京23区で、しかも田舎と呼ばれる区ではなく結構栄えている区の割と大きい駅の周りがこんなんだとは思わなかったですよ。

家計どころか地域一帯が火の鳥に?

くるぞくるぞと言われている首都直下地震。先月、朝日新聞デジタルで以下の記事を発見しました。
上記記事に『首都直下地震の火災被害想定』という画像が記載されていますが、僕の住んでいる地域、真っ赤です。確かに木造家屋がものすごく密集してるわ。地震に対しては『揺れ』の事しか頭になく、火災に関しては完全に見落としてた・・・

他には、駐輪場使用が有料(登録料が必要)だったり、インターネット回線の実効速度が前の物件の3分の1以下だったり・・・もう踏んだり蹴ったりです。
前と比べて確実に良くなったと言えることは、ゴミ捨ては時間・曜日気にせずいつでもOKって事くらい。

皆様、住宅選びは慎重に!

噂には聞いていたけど、角川文庫版望郷編(COM版)のカット具合は半端なかった。太陽編の書き直し具合も然り。でも前述の望郷編を除けば、基本的には角川文庫版の方が好きかな。






[Selenium 2]マウスホバーの実現方法

いい加減にSelenium2ネタを消化してきます。
今回はマウスホバーの実現方法です。ただ最初に断っておきますけど、ページの作りか何かの影響を受けているのか、ページによっては全くマウスホバーイベントが発生しない場合がありました。もし100%確実に成功させる方法をご存じの方がいましたらご教示ください!

試した環境

  • ブラウザ:Firefox 9
  • JDK 6
  • Selenium 2.18
  • Windows 7 64bit
SeleniumとFirefoxのバージョンはちょっと古めとなっていますが、多分バージョン11とかでも大丈夫だと思います。
このエントリ書く当たって自宅PC環境で試してみたんですけど、現時点のSelenium最新バージョン2.21はFirefox12に対応していないようで動かず…

Actionsオブジェクト使用する方法(ただし非推奨)

Actions#moveToElementで実現できます。できるんですけど…

これだとマウスホバーがキープされません。よって「マウスホバーで動的に表示されたメニューをクリック」したい場合、以下のコードではダメです。

正しくは以下のコードです。ホバーとクリックを間髪入れずに連続実行しています。

「正しくは」といったものの、上記はただ連続実行しているだけで結局ホバーキープはできていないので、厳密には正解ではありません。実際、ホバー後のクリックが間に合わずにエラーとなってしまったケースが多々ありました。
補足
もしかしたらActions#clickAndHold()使えばいいかもしれん(厳密にはマウスホバーではないけど)。けど前述の通り自宅環境だとSeleniumが動かないので試せない。

ホバーキープしたい場合はDefaultSeleniumかますのが確実

以下の方法だとホバーキープされました。

ただし、冒頭でも述べましたが、これだとそもそもマウスホバーイベントが全く発生しないケースが少ないですがありました。
あと、z-indexが正しく解釈されないのか、動的表示したメニューをクリックしたとき、メニューではなくその奥にある要素がクリックされてしまうということも。

何かSelenium WebDriverってまだまだバグが多いな…何か忘れたけどびっくりするようなデグレが発生してた事もあったような。

参考

2012年5月5日土曜日

[MySQL]レプリケーション環境構築手順 for メモリかつかつ人 vol2~本題のレプリケーション設定

黄金の日々を皆様いかがお過ごしでしょうか。
私としましては、いろいろと出費が嵩むことがありまして、2年連続で家計は火の鳥となっておりますが故、「ちょっと長めないつもの週末」を謳歌しております。ていうか結婚した輩ってホント付き合ってくれなくなりますね!

さて、「レプリケーション環境構築手順」とかほざいておきながら、レプリケーションのレの字も無かった前回の続きです。Google Analyticsで検索ワード確認してみたら「MySQL レプリケーション」といったワードが幾つか見つかり、非常に心苦しい限りです詐欺師です…

というわけで今回のテーマは「脱・詐欺師」、要するに「タイトルに即した内容を書く」です。
ちなみに人から時々「話が長い」と言われます。

試した環境

  • CentOS 5.6(64bit), 6.2
  • MySQL 5.1.61

マスター

my.cnf設定
最低限、サーバーIDとバイナリログ名を設定。サーバーIDは他のサーバーとかぶらない値に。
[mysqld]
server-id=1
log-bin=mysql-bin
# dataディレクトリ以外に作成したけりゃ以下のように絶対パスで指定
# log-bin=/var/lib/binlog/mysql-bin
設定したら再起動。
レプリケーション専用ユーザー作成

マスターデータのスナップショットを作成
レプリケーションを開始するに当たって、当然マスタとスレーブのデータを同一にしておく必要がある。

まず、設定作業中にマスターデータが更新されてしまわないよう、書き込みロックをかける。
mysql> FLUSH TABLES WITH READ LOCK;

そしてマスターデータのスナップショットを作成。データフォルダをアーカイブしてしまえ。
# cd /var/lib/mysql/
# tar cpf /tmp/master_snapshot.tar .
バイナリログのPositionをメモ
「スレーブが起動した際、バイナリログの読み込み開始位置」を表す。
mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 |      106 |              |                  |
+------------------+----------+--------------+------------------+
書き込みロック解除
バイナリログのPositionさえメモしてしまえば、スレーブの設定完了前にいくら更新かかろうが恐くない。
mysql> UNLOCK TABLES;

スレーブ

マスターデータを展開
展開前にスレーブ停止するのをお忘れ無く。
もしマスターでバイナリログなどをデータフォルダ配下に出力していた場合は、スレーブ側では当然不要なので削除しちゃってください。
# /etc/init.d/mysqld_slave stop
# cd /usr/local/mysql/var
# rm -rf *
# tar xpf /tmp/master_snapshot.tar -C /usr/local/mysql/var/
# rm msyql-bin.00000X mysql-bin.index
my.cnf設定
最低限サーバーIDを設定。
[mysqld]
server-id=2

# スレーブのバイナリログやリレーログの名称やパスを指定したけりゃ以下のように
# log-bin=/usr/local/mysql/mysql-bin
# relay-log=/usr/local/mysql/mysql-relay-bin
# relay-log-index=/usr/local/mysql/mysql-relay-bin
マスター情報セット
ここでの肝は「MASTER_LOG_FILE」と「MASTER_LOG_POS」です。メモした値を設定してください。
mysql> CHANGE MASTER TO
-> MASTER_HOST='localhost'
-> , MASTER_PORT=3306
-> , MASTER_USER='repl'
-> , MASTER_PASSWORD='password'
-> , MASTER_LOG_FILE='mysql-bin.000001'
-> , MASTER_LOG_POS=106;
mysql> START SLAVE;
起動!
mysql> START SLAVE;
動作確認
「Slave_IO_Running」「Slave_SQL_Running」が「Yes」で、「Last_IO_Error」が空ならOKです。
mysql> SHOW SLAVE STATUS\G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.XX.XX
Master_User: repl
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000001
Read_Master_Log_Pos: 257
Relay_Log_File: virtualbox-relay-bin.000002
Relay_Log_Pos: 402
Relay_Master_Log_File: mysql-bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
…

それでは良きレプリケーションライフを!

参考

2012年4月8日日曜日

[MySQL]レプリケーション環境構築手順 for メモリかつかつ人 vol1~1サーバーにMySQL2つインストール

簡単お手軽なMySQLレプリケーション。一昔前だと、環境作って動作確認するのにハードウェアが最低2台は必要だったのでしょうが、現代はというと…いや~仮想マシンって本当にいいもんですね。ハード1台でも、独立したサーバー環境を複数作成できちゃいます。

ただ、仮想マシンは当然それなりにメモリを食います。そして、いくらメモリ激安な現代と言えど、かつかつな環境で日夜スワッピングと戦いながら仕事をしているプログラマはきっと存在する筈。ちなみに僕も前の会社ではこんな感じで、転職してからこんなんだったのが、現在は何と12Gというデラインコグニタですよ。

というわけで、そんな戦うプログラマの方々のために、1つのサーバー環境でレプリケーション環境を構築する手順を捧げます。つっても、+αの作業は、1台のサーバーにMySQLを複数インストールってことだけですけど。仮想環境を複数起動する余裕があり、レプリケーション環境構築手順だけ知りたい方は、このエントリ読み飛ばしてこちらを参照ください
尚、実運用においてはマスターとスレーブを別々の箱に置くべきであることは言うまでもありません。

試した環境

  • CentOS 5.6(64bit), 6.2
  • MySQL 5.1.61

1.MySQLインストール(マスター用)

yumでさくっと入れちゃいましょう。2行目移行のセキュア設定と自動起動設定はお好みで。
# yum -y install mysql-server
# /etc/init.d/mysqld start
# mysql_secure_installation
# /sbin/chkconfig mysqld on

2.MySQLインストール(スレーブ用)

こっちはソースからインストールします。
事前準備
コンパイラをインストール。バージョン5.1移行の場合は、2行目も必要。makeが入ってない場合はインストールしてください。
# yum install gcc gcc-c++
# yum install ncurses-devel
# yum install make
ソースダウンロード
以下のページから入手できるので、wgetかブラウザでダウンロード。

# wget http://downloads.mysql.com/archives/mysql-5.1/mysql-5.1.61.tar.gz
コンパイル&インストール
以下の例では「/usr/local/mysql」にインストールします。
ポート番号はマスターや既存サービスと被らないものを指定するように。
あとInnoDB有効とするconfigureオプションは、バージョン5.1では
「--with-plugins=innobase」
です(「--with-innodb」ではない。「./configure --help」で調べてみ。)。
$ tar xvzf mysql-5.1.61.tar.gz
$ cd mysql-5.1.61
$ ./configure --with-charset=utf8 --with-extra-charsets=all --with-mysqld-user=mysql --prefix=/usr/local/mysql --with-tcp-port=53306 --with-unix-socket-path=/usr/local/mysql/var/mysql.sock --with-plugins=innobase
$ make
# make install
# chown -R mysql:mysql /usr/local/mysql/
DB初期化
# {ソースディレクトリ}/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/var --user=mysql
my.cnf作成
一例。配置場所はbasedirかdatadirに。まあbasedirが一般的だろうか。
# vim /usr/local/mysql/my.cnf
[mysqld]
port=53306
basedir=/usr/local/mysql
datadir=/usr/local/mysql/var
default-character-set=utf8

[mysql.server]
user=mysql
basedir=/usr/local/mysql

[mysqld_safe]
socket=/usr/local/mysql/var/mysql.sock
log-error=/var/log/mysqld_slave.log
pid-file=/var/run/mysqld/mysqld_slave.pid

[client]
default-character-set=utf8

[mysqldump]
default-character-set=utf8

[mysql]
default-character-set=utf8
起動スクリプトコピー
インストールディレクトリ配下にある「mysql.server」をリネームコピーし、ルートディレクトリのパスなどを追記。
# cp /usr/local/mysql/share/mysql/mysql.server /etc/init.d/mysqld_slave
# chmod 755 /etc/init.d/mysqld_slave
# vim /etc/init.d/mysqld_slave
basedir=/usr/local/mysql
datadir=/usr/local/mysql/var
pid_file=/var/run/mysqld/mysqld_slave.pid
起動確認と自動起動設定
# /etc/init.d/mysqld_slave start
# /usr/local/mysql/bin/mysql -u root
# /sbin/chkconfig --add mysqld_slave
# /sbin/chkconfig mysqld_slave on
# /sbin/chkconfig --list | grep mysql

記事ボリュームが結構でかくなったので

肝心のレプリケーション設定は次回に持ち越します。
録画しといたIPPONグランプリも早く観たいし。

2012年3月7日水曜日

PHP4環境構築とPEAR強制アップグレードメモ

PHP4…CakePHPがバージョン2になってついにサポート対象から外れたこんな時代に需要なんて殆ど無いだろうけど、まあ仮想マシンなら物理的な場所とらないってことで一応環境作って残しときましょう…ってことで実際需要が発生したので、まあブログなら物理的な場(以下同文)

願わくば、我のみならず俗世においても当エントリを必要とする状況があまり発生せんことを。停滞は後退だ。2010年にもなって新規案件でVBScriptてIE6てJava1.4て…(はいわざわざ過去をほじくり返してイラついている大馬鹿者です)

試した環境

  • CentOS 5.6(64bit)
  • Apache 2.2
  • PHP 4.3.11
ちなみに、PHP4.2以前はApache2系と相性悪いらしく、実際僕もインストールできませんでした。

事前準備

Apacheインストール
apxsってのも必要なのでhttpd-develも一緒に。
# yum -y install httpd httpd-devel
Flexとlibxml2インストール
# yum -y install flex libxml2-devel

PHPインストール

yumでのインストールはできないので、ソースからインストールせざるをえない。
ダウンロード、コンパイル、インストール
旧バージョンも含めたPHPのソース置き場は以下。
configureオプションはとりあえず必要最低限の設定。
$ wget http://museum.php.net/php4/php-4.3.11.tar.gz
$ tar zxvf php-4.3.11.tar.gz
$ cd php-4.3.11
$ ./configure --enable-mbstring --with-apxs2=/usr/sbin/apxs
$ make
# make install
php.ini作成
解凍したソース一式の中にある「php.ini-dist」という雛形があるので、それをコピー。
# cp php.ini-dist /etc/php.ini
Apache設定
httpd.confに以下の設定を追加。その後再起動。
AddType application/x-httpd-php .php
最低限の設定は完了。あとはおなじみのphpinfo()で動作確認。
動かなかったら、ファイアウォールやSELinuxの設定を確認してみろ、と自分に向けて書いておく。

HTTP_Requestインストールから学ぶ、PEARパッケージ強制アップグレード

作成したPHP4環境では、HTTP_Requestも必要だったのだけど、これも一筋縄ではいかなかったのでメモする次第。
普通にインストールできるかと思いきや…
# pear install HTTP_Request -a
HTTP error, got response: HTTP/1.1 410 Gone
Didn't receive 200 OK from remote server. (HTTP/1.1 410 Gone)
何か「そんな古いパッケージはもう置いてねえよ」とでも言ってるようなエラーメッセージだ。
以下によると、PEARのバージョンが古いからだろうとのこと。
確かにパッケージのドキュメントに「PEAR Installer 1.4.3」って書いてあるわ。PHP 4.3.11を当エントリの手順でインストールした場合、PEARのバージョンは1.3.5だった。

ということで、上記記事を参考に、PEARを強制アップグレード…の前にまず「Archive_Tar」を強制アップグレード。これやっとかないと、PEAR強制アップグレード自体で同様の「410 Gone」エラーが発生する。
# pear upgrade --force http://pear.php.net/get/Archive_Tar-1.3.1.tar
# pear upgrade --force http://pear.php.net/get/PEAR-1.4.3.tar
# pear install HTTP_Request -a

終わり。自分で書いときながらだけど、このエントリ読み返したくねぇ(読み返すような状況に遭遇したくねぇってことです)。

2012年2月5日日曜日

VirtualBox ディスク容量変更方法

「これだけあれば事足りるだろう」との決定を下した後、「こんな筈じゃなかった!」とハードディスクの容量が足りなくなる事は人の世の常。今回はVirtualBoxのディスク容量を変更する方法をご紹介します。やらなきゃいけない事は
  1. 仮想ディスクの容量変更
  2. パーティションサイズの変更
です。

試した環境

  • VirtualBox 4.1.8
  • ゲストOS:CentOS 6.2
  • ホストOS:Windows 7, Vista

仮想ディスクの容量変更

容量増やしたい場合
作業前に念のためバックアップ(クローン)を作成しておくことを推奨します。
コマンドプロンプトを起動し、VirtualBoxのインストールフォルダに移動し、以下のコマンドを実行。
C:\Program Files\Oracle\VirtualBox>VBoxManage.exe modifyhd VDIファイルパス --resize 希望サイズ(MB)
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
容量減らしたい場合(需要あるのか?)

注:これまでもそしてこれからも未検証

仮想ディスクのサイズ変更だけなら、以下の方法でいけるかもしれませんが…
  1. 希望のサイズの空仮想ディスクを新規作成
  2. 既存の仮想ディスクの内容を空仮想ディスクにコピー
ただし後述の通りパーティションサイズはそのままなので、この場合起動できるかどうか分からん。

仮想ディスクのコピーは以下コマンドを実行。
ああでもコピー先の方が容量少ないとこの段階でエラー発生しそうだな。
C:\Program Files\Oracle\VirtualBox>VBoxManage.exe clonevdi コピー元VDIファイル コピー先VDIファイル --existing
※参考

パーティションサイズの変更

仮想ディスクの容量変更しても、残念ながらパーティションサイズは元のままですので、ここも変更する必要があります。普通にCentOSをインストールした場合、ルートディレクトリはLVMパーティションとして作成されるので、ここではLVMパーティションのサイズ変更手順を解説します。
尚、LVMパーティションかどうかを確認するには以下コマンド。
# fdisk -l
/dev/sda1 …
/dev/sda2 … Linux LVM

そもそもLVMって何なのかってのは割愛。
ちなみに僕がとった流れは以下の通り。多分もっとスマートなやり方があると思うけど…
  1. 未割り当て領域に新規パーティション作成
  2. LVMパーティションに1.で割り当てたパーティションがっちゃんこしてサイズ拡大
未割り当て領域に新規パーティション作成
僕はGparted使いました。以下ページからISOファイルをダウンロード。
ダウンロードしたISOファイルをIDEコントローラにマウントした状態(「設定」→「ストレージ」で「IDEコントローラ」にISOファイルを割り当て)で仮想マシン起動。

その後は以下の流れを辿って、GpartedをGUIモードで起動。
  • Gparted Live (Default settings)
  • 言語:「Japan」
  • モード:GUI(「0」)
未割り当て領域を右クリック→「New」で表示されるダイアログにて新規パーティションを作成。以下のような感じで。

その後は
  • ツールバーの「Apply」をクリックし、変更を適用。
  • 左上の「Exit」アイコンをダブルクリックし、一旦シャットダウン。
  • シャットダウンしたらGpartedのISOファイルの割り当て解除し、仮想マシンを再度起動。
起動したら以下コマンドで新規パーティションの作成確認。
# fdisk -l
/dev/sda1 …
/dev/sda2 … Linux LVM
/dev/sda3 … Linux
LVMパーティションに新規作成したパーティションがっちゃんこしてサイズ拡大
まずは新規パーティションをPVとして作成。
# pvcreate /dev/sda3
…
Physical volume "/dev/sda3" successfully created
# pvdisplay ←PVの情報を表示

次に新規PVをVGへ登録。vgdisplayでVGの名前を確認し、vgextendでその名前を指定する。vgextendが成功したら、vgdisplayでVGサイズを確認してみてください。増えてればOKです。
またこの時、「Free PE / Size」の右側をメモしておいてください。
# vgdisplay
--- Volume group ---
VG Name               vg_virtualbox
…
# vgextend vg_virtualbox /dev/sda3
Volume group "vg_virtualbox" successfully extended
# vgdisplay
--- Volume group ---
…
VG Size  9.50 GiB
…
Free PE / Size  511 / 2.00 GiB

最後に、LVのサイズを拡大。
「lvextend -L [拡大サイズ] [LV名]」と打ち込みます。サイズには前述の「Free PE / Size」の右側の数字の値を、LV名はlvdisplayで表示される「LV Name」を指定。
# lvextend -L +2G /dev/vg_virtualbox/lv_root
Logical volume lv_root successfully resized
# resize2fs /dev/vg_virtualbox/lv_root

すべてが完了したら、lvdisplayやdfでサイズを確認してみてください。

※参考

2012年1月30日月曜日

機動戦士ノーナインガンダム

ABCマント ≒ アイスバーン

ビーム・ソーは、ABCマントを切り裂く力を持っている。
高速で振り回されるビーム・ソーも、光速に近い速さで通り過ぎるビーム・ライフルのそれに比べれば、遥かに低速でマントの上を通り過ぎる。
蒸発によってエネルギーを打ち消すマントにとっては、こうした長い間「同じ場所に居座り続ける」武器の方が苦手だということなのだ。
~機動戦士クロスボーン・ガンダム クァバーゼのメカニック解説より

雪に覆われた今週の大東京、雪道とは名ばかりの氷道いわゆるアイスバーンを闊歩する俺。最寄り駅までのルート前半、滑らぬようゆっくり歩いた結果、大幅にタイムロスした俺は、こんな日まで律儀に始業時間厳守する必要あるのかという葛藤を抱えつつ、危険を覚悟で途中から小走りに切り替えた。
その時、俺は発見した。

「アイスバーンはゆっくり歩くよりも小走りの方が滑りにくい」

という真実を。
その時ふと思い出したのが、冒頭のクロスボーン・ガンダムからの引用。ゆっくり歩くということは、それだけ氷との接触時間が増えるということだから、却って滑りやすくなるんですかね。そういえば、熱湯などの熱いものなんかも一瞬ちょん!って触れる分には大丈夫だもんね。いやはやこの世の事象は奥が深い(大袈裟)。

カレーうどん < 富野由悠季+菅野よう子
and
リング・オブ・ガンダム ≒ ガイア・ギア?

「カレーは美味い。うどんも美味い。じゃあカレーうどんは2倍美味いのかというと、そんなことはない」
ってな事を松本人志が言ってた様な気がするが、僕にとっての富野由悠季・菅野よう子のコラボは2倍美味いなんてものじゃない。その両名による作品として『ブレンパワード』『∀ガンダム』に続く第3作である『リング・オブ・ガンダム』って…結局製作されるの!?されないの!?

一年戦争の遙か未来とか、「アムロの記憶」とかいうワードが散りばめられてたような気がしたけど、それを聞くと駄作「ガイア・ギア」を思い出す(こっちは「シャアの記憶」を受け継ぐ者の話だけど)。

ようやくアムロにもスポットが。世の中的にはシャアばっかりが人気だもんね。ていうかこちら側の世界だけでなく劇中でも、アムロの近くにいたハサウェイは『閃光のハサウェイ』で「シャアに共感」しちゃってるし。 アムロの理想主義的な考え方、結構好きなんだけどなーまあ確かに実現可能性は低いだろうけど…
…なんて楽しみにしていたのはもう既に2年半前。富野監督は既に古希を迎えている。こんな事言いたかないけど、流石にこのお年だと新作は…

アニメ版 < 小説版 < 脳内編集版

社会人になってから富野アニメを殆ど鑑賞しなくなり、小説版メインで楽しむようになった。アニメ版を見なくなった理由は、自由時間が学生の頃と比べて大幅に減少したのに伴い、余計な戦闘シーンや横道エピソードなどの「冗長部分」が鬱陶しくなってきたからだ。今でこそアニメはエンターテイメント界で確固たる地位を築いてはいるけど、80年代ではメインの顧客はお子様。スポンサーの意向で、プラモデルを売るために戦闘シーン多めにしたり、そもそもストーリーを子供向けに(つまりソフトに)改変せざるを得なかった時代(まあビジネスだからしょうがない)。『逆襲のシャア』のストーリー改変なんかは、角川文庫版の後書きで富野氏本人が語っているので有名ですね。ちなみにそこでは改変を「納得した」的な事を言っていたけど、果たして本心だったのだろうか。

小説版は『顧客のニーズ』なんて無視してやりたい放題な感じで面白い。『Z』ではシャアのダカール演説がフル収録されてたり、カミーユのマザコン・基地外加減がひどいもんだったり。全体的に、アニメでは全く窺えないエログロ描写が割と多く、ドロドロしている。特にバイストン・ウェルものなんか、中世ヨーロッパ的な世界観ということもあり、『ベルセルク』さながらにバイオレンス&セックスが溢れている。下の毛が生えた今となっては、そういうよりドロドロしたものの方がやっぱ面白く感じるです。そして、アニメ版・小説版からそれぞれいいとこ取りして織り交ぜ…といった感じで脳内編集したものを妄想するようになって幾星霜。やっぱり脳内編集版が一番面白い(自分の好みに作り上げるから当たり前だろうが)。


クロボン、目がでけぇよ…(by 富野監督)


リーンの翼、高ぇよ…