【node.js】サーバサイドjavascript 5【Nashorn】

1デフォルトの名無しさん
垢版 |
2018/02/13(火) 22:21:33.91ID:moEhrPrC
pythonやrubyやPHPと同じ土俵でjavascriptが使えるようになりました。
サーバサイドjavascriptについて語りましょう。

node.js - googleが開発したV8エンジン上で実行できる処理系
http://nodejs.org/
ayo.js - node.js 互換で Rod の影響からの脱却を目指す処理系
https://github.com/ayojs/ayo
Nashorn - Java8 からRhinoに代わって同梱されているJavaScriptエンジン
http://www.oracle.com/webfolder/technetwork/jp/javamagazine/Java-JA17-Nashorn.pdf

ayo.js の経緯
https://web.archive.org/web/20170821212745/https://github.com/nodejs/TSC/issues/310
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 4【io.js】
http://mevius.5ch.net/test/read.cgi/tech/1460359714/
【node.js】サーバサイドjavascript 3【io.js】
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/
2020/02/18(火) 09:42:41.11ID:0PsFYxUX
PHPはフレームワーク使わずに、きちんとバリデーションして信頼境界線を意識して使うと、すごく便利よ。
歯を磨くには歯ブラシだなって思う。
391デフォルトの名無しさん
垢版 |
2020/02/18(火) 21:16:40.68ID:enVFBik2
Ruby は、JIT で速いから、web サイトの最高速度は未だに、Rails。
世界を驚嘆させた、dev.to もそう

表示速度が“異常な”Webサイト「dev.to」とか
https://dev.to/

元乃木坂46 の川後陽菜のWebサイト、SKIYAKI とか
https://kawagopro.com/

でも、PHP も、次からは、JIT を搭載するらしい
392デフォルトの名無しさん
垢版 |
2020/02/19(水) 10:03:13.31ID:z/G/Tqiv
Electronで作られたソフトってVSCode以外に何がある?
2020/02/19(水) 10:16:12.59ID:4HrdDmIC
Electronによる掲示板ビューア Siki
http://egg.2ch.net/test/read.cgi/software/1581869479/

数日前偶然見つけた
2020/02/19(水) 10:46:23.82ID:WbyYOLLj
>>392
Slack
Fiddler Everywhere
2020/02/19(水) 11:15:19.90ID:WbyYOLLj
Skype、Discord、Atom、Wordpress、WhatsAppのそれぞれデスクトップ版はElectronらしい
2020/02/19(水) 16:22:36.71ID:z/G/Tqiv
>>393-395
返信ありがとうございます。
2020/02/19(水) 18:04:10.08ID:5ReMICFY
>>392
公式サイトにまとめられてる
https://www.electronjs.org/apps
2020/03/03(火) 12:38:04.52ID:OUIky4K3
HomebrewのインストーラがBashに置き換えられた
2020/03/17(火) 15:04:35.43ID:F6UjfHtk
GitHub、パッケージ管理システム「npm」をメンテナンスするnpm, Inc.を買収
ttp://forest.watch.impress.co.jp/docs/news/1241272.html
2020/03/17(火) 15:06:30.14ID:hD7fKBeR
一番望まれてたところに落ち着いてよかったな
2020/03/17(火) 19:30:12.44ID:kaSPl16J
どっちにpublishすればいいねん問題は杞憂に終わったか
でも一強他弱の構図ってあんまりろくなことにならないんだよなぁ
2020/03/18(水) 00:48:08.66ID:DfI3jJn5
やーんが頑張るやん
2020/03/18(水) 00:56:50.83ID:Y6R8GMvO
やーんはcliだから今の話とはちょっと…
リポジトリ/レジストリがms/github一強過ぎて他の選択肢がーってことよね
2020/04/17(金) 01:34:09.29ID:bDh7CEKX
eventsモジュールにいつの間にか生えてるonceメソッド
ずっと前にこのスレで誰かが欲しがってたやつだな
2020/05/14(木) 13:28:24.58ID:IPYOGIQF
Deno出てきたけどコアモジュールの互換性がないのはきつい
両対応のための中間モジュールが必要になって太る結果にならないといいけど
2020/05/17(日) 10:25:40.44ID:f6yoswhG
今から始めるならDeno1択ですね
2020/05/17(日) 12:43:33.92ID:D/2Y1Nc3
勉強を始めるならそれでもいいがプロダクションで使うのはまだしばらくnode一択だな
2020/05/17(日) 14:17:45.25ID:XFHZbI1n
Deno普通に良さそうだな。
地味に名前で喧嘩売ってるのも嫌いじゃない。
2020/05/17(日) 15:05:29.10ID:bDXiWOOM
次はおでん

