2013年02月10日
うんかーJSでdatファイルを表示できるようになりました
ここに書いておかないと誰も存在に気が付かないような機能をうんかーJSに実装しました。
datファイルのドラッグ表示
ブラウザでうんかーJS*1を表示して、その上にdatをドロップするとそのdatを読み込んで表示できるようになりました。
ドロップしたdatはサーバなどにアップロードせずにローカルで全部処理しています。
現時点で最新のfirefoxとchromeでは読み込めることを確認しています。IE9、IE6では無理でした。
html5のFileAPIとかいうものを使っているのですが、それそのものではドロップされたファイルがdatであるか分からないので、ファイル名がdatファイルっぽいことを確認してから読み込んでいます。具体的には今のところ「/^\d{9,10}\.dat$/」なファイル名をdatファイルとみなしています。
うんかーJSでは元から生のdatを解析して描画していたので、簡単に表示できるようになりました。もっと前からやっておけばよかったかも。
ちなみに、datをドロップするとURLが割り当てられますが、一時的なものになるので、ブラウザを更新すると無効になります。
どーでもいい情報ですが、chromeでは平均的なdatファイルを一気に10000ファイル*2ほどドロップすると6000ファイルくらいは快調に読み込めるのですが、その後は猛烈に重くなるためやめておいたほうが良いです。どうも1つのタブで使用するメモリが1GBに近づくとメモリ使用量が激しく変動するので多分GCが動いているんだろうと思います。ウェブアプリを作る際はメモリを1GB使わないようにしたほうが安全かもしれません。
URLのドロップ
URLのドロップにも対応しました。2chっぽいリンクをうんかーJSにドロップするとうんかーJSで読み込みます。複数のタブでうんかーJSを開いてしまった時に、うんかーJSのタブをドロップしてスレッドを移動させられるので便利かもしれません。
ちょっと前まではハッシュでページの移動記録を管理していたので、うんかー同士ならイベントを仕込まないでも勝手にリンクのドロップでページを移すことができていたのですが、このごろハッシュを使用しないようにしたので、わざわざ別途に実装しました。
忘れそうなのでメモ
html5のFileAPIでdatファイルを読み込んでいるのですが、そのエンコーディングの指定をしっかりしないとブラウザごとで差が出るみたいなので書いておきます。
var reader = new FileReader(); // 読み込み完了イベント登録 reader.onload = function(ev){ // 完了 }; // IANA名じゃないと読み込んでくれない。firefoxとか reader.readAsText(file, 'Shift_JIS');
datファイルは普通「Shift_JIS*3」なので、FileReaderのreadAsTextにエンコーディングの指定を行う必要があるんですが、ここを「sjis」とか適当に指定するとfirefoxでは読み込みが行われないみたいです。実はfirefoxではエンコーディングの指定しないでも文字化けせずに読めるので、firefoxだけを対象とするなら指定は要らないのですが、そうするとchromeで文字化けしてしまいます。
上のコードに書いてありますが、firefoxでもchromeでも読めるようにするには「sjis」の正式名称である「Shift_JIS」を指定する必要があるみたいです。
最近のうんかー
すべてのスレッドタイトルに「unkar@板名」を入れるようにしたら、うんかーをまるごとコピーして生成しているウェブサイトのタイトルにも全部unkarという文字が入るようになったみたいです。そういう自動生成ツールでページを量産するのならせめてコピー元のサイト名くらいは削るようにした方がいいと思います。
というか色々とややこしいので削って下さい。
- 8209 https://www.google.co.jp/
- 3579 http://usbcafe.blog111.fc2.com/blog-entry-116.html
- 1723 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CC0QFjAA&url=http://d.hatena.ne.jp/heiwaboke/20090822/1250952817&ei=FH4XUarxFsjbkgXdsYGQAQ&usg=AFQjCNEnWH16A8VzMc0iYXkAnqYd9wrrYw&bvm=bv.42080656,d.aGc
- 1517 http://www.news-us.jp/article/373225907.html
- 1310 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=4&ved=0CEQQFjAD&url=http://d.hatena.ne.jp/heiwaboke/20080321/1206032194&ei=trgXUdnjCqGpiAfYwIHwBA&usg=AFQjCNEi2SmOTMpT1T0Ciu0Myye3uCexlw&sig2=fU5qq-ZkDkB34tW_GC6KtA
- 1263 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&frm=1&source=web&cd=1&ved=0CDIQFjAA&url=http://d.hatena.ne.jp/heiwaboke/20090718/1247864334&ei=9oUXUerDK4mJlQXk2YCICg&usg=AFQjCNGW318Sqam7mO2sLi3gwrtxd7KPqQ&sig2=0OkVuzgIj1m4xNtCi2CrQg
- 896 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&ved=0CEAQFjAB&url=http://d.hatena.ne.jp/heiwaboke/20121103/1351952490&ei=qJEXUdPrG8qxkgXT7IFY&usg=AFQjCNENPH_Q47FCdqCtRim0upowhhy-yw&sig2=EaZTL5PM2xvEXNAybHS9JA&bvm=bv.42080656,d
- 702 https://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CCkQFjAA&url=http://d.hatena.ne.jp/heiwaboke/20100322/1269243017&ei=W735UZHTGILwkQWUoYGAAQ&usg=AFQjCNEttoDTuMZ6E2JPhLu1kcDCw-ic8g&sig2=VXkypzHamIlGH9Phgq3Gfg
- 698 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=3&sqi=2&ved=0CEIQFjAC&url=http://d.hatena.ne.jp/heiwaboke/20110311/1299772952&ei=7pYXUbLABcWfmQX574GwDg&usg=AFQjCNHouCytprQuF2CI0DWnCMu0mG-gPg&sig2=-YbPt1-CDPP8odiTV0h2Tw
- 569 http://tanaton.com/