Category: 03 コンピュータ

ペーパーケースで Mac OS X サポート

ペーパーケースのエンジンをアップデート。

Mac OS X からのリクエストの場合は、MS P ゴシックの代わりにヒラギノ角ゴシックW3を利用するようにしたのが主な変更点。 うちにあるのが Mac OS X 10.2 だけなのでテストが十分でないと思うので問題点とかあったら連絡ください。
少し難しい話になってしまうんだけど、サポートが遅れてしまった理由というか背景を少し紹介。

PDF で日本語を扱おうとした場合、フォントを指定してその表示をクライアント側 (Acrobat/Adobe Reader) に任せるという方法と、サーバ側で必要なフォントの情報を読み出してPDFの中に埋め込んでしまう2つの方法がある。 サーバ側でフォントを埋め込もうとするとフォントのライセンス問題があるので、ペーパーケース (というか、そのエンジンであるmbfpdf)は前者の方法で日本語を扱っている。

この場合、サーバにフォントを置く必要はないが、フォント内に格納されている各文字の幅情報をあらかじめ切り出して保持しておく必要がある。 MS P ゴシックフォントは mbfpdf モジュールで既にこの作業が行われていたが、他のフォントに関しては別途ツールをダウンロードして自分で作業しなければいけなかった。 ところが、このツールはヒラギノフォントのOpenType フォーマットに対応していなかったため、作業が滞り最初のリリースに間に合わなかった。

いろんなツールを試してみたが、どれもうまくいかない。 最終的に、Microsoft Typography 内でダウンロードできる TTFDump というツールを利用し、OpenType の情報をダンプ(25MBにもなった)、必要なところを手で拾って情報を抜きだすという力業で対応した(100文字程度だったので…)。 TTFDump が正常終了せず途中でハングアップしたり、どうせ一度きりだったと思ったし…。

ってなことを調査し、理解し、対応する。 なんてことがシリコンバレーの国際化エンジニアが普段からやってる仕事(の一部)なわけです。 いつもは日本語だけじゃなくて別の言語もちゃんとサポートするよう考えるんだけどね(笑)。


アメリカに欲しい、ITコインランドリー

ITmedia ライフスタイル:洗濯が終わるとメールが届く「ITコインランドリー」
三洋電機テクノクリーンは、コインランドリーをネットワーク化する「ITランドリーシステム」を開発した。利用者は携帯電話などを使ってコインランドリーの“空き情報”を検索できるほか、「運転終了お知らせメール」が届くといったサービスも。

あまり語られない事実だが、アメリカはコインランドリーがとても一般的。

なぜなら、アパートの部屋に洗濯機を設置できるような作りになっているところが少ないから。 その代わりアパート内にコインランドリー施設が用意してあって、住民はそこを使って洗濯をするようになっている。

今、うちが住んでいるのも2階建ての小さなアパートの2階。 1機しかないコインランドリーは1階に設置してあるため、洗濯をする場合は階段を下りてそこまで行かなければならない。たまにしかないのに、洗濯カゴを抱えてわざわざ1階へ行って使用中の場合のがっくり加減ときたら… 。

Web サイトで洗濯機の空き状況が確認できたり、終わったらメールで連絡をもらえたら、がっくりしなくても済むので嬉しいんだけどなぁ。 日本ほどネットワークインフラが整っていないという問題はあるけど、 洗濯機の設置率の高い日本より、アメリカで展開すべきです > 三洋電機テクノクリーン


JavaScript Debugger って便利

最近知ったんだけど、Mozilla シリーズで動作する JavaScript Debugger
オリジナル開発サイト (日本語訳) がとっても便利だ。

昔はブラウザに付いてきたが、最近のリリースでは Extension (機能拡張) となっていて、

Firefox の場合、下の mozilla update のサイトから
http://update.mozilla.org/extensions/moreinfo.php?id=216&vid=512

Mozilla/Netscape の場合、作者のサイトから
http://www.hacksrus.com/~ginda/venkman/

xpi ファイルをダウンロード/インストールできる。

使い方はカンタンで、JavaScript をデバッグしたいページをブラウザで開いた状態で、Tools メニューにある JavaScript Debugger (Mozilla/Netscape の場合は Tools -> Web Development を選ぶ) と JavaScript Debugger を起動することができる。

起動した JavaScript Debugger には、現在ブラウザに表示されている各ページと、そのページが利用する JavaScript の一覧が表示されるので、デバッグしたい JavaScript を探して、その左側をクリックしてブレイクポイントを設定しておけば、その箇所へきたところで JavaScript の処理が止まるようになっている。 ただし、onClick=”return false;” といったHTMLタグの中に書かれている JavaScript ではブレイク設定ができないようだ。

