Latest checkin

Badges

Checkin history

Friends

Posts

February 25, 10:50 PM

このエントリは、「東京Node学園 4時限目」の資料その5です。

Nodeには様々なサードパーティ製のパッケージが存在しています。基本的にそれらはnpmでインストールすることになるので、http://search.npmjs.org/ で一覧を確認することができます。

また、同様のものをGithubのwatch数やfork数で見える可したものが http://toolbox.no.de/ です。

同様の目的のパッケージでも複数あってどれを選んだらいいか困ることも多いと思いますので、代表的によく使われているものを挙げていきます。

Webアプリケーションフレームワーク

WebSocket

データベース

OAuth認証

テスト

DOMモック

フロー制御ライブラリ

UTF-8以外の日本語エンコーディング対応

February 25, 10:16 PM

このエントリは、「東京Node学園 4時限目」の資料その4です。

app.js

var io = require('socket.io').listen(80);

io.of('/index').on('connection', function(socket) {
  socket.on('location', function(data) {
    data.id = socket.id;
    socket.broadcast.emit('location', data);
  });
});

io.of('/speakers').on('connection', function(socket) {
  socket.on('location', function(data) {
    data.id = socket.id;
    socket.broadcast.emit('location', data);
  });
});

io.of('/session').on('connection', function(socket) {
  socket.on('location', function(data) {
    data.id = socket.id;
    socket.broadcast.emit('location', data);
  });
});

io.of('/sponsors').on('connection', function(socket) {
  socket.on('location', function(data) {
    data.id = socket.id;
    socket.broadcast.emit('location', data);
  });
});

io.of('/ticket').on('connection', function(socket) {
  socket.on('location', function(data) {
    data.id = socket.id;
    socket.broadcast.emit('location', data);
  });
});

client.js

function cursorShare(ns) {
  var socket = io.connect('http://example.com/' + ns);
  socket.on('location', function(data) {
    var cursor = $('#' + data.id);
    if (!cursor.attr('id')) {
      cursor = $('<img>');
      cursor.attr('class', 'cursor');
      cursor.attr('id', data.id);
      cursor.attr('src', 'images/cursor.png');
      cursor.css('position', 'absolute');
      cursor.css('width', '18px');
      cursor.css('height', '24px');
      $('#wrapper').append(cursor);
    }
    cursor.css('left', data.x + 'px');
    cursor.css('top', data.y + 'px');
    cursor.show();
    setTimeout(function() {
      cursor.hide();
    }, 10000);
  });
  $('#wrapper').mousemove(function(e) {
    socket.emit('location', {
      x: e.pageX,
      y: e.pageY
    });
  });
}

各ページ

  <script type="text/javascript">
    $(function() {
      cursorShare('session');
    });
  </script>

見たらだいたい分かるべ

February 25, 10:12 PM

このエントリは、「東京Node学園 4時限目」の資料その3です。

Expressを使ったWebアプリケーションの動きが大体つかめたところで、次はSocket.IOを使ったリアルタイムWebアプリケーションを作ってみましょう。

Socket.IOとはWebSocketをNodeで扱うためのサーバ及びクライアントのライブラリです。WebSocketが使える環境であればWebSocketを、そうでなければ自動的にXHR-polling等に切り替えてくれるのが最大の特徴です。

まずは、Socket.IOをインストールします。package.jsonを以下の様に書き換えてください。

 {
     "name": "application-name"
   , "version": "0.0.1"
   , "private": true
   , "dependencies": {
       "express": "2.5.8"
     , "jade": ">= 0.0.1"
+    , "socket.io": "*"
   }
 }

socket.ioの記述を追加しました。"*"は最新バージョンを意味します。それではsampleディレクトリで再度 npm install をしましょう。

$ npm install

Socket.IOがインストールされたはずです。このように、使用するパッケージをpackage.jsonに記述し管理することで、node_modules ディレクトリをバージョン管理システムの対象外にしておいても同じ環境をコマンド一発で再現することができます。

それでは実際にSocket.IOを使って、現在ページを見ている人数をリアルタイムに表示するプログラムを書いてみましょう。まず、app.jsでSocket.IOを読み込みます。

 var express = require('express')
+  , socketio = require('socket.io')
   , routes = require('./routes');

またファイルの末尾に以下のコードを追加します。

