しばらく更新を休みます。サーバをAmazon EC2上に移し、引っ越し中も継続して運用できるようにしましたが、引っ越し作業を行う自分の方は一人なので、とても余裕がないことが判りました。引っ越し中は引っ越しのことでも書けばいいかと思っていましたが、私は引っ越しを甘く見ていました。
引っ越しは大変です。本が多すぎるせいでしょうか。今、83箱まで詰めて、90くらいで終わりそうというところまでは漕ぎ着けたところです。荷物が少なかったら、もしかすると引っ越しは楽しい面もあるのかも知れないと思う今日この頃なのです。
段ボール箱も60を超え、床が沈みそうになって箱の山が傾いてしまっても終わりが見えない状況は、賽の河原で石を積む気分である。引っ越し業者は本は百箱と見積もっていったが、それで足りるだろうか。ちなみに写真は56個のときの状態である。
その引っ越し業者の名前や印が今回の写真にははっきり写っている。別に隠すようなものでもないから、そのままでいいと思ったからそのまま載せるが、この箱に本を詰めていると、引っ越し会社のテレビCMの歌が頭の中に延々と流れて大変困っている。どうしたら止まるのだろう。
数年前から我が家にはTV受信機がないので広告も観られないわけだが、CM紹介のページなんていうのがあって、それを見ると最近はさわやかな宣伝なんかしていて、10年以上経っても私の耳について離れない「勉強しま〜っせ……」は流れていないようだ。あのCMを知らない若い方や放送されない地方の方も、そのサイトで動画を観ることができる。
それにしても本は重い。場所がないので天井まで積み上げてしまったが、本当に床が抜けたらどうしようと考えると、心配で夜も眠れなくなってしまう今日この頃なのである。
Kindle 2が話題になっている一方で、もう一つ別の電子本の話題。At TOC: Bookworm Online EPUB Reader Now Part of O'Reilly Labsという記事で報じられたのだが、Bookwormというonline EPUB readerがO'Reillyの傘下に入ったようだ。
実は全然知らなかったのだが、ePubという電子本の形式があるらしい。epubという拡張子がついていて、xhtmlをもとに、cssとJPEG、GIF、PNG、Scalable Vector Graphics (SVG)といった画像ファイルを組み合わせて構築されるオープンソースのフォーマットらしい。パソコン上で、このBookwormのほか、Adobe Digital EditionsやStanzaで読める。iPhoneやSony Reader PRS-505でも読めるという。試してみようかと思ったのだが、そんな形式のファイルを私は見たことがない。ファイルさえあれば、それをBookwormに登録して(アカウントを作る必要がある)、ネットに接続できる環境にいれば、いつでもどこでも電子本が読めるというわけだ。前にどこまで読んだかが記録されているので、家で途中まで読んだ本の続きをそのまま外出中にiPhoneで読んだりできる。
でも、そんな形式のファイル、どこにあるんだ? O'ReillyとかPenguinとかでePub版電子本を購入できるらしいが、今は購入して試す時間の余裕も金の余裕もない。
他には何かないかと思ったら、Munseysというパルプ雑誌掲載作品やその系列の膨大なコレクションがあって、ePub形式でダウンロードできるそうではないか。前はBlack Maskという名前だったらしい。Frank Munseyという人は最初にパルプ雑誌を作った人だ。The Argosyという雑誌である。1888年に子供向けだったGolden Argosyを改名して、対象読者を大人になるように中身も変えたらしい。Amazing StoriesもこのMansey系のはず。
早速、ラヴクラフトなんかダウンロードして、Bookwormにアップロードしてみた。なるほど。どういうものかは少し判ったような気がする。
自分で、ePub形式の文書を作るにはどうしたらいいんだろう。
Canonical公認AMIはとりあえず置いておいて、前にApache2をインストールして動作確認したところからの続きである。
PHP5、MySQLをインストールする。
apt-get install php5-cli
apt-get install libapache2-mod-php5
apt-get install mysql-server
*rootのパスワード設定を求める画面が出てくるので入力
apt-get install php5-mysql
/etc/mysql/my.cnfに以下の2行を追加。
[mysqld]
default-character-set = utf8
skip-character-set-client-handshake
/etc/php5/apache2/php.iniを少し修正。
magic_quotes_gpc Off
mbstring.language Japanese
以下略
一通り設定したら、apacheの設定更新を
/etc/init.d/apache2 reload
とやって反映させる。
pythonとrubyは入っていたので、python-mySQLdb libapache2-mod-pythonだけ追加しておく。あと、phpmyadminもインストール。
MySQLの名前もパスワードもないユーザを削除し、新たに一人ユーザを追加して、ログインできることを確認する。これで、MySQLは大丈夫だと思ったら、文字化けで苦しむ。
結局
# /etc/init.d/mysql reloadでは駄目で、
# /etc/init.d/mysql restartとして初めて設定が反映されるのだ。これで6時間くらい無駄にした。
下のようになっていれば、日本語が文字化けせずにUTF8で統一できる。
mysql> show variables like "char%"; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+ 8 rows in set (0.00 sec)ここまでは、Amazon EC2とは全然関係なくて、通常のUbuntuの使い始めの設定なのだ。でもこれが済まないと先に進めないので仕方がない。
さて、Amazon Elastic Block Store (EBS)にMySQLのデータベースを置いて、インスタンスが停止されてもデータが消えないようにしてみよう。Running MySQL on Amazon EC2 with Elastic Block Storeに書いてあるとおりにやればいいだけだが。ときおり、日本語のサイト、たとえば「shibataismの日記:Amazon Elastic Block Store(EBS)でmysqlを動かしてみたよ」なども参考にしながら。
まず、instance id(i-xxx001z2というような記号)とzone(例えばus-east-1a)を控えておく。次に、SSHでログインして、xfsprogsをインストールする。一旦ローカルシステムに戻って、
$ ec2-create-volume -z us-east-1a -s 1というコマンドでEBS volumeを作る。最後の1という数字が1GBの容量のものを作るという意味である。後で増やせるらしいが、やり方は知らない。volume id(vol-VVVV1111のようなもの)を確認して(EC2 consoleでも確認できる)、
$ ec2-attach-volume -d /dev/sdh -i i-IIII1111 vol-VVVV1111とやって、volumeとinstanceの対応付けを行う。ここで、EC2のシステムに戻って、
# mkfs.xfs /dev/sdh # echo "/dev/sdh /vol xfs noatime 0 0" >> /etc/fstab # mkdir /vol # mount /volというようにしてマウントする。すると突然、SSH でアクセスできなくなる。 httpdサーバもページを提示しなくなる。全く無反応なのだが、EC2 consoleではインスタンスは稼働中との表示が出ている。どうしたらいんだ? 助けを求めてネット上を彷徨うが、解らない。今までの苦労が水の泡になるのだろうか。また一からやり直しなんだろうか。目の前が真っ暗になり、全人類に向かって呪いの言葉を発してみたりしても気分は晴れない。
何度か再起動したら、また突然繋がるようになった。よかった。
一旦MySQLを止めて(/etc/init.d/mysql stop)、訳も解らないまま、
mkdir /vol/lib /vol/log mv /var/lib/mysql /vol/lib/ mv /var/log/mysql /vol/log/ test -f /vol/log/mysql/mysql-bin.index && perl -pi -e 's%/var/log/%/vol/log/%' /vol/log/mysql/mysql-bin.indexとやってみる。次に、
cat > /etc/mysql/conf.d/mysql-ec2.cnf <とすればいいらしい。これで、大丈夫なのか。今ひとつ自信がないのだが、動いているようなので、多分いいのだろう。 最後にIPアドレスについて。インスタンスを起動すると、例えば、ec2-67-202-1-180.compute-1.amazonaws.comというようなPublic DNSが与えられるが、これが即ちURLである。IPアドレスは最初のec2-以下の4つの数値で示されている。これでアクセスできるけれども、覚えづらいし、インスタンスを一度止めると、再度起こしてきたときにはまた別の値が与えられる。私はnakano.no-ip.orgでアクセスできればそれでいいので、
# apt-get install noip2として、IPアドレスをNo-IPに知らせるアプリケーションをインストールする。インストール途中で、No-ipのIDやパスワードを訊かれ、続いて設定条件も訊かれるので答えていけば、設定完了と同時に起動する。これでnakano.no-ip.orgでアクセスできるようになった。これが読めているというのがその証拠である。このとき、引っ越しなどで前に同じURLで設定していた自宅サーバでもある場合は(私のことだ)、自宅サーバのnoip2を停止しておかないと混乱するので忘れないように気をつけなければならない。AMIやEBSのスナップショットの保存などについてはまた後ほど。
2009-02-10 23:45:26
「絶滅寸前の英単語を保護するために、僕や私が今日出来る事」という記事で知った、Oxford Dictionariesが運営しているサイト "Save the Words" である。あまり知られていない言葉や、忘れられそうになっている言葉を集めて載せている。
確かに日本人の私には知らない単語ばかり。英和辞典にもほとんど載っていない(ような気がする)。言葉が一面に散らばっていて、クリックすると浮き上がってくるのだ。
日本語でこういうのを誰か作ってくれないものか。私はそんなに珍しい言葉を知らないから、そういうところで死にそうな言葉を知って、語彙を増やそうという魂胆である。
もう一つたまたま見つけたのが、Wordie [wûrd • ē] Like Flickr, but without the photos.で、こちらは、自分が何か感じた言葉を次々に投稿していくもののようだ。特に珍しい語でなくてもいいのだが、どうしてもちょっと珍しいものを載せたくなるようだ。
言葉を集めるのは好きなのでいろいろ拾ってきてしまう。不愉快なものも含めて。いや、不愉快なものほど耳に残るからその方が多いかも。気がつくと、誰とも話したくなくなっていたりする今日この頃である。
2009-02-10 21:39:44
Ubuntu Server on Amazon - Beta programme now openを見て、Canonical製Amazon EC2用Ubuntu AMIがあるので、早速利用を申し込んでみたというのは昨日書いた通りである。返事がようやく来たところで少しだけ試してみたので報告する。
概ね、EC2StartersGuideに書いてあるようにやってみた。尤も、前半はAmazonのアカウントの作り方なんて書いてあるので、その辺りは省略。
メールが来てから、AWS Management Consoleを開いて、EC2 DashboardのAIMsを見ると、Private Imagesのところに二つUbuntuのAMIが表示されるようになっている。前はPrivate Imagesを選んでも何も表示されなかった(と記憶している)。32bit版を選んでスタートさせると、もうインスタンスが一つ動き出す。いくつでも動かせて、いつでも停止できるのが、このEC2の便利なところだ。こうやっていろいろなシステムを試すことができる。
Public DNAが表示されるので、SSHでアクセスする。
┌───────────────────────────────────┤ Software selection ├────────────────────────────────────┐ │ You can choose to install one or more of the following predefined collections of software. │ │ │ │ Choose software to install: │ │ │ │ [*] Basic Ubuntu server │ │ [ ] DNS server │ │ [ ] Edubuntu server │ │ [ ] LAMP server │ │ [ ] Mail server │ │ [*] OpenSSH server │ │ [ ] PostgreSQL database │ │ [ ] Print server │ │ [ ] Samba file server │ │ [ ] Tomcat Java server │ │ [ ] Virtual Machine host │ │ │ │ │ │という見慣れない表示が出たので、LAMPのみ追加してみる。MySQLのrootユーザのパスワード設定を訊かれる。続いてPHP、Apache2がインストールされる。
====================================================== CONFIGURATION OF YOUR UBUNTU EC2 IMAGE ====================================================== Your EC2 image is about to be finished to be set up. ------------------------------------------------------ New password for ubuntu account: xxxxxxxx Password changed. Setting up ssh public keys for the ubuntu account. ------------------------------------------------------ Please select software that you wish to install: ------------------------------------------------------ We are now going to log you out of the root account. To perform administrative tasks please use the ubuntu account in combination with sudo using the password: xxxxxxxx ======================================================という表示が出た後、Connection to ec2-174-129-100-217.compute-1.amazonaws.com closed.といって終了してしまう。ssh ubuntu@ec2-174-129-100-217.compute-1.amazonaws.comとやってログインしてみる。上で提示されたパスワードを使うとログインできた。今は時間がないので、もうTerminate指令を送って、停止。金も掛かるから。
でも、システムを移行するときなども、元のを動かしながら新しいシステムをいろいろ試すことが可能なので便利である。もう自宅サーバに戻らなくてもいいかなという気分だが、インスタンスを一つ動かし続けると最小単位でも一ヶ月に72ドル。円高のこの頃でも6500円かかる。ちょっと厳しい。この料金を補って余りある広告料でも確保できる見込みがあるなら、是非利用を続けないのだが、残念ながら私のサイトではそれは難しいのが現状である。
2009-02-09 23:41:16
引っ越しである。24時間働いている自宅サーバも引っ越ししなければならない。23日に荷物を引っ越し会社に引き渡し、25日に受け取ることになっている。それから、NTTのフレッツ光の工事があって、設置・配線その他が完了してから動き始める訳である。環境が変わって設定がうまく行かずに、滞在期限を過ぎてしまったら、作業を再開できるのは何週間も先のことになる。それは困る。といふことで、Amazon EC2を使ってしばらく運用することにした。
昨年夏に試しに作ってみたインスタンスが調子悪くなってしまったので、Ubuntu 8.10で新たに作り直すことに決めた。Ubuntu Server on Amazon - Beta programme now openといふサイトを見つけたので、早速利用してみることにした。Join the beta programといふ文字をクリックして、必要事項を記入して送信。認定作業に一時間くらいかかることもあるから、待っていてくれと書いてあるので待っていた。一時間を過ぎても何の連絡もない。二時間過ぎても、三時間過ぎても。私は気が短いので、待たないことにした。
昨年夏にはなかった、AWS Management Consoleというのが今はあるのだ。こいつを利用して、AMI一覧を出し、ubuntu-8.10-intrepid-base-20081222.manifest.xmlというのを選んで起動システムにすることにした。規模の設定、認証キーに何を使うか(私はgsg-keypairを選んでおいた)などを決めて、クリックすればもうインスタンスが動きだす。しばらく待つと、緑丸印の「running」が表示される。これで、もう立ち上がっているのだ。
gsg-keypairを私はホームディレクトリの.ec2というフォルダに置いているので、
ssh -i ~/.ec2/gsg-keypair root@ec2-00-101-1-110.compute-1.amazonaws.comという感じで、SSHを使ってログインする。ここにはまだほとんど素のUbuntuなので、いろいろ入れていくことになる。これはEric Hammondという人が作ったUbuntu 8.10 Serverを基にしたAWS版ubuntu 8.10 (32 bit) ami-1a5db973である。まず、Apache2をインストール。
apt-get update apt-get install apache2URLは、AWS Management ConsoleにPublic DNS: ec2-67-202-1-180.compute-1.amazonaws.comというように表示されているので、これをブラウザに入力すると、It works!という文字が出てくればいい。出てこないはずはないので、出てこなかったときのことは解らない。続きは明日。まだ一歩も踏み出していない段階なのだが、今日はもう寝る時間だ。あ、冒頭で書いた、Ubuntu Server on Amazon - Beta programme now openの返事は翌日来た。Canonical提供のAMIの名前が記されている。もう遅いんだよってことで、どうしようもないので、メーリングリストにだけ入ってみた。
2009-02-08 07:10:53
引っ越し荷物はほとんど本。そんなに買っていないつもりでも(嘘です)、いつの間にか増えてしまうのが本というものです。勝手に子供を産んでいるんじゃないかと思いたくなるくらいです。
引っ越し業者の見積もりでは100箱でしたが、私の予想では120箱です。昨日少し詰めてみて、たちまち嫌になりました。6箱詰めて、棚が4つしか空かないのはなぜなんだ。箱に詰めると膨らむような気がしませんか、本というものは。
サーバの方も引っ越し準備中です。Amazon Web ServiceのEC2を利用してみようと思っています。費用が掛かりますが、引っ越し期間のみということで。こういう機会でもないと、ちゃんと使ってみようという気にもなかなかならないので。その辺りの報告もしていきますが、更新頻度は減りそうです。
2009-02-06 23:22:37
引っ越しをしなければならない。ということで、しばらく引っ越しの記録を書き留めておくことにする。だから、あまり面白くないと思う。人の引っ越しなんてね。当人は大変だ大変だというけれども、別に自分には関係ないことだし、苦労自慢をする奴に限ってあまり苦労していなかったりする。そういうものなのだ。
さて、まずは引っ越し先のネット環境を整えるところから。実は18年ぶりくらいに親と同居しなければならないので憂鬱なのだ。老いた両親はインターネットには疎いので(電子メールくらいは使える)、未だにISDN回線である。
そこで、NTT東日本のフレッツ光の説明を読んで、申し込み手続きに進んだ。ひかり電話とか映像関係の契約は申し込まない。インターネットのプロバイダは、既に契約があるNiftyにした。「電話番号で確認」をクリックし、そのまま申し込み画面へ。
住所や電話番号などを記入し(今回は申込者と回線所有者が違い、プロバイダ契約者と電話回線契約者も違うが、それは問題にはならなかった)、プロバイダパック(BB nifty)を選ぶ。支払いはNiftyから一括とする。そんな具合に選んでいくと、工事日の予約となる。今月25日の午後を選んで、申し込み完了。
直ちに、「フレッツ 光ネクスト 申し込み登録のご連絡」というメールが来る。1時間ほどすると、登録した携帯に確認の電話がかかってくる。私は普段電話に出るという習慣がないので、かなり狼狽えてしまった。電話は大嫌いなのだ。申し込み事項の確認で終わる。簡単な電話なのに、私の背中は冷たい汗でべっとり濡れてしまう。やれやれ。
パソコンの台数とかOSとかを訊かれ、MacOSXが2台と答える。本当はLinuxがもう1台あるのだが、そういう答えはほとんど意味をなさないらしいので、云わない。「そうするとルータはマック専用のものですね」と云われるが、全く意味が解らない。でも「はい」と答えてしまう。
とにかくルータが必要だと云うことは確かなようなので、Amazon.co.jpに、コレガ CGBARFX3VQ超高速有線ルータを註文した。4800円+税である。この画像だと、まるで「2001年宇宙の旅」に出てくるモノリスのように巨大な黒い物体が空に聳えているようにも見えるが、実物はかなり小さい。掌に乗るくらいだ。職場で使っているから知っているのだ。フレッツ光は初めてなので、機器は慣れているものを使いたかったのである。
自宅サーバを設置しなければならないから、余計なところで戸惑いたくなかったわけである。
今日の作業はここまでとする。怠け者の私にしてはいろいろやった方だ。
2009-02-05 23:26:32
ITproの「PFU、文書スキャナーScanSnapの新版を発売」という記事で知ったのだが、大量の書類を一気にPDFにしてくれるScanSnapの 新機種が出るようだ。新機種が出ても、Windows版しかないときもあるのだが、今回は嬉しいことに、S1500MというMacモデルがあるのだ。まだWindowsでしか使えない頃に一台買って、私はこれのためだけにWindows機を一台買った(中古だけど)。いろいろ使って、もう紙送りがうまく行かないようになってしまい、使わなくなってしばらく経つ。そろそろ新しいのが欲しかったのである。引っ越したら是非買おう。
「"ヨーロピアンテイスト"のデザインを採用」というのはよく解らないが、A3サイズの紙を自動的に半分に折って読み取って、後でA4二枚を合成してくれるということに感嘆した。ここまでくるともうロボットである。
もっと進化して、本を傷つけることなくページを捲ってスキャンして、PDFファイルを作ってくれるロボットができないものか。掃除や介護も大事だけど、図書スキャンロボットが何よりも欲しい。売れないだろうから、無理だとは思うけれど、いつの日か、掃除や調理に加えて、本のスキャンなんか軽くこなしてしまうロボットが誕生するときがくるだろう。そうしたら、私の持っている本を全部電子化して、少し検索すればすぐに求める本を見つけ出せるようになるだろう。検索は自分でキーを使って入力しなくても、ロボットに向かって、「人間を殺せないはずのロボットが関与した殺人事件を題材にしたSFは何だったかな。あれを持ってきてくれ」と云ったら、すぐにアイザック・アシモフの本を何冊か持ってきてくれたりすると嬉しい。
もっと進化して、「そんなくだらない本をスキャンするのは、時間と記憶媒体の無駄でしかありません。」などと云われるようになったら嫌だな。
そこまで進化してはいないが、本のページ捲りロボットというのは既に開発されているのだ。まだ、市販はされていないけれども。下にあるのはそれを報じるニュースである。
これはまだ読書用のページ捲りで、スキャンとPDF化はしてくれないようだ。そうしてくれるまで長生きしたいものだ。
2009-02-04 22:34:39
昨日まではサンプルファイルに手を加えて動かすだけだった。今日は、自分のスクリプトで動かしてみたい。ということで、Pythonである。計算処理が多くなると、PHPよりもPythonの方が速いのだ。まずは、boto 1.6bをここからダウンロードして、インストールする。
Amazon SimpleDBでの利用方法は、 http://code.google.com/p/boto/wiki/SimpleDbIntro に書いてあるので、それを参照する。botoの設定ファイルは、
というように、 http://code.google.com/p/boto/wiki/BotoConfigに書いてあるのだけど、自分のホームディレクトリにはそんなファイルは見あたらないし、/etcにも見つからない。でも、前に作ったPythonスクリプトが動いているのだろうかと思ったら、.bash_profileに書いているではないか。googleで検索したら自分の日記が出てきて判った。でも、Ubuntuに.bash_profileなんてないんだけど。あ、.profileだった。
- /etc/boto.cfg - for site-wide settings that all users on this machine will use
- ~/.boto - for user-specific settings
昨日と同じように、条件に合うデータを取得してみる。
#!/usr/bin/python #vim: set fileencoding=utf-8 : import boto sdb = boto.connect_sdb() domain = sdb.get_domain('mydb') rs = domain.query("['HaeIIIF' > '83000']","['HaeIIIF' < '83200']","['Name' like 'Desulfomicrobium%']") for item in rs: print item['Name']このName like ... のところが効かずにだらだらと結果が表示されてしまった。それに慣れ親しんだSelect文でないから、何となくもの足りないなあ。おそらく、しばらくは"like"は使わないだろうとは思うのだけど、どうにかしなければ。
2009-02-04 22:19:20
「Firefox,Safari,Chromeのシェアが上昇--最新ブラウザ利用調査」だとか、「IEの市場シェア、減少続く——67.5%に」という記事を読み、自分のところではどうだろうかと思って、Google Analyticの集計をみてみた。
12月21日と比べてみるとどうだろうか。合計値が5000くらいなのだけど、一ヶ月の訪問者の延べ人数なんだろうか。一人が5000回来ても、この値になるのだろうか。それとも5000のIPアドレスからアクセスがあったということだろうか。それとも5000のPCから? 実はよく判っていないのだが、2月3日の集計値を見ると、Internet Explorer 50.4%、Firefox 30.0%、Safari 11.7%、Chrome 3.82%、Mozilla 1.55%、Opera 1.45%といった様子である。1%未満は面倒くさいので省略した。
上記のNet Applicationsの集計よりもFirefoxやSafariが多い。特にfirefoxが。Macintosh利用者が多いのが原因なら、Safariがもっと多いのではないかと思って、OSの割合を見てみると、Windows 74.6%、Macintosh 21.1%、Linux 3.63%(1%以下は省略)だった。
CNET Japan の「「Windows 7」と「Mac OS」、2009年1月市場シェアで順調な推移--米調査」を見ると、Windows 88.3%、MacOSX 9.93%、Linux 0.83%となっている。本以外のことでは、MacやLinuxの話題が多いから、そんなものだろうか。
2009-02-03 22:06:50
今日は、昨日作ったドメインにデータを入れることにする。サンプルフォルダに入っているPutAttributesSample.phpを使う。それを使えとGetting Start Guideに書いてあるからだ。そして、入力されたデータの一覧を見るのは、QuerySample.phpだ。
しかし、そのまま使うと、
Fatal error: Class 'Amazon_SimpleDB_Model_PutAttributes' not found in /home/ynakano/AmazonEC2/sdb/src/
とか、
Fatal error: Class 'Amazon_SimpleDB_Model_Query' not found in /home/ynakano/AmazonEC2/sdb/src/
というエラーが出てしまう。そこで、
$request = new Amazon_SimpleDB_Model_PutAttributes();
を
$request = new Amazon_SimpleDB_Model_PutAttributesRequest();
に、
$request = new Amazon_SimpleDB_Model_Query();
を
$request = new Amazon_SimpleDB_Model_QueryRequest();
と修正する。これに気づくのにもずいぶん掛かっているのだ。こう書けば数行だけど。今回は私が使うまったく日常的ではないデータを例に説明しよう。説明用のデモデータを用意する元気がないのだ。用いるのはバクテリアの16S rRNAの遺伝子を制限酵素で切断したときの断片の分子量のリストである。ID、Name、AluIF、BstUIF、HaeIIIF、HhaIF、MseIF、RsaIF、TaqIF、Tsp509IF、AluIR、BstUIR、 HaeIIIR、HhaIR、MseIR、MspIR、RsaIR、TaqIR、Tsp509IRという項目がある。まずは試しに二つのデータを入力してみる。上記ファイルの@TODO: set requestの行の後ろに、以下のような入力データを入れる。
require_once ('Amazon/SimpleDB/Model/ReplaceableAttribute.php'); $domainName = 'mydb'; /* *ID=S000529387 *Name=Oscillatoria corallinae; CJ1 SAG8.92_ */ $itemName = 'S000529387'; $attribute1 = new Amazon_SimpleDB_Model_ReplaceableAttributesRequest(); $attribute1->withName('Name')->withValue('Oscillatoria corallinae; CJ1 SAG8.92_'); $attribute2 = new Amazon_SimpleDB_Model_ReplaceableAttributesRequest(); $attribute2->withName('AluIF')->withValue('60340.41'); $attribute3 = new Amazon_SimpleDB_Model_ReplaceableAttributesRequest(); $attribute3->withName('BstUIF')->withValue('61552.23'); $attribute4 = new Amazon_SimpleDB_Model_ReplaceableAttributesRequest(); $attribute4->withName('HaeIIIF')->withValue('91450.03'); $attribute5 = new Amazon_SimpleDB_Model_ReplaceableAttributesRequest(); $attribute5->withName('HhaIF')->withValue('106371.95'); $attribute6 = new Amazon_SimpleDB_Model_ReplaceableAttributesRequest(); $attribute6->withName('MseIF')->withValue('13245.32'); $attribute7 = new Amazon_SimpleDB_Model_ReplaceableAttributesRequest(); $attribute7->withName('RsaIF')->withValue('132514.29'); $attribute8 = new Amazon_SimpleDB_Model_ReplaceableAttributesRequest(); $attribute8->withName('TaqIF')->withValue('17563.20'); $attribute9 = new Amazon_SimpleDB_Model_ReplaceableAttributesRequest(); $attribute9->withName('Tsp509IF')->withValue('100795.27'); $attribute10 = new Amazon_SimpleDB_Model_ReplaceableAttributesRequest(); $attribute10->withName('AluIR')->withValue('11988.57'); $attribute11 = new Amazon_SimpleDB_Model_ReplaceableAttributesRequest(); $attribute11->withName('BstUIR')->withValue('49223.55'); $attribute12 = new Amazon_SimpleDB_Model_ReplaceableAttributesRequest(); $attribute12->withName('HaeIIIR')->withValue('20065.83'); $attribute13 = new Amazon_SimpleDB_Model_ReplaceableAttributesRequest(); $attribute13->withName('HhaIR')->withValue('23783.33'); $attribute14 = new Amazon_SimpleDB_Model_ReplaceableAttributesRequest(); $attribute14->withName('MseIR')->withValue('215512.57'); $attribute15 = new Amazon_SimpleDB_Model_ReplaceableAttributesRequest(); $attribute15->withName('RsaIR')->withValue('98722.58'); $attribute16 = new Amazon_SimpleDB_Model_ReplaceableAttributesRequest(); $attribute16->withName('TaqIR')->withValue('154842.11'); $attribute17 = new Amazon_SimpleDB_Model_ReplaceableAttributesRequest(); $attribute17->withName('Tsp509IR')->withValue('39889.18'); $attributeList = array($attribute1, $attribute2, $attribute3, $attribute4,$attribute5, $attribute6, $attribute7, $attribute8, $attribute9, $attribute10, $attribute11, $attribute12,$attribute13, $attribute14, $attribute15, $attribute16, $attribute17); $request = new Amazon_SimpleDB_Model_PutAttributes(); $request->withDomainName($domainName)->withItemName($itemName)->setAttribute($attributeList); invokePutAttributes($service, $request); /* *ID=S000427874 *Name=Sphingomonas koreensis; JSS-28; KCTC 2883_ */ $itemName = 'S000427874'; $attribute1 = new Amazon_SimpleDB_Model_ReplaceableAttributesRequest(); $attribute1->withName('Name')->withValue('Sphingomonas koreensis; JSS-28; KCTC 2883_'); $attribute2 = new Amazon_SimpleDB_Model_ReplaceableAttributesRequest(); $attribute2->withName('AluIF')->withValue('65124.71'); $attribute3 = new Amazon_SimpleDB_Model_ReplaceableAttributesRequest(); $attribute3->withName('BstUIF')->withValue('30624.92'); $attribute4 = new Amazon_SimpleDB_Model_ReplaceableAttributesRequest(); $attribute4->withName('HaeIIIF')->withValue('22534.56'); $attribute5 = new Amazon_SimpleDB_Model_ReplaceableAttributesRequest(); $attribute5->withName('HhaIF')->withValue('25944.81'); $attribute6 = new Amazon_SimpleDB_Model_ReplaceableAttributesRequest(); $attribute6->withName('MseIF')->withValue('178706.88'); $attribute7 = new Amazon_SimpleDB_Model_ReplaceableAttributesRequest(); $attribute7->withName('RsaIF')->withValue('131747.79'); $attribute8 = new Amazon_SimpleDB_Model_ReplaceableAttributesRequest(); $attribute8->withName('TaqIF')->withValue('17541.24'); $attribute9 = new Amazon_SimpleDB_Model_ReplaceableAttributesRequest(); $attribute9->withName('Tsp509IF')->withValue('154133.65'); $attribute10 = new Amazon_SimpleDB_Model_ReplaceableAttributesRequest(); $attribute10->withName('AluIR')->withValue('80873.66'); $attribute11 = new Amazon_SimpleDB_Model_ReplaceableAttributesRequest(); $attribute11->withName('BstUIR')->withValue('85993.13'); $attribute12 = new Amazon_SimpleDB_Model_ReplaceableAttributesRequest(); $attribute12->withName('HaeIIIR')->withValue('112210.56'); $attribute13 = new Amazon_SimpleDB_Model_ReplaceableAttributesRequest(); $attribute13->withName('HhaIR')->withValue('71372.31'); $attribute14 = new Amazon_SimpleDB_Model_ReplaceableAttributesRequest(); $attribute14->withName('MseIR')->withValue('51693.15'); $attribute15 = new Amazon_SimpleDB_Model_ReplaceableAttributesRequest(); $attribute15->withName('RsaIR')->withValue('98664.54'); $attribute16 = new Amazon_SimpleDB_Model_ReplaceableAttributesRequest(); $attribute16->withName('TaqIR')->withValue('210623.25'); $attribute17 = new Amazon_SimpleDB_Model_ReplaceableAttributesRequest(); $attribute17->withName('Tsp509IR')->withValue('33719.10'); $attributeList = array($attribute1, $attribute2, $attribute3, $attribute4,$attribute5, $attribute6, $attribute7, $attribute8, $attribute9, $attribute10, $attribute11, $attribute12,$attribute13, $attribute14, $attribute15, $attribute16, $attribute17); $request = new Amazon_SimpleDB_Model_PutAttributes(); $request->withDomainName($domainName)->withItemName($itemName)->setAttribute($attributeList); invokePutAttributes($service, $request);そして、このファイルを実行すると、こんな結果が帰ってくる。$ php PutAttributesSample.php Service Response ================================================================= PutAttributesResponse ResponseMetadata RequestId 00000000-0000-0000-b00b-000000000000 BoxUsage 0.0000229733 Service Response ================================================================= PutAttributesResponse ResponseMetadata RequestId 00000000-0000-0000-c00c-000000000000 BoxUsage 0.0000229733ちゃんとデータが保存されたかどうか不安なので、確認する。
QuerySample.phpのinvokeQuery($service, $request);の行頭にあるコメントを外す。
その行の前に、
$request = new Amazon_SimpleDB_Model_Query();
$request->setDomainName('MyDomain');
と書く。MyDomainは自分の使うドメイン名である。保存して実行すると、$ php QuerySample.php Service Response ================================================================= QueryResponse QueryResult ItemName S000529387 ItemName S000427874 ResponseMetadata RequestId 00000000-0000-0000-m00m-000000000000 BoxUsage 0.0000140160という結果が返ってきた。最初、失敗したかと思ったけれども、ItemName S000529387 S000427874というのがデータのIDだった。ちゃんと保存されたのだった。今回使うデータは850個あるので、これを850書き入れたPutAttributesSample.phpを作って実行する。そんなファイルを手で書いていたら大変なので、それもPHPスクリプトで作ったのだけど、それはここでは省略する。それを実行すると延々と上のような表示が出てくる。とはいっても永久にではなくて850個で終わるわけだけど。
一つ一つのデータを見るには、GetAttributesSample.phpの、
invokeGetAttributes($service, $request);
の行のコメントアウトを消して、その前の部分に、$request = new Amazon_SimpleDB_Model_GetAttributesRequest(); $request->setDomainName('mydb'); $request->setItemName('S000546840');と書いてみる。説明にはAmazon_SimpleDB_Model_GetAttributes()と書いてあるけれども、やはりここでもAmazon_SimpleDB_Model_GetAttributesRequest()と修正しないとエラーになる。すると、$ php GetAttributesSample.php Service Response ================================================================= GetAttributesResponse GetAttributesResult Attribute Name TaqIR Value 13263.37 Attribute Name Tsp509IF Value 156873.06 Attribute Name HaeIIIR Value 118503.70 Attribute Name HhaIR Value 19787.68 Attribute Name AluIF Value 10461.49 Attribute Name BstUIF Value 37521.16 Attribute Name RsaIR Value 46396.47 Attribute Name TaqIF Value 30030.16 Attribute Name MseIR Value 15117.61 Attribute Name Name Value Prevotella melaninogenica; ATCC 25845; AY323525 Attribute Name HaeIIIF Value 83171.25 Attribute Name BstUIR Value 86170.15 Attribute Name AluIR Value 14524.21 Attribute Name MseIF Value 13222.34 Attribute Name RsaIF Value 150073.50 Attribute Name Tsp509IR Value 39937.18 Attribute Name HhaIF Value 32817.05 ResponseMetadata RequestId 00000000-0000-0000-m00m-000000000000 BoxUsage 0.0000098982という結果が返ってくるわけだ。さて、ここから慣れ親しんだSQLを使って情報を取得したい。まずはサンプルファイルを使って練習する。SelectSample.phpというファイルを開いて、
invokeSelect($service, $request);
のコメントアウトを外し、その直前に、$request = new Amazon_SimpleDB_Model_SelectRequest(); $request->setSelectExpression("select ID,Name from mydb where HaeIIIF > '83000' and HaeIIIF < '83200' and Name like 'Desulfomicrobium%'");という2行を入れてみる。ファイルを閉じて実行すると、$ php SelectSample.php Service Response ================================================================ SelectResponse SelectResult Item Name S000008660 Attribute Name Name Value Desulfomicrobium orale (T); DSM12838_ Item Name S000001391 Attribute Name Name Value Desulfomicrobium orale; NY676_ Item Name S000009411 Attribute Name Name Value Desulfomicrobium orale; NY677_ Item Name S000001744 Attribute Name Name Value Desulfomicrobium orale; NY679_ Item Name S000012513 Attribute Name Name Value Desulfomicrobium orale; NY683_ ResponseMetadata RequestId e5cf2e5f-57fd-483b-869c-958e6714ff30 BoxUsage 0.0000597712という結果が返ってきた。速いのか遅いのか、計測して他と比較していないので何とも云えないが、私の目的には使えそうな速さのような気がする。サンプルファイルばかり使ってきたが、いつまでもそれでは仕方がないので、次は自分のスクリプトの中で利用してみよう。
2009-02-03 20:51:39
使えるプラグイン増量中! 直感的にDockから使える『GNOME Do 0.8』という記事をみて、早速インストールしてみた。
Ubuntuでいま使えるGnome Doは古いみたいなので、Installing Doに従ってリポジトリを追加し、アップデートマネージャでアップデート。あとは、Preferencesを開いて、 Select the appearance tab and select Docky as the theme. と、ここに書いてあったのだが、駄目だった……
こんな表示が出てしまうのだ。「Your display is not properly configured for theme and animation support. To use these features, you must enable compositing.」ってどういうことなんだ! と思っていたら、こういう視覚効果の設定を有効にしていなかったのだ。余計な視覚効果は動作を遅くするだけだからと、そんなものは切ってしまっていた。MacOS愛好者にあるまじき方針だが、一人の中に相反する考え方があってもいいじゃないか。そんなことを云っていても事態は改善されないので、「システム」→「設定」→「外観の設定」で「視覚効果」を有効にしたら、Dockyというテーマが選択できるようになった。
実はその前にあちこち情報を探し回っているうちにavant-window-navigatorというのを見つけ、早まってインストールしてしまったのだった。これはMacOSXもどきのデスクトップを提供するというもので、これでもドックもどきが出てくるのである。実はこのときに、「視覚効果」を有効にしなければならないのに気がついたのだった。でも、このドックはどうも妙な動きをする。ゆらゆら動くのである。酔いそうなので外した。
この「ドック」を「ドッグ」と書いているサイトがあったのだが、犬じゃないんだ、これは。しかし、それ以来、画面の下から犬がアプリケーションのアイコンを咥えて飛び上がってくる映像が頭の中で上映されて困っている。
さて、Dockyに戻るのだが、テーマをDockyにしたら本当にデスクトップ下方に、MacOSのドックみたいなものが現れた。いつも下にあって、カーソルが乗るとアイコンがぼよんと膨らむ。実は私はこれが嫌いである。いつもは姿を隠しておいて、カーソルが近寄ったときだけ姿を現し、カーソルが乗ってもいちいち膨らんだりしてほしくないのだ。MacOSと同様、そんなことをさせない設定も選ぶことができて、一安心である。それはいいのだが、「視覚効果」を有効にしてから、ウィンドウを開くときとか、いちいち余計な動きを見せてくれるのが鬱陶しい。さっさと開いてくれればいいのだ。そのための一瞬の遅れがいらだたしい。
アイコンが妙にMacOSXっぽいのは、私が以前そんなことをしてみたからである。これでますますMacOSXに似てきてしまって気持ち悪い。私はもちろんMacが大好きだが、似てりゃあいいってものではないのだと思う今日この頃である。
2009-02-03 20:39:04
「プーチン首相がデルCEOを一蹴」という記事をGizmode Japanで見つけたので、早速 CNNの記事も読んで見たけれども、やはりその時のプーチンの様子も見てみたい。プーチンに打ちのめされてうなだれるCEOの姿とか。
と思ったら、ちゃんとあるのだ。恐ろしい時代になったものだ。
15分もあるけれども、冒頭の発言なのですぐに問題の場面が見られる。ただ、ロシア語と英語がかぶっていて、聞きづらいこと甚だしい。たしかに、アメリカの一企業のトップに助けてやろうかと云われて、ロシアという大国の首相が「ありがとう」なんて云うわけがないだろう。メドヴェージェフなら何と答えただろう。もっと愛想のいいことを云っただろうか。「アップルの方がいい、MacBookが好きなので」とでも云ったかも知れない。
2009-02-03 05:14:53
こんな記事「Ruby 1.9の歴史が始まる」1.9系初の安定版1.9.1正式リリース [ITpro]があった。1.9なのか。Ubuntu 8.10では1.9.0が利用可能になっているようだが、1.8と1.9はどれくらい違うのだろう。Ruby公式サイトにも1.9.1に関する告知が出ている。
Ruby はあまり馴染むことなく疎遠な関係になってしまった。もともとは、ここはそういった新しい言語をいろいろ試していく過程を記しておこうと思って始めたところだったのだ。今でもそういうことはなるべく記して自分で後で参照できるようにしているのだけれども、気がつくと全然関係ないパンを焼く話や水苔の話なんかも書いている。もちろん、誰かに強制されて作っている訳でもないし、内容に関する規定がある訳でもないのだから、問題はないはずだ。
1.9.1がubuntuの公式リポジトリからインストールできるようになったら、これを機会にまたRubyにも馴染んでみようかと思っている今日この頃である。そういえば、昨年末に公表予定と分子生物学会で見たBioRubyはその後どうなったのだろう。
2009-02-02 21:37:06
neuerdings.comの記事64GB und ein Rubinで見つけた、USBメモリである。64GBという容量の大きさにまずは驚くのだが、その姿を見ると普通のUSBメモリとは随分雰囲気が違う。どういうことなんだろうと思ったので、よく読めないドイツ語ではなく、元記事の英語を読んでみることにした。
Gressoというところなのだが、どこにあるのだろう。所在地が明記されていない。私は子供の頃から所在地を明記していないオンラインショップからものを買ってはならないと教えられてきた(嘘である。私が子供の頃インターネットはなかった)が、まあ、このサイトではものは買えないようだ。記載は英語とロシア語だから、ロシアの会社なんだろうか。
黒タイプと赤タイプの二種があって、黒は「200 year old African Blackwood and 18K gold」でできた本体に「white diamond of 0,10 K」を埋め込んでいる。価格は999ドル。この頃は円高だから九万円程度である。たった九万円だ。安いものである。赤タイプは「African Red wood and silver」と、ダイアモンドの代わりにルビーとなっている。価格は同じ。どちらにしようか。私はとりあえず黒を買おうかな。
2009-02-02 21:25:50
Gizmodo Japanで見つけた記事。同じ大きさの本をきちんと並べて、そこに白い紙でカバーを被せ、背の部分に黒の四角を配することで、書棚にピクセルアートを描こうというものである。日本なら文庫本でやるといいだろうと思うものの、こんなことをしたら本の題名が読めなくなって困るのではないだろうか。しかし、本は位置で覚えるものである。あとは持ったときの大きさ(厚さ)、重さ、手触り、そして匂いである。そうすれば、暗闇でも、そして盲目になっても目的の本を手に取ることができる。『薔薇の名前』のホルヘのように、そして『新しい太陽の書』のウルタン師のように。本を管理するとはそういうことなのだ。また、目が見えれば、そのピクセルアートが乱れることで、正しく元の位置に戻していない本を素早く発見することもできる。書いているうちに、実にすばらしいことのように思えてきた。
元記事はこちら。BOOKS HELP TO CREATE ICONS
2009-02-02 21:09:44
Amazon EC2とかS3の情報はたくさんあるのだけど、SimpleDBの日本語の情報がほとんど見あたらない。公開当初のニュースはあるのだが、その後の利用方法などが見つけられない。私の探し方がよくないのだろうか。
仕方がないので、自分で試してみる。EC2やS3といったAWSを利用している(アカウントをすでに持っている)ならば、Sign Up をクリックするといきなり、「Thank you for signing up for Amazon SimpleDB. We have e-mailed you a confirmation of your subscription to Amazon SimpleDB.」という画面になる。確かにメールが来る。すぐに利用できること、アクセスキーが必要なこと、使用法が記されているサイトのURLなどの情報が書いてある。アクセスキーを知るためのURLが書いてあるが、EC2などを利用しているならばすでに持っているので、新しいアクセスキーが必要になるわけではない。
私はPHPを使うので、PHP Library for Amazon SimpleDBをダウンロードして、展開。
Samplesフォルダに入っている.config.php(「.」で始まっているので見えない)にキーを記入。同じフォルダに入っているCreateDomainSample.php を開いて、以下の3行を
// invokeCreateDomain($service, $request);
の下に追加。別にここでなくても、この辺りならいいのだけど。require_once ('Amazon/SimpleDB/Model/CreateDomainRequest.php'); $request = new Amazon_SimpleDB_Model_CreateDomainRequest(); invokeCreateDomain($service, $request->withDomainName('mydb'));本当はmydbなんていう名前ではない。こいつを実行すると、Service Response =============================================================== CreateDomainResponse ResponseMetadata RequestId xxxxxxxx-0000-0000-0000-xxxxxxxxxxxx BoxUsage 0.0055590278こんな答えが返ってくる。ドメイン、すなわちデータベースの構造(テーブルみたいなもの)ができたのだろうか。そこで、同じフォルダに入っているListDomainsSample.phpを開いて、
invokeListDomains($service, $request);
の頭のコメントアウトの印(//)を削除してから、実行すると、Service Response =============================================================== ListDomainsResponse ListDomainsResult DomainName mydb ResponseMetadata RequestId xxxxxxxx-0000-0000-0000-xxxxxxxxxxxx BoxUsage 0.0000071759という返事が返ってきたので、ドメインが本当にできていることを確認できた。くどいようだが、本当はmydbなんていう名前ではない。データ入力は次回。
2009-02-01 22:23:40
相変わらずバナナを使った薄力粉パンである。今回は少しだけ牛乳を減らしてみよう。バナナは皮に黒い斑点が浮いてくるくらい熟した状態のもの。薄力粉 175 g、バナナ 80 g、白玉粉(予め乳鉢で粉末にしておく)10 g、砂糖小さじ1、バター 10 g、牛乳 65 ml という配合にしてみた。牛乳を 5 ml 減らし、バターを倍にした。バターが無塩でないので、塩を添加するのをやめた。
左が普通の強力粉のパン。右がバナナの薄力粉パン。上に膨らまず、横に膨らんでしまった。前よりも捏ねているという感じになったが、もう少し牛乳を減らしてもいいのかも知れない。水分量の調節はいつも難しい。味はいつもとさほど変わらない。バターを増やした分、牛乳をもう少し減らしてもよかったということだろうか。
次こそもっと上手く作るぞと云いたいところだが、薄力粉がなくなった。もうここでは薄力粉パンは作れないだろう。引っ越し後にパンを作ったりできるかどうかは、まだ解らない。
2009-02-01 19:03:27
久し振りの水苔の写真。この写真では一見元気そうだけど、よく見ると白くなっている部分が多くて、死にかけているんじゃないかという気がしてくる。白い石の欠片みたいなゴミも見られる。これには理由があって、この二ヶ月ほど、建物の外壁工事が続いていたのだ。細かい外壁の破片や土埃がわさわさ降り注いできたのだ。水をやっては、破片を取り除く日々が続いた。そのうち、水をたっぷりやってから、ラップで表面を覆ってテープで留めるようにした。その上から大量の破片と土埃が降り注いだ。建物の周囲には足場が組まれ、網が被せられていたから、日差しは弱くなり、それとともに水苔の緑も薄くなっていった。とうとうベランダの防水処理の日が来てしまった。水苔のプランターは足場の上に移され、手の届かないところに行ってしまったのだ。それでも、精一杯腕を伸ばして水を注いでやったが、とても足りない。
もちろん工事の作業員の人の仕事は外壁工事であって、水苔の世話はその中に入っていない。だから、ゴミよけのラップがはがれたまま作業をして水苔が埃まみれになったことで、彼らを責めることはできない。
ようやく幕も剥がされ、近々足場も撤去されるだろう。これから春の光を浴びて元気を恢復してほしいものだ。もしも、緑が恢復せず、少しずつ枯草色の部分が広がって死んでいったら……。そう考えると生きる希望も消えていくような気がする。そうだ、水苔の緑が消えるとき、最後の緑が消えるとき、きっと私の命も……
最新の日記に戻る