https://twitter.com/ryanflorence/status/1261097693033553920
node
deno
enod
oden <- this has potential
https://twitter.com/5chan_nel (5ch newer account)
2020/05/17(日) 15:59:01.17ID:pmJJj293
deno、typescriptネイティブに使えるのが良いな
セキュリティ機能は、早々にalias切って無効化して使いそう。
あと、モジュール読み込みがgolangぽくURIなのは構わんけど、deno.landの信頼性が未知数だ
2020/05/17(日) 16:38:25.62ID:XFHZbI1n
モジュールがURIなのはgoと同じ轍を踏みそうで気にはなるな。
みんなちゃんと互換性に注意して作って、最初からRESTなAPIのようにv1とかv2とかパスに含めるかな?みたいな猜疑心はある。

ただ、Denoでよくやったと思うのは、バンドラーを積んだ事だと思ってるけど、みんなどう思う?
今までnodeで作ったサーバモジュールをインターネットが繋がってない環境にデプロイするの、結構めんどくなかった?
2020/05/17(日) 18:40:18.02ID:ZSTUbran
npmのパワーなしに開発なんて出来ない
2020/05/17(日) 19:13:03.17ID:CWw2P5tA
arm64用のパッケージがほしいdeno
2020/05/18(月) 09:17:50.86ID:y60azEFm
bundleは素晴らしいと思う。
モジュールURIはversion含められるみたいよ
2020/05/18(月) 10:49:02.60ID:3+tKSNz+
1.0で指定できなくね?
2020/05/18(月) 11:19:43.08ID:AZvqm7LQ
armまだなのか。ラズパイで動けばホントに言うことなかったんだけどな。
2020/05/18(月) 13:49:33.87ID:y60azEFm
モジュール周り
https://deno.land/manual/linking_to_external_code
2020/05/18(月) 14:53:11.68ID:X/pFb7Is
やっぱbundle前提か。
しかし、deps.tsは言われてみるとなんと言うことはないんだけど、賢いな。
こいつがっつり使ってみようかな。
2020/05/18(月) 23:35:57.15ID:a6jMS+hP
Nodeと併用できないと趣味以外で使う人いないだろうな
2020/05/19(火) 10:49:44.03ID:GoO5KVYD
node.jsなしでESLintが動かないなら難しい
あとlanguage protocol serverが実装されないと難しい
開発ツールとしてのポジションとなるのは難しいね
2020/05/19(火) 11:59:16.06ID:1h+Pwucu
VSCodeのランゲージサーバー動いてるよ
2020/05/19(火) 12:42:47.30ID:482topUH
linterはdenoが公式に内蔵する可能性高い
formatterはすでに入ってる
2020/05/23(土) 17:14:18.75ID:0ZrNuMGI
nodeにもTLA着たけどREPLじゃ動かんな
仕様ではESM限定だった気がするけどDevTools辺りではできてなかったっけ
2020/05/24(日) 21:34:47.39ID:4uKrfJjq
やっぱ周辺ツールが整わないと使いづれえな
2020/05/27(水) 00:55:30.95ID:Qj2nGC3D
>>418
https://youtu.be/lK384YQx-h0?t=203
2020/06/20(土) 18:47:10.97ID:3Kl5NtPD
Why deps.ts and mod.ts is BAD in Deno
https://dev.to/wongjiahau/why-deps-ts-and-mod-ts-is-bad-in-deno-bjo
2020/06/23(火) 05:08:14.54ID:XbLXAbNL
こんな感じのコードでresolveは実行されてもpromiseが伝達しないケースがあるんだけど
内部的にはどういう理屈でそうなってるの?

