2010-01-01から1年間の記事一覧

input type=file 欄を、Selenium で操作する (IE6/7限定)

先日、↓これを使ってブラウザからサーバにファイルをアップロードするという画面を作っていました。 作るまではよかったんですが、それを SeleniumRC でテストしようと思ったら・・・ファイル欄の操作はできないそうです(Selenium Core FAQ - Selenium - Ope…

Java言語で学ぶデザインパターン入門(マルチスレッド編)読了

「(増補改訂版)Java言語で学ぶデザインパターン入門【マルチスレッド編】」を読み終わりました。 もともと、7月ぐらいに今の仕事でデッドロックが発生したときに買ってななめ読みしていたのですが、今月に入って改めてちゃんと読み直しました。 せっかくなの…

複合代入演算子に対する、ちょっとした勘違い

「x += 3;」は「x = x + 3;」とは違うということを知りました。 きっかけ あるメソッド(foo)の実行時間を確認しようと、こういうソースを書きました。 int sum = 0; for(String arg : args){ long start = System.currentTimeMillis(); foo(); long end = Sy…

スモークテストって、ようするにバルサン・・・?

動作のための最低条件テストのことを「スモークテスト」と呼びます。 この「スモーク」は「焦げたときに出る煙」のことを指しています。 (名称の由来は「新しい基盤に電源を通してみて、煙が上がらないかどうかを確認する」というところから) でも、ソフト…

コミットコメントの書き方(続き)

先日のコミットコメントの書き方(我流)に対して、twitter でコメントをいただきました。 BTS連携があればチケット番号も [subversion]いいね! 僕はBTSと連携させることが多いので、太括弧【】の部分がチケット番号 #XX になりまする。連携できないときはこ…

錯覚

public static void main(String[] args){ System.out.println // もちろん、ふつうはこんなソースを書いたりはしません。 // でも、いつも当たり前のようにメソッド名の直後にかっこを書いていたら // それがルールであるかのように錯覚してしまっていまし…

Setの実装は、ほとんど中身が空っぽ

Java の HashSet のアルゴリズムを確認しようとクラスの中身を見てびっくり。 HashSet は、処理のほとんどを HashMap へ委譲するだけという超簡単なアルゴリズムでした。 コンストラクタはこんな感じ。 public HashSet() { map = new HashMap<E,Object>(); } メソッド</e,object>…

チェック例外の対処方法

Javaの特徴の一つにチェック例外があります。 IOException や SQLException なんかが代表例です。 自分がチェック例外に遭遇した時にどのように対処しているかをまとめてみました。 throwsする public String read(File file) throws IOException 最も多く行…

Googleインスタントプレビューのスクリーンショットをしているブラウザ

ちょっと前に、Google検索にインスタントプレビューという機能が追加されました。 ところで、このスクリーンショット、どういう環境で取ったものなんでしょうか。 調べてみました。 UserAgent Mozilla/5.0 (en-us) AppleWebKit/525.13 (KHTML, like Gecko) V…

Javaでリストと配列を変換、コピーする方法(まとめ)

Javaで、たまにリストと配列を変換したり、コピーしたりするときがあります。 でも意外とやろうとするたびに忘れてしまうので、ざっとまとめてみました。 (解説を分かりやすくするために、ジェネリクスを使用していません) リスト から 配列(変換) publi…

コミットコメントの書き方(我流)

Subversionのコミットコメントは、人によって多々書き方が違います。 ただ、後でコミットの内容を確認した時に 何も書かれていなかった 書いてあっても一行だけだった となっていて、詳細が分からず、本人に聞いたりドキュメントを探して確認する羽目になっ…

Java7のObjectsクラス

Java7 には Objects クラスが追加される予定になっています*1。 Arrays や Collections みたいな、ユーテリティクラスですね。 ざっと調べてみました (といってもAPIを引用&翻訳*2しただけですが・・・)。http://download.java.net/jdk7/docs/api/java/util…

Propertiesクラスのデフォルトプロパティは使わない方がいいかも

Javaでは、プロパティの設定によく Properties クラスを使います。 このクラスは、コンストラクタで別のプロパティをデフォルト値として指定することができます。 public Properties(Properties defaults) 指定されたデフォルト値を持つ空のプロパティリスト…

「適当にテストする方法」を実践してみた

Hudson勉強会でゆかわさんが紹介していた「Hudsonを用いて適当に?テストする方法」を実践してみました。Hudson study-zenView more presentations from Wataru Yukawa. 自分のプロジェクトでは「データベースアクセス用のクラスにSQLとその実行メソッドを書…

JavaDocが見れない・・・けど、Oracleドメインなら大丈夫

最近、Java API(JavaDoc)を開こうとすると遅い・・・というかタイムアウトで失敗する・・・。ググってみたら、 java.sun.comが開けない DNSがおかしい気がする http://twitter.com/joniburn/status/4822838108233728 DNSがおかしい? とりえあず、nslookup …

Javaのfor-each文でremoveする

Javaの for-each 文 (拡張for文) 内で remove をする方法はありません。 Sunの解説でもこの点は明記されています。 for-each ループは好きなときに使えます。使用すればコードがわかりやすくなりますが、どこででも使用できるわけではありません。たとえば、…

Google検索の意外な工夫

ふと気付いたんですが、Google検索のサマリーは極力日付を含むようになっているんですね・・・。 検索語句に関係なく、サマリーに日付を含んでいます。 改めて考えると、結構前からやっている気がしますが、いつからなんでしょうか。 あまりにもさりげなさす…

メールアドレスの素朴な疑問

Q.「そもそも、なんでメールアドレスの仕様はこんなに複雑?」 A.「メールアドレスの仕様」ではなく「メールのヘッダ仕様」の一部*1だから (メールアドレスとして考えると「?」ですが、ヘッダとしては汎用的に情報を含められるような仕様になっています…

StrutsのEmailValidatorの挙動に注意

StrutsのEmailバリデータ(正確には、Apache Coomons Validator)を使っていたら、予想外の挙動にすこしびっくりしました。 前後に空白が入ってもいい test@example.com これは、最初に空白が入っていますが、有効と判定されます。 コメントが入ってもいい (…

Hudson勉強会に行ってきました

Hudson勉強会に行ってきました。 http://wiki.hudson-ci.org/pages/viewpage.action?pageId=46336352 「仕事でHudson使いたいけど、何から手をつけたらいいんだろう」と思っていた矢先だったのでとても助かりました。 内容は本格的な使い方から、適当な使い…

Java7のAutoCloseable

Java5 から Closeable が実装されていました。 A Closeable is a source or destination of data that can be closed. The close method is invoked to release resources that the object is holding (such as open files). Closeableは、閉じることことの…

公式で Add Tab Index for Google が実装されてる

Firefox & GoogleChrome 用の greasemonkey「Add Tab Index for Google」をバージョンアップしました。 Add Tab Index for Googleとは?Googleの検索結果ページを3倍ぐらい使いやすくするためのgreasemonkeyです。 [1]検索結果の最初にフォーカスが当たる (E…

iPadばかりのIT PRO EXPOだけど…

お客様が出展されているということで、IT PRO EXPOに行ってきました。 感想なんですが…、やたらiPadだらけ。 「これ、iPadの展示会でしたっけ?」と思うほど、iPadだらけでした。 ビジネス用途でiPadは普及する? 展示数だけを考えれば、ビジネス用途でiPad…

驚いたこと2つ目

自分のサイトをググったらさっきの更新がもう反映されてた。 投稿してから30秒しか経ってないのに…。

Javaのメソッド名によく使われる単語・接頭辞

Javaの標準API(java.*, javax.*)に含まれるメソッド名を分析して、よく使われている単語や接頭辞を抜き出してみました。 これで、もうメソッド名を決めるのに迷わない!はず…。 接頭辞 順位 単語 意味 代表例 出現回数 1 get 取得する List#get() 21198 2 …

攻撃的プログラミングには、例外ブレークポイントが便利

柴田 芳樹さん*1のブログを読んでいて、ふと目にとまったコメントがありました。 結果として、APIの実装コードでは不正パラメータの検査されていない。あるいは、検査はしているが例外をスローすることなく、単純にリターンしている。※ (中略) ※ 検査はし…

JavaScriptでフォーカスが当たっている要素を取得する方法

Firefox & GoogleChrome 用の greasemonkey「Add Tab Index for Google」をバージョンアップしました。 Add Tab Index for Googleとは?Googleの検索結果ページを3倍ぐらい使いやすくするためのgreasemonkeyです。 [1]検索結果の最初にフォーカスが当たる (E…

canvas の getImageDataが少しめんどくさい(特にローカルで動かす場合)

egg (JavaScript Effect Library)にモザイクイン・モザイクアウトを追加しました。 egg とは?HTML5 の canvas を使った画像エフェクトライブライブラリです。 まだ数は少ないですが、結構きれいなエフェクトがかかります。 Firefox, Google Chrome をご利用…

canvas を使った画像エフェクトライブラリ

HTML5 の canvas を使った画像エフェクトライブラリ「egg」を公開しました。 egg とは?HTML5 の canvas を使った画像エフェクトライブライブラリです。 現在は粒子エフェクトのみですが、結構きれいなエフェクトがかかります。 Firefox, Google Chrome をご…

GoogleChromeだと、drawIndex でエラーが出ることがある

Google Chrome で canvas をいじっていたらこんなエラーが。 Uncaught Error: INDEX_SIZE_ERR: DOM Exception 1 Firefoxだと動くのになんでー?って思ったら、drawIndex で範囲外をコピーしようとしていたことが原因でした。 context.drawImage(img, sx, sy,…