pythonやrubyやPHPと同じ土俵でjavascriptが使えるようになりました。
サーバサイドjavascriptについて語りましょう。
node.js - googleが開発したV8エンジン上で実行できる処理系
http://nodejs.org/
io.js - node.js 互換で Joyent の影響からの脱却を目指す処理系
http://iojs.org/
Rhino - JVM上で実行できる処理系
https://developer.mozilla.org/ja/Rhino
io.js の経緯
http://stackoverflow.com/questions/27309412/what-is-the-difference-between-node-js-and-io-js
javascriptはrubyと比較してもかなり速い
http://shootout.alioth.debian.org/u32/benchmark.php?test=all&lang=v8&lang2=yarv
基礎から学ぶNode.js
http://gihyo.jp/dev/serial/01/nodejs
node.jsの概要とアプリケーション開発の準備
http://gihyo.jp/dev/serial/01/realtimeweb/0002
前スレ
【node.js】サーバサイドjavascript 3【io.js】(c)2ch.net
http://echo.2ch.net/test/read.cgi/tech/1419673207/
【node.js】サーバサイドjavascript 2【Rhino】
http://peace.2ch.net/test/read.cgi/tech/1358937029/
【node.js】サーバサイドjavascript【Rhino】
http://toro.2ch.net/test/read.cgi/tech/1310087535/
探検
【node.js】サーバサイドjavascript 4【io.js】 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
2016/04/11(月) 16:28:34.52ID:ORuOCkHy
382デフォルトの名無しさん
2017/03/27(月) 10:58:39.97ID:lADNPtGP383デフォルトの名無しさん
2017/03/27(月) 19:07:50.12ID:lADNPtGP >>380
試行錯誤の末、何とか動くようになりました。
結論としては、Gitも最新版にする必要があったようです。
> https://git-scm.com/download/win
nodeにもgitが入っていてそれを使っているものだと勘違いしてました。
ありがとうございました。
試行錯誤の末、何とか動くようになりました。
結論としては、Gitも最新版にする必要があったようです。
> https://git-scm.com/download/win
nodeにもgitが入っていてそれを使っているものだと勘違いしてました。
ありがとうございました。
384デフォルトの名無しさん
2017/03/27(月) 20:47:54.47ID:GesejkPS gitは不要
385デフォルトの名無しさん
2017/03/28(火) 17:23:59.52ID:3EkUFmFA next.js使えるって思ったら
クライアントサイドのコードとサーバサイドのコードの連携方法が不明。
クライアントサイドのコードとサーバサイドのコードの連携方法が不明。
386デフォルトの名無しさん
2017/03/28(火) 18:15:57.57ID:kpaN19Jn 連携意味ない
387デフォルトの名無しさん
2017/03/29(水) 07:57:57.41ID:KsdrIF6a expressでlistenしているサーバーの443ポートに、socket.ioをねじ込むことはできますか?
httpsしか許可していないLAN環境で使いたいためです。
httpsしか許可していないLAN環境で使いたいためです。
388デフォルトの名無しさん
2017/03/29(水) 08:25:41.12ID:go5sII7e 無理です
389デフォルトの名無しさん
2017/03/29(水) 08:56:34.12ID:GhOdSF7q >>387
普通にできるんじゃね?
普通にできるんじゃね?
390デフォルトの名無しさん
2017/03/29(水) 09:06:05.10ID:KsdrIF6a391デフォルトの名無しさん
2017/03/29(水) 09:18:00.82ID:KsdrIF6a392デフォルトの名無しさん
2017/03/29(水) 11:56:09.16ID:GhOdSF7q >>391
expressのserverをioの引数にしてlistnするだけじゃなかったっけ?
expressのserverをioの引数にしてlistnするだけじゃなかったっけ?
393デフォルトの名無しさん
2017/03/29(水) 12:15:17.04ID:KsdrIF6a394デフォルトの名無しさん
2017/03/29(水) 13:18:48.28ID:KsdrIF6a こんな感じであっさりとできました。すげー!
keysはSSLの証明書ファイルとかです。
ex = require('express');
app = ex();
... some js ...
sv = https.createServer(keys, app).listen(port, bind);
io = require('socket.io').listen(sv);
ありがとうございました!!
keysはSSLの証明書ファイルとかです。
ex = require('express');
app = ex();
... some js ...
sv = https.createServer(keys, app).listen(port, bind);
io = require('socket.io').listen(sv);
ありがとうございました!!
395デフォルトの名無しさん
2017/04/01(土) 17:53:04.82ID:y/KMs3zV Node.js@Windowsです。
spawnを使ってexpectのようなことってできないんでしょうか?
例えば以下のように、stdoutに「Y/N」が出力されたら「y」と答えるようなことがしたいのですが…。
const spawn= require('child_process').spawn;
const de = spawn('del', [ '/p', 'foo' ], { shell: true });
de.stdout.on('data', (data) => {
if (data.toString().indexOf('Y/N') !== -1)
de.stdin.write('y'); // ???
});
spawnを使ってexpectのようなことってできないんでしょうか?
例えば以下のように、stdoutに「Y/N」が出力されたら「y」と答えるようなことがしたいのですが…。
const spawn= require('child_process').spawn;
const de = spawn('del', [ '/p', 'foo' ], { shell: true });
de.stdout.on('data', (data) => {
if (data.toString().indexOf('Y/N') !== -1)
de.stdin.write('y'); // ???
});
396デフォルトの名無しさん
2017/04/02(日) 01:44:35.81ID:FpSI1UN2 next.jsってjsコードをクライアントでもサーバでも動くように書かないとだめなの?
例えば以下のような条件を入れてサーバとクライアントで処理を分岐することはできるけど
typeof window === `undefined`
そもそもimportについてはどうすればいいの?
fsがないって怒られんるだけどサードパーティのライブラリが依存してたら使わなくてもエラーになっちゃうし。
例えば以下のような条件を入れてサーバとクライアントで処理を分岐することはできるけど
typeof window === `undefined`
そもそもimportについてはどうすればいいの?
fsがないって怒られんるだけどサードパーティのライブラリが依存してたら使わなくてもエラーになっちゃうし。
397デフォルトの名無しさん
2017/04/02(日) 17:23:56.57ID:FpSI1UN2 react naitive躓きました
react-naitive init hogehoge
ってやってプロジェクト作ろうとするとdoneと表示されてもプロンプトが戻ってこない。
nodejsはanyenvを使って最新を入れてます。
ctrc+cで無理やり戻すと当然プロジェクトはできていないので何もできない。
react-naitive init hogehoge
ってやってプロジェクト作ろうとするとdoneと表示されてもプロンプトが戻ってこない。
nodejsはanyenvを使って最新を入れてます。
ctrc+cで無理やり戻すと当然プロジェクトはできていないので何もできない。
398デフォルトの名無しさん
2017/04/02(日) 19:13:35.17ID:FpSI1UN2 >>397
自己解決しました
自己解決しました
399デフォルトの名無しさん
2017/04/02(日) 20:42:34.04ID:FuCfSbZi nodeたのしんでる?
400デフォルトの名無しさん
2017/04/02(日) 22:53:02.06ID:0PLfOFLS まだ勉強し始めなんだけどコールバック地獄を抜けたらPromiseラップ地獄が始まってる気がするゾ
401デフォルトの名無しさん
2017/04/02(日) 23:49:36.07ID:jk9X28Xe その先にはasync地獄が待ってるから早く進め
402デフォルトの名無しさん
2017/04/02(日) 23:55:00.71ID:TvISwdcG Rxで脱出できるよ
403デフォルトの名無しさん
2017/04/03(月) 00:08:15.13ID:pMsTDita RxのAsyncSubjectってPromiseと比較してどんなメリットがあるんだ?
async/awaitで使えないから不便と思う
async/awaitで使えないから不便と思う
404デフォルトの名無しさん
2017/04/03(月) 00:37:17.85ID:UPqV6+1g callback地獄なんか近づかずにpromiseとasync await始めたほうがいい。
promise抑えてからじゃないとasync await使えないから、promiseは必須な
promise抑えてからじゃないとasync await使えないから、promiseは必須な
405デフォルトの名無しさん
2017/04/03(月) 00:44:19.88ID:UPqV6+1g rxはreact nativeあたりと組み合わせるとどうなんだろうね?
coldとhotって概念があったり意外とつまずきやすい。全てがstreamという概念は素敵そうだけどreactとうまく組み合わせられるんか?
coldとhotって概念があったり意外とつまずきやすい。全てがstreamという概念は素敵そうだけどreactとうまく組み合わせられるんか?
406デフォルトの名無しさん
2017/04/03(月) 00:47:12.84ID:YqyQZW/v async使い出すとやってくるtry catch地獄
407デフォルトの名無しさん
2017/04/03(月) 00:50:42.75ID:CTM8h4Rc コールバック地獄って無名関数でしか渡してないから問題なだけじゃね?
408デフォルトの名無しさん
2017/04/03(月) 01:10:13.39ID:MrxLrKt6 fs.readdir(source, function(err, files) {
if (err) {
console.log('Error finding files: ' + err)
} else {
files.forEach(function(filename, fileIndex) {
console.log(filename)
gm(source + filename).size(function(err, values) {
if (err) {
console.log('Error identifying file size: ' + err)
} else {
console.log(filename + ' : ' + values)
aspect = (values.width / values.height)
widths.forEach(function(width, widthIndex) {
height = Math.round(width / aspect)
console.log('resizing ' + filename + 'to ' + height + 'x' + height)
this.resize(width, height).write(destination + 'w' + width + '_' + filename, function(err) {
if (err) console.log('Error writing file: ' + err)
})
}.bind(this))
}
})
})
}
})
if (err) {
console.log('Error finding files: ' + err)
} else {
files.forEach(function(filename, fileIndex) {
console.log(filename)
gm(source + filename).size(function(err, values) {
if (err) {
console.log('Error identifying file size: ' + err)
} else {
console.log(filename + ' : ' + values)
aspect = (values.width / values.height)
widths.forEach(function(width, widthIndex) {
height = Math.round(width / aspect)
console.log('resizing ' + filename + 'to ' + height + 'x' + height)
this.resize(width, height).write(destination + 'w' + width + '_' + filename, function(err) {
if (err) console.log('Error writing file: ' + err)
})
}.bind(this))
}
})
})
}
})
409デフォルトの名無しさん
2017/04/03(月) 03:42:09.46ID:XYXk6jFX410デフォルトの名無しさん
2017/04/03(月) 03:53:47.87ID:CTM8h4Rc >>408
fs.readdir(source, func1)
var func1 = function(err, files) {
if (err) {
console.log('Error finding files: ' + err)
} else {
files.forEach(func2)
}
}
var func2 = function(filename, fileIndex) {
console.log(filename)
gm(source + filename).size(func4)
}
var func3 = function(width, widthIndex) {
height = Math.round(width / aspect)
console.log('resizing ' + filename + 'to ' + height + 'x' + height)
this.resize(width, height).write(destination + 'w' + width + '_' + filename, function(err) {
if (err) console.log('Error writing file: ' + err)
}
var func4 = function(err, values) {
if (err) {
console.log('Error identifying file size: ' + err)
} else {
console.log(filename + ' : ' + values)
aspect = (values.width / values.height)
widths.forEach(func3)
}.bind(this))
}
}
fs.readdir(source, func1)
var func1 = function(err, files) {
if (err) {
console.log('Error finding files: ' + err)
} else {
files.forEach(func2)
}
}
var func2 = function(filename, fileIndex) {
console.log(filename)
gm(source + filename).size(func4)
}
var func3 = function(width, widthIndex) {
height = Math.round(width / aspect)
console.log('resizing ' + filename + 'to ' + height + 'x' + height)
this.resize(width, height).write(destination + 'w' + width + '_' + filename, function(err) {
if (err) console.log('Error writing file: ' + err)
}
var func4 = function(err, values) {
if (err) {
console.log('Error identifying file size: ' + err)
} else {
console.log(filename + ' : ' + values)
aspect = (values.width / values.height)
widths.forEach(func3)
}.bind(this))
}
}
411デフォルトの名無しさん
2017/04/03(月) 15:48:27.07ID:UPqV6+1g >>409
redux学習中だけどRxJSと組み合わせると何が幸せになるん?
redux学習中だけどRxJSと組み合わせると何が幸せになるん?
412デフォルトの名無しさん
2017/04/03(月) 19:33:34.98ID:963+qoSh RPとFRPの区別がついてない奴を馬鹿にして粋がれるとか
413デフォルトの名無しさん
2017/04/03(月) 21:16:06.10ID:XYXk6jFX414デフォルトの名無しさん
2017/04/03(月) 21:22:08.20ID:MrxLrKt6 >>410
少し訂正。問題は適切な名前をつけるのが難しいところにあると思うね。
var func1 = function(err, files) {
if (err) {
console.log('Error finding files: ' + err)
} else {
files.forEach(func2)
}
}
var func2 = function(filename, fileIndex) {
console.log(filename)
gm(source + filename).size(func3)
}
var func3 = function(err, values) {
if (err) {
console.log('Error identifying file size: ' + err)
} else {
console.log(filename + ' : ' + values)
aspect = (values.width / values.height)
widths.forEach(func4.bind(this)))
}
}
var func4 = function(width, widthIndex) {
height = Math.round(width / aspect)
console.log('resizing ' + filename + 'to ' + height + 'x' + height)
this.resize(width, height).write(destination + 'w' + width + '_' + filename, func5)
}
var func5 = function(err) {
if (err) console.log('Error writing file: ' + err)
}
fs.readdir(source, func1)
少し訂正。問題は適切な名前をつけるのが難しいところにあると思うね。
var func1 = function(err, files) {
if (err) {
console.log('Error finding files: ' + err)
} else {
files.forEach(func2)
}
}
var func2 = function(filename, fileIndex) {
console.log(filename)
gm(source + filename).size(func3)
}
var func3 = function(err, values) {
if (err) {
console.log('Error identifying file size: ' + err)
} else {
console.log(filename + ' : ' + values)
aspect = (values.width / values.height)
widths.forEach(func4.bind(this)))
}
}
var func4 = function(width, widthIndex) {
height = Math.round(width / aspect)
console.log('resizing ' + filename + 'to ' + height + 'x' + height)
this.resize(width, height).write(destination + 'w' + width + '_' + filename, func5)
}
var func5 = function(err) {
if (err) console.log('Error writing file: ' + err)
}
fs.readdir(source, func1)
415デフォルトの名無しさん
2017/04/03(月) 23:44:03.74ID:1+ofpVMn electronというかjsでデスクトップアプリって流行ると思いますか?
416デフォルトの名無しさん
2017/04/03(月) 23:49:14.81ID:fhkbvCOs そもそもデスクトップアプリが今日日流行らんような
417デフォルトの名無しさん
2017/04/04(火) 00:42:57.27ID:P+kSkPRB418デフォルトの名無しさん
2017/04/04(火) 00:47:36.02ID:P+kSkPRB >>415
reactnativeでデスクトップアプリが作れるようになったほうがいいと思うけどね。性能面でも。
electronで結構キラーアプリは出てるから使えて損はない。
chromeOSが復活しないかな。
アプリごとにchromeが中で動いてるのって無駄な気がするんだよね
reactnativeでデスクトップアプリが作れるようになったほうがいいと思うけどね。性能面でも。
electronで結構キラーアプリは出てるから使えて損はない。
chromeOSが復活しないかな。
アプリごとにchromeが中で動いてるのって無駄な気がするんだよね
419デフォルトの名無しさん
2017/04/04(火) 01:25:34.52ID:K8Tf42DL WEB+DB vol.97 の特集が、React
WEB+DB vol.94 の特集が、Kotlin, Electron
WEB+DB vol.94 の特集が、Kotlin, Electron
420デフォルトの名無しさん
2017/04/04(火) 01:35:05.25ID:y0lCbigz421デフォルトの名無しさん
2017/04/04(火) 03:08:30.98ID:QcgfrUUh RxJSをみてるとJavaScriptにPromise入れるのは
もっと慎重にやるべきだったと思うね
もっと慎重にやるべきだったと思うね
422デフォルトの名無しさん
2017/04/05(水) 00:42:45.34ID:wcVK36T3 reduxは非同期処理入れるのにミドルウエアが必要でその中の候補としてrxjsがあるってこと?
非同期処理は多用するんだからミドルウエア無しで対応しろよ
非同期処理は多用するんだからミドルウエア無しで対応しろよ
423デフォルトの名無しさん
2017/04/05(水) 01:59:50.23ID:T1xSqOuQ >>422
違うyo
違うyo
424デフォルトの名無しさん
2017/04/05(水) 02:29:41.05ID:kU4Jv4wh 非同期の方法がたくさんあるからビルトインにしてないんだろ
RxJSが使いたい→redux-observable
generaterが使いたい→redux-saga
Promiseが使いたい→redux-promise
好きなのを選べる
RxJSが使いたい→redux-observable
generaterが使いたい→redux-saga
Promiseが使いたい→redux-promise
好きなのを選べる
425デフォルトの名無しさん
2017/04/05(水) 09:43:00.09ID:ObdYHa+p rxは嫌いな奴は本当に嫌いなのでデフォルトにすると人死にが出る
426デフォルトの名無しさん
2017/04/05(水) 18:20:05.80ID:6P7JyL2t 猫は炬燵で丸くなる
427デフォルトの名無しさん
2017/04/05(水) 20:06:36.76ID:zmBGqA0p ReactとRx同時に使ったら、サイズが大きいのが気になりませんか?
428デフォルトの名無しさん
2017/04/06(木) 14:59:39.46ID:TGfMJct9429デフォルトの名無しさん
2017/04/06(木) 17:23:22.82ID:udT44U5Z Rxってコンセプトがシンプルなのにいざ使おうとするとライブラリのインターフェースは複雑で、シンドってならない?
430デフォルトの名無しさん
2017/04/06(木) 20:16:24.28ID:rNIgAdOn >>428
でも結局Observableになるんだろ?
でも結局Observableになるんだろ?
431デフォルトの名無しさん
2017/04/06(木) 20:20:21.49ID:rNIgAdOn Fetch APIがPromiseベースなので、処理がキャンセルできなくて困ったしな。
Fetch APIの戻り値はObservableに変更すべき。
Fetch APIの戻り値はObservableに変更すべき。
432デフォルトの名無しさん
2017/04/06(木) 20:23:20.40ID:rNIgAdOn433デフォルトの名無しさん
2017/04/07(金) 00:20:55.58ID:W6kcLwca >>430
おいおい大丈夫か??
PromiseはPromiseで、ObservableはObservableで必要だよ
いいか?
ObがあればPrが要らないと言うのは
ジェネレーター関数があれば関数が要らないと言ってるのと同じことだぞ
おいおい大丈夫か??
PromiseはPromiseで、ObservableはObservableで必要だよ
いいか?
ObがあればPrが要らないと言うのは
ジェネレーター関数があれば関数が要らないと言ってるのと同じことだぞ
434デフォルトの名無しさん
2017/04/07(金) 01:10:39.92ID:muVw6N7l 配列があればnumberはいらない、的な
435デフォルトの名無しさん
2017/04/07(金) 01:27:24.68ID:E9+XPTIr 関数とジェネレータ関数の関係とはちょっと違う気がするが
まあ言いたいことはわかる
まあ言いたいことはわかる
436デフォルトの名無しさん
2017/04/07(金) 01:53:54.75ID:feQdKcc1437デフォルトの名無しさん
2017/04/07(金) 02:08:35.05ID:muVw6N7l promiseは単発、observableは連発
連発は単発を包含してるが最適とは限らない
連発は単発を包含してるが最適とは限らない
438デフォルトの名無しさん
2017/04/07(金) 02:12:06.86ID:xCtKbZyH completeしか発生しないObservable = Promise
そもそも非同期=時間がかかる処理なのだから、
必然的に途中でキャンセルしたくなるのが普通。
キャンセルができない時点でPromiseは片手落ち
そもそも非同期=時間がかかる処理なのだから、
必然的に途中でキャンセルしたくなるのが普通。
キャンセルができない時点でPromiseは片手落ち
439デフォルトの名無しさん
2017/04/07(金) 02:20:36.15ID:MrQDMpDH440デフォルトの名無しさん
2017/04/07(金) 02:25:12.94ID:MrQDMpDH >>438
Netflixとかなら動画を取り扱うからキャンセルできたほうがいいけど、
他の案件でも必要か?適材適所でしょう。
なんでもストリームとして取り扱うRxは宣言的な記述になるけど、
それが読みやすいかというと、
俺はpromise とasync awaitの方が読みやすい。
Netflixとかなら動画を取り扱うからキャンセルできたほうがいいけど、
他の案件でも必要か?適材適所でしょう。
なんでもストリームとして取り扱うRxは宣言的な記述になるけど、
それが読みやすいかというと、
俺はpromise とasync awaitの方が読みやすい。
441デフォルトの名無しさん
2017/04/07(金) 02:48:44.21ID:ZOMGhg3k RxのObservableと廃案になったObject.observeが混在してる件
442デフォルトの名無しさん
2017/04/07(金) 02:51:12.64ID:ZOMGhg3k 多機能があれば単機能はいらない
そんなふうに思って(ry
そんなふうに思って(ry
443デフォルトの名無しさん
2017/04/07(金) 03:29:00.04ID:MrQDMpDH >>441
えっ。違うのかそれ。解ってなかった。すまぬ
えっ。違うのかそれ。解ってなかった。すまぬ
444デフォルトの名無しさん
2017/04/07(金) 03:40:41.83ID:7WaVyHOC RxのObservableはnodeのReadable Stream (flowing mode) みたいなもん
445デフォルトの名無しさん
2017/04/07(金) 07:20:07.56ID:Bfn8G5Of someがあればeveryは要らないって話?
446デフォルトの名無しさん
2017/04/07(金) 09:40:29.94ID:xCtKbZyH447デフォルトの名無しさん
2017/04/07(金) 09:44:07.30ID:xCtKbZyH448デフォルトの名無しさん
2017/04/07(金) 10:06:57.71ID:NIm6zjXF 必要になるとは限らない
そもそもキャンセルの方法がないものも多い
そもそもキャンセルの方法がないものも多い
449デフォルトの名無しさん
2017/04/07(金) 10:50:07.00ID:a3tdoMh+ promiseでは全てのケースをカバーできない→正しい
だからpromiseはいらない→間違い
だからpromiseはいらない→間違い
450デフォルトの名無しさん
2017/04/07(金) 11:38:12.33ID:MrQDMpDH でもPromiseだからこそasync awaitを駆使して同期プログラミングっポイ見た目でかけるわけで。
そこはRxではむりでしょ?そもそも宣言的な記述なウリなんだろうけども。
まぁ結局一人で開発だったらドッチもあってもいいけど
複数人プロジェクトだとRxは使いづらいわな。
そこはRxではむりでしょ?そもそも宣言的な記述なウリなんだろうけども。
まぁ結局一人で開発だったらドッチもあってもいいけど
複数人プロジェクトだとRxは使いづらいわな。
451デフォルトの名無しさん
2017/04/07(金) 11:54:59.99ID:5+HcG4Iv Observeを束ねて全部処理が終わったら終了処理をしたいんだけど、どうやったらいいんだろう
452デフォルトの名無しさん
2017/04/07(金) 12:16:24.62ID:dJwAVcRG 全部zipすれば
453デフォルトの名無しさん
2017/04/07(金) 12:28:20.19ID:Fuvg5lKD Httpリクエスト…Promise
websocket…Observable
websocket…Observable
454デフォルトの名無しさん
2017/04/07(金) 13:19:55.32ID:MrQDMpDH んでRx使ったやつで良いプロジェクトってあるの?
RxSwift使ってたときは良いプロジェクトが見当たらなくて
汚い設計になってしまった。
RxSwift使ってたときは良いプロジェクトが見当たらなくて
汚い設計になってしまった。
455デフォルトの名無しさん
2017/04/07(金) 13:59:32.72ID:0MVaqOPa >>449
これな
これな
456デフォルトの名無しさん
2017/04/07(金) 14:44:51.56ID:PRiizMve 要る要らないは個人の考えや開発スタイルによるものだしなぁ
457デフォルトの名無しさん
2017/04/07(金) 17:45:00.18ID:7PhLdANq >>452
やってみる
やってみる
458デフォルトの名無しさん
2017/04/07(金) 18:11:21.26ID:W6kcLwca つうかキャンセルだけならCancelablePromise案もあるし、
実際はキャンセルが内蔵されていると不都合があるのでCancelToken案のように
仕組みを外部に用意するのがベストだからPromiseは今のままで良いと思うよ
あと因みに例で挙がってたfetchはキャンセル出来る。
キャンセルする必要があるような重たいファイルをDLするときは
Stream使うだろうから、その場合rs側にcancelメソッドがある。
実際はキャンセルが内蔵されていると不都合があるのでCancelToken案のように
仕組みを外部に用意するのがベストだからPromiseは今のままで良いと思うよ
あと因みに例で挙がってたfetchはキャンセル出来る。
キャンセルする必要があるような重たいファイルをDLするときは
Stream使うだろうから、その場合rs側にcancelメソッドがある。
459デフォルトの名無しさん
2017/04/07(金) 18:13:30.99ID:W6kcLwca 逆に言うと、もしfetchがプロミスレベルでキャンセルに対応した場合、
こういうStream何かとの兼ね合いはどうするのかって話になる。
自動でrs.cancelが呼ばれるようにするのか、それともclosed例外吐くようにするのか。
やっぱりCancelTokenのように外側から突き刺す形が一番良いよ。
こういうStream何かとの兼ね合いはどうするのかって話になる。
自動でrs.cancelが呼ばれるようにするのか、それともclosed例外吐くようにするのか。
やっぱりCancelTokenのように外側から突き刺す形が一番良いよ。
460デフォルトの名無しさん
2017/04/07(金) 21:38:04.53ID:M/7BCwbh なんかの勉強会でcancelable promiseの標準化は頓挫したと聞いた
461デフォルトの名無しさん
2017/04/07(金) 21:50:33.96ID:M/7BCwbh462デフォルトの名無しさん
2017/04/07(金) 23:33:00.86ID:xCtKbZyH >>449
promiseでは全てのケースをカバーできない→正しい
だからpromiseはいらない→そんなこと言ってない
Observableでpromiseのケースをカバーできる→正しい
だからpromiseはいらない→こう言っている
promiseでは全てのケースをカバーできない→正しい
だからpromiseはいらない→そんなこと言ってない
Observableでpromiseのケースをカバーできる→正しい
だからpromiseはいらない→こう言っている
463デフォルトの名無しさん
2017/04/07(金) 23:33:50.39ID:xCtKbZyH464デフォルトの名無しさん
2017/04/07(金) 23:52:45.97ID:OQDmCCRm promiseで十分なケースでわざわざobservable使うメリットあんのかよ
465デフォルトの名無しさん
2017/04/07(金) 23:55:32.50ID:xCtKbZyH >>464
promiseとobservableはインターフェースが違うから互換性がない。
だからライブラリを作るならば両方に対応しなければならない。
またtoPromise()などでobservableからPromiseに変更するなんて
面倒なことをしなければならない場合もある。
promiseとobservableの両方に対応しなくて良いのがメリットだ
promiseとobservableはインターフェースが違うから互換性がない。
だからライブラリを作るならば両方に対応しなければならない。
またtoPromise()などでobservableからPromiseに変更するなんて
面倒なことをしなければならない場合もある。
promiseとobservableの両方に対応しなくて良いのがメリットだ
466デフォルトの名無しさん
2017/04/07(金) 23:57:21.56ID:D3WCz+HD >>461
そこはキャンセルしてたでしょ!
そこはキャンセルしてたでしょ!
467デフォルトの名無しさん
2017/04/08(土) 00:03:38.77ID:x261ON0r468デフォルトの名無しさん
2017/04/08(土) 00:07:31.07ID:Ibdd+rg/ >>467
殆どの要件でcancelは必要だから結局Fetch APIみたいに
cancelするための別の仕様が出てくる。
だから最初からobservable一本にしておけばいいという話
急ぎすぎてPromiseを標準化してしまったのは黒歴史
Promiseを使ったFetch APIも黒歴史
殆どの要件でcancelは必要だから結局Fetch APIみたいに
cancelするための別の仕様が出てくる。
だから最初からobservable一本にしておけばいいという話
急ぎすぎてPromiseを標準化してしまったのは黒歴史
Promiseを使ったFetch APIも黒歴史
469デフォルトの名無しさん
2017/04/08(土) 00:15:58.80ID:cNZiPnVn >>468
fetchのことしか考えてねーのかよ
fsの非同期apiはキャンセル不可だがこれobservableにする意味あんのかよ
fetchが黒歴史なのは正しい
promiseじゃなくstreamだろってsubstackも突っ込んでた
fetchのことしか考えてねーのかよ
fsの非同期apiはキャンセル不可だがこれobservableにする意味あんのかよ
fetchが黒歴史なのは正しい
promiseじゃなくstreamだろってsubstackも突っ込んでた
470デフォルトの名無しさん
2017/04/08(土) 00:23:48.13ID:Ibdd+rg/ > fsの非同期apiはキャンセル不可だがこれobservableにする意味あんのかよ
あると思うけど?
俺は200MBを超えるファイル×数十個を "並列で" サーバーに送信したことがあるのだが、
もしメモリに全部読み込んでいたら、マシンによってはメモリ不足になっただろう。
だから特定のチャンクごとに読み込んで送信していたわけだが、当然キャンセルもしたいし
どのファイルが何%処理完了したかの状況も表示したくなる。
そんときはループを使って、チャンクごとにデータを読み取って処理したわけだが、
もしfsがobservableであれば、メモリに全部読み取ることなく
一定のチャンクごとに処理する簡単な方法も提供されただろう。
あると思うけど?
俺は200MBを超えるファイル×数十個を "並列で" サーバーに送信したことがあるのだが、
もしメモリに全部読み込んでいたら、マシンによってはメモリ不足になっただろう。
だから特定のチャンクごとに読み込んで送信していたわけだが、当然キャンセルもしたいし
どのファイルが何%処理完了したかの状況も表示したくなる。
そんときはループを使って、チャンクごとにデータを読み取って処理したわけだが、
もしfsがobservableであれば、メモリに全部読み取ることなく
一定のチャンクごとに処理する簡単な方法も提供されただろう。
471デフォルトの名無しさん
2017/04/08(土) 00:28:43.38ID:Ibdd+rg/ setTimeoutなんかもclearTimeoutみたいにキャンセルするメソッドがあるし、
時間がかかるからこそ非同期にしているわけで、時間がかかる処理を
キャンセルしたいことがありえないなんてAPIが本当にあるのだろうか?
時間がかかるからこそ非同期にしているわけで、時間がかかる処理を
キャンセルしたいことがありえないなんてAPIが本当にあるのだろうか?
472デフォルトの名無しさん
2017/04/08(土) 00:35:11.20ID:cNZiPnVn473デフォルトの名無しさん
2017/04/08(土) 00:37:42.94ID:Ibdd+rg/474デフォルトの名無しさん
2017/04/08(土) 00:38:09.39ID:cNZiPnVn >>470
つかてめーnodeやってねーだろ
つかてめーnodeやってねーだろ
475デフォルトの名無しさん
2017/04/08(土) 00:38:37.44ID:cNZiPnVn >>473
スレ違い死ね
スレ違い死ね
476デフォルトの名無しさん
2017/04/08(土) 00:38:44.04ID:Ibdd+rg/ そういやブラウザではFile APIだったなw
477デフォルトの名無しさん
2017/04/08(土) 00:39:23.93ID:i0oWHzgI >>471
時間がかかる処理をキャンセルじゃなくて、待つのをキャンセルするじゃね?
時間がかかる処理をキャンセルじゃなくて、待つのをキャンセルするじゃね?
478デフォルトの名無しさん
2017/04/08(土) 00:44:38.31ID:Ibdd+rg/ >>477
それは言い方の違いでしかないよ
nodeでcallbackを使うやつの話であれば、そもそもなんで
nodeはPromiseを使わなかったのか?の話になるだろ。
それはcallbackを使う方が速いのと、
何度もイベントを発生する必要があるものがあるからだろうな。
つまり、Promiseでは要件に耐えられないから
Promiseではなくcallbackを使ったんだよ。
fs.fstatでは何度もイベントが発生するわけじゃなくても、
何度もイベントが発生することが可能なcallbackを使っている。
それは一度しかイベントが発生しなくてもPromiseではなく
Observableを使ってよいのと同じ考えだ。
それは言い方の違いでしかないよ
nodeでcallbackを使うやつの話であれば、そもそもなんで
nodeはPromiseを使わなかったのか?の話になるだろ。
それはcallbackを使う方が速いのと、
何度もイベントを発生する必要があるものがあるからだろうな。
つまり、Promiseでは要件に耐えられないから
Promiseではなくcallbackを使ったんだよ。
fs.fstatでは何度もイベントが発生するわけじゃなくても、
何度もイベントが発生することが可能なcallbackを使っている。
それは一度しかイベントが発生しなくてもPromiseではなく
Observableを使ってよいのと同じ考えだ。
479デフォルトの名無しさん
2017/04/08(土) 00:49:22.15ID:cNZiPnVn480デフォルトの名無しさん
2017/04/08(土) 00:51:43.82ID:Ibdd+rg/ http://stackoverflow.com/questions/30299613/why-does-nodejs-not-use-promise-for-the-readfile-api
Node’s early iterations used Promises in its nonblocking API. However, in February 2010,
Ryan Dahl made the decision to switch to the now-familiar callback(err, results...)
format, on the grounds that Promises are a higher-level construct that belongs in “userland.”
英語わかるか?
Nodeは最初Promise使っていて、callbackに変えたって書いてあるんだぞ
Node’s early iterations used Promises in its nonblocking API. However, in February 2010,
Ryan Dahl made the decision to switch to the now-familiar callback(err, results...)
format, on the grounds that Promises are a higher-level construct that belongs in “userland.”
英語わかるか?
Nodeは最初Promise使っていて、callbackに変えたって書いてあるんだぞ
481デフォルトの名無しさん
2017/04/08(土) 00:54:37.05ID:Ibdd+rg/ (JavaScriptの)Promiseはいつできたんだっけな?
前に調べたんだが忘れたな。
ここを見る限り2009年なのは間違いないが。
http://wiki.commonjs.org/index.php?title=Promises&oldid=516
前に調べたんだが忘れたな。
ここを見る限り2009年なのは間違いないが。
http://wiki.commonjs.org/index.php?title=Promises&oldid=516
482デフォルトの名無しさん
2017/04/08(土) 00:55:18.13ID:cNZiPnVn そのpromiseはes6のpromiseとは別物だ
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【台湾有事】トランプ氏 電話会談で高市総理に発言抑制を要求か 米メディア報道… ★8 [BFU★]
- 【速報】 米大統領が台湾問題で高市首相に中国挑発しないよう助言との事実ない=日米首脳会談巡り官房長官(ロイター) [お断り★]
- 【ひるおび】国分太一に「違和感」「筋違い」「独善的と思われても…」八代弁護士が厳しい言葉並べる [ぐれ★]
- 参政・梅村みずほ議員「土葬を原則禁止にしろ」「上皇陛下も火葬が望ましいといってる」 [バイト歴50年★]
- 【お米】夫婦(61)と(58)で万引きした疑い 盗まれたのは5300円のコメ 三重 [1ゲットロボ★]
- 石丸伸二氏が告白「今、滋賀県民なんですけど来月のには福岡県民になります」12月の移住発表 [バイト歴50年★]
- 最近、若者が死ぬニュース見ると笑いが止まらなくなるんだよ。「またネトウヨがこの世から消えてくれたのか」とね [237216734]
- 【高市悲報】WSJ訂正。誤「トーンを和らげろ」→正「黙れ」 [663382246]
- 【悲報】高市内閣・木原官房長官、WSJ報道「そのような事実はない」WSJに抗議★2 [115996789]
- 報道の自由度ランキング2025、日本が66位に急落「主要メディアと政府・企業が癒着し都合の悪い情報が出回らないようにしている」 [329329848]
- ほんこん さん「中国に依存しない国を作るのが政治の役目です」⇐いや、無理じゃね? [201193242]
- 東京の高校生(17) 親に借りた車で法面にぶつかり死亡😭   無免許    [546716239]
