Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • May 05 2019 08:11
  • May 05 2019 08:05
    Travis azu/promises-book@9ed5f2e (update-deps-2019-05-05) canceled (1003)
  • Jan 25 2019 14:02
    azu commented #259
  • Dec 30 2018 10:59
    azu edited #248
  • Dec 30 2018 10:54
    azu edited #248
  • Oct 17 2018 03:54
    azu opened #290
  • Oct 17 2018 03:54
    azu milestoned #290
  • Oct 17 2018 03:45
    azu opened #289
  • Jul 16 2018 05:13

    azu on master

    chore: add .nojekyll (compare)

  • Jul 16 2018 05:05
    azu closed #281
  • Jul 16 2018 05:05

    azu on master

    fix(promise-rance): fix typo f… (compare)

  • Jul 15 2018 07:39
    azu labeled #288
  • Jul 15 2018 07:39
    azu opened #288
  • Jul 15 2018 07:39
    azu labeled #288
  • Jul 15 2018 07:39
    azu labeled #288
  • Jul 15 2018 02:14
    azu opened #287
  • Jun 27 2018 23:19
    azu labeled #286
  • Jun 27 2018 23:19
    azu opened #286
  • Jun 27 2018 23:19
    azu labeled #281
  • Jun 27 2018 23:17
    azu commented #259
azu
@azu

azu/promises-book@db96b8b
とりあえず、MochaとPromiseテストについて書いた。

コードではthen + catch 、テストではthenを使いましょうって方針

という感じの内容で書いてみた。
http://azu.github.io/promises-book/#_mocha_promises
サンプルとかイケてないから書き直す気がする。
もっと良いやり方もやっぱあるのかなー

azu
@azu

azu/promise-test-helper

thenで書くのはやっぱり、本質的なものじゃないのがテストに混ざるので、それ用の簡単なライブラリを書いてみた。

var shouldRejected = require("promise-test-helper").shouldRejected;
function mayBeRejected(){
    return Promise.resolve();
}
it("should be failed", function () {
    return shouldRejected(mayBeRejected()).catch(function (error) {
        assert(error instanceof Error);
    });
});

mayBeRejected() をテストしたいときに、最初にrejectedか呼ばれることを期待するというのをshouldRejected(mayBeRejected())という感じで書けるようにした感じ。

resolveされたらエラーにして、thenもあえて使う必要ない気がしたので、catch以外だとエラーに落ちる感じにした。

azu
@azu

azu/promises-book@55b647d

http://azu.github.io/promises-book/#control_tests

azu/promise-test-helper の簡単な実装を使った"意図したテストを書くには"を追加した。

FulfilledとonFulfilledみたいな用語が混在してたり、リズムがよくない…

azu
@azu

azu/promises-book@33ac434 azu/promises-book@e79ad2c

リポジトリのテストの方もazu/promise-test-helperを使ったものに置き換えてみた。
行数自体は全体的に減った感じ。書き換えるときにreturnのし忘れがやっぱりいちばんのハマり所な感じがした。

azu
@azu

#6 Promiseのサブクラス作ってみようとしたけど、
native promiseのサブクラスは作れない感じなのかなー

http://speakingjs.com/es5/ch28.html
みたいにdelegateする感じしかないのかな。

azu
@azu
http://static.googleusercontent.com/media/research.google.com/en/us/pubs/archive/40673.pdf
via http://research.google.com/pubs/pub40673.html
Google Research の人書いた論文。
安全な権利の交換の話でQ使った話になってて面白げ
azu
@azu
#7 そろそろまじめに決めないとよくなさそうなので、
タイトルについてのissueを立てました。
azu
@azu
#20 MITとCS-BY-NC 2重に適応する意味があるのかよくわからないけど、
文章のライセンスはCC-BY-NCを適応しました。
azu
@azu
#7 書籍のタイトル とりあえず以下にしようかなと考えています。
「JavaScript Promiseの本」 #Promise本
1.0.0 初期リリースは以下のissueが潰せたら出すと思います。(6月ぐらい?)
https://github.com/azu/promises-book/issues?milestone=1&state=open
Eiji Kitamura
@agektmr
:+1:
Koji Ishimoto
@t32k
:+1:
azu
@azu
#43 書籍のタイトルを「JavaScript Promiseの本」に決定してマージしました。
(ちょうど250commit)
Yosuke Furukawa
@yosuke-furukawa
:+1:
Shota Kubota
@kubosho
:+1:
azu
@azu

Issues が循環参照起こしてきたので整理

Chapter2

Ch.2 に thencatchのセクションを追加して、
以下のissueを処理する。

  • azu/promises-book#40
  • azu/promises-book#10

