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/
0125デフォルトの名無しさん
垢版 |
2018/07/15(日) 15:56:04.95ID:noPBsGa8
>>118
たとえ話に意味があるとは思えないが
python: python - pypi
python: python - conda (anaconda)
ruby: ruby - gem
perl: perl - CPAN
node.js: javascript - npm
linux: python - yum
linux: perl - rpm
0126デフォルトの名無しさん
垢版 |
2018/07/15(日) 16:07:22.97ID:jsMvl+lU
プロジェクト毎に3万ファイルとか50MB以上とかダウンロードしてくるけどこんなもん?
SSDが死にそう
0127デフォルトの名無しさん
垢版 |
2018/07/15(日) 16:29:40.23ID:IE1rNzTR
>>126
> SSDが死にそう
安心しろ。この程度でSSDが死ぬことはない

SSDの書き込み回数は1万回ぐらいと言われているが、それはセルごとだ。
1セルのサイズは多くても4ビットだ。もっとも1セル単位で
書き込むわけではなくブロック単位で書き込む。

ブロックサイズは製品にって違うが2KBとしよう
50MB = 50000KB、3万ファイルだから1ファイル1.6KB。
ざっくり大目に見てブロックサイズと同じで2KBとしよう。
つまり1ファイルで1ブロック書き込みをするということだ

ということは1プロジェクトのファイル数が3万とか50MBあったとしても
結局は1万回書き込みができるブロック毎に1回しか書き込みしないということだよ

さらに128GBのSSDであれば、128 * 1024 * 1024 = 134217728KB
これをブロックサイズで割ると67108864ブロックあることがわかる。
それぞれのブロックごとに1万回書き込みができるのだから
全ブロックで671088640000(約67千億回)が総書き込み可能回数となる

SSDはうまくブロックごとの書き込み数を平均化してくれるので
3万ファイル = 3万回の書き込み なので 22369621(約2千万)プロジェクトの
ダウンロードが可能ということだよ(1ファイル1ブロック書き込む前提)
0128デフォルトの名無しさん
垢版 |
2018/07/18(水) 01:10:24.04ID:ZhFIl0gF
将来プログラマーになりたい高校生です
去年どうやったらプログラム上手くなりますか?と5chで聞ききました。
とにかく何か作れ!と教えてもらいました。そして作りました。

レベルが低くて恥ずかしいのですが、JSで壁にブツカッてしまいました。
こちらのWEBなのですが、
http://www.pafumo.com/
地域を絞り込んで検索をしたら出来るのですが、
選択肢の中身がもとに戻ってしまうのです。

そしてサーバーサイドJSだったら、こういう問題も解決できるかもしれない。
と思いまして、今、導入を考えているのですが、
私のレベルは低すぎて、よく分からなくて、ココの皆さんに教えていただきたくて、
書き込みました。

レベルが低すぎてスイマセンが、なにかアドバイスを頂けませんか?
私は、サーバーサイドJSをやったほうが良いのでしょうか?
0129デフォルトの名無しさん
垢版 |
2018/07/18(水) 02:29:18.27ID:Xrgq5rZT
>>128
これまじでつくったん?
高校生でこのレベルだったら日本じゃ食いっぱぐれないから自信持っていいよwすごい
将来有望!

phpやったことないけど、「php 入力値 保持」とかでググって解決できるかも?
0131デフォルトの名無しさん
垢版 |
2018/07/18(水) 10:33:56.80ID:9lJLz1c7
>>128
別にサーバーサイドJavaScriptだろうがphpだろうが大差ない
好きな言語を使えばいいし、言語による問題など無いに等しい
言語の壁なんてずっと先の話の話だ
現時点では自分自身の壁の方がずっと近くにある

あとなどうせ現時点では大したデータ入ってないだろうけど
そのコードおそらく脆弱性があるからな。

<input type="radio" name="gakureki" value="AND `学歴_int` IN(2,3)">高校
<input type="radio" name="gakureki" value="AND `学歴_int` IN(2,3,4)">専門

こんな感じでSQLの一部(らしきもの)をサーバーにそのまま投げてはいけない。
この部分は、サイト利用者が自由に書き換えられるから、SQLインジェクションという脆弱性になる
その結果サーバーの全てのデータの流出や削除が起こる可能性がある

