X



【node.js】サーバサイドjavascript 4【io.js】 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
垢版 |
2016/04/11(月) 16:28:34.52ID:ORuOCkHy
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/
0489デフォルトの名無しさん
垢版 |
2017/04/08(土) 01:27:17.78ID:GAoRTfTW
何やこいつ
キャンセルする必要がない単発はPromiseでいいし、キャンセルが必要か連発ならobs使えばいいって話だろ
しゅうきょーせんそーかな?
0490デフォルトの名無しさん
垢版 |
2017/04/08(土) 01:28:10.51ID:Ibdd+rg/
単発だからってキャンセルする必要が無いことにはならないんだが?

言ってる意味わかる?
0491デフォルトの名無しさん
垢版 |
2017/04/08(土) 01:31:42.23ID:Ibdd+rg/
Observableが得意なのはキャンセルだけじゃなくて
並列処理もなんで、fs.fstatを並列で実行したいときにも
簡単にかけるというメリットも有るな
0492デフォルトの名無しさん
垢版 |
2017/04/08(土) 01:33:57.12ID:i0oWHzgI
いくら君らが言い合っても、現実はかわらないでしょ?
今ある仕様がすべてで文句かるなら他の言語つかいなよで終わる話しじゃないの?
生産性のない答えもない事で争って暇すぎるだろ
0493デフォルトの名無しさん
垢版 |
2017/04/08(土) 01:36:49.14ID:GAoRTfTW
>>490
「キャンセルする必要がない場合は」
よく嫁
0494デフォルトの名無しさん
垢版 |
2017/04/08(土) 01:37:27.20ID:GAoRTfTW
こいつもしかしてIT速報の管理人か?
転載禁止やぞ。対立煽りはNG
0495デフォルトの名無しさん
垢版 |
2017/04/08(土) 01:45:22.63ID:w3FPiolV
スプーンとお玉の関係に似てる。
ジャムをすくうのにお玉を使ったら逆に不便だろ。そこは適切にスプーンを使え。
キャンセル処理がPromiseだと絶対無理というわけでもないし、Rxが必要とも思えないプロジェクトで無理やりRxを使う必要もない。
0497デフォルトの名無しさん
垢版 |
2017/04/08(土) 02:25:27.18ID:FnclMLRN
レスの文体からして前からJSスレに常駐してる荒らしでしょ
コピペブログ管理人もやってたのかは知らんが
0498デフォルトの名無しさん
垢版 |
2017/04/08(土) 02:31:02.63ID:hy422I1n
>>487
システムコールってwikipediaにもエントリあるのに
unix/linux系はダメなwindows君か
どうりでダメなわけだ
0499デフォルトの名無しさん
垢版 |
2017/04/08(土) 02:35:20.51ID:Ibdd+rg/
>>498
分かってないなw
なんでシステムコールの話がでてくるんだってことだよ。

nodeのAPIと、OSのシステムコールを
一対一で直接結びつける必要はないっつーの

nodeのAPIは単純な一命令でも、内部の実装は
何回もシステムコール呼んだって良いわけだ。

それが分かってないから、お前はシステムコールが
キャンセルできるかどうかなんて言い出したんだろ
こっちは全部お見通しだってーの
0500デフォルトの名無しさん
垢版 |
2017/04/08(土) 05:35:10.56ID:iZgQ7lMc
fetchはキャンセルできる必要があるが、
fetchの戻り値をObsevableにするのは駄目。
Obsevableって一様な幾つものデータを受け取るのに向いているので
fetchのように幾つかの段階で全然違うものが帰って来るのには向いていない。