IE 9以下でcatchがそのまま使えない問題って普通はどうやって対処してるんだろ?(Nodeとかでしかちゃんと使ってないから遭遇してない…)

Chapter4

Promiseを逐次処理するヘルパー のセクションを追加して、
以下のissueを処理する。

#46 sequenceな処理しようと思うと、Promise.allとかと違って、
promiseオブジェクトを返す関数の配列を渡すという感じになってしまうから、微妙に説明しにくい。
もしくは、題材を変えて Promise.any のような実装(Promise.raceは実はRejectedになったやつがあるとそこで終わってしまうので、若干罠っぽい)とかでもいいかもしれない。

これが処理できたら、残りは主に実行環境の話と序文ぐらいになるかな?

  • azu/promises-book#17
  • azu/promises-book#18
  • azu/promises-book#12

azu/promises-book#18 これどうするのがいいのか、若干悩んでる。
FirefoxとChromeはstableにネイティブPromise載ってるけど、全てのサンプルコードはそのまま<pre>の中身で実行出来るわけじゃないから、自動的に付けるのが微妙に難しい。

azu
@azu
azu/promises-book#41 表記は最後にざっと見ていく感じ
忘れてたけど、PDFのフォントの問題もどうにかしないと…
DocBookで使えてライセンス問題ない日本語フォントってなんだろなー
azu/promises-book#2
できればCI上で自動生成してpushしたい
azu
@azu

基本的にサンプルコードは外部ファイルを読み込む形で使ってるけど(テストとかしたいので)、
azu/promises-book#52azu/promises-book#53
書籍中にインラインで書かれてるコードがJavaScriptとしてパースできるかどうかのテストを追加した。
パースできるかどうかだけのテストだけど結構間違ってるケース見つかったした。

new Promise((resolve,reject){
});

みたいなミスが多かった。

こういう文章チェックの自動化についてのノウハウもっと知りたいなー

azu
@azu

WEB+DB PRESS編集部で使っている用語統一ファイル

この表記ゆれ辞書が気軽に使えるツール作るだけでも結構チェック出来る気がする。
最新版とか公開してないのかな。
plugableにその書籍毎の用語を追加していけば、色々使い道ありそうな気がするんだけどそういうツールって既にないのかな。

azu
@azu

azu/promises-book@84b26b5
pull-requests時にそのコミットでのhtmlをプレビュー出来るようにしたくて

cat index.html | _tools/cli-rel-to-abs.js | _tools/cli-inject-meta.js > index-no-robots.html

という感じで単体の埋め込みHTMLを作れるようにしたけど、
HTMLを気軽にアップロード出来るサービスがない…
http://pasteht.ml/ が一番楽そうだったけど128KB制限にかかった…

azu
@azu
pull-requestsのコミットに対して
http://htmlpreview.github.io/?https://github.com/azu/promises-book/blob/preview-html/372.1.html
みたいにhttp://htmlpreview.github.io/ 使ったプレビューが出来るようになったけど、何かgit push -fじゃないと上手くできなかったので、同時に来たりしたら上書きして死んでそう…
azu
@azu

各セクションの依存関係を適当に可視化してみた。
http://azu.github.io/visualize-promises-book/
何かもっと適切なグラフにしたい…

dependency_graph

どういう意味があるのかは謎だけど…

azu
@azu
http://azu.github.io/visualize-promises-book/ref-list.html
それぞれのセクションの参照リスト出した
azu
@azu
azu/promises-book#9 はいい案がない感じなので、セクションとしては入れないかも。
#12 後文章として書く予定なのは「序文: Promiseとは何か?」だけになった。
azu
@azu
#12 #67 書いてて、Promiseは非同期処理の全てを置き換えるものじゃないんだよってのは、最初の方で印象付けした方が良さそうな気がする。
http://azu.github.io/promises-book/#promise-and-method-chain
ぐらいでしかそれ触れてなかったかも
azu
@azu
#67 マージしたので、恐らく新規セクションの追加はこれで終了
(終わりがない書籍だけど、4章の最後に振り返り的なまとめ合ったほうがいいのかな)
後はリファクタリングという名のチェックと書き直しをしていく感じです。
一応現段階のPDFも上げてあります。
https://github.com/azu/promises-book/releases/download/0.1.0/index.pdf
#2 PDFもフォントとか自動化どうしようかな(上のPDFはVL-Gothic-Regularでのレンダリング)
azu
@azu

WEB+DB PRESS用語統一ルールパースするライブラリを書いた

azu/wzeditor-word-rules-parser

azu
@azu