var io = socketio.listen(app);
var count = 0;
io.sockets.on('connection', function(socket) {
  //connect
  count++;
  io.sockets.emit('count change', count);
  socket.on('disconnect', function() {
    //disconnect
    count--;
    socket.broadcast.emit('count change', count);
  });
});

クライアント(ブラウザ)から接続がきたらconnectに書かれた処理が、切断されたらdisconnectに書かれた処理がそれぞれ実行されます。今回の場合、

  1. countの初期値を0にしておく
  2. 接続がきたらcountを+1して、その値を自分を含めた接続している全員に'count change'というイベントとして通知する
  3. 切断したらcountを-1して、その値を自分以外の全員に通知する

という動作になります。

クライアント側にも処理を記述しましょう。./views/layout.jadeを以下のように修正します。

 !!!
 html
   head
     title= title
     link(rel='stylesheet', href='/stylesheets/style.css')
+    script(type='text/javascript', src='http://code.jquery.com/jquery.min.js')
+    script(type='text/javascript', src='/socket.io/socket.io.js')
+    script(type='text/javascript')
+      var socket = io.connect();
+      socket.on('count change', function(count) {
+        // event
+        $('#count').text(count);
+      });
 body!= body

jQueryとSocket.IOのクライアントライブラリを読み込んでいます。Socket.IOのクライアントライブラリは、app.js内でlisten()したことによって自動的に上記のパスに提供されます。

io.connect()をした段階で、サーバ側の'connection'イベントが発生します。また、'count change'というイベントがきたら、eventに記述された処理を実行します。今回の場合、人数が変わるたびにjQueryを用いてcountというidの要素のテキストを書き換えています。

今回の場合、記述するJavaScriptのコード量が少ないため直接layout.jadeに記述しましたが、JavaScriptは本来別ファイルに切り出して、public/javascripts/内に置くほうが良いでしょう。

最後に views/index.jade を以下のように修正します。

 h1= title
 p Welcome to #{title}
+p 現在このページを見ている人は
+  span#count
+  人います。

それでは実行してみましょう。

$ node app.js

で起動し、http://localhost:3000/ にアクセスすると、「現在このページを見ている人は1人います。」と表示されるはずです。現在のタブを開いたまま他のタブでもアクセスしてみましょう。「現在このページを見ている人は2人います」と表示されるはずです。

さらに、最初に「1人」と表示されていたタブも、リロードしなくてもすでに「2人」になっているはずです!タブを増やすたびに人数が増えて行き、閉じるたびに減っていくことを確認してください。

今回は、接続イベントと切断イベント以外のイベントを発生させるのはサーバ側でイベントを受信するのはクライアント側のみという作りになっていますが、もちろん、クライアント側で任意のイベントを発生(emit)させることや、サーバ側で受信(on)することができます。また、Socket.IOにはnamespaceという概念があり、特定のnamespaceに属する相手にのみ通知することも可能です。その例として、その4では昨年の「東京Node学園祭」のWebサイトで用いたマウスカーソルの共有を紹介します。

February 25, 10:12 PM

このエントリは、「東京Node学園 4時限目」の資料その2です。

最初にexpressをインストールをしましょう。

$ npm install -g express

Nodeの場合、必要なパッケージのインストールは npm を用いて行います。-gはグローバルオプションで、これがあるとパッケージは node コマンドがある場所と同じ階層にインストールされます。これがない場合は、現在のディレクトリに node_modules というディレクトリを作成し、その中にインストールされます。

Expressの場合、ひな形を作成する express コマンドが提供されるため、パスの通った場所にそのコマンドを配置する必要があるため、上記のように -g をつけてインストールしています。また、この際、Macでインストーラを使ってインストールした人は sudo を付ける必要があるでしょう。

それでは実際に express コマンドでひな形を作成してみましょう。

$ express sample

   create : sample
   create : sample/package.json
   create : sample/app.js
   create : sample/public
   create : sample/public/javascripts
   create : sample/public/images
   create : sample/public/stylesheets
   create : sample/public/stylesheets/style.css
   create : sample/routes
   create : sample/routes/index.js
   create : sample/views
   create : sample/views/layout.jade
   create : sample/views/index.jade

   dont forget to install dependencies:
   $ cd sample && npm install

で、言われたとおり sample に入って npm install するんですが、その前にディレクトリ構造を確認しましょう。

sample
 ├ app.js 
 ├ package.json
 ├ public
 │  ├ images
 │  ├ javascripts
 │  └ stylesheets
 │       └ style.css
 ├ routes
 │  └ index.js
 └ views
      ├ index.jade
      └ layout.jade

