X



【node.js】サーバサイドjavascript 5【Nashorn】
0276デフォルトの名無しさん垢版2018/12/21(金) 09:51:27.26ID:/0a+/ZiL
グローバル空間に、ネームスペースを付けずに、パッケージに
含まれる関数全部を一度に分割代入を使わずにリクワイヤーするにはどうやりますか?
0282デフォルトの名無しさん垢版2018/12/23(日) 12:40:19.38ID:1CMGQ+zK
npmはオワコン
0288デフォルトの名無しさん垢版2018/12/27(木) 16:20:54.35ID:dG7CRozn
>>287
どうしてそう思うのか書いてもらえないと参考にならない。
海外のブログ読んでると、真っ先にyarn移ったような人たちが最近続々とnpmに戻ってきていて、俺にはなぜyarnに移ったのか、そしてなぜnpmに戻ってきたのかサッパリ分からない。
0289デフォルトの名無しさん垢版2018/12/27(木) 16:31:34.16ID:9Wczl2GP
今さら分からない人は分かりたいとも思ってないだろうからどうでもいんじゃね?
npmに戻る人がいるのはnpmがyarnのいいところをどんどん取り入れたからだろう
まともなロックファイル、パフォーマンス、コマンドラインの改善(npx含む)はyarnの後追い
npm独自なのはセキュリティ周りか
0291デフォルトの名無しさん垢版2018/12/27(木) 18:13:43.11ID:00PdR8uN
標準の地位に胡座をかいてシュリンクラップ糞のまま放置してたからyarnに寝首をかかれた
なんでも独占はよくない切磋琢磨が必要
0292デフォルトの名無しさん垢版2018/12/27(木) 19:09:40.30ID:cQueOXAg
ラズパイでなんかやろうとしたときに全然うまくいかなくて試しにyarnにしたらうまくいった事はあった
0298デフォルトの名無しさん垢版2019/02/27(水) 09:26:32.31ID:gzx7LPiY
個人的な感覚だけど組込み関連でもっと伸びるんじゃないかと思う
最近シリアル通信のプログラムよく書いてるよ
0300デフォルトの名無しさん垢版2019/04/02(火) 19:47:41.43ID:2j6V1crX
非同期処理できなくて泣きそう
0301デフォルトの名無しさん垢版2019/04/02(火) 21:28:46.28ID:3dIjgbOm
node.js は、Ruby on Rails でも必須

Babel, Webpack で、ES2015 を、ES5 へ変換する。
Coffee Script, Type Script は不要

初めてのJavaScript 第3版 ――ES2015以降の最新ウェブ開発、オライリー、2017

Rails プログラマーも、この本を読むのが必須!
0305デフォルトの名無しさん垢版2019/05/18(土) 01:39:55.47ID:NUmvom/y
class使うと冗長的でイヤだな〜
JAVAの人以外に使う人いるのか?
PHPもclass文化が入ってきてから長ったらしくて見にくくなった
0306デフォルトの名無しさん垢版2019/05/18(土) 23:10:19.77ID:V1bm/mN0
入れ物どうするの?
0311デフォルトの名無しさん垢版2019/05/26(日) 07:33:35.43ID:BNx/1Kr/
仕事じゃなければclass使う機会ないんじゃないの?
もともと第一級言語だし。
JAVAはいちいち面倒なことしてるなって思う。
0312デフォルトの名無しさん垢版2019/05/26(日) 13:33:28.57ID:/3XSSWvk
去年までのreactではライフサイクル扱うのに必須だったからそれなりにclass使ってた
今はhooksで不要になったけど
vuejsでclass使わないのはvuejsのclassサポートの出来が悪いから
webcomponentsではclass使う
0317デフォルトの名無しさん垢版2019/09/07(土) 13:12:16.63ID:7O56BTDL
dockerでwindowsとalpineの間で共有フォルダを作り、windows上のvscodeで作業しています。
作業ファイル(React)をvscodeを通してdocker内でnpm startしローカルホストを立てそれをwindowsのchromeでアクセスしています。

そのとき、ファイルを変更しては保存をしての繰り返しで挙動を逐一チェックしたいのですが、
修正した.jsファイルを更新してもブラウザ上では内容が更新されません。
一度ctrl c を押して停止させてから、再度npm startをして接続すると、ブラウザでも修正内容が更新されます。
ブラウザのキャッシュ削除や、検証モードでdisable cacheにチェックを入れていても同じでした。

dockerを使わないwindowsだけでの作業をしていた時は、ブラウザの更新マークを押すだけで修正内容が反映されていました。

現在、自動でキャッシュを削除してくれるるnodemonを入れて作業しているのですが、
こちらも結局は、ファイルを上書き保存した時点で自動でnpm startを繰り返してくれるだけなので
どうしても時間がかかってしまいます。

上書き保存をし、ブラウザを更新しただけで修正内容が反映される様にするにはどうすればいいでしょうか?
0318デフォルトの名無しさん垢版2019/09/07(土) 13:39:38.96ID:FOx1f63/
nodemonってことはwebpackは起動してない?
hot module replacement(HMR)使うならdockerの中だろうとwebpack通さないと
あとHMRちゃんと設定できてればブラウザのリロードしなくてもファイル保存しただけで変更が反映されるよ

