2014年8月26日火曜日 Chrome.storage.syncを使ってみる Tweet Posted on 11:06 by S Izumi Chrome.storageを使うと、異なるマシン上のChromeブラウザ間で同じ拡張機能が保存しているstorageを同期してくれる。 このサンプルの機能は、テキストボックスに入力された文字列をChrome.storage.sync.setでストア。起動時にChrome.storage.sync.getで読み込んで上のdivに内容を表示。同期されていれば、その内容が異なるマシン上で同じになる、というもの。 setもgetも何らかのエラーが起きるとChrome.runtime.errorに文字列をセットする。ちなみに、getで指定されたデータが存在しなかった場合にはundefinedが帰ってくるだけでエラーにはならないので注意。 setでデー
はじめに Promises Bookという薄い本を書いているのですが、書籍中に出てくるサンプルコードはテストが必須であるという原則があります。 サンプルコードは必ずテストコードが必要となる。(読者がコピペして実行するようなコードをテストを書くべきである) promises-book/CONTRIBUTE.md at master · azu/promises-book サンプルコードとテストはNode(といってもほぼCommonJSというだけ)で書いています。 ECMAScript6 Promisesについての内容なので、ブラウザ/Node.js どちらの実行環境でもいいのですが、閲覧するのはブラウザが基本になると思うのでブラウザ向けのコードを表示したいという感じになると思います。 CommonJS -> ブラウザ用のJS といえば、browserifyやCommonJS Everywhe
オレオレMV**フレームワークを紹介する際にjQueryを引合いに出して語る事案が多く、そこで語られるjQuery批判が的外れもいいところなのが散見されるので書きました。 Abstract MV**便利フレームワーク・ライブラリを紹介するときに、jQueryの一番イケてない書き方を引き合いに出して比較して「こんなにすごいんです」と紹介するのは不毛極まりないのでいい加減に止めろ jQueryで書いたコードがひどいのは、クライアントサイドWeb(あえてこう書く)が過去10年近くにわたって設計を軽視してきた結果であり、その根本が変わらない限り、問題は変わらない jQueryエンジニアをdisりながら、Angularエンジニアを産み出すとかギャグじゃないの? 私個人のjQueryに対する見解 だいたい同意する意見: jQueryについての私見 - mizchi's blog mizchi / いか
Promise Anti-patternsを翻訳させて頂きました。著者のtaoofcodeから許可を頂いて翻訳、投稿しています。 Promiseは一度理解してしまえば簡単だが、いくつか頭を抱えさせるパターンがある。ここにあるのは私が経験したいくつかのアンチパターンだ。 ネストされたPromise 君は複数のPromiseをネストする: loadSomething().then(function(something) { loadAnotherthing().then(function(another) { DoSomethingOnThem(something, another); }); }); 君がこれをする理由は、両方のPromiseの結果で何かをする必要があるからだ。then()は一つ前のPromiseの結果しかコールバックに渡せないのでここでチェインを用いることはできない。 だが
express の後継だけあって期待が高まってる Koa ですが、あの珍妙な yield による同期処理っぽい記述がどのようにして支えられているかメモってみます。 年末年始を経てヤル気が高まってきたので、久々にnodeの話。 visionmedia/co さて本題。 早速ですが、koa の middleware における、あの特徴的な yield 天国は、koa ではなく co というモジュールによるものです。サンプルを見るのが早いです。 本件は yield を使うので、現時点では node v0.11.x を --harmony オプション付き実行が必要なことに注意してください 下記は co を単品で利用した場合のサンプルです。 /** * GETリクエストを非同期処理するモジュールを想定 * @example get('http://example.com')(function() {
このエントリをNode.js Advent Calendarにするか迷いましたが、Advent Calendarとしてはちょっとマニアックだったので、没になった方もアップします。ブログエントリの大掃除中です。 Node.jsを使うならEventEmitterを知っとくべし、という記事とかありますが、EventEmitter使ってるといくつか疑問に当たりますよね。 EventEmitterおさらい EventEmitterの基本的な機能をおさらいしておくと、EventEmitterというのは、イベントという単位で処理を行えるようにするためのモジュールで、イベントの受発信を行うことで非同期プログラミングを行いやすくするもの。 emitでイベントを発行 onで発行したイベントを受信 removeListenerでイベントを消すことができる onceで一回だけイベントを受信することができる で、こ
最近、angularが熱くて、twitter見てると、angular周りが活発に流れて来るのだが、 angularのウリにしてるデータバインディング、Backboneでも同じ様な事がpluginで出来る。 Backbone自体は、非常にミニマルに出来ているので、(おそらく今後も本体にこういう機能入らなそう...) こういう機能は自分で追加しないといけないのだが、pluginさえ入れれば動く。 幾つか類似pluginあるようだが、ここでは、stickitの事を書く。 stickitについて https://github.com/NYTimes/backbone.stickit NYTimes社のもの。 使い方 使い方は非常にsimpleでViewの中に セレクタと属性の紐付けを書く 対象となる要素がある状態で、stickit()と書く これだけ。 公式ページのsampleを実際にやってみる。
2013-08-24 200行で作る、enchant.jsを使った簡単ぷよぷよプログラミング やり方 はじめに この前enchant.jsでぷよぷよ by おっ立ち野郎を作って公開しました。 enchant.jsで作ったHTML5+JavaScriptな「ぷよぷよ」を公開しました これを知り合いR君に紹介したところ、嬉しい事に「僕もぷよぷよ作りたい!」といってもらえました。それでぷよぷよの解説サイトをネットで見つけて紹介しようと思いました。 しかし、テトリスの解説サイトは山ほどあるのに、ぷよぷよプログラミングの解説サイトが全然ありませんでした。特に完成まで解説しているサイトは見つけられませんでした。テトリスはあるのに。 ということで、今回ぷよぷよプログラミングの完成までの解説を書いてみました。これはenchant.jsの基礎をひと通り勉強された方におすすめです。クマをちょこちょこ動かすだけ
javascriptでちょっと賢いロガーっぽいのを作ったとしても、最終的にはconsole.logを使ったりすると、ログの表示箇所が全て同じファイル、行になるのでいまいち不便。 そこで、V8エンジンのブラウザだけだけど、スタックトレースを取得してログメソッドが実行された行数、ファイル名などを一緒に出力する方法を調べた。 を使えばいける。例えばこんな感じ。 Error.prepareStackTrace = function( e, st ) { return { functionName: st[0].getFunctionName(), lineNumber: st[0].getLineNumber(), //いろいろお好きに }; }; function log( msg ) { var obj = {}; Error.captureStackTrace( obj, log ); co
console.log(+[]); // 0 console.log(+[3]); // 3 console.log(+[null]); // 0 console.log(+[undefined]); // 0 console.log(+["3"]); // 3 console.log(+[1,2]); // NaN console.log(+[true]); // NaN console.log(+[false]); // NaN なぜこのような処理になるのか、JavaScriptの仕様書(ECMA Script Specification 5th)から説明してみましょう。 まず最初、単項+演算子(Unary + Operator)を評価する際に、ToNumberを呼び出すのは前述したとおりです。仕様書の(11.4.6)に書かれています。ではToNumberとはどのような処理でしょうか。
JavaScriptで便利な関数の代表例といえば、escape/unescape, encodeURI/decodeURI, encodeURIComponent/decodeURICompontのペアじゃないでしょうか? PHPからやるには、 rawurlencode => encodeURIComponent Ruby からやるには、URI.encode_www_form_component => encodeURIComponent がそれぞれ、対応する関数になります。 phpでは?rubyでは?とか、覚えるのめんどうじゃん? そうですよね。URIを手軽にパパっとエンコードしたいだけなのに、これらの関数を覚えるのめんどうじゃん。 かといって、Chrome/Operaを起動して要素の検証で。。 それも面倒な話だ。開発者ツール起動しっぱなしだけど、コピペすら面倒。だって標準出入力とパイプ
最近JavaScriptを触ることが多いのですが、JavaScriptのプロトタイプについて調べてもすぐに忘れてしまうので、ちょっとまとめてみました。 プロトタイプベース プロトタイプベースってそもそも何だろうと。僕の理解ではこんな感じです。 オブジェクトの振る舞いはそのオブジェクト自身とそのオブジェクトが保持するプロトタイプオブジェクトによって決定される またプロトタイプオブジェクトもオブジェクトなので、その振る舞いも1.に従う 1.と2.よりオブジェクトの振る舞いはプロトタイプを連鎖的にたどることとなる(プロトタイプチェーン) オブジェクトは静的な構造と関連せず、自由にプロパティを上書き/追加/削除することができる 同じコンストラクタから生成されたとしても、プロパティが同じとは限らない 以下のリンクが参考になるかと。 http://sumim.no-ip.com:8080/wiki/4
原文: The Baseline Compiler Has Landed on April 5, 2013 by Kannan Vijayan 水曜日に、私たちは Firefox Nightly に Baseline コンパイラを投入しました。始めから終わりまで 6 か月の作業の後、私たちはついに苦労の末の産物をメインリリースストリームにマージできます。 Baseline コンパイラとは何か? Baseline (いいえ、これに *Monkey のコードネームはありません) は、IonMonkey の新たなウォームアップコンパイラです。これは短期的にはパフォーマンス向上を、また長期的には新たなパフォーマンス向上の機会をもたらします。それは JaegerMonkey を不要にするための扉を開き、そして SpiderMonkey のメモリ使用量を大きく削減するという別の変化を与えることも可能に
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く