you21979の日記

実験ネタとか。仮想化とかnodejsで嵌った所とかおもしろかったところとかいろいろ

10万円以内で揃える amazon fire tvとその周辺で良かった組み合わせ

4k環境は機器の相性がいろいろあるみたいなので鉄板の組み合わせをまとめてみました

 

FIRETV本体

4kモニタ

リクライニングチェア

FireTVに合体させる学習リモコン

サブウーファー付きサウンドバー

光デジタル分離器

 

日本のamazon.co.jpでお買い物

 

周辺機器はアメリカのamazon.comからお買い物がオススメ送料込みでも断然comからのほうが安い

学習リモコン Sideclick-Remotes-SC2-FT16K-Universal-Attachment

スピーカー AmazonBasics-Channel-Bluetooth-Built-Subwoofer

HDMI光デジタル分離 Avantree-Extractor-Splitter-Converter-Optical

 

4kディスプレイとスピーカーはsideclickで学習させられるのでまとめてコントロール可能です

音声分離機器は相性があるのでサポートしていると明記してあるAvantreeのやつがおすすめです

 

PS.

amazonウーファー付きサウンドバーはお手軽で日本人向けなので日本でも購入できるようになるといいな。

 

以下の切替器はfiretvをいちいち再起動しないとTVが点滅して認識しないのでオススメしない

 

 

HDMI2.0、HDCP2.2対応でもうまく対応できない機器があるのでこの辺が相性がでる。

 

keianのモニタはモニタアームで癖があるのでアームに取り付けるなら以下のものをチョイス

 

fire tvはプライムに入会するのがオススメ

 

nodejsをプロジェクトで適用してメンバーに使わせてみた話

node.jsを1からプロジェクトメンバーに教えてみて思ったことを書いていきます

 

チームのメンバーはC++使える新卒4人とPHPを扱う中堅3人といった構成です。

それぞれ知識のバックエンドが違うのでそれぞれ教える方法も変えました。

 

PHPプログラマ

 

JavaScriptについて

自分の認識ではPHPを使ってる人たちはJavaScript(jQuery)もある程度使えるという認識だったのですが

その考えは間違っていたようで文法から教えました。(マークアップとサーバで分業していたようです) 

文法だけみるとPHPJavaScriptは一対一で対応する関数が多いので対応表を用意しておいたのでそれほど大変ではなかったです。

クラスについてはクラスラッパを使って擬似的に対応させました。

 

PHPでは当たり前にやっていたノウハウを忘れさせる

apacheを使うところにこだわるので忘れさせる

 

■イベントドリブン 

ブラウザ側のJavaScriptや他のGUIライブラリを触ったことがあればよかったのですが

ないようなので概念から教えました。 

 

■非同期処理

非同期でのDBのトランザクションではパイプライン処理の概念を教えました。

asyncなどのフロー制御で非同期処理ごとに関数を分けることで対処するようにしました

やりかたをレールをしいてしっかり教えないとここで躓きます

 

■データをメモリに保持させる

PHPではデータを保持するときは選択肢がなくてシェアードメモリ、memcached、mysqlなど言語で扱うメモリの外に確保するしかないのですが

nodejsではデータをメモリ中に確保し続けられるのでデータにアクセスするコストが圧倒的に低いことを教えました

 

新卒のゲームプログラマー

 

JavaScriptについて

JavaScriptは触ったことがないようでしたがオブジェクト指向はかなりしっかりしてました

関数型について知識がなかったようなのでそのあたりを教えました

・クロージャ

高階関数

・ラムダ

 gcに慣れてないと普段アンマネージドなコード書いてるからか混乱する場合もありました。

 

■イベントドリブン 

ゲームプログラマはリアルタイム処理をやっているので簡単に覚えられるのではないかと思ってました。

サーバーのプログラムはゲームのプログラムに似ているところを伝えて、相違点を覚えてもらう方式で教えました。

メインループがありタスクシステムがあり、ゲームではすべての処理を16msで処理を終わらせれば良いのを

サーバーでは例えば1000人同時にアクセスさせる(一秒間に一回リクエスト)なら1ms以内に返せないとならない。

 

■非同期処理

 非同期についてはゲームでは普通に行なっているので特に教えることはなかったです(Nowローディング画面などでやってるから)

 