仕事ではありえないレベル
0132デフォルトの名無しさん
垢版 |
2018/07/18(水) 11:47:33.49ID:4ilUbnPJ
>>128
hiddenタグとかに埋め込むとかformでpostした内容を読み取ってvalueを書き替えるじゃん?
PHPをやったら簡単かも、htmlspecialcharsとか使えるし->その先はスレ違いで。
0133デフォルトの名無しさん
垢版 |
2018/07/18(水) 12:09:46.83ID:jJw1m5s0
「たのしいRuby 第5版、2016」を、3回読んで、
無料のRails チュートリアルをやればよい

Rails をやれば、どのフレームワークにも応用できる

PHP は、Rubyよりも難しいから、素人レベルでは避ける方が無難。
数言語を学んでからの方が良い
0135133
垢版 |
2018/07/18(水) 13:08:12.74ID:jJw1m5s0
フレームワークの基礎は、Rails。
無料のRails チュートリアルをやった後に、以下の掌田津耶乃の本を読む

Node.js超入門、2017
Python Django 超入門、2018

Spring Framework 4 プログラミング入門、2014
Spring Boot プログラミング入門、2016
0136デフォルトの名無しさん
垢版 |
2018/07/18(水) 13:18:01.82ID:nZmqMr15
rubyは組み込みメソッドの仕様が恣意的で見た通りに動いてるとは限らない。
逐次確認が必要だが昔からドキュメント書きたくないでござるの人たちばっかりのコミュニティなのでrubyソース読む羽目になる(教祖もそうすべきと言っている)
Pythonが(書きにくく)読みやすいと言われるのに対しRubyが(好き勝手に書きやすく)読みにくいと言われるのはそのため。
また、似た機能を実現するためのメソッドがたくさんあり、まったく動作が同じ単なるエイリアスだったり、微妙に動作が違っていたりする。これも調べないと分からない。
構文レベルでも同様の混乱を引き起こしており、行き当たりばったりの機能追加が言語全体の一貫性を著しく損ねている状態。
例)https://qiita.com/jnchito/items/83410c0cda446efea582
なのでPythonに完敗して滅んだ。
動物の細胞内に共生して生き長らえているミトコンドリアのように、現在はRailsの内蔵バッテリーとしてのみ生存が確認されている。
0137デフォルトの名無しさん
垢版 |
2018/07/18(水) 15:19:54.93ID:OB31EeM/
>>128
クライアントに状態を保存したいなら、 WebStorage で事足りるかと思います
サーバに進んでもいいけど WebExtension でブラウザ拡張にするって手もありですかね
0139デフォルトの名無しさん
垢版 |
2018/07/18(水) 19:59:05.56ID:GJ20wEra
Node.jsに興味がある者です(使ったことはありません)

Node.jsって非同期処理らしいけど、コールバック地獄になったりしないのでしょうか?
見通しの良いプログラム書けますか?
どんな用途に向いていますか?例えば企業のHP? 掲示板? ゲーム?

ド素人ですみませんが、教えてください。
0141デフォルトの名無しさん
垢版 |
2018/07/18(水) 21:48:09.86ID:lX9iw+l5
>>139
NodeというかJavaScriptの文化が非同期中心

コールバック地獄に対してはそれを解消するために色々な機能の導入が進んでる
* ジェネレータ/yield
* promise
* async/await
0144デフォルトの名無しさん
垢版 |
2018/07/19(木) 06:39:55.91ID:7J8bSQkS
それよりもasync awaitは、forEachとか関数を引数に取るようなメソッドを使うと
いつの間にかasyncの世界が解除されてしまうのツライ。そのせいでバグってるの何度かみた。lintツールで監視してほしいんだがないかなー?
0150デフォルトの名無しさん
垢版 |
2018/07/19(木) 08:31:24.37ID:6uxn/aT1
>>149
つまり型推論を使わずに受け側の型を確定しろってこと?めんどくせえよ。

lintでasync function 内のスコープで関数を引数に取るような関数呼び出しがあったら警告する。くらいで良い
0152デフォルトの名無しさん
垢版 |
2018/07/19(木) 21:14:29.49ID:r+W9F2HQ
TypeScriptなら推論してくれるだろ?どこが面倒くさいと言っているんだろうか。
0153デフォルトの名無しさん
垢版 |
2018/07/21(土) 06:27:45.75ID:ElqtIK48
>>128
128ですー!
お兄様達!ありがとうございました。
今回は色々反省点も多かったですが、自分の未熟さが又見えてきました。
本当にありがとうございました

