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

エンジニアとしてプロとして、今年読んだ本

自分はエンジニアであり、プロでありたいと思っているので、定期的に技術書を読むように心がけています。読むのと理解するのが遅いため冊数は少なめですが、それでも少しでも身につくものがあればと思って読んでいます。 そんな自分が、今年一年でどんな本を…

Javaの実行速度を調べるなら、ClientVM/SeverVM の違いを考慮しておくべきでした。

先日のJava7 で ArrayList の foreach が速くなった理由を調べてみました。 - 地平線に行くについて、お詫びと訂正です。 上記の記事の中で、「ArrayList の foreach文(拡張for文)がJava6 → Java7 で約2.5倍速くなっていました。」という実験結果を記載し…

Java7 で ArrayList の foreach が速くなった理由を調べてみました。

Java7でList/TreeMap/TreeSetのIteratorがかなり早くなって、 ArrayListのforeach文(拡張for文)も、普通のfor文より早くなりました。 コレクションの細かい話、だが面白い! - 谷本 心 in せろ部屋 そうなんですか!? …と思って試してみたところ、ArrayLi…

LINQの拡張メソッド一覧と、ほぼ全部のサンプルを作ってみました。

C#のLINQメソッドは超便利!!、なんですが…肝心のAPIがわかりづらいです。 そこで、種類ごとにまとめて、簡単なサンプルを書いてみました。 結果の表示に、独自の拡張メソッド ToResult(this IEnumerable) を使用しています。このメソッドは、本文の最後に記…

ウェブサイト1ページ当たりのデータ量は200KB〜、多いと2MBぐらい。

最近、iPhone4S が登場してにわかに回線速度についての話題が上がってきました。 でも、Googleマップのようなリッチコンテンツならともかく、ふつうのウェブページは高速な回線じゃないと困るぐらいデータ量が多いんでしょうか。 調べてみました。 調査方法 …

jQuery の :hidden セレクターは、遅い?