つか画面周りの開発でdocker使っていいことあるか?
0319デフォルトの名無しさん垢版2019/10/19(土) 18:31:46.54ID:VwkXsBh7
初心者ですがWindowsでnode.jsを使いたいのですが
一人で開発する分にはnvm-windowsとnode.jsとvscodeぐらいを入れとけばやれますか?
作ったアプリを配布する際にパッケージの依存関係を何かに表さなければならないと思うのですが、どう抽出して何に記述しますか?
あとBrowserifyって額面どおりのことを本当にやれるんですか?
(たとえばローカルファイルにアクセスしたりソケット通信するようなJavaScriptコードについて
0320デフォルトの名無しさん垢版2019/10/19(土) 20:52:32.38ID:yv9dYCWj
ガチの初心者かい
的外れなこと聞くよりnpmとかyarnのチュートリアル探してやった方が意味があるぞ
0321デフォルトの名無しさん垢版2019/10/20(日) 10:50:05.69ID:Xl2t0ZNf
ツールを検討するレベルにもまだ達していないな
0322デフォルトの名無しさん垢版2019/10/20(日) 12:17:01.14ID:ADDbXmaX
Node.js, VSCode, Babel, Webpack。
他には、VSCode の拡張機能とか、yarn, gulp

タスクランナーは、gulp, npm scripts

PC 内のファイルにアクセスするなら、Electron とか。
VSCode も、Electron 製
0323デフォルトの名無しさん垢版2019/10/20(日) 12:19:52.71ID:FREy/Z7W
なるほどPC内のファイルにアクセスするためのツールなんですね、Electronって。
0324デフォルトの名無しさん垢版2019/10/20(日) 12:49:58.20ID:TAO9/plN
ファイルにアクセスするだけならnode.js単体でもできる
electronはブラウザとnode.jsを統合したものでHTMLベースのGUIを持ちつつファイルやネットワークを自在に扱える
つまりデスクトップアプリのプラットフォーム
0325デフォルトの名無しさん垢版2019/10/20(日) 13:14:43.74ID:Df2Q09El
えっ、でも>>322が…
0327322垢版2019/10/20(日) 23:37:18.68ID:ADDbXmaX
Electron は、サーバー側・GUI の両方を、1つにまとめたもの!

V8 は、JavaScript の実行環境

サーバー側は、Node.js + V8。
GUI はブラウザで、Chromium + V8

おおー!
V8 が重複しているから、これを1つにしたら効率的!

つまり、Electron = Node.js + Chromium + V8

だから、Electron アプリは、300MB もあるw
0329デフォルトの名無しさん垢版2019/10/21(月) 02:36:24.31ID:W7vxtZcq
>>327
なんで>>322みたいなウソつくの?ねぇ!?
0330デフォルトの名無しさん垢版2019/10/25(金) 02:49:42.38ID:rOQwe8UN
この変な改行は見覚えあるな
いつもWeb板の質問スレでめちゃくちゃなレスしてるやつかな
0333デフォルトの名無しさん垢版2019/10/25(金) 23:35:33.90ID:9ZGj0mXw
糖質の見本みたいなやつ。医学発展のために献体すべき。
0334デフォルトの名無しさん垢版2019/10/26(土) 10:05:13.04ID:e6NVGnmw
糖合質調症
脳が糖で溶ける
0335デフォルトの名無しさん垢版2019/11/03(日) 20:01:18.21ID:v1wfX+lc
Nodeって、なんでこんなに広がったんだろうな?
たかだかjs如きが
0337デフォルトの名無しさん垢版2019/11/03(日) 23:25:52.66ID:ungx1UoX
たかがJSと蔑まれる要因だった高過ぎる自由度が、ベストプラクティスの集積のお陰ですべてプラスに転化してしまったんだ
0338デフォルトの名無しさん垢版2019/11/04(月) 00:16:03.94ID:U87Emrnv
古くはunixやcもたかがだしpcもwindowsもたかがだし
たかがtcp/ip、たかがjava、たかがlinux、そんなばっかだぞ
0339デフォルトの名無しさん垢版2019/11/04(月) 02:10:19.67ID:PlunRwPx
詰まったので質問させてください
WSH(JScript)で書いたスクリプト[run.js]からnode.js[test.js]を実行して結果を標準出力で受け取って表示させると日本語が文字化けします
文字化けしないように受け取るにはどうすればいいか教えてください

[run.js](WSH)test.jsを実行して標準出力で結果を受け取る
var WShell = WScript.CreateObject("WScript.Shell");
a = WShell.Exec("\"C:\\Program Files\\nodejs\\node.exe\" C:\\script\\test.js").StdOut.ReadAll();
WScript.echo(a);//結果の日本語文字化け
WScript.Quit(0);

[test.js](node.js)コマンドプロンプトのdirの結果
var childProcess = require("child_process");
var iconv = require("iconv-lite");
var buffer = childProcess.execSync("dir",
{
timeout: 60 * 1000, // タイムアウト1分
});
console.log(iconv.decode(buffer, "Shift_JIS"));
0340デフォルトの名無しさん垢版2019/11/04(月) 02:25:09.17ID:ku/TWmjC
少なくともブラウザ上で実質唯一の選択肢だったのがブラウザ以外で実用的になったわけだし, 広がる道理としては十分だと思うけどな
0343デフォルトの名無しさん垢版2019/11/04(月) 10:32:03.99ID:PlunRwPx
>>342
ありがとうございます!
CodePageを65001にしても変わらずrun.js実行で文字化けの結果が返ってきます・・・
0346デフォルトの名無しさん垢版2019/11/04(月) 11:40:31.03ID:PlunRwPx
>>345
ありがとうございました!最後の行を置き換えたら文字化けせずに表示されました
ずっとハマってたのでちゃんとできて泣きそう聞いてよかった
0347デフォルトの名無しさん垢版2019/11/04(月) 13:20:30.25ID:Zu03xGz4
クリップボード内の複数行文字列の、各行の先頭・末尾から、
連続する空白類を除去して、クリップボードに入れる

CreateObject("WScript.Shell").Run "powershell ""gcb | % trim | scb""", 0

WScript.Shell の、Run, Exec は、絶対パスじゃなくても、node みたいなコマンド名で書けるだろ?
例えば上なら、powershell というコマンド名

コマンドプロンプトで、where node と入力すると、パスが通っているだろ?
C:\Program Files\nodejs\node.exe
0348デフォルトの名無しさん垢版2019/11/04(月) 13:20:30.45ID:Zu03xGz4
クリップボード内の複数行文字列の、各行の先頭・末尾から、
連続する空白類を除去して、クリップボードに入れる

CreateObject("WScript.Shell").Run "powershell ""gcb | % trim | scb""", 0

WScript.Shell の、Run, Exec は、絶対パスじゃなくても、node みたいなコマンド名で書けるだろ?
例えば上なら、powershell というコマンド名

コマンドプロンプトで、where node と入力すると、パスが通っているだろ?
C:\Program Files\nodejs\node.exe
0350デフォルトの名無しさん垢版2019/11/10(日) 15:12:00.68ID:xm1aPYIT
そのやり取り見てふと探してみたけどNodeから扱えるクリップボード監視APIorモジュールってないんだな
単なるコピペなら見つかったけど
0351デフォルトの名無しさん垢版2019/11/12(火) 13:33:25.22ID:7YZfdUQ7
node.jsでローカルのクリップボード操作ってどうしてる?
java使ったりFlash使ったりは見つかるけどいまいち
0354デフォルトの名無しさん垢版2019/11/23(土) 04:55:17.89ID:gxeBmcpY
npm startをしたところ
Something is already running on port 3000. Probably:
Would you like to run the app on another port instead?
と表示されNoを選択したところローカルで立ち上がりませんでした。

(先にport3000を閉じたくてNoを選んだのですが)
既にport3000が立ち上がっているのが原因かと思うのですが
port3000のローカルを閉じるにはどうすればいいのでしょうか?
通常ですとctrl cで閉じれると思うのですが、
気づいたらそのフォルダごと消えていて、でもport3000は更新しても立ち上がったままになっていまして。
フォルダの方は練習用だったので消えても良いのですが
今後のためにport3000を閉じるコマンドを教えて頂けないでしょうか
0355デフォルトの名無しさん垢版2019/11/23(土) 09:32:04.13ID:cBKKqL2b
netstat -a -n | grep 3000
0356デフォルトの名無しさん垢版2019/12/02(月) 22:16:23.66ID:fbMjr17B
>>355
こういったコマンドがあったのですね・・・
関連コマンドも調べてみて勉強になりました
ありがとうございます!
0357デフォルトの名無しさん垢版2019/12/03(火) 09:38:40.12ID:yN5r9ueQ
ここサーバーサイドのスレだよな
0358デフォルトの名無しさん垢版2019/12/16(月) 00:05:17.66ID:OYZOPSrf
prompt系モジュールでtimeout実装したのって無いの?
探したけどinguirerがプラグインで追加できるくらいしか見つからなかった
0362デフォルトの名無しさん垢版2019/12/17(火) 22:36:05.58ID:SHyLrbNS
なるほど
0363デフォルトの名無しさん垢版2019/12/18(水) 11:46:32.95ID:j3JURanB
Node.js は、Electron, Ruby on Rails でも使う、すべてのweb 系の基礎。
絶対に、インストールして使うもの

パッケージマネージャーのnpm/yarn も使う。
Webpack, Babel なども

Nuxt.js は、Vue.js をより効果的に使うためのライブラリ

JavaScript のサーバー側は、Node.js で、
クライアント側は、jQuery, Vue.js, React など
0364デフォルトの名無しさん垢版2019/12/18(水) 11:58:33.63ID:kJrLdJZA
初めてwebpackでサンプルをビルドした新参ですが、node moduleからbrowser.jsっていうのが組み込まれているようです
これって何をするものなんでしょうか?
0365デフォルトの名無しさん垢版2019/12/18(水) 11:59:14.85ID:RQBBPl9v
>>363
さすが農奴
はんぱねぇわ
0366デフォルトの名無しさん垢版2019/12/18(水) 14:06:17.43ID:j3JURanB
browser.js は、babelで変換せずに、ES6で書いたJSを、ブラウザで実行する

Not intended for serious use
Compiling in the browser has a fairly limited use case...

まあ、実験用

詳しくは「browser.js」で検索して!
0367デフォルトの名無しさん垢版2019/12/18(水) 16:43:15.09ID:kXCOuU9J
>>366
有り難うございます

ES6で書かなければ必要ないものが組み込まれちゃうって事なんでしょうか?
自分のコードが大丈夫でも使用したmoduleがES6の可能性あるとかなのかな
とりあえず気にしない事にします
0368366垢版2019/12/18(水) 22:32:50.86ID:j3JURanB
VSCode では、普通にES6 でも動くから、気にした事がない

それが他人のプロジェクトなら、その設定ファイルに書いてあるのだろう
0369デフォルトの名無しさん垢版2019/12/21(土) 13:23:45.97ID:gaERTb6x
サーバにphpとDBおいてフロントサイドをjsで運用しているんですが
web-dev-serverでこういった環境をローカルに作る事って可能でしょうか?
それともnode.jsを使う以上サーバサイドもjsにしてしまうべきなんでしょうか?
0371デフォルトの名無しさん垢版2019/12/21(土) 13:58:12.68ID:gaERTb6x
>>370
有り難うございます
今までxammpっていうのを使っていたのでそれに流せばいいのでしょうか?
ちょっと試してみます
0373デフォルトの名無しさん垢版2019/12/21(土) 15:31:45.26ID:BSqycIZI
Ruby なら、PowerShell から、1-liner で、
Rubyで作られた遅いウェブサーバー、WEBrick が起動する

ruby -run -e httpd . -p 8080

そのフォルダに、index.html があれば、
何も考えなくても、これでブラウザからアクセスできる

http://localhost:8080

これで遊んだ後は、Routing, O/R マッパーなどを備えた、Sinatra, Rails などのフレームワークを使う。
Rails のコピーが、CakePHP, Spring Boot
0374デフォルトの名無しさん垢版2019/12/21(土) 15:43:47.89ID:DXb4EnUP
最終的な構成で、考えれば?
フロントエンドをサーバーサイドと一緒に配布する(ただの静的ファイル扱い)だけなら、同じサーバでいいけど、
そうでないなら、フロントエンド側も初めから別のサーバにしておく方がいい(CORS対応は必須)。
0375デフォルトの名無しさん垢版2019/12/21(土) 15:52:38.28ID:5ArYAWFR
>>373
お前、アムロの父ちゃんみたいだなw
0376デフォルトの名無しさん垢版2019/12/21(土) 16:08:05.96ID:CcLWlaTM
dev-serverだから開発用途のでしょ
たぶんwebpack-dev-serverだろうけどそれならhot module replacementとか使えるからサーバが何だろうと開発時は使うべき
サーバがnode以外の時はproxyの形で使える
0377デフォルトの名無しさん垢版2019/12/23(月) 13:15:15.27ID:lCv+3OMn
>>376
有り難うございます
proxyの概念自体がよく解ってないんですが、そういう仲立ち的な使い方も出来るという事ですね

ちょっとnpmだけでも覚える事が多すぎるのでゆっくり慣れていく所存です…
0378デフォルトの名無しさん垢版2019/12/23(月) 22:45:35.05ID:nv2HpLa5
Node.js のnpm, yarn, PHP のComposer とか、Ruby のBundler のコピーだろ。
別に、覚えることなんてない

global/local のインストールの区別と、本番用/開発用の区別だけ。
それと、設定ファイル
0380デフォルトの名無しさん垢版2019/12/24(火) 14:05:27.32ID:IBUEMR4t
npmのパッケージ全部覚えるとか
Cの野良ライブラリ覚えるのとか
githubのレポジトリ全部覚えるのとか
苦行以外の何物でもない
0381デフォルトの名無しさん垢版2020/02/15(土) 11:48:59.21ID:rOuGo3aV
node.jsはjavaにおけるjvmみたいなもの?

electronを使ったデスクトップアプリは今後普及するでしょうか?
0382デフォルトの名無しさん垢版2020/02/15(土) 15:14:42.82ID:C3ilCL7T
実行環境という意味ではそっすね
0384デフォルトの名無しさん垢版2020/02/16(日) 07:11:26.16ID:5EL9p8ON
VSCode は、Electron 製

マルチプラットフォームは、
React Native + Expo
アシアルのMonaca(Cordova/PhoneGap) + Onsen UI
Mono を使っている、Unity, Xamarin

やっぱり漏れは、サーバー側は、Node.js よりも、Ruby を使うけど
0385デフォルトの名無しさん垢版2020/02/16(日) 08:37:01.80ID:GfLcoptO
Ruby使うセンスはわからんな。
今どきRailsとか?
あんなの使うぐらいならPHPで素組したほうが早いし安全だと思うわ。
0388デフォルトの名無しさん垢版2020/02/18(火) 01:59:27.59ID:1aZdIiHX
案件の数的にはphp, laravelってのが多いな。
PHPも7以降はプリミティブにもタイプヒンティング使えるからそれを積極的に使うとrailsより良かったりする。
0389デフォルトの名無しさん垢版2020/02/18(火) 05:16:07.44ID:KGU+DtHT
うつ病君
青木 一泰
0390デフォルトの名無しさん垢版2020/02/18(火) 09:42:41.11ID:0PsFYxUX
PHPはフレームワーク使わずに、きちんとバリデーションして信頼境界線を意識して使うと、すごく便利よ。
歯を磨くには歯ブラシだなって思う。
0391デフォルトの名無しさん垢版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 を搭載するらしい
0392デフォルトの名無しさん垢版2020/02/19(水) 10:03:13.31ID:z/G/Tqiv
Electronで作られたソフトってVSCode以外に何がある?
0399デフォルトの名無しさん垢版2020/03/17(火) 15:04:35.43ID:F6UjfHtk
GitHub、パッケージ管理システム「npm」をメンテナンスするnpm, Inc.を買収
ttp://forest.watch.impress.co.jp/docs/news/1241272.html
0401デフォルトの名無しさん垢版2020/03/17(火) 19:30:12.44ID:kaSPl16J
どっちにpublishすればいいねん問題は杞憂に終わったか
でも一強他弱の構図ってあんまりろくなことにならないんだよなぁ
0403デフォルトの名無しさん垢版2020/03/18(水) 00:56:50.83ID:Y6R8GMvO
やーんはcliだから今の話とはちょっと…
リポジトリ/レジストリがms/github一強過ぎて他の選択肢がーってことよね
0404デフォルトの名無しさん垢版2020/04/17(金) 01:34:09.29ID:bDh7CEKX
eventsモジュールにいつの間にか生えてるonceメソッド
ずっと前にこのスレで誰かが欲しがってたやつだな
0405デフォルトの名無しさん垢版2020/05/14(木) 13:28:24.58ID:IPYOGIQF
Deno出てきたけどコアモジュールの互換性がないのはきつい
両対応のための中間モジュールが必要になって太る結果にならないといいけど
0407デフォルトの名無しさん垢版2020/05/17(日) 12:43:33.92ID:D/2Y1Nc3
勉強を始めるならそれでもいいがプロダクションで使うのはまだしばらくnode一択だな
0410デフォルトの名無しさん垢版2020/05/17(日) 15:59:01.17ID:pmJJj293
deno、typescriptネイティブに使えるのが良いな
セキュリティ機能は、早々にalias切って無効化して使いそう。
あと、モジュール読み込みがgolangぽくURIなのは構わんけど、deno.landの信頼性が未知数だ
0411デフォルトの名無しさん垢版2020/05/17(日) 16:38:25.62ID:XFHZbI1n
モジュールがURIなのはgoと同じ轍を踏みそうで気にはなるな。
みんなちゃんと互換性に注意して作って、最初からRESTなAPIのようにv1とかv2とかパスに含めるかな?みたいな猜疑心はある。

ただ、Denoでよくやったと思うのは、バンドラーを積んだ事だと思ってるけど、みんなどう思う?
今までnodeで作ったサーバモジュールをインターネットが繋がってない環境にデプロイするの、結構めんどくなかった?
0418デフォルトの名無しさん垢版2020/05/18(月) 14:53:11.68ID:X/pFb7Is
やっぱbundle前提か。
しかし、deps.tsは言われてみるとなんと言うことはないんだけど、賢いな。
こいつがっつり使ってみようかな。
0420デフォルトの名無しさん垢版2020/05/19(火) 10:49:44.03ID:GoO5KVYD
node.jsなしでESLintが動かないなら難しい
あとlanguage protocol serverが実装されないと難しい
開発ツールとしてのポジションとなるのは難しいね
0423デフォルトの名無しさん垢版2020/05/23(土) 17:14:18.75ID:0ZrNuMGI
nodeにもTLA着たけどREPLじゃ動かんな
仕様ではESM限定だった気がするけどDevTools辺りではできてなかったっけ
0427デフォルトの名無しさん垢版2020/06/23(火) 05:08:14.54ID:XbLXAbNL
こんな感じのコードでresolveは実行されてもpromiseが伝達しないケースがあるんだけど
内部的にはどういう理屈でそうなってるの?

new Promise(function(resolve,reject){
eventemitter.on('hoge', function(){
this.removeAllListeners();
resolve();
});
});
0430427垢版2020/06/24(水) 01:09:40.37ID:KrEfgFvd
実際にはlistenerがasync関数で後から発火した他の同期listener内で先にresolve実行してた
そりゃ伝達しないわ…
0432デフォルトの名無しさん垢版2020/07/23(木) 10:30:41.88ID:LlcoMZmJ
データベースからデータオブジェクトを
returnする関数をあたかも同期関数のように
ただ実行するだけで戻り値を得られるように作りたいです。

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

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

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

似た質問多いけど非同期を同期にすることは不可能
やるなら呼出側の文脈をまるごと非同期にしてawait
0434デフォルトの名無しさん垢版2020/07/23(木) 16:11:17.38ID:+diZSvZW
まるごとも今ならTopLevelAwaitがあるから楽だね
callbackに渡されるresolveはpromiseを解決させるためのスイッチであってreturnではない
Promiseに対する理解が曖昧なままDB扱う処理を書くのは危ないと思う
0436デフォルトの名無しさん垢版2020/08/04(火) 02:57:28.08ID:vydsY05j
github express middleware やりたいことの英語
でググる
0437デフォルトの名無しさん垢版2020/08/06(木) 20:05:58.89ID:MUhDPlnI
cryptoで公開鍵ファイルつかって
暗号化したんですが
同じデータが毎回違う暗号になってしまいます。
原因を教えてください
0441デフォルトの名無しさん垢版2020/08/08(土) 10:07:34.33ID:noFfmCPy
>>437
salt
iv
0442デフォルトの名無しさん垢版2020/08/08(土) 14:52:32.43ID:ciegX9N/
非同期処理って普通に
バグと脆弱性の温床になるよね?
0444デフォルトの名無しさん垢版2020/08/08(土) 23:33:14.88ID:f7NhkLiO
node.js 面白いな。久しぶりにおもしろい言語だ。
0445デフォルトの名無しさん垢版2020/08/08(土) 23:34:04.83ID:f7NhkLiO
PythonとかRubyとかPHPって面白いとか言われてるけど、正直イマイチだよ。

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


同期的な処理をする専用の
DBアクセス
ファイルIOアクセス
ネットワークアクセス
するライブラリを提供すべき
使用側でpromiseとかじゃなくて
0449デフォルトの名無しさん垢版2020/08/08(土) 23:58:34.55ID:OT1M6D83
ライブラリですね。
0450デフォルトの名無しさん垢版2020/08/09(日) 00:40:28.88ID:sb6ynJ/q
違います
0451デフォルトの名無しさん垢版2020/08/09(日) 00:51:05.32ID:2tff8pgk
データベースですね。
0453デフォルトの名無しさん垢版2020/08/09(日) 01:48:00.71ID:2tff8pgk
ゴミですね。
0456デフォルトの名無しさん垢版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/
0457デフォルトの名無しさん垢版2020/08/11(火) 00:54:04.11ID:jdRsH5YI
これまでの非同期対策手段の
やって欲しかったのはこういうことじゃないんだよ感
がやばい
本来求めてるのはコールバックの記述ないようにして
欲しいのと 余計な関数定義無しで処理を書きたいということ
なのに

Promiseやasync awaitがやってるのは
非同期処理をネストしなくて良くするだけで
肝心のコールバック記述や
余計な関数定義自体はなくならず、
それどころかこれらを使うと更にコードが複雑に
なって可読性が下がってしまう。
そういうゴチャゴチャした部分を無くして欲しいんだよ。
0461デフォルトの名無しさん垢版2020/08/11(火) 12:08:29.63ID:HwJhgroD
互換性ぶっ壊してでもコールバックなAPIをどうにかしてくれ
ってことならDenoじゃね
0462デフォルトの名無しさん垢版2020/08/11(火) 12:31:29.28ID:RcrtMjNU
>>457はコールバックだけじゃなくてPromiseも否定してね?
どういうものを期待してるのかわからんが、少なくともdenoじゃ解決にならんかと。
0466デフォルトの名無しさん垢版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);
0467デフォルトの名無しさん垢版2020/08/11(火) 15:42:24.62ID:jdRsH5YI
↑varをverと書いてしまいました。
0469デフォルトの名無しさん垢版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とか書いちゃう知恵遅れさんだからしょうがないか
0472デフォルトの名無しさん垢版2020/08/11(火) 19:26:37.90ID:HwJhgroD
数行のコードじゃ意図が読み取り辛いけど
非同期関数を同期にしたいってコトなら絶対無理
0473デフォルトの名無しさん垢版2020/08/11(火) 19:33:26.30ID:GZz3NG8W
非同期関数を同期関数のように呼び出せるのがasync/awaitだけどな
動作の話じゃなくてソースの見た目の話だろどうせ
そんなこと気にするよりlet/const覚える方が先だぞ
0474デフォルトの名無しさん垢版2020/08/12(水) 07:56:55.71ID:XuneBSJh
promiseもasync/awaitも何も分かってないけど批判してたということだけは非常によく分かった
0475デフォルトの名無しさん垢版2020/08/14(金) 21:41:29.39ID:Fc7pCCli
どうでもいいけど
独自の概念や用語をバンバン押し付けてくる
フレームワークは
ゲロ以下の匂いがプンプンするぜぇーって思うわ
PHP系の糞フレームワークに多い
0478デフォルトの名無しさん垢版2020/08/14(金) 21:53:03.39ID:Fc7pCCli
>>476
やっぱexpressかな?
ララベルとかyiiとかは
ファサードとかDIコンテナとか
ゴミみたいな余計な用語出てきて腹立たしいわ
0479デフォルトの名無しさん垢版2020/08/14(金) 21:56:59.15ID:970Aew80
>>478
ファサードもDIコンテナも、フレームワーク独自の用語じゃなくてごくごく初歩的な一般用語では?
0480デフォルトの名無しさん垢版2020/08/14(金) 22:07:25.07ID:Fc7pCCli
>>479
そうだね。webとは関係ないよね
webとは関係ない設計上の概念を
Webフレームーワークが押し付けてくるのはおかしいよね
フレームワークはルーティングと
HTMLレンダだけやってりゃいい
DBにもビジネスロジックにも出しゃばってくるべきでは無い
とくにJavaをパクってるだけのPHPでそんな内容
吐き気がするに決まってるだろ
0481デフォルトの名無しさん垢版2020/08/14(金) 22:24:17.70ID:B01JOFDh
DIは、最初はめんどくさい仕組みだなって思うけど、
ある日突然納得感に包まれるぞ。
0482デフォルトの名無しさん垢版2020/08/18(火) 21:29:27.81ID:ZCkQ8Dn9
MySQLとかのDBアクセス
同期的にやってくれるライブラリないんか?
fsはSync版あるやん
0484デフォルトの名無しさん垢版2020/08/18(火) 21:58:10.75ID:wak8Bz4V
もうjavascriptだけで出来ないことはない!
javascript最強!
javascript最高!

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

