【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/
0024デフォルトの名無しさん
垢版 |
2018/02/14(水) 23:05:01.77ID:1QOtYRN6
>>23
つまりAPIの破壊的変更が多いってことかね?あんまし使ったことがないから知らんかった。どの辺の話?
0025デフォルトの名無しさん
垢版 |
2018/02/14(水) 23:28:14.70ID:itb3AbpA
v0.12まではほとんどどこでも壊れてたイメージ
streamから何から
v4以降はネイティブアドオンでなければ深刻じゃないかな
細かい非互換性は日本語のブログなんかでもまとめられてる
今はsemverだからメジャーバージョンアップは後方非互換なんでLTSでも年に一回は動かなくなる可能性がある
0027デフォルトの名無しさん
垢版 |
2018/02/14(水) 23:49:34.96ID:X6WT15xX
>>25
active期間が終わってから1年間のmaintenance期間があるわけだからその間に移行しろってことでしょ
メジャーバージョンアップが頻繁だってのは分かるけど
0028デフォルトの名無しさん
垢版 |
2018/02/15(木) 00:44:38.71ID:xvxGqpCI
Meteor.jsを結構前にチュートリアルを一通りやったときは
バックエンドとクライアントでコードを共有できる喜びは感じたかな。
ただ惜しむらくはDBがmongoDB固定だったこと。
今は変わっただろうか?
仕組み上他のDBにしづらいフレームワークで色々ロックインしちゃうんだけど
当時からなんだかとってもPWAって感じだった。
0031デフォルトの名無しさん
垢版 |
2018/02/15(木) 13:45:36.01ID:ungn8NGW
React選んだ人は3年くらい無風じゃね
あれこれ手を出してる人もいるだろつけど
0033デフォルトの名無しさん
垢版 |
2018/02/15(木) 14:53:55.86ID:Z5nyO2py
非同期はいいぞーって言われても、処理終了まで待ちたい場合は、プログレスバーとか出せばいいの?
0034デフォルトの名無しさん
垢版 |
2018/02/15(木) 14:54:13.33ID:YSj3CECL
react無風か?今やv16だぞ何年前のライブラリだっけ?

+reduxでreactと同等のことができるhyperappがスンバらしい。300行しかないのにコードが読みやすい。
0035デフォルトの名無しさん
垢版 |
2018/02/15(木) 15:04:03.11ID:2TdTJC2z
reactはv0.14→v15→v16だから落ち着いたものだよ
非互換な変更はまず警告が出るバージョンがリリースされて次のバージョンで変更とかだし移行のためのツールも提供されるし
0037デフォルトの名無しさん
垢版 |
2018/02/15(木) 16:02:18.16ID:Y2MAEGuu
vscode→electronベースのide
webstorm→javaベースのide

同じようなアプリを作れるかって意味ならできるんじゃね?
0038デフォルトの名無しさん
垢版 |
2018/02/15(木) 16:14:19.77ID:Z5nyO2py
これから業務用アプリもスマホ化してきますやんかー、
そうしたらHTML5とかで作るって話になりますやんかー
javaには無理?node.jsじゃないとだめ?
0042デフォルトの名無しさん
垢版 |
2018/02/15(木) 19:06:28.24ID:IXv90w8V
wasmよくわからんかった
ためしにunityの何かを入れてみたけど、ぜんぜん動かない
0043デフォルトの名無しさん
垢版 |
2018/02/15(木) 21:04:19.20ID:soH0s4OR
JavaScriptがwasmにコンパイル出来たらいいんだがなぁ。
動的な部分が多いからコンパイル自体がそもそも難しいか。
0044デフォルトの名無しさん
垢版 |
2018/02/15(木) 21:40:37.57ID:wm9Pntzw
jsのサブセットともいえるasm.jsからwasmならできる
むしろ一番最初にwasm出てきた時やってたのがそれだろ
0047デフォルトの名無しさん
垢版 |
2018/02/15(木) 22:26:17.03ID:LVCrmyEJ
>>45
AssemblyScriptが中で使ってるBinaryenがasm.js→wasmサポートしてるじゃん
そいつってTS→asm.jsしてBinaryen呼び出してるだけだったりしてね?
俺が44で書いたのは元々wasmがasm.jsベースで実装始まったって見た気がしたからでそんなライブラリとは関係ないけど
0048デフォルトの名無しさん
垢版 |
2018/02/15(木) 22:56:54.50ID:soH0s4OR
あぁ、サブセットってところに引っかかっただけだ。
話を戻すと、RPythonに対するPyPyみたいなものがあればいいんだがなぁ。
0051デフォルトの名無しさん
垢版 |
2018/02/16(金) 07:48:59.59ID:N1s5Hdgd
websocketをやらねば!!

