<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4078990029309008066</id><updated>2024-11-01T19:34:07.372+09:00</updated><category term="Ubuntu"/><category term="OpenSource"/><category term="Google App Engine"/><category term="Google Web Toolkit"/><category term="html5"/><category term="jQuery"/><category term="node.js"/><category term="Android"/><category term="Drupal"/><category term="Javascript"/><category term="その他"/><category term="Drupal開発"/><category term="SmartGWT"/><category term="Apache"/><category term="Hibernate"/><category term=".Netプログラミング"/><category term="Eclipse"/><category term="Koma作品"/><category term="写真"/><category term="MongoDB"/><category term="css"/><category term="iPhone"/><category term="ニュース"/><category term="Asp.Net MVC2"/><category term="ObjectiveC"/><category term="Titanium"/><category term="osser"/><category term="ビジネス"/><category term="リソース"/><category term="GoogleAPI"/><category term="Liferay"/><category term="MySql"/><category term="Urlメモ"/><category term="express.js"/><category term="iPad"/><category term="ソフトウェア"/><category term="Joomla"/><category term="PostgreSQL"/><category term="Redmine"/><category term="Tomcat"/><category term="読書"/><category term="Chrome"/><category term="Java"/><category term="Linux"/><category term="Spring"/><category term="VisualStudio"/><category term="mongoose"/><category term="nginx"/><category term="サーバー監視"/><category term="データベース"/><category term="資産運用"/><category term="Ant"/><category term="Apache Commons"/><category term="ClamAV"/><category term="Listener"/><category term="Mac"/><category term="Ninject"/><category term="PHP"/><category term="Portlet"/><category term="Servlet"/><category term="Windows"/><category term="freemarker"/><category term="git"/><category term="grunt"/><category term="kraken.js"/><category term="mvc"/><category term="qmail"/><category term="redis"/><category term="sass"/><category term="tablet"/><category term="ufw"/><category term="クラウド"/><category term="セキュリティ"/><category term="ビジネスマナー"/><title type='text'>Koma新知識</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://komanew.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4078990029309008066/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://komanew.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/4078990029309008066/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>koma</name><uri>http://www.blogger.com/profile/02054362416981806957</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpDmbozK7mZ12GkYGGEmAdOGyg9AbykU3OkiP9o8iWoXr7pGCLEZDP9Y09kSSzmRHR-WXlD07TQCmHgKJoxidZmE1OxA7u2_jDmTyIzHiWarKov2gUffZsk7iPUyHLrA/s220/10df.jpeg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>403</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4078990029309008066.post-9136213088828142131</id><published>2014-11-05T09:43:00.002+09:00</published><updated>2014-11-05T09:43:40.647+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Titanium"/><title type='text'>Ti.SwipeRefreshLayout - Titanium Refreshモジュール(Android)</title><content type='html'>Titanium module for Android&#39;s SwipeRefreshLayout.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://cloud.githubusercontent.com/assets/878389/4853094/b9a89378-6082-11e4-8a85-28159b1a54cd.gif&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://cloud.githubusercontent.com/assets/878389/4853094/b9a89378-6082-11e4-8a85-28159b1a54cd.gif&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt; &lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;pub-3751499937762873&quot;;
/* (webso)250x250, 作成済み 10/01/20 */
google_ad_slot = &quot;5586609950&quot;;
google_ad_width = 250;
google_ad_height = 250;
//--&gt;

&lt;/script&gt; &lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;</content><link rel='replies' type='application/atom+xml' href='http://komanew.blogspot.com/feeds/9136213088828142131/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://komanew.blogspot.com/2014/11/tiswiperefreshlayout-titanium.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4078990029309008066/posts/default/9136213088828142131'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4078990029309008066/posts/default/9136213088828142131'/><link rel='alternate' type='text/html' href='http://komanew.blogspot.com/2014/11/tiswiperefreshlayout-titanium.html' title='Ti.SwipeRefreshLayout - Titanium Refreshモジュール(Android)'/><author><name>admin</name><uri>http://www.blogger.com/profile/10034981483746372549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjF3GQcbuvByE1gmwu_u85-UfB49oCt1Gc779bUtIfvCTEUG8s2c61oiK4faoyCJHRdD8QHbGiCMISl4BeE7zpwu1Gpj1hTg_2VdQPe4HYqgHG1dbcUJgTf2jK8KJD8xQ/s220/images.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4078990029309008066.post-7288551071553828460</id><published>2014-10-30T09:04:00.001+09:00</published><updated>2014-10-30T09:04:20.271+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="node.js"/><title type='text'>Node.jsファイル書き込み例</title><content type='html'>Node.jsファイル書き込み例です。&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;var fs = require(&#39;fs&#39;);

(function () {
    var data = &quot;write 日本語!&quot;;
    fs.writeFile(&#39;日本語.txt&#39;, data, function (err) {
        if (err)
            console.log(err);
    });
})();
&lt;/pre&gt;&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt; &lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;pub-3751499937762873&quot;;
/* (webso)250x250, 作成済み 10/01/20 */
google_ad_slot = &quot;5586609950&quot;;
google_ad_width = 250;
google_ad_height = 250;
//--&gt;

&lt;/script&gt; &lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;</content><link rel='replies' type='application/atom+xml' href='http://komanew.blogspot.com/feeds/7288551071553828460/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://komanew.blogspot.com/2014/10/nodejs.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4078990029309008066/posts/default/7288551071553828460'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4078990029309008066/posts/default/7288551071553828460'/><link rel='alternate' type='text/html' href='http://komanew.blogspot.com/2014/10/nodejs.html' title='Node.jsファイル書き込み例'/><author><name>admin</name><uri>http://www.blogger.com/profile/10034981483746372549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjF3GQcbuvByE1gmwu_u85-UfB49oCt1Gc779bUtIfvCTEUG8s2c61oiK4faoyCJHRdD8QHbGiCMISl4BeE7zpwu1Gpj1hTg_2VdQPe4HYqgHG1dbcUJgTf2jK8KJD8xQ/s220/images.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4078990029309008066.post-3362345434406348136</id><published>2014-10-29T05:41:00.001+09:00</published><updated>2014-10-29T05:41:23.398+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="nginx"/><title type='text'>nginx最大パフォーマンスを出すための基本設定</title><content type='html'>&lt;img src=&quot;http://nginx.org/nginx.gif&quot; alt=&quot;nginx&quot; title=&quot;nginx&quot;&gt;&lt;br /&gt;
&lt;br /&gt;
nginx最大限にスピードを出すために、設定パラメーターをチュニングしました。&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;nginx設定例&lt;/h3&gt;&lt;br /&gt;
&lt;pre&gt;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 &quot;msie6&quot;;
    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/*;
}
&lt;/pre&gt;&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt; &lt;br /&gt;
&lt;h3&gt;解説&lt;/h3&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;code&gt;worker_processes auto;&lt;/code&gt; - Nginx本体のプロセス数、autoにしてnginx内部判定に任せるのは賢明&lt;/li&gt;
&lt;li&gt;&lt;code&gt;worker_rlimit_nofile 100000;&lt;/code&gt; - workerプロセスが最大に開けるファイル数の制限。このように設定したら、&lt;code&gt;ulimit -a&lt;/code&gt;以上のファイル数を処理できるようになり、&lt;code&gt;too many open files&lt;/code&gt;問題を回避できる&lt;/li&gt;
&lt;li&gt;&lt;code&gt;worker_connections 2048;&lt;/code&gt; - 一つのworkerプロセグが開ける最大コネクション数&lt;/li&gt;
&lt;li&gt;&lt;code&gt;multi_accept on;&lt;/code&gt; - できるだけクライアントからのリクエストを受け取る&lt;/li&gt;
&lt;li&gt;&lt;code&gt;use epoll;&lt;/code&gt; - Linuxカーネル2.6以上の場合は&lt;code&gt;epoll&lt;/code&gt;、BSDの場合&lt;code&gt;kqueue&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;server_tokens off;&lt;/code&gt; - セキュリティ対策です、エラー画面のnginxバージョン番号を非表示&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sendfile on;&lt;/code&gt; - ハードディスクio処理とsocket-io処理のバランスを取るため、onにしてください。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tcp_nopush on;&lt;/code&gt; - 一つのデータパッケージに全てのヘッダー情報を含まれる&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tcp_nodelay on;&lt;/code&gt; - データをキャウッシュしないで、どんどん送信させる、リアルタイムアプリに最適&lt;/li&gt;
&lt;li&gt;&lt;code&gt;keepalive_timeout 10;&lt;/code&gt; - keep-aliveタイムアウト時間、少し短くしとく&lt;/li&gt;
&lt;li&gt;&lt;code&gt;client_header_timeout 10;&lt;/code&gt; - クライアントタイムアウト時間、少し短くしとく&lt;/li&gt;
&lt;li&gt;&lt;code&gt;client_body_timeout 10;&lt;/code&gt; - クライアントタイムアウト時間、少し短くしとく&lt;/li&gt;
&lt;li&gt;&lt;code&gt;reset_timedout_connection on;&lt;/code&gt; - 非アクティブクライアントのコネクションをクロースする&lt;/li&gt;
&lt;li&gt;&lt;code&gt;send_timeout 10;&lt;/code&gt; - クライアントへの送信タイムアウト&lt;/li&gt;
&lt;li&gt;&lt;code&gt;limit_conn_zone $binary_remote_addr zone=addr:5m;&lt;/code&gt; - 各種keyの共有メモリ設定&lt;/li&gt;
&lt;li&gt;&lt;code&gt;limit_conn addr 100;&lt;/code&gt; - keyの最大コネクション数、例：addrは100に設定する（一つのIPアドレスは100コネクションんをリクエストできる）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;gzip on;&lt;/code&gt; - 転送内容をgzipで圧縮、推薦&lt;/li&gt;
&lt;li&gt;&lt;code&gt;gzip_http_version 1.0;&lt;/code&gt; - 圧縮httpバージョン&lt;/li&gt;
&lt;li&gt;&lt;code&gt;gzip_disable &amp;quot;msie6&amp;quot;;&lt;/code&gt; - ie6圧縮禁止&lt;/li&gt;
&lt;li&gt;&lt;code&gt;gzip_proxied any;&lt;/code&gt; - 全てのプロキシも圧縮&lt;/li&gt;
&lt;li&gt;&lt;code&gt;gzip_min_length 1024;&lt;/code&gt; - gzip 圧縮を行うデータの最小サイズです。これより小さいデータは圧縮されません。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;gzip_comp_level 6;&lt;/code&gt; - 圧縮レベル設定、1-9&lt;/li&gt;
&lt;li&gt;&lt;code&gt;gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript application/json;&lt;/code&gt; - 圧縮ファイルタイプ&lt;/li&gt;
&lt;li&gt;&lt;code&gt;open_file_cache max=100000 inactive=20s;&lt;/code&gt; - キャッシュをオープンする同時に最大数とキャッシュ時間も指定する、20秒以上の非アクティブファイルをクリアする&lt;/li&gt;
&lt;li&gt;&lt;code&gt;open_file_cache_valid 30s;&lt;/code&gt; - open_file_cacheの検知間隔時間をチェックする&lt;/li&gt;
&lt;li&gt;&lt;code&gt;open_file_cache_min_uses 2;&lt;/code&gt; - open_file_cacheの非アクティブファイルの最小ファイル数&lt;/li&gt;
&lt;li&gt;&lt;code&gt;open_file_cache_errors on;&lt;/code&gt; - ファイルのエラー情報もキャッシュする&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;設定したら、nginxサービスを再起動して有効させる。&lt;/p&gt;&lt;pre&gt;&lt;code&gt;sudo service nginx restart
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;nginxオフィシャルサイト&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://nginx.org/ja/&quot;&gt;http://nginx.org/ja/&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;pub-3751499937762873&quot;;
/* (webso)250x250, 作成済み 10/01/20 */
google_ad_slot = &quot;5586609950&quot;;
google_ad_width = 250;
google_ad_height = 250;
//--&gt;

