Toshihiro Shimizu
a.k.a. meso
Updates
-
「ニコ動」世界へ ネット文化変え、稼げる経済圏を :日本経済新聞 http://t.co/ZkHLGtlM
-
参加します / 第1回 スタートHaskell2 : ATND http://t.co/PQxUvW3y @atndさんから
-
Scala, Python, Haskell, CoffeeScriptを参考にした新しい言語。名前の由来が気になるところ。 / “moescript -- Moescript docs” http://t.co/QuNqIJB9
-
日食クルーズ帰港。金環食もちゃんと見られたし、よかったー。
-
これも、iPhoneにしては頑張った http://t.co/wJSkmIcS
-
iPhoneだとこれが限界 http://t.co/3uFZ8zFa
-
金環食見えた!
-
欠けてるの見えた! http://t.co/FfT4q7u6
-
むしろ雨降ってきた
-
食の開始。全く見えん。 http://t.co/BJzDgQ8T
-
日食クルーズ出航した
-
R.I.P. B-CAS7 days ago from web | Reply, Retweet, Favorite
-
8 days ago from web | Reply, Retweet, Favorite
-
今は“無駄なこと”が不足しているから,僕らは「ニコニコ超会議」をやったんです――ドワンゴ川上量生氏との対談企画「ゲーマーはもっと経営者を目指… http://t.co/qJzW1we2 @4GamerNewsさんから
-
今日はDiablo3休暇の人多そうだな9 days ago from web | Reply, Retweet, Favorite
-
“多様性と共感のメディア「ニコ動」、超会議の真意 :日本経済新聞” http://t.co/oLwaErHh
-
OpenShiftはNode.jsのPaaSとしては良い感じなんだけど、npmパッケージの管理がpackage.jsonベースじゃないのだけが不満だなぁ。 #nodejs_jp10 days ago from web | Reply, Retweet, Favorite
-
@kanasan ああ、そうだ。返事しようと思って忘れてました!ちょっと仕事が立て込んでるので、近いうちはちょっと難しいと思います...2 weeks ago from web | Reply, Retweet, Favorite
-
http://t.co/57mzDYxh の日本語ドキュメントを最新安定版の v0.6.17 に対応させました(thanks to @koichik)。なお、これより前のv0.5/0.6系及びv0.7.8より前のv0.7系には脆弱性があるので更新を推奨します #nodejs_jp2 weeks ago from web | Reply, Retweet, Favorite
Updates
-
あー、例のアレについて僕が感じてる違和感がわかった。この学生の「夢」やこの学生の持つ「ポテンシャル」やこの学生の創りだす「未来」に対して"投資"するのではなく、そういうものを一切感じさせないただの学業がおろそかになって成績が下降しただけの学生本人に対して"援助"するという形になってる点だわ。Posted 7 days ago
-
あけましておめでとうございますPosted 4 months ago
-
誰かpicotubeの招待くださいPosted 4 months ago
-
そういえば、喪中につき年末年始のご挨拶ご遠慮申し上げます。って今更遅いかもだけどPosted 5 months ago
-
やばい、また熱出てきた。喉の痛みもおさまらんなー。Posted 7 months ago
-
うーん、こんな時間から晩ご飯食べてるから不健康なのかなぁPosted 7 months ago
-
ガラケーから投稿テストPosted 7 months ago
-
帰宅。奥さんが爆睡してて、晩ご飯が存在しない。雨の中外に調達しに行くのやだなー。Posted 7 months ago
-
帰宅。思ったより遅くなって終電ギリな感じ。また今日も女性に「死にたい」って言われた。僕には「生きたい」にしか聞こえなかった。Posted 7 months ago
-
姉2人その旦那さん1人と子供たち3人の総勢6人が我が家にきてて計8人で賑やかなりPosted 9 months ago
-
みんなクローズアップ現代みてねーPosted 14 months ago
Photos
Latest checkin
-
@海浜幕張駅 (Kaihimmakuhari Sta.) (美浜区ひび野2-110)3 weeks ago in 千葉市, 千葉県
Badges
Checkin history
-
@海浜幕張駅 (Kaihimmakuhari Sta.) (美浜区ひび野2-110)3 weeks ago
-
2 months ago
-
@薄皮ハネ付き餃子 きょう助 大井町店 (東大井5-15-1)5 months ago
-
5 months ago
-
@塚田農場 品川高輪口店 (高輪3-26-33)6 months ago
-
@居酒屋 小松 (六本木4-9-2)6 months ago
-
@福山駅 (Fukuyama Sta.) (三之丸町30-1)7 months ago
-
@福山ニューキャッスルホテル (三之丸町8-16)7 months ago
-
@福山駅 (Fukuyama Sta.) (三之丸町30-1)7 months ago
-
@東京都中央卸売市場 食肉市場 (港南2-7-19)7 months ago
-
8 months ago
-
9 months ago
-
@神戸迎賓館須磨離宮 (神戸市須磨区離宮西町2丁目4番1号)9 months ago
-
@JR 三ノ宮駅 (Sannomiya Sta.) (中央区布引町4-1-1)9 months ago
-
@トラットリア リゾラ ベッラ (1-54-1)9 months ago
-
@楽蔵 (日本橋人形町3-7-13)11 months ago
-
@成田国際空港 (Narita International Airport (NRT)) (三里塚御料牧場1-1)12 months ago
-
@Disneyland Park (1313 S Harbor Blvd)12 months ago
-
@The Ritz-Carlton (1 Ritz-Carlton Drive)12 months ago
-
@The Ritz-Carlton (1 Ritz-Carlton Drive)12 months ago
Posts
このエントリは、「東京Node学園 4時限目」の資料その5です。
Nodeには様々なサードパーティ製のパッケージが存在しています。基本的にそれらはnpmでインストールすることになるので、http://search.npmjs.org/ で一覧を確認することができます。
また、同様のものをGithubのwatch数やfork数で見える可したものが http://toolbox.no.de/ です。
同様の目的のパッケージでも複数あってどれを選んだらいいか困ることも多いと思いますので、代表的によく使われているものを挙げていきます。
Webアプリケーションフレームワーク
WebSocket
データベース
- MySQL
- Redis
- MongoDB
OAuth認証
テスト
- テスティングフレームワーク
- Assert拡張
DOMモック
フロー制御ライブラリ
UTF-8以外の日本語エンコーディング対応
このエントリは、「東京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>
見たらだいたい分かるべ
このエントリは、「東京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に書かれた処理がそれぞれ実行されます。今回の場合、
- countの初期値を0にしておく
- 接続がきたらcountを+1して、その値を自分を含めた接続している全員に'count change'というイベントとして通知する
- 切断したら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サイトで用いたマウスカーソルの共有を紹介します。
このエントリは、「東京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 をご覧下さい。
このエントリは、「東京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:Jxck の d:id:Jxck:20120224:1330035058 をご覧下さい。
どのような方法にせよ、Nodeをビルドする必要があるので
- Python 2.6以降3.0未満
- g++ などのコンパイラ
- libssl-dev などのSSL系の開発パッケージ
が必要になります。
仕事が忙しくて今まで更新できなかった……。
というわけで、アジア初のNode.jsのカンファレンス「東京Node学園祭 2011」を終えて1月近く経とうとしておりますが、ここらでようやく感想を書かせていただきたいと思います。
個人的には、とても体調が悪い中での司会だったので、ちょっと辛くもあったのですが、特に問題も起こさずに終えることができたかな、と思っています。
セッションの中で特に印象に残ったのは、やはりなんといってもGuillermoのライブコーディングですね。これが世界レベルのWizardか、とその差をまじまじと見せつけられた気がします。
タイピング速度が早いってのももちろん凄いんですが、それ以上にライブコーディングであれだけのものを創り上げる、しかもコメントや型チェックまで当然のように行い、エスケープコードで文字色までつける、ということを当たり前のようにやってのけるのが驚きでした。
補完がどうのとかIDEの使い勝手がどうのとか、彼らには関係がないんですね。全部正確に覚えてるから。彼らの生産性の高さの理由が垣間見えた瞬間でした。
他にはやはり、@ndrugerさんのLTが面白かったなー。KinectとNode.jsを組み合わせてブラウザ上で3Dモデルを動かして、さらにiPhoneでタップするとそのタップした手を動かしてるところにブロックが出現するというもの。まあ見てもらうのが一番わかりやすいですね。
講演内容は全て、ニコニコ動画にUPしてあります。生放送のタイムシフトは期限が限られてしまうので、ドワンゴ研究開発チャンネル上に動画としておいてありますので、いつでもご覧いただけます。
参加できなかった方も、参加して見直したい方も、是非ご覧ください。
- @ryahによる基調講演(その1)
- @ryahによる基調講演(その2)
- @Jxck_による「LiveCoding for beginner」
- ヤフー社内でのNode.jsプロジェクトの紹介
- @snamuraによる「ピグライフとnode.js」
- @badatmathによる「ngCoreにおけるNode.js」
- @rauchgによる「Socket.IOの話とnode-canvasのライブコーディング」
- LT大会
最後に、講演者/来場者/スポンサー/後援/スタッフのすべての皆さまに感謝を申し上げます。皆さまのお力添えがあって、無事に終えることができました。
さあ次は、東京Node学園 3時限目です。
既に公式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 で流すので是非フォローしてください。
Blogで告知するの忘れてましたが、LL Planetsの「Node.jsとは何だったのか」というセッションにパネラーとして参加しました。
発表資料はこちら。
発表自体はまあ慣れてるので滞りなくできたとはおもうのですが、パネルディスカッション的なものって何がでてくるか分からないのでちょっとドキドキしてしまいますね。ググればすぐ出てくるようなことでも、ちゃんと覚えておかないとその場ですぐ説明できなかったりするので、なかなか難しい。でもとても有意義な討論ができたと思います。ありがとうございました。
最後に抽選があって、そこで発表者なのに自重せずにボール拾ったら、なんと
Advanced Programming in the UNIX® Environment (Addison-Wesley Professional Computing Series)
- 作者: W. Richard Rago, Stephen A. Stevens
- 出版社/メーカー: Addison-Wesley Professional
- 発売日: 2005/06/17
- メディア: ハードカバー
- クリック: 25回
- この商品を含むブログ (4件) を見る
が当たりました!大当たりっぽいです。
あとは、id:badatmathとid:Constellationの間に確かな友情が芽生えたのを見守りながら懇親会を楽しみました。
実行委員会の皆さま、参加者の皆さま、とてもいいイベントをありがとうございました。
みゆっき☆Thinkというドワンゴ研究開発チャンネル上の生放送番組に出演してきました。Node.jsについてその背景の説明からサンプルコードの解説までを行いました。タイムシフトでの視聴もできますし、アーカイブもそのうち公開されると思うので、是非チェックしてみてください。
番組内で使用した資料はこちら。資料とサンプルのソースコードはこちら。
また、番組内でも言いましたが、今月発売のSoftwareDesign2011年9月号にNode.jsの記事を執筆しました。こちらも今日の内容をより詳細に解説したもの+また違ったサンプルのコード解説になっているので是非ご覧ください。
追記)アーカイブ公開されました http://www.nicovideo.jp/watch/1313051884
Posts
Sqale - 開発者のためのホスティングサービス【スケール】Ruby on Rails 対応。アプリケーションを動かすために、サーバーの構築や運用に時間を費やすのは、あなたがしたいことですか?Sqale(スケール)ならあなたがコードを書く時間が少しでも増えるように面倒な部分を引き受けます。あなたはいつもの画面からアプリケーションを deploy するだけです。現在、通常の新規ユーザー登録の受付は行っておりません。 クローズドβ 版のご利用をご希望される方は、下記フォームからメールアドレスの...
小飼弾×増井雄一郎が大激論! 開発者「大増殖時代」の到来で、プログラマーの存在意義はどう変わる?(1/3)|エンジニアtypeWebサービスやスマートフォンアプリの隆盛、プログラミングを簡易化する各種フレームワークの普及......。ここ最近、文系学生が就職の武器としてプログラミングを学ぶほど、「創る人」の数が増えている。 とりわけフロントエンドで顕著なこの傾向。「1億総Webアプリ開発者の時代が来た」といったような過激な記事も出始めている中、IT・Web業界ですでに仕事に取り組むプログラマーの役割はどう変わっていくのか...
HyperDex.org: Home of the Searchable Key-Value StoreHyperDex 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...
Fluentd Casual Talksに参加してきました! - okochangのインフラ日誌遅くなってしまいましたが、Fluentd Casual Talksに参加してきたのでブログを書きたいと思います。 atndの募集では200人以上が応募して、とても注目度が高い勉強会である事がわかります。 僕はtd-agentのrpmを入れて遊んだ程度なので、本番環境で使ってる方のお話はとても嬉しいです!会場は最近ヒカリエにお引越しされたDeNAさんでした。 僕はヒカリエに行くのも初めてだったので、...
moescript -- Moescript docsMoe 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 programming, language Scala, Python, Haskell, CoffeeScriptを参考にした新しい言語。名前の由来が気になるところ。
【保存版】カスタムの自由度が最大の魅力...。Androidで絶対に行なっておくべき設定ポイントを全7章立てで徹底解説! : ギズモード・ジャパンAndroid , Androidアプリ , コラム , スマートフォンアプリ , 携帯電話 【保存版】カスタムの自由度が最大の魅力...。Androidで絶対に行なっておくべき設定ポイントを全7章立てで徹底解説! 2012.05.20 13:00 [0] [0] iPhoneにはない魅力がいっぱいだぞ! 日本のスマートフォンブームは、最初にソフトバンクから発売された「iPhone 3G」が火をつ...
Googleが過去最大級のアップデートを発表―セマンティック検索実現へ大きく一歩踏み出す今日(米国時間5/16)、Googleはここしばらくの間でもっとも野心的かつ興味深い検索エンジンのアップデートをリリースする。一般公開は数日後になる予定だが、検索キーワードに関連ある重要な事実が検索ページの右側の大きなパネルの中に表示されるようになる。このパネルはGoogleが知識グラフ(Knowledge Graph)と呼ぶ新しいテクノロジーによって提供される。 その役割は大きくわけて2つある。...
東京別視点ガイド : 食べログには絶対載せられないグルメレポ!人間の男性器を「性器喫食会」で食べてきました。14 5月 食べログには絶対載せられないグルメレポ!人間の男性器を「性器喫食会」で食べてきました。 昨日13日夜、阿佐ヶ谷ロフトにておこなわれた、人間の男性器を食べるイベント「Ham Cybele ~世紀喫食会~」に参加してまいりました。先日の記事で告知したとおり、わたくし松澤、食べてまいりました。ひとさまのオチンチンを。いやー、これでとうとうハンニバルレクターなんかとおんなじ、カニバリストクラス...
4Gamer.net ― 今は“無駄なこと”が不足しているから,僕らは「ニコニコ超会議」をやったんです――ドワンゴ川上量生氏との対談企画「ゲーマーはもっと経営者を目指すべき!」第6回今は“無駄なこと”が不足しているから,僕らは「ニコニコ超会議」をやったんです――ドワンゴ川上量生氏との対談企画「ゲーマーはもっと経営者を目指すべき!」第6回 副編集長:TAITAI 123→ 4月28日,29日に開催された「ニコニコ超会議」は,会場来場者9万人以上,ネット来場者に至っては約350万人という盛り上がりを見せた。連載第6回目となる,ドワンゴ・川上量生氏との対談企画「ゲーマーはもっと経営...
LearnBoost/monk · GitHubMonk 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...
AppJSBuild 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...
多様性と共感のメディア「ニコ動」、超会議の真意 :日本経済新聞20歳代人口の8割以上が会員になっている動画配信サイト「ニコニコ動画(ニコ動)」が、コンテンツ革命の新たな一歩を踏み出した。4月末に幕張メッセで開催した大規模イベント「ニコニコ超会議」では、9万人以上が来場、延べ347万人がネットの生中継で“参加”した。だが、単に派手なことをぶち上げたかったわけではない。そこにはニコ動の本質があった。 4月29日、舞台はふたたび千葉市の幕張メッセに併設されたイベン...
MVC Framework for Node — MatadorAn 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...
10万円で使い勝手とセキュリティのアドバイスをしようと思います - ぼくはまちちゃん!(Hatena)こんにちはこんにちは!! 今日、友達の HolyGrail くんとカレーを食べてる時に、こんなことを言われました。 「自分がもし、はまちちゃんに何か依頼するとしたら、 自社のサービスをがっつり使い込んでもらって、色々なアドバイスしてもらったりとかかなー。 それで10万円とか、どうだろう?」 …なるほど!いいですね! もしかしたら、そういう需要ってあるのかも? 何日か前に「ふつうのformをつか...
OpenShift by Red HatOpenShift 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...
Amazon EC2 Micro Instanceが止まった場合の対処 | A-tak.comAmazon EC2 Micro Instance(マイクロインスタンス)が応答しなくなった。 突如、EC2のサーバーが反応がなくなった。 Webだけじゃなくて、SSHも。 Management ConsoleでStopしたのに、Stoppingのままで、何時間もそのまま。 止まらない限り課金されちゃうだろうし、どうしたものか! Amazon AWSのフォーラムで聞いてみました。 どうやら、インス...
package.json.jit.supackage.json { "name": "http-server", "preferGlobal": "true", "version": "0.3.0", "author": "Nodejitsu <support@nodejitsu.com>", "description": "a simple zero-configuration command-line http server", ...
ニコニコ超デザイン-Metro考察編-ニコニコ超デザイン-Metro考察編- — Presentation Transcript ニコニコ超デザインMetro 考察編VoQn株式会社ドワンゴ ニコニコ事業本部第三企画開発部 研究開発セクション はじめに前回までのあらすじ 2012/4/6〜~4/24 ニコニコ超開発 http://www.slideshare.net/koizuka/ss-‐‑‒12766279 ニコニコ超デザイ...
「ニコ動」で進行するコンテンツ革命、熱狂の舞台裏 :日本経済新聞素人が作った曲を素人が歌い、素人がアレンジをして素人がプロモーションビデオを作る。レコード会社などの「大人」は一切、介在しないまま、次々と発表される「作品」に、10歳代から20代の若者が熱狂している。舞台は2725万人を抱える動画配信サイト「ニコニコ動画(ニコ動)」。大人の知らないところで進行する「コンテンツ革命」の実態とは。 ステージ上に浮かび上がるバーチャルアイドル 千葉市の幕張メッセに併設さ...
edX - HomeWatch 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 ...
Posts
Posts
-
meso committed 78d3325
Merge pull request #102 from summerwind/master
ChangeLog に v0.6.18 を追加しました -
summerwind committed 33a7ef7
v0.6.18 を追加
- View comparison for these 2 commits »
ChangeLog に v0.6.18 を追加しました1 commit with 30 additions and 1 deletion
-
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 »
-
meso committed 0c0cf53
Merge pull request #101 from koichik/master
v0.6.18 対応. -
koichik committed e3a25a7
updated v0.6.18
- View comparison for these 2 commits »
v0.6.18 対応.1 commit with 2 additions and 2 deletions
v0.6.18 対応.28 commits with 1,201 additions and 360 deletions
The wise MongoDB API
-
meso committed 52e6fdf
Merge pull request #100 from summerwind/master
ChangeLog に v0.6.16 / v0.6.17 を追加しました -
summerwind committed 52bb25c
v0.6.16/v0.6.17 を追加
- View comparison for these 2 commits »
ChangeLog に v0.6.16 / v0.6.17 を追加しました1 commit with 52 additions and 1 deletion
-
meso committed fb3befe
Merge pull request #99 from koichik/master
v0.6.17 対応. -
koichik committed 05e4a72
updated v0.6.17
- View comparison for these 2 commits »
v0.6.17 対応.1 commit with 2 additions and 2 deletions
-
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 »
v0.6.17 対応.21 commits with 1,051 additions and 340 deletions
-
meso committed 1e45dc0
merge v0.7.8
-
koichik committed 9ea61a6
updated v0.7.8
- View comparison for these 2 commits »
v0.7.8 対応.2 commits with 4 additions and 4 deletions
-
meso committed 521abf3
Merge branch 'master' into gh-pages
-
koichik committed 9ea61a6
updated v0.7.8
- View comparison for these 2 commits »
-
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 »
v0.7.8 対応.113 commits with 177,849 additions and 58,012 deletions
-
piscisaureus committed 3546383
process_wrap: avoid leaking memory when throwing due to invalid arguments
-
piscisaureus committed 55e4d54
Child process: support the `gid` and `uid` options
-
piscisaureus committed 51e66ec
Windows: turn off /Gm
Otherwise multicode compile doesn't work. - 25 more commits »
v0.6.16 対応.27 commits with 1,509 additions and 666 deletions
-
meso committed 074d86a
Merge pull request #97 from summerwind/master
ChangeLog に v0.7.8 を追加しました -
summerwind committed 6c30da1
v0.7.8 を追加
- View comparison for these 2 commits »