node.js!!

なんか使いづらい、ぐっさくね?

java!!

もう老人

wasm!!からの〜

なに?
0054デフォルトの名無しさん
垢版 |
2018/02/19(月) 20:23:50.11ID:lRCoRBcw
なんでnodeはwebsocket使いにくいの?
煽りじゃなく、ほんとなら個人的に対策立てたいので。
0055デフォルトの名無しさん
垢版 |
2018/02/19(月) 20:45:16.99ID:pKIDPIGb
NodeでWebSocket使おうと思ってるところなんだけど, どのライブラリを使うのがいいか分からん
統計だけ見ればwsかな?
Nodeとブラウザで同じコードで動くようにするにはisomorphic-ws使えばいいのかな?

使ってる人おせーて
0057デフォルトの名無しさん
垢版 |
2018/02/20(火) 15:51:09.84ID:8AxQ9YzH
ワイ「firebase 」
0058デフォルトの名無しさん
垢版 |
2018/02/21(水) 19:31:38.94ID:O384HGBH
nodeでAPI作ったらテストツールはfrisbyしかないの?
0059デフォルトの名無しさん
垢版 |
2018/02/22(木) 20:46:37.90ID:c2upgmLY
sqlite3で、serialize関数の中に書くのと直に書くのの違いは何ですか?
0061デフォルトの名無しさん
垢版 |
2018/02/22(木) 21:40:09.49ID:c2upgmLY
データベース読み取り完了後に処理するには直に並べて書いてもいいのでしょうか
0062デフォルトの名無しさん
垢版 |
2018/02/22(木) 21:45:11.82ID:c2upgmLY
コールバックの引数からしか結果を取得できないので無理でした
0063デフォルトの名無しさん
垢版 |
2018/02/22(木) 21:53:52.78ID:c2upgmLY
db.run(...)でクエリを実行

DBとは無関係の普通のjsの式を実行

serializeの中にこの2行を書いたらクエリの実行が完了してから2行目が実行されるのでしょか。
0064デフォルトの名無しさん
垢版 |
2018/02/27(火) 21:30:09.82ID:lFj/dPwY
サーバーサイドとクライアントで共通に使うモジュールでlog4jsを使いたいんですが、サーバー側は
npmのlog4js-node、クライアント側はオリジナルのlog4jsを使うようなことってできないでしょうか。
それぞれwebpackでバンドルしてますのでwebpack.configで差し替えるような方法でもよいです。
0065デフォルトの名無しさん
垢版 |
2018/02/28(水) 17:29:15.91ID:F8/eMdWm
できますよ
0067デフォルトの名無しさん
垢版 |
2018/03/17(土) 01:02:44.52ID:rslrcUh9
FreeBSDで
$node -e "console.log('Hello world');"
を入力すると
illegal instruction (core dumped)
と表示されるます
解決方法を教えてください
ちなみにgdbコマンドでcoreファイルを調べても
#0 0x086bed17 in ?? ()
と表示されますが詳細が分かりません
osはi386-marcel-freebsdです
0069デフォルトの名無しさん
垢版 |
2018/03/17(土) 05:25:55.91ID:rslrcUh9
backtraceでは#0〜3が全部in ⁇ ()としか表示されません
またnpmもコアダンプするのでllnodeはインストールできませんでした
nodeのバージョンは最新の9.3.0の他に8.9.3、6.12.2、4.8.7を試したのですが全てコアダンプしました
インストーラーにはpkgを使いました
0070デフォルトの名無しさん
垢版 |
2018/03/17(土) 13:29:27.27ID:T/uji2Bj
おおーそんなことってあるのか
FreeBSDの環境構築含めて最小限の再現手順を添えてIssueに上げたら?

