2014
11/20
10:52

ErgoDoxへの道 その1 キット購入編Latest!

[キーボード][ErgoDox]

アメリカの共同購入サイトMassdropでErgoDoxのキット販売が再開されましたね。 https://www.massdrop.com/buy/ergodox 前回はお値段に怯んで買い逃しましたが、今回は心の準備をしていたのでちゃんと申し込み出来ました。 199ドルとなっていますが、キーキャップと送料を入れると約260ドル、日本円にして3万円ほど。 オプションで天板を追加したり、ケースをでかいのにしたり、CherryMX緑軸にしたりするとさらにお値段が上がります。 3万円も出して完成品のキーボードが手に入らないなんて罰ゲームもいいところですが、大量生産でなくなったとたん値段が跳ね上がるのは仕方がないのでここはグッと堪えます。

... [この記事を開く]
2012
05/05
18:23

2012年のスクレイピング

[node.js][スクレイピング][jsdom][cheerio]

node scraping とかでググると request + jsdom の例がたくさん出てきますが、 そのとおりにやるとjsdomのメモリリークで大変なことになります。 StackOverflowでも話題になってました。 http://stackoverflow.com/questions/5718391/memory-leak-in-node-js-scraper 上記ページでは回避策が2つ挙がってます。 1. ページパース後に毎回window.close()を呼ぶ 2. jsdomをやめてcheerioにする

... [この記事を開く]
2012
05/02
12:46

express3でswigを使う

[express3][swig]

やってみたのでメモとして。

... [この記事を開く]
2012
04/29
16:48

大阪node学園三時限目を開催しました

[イベント][大阪node学園]

昨日は大阪node学園三時限目でした。 皆さんどうもありがとうございました。 チャットサンプルを動かしてSocket.IOの基礎を掴んだあと、 チャンネルを使ったメッセージ送信をやろうとしたのですが 進行が上手く行かず、待ちが長時間発生してしまい申し訳なかったです。 次回以降の教訓にしたいと思います。 勉強会自体は運営体制が充実してきたので、 今後は役割分担を進めてより持続的なものになるようにしていきたいと思っています。 次回は一度座学をやって、そのあとインストールからやるハンズオンをやれたらいいなと思っています。

... [この記事を開く]
2012
04/27
09:04

Socket.IOのログレベルを変更する

[Socket.IO]

デフォルトではデバッグメッセージがズラズラ出るようになっているのでうっとおしいです。 サーバ側でログレベルを変更できます。 ``` io = io.listen(http, {'log level': 1}) ``` デフォルトでは3になっています。 lib/logger.jsを見ると * 0 error * 1 warn * 2 info * 3 debug ということのようです。 実運用環境では1あたりがよいんではないでしょうか。

... [この記事を開く]
2012
04/26
11:46

nginx + Socket.IOでつながらないときはポート番号を指定してみる

[Socket.IO][nginx]

nginxをnginx_tcp_proxy_moduleのパッチを当ててコンパイルしていることを前提として、 (参考:http://memo.yomukaku.net/entries/342) クライアント側でポート番号を指定してやれば良いです。

... [この記事を開く]
2012
04/25
05:01

express3とSocket.IO

[express][express3][Socket.IO]

express3だとSocket.IOのページにあるexpressとの連携の例はブラウザで ``io is not defined`` というエラーが出て上手く動きません。 このエラーはサーバ側のコードを次のようにすることで回避できます。

... [この記事を開く]
2012
04/24
07:58

connect-redisでセッション管理

[express][redis][express3]

expressのセッションはデフォルトでメモリに保存されるのですが、 環境変数にNODE_ENV=productionを与えて動かすと、メモリストアは実運用向きじゃないよ、という警告がでます。 また、複数のnodeプロセスを動かしてラウンドロビンで負荷分散する場合などにもメモリに保存しているとセッションの共有ができません。 そこでセッションデータをDBに保存するようにします。 connect対応セッションストアには MongoDB対応、CouchDB対応、memcache対応、MySQL対応など複数ありますが、

... [この記事を開く]
2012
04/22
06:29

expressでURIError: URI malformedが頻発

[express][URIError][node.js][express3]

expressのログに URIError: URI malformed というエラーがでまくっていて、 何事かと思って調べてみたら原因はURLに含まれているエンコード済み文字列が壊れていることでした。 タイトルをencodeURIComponentを使ってエンコードしてURLに入れているのですが iPad用のニュースリーダのFlipboardというのが途中でこのURLをぶった切ってくれるらしく、 不正なエンコード文字がdecodeURIComponentに渡されて、URIErrorが発生していました。

... [この記事を開く]
2012
04/21
06:31

nginx + nodeの構成で502エラーページを変更する

[node.js][nginx]

メンテなどでnodeのプロセスを落としているとnginxが502 Bad Gatewayというエラーページを返してくれるのですが、 あまり親切ではないので自前のページを用意することにします。 nginx.confにエラー時のページ移動設定を追加します。

... [この記事を開く]
2012
04/18
22:23

非同期祭りを乗り切るためのsynchronize(とasyncblock)

[node.js][synchronize][asyncblock]

東京node学園5時限目のUst楽しかったです。 Twitterでつぶやいた質問が会場で採用されたりして一人で盛り上がりました。 運営の皆さん、発表者の皆さん、ありがとうございました。 この勢いを駆って一つエントリを。 node(やjQuery)でコードを書いているとコールバックが積み重なって 非同期地獄とか非同期祭りとか言われる状態になることがあります。 これを緩和するための方法は色々あって、古くはRyanがデモで紹介していた コールバックを関数オブジェクトとして外に出す方法から、

... [この記事を開く]