タグ

programmingとjavaに関するhiro360のブックマーク (250)

  • 2009-08-10 - marsのメモ - Go Ahead: Next Generation Java Programming Style

    http://codemonkeyism.com/generation-java-programming-style/ 次世代Javaプログラミングスタイルだって。ちょっと面白かった。こうゆうスタイルが身に付いたらプログラマのステージがひとつ上がりそうだけど,世間一般に普及させんのは難しいんだろうなとオモタ。 1.Final is your new love. (変数の)final宣言を好めって良く聞くね。気持ちもはわかるけど,徹底するのは大変。 2.No setters. ミューテータ(setter)作んないでコピーコンストラクタ使えと。オブジェクトの普遍性不変性にこだわりますな。 アクセサ(getter)も作んな,って言ってるけど,ちょっと分かんなかった。→ Tell, Don't Ask | The Pragmatic Bookshelf 3.Do not use loops for

    2009-08-10 - marsのメモ - Go Ahead: Next Generation Java Programming Style
  • Sign in - Google Accounts

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

  • HOT reloadingとClassLoaderを理解しよう - ひがやすを技術ブログ

    JavaではClassはClassLoaderに読み込まれます。これはほとんどの人が知っていると思います。AOPを使うときのエンハンスされたクラスも同様にClassLoaderに読み込まれます。 これらの情報は、パーマネント領域に格納されますが、ClassLoaderがGCされると解放されます。 Seasar2のHOT reloadingでは、リクエストの度にClassLoaderを作って、そこにClassをロードし、そのClassLoaderは、リクエストが終わったら破棄しているので、Classの情報は、リクエストごとに破棄されています。 HOT relodingによって、パーマネント領域が使いつくされることはありません。 さらっと書きましたが、きちんとClassLoaderを破棄するのは、かなり大変です。リフレクションの情報がキャッシュされているとそれだけで破棄されなくなってしまうから

    HOT reloadingとClassLoaderを理解しよう - ひがやすを技術ブログ
  • 第13夜 Java SE 6はnative2ascii使わなくていいのはみんな知っていると思うが - しんさんの出張所 はてなブログ編

    みなさまJava SE 6への移行は進んでおりますでしょうか。もう7月になったということはJava2 SE 5.0のサポート期間は4ヶ月をきったということですよ。 そこで今後はJava SE 6での地味な改良をあげていきたいと思う。派手な話題はみんな飛びつくけど、地味な改良が実はうれしいのだ。 最初はみんな知ってる小ネタから。 J2SE 5.0からPropertiesがXMLを扱えるようになったのはご存知のとおり。それまでは7bitなファイルしか扱えなかった。理由はPropertiesクラスが1.0のときに登場した古参クラスであるということ。1.0はマルチバイトが対応しておらずみんなこんな感じだった。そもそもHashTableを継承してるのはどうよ、とかいいたいことはたくさんあると思うのだが、Javaが発表されたのが14年前。その前からあったことを考えると仕方あるまい。C++ですら標準化さ

    第13夜 Java SE 6はnative2ascii使わなくていいのはみんな知っていると思うが - しんさんの出張所 はてなブログ編
  • 5年後に後悔しないJavaプログラムの書き方 - L'eclat des jours(2009-07-02)

    _ 5年後に後悔しないJavaプログラムの書き方 ここ数日、死ぬほど後悔しまくっているので、あらためて(というのは、数年前にも一度後悔しまくって、そのときの知見はあらかた処方箋とかコーディングの掟に書いているからだが)後悔しないための書き方をいくつか紹介する。 とにかく、ファクトリメソッドパターンを使うこと。 これは当に重要。しかも簡単でありながら効果は絶大。 だめな例。 public class FooBar { private Connection conn; ... protected void setup() { ... conn = DriverManager.getConnection(url); ... } urlを指定することや、DriverManagerの実装を交換すれば良いだろうと想定していても(というか、Connectionならそういう方法もあり得るが、そうはいかな

  • 【ハウツー】JavaでWebブラウザをドライブ! WebDriverを使ってみよう (1) WebDriverとは | エンタープライズ | マイコミジャーナル

    WebDriverとは WebDriverはWebブラウザを操作するためのJavaライブラリだ。WebアプリケーションのUIテストツールとして使用することが想定されており、JavaScriptを多用しリッチなUIを提供するアプリケーションのテストに効果を発揮する。 サポートするブラウザはFirefox、Safari(MacOS Xのみ)、Internet Explorer(Windowsのみ)となっている。また、実際のブラウザは使わずHtmlUnitを使用することも可能だ。この場合、Rhino(Javaで実装されたJavaScriptエンジン)を使用してブラウザ上で動作するJavaScriptの動作もエミュレートすることもできる。また、試験的にiPhone用のドライバの実装も進められているようだ。 同種のテストツールとしてはすでにSeleniumなどがあり、多くのユーザに利用されている。し

  • Program Island

    Program Island へようこそ! このサイトでは、プログラムに関する様々な情報を載せています。 Android (2010/12/25) Limy Eclipse Plugin (2012/02/25) Check! Ruby on Rails (2009/04/01) Limyweb (2010/01/27) Limy Articles (2009/02/14) Eclipse簡易マニュアル (2008/12/23) / Eclipseプラグイン開発 (2008/12/23) Java (2012/03/10) New! Tomcat (2007/06/29) Linux (2010/04/14) Git (2012/02/26) New! / Subversion (2007/01/11) J2EE , JBoss (2007/01/13) / JBoss + EJB3 (2

  • プログラマー面接時の技術的な質問事項(アプレッソ版) : 小野和俊のブログ

    技術者・SE・プログラマ面接時の技術的な質問事項というエントリをはてブで見かけたのだが、私もjavaプログラマーの面接を割とよくやっているので、よく質問する内容をまとめてみた。 (ちなみに、基的にコーディング面接の形態を取っている) プロジェクトの性質にもよると思うが、私の場合には、情報処理技術者試験的に基礎が満遍なく抑えられているかどうかよりも、 すぐ答えが見つからないような課題に対して、きちんと自分でやり方を考え、対応することができるか 「変な」コードをコミットしたりしないか(見つけにくいバグを混入させるとか、汚いとか、遅いとか)といった点を重視している。 まず、何を知っているかよりも、どんなものを作れるか、どんなことができるか、という質問。 ここで強烈な回答が来る人は、たいていここより下の質問は「あー、はいはい」という感じでサラッと答えてくることが多い。 これまでに携わってきた開発

    プログラマー面接時の技術的な質問事項(アプレッソ版) : 小野和俊のブログ
  • 外部イテレータと内部イテレータ - kaisehのブログ

    Javaでコレクションクラスを作ってそのイテレータを実装する場合、Javaにはクロージャが無いので、外部イテレータを使うことがほとんどだと思います。 例えばint値のコレクションとイテレータを自作するときは、まず以下のようにIntIteratorとIntIterableを用意して public interface IntIterator { boolean hasNext(); int next(); } public interface IntIterable { IntIterator iterator(); } 以下のように実装します。 public class IntArray implements IntIterable { private int[] array; private int length; public IntArray(int[] array) { this.a

    外部イテレータと内部イテレータ - kaisehのブログ
  • デバッグ手順(スタックトレース重要) - jfluteの日記

    よくある会話 こないだ久しぶりにある方とお会いして、色々情報交換したのですが、「StackTraceをみないでデバッグし始めてしまう人」はだいぶ少なくなってきたように思っているのですが、まだまだ結構こういうことがあるようです。 X「例外がでてるのですが一時間かけても原因がわからなくて...」 Y「お、じゃあStackTraceは見た?」 X「いやみてないです」 Y「ちょっと見せてみて」 X「これです」 Y「(StackTrace見てすぐに)ああもう原因わかった」 X「...」 Y「...」 ポイントは二つ 大きく二つのポイントがあると考えました。 A. 例外発生時のデバッグ作業が手順化されてない B. スタックトレースの見方がわからない A. 例外発生時のデバッグ作業が手順化されてない 例外が発生したら、まず何をするべきか!? A-1. 例外クラス名・例外メッセージを読む A-2. スタッ

    デバッグ手順(スタックトレース重要) - jfluteの日記
  • enumをもうちょっと使う - しげるメモ

    enum basics - しげるメモで基的なことをおさらいしたので、私がよく使ってるenum関係のパターンをいくつか。 ステートパターンをenumで enumを使うようになってまず一番変わったのが、 private static final int SOME_STATE = 1; みたいな典型的なアンチパターンを書かなくなりました。これはステートパターンを非常に書きやすくなったためだと思います。 よくこんなコード書いてます。当はもうちょっとロック処理とかを書かないとだめですが、ステート部分は大抵こんな感じです。 public class Lifecycle { // 初期状態はINITIALに固定 private State state = State.INITIAL; // 外側に公開する状態遷移メソッド public void start() { state = state.st

    enumをもうちょっと使う - しげるメモ
  • enum basics - しげるメモ

    仕事柄、Javaのenumを使うことが多いのですが、あまり世の中のプログラムでenumを全力で使ってるところをあまり見かけません。 ということで、自分でもどうなのと思うときがちらほらあるenumの使い方をまとめてみようと思いますが、とりあえず今回は普通の復習用に基的な機能を。 型付の定数が宣言できる enumはもともとCのint形の値に名前をつけただけじゃなくて、型安全な列挙定数が作れるってことでJava5から導入されました。 こんな感じ。 public enum Sample { HOGE, FOO, BAR, } で、世の中で見かけるenumは上記くらいのシンプルなのが多いみたいです。 クラス体が宣言できる 定数定義のあとに ";" で区切ると、以降をクラスの体としてメソッドとか定義できます。 public enum Sample { HOGE, FOO, BAR, ; // セ

    enum basics - しげるメモ
  • よく使うjakarta commonsの機能を10個: それほど間違ってないプログラマ用語辞典

    普段使っているCommonsの機能を思いつきで挙げてみた。CommonsはJavaのコードを短くしてくれるから好きです。 1. StringUtils.isBlank, isNotBlank 知名度は一番高そう。「str =! null && str.trim() != ""」みたいな表現をあっさり系に書ける。お友達のisEmptyもけっこう使う。メソッド名としてそれぞれNotが存在するのが「!StringUtils.isBlank(str)」より読みやすくて良いと思う。 2. CollectionUtils.isEmpty 引数で渡されたCollectionがnullかサイズが0ならtrueを返す。list != null && list.size() == 0 とかしなくて良い。StringUtils.isBlankと同じくらい使われても良さそうなんだけど、微妙に使われていない気がする

  • はてなブログ | 無料ブログを作成しよう

    思いは言葉に。 はてなブログは、あなたの思いや考えを残したり、 さまざまな人が綴った多様な価値観に触れたりできる場所です。

    はてなブログ | 無料ブログを作成しよう
  • Commandのサンプル - しげるメモ

    あんまりコマンドじゃない。コマンド++ public class CommandSample { public static void main(String[] args) { StringBuilder buf = new StringBuilder(); // 0123456789abc buf.append("Hello, world!"); Sequence com = new Sequence( new Edit(0, 5, "こんにちは"), new Edit(12, 13, "???") ); System.out.println(buf); Command undo = com.process(new CommandProcessor(buf)); System.out.println(buf); Command redo = undo.process(new Comma

    Commandのサンプル - しげるメモ
  • 動的なインターフェイスの追加(擬似的な方法) - 都元ダイスケ IT-PRESS

    public interface Foo { void foo(); } public class FooImpl implements Foo { public void foo() { // ... } } ある、Foo という仕様と同時に、Fooに対する実装を提供したとします。普通ですね。 ここで「Fooはプラガブル*1にしたい。実装によって「動的に*2」新しい機能を追加することができるようにしたい。」と考えたとします。 public interface Foo extends ExtenderA, ExtenderB ... { void foo(); } こんなイメージ。Fooのインターフェイスを「動的に」追加したい。しかし、これはJavaの言語仕様上不可能*3なことです。 拡張したければ、Fooを継承して新たなインターフェイスを作るしかありません。 public interfa

    動的なインターフェイスの追加(擬似的な方法) - 都元ダイスケ IT-PRESS
  • Throwableについて本気出して考えてみた - 都元ダイスケ IT-PRESS

    Throwable、Exception、RuntimeException(RTE)、Errorあたりを整理しながら、色々考えてみた。私見に基づくので、間違っているかもしれないけれど、自分としては頭が整理できたかな、と感じたので晒してみる。異論があったらコメントください。 まず、一番基礎的なところで、継承関係の整理から。こんなツリーになっています。 Throwable Error Exception RuntimeException そして、稿での用語の定義。caller=呼出す側のコード callee=呼出される側(throwする側)のコードとします。 Throwable Throwableは「throw文に指定できる何か」という意味ですね。 Instances of two subclasses, Error and Exception, are conventionally used

    Throwableについて本気出して考えてみた - 都元ダイスケ IT-PRESS
  • ついにベールを脱いだJavaFX:第1回 JavaFXの概要と基本|gihyo.jp … 技術評論社

    2008年12月4日(米国時間⁠)⁠、とうとうJavaFXがリリースされました。2007年のJavaOneで発表されて以来1年半、やっとリリースまでこぎつけました。そこで、このたびリリースされたJavaFX 1.0をベースに、短期集中連載としてJavaFXを解説していきます。 JavaFXとは何だ JavaFXはSun Microsystems(以下Sunと表記します)が提供するリッチクライアント向けの新しいプラットフォームです。Javaという名前が入っていますが、Javaとは別個のプラットフォームです。とはいうものの、技術的にはJavaがベースになっています。 JavaFXの開発はオープンソースで行われています。java.netのOpenJFXプロジェクトを中心に、OpenJFX-CompilerプロジェクトやSceneGraphプロジェクトなどで精力的に開発が行われています。ただし、現

    ついにベールを脱いだJavaFX:第1回 JavaFXの概要と基本|gihyo.jp … 技術評論社
  • Multi-Threaded Debuggerが地味にスゴくて泣ける - marsのメモ

    この前その紹介記事見つけたんで,それを真似しながら実際動かしてみた。きしださんの例がちょうどよかったので,これを題材にしてみたよ。 Runner#run()の適当なところにブレイクポイント仕込んでデバッガを起動する。するとスレッドごとに同じ場所で止まるんで,こんな具合に教えてくれる(この時点ですでにスゴイ)。 適当なスレッド選んでステップ実行とかするわけなんだが,スレッドの一覧が表示されているんで,どんだけスレッドが起きてるとか,どのスレッドが止まってるとか丸分かり。さらにスレッド一覧の右端には,スレッドの停止・再開ボタンが付いているので,興味ないスレッドは先やっててみたいなことができる(スゴイよね)。 さらにダメ押しなのが,ステップ実行中に他のスレッドがどこで停止しているかも見える!!(超スゲぇ) 緑色の矢印&ハイライト行が現スレッドの実行位置で,歯車アイコンが他のスレッドの実行位置(停

    Multi-Threaded Debuggerが地味にスゴくて泣ける - marsのメモ
  • "".equals(stringVariable) は改悪だろう - まちゅダイアリー(2008-11-30)

    2008-11-30 「ひたすらプログラミング日記」経由で「次のJavaコードはどう改良できる?」を読んだ。 Javaで「if(stringVariable.equals(""))」と記述したとします。「stringVariableという文字列変数が何もない文字列であるときは」という意味のif文です。このif文は,もう少しうまい方法で記述可能です。それは次のどれでしょう? if(stringVariable == "") if(stringVariable == null) if("".equals(stringVariable)) 3のコードはたまに見かけるけど、こういうコードが広がると困る。 場合によるけど、これは一般的に「改良」じゃなくて「改悪」だろうね。 (1) ローカル変数の場合はコンパイラが ~~null ~~初期化チェックをしてくれる stringVariable がローカル

    "".equals(stringVariable) は改悪だろう - まちゅダイアリー(2008-11-30)