hakobera's blog

技術メモ。たまに雑談

Titanium で ImageView の Cache をアプリ起動時に削除する方法

Titanium 1.8 では ImageView に表示したリモートの画像は自動的に Cache されて、オフラインでも閲覧できて、とても便利なのですが、致命的な欠点があります。 永遠に削除されない キャッシュをクリアするメソッドが提供されていない もしかしたらバグで今…

Node.js と Titanium で SlideShare リモコンを作ってみた

2012/1/11 に開催した 「Node塾 講義その5 Node.js × Titanium」の発表用に SlideConcert というアプリを作って、実際にそれを利用して発表してきました。個人的にLTをする時に便利だなと思うを機能を実装してみました。 スライド発表時は結構歩きまわるたち…

Play framework の writeChunk で UTF-8 以外の文字列を送信するとレスポンスが止まってしまう問題の回避策

2012/7/9 追記 この問題は Playframework 1.2.5 で修正されました。以下は 1.2.4 以下を使う場合にのみ適用して下さい。最近、仕事で Play framework を本格的に使い始めて、結構惚れ込んでおります。 で、既存のアプリをどんどん Play で書きなおしているん…

2012年の目標

みなさま、あけましておめでとうございます。 忘れないうちに、今年の目標を書いておきたいと思います。 Node.js でサービスを作る 個人でも仕事でも良いのですが、仕事として実現できる方向で頑張っていきたいと思います。 Node塾 を一年間継続して開催する…

2011 年の振り返り

今年は自分にとって色々と転換点だったので、2011年を振り返ってみて、やったこと、思ったことなどをメモとして書いておこうと思います。 MacBook Air 今までメインで使っていた Thinkpad X61 の HDD が壊れたために、Apple Store の初売りセールで MacBook …

mocha と Jenkins で Node.js の CI 環境を構築する

最近、mocha をつかってテストを書くのが楽しくなってきました。でも、テストの数が増えてくるとローカルでの実行だけでなく、CI 環境が欲しくなりますよね。github にあげられるようなプロジェクトだったら、Travis CI も良いですが、実際に仕事で使うとな…

東京Node学園3時限目でLTしてきました

12/14 に開催された東京Node学園3時限目で 「Node v0.6 on Heroku」という LT をしてきました。スライドは以下においてあります。Node v0.6 on Heroku内容としては、Buildpack という仕組みを利用して、Node.js v0.6.5 を Heroku でも使えるようにするための…

Node Version Manager for Windows を作ってみた

これは JavaScript Advent Calendar 2011 (Node.js/WebSocketsコース) の1日目の記事です。 nvmw (Node Version Manager for Windows) とは Mac OS や Linux など Unix 系の OS で利用できる nvm (Node Version Manager) の Windows 版とするべく私 @hakobe…

Connect ソースコードリーディング(6) - 組込み middleware 紹介

第6回目は、標準でバンドルされている組込み middleware の一挙に紹介します。API の詳細は公式サイトやソースコードを参照してもらうとして、ここでは概要レベルの詳細にします。昨日紹介した TJ の記事に基づいて、フィルタとプロバイダの2つに分類して…

Connect ソースコードリーディング(5) - 小ネタをちょこちょこ

あまり時間が取れなかったので、第5回は小ネタをちょこちょこと。 HTTPServer の prototype チェーン(継承関係) net.Server |- http.Server |- connect.HTTPServer - [mix-in] -> connect.HTTPSServer なので、net.Server や http.Server のメソッドが普通…

Connect ソースコードリーディング(4) - bodyParser

bodyParser middleware 第4回目は Connect の組込み middleware である bodyParser を読んでいきたいと思います。 Node の http.ServerRequest は Java の HttpServletRequest などよりもかなりローレベルです。特に POST データはそのまま送信されてくるだ…

Connect ソースコードリーディング(3) - middleware の作成方法

前置き 今回は、前回までのソースコードリーディングで得た知識を利用して、実際に Connect の middleware を作成してみます。ソースは以下においてあります。 hakobera/connect-middleware-sample · GitHub 作成するもの GET リクエストにのみ対応した Expr…

Connect ソースコードリーディング(2) - 基本処理フロー

