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

2014年11月5日水曜日

Ti.SwipeRefreshLayout - Titanium Refreshモジュール(Android)

Titanium module for Android's SwipeRefreshLayout.


2014年10月30日木曜日

Node.jsファイル書き込み例

Node.jsファイル書き込み例です。

var fs = require('fs');

(function () {
    var data = "write 日本語!";
    fs.writeFile('日本語.txt', data, function (err) {
        if (err)
            console.log(err);
    });
})();

2014年10月29日水曜日

nginx最大パフォーマンスを出すための基本設定

nginx

nginx最大限にスピードを出すために、設定パラメーターをチュニングしました。

nginx設定例


user www-data;
pid /var/run/nginx.pid;
worker_processes auto;
worker_rlimit_nofile 100000;

proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

events {
    worker_connections 2048;
    multi_accept on;
    use epoll;
}

http {
    server_tokens off;
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;

    access_log off;
    error_log /var/log/nginx/error.log crit;

    keepalive_timeout 10;
    client_header_timeout 10;
    client_body_timeout 10;
    reset_timedout_connection on;
    send_timeout 10;

    limit_conn_zone $binary_remote_addr zone=addr:5m;
    limit_conn addr 100;

    include /etc/nginx/mime.types;
    default_type text/html;
    charset UTF-8;

    gzip on;
    gzip_http_version 1.0;
    gzip_disable "msie6";
    gzip_proxied any;
    gzip_min_length 1024;
    gzip_comp_level 6;
    gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript application/json;

    open_file_cache max=100000 inactive=20s;
    open_file_cache_valid 30s;
    open_file_cache_min_uses 2;
    open_file_cache_errors on;

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}

2014年10月15日水曜日

Node.jsエラー処理例(domainモジュール)

Node.jsエラー処理例(domainモジュール)

// Node.jsエラー処理例(domainモジュール)
var fs = require('fs');
var util = require('util');

(function () {
    var d = require('domain').create();
    d.on('error', function (err) {
        //console.log('domain error:', toJson(err));
        console.log(err.stack);
    });
    d.run(function () {
        f1();
    });
})();

function f1() {
    fs.readFile('package.json', function (err, data) {
        if (err) throw err;
        console.log(a.aa.aaa, data.toString());
    });
}

function toJson(obj) {
    return util.inspect(obj, {
        showHidden: true,
        depth: null
    });
}

2014年4月3日木曜日

Node.js勉強サイト

最近Node.jsの勉強にはまっています、やはり従来の同期型のプログラミングモデルよりはNode.jsのような非同期プログラミングモデルの方が面白いです。

http://nodejs.osser.jp

2014年3月1日土曜日

UbuntuでRedisパッケージインストール

自分でRedisソースをダウンロードして、コンパイルするのは結構面倒くさいなので、Ubunut PPAを利用して自動的にインストールできるようになります。

手順:

$ sudo apt-get install -y python-software-properties
$ sudo add-apt-repository -y ppa:rwky/redis
$ sudo apt-get update
$ sudo apt-get install -y redis-server

Redisオフィシャルサイト

http://redis.io/

Redis勉強本も紹介します


node.jsでredisにアクセスライブラリも紹介します

https://github.com/mranney/node_redis


2014年1月6日月曜日

KrakenJS入門

Amazon.co.jpの「カスペルスキー 2014」をまとめて買うと最大2000円OFFキャンペーン
nodejsのウェブ開発MVCフレームワークKrakenJSを紹介します。

generator-krakenジェネレーターをインストールする

#このコマンドでyo, grunt, bowerも一緒にインストールされる
$sudo npm install -g generator-kraken

#krakenテンプレートを使ってウェブサイトプロジェクトを作成します

$ yo kraken

     ,'""`.
    / _  _ \
    |(@)(@)|   Release the Kraken!
    )  __  (
   /,'))((`.\
  (( ((  )) ))
   `\ `)(' /'

[?] Application name: HelloWorld
[?] Description: A test kraken application
[?] Author: YourName GoesHere

#サイトサーバーを起動させます

$ cd HelloWorld
$ npm start

> helloworld@0.0.1 start ~/HelloWorld
> node index.js

Listening on 8000

2014年1月4日土曜日

grunt入門

ビルドツールgruntの最初の入門サンプルを紹介します。

http://gruntjs.com/

まず、インストールを

sudo npm install -g generator-kraken

このコマンドはyo, grunt, bower, kerkenjsを一括にインストールできます。

gruntだけインストールしたい場合、このコマンドです。

npm install -g grunt-cli

インストールしたら、フォルダを作って、下記の二つのファイルを用意します。

package.json
Gruntfile.js

Chrome開発勉強

Chrome開発ツールを利用してウェブ開発手法ビデオを紹介します。

http://discover-devtools.codeschool.com/

kraken.js - Node.js MVCフレームワーク

今までExpressを使って開発してるんですが、いろいろ不便がありますので、PayPalのMVCフレームワークkraken.jsを勉強し始めました。

http://krakenjs.com/

必須知識:

yeoman(yo, grunt, bower)
http://yeoman.io/

dustjs(linkedin)
http://linkedin.github.io/dustjs/

まず、gruntの勉強を…
http://gruntjs.com/

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

ホームページ