X



【node.js】サーバサイドjavascript 4【io.js】 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
垢版 |
2016/04/11(月) 16:28:34.52ID:ORuOCkHy
pythonやrubyやPHPと同じ土俵でjavascriptが使えるようになりました。
サーバサイドjavascriptについて語りましょう。

node.js - googleが開発したV8エンジン上で実行できる処理系
http://nodejs.org/
io.js - node.js 互換で Joyent の影響からの脱却を目指す処理系
http://iojs.org/
Rhino - JVM上で実行できる処理系
https://developer.mozilla.org/ja/Rhino

io.js の経緯
http://stackoverflow.com/questions/27309412/what-is-the-difference-between-node-js-and-io-js
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 3【io.js】(c)2ch.net
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/
0222デフォルトの名無しさん
垢版 |
2016/08/27(土) 16:19:53.61ID:QI8SWCwQ
>>221
出来るけどめんどくさい
0223デフォルトの名無しさん
垢版 |
2016/08/27(土) 16:33:33.49ID:6tGwOPx0
>>221
無駄な抵抗は止めろ
0225デフォルトの名無しさん
垢版 |
2016/08/27(土) 20:00:25.80ID:qPuFnqYi
サムスン、Node.jsの開発企業Joyentを買収

サムスンは、米国でNode.jsの開発企業Joyentを買収することで合意した、と発表した。

今回の買収で、サムスンは、これまでベンダーに依存してきた
ソフトウェア、特にSaaS領域での遅れを取り戻し、モバイル、IoT、
クラウドベースのソフトウェアやサービスなどの大規模な需要に
自社のクラウドプラットフォームで対応できるようになる。

Joyentは、Node.jsの開発企業で、
Dockerコンテナに最適化したクラウドサービス「Triton」と、
オブジェクトストレージを提供するクラウドサービス「Manta」が主力サービスに持つ。
https://news.thepedia.co/article/839/
0227デフォルトの名無しさん
垢版 |
2016/08/27(土) 22:26:02.43ID:MqlYnWcm
node.jsのコアモジュールhttp.request/http.getをつかってWebページ(の文字列)を取得したいのですが、
いろいろ検索してみても、

var http = require('http');
http.get('<url>', function(res) {
 res.setEncoding('utf8');
 res.on('data', function(body) {
  console.log(body);
 });
});

こんな感じの、コンソールに表示する例しか見当たらず、
文字列を変数に取り込む方法がわかりません。
他のリクエストやスクレイピングのモジュールを用いることなく、
文字列を変数に取り込んで文字列操作をするにはどうしたらいいでしょうか?
0228デフォルトの名無しさん
垢版 |
2016/08/27(土) 22:30:45.89ID:AeepL8xQ
今更かよ

>>221
標準モジュール使ってしこしこ書くしかない
まあ大抵npmに便利なものが上がってるから落として使えばいいけど
しっくりこないと自分で作りたくなって結局時間が飛ぶように消える
0229デフォルトの名無しさん
垢版 |
2016/08/27(土) 22:33:52.49ID:AeepL8xQ
>>227
コンソール部分の代わりに変数への代入や他の関数呼び出しを行えばいい
そもそも非同期の扱い方がわかってないみたいだから質問スレ行った方がいいよ
0230デフォルトの名無しさん
垢版 |
2016/08/27(土) 22:57:04.66ID:MqlYnWcm
>>229
レスありがとうございます。
console.log()の部分で変数を代入しても上手くいかず、
returnで外に持ち出すこともできず、詰んでしまいました。
一旦ファイルに書き出して、読みだす方法も、まさに非同期の扱いで難儀しています。

質問スレ、どこがいいんでしょうねぇ。
0231デフォルトの名無しさん
垢版 |
2016/08/27(土) 22:57:26.87ID:mf8jh8Qk
>>227
コンソールに表示してるbodyに入ってんじゃないの?
取りたいものが決まってて定形なら正規表現で取れば多分一番楽だと思う。
0232デフォルトの名無しさん
垢版 |
2016/08/27(土) 22:59:22.69ID:mf8jh8Qk
>>230
外で定義した変数に入れれば入るけど、そうじゃない。
eventEmitterでも使って、適当な粒度のイベントにして渡したら疎になって後々使いやすいよ。
0233デフォルトの名無しさん
垢版 |
2016/08/27(土) 23:17:15.65ID:MqlYnWcm
>>231,232
レスありがとうございます。