単純に、Responseにabortメソッドを付けるのが良いと思う
勿論途中のStreamをObsevableにするのはとても良いと思うけど、
それを含んだ全体をするのはおかしい。
0501デフォルトの名無しさん
垢版 |
2017/04/08(土) 05:38:38.21ID:iZgQ7lMc
というか考えたら分かると思う。
キャンセルしたいのはfetchではなく、DLなのだから。
やっぱりCancelToken以外の解は無いと思うよ。
0503デフォルトの名無しさん
垢版 |
2017/04/08(土) 17:29:52.27ID:py60arCP
> キャンセルしたいのはfetchではなく、DLなのだから。

fetchはデータ送信もするんだが?
その場合キャンセルしたいのは何だよ
0504デフォルトの名無しさん
垢版 |
2017/04/08(土) 17:40:38.81ID:py60arCP
>>500
> 単純に、Responseにabortメソッドを付けるのが良いと思う

fetchの戻り値はpromiseであってresponseではない。

responseはpromiseのthenの時に渡される。
promiseのthenが呼び出されるのはfetchの処理が完了した後。

つまりresponseを取得したとき=fetchし終わった時に
abortするのは遅すぎる
0505デフォルトの名無しさん
垢版 |
2017/04/08(土) 18:46:58.17ID:1OsO7EoR
>>499
なにを見通してるのかさっぱり分からんがnodeは低水準のapiを提供するものだ
そうすれば複数のシステムコールを組み合わせた高水準apiはユーザーレベルのライブラリで実現できる
だからfsモジュールは意図的にposixの薄いラッパーになっていてキャンセルはない
0507デフォルトの名無しさん
垢版 |
2017/04/08(土) 18:56:59.44ID:py60arCP
>>505
> nodeは低水準のapiを提供するものだ

どこにそんなことが書いてあるのか?

nodeの立場はブラウザと同じだ。
JavaScriptの実行環境だ。

お前の理屈だと、ブラウザは低水準のAPIを提供するものということになる。
0508デフォルトの名無しさん
垢版 |
2017/04/08(土) 18:58:44.31ID:py60arCP
>>505
> だからfsモジュールは意図的にposixの薄いラッパーになっていてキャンセルはない

じゃあ、例えば、fs.lstatSync は posixのどの薄いラッパーなのか言ってみ
0509デフォルトの名無しさん
垢版 |
2017/04/08(土) 19:01:09.86ID:py60arCP
>>506
> 仕様にはstreamが追加されてる
どっちみち仕様を加えるなら
Observableにした方がいいだろうな。
0512デフォルトの名無しさん
垢版 |
2017/04/08(土) 19:25:59.41ID:+j3lf9vK
>>510
細かく言うとposix aioはほとんどのos kernelで実装されてない
gnuがユーザーレベルのライブラリとして実装したものがあるだけ
0515デフォルトの名無しさん
垢版 |
2017/04/08(土) 19:39:34.36ID:+j3lf9vK
>>504
fetch apiが返すpromiseはfetchが完了してからresolveするわけではない
完了してからresolveするのはres.text()が返すpromise
0519デフォルトの名無しさん
垢版 |
2017/04/08(土) 19:46:03.01ID:py60arCP
>>515
> fetch apiが返すpromiseはfetchが完了してからresolveするわけではない

完了してからだよ。正確にはレスポンスが返ってきてから、
データの受信が完全に完了してからではない。

でないと、Response.statusが取れるわけがないだろう?
0521デフォルトの名無しさん
垢版 |
2017/04/08(土) 19:51:37.12ID:+j3lf9vK
>>519
そう、だから完了してからじゃないじゃん
最初のチャンクが届いたらresolveする
「fetchの処理が完了した後」は明らかな間違い
0523デフォルトの名無しさん
垢版 |
2017/04/08(土) 19:53:53.72ID:py60arCP
>>521
Fetchの処理はリクエスト投げてレスポンス戻すところまでだよ。
ダウンロードが終了するまでの話は最初からしてない

