tag:blogger.com,1999:blog-65520458207378061682024-02-20T18:44:21.372+09:00僕らはみんな歪ているどもくそです。おもくそhttp://www.blogger.com/profile/11329561840526758815noreply@blogger.comBlogger139125tag:blogger.com,1999:blog-6552045820737806168.post-13048277175362641152013-04-30T00:00:00.001+09:002013-04-30T00:10:12.000+09:00僕歪黄金号〜4月は仕事で殆どコード書いてないプログラマがちょっと通りますよ新年度も早1ヶ月、通勤退勤電車で初々しさ漂う者たちを見かける季節、社会人としてのマナーをまだよく分かってないそんな彼・彼女らによる<a href="http://www.youtube.com/watch?v=7aAHLA-_vI8">Gメン歩き</a>に出くわしてイラっとする事が多めな季節、そんな彼・彼女らの実技訓練を行っているためか有楽町線の運転何か荒くね?と感じる季節ですね!え?そう感じるのは僕だけですかそうですか。<br />
<br />
<h4>「自由時間を最大化したければ、自由時間使って勉強しろ」</h4>上記は僕の下に新人プログラマがついたら言おう思ってる台詞。まあ今のところ言う機会は一度も巡ってきてませんが。<br />
<br />
時間は有限。よって勉強に時間を使えば、当然それ以外の時間は減る。だけど、勉強することで仕事を効率的にこなせるようになれば、勉強に費やした時間なんてあっちゅーまに元とれるよ、と。<br />
<br />
え?時間は勉強よりも家族サービスに使いたい?<br />
勉強することで、いつ会社が潰れてもすぐ仕事見つけられるくらいの力をつけておき、家族を安心させておくこと、それが一番の家族サービスでは?支える土台が無い状態でいくら時間が確保できたところでねぇ…<br />
まあ新入社員で家族抱えてる人はそんなにいないでしょうが。<br />
<br />
え?仕事早く終わらせても他人の尻ぬぐいさせられるって?<br />
まずは尻ぬぐいした分がちゃんと評価に反映されるか確認しましょう。何もなかったり全然割に合わなかったりしたらさっさと辞めちまえそんな会社。<br />
<br />
え?別に程々に生活できればいいしーだって?<br />
程々の生活おくるのにも割と努力しなけりゃならない時代ですよこれからは。<br />
<br />
<h4>リストラ処女喪失(周りが)</h4>世の中的には年度ではなく「年」の節目に目標立てたりふりかえりしたりするのが一般的なようですが、3月終了4月開始の文化を鑑みると「年度」の節目に行う方がいいと思うのは僕だけでしょうか。年末年始なんてまだとにかく寒いからすぐ挫けそうになるし(「早起き」やアウトドア系の目標なんて特に)、花粉症だと2月3月でまた挫けそうになるし、年度末に異動・転勤とかで環境がらっと変わる可能性あるし(「新入社員」なんてまさにそうだし)。<br />
<br />
とまあそういう価値観っていうのと、<a href="http://bokuibi.blogspot.jp/2013/01/no.html">昨年12月に歯列矯正始めて</a>しばらくは碌に食事摂れずフラフラだから運動できず心肺機能低下してメガネ曇り防止マスクしているのに風呂場のごたるって状態が、3月上旬あたりにやっと奥歯のセメント外れてそれなりに物噛みちぎれるようになって体力戻ってきてよし4月から本気出すってことで、いろいろ目標考えていたんですけど、3月の最終営業日…勤めている会社で業績不振による大リストラ発表。技術職は何と僕一人を除いて全員クビ!It's an ありがた迷惑。<br />
<br />
そんな訳で、孤独なエンジニアライフを送っております。エントリ前半でも触れた勉強だけど、人に教えて貰うのが一番手っ取り早いんですよね。IT業界は勉強しなきゃいけない事がとても多いから、一人で網羅するなんて不可能。自分の興味がある分野だけ重点的に勉強して、他の人と知識を補い合うのが効率的なわけです。それが(社内では)できなくなった訳で、仕事の非効率化は必至。<br />
<br />
それと、自分はアプリケーションレイヤー人間なんですけど、専任のインフラエンジニアもクビになったからインフラ周りの仕事も捌かにゃならず、今月はインフラ資産の棚卸し、社内システム・ハードウェアの選択と集中、ドメインレンサバVPSの更新催促メール対応といった仕事ばっかで殆どコード書いてません。まあルーターいじったりデータセンター行ってRAID組んで監視ツールいれたりってのはいい経験だったけど。とはいうものの、実ハードウェアでRAID組むなんてクラウド時代にどれほどの価値があるのだろうか、クラウドならこんなわざわざデータセンター借りて赴いて手間かけて設定する必要ないよなーなんて思って虚しくなったり。ああそうだ、技術者は俺一人になったことだし、興味と実益を兼ねて社内システムのAWS化を目論んでやろうか。<br />
<br />
せめてこれが一時的なものならまだ頑張れるのだが…おそらく恒久的。業績が急回復すれば増員に動くだろうけど、まあ無理だろうな…ちなみに会社のメイン事業はSEOですよSEO。しかもオワコンである被リンク系がメインの。Googleに勝てるわけがない。せめて(エンジニアではなくとも)優秀な人がいれば、その人から学べるものはあるだろうからまだやり甲斐あるだろうけど、僕からみてもDQNでとにかくITリテラシー低く…もうメールとExcel「だけ」で仕事するのイヤ!<br />
<br />
平日は週末が恋しくなり、週末の末である日曜夜はブルーになり、ストレスで血便排出…こんなの、新卒で入社した親方日の丸系SIerでイラついてた時以来だ。<br />
<br />
<div style="text-align:center;">*</div><br />
<iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bokuibi-22&o=9&p=8&l=as1&asins=4822211967&ref=qf_sp_asin_til&fc1=000000&IS2=1<1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe><iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bokuibi-22&o=9&p=8&l=as1&asins=4822211983&ref=qf_sp_asin_til&fc1=000000&IS2=1<1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>おもくそhttp://www.blogger.com/profile/11329561840526758815noreply@blogger.com0tag:blogger.com,1999:blog-6552045820737806168.post-35719426462251733762013-03-03T00:31:00.002+09:002013-03-03T00:36:06.991+09:00[CakePHP]アラビア語はSQLまでも右から左へ受け流す 他<h4>アラビア語をINSERTしたSQL文をブラウザで見るとカラムと値の並びが逆だった<br />
</h4>仕事でアラビア語を登録するSQLを実行する機会がありました。<br />
アラビア語を登録するテーブルの構造は以下のような構造。<br />
<br />
<table border="1"><tr><th>Field</th></tr>
<tr><td>id</td></tr>
<tr><td>word</td></tr>
<tr><td>delete_flag</td></tr>
<tr><td>created</td></tr>
<tr><td>modified</td></tr>
</table><br />
"word"列にアラビア語がセットされるのですけど、INSERT文をCakePHPにて実行し、Cakeが出力するSQLデバッグを確認したところ・・・<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgaDb1SW2-U82Oe_a29wMn7w_mOHBs3yuFt_e-AxzWf9lNT-n8pWLyuzi3d8hAQ-xFU0Fcx_es0NsjiG3Y-GHwxpTTCpHGyUutZ_vfySsmgoeficg1ulzIZsWTukiUw1VPdgL-hSDwL3fI/s1600/arabic_insert_sql_debug.png" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgaDb1SW2-U82Oe_a29wMn7w_mOHBs3yuFt_e-AxzWf9lNT-n8pWLyuzi3d8hAQ-xFU0Fcx_es0NsjiG3Y-GHwxpTTCpHGyUutZ_vfySsmgoeficg1ulzIZsWTukiUw1VPdgL-hSDwL3fI/s320/arabic_insert_sql_debug.png" /></a><br />
<br />
カラムと値の対応が逆になってました。でもテーブル確認するとちゃんと正常にデータ登録されてました。てかブラウザのページソース確認してみると、カラムと値の並びはちゃんと揃ってました。<br />
ちなみに上記テーブルをCSV出力してWindowsのEmEditorで開いた時も並びは逆になってました。<br />
<br />
アラビア語といえば右から左へ綴る言語ってことで、ブラウザとかエディタが表示制御してるんでしょうね。SQLに限らず、左から右へと綴る言語とアラビア語を混在させた文章がどう表示されるかいろいろ試してみたいな。ま、それをやって特に得るものはないから優先度超低だけど。<br />
<br />
<h4>アラビア語の文字コードとかのメモ殴り書き<br />
</h4>携わってる仕事は別にグローバルでは無いんですけどね。<br />
<ul><li>ISO-8859-6, windows-1256 : アラビア語</li>
<li>GB2312 : 中国語</li>
<li>EUC-KR : 韓国語<br />
※mb_detect_orderで「EUC-JP」の後に定義してると「EUC-JP」と検出されてしまった。<br />
「EUC-JP」の前に定義すると今度は「EUC-JP」が「EUC-KR」と検出。<br />
つまりどちらの言語も先に出現する方のエンコーディングとして検出されるっぽい</li>
<li>タイ語はUTF-8</li>
</ul><h5>グローバル展開するならMySQLのエンコーディングはutf8ではなくutf8mb4を使うべき</h5><a href="http://codezine.jp/article/detail/6463?p=2">【デブサミ2012】16-A-6 レポート グリーに学ぶ、グローバル展開の最新事情 (2/2):CodeZine</a><br />
<br />
<h4>CakePHPではMySQLのTINYINT型はboolean型扱いとなる</h4>データの種類や区分を表すのに整数値割り当てて使うってのはまあ当たり前の話ですが・・・<br />
この区分値を格納するカラムの型をTINYINT(1)にし、Modelでこの区分値の条件指定して検索かけたところ、いろいろと意図してない結果が発生しました。<br />
<ul><li>検索条件に2以上の値を指定しても=1のデータが返ってきた</li>
<li>値が0のデータの検索結果をダンプすると、カラムの値は0ではなくbool(false)となっていた<br />
→PHPで判定条件を「=== 0」と厳密判定にしてたら大変だね</li>
</ul>どうも「0とそれ以外」の2種類しか認識されない、つまりboolean扱いされているっぽい。<br />
app/tmp/cache/models配下にあるモデルキャッシュを確認してみたところ、問題のカラムの型は確かにboolean型になってました。<br />
<pre class="source">・・・
s:10:"kbn_column";a:4:{s:4:"type";s:7:"boolean";・・・
・・・
</pre><br />
Cakeの仕様なんでしょうね。僕全然知らなかったのですけど、これって知ってなきゃ恥ずかしいレベル?<br />
<br />
まあとにかく、0と1以外の値を持ちうる場合はCHAR(1)にしときましょう。<br />
<br />
<div style="text-align:center;">*</div><br />
<iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bokuibi-22&o=9&p=8&l=as1&asins=B009GPMG2A&ref=qf_sp_asin_til&fc1=000000&IS2=1<1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe><iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bokuibi-22&o=9&p=8&l=as1&asins=B009GPMG1Q&ref=qf_sp_asin_til&fc1=000000&IS2=1<1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>おもくそhttp://www.blogger.com/profile/11329561840526758815noreply@blogger.com0tag:blogger.com,1999:blog-6552045820737806168.post-43622828404875630212013-02-04T19:48:00.001+09:002013-02-04T19:53:54.960+09:00Cloudera Managerを利用してHadoopインストール試みたが最後にエラーPCとネットワーク環境さえあれば開発環境を構築できる時代ですが、それでも敷居が高いのがビッグデータ系環境。並列分散処理を本格的に検証するならハードが複数必要だし、VM使って擬似分散環境を構築する場合は(VM載せるマシンに)ある程度のスペックが要求される。SSDとはいえメモリ4G、ブラウザでちょっとタブを多めに開いたり大容量ファイルコピーするだけでファンフル回転するMacbookAirでは厳しいな・・・というのを言い訳に後回しにしてきたけど、いい加減そろそろ手を出さないとなと思ってたところに<a href="https://ccp.cloudera.com/display/SUPPORT/Cloudera+Manager+Downloads">Cloudera Manager</a>という環境構築ツールの存在を知り、ちょっと手を出してみました。<br />
<br />
しかし結果は・・・当エントリのタイトルが物語っているとおり、最後の最後のサービス起動でエラー発生してインストール処理全ロールバックという結果となりました・・・。詳細は後述しますが、<a href="http://darutk-oboegaki.blogspot.jp/2012/12/install-cloudera-manager-and-cdh4.html">どうもサービス起動時のタイムアウトっぽい</a>。Hadoopのインストール先が外付けハードディスクに置いたVMで、かつ先に述べたとおりマシンスペックが低いとは言え・・・レスポンス時間の要件厳しすぎやしませんかClouderaさん。<br />
<br />
ということでHadoop動かすところまではいきませんでしたが、環境構築の流れは確認できたのでメモメモ。<br />
<br />
<h4>試した環境</h4><ul><li>CentOS 6.3</li>
<li>Cloudera Manager 4.1.3</li>
</ul><a href="http://www.cloudera.co.jp/blog/cloudera-manager-cdh-install-demo.html">日本語サイトの紹介ページ</a>には<br />
「インストール・ノード、コンポーネントの選択や、インストール後のセットアップを含めてたったの4分程度でクラスタを構築することができます。」<br />
とありますが(上記ページ内の動画では5分)、僕の環境ではインストール処理開始までは確かに数分でしたが、実際のインストールには1時間以上待たされました。まあこれもマシンスペックの問題かもしれません。<br />
<br />
<h4>Cloudera Manager インストールマシンでの事前準備</h4><h5>SELinuxを一旦無効に</h5>無効にしないとCloudera Managerのインストーラに怒られて先へ進めません(Permissiveでもダメでした)。<br />
<pre class="source"># vim /etc/sysconfig/selinux
--
SELINUX=disabled
--
# reboot
</pre><h5>scpコマンドインストール</h5>Cloudera Managerは各ホストにHadoopインストールする際、インストール対象ホストへインストールファイルをコピーするのに内部でscpを使ってます。<br />
<pre class="source"># yum install openssh-clients
</pre><br />
ちなみにJDKも必要なんですけど、無ければCloudera Managerと一緒にインストールしてくれます(本家Oracleの6系ですけど)。<br />
<br />
<h4>Cloudera Manager インストール</h4>ドキュメント<br />
<ul><li><a href="https://ccp.cloudera.com/display/FREE41DOC/Automated+Installation+of+Cloudera+Manager+and+CDH">Automated Installation of Cloudera Manager and CDH - Cloudera Support</a><br />
</li>
</ul><h5>ダウンロード</h5>以下ページから辿ります。<br />
<ul><li><a href="https://ccp.cloudera.com/display/SUPPORT/Cloudera+Manager+Downloads">Cloudera Manager Downloads - Cloudera Support</a></li>
</ul>ユーザー情報登録を求められますが、<a href="http://www.cloudera.co.jp/blog/cloudera-manager-cdh-install-demo.html">日本語サイトの紹介ページ</a>の動画で「(ユーザー情報)登録してくれたらうれしいです」と述べてる通り、入力はしなくてもダウンロード可能。入力画面下部の"I'd rather not fill in the form..."といったメッセージ内のリンクからダウンロードページに飛べます。<br />
<br />
それではコマンドを叩きます。<br />
<pre class="source">$ wget http://archive.cloudera.com/cm4/installer/latest/cloudera-manager-installer.bin
$ chmod u+x cloudera-manager-installer.bin
# ./cloudera-manager-installer.bin
</pre><br />
GUIのウィザードが起動するので、Nextとか同意するとかしてください。インストール処理はそこそこ時間かかりました。<br />
<h5>ファイアウォール穴開け</h5>7180番ポートを開けます。<br />
<pre class="source"># vim /etc/sysconfig/iptables
--
-A INPUT -m state --state NEW -m tcp -p tcp --dport 7180 -j ACCEPT
--
# service iptables restart
</pre><br />
<h4>Cloudera Manager使ってHadoopクラスタ構築</h4>ブラウザでインストールしたマシンの7180番ポートへアクセス。ログイン画面が表示されるので、<a href="https://ccp.cloudera.com/display/FREE41DOC/Automated+Installation+of+Cloudera+Manager+and+CDH#AutomatedInstallationofClouderaManagerandCDH-Step2%3AStarttheClouderaManagerAdminConsole">ここ</a>に記載されている通りログインユーザー・パスワードに「admin」を入力してログインしてください。<br />
<br />
後はもうウィザードに従えばいいだけなので割愛。Hadoopに手を出そうとする人なら説明なんていらんでしょ。ちなみに僕の環境の場合、前述の通りインストール処理は1時間以上かかりました。<br />
<h5>そして、エラー発生</h5>片手間に進捗バーを眺めること1時間弱、ようやく全てのソフトウェアのインストールが完了したと思いきや、エラーが発生してバーの色が赤色になって「ロールバックします」との非情な光景が。<br />
ホスト一覧の「詳細」リンクを押下するとインストールログを参照できるので、確認してみたところ、以下エラーが発生していました。<br />
<pre class="source">BEGIN /sbin/service cloudera-scm-agent start
cloudera-scm-agent を起動中: [60G[ [0;31m失敗 [0;39m]
</pre><br />
サービスの起動でエラー発生しているので、サービスのインストールに失敗したのかと思い、いろいろと調べたところ、発見したのがHadoopのエキスパートと思われる方の以下記事。<br />
<ul><li><a href="http://darutk-oboegaki.blogspot.jp/2012/12/install-cloudera-manager-and-cdh4.html">覚え書き: Install Cloudera Manager and CDH4 manually</a><br />
</li>
</ul><blockquote>Cloudera Manager のインストーラーである cloudera-manager-installer.bin は、速度の遅いネットワークではタイムアウトのせいで失敗してしまう (ように見える)<br />
</blockquote>この方は結局Cloudera Manager使うのを諦めて手作業でインストールしたそうです。ってことで、僕も深追いするのは諦めました。<br />
手作業でのインストール手順は、上記の方とか他をあたってください。<br />
<br />
<h4>Cloudera Manager アンインストール手順</h4>僕と同じくCloudera Managerでインストールできねぇってことで無用の長物と化したのでアンインストールしたい場合は、以下ページを参照してください。<br />
<ul><li><a href="https://ccp.cloudera.com/display/express37/Uninstalling+Cloudera+Manager+Free+Edition">Uninstalling Cloudera Manager Free Edition - Cloudera Support</a></li>
</ul><br />
<div style="text-align:center;">*</div><br />
<iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bokuibi-22&o=9&p=8&l=as1&asins=4873115035&ref=qf_sp_asin_til&fc1=000000&IS2=1<1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe><iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bokuibi-22&o=9&p=8&l=as1&asins=4774153893&ref=qf_sp_asin_til&fc1=000000&IS2=1<1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe><iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bokuibi-22&o=9&p=8&l=as1&asins=4798034940&ref=qf_sp_asin_til&fc1=000000&IS2=1<1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe><iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bokuibi-22&o=9&p=8&l=as1&asins=4798128066&ref=qf_sp_asin_til&fc1=000000&IS2=1<1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe><iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bokuibi-22&o=9&p=8&l=as1&asins=4873115469&ref=qf_sp_asin_til&fc1=000000&IS2=1<1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>おもくそhttp://www.blogger.com/profile/11329561840526758815noreply@blogger.com0tag:blogger.com,1999:blog-6552045820737806168.post-44658428492520402172013-01-21T01:25:00.002+09:002013-02-04T19:48:36.648+09:00僕歪週末号〜ゲイNo!人は歯が命ちっ、また週末過ぎちまってたぜ。<br />
<br />
<h4>ドラッカー本って自己啓発書なん?</h4>1週間ほど前(関東大雪の日だっけな)、ラジオ聴きながら晩飯作ってたら、「キャリアポルノ」というどっかで聞いたフレーズが飛び込んできた。どこで聞いたんだっけなと記憶を辿っていると、今度は「タニモトマユミ」と、これまたどっかで聞いた名が。そう、ご存じ<a href="https://twitter.com/May_Roma">May_Roma女史</a>でした。何とラジオに電話出演しておられました。何か最近<a href="http://www.amazon.co.jp/%E3%83%8E%E3%83%9E%E3%83%89%E3%81%A8%E7%A4%BE%E7%95%9C-%EF%BD%9E%E3%83%9D%E3%82%B9%E3%83%88%EF%BC%93%EF%BC%8E11%E3%81%AE%E5%83%8D%E3%81%8D%E6%96%B9%E3%82%92%E7%9C%9F%E5%89%A3%E3%81%AB%E8%80%83%E3%81%88%E3%82%8B-ebook/dp/B00AZWGR4Q">本を出版されたり</a>と、今年は表舞台においでになるんでしょうかね(それとも元々これくらいの活動してました?)。<br />
<br />
さて、ラジオでのテーマですが、前述してますが「<a href="http://wirelesswire.jp/london_wave/201211260725.html">キャリアポルノ</a>」に関して。まあ「自己啓発書なんて無意味だ」といったことを述べているのですけど、一点気になったのが「自己啓発書の定義」。ラジオでも上記の元記事でもドラッカーを例に挙げていましたが、僕の感覚ではドラッカー本は自己啓発書ではなくノウハウ集・フレームワーク集ってな位置づけなんですけどどうなんでしょう。ラジオで「具体的じゃない(実際どうすればいいか書いてない)から、(実践では)役に立たない」というような事もおっしゃってましたけど、具体的でないのは様々ケースで使えるようにするために抽象化(要するにフレームワーク化)してあるからであって。まあ僕ドラッカー読んだことないですけど(『もしドラ』をブックオフでパラ読みしたくらい)。<br />
<br />
でもまあしかし、愛すべきおばちゃんです。<br />
<br />
<h4>僕ら歯みんな歪ている</h4>私、自分で言うのも何ですが割とシュッとしていてコミュ障って訳でもないのに長いこと彼女がいない+坊主頭というだけで、これまで幾度となくゲイ疑惑をかけられてきた者です。そんな私もとっくに30歳になりました。そんなおっさんの領域に踏み込みだした私ですが、昨年12月、長年の夢だった歯列矯正をついに始めました。最大の目的は「体の歪み矯正(それに伴う体質改善)」です。ちょっと自律神経が弱かったり、まっすぐ立ってるつもりなのに度々「傾いている」と言われたりすることが多いもんで。歯の歪みが肩こりなど「体の歪み」を引き起こしてる節もあるので、首都直下地震やハイパーインフレで円資産を失う前にパーッと自分に投資しようと思った次第です。ネットでもリアルでも評判が高かった青山の某クリニック(値段も高いが・・・)にお世話になってます。<br />
<br />
歯列矯正でネックになってくるのは、治療費もそうですが一番はやはり治療期間。6〜7年くらい金具つけっぱなしってイメージをずっと抱いていたので今まで中々踏み切れなかったんですけど、最近ではあのごつい金具は全体矯正でも大体1年ぐらいで取れるみたいです。前歯だけの部分矯正ならもっと早く(+安く)で済みます。さらに、期間をさらに短縮させる<a href="http://ja.wikipedia.org/wiki/%E3%82%B3%E3%83%AB%E3%83%81%E3%82%B3%E3%83%88%E3%83%9F%E3%83%BC">コルチコトミー手術</a>というのもあるんですよ(高いけど・・・)。医学の進歩ってすごいですね!ただ、寝てる間にマウスピース装着して半年に一回くらいで通院するという「保定期間」ってのはどうしても2〜3年かかってしまうみたいです。<br />
<br />
さて、僕の場合なんですが、<br />
<ul><li>上下ともに前歯のエリアが狭い(平均的な人の歯形がUだとしたら、僕の場合はV)ので、部分矯正すると出っ歯になる。よって全体矯正の方がおすすめ。</li>
<li>全体矯正の場合は、まずは前歯のエリアを広げるために、歯の裏側にも装置をつける必要あり</li>
<li>上前歯が1本、下前歯の裏側にいっちゃってるので、これを前に出すまでは前歯が重ならないよう、奥歯表面にセメント塗りこんで常に何か噛んでいる状態にしておかなくてはならない</li>
</ul>という状態。歯の表面だけではなく、裏側+奥歯と、第1段階では3倍のアイテムを装着しなくちゃならない状況。ちなみにこの第1段階の期間は最大で約3〜6ヶ月。前述したコルチコトミー手術ってのを受けると、これが2〜4ヶ月に縮まるとのことだけど、手術代が結構高い(月収に匹敵するレベル)。<br />
<br />
結局、裏側の装置が舌に触れるので喋りづらくなるわ、奥歯はセメント塗ってるから物を噛みちぎってすり潰すのが困難だわ・・・って生活は一日でも早く終わらせたかったので、大奮発して手術受けました。治療期間が短くなるだけじゃなく、それ以外にも痛みの抑制やら歯を支える骨が強くなるやらいろいろメリットがあるとのことだし。歯は一生ものですからね。<br />
<br />
ってことで、現在絶賛矯正中です。歯の中アイテムだらけです。奥歯はやはり使えたものじゃなく、食べ物は全て流し込んでます。よって食べ物はお粥などの流動食系、豆腐などの「うがいで噛みくだける系」ばっかりです。一度、禁断症状にどうしても耐えられなくなりカップヌードル食べたところ、麺を全然噛みちぎれなくて喉につまって窒息しそうになりました。<br />
<br />
ああ・・・早く肉食いたい・・・ラーメンつけ麺食いたい・・・オンナ食いたい・・・つまり俺はゲイじゃない・・・<br />
<br />
<h4>歯医者豆知識</h4>歯科医院では、「抜糸」を「ばっし」ではなく「ばついと」と読む。<br />
「抜歯」とごっちゃになるから。<br />
<br />
<div style="text-align:center;">*</div><br />
<iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bokuibi-22&o=9&p=8&l=as1&asins=B00AZWGR4Q&ref=qf_sp_asin_til&fc1=000000&IS2=1<1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe><iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bokuibi-22&o=9&p=8&l=as1&asins=4478410232&ref=qf_sp_asin_til&fc1=000000&IS2=1<1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe><iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bokuibi-22&o=9&p=8&l=as1&asins=4478012032&ref=qf_sp_asin_til&fc1=000000&IS2=1<1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>おもくそhttp://www.blogger.com/profile/11329561840526758815noreply@blogger.com0tag:blogger.com,1999:blog-6552045820737806168.post-52419735810651842482013-01-19T23:28:00.001+09:002013-01-19T23:33:12.581+09:00[Mac 10.8]Homebrewインストール+Rubyバージョンアップメモ僕はアルミボディiMacの頃(2007年。OSは10.5)からのマカーなんですけど、開発環境はずっとBootcamp上のWindows。かつても今も職場のPCは当たり前のようにWindowsだし(Excel・・・)、以前の会社ではJava時々.NETで降Linux確率0%です今日も元気にいってらっしゃいって状況だったからWindowsオンリー、現在はLAMPオンリーだけどVM使ってるからホストOSが何であろうと関係ない・・・ってことでズルズルとWindows使い続けてきたけど、いい加減飽きてきたしShift-JIS鬱陶しくなってきたしiPhone5買ったしって事でMacに移行しました。ついでにOSも最新の10.8に。ウィンドウサイズ変更が全枠でできるようになったのはGJ(昔は右下端でしかできなかった)、スクロールの挙動がスマホ仕様になったのはまあ慣れるとして、なぜSpacesを外した!?<br />
<br />
というわけで、まずは各種ソフトウェア・言語環境を手っ取り早く構築・管理するために、パッケージ管理システムHomebrewをインストールしました。その時の作業メモ。<br />
ついでにデフォで入ってたRubyを1.9系にバージョンアップ。<br />
<br />
<h4>試した環境</h4><ul><li>Mac OS 10.8(Mountain Lion)</li>
<li>Java 6u37</li>
<li>Homebrew 0.9.3</li>
</ul><br />
<h4>Javaインストール</h4>OS 10.8の場合、Javaが未インストールの状態でJavaを使用する何らかのプログラムを実行すると、「Java無いです。インストールしますか?」的なダイアログが表示され、ご親切にもOSがインストールしてくれます(10.7以前はどうか知らん)。ターミナルでjavaコマンドを叩くのが一番手っ取り早いでしょう。<br />
<br />
ただし、この場合にインストールされるバージョンは6となります。最新の7が欲しい場合は自力でインストールしましょう(この手順は割愛)。<br />
<br />
<h4>Xcode Command Line Tools インストール</h4>単独インストールしてもいいですが、Xcodeインストールしとけばワンクリックでインストールできます。<br />
<br />
XcodeはApp Storeでその辺のアプリ感覚でインストール可能。Appleの開発者アカウント登録は不要でした。Xcodeインストールしたら、起動して<br />
Preferences > Downloads > Components<br />
リスト内の「Command Line Tools」を「Install」。<br />
<br />
<h4>Homebrewインストール</h4>公式サイト下部にインストールコマンド記載されているのでコピペして実行。<br />
<a href="http://mxcl.github.com/homebrew/">Homebrew — MacPorts driving you to drink? Try Homebrew!</a><br />
<pre class="source">$ /usr/bin/ruby -e "$(curl -fsSkL raw.github.com/mxcl/homebrew/go)"
$ brew -v
Homebrew 0.9.3
</pre><br />
サブコマンド一覧は「man brew」で確認してください。<br />
<br />
ていうかMacにはRubyがデフォルトで入ってるのね知らんかった。<br />
でもバージョンは1.8.7か・・・。<br />
<br />
<h4>Rubyが最新でなきゃ夜も眠れない方々へ送る子守唄</h4>rbenvを利用して、最新バージョンのRubyを同居させてそっちに切り替えます。<br />
<h5>rbenvインストール</h5>先ほどインストールしたHomebrew使えば一発。<br />
インストールしたら環境設定ファイルに設定追加して再読込。<br />
<pre class="source">$ brew install rbenv
$ brew install ruby-build
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
$ source ~/.bash_profile
</pre><h5>Ruby お好みのバージョンインストール</h5>まずは-lオプションで用意されているバージョンのリストを確認し、あとはお望みのバージョンをインストール。<br />
今回僕は1.9.3の最新版を選択しました。<br />
<pre class="source">$ rbenv install -l
Available versions:
・・・
1.9.1-p378
1.9.2-p180
1.9.2-p290
1.9.2-p318
1.9.2-p320
1.9.3-dev
1.9.3-p0
1.9.3-p125
1.9.3-p194
1.9.3-p286
1.9.3-p327
1.9.3-p362
1.9.3-preview1
1.9.3-rc1
2.0.0-dev
2.0.0-preview1
2.0.0-preview2
・・・
$ rbenv install 1.9.3-p362
$ rbenv global 1.9.3-p362
$ ruby -v
ruby 1.9.3p362 (2012-12-25 revision 38607) [x86_64-darwin12.2.0]
</pre><br />
<h4>参考</h4><ul><li><a href="http://tools4hack.santalab.me/howto-mountainlion-install-homebrew.html">[Mac] Mountain Lionへパッケージ管理「Homebrew」をインストールする手順のメモ | Tools 4 Hack</a></li>
<li><a href="http://pplog.org/?p=1845">【初心者向け】Mac(OSX Lion)でRuby on Railsを動かすための5ステップ « pplog.org</a></li>
</ul>おもくそhttp://www.blogger.com/profile/11329561840526758815noreply@blogger.com0tag:blogger.com,1999:blog-6552045820737806168.post-88110563986216481902013-01-14T22:51:00.001+09:002013-02-12T22:51:20.705+09:00[Redis 2.6]インストールメモ + パスワード設定時の起動スクリプト明けまくりましておめでとうございます、おもくそです。<br />
<a href="http://bokuibi.blogspot.jp/2012/07/blog-post_22.html">最終更新は汗もしたたる真夏、そして内容は今は亡き(失礼!)koboに関して</a>、そして久方ぶりの更新は<a href="http://matome.naver.jp/odai/2135814291382332801">ヤマト運輸がギブするほどの大雪日</a>という現実に、四季が存在する国の素晴らしさを噛みしめております。<br />
<br />
そんな新年一発目のエントリに、今年の抱負といった一般的なものではなく技術ネタを持ってくるという自分のことが、好きでもあり嫌いでもあります。まあ今年もこんな感じでマイペースに行こうと思います。<br />
<br />
<h4>試した環境</h4><ul><li>CentOS 6.3</li>
<li><a href="http://redis.io/">Redis 2.6.8</a></li>
</ul>Redisは昨年にバージョン2.4を少し使うことがあったのだけど、その時のドキュメントには「バージョン2.6でクラスタ構成できるようになるよ(Redis Cluster)」ってあったけど、<a href="http://redis.io/download">正式リリースはまだみたいですね</a>。<br />
<br />
<h4>ダウンロード、インストール</h4>以下ページの通りに。「make install」しないんだね。あと言わずもがなだけどgcc必要です。<br />
<a href="http://redis.io/download">Download – Redis</a><br />
<pre class="source">$ wget http://redis.googlecode.com/files/redis-2.6.8.tar.gz
$ tar xvzf redis-2.6.8.tar.gz
$ cd redis-2.6.8
$ make
</pre><br />
<h4>起動スクリプト生成</h4>confファイル、ログファイル、起動スクリプトを生成してくれるシェルが同梱されているので、それを実行。Redis本体のバイナリ(redis-server)にパス通して無い場合は、途中でバイナリの実行パスを指定してあげる必要があります。<br />
<span style="color: red; font-weight: bold">ところがこのシェル、どうもバグってるっぽいです</span>。詳しくは後述します。まあ僕の環境の問題かもしれないけど・・・もしエラー発生しなかった場合は、エラーが関連している節は読み飛ばしてください。<br />
<pre class="source">$ cd utils
# ./install_server.sh
Welcome to the redis service installer
This script will help you easily set up a running redis server
Please select the redis port for this instance: [6379]
Selecting default: 6379
Please select the redis config file name [/etc/redis/6379.conf]
Selected default - /etc/redis/6379.conf
Please select the redis log file name [/var/log/redis_6379.log]
Selected default - /var/log/redis_6379.log
Please select the data directory for this instance [/var/lib/redis/6379]
Selected default - /var/lib/redis/6379
which: no redis-server in (/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/omokuso/bin)
Please select the redis executable path [] /usr/local/redis/src/redis-server
which: no redis-cli in (/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/omokuso/bin)
s#^port [0-9]{4}$#port 6379#;s#^logfile .+$#logfile /var/log/redis_6379.log#;s#^dir .+$#dir /var/lib/redis/6379#;s#^pidfile .+$#pidfile /var/run/redis_6379.pid#;s#^daemonize no$#daemonize yes#;
Copied /tmp/6379.conf => /etc/init.d/redis_6379
Installing service...
./install_server.sh: line 178: update-rc.d: コマンドが見つかりません
exists, process is already running or crashed
Installation successful!
</pre><h5>「update-rc.d: コマンドが見つかりません」だと?</h5>不具合その1。<br />
「update-rc.d」というのは、UbuntuなどのDebian系のコマンドで、自動起動設定を行うものです。CentOSなどRedhat系での「chkconfig」に相当。CentOSで実行したら、見つからないのは当たり前です。<br />
<br />
はて、バグか?起動スクリプト生成シェルを確認してみたところ・・・<br />
<pre class="source">・・・
#Install the service
echo "Installing service..."
if [ !`which chkconfig` ] ; then
#if we're not a chkconfig box assume we're able to use update-rc.d
update-rc.d redis_$REDIS_PORT defaults && echo "Success!"
else
# we're chkconfig, so lets add to chkconfig and put in runlevel 345
chkconfig --add redis_$REDIS_PORT && echo "Successfully added to chkconfig!"
chkconfig --level 345 redis_$REDIS_PORT on && echo "Successfully added to runlevels 345!"
fi
・・・
</pre><br />
うーん・・・ちゃんと「『chkconfig』が見つからなかったら」という判定を行ってRedhat系の場合の分岐もあるのけどな・・・chkconfigのパスも通ってるし。何でだろう・・・<br />
<br />
とりあえず、判定条件とupdate-rc.d実行部分をコメントアウトし、chkconfigが無理矢理実行されるようにしてから再度実行してみたところ・・・<br />
<h5>今度は「サービス redis_6379 は、chkconfig をサポートしていません。」ですって!?</h5>不具合その2。<br />
「redis_6379」ってのは自動生成されたRedisの起動スクリプトです。<br />
chkconfigに登録するには、特定のフォーマットの記述が必要。以下はApacheの起動スクリプトの例です。<br />
<pre class="source">$ head /etc/init.d/httpd
#!/bin/bash
#
# httpd Startup script for the Apache HTTP Server
#
# 以下2項目が必要
# ↓順番に「ランレベル(この例だと未指定だけど)」「起動優先順位」「停止優先順位」
# 優先順位はそれぞれ100未満じゃないとダメっぽい
# chkconfig: - 85 15
# ↓これはただの説明
# description: The Apache HTTP Server is an efficient and extensible \
# server implementing the current HTTP standards.
・・・
</pre><br />
前述の「サポートしていません」エラーは、上記の記述が無い場合に発生する。<br />
登録対象の起動スクリプトを確認してみると・・・何じゃこりゃぁっ!!<br />
<pre class="source"># vim /etc/init.d/redis_6379
#/bin/sh\n #Configurations injected by install_server below....\n\n EXEC=/usr/local/redis/src/redis-server\n CLIEXEC=/usr/local/redis/src/redis-cli\n PIDFILE=/var/run/redis_6379.pid\n CONF="/etc/redis/6379.conf"\n\n REDISPORT="6379"\n\n ###############\n\n
case "$1" in
start)
・・・
</pre><br />
chkconfig登録に必要な記述が無いばかりか、実行コードの一部分が改行されずに冒頭のシバンに連なってしまっている。どうも「\n」をメタ文字じゃなくテキストとして処理してしまっているっぽい。<br />
<br />
とりあえず問題の「\n」を改行に変換(正規表現は「%s/\\n/\r/g」)し、chkconfig登録に必要な記述を追加したのが以下。<br />
<pre class="source">#/bin/sh
# chkconfig: - 90 90
# description: Redis and Gentlemen!
EXEC=/usr/local/redis/src/redis-server
CLIEXEC=/usr/local/redis/src/redis-cli
PIDFILE=/var/run/redis_6379.pid
CONF="/etc/redis/6379.conf"
REDISPORT="6379"
・・・
</pre><br />
これでようやく全ての準備が整いました。<br />
起動・停止してみる。<br />
<pre class="source"># /etc/init.d/redis_6379 start
Starting Redis server...
# /etc/init.d/redis_6379 stop
Stopping ...
Waiting for Redis to shutdown ...
Redis stopped
</pre><br />
そして自動起動設定。<br />
<pre class="source"># chkconfig --add redis_6379
# chkconfig redis_6379 on
# chkconfig --list redis_6379
redis_6379 0:off 1:off 2:on 3:on 4:on 5:on 6:off
</pre><br />
<h4>Redisにパスワードを設定してみたら、停止できなくなった!</h4>Redisは以下のようにパスワードを設定できます。<br />
<pre class="source"># vim /etc/redis/6379.conf
・・・
requirepass RedisAndGentlemen
・・・
</pre><br />
これにより、各種操作を行う前にauthコマンドによる認証が必要になる。<br />
<br />
さて、この状態で先ほど生成した起動スクリプトを実行すると、起動は問題なく行われるのだけど、停止は・・・<br />
<pre class="source"># /etc/init.d/redis_6379 start
Starting Redis server...
# /etc/init.d/redis_6379 stop
Stopping ...
(error) ERR operation not permitted
Waiting for Redis to shutdown ...
</pre><br />
失敗してしまいます。shutdownコマンドの実行前にauthコマンドで認証通っておく必要あるようだ。<br />
<br />
というわけで、起動スクリプトを修正。ちなみに当サンプルでは<a href="http://www.ksknet.net/linux/nc_netcat.html">ncコマンド</a>を使用するのでインストールしておいてください。<br />
<br />
<pre class="source"># yum install nc
# vim /etc/init.d/redis_6379
・・・
# パスワード
REQUIREPASS="RedisAndGentlemen"
・・・
stop)
if [ ! -f $PIDFILE ]
・・・
else
・・・
# 旧ロジック。こういうのはコミット前に削除しようね!
#$CLIEXEC -p $REDISPORT shutdown
# authとshutdownは同一セッションで実行しないといけません
echo -en "auth $REQUIREPASS\r\nshutdown\r\n" | nc localhost $REDISPORT
# ちなみに以下はダメ。auth時とshutdown時はセッション異なるので。
#$CLIEXEC -p $REDISPORT auth $REQUIREPASS
#$CLIEXEC -p $REDISPORT shutdown
・・・
</pre><br />
以上。<br />
<br />
<div style="text-align:center;">*</div><iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bokuibi-22&o=9&p=8&l=as1&asins=1449396097&ref=qf_sp_asin_til&fc1=000000&IS2=1<1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe><iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bokuibi-22&o=9&p=8&l=as1&asins=B005KOJ4AS&ref=qf_sp_asin_til&fc1=000000&IS2=1<1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>おもくそhttp://www.blogger.com/profile/11329561840526758815noreply@blogger.com2tag:blogger.com,1999:blog-6552045820737806168.post-1230243685902833192012-07-22T23:58:00.000+09:002012-07-22T23:58:13.285+09:00放課後電子波クラブ<h4>kobo買ってました</h4>ブログではAmazonアソシエイト使っておきながら、実生活では楽天メイン(ポイントサービスこっちの方がいいから)である私。その甲斐あってかいつのまにかプラチナ会員になってたってことで実質4980円。スペックとかはちと物足りなく感じたが、まあ電子書籍ことはじめとしてはいいかなと、すぐに飛びつきました。スマホもタブレットも持っていない私が初めて手にした次世代デバイス、その実力は…って、もう至るところでとっくに言い尽くされていますが、僕の場合は…<br />
<ol><li>まず箱から取り出すのに一苦労<br />
蓋が中々取れんかった。蓋の指入れるスキマがただでさえピッチピチな上、箱自体が固めでスキマ広げにくい。僕は結局ハサミ入れて側面一つ外した</li>
<li>セットアップ時、メルマガ受け取る設定にしないと先へ進めなかった。</li>
<li>とりあえず無料の青空文庫の宮沢賢治や太宰治作品をいくつか入れてみたが、殆どの作品が表紙と奥付(最終ページ)だけで、肝心の中身が無いんですけど…プリインストールの『フランダースの犬』や『源氏物語』さえも。<br />
しかも奥付の作品名が開いてるのと違うの多数(『銀河鉄道の夜』開いてるのに奥付には『風の又三郎』って表示されてるみたいな)</li>
<li>そもそもデスクトップアプリでライブラリ(入れた本一覧)を確認出来ないってどうなのよ?ていうか2回目以降ライブラリの同期すらできないんですけど…</li>
<li>内蔵時計のタイムゾーンがデフォルトUTC。言語で「日本語」選択したんだから、JTCに自動設定してくれよ。</li>
<li>Wi-Fi設定のネットワーク入力欄が左側3分の1くらい欠けている。セキュリティ用のマスクか?それなら暗号キーと同じ仕様(チェックボックスで切替)にしてくれよ。</li>
</ol>こんなところかな。中にはセットアップすらままならない方もいらっしゃるようで。<br />
<br />
<h4>とりあえずデスクトップアプリはバージョン3.0.1を使うべし</h4>上記の3, 4はどうもデスクトップアプリの不具合っぽいですね。ダウンロード元が英語サイトの場合、アプリのバージョンは3.0.0なんですけど、こいつがいけないみたいです。英語サイトには、セットアップ時にURLが表示されたのか、公式のFAQから辿ったのか、どうやって辿り着いたが忘れましたが、とにかく「公式」の情報だった筈。今は修正されてるかどうかは分かりません。<br />
<br />
と、前置きが長くなってしまいましたが、アプリはバージョン3.0.1を使いましょう。これでライブラリ同期やデータクラッシュの不具合は解決したみたいです。日本語サイトからダウンロードできます。URLは以下。<br />
<ul><li><a href="http://rakuten.kobosetup.com/">Kobo - Read Freely » Home</a></li>
</ul>※情報元<br />
<ul><li><a href="http://blog.osakana.net/archives/2733">なぜか同期されないKoboライブラリ | OSAKANA TAROのメモ帳</a></li>
</ul><br />
<h4>暗号キーの入力は死ねた</h4>koboにはWi-Fi接続機能があるので、早速設定に取りかかった訳ですが…もう二度とやりたくねぇ!<br />
<br />
ってのは、僕は<a href="http://bokuibi.blogspot.jp/2009/12/2009123virus.html">Macにも当たり前のようにセキュリティソフト導入する程</a>に、セキュリティには気を遣っており、そんな僕のパスワードの類の桁数は<br />
「最大桁数に最も近い素数」<br />
という運用ルールとしているので、無線LANの暗号キーは61桁に設定していたんですよ。PC端末増設する場合は、テキストファイルからコピペして済ませられたから特に不便感じてなかったので、今回のようなコピペできないケースってのは全く想定外でした…<br />
<br />
だがこの61桁のランダム文字列入力が一発OKだったのには自分で自分を褒めてやりたい。<br />
<br />
<h4>で、電子書籍買ってますか-?</h4>買ってませんw。理由は価格。何故か紙の本と殆ど変わらない。著者の方々には申し訳ないけど、僕はビジネス本・新書・小説の類は殆ど中古か図書館レンタルなので、この価格設定だと踏み切れません。kobo手に入れたその日の夜、ブックオフオンラインで本購入している自分がいましたよ。電子書籍様子見ってことで、今月は本の購入控えてたので、そりゃあもうがっさりと買っている自分がいましたよ。<br />
<br />
漫画に関しては基本新品で買うんですけど、漫画は電子書籍より紙の方がいいというのが個人的感覚。理由は以下。<br />
<ol><li>漫画は小説などと比べて文字量が少ないので、頻繁にページ繰りが発生する。<br />
ページ繰りは圧倒的に紙の方が速い。</li>
<li>電子書籍では全文検索は可能でも「あのシーンどこだっけ?」といった「画像検索」はできない。<br />
これを行う際にキーとなってくるのは、これまたページ繰り速度。</li>
<li>紙だと「前半3分の1辺り」のような「二分探索的ページ繰り」も可能。</li>
</ol>これらは『ブラックジャックによろしく』や『テルマエ・ロマエ』の無料版電子本を読んだときに体感済。まあ慣れの問題かもしれないけど。<br />
<br />
ていうか、紙の本だと見開き2ページだけど電子書籍だと1ページ(2ページにできなくもないだろうけど小さくなって読みづらいよね)ってこととかも考えると、電子書籍って速読には向いてないよね。<br />
<br />
ただまあ場所取らないってのはでかいんだよなぁ…これからどうしていこうか。おもくそhttp://www.blogger.com/profile/11329561840526758815noreply@blogger.com0tag:blogger.com,1999:blog-6552045820737806168.post-84398069946972830052012-07-16T23:45:00.001+09:002012-07-16T23:49:01.943+09:00僕歪週末号~大っ津、オラ悟空厳密には週末じゃないけど、明日からの日々に対する悲しみは週末以上でしょ?<br />
<br />
<h4>冷静に観察すると物凄い髪型だね</h4>ふーん。<br />
<ul><li><a href="http://www.dragonball2013.com/">映画ドラゴンボールZ 2013年3月30日全国超拡大公開!</a></li>
</ul>「原作:鳥山明」ってなってるけど、これは鳥山先生がストーリー書くってこと?それとも「戦隊ものガンダム」みたく「原案:富野由悠季」ってのと同じ意味合い?<br />
<br />
ちなみに僕は今年30歳という思いっきりドラゴンボールリアルタイム世代。「超サイヤ人のバーゲンセール」の頃は小学生で、男子の誕生日プレゼントの定番はドラゴンボール文房具。あの頃、文房具の大半は金髪マッチョマンの絵が描かれた物で占められていた。<br />
<br />
バトル漫画ということで、服ビリビリの上半身裸パターンが結構多かった気がするが、絵面だけ見ると外国のホモアニメに見えなくもないな。<br />
<br />
<h4>【切望】「因果応報」の物理法則化</h4>僕の移動時のお供である『松本人志の放送室』。<a href="http://bokuibi.blogspot.jp/2012/07/blog-post.html">前回の週末号</a>で、「第249回『マイケル・ジャクソン SMAP×SMAP出演裏話』の回を聞いた日がたまたま彼の命日だった」というのをお伝えしましたが、今週また似たようなことが。<br />
<br />
それは…「いじめ」に対する見解を述べている第266回。ニュースに取り上げられて話題になった第345回と同じ事言ってます。内容の引用や紹介はしませんので各自ググってください。案の定、このタイミングなので再度取り上げられているようです。ちなみに僕の松本氏の意見に対する見解というか感想は、「一理あるとは思うけど、一番悪いのはやっぱり自殺に追い込む側だよね」という、まあ恐らく一番多いであろう意見です。<br />
<br />
ところで、こういう事件があると「もし自分がイジメに遭ったとしたら…」って時々考えてしまう。僕だったらどうするんだろう。僕は基本的に<br />
「オレは殴られたら必ず殴り返す!!」 by ガッツ from 『ベルセルク』<br />
とか<br />
「俺を殺す気なら、殺してやる」 by 武蔵 from 『バガボンド』<br />
とか<br />
「死なば諸共ーー!!」 by ジロン from 『戦闘メカ ザブングル』<br />
って気性なので、自殺以外の方法による反撃を決めたいところですね。ちなみに僕は生まれてこの方「喧嘩」をしたことはございません。<br />
<br />
少し話は逸れるけど、こういった「目には目を」的な話になると、<br />
「復讐したって何も解決しない」<br />
とか<br />
「憎しみの連鎖を生むだけだ」<br />
とか<br />
「不毛。もっと有意義なことに時間やエネルギー使おうよ」<br />
なんて意見が出てくる。さて、「憎しみの連鎖」と言うが、「連鎖」ってのは「基となる憎しみ」あってのもの。「加害者」の方は「憎しみをゼロから生み出す」という、錬金術師も真っ青な事している。明らかに「連鎖」よりも質が悪い。ビジネスライクに「憎しみの絶対量」って観点で考えてみると、加害者放っておいたらその量は確実に増え続けることになる(反省の有無はここでは考えない)。<br />
<br />
なので、「生み出すもの」が一番悪い、元は断ってしまうべきだ、そのために何らかの一石は投じるべきだってことで、復讐はした方がいいのかなってのが僕の考え(こういう問題で「方がいいのかな」ってのも変ですが)。まあ「必ず復讐すべし!」とは思ってないです。<br />
<br />
いやしかし、今回の事件はかなりの世論が味方についているので、事後の事に関してはこれ以上酷くはならないだろうけど、表沙汰にならずひどいままの事件っていっぱいあるんだろうな…<a href="http://hamusoku.com/archives/57024.html">「底辺ニートの俺がついに日本人の平均年収を超えた」</a>とかでもかなり酷い目に遭わされたみたいだし…<br />
<br />
ていうか、「因果応報」をただの思想・概念ではなく、明確に物理法則化してくんないかな、神。そうしてくれたら確実に犯罪減るのに。神と言えば、それに近い存在である「天使」の肖像画を美術の授業とかで時々目にしてきたけど、若い女性ばかりで熟女を見たことがない気がするのは気のせい?僕が見落としているだけ?もし僕の見落としでないのであれば、神と言えども女性は若い方が好きだと思っているということか。熟女の魅力・魔力を理解できていないクソガキに、森羅万象を統べる資格なんてあるのか?おもくそhttp://www.blogger.com/profile/11329561840526758815noreply@blogger.com0tag:blogger.com,1999:blog-6552045820737806168.post-70542542744370898182012-07-01T23:58:00.000+09:002012-07-02T00:02:34.174+09:00僕歪週末号~僕に踊れと言うのか?<h4>「リッピング」を初耳った時「キス技の一種か?」と思ったのも今は昔</h4><blockquote>「泥棒」って奴は本当に悪い奴だ。<br />
「物を盗む」という行為自体が悪いのは勿論、<br />
皆が「戸締まり」に神経使わなければいけない社会にした事も悪い。<br />
~松本人志<br />
</blockquote><br />
今週の出来事ではないですが、「違法ダウンロード刑罰化」と「DVDリッピング違法化」可決されちゃいましたね。<br />
<br />
<a href="http://bokuibi.blogspot.jp/2009/07/blog-post_28.html">「因果応報」を信じてエロ動画すら真面目にちゃんと購入している僕</a>にとっては、違法ダウンロード刑罰化で被る被害はゼロだし、いいぞーどんどんしょっぴけーって心境。そういえば最近はミスチルライブの日にレズものDVD3本購入したっけな。<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBI74FfMT2kSg61_4iEgpATKpLUoPEYwEEpYSWLJns90Il76vXma-7IWAEOB9v6aw3iSf4j4VhikeCQxMQuzSWTnwpfYtj1vvPtgfnpJFda49qaDbeyoB0AdBy0LwyHFeJ0d9H5bkjdow/s1600/adult_dvd_disposed.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"><img border="0" height="300" width="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBI74FfMT2kSg61_4iEgpATKpLUoPEYwEEpYSWLJns90Il76vXma-7IWAEOB9v6aw3iSf4j4VhikeCQxMQuzSWTnwpfYtj1vvPtgfnpJFda49qaDbeyoB0AdBy0LwyHFeJ0d9H5bkjdow/s400/adult_dvd_disposed.jpg" /></a></div><div align="center"><span style="font-size:85%;">引越前に処分したおかず達の一部。<br />
そう、「所持」してる分ではなく「処分」した分でこれです。</span></div><br />
ただDVDリッピング違法化に関しては、正直いただけない。「自分で購入した商品のリッピングもNG」という点が。確かに、ネット上の「DVDレンタルサービス崩壊」という声の多さを鑑みると、レンタルDVDからぶっこ抜いてる人間は結構いるみたいなので、レンタル品に関して規制が導入されるのはまあしょうがないとしても…ていうか話は逸れるがエロDVDはレンタルすべきものではない(モザイクでかくて粗いし時間も短い)。<br />
<br />
はぁ~…DVD一々持ち運んだり入れ替えたりするのめんどくせぇよ…。DVD販売する側の方達にお願い、せめてセル版にはコピー防止技術を搭載しないでいただきたい。僕は今までもそしてこれからもちゃんと買いますから。<br />
<br />
<h4>訃フォー!から早2年ですか</h4><blockquote>人生で一番無駄な時間は移動時間です。<br />
~『宇宙兄弟』より<br />
</blockquote><br />
通勤ラッシュが名物の大東京。「スキマ時間の有効活用」と称し、通勤時間すなわち電車内で読書やらスマフォ・タブレットやらゲーム機を広げている人間が多いが、<a href="http://bokuibi.blogspot.jp/2009/09/blog-post_13.html">それを嫌悪している僕</a>は、通勤時間のお供にはiPodしか選択肢がありません。そして今週も『放送室』を聴きながら通勤。そしてある日、第249回の「マイケル・ジャクソン SMAP×SMAP出演裏話」の回に突入。面白さと不愉快さが入り交じるその裏話を聞きながら出社すると、僕の勤め先はオフィスでラジオかかってるんですけど、耳に入ってきたのはマイケル・ジャクソンの曲(正直興味ないから曲名までは分からん)。<br />
<br />
この程度のことは特に気にかけず、自席について仕事を始めたのだが、かかる曲は次から次へとマイケル(次から次へと曲名分からんけど)。どうもその日、彼の命日だったみたいですね。<br />
<br />
転職して収入大幅アップ、引っ越しして住居レベルもアップ(<a href="http://bokuibi.blogspot.jp/2012/05/blog-post.html">ダウンかもしれんが</a>)、そして年齢の10の位が「3」に更新された事だし、今年は新たに何か初めてみようかなと思っていたところに発生したこの事象。始めるべきは…ダンス…なのか?<br />
<br />
<div style="text-align:center;">*</div><br />
<iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bokuibi-22&o=9&p=8&l=as1&asins=4063871185&ref=qf_sp_asin_til&fc1=000000&IS2=1<1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>おもくそhttp://www.blogger.com/profile/11329561840526758815noreply@blogger.com0tag:blogger.com,1999:blog-6552045820737806168.post-63030679658613598932012-07-01T23:39:00.000+09:002012-07-01T23:58:28.951+09:00[Python]Eclipseプラグイン「PyDev」インストールメモEclipseのPython開発用プラグイン「PyDev」のインストールメモです。<br />
それにしても「パイデブ」って、何かそんな名前のマニア向けシリーズありそうっすね。<br />
<br />
<h4>試した環境</h4><ul><li>Eclipse 3.7 Classic(非日本語化)</li>
</ul>楽天にならって自分も英語力を強化しようと思い立ち、Eclipseは日本語化せず使用することを決心しました。そのため、当エントリにおけるEclipseのメニューや選択項目は英語となりますので、ご了承ください。あと画像はめんどくさいので無しで。<br />
<br />
ところでEcilpseと言えば、確か毎年6月に新バージョンリリースされますが、今回覗いてみたら<a href="http://www.eclipse.org/">バージョン4.2</a>がリリースされてました。プラグインの互換性とかどうなんだろう。<br />
<br />
<h4>PyDevインストール</h4><h5>Available Software</h5>「Help」メニュー >「Install New Software...」を押下。<br />
「Work with」欄右にある「Add...」ボタンを押下し、以下情報を入力。<br />
<ul><li>Name:お好きな値を ※俺なら「PyDev」</li>
<li>Location:http://pydev.org/updates<br />
※ここの入力値は以下ページに記載されています。<br />
<a href="http://pydev.org/download.html">Download - PyDev</a></li>
</ul>「OK」押下したらリストに「PyDev」ともう一つ表示される。「PyDev」展開して「PyDev for Eclipse」をチェックして「Next」押下。<br />
<h5>Install Details</h5>「Next」押下。<br />
<h5>Review Licenses</h5>「I accept…」選択して「Finish」<br />
<h5>Installing Software</h5>ひたすら待つ。途中「Do you trust these certificates?」と証明書を信頼するかどうか聞かれると思うので、表示された項目をチェックして「OK」押下。<br />
完了したらEclipse再起動。<br />
<h5>インストール確認</h5>パースペクティブや新規プロジェクト作成ウィザードで「PyDev」が選択項目に存在していればOK。<br />
<br />
<h4>Pythonインタプリタ設定</h4>これやっとかないと、肝心の入力補完をやってくれません。<br />
「Window」メニュー > 「Preferences」> 「PyDev」>「Interpreter - Python」と辿り、「New...」を押下。<br />
表示されるダイアログに以下情報入力。<br />
<ul><li>Interpreter Name:お好きな値を ※俺なら「Python2.7」</li>
<li>Interpreter Executable:Python実行ファイルのパス<br />
※Windowsなら「C:\Python27\python.exe」とか</li>
</ul>この通りなので、Eclipseを動かす環境上にPythonインストールしておく必要があります。<br />
<br />
「OK」押下し、Pythonライブラリのディレクトリにチェックが入っていることを確認して再び「OK」。<br />
<br />
最初のダイアログに戻るので、「System PYTHONPATH」に先程チェックが入っていたディレクトリが表示されているのを確認。<br />
<br />
以上、ザッツオール。<br />
<br />
<h4>Python実行環境はLinux。EclipseはWindows上。<br />
Linux上にPython外部ライブラリいろいろ入れてるけど、Windows環境にも入れるのめんどくせぇよって時には</h4>pipやeasy_installで追加したライブラリのディレクトリをSambaでマウントし、Windows側から参照できる状態にしておき、先程のインタプリタ設定の「System PYTHONPATH」に追加すればよろしい。Python2.7をソースからインストールしたCentOS6.2環境だと、ディレクトリのパスは<br />
/usr/local/lib/python2.7/site-packages/<br />
でした。<br />
<br />
まあこの辺の設定のことだけを考えると、LinuxにX入れてそこで開発するのが一番楽だわな。おもくそhttp://www.blogger.com/profile/11329561840526758815noreply@blogger.com0tag:blogger.com,1999:blog-6552045820737806168.post-6672150020177367462012-06-24T23:07:00.000+09:002012-11-01T23:10:54.855+09:00[Python 2.7]インストールメモ業務系SIerを脱出してWeb系の世界に飛びこんで早1年半、仕事でのメイン言語はJava1.4(!)からPython2.7へと変わったのに、そういえばPythonネタまだ一つも書いてなかったなーってことでまずはインストールメモ。<br />
つってもこの先別に大したネタなんてないですけど。<br />
<br />
<h4>試した環境</h4>3系はフレームワークとかの対応が芳しくないようなので(Djangoとか)、当ブログでは暫くの間2系でいきます。<br />
ちなみにCentOSにはデフォルトでインストール済ですが(yumとかPython製なので)、2.4とか2.6とかバージョン古いです。<br />
<ul><li>CentOS 5.6, 6.2</li>
<li>Python 2.7.3</li>
</ul><br />
<h4>Pythonインストール</h4><h5>事前準備</h5>zlibはeasy_install使うのに必要。<br />
<pre class="source"># yum install gcc zlib zlib-devel
</pre><h5>ダウンロード&configure</h5>ダウンロードページは以下。<br />
<ul><li><a href="http://www.python.org/download/releases/2.7.3/">Python 2.7.3 Release</a></li>
</ul><pre class="source">$ 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
</pre><h5>コンパイル&インストール</h5>Modules/Setupの一部行をアンコメント(コメントアウトの対義語だよ知ってた?)。<br />
<pre class="source">$ vim Modules/Setup
zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz
</pre><br />
そしてお馴染みのコマンド。<br />
<pre class="source">$ make
# make install
</pre><h5>ライブラリ設定&動作確認</h5><pre class="source"># vim /etc/ld.so.conf.d/python2.7.conf
/usr/local/lib
# /sbin/ldconfig
$ python -V
Python 2.7.3
</pre><h5>動作確認で以下エラー発生したら</h5><pre class="source">$ python -V
python: error while loading shared libraries: libpython2.7.so.1.0:
cannot open shared object file:
</pre><br />
共有ライブラリ確認してみる。<br />
<pre class="source">$ ldd python
…
libpython2.7.so.1.0 => not found
…
</pre><br />
上記の状態の場合、ライブラリへのシンボリックリンクを/lib配下に作成。<br />
<pre class="source"># ln -s {Pythonソースルート}/libpython2.7.so.1.0 /usr/local/lib/libpython2.7.so.1.0
</pre><br />
<h4>pipインストール</h4>いわゆるパッケージ管理システムです。Rubyで言うところのgem、PHPではpear。<br />
<h5>まずはeasy_installのインストール</h5>setuptoolsってのの中に入っている。ダウンロードページは以下。<br />
<ul><li><a href="http://pypi.python.org/pypi/setuptools#files">setuptools 0.6c11 : Python Package Index</a></li>
</ul><pre class="source">$ 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
</pre><h5>easy_install使ってpipインストール</h5><pre class="source"># easy_install pip
</pre><h5>使い方</h5>他人のふんどしをお借りします。<br />
<ul><li><a href="http://d.hatena.ne.jp/rudi/20110107/1294409385">pipの使い方 - そこはかとなく書くよ。</a></li>
</ul><br />
<h4>参考</h4><ul><li><a href="http://d.hatena.ne.jp/paraches/20110421/1303355874">Python 2.7.1 のインストール - Debian GNU/Linux 3.1 on PowerMac G4</a></li>
<li><a href="http://d.hatena.ne.jp/shrkw/20110124/1295851744">CentOS 5.5にvirtualenvを入れて、Python2.7とFlaskの環境を作ったよ! - Bouldering & Com.</a></li>
</ul><br />
<br />
おもくそhttp://www.blogger.com/profile/11329561840526758815noreply@blogger.com0tag:blogger.com,1999:blog-6552045820737806168.post-90325627797809294282012-06-05T23:03:00.001+09:002012-11-01T23:13:35.110+09:00[Selenium 2] Try & Error集 2<h4>バージョン2.21で「Could not load native events component」例外が発生する</h4><b>確認バージョン:Selenium 2.21</b><br />
<b>ブラウザ:Firefox 9, 12</b><br />
<b>対処法:バージョン上げる ※2.22検証済</b><br />
<br />
以前書いた<a href="http://bokuibi.blogspot.jp/2012/05/selenium-2.html">マウスホバー実現方法</a>のエントリで、<br />
「現時点のSelenium最新バージョン2.21はFirefox12に対応していないようで動かず…」<br />
と書きましたが、あの後Firefox9で試してみたら9でも例外発生しました。<br />
発生した例外は以下。<br />
<br />
<pre class="source">org.openqa.selenium.InvalidElementStateException: Cannot perform native interaction: Could not load native events component.
</pre><br />
発生元は以下。<br />
<script class="brush: java" type="syntaxhighlighter"><![CDATA[
WebElement hoverTarget = driver.findElement(By.id("hoverTargetId"));
Actions builder = new Actions(driver);
// 2.21だと例外発生
builder.moveToElement(hoverTarget).perform();
]]></script><br />
上記以外でも発生するかもしれません。<br />
<br />
発生原因は不明。きっとSeleniumのデグレでしょう。バージョン2.22にしたら解決。<br />
<br />
<h4>「MoveTargetOutOfBoundsException」例外の対処法</h4><b>確認バージョン:Selenium 2.18</b><br />
<b>ブラウザ:Firefox 9</b><br />
<b>対処法:事前にターゲットが見えるように座標やウィンドウサイズ調整する</b><br />
<br />
ただリンクやボタンをクリックするだけといった何てこと無い処理で、時々以下例外が発生することがありました。<br />
<br />
<pre class="source">org.openqa.selenium.interactions.MoveTargetOutOfBoundsException: Element cannot be scrolled into view
</pre><br />
ターゲットがウィンドウ領域外にある場合、見える位置まで自動スクロールしてから処理が実行されるのですが、どうも時々スクロールがうまくいかない場合がある模様。<br />
スクロールが原因なのであれば、JavaScriptで座標調整したり、ウィンドウ最大化するなどして、予めターゲットが見えるような状態にしておけばよい。<br />
<script class="brush: java" type="syntaxhighlighter"><![CDATA[
WebDriver driver = new FirefoxDriver();
// スクロール
((JavascriptExecutor)driver).executeScript("window.scrollBy(screen.width, 0)");
// ウィンドウ最大化
DefaultSelenium selenium = new DefaultSelenium(new WebDriverCommandProcessor("http://…", driver));
selenium.windowMaximize();
]]></script><br />
※サイト・ページによっては、上記コードが働かない場合がありました。原因不明。<br />
<br />
<h4>FirefoxのJavaScriptを無効化できない!</h4><b>確認バージョン:Selenium 2.18, 2.21</b><br />
<b>ブラウザ:Firefox 9</b><br />
<b>対処法:不明</b><br />
<br />
それっぽいメソッドがあったので使ってみたのですが、falseセットしても無効化できず。<br />
<script class="brush: java" type="syntaxhighlighter"><![CDATA[
DesiredCapabilities capabilities = DesiredCapabilities.firefox();
capabilities.setJavascriptEnabled(false);
WebDriver driver = new FirefoxDriver(capabilities);
]]></script><br />
OSやブラウザバージョンとか他にいろいろ設定して試してみてもダメだった。<br />
<script class="brush: java" type="syntaxhighlighter"><![CDATA[
DesiredCapabilities capabilities = DesiredCapabilities.firefox();
capabilities.setCapability(CapabilityType.PLATFORM, Platform.WINDOWS);
capabilities.setCapability(CapabilityType.VERSION, 9);
capabilities.setCapability(CapabilityType.SUPPORTS_JAVASCRIPT, false);
WebDriver driver = new FirefoxDriver(capabilities);
]]></script>おもくそhttp://www.blogger.com/profile/11329561840526758815noreply@blogger.com0tag:blogger.com,1999:blog-6552045820737806168.post-91292318308417159272012-06-05T22:15:00.003+09:002013-03-21T18:36:07.548+09:00[Selenium 2] Firefox起動時のポートロック待ち時間変更方法<h4>試した環境</h4><ul><li>ブラウザ:Firefox 9</li>
<li>JDK 6</li>
<li>Selenium 2.18, 2.21, 2.22</li>
<li>Windows 7 64bit</li>
</ul><br />
ある日のこと、Seleniumテストケースを並行して数十個同時にスタートした時、以下の例外が発生した。<br />
<br />
<pre class="source">org.openqa.selenium.WebDriverException: Unable to bind to locking port 7054 within 45000 ms
…
</pre><br />
調べてみると、どうもSeleniumはブラウザプロセス起動する時にTCP7054番ポートをロックするらしく、このポートのロックを一定時間待っても獲得できない場合に上記例外が発生する模様。ちなみにロックはプロセス起動したら開放されるっぽい。<br />
<br />
この値はFirefoxBinaryクラスのtimeoutプロパティの値で、デフォルトでは45秒。変更したい場合は以下のように、タイムアウト値を設定したFirefoxBinaryオブジェクトをコンストラクタに渡せばよい。<br />
<script class="brush: java" type="syntaxhighlighter"><![CDATA[
FirefoxBinary binary = new FirefoxBinary();
binary.setTimeout(60 * 1000); // 単位はミリ秒
// ちなみに2番目の引数はFirefoxProfileオブジェクト
FirefoxDriver driver = new FirefoxDriver(binary, null);
]]></script><br />
<h4>同時にCapabilitiesオブジェクトも使いたいんだけど…</h4>例えばプロキシを使用する場合は、以下のようにCapabilitiesを使用する訳ですが…<br />
<script class="brush: java" type="syntaxhighlighter"><![CDATA[
String proxyAddr = "1.2.3.4:5678";
Proxy proxy = new Proxy();
proxy.setHttpProxy(proxyAddr).setSslProxy(proxyAddr);
DesiredCapabilities capabilities = DesiredCapabilities.firefox();
capabilities.setCapability(CapabilityType.PROXY, proxy);
FirefoxDriver driver = new FirefoxDriver(capabilities);
]]></script><br />
FirefoxDriverのコンストラクタには、FirefoxBinaryとCapabilitiesをパラメータとするものが用意されていません。どうしたらいいんでしょう。Help me...的な事を当初書いていたら、<a href="http://hutyao.hatenablog.com/">hutyaoさん</a>からコメント欄にてご教示いただけました。ありがとうございます!<br />
<h5>CapabilitiesオブジェクトにFirefoxBinaryを入れる</h5><script class="brush: java" type="syntaxhighlighter"><![CDATA[
FirefoxBinary binary = new FirefoxBinary();
binary.setTimeout(60 * 1000);
String proxyAddr = "1.2.3.4:5678";
Proxy proxy = new Proxy();
proxy.setHttpProxy(proxyAddr).setSslProxy(proxyAddr);
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(FirefoxDriver.BINARY, binary);
capabilities.setCapability(CapabilityType.PROXY, proxy);
WebDriver driver = new FirefoxDriver(capabilities);
]]></script><br />
それと、プロキシ設定はCapabilitiesオブジェクトではなくFirefoxProfileでも指定可能だよってことも教えていただきました。<br />
<script class="brush: java" type="syntaxhighlighter"><![CDATA[
//…
FirefoxProfile profile = new FirefoxProfile();
profile.setProxyPreferences(proxy);
WebDriver driver = new FirefoxDriver(binary, profile);
]]></script><br />
<h5><非推奨><br />
FirefoxDriverのソースからメソッドコピペするというダッサイ方法</h5>僕の頭ではこんな方法しか思いつきませんでした…<br />
<br />
以下のimport文とメソッドをコピーし、適当なクラスに貼り付けてください。アクセス修飾子はprivateなので、適宜変更してください。<br />
<script class="brush: java" type="syntaxhighlighter"><![CDATA[
import static org.openqa.selenium.remote.CapabilityType.ACCEPT_SSL_CERTS;
import static org.openqa.selenium.remote.CapabilityType.LOGGING_PREFS;
import static org.openqa.selenium.remote.CapabilityType.PROXY;
/*
それと、FirefoxDriverのサブクラス以外に貼り付ける場合、
以下定数でコンパイルエラー発生するので、以下のように修正。
BINARY → FirefoxDriver.BINARY
PROFILE → FirefoxDriver.PROFILE
*/
public static FirefoxProfile extractProfile(Capabilities capabilities) {
//…
}
public static FirefoxBinary getBinary(Capabilities capabilities) {
//…
}
public static FirefoxProfile getProfile(FirefoxProfile profile) {
//…
}
]]></script><br />
そしてFirefox起動ロジックは以下のような感じで。<br />
<script class="brush: java" type="syntaxhighlighter"><![CDATA[
String proxyAddr = "1.2.3.4:5678";
Proxy proxy = new Proxy();
proxy.setHttpProxy(proxyAddr).setSslProxy(proxyAddr);
DesiredCapabilities capabilities = DesiredCapabilities.firefox();
capabilities.setCapability(CapabilityType.PROXY, proxy);
FirefoxBinary binary = getBinary(capabilities);
FirefoxProfile profile = extractProfile(capabilities);
// ロック待ち時間セット
binary.setTimeout(60 * 1000);
// Firefox起動
FirefoxDriver driver = new FirefoxDriver(binary, profile);
]]></script><br />
僕は上記コピペメソッドや一連の生成ロジックはFactoryクラスに持たせています。<br />
<br />
コピペなんてDRYの原則に反してるじゃねぇか!って方はSeleniumのソース弄ってください。僕としては、コピペ元はjarの中のソースなんで別にいいかなって思いますけど。<br />
<br />
※繰り返しますが当節の方法は非推奨です。おもくそhttp://www.blogger.com/profile/11329561840526758815noreply@blogger.com2tag:blogger.com,1999:blog-6552045820737806168.post-85109859514832486902012-05-28T00:52:00.000+09:002012-05-28T01:06:30.169+09:00僕歪週末号~『得』の指数関数的増加<blockquote>絶対にキレイな女の子の方が金を持ってるよ。<br />
キレイな女の子はみんな奢ってくれるやん。<br />
クリスマスや誕生日に「欲しいもん、何?」とか聞かれて、答えたもん貰えるやんか。<br />
自分が「あれ買いたい」と思て貯めてたお金が浮くねんな。<br />
ブサイクな子、全部実費や。<br />
なんなら、旅行でも現地集合、現地解散や。全部自腹!<br />
~ 島田紳助 『松本紳助』にて<br />
</blockquote><br />
あ、週末過ぎてた…<br />
<br />
今週にかけて散々語り尽くされた話題のWebサービス、<a href="http://studygift.net/home.php">studygift</a>。<br />
僕のような下郎には、語り尽くされたもの以上の鋭い指摘や独自の見解といったものはハッキリ言ってありません。下郎らしく<br />
「彼女が仮に所謂『ブサイク』クラスタに属していたといたら、このサービス存在しなかっただろうな」<br />
という程度しか語れません。でも恐らく真理ですよね。この話題を目にする度、冒頭の言葉を思い出した。キレイ・カワイイ子というのは、それ自体で得なのに、マネー社会においては冒頭の言葉や上記サービスのように金銭的にも得をしていく、と(<a id="20120528_fn_1_from" href="#20120528_fn_1">※1</a>)。支援者の男女比ってどうなってるんでしょうかね。<br />
<br />
僕は学生生活が楽しくなかった部類の人間ということがあってか、物語の主人公がもし「ブサイク」「ハゲ」「コミュ障」「お笑いセンス低すぎ」とかだったら…という妄想というか二次創作を時々していたのだけど…そういう「雑魚」が主人公だと絵にならなくて全然面白くないんですよ。だから「何故(ソーシャルネットワークでは既に成功者の部類に入る)彼女なのか?もっと他の誰にも見向きもされない苦労人を助けるべきでは?」的な意見があったような気がするけど、サービス一発目としてはやはりある程度「絵になる」要素があった方がいいと思うので、個人的には人選はまあ妥当な線だと思う。<br />
<br />
結局、「Web上で声を掛けて数百万円を集める」ってのは、ある意味その人の能力とも言えるし(それだけの地位というか状況を築いたという事実)、単純に彼女のサバイバル能力の高さというのを見せつけられた出来事だった、というのが下郎である僕の感想。<br />
<br />
あ、だからその「能力」ってのは果たしてブサイクだったら得られたものなのか?って出だしだったっけか…<br />
<br />
<div align="center">*</div><a href="#20120528_fn_1_from" id="20120528_fn_1">※1</a><br />
もちろん苦労も多いでしょうけど(同姓の嫉妬やらストーカー被害とか)、トータルではやっぱり得だよね。まあ彼女は特別美人って訳ではないと思うけど。<br />
<br />
<div align="center">*</div>『紳助』に『studygift』って、どちらも今となってはあまり使いたくは無いワードだな。<br />
<iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bokuibi-22&o=9&p=8&l=as1&asins=4344412745&ref=qf_sp_asin_til&fc1=000000&IS2=1<1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe><iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bokuibi-22&o=9&p=8&l=as1&asins=4344416406&ref=qf_sp_asin_til&fc1=000000&IS2=1<1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>おもくそhttp://www.blogger.com/profile/11329561840526758815noreply@blogger.com0tag:blogger.com,1999:blog-6552045820737806168.post-17975265501572795742012-05-27T23:24:00.000+09:002012-06-05T23:05:22.551+09:00[Selenium 2] Try & Error集<h4>「window is null」例外対処法</h4><b>確認バージョン:Selenium 2.2</b><br />
<b>ブラウザ:Firefox 4</b><br />
<b>対処法:バージョン上げる ※2.15以降検証済</b><br />
<br />
見てお分かりの通り、かなり古いバージョンでのお話ですが…<br />
コードを実行していたら、突然「window is null」的な例外が発生し、キャッチしてfinally節でWebDriver#close()してるのにブラウザ閉じないという現象に遭遇した。<br />
残念ながら例外メッセージはメモが見つからなかったのでお見せできませんが(何分古いバージョンのお話なもので…)、以下みたいなのだったっけな…<br />
<a href="http://www.nishantverma.com/2011/06/how-to-handle-webdriverexception.html">Handling “Selenium (WebDriver) Exception: this.getWindow() is null” ~ Nishant Verma</a><br />
<blockquote>org.openqa.selenium.WebDriverException: this.getWindow() is null<br />
…<br />
</blockquote>恐らくブラウザウィンドウの参照を見失ってアクセスできなくなったとかそんな感じの事なんでしょう。<br />
<br />
発生原因は不明。ただ発生するページ・しないページがハッキリしていたので、ページ構造とかDOCTYPEとかが関係しているのかもしれない。<br />
対処法は見つからず。ただバージョンを2.15に上げたら全く発生しなくなった。<br />
<br />
<h4>リッチテキスト要素(iframe)スイッチ例外対処法</h4><b>確認バージョン:Selenium 2.15・2.18</b><br />
<b>ブラウザ:Firefox 9</b><br />
<b>対処法:JavaScript使って入力</b><br />
<br />
ブログの記事エディタのような所謂リッチテキストエディタへの文字入力で遭遇したトラブル。<br />
エディタの実態はiframe要素だったので、定石に従って以下のように書いたら…例外発生。<br />
<script class="brush: java" type="syntaxhighlighter"><![CDATA[
WebDriver driver = new FirefoxDriver();
driver.switchTo().frame("iframe_id_or_name")
]]></script><br />
発生した例外は確か以下(「確か」ですみません…)。<br />
<blockquote>org.openqa.selenium.WebDriverException: Permission denied for <http://> to get property HTMLDocument.compatMode<br />
…<br />
</blockquote><br />
発生原因は不明。「compatMode」とかあるので、これももしかしたらDOCTYPEが関係しているのかも(申し訳ないですが未検証)。<br />
対処法は、JavaScriptでinnerHTMLプロパティセットするというNotスマートな方法しか見つからず。<br />
<script class="brush: java" type="syntaxhighlighter"><![CDATA[
WebDriver driver = new FirefoxDriver();
String inputJs = String.format(
"var ifr = document.getElementById('iframe_id').contentDocument;" +
"ifr.body.innerHTML = '%s';"
, "入力値"
);
((JavascriptExecutor)driver).executeScript(inputJs);
]]></script><br />
ちなみにSeleniumバージョン2.2だと発生しませんでした。はいそうです、前述の「window is null」対処によるデグレです。<br />
<br />
<h4>要素クリックでの「Permission denied」対処法</h4><b>確認バージョン:Selenium 2.15・2.18</b><br />
<b>ブラウザ:Firefox 9</b><br />
<b>対処法1:リターンキー送出</b><br />
<b>対処法2:フォーカス(orマウスホバー)してからクリック ※効き目無い場合あり</b><br />
<br />
ボタンやリンクを普通に「WebDriver#click()」したら発生。例外は前述のiframeのものと同じです。これも発生するページ・しないページはハッキリしていました。<br />
対処法は以下の通り。<br />
<script class="brush: java" type="syntaxhighlighter"><![CDATA[
WebDriver driver = new FirefoxDriver();
WebElement targetElement = driver.findElement(By.id("targetId"));
//対処法1
//ちなみに僕のケースでは「Keys.ENTER」はダメでした。
targetElement.sendKeys(Keys.RETURN);
//対処法2
//ただし前述の通り効き目が無い場合がありました。
DefaultSelenium selenium = new DefaultSelenium(new WebDriverCommandProcessor("http://...", driver));
selenium.focus("id=targetId");
// or
//selenium.mouseOver("id=targetId");
selenium.click("id=targetId");
//マウスホバー&クリックのもう一つの実装法。
Actions builder = new Actions(driver);
builder.moveToElement(targetElement).click(targetElement).build().perform();
]]></script><br />
ちなみにこれもSeleniumバージョン2.2では発生しませんでした。<br />
<br />
<br />おもくそhttp://www.blogger.com/profile/11329561840526758815noreply@blogger.com0tag:blogger.com,1999:blog-6552045820737806168.post-3812268965359326562012-05-06T23:55:00.002+09:002012-05-27T23:27:47.486+09:00僕歪黄金号〜今年も家計が火の鳥黄金の日々は皆様いかがでしたでしょうか。<br />
私としましては、以前に技術系エントリでも述べた通り、いろいろな出費により今年も家計が火の鳥がために、「ただの土日がループしている」日々を乱舞しておりました。とりあえず伊坂幸太郎作品の乱読がメインでした。あと久しぶりに山村貞子4部作(『リング』『らせん』『ループ』『バースデイ』)も読んだ。<br />
<br />
ちなみに出費の内訳は主に<br />
<ul><li>引っ越し(ついでの家具総買い替え)</li>
<li>歯列矯正</li>
</ul>です。前者で50万オーバー。後者は実際の出費はまだですが、100万近くが相場ですよね。30歳到達M字型ハゲのおっさんが歯列矯正って何今更色気づいてんだよって言われそうな気もしますが、いやもう外見とかじゃなくて単純に体の歪みの主因のような気がしてずーーーっと直したかったんですよ。でも基本給手取りはずーーーっと17万円で手が出せず、転職が成功してやっとそこそこの収入になったのでやっと手が出せるようになったと思ったら中年スタートしちゃってたんですよ!<br />
<br />
そして引っ越し。今までは手取り17万のくせに家賃9万のマンションに住んでたんですけど、やはり「高かろう、良かろう」なのか、<a href="http://bokuibi.blogspot.jp/2011/12/311.html">昨年の震災時の被害たるやすこぶる軽微でした</a>(もちろん運が良かっただけかもしれませんが)。そんな具合で他にもいろいろと満足させてくれてたマンションですが、やはり完璧なものなどこの世には存在せず、<br />
<ul><li>大通り沿い<br />
窓開けてられない。テレビや音楽はノイズキャンセリング機器必須。</li>
<li>シンクが狭い。流しが小さい。<br />
まな板とかでかめの鍋・フライパンは風呂場で体とともに洗っていた。故にふた開けたら陰毛発見すること多々あり。</li>
<li>地域の治安が悪い<br />
<a href="http://www.keishicho.metro.tokyo.jp/toukei/johomap/johomap.htm">警視庁の犯罪情報マップによれば</a>。幸い、実感するような事はなかったけど。あ、『仁義なき戦い』ってプリントされたTシャツ着てエスカレーターの右側ふさいでいるおっさんを見たことはあった。</li>
</ul>ってのが結構鬱陶しかった。こうして改めて振り返ってみると、あまり良い物件ではなかったかもね。<br />
<br />
なので、収入も増えたことだし、上記の不満を全て解決してプラスその他譲れない条件(南向き、角部屋など)を満たす物件を、許容家賃も13万円台までとかなり高めに設定してゆっくり納得いくまで探そうと動き出したのだけど・・・その矢先、すぐ隣のマンション(角部屋なのでホント目と鼻の先)の解体工事+新規マンション建築が始まることになり、さらに解体するマンションにアスベストが発見されたなんて知らせを聞かされ、心に焦りが生じてしまったのかもしれない。動き出して2週間、最初に訪問した不動産屋にて、事前にネットで調べてブクマしていた物件は悉くクローズしていることを聞かされ(しかも結構前にとの事。データベース更新しといてよ・・・)、うんざり感とアスベスト除去工事開始が近づいている焦りで、「何か違うな、気になるな」と思いつつも一応条件は満たしていたので「まあここでいいか」と妥協。家賃は3万以上アップの12万半ば。<br />
<br />
結果は・・・前述の通り条件は満たしていたのだけど、失敗。その主因は「実際住んでみないとわからん」類いのものでした。<br />
<br />
<h4>本当に鉄筋コンクリートか?</h4>前の引っ越しの時もそうだったけど、譲れない条件の一つとして『鉄筋コンクリート造り』を掲げていた。繰り返すけど<a href="http://bokuibi.blogspot.jp/2011/12/311.html">昨年の震災時の被害たるやすこぶる軽微だったので</a>(鉄コンの力かどうかはわからんけど)。というわけで当然新居も当然鉄筋コンクリート造りな訳なんですけど・・・あの、4月にものすごい風強い日が2日程あったじゃないですか。あの風で建物が揺れたんですよ。建物揺れるくらいだから、窓も当然ものすごくガタガタガタガタいって夜うるさくて堪りませんでしたよ。前の家賃9万のマンションだと、台風でも建物はもちろん窓が(睡眠妨害されるほど)ガタガタいう事なんてなかったのに・・・本命の地震においても、同一震度でも揺れは前のマンションよりも大きい気がする。<br />
<br />
そして、一番認めたくない、気のせいだと思いたいことが一つ。地震や強風などで建物が揺れる現象が発生した後、風呂場などのスライドドアがつっかえて閉まりにくくなる事が発生。毎回ではないし、しばらくすれば元に戻るのだけど、これって要するに揺れの力で建物が変形したってことじゃないのか?大学生の頃の木造ぼろアパートではそういう事多々あったけど、家賃12万の鉄筋コンクリートだぞ!?<br />
<br />
遮音性や断熱性も低い。上下階の部屋のスライドドアのスライディング音が普通に聞こえる。前のマンションでは風呂場で震えるような事はなかったが、現在は前述の木造ぼろアパート時代を思い起こさせる程で、真冬は風呂に入るのが億劫だった(まあ夏は涼しいかもしれんけど)。加えて地味に腹立ったのが、蛇口でお湯をひねって湯がでてくるまでの時間が長い。あんまりにも長いので時間計ってみたら、シャワーで40秒、洗面台に至っては1分10秒という結果!真冬に朝急いでいる時の1分10秒のタイムロスは結構イラつく。<br />
<br />
繰り返しますが、家賃12万なんですけど!<br />
<br />
<h4>本当に東京か?</h4>大都会東京で23区なのに、電車が行きも帰りも10分に1本なんて思ってもみなかった。2・3分に1本に染まりきった精神、そして僕は技術者として周りに遅れをとっていると思っている身なので、このタイムロスには地味にイラつかされる(毎日ってのが辛いね)。<br />
<br />
あとは飲食店の少なさ。これは前の地域との比較になってしまうけど、ホント少ない。すき家も松屋も富士そばも無い。オリジン弁当も若菜もない。B級ラーメン・つけ麺屋(味源レベル)も全然無い。ちょっと違うけど徒歩5分圏内のコンビニも無い。昔ながらの飲み屋ばっかり。<br />
<br />
手取り17万であった転職前は外食する余裕が無く、まっずい自作カレーをほぼ毎日4年半食してきた反動で、転職して収入が増えた途端外食しまくって幸福感とともに体重も増えて同僚の結婚式二次会で半年前に着られてたスーツが着られず大慌てした身にとっては、選択肢が全然無いこの状況は辛い。「外食ばっかりしてないで自炊しろ」という何者かのお達しかなーと前向きに捉えようとしたけど、一人暮らしの自炊って金銭的コストだけじゃなくて時間的コストも考慮するとそこまでコスパ良くない気がするのだけど。しかも外食の方が確実に美味しいし。<br />
<br />
とまあ、これらに関しては事前に調査可能な項目だから、ちゃんと調べとけよって話ですけどね。電車の待ち時間も本読むなりすればいい話だし、そのうち慣れるのだろうけど。でもまさか東京23区で、しかも田舎と呼ばれる区ではなく結構栄えている区の割と大きい駅の周りがこんなんだとは思わなかったですよ。<br />
<br />
<h4>家計どころか地域一帯が火の鳥に?</h4>くるぞくるぞと言われている首都直下地震。先月、朝日新聞デジタルで以下の記事を発見しました。<br />
<ul><li><a href="http://www.asahi.com/national/update/0418/TKY201204180476.html">朝日新聞デジタル:首都直下地震「死者9700人」 都の想定1.5倍に - 社会</a></li>
</ul>上記記事に『首都直下地震の火災被害想定』という画像が記載されていますが、僕の住んでいる地域、真っ赤です。確かに木造家屋がものすごく密集してるわ。地震に対しては『揺れ』の事しか頭になく、火災に関しては完全に見落としてた・・・<br />
<br />
他には、駐輪場使用が有料(登録料が必要)だったり、インターネット回線の実効速度が前の物件の3分の1以下だったり・・・もう踏んだり蹴ったりです。<br />
前と比べて確実に良くなったと言えることは、ゴミ捨ては時間・曜日気にせずいつでもOKって事くらい。<br />
<br />
皆様、住宅選びは慎重に!<br />
<br />
<div style="text-align:center;">*</div>噂には聞いていたけど、角川文庫版望郷編(COM版)のカット具合は半端なかった。太陽編の書き直し具合も然り。でも前述の望郷編を除けば、基本的には角川文庫版の方が好きかな。<br />
<br />
<iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bokuibi-22&o=9&p=8&l=as1&asins=4835447433&ref=qf_sp_asin_til&fc1=000000&IS2=1<1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe><iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bokuibi-22&o=9&p=8&l=as1&asins=4835447441&ref=qf_sp_asin_til&fc1=000000&IS2=1<1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe><iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bokuibi-22&o=9&p=8&l=as1&asins=483544745X&ref=qf_sp_asin_til&fc1=000000&IS2=1<1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe><iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bokuibi-22&o=9&p=8&l=as1&asins=4835447468&ref=qf_sp_asin_til&fc1=000000&IS2=1<1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe><br />
<iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bokuibi-22&o=9&p=8&l=as1&asins=4835447476&ref=qf_sp_asin_til&fc1=000000&IS2=1<1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe><iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bokuibi-22&o=9&p=8&l=as1&asins=4835447484&ref=qf_sp_asin_til&fc1=000000&IS2=1<1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe><iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bokuibi-22&o=9&p=8&l=as1&asins=4835447492&ref=qf_sp_asin_til&fc1=000000&IS2=1<1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe><iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bokuibi-22&o=9&p=8&l=as1&asins=4835447506&ref=qf_sp_asin_til&fc1=000000&IS2=1<1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe><br />
<iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bokuibi-22&o=9&p=8&l=as1&asins=4835447514&ref=qf_sp_asin_til&fc1=000000&IS2=1<1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe><iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bokuibi-22&o=9&p=8&l=as1&asins=4835447522&ref=qf_sp_asin_til&fc1=000000&IS2=1<1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe><iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bokuibi-22&o=9&p=8&l=as1&asins=4835447530&ref=qf_sp_asin_til&fc1=000000&IS2=1<1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe><iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bokuibi-22&o=9&p=8&l=as1&asins=4835447549&ref=qf_sp_asin_til&fc1=000000&IS2=1<1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe><br />
<br />
<iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bokuibi-22&o=9&p=8&l=as1&asins=4041880017&ref=qf_sp_asin_til&fc1=000000&IS2=1<1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe><iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bokuibi-22&o=9&p=8&l=as1&asins=4041880033&ref=qf_sp_asin_til&fc1=000000&IS2=1<1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe><iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bokuibi-22&o=9&p=8&l=as1&asins=4041880068&ref=qf_sp_asin_til&fc1=000000&IS2=1<1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe><iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bokuibi-22&o=9&p=8&l=as1&asins=4041880076&ref=qf_sp_asin_til&fc1=000000&IS2=1<1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe><br />おもくそhttp://www.blogger.com/profile/11329561840526758815noreply@blogger.com0tag:blogger.com,1999:blog-6552045820737806168.post-166556073202527342012-05-06T23:23:00.000+09:002012-05-06T23:24:22.966+09:00[Selenium 2]マウスホバーの実現方法いい加減にSelenium2ネタを消化してきます。<br />
今回はマウスホバーの実現方法です。ただ最初に断っておきますけど、ページの作りか何かの影響を受けているのか、ページによっては全くマウスホバーイベントが発生しない場合がありました。もし100%確実に成功させる方法をご存じの方がいましたらご教示ください!<br />
<br />
<h4>試した環境</h4><ul><li>ブラウザ:Firefox 9</li>
<li>JDK 6</li>
<li>Selenium 2.18</li>
<li>Windows 7 64bit</li>
</ul>SeleniumとFirefoxのバージョンはちょっと古めとなっていますが、多分バージョン11とかでも大丈夫だと思います。<br />
このエントリ書く当たって自宅PC環境で試してみたんですけど、現時点のSelenium最新バージョン2.21はFirefox12に対応していないようで動かず…<br />
<br />
<h4>Actionsオブジェクト使用する方法(ただし非推奨)</h4>Actions#moveToElementで実現できます。できるんですけど…<br />
<script class="brush: java" type="syntaxhighlighter"><![CDATA[
WebElement hoverTarget = driver.findElement(By.id("hoverTargetId"));
Actions builder = new Actions(driver);
builder.moveToElement(hoverTarget).perform();
]]></script><br />
これだとマウスホバーがキープされません。よって「マウスホバーで動的に表示されたメニューをクリック」したい場合、以下のコードではダメです。<br />
<script class="brush: java" type="syntaxhighlighter"><![CDATA[
WebElement hoverTarget = driver.findElement(By.id("hoverTargetId"));
// マウスホバーで動的に表示される要素
WebElement clickTarget = driver.findElement(By.id("clickTargetId"));
Actions builder = new Actions(driver);
// マウスホバーして要素動的表示。しかし一瞬で消える。
builder.moveToElement(hoverTarget).perform();
//消えちゃってるからダメ~
clickTarget.click();
]]></script><br />
正しくは以下のコードです。ホバーとクリックを間髪入れずに連続実行しています。<br />
<script class="brush: java" type="syntaxhighlighter"><![CDATA[
builder.moveToElement(hoverTarget).click(clickTarget)
.build().perform();
]]></script><br />
「正しくは」といったものの、上記はただ連続実行しているだけで結局ホバーキープはできていないので、厳密には正解ではありません。実際、ホバー後のクリックが間に合わずにエラーとなってしまったケースが多々ありました。<br />
<h5>補足</h5>もしかしたらActions#clickAndHold()使えばいいかもしれん(厳密にはマウスホバーではないけど)。けど前述の通り自宅環境だとSeleniumが動かないので試せない。<br />
<br />
<h4>ホバーキープしたい場合はDefaultSeleniumかますのが確実</h4>以下の方法だとホバーキープされました。<br />
<script class="brush: java" type="syntaxhighlighter"><![CDATA[
DefaultSelenium selenium = new DefaultSelenium(new WebDriverCommandProcessor("http://...", driver));
selenium.mouseOver("id=hoverTargetId");
selenium.click("id=clickTargetId");
]]></script><br />
ただし、冒頭でも述べましたが、これだとそもそもマウスホバーイベントが全く発生しないケースが少ないですがありました。<br />
あと、z-indexが正しく解釈されないのか、動的表示したメニューをクリックしたとき、メニューではなくその奥にある要素がクリックされてしまうということも。<br />
<br />
何かSelenium WebDriverってまだまだバグが多いな…何か忘れたけどびっくりするようなデグレが発生してた事もあったような。<br />
<br />
<h4>参考</h4><ul><li><a href="http://stackoverflow.com/questions/6232390/is-there-a-proved-mouseover-workaround-for-firefoxdriver-in-selenium2">webdriver - Is there a proved mouseOver workaround for FirefoxDriver in Selenium2? - Stack Overflow</a></li>
<li><a href="http://code.google.com/p/selenium/issues/detail?id=2429">Issue 2429 - selenium - Cannot perform native interaction in Firefox driver using Python - Browser automation framework - Google Project Hosting</a><br />
「Firefox9の場合はSelenium2.18じゃないと動きませんよ」って情報でお世話になった</li>
</ul>おもくそhttp://www.blogger.com/profile/11329561840526758815noreply@blogger.com0tag:blogger.com,1999:blog-6552045820737806168.post-61634529360194237372012-05-05T22:18:00.000+09:002012-10-27T22:17:35.470+09:00[MySQL]レプリケーション環境構築手順 for メモリかつかつ人 vol2~本題のレプリケーション設定黄金の日々を皆様いかがお過ごしでしょうか。<br />
私としましては、いろいろと出費が嵩むことがありまして、2年連続で<a href="http://bokuibi.blogspot.jp/2011/05/blog-post_08.html">家計は火の鳥</a>となっておりますが故、「ちょっと長めないつもの週末」を謳歌しております。ていうか結婚した輩ってホント付き合ってくれなくなりますね!<br />
<br />
さて、<a href="http://bokuibi.blogspot.jp/2012/04/mysql-for.html">「レプリケーション環境構築手順」とかほざいておきながら、レプリケーションのレの字も無かった前回</a>の続きです。Google Analyticsで検索ワード確認してみたら「MySQL レプリケーション」といったワードが幾つか見つかり、非常に心苦しい限りです詐欺師です…<br />
<br />
というわけで今回のテーマは「脱・詐欺師」、要するに「タイトルに即した内容を書く」です。<br />
ちなみに人から時々「話が長い」と言われます。<br />
<br />
<h4>試した環境<br />
</h4><ul><li>CentOS 5.6(64bit), 6.2</li>
<li>MySQL 5.1.61</li>
</ul><br />
<h4>マスター</h4><h5>my.cnf設定</h5>最低限、サーバーIDとバイナリログ名を設定。サーバーIDは他のサーバーとかぶらない値に。<br />
<pre class="source">[mysqld]
server-id=1
log-bin=mysql-bin
# dataディレクトリ以外に作成したけりゃ以下のように絶対パスで指定
# log-bin=/var/lib/binlog/mysql-bin
</pre>設定したら再起動。<br />
<h5>レプリケーション専用ユーザー作成</h5><script class="brush: sql" type="syntaxhighlighter"><![CDATA[
GRANT REPLICATION SLAVE ON *.* TO repl@'localhost'
IDENTIFIED BY 'asyoulike';
]]></script><br />
<h5>マスターデータのスナップショットを作成</h5>レプリケーションを開始するに当たって、当然マスタとスレーブのデータを同一にしておく必要がある。<br />
<br />
まず、設定作業中にマスターデータが更新されてしまわないよう、書き込みロックをかける。<br />
<pre class="source">mysql> FLUSH TABLES WITH READ LOCK;
</pre><br />
そしてマスターデータのスナップショットを作成。データフォルダをアーカイブしてしまえ。<br />
<pre class="source"># cd /var/lib/mysql/
# tar cpf /tmp/master_snapshot.tar .
</pre><h5>バイナリログのPositionをメモ</h5>「スレーブが起動した際、バイナリログの読み込み開始位置」を表す。<br />
<pre class="source">mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 106 | | |
+------------------+----------+--------------+------------------+
</pre><h5>書き込みロック解除</h5>バイナリログのPositionさえメモしてしまえば、スレーブの設定完了前にいくら更新かかろうが恐くない。<pre class="source">mysql> UNLOCK TABLES;
</pre><br />
<h4>スレーブ</h4><h5>マスターデータを展開</h5>展開前にスレーブ停止するのをお忘れ無く。<br />
もしマスターでバイナリログなどをデータフォルダ配下に出力していた場合は、スレーブ側では当然不要なので削除しちゃってください。<br />
<pre class="source"># /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
</pre><h5>my.cnf設定</h5>最低限サーバーIDを設定。<br />
<pre class="source">[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
</pre><h5>マスター情報セット</h5>ここでの肝は「MASTER_LOG_FILE」と「MASTER_LOG_POS」です。メモした値を設定してください。<br />
<pre class="source">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;
</pre><h5>起動!</h5><pre class="source">mysql> START SLAVE;
</pre><h5>動作確認</h5>「Slave_IO_Running」「Slave_SQL_Running」が「Yes」で、「Last_IO_Error」が空ならOKです。<br />
<pre class="source">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
…
</pre><br />
それでは良きレプリケーションライフを!<br />
<br />
<h4>参考</h4><ul><li><a href="http://dev.mysql.com/doc/refman/5.1/ja/replication.html">公式マニュアル</a></li>
<li><a href="http://arena.hyogo-dai.ac.jp/~kawano/?Install%20Log%2FCentOS5%2FMySQL_repl">MySQLでのレプリケーションの設定 - KAWANO's PukiWiki</a></li>
</ul>おもくそhttp://www.blogger.com/profile/11329561840526758815noreply@blogger.com0tag:blogger.com,1999:blog-6552045820737806168.post-27466297982605181952012-04-08T23:09:00.000+09:002012-10-27T22:20:26.595+09:00[MySQL]レプリケーション環境構築手順 for メモリかつかつ人 vol1~1サーバーにMySQL2つインストール簡単お手軽なMySQLレプリケーション。一昔前だと、環境作って動作確認するのにハードウェアが最低2台は必要だったのでしょうが、現代はというと…いや~仮想マシンって本当にいいもんですね。ハード1台でも、独立したサーバー環境を複数作成できちゃいます。<br />
<br />
ただ、仮想マシンは当然それなりにメモリを食います。そして、いくらメモリ激安な現代と言えど、かつかつな環境で日夜スワッピングと戦いながら仕事をしているプログラマはきっと存在する筈。ちなみに僕も前の会社では<a href="https://twitter.com/#!/omokuso/status/66866154123177986">こんな感じ</a>で、転職してから<a href="https://twitter.com/#!/omokuso/status/66865122873835520">こんなん</a>だったのが、現在は何と12Gというデラインコグニタですよ。<br />
<br />
というわけで、そんな戦うプログラマの方々のために、1つのサーバー環境でレプリケーション環境を構築する手順を捧げます。つっても、+αの作業は、1台のサーバーにMySQLを複数インストールってことだけですけど。仮想環境を複数起動する余裕があり、レプリケーション環境構築手順だけ知りたい方は、このエントリ読み飛ばして<a href="http://bokuibi.blogspot.jp/2012/05/mysql-for-vol2.html">こちらを参照ください</a>。<br />
尚、実運用においてはマスターとスレーブを別々の箱に置くべきであることは言うまでもありません。<br />
<br />
<h4>試した環境<br />
</h4><ul><li>CentOS 5.6(64bit), 6.2</li>
<li>MySQL 5.1.61</li>
</ul><br />
<h4>1.MySQLインストール(マスター用)<br />
</h4>yumでさくっと入れちゃいましょう。2行目移行のセキュア設定と自動起動設定はお好みで。<br />
<pre class="source"># yum -y install mysql-server
# /etc/init.d/mysqld start
# mysql_secure_installation
# /sbin/chkconfig mysqld on
</pre><br />
<h4>2.MySQLインストール(スレーブ用)<br />
</h4>こっちはソースからインストールします。<br />
<h5>事前準備<br />
</h5>コンパイラをインストール。バージョン5.1移行の場合は、2行目も必要。makeが入ってない場合はインストールしてください。<br />
<pre class="source"># yum install gcc gcc-c++
# yum install ncurses-devel
# yum install make
</pre><h5>ソースダウンロード</h5>以下のページから入手できるので、wgetかブラウザでダウンロード。<br />
<ul><li><a href="http://dev.mysql.com/downloads/mysql/5.1.html">最新リビジョン ※ユーザー登録が必要</a></li>
<li><a href="http://downloads.mysql.com/archives.php">過去のリビジョン</a></li>
</ul><a href="http://dev.mysql.com/downloads/mysql/5.1.html#downloads"></a><br />
<pre class="source"># wget http://downloads.mysql.com/archives/mysql-5.1/mysql-5.1.61.tar.gz
</pre><h5>コンパイル&インストール</h5>以下の例では「/usr/local/mysql」にインストールします。<br />
ポート番号はマスターや既存サービスと被らないものを指定するように。<br />
あとInnoDB有効とするconfigureオプションは、バージョン5.1では<br />
「--with-plugins=innobase」<br />
です(「--with-innodb」ではない。「./configure --help」で調べてみ。)。<br />
<pre class="source">$ 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/
</pre><h5>DB初期化</h5><pre class="source"># {ソースディレクトリ}/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/var --user=mysql
</pre><h5>my.cnf作成</h5>一例。配置場所はbasedirかdatadirに。まあbasedirが一般的だろうか。<br />
<pre class="source"># 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
</pre><h5>起動スクリプトコピー</h5>インストールディレクトリ配下にある「mysql.server」をリネームコピーし、ルートディレクトリのパスなどを追記。<br />
<pre class="source"># 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
</pre><h5>起動確認と自動起動設定</h5><pre class="source"># /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
</pre><br />
<h4>記事ボリュームが結構でかくなったので</h4>肝心のレプリケーション設定は<a href="http://bokuibi.blogspot.jp/2012/05/mysql-for-vol2.html">次回</a>に持ち越します。<br />
録画しといたIPPONグランプリも早く観たいし。おもくそhttp://www.blogger.com/profile/11329561840526758815noreply@blogger.com0tag:blogger.com,1999:blog-6552045820737806168.post-33637698928984721712012-03-07T23:18:00.000+09:002012-03-09T01:21:53.523+09:00PHP4環境構築とPEAR強制アップグレードメモPHP4…CakePHPがバージョン2になってついにサポート対象から外れたこんな時代に需要なんて殆ど無いだろうけど、まあ仮想マシンなら物理的な場所とらないってことで一応環境作って残しときましょう…ってことで実際需要が発生したので、まあブログなら物理的な場(以下同文)<br />
<br />
願わくば、我のみならず俗世においても当エントリを必要とする状況があまり発生せんことを。停滞は後退だ。2010年にもなって新規案件でVBScriptてIE6てJava1.4て…(はいわざわざ過去をほじくり返してイラついている大馬鹿者です)<br />
<br />
<h4>試した環境<br />
</h4><ul><li>CentOS 5.6(64bit)</li>
<li>Apache 2.2</li>
<li>PHP 4.3.11</li>
</ul>ちなみに、PHP4.2以前はApache2系と相性悪いらしく、実際僕もインストールできませんでした。<br />
<br />
<h4>事前準備<br />
</h4><h5>Apacheインストール</h5>apxsってのも必要なのでhttpd-develも一緒に。<br />
<blockquote># yum -y install httpd httpd-devel<br />
</blockquote><h5>Flexとlibxml2インストール</h5><blockquote># yum -y install flex libxml2-devel<br />
</blockquote><br />
<h4>PHPインストール</h4>yumでのインストールはできないので、ソースからインストールせざるをえない。<br />
<h5>ダウンロード、コンパイル、インストール</h5>旧バージョンも含めたPHPのソース置き場は以下。<br />
<ul><li><a href="http://www.php.net/releases/">PHP: Releases</a></li>
</ul>configureオプションはとりあえず必要最低限の設定。<br />
<blockquote>$ wget http://museum.php.net/php4/php-4.3.11.tar.gz<br />
$ tar zxvf php-4.3.11.tar.gz<br />
$ cd php-4.3.11<br />
$ ./configure --enable-mbstring --with-apxs2=/usr/sbin/apxs<br />
$ make<br />
# make install<br />
</blockquote><h5>php.ini作成</h5>解凍したソース一式の中にある「php.ini-dist」という雛形があるので、それをコピー。<br />
<blockquote># cp php.ini-dist /etc/php.ini<br />
</blockquote><h5>Apache設定</h5>httpd.confに以下の設定を追加。その後再起動。<br />
<blockquote>AddType application/x-httpd-php .php<br />
</blockquote>最低限の設定は完了。あとはおなじみのphpinfo()で動作確認。<br />
動かなかったら、ファイアウォールやSELinuxの設定を確認してみろ、と自分に向けて書いておく。<br />
<br />
<h4>HTTP_Requestインストールから学ぶ、PEARパッケージ強制アップグレード</h4>作成したPHP4環境では、HTTP_Requestも必要だったのだけど、これも一筋縄ではいかなかったのでメモする次第。<br />
<h5>普通にインストールできるかと思いきや…</h5><blockquote># pear install HTTP_Request -a<br />
HTTP error, got response: HTTP/1.1 410 Gone <br />
Didn't receive 200 OK from remote server. (HTTP/1.1 410 Gone) <br />
</blockquote>何か「そんな古いパッケージはもう置いてねえよ」とでも言ってるようなエラーメッセージだ。<br />
以下によると、PEARのバージョンが古いからだろうとのこと。<br />
<ul><li><a href="http://d.hatena.ne.jp/hkano/20080710/1215668569">「pear install」で「HTTP/1.1 410 Gone」となる件 - システムエンジニア奮闘記 ~ダメダメSEの備忘録~</a></li>
</ul>確かに<a href="http://pear.php.net/package/HTTP_Request">パッケージのドキュメント</a>に「PEAR Installer 1.4.3」って書いてあるわ。PHP 4.3.11を当エントリの手順でインストールした場合、PEARのバージョンは1.3.5だった。<br />
<br />
ということで、上記記事を参考に、PEARを強制アップグレード…の前にまず「Archive_Tar」を強制アップグレード。これやっとかないと、PEAR強制アップグレード自体で同様の「410 Gone」エラーが発生する。<br />
<blockquote># pear upgrade --force http://pear.php.net/get/Archive_Tar-1.3.1.tar <br />
# pear upgrade --force http://pear.php.net/get/PEAR-1.4.3.tar<br />
# pear install HTTP_Request -a<br />
</blockquote><br />
終わり。自分で書いときながらだけど、このエントリ読み返したくねぇ(読み返すような状況に遭遇したくねぇってことです)。おもくそhttp://www.blogger.com/profile/11329561840526758815noreply@blogger.com0tag:blogger.com,1999:blog-6552045820737806168.post-87364070504488903812012-02-05T19:12:00.001+09:002013-10-04T11:36:23.050+09:00VirtualBox ディスク容量変更方法「これだけあれば事足りるだろう」との決定を下した後、「こんな筈じゃなかった!」とハードディスクの容量が足りなくなる事は人の世の常。今回はVirtualBoxのディスク容量を変更する方法をご紹介します。やらなきゃいけない事は<br />
<ol><li>仮想ディスクの容量変更</li>
<li>パーティションサイズの変更</li>
</ol>です。<br />
<br />
<h4>試した環境</h4><ul><li>VirtualBox 4.1.8</li>
<li>ゲストOS:CentOS 6.2</li>
<li>ホストOS:Windows 7, Vista</li>
</ul><br />
<h4>仮想ディスクの容量変更</h4><h5>容量増やしたい場合</h5>作業前に念のためバックアップ(クローン)を作成しておくことを推奨します。<br />
コマンドプロンプトを起動し、VirtualBoxのインストールフォルダに移動し、以下のコマンドを実行。<br />
<pre class="source">C:\Program Files\Oracle\VirtualBox>VBoxManage.exe modifyhd VDIファイルパス --resize 希望サイズ(MB)
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
</pre><h5>容量減らしたい場合(需要あるのか?)</h5><p style="color: red;"><strong>注:これまでもそしてこれからも未検証</strong></p>仮想ディスクのサイズ変更だけなら、以下の方法でいけるかもしれませんが…<br />
<ol><li>希望のサイズの空仮想ディスクを新規作成</li>
<li>既存の仮想ディスクの内容を空仮想ディスクにコピー</li>
</ol>ただし後述の通りパーティションサイズはそのままなので、この場合起動できるかどうか分からん。<br />
<br />
仮想ディスクのコピーは以下コマンドを実行。<br />
ああでもコピー先の方が容量少ないとこの段階でエラー発生しそうだな。<br />
<pre class="source">C:\Program Files\Oracle\VirtualBox>VBoxManage.exe clonevdi コピー元VDIファイル コピー先VDIファイル --existing
</pre>※参考<br />
<ul><li><a href="http://virtual-soft1.nnn2.com/?p=12">仮想化OSファイルのコピーの仕方 << VirtualBoxの使い方</a></li>
</ul><br />
<h4>パーティションサイズの変更</h4>仮想ディスクの容量変更しても、残念ながらパーティションサイズは元のままですので、ここも変更する必要があります。普通にCentOSをインストールした場合、ルートディレクトリはLVMパーティションとして作成されるので、ここではLVMパーティションのサイズ変更手順を解説します。<br />
尚、LVMパーティションかどうかを確認するには以下コマンド。<br />
<pre class="source"># fdisk -l
/dev/sda1 …
/dev/sda2 … Linux LVM
</pre><br />
そもそもLVMって何なのかってのは割愛。<br />
ちなみに僕がとった流れは以下の通り。多分もっとスマートなやり方があると思うけど…<br />
<ol><li>未割り当て領域に新規パーティション作成</li>
<li>LVMパーティションに1.で割り当てたパーティションがっちゃんこしてサイズ拡大</li>
</ol><h5>未割り当て領域に新規パーティション作成</h5>僕はGparted使いました。以下ページからISOファイルをダウンロード。<br />
<ul><li><a href="http://gparted.sourceforge.net/download.php">Gparted -- Download</a></li>
</ul>ダウンロードしたISOファイルをIDEコントローラにマウントした状態(「設定」→「ストレージ」で「IDEコントローラ」にISOファイルを割り当て)で仮想マシン起動。<br />
<br />
その後は以下の流れを辿って、GpartedをGUIモードで起動。<br />
<ul><li>Gparted Live (Default settings)</li>
<li>言語:「Japan」</li>
<li>モード:GUI(「0」)</li>
</ul>未割り当て領域を右クリック→「New」で表示されるダイアログにて新規パーティションを作成。以下のような感じで。<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdEepvXUAhu63q1Llxxt5UcCIbTiMVOPAetykLHoN1R1wOjSDzjtvfFSNGeAZfqyj9xUGKZ9-P6JjjZ3NZNEgd_VY0i-l055DUFsWlOgSNC9V0qHLzGwKBkFAkbC1Idcc4ZYaMfDa7bDE/s1600/gparted_new_partition.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"><img border="0" height="297" width="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdEepvXUAhu63q1Llxxt5UcCIbTiMVOPAetykLHoN1R1wOjSDzjtvfFSNGeAZfqyj9xUGKZ9-P6JjjZ3NZNEgd_VY0i-l055DUFsWlOgSNC9V0qHLzGwKBkFAkbC1Idcc4ZYaMfDa7bDE/s400/gparted_new_partition.jpg" /></a></div><br />
その後は<br />
<ul><li>ツールバーの「Apply」をクリックし、変更を適用。</li>
<li>左上の「Exit」アイコンをダブルクリックし、一旦シャットダウン。</li>
<li>シャットダウンしたらGpartedのISOファイルの割り当て解除し、仮想マシンを再度起動。</li>
</ul>起動したら以下コマンドで新規パーティションの作成確認。<br />
<pre class="source"># fdisk -l
/dev/sda1 …
/dev/sda2 … Linux LVM
/dev/sda3 … Linux
</pre><h5>LVMパーティションに新規作成したパーティションがっちゃんこしてサイズ拡大</h5>まずは新規パーティションをPVとして作成。<br />
<pre class="source"># pvcreate /dev/sda3
…
Physical volume "/dev/sda3" successfully created
# pvdisplay ←PVの情報を表示
</pre><br />
次に新規PVをVGへ登録。vgdisplayでVGの名前を確認し、vgextendでその名前を指定する。vgextendが成功したら、vgdisplayでVGサイズを確認してみてください。増えてればOKです。<br />
またこの時、「Free PE / Size」の右側をメモしておいてください。<br />
<pre class="source"># 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
</pre><br />
最後に、LVのサイズを拡大。<br />
「lvextend -L [拡大サイズ] [LV名]」と打ち込みます。サイズには前述の「Free PE / Size」の右側の数字の値を、LV名はlvdisplayで表示される「LV Name」を指定。<br />
<pre class="source"># lvextend -L +2G /dev/vg_virtualbox/lv_root
Logical volume lv_root successfully resized
# resize2fs /dev/vg_virtualbox/lv_root
</pre><br />
すべてが完了したら、lvdisplayやdfでサイズを確認してみてください。<br />
<br />
※参考<br />
<ul><li><a href="http://centossrv.com/lvm-hdd-add.shtml">ハードディスク追加 - CentOSで自宅サーバー構築</a></li>
</ul>おもくそhttp://www.blogger.com/profile/11329561840526758815noreply@blogger.com2tag:blogger.com,1999:blog-6552045820737806168.post-60095687193082017752012-01-30T00:46:00.000+09:002012-01-30T00:52:04.618+09:00機動戦士ノーナインガンダム<h4>ABCマント ≒ アイスバーン</h4><blockquote>ビーム・ソーは、ABCマントを切り裂く力を持っている。<br />
高速で振り回されるビーム・ソーも、光速に近い速さで通り過ぎるビーム・ライフルのそれに比べれば、遥かに低速でマントの上を通り過ぎる。<br />
蒸発によってエネルギーを打ち消すマントにとっては、こうした長い間「同じ場所に居座り続ける」武器の方が苦手だということなのだ。<br />
~機動戦士クロスボーン・ガンダム クァバーゼのメカニック解説より<br />
</blockquote><br />
雪に覆われた今週の大東京、雪道とは名ばかりの氷道いわゆるアイスバーンを闊歩する俺。最寄り駅までのルート前半、滑らぬようゆっくり歩いた結果、大幅にタイムロスした俺は、こんな日まで律儀に始業時間厳守する必要あるのかという葛藤を抱えつつ、危険を覚悟で途中から小走りに切り替えた。<br />
その時、俺は発見した。<br />
<br />
「アイスバーンはゆっくり歩くよりも小走りの方が滑りにくい」<br />
<br />
という真実を。<br />
その時ふと思い出したのが、冒頭のクロスボーン・ガンダムからの引用。ゆっくり歩くということは、それだけ氷との接触時間が増えるということだから、却って滑りやすくなるんですかね。そういえば、熱湯などの熱いものなんかも一瞬ちょん!って触れる分には大丈夫だもんね。いやはやこの世の事象は奥が深い(大袈裟)。<br />
<br />
<h4>カレーうどん < 富野由悠季+菅野よう子<br />
and<br />
リング・オブ・ガンダム ≒ ガイア・ギア?</h4>「カレーは美味い。うどんも美味い。じゃあカレーうどんは2倍美味いのかというと、そんなことはない」<br />
ってな事を松本人志が言ってた様な気がするが、僕にとっての富野由悠季・菅野よう子のコラボは2倍美味いなんてものじゃない。その両名による作品として『ブレンパワード』『∀ガンダム』に続く第3作である『<a href="http://ja.wikipedia.org/wiki/%E3%83%AA%E3%83%B3%E3%82%B0%E3%83%BB%E3%82%AA%E3%83%96%E3%83%BB%E3%82%AC%E3%83%B3%E3%83%80%E3%83%A0">リング・オブ・ガンダム</a>』って…結局製作されるの!?されないの!?<br />
<br />
一年戦争の遙か未来とか、「アムロの記憶」とかいうワードが散りばめられてたような気がしたけど、それを聞くと駄作「ガイア・ギア」を思い出す(こっちは「シャアの記憶」を受け継ぐ者の話だけど)。<br />
<br />
ようやくアムロにもスポットが。世の中的にはシャアばっかりが人気だもんね。ていうかこちら側の世界だけでなく劇中でも、アムロの近くにいたハサウェイは『閃光のハサウェイ』で「シャアに共感」しちゃってるし。 アムロの理想主義的な考え方、結構好きなんだけどなーまあ確かに実現可能性は低いだろうけど… <br />
…なんて楽しみにしていたのはもう既に2年半前。富野監督は既に古希を迎えている。こんな事言いたかないけど、流石にこのお年だと新作は…<br />
<br />
<h4>アニメ版 < 小説版 < 脳内編集版</h4>社会人になってから富野アニメを殆ど鑑賞しなくなり、小説版メインで楽しむようになった。アニメ版を見なくなった理由は、自由時間が学生の頃と比べて大幅に減少したのに伴い、余計な戦闘シーンや横道エピソードなどの「冗長部分」が鬱陶しくなってきたからだ。今でこそアニメはエンターテイメント界で確固たる地位を築いてはいるけど、80年代ではメインの顧客はお子様。スポンサーの意向で、プラモデルを売るために戦闘シーン多めにしたり、そもそもストーリーを子供向けに(つまりソフトに)改変せざるを得なかった時代(まあビジネスだからしょうがない)。『逆襲のシャア』のストーリー改変なんかは、角川文庫版の後書きで富野氏本人が語っているので有名ですね。ちなみにそこでは改変を「納得した」的な事を言っていたけど、果たして本心だったのだろうか。<br />
<br />
小説版は『顧客のニーズ』なんて無視してやりたい放題な感じで面白い。『Z』ではシャアのダカール演説がフル収録されてたり、カミーユのマザコン・基地外加減がひどいもんだったり。全体的に、アニメでは全く窺えないエログロ描写が割と多く、ドロドロしている。特にバイストン・ウェルものなんか、中世ヨーロッパ的な世界観ということもあり、『ベルセルク』さながらにバイオレンス&セックスが溢れている。下の毛が生えた今となっては、そういうよりドロドロしたものの方がやっぱ面白く感じるです。そして、アニメ版・小説版からそれぞれいいとこ取りして織り交ぜ…といった感じで脳内編集したものを妄想するようになって幾星霜。やっぱり脳内編集版が一番面白い(自分の好みに作り上げるから当たり前だろうが)。<br />
<br />
<div align="center">*</div><br />
クロボン、目がでけぇよ…(by 富野監督)<br />
<iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bokuibi-22&o=9&p=8&l=as1&asins=4047156450&ref=qf_sp_asin_til&fc1=000000&IS2=1<1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe><iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bokuibi-22&o=9&p=8&l=as1&asins=4047156469&ref=qf_sp_asin_til&fc1=000000&IS2=1<1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe><iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bokuibi-22&o=9&p=8&l=as1&asins=4047156868&ref=qf_sp_asin_til&fc1=000000&IS2=1<1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe><iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bokuibi-22&o=9&p=8&l=as1&asins=4047156876&ref=qf_sp_asin_til&fc1=000000&IS2=1<1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe><iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bokuibi-22&o=9&p=8&l=as1&asins=404715718X&ref=qf_sp_asin_til&fc1=000000&IS2=1<1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe><iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bokuibi-22&o=9&p=8&l=as1&asins=4047157198&ref=qf_sp_asin_til&fc1=000000&IS2=1<1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe><br />
<br />
リーンの翼、高ぇよ…<br />
<iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bokuibi-22&o=9&p=8&l=as1&asins=4048740091&ref=qf_sp_asin_til&fc1=000000&IS2=1<1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe><iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bokuibi-22&o=9&p=8&l=as1&asins=4048740156&ref=qf_sp_asin_til&fc1=000000&IS2=1<1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe><iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bokuibi-22&o=9&p=8&l=as1&asins=4048740164&ref=qf_sp_asin_til&fc1=000000&IS2=1<1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe><iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bokuibi-22&o=9&p=8&l=as1&asins=4048740172&ref=qf_sp_asin_til&fc1=000000&IS2=1<1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe><br />おもくそhttp://www.blogger.com/profile/11329561840526758815noreply@blogger.com0tag:blogger.com,1999:blog-6552045820737806168.post-17179649451192460082011-12-31T21:40:00.000+09:002011-12-31T21:50:38.580+09:00僕歪年末号~おもくその3.11 資本原理主義者たち<h4>熱々カップルと頑固親父CO2</h4>僕が「異常気象」という言葉を実感するようになったのは、米不足と水不足が連続した年があった90年代。それ以前か以後かは正確には分からないけど、その頃には「省エネ」とか「クーラーの設定温度は28℃を目安に!」って言葉は普通に耳にしており、おもくそ家では実践していた。だけど、「設定温度28℃」って少数派なんですよねー。友達が遊びに来ると「おもくそん家は暑い!」という意見がしばしば(そして冬は「寒い!」)。逆に、僕が遊びに行った時は「お前んち寒い!」っていうのだけど(そして冬は「暑い!」)。飲食店やデパートなんかに行っても、大抵のお店で「寒い!」と感じるのだけど、周りは大抵平気みたいだし。そうか、28℃のおもくそ家の方が異常気象なのか…なんてしみじみ思いながら生きてきた。そんな僕にとって、否が応にも皆節電せざるをえないこの夏は、非常に過ごしやすいものであったし、暑さで周りが体調崩しまくっているのを見ては優越感に浸っていた(はい小さい人間です)。<br />
<br />
今までずっと節電してきたので、別に特に生活変える必要無かったのだけど、何もしないのも癪だし、それならさらに引き離してやる、さらなる高みを…ということで、エアコンゼロ稼働に挑戦。結果は…ゼロは流石に無理だったけど、盆に3日程使用しただけで済んだ。しかもこの夏体調崩す事は一度も無く。いやー人間の適応力って凄いね。しかし盆を過ぎたら一気に涼しくなったから、あれさえ乗り切ればゼロ達成できたかもと思うと悔しい。<br />
<br />
ところで、「節電はピーク時間帯だけ行えばよく、深夜の節電は必要無い」という意見がありました。意見というか、まあ学術的に事実なんですけど(使用量が供給量を超えなければよく、夜は使用量の多い工場やオフィスが稼働停止するので)。たださあ、ピーク時間帯だろうが深夜だろうが、電気を消費すればその分熱が確実に発生するわけですよ。で、発生した熱は「<a href="http://ja.wikipedia.org/wiki/%E3%82%A8%E3%83%8D%E3%83%AB%E3%82%AE%E3%83%BC%E4%BF%9D%E5%AD%98%E3%81%AE%E6%B3%95%E5%89%87">熱力学第一法則</a>」とか何だかで自然消滅することはないので、どっかに放散してくれない限りはキャリーオーバーされるわけですよ。で、都市化する以前は、緑やら土やらが吸収してくれたり大気圏外に逃げたりできたのに、現在はご存じの通りアスファルトで蓋しちゃったし、熱夫と熱美の大気圏外への逃避行はCO2という名の頑固親父によって阻まれ…というわけで、現在においては<br />
<br />
電気使う=温度上昇<br />
<br />
って式が成り立つと思うのですよ(電気使う→熱発生→でも熱の逃げ場が無い→温度上昇)。ヒートアイランドの原因の一つでもありますね。そして、温度が上がれば当然クーラーの稼働も上がり…と、いわゆる悪循環です。<br />
<br />
よって、ピーク時間帯かどうかなんて関係無く、常々節電すべきだ!とおもくそは思ったとさ。<br />
※専門家じゃないので完全なる憶測です。実際正しいかどうかは分かりません。でも全然間違ってるってことはないと思うのだけど…<br />
<br />
そんな中、深夜どころか、昼間でも全く節電しないという人がいました。その人の言い分は、<br />
「節電して暑いの我慢して体調崩すと、仕事を休む→マクロな視点で経済効果が下がる。そっちの方が問題。<br />
だから我慢(節電)はすべきでない。」<br />
というもの。<br />
うーん、我慢の程度にもよるけど…大抵の人の場合、そもそも今は使いすぎな状態だと思うんですよ。28℃で十分適応できるところを(これには個人差ないと思います)、必要以上に温度下げて使いまくってる甘ったれ状態だと思うんですよ。だから、節電つっても「過剰」を「普通」にするだけなんですよ。その程度の努力すらしない・できないってのは、怠惰・我が儘としか言いようがない。下がっても給料・待遇十分なのに、人件費削減に文句言いまくってる公務員ユニオンとか某電力会社と同じ!<br />
「あーレイプしたい。もちろんレイプはいけないことだ。でも我慢してたらストレスで体調崩す。そうなったら会社の売上が減り、ひいては日本の経済が…だから我慢はよくない。よし、レイプしに行くぞ!」ってのと同じ理屈!そんなのダメ!<br />
<br />
ていうか、いつの頃からか「環境とかなんかよりもとにかく経済(金)優先だ!」って人が増えてきてますね。資本原理主義って奴?<br />
<h5>余談</h5>この節電を機に、全般的なエコ意識が高まって、エコバッグ持参率上がるかなーと、スーパーとか行くたびに漠然と眺めてみたけれど、そないやなー…そこまでの考えは及ばないのか…<br />
<br />
<h4>燃えてるのは鳥じゃない。ファンの怒りの炎だ。</h4>前述の節電のやり取りがあってから数週間後、<a href="http://bokuibi.blogspot.com/2011/05/blog-post_08.html">以前に述べた『火の鳥 オリジナル版復刻大全集』</a>の代金のカード引き落としが行われた。繰り返すが、その額98700円(1冊約8000円)。よくよく考えたら、地デジ化で買わざるをえなかったブルーレイレコーダーよりも高い。<br />
<br />
火の鳥と言えば、単行本化の際にエピソードや台詞がまるっと改変・削除された事で有名なので、ファンはオリジナル版の復刻を長い間待ち焦がれていた。そしてついに復刻が決定し、喜び勇んで情報見てみると、この価格…ある人は手が出せないと諦め、殆どの人は二の足を踏み、そして恐らく全員が憤ったと思う。商魂丸出し。ビジネスの基本は「顧客のニーズを満たす」って、ドラッカーあたりも言ってなかったか?どう考えてもファンのニーズを無視してるだろ。復刊にあたって多大な労力・コストをかけただろうから、その辺の単行本と同じ価格帯でとまでは言うつもりは毛頭ないですけどね、誰もハードカバーとかオールカラーとかは望んでいない。ただ物語を読みたいだけだ。貴重な品だから、コレクター向けバージョンとしてハードカバー版はあってもいいだろうけど、廉価版も出した上でファンが好きな方を選べるようにするべきでしょう。<br />
<br />
代替品が存在するような商品であれば、「ここの会社の高いから別の会社のにしよ」とか「ここの店、感じ悪いから、別の店で食べよ」というように、余所に移ればよく、それにより見限られた方は淘汰されていくのだけど、この火の鳥に関しては独占販売。他に移りようが無い。どっかの電力会社と同じだ。ここでも、顧客のニーズとか文化の供給とかよりも金儲け優先の「資本原理主義」を感じざるをえなかった。手塚先生はどう思われているのだろう…<br />
<br />
<div style="text-align:center;">*</div><br />
<iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bokuibi-22&o=9&p=8&l=as1&asins=4835447433&ref=qf_sp_asin_til&fc1=000000&IS2=1<1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe><iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bokuibi-22&o=9&p=8&l=as1&asins=4835447441&ref=qf_sp_asin_til&fc1=000000&IS2=1<1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe><iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bokuibi-22&o=9&p=8&l=as1&asins=483544745X&ref=qf_sp_asin_til&fc1=000000&IS2=1<1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe><iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bokuibi-22&o=9&p=8&l=as1&asins=4835447468&ref=qf_sp_asin_til&fc1=000000&IS2=1<1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe><br />
<iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bokuibi-22&o=9&p=8&l=as1&asins=4835447476&ref=qf_sp_asin_til&fc1=000000&IS2=1<1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe><iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bokuibi-22&o=9&p=8&l=as1&asins=4835447484&ref=qf_sp_asin_til&fc1=000000&IS2=1<1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe><iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bokuibi-22&o=9&p=8&l=as1&asins=4835447492&ref=qf_sp_asin_til&fc1=000000&IS2=1<1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe><iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bokuibi-22&o=9&p=8&l=as1&asins=4835447506&ref=qf_sp_asin_til&fc1=000000&IS2=1<1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe><br />
<iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bokuibi-22&o=9&p=8&l=as1&asins=4835447514&ref=qf_sp_asin_til&fc1=000000&IS2=1<1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe><iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bokuibi-22&o=9&p=8&l=as1&asins=4835447522&ref=qf_sp_asin_til&fc1=000000&IS2=1<1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe><iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bokuibi-22&o=9&p=8&l=as1&asins=4835447530&ref=qf_sp_asin_til&fc1=000000&IS2=1<1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe><iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bokuibi-22&o=9&p=8&l=as1&asins=4835447549&ref=qf_sp_asin_til&fc1=000000&IS2=1<1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>おもくそhttp://www.blogger.com/profile/11329561840526758815noreply@blogger.com0tag:blogger.com,1999:blog-6552045820737806168.post-73961517516765123382011-12-30T17:44:00.000+09:002011-12-30T17:44:12.654+09:00僕歪年末号~おもくその3.11 俺は風久方ぶりの雑文。年末なので今年を振り返る…というのを口実に、忙しくて下書きのまま放置されてたエントリを加筆訂正して清書してしまう。<br />
<br />
まずは…2011年の日本を語る上で避けては通れない、3.11にまつわるエトセトラ。<br />
<br />
<h4>次の日健康診断なんですけど</h4>JRerのため早々と帰宅難民化が決定されたあの日。まあ金曜日だし、飲みなりカラオケなりネットカフェなりで夜を明かし…たかったが、次の日は健康診断。まあ十中八九中止だろうとは思ってたけど、万が一予定通りだったら後々手間かかるかな、そもそも基本的に徹夜は嫌いだし家で寝たいし、ていうか割と仲いい人間みんな歩いて帰ろうとしてるぞ…ってことで、民族大移動の列に加わることを決意。Googleマップで徒歩ルート検索すると…距離約20km、所要時間4時間…。30ページに及ぶルート地図を印刷し、20時に会社を出た。自分は結構歩くのが速い方なので、Googleが弾き出した時間ほどかからないだろう、と。<br />
<br />
<h4>Google先生はあの日も正しかった</h4>印刷した地図を片手にひたすら歩いた。ぐんぐん順位を上げながらひたすら歩いた。俺やっぱり速いぜ風だぜ!とが思いながら歩いた。こんな事でも考えながらじゃないと疲労で心が折れそうだったから…<br />
<br />
地図が20ページに差し掛かった、つまり3分の2を消化したところで、これまでの経過時間を確認すると、約2時間。おお、単純計算だと3時間で着きそうだ俺やっぱり速いぜニュートリノだぜ!とか思いながら、地図の次の案内確認すると…<br />
「直進する 8km 1時間30分」<br />
…結局、家に着いた時には約4時間経過。時間ぴったり。Googleすげえ。<br />
そう言えばこの日、もう10年以上ぶりに立ちションしたなー。コンビニの便所、どこも人気ラーメン屋ばりに並んでたもんなー。<br />
<br />
<h4>鉄筋コンクリート様</h4>本棚の悲劇の話が周りからちらほら来てたので、恐る恐る玄関を開けて中に入ると…以下、倒れていたもののリスト。<br />
<ul><li>空ペットボトル</li>
<li>まな板</li>
<li>縦置きしてたボックスティッシュ</li>
<li>便座</li>
</ul>などなど、こんなレベル。いい意味で拍子抜け。本に関しては、本立て使わず自らのバランスで立ってた段のが横倒しになってただけで、飛び散ってもいなかった。<br />
これが…鉄筋コンクリートの…力か…<br />
<br />
<h4>「サヨナラノツバサ」がプチトラウマ</h4>あの日の数日前に発売された、今年というか歴代最高レベルの菅野よう子作品『マクロスF サヨナラノツバサ』のサントラ。<br />
<br />
<iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bokuibi-22&o=9&p=8&l=as1&asins=B004GN9B48&ref=qf_sp_asin_til&fc1=000000&IS2=1<1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe><br />
<br />
徒歩開始時、iPodの電源入れて上記アルバムから「サヨナラノツバサ」を1曲リピートで再生してふとバッテリーアイコン見てみると…あ、赤い!殆ど残ってない!全く、携帯に続いてiPodもなんて、ホント最悪だ…<br />
<br />
この長い長い道のりを無音状態でというのは不毛すぎる。余計な操作したらダメだ…ということで、4時間中、全くiPodに触れなかった。つまり、4時間中ずっと「サヨナラノツバサ」。僕の中では歴代TOP10に入るくらいの名曲だけど、聴くとどうしてもこの日の苦しみを思い出してしまう…<br />
<br />
<h4>「この世で一番強いのは放射能」</h4>これは去年の話になっちゃうけど、最後のM-1グランプリのスリムクラブは衝撃でした。<br />
<br />
<iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bokuibi-22&o=9&p=8&l=as1&asins=B004HD4ELC&ref=qf_sp_asin_til&fc1=000000&IS2=1<1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe><br />
<br />
特に見出しの台詞はお気に入り。だけど、こんなことになっちゃったら「不謹慎だ!」とか言う輩が出てくるだろうから、あのネタは封印されてしまうのだろうか…<br />
<br />
話は変わるけど、決勝で「(優勝)取らせてやりたかった」と笑い飯に一票入れた松本人志にはがっかりだった。純粋な面白さでいったら、決勝は絶対スリムクラブだと思うけど(松ちゃんの好きそうな笑いでもあったし)。昔のM-1でますだおかだの優勝した際、審査の仕方に対してラジオで吠えてたあなたはいずこに…今年発売された本『仕事の流儀』では「下ネタやブラックな笑いはもういい」とか言っちゃってるし…90年代の毒々しさが好きなプチ信者としては、人生の楽しみが…ああでも、今月の『MHK』の戦隊ものは、久し振りのシュールコントで良かったけどね。まあ笑い声はいらんと思うけど(多分足してるやつですよね?)。<br />
<br />
<div style="text-align:center;">*</div><br />
<iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bokuibi-22&o=9&p=8&l=as1&asins=4781680003&ref=qf_sp_asin_til&fc1=000000&IS2=1<1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe><iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bokuibi-22&o=9&p=8&l=as1&asins=B005MT737C&ref=qf_sp_asin_til&fc1=000000&IS2=1<1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>おもくそhttp://www.blogger.com/profile/11329561840526758815noreply@blogger.com0tag:blogger.com,1999:blog-6552045820737806168.post-70519776337204354472011-12-30T11:18:00.000+09:002011-12-30T11:29:25.485+09:00おもくそクエストファイナルファンタジーファイナル-2<a href="http://d.hatena.ne.jp/Chikirin/20110807">将来有望な若者の将来価値を毀損する、大きなワナ - Chikirinの日記</a><br />
<blockquote>人気ランキングのトップに君臨する名だたる大企業から内定をもらった彼らは、なんの疑いももたずにそういう企業に就職していきます。自分達がそこで学ぶことになる「ビジネスの常識」が、世界のビジネス常識とは全く異質なものであることなど想像もしないままにね。<br />
…<br />
実は「完全に周回遅れです」みたいな場所で人生最初の「働く訓練」を受けることがどれだけ自分の将来価値を毀損する可能性があるか、よーく考えてみたほうがいいんじゃないか<br />
…<br />
その損害の大きさたるや実は、「なんだかんだいっても安定してるし」「福利厚生もしっかりしてるし」みたいなぼんやりしたメリットとではとても相殺できないくらい大きなダメージになるですよ。<br />
</blockquote><br />
おもくその転職活動冒険譚『<a href="http://bokuibi.blogspot.com/search/label/%E8%BB%A2%E8%81%B7">おもくそクエストファイナルファンタジー</a>』シリーズ。ついにシリーズ名が変わっちゃいました。<br />
「XIII-2」的命名規則を使用すればまだまだ引っ張れますが、今回は本当に大メインクライマックス(by 世界のヘイポー)です。引越したいから荷物は早く片付けておきたいし(電子の世界では関係ねえよ)。<br />
<br />
<h4>『安定』の定義って?</h4>転職活動開始前、当時の所属会社で上司に辞意を伝えたとき、上司は言った。<br />
「うちみたいな楽な会社はそうそうないよ。ミスしても減給とかまず無いし。他は厳しいよ~」(<a href="#20111230_fn_1" id="20111230_fn_1_from">※1</a>)<br />
会社を辞め、現在無職で転職活動中であることをお袋に報告した時、お袋は言った。<br />
「公務員にしときなさい。まだ年齢大丈夫でしょう?」<br />
要するに、両名とも「『安定』して『楽』な会社がイイゼ!」って言いたいのだろう。<br />
そもそも『安定』の定義って何なのか。現代においては<br />
「収入を継続的に得られる事が保証されている」<br />
ってところでしょうか。ではもう一歩突き詰めて、何故公務員は「収入を継続的に得られる事が保証されている」のか。<br />
「解雇や倒産が無いから」<br />
…確かに、今まではそうだったかもしれない。でも、この状態がずっと続くか?流石に続かんでしょ。橋本氏のような「まともな政治家」が今後増えてくる(増えて欲しい!)と、間違いなく粛正されると思うけど(ていうか今月早速切り込んでたしね)。そして、今年になって(特に3.11以降)、非公務員はかなり怒りが溜まってるから、いくら大人しい日本人といえども、いつか暴動起こるぞ。<br />
<br />
「解雇や倒産が無い企業」なんて存在しないと思っておいた方がいい。そうなると、「収入を継続的に得る」方法は一つしかありません。<br />
「継続的に職にありつく=突然、会社が潰れても、すぐに次の仕事にありつけるくらいにスキルをつけておく」<br />
そうなると、会社の選考基準は<br />
「どれだけスキルが身につくか」<br />
ってことに尽きると思います。<br />
公務員って、スキル身につきますか?ぬるま湯環境に慣れきっちゃうと、いざ改革だか革命だかで放り出された時点で死亡フラグだと思いますよ。そうなる可能性を少しは考えてますか?それとも、まだ「公務員は安泰」神話はずっと続くとお思いですか?<br />
「ゆっくり走るのが安全運転だと思うなよ」by 松本人志<br />
「ゆっくり=安全」とは限らないのです。<br />
<h5>ちなみにこういう人達の世界です</h5><a href="http://kirik.tea-nifty.com/diary/2011/12/post-6d5c.html">大阪の労連って本当に凄いな: やまもといちろうBLOG(ブログ)</a><br />
<blockquote>人事評価結果の給与反映はやめろ<br />
</blockquote><br />
<h4>中途採用を行ってない会社は危険な香り</h4>これは新卒者向けのお話になりますが。僕は新卒の頃、会社選びの基準の一つに「中途採用していない」というのを持ってました。理由は、「中途採用せず=離職率低い」と思ってたから。<br />
<br />
これ、大間違いでした。どんなに良い会社だとしても、退職者ゼロなんてあり得ません。必ず一定数は発生します。そして減った分は穴埋めしないといけない訳ですが、中途採用していない会社の場合、新卒が穴を埋める事になります。もちろん、退職者(経験者)の穴が新卒(未経験)で埋まる訳がありません。よって、新卒採用しかしていない会社は、会社全体のスキルは下がり続けていきます。僕の前の会社なんかまさにそれで、一番脂が乗ってくる30代前半の比率が極端に低く、人口ピラミッドは平子理沙ばりのくびれのナイスボディーです。<br />
<br />
という訳で、「中途採用を行っているかどうか」というのは、その会社の力を知る一つの指標になるかなと。企業のWebページに、中途採用ページが用意されてるかどうか確認してみてください。そもそもページ自体が無い会社は、中途採用の文化が無いと思ってよいかと。<br />
<br />
<div align="center">*</div><a href="#20111230_fn_1_from" id="20111230_fn_1">※1</a><br />
ちなみに、このやりとりあった直後くらいにリストラ開始w<br />
仕事が楽(気楽)なのは確かだけど、アラサーで基本給手取り17万…同じ「気楽」なら派遣の方が稼げるんじゃ(年金とか考慮しても)。<br />
<br />
<div align="center">*</div><br />
<iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bokuibi-22&o=9&p=8&l=as1&asins=4806140910&ref=qf_sp_asin_til&fc1=000000&IS2=1<1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe><iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bokuibi-22&o=9&p=8&l=as1&asins=4166608274&ref=qf_sp_asin_til&fc1=000000&IS2=1<1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe><iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=bokuibi-22&o=9&p=8&l=as1&asins=4344020855&ref=qf_sp_asin_til&fc1=000000&IS2=1<1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe><br />
<br />おもくそhttp://www.blogger.com/profile/11329561840526758815noreply@blogger.com0