怠惰を手に入れる方法

怠惰を手に入れる方法

怠惰を手に入れる方法

10章、11章の怠惰をせずにがんばった人の不幸話は、やりすぎ感ありありですが、ここまでくると妙に納得して、怠惰もいいかもと思ってしまいました。

読み進めるとネタとして書いているような気もしてきました(どこまで本気で書いているのやら?)、でも基本的には本気で寝っころがってすごすための方法をおしえてくれているんだろうな、と思います。


あと、なんとなく思い出したのは以下のメキシコの漁師のコピペかな?ちょっと主旨ちがうけど、そもそも論が重要みたいな話は共通のような気がする。

メキシコの田舎町。海岸に小さなボートが停泊していた。
メキシコ人の漁師が小さな網に魚をとってきた。
その魚はなんとも生きがいい。それを見たアメリカ人旅行者は、
「すばらしい魚だね。どれくらいの時間、漁をしていたの」 と尋ねた。


すると漁師は
「そんなに長い時間じゃないよ」
と答えた。旅行者が
「もっと漁をしていたら、もっと魚が獲れたんだろうね。おしいなあ」
と言うと、
漁師は、自分と自分の家族が食べるにはこれで十分だと言った。


「それじゃあ、あまった時間でいったい何をするの」
と旅行者が聞くと、漁師は、
「日が高くなるまでゆっくり寝て、それから漁に出る。戻ってきたら子どもと遊んで、
女房とシエスタして。 夜になったら友達と一杯やって、ギターを弾いて、
歌をうたって…ああ、これでもう一日終わりだね」


すると旅行者はまじめな顔で漁師に向かってこう言った。
「ハーバード・ビジネス・スクールでMBAを取得した人間として、
きみにアドバイスしよう。いいかい、きみは毎日、もっと長い時間、
漁をするべきだ。 それであまった魚は売る。
お金が貯まったら大きな漁船を買う。そうすると漁獲高は上がり、儲けも増える。
その儲けで漁船を2隻、3隻と増やしていくんだ。やがて大漁船団ができるまでね。
そうしたら仲介人に魚を売るのはやめだ。
自前の水産品加工工場を建てて、そこに魚を入れる。
その頃にはきみはこのちっぽけな村を出てメキソコシティに引っ越し、
ロサンゼルス、ニューヨークへと進出していくだろう。
きみはマンハッタンのオフィスビルから企業の指揮をとるんだ」


漁師は尋ねた。
「そうなるまでにどれくらいかかるのかね」
「二〇年、いやおそらく二五年でそこまでいくね」
「それからどうなるの」
「それから? そのときは本当にすごいことになるよ」
と旅行者はにんまりと笑い、
「今度は株を売却して、きみは億万長者になるのさ」
「それで?」
「そうしたら引退して、海岸近くの小さな村に住んで、
日が高くなるまでゆっくり寝て、 日中は釣りをしたり、
子どもと遊んだり、奥さんとシエスタして過ごして、
夜になったら友達と一杯やって、ギターを弾いて、
歌をうたって過ごすんだ。 どうだい。すばらしいだろう」

AppleCare Protection Planの流れ

iPhone用にAPP(AppleCare Protection Plan)を購入しました。

アップル - サポート - AppleCare Protection Plan for iPhone
http://www.apple.com/jp/support/products/applecareiphone.html

実際に購入するまでサポートのシステムというか仕組みがよくわからなかったのですが、おおまかな流れは以下のようになっています。

  1. AppleのWebサイトでAppleCare Protection Planを購入。普通にカードで決済とかする。なお、ここではiPhoneのシリアル番号とか入力しない。
  2. 自宅にレジストレーション番号が印刷された紙が郵送されてくる
  3. 再びAppleのWebサイトに行き、今度は登録作業を行う(これをサポート契約を有効にすると呼ぶ)
  4. このときレジストレーション番号と、APPに登録するiPhoneのシリアル番号を入力する。(←いまここ)
  5. 数分後、メールで登録完了証が送られる。
  6. もし、APPの保証を利用する場合には、AppleのWebサイトで製品のシリアル番号を入力する。

のようです。


ところで、AppleのWebサイトにこのへんの情報がちゃんとかいてあるんだろうか??素人にはわからなかった。。。

