【node.js】サーバサイドjavascript 5【Nashorn】 (796レス)
1-

1
(1): 2018/02/13(火)22:21 ID:moEhrPrC(1) AAS
pythonやrubyやPHPと同じ土俵でjavascriptが使えるようになりました。
サーバサイドjavascriptについて語りましょう。

node.js - googleが開発したV8エンジン上で実行できる処理系
外部リンク:nodejs.org
ayo.js - node.js 互換で Rod の影響からの脱却を目指す処理系
外部リンク:github.com
Nashorn - Java8 からRhinoに代わって同梱されているJavaScriptエンジン
省18
716: 2021/12/26(日)18:30 ID:oeLmweY9(1) AAS
定期的に呟いてる人だから気にせんでいいよ
717: 2021/12/26(日)18:50 ID:PmcDL+gd(2/2) AAS
>>714
オブジェクト指向的センスが無いと言う事だね

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

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

>>723
仕様で確定してないのなら、混ぜて使う事は禁止だし、
クラスで閉じて使う分にはプロトタイプベースは見えないから問題ないだろ。
省1
725
(1): 2021/12/26(日)21:26 ID:PIvfFszt(1/2) AAS
>>723
ECMAScriptの仕様書も読んだことない低脳が堂々と嘘を書くなよ
ES2020の14.6.12
726: 2021/12/26(日)21:33 ID:PIvfFszt(2/2) AAS
>>725
自己レス「ES2020の14.6.13」の書き間違い
727
(1): 2021/12/26(日)22:43 ID:M+F+5/6j(3/3) AAS
>>724
そもそもプロトタイプベースの方が静的解析難しいからちゃんと補完できるIDE作るの難しいと思うよ
例えばプロトタイプベースでtypescript作れるかというと結局クラス宣言的な物を導入せざるを得ないと思う
構文解析なんかは大して難しい話ではない
728: 2021/12/26(日)22:59 ID:vgGpFQt6(1) AAS
実際にTypeScriptはinterface導入してるし何も問題ないだろ
729
(1): 2021/12/26(日)23:27 ID:S+a9i6vw(6/6) AAS
>>727
最終的に何が言いたいのかさっぱり分からんが、既に言ったとおり、
IDEの都合でプログラミング言語の仕様を決めるものではない。それは逆だ。

プロトタイプベースではIDEを構成出来ないからクラスベースを導入した、と考えてるのなら、上記の通り。
IDEの為にプロトタイプベースを廃止してクラスベースに一本化すべき、でも上記の通りだし、JSでは無理。
IDEの為にクラス構文なんてそもそも導入すべきではなかった、と考えてるのなら、それもありだし個人的には賛成だが、
一般論としては現在の、メジャー言語でほぼクラス導入済みの状況で、JSだけ不採用も、メジャー言語としては難しい。
省8
730
(1): 2021/12/27(月)00:11 ID:Btn3kp2t(1/3) AAS
>>729
言いたかったこととしてはプロトタイプベースがクラスベースの機能包含しているとしても
静的解析のこと考えるとプロトタイプベースが必ずしもクラスベースのスーパーセットではないよねということ

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

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

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

それは「○○は△△のスーパーセットではない。なぜなら『僕が』それを『実装』出来ないから」と言ってるのと同じだろ。
IDEは開発をサポートする道具であり、サポート対象はプログラミング言語だ。
よって、仕様上どんなに構文解釈が難しかろうが、必要ならやるしかないし、それだけだよ。
上下関係で言えばプログラミング言語の『仕様』が完全に上であって、
省19
732
(1): 2021/12/27(月)08:32 ID:Btn3kp2t(2/3) AAS
>>731
> IDEの『実装』の都合をプログラミング言語側に押しつける事は出来ない。
なぜそうあるべきなのですか?
近年の言語はサードパーティーのツール含めたエコシステム全体で生産性をいかに高めるかという観点で設計されることも多いと思うのですが

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

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

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

