JavaScript
setTimeoutは難しい。いつ呼ばれるかよく分からないし、ライブラリーを使うとそのライブラリーがsetTimeoutを使いすぎてしまう。よく分からなかったけどsetTimeoutすると動くからそうしていた、んだけど実はタイミングの関係で偶然うまく動いているように見…
先日作ったsjspですが、その挙動も安定し、最低限必要かと思われるオプションを作ったので、最初の安定版リリースとして0.1.0というタグを打ちました。 github.com 同時に、Hackageにもアップロードしました。 sjsp: Simple JavaScript Profiler これでGitHu…
あらすじ Web技術が複雑になる中で、JavaScriptのプロファイリングをとる方法とは。 プロファイリングを取るためのコードを手で書いてみましょう。 とてもシンプルで、かつ最高のJavaScriptプロファイラ sjsp を作りました。 本当にあった怖い話 上司 「とに…
最近、GitHubのヘッダーのデザインに変更があり、いくつかのリンクの位置が移動しました。Pull requestやIssuesのリンクはなかなか便利で、これはいい改善なのですが、元々あったリンクでよくクリックしていたものがドロップダウンの中に入ってしまい、使い…
Vimium、Vichrome、Vromeと、Google ChromeをVimのキーバインドで扱える拡張は幾つかありましたが、 ここに来て新しい拡張が登場しました。 cVimです。 Chrome Web Store - cVim特徴としては Vimのようなフォーマットの設定ファイル ビジュアルモードでテキ…
私は画像処理を避けてきました.画像処理ってなんだか難しそうだし, そもそも画像を簡単に扱ってデバッグしてみたいな環境をあまり知らなかったんです. もう画像処理は怖くない.我々にはcanvasがあります. ふと思い立って, canvasで画像処理するようなものを…
この記事では, Haskellに用いられる「遅延評価」の仕組みを, 図に描いて説明します. 更に, 遅延評価版のフィボナッチ数の無限列を, JavaScriptで実装します. 遅延評価とはどのように動くのか, 考えて行きましょう. HaskellのコードとJavaScriptのコードの比…
私がまだchromeのpackaged appを作って頻繁に更新していた頃は, アプリケーションをzipで固めたものをアップロードしたら一時間もせずに公開されていた. 非常にGoogleらしい, 自由でいいな, と思った. 嫌な雰囲気が漂い始めたのは, manifest versionを上げろ…
JavaScriptについては, 自分はいっぱいのことを知ってると思ってた.だけど, ちょっと触らないうちに, 世界はダイナミックに動いているようだ.取り敢えず, どんな他の解説を見るより, 次の動画を見て欲しい. Deferreds - Putting Laziness to Work | Dan Hebe…
どうも, 使いにくい.まず, いいところを先に言っておこう.chrome.extension.sendRequestの良いところ, それはコンテンツスクリプトへのマルチキャストができること.分かってる人ならこれ以上のことは説明しないでも分かってくれると思う. なにが不満かという…
って仕様上は500番ですよね?Google Chromeは404(Not Found)を返すような 最近コイツのurlが殺されない方法を考えてるbackground_pageにcreateObjectURLが発行したURLを送ってやれば,セッションを閉じてもbg-pageが生きてるからURLも生き続けるよね的なまぁb…
Local Playerがビデオに対応しました!!! ローカルのディスクにある動画(mp4)を再生できるようになりました!!!createObjectURLを使えばいいということに昨日気がついて, これだけはアップしておこうと思ってリリースしました.もう再生ソフトなんていら…
最近またLocal Player (Chrome Player)を実装しなおしています.一応説明しておくと, Local Playerは, 完全にローカルで動作する音楽プレイヤーです.シンプルさを求め(実装がめんどくさいだけ), 操作しやすく(これは大事), 良い感じのプレイヤーです.半年前に…
最近, Jisonを使おうとしている人をちらほら見るので, ちょっと入門的なやつを書いてみる. 定義(てけとー Jisonというのは, JavaScriptで書かれたパーサーを吐くことができる, パーサジェネレーターの一つ 現在Jisonは https://github.com/zaach/jison で入…
ずっと避けてきたCoffeeScriptを使ってみた HTMLはJade,CSSはLESS,JavaScriptはCoffeeScriptがいいんじゃないかな? インストールとかは公式に載ってるから割愛三つともVimのsyntaxが既に作られているのは嬉しい テキトーに書いたサンプルみたいな物Jade LESS…
1 2 > 1はfalse.トンチですか?いいえ, JavaScriptです. 優秀な奴はPython.エラーを吐くのはHaskell.嘘を付くのがJavaScript. なんでJavaScriptでこんなことになるのか.関係を表す演算子は左から評価されます.3 > 2 > 1 → (3 > 2) > 1 → true > 1両辺のToNumb…
Google Chromeのコンソールで, 「(」と打ってEnterしてみましょう. > ( SyntaxError: Unexpected token } えっ...? 僕 } なんて打ってないよ... ワケがわからないよ...いろいろ実験してみましょう. > ( SyntaxError: Unexpected token } > - SyntaxError: Unex…
> Number.prototype.n = function () { for(var i = +this, a = []; i <= n; a.push(i++)); return a; } [Function] > n = 15 15 > x = 1..n () [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 ] > x [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 1…
JavaScriptでは, ifの{}は省略できます. if (a > 10) foo(); else bar(); hoge(); は if (a > 10) { foo(); } else { bar(); } hoge(); と同じ. ECMAScriptの定義では, 12 Statement Statement: Block ... 12.1 Block Block: { StatementList(optional) } St…
最近コンパイラーのお勉強をしてます.練習で数式のパーサーをSLR(1)で書いてみたり,単純に下降再帰で書いてみたり,演算子順位法で書こうとしたりしています...でも, 数式をパースするだけなら, スタックとか作らなくてもいいんじゃね?数式を手計算で変形して…
前回の記事の続き的な何か.数式パーサーを下降!!!! じゃなくて書こう!!! 実は, id:ajalabox さんの http://d.hatena.ne.jp/ajalabox/20110328/1301319299 にかなり精神的に影響を受けた. うおおおおおおおおおおおおお俺も言語処理系作りてええええええええ…
最初に, 皆さんにブラウザーのコンソールで/.*/()を試していただきたい. そして, 他のタブとか色々試して欲しい.どんな文字が返ってきましたか?多分一意じゃないはず. バラバラ. ワケが分からないよ.そこで, このエントリーを思い出した. (前にも見たことあ…
配列を結合したいでゲソ! 堅実に定義するでゲソ! function concatenate (x, y) { for (var i = 0; i < y.length; i++) { x[x.length] = y[i]; } return x; } > concatenate(concatenate([1, 2, 3], [4, 5, 6]), ['foo', 'bar']) [ 1, 2, 3, 4, 5, 6, 'foo', …
やりたいことはタイトルのとおり.要はオーバーロードしたいお...※※※※ こういう願いは既出であること間違いないっ, ※※※※ よってここに書いてること, あるいは ※※※※ さらにエレガントな事がどっかに書かれてるかもしれないっ!!!とりあえずECMA-262を読んでみる…
前から, Quineというものがあることは知っていたのですが, 難しそうでずーっと避けていました.なんとなく気になって書いて見た.Quineと言うのは, ソースコードと全く同じ内容を出力するようなプログラムです.書いてる時には, 「あっちを編集したらこっちがう…
Closure Compiler使ってますか? JavaScriptのコードを圧縮してくれるGoogleのサービスです. 圧縮してくれるだけじゃなくて, ちゃんとErrorやWarningも吐いてくれるので, 私はJavaScriptのコードの検証にも使っています.さて, このClosure CompilerにはAPIが…
Google Chromeで動くアプリケーション「Chrome Player」を公開しています. ローカルにある音楽ファイルをブラウザーで再生しよう! みたいなソフトです. 最初はひどい状態でしたが, 今はなんとか使い物になるレベルになってきて, ユーザー1000人超えました! …
JavaScriptのオブジェクトを全部展開してみたいなぁという時に, var printobj = function(x){ (function(x, indent, output){ for(i in x){ output(indent + i + ': ' + x[i]); if(typeof x[i] == 'object'){ arguments.callee(x[i], ' ' + indent, output);…