app.js がメインのプログラムで、package.jsonが npm のための設定ファイル。publicが静的ファイル置き場で、routesがルーティングごとのプログラム置き場で、viewsがテンプレート置き場です。

それでは実際に sample に入って npm install しましょう。

$ cd sample && npm install

今回は、Expressのインストール時とは違って、 npm install の後に特定のパッケージ名を指定しませんでした。この場合、 npm は package.json の dependencies に書かれているパッケージをインストールします。インストールされたパッケージは node_modules ディレクトリ内に格納され、プログラムから参照されます。

今回の場合、 Express と jade 及びそれらの依存パッケージがインストールされました。Expressは最初にも(グローバルに)インストールしたじゃないかと思われるかもしれませんが、最初にインストールしたExpressは express コマンドのためだけに利用しており、実際にプログラム中から参照されるのはこの node_modules の中にあるパッケージの方です。

では、メインプログラムである app.js を見てみましょう。



/**
 * Module dependencies.
 */

var express = require('express')
  , routes = require('./routes');

var app = module.exports = express.createServer();

// Configuration

app.configure(function(){
  app.set('views', __dirname + '/views');
  app.set('view engine', 'jade');
  app.use(express.bodyParser());
  app.use(express.methodOverride());
  app.use(app.router);
  app.use(express.static(__dirname + '/public'));
});

app.configure('development', function(){
  app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});

app.configure('production', function(){
  app.use(express.errorHandler());
});

// Routes

app.get('/', routes.index);

app.listen(3000);
console.log("Express server listening on port %d in %s mode", app.address().port, app.settings.env);

最初にrequireで必要なパッケージを読み込んでいます。 express がパッケージ名だけで ./routes は相対パス指定になっています。requireは相対パス指定の時はそのファイルもしくはそのディレクトリにある index.js or index.json を読み込み、そうでない場合は コアモジュール もしくは node_modules 内にあるモジュールを読み込みます(実際にはもうちょい細かいです)。

次に express のサーバオブジェクトを作成し、それをモジュールとして公開しています。これによって、例えばテストコードなどからrequireすることでこのサーバオブジェクトを参照することができるようになります。

その後は、設定が続きます。テンプレートの置き場所やテンプレートエンジンの種類、静的ファイルの置き場所等を設定しています。また、developmentモードとproductionモードでの設定の振り分けもしています。ちなみに、デフォルトではdevelopmentモードで起動しますが、環境変数NODE_ENVにproductionを設定すればproductionモードで起動できます。

最後に、ルーティングの設定をして port 3000 を待ち受けています。それでは早速実行してみましょう。

$ node app.js
Express server listening on port 3000 in development mode

ブラウザで http://localhost:3000/ にアクセスして Welcome to Express と表示されたら成功です。

実際にアクセスされた時の動きを順に追っていきましょう。 http://localhost:3000/ にアクセスされると、ルーティングの設定であるように routes.index が実行されます。routes.index は require('./routes').index であり、require('./routes') は ./routes/index.js を読み込むので、./routes/index.js を見てみましょう。

/*
 * GET home page.
 */

exports.index = function(req, res){
  res.render('index', { title: 'Express' })
};

require('./routes') にはこのexportsが入るため、 routes.index は結局このfunctionになります。

このfunctionでは、レスポンスを描画する際のテンプレートファイルの指定および、変数のバインドをおこなっています。この場合、テンプレートの置き場は./viewsでテンプレートエンジンはjadeだと設定されているので、使用されるテンプレートファイルは ./views/index.jade になります。デフォルトでは同じ場所にあるlayout.jadeが読み込まれ、その body 変数に index.jade の中身がバインドされます。

layout.jade は以下のようになっています。

!!!
html
  head
    title= title
    link(rel='stylesheet', href='/stylesheets/style.css')
  body!= body

title要素としてtitleにバインドした値を表示し、CSSファイルを読み込んでいます。body要素として表示するのは、次のindex.jadeの中身です(!=はescapeしないで表示するという意味)。

h1= title
p Welcome to #{title}

こちらでも title にバインドした値を2ヶ所に表示しています。jadeの細かい文法は https://github.com/visionmedia/jade をご覧下さい。

February 25, 10:12 PM

このエントリは、「東京Node学園 4時限目」の資料その1です。

Windows

