記録として残しておきたいブログ

主にプログラミングについて書きます。現在は http://tmg0525.hatenadiary.jp/ に書いています。

<Python> coding:utf-8 の記述するところ

# -*-coding: utf-8 -*-

を記述するところは一番上!!

そうしないと

SyntaxError: Non-ASCII character '\xe5' in file D:\Program Files (x86)\pleiades\workspace\commentRank\src\fileTest\fileT.py on line 16, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details

こんなエラーが出る


気をつけよう

OJTで学んだこと

メモとして書いておく

・限られた時間の中で作業をしていくのは大変であること
・指摘されたところは再度指摘されないように細心の注意を払って修正を行うこと
・1日のスケジュールを立てることにより、やることが明確になり、仕事がやりやすくなること
・時間(納期)は絶対に守らなくてはいけないが、それ以上に品質が大切であること
・スケジュール作成時に、行うタスクの内容を少しでも確認することで時間の設定がしやすくなること
・成果物の確認後に、修正が出た場合にはその日のうちに修正をすること
・スケジュールで一番優先順位の高いタスクは、ほかの人が絡む作業(聞かないと進まない作業など)であること
・難易度が高そうな作業をするときには、自分の中で「この作業は難易度が高い」と考えておくことが大切。もし、考えないとただ闇雲に作業をして、時間だけが過ぎてしまう可能性があるため
・バグを直した後には、ほかの部分に影響していないかをよく確認すること
・仕様書がしっかりと作れていれば、後々の製作が順調に進めることができること

Node.js error: invalid frontend message type 0 ってエラー出た

var pg = require('pg');
var http = require('http');
var fs = require('fs');
var ejs = require('ejs');


var testEjs = fs.readFileSync('public_html/postgres.ejs', 'utf-8');

// httpサーバーの作成
var server = http.createServer();

var conString = 'postgres://postgres:tmgykng324@localhost/cas_db';
var client = new pg.Client(conString);

server.on('request', function(req, res) {
    if(req.url != '/favicon.ico') {

        // postgreSQLに接続
        client.connect(function(err) {
            if(err) {
                // エラー時
                return console.error('could not connect to postgres', err);
            }

            var userData = [2];
            userData[0] = [];   // user_id
            userData[1] = [];   // create_date

            // SELECTのSQLを実行
            client.query('SELECT user_id, create_date FROM m_user;', function(err, result) {
                if(err) {
                    // エラー時
                    return console.error('error running query', err);
                }

                // 表示用に格納
                for(var i = 0; i < result.rowCount; i++) {
                    console.log(result.rows[i].user_id + ' ' + result.rows[i].create_date);
                    userData[0][i] = result.rows[i].user_id;
                    userData[1][i] = result.rows[i].create_date;
                }

                var content = ejs.render(testEjs, {
                    'userData': userData
                });

                client.on('error', function(err){
                    return console.log(err);
                });

                client.on('drain', client.end.bind(client));

                res.writeHead(200, {'Content-Type': 'text/html'});
                res.write(content);
                res.end();
            });
        });
    }
});
server.listen(8888);
console.log('server listening...');


上のコードを実行してブラウザでlocalhost:8888に2回アクセスすると

error: invalid frontend message type 0


ってエラー出た

var client = new pg.Client(conString);


この記述はリクエストイベントの中で書くべきらしい。

client.connect();

の前あたりかな?




参考サイト
javascript - Can not close postgreSQL connection within Node.js script - Stack Overflow

Node.js WEBサーバーの基礎コード(?)

var http = require('http');         // httpをロード

var server = http.createServer();   // serverオブジェクトの作成
server.on('request', doRequest);    // 'request'イベントにdoRequest関数を関連付ける
server.listen(8888);                // ポート番号8888で待ち受け開始
console.log('Server running!');

// リクエストの処理
function doRequest(req, res) {
    // ヘッダ情報
    res.writeHead(200, {'Content-Type': 'text/plain'});

    // ボディ部分
    res.write('Hello World\n');

    // コンテンツ出力の完了
    res.end();
}


require(moduleName)
モジュールを読み込んで利用可能にする
引数

  • moduleName <String>
    • 読み込みたいモジュール名


http.createServer([requestListener])
http.Serverオブジェクトを作成し、返す。
Node.jsの「サーバー」の部分


emitter.on(eventName, listener)
イベントハンドラを登録する
イベントハンドラに与えられる引数はイベントに応じて異なる。
引数

  • eventName <String>
    • イベント名
  • listener <Function>

'request'イベントにdoRequest()関数を関連付けている。
クライアントからのリクエストの処理を行う

イベントハンドラの説明=>https://mag.osdn.jp/13/03/18/0939236/3


server.listen([port][, hostname][, backlog][, callback])
サーバーの待ち受けを開始
引数

  • port <Number>
    • ポート番号

listen()関数はポート番号を指定する と覚えておく。

doRequest()内の処理

'request'イベントの場合は、イベントハンドラには2つの引数が渡される。
doReqest(request, response)

  • request
    • クライアントからのリクエストに関する機能
  • response
    • サーバーからクライアントへ送るレスポンスに関する機能

この2つの引数を使って処理していく。


response.writeHead(statusCode[, statusMessage][, headers])
ヘッダー情報をレスポンスに書き出し
response.end()が呼び出される前に呼び出すこと。
引数

今回は、「このコンテンツは標準出力ですよ」ということがクライアントに送られる。


response.write(chunk[, encoding][, callback])
ボディとなる部分のコンテンツの書き出し
何回でも.write()は呼び出せる


response.end([data][, encoding][, callback])
コンテンツの出力の完了
レスポンス処理の終わり


「writeHead」 「write」 「end」 の3つがあればクライアントへ返答できる


参考サイト
Node.jsのスクリプトの基本を覚えよう(1/5):ビギナーのための Node.jsプログラミング入門
Node.jsのスクリプトの基本を覚えよう(2/5):ビギナーのための Node.jsプログラミング入門

Node.jsで非同期処理をフロー制御する<asyncモジュール>

目次

  • 目次
  • 環境
  • Node.jsは非同期処理
  • asyncモジュール
    • series()<順次実行>
    • parallel() <並列実行>
    • waterfall() <次の関数へ引数を渡す>

環境

OS : Windows10
Node.js : v6.9.4

Node.jsは非同期処理

Node.jsは非同期処理をするプログラミング言語

順番に処理するためにコールバック関数を利用する。

コールバック関数でも対処できるがネストが多くなって見た目が良くない。


ここで、asyncモジュールを使う。

asyncモジュール

・モジュールのインストール方法こちら
・asyncの公式ドキュメントはこちら

続きを読む