タグ

Tipsとjavaに関するt_43zのブックマーク (76)

  • logbackで設定を記述する時の注意事項等。 - 設計と実装の狭間で。

    slf4j可愛いよ、SLF4J。と言う訳で、logbackを使う訳だ。 でも、何かようワカランけど、ちゃんとログが出ない事があったりなかったり。 と言うか、出ない事は少ないんだけど、出過ぎる事がある。 使ってるのは、 slf4j-api-1.4.2.jar logback-classic-0.9.9.jar logback-core-0.9.9.jar で、logback.xmlを記述しちる訳だす。 より新しいバージョンで設定を記述する際のポイントを logbackで設定を記述する時の注意事項等。続き。 に書いているます。 以下の内容には、相応に不適切な内容を含んでいるます。 で、こんなコードを書く訳。 public class Main { public static void main(String[] args) { Logger bb = LoggerFactory.getLogg

    logbackで設定を記述する時の注意事項等。 - 設計と実装の狭間で。
  • 0詰め - 宇宙行きたい

    今迄 System.out.println( new DecimalFormat("0000").format(212)); 1.5 からこんなん出来てた System.out.println(String.format("%04d", 212)); しらなかった>< なんか便利っぽい関数増えてるんだなぁ

    0詰め - 宇宙行きたい
  • 動的なインターフェイスの追加(擬似的な方法) - 都元ダイスケ 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
  • SwingWorkerでスレッドからGUI操作 - きしだのHatena

    EventQueue#invokeLaterなどを使えということなのですが、実際の処理をいちいちinvokeLaterすると処理の記述が分断して大変みにくくなります。記述の美しさよりも処理の安全さ、とはいえ、これはあんまり。 ということで、Java SE 6からはSwingWorkerというクラスが用意されていて、便利に使えます。 使い方を図解すると、こう 関係ないけど、今回のサンプルはムダにNimbusです。 SwingWorkerは、Genericsパラメータをふたつ指定します。一つ目が処理結果の型で、二つ目が途中経過の型です。 new SwingWorker<Integer, int[]>() SwingWorkerで実装するべきなのは、doInBackgroundメソッドです。ここでは、別スレッドで動かしたい処理を記述します。戻り値の型は、Genericsで一つ目に指定した型になり

    SwingWorkerでスレッドからGUI操作 - きしだのHatena
  • オンデマンドデプロイのすすめ - ひがやすを blog

    JavaでAnnotationがついたクラスがあったら、それに対して処理したい場合は、Seasar2のコンポーネント自動登録で使っているように、ファイルシステムまたは Jar ファイルを全走査してクラスロードする方法もあります。 ファイルシステムまたは Jar ファイルを全走査してクラスロードしてください。が結論です。 Seasar だったら、 org.seasar.framework.util.ClassTraversal を読むべし。 でも、これは、Seasar2.3時代(3年前)の話で、技術としてはちょっと古い。 HOT deployなどと組み合わせると、リクエストのたびに全コンポーネントをデプロイする必要があるので、コンポーネントの数が増えると実用的には使えないのです。 そこで、考え出したのが、Seasar2のONDEMAND deploy。コンポーネントの定義を見に行って、あれば

    オンデマンドデプロイのすすめ - ひがやすを blog
  • Javaのコネクションプーリングの仕組み - ひがやすを技術ブログ

    Javaのコネクションプーリングがどのような仕組みになっているのか、知らない人は結構多いんじゃないかと思います。 Slim3のコネクションプーリングの実装を見ると、この辺が理解できるようになります。トランザクションとコネクションプーリングがどのように連携しているかを把握することは重要です。 http://svn.slim3.org/browse/trunk/slim3/slim3-datasource/src/main/java/org/slim3/datasource/ 登場人物は、4人しかいないから簡単ですね。 最初に見て欲しいのは、ConnectionWrapper。DataSource.getConnection()したときに戻されるコネクションの実態です。このコネクションを論理的なコネクションと呼ぶようにします。 主な役割は、コネクションがクローズされたときに、コネクションをプー

    Javaのコネクションプーリングの仕組み - ひがやすを技術ブログ
  • 内部クラスのインスタンス生成は誰がインスタンス生成したかによって結果が異なる - Nazo-log

    今までインスタンスに対して、newを呼び出せるとは知らなかった。 なにか、効果的に使う方法はあるのかな? 内部クラスのインスタンス生成 - or1ko's diary にコメントしたけど、インナークラスがエンクロージングクラスのインスタンス変数を参照するような場合、どのエンクロージングクラスがインナークラスのインスタンスを生成したかが問題になります。 public class EnclosingClass { private String enclosing; public EnclosingClass(String enclosing) { this.enclosing = enclosing; } public class InnerClass { private String inner; public InnerClass(String inner) { this.inner =

    内部クラスのインスタンス生成は誰がインスタンス生成したかによって結果が異なる - Nazo-log
  • Undo,Redoのサンプルアプレットを作ってみた - あしあと日記

    http://youchan.org/footprint.html 使い方 マウスでドラッグ&ドロップすると四角いボックスが描かれます。 いくつかボックスを描いたらCtrl-ZでUndo、Ctrl-YでRedoできるので試してみてください。 ソースはcodereposにあります。 http://svn.coderepos.org/share/lang/java/footprint コードの解説は次回!

    Undo,Redoのサンプルアプレットを作ってみた - あしあと日記
  • 編集系ソフトウェアとデータモデル - あしあと日記

    id:Yamashiro0217 ちょうどドローツールっぽいツールを作ろうとしてるところで、「くGUIの編集系のソフトウェアについていろいろ書きたいのでまだまだ続きますよ!」にすごい期待です! ymsr先生からこんなコメントをいただいたので調子に乗って書いてみる。 編集系のソフトウェアはデータモデルが超重要です。どうしてもGUIの見た目や操作性の部分に気持ちが行ってしまいそうですが、データモデルをしっかり固めてしまえば、GUIの見た目や操作というのはいくらでも差し替えが利きます。 使い勝手の部分というのはころころ変わりますが、データモデルがしっかりしていれば、見た目や操作の部分に変更があってもデータモデル自体に手を加える必要はありません。逆にデータモデルの変更はGUIに大きく影響をあたえます。 前回までUndo、Redoの説明をしましたが、ここで出てきたのはデータモデルだけです。これにどん

    編集系ソフトウェアとデータモデル - あしあと日記
  • Blogs

    2020-04-12 in Book 1年ほど積読にしてた「入門監視」を読み終えました。 このは監視ツール個別の話はほとんどなく、監視をどう設計すべきかが記されています。 私自身、監視を色々見たり設定したりしてきましたが、考え方の答え合わせができて楽しかったです。

  • Undo,Redoの実装つづき - あしあと日記

    いや、悪い反応では無いのでむしろ喜ぶべきことなんだけど、意外と好評なエントリーなので続きを書きます。 タイトルだけは前回同様釣りっぽいタイトルで^^ 前回のエントリーが思ったより反響が大きくてびっくりしてます。なんか炎上してるのか?って思っちゃいましたw 炎上っていうのはさすがにネガティブだし、内容とかけ離れすぎてるのでタイトル変えました。 さて前回はコマンドパターンとコマンドの実装について書きましたが、今回は予告どおり実行部の実装についてです。 といっても、今回はとっても単純な話です。Undo用にスタックにコマンドを積んで、Undoするよって呼ばれたら、スタックからコマンドをpopしてきてundoの処理を実行するだけです。 ただし、Redoも出来ないと行けないので、実行したコマンドは今度はRedo用のスタックに積んでいきます。 実装は次のようになります。 まず前回の二番目のパターンに則っ

    Undo,Redoの実装つづき - あしあと日記
  • Undo,Redoの実装って何十回もやってる気がする - あしあと日記

    undo,redoの実装って何十回もやってる気がする。毎回同じパターンだ。undo,redoが登場するような編集ソフトは大体同じパターンに落とせる。フレームワークも作った。ブログにそういう内容を書きたいが面倒くさい。需要があれば面倒でも書くんだけどなあ http://twitter.com/youpychan/status/994486992 という発言をしたら何人か反応を頂いたので書いてみることにする。 需要があるなら書こう。undo,redoだけじゃなくてグラフィカルな編集ソフト全般の話をいつかまとめたいと思っていたので、ちょいとシリーズで書いてみようかとおもう http://twitter.com/youpychan/status/994636764 書こうと思う。 まずUndo,Redoについて。 Unod,Redoってみなさんどういう風に実装しているでしょうか? 私はコマンドパタ

    Undo,Redoの実装って何十回もやってる気がする - あしあと日記
  • 内部クラスをリフレクションで扱う場合の注意点

    2009-09-26 北陸Scala第1回開催 2009-04-04 第十四回java-ja勉強会 - 第1回チキチキ 地方巡業withひがやすを飲み会in富山開催 2009-03-20 わんくま大阪勉強会#28 「ジェネリクスを使おう!」 2008-11-08 わんくま富山勉強会#1 開催 2008-08-09 わんくま東京勉強会#23 「C#登場前夜」 2008-04-01 *で始まるタイトルはエイプリルフールネタです 2008-01-26 わんくま東京勉強会#16 「ライブプログラミング」 2007-12-08 わんくま名古屋勉強会#1 「わんくま初めてのJava」 2007-07-28 開店

  • Javaでスレッドを使う際の注意点 | 株式会社シンメトリック公式ブログ - 携帯開発から生まれる技術情報

    Javaでスレッドを使う際の注意点|株式会社シンメトリック公式ブログ - 携帯開発から生まれる技術情報| 携帯サイト開発から生まれる技術情報ブログ どんなプログラム言語でもそうなのですが、マルチスレッド下でプログラムを組むときは、シングルスレッドとは違うところに色々気を使わないといけません。 今回は、Javaマルチスレッドプログラムでは基的なことですが(自分だけかもしれませんが)よく忘れて、不可解な動作に首を傾げてしまうポイントについて説明していきます。 ヒープ領域にあるデータの更新タイミングをちゃんと把握する Javaプログラムからアクセスできるメモリ領域には、大きくわけて、スタック領域(以下スタック)とヒープ領域(以下ヒープ)の2種類が存在します。 スタックは、ローカル変数や、メソッドの引数・戻り値情報を持ち、ヒープは newされたオブジェクトや、ロードされたclass情

  • commons-langで文字列を比較する - builder by ZDNet Japan

    StringUtils#contains StringUtils#containsは、「第2引数で指定した文字列(文字)」が「第1引数で指定した文字列」に含まれる場合に真を返す。 通常、下記のように記述することができるが、 //「文字列がnullまたは空("")である」 if( str!=null && str.indexOf("[チェック対象の文字列]") ){ // 〜〜 } StringUtils#containsを使った場合には以下のように記述することができる。 if( StringUtils.contains("[チェック対象の文字列]") ){ // 〜〜 } 「contains」メソッドは以下のように動作する。 StringUtils.contains(null,"A") = false →チェック対象の文字列がnullの場合はfalse。 StringUtils.conta

    commons-langで文字列を比較する - builder by ZDNet Japan
  • Nakajiman Software Blog: JaxerとDWRを連携する方法

    2008-07-09 JaxerとDWRを連携する方法 Jaxerはファイル、DB、ネットワークを手軽に利用する為のAPIが組み込まれていて、個人が小さなWebアプリを作るには適していると思います。しかし業務システムで使うとなるとJavaScript以外の言語と連携する必要性がでてくるので方法がないか調べてみたところ、JavaでいうJNIは見つからず、見つけたのはネットワーク機能を使った方法ぐらいでした。調べ方が悪かったかもしれませんが、とりあえず見つけたネットワーク機能を使った方法を紹介します。 ネットワーク機能を使って連携するには、JaxerにはソケットやHTTPやSMTPによる通信をするAPIが提供されてまして、それを使ってWebサービスを呼び出して結果を受け取るという流れになります。ブラウザ・サーバ間と余り変わりません。例えばHTTPで連携するコードはこんな感じになります。 <sc

  • アノテーションのインスタンスの作り方 - ひがやすを技術ブログ

    アノテーションAnnoのオブジェクトは@Annoが付与されているクラスやメソッドに対応するClassやMethodオブジェクトについてAnnotatedElement#getAnnotation(Anno.class)を呼び出すことで取得できるが、新たに生成したいことがある(かもしれない)。 そこでいろいろ試してみた。 まずこれ。 Anno anno = Anno.class.newInstance(); これはあえなくInstantiationException。 んで次はこれ。 Constructor<?>[] constructors = Anno.class.getConstructors(); System.out.println(constructors.length); この結果は「0」。そもそもコンストラクタがないのね…。 アノテーションの実体はインターフェースなので、Pr

    アノテーションのインスタンスの作り方 - ひがやすを技術ブログ
  • 「メモリーを意識してみよう」第4回 進化するメモリー管理:ITpro

    先々週にHotSpot VMでのメモリー管理について解説しました。ここでキーとなるのは世代別GCです。 HotSpot VMで世代別GCが採用される以前は,Old領域のGCで使用されるMark & Sweep GCだけでした。世代別GCが導入されたことにより,GCのパフォーマンスは劇的に向上したのです。 しかし,GCの進化はここで終わってしまったのではありません。Java SE 6(開発コード名Mustang)にいたるまで,様々な改良が加えられてきました。 今週はそれらの新しいGCの手法について解説していきます。その前に,まずは基となるMark & Sweep GCを説明しましょう。 Mark & Sweep GC Mark & Sweep GCは二つのフェーズでGCを行います。 はじめのフェーズで,使用しているインスタンスに印をつけます(Mark,図1a)。Markにはルートインスタン

    「メモリーを意識してみよう」第4回 進化するメモリー管理:ITpro
  • Javaの匿名クラスを使ってかっこよくオブジェクトを初期化するテクニック - 矢野勉のはてな日記

    JavaJavaの匿名クラスはすごくかわしいかわいい技術でいろいろキモイことができます。匿名クラスは基的に「サブクラス生成のための特殊記法」であって、クロージャではありません。匿名クラスとクロージャを対比して云々するのはそもそも誤りです。なんならクロージャでサブクラス作ってみなよってことです。匿名クラスによって、Javaではなにかのサブクラスを任意の場所で即座に作り出すことが出来るんです。なにかのクラスのメソッドを三つほど書き換えた新しいクラスをさっと作れるのは、なかなか面白い機能ですよ。 その匿名クラスを利用したカッコイイ(でも使うのは躊躇されている)記法として、次のようなのがあります。(追記:この用法はヨシオリさんところで見たのが最初です) List list = new ArrayList() {{add("a"); add("b"); add("c");}}; Javaには「初期

  • Java標準同期化オブジェクトの活用で手軽にマルチスレッド対応 | 株式会社シンメトリック公式ブログ - 携帯開発から生まれる技術情報

    Java標準同期化オブジェクトの活用で手軽にマルチスレッド対応|株式会社シンメトリック公式ブログ - 携帯開発から生まれる技術情報| 携帯サイト開発から生まれる技術情報ブログ 前回は、DateFormatクラスがマルチスレッド問題によってバグを引き起こす例を紹介した。マルチスレッドによる問題に対処するには、スレッドごとにインスタンスを作成するか、synchronizedブロックによる同期化を行う。でも「正しい同期化」を行うには十分な知識とコードの把握が不可欠・・・。 そんな時に重宝するのが、Java標準で用意されている同期化オブジェクト。どんなケースにも対応できるわけではないけど、お手軽かつ必要十分な機能を備えている。これを使わない手はない。 第3の同期化方法 前回は同期化の方法として、以下2通りの方法を紹介した。 [方法A]スレッドごとにクラスのインスタンスを生成 [方法B]クラス