ちなみに今のバージョンって8.10.0と9.8.0だよ
0071デフォルトの名無しさん
垢版 |
2018/03/28(水) 22:23:21.10ID:Ik/iQCHb
Node.jsを使ってwindowsでmp3を再生するにはどうすればいいのでしょうか?
とりあえずググって出てきたplay-soundというのとplayerというのを使ってみたのですが
何故かうまくいきません
play-soundは外部プレイヤーを呼び出してるだけっぽいですし
0073デフォルトの名無しさん
垢版 |
2018/03/29(木) 10:13:09.28ID:fj69X1D3
>>72
ありがとうございます
それも見たのですが、コマンドを呼び出してるだけですよね
アプリを入れなくてもいいのはいいのですが、
windowsではwavしか再生できないというのが困ります
まぁwindowsがイケてないのですが・・
0074デフォルトの名無しさん
垢版 |
2018/03/29(木) 12:32:32.82ID:90vctbdp
鯖側だけで音が鳴ってても困る
0075デフォルトの名無しさん
垢版 |
2018/03/29(木) 12:33:22.32ID:fj69X1D3
Electronのメインプロセスでサウンドが鳴らせないことが問題だったのですが
非表示のレンダラプロセスを起動しておいてそこで鳴らせばいいと気づきました
mp3を鳴らすモジュールもElectronを使うようにすれば実現できるでしょうね
メモリ使用量的に富豪的ですが
0077デフォルトの名無しさん
垢版 |
2018/03/31(土) 16:03:54.94ID:Sn+gu03Z
CommonJSのやつをESモジュールに書き換える際に依存モジュールってどうしてる?
ブラウザ用にバンドル出力すると.mjsじゃなくなっちゃうし
0078デフォルトの名無しさん
垢版 |
2018/04/03(火) 18:21:34.47ID:DyW1PQoq
axiosでdatファイルやsubjectファイルを取得するソフトを作っているのですが、文字化けしてしまいます。
jconvやiconv-liteなどのパッケージを使ったり、環境もDigitalOceanのドロップレットを使ったり
ローカルのWindows10で動かしたり色々しているのですが、どうしても文字化けが治りません。
どなたか、ご教示いただけませんでしょうか。
0079デフォルトの名無しさん
垢版 |
2018/04/04(水) 02:04:22.96ID:dci/EUEW
dat ファイルって、5ch の?

HTML に、文字コードを付けていないのだろ。
どうせ、CP932 だろ

強制変換すれば?
0080デフォルトの名無しさん
垢版 |
2018/04/04(水) 02:30:53.74ID:h2UR4/YM
ほんそれ
0081デフォルトの名無しさん
垢版 |
2018/04/04(水) 02:37:45.24ID:RW7X0/F+
>>79
ご回答ありがとうございます。
axiosで取得した時にSHIFT_JISのコードをaxiosが勝手にutf-8扱いしてデコードしていたために
おかしくなっていただけでした。
0082デフォルトの名無しさん
垢版 |
2018/04/04(水) 02:52:05.21ID:h2UR4/YM
>axiosが勝手にutf-8扱いしてデコード

そうか?
鯖がUA観て送信塩湖変えてる可能性は?
0083デフォルトの名無しさん
垢版 |
2018/04/04(水) 02:55:41.91ID:dci/EUEW
スクレイピングなら、Ruby で、Selenium WebDriver, Mechanize の方が簡単