> 意図してたのはintellisenseのような意味解析が必要な機能です
省17
736: 2021/12/27(月)10:51 ID:gEDfakwV(1) AAS
×クラスベース
○クラス構文

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

> eval出来る環境があり、それが一番近道なら、やればいいだけ。
"構文解釈機" という言葉を使っているから静的解析を意図してるのかと思ったけど動的解析も含んで言っていたのね
それで実用に耐えうる速度と精度が実現できるならそういうアプローチもありかもね
省3
740: 2021/12/27(月)12:21 ID:VwNgBMvN(1) AAS
オブジェクト指向ならではの筆頭が継承だから継承が忌避されてる=オブジェクト指向が忌避されてるってことよ
OOPLが提供していた継承以外の特性の多く(カプセル化など)は抽象データ型から来ていてそれは時代遅れになってないし忌避されてもいない
741
(1): 2021/12/27(月)13:11 ID:+2NyFcdP(1) AAS
クラスの定義だけど、
classとfunctionを混在した書き方でも問題ないの?
742: 2021/12/27(月)13:40 ID:Uq9DqbRx(1) AAS
>>741
混在した書き方っての次第だが

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

こんなのは当たり前に動くぞ
省2
743: 2021/12/27(月)15:00 ID:5b2Vj92V(3/3) AAS
>>739
> 例えばgolangやrustはコアチームがツール開発に積極的ですね
それで、それらの言語のどの仕様がIDEの都合で採用されたものなの?

> 藁人形論法はやめてくれ
なら最初から分かるように主張しろ。
何が言いたいか分からないからエスパーして複数挙げてみただけ。
馬鹿は無視してきっちり自分の意見を書ききれ。
省18
744: 2021/12/27(月)15:36 ID:KDGmbGA4(1) AAS
何言ってるか分からない相手にエスパーして反論って藁人形そのもので完全に異常者
745: 2021/12/27(月)15:55 ID:h2/Ma5NI(1) AAS
いい加減スレチだから他所でやってもらえんかね
このスレ伸ばすにしてもnodeにScheduling APIが入ったとか普通にネタあるだろ
746: 2021/12/27(月)16:04 ID:XkNPDe9x(1/2) AAS
最近アツいサーバサイドJSはnodeよりもdenoよりもCloudflare Workers
747: 2021/12/27(月)16:21 ID:U0LFk7o9(1) AAS
denoって全然使われてないの?
748: 2021/12/27(月)16:28 ID:XkNPDe9x(2/2) AAS
denoは苦戦してるみたいだねー
それでexpressなどnode用のライブラリが動くように互換性を高める方針になった
でもそれならnode使い続ければいいやってなりそう
749: 2022/01/05(水)00:01 ID:XksPZRYQ(1/3) AAS
puppeteerを使って投票サイトの投票を自動化したいのだけど、
実行してもエラーを起こさず無反応なんだよね

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

あとは“how to detect headless browser”でググるといいよ
755: 2022/01/06(木)22:16 ID:vwKSLmqQ(1) AAS
npmがぶっ壊れたらどうすればいいですかapt でuninstall installしても治りません
756: 2022/01/10(月)00:21 ID:MINWORCd(1) AAS
スレ立てるまでもない質問はここで 158匹目
2chスレ:tech

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

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

Railsでは、Railsチュートリアル・Railsガイド・
省7
757
(1): 2022/02/19(土)23:48 ID:ukL0Abnm(1) AAS
for await (const chunk of stream(foo)) {
response.write(chunk);
}
response.end();

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