下のスクリーンショットは 最近書いた MT コメントスパム対策の JavaScript のデバッグをしているところ。 左側にファイル、変数、ブレイクポイントのリスト、右側にデバッグ中のソースが表示される。 他にもデバッガを使ったことのある人ならそんなに違和感なく使えるのではないだろうか?

JavaScript Debugger に表示されない場合はスクリプトやHTMLページに問題がある場合がある。 そんなときは JavaScript Console を起動するとエラーやワーニングが表示されるのでどこに問題があるか知ることができる。 これも便利だ。

2011年現在、もっと便利なツールがいっぱり提供されている。

Firefox 系なら Firebug

WebKit (Safari, Chrome) 系なら内蔵の JavaScript Debugger(紹介エントリ)

IE なら IE8以降は JavaScript Debugger が内蔵されている。(紹介エントリ)


アルキカタ ブログ コンテスト

アルキカタ・ブログ・コンテスト 2004
アルキカタ・ドット・コムでは今秋、海外旅行と現地情報をテーマにしたウェブログ(ブログ)を対象として、ユーザの皆様の投票による「アルキカタ・ブログ・コンテスト 2004」を開催します。

アメリカに住んでいてもやっぱりお世話になる「地球の歩き方」。

このオンラインサイト arukikata.com (アルキカタ・ドット・コム) で海外旅行、現地情報をテーマにしたブログを対象としたコンテストが行われるというので参加してみた。

最終的には得票数も公開されるというので、どれくらいいくか力試しといったところだろうか。

抽選になってしまうけど、投票してくれた人にも投票参加賞も出るという話なので、このサイトの情報で役にたったな、面白かったなと思っていただけた方は、ちょっとお時間をもらって投票してもらえたら嬉しいです。

投票の仕方は、このページの下もしくは、各ページの右上にあるアイコンをクリックし、リンク先のページで、メールアドレスを書いて投票する。 その後、確認のメールが届くのでそのメールに書いてある確認用の URL をクリックすると投票完了。

メールアドレスはユーザを区別するのに使われるのと、参加賞を送るための手段に使われるそうです。 投票は1ブログにつき1回とのことなので、他のサイトに投票したいからと遠慮する必要はありません(笑)。

というわけで、よろしくお願いします。


紙を折ってCD/DVDケースを作ろう

Use this website to create a PDF file which can be printed and folded to create a paper CD case.
(このWebサイトを使って、プリントして、折ってできる紙のCDケースのPDFファイルを作ろう)

普通の紙を折り紙のように折ってCDケースにする。 それにコンテンツリストまで付けてしまうという一石二鳥な発想が面白い。 大学時代に曲のリストをTeXで使って作成し、カセットケースの間に入れていたのを思いだした。

paper cd case の サイトには Japanese というオプションもあるが、残念ながらこのサイトで作成されるPDFは日本語がうまく表示されないようだ。 作者にも「このヘン直したら動くと思うよ」 ってメールしてみたのだがすでに1年近く音沙汰がない。

こんな素晴しいモノなのに日本語が通らないというのはもったいない。 それなら自分で作ってしまえ! というわけで作ってみた。

紙を折ってCDケースを作るというアイデアは拝借したけど、自分なりに折りやすく改良し、CD だけでなく、DVDレコーダで録画したDVD用のテンプレートも用意するなど発展させてみた。 まだ、おかしなところも多いかと思いますが、少しずつ良くしていく予定です。 よかったら使ってやってください。


MT Comment Spam と闘う (2)

アメリカでがんばりましょう: MT Comment Spam と闘う
ポイントはSpamを投稿するのは人ではなくて、専用のプログラムだということ。
hidden 属性のフィールドを追加して、コメントの投稿時にそのフィールドがあれば、人からの投稿。無ければプログラムからのSpam投稿ということで、拒否すればいいというわけだ。

およそ1年ほど前に書いた上のエントリ。 この設定のおかげで、コメントスパムの投稿は結構押さえられていたが、最近になってその数が再び増えてきた。 理由はdistance: Comment SPAM WAR !! にもあるように、個別エントリ(Permalink)を読みこんだあと、コメント投稿用のフォームを解析し、投稿するというコメントスパムプログラムが開発されたことだった。

この新手のコメントスパムプログラムには、前回書いたように隠しフィールドを埋めこむ方法では防げない。 そこで、今度は次のような仮説をもとに対策を考えてみた。

