トップページphp
244コメント86KB

サーバーサイドJavaScript総合

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2008/05/15(木) 16:22:12ID:omRBHTnI
とか見つからなかったので立てさせてもらいました
クライアントJavaScript/JScriptについてはWeb制作板へどうぞ。

とりあえず俺は今頃Jaxerで遊んでみてます。
AJAJAって無くなったのかな? 公式らしきURLがwikipedia転送になってますね
その他にもいろいろ実装あるので、>>2以降で軽くリンクとか書いて行きます
0176nobodyさん2011/11/11(金) 20:53:37.75ID:???
>>175
ありがとう!
パーフェクトのはクライアントサイドの本だと思ってたよ
買ってみる!

node.jsやるならwinよりmacのがいいのかな
情報はmacのが多い気がする
0177nobodyさん2011/11/11(金) 21:31:45.09ID:???
Linuxで良いんじゃないの。
わざわざ本番環境に使えない環境でノウハウ貯める意味ないと思う。
0178nobodyさん2011/11/12(土) 00:23:45.33ID:???
MS支援始めたんじゃなかったっけ、node
0179nobodyさん2011/11/12(土) 05:09:42.00ID:???
既にMac持ってるならわざわざLinux使う必要も無いだろう。
わざわざMacを用意するのは馬鹿だけど。
0180nobodyさん2011/11/16(水) 08:06:30.47ID:???
>>178
っぽいんですけど情報はメッチャ少ないですね

>>177,178
素直にUbuntuでやります
有り難う御座いました
0181nobodyさん2011/12/17(土) 23:59:15.09ID:???
【ウェブアプリケーションという不幸 】

現在、多くのプログラマ(素人)がウェブアプリケーションというものがベストな正しい方向だと勘違いしている。
ソフトウェアの作るにおいてそのアプリケーションに応じた状態遷移を実装するというのは基本中の基本である。
その点においてウエブブラウザというある状態遷移が実装されているアプリケーションの上に
また別のアプリケーションを実装するのは論外である。
そこまでするなら普通にアプリケーションを実装してダウンロードして使ってもらえばいいのである。
ウェブアプリケーションとは虚構にしか他ならない。
ウェブアプリケーションを作ろうとしているあなた。
今すぐ普通のアプリケーションとし設計し始めてはいかがだろう。
そうすればきっと後悔しないですむ。

HTMLやHTTPを悪者にはしていない。
TCP/IPができあがり、その応用として、ファイルを送ったりするようになった。
ファイルの中身のテキストにデータ構造をもたせ、それはつまりツリー構造なわけだが
その実装としてのハイパーテキスト、つまりHTMLという送る側と送られる側で決め事(プロトコル)
をつくり、画像や音楽など表現の幅を広げることは当然の成り行きだっただろう。
そして、その送る側としてのHTMLファイルサーバ、つまりWebサーバ、送られる側としてのプロトコルの解釈・表示系としての
ブラウザというアプリケーション。
ここまではいい。
だが、そこから先が素人の発想というか、いそがばまわれを忘れた者の愚かな発想。
つまりブラウザ上で、アプリケーションを動かすという発想なのである。
ブラウザというのは、おくられてきたステートレスな通信内容の一瞬の表示手段でしかない。
つまりアプリケーションのためのひとつのパーツなのである。
Windowsでいえば、コントロールのひとつ。(実際WebBrowserというコントロールがある。)
JavaならWebClietnだ(これは、ブラウザではないが。)。
包含関係が逆なのである。
ブラウザ上にアプリケーションを作るのは愚かなブームである。
0182nobodyさん2011/12/18(日) 00:22:26.17ID:???
こっちくんな
0183nobodyさん2011/12/18(日) 20:54:05.79ID:???
>>181
サーバークライアント型アプリケーションをインストールする手間を省き
ユーザーにとって簡略的手順を提供するにはブラウザが手っ取り早い
ブラウザは殆どのOSにプリインストールされてるし
0184nobodyさん2011/12/19(月) 07:20:50.56ID:???
>>183
マルチだから構うな
0185nobodyさん2011/12/27(火) 06:08:54.28ID:???
>>17の状況がまるっきり変わってないというのがちょっとした恐怖だな。
0186nobodyさん2011/12/27(火) 08:21:21.17ID:???
>>185
3年半以上も前の書き込みかよ…
もうnodeも無理じゃね?

