MugeSoの日記 このページをアンテナに追加 RSSフィード

2010-03-12

[][]HTML_Emojiを読んでみた。

昨日の続きで今日はHTML_Emojiを読んでみました。

処理は単純でUTF-8に変換したものをpreg_replace_callback使って絵文字っぽい私的領域を抜き出して連想配列のマップで置き換えるだけ!

また、ソース読んだだけでも分かりますが、作者のベンチマークによると他の変換スクリプトよりも桁違いに高速らしいです。

現在はバイナリ間の変換+PC用出力のみですが、アルゴリズム的には容易に文字数値参照にも対応できそうです。(対応してくれるかは別として)

ただ、マップ連想配列PHPコードを直接設定ファイルに書いているため絵文字対応が非常に分かりにくいです。Text_Pictogram_Mobileのようなすっきりした形から、実行時に自動生成してキャッシュするようになるといいと思いました。

2010-03-11

[][]Text_Pictogram_Mobileを読んでみた。

なんとなくXdebugでプロファイルをとってみたら、絵文字変換に半分以上持っていかれていたので絵文字変換を高速化したいなと思い動きだしました。

現在はMobilePictogramConverterをPHP5対応させたものを使っているのですが、他のライブラリも見ておこうと思い、絵文字変換id:Yudoufuさんがメンテしている絵文字変換ライブラリText_Pictogram_Mobileのtrunkコードを読んでみました。

基本的には下図のようなフローになっていました。

f:id:MugeSo:20100311190850p:image

イテレータによって文字コードごとのマルチバイトの扱いと外字領域判定を吸収しています。また、1つの文字列中に複数のキャリアの絵文字が混在している状況に対応しているようで、1文字ごとにどこの絵文字か判定していました。

ざっと読んでみて、次のような問題点が分かりました。

  1. 絵文字判定がイテレータの内と外にある
  2. イテレーション前にbin2hexしているのが無駄
  3. 文字参照に非対応

また、高速化を図るのであればマルチバイト文字列のイテレータをextensionにするのがいいのかなと思いました。そうでなくても、実はmb_strlenとmb_strsubを組み合わせればもっと簡単にイテレーションできる気がします。

ところで、trunkの最後の更新が去年の1月なんですけど、開発は再開されるんですか?

2005-07-16

[]Vodafoneだめぽ

携帯サイトを扱っている関係上、いろいろな携帯電話にさわるが、ボーダフォンの端末はよろしくない。

重いし、動作が不安定だし、3Gになって大々的に参入してきた海外メーカーの機種は恐ろしく重いし。画面スクロールしないからテストどころじゃないんですよ。

しかも、HTMLのa要素の数や全要素数が制限されてる端末を作りやがって、なぜかそれがHTML記述仕様に盛り込まれるし。

おまえ、そんくらい端末の基本仕様で何とかしとけよと。

そんなこんなでVodafoneは終わってると思います。