ipod touchが故障→速攻交換

http://images.apple.com/support/_images/icon_oss.png

ipod touchの本体スピーカーから音がならなくなりました。本体の音量ボタンを押しても、反応なし(本来スピーカーがアイコンがオーバーレイで表示されるはずなんだが)。ヘッドホンをつなげば問題なく音が出るしので、音楽を聴いたり、ゲームをするには特に問題ないのですが、もののためしにAppleの修理を依頼することにしてみました。

アップルのWebサイトのサポートからたどって以下のページ

オンラインサービスサポート
https://selfsolve.apple.com/GetWarranty.do

ipodのシリアル番号を入力するなどして修理を申し込みます。


以降、Appleからのメールの流れはこんな感じ

2009/7/31 23:10 IPOD TOUCH (2ND GENERATION) 修理交換のお申込を受領いたしました
2009/8/1 18:30ごろ (自宅に宅急便業者がピックアップに来る)
2009/8/3 17:07 修理対象の IPOD TOUCH (2ND GENERATION) が当社のリペアセンターに到着しました
2009/8/3 20:57 iPod が適切に起動しないという不具合があることを確認いたしました。
2009/8/4 17:16 IPOD TOUCH (2ND GENERATION) を発送いたしました。

特に、リペアセンターに到着してから、不具合確認がすばやい!

手元にあったときには、起動は特に問題なかったんだけどなー。まあ交換になったからいいか?

    • -

追記(2009/8/5)
新しいipod touchが到着。申し込みから1週間もかからないで新しいipodが手に入ったのはかなりすごいと思いました。ところで、到着した新しいipodはOS 2.2でした。もとのデータを復元するにはOSが古すぎるので、一旦iTunesに新しいipodとして登録して、iTunesに接続したipodの概要タブから更新ボタンを押してOSを3.0にあげてから、あらためて復元ボタンをおさないといけない。このサポートはすごいんだけど、一般人にはできるのだろうか?とちょっと思ってしまう。

    • -

追記(2009/8/6)
復元するのに2時間以上かかっていまった(なんで?)。復元がおわったらうまくネットにつながらないと思ったら、WiFiやメールのパスワードがすべて消えていた。保存領域が別なのね。。。家の無線LANMACのアクセス制限も解除しておかねば。

Google App EngineのJSPの文字化けが直らないだって?

JSPUTF-8にして日本語で記述した場合、ローカルの環境では正常に表示されるのに、、、GAEにデプロイすると文字化けする。これはGAE Java SDK 1.2.0の機知の問題で、SDKを更新して1.2.1にすれば直るはずなんだけど、

Google App Engine Blog: Java SDK version 1.2.1 now available
http://googleappengine.blogspot.com/2009/05/java-sdk-version-121-now-available.html

なぜか直らない。


Eclipseのメニューからヘルプ→ソフトウェア更新→インストール済みのソフトウェアのタブから、Google App Engine Java SDK 1.2.0を選択して、右クリックから更新を選択。正常にダウンロードされて、Eclipseを再起動する。このあと、文字化けするJSPをGAEにデプロイしてもやっぱり文字化け。


Eclipseのメニューからウィンドウ→設定→Google→AppEngineを選択すると、おっとSDK 1.2.0と1.2.1がなかよく並んでいるじゃないですか。しかもチェックマークは1.2.0に付いたまま。1.2.0はもう使わないので削除して、1.2.1にチェックマークをつけて、再度デプロイすると、JSPの文字化けは直った。

iPod touchをOS3.0にしてみた

1200円かけてソフトアップデートしてみたわけですが、コピペよりも、シェイクでシャッフルよりも、Podcastの2倍再生機能が一番使えます!


この"2X"のボタンを押すと、声のトーンはそのままに再生速度が2倍になります。

Apache+TomcatでIPアドレスでアクセス制限をかける方法

TomcatのWeb Application ManagerはブラウザからWebアプリをデプロイしたり何かと便利ですが、Basic認証だけだとちょっとセキュリティ的にどうなの感があります。アクセスしてくるマシンのIPアドレスで制限をかけると、安心感がちょっとアップしますよね。

Apacheと連携しているTomcatだったら、ApacheIPアドレス制限する方法と、Tomcatのコンテキストで制限する方法があるので、以下でご紹介します。

