Concepts and tools of logging in Java. Javaにおけるログ出力の考え方と道具について説明. CC Attribution Licenseの元に公開します.
プロセスIDの取得 スレッドダンプの取得 Windowsでプロセスをサービス起動している場合 スレッドダンプを読む プロセスIDの取得 まずは Java のプロセスIDを取得するところから始める。jps で取得できる。 $ <JAVA_HOME>/bin/jps -l 主要なオプションは以下の通り(SunVM)。 オプション 説明 -m main メソッドに渡される引数を出力 -l アプリケーションの主要なクラスのフルパッケージ名、またはアプリケーションの JAR ファイルへのフルパス名を出力 -v JVM に渡される引数を出力 JDK7 からは JRockit と統合されたため jcmd が使えるので以下でもプロセスIDを取得できる。 $ <JAVA_HOME>/bin/jcmd または、単に ps コマンドで取得するでもよい。 $ ps -ef | grep -v 'grep' | g
Swiftはじめました 最近、いまさらながらSwiftをさわり始めました。 Ojective-Cは、あの独特の記法がどうも苦手で避けてきたのですが、 SwiftはAppleが「モダンです」といっているように、すんなりと受け入れられました。 自分はもともとJavaメインでやってきたのですが、ここではJavaとSwiftのコードを比較しつつ、 基本〜各種構文をまとめていきます。 Swiftとは Swiftは2014年6月にWWDCで発表されたプログラミング言語です。(現在は2.0) 言語自体は最近の風潮をとりいれており、とっつきやすい(自分は)構文になっています。 また、先程もいったように、「モダン・安全・高速・インタラクティブ」なプログラミングが可能で、 次のような機能も持っています。 XcodeのPlaygroundsやコンソールのREPLで簡単に動作確認できる クロージャ/ジェネリクス/
ときおり、PDF文書から任意のページを切り出したいということがあります。PDF文書を扱うのはAcrobat(≠Acrobat Reader)を購入するのが一番でしょうし、フリーのツールも多々存在しますが、ここはJavaでツールを作成してみたいと思います。 まず、第一歩としてPDF文書をページ単位でJavaで表示するPDFのビューアーを作成し、次にページを指定して切り出す機能を付けるという段階で進めていこうと考えました。 JavaからPDFを扱うオープンソースライブラリとしては、昔からの定番のiTextと、ApacheのPDFBoxが著名でしょうか。ぐぐっていると次のまとめページがありました。このページは分かりやすいです。 今どきのJavaのPDFライブラリ まとめ (2014年版) | WEB ARCH LABO iTextは商用ライセンスとAffero GPLのデュアルライセンスです。A
Oracle Blogsの主としてテクノロジー製品のエントリを日本語でご紹介します(オリジナルのエントリを投稿することもあります)。厳密性をご所望の方は原文をどうぞ。よい内容でしたら原文に対し、"Good Entry, thanks!"でもいいので、是非コメントお願いします(Typoや誤訳はコメント欄からどうぞ)。なお、このエントリは個人の見解であり、所属する会社の公式見解ではありません。また、エントリ内でご紹介している製品・サービスは国内導入時期が未定の場合もありますのでご了承下さい。 Good entries on Oracle Blogs are put into Japanese. Mainly this blog covers technology products. Opinions expressed in this blog is my personal one and d
Optionalは意図的にSerializableではなくなってますね。 でその意図としては、一旦Serializableにして出力形式を決めてしまうと、今後ずっとその出力形式を維持しないといけないことになるので、そのメンテナンスコストを嫌ったというのがあるようです。 このメンテナンスコストの中には、仕様が変えれなくなる、というコストも含みます。 なので、シリアライズしたい場合には、フィールドはnullを持つようにして、getterでOptionalに変換するということになると思います。 基本的にOptionalは、Optional-returnイディオムをサポートするもの以上ではない、ということをBrian goetzさんも書いています。 Shouldn't Optional be Serializable? そこで、Optionalの使い方としては、基本的にメソッドの戻り値としてだけ、
GUIを持つアプリケーションの設計では、ソフトウェアアーキテクチャパターン*1としてMVCパターンを使用し、MVCパターンを実現する上で、Modelの変更をViewやControllerへ通知する仕組みにデザインパターン*2としてObserverパターンを使用するのが古典的定番です。 ところが、Observerパターンを使ったModelには、Observableのリストを管理し、状態変更の際にリストに登録されるObserbable全てに通知する仕組みを実装する必要があり、結構な作業となります*3。 このModelからの通知をObserverパターンで実現する代わりに、イベントバスを使って実現すると、Modelの実装を簡潔にすることができます。Java SEではあまり事例を見かけませんが、Androidでは割とメジャーに使われているようです。 先日、Androidでイベントバスのライブラリを
Today's issue みなさん、新しいプログラミング言語を覚えるときってどうしてますか? 私はコンソールバージョンの オセロゲーム リバーシを実装することが多いです。 一通りの文法要素を試すことができる ルールが決まっているため仕様決めに悩まず、実装に専念できる そこそこのボリューム 凝ろうと思えば色々凝れる 今回も java8 勉強用にリバーシを実装し、せっかくなので 公開する ことにしました。java初心者のみなさん、よろしければ勉強の土台にでも、反面教師的なネタとしてでも、いかがですか。 [2016/1/1追記:細かなバグ修正等を行い、v1.0.0として正式版をリリースしました。] [2016/2/3追記:入門者向けの紹介サイト を作りはじめました。] ゲームとしても遊べます。モンテカルロ・シミュレーションを使ったAIプレーヤーは結構強いですよ! AIプレーヤーを自作して対戦さ
みなさん、Serializable のテストってどうしてますか?? え、やってない?! まさか、そんな、ご冗談を... java.io.Serializable の実装は、見かけに反してとても難しいです。(少なくとも私はそう感じます。) どのような実装ミスの危険があるのか、どのようなテストをすべきなのか。 本稿から何回かに分けて、Serializable 実装クラスに対する JUnit テストについて考えてみたいと思います。 おさらい:シリアライズ/デシリアライズ クラスのインスタンスが使われている間、そのオブジェクトはヒープメモリ上に展開されています。このメモリ上に "モヤっと" 存在しているオブジェクトを、ファイルに保存したりネットワーク越しに送信したりしようとすると、一列のバイト列に変換してやる必要があります。 これがシリアライズですね。 逆に、オブジェクトをファイルから読み込んだり
SubEthaMailのwiserで仮想SMTPを立ててjavaのメール送信をユニットテストする! 2015/1/9 · permalink java ユニットテスト メール送信はまだまだ業務で重要ですね。javaでメール送信をする処理をユニットテストしたいけどメールが大量に飛んでしまうのは困るし、誤って本番環境のメールアドレスにメールが飛んだら大変です。そんな時はwiserを使いましょう! SubEthaMail build.grade メール送信ユニットテスト 雑感 SubEthaMail GitHub - voodoodyne/subethasmtp: SubEtha SMTP is a Java library for receiving SMTP mail wiserができる事は以下の通りです。 jarのみで仮想SMTPを立てられる組み込みメールサーバ機能を持つ。 アプリケーショ
10. What is a serialVersionUID and why should I use it? http://stackoverflow.com/questions/285793/what-is-a-serialversionuid-and-why-should-i-use-it これは新人の誰もが通った道ではないでしょうか。Eclipseとかで「なんかserialVersionUIDなるもんが自動生成されたんだけどー。。。」という人、まわりにもたくさんいました The serialization runtime associates with each serializable class a version number, called a serialVersionUID, which is used during deserialization to verify
Javaでのデータベースのテストデータ作成にはDBUnitがよく使われますが、自分はDbSetupをオススメします。 DbSetup なぜDBUnitがイマイチなのか 自分も最初はDBUnitを使ってたのですが、以下の理由からしっくり来ませんでした。 DBを使ったテストでは少量のデータを使うことが多い ホワイトボックステストで大量のデータを使うことはほとんどなく、単一または複数のテーブルに対して、少量のデータを用意するケースがほとんどです。なので、テストごとにファイル(XML or Excel)を用意するのは面倒です。 テストコードとデータが分離している テストデータを外部ファイルに保存するため、テストコードとテストデータが分離してしまっています。そのため、何をテストしているのかが分かり辛いです。 そこでDbSetup そこで見つけたのがDbSetupです。DbSetupはテストデータをJ
JavaでのテストはJUnit4が使われていると思いますが、自分としては、それに加えてAssertJをオススメします。 AssertJ AssertJが使いやすい理由 JUnit4のassertThatと比べてAssertJが使いやすい理由は2つあります。 流れるようなインターフェース AssertJは「Fluent assertions for java」とトップページに大きく書かれているように、流れるようなインターフェースが最大の特徴です。いちいちドキュメントを調べなくても、IDEの補完機能で適切なメソッドを調べられるので、JUnit4のassertThatに比べて書きやすいです。 拡張がMatcherに比べて遥かに楽 Matcherの拡張対象は「比較方法」で、AssertJの拡張対象は「クラス」なので比較するのは適切ではないかもしれませんが、Matcherの拡張が靴の上から足を掻く感
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く