you21979の日記

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

node.jsの0.8系

そろそろ使っても大丈夫そうだろうか やばそうなバグもだいぶ取れてるっぽいし(メモリリークとか) 0.6系のアップデートが12月までだしなぁ 起動管理ツールでforeverが使えないとやっぱきついなぁと思っていたのだが 最近qilinもよさそうに感じてる

最適化

↓の記事を読んで自分なりに解釈 https://github.com/felixge/faster-than-c こんなかんじで最適化してるのか。DSLでソースコードジェネレートすればこういうのもありだな。オブジェクトを初期化時に項目を設定することが最適化につながるようだ -- 最適化前 …

プログラム言語

自分はあまりプログラム言語にこだわりがなくて いろんな言語をつまみ食いするのが好きで 邪道なことばかりやってる C言語のマクロでパスカル書いたり(昔怒られた) C言語のマクロとキャスト使ってOOやったり javaにプリプロセッサ使ってマクロ適用させたり…

python

テンプレートエンジンいまだにgenshi使ってるけど djangoのほうがよいのだろうか。 外部DSLのコード生成に何使うか再検討してるので。。。 あとでコード書いて試してみよう #ぱいそんは俺俺ツールとクローラ以外作ったことないからあまりモジュール詳しくな…

リアルタイムサーバーでのリソース管理

nodejsで大量のオブジェクトを管理する方法 WEB系のPHPerの人は意外にしらないようなので普通のサーバーアプリケーションのリソース管理方法を記載してみる 下のようにシングルトンのマネージャを作成しマネージャ経由でオブジェクトを生成する 削除もマネー…

android4.1のcyanogenmod

いつの間に出てた そのうち試してみよう http://download.cyanogenmod.com/?device=maguro&type=nightly ↑のリンクはgaraxy nexus用 M1とついてるのが一応動くバージョンらしい それ以外は単なるデイリービルド

freenasのvirtioドライバ

freebsdのvirtioドライバはぐぐってみつけたのだけど http://people.freebsd.org/~kuriyama/virtio/ shellからpkg_addコマンドでインストールしても再起動すると元に戻るようだ どうにかして入れられないものだろか

関数型慣れてきた

というか オブジェクト指向言語でオブジェクト指向じゃないものが だいたい関数型パラダイムなんだなぁ C言語のマクロとかで関数合成みたいのやってたし ファイバーとかマイクロスレッドとかの継続はモナドの一種だし デザインパターンはモナドだし オブジェ…

node.js

node.js触ってて職業プログラマが仕事で触るにはまだ早いかもなぁと思ってしまう。 以下の2つを何かの言語で習得してないならnode.jsはきついと思う リアルタイムプログラミング ネットワークプログラミング オンラインゲームを支える技術を読んで理解でき…

KVMでデスクトップ仮想化でやったことリスト

UBUNTU12.04の場合 ・grub kernelパラメータの設定 IOMMUを使えるようにする /etc/default/grub GRUB_CMDLINE_LINUX="amd_iommu=on iommu=on,pt,noaperture pass-through" ・kvm /etc/modprobe.d/kvm.conf options kvm allow_unsafe_assigned_interrupts=1 …

KVMでデスクトップ仮想化

esxiのデスクトップ仮想化がうまくいかなかったのでKVMで。 (XENからの移行なのでXENとあまりやり方かわらない) CPU AMD-FX 8120 MEM16G MOTHER ASROCK990FX EXTREME4 RADEON 4350 RADEON 6570 ・あきらめ PCIデバイスのパススルーとマザボのオンボードSAT…

node.jsをサーバーとして立ち上げるときにやること1

1.daemon化 foreverを使うのがよいが0.8~しかサポートしなくなった 0.6系を使うならstart-stop-daemonを使う https://github.com/jiem/start-stop-daemon これで以下のコマンドで制御できる node --expose_gc ./daemon.js start node --expose_gc ./daemo…

夏休みの宿題

今年はesxiのデスクトップ仮想化 CPU AMD-FX 8120 MEM16G MOTHER ASROCK990FX EXTREME4 RADEON 4350 RADEON 6570 躓いたことリスト ・イーサネット broadcomのドライバがインストールcdになかったので落としてきてCD再構成 http://www.vladan.fr/esxi-custom…

node.jsの構文による速度比較

なんかブラウザの常識と違う気がする v0.8.4で測定 オブジェクト生成 var x = null; for(var i=0;i<100000000;++i){ x = new Object(); } real 0m2.619s user 0m2.573s sys 0m0.005s var x = null; for(var i=0;i<100000000;++i){ x = {}; } real 0m0.419s u…

node.jsのオブジェクト

ハッシュテーブルとして使った場合遅くて使えない・・・ 削除しなければいいのだけど削除が入ると死ぬほど遅くなる var x = {}; for(var i=0;i<1000000;++i){ x[i] = 0; if(i%10000 === 0){ console.log(i); } } for(var i=0;i<1000000;++i){ delete x[i]; i…

haskell

haskellはじめました maybeはともかくモナドが手ごわい なつやすみの宿題だなぁ

node.jsのガベコレ

よくメモリリークしてるとか言われているがどういうときに起こるか そもそもnode.jsのガベコレは他のガベコレと同じようにリアルタイムアプリケーション作る場合によくやるフレーム毎にGC処理をコールしてやる必要がある(UNITY,AS3など) これをやらないと…

node.jsでのMYSQLトランザクション処理実装例

今回の御題はasyncblock fiberで実装されたI/O処理同期化モジュール コレを使ってSQL処理に特化したnode-seqに似たようなことをやってみた 前回の記事の3番の実装例っす https://github.com/scriby/asyncblock var q = new Query(mysqlconn); q .begin() .qu…

node.jsでmysqlはつらい

mysqlのモジュールで普通に組むといろいろな問題に直面する ・1.1アクセス1コネクションだとあっというまにmysqlの接続上限に達する ・2.コネクションプールしてコネクションをユーザー間で使いまわすとトランザクションが使えなくなる ・3.クエリー…

node.jsで参考にした記事とか

はてブをさらしておく http://b.hatena.ne.jp/you21979/node.js/ http://b.hatena.ne.jp/you21979/node.js/module/

websocket + node.js + node-http-proxyで負荷分散

websocketでググルとsocket.ioばかりヒットするがブラウザの対応がまちまちなことによる一過性の技術だとおもうので使わない方針 WorlizeのwebsocketがActionScript3版のライブラリも用意しててブラウザ使わないならよさそう https://github.com/Worlize/Web…

node.jsのfiber実験

こんなことしてもいいのだろうか script.js var Fiber = require('fibers'); (function(){ var check = (function(){ var i = 0; return Fiber.prototype.run.bind(Fiber(function() { // なんかする while (true) { // 完了するまで待つ if(i>=10000){ brea…