でもライノーなんて1997年くらいからあるんだぜ?ww

カスタマイズ可能な法人向けパッケージ製品でSSJS使えるのはいくつかあるけど
パッケージ自体はJAVAかCで書かれてるしなぁ
0187nobodyさん2011/12/27(火) 09:13:23.30ID:???
要するに、日本じゃnode.jsに有り難味が出るほどの
ちょー繁盛サービスなんか無いってことですね。

ネット後進国ジャップwwwwwww
0188nobodyさん2011/12/27(火) 12:11:37.94ID:???
>>187
いやいや
ナウなヤングでお馴染みのCAさんはバリバリ使ってサービス展開してるよ
ただ、団塊ゴミ幹部ばかりの企業では取り入れられないだろうね
0189nobodyさん2011/12/27(火) 15:06:28.22ID:???
化石エンジニアにはなりたくないので、
新規サービスのどこかに取り入れたいな。
とりあえずテストしてみてるけど。

ネックはノウハウと開発スピード。
0190nobodyさん2012/01/21(土) 10:53:04.52ID:???
pdfプラグインが原因で、しょっちゅうブラウザがクラッシュするから、
pdf.jsを使おうとしているが、文字化けが激しいな。これ。

ただ、FireBugの出力を見るかぎり、日本語のパースそのものはできているみたいだ。

こんな風にソースが出力される:
<div data-canvas-width="216" style="font-size: 24px; font-family: GothicBBB; left: 192px; top: 244.667px; letter-spacing: 3.25px;" data-text-length="9">カスタマーサポート</div>

でもって、PDFに埋め込まれたフォントをパースしてdata-uriにしてWebフォントとして読み込み。
@font-faceで参照しているようだ。
この様子だと、font.jsのPDF埋め込みフォントを読み取って変換する処理が怪しい。

でも、data-uriってたしか字数制限なかったっけ?
0191nobodyさん2012/01/29(日) 15:01:57.65ID:???
GCとFFでは動くのに、
IE8で動かないんだが、どうすればいい?
0192nobodyさん2012/01/29(日) 18:52:01.87ID:???
GCとFFへのダウンロードリンクを出す
0193nobodyさん2012/02/01(水) 14:16:05.15ID:???
>>192
それだとIEの奴は絶対に使わないと思う
0194nobodyさん2012/02/01(水) 16:39:52.44ID:???
Windows7付属のIISにiisnodeをインストールした
その後、プロンプトでnpm install socket.ioを実行して、http://socket.io/にあるサンプルを起動してみた
だが、しばらくしても何も起きない
おかしいと思ってみたら、
エラー: io is not defined
ソースファイル: http://localhost/webchat/
行: 12
と表示されてた
サイトのFAQを読みながらサイトにあるサンプルの記述を調べてみたんだが、特におかしなところがなかった
IISな環境でsocket.ioを使ったクライアントにはどうすればいいの
サーバー側はどうも動いてるんだが、クライアント側が全然動かない
0195nobodyさん2012/02/01(水) 23:48:35.36ID:???
ちゃんと<script src="/socket.io/なんとか~.js "></script>して
socket.ioが提供してるスクリプト読み込んでるか?express介してるならファイルパスが定義されてるはず
サーバー側とクライアント側のスクリプト2つ合わせてsocket.ioだ

