【node.js】サーバサイドjavascript 5【Nashorn】 (796レス)
上下前次1-新
1(1): 2018/02/13(火) 22:21:33.91 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エンジン
外部リンク[pdf]:www.oracle.com
ayo.js の経緯
外部リンク:web.archive.org
javascriptはrubyと比較してもかなり速い
外部リンク[php]:shootout.alioth.debian.org
基礎から学ぶNode.js
外部リンク:gihyo.jp
node.jsの概要とアプリケーション開発の準備
外部リンク:gihyo.jp
前スレ
【node.js】サーバサイドjavascript 4【io.js】
2chスレ:tech
【node.js】サーバサイドjavascript 3【io.js】
2chスレ:tech
【node.js】サーバサイドjavascript 2【Rhino】
2chスレ:tech
【node.js】サーバサイドjavascript【Rhino】
2chスレ:tech
670(1): 2021/11/25(木) 10:13:11.42 ID:rnpiht7q(1/2)調 AAS
returnの直後に改行してないからASI関係なくないか?
671(1): 2021/11/25(木) 10:19:20.71 ID:QOEXsJ22(6/10)調 AAS
>>670
660の「新しい記述方法だと動かない」とされてるコードは return gulp で改行してる。
660内の公式はこれが出来ない事を知ってるから、 gulp.src(...) で改行してる。(ただしreturnはないが)
672(1): 2021/11/25(木) 10:26:17.55 ID:6PNOZvLH(2/3)調 AAS
>>669
それは長い行を分けて改行しているだけ
一方で>>660の人は長い行にならないのに無意味に改行しまくり
673(3): 2021/11/25(木) 10:28:27.93 ID:rnpiht7q(2/2)調 AAS
>>671
return
gulp.src()
ならreturnの後にセミコロンが自動挿入されるけど
return gulp
.src()
ならgulpの後にセミコロンは自動挿入されないでしょ
それよりfunction ejs(){}って名前がダメなんじゃないの?
.pipe(ejs())で再帰になってる
674(1): 2021/11/25(木) 10:36:21.11 ID:QOEXsJ22(7/10)調 AAS
>>672
長さではなく、意味で切るんだよ。
>>673
> return gulp
> .src()
> ならgulpの後にセミコロンは自動挿入されないでしょ
されて gulp が返されるはずだぞ。
675(1): 2021/11/25(木) 10:42:13.14 ID:6PNOZvLH(3/3)調 AAS
>>674
意味で切るならgulpと.src()の間で改行を入れてるのは明らかにおかしい
無意味な改行だ
676: 2021/11/25(木) 10:42:35.39 ID:QOEXsJ22(8/10)調 AAS
>>673
すまん、674は間違い。
試してみたところ、確かに挿入されないようだ。
677: 2021/11/25(木) 11:42:21.71 ID:QOEXsJ22(9/10)調 AAS
>>675
相手するだけ無駄っぽいが、そういうのは物によるんだよ。
そうした方が見やすいと思う奴がそうするだけ。
return ウンコ製造器675号
.src(ケーキ)
.pipe(胃)
.pipe(小腸);
.pipe(大腸);
なら、675によってケーキがウンコに変わるのが見やすくなると思う奴もいるだろ。
(詳しくないが)gulpの場合は基本はフィルタで型が変わらないし、出発点はソースファイルに決まってるから、
return gulp.src(ソース)
.pipe(フィルタ1)
.pipe(フィルタ2)
のケースが多いとは思うけど。
ついでに言っておくと、お前JSによくいる、やたら文法に拘る奴なら、止めた方がいい。
それだと全く進歩しないので。
上記の通り、まあどちらもいるわな、程度で進めていかないと、上達しない。
どちらが正しいとか、そういう問題ではない。
どうにもJS初心者は「改行を極める」「セミコロンを極める」とかになりがちのようで、よろしくない。
678(1): 2021/11/25(木) 12:57:12.37 ID:K4FLN1Dn(1)調 AAS
んじゃ俺は括弧の後に半角スペースを入れるのを極めるわ。
679: 2021/11/25(木) 13:45:45.44 ID:R4fLO2Lj(1)調 AAS
必死過ぎて笑えるw
680: 2021/11/25(木) 14:09:48.85 ID:reZpBJt7(1)調 AAS
珍しく伸びてんなと思ったらこれだよ
681(1): 2021/11/25(木) 19:42:13.27 ID:b7JhAcnH(1)調 AAS
.NET Standard が世界の中心と考えてる人でしょ
別スレで見た
682: 2021/11/25(木) 21:14:35.40 ID:QOEXsJ22(10/10)調 AAS
>>678
ゆとりにはそれがお似合いだね
683: 2021/11/25(木) 22:13:54.29 ID:HW7nta/v(2/3)調 AAS
610です。
仕事でレス遅くなりました。
>>673
ありがとうございます!
このコメントからピンときて修正したら無事に動作しました。
超初歩的なミスでした、、
こちらの書き方は関数の中にejs(gulp-ejsオブジェクト)を書いても動作しましたが
gulp.task('ejs', function() {
}
こちらでは関数に同じ関数入れたらまだタスク終わってないよと、動作しませんよね。(気づけば当たり前なのですが、、)
function ejs() {
}
お騒がせしました。コメント頂いた方もありがとうございました!
684: 2021/11/25(木) 22:25:35.12 ID:HW7nta/v(3/3)調 AAS
誤 610です。 = > 正 660です。
685: 2021/11/25(木) 23:27:35.30 ID:nh0ZEMSE(2/2)調 AAS
漏れは、Ruby でも、パーサーの誤解釈を避けるため、
. を行末に置く
a.
b( ).
c( )
686: 2021/11/26(金) 01:34:21.64 ID:KdVwfKAT(1)調 AAS
なんで Ruby が出てきた
687(1): 2021/11/26(金) 22:15:56.74 ID:FIwAqG/H(1)調 AAS
スクリプト系は改行も終端になって駄目ね
688(1): 2021/11/26(金) 23:57:17.12 ID:MbvsChzk(1)調 AAS
>>687
JavaScriptで駄目なのはreturnのみの行の時だけだよ
return
a
.b()
は駄目だけどこう書く人はいないから問題は起きることはない
return a
.b()
なら大丈夫
689: 2021/11/27(土) 09:09:57.67 ID:kX7QbhiL(1)調 AAS
そういうのはコーディング時にいちいち気にするよりlinterでチェックだな。
690(1): 2021/11/27(土) 09:24:44.31 ID:LVgG7qhW(1/6)調 AAS
>>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.
> 外部リンク:github.com
他にセミコロンなしの有名ルール勢ってあったっけ?
return
'qwerty'
+'asdfgh';
とは書きたくなるだろ。書きたいように書けないのはよろしくないよ。今風ではないね。
セミコロン書くルールならASIなんて無い方がマシだし。
691(1): 2021/11/27(土) 09:32:19.66 ID:MtgsfYs/(1/2)調 AAS
書き方にこだわりがあるならそうではない書き方と比べて◯◯の利点があると言わないと他人の理解は得られにくい。
好みだけの問題ならスクリプトの仕様に従うしかない。
692: 2021/11/27(土) 09:36:27.04 ID:TUbuKQsw(1)調 AAS
自分はなりませんねとしか
693: 2021/11/27(土) 09:41:13.68 ID:LVgG7qhW(2/6)調 AAS
>>681
俺向けではないと思うが、
return
'qwerty'
+'asdfgh';
の利点は見れば分かるとおり、インデントを揃えられる事だよ。
タグの方が分かりやすいかもしれんが一々引っかかると面倒なので止めただけ。
return '<div>'
+'<span>'+
+'</span>'+
+'</div>';
だと最初のdivのインデントがずれるだろ。
まあ言うほどではないし、実際俺はこの書き方をしているが、出来れば return の後に改行したいね。
694: 2021/11/27(土) 09:42:13.87 ID:LVgG7qhW(3/6)調 AAS
すまん693内681は>>691
695: 2021/11/27(土) 10:25:26.66 ID:wIEauZJC(1)調 AAS
お前ら何も考えずにPrettier使え
それが今のデファクトだ
696(1): 2021/11/27(土) 11:22:05.56 ID:xgA8vuBV(1)調 AAS
>>690
Airbnbがセミコロンなしの筆頭って頭腐りすぎたろ
git時代に歴史改ざんしてもすぐにバレる
2012年にセミコロンの章が初めて書かれたときからAirbnbはセミコロン派だ
外部リンク[md]:github.com
697(1): 2021/11/27(土) 11:35:18.29 ID:LVgG7qhW(4/6)調 AAS
>>696
ならAirbnbというのは俺の勘違いだな。
俺がJSを始めた2013-14頃、有名なコーディングルールが4つほどあって、Airbnbが一番トンデモだった(が、人気は一番という話だった)
その中にはセミコロンを打つな、というルールもあった。誰か思えてないかね?
なお俺はgoogleのルールが一番マシっぽいのでそれを参考にした。(こちらはセミコロンあり)
698: 2021/11/27(土) 11:43:32.92 ID:WAiK9igD(1)調 AAS
>>697
どこだか覚えてないけど、確かにどっかでセミコロン打たないで、短文を1行に書くときだけセミコロン使うてなの見たか聞いたりした記憶ある。
699: 2021/11/27(土) 12:14:33.21 ID:LVgG7qhW(5/6)調 AAS
一応自分でも再確認しているところだが、
> Always use semicolons. (google)
> Use them. Never rely on ASI. (jQuery)
> あなたからセミコロンを奪おうとする反抗的な軍隊があるようです。でも確かに私達の伝統的な文化はまだ元気に生き残っています。だからコミュニティに従って、セミコロンを使いなさい!(Node)
> 外部リンク:qiita.com
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()
> }
> 外部リンク[php]:www.w3resource.com
となると俺の勘違いはnpmという事になるが、npm==Nodeじゃねえのか?という疑問は発生する。Nodeはnpmからのフォークか?
多分俺が当時見たのは Airbnb, npm, jQuery, googleだと思う。
700: 2021/11/27(土) 12:30:57.21 ID:i1Pzoh/C(1)調 AAS
NodeはRyan Dahlが始めてセミコロンあり
npmはIsaac Z. Schlueterが始めてセミコロンなし
IsaacはNodeの2代目リーダーだけどNodeではセミコロンを書いてた
701(1): 2021/11/27(土) 12:54:15.05 ID:XFyMXPdv(1)調 AAS
セミコロンレスの強硬派として有名なのはStandard
カスタマイズも許さない
外部リンク:github.com
702: 2021/11/27(土) 13:40:28.79 ID:LVgG7qhW(6/6)調 AAS
>>701
初コミット2015年なのにstandardと主張して他と違うルールとか、頭おかしいな。
とはいえ議論する時間が一番無駄というのは同意だが。
多分セミコロン無し言語出身者用のルールが一つは必要で、
それに向けてのstandard命名なのだろうけど、なんだかね。
703(1): 2021/11/27(土) 13:49:34.28 ID:MtgsfYs/(2/2)調 AAS
文字列を「+」で繋げるのもうやめようよ。見にくいよ。
「´」(バッククォート)で括ればいいじゃん
704: 2021/11/27(土) 13:51:01.70 ID:NSUO7OXD(1)調 AAS
>>703
このルール入れろ
外部リンク:eslint.org
705: 2021/11/28(日) 09:28:43.85 ID:yQx61O6E(1)調 AAS
javascriptならセミコロン無い方がいいかなぁ
706: 2021/12/14(火) 18:36:52.92 ID:R85W1UAs(1)調 AAS
async/awaitってawaitしかしないから無駄じゃね?
707: 2021/12/26(日) 08:00:15.12 ID:iIGCgNg3(1)調 AAS
Promise, async/await で無駄なのは、デタラメ解説の数々、ほぼ全滅だろ、酷い惨状だねー。
708: 2021/12/26(日) 09:04:50.48 ID:S+a9i6vw(1/6)調 AAS
それを言ったらWeb系言語は全部デタラメ解説で駄目だろ
初心者が情報公開の練習として解説を書くからそうなる
709(1): 2021/12/26(日) 10:12:00.53 ID:6ScHvZpk(1)調 AAS
それはしゃーない、正確さにこだわりすぎて萎縮する方がデメリットが大きい
読む方が気を付けて取捨選択するしかない
710: 2021/12/26(日) 10:19:35.71 ID:jog3O69G(1)調 AAS
c++とかjavaとか含めて進化してる技術の古い解説はことごとくゴミ化してるし一緒だわな
711(1): 2021/12/26(日) 11:04:07.34 ID:4h95DB/2(1/3)調 AAS
classは非推奨にして欲しい。
中途半端で使いにくい。
712(1): 2021/12/26(日) 13:04:22.56 ID:PmcDL+gd(1/2)調 AAS
>>711
どういう所?
713: 2021/12/26(日) 13:40:10.35 ID:S+a9i6vw(2/6)調 AAS
>>709
同意だが、C#はかなりマシ
一般的に上級者は初心者向けの説明なんて書きたくないものだが、
プログラミング自体について語りたい連中も多少はおり、そいつらを上手く取り込んでる
714(1): 2021/12/26(日) 17:59:34.28 ID:4h95DB/2(2/3)調 AAS
>>712
上っ面だけのクラスベース。
内容はプロトタイプのまま。
715: 2021/12/26(日) 18:08:44.18 ID:PnBrsUGe(1)調 AAS
上っ面といってもそこで整合とれていて内部の問題が表に現れないなら別に問題ないと思うが。
まぁ、中途半端というなら何かそういう部分が見えているということなんだろうが。
716: 2021/12/26(日) 18:30:25.89 ID:oeLmweY9(1)調 AAS
定期的に呟いてる人だから気にせんでいいよ
717: 2021/12/26(日) 18:50:24.76 ID:PmcDL+gd(2/2)調 AAS
>>714
オブジェクト指向的センスが無いと言う事だね
今の時代、両方出来ないとプロだと厳しいと思うがね
718(1): 2021/12/26(日) 18:55:49.66 ID:S+a9i6vw(3/6)調 AAS
プロトタイプの方が表現出来る空間が広くて、実際にただの糖衣構文でクラスを実装出来てるだけだろ
クラスで閉じて使ってる限りプロトタイプの側面は見えないはずだが
混ぜて使うのってありだっけ?(class宣言した物にgetPrototypeOfとか)
class構文の時にどうプロトタイプが配置されるか仕様で確定してないと駄目だと思うが、これってしてるのか?
719(1): 2021/12/26(日) 19:35:46.48 ID:kUhTwtcg(1)調 AAS
GoやRustなんかの新しい言語がクラスベースのオブジェクト指向を採用しないご時世
時代遅れとなったC++やJava風のクラス構文を導入する必要はなかったわな
TC39的にはES4で入れ損なったから悲願だったんだろうけど
720(2): 2021/12/26(日) 20:25:20.58 ID:M+F+5/6j(1/3)調 AAS
プロトタイプベースのオブジェクト指向ってIDEや静的型付けと相性悪いのでは
721(1): 2021/12/26(日) 20:48:01.50 ID:S+a9i6vw(4/6)調 AAS
>>720
仮にそうだとしても、IDEの都合を優先してプログラミング言語を簡素化するのは完全に本末転倒だろ
初心者専用のオモチャが欲しければScratchで満足しとけ
722(1): 2021/12/26(日) 20:54:53.04 ID:M+F+5/6j(2/3)調 AAS
>>721
既存との互換を保ったまま機能追加されてるわけだから言語自体は簡素化されたのてはなく複雑化されたのでは
それはさておき従来の機能が使えなくなるわけでもなく何が不満なのかわからない
723(2): 2021/12/26(日) 21:02:39.16 ID:4h95DB/2(3/3)調 AAS
>>718
してない。
だから細かい設定が解りづらい。
724(1): 2021/12/26(日) 21:18:20.64 ID:S+a9i6vw(5/6)調 AAS
>>722
糖衣構文を導入した分言語は複雑化してるし、IDEも余計に対応する必要がある。
IDEを優先するなら何もしないのが最善。
(もちろん仕様を削れるのが最善だが、JSの場合はこれはかなり無理なので)
>>723
仕様で確定してないのなら、混ぜて使う事は禁止だし、
クラスで閉じて使う分にはプロトタイプベースは見えないから問題ないだろ。
何を問題視してる?
725(1): 2021/12/26(日) 21:26:19.15 ID:PIvfFszt(1/2)調 AAS
>>723
ECMAScriptの仕様書も読んだことない低脳が堂々と嘘を書くなよ
ES2020の14.6.12
726: 2021/12/26(日) 21:33:51.63 ID:PIvfFszt(2/2)調 AAS
>>725
自己レス「ES2020の14.6.13」の書き間違い
727(1): 2021/12/26(日) 22:43:28.35 ID:M+F+5/6j(3/3)調 AAS
>>724
そもそもプロトタイプベースの方が静的解析難しいからちゃんと補完できるIDE作るの難しいと思うよ
例えばプロトタイプベースでtypescript作れるかというと結局クラス宣言的な物を導入せざるを得ないと思う
構文解析なんかは大して難しい話ではない
728: 2021/12/26(日) 22:59:58.91 ID:vgGpFQt6(1)調 AAS
実際にTypeScriptはinterface導入してるし何も問題ないだろ
729(1): 2021/12/26(日) 23:27:54.98 ID:S+a9i6vw(6/6)調 AAS
>>727
最終的に何が言いたいのかさっぱり分からんが、既に言ったとおり、
IDEの都合でプログラミング言語の仕様を決めるものではない。それは逆だ。
プロトタイプベースではIDEを構成出来ないからクラスベースを導入した、と考えてるのなら、上記の通り。
IDEの為にプロトタイプベースを廃止してクラスベースに一本化すべき、でも上記の通りだし、JSでは無理。
IDEの為にクラス構文なんてそもそも導入すべきではなかった、と考えてるのなら、それもありだし個人的には賛成だが、
一般論としては現在の、メジャー言語でほぼクラス導入済みの状況で、JSだけ不採用も、メジャー言語としては難しい。
GoやRustは今も今後ともマイナー言語でしかないし、勝手にやってろでしかない。
静的解析自体はクラスの方が簡単だろうけど、だからどうしたでしかない。
実行エンジンはあるのだから、実装難易度の上限は実行エンジンを実装する程度でしかなく、出来る範囲だ。
最悪、実行エンジンをそのままコールして結果を得る事も出来る。Flycheckとかそういう構造のように見えるけど。
ちなみにTSが型を導入したのも、IDEを作るためではなく、
プログラマが型を明示的に示す事によって、間抜けなエラーを静的に検出するためだぞ。
そこにIDEが勝手に乗っかっただけであって、IDEが無くとも型の導入自体は意味も効果もある。
型無し言語出身者は型をIDEでの補完をするための物だと勘違いしてるが、そうじゃない。
730(1): 2021/12/27(月) 00:11:53.01 ID:Btn3kp2t(1/3)調 AAS
>>729
言いたかったこととしてはプロトタイプベースがクラスベースの機能包含しているとしても
静的解析のこと考えるとプロトタイプベースが必ずしもクラスベースのスーパーセットではないよねということ
実行エンジンを実装してもあらゆるパスが評価できるわけでないので宣言的記法の方に軍配が上がると思うが
実行エンジン内包する方式で宣言的記法と同等の静的解析できてる例ってあるの?
flycheckってemacsのパッケージのことだと思うけどあれも静的解析走らせてるだけで実際にJS評価してるわけじゃないでしょ?
IDEのためだけではないというのはその通りで、途中から略して書いてしまっているが >>720 ではIDEや静的解析といっている
731(1): 2021/12/27(月) 05:27:18.08 ID:5b2Vj92V(1/3)調 AAS
>>730
> 静的解析のこと考えるとプロトタイプベースが必ずしもクラスベースのスーパーセットではないよねということ
IDEの「実装」をプログラミング言語の「仕様」比較(スーパーセットかどうか)に含めるのがおかしい。
それは「○○は△△のスーパーセットではない。なぜなら『僕が』それを『実装』出来ないから」と言ってるのと同じだろ。
IDEは開発をサポートする道具であり、サポート対象はプログラミング言語だ。
よって、仕様上どんなに構文解釈が難しかろうが、必要ならやるしかないし、それだけだよ。
上下関係で言えばプログラミング言語の『仕様』が完全に上であって、
IDEの『実装』の都合をプログラミング言語側に押しつける事は出来ない。
> 静的解析走らせてるだけで実際にJS評価してるわけじゃないでしょ?
俺が使ったのはGoだけど、見た目は実際にコンパイルを走らせてそれをアノテートしてただけ。
でも確かにこれが一番生産性が高いんだよ。
当たり前だが、コンパイラはエラー時には何行目の何文字目でこけた、という情報を持ってる。
だから静的解析が目的ではなく、ソースコード作成時にエラーを表示する事が目的なら、これでいいんだよ。
最大のメリットは構文解釈を自前で実装する必要がない事。
構文解釈機の再開発をやめ、本体コンパイラのエラー情報をより詳細に出す事にリソースを突っ込み、
IDE側はその詳しいエラー情報を解釈してアノテートするだけに徹する。
これで言語側の仕様変更に自動的に追従するようになる。
IDEの数だけ構文解釈機を再開発するのは手段が目的化してる。
> 実行エンジン内包する方式で宣言的記法と同等の静的解析できてる例ってあるの?
Flycheckは外部から呼んでるだけ。でもそれでコンパイラが吐くエラー(=静的エラー)は全て検出出来る。
しかも自前の実装もなしだから、最も生産性が高い。
自前の構文解釈機でコンパイラ/ビルドシステム以上のエラーを検出する気なら、
それはIDEではなくリンターと呼ぶべきだが、
それが出来るのなら、コンパイラ/ビルドシステムにそのリンターを内包して、
IDEはそのエラーを表示する事に徹するのが最も生産性が高い。
IDEで構文解釈するのではなく、エラーを出来るだけ早い段階で検出して修正するのが目的だから。
732(1): 2021/12/27(月) 08:32:17.24 ID:Btn3kp2t(2/3)調 AAS
>>731
> IDEの『実装』の都合をプログラミング言語側に押しつける事は出来ない。
なぜそうあるべきなのですか?
近年の言語はサードパーティーのツール含めたエコシステム全体で生産性をいかに高めるかという観点で設計されることも多いと思うのですが
また、あなたの言う実行エンジンとは静的解析器の意味で実際にJSをevalするものではないということですね?
なぜか構文解析の話になっていますが意図してたのはintellisenseのような意味解析が必要な機能です
プロトタイプベースの記法では解析のためにコードの実行パスを追いかけプロトタイプの設定箇所を検出しなければならないのに対して
宣言的記法であればスコープ内のクラス宣言を見ればだいたい事足りるので実装難易度は大幅に異なるかと
733(1): 2021/12/27(月) 09:13:46.85 ID:mFj7RPUl(1/2)調 AAS
今時プロトタイプベースがぁ、って言ってるのが時代遅れじゃねーの。
クラスベースじゃないからってRustやGoを出してるがそれらはプロトタイプベースですらないわけで。
734(1): 2021/12/27(月) 09:41:04.48 ID:VqPkBZyA(1)調 AAS
>>733
>>719はクラスベースを時代遅れと書いたんだが
ぶっちゃけオブジェクト指向が過去のものになってきてるのみんな分かってるだろ
735(1): 2021/12/27(月) 10:22:30.58 ID:5b2Vj92V(2/3)調 AAS
>>732
> 近年の言語はサードパーティーのツール含めたエコシステム全体で生産性をいかに高めるかという観点で設計されることも多いと思うのですが
「多い」というのならまず具体的に名前を複数挙げてみろ。
出来なければそれは君の妄想だね。
> また、あなたの言う実行エンジンとは静的解析器の意味で実際にJSをevalするものではないということですね?
違うぞ。それは今の話に関係ない。(どっちでもいい)
> 意図してたのはintellisenseのような意味解析が必要な機能です
だから何?これも君の考えが間違ってる。
flycheckのやり方でも原理的にインテリセンスは出来るんだよ。
インテリセンスで出なかったキーワードだとコンパイルエラーになるのなら、
仮にコンパイラが無限に速ければ、ソース内の全キーワードで試せば、コンパイルが通るキーワードのリストは得られる。
実際こんな事をしてる物はないと思うが、構文解釈で100%絞る必要なんて無くて、
候補が数個程度なら全部試してエラーが出なかった物を出す程度でも十分実用的なんだよ。
今時emacsでもインテリセンスするようだから、そんなにIDEが気になるのなら、彼等のアプローチを確認してみるといいよ。
全言語向けに自前でやってる事なんてないと思うよ。
プロトタイプを自分で追うのが技術的に無理なら、evalさせてgetPrototypeOfやinstanceofを使って追えばいいだけ。
自前の構文解釈器でソースからデータツリー構築をする気だからおかしくなる。
それはevalすれば実行エンジン内に構築されるものでしかないのだから、完全に再開発だろ。
eval出来る環境があり、それが一番近道なら、やればいいだけ。
君は多分「生産性」を勘違いしてる。
むしろ再開発しすぎてるし。
現状どうなってるのか知らないのだけど、メジャーなIDE、
例えばVSCodeとかだとクラスベースならインテリセンス出来るが、プロトタイプベースだと無理とかなのか?
誰か使ってたら教えてくれ。
736: 2021/12/27(月) 10:51:32.02 ID:gEDfakwV(1)調 AAS
×クラスベース
○クラス構文
クラス構文で書いてもプロトタイプベースなのは変わらん
737(1): 2021/12/27(月) 11:21:14.15 ID:mFj7RPUl(2/2)調 AAS
>>734
確かにクラスベースがってよりオブジェクト指向が時代遅れって感じだね。
JS自体は関数プログラミングもいける。
738: 2021/12/27(月) 11:22:05.04 ID:lxgQYw9b(1)調 AAS
言語仕様も分かってないIDEも使ってない部外者の素人同士が長文レスバって地獄だな
739(1): 2021/12/27(月) 11:54:45.10 ID:Btn3kp2t(3/3)調 AAS
>>735
> 「多い」というのならまず具体的に名前を複数挙げてみろ。
例えばgolangやrustはコアチームがツール開発に積極的ですね
ツールのチームがコア言語に対してフィードバックしていたりする
> eval出来る環境があり、それが一番近道なら、やればいいだけ。
"構文解釈機" という言葉を使っているから静的解析を意図してるのかと思ったけど動的解析も含んで言っていたのね
それで実用に耐えうる速度と精度が実現できるならそういうアプローチもありかもね
それから別にIDEが自前で静的解析器を開発すべきなんて主張はしてないから藁人形論法はやめてくれ
>>737
オブジェクト指向というか継承が忌避されてる気はする
740: 2021/12/27(月) 12:21:31.31 ID:VwNgBMvN(1)調 AAS
オブジェクト指向ならではの筆頭が継承だから継承が忌避されてる=オブジェクト指向が忌避されてるってことよ
OOPLが提供していた継承以外の特性の多く(カプセル化など)は抽象データ型から来ていてそれは時代遅れになってないし忌避されてもいない
741(1): 2021/12/27(月) 13:11:44.45 ID:+2NyFcdP(1)調 AAS
クラスの定義だけど、
classとfunctionを混在した書き方でも問題ないの?
742: 2021/12/27(月) 13:40:18.86 ID:Uq9DqbRx(1)調 AAS
>>741
混在した書き方っての次第だが
class A {}
A.prototype.x = () => {}
a = new A()
a.x()
こんなのは当たり前に動くぞ
つかまずは自分で試せよw
JSなんかブラウザあれば動かせるんだからさー
743: 2021/12/27(月) 15:00:45.57 ID:5b2Vj92V(3/3)調 AAS
>>739
> 例えばgolangやrustはコアチームがツール開発に積極的ですね
それで、それらの言語のどの仕様がIDEの都合で採用されたものなの?
> 藁人形論法はやめてくれ
なら最初から分かるように主張しろ。
何が言いたいか分からないからエスパーして複数挙げてみただけ。
馬鹿は無視してきっちり自分の意見を書ききれ。
3行しか読めない馬鹿はプログラミングなんてどうやっても出来ない。
MDNその他のリファレンス見りゃ分かるが、そんな世界じゃない。
5ch程度の文にすら手こずるようではどだい無理だよ。
解釈が動的か静的かは意味無い。
出来るだけ早い段階でエラーを検出して修正したいだけであって、それが出来れば何だっていいんだよ。
その手段の一つが静的解析でソース作成時にエラーを表示する事であって。
でも、エラー表示だけなら、コンパイラやevalにぶち込めば出来るし、それをやってるっぽいのがflycheck。
構文解釈器を自前で作るとしても、クラス構文でもプロトタイプ構文でも、大して難易度は変わらない気もするが。
実際に問題になるのは、構文解釈そのもの、具体的にはJS的な様々な書き方でも問題なく動くパーサの構成だろ。
構文解釈後の親class/プロトタイプ追跡なんて辿ればいいだけだからアホでも出来る。
それで今時のIDEで実際どうなのか聞いたんだよ。
もしプロトタイプ構文ではインテリセンスが動かないのなら、何か理由はあるのだろうけど。
継承が忌避されてるのは、JAVAでは関数ポインタが使えず、同様の事をするためには継承をこねくり回すしかなくて、
それの残骸がデザインパターンなのだが、
結果、継承すべきでない局面での継承で酷い事になってるからだよ。
でも、継承すべき場所では継承した方がよくて、全部捨ててるGoはいちいち全部書かないといけないのが糞。
あれは1周目はまだしも、2周目以降でそのコピペされたソースにメンテコストがかかるから、先すぼみになると予想してる。
Rustはやってないから知らん。
744: 2021/12/27(月) 15:36:34.22 ID:KDGmbGA4(1)調 AAS
何言ってるか分からない相手にエスパーして反論って藁人形そのもので完全に異常者
745: 2021/12/27(月) 15:55:56.69 ID:h2/Ma5NI(1)調 AAS
いい加減スレチだから他所でやってもらえんかね
このスレ伸ばすにしてもnodeにScheduling APIが入ったとか普通にネタあるだろ
746: 2021/12/27(月) 16:04:01.18 ID:XkNPDe9x(1/2)調 AAS
最近アツいサーバサイドJSはnodeよりもdenoよりもCloudflare Workers
747: 2021/12/27(月) 16:21:39.89 ID:U0LFk7o9(1)調 AAS
denoって全然使われてないの?
748: 2021/12/27(月) 16:28:54.26 ID:XkNPDe9x(2/2)調 AAS
denoは苦戦してるみたいだねー
それでexpressなどnode用のライブラリが動くように互換性を高める方針になった
でもそれならnode使い続ければいいやってなりそう
749: 2022/01/05(水) 00:01:04.66 ID:XksPZRYQ(1/3)調 AAS
puppeteerを使って投票サイトの投票を自動化したいのだけど、
実行してもエラーを起こさず無反応なんだよね
Headless Recorerを使ってるからHTML部分の間違いはないと思うのだけど、
UserAgent以外で何か対策ないっすかね
750: 2022/01/05(水) 00:22:23.97 ID:n516+jFB(1)調 AAS
いくらでも試すことはあるけど悪事の片棒を担ぎそうで怖いな
一般論として言えるのはpuppeteerでも普通にWebページのコンテキストからDOM APIを叩ける
751: 2022/01/05(水) 00:33:19.61 ID:XksPZRYQ(2/3)調 AAS
んじゃ、逆にWEBサイトを作る側はどんな対策をしているのでしょうか?
752(1): 2022/01/05(水) 10:54:49.76 ID:4mwV9n2W(1)調 AAS
reCAPTCHA使ってんじゃない?
753: 2022/01/05(水) 15:02:25.17 ID:XksPZRYQ(3/3)調 AAS
>>752
使ってるところは諦めてるんだけど、使ってないところはどうやってるのかな〜と思って
UserAgentをガラケーにしてみたり、プレステにしても無反応なんだよね
754: 2022/01/05(水) 15:47:16.38 ID:w42D9Ab/(1)調 AAS
手動で操作した時のリクエストヘッダーの中身を解析して
間違いなく妥当なリクエストが投げられてるのが大前提
あとは“how to detect headless browser”でググるといいよ
755: 2022/01/06(木) 22:16:32.70 ID:vwKSLmqQ(1)調 AAS
npmがぶっ壊れたらどうすればいいですかapt でuninstall installしても治りません
756: 2022/01/10(月) 00:21:58.20 ID:MINWORCd(1)調 AAS
スレ立てるまでもない質問はここで 158匹目
2chスレ:tech
ここに、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
757(1): 2022/02/19(土) 23:48:14.35 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)) {
// chunksにchunkを書き込んでいく
}
response.write(chunks);
res.end();
↑こんな感じに書きたくてさ
レスポンスのサイズを減らしたくてzlibのコード見たらレスポンスを直接圧縮するんじゃなくて、オブジェクトを圧縮してそんでレスポンスにパイプって感じに見えたもんで
ただ書き方がよく分からんくてね
758: 2022/02/20(日) 02:19:47.65 ID:flSfy5Gd(1)調 AAS
そんな感じのコードでやれると思うけど
ただ局所的な負荷を避けるStreamの利点が消えちゃうぞ
759: 2022/02/20(日) 02:30:31.20 ID:r6gz02kC(1)調 AAS
> レスポンスにパイプ
stream.pipeline()関数を使えってこった
760: 2022/02/20(日) 03:59:37.87 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:52.69 ID:G2bzmeXG(1)調 AAS
758 759 760
ありがとう
pipelineってやつ使うとよいみたいやね
調べてみますわ
762: 2022/05/08(日) 08:50:47.73 ID:Hc0pjWMa(1)調 AAS
なんでchildprocessのイベントにはSIGINTが実装されてないんだろ
それでいて親から伝搬はするからdetached入れて切り離さないと落ちちまう
親同様にリスナー付けてexitを止められるようにするべきだと思うんだが
763: 2022/10/10(月) 18:43:55.67 ID:MKhHDYOQ(1/2)調 AAS
相対パスでローカルモジュールをnpm iするとdependencieではfile:から始まる相対パスになるけど
実際これは完全に無視されて同時に作成されるnode_modules以下のsymlinkが読み込まれるんだな
なんでこんな実装になってんだ
764: 2022/10/10(月) 18:53:57.82 ID:MKhHDYOQ(2/2)調 AAS
いや更新時の参照用ならこれでいいのか
nodeのrequire/importとnpmのinstall/updateを混同してたわ
765(1): 2022/10/12(水) 13:25:20.11 ID:pFlsWqq0(1)調 AAS
バックエンドnode.jsだけで食っていけますか
766: 2022/10/12(水) 13:50:41.51 ID:PMp24lyt(1)調 AAS
nodejs単体というよりOODBの管理ととトランザクションいじれるようになるのが一番じゃね?
767: 2022/10/20(木) 13:26:50.96 ID:qyQuWblL(1)調 AAS
>>765
可能と言えば可能だけど無理と言えば無理
結局何作って金稼ぐかに帰ってくる
PHPerがCRUDをLaravelで作って納品してるような事はNode.jsでも出来るけど
人口多いPHPでやれば良くないっすか?で詰む
改めてNode.jsを使う意味に戻ってくる
768: 2022/10/21(金) 14:23:53.93 ID:QgmICw4I(1)調 AAS
この業界ってnodeよりphpのほうが多いの?
769(1): 2022/10/21(金) 17:27:25.06 ID:yOIwuGST(1)調 AAS
nodeはhttpサーバ目指してんのか
クロスプラットフォームのコマンドツール群目指してんのか
立ち位置が分かりにくくなってきてるなぁ。
770(1): 2022/10/21(金) 17:37:31.50 ID:gaBKDdgt(1)調 AAS
>>769
その辺はわりと初期から迷走してるでしょ
フロントエンド用ライブラリ郡も全てnpmで管理してるし
771: 2022/10/21(金) 20:11:01.49 ID:ho0gY/No(1)調 AAS
立ち位置としては単なるJSのランタイムだから別に迷走はしてない
あれもこれもできている現状は目標が達成できている状態だな
772: 2022/10/21(金) 20:53:45.43 ID:r+LUs0oF(1)調 AAS
自分が作りたいものを実現できるならそれでいいし
773: 2022/10/22(土) 10:24:29.33 ID:nOyTQUKy(1)調 AAS
またnpmとbowerに分かれるのか
774: 2022/10/22(土) 12:20:56.88 ID:J0WzfMNr(1)調 AAS
>>770
そもそもフロントエンドの実行環境はnodeじゃないしな。
そこで動くライブラリもnpmにしたのはライブラリ開発者側の意思だろ。
775: 2022/12/01(木) 15:22:36.40 ID:gR9AoUvr(1)調 AAS
npm@9にしたらupdate時にinstall済みのローカルモジュールがsymlinkから実ファイルコピーに書き換えられた
--install-linksの挙動変更だけじゃなかったのか
776: 2023/01/09(月) 13:40:55.90 ID:pkwz3DCl(1/2)調 AAS
substackがGithubリポジトリごと全部消してるけど何かあったのか
npmは基本消せないから今のところは支障ないけど
777: 2023/01/09(月) 15:20:15.81 ID:QAUxwh3d(1)調 AAS
スマホ持ってないのに2段階認証押し付けられて嫌気がしたからとか見かけたな
778: 2023/01/09(月) 19:48:04.21 ID:pkwz3DCl(2/2)調 AAS
思ったよりしょうもなかったがバイク事故とかじゃなくてよかったわ
779: 2023/01/26(木) 12:54:12.49 ID:O11XvwYM(1/2)調 AAS
TSのバックエンドでファイル処理つったらstreamでいいのかな
BufferとかBlobは要らん子?pipeってのもあるらしくて混乱中
780(1): 2023/01/26(木) 13:13:59.54 ID:f8HqO3bH(1)調 AAS
最初はfs.writeFileとfs.readFileを使え
streamは小刻みにデータを処理する方法でpipeはその際の繋ぎ役
BufferやBlobはデータをメモリ上で扱う際の形式の一つ
TS以前にJSの基礎が怪しいから入門サイトなぞったほうがいいぞ
781: 2023/01/26(木) 13:26:12.10 ID:O11XvwYM(2/2)調 AAS
>>780
どうも
BufferとBlobは役割同じに思えるけどなんで分けてるん?
782(1): 2023/01/26(木) 14:46:29.69 ID:gEyoKRRe(1)調 AAS
BufferはNode固有のAPI
Blobは後から出てきたWeb (ブラウザ) のAPI
そしてTypedArrayBufferはECMAScriptのAPI
ストリームとかURLとか他にも重複してるのが多数ある
783: 2023/01/26(木) 15:24:22.66 ID:G0G6dXL8(1)調 AAS
>>782
どうも
JSごちゃごちゃしてて難しいっすね
でも大体わかったわ
784: 2023/02/10(金) 08:27:38.73 ID:WC55EdF2(1)調 AAS
今ってORMはPrisma一択?
785: 2023/02/10(金) 10:01:03.33 ID:9VW44qMw(1)調 AAS
勢いでは完全に負けてるが一応TypeORMもあるんじゃね
786: 2023/03/01(水) 14:51:23.19 ID:dWfTEqUX(1)調 AAS
util.aborted()が生えたけど用途がわからん
787(1): 2023/07/27(木) 23:08:16.03 ID:nxFTW9tq(1)調 AAS
nodejsでDBマネージャーとかログマネージャーとか、可能な限り同一インスタンスを維持したいインスタンスって一般的にどうしてますでしょうか。
class DbManager{
private constructor(){}
static instance = new DbManager();
}
staticクラスを使うなら上記の書き方でしょうが、一般的にstaticクラスは良くないとされています。
他の硬い言語ならDIを使うのですが、nodejsというか、javascriptだとDIライブラリはあまり使われていないように見える。
毎回クラスを作る時に引数で渡しまくるのも面倒ですし、なにか良い手順はありますでしょうか
788(1): 2023/07/28(金) 01:56:41.01 ID:HsfaqfZ/(1/2)調 AAS
常に引数で外部注入して生成するけど
引数にundefinedが来たら自動的にデフォルト注入を使って生成かな
789: 2023/07/28(金) 03:31:39.50 ID:H/mKlItN(1)調 AAS
>>788
ありがとうございます。
そうなると大半がデフォルトなんだから、もう毎回書かなくていいや〜 ってなってしまいそう…
とにかく、それでも引数でちゃんと渡す or デフォルトで自動生成する が常套手段みたいですね。
790: 2023/07/28(金) 09:58:33.60 ID:Za7BrkqV(1)調 AAS
ファイル(モジュール)のトップレベルで
export const instance = new Xxx();
で十分
Javaなんかと違ってこれでもモックできるから大げさなDIなんかJS/TSにはいらんやろ
791: 2023/07/28(金) 10:36:22.85 ID:HsfaqfZ/(2/2)調 AAS
singletonならそれでいいね
792: 2023/07/28(金) 12:39:37.08 ID:Zbfe02RK(1)調 AAS
>>787
> 同一インスタンスを維持したい
シングルトンの話だな
793: 2023/08/18(金) 15:34:38.37 ID:ccv6NoZV(1)調 AAS
やめてっ!そこはビンカンなの!
794: 2023/10/13(金) 21:17:44.43 ID:uv+WVTr3(1)調 AAS
おぉ(゚ロ゚屮)屮
795: 2024/06/07(金) 19:13:05.87 ID:pMHNGLdE(1)調 AAS
Prismaが快適すぎて最近はこれ使いたいがためにnode使ってるまであるわ
たまにEloquentとか使うとやりたいことができなさすぎて発狂しそうになる
796: 2024/07/22(月) 05:05:01.65 ID:lDVL1NiC(1)調 AAS
わざわざランタイム側でsqlite内蔵する意味がわからん
暇なのか
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 1.320s*