"body" に文字列が入っているのは間違いないと思いますが、
これを、後で関数の外で上手く拾うことができないのです。

たとえば、>>227 の後に "console.log(body);" としてもダメでした。
"body" が未定義となってしまうのです(この結果はなんとなくわかります)。

前もって定義した変数"body2"に"body"を代入しても、この "body2" も空でした。
return を使って、関数の外に出すことも試しましたが、
どのコールバック関数を相手にしても、上手く行きませんでした。

eventEmitter 、調べてみます。ありがとうございます。
0234デフォルトの名無しさん
垢版 |
2016/08/27(土) 23:21:38.36ID:AeepL8xQ
>>233
変数で橋渡しする場合は>>232の言うように外側で書いて
callbackがそれを参照できる形にする必要がある
また>>227の最後尾にコンソールを書いた場合はリクエスト投げる前に実行されるよ
今回の場合は単に res.on('data', bodyを受け取って文字列操作する関数); でもいいと思うけど

質問スレは↓だけど荒らし(本日ID:W50SJfH+)がずっと常駐しているから注意
http://echo.2ch.net/test/read.cgi/tech/1468158373/
0237デフォルトの名無しさん
垢版 |
2016/08/27(土) 23:58:21.81ID:vp5ltHnS
>>233
質問スレ側の人間だが、
マジレスすると質問スレで質問するのではなく、非同期を勉強し直した方がいい。
JavaScriptでは非同期が分かっていないと話にならない。
質問したところで分かるようにはならないよ。
色々console.log('test');とか置いて動作タイミングを確認してみるといい。
0238デフォルトの名無しさん
垢版 |
2016/08/28(日) 00:05:46.28ID:Ks/jICmD
面倒だから普通はrequestとかsuperagentとかfetchとか使うが標準モジュールでシコるなら

var http = require('http');
http.get('<url>', function(res) {
 res.setEncoding('utf8');
 var body = '';
 res.on('data', function(data) {
  body += data;
 });
 res.on('end', function() {
  console.log(body);
 });
});
0239デフォルトの名無しさん
垢版 |
2016/08/28(日) 01:27:18.04ID:/ORT5A+I
第2引数に外側で定義した関数を指定すればいいだけなんだけど、非同期に慣れてないとこれがわかりづらいね
0240デフォルトの名無しさん
垢版 |
2016/08/28(日) 05:08:46.10ID:H8sJUdJ0
>>234
>荒らし(本日ID:W50SJfH+)がずっと常駐しているから注意

一日中張り付いているのか?目的は何なの?
0243227
垢版 |
2016/08/28(日) 19:20:42.00ID:jcLwso4P
レスありがとうございます。
外の関数を呼び出すことはできました。
非同期の対処はもう少し勉強します。
0244デフォルトの名無しさん
垢版 |
2016/08/31(水) 12:10:57.79ID:+XSeJi30
undeclared-variables-check入れてみたらrequireでエラー投げて笑った
そりゃ未定義だけどさ
0248デフォルトの名無しさん
垢版 |
2016/09/01(木) 17:37:46.03ID:qznKMbiw
サムソンがnodeの会社を買う理由ってなんだろうな。
なんかメリットあるのか?
0250デフォルトの名無しさん
垢版 |
2016/09/01(木) 17:41:12.88ID:qznKMbiw
jsでサーバサイドってそんなにダメかな?
むしろaltJSでいろいろな言語から選べるしクライアントとサーバサイドの
共通コードかけるし便利だと思うんだけど
シングルスレッドなところがダメなのかとも思ったけど
cluster使ってforkすりゃCPU数分プロセス作れるし何がイカンのか
0254デフォルトの名無しさん
垢版 |
2016/09/02(金) 08:07:33.63ID:kRpLrkZu
一人がクライアントとサーバーの両方を担当するなら
同じ機能を2回書かずに済んだり、同じエディタを使えたりは利点になるか