個人的にはWindowsはサーバーサイドプログラミングには向かないと思ってるので
VMwarePlayerでUbuntuいれろって思う
(Windowsであることを理由にバグかどうかわからんっていうならWindows避けてほしい)
01961942012/02/02(木) 16:24:20.48ID:???
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="author" content="">
<meta name="keywords" content="">
<meta name="description" content="">
<meta name="robots" content="all">
<title>???????</title>
<link rel="stylesheet" href="">
<script src="http://localhost/socket.io/socket.io.js"></script>
<script>
var socket = io.connect('http://localhost:8124');
socket.on('news', function (data) {
console.log(data);
socket.emit('my other event', { my: 'data' });
});
</script>
</head>
<body>
<p>test</p>
</body>
</html>
ちゃんとやってるよ
0197nobodyさん2012/02/02(木) 19:34:17.83ID:???
>>196
で、nodeが動いているポートは80なのか?
01981942012/02/02(木) 20:07:18.02ID:???
8124番ポートで動いてるが、http://localhost:8124/socket.io/socket.io.jsとしても変わりねえ
0199nobodyさん2012/02/02(木) 20:35:08.58ID:???
>>198
>>196
0200nobodyさん2012/02/02(木) 20:39:33.72ID:???
頭のhttp://localhost/外してsrc="/socket.io/socket.io.js"だけにしてみたら?
02011942012/02/03(金) 17:44:54.37ID:???
>>200
それだけにしてみたが、何も起きない
0202nobodyさん2012/02/14(火) 12:22:43.52ID:???
node_modulesocket.ioexampleにチャットのサンプルがあるはずだから、まずそれを動かしてみたら?