new Promise(function(resolve,reject){
eventemitter.on('hoge', function(){
this.removeAllListeners();
resolve();
});
});
2020/06/23(火) 08:23:00.68ID:OtlYTeas
お前が間違ってるだけに500億ペリカ
2020/06/23(火) 09:23:44.44ID:jyrEAGC5
>>427
伝達されないケースの具体例を出さないとわからんよ
430427
垢版 |
2020/06/24(水) 01:09:40.37ID:KrEfgFvd
実際にはlistenerがasync関数で後から発火した他の同期listener内で先にresolve実行してた
そりゃ伝達しないわ…
2020/07/03(金) 01:38:35.72ID:0cCY6OI/
Web API実装の流れでNodeにEventTargetが来たけど使う人いる?
逆なら欲しかったけど
432デフォルトの名無しさん
垢版 |
2020/07/23(木) 10:30:41.88ID:LlcoMZmJ
データベースからデータオブジェクトを
returnする関数をあたかも同期関数のように
ただ実行するだけで戻り値を得られるように作りたいです。

DB情報取得関数定義内でasync await promise
を使ってみましたが
戻り値がpromiseのpendingになってしまったので
仕方なく実行側でもpromiseを生成してラップして
then()を使ってようやく戻り値を得られました。
しかし本来は実行側でpromiseとthenを使うことなく
戻り値を得たかったです

どうすれば良いか教えてください。

あと関数定義内でresolveの実行とreturnがどう違うのか
がわかりません。
2020/07/23(木) 11:06:39.72ID:MBVi+zLE
頼むからコードで説明してくれ

似た質問多いけど非同期を同期にすることは不可能
やるなら呼出側の文脈をまるごと非同期にしてawait
2020/07/23(木) 16:11:17.38ID:+diZSvZW
まるごとも今ならTopLevelAwaitがあるから楽だね
callbackに渡されるresolveはpromiseを解決させるためのスイッチであってreturnではない
Promiseに対する理解が曖昧なままDB扱う処理を書くのは危ないと思う
2020/07/31(金) 16:11:51.42ID:CGhJjJjO
ライブラリっつーのか?
Passportやexpress-sessionってどうやって見つけてきてるの?
436デフォルトの名無しさん
垢版 |
2020/08/04(火) 02:57:28.08ID:vydsY05j
github express middleware やりたいことの英語
でググる
437デフォルトの名無しさん
垢版 |
2020/08/06(木) 20:05:58.89ID:MUhDPlnI
cryptoで公開鍵ファイルつかって
暗号化したんですが
同じデータが毎回違う暗号になってしまいます。
原因を教えてください
2020/08/07(金) 00:05:01.42ID:TzYKRTqH
たぶん、時刻とか、何かランダムな要素を使っているのだろう
2020/08/07(金) 19:32:20.45ID:ysU+OJWY
今後は大規模システム以外は全てJavaScriptだけで書ける夢のような未来が来るね。
2020/08/07(金) 20:50:53.11ID:TH1C+bUh
なんという地獄
441デフォルトの名無しさん
垢版 |
2020/08/08(土) 10:07:34.33ID:noFfmCPy
>>437
salt
iv
442デフォルトの名無しさん
垢版 |
2020/08/08(土) 14:52:32.43ID:ciegX9N/
非同期処理って普通に
バグと脆弱性の温床になるよね?
2020/08/08(土) 17:42:04.42ID:/vlgEPfS
その理解のまま触っていたらそうだろうね
444デフォルトの名無しさん
垢版 |
2020/08/08(土) 23:33:14.88ID:f7NhkLiO
node.js 面白いな。久しぶりにおもしろい言語だ。
445デフォルトの名無しさん
垢版 |
2020/08/08(土) 23:34:04.83ID:f7NhkLiO
PythonとかRubyとかPHPって面白いとか言われてるけど、正直イマイチだよ。

俺はPerlのが好き。
446デフォルトの名無しさん
垢版 |
2020/08/08(土) 23:46:39.64ID:bKK8FlY/
サーバサイドで非同期で
IOやりたい状況なんてそうそうないよ。
ロギングくらいか
とくにトランザクション処理で非同期に
動かれちゃうとほんと地獄


同期的な処理をする専用の
DBアクセス
ファイルIOアクセス
ネットワークアクセス
するライブラリを提供すべき
使用側でpromiseとかじゃなくて
447デフォルトの名無しさん
垢版 |
2020/08/08(土) 23:55:39.53ID:OT1M6D83
今一番熱いライブラリ。