JavaScript, Node は、面倒くさい。
まだ、Electron の方がマシ
0085デフォルトの名無しさん
垢版 |
2018/04/04(水) 14:38:08.10ID:dci/EUEW
参考までに。
Ruby で、Selenium WebDriver で、Chrome のHeadless mode で、
5ch をスクレイピングしたら、文字化けもせずに、テキストが取得できた

ブラウザが、CP932 を自動的に、UTF-8 に変換しているのかな?

driver.navigate.to "https://mao.5ch.net/test/read.cgi/linux/1479499953/8-9";

element = driver.find_element(:css, 'div[data-id="8"] > div.message > span')

puts "内容 :#{element.text}"
0086デフォルトの名無しさん
垢版 |
2018/04/04(水) 14:45:50.99ID:YO5zcEko
以前ならnodeでスクレイプはjsdomとjqueryが定番だったイメージ
最近は知らんけど
0087デフォルトの名無しさん
垢版 |
2018/04/04(水) 15:49:11.75ID:jx2XXyxV
最近はヘッドレスChrome使う。(puppeteerなどのラッパーを使って)
seleniumと比べて挟むレイヤーが少なくて同じ以上の事ができる。
他のブラウザでやんなきゃならないときはSeleniumだね。セットアップが非常にめんどくさいけど。
0088デフォルトの名無しさん
垢版 |
2018/04/04(水) 16:43:05.55ID:s/NBnuXV
Windows環境でもpuppeteerのヘッドレスChrome動くようになった?
0092デフォルトの名無しさん
垢版 |
2018/04/05(木) 17:30:27.50ID:PWNYpPzv
>>90
MBPだから(いちいちwindows環境用意するのは面倒、従って)分からん
0093デフォルトの名無しさん
垢版 |
2018/04/05(木) 18:15:24.72ID:rXLddpo5
MBPだから面倒とはよく分からんな
AT互換機やVMと大してWindowsセットアップの手間は変わらんのに
0095デフォルトの名無しさん
垢版 |
2018/04/15(日) 11:55:39.33ID:GDtrufJB
Node.jsではグローバル変数はglobalの属性にすると知りました
jsファイルにグローバル変数のように書いてる変数はグローバル変数ではなかったのでしょうか?
0096デフォルトの名無しさん
垢版 |
2018/04/15(日) 12:03:17.21ID:GDtrufJB
エントリーポイントのjsファイルも、
実際にはモジュールのように独自の名前空間に閉じ込められていたということなのでしょうか
0097デフォルトの名無しさん
垢版 |
2018/04/15(日) 12:30:34.93ID:ZEcSoj1Y
>>95
グローバル変数がグローバルオブジェクトのプロパティだというのはNode固有の話ではない。
ブラウザだとwindow、Nodeだとglobalでそのグローバルオブジェクトにアクセスできるというだけ。

>>96
仮に閉じ込められているとしても、その「外」が無ければどっちと捉えても同じ。
0098デフォルトの名無しさん
垢版 |
2018/05/23(水) 19:55:38.17ID:Au5e7VGg
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