セキュリティやトランザクション処理が
クリティカルな部分でこんなことやられたら叶わん
0491デフォルトの名無しさん垢版2020/08/20(木) 20:41:23.02ID:qjxJt4Hn
>>489
node.jsのスレだからJavaScriptの話なんだが
nodeってシングルスレで合ってる?

あと素人で申し訳ないが
if文がある時もそれ以降のコードに勝手に進んじゃうの?

たとえば
if(非同期の真偽値メソッド() ){
return;
}

console.log('ifに該当したら逐次処理ならここには到達しないはず');

逐次処理ならelseなしで処理を抜けることが出来るが、
非同期処理だと条件分岐も待ってくれないの?
こういうのがかなり怖い
0492デフォルトの名無しさん垢版2020/08/20(木) 20:44:17.20ID:qjxJt4Hn
>>490
非同期のコードが書くの悪いって僕も書きたくないです。
でもデフォルトで非同期の関数ばかりですよね?
ちょっとでも油断すると非同期になっちゃうんです
もちろんasyncやawaitつけてるけど
ついつけ忘れるといつの間にか非同期になってるんです。
0495デフォルトの名無しさん垢版2020/08/20(木) 22:05:57.37ID:wmqy4S/J
まぁそこは同期が基本から非同期が基本に頭切り替えないとね
0496デフォルトの名無しさん垢版2020/08/20(木) 22:43:19.84ID:tyNv301J
>>491
nodeに限らずJSは基本シングルスレッド

JSで本格的にコード書くなら
シングルスレッドでどうやって非同期や並行処理を実現してるのかを
最低限の知識として知っておく必要がある

setTimeout(fn, 0)で渡したfnがどのタイミングで実行されるのかと同じ
少し詳しめのチュートリアルならだいだい解説してある
0497デフォルトの名無しさん垢版2020/08/21(金) 00:43:07.71ID:CMx879FZ
とは言え今ではスレッドも使えるから上手く利用したいところ。
シングルスレッドにこだわってコールバックの中で時間のかかる処理しちゃったら本末転倒。
0500デフォルトの名無しさん垢版2020/09/01(火) 20:38:22.47ID:QR4OvP6I
nodeはバッチ処理にはマジで向いてないよな
ループ中に非同期発生すると
ループ番号の順序性があべこべになるとか
ヤバすぎる
ループ外グローバル変数への
数値溜め込み処理とかどうなるんだこれ

あと完了したと思ってた処理が
完了表示されただけで
実はまだ非同期で動作してたとかありそうで
怖すぎる
0502デフォルトの名無しさん垢版2020/09/01(火) 20:43:25.87ID:tH3NhyKR
>>500
アホ過ぎるwww
0504デフォルトの名無しさん垢版2020/09/01(火) 21:12:04.15ID:QR4OvP6I
すまん、俺は無能なんだわ
バッチ処理は終わるまで時間がかかるから
プログレスバーとして
進捗報告として
データベースの進捗状況テーブルへ
進行度をアップデートしてんだわ
毎ループ進捗報告しなくていいから
%で余り算して定期的に
進捗をアップデートしてんだわ
ところがその進捗報告DBアクセスで
非同期が発生してループの順序が乱れる
進捗状況の進行度が進んだり戻ったり
トリッキーに変動するんだわ
でもループの最後まで到達して完了すると
全てのデータ整合してんだわw
なぜ中間状態だけこんなにトリッキーなのか謎
0506デフォルトの名無しさん垢版2020/09/01(火) 21:59:23.78ID:usFRsaVF
進捗の書き込みはシリアルにやればいいよね?
「80%完了」の後に「70%完了」が来ても無視すればいい
0507デフォルトの名無しさん垢版2020/09/01(火) 22:02:04.20ID:QR4OvP6I
>>506
無視するようにしてるんだよ
whereで大小比較して
更新する数の方が小さかったら更新されないように
してる
でもDB上の数値が減るんだよ。何故だ?
0509デフォルトの名無しさん垢版2020/09/01(火) 22:28:22.77ID:usFRsaVF
>>507
シリアルに書いてないからでしょ
今実行中の進捗報告の書き込みが完了してから
次の進捗報告の書き込みをする

理解できないほうが謎
0513デフォルトの名無しさん垢版2020/09/02(水) 21:31:48.71ID:C0O9Iab7
>>504
こうなる原因が今日特定出来た
ループ自体が多重に並列に動作してた
1つのfor文が動いてるんだと思ってたら
ログをよくよく見たらfor文自体が
3つくらい並列で動いてた
勝手に多重実行になった原因は、
MySQLが処理しきれなくなってタイムアウトが
発生したあと
nodeが自動で(promiseの仕様?)最初から
リクエストの処理をリトライするようで
ピタゴラスイッチのアルゴリズム体操見たいに
なってたわw

初歩的な質問ですが
サーバに飛んできたリクエストだけを中断するには
exitが正解ですか?
returnが正解ですか?
res.end(); ですか?
サーバ自体は止めたくありませんが
ある関数自体を中断するだけでなく
そのリクエストだけ大元から全部中断したいです
0515デフォルトの名無しさん垢版2020/09/07(月) 13:52:39.16ID:KQEAaFWf
どなたか、次の JS のコードの結果が、2,5,3 ではなく、2,3,5 になっている理由を説明出来ますか?

console.log( "0" );
var sample = new Promise( function(resolve, reject) {
  console.log( "1" );
  setTimeout(function() {
    console.log( "2" );
    resolve();
    console.log( "3" );
  }, 1000);
});
console.log( "4" );
sample.then( function(value) {
  console.log( "5" );
});
console.log( "6" );

[結果]
0
1
4
6
2
3
5
0516デフォルトの名無しさん垢版2020/09/07(月) 14:38:17.12ID:UUesL9I9
説明できますかって何だよ挑発してんのかよ
resolve()は必ずイベントループに戻ってからthen()のコールバックが呼ばれるからに決まってるだろがボケカス
マイクロタスクキューでも調べやがれポンコツ
0517デフォルトの名無しさん垢版2020/09/07(月) 15:25:12.91ID:Egt+Qwmp
0
4
1
6
2
3
5

とか

0
4
6
1
2
3
5

にならない?
0518デフォルトの名無しさん垢版2020/09/07(月) 15:45:30.49ID:UUesL9I9
ならない
Promiseコンストラクタはコールバックを即時実行する

MDN
executor 関数は Promise 実装により resolve 関数と reject 関数が渡されて即座に実行されます (Promise コンストラクターが作成したオブジェクトを返すよりも前に executor は呼び出されます)。
0519デフォルトの名無しさん垢版2020/09/07(月) 17:09:51.23ID:3uGG3SyO
>>515
コールスタックが空にならないと、各種キューに入ってる処理は実行されない

最初にconsole.log(“6”);まで処理したらスタックが空になる
その状態でsetTimeoutのタイマーが発動してキューにコールバック関数が入る
スタックが空なのでキューの1番目にあるsetTimeoutのコールバック関数がスタックに積まれて呼び出される
この関数がreturnするまではスタックは空にならないので
それまではキューに入った処理を実行するタイミングはない

console.log(“3”);まで実行してreturnしたらスタックが空になるので
その後、各種キューに入ってる処理があれば実行される
0520デフォルトの名無しさん垢版2020/09/07(月) 17:21:12.28ID:KQEAaFWf
試してみたんですが、setTimeout()で指定している関数の中で、
resolve(111);
resolve(222);
resolve(333);
としてから、
sample.then( function(value) {
  console.log( "5, value=", value );
});
とすると、
5, value = 111
とだけ表示されて、222, 333 の分は表示されないんですが、どういった
理由なのでしょう。
0521デフォルトの名無しさん垢版2020/09/07(月) 17:33:56.06ID:Egt+Qwmp
お前はもう死んでいる
0522デフォルトの名無しさん垢版2020/09/07(月) 17:39:40.90ID:UUesL9I9
最初にresolve()した時点でそのPromiseの値は確定するから
つかスレに書き込む暇があるならドキュメントでも何でもいいから学習してPromiseがどういうもんか理解してから試せよ
Promiseってのは「将来確定する"値"」を表現するもんなんだよ
0523デフォルトの名無しさん垢版2020/09/07(月) 17:52:24.52ID:neZOTIA1
一旦解決したPromiseを再度変更出来たらそれは改竄と呼ぶべきだな
reject(111);
resolve(222);
reject(333);
これは成功したのか失敗したのかどっちよ?
0525デフォルトの名無しさん垢版2020/09/07(月) 18:08:35.44ID:UUesL9I9
最初のreject()で失敗が確定する
Promiseの状態はpending→settledと変わる
settledにはfulfilledとfailedがある
resolve()でfulfilled、reject()でfailedになる
0526デフォルトの名無しさん垢版2020/09/08(火) 00:01:18.48ID:8muSUg7S
nodeの非同期を同期的にやりたい時のコードって
promise async await
resolve thenが複雑に入り組んで
意図した動きになった時はめっちゃ過剰なコードになるよね
精神的にヘトヘトに疲れて 清書する元気も起きん
promiseやresolve変数がたくさん生成しまくって
名前つけるのもめんどうになって
p1とかr3みたいなのが沢山できてる
特にforループの中に非同期使うときは地獄

