2011年6月24日(金曜日)
究極のエコ? ピンポン球水力発電
公開: 2011年7月3日23時0分頃
産経新聞のこんな記事が話題に……「究極のエコ! 重力と浮力で発電する装置をさいたまの80歳男性が開発 (sankei.jp.msn.com)」。
東日本大震災でエネルギー政策の転換が叫ばれる中、重力と浮力だけを利用して電気を発生させる装置をさいたま市浦和区の会社役員、阿久津一郎さん(80)が発明した。パチンコ玉を内蔵したピンポン球を高い位置から落として歯車を回して発電、水の入ったパイプの中で球を再び浮力で上昇させて循環させるもので、平成22年10月に特許を取得した。実用化されれば、天候や時間に左右されない“究極の自然エネルギー”として注目を集めそうだ。(安岡一成)
産経新聞……。これが「究極のエコ?」という見出しならともかく、「究極のエコ!」という見出しなのですから、フォローのしようがありません。「浮力を使った永久機関 (homepage3.nifty.com)」というアイデアは、既出ですが不可能です。もちろんこの装置も永久機関であるはずがなく、からくりがあります。
装置には水位を保つために、ピンポン球の体積分の水が出し入れされており、1つの球は約3分間隔でこの循環を繰り返す-という仕組みだ。
水を出し入れしているわけです。図を見ると、高い位置に給水タンクが備えられています。ここに水を定期的に補充する必要があるのでしょう。高い位置に水を持っていく必要があるということは、水の位置エネルギーを消費して動くものと思われます。
ちなみにこの特許の内容、特許・実用新案公報DB (www.ipdl.inpit.go.jp)で確認することができます。しかし、frameを駆使した読みづらい構成の上に、特定の特許公報にリンクすることもできない構造のようで、もう心の底から残念な思いをいたしました。
幸いなことに、特許データをもっと読みやすい形で提供しているサービスがありますので、こちらを見るのが良いでしょう。
- 球体循環装置|詳細 - astamuse(アスタミューゼ) (patent.astamuse.com)
細かいところまでは分かりにくいですが、はっきりと読み取れるのは、ピンポン球1個が落下するとき、ピンポン球1個分の体積の水が捨てられるということです。減った水は、装置の上部に設けたタンクから補給する必要があります。つまり、ピンポン球1個を持ち上げるのと引き替えに、ピンポン球1個分の体積の水を下におろしていることになります。
そしてこのピンポン球は水に浮きますから、持ち上がるピンポン球よりも下ろされる水の方が重いことは自明です。羽根を回して発電するなら、ピンポン球ではなく、水を直接当てた方が効率が良いでしょう。水で羽根を回して発電するような仕組みは既に実用化されていて、一般には水力発電と呼ばれています。
というわけで、「エコ」という観点で見ると、この装置は水力発電にかないません。この装置が水力発電と違うのは、ピンポン球が動いたり、音が出たりするのが楽しいという点でしょう。産経新聞は、エコではなく楽しさを打ち出す記事を書いた方が良かったのではないかと思います。
- 「究極のエコ? ピンポン球水力発電」にコメントを書く
ログ解析で攻撃に気付くのは簡単?
公開: 2011年7月3日20時25分頃
こんなお話が……「ソニーの情報漏洩は起こるべくして起こった」情報通信技術研究会で専門家が総括 (itpro.nikkeibp.co.jp)。
例えば、サーバーが再起動させられるまで不正アクセスに気付けなかった件については、「定期的にログ解析さえしていれば簡単に気付けたはず。そんなごく基本的なことさえしていなかったことは明白」と喝破。
うーむ。「簡単に気付けたはず」と言われていますが、サーバの再起動が起きる前、つまり攻撃が成功する前の段階で気付けということですよね。JSOCの監視サービス (www.lac.co.jp)に匹敵する品質が求められていると思うのですが、そんなに簡単なことなのでしょうか。
そしてPSNはアカウント数が7700万あるサービスですから、ログの量も半端ではないでしょう。そういう量のログをそういう質で監視するというのは、それほど簡単なことではないように思えるのですが……。
あるいは、簡単にできるような標準的なやり方があるものなのでしょうか?
関連する話題: セキュリティ / PlayStation Network
jQueryの落とし穴
公開: 2011年7月3日19時35分頃
「jQueryにおけるXSSを引き起こしやすい問題について (subtech.g.hatena.ne.jp)」。これは非常に興味深いお話ですね。
jQuery (jquery.com)はJavaScriptのライブラリですが、最近ではもうほとんどのサイトで使われていると言っても過言ではないくらい使われています。これは非常に便利で、面倒なDOM操作をとても簡単に書くことができます。たとえばこんな感じです。
$(function(){ $('#main-contents>div').append($('<p>こんにちは</p>')) });
上記のようなコードは良くあるのですが、よく見ると、$() は渡されたものの種類によって全く違う動作をしている事が分かります。
- functionを渡すと、DOM読み込み可能になったタイミング (DOMReady) でそのfunctionを実行
- CSSのセレクタのような文字列を渡すと、既存のノードを選択する動作 (getElementByIdやgetElementsByTagNameのような処理)
- タグのような文字列を渡すと、新たに要素を生成する動作 (createElementのような処理)
この他に、DOMのノードを渡すとjQueryオブジェクトに変換する機能もあります。
ポイントは文字列を渡したときの動作が2種類あることで、しかも、それぞれが全く違う動作になります。そのため、既存のノードを選択しようと思っていたのに要素が作られてしまうということが起こり得ます。
jQuery1.6.1のソースコードを見ると、以下のような正規表現にマッチした場合に要素作成になるようです。
quickExpr = /^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/
先頭のほうに [^<]* があるのがポイントで、開始タグの前に任意の文字列が存在していても良いことになっています。'#foo-bar<tag>' のような文字列はこれにマッチしますので、要素が作成されることになります。
script要素が作られても、それがDOMツリーに挿入されなければ問題ない……と思うかもしれませんが、onerrorイベント付きのimg要素を作らせるような技があり、挿入されなくてもスクリプトを実行させることができてしまいます。これがXSSの原因になり得る、というのが今回のお話です。
$() が万能というのはjQueryの設計思想なのだと思いますが、型が同じ (文字列型の) 引数を渡しているのに挙動が全く違うというのは、予期せぬところで問題を引き起こしやすいだろうとは思います。
関連する話題: Web / セキュリティ / JavaScript
- 前(古い): 2011年6月23日(Thursday)のえび日記
- 次(新しい): 2011年6月25日(Saturday)のえび日記