自分で作ったり提供したりするものは、まず自分自身で使ってみろろということです。自分じゃ使わないものなら人はいくらでも無責任にも無思考にもなれる。そういう投げやりな「サービス」やら「プロダクツ」なんて、だれだってイヤだ。自分が作り手と同時に利用者の立場になれば、ちゃんと使えるレベルのものを提供しようとします。

2013年10月13日日曜日

Ubuntuファイアウォール知識メモ-ufw

Ubuntuファイアウォール機能をまとめます。Redhat系のLinuxシステム(CentOSなど)はiptablesを使ってファイアウォールを機能しています、Ubuntuはもちろんiptablesコマンドで設定できますが、このトピックはこれを割愛して、もっと簡単なツール―ufwの知識を紹介します。

ファイアウォール状態確認
sudo ufw status
ファイアウォールを起動
sudo ufw enable
ファイアウォールを停止
sudo ufw disable
ファイアウォールログ機能を起動
sudo ufw logging on
ファイアウォールログ機能を停止
sudo ufw logging off
ファイアウォールサービス再起動
sudo service ufw restart
基本はファイアウォールが起動したら、デフォールトとしてすべてのポートをブロックされます、必要なポートを後自分で一つ一つオープンするようにします。
ポートオープン
sudo ufw allow 22
TCPポートのみオープン
sudo ufw allow 22/tcp
UPDポートのみオープン
sudo ufw allow 53/udp
サービス名で設定
sudo ufw allow ssh
※サービス名チェック
less /etc/services
ルール削除
sudo ufw delete allow 22
IPアドレス許可
sudo ufw allow from 192.168.1.1
IPアドレス禁止
sudo ufw deny from 192.168.1.1
セグメント許可
sudo ufw allow from 192.168.1.0/24
セグメント禁止
sudo ufw deny from 192.168.1.0/24
あるIPアドレスからポート許可
sudo ufw allow from 192.168.1.1 to any port 22
あるIPアドレスをポート禁止
sudo ufw deny from 192.168.1.1 to any port 22
ping禁止
sudo nano -wciE -T 4 /etc/ufw/before.rules
...
#-A ufw-before-input -p icmp --icmp-type echo-request -j ACCEPT
-A ufw-before-input -p icmp --icmp-type echo-request -j DROP
...

2013年10月12日土曜日

UbuntuでMongoDBインストール

MongoDBをUbuntuでインストールしてみました。

参照URL
http://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/

#MongoDB GPGキー追加
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10

#MongoDBサーバーリストを追加
echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | sudo tee /etc/apt/sources.list.d/mongodb.list

#Ubuntuシステム更新(上記設定した内容を適用)
sudo apt-get update

#MongoDBインストール
sudo apt-get install mongodb-10gen

#インストールMongoDBバージョン選択もできる
apt-get install mongodb-10gen=2.2.3
echo "mongodb-10gen hold" | sudo dpkg --set-selections

#インストールした関連ファイル
/etc/mongodb.conf
/etc/init.d/mongodb
/var/lib/mongodb
/var/log/mongodb

#MongoDBサービス利用
sudo service mongodb start
sudo service mongodb stop
sudo service mongodb restart

Node.jsオブジェクト指向プログラミング

Node.jsオブジェクト指向サンプルを紹介します。

object.js
function Helo(){
    var name;

    this.setName = function(pName){
        this.name = pName;
    }

    this.sayHelo = function(){
        console.log('Helo ' + this.name);
    }
};

//exports.Helo = Helo;
module.exports = Helo;

object_use.js
var Helo = require('./object');

helo1 = new Helo();
helo1.setName('koma');
helo1.sayHelo();

helo2 = new Helo();
helo2.setName('xiaoma');
helo2.sayHelo();

Node.jsモジュールサンプル

Node.jsで膨大なアプリを開発する場合、すべてのロジックをワインファイルに書くわけではないですから、モジュール化にする必要です。

module.js
var name;