早くmysqlを同期的にクエリ投げられる
ライブラリ出してください。何でもしますから。
0529デフォルトの名無しさん垢版2020/09/08(火) 12:00:40.54ID:gglleEZ2
ライブラリは需要があればとっくに作られてる
今現在無いのはつまりそういうことだ
0530デフォルトの名無しさん垢版2020/09/08(火) 12:14:59.78ID:1sQ8nqM1
そこの無能が探してもいないだけで無いわけじゃないだろ
例えばあるライブラリのREADMEから

const conn = await mysql.createConnection({ database: test });
const [rows, fields] = await conn.execute('select ?+? as sum', [2, 2]);
await conn.end();

トランザクションも

await connection.beginTransaction();

await connection.commit();

と書ける
0531デフォルトの名無しさん垢版2020/09/08(火) 13:42:27.36ID:8muSUg7S
select文を投げるのは
selectの結果が欲しいから投げる訳であって
結果が取得できる前に
後続のコードに勝手に動かれたら困るのは
当たり前だよなあ?
DBアクセスで非同期って何がメリットが
あるのか分からない。

それにnodeの概念はバカの新人に言葉で説明しにくいんだよ
あいつぜってー非同期とか理解出来ねえぞ
0534デフォルトの名無しさん垢版2020/09/08(火) 14:51:08.13ID:QV2EnsJl
お前の場合はMySQL一つしか使わないのが当たり前かもしれないが世の中にはシャードされた複数のMySQLにアクセスしたりキャッシュのRedisにアクセスしたり検索エンジンのelasticsearchにアクセスしたりいろんなことをしなきゃいけないアプリがあったりするわけ
Nodeではこれらは非同期だから特別なことをしなくてもたやすく並行アクセスできる
同期で並行アクセスしようとすると複数スレッド使って待ち合わせすることになるから非同期より簡単にできるわけではない
0535デフォルトの名無しさん垢版2020/09/08(火) 16:00:24.51ID:8muSUg7S
>>534
ああ、アクセスするのは簡単やと思うわ
問題はその結果の始末を付けるのが大変だと思うわ
なんかいい書籍あるか?
0536デフォルトの名無しさん垢版2020/09/08(火) 17:40:30.89ID:Qj0BclxS
本当に本当にダメなヤツだなぁ(呆れ)
アクセスってのは接続して要求を投げて結果を受け取ってそれを処理して接続を閉じるまでの一連に決まってるだろ
>>530の例だって後始末まで書いてあるのに全然大変じゃないだろが
0542デフォルトの名無しさん垢版2020/09/09(水) 21:12:34.50ID:XGuez22g
それな

× node.js が悪い
× 非同期が悪い
× promise が悪い
× async/awaitが悪い
× 新人がバカ
○ ID:8muSUg7S がバカ

こうだからな
0543デフォルトの名無しさん垢版2020/09/10(木) 14:55:06.91ID:rLZBXCmM
グレたωωω
0544デフォルトの名無しさん垢版2020/09/10(木) 19:56:10.61ID:FWP0gZB+
clusterでマルチプロセスしようとしたんだけど
「EADDRINUSE(ポートが既に使われている)」
エラーがどうしても出てしまいます。
もちろん既に稼働しているnodeはなく、
fork元のapp.jsでlistenしているのと同じポート
子プロセスでまたbindしようとして失敗しているようで
子プロセスは外部からリクエストを受けるような
ものではなく、重い処理をコア分散させて並列処理したいだけです
子プロセスにポート割り当てが必要な理由がよく分かりませんが
恐らく親プロセスと子プロセス間の通信
とかに使うんでしょうか?
子プロセスのポート割り当て回避か、
親プロセスと別ポートを割り当てる方法はありますか?
0545デフォルトの名無しさん垢版2020/09/10(木) 20:18:09.02ID:VafdMbGz
> 子プロセスは外部からリクエストを受けるようなものではなく

それならclusterモジュールは必要なくね
clustetは複数のプロセスを使って大量のリクエストを捌くためのもの
ただの子プロセスならchild_processのメソッドを使う
0546デフォルトの名無しさん垢版2020/09/10(木) 20:21:53.78ID:C+K2oJgr
>>545
なるほど、助かりました
じつはworker_threadsも試してみて同じ
エラー出たので
child_processが正解でしたか
これだとポートは関係ない?
0549デフォルトの名無しさん垢版2020/09/14(月) 20:42:48.98ID:JdQogpR1
>>544 の者ですが
今日これをデバッグしてました。
clusterでもwoker_threadsfでも
child_processでも
「EADDRINUSE」が発生しました

発生するタイミングは子プロセスを生成した時でも
なく
子プロセスでMySQLに対しのコネクション確立時でもなく
確立したDBコネクションからクエリを投げるコード
を実行する時に発生しますが
なぜこのタイミングなのか分かりません

ここで気になったのが
nodeでフロントユーザーに対し
80番ポートをlistenしていて
nodeがローカルのMySQLにアクセスする時
nodeのクライアントポートはフロントと
おなじ80を使うのでしょうか?
それとも別のランダムポートを取得してきて使うのでしょうか?
0551デフォルトの名無しさん垢版2020/09/14(月) 20:55:58.86ID:JdQogpR1
続きですか
もう少し調べてみると
「EADDRINUSE」が発生するタイミングは
MySQLに対しコネクション確立後
SQLを投げる時で間違いないと思いますが、
エラーのスタックとレースを見ても
何かのハンドラから駆動されており自分の書いたコードでは
ありません。
nodeかexpressかmysqlモジュールのハンドラ
だと思います

子プロセスはローカルのMySQLに対して
接続して読み書きするだけで
フロントとのやり取りは一切ありませんが

生成元の親プロセスはExpressのapp.js
で立ち上げてるwebアプリです
0552デフォルトの名無しさん垢版2020/09/14(月) 20:56:11.94ID:JdQogpR1
不思議なのが子プロセスで
mysqlとコネクション確立までは失敗せずに
動作し、SQLを投げる段階で
なぜか大元の「app.js」をもう1つ起動しようとしており
app.jsはもう既に起動してるので、
listenポート重複により上記のエラーが発生するわけです
暫定対応で動くようにはなりましたが、
なぜローカルのDBアクセス時にapp.js実行する
動きをするのかの原因がまだ分かっていません

webとは関係ないはずの子プロセスのファイルを
単体でコマンドで実行した場合も
Expressのベースディレクトリにある
「app.js」が実行されていることが分かりました。
自身のコードではこのようなことをしてないので
フレームワークかモジュールの内部処理だと思いますが、
知っている方がいましたら教えてください。
0553デフォルトの名無しさん垢版2020/09/14(月) 20:57:39.11ID:JdQogpR1
>>550
すみません、もう帰宅してしまったのと
機密事項で怒られるのでスタックトレースは貼れません
0554デフォルトの名無しさん垢版2020/09/14(月) 21:14:49.11ID:AayaioGL
> 単体でコマンドで実行した場合も
> Expressのベースディレクトリにある
> 「app.js」が実行されていることが分かりました。

clusterも何も関係ねーじゃんwww
断言するがフレームワークもモジュールもmysqlも関係なくてお前のバグだから真面目に仕事しろ
子プロセスから再現に関係ない部分を削除しまくって最小限のここで見せられるコードになるまで書き込まなくていいよ
0556デフォルトの名無しさん垢版2020/10/17(土) 18:10:22.96ID:cX3MrjsP
フォルダ全体をコピーしたくて fs-extra のcopySync()を使うために
const fse = require('fs-extra');
としたら、
internal/modules/cjs/loader.js:968
throw err;
^
Error: Cannot find module 'fs-extra'
というエラーが出ます。
npm install fs-extra

npm install -g fs-extra
を試しましたが、途中で警告が出たりして、結局、元のエラーは直りません。
直す方法はありますでしょうか?
0557デフォルトの名無しさん垢版2020/10/17(土) 18:39:14.64ID:cX3MrjsP
>>556
結論的には、

$ npm install -g fs-extra

$ set NODE_PATH=%AppData%\npm\node_modules

としてから、

node xxxx.js

とすると直りました。
0562デフォルトの名無しさん垢版2020/10/25(日) 04:23:13.46ID:Xs0QdE0/
mjsにしないといけないから何なんだよ気になるだろ…
因みにpackage.json弄れば.jsをESM扱いにはできる
0563デフォルトの名無しさん垢版2020/10/25(日) 13:32:05.91ID:xG/xcmJA
node v15にしたからmjsにして requireを全部importに変更したらpuppeteerがimportできなくてまたrequireに戻した
0564デフォルトの名無しさん垢版2020/10/26(月) 06:48:46.11ID:AP4vuhmG
下記のモジュールを使用してHTMLソースからタグを全て取り除く処理を作っているのですが、タグを取り除いてくれません。
ES6で記述されたjavascriptを対応していないブラウザで動作させるために記法を変換してから読み込ませることは知っているのですが、
nodeコマンドで直接実行する場合にもそのような記法の変換などが必要なのでしょうか?

◆モジュール
https://github.com/ericnorris/striptags

◆ソース
main.js
-----
var striptags = require('striptags');
striptags(html);
console.log(html); // 取り除かれていない

◆コンソールで書きコマンドを実行
node main.js
0566デフォルトの名無しさん垢版2020/10/26(月) 14:12:32.65ID:AP4vuhmG
>>565
教えて頂いた方法で取り除かれていることが確認できました。
公開されているソースを確認したら戻り値を受け取るようになっていました。
今後はソースも確認するようにします。
ありがとうございました。
0567デフォルトの名無しさん垢版2020/10/26(月) 14:44:15.69ID:/aZJ5myY
その前にJavaScriptの勉強をちゃんとすべきでは。。。
JSの文字列は不変って知ってればstriptagsの使い方を知らなくても>>564の書き方じゃダメってわかったはず
0574デフォルトの名無しさん垢版2020/10/29(木) 10:07:34.55ID:D91L/a15
俺も文法的にはPHPよりもjavascriptの方が好みなので、できれば移行したいんだけど、
URL単位で小物サービスを作る用途がメインなので今でもPHPを使ってしまう。
なんか、node.jsはCGI的に使うのはナンセンスという雰囲気があって、
でも、たまにしか使わない小物サービス毎にポート番号を消費したくない、
と思うと移行できない。
こんな俺にもおすすめなnode.jsの使い方ってある?
0577デフォルトの名無しさん垢版2020/10/29(木) 16:31:46.11ID:Phiv6uZl
>>574
極々普通にNodeでもルーターから振り分ければいいと思う
PHPだってサービスごとにhttpd立てているわけではないっしょ
0579デフォルトの名無しさん垢版2020/10/29(木) 23:24:45.00ID:D91L/a15
>>577
ありがとう、それだ!俺に必要だったものは。
とりあえず、expressを入れればいいのかな?
ちょっとやってみる。
>>578
俺にはレベル高すぎ(笑)
0580デフォルトの名無しさん垢版2020/11/07(土) 11:58:54.69ID:fULQIOig
npm-run-all で複数のnpm scriptを連続で実行したいんだが、scriptのどれか一つでも
0以外のステータスを返すとそこで処理をやめてしまうのをどうにかできないのかな。

大抵の場合はその仕様でもいいんだけど、たまに、エラーだろうがなんだろうがとにかく
処理しきってしまいたい場合がある。
0583デフォルトの名無しさん垢版2020/11/14(土) 16:32:10.90ID:XA/NhCB9
574です。
$ express --ejs myapp
を実行して、routes/index.jsに
router.all('/:ejs',(req,res)=>res.render(req.params.ejs,{req:req}))
の1行を書き加えただけでかなりphpっぽく使えるね。
ejsファイルを置くだけで、nodeを再起動しなくていいし。
ejsファイルが存在しないときに404 Not Foundじゃなくてエラー画面が出るのが愛嬌だけど。
0584デフォルトの名無しさん垢版2020/11/18(水) 14:56:07.27ID:7Ekft4aV
おめーら的にdenoってどうすか?
使ったことなさそうだけど
0585デフォルトの名無しさん垢版2020/11/18(水) 19:28:04.93ID:Zh0DQZnV
ほんのちょっとしか触ってないけど面倒くささが無い
npmライブラリが使えないけど init だの install だの package.json だの tsc だのやったりいじったりしないで済むから手軽に感じた
時間が経ってライブラリが充実してくれれば普通に使いやすい環境だと思う
0586デフォルトの名無しさん垢版2020/11/18(水) 20:11:49.14ID:7Ekft4aV
期待したいよな
開発者はイケメンだし
0587デフォルトの名無しさん垢版2020/11/18(水) 21:25:12.52ID:v8HWKopj
npmが使えないからエコシステムが育つまで様子見だな。
@types以前のTypeScriptみたいな。
0588デフォルトの名無しさん垢版2020/11/19(木) 01:51:43.98ID:/aqa7r+0
io.jsのように良い部分はNode.js側に取り込んでほしいね
最近は複雑さばかりが増しているし
0589デフォルトの名無しさん垢版2020/11/21(土) 19:45:56.38ID:ANSb4B/j
express 5.xを使ってみたいんだけど、4.17.1になってしまう。
どうすればいいの?
$ npm init --y
$ npm install express@>=5.0.0-alpha.8 --save
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN e5@1.0.0 No description
npm WARN e5@1.0.0 No repository field.
$ npm view express version
4.17.1
0590デフォルトの名無しさん垢版2020/11/21(土) 23:08:26.52ID:jQLdetle
Ruby のBundler なら、プロジェクトルートに移動してから、