const chunks;
for await (const chunk of stream(foo)) {
省7
758: 2022/02/20(日)02:19 ID:flSfy5Gd(1) AAS
そんな感じのコードでやれると思うけど
ただ局所的な負荷を避けるStreamの利点が消えちゃうぞ
759: 2022/02/20(日)02:30 ID:r6gz02kC(1) AAS
> レスポンスにパイプ

stream.pipeline()関数を使えってこった
760: 2022/02/20(日)03:59 ID:Y4d5gioW(1) AAS
>>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) と好きなだけ並べて書く
761: 2022/02/20(日)13:07 ID:G2bzmeXG(1) AAS
758 759 760
ありがとう
pipelineってやつ使うとよいみたいやね
調べてみますわ
762: 2022/05/08(日)08:50 ID:Hc0pjWMa(1) AAS
なんでchildprocessのイベントにはSIGINTが実装されてないんだろ
それでいて親から伝搬はするからdetached入れて切り離さないと落ちちまう
親同様にリスナー付けてexitを止められるようにするべきだと思うんだが
763: 2022/10/10(月)18:43 ID:MKhHDYOQ(1/2) AAS
相対パスでローカルモジュールをnpm iするとdependencieではfile:から始まる相対パスになるけど
実際これは完全に無視されて同時に作成されるnode_modules以下のsymlinkが読み込まれるんだな
なんでこんな実装になってんだ
764: 2022/10/10(月)18:53 ID:MKhHDYOQ(2/2) AAS
いや更新時の参照用ならこれでいいのか
nodeのrequire/importとnpmのinstall/updateを混同してたわ
765
(1): 2022/10/12(水)13:25 ID:pFlsWqq0(1) AAS
バックエンドnode.jsだけで食っていけますか
766: 2022/10/12(水)13:50 ID:PMp24lyt(1) AAS
nodejs単体というよりOODBの管理ととトランザクションいじれるようになるのが一番じゃね?
767: 2022/10/20(木)13:26 ID:qyQuWblL(1) AAS
>>765
可能と言えば可能だけど無理と言えば無理
結局何作って金稼ぐかに帰ってくる

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

改めてNode.jsを使う意味に戻ってくる
768: 2022/10/21(金)14:23 ID:QgmICw4I(1) AAS
この業界ってnodeよりphpのほうが多いの?
769
(1): 2022/10/21(金)17:27 ID:yOIwuGST(1) AAS
nodeはhttpサーバ目指してんのか
クロスプラットフォームのコマンドツール群目指してんのか
立ち位置が分かりにくくなってきてるなぁ。
770
(1): 2022/10/21(金)17:37 ID:gaBKDdgt(1) AAS
>>769
その辺はわりと初期から迷走してるでしょ
フロントエンド用ライブラリ郡も全てnpmで管理してるし
771: 2022/10/21(金)20:11 ID:ho0gY/No(1) AAS
立ち位置としては単なるJSのランタイムだから別に迷走はしてない
あれもこれもできている現状は目標が達成できている状態だな
772: 2022/10/21(金)20:53 ID:r+LUs0oF(1) AAS
自分が作りたいものを実現できるならそれでいいし
773: 2022/10/22(土)10:24 ID:nOyTQUKy(1) AAS
またnpmとbowerに分かれるのか
774: 2022/10/22(土)12:20 ID:J0WzfMNr(1) AAS
>>770
そもそもフロントエンドの実行環境はnodeじゃないしな。
そこで動くライブラリもnpmにしたのはライブラリ開発者側の意思だろ。
775: 2022/12/01(木)15:22 ID:gR9AoUvr(1) AAS
npm@9にしたらupdate時にinstall済みのローカルモジュールがsymlinkから実ファイルコピーに書き換えられた
--install-linksの挙動変更だけじゃなかったのか
776: 2023/01/09(月)13:40 ID:pkwz3DCl(1/2) AAS
substackがGithubリポジトリごと全部消してるけど何かあったのか
npmは基本消せないから今のところは支障ないけど
777: 2023/01/09(月)15:20 ID:QAUxwh3d(1) AAS
スマホ持ってないのに2段階認証押し付けられて嫌気がしたからとか見かけたな
778: 2023/01/09(月)19:48 ID:pkwz3DCl(2/2) AAS
思ったよりしょうもなかったがバイク事故とかじゃなくてよかったわ
779: 2023/01/26(木)12:54 ID:O11XvwYM(1/2) AAS
TSのバックエンドでファイル処理つったらstreamでいいのかな
BufferとかBlobは要らん子?pipeってのもあるらしくて混乱中
780
(1): 2023/01/26(木)13:13 ID:f8HqO3bH(1) AAS
最初はfs.writeFileとfs.readFileを使え
streamは小刻みにデータを処理する方法でpipeはその際の繋ぎ役
BufferやBlobはデータをメモリ上で扱う際の形式の一つ
TS以前にJSの基礎が怪しいから入門サイトなぞったほうがいいぞ
781: 2023/01/26(木)13:26 ID:O11XvwYM(2/2) AAS
>>780
どうも
BufferとBlobは役割同じに思えるけどなんで分けてるん?
782
(1): 2023/01/26(木)14:46 ID:gEyoKRRe(1) AAS
BufferはNode固有のAPI
Blobは後から出てきたWeb (ブラウザ) のAPI
そしてTypedArrayBufferはECMAScriptのAPI
ストリームとかURLとか他にも重複してるのが多数ある
783: 2023/01/26(木)15:24 ID:G0G6dXL8(1) AAS
>>782
どうも
JSごちゃごちゃしてて難しいっすね
でも大体わかったわ
784: 2023/02/10(金)08:27 ID:WC55EdF2(1) AAS
今ってORMはPrisma一択?
785: 2023/02/10(金)10:01 ID:9VW44qMw(1) AAS
勢いでは完全に負けてるが一応TypeORMもあるんじゃね
786: 2023/03/01(水)14:51 ID:dWfTEqUX(1) AAS
util.aborted()が生えたけど用途がわからん
787
(1): 2023/07/27(木)23:08 ID:nxFTW9tq(1) AAS
nodejsでDBマネージャーとかログマネージャーとか、可能な限り同一インスタンスを維持したいインスタンスって一般的にどうしてますでしょうか。

