タグ

JavaScriptに関するf99aqのブックマーク (293)

  • ローカルストレージに簡単な解決策はない

    原文:“There is no simple solution for local storage” (on March 5, 2012 by Chris Heilmann) 要約:私たちは良いデータストアとして localStorage を推奨するのをやめなければならない。パフォーマンスがひどく損なわれるからだ。しかし残念なことに、代わりとなるものはまだ完全にサポートされておらず、また簡単に実装できるものでもない。 Web 開発において、うますぎる話に出くわすことは常々だ。そういったもののいくつかは良いもので、だからこそそれが「すべて」として目立ってしまい、開発者を使うように仕向けてしまう。しかし、多くの場合、良いと思われていたものはそこまで良いものではない。また、しばらく使ってみてはじめて「間違っていた」と気づかされるものなのだ。 そんなもののひとつに、localStorage がある

    ローカルストレージに簡単な解決策はない
    f99aq
    f99aq 2012/03/18
    同期APIしかないので、UIがblockされる問題。
  • jQueryのDeferredオブジェクトについて調べてみた - AOEの日記

    はじめに 最近になって jQuery に Deferred Object と呼ばれるものが追加されたことを知りました。バージョン1.5から追加になったようです。 ここのところ色々な場面で非同期処理と付き合うことが多かったこともあって調べてみたのですが、中々嬉しい機能を持っているやつであることが判明したので、調べた内容についてまとめてみました。 非同期処理は結構書きにくい jQuery Deferred オブジェクトは非同期処理を書きやすくするために用意されたものです。でも何でそんなものが追加されたのでしょうか? 非同期処理は複雑になってくると書きにくいものです。Ajaxリクエストを例に挙げてみます。 $.ajax({ url: "serviceA.json", success: function(data) { // リクエストが成功したときの処理 }, error: function(x

    jQueryのDeferredオブジェクトについて調べてみた - AOEの日記
  • こてさきAjax:マルチデバイス連携を実現する WebIntents 〜基本と使い方編〜 - livedoor Blog(ブログ)

    新年明けましておめでとうございます。年も宜しくお願いします。 さて、今年最初のPOSTは、僕が今一番興味を持っているAPIの "Web Intents" について取り上げます。 この、"Web Intents"は、Androidの "Intent" に非常に良く似た仕組みで、異なるWebアプリケーションを自由に連携することを可能とするAPIです。Webサイトの不足機能に対し、他のWebアプリの機能を利用することが可能になるため、スピーディーなWebアプリの開発を実現してくれます。利用するユーザーにとっても、手慣れたWebアプリを利用できるメリットが有ります。 このAPIの更に興味深いところは、 Device機能の利用 デバイス内の固有の機能(カメラや、住所録など)をブラウザから利用する。 Web of things スマートフォンやテレビなどのマルチデバイス連携サービスをWebで実現する

  • モバイルからクラウドまで、幅広く活躍するCouchDB

    モバイルからクラウドまで、幅広く活躍するCouchDB:こんなときに役立つCouchDB(1/3 ページ) 「NoSQLデータベース」と呼ばれるものの中で、あまり目立たないがよく見ると面白い機能を搭載しているCouchDB。この連載ではCouchDBの役立つ場面を紹介していく(編集部) CouchDBってどんなことに使うの? 「CouchDB? 名前は聞いたことある、ドキュメント指向、JSON……、特徴も何となく分かっている、だけど、どんな場面で使うの?」 CouchDBについて、こんなイメージを持っている方は多いでしょう。この連載ではサンプルアプリケーションを作りながら、「こんなときこそCouchDB!」という活用例を解説していきます。 連載「ゆったリラックス! CouchDBがあるところ」でもCouchDBの特徴を解説していますが、あらためてCouchDBについて、リレーショナルデータ

    モバイルからクラウドまで、幅広く活躍するCouchDB
  • instanceof considered harmful or how to write a robust isArray — Perfection Kills

    `instanceof` considered harmful (or how to write a robust `isArray`) Checking types in Javascript is well known as a pretty unreliable process. Good old typeof operator is often useless when it comes to certain types of values: typeof null; // "object" typeof []; // "object" People often expect to see something like “null” in the former check and something like “array” in the latter one. Fortunate

  • Let's WeakMap - 枕を欹てて聴く

    ES.nextとして入っていて, ECMAScript 6にも入りそうな気配がするWeakMap. という訳で. WeakMapとは WeakMapとは, harmony:weak_maps [ES Wiki] keyへの参照が弱参照 keyが任意のObject valueはなんでもあり というものです. 弱参照であるため, WeakMapのkeyに指定されたObjectが, weakなreferenceからしか参照されていなかった場合, GCに回収されます. また, WeakMapという名前が隠しがちですが, どちらかと言うと主機能は任意のObjectがkeyとして取れるということでしょう. var map = new WeakMap(); var obj = {}; map[obj] = "OK"; // このとき, toString()されたりしない. Objectをとれる 従来のO

    Let's WeakMap - 枕を欹てて聴く
  • node.js C/C++ addons 入門 - unknownplace.org

    node.js のドキュメントを見ていたら C/C++ で簡単に拡張が書けそうだったので試してみた。 addons - Node.js Manual & Documentation ドキュメントに載っている hello.cc をみてみると: #include <v8.h> using namespace v8; extern "C" void init (Handle<Object> target) { HandleScope scope; target->Set(String::New("hello"), String::New("world")); } この extern "C" void init (Handle<Object> target) というやつが、jsで require("hello") したときに呼ばれる感じらしい。この関数だけは必ず実装する必要がある。 この中の Ha

  • Closure Library & HTML5 Presentation

    Closure Library & HTML5 自己紹介 伊藤千光(いとう ちひろ) @webos_goodies http://webos-goodies.jp フリーで Web 開発やってます Gadgets API Expert Closure Library 書きました→ Agenda Closure Library について Closure Library 入門 Closure Library の HTML5 関連機能 Closure Library について Closure Libraryの特徴 Googleの主要なプロダクトで利用されている 豊富なUIコンポーネント どうでもいいよね Closure Library のアイデンティティ GoogleJavaScript開発ノウハウの結集 量より質の改善 体系化された構造 メンテナンス性の向上 大規模開発への対応 実行効率を

  • PHPのイタい入門書を読んでAjaxのXSSについて検討した(3)~JSON等の想定外読み出しによる攻撃~ - ockeghem(徳丸浩)の日記

    昨日の日記の続きで、Ajaxに固有なセキュリティ問題について検討します。今回はJSON等の想定外読み出しによる攻撃です。これら攻撃手法は来ブラウザ側で対応すべきもので、やむを得ずWebアプリケーション側で対応する上で、まだ定番となる対策がないように思えます。このため、複数の候補を示することで議論のきっかけにしたいと思います。 まず、作りながら基礎から学ぶPHPによるWebアプリケーション入門XAMPP/jQuery/HTML5で作るイマドキのWeから、Ajaxを利用したアプリケーションの概念図を引用します(同書P20の図1-23)。 前回、前々回は、(5)のHTTPレスポンスの前後で、JSON等のデータ作成(エンコード)に起因するevalインジェクションや、(5)のレスポンスを受け取った後のHTMLレンダリングの際のXSSについて説明しました。 しかし、問題はこれだけではありません。正常

    PHPのイタい入門書を読んでAjaxのXSSについて検討した(3)~JSON等の想定外読み出しによる攻撃~ - ockeghem(徳丸浩)の日記
  • はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知

    はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28

    はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
  • 2011年最速のウェブアプリ開発環境はnode.js/CoffeeScript/Expressだ! - エウレカ技術部

    nodejs, coffeescript 技術をアレして遊んでたい竹馬です。 概要 みなさん、NodeJSをご存知ですか? サーバーサイドをJavascriptでやるというアレです。 CoffeeScriptはどうでしょう? 簡易な文法で、ベストプラクティスなJavascriptのコードを生成してくれます 実際に実行するアプリケーションの、最小環境はこのようになります ### app.coffee ### express = require 'express' app = express.createServer() app.get '/', (req,res) -> res.send 'Hello World' app.listen 3000 これを実行して http://locahost:3000/ にアクセスすると、ブラウザ上ではHello,World! と表示されます っていうの

  • モナド: お前はもう知っている | Webシステム開発/教育ソリューションのタイムインターメディア

    はじめに 過去に私がHaskellを学び始めた時、 真っ先に疑問に思ったことはモナドの存在だった。 当時は全くと言っていいほど理解できなかったが、 最近Haskellを学び直して ようやく理解することができた(と思う)。 という訳で、現時点での私のモナドへの理解を示すためにこの記事を書く。 ここではモナドの質が何なのか概要を示す。 正確な説明は数多あるモナドについてのチュートリアルを参照されたい。 Hellow World問題: IO, Monad, fail 新しい言語を学ぶ時、まず間違いなくHello Worldを書くだろう。 HaskellでHello Worldを書くとこうなる: この1行だけを見ると普通の命令型言語と大して変わらないように思える。 ところでHaskellには強力な型推論がある。 そのため型宣言を省略しても処理系がよしなに解釈してくれる。 ただ普通はコードの意図す

    モナド: お前はもう知っている | Webシステム開発/教育ソリューションのタイムインターメディア
  • pjax こそが pushState + Ajax の本命 - punitan (a.k.a. punytan) のメモ

    pjaxの前にpushStateとは AjaxとjQueryの説明は不要として、pushStateとはなんぞや。 pushStateを使ってブラウザの履歴に対する操作をし、HTMLの一部のみを書き換える動作でもブラウザの戻る/進む機能を実現できる方法のひとつ。Ajaxなページを再現し、かつURLを見慣れた方法で自然にpermalinkを表現できる。 有名なところではGitHubで使われてるアレ。 hash fragment (/#!/) ブラウザの履歴を機能させるため、URL の fragment (#) を使ってAjaxなページを実現する方法。一時期もてはやされた感があるが、さらなる「#!」URL批判 - karasuyamatenguの日記 など合理的な反論があり、これから導入するのはためらわれるところ。 有名なところではTwitterで使われているあの厄介者。 pjaxとは pjax

    pjax こそが pushState + Ajax の本命 - punitan (a.k.a. punytan) のメモ
  • 単独 var パターン - A Memorandum

    var宣言の巻き上げ(hoisting) JavaScript では関数内部のどこにでもvar文を書くことができますが、これらの変数はその関数の先頭で宣言されたものと同じように動作します。 以下のコードは、1つ目の alert で"undefubed"が表示され、次に"local"が表示されます。 myname = "global"; function func() { alert(myname); var myname = "local"; alert(myname); } func(); このコードは以下の実装と同じような振舞をすることになります。 myname = "global"; function func() { var myname; alert(myname); myname = "local"; alert(myname); } func(); 単独varパターン 前述の

    単独 var パターン - A Memorandum
    f99aq
    f99aq 2011/06/26
    var a = 0, b = 1; の様に単独の var で宣言するパターン
  • 「JavaScriptと性能についての本当の話」をしよう。ダグラス・クロックフォード氏

    JSONの発見者でJavScript界の重鎮であるYahoo!のダグラス・クロックフォード(Douglas Crockford)氏。米オライリーが主催するイベント「Velocity 2011」で、セッション「JavaScript & Metaperformance」を行いました。 いまWebブラウザ間でJavaScriptエンジンの性能競争が行われていますが、その影響とこの先の展望について語っています。JavaScriptプログラマなら必見の内容を、公開されたビデオを基に紹介しましょう。 JavaScript & Metaperformance これから、JavaScriptと性能についての当の話をしよう。 JavaScriptはみなさんご存じかな? いまや世界で最もポピュラーになったプログラミング言語だ。 JavaScriptは、Javaからシンタックスを、Schemeからファーストク

    「JavaScriptと性能についての本当の話」をしよう。ダグラス・クロックフォード氏
  • subsetじゃない悲しい話 (JSON編) - 枕を欹てて聴く

    https://tc39.github.io/proposal-json-superset/ JSON編以外はありません. Edge case "JSON: The JavaScript subset that isn't Timeless" URL 2011-05-16 15:49:26 via PNBT このような記事が JSON: The JavaScript subset that isn't — Timeless つまり, LineTerminatorに\u2028 / \u2029が含まれない(JSON)ので, StringLiteralがうっかりJSONの方が許容範囲が広がってしまっているという話です. eval('"\u2028"'); // SyntaxError JSON.parse('"\u2028"'); // OK 自作ECMAScript Engine, lv5

  • vs UTF-8, UTF-16, UCS4 - 枕を欹てて聴く

    前置き おはミルキィ! ChromeFullFeedが公開停止になった話を前置きとして書いていたのですが, あまり関係がないのと, 長くなりそうになってきたので, 別の記事に分けました. http://d.hatena.ne.jp/Constellation/20110530/1306701693 概要 という前置きで. ECMAScriptと切っても切れない文字コード, UTF-16. iv / lv5はUnicode変換のためにICUに依存していたのですが, UTF-8 <=> UTF-16なら何とか自分でも書けるのではないかと思い, Unicode Converterを書きました. これでlv5の依存はlibboost, libgc (Boehm GC)に減りましたー. Unicodeの変換の教授, bugつぶしにおいて, id:masa141421356 さんに非常にお世話になりま

    vs UTF-8, UTF-16, UCS4 - 枕を欹てて聴く
  • decodeURIComponentのもろもろについて - 枕を欹てて聴く

    追記1 SpiderMonkeyのサロゲートエリアのbug issue は修正されました! (該当commit) 記事の一番下を御覧ください. 追記2 V8のサロゲートエリアのbug issue は修正されました!(該当commit) これで以下の記事のサロゲートエリアのbugはV8, SpiderMonkey, JSCで修正されました 普段1.5ヶ月に1記事しか書かないのに, 今日は3つも書いて正気の沙汰じゃないで... id:piro_or さんよりcommentで, id:nanto_vi さんの以下の記事の話を受けましたのでー. (commentついたの1年ぶりで感涙) 文字列と UTF-8 バイト列の相互変換: Days on the Moon リンク先の記事では, 以下の方法によるUTF-16 <=> UTF-8の変換が記載されています. function toUTF8Octe

  • Backbone.jsを利用したクライアントサイドMVCの導入についてそろそろ書いておくか - 出町ミスド攻防記

    jQueryヘビーなアプリケーションの問題点と、MVCによる構造化の必要性 jQueryは、ブラウザ上で動くJSアプリケーションの開発生産性を劇的に向上させました。DOM操作による動的なページ書き換え処理などは、セレクタを使ってちょろっとコードを書くだけで、ほんの数行で記述できてしまいます。 しかし、この方法の延長で、大規模なJSアプリケーションを構築することは果たして現実的でしょうか。例えば「GMail」や「New Twitter」程度の規模のJSアプリケーションを書かなければならないとしたら、どうでしょう? 大規模なJSアプリケーションを開発するには、こういった手法を延長するのではなく、より洗練されたデザインパターンを導入する必要があります。この目的にぴったりのデザインパターンが、「MVC」デザインパターンです。 MVCパターンは、Webの世界ではサーバサイドプログラミングで広く知られ

    Backbone.jsを利用したクライアントサイドMVCの導入についてそろそろ書いておくか - 出町ミスド攻防記
  • はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知

    はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28

    はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知