you21979の日記

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

2012-01-01から1年間の記事一覧

スキルシート

プログラマの求人みていて思うのだがなぜ言語を最重要視するのだろうといつも思ってた。 言語はたしかに大事だがそれは道具の使い方の話だろうし武器にたとえるならいろいろな流派もあるはずだ。 武人にもしスキルシートがあればこんな感じだろうし ・流派 …

re:Ryan Dahl の面接試験:csv データのオブジェクト配列への変換

中島聡さんのブログにある頭の体操をやってみた 所要時間15分くらい http://satoshi.blogs.com/life/2012/12/ryan-dahl.html >JavaScript は Node.js の最新バージョンに使われているものを前提としてください(←ヒント)。 とあるがもっと簡単にできるの…

ストリーム型通信でプログラマが知らなければいけないこと

基本は3つしかない。 これはバイナリだろうがテキストだろうが同じ。 ・バッファリング 一回の受信ではデータが揃わないのでデータが解読できるまで貯めておくこと。 ・ディスパッチ データを解読してイベント処理を発行すること。 ・イベント イベント処理…

nodejsで実行時にスクリプトファイルを読み込んで実行する

C++などでluaを使ってよくやるスクリプトシステムと同等の仕組みを意味があるか別としてやってみた。 new Functionを使うと簡単かつJITが効く速いコードができる。 逆にこういう用途に使うであろうvmモジュールはくっそ遅い上にunstableなので使いにくい var…

東京node学園祭2012参加してきました

東京node学園祭2012参加してきました イントロダクション 基調講演New Readable Stream in Node 0.10 Nodeコアの歩き方~Nodeの開発に参加しよう~ Running Node.js in Production layering distributed systems ECMAScript tools - composable modules and …

node.jsのベンチマークいろいろ

githubにリポジトリ作った https://github.com/you21979/nodejsbenchmark ・new Function new Functionで動的にコード作るのたしかに早い。 evalはJIT効かないけどnew Functionは効いてる requireが使えないけど。 ・mysql + ayncblock mysqlでasyncblock使…

freenas8.3

freenas8.3が気づけば出てたのでついでにVMWARE-ESXiの仮想化ドライバも入れた mount -o rw / mount -t cd9660 /dev/cd0 /media cd /tmp tar zxvf /media/vmware-freebsd-tools.tar.gz cd vmware-tools-distrib cp lib/modules/binary/FreeBSD8.1-amd64/*.ko…

最適化2

前回の最適化で気になったので調べてみた http://you21979.hateblo.jp/entry/2012/10/19/143845 nodejsでswitch ~ case遅いとあったけど実際に試してみて5000超えたあたりから許容できないかもしれない 20000のenumを作ってcaseしまくってるのだが https://…

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…