【node.js】サーバサイドjavascript【Rhino】at TECH
【node.js】サーバサイドjavascript【Rhino】 - 暇つぶし2ch202:デフォルトの名無しさん
11/12/11 14:38:39.73
>>197
そう簡単に落ちるものかな

>if(message.length >= 100) return; みたいにしてもlengthを調べる前に死んでる。
これ、他の理由で落ちてるとは考えられない?

>>198-199
それでも、クライアント側で制限はしておくべき

203:デフォルトの名無しさん
11/12/11 16:06:34.61
>>202
正確には落ちるわけじゃなくて、負荷が高すぎて重くなるっていうだけなんだけどね。

どんなでかいデータも全部受信してしまうのが原因で間違いないと思う。

何バイトまで受け取るってのを設定できればいいんだが、ライブラリ追った限りでは無理だった。

一応クライアント側でも対策してみる。

204:デフォルトの名無しさん
11/12/11 17:59:47.57
on('data')で受け取ってる段階で制限オーバーしたらコネクションを切断するとかそういう問題じゃなくて_

205:デフォルトの名無しさん
11/12/11 18:11:26.47
>>203
メモリ管理を自前で実装というのは面倒くさいな

206:デフォルトの名無しさん
11/12/11 18:13:44.80
あぁアンカは関係ない・・・
ただのミスだ・・・

207:デフォルトの名無しさん
11/12/11 18:57:05.26
>>204
GET、POSTならそれで良いけどソケットだとon('data')が呼ばれるのは受信が完了したときだから手遅れだな
node.jsのモジュールから修正しないとどうにもならないかもしれん

208:デフォルトの名無しさん
11/12/11 19:08:57.61
pipe使ってハンドリングできないものかと考えてる

209:デフォルトの名無しさん
11/12/12 00:24:22.46
getやpostを使えば
コメント:<input type="text" id="comments" value="">
に書かれたコメントを受け取れるって認識でおk?

210:デフォルトの名無しさん
11/12/12 00:26:18.48
そんな単純な脆弱性がデフォで対策されてないことに驚いた。
socket.io使ってるアプリ全滅するんじゃね。

211:デフォルトの名無しさん
11/12/12 03:01:09.75
cannot find module 'connect'が攻略できなくて困る

212:デフォルトの名無しさん
11/12/12 13:20:30.44
URLリンク(www.dotup.org)
このようなerrorが出た場合の対処法を教えていただけないでしょうか?

213:デフォルトの名無しさん
11/12/12 13:27:25.80
エラーメッセージをよく読め。
中腹あたりにhas no method createServerって書いてある。
その次の行にそれが発生した行が書かれてる。

214:212
11/12/12 13:35:21.35
>>213
ありがとうございます
調べてきます

215:212
11/12/12 15:24:09.84
URLリンク(d.hatena.ne.jp)
ここの方のものを試しているのですが上手くいかないです

216:デフォルトの名無しさん
11/12/12 15:42:21.59
expressが入ってないとかじゃないの

217:212
11/12/12 16:30:49.73
expressはちゃんと使っています

218:デフォルトの名無しさん
11/12/12 18:33:03.54
>>215
>>216 が言いたいのはきっと、インストールしているかってことだよ

node.js 入れただけじゃ、express は使えないよ

219:デフォルトの名無しさん
11/12/12 19:37:51.41
先頭行にでもdebugger;って埋め込んで
node debug get2.jsで起動してデバッグするのが一番楽な気がする
可能ならnode-inspectorなんだろうけど
あれって意外と微妙

220:デフォルトの名無しさん
11/12/12 19:52:16.30
node.jsで、Errorクラスを継承するときの、ベストプラクティスはありますか。
自分でやってみたけど、throwしたときにstackが設定されないなど、問題があって、うまくいきません。

function FooError(message) {
Error.call(this, message);
this.message = message; // なぜ必要?
}
//FooError.prototype = new Error();
//delete FooError.prototype.stack;
FooError.prototype.__proto__ = Error.prototype;
FooError.prototype.constructor = FooError;

Errorを継承する際の、決定版となる方法がしりたいです。お願いします。

221:212
11/12/12 21:10:57.64
>>218
一応githubを使ってexpressのフォルダを同じフォルダに入れています.
expressを入れていない時のエラー文はこうなっています
URLリンク(www.dotup.org)


222:デフォルトの名無しさん
11/12/12 22:31:10.28
ダウンロードとかgit cloneとかじゃなく
npmで入れたら?

223:212
11/12/12 23:47:42.54
npmをインストールしてもERRが多いのでgithubで行いました
どうにかならないでしょうか?

224:212
11/12/13 09:13:27.56
解決しました

225:212
11/12/13 09:14:17.13
解決しました

226:212
11/12/13 14:33:15.72
http.createServer();
express.createServer();
上記の2つを1つのjsで共存することは可能ですか?
出来ればやり方が知りたいです


227:デフォルトの名無しさん
11/12/13 21:34:39.61
node.js 0.6.3をインストールしてるんだけど、assert.jsのソースが見つからない。
find 0.6.3 | grep -i assert
しても、ファイルはなし。
assert.jsのソースがみたいんだけど、どこにあるの?

228:デフォルトの名無しさん
11/12/14 00:07:09.74
lib/assert.jsだよ

229:デフォルトの名無しさん
11/12/14 01:28:58.50
app(x,y){
var mon;
mon = x + y;
};

このクライアント側で作ったxとyの中身を足したmonをサーバーサイドへ送るにはgetを使うのですか?

230:デフォルトの名無しさん
11/12/14 12:25:35.15
>>224-225
解決したのはいいけど、せめて原因くらい書いておこうよ

>>226
どう共存させたいのか

var server = http.createServer();
var app = express.createServer();
// 略
sever.listen(8001);
app.listen(8002);

例えば、ポートを分けるとか

>>229
POST でも渡せる

231:デフォルトの名無しさん
11/12/14 15:04:41.32
>>230
書き込み用のHTMLと書き込み内容を表示させるためのHTMLを作り、
書き込み用のHTML内に書き込み内容を表示させるためにiframeを使いたいです
appの方で書き込み用のHTMLから変数を受け取りserverの方でserver-sent eventを使い表示用のHTMLに送信しようと思います
appでindex.html、serverでindex2.htmlを読み込ませ
sever.listen(8001);
app.listen(8002);
とした場合
<iframe src="リンク先" height="80">
上記のリンク先にはURLリンク(127.0.0.1:80)とindex2.htmのどちらを入れればよいでしょうか?

232:デフォルトの名無しさん
11/12/14 15:49:53.12
とりあえず
nodeとかに手出さずに
PHPなりrubyなりPythonなりperlなりで
サーバサイドとクライアントサイド両方の勉強しておいで

233:デフォルトの名無しさん
11/12/14 17:51:35.34
node.jsでは正規表現使えない?
b = a.match(/[0-9a-zA-Z_]/);でエラーが出るんだが

234:デフォルトの名無しさん
11/12/14 18:01:46.49
>>233
勿論、使える

それと、/[0-9a-zA-Z_]/ としたいなら、/\w/ って書いたら?
エラーが出たのならエラー内容を書かないとわからないよ

正規表現についての質問は、他のスレでね

235:デフォルトの名無しさん
11/12/14 18:07:58.71
こんなエラー
Error: Object #<Object> has no method 'match'

236:デフォルトの名無しさん
11/12/14 18:15:00.41
>>235
考えられる原因は、変数 a が String ではない
もしかして、ファイルを読み込んで、それを正規表現で判定してる?
fs.readFile() 等で取得できる data は、String じゃなくて Buffer
だから、data.toString('utf8') して String に変える必要があるよ

237:デフォルトの名無しさん
11/12/14 19:01:05.66
>>233 はマルチ臭いぞ

+ JavaScript の質問用スレッド vol.93 +
スレリンク(hp板)

68 :Name_Not_Found:2011/12/14(水) 18:01:25.16 ID:???
IEで正規表現は使えない?
matchでエラーが出るんだけど

70 :Name_Not_Found:2011/12/14(水) 18:13:30.97 ID:???
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>ServerSentEvent</title>
</head>
<body>
<script type="text/javascript">
var a = { comments: 'kom' };
var b = a.match(/[0-9a-zA-Z_]/);
document.write(b);
document.write(a);
</script>
</body>
</html>

IE9で上記のHTMLを起動するとmatchが云々言われる
URLリンク(www.dotup.org)


238:デフォルトの名無しさん
11/12/14 19:41:18.31
Rhinoとかnode.jsとかいろいろあるみたいですが、実装が違うだけで言語仕様は同じものなんですか?
基本的には同じだけどそれぞれ拡張されていて方言があるとかですか?
中身以前の質問ですみません

239:デフォルトの名無しさん
11/12/14 22:59:04.91
>>238
言語仕様があるという考えよりもブラウザごとに実装してるポイントが違うので
その最小公約数が Common.js みたいな捉え方を俺はしているが…

サーバーサイドのjsはまたちょっと違うから rhino はサーバーサイドなのか?
Javaでやるなら tomcat とか使いそうな印象があるが…ちょっと俺は知識不足で
上手く説明できないんだけど…

240:デフォルトの名無しさん
11/12/14 23:04:33.72
最大公約数: greatest common divisor
最小公倍数: least common multiple

最大公約数の間違いだな。ボケてますな駄目ですな…

241:デフォルトの名無しさん
11/12/14 23:17:41.60
どちらかといえば最小公倍数だと思うが

242:デフォルトの名無しさん
11/12/14 23:25:45.60
最大公倍数だお