jsしか書けない人間が複数いるなら必要に応じて担当を割り当てられるか
0255デフォルトの名無しさん
垢版 |
2016/09/02(金) 11:20:10.42ID:UbwoQtPa
複数言語を習得してる人間でも、同時に異なる言語使おうとすると頭の混乱起こりやすい。
やっぱ同じ言語がクライアント・サーバの両方で使えるのは良いんじゃないかな。
0258デフォルトの名無しさん
垢版 |
2016/09/02(金) 13:15:13.96ID:kRpLrkZu
まぁ後はJava/C#を使いたくない場合に
TypeScriptと絡めて「硬い」コーディングがしたい場合の選択肢か
0261デフォルトの名無しさん
垢版 |
2016/09/02(金) 14:05:52.43ID:LgVEFfHs
バリデーションの共有ってメリットにならないか?
webAPI側のバリデーションとclient側のエラーチェックを共通コードに纏めれたほうがいい気がするんだけど。結構面倒くさいでしょバリデーション
0263デフォルトの名無しさん
垢版 |
2016/09/02(金) 15:15:17.79ID:dglZ+Mdk
完全なバリデーションが書けるなら client/server 共通でいいだろうけど
なかなかそうもいかないから、別言語の別観点で2重にバリデーションを
するほうが安全かも知れない。
0264デフォルトの名無しさん
垢版 |
2016/09/02(金) 15:33:28.19ID:tIJhbCeG
ばりでーチョン
0265デフォルトの名無しさん
垢版 |
2016/09/02(金) 15:42:50.04ID:LgVEFfHs
>>263
そんな手間を掛けるくらいならテストを書いたほうがいい。
サーバサイドでjsエンジンを動かしてという手もあるんでしたっけ
reactのサーバサイドレンダリングってrailsとか使うとどうしてるんだろ。
0267デフォルトの名無しさん
垢版 |
2016/09/09(金) 21:30:49.46ID:oMlYA35z
テストで何とかしようとするのは
同じ動的型付けであるRubyが辿った悲劇の二の舞
0268デフォルトの名無しさん
垢版 |
2016/10/28(金) 06:44:17.03ID:r/x8mVSr
Win使いなんだけど、みんな開発環境どうしてるんです?

Winでそのまま開発?
GUIありのLinuxをバーチャルか普通にPCインストールしてそこで開発?
それともMac?
0273デフォルトの名無しさん
垢版 |
2016/10/28(金) 14:53:48.34ID:EfMWYGcS
最近のwinはlinux環境入れられるんでしょ?
もうwin環境のことは気にしなくていい?
0274デフォルトの名無しさん
垢版 |
2016/11/01(火) 23:42:56.87ID:jbWQdUPc
すみません質問させてください!

postcssのビルドに7秒くらいかかるんですが、もっと早くする方法ありませんか?
使ってるモジュールはpostcss-importとpostcss-cssnextだけなのですがなんでこんなにかかるんでしょう。

browserifyの時も15秒くらいかかっててwatchify使ったら爆速になったので感動したのですが
postcssにもwatchifyみたいなのってないんでしょうか...
0275274
垢版 |
2016/11/03(木) 11:57:32.06ID:ELIf3lFW
>>274ですが、postcssを使っていると言いましたが具体的には
post-css-cliを使っています。

今、代わりにwebpackを利用したpostcss-loaderを使ったビルドを行ってみたら
物凄く早くてびっくりしました。(webpackも内部的にpostcssを使っていると思ってたのですが...)

ただjsにパッケージしたいわけではなく、cssファイルとして出力したいので
webpackは使いたくないです。

昨日、こんな記事を見つけました
http://blog.greggant.com/posts/2016/05/03/post-css-is-slow.html

やっぱりPostCSSって遅いんですかね?
なんかSassよりビルドが早いってことがメリットだと思ってたんですが...
0276デフォルトの名無しさん
垢版 |
2016/11/03(木) 13:41:25.94ID:lfIkemy8
SassはRuby実装版とC言語実装版があるんだよ。
Ruby実装版は遅かった。
C言語実装版は爆速

PostCSSはJavaScript実装みたいだから
一般論としてC言語実装のほうが速いだろうね。
0277デフォルトの名無しさん
垢版 |
2016/11/03(木) 13:44:00.34ID:lfIkemy8
>>275
> (webpackも内部的にpostcssを使っていると思ってたのですが...)
どのプラグイン(loader)を使うかによる

> ただjsにパッケージしたいわけではなく、cssファイルとして出力したいので
> webpackは使いたくないです。
extract-text-webpack-pluginを使えば、cssを別ファイルに切り出せる
0278デフォルトの名無しさん
垢版 |
2016/11/22(火) 01:30:31.04ID:kbDRJTGd
webpackで指定したrequireをバンドルせずスルーするのってライブラリ書くときにやると思うけど
変換せずにES6 Modulesそのままで出力する時代になったら同様の手法ってどう実装するんだろ
import,exportはトップレベル限定だし
0279デフォルトの名無しさん
垢版 |
2016/11/23(水) 16:26:43.44ID:q+/j2xKv
>>278
だからwebpackにexternalsって機能が用意されてるだろ
0280デフォルトの名無しさん
垢版 |
2016/11/23(水) 16:30:10.06ID:q+/j2xKv
> ES6 Modulesそのままで出力する時代
webpackを使わないって話か?
それなら細切れのファイルのままで動くはずだろ。

