停電が珍しくない時代に向けて

この度の輪番停電騒動でだいぶUPS(無停電電源装置)が売れたそうだけど、これからますます停電への備えが注目されるのではないだろうか。

これは孫正義氏が唱えた光の道構想でも出てきた話なのだけど、メタル回線を使った電話では、電話回線に微量な電流を流しているから、もし停電になっても電話がかけられるようになっている。例えば最近の高機能な電話では当たり前のように電源を必要としているけど、昔の黒電話は電源も電池も必要とせず、ただ電話回線に繋ぐだけで電話ができる。これと同じ仕組みで、最近の電話でも、ディスプレイ表示やリダイヤルのような高度な機能は使えないものの、シンプルな電話機能だけは停電時でも使えるものが多いという。
一方で光回線には電流を流すことができないために、停電時には電話が通じなくなってしまう。メタル回線を光回線に変えて、電話を全てIP電話にしたとしても、ユーザーとして変化を感じる部分はほとんどないのだけど、この点は問題になるだろうと言われていた。

そこで孫氏が提案したのが、光回線の終端装置に充電式の電池を内蔵しようというとてもシンプルな案だった。充電池には寿命があるけれど、2~3年に1回メンテナンスすれば済むことだし、充電池の値段もそんなに高いものではない。仕組みも簡単で、開発費もたいしたことなくできるだろう。
今回の災害で停電の不便さを知った我々としては、直ちにこの案を実行して、停電時に光回線でも電話が通じるようにして欲しいと思う。
光回線の終端装置はNTTの持ち物なので、個人で交換することはできない。NTTには直ちにこのような停電対策を行って欲しいものである。

停電時にIP電話が繋がるようになれば、それは同時にインターネットにもアクセス可能であることを表す。
ノートパソコンなどのバッテリーを持った端末を使えば、停電時でもインターネットを利用することができるようになるだろう。

なお、光回線と同時に使えるようにしたいのが、無線LANである。
無線LANルーターにも同じように充電池を入れて、停電時に数時間だけでも使えるようになると嬉しい。

充電池が乾電池に置き換えられるような仕組みだと、停電が長く続いた場合でも応用が利き、なおよいだろう。

電源ユニットの交換

計画停電に備えて、普段使ってるWindowsマシンを遠隔地からVNCを通じて停止しようとしたら、地震の影響で本棚から落下した本がキーボードを押していて、遠隔地から操作不能に。仕方なく家にいた親に本をどかしてシャットダウンしてもらうように頼んだらシャットダウンではなくスリープさせてしまったみたいで、それに気付かず停電させて壊してしまいました。^^;

不幸中の幸いで、壊れたのは電源ユニットだけらしく、今日Amazonで買った新しいものと交換したら、無事起動しました。
急遽買ったのは、価格.comでの評価が高く、我が家のサーバーマシンでも安定動作の実績があるENERMAX ECO80+ EES350AWT (350W)
動作音がとても静かなところも気に入っています。

電源ユニットを交換したら、今まで不調だったMIDI音源も調子よくなったんだけど、これは偶然か?

ENERMAX 電源 ECO80 350W EES350AWT ENERMAX 電源 ECO80 350W EES350AWT

ENERMAX  
売り上げランキング : 7917
おすすめ平均 5つ星のうち 4.0

Amazonで詳しく見る

mixi Hackathonに参加してきた

参加してきたけど、あまり活躍できなかったので、反省点だけ並べておきます。

  • 開発環境を事前に用意しておくべきだった
  • 設計までは事前に決めておくべきだった
  • 役割分担しやすい設計をすべきだった
  • 役割分担まで事前に決められればなお良かった
  • 必要な技術は予習しておくべきだった
  • 企画が大規模になりすぎないように注意すべきだった

とにかく時間が足りなかったので、いかに事前準備ができたかが今回の鍵だったのかなと思います。
あとは、インパクトって大事ですよね。

ZendEngine勉強会に参加してきた