で、Fetchのキャンセル(thenが発動する前)はPromiseでできるの?
できないでしょ?
そこに新しい仕様が必要ならObservableを使えば良いわけさ。
0524デフォルトの名無しさん
垢版 |
2017/04/08(土) 19:54:42.49ID:py60arCP
>>522
だろう? Promiseを含めて「システムコールの軽いラッパー」と
お前が呼ぶならば、Observableを含めたって「システムの軽いラッパー」になる
0525デフォルトの名無しさん
垢版 |
2017/04/08(土) 20:03:11.46ID:0e5YIioE
>>523
fetch apiがpromiseベースでバカなのは何年も前から言われてるし俺も言ってきたからそこに反論する気はない
0526デフォルトの名無しさん
垢版 |
2017/04/08(土) 20:05:16.72ID:0e5YIioE
>>524
キャンセルできなくて単発で結果が決まるシステムコールのラッパーにpromiseよりobservableを選ぶメリットは?
0527デフォルトの名無しさん
垢版 |
2017/04/08(土) 20:20:53.33ID:cXe/TGOq
システムコールとライブラリの違いをわかってないやつがいそうだから、用語をシステムAPIかOSのAPIで統一してくれ
0529デフォルトの名無しさん
垢版 |
2017/04/08(土) 20:31:19.27ID:iZgQ7lMc
>>523
何度も説明してるが、キャンセルは必要だが、Observableはそぐわない
CancelTokenのようなものじゃないと実際齟齬が出るし
その流儀に則って真似して使いやすいように色んなAPIを実装していくのは大変
0530デフォルトの名無しさん
垢版 |
2017/04/08(土) 20:33:09.43ID:py60arCP
俺がobservableの話で並列処理の話を始めると
すぐにキャンセルの話に変えるやつってなんなんだろうねw
わざとなのかな?
0531デフォルトの名無しさん
垢版 |
2017/04/08(土) 20:38:17.35ID:FGB2+VgV
>>528
正しくは並行処理だが常に必要となるわけではない
必要ならpromiseをobservableでラップすればいいだけ
そのために無駄に高機能なapiを土台にするメリットはない
シンプルの上にリッチを乗せることは有意だが逆は無意味だ
0532デフォルトの名無しさん
垢版 |
2017/04/08(土) 20:40:15.25ID:py60arCP
> 正しくは並行処理だが常に必要となるわけではない

絶対に必要ないならいらんだろうさ
常に必要となるわけではない=必要な場合もある。
ならば同じやり方でやったほうが楽
0533デフォルトの名無しさん
垢版 |
2017/04/08(土) 20:49:17.82ID:FGB2+VgV
長さ1の配列があればスカラ値の変数はいらない

let x=1
let y=2
let z=x+y

これは配列が必要な場合と同じやり方で

let x=[1]
let y=[2]
let z=[x[0]+y[0]]

ってやった方が楽
なるほど
0535デフォルトの名無しさん
垢版 |
2017/04/09(日) 17:00:22.44ID:ZPMPIHcF
Observableだけでなく、jQueryもLodashもそうなんだけど、
配列をスカラのように扱うことができるんだよね。

1と2以上を同一化して処理できる。

例えばquerySelectorAllは配列を返す。$()だとスカラ値を返す
どちらもセレクタから複数の要素を検索しているようだけど、この違いによって
querySelectorAllではループ処理が必要になるが、jQueryではループ処理が不要になる