AY2FW
0100デフォルトの名無しさん
垢版 |
2018/06/06(水) 12:49:05.94ID:1yp8yW1B
fs.createReadStream()のstart, endの値ってuintの範囲に制限されてるっぽくて困った
0101デフォルトの名無しさん
垢版 |
2018/06/06(水) 12:59:17.94ID:1yp8yW1B
GitHub見たら10.3.0で修正されてると見て試したら問題なかった 良かった
0107デフォルトの名無しさん
垢版 |
2018/06/12(火) 06:50:18.57ID:OD105wYY
標準のZIP展開は並列処理されず遅いので皆自分で書いたりして試したことがあると思うが
パスをそのまま信用しちゃまずいことあるだろうなってことは99.99%の作者が気づく
それをケアしていないのはバグではなく、素朴な実装を目指しただけ
つまり問題と責任は利用者側にある 実際のファイルへの書き込みはライブラリ外の場合も多いだろうし
特に標準が用意されていない環境でそういったライブラリを選ぶときは
きちんと知識を持った上で中身を確認して利用しろというだけのことでしかない
0111デフォルトの名無しさん
垢版 |
2018/06/15(金) 09:26:26.58ID:xbpv1wwF
>>107
ほんそれ
0113デフォルトの名無しさん
垢版 |
2018/06/17(日) 00:11:11.59ID:WQHP2n97
nodistをインストールしたら、node7.2.1がインストールされました
このバージョンはどのような基準で決まるのでしょうか?
0115デフォルトの名無しさん
垢版 |
2018/07/04(水) 22:18:23.52ID:gFgZc5FG
PMV
0118デフォルトの名無しさん
垢版 |
2018/07/14(土) 22:13:07.98ID:sptiC22u
npmってのはnode.jsでサーバサイドアプリケーションを開発する人専用のツールではなく、
Javaで書かれたプログラムを実行するのにJavaVMが必要なように
何か使いたいアプリケーションがnode.jsで書かれていて、
それをインストールするために必要なものという認識でよいのでしょうか?
なんかちょっと使いたいものを調べるとなんでもnpmが出てくるのですが、
別にnode.jsで何かサーバサイドアプリケーションを作りたいわけではないので、
なんでいちいちnode.js導入しないといけないのだろうと思ってたのですが。
0119デフォルトの名無しさん
垢版 |
2018/07/14(土) 22:52:48.33ID:ikbDgWAP
NodeJSはJavaScriptの処理系のひとつでブラウザを除けば最も広く使われている
NPMはパッケージマネージャ

そもそもNPMのCLIツールがJavaScriptで書かれていてNode上で動かすことが前提
NPMで導入可能なパッケージは必ずしもNodeを必要としないがNode上で動かすことを前提としたものも多い
例えばブラウザ向け開発でもWebpackとかでブラウザ用JSを生成するわけだがWebpack自体はNode上で動作する
0121デフォルトの名無しさん
垢版 |
2018/07/14(土) 23:21:53.17ID:sptiC22u
>>119-120
なるほど、どうもありがとうございます。
VMとかたとえが悪くてすみませんでした。
rpmとかでLinuxにアプリケーションをインストールするイメージで、
node.jsはOSに相当するプラットフォームのようにとらえていました。
あくまでも、その言語向けのアプリケーションを開発するために必要な、
ライブラリを管理するためのマネージャーなんですね。
0122デフォルトの名無しさん
垢版 |
2018/07/15(日) 00:11:20.46ID:tzV6EtXj
>>121
みんなこういう例え話好きだが使ってみたほうが早いと思うぞ。
正直osで例えるのはまじで何が言いたいのかわからない
0123デフォルトの名無しさん
垢版 |
2018/07/15(日) 11:52:48.40ID:PPKweFFg
nodeコマンドはjsインタプリタ。
nodeで動くjsモジュールが公式、非公式に色々提供されている。多彩なモジュールによりコマンドラインツールやwebサービス、ブラウザアプリ、デスクトップアプリまで開発できる。

パッケージマネージャはnpm。
nodeのモジュールのインストールと、スクリプトの実行機能をもっている。
スクリプト実行はnodeコマンドだけでもできるが大量のモジュールを使うアプリでは依存関係や実行タスク切替が必要になる。そこまで管理できるのがnpm。
npmではまだ機能不足だと感じる人たちはさらにwebpackのようなツールを使う。

web界隈ではcoffeescriptやtypescriptなどのaltjsのjsへの変換が日常的におこなわれる。こういったトランスパイラもnpmでインストールして実行できる。

またトランスパイラはaltjsの変換以外にも毎年アップデートされるjs(es)のパージョン間の違いや、ブラウザ環境とサーバー環境の違いを吸収したり、jsx,vuexなどのDSLの変換等も行うが、それらもnpmで導入出来るようになっている。
レスを投稿する


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