243:デフォルトの名無しさん
11/12/14 23:46:58.89
function push(x){
var com = x;
return com;}
これでサーバーサイドに送り
http.createServer(function (req, res) {
if(req.method=='POST') {
var body='';
req.on('data', function (data) {
body +=data;
console.log(body);
var str = new String(qs.parse(body));
var reg = /comments=(\S*)/;
var x = str.match(reg);
console.log(x);
a = data;
});
こちらで受け取ります
console.logを見ると
comments=○○ //○○は受け取った変数
null
となります.
どうにかして○○の部分を抜き出せないでしょうか?

244:238
11/12/15 07:49:46.57
どうもありがとうございますm(_ _)m

245:デフォルトの名無しさん
11/12/15 18:15:24.58
var express = require('express');
var app = express.createServer();
app.use(express.bodyParser());
app.post('/', function(req, res){
console.log(req.body);
  var str = new String(req.body);
var reg = /{(\S*):\s'(\S*)'/;
var x = str.match(reg);
console.log(x[2]);
res.send('');
});
app.listen(3000);

上記を起動し
curl -d hoge=node URLリンク(localhost:3000)
と入力すると
console.log(x[2]);
の部分でエラーが起こります。
解決方法はないですか?


246:デフォルトの名無しさん
11/12/15 18:35:13.70
var str = new String("hoge=node");
これ実際に動かしてみろよ

247:デフォルトの名無しさん
11/12/15 21:03:22.26
>>246
URLリンク(www.dotup.org)
同じようにエラーが出ます

248:デフォルトの名無しさん
11/12/15 21:09:20.47
matchをstring以外に使ってエラーが出たとマルチポストしてた人か

249:デフォルトの名無しさん
11/12/15 21:14:43.29
このerrorさえ取り除ければなんとかなると思うんです

250:デフォルトの名無しさん
11/12/15 21:22:33.52
>>247
テメーの書いた正規表現がクソ
hoge=nodeにマッチしないからxがnullになって落ちる
あとnew String(req.body)を使うより'' + req.bodyのほうが3倍速い

251:デフォルトの名無しさん
11/12/15 21:29:36.81
Node.js のサイトがリニューアルしたな
v1 リリースも近いのかな

252:デフォルトの名無しさん
11/12/15 21:35:27.63
>>250
5行目の
console.log(req.body);
を見ると
{}hoge: 'node'}
となっているので
var reg = /{(\S*):\s'(\S*)'/;
としたのですがダメなのですか?

253:デフォルトの名無しさん
11/12/15 21:39:39.01
>>252
試しに、console.log(String(req.body)); と打ってごらん。それが答えだ

254:デフォルトの名無しさん
11/12/15 21:46:37.58
出来ました
けどObjecktと表示されてしまいますね・・・
どうにかならないでしょうか?

255:デフォルトの名無しさん
11/12/15 21:55:33.65
>>252
ああ、expressを使ってるから飛んできた時点でもうオブジェクトになってんのか
それならわざわざ文字列にして正規表現を使うまでもなく、req.body.hogeだけでいいだろ

256:デフォルトの名無しさん
11/12/15 21:57:31.92
>>254
{ hoge: 'node' } の中身、"node" の部分を取得したいのなら

console.log(req.body.hoge); // 'node'

それと、Node.js をはじめる前に、もう少し JavaScript を知ったほうがいいよ

257:デフォルトの名無しさん
11/12/15 22:02:01.13
最近流行りなのかJavaScriptをろくに知らない人がnodeをはじめる。
いいことだけどめんどくさいな。

>>250
はやいけど、newなしのString(str)のほうが見た目分かりやすいと思うが。


258:デフォルトの名無しさん
11/12/15 22:52:39.51
php使いだけどnode.jsにするとどのような恩恵があるのですか?


259:デフォルトの名無しさん
11/12/15 23:30:20.06
>>258
phpで表、node.jsで裏の作業すると捗ります。
node.jsでスクレイピングとかはやめてください。
そのうちpregや再帰が使えないとか愚痴り始めるので。

260:デフォルトの名無しさん
11/12/15 23:33:46.10
>>259さんどうもありがとうございます
リアルタイムな通信に利用はしたいと思っているのでnode.jsは使いたいのですが
phpに出来てnode.jsで実現できないようなことがなければnode.jsのみで構築する事も検討したいのです
全般的にはphpに取って代わるような使い方にはnode.jsは不向きと捉えてよいでしょうか?


261:245
11/12/16 00:11:23.51
もしかしてapp.postで受け取ったものはapp.postの外に持ち出せない?

262:デフォルトの名無しさん
11/12/16 00:12:41.53
>>260
すみません。真面目に答えますね…。
まだ発展途上なのでなんとも言えませんが、
基本的にjavascriptそのままなので、phpのような表示は得意とは言えません。
ただjsdomなどHTMLを扱うライブラリはあります。

nodeはクライアント側jsのajaxのように、イベントリスナでつなぎます。
そしてhttpサーバを介さずスクリプト(node)がhttpサーバーとして、
直接個々のリクエストに答えますので、
httpの特定のURLのアクセスをトリガとするphpとは使い勝手が全く異なります。

非同期処理であれば真価を発揮しますが、逆にそれが必要でないなら、
php+apacheなどの方が楽に構築できると思われます。


263:デフォルトの名無しさん
11/12/16 00:21:36.44
>>262
ご親切な対応ありがとうございます
リアルタイム名部分のみnode.jsに任せて
それ以外の部分はphpを使ってみます

264:デフォルトの名無しさん
11/12/16 12:57:19.46
まさか、Node.js を CGI とかそんな形で使おうとしてないよな
Node.js 上で PHP を使おうとか。出来なくはないが・・・
思い過ごしならいいけど

265:デフォルトの名無しさん
11/12/16 13:02:08.93
nodejs上でphpというnpmはあったとは思うがw

266:デフォルトの名無しさん
11/12/16 18:31:35.87
v0.6.6

267:デフォルトの名無しさん
11/12/16 19:30:13.67
ejs内にjavascriptのコードを書いてみたけど実行されない
そういうものですか?
ejsを表示させると共に文字を記入くれって表示させたいんだけど

268:デフォルトの名無しさん
11/12/16 20:23:03.15
>>261
外っていうのは、ブロックの外?
どこかわからないけど、持ち出すことは出来るはず

>>267
どんなのを書いたか教えて

269:デフォルトの名無しさん
11/12/17 12:48:05.58
【ウェブアプリケーションという不幸 】

現在、多くのプログラマ(素人)が
ウェブアプリケーションというものが
ベストな正しい方向だと勘違いしている。

ソフトウェアの作るにおいて
そのアプリケーションに応じた
状態遷移を実装するというのは
基本中の基本である。

その点においてウエブブラウザという
ある状態遷移が実装されているアプリケーションの上に
また別のアプリケーションを実装するのは
論外である。
そこまでするなら普通にアプリケーションを実装
してダウンロードして使って
もらえばいいのである。

ウェブアプリケーションとは
虚構にしか他ならない。

ウェブアプリケーションを
作ろうとしているあなた。
今すぐ普通のアプリケーション
とし設計し始めては
いかがだろう。
そうすればきっと後悔しないですむ。

270:デフォルトの名無しさん
11/12/17 12:48:33.81
HTMLやHTTPを悪者にはしていない。
TCP/IPができあがり、その応用として、ファイルを送ったりするようになった。
ファイルの中身のテキストにデータ構造をもたせ、それはつまりツリー構造なわけだが
その実装としてのハイパーテキスト、つまりHTMLという送る側と送られる側で決め事(プロトコル)
をつくり、画像や音楽など表現の幅を広げることは当然の成り行きだっただろう。
そして、その送る側としてのHTMLファイルサーバ、つまりWebサーバ、送られる側としてのプロトコルの解釈・表示系としての
ブラウザというアプリケーション。
ここまではいい。

だが、そこから先が素人の発想というか、いそがばまわれを忘れた者の愚かな発想。
つまりブラウザ上で、アプリケーションを動かすという発想なのである。

ブラウザというのは、おくられてきたステートレスな通信内容の一瞬の表示手段でしかない。
つまりアプリケーションのためのひとつのパーツなのである。
Windowsでいえば、コントロールのひとつ。(実際WebBrowserというコントロールがある。)JavaならWebClietnだ(これは、ブラウザではないが。)。

包含関係が逆なのである。
ブラウザ上にアプリケーションを作るのは愚かなブームである。


271:デフォルトの名無しさん
11/12/17 13:26:02.94
これがWEBプログラミングの出来ない者の嫉妬ってやつだ

272:デフォルトの名無しさん
11/12/17 13:27:37.76
marutiotu
スレリンク(hp板:158-159番)


273:デフォルトの名無しさん
11/12/17 13:32:27.09
>>268
<html>
<head>
<title>chat</title>
<script type="text/javascript">
var name;
function func(){
while (name == "" || name == "null"){
name = window.prompt("名前を入力してください", "");
};
document.write(name);
};
</script>
</head>
<body>
<h1>test</h1>
<%= name %><br />
<form method="POST" action="/">
func();
<input type="text" name="name" id="name"/>
<input type="submit" />
</form>
</body>
</html>

こんなのを書きました

274:デフォルトの名無しさん
11/12/17 15:09:16.77
>>273
"null" を null に

275:デフォルトの名無しさん
11/12/17 16:31:47.00
>>270
はいはい、SSH端末とブラウザは同じレイヤーのもの。
SSH端末でネットのむこうのアプリを使うように
ブラウザでも使う。あとは向こうで続きをやろうなw

276:デフォルトの名無しさん
11/12/17 16:47:43.51
↑なにこいつw

277:デフォルトの名無しさん
11/12/17 17:11:00.05
>>276
コピペ野郎の相手なんて
この程度で十分だろ

278:デフォルトの名無しさん
11/12/17 17:26:26.33
>>276
かまっちゃだめ。
ちょっとやばいからそいつ。

279:デフォルトの名無しさん
11/12/17 17:34:41.33
自演乙

280:デフォルトの名無しさん
11/12/17 17:34:43.37
>>275
キモッ

281:デフォルトの名無しさん
11/12/17 17:38:54.37
>>275
荒すなよキモイ奴

282:デフォルトの名無しさん
11/12/17 18:07:12.44
>>273
>>274 で、null の書き方を指摘したけど
それ以前に、どこにも func() を呼び出すものがない

他にもあるけど、JavaScript の質問スレに行ったほうがいい

283:デフォルトの名無しさん
11/12/17 18:25:20.88
>>282
ということはejsでもjavascriptが利用可能ってことですね

284:デフォルトの名無しさん
11/12/17 18:25:47.24
正式名称はnode.jsなの?それともNode.js?
正しくはNodeなんて書いてあるブログもあるけど、本当は何?

285:デフォルトの名無しさん
11/12/17 18:29:59.97
node.js

286:デフォルトの名無しさん
11/12/17 18:42:15.35
>>284
「そもそも "Node" なの? "Node.js" じゃないの?

当初は "Node.js" と呼ばれていましたが、
「正式名称は "Node" である。ただし曖昧さが出る場合は "Node.js" と表記しても良い」
という旨の記述が本家の Wiki にあります。」
URLリンク(blog.nodejs.jp)

287:デフォルトの名無しさん
11/12/17 18:52:03.26
チャットが作りたいのですが非同期通信のシンプルな程シンプルなサンプルみたいなのどこかにありませんか?

288:デフォルトの名無しさん
11/12/17 19:09:51.67
>>287
手軽に試すなら Socket.IO を使うといいよ
サンプルもそのサイトに書いてあるし、とても短いコード
URLリンク(socket.io)

289:デフォルトの名無しさん
11/12/17 21:08:51.07
node.jsのサンプルと言えばチャットというくらい
サンプルある
githubにも、すぐ動くのがあったし、手元の本でもテスト駆動javascriptのサンプルでチャットが載ってた

290:287
11/12/17 22:13:10.02
express+socket.ioを入れてサンプルコピペでできました


291:287
11/12/17 23:01:26.74
でもサイトを作るごとにnpmでexpressとsocket.ioを入れるのって無駄なんですが
windowsなのでnode.exeの本体が置いてある所に最初npmでexpressとsocket.ioをインストール済みなんですよ

292:デフォルトの名無しさん
11/12/18 16:12:58.02
>>285-286
レスありがとうございます。あと、遅れてすみません
曖昧さを避けるために .js をつけているんですか、知りませんでした

293:デフォルトの名無しさん
11/12/20 09:39:49.16
>>227
find . -iname xxx\*


294:デフォルトの名無しさん
11/12/21 19:13:20.74
node.jsはwebサーバソフトウェアですか?

295:デフォルトの名無しさん
11/12/21 22:44:11.51
webサーバソフトウェアってなんですか?

296:デフォルトの名無しさん
11/12/22 00:25:03.81
apacheにはWebサーバソフトウェアとあるので同じものではないのですか?

297:デフォルトの名無しさん
11/12/22 08:27:37.77
>>296
微妙だがNodeは違うと思う
apacheはソフトウェアだね

298:デフォルトの名無しさん
11/12/22 08:30:13.02
>>1が読めないのか

299:デフォルトの名無しさん
11/12/22 08:51:08.99
>>296
Web アプリケーションサーバではありません。
Apache, Nginx のような HTTP サーバ実装でもなければ、Tomcat のようなアプリケーションサーバでもありません。
Node はあくまでサーバサイドで JavaScript を動かす実行環境です。

300:デフォルトの名無しさん
11/12/22 08:52:36.67
>>298
>>1のどこに答えが書いてあるん?

301:デフォルトの名無しさん
11/12/22 08:56:40.84
>>299
そこまで言って置いてそれは無いわ。
サーバーサイドである必要すら無いんだから。

302:デフォルトの名無しさん
11/12/22 10:32:37.77
>>301
はぁ?>>299はnode.js日本サイトblogの転記だぞ?
それすら否定すんの?
それと「あくまで」サーバーサイドだから

一体どんな回答が欲しいんだよ…

303:デフォルトの名無しさん
11/12/22 10:36:55.14
>>302のURLね
URLリンク(blog.nodejs.jp)
もう、これテンプレに入れたら?

304:デフォルトの名無しさん
11/12/22 11:28:06.26
Web アプリケーションサーバでなければなんて呼べばいいんだ?

305:デフォルトの名無しさん
11/12/22 11:52:42.42
>>304
正直どうでもいいし何でもいいけど、論理的な決まりとしては
サーバーサイドでJavaScriptを動かす実行環境

node.jsでアプリを作って稼働させても根本的概念は変わらない

306:デフォルトの名無しさん
11/12/22 16:33:40.14
JavaScriptをサーバとして動かすためにのnode.jsってことでいいの?

307:デフォルトの名無しさん
11/12/22 16:34:35.24
>JavaScriptをサーバとして動かすためにのnode.jsってことでいいの?
修正
JavaScriptをサーバとして動かすためのnode.jsってことでいいの?

308:デフォルトの名無しさん
11/12/22 17:31:52.91
>>307
全然違くてワロタww

クライアントでJavaScript動かす時は基本的にブラウザ上で動くだろ?
Nodeはサーバー上で動くJavaScript

ただそれだけ
だからアプリケーションサーバーやサーバーソフトウェアじゃないのだよ

技術者ですら、これだけ理解できないのだから
営業には全く理解できないだろうなw

309:デフォルトの名無しさん
11/12/22 17:36:58.15
ここはnode.jsのことばかりだけどstandard i/o可能なjsやrhino jsの話題でもいいの?
と言ってもさしあたり話題にするようなネタはないけど

310:デフォルトの名無しさん
11/12/22 17:42:27.13
>>308
んじゃサーバはどこに行くんだよってなるぜ

311:デフォルトの名無しさん
11/12/22 17:50:51.59
node.jsは特定のサーバーからは独立した単独のスクリプティング環境。

rubyとかperlとかpythonとかと同じ。
node.jsの実体はスタンドアロンのスクリプト実行環境に過ぎないからローカルのシェルスクリプトとして使うこともcgiとして呼び出すことも可能だろう。

ただ開発の方向にしても主な用途にしてもあくまで組み込みのhttpサーバーライブラリを使ってサーバーを組み立てることを想定してるけどな。

一言でいうならnode.jsとはブラウザの中で実行されるのが普通のjavascript処理系をスタンドアロンのスクリプト実行環境にして、そこに組み込みのサーバーライブラリやローカルスクリプトとして必要なIOその他のライブラリをくっつけたもの。

312:デフォルトの名無しさん
11/12/22 18:02:01.10
あと、わからない言ってる人はハードウェアとしてのサーバーとソフトウェアとしてのサーバーの区別がついてないんじゃないかな…

313:308
11/12/22 18:10:02.19
>>310
>>311の通りだ
サーバー上で動いてる以上サーバーはどこに行くんだよ?なんて考え方はないだろ
>>308>>311をよく読め


314:デフォルトの名無しさん
11/12/22 18:49:50.06
node.jsでプロキシ経由で外部サイトにアクセスってできますか?

315:デフォルトの名無しさん
11/12/22 19:07:11.81
WSHのJScriptをウェブサーバ用途に特化させたみたいな?と思っとけばいいんすか?

316:デフォルトの名無しさん
11/12/22 20:31:18.42
>>315
それが今まででは一番近い理解かも知れない
Webサーバ用途に特化…というと微妙に誤解を招く書き方なので
サーバ機で、Webサーバソフトと共に使う用途に特化、という感じか
別にサーバソフトがなきゃ、ちょっとしたJavaScriptの動作環境でしかない

317:デフォルトの名無しさん
11/12/22 20:33:51.69
>>315
大着して言うと、そんな感じかな
クドいようだけどwebサーバーじゃなくてwebサーバー的に利用できる。って感じかな

あくまでScriptは手段とかツールに近いからアプリとは断言したくないんだろうね

318:デフォルトの名無しさん
11/12/22 20:52:20.96
ありがとう
なんとなくわかった

319:デフォルトの名無しさん
11/12/23 00:31:33.68
なんで誰もnodeをちゃんと説明できないんだ?
本当はきちんと理解してないんだろう?

サーバーサイドで動くとか、別にnodeをクライアントに
インストールすればクライアントでも動くんだから的はずれだよ。

簡単に言うとnodeっていうのは JavaScript+組み込みライブラリ だよ。

例えばブラウザに搭載されているJavaScript、これにはDOMを操作する
機能がついているが、これはJavaScriptの範囲ではないというのはわかるだろう?
つまりJavaScriptにはDOM機能が ”欠けている” と言えるわけだ。
ブラウザはその欠けているDOM機能を追加したもの。

JavaScriptには他にも機能が欠けていて、たとえばファイルの読み書き機能。
nodeはその欠けているファイル読み書きライブラリなどを追加したもの

他の言語なら単に「便利なライブラリを作りました」で終わるような話だけど
JavaScriptには他のライブラリを読み込むincludeやuseなどの文法も欠けているので
既存のJavaScriptを拡張しなければ実現不可能だった。

nodeによってJavaScriptが汎用のスクリプト言語になったわけで
ウェブサーバー等も実装することが可能になったということ。

320:デフォルトの名無しさん
11/12/23 00:34:45.73
んー
nodeはDOM APIを含んでるの?含んでないの?どっちー?

321:デフォルトの名無しさん
11/12/23 00:40:12.14
nodeにDOM APIは含んでいない。
ただし外部ライブラリを読み込む機能は付いているので
DOM APIを提供しているライブラリもあるかもしれない。

それはPerlにDOM APIは含まれていないが、
CPANモジュールを使ってHTML Parserなどで
DOMを操作できるのと同じ事。

322:デフォルトの名無しさん
11/12/23 00:51:50.85
> JavaScript+組み込みライブラリ
これもちょっと俺には定義としてはピンとこない説明だなあ
JavaScriptというのはただの言語で、インタプリタかVMかJITかといった詳細は
ともかくとして、JavaScriptで書かれたプログラムを動かすためには
何らかの実行環境(ホスト)がいる
Perl言語で言ったらperlコマンド(あるいはperl.exe)だな
JavaScriptの場合それがWebブラウザであったりWSHだったりするんだが、
node.jsもその一種、つまりJavaScriptの実行環境の一種に過ぎない

JavaScript実行環境としてのnode.jsの特徴は、google chromeで使われている
V8エンジンを使っていて高速であることと、おもに並列処理に特化したサーバ向きの
ランタイム(ライブラリ)実装を持っていること
V8を実装しているのはgoogleだから、node.jsの主成分はランタイムの部分という
ことになる
「サーバ向き」なだけで、サーバにしか使えないかといえば、別にそういうことはない

323:デフォルトの名無しさん
11/12/23 00:56:45.27
V8はコマンドラインから実行できる。

324:デフォルトの名無しさん
11/12/23 01:02:34.01
linuxで使いたいですがどうすればいいんですか?

325:デフォルトの名無しさん
11/12/23 01:45:23.48
サーバーサイドという字面に振り回されすぎじゃないのかな。

サーバーサイドの○○というのは、今までクライアント(ブラウザ)でしか使えなかったものをサーバーコンピュータ上でも使えるようにしたよという以上の意味は無い。

現代のサーバーコンピュータの多くはwindowsやunix系OSで構成されている。そしてwindows上で実行可能なものは何であれwindowsを使ったサーバーコンピュータ上で実行可能だし、unix系OSもまた然り。(環境依存のものは除く)

現実的には「サーバーサイド○○」というのは、サーバーコンピュータで使用されているところのwindowsなりunixOS上で(サーバープログラムと連携可能な何らかの形式で)実行可能な○○というのと同義と考えていい。

<<324
nodeのソースコードをダウンロードしてmakeするか、nave等の管理コマンドをダウンロードして実行する。やり方はググれ。

326:デフォルトの名無しさん
11/12/23 01:47:17.91
>>325
アンカーミスった。
>>324 な。


327:デフォルトの名無しさん
11/12/23 02:02:06.54
えー!
node.jsはlinuxじゃ使えないんですか!!
面倒なのは大っ嫌いなので諦めます

328:デフォルトの名無しさん
11/12/23 02:10:44.61
そんな頭でLinuxを使うほうが面倒だと思うんだ

329:デフォルトの名無しさん
11/12/23 02:32:29.12
多分ubuntu入れてるんだろうな

330:デフォルトの名無しさん
11/12/23 02:36:54.44
元々の質問は>>296だし、何でクライアントの話に持っていくんだよ…
クライアントでNodeやる云々はそもそもスレタイ的にスレ違い
Nodeの説明としてはいいと思うけど

331:デフォルトの名無しさん
11/12/23 03:08:19.34
>>296 の質問には多分「違う」と答えるのが適切と思われる。

webサーバーソフトウェアという言葉でどんなものをイメージしているのかは知らないが、おそらく一式をダウンロードして設定を行なって起動すればその時点で完全なwebサーバーとして動作するもののことを言っているのだろう。

何度も言われている通りnodeはあくまでスクリプト(プログラミング言語)実行環境でしかない。
言うなれば「webサーバーソフトウェア」そのものをjavascriptで作るためのもの。

332:デフォルトの名無しさん
11/12/23 03:22:30.42
C#と.Netの関係に似てるかもしれない

333:デフォルトの名無しさん
11/12/23 03:47:08.66
>>314 出来ない

334:デフォルトの名無しさん
11/12/23 04:16:08.58
>>321
外部ライブラリとしてjsdomがあるね。
一部でネイティブライブラリを使ってる。

335:デフォルトの名無しさん
11/12/23 07:26:53.49
webでのクライアントとサーバーと、
osでのクライアントとサーバーがごっちゃになってると思われる。
node.jsに出来ることは、webでのクライアント(ブラウザ内で使われるjavascript)の実行環境にはならず、サーバー(httpサーバー)としての機能を有してる。
osではクライアントもサーバーどっちでもいける。
(例えば、通信を伴わない簡単なファイル変換ソフトとかも書けるし、
ソケットレベルでの操作で汎用サーバーアプリにもなりうる。
他にもシェルスクリプト代わりとしても使える。)

一般的な使い方はhttpサーバーとしてなので、まずはそこから始められたし。

336:デフォルトの名無しさん
11/12/23 08:03:23.81
つまらん用語の事で伸びてた。

337:デフォルトの名無しさん
11/12/23 13:04:41.23
>>333
node.jsはプロキシ経由での外部サイトのアクセスは出来ないのですか。残念です。

338:デフォルトの名無しさん
11/12/23 13:37:29.62
>>335のような奴らは無駄に話が長いだけで中身がない。くだらないことを長々と

>>334
jsdomでjqueryを使ったり出来るから便利だよね

>>337
俺はわからんが>>335みたいな奴ならわかんじゃね?w
rubyやphpでさえ出来るからな

339:デフォルトの名無しさん
11/12/23 13:45:37.87
↑何しにきたの?おまえw

340:デフォルトの名無しさん
11/12/23 14:12:03.04
何だか議論をしているところをぶった切り申し訳ないんだけど、
process.nextTick() の使い道がよくわからないです。

341:デフォルトの名無しさん
11/12/23 14:31:29.52
setTimeout(f,0)
みたいにするぐらいならそれつかえって書いてあったぞ


342:デフォルトの名無しさん
11/12/23 15:03:39.69
>>341
そう書いてありますね。
気になったのは、setTimeout(fn, 0, arg)でargを渡せるけど、process.nextTick(fn, arg)とは出来ないことです。

343:デフォルトの名無しさん
11/12/23 15:18:12.92
>>342
setTimeoutでもそうだけどargの必要性あんの?
setTimeout(function () {
fn.apply(this,[arg])
},0);
ってすりゃほぼ同じ意味なのに

344:デフォルトの名無しさん
11/12/23 15:31:37.97
setTimeout(function () {
 fn(arg)
},0);

これでいいだろ

345:デフォルトの名無しさん
11/12/23 15:52:46.88
>>343
0点。

346:デフォルトの名無しさん
11/12/23 15:59:51.23
>>345
お前の評価なんざ求めてねぇw

347:デフォルトの名無しさん
11/12/23 16:11:08.79
>>343,344
function (i) {
setTimeout(arguments.callee, delay, ++i);
}
わたしは、こういう書き方することがあるので、第3引数があると便利に思える

348:デフォルトの名無しさん
11/12/23 16:16:32.22
>>346
this の値が意図しない値になってるだろ。

>>347
arguments.callee は非推奨になるから。
関数本体からのみ参照できる名前を付けて代替した方がいい。

349:デフォルトの名無しさん
11/12/23 16:27:34.55
>>338-339の流れにワロタww


350:デフォルトの名無しさん
11/12/23 16:31:26.93
>>348
thisはグローバルオブジェクトだろ。

351:デフォルトの名無しさん
11/12/23 16:57:40.05
っていうか 第3引数があれば、どこかから渡されてきた謎のfunctionをそのままsetTimeoutできるじゃん。

352:デフォルトの名無しさん
11/12/23 17:13:56.46
第3引数をセット出来る時点で渡す値は解ってるんだから
別に第3引数が無くて困る事は無いだろ
>>347の事例だってクロージャ使えば値の束縛は可能なんだし

>>348
>this の値が意図しない値になってるだろ。
意味わからん。一般的な使い方だとどちらもグローバルオブジェクトだろ
StrictModeの時は確かfunction内がglobalじゃなくなったと思うが
その時の話しをしてるの?
まぁどちらにせよsetTimeoutから呼び出される関数の
this値をセットしてるんだから結果は一緒だろうけど

353:デフォルトの名無しさん
11/12/23 17:18:44.29
そんなにそんなに焦るなってよw

354:デフォルトの名無しさん
11/12/23 18:37:53.70
>>352
だからsetTimeoutする時にいちいちその場でクロージャを生成しなくてもいいように第三引数があるんじゃないの?
クロージャを無駄に生成せずにすめばそれだけプログラムのネストも浅くなるし、多段のコールバックも書きやすくなるんじゃない?

355:デフォルトの名無しさん
11/12/23 18:42:22.22
setTimeoutに第三引数など無い。

356:デフォルトの名無しさん
11/12/23 19:09:42.19
荒れてんな

357:デフォルトの名無しさん
11/12/23 19:12:04.67
arguments.calleeなくなるの?

358:デフォルトの名無しさん
11/12/23 19:17:06.62
なくなりますん

359:デフォルトの名無しさん
11/12/23 19:18:40.72
>>354
それは確かにそうだが話しの元は>>342であって
第3引数を設定できない事が気になるような材料でもないだろって事だよ

>>355
HTML5からはちゃんと仕様としても定義されてるし
NodeのsetTimeoutに関してはちゃんと定義されてるぞ

360:デフォルトの名無しさん
11/12/23 19:41:36.74
何気なく質問しただけで、こんなことに・・・

361:デフォルトの名無しさん
11/12/24 11:38:34.08
何気なく質問するだけで物凄い勢いを増す
スルーされるより全然いいでしょw
みんな注目してるんだなぁ

362:デフォルトの名無しさん
11/12/24 11:48:39.39
Node製のサイトはまだまだ少ないけど、それなりには注目されてるんだな

ホスティングサービスはどこ使ってる?
それとも自分でサーバ用意してる?

363:デフォルトの名無しさん
11/12/24 11:50:58.05
これってサーバーサイドをJavaScriptで書くってことは
今までのウェブアプリ全部作り直しってことだよね?

364:デフォルトの名無しさん
11/12/24 11:51:21.22
本でサンプルを入力してるんだけど
require.paths というのはもう使われてない
NODE_PATH でって言われて
NODE_PATH ='honya/lib','honya/deps';
ってやってるんだけどlibにおいてるクラスがみつからないって言われてしまう
v0.6.6とv0.4.7でやってみました
パスの指定がなにか間違ってるんでしょうか?


365:デフォルトの名無しさん
11/12/24 12:00:22.50
>>363
PythonからRubyに切り替える時だって当然全部書き直しだろ。
何をアタリマエのことを。

366:デフォルトの名無しさん
11/12/24 12:01:36.77
なぜ全てのウェブアプリをnode.jsで書き直すの?node.jsが向いているものとそうでないものとがあるから
向いていないものまでnode.jsを採用する必要はなくなくない?

367:デフォルトの名無しさん
11/12/24 12:03:39.88
>>366
> なぜ全てのウェブアプリをnode.jsで書き直すの?
誰がそう言ったの?

> 向いていないものまでnode.jsを採用する必要はなくなくない?
そうだね。

368:デフォルトの名無しさん
11/12/24 12:04:12.38
前の仕様は次には跡形も無くなっているくらいで
まだ本を買うには時期が早過ぎじゃないかと

公式か日本ユーザグループのとこのドキュメントを読むといいよ



369:デフォルトの名無しさん
11/12/24 12:05:26.01
プログラミング本なんてまだ買ってる人いるんだw
1ヶ月でコロッと何もかも変わってしまうことがあるこの分野でw

370:デフォルトの名無しさん
11/12/24 12:06:28.01
node本ってまだ出てなかったと思うが
多分一部取り上げられている記事とかパーフェクトJavaScriptあたりだろう


371:デフォルトの名無しさん
11/12/24 12:10:46.26
>>367
> 誰がそう言ったの?
>>363をそう解釈したっす
そういう意味ではなかったんすね
ごめん

372:デフォルトの名無しさん
11/12/24 12:11:31.58
オライリーが出してたな。
公式が全文公開してるけど、内容は確か0.4あたりだったはず。

373:デフォルトの名無しさん
11/12/24 12:13:21.60
読んでるのはテスト駆動JAVASCRIPTです
たまたま手元にあってサーバサイドのところは読み飛ばしてたんで今読み直してたんです

374:デフォルトの名無しさん
11/12/24 12:16:39.19
>>367
>誰が言ったの?
>>363
>今までのウェブアプリ「全部」
おもっくそ自分で全部って言ってるじゃんw

375:デフォルトの名無しさん
11/12/24 12:26:04.55
363が本当はどういう意味なのか、それは363にしかわからない

376:デフォルトの名無しさん
11/12/24 12:41:02.72
普通に推察すれば今まで自分たちで継続的に開発してきたWEBアプリがあって、
そのWEBアプリをnode.jsで運用するように移行した場合に、
今まで自分たちで作ってきたWEBアプリを全部javascriptで書きなおすのか、
という意味に捉えられると思うよ。

既存の世界中の全てのWEBアプリをnode.js用に書きなおすなんて不毛なことは誰も考えないでしょ。

377:デフォルトの名無しさん
11/12/24 12:51:37.47
自分で作った個々のウェブアプリも、別に全部移植しないといけないわけでもないと思うけど。

378:デフォルトの名無しさん
11/12/24 13:04:03.16
でもさ、なんかの処理をあとから
node.js使いたいってことになったら、
その処理書きなおすんでしょ?

379:デフォルトの名無しさん
11/12/24 13:13:53.04
_人人人人人人人人人_
>わりとどうでもいい<
 ̄YYYYYYYYY ̄

   ヘ(^o^)ヘ
     |∧
     /

380:デフォルトの名無しさん
11/12/24 13:16:22.10
「今までの」「全部」だから「ウェブアプリ」はひとつじゃなく複数を指していると読めるんだよね
で、その作ってきた複数ある個別のウェブアプリをそれぞれ全部作り直ししないといけないのか、って聞いてるように読めるんだよね

381:デフォルトの名無しさん
11/12/24 13:23:48.55
ここまで rhino の話題は無し

382:デフォルトの名無しさん
11/12/24 13:45:19.78
ライノいらないの

383:デフォルトの名無しさん
11/12/24 13:54:04.66
処理の一部を外部化するのにたまに使ってるよ

384:デフォルトの名無しさん
11/12/24 14:07:20.70
ルビー(高速なのでたまに使ってますが)から転向して、ライノはある程度把握しましたが、ライノの細かい挙動このとまでは必要ないので今のところライノ・ネタはありません。

385:デフォルトの名無しさん
11/12/24 14:49:14.36
rhino は2回使っただけで
使うのが嫌になりました。



なぜでしょう?

386:デフォルトの名無しさん
11/12/24 15:06:16.99
>>385
それなぞなぞ?答えは>>382かな

387:デフォルトの名無しさん
11/12/24 15:19:44.96
>>386
ハズレ。ヒント2回

388:デフォルトの名無しさん
11/12/24 15:43:01.57
>>387
Rhino 使ったことない。
俺には、全然わかららいの orz

389:デフォルトの名無しさん
11/12/24 16:32:05.26
>>385
そんなの知ならいの

390:デフォルトの名無しさん
11/12/24 22:52:36.93
>>329
ubuntuはLeeさんだっけかryanさんだったかなのppaで入れても
0.6.3なのだ。素の状態だと0.4.3なんだ…

まぁ10-15分くらい掛ければgitからソース取ってきて
じぶんでビルドできないこともないけど

ほかの鳥はのことはよくしらないの

391:デフォルトの名無しさん
11/12/24 23:10:38.31
ジャバも普通に使えるのでライノでやります
次期ライノ(多分1.8R)はnode.jsも含まれるって聞いたのでさしあたりライノのままで問題も生じません

392:385
11/12/24 23:17:03.17
降参?

393:デフォルトの名無しさん
11/12/25 00:07:03.47
>>390
chris-leaのPPAだな
けどそれらを使うよりnvm等を使った方が良いと思うよ



394:デフォルトの名無しさん
11/12/25 08:50:02.35
>>364
勘違いしてるみたいだけど
NODE_PATH は JS ファイルに書くわけじゃないよ

395:デフォルトの名無しさん
11/12/25 16:58:36.56
var sys = require('sys');
var http = require('http');
var server = http.createServer(
function (request, response) {
response.writeHead(200, {'Content-Type': 'text/plain'});
response.write('Hello World!!\n');
response.end();
}
).listen(8124);
sys.log('Server running at URLリンク(127.0.0.1:8124)');

5行目の「response.writeHead(200, {'Content-Type': 'text/plain'});」
この中の200ってどういう意味があるの?
教えてください

396:デフォルトの名無しさん
11/12/25 17:01:43.70
HTTPステータスコードでは

397:デフォルトの名無しさん
11/12/25 17:06:40.22
>>396
ありがとうございます

398:デフォルトの名無しさん
11/12/25 19:55:18.39
データの保存はkvs?だとかNoSQL的なものがnode.jsにはお似合いなんすか?RDBMSやファイルIOは駄目すか?

399:デフォルトの名無しさん
11/12/26 08:17:03.16
>>398
ダメじゃないが、RDBよりドキュメント志向DBのが遥かに相性がいい
(処理に掛かる時間が圧倒的に違う)
nodeを新規でやるならKVSのがいい
既存DBがRDBでDB再構築がダルければRDBで良いかと

ファイルI/Oでも全然問題なく使える

400:デフォルトの名無しさん
11/12/26 12:13:22.41
どうもありがとう
ファイルIOにしようかなと思ってたけどドキュメント志向型DBはそんなに速いんすか
kvsとは違うっぽいけどMongoDBってのが流行ってるみたいなのでそれ試してみます

401:デフォルトの名無しさん
11/12/27 04:49:59.33
socket.ioのサンプルをいろいろ探してたらexampleディレクトリにもとからはいっていたでござる


402:デフォルトの名無しさん
11/12/27 12:18:11.96
URLリンク(gihyo.jp)
こんな記事でると日本でのmongo利用は極端に減るんだろうなぁ・・・


403:デフォルトの名無しさん
11/12/27 12:34:54.83
記事は新しいけど内容が数年前のものだのー


404:デフォルトの名無しさん
11/12/27 12:45:54.22
pestbinに貼られたのは2011年11月みたいだけど


405:デフォルトの名無しさん
11/12/27 16:59:52.79
どうして「Web Framework: Express」や「Web Sockets: Socket.IO」みたいな機能はデフォで提供されていないの?

406:デフォルトの名無しさん
11/12/27 18:30:52.03
CAも提供してるサービスでデータが飛んだとかあったな
やっぱ規模(データ量)が大きい(多い)とヤバいってのはマジなんだな
まぁ今更SQL文書くのも怠いけどw
Mongoの仕様上防げない気がする
Mongoがこれ以上逝ったら日本では間違いなくNodeは流行らない要因になるな

407:デフォルトの名無しさん
11/12/27 18:47:10.81
>>405
どうしてJavaScriptは、jQueryがデフォで提供されていないの?と似た感じだな

408:デフォルトの名無しさん
11/12/27 19:05:48.80
>>407
ああ、ごめんなさい
サードパーティ製モジュールはnode.jsコアの機能を組み合わせて書かれているんですね
別の言語で書かれたバイナリファイルも含んでいるのかと思ってました

409:デフォルトの名無しさん
11/12/29 02:11:51.17
例えば、コードに debugger を入れたときだけログ出力することは出来ますか?

410:デフォルトの名無しさん
11/12/29 11:40:02.19
質問がよくわからないんだぜ

411:409
11/12/29 14:29:50.62
>>410
debugger;
if (...) {
console.log('#debug');
}
console.log('Hello, world!');

debuggerが、あるときだけ"#debug"を出力するようなことです。出来ますか?

412:デフォルトの名無しさん
11/12/29 15:08:31.53
649 デフォルトの名無しさん [sage] 2011/12/29(木) 14:50:37.28 ID: Be:
学生プログラマ日本一決定戦(予選は社会人も参加可)
URLリンク(codevs.jp)
現在予選開催中
応募締切 2012.1.6 12:00

おもしろいことやっているじゃん。誰か今から参加しろよ。

413:デフォルトの名無しさん
12/01/03 00:52:30.05
52 :Name_Not_Found [↓] :2012/01/02(月) 14:08:53.32 ID:???
マジこのペースでどんどんAPIが増えてったら
仮にブラウザ間の仕様さが0になっても
覚えて使いこなしきれるかは微妙

そういえばWEBGLって結局どうなるの?
もう他の対抗APIとかは金輪際でなくて
WEBGL一本でしばらくいくことは決まったの?
それなら覚えるんだけど
53 :Name_Not_Found [↓] :2012/01/02(月) 14:42:42.41 ID:???
そこでライブラリの乱立ですよ。
そしてライブラリの使い方しか知らない人間が量産されていく…
54+1 :Name_Not_Found [↓] :2012/01/02(月) 14:47:21.67 ID:???
ライブラリ使う人が困るんならまあそれは仕方ないと思うけど
5年後くらいに昔のJavaScriptはわかりやすくてよかった
今はライブラリ覚えないとやっていけないってなりそうで怖いわー
55+1 :Name_Not_Found [↓] :2012/01/02(月) 16:37:49.89 ID:???
>>49
spanだと戻すとき大変だから、適当なタグ名にするのがいいんじゃないかな。
document.links[0].outerHTML = document.links[0].outerHTML.replace(/^<[aA]/, '<aback').replace(/<\/[aA]>$/, '</aback');
こんな感じかな
56 :Name_Not_Found [↓] :2012/01/02(月) 16:47:14.55 ID:???
>>54
結局、同じロジックを何度も書くことに疲れ果てライブラリに辿り着き、皆が同じ様なコードを書く。
これはどの言語でも共通の進化の過程。

しかし、最初からライブラリに頼ってきた小わっぱ達とは地力が違う為、コーディングの姿勢に漂う大人の余裕。
いざ困難に直面しても、涙目の小わっぱを尻目に多彩なテクニックを駆使して解決策を導く職人技。
そして仕様を知り尽くした上で完璧なチューニングを施し、パフォーマンスで他を圧倒するダンディズム。

このスレの回答者なら様々な面で格の違いが滲み出る。
ただし、>>55 は精進が必要な様だが。

414:デフォルトの名無しさん
12/01/03 00:55:07.60
>>398
現状のnode.jsに適してるのは、ハイパフォーマンスが要求されて
かつシンプルなアプリケーションやAPI(かつCPUバウンドでない)だから、
結果的にKVSの方が目的に合う可能性が高い。

個人的にはnode + mysql handlersocketとかは、結構期待してるんだけど、
人柱様達に任せたい。

サーバサイドもクライアントサイドもjsで書けるようになる
事によるメリットを活かして、何でもnodeで書けばいいじゃん、
に至るには現状のシングルループ指向からの転換を経る必要があると思う。


415:デフォルトの名無しさん
12/01/03 01:02:09.04
それは、javaとか.netでしょ普通

416:デフォルトの名無しさん
12/01/03 01:14:41.51
>>415
マルチプロセスはclusterとかで既に出来るけど、
CPUバウンドかIOバウンドかバランス考えながらコード書くのはめんどいのよ。
接続数の数だけループ回す必要は無いとは思うけど。
じゃあどういう単位で、というと更にあれだけど。


417:デフォルトの名無しさん
12/01/03 01:56:48.39
外部の計算環境も考慮することつまり The Networking is the Computing. を掲げるならそうかもね。

418:デフォルトの名無しさん
12/01/03 11:49:55.06
これからプログラミング勉強しようと思うのですが
phpだったらJavaScriptの方が勉強したほうがいいですか?

419:デフォルトの名無しさん
12/01/03 13:46:26.20
単純に勉強するだけならPHPちょっとやってサーバサイドの仕組みを覚えてからjavascript
仕事でやるならPHPしっかりやって合間にjavascript

420:デフォルトの名無しさん
12/01/03 21:33:28.60
SPAだとAPIの集合みたいにアプリ書けるけど、SEO考えるとねぇ

421:デフォルトの名無しさん
12/01/06 16:06:17.55
os.networkInterfaces() って,
node.exe だと動かなくね?

422:デフォルトの名無しさん
12/01/06 18:07:27.98
>>421
いま手元にWindowsないから確認できないけど、それNode 0.6?0.4にはないから動かないよ
良かったらOSのバージョン教えて

423:421
12/01/06 18:30:56.20
>>422
OS は Windows 7 Ultimate 32bit SP1
node.exe が v0.6.6

var os = require('os');
console.log(os.networkInterfaces());

を実行し,結果は

{}

が表示されるだけ.直後の ipconfig は次の通り

Wireless LAN adapter ワイヤレス ネットワーク接続:
リンクローカル IPv6 アドレス. . . . : fe80::1c55:5be6:42a6:e86c%11
IPv4 アドレス . . . . . . . . . . : 192.168.3.4
サブネット マスク . . . . . . . . : 255.255.255.0
デフォルト ゲートウェイ . . . . . : 192.168.3.1

イーサネット アダプター ローカル エリア接続:
メディアの状態. . . . . . . . . . : メディアは接続されていません

Tunnel adapter isatap.{96146F13-15AE-4A58-8112-E19230F1EB95}:
メディアの状態. . . . . . . . . . : メディアは接続されていません

Tunnel adapter Teredo Tunneling Pseudo-Interface:
IPv6 アドレス . . . . . . . . . . . : 2001:0:4137:9e76:4a1:85a:2431:7504
リンクローカル IPv6 アドレス. . . . : fe80::4a1:85a:2431:7504%14
デフォルト ゲートウェイ . . . . . : ::

Tunnel adapter isatap.{28E9F6EE-080F-4498-8C64-120C589B0F49}:
メディアの状態. . . . . . . . . . : メディアは接続されていません

424:デフォルトの名無しさん
12/01/06 19:16:12.54
>>423
Windows XP、7 で試したら空のオブジェクトが返ってきた
getNetworkInterfaces()も試したけど「networkInterface()使え」って怒られて、同じように空のオブジェクトが返ってきた
まだ未対応なのかも

425:421
12/01/06 20:13:14.22
なるほど,俺だけじゃないんだな
情報㌧

426:デフォルトの名無しさん
12/01/07 07:32:24.10
apacheより沢山のアクセスを捌く事が得意と記事見たんだけど、
DoS攻撃にも強いって事?
開発コスト的な事を置いておくとしたら、
可能ならapacheよりnode.js使った方が良いって事?

427:デフォルトの名無しさん
12/01/08 20:42:41.46
>>426
Webサーバとしてのパフォーマンス比較ならnginxでええよ。

DoS対策はまた別の話で、
Apacheでもnginxでもnodeでも別途必要だと思うけどね。

428:デフォルトの名無しさん
12/01/08 23:29:37.54
javascriptでcgiしたいんだけどおとなしく別の言語にしたほうがいいのか?

429:デフォルトの名無しさん
12/01/09 02:23:19.54
>>428
初学者で無駄な苦労したくないなら、まだPHPとかRubyがいいよ。
nodeはまだまだバージョンアップ激しいし。

430:デフォルトの名無しさん
12/01/09 16:17:14.23
>>429
ありがとう
fx拡張ちょくちょく作るくらいにはjs知ってるけど、rubyとかは見た目キモくて触った程度しかない
c++も11で使いやすい感じになってきたので他の言語も色々試しつつ決めようかな

431:デフォルトの名無しさん
12/01/09 16:49:25.07
さぁみんなぁ~~~~俺のメタ言語に進化した散文詩をきいてくれたまえぇ~~
URLリンク(detail.chiebukuro.yahoo.co.jp)


432:デフォルトの名無しさん
12/01/09 18:43:58.51
>>430
なんでC++が出てくるの。

433:デフォルトの名無しさん
12/01/09 19:36:30.38
>>432
動的か静的かなんて関係なく、自分が使いやすい言語を使うだけなんで
いろんな言語触るの楽しいしね

434:デフォルトの名無しさん
12/01/09 22:50:47.44
>>430
js自体の経験がそれなりにあって、
英語の情報読むのも苦にならなければ、
nodeから始めるのもありかもね。

それでも環境として枯れてないから、
どちらかといえば生PHPで小物書いたり、
RubyでRailsとかのが、
楽にサーバサイドプログラミングを学べるとは思う。

学習曲線と仕事での需要を無視出来るなら、
どの言語で何を初めても無問題。


435:デフォルトの名無しさん
12/01/10 00:37:57.41
そうするとnode.js触ってる人は、一体何に使ってるの?

436:デフォルトの名無しさん
12/01/10 02:13:42.76
俺は WebSocket を使ってみたくて いろいろ調べてたら
Node に行き着いた

socket.io 最高です^^

437:デフォルトの名無しさん
12/01/10 04:22:16.14
>>435

>>414
>>436
もしくは、乗るしかない、このビッグウェーブに

438:デフォルトの名無しさん
12/01/10 04:24:20.73
現状、実務レベルで使ってるのは一部の先進的なソーシャルアプリ系企業とか、
それぐらいじゃないかね。

439:デフォルトの名無しさん
12/01/10 09:03:34.19
うちもOKもらって使ってる。ソーシャルアプリ全く関係ないけどw

440:デフォルトの名無しさん
12/01/10 09:35:24.58
俺は単にブラウザ外でjs使いたいがために使ってるな

441:デフォルトの名無しさん
12/01/11 01:06:37.13
ブラウザ外で使うのなら、wscript.exeでいいのでは?
もちろんJavaScript(JScript)が使える。

442:デフォルトの名無しさん
12/01/11 01:46:26.42
皆がWin使ってるわけでもあるまい

443:デフォルトの名無しさん
12/01/11 02:12:36.29
すべてのJavaScriptが同じだと思うなよ

444:デフォルトの名無しさん
12/01/11 08:09:36.00
>>441
JscriptはJavaScriptではないだろ

445:デフォルトの名無しさん
12/01/11 09:06:32.24
>>441
俺Macだし、npmも使いたいんだよ

446:デフォルトの名無しさん
12/01/12 00:30:54.36
>>444
どっちも同じECMAScriptだよ

447:デフォルトの名無しさん
12/01/13 19:26:48.98
node-mysqlなんかでssl接続するにはどうしたらいいのだ?
他のライブラリ見ても出来ないしもしかして本格的にNode.jsでmysqlを使ってる人ってすくないのだろうか?

448:デフォルトの名無しさん
12/01/13 23:52:05.30
libmysqlでも用意している機能が、パラメータで指定して使えないのか。
sslってwebサーバーのssl専用ポートならコマンドラインでは、
URLリンク(www.atmarkit.co.jp)
URLリンク(co-akuma.directorz.jp)
こんな感じで通せる。
mysqlサーバーがネゴシエーションの一番はじめで判別しているなら、
アドホックに対応できるだろうが、仕様は分からない。

449:デフォルトの名無しさん
12/01/14 00:50:00.14
mysql client の c api使ってるので、そのまま定数使えるみたいだよ。

URLリンク(github.com)
var flags = Client.defaultFlags |constants.CLIENT_SSL;

URLリンク(github.com)
var client = mysql.createClient({ user: 'root', password: 'root', flags: flags, });


450:デフォルトの名無しさん
12/01/14 03:57:16.78
と言う事はflagsを指定してCAなんかのファイルはmy.cnfに設定すればいけるんかなー
とりあえずそんな感じでやってみるです
サンクス!


451:デフォルトの名無しさん
12/01/17 20:26:44.30
node0.7からマルチスレッドでマルチループが出来る、
isolatesが使えるようになったぞ。

452:デフォルトの名無しさん
12/01/17 21:23:20.35
[nodejs] Node v0.7.0
URLリンク(groups.google.com)
2012.01.16, Version 0.7.0 (unstable)
* Upgrade V8 to 3.8.6
* Use GYP build system on unix (Ben Noordhuis)
* Experimenetal isolates support (Ben Noordhuis)
* Improvements to Cluster API (Andreas Madsen)
* Use isolates for internal debugger (Fedor Indutny)

453:デフォルトの名無しさん
12/01/17 21:32:55.40
>>452
おお、WAFじゃなくてGYPになったのか

454:デフォルトの名無しさん
12/01/18 00:19:53.69
ビルドにPythonいらなくなるのか、
と思ったけどGYPもPython製だったでござるの巻。

455:デフォルトの名無しさん
12/01/21 18:22:38.12
node.jsの分割って出来ますか?
うまく説明できないのですが、例えば、サイトにチャットやゲームを追加したいときに
PHPだとchat.phpやgame.phpを作ってアップロードすればいいだけですが
node.jsでも後からchat.jsとgame.jsをアップロードするだけで反映させることって出来ますか?

456:デフォルトの名無しさん
12/01/21 21:35:04.42
>>455
一応可能といえば可能。
ただPHPと違ってnodeの場合実行する必要がある。

やるとすればnodeで特定ディレクトリ以下を監視しておいて
変更があればよみに行ってアップされた物を実行するだけ。


457:455
12/01/21 22:23:18.95
>>455の続きです
リクエストを受け取ってレスポンスを返すだけのindex.jsがあります
現状だと、下記の処理を行う際に③のファイルのプログラムを実行させられなくて
追加したいプログラムをindex.jsに書き足しています
①リクエストを受ける
②該当するファイルを呼び出す
③ファイルがnode.jsならファイル内のプログラムを実行 <= この部分を何とかしたい
④結果をレスポンスで返す

458:デフォルトの名無しさん
12/01/21 23:11:24.46
cgiとして呼び出すとか

459:デフォルトの名無しさん
12/01/22 03:41:03.90
node.jsよく知らんが不便なんだな

460:デフォルトの名無しさん
12/01/22 04:59:01.74
javascriptだ死ね

461:デフォルトの名無しさん
12/01/22 19:01:13.32
>>390
ppaに0.6.8来てたわはー
しかしバックポート何だそれ旨いのタコスなのみたいなかんじでワロタ…


ワロタ…

462:デフォルトの名無しさん
12/01/23 01:17:49.28
Node.jsってhashdosに対する防御法ってあるの?


463:デフォルトの名無しさん
12/01/23 08:21:08.70
V8は対策済みじゃなかったっけ?

464:デフォルトの名無しさん
12/01/23 09:12:08.87
URLリンク(blog.nodejs.org)

2012.01.19, Version 0.6.8 (stable)

・ Numeric key hash collision fix for V8 (Erik Corry, Fedor Indutny)

465:デフォルトの名無しさん
12/01/23 09:15:13.64
昨年末に対策してたんじゃなかったかな。
だから年明けリリースの0.6.7あたりからが対策済みだったりするのかも
(どこから対策済みかわからん)


466:デフォルトの名無しさん
12/01/23 09:16:33.85
更新しておけばよかったorz

467:デフォルトの名無しさん
12/01/25 00:14:42.06
>>457
express前提で。
urlとのマッピングまではやってないけど、
適当にもにょれば適当になる。
-----
/routes/boardIndex.js
-----
exports.boardIndex = function(req, res, next){
//hogehoge
}
-----
app.js
-----
var fs = require('fs');
var routes = fs.readdirSync('./routes/');
var routesToken;

for (var i = 0; i < routes.length; i ++) {
routesToken = routes[i].split('.');
exports[routesToken[0]] = require('./routes/' + routes[i])[routesToken[0]];
}

app.get('/:boardUrlName([a-z]+)/', route.boardIndex);
-----
で/routes/boardIndex.jsが呼ばれる的な。

468:デフォルトの名無しさん
12/01/29 02:03:48.28
あと本番環境では普通動かさないだろうけど、
ファイル更新を検知して自動でサーバ再起動してくれるツールもある。

npm install superviser

して

superviser app.js


469:デフォルトの名無しさん
12/01/30 06:30:50.75
>>461, >>464
ppa 0.6.9-2 に更新確認。一週間でマイナーバージョンが1
上がって行ってるかんじだな…

470:デフォルトの名無しさん
12/01/30 07:49:13.21
V8がDartに対応したら、nodeもDartで書けるようになるのかな?

471:デフォルトの名無しさん
12/01/30 10:30:34.58
V8はJavaScript実行エンジンなんだから、Dart用の実行エンジンが別にChromeに載るのでは

472:デフォルトの名無しさん
12/01/30 15:29:23.37
Dartコンパイルして突っ込んでみたけど
バックエンドでV8使ってたよ
結局V8方言ってことじゃないのかな、型付きの

473:デフォルトの名無しさん
12/01/30 18:19:12.08
node.jsをC++に翻訳して動かしたらもっと早くなるの?
そういうの無理なん?

474:デフォルトの名無しさん
12/01/30 18:20:25.02
よく考えたらv8使ってるんだから
元のコードはC++で書かれててjs側で呼び出してるってことか?
そこまで単純じゃない?v8自体のエンジンもカスタマイズしてるのかな?

475:デフォルトの名無しさん
12/01/30 20:35:34.50
基本はそんな感じ
まぁソースは公開されてるから読んでこれば良い

v8のカスタマイズは普通せんだろ
カスタマイズしたらv8のアプデ時にめんどくさい事になる


476:デフォルトの名無しさん
12/01/30 22:43:46.08
極端な例、素数判定にエラトステネスの篩をJSで書いてたとして
そこをC++で置き換えて返すと書くと約10倍速くなる
でもnodeなんて使ってる時点で、ボトルネックはネットワークの方にあるのがほとんどで
頑張って報われるかというと微妙 (Googleみたいに大規模+高負荷だと報われる)

C++得意だから、nodeはあくまでインターフェースに徹するっていうのは方向性としてアリ
公式の拡張サンプル良く出来てるから、一度拡張書いてみるといいよ

477:デフォルトの名無しさん
12/02/01 01:02:20.28
nodeという名前からして、
CPUヘヴィーな処理は別の言語に任せて、
糊に徹しろよ、的な趣は感じる

478:デフォルトの名無しさん
12/02/02 19:35:27.07
Nodeなのに標準でDOMが扱えないとか

479:デフォルトの名無しさん
12/02/02 21:34:52.59
domはブラウザ側の実装依存が強いんじゃないかな?
何らかのC++のアプリに組み込むにしてもdomの出番はなさそうだ

強いて言うとxml parserがあると助かるくらいじゃない?

480:デフォルトの名無しさん
12/02/03 00:49:13.09
jsdom便利だけどバージョン変わるとよくエラー出る
とくにjquerify便利なんだけどよく死んでる

481:デフォルトの名無しさん
12/02/16 08:36:27.59
初心者スレってないんでしょうか?さっき知りましたnode.js

これって、ゲームとかで使うのにいいんですかね?

現在のイメージではhtml5でflashの代わりにゲームみたいな

コンテンツを作るのに便利な言語って思ってますが違います?

482:デフォルトの名無しさん
12/02/16 09:01:01.72
まずはJSの勉強しろ
ゲーム系するならhtml5とcanvasも必須

483:デフォルトの名無しさん
12/02/16 09:11:17.60
初心者スレはみつからないなあ
関連スレはあるけど

サーバーサイドJavaScript総合
スレリンク(php板)


484:デフォルトの名無しさん
12/02/16 13:08:42.64
ゲームやるなら enchant.js でいいんでないの?
まぁ使ったことないんだけどw

485:デフォルトの名無しさん
12/02/16 13:50:43.11
JavaScriptに#includeみたいなのないよね
どこで何が使われてるのかどこで宣言されてるのか、依存関係わけわからんくならんの?

486:デフォルトの名無しさん
12/02/16 14:23:45.73
nodejsならmodule使うから明示的でわかりやすいと思うが
Webなら自分で管理しろってだけだな


487:デフォルトの名無しさん
12/02/16 15:49:44.70
CoffeeScript使うとモジュール化しやすいぞ
まあ結局、命名規則に依存なんだけどな
クライアントでrequire.jsみたいなのも、あることはあるが

488:デフォルトの名無しさん
12/02/16 18:08:38.51
クライアントサイドだったらミニファイするしな

489:デフォルトの名無しさん
12/02/16 21:41:38.48
JSのNudeと聞いてきました

490:デフォルトの名無しさん
12/02/17 23:59:57.30
農奴と聞いて

491:デフォルトの名無しさん
12/02/20 13:58:09.67
マルチコアで効率的に動くようになった?
まだ?

492:デフォルトの名無しさん
12/02/20 14:06:15.30
isolatesは廃止になりました


493:デフォルトの名無しさん
12/02/20 18:24:24.93
V8側はマルチコアいけるのにだめなの?

494:デフォルトの名無しさん
12/02/20 18:48:59.53
今はまだ時期じゃないっぽい

URLリンク(d.hatena.ne.jp)
>追記(2012-02-05) Isolateの組み込みは一旦取りやめに
>先日NodeのリーダーがRyanからIsaacになったというニュースがありましたが、
>そのIsaacさんのPOSTによると、どうもIsolateはまだまだ不安定で内部も複雑になってしまう為
>これに注力しても労力の割に得るものは少ないとの判断で、一旦これを取りやめ、
>代わりに Domains 機能に力をいれるそうです。
>ただ、Isolatesを諦めたわけではなく優先順位の変化なだけで将来的にNodeに組み込まれる予定は変わらないっぽい、ただそれが次のメジャーバージョンであるv0.8.0の時ではなくなったということのようです。
>まぁ、機能的にはIsolatesはマルチプロセスのforkで代替できるし、正直Domains機能のほうが面白そうなので全く問題なし。



495:デフォルトの名無しさん
12/02/20 18:52:10.85
>>493
イベントモデルでのIOの多重化を選択したのは良かったけど
何か考えがあったのか、それとも実装が楽だったからか
ともかくnode.jsはシングルスレッドベースで作られた

496:デフォルトの名無しさん
12/02/21 23:34:21.74
console.log() って,
printf() みたいに使えるのかと思ったけど
%X 認識しないんだな

さて,どうやって 16 進数で表示するかな・・・

497:デフォルトの名無しさん
12/02/22 09:11:27.44
number.toString(16)

JSの勉強しろ


498:デフォルトの名無しさん
12/02/22 09:52:05.04
そういえばjqueryのプラグインにformat文使えるやつあったな
あれnode.jsでも動くんかな??

499:496
12/02/22 11:25:01.84
>>497


でも桁数が揃わない・・・
もっと勉強してくるわw

500:デフォルトの名無しさん
12/02/22 12:30:25.83
0埋めとかはslice使えばできるよ

501:496
12/02/22 13:32:56.51
>>500
おお,こんな方法があったのか

var n = 10;
console.log('HEX: %s', ('0' + n.toString(16).toUpperCase()).slice(-2)); // HEX: 0A

おまいらのおかげで出来たよ,ありがとう!

502:デフォルトの名無しさん
12/02/23 01:16:09.43
node.exe って 64bit の Win7 だとダメとかあるか?
nodejs.org のサンプルさえ ちゃんと動かない
Win7 32bit のノートなら動いた

503:デフォルトの名無しさん
12/02/23 01:35:21.18
URLリンク(stackoverflow.com)
2/10に同じ質問してる人がいるが、その人も解決してないみたいだね。
試しに少し古いバージョン使ってみては?
URLリンク(nodejs.org)
vc++のruntimeとか他のソフトでたまに引っかかることがあるが、必要ないんだよね?

504:502
12/02/23 01:47:17.45
>>503
なるほど,既知の問題だったのか
たまたまあった 0.6.7 もやってみたがダメだ

その後調べてたら
URLリンク(nodejs.jp)
の v0.7.4 のところに x64 ビルドをサポートした旨を発見

URLリンク(nodejs.org)
から node.exe を落としてきて,それで実行したらサンプルは走った

同じディレクトリにある node.lib と node.pdb ってのが謎だが,
動いたからいいかw

505:デフォルトの名無しさん
12/02/23 13:50:41.80
nodeにリンクする開発者向けのファイルだね
win7 64bit環境によって、32bitの共有ライブラリが足りなくて、
動かないパターンなのかな。

ともあれ動いてよかった。

506:デフォルトの名無しさん
12/02/23 23:58:09.40
node.js愛してます
というかJSしかわからない

ってことで今ブラウザあればnode.js使ったアプリ作れる環境作ってる
んで作ったものは自動でworker化するようなもの作ってる

将来的にiPhoneのリマインダー的なもの作りたい

507:デフォルトの名無しさん
12/02/24 15:30:35.86
win x64 用の msi キタ (unstable

508:デフォルトの名無しさん
12/02/24 23:47:46.64
NetBSD 5.1 でコンパイルしてみたけど
v0.6, v0.7 ともにダメだね

509:デフォルトの名無しさん
12/02/26 14:57:11.22
nodeをv0.6.11にしたらnode-webworkerが動かなくなりました

webworkerを書き換えて
sys→util
require.paths→消して他のrequireをフルパスで書き換え
process.binding→消す
のようにしたらエラーは出ないのですがworkerが全く動いていません

他に原因はあるのでしょうか?

510:デフォルトの名無しさん
12/02/26 15:33:11.60
node-webworkerは現在既に開発が停止しております(最新版はサポートされません
マルチプロセスなら組み込みのclusterやスレ上記のisolateをお使いください

511:デフォルトの名無しさん
12/02/26 15:48:21.89
どうしても使いたいなら自分でgithubからフォークして
自分でメンテするなりなんなりすればいいが
node-webworkerの人が開発する気力失せたのはclusterのせいだから
素直にclusterを使うのがいい

512:デフォルトの名無しさん
12/02/26 16:18:35.33
どうもclusterの使い方がいまいちわからなくて...

clusterで別のソースファイルをworkerとして動かすにはどうしたらいいのでしょうか

webworkerでは
new worker("worker.js");
でできたんですけど..

513:デフォルトの名無しさん
12/02/26 22:34:27.70
node.exe 環境での package.json についてだけど
"main" : "C:\hoge\hoge.js" だと動かなくて
"main" : "C:/hoge/hoge.js" だとちゃんと読んでくれるみたい

ちょっとハマった

// node.exe v0.7.5

514:デフォルトの名無しさん
12/02/26 22:39:51.33
知らんけど、"C:\\hoge\\hoge.js" じゃないの?

515:デフォルトの名無しさん
12/02/26 23:11:20.06
cluster.setupMaster()で起動するワーカーのソースに他のファイルを指定できるのはわかったがなぜか一回設定すると変更できない


ひとつのプログラムでcluster化したい場所が二ヶ所以上あるとつかえないのかな?

こうなるとwebworkerが使いたい...

516:デフォルトの名無しさん
12/02/26 23:18:02.41
a = require("cluster");
console.log(a.settings());            --->{ exec: '', args: [], silent: false }
a.setupMaster({exec:"./app.js"});
console.log(a.settings());            --->{ exec: './app.js', args: [], silent: false }
a.setupMaster({exec:"./app2.js"});
console.log(a.settings());            --->{ exec: './app.js', args: [], silent: false }       ←なんでapp2.jsじゃないんだよ( ̄_ ̄#)

b = require("cluster");
console.log(b.settings());            --->{ exec: './app.js', args: [], silent: false }       ←なんでapp.jsが入ってんだよ( ̄_ ̄#)


console.log(require("cluster").settings());            --->{ exec: './app.js', args: [], silent: false }

要するにrequire("cluster")で一回、値を設定すると変更できないみたいだ
webworker使いたい......

517:デフォルトの名無しさん
12/02/27 00:18:30.12
clusterのソース読めば良いよ
あれ結局はforkしてるだけだし


518:513
12/02/27 00:49:09.66
>>514
確認したら大丈夫でした
っていうかそっちのが正当かも

519:デフォルトの名無しさん
12/02/27 02:01:54.48
>>517 すみません
clusterのソースってどこにあるんでしょう...?ポリ…σ(-''-;)

520:デフォルトの名無しさん
12/02/27 02:15:44.39
>>517 じゃないけど,これじゃないですかね
URLリンク(github.com)

ローカルから探すなら
$ find / -name cluster.js

でしょうか

521:デフォルトの名無しさん
12/02/27 07:40:45.36
Webアプリ開発は Linux + Mono + ASP.NET MVC が最強だと悟った
スレリンク(poverty板)

522:デフォルトの名無しさん
12/02/27 14:15:15.92
結局clusterモジュールを>>516で満足のいくように書き換えることにした

ちょっとかかりそうだな

523:デフォルトの名無しさん
12/02/27 15:31:15.90
ちょっとかかりそうだね

524:デフォルトの名無しさん
12/02/27 15:32:16.66
ちょっとかかるかもね

525:デフォルトの名無しさん
12/02/28 00:16:19.71
とりあえずcluster書き換えて使えるようになった
どうもcluster.settingsは二回以上書き換えるといろいろとおかしくなるみたい
んじゃa = require("cluster");    b = require("cluster");みたいなかんじで何回もモジュールをロードしたらいいのではないか
→なんかrequire("cluster")はこれ単体で動いてるみたいやから、aとかbに代入してもコピーされるのではなくaやbがrequire("cluster")のポインタになるだけで意味がなかった
→require("cluster")を作る関数を返すモジュールを作った

//    ./cluster.js
module.exports = function(){
clusterほにゃらら
returen cluster;}

でa = require("./cluster.js")();
これでa,b,c...ってつくってくとclusterの部分がa,b,cにコピーされるから別もんとしてつかえる

あとは別のファイルから動いてるマスターとワーカーをどうやって通信させるか かな

526:デフォルトの名無しさん
12/02/28 01:33:24.79
スレ違いかもしれないけど、Aptanaとかでexpressのコード補完とか出来ないのかな
出来れば凄く便利になるんだけど・・・

527:デフォルトの名無しさん
12/02/28 06:37:58.61
言い出しっぺの>>526がエクステンション作ってくれるらしい
拍手!

528:デフォルトの名無しさん
12/02/28 15:00:48.28
vim + neocmplcacheでいいんじゃね

529:デフォルトの名無しさん
12/02/28 15:11:21.51
>>528
☆-(ノ゜Д゜)八(゜Д゜ )ノイエーイ☆

530:デフォルトの名無しさん
12/02/28 18:52:00.89
>>529
(゜∀゜)人(゜∀゜)ナカーマ

531:デフォルトの名無しさん
12/03/02 09:06:07.13
ServletやStrutsのような使い心地のフレームワーク作成ちう

532:デフォルトの名無しさん
12/03/02 09:14:44.60
それあかんやつや

533:デフォルトの名無しさん
12/03/02 18:11:10.92
>>531
wktk

534:デフォルトの名無しさん
12/03/02 23:27:36.26
やっぱ例外処理がネックだね。
キャッチされない例外処理と、レスポンスを結び付けるのが難しい。

vm.createScript/createContext/runInContextを組み合わせて、
リクエストをそれぞれ別々のコンテキストで実行する方法なら、
何とかならない訳ではないが、メモリとパフォーマンスの問題あり。

因みに、その方法はError.prototypeをコンテキスト単位で拡張しておく。
するとprocessでキャッチされない例外を受け取った時に、
例外オブジェクトが拡張された状態になってる。
そこに事前にレスポンスを結び付けるという方法。

535:デフォルトの名無しさん
12/03/02 23:36:21.26
例外処理は、Greeがnode-greeという独自モジュールで、
非同期処理をtry/catch出来るようにしているらしい。

node-fiberをみると、ネイティブ拡張で、関数の実行を途中で止めて、他の関数に制御を渡すというのをやってる。
原理は同じなんだろうね。

キャッチ漏れ対策はどうしたもんか。。。

536:デフォルトの名無しさん
12/03/03 00:32:26.46
expressってやっぱいいの?

537:デフォルトの名無しさん
12/03/03 07:59:36.91
expressはrubyでいうとRailsにもSinatraにもなれる素敵フレームワークだからな
一部例外除いてnode製のwaf名乗ってる奴、だいたいexpressのDSLだし
zappaとかaceとかtower.jsとかmatadorとか

expressの使い方わかってれば、以上のライブラリ好きに拡張できるよ

538:デフォルトの名無しさん
12/03/03 12:52:44.53
ただ、expressはrailsやsinatraと同じで
今は流行ってるが一時的ですぐ廃れそうなんだよな。

539:デフォルトの名無しさん
12/03/03 18:48:59.77
なにも流行ってるものを使わなきゃいけないわけないだろ

自分が使いたいものを使えばいい


それ言うならnodeじゃなくてもっと流行ってるPHP使えよ

540:デフォルトの名無しさん
12/03/03 18:54:57.54
PHPよりもJavaの方が流行ってる。

541:デフォルトの名無しさん
12/03/03 19:04:42.96
マジレスで、今の流行りはPython

542:デフォルトの名無しさん
12/03/03 19:20:09.81
URLリンク(www.tiobe.com)
Python今はもう明らかに落ち目だぞ

543:デフォルトの名無しさん
12/03/03 19:29:19.30
Javaって流行っているのか?

簡単なものを作るのには、expressは便利だよ

544:デフォルトの名無しさん
12/03/03 19:38:45.63
JSの事をJavaと呼んでるんだろう

545:デフォルトの名無しさん
12/03/03 19:49:01.38
それはお前だけだろw

546:デフォルトの名無しさん
12/03/03 20:42:49.04
なんでわざわざJSと書いてるのに
俺がJavaと呼んでる事になってるの?
頭大丈夫?


547:デフォルトの名無しさん
12/03/03 21:02:25.32
昔そういう勘違いして馬鹿にされて
それが今もトラウマになってるんだろw

548:デフォルトの名無しさん
12/03/03 21:21:34.86
ただ煽りたいだけの頭痛い子か

549:デフォルトの名無しさん
12/03/03 21:23:09.37
最初に煽ってきたのは>>544だけどなw

550:デフォルトの名無しさん
12/03/04 14:33:19.64
接続中のクライアントをサーバ側でランダムにマッチングするようなことはできますか?
Node.jsはシングルスレッドのため、別スレッドで検索しつつ見つかったら~みたいなこと
出来ない気がするので・・・。

わかる方いらっしゃいましたら教えて頂ければと思います。



551:デフォルトの名無しさん
12/03/04 15:05:35.26
なんでnode.jsっていうんですか?正式名称はnodeじゃないんですか?

552:デフォルトの名無しさん
12/03/04 15:12:13.56
>>550
イベントループでもマルチスレッドっぽい事は出来る。


553:デフォルトの名無しさん
12/03/04 16:32:45.86
今のバージョンってCygwinに入らないのか。
./configureでCygwinはサポートしてないぜって怒られる。

単純にfibers使いたいだけなんだけど、
Windowsサポートされてないし、
かと言ってLinux環境作るのが面倒い。


554:デフォルトの名無しさん
12/03/04 16:34:41.52
Windowsサポートしてるだろ

555:デフォルトの名無しさん
12/03/04 17:16:00.80
書いたとおり、fibersというモジュールは、
Windowsに対応していないんだ。
ソースみるとpthreadとか依存しまくりだし、
作者も公式で、対応出来るけどヤラネと言ってる。。。

556:デフォルトの名無しさん
12/03/04 21:30:41.58
cygwinかmingwでモジュールだけコンパイルしたり
URLリンク(sourceware.org) のラッパー書くより、
vmplayerにubuntu serverインストールする方が早い気がするよ。

作業中いつでもネットワーク環境あるならsaasでも
URLリンク(www.goodpic.com)


557:デフォルトの名無しさん
12/03/04 22:03:39.58
ビルドについて、node本体かfibersについてか分からんけど
URLリンク(github.com)
これのことなら、単純にMakefileとplatform.mkに追加すればいんじゃない?

558:デフォルトの名無しさん
12/03/04 22:20:49.96
cygwin上でのビルドで怒られるのは、node.js本体で0.6系。
fibersは試してないけど、cygwinならいけそうな気がする。


559:デフォルトの名無しさん
12/03/04 22:30:25.04
>>550
何をしたいのかがよくわからんけどclusterで行けると思う

おれはclusterでgizmodeのページを監視させて、更新されたらクライアントに通知がいくようなもん作った

560:デフォルトの名無しさん
12/03/05 00:25:13.96
>>552
ありがとうございます。
試してみます。

561:デフォルトの名無しさん
12/03/05 00:32:41.44
>>559
せめてもう少しましなサイトを…

562:デフォルトの名無しさん
12/03/05 18:55:40.43
node.jsとC言語で実行時間比べてみたらほぼ同じ速さだったんだがスクリプト言語でここまで速くなるもんなのか。

空ループと乱数発生させるだけのループしか試してないけど複雑な処理だと差が開くのかな。

563:デフォルトの名無しさん
12/03/05 19:07:00.49
ヒント:JIT

564:デフォルトの名無しさん
12/03/05 19:24:08.05
v8は内部で部分的にコンパイルしてるからスクリプト言語でも速い

565:デフォルトの名無しさん
12/03/05 19:55:51.51
いくらJITコンパイルしてるからってC言語と並ぶとは思わなかった。Cでモジュール書くことも出来るけどほとんど必要なさそうだな。

566:デフォルトの名無しさん
12/03/05 20:03:50.52
どっちかというと、ネイティブじゃなきゃできない事とか、
ネイティブのライブラリを呼び出すとか、
そういう用途がいいんじゃないかな。

あと、大量データを一括で渡して計算結果をもらうとか。
GPGPUなんかは計算だけならCよりも更に速いので、
そういうのを呼び出す用途もいける。

V8の特性はよくわからないけど、
ネイティブ呼び出しのオーバーヘッドって、
それなりに高いと思うんだ。
それを考慮したベンチをとったのかな?

567:デフォルトの名無しさん
12/03/05 20:46:49.07
>>566
なるほど、詳しくありがとう。
JSじゃ出来ないことをするにはモジュール必須だね。

オーバーヘッドについては気になったからMath.floor(Math.random()*10000000);とかのループも試したけどCと同等だった。
一度呼んだ関数はキャッシュされてるのかもしれないが。

568:デフォルトの名無しさん
12/03/05 21:48:40.81
> 空ループと乱数発生させるだけのループしか試してないけど複雑な処理だと差が開くのかな。

それだとコンパイルしたら、コードなくなるんじゃね?


569:デフォルトの名無しさん
12/03/05 22:24:26.28
もうちょっとヘビーな処理の方がいいかも。
ネイティブ呼び出しのオーバーヘッドが、無視できるレベルのヘビーなベンチなら、
恐らくCの方が速いと思われ。

ネイティブコードはコンパイル時の静的な最適化で、
JITは実行時のメトリクスに合わせた動的な最適化だから、
ケース次第ではJITの方が速い場合もあるけど。

570:デフォルトの名無しさん
12/03/05 23:18:10.86
かなり重い処理させるとCのほうが速いね。それでもnode.jsの1.1倍くらいだが。

571:デフォルトの名無しさん
12/03/06 00:21:11.57
node.jsが異常に速いのはここでも実証されてる
URLリンク(www.slideshare.net)

572:デフォルトの名無しさん
12/03/06 00:28:50.91
V8だけ無駄に評価されすぎじゃね?
たまにはSpiderMonkeyも思い出してあげてください・・・

573:デフォルトの名無しさん
12/03/06 05:01:48.98
文字列連結ってブラウザのJSではかなり多い処理なんで、
それに特化したチューニングをしてるとは思われる。

何かのベンチではV8よりも、IonMonkeyだかJaegerMonkeyの方が、
若干速いという記事を見た覚えがある。
AS3/AVM2もケースにおいてはV8よりも速いみたいだし。

処理によって速い遅いというのは、チューニングの特性が大きいのかもしれない。

574:デフォルトの名無しさん
12/03/06 10:21:42.36
JSは文字列を扱う機会が多いわりに遅いってイメージ。
でも、V8とかはそんなに速いのか。node.js使ってみようかな。

575:デフォルトの名無しさん
12/03/06 14:26:00.43
node.jsで子プロセス作ってそこから親プロセスのメモリにアクセスすることって出来ますか?

576:デフォルトの名無しさん
12/03/06 18:33:47.11
親と子のデータのやり取りはできるけどメモリにアクセスできるかはわからない

577:デフォルトの名無しさん
12/03/06 19:44:40.63
共有メモリは無理かな

578:デフォルトの名無しさん
12/03/06 19:59:43.06
なんか行けそうな気がするけど

579:デフォルトの名無しさん
12/03/07 01:19:06.32
みんなnodejsでどんなもん作ってる?

580:デフォルトの名無しさん
12/03/07 07:01:23.74
node.jsで何か作るためのライブラリ。
メタ開発面白いお。

581:デフォルトの名無しさん
12/03/07 10:44:27.44
V8はC++で作られててC++のランタイムをどうのこうのって書いてあった

582:デフォルトの名無しさん
12/03/07 12:46:30.84
node.jsでJavaVM作ってその上でRhino動かそうぜ

583:デフォルトの名無しさん
12/03/07 15:17:15.51
>>582
渋いな


584: 忍法帖【Lv=32,xxxPT】
12/03/07 15:20:10.22
できるもんなのか...?

585:デフォルトの名無しさん
12/03/07 15:38:38.56
mysql使っているところで例外を throw すると、app.get() の中で 拾えない。。これって何故だか分かりますか?(24歳 会社員)
var mysql = require( "mysql" );
var db = mysql.createClient( conf.mysql );
function getAccounts() {
var sql = "SELECT * FROM accounts ";
db.query( sql, [], function( err, results, fields ) {
throw err;
});
}
app.get( "/hoge", function( req, res ) {
console.log( "start" );
try {
getAccounts();
} catch ( e ) {
console.log( "catch error " + e );
}
console.log( "end" );
res.render( "hoge" );
});
-------------------------------------------
start
end
/home/user/work/node.js/app/server.js:296
throw err;
^
null

586:デフォルトの名無しさん
12/03/07 17:10:28.76
それって
process.on('uncaughtException',function (e) {});
とかでもとれないやつ?


587:デフォルトの名無しさん
12/03/07 23:34:26.29
query関数の引数のコールバックは非同期だから、
getAccountをtry catchで括っても無駄。

588:デフォルトの名無しさん
12/03/08 01:28:17.05
PHPとnode.jsのセッション情報共有って出来ますか?


589:デフォルトの名無しさん
12/03/08 02:21:35.70
>>588
どうやって共有するかによる。
PHPは独自のシリアライズ方式で値を保存、復元している。
node.jsには標準がないので、PHPのシリアライズされたデータの、
エンコーダーとデコーダーを作るのが手っ取り早い。

と思ったら、npmにnodePhpSessionsというのがあるわw
見てないけど、多分上記の様なことやってくれそう。
レポよろしく。

590:585
12/03/08 12:19:26.92
やっぱそうなのか、、dbに接続したらダメになってたから、そうかなーって思ってたけど、、
つらい。。
トランザクションを利用したくて、なんかいい方法ありますか??

ひたすらコールバックに渡していく方法だと、コードが入れ子になりすぎて汚くなるから、

function doChain( this_, fn ) {
if ( typeof fn == "function" ) {
this_.data.chain.push( fn );
}
this_.data.chain.shift()( this_ );
}

function func1( this_ ) {
console.log( "func1" );
throw "error";
this_.data.chain.shift()( this_ );
}
function func2( this_ ) {
console.log( "func2" );
this_.data.chain.shift()( this_ );
}

function begin( this_ ) {
console.log( "begin" );
this_.data.chain.shift()( this_ );
}

591:デフォルトの名無しさん
12/03/08 12:19:59.37
function commit( this_ ) {
console.log( "commit" );
}
function rollback( fn ) {
console.log( "rollback" );
fn();
}

app.get( "/hoge", function( req, res ) {
try {
this.data = [];
this.data.chain = [ func1, func2 ];
console.log( "start" );
dodata.chain( this, function() {
console.log( "end" );
});
} catch ( e ) {
console.log( "catch error" );
rollback(function(){
console.log( "rollback 2" );
});
}
});
こういう風にしてるけど、何か try-catch + コードが汚くならない方法ありますか、、

592:デフォルトの名無しさん
12/03/08 12:38:59.71
uncaughtException で取れたので

// 追加
process.on( "uncaughtException", function( err ){
console.log( "uncaughtException => " + err );
});
// 追加
function TransactionFaild( app ) {
console.log( "transaction faild" );
rollback(function() {
app.data.res.render( "error/transaction_faild" );
});
}

function func1( this_ ) {
console.log( "func1" );
throw new TransactionFaild( this_ ); // 修正
this_.data.chain.shift()( this_ );
}

app.get( "/hoge", function( req, res ) {
try {
this.data = [];
this.data.req = req; // 追加
this.data.res = res; // 追加
this.data.chain = [ func1, func2 ];
... (省略)
});

としたのですが、err/transaction?_faild のテンプレートが表示されません。
使っているのは express と ejs なのですが、何ででしょうか。。
※ 書いていて思ったのですが this_ より app の方がいいですね。

593:デフォルトの名無しさん
12/03/08 22:35:20.71
redtamarinにnode.jsくらいの基本ライブラリがあって、
ネイティブ拡張がやり易いなら、結構普及するんだろうな。



594:デフォルトの名無しさん
12/03/08 23:11:59.60
>>589
ありがとう!
試したらレポしますね!

595:デフォルトの名無しさん
12/03/09 23:27:21.42
>>594
スキル不足でSoket.IOと紐付け出来ませんでした\(^o^)/


596:デフォルトの名無しさん
12/03/11 16:09:44.25
URLリンク(d.hatena.ne.jp)
このサイトを参考にCookie受信を試しているのですが、
IE8では上手くCookie受信出来るのですが、
Firefox10.0.2では上手くいきません

Firefoxでは何か制限があるのでしょうか?


597:デフォルトの名無しさん
12/03/12 00:38:09.60
Tower.js使ってみた人いる?

598:デフォルトの名無しさん
12/03/12 14:05:25.86
とりあえずscaffold使ってみたりした
基本的には mongoose, express, coffeekup でラッパ作ってMVCならこうなりますって感じ
Railsに準じた構成でコードが吐かれる。俺はRailsわからんので此処から先はRails詳しい人お願い

599:デフォルトの名無しさん
12/03/13 21:00:37.34
node.jsってJavascript知らないと使えないの?

600:デフォルトの名無しさん
12/03/13 21:52:57.47
そりゃまあ

601:デフォルトの名無しさん
12/03/13 23:02:20.42
あんまりガチガチじゃないMVCフレームワーク作ってる。

・正規表現で、動的にコントローラを結び付けられる
・ソースやリソースなどは、更新されると自動読み直し
・決めたwebappディレクトリをルートとしたリソース管理
・正規表現で定義でき、複数のフィルタを連続して実行できるリクエストフィルタ
・静的コンテンツのサポート、エラーページのサポート
・リダイレクト、ディスパッチのサポート
・複数のテンプレートエンジンの使い分け

基本的には極力余計なことはしないので、POSTパラメータの処理などは標準ではサポートしない。
でもそれだと不便なので、POSTパラメータやアップロードされたファイルを、
フィルタでリクエストオブジェクトに設定できるようにしている。

ファイルアップロードとかPOSTパラメータ、クッキーなどの処理は、
基本的には実績のあるサードパティのモジュールを使う感じ。
フレームワークに適用できるようにするための、アダプタだけ用意する感じかな。

module.exports = function(context){
  var model = context.require("models/foo");
  model.doLogic(xxx, xxx, function(err, result){
    if(err){
      context.error(err);
    }else{
      context.render("ejs:foo/bar", result);
    }
  });
};

という感じでコントローラが書ける。ExpressとかTowerとかの今風のMVCではなく、
どっちかというと、ZendとかStrutsな感じのMVCだけど、こういうのってニーズあるのかな?


602:デフォルトの名無しさん
12/03/13 23:21:22.47
・決めたwebappディレクトリをルートとしたリソース管理

ってなんぞ?

603:デフォルトの名無しさん
12/03/13 23:34:58.06
サーブレットでいう、WEB-INFディレクトリのようなもの。

特定のディレクトリ以下をWEBアプリのディレクトリとして、
そのディレクトリ以下のリソースを自動的に読みなおしたりキャッシュしたり、
パスの解決もそのディレクトリからの相対パスとなる感じ。

node-devだと監視対象になるし、アプリ全体が再起動しちゃうんだけど、
どっちかというと、本番稼動時にコントローラをホットスワップするためのもの。
サブディレクトリ足して、コントローラ置いて、アプリの設定にするというのもOK。

、、、という感じです。

ディレクトリを固定するのは、アプリ内でのパスの単純化と、
監視コストの削減ってところですかね。



次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch