最新 / RSS
Kreisel / 無間巡回 / ガジェット(仮)

ChangeLog::hjk

最近 7 日分 / 今月の一覧

2018-05-21 Mon

やり直し viora project (4.Note:2) ~~ Buffer.concat(body).toString ~~ [node.js][project:viora][toc]

chunk はバイナリ。これを文字列に直す。

// [ <Buffer 6b 61 6b 69 6b 6f 6d 69 3d 61 61 61> ] --> kakikomi=111





body.toString();


でもいけるが、勧められてない。
https://stackoverflow.com/questions/40238063/why-use-buffer-concatbody-tostring-instead-of-uint8array-buffer-tostring

2018-05-20 Sun

やり直し viora project (4.Note1) ~~ querystrings ~~ [node.js][project:viora][toc]

文字列を配列に直す(データ取り出しのため)

// kakikomi=111 --> { kakikomi: 111 }


// 文字列をオブジェクト形式に変換する。
console.log(parse("login=yes")) // { login: 'yes' }


https://qiita.com/chuck0523/items/d8cff2ecfd208e8e513c

2018-05-19 Sat

やり直し viora project ~~ TOC ~~ [node.js][project:viora][toc]

(1) ~~ サーバの基本 ~~ [2018-05-16]
(2) ~~ switch文で url による処理変更 ~~ [2018-05-17]
(3) ~~ text/plain -> text/html ~~ [2018-05-18]

やり直し viora project (4) ~~ 一行掲示板(バッファつき) ~~ [node.js][project:viora][toc]


// $ mkdir /tmp/bbs
// $ cd /tmp/bbs
// $ touch bbs.js
// $ source ~/.nvm/nvm.sh

const http = require('http'),
      hostname = 'localhost',
      port = 3000,
      server = http.createServer();

server.on('request', function(req, res){
    res.statusCode = 200;
    res.setHeader('Content-Type', 'text/html; charset=UTF-8');

    switch (req.url) {
    case '/':
        topPage(req,res);
        break;
    case '/up':
        upPage(req,res);
        break;
    default:
        notFoundPage(req,res);
        break;
    }

});

server.listen(port, hostname, function(){
    console.log(`Server running at http://${hostname}:${port}/`);
});

//// function...

function header(req,res) {
    // header
    res.write('<DOCTYPE html>');
    res.write('<html><head><title>bbs.js</title></head><body>');
    res.write('<nav><ul><li><a href="/">top</a></li><li><a href="/up">up</a></li></ul></nav>');
}

function footer(req,res) {
    // footer
    res.write('</body></html>');
    res.end();
}

/* localhost:3000/ */
function topPage(req,res) {
    header(req,res);
    res.write('<h2>TopPage</h2>');
    res.write('<ul>');
    for(row of posts) {
        res.write('<li>'+row+'</li>');
    }
    res.write('</ul>');
    footer(req,res);
}

/* localhost:3000/up */
var posts = [];
function upPage(req,res) {
    header(req,res);
    /* GET */
    if(req.method === 'GET') {
        res.write('<h2>Now POST</h2>\n');
        res.write('<form action="/up" method="post"><input name="kakikomi" type="text"><input type="submit" value="submit"></form>');
        // /*
        res.write('<ul>');
        for(row of posts) {
            res.write('<li>'+row+'</li>');
        }
        // */
    res.write('</ul>');

        footer(req,res);
    }
    /* POST */
    if(req.method === 'POST') {
        let body = [];
        req.on('data', function(chunk) {
            body.push(chunk);
        });
        req.on('end', function() {
            //body = Buffer.concat(body).toString(); // [ <Buffer 6b 61 6b 69 6b 6f 6d 69 3d 61 61 61> ] --> kakikomi=111
            body = body.toString();
            console.log(body);
            const querystring = require('querystring');
            parsedbody = querystring.parse(body); /**/

            if(parsedbody.kakikomi) {
                //posts.push(parsedbody.kakikomi);
                posts.unshift(parsedbody.kakikomi);
                res.write('<h2>Now kakikomi done.</h2>');
                // /*
                res.write('<ul>');
                for(row of posts) {
                    res.write('<li>'+row+'</li>');
                }
                // */
                //res.write(decodeURIComponent(parsedbody.kakikomi));
            }
            footer(req,res);
        });
    }
}

/* NotFound page */
function notFoundPage(req,res) {
    header(req,res);
    res.write('<h1>another page</h1>');
    footer(req,res);
}

// node bbs3.js


2018-05-18 Fri

やり直し viora project (3) ~~ text/plain -> text/html ~~ [node.js][project:viora]