今回はセキュリティを少し修正して一度つくりなおします
まずは・・・また空っぽのWEBサイトに戻りましたwww
0154デフォルトの名無しさん
垢版 |
2018/07/21(土) 11:26:07.15ID:qX0Dt9ZM
これより簡単な最新版インストール方法ないん?@ubuntu16.04

sudo apt-get install npm
sudo npm install -g n
sudo n latest
sudo npm install -g npm@latest
0157デフォルトの名無しさん
垢版 |
2018/08/11(土) 12:04:26.76ID:AWnFhpjF
売ってあげてもいいよ
0159デフォルトの名無しさん
垢版 |
2018/08/11(土) 13:05:24.81ID:3BcXSGzx
いやまぁ、もう持ってるんだけどね
なんかAmazon見てたらオススメ欄に明らかにこんな値段じゃなかった気がする価格で出てたから

なんか原書のIN ACTIONが改版してるみたいだね
0161デフォルトの名無しさん
垢版 |
2018/08/12(日) 12:34:21.45ID:rtSL/abo
いらね
0162デフォルトの名無しさん
垢版 |
2018/08/17(金) 22:04:36.04ID:4NJ8UK9X
JavaScriptってウンコだな
並列処理ができるサーバーサイドでnode.jsよりマシな言語って何かある?
0167デフォルトの名無しさん
垢版 |
2018/08/19(日) 02:55:54.88ID:fvMiJicq
こんばんわ>>128です
ちょうど一ヶ月前に色々教えていただきました
あの時はありがとうございました

あれからずっとWEBサイトを作りました
WEBサイトと宿題以外何もやってません
http://www.pafumo.com/


その時に色々注意されたんですが
とにかく教えていただいたスレッド?にはまた書き込ませてもらいました

ワタシとしては頑張ったほうだと思うのですが
完全に生活リズムが崩れて体調も崩したり泣いたり色々ありましたが
とにかくコチラの皆さんに見ていただきたかったのです

とにかく1ヶ月は寝る間も惜しんでやりました
どうでしょうか?動きとかどうでしょうか?
0168デフォルトの名無しさん
垢版 |
2018/08/19(日) 12:43:00.38ID:plhuPGbS
>>167
大学行く気はないの?
0170デフォルトの名無しさん
垢版 |
2018/08/20(月) 19:18:07.67ID:cZE9+/lx
>>167
褒めてほしいなら褒めてやろうか?
『高校生にしちゃ良くできてるわ笑』

体調?泣いた?甲子園じゃないんだから感動しねぇわ
node.js使いこなしてから書き込めや

もうすぐ夏休み終わりだぞ?
宿題おわらなくても先生に涙見せればok?ってか
0171デフォルトの名無しさん
垢版 |
2018/08/20(月) 20:55:48.45ID:bV0bfDA8
余裕のねえおっさんだなw
0172デフォルトの名無しさん
垢版 |
2018/08/21(火) 02:56:39.15ID:wR4pFdwQ
こんな大人ばっかりだから
間違えても職業プログラマにはなるなよ

そのまま趣味レベルで大学卒業する迄頑張って何かを作り続けてみ
巷のプログラマのレベルの低さを理解できるようになるから
プログラマになったらそいつらの下で仕事するのが馬鹿らしくなるよ
0173デフォルトの名無しさん
垢版 |
2018/08/22(水) 13:43:02.55ID:ucL1rxd7
>>167
こんにちは>>128>>167です。

ありがとうございます。
前回の僕が作ったWEBが駄目すぎて色々注意をいただきましたね。
でも今回はダメ出しがなかったので、
そこそこ通用したのかな?と思っておきます。
0174デフォルトの名無しさん
垢版 |
2018/08/22(水) 14:08:53.29ID:Opme7aq9
突っ込むのが面倒だからだと思う
なるべく色々な人に見せた方がいいよ
5chの住人はめんどくさがりが多そうだから(多分)
0177デフォルトの名無しさん
垢版 |
2018/08/22(水) 20:04:15.95ID:uhR98H94
node.jsのサーバがちょっとした負荷で無応答になって
それっきり復帰できないので対応策を教えてください。

例えば「user/index」というURLに対してDBなどのソート処理などを
クライアントから連打してリクエストを何回か送ると、
そのうち無応答になります。
タイムアウト処理をしてタイムアウト時に強制的に
res.redirect()とかres.end()すればよいと思ったのですが、
一度無応答になると以降「uder/index」にリクエストしても全て
無応答になってしまいます。
(厳密には「GET」などのリクエストは受け取っている表示が出たあと
全くログが出ません。)
サーバ全体はダウンしていなくて「user/add」へのリクエストは
正常に動くので「user/index」だけが無応答になっている状態です。
この無応答状態を解除する方法を教えてください。
処理中のアクションの関数まだ継続中なら、強制終了したいのですが
その方法がわかりません。