「JavaScript をオンにした環境で、Submit ボタンを押したとき(onSubmit イベント時)に、隠しフィールドの値を設定すれば、人がボタンを押したときは正しい値が、コメントスパムプログラムが HTML だけ解釈して投稿したときは間違った値が送られる」

JavaScript が標準でない、携帯電話のブラウザなどからコメントを受けつけているサイトではコメントを投稿できなくなるが、パソコンのブラウザだけを対象にしているサイトの場合はこの方法で多くのコメントスパムプログラムが回避できると思う。

MovableType の Version 2.X 系の場合、具体的には以下のように設定する。

前提:
以前の MT Comment Spam と闘う に書いてある修正が終わって、隠しフィールド snoop = goaway がある場合に有効なコメント投稿だとする。

1. 個別エントリ (Individual Entry Archive) のテンプレートの、コメント関係の JavaScript が定義されている部分 (function forgetMe() の次あたり) に以下の JavaScript 関数を追加する。 keyword のところには “goaway” を反対から書いた文字列をセットすることで、簡易的に JavaScript を解析した場合も防ぐことができる。 snoop の部分を自分が設定した隠しフィールドの名前に変えるのを忘れないで。

function avoidSpam() {
  keyword = "yawaog";
  document.comments_form.snoop.value = "";
  for (i=keyword.length-1; i>=0; i--)
  {
    document.comments_form.snoop.value += keyword.charAt(i);
  }
}

2. 設定した隠しフィールドの値(value)を適当に書きかえる。
<input type=”hidden” name=”snoop” value=”fakekey”/>

3. コメントのフォーム定義(<form>)の中にある onsubmit の部分を書きかえる

変更前:
onsubmit=”if (this.bakecookie[0].checked) rememberMe(this)”>

変更後:
onsubmit=”avoidSpam(); if (this.bakecookie[0].checked) rememberMe(this)”>

以上。 HTML を解釈してフォームの構造をとりだすのは比較的簡単だが、これに JavaScript の解釈までしながらコメントスパムをばらまいていくようにするのは手間と時間がかかると思う。このサイトでも1週間ほど試してみたが、今のところ問題は出ていない。 みなさんもよかったらどうぞ。

Continue reading


万能地球儀ソフト World Wind

Slashdot | NASA Releases World Viewer
Nasa has released a comprehensive world viewing tool that allows you to zoom from planetary resolution down to where you can pick out individual streets.
(Nasa は天体的な解像度から道1本の様子まで見ることのできる総合ワールドビューワをリリースした)

NASA がまた素晴しいツールをリリースした。

World Wind というソフトは 3D で地球を表示し、衛星写真、航空写真をその上で表示できるようにしたもの。簡単にいってしまえば地球儀ソフトだ。

ただのソフトではないところは、地球の上に表示される写真が一種類ではないところ。 夜景の写真にできたり、大気情報や、オーロラやオゾン層の観測データを重ねて表示できたりと、万能地球儀になっている。

もうひとつすごいのは3Dで構成されているので、その縮尺に応じて表示する画像を切り換えることができるところ。 つまり、地球レベルの大きな縮尺では衛星写真、そこから拡大していくと、地域レベルの別の衛星写真、もっと拡大していくと最後は航空写真というように、縮尺レベルに応じて切りかえることができる。

一部のデータはインターネットを介してダウンロードしてくるものもあるので繋がらなかったり、ダウンロードが遅かったり(Slashdotted?)することもあった。 また、ソフトも拡大時の動きがちょっと怪しかったりと、まだまだのところもあるが、 衛星写真をこういった形で見られるようにすることで、これまでになかった地理的な位置関係が把握できることから、写真を単体で見る以上に理解しやすくなる。 今後もいろんなデータがどんどん出てくると思うし、これは面白いソフトだ。 Looking Glass 上で再現できたらもっと素晴しそうだなぁ。

スクリーンショット(Flash):
(アメリカ全景からサンフランシスコ周辺までズームイン, ほんとはもっときれいになるらしいけど、何度やってもサーバ接続でエラーがでるためデータがダウンロードできないようだ):

リンク:
World Wind


カブロボ

ITmediaニュース:カブロボ、始動–ロボットはテクニカル分析で人間を凌駕するか?
初・中級者であれば、このロボットに自らプログラムしたコードをマージさせることも可能だし、上級者であれば金融工学などを駆使したまったくオリジナルのロボットを作成することで、思い通りの動作をさせることが可能である。

またまた面白そうなコンテストが行われるようだ。

市場に出ている数字をもとにどの株を買うか、売るかを自動的に決定するプログラムを作成するというモノ。 IBMの協力により Eclipse が推奨開発プラットホームになっているのがまたすばらしい。