あと、指定は/socket.io/socket.io.jsでよかったはず
0203nobodyさん2012/02/15(水) 21:06:46.01ID:???
>>202
チャットのサンプルがあるフォルダーに移動してnpm install -dをたたいて
localhost:3000のページを開いてみたら、こういう風に言われた
Error: Cannot find module 'jade'
at Function._resolveFilename (module.js:334:11)
at Function._load (module.js:279:25)
at Module.require (module.js:357:17)
at require (module.js:373:17)
at View.templateEngine (C:\Program Files (x86)\nodejs\node_modules\express\lib\view\view.js:134:38)
at Function.compile (C:\Program Files (x86)\nodejs\node_modules\express\lib\view.js:68:17)
at ServerResponse._render (C:\Program Files (x86)\nodejs\node_modules\express\lib\view.js:417:18)
at ServerResponse.render (C:\Program Files (x86)\nodejs\node_modules\express\lib\view.js:318:17)
at C:\inetpub\wwwroot\chat\app.js:38:7
at callbacks (C:\Program Files (x86)\nodejs\node_modules\express\lib\router\index.js:272:11)
[x1B][90mdebug -[x1B][39m served static content /socket.io.js

モジュールがあるフォルダーを見てもjadeはちゃんと存在するのに、なぜか起動しない
0204nobodyさん2012/02/15(水) 23:59:13.96ID:???
>>203
たぶんパスだと思うけど、よくわからないから、chat/app.jsのあるルートでbundle installでとりあえず直下にnode_module/ができてそこにはいると思う
0205nobodyさん2012/02/16(木) 00:08:16.49ID:???
>>204
ぼけた
bundleじゃなくてnpm installだった
これで動いてるよ@0.6.10
0206nobodyさん2012/02/16(木) 12:11:10.70ID:j3I05iJ0
>>204
書き忘れた
chat/node_module/というフォルダーがあってそこにjade、socket.io、nis、expressなどが入ってた
npm install -dだと動かないのかな
0207nobodyさん2012/02/21(火) 00:23:28.96ID:j6lMfzZ1
node.jsってどういう原理で動いてるんですか?
CGI?Apacheのモジュール?それともnode.js自体がアプリケーションサーバ?
0208nobodyさん2012/02/21(火) 02:31:37.23ID:Nv/vOYjo




MIKAMIのインターネット でググれwwww

痛すぎてワラタwwwwwwwwwwwwww



0209nobodyさん2012/02/21(火) 09:18:17.07ID:???
上の発言はどうでもいいけど早くnginxが公式にwebsocket対応してほしい
nodeが普及するならそこから
0210nobodyさん2012/02/21(火) 22:18:38.01ID:???
>>298
意味不明な書き込みするなよキチガイ。
お前なんかには聞いてねーんだよヴァーカ。
てゆーかググって理解したからいいんだけどな。
0211nobodyさん2012/02/21(火) 22:19:24.28ID:???
>>210>>208宛てな。
0212nobodyさん2012/03/28(水) 17:00:27.11ID:QP+7A6sE
node.jsって非同期APIが結構多いな
ちょっと読み書きするだけでこういう風になりがちで気持ち悪いし、
描き方によっては流れが読みにくくなることもある
fs.open("hoge","w",null,fuction(err,fd){
var str = "nya-";
 fs.write(fd,str,0,str.length,null,function(err,written,buffer){
  fs.close(fd);
 });
});
C#4.5みたいな非同期構文がほしいよ
0213nobodyさん2012/03/29(木) 00:43:04.45ID:???
>>212
ttps://github.com/joyent/node/wiki/modules#wiki-async-flow
0214nobodyさん2012/04/05(木) 16:03:40.76ID:???
>>213
ありがとう
こういう便利なものがあるとはしらなかった
でも、やっぱり、C#4.5を使いだすと、こういうやつですら面倒になる
0215nobodyさん2012/09/03(月) 07:43:17.96ID:Dysvhu0i
質問があるのですが
テキストボックス内でそのページのURLを出すことはできないでしょうか?
どうしてもタグなどがエスケープされてそのままのスクリプトが出てしまいます
location.hrefではどうしてもできませんでした
よろしくお願いします
0216nobodyさん2012/09/03(月) 12:32:08.16ID:???

WordPressの投稿欄の話とかしてる?
0217nobodyさん2012/09/11(火) 20:38:40.39ID:???
過去ログを表示するためにこういう感じのコードを組んだんだが、dotCloudのようなところだとあまりに遅すぎて死にそうになる
まとめて送れば解決しそうなんだが、ドキュメントを読んでもlazyで読み込みが完了したときにコールバックさせる方法がわからない
lazyでドキュメント完了時に呼びさされるイベントとかあったら教えてほしい
var state = fs.stat(path,function(err,state){
if(err)
return;
var stream = fs.createReadStream(path);
new lazy(stream)
.lines
.forEach(function(line){
socket.json.emit("req pastlog",CreateMessageFromText(line.toString()));
});
});
0218nobodyさん2012/09/15(土) 18:44:32.31ID:???
.joinをつなげたら解決した
0219nobodyさん2012/09/20(木) 06:00:31.76ID:lXsx7qcr
node.jsスレが落ちた
0220nobodyさん2012/09/25(火) 10:23:14.05ID:???
小さいシステム2・3個nodeで作ってみた。普通に使えたけど、複雑なシステムになった時にどーなるかなと思ってる。
皆はどうですか?
0221nobodyさん2012/10/02(火) 07:29:26.11ID:???
>>220
node.jsで動くなり茶スクリプト作ったけど、あんまり使いたくないねえ

そういや、匿名関数でこういうことやると落ちるんだが、うちだけ?
function foo(){
this.Add = function(){
console.log("aaa");
}
function GetRoomList(callback){
var stream = fs.createReadStream($room_configure_file_name);
new lazy(stream)
.lines
.forEach(function(line){
this.Add();
})
});
}
}
0222nobodyさん2012/10/02(火) 09:33:06.14ID:???
括弧の対応が取れてないのはともかく、
上のthisと下のthisは同じものにならないんじゃないの?
0223nobodyさん2012/10/02(火) 12:16:09.29ID:???
ああ、本当だw
入れ子の無名関数のthisはどこにも参照されていない筈
0224nobodyさん2012/10/02(火) 16:26:17.64ID:???
>>222
>>223
そうなの?
C#ではこういう書き方ができたから、通ると思ったんだが…
JavaScriptだとダメなの?
0225nobodyさん2012/10/02(火) 17:05:54.11ID:???
>>224
>>221を書いた人なの?そもそもjsのプログラムとして完成させてくれないと何をしたいのかわからん
これこのままじゃ、fooって関数を宣言してるだけだよね?GetRoomListは宣言してるけど使ってないし何なの?
02262212012/10/02(火) 17:08:46.50ID:???
>>225
すまん
肝心な部分が抜けてた
function foo(){
var collection = {}
this.Add = function(line){
//lineの内容に応じた処理を行う
//collectionに追加
}
function GetRoomList(callback){
var stream = fs.createReadStream("foo.txt");
new lazy(stream)
.lines
.forEach(function(line){
this.Add(line);
})
});
}
GetRoomList();
}
0227nobodyさん2012/10/02(火) 17:35:07.60ID:???
いやだからさwまずは文法エラーが出ないようにしろよw
括弧の対応とれてないだろうがw