■データをメモリに保持させる

普通にやってるので教える必要がありませんでした

 

■その他 

ネットワークについてはIPとポートの概念をさらっと教えただけで適当に流しました。

データベースに馴染みがないのでSQLのクエリーやトランザクションについて重点的に教えました

 

教えてみた感想

 nodejsはゲームプログラマ向きだと思いました

必要なスキルがかぶってます

PHPプログラマでも時間をかければ覚えてもらえます。

 早い人は一週間くらいで使いこなせるようになるし、一番最初の導入の敷居が低いから

 自宅とかで勉強したりしやすいのだと思います。

 

node.jsとか求人出しても経験者はほとんどいないわけですし、本格的に普及させるには既存の人材に教えていくことも考えないといけない時期なのかなとおもい書いてみました。

 

 

node.jsのセキュリティ

nodeの脆弱性について

http://www.ustream.tv/recorded/40193490

 

node学園のLTでコレをみて思い出したのだけれどHTTPの脆弱性を直してもバックエンドが遅い場合

nodeの場合いくらでもリクエストを受けてしまってバックエンドのリクエストをキューにためてしまう場合に結局メモリ不足で落ちてしまう

それに対する一つの解として以前qiitaに記事を書いた↓

node.jsにリミッターを設定したい

 

一つのセッションあたりの秒間リクエスト数がキャパシティプランニングから導き出せていれば秒間あたりのリクエスト数を絞ることで回避できるかなと。

東京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

 

基調講演

https://docs.google.com/presentation/d/1IYwvHLAT0sFLAOmBGQ7dUyD7NKajwfkOgh8SAYvJa2c/preview?sle=true#slide=id.p

 

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 が公開されていたので試してみた。

 

構成は前の記事参照のこと

簡単になったGPUパススルー - you21979の日記

 

とりあえず確認することは5.0、5.1ではパッチが当たるたびに使えたり使えなくなったり迷走していたUSB3のPCIパススルー関連から。

 

結論から言うとまったく問題なくなっていた。

 

再起動するとUSBだけPCIパススルーのチェックが外れる不具合もなおってる。

GPUのパススルーもすこし試したぶんには特に問題はない。

f:id:you21979:20130925234204p:plain

 

 

vSphere Clientのインストール時にwindows xpだとインストール時に警告画面が出た。

f:id:you21979:20130925170022p:plain

(XPでは接続できないかもしれない。)

 

特に問題なく使えるが、vSphere Clientを使っている限り新機能がまったく使えない。

新機能を使うにはweb clientをインストールしなければならないがvCenterの機能のため無料のライセンスで使えるのか試したことがないのでよくわからない。

 

ネットワークカードでintel82579lmのドライバはまだ同梱されていなかった

 

他についてはまた次回へ。

 

 #追記

フリーのライセンスで登録した情報

メモリ制限がなくなっている

f:id:you21979:20130925232343p:plain

 

#追記2

蟹チップの入ったマシンにインストールしようとしたら認識されなくなっている模様

http://www.tinkertry.com/install-esxi-5-5-with-realtek-8111-or-8168-nic/

 

GPUとUSB3のPCIパススルーができるESXiのバージョンはどれ?

ちゃんとした情報がまとまってるページが見つからなかったので書いておく。
 
すぐ動かせるカスタムISOイメージ
 
VMware-ESXi-5.1.0-1021289-Fujitsu-v251-2.iso
 
自分でパッチ当てるなら以下の組み合わせ
 
VMware-VMvisor-Installer-5.1.0-799733.x86_64.iso
ESXi510-201303001.zip
 
ESXi510-201303001以前、または5.1 update1 以降はなぜかUSBをPCIパススルーできない
 
しかも毎回再起動するたびにUSBのパススルをチェックしなければならない面倒くささ(自分はあまり再起動しないのであまり気にしてない)
 
#一度直ってまた再発してるのはなにか問題があるのだとおもうが単にやる気がないのかもしれないし、意図的なものなのかもしれないしその辺はわからぬ
 
#追記
5.5でまったく問題なくなっている模様

簡単になった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

 

富士通 PRIMERGY TX100 S3 OSレスタイプ PYT10PZD2X

富士通 PRIMERGY TX100 S3 OSレスタイプ PYT10PZD2X