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/
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ブロックにも引っ掛からんわどうすりゃいいねん
0646デフォルトの名無しさん
垢版 |
2021/10/10(日) 20:04:03.47ID:rC7NAnza
最悪プルリク投げるかと思ってリポジトリ見たら消えてた
捨てて自分で書くわ
0647デフォルトの名無しさん
垢版 |
2021/10/10(日) 20:07:36.51ID:zb1mAGkH
>>646
お疲れさん。ちな何て言うモジュール?
0649デフォルトの名無しさん
垢版 |
2021/10/20(水) 02:52:30.75ID:7Ch1Hu5l
スクレイピングに興味があるのですが1時間に1回の頻度のGETだけで訴えられる危険があるって本当ですか?
0651デフォルトの名無しさん
垢版 |
2021/10/21(木) 01:45:51.47ID:Z5+NocI4
17でStrcturedCloneの実装来るのか
もうv8にある似たようなAPI使わなくてよくなるのな
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です。
0685デフォルトの名無しさん
垢版 |
2021/11/25(木) 23:27:35.30ID:nh0ZEMSE
漏れは、Ruby でも、パーサーの誤解釈を避けるため、
. を行末に置く

a.
b( ).
c( )
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で入れ損なったから悲願だったんだろうけど
0720デフォルトの名無しさん
垢版 |
2021/12/26(日) 20:25:20.58ID:M+F+5/6j
プロトタイプベースのオブジェクト指向ってIDEや静的型付けと相性悪いのでは
レスを投稿する


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