公式サイトのトップページに最新安定版のダウンロードリンクがあるので、そこからWindows向けインストーラをダウンロードしましょう。ちなみに、過去バージョンや最新開発版は http://nodejs.org/dist/ に置いてあります。

現在の最新安定版は v0.6.11 で、最新開発版は v0.7.5 です。1個目の「.」と2個目の「.」の間の数字が偶数なら安定版、奇数なら開発版です。

インストーラをダウンロードしたら実行しましょう。基本的には画面の指示に従えば問題ありません。インストールが終了すると

C:\Program Files (x86)\nodejs

の中に node.exe や npm.cmd が配置されます。また、上記フォルダが環境変数Pathに追加されます。

コマンドプロンプトを開いて

node --version

が正常に表示されることを確認しましょう。

コマンドが見つからない等のエラーが出た場合は、パスの追加が反映されてない可能性があります。その場合は、Windowsの再起動をするのが手っ取り早いです。

Mac

インストーラを使う

自分のhomeディレクトリ外(/usr/local/bin)に実行ファイルを置くことを厭わないのであれば、これが楽ちんです。ただし、npm で実行コマンドを提供するようなパッケージをインストールする際には、(/usr/local/binにファイルを置くために)sudoでnpmコマンドを実行する必要があります。

公式サイトのトップページに最新安定版のダウンロードリンクがあるので、そこからWindows向けインストーラをダウンロードしましょう。ちなみに、過去バージョンや最新開発版は http://nodejs.org/dist/ に置いてあります。

現在の最新安定版は v0.6.11 で、最新開発版は v0.7.5 です。1個目の「.」と2個目の「.」の間の数字が偶数なら安定版、奇数なら開発版です。

インストーラをダウンロードしたら実行しましょう。基本的には画面の指示に従えば問題ありません。インストールが終了すると

/usr/local/bin

の中に node や npm のコマンドが配置されます。ターミナルを開いて

node --version

が正常に表示されることを確認しましょう。

インストーラを使わない

Linuxと同様なのでLinuxをご覧ください。ただしXCodeが必要になるので、XCodeをインストール済みでないMacの場合は、時間的な都合により上記のインストーラを使う方法にしたほうがよいでしょう。

Linux

aptやyumでインストールすることができなくはないですが、かなり古いバージョンであったりイレギュラーなインストールのされ方だったりすることがあるので、オススメはしません。

今一番のオススメなインストール方法は nodebrew を使うことです。詳しくは id:Jxckd:id:Jxck:20120224:1330035058 をご覧下さい。

どのような方法にせよ、Nodeをビルドする必要があるので

  1. Python 2.6以降3.0未満
  2. g++ などのコンパイラ
  3. libssl-dev などのSSL系の開発パッケージ

が必要になります。

November 25, 08:16 AM

仕事が忙しくて今まで更新できなかった……。

というわけで、アジア初のNode.jsのカンファレンス「東京Node学園祭 2011」を終えて1月近く経とうとしておりますが、ここらでようやく感想を書かせていただきたいと思います。

個人的には、とても体調が悪い中での司会だったので、ちょっと辛くもあったのですが、特に問題も起こさずに終えることができたかな、と思っています。

セッションの中で特に印象に残ったのは、やはりなんといってもGuillermoのライブコーディングですね。これが世界レベルのWizardか、とその差をまじまじと見せつけられた気がします。

タイピング速度が早いってのももちろん凄いんですが、それ以上にライブコーディングであれだけのものを創り上げる、しかもコメントや型チェックまで当然のように行い、エスケープコードで文字色までつける、ということを当たり前のようにやってのけるのが驚きでした。

補完がどうのとかIDEの使い勝手がどうのとか、彼らには関係がないんですね。全部正確に覚えてるから。彼らの生産性の高さの理由が垣間見えた瞬間でした。

他にはやはり、@ndrugerさんのLTが面白かったなー。KinectとNode.jsを組み合わせてブラウザ上で3Dモデルを動かして、さらにiPhoneでタップするとそのタップした手を動かしてるところにブロックが出現するというもの。まあ見てもらうのが一番わかりやすいですね。

講演内容は全て、ニコニコ動画にUPしてあります。生放送のタイムシフトは期限が限られてしまうので、ドワンゴ研究開発チャンネル上に動画としておいてありますので、いつでもご覧いただけます。

参加できなかった方も、参加して見直したい方も、是非ご覧ください。

最後に、講演者/来場者/スポンサー/後援/スタッフのすべての皆さまに感謝を申し上げます。皆さまのお力添えがあって、無事に終えることができました。