株でお金持ちになりたいと思う人は多いと思う。 オレもその一人(笑)だが、分析に必要な知識を勉強していても完全には理解できず結局は自分のカンとかに頼っていたり、ある銘柄を注目してると下がったりして恐れをなしてなかなか先へ進めない。 ITmedia の記事中にもあるが、経済の観点から見るとミクロ的要因しか見ていないので、十分ではないのはわかっているが、オレのような技術指向の人間は割りきってこういった方法で勉強・実践するのがいいのかもしれない。

というわけで、これを機にテクニカル分析をもっと勉強してみよう。 いいサイト、本、などありましたら教えてください。

なんて言ってて、最終的に優勝したのがパラメータを少しいじっただけの初心者だったり、何にもしないのがイチバンって結果だったら悲しいなぁ。

リンク:
カブロボ


Looking Glass Desktop を Windows で動かす

History:
8/3 (初出: version 0.5, jdk 1.5 beta2 用)
9/18 (version 0.51, jdk 1.5 RC 向けに修正)
9/23 (バッチファイル向けの情報を修正)

このサイトで度々触れている Looking Glass 3D Desktop Project 。

オレも出てすぐ会社のマシンにインストールして試したが、自分で自由になるマシンではなかったのでそれっきりになっていた。 自分のWindowsマシン上で動かないかなぁーと思っていたら、 java.net 内の フォーラムで cygwin を使って動かす方法を見つけたので試してみた。Sun的にはWindowsで動かされたくないと思うかもしれないが、少なくともオレはこれで Looking Glass 向けに何か作れる環境ができたし、これをきっかけに Looking Glass を知る人も増えると思うので、紹介しようと思う。

(9/24 追記
0.51 では Windows 向けに バッチファイルが同梱されました。 少し修正が必要ですが、cygwin をインストールしなくても Looking Glass を起動できます。 詳しくは 8. の項目にて。)


アプリケーションをいくつか追加した後のスクリーンショット
(ワイドスクリーンのラップトップのためか画面が潰れているような…)

1. http://java.sun.com/j2se/1.5.0/ja/download.html から J2SE 5.0 RC2 の Windows用の SDK をダウンロードして、インストールする。
(注: たぶん、動かすだけならJRE 1.5 でも問題ないと思うが確認していないので、ここでは JDK 1.5 を c:Program FilesJavajdk1.5.0 (デフォルトパス) へインストールしたと仮定して話をすすめる。 )

2. https://j3d-core.dev.java.net/servlets/ProjectDocumentList のページで
“Experimental_Builds” -> “1.3.2-build5”
とフォルダを選んで、 java3d-1_3_2-build5-windows-i586.jar をダウンロードする。
ダウンロードしたファイルを C:Program FilesJavajdk1.5.0jre へコピー。 DOSプロンプトで

> cd Program FilesJavajdk1.5.0jre
> jar xvf java3d-1_3_2-build5-windows-i586.jar
> jar xvf java3d-1_3_2-build5-windows-i586j3d-132-build5-win.jar
> del java3d-1_3_2-build5-windows-i586
> rmdir java3d-1_3_2-build5-windows-i586
> del java3d-1_3_2-build5-windows-i586.jar

として、jar ファイルの内容を展開する。 (展開したら jar ファイルはいらないので消して構わない)

jar コマンドが無いと言われた場合は、..injar と指定すれば J2SE 5.0 の jar コマンドが使える。

3. http://java.sun.com/products/java-media/jai/downloads/download-1_1_2.html から JDKTM Install: の Java Advanced Imaging API (JAI) 1.1.2 (一番上のDownload ボタン -> Software License Agreement を承認 -> Windows CLASSPATH Install (jai-1_1_2-lib-windows-i586.exe, 5.28 MB) をダウンロードする。 ダウンロードした exeファイルを起動して適当なディレクトリへインストールする。 jai_1_1_2lib の下にあるファイルを全部、c:Program FilesJavajdk1.5.0jrelibext ディレクトリの下へコピーする。

ここまでで、 C:Program FilesJavajdk1.5.0jrelibext ディレクトリに jai_core.jar, jai_codec.jar, j3dcore.jar, j3dutils.jar が発見できていれば、インストールは完了。

4. https://lg3d-core.dev.java.net/servlets/ProjectDocumentList の “stable_build” を選び、 Release 0.51 (lg3d-rel-0-5-1.tar.gzz) をダウンロードして、$HOME に展開する。 ($ tar xvfz lg3d-0-5-1.tar.gz や Winzip などを使う)

5. Cygwin のシェルを起動して、JDK 1.5 を標準の環境にするために、以下の作業を行う

