Entry: 翻訳結果を検証しやすい翻訳サービスを作った
翻訳結果を検証しやすい翻訳サービスを作った
「翻訳の可逆性を検証し、よりよい訳文を選択可能な翻訳サービス」です。いろんな翻訳サービスをマッシュアップしてます。
経験上、ウェブ上の翻訳サービスの精度はかなり低いです。「不自然な表現」どころか、意味を想像することすら難しい程の間違った訳が平気で提示されます。外国語を母国語へ翻訳して読解する場合は利用価値があるのですが、母国語から外国語へ翻訳するケースでは、対象外国語を全く理解できないまま利用するのは危険です。
このサービスは、入力された日本語を様々な翻訳サービスを利用して外国語に翻訳し、その結果をさらに逆翻訳した日本語を合わせて提示します。利用者は出力された日本語の正当性を評価することで訳文を検証することができます。また、ひとつの入力に対して多数の候補を提示することで、より妥当な訳文を選択することができます。
現在は日本語->英語と日本語->中国語の翻訳が可能です。
Entry: ある意味、世界一のURL短縮サービスを作った
ある意味、世界一のURL短縮サービスを作った
[2009.09.30] Asiajinで取り上げていただきました。ありがとうございます。そして、同じネタがすでにあったと知りました。リサーチ不足。
長いURLの文字数を削減してくれるURL短縮サービスはたくさんあるけど、世界中のどの方式よりも文字数を短縮できる方法を発明しました。
サイト名ですでにネタばれですが、これは各URLに割り振るIDをマルチバイト文字の組み合わせにすることで、文字数的には短いでしょ、というネタです。ついったーなんかは完全に文字数に依存なので有効かも。
IDに使用する文字は日本の常用漢字1945字です。シーケンシャルに割り振り、使い切ったら繰り上がるので、最初の370万件は2桁に収まり、最初の73億件も3桁に収まります。
注意事項としては
- Firefox3.5, IE7, Chrome, iPhoneで正常動作を確認しました。逆に、Androidエミュレータ, DoCoMoやAUのブラウザ(フルブラウザ含む)は日本語ドメインに未対応のようです。
- IDはシーケンシャルに割り振られるので使用済みのIDは容易に推測できます。
- 「悪」などというイヤなIDが当たってしまったら
リロードして再割当してください。「縮AGAIN」ボタンを押してください。 - これはジョークサービスです。本サービスの利用に起因または関連する利用者の損害について管理者は何ら責任を負いません。
Entry: 縮.jpに外国人向けの機能をいくつかつけた
Entry: twilogで日本語ドメイン名にリンクを張るGreasemonkeyスクリプトを作った
twilogで日本語ドメイン名にリンクを張るGreasemonkeyスクリプトを作った
開発ネタがぜんぜん思いつかないのでGreasemonkeyスクリプトをもうひとつ作った。
twilogというサービスで、つぶやきの文中の日本語ドメインURLにリンクが張られていないようなので、勝手に張ってくれるGreasemonkeyスクリプトです。
// ==UserScript== // @name accessible_idn // @namespace http://jamadam.com/blog/ // @description This makes IDN URLs accessible. // @include http://twilog.org/* // ==/UserScript== (function() { var tltexts = document.getElementsByClassName('tl-text'); for (var i = 0; i < tltexts.length; i++) { var tmp = tltexts[i].innerHTML; for (var j = 0; j < tmp.length;) { if (tmp.substr(j, 3) == '<a ') { var closepos = tmp.indexOf('</a>', j); if (closepos == -1) { break; } else { j = closepos + 4 + 1; continue; } } if (tmp.substr(j, 2) == 'ht' && tmp.substr(j, 8).match(/^https?:¥/¥//)) { var end = tmp.substr(j).search(/¥s| |$/); var url = tmp.substr(j, end); var gen = '<a href="%1">%2</a>'.replace('%1', url) .replace('%2', url); tmp = tmp.substr(0, j) + gen + tmp.substr(j + end); continue; } j++; } tltexts[i].innerHTML = tmp; } })();
前回のネタよりちょっと難しかった。既設リンクをスルーする仕組みが多少いい加減。
Entry: 国際化ドメイン名をHTMLに記述する際の記述方法
国際化ドメイン名をHTMLに記述する際の記述方法
国際化ドメイン名をHTMLに記述する際の記述方法に関するメモ。間違いあったら指摘して。
(1) <a href="http://%E7%B8%AE.jp/">http://縮.jp/</a> (誤り) (2) <a href="http://縮.jp/">http://縮.jp/</a> (3) <a href="http://縮.jp/">http://縮.jp/</a> (4) <a href="http://xn--jj0a.jp/">http://縮.jp/</a>
(1)パーセントエンコード。誤り。
(2)マルチバイト文字を直接記述する。一番正しくて手軽な記述。問題点は、UAがIDNに対応していないため通信時に正しくpunycode変換されないかもしれないこと。
(3)マルチバイト文字を数値文字参照で記述する。敢えてこう記述するメリットはあまりないけど、例えばマルチバイト文字を扱えないシステムとの相互運用を想定しているためにHTML内に日本語を直接記述したくない場合には、このように記述して構わない。
(4)punycode変換して記述する。リンクを正しく動作させるという点では一番安全かもしれない記述。ただし、エンドユーザーが知りうるURLが全てデコードされるかどうかはブラウザの実装次第。例えば「リンクをコピー」したときにpunycodeのまま出力されてしまってはIDNの利点が台無し。punycode変換はUAが通信時に行うことが推奨されているため、HTMLに記述する時点で行う必要はない。
Entry: 誤ってエンコードされたIDNを直すGreasemonkeyスクリプトを作った
誤ってエンコードされたIDNを直すGreasemonkeyスクリプトを作った
開発ネタがぜんぜん思いつかないのでGreasemonkeyスクリプトでもやってみようと思った。
世の中のWEBシステムの多くは国際化ドメイン名(IDN)に対応していないと最近気づいた。例えばTwitter検索の結果とかにhttp://日本語.jp/とあっても飛び先がエラーになるのはサーバープログラムが「日本語」を誤ってパーセントエンコードしているため。このリンクを正しく動作させるためにドメイン名をデコードするGreasemonkeyスクリプトを作りました。
// ==UserScript== // @name idn_fixer // @namespace http://jamadam.com/blog/ // @description This fixes wrongly percent encoded domains in hrefs. // @include * // ==/UserScript== (function() { var links = document.getElementsByTagName('a'); for (var i = 0; i < links.length; i++) { var pos1 = links[i].href.indexOf('//', 0) + 2; var pos2 = links[i].href.indexOf('/', pos1); var domain = links[i].href.substr(pos1, pos2 - pos1); if (domain.indexOf('%') != -1) { links[i].href = decodeURI(links[i].href); } } })();
初めてのGreasemonkeyスクリプトなので作法とか間違ってるかも知れません。
Entry: 縮.jpに待望の「縮AGAIN」ボタンを搭載
縮.jpに待望の「縮AGAIN」ボタンを搭載
縮.jp。7月に作って放置してたら10月になって話題になった。人生で一番集客した。そんな訳で、ネタを必要以上に膨らませるべく、システムを改修しました。見た目的にはあまり変化ありませんが、中身はほぼ丸々変わってます。特筆すべき変化は。。
待望の「縮AGAIN」ボタンを搭載
生成された短縮URLが気に入らなかった場合、このボタンを押すと別のURLを生成してくれます。なお、縮AGAINした場合、古いURLはしばらくして解放されます。
既設の短縮URLがあれば、短い順にご提案
今までは湯水のように新規作成してましたが、縮ボタンを押した際、まずは既設の短縮URLを提示するようになりました。縮AGEINすると短い順に既設URLが表示され、なくなれば新規作成されます。
転送時、末尾のゴミを可能な限り取り除く
Twitterでhttp://縮.jp/上これすげーみたいなつぶやきが多発していたので、こういう場合はhttp://縮.jp/上を検知して転送します。Perlでいうと、
$id =~ s/¥P{Han}.*//;
となっています。漢字を表す正規表現なんて初めて知りました。
ちなみに、ファイルベースからPostgresqlに移行
パフォーマンスいいかなと思って、1件1ファイルなどというデータ管理をしてたんですが、IDがシーケンシャルに固定されるとか、逆引きできないとか、色々問題あったのでPostgresqlにしました。なお、ファイルベースのキャッシュの仕組みを導入したので転送時のパフォーマンスは以前と変わらない。はず。
APIにも変更あり
offsetというパラメータが新設されました。これは前述の既設URLの再利用と関連するもので、任意の既設URLを取り出すためのパラメータです。offsetを十分に大きくすると自動的に新規作成されます。通常は指定しないでください。
既知の問題
- 元URLがbit.ly等ですでに短縮済みだった場合、iPhoneで転送されない。確かソフトバンクの仕様でiPhoneで多段リダイレクトできない。
- Twitter用のいくつかのGreaseMonkeyスクリプトやアドオンで縮.jpへ飛べない。FirefoxのJavascriptのバグっぽい挙動が原因と思われる。対処法はこちら
- Twitter周辺サービスで日本語ドメインが誤ってパーセントエンコードされているケースも見かけます。サーバサイドでの処理に問題があるのではないか(憶測)。
- iPhoneの多くのアプリで開けない。おそらくアプリからwebkitだかのAPI的なものに渡すURLをpunycode変換してないのではないか(憶測)。対処法はこちらの12月15日の記事くらいしか見当たらなかった。
今後の予定
任意のIDを指定可能に- 不人気文字を避ける仕組み
- 元URLがすでに短縮URLだった場合に展開してから短縮
- スパム対策
Entry: マルチプラットフォームなアプリ一覧
マルチプラットフォームなアプリ一覧
いつでもMacOSとLinuxとWindowsを行き来できるように。
| ブラウザ | Firefox 定番ブラウザ。下記はおすすめプラグイン。
|
|---|---|
| メーラー | Thunderbird 定番メーラー。下記はおすすめプラグイン。
|
| テキストエディタ | jEdit Mac版は割と軽い。下記はおすすめプラグイン。
Scintilla Text Editor EUC-JP不可。 Komodo Edit jEdit使うようになってから出番がめっきり減った。 |
| ファイル転送 |
Filezilla mac版は驚くほど使いづらい。主な用途はファイラであるmuCommanderで事足りるので、Filezillaは今のところ不要。 |
| 波形編集 | Audacity |
| オフィススィート | OpenOffice 定番。下記はおすすめ機能拡張。
OPENPROJ プロジェクト管理 |
| アーカイバ | |
| ファイラ | muCommander |
| 動画エンコード | HandBrake |
| マインドマップ | XMind 中国製。結構おいしい操作性。でも、win版はよく落ちる。Mac版はちょっと前まで起動すらしなかったけど、最近のバージョンで改善。将来に期待。 |
| メディアプレーヤー | Songbird 最近本格的にiTunesから乗り換えたけど、特に問題ないんじゃないかと思う Miro 動画専用かな。今のところ満足な出来。 Amarok |
| DTP | Scribus インストールが激しく難しい GIMP たいていの人はPhotoshopなんて要らないんじゃないかと思う。Perlでマクロも組める。 |
| フォント | IPAフォント OOoのPDF出力時にはTTFフォントが必要なようで、日本語用にIPAフォントがおすすめ。 |
| UML | Jude/community 国産。MacOSX版もざっと見たところ、普通に動く。 |
Entry: ブックマーク
ブックマーク
- TED.comは、最高レベルの英語学習コンテンツでは?
去年、TED Talkで英語の勉強してたことがあったけど、サイトが尋常じゃなく重いのでやめてしまった。ニコラス・ネグロポンテとかゴア前副大統領とかが聞きやすくてよかった。ゴアさんは本題の環境問題に入る前までが面白い。あと英語の勉強なら動画内をテキストで検索できるGoogle Indexesも面白いかもしれない、と思いつつも全然利用はしてはいない。 - 英会話ドットネット、英会話SNSに位置情報で交流できる「Friend Map」追加
- 本を読んで分かった任天堂の「今そこにある危機」
DSは参入障壁がハンパないときいた。是非間口を広げてほしい。 - ゼンリンの「道の駅」携帯サイトにトイレ情報追加
- 海外Webサイトを「Japanize」拡張を使って日本語で使う
- Android、OSは無償でも初期開発コストは想像以上に高い--HTC、HT-03A説明会を開催
- Twitterはまだまだ広告に対し慎重な態度を維持
- GENOウイルスに同人サイト連鎖感染 拡大防止へ協力の輪広がる
- Firefox 拡張を jQuery で書く! Jetpack を使ってみた。
- 正しいマスクの使い方: 咳やくしゃみの人にそれを譲ってあげること
専門家でさえ「マスクに予防効果があるという事実は立証されていない」と言うに留まっているのに「効果がない」とテレビやネットで断言する人がいるのは問題だ。とは言え、このエントリーのまとめはそれなりに説得力があった。飛沫感染と飛沫核感染を混同してる人の戯言とは一線を画する。ただし、この実験結果も示しているように、マスクの予防効果は無視できないと思う。濃厚接触時の予防効果については専門家も否定してないようだし、マスクをすることで無闇に呼吸器に手を触れないという効果もある。いずれにしても、この実験は十分「科学」してると思う。ちなみに僕は先週まではマスクしてたけど、もうしていない。ある程度自体が見えてきたので警戒を緩めるのは自然な流れ。
- 「大地震の時のお礼にマスク」台湾から兵庫・大阪へ
こういうニュースは泣ける - 「マスクで予防」過信は禁物 ウイルス、髪や服に
- 新型インフル、騒ぎ過ぎの代償
「日本人ときたら」なんて言ってる日本人は5月初頭のBBCニュースが連日、日本同様の危機感をもって報道してたことを棚にあげるのか。 - なんと10倍のエネルギー量、世界初の「空気で充電できるバッテリー」が登場へ
- パナソニック、KDDIの2009年au夏モデルに端末を供給中止
秋にはauでAndroidっていう解釈であってる?
TwitterでニュースFeedをフォローし出してからおもしろ記事がありすぎて全然追えない。
Entry: ブックマック
ブックマック
- 紙の本が90%亡くなって欲しいと弾言したくもなる、たった一つの理由
90%ってのは謙虚でかつ現実的な数字。そのくらいはなくなりそう。 - Kosmix
日本語情報も充実させて欲しい - 予備バッテリーにもなるiPhone充電器
- ホンダ開発、簡単に装着できる「外骨格」:画像と動画で紹介
キャノンの工場にいかがでしょう。 - 話題のAndroidケータイ 操作感を動画でチェック
やばい、完全に欲しくなってきた。
Subscribe to my RSS feed