さあ次は、東京Node学園 3時限目です。

September 21, 07:21 AM

既に公式Webサイトをオープンしているのでご存知の方もいらっしゃると思いますが、Node.js日本ユーザグループ主催のアジア初のNode.jsのカンファレンス「東京Node学園祭2011」を開催いたします。

なんと、Node.jsの作者であるRyan Dahl(@ryah)氏と、Socket.IOの作者であるGuillermo Rauch(@rauchg)氏に来日していただき、講演してもらいます。

公式サイトは http://nodefest.jp/2011/

サイト上では今同時にサイトを見ている他の人のカーソルを表示するというギミックが仕込んであります。もちろんNode.js + WebSocket(Socket.IO)です。

数日中にチケットの販売も開始する予定です。最新の情報は @nodefest で流すので是非フォローしてください。

August 22, 04:43 AM

Blogで告知するの忘れてましたが、LL Planetsの「Node.jsとは何だったのか」というセッションにパネラーとして参加しました。

発表資料はこちら

発表自体はまあ慣れてるので滞りなくできたとはおもうのですが、パネルディスカッション的なものって何がでてくるか分からないのでちょっとドキドキしてしまいますね。ググればすぐ出てくるようなことでも、ちゃんと覚えておかないとその場ですぐ説明できなかったりするので、なかなか難しい。でもとても有意義な討論ができたと思います。ありがとうございました。

最後に抽選があって、そこで発表者なのに自重せずにボール拾ったら、なんと

が当たりました!大当たりっぽいです。

あとは、id:badatmathid:Constellationの間に確かな友情が芽生えたのを見守りながら懇親会を楽しみました。

実行委員会の皆さま、参加者の皆さま、とてもいいイベントをありがとうございました。

August 05, 12:47 PM

みゆっき☆Thinkというドワンゴ研究開発チャンネル上の生放送番組に出演してきました。Node.jsについてその背景の説明からサンプルコードの解説までを行いました。タイムシフトでの視聴もできますし、アーカイブもそのうち公開されると思うので、是非チェックしてみてください。

番組内で使用した資料はこちら。資料とサンプルのソースコードはこちら

また、番組内でも言いましたが、今月発売のSoftwareDesign2011年9月号にNode.jsの記事を執筆しました。こちらも今日の内容をより詳細に解説したもの+また違ったサンプルのコード解説になっているので是非ご覧ください。

追記)アーカイブ公開されました http://www.nicovideo.jp/watch/1313051884

Posts

May 24, 01:59 AM
Sqale - 開発者のためのホスティングサービス【スケール】Ruby on Rails 対応。

アプリケーションを動かすために、サーバーの構築や運用に時間を費やすのは、あなたがしたいことですか?Sqale(スケール)ならあなたがコードを書く時間が少しでも増えるように面倒な部分を引き受けます。あなたはいつもの画面からアプリケーションを deploy するだけです。現在、通常の新規ユーザー登録の受付は行っておりません。 クローズドβ 版のご利用をご希望される方は、下記フォームからメールアドレスの...

t_43z ,

May 23, 07:11 AM
小飼弾×増井雄一郎が大激論! 開発者「大増殖時代」の到来で、プログラマーの存在意義はどう変わる?(1/3)|エンジニアtype

Webサービスやスマートフォンアプリの隆盛、プログラミングを簡易化する各種フレームワークの普及......。ここ最近、文系学生が就職の武器としてプログラミングを学ぶほど、「創る人」の数が増えている。 とりわけフロントエンドで顕著なこの傾向。「1億総Webアプリ開発者の時代が来た」といったような過激な記事も出始めている中、IT・Web業界ですでに仕事に取り組むプログラマーの役割はどう変わっていくのか...

t_43z ,

May 23, 03:30 AM
HyperDex.org: Home of the Searchable Key-Value Store

HyperDex is a distributed, searchable key-value store. HyperDex provides a unique search primitive which enables searches over stored values. By design, HyperDex retains the performance of traditional...

t_43z ,

May 22, 08:05 AM
Fluentd Casual Talksに参加してきました! - okochangのインフラ日誌

遅くなってしまいましたが、Fluentd Casual Talksに参加してきたのでブログを書きたいと思います。 atndの募集では200人以上が応募して、とても注目度が高い勉強会である事がわかります。 僕はtd-agentのrpmを入れて遊んだ程度なので、本番環境で使ってる方のお話はとても嬉しいです!会場は最近ヒカリエにお引越しされたDeNAさんでした。 僕はヒカリエに行くのも初めてだったので、...