Gemfile にバージョン指定を書いて、
bundle install とコマンド入力するけど
0594デフォルトの名無しさん垢版2020/11/22(日) 00:46:23.77ID:7U8BOc5J
>>591
ありがとう。やってみたけどダメだった。
途中の表示にはexpress@5.0.0-alpha.8って出てるのに…
なんか晒すべき設定ってある?

$ npm init --y
$ npm i express@next
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN e5@1.0.0 No description
npm WARN e5@1.0.0 No repository field.
+ express@5.0.0-alpha.8
added 57 packages from 39 contributors and audited 57 packages in 4.105s
found 0 vulnerabilities
$ npm view express version
4.17.1
0595デフォルトの名無しさん垢版2020/11/22(日) 01:12:26.72ID:uIWU98XF
viewコマンドはインストールされたものじゃなくて公開されてるパッケージの情報見るものよ
0596デフォルトの名無しさん垢版2020/11/22(日) 01:15:05.72ID:nMBoVd/n
>>594
npm viewはレジストリの情報を表示するものでローカルにインストールされたものとは無関係だからだなw
npm ls express
0597デフォルトの名無しさん垢版2020/11/22(日) 01:19:23.91ID:ujQ9d+0r
>>594
インストールの時は
$ npm i express@next
って打ってるくせに
なんで
$ npm view express version
って打つわけ?
それなら
$ npm view express@next version
でしょうが…
0598デフォルトの名無しさん垢版2020/11/22(日) 09:31:06.57ID:7U8BOc5J
>>595-597
ありがとう。バージョン確認方法の方が間違ってたのか。
あぶねえ。パッケージ側の情報で確認してたら、何を試しても永遠に出来ないって言ってるところだったw
改めて確認したら、ちゃんと5.xが入ってた。
お騒がせしました。

$ npm ls express | grep express
└── express@5.0.0-alpha.8
0599デフォルトの名無しさん垢版2020/11/23(月) 12:57:39.74ID:3jYl7MgH
node.jsのドキュメントや書籍等で、セキュリティー対策を考慮して書かれているものがあれば教えてください
0601デフォルトの名無しさん垢版2021/01/01(金) 19:21:03.31ID:/+4IUuLb
さくらVPSとかのlinuxサーバにwebアプリをデプロイするベターな手順ってなんかありますか

単純に考えれば、既存のサーバ中のプロジェクトフォルダを消して gitから新しくpullしてnpm ciすればいいはずなんだが
・毎回node_modulesを作るのは時間がかかるから、package-lock.json に変更が無い場合はそのまま引き継ぎたい
・ローカルの設定、ログフォルダといった、消したくないフォルダがある
からちょっと面倒でなんとかしたい

nodejs deployment tool とかで検索しても、すぐ自社のSaasに誘導しようとして
素のEC2的なlinuxマシンでの方法が分からなかった。
0603デフォルトの名無しさん垢版2021/01/02(土) 04:25:18.76ID:VICQRi/P
>>602
ありがとうございます。やはりdockerか。

docker使えない自分はこんな感じでやっていました。
>・毎回node_modulesを作るのは時間がかかるから、package-lock.json に変更が無い場合はそのまま引き継ぎたい
git fetchした後git diff HEAD..origin/master -- package.json で変更があるか確認出来る。
変更があった場合のみnpm installすればいい。

>・ローカルの設定、ログフォルダといった、消したくないフォルダがある
ログフォルダや設定ファイルは.gitignoreしてあるはずだから、気にせず毎回git merge origin/master しても全く問題ないはず。

深く考えすぎてて、普通に手を動かしたら違和感なくデプロイ出来ました。
0604デフォルトの名無しさん垢版2021/03/01(月) 09:14:19.43ID:vtDgs//2
for文について質問させてください。

const execTime = new Date(2021,0,1);
for (
const ix = new Date(execTime.getTime());
ix.getMonth() === execTime.getMonth();
ix.setDate(ix.getDate() + 1)
) {
console.log(ix);
}

これを実行すると、以下のようになります。

2020-12-31T15:00:00.000Z
...
2021-01-30T15:00:00.000Z

なぜ1月1日〜1月31日にならないのでしょうか?
どのように書けばいいのか教えてください。

node -v
v15.9.0
0607デフォルトの名無しさん垢版2021/03/01(月) 17:11:01.18ID:Jj2WQfq1
npm outdateをCLIじゃなくてNode側から使う方法ってない?
stdoutからパースするのは流石に手間で
0609デフォルトの名無しさん垢版2021/03/01(月) 22:10:08.82ID:Jj2WQfq1
>>608
thx
試しにnode_modules/lib/outdated.jsがexportしてる関数を叩いてみたけど
内部のglobalディレクトリ参照でコケているようなエラーが出て機能しなかった
npm自体がModとしてのexportするのもAPIのないEventEmitterインスタンスだし想定してなさそうだ
諦めて自前で実装しているユーザーパッケージを適当に探すよ
0611デフォルトの名無しさん垢版2021/07/14(水) 17:16:26.21ID:x3WS9adn
質問ってここで良いの?
Angularが良くわかないんだけど、例えばmd-toobarとmat-toolbarはなにが違うの?
いま触っているのが全部md-xxxだけど、ググるとmat-xxxばかり
package.jsonも、angularーmaterialになっているけど、ググって出てくるのは@angular/materialで、違いが分からない
0612デフォルトの名無しさん垢版2021/07/16(金) 23:12:53.43ID:ku0oROTf
dnsモジュールのgetServers()が初回実行時の内容キャッシュしてて使い物にならん

>>611
フロントエンドスレが一応立ってるからそっちで聞いてみれば
あとはWeb制作板に質問スレあったけど大分前に荒らしに乗っ取られて今はどうなってるやら
0613デフォルトの名無しさん垢版2021/07/30(金) 15:13:55.95ID:COPEXZUK
Ubuntu18.04でNode.js8.10.0を使ってるのですが、
BigIntのリテラル(例:10N)が使えません。
どうやったら使えるように出来るのでしょう?
0615デフォルトの名無しさん垢版2021/07/30(金) 17:48:26.38ID:n/UloM9p
漏れは、Windows 10, WSL2, Ubuntu 18.04, VSCode だけど、

Linux側には、日本人が作った、バージョンマネージャーのanyenv で、rbenv, nodenv を使って、
ruby 2.6.6, node 12.16.2 を入れた

yarn は、Windows側に入れて、Linux側から、拡張子なしのyarn コマンドを呼べる。
これは、#!/bin/sh で始まるシェルスクリプト

anyenv 公式サイト
https://github.com/anyenv/anyenv

anyenv + macOS環境構築
https://qiita.com/rinpa/items/81766cd6a7b23dea9f3c

anyenv は多言語向きで、rbenv, nodenv, pyenv, phpenv などを同じ使い方で、統一的に扱える。
~/.bashrc に、下の2行を追加するだけで、各言語ごとに追加しなくても良い

export PATH="$HOME/.anyenv/bin:$PATH"
eval "$(anyenv init -)"
0616615垢版2021/07/30(金) 18:08:58.02ID:n/UloM9p
anyenv などを使わず、
Docker で探した方が、もっと簡単かも

apt でインストールした、Node.js 8 は、アンインストールすれば良い
0617デフォルトの名無しさん垢版2021/07/30(金) 18:19:19.46ID:7AkGA5GJ
スクレイピングしたいんですけど何を勉強すればいいですか
不正アクセスに問われたりしないでしょうか?
セキュリティ対策はどのようなことに注意すればよいでしょうか?
0618デフォルトの名無しさん垢版2021/07/30(金) 21:07:04.19ID:AXk+vMk4
今ならPuppeteerか同種のヘッドレスブラウザで実装するのが楽
通常の用途であればセキュリティを気にする部分はない
不正アクセスはまたの問題だから他の質問スレで聞こう
0619613垢版2021/07/31(土) 11:22:07.03ID:A0amfNLA
皆さんありがとうございました。
最新のLTS版Node.jsを入れたらBigIntなリテラル(N)が使える様になりました。

どのようにUbuntu18.04に最新版をインストールしたかと申しますと。

 1. npmでnコマンドをインストール
 2. nコマンドで最新LTS版Node.jsをインストール
 3. aptでインストールしていたnodejsとnpmをアンインストール(依存も解消)

です。
0620615垢版2021/07/31(土) 11:37:20.92ID:tQlroryC
NVM, n も、知ってるけど、
各言語ごとに、ツールの使用方法を覚えるのが大変

全言語で使用方法が統一されている、anyenv, asdf が良い。
最近はどの言語も、Docker が多い
0621613垢版2021/07/31(土) 12:37:39.44ID:A0amfNLA
>>620
Node.jsでパッケージングされているプログラムだけで完結できるのに、
新しいNode.jsにする上で、
他のプログラムや仮想化に依存しなくてはいけない理由は何ですか?
仮想環境が便利だ等であれば別の話だと思うのですが。

私はC/C++、Java、Perl、JavaScript(フロント少々)使いで、
最近Node.jsに手を出し始めたのですが、
anyenvやasdfについては全く存じ上げませんでした。
それらを覚える事によって、
それらのラーニングコストを上回る恩恵を授かれるとは思いませんでした。

>>614さんのアドバイスから>>619まで行き着いた次第で、
シンプルに管理コストを抑えられるるのが一番だとも思っています。
0622デフォルトの名無しさん垢版2021/07/31(土) 16:07:39.01ID:nZmJDmGx
好きなもん使えばいい
俺もubuntuではaptでクソ古いNode入れてからnpmでn入れてnからlatest突っ込んでるよ
0624デフォルトの名無しさん垢版2021/07/31(土) 19:12:03.00ID:8Bi9zOKj
Ubuntu-ltsのデフォnodejsが10.xだもんなあ
オレの環境では動かない、とか言われても知らねえよ。NodeJS公式もサポートしないバージョンまでカバーできる訳ないだろうが
0626デフォルトの名無しさん垢版2021/08/04(水) 19:09:25.30ID:qrQ4Lnon
>>625
ただの翻訳(かつ雑な簡素化)記事なのにその旨の記述がない
画像も元ブログからの転載(盗用)だけどクレジット無し
大手メディアでこれって大丈夫か?
0628デフォルトの名無しさん垢版2021/08/24(火) 08:49:56.10ID:YRe/N1mJ
node.jsのconsole.logのpretty printをデフォルトでやめさせる方法ないのかな?
このおせっかい機能すごくいらいらするのは俺だけかな?
0630デフォルトの名無しさん垢版2021/08/24(火) 15:31:19.22ID:qPWgCxGJ
puppeteerを使ってるプログラムをwebpackでバンドルすると、distにはChromiumが無いからエラーが出ちゃうわ
よく分からん
0632デフォルトの名無しさん垢版2021/08/28(土) 10:29:55.37ID:rJz23Izt
nodeで作ってるapiがメモリ使用量1GBくらいでかなりベビーなんですけど
ここら辺のパフォーマンスチューニングについての知見がまとまってるサイトか書籍ないですかね?
0634デフォルトの名無しさん垢版2021/09/01(水) 09:26:26.45ID:J/+xOU5Y
>>633
あざます!
0635デフォルトの名無しさん垢版2021/09/06(月) 01:52:20.93ID:B6t4Zwws
Fastifyいいな
0638デフォルトの名無しさん垢版2021/09/18(土) 03:38:26.28ID:YPBxfQEw
スクレイピングの勉強するのですが、下手するとF5アタックになるとかの法的リスクと回避法を重視している入門書ってありますか?
今の所やりたいことは、特定の市町村の5年分気温気象データを収集して自分用に加工
近所のコインランドリーの稼働データを集計して空いてる確率が高い時間帯を調べるの2つです
前者は膨大なデータを取得する必要があります
後者は10分から20分おきにアクセスすることになります
0640デフォルトの名無しさん垢版2021/09/18(土) 18:16:18.88ID:J85RgKD5
頭のおかしい人に以下のようなことを言われました

>>基本、スクレイピングは営業妨害との戦い。
>>どの本にも、そう書いてある。
>>スクレイピングを推奨する本はない

具体的な書籍名を教えてください


>>5ch は、マルチポスト禁止!
>>同じ質問を、複数のスレや外部のサイトに書いてはいけない