ZendEngine勉強会に参加してきました。
正直PHPの裏側の話なんてさっぱり解らないけど、主催者知り合いだし、一応Cは書けるし、Lex/Yaccとか使って言語も作ったことはあるので、雰囲気だけでも感じられたらと思って。

発表者の方々は、どの方も説明が上手く、とても難しい内容なんでしょうけど、解ったような気にさせてくれる発表でした。
今回僕がもっとも興味あったのが、PHPの言語を拡張して、Perlみたいな正規表現リテラルと演算子を入れる1にはどういう手段があって、どれくらい大変なのかということだったんですけど、基本的には構文に手を入れるにはエクステンションではなくPHPそのものをいじらなきゃいけないそうで、なかなか大変そうだなということと、でもプリプロセッサみたいなもので単純に文字列を置き換えるくらいのことなら、XHPというFacebookが作ったエクステンションを使えばできるよということで、こちらは導入すると処理が若干遅くなるそうですが、まあ、そんなことでした。

そんなことを神こと藤本氏に話したら、// で囲まれた文字列を新たにオブジェクトとして定義して、それを扱う =~ 演算子を作ってってなるから、ちょっと大変そう。3日はかかるかな。
なんて、あっさり言われたりもしましたが。

さてさて、PHPをyumで管理したりなどしている僕としては、できればエクステンションなんかの形で導入できたら嬉しかったのですが、PHPそのもののソースコードをいじるのかあ。うーん。
まあ、どんな手順でどれくらいのコストかを知れたのは大きな収穫でした。

今回はなんと名刺交換は誰ともしてこなかったのですが、何人か知り合いにも会えて、お互いの近況とか軽く話せたりして良かったです。

  1. いちいちpreg_matchとかpreg_replaceとか書きたくないじゃないですか。

スマートフォン向けサイトでSubmitをカスタマイズする方法

AndroidやiOSのブラウザではCSS3で定義されるような新しい表現に対応して、画像を使わずとも、HTMLを様々に飾り付けることができるようになりました。
しかし、素のままだとフォームボタンにCSSのプロパティを設定してもデザインが適用されません。iOSではデフォルトでかっこいいボタンが表示されるみたいですが、Androidだとデフォルトのボタンがかなり醜いので、これは困りものです。

submit1
これはAndroidのエミュレーターで表示したものをスクリーンショットで撮ったものです。
気にならない人はこれでいいと思うかもしれませんが、小さくて押しづらいです。それに、これをXperiaで表示すると、背景のグラデーションがもっと暗く表示され、かなりイケてない感じになります。また、左に配置したときに、右に数ピクセルずれるのも気になります。
Firefoxなどのブラウザで表示されるデフォルトのボタンも醜いのですが、paddingを設定すればWindows標準のボタンに近くなり、だいぶ良くなります。しかし、先ほど述べた通り、AndroidのブラウザではボタンにCSSのプロパティが適用されないのです。

そこで、CSSが適用できるようにする方法を調べました。

テンプレートエンジンTwigを使ってみた

PHPのテンプレートエンジンの中で最も有名なSmartyの開発陣が作ったというTwigを使ってみました。

Twigを知った切っ掛けは、以前参加したモダンPHP勉強会 #2
ここで発表された内容とほぼ同じことが、以下のサイトに書かれているので参考にしました。

Twigに修飾子を追加する

さきほど紹介したTwigですが、Smartyのように、変数を出力するときに何かしらの処理を加えて出力することができます。
例えば、

{{ 'TWIG'|lower }}

このように書けば、小文字に変換して表示できます。
この lower の部分を自分で自作する方法について書きます。

と言ってもとても簡単でした。参考にしたのはこちらのページ。

今回は数字に対し、3桁区切りでカンマを入れる修飾子 number を作ってみます。
3桁区切りでカンマを入れる関数は、PHPには標準で搭載されています。number_format() という関数です。
まずこれを使って、こういう関数を作りました。