はじめに 今回は、以下の Connect を使ったコードが内部的にどのように初期化され、リクエストの処理がどのように行われていくのかを解説します。 var connect = require('connect'); var server = connect.createServer( connect.logger(), connect.static(…

Connect ソースコードリーディング(1) - ソースコードの依存関係

前置き Node.js で一番よく使われている Webフレームワークといえば、Express です。で、その Express が大きく依存しているのが Connect です。Express を制するにはまずは Connect から、というわけで、Connect のソースコードを読み始めました。 対象とす…

Heroku のローカル開発環境で環境変数を簡単に指定する方法

Heroku で開発していると、APIやセッションの秘密鍵などを環境変数に格納することになります。例えば、以下のようなコードです。 new MemorySession({ key: process.env.SESSION_KEY });Heroku でこれを使うには以下の設定をします。 $ heroku config:add SE…

JavaScript で for/while 文を使わないで1から10までの合計を求める方法

Node.js 初心者に非同期(ネットワーク)、コールバック、ECMAScript5 について理解してもらうのにいいネタはないか考えてみた。その結果、「for 文を使わないで1から10までの合計を求める」プログラムを書いてもらうのはいいんじゃないか、と思ったので、思…

Node.js の Cluster のベンチマークをとってみた

Node.js v0.6 から新規標準モジュールとして導入された Cluster のベンチマークを取ってみました。 測定環境 Server CPU: AMD PhenomII X6 1090T (6コア) MEM: DDR3 16GB (4GB*4) Client MacBook Pro 15 (Early 2011) CPU: Intel Core i7 2.0GHz (4コア) MEM…

Node.js v0.6 で npm がインストール出来なくっている件の暫定対応

本日 Node.js v0.6 が予告より通りリリースされました!ただし、表題の通り、パッケージマネージャである npm が 2011/11/5 21:00 現在、インストールできません。 2011/11/6に npm v1.0.104 でこの問題は修正されました。 fails with node-v0.6.0 · Issue #…

Heroku 上の Express で Basic 認証をかける

テスト環境などで公開したくない場合に、Basic 認証をかけたいことがあると思うが、Exress でそれをやる方法。基本的に Express は Connect ラッパーなので、やり方は Connect と同じ。 Connect - basicAuth 注意したいのは app.use(app.router) の前に書か…

Node.js on Heroku で Redis をキャッシュサーバとして使うためのモジュールを書いた

ソース Heroku 上の Redis をキャッシュとして使うためのモジュール — Gistset, get, remove, clear の4メソッドのみ。set には有効期限 (TTL) が設定できる。それだけしかできない。 書いた理由 memcached が使えなかったから。Heroku には memcached Add-o…

Node の simpledb モジュールで Amazon SimpleDB の接続先を Tokyo Region にする方法

Node の Amazon SimpleDB クライアントに simpledb モジュールがあるが、これのデフォルトの接続先は US East Region だ。これを Tokyo Region に変えるには、インスタンス生成時に host オプションで指定すれば良い。 var SimpleDB = require('simpledb').S…

http-proxy でTwitter 認証をローカル環境でのテストをちょっと便利にする方法

Node でWebアプリでTwitter 認証をローカルでテストする時に一番問題になるのは Callback URL にポート番号 "localhost" (8/1 コメントより "127.0.0.1" なら指定できる。) が指定できないことだと思う。回避策としては、hosts を書き換えて、ポート80 でサ…

Heroku で Redis に Session を - Heroku で動く Node アプリを作る 弐

ソースはこちら hakobera / one-paper — Bitbucket 基本手順 connect-redis モジュールへの依存関係を package.json に追加 Redis To Go Add-on の追加 Express でセッションを Redis に格納するようにソースを変更 Heroku を production モードで動作する設…

Heroku で動く Node アプリを作る 壱

経緯 Node.js Knockout にエントリーした。 Node.js Knockout で使えるサーバは Joyent か Heroku そういえば Heroku で動く Node アプリ作ったことない 練習のためになんか作るか 長くなったので2回に分けて書くことにします。 今回は開発環境の構築と Expr…

もし node v0.4.9 (64bit版) が Crankshaft を有効にしたら

Node v0.5.1 がリリースされて、64bit 版でも Crankshaft が有効になって、V8 Benchmark Suite を移植したりして、色々ベンチをとっていたら、「Crankshaft はえぇーーーーーーーー!」という結果になった。hakobera/node-v8-benchmark-suite · GitHubで、各…

node v0.5.1 を nvm でインストールする方法(今すぐに入れたい人向け)

現在は、nvm も対応済みなので、この記事の内容は気にしないでください。以下、内容が古い記事。 node v0.5.1 では Windows 対応でソースの配置が変わったために、nvm でインストールできなくなっている(2010/7/17現在) 。こんなものはすぐに(多分、1−3日…

Node を開発用の HTTP サーバとして使うワンライナー

Node は簡単に HTTP サーバが立ち上げられるので、Express などでちゃんとしたアプリを組む以外にも、ちょっとした HTML + JS のサンプルコードを書くときに、簡易HTTPサーバとして使っています。connect を事前にインストールしておく必要がありますが、ワ…

プログラミング言語? ほむほむっ.js

偉大なる元ネタ プログラミング言語「ほむほむ」 - ( ꒪⌓꒪) ゆるよろ日記終電逃して暇だったので、JavaScript でも書けるんじゃないかと思って書いてみたら、できたので公開しておきます。プログラミング言語?「ほむほむっ」 - jsdo.it - Share JavaScript…

JavaScriptゲーム製作勉強会を開催しました(舞台裏の話)

先週 5/15(日) 大森の Nifty さんの会議室を使って、JavaScript ゲーム製作勉強会を開催しました。勉強会に参加した場合なら、ここから内容について書くのですが、今回は主催者だったので、イベントを主催する時に工夫した点、苦労した点などについてまとめ…

Clound Foundry の Node で 動く Data URL Proxy Server を書いた

以前、GAE/J で同様のものを書いて利用していたのですが、大した処理じゃないのにスピンアップの時間が1〜2秒かかって初回レスポンスが遅いので、Cloud Foundry で動かせるように Node 版に書き換えてみました。Express 使うほどの処理ではないのですが、…