EMOBILEの最低基本料は2年契約(新にねん)の場合で、月々1,980円でこれに11MBの無料分が付属というものだったが、これに追加して月々1,000円のスーパラーライトプランが発表された。
イー・モバイル、月額1,000円~の「スーパーライトデータプラン」
なるほど、それで乗り換えようと思って料金一覧のページを見てもどれが最適かよく分からない。「それぐらい自分で計算してみなさい」という勝間さんの声が聞こえてきたのでグラフ化してみました。以下毎月50MBまでの比較(いずれも2年契約を前提とした新にねん)。
これを見るとスーパーライトの勾配が急なのと意外に従来のライトプランのよさも見えてくる。2,3時間Webをみてるとすぐに10MBぐらいいくので意外にライトプランが良い場所につけている。
またヘビーユーザーもしくは自宅のブロードバンド代わりにという人のためには次の2000MBまでのグラフ(注:スーパーライトとライトが完全に重なっています)
これはEMOBILEに加入するときに店頭のお姉さんも言っていたのだが、ギガデータプランはギガを超えると意外に高いので要注意だ。
結局私のおすすめは次の通り。
それにしてもEMOBILEの値付け、実によく出来ていると感心することしきりです。
(追記)yurikoさんの指摘でライトプラン、スーパーライトプランの上限の間違いに気づき修正しました。
The Pragmatic Bookshelf | Advanced Rails Recipesなる本はまだ出版されていない。が、読むことができる。なぜなら私はベータ版の状態でPDFで購入しているからだ。このPDF版を買った人はいち早くベータ版の原稿を読むことができるし、紙の本も買うことが出来る。紙のバージョンの本は出版された後に配送されてくる。PDF版を買った人は最新版が読める上、間違いを見つけると投稿することも出来る。
今日、最新版のPDFが出来たよーというメールが来た。以前、間違いかと思ってErrataのページに投稿していたので早速見てみると、
Mike says:
Actually, it’s a singular resource (map.resource :session), so in the form tag you use the singular form.–Daitoku Saitou
なるコメントとともにちゃんと直っていた。ちょっと嬉しい。日本の出版界も取り入れればいいと思うんだけど、PDFの形式で出版前に代金をとって販売というのが日本の出版業界では何かの問題になっているのかも知れないですね。
昔からなんでしょうか?常識なんでしょうか?もっと早く知りたかった…。
Javascriptでフックしてるんだろうか。emacsの信者はこっそりとインプリしてるんでしょうね。そういえばAIXの管理ツールのsmittyもemacsバインド使えますな。
(追記)Emacsバインドになっていたのは、Mac版Firefoxだったからのようです…
週末に見つけて一気に読んでしまったブログが「4.5畳の恋人。」である。IT企業勤務・勇太郎が同棲している一級建築士・夏子との日々を書いた日記だが、普通でないのはこの二人4.5畳のワンルーム・マンションに住んでいたこと。
4.5畳って一人でも十二分にせまいのだが、それを二人で住むとありえないぐらい狭く光ファイバーの工事やガスの点検の人もドン引きしてたらしい。麻布十番だというのに家賃は5万円。ちなみにこのブログ本にもなっている。
あと特徴的なのは作者の勇太郎氏はどMで同居している夏子はどSなこと。夏子はいつもいつも無茶なことを勇太郎に押し付けるのだが勇太郎はそれなりに楽しんでいるのが文面から伝わってくる。
ブログなので時系列に読もうとすると逆順になり、読みにくいのだがそれでもおすすめのブログです。 暇なときに一気読みませう。
以前、無邪気にも WordPressの漢字コードをEUC-JPからUTF-8にしたよ などと書いていたが、UTF-8になっていなかったことが判明。以下、自分用メモ
それにしてもライトデータプランって11MBまでは1,980円なんだけど2、3時間普通に使ったら10MBぐらいいっちゃうんで、一日でも使ったら無料分は超えちゃう。まあ上限は5,480円なんだが。
長時間いたのでおかわり自由といううわさのプレミアムローストコーヒーの宣伝しておきます。高級アラビカ豆をブレンドしておりかなり本格的な味にもかかわらず100円とのこと。MacBookに付属のカメラでとりました。考えてみたらこのまま動画チャットもできるわけか。うーむ、意外。
シリコンバレー在住の渡辺千賀さんが作っている英語勉強用サイトListen-ITおすすめです。このページにある”add to iTunes”をドラッグしてiTuneのPodcastに放り込めば登録できます。そうすると勝手にあなたのiPodに入るので電車などで暇なときに聞いてみましょう。
おすすめな点としてはだいたい次の3点
しかも普通に面白いです。例えば「Listen-IT: 元IBMのDave Bradleyスピーチ」のレッスンをを聞いていると
キモとなるちょっと聞きづらいところは多分aboutですね。そこだけゆっくりのバージョンで聞いてみてください。
<オリジナルのアバウッが聞こえる>
なんじゃこりゃって感じなんですけれどもこれでaboutです。
といった感じ。しかもこの後、2分ぐらいaboutの発音方法について教えてくれます。面白すぎて電車で聞いているとニヤニヤしてしまうので要注意です。
題材にするスピーチも全部IT系なのでスピーチの内容もへぇと思うこともありIT業界の人には激しくおすすめです。無料ですし。またListen-ITのホームページで読める 英語よもやま話も良い感じ。読んで「へぇー」と思った表現を同じ日に見かけたことあります。
TechCrunch Japanese アーカイブ » ヤフーが検索にHadoop採用、グーグルっぽく脱皮を図るという記事で見つけたのだが、テラの上はペタで普通に5PBなどと記述されているようだ。5PBはヤフーの検索エンジンのハードディスクの合計量。250GBのHDDで5000*1024/250=20480個か。うーん、想像つかん。
想像つかないといえば、学生のころはじめてアルバイトして買ったHDDが130MBで13万だったのに今では1TBのドライブが3万円。15年で約8,000倍、価格が1/4になっているので、15年後には8PBのHDDが1万きるとか。さすがにそんなにいらんでしょと思いそうになる。そういえばここ最近は仕事で使っているパソコンのHDDも満タンにならなくなってきた。
そういえばCPUも今思えば、Windows3.1がもたもたしていた時代にはPentium 90MHzなどがさっそうと登場するとDOS/V Magazineなどに「阿修羅のような速度!」などと表現されており、私などは心の底から「欲しい!」と思ったり、AMDの5×86なるCPUのマレーシア製のxx週のロットはクロックがx倍まで上げれるとの情報でいそいそと日本橋(大阪の電気街)に買いに行ったりしてたが、最近、そんなパッションは1ミリも残っていない。むしろパーツ屋では速度よりもより消費電力の少ないCPUを買ったり、一番安いHDDを買ったりしている。
閑話休題。さて、この記事には比較としてGoogleの資料も載っているのだがこれによるとGoogleが1ヶ月にクロールするWebサイトの合計が400PBなのでもうあと2,3倍で次の単位に切り替わってしまう。SI接頭辞 – Wikipediaで調べたところペタの次はエクサとのこと。エクサですよ、エクサ。私のIMEは最初”絵草”と変換してました。ちなみにエクサの次はゼタで、これまた”是他”と変換されました。さすがに想定されていないのでしょう。ああ、やっぱりATOK買おうかなー。
勝間本に「会計は簡単な割りに役に立つので勉強したほうがいい。出来たら家計簿を複式簿記でつけてみよう」とあったので、前に買ってみたものの長い間読んでいなかった簿記の入門書を読んでみた。この本、ほんとうに分かりやすくサクッと読めたのでおすすめです。
この本を読んで簡単な仕訳は出来るようになったし、複式簿記の必要性も理解できた。逆に会計というものの限界が分かった気がする。会計って値付けが難しいことに対して弱いと思う。
例えばAppleのスティーブ・ジョブスのiPhone発表の基調講演でApple社の価値があがった場合(実際株価も少なからず影響をうける)、この基調講演はどのように仕訳すればいいのだろうか?会計的には単なる宣伝活動なので、イベントにかかった経費を広告宣伝費という経費で計上して終わりである。もちろん資産はまったく増えず、数字に表れるのはその後のiPhoneの爆発的な売り上げによってのみである。
これはむしろ会計というものは数字で計れるものだけを緻密に集計することによりスティーブ・ジョブズの基調講演など数字で計れないものをメジャーするためにあると考えるべきなのではないだろうか?などと思う今日この頃であります。
勝間式によると集中力=体力とのこと。というわけで、今日は帰りに最寄り駅の1駅前で降りて歩いて帰ってみた。隣の駅にはほとんどいったことがないので、オリジン弁当やちょっとお洒落なイタリアンなど意外な発見もあったし面白かった。皆さんもいかがですか?
筆者 「鉄道が本気出したらこんなもんじゃない!満員電車なんて10年で東京からなくすことができる」
大徳 「でも田園都市線なんて超過密ダイヤだし、車両もこれ以上伸ばせないしさすがに無理でしょ」
筆者 「打つ手はいくらでもある。信号システムの改良、総二階建て車両の導入、鉄輪式リニアなどを導入すると4倍ぐらいまで増やせるよ。」
大徳 「でもそれらの施策をするためにはかなりの予算が必要じゃないの?そんなに余裕あるの?」
筆者 「それは電車の運賃のイノベーションで解決するのさ。公共機関ということで運賃は不当に安く抑えられているけど、需要に見合ったプライシングによりもっともっと利益が上がるようになるよ。その利益を投資すると満員電車なんてなくすことができるよ、きっと」
大徳の脳内の筆者とのコミュニケーションはだいたいこんな感じ。勝間本には、「本の値段と内容は比例する。安い本はそれなりの内容」とあったが、ひさびさに充実の新書を見つけた。筆者の鉄道に対する現状とビジョンのギャップに対する怒り、「鉄道が本気出したらすごいよ!」というのがびしばしと伝わってくるし、分かりやすいのでとても面白い。この内容で760円はとてもとてもお買い得である。最近では新書などはかなり速読で30分ぐらいで読んでしまうのだけれども、ひさびさにじっくりと熟読してしまいました。
前にRESTful Webサービスの感想を書いたので応募していたのだが無事に当選してプレゼントが届きました。Tシャツとオライリーカレンダー。どうもです>リコーの人。
Web Tech Blog スタート記念「RESTful Web サービス」Tシャツ・オライリーカレンダープレゼント
夏になったら何かのイベントに着て行こうかね。
ATOKなら3倍速く打てる!を読んで少し欲しくなった。本当にそんなにMS-IMEと差があるんでしょうか?勝間式だともっとアグレッシブで親指シフトとのこと。
だが、私はポリシーとしてどのパソコンを使っても素でそこそこ使えるようにカスタマイズは必要最低限にしているのでよっぽど不便でなければMS-IMEのままでいいなー。
[追記] あれから数日、自分の漢字入力を観察したところMS-IMEの変換機能をほとんど信じておらず文節毎に変換しており、カタカナに至ってはCtrl + Iで直接カタカナに変換していたことが判明。もし文単位で入力してもほとんど誤変換が無いのであれば値段分の価値はあるかも。
この本、グループウェアなどで有名なサイボウズという会社を起業した青野さんが書いたよくある仕事のハウツー本なのだが、タイトルからも分かるようにちょっと力が抜けているのでさらっと読める上、読後感もさらっとしたものだ。
で、この本で青野さんが絶賛していたのが「ほぼ日手帳」である。この手帳、1日1ページとなっており当然ながら全部で400ページぐらいとなりちょうど文庫本ぐらいのサイズで手帳としてはやや大きい。が、青野さんのあまりの絶賛ぶりに買ってみて去年の12月から使っているがなかなか良い感じ。(12月は1ページ2日だった)
私の書く字は相当汚いので普通の1週間が1ページに詰まっている手帳だとほとんど書きたいことも書けない。その点、この手帳なら、レコーディングダイエットのために食べたものをメモしたり、行動を記録したり、予定を書いたりいろいろしてもスペースはまだまだ余裕だ。通常の手帳に比べて自由度が圧倒的に高い。
また手帳としてもよく出来ていて、しおりが2つ(WeeklyとDayly用?)あるし、紙質もいいし、あとなんといっても付属の3色ボールペンを手帳に挿すと手帳が開かないようになるのが最高。ボールペンを探すこともないし、かばんの中で手帳が開いてしわくちゃってのも避けられる。
欠点としてはやはりちょっと重いことだが、1日1ページのメリットとのトレードオフを考えると問題ない。今なら4月始まりのほぼ日手帳2008 Springがあるので気になった人はぜひ。カバーの色の種類もいろいろあって楽しいです。
rails 1.8.6以上が必要です。debianのstableは1.8.5なのでいったんrubyを全部抜いて
sudo apptitude purge ruby1.8
testingの(1.8.6)を入れます。
sudo aptitude install ruby1.8/testing
sudo aptitude install ruby1.8-dev/testing
sudo aptitude install rubygems/testing
sudo gem install thin
まだMongrelみたくクラスターを起動するような機能はないようなので、自作する必要があるようです。
キーボードの上にある数字ってよく見ると左から1,2,3,…である。だが、プログラマー的な視点から見ると0,1,2,…が正しいのでは?とふと思った。それだけ。
そういえば前回のRails勉強会でRailsアプリを公開する際のノウハウを聞けると思って参加してみたものの詳しい人がおらず分からずじまい。ネットでいろいろと調べたので晒しておきます。間違いを見つけたら教えてください。
予備知識は以下の通り。
調べているうちに最初に気づいたことは「1つのRailsインスタンス(1つのRubyプロセス)が同時に処理できるHTTPリクエストは1つだけ」ということである。びっくりした。念のため2つのブラウザーを立ち上げて、長い間sleepするコントローラーにリクエストを投げると、もうひとつのブラウザーでは簡単なリクエストにもかかわらず1つめのブラウザーのsleepが終わるまで待たされたので間違いないようだ。The Futures of Ruby Threadingのささださんコメントにもあるが、RubyのVMではGlobal Interpreter Lock (GIL)を取得するので同時に動けるスレッドは1つだけだ。この制限は現行のRuby1.8からRuby1.9(YARV)になってユーザーレベルスレッド(グリーンスレッド)からカーネルスレッドになっても同じである。
As you know, YARV support native thread. It means that you can run each Ruby thread on each native thread concurrently.
It doesn’t mean that every Ruby thread runs in parallel. YARV has global VM lock (global interpreter lock) which only one running Ruby thread has. This decision maybe makes us happy because we can run most of the extensions written in C without any modifications.
では複数のリクエストを同時に処理したい場合はどうするのだろうか?これには複数のRubyプロセスをあらかじめ起動しておき複数のプロセスで処理することで対応する。1プロセス=1スレッドというわけだ。このあたりは1プロセス=複数スレッドというJavaの世界とは異なる。最初はいまどきプロセス単位で並列かよとも思ったが、よくよく考えてみたらWebアプリは並列して動かしてもお互いの処理は独立していてお互いに協調する必要はほとんどないのでプロセス単位の並列化でもいいのかも知れない。Rails2.0からセッションもCookieStoreになったし。で、複数プロセスを起動するための方法としては大きく分けて2つあり、仮にFastCGI方式とMongrel方式と呼ぶことにする。
まず比較的トラディショナルな方式がFastCGI方式だ。FastCGIはPerlなど別のLL言語でも使われる方式で、あらかじめ複数のRubyプロセスを常駐しておいてそれらをフロントのWebサーバーから呼び出す。Webサーバーとしては、Apacheだといろいろと問題があるらしくRailsの世界ではLIGHTtpd(通称Lightly)という軽量Webサーバーが使われるのが一般的なようだ。Webサーバーと常駐しているRubyプロセス間の通信はソケット通信で行う。LIGHTtpdは静的コンテンツも高速に処理できるためLIGHTtpd+FastCGIで完結し割とすっきりな構成となる。
もうひとつの方式が最近メジャーになりつつあるMongrel方式だ。これは、MongrelというWebサーバーを使って1ポート=1Mongrelサーバー=1Rubyプロセスで複数のMongrelサーバーを起動する。例えば5並列で処理したい場合、5つのMongrelサーバー(5つのRubyプロセス)を起動してポート番号50,000から50,004で待ち受けて処理する。ただMongrelサーバーの作者はRuby on Railsはゲットーだにあるように開発をやめようとしているので、ポストMongrel時代のWebサーバにあるように最近ではThinなど別のサーバーが注目されている。
Mongrel方式の場合、複数のポートで処理を待つので外部に公開する場合はMongrelだけでは不十分で、1つのポートで待ち受けてリクエストを複数のMongrelに分配するリバースプロキシー+ロードバランサーが必要になってくる。このロードバランサーにはいろいろとあって一番お手軽なのはApacheのモジュールのmod_proxy_balancerだ。他にもこの種のソフトにはPoundやSwiftiplyやnginxなどお腹いっぱいの充実ぶりだ。
結局どの方式にしてもそれなりに複雑であり、フロントとバックエンドの組み合わせとなると無限にある。この状況に対して、No True “mod_ruby” Is Damaging Ruby’s Viability On The Webなどで「だからなかなかRubyのブログや掲示板が流行らないんだ!」と問題提起されている。ちなみにこのページはRubyのWebアプリのトポロジーに複雑さにとどまらずスレッドの話などの議論も行われており興味深い。またこのページの作者による簡単にRubyアプリをデプロイをめざしてSwitchPipeなる試みもある。
さて気になるパフォーマンスはくまくまーの人のブログにクアッドコアでの測定結果がのっているが、これによると意外にLIGHTtpd+FastCGIが一番のようだ。またすでにApacheを動かしている場合はApache2 + mod_proxy_balancer + Mongrelが一番素直だと思った。
またApacheなどからバックエンドに飛ばす場合のURLのパスの書き換えはどうするの?問題についてはこれまたくまくまーの人のブログにある。このエントリーは面白いので最初から最後までじっくりと読むことをおすすめします。
でもこれら以外にまったく違う形式としてwarにしてJRubyアプリとしてJavaのアプリケーションサーバーにデプロイというのもあるそうですが、それはまだ調べ中なのでまたの機会に…。
はじめたときはかなり絶賛していたわりに、最近ではすっかりやらなくなったWii FITであるが、WindowsからBluetooth経由で接続して体重計として使えることを発見。
窓の杜 – 【NEWS】“バランスWiiボード”をパソコンに接続して体重計にできる「WBHealthMeter」
早速、いそいそと昔にかったBluetoothコントローラーHNT-UB02を取り出してきてやってみたところ、ちゃんと体重が量れる。My Document以下の”WBHealthMeter_log.txt”に出力されるのでこのファイルをモニタリングして自動的にグラフを更新するアプリでも作るかな。
ブログを書くときにリンクするとき、まずタイトルだけコピペして今度はURLをコピペと二度手間になる。複数のバッファを持てるクリップボードのフリーウェアで少しはましになるのだが、それでも面倒。
で、次の記事を読んでMake Link入れてみました。
[を] CopyURL+ は忘れて Make Link にする (Firefox)
めちゃ便利で、参照したいページの何も無いところで右クリックしてMake Link、HTMLを選ぶだけでリンクがクリップボードに入ります。後は、エントリーのページでCtrl+Vを押すだけ。
RubyでWILLCOMから取り出した電話帳データのCSVの処理を書いたのだが、ちょっと面白い処理があった。読み込んだCSVは読みとかグループとかいらない情報が多いので、電話番号とかメアドとかいる情報だけ抜き出したい。次のような何列目に必要なデータがあるかを格納したハッシュとCSVから抜き取った2次元配列から、
target = { :name => 1, :phone => 3} csvarray = [["hoge", "", "070-1111-2222"], ["huga", "", "080-2222-3333"]]
次のようなハッシュの配列に変換したい。
[{ :name=>"hoge", :phone=>"070-1111-2222"}, { :name=>"huga", :phone=>"080-2222-3333"}]
最初に書いたのがこれ。
# pattern 1 Array#each + Hash.each a = [] csvarray.each do |r| h = {} target.each{|k,v| h[k] = r[v-1]} a < < h end pp a
Array#mapを使ってこれを1行にするとこうなる。
# pattern 2 Array.map + Hash.each pp csvarray.map{|r| h = {}; target.each{|k,v| h[k] = r[v-1]}; h}
で、それをinjectでやる方法を見て感動して改良したのがこれ。
# pattern 3 Array#map + Array#inject pp csvarray.map{|r| target.keys.inject({}){|h,k| h.merge k => r[target[k]-1]}}
せっかくのハッシュなのにキーで抜いてきてまたブロック内でまたtarget[k]にアクセスしているのがちょっと残念なのでHash#mapを使ってみる。2次元配列をflattenで1次元配列に変換して*で多重代入にしてHash[]でハッシュを作成している。
# pattern 4 Array#map + Hash#map pp csvarray.map{|r| Hash[*target.map{|k,v| [k, r[v-1]]}.flatten]}
苦しい、苦しいです。Hash#injectなんてあるのかよと思ったが、HashもEnumerableだからあるんです。ブロックパラメーターpにはkeyとvalueが配列で格納される。
# pattern 5 Array#map + Hash#inject #1 pp csvarray.map{|r| target.inject({}){|h,p| h.merge p[0] => r[p[1]-1]}}
これはpを(k, v)で受ければよさそうということでたどり着いたのがこれ。美しい!
# pattern 6 Array#map + Hash#inject #2 pp csvarray.map{|r| target.inject({}){|h,(k,v)| h.merge k => r[v-1]}}
でも、結局pattern 2が一番長さが短いのね。ちょっとがっくり。これだけでも結構遊べました。Rubyって面白いですねー。