タグ

Javaに関するkakku22のブックマーク (155)

  • GoFの23のデザインパターンを,Javaで活用するための一覧表 (パターンごとの要約コメント付き) - 主に言語とシステム開発に関して

    GoFデザインパターンの一覧表と,活用のためのコメント,および入門者が独学するためのリンク集(サンプルコード付き)。 入門者の独学を支援するために,このページのURLを提示して熟読させ,各パターンを短時間で効率よく学んでもらう。 デザインパターンはプログラマの常識だ。 Java使いかどうかは問わない。 にも関わらず,入門書を買ったまま,途中で挫折する人が多い。 挫折の原因は,パターンの数が23もあって,多いからだろう。 全パターンをすんなり覚えてもらうためには,各パターンごとに 「要するにこういう目的のパターンなんだ。」 「10文字で表現すると,パターンの意味はこうなんだ。」 という要点・質を,短いコメントで伝えれば助けになるだろう。 こういった学習を通して,Java言語の「設計思想」も併せて感じ取ってゆけるはず。 全パターンの一覧表(要約コメント付き) 全パターンについて,10文字以内

    GoFの23のデザインパターンを,Javaで活用するための一覧表 (パターンごとの要約コメント付き) - 主に言語とシステム開発に関して
  • これからの「Java I/O」の話をしようwww (9) : Files クラスのメソッド 〜ディレクトリの階層を走査〜 - 倭マン's BLOG

    Java nio の API を見ていくシリーズ(目次)。 今回は、Files クラスに定義されている、ディレクトリ階層を走査するメソッドとそれに関連するクラス群を見ていきます。 java.nio では、ディレクトリ階層を走査す方法として、デザイン・パターンの1つである Visitor パターンを実装するためのインターフェース、クラス、メソッド等が導入されています。 参考 The Java Tutorials 「Walking the File Tree」 ディレクトリ階層の走査に関係するクラス、メソッドまずはディレクトリ階層の走査を行う際に使用するインターフェース、クラスを見ていきましょう。 おそらく、必ず使うことになるのは Files#walkFileTree() メソッド FileVisitor インターフェース SimpleFileVisitor クラス(このクラスは必ずしも使う必

    これからの「Java I/O」の話をしようwww (9) : Files クラスのメソッド 〜ディレクトリの階層を走査〜 - 倭マン's BLOG
    kakku22
    kakku22 2013/09/17
  • Javaプログラマであるかを見分ける10の質問-回答編 - やさしいデスマーチ

    想定を超えた反応がありましたので、予定はしていなかった回答編をお送りします。ですが、正確な解答を書いても面白くないので、これをネタに面談をした場合に、自分ならどんなポイントを持って選考するかをまとめてみました。 はじめに このエントリーの質問の意図は「優れたJavaプログラマ」を見つける事ではありません。「最低限のスキルを持った戦力が欲しい」という状況です。したがって、優れた指摘をしてくるのであれば超したことありません。設問について議論が発生するならば、この設問を投げる必要がなかったということです。 Javaを詳しく知っている人からすれば間違いでは?曖昧な質問では?と感じる設問があるのは確かです。しかし、優秀な人をテストしたい訳ではないのです。したがって、正確性とか厳密性については求めません。「だいたいあっている」ならば前提条件である「中堅プログラマの補充」の条件を満たすからです。 中堅プ

    Javaプログラマであるかを見分ける10の質問-回答編 - やさしいデスマーチ
  • FizzBuzzを入社試験に出したらどこを見るか - regtan’s TechNote

    宗教戦争の恐れが多分にあるけど僕だったらどのあたりを注目するかというのを書いてみようとおもいます。基的にはJavaでの実装の話です。 ソースはregtan/fizzbuzz - GitHub ターゲットとしてる人物像などなど 中途採用や派遣業者からの紹介でJavaの経験があると言われている人を対象にしていて、プロジェクト内での実装を担当してもらえるような人物を求めています。回答の形式としては、その場で出題しエディタあるいはIDEを使って書いてもらう感じです。 FizzBuzzについて if文とfor文と除算処理さえわかればできる処理なので基に忠実に書けば問題なく実装できる処理です。処理の仕様としては、1〜100までの数字を順に、3の倍数の時はFizz、5の倍数の時はBuzz、3の倍数かつ5の倍数の時はFizzBuzz、それ以外の場合はその数字を標準出力に表示するという感じです。詳しくは

    FizzBuzzを入社試験に出したらどこを見るか - regtan’s TechNote
    kakku22
    kakku22 2013/09/14
    何で&&じゃなくて&で比較してるのだろう?左辺でfalseならその時点でifから抜けた方が良さそうだけれども.
  • Javaプログラマが読むべき7個のAPI実装 - Kengo's blog

    10周くらい遅れている感がありますが気にせず紹介します。なお実装はJDKによって異なる可能性があるので、お手元のJDKに付属しているコードをご覧になることをおすすめします。 java.util.concurrent.atomic.AtomicInteger ロックフリーでスレッドセーフな実装を実現ことで有名なjava.util.concurrent.atomicパッケージの代表格。そんなすごいことをどう実装しているのか?というのは誰もが1度は気になるはず。openjdk7のコードを読むとこんな感じです。 public final int incrementAndGet() { for (;;) { int current = get(); int next = current + 1; if (compareAndSet(current, next)) return next; } } C

    Javaプログラマが読むべき7個のAPI実装 - Kengo's blog
    kakku22
    kakku22 2013/08/19
    Javaプログラマが読むべき7個のAPI実装
  • staticおじさん達に伝えたい、手続き指向とオブジェクト指向の再利用の考え方の違いについて - 達人プログラマーを目指して

    何が良いプログラムかという点はもちろん人やコンテキストによって異なりますが、少なくともプログラマーとしての私の信念としては、 機能拡張や変更が容易なプログラム 単体試験によって正しく動作することの検証が容易なプログラム どういった内容が記述されているか理解しやすいプログラム といったものこそ、「品質の高い」プログラムが持つべき性質として、まず真っ先に挙げるべき事項であると考えています。もちろん、前提として顧客の要件に従うということは大切なことです。しかし、一般に要件は長期にわたって変更されるものですし、使い捨てのプログラムを除けば、プログラムを長期にわたって保守するコストという点も見過ごすべきではありません。したがって、ユーザーの目には触れない上記の性質をもっと重視すべきだと思うのです。 DRYの原理 上記のような性質を満たすプログラムを作る上で大切になってくる原理として、DRYの原理とい

    staticおじさん達に伝えたい、手続き指向とオブジェクト指向の再利用の考え方の違いについて - 達人プログラマーを目指して
  • Javaのクラス宣言5種+α - プログラマーの脳みそ

    Javaのクラス宣言には5種類ある。 トップレベルクラス・ネストしたクラス・内部クラス・ローカル内部クラス・匿名クラス(無名クラスとも言われる)の5種類だ。 今回はこの5種類のクラス宣言のおさらい。 トップレベルクラス これは普段使っているクラス。拡張子が.javaのファイルを作り、そのファイル名とクラス名を合致させなくてはいけない。そのjavaファイルのトップレベルに位置する。 ネストしたクラス 「ネストしたクラス」(Nested class)とはクラスの中にクラスがネストしている状態。トップレベルクラスの内側にstaticキーワードをつけてクラス宣言を行う。 public class Outer { public static class Nested { } } このネストしたクラスは、トップレベルクラスと同等の機能性を持つ。 クラス名はOuter.Nestedという名前で扱われるが

    Javaのクラス宣言5種+α - プログラマーの脳みそ
    kakku22
    kakku22 2013/08/11
  • JVMのチューニング - ITエンジニアとして生きる

    前回、JVMとGCのしくみ - ITエンジニアとして生きるでJVMとGCのしくみについて書いた。 今回はその続きということでJVMのチューニングについて書きたいと思う。 JVMチューニングって -Xms ・・・ ヒープ全体(New領域+Old領域)の初期値 -Xmx ・・・ ヒープ全体(New領域+Old領域)の最大値 くらいしか話題に上がらないし意識しないことが多い(気がする)。 でもホントはこれだけではダメで、前回のようにPermanent領域、New領域、Old領域を意識したチューニングが必要になる。 VMチューニングを考えるその前に・・・チューニングの話をする前にまずVMの起動モードについて話したいと思う。 VMには大きく以下2つの起動モードがあり、それぞれ以下のような特徴を持つ。 ◆クライアントVMモード 起動時間を短縮し、メモリサイズを縮小するように調整されている。 VM起動時

    JVMのチューニング - ITエンジニアとして生きる
  • JVMとGCのしくみ - ITエンジニアとして生きる

    先日職場でJVMの話をしてた。 ちょうどいい機会だからちょっとまとめたいと思う。 JVMの構成まずはJVMの構成について。JVMには3つの領域が存在する。 Permanent領域(非ヒープ領域) New領域(ヒープ領域) Old領域(ヒープ領域) Permanent領域にはJVMにロードされたクラスやメソッドの情報、New領域にはインスタンス化されたオブジェクトの情報、Old領域には寿命の長いオブジェクトの情報が管理される。(「寿命の長い」については後述のScavenge GCを参照。) Permanent領域は非ヒープ領域、New領域とOld領域はヒープ領域となる。 非ヒープ領域には基的にGCは走らず、JVM起動時に静的な情報が管理される。(※) 一方、ヒープ領域はインスタンス化されたオブジェクト情報といった動的な情報が管理され、GC対象となる。 ※ユーザ定義のクラスローダーが存在する

    JVMとGCのしくみ - ITエンジニアとして生きる
  • AntでJUnit 4.10のテストを実行する

    に配置しています。 Eclipseからだと、このように見えています。 build.xml コンパイルとテストを実行し、最終的に実行可能なjarファイルを出力することを想定しています。 jarファイルにMainTest.classを含めたくないので、こんな方針で行きます。 ・Main.javaをコンパイルし、buildフォルダに出力する。 ・MainTest.javaをコンパイルし、testbuildフォルダに出力する。 (この時、Main.classとjunit.jarにclasspathを通す必要あり) ・JUnitによるテストを実行する。 (この時、Main.classとMainTest.class、junit.jarにclasspathを通す必要あり) ・buildフォルダのclassをjarで固める。 あまりbuild.xmlを書き慣れていないので、ちゃんと流儀に添えているか 微妙

    AntでJUnit 4.10のテストを実行する
  • 数多くのコンストラクタパラメータに直面した時にはビルダーを検討する - Strategic Choice

    package asakichy.第02章オブジェクトの生成と消滅; import static org.hamcrest.Matchers.*; import static org.junit.Assert.*; import org.junit.After; import org.junit.Before; import org.junit.Test; @SuppressWarnings("unused") public class 項目02数多くのコンストラクタパラメータに直面した時にはビルダーを検討する { @Test public void 問題点_コンストラクタパラメータの数が多いと使いにくい() throws Exception { /** 【詳細】 */ description.append(1).append("何番目が何のパラメータかわかりにくい。"); descrip

  • 複数の場所にあるファイルをまとめて処理 - Javacタスク(コンパイル) - Apache Antの使い方

    コンパイルを行う時に、1つのディレクトリ(及びそのサブディレクトリ)に含まれるファイルだけではなく、複数のディレクトリにまたがってまとめてコンパイルを行うことが出来ます。複数のディレクトリを指定する場合は「srcdir」属性にコロン(:)またはセミコロン(;)で区切って複数のディレクトリを指定します。 例えばカレントディレクトリの中に「src」というディレクトリと「src2」というディレクトリがあり、両方のディレクトリに含まれる全てのファイルをコンパイルする場合の記述は下記のようになります。 <?xml version="1.0" encoding="Shift_JIS" ?> <project name="antsample" default="compile"> <target name="compile"> <javac srcdir="./src;./src2" destdir="

  • Google Sites: Sign-in

    Not your computer? Use a private browsing window to sign in. Learn more about using Guest mode

    kakku22
    kakku22 2013/06/24
    しっかり日本語訳されてて助かる.
  • IBM Developer

    IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

    IBM Developer
  • 環境依存の情報の管理やHudsonのジョブ設計など - wyukawa's diary

    環境依存の情報(DBサーバやメールサーバのIPアドレス、ファイルパスなど)をどう管理していくかは重要です。ローカルと結合環境では当然これらの値が違ってくるでしょう。 僕がやっているのはこれらの設定が書かれたファイルをリポジトリに置く際はローカルにあわせたものとし、ビルドする際に結合環境に切り替える。結合環境用の値は別途ビルド用の設定ファイルに書いておく。 例えばHibernateを使っているならhibernate.cfg.xmlには jdbc:oracle:thin:@localhost:1521:XE というローカル用のDB接続情報を書いておきます。 でビルドする際にこの値を結合環境用に jdbc:oracle:thin:@dbserver:1521:sample のように書き換えます。この情報はビルド用の設定ファイル(例:Antならbuild.properties)に書いてビルド時に置

    環境依存の情報の管理やHudsonのジョブ設計など - wyukawa's diary
  • Home | Apache Ivy ™

    Apache Ivy™ is a popular dependency manager focusing on flexibility and simplicity. Find out more about its unique enterprise features, what people say about it, and how it can improve your build system!

  • apache-Ivyについて知ってることを書いてみるよ : アフィリエイトでたばこの値上がりを取り戻したいブログ

    11月25 apache-Ivyについて知ってることを書いてみるよ カテゴリ:プログラミング apache-Ivyという依存性解決のためのantプラグインがあって「Mavenよりも融通が効いていいツールだなあ」と思いながら使っていたのですが、日語の情報が少なくて使い方が分からなくて往生する日々が続いていました。 最近やっと自分の中で使えるようになってきたかなーというくらいになってきたので、まとめてみようと思います。 apache-Ivyって何? Javaライブラリの依存性を解決してくれるツールです。と言ってもよくわかりませんね。Javaでプログラミングするときにライブラリを使うじゃないですか、commons-langとか、log4jとか、Webアプリケーションだったらstrutsとかwicketとか?そーゆーのってオープンソースでインターネットに公開されていたりするので、入手するのは簡単

  • 複数プロジェクトがある場合のビルド環境 - @ikikko のはてなブログ

    環境依存の情報の管理やHudsonのジョブ設計など - watawata日記に触発されて。自分もちょうど考えてることがあったのですが、140字ではとても足りないのでブログにまとめてみます。 ちなみにJava開発の話です、はい。 前提 「ビルドスクリプトは、IDE/CIに依存しないこと」が大事だと考えています。(Java開発においては)IDE上で開発する方が大多数だと思いますが、コマンドプロンプト・シェルスクリプト上でビルドできて、かつCI上でも同様に実行できること。これがビルド環境を考える上で大事なことですね。 プロジェクトの分類 ここでは、2つの要素でプロジェクトを分類します。 依存ライブラリ管理の仕組みが有るか? IDE上で、プロジェクト間での直接参照が有るか? 依存ライブラリの管理というのは、平たく言えばMaven/Ivyを導入しているか?ということです。IvyはAntベースで、Ma

    複数プロジェクトがある場合のビルド環境 - @ikikko のはてなブログ
  • Apache Ivyの紹介と基本的な使い方 - 達人プログラマーを目指して

    Apache Ivyについてはブログでも何回か用語自体は取り上げてきましたが、現状日語での情報が限られるためか、AntそのものやMavenに比べるとユーザーが少ないように思われます。ここで基的な使い方やMavenとの違いについて簡単に紹介させていただきたいと思います。 Apache Ivyとは 家のホームページは以下の通りです。 Home | Apache Ivy ™ もともとはJayasoftという組織で開発されていたツールですが、バージョン2.0以降、Antの関連プロジェクトとしてApacheプロジェクトの元に加わっています。(Apacheというブランド名はツールを組織に導入する際に結構重要ですね。) 上記のホームページでは「アジャイルな依存性管理ツール」として紹介されていますが、Mavenの機能の中からビルド機能やプロジェクト管理機能を無くして、ライブラリーの依存関係の管理に

    Apache Ivyの紹介と基本的な使い方 - 達人プログラマーを目指して
  • 連載: IBM Watson Workspace #鬼わか アプリケーション開発: 第 7 回: IBM Watson Workspace で AI を利用したアプリ連携の実現 #鬼わか 解説(前編)

    IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

    連載: IBM Watson Workspace #鬼わか アプリケーション開発: 第 7 回: IBM Watson Workspace で AI を利用したアプリ連携の実現 #鬼わか 解説(前編)