Where do Opera go? #2

Opera 15 から、そのレンダリングエンジンは Blink に移行した、というよりアプリケーションの骨組みが Chromium ベースになった。これに従い、エクステンションの仕組みもまた Chromium のそれに準ずるようになった。Chromium エクステンションと同様の manifest.json を書き、Chromium が提供する API を使ってエクステンションを組み立てていくことになる。ただし API はサブセット(+ Opera 独自のもの)になっている。

どの程度のサブセットかは、Chromium が提供する API と、Opera 15+ の それ を参照のこと。

Opera 12 までのエクステンションは拡張子が .oex だったが、15+ では .nex になる。構造は Chrome の .crx とまったく同じ。Opera 15+ がサポートする API だけを使っているエクステンションなら、.crx のまま使えてしまうはずだ。

また、Opera のエクステンションカタログ(の開発者ページ)では登録済み oex に対する Convert 機能が追加されているようだ。これは何をするのかといえば、oex のアーカイブに oex の API をエミュレートするでっかいラッパーライブラリを付加して、全ファイルを含んだ zip を返してくれる。この oex エミュレーションライブラリがかなりの力作で、全体で 450KB くらいある。これを書いた人は本当によくがんばったと思う。

残念ながらというか幸いにというか、wasavi の場合はもともと Chrome でも動くようにしているので、そのライブラリを使うことはないのだが…。

あと、「一体 Opera は DOM3 Composition Events をいつ実装するの? 明日なの? 今年中なの? 今世紀中なの?」という諦め半分の心の叫びがタナボタ式に解決してしまったのが割というかかなり嬉しい。

Say you, say me

サッチーとそのクローンの誕生
虹裏ユーザ向けのサービスにサッチーというものがある(「」サッチー、「」ッチーとも。公式サイトでも表記は揺れている)。これはユーザが任意の虹裏(dat/img)上のスレッドを登録するとサッチーがそのユーザに代わってスレッドを、その寿命が尽きるまで追跡・保存するというものだ。スレッドに添付された画像のほか、スレッドからリンクされた特定のアップローダ上の画像なども保存する。スレッドの登録の際にタグを入力させることで、後から検索しやすくもなっている。非常に良くできたサービスだ。

このサッチー、年に数回停止してしまうことがあった。それは web 上のサービスということでしかたのないことなのだが、今年に入ってずいぶん長いこと止まったことがあったのだ。記憶が確かなら 2 月頃に数日、3 月頃に 1 ヶ月分くらい止まっただろうか。その間、特に公式のアナウンスもなかったので虹裏ユーザもさすがに不安になり、代替サービスを模索し始めた。

img では早くからサッチークローンを制作したユーザもいたようである。3 月下旬には公開され、今も稼働している。

虹裏 dat では…
さて虹裏 dat では 4 月に入ってもそういう動きは見られなかったので、じゃあやるかということで作り始めた。前述のとおり 4 月上旬くらいの事だったと思う。その頃はタテログを作っていたので、内部の仕組みはそれをそのまま利用することにした。つまりタテログはすべてのスレッドを 1 ヶ月分ログしている。1 ヶ月過ぎたら削除される。サッチー的サービスに登録されたスレッドはその削除を免れるようにするだけの話だ。もちろんタグ周りのスキーマとか UI とかは一から作る必要があるのだが。

ということで、それほど開発に手間もかからず、4 月 16 日には dat に公開し、今も稼働している。名前はなんでもよかったのだが、サッチークローンなので「○○ッチー」的な名前が機能を連想しやすいだろうということで、最初に思いついた「リッチー」とした。ライオネル。

もともとサッチーは「電脳コイル」というアニメに出てきた巡回オートマトンのことなので、「」サッチーもスレッドを巡回するの動作にひっかけたネーミングであるはずである。リッチーというネーミングには別にそういう深い意味はない。

現在
ちなみに当のサッチーはその後復旧し、今も稼働している。なのでぶっちゃけて言えばリッチーはいらない子になってしまったのであった。ただしサッチーは今でもたまにデータベースが停止してしまうことがあるようなので、まあバックアップとしては残してていいんじゃないかな? ということでそのままにしてある。

突貫で作った割に、リッチーにはサッチーが持っている機能をあらかた実装したのだが、まだ決定的に欠けているものがある。残念ながらユーザの中には特定の他のユーザへの私怨なのか、あまりふさわしくないスレッドを登録したり、ふさわしくないタグを登録したりする人がいるのである。そういうのを自動的かつ効率的に察知したり、抑制したり、削除したりする仕組みをまだ作っていない(仕組みがないだけで、データは直接データベースをいじればいいのだが)。