どこでそんなルールが決まっているのでしょうか?
0642デフォルトの名無しさん垢版2021/09/19(日) 13:46:28.11ID:k7BgVJB0
ググったらauditはクソ設計みたいな記事が出てきた
無視して良かったんだね
いままで膨大な時間を無駄にしてた…(´Д`)ハァ…
0643デフォルトの名無しさん垢版2021/10/10(日) 13:43:36.36ID:rC7NAnza
なんか変な場所でエラー投げられてプロセスが止まると思ったら
依存Modの一つがPromiseコンストラクタのcallback内で非同期エラー投げて止まっていた
そりゃrejectしないしcatchブロックにも引っ掛からんわどうすりゃいいねん
0647デフォルトの名無しさん垢版2021/10/10(日) 20:07:36.51ID:zb1mAGkH
>>646
お疲れさん。ちな何て言うモジュール?
0649デフォルトの名無しさん垢版2021/10/20(水) 02:52:30.75ID:7Ch1Hu5l
スクレイピングに興味があるのですが1時間に1回の頻度のGETだけで訴えられる危険があるって本当ですか?
0652デフォルトの名無しさん垢版2021/10/25(月) 18:50:04.02ID:xfFAFxQ2
パッケージ管理ツールのnpmで公開されている「UAParser.js」は、ユーザーエージェントの判定処理を
実行するJavaScriptライブラリであり、Facebook・Microsoft・Amazon・Googleなどの超大手企業を
含む1000以上のプロジェクトで採用されています。
そんなUAParser.jsがハッカーによってハイジャックされ、LinuxおよびWindowsデバイスを対象に暗号
資産採掘やパスワードの盗難を行うトロイの木馬が仕込まれていたことが判明しました。
0654デフォルトの名無しさん垢版2021/11/17(水) 15:53:34.41ID:OJq8ALeu
上にもちょっとありましたが、レンタルサーバでnode.jsを動かすのって現実的じゃないもんなんですか?
0655デフォルトの名無しさん垢版2021/11/17(水) 16:00:07.09ID:lSu1Xmea
いや全然
上にある「レン鯖はPHP」ってレスは恐らく既に環境を構築済みで
あとは実行する.phpを配置するだけのWebスペースを想定したレス
0657デフォルトの名無しさん垢版2021/11/17(水) 16:34:28.88ID:lSu1Xmea
>>655に書いたような実質Webスペースの共有レン鯖でも端末触れる一部では使えるよ
占有型ではもちろん使えるけど今なら間違いなくVPSのほうがいい
0659デフォルトの名無しさん垢版2021/11/17(水) 23:30:54.62ID:YG2/9hEL
>>656
昔ながらのFTPとかでファイル置くしかできないようなサービスならまずそんなもの導入されてないだろうな
0660デフォルトの名無しさん垢版2021/11/25(木) 05:21:15.21ID:HW7nta/v
gulp4でejsをを使用したい + 別のタスクと記述方法を統一したいのですが
どうしてもエラーが解消できないのでどなたかご教授頂けませんか?(exportsにオブジェクトを突っ込む方法)
古い記述方法では動作しますが、新しい記述方法ではどうしても動作しません。

色々ググったのですが、どのサイト(英語サイトも含め)も古い記述方法で書かれており困っています。
公式も古い書き方に記述されています。(ejsだけ新しい書き方に対応していない?)
https://www.npmjs.com/package/gulp-ejs

//old
gulp.task('ejs', function() {
//
}

新しい記述方法では、どうしても下記のエラーが解消できません。
- The following tasks did not complete
- Did you forget to signal async completion?

また`ps aux`で別のプロセスも走っていないことを確認しており、別のgulpタスクも全てオフにした状態で
デバッグしております。
関数の引数にdoneを入れてdone()で締めたり、return除いてみたり試行錯誤していますが、数時間ハマっています。
どなたら分かる方いらっしゃたらご教授お願い致します。

//new
function ejs() {
return gulp
.src(srcPath.ejs)
.pipe(ejs());
}
exports.ejs = ejs;
0661デフォルトの名無しさん垢版2021/11/25(木) 06:59:11.02ID:nh0ZEMSE
このエラーメッセージで検索すれば?
それか、意味を考えてみれば?

The following tasks did not complete
Did you forget to signal async completion?

もっと単純な例で、動くかどうか試してみれば?
0662デフォルトの名無しさん垢版2021/11/25(木) 07:24:22.11ID:QOEXsJ22
>>660
状況全く分からんが、JSのパーサーはややおかしい?所があって、returnの後はぶった切られる。
よって、 return gulp.src(srcPath.ejs).pipe(ejs()); と改行を無くして試す事を勧める。
0664デフォルトの名無しさん垢版2021/11/25(木) 08:25:42.47ID:QOEXsJ22
>>663
これ return と yield (と後置演算子もか?)はパーサの仕様バグだよな?
直感的じゃ無いという意味で。
0666デフォルトの名無しさん垢版2021/11/25(木) 08:57:16.71ID:QOEXsJ22
>>660
いや実際660はそうしてるだろ。俺も以前嵌った事があったし、
実際セミコロン必須の言語だとどこで切ってもいいから、660の書き方はよく見るよ。
俺はお前がおかしいと思うが。
結局これもMDNで説明するのに例外扱い("no LineTerminator here" 規則)になってるし。
統一された文法ではないよね。(=もっとましな仕様にする事も出来たし、実際他言語はそう)
0668デフォルトの名無しさん垢版2021/11/25(木) 09:45:34.63ID:6PNOZvLH
>>666
その書き方よくみるというけど
1行で書けば見やすいのにわざわざ複数行で見にくくしている意図がわからない
0669デフォルトの名無しさん垢版2021/11/25(木) 10:02:02.58ID:QOEXsJ22
>>668
そりゃ、そうした方が見やすいと思う人がそうするだけだよ。
お前がそう思わなければしなければいいだけ。

ただ実際、660にある公式のコードもそうなってるだろ。
俺も個人的には横に長いコードを書くけど、一般的には縦に長いコードの方が多いと思うよ。
0671デフォルトの名無しさん垢版2021/11/25(木) 10:19:20.71ID:QOEXsJ22
>>670
660の「新しい記述方法だと動かない」とされてるコードは return gulp で改行してる。
660内の公式はこれが出来ない事を知ってるから、 gulp.src(...) で改行してる。(ただしreturnはないが)
0673デフォルトの名無しさん垢版2021/11/25(木) 10:28:27.93ID:rnpiht7q
>>671
return
gulp.src()
ならreturnの後にセミコロンが自動挿入されるけど

return gulp
.src()
ならgulpの後にセミコロンは自動挿入されないでしょ

それよりfunction ejs(){}って名前がダメなんじゃないの?
.pipe(ejs())で再帰になってる
0674デフォルトの名無しさん垢版2021/11/25(木) 10:36:21.11ID:QOEXsJ22
>>672
長さではなく、意味で切るんだよ。

>>673
> return gulp
> .src()
> ならgulpの後にセミコロンは自動挿入されないでしょ
されて gulp が返されるはずだぞ。
0677デフォルトの名無しさん垢版2021/11/25(木) 11:42:21.71ID:QOEXsJ22
>>675
相手するだけ無駄っぽいが、そういうのは物によるんだよ。
そうした方が見やすいと思う奴がそうするだけ。

return ウンコ製造器675号
.src(ケーキ)
.pipe(胃)
.pipe(小腸);
.pipe(大腸);

なら、675によってケーキがウンコに変わるのが見やすくなると思う奴もいるだろ。
(詳しくないが)gulpの場合は基本はフィルタで型が変わらないし、出発点はソースファイルに決まってるから、

return gulp.src(ソース)
.pipe(フィルタ1)
.pipe(フィルタ2)

のケースが多いとは思うけど。


ついでに言っておくと、お前JSによくいる、やたら文法に拘る奴なら、止めた方がいい。
それだと全く進歩しないので。
上記の通り、まあどちらもいるわな、程度で進めていかないと、上達しない。
どちらが正しいとか、そういう問題ではない。
どうにもJS初心者は「改行を極める」「セミコロンを極める」とかになりがちのようで、よろしくない。
0683デフォルトの名無しさん垢版2021/11/25(木) 22:13:54.29ID:HW7nta/v
610です。
仕事でレス遅くなりました。

>>673
ありがとうございます!
このコメントからピンときて修正したら無事に動作しました。

超初歩的なミスでした、、
こちらの書き方は関数の中にejs(gulp-ejsオブジェクト)を書いても動作しましたが
gulp.task('ejs', function() {
}


こちらでは関数に同じ関数入れたらまだタスク終わってないよと、動作しませんよね。(気づけば当たり前なのですが、、)
function ejs() {
}

お騒がせしました。コメント頂いた方もありがとうございました!
0684デフォルトの名無しさん垢版2021/11/25(木) 22:25:35.12ID:HW7nta/v
誤 610です。 = > 正 660です。
0687デフォルトの名無しさん垢版2021/11/26(金) 22:15:56.74ID:FIwAqG/H
スクリプト系は改行も終端になって駄目ね
0688デフォルトの名無しさん垢版2021/11/26(金) 23:57:17.12ID:MbvsChzk
>>687
JavaScriptで駄目なのはreturnのみの行の時だけだよ
return
a
.b()
は駄目だけどこう書く人はいないから問題は起きることはない
return a
.b()
なら大丈夫
0690デフォルトの名無しさん垢版2021/11/27(土) 09:24:44.31ID:LVgG7qhW
>>688
それを知ってないと嵌るだけの無駄仕様だよ。
セミコロンなしの筆頭だったAirbnbも諦めたようだし。
> ASI contains a few eccentric behaviors, though, and your code will break if JavaScript misinterprets your line break. These rules will become more complicated as new features become a part of JavaScript. Explicitly terminating your statements and configuring your linter to catch missing semicolons will help prevent you from encountering issues.
> https://github.com/airbnb/javascript#semicolons
他にセミコロンなしの有名ルール勢ってあったっけ?

return
'qwerty'
+'asdfgh';

とは書きたくなるだろ。書きたいように書けないのはよろしくないよ。今風ではないね。
セミコロン書くルールならASIなんて無い方がマシだし。
0691デフォルトの名無しさん垢版2021/11/27(土) 09:32:19.66ID:MtgsfYs/
書き方にこだわりがあるならそうではない書き方と比べて◯◯の利点があると言わないと他人の理解は得られにくい。
好みだけの問題ならスクリプトの仕様に従うしかない。
0693デフォルトの名無しさん垢版2021/11/27(土) 09:41:13.68ID:LVgG7qhW
>>681
俺向けではないと思うが、

return
'qwerty'
+'asdfgh';

の利点は見れば分かるとおり、インデントを揃えられる事だよ。
タグの方が分かりやすいかもしれんが一々引っかかると面倒なので止めただけ。

return '<div>'
+'<span>'+
+'</span>'+
+'</div>';

だと最初のdivのインデントがずれるだろ。
まあ言うほどではないし、実際俺はこの書き方をしているが、出来れば return の後に改行したいね。
0697デフォルトの名無しさん垢版2021/11/27(土) 11:35:18.29ID:LVgG7qhW
>>696
ならAirbnbというのは俺の勘違いだな。
俺がJSを始めた2013-14頃、有名なコーディングルールが4つほどあって、Airbnbが一番トンデモだった(が、人気は一番という話だった)
その中にはセミコロンを打つな、というルールもあった。誰か思えてないかね?

なお俺はgoogleのルールが一番マシっぽいのでそれを参考にした。(こちらはセミコロンあり)
0698デフォルトの名無しさん垢版2021/11/27(土) 11:43:32.92ID:WAiK9igD
>>697
どこだか覚えてないけど、確かにどっかでセミコロン打たないで、短文を1行に書くときだけセミコロン使うてなの見たか聞いたりした記憶ある。
0699デフォルトの名無しさん垢版2021/11/27(土) 12:14:33.21ID:LVgG7qhW
一応自分でも再確認しているところだが、
> Always use semicolons. (google)
> Use them. Never rely on ASI. (jQuery)
> あなたからセミコロンを奪おうとする反抗的な軍隊があるようです。でも確かに私達の伝統的な文化はまだ元気に生き残っています。だからコミュニティに従って、セミコロンを使いなさい!(Node)
> https://qiita.com/takeharu/items/dee0972e5f39bfd4d7c8

npmのもかなりトンデモだった記憶があり、改めて確認すると、打つな派だ。
> ;(x || y).performAction()
> ;[a, b, c].forEach(performAction)
> for (var i = 0; i < 10; i ++) {
> switch (state) {
> case 'begin': start(); continue
> case 'end': finish(); break
> default: throw new Error('unknown state')
> }
> end()
> }
> https://www.w3resource.com/npm/npm-coding-style.php

となると俺の勘違いはnpmという事になるが、npm==Nodeじゃねえのか?という疑問は発生する。Nodeはnpmからのフォークか?
多分俺が当時見たのは Airbnb, npm, jQuery, googleだと思う。
0700デフォルトの名無しさん垢版2021/11/27(土) 12:30:57.21ID:i1Pzoh/C
NodeはRyan Dahlが始めてセミコロンあり
npmはIsaac Z. Schlueterが始めてセミコロンなし
IsaacはNodeの2代目リーダーだけどNodeではセミコロンを書いてた
0702デフォルトの名無しさん垢版2021/11/27(土) 13:40:28.79ID:LVgG7qhW
>>701
初コミット2015年なのにstandardと主張して他と違うルールとか、頭おかしいな。
とはいえ議論する時間が一番無駄というのは同意だが。

多分セミコロン無し言語出身者用のルールが一つは必要で、
それに向けてのstandard命名なのだろうけど、なんだかね。
0703デフォルトの名無しさん垢版2021/11/27(土) 13:49:34.28ID:MtgsfYs/
文字列を「+」で繋げるのもうやめようよ。見にくいよ。
「´」(バッククォート)で括ればいいじゃん
0707デフォルトの名無しさん垢版2021/12/26(日) 08:00:15.12ID:iIGCgNg3
Promise, async/await で無駄なのは、デタラメ解説の数々、ほぼ全滅だろ、酷い惨状だねー。
0708デフォルトの名無しさん垢版2021/12/26(日) 09:04:50.48ID:S+a9i6vw
それを言ったらWeb系言語は全部デタラメ解説で駄目だろ
初心者が情報公開の練習として解説を書くからそうなる
0709デフォルトの名無しさん垢版2021/12/26(日) 10:12:00.53ID:6ScHvZpk
それはしゃーない、正確さにこだわりすぎて萎縮する方がデメリットが大きい
読む方が気を付けて取捨選択するしかない
0710デフォルトの名無しさん垢版2021/12/26(日) 10:19:35.71ID:jog3O69G
c++とかjavaとか含めて進化してる技術の古い解説はことごとくゴミ化してるし一緒だわな
0713デフォルトの名無しさん垢版2021/12/26(日) 13:40:10.35ID:S+a9i6vw
>>709
同意だが、C#はかなりマシ
一般的に上級者は初心者向けの説明なんて書きたくないものだが、
プログラミング自体について語りたい連中も多少はおり、そいつらを上手く取り込んでる
0715デフォルトの名無しさん垢版2021/12/26(日) 18:08:44.18ID:PnBrsUGe
上っ面といってもそこで整合とれていて内部の問題が表に現れないなら別に問題ないと思うが。
まぁ、中途半端というなら何かそういう部分が見えているということなんだろうが。
0717デフォルトの名無しさん垢版2021/12/26(日) 18:50:24.76ID:PmcDL+gd
>>714
オブジェクト指向的センスが無いと言う事だね

今の時代、両方出来ないとプロだと厳しいと思うがね
0718デフォルトの名無しさん垢版2021/12/26(日) 18:55:49.66ID:S+a9i6vw
プロトタイプの方が表現出来る空間が広くて、実際にただの糖衣構文でクラスを実装出来てるだけだろ
クラスで閉じて使ってる限りプロトタイプの側面は見えないはずだが

混ぜて使うのってありだっけ?(class宣言した物にgetPrototypeOfとか)
class構文の時にどうプロトタイプが配置されるか仕様で確定してないと駄目だと思うが、これってしてるのか?
0719デフォルトの名無しさん垢版2021/12/26(日) 19:35:46.48ID:kUhTwtcg
GoやRustなんかの新しい言語がクラスベースのオブジェクト指向を採用しないご時世
時代遅れとなったC++やJava風のクラス構文を導入する必要はなかったわな
TC39的にはES4で入れ損なったから悲願だったんだろうけど
0721デフォルトの名無しさん垢版2021/12/26(日) 20:48:01.50ID:S+a9i6vw
>>720
仮にそうだとしても、IDEの都合を優先してプログラミング言語を簡素化するのは完全に本末転倒だろ
初心者専用のオモチャが欲しければScratchで満足しとけ
0722デフォルトの名無しさん垢版2021/12/26(日) 20:54:53.04ID:M+F+5/6j
>>721
既存との互換を保ったまま機能追加されてるわけだから言語自体は簡素化されたのてはなく複雑化されたのでは
それはさておき従来の機能が使えなくなるわけでもなく何が不満なのかわからない
0724デフォルトの名無しさん垢版2021/12/26(日) 21:18:20.64ID:S+a9i6vw
>>722
糖衣構文を導入した分言語は複雑化してるし、IDEも余計に対応する必要がある。
IDEを優先するなら何もしないのが最善。
(もちろん仕様を削れるのが最善だが、JSの場合はこれはかなり無理なので)

>>723
仕様で確定してないのなら、混ぜて使う事は禁止だし、
クラスで閉じて使う分にはプロトタイプベースは見えないから問題ないだろ。
何を問題視してる?
0727デフォルトの名無しさん垢版2021/12/26(日) 22:43:28.35ID:M+F+5/6j
>>724
そもそもプロトタイプベースの方が静的解析難しいからちゃんと補完できるIDE作るの難しいと思うよ
例えばプロトタイプベースでtypescript作れるかというと結局クラス宣言的な物を導入せざるを得ないと思う
構文解析なんかは大して難しい話ではない
0729デフォルトの名無しさん垢版2021/12/26(日) 23:27:54.98ID:S+a9i6vw
>>727
最終的に何が言いたいのかさっぱり分からんが、既に言ったとおり、
IDEの都合でプログラミング言語の仕様を決めるものではない。それは逆だ。

プロトタイプベースではIDEを構成出来ないからクラスベースを導入した、と考えてるのなら、上記の通り。
IDEの為にプロトタイプベースを廃止してクラスベースに一本化すべき、でも上記の通りだし、JSでは無理。
IDEの為にクラス構文なんてそもそも導入すべきではなかった、と考えてるのなら、それもありだし個人的には賛成だが、
一般論としては現在の、メジャー言語でほぼクラス導入済みの状況で、JSだけ不採用も、メジャー言語としては難しい。
GoやRustは今も今後ともマイナー言語でしかないし、勝手にやってろでしかない。

静的解析自体はクラスの方が簡単だろうけど、だからどうしたでしかない。
実行エンジンはあるのだから、実装難易度の上限は実行エンジンを実装する程度でしかなく、出来る範囲だ。
最悪、実行エンジンをそのままコールして結果を得る事も出来る。Flycheckとかそういう構造のように見えるけど。

ちなみにTSが型を導入したのも、IDEを作るためではなく、
プログラマが型を明示的に示す事によって、間抜けなエラーを静的に検出するためだぞ。
そこにIDEが勝手に乗っかっただけであって、IDEが無くとも型の導入自体は意味も効果もある。
型無し言語出身者は型をIDEでの補完をするための物だと勘違いしてるが、そうじゃない。
0730デフォルトの名無しさん垢版2021/12/27(月) 00:11:53.01ID:Btn3kp2t
>>729
言いたかったこととしてはプロトタイプベースがクラスベースの機能包含しているとしても
静的解析のこと考えるとプロトタイプベースが必ずしもクラスベースのスーパーセットではないよねということ

実行エンジンを実装してもあらゆるパスが評価できるわけでないので宣言的記法の方に軍配が上がると思うが
実行エンジン内包する方式で宣言的記法と同等の静的解析できてる例ってあるの?

flycheckってemacsのパッケージのことだと思うけどあれも静的解析走らせてるだけで実際にJS評価してるわけじゃないでしょ?

IDEのためだけではないというのはその通りで、途中から略して書いてしまっているが >>720 ではIDEや静的解析といっている
0731デフォルトの名無しさん垢版2021/12/27(月) 05:27:18.08ID:5b2Vj92V
>>730
> 静的解析のこと考えるとプロトタイプベースが必ずしもクラスベースのスーパーセットではないよねということ
IDEの「実装」をプログラミング言語の「仕様」比較(スーパーセットかどうか)に含めるのがおかしい。

それは「○○は△△のスーパーセットではない。なぜなら『僕が』それを『実装』出来ないから」と言ってるのと同じだろ。
IDEは開発をサポートする道具であり、サポート対象はプログラミング言語だ。
よって、仕様上どんなに構文解釈が難しかろうが、必要ならやるしかないし、それだけだよ。
上下関係で言えばプログラミング言語の『仕様』が完全に上であって、
IDEの『実装』の都合をプログラミング言語側に押しつける事は出来ない。

> 静的解析走らせてるだけで実際にJS評価してるわけじゃないでしょ?
俺が使ったのはGoだけど、見た目は実際にコンパイルを走らせてそれをアノテートしてただけ。
でも確かにこれが一番生産性が高いんだよ。

当たり前だが、コンパイラはエラー時には何行目の何文字目でこけた、という情報を持ってる。
だから静的解析が目的ではなく、ソースコード作成時にエラーを表示する事が目的なら、これでいいんだよ。
最大のメリットは構文解釈を自前で実装する必要がない事。
構文解釈機の再開発をやめ、本体コンパイラのエラー情報をより詳細に出す事にリソースを突っ込み、
IDE側はその詳しいエラー情報を解釈してアノテートするだけに徹する。
これで言語側の仕様変更に自動的に追従するようになる。
IDEの数だけ構文解釈機を再開発するのは手段が目的化してる。

> 実行エンジン内包する方式で宣言的記法と同等の静的解析できてる例ってあるの?
Flycheckは外部から呼んでるだけ。でもそれでコンパイラが吐くエラー(=静的エラー)は全て検出出来る。
しかも自前の実装もなしだから、最も生産性が高い。

自前の構文解釈機でコンパイラ/ビルドシステム以上のエラーを検出する気なら、
それはIDEではなくリンターと呼ぶべきだが、
それが出来るのなら、コンパイラ/ビルドシステムにそのリンターを内包して、
IDEはそのエラーを表示する事に徹するのが最も生産性が高い。
IDEで構文解釈するのではなく、エラーを出来るだけ早い段階で検出して修正するのが目的だから。
0732デフォルトの名無しさん垢版2021/12/27(月) 08:32:17.24ID:Btn3kp2t
>>731
> IDEの『実装』の都合をプログラミング言語側に押しつける事は出来ない。
なぜそうあるべきなのですか?
近年の言語はサードパーティーのツール含めたエコシステム全体で生産性をいかに高めるかという観点で設計されることも多いと思うのですが

また、あなたの言う実行エンジンとは静的解析器の意味で実際にJSをevalするものではないということですね?

なぜか構文解析の話になっていますが意図してたのはintellisenseのような意味解析が必要な機能です
プロトタイプベースの記法では解析のためにコードの実行パスを追いかけプロトタイプの設定箇所を検出しなければならないのに対して
宣言的記法であればスコープ内のクラス宣言を見ればだいたい事足りるので実装難易度は大幅に異なるかと
0733デフォルトの名無しさん垢版2021/12/27(月) 09:13:46.85ID:mFj7RPUl
今時プロトタイプベースがぁ、って言ってるのが時代遅れじゃねーの。
クラスベースじゃないからってRustやGoを出してるがそれらはプロトタイプベースですらないわけで。
0734デフォルトの名無しさん垢版2021/12/27(月) 09:41:04.48ID:VqPkBZyA
>>733
>>719はクラスベースを時代遅れと書いたんだが
ぶっちゃけオブジェクト指向が過去のものになってきてるのみんな分かってるだろ
0735デフォルトの名無しさん垢版2021/12/27(月) 10:22:30.58ID:5b2Vj92V
>>732
> 近年の言語はサードパーティーのツール含めたエコシステム全体で生産性をいかに高めるかという観点で設計されることも多いと思うのですが
「多い」というのならまず具体的に名前を複数挙げてみろ。
出来なければそれは君の妄想だね。

> また、あなたの言う実行エンジンとは静的解析器の意味で実際にJSをevalするものではないということですね?
違うぞ。それは今の話に関係ない。(どっちでもいい)

> 意図してたのはintellisenseのような意味解析が必要な機能です
だから何?これも君の考えが間違ってる。
flycheckのやり方でも原理的にインテリセンスは出来るんだよ。
インテリセンスで出なかったキーワードだとコンパイルエラーになるのなら、
仮にコンパイラが無限に速ければ、ソース内の全キーワードで試せば、コンパイルが通るキーワードのリストは得られる。
実際こんな事をしてる物はないと思うが、構文解釈で100%絞る必要なんて無くて、
候補が数個程度なら全部試してエラーが出なかった物を出す程度でも十分実用的なんだよ。
今時emacsでもインテリセンスするようだから、そんなにIDEが気になるのなら、彼等のアプローチを確認してみるといいよ。
全言語向けに自前でやってる事なんてないと思うよ。

プロトタイプを自分で追うのが技術的に無理なら、evalさせてgetPrototypeOfやinstanceofを使って追えばいいだけ。
自前の構文解釈器でソースからデータツリー構築をする気だからおかしくなる。
それはevalすれば実行エンジン内に構築されるものでしかないのだから、完全に再開発だろ。
eval出来る環境があり、それが一番近道なら、やればいいだけ。

君は多分「生産性」を勘違いしてる。
むしろ再開発しすぎてるし。


現状どうなってるのか知らないのだけど、メジャーなIDE、
例えばVSCodeとかだとクラスベースならインテリセンス出来るが、プロトタイプベースだと無理とかなのか?
誰か使ってたら教えてくれ。
0736デフォルトの名無しさん垢版2021/12/27(月) 10:51:32.02ID:gEDfakwV
×クラスベース
○クラス構文

クラス構文で書いてもプロトタイプベースなのは変わらん
0737デフォルトの名無しさん垢版2021/12/27(月) 11:21:14.15ID:mFj7RPUl
>>734
確かにクラスベースがってよりオブジェクト指向が時代遅れって感じだね。
JS自体は関数プログラミングもいける。
0738デフォルトの名無しさん垢版2021/12/27(月) 11:22:05.04ID:lxgQYw9b
言語仕様も分かってないIDEも使ってない部外者の素人同士が長文レスバって地獄だな
0739デフォルトの名無しさん垢版2021/12/27(月) 11:54:45.10ID:Btn3kp2t
>>735
> 「多い」というのならまず具体的に名前を複数挙げてみろ。
例えばgolangやrustはコアチームがツール開発に積極的ですね
ツールのチームがコア言語に対してフィードバックしていたりする

> eval出来る環境があり、それが一番近道なら、やればいいだけ。
"構文解釈機" という言葉を使っているから静的解析を意図してるのかと思ったけど動的解析も含んで言っていたのね
それで実用に耐えうる速度と精度が実現できるならそういうアプローチもありかもね

それから別にIDEが自前で静的解析器を開発すべきなんて主張はしてないから藁人形論法はやめてくれ


>>737
オブジェクト指向というか継承が忌避されてる気はする
0740デフォルトの名無しさん垢版2021/12/27(月) 12:21:31.31ID:VwNgBMvN
オブジェクト指向ならではの筆頭が継承だから継承が忌避されてる=オブジェクト指向が忌避されてるってことよ
OOPLが提供していた継承以外の特性の多く(カプセル化など)は抽象データ型から来ていてそれは時代遅れになってないし忌避されてもいない
0742デフォルトの名無しさん垢版2021/12/27(月) 13:40:18.86ID:Uq9DqbRx
>>741
混在した書き方っての次第だが

class A {}
A.prototype.x = () => {}
a = new A()
a.x()

こんなのは当たり前に動くぞ
つかまずは自分で試せよw
JSなんかブラウザあれば動かせるんだからさー
0743デフォルトの名無しさん垢版2021/12/27(月) 15:00:45.57ID:5b2Vj92V
>>739
> 例えばgolangやrustはコアチームがツール開発に積極的ですね
それで、それらの言語のどの仕様がIDEの都合で採用されたものなの?

> 藁人形論法はやめてくれ
なら最初から分かるように主張しろ。
何が言いたいか分からないからエスパーして複数挙げてみただけ。
馬鹿は無視してきっちり自分の意見を書ききれ。
3行しか読めない馬鹿はプログラミングなんてどうやっても出来ない。
MDNその他のリファレンス見りゃ分かるが、そんな世界じゃない。
5ch程度の文にすら手こずるようではどだい無理だよ。

解釈が動的か静的かは意味無い。
出来るだけ早い段階でエラーを検出して修正したいだけであって、それが出来れば何だっていいんだよ。
その手段の一つが静的解析でソース作成時にエラーを表示する事であって。
でも、エラー表示だけなら、コンパイラやevalにぶち込めば出来るし、それをやってるっぽいのがflycheck。

構文解釈器を自前で作るとしても、クラス構文でもプロトタイプ構文でも、大して難易度は変わらない気もするが。
実際に問題になるのは、構文解釈そのもの、具体的にはJS的な様々な書き方でも問題なく動くパーサの構成だろ。
構文解釈後の親class/プロトタイプ追跡なんて辿ればいいだけだからアホでも出来る。
それで今時のIDEで実際どうなのか聞いたんだよ。
もしプロトタイプ構文ではインテリセンスが動かないのなら、何か理由はあるのだろうけど。


継承が忌避されてるのは、JAVAでは関数ポインタが使えず、同様の事をするためには継承をこねくり回すしかなくて、
それの残骸がデザインパターンなのだが、
結果、継承すべきでない局面での継承で酷い事になってるからだよ。
でも、継承すべき場所では継承した方がよくて、全部捨ててるGoはいちいち全部書かないといけないのが糞。
あれは1周目はまだしも、2周目以降でそのコピペされたソースにメンテコストがかかるから、先すぼみになると予想してる。
Rustはやってないから知らん。
0744デフォルトの名無しさん垢版2021/12/27(月) 15:36:34.22ID:KDGmbGA4
何言ってるか分からない相手にエスパーして反論って藁人形そのもので完全に異常者
0745デフォルトの名無しさん垢版2021/12/27(月) 15:55:56.69ID:h2/Ma5NI
いい加減スレチだから他所でやってもらえんかね
このスレ伸ばすにしてもnodeにScheduling APIが入ったとか普通にネタあるだろ
0748デフォルトの名無しさん垢版2021/12/27(月) 16:28:54.26ID:XkNPDe9x
denoは苦戦してるみたいだねー
それでexpressなどnode用のライブラリが動くように互換性を高める方針になった
でもそれならnode使い続ければいいやってなりそう
0749デフォルトの名無しさん垢版2022/01/05(水) 00:01:04.66ID:XksPZRYQ
puppeteerを使って投票サイトの投票を自動化したいのだけど、
実行してもエラーを起こさず無反応なんだよね

Headless Recorerを使ってるからHTML部分の間違いはないと思うのだけど、
UserAgent以外で何か対策ないっすかね
0750デフォルトの名無しさん垢版2022/01/05(水) 00:22:23.97ID:n516+jFB
いくらでも試すことはあるけど悪事の片棒を担ぎそうで怖いな
一般論として言えるのはpuppeteerでも普通にWebページのコンテキストからDOM APIを叩ける
0751デフォルトの名無しさん垢版2022/01/05(水) 00:33:19.61ID:XksPZRYQ
んじゃ、逆にWEBサイトを作る側はどんな対策をしているのでしょうか?
0753デフォルトの名無しさん垢版2022/01/05(水) 15:02:25.17ID:XksPZRYQ
>>752
使ってるところは諦めてるんだけど、使ってないところはどうやってるのかな〜と思って
UserAgentをガラケーにしてみたり、プレステにしても無反応なんだよね
0754デフォルトの名無しさん垢版2022/01/05(水) 15:47:16.38ID:w42D9Ab/
手動で操作した時のリクエストヘッダーの中身を解析して
間違いなく妥当なリクエストが投げられてるのが大前提

あとは“how to detect headless browser”でググるといいよ
0756デフォルトの名無しさん垢版2022/01/10(月) 00:21:58.20ID:MINWORCd
スレ立てるまでもない質問はここで 158匹目
https://mevius.5ch.net/test/read.cgi/tech/1635193843/538

ここに、YouTube で有名な、雑食系エンジニア・KENTA のサロンの、
Ruby on Rails 初心者用コースの内容を書いておいた

基本的に、Rails以外のフレームワークは、シェアが少ないのでおすすめしない。
学習環境も揃わないので、無理

Railsでは、Railsチュートリアル・Railsガイド・
黒田努の3冊の本・パーフェクト Ruby on Rails・Ruby on Rails 6 エンジニア養成読本とか、
Rubyでは、改訂2版 パーフェクトRuby・改訂2版 Ruby逆引きハンドブックなどの教科書が揃っている

これほど、良い教科書が揃っているフレームワークはない!

Laravel のシェアは少しあるけど、KENTAがPHP は一生やる必要がないと言ったので、
PHP自体がオワコンになってしまったw

日本のウェブ開発の将来は、ほぼKENTAが決めている。
Scala を滅ぼしたのも、KENTA
0757デフォルトの名無しさん垢版2022/02/19(土) 23:48:14.35ID:ukL0Abnm
for await (const chunk of stream(foo)) {
response.write(chunk);
}
response.end();

↑みたいな感じでレスポンスに直接書いてってるやつって、一旦に変数に入れることって可能?

const chunks;
for await (const chunk of stream(foo)) {
// chunksにchunkを書き込んでいく
}
response.write(chunks);
res.end();

↑こんな感じに書きたくてさ
レスポンスのサイズを減らしたくてzlibのコード見たらレスポンスを直接圧縮するんじゃなくて、オブジェクトを圧縮してそんでレスポンスにパイプって感じに見えたもんで
ただ書き方がよく分からんくてね
0758デフォルトの名無しさん垢版2022/02/20(日) 02:19:47.65ID:flSfy5Gd
そんな感じのコードでやれると思うけど
ただ局所的な負荷を避けるStreamの利点が消えちゃうぞ
0760デフォルトの名無しさん垢版2022/02/20(日) 03:59:37.87ID:Y4d5gioW
>>757
chunksに貯め込んでからzlib.gunzip()やzlib.inflate()を呼んでいたらメモリの無駄遣い
そこでzlib.createGunzip()やzlib.createInflate()で変換用streamを作って使う
それも昔はinput_stream.pipe(transform_stream).pipe(ourput_stream)と多段に繋げていたが
しかし速度差がある時のバッファリング問題もあるため一気に協調させることになり
今はpipeline(input_stream, transform_stream, ourput_stream, cb) と好きなだけ並べて書く
0762デフォルトの名無しさん垢版2022/05/08(日) 08:50:47.73ID:Hc0pjWMa
なんでchildprocessのイベントにはSIGINTが実装されてないんだろ
それでいて親から伝搬はするからdetached入れて切り離さないと落ちちまう
親同様にリスナー付けてexitを止められるようにするべきだと思うんだが
0763デフォルトの名無しさん垢版2022/10/10(月) 18:43:55.67ID:MKhHDYOQ
相対パスでローカルモジュールをnpm iするとdependencieではfile:から始まる相対パスになるけど
実際これは完全に無視されて同時に作成されるnode_modules以下のsymlinkが読み込まれるんだな
なんでこんな実装になってんだ
0764デフォルトの名無しさん垢版2022/10/10(月) 18:53:57.82ID:MKhHDYOQ
いや更新時の参照用ならこれでいいのか
nodeのrequire/importとnpmのinstall/updateを混同してたわ
0765デフォルトの名無しさん垢版2022/10/12(水) 13:25:20.11ID:pFlsWqq0
バックエンドnode.jsだけで食っていけますか
0766デフォルトの名無しさん垢版2022/10/12(水) 13:50:41.51ID:PMp24lyt
nodejs単体というよりOODBの管理ととトランザクションいじれるようになるのが一番じゃね?
0767デフォルトの名無しさん垢版2022/10/20(木) 13:26:50.96ID:qyQuWblL
>>765
可能と言えば可能だけど無理と言えば無理
結局何作って金稼ぐかに帰ってくる

PHPerがCRUDをLaravelで作って納品してるような事はNode.jsでも出来るけど
人口多いPHPでやれば良くないっすか?で詰む

改めてNode.jsを使う意味に戻ってくる
0769デフォルトの名無しさん垢版2022/10/21(金) 17:27:25.06ID:yOIwuGST
nodeはhttpサーバ目指してんのか
クロスプラットフォームのコマンドツール群目指してんのか
立ち位置が分かりにくくなってきてるなぁ。
0770デフォルトの名無しさん垢版2022/10/21(金) 17:37:31.50ID:gaBKDdgt
>>769
その辺はわりと初期から迷走してるでしょ
フロントエンド用ライブラリ郡も全てnpmで管理してるし
0771デフォルトの名無しさん垢版2022/10/21(金) 20:11:01.49ID:ho0gY/No
立ち位置としては単なるJSのランタイムだから別に迷走はしてない
あれもこれもできている現状は目標が達成できている状態だな
0774デフォルトの名無しさん垢版2022/10/22(土) 12:20:56.88ID:J0WzfMNr
>>770
そもそもフロントエンドの実行環境はnodeじゃないしな。
そこで動くライブラリもnpmにしたのはライブラリ開発者側の意思だろ。
0775デフォルトの名無しさん垢版2022/12/01(木) 15:22:36.40ID:gR9AoUvr
npm@9にしたらupdate時にinstall済みのローカルモジュールがsymlinkから実ファイルコピーに書き換えられた
--install-linksの挙動変更だけじゃなかったのか
0776デフォルトの名無しさん垢版2023/01/09(月) 13:40:55.90ID:pkwz3DCl
substackがGithubリポジトリごと全部消してるけど何かあったのか
npmは基本消せないから今のところは支障ないけど
0779デフォルトの名無しさん垢版2023/01/26(木) 12:54:12.49ID:O11XvwYM
TSのバックエンドでファイル処理つったらstreamでいいのかな
BufferとかBlobは要らん子?pipeってのもあるらしくて混乱中
0780デフォルトの名無しさん垢版2023/01/26(木) 13:13:59.54ID:f8HqO3bH
最初はfs.writeFileとfs.readFileを使え
streamは小刻みにデータを処理する方法でpipeはその際の繋ぎ役
BufferやBlobはデータをメモリ上で扱う際の形式の一つ
TS以前にJSの基礎が怪しいから入門サイトなぞったほうがいいぞ
0782デフォルトの名無しさん垢版2023/01/26(木) 14:46:29.69ID:gEyoKRRe
BufferはNode固有のAPI
Blobは後から出てきたWeb (ブラウザ) のAPI
そしてTypedArrayBufferはECMAScriptのAPI
ストリームとかURLとか他にも重複してるのが多数ある
0787デフォルトの名無しさん垢版2023/07/27(木) 23:08:16.03ID:nxFTW9tq
nodejsでDBマネージャーとかログマネージャーとか、可能な限り同一インスタンスを維持したいインスタンスって一般的にどうしてますでしょうか。

class DbManager{
private constructor(){}
static instance = new DbManager();
}
staticクラスを使うなら上記の書き方でしょうが、一般的にstaticクラスは良くないとされています。
他の硬い言語ならDIを使うのですが、nodejsというか、javascriptだとDIライブラリはあまり使われていないように見える。

毎回クラスを作る時に引数で渡しまくるのも面倒ですし、なにか良い手順はありますでしょうか
0788デフォルトの名無しさん垢版2023/07/28(金) 01:56:41.01ID:HsfaqfZ/
常に引数で外部注入して生成するけど
引数にundefinedが来たら自動的にデフォルト注入を使って生成かな
0789デフォルトの名無しさん垢版2023/07/28(金) 03:31:39.50ID:H/mKlItN
>>788
ありがとうございます。
そうなると大半がデフォルトなんだから、もう毎回書かなくていいや〜 ってなってしまいそう…

とにかく、それでも引数でちゃんと渡す or デフォルトで自動生成する が常套手段みたいですね。
0790デフォルトの名無しさん垢版2023/07/28(金) 09:58:33.60ID:Za7BrkqV
ファイル(モジュール)のトップレベルで

export const instance = new Xxx();

で十分
Javaなんかと違ってこれでもモックできるから大げさなDIなんかJS/TSにはいらんやろ
レスを投稿する


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