これらのファイルをパフォーマンスのために結合したいっていう話であれば
結合するツールを通せばいいだけ。

それがwebpackだけどなw
最初からwebpackは結合ツールだろ?
0281デフォルトの名無しさん
垢版 |
2016/11/23(水) 19:18:19.97ID:8JM49hh7
npm socket.io以外の方法でsocket.ioを入れる方法はあるのでしょうか?
格安VPSを借りてnodeを入れたらnpmがメモリ不足で落ちました。。。
ちなみに128MB+swap128MBです。nodeのために借りたわけじゃないので最低プランです。
nodeを少し触ってみようと思ってみたらメモリ不足だったと。。
0282デフォルトの名無しさん
垢版 |
2016/11/23(水) 19:27:52.62ID:q+/j2xKv
yarnでも使ってみたら?
npmは異常にメモリ食うツールだと思ってるんで
改良されたyarnならそこら辺も改良されてるんじゃね?
0283デフォルトの名無しさん
垢版 |
2016/11/23(水) 19:28:46.35ID:q+/j2xKv
あと結局のところファイルがあれば十分だろうから、
互換性がある環境をローカルで用意してコピーしても動くだろうね。
0285デフォルトの名無しさん
垢版 |
2016/11/24(木) 16:25:31.08ID:8ph3HZsS
httpリクエストのパラメーターをJSONで受け取りたいのですが簡単に型チェックを行うにはどうしたらいいでしょうか?
0290デフォルトの名無しさん
垢版 |
2016/12/24(土) 12:59:31.99ID:pvCha/M1
最近Winでも動くようにシェルじゃなくNodeのAPIでファイル操作書いてるけど
fsはディレクトリ名の変更が面倒だな
0291デフォルトの名無しさん
垢版 |
2016/12/26(月) 17:10:45.18ID:YoRbV7Fw
native moduleでBuffer返そうとしてるんだけど何故かUint8Arrayが返る
これどうすればいい?

v8::Local<v8::Object> lr;
v8::MaybeLocal<v8::Object> buf=node::Buffer::New(isolate, datalen);
buf.ToLocal(&lr);
memcpy(node::Buffer::Data(lr), data, datalen);
args.GetReturnValue().Set(lr);//Uint8Arrayが返る(中身自体は期待通り)
0293デフォルトの名無しさん
垢版 |
2016/12/26(月) 18:03:53.64ID:YoRbV7Fw
自己解決 根本的な勘違いをしてた
global掴んでbuffer引っこ抜いきつつ、変換掛けたらとりあえず動いた
0294デフォルトの名無しさん
垢版 |
2016/12/28(水) 20:41:17.73ID:qA/oaz24
downloadRecの処理が終わったあとに処理をしたいのですが、何かいい方法ありますか?

var client = require('cheerio-httpcli');
var URL = require('url');
var target = "http://nodejs.jp/";

downloadRec(target, 2);

function downloadRec(url, l) {
if (l <= 0) return;
console.log(url);
client.fetch(url, {}, function(err, $, res) {
$("a").each(function(i) {
var next_url = $(this).attr('href');
next_url = URL.resolve(url, next_url);
downloadRec(next_url, l - 1);
});
});
}
0296デフォルトの名無しさん
垢版 |
2016/12/29(木) 16:52:22.26ID:gZvvZQ+j
>>295
使って色々頑張ってみたんだがどうしてもできなかったので、どうすればいいか教えてください。
0300デフォルトの名無しさん
垢版 |
2016/12/30(金) 22:35:37.39ID:b7WBl9TI
>>297
いやいや。段階的に移行した方がいいと知った。
先ずはPromiseを使いこなしてからasync/awaitへ
じゃないと使いこなせないし
0302デフォルトの名無しさん
垢版 |
2017/01/11(水) 15:42:49.05ID:vH7dCRyh
すみません教えてください
node.jsでaccessのデータを扱うにはどうしたらいいでしょうか?
勉強を始めてみたもののこの部分がさっぱり分からなくて
0304デフォルトの名無しさん
垢版 |
2017/01/31(火) 02:47:01.11ID:NZevozPS
foreverで嵌まっています。
環境はCentOS6.8+node.js v4.7.2+npm 2.15.11です。