class DbManager{
private constructor(){}
static instance = new DbManager();
}
staticクラスを使うなら上記の書き方でしょうが、一般的にstaticクラスは良くないとされています。
他の硬い言語ならDIを使うのですが、nodejsというか、javascriptだとDIライブラリはあまり使われていないように見える。
省1
788
(1): 2023/07/28(金)01:56 ID:HsfaqfZ/(1/2) AAS
常に引数で外部注入して生成するけど
引数にundefinedが来たら自動的にデフォルト注入を使って生成かな
789: 2023/07/28(金)03:31 ID:H/mKlItN(1) AAS
>>788
ありがとうございます。
そうなると大半がデフォルトなんだから、もう毎回書かなくていいや〜 ってなってしまいそう…

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

export const instance = new Xxx();

で十分
Javaなんかと違ってこれでもモックできるから大げさなDIなんかJS/TSにはいらんやろ
791: 2023/07/28(金)10:36 ID:HsfaqfZ/(2/2) AAS
singletonならそれでいいね
792: 2023/07/28(金)12:39 ID:Zbfe02RK(1) AAS
>>787
> 同一インスタンスを維持したい

シングルトンの話だな
793: 2023/08/18(金)15:34 ID:ccv6NoZV(1) AAS
やめてっ!そこはビンカンなの!
794: 2023/10/13(金)21:17 ID:uv+WVTr3(1) AAS
おぉ(゚ロ゚屮)屮
795: 2024/06/07(金)19:13 ID:pMHNGLdE(1) AAS
Prismaが快適すぎて最近はこれ使いたいがためにnode使ってるまであるわ
たまにEloquentとか使うとやりたいことができなさすぎて発狂しそうになる
796: 2024/07/22(月)05:05 ID:lDVL1NiC(1) AAS
わざわざランタイム側でsqlite内蔵する意味がわからん
暇なのか
1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.019s