function twig_number_format($str) {
  return (is_int($str)) ? number_format($str) : $str;
}

次に、これを修飾子として登録します。

$twig->addFilter('number', new Twig_Filter_Function('twig_number_format'));

これで完了です。

{{ '1234567'|number }}

と書いて表示させてみましょう。

ぶっちゃけ、これだけでもOKです。

$twig->addFilter('number', new Twig_Filter_Function('number_format'));

mixi Hackathon - アイディアソン -

mixi Hackathonに参加することになりました。
参加にあたって、事前にアイディア出しとグループ分けをするために、昨日アイディアソンがありました。

僕は3人でグループを組むことになり、そこでなんと修論のテーマと同じようなものを作ることになってしまいました。
修論の時は、とりあえず動くものを作って満足していましたが、今度はちゃんと実用に耐えうるものを作れたらなと思っています。

このテーマ、僕が修論を書いた2007年度の段階では、まだ同じことやってるサービスはほとんど無かったんですけど、今はAndroidの連絡先とか、XperiaのTimeScapeとか、auのjibeとか、似たサービスが色々出てきましたね。
ただ、PC上で連絡先を管理しようというものはまだ無さそうなので、しっかりとしたものを作れば、それなりに認めて貰えるかな?

FirefoxでCNETを開くと固まる問題

最近、FirefoxCNETを開くと必ず固まっていました。
開いてる途中でFirefoxの反応が無くなって、仕方なく強制終了する感じ。

仕方がないので、IE Tab Plusを使って、CNETだけはIEのレンダリングエンジンを使って表示するようにして回避していたのですが、今日調べていて、その原因がOsakaフォントだということがわかりました。

これらの記事によると、Windows 7環境下でOsakaフォントがインストールされていると、FirefoxでCNETなどのサイトを開いたときに必ず固まるようです。
自分のところでは、Windows XPでは再現せず、Windows 7 32bitと64bitで再現しているので、他の情報と合わせると、Windows 7だといけないみたいですね。

解決方法としては、Osakaフォントをアンインストールするしかないようです。
メイリオとM+1VM+IPAG circleを使うようになって、さらにgdippでMS ゴシックも綺麗に表示されるようになったので、前と比べてOsakaを使うことはほとんどなくなりました。
ただ、Osaka-等幅だけは使いたかったので、BREAKTTC.EXEを使って、複数のフォントがセットになったttcファイルを、個別のttfファイルに分割しました。

BREAKTTC.EXEは、Windows 7 64bit環境では動いてくれないので、XP Modeで実行します。
XP Modeの適当なフォルダに ttsdk.zip を解凍し、その中のTTCフォルダをコマンドプロンプトで開きます。そして、

C:\ttsdk\TTC> BREAKTTC.EXE Osaka.ttc

というようにして、コマンドを実行します。
そうすると、3つのttfファイルが作られるので、その中のOsaka-等幅のファイルだけをWindows 7にコピーしてインストールします。1

今回のクラッシュの原因は、まさかのOsakaフォントだったわけですが、これがもし違うフォントで、しかもよく使うフォントで再現されたら困りますね。
Windows 7が悪いのか、Firefoxが悪いのか、Windows用のOsakaフォントが悪いのか。

  1. 既にインストールされているOsakaフォントはあらかじめアンインストールします。

ブログのデザインをリニューアルしてみた

主な変更点は、幅と背景です。
普段家で見てるときはFull-HDのモニタで見ているので、とても幅広く表示されていたのですが、外出先で見ると幅が狭く、そのギャップに違和感を感じていたので、幅を固定幅にしちゃいました。
それから背景に画像をあててみました。少しはおしゃれっぽく見えるようになったかな?

気になっているのは表示速度なのですが、一番ネックになっているのは、はてなのプラグインみたい。
それからレンダリング速度も気になっていたのですが、可変幅デザインをやめたのと、HTMLやCSSの記述をかなりすっきりさせたので、少しは速くなったかな?