Wonder Code

プログラミングとか、PCについてが多いかな

Fetch APIを触ってみた (GET編)

Fetch API は PromiseベースのXMLHttpRequestといった感じのAPI

Promiseベースのため、thenやcatchを使い、処理を書いていく。

この記事はFirefox 39 Nightlyのfetchを元に書いています。まだStreamではありません。

このエントリーではArrow function を使用するようにします。


fetch("example.com/some.json" {
    "method": "GET",
    "mode": "cors",
    "headers": {"some-header": "value"},
})
    .then((response) => {
        console.log(response) // Response
        console.log(response.status) // statusが表示
        console.log(response.headers.get("Content-Type"))
        response.json()
            .then((data) => {
            console.log("This is json", data);
            }
            .catch((err) => console.error(err));
            }
    })
    .catch((err) => console.error(err))

response.jsonを呼び出すことでjsonとしてデータを取得できるが、そこから返されるのもPromiseなので、 thenとcatchをつかって処理を分けることができます。 response.json以外にもresponse.blob, response.arraybuffer, response.textなどがあります。

response.headers.get(header_name)とすることでHeaderの情報を取得できます。

URLの他にオブジェクトを渡すこともでき、"method", "mode", "headers"などを含めることができる。

"method"はこのリクエストのhttp methodを指定する。(GET, POST, PUTなど) デフォルトではGETになる。

headersはこのリクエストに付属するHeaderである。しかし、XMLHttpRequestと同じように、一部、含められないHeaderがある。

含められないHeaderについてはここが詳しいです。

Forbidden header name - Glossary | MDN

Forbidden response header name - Glossary | MDN

"mode"は以下のものを使用できます。

  • "same-origin" 同一オリジン以外のリクエストはrejectする

  • "cors" 適切なCROs Headersを返す他のオリジンも許可する CROs Headersとは

    • Cache-Control
    • Content-Language
    • Content-Type
    • Expires
    • Last-Modified
    • Pragma

の事を指す。

  • "cors-with-forced-preflight" 実際のリクエストの前にpreflight checkを行うようにする

  • "no-cors" 内容が確認できないリクエストであることを示す。(CROs headersがなくstatusやdataを確認できない。[Globalなfetchでは使用できない])

これから、ES6が普及するにつれて、fetchも普及していくと思います。

かなりPOST リクエストに関することも書いてしまったかもしれませんが、POSTについてはまた書くかもしれません。

参考になったエントリー

Fetch API 解説、または Web において "Fetch する" とは何か? - Block Rockin’ Codes

Introduction to fetch()

Broadcast Channel APIを触ってみた

Firefox38で実装されているBroadcast Channel APIを触ってみた。 感想は、 簡単にフレームやタブ、ウィンドウ間の通信ができていい感じ。

この図が示しているように幾つかのcontextがBroadCastチャンネルに接続して、通信を行う。

var broadcast = new BroadcastChannel("broadcast"); //接続、または作成
broadcast.postMessage(data); // データ送信
broadcast.onmessage = function (ev) {
    console.log(ev.data);
} // 送信されたデータの取得

broadcast.close() // 接続の解除

こんなふうに非常に簡単にできる。 コンストラクタに渡す引数がChannelのidになり、すでにあるidを渡すと既存のチャンネルに接続できるようだ。

デモ

"Open Another Page"をクリックすると別のタブで新しくページが開きます。 片方のページで文字を入力して、send をクリックするともう一方のページの文字が変わります。

BroadCast Channel API Demo

参考

Broadcast Channel API - Web API Interfaces | MDN

ワダエフェ〜ムな物を作った。(Official)

最近話題のWada.fmのジングルを聞けるものを作りました。(非公式)(公式) これでいつでもどこでもワダエフェ〜ム! 疲れた時にワダエフェ〜ム! 悲しい時にワダエフェ〜ム! バブの泡でイイカンジの時にワダエフェ〜ム! など、いろいろな時にお使いいただけます。

「さいきんのおたよりぃ」も収録! 新しくPodcastを始めたくて、お便りコーナを作りたい人ぴったり!

使い方 大きなWada.fmの文字をクリックしてください

ワダエフェ〜ム

text-shadowやaudio element を使っているため古いブラウザでは見れないかもしれません。

追加して欲しい機能、問題点などがあれば、Pull request, issueをガンガンお願いします。 twitterで#wadafmbuttonでもOKです。

ソースはこちら

KiYugadgeter/wadafm-button

Changelog

2015/03/09
高速連打に対応
100回クリックすると・・・
2015/03/31
さいきんのおたよりぃ〜

Let's enjoy!

40個の図でわかるローマ帝国

ローマ帝国のことがよくわかる写真が多くあります。

ローマ帝国といえばカエサルアウグストゥスといった有名な皇帝が多く、私が世界史の中で一番嫌いな単元でした。

さて、このサイトはローマ帝国についてのいろいろな写真や図があります。

軍艦

噴火で失われた都市、ポンペイの公衆浴場

など、ほかにもいろいろあります。

また、「40個の図でわかる」シリーズはまだほかにもあり、40個の図でわかる「第一次世界大戦」や 「中東」などがあります。

よくわかるので興味のある方はぜひ!!

40 maps that explain the Roman Empire - Vox

FirefoxでH.264サポートについて

Firefox33からCiscoのOpen H.264がサポートされます。

そのため、これまでサポートされていたもの以外の MacWindowsFirefox などでもH.264が再生できるようになるそうです。

MP4が再生できるようになるのはかなりいいですな

しかし、下記のリンクのMozillaのブログにあるように、

"CiscoMPEG LA に特許ライセンス料を支払います。"

とありロイヤリティフリーになったわけではありません。

コーデック関係は特許の問題が絡んでくるのでいろいろややこしいですが、早くオープンな標準が確立してほしいですね。

Firefox — Aurora Notes (33.0a2) — Mozilla

Cisco の H.264 コーデックにより Web 上でのビデオの相互運用性が向上 | Mozilla Japan ブログ

マウスでぐりぐり動かせる人工衛星のモデルがかっこいいChrome Expriment

動画の中に動かせる3Dモデルが出てきたりして、JavaScriptだけで、できているとは思えない ものがいっぱいです。

人工衛星の現在の位置確認も動かしながらできます。

この彗星は動画の中に動かせる3Dモデルとして登場します

ちなみにこの人工衛星はISEE-3というもので、Wikipediaによると1978に打ち上げられ、1997年に運用が終了したようですが今年には民間団体がこの衛星の運用を再開し、データをインターネット上で公開する事を目指しているようです。

WebGL の ちからって すげー

A Spacecraft for All: The Journey of the ISEE-3

Google Chrome推奨です。

Googleの遊べるロゴでもう一度遊びたい!

Googleの検索のページのロゴが記念日などの際にそれにちなんだものにかわります

その中には、

ルービックキューブ

パックマンなど

ロゴで遊べるものもありますが、次の日には元に戻ってしまい遊べなくなってしまいます。

しかし、Googleの検索ページで何も入力せずに[I'm Feeling lucky]を押し、

「プレイできるゲーム、再生できる動画、遊べるおもちゃをすべて確認します。」

をクリックすると再び過去のゲームを遊べます。

ほかにも、面白いものが多いのでぜひ!!

Dooble interactive