t_43z

May 22, 01:48 AM
moescript -- Moescript docs

Moe is a new, not-very-little Javascript-targeted language written in JavaScript. Its features are inspired by Scala, Python, Haskell and Coffee. It is aimed to deal with common troubles in JavaScript...

t_43z , Scala, Python, Haskell, CoffeeScriptを参考にした新しい言語。名前の由来が気になるところ。

May 21, 05:35 AM
【保存版】カスタムの自由度が最大の魅力...。Androidで絶対に行なっておくべき設定ポイントを全7章立てで徹底解説! : ギズモード・ジャパン

Android , Androidアプリ , コラム , スマートフォンアプリ , 携帯電話 【保存版】カスタムの自由度が最大の魅力...。Androidで絶対に行なっておくべき設定ポイントを全7章立てで徹底解説! 2012.05.20 13:00 [0] [0] iPhoneにはない魅力がいっぱいだぞ! 日本のスマートフォンブームは、最初にソフトバンクから発売された「iPhone 3G」が火をつ...

t_43z

May 17, 12:54 AM
Googleが過去最大級のアップデートを発表―セマンティック検索実現へ大きく一歩踏み出す

今日(米国時間5/16)、Googleはここしばらくの間でもっとも野心的かつ興味深い検索エンジンのアップデートをリリースする。一般公開は数日後になる予定だが、検索キーワードに関連ある重要な事実が検索ページの右側の大きなパネルの中に表示されるようになる。このパネルはGoogleが知識グラフ(Knowledge Graph)と呼ぶ新しいテクノロジーによって提供される。 その役割は大きくわけて2つある。...

t_43z

May 15, 12:38 PM
東京別視点ガイド : 食べログには絶対載せられないグルメレポ!人間の男性器を「性器喫食会」で食べてきました。

14 5月 食べログには絶対載せられないグルメレポ!人間の男性器を「性器喫食会」で食べてきました。 昨日13日夜、阿佐ヶ谷ロフトにておこなわれた、人間の男性器を食べるイベント「Ham Cybele ~世紀喫食会~」に参加してまいりました。先日の記事で告知したとおり、わたくし松澤、食べてまいりました。ひとさまのオチンチンを。いやー、これでとうとうハンニバルレクターなんかとおんなじ、カニバリストクラス...

t_43z ,

May 15, 06:04 AM
4Gamer.net ― 今は“無駄なこと”が不足しているから,僕らは「ニコニコ超会議」をやったんです――ドワンゴ川上量生氏との対談企画「ゲーマーはもっと経営者を目指すべき!」第6回

今は“無駄なこと”が不足しているから,僕らは「ニコニコ超会議」をやったんです――ドワンゴ川上量生氏との対談企画「ゲーマーはもっと経営者を目指すべき!」第6回 副編集長:TAITAI 123→ 4月28日,29日に開催された「ニコニコ超会議」は,会場来場者9万人以上,ネット来場者に至っては約350万人という盛り上がりを見せた。連載第6回目となる,ドワンゴ・川上量生氏との対談企画「ゲーマーはもっと経営...

t_43z ,

May 14, 06:24 AM
LearnBoost/monk · GitHub

