タグ

shase_labのブックマーク (1,099)

  • DIコンテナとStrategyパターン

    日のカクテルはDIコンテナです。 こちらのカクテルはオブジェクト指向をベースとしてますので、苦手な方は無理なさらずに。 レシピはオブジェクト指向3/4にStrategyパターンを1/4をステア。マティニのようなショートカクテルに仕上がります。 Java界隈では2004年頃からにわかに熱を帯びていたDIコンテナ(当時はIoCコンテナと呼ばれていた)ですが、一体何者なんだろう? その掴みどころのなさは、そのメリットがどうにも抽象的に語られるからではないでしょうか。 そのメリットは「オブジェクト間の疎結合」などと言われますが、これはオブジェクト指向を学んだ技術者でも いまいちイメージしにくいメリットです。いや、メリットはわかったとしてもどうやって?そんなものフレームワークになりえるの? と疑問は尽きない、そんな話だと思うのですね。この胡散臭さが敬遠されているのではないでしょうか。 今回はソース

  • ポリモーフィズムを使ったリファクタリングの実践例 - Sacrificed & Exploited

    ポリモーフィズムを使ってないひどいコード設計を見たので、どうリファクタリングするべきだったのかを書いておく。 やばい匂いのするコード そのシステムでは、複数の銀行とのやりとりを行うため、銀行コードに基づいて処理を分岐していた。そうこんな風に void 入金(銀行コード, ユーザID, 金額){ if(銀行コード==0001){ // A銀行用の処理 ... } else if(銀行コード==0002){ // B銀行用の処理 ... } else { // エラー } } void 出金(銀行コード, ユーザID, 金額) if(銀行コード==0001){ // A銀行用の処理 ... } else if(銀行コード==0002){ // B銀行用の処理 ... } else { // エラー } } ここでは2つしか出してないけど、実際はもっと数が多いと思って欲しい。30個くらいはあった

    ポリモーフィズムを使ったリファクタリングの実践例 - Sacrificed & Exploited
    shase_lab
    shase_lab 2014/03/28
  • - Java プログラマのためのデザインパターン入門

    この記事では、ソフトウェアパターンの中でも、特に Gamma らの著書「デザインパターン」に絞って入門者および中級者向けの解説を行う。 Java プログラミングの経験はあるがデザインパターンはよく知らない、 あるいは、 よく知っているが、実際の開発で活用するにはどうしたらよいか悩んでいる という読者を対象としている。 まず、なぜデザインパターンが重要かということを述べた後、 書籍「デザインパターン」の読み方を解説する。 さらに、パターンの持つ特質である生成性を述べ、 最後に、実際に動作する Java アプリケーションをデザインパターンを利用しながら開発する例を説明する。 「デザインパターン」は Gamma らの著書によってソフトウェア設計における良質なデザインテンプレート集として広く認知されているが,実際の開発現場では,どの程度普及したであろうか.もし読者が java プログラマであり,ま

  • Agile Manifesto for Software Development | Agile Alliance

  • javaのジェネリックスでTとEの違いが良く分かりません。 - OKWAVE

    「T」「E」などの型パラメータ名は、コンピュータにとっては何であっても違いは有りません。変数名などと同様です。(もちろん「for」などの予約語は使えませんが。) 動作さえすれば良いのであれば、「HOGE」などでもかまいません。 例) public <HOGE> HOGE name(HOGE h) { ・・・・・ } ですが、「HOGE」などでは書いた人の意図が分からず、プログラムが理解しづらくなります。 ですので、(未来の自分も含めた)そのプログラムを読む人が分かりやすいようなものにするのが定石です。 標準ライブラリで例を挙げると、下記の様になっています。 ・ java.util.Collection<E> の場合は要素(Element)の型を指定するので「E」 ・ java.util.Map<K,V> の場合はキー(Key)と値(Value)の型を指定するので「K」「V」 標準ライブラリ

    javaのジェネリックスでTとEの違いが良く分かりません。 - OKWAVE
  • SQLの比較演算子 - HHeLiBeXの日記 正道編

    唐突に、「プログラム言語を学んだ後でSQLを学ぶと、"not equal"を"!="と書きたくなる人が多いんじゃないか」、「SQLでは"<>"」と考えたところで、どこかの実装で"!="が使えたものがあったような記憶がよみがえってきた。 そこで、次のを参照してみた。 SQLスーパーテキスト 作者: 山平耕作,土田正士,小寺孝出版社/メーカー: 技術評論社発売日: 2004/03メディア: 単行この商品を含むブログ (5件) を見るすると、比較演算子は"="、">="、"<="、">"、"<"、"<>"の6つだという。この自体が「ISO SQL:1999の詳細解説」と謳っているので、SQLの標準規格に定められているのはこれらのみであろう*1。 一方、別のでは‥一晩で学ぶSQL―データベースの必須要素をかんたんにマスター 作者: ベンフォルタ,Ben Forta,篠原慶出版社/メーカー:

    SQLの比較演算子 - HHeLiBeXの日記 正道編
  • kenyo's diary(2012-12-19)

    _ [Computer] Fujitsu 6Gb RAID 0/1 D2607 RAIDカードでJBOD Fujitsu製の6Gb RAID 0/1/10をサポートするD2607カードは、標準ではJBODは使えないんだけど、載ってるLSISAS2008はJBODサポートしてるので、D2607でJBODできないかを検証。 結果を先に言うとD2607でJBODは可能。やり方も簡単でコマンド1つ実行してJBODを有効にするだけ。以下やり方。 マシンをpower on。RAIDカードの初期化画面(BIOS POSTの時)が出たら("Press for WebBIOS or press for Preboot CLI"のメッセージが出たら)、Ctrl + Yを押してPCLI環境に入る。$ -AdpGetProp -EnableJBOD -a0 を実行して現在の値を確認。"Disabled"になってる

  • Tomcatで動作するサーブレットからコネクションプーリングを使用してDB2に接続する

    rssデータを取得し、DB2のxml列に登録することができました。 Javaからrssデータを取得し、DB2のxml列に登録する 参考にしている記事 XQueryで簡単マッシュアップ・プログラミング http://www.ibm.com/developerworks/jp/data/library/dataserver/j_d-xquerymashup/index.html ここでは、htmlファイルを出力し表示しているようですが、せっかくなので Tomcatで動作するサーブレットを使用し、表示してみようと思います。 開発環境の作成 以前、EclipseにTomcatプラグインを設定しています。 この環境で開発することにします。 Tomcat + Eclipseでデバッグできる環境を作成する Pleiades を最小構成で導入し、Javaの開発環境を構築する Tomcatのコネクションプー

    Tomcatで動作するサーブレットからコネクションプーリングを使用してDB2に接続する
  • [eclipse]tomcatのデバッグ実行が遅い時の7つのチェックポイント | アマシィ

    的なことばかりですが、備忘録として残しておきます。 eclipse/tomocatで開発時、急に速度が遅くなった場合のチェックポイントです。 ブレークポイント、監視式は意外と忘れがち&盲点なので注意ですね。 タスクマネージャを起動し、メモリが足りているかチェックする eclipseを -cleanのオプション付きで起動する eclipseのメニューよりプロジェクト->クリーンを行う tomcat/work/catalinaの下のファイルを削除する ブレークポイントを全てはずす(数個しかない場合でも非常に遅くなる場合あり?) 監視式を全てクリアする (DB周りで遅いときは)DBのコネクションプールがちゃんと機能しているか

  • Java言語で固定要素のListを初期化する際のイディオム - 達人プログラマーを目指して

    Generics(総称型)のプログラミングはJava言語(バージョン5以降)で最も習得が困難な文法*1の一つです。私自身、時々どうやって文法エラーを修正すべきか悩むこともあるくらいで、実際かなり複雑です。Genericsの導入は賛否両論なので、実際Javaに導入したのは間違いだったという議論もある一方で、静的な型安全性を重視するプログラマーもいます。 好き嫌いはともかくとして、Javaプログラマーとしては、一度きちんとGenericsの正しい使い方(=使い勝手のよい総称型やメソッドの正しい定義方法)について勉強しておいてもよいと思います。 Java Generics and Collections: Speed Up the Java Development Process 作者: Maurice Naftalin,Philip Wadler出版社/メーカー: O'Reilly Media

    Java言語で固定要素のListを初期化する際のイディオム - 達人プログラマーを目指して
  • Webアプリケーションのサービスクラスとは何か - 虎塚

    「JSP、サーブレット、サービス、DAO、DTOといった構成のアプリケーションにおけるサービスクラスとは何か」、という問いに自分なりの答えを出すのが、今日の宿題です。 自分の解答 ※注意: 以下の文章は言い切り形式で書いていますが、間違っているかもしれません。 ちょろっと調べたのですが、サービスについてそのものズバリの単一な定義を見つけることはできませんでした。なので、いくつかの観点から理解することを試みます。 モデル、ビュー、コントローラにおける「サービス」 アプリケーションをモデル、ビュー、コントローラに分けて見たとき、サービスはモデルに属します。モデルには、データベースアクセスを行うクラスと、システム固有の処理を行うクラスがあります。 サービスは、後者のシステム固有の処理を行うクラスに当たります。 なお、データベースアクセスを行うクラスは、データを保持するクラスと、データベースアクセ

    Webアプリケーションのサービスクラスとは何か - 虎塚
  • 多バイト文字の変換とかいわゆる文字化けとその対処に関する自分用のまとめ - Bouldering & Com.

    webアプリはいろいろ関わってきてるはずなのに、このあたりの話を全然理解してなかったことに愕然とする。 普通のひとには常識なんだろうけど、今回調べたことで体得できたよ。 追記 少し理解が進んだので追記。 TomcatのGETパラメータのデフォルトの挙動 iso-8859-1とみなしてURLエンコードしてくれる。また、GETパラメータには、HttpServletRequest#setCharacterEncodingは適用されない。 URIEncoding URI文字列に多バイト文字があった場合にどの文字コードとみなしてURLエンコードするかを設定する。パラメータに限らず、URIのファイル名とかもこれに則る。 useBodyEncodingForURI これをtrueにすると、GETパラメータであっても、HttpServletRequest#setCharacterEncodingを適用させ

    多バイト文字の変換とかいわゆる文字化けとその対処に関する自分用のまとめ - Bouldering & Com.
  • ドメイン駆動設計 | システム設計日記

    テスト駆動開発 和田卓人(t-wada)さんによる『テスト駆動開発』の新訳版が出版されました。 オブジェクト指向でソフトウェアを開発するのであれば、このとマーチンファウラーの『リファクタリング』は必読書だと思います。この古典ともいえる『テスト駆動開発』が和田さんの手によって新訳版として復刊されたことは、ほんとうにすばらしいことです。 このが出版された経緯と、和田さんはじめ関係者の方々のご努力については、和田さんの、このブログをぜひ読んでいただければと思います。 新訳版『テスト駆動開発』が出ます 新訳は、単に原著が日語で読めるようになっただけではありません。和田さんの手によって、原著にはない新たな価値が付け加えらました。 一つは、サンプルコードの工夫です。 できるだけ省略はしない変更箇所を目立つようにした各章末にその時点での全コードを記載する これらの工夫により、に書かれた内容が、

  • 静的オブジェクト指向は設計者が苦労を背負込むシステム

    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は経済的事情をうまく捉えて普及した プログラミングの効率と経済で書いていると

  • List#subListの罠 - mtoyoshi開発メモ

    String#subStringって結構メジャーなメソッドだと思うんですけど、List#subListって知名度どれくらいかなー。subStringの感覚で使ったら痛い目あうよー・・・ってそんなことどれだけの人が知ってるんだよ!!というお話です。 このシンプルなプログラムの実行結果がどうなるか予想できるだろうか。 List<String> list = new ArrayList<String>(); list.add("dog"); list.add("cat"); List<String> list1 = list.subList(0,1); // dog List<String> list2 = list.subList(1,2); // cat list1.add("pig"); System.out.println(list); System.out.println(list1)

    List#subListの罠 - mtoyoshi開発メモ
  • MySQLについてLTしたのこと。 - NullPointer's

    ある日いきなり社内勉強会でライトニングトークしてねwwと指命されたので、MySQLの話してきました。以前サイバーエージェントエンジニアブログに掲載された「redis、それは危険なほどのスピード」という記事で比較対象になったMySQLに関して考察した内容です。 内容を4行でまとめると、 はてブのツッコミ通りHashインデックス意味ないです rangeスキャンの範囲が広すぎるとB-Treeインデックスはむしろ遅い 2倍速いはread件数の差。アルゴリズムとデータ構造はDBだって重要 パーティション刈り込みでRedisレベルにMySQLを高速化 という内容になります。 俺のSQLがこんなに遅いわけがない 資料では触れていませんが、テーブルの大部分を取得するrangeスキャンであっても、B-Treeインデックスが有効になるケースがあります。例えばテストに用いたテーブルに対して以下のクエリを投げる

    MySQLについてLTしたのこと。 - NullPointer's
  • iTerm2でGNU Screenのバッファーをマウスでスクロールしたい - むしゃくしゃしてやった

    今までiTerm上でScreenのバッファをマウスでスクロールできなかったけど、できるようになったのでメモ。 使用したiTerm2のバージョンはBuild 0.20.20110529 Preferences->Profile->Terminal->"Save lines to scrollback when an app status bar is present"をチェックすればOK いちいちコピーモードに入る必要がなくなるのですごく快適です。 Mac OS XのTerminal.appでGNU Screenのバッファーを普通にスクロールしたい - レオメモ - s21gにある termcapinfo xterm* ti@:te@の設定も必要かもしれない。 標準ターミナルだと256色表示ができないし、urxvtは構築がめんどくさそうな上に日本語入力に難があるとの話だしと悩んでましたがこれ

    iTerm2でGNU Screenのバッファーをマウスでスクロールしたい - むしゃくしゃしてやった
  • システム開発の仕様書テンプレートや参考サイトのまとめ|IT情報局

    システム開発の際に必要になる要求仕様書や基設計、詳細設計に使う各種の書類のテンプレートを紹介しているサイトをまとめました。 また、参考になる資料を配布しているサイトや開発関連資料の書き方などの説明をしているサイトもあります。 システムを開発時の書式や方法は各プロジェクトによって使うフォーマットは異なりますが、初めて開発する場合や自社での開発資料を作成する際のテンプレートとして参考にしてください。 2017/2/22 追記 リンク先の資料を配布しているサイトがかなり古くなってしまったのでリンクの見直しと、新たにシステム開発の資料を提供しているサイトを探して追加しました。 仕様書のダウンロードができるサイト Pocket 9 要求仕様書から見積、基設計、詳細設計、コーディング規約、テスト仕様書、その他スケジュールや議事録まで システム開発に必要な書類のテンプレートがそろっています。 htt

  • http://news.mynavi.jp/special/2007/struts2/menu.html

  • Java WebアプリでもわかりやすいURLを! - Url Rewrite Filterの使い心地

    WebアプリケーションではURLのわかりやすさも重要とされている。たとえば http://www.example.com/diary/diary.cgi?year=2007&month=05&day=12 というURLよりも http://www.example.com/diary/2007/05/12 というURLのほうがユーザにとってもわかりやすいし、検索エンジンにもクロールされやすいといわれている。 Apacheでは後者のURLへのリクエストを、サーバ内で前者のURLに書き換えて処理を行うための"mod_rewrite"というモジュールが存在する。mod_rewriteを使えば既存のWebアプリケーションに大きな修正を加えずに、後者のようなアクセシビリティの高いURLを提供することができる。また、サーバ上でWebサイトのフォルダ構成を変更した場合などもmod_rewriteを使用する