ITコンサルの日常

ITコンサル会社に勤務する普通のITエンジニアの日常です。

Java

ext-docでSencha Touchのドキュメントを作ってみる

ext-docとは Ext JS/Sencha Touchのソースに特定の形式で書いてあるコメントから、 HTMLのドキュメントを作成するツールです。 ext-docのインストール ext-doc - Project Hosting on Google Code から最新版をダウンロードできます。 が、ここで公開されてい…

Windows Script Host Framework(wshf)見て、ラッパライブラリとはなんぞやと考えた。

前々からWSHを便利に使えたらいいよなーと思いつつ、 作ったスクリプトのコピペで大体の用は足りてたので、 共通フレームワークを作るというところまでは行ってませんでした。 が、たまたまTwitter上でWSHの話題になって、教えてもらったのが、 wshfというラ…

JavaのSwingとSencha Touchが似ているという根拠薄弱な理由。

結論 コンポーネント作って、レイアウトマネージャで配置を決めるのは、Sencha TouchもSwingも同じ。 そんだけ。 Sencha Touchの場合 三つのPanelをhboxでレイアウトする Ext.setup({ onReady : function() { new Ext.Panel({ fullscreen: true, width: 400,…

Javaでは定数が呼び出し元に埋め込まれるが、.NET(C#)はどうか?

概要 あるdll内で定義されている定数を変更した場合、 呼び出し元を再コンパイルする必要はあるか?という質問。 常識的に考えたら、dllが変わったからといって、 呼び出し元を再コンパイルする必要はないのだが、 Javaでは、定数は呼び出し元に埋め込まれる…

FetchOptions#setDeadlineは正しく動作しない@Google App Engine SDK for Java1.3.5。

フィードを読んで、フィードを吐き出すっていうのをGAE/Jでやっているときに、 フィードの読み込みで時間がかかると、タイムアウトエラーを吐き出すという事象に遭遇しました。 フィードを読むところのソースはこんな感じ。 DocumentBuilderFactory dbf = Do…

jmemcachedに多言語のmemcachedクライアントがつながるか

結論 Pythonクライアントはつながった(他は試してない) インストール http://pypi.python.org/pypi/python-memcached/ から python-memcached-1.45.tar.gz をダウンロード ソース import memcache mc = memcache.Client(['127.0.0.1:11211'], debug=0) mc.se…

jmemcachedを動かしてみる

サーバ側 □サイト jmemcached http://sourceforge.jp/projects/freshmeat_jmemcached/ □インストール http://thimbleware.com/maven/com/thimbleware/jmemcached/jmemcached-cli/0.9.1/ から jmemcached-cli-0.9.1-main.jar をダウンロード □起動 java -jar …

アナログな超かんたんデジカメ写真整理法をやるためのツール

最初は、 指定した8枚の写真にそれぞれに撮影日を入れる 指定した8枚の写真を2x4のタイル状に配置して、1枚の画像ファイルとして出力する だけで良いかと思ってました。 うちのデジカメはIXY DIGITAL 20 ISという800万画素のもので、 何も考えずに撮ると3264…

Graphics2D#drawStringせずに、文字列を描画した際の幅と高さをピクセル単位で取得する。

概要 下のサンプルは、 "2009/11/11"という文字列を、DialogのPLAINフォントで描画した場合に、 どのくらいの幅と高さが必要か、ピクセル単位で表示するものです。 1ptから200ptまでループして、その変化を見ています。 ソース 結果 Font size = 1(pt), Widt…

JPEGファイルから撮影日を取得する

metadata extractorというのを使うと簡単にできます。 ダウンロードはこちらから ソース 結果 撮影日(Date/Time Original) = 2009:09:13 18:45:11 参考ページ こちらのページを参考にしました。 http://www.kyotosanga.com/gaku/2004/11/exif_reader_for_jav…

トイプログラム作成支援ツール for Java デスクトップにあるjar/zipをクラスパスに追加するようにしました。

なので、実行手順はこうなります。 必要なjarをデスクトップにコピーする。 ツールを開く ソースを書く 実行ボタンを押す 以降、3,4を繰り返す。■ソース(gistに置きました)

トイプログラム作成支援ツール

トイプログラムとは、未知のプロダクトやAPIの検証を行うための小さいプログラムのことだそうです。 正確な定義は下記ページ参照。 いがぴょんの日記v2: キーワード: トイプログラム・デザインパターン 私もAPIとかいちいち記憶していないので、 未知でない…

Google App Engine for Java使ってみた

以前書いた、読書ポートフォリオを表示するのをWebアプリ化できないかと思って、 せっかくなのでGAE/Jを使ってみました。 一応できたのがこれ。 http://ssbstat.appspot.com/ssbstat/taka_2 が、むちゃくちゃ遅いです。 (2009/7/29追記) 遅い上に、Amazon Ad…

Amazon Web Serviceを使って、ASINから本のトップカテゴリ名一覧を取得する

昨日書いた、読書ポートフォリオという考え方の続き。 便利なラッパーとかありそうだと思ったのだが、意外になかった(探し足りないだけ?)ので、とりあえずASINから本のトップカテゴリ名一覧を取得するところだけ作ってみました。 ここでは、図解入門業界研究…

複数プロセスから同一ファイルに同時書き込み

こないだ問題になった件。となりの同僚の人が書いた再現プログラムを脳内で再現する。 import java.io.*; public class test { public static void main(String[] args) throws IOException { PrintWriter writer = new PrintWriter(new FileWriter("aaa.txt…

Thread#runを直接呼び出し

もちろん非同期実行されないわけですが、FindBugsでも、 Ru: Invokes run on a thread (did you mean to start it instead?) (RU_INVOKE_RUN) みたいなメッセージで検出されます。 っていうか、プロダクトコードにこんなのがあるなんてありえない。。

SELECTリストにバインド変数

こんなことができるのかとビックリした。想像力が足りないと反省。 しかも、それにある条件が加わると、Oracleのバグを呼び起こすらしい。 JDBC-ODBCブリッジで書いた例 import java.sql.*; public class test { public static void main(String[] args) thr…

二重ループを抜けるやりかたにも色々ありますけどね。。

同僚の人の話。まあ、普通はラベル付きのbreakを使ってこんな感じ。 public class DoubleLoop1 { public static void main(String[] args) { out_of_loop: for(int i=1; i<=10; i++) { for(int j=1; j<=10; j++) { System.out.println("i = " + i + ", j = "…

Hudson + SventonをTomcatに乗せてみた

それぞれのwarをwebappにコピーしてTomcat起動するだけ! Hudsonのホームディレクトリは、デフォルトでは、 System.getProperty("user.home") + "/.hudson" になるらしく、VB.NET側でやや不都合があったので、変えてみました。 環境変数HUDSON_HOMEで設定でき…

Hudson + Sventonが相性よさげ

コメント欄で教えてもらったSubversion用リポジトリブラウザですが、 sventonってのが良さそうです。 いくつか選択できるのですが、ViewSVNとWebSVNはPHPだから改めて環境を作るのがめんどくさい、FishEyeはタダじゃないらしいからヤダ、でSventonに落ち着き…

Hudsonを使ってみてます。

今の現場は、自由に色々やれるので、最近ちょっとキテる感のあるHudsonを試してみました。 つか、ひげオヤジかよーと思ったけど、なかなか使えることが判明。 最初の印象は、 ビルドするだけだったらAntでも出来るじゃん そんなに頻繁にコミットしないから、…

EclipseのJavaコンパイラとSunJDKのJavaコンパイラは違う

という事実を今さらながら知りました。へー。 以前Java開発をやっていたときは、IBMのEclipse拡張版(?)を使っていたので、実はEclipseを仕事で使うのは初めてだったりします。 Tomcatプラグインとか便利だねと。 で、今回リリース作業をやらせてもらった中で…

JSPでBSFを使うのは廃れた?

JSP2.1の仕様(jsp-2_1-fr-spec.pdf)読んだら、 In JSP 2.1, the only defined and required scripting language value for this attribute is java (all lowercase, case-sensitive). This specification only describes the semantics of scripts for when …

JRuby on Java6 Scripting

参考URL1: JRuby Engine 参考URL2: Java Scripting Programmer's Guide とりあえずjrunscriptで動かしてみる https://scripting.dev.java.net/servlets/ProjectDocumentListからjsr223-engines.zipをダウンロードして、解凍する。 jruby/build/jruby-engine.…

JRuby on BSF

コマンドラインからbsfで用意されたMainを使って実行 E:\jruby-1.1.4\lib\ruby\gems\1.8\gems\rubeus-0.0.6-java\examples>java -Djruby.ho me=%JRUBY_HOME% -classpath %JRUBY_HOME%\lib\jruby.jar;%JRUBY_HOME%\lib\bsf.jar;. org.apache.bsf.Main -in rub…

Objectクラスにインスタンスメソッドとクラスメソッド追加&呼び出し

Ruby#evalScriptletでObjectクラスにインスタンスメソッドとクラスメソッドを追加しておいてから、 Ruby#evalScriptletでメソッドを呼び出す Ruby#getClass#newInstance#callMethodでインスタンスメソッドを呼び出す Ruby#getClass#callMethodでクラスメソッ…

Kernelモジュールにメソッド追加&二つの方法で呼び出し

Ruby#evalScriptletでKernelモジュールにメソッドを追加しておいてから、 Ruby#evalScriptletでメソッドを呼び出す Ruby#getModule#callMethodでメソッドを呼び出す の二つの方法を試してみる。 import org.jruby.Ruby; import org.jruby.RubyClass; import …

JavaからFixturesを使ってみる - Rubyコードを使わずJavaコードのみで実現する編

といっても、evalScriptletを使っているので、少しはRubyコード出てきますが。。 FixturesをRails外で使ってみるのRubyコードをJavaに移植するイメージ。 import org.jruby.*; import org.jruby.runtime.*; import org.jruby.runtime.builtin.*; public clas…

結局JRubyって何がおいしいのか考えてみた。

Rubyの中で Javaのライブラリが使える こないだやったPOI on JRubyはここ Rubyの文法でJavaが書ける rubeusはここ Javaの中で Rubyのライブラリが使える Railsアプリをwarblerでtomcatに乗せるとか、今やってるFixturesをJavaで使えるとかはここ Javaの文法…

JRubyで改行コードがCRLFのファイルを入力するとERBの-%が効かない

ようです。LFで保存しましょう。 あんまり関係ないですが、-%使おうと思ったときに出たエラー。 E:/jruby-1.1.4/lib/ruby/1.8/erb.rb:743:in `binding': (erb):2: , unexpected ';' ( SyntaxError) from testerb.rb:9:in `eval' from E:/jruby-1.1.4/lib/rub…