exports.setName = function(pName){
    this.name = pName;
};

exports.sayHelo = function(){
    console.log('Helo ' + this.name);
};

module_use.js
var myModule = require('./module');

myModule.setName('koma');
myModule.setName('xiaoma');
myModule.sayHelo();

Node-Eventサンプル

Node.jsはイベント駆動開発フレームワークです、ここはイベントサンプルをメモします。

var EventEmitter = require('events').EventEmitter;
var event = new EventEmitter();

event.on('myevent', function(){
    console.log('myevent occured.');
});

setTimeout(function(){
    event.emit('myevent');
}, 2000);

ファイル存在判定(node.js)

Node.jsでファイル存在判定サンプルです。

仕様:
ファイル存在すれば、ファイル内容を出力;
存在しなければ、エラー内容を出力。

nano readfile.js
...
var fs = require('fs');

fs.readFile('test1.js', 'utf-8', function(error, data){
    if (error) {
        console.error(error);
    }
    else {
        console.log(data);
    }
});
...

2013年10月11日金曜日

httpサーバー自作成

Node.jsを使って、簡単にhttpサーバーを作成できます。

var http = require('http');
var path = require('path');

http.createServer(
        function(request, response) {
            var lookup = path.basename(decodeURI(request.url));
            response.writeHead(200, {
                'Content-Type' : 'text/plain'
            });

            var pages = [ {
                route : '',
                output : 'Woohoo!'
            }, {
                route : 'about',
                output : 'About Page'
            }, {
                route : 'another',
                output : function() {
                    return "This is a route.";
                }
            } ];

            pages.forEach(function(page) {
                if (page.route == lookup) {
                    response.writeHead(200, {
                        'Content-Type' : 'text/plain'
                    });
                    response.end(typeof page.out === 'function' ? page.output()
                            : page.output);
                }
            });

            if (!response.finished) {
                response.writeHead(404);
                response.end('Page Not Found.');
            }

        }).listen(8080, '127.0.0.1');
console.log('Server running at http://127.0.0.1:8080/');

2013年10月9日水曜日

オブジェクト指向-Javascript

オブジェクト指向Javascriptサンプル

サンプルコード
// javascriptオブジェクト宣言
var Person = function(living, age, gender){
    this.living = living;
    this.age = age;
    this.gender = gender;
    this.getGender = function(){return this.gender}
}

// インスタンス作成
var cody = new Person(true, 33, 'femail');

// JSON出力
console.log(cody);
console.log('cody.getGender()=' + cody.getGender());

// String型オブジェクト
var myString = new String('google!');

console.log(myString);

2013年10月6日日曜日

Ubuntuカーネルファイル削除

/boot容量を開放する方法を紹介します。

#/boot内容確認
ll /boot
...
#linuxカーネルパッケージ確認
dpkg --get-selections |grep linux-image
linux-image-3.2.0-31-generic                    install
linux-image-3.2.0-32-generic                    install
linux-image-3.2.0-33-generic                    install
linux-image-3.2.0-34-generic                    install
linux-image-3.2.0-35-generic                    install
linux-image-3.2.0-36-generic                    install
linux-image-3.2.0-37-generic                    install
linux-image-generic                             install
...
#不要なlinuxカーネルを削除
sudo apt-get remove -y linux-image-3.2.0-31-generic
sudo apt-get autoremove -y
...
#/boot容量確認
df -h
#使用中カーネルバージョン確認
uname -a

2013年10月5日土曜日

Ubuntuでnode.jsインストール

参照ページ:
https://github.com/joyent/node/wiki/Installing-Node.js-via-package-manager

インストール手順:
sudo apt-get update
sudo apt-get install python-software-properties python g++ make
sudo add-apt-repository ppa:chris-lea/node.js
sudo apt-get update
sudo apt-get install nodejs

Expressインストール(MVC)
sudo npm install express -g
express --version
3.4.0

インストール先:
/usr/lib/nodejs
/usr/lib/node_modules

ホームページ