https://ja.uncyclopedia.info/wiki/Progress_display
2020/08/08(土) 23:56:53.43ID:ZWuolq0D
>>444
言語じゃないけどな
449デフォルトの名無しさん
垢版 |
2020/08/08(土) 23:58:34.55ID:OT1M6D83
ライブラリですね。
450デフォルトの名無しさん
垢版 |
2020/08/09(日) 00:40:28.88ID:sb6ynJ/q
違います
451デフォルトの名無しさん
垢版 |
2020/08/09(日) 00:51:05.32ID:2tff8pgk
データベースですね。
2020/08/09(日) 01:20:28.41ID:8UfVx4ij
違います
453デフォルトの名無しさん
垢版 |
2020/08/09(日) 01:48:00.71ID:2tff8pgk
ゴミですね。
2020/08/09(日) 12:06:37.91ID:4gz4Sy4n
そ、違います
2020/08/09(日) 13:10:04.80ID:HdBz3xHm
nude.js ですね
456デフォルトの名無しさん
垢版 |
2020/08/09(日) 16:47:11.71ID:sb6ynJ/q
https://www.moongift.jp/2012/02/20120211/
nude.jsは画像をCanvasで読み込んでヌード画像か否かを判定するソフトウェアです。

裸が見たい!たくさんの画像の中からとにかく裸を見たい!と思う人はnude.jsを自動実行してみると幸せになれるかも知れません。
https://github.com/pa7/nude.js/
457デフォルトの名無しさん
垢版 |
2020/08/11(火) 00:54:04.11ID:jdRsH5YI
これまでの非同期対策手段の
やって欲しかったのはこういうことじゃないんだよ感
がやばい
本来求めてるのはコールバックの記述ないようにして
欲しいのと 余計な関数定義無しで処理を書きたいということ
なのに

Promiseやasync awaitがやってるのは
非同期処理をネストしなくて良くするだけで
肝心のコールバック記述や
余計な関数定義自体はなくならず、
それどころかこれらを使うと更にコードが複雑に
なって可読性が下がってしまう。
そういうゴチャゴチャした部分を無くして欲しいんだよ。
2020/08/11(火) 02:13:08.66ID:DrUL4lPZ
>>457
具体的に理想系を書いてくれるか?
2020/08/11(火) 06:51:02.02ID:KjgiWsfP
WScript.sleep(1000);
2020/08/11(火) 09:44:42.63ID:DyHWpKfR
>>458
ボンッキュッボンッ!
2020/08/11(火) 12:08:29.63ID:HwJhgroD
互換性ぶっ壊してでもコールバックなAPIをどうにかしてくれ
ってことならDenoじゃね
2020/08/11(火) 12:31:29.28ID:RcrtMjNU
>>457はコールバックだけじゃなくてPromiseも否定してね?
どういうものを期待してるのかわからんが、少なくともdenoじゃ解決にならんかと。
2020/08/11(火) 13:28:07.94ID:gDej+7HY
ならGoだろうな
コールバックも非同期処理もいらない
さようなら
2020/08/11(火) 13:50:34.02ID:OsUriXGV
どうせメッセージパッシングに文句垂れるな決まってる
2020/08/11(火) 13:51:16.33ID:OsUriXGV
s/垂れるな/垂れるに/
466デフォルトの名無しさん
垢版 |
2020/08/11(火) 15:38:26.65ID:jdRsH5YI
>>458
ごめんちょっとコールバック入っちゃったけど
こんな感じがいい
「await」という単語は他に思い浮かばなかったから
真似しただけで別の単語でもなんでもいい
実際の「await」の処理とは無関係


await setTimeout( ()=>{}, 1000);
console.log('1秒経過しました');


コールバック引数が欲しい場合
ver data = await $.ajax({省略}).done();
console.log('レスポンスを受信しました');
console.log(data);
467デフォルトの名無しさん
垢版 |
2020/08/11(火) 15:42:24.62ID:jdRsH5YI
↑varをverと書いてしまいました。
2020/08/11(火) 15:50:28.89ID:RcrtMjNU
結局Promise化すれば解決する話に見えるが
中途半端なコールバックの存在が謎。
2020/08/11(火) 16:25:16.36ID:E31y9T9f
Promiseとasync/awaitで解決済みだよなぁ

const sleep = ms => new Promise(resolve => setTimeout(resolve, ms))

って用意するなりimportするなりしておけば

await sleep(1000);
console.log('1秒経過しました');

