Home

@masuidrive blog

本をシェア出来る喫茶店があったらいいな

  • 2009-08-18 (Tue)
  • life

Photo by kana76

 日本に居るときから、原稿持って温泉行ったり、ノートパソコン抱えて沖縄行ったり、ノマドな生活していました。

 シアトルはスターバックスのお膝元って事もあってか、カフェがとても多く、今も週3-4回は気分転換もかねてMacBook持って行ってます。

勉強や仕事を第一の目的として行く場所だけど
おいしいコーヒーが飲めて
目的がただのリラックスでないところでゆるーい一体感のような空気がある場所。
みんなある種の専門家なので
常連同士で情報の交換があってもいい。
息抜きのおしゃべり相手がいることも仕事への集中力を高めるし
プロフェッショナルな人と接する機会は
自分を高めるモチベーションにもつながる。
コラボレーションから何かが生まれるかも知れない。
仕事するのにオフィスはいらない ノマドワーキングのすすめ – 自立Logbook

 まだ、この本は入手出来てないんですが、こっちでカフェに居ると、結構な比率でラップトップを出して仕事しています。
こちらのほとんどのカフェは、電源もwifiも自由に使えるので何時間もいる人が結構います。

 それで、ふと思ったんですが、技術書をシェアできる喫茶店があったらいいですよね。本は寄付とかでまかなうとして。
 蔵書の管理は、Webサービスで適当な物を探せばいいですし、結構いけるんじゃないかなぁ。

DataMapper 0.9.*のassoc+countのバグが0.10.0-RC1で直ってる

DataMapper 0.9.*には、associationでcountを使うと余計なSQLが生成され非常に重くなる問題があるのですが、これが先日リリースされた、0.10.0-RC1で修正されていました。

参考: 「DataMapperに深刻な不具合 – Hello, world! – s21g

直すまで結構長く掛かったけど、DataMapperを使っている人がホントにいるのか、不安になるなぁ。

ダウンロードは下記から
http://github.com/datamapper/dm-core/downloads

iPhone 3.0のMobileSafariでコピペを無効にする方法

iPhone 3.0には待望のコピペ機能が付きましたが、MobileSafariの上では、長押し=コピペだとちょっと不便な事があります。

その場合は、下記のようなCSSを指定する事で、コピーの吹き出しが出なくなります。

body {
     -webkit-user-select: none;
}

