徹夜〜短時間睡眠〜勉強会

 昨日は学生時代に所属していた大学合唱団の定期演奏会だった。
 JR川口駅前にある「川口総合文化センター リリア 大ホール」で18時半開演。20時45分頃に終演したのだが、打ち上げは池袋で22時半から。
 予定の終演時間が21時過ぎだった、という話なのだが、いったいどうやったらそんなにずれるのやら。
 打ち上げが22時半開始ということは、打ち上げの終了は24時半。もちろん終電は既にない。ということで、久しぶりに朝までコース。

 7時頃に家に帰り着いたら、気配を感じて娘が身を起こした。
 「おはよう。そしておやすみ」と就寝。
 11時前に目を覚ましたら、リビングで息子が「お父さんはまだ起きないの?」と妻に聞いていた。
 そそくさと身支度を調え、11時半前には家を出て勉強会へ。30分も一緒にいられなかったので、娘は大泣き、息子も泣きそうな顔だった。悪いなぁと思いつつ出発。

Dropboxでファイル共有

 そもそも「Dropbox」とは何なのか。

紹介記事:
PCで仕事”を速くする:第20回 Dropboxですべては解決してしまった - ITmedia Biz.ID

 知らない人のために簡単に言えば、複数のPCでのデータ同期が簡単に行えるサービスで2GBまでは無料で使用出来る。
 これまでのデータ同期と言えば同期ソフトを使ってUSBメモリにデータを入れ、そのUSBメモリを別PCに刺した時にそのPCと同期を取る、というものが主だった。

 しかしDropboxはひと味違う。
 ソフトをインストールすると「マイドキュメント」(Vistaの場合は「ドキュメント」)フォルダ内に「My Dropbox」というフォルダが作成され、この中に入れたファイルは自動的にサーバと同期が行われる。もちろん編集すればその結果も同期される。

 何が特筆すべきかと言うと、「同期」作業がリアルタイムで全自動に行われる事だ。
 よくある状況として、「急に出かける事になって同期作業を行ったが終わるまでに数分かかる」という場面があるだろう。これが面倒くさくて、「同期」を行わずに出かけてしまう事もあるはずだ。
 しかしDropboxなら「リアルタイム」で同期を行ってくれているので、何も考えずに出かける事ができる。ノートPCならそのまま持ち出せばいいし、別な場所にあるPCを使う場合にはDropboxのソフトをインストールして使ってもいいし、ブラウザからアクセスしてファイルをダウンロードする事もできるのだ。(この場合は自動的に同期してはくれないが)

 さらにDropboxはバージョン管理もしてくれる。過去の時点でのファイルも取り出せるので、うっかり上書き保存してしまった時などに便利だ。もちろん消してしまったファイルを復元する事もできる。

 しかも年間$99.99(月払いなら月額$9.99)を払えば、容量が2GBから一気に50GBまで増える。これだけあれば、多くのファイルを考えなしに放り込んでもほぼ大丈夫だろう。

 そんな素敵なDropboxだが、「Public」というフォルダにファイルを置く事で「ファイル共有」を行う事ができる。(他のDropboxユーザを指定したファイル共有も可能)
 この場合、まずブラウザでDropboxのサイトににアクセスしてログインする必要がある。

  1. 「Public」フォルダ内にある目的のファイルを表示する
  2. 目的のファイル名にマウスを重ねると右側に▼が表示されるのでクリックする
  3. 「Copy public URL」をクリックする

 これでそのファイルへアクセするURLが表示されるので、それをコピーしてメールなりBlogなりに貼り付けて知らせればファイル共有ができる訳だ。

 URLは基本的に「http://dl.getdropbox.com/u/ユーザNo/ファイル名」となる。もし「Public」フォルダ内にフォルダを作っていた場合には「http://dl.getdropbox.com/u/ユーザNo/フォルダ名/ファイル名」となる。
 このルールが分かっていれば、以後はいちいちブラウザからアクセスしなくてもURLを知る事ができるので覚えおくと便利だ。

Dropboxでファイル共有した際の、拡張子による挙動の違い

http://dl.getdropbox.com/u/ユーザNo/ファイル名.jpg
→ jpgファイルがそのまま表示される。

http://dl.getdropbox.com/u/ユーザNo/ファイル名.js
→ ファイルの内容がテキストとして表示される

http://dl.getdropbox.com/u/ユーザNo/ファイル名.php
http://dl.getdropbox.com/u/ユーザNo/ファイル名.cgi
→ ファイルのダウンロードダイアログが表示される

http://dl.getdropbox.com/u/ユーザNo/ファイル名.html
→ HTMLファイルが表示される (通常のWebページと同じ)

 つまり単なるHTMLファイルを表示させたいのであれば、レンタルサーバを用意しなくてもDropboxだけでOKという事になる。
 まぁ広告が入ってもいいのであれば無料のレンタルサーバがある訳で、そこにあまり価値はないと思うが。

 なお「index.html」を置いておいて「http://dl.getdropbox.com/u/ユーザNo/」にアクセスしても404エラーになる。
 「http://dl.getdropbox.com/u/ユーザNo/index.html」とファイル名まで記述すればOK。

Dropboxで特定ユーザとファイル共有した際に、どちらのユーザの領域を消費するのか

 結論から言うと「どちらの容量も消費する」
 20MBのファイルを共有すれば、双方のユーザの領域が20MBずつ消費される。

 共有フォルダにファイルが新規に置かれれば、共有相手にバルーンで通知される。
 また、共有したものはどちら側からも削除する事ができ、共有しているものが削除された場合にはやはりバルーンで通知される。

DropboxでJavaScriptが動くという話

 .jsファイルはテキストとして表示されるだけなのだが、HTMLファイルをきちんと解釈するなら<script>で記述したJavaScriptは動くのでは? と思って検証。

<html>
<head>
  <script language="javascript">
    document.write('aaa');
    window.alert('bbb');
  </script>
</head>
<body>
  <p>Test</p>
<body>
</html>

 このファイルを共有してURLにアクセスすると、見事なまでにAlertBoxが表示され「aaa」も出力される。
 私はJavaScriptに詳しい方ではないのだが、これを利用するとDropboxCookieが読み出されて、自分のDropbox内にあるファイルを勝手に読み出されてしまう可能性があったりするのではなかろうか?
 一言で言えばクロスサイトスクリプティング(XSS)が心配。 (最初からそう言えよ)。

 詳しい人の検証求む。


【追記】
 西村さんが「勉強会で Dropbox を検証」という記事でDropboxでの検証用ファイルを公開してくれたので、興味のある方はチェックを。
 この検証用ファイルはAlertBoxが1つ出て、document.writeで少量のテキストを書き込んでいるだけだが、悪意のある人が何かを仕掛けていたとしたら危険なので、知らない人の公開URLはうかつにクリックしない事をお勧めする。