最悪、タイムアウト時にサーバを再起動したいのですが、
外部からでなくnodejs自体で内部から再起動することはできるのでしょうか?
よろしくおねがいします。
フレームワークはexpressを使っています。
また、node.jsのパフォーマンスや可用性対策で参考になるサイトが有りましたら
教えていただけると大変助かります。
0180デフォルトの名無しさん
垢版 |
2018/08/23(木) 01:10:59.57ID:qUZ5eK5Q
>DBなどのソート処理
DB の更新処理に時間が掛かって、表がロックされているとか?
DBのタイムオーバーを設定できないの?

Node.js が受け付ける、同時接続数とかも

5ch のサーバーなんて、しょっちゅうアクセス不能を戻す
0182デフォルトの名無しさん
垢版 |
2018/08/23(木) 05:27:17.11ID:NPcuqlt3
user/indexって単なるselectじゃないの?
それを繰り返してロックするなんてことあるのかね?
select for update呼んでるとか?
0186デフォルトの名無しさん
垢版 |
2018/08/23(木) 07:06:13.29ID:4Ni+ZJQh
>>185
もちろんググりましたよ
おおむねどこもウィキペディアに書かれている理由がほとんどのようですが
パソコン通信やダイヤルアップ接続時代ならともかく現代では無意味です
知識の集積とか気分とか善意とかの理由も2chのようなコミュニティでは無意味でしょう

ちょっとは自分で考えることも覚えましょう
0190デフォルトの名無しさん
垢版 |
2018/08/23(木) 07:27:43.86ID:4Ni+ZJQh
>>189
私は具体的な根拠をあげて意見を述べたつもりです
それをあなたは見下したような態度をとっただけで具体的な反論もない

プライドだけは高そうですね
0192デフォルトの名無しさん
垢版 |
2018/08/23(木) 07:56:53.07ID:4Ni+ZJQh
コウモリ野郎っていうのは、こっちでは向こうの悪口、向こうではこっちの悪口言う奴ですよね
いろんなところで質問するマルチポストとは違うような気がするんですが
0193デフォルトの名無しさん
垢版 |
2018/08/23(木) 08:03:10.28ID:7f2db5Zi
>>186
マルチポストの是非については納得いかないかもしれないが
(そして今は俺もそこには触れないが)
マルチポストしたら実際どうなるかは今実感してるはずだろ
せっかく年齢の割に優秀とか言ってもらえてたのにこの数分でこの有様だ

その向上心と行動力をこんな事で殺さないでくれよ勿体ない
0197デフォルトの名無しさん
垢版 |
2018/08/23(木) 08:16:59.96ID:NPcuqlt3
Ruby on railsなんて一番チームワークが必要だ。
オワコンJava servletで十分。
そしてなるべく家から出るな。
0198デフォルトの名無しさん
垢版 |
2018/08/23(木) 08:19:16.32ID:4Ni+ZJQh
>>193
実際どうなるか今実感しているのは、全く論理的でない筋違いなレスがもらえるということです
マルチポストの話題というのはひょっとしたらタブーになっているのでしょうか
あなたのマルチポスト以外の発言もまた意味不明です

>>195
いえ、何が怖いのかよくわかりません

>>196
>>197
何言ってるのかさっぱりわかりません
0199デフォルトの名無しさん
垢版 |
2018/08/23(木) 08:22:19.27ID:NPcuqlt3
プライド捨てられないやつは一人でやった方がいいよ。
周りに迷惑かけるだけだから。
0202デフォルトの名無しさん
垢版 |
2018/08/23(木) 12:21:10.84ID:4+C+OXJA
マルチポスト高校生に束になってもかなわない自称プログラマー達www
有能な若者に嫉妬なんかしてないで自分たちの心配した方がいいんじゃないの?www
0204デフォルトの名無しさん
垢版 |
2018/08/23(木) 12:50:55.09ID:kZnXG8MX
おれはマルチポスト君は変なこと言ってないと思うぞ。物言いはムカつくがw
>>203
お前の方が相当病んでるぞ
0206デフォルトの名無しさん
垢版 |
2018/08/23(木) 13:00:07.47ID:4+C+OXJA
高校生にボコられて発狂中www
0208デフォルトの名無しさん
垢版 |
2018/08/23(木) 13:12:44.35ID:29gBK1aD
レベルが同じすぎて草
0210デフォルトの名無しさん
垢版 |
2018/08/23(木) 15:11:58.49ID:zcVFY2eP
マルチポストの件でスゴイ荒れてますけど、
僕の書き込みは、173が最後なので、その後の口論みたいなのは僕じゃないです。