快適な机上環境を作ろう

 この記事は2008年の5月に書いてずっとDraftの中に入ったままになってました(汗
いまはちょっと違う所もありますが、そのまま公開することにしました。

 IKEAと5万円で作る快適仕事場が好評だったので、調子に乗って机の物編も書いてみることにしました。でも、IKEA編ほどおもしろくないなぁw

 机の上の基本は、見えるところに物を置かない、でも出来るだけのものを手の届く範囲に置くです。
約2畳のスペースの中で快適に仕事をするために、ほとんどの事をこの環境の中でこなせるようにしています。

 まずは、基本のキーボードとマウス。

 キーボードは、無刻印のHHKBを使っています。キーボードは好きなので沢山持っているのですが、やはりキータッチが一番いいのはこれでした。値段も高いですが。
 一つ失敗したのは無刻印。なぜかお店に言ったときに無刻印が格好良く見えて買っちゃいましたが、ブラインドタッチも出来ない私には重荷で、打ち間違いにより前よりタイピング速度が落ちたような気がします。
 しかし、無刻印なおかげで机に置いたときに、うるさくない感じはやっぱり好きです。

Continue reading

机の下に本棚を作ってみた

 あまりにブログを更新していないので、たまには。

 USに引っ越して1年。IKEAで作った仕事場は相変わらず快適なのですが、やっぱり本を置くところが少ないのが難点。

 サイドデスクの上に本立てを置いて居るんですが、数が置けないし、あまり見栄えも良くない。

 というわけで、デッドスペースを探して本置き場を作ることにしました。

 すぐ本を出せるところでデッドスペースといえば、の下。
MIKAELは背板があるので、ここと膝の間がちょうど新書分ぐらい空いてます。ここに板を通せば、ある程度本が置けそうです。

 そこで、今度はHOME DEPOTへ走って、L字ブラケット2つと、細い47インチ(1200mm)の板を買ってきました。
MIKAELの幅は1400mmなので、ちょっと小さいですが、切って売ってたのがこのサイズだったので、これにしました。

 家に着いたら早速ブラケットを膝の当たらない高さに仮固定してから、ドリルでビズを打ちました。
線も引かなかったので、あっさり15分ぐらいで作業完了。IKEAの家具は安いので気軽にビスを打ち込めて良い感じです。

MIKAELに本棚自作 MIKAELに本棚自作 MIKAELに本棚自作

 高さは新書に合わせているので、それ以外の本は寝かして置いてます。

 本を机の上に並べるとどうしても雑然としがちだし、本棚は圧迫感があるので置きたくなかったので、これはとても良い感じです。
MIKAELを持っている人には、かなりおすすめです。

 あとは、このサイトを見習ってサイドデスクの中にペグボードを入れて整理したいなぁ。

EventMachineの速度が安定しない[解決]

Photo by the_amanda

 PhotoShareをRailsから、EventMachineベースの自作フレームワークに全面書き換えをしているのですが、大体作り終わりベンチマークを取っていると、概ね1msで処理しているのに、時々、数百ms掛かることがありました。

 初めはGCとか疑ったんですが、GC.disable実行しても状況変わらず。絞り込みをしていると、どうもEventMachineで詰まって居るっぽい。

 EC2上で動かしていたので、手元のマシンで試したり、LinuxじゃなくてFreeBSDで試しても同じように詰まる。同じEventMachineを使っているThinを使って、ベンチマーク取ってみても、100回に1回ぐらい、やたらレスポンスが遅い時間があるのを確認できました。

 ApacheBenchやhttperfは、平均値は取れるけど、個別のレスポンスタイムを出力する方法が見つからなかったので、JMeterに初挑戦。HTTPだけじゃなくて、いろいろなプロトコルに対応しているのがいいね。

 色々試してみると、HTTPに限らずTCPソケットサーバを作ると発生するらしく、こんなコードでも、1000回に1,2回、接続した後1000ms近く待たされることがあることが分かりました。

 MLとか探しても、同じような現象の話が出てきていない・・・。探し方が悪いのか、じつは誰もあまりまじめに使ってないのか・・・・。

 ここら辺まで原因がつかめたところで、takiuchi先生にご相談

 結局カーネルまで追って、変にselectを呼び出して居ることが判明。takiuchi先生さすが! 自分もカーネルとか追うように色々準備しておかないと駄目だなと反省。

 このコードを元に検索してみると、迷ったりしていることは分かったけど、このパッチを当てると、接続が詰まる状況が改善。

 ここ以外にも、微妙なコードが見られるので、引き続きコードを追ってみよう。

 年末の忙しい時期なのに、手伝ってくれてありがとうございました!>takiuchi先生

Webでの非同期処理を考えてみる [長い記事だけどコメント求む!]

Photo by harry harris

 いまPhotoShareのサーバの実装を大きく変えようとして悩んでいます。 (参考: Life is beautiful: マルチスレッド・プログラミングの落とし穴、その2)

 Rails 2.2でThread safeになるとか、NeverBlockで12倍速くなるっていう話もあるんだけど、負荷が上がればレスポンスが悪くなるのは、どうしようもない。マシンを増やせば解決できる部分もあるけど、マシンを増やせばコストは上がる。

 Life is beautifulで書かれていますが、確かに全部の処理を同期的に行う必要はないんですよね。

 PhotoShareでも、既にいくつかのページは非同期にerbを生成して、それをRailsとerubisで読み込んで実行しています。
 しかし、Railsだけではこういった非同期の処理やviewの一部を事前に生成するという処理ができないので、この処理は別途プラグインを作って実現しています。

高速化の為にはキャッシュを使おう

 Railsで高速化を考えていくと、特にキャッシュが重要になります。たとえばブログエンジンで、RSS Feedを生成するアクションがあったとします。

Continue reading

Javascriptだけでコンテンツの言語を切り替えするスクリプト

Photo by keepps

 前回のブラウザの言語をJavascriptから調べるを元に、ページのメッセージを言語切り替えするスクリプトを作ってみました。

 実際のページは、これです。

 一つのHTMLの中に複数の言語のメッセージを書き、それぞれの言語をCSSのクラスで指定することで、ブラウザに合わせた言語のみが表示されるようになります。

 日本語版のブラウザで見ると「こんにちは世界」、英語版やポルトガル語版のブラウザで見ると、それぞれの言語でメッセージが表示されます。
 デフォルトの言語は英語に設定しているので、日本語やポルトガル語以外のブラウザで見た場合は、英語のメッセージが表示されます。

 このスクリプトでは、JSでブラウザの言語を取得したあと、表示するCSSを切り替えることで、メッセージ切り替えを実現しています。使い方などはページのソースを参考にしてください。
 設置する前には、CSSとこのスクリプトはなるべく先頭で実行するようにしてください。あまり下の方で読み込むと画面がちらつく可能性があります。

 言語の切り替えするなら、Apacheのcontent negotiationでいいじゃん!ってご意見を複数から頂いたのですが、Railsのpage cacheで使いたい、複数言語のHTMLを作ると修正が面倒なので、1つのHTMLで全部の言語を記述したい、Google翻訳APIとも組み合わせたいなぁ、などの理由で作ってみました。

 なお、動作確認は、FF3 (3.0.1), FF2 (2.0.16), IE6 (SP2 6.0.2900), IE7 (7.0.5730), Safari3 (3.1.2), iPhone Safari (OS 2.1), Opera9 (9.27), Google Chrome (0.2.149.30)、Wii ブラウザで取れていますが、Windows MobileのIEやOperaでは動かない事を確認しています。

 Window MobileのIEやOperaでJavascriptのデバグの方法をご存じの方は教えていただけますか?

Continue reading

ブラウザの言語をJavascriptから調べる。

Photo by midnightglory

 多言語対応のサイトを作っていると問題になるのが、メッセージの切り替えです。PHPやRailsを使っている場合は、HTTP_ACCEPT_LANGUAGEを見てメッセージ生成を切り替えれば良いのですが、静的ファイルの場合は、そうは行きません。

 そこで、今回はJavascriptだけでブラウザの言語を取得する方法を調べてみました。

 ググっていると、ブラウザ依存ですが取得する方法が見つかったので、各ブラウザで検証した所、navigator.browserLanguage、navigator.language、navigator.userLanguageのいずれかで取得できることが分りました。

 ただ、この値はブラウザのデフォルト言語環境のなので、HTTP_ACCEPT_LANGUAGEとは違う値が返ってきます。たとえば、日本語OSに英語版のFirefoxを入れている場合は、”en”が返ります。

 それでまとめてみたのが、このbrowserLanguage()です。
実行すると”en”や”ja”などの言語情報が返ってきます。

Continue reading

PhotoShareで新しいiPhoneにデータを移行する方法

Photo by Miss Indi Pop

 PhotoShareは誰でも簡単に使えることに力点を置いているので、ユーザ登録なしで利用できる、というのを特徴にしています。

 しかし、新しいiPhoneを買った場合など、PhotoShareで新しいiPhoneにデータを移行したい場合、通常のサービスであれば、アカウントを入力するのですが、PhotoShareではアカウントがありません。

 そこで、PhotoShareでは、登録したメールアドレスによってデータの移行ができる様になっています。

  1. 旧iPhone: メールアドレスを登録する (メールアドレスの登録は、トップメニューの「設定」から行えます。
    )
  2. 旧iPhone: PhotoShareを削除する
  3. 新iPhone: PhotoShareをインストールする
  4. 新iPhone: 旧iPhoneと同じメールアドレスを登録する

 iPod touchからiPhoneに移行する場合は、「旧iPhone」を「iPod touch」に読み替えてください。

 これで旧iPhoneから情報が削除されたので、旧iPhoneにPhotoShareをインストールすると、また新しいアカウントとして使うことができます。

 PhotoShareでは端末IDを元にしているので、修理などで端末が交換された場合にも、アップした写真などが見えなくなってしまうことがあります。その場合にも、メールアドレスを登録することで前の情報が新しいiPhoneにも引き継がれます。

 データの移行には、メールアドレスの登録が必須になりますので、なるべく登録するようにしてもらえると助かります。

 旧iPhoneでは、データ移行後、アプリを一度削除すれば、すべての情報は削除されますので、譲渡などを行ってもPhotoShareの情報が渡ることはありません。

Home

Search
Feeds
Meta

Return to page top