Java

Play!触ってみた

1.2.3を使いました。 はまった crud用のhtmlを編集しようとして、マニュアルにあるとおり以下のコマンドを実行したところ、、 play crud:ov --template Users/list こんなエラーが。 Invalid command: crud:ov アプリケーションの場所を明示することでうまく…

Javaでの文字のバイト列の表示

作る必要があったので、メモがてら残しておく。 なお、String#codePointAtで返ってくる値は常にUTF-16BEとしてのコードポイントという点に注意。 public static void main(String[] args) { String string = "あいうえお"; for (int i = 0; i < string.lengt…

JSPでのスクリプトレット内での注意事項

Tomcat5.5.27からは以下のような書き方はできなくなったようだ。。 <input type="text" name="sample" value="<%= varA + ", " + varB %>"> こんな例外が出る。 Attribute value varA + ", " + varB is quoted with " which must be escaped when used within the value 対応方法は以下にありました。素晴らしい。 http://amebl…

タイマー実行

1.4まではjava.util.Timerを使うところでしたが、5.0からはconcurrentパッケージに導入されたScheduledExecutorServiceを使うべし!とEffective Javaにあります。 ということで、ちょっとお勉強。 ScheduledExecutorServiceの生成 基本的には以下のどちらか…

エスケープ処理

Java上で文字列のエスケープ処理がしたい場合は、commons-langのStringEscapeUtilsを使うのがおススメ。 String escapeXml = StringEscapeUtils.escapeXml("xml"); String escapeHml = StringEscapeUtils.escapeHtml("html"); String escapeSql = StringEsca…

selenium

遅ればせながらSeleniumを触ってみたのでメモ。 最終的にやりたいのは、JUnitとして実行すること。 そのための手順として、 Selenium IDE(これはfirefoxプラグイン)を使って、ブラウザ操作からテストシナリオを作る JUnit上で実行 となります。 環境準備 S…

ant中からgroovyを呼び出す〜あれこれ〜

Antからgroovyが呼び出せるようにする設定はこちらを参照してください。 http://d.hatena.ne.jp/mtoyoshi/20071125/1195955576 基本編 タグ中はgroovyプログラミングが可能。Antで用意した変数はgroovy側でも利用可能です。 <target name="some_target"> <antcall target="func"> <param name="sample.flag" value="true" /> </antcall> </target> <target name="func"> <groovy> println prop…</groovy></target>

空白で区切るんだけど、"で囲まれている中の空白は無視する

@kompiroさんのつぶやきに触発されてtryしてみた。 growlnotify -n "Quick JUnit"」をProcessBuilderに食わせるために"growlnotify","-n","Quick JUnit"と分割して上げたいのだけれど、いい方法が見つからない><。もしかしてさくっと出来たりしないのかな…

guava

いつのまにやら、google-collectionsがguavaに統合されていた。現時点でのバージョンはr06。guavaはGoogleの多くのJavaベースのプロジェクトで使用されているjava core libraryとのこと。 パッケージ名を見れば大体の機能について想像がつく。 com.google.co…

Windowsサービス起動のTomcatのプロセス番号を調べる

startup.batで起動したTomcatに関してはコマンドプロンプトでjpsとやれば表示されますが、Windowsサービスから起動したTomcatは表示されません。jstatでメモリ状況調べる時に困った。 現在のログインユーザーではないユーザーとして起動されているために表示…

List#subListの罠

String#subStringって結構メジャーなメソッドだと思うんですけど、List#subListって知名度どれくらいかなー。subStringの感覚で使ったら痛い目あうよー・・・ってそんなことどれだけの人が知ってるんだよ!!というお話です。 このシンプルなプログラムの実…

Google Collections Libraryステキというお話。

Javaしか知らなかった時はまぁ多少冗長だなー位にしか思っていなかったんですが、rubyを知ってからはJavaプログラミング中に「rubyならもっと簡潔にかけるのに・・・」なんて思ったりすることが増えてきました。 例えば、 List<String> animals = new ArrayLists<String>(); </string></string>…

URL→URI→File

よく忘れるのでメモ。クラスと同じ場所にあるファイルを読み込む方法。 URL url = this.getClass().getResource(fileName); URI uri = new URI(url.toString()); File file = new File(uri);

コマンドの実行

全然知りませんでした。危ない危ない。 http://d.hatena.ne.jp/tomo_snowbug/20090128/12331541881.6でも直っていない。。

新しい技術メモ

あまり最近は新しい技術などを追いかけられてないですが、いくつか見つけたのでメモ。TOEICが終われば時間を見つけて勉強する。 T2 play! DOMA apt

floatとdouble