Promiseも単数だから並列しようと思ったら配列が必要になってループも必要になる
つまり>>533でいう後者の書き方
Observableであれば単数も複数も同じように処理できるから、>>533の前者の書き方で
複数の対象を単数と同じ書き方で並列に処理できる。
0537デフォルトの名無しさん
垢版 |
2017/04/09(日) 19:39:40.08ID:FYNHGER+
そもそも「配列」という言葉の定義がない
因みにNodeListは@@iterator対応の予定がずっとある
0540デフォルトの名無しさん
垢版 |
2017/04/10(月) 16:04:40.78ID:/vWjJFQd
一年に1,2回はtoArrayをどうするかの話題で盛り上がるよね
Array、TypedArray、@@iterator、length、Array.isArrayとか沢山楽しい話できるよね
0545デフォルトの名無しさん
垢版 |
2017/04/11(火) 21:09:11.09ID:62uXcToV
デバッグ用にconsole.logで出力を行ってるんだけど、foreverで起動するときはどこにも出力されてないって事でいいのかな?
0547デフォルトの名無しさん
垢版 |
2017/04/12(水) 12:43:00.43ID:rqT+n0Ti
>>544
ゴールまで千里の道というオチですね
0548デフォルトの名無しさん
垢版 |
2017/04/12(水) 16:04:44.52ID:WRJ4LE6o
>>545
Optionsを観ると以下のようになってる。
-o OUTFILE Logs stdout from child script to OUTFILE
-e ERRFILE Logs stderr from child script to ERRFILE
0549デフォルトの名無しさん
垢版 |
2017/04/16(日) 06:10:01.13ID:JlKTjebd
ln -s -f /dev/null /dev/stdout
0550デフォルトの名無しさん
垢版 |
2017/04/21(金) 22:47:20.35ID:vwhSF093
Converting circular structure to JSON
at JSON.stringify

自分なりにdeepCopyつもりのコードで
上記エラーが出た場合に、原因なコードを簡単に見つける方法ってどんなのがありますでしょうか?
0552デフォルトの名無しさん
垢版 |
2017/04/25(火) 16:04:38.46ID:+ad05VVs
circular structur
原因書いてますやん
0554デフォルトの名無しさん
垢版 |
2017/04/28(金) 08:36:18.97ID:NZ0i2p+n
循環参照を持っていてもちょっと関数噛ましてテーブル2つに変換すればJSONに落とし込むことは可能だよ
0555デフォルトの名無しさん
垢版 |
2017/04/28(金) 12:43:11.19ID:TC+lQYaW
以下のように表記を統一するクラス(またはデータベース)でありますでしょうか?

'php' => 'PHP' ,
'perl' => 'Perl' ,
'javascript' => 'JavaScript' ,
0557デフォルトの名無しさん
垢版 |
2017/04/28(金) 15:01:07.81ID:TC+lQYaW
思い出してください w

「自然言語処理 "単語の正規化" 」でググってみましたがズバリ思っているようなのはヒットしませんでした。
どなたか是非!
0558デフォルトの名無しさん
垢版 |
2017/04/29(土) 05:10:42.30ID:GfKuDHiR
つうか全部小文字の単語を直したいだけの辞書なら
通常の固有名詞辞書にちょっと手を加えればいいだけじゃん
0559
垢版 |
2017/04/29(土) 11:53:18.38ID:R/nsoadB
freetaggerとか昔使ったことあるけど、javaScriptなんかの表記の統一は辛かったような。
isDisabledのiはどうするのとか、結局プロジェクト向けのスクリプト書いた気がする。
0561デフォルトの名無しさん
垢版 |
2017/05/03(水) 23:37:41.27ID:jNZhewdQ
package.jsonの"scripts"に書いたコマンドをnpm runで実行する際はnode_modules/.bniがPATHに
追加されますが、これ以外に任意のディレクトリをPATHに追加する方法ってあるでしょうか。
0563デフォルトの名無しさん
垢版 |
2017/05/04(木) 01:58:16.57ID:arHoxXIF
windowsだからpythonのpip以上にnpm厄介だな
0564561
垢版 |
2017/05/04(木) 11:09:36.82ID:l8/ufUYV
ありがとうございます。でもwindowsだとうまくいかないなぁ。

"somecommand": "set PATH=%PATH%;<パス> && <コマンド>"
#<コマンド>は内部でPATH環境変数を使用するスクリプトで、これ自体にはPATHが通っている。