無理やり文法エラーなおして、this.Add()の関数になにか適当な処理いれて、
最後にfoo()を呼び出すようにすれば俺の環境だとちゃんと動くぞ

上のthisと下のthisに違うものが入るかと思ったが、両方とも同じグローバルオブジェクトがはいるんだな
forEachの仕様をよく理解してなかったわ
02282212012/10/02(火) 19:41:47.18ID:???
var lazy = require("lazy");

var fs = require("fs");

function foo(){
var collection = {}
this.Add = function(line){
//lineの内容に応じた処理を行う
//collectionに追加
console.log(line);
}
function GetRoomList(callback){
var stream = fs.createReadStream("roomlist.txt");
new lazy(stream)
.lines
.forEach(function(line){
this.Add(line);
});
}
GetRoomList();
}

$test = new foo();
文法エラーを修正したが、こんなエラーが出る
0229nobodyさん2012/10/02(火) 19:48:55.73ID:???
TypeError: Object #<Object> has no method 'Add'
at C:\Users\xxx\Documents\WebChat\test.js:17:9
at EventEmitter.self.forEach (C:\Users\xxx\Documents\WebChat\node_modules
\lazy\lazy.js:62:13)
at EventEmitter.<anonymous> (C:\Users\xxx\Documents\WebChat\node_modules\
lazy\lazy.js:46:19)
at EventEmitter.emit (events.js:93:17)
at self.bucket.yield (C:\Users\xxx\Documents\WebChat\node_modules\lazy\la
zy.js:152:18)
at Function.<anonymous> (C:\Users\xxx\Documents\WebChat\node_modules\lazy
\lazy.js:186:21)
at self.bucket (C:\Users\rirufa\Documents\WebChat\node_modules\lazy\lazy.js:
158:21)
at EventEmitter.emit (events.js:93:17)
at ReadStream._emitData (fs.js:1365:10)
at afterRead (fs.js:1347:10)
0230nobodyさん2012/10/02(火) 19:55:27.08ID:???
fooは普通の関数じゃなくてコンストラクターなのかw
それだと上のthisと下のthisは違ってしまうからうごかんわw

