2014年12月1日月曜日

WebRTC リンクまとめ

Web notes.log
AWS-EC2上に自分用のSTUNサーバを立てる話
http://blog.wnotes.net/blog/article/stun-server-on-aws-ec2

Qiita
WebRTCのオープンソースソフトウェアまとめ
http://qiita.com/atskimura/items/97b2cc04e19781f4a4e6

CodeZine
WebRTC(PeerJS)で遠隔作業支援システムを作る(基礎知識編)
http://codezine.jp/article/detail/8016?p=3

2014年11月2日日曜日

2014年10月20日月曜日

Node.js で 同期処理 async

asyncをインストール
npm install async --save
同期処理
var async = require('async');

async.series([
    function (callback) {
        console.log("1");
        callback(null, 1);
    },
    function (callback) {
        console.log("2");
        callback(null, 2);
    },
    function (callback) {
        console.log("3");
        callback(null, 3);
    },
    function (callback) {
        console.log("4");
        callback(null, 4);
    },
], function (err, results) {
    if (err) {
        throw err;
    }else{
        console.log('all task done. ' + results);
    }
});

Node.js から DynamoDB を操作

AWS-SDKをインストール
npm install aws-sdk --save
設定ファイルを作成 aws_config.json
{
     "accessKeyId":"xxxxxxxx",
     "secretAccessKey":"xxxxxxxx",
     "region":"ap-northeast-1"
}
DynamoDB接続
 var aws = require('aws-sdk');
 aws.config.loadFromPath('./aws_config.json');
 var dynamodb = new aws.DynamoDB({ endpoint: new aws.Endpoint('http://localhost:8000') });
createTable
   var params = {
      TableName: 'TEST_01', /* required */
      AttributeDefinitions: [ /* required */
         {
            AttributeName: 'ID', /* required */
            AttributeType: 'S' /* required */
         },
         {
            AttributeName: 'TIME_STAMP', /* required */
            AttributeType: 'S' /* required */
         },
         /* more items */
      ],
      KeySchema: [ /* required */
         {
            AttributeName: 'ID', /* required */
            KeyType: 'HASH' /* required */
         },
         {
            AttributeName: 'TIME_STAMP', /* required */
            KeyType: 'RANGE' /* required */
         },
         /* more items */
      ],
      ProvisionedThroughput: { /* required */
         ReadCapacityUnits: 1, /* required */
         WriteCapacityUnits: 1 /* required */
      },
   };
   dynamodb.createTable(params, function(err, data) {
    if (err){ console.log(err); }// an error occurred
    else { console.log(data);} // successful response
    });
putItem
   console.log("putItem");
   dynamodb.putItem({
    TableName:"TEST_01",
    Item:
    {
     ID: {S:"id1"},
     TIME_STAMP: {S:"2013-10-01 00:00:00"},
     TEXT:   {S:"text"},
     NAME:   {S:"name"}
    }
   },
   function(err,data){
    if (err){ console.log(err); }
    else { console.log(data);}
   });
getItem
   dynamodb.getItem(
   {
    TableName:"TEST_01",
    Key: {
     ID: {S:"id1"},
     TIME_STAMP: {S:"2013-10-01 00:00:00"},
    }
   },function(err,data){
    if (err){ console.log(err); }
    else { console.log(data);}
   });
query
   dynamodb.query(
   {
    TableName:"TEST_01",
    KeyConditions : 
    {
     "ID" : 
     {
      AttributeValueList:[
       {S:"id1"}
      ],
      ComparisonOperator:'EQ',
     },
    }
   },function(err,data){
    if (err){ console.log(err); }
    else { console.log(data);}
   });
   dynamodb.query(
   {
    TableName:"TEST_01",
    KeyConditions : 
    {
     "ID" : 
     {
      AttributeValueList:[
       {S:"id1"}
      ],
      ComparisonOperator:'EQ',
     },
     "TIME_STAMP" : 
     {
      AttributeValueList:[
       {S:"2013-10-01 00:00:00"}
      ],
      ComparisonOperator:'LE',
     }
    }
   },function(err,data){
    if (err){ console.log(err); }
    else { console.log(data);}
   });
batchGetItem
   var params = {
    "RequestItems":
        {"TEST_01": 
            {"Keys": 
                [
                 {"ID": {"S":"id1"}, "TIME_STAMP":{"S":"2013-10-01 00:00:00"}},
                 {"ID": {"S":"id2"}, "TIME_STAMP":{"S":"2013-10-02 00:00:00"}},
                 {"ID": {"S":"id3"}, "TIME_STAMP":{"S":"2013-10-01 00:00:00"}}
                ],
             "AttributesToGet":["ID", "TIME_STAMP", "NAME"]
         }
        }
     };
   dynamodb.batchGetItem(params, function(err, data) {
    if (err){ console.log(err); }
    else { console.log(data.Responses.TEST_01);}
    callback(err, 6);
   });
deleteItem
   var params = {
      TableName: 'TEST_01', /* required */
    Key: {
     ID: {S:"id1"},
     TIME_STAMP: {S:"2013-10-01 00:00:00"},
    }
   };
   dynamodb.deleteItem(params, function(err, data) {
    if (err){ console.log(err); }
    else { console.log(data);}
   });
describeTable
   dynamodb.describeTable(
   {
    TableName:"TEST_01",
   },function(err,data){
    if (err){ console.log(err); }
    else { console.log(data);}
   });
deleteTable
   dynamodb.deleteTable(
   {
    TableName:"TEST_01",
   },function(err,data){
    if (err){ console.log(err); }
    else { console.log(data);}
   });
listTables
   dynamodb.listTables(function (err, data)
   {
    if (err){ console.log(err); }
    else { console.log(data);}
    callback(err, 8);
   });
比較演算子 ComparisonOperator
EQ =
LE <=
LT <
GE >=
GT >
BEGINS_WITH 前方一致
BETWEEN 範囲

AWS CLI から DynamoDB local を操作

こちらがとても参考になります。

テーブル作成:HASHキー
aws dynamodb create-table --endpoint-url http://localhost:8000 \
 --table-name test1 \
 --attribute-definitions AttributeName=testId,AttributeType=S \
 --key-schema AttributeName=testId,KeyType=HASH \
 --provisioned-throughput ReadCapacityUnits=1,WriteCapacityUnits=1
テーブル作成:HASH+RANGEキー
aws dynamodb create-table --endpoint-url http://localhost:8000 \
 --table-name test2 \
 --attribute-definitions AttributeName=testId,AttributeType=S AttributeName=range,AttributeType=S \
 --key-schema AttributeName=testId,KeyType=HASH AttributeName=range,KeyType=RANGE \
 --provisioned-throughput ReadCapacityUnits=1,WriteCapacityUnits=1
テーブルリスト
aws dynamodb list-tables --endpoint-url http://localhost:8000
テーブル詳細
aws dynamodb describe-table --table-name test1 --endpoint-url http://localhost:8000
テーブルスループット変更
aws dynamodb update-table --endpoint-url http://localhost:8000 \
 --table-name test \
 --provisioned-throughput ReadCapacityUnits=2,WriteCapacityUnits=2
追加
aws dynamodb put-item --endpoint-url http://localhost:8000 \
 --table-name test --item '{"testId":"1"}'
取得
aws dynamodb get-item --endpoint-url http://localhost:8000 \
 --table-name test --key '{"testId":"1"}'
削除
aws dynamodb delete-item --endpoint-url http://localhost:8000 \
 --table-name test --key '{"testId":"1"}'

MacにAWS CLIをインストール

インストール
% sudo easy_install pip
% sudo pip install awscli
設定ファイルを作成
% aws configure
AWS Access Key ID [None]: [アクセスキーIDを設定]
AWS Secret Access Key [None]: [シークレットアクセスキーを設定]
Default region name [None]: [リージョンを設定(東京: ap-northeast-1)]
Default output format [None]: [出力フォーマットを設定(text,json,tableのいずれか)]

2014年10月19日日曜日

nodemon のインストール

nodemon インストール
npm install -g nodemon
実行
DEBUG=photo nodemon ./bin/www

Error: listen EADDRINUSE

既にポートが利用されていた場合に出力されるエラー
Error: listen EADDRINUSE

Node.jsのExpress導入

Expressをインストール
npm install -g express
express-generatorをインストール
sudo npm install -g express-generator
アプリケーション生成
express -e photo
モジュールインストール
cd photo && npm install
実行
DEBUG=photo ./bin/www
確認
http://localhost:3000/

2014年10月16日木曜日

Blogger に SyntaxHighlighter を導入する

BloggerへのSyntaxHighlighterの導入方法。

ダッシュボード→テンプレート→HTMLの編集


以下のコードを</head>の上部に追加




















投稿時は以下のように記載
コードの種類によってBrush aliasesを書き替える
Brush aliasesの種類はこちら

ここにコードを書く



Ubuntuにデスクトップ環境を構築

2014年10月14日火曜日

2014年10月9日木曜日

タスクスケジューラを起動