ページにバグ報告ボタンを付けました(リリース時に外すか選択出来るようにしたほうがいいのかな)

img

選択してるテキストがデフォルトに入った状態でGithubにIssuesを立てるボタンです。
自分もガンガン立てて無言で処理していく感じがするので、細かい事気にしないでドンドン立てて行っていいと思います。

azu
@azu

azu/promises-book@4468316 3章までひとまず文章を整えた。

ブラウザで確認 -> 間違いを修正 -> WebStormのFile Watchで編集毎にhtmlを更新 -> LiveReloadX でページを更新 -> 無限ループ

azu
@azu
azu/promises-book@5dca253
Promise.resolveとThenable について書きなおした。
ライブラリが公開するAPIはどうするべきか的な話まで入って若干話しが膨らみすぎた感ある
azu
@azu

#18 azu/promises-book#18
これ、以下のように実行出来るサンプルを埋め込むように書き換えば、インタラクティブに実行できる本になりそう。

[.execute,source,js]
----
include::embed/embed-promise-all-xhr.js[]
// 実行例
main().then(function (value) {
    console.log(value);
}).catch(function(error){
    console.log(error);
});
----

実行出来るようにするのに、Codeblock.js使おうと思ってるけど、エディタがACEなのが難点(IMEが…)
後、ちゃんとやるならStuff.jsみたいなので実行Sandbox作ってやらないと行けないけど、
この辺の preコード -> 実行可能なエディタ とするいい感じのライブラリないかなー

vzvu3k6k
@vzvu3k6k
「バグ報告」ボタンからissueを立ててもフィードバックラベルが付かなくて、なんでかと思ったら、そもそもownerでないとissueのlabelを操作できないんですね。
azu
@azu
そうですね(後、モバイルのUIだとownerでもラベルを選べない)
ラベルはnew-sectionmetaぐらいしかまともに使ってないので、
あんまり気にしなくてもいいと思います。
azu
@azu
codeblock.js 最新のACEだと動かない感じな予感がしてツライ。
CodeMirrorもそうだけど、JavaScriptのエディタ包んだ何かは結構バージョン依存強そう…(pluginの作法とかに沿ってなかったのかな)
azu
@azu
azu/codemirror-console CodeMirrorの実行機能つけたやつ書いた
azu
@azu
@vzvu3k6k 色々pullreqありがとうございます。マージしました。
promisedMapping も後で書き直します。 azu/promises-book#123

やっと、サンプルコードを実行出来るエディタが入りました。 #18
img

結局エディタ+コンソール的な表示してくれるものいいのがなかったのでCodeMirrorベースで作りました…

http://azu.github.io/promises-book/
今のページだと全部に実行ボタンがついてて、かつサンプルコードと実行例を分けて書いてたので、
そのまま実行してもエラーになるだけという悲しい感じなので、 #122 で実行できるサンプルの分別と、
サンプルコードと実行例をくっつけてしまう感じにしていきます(文章も削ったりしないといけなさそう…)

[.execute,source,js]
----
include::embed/embed-promise-all-xhr.js[]
// 実行例 <= この部分
main().then(function (value) {
    console.log(value);
}).catch(function(error){
    console.log(error);
});
----

コメントで実行例(メイン?)とわかるようにしないと。

azu
@azu
後、そっかPolyfill読み込んでない…
azu
@azu
#124 Polyfill入れた。
IE9以降なら動くつもりだったけど、何か非同期の処理を実行すると動いてない…
原因なんだろ
IEでアクセスしてる人今のところ1.13%しかいないから無視してもいいんだけど。。
https://github.com/azu/codemirror-console/blob/ca51e24a2f2d12dce658270780e714086f8cdb65/test/mirror-console-test.js#L140-L150 このテストがIEで動くか確認する所からかな
azu
@azu
IE9でもテスト通った
IE9通る。複数のiframeで何か混ざったりしてるとかあるのかな。
azu
@azu
#126 原因の検討がつく方がいらしゃったらお知らせ下さい。
Qurage
@qrg
IE むかし開発者ツール開いてないと console オブジェクトないのでそこで止まるみたいなことあったけど、そういう簡単な話ではないんですよね多分 とりあえず書くだけ書いて見ときます
azu
@azu
http://azu.github.io/codemirror-console-ui/ は動いてたからPromise本で動かしてるやつの実装の問題っぽい
Qurage
@qrg
なるほど
azu
@azu
#122 マージしたので、サンプルコードとして実行出来るものだけ実行マークでるようになった。
ちゃんとコード整理してないので、まだ微妙なケースがあるかも
http://azu.github.io/promises-book/
azu
@azu
Promise自体がIE9だと動いてなさそう…