読者です 読者をやめる 読者になる 読者になる

日々常々

ふつうのプログラマがあたりまえにしたいこと。

Java

大阪EffectiveJava読書会 第2回 やりました

大阪EffectiveJava読書会 第2回 : ATND 第2回 Effective Java 読書会 - Togetterまとめ Androg: 大阪EffectiveJava読書会 第2回に参加しました。 一回目に続いて二回目やりました。回数は増えていきますが、内容は別に引きずらずに飽きるまでやろうと思いま…

素数かを調べる

今日は11日です。 11は素数だから今日は素敵な日です。2011-05-11 08:51:19 via Echofonでも11が素数かは不安なので、本当に素数かどうか調べないといけません。 Javaでやってみる public class Main { static int value = 11; public static void main(Stri…

リフレクションでprivateをテストしてみる

発端 private メソッドをリフレクションで無理矢理テストする方法を覚えた!! 不可視のクラスに対しても同じように出来るのかな?2011-04-26 23:49:55 via TweetMe for iPhone@meganii さんのつぶやきが発端。不可視クラスってことは…privateクラスと無名クラ…

enumあれこれ

EffectiveJava読書会で意外とenumネタで需要がある気がしたので、ちょっと書いてみます。内容的に目新しいものは無いはずの事を書きますので、理解されている方はツッコミ所探しでもしてください。 読み方 enumは enumerate か enumeration が語源になってる…

大阪EffectiveJava読書会 第1回やりました

ATND http://atnd.org/events/14722 Togetter http://togetter.com/li/124994 なんか気がついたらやる事になっていた「大阪EffectiveJava読書会 第1回」ですが、参加者の皆様のお陰で無事終了しました。ありがとうございました。読書会に参加した事も、勉強…

大阪EffectiveJava読書会をやります

http://atnd.org/events/14722 2011/04/17(日) 15:00-18:00 です。 EffectiveJavaを読み返そうと思ったら、何故か読書会になってました。「こんなノリで大丈夫なのか?」と思ったりもしましたが、きっと何とかなります。参加される方も気楽にお願いします…

Javaっぽいプログラマになる方に薦める5冊

いきなりぶっちゃけますが、5冊で足りる訳がありません。でもいきなり難攻不落の城を見せ付けられても困ります。数が多いとそれだけで「うわ、こんな読まないといけないの!?」と思ってしまうものです。なので、私がこれまで読んできた本の中から5冊だけピ…

String の連結ネタの続き

以下のコードはどうなるでしょう。こたえは一番下。 String str = null; str += new Object(); System.out.println(str); http://d.hatena.ne.jp/irof/20110305/p1 の続きっぽい何か。 引っ張りすぎだと思わなくもありませんが、思うところは書いておこうと…

フィールドの隠蔽

http://d.hatena.ne.jp/irof/20110305/p1 でコメント頂いたネタ。 ちょっとしたクイズになるのかな。どんな結果になるか難なく判るなら、初心者*1からは脱していると思います。難なくじゃなくても、悩めるならたぶん大丈夫です。 public class Quiz { public…

Javaプログラマであるかを見分ける10の質問 に答えてみる

Javaプログラマであるかを見分ける10の質問 - やさしいデスマーチ"自称Javaプログラマを見分ける"や"問題なく答えられる"と、軽く答えるには高いハードルな気もしますけれど、今日時点の私のスナップショットとして晒しておきます。決して露悪趣味があるわけ…

関西Javaエンジニアの会いってきました

2011/3/2 にあった関西Javaエンジニアの会に行ってきましたー。 http://atnd.org/events/12307 http://togetter.com/li/107300 http://www.kanjava.com/home/event20110302 // メインセッション Javaニュース / id:cero-t 資料できた。 仕事早い。2011-03-02…

Java7 体当たり/strings switch

Switch に String が使えるようになるみたいです。 String in switch Statements switch に使えるのは int か Enum だったのですけれど、この度 String も出来るようになりました。単なる1クラスのはずなのに優遇されまくってる String さんです。 String re…

Java7 体当たり/Binary Literals, Underscores in Number Literals

数値系は2つまとめて。 二進数表記 Binary Literals 16進数の 0x の様に、2進数を 0b で書けるようになります。地味に便利かもしれませんね。勿論二進数なので 0 と 1 以外の数を入れるとコンパイルエラーになります。 // いままで byte j6byte = (byte)21; …

Java7 体当たり/diamond operator

Type Inference for Generic Instance Creation ジェネリックインスタンス生成時の型推論。私的に嬉しいダイアモンドです。コードの見た目がちょっとマシになるやつです。コードは読み物ですから、読みやすいほうが良いに決まっています。誰でも一度は書いた…

Java7 体当たり/try-with-resources Statement

JDK7 を使う準備が出来たので、体当たりします。Java7 での個人的に嬉しいのが try-with-resources Statement です。AutoCloseable (を実装したクラス)の変数をこの構文で初期化すると、勝手に close してくれるってものです。 ではさらっと使ってみます。…

Java7 体当たり/catch-multiple

続けて例外処理にぶつかってみます。Catching Multiple Exception Types and Rethrowing Exceptions with Improved Type Checking 複数の例外を一緒に処理出来るってやつです。複数の例外を投げるメソッドを使っても、大抵やりたい例外処理は同じだったりし…

JDK7を使ってみよう

先日、JDK7の開発者プレビュー版がリリースされました。 JDK 7 開発者プレビュー版のリリース | 寺田 佳央 - Yoshio Teradaどの機能が入るかとかいつリリースされるかとかが判らない時期はもう過去のもの。そろそろ重い腰を上げて、新しいJavaを知っておくの…

assertThat で Collection.isEmpty() を判定させたい

昔は assertTrue や assertEquals を使っていたのですが、時代は変わって assertThat が出来ています。使うことでのメリットは"テストコードの可読性向上"です。散らかりがちになるテストコードの可読性に関わるならば、使わない手はありません。 初めて見た…

文字列連結から見るシステム内で扱う型について

Stringの連結はそう簡単なものではない - じゅんいち☆かとうの技術日誌いまさらなのか、いまだになのか、文字列結合ネタからの派生です。実際、業務アプリケーションで文字列結合が致命的なパフォーマンス劣化を引き起こすようなことは無いと思います。です…

JUnit のテストメソッドを複数スレッドで実行する

JUnit4.8 のテストは、ぐるぐる巻きにされた Statement を転がすゲームです。ご存知 @Before, @After, @BeforeClass, @AfterClass も @Test も @Rule も全部 Statement に変換されて、それらの Statement でテストメソッドを丁寧にラッピングしてから実行し…

JUnit の @Rule で ExternalResource を使ってみる

@Rule うっかりTwitterでつぶやくと、無関係な方にメッセージを送ってしまって迷惑なJavaのアノテーションですが、JUnit4.7で追加されたらしい @Rule は結構便利な輩です。 乱暴に言うと、テストクラスに @Rule つけた MethodRuleフィールドを書いておけば、…

Javaソースコードリーディング 第2回

JUnitソースコードリーディングに行ってきました。感想を書くと "Groovyすげぇ" になりかねないので、さらっと書きます。 雑感 色々ありますけど、読んだら使い方がわかります。読まなくても使えるんですけど、読んでからだと使えてなかった気がするから不思…

Glassfish3.1を使ってみる(ついでにHudsonも)

JavaFX & GlassFish 合同勉強会をUstreamで見て、Glassfishを触ってみよーって気分になったので。 環境とか使ったものとか Windows7, Java 1.6.0_21, glassfish-3.1-web-b33.zip, hudson.war(1.386) ダウンロードとインストール まずダウンロードします。ダ…

T2 Framework コードリーディングに参加してきました

T2Framework コードリーディング 第1回に参加してきました。予備知識として持っていったのは、先日書いたGettingStartedとサンプルで挙動を見たのプラスアルファ程度です。なぜGroovyの記事が先になったのかは秘密です。おそらく"say"が原因とだけ言っておき…

Java Puzzlers: Scraping the Bottom of the Barrel(プレゼンの動画)

Java Puzzlers: Scraping the Bottom of the BarreltwitterとDevoxxのJava Puzzlersが見られます - 谷本 心 in せろ部屋を見て。 見始めて「意外と判る面白い」とか思った辺りで1時間ある事に気付いた(←今ココ)けど最後まで見て遅刻する。 RT @cero_t: と…

JavaCloudMeeting2010inKansai行って来ました

正直に言います。情報のインプットが多すぎて脳みそがハングアップ状態です。スケールアップはがんばるけど、おっつきそうに無いのでスケールアウトしたい。でも無理。にんげんだもの。 …えーと。 かなり必死に聞きながらメモってたから殆ど内容は思い出せる…

T2frameworkに触ってみた

T2frameworkですよ。マスコットかわいい。日本ではかわいいものが流行るらしいので、これは流行る。知らないだけでもう流行ってるのかも。ホント触りだけです。具体的にはGettingStartedに書いてるのを辿るだけ。書いてる通り進めれば問題ないはずなんだけど…

Tomcat6とOpenJDKとCentOSと

引き続きServersMan@VPSについて。概ね機嫌よく使っています。とは言っても、環境設定が中心というか、初期化ばっかりやっているのですが。 初期化してみよう MyDTIからログインして、契約中サービス→確認・変更→各種初期化とボタンを押していくと、サーバの…

関西Javaエンジニアの会(関ジャバ) '10 9月度行ってきました

関ジャバ行ってきました。期間を置くと書かないまま終わるのが前回証明されたので、ざーっと書いておきます。(ついったーの#kanjava) ■Spring Securityの使い方 id:jyukutyo 旧Acegi Security。Filterでユーザ認証と、ユーザに割り振られたロール毎のアク…

Javaでファイルのタイムスタンプ変更

Javaでファイルを扱うにはjava.io.Fileクラスを使用します。 Fileクラス自体はファイルそのものでもなんでもなく、ファイルまたはディレクトリのパスを持っています。Fileクラスのインスタンスはファイルシステムで管理されているファイルと対になるとは限り…

Listのループ

Listを全件ループして処理する場合、ぱっと思いつくところで3種類あります。 ループカウンタによるループ Iteratorによるループ 拡張for文によるループ(J2SE 5.0以降) 実装例 // なんらかのリストを取得する。 List list = getList(); // ループカウンタ f…

ジェネリック型

J2SE 5.0で追加されてもう6年以上が経過しているジェネリック型ですが、未だに使い方がよく判らなかったり、手間なだけと思っている方や、酷いものでは「@SuppressWarnings("unchecked")をつけるもの」って認識されていたりします。ざっくり説明するのにもっ…

JavaからOracle接続時にORA-12705が発生する

JDBC経由でOracleに接続する際、稀にORA-12705が発生するという事象がありました。環境は Java1.6 Oracle10gXE ojdbc14.jar です。ojdbc6.jar を使うべきなのかも知れませんが、現状この環境なのだから仕方がありません。 java.sql.SQLException: ORA-00604:…

カプセル化

今更ながらカプセル化とは何か、と言うところから書いてみる。読んで字のごとく、カプセルっぽくする事です。 では、カプセルとは何かと言う事を思い浮かべてみます。ぱっと思いつく薬のカプセルは、中に粉末とか粒とかが入っていて、そのままだと不味いとか…

オーバーロードの誤用の原因

オーバーライドやオーバーロードの誤用について書いてみたけれども、これらが発生する原因は(主に初心者向けに)文言の意味のみが説明されているためだと思います。とゆーわけで、オーバーロードについて解説しているサイトを漁ってみた。文言の説明だけの…

ソース内のコメント

Javaでも多くのプログラミング言語と同様にソース内にコメントを書くことが出来ます。 <蛇足:コメントの種類とか>コメントには、単一行コメントと複数行コメントがありますが、基本的に使うのは単一行コメントです。複数行コメントは滅多に使わない、と言…

オーバーライドの誤用

似た言葉だからと言うわけではありませんが、オーバーロードと同様にオーバーライドもしばしば誤用されます。もっとも。オーバーロードの誤用に比べると見かける頻度は低いのですが、これはオーバーライドが理解されていると言うよりも、そもそも継承があま…

オーバーロードの誤用

正しい使い方のされない道具は害悪にしかなりません。 鋏は正しく使えば紙や布をさくさくと切る事が出来るけど、変に傾けたりすると全くきれなかったり、普通の鋏で鉄パイプやらを切ろうとしても文字通り歯が立たない、さらに人に向けたりすると危険です。道…

オーバーライドとオーバーロード

オーバー○○ドと被っている文字が多いからなのか、曖昧だったり、入れ替わったり、混同されたりするオーバーライドとオーバーロード。こうして並べて書いたりすると、また誤解の原因になるのかもしれません。 個人で勘違いしてる程度ならまだ苦笑で済ませたり…

JavaBeansの命名規則

propertyの名前に従い、それぞれgetter/setterが存在する。getter/setterの名前は以下のように決定される。 小文字から始まる(3文字目以降は大文字交じりも可)property propertyName getPropertyName/setPropertyName 大文字のみで構成されるproperty CAPI…

Interfaceの存在理由

Interfaceが何のためにあるのかと聞かれたので書いてみる。 Javaについて詳しくない方向けに軽く砕きつつ、方向を間違えないように注意しつつ、と思って書いては見たものの結局人に説明できるほど自分も理解していないなと痛感してしまった。要精進、として…