jQuery の :hidden セレクターは遅いのでしょうか? Excelインクリメンタルサーチのプロファイルをとっていたら、処理回数が多いと無視できないぐらい遅くなることがわかったのですが…。でも、理由がよくわからないです。 解析 まず、該当箇所(hidden セレ…

eclipseがJava7に対応しました。

eclipse3.7 SR1 で正式に Java7 への対応がアナウンスされました。 Eclipse Announces Full Support for Java 7 主な変更点は、コンパイラと主要なツール(コンテンツアシスト、クイックフィックスなど)の Project Coin への対応、とのこと。 これでやっと…

Excelの表(QA表, 不具合表... etc)を、すごく検索しやすくするツールを作りました。

最近、仕事でやたらExcelを使うようになったので、こういうツールを作ってみました。 Excelインクリメンタルサーチ Excelの表を、すごく検索しやすくするツールです。 (QA表, 不具合表... etc) サンプルはこちら! このツールを使うと、Excelの表をブラウ…

Java7 で File クラスもリファクタリングされていました

先日の記事(Java7 で String クラスがリファクタリングされていました - 地平線に行く)に続いて、File クラスを調べてみました。前回ほどの変更はありませんでしたが、それでも着実にソースがよくなっていました。 listFiles メソッド - 新文法の積極活用 …

Java7 で String クラスがリファクタリングされていました

先日、ついに JavaSE 7 がリリースされました! そこで、早速ダウンロードして、Java7 のソースコード(src.zip)を Java6と比較してみたところ、公表はされていないのですが、ちょこちょことリファクタリングされていることがわかりました。 そこで、そのうち…

Java7 の try-with-resources で複数のリソースを扱うときの書き方が、C# の using と全然違う

Java7 の try-with-resources と C# の using は、どちらも同じだと思っていました。 でも、複数のリソースを扱うときの書き方が全然違っていました。 // Java7, ひとつの try の中に複数の宣言を書く try(BufferedReader reader = Files.newBufferedReader(…

一足早く、Java7でアプリを作ってみました!

まだ公式リリース前*1ですが、一足早く Java7 でアプリを作ってみました! PopupTail Java7 で実装した、タスクトレイ常駐型の Tail です(tail -f と同じ機能です)。 ファイルに変更があると、ポップアップでお知らせします。 ログの監視などに、ぜひご利…

eclipse が Java7 に対応するのは、2011年9月ごろの予定

7月28日は Java7 のリリース日*1。 その前にちょっと遊んでみようと思ったら、eclipse がまだ対応していませんでした。 2011年9月ごろ(eclipse 3.7 SR1 で対応)になるそうです。それまでは、IntelliJ IDEAか、NetBeansを使うしかなさそうですね…。 2011年1…

Javaのクラスの半分以上は、引数なしのコンストラクタを持たない

よく使うJavaのクラスは、たいてい引数なしコンストラクタを持っています。 List<String> list = new ArrayList<String>(); Calendar calendar = new Calendar(); でも、引数なしコンストラクタを持たないクラス*1も結構あります。 InputStream inputStream = new FileInputS</string></string>…

今月読んだ本まとめ

今月読んだ本を、復習を兼ねて振り返ってみます。 技術書 JavaScript パターン けっこう薄い(200ページちょっと)んですが、大事なことがとてもつまってました。JavaScriptは、いままで見よう見まねでやっていたところがあったんですが、この本でなぜそうす…

JavaとC#の命名規約まとめ (JavaプログラマーがC#でプログラムを書いて引っかかったところ その3)

よくごっちゃになってしまうので、Java と C# の命名規約をざっとまとめてみました。 種類JavaC#(.NET) クラスPascalPascal インタフェースPascal(例:List)"I" + Pascal(例:IList) パッケージ / ネームスペースCamel(例:java.net)Pascal(例:Syste…

Canvas Library (Effect & Animetion) の構造を一新

Canvas Library (Effect & Animetion) *1をバージョンアップしました。 Canvas Library (Effect & Animetion) とは?HTML5 の canvas にエフェクトをかけるライブラリです。 まだ数は少ないですが、結構きれいなエフェクトがかかります! ぜひ、下記のページ…

地震は減っている?

3月11日の東日本大震災以降、地震の回数が急増しました。 一方で、ここ最近はだいぶ減ってきたような気がします。 ・・・でも、本当に減っているのでしょうか? 地震の回数 日本気象協会が発表している地震情報を分析しました。 その結果が、このグラフです。 …

内部クラスはエンクロージングインスタンスが無くてもインスタンス化できるのは仕様?

id:backpaper0さんが内部クラスはエンクロージングインスタンスが無くてもインスタンス化できる?と書かれていました。 Inner.class.getConstructor(Outer.class).newInstance((Outer) null); 実行してみたところ、確かにインスタンス化できました。 でも、…

Java5で条件演算子(三項演算子)に仕様変更があった!

昨日の「条件演算子(三項演算子)で、:の左側と右側に共通のインタフェースを持つ別のクラスを書く」についての追記です。C#だと、以下のように条件演算子のふたつの式が共通の型を持っている場合でもコンパイルエラーになりますが、Javaだとちゃんとコンパ…

JavaプログラマーがC#でプログラムを書いて引っかかったところ その2

C#

Javaで動くので、C#でも動くと思ったんですが・・・。 条件演算子(三項演算子)で、:の左側と右側に共通のインタフェースを持つ別のクラスを書くと、コンパイルエラーになりした。 /* -- Java -- */ public interface X { ・・・ } public class A implements X…

JavaプログラマーがC#でプログラムを書いて引っかかったところ その1

C#

案件が変わり、仕事で使う言語がJavaからC#に変わりました。 その際に、C#でプログラムを書いていて引っかかったところをメモしておきます。 とりあえず、連想配列(Dictionary)を使ったときのことをメモ。 書き方の違い C#は、連想配列用に言語仕様が用意さ…

HTTP Server Anywhere を公開しました

以前、ローカルファイルのまま JavaScript を動かそうとすると、セキュリティエラーにひっかかるということがありました。 ちゃんと Apache とかのサーバを用意して動かせばいいんですが、そこまで手間をかけるのも面倒・・・。そこで、こんなの作ってみまし…

Enumerationを拡張for文で使う

たまに、Java の Enumeration を使ったサンプルを見かけることがありますが、その大半が Iterator と同じようなアクセスの仕方をしています。 NetworkInterface nic = NetworkInterface.getByName("eth0"); Enumeration<InetAddress> nicAddress = nic.getInetAddresses()</inetaddress>…

効率的なバグの作り方

プログラマーの仕事は、とにかく効率を求められます。 それは、コーディング然り、テスト然りです。 それならば、バグだって効率的に作るべきです。 今日は、そんな効率的にバグを作るやり方を、ざっと考えてみました。 複雑なif バグを作るためにifをたくさ…

JavaでPingを打つ

結論:JavaでPingを打つには、外部プロセスを使う。 public class NativeProcess { /** ping のタイムアウト(ms) */ private static String TIMEOUT = "3000"; public static void main(String... args) throws IOException, InterruptedException{ boolean …

オブジェクト指向プログラミング

今から13年前、VB (VisualBasic) で初めてプログラムを書きました。 昨日、そのVBでひさしぶりにプログラムを書きました。 Split(str, ",") 書いていて、初めて違和感を感じました。それが、衝撃的でした。 書き方、ではない オブジェクト指向を理解して、プ…

Hudson 上でテストを動かそうとしてつまずいた点

テスト環境構築のために、Hudson × Ant × JUnit with Selenium の組み合わせで動かそうとしたら、いろいろと四苦八苦してしまいました…。 JUnit タスクが動かない なぜか、Ant の JUnitタスクを動かそうとしたら ClassNotFoundException がでました。 不思議…

サクラエディタでソートする

サクラエディタでソートができないかどうかいろいろ工夫してみたら、できました。 手順 「ツール」−「外部コマンド実行」をクリック 名前に「sort」と入力、「標準入力に送る」をチェック、「編集中のウィンドウ」を選択(次回以降は、これがデフォルトにな…

Tracのタイムラインを見やすくする

自分が使っているTracでは、更新もタイムラインに表示するように設定しています*1。 これで、更新がすぐにわかって便利!と思ったんですが、更新頻度が高いと肝心の登録/解決が埋もれる・・・。 そこで、見やすく色分けしてみました。 div.timeline dl dt.ne…