そして…
しかしとりあえずサービスとしてはすでに回っているので、とりあえずタテログとリッチーをいじるのはこのへんで一段落とし、wasavi を開発のメインストリームに戻そうと思う。Blink Opera も公開されたし。

Where do Opera go?

Opera の話。

今年の 2 月、Opera のレンダリングエンジンが Webkit に移行することが発表され、その後正確には Blink への移行であることが非公式に判明した。それ以来デスクトップ版については音沙汰がなかったのだが、いよいよその最初のバージョンが公開された。

その出来や評判がどうなのかは、件のエントリへの 1000 件を超えるコメントのほとんどが、Blink Opera が Presto Opera から様々な機能が削ぎ落とされ、つまり一言で表せば単なる Opera スキンをかぶった Chromium になっていることに対する失望で埋められているといえばここで改めて書くまでもないだろう。

で、日が明けてこういうエントリが公開された。つまり Blink Opera がそういう状態なのは最初のバージョンだからであって、バージョンが進むにつれ Presto Opera が持っている機能が再実装されるので心配しないでくれという表明だ。

Presto Opera に機能的に追いつくのはクリスマスプレゼントの時期になるんじゃないかなーと個人的には予想。

Orphan

ところでメインマシンは Windows7 PC なのだけど、実際には VirtualBox に入れた Ubuntu Server へ、cygwin 上の ssh で接続して作業しているので Windows は開発環境としてはあんまり活用していない。Photoshop とか Illustrator とかを使ったり地デジを見る OS と化している。

それはそれでいいのだが、VirtualBox で困った点がひとつある。PC が 30 分放置の後に自動的にスリープする。スリープを解除すると、どうも動きが怪しくなるのだ。

VirtualBox 上の Ubuntu Server は、タスクスケジューラに登録したタスクで、ログオン時に headless 状態で起動させている。つまり画面を描画するウィンドウを持っていない。したがって、ウィンドウに付属している、仮想環境に対してちょっかいを出す機能を利用できない。ちょっかいを出すには VBoxManage.exe をコマンドプロンプトから呼び出すほかにないのだ。しかしスリープを解除するとどうも VBoxManage が実行中の仮想環境を見失ってしまうようなのである。

正確には、仮想環境が起動すると同時にそれを監視する COM サーバ(SBoxSVC.exe)も起動するようなのだが、それを VBoxManage.exe が見つけられなくなってしまう感じかもしれない。不思議なことに、GUI の VirtualBox マネージャを起動させると、そちらはちゃんと実行中の仮想環境を認識する。しかしマネージャは実行中の環境に対して設定を変えることはできないのだった。

仮想環境自体はふつうに動き続けているので、一度状態保存するなりシャットダウンして起動しなおせばいいのだが。ちょっと不便ではある。

funnIEst browser #2

件の Windows7 PC には SignalNow Express という有名なアプリを入れている。

今更書くまでもなく、これは地震情報をリアルタイムでレポートしてくれる。そのウィンドウは IE コンポーネントを利用したブラウザを内包していて、それで Google Maps を動かして地図を出している。

で、例によって件の PC は IE の調子がどうもおかしいわけで、SignalNow Express もその影響をもろに受ける。地震速報のチャイムが鳴るとウィンドウが出るのだが、即応答なしになる。揺れが落ち着いた頃にえっちらおっちらと地図を出し始めるのだ。これでは死ぬような地震が来たら確実に死ぬ。

そういうわけで「あー! Windows 再インストールしたい!」とか「新しいマシンがほしい!」的な欲求が沸き上がっているところなのだ。

Heavy memory use of MySQL

タテログの開発のために、Windows7 PC に MySQL 5.6.10 を入れているわけだが、そのサービスがやたらメモリを食う。500 ~ 600MB くらい常に確保している。このくらいのメモリはかなり微妙なラインだ。これが 1G に近づくと「やべえな! 即なんとかしたい!」という気分になるのだが、「まあこのくらいならいいかな…暇な時にやる気があればなんとかする…」ラインのぎりぎりの限界くらいだ。個人的に。

というわけで暇というわけでもないのだがやる気を出してなんとかしてみる。