ちなマルチポストが駄目って事は1ヶ月前に2chで教えてもらいました
だからもうマルチポストをするつもりはないです
2つのスレッドで報告したのは2つのスレッドで色々教えてもらったからです。
でも途中から見た人にはマルチポストに見えたかも知れません
すいませんでした
0212デフォルトの名無しさん
垢版 |
2018/08/23(木) 16:29:22.48ID:+UveuQfQ
>>210
荒れるから酉つけろ
0213デフォルトの名無しさん
垢版 |
2018/08/23(木) 17:38:20.56ID:NMWQFTIr
ってかDBの方で設定してる最大のコネクションとコアは何本と何個なの?
そっちが問題だろ。
問題のクエリを何端末か開いて叩いてみればいいじゃないか。
別のメソッドは返事してくれてるんだから、nodeで何かする問題でもなかろう。
0214デフォルトの名無しさん
垢版 |
2018/08/23(木) 19:32:08.14ID:4Ni+ZJQh
>>210
マルチポストがなぜ駄目かの質問書き込みは私です
あらぬ疑いをかけられた様で申し訳ないです
マルチポストが駄目と言われたそうですが、もし理由があったなら教えてもらえないでしょうか
0217デフォルトの名無しさん
垢版 |
2018/08/23(木) 20:43:16.58ID:n9wdMl+k
実行するSQLをログで履いて、それを
コピーして手動でDBでSQL実行すると
意図通り4件のレコードが取得できるのに、
nodejsで同じSQLを実行するとresultオブジェクトの
行数が0件なのは非同期処理関係ありますか?
因みにresultオブジェクトは正しく取得できて
いてDBのテーブル名やカラム名情報は
取得できているから接続には問題がない。
一応、結果として返されてはいるのに、
何故か手動の時と結果の内容が違う。
0219デフォルトの名無しさん
垢版 |
2018/08/23(木) 21:36:08.48ID:NMWQFTIr
>>217
件数が異なるのに、なんで「resultオブジェクトは正しく取得出来てる」と思えるの?
正しくないじゃん。

nodeでクエリ投げるユーザと、手動で実行するユーザは同じなの?
そのDBやテーブルでSELECTをGRANTしてないとかそういう話ではないと切り分けしてる?
0221デフォルトの名無しさん
垢版 |
2018/08/23(木) 22:48:43.81ID:wvgL9Tt8
1.回答が複数のコミュニティーに分散してしまい、知識の集積という1コミュニティーの目的にそぐわない。
2.ネット資源(サーバーや回線の能力)とて無限ではない。同じ内容の記事をばら撒くのは資源の無駄遣いといえる。
3.その問題に関心のある人は類似した複数のコミュニティーに参加して新規投稿をチェックしていることが多いが、あちこちの同じ投稿に対してそれが本当に目新しい内容かを峻別しなければならなくなる。
4.他のコミュニティーで付けられた回答を知らずに同内容の回答を付けてしまったり、他のコミュニティーですでに解決したことを知らずに検討を続けたり、善意の回答者の労力が無駄になる。
5.この場所だけでは質問が解決するか不安であるという不信感を表明することと、結果としては同じである。
0224デフォルトの名無しさん
垢版 |
2018/08/23(木) 23:17:06.11ID:qUZ5eK5Q
プログラミングと言うよりも、環境構築だろ。
LinuC・データベーススペシャリストなどの資格もいるし、数年以上掛かる

DB なんて、WEB+DB とか、ミックの本を読んだり、何年も勉強する

掌田津耶乃の本
Node.js超入門、2017
Python Django 超入門、2018

ましてや、Node, Django の本などは、ここ1, 2年の話。
一方、Rails なんて何十冊も出てるだろ

Node, Django ができる奴は、英語もできて、自分で問題を解決できる人だけ。
最低でも数言語できて、資格も持っていて、数年以上勉強している人だけ

そもそも簡単な言語の順番は、Ruby, Python, JavaScript の順番。
初心者は、無料のRails チュートリアルで、環境構築もみっちり勉強すべき
レスを投稿する