2月 2012
1件の投稿
終わりました
結局、だめでした。転職活動を開始して、今回やろうと思っていた同人ソーシャルゲーム開発なるものは、終了することにしました。一時期ゲーム屋をやめようと思いましたが、それすらもできないようなので、また似たような試みをすることになるかもしれませんが、ひとまず、このプロジェクトは終了させます。
12月 2011
9件の投稿
1タグ
最古層のコミュニティー
http://lists.freebsd.org/pipermail/freebsd-performance/2011-December/004368.html
FreeBSDのメーリングリストを眺めたりしているのですが、このスレッドが熱いですね。議論は今も続いています。内容としてはlinuxとベンチマークで比較されて大敗したけどどうしよう、というもの。
はたから見て、おいおいこんなに喧嘩して大丈夫かと思ったりしたのですが、
http://wiki.freebsd.org/BenchmarkAdvice
みたいに、ベンチマークの取り方についてwikiにまとめるとか、建設的な方にまとまっていって、ちょっと感動的でした。node.jsという最新のコミュニティーとは若干違った空気が感じられて、面白いです。
3タグ
redisとnode.js
対象読者
node.js/npmはインストール済み
macなどの*nixを持っている
redisはよくわからない
redisのいいところ
小さい! 持ち運びしやすい! 良い意味で何もない!
純粋KVSより少し豊かなほどよい甘み
簡素ですので、パフォーマンスなどに関して色々「狙いやすい」
あの、express作者さんもよく使ってらっしゃいますよ
僕みたいなコンシューマーゲーム難民に是非オススメしたい、組み込み系の薫りとwebっ子っぽいカジュアルな感覚が同居したシンプルDBとなっております。
redis本体
ダウンロードページから最新版(この文章を書いている時点では2.4.4)をダウンロードして、下記のように一行makeと打てば終わりです。
make
...
5タグ
例外を伝播させた理由とdomains期待age
僕は組み込みC/C++の世界からやってきましたので、例外をそれほど多用しておりませんでした。コールバックもjs程気楽に使えませんでしたので、逆にnode.jsの世界にやってきてついつい調子に乗って関数をたくさん書いておりました。しばらくして、僕は途方に暮れました。今回はそのお話とdomainsに対する期待をまとめます。domainsのそもそもの目的などを誤解しているかもしれませんが、とりあえず。
try〜catchで囲めない
僕が躓いたのは下記のような状況でして、例外をどう補足するかという問題です(一応確認となりますが、下記状況では末尾のcatchで中央部分から発生した例外を補足できません)。
try {
db.insert('foo', 'bar', function(result) {
db.find('taro-id', function(result) {
...
4タグ
ライブラリとアプリケーションの同時開発とnode-dev
140文字で収まり切らないので、ここに書きます。
node-devでテストを2つ待機させた状態にしてます。よくゲームエンジンとアプリケーションを同時開発するということをゲーム屋さんはすると思いますが、node-devの場合、依存ファイルを見て再起動するので、テスト実行が最短で済みます。
詳細
大体以下のようなディレクトリ構成。
game-engine
lib
spec
game-app
src
spec
で、
ターミナル1
cd game-engine
node-dev [お好きなTDD/BDD] spec
ターミナル2
cd game-app
node-dev [お好きなTDD/BDD] spec
...
4タグ
hat benchmark
benchmark.jsを利用し、@substack氏のhatを計測して見ました。
いきなり結果
default hat x 361,823 ops/sec ±2.35% (58 runs sampled)
hat 256 x 196,071 ops/sec ±0.51% (54 runs sampled)
Math.random x 54,525,799 ops/sec ±2.54% (50 runs sampled)
Fastest is Math.random
動作環境は
利用コード
var suite = new require('benchmark').Suite(),
hat = require('hat');
suite.add('default hat', function() {
hat()
}).add('hat 256',...
3タグ
browserifyで自分のライブラリを参照する
browserifyがブラウザ上で使う参照パスと、サーバー内で利用する参照パスは同じにしたいものです。ですが、これが、browserfiyを利用する自ライブラリ内となると循環参照みたいな話になってとても厄介です。それでも、サーバーコードなら、NODE_PATHを使えば良いのですが、browserifyはどうすれば良いのでしょう。
basedir
以前の記事でbrowserifyはresolveパッケージ(node.js標準のrequire関数ではありません)を利用していると書きましたが、そのなかを読むと、basedirを指定すれば良いことがわかります。参照側はこれでよし。でも、よく読むと、「basedir/node_modules/捜索対象」というディレクトリ構造を期待しているように思えます。
俺ライブラリ/node_modules/俺ライブラリ
...
4タグ
node-devに対する僕の誤解
僕と同じ過ちを皆さんに繰り返して欲しくないので、恥の記録を残します。
トラブル
jasmineをコード変更時に再起動して、自動テストを回したかった
元々nodemonを改造した自前のシステムを使っていたが、周りに合わせてnode-devに乗り換えることにした
再起動してくれませんでした
やりたいこととしては、こんな感じのことをブラウザではなくコンソールでやりたいわけです。
原因追跡→誤解
今日現在ここらへんにある、下記のようなコードが問題で、
server.on('exit', function (code) {
if (code == 101) {
終了コードを判定していますが、0で正常終了した場合は、node-devは関知しないみたいです。node-devというものを誤解しておりました。
...
3タグ
browserify概説
browserify(ぶらうぜりふぁい、と発音しているのを誰かから聞きました)は、その便利さに比して、利用例などが少ないため、お粗末ながら、今日までにわかったことをまとめてみようと思いました。ドキュメントが足りない状況はしばらく変わらないと思いますので、ハックヒント用に内部構造を含めて、概要を伝えられればと思います。
そもそもbrowserifyとは
御存知の通りnode.jsはブラウザでも動作するjsで記述します。ですから、サーバーとクライアントで共有できるコードは共有したいものです。ですが、それには幾つかの壁がありまして、思いつく分だけを書きますとこのぐらいになります。
モジュールシステム(CommonJS)
node.jsの組み込みモジュール
http要求を受け取って、ブラウザへコードを届ける仕組み
...
11月 2011
12件の投稿
3タグ
browserifyとbrowserbuild
今日はブラウザにjsコードを送り届けるための2つのライブラリについてです。
browserbuildとlearnboost
learnboostの人たちは出来る人達です。
彼らはとても謙虚で、browserbuildにおいてもrequireをマッチングしてたどろうなどとは思わないようです。ディレクトリをたどって、関連するファイルを纏めます。うっかりバグったり、トリッキーな場面に出くわしても、そもそも隠すべきコードをディレクトリ単位で分けているので、不用意にサーバー側のコードが配信されるという可能性は低そうです。利口な人たちが選択しそうなやり方で、憧れます。
browserifyと@substack
一方、僕がとても親近感を持つ@substack氏は
...
2タグ
ニコ動投稿テストしてみました。
1タグ
2タグ
FreeBSDで懐かしい組み込みの薫り
サーバー用OSとして、仕事ではLinuxを使っていて、友人からはSolarisを推されていますが、個人的にはFreeBSDをいじるのが楽しいです。
デフォルトでインストールされているサービスが少ないので把握しやすく、設定ファイルを変えたり、カーネルの設定を変えたりして遊んでいたのですが、今日、topコマンドが動かなくなることに気づきました(元々こうだったのでしょうか)。要するに、待機中は何もしていないので、動きが確認できないのです。プロセス数も16まで減らしたので、メモリ利用料も全く動かず、変わるのはたまにcronなどが動作するので、プロセスのCPU利用ランキングの変動による表示順のみです。
他のOSをそれほど使い倒したわけではないのですが、いやあ、こんなに簡単に削れてしまうのかと、組み込み系プログラムの懐かしい薫りを感じました。本番サーバーではこいつを使いたいなあ。
2タグ
redis MLの一コマ
今作っているシステムではDBにredisを使う予定です。コツコツ作業を進めつつ、MLの流れも追っています。
ここの議論が特徴的なのですが、作者のSalvatore Sanfilippo氏が割りと面倒見の良いイタリア人で、色々redisの一般ユーザーに教えてくれたりします。githubなんかでも利用が始まっているので、それほど小さなコミュニティーではないと思うのですが。
2タグ
2タグ
jasmine on nodeの注意点
jasmineはnode.jsで使おうとする時、ブラウザでの非同期テストのやり方が違うから注意が必要です。
node.jsの場合
it('comment for this spec', function() {
db.something(function() {
// do something
expect(actual).toBe(expected);
jasmine.asyncSpecDone();
);
jasmine.asyncSpecWait();
});
asyncSpecWait→asyncSpecDoneを見つけた時の僕の衝撃と言ったら……。
さらに即時に終わった場合の注意点
...
1タグ
だんだん
tumblrの駄目な点とこのテーマの駄目な点が見えてきた。しばらく放置だな。
3タグ
underscore.jsと仲間たち
http://documentcloud.github.com/underscore/
underscore.jsはjavascript界における関数型ユーティリティーライブラリの金字塔とも呼べるものだ。便利だ。でも、でかい。ということで、僕も乗り換えを考えたりしたし、僕以外の人たちは似たようなライブラリを作ろうとする人たちさえいた。という感じのお話をまとめます。
http://microjs.com/#functional
を見ると、underscore超えを目指した仲間たちが一覧できると思う。彼らはjs特有の下記のバランスをどう取るかにおいて様々に枝分かれするに至る、と僕は思っています。
非同期コールバック処理
サイズ→どんな機能を用意するかという問題から、そもそも、クラスなどの基本機能からサポートするかという問題まで
命名(「$」や「_」まで思い切ってしまうか)
...
2タグ
自己紹介とやりたいこと
これから色々活動をしていくにあたって自己紹介的な文章をまとめておこうと思いました。
えっと、――最近、ソーシャルゲームという新しいジャンルが登場し、世間的には盛り上がりを見せていると思われているネットワークゲーム業界ですが、やはり色々な矛盾を感じております――。動機をまとめるなら、この一文で十分かと思います。
結局、ただ圧倒的なもやもやが心に噴き出しているというありがちな話で御座いまして、それをきちんと人にわかるように整理できていたら、銀行からお金でも借りてもっと大規模に商売でも始めていると思います。ですから、客観的に見れば、僕のこれからやろうとしていることは大方失敗すると見るのが妥当ですので、逆に、これから繰り広げられるであろう僕の数々の失敗を生かして成功をおさめる方に何か一つでも残せればいいなあと、恥ずかしながら文章化を試みることとしました。
...
test2
helloworld
test
投稿テスト