javaに関するmtzkyのブックマーク (82)

  • Visitorパターン

    ダブルディスパッチ Visitorパターンでは、データと処理を分けて、別々のクラスとして作る。そして、この2つのクラスが、互いに相手のメソッドを呼び出すことによって、連係して動作する。この仕組みをダブルディスパッチという。 具体的には、下記のようになっている。Acceptorインターフェースは、データを表す。処理を受け入れるもの、という意味で、Acceptorという名前になっている。Acceptor1, Acceptor2は、Acceptorインターフェースを実装したクラスである。Visitorクラスは、処理を表す。データを1つ1つ訪れて処理を行うもの、という意味で、Visitorという名前になっている。Visitor1は、具体的な処理を記述した、Visitorクラスのサブクラスである。 public interface Acceptor { public abstract void ac

    mtzky
    mtzky 2011/09/02
    visitor
  • オブジェクト指向エクササイズのススメ

    DevLOVE X Day1 C-5のセッションです。 ITの活用範囲の広がりとともに、費用・品質よりもデリバリを優先するプロジェクトも増えてきました。しかし「しっかり考えるよりも、作ってリリースしちゃおうぜ、正解なんて誰にも分からないんだから」というマントラを唱えながら、返済見込みの立たない大量の技術的負債を抱える。それが最善の選択なのか、もう少しだけ立ち止まって考えてみませんか? YAGNIという言葉を便利に使いすぎてはいませんか? コードを書きなぐるのと、ちょっと考えて設計して作るのとで、そんなに開発スピードに違いがありますか? 考えてみたいと思います。

    オブジェクト指向エクササイズのススメ
    mtzky
    mtzky 2011/09/02
  • 試験管のなかのコード :: Maven2 で依存するライブラリも jar に格納する方法

    [Maven] Maven2 で依存するライブラリも jar に格納する方法 通常 Java のアプリケーションは複数の jar で構成されることが多い。 log4j、Jakarta Commons、・・・といったライブラリを普通に使うと数十の jar になってしまうこともしばしば。 Java Web Start を使わずに、jar を Web サーバ上に設置してダウンロード→ダブルクリックで実行、としたい場合など複数の jar に分かれていると困ることもある。 Maven2 では maven-shade-plugin を利用することで依存するライブラリも含んだ jar を作成することができる。 Maven Shade Plugin http://maven.apache.org/plugins/maven-shade-plugin/index.html maven-shade-plugi

    mtzky
    mtzky 2011/08/25
    jar
  • Javaのhello worldの読み方 | mwSoft

    前書き お馴染み、hello worldのソース。 class Hello { public static void main(String[] args) { System.out.println("hello world"); } } このコードはコンパイルされると、こんなバイトコードになります。 ca fe ba be 00 00 00 32 00 22 07 00 02 01 00 05 48 65 6c 6c 6f 07 00 04 01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 01 00 06 3c 69 6e 69 74 3e 01 00 03 28 29 56 01 00 04 43 6f 64 65 0a 00 03 00 09 0c 00 05 00 06 01 00 0f 4c 69 6e 65 4e

    mtzky
    mtzky 2011/08/15
  • Java EE6で単体テストや結合テストを自動化する方法について - 達人プログラマーを目指して

    今週水曜日に、オラクル青山センターで行われたGlassfish Japanユーザーグループの勉強会でJava EE6のお話をさせていただきました。勉強会のスライドとビデオは以下のリンク先にあります。 Glassfish勉強会(JavaEE6について) View more presentations from Ryo Asai http://www.ustream.tv/recorded/16552906 今回は基的に私がこのブログで書いてきたJava EE6関連の情報について紹介させていただきました。欲張って少し内容を詰め込み過ぎたところがあったかもしれませんが、Java EE6を使った単体試験や結合試験の自動化については、説明をスキップしてしまい、ちょっとわかりにくくなってしまいました。ここで、あらためてJava EE6上のアプリケーションのテスト自動化について簡単に補足させていただき

    Java EE6で単体テストや結合テストを自動化する方法について - 達人プログラマーを目指して
    mtzky
    mtzky 2011/08/13
    JavaEE
  • Mirage - SQL Centric Database Access Library - About

    About Mirage Mirage is a SQL centric database access library for bussiness applications.

    mtzky
    mtzky 2011/08/10
    Mirage
  • たけぞう瀕死ブログ

    以前Presto/Trinoでのサブクエリ重複実行問題について書いたのですが、 takezoe.hatenablog.com その後調べたところ、最近のバージョンのPrestoDBではCTEの最適化機能が実装されているようなので少し調べてみました。 以下は公式サイトのCTE最適化機能に関するドキュメントです。 prestodb.io 以下のイシューを起点にして作業が進められているようです。 github.com CTEの出力を一時テーブルに書き出し、それをスキャンするという実装のようです。 github.com 当初は単純にすべてのCTEをマテリアライズするかどうかしか選択できなかったようですが、その後強化されてCTEにプロジェクションやフィルタをプッシュダウンできるようになったり、参照回数が閾値以上の場合にマテリアライズするといったことができるようになっています。 github.com

    たけぞう瀕死ブログ
    mtzky
    mtzky 2011/08/10
    Mirage
  • Java 暗号化拡張機能 JDK5.0

    Java Is the Language of Possibilities Java is powering the innovation behind our digital world. Harness this potential with Java resources for student coders, hobbyists, developers, and IT leaders.

    mtzky
    mtzky 2011/07/14
    DOM
  • CAL10N Home

    Compiler Assisted Localization (CAL10N) Compiler Assisted Localization, abbreviated as CAL10N (pronounced as "calion") is a java library for writing localized (internationalized) messages using resource bundles you are already familiar with, but with much greater comfort. Features java compiler verifies message keys used in source code tooling to detect errors in message keys native2ascii tool mad

  • 「わかる!JavaVM ― 2時間でわかる?JavaVM入門」に行ってきた - 永遠に未完成

    わかる!JavaVM ― 2時間でわかる?JavaVM入門 : ATND Java の処理系は以前趣味ですこーしだけかじった程度の私が参加してきました。 例によってメモとか取ってないので記憶の断片から感想をば。 クラスローダーについて - @ashigeru 発表資料: http://www.slideshare.net/ashigeru/classloader クラスローダーの移譲モデルとかそういう話。 クラスローダーについてはよく知らなかったので、とても勉強になりました。 Stack on JavaVM - @skrb 発表資料: http://www.javainthebox.net/publication/20100806JVMseminar/stackmachine.html Java in the Box の人。やけに余談が多くておもしろかった。あとスタック操作時の効果音いい。

    「わかる!JavaVM ― 2時間でわかる?JavaVM入門」に行ってきた - 永遠に未完成
    mtzky
    mtzky 2011/06/28
  • JSOS - servlets office suite (servlets)

    34. TreeView-servlet 35. Classifieds 36. Portal servlet 37. Hide link From our users: "Let me first say you are one of the few support sites that replied so fast to my query, and the _only_ that inquired if everything was fine. I am absolutely surprised (even shocked!) by this quality of service." 38. JCRM (CRM/HelpDesk systems building tool) 39. JFAQ (FAQ building tool) 40. Notepad servletWAP/WML

  • eclipse + maven で gwt 開発 - mitoma_ryoの日記

    eclipse + maven(m2eclipse) + Google Plugin for Eclipse を使って GWT 開発をしようと思ったら、意外と面倒くさかったので設定のメモ。 まずは、普通に maven の war プロジェクトを作ります。 だいたいこんな感じになるはず。 SampleProject -- pom.xml `-- src |-- main | |-- java | |-- resources | `-- webapp | `-- WEB-INF | `-- web.xml `-- test |-- java `-- resources んで、 pom.xml を以下のように書き足します。 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XM

    eclipse + maven で gwt 開発 - mitoma_ryoの日記
  • 一歩先行くJavaプログラマが読むべきオープンソースソフトウェア10選 - 設計と実装の狭間で。

    10万行コード読んだらJava分かるよってTwitterに書いたらすげぇ勢いでRTされたので、調子に乗って捕捉エントリ書くよ。 Java Core API JDKインストールしたディレクトリに入ってるsrc.zipを展開すると入ってるから読むと良いよ。 すぐ近くにあるのから読むってのはメンタル的に楽でいい。 厳密にはOSSじゃなくて単に公開されてるってだけなんだけども、JavaプログラマなのにコアAPIのコード読んでないとか無いよね? どれから読めば良いか分からんかったら、 java.lang java.util java.io java.text 辺りをまずはキチンと理解すること。当然コードを読み終わったら、それを使ってコードを書く事。 OpenJDK http://hg.openjdk.java.net/jdk7/jdk7 OpenJDKを読むことで、プログラム言語してのJavaではな

    一歩先行くJavaプログラマが読むべきオープンソースソフトウェア10選 - 設計と実装の狭間で。
  • 文字列を指定の文字エンコーディングでのバイト数で切る - kameidの備忘録 - Sharpen the Saw!

    文字列を指定の文字エンコーディングでのバイト数で切る処理を作ってみた。固定バイト長の文字コードであれば指定のバイト長で切る処理というのはさほど難しいところはないのだが。 たとえば、"1234" という ASCII 文字列を、3 バイトで切りたい場合、"123"。文字数とバイト数が一致するため、もっとも簡単だ。 しかし、ShiftJIS 等の主要な文字コードでは、文字種によってバイト長が変化する。結局のところ、指定のバイト数に何文字まで入るか、というのはその文字コードに変換してみないとわからない。 Java では文字の内部表現は普通 UTF-8 だけど、DB では EUC で、カラム長は 256 バイト。というような場合。カラム長がバイト指定なのが全部悪いんだが。 で、先日見たとあるロジックはこの「文字列を指定の文字エンコーディングでのバイト数で切る処理」を実装してたのだが、なかなか気になる

    文字列を指定の文字エンコーディングでのバイト数で切る - kameidの備忘録 - Sharpen the Saw!
  • GC改善に役立つ新しいJVMパラメータ | 関口宏司のLuceneブログ

    一定期間更新がないため広告を表示しています

    GC改善に役立つ新しいJVMパラメータ | 関口宏司のLuceneブログ
    mtzky
    mtzky 2011/05/12
  • 5分で理解するProject Coin - No Programming, No Life

    はじめに そろそろJDK7が登場する時が近づいてきたのでJavaプログラマならProject Coinを先取りして予習しておくべき時期になってました。Project CoinというのはThe Java Community Process(SM) Program - JSRs: Java Specification Requests - detail JSR# 334となっているもので、Javaのコードをちょっとだけ簡単にしてくれるような文法の変化をもたらしてくれます。全部で5つありますので、一つ一つ見て行きましょう。 1. switch文でStringを (String in switch) 今はまだswitch文は整数値(char, byte, short, int)とそのラッパークラスしか使えないのはご存知のとおり。例えば以下のような文字列比較のif-else文を考えてみて下さい。 i

    5分で理解するProject Coin - No Programming, No Life
    mtzky
    mtzky 2011/05/06
  • 非対話的デバッガ YouDebug - 川口耕介のブログ

    バグ修正はプログラマの仕事の一つですが、このうちのかなりの時間は問題を再現することに費やされます。 症状からバグの全容が推察できる時もあるのですが、多くの場合には、手元で問題を再現し、更なるデータを集めることによって始めてバグが理解されるからです。しかし、環境に依存する問題などは再現が難しい場合もあります。どうしたらよいでしょうか。 ロギングというのがよく行われる解決・予防策ですが、「デバッガを走らせて変数xの値を教えてくれればいいのに!」と思った事があるのは私だけではないと思います。ロギングと異なり、デバッガは予めプログラムに障害発生を予期するコードを埋め込んでおく必要はありません。また、呼び出し元のローカル変数をアクセスしたり、任意の式を評価したり、あるいは変数の値を変更することもできてしまいます。当たり前ですが、障害分析ツールとしてはデバッガはずっと強力だからです。 ではなぜユーザー

    非対話的デバッガ YouDebug - 川口耕介のブログ
  • うさぎとSEのブログ: Javaで実行時にクラスパスを追加する

    会社で単体テストを実行する場合、構成管理上特殊なディレクトリ配置をとっています。そんな特殊な方法をとらなくてもと思う方もいるかもしれませんが、具体的にはお見せできないのですが、現状の方法は人の開発環境に依存せず、だれがいつでも、どこのパスにsvnからチェックアウトして実施しても実行ボタンを押すだけでテストを実行させることが出来ます。これにより、初心者や新規参画者がテストを始めるまでの時間がこれまでかかっていたのですが、環境の調整を意識しなくてもテストができるため、保守効率が高くなっています。 ついでに言えば、テストプロジェクトにテスト実行用のデータを単体テスト用に配置することも無く、実行前に単体テストに必要な情報を事前にコピーしてきて利用するようになっています。 これによって、単体テスト用の設定ファイルとリリース用の設定ファイルに差異が出てしまうという事態を避けています。 データを一元管理

  • Efficient data transfer through zero copy

  • Apache Tomcat 6.0 (6.0.53) - Class Loader HOW-TO

    Like many server applications, Tomcat installs a variety of class loaders (that is, classes that implement java.lang.ClassLoader) to allow different portions of the container, and the web applications running on the container, to have access to different repositories of available classes and resources. This mechanism is used to provide the functionality defined in the Servlet Specification, versio

    mtzky
    mtzky 2011/05/05
    classpath