【node.js】サーバサイドjavascript 3【io.js】©5ch.net
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん 転載ダメ©2ch.net
2014/12/27(土) 18:40:07.70ID:MwQYLNURサーバサイド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 2【Rhino】
http://peace.2ch.net/test/read.cgi/tech/1358937029/
【node.js】サーバサイドjavascript【Rhino】
http://toro.2ch.net/test/read.cgi/tech/1310087535/
0524デフォルトの名無しさん
2015/07/10(金) 21:26:58.34ID:GAz2R2PC文脈的に複数の非同期I/Oを同時に発行する上限の制御だからシングルスレッドは関係ない
用語的により正しいのはsimultaneouslyだろう
用語の話だけなら「何もかも」とか「めまいがする」などと罵る必要ないだろ
>>523
非同期を扱うモジュールとしては、これまではasyncがデファクト
ES6からは標準なのでPromiseが使われていくだろうがES7ではasync/awaitになるw
0525デフォルトの名無しさん
2015/07/10(金) 22:03:35.72ID:Y9pWHNlXそこだけで何もかもと言った訳じゃないが
IOの上限て同時ファイルオープン数の上限のこといってる?
0526デフォルトの名無しさん
2015/07/10(金) 22:22:27.49ID:bw+CCTDgES7のasync/awaitって、今のasyncと同じものだっけ?
awaitがついてるから違う?
まあ調べればわかることだし、あとで適当に調べるけど
面倒な話だな。
0527デフォルトの名無しさん
2015/07/10(金) 22:32:40.45ID:GAz2R2PC元質問よく読みな
たとえばHTTPサーバへの同時アクセスを上限5にしたいって書いてある
>>526
ES7のasync/awaitはasyncモジュールとは全くの別物w 紛らわしいな
ES7仕様の提案はこれ
https://github.com/lukehoban/ecmascript-asyncawait
C#とか.NETで既に導入されてて、非同期が同期のように書けて例外も使える
0528デフォルトの名無しさん
2015/07/10(金) 22:41:09.89ID:Y9pWHNlX> それをサーバーにPOSTするとき負荷をかけないように
> MAX5並列ぐらいに抑えたい。とかいうとき
リクエストの並行数はまず処理の並行数でファイルオープン数とイコールとは・・・まあいいわ
本人は負荷が下がると勘違いしてるようだが
せいぜいやった後でかえって重くなって無駄な労力だったことに気づけばいい
0529デフォルトの名無しさん
2015/07/10(金) 22:47:48.13ID:GAz2R2PC相手のHTTPサーバに負荷をかけすぎないように、の意味だろ
それくらい読み取れないなら黙ってろよ・・・
0530デフォルトの名無しさん
2015/07/10(金) 23:02:10.55ID:bw+CCTDg0531デフォルトの名無しさん
2015/07/10(金) 23:08:25.16ID:bw+CCTDg> C#とか.NETで既に導入されてて、非同期が同期のように書けて例外も使える
あ、そのタイプか。yieldみたいなやつだろ?
なら単純に、async → promise → asyncawait に
移行していくって考えればいいな。
あとは、どう書き換えればいいかを頭で整理するのと
本題の並列数制限方法をpromiseでどうやるかを調べることだな。
BluebirdってES6以前なん?
0532デフォルトの名無しさん
2015/07/10(金) 23:12:23.28ID:bw+CCTDg> ECMAScript 7 で提案されている機能として async / await があります。
> 簡単に言うと Promise を使った関数を簡潔に書くことのできる新しい文法です。
ほう。なるほど。本質的にはPromiseなわけか。
これは楽だ。
0533デフォルトの名無しさん
2015/07/10(金) 23:17:02.08ID:Y9pWHNlXえ?同時実行数を減らせば負荷が下がると思ってたの?
予想のはるか下すぎてなんて声をかければいいかわからないよ
実行を遅らせても計算量が減るわけないのに一体どんな原理だよ
0534デフォルトの名無しさん
2015/07/10(金) 23:20:27.69ID:bw+CCTDg同じ計算量でも、時間をかければ、少なく負荷で処理できる。
常識じゃん?!
おじいちゃんに負荷をかけないように
ゆっくり移動しようね!
0535デフォルトの名無しさん
2015/07/10(金) 23:44:16.99ID:GAz2R2PCスマンw
>>531
> BluebirdってES6以前なん?
元々CommonJSにPromise/A+って仕様があってQやBluebirdはその実装
それらがベースになってES6のPromiseになった
だからBlurbirdもQもES6 Promiseのスーパーセットのはず
Bluebirdの各種関数(今回の場合はmap)をES6 Promiseと組み合わせても動く可能性高い
https://github.com/petkaantonov/bluebird/blob/master/API.md#mapfunction-mapper--object-options---promise
>>533
いつから負荷(workload)が計算量になったんだよwww
負荷ってのはたとえばload averageのloadのことだよ、言わせんな恥ずかしい
0536デフォルトの名無しさん
2015/07/10(金) 23:55:21.38ID:Y9pWHNlXお前それ処理の切り替えで一瞬負荷が下がったのが平均に反映されてるだけで
本体の画像処理の負荷が下がったわけじゃないぞ
馬鹿すぎて頭痛いからそのとんでも理論のソース出せよ
どうせ出せないからそれで終わりだ
0537デフォルトの名無しさん
2015/07/11(土) 00:01:13.65ID:82pfuTDx0538デフォルトの名無しさん
2015/07/11(土) 00:11:47.38ID:C0q909800539デフォルトの名無しさん
2015/07/11(土) 00:12:03.04ID:Yc/lws0v0540デフォルトの名無しさん
2015/07/11(土) 00:19:18.38ID:ElKMe50SPromise/AとかPromise/Bとかもあったん?
そもそもはCommonJSが言い始めたんか?
jQueryにもPromiseあったよな?
各自バラバラに作りすぎw
0541デフォルトの名無しさん
2015/07/11(土) 00:27:48.18ID:ElKMe50Shttp://wiki.commonjs.org/wiki/Promises
Promises/A by Kris Zyp ? "Thenables"
Promises/B by Kris Kowal ? Opaque Q API
Promises/KISS by AJ ONeal
Promises/C has been redacted
Promises/D by Kris Kowal ? "Promise-sendables", for interoperable instances of Promises/B.
0542デフォルトの名無しさん
2015/07/11(土) 00:28:20.76ID:dZGExdkC普通に読んだらそうだよな
HTTPサーバは他のサイトかもしれないし、注意しないと攻撃と見なされてBANされるかもしれない
アホな警察に逮捕されることもありえる(Librahack事件)
だから相手のサーバに負荷をかけないように、って普通にある話なんだがな
>>540
> Promise/AとかPromise/Bとかもあったん?
あったw つーかDまであってKISSってのもあった
http://wiki.commonjs.org/wiki/Promises
競争して一番いい仕様が勝ち残るのはいいことだ
0543デフォルトの名無しさん
2015/07/11(土) 00:29:09.91ID:dZGExdkC被ったw
0544デフォルトの名無しさん
2015/07/11(土) 00:31:25.20ID:ElKMe50SPromise無印か、Promise/Aが最初で
その後にBとかCとか出来たわけで、
後のほうが改良されてると考えられるんだけど
なんで結局A+が採用されたの?
っていうか+ってなんだよw
ES6のPromiseはまたA+とは違うんだよな?
なんで変更したんだよ?
誰かそこんところ詳しい人いない?
もしくは詳しい本とかしらない
0545デフォルトの名無しさん
2015/07/11(土) 00:38:20.27ID:ElKMe50Sこれって他のPromise(どの?)と同じなのだろうか?
0546デフォルトの名無しさん
2015/07/11(土) 02:44:42.80ID:dZGExdkCA案を改善してB案やC案ができたんじゃなく、同時期に存在した別々の実装が提案されただけ[要出典]
Promise/A https://github.com/kriszyp/node-promise
Promise/B https://github.com/kriskowal/q
Promise/KISS https://github.com/coolaj86/futures
その後Promise/BのQもPromise/Aに追随するなどPromise/Aが優勢になった[要出典]
そのPromise/Aをベースに用語整理していらんもん削ったのがPromise/A+
https://promisesaplus.com/
Promise/A+だとthenメソッドしかないからコンストラクタやユーティリティ(allやrace)を加えたのがES6 Promise
QやBluebirdなどPromise/A+の実装はだいたいES6の実装でもあり、より多機能なスーパーセット
AngularJSのPromiseはQ
実はQのメンテナがPromise/A+のとりまとめで、ES6 Promiseのとりまとめで、Googleの中の人
だからAngularJSのPromise(Q)もv8(Node)のPromise(ES6 Promiseの実装)も同じ人が中心[要出典]
0547デフォルトの名無しさん
2015/07/11(土) 06:53:24.54ID:h5PRCLXB盛り上がってる
おじさんには全てはわからないけど勉強になるよ
0548デフォルトの名無しさん
2015/07/11(土) 09:15:12.83ID:SAoSBNLh0549デフォルトの名無しさん
2015/07/11(土) 09:36:08.00ID:7zNddN8p普通にPromise使いたい場合はどれ使えばいいの?
0550デフォルトの名無しさん
2015/07/11(土) 10:33:10.46ID:dZGExdkCnode v0.12かio.jsなら標準でES6 Promiseが使える
0551デフォルトの名無しさん
2015/07/11(土) 13:12:50.91ID:7zNddN8pありがとうございます
nodeやio.jsだとこの手のパッケージはいらなくなってきてるんですね
スレチですけど、IEのようなブラウザだとnpmのpromiseパッケージあたりでよさそうですね
0552デフォルトの名無しさん
2015/07/11(土) 14:09:36.96ID:dZGExdkCレガシーブラウザならBabel使った方が幸せじゃないか?
その場合はcore-jsのPromiseが使われる
https://github.com/zloirock/core-js
0553デフォルトの名無しさん
2015/07/11(土) 15:00:40.10ID:ElKMe50S余計に面倒じゃない?
ブラウザで使うパッケージシステムならbowerでしょ?
0554デフォルトの名無しさん
2015/07/11(土) 15:17:14.56ID:7zNddN8pそういう意味でもBabelって便利なんですね
しかしまずはes6を覚えねば
>>553
使えますよ。webpackとかでもrequireできますし
最近はbower使わなくなってきました
0555デフォルトの名無しさん
2015/07/11(土) 16:56:32.75ID:ElKMe50S使ってるのは個人ばっかりでqiitaのやってみました系ぐらいしか
情報も見つからない。
0556デフォルトの名無しさん
2015/07/11(土) 23:36:29.68ID:dZGExdkC上に出てたpixiv Sketchや米Yahooの新サービスDaily FantasyもおそらくReact + webpack
https://sketch.pixiv.net/
https://sports.yahoo.com/dailyfantasy/
どちらもサーバはnode/io.jsを使ってIsomorphic JSしてる
0557デフォルトの名無しさん
2015/07/13(月) 13:34:33.33ID:oX4poPnV0558デフォルトの名無しさん
2015/07/13(月) 14:18:54.66ID:+NoacgtO0559デフォルトの名無しさん
2015/07/13(月) 17:51:28.66ID:UxTEJ+9t0560デフォルトの名無しさん
2015/07/13(月) 17:58:47.22ID:oX4poPnV0561デフォルトの名無しさん
2015/07/13(月) 18:00:12.70ID:UxTEJ+9t0562デフォルトの名無しさん
2015/07/13(月) 20:32:09.71ID:Rgm4BYFL0563デフォルトの名無しさん
2015/07/14(火) 13:28:49.57ID:7Tz/sGrk0564デフォルトの名無しさん
2015/07/14(火) 13:46:42.96ID:vQq43Fe20565デフォルトの名無しさん
2015/07/14(火) 16:03:54.88ID:sVWjNIFt0566デフォルトの名無しさん
2015/07/14(火) 16:12:54.91ID:VxoBFrok0567デフォルトの名無しさん
2015/07/16(木) 11:57:26.38ID:/b6luSAZあんたが知らないだけで企業でも開発チームが取り入れている
公式ドキュメントがあるのに何故遠回りして情報を探したいの?
0568デフォルトの名無しさん
2015/07/16(木) 12:40:29.48ID:ytMdukkF日本語で書いてないと読めないんでしょ
0569デフォルトの名無しさん
2015/07/16(木) 13:02:31.36ID:Q/SdAAm+0570デフォルトの名無しさん
2015/07/16(木) 13:12:59.33ID:WO54leEH0571デフォルトの名無しさん
2015/07/16(木) 13:19:58.88ID:vX8sQqWz日本語も読めない人たちだったか
0572デフォルトの名無しさん
2015/07/17(金) 19:23:42.31ID:m6snKPvy0573デフォルトの名無しさん
2015/07/17(金) 19:43:09.66ID:GbM3RqXfhttp://www.ecma-international.org/ecma-262/6.0/#sec-generator-function-definitions
0574デフォルトの名無しさん
2015/07/17(金) 19:49:39.73ID:3HOJEXFcgeneratorの中でgeneratorを使うための構文
myfuncfooがyieldした値をyield*で渡せる
0575デフォルトの名無しさん
2015/07/17(金) 22:02:28.01ID:vn+YJXYMありがとう!
0576デフォルトの名無しさん
2015/07/17(金) 22:33:34.91ID:3HOJEXFc単にmyfunctionfooをthis.myfuncfoo(next)の形で呼び出したいというだけ
yieldとyield*の違いは
function* g1() {yield [1, 2, 3];}
function* g2() {yield* [1, 2, 3];}
を比べてみるとわかりやすい
# yield*は、より正しくは「generatorの中でiterableを使う」ための構文で、generatorはiterable
0577デフォルトの名無しさん
2015/07/19(日) 23:55:21.82ID:Qo0PCiiCnodeでデータベースを抽象化したもの(mysqlとかpostgreとか変更可能なの)とか
O/Rマッパーみたいなのもので有名なものありますか?
0578デフォルトの名無しさん
2015/07/20(月) 00:22:47.16ID:+nfJVLqc0579デフォルトの名無しさん
2015/07/23(木) 10:21:56.96ID:07HCnvKFコマンドプロンプトだとこう
dir /b/a C:\ > C:\tmp\test.txt
書き出したファイル名の後ろは改行にしたいんだけどどうやんのか分からないorz
0580デフォルトの名無しさん
2015/07/23(木) 10:41:22.61ID:FhO1w/1Jがんがれ
0581579
2015/07/23(木) 10:44:24.64ID:07HCnvKF簡単だった・・・
0582デフォルトの名無しさん
2015/07/26(日) 14:48:46.53ID:qZxuNCqfSequlizeとかBookselfとかがあるよ
0583デフォルトの名無しさん
2015/08/05(水) 11:56:12.56ID:DlON+Uf9https://github.com/nodejs/io.js/blob/master/CHANGELOG.md#2015-08-04-version-300-rvagg
0584デフォルトの名無しさん
2015/08/05(水) 22:43:18.92ID:wqHMf9zkそっちを見ないで別の所を参照させる方法ある?
0585デフォルトの名無しさん
2015/08/05(水) 22:43:51.05ID:wqHMf9zk0586デフォルトの名無しさん
2015/08/06(木) 21:18:31.75ID:v62w5bbN0587デフォルトの名無しさん
2015/08/06(木) 21:32:21.06ID:sO/WbnI60588デフォルトの名無しさん
2015/08/06(木) 22:39:22.85ID:RRqMGYywvar firstPath = '・・・';
var loader = require.extensions['.js'];
require.extensions['.js'] = function(module, filename) {
module.paths.unshift(firstPath);
loader(module, filename);
}
require('./app.js'); //本来の起動スクリプト
0589デフォルトの名無しさん
2015/08/06(木) 22:43:08.67ID:9VONu6kL0590デフォルトの名無しさん
2015/08/07(金) 10:53:00.83ID:ueQ0MvNLみんなどうしてるんだろうなー
0591デフォルトの名無しさん
2015/08/07(金) 11:40:35.36ID:uZ08PPfa0592デフォルトの名無しさん
2015/08/07(金) 12:30:33.32ID:ajDAIYpehttps://github.com/node-inspector/node-inspector/issues/716
0593デフォルトの名無しさん
2015/08/07(金) 15:33:39.21ID:ajDAIYpeこれで良いか
0594デフォルトの名無しさん
2015/08/07(金) 16:35:11.08ID:9BmtsJfmあんなゴミソフト使うくらいなら、Atom使うわ
0595デフォルトの名無しさん
2015/08/07(金) 18:35:18.69ID:ajDAIYpe普通のVisual StudioにNTVSプラグイン入れた方がマシだった
atomはatom-node-debuggerがあるけど
SourceMap対応してないみたいじゃん
0596デフォルトの名無しさん
2015/08/07(金) 21:49:56.47ID:ueQ0MvNLsourcemap対応でAltJSでも直接デバッグできて良い
0597デフォルトの名無しさん
2015/08/20(木) 02:21:07.22ID:vRA0t8Vwhttp://www.publickey1.jp/blog/15/nodejsiojsnodejs_409.html
0598デフォルトの名無しさん
2015/08/20(木) 04:21:45.31ID:/ofAbfuE0599デフォルトの名無しさん
2015/08/21(金) 01:16:55.03ID:FY4vSw0x0600デフォルトの名無しさん
2015/09/01(火) 00:37:44.20ID:6FLQcxbw0601デフォルトの名無しさん
2015/09/04(金) 15:56:01.44ID:kfMK3o00その環境でnode.jsのバージョンを0.12にできたら最高なんだがね
0602デフォルトの名無しさん
2015/09/09(水) 13:45:10.34ID:cLSarNth0603デフォルトの名無しさん
2015/09/09(水) 18:56:06.41ID:RxSUVlR80604デフォルトの名無しさん
2015/09/10(木) 13:58:51.29ID:uEOT6dHUsocket.ioはnode 0.12のときいれたのをそのまま使ったら動かなかったけど入れなおしたら使えた
0605デフォルトの名無しさん
2015/09/17(木) 17:04:43.69ID:RsFzCYSG0606デフォルトの名無しさん
2015/09/18(金) 16:30:18.86ID:cX4++fAL0607デフォルトの名無しさん
2015/09/21(月) 15:15:12.61ID:03JYZVpuみたいな書き方ってできないのかな
devDependenciesに追加したり動作確認のためnpm iしてると容量がモリモリ増える
0608デフォルトの名無しさん
2015/09/24(木) 22:37:01.93ID:rTPavUhs0609デフォルトの名無しさん
2015/09/24(木) 23:28:32.67ID:d+OBXrtj0610デフォルトの名無しさん
2015/09/25(金) 10:15:18.69ID:8L6EHGDv0611デフォルトの名無しさん
2015/09/26(土) 11:30:42.49ID:/RmKDqihnpm -g lsでインストールされたパッケージは表示されます
何でですか?
0612デフォルトの名無しさん
2015/09/26(土) 13:11:16.89ID:gA+qxsAJうちはnpm自身を2→3に更新したら30分弱掛かったよ
0613デフォルトの名無しさん
2015/09/26(土) 14:48:43.57ID:lLanKiSinode-gypとかビルドできるようになったのだろうか
0614デフォルトの名無しさん
2015/09/28(月) 00:36:12.08ID:amocDuCq何故かドキュメントに載ってない
普通は使わないからか
https://nodejs.org/api/process.html
0615デフォルトの名無しさん
2015/09/28(月) 05:53:45.72ID:yEnfUQeq0616611
2015/09/28(月) 10:28:45.18ID:xgIbSzto同梱のnpmだとダメだったようでした
0617デフォルトの名無しさん
2015/09/28(月) 17:13:41.52ID:c4nTogwfrequest.post(url:"http....", form{name:"名前"})
ってやると名前の部分が自動でutf8でURLエンコードされてしまうんですが
shiftjisでURLエンコードするには、またURLエンコードせずにpostするにはどうしたらいいんでしょうか
requestモジュールのどっかをオーバーライドするんでしょうか
0618デフォルトの名無しさん
2015/09/28(月) 17:38:41.73ID:dlMXkm1Y0619デフォルトの名無しさん
2015/09/28(月) 17:39:11.05ID:dlMXkm1Yhttp://stackoverflow.com/questions/12040643/nodejs-encoding-using-request
0620デフォルトの名無しさん
2015/09/28(月) 19:20:34.86ID:Aor/5DQQメモリ使いまくっていて1GB(?)の仮想マシンだと
メモリ不足で極端に遅くなってなおかつ落ちた時があったな。
0621デフォルトの名無しさん
2015/09/28(月) 21:22:28.58ID:c4nTogwf寝てました。
encoding: null はリクエストした後のレスポンスボディのエンコードですね。
ヘッダにcontent-type: "text/html; charset=Shift-JIS" とか色々試してみてもできませんでした。
0622デフォルトの名無しさん
2015/09/28(月) 21:29:13.83ID:c4nTogwfrequest.post({url: url, form: forms},function(err,res,body){
〜〜〜〜
});
こういうふうに送信時にformをつけると勝手に
content-type: "application/x-www-form-urlencoded"
で固定されますね。
formをjsonにすると content-type: "application/json"
formをformDataにすると content-type: "multipart/form-data;
になります。
0623デフォルトの名無しさん
2015/09/28(月) 21:36:22.59ID:c4nTogwf単純に
var forms = {
bbs: "tech",
key: 1419673207,
time: 1,
FROM: "",
mail: "sage",
MESSAGE: "テスト"
};
みたいなオブジェクトじゃなくて
var forms = "MESSAGE=%82%b1%82%f1%82%c9%82%bf%82%a0" みたいに文章にしたらURLエンコードされずに行けました。
0624デフォルトの名無しさん
2015/09/28(月) 22:34:56.96ID:c4nTogwf■ このスレッドは過去ログ倉庫に格納されています