タグ

javaに関するredpandaのブックマーク (94)

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

    昨日、プログラマー面接時の技術的な質問事項(アプレッソ版)を書いたところ、「自分ならこう答える」というエントリを書いてくれた人が何人かいて、個別にコメントしようかとも思ったのだが、昨日のエントリだけだと質問の投げっぱなしになってしまうところもあるので、解答編を書くことにした。 なお、「面接の質問項目を公表しちゃっていいの?」という指摘もあったが、ブログに書いたのはあくまでも質問項目の一例だし、解法を検討する過程を見れば普段どんな風に開発しているのかはだいたいわかるので、特に問題ない。 for (int i = 0; i < list.getLength(); i++) {}の潜在的パフォーマンスボトルネック list.getLength()がlist.getLength()回評価されてしまう。具体例としては、JREに標準で付属するDOMのライブラリのNodeListの実装はlist.get

    プログラマー面接時の技術的な質問事項(アプレッソ版) - 解答編 : 小野和俊のブログ
  • 事例で学ぶデザインパターン -INDEX- | オブジェクトの広場

    技術講座] 事例で学ぶデザインパターン 第 1 回 デザインパターンの概要と理解のポイント 第 2 回 Iterator パターンの適用例を見て学ぼう 第 3 回 Template Methodパターン 第 4 回 Factory Methodパターン 第 5 回 Observerパターン 第 6 回 Strategy パターンとデザインパターン活用の総まとめ © 2007 OGIS-RI Co., Ltd. HOME TOP

  • ict-start.com

  • Java脳でもわかるObjective-C入門

    ちょいAndroidTypescriptいいよ。JenkinsとかGradleとか。APTもいいなー。 photo: Some rights reserved by yukiv Javaと比較しながら「へぇーObjective-Cってそういう感じか」と理解した気になろう。 流れ 軽くジャブ クラスファイルの構成 コメント import文 変数の定義 クラス定義 メソッドの定義 メッセージ式 プロパティ セレクタ プロトコル カテゴリ 文字列リテラル ログ出力 ひと通り使ってみる感じのソース まとめ 軽くジャブ まずは以下のソースを眺める //SampleClass.h #import <Foundation/Foundation.h> #import "SampleClassDelegate.h" @interface SampleClass : NSObject <sampleclas

    Java脳でもわかるObjective-C入門
  • Bits And Pix » Java: Servlet Set Expires Header with Cache Control

  • Javaでスレッドセーフなstatic変数の初期化まとめ : Everyday FunkiEE!!

    10月23 Javaでスレッドセーフなstatic変数の初期化まとめ 仕事でマルチスレッド周りを面倒見る機会に出くわしたので、これを機にスレッドについて勉強してみた。特に共有変数の初期化方法って定石となるような方法があったので、実際に試してみながらコードと一緒に晒してみるよ。 例題:static変数の初期化例題としてはstatic変数の初期化を取り上げるよ。static変数は同一クラスの間で共有する変数のことで、初期化方法を誤るとマルチスレッドアクセスされたときに動作がおかしくなることがある。 ここでは、合計で6つの初期化方法を取り上げてみるよ。 初期化のパターンは以下の通り。 pattern 1:遅延初期化(スレッドセーフでない) pattern 2:static privateなメソッドでの初期化 pattern 3:static initializerによる初期化 pattern 4

  • Illegal group reference - とけび開発記録

    自前のサイトで今までにない例外(Illegal group reference)が発生していたので調査していたら、どうも「replaceAll」によるものみたい。 文字列の置換は「replace」と「replaceAll」の二つがあるのだけど、replaceだと最初の一文字だけ置換かと思って、いままではすべて変換は「replaceAll」を使っていた。 でもどうもどちらもすべて変換してくれるようです。 違いは、replaceは正規表現ではなく、replaceAllは正規表現であるということみたいです。 では、なぜ「replaceAll」は上記例外が発生しているか? それは置換後文字列に「$」が入っているためでした。 正規表現では、「(」と「)」で結ばれた文字を、置換後文字列の「$1」「$2」で置き換えるということができるのでそのために「$」を検出したら置き換えをしようとしている模様。 「$

    Illegal group reference - とけび開発記録
  • syboos.jp

  • EasyMockを使ってみた - DENの思うこと

    ユニットテストを行うときに困るのが HttpServletRequest等のサーバなどで生成されるインスタンスを 引数としているメソッドのテストです。 そんなときはモックという擬似オブジェクトを 利用したテストを行うのが一般的です。 私もJUnitでテストを行う為にモックを 利用しようと思ったのですが、 昔利用していたmockobjectというライブラリが無くなっていました。(年を感じます;_;) 今はEasyMockやjMockといったライブラリが利用されているようです。 ということで今回、EasyMockを初めて使ってみました。以下、使い方です。 http://www.easymock.org/index.html (バージョンは2.4を使用) まず最初にダウンロードしたら easymock.jarをクラスパスに通します。 次に、 import static org.easymock.

    EasyMockを使ってみた - DENの思うこと
  • EasyMock を使った Servlet 単体テストの例 その2 - kameidの備忘録 - Sharpen the Saw!

    次は request, response、両方の値を参照している(つまり Mock が2つある)パターン。2つあっても基的には一緒。並べるだけである。 package easymock; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class HelloWorldServlet extends HttpServlet { public void doPost(HttpSe

    EasyMock を使った Servlet 単体テストの例 その2 - kameidの備忘録 - Sharpen the Saw!
  • JUnit4 - TRANCE ARTS 技術情報Wiki

    JUnitとは? † Java用の単体テストフレームワーク。 JUnitのようなテスティングフレームワークを活用することで、次のメリットがある。 テストを統一な方法で作成できる → 他人が見ても分かりやすい テストが簡単にできる また、単体テストコードがあれば、仕様変更時のデグレードを早い段階で発見することができる。 ↑ JUnit3との違いは? † 「junit.framework.TestCase」クラスを継承しなくてもよい。 テストメソッドのプレフィックスに「test」の必要がない。 テストクラス前後に行う処理を指定できるようになった。(@BeforeClass、@AfterClass) 例外検証のソースの記述が簡単になった。(@Test(expected=XXXXException.class)) パフォーマンスの検証もできるようになった。(@Test(timeout=1500))

  • hamcrestのMatcherメモ - 都元ダイスケ IT-PRESS

    技術ネタじゃないところで盛り上げてしまった。技術ネタいこう、技術ネタ。 さて、JUnitを使う際、hamcrestライブラリを使って、英語として読めるようなassertionを書く、なんてのは流行ってたり流行っていなかったり? JUnit4限定だけれど、assertionの際、assertEqualsとか色々assertionのメソッドはあるけど、全てassertThatで書くことができるはず。assertThatメソッドの第一引数にテスト対象、第二引数にhamcrestのMatcherインターフェイスの実装を与えます。なんのこっちゃですが。 Jiemamyでは、なるべくassertThat以外のassertionメソッドを使わないようにテストを書いています。(もしかしたらもう一つも残ってないかも。) まぁ、以下のように書くと、英語っぽいのが書けますよ、と。 assertThat(aaaa

    hamcrestのMatcherメモ - 都元ダイスケ IT-PRESS
  • 安全なセッション管理を実現するために

    ログイン前とログイン後でセッションIDが変化しない セッション固定攻撃が成立する最後の条件はログイン前とログイン後でセッションIDが変化しないことだ。セッションIDを変化させるためには明示的な実装が必要となるから、意識して実装されていない限り条件が成立する可能性は高いといえるだろう。 ほかの条件については、独自に機能拡張されたアプリケーションサーバやフレームワークを使用するなど、複雑な対策が必要となるが、最後の条件だけは、容易な実装で対策することが可能である。 対策: ・ログイン成功時にセッションIDを再発行する セッションIDを変化させるには、ログインが成功したらセッションIDを再発行させればよい。再発行の時点でセッションIDは攻撃者にとって未知の値となるため、セッション固定攻撃は成功しなくなる。具体的には以下のような実装となる。 /** ログイン処理を実行して成功したらセッションを再発

    安全なセッション管理を実現するために
  • 自明でない日々: JAXB って Java SE でも使うことができるんですね

  • JAXBでJavaクラスからXML schema生成 - torutkのブログ

    Java SE 標準APIのJAXBを使うと、Javaのインスタンスの内容をXML形式で出力したり、逆にXMLファイルからJavaのインスタンスを生成することができます。 JAXBは最初、XML Schema定義からJavaクラスを生成し、そのクラスを利用して実行時にJavaインスタンスとXML文書のマッピングをする機能が提供されました。その後のバージョンで、Javaクラス定義*1からJavaインスタンスとXML文書のマッピングをする機能が提供されました。そのためもあってか、解説記事は大半がXML Schema定義からJavaクラスを生成するものとなっています。 今回、Javaクラス定義からXML文書とマッピングするために必要な流れを、一歩一歩試しながら理解したいと思います。 なお、Javaクラス定義からXML文書とマッピングさせる場合、XML Schemaを生成する必要はありませんが、生

    JAXBでJavaクラスからXML schema生成 - torutkのブログ
  • Commons Digester で XML to Java バインディング - ザネリは列車を見送った

    ちょっとした必要に迫られて XML を Java クラスにバインディングしてくれるツールについて調べた事の覚え書き。 JAXB 何かのライブラリとかツール群の中に同梱されているのは何度か見かけたけど、 自分で使ってみたのは初めてだったので手順をメモっとこう。 扱いたい XML の構造が分かっている場合、まず XML Schema を作成する。 XML Schema から Java のクラスを生成する。 扱いたい XML をアンマーシャルして Java クラスにバインディング。 1. は勿論手で書いてもいいけど、ちょっと複雑になってくるとかなりしんどいのでツールに任せた。 trang か relaxer が使える。 java -jar trang.jar <元のxml> <生成するxsd> relaxer -xsd <元のxml> 2. は Java 標準の xjc を使用する。 xjc <

    Commons Digester で XML to Java バインディング - ザネリは列車を見送った
  • File.listFiles/FileFilterでファイル選別 - Java入門

    File.listFiles()メソッドは該当するファイル(フォルダ)のサブファイルやサブディレクトリを取得することができます。文は、FileFilterとFilenameFilterを使ったサンプルから、File.listFiles()メソッドの戻り値を選別(フィルタ)する方法について学びます。 java.io.Fileクラスのlist()メソッド: String[]     list()           すべてのサブファイルおよびサブディレクトリを示す文字列の配列を返します。 String[]     list(FilenameFilter filter)           指定されたファイル名フィルタの基準を満たすサブファイル及びサブディレクトリの文字列の配列を返します。 File[]     listFiles()           すべてのサブファイルおよびサブディレク

  • WEB-INFフォルダ内のファイルの読み書き - PukiWiki

    WEB-INFフォルダとは † サーブレットエンジンに配備する各アプリケーション独自のファイルを 置く場所。WEB-INFディレクトリは、ユーザからHTTPで直接アクセスされることが 無いので、設定ファイルやパスワード情報、データなど、WEB-INF配下の ディレクトリに入れるのが望ましい。 /WEB-INF/data 一般にデータファイルを置く /WEB-INF/lib アプリケーション専用のjarなどを置く ↑ WEB-INFフォルダへのアクセス方法 † Fileクラスなどでは、ファイルへの絶対パスが要求される。サーブレット でアプリケーションを開発する場合、絶対パスを環境非依存にする必要が ある。そのため、getRealPath?メソッドを使う。 ServletContext application = getServletContext(); // JSPでは暗黙に実行されるため不

  • JSONIC における java.util.Date-Oboe吹きプログラマの黙示録

    JSONIC のエンコード、デコードするデータに、java.util.Date を含めると、 JSON文字列は、1970 年 1 月 1 日 00:00:00 GMT からのミリ秒数 つまり java.util.Date の getTime() の結果のlong値になる。 {"date":1320852289822} みたいになる。 しかし、このJSON文字列のDate値を yyyy/MM/dd HH:mm:ss.SSS の書式にしたければ、 変換Objectのクラスの Date フィールドに、@JSONHintアノテーションで書式を指定する。 public class Foo{ @JSONHint(format="yyyy/MM/dd HH:mm:ss.SSS") public Date date; : } JSON文字列は、、 {"date":"2011/11

  • [SQLite JDBC] Javaで始めるSQLiteデータベース入門

    SQLiteデータベースは、Cで書かれた軽量データベースです。「軽量」というのは2つの意味があって、全体のコード数が10万行程度という点(PostgreSQLは100万行に近づいています)と、データベースを保存するファイルが1つに納まっているのがSQLiteの特徴です。他のシステムだと、複数のデータベース用のファイルがあって管理が面倒なのですが、SQLiteのデータベースはファイル1つで、しかもOS互換フォーマットで保存されているので、簡単にOSをまたがったデータベースのコピーを作成することができます。 そもそもリレーショナルデータベース(日語では関係データベースと訳すことが多いです)って何?という方は、初心者向けに用意した以下の講義資料を参考にしてください。 Javaでデータベースアプリケーションを作成するには、JDBC (Java Database Connection)というAPI