開発

Firefox6,7でWebSocketを使うには

Firefox6,7でのWebSocketは仕様がまだ変わる可能性があるのでWebSocketではなく、MozWebSocketと言う名前で実装されています。なので、WebSocketを使う場合は、 var ws = new WebSocket(hogehoge);を var ws = new MozWebSocket(hogehoge);と読み替えればよ…

Yahoo Map API でオリジナルLayerを作るには

Yahoo Map API で Google Maps API のカスタムオーバーレイと同じようなことをやる方法。おおまかな手順は次の通り。 Layer を派生させて drawLayer を実装する 派生させた Layer を Y.Map に addLayer する 実際に Canvas 製の Layer を Yahoo Map に載っけ…

MessagePack-RPC Java binding の Server の止め方

MessagePack-RPC Java版の Server が終了してくれないトラブルで20分ほどはまったのでメモ。Server をデフォルトコンストラクタで起こして使ってると、close() を読んで止めたつもりでもスレッドが残ってプロセスが止まってくれません。残ってるスレッドの正…

msysgit の設定ファイルについて調べてみた

msysgit の設定ファイルがどこにあって、優先度どうなってるの?と疑問になったので調べた。まず設定ファイルの在処。 は msysgit のインストールフォルダ、 はユーザフォルダ(例:C:\User\naga_sawa)、 は clone 先フォルダ。 \etc\gitconfig \.gitconfig \…

正規表現を使ったコマンドラインのパース

試験用とかデモ用とかでコマンドラインインタプリタもどきを作る場合、コマンドラインのパースがちと面倒です。 >cmd opt1 opt2 opt3 opt4 >cmd >opt1 >opt2 >opt3 >opt4 このように単純な場合はスペースで分割、でいいのですが、 >cmd opt1 opt2 "opt 3" o"…

ローカル svn リポジトリを git svn clone する

ローカルドライブ上の file:/// でアクセスしている svn リポジトリを git svn で吸い上げようとしてエラーにぶつかったこと、ありませんか? 「FS format が想定外」とか言われ、えー('A`) みたいな。 C:\work>git svn clone -s file:///c:/repos/proj Init…

git svn での switch のやりかた

最初は /trunk だった svn リポジトリが、プロジェクトが進んでいくと、「やっぱりモジュール分割した方がいいよね」ってことで //trunk みたいにリポジトリの階層構造が変わることってありますよね。そんなときに、普通に svn でやっていた場合は > svn swi…

Eclipse のエディタの色設定などを別ワークスペースに共有するには

Eclipse はワークスペース毎にエディタの色設定やフォント設定を持っているのでワークスペースごとに独立した設定ができます。 が、逆に言うとワークスペース毎に設定をしなければいけないということで、プロジェクト毎に複数のワークスペースを使っているよ…

Servlet の doXXX が呼ばれるタイミング on Jetty6

Jetty6 において、Servlet の doXXXX 系ハンドラメソッドがHTTPリクエストのどのタイミングで呼ばれるのかをちょっと調べてみた。結果:HTTP リクエストヘッダが全て届いた時点でハンドラメソッドが呼びだされる。リクエストのボディは未着なことがある。要…

git でメールアドレスやら名前やらを間違えて commit してしまったときの修正方法

ネット上で複数のアカウントやら人格やらを使い分けてる git 使いの方必見。 git でメールアドレスやら名前やらを間違えて commit してしまったときの修正のやり方。 きげんよく開発&コミットをしてきてふとコミットログを確認すると、 D:\ToaruGitNoReposi…

Java で Thrift を使ってみて

Java で Thrift を試してみて得た know-how(あくまで独自研究なので注意) マルチスレッドと Thrift IDL から起こした Thrift.Client クラスはインスタンスのスレッド間で共有できない。 より正確に言うと、Thrift.Client 1つが1コネクションに対応してい…

msysgit でファイルを変更していないはずなのに merge できない場合の対処

msysgit を使っていて、管理下のファイルを何も変更していないはずなのに merge や pull するときに、「変更されている」とエラーになる場合。そして reset --hard をしてもそのエラーが消せない場合。 この場合、ファイル本体に変更はなくても msys から見…

SQLiteで外部キー制約を使えるようにする

