Subscribed unsubscribe Subscribe Subscribe

javascript

JavaScriptで任意のテキストをバイト列からラスタ画像化する、またはその逆

id:monjudoh や id:nishiohirokazu と話してて作ったんだけどとりあえず使い道なかったので共有します。テキストをレンダリングして画像にするという話ではなく、 テキストを UTF-8 に変換する UTF-8 化されたバイト列であるテキストをラスタ画像 (ImageData…

pixiv Tech Meeting #1 にて発表してきました。

ひょんなことで pixiv といろいろ縁があったので発表に至りました。 PHP を JS に変換する「Phjosh (仮)」についてです。誰にも聞かれなかったのであえて書くと、Phjoshの開発者の脳内発音は「fjosh」みたいな感じです。Phjosh(仮)プロジェクトView more pre…

java-ja.js #2 で『AAなゲームをJSで』を発表しました

AaなゲームをjsでView more presentations from Moriyoshi Koizumi.動画をAAに変換するデモは以下で観れます。 (動画がTheoraなのでSafariは非対応)http://dl.dropbox.com/u/673207/aalibtest/index.html紹介したサンプルコードその1: <html> <body> <pre id="screen" style="width:80ex; height:25em; line-height:100%; color:white; background-color:black"></pre> </body></html>

画像処理を JavaScript で行ってなんかのサービスを作る実験

最近 JS + JSONP だけを使って何かつくるのがマイブームなのですが、今回は 2 つの Twitter アカウントのプロフィール画像の類似度を調べるというものを作ってみました。似たもの診断「Canvas のセキュリティモデルでちょっとはまった件 (2)」で使った手法を…

JavaScript で x86 アセンブラ (32 bit) を書いてみた

4/22追記: Mach-O builder も実装したので Intel Mac でも遊べる。JQuery っぽい文法で、ブックマークレットとして簡単に遊べるアセンブラが欲しいと思って勢いで書いてみた (デモ)。とりあえず以下のサンプルが動くくらいにしか実装してない。 var buf = ne…

現在表示中のページのはてなブックマークのコメント (ブコメ) を表示するブックマークレット

作っている途中でここの車輪の再発明をしていることに気づいたわけですが、こちらははてなスターも出るし、ブックマークレットを呼び出すためのブックマークをもう一度クリックすることで表示を消せるようになっているのでまあいいかとか思ってます。 javasc…

ワンライナーでパラパラ漫画作成ツール in JS

漫喫であまりに暇だったのでついカッとなって作った。 javascript:(function(d,w,h,z,f,t,u,a,n,c,o,p,m,q,i,j,s){s="n=d.createElement('canvas');with(n.style)width=n.width=w,height=n.height=h;n.setAttribute('style','position:absolute;left:0;top:0…

μPD7752エミュレータをJSに移植した

JSでCSM音声合成をやろうとしてたら (需要ありそうだし)、wonderflの「音声合成もどき」にちょっと先を越されてしまい、なんとかインチキできないかといろいろ考えて、ふとパピコンのエミュレータから持ってくればいいじゃんと思い立ち、探したらあっさりと…

undefinedだけじゃないのか、デフォルトのグローバルオブジェクト

ECMA-262を読んでいたら、たまたま見つけたのでメモ。いつもNumber.NaNとか使ってた。 15.1.1 Value Properties of the Global Object15.1.1.1 NaN The initial value of NaN is NaN (8.5). This property has the attributes { DontEnum, DontDelete}.15.1.…

Adobe MAXのセッションでなぜか発表してきた

2009/2/23追記: 発表資料はこちら。最近「何の人かわからない*1」とよく言われ、アイデンティティを喪失しつつある今日このごろ、Adobe MAXというアドビさんのイベントの午後のセッション「出張JUIカンファレンス - Flashはもういらない?」にて、kawa.netの…

文字列繰り返しベンチマーク take 3

これの続き。 なんかかなりjitterがあるみたいでおかしな結果になってるんだけど、アルゴリズムごとの特徴は出てるので。 - Chrome FF3.0.5 FF3.1b2 IE6.0 IE8.0b2 Opera Safari WebKit/r40352 concat_op 32 203 150 747586 453 156 51.5 32 join 36 478 596…

弾さんに言及されたので

まさに同じコードでベンチマーク取ってる途中で (や、まじで) エントリを書かれてしまった。なんで気づかなかったんでしょうね。こういうの。ここで言及していただいてることなんですけどね。ちなみに。あと new Array(n).join(s); はどうかってブクマコメを…

文字列繰り返しベンチマーク take 2

追記: もっとよいアルゴリズムについて教えてもらいました (1, 2)。新しい結果とコードはこちら。TraceMonkeyの結果が不正確だったので取り直した件ですが…。速くはなったけど、あまり変わらず。という残念な結果に。 Chrome FF3.0 FF3.1b2 IE6 IE8 Opera9.6…

JavaScriptでExcelのドキュメントを生成してみた

時間がないのでまだPoCの段階だし、手短に。MS ExcelとかWordとかいろんなマイクロソフト製品の文章ファイルのバイナリ形式は「OLE2 Compound Document」というファイルシステム的な構造を持ったコンテナがベースとなってまして、昨日今日で、これを作ること…

同じ文字列のn回繰り返しを作る最速の方法を探求してみた

注意: FF3.1b2の結果が不正確です。取り直したのはこちら。ちょっとした事情により、ある文字列のn回繰り返しを作る関数 (PHPでいうところのarray_repeat(), Perlで言うところの「"..." x n」、RubyやPythonで言うところの「"..." * n」) を高速に実装しなけ…

JavaScriptで音を鳴らしてみよう

id:Voluntasのおかげで自分的に再燃したブックマークレット熱。まあブックマークレットというと実用的な感があるけど、まったくそんなことはなく、要はワンライナーのこと。いろいろ作ってみた中で、ちょっと汎用化できそうなものがあったので若干体裁を整え…

各ブラウザのJSランタイムがどこまで再帰できるか試してみた、という。

誰でも一度は試すと思うんだけどV8がなんかtailcall最適化してそうで気になったのでためしてみました! Windows上の各ブラウザしかしらべてません。完全にへたれです。 試したやつ Firefox (Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.0.1) Gecko/…

JavaScriptを使うバイナリアンの心をくすぐる極上プレゼン

(via Ajaxian)「Heap Feng Shui (風水) in JavaScript」。ポイントを要約すると Webブラウザ exploit の手法について概説 スタックオーバフローは非常に難しい 一般的な heap exploitation も難しい ほかの可能性は? 配列の介在しないスタックオーバフロー (…

もしswitch()がλになれたら

var f = switch (a) { case 0: return 0; case 1: return 1; default: return f(a - 2) + f(a - 1); }; 関数の結果にもマッチできるわけで。 var f = switch (a) { case f(a + 1) % 8 + 1: return a + 1; default: return a * 4 + 3; }; しかも yield (コル…

本気でJavaScriptによる端末エミュレーションを考えてみよう (1)

昔、某天才Yさんの紹介してくれたJS/UIXに本気で釣られて、JavaScriptで端末エミュレータを書き始めたことがあった。結局まごまごしているうちにAjaxTermが出てしまったのだが、こちらはすべてサーバサイドでエスケープシーケンスを解釈してHTMLにレンダリン…

Arrayのコンストラクタがオーバロードできてしまう問題

これは知らなかったのでメモ。FireFox 限定のようですが。 Array = function() { alert('You gotta blah!'); };とやった後に >||js| [1, 2] |