// $ mkdir /tmp/bbs
// $ cd /tmp/bbs
// $ touch bbs.js
// $ source ~/.nvm/nvm.sh

const http = require('http'),
      hostname = 'localhost',
      port = 3000,
      server = http.createServer();

server.on('request', function(req, res){
    res.statusCode = 200;
    res.setHeader('Content-Type', 'text/html; charset=UTF-8');

    // header
    res.write('<DOCTYPE html>');
    res.write('<html><head><title>bbs.js</title></head><body>');
    res.write('<nav><ul><li><a href="/">top</a></li><li><a href="/up">up</a></li></ul></nav>');

    switch (req.url) {
    case '/':
        res.write('<h1>top page</h1>');
        break;
    case '/up':
        res.write('<h1>up page</h1');
        break;
    default:
        res.write('<h1>another page</h1>');
        break;
    }

    // footer
    res.write('</body></html>');
    res.end();
});

server.listen(port, hostname, function(){
    console.log(`Server running at http://${hostname}:${port}/`);
});

// node bbs.js


http://ichi-bit.hateblo.jp/entry/2017/11/01/node_js%E3%81%A0%E3%81%91%E3%81%A7%E6%8E%B2%E7%A4%BA%E6%9D%BF%E3%82%A2%E3%83%97%E3%83%AA%E3%82%92%E4%BD%9C%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%8B(1)

Referrer (Inside): [2018-05-19-2]

2018-05-17 Thu

やり直し viora project (2) ~~ switch文で url による処理変更 ~~ [node.js][project:viora]

switch(req.url) は ドット . だぞ(カンマじゃないぞ)



http://loalhost:3000/
http://loalhost:3000/up
http://loalhost:3000/404
による切り分け


// $ mkdir /tmp/bbs-video
// $ cd /tmp/bbs-video
// $ touch 02.switch.js
// $ source ~/.nvm/nvm.sh

const http = require('http'),
      hostname = 'localhost',
      port = 3000,
      server = http.createServer();

server.on('request', function(req,res){
    res.statusCode = 200;
    res.setHeader('Content-Type', 'text/html; charset=UTF-8');

    switch(req.url){
    case '/':
        topPage(req,res);
        break;
    case '/up':
        upPage(req,res);
        break;
    default:
        notFoundPage(req,res);
        break;
    }
});

/* functions */
function header(req,res){
    res.write('<!DOCTYPE html>');
    res.write('<html><body>');
}

function footer(req,res){
    res.write('</body></html>');
    res.end();
}

function topPage(req,res){
    header(req,res);
    res.write('<h1>Top Page</h1>');
    footer(req,res);
}

function upPage(req,res){
    header(req,res);
    res.write('<h1>Up Page</h1>');
    res.write('<form action="/up" method="post"><input type="text" name="kakikomi"><input type="submit" value="submit"></form>');
    footer(req,res);
}

function notFoundPage(req,res){
    header(req,res);
    res.write('<h1>Not Found Page</h1>');
    footer(req,res);
}

server.listen(port, hostname, function(){
    console.log(`Server running at http://${hostname}:${port}/`);
});

// node 02.switch.js


http://ichi-bit.hateblo.jp/entry/2017/11/01/node_js%E3%81%A0%E3%81%91%E3%81%A7%E6%8E%B2%E7%A4%BA%E6%9D%BF%E3%82%A2%E3%83%97%E3%83%AA%E3%82%92%E4%BD%9C%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%8B(1)

Referrer (Inside): [2018-05-19-2]

2018-05-16 Wed

やり直し viora project (1) ~~ サーバの基本 ~~ [node.js][project:viora]



[2017-08-18]まで戻る…。

- statusCode = ;
- setHeader();

を追加。


// $ mkdir /tmp/bbs
// $ cd /tmp/bbs
// $ touch bbs.js
// $ source ~/.nvm/nvm.sh

const http = require('http'),
      hostname = 'localhost',
      port = 3000,
      server = http.createServer();

server.on('request', function(req, res){
    res.statusCode = 200;
    res.setHeader('Content-Type', 'text/plain');
    res.write('Hello, World!');
    res.end();
});

server.listen(port, hostname, function(){
    console.log(`Server running at http://${hostname}:${port}/`);
});

// node bbs.js


http://ichi-bit.hateblo.jp/entry/2017/11/01/node_js%E3%81%A0%E3%81%91%E3%81%A7%E6%8E%B2%E7%A4%BA%E6%9D%BF%E3%82%A2%E3%83%97%E3%83%AA%E3%82%92%E4%BD%9C%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%8B(1)

Referrer (Inside): [2018-05-19-2]

2018-05-15 Tue

npm unistall -g [node.js]

グローバルで入れたものも npm unistall でいける