このバージョンの my.ini は C:\ProgramData\MySQL\MySQL Server 5.6\my.ini というパスにある。これをいじって各項目のサイズを減らせばいいのだ。ちなみに古い MySQL だと大メモリ・中メモリ・少メモリ環境用の my.ini のテンプレートが用意されてたような気がするのだが、最近のはないようだ。

とりあえず my.ini 中のいろんなバッファサイズを単純に半分にしてみた。…変化なし。んん?

ぐぐってみると、こういうことらしい。つまり table_definition_cache=1400 なる行自体をコメントアウトする。そうすることで、ワーキングサイズは 20MB 程度、コミットサイズは 60MB 程度にまで縮小した。って桁が違う…。

funnIEst browser

Windows7 上の IE で localhost のアドレスをブラウズすると、名前解決に妙に時間がかかることがある。

というのはわりと FAQ らしく、ググるとすぐに解決法が出てくる。たとえば hosts で 127.0.0.1 だけを有効にし、::1 はコメントアウトするとか。あるいは、IPv4 の優先度を上げるとか。

ところがうちの環境の IE はさらに輪をかけておかしいのか、そういった回避法を施してもなお localhost をブラウズできないのだった。

まず localhost の名前解決がまったくできない。いくら待ってもできない。もしかしたら、1 時間くらい待てばできるのかもしれないが試してない。また名前解決待ちの間、IE 以外のブラウザの動作もなぜかブロックが発生する。IE 側で読み込みを中止するとブロックは解除される。ちなみに localhost の名前解決の問題なので、127.0.0.1 でアクセスすればいい気もするが、変わらなかったり、変わったり、よくわからない。ただし、別のマシンからアクセスすればこのような変なウェイトは発生しない。

さらに名前解決とはあまり関係ないのだが、前にも書いた気がするが、かならずページが互換モードになる。正確には、明示的にレスポンスヘッダで X-UA-Compatible: IE=Edge 的なものを送られて来ない限り、文書モードが IE8 になってしまう。html 文書中の meta 要素の X-UA-Compatble は完全に無視される。

強制的に文書モードを固定するというのは、レジストリ HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION あたりをごにょごにょする話だと思うが、ごにょごにょはしていない。

というわけでうちの IE は根本的にぶっ壊れているようなのだが、どうすれば直るのかさっぱりなのだった。たすけてー!

vertical development #3

暇を見つけてはちまちまとコードを書いているのだが、開発自体は難しいものは特にないので、特に書き記すこともない。困ったものだ。

基本的には設定されたインターバルで futaba.htm ~ 10.htm を読み込み、データベースを更新し、カタログを生成するだけの話だ。旧タテログから新しく増えた点として、ナチュラルな並び方以外にレス数の昇・降順、立った時間の昇・降順用のカタログも生成するくらい。

強いて旧タテログからの変更点を上げれば、データベース上のログの保存期間がある。ふたばの画像掲示板は、あらかじめ定められたログ保存数より古くなった書き込みは消去され、参照することができない。たとえば dat 鯖の二次元裏では最後の 4000 件の書き込みが残され、それ以前のスレッドも、レスも消去される(ただし、管理用のデータとしては残しているようである)。旧タテログではそれに倣い、データベース上のログも同じ保存期間としていたのだが、新タテログではこれを例えば 1 ヶ月といった期間にした。この間のログは自由に参照したり、検索することができる。

参照というのは、具体的には新たにタイムマシンモードというものを設けた。これによりログが保存されている期間内の任意の時間(1 時間単位)のカタログを参照することができる。大体のユーザは深夜は寝ているのであるが、一部のユーザは深夜に活動し、いろいろと面白いことをしでかしているのだ。この深夜の全体的な板の流れを、後から参照できるということだ。加えてログからスレッドを再構成し、それもまた参照できるようにした。

検索も同様だが、MySQL の全文検索の機能をまっとうに使うようにしたので、ログの量が増えた分を十分補うほど検索の速度は速いようにした。とりあえずテスト環境では大体のクエリは 0.1 秒未満で取ってこれる。実際の環境に持ってきてどうなるかが楽しみだ。

さて特に書くこともないのでまた昔話をすると、実は似たようなシステム(一定期間のログをふたば外部で自動的に保存する仕組み)は以前にも作ったことがあった。それなりに動くものを実装し、img 鯖の二次元裏でちょっと公開してみたことがあった。ログを漁ってみたら 2006 年の 3 月頃なので、まさに 7 年前のことだ。このときの反応は、「これはこれで便利だけど、一期一会的な虹裏の使い方自体を変えてしまうかも」というものが大多数だった。そんなわけでいろいろと勘案して、作ったシステムはお蔵入りにしたのだった。

