X



【node.js】サーバサイドjavascript 5【Nashorn】
0001デフォルトの名無しさん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/
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”でググるといいよ
0755デフォルトの名無しさん2022/01/06(木) 22:16:32.70ID:vwKSLmqQ
npmがぶっ壊れたらどうすればいいですかapt でuninstall installしても治りません
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) と好きなだけ並べて書く
0761デフォルトの名無しさん2022/02/20(日) 13:07:52.69ID:G2bzmeXG
758 759 760
ありがとう
pipelineってやつ使うとよいみたいやね
調べてみますわ
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は基本消せないから今のところは支障ないけど
0777デフォルトの名無しさん2023/01/09(月) 15:20:15.81ID:QAUxwh3d
スマホ持ってないのに2段階認証押し付けられて嫌気がしたからとか見かけたな
0778デフォルトの名無しさん2023/01/09(月) 19:48:04.21ID:pkwz3DCl
思ったよりしょうもなかったがバイク事故とかじゃなくてよかったわ
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にはいらんやろ
レスを投稿する


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