いまさらですが、SQLiteの3.6.19から外部キーが使えるようになったそうです。 ただ、互換性の都合でデフォルトでは外部キー制約は無効になっているので、DBにつなぐ度に PRAGMA foreign_keys = ON; を実行してやる必要があります。 (将来的にデフォルトで有…

エラー: a is null → クロスドメイン参照をやらかしてないかを疑う。

こんな感じで HTML + google hosted jQuery で開発してたときにであったミス。 <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> Firefox のエラーコンソールには エラー: a is null ソースファイル…

git svn clone でfile::///なリポジトリからのcloneに失敗したらsvn://を試してみよう

git svn で svn リポジトリを clone しようとしたら↓みたいなエラーになった。日本語資料が見あたらなかったので、やった回避策のメモ。 C:\GitRepos>git svn clone --prefix svn/ file:///C:/SVNRepos/hoge hoge.git Initialized empty Git repository in C…

C# のジェネリクスの型パラメータを参照型に制約する

C# のジェネリクスの型パラメータを参照型に制約する方法 答え→ where T : class 以下言い訳。 キャッシュなクラスを書いててハマった。むしろMSDNの日本語訳に釣られたヽ(`д´)ノC# のジェネリクスの型パラメータの制約一覧は↓のページに公式としてまとま…

HTTP 100-continue

HTTP 100-continue とは POST 時にサーバがデータを受け入れ可能か確認するための一時応答。 クライアント→サーバに送る HTTP リクエストヘッダ に Except: 100-continue が含まれていて、なおかつサーバが対応していれば使用可能。 その場合、クライアント…

Thrift で null を返すには?

Thrift では C++との相互運用の都合で RPC の応答に null を返すことができない模様。(呼ばれた側で return null; ができない)*1厳密には return null; できるわけですが、その場合クライアント側で TApplicationException: getFoo failed: unknown result a…

Java で Thrift ってみる on Windows その2

その1で環境が整ったので実際に RPC コードを作ってみる。 IDL ファイルの作成 RPC のメソッド定義にあたる IDL ファイルを作る。 お試しと言うことで単純な物を。 見ての通り String hello(String arg); 相当 Hello.thrift service Hello { string hello(1…

Java で Thrift ってみる on Windows その1

Java で使える高速な RPC ミドルを探して Thrift を試してみたのでメモ いるもの Apache Thrift これがなけりゃはじまらない Thriftコンパイラのバイナリパッケージ Thrift IDL から言語毎のコード生成するのに必要。Linuxだと簡単にビルドできるけど、Windo…

C#でTwitterAPI 叩こうとしてOAuthのURLエンコードではまった

C#(≒ .NET Framework)でTwitterAPI叩こうとしてOAuthが401エラー返してくれて困ってたのでメモっておく。 こちらにあるTwitterのOAuthを叩くコードを使おうとしたところまではよしとして、URLエンコードを自前でやっていたので何も考えずに Framework の Sys…

Git リポジトリを WebDAV で扱う

Git に挑戦して悪戦苦闘の末に WebDAV 経由で使えるようになったのでメモっとく。メインリポジトリを置くサーバは CentOS 5.4 に git-1.5.2.1-1.el5.rf クライアントは Win7 + msysGit git version 1.6.5.1.1367.gcd48 Apache の WebDAV 設定 /var/www/gitre…

Visual Studio 2008 ファイル保存が異様に遅い問題

いまさらながら Visual Studio 2008 を使ってみたら、CTRL+S でのファイル保存が異様に重い。 たかだか 10 行かそこらのソースファイルなのに CTRL+S を押してから保存し終わるまで体感 10 秒ぐらい待たされる。 ちょっと書いては CTRL+S が癖になっているの…

Windows7 のタスクバーをなんとかして裏側に回したい

Windows7 になって、タスクバーがいろいろと強化されたのはいいけれど、常に最前面に表示されるようになってしまって画面が狭くなってしまった。XPでいうところの「常に手前に表示」を解除できない状態。 「タスクバーを自動的に隠す」を使うとカーソルが画…

日本語ファイル名を含んだzipファイルの展開

アーカイブ内に日本語ファイル名なファイルを含むzipファイルをJavaで解凍・展開するには。 コード自体は「java zip 展開」あたりでググればすぐ出てくる。やまろうのJavaなわけ/Vol.42 JavaでZIP解凍。日本語ファイル名対応 http://yamarou.at.infoseek.co.…

ShiftJISからUTF8に変換するバッチファイル

nkf を適当に拾ってきて下のバッチファイルを実行。 for %%i in (*.java) do ( nkf -Sw --cp932 %%i > %%i.utf8 del %%i ren %%i.utf8 %%i )「だれやSJISでソース書いたの!」ってことでさくっと作った。 特に目新しい物はない。

axis メモ

Axis 1.2.1 + Tomcat 5.5.25 + JDK 1.5.14 でトラブったメモ。 webapp/axis/lib を common/lib に置いたときはwebapp/axis/lib をクリアしとかないと競合して痛い目に合う。 モジュールを common/lib に置くときは simplelog.properties は common/classes …

Java で Zipf 分布な乱数を生成

Zipf 分布な乱数を作るジェネレータを作ってみた。車輪の再発明なのは重々承知。 たぶんもっとマシなライブラリがどこかにあるだろうけど、頭使わずに使えそうな単機能なのがググってもサクッとでないので作ってみた。てきとーに作ったので精度は不明。使う…

Map 内の要素からランダム抽出するには?

Map が持ってる要素の中からランダムに 1 要素を取り出すには keySet を Array に変換して、その中からランダムに選択するしかないのかな? String[] keys = map.keySet().toArray(new String[map.size()]); String value = map.get(keys[rnd.nextInt(keys.l…

Java BouncyCastle と PHP mcrypt のパディング処理の違い

OpenPNE の DB を Java から叩こうとしたときにはまったメモ。先に結論を書くと、 PHP mcrypt の zero padding は元データが8の倍数長の場合は padding しない。 Java BouncyCastle の zero padding は元データが8の倍数長でも padding ( 8 バイトの 0x00 を…