this.Add = function(line){
の上に
var self = this;
とかいれて、
下のthisをselfに置き換えればとりあえず動くよw
02312212012/10/02(火) 19:59:50.02ID:???
ありがとう
それでやったら動いた
0232nobodyさん2012/10/02(火) 20:36:44.53ID:???
このforEachはArray.prototype.forEachかと思ったら、lazyモジュールが提供するforEachメソッドなのか
javascriptの場合、コールバック関数内でthisが何になるかは、コールバックを渡した関数の仕様に依存することになるから
仕様がはっきりしない場合はthisは使えないと思ったほうがいいね
0233nobodyさん2012/10/02(火) 22:58:43.49ID:uRHsxp7z
varで変数宣言しないといけないのが、このスクリプト言語のムカつくところ。
0234nobodyさん2012/10/02(火) 23:24:35.04ID:???
varで宣言も別に悪くないと思うけどな。決めの問題で。
Pythonみたく代入した場所でスコープ決まったり、Rubyみたく変数名の表記で決まったり、それぞれルールがあるだけじゃね?
0235nobodyさん2012/10/02(火) 23:39:57.49ID:???
クソだと思うのはそれでいいから、二度と来ないでね
0236nobodyさん2012/10/06(土) 23:43:38.61ID:???
なんでJavaScriptだけthisの意味が違うのが謎だ
C#やC++とかだとthisはオブジェクトのインスタンス自身を表すことになってるのに、なぜかJavaScriptだけ別物
0237nobodyさん2012/10/07(日) 07:01:11.25ID:???
頭固いですね
0238nobodyさん2012/10/07(日) 17:10:29.74ID:???
Javascripのthisのスコープが変るのは、
オブジェクト生成後にあとからメソッドが追加できるという自由すぎる言語特性ゆえ、
thisのスコープをJavaなんかと同様にしてしまうと、弊害があると考えられたから。
これ結構常識だと思うのだけど...
0239nobodyさん2012/10/13(土) 13:32:24.29ID:???
meteor、設計思想が全然違うのな。
サンプルのleaderboard見てクラクラきた。
慣れると楽なのかな?
0240nobodyさん2012/10/20(土) 10:25:51.21ID:nMqOZ8tI
twitterからjqueryを使ってJSONデータを抽出したいんですけれど、なかなか思うように行きません。まずコードを記します。
// コールバック関数

$("#twi").append('<li><div class="icon"><a href="https://twitter.com/'+ val.from_user +'"><img width="60px" height="60px" alt="'+ val.from_user +'" src=" ' +
val.profile_image_url +'" /></a></div>'+ '<div class="text"><dl><dt><strong>ユーザー名</strong>: ' + val.from_user +
'<br/><strong>投稿時間(GMT)</strong>: ' + val.created_at +
'</dt><dd><strong>投稿文</strong>:<pre> '+ val.text +'</pre></dd></dl></div></li>');
//GMTをどうにか日本時間にしたい
});

//アクセス先のURL
jQuery.getJSON('http://search.twitter.com/search.json?callback=?',
//サーバーに送るデータ
{q:'さとし+OR+ピカチュウ',//複雑なnot検索がしたい
//AND検索は、クエリを「+」(スペース)で繋ぐ
//OR検索は、クエリを「+OR+」で繋ぐ
//NOT検索は、除外したいクエリの前に「-」をつける
//フレーズ検索は、フレーズを「"」で囲む


ここにおいて、まずGMTを日本時間(JPN)に直すにはどうしたらいいのか。
そして複雑なNOT検索(例えばAという単語について、
BとCという単語が付属しているものを除外する。また単独のフレーズとして
DとFという単語を除外する。)をするにはどうしたらいいのか。
以上の2点について教えてください!
0241nobodyさん2012/10/20(土) 10:29:48.62ID:nMqOZ8tI
補足です。時間は
Sat, 20 Oct 2012 01:27:30 +0000
という表記を
2012年10月20日(土) 10:27
としたいです。
0242nobodyさん2012/10/20(土) 11:05:33.73ID:nMqOZ8tI
すいません。クライアントサイドのスレと間違えました
0243nobodyさん2012/12/25(火) 02:53:11.59ID:???
相変わらず過疎ってるな
ちょい前にNodeの1.0ブランチできたってね
0244nobodyさん2012/12/25(火) 13:51:52.77ID:???
へー
■ このスレッドは過去ログ倉庫に格納されています