&&の両側のコマンドが同時に立ち上がるんだから当然と言えば当然か。
でもコマンドプロンプトで順次実行する&に変えても結果は同じだった。
bashのexportみたいなのが使えればいいんだけど。
0568561
垢版 |
2017/05/04(木) 15:13:22.65ID:l8/ufUYV
ありがとうございます。cross-envでいけました。
0570デフォルトの名無しさん
垢版 |
2017/05/08(月) 19:19:22.70ID:Eylo3eTX
node.jsでimportを使うと
SyntaxError: Unexpected token import
ってなるんですが、importに対応したnode.jsはまだ出てないのでしょうか?
0572デフォルトの名無しさん
垢版 |
2017/05/09(火) 01:01:42.73ID:VdFod0fE
>>571
importの使い方を聞いていません
babelとwebpackでimport書いてるので使い方は知ってます
node.js自体がimportを実装しているのかを聞いています
0574デフォルトの名無しさん
垢版 |
2017/05/09(火) 06:58:49.50ID:i7CM3KKL
*.mjsからはimport出来るようにしようぜ
ってのを結構前に読んだ気がするけど、まだ実装されたないんか?
0575デフォルトの名無しさん
垢版 |
2017/05/09(火) 08:05:18.10ID:SYbF5UtF
実装どころか提案文書はドラフトのままだよ
(技術的検証が済んでACCEPTされないと実装に進まない)
検証だけであと1年以上掛かるってさ

なお拡張子(*.mjs)でES moduleかどうか判別する手法は
考え得る限り最低の糞という判断が下されたので無くなる
0578デフォルトの名無しさん
垢版 |
2017/05/09(火) 14:48:00.66ID:bmQioI1H
いやnodeってv8使ってる立場だから何もできんでしょ
間違ってる?
0579デフォルトの名無しさん
垢版 |
2017/05/09(火) 15:09:01.72ID:UecSchXq
v8はネットワークもファイルシステムも持ってないからimportは環境(ブラウザやnode)に丸投げでしょ
0580デフォルトの名無しさん
垢版 |
2017/05/09(火) 15:45:52.73ID:bmQioI1H
なるほど
0581デフォルトの名無しさん
垢版 |
2017/05/09(火) 16:25:22.62ID:yROPnHQF
Buffer.byteLengthをブラウザ側でも利用できるように移植して欲しい
今時バイトでカウントするにも自力でコード書かないといけないのは無駄すぎる
0582デフォルトの名無しさん
垢版 |
2017/05/09(火) 21:56:24.65ID:AJpeMRYn
importはJavaScript(EcmaScript)の仕様範疇の中に入れてもいいが、
ブラウザで動かすJavaScriptにおいて、
importはビルド時に解決する問題になるんだよね。

なぜならファイルのアクセス数が増えてパフォーマンス低下につながるから。
JavaScriptファイルを結合することでパフォーマンスをあげるという目的があるから
結合させずに動いたとしても、ビルド時に結合させるという手段は今後も続く。

ウェブサーバーのプラグインでJavaScriptファイルをimport定義に従って
結合するという仕組みができるかもしれないがこれもビルドを配信時に行うってだけ
0583デフォルトの名無しさん
垢版 |
2017/05/09(火) 22:01:42.74ID:AJpeMRYn
>>581
ブラウザ側で実装する or 自力でコードを書く

の中間に、ライブラリを使うという方法があるよ。
この方法を使えば、既存のブラウザでも動くし
自力でコードを書くムダもない

自力でコードを書けるたぐいのものなら、ブラウザに移植してほしい理由を言うとしたら
「ネイティブで実装されていれば速い可能性がある」であるべきだろう
0584
垢版 |
2017/05/09(火) 23:27:53.20ID:jm0lp/yb
>>582
すごく巨大なファイルへのアクセス数でパフォーマンス低下するか、
CDNで配信されてて、もうすでにブラウザキャッシュに存在するかだと、後者の方が速いと思うけど。
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況