Monk is a tiny layer that provides simple yet substantial usability improvements for MongoDB usage within Node.JS. var db = require('monk')('localhost/mydb') , users = db.get('users') users.index('nam...

t_43z ,

May 14, 03:10 AM
AppJS

Build Cross-Platform Applications for desktop using HTML, CSS, Javascript Download AppJS (v0.0.2) Read Documentation Because it is simple and yet powerful. Using AppJS you don't need to be worry about...

t_43z , , , ,

May 14, 02:23 AM
多様性と共感のメディア「ニコ動」、超会議の真意  :日本経済新聞

20歳代人口の8割以上が会員になっている動画配信サイト「ニコニコ動画(ニコ動)」が、コンテンツ革命の新たな一歩を踏み出した。4月末に幕張メッセで開催した大規模イベント「ニコニコ超会議」では、9万人以上が来場、延べ347万人がネットの生中継で“参加”した。だが、単に派手なことをぶち上げたかったわけではない。そこにはニコ動の本質があった。 4月29日、舞台はふたたび千葉市の幕張メッセに併設されたイベン...

t_43z ,

May 13, 09:03 AM
MVC Framework for Node — Matador

An Obvious MVC Framework for Node.js About Sane defaults and a simple structure, scaling as your application grows. Matador is a clean, organized framework for Node.js architected to suit MVC enthusia...

t_43z ,

May 10, 07:18 AM
10万円で使い勝手とセキュリティのアドバイスをしようと思います - ぼくはまちちゃん!(Hatena)

こんにちはこんにちは!! 今日、友達の HolyGrail くんとカレーを食べてる時に、こんなことを言われました。 「自分がもし、はまちちゃんに何か依頼するとしたら、  自社のサービスをがっつり使い込んでもらって、色々なアドバイスしてもらったりとかかなー。  それで10万円とか、どうだろう?」 …なるほど!いいですね! もしかしたら、そういう需要ってあるのかも? 何日か前に「ふつうのformをつか...

t_43z

May 09, 11:12 AM
OpenShift by Red Hat

OpenShift is a collection of cloud services forming a solid redefining Platform-as-a-Service for developers who build apps on open source technologies. Time of the essence? Just upload code and go! Wh...

t_43z , ,

May 09, 09:06 AM
Amazon EC2 Micro Instanceが止まった場合の対処 | A-tak.com

Amazon EC2 Micro Instance(マイクロインスタンス)が応答しなくなった。 突如、EC2のサーバーが反応がなくなった。 Webだけじゃなくて、SSHも。 Management ConsoleでStopしたのに、Stoppingのままで、何時間もそのまま。 止まらない限り課金されちゃうだろうし、どうしたものか! Amazon AWSのフォーラムで聞いてみました。 どうやら、インス...

t_43z , ,

May 09, 02:35 AM
package.json.jit.su

package.json { "name": "http-server", "preferGlobal": "true", "version": "0.3.0", "author": "Nodejitsu <support@nodejitsu.com>", "description": "a simple zero-configuration command-line http server", ...

t_43z , ,

May 08, 04:01 AM
ニコニコ超デザイン-Metro考察編-

ニコニコ超デザイン-Metro考察編- — Presentation Transcript ニコニコ超デザインMetro  考察編VoQn株式会社ドワンゴ  ニコニコ事業本部第三企画開発部  研究開発セクション はじめに前回までのあらすじ 2012/4/6〜~4/24 ニコニコ超開発 http://www.slideshare.net/koizuka/ss-‐‑‒12766279 ニコニコ超デザイ...

t_43z ,

May 07, 10:22 PM
「ニコ動」で進行するコンテンツ革命、熱狂の舞台裏  :日本経済新聞

素人が作った曲を素人が歌い、素人がアレンジをして素人がプロモーションビデオを作る。レコード会社などの「大人」は一切、介在しないまま、次々と発表される「作品」に、10歳代から20代の若者が熱狂している。舞台は2725万人を抱える動画配信サイト「ニコニコ動画(ニコ動)」。大人の知らないところで進行する「コンテンツ革命」の実態とは。 ステージ上に浮かび上がるバーチャルアイドル 千葉市の幕張メッセに併設さ...

t_43z

May 07, 12:08 AM
edX - Home

Watch the edX Press Conference If stream does not start automatically, press play button below Streaming Live by Ustream MIT and Harvard announce edX Joint venture builds on MITx and Harvard distance ...

t_43z ,

Posts

May 23, 11:41 PM
meso pushed to master at meso/meso.github.com May 24, 2012
May 23, 11:38 PM
meso created repository meso.github.com May 24, 2012
New repository is at meso/meso.github.com
May 16, 08:13 PM
meso pushed to master at nodejsjp/nodejsjp.github.com May 17, 2012
May 16, 08:13 PM
ChangeLog に v0.6.18 を追加しました
1 commit with 30 additions and 1 deletion
May 15, 11:46 PM
meso pushed to gh-pages at nodejsjp/nodejs.org_ja May 16, 2012
May 15, 11:44 PM
meso pushed to japanese-v0.6 at nodejsjp/node May 16, 2012
  • bnoordhuis committed bd90717
    node: delete NODE_CHANNEL_FD from env

    Prevents accidental inheritance by child processes. If the child process is a
    node process, it would try to set up a channel with the parent and consequently
    never quit because the channel kept the event loop alive.

    Fixes #3240.
  • piscisaureus committed a475e62
    Windows: add test for path.normalize with UNC paths
  • piscisaureus committed d91004a
    Windows: make path.normalize convert all slashes to backslashes

    Closes #3066
  • 26 more commits »
May 15, 11:44 PM
meso pushed to master at nodejsjp/nodejsjp.github.com May 16, 2012
May 15, 11:44 PM
v0.6.18 対応.
1 commit with 2 additions and 2 deletions
May 15, 11:43 PM
meso merged pull request 71 on nodejsjp/node May 16, 2012
v0.6.18 対応.
28 commits with 1,201 additions and 360 deletions
May 14, 06:23 AM
meso started watching LearnBoost/monk May 14, 2012
monk's description:
The wise MongoDB API
May 08, 11:20 AM
meso pushed to master at nodejsjp/nodejsjp.github.com May 08, 2012
May 08, 11:20 AM
ChangeLog に v0.6.16 / v0.6.17 を追加しました
1 commit with 52 additions and 1 deletion
May 08, 11:11 AM
meso pushed to gh-pages at nodejsjp/nodejs.org_ja May 08, 2012
May 08, 03:32 AM
meso pushed to master at nodejsjp/nodejsjp.github.com May 08, 2012
May 08, 03:32 AM
v0.6.17 対応.
1 commit with 2 additions and 2 deletions
May 08, 03:32 AM
meso pushed to japanese-v0.6 at nodejsjp/node May 08, 2012
  • isaacs committed fbe143d
    Merge branch 'v0.6.17-release' into v0.6
  • isaacs committed 4ced23d
    2012.05.04 Version 0.6.17 (stable)

    * Upgrade npm to 1.1.21

    * uv: Add support for EROFS errors (Ben Noordhuis, Maciej Małecki)

    * uv: Add support for EIO and ENOSPC errors (Fedor Indutny)

    * windows: Add support for EXDEV errors (Bert Belder)

    * http: Fix client memory leaks (isaacs, Vincent Voyer)

    * fs: fix file descriptor leak in sync functions (Ben Noordhuis)

    * fs: fix ReadStream / WriteStream double close bug (Ben Noordhuis)
  • isaacs committed 711ecdd
    test: Run weak install with --unsafe-perm

    This way it doesn't die when running as root.
  • 19 more commits »
May 08, 03:32 AM
meso merged pull request 70 on nodejsjp/node May 08, 2012
v0.6.17 対応.
21 commits with 1,051 additions and 340 deletions
May 04, 02:54 AM
meso pushed to gh-pages at nodejsjp/nodejs.org_ja May 04, 2012
May 04, 02:53 AM
meso pushed to master at nodejsjp/nodejs.org_ja May 04, 2012
May 04, 01:52 AM
meso pushed to master at nodejsjp/nodejsjp.github.com May 04, 2012
May 04, 01:52 AM
v0.7.8 対応.
2 commits with 4 additions and 4 deletions
May 04, 01:44 AM
meso pushed to gh-pages at nodejsjp/nodejs.org_ja May 04, 2012
May 04, 01:43 AM
meso pushed to japanese at nodejsjp/node May 04, 2012
  • bnoordhuis committed a4a04f9
    node: provide snprintf implementation on windows

    _snprintf() doesn't zero-terminate the buffer on overflow.
  • bnoordhuis committed dee8c51
    node: don't check return value of unsetenv()

    It returns void on some platforms, notably FreeBSD.
  • bnoordhuis committed bc834c3
    Alias _snprintf to snprintf, fix Windows build.
  • 111 more commits »
May 04, 01:43 AM
meso merged pull request 69 on nodejsjp/node May 04, 2012
v0.7.8 対応.
113 commits with 177,849 additions and 58,012 deletions
May 02, 07:27 PM
meso pushed to master at nodejsjp/nodejsjp.github.com May 02, 2012
May 02, 07:25 PM
meso pushed to gh-pages at nodejsjp/nodejs.org_ja May 02, 2012
May 02, 07:20 PM
meso pushed to japanese-v0.6 at nodejsjp/node May 02, 2012
May 02, 07:19 PM
meso merged pull request 68 on nodejsjp/node May 02, 2012
v0.6.16 対応.
27 commits with 1,509 additions and 666 deletions
April 23, 02:26 AM
meso started following masuidrive April 23, 2012
masuidrive has 28 public repos and 295 followers
April 20, 01:05 AM
meso pushed to master at nodejsjp/nodejsjp.github.com April 20, 2012
abcdefghijklmnopqrstuvwxyz abcdefghijklmnopqrstuvwxyz