その後 2008 年に logch なるスレッド保存サイトができたり、それに続いて同じような保存機能・検索機能を提供するサイトが生まれて、それなり使われているようなので、そういう使い方もまあ受け入れられているのだろうと判断し、新しいタテログの仕様を決めている次第である。

vertical development #2

そんなわけで、タテログを公開したのが確か 2006 年の 1 月だったと思う。つまりもう 7 年も前のことなのだ。

tatelog-dat

そのころは PC の画面もだいたい 1024×768 だったし、ヘタすると 800×600 のノートすら現役だったので、タテログもそういうふうにレイアウトを決めた。800×600 の領域に、10 スレッドを縦に並べた 1 ページを横に 8 ページ分並べた。本来は 10.htm までの 11 ページ分あるのだが、隠れた分は横スクロールさせることにした。そのほか、ログの全文検索なんかや単純なログキャッシュ機能なんかも付け足した。

それから、当時のレンタルサーバは非常に弱かったので、3 種のサーバを借り、同じタテログを立て、さらにそれら 3 つがログを融通しあって負荷を分散するようにした。とまあだいたいこんなところだ。

さてこれを 2013 年の今見てみると、なかなかこじんまりしてスペースがもったいない。世の中すでに 16:9 の画面が溢れている。つまり横が余りまくる。それから全文検索の性能もかなり良くない。ログキャッシュの一覧機能がないので活用されてるとはいえない。またレンタルサーバの能力もずいぶん強まったので、負荷分散は冗長すぎる、かもしれない。

というわけで、その辺の不満を解消しつつ新しく作りなおしてみたい。

tatelog-extreme

画面サイズに応じて領域をまるまる使う。全文検索は MySQL の機能をちゃんと使う。ログキャッシュの一覧のために「タイムマシンモード」を設ける。

たぶんそんな感じになると思う。

vertical development

ここで公開しているアプリケーションにタテログというものがある。

タテログとは何かというのを説明するとかなり長くなる。タテログはふたば☆ちゃんねるのコンテンツに関わっている。ふたばでは当初、立ったスレッドの一覧的なものはなかった。ふたばの画像掲示板は「レス送信モード」と、スレッドを最後にコメントが書き込まれた日付の逆順に、その一部、つまりスレッドの本文・画像と最後の10レスを並べるモード(公式なモード名はない。便宜上サマリーモードと呼ぼう)しかなかったのだ。さすがに不便だと管理人さんも思ったのか、その後、といってももう 7 年か 8 年か、それくらい前の話だが、「カタログモード」なるものが新設された。これはその名の通り、立ったスレッドを表の形式で一覧するモードだ。

さてその後、どういう訳か知らないが dat サーバにある虹裏のカタログが突然動かなくなったのである。当然自分を含むユーザは不便を強いられた。しかも一時的な不具合というわけではなく、なかなか治る気配を見せなかった。

不確かな記憶をたどれば、当時、純正のカタログに見た目を似せた「自分用」という外部サイトがあった。純正のそれとの違いは、存在しているスレッドすべてを対象にしていたという点である。純正カタログはせいぜい最後に更新された 50 やそこらのスレしか表示しなかったのだ。それに対して「自分用」は明らかに便利だった。そんなわけで多くのユーザは自分用を使い出したのであるが、当時のレンタルサーバのキャパシティである。はやくも 503 がちらほら出始めた。

そこで、カタログに相当するものを新しく自前で作ろうとしたものがタテログなのである。

しかし同様な外部の擬似カタログサイトを作るとして、「自分用」と同じにするのはあまり意味がない。そこで、サマリーモードの使い勝手の延長線として、スレッドを縦に並べるようにすることを思いついた。純正カタログ・自分用共にスレッドが Z 字形に並べられる形式なのだが、サマリーモードは縦に 10 スレッドが並び、さらに futaba.htm ~ 10.htm までの各サマリが横に並んでいるイメージなのである。それをそのまま 1 ページに構築するようにした。

とりあえず形になった所で公開してみたところ、意外とすんなりと受け入れられた。とりあえず新しいものは死なない程度に貶すふたばユーザにしては珍しいことだ。スレッドが縦に並んでいるので、カタログに対してタテログだ、というネーミングもふたばユーザによるものだ。