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

2014年1月4日土曜日

Gitインストール(Ubuntu)

Ubuntu ServerにGitをインストールします。

Git(ギット)は、プログラムのソースコードなどの変更履歴を記録・追跡するための分散型バージョン管理システムである。もとはLinuxカーネルのソースコード管理に用いるためにリーナス・トーバルズによって開発され、それ以降ほかの多くのプロジェクトで採用されている。Linuxカーネルのような巨大プロジェクトにも対応できるように、動作速度に重点が置かれている。

Gitでは、各ユーザのワーキングディレクトリに、全履歴を含んだリポジトリの完全な複製が作られる。そのため、ネットワークアクセスがなく中心リポジトリにアクセスできない環境でも、履歴の調査や変更の記録といったほとんどの作業を行うことができる。これが「分散型」と呼ばれる理由である。

http://git-scm.com/

#Gitインストール
sudo apt-get install python-software-properties
sudo add-apt-repository ppa:git-core/ppa
sudo apt-get update
sudo apt-get install git

#文字化けを防ぐ
git config --global core.quotepath false

#Tagをチェックアウトして、新しいブランチを作成
git checkout -b v0.1.0 refs/tags/v0.1.0

#バージョン確認
git version

2013年11月7日木曜日

mongodb認証

MongoDBはデフォルトでユーザー認証機能をオフになっています、このトピックでユーザー認証機能をONにします。

ユーザー追加
$mongo
use test
db.addUser('uid1', 'pwd1');
db.addUser('uid2', 'pwd2', true); //readonly
exit

$sudo nano /etc/mongodb.conf
...
#アンコメント
auth = true
...

$sudo service mongodb restart

Done!

PS:
mongoose接続例
'mongodb://uid1:pwd1@192.168.1.1/test'

2013年10月27日日曜日

node.jsで jsonファイルを解析

node.jsでjsonファイルを解析して、中身を表示させるサンプルです。

コード
var fs = require('fs');
var path = require('path');
var pkg = JSON.parse(fs.readFileSync(path.join(__dirname, 'package.json')));
console.log(pkg.name);
console.log(pkg.version);
console.log(pkg.private);
console.log(pkg.scripts);
console.log(pkg.scripts.start);
console.log(pkg.dependencies);

実行結果
site01
0.0.1
true
{ start: 'nodemon app.js' }
nodemon app.js
{ express: '*',
  jade: '*',
  stylus: '*',
  mongoose: '*',
  nodemon: '*' }

2013年10月26日土曜日

リバースサーバーNginxは Ubuntuにインストール

リバースサーバーNginxインストール手順を紹介します。

参照URL
http://nginx.org/en/linux_packages.html

インストール手順
$wget http://nginx.org/keys/nginx_signing.key
$sudo apt-key add nginx_signing.key
$sudo nano /etc/apt/sources.list
...
#codename
#Version Codename
#10.04   lucid
#11.10   oneiric
#12.04   precise
#12.10   quantal
#13.04   raring
deb http://nginx.org/packages/ubuntu/ [codename] nginx
deb-src http://nginx.org/packages/ubuntu/ [codename] nginx
...
$apt-get update
$apt-get install nginx

$nginx -v
nginx version: nginx/1.4.3

2013年10月23日水曜日

node.jsモジュール一覧

node.js開発にはモジュールが必要不可欠です、下記のURLから利用可能なモジュールをご確認できます。

https://github.com/joyent/node/wiki/Modules

I like Node.js!

node.jsでmarkdown利用

node.jsのmarkedモジュールを使って、markdown文章を作成できます。

markedインストール
https://github.com/chjj/marked
npm install marked

サンプルコード
var marked = require('marked');
console.log(marked('I am using __markdown__.'));
console.log(marked('> scross site scripting!'));

実行結果
$node marked.js
<p>I am using <strong>markdown</strong>.</p>

<blockquote>
<p>scross site scripting!</p>
</blockquote>

※markdownも紹介
https://github.com/evilstreak/markdown-js
npm install markdown

サンプルコード
console.log('=====markdown出力=====');
var markdown = require( "markdown" ).markdown;
console.log( markdown.toHTML( "Hello *World*!" ) );
console.log( markdown.toHTML( 'I am using __markdown__.' ) );
console.log( markdown.toHTML( '> scross site scripting!' ) );

console.log('=====markedと比較=====');
var marked = require('marked');
console.log(marked('Hello *World*!'));
console.log(marked('I am using __markdown__.'));
console.log(marked('> scross site scripting!'));

実行結果
$node markdown.js
=====markdown出力=====
<p>Hello <em>World</em>!</p>
<p>I am using <strong>markdown</strong>.</p>
<blockquote><p>scross site scripting!</p></blockquote>
=====markedと比較=====
<p>Hello <em>World</em>!</p>

<p>I am using <strong>markdown</strong>.</p>

<blockquote>
<p>scross site scripting!</p>
</blockquote>

node.jsでメール送信処理

node.jsのnodemailerモジュールを使って、メール送信処理を紹介します。

nodemailerインストール
npm install nodemailer

送信コード
var nodemailer = require('nodemailer');
var transport = nodemailer.createTransport('SMTP', {
    host: 'stmp-server-ip',
    secureConnection: true,
    port: 465,
    auth: {
        user: 'smtpuser',
        pass: 'smtppass'
    }
});

var msg = {
    from: 'aaaa@fortest.com',
    to:   'bbbb@fortest.com',
    subject: 'this is a test mail.',
    text: '日本語テスト'
};

transport.sendMail(msg, function(error){
    if (error) {
        console.log('送信失敗');
    }
    else {
        console.log('送信終了');
    }
    msg.transport.close();
});

2013年10月22日火曜日

node.jsでhttpリクエストサンプル

Node.jsを使って、httpでウェブサイト内容をダウンロードする

var http = require('http');

var req = http.get('http://komanew.blogspot.jp', function(res){
    console.log(res.statusCode);
    console.log(res.headers.location);

    res.setEncoding('utf8');
    res.on('data', function(str) {
        console.log(str);
    });
});
req.on('timeout', function() {
    console.log('request timed out');
    req.abort()
});
req.on('error', function(err) {
    console.log("Error: " + err.code + ", " + err.message);
});

2013年10月20日日曜日

mongoose-virtualプロパティ

mongooseはバーチャルプロパティ(virtual property)をサポートしています、このトピックで紹介します。

var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test01');

var PersonSchema = new mongoose.Schema({
  name:{
      first:String,
      last:String
  }
});
PersonSchema.virtual('name.full').get(function(){
    return this.name.first + ' ' + this.name.last;
});
PersonSchema.virtual('name.full').set(function(name){
    var split = name.split(' ');
    this.name.first = split[0];
    this.name.last = split[1];
});

var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function callback () {

    var PersonModel = mongoose.model('Person',PersonSchema);

    var person1 = new PersonModel({
      name:{first:'koma',last:'endia'}
    });
    console.log("person1=" + person1.name.first + " " + person1.name.last);
    console.log("person1=" + person1.name.full);

    var person2 = new PersonModel({});
    person2.name.full = "koma endia";
    console.log("person2=" + person2.name.first + " " + person2.name.last);
    console.log("person2=" + person2.name.full);
});

javascriptコールバック例

Node.jsはコールバック関数をよく使われますので、コールバック簡単なサンプルをメモします。

function aaa(a, b, cb) {
    return cb(a, b);
}

function add(x, y) {
    return x+y;
}

console.log(add(1, 2));
console.log(aaa(2, 3, add));

$node callback.js
3
5

ホームページ