東京node学園祭2013行ってきました
東京node学園祭2013行ってきました
■基調講演
印象に残ったのは
・strongloopのように優秀なモジュールを組み合わせた環境を用意したりするのもkernelとdebianみたいな関係でnodeコミュニティとしては問題ないと。
・小さなコアを維持する
・モジュール機構は完成している
・stream2は後方互換性を維持
・node.jsは後方互換性を重視する
特に後方互換性を重視する姿勢はプロダクションレベルのソフトをつくる基準にたっしているとおもう。
■Grunt, yeoman, bower
YOおじさんがテンプレートから自動生成して開発を助けてくれますよという話で
generator-generatorつかえば自動生成機能も簡単に作れますよという感じでした
gruntやbowerはそこそこ使われてるけどyeomanはまだあまり使われてないみたい。
自分はyeoman使ってないけれどrailsみたいなイメージでした
■JSXネタ
前半は@kazuhoさんの話でした
DeNAでたくさん使われているかといえばそうではなくて新規プロジェクトで条件が合えば使うみたいな感じでした。
後半は@wasabizさんの話でした
コンパイラを担当されているようで今後C#のasync-waitの構文をいれてみるとかそういう話をしてました
JSの問題点である、オブジェクト指向言語、最適化、コールバック地獄の解決をやっているようで
JSX使ったゲームフレームワークとかも公開してくれると使いやすいかもなぁとおもったりしたのですがその辺どうなんだろうなぁ
普及するかしないかはフレームワークがあるかどうかにかかってるとおもうし。
(ノウハウは金になるから公開しないだろうなぁとおもいつつ。)
アフィン変換で行列をあつかっているスライドがあったけど、JSで行列の速度まともにでるならつかってみたいかなと。
この辺、自分で実装してテストしたのだけど普通に実装するとメソッド呼び出しでかなり時間が取られることがわかってるのでインライン展開使いたいなぁ。。。
■ES6で変わるNode.jsプログラミング
プリミティブな型の整理が言語として行われているという話でした
・generatorとpromise
・クラス
・イミュータブルな値
・変数スコープのブロック化
・引数や配列など基本的なところ
JSの構文がついに整理された感じです
■ロボットの外部脳としてのnode.js
Bluetoothによるシリアル通信でセンサーからのデータをうけとりnode.jsで制御するという話だった。
・組み込みは通常コンパイルしてROM焼き込みという手順をするのだがjavascriptでは手直しして再起動という手順ができるので楽。
・フィジカルとネットワーク(スマートフォンなど)のつなぎ込みはお金の匂いがします。
(実際センサーからのデータ使ってzabbixやfluentdと組み合わせたりスマートフォンでモニタリングしたりいろいろできそう)
■総括
nodeはフレームワークとか使い道とか多様性(WEBに限らない)が出てきていて
一つのプラットフォームになりつつあるなぁという感じです
■以下資料
録画
http://www.youtube.com/playlist?list=PLuLCOB9HcrT0ZeWiyddLVNR93QdGmtW57
基調講演
Grunt, yeoman, bower
https://speakerdeck.com/yosuke_furukawa/yeoman-grunt-bower
Rendr入門
http://www.slideshare.net/mshk/rendr
JSXネタ
http://www.slideshare.net/kazuho/jsx-oct-26-2013
http://www.slideshare.net/yuichinishiwaki/jsx-generatorimpl
Node.jsを選ぶとき,選ばないとき
http://www.slideshare.net/tricknotes/nodejs-27589695
WebRTCを始めよう
http://www.slideshare.net/mganeko/2013-web-rtcnode
#台風の開催ポリシーがしっかりしてたのでとても良いと思いました
運営サンGJ
懇親会のピザパーティもアドリブだったのによかったです
VMWARE ESXi 5.5 その1
VMWARE ESXi 5.5 が公開されていたので試してみた。
構成は前の記事参照のこと
とりあえず確認することは5.0、5.1ではパッチが当たるたびに使えたり使えなくなったり迷走していたUSB3のPCIパススルー関連から。
結論から言うとまったく問題なくなっていた。
再起動するとUSBだけPCIパススルーのチェックが外れる不具合もなおってる。
GPUのパススルーもすこし試したぶんには特に問題はない。
vSphere Clientのインストール時にwindows xpだとインストール時に警告画面が出た。
(XPでは接続できないかもしれない。)
特に問題なく使えるが、vSphere Clientを使っている限り新機能がまったく使えない。
新機能を使うにはweb clientをインストールしなければならないがvCenterの機能のため無料のライセンスで使えるのか試したことがないのでよくわからない。
ネットワークカードでintel82579lmのドライバはまだ同梱されていなかった
他についてはまた次回へ。
#追記
フリーのライセンスで登録した情報
メモリ制限がなくなっている
#追記2
蟹チップの入ったマシンにインストールしようとしたら認識されなくなっている模様
http://www.tinkertry.com/install-esxi-5-5-with-realtek-8111-or-8168-nic/
GPUとUSB3のPCIパススルーができるESXiのバージョンはどれ?
簡単になったGPUパススルー
富士通のFMVじゃなくてprimergy tx100 s3pという安鯖をいまさら買ってみた。
メモリはなんか3月に比べて倍近くになってるようで円安に加えかなり供給を絞ってるから急な値上がりになってる模様。
買う時期が悪いように見えるがそれでも安いと思える安鯖。
primergy tx100 s3p:ヤフオクで6000円(送料込み)
Xeon e3-1230v2(4core8thread):アマゾンで23500円
ECC DDR3 8GB*2=16GB:アマゾンで18500円
pci1:radeon 6570ファンレス
pci2:usb3
pci3:空き
pci4:pt3
OS:VMWARE ESXi5.1
ちなみにヤフオクだと4core*2のハイパースレッド16コア機がたまに3万で出てる。
この安鯖構成のなにがいいかというとGPUパススルー(VGAパススルー)がとても簡単であること。
ハイパーバイザー用のグラボをささなくてもよいことがあげられる。(オンボードがある)
ESXi使いにはやさしいNICが2つあること。
NIC二枚あるといろんなネットワークの実験がやりやすい。
そしてAMD機についてたハードディスク付け替えただけで再インストール無しで環境移行がすんだこと。(esxiすら再インストールいらず)
当然esxi上で動いてたVMもそのまま動く。
簡単すぎて泣けてくる。
GPUパススルーのなにが大変だったかというと
以前の環境ではパススルーしてもドライバ入れたりするとBSOD
パススルーできたと思ってもGPU使う処理(dxvaなど)すると画面が乱れたり崩れたり。
kvmとかだとkernelに渡すbootパラメータ調整とかすれば直ったりしたけど
esxiでは対処の仕様がなかった。
USBのパススルーにまだ少し問題があるとはいえその辺乗りこえれば普通に使えるレベルに達したのがよい
#部材選定に当たって以下のWIKIがとても参考になりました
http://wiki.nothing.sh/page/%C9%D9%BB%CE%C4%CC%20PRIMERGY%20TX100%20S3p
#GPUパススルー上で問題なく使えたアプリ
League of Legends
MPC-HC(dxva)
#アイドル時の消費電力
120w が 50wへ。(グラボささなければもう少し減る)
#サウンド
以前はUSBサウンドを使用してたけど今はhdmiからspdifをとってる。USBと違って音飛びしない
http://item.rakuten.co.jp/donya/84480/
#ESXiの個人的なTIPS集
https://gist.github.com/you21979/6098759
Intel CPU Xeon quad core 3.3GHz 8MBキャッシュ LGA1155 BX80637E31230V2 【BOX】
- 出版社/メーカー: インテル
- 発売日: 2012/08/29
- メディア: Personal Computers
- この商品を含むブログを見る
- 出版社/メーカー: サンマックス・テクノロジーズ
- メディア: エレクトロニクス
- この商品を含むブログを見る
富士通 PRIMERGY TX100 S3 OSレスタイプ PYT10PZD2X
- 出版社/メーカー: 富士通
- メディア: エレクトロニクス
- この商品を含むブログを見る
node.jsで簡単にircへメッセージ送信
https://github.com/you21979/bot-irc-notifier
サーバーからircにサーバー落ちたよとエラーメッセージを通知をするシステムが欲しかったので作ってみた。
ただ作るだけじゃおもしろくないのでtypescriptで作ってみたけど単純な仕組みなので
あまり型の恩恵ない。
さて、実装方法だがredisを使っている
なんで使っているかというと
・redisはコマンドラインから簡単にメッセージを流せる
・redisとircはどちらもチャンネルと言う概念がある
・npmにライブラリがある
チャンネルという共通点を生かしてredisのチャンネルにポストすればirc上の同じチャンネルにポストするようにすればチャンネルも送信時に選べるしお手軽。
(irc側は事前にチャンネルに入っておく必要があるけども)
こういうシステムとシステムを繋げるのにnodeはお手軽にできるからいいね
↓みたいなシェルでircにポストできる
#!/bin/bash CHANNEL="#hogehoge" MESSAGE="テストです" redis-cli publish $CHANNEL $MESSAGE
スキルシート
プログラマの求人みていて思うのだがなぜ言語を最重要視するのだろうといつも思ってた。
言語はたしかに大事だがそれは道具の使い方の話だろうし武器にたとえるならいろいろな流派もあるはずだ。
武人にもしスキルシートがあればこんな感じだろうし
・流派
柳生新陰流(日本刀)
宝蔵院流槍術(十文字槍)
・奥義
無刀取り
活人剣
居合
・型(稽古、基本戦術)
燕飛
三学圓之太刀
奧之太刀
槍しごき
プログラマもこんな感じでいいんじゃね?と思ってしまう。
・流派
・奥義
メタプログラミング
・型(稽古、基本戦術)
オブジェクト指向プログラミング
求人募集をみても流派の募集しかしてないところが多い。
みんな流派(環境)を重視してるのだろうか
システム開発とは流派ありきなんだろうか
戦で兵を募るときは流派で募集かけたりするものだろうか
#厨二病っぽい
re:Ryan Dahl の面接試験:csv データのオブジェクト配列への変換
中島聡さんのブログにある頭の体操をやってみた
所要時間15分くらい
http://satoshi.blogs.com/life/2012/12/ryan-dahl.html
>JavaScript は Node.js の最新バージョンに使われているものを前提としてください(←ヒント)。
とあるがもっと簡単にできるのかな?とりあえず何も考えずに書いてみた。
var http = require('http'); function get(callback){ var opt = { host: 'ichart.finance.yahoo.com', port: 80, path: '/table.csv?s=AAPL&a=11&b=1&c=2007&d=12&e=1&f=2012&g=m&ignore=.csv', method: 'GET', agent: new http.Agent({maxSockets: 1}) }; var req = http.request(opt, function(res) { var data = ''; res.on('data', function(chunk) { data += chunk; }); res.on('end', function() { callback(parsecsv(data)); }); }); req.end(); } function parsecsv(data){ var begin = 1; var count = 0; var header = [ ]; var table = [ ]; data.toString().split('\n').forEach(function(line){ if(line !== ''){ var n = 0; var obj = {}; line.split(',').forEach(function(col){ if(count >= begin){ if(n === 0){ obj[header[n]] = col; }else{ obj[header[n]] = parseFloat(col); } table.push(obj); }else{ header.push(col); } ++n; }); } ++count; }); return table; } get(function(table){ // 最終結果表示 console.log(table); });