通常なら起動すると、
warn: --minUptime not set. Defaulting to: 1000ms
warn: --spinSleepTime not set. Your script will exit if it does not stay up for at least 1000ms
info: Forever processing file: ここにパス
が出るのが正常ですが、
最終行のinfoが出ずにコマンドが帰ってこない状態になっています。
肝心のnodeは起動しているのですが、コマンドが帰ってこないので仕方なくCtrl+Cで中断するとnodeのプロセスも止まってしまいます。
forever は-g付でグローバルインストールしており、何度か削除、再インストールを繰り返しましたがだめでした。

散々ぐぐっても解決できず数日立ち往生しています。
何か気付きがある方は知恵をお貸しください。
0305デフォルトの名無しさん
垢版 |
2017/01/31(火) 03:00:34.59ID:NZevozPS
状況の追記です。
コマンドが帰ってこないと書きましたが、状況として、
node ここにスクリプト名
を打った時と同じ状態です。
console.logの内容がそのまま出てきます。
0306デフォルトの名無しさん
垢版 |
2017/02/07(火) 19:56:14.64ID:rnaKi3ZD
>>304
なんでcentosなんて使ってるの?
実環境がredhatで有料サポート受けるから開発ではcentos使ってるくち?
それならわかるけど、そうでないならcentos使うメリットなんて殆どないだろ。標準リポジトリのパッケージ少なくて結局サードパーティのリポジトリから持ってくるとか、ソースからビルドとかバカじゃないの?
0307デフォルトの名無しさん
垢版 |
2017/02/07(火) 21:18:13.77ID:sCX3nP78
リポジトリ追加なんてたいした手間じゃないし
ソースからビルドも愚行でもなけりゃ別に普通だろ
0308デフォルトの名無しさん
垢版 |
2017/02/08(水) 14:42:02.74ID:man5IBG6
うちの会社はサードパーティリポジトリ認められてないな。
ソースからビルドするのはオーケーなので基本いつもビルド。
0309デフォルトの名無しさん
垢版 |
2017/02/08(水) 15:31:52.83ID:fGXhImwi
>>306
>標準リポジトリのパッケージ少なくて結局サードパーティのリポジトリから持ってくるとか、ソースからビルドとかバカじゃないの?

わろた
ほんそれ
0311デフォルトの名無しさん
垢版 |
2017/02/08(水) 16:06:35.04ID:h2xuxrYQ
世界的にはとっくにubuntuとかが主流なのに日本は未だにcentosのままってとこが多いよね
0312デフォルトの名無しさん
垢版 |
2017/02/08(水) 16:22:57.83ID:kddAP5Zw
で、いつ目障りなio.jsとかいうゴミグループは消えるの?こいつらのやった事はnode.jsの発展と普及をいたずらに遅らせただけでしたwww

いつものコンピュータだけがお友達な根暗馬鹿の自己満足でフォークするとか辞めていただきたいね。
0313デフォルトの名無しさん
垢版 |
2017/02/08(水) 16:25:08.80ID:+f0LmjaI
サーバには安全性、安定性が求められるから、
世界的に見てもエンジニアに好まれてるのはRHELクローンの方。
0317デフォルトの名無しさん
垢版 |
2017/02/08(水) 18:58:19.46ID:uiFBRwjo
ソースからビルド、そんなに少数かな。
俺の知ってる環境も基本はそうだった。
0319デフォルトの名無しさん
垢版 |
2017/02/08(水) 23:10:55.63ID:wsrFvMlT
>>313
ガラパゴスの住人さん乙

>>318
DBサーバーなら違うって話はあり得るがここはnode.jsスレだからな
nginxと同居することも多いんだからボリュームゾーンからそう外れないだろ
0320デフォルトの名無しさん
垢版 |
2017/02/09(木) 04:37:18.58ID:KfjJ3OGM
>>304の話もそうだけど、みんなforever大好き人間なの?

ってのも今日のTechCrunchの記事にあったKeymetricsってとこが出してるpm2ってプロセスマネージャがすんげー使いやすそうなんだけどと思ってさ。

ttp://jp.techcrunch.com/2017/02/08/20170207keymetrics-is-a-nodejs-monitoring-tool-for-your-server-infrastructure/
■ このスレッドは過去ログ倉庫に格納されています