【JavaScript】配列の操作で躓いた。

// 理想
[ [0, 1],[0, 2],[0, 3] ];
// 現実
[ [[0, 1]], [[0, 2]], [[0, 3]] ];

結論から言うとspliceを使っていたことが原因だったようだ。
こうじゃなくて、

[0, 1]

こう切り出してくれる。

[[0, 1]]

要するに切り出した要素を配列にして返してくれるようだ。

// 要素の先頭を取得
var elem = array[0];
// 要素の先頭を削除
array.splice(0, 1);

あと二回は同じ失敗すると思ったのでまとめた。

【正規表現】数字の取得

正規表現で数字を切り出す方法。

$("form").submit(function(e){
	// submitをキャンセル。
	//	たまに引数に e を入れ忘れる。僕だけか
	e.preventDefault();
	
	// input:text#num
	var num = $("#num").val();
	
	// 1桁のみ
//	var checkNum = num.match(/[0-9]/);

	// 2桁以上も+をつけることで対応
	var checkNum = num.match(/[0-9]+/);
	

	// console.log(~~(checkNum)); //数値化。しないと文字列
	console.log(checkNum);
	// 0	-> 0
	// abc1	-> 1
	// 2bc3	-> 2
	// 456d	-> 456

});

【Express】POST機能の実装

var express = require('express'),
	// formの値を受け取るためのもの。4.xからこちらを使用。
	//	$npm install body-parser
	bodyParser = require('body-parser'),
	// errorを出すためのもの。4.xからこちらを使用
	//	$npm install morgan
	morgan = require('morgan'),
	app = express();

// テンプレートエンジンの指定とそのディレクトリの指定
app.set("views", __dirname + "/views");
app.set("view engine", "ejs");

// 上から順番に読み込まれる。
app.use(bodyParser());
app.use(morgan());
app.use(express.static(__dirname + "/public"));


// http://localhost/ に入った時に呼び出される。
app.get("/", function(req, res){
	// index.ejsを表示させる。
	res.render("index");
});

// 
//	
//	
//
app.post("/hoge", function(req, res){
	res.send(req.body.name);
});

socket.io 基礎

基本的なもののまとめ。

サーバー

var app = require("http").createServer(handler),
    io = require("socket.io")(app),
    fs = require("fs");
 
// port番号の設定(1337)
app.listen(1337);
 
function handler(req, res){
    fs.readFile(__dirname + "/index.html",function(err, data){
        if(err){
            res.writeHead(500);
            return res.end("Error loading index.html");
        }
         
        res.writeHead(200);
        res.end(data);
    });
}
 
 
io.on("connection", function(socket){
	// ここに置くと、接続してきたクライアントのみに"hello"というテキストを"first"に送る。
	socket.emit("first", "hello");
	
	// broadcastを使用すると、"hi"というテキストを"second"に送る。
	socket.broadcast.emit("second", "hi");

	// 接続しているクライアント全てに"bye"を送る
	io.sockets.emit("third", "bye");


	// クライアントから"hoge"でデータが送られてきた際に実行される。
    socket.on("from client".function(data){
		// 送られてきたデータはdataに格納される。jsonも可
        console.log(data.test); // てすと
    });
    
     
});

クライアント

var socket = io("http://localhost");

socket.on("first", function(data){
	console.log(data); // "hello"
});
socket.on("second", function(data){
	console.log(data); // "hi"
});
socket.on("third", function(data){
	console.log(data); // "bye"
});

socket.emit("from client", {
	test: "てすと"
});