$ ln -s “c:Program FilesJavajdk1.5.0” /usr/java
$ export JAVA_HOME=/usr/java
$ export PATH=$JAVA_HOME/bin:$PATH

export の設定は起動シェルスクリプト .bashrc などに書いてもいい。
これで、cygwin 環境から Jdk 1.5.0 へアクセスできるようになる

6. 起動スクリプトのうち、ファイルパスに関する部分をテキストエディタで修正する。

lg3d/bin/lg3d-dev スクリプト中の
14行目
setenv LGCONFIG file://${scriptdir}/../etc/lg3d/${config}

setenv LGCONFIG file:/`cygpath -mp ${scriptdir}/../etc/lg3d/${config}`
に変更 (file: のあとスラッシュは1つで OK)
31行目
setenv DISP_CONFIG -Dlg.displayconfigurl=file://${scriptdir}/../etc/lg3d/displ
ayconfig/j3d1x1

setenv DISP_CONFIG -Dlg.displayconfigurl=file:/`cygpath -mp ${scriptdir}/../etc/lg3d/displayconfig/j3d1x1`
に変更(同じく file: のあとスラッシュは1つでOK)
32行目
setenv CLASSPATH `cygpath -mp ${CLASSPATH}`
を追加

いちおう、変更が加わった lg3d-dev ファイルを置いておきます。

7.
$ cd ~/lg3d/bin
$ ./lg3d-dev

で起動する。 うまくいかなかったら /var/tmp/lgserver.log というファイルにログが残っているので確認すると問題がわかると思う。


標準環境の起動直後

8. 0.51 から lg3d/bin ディレクトリに setup.bat と lg3d-dev.bat というファイルが追加された。
そのまま、Explorer から起動しようとすると、環境によりうまく動かない。 こちらのサイトに修正方法が詳しく書いてあるので、そちらを参考にバッチファイルを修正すると起動することができる。
http://www5.airnet.ne.jp/sakuraba/java/lg3d/windows.html
cygwin, バッチファイル、お好みに応じて使ってください。
おかしなところがあったら指摘してください。
最初のスクリーンショットのようにアプリケーションを追加するにも、まだソースコードを編集する必要があったりといろいろと大変なんだけど、話題の Looking Glass がどんなモノか試すはじめの一歩としてどうぞ。

参考リンク:
http://www.javadesktop.org/forums/thread.jspa?messageID=19052
http://www.javadesktop.org/forums/thread.jspa?threadID=3081

Continue reading


Newton テクノロジーがエミュレータで復活?

Wired News: Fans Keep Newton in Motion
Indeed, the Newton may be getting a new lease on life.
The first Newton hardware emulator will be unveiled at the show, which may allow the Newton operating system to run on other hardware, including full-color handhelds or Tablet PCs.
(実際のところ、Newton は新たな人生を迎えようとしているのかもしれない。
フルカラーのハンドヘルドデバイスやタブレットPCといった他のハードウェアで Newton オペレーティングシステムを実行できる初めての Newton ハードウェアエミュレータがこのショーで公開される。)

う、見逃がすところだった。 Newton というのは Apple Computer が 1994年に発表し、PDAというジャンルを開拓した歴史的なデバイス。 メモを進化させたような自由な入力の仕方が気に入り、オレも一時期ハマっていた。ところが 1998年 2月に Apple Computer はNewtonに関連する全ての開発を凍結。 製品としての Newton の命は終わってしまった。

しかし、Newton は設計がしっかりして、開発キットも公開されていたことからユーザによる開発は続けて行われ、当初サポートされていなかったATAタイプのフラッシュメモリ、ワイヤレス接続、Bluetooth、といった技術がサポートされていき、熱心なファンは使い続けていった。 (残念ながらオレはアメリカに来たところで使用を中止してしまった。)

そんな中、Apple Expo が開かれていたパリで土曜日に開かれる World Wide Newton Conference。 ここで、Newton のハードウェアをエミュレートするソフトウェアが発表されるらしい。

Wired に載っている写真を見ると現在は Mac OS X上で動作するようだが、今後は Linux や NetBSD といったオープンソースプラットホームで提供したいと考えているらしい。 これにより、最近のLinuxベースの Zaurus の上で Newton OS を動かすことも期待できる。

最近は、PDA の在り方について問われるような記事も見られるようになったが、電話帳的な使い方なら携帯電話、スケジュール帳としては一覧性のよい紙の手帳で十分。PDAとしては何度でも書いたり、消したりできるというメモというジャンルでアドバンテージがあると今でも思っている。 そこをきっちり押さえていたNewton が久々に話題になったのは単なる偶然ではないような気がする。