これだけやんけ
$.ajaxとか書いちゃう知恵遅れさんだからしょうがないか
2020/08/11(火) 17:12:35.72ID:dI29r3/p
あんまりPromiseの事わかってなくて批判しちゃった感じかな。
2020/08/11(火) 17:34:48.50ID:DrUL4lPZ
>>467
スコープないのかよ
ゴミくそ
2020/08/11(火) 19:26:37.90ID:HwJhgroD
数行のコードじゃ意図が読み取り辛いけど
非同期関数を同期にしたいってコトなら絶対無理
2020/08/11(火) 19:33:26.30ID:GZz3NG8W
非同期関数を同期関数のように呼び出せるのがasync/awaitだけどな
動作の話じゃなくてソースの見た目の話だろどうせ
そんなこと気にするよりlet/const覚える方が先だぞ
2020/08/12(水) 07:56:55.71ID:XuneBSJh
promiseもasync/awaitも何も分かってないけど批判してたということだけは非常によく分かった
475デフォルトの名無しさん
垢版 |
2020/08/14(金) 21:41:29.39ID:Fc7pCCli
どうでもいいけど
独自の概念や用語をバンバン押し付けてくる
フレームワークは
ゲロ以下の匂いがプンプンするぜぇーって思うわ
PHP系の糞フレームワークに多い
2020/08/14(金) 21:47:18.13ID:970Aew80
>>475
逆に、独自の概念や用語を押し付けてこないフレームワークって例えば何?
2020/08/14(金) 21:50:10.65ID:B7DyCr2o
アセンブラ
478デフォルトの名無しさん
垢版 |
2020/08/14(金) 21:53:03.39ID:Fc7pCCli
>>476
やっぱexpressかな?
ララベルとかyiiとかは
ファサードとかDIコンテナとか
ゴミみたいな余計な用語出てきて腹立たしいわ
2020/08/14(金) 21:56:59.15ID:970Aew80
>>478
ファサードもDIコンテナも、フレームワーク独自の用語じゃなくてごくごく初歩的な一般用語では?
480デフォルトの名無しさん
垢版 |
2020/08/14(金) 22:07:25.07ID:Fc7pCCli
>>479
そうだね。webとは関係ないよね
webとは関係ない設計上の概念を
Webフレームーワークが押し付けてくるのはおかしいよね
フレームワークはルーティングと
HTMLレンダだけやってりゃいい
DBにもビジネスロジックにも出しゃばってくるべきでは無い
とくにJavaをパクってるだけのPHPでそんな内容
吐き気がするに決まってるだろ
2020/08/14(金) 22:24:17.70ID:B01JOFDh
DIは、最初はめんどくさい仕組みだなって思うけど、
ある日突然納得感に包まれるぞ。
482デフォルトの名無しさん
垢版 |
2020/08/18(火) 21:29:27.81ID:ZCkQ8Dn9
MySQLとかのDBアクセス
同期的にやってくれるライブラリないんか?
fsはSync版あるやん
2020/08/18(火) 21:50:58.81ID:uzsO+4Q7
async/await使えばいいやろ
fsのsyncなんてお遊びかツールでしか使えんし
2020/08/18(火) 21:58:10.75ID:wak8Bz4V
もうjavascriptだけで出来ないことはない!
javascript最強!
javascript最高!

今、javascriptの伝説が始まる!!!!!!
485デフォルトの名無しさん
垢版 |
2020/08/19(水) 04:18:53.44ID:vidjSvBe
キッショ
486デフォルトの名無しさん
垢版 |
2020/08/20(木) 19:53:59.17ID:KMfIHaw0
真偽値が非同期になるとヤバイ
trueかfalseのどちらかかと
思っていた変数が
pendingになっててif文の分岐に
ミスがあったとかマジで勘弁

セキュリティやトランザクション処理が
クリティカルな部分でこんなことやられたら叶わん
2020/08/20(木) 20:05:16.58ID:t5R+TL7j
ごめんよく分からないので
コードで頼む
2020/08/20(木) 20:09:16.66ID:AoU9HO21
低脳はプログラマやめとけ
2020/08/20(木) 20:16:29.65ID:X1nNk3cj
>>486
それマルチスレッドの話じゃね?「非同期」つってもjavascriptのそれとは意味が違う。
2020/08/20(木) 20:32:39.56ID:tyNv301J
pendingは普通にPromiseの話やろ

Promiseを理解せず非同期のコード書くのが悪い
レスを投稿する

5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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