Apacheでブロックする方法

Webアプリがhogeへのアクセスをローカルだけに制限する場合には、httpd.confにあるmod_ajp_proxyの転送先設定のところにAllowを追記するだけ。

<Location /hoge>
  ProxyPass ajp://localhost:8009/hoge
  Order Allow,Deny
  Allow from 127.0.0.1
</Location>

Tomcatでブロックする方法

Webアプリがhogeへのアクセスをローカルだけに制限する場合には、
$TOMCAT_HOME/conf/Catalina/localhost/hoge.xml

<Context antiResourceLocking="false" privileged="true" >
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127.0.0.1" />
</Context>

を追記するだけ。


全部のコンテキストでIPアドレス制限するときにはserver.xmlの中か、context.xmlの中に

  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127.0.0.1" />

を追加するだけ。

レコメンドエンジンCicindelaの要求スペックが意外と高くてビビった

http://www.cirrusimage.com/McCann/Cicindela%20dorsalis.jpg
ライブドアのレコメンドエンジンのCicindelaをためしてみました。

ライブドアのレコメンデーションエンジン Cicindela | livedoor labs EDGE:
http://labs.edge.jp/cicindela/

デモを動かそうとしたのですが、mysqlのMemoryエンジンを1GBほど使うので、メモリがいっぱい乗っかったPCでないと無理っぽいです。私の環境では配布されているデモデータを1/3程度に削って、やっと動作確認することができました。


インストールは日本語の詳細なドキュメントが以下にあるので、基本的にこれに従えば問題ないです。

Install - cicindela2 - セットアップ方法 / How to setup - Google Code:
http://code.google.com/p/cicindela2/wiki/Install

とりあえず、お手軽にためすためにVmware上のUbuntu8.04にセットアップしたときのメモとして、

  • mysqlはSynapticパッケージマネージャでインストール(設定ファイルは/etc/mysql/以下にできる)
  • perlモジュールも同じくSynapticでインストール。Text::CSV_XSも、後でデモデータをセットアップするときに必要になるのでインストール


続いて、デモデータをセットアップします。最初にmysqlにデータベースを作成します

cd /home/cicindela/misc
perl create_init_sql.pl --db_name=cicindela_clip_db | mysql -uroot

次にデモデータとして提供されているLivedoorクリップCSVデータをmysqlに登録します。

cd misc/clip_data
gunzip -c ldclip_demo_dataset.csv.gz | perl importer.pl --work_dir=`pwd` >tmp.txt

importer.plはSQL文をtmp.txtに出力しつつ、csvをパーズしてDBに登録する2つのファイルclips.txtとtaggs.txtを出力します。この2つのファイルは、mysqlユーザから見えるところ移動する必要があります。

mv clips.txt taggs.txt tmp.txt /tmp
cd /tmp
vi tmp.txt

ファイルを移動してからtmp.txtの中の"load data infile"のパスを移動先ものに書き直します。ここで、mysqlでtmp.txtのSQLを実行します

cat tmp.txt |mysql -uroot cicindela_clip_db

このコマンドの実行は結構時間がかかります。Vmwareだと10分から数十分かかりました。


さて、次にデモデータを使って解析を実行します。上述のドキュメントにしたがって、レコメンドの設定を定義したファイルを編集します。

cd /home/cicindela
vi lib/Cicindela/Config/_common.pm

集計セットを起動します。

bin/batch.pl --track=1


ここで、問題発生!なぜか集計セットの計算でmysqlのテーブル"item_similarities”でデータの追加ができないそうな。

DBD::mysql::st execute failed: The table 'item_similarities' is full [for Statement "
insert into item_similarities (item_id1, item_id2, score)
...

item_similaritiesテーブルはMemoryエンジンを利用しており、Memoryエンジンはetc/mysql/my.cnfで

max_heap_table_size = 1024M

と、最大1GBに設定されていますが、そんなにメモリを積んでいない(Vmwareにそんなに割り当ててない)ので、テーブルにinsertできない状況になったようです。



結局、デモデータのCSVファイルをパーズする前に、ファイルサイズを1/3程度(それでも20万件)に削減してセットアップをやりなおすことで、正常動作が確認できました。