&lt;/script&gt; &lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;</content><link rel='replies' type='application/atom+xml' href='http://komanew.blogspot.com/feeds/3362345434406348136/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://komanew.blogspot.com/2014/10/nginx.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4078990029309008066/posts/default/3362345434406348136'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4078990029309008066/posts/default/3362345434406348136'/><link rel='alternate' type='text/html' href='http://komanew.blogspot.com/2014/10/nginx.html' title='nginx最大パフォーマンスを出すための基本設定'/><author><name>admin</name><uri>http://www.blogger.com/profile/10034981483746372549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjF3GQcbuvByE1gmwu_u85-UfB49oCt1Gc779bUtIfvCTEUG8s2c61oiK4faoyCJHRdD8QHbGiCMISl4BeE7zpwu1Gpj1hTg_2VdQPe4HYqgHG1dbcUJgTf2jK8KJD8xQ/s220/images.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4078990029309008066.post-3306835502561044730</id><published>2014-10-15T00:30:00.000+09:00</published><updated>2014-10-15T11:19:07.609+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="node.js"/><title type='text'>Node.jsエラー処理例(domainモジュール)</title><content type='html'>Node.jsエラー処理例(domainモジュール)&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;// Node.jsエラー処理例(domainモジュール)
var fs = require(&#39;fs&#39;);
var util = require(&#39;util&#39;);

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

function f1() {
    fs.readFile(&#39;package.json&#39;, 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
    });
}
&lt;/pre&gt;&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt; &lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;pub-3751499937762873&quot;;
/* (webso)250x250, 作成済み 10/01/20 */
google_ad_slot = &quot;5586609950&quot;;
google_ad_width = 250;
google_ad_height = 250;
//--&gt;

&lt;/script&gt; &lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;</content><link rel='replies' type='application/atom+xml' href='http://komanew.blogspot.com/feeds/3306835502561044730/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://komanew.blogspot.com/2014/10/nodejsdomain.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4078990029309008066/posts/default/3306835502561044730'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4078990029309008066/posts/default/3306835502561044730'/><link rel='alternate' type='text/html' href='http://komanew.blogspot.com/2014/10/nodejsdomain.html' title='Node.jsエラー処理例(domainモジュール)'/><author><name>admin</name><uri>http://www.blogger.com/profile/10034981483746372549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjF3GQcbuvByE1gmwu_u85-UfB49oCt1Gc779bUtIfvCTEUG8s2c61oiK4faoyCJHRdD8QHbGiCMISl4BeE7zpwu1Gpj1hTg_2VdQPe4HYqgHG1dbcUJgTf2jK8KJD8xQ/s220/images.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4078990029309008066.post-1883647760744812872</id><published>2014-04-03T10:39:00.003+09:00</published><updated>2014-04-03T10:39:35.655+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="node.js"/><title type='text'>Node.js勉強サイト</title><content type='html'>最近Node.jsの勉強にはまっています、やはり従来の同期型のプログラミングモデルよりはNode.jsのような非同期プログラミングモデルの方が面白いです。&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://nodejs.osser.jp&quot;&gt;http://nodejs.osser.jp&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt; &lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;pub-3751499937762873&quot;;
/* (webso)250x250, 作成済み 10/01/20 */
google_ad_slot = &quot;5586609950&quot;;
google_ad_width = 250;
google_ad_height = 250;
//--&gt;

&lt;/script&gt; &lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;</content><link rel='replies' type='application/atom+xml' href='http://komanew.blogspot.com/feeds/1883647760744812872/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://komanew.blogspot.com/2014/04/nodejs.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4078990029309008066/posts/default/1883647760744812872'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4078990029309008066/posts/default/1883647760744812872'/><link rel='alternate' type='text/html' href='http://komanew.blogspot.com/2014/04/nodejs.html' title='Node.js勉強サイト'/><author><name>admin</name><uri>http://www.blogger.com/profile/10034981483746372549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjF3GQcbuvByE1gmwu_u85-UfB49oCt1Gc779bUtIfvCTEUG8s2c61oiK4faoyCJHRdD8QHbGiCMISl4BeE7zpwu1Gpj1hTg_2VdQPe4HYqgHG1dbcUJgTf2jK8KJD8xQ/s220/images.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4078990029309008066.post-4331377648393262922</id><published>2014-03-01T13:58:00.003+09:00</published><updated>2014-03-21T12:02:56.624+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="osser"/><category scheme="http://www.blogger.com/atom/ns#" term="redis"/><title type='text'>UbuntuでRedisパッケージインストール</title><content type='html'>自分でRedisソースをダウンロードして、コンパイルするのは結構面倒くさいなので、Ubunut PPAを利用して自動的にインストールできるようになります。&lt;br /&gt;
&lt;br /&gt;
手順：&lt;br /&gt;
&lt;br /&gt;
$ sudo apt-get install -y python-software-properties&lt;br /&gt;
$ sudo add-apt-repository -y ppa:rwky/redis&lt;br /&gt;
$ sudo apt-get update&lt;br /&gt;
$ sudo apt-get install -y redis-server&lt;br /&gt;
&lt;br /&gt;
Redisオフィシャルサイト&lt;br /&gt;
&lt;br /&gt;
http://redis.io/&lt;br /&gt;
&lt;br /&gt;
Redis勉強本も紹介します&lt;br /&gt;
&lt;iframe src=&quot;http://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank&amp;bc1=000000&amp;IS2=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=0000FF&amp;t=osser-22&amp;o=9&amp;p=8&amp;l=as4&amp;m=amazon&amp;f=ifr&amp;ref=ss_til&amp;asins=4048917358&quot; style=&quot;width:120px;height:240px;&quot; scrolling=&quot;no&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; frameborder=&quot;0&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;br /&gt;
node.jsでredisにアクセスライブラリも紹介します&lt;br /&gt;
&lt;br /&gt;
https://github.com/mranney/node_redis&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.amazon.co.jp/gp/product/4048917358/ref=as_li_ss_il?ie=UTF8&amp;camp=247&amp;creative=7399&amp;creativeASIN=4048917358&amp;linkCode=as2&amp;tag=osser-22&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&amp;ASIN=4048917358&amp;Format=_SL110_&amp;ID=AsinImage&amp;MarketPlace=JP&amp;ServiceVersion=20070822&amp;WS=1&amp;tag=osser-22&quot; &gt;&lt;/a&gt;&lt;img src=&quot;http://ir-jp.amazon-adsystem.com/e/ir?t=osser-22&amp;l=as2&amp;o=9&amp;a=4048917358&quot; width=&quot;1&quot; height=&quot;1&quot; border=&quot;0&quot; alt=&quot;&quot; style=&quot;border:none !important; margin:0px !important;&quot; /&gt;&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt; &lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;pub-3751499937762873&quot;;
/* (webso)250x250, 作成済み 10/01/20 */
google_ad_slot = &quot;5586609950&quot;;
google_ad_width = 250;
google_ad_height = 250;
//--&gt;

&lt;/script&gt; &lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;</content><link rel='replies' type='application/atom+xml' href='http://komanew.blogspot.com/feeds/4331377648393262922/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://komanew.blogspot.com/2014/03/ubunturedis.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4078990029309008066/posts/default/4331377648393262922'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4078990029309008066/posts/default/4331377648393262922'/><link rel='alternate' type='text/html' href='http://komanew.blogspot.com/2014/03/ubunturedis.html' title='UbuntuでRedisパッケージインストール'/><author><name>admin</name><uri>http://www.blogger.com/profile/10034981483746372549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjF3GQcbuvByE1gmwu_u85-UfB49oCt1Gc779bUtIfvCTEUG8s2c61oiK4faoyCJHRdD8QHbGiCMISl4BeE7zpwu1Gpj1hTg_2VdQPe4HYqgHG1dbcUJgTf2jK8KJD8xQ/s220/images.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4078990029309008066.post-4899769565629679888</id><published>2014-01-06T21:34:00.002+09:00</published><updated>2014-03-01T13:49:48.489+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="kraken.js"/><category scheme="http://www.blogger.com/atom/ns#" term="node.js"/><title type='text'>KrakenJS入門</title><content type='html'>&lt;a target=&quot;_blank&quot; href=&quot;http://www.amazon.co.jp/gp/feature.html/?ie=UTF8&amp;camp=247&amp;creative=1211&amp;docId=3077745616&amp;linkCode=ur2&amp;tag=osser-22&quot;&gt;Amazon.co.jpの「カスペルスキー 2014」をまとめて買うと最大2000円OFFキャンペーン&lt;/a&gt;&lt;img src=&quot;http://ir-jp.amazon-adsystem.com/e/ir?t=osser-22&amp;l=ur2&amp;o=9&quot; width=&quot;1&quot; height=&quot;1&quot; border=&quot;0&quot; alt=&quot;&quot; style=&quot;border:none !important; margin:0px !important;&quot; /&gt;&lt;br /&gt;
nodejsのウェブ開発MVCフレームワークKrakenJSを紹介します。&lt;br /&gt;
&lt;br /&gt;
generator-krakenジェネレーターをインストールする&lt;br /&gt;
&lt;br /&gt;
#このコマンドでyo, grunt, bowerも一緒にインストールされる&lt;br /&gt;
$sudo npm install -g generator-kraken&lt;br /&gt;
&lt;br /&gt;
#krakenテンプレートを使ってウェブサイトプロジェクトを作成します&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;$ yo kraken

     ,&#39;&amp;quot;&amp;quot;`.
    / _  _ \
    |(@)(@)|   Release the Kraken!
    )  __  (
   /,&#39;))((`.\
  (( ((  )) ))
   `\ `)(&#39; /&#39;

[?] Application name: HelloWorld
[?] Description: A test kraken application
[?] Author: YourName GoesHere
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
#サイトサーバーを起動させます&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;$ cd HelloWorld
$ npm start

&amp;gt; helloworld@0.0.1 start ~/HelloWorld
&amp;gt; node index.js

Listening on 8000
&lt;/code&gt;&lt;/pre&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;b&gt;プロジェクトフォルダ構成&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
/config&lt;br /&gt;
アプリケーションとミドルウェアの設定&lt;br /&gt;
&lt;br /&gt;
/controllers&lt;br /&gt;
URLルートとロジック&lt;br /&gt;
&lt;br /&gt;
/lib&lt;br /&gt;
開発者用のライブラリ（例えば：データベース接続など）&lt;br /&gt;
&lt;br /&gt;
/locales&lt;br /&gt;
多言語リソース&lt;br /&gt;
&lt;br /&gt;
/models&lt;br /&gt;
エンティティモデル&lt;br /&gt;
&lt;br /&gt;
/public&lt;br /&gt;
ウェブリソース&lt;br /&gt;
Web resources that are publicly available&lt;br /&gt;
&lt;br /&gt;
/public/templates&lt;br /&gt;
サーバーとブラウザーのテンプレートファイル&lt;br /&gt;
&lt;br /&gt;
/tests&lt;br /&gt;
テストコード&lt;br /&gt;
&lt;br /&gt;
index.js&lt;br /&gt;
アプリケーションエントリーポイント&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;generator-kraken使い方：&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
#krakenアプリケーション作成&lt;br /&gt;
yo kraken&lt;br /&gt;
&lt;br /&gt;
#myPage名前でcontroller, model, content bundle, templateを作成&lt;br /&gt;
yo kraken:page myPage&lt;br /&gt;
&lt;br /&gt;
#myControllerという名前のcontrollerを作成&lt;br /&gt;
yo kraken:controller myController&lt;br /&gt;
&lt;br /&gt;
#myModelという名前のmodelを作成&lt;br /&gt;
yo kraken:model myModel&lt;br /&gt;
&lt;br /&gt;
#myTemplateという名前のtemplateを作成&lt;br /&gt;
yo kraken:template myTemplate&lt;br /&gt;
&lt;br /&gt;
#myFileという言語バンドル作成&lt;br /&gt;
yo kraken:locale myFile myCountry myLang&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://krakenjs.com/#Examples&quot; target=&quot;_blank&quot;&gt;krakenサンプル&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;オプションライブラリ&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
#bootstrap - クライアントUIライブラリ&lt;br /&gt;
bower install bootstrap --save&lt;br /&gt;
※--saveはbootstrapを自動的にbower.jsonファイルに追加される&lt;br /&gt;
&lt;br /&gt;
#nodemon - JSファイル変更チェックとリロード&lt;br /&gt;
npm install nodemon --save-dev&lt;br /&gt;
&lt;br /&gt;
package.jsonファイル編集&lt;br /&gt;
&amp;quot;start&amp;quot;: &amp;quot;node index.js&amp;quot;&lt;br /&gt;
↓&lt;br /&gt;
&amp;quot;start&amp;quot;: &amp;quot;nodemon index.js&amp;quot;&lt;br /&gt;
&lt;br /&gt;
アプリケーション起動&lt;br /&gt;
$npm start&lt;br /&gt;
&lt;br /&gt;
&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;pub-3751499937762873&quot;;
/* (webso)250x250, 作成済み 10/01/20 */
google_ad_slot = &quot;5586609950&quot;;
google_ad_width = 250;
google_ad_height = 250;
//--&gt;

&lt;/script&gt; &lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;</content><link rel='replies' type='application/atom+xml' href='http://komanew.blogspot.com/feeds/4899769565629679888/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://komanew.blogspot.com/2014/01/krakenjs.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4078990029309008066/posts/default/4899769565629679888'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4078990029309008066/posts/default/4899769565629679888'/><link rel='alternate' type='text/html' href='http://komanew.blogspot.com/2014/01/krakenjs.html' title='KrakenJS入門'/><author><name>admin</name><uri>http://www.blogger.com/profile/10034981483746372549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjF3GQcbuvByE1gmwu_u85-UfB49oCt1Gc779bUtIfvCTEUG8s2c61oiK4faoyCJHRdD8QHbGiCMISl4BeE7zpwu1Gpj1hTg_2VdQPe4HYqgHG1dbcUJgTf2jK8KJD8xQ/s220/images.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4078990029309008066.post-5632181571086556024</id><published>2014-01-04T15:08:00.001+09:00</published><updated>2014-01-04T15:08:20.102+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="grunt"/><title type='text'>grunt入門</title><content type='html'>ビルドツールgruntの最初の入門サンプルを紹介します。&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://gruntjs.com/&quot; target=&quot;_blank&quot;&gt;http://gruntjs.com/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
まず、インストールを&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;sudo npm install -g generator-kraken&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
このコマンドはyo, grunt, bower, kerkenjsを一括にインストールできます。&lt;br /&gt;
&lt;br /&gt;
gruntだけインストールしたい場合、このコマンドです。&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;npm install -g grunt-cli&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
インストールしたら、フォルダを作って、下記の二つのファイルを用意します。&lt;br /&gt;
&lt;br /&gt;
package.json&lt;br /&gt;
Gruntfile.js&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;package.json&lt;/b&gt;&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;{
    &amp;quot;name&amp;quot;: &amp;quot;my-project-name&amp;quot;,
    &amp;quot;version&amp;quot;: &amp;quot;0.1.0&amp;quot;,
    &amp;quot;devDependencies&amp;quot;: {
        &amp;quot;grunt&amp;quot;: &amp;quot;~0.4.2&amp;quot;,
        &amp;quot;grunt-contrib-concat&amp;quot;: &amp;quot;~0.1.2&amp;quot;,
        &amp;quot;grunt-contrib-watch&amp;quot;: &amp;quot;~0.5.3&amp;quot;,
        &amp;quot;grunt-contrib-qunit&amp;quot;: &amp;quot;~0.1.1&amp;quot;,
        &amp;quot;grunt-contrib-jshint&amp;quot;: &amp;quot;~0.6.3&amp;quot;,
        &amp;quot;grunt-contrib-nodeunit&amp;quot;: &amp;quot;~0.2.0&amp;quot;,
        &amp;quot;grunt-contrib-uglify&amp;quot;: &amp;quot;~0.2.2&amp;quot;
    }
}
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;b&gt;Gruntfile.js&lt;/b&gt;&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;&#39;use strict&#39;;

module.exports = function (grunt) {
    grunt.initConfig({
        pkg: grunt.file.readJSON(&#39;package.json&#39;),
        uglify: {
            options: {
                banner: &#39;/*! &amp;lt;%=pkg.name%&amp;gt; &amp;lt;%= grunt.template.today(&amp;quot;yyyy-mm-dd&amp;quot;) %&amp;gt; */\n&#39;
            },
            build100: {
                src: &#39;src/js/*.js&#39;,
                dest: &#39;dist/build100.min.js&#39;
            }
        }
    });

    grunt.loadNpmTasks(&#39;grunt-contrib-jshint&#39;);
    grunt.loadNpmTasks(&#39;grunt-contrib-qunit&#39;);
    grunt.loadNpmTasks(&#39;grunt-contrib-watch&#39;);
    grunt.loadNpmTasks(&#39;grunt-contrib-concat&#39;);
    grunt.loadNpmTasks(&#39;grunt-contrib-uglify&#39;);

    grunt.registerTask(&#39;default&#39;, [
        &#39;uglify&#39;
    ]);
};
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
#grunt実行&lt;br /&gt;
grunt or grunt uglify&lt;br /&gt;
&lt;br /&gt;
このコマンドはuglifyプラグインを使って、buildフォルダにbuild100.min.jsを作成します。&lt;br /&gt;
&lt;br /&gt;
他のプラグインの使い方は今回は割愛して、今後は紹介します。&lt;br /&gt;
&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;pub-3751499937762873&quot;;
/* (webso)250x250, 作成済み 10/01/20 */
google_ad_slot = &quot;5586609950&quot;;
google_ad_width = 250;
google_ad_height = 250;
//--&gt;

&lt;/script&gt; &lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;</content><link rel='replies' type='application/atom+xml' href='http://komanew.blogspot.com/feeds/5632181571086556024/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://komanew.blogspot.com/2014/01/grunt.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4078990029309008066/posts/default/5632181571086556024'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4078990029309008066/posts/default/5632181571086556024'/><link rel='alternate' type='text/html' href='http://komanew.blogspot.com/2014/01/grunt.html' title='grunt入門'/><author><name>koma</name><uri>http://www.blogger.com/profile/02054362416981806957</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpDmbozK7mZ12GkYGGEmAdOGyg9AbykU3OkiP9o8iWoXr7pGCLEZDP9Y09kSSzmRHR-WXlD07TQCmHgKJoxidZmE1OxA7u2_jDmTyIzHiWarKov2gUffZsk7iPUyHLrA/s220/10df.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4078990029309008066.post-8754220328506631502</id><published>2014-01-04T13:51:00.002+09:00</published><updated>2014-01-04T13:51:11.892+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Chrome"/><title type='text'>Chrome開発勉強</title><content type='html'>Chrome開発ツールを利用してウェブ開発手法ビデオを紹介します。&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://discover-devtools.codeschool.com/&quot; target=&quot;_blank&quot;&gt;http://discover-devtools.codeschool.com/&lt;/a&gt;&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt; &lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;pub-3751499937762873&quot;;
/* (webso)250x250, 作成済み 10/01/20 */
google_ad_slot = &quot;5586609950&quot;;
google_ad_width = 250;
google_ad_height = 250;
//--&gt;

&lt;/script&gt; &lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;</content><link rel='replies' type='application/atom+xml' href='http://komanew.blogspot.com/feeds/8754220328506631502/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://komanew.blogspot.com/2014/01/chrome.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4078990029309008066/posts/default/8754220328506631502'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4078990029309008066/posts/default/8754220328506631502'/><link rel='alternate' type='text/html' href='http://komanew.blogspot.com/2014/01/chrome.html' title='Chrome開発勉強'/><author><name>koma</name><uri>http://www.blogger.com/profile/02054362416981806957</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpDmbozK7mZ12GkYGGEmAdOGyg9AbykU3OkiP9o8iWoXr7pGCLEZDP9Y09kSSzmRHR-WXlD07TQCmHgKJoxidZmE1OxA7u2_jDmTyIzHiWarKov2gUffZsk7iPUyHLrA/s220/10df.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4078990029309008066.post-205016604362916565</id><published>2014-01-04T12:47:00.001+09:00</published><updated>2014-01-04T13:17:06.732+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="mvc"/><category scheme="http://www.blogger.com/atom/ns#" term="node.js"/><title type='text'>kraken.js - Node.js MVCフレームワーク</title><content type='html'>今までExpressを使って開発してるんですが、いろいろ不便がありますので、PayPalのMVCフレームワークkraken.jsを勉強し始めました。&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://krakenjs.com/&quot; target=&quot;_blank&quot;&gt;http://krakenjs.com/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;必須知識：&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
yeoman(yo, grunt, bower)&lt;br /&gt;
&lt;a href=&quot;http://yeoman.io/&quot; target=&quot;_blank&quot;&gt;http://yeoman.io/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
dustjs(linkedin)&lt;br /&gt;
&lt;a href=&quot;http://linkedin.github.io/dustjs/&quot; target=&quot;_blank&quot;&gt;http://linkedin.github.io/dustjs/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
まず、gruntの勉強を…&lt;br /&gt;
&lt;a href=&quot;http://gruntjs.com/&quot; target=&quot;_blank&quot;&gt;http://gruntjs.com/&lt;/a&gt;&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt; &lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;pub-3751499937762873&quot;;
/* (webso)250x250, 作成済み 10/01/20 */
google_ad_slot = &quot;5586609950&quot;;
google_ad_width = 250;
google_ad_height = 250;
//--&gt;

&lt;/script&gt; &lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;</content><link rel='replies' type='application/atom+xml' href='http://komanew.blogspot.com/feeds/205016604362916565/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://komanew.blogspot.com/2014/01/krakenjs-nodejs-mvc.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4078990029309008066/posts/default/205016604362916565'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4078990029309008066/posts/default/205016604362916565'/><link rel='alternate' type='text/html' href='http://komanew.blogspot.com/2014/01/krakenjs-nodejs-mvc.html' title='kraken.js - Node.js MVCフレームワーク'/><author><name>koma</name><uri>http://www.blogger.com/profile/02054362416981806957</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpDmbozK7mZ12GkYGGEmAdOGyg9AbykU3OkiP9o8iWoXr7pGCLEZDP9Y09kSSzmRHR-WXlD07TQCmHgKJoxidZmE1OxA7u2_jDmTyIzHiWarKov2gUffZsk7iPUyHLrA/s220/10df.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4078990029309008066.post-7020258941300690578</id><published>2014-01-04T11:16:00.001+09:00</published><updated>2014-03-28T13:37:20.599+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="git"/><category scheme="http://www.blogger.com/atom/ns#" term="osser"/><title type='text'>Gitインストール(Ubuntu)</title><content type='html'>Ubuntu ServerにGitをインストールします。&lt;br /&gt;
&lt;br /&gt;
Git（ギット）は、プログラムのソースコードなどの変更履歴を記録・追跡するための分散型バージョン管理システムである。もとはLinuxカーネルのソースコード管理に用いるためにリーナス・トーバルズによって開発され、それ以降ほかの多くのプロジェクトで採用されている。Linuxカーネルのような巨大プロジェクトにも対応できるように、動作速度に重点が置かれている。&lt;br /&gt;
&lt;br /&gt;
Gitでは、各ユーザのワーキングディレクトリに、全履歴を含んだリポジトリの完全な複製が作られる。そのため、ネットワークアクセスがなく中心リポジトリにアクセスできない環境でも、履歴の調査や変更の記録といったほとんどの作業を行うことができる。これが「分散型」と呼ばれる理由である。&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://git-scm.com/&quot; target=&quot;_blank&quot;&gt;http://git-scm.com/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
#Gitインストール&lt;br /&gt;
sudo apt-get install python-software-properties&lt;br /&gt;
sudo add-apt-repository ppa:git-core/ppa&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
sudo apt-get install git&lt;br /&gt;
&lt;br /&gt;
#文字化けを防ぐ&lt;br /&gt;
git config --global core.quotepath false&lt;br /&gt;
&lt;br /&gt;
#Tagをチェックアウトして、新しいブランチを作成&lt;br /&gt;
git checkout -b v0.1.0 refs/tags/v0.1.0&lt;br /&gt;
&lt;br /&gt;
#バージョン確認&lt;br /&gt;
git version&lt;br /&gt;
&lt;iframe src=&quot;http://rcm-fe.amazon-adsystem.com/e/cm?t=osser-22&amp;o=9&amp;p=8&amp;l=as1&amp;asins=4798035009&amp;ref=qf_sp_asin_til&amp;fc1=000000&amp;IS2=1&amp;lt1=_blank&amp;m=amazon&amp;lc1=0000FF&amp;bc1=FFFFFF&amp;bg1=FFFFFF&amp;npa=1&amp;f=ifr&quot; style=&quot;width:120px;height:240px;&quot; scrolling=&quot;no&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; frameborder=&quot;0&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt; &lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;pub-3751499937762873&quot;;
/* (webso)250x250, 作成済み 10/01/20 */
google_ad_slot = &quot;5586609950&quot;;
google_ad_width = 250;
google_ad_height = 250;
//--&gt;

&lt;/script&gt; &lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;</content><link rel='replies' type='application/atom+xml' href='http://komanew.blogspot.com/feeds/7020258941300690578/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://komanew.blogspot.com/2014/01/gitubuntu.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4078990029309008066/posts/default/7020258941300690578'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4078990029309008066/posts/default/7020258941300690578'/><link rel='alternate' type='text/html' href='http://komanew.blogspot.com/2014/01/gitubuntu.html' title='Gitインストール(Ubuntu)'/><author><name>admin</name><uri>http://www.blogger.com/profile/10034981483746372549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjF3GQcbuvByE1gmwu_u85-UfB49oCt1Gc779bUtIfvCTEUG8s2c61oiK4faoyCJHRdD8QHbGiCMISl4BeE7zpwu1Gpj1hTg_2VdQPe4HYqgHG1dbcUJgTf2jK8KJD8xQ/s220/images.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4078990029309008066.post-5871179227116084907</id><published>2013-11-07T12:21:00.002+09:00</published><updated>2013-11-07T12:24:14.636+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="MongoDB"/><title type='text'>mongodb認証</title><content type='html'>MongoDBはデフォルトでユーザー認証機能をオフになっています、このトピックでユーザー認証機能をONにします。&lt;br /&gt;
&lt;br /&gt;
ユーザー追加&lt;br /&gt;
$mongo&lt;br /&gt;
use test&lt;br /&gt;
db.addUser(&#39;uid1&#39;, &#39;pwd1&#39;);&lt;br /&gt;
db.addUser(&#39;uid2&#39;, &#39;pwd2&#39;, true); //readonly&lt;br /&gt;
exit&lt;br /&gt;
&lt;br /&gt;
$sudo nano /etc/mongodb.conf&lt;br /&gt;
...&lt;br /&gt;
#アンコメント&lt;br /&gt;
auth = true&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
$sudo service mongodb restart&lt;br /&gt;
&lt;br /&gt;
Done!&lt;br /&gt;
&lt;br /&gt;
PS:&lt;br /&gt;
&lt;b&gt;mongoose接続例&lt;/b&gt;&lt;br /&gt;
&#39;mongodb://uid1:pwd1@192.168.1.1/test&#39;&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt; &lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;pub-3751499937762873&quot;;
/* (webso)250x250, 作成済み 10/01/20 */
google_ad_slot = &quot;5586609950&quot;;
google_ad_width = 250;
google_ad_height = 250;
//--&gt;

&lt;/script&gt; &lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;</content><link rel='replies' type='application/atom+xml' href='http://komanew.blogspot.com/feeds/5871179227116084907/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://komanew.blogspot.com/2013/11/mongodb.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4078990029309008066/posts/default/5871179227116084907'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4078990029309008066/posts/default/5871179227116084907'/><link rel='alternate' type='text/html' href='http://komanew.blogspot.com/2013/11/mongodb.html' title='mongodb認証'/><author><name>admin</name><uri>http://www.blogger.com/profile/10034981483746372549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjF3GQcbuvByE1gmwu_u85-UfB49oCt1Gc779bUtIfvCTEUG8s2c61oiK4faoyCJHRdD8QHbGiCMISl4BeE7zpwu1Gpj1hTg_2VdQPe4HYqgHG1dbcUJgTf2jK8KJD8xQ/s220/images.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4078990029309008066.post-58995154163844309</id><published>2013-10-27T21:09:00.000+09:00</published><updated>2013-10-27T21:12:00.411+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="node.js"/><title type='text'>node.jsで jsonファイルを解析</title><content type='html'>node.jsでjsonファイルを解析して、中身を表示させるサンプルです。&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;コード&lt;/b&gt;&lt;br /&gt;
&lt;pre&gt;var fs = require(&#39;fs&#39;);
var path = require(&#39;path&#39;);
var pkg = JSON.parse(fs.readFileSync(path.join(__dirname, &#39;package.json&#39;)));
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);
&lt;/pre&gt;&lt;br /&gt;
&lt;b&gt;実行結果&lt;/b&gt;&lt;br /&gt;
&lt;pre&gt;site01
0.0.1
true
{ start: &#39;nodemon app.js&#39; }
nodemon app.js
{ express: &#39;*&#39;,
  jade: &#39;*&#39;,
  stylus: &#39;*&#39;,
  mongoose: &#39;*&#39;,
  nodemon: &#39;*&#39; }
&lt;/pre&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt; &lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;pub-3751499937762873&quot;;
/* (webso)250x250, 作成済み 10/01/20 */
google_ad_slot = &quot;5586609950&quot;;
google_ad_width = 250;
google_ad_height = 250;
//--&gt;

&lt;/script&gt; &lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;</content><link rel='replies' type='application/atom+xml' href='http://komanew.blogspot.com/feeds/58995154163844309/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://komanew.blogspot.com/2013/10/nodejs-json.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4078990029309008066/posts/default/58995154163844309'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4078990029309008066/posts/default/58995154163844309'/><link rel='alternate' type='text/html' href='http://komanew.blogspot.com/2013/10/nodejs-json.html' title='node.jsで jsonファイルを解析'/><author><name>admin</name><uri>http://www.blogger.com/profile/10034981483746372549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjF3GQcbuvByE1gmwu_u85-UfB49oCt1Gc779bUtIfvCTEUG8s2c61oiK4faoyCJHRdD8QHbGiCMISl4BeE7zpwu1Gpj1hTg_2VdQPe4HYqgHG1dbcUJgTf2jK8KJD8xQ/s220/images.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4078990029309008066.post-4139281286886589550</id><published>2013-10-26T14:24:00.002+09:00</published><updated>2014-01-04T13:56:10.773+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="nginx"/><category scheme="http://www.blogger.com/atom/ns#" term="osser"/><title type='text'>リバースサーバーNginxは Ubuntuにインストール</title><content type='html'>リバースサーバーNginxインストール手順を紹介します。&lt;br /&gt;
&lt;br /&gt;
参照URL&lt;br /&gt;
&lt;a href=&quot;http://nginx.org/en/linux_packages.html&quot; target=&quot;_blank&quot;&gt;http://nginx.org/en/linux_packages.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
インストール手順&lt;br /&gt;
&lt;pre&gt;$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
&lt;/pre&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt; &lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;pub-3751499937762873&quot;;
/* (webso)250x250, 作成済み 10/01/20 */
google_ad_slot = &quot;5586609950&quot;;
google_ad_width = 250;
google_ad_height = 250;
//--&gt;

&lt;/script&gt; &lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;</content><link rel='replies' type='application/atom+xml' href='http://komanew.blogspot.com/feeds/4139281286886589550/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://komanew.blogspot.com/2013/10/nginx-ubuntu.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4078990029309008066/posts/default/4139281286886589550'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4078990029309008066/posts/default/4139281286886589550'/><link rel='alternate' type='text/html' href='http://komanew.blogspot.com/2013/10/nginx-ubuntu.html' title='リバースサーバーNginxは Ubuntuにインストール'/><author><name>admin</name><uri>http://www.blogger.com/profile/10034981483746372549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjF3GQcbuvByE1gmwu_u85-UfB49oCt1Gc779bUtIfvCTEUG8s2c61oiK4faoyCJHRdD8QHbGiCMISl4BeE7zpwu1Gpj1hTg_2VdQPe4HYqgHG1dbcUJgTf2jK8KJD8xQ/s220/images.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4078990029309008066.post-8923045377688100748</id><published>2013-10-23T22:14:00.002+09:00</published><updated>2013-10-27T21:17:01.256+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="express.js"/><category scheme="http://www.blogger.com/atom/ns#" term="node.js"/><title type='text'>node.jsモジュール一覧</title><content type='html'>node.js開発にはモジュールが必要不可欠です、下記のURLから利用可能なモジュールをご確認できます。&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://github.com/joyent/node/wiki/Modules&quot; target=&quot;_blank&quot;&gt;https://github.com/joyent/node/wiki/Modules&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
I like Node.js!&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
面白いモジュール&lt;br /&gt;
&lt;b&gt;express-train&lt;/b&gt;&lt;br /&gt;
expressベースでウェブ開発フレームワーク&lt;br /&gt;
&lt;a href=&quot;https://github.com/autoric/express-train&quot; target=&quot;_blank&quot;&gt;https://github.com/autoric/express-train&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
npmモジュール&lt;br /&gt;
&lt;a href=&quot;https://npmjs.org/&quot; target=&quot;_blank&quot;&gt;https://npmjs.org/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
node.jsドキュメント&lt;br /&gt;
&lt;a href=&quot;http://nodejs.jp/nodejs.org_ja/docs/v0.10/api/&quot; target=&quot;_blank&quot;&gt;http://nodejs.jp/nodejs.org_ja/docs/v0.10/api/&lt;/a&gt;&lt;br /&gt;
&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;pub-3751499937762873&quot;;
/* (webso)250x250, 作成済み 10/01/20 */
google_ad_slot = &quot;5586609950&quot;;
google_ad_width = 250;
google_ad_height = 250;
//--&gt;

&lt;/script&gt; &lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;</content><link rel='replies' type='application/atom+xml' href='http://komanew.blogspot.com/feeds/8923045377688100748/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://komanew.blogspot.com/2013/10/nodejs_3435.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4078990029309008066/posts/default/8923045377688100748'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4078990029309008066/posts/default/8923045377688100748'/><link rel='alternate' type='text/html' href='http://komanew.blogspot.com/2013/10/nodejs_3435.html' title='node.jsモジュール一覧'/><author><name>admin</name><uri>http://www.blogger.com/profile/10034981483746372549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjF3GQcbuvByE1gmwu_u85-UfB49oCt1Gc779bUtIfvCTEUG8s2c61oiK4faoyCJHRdD8QHbGiCMISl4BeE7zpwu1Gpj1hTg_2VdQPe4HYqgHG1dbcUJgTf2jK8KJD8xQ/s220/images.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4078990029309008066.post-2353986007844540189</id><published>2013-10-23T12:30:00.000+09:00</published><updated>2013-10-24T09:12:42.197+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="node.js"/><title type='text'>node.jsでmarkdown利用</title><content type='html'>node.jsのmarkedモジュールを使って、markdown文章を作成できます。&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;markedインストール&lt;/b&gt;&lt;br /&gt;
&lt;a href=&quot;https://github.com/chjj/marked&quot; target=&quot;_blank&quot;&gt;https://github.com/chjj/marked&lt;/a&gt;&lt;br /&gt;
&lt;pre&gt;npm install marked&lt;/pre&gt;&lt;br /&gt;
&lt;b&gt;サンプルコード&lt;/b&gt;&lt;br /&gt;
&lt;pre&gt;var marked = require(&#39;marked&#39;);
console.log(marked(&#39;I am using __markdown__.&#39;));
console.log(marked(&#39;&gt; scross site scripting!&#39;));
&lt;/pre&gt;&lt;br /&gt;
&lt;b&gt;実行結果&lt;/b&gt;&lt;br /&gt;
&lt;pre&gt;$node marked.js
&amp;lt;p&amp;gt;I am using &amp;lt;strong&amp;gt;markdown&amp;lt;/strong&amp;gt;.&amp;lt;/p&amp;gt;

&amp;lt;blockquote&amp;gt;
&amp;lt;p&amp;gt;scross site scripting!&amp;lt;/p&amp;gt;
&amp;lt;/blockquote&amp;gt;
&lt;/pre&gt;&lt;br /&gt;
※markdownも紹介&lt;br /&gt;
&lt;a href=&quot;https://github.com/evilstreak/markdown-js&quot; target=&quot;_blank&quot;&gt;https://github.com/evilstreak/markdown-js&lt;/a&gt;&lt;br /&gt;
&lt;pre&gt;npm install markdown&lt;/pre&gt;&lt;br /&gt;
&lt;b&gt;サンプルコード&lt;/b&gt;&lt;br /&gt;
&lt;pre&gt;console.log(&#39;=====markdown出力=====&#39;);
var markdown = require( &amp;quot;markdown&amp;quot; ).markdown;
console.log( markdown.toHTML( &amp;quot;Hello *World*!&amp;quot; ) );
console.log( markdown.toHTML( &#39;I am using __markdown__.&#39; ) );
console.log( markdown.toHTML( &#39;&amp;gt; scross site scripting!&#39; ) );

console.log(&#39;=====markedと比較=====&#39;);
var marked = require(&#39;marked&#39;);
console.log(marked(&#39;Hello *World*!&#39;));
console.log(marked(&#39;I am using __markdown__.&#39;));
console.log(marked(&#39;&amp;gt; scross site scripting!&#39;));
&lt;/pre&gt;&lt;br /&gt;
&lt;b&gt;実行結果&lt;/b&gt;&lt;br /&gt;
&lt;pre&gt;$node markdown.js
=====markdown出力=====
&amp;lt;p&amp;gt;Hello &amp;lt;em&amp;gt;World&amp;lt;/em&amp;gt;!&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;I am using &amp;lt;strong&amp;gt;markdown&amp;lt;/strong&amp;gt;.&amp;lt;/p&amp;gt;
&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;scross site scripting!&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;
=====markedと比較=====
&amp;lt;p&amp;gt;Hello &amp;lt;em&amp;gt;World&amp;lt;/em&amp;gt;!&amp;lt;/p&amp;gt;

&amp;lt;p&amp;gt;I am using &amp;lt;strong&amp;gt;markdown&amp;lt;/strong&amp;gt;.&amp;lt;/p&amp;gt;

&amp;lt;blockquote&amp;gt;
&amp;lt;p&amp;gt;scross site scripting!&amp;lt;/p&amp;gt;
&amp;lt;/blockquote&amp;gt;
&lt;/pre&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;b&gt;リソース&lt;/b&gt;&lt;br /&gt;
markdown文法&lt;br /&gt;
&lt;a href=&quot;http://daringfireball.net/projects/markdown/syntax&quot; target=&quot;_blank&quot;&gt;http://daringfireball.net/projects/markdown/syntax&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
node.js markdownモジュール&lt;br /&gt;
&lt;a href=&quot;https://github.com/chjj/marked&quot;  target=&quot;_blank&quot;&gt;https://github.com/chjj/marked&lt;/a&gt;&lt;br /&gt;
&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;pub-3751499937762873&quot;;
/* (webso)250x250, 作成済み 10/01/20 */
google_ad_slot = &quot;5586609950&quot;;
google_ad_width = 250;
google_ad_height = 250;
//--&gt;

&lt;/script&gt; &lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;</content><link rel='replies' type='application/atom+xml' href='http://komanew.blogspot.com/feeds/2353986007844540189/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://komanew.blogspot.com/2013/10/nodejsmarkdown.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4078990029309008066/posts/default/2353986007844540189'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4078990029309008066/posts/default/2353986007844540189'/><link rel='alternate' type='text/html' href='http://komanew.blogspot.com/2013/10/nodejsmarkdown.html' title='node.jsでmarkdown利用'/><author><name>admin</name><uri>http://www.blogger.com/profile/10034981483746372549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjF3GQcbuvByE1gmwu_u85-UfB49oCt1Gc779bUtIfvCTEUG8s2c61oiK4faoyCJHRdD8QHbGiCMISl4BeE7zpwu1Gpj1hTg_2VdQPe4HYqgHG1dbcUJgTf2jK8KJD8xQ/s220/images.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4078990029309008066.post-9056431816992768996</id><published>2013-10-23T12:24:00.002+09:00</published><updated>2013-10-23T12:24:42.080+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="node.js"/><title type='text'>node.jsでメール送信処理</title><content type='html'>node.jsのnodemailerモジュールを使って、メール送信処理を紹介します。&lt;br /&gt;
&lt;br /&gt;
nodemailerインストール&lt;br /&gt;
&lt;pre&gt;npm install nodemailer
&lt;/pre&gt;&lt;br /&gt;
送信コード&lt;br /&gt;
&lt;pre&gt;var nodemailer = require(&#39;nodemailer&#39;);
var transport = nodemailer.createTransport(&#39;SMTP&#39;, {
    host: &#39;stmp-server-ip&#39;,
    secureConnection: true,
    port: 465,
    auth: {
        user: &#39;smtpuser&#39;,
        pass: &#39;smtppass&#39;
    }
});

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

transport.sendMail(msg, function(error){
    if (error) {
        console.log(&#39;送信失敗&#39;);
    }
    else {
        console.log(&#39;送信終了&#39;);
    }
    msg.transport.close();
});
&lt;/pre&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;pub-3751499937762873&quot;;
/* (webso)250x250, 作成済み 10/01/20 */
google_ad_slot = &quot;5586609950&quot;;
google_ad_width = 250;
google_ad_height = 250;
//--&gt;

&lt;/script&gt; &lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;</content><link rel='replies' type='application/atom+xml' href='http://komanew.blogspot.com/feeds/9056431816992768996/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://komanew.blogspot.com/2013/10/nodejs_23.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4078990029309008066/posts/default/9056431816992768996'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4078990029309008066/posts/default/9056431816992768996'/><link rel='alternate' type='text/html' href='http://komanew.blogspot.com/2013/10/nodejs_23.html' title='node.jsでメール送信処理'/><author><name>admin</name><uri>http://www.blogger.com/profile/10034981483746372549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjF3GQcbuvByE1gmwu_u85-UfB49oCt1Gc779bUtIfvCTEUG8s2c61oiK4faoyCJHRdD8QHbGiCMISl4BeE7zpwu1Gpj1hTg_2VdQPe4HYqgHG1dbcUJgTf2jK8KJD8xQ/s220/images.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4078990029309008066.post-7547387786178688614</id><published>2013-10-22T23:44:00.002+09:00</published><updated>2013-10-22T23:44:40.509+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="node.js"/><title type='text'>node.jsでhttpリクエストサンプル</title><content type='html'>Node.jsを使って、httpでウェブサイト内容をダウンロードする&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;var http = require(&#39;http&#39;);

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

    res.setEncoding(&#39;utf8&#39;);
    res.on(&#39;data&#39;, function(str) {
        console.log(str);
    });
});
req.on(&#39;timeout&#39;, function() {
    console.log(&#39;request timed out&#39;);
    req.abort()
});
req.on(&#39;error&#39;, function(err) {
    console.log(&amp;quot;Error: &amp;quot; + err.code + &amp;quot;, &amp;quot; + err.message);
});
&lt;/pre&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt; &lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;pub-3751499937762873&quot;;
/* (webso)250x250, 作成済み 10/01/20 */
google_ad_slot = &quot;5586609950&quot;;
google_ad_width = 250;
google_ad_height = 250;
//--&gt;

&lt;/script&gt; &lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;</content><link rel='replies' type='application/atom+xml' href='http://komanew.blogspot.com/feeds/7547387786178688614/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://komanew.blogspot.com/2013/10/nodejshttp.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4078990029309008066/posts/default/7547387786178688614'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4078990029309008066/posts/default/7547387786178688614'/><link rel='alternate' type='text/html' href='http://komanew.blogspot.com/2013/10/nodejshttp.html' title='node.jsでhttpリクエストサンプル'/><author><name>admin</name><uri>http://www.blogger.com/profile/10034981483746372549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjF3GQcbuvByE1gmwu_u85-UfB49oCt1Gc779bUtIfvCTEUG8s2c61oiK4faoyCJHRdD8QHbGiCMISl4BeE7zpwu1Gpj1hTg_2VdQPe4HYqgHG1dbcUJgTf2jK8KJD8xQ/s220/images.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4078990029309008066.post-7725918087806788952</id><published>2013-10-20T22:12:00.000+09:00</published><updated>2013-10-20T22:12:35.870+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="mongoose"/><title type='text'>mongoose-virtualプロパティ</title><content type='html'>mongooseはバーチャルプロパティ(virtual property)をサポートしています、このトピックで紹介します。&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;var mongoose = require(&#39;mongoose&#39;);
mongoose.connect(&#39;mongodb://localhost/test01&#39;);

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

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

    var PersonModel = mongoose.model(&#39;Person&#39;,PersonSchema);

    var person1 = new PersonModel({
      name:{first:&#39;koma&#39;,last:&#39;endia&#39;}
    });
    console.log(&amp;quot;person1=&amp;quot; + person1.name.first + &amp;quot; &amp;quot; + person1.name.last);
    console.log(&amp;quot;person1=&amp;quot; + person1.name.full);

    var person2 = new PersonModel({});
    person2.name.full = &amp;quot;koma endia&amp;quot;;
    console.log(&amp;quot;person2=&amp;quot; + person2.name.first + &amp;quot; &amp;quot; + person2.name.last);
    console.log(&amp;quot;person2=&amp;quot; + person2.name.full);
});
&lt;/pre&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
$node virtual.js&lt;br /&gt;
person1=koma endia&lt;br /&gt;
person1=koma endia&lt;br /&gt;
person2=koma endia&lt;br /&gt;
person2=koma endia&lt;br /&gt;
&lt;br /&gt;
&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;pub-3751499937762873&quot;;
/* (webso)250x250, 作成済み 10/01/20 */
google_ad_slot = &quot;5586609950&quot;;
google_ad_width = 250;
google_ad_height = 250;
//--&gt;

&lt;/script&gt; &lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;</content><link rel='replies' type='application/atom+xml' href='http://komanew.blogspot.com/feeds/7725918087806788952/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://komanew.blogspot.com/2013/10/mongoose-virtual.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4078990029309008066/posts/default/7725918087806788952'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4078990029309008066/posts/default/7725918087806788952'/><link rel='alternate' type='text/html' href='http://komanew.blogspot.com/2013/10/mongoose-virtual.html' title='mongoose-virtualプロパティ'/><author><name>admin</name><uri>http://www.blogger.com/profile/10034981483746372549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjF3GQcbuvByE1gmwu_u85-UfB49oCt1Gc779bUtIfvCTEUG8s2c61oiK4faoyCJHRdD8QHbGiCMISl4BeE7zpwu1Gpj1hTg_2VdQPe4HYqgHG1dbcUJgTf2jK8KJD8xQ/s220/images.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4078990029309008066.post-194692574321942319</id><published>2013-10-20T16:38:00.001+09:00</published><updated>2013-10-20T16:38:18.283+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Javascript"/><title type='text'>javascriptコールバック例</title><content type='html'>Node.jsはコールバック関数をよく使われますので、コールバック簡単なサンプルをメモします。&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;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));
&lt;/pre&gt;&lt;br /&gt;
$node callback.js&lt;br /&gt;
3&lt;br /&gt;
5&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt; &lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;pub-3751499937762873&quot;;
/* (webso)250x250, 作成済み 10/01/20 */
google_ad_slot = &quot;5586609950&quot;;
google_ad_width = 250;
google_ad_height = 250;
//--&gt;

&lt;/script&gt; &lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;</content><link rel='replies' type='application/atom+xml' href='http://komanew.blogspot.com/feeds/194692574321942319/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://komanew.blogspot.com/2013/10/javascript_20.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4078990029309008066/posts/default/194692574321942319'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4078990029309008066/posts/default/194692574321942319'/><link rel='alternate' type='text/html' href='http://komanew.blogspot.com/2013/10/javascript_20.html' title='javascriptコールバック例'/><author><name>admin</name><uri>http://www.blogger.com/profile/10034981483746372549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjF3GQcbuvByE1gmwu_u85-UfB49oCt1Gc779bUtIfvCTEUG8s2c61oiK4faoyCJHRdD8QHbGiCMISl4BeE7zpwu1Gpj1hTg_2VdQPe4HYqgHG1dbcUJgTf2jK8KJD8xQ/s220/images.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4078990029309008066.post-152965704060374490</id><published>2013-10-20T14:30:00.000+09:00</published><updated>2013-10-20T16:54:09.332+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="MongoDB"/><category scheme="http://www.blogger.com/atom/ns#" term="mongoose"/><category scheme="http://www.blogger.com/atom/ns#" term="node.js"/><title type='text'>mongooseでMongoDBに接続してみる</title><content type='html'>前回と前々回はmongodbとmongoskinを使ってMongoDBに接続処理を紹介しました、今回はmongooseの使い方を紹介します。&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Mongoose&lt;/b&gt;&lt;br /&gt;
&lt;a href=&quot;http://mongoosejs.com/&quot; target=&quot;_blank&quot;&gt;http://mongoosejs.com/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
まず、インストールします&lt;br /&gt;
&lt;pre&gt;npm install mongoose
&lt;/pre&gt;&lt;br /&gt;
MongoDBは何もせずに、直接にアクセスコードを書きます&lt;br /&gt;
&lt;pre&gt;nano mongoose.js
...
var mongoose = require(&#39;mongoose&#39;);
mongoose.connect(&#39;mongodb://localhost/test01&#39;);

var kittySchema = mongoose.Schema({
    name: String,
    age: Number
    });
kittySchema.methods.speak = function () {
  var greeting = this.name
      ? &amp;quot;Meow name is &amp;quot; + this.name : &amp;quot;I don&#39;t have a name&amp;quot;
  console.log(greeting);
}
kittySchema.statics.findAge10 = function(cb) {
  this.find({age:10}, cb);
}

var db = mongoose.connection;
db.on(&#39;error&#39;, console.error.bind(console, &#39;connection error:&#39;));
db.once(&#39;open&#39;, function callback () {
    var Kitten = mongoose.model(&#39;Kitten&#39;, kittySchema);
    var silence = new Kitten({ name: &#39;Silence&#39;, age: 10 });
    console.log(silence.name);
    silence.speak();

    silence.save(function(error, doc){
        if (error) throw error;

        doc.speak();
    });

    Kitten.find({age:10}, function(error, kittens){
        if (error) throw error;
        //console.log(kittens.length);
        for(var i = 0; i &amp;lt; kittens.length; i++) {
            console.log(&amp;quot;name=&amp;quot; + kittens[i].name + &amp;quot;, age=&amp;quot; + kittens[i].age);
        }
    });
    Kitten.findAge10(function(error, kittens){
        if (error) throw error;
        for(var i = 0; i &amp;lt; kittens.length; i++) {
            console.log(&amp;quot;[findAge10]&amp;quot; + &amp;quot;_id=&amp;quot; + kittens[i]._id + &amp;quot;, name=&amp;quot; + kittens[i].name + &amp;quot;, age=&amp;quot; + kittens[i].age);
        }
    });
});
...
&lt;/pre&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
MongoDBにコマンドラインで確認&lt;br /&gt;
&lt;pre&gt;mongo test01
MongoDB shell version: 2.4.6
connecting to: test01
&amp;gt; db.kittens.find();
{ &amp;quot;name&amp;quot; : &amp;quot;Silence&amp;quot;, &amp;quot;_id&amp;quot; : ObjectId(&amp;quot;526363e14c9737ad7d000001&amp;quot;), &amp;quot;__v&amp;quot; : 0 }
{ &amp;quot;name&amp;quot; : &amp;quot;Silence&amp;quot;, &amp;quot;_id&amp;quot; : ObjectId(&amp;quot;526364602b72debd7d000001&amp;quot;), &amp;quot;__v&amp;quot; : 0 }
{ &amp;quot;name&amp;quot; : &amp;quot;Silence&amp;quot;, &amp;quot;_id&amp;quot; : ObjectId(&amp;quot;526366ac44f9bbdc7d000001&amp;quot;), &amp;quot;__v&amp;quot; : 0 }
{ &amp;quot;name&amp;quot; : &amp;quot;Silence&amp;quot;, &amp;quot;_id&amp;quot; : ObjectId(&amp;quot;526366af45401de77d000001&amp;quot;), &amp;quot;__v&amp;quot; : 0 }
{ &amp;quot;name&amp;quot; : &amp;quot;Silence&amp;quot;, &amp;quot;_id&amp;quot; : ObjectId(&amp;quot;526366b470beb2f27d000001&amp;quot;), &amp;quot;__v&amp;quot; : 0 }
{ &amp;quot;name&amp;quot; : &amp;quot;Silence&amp;quot;, &amp;quot;_id&amp;quot; : ObjectId(&amp;quot;526366e287add0fe7d000001&amp;quot;), &amp;quot;__v&amp;quot; : 0 }
{ &amp;quot;name&amp;quot; : &amp;quot;Silence&amp;quot;, &amp;quot;age&amp;quot; : 10, &amp;quot;_id&amp;quot; : ObjectId(&amp;quot;5263677163a5d80d7e000001&amp;quot;), &amp;quot;__v&amp;quot; : 0 }
{ &amp;quot;name&amp;quot; : &amp;quot;Silence&amp;quot;, &amp;quot;age&amp;quot; : 10, &amp;quot;_id&amp;quot; : ObjectId(&amp;quot;5263677474f35d187e000001&amp;quot;), &amp;quot;__v&amp;quot; : 0 }
{ &amp;quot;name&amp;quot; : &amp;quot;Silence&amp;quot;, &amp;quot;age&amp;quot; : 10, &amp;quot;_id&amp;quot; : ObjectId(&amp;quot;526367783de3c5237e000001&amp;quot;), &amp;quot;__v&amp;quot; : 0 }
{ &amp;quot;name&amp;quot; : &amp;quot;Silence&amp;quot;, &amp;quot;age&amp;quot; : 10, &amp;quot;_id&amp;quot; : ObjectId(&amp;quot;526367983c6a5b2f7e000001&amp;quot;), &amp;quot;__v&amp;quot; : 0 }
{ &amp;quot;name&amp;quot; : &amp;quot;Silence&amp;quot;, &amp;quot;age&amp;quot; : 10, &amp;quot;_id&amp;quot; : ObjectId(&amp;quot;526367ae080b5c3b7e000001&amp;quot;), &amp;quot;__v&amp;quot; : 0 }
{ &amp;quot;name&amp;quot; : &amp;quot;Silence&amp;quot;, &amp;quot;age&amp;quot; : 10, &amp;quot;_id&amp;quot; : ObjectId(&amp;quot;526367c1ab6cf3477e000001&amp;quot;), &amp;quot;__v&amp;quot; : 0 }
{ &amp;quot;name&amp;quot; : &amp;quot;Silence&amp;quot;, &amp;quot;age&amp;quot; : 10, &amp;quot;_id&amp;quot; : ObjectId(&amp;quot;52636802f4ac10537e000001&amp;quot;), &amp;quot;__v&amp;quot; : 0 }
{ &amp;quot;name&amp;quot; : &amp;quot;Silence&amp;quot;, &amp;quot;age&amp;quot; : 10, &amp;quot;_id&amp;quot; : ObjectId(&amp;quot;5263686f6a20e2657e000001&amp;quot;), &amp;quot;__v&amp;quot; : 0 }
&amp;gt;
&lt;/pre&gt;&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;pub-3751499937762873&quot;;
/* (webso)250x250, 作成済み 10/01/20 */
google_ad_slot = &quot;5586609950&quot;;
google_ad_width = 250;
google_ad_height = 250;
//--&gt;

&lt;/script&gt; &lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;</content><link rel='replies' type='application/atom+xml' href='http://komanew.blogspot.com/feeds/152965704060374490/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://komanew.blogspot.com/2013/10/mongoosemongodb.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4078990029309008066/posts/default/152965704060374490'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4078990029309008066/posts/default/152965704060374490'/><link rel='alternate' type='text/html' href='http://komanew.blogspot.com/2013/10/mongoosemongodb.html' title='mongooseでMongoDBに接続してみる'/><author><name>admin</name><uri>http://www.blogger.com/profile/10034981483746372549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjF3GQcbuvByE1gmwu_u85-UfB49oCt1Gc779bUtIfvCTEUG8s2c61oiK4faoyCJHRdD8QHbGiCMISl4BeE7zpwu1Gpj1hTg_2VdQPe4HYqgHG1dbcUJgTf2jK8KJD8xQ/s220/images.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4078990029309008066.post-5889148651075112600</id><published>2013-10-20T13:33:00.000+09:00</published><updated>2013-10-20T13:33:23.153+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="express.js"/><title type='text'>express.jsのエラー処理</title><content type='html'>express.jsのエラー処理サンプルです。&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;app.js&lt;/b&gt;&lt;br /&gt;
&lt;pre&gt;var express = require(&#39;express&#39;);
var routes = require(&#39;./routes&#39;);
var user = require(&#39;./routes/user&#39;);
var http = require(&#39;http&#39;);
var path = require(&#39;path&#39;);

var app = express();

// all environments
app.set(&#39;port&#39;, process.env.PORT || 3000);
app.set(&#39;views&#39;, __dirname + &#39;/views&#39;);
app.set(&#39;view engine&#39;, &#39;jade&#39;);
app.use(express.favicon());
app.use(express.logger(&#39;dev&#39;));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(require(&#39;stylus&#39;).middleware(__dirname + &#39;/public&#39;));
app.use(express.static(path.join(__dirname, &#39;public&#39;)));

//一般処理
app.use(function(request, response, next){
    console.log(&#39;ここだよ=[&#39; + request.url + &#39;]&#39;);
    response.send(404, &amp;quot;何もない&amp;quot;);
});
//errorオブジェクトある処理
app.use(function(error, request, response, next) {
    //クライアントに送るHTTPコードです。基本はerrorオブジェクトにセットするべきですが、
    //セットされてない場合は、404をセットする
    response.status(error.status || 404);
    response.send(&amp;quot;error.message=&amp;quot; + error.message);
});

app.get(&#39;/&#39;, routes.index);

//パラメーター処理例１
app.get(&#39;/user/:username&#39;, function(request, response, next){
    var username = request.params.username;
    if (username === &#39;koma&#39;) {
        next(); //404
    } else if (username === &#39;endia&#39;) {
        var err = new Error(&#39;該当するユーザーは存在していません。&#39;);
        //err.status = 500; //セットしたら、500を返す；セットしなければ、404を返す
        next(err);
    } else {
        response.send(&amp;quot;ここは&amp;lt;strong&amp;gt;&amp;quot; + username + &amp;quot;&amp;lt;/strong&amp;gt;さんのページです。&amp;quot;);
    }
});

//パラメーター処理例２：チェック処理
app.param(&#39;postname&#39;, function(request, response, next, postname){
    if (postname === &#39;koma&#39;) {
        next(new Error(postname + &amp;quot;ポストは存在しません。&amp;quot;)); //404
    } else {
        request.postname = postname;
        next();
    }
});
//パラメーターチェックOKだったら、ここへ
app.get(&#39;/post/:postname&#39;, function(request, response){
    response.send(&amp;quot;this is &amp;lt;h1&amp;gt;&amp;quot; + request.postname + &amp;quot;.&amp;lt;/h1&amp;gt;&amp;quot;);
});

http.createServer(app).listen(app.get(&#39;port&#39;), function(){
  console.log(&#39;Express server listening on port &#39; + app.get(&#39;port&#39;));
});
&lt;/pre&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt; &lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;pub-3751499937762873&quot;;
/* (webso)250x250, 作成済み 10/01/20 */
google_ad_slot = &quot;5586609950&quot;;
google_ad_width = 250;
google_ad_height = 250;
//--&gt;

&lt;/script&gt; &lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;</content><link rel='replies' type='application/atom+xml' href='http://komanew.blogspot.com/feeds/5889148651075112600/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://komanew.blogspot.com/2013/10/expressjs_20.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4078990029309008066/posts/default/5889148651075112600'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4078990029309008066/posts/default/5889148651075112600'/><link rel='alternate' type='text/html' href='http://komanew.blogspot.com/2013/10/expressjs_20.html' title='express.jsのエラー処理'/><author><name>admin</name><uri>http://www.blogger.com/profile/10034981483746372549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjF3GQcbuvByE1gmwu_u85-UfB49oCt1Gc779bUtIfvCTEUG8s2c61oiK4faoyCJHRdD8QHbGiCMISl4BeE7zpwu1Gpj1hTg_2VdQPe4HYqgHG1dbcUJgTf2jK8KJD8xQ/s220/images.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4078990029309008066.post-4851821001249998570</id><published>2013-10-20T12:16:00.000+09:00</published><updated>2013-10-20T12:16:00.477+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="express.js"/><title type='text'>Express.jsサンプル</title><content type='html'>Express.jsフレームワークでウェブアプリケーションを開発するサンプルです。&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;app.js&lt;/b&gt;&lt;br /&gt;
&lt;pre&gt;var express = require(&#39;express&#39;);
var routes = require(&#39;./routes&#39;);
var user = require(&#39;./routes/user&#39;);
var http = require(&#39;http&#39;);
var path = require(&#39;path&#39;);

var app = express();

// all environments
app.set(&#39;port&#39;, process.env.PORT || 3000);
app.set(&#39;views&#39;, __dirname + &#39;/views&#39;);
app.set(&#39;view engine&#39;, &#39;jade&#39;);
app.use(express.favicon());
app.use(express.logger(&#39;dev&#39;));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(require(&#39;less-middleware&#39;)({ src: __dirname + &#39;/public&#39; }));
app.use(express.static(path.join(__dirname, &#39;public&#39;)));

// development only
if (&#39;development&#39; == app.get(&#39;env&#39;)) {
  app.use(express.errorHandler());
}

app.get(&#39;/&#39;, function(request, response){
    response.send(&amp;quot;helo express new aaabbb-bobopapa.&amp;quot;);
});

app.get(&#39;/hi&#39;, function(request, response){
    response.send(&amp;quot;&amp;lt;h1&amp;gt;hi&amp;lt;/h1&amp;gt;&amp;quot;);
});

app.get(&#39;/usrs/:userid&#39;, function(request, response){
    response.send(&amp;quot;&amp;lt;h1&amp;gt;Helo, User &amp;quot; + request.params.userid + &amp;quot;&amp;lt;/h1&amp;gt;&amp;quot;);
});

app.get(&#39;/home&#39;, function(request, response){
    response.send(request.get(&#39;user-agent&#39;));
});

app.param(&#39;from&#39;, function(request, response, next){
   request.from = parseInt(request.params.from, 10);
   next();
});

app.get(&#39;/user/:from-:to&#39;, function(request, response){
    var from = request.from;
    var to   = parseInt(request.params.to, 10);
    res.send(&amp;quot;new.from=&amp;quot; + from + &amp;quot;, to=&amp;quot; + to);
});

var count = 0;
app.get(&#39;/helo.txt&#39;, function(request, response, next){
    //res.send(&amp;quot;app.js helo.txt&amp;quot;);
    count++;
    next();
});
app.get(&#39;/count&#39;, function(request, response, next){
    response.send(count + &amp;quot; views.&amp;quot;);
});

http.createServer(app).listen(app.get(&#39;port&#39;), function(){
  console.log(&#39;Express server listening on port &#39; + app.get(&#39;port&#39;));
});
&lt;/pre&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;b&gt;home.jade&lt;/b&gt;&lt;br /&gt;
&lt;pre&gt;extends layout

block content

  - var myname = &amp;quot;koma.endia &amp;quot;;
  - var myval1 = &amp;quot;&amp;lt;h3&amp;gt;myval1&amp;lt;/h3&amp;gt;&amp;quot;;
  - var myval2 = &amp;quot;&amp;quot;;

    style
        li { background-color:green; }

    h1 Helo JadeNew.
    h2 #{title}

    pre I want to put a lot of text here ...

    pre
        |AAAA
        |BBBB
        |   CCCC

    p.
        xxx
            yyy
        zzz


    ul#idList
        li.cssLI aaaa
        li bbbb #{myname} #{1+3}
        li cccc
        li dddd !{myval1}
        li eeee
            a(href=&amp;quot;/other&amp;quot; target=&amp;quot;_blank&amp;quot;, rel=&amp;quot;aabbc&amp;quot;) eeeeeeeeeeeeee

    - if (myval1) {
        p A=true
    - } else {
        p A=false
    - }

    p
        if (myval2 === &amp;quot;&amp;quot;)
            |aabbccd 111
        else
            |xxyyzza 222
&lt;/pre&gt;&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;pub-3751499937762873&quot;;
/* (webso)250x250, 作成済み 10/01/20 */
google_ad_slot = &quot;5586609950&quot;;
google_ad_width = 250;
google_ad_height = 250;
//--&gt;

&lt;/script&gt; &lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;</content><link rel='replies' type='application/atom+xml' href='http://komanew.blogspot.com/feeds/4851821001249998570/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://komanew.blogspot.com/2013/10/expressjs.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4078990029309008066/posts/default/4851821001249998570'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4078990029309008066/posts/default/4851821001249998570'/><link rel='alternate' type='text/html' href='http://komanew.blogspot.com/2013/10/expressjs.html' title='Express.jsサンプル'/><author><name>admin</name><uri>http://www.blogger.com/profile/10034981483746372549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjF3GQcbuvByE1gmwu_u85-UfB49oCt1Gc779bUtIfvCTEUG8s2c61oiK4faoyCJHRdD8QHbGiCMISl4BeE7zpwu1Gpj1hTg_2VdQPe4HYqgHG1dbcUJgTf2jK8KJD8xQ/s220/images.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4078990029309008066.post-2570798049571998996</id><published>2013-10-19T22:28:00.001+09:00</published><updated>2013-10-19T22:28:29.883+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="express.js"/><title type='text'>node再起動せずに、直したコードを自動適用</title><content type='html'>通常はnode.jsコードを直して、[node app.js]を再起動しないと、適用されない問題あります。直したコードを即時に反映させるため、&lt;b&gt;nodemon&lt;/b&gt;モジュールを利用して実現できます。&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;$vim package.json
...
  &amp;quot;scripts&amp;quot;: {
    &amp;quot;start&amp;quot;: &amp;quot;nodemon app.js&amp;quot;
  },
...
  &amp;quot;devDependencies&amp;quot;: {
    &amp;quot;nodemon&amp;quot;: &amp;quot;*&amp;quot;
  }
...

$npm install
npm http GET https://registry.npmjs.org/nodemon
npm http 200 https://registry.npmjs.org/nodemon
npm http GET https://registry.npmjs.org/nodemon/-/nodemon-0.7.10.tgz
npm http 200 https://registry.npmjs.org/nodemon/-/nodemon-0.7.10.tgz
nodemon@0.7.10 node_modules/nodemon

$npm start
&amp;gt; application-name@0.0.1 start /home/user/node/webapps/site1
&amp;gt; nodemon app.js
19 Oct 22:25:29 - [nodemon] v0.7.10
19 Oct 22:25:29 - [nodemon] to restart at any time, enter `rs`
19 Oct 22:25:29 - [nodemon] watching: /home/user/node/webapps/site1
19 Oct 22:25:29 - [nodemon] starting `node app.js`
&lt;/pre&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
vim設定&lt;br /&gt;
&lt;pre&gt;cd
nano .vimrc
...
set tabstop=4
set autoindent
set expandtab
set shiftwidth=4
...
&lt;/pre&gt;&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;pub-3751499937762873&quot;;
/* (webso)250x250, 作成済み 10/01/20 */
google_ad_slot = &quot;5586609950&quot;;
google_ad_width = 250;
google_ad_height = 250;
//--&gt;

&lt;/script&gt; &lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;</content><link rel='replies' type='application/atom+xml' href='http://komanew.blogspot.com/feeds/2570798049571998996/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://komanew.blogspot.com/2013/10/node.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4078990029309008066/posts/default/2570798049571998996'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4078990029309008066/posts/default/2570798049571998996'/><link rel='alternate' type='text/html' href='http://komanew.blogspot.com/2013/10/node.html' title='node再起動せずに、直したコードを自動適用'/><author><name>admin</name><uri>http://www.blogger.com/profile/10034981483746372549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjF3GQcbuvByE1gmwu_u85-UfB49oCt1Gc779bUtIfvCTEUG8s2c61oiK4faoyCJHRdD8QHbGiCMISl4BeE7zpwu1Gpj1hTg_2VdQPe4HYqgHG1dbcUJgTf2jK8KJD8xQ/s220/images.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4078990029309008066.post-1630263545557984039</id><published>2013-10-14T21:12:00.001+09:00</published><updated>2013-10-14T21:12:39.273+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="MongoDB"/><category scheme="http://www.blogger.com/atom/ns#" term="node.js"/><title type='text'>MongoSkin基本使用</title><content type='html'>MongoDBにアクセスできるドライバーMongoskinの基本使い方です。&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;/**
 * Mongoskin
 * https://github.com/kissjs/node-mongoskin
 * http://www.hacksparrow.com/mongoskin-tutorial-with-examples.html
 */
// ライブラリ参照
var mongo = require(&#39;mongoskin&#39;);
// DB接続
var db = mongo.db(&#39;192.168.11.1:27017/blog_db&#39;, {
    safe : false
});
// コレクション取得
var users = db.collection(&#39;users&#39;);
// user検索
users.find({
    &amp;quot;name&amp;quot; : {
        $regex : /user-[0-4]/i
    }
}).toArray(function(error, band) {
    for ( var i = 0; i &amp;lt; band.length; i++) {
        console.log(&amp;quot;name&amp;quot; + i + &amp;quot;=&amp;quot; + band[i].name);
    }
});
var threads = db.collection(&#39;threads&#39;);
var thread = {
    &amp;quot;title&amp;quot; : &amp;quot;title-4&amp;quot;,
    &amp;quot;content&amp;quot; : &amp;quot;this is title-4 content.&amp;quot;
};
// データ追加
threads.insert(thread, function(error, resultArray) {
    console.log(&amp;quot;inserted thread title=&amp;quot; + JSON.stringify(resultArray));
    threads.find({}).each(function(error, thread) {
        if (thread !== null)
            console.log(&amp;quot;thread title=&amp;quot; + thread.title);
    });
    // データ更新
    threads.update({
        &amp;quot;title&amp;quot; : &amp;quot;title-4&amp;quot;
    }, {
        $set : {
            &amp;quot;content&amp;quot; : &amp;quot;new title-4 content.&amp;quot;
        }
    }, function(error, result) {
        console.log(&amp;quot;object is updated.&amp;quot;);
        threads.findOne({
            &amp;quot;title&amp;quot; : &amp;quot;title-4&amp;quot;
        }, function(error, thread) {
            console.log(&amp;quot;thread4 new content=&amp;quot; + thread.content);
        });
    });
});
// データ削除
threads.remove({
    &amp;quot;title&amp;quot; : &amp;quot;title-4&amp;quot;
}, function(error, result) {
    console.log(&amp;quot;object is removed.&amp;quot;);
});
// データ件数取得
threads.count({}, function(error, count) {
    console.log(&amp;quot;threads.count=&amp;quot; + count);
});
&lt;/pre&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;pub-3751499937762873&quot;;
/* (webso)250x250, 作成済み 10/01/20 */
google_ad_slot = &quot;5586609950&quot;;
google_ad_width = 250;
google_ad_height = 250;
//--&gt;

&lt;/script&gt; &lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;</content><link rel='replies' type='application/atom+xml' href='http://komanew.blogspot.com/feeds/1630263545557984039/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://komanew.blogspot.com/2013/10/mongoskin.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4078990029309008066/posts/default/1630263545557984039'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4078990029309008066/posts/default/1630263545557984039'/><link rel='alternate' type='text/html' href='http://komanew.blogspot.com/2013/10/mongoskin.html' title='MongoSkin基本使用'/><author><name>admin</name><uri>http://www.blogger.com/profile/10034981483746372549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjF3GQcbuvByE1gmwu_u85-UfB49oCt1Gc779bUtIfvCTEUG8s2c61oiK4faoyCJHRdD8QHbGiCMISl4BeE7zpwu1Gpj1hTg_2VdQPe4HYqgHG1dbcUJgTf2jK8KJD8xQ/s220/images.jpg'/></author><thr:total>0</thr:total></entry></feed>