Effective Java 第2版 (The Java Series)作者: Joshua Bloch,柴田芳樹出版社/メーカー: ピアソンエデュケーション発売日: 2008/11/27メディア: 単行本(ソフトカバー)購入: 77人 クリック: 936回この商品を含むブログ (261件) を見る 項目48「正確な答えが…

コンカレンシーユーティリティの練習

10スレッド同時実行して、スレッド間の分布を見るサンプルです。 単にjava.util.concurrentパッケージを使ってみたかっただけですw。 public static void main(String[] args) throws InterruptedException { int max = 10000; final CountDownLatch start …

不変クラスのキャッシュ

Java5からInteger#valueOf(int)メソッドが増えました。 これの利点は、-127〜128については、内部でキャッシュされたものが返されるため、生成コストが低いということ。ということで、Integerが欲しい時は、new Integerではなく、必ずInteger.valueOfを使う…

配列をカンマ区切りで

以前、文字列配列をカンマ区切りの文字列にするというのを書きましたが、自分で作るんじゃなくて単に利用したいだけならこんな方法があります。 int[] ary = new int[] { 1, 3, 5, 7, 9 }; System.out.println(Arrays.toString(ary)); // [1, 3, 5, 7, 9] Sy…

Strutsのtilesのバグ

tilesで子供側のjspから例外が出てもその例外が上にうまく伝播されず、そのまま中途半端なhtmlがクライアント側に返ってしまうみたい。global-exceptionsの設定が効かない(泣)。その中途半端なhtmlは場合にによっては画面が真っ白になっているように見えた…

10章 並行性

今回もEffective Javaより。10章読んでいて気になったけど、Javaは5になってから、GenericsやAnnotation、Enum、Auto Boxing、staticインポート、可変長引数など文法的に大幅な変更が加えられたことでその点が大きくクローズアップされるものの、java.util.c…

Joshua Bloch

本blogでも何度か取り上げたEffective Javaですが、その著者のJoshua Blochさんが実際にauthorになっているプログラムを見つけてびっくり! Java5からenumが導入されましたが、enum型の集合を表すのに特化したjava.util.EnumSet(もちろんSetインタフェース…

AntタスクからVisual Studioのソリューションをビルドする

後輩に教えてもらった。 以下のようにすることで、eclipseからビルドできるので、いちいちVisual Studioを起動しなくても済む! <exec executable="cmd.exe"> <arg line="/c &quot;${dotnet.dir}/msbuild.exe ${src.dir}/Sample.sln&quot; /p:Configuration=Release"/> </exec> ちなみにdotnet.dirはほとんどの場合「C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727」だと思います。

項目28 APIの柔軟性向上のために境界ワイルドカードを使用する

今日もEffective Java第二版より。なかなか難しかったが、理解できてスッキリ! Effective Java 第2版 (The Java Series)作者: Joshua Bloch,柴田芳樹出版社/メーカー: ピアソンエデュケーション発売日: 2008/11/27メディア: 単行本(ソフトカバー)購入: 77…

境界・非境界

現在、部署のみんなとEffective Java 第2版を輪読している。本当いい本!難易度は結構高めだけど。 Effective Java 第2版 (The Java Series)作者: Joshua Bloch,柴田芳樹出版社/メーカー: ピアソンエデュケーション発売日: 2008/11/27メディア: 単行本(ソフ…

URL fetch

GAEからWEBサービスを呼び出す時はURL fetchなるものを使うらしい。 http://code.google.com/intl/ja/appengine/docs/java/urlfetch/ よって、以前このようにしていた部分は、 URL url = new URL("http://api.iknow.co.jp/items/matching/" + translateForm.…

GAE/JではStrutsは使えないっぽい

嘘です。使えました。 2009/4/25 こちらのblogを参考にさせてもらってGAE/JでStruts環境を構築。 http://googleappengine.seesaa.net/article/117110106.html blankアプリケーションはローカルでもサーバー上でも動作した。 で、次に簡単なStruts ActionとSt…

GAE/JではHttpClientは使えないっぽい

smart.fm(旧iKnow!)のWEB APIを使ったアプリケーションを作ろうとして、WEB APIの実行部分をcommons HTTP Clientを使ってやってみたんですが、ローカル環境ではうまく動かず。 java.security.AccessControlException: access denied (java.net.SocketPermiss…

GAE for Javaのサンプルソースの解析

プロジェクトを新規作成したときのサンプルソースをちょっと解析してみたので簡単に解説。 といってもまだドキュメントをちゃんと読んでないので、あくまでソースコードを解析してみての個人的な予想。 まずサンプルアプリケーションは次のような画面で、ボ…

GAE Java!

もう無理かと思いましたが、メールでアカウントの用意ができたという連絡が来ました。 実際の登録時に、携帯電話のアドレスを登録するところがあるんですが、@以前は20文字までしか入力できません。俺のアカウントは21文字だったので、登録できませんでしたY…