タグ

2012年9月3日のブックマーク (83件)

  • シェル操作課題 (cut, sort, uniq などで集計を行う) 解答編 - Yamashiro0217の日記

    さて先日の設問編 http://d.hatena.ne.jp/Yamashiro0217/20120727/1343371036 の解答例です。 はてブとかトラックバックで解答例もらってて、あきらかに俺の解答よりよかったり面白かったりするので、 最後にまとめたので見てみると面白いと思う。 他の人の解答見てたらsortコマンドがファイルを受け取れるということに気づいた2012年夏。 uniq -c 使ってる人あんまりいない印象。 問1 >cat hoge.log 問2 >cat hoge.log | cut -d, -k1,4 問3 >grep server4 hoge.log 問4 >cat hoge.log | wc -l 問5 >cat hoge.log | sort -k1,1 -k3,3n -t, | head -5 問6 >cat hoge.log | sort -u | wc

    シェル操作課題 (cut, sort, uniq などで集計を行う) 解答編 - Yamashiro0217の日記
  • TDD Boot Camp 横浜 Second Seasonにスタッフとして参加してきた #tddbc - Diary of absj31

    9月1日 TDD Boot Camp (#TDDBC) 横浜 Second Season(神奈川県) 2012/09/01 TDD Boot Camp 横浜 Second Season #tddbc - Togetter 去年夏の東京1.6、秋口の横浜に引き続いてのTDDBC参戦。 TDD Boot Camp 東京 1.6に参加してきた #tddbc - Shinya’s Daily Report TDD Boot Camp 横浜に参加してきた #tddbc - Shinya’s Daily Report 開催会場は株式会社アットウェア@横浜。毎度お馴染み『アジャイルサムライ読書横浜道場』の場でもありますね。 今回はスタッフ/TAとして参加していたというのもあり、早め(8:45)に会場入り。諸々の調整、準備等をしているうちにあっという間に受け付け開始の9:30に。(※ちなみに当日はいっ

    TDD Boot Camp 横浜 Second Seasonにスタッフとして参加してきた #tddbc - Diary of absj31
  • - データベースの進化的設計

    データベースの進化的設計 Martin Fowler Pramod Sadalage 原文(Evolutionaly Database Design) ここ何年かで私たちはアプリケーションの開発に即してデータベースの設計を進化させることを可能にする技法を編み出した。このことはアジャイルメソッドにとって非常に重要である。この技法は継続的インテグレーション及び自動化されたリファクタリングをデータベースの開発に適用し、かつDBAとアプリケーション開発者が密接に協力することによって成り立つ。この技法は開発中のシステムや既に開発されたシステムに対しても機能する。 変化に対応する 制限事項 プラクティス集 DBAは開発者と密接に協力し合う 全員が自分のデータベースインスタンスを保有する 開発者は共有マスターに頻繁に結合する スキーマとテストデータから成るデータベース すべての変更でデータベースのリファ

  • makopi23のブログ 「DBリファクタリング読書会 第三回」に参加しました

    2012/8/30(木)「DBリファクタリング読書会 第三回」に参加してきました。 Atnd(告知ページ) http://atnd.org/events/31517 以下の書籍をターゲットとした読書会なのです。 ただ読書会といっても、みんなで集まってを読むのがメインではなく、DBリファクタリングに関する発表や座談会が中心です。私は第1回から参加してますが、今日が第3回の開催でした。 会場は日オラクル青山センターです。 3回目の参加なのに今日初めて知ったんですが、オラクルの真ん前に神宮球場あったんですね。。。 ちょうどヤクルト戦が開催されてて、ラッキー7のイニング合間だったのかどうかよくわかりませんが、球場の近くから花火が盛大に上がってて、それをみんなでオラクル13Fから眺めてました。 あと当日の様子のブログは、他の方が既に数名、詳細に書いてくださっていますので、そちらが参考になるかと思

  • 「TDDを明確に定義する」に対する返答 - tomykaira makes love with codes

    このエントリは id:kyon_mm さんの TDDを明確に定義する - うさぎ組 にたいするリプライです。拾ってもらえないと悲しい。 TL;DR 私にとって TDD はテストファーストを含む。理由は TDD という語があたえる語感である きょんさんが RED -> GREEN -> REFACTOR と言いながらテストファーストを含まないというのは矛盾を感じる この問題を解決するため、定義を一部具体化したい 編 一読して、うーん?という部分があったのですが、「テスト」という言葉についてなどの考えを共有したのでほとんど違和感はなくなっていました。上の記事の議論の中核には私はほとんど同意します。私はきょんさんの TDD という言葉の使い方にすこし違和感を感じています。揚げ足取り的になってしまう恐れがありますが、あえてこまかいところを指摘します。TDD = Test Driven Devel

  • alert('イチオシ'); // 書評 - JavaScript逆引きハンドブック : 404 Blog Not Found

    2012年09月03日19:30 カテゴリ書評/画評/品評iTech alert('イチオシ'); // 書評 - JavaScript逆引きハンドブック 出版社より献御礼。 JavaScript逆引きハンドブック 古籏一浩 待ってましたこういうの。 EcmaScript 5のサポートが一通り完了して、これからHTML5のAPIが充実していくという今は、JavaScriptを学ぶ最高の旬。だけどWebの情報は断片的で、折角の新APIを使おうにもどこから手をつけていいのかわからなかった。これで勝つる。 書「JavaScript逆引きハンドブック」は、「Ruby逆引きハンドブック」の出版社によるJavaScriptのシソーラス。「辞書」や「参考書」なら巷にあふれかえっているJavaScriptであるが、これがなかなかなかった。ましてやES5にHTML5といった最新の機能をカヴァーしているも

    alert('イチオシ'); // 書評 - JavaScript逆引きハンドブック : 404 Blog Not Found
  • 入社して3ヶ月 - インフラエンジニアの道は始まったばかり

    斎藤です。こんにちは。 2012年6月中旬にハートビーツに来て、3ヶ月半が経ちました。最近、雇用契約の契約書にサインをして、「よし、がんばろう!」と気持ちを新たにしたところです。 これまで、プログラマからインフラエンジニアに転向して様々な思いが去来していました。今日は、そのお話を書いてみたいと思います。 これまでの私について 私は、これまでプログラマをしながらインフラを守る仕事を同時にこなしていました。というのも、以前勤めていた会社では、自社プロダクトとして、Webサービスやソーシャルゲームの開発を行っていたからです。 従って、開発が終わることが仕事の終わりではありません。いい事も、悪い事も、全て因果応報であることを、常に、そして直に体感しながら仕事に携わっていました。運用に入り、しっかり作り込んで安定している部分がある一方、どこかで詰めが甘くトラブルを起こしてしまう部分もあります。 そ

  • 1日に175回もGitHubはデプロイしているだとぉ…!? | Act as Professional

    GitHubは普通の会社とどう違うのか? リリースマネージャーがいない(いる必要がない) 週次のデプロイセットもありません(この週にこれだけの機能をまとめてリリースとかがない) 開発者とデザイナーは、早く提供できるように自分たちでデプロイする(できる)作った人達が自ら確認できて、サクッとデプロイできるのであれば、さっさと作って、ささと出してしまった方が良いに決まっています。これを実現させるために様々な工夫がされているようです。 GitHubの基的なワークフロー
The basic workflow goes like this: Push changes to a branch Wait for the build to pass on our CI server Tell Hubot to deploy it Verify that the changes work and fix a

    1日に175回もGitHubはデプロイしているだとぉ…!? | Act as Professional
  • git flow でのチーム開発ワークショップ資料 - Yamashiro0217の日記

    この記事は会社内の別チームの方に、 僕の今のチームで git をどう運用してるかを ワークショップ形式で説明するための資料である。 事前準備 gitgit-flow を入れておくこと 参考資料(Macでgitgit-flowインストール) - xcode cli toolインストール -- https://daw.apple.com/cgi-bin/WebObjects/DSAuthWeb.woa/wa/login?appIdKey=d4f7d769c2abecc664d0dadfed6a67f943442b5e9c87524d4587a95773750cea&path=%2F%2Fdownloads%2Findex.action - homebrew のインストール -- https://github.com/mxcl/homebrew/wiki/installation - b

    git flow でのチーム開発ワークショップ資料 - Yamashiro0217の日記
  • やわらか頭でアルゴリズムを10倍生かす

    柔軟な発想で問題を定式化できれば、定番のアルゴリズムを驚くほど広い範囲に適用できます。 トップクラスのプログラマが問題を解く際にどのように考えているのかを紹介します。 目次

    やわらか頭でアルゴリズムを10倍生かす
  • アジャイルの「ライトウィング」と「レフトウィング」:An Agile Way:オルタナティブ・ブログ

    アジャイルの認知が進むにつれて、アジャイルという言葉がどんどん広がっている。アジャイル、という言葉の中にはいろんな要素が入っていることが分かる。もっと大きなものは、CI(継続的インテグレーション)を中核とする技術的なプラクティス群と、スクラムプロセスフレームワークのような、人と人との会話のプロトコルと協働関係を作るしかけだろう。自分の現状を、アジャイルに変えるためには、どうしたらよいだろう? "最近、「アジャイル」といっても中にいろんな要素があるために、「あなたのアジャイルは何のことを言っていますか?」と聞くことからはじめないと、話がかみ合わない"、と、Agile2012帰りのかわぐちさんと話していて、そのときに、かわぐちさんが描いた絵(たぶんどこかにある4象限の図)がいまひとつ自分にしっくりこなくて、私が描いて見た絵がこの絵だ。 あなたが、現状の開発現場を「アジャイル」に変えたい、と考え

    アジャイルの「ライトウィング」と「レフトウィング」:An Agile Way:オルタナティブ・ブログ
  • DRY原則とテストの可読性 - ✘╹◡╹✘

    DRY原則に従おうとするほど、テストコードがどんどん読みづらくなる。 The RSpec Bookに答えがあるかと思って読んでみたものの、「あるある」と一言述べているだけだった。辛い。 テストコードが読みづらくなる例を示すために、1つRubyのライブラリをつくった。 値とパターンを与えてValidationを行う機能を提供するライブラリ。 実装60行、テスト120行なので、詳しく見たければすぐ読めると思う。 最近不意ながらキラキラネームの命名力が上がってきたと思う。 avalon - A validator implementation for Ruby https://github.com/r7kamura/avalon 冗長だが読みやすい例 letもsubjectもローカル変数も何も用いずに率直に書いたテストコード例がこちら。 冗長だが読みやすく、テストコードを見ればライブラリの使い

    DRY原則とテストの可読性 - ✘╹◡╹✘
  • アメリカにはSIerなんて存在しない - GoTheDistance

    知人のmark-wadaさんのBlogからTB。 親子丼的ビジネス奮闘記(4) IT業界構造 SIerなんてものは無い 米国と日との大きな違いは、米国の企業は基的に内製なのだ。すなわち、社内のIT部門に開発エンジニアを抱え、そこでシステムの開発から運用を行なう。 ですから、米国のベンダーはそこに製品を供給する役割であり、日でいうSIerというのはほとんどなく、あっても企業でリソースが不足したらそれを補う役割でしかない。契約にしてもはっきりしますよね。提供されるプロダクトやサービスに対する対価を払えばよいわけで、かかった人月で支払ういう出来高払いのような形態は少ない。日のようにベンダーやSIerに丸投げして、できてからこんなはずではなかったなんて事態にははじめからならない構造なのだ。 親子丼的ビジネス奮闘記(4) IT業界構造 言われてみれば・・・、っていう感じですが改めて目が鱗です

    アメリカにはSIerなんて存在しない - GoTheDistance
  • Maven2のTipsを集めるWiki - CookBook

    {{toc}} !インストール !! Maven2をインストールする 既にJava環境(1.4以上)をインストールしているものとする。 http://maven.apache.org/download.html より [[magnoto|http://horoscope.magnoto.com/]] * maven-2.0.X-bin.tar.bz2 * maven-2.0.X-bin.tar.gz * maven-2.0.X-bin.zip のどれか1つをダウンロードし適当な解凍ソフトで展開する。展開後の'''maven-2.0.X'''ディレクトリを任意の場所に置く。(例えばWindowsであれば'''C:\maven-2.0.4'''、Unixであれば'''/usr/local/maven-2.0.4''') Windowsの場合、エクスプローラより'''マイコンピュータ'''を右ク

  • Java におけるコード進化パターン (Code Evolution Patterns in Java)

    Java におけるコード進化パターン (Code Evolution Patterns in Java) asato shimotaki <asatohan at gmail.com> 最終更新日 : 2009/6/21 (2004/4/22 より) [...] For twenty years, I spent two or three hours a day looking at pairs of things -- buildings, tiles, stones, windows, carpets, figures, carvings of flowers, paths, seats, funiture, streets, paintings, fountains, doorways, arches, friezes -- comparing them, and asking my

  • そろそろ例のプロジェクトについて言及するか - 西尾泰和のはてなダイアリー

    以前、とあるシステムのソースコードを読む機会があったのだけどあまりにひどかった。あのひどいコードでまあまあまともに動いているというのが逆に信じられない。今日昼ご飯をべながら少し話していたのだけど意外と知られていないようなので、話せる範囲でいかにひどいのか説明してみようと思う。 まず、ソースコードが大雑把に見積もって3750万行あるのだけど、その中でまともに機能しているコードは3%しかない。10分の1程度のソースコードで同程度の機能を実現しているシステムもあるのでほんとあのシステムのコードはゴミだと言っても過言じゃない(*1) プログラマとしてはなんでそのプロジェクトはそんな状態になってしまったのか気になるところだけども、まあ多くのプロジェクト同様、真相を知る人は誰もいない。でもまあ、実際に機能しているコードのコピーみたいなものがあちこちに散らばっていることからしてコピー&ペーストが盛んに

    そろそろ例のプロジェクトについて言及するか - 西尾泰和のはてなダイアリー
  • テストのエビデンスが品質を下げてる実態 - レベルエンター山本大のブログ

    今の現場は、テスト結果の精密なエビデンスが求められる。 今日はバグつぶしそっちのけで、テスト実施結果に対するエビデンスを採っていた。 数100項目のテストケースに対する画面キャプチャやデータキャプチャのエビデンスを採る。 これを綺麗に整理して、お客さんのハンコを貰わなくては番にあげられないルールだ。 コア部分のバグ改修できるのは僕だけだが、まにあわないのでバグよりもエビデンスを優先した。 品質よりも品質保証を優先したわけだ。 う〜ん、事情はわかるけど、、、あほくさい。 バグを見つければ見つけるほど、強烈なエビデンス編集作業があるから テストをやってくれてるプログラマーさんも、恐る恐るテストを叩くようになってしまった。 っていうか200ページを越えるテストエビデンスをお客さんに確認させるのってどうやろ。 超大手sIerのBigなドMっぷりには、恐れ入りました。 質的なサービスに集中できる

    テストのエビデンスが品質を下げてる実態 - レベルエンター山本大のブログ
  • はてなブログ | 無料ブログを作成しよう

    引越し遍歴パートⅡ 2018年に「上京して10年で引越しを6回した」というブログを書いた。 月日は流れ、あれから6年…さらに2回の引越しをした。ホテル暮らしも含めると3回かもしれない。 前回の記事では主に神奈川〜千葉〜東京の引越し事情を書いた。関東の浅瀬でちゃぷちゃぷ遊んでいたに過…

    はてなブログ | 無料ブログを作成しよう
  • Javadoc の書き方 - イトウ アスカ blog

    みなさん、Javadoc 書いてますか? Javadoc は「API ドキュメント」と言われることが多いように、主にライブラリ的なプログラムで書いてこそのものだと思っている方もいるかもしれません。しかしながら、仕様書を Word や Excel(笑)で別途作ると、プログラムと仕様書の同期がとれてないというはめに陥り易くなりますので、Javadoc はどんなときも活用したいというのが私の考え方です。 まず、overview.html を書け Javadoc コメントをいくらか書くような人でも、overview.html を書く人は意外と少ないのではないでしょうか。リファクタリングが何度となく行われるアジャイル開発の現場では、クラスの構成がよくかわりますので、いちいち詳しいコメントを書いていられないということはあるかもしれませんが、overview.html はそれほど何度も手をつけるようなも

    Javadoc の書き方 - イトウ アスカ blog
  • 現実の構造を分析し、それをプログラムの構造にそのまま写すのが何故いけないか - みねこあ

    わたしの以前のエントリー中の 例えば、カモノハシ の5章では、エイトクイーンパズルを解いていますが、これは Queen オブジェクト自体に「取られない位置に進む」「この位置を自分が攻撃できるか?を答える」という責務を持たせる Queen を各列に一づつ置く 端から順にQueen に「取られない位置に進め」をさせる。 という解き方をしています。各Queen は自らの位置の解を自ら解きます。 (中略) Board というオブジェクトは必ずしも必要ないですし、連結リストの一番端には現実には存在しない「番兵」を置く場合もあります。なによりも、Queen の駒が現実で勝手に自分の攻撃されない位置を求めて動くなんてありません。(そんなチェス盤を開発してくれ、という要件ではないのです) つまり、これは現実の写像ではありません。でも良いデザインです。 憂レビューの補足 - みねこあ について、わから

    現実の構造を分析し、それをプログラムの構造にそのまま写すのが何故いけないか - みねこあ
  • 互いに関連のないオブジェクトを1つのインターフェースにまとめて共通的にアクセス可能にするライブラリを作ってみた - 矢野勉のはてな日記

    Javaもともとやりたかったことは、 あるオブジェクト(インスタンス)がすでに手元にある そのオブジェクトのクラスは何らかの理由で継承不能 そのオブジェクトの一部メソッドをオーバーライドしたい そのオブジェクトにメソッドを1つ足したいという、JavaScriptならすぐにできちゃうことがしたかった。で、これって、オーバーライドしたいメソッドと、追加したいメソッドだけを持ったあるオブジェクトAを用意して、メソッド呼び出し時に該当メソッドの時だけAに委譲しちゃえばできるよね、と思った。他のメソッドはすべてもとのオブジェクトに委譲する。 で委譲コードを書いてみても、すんごいめんどくさい。たくさんのメソッドを定義して、ただ委譲するだけのコードをかかないといけない。でCGLibあたりにそういうのがあるだろうと思って見てみたのですが、どうもないみたい。なんかありがちな要望だと思ったんですが、もうちょっ

  • 全Eclipse Java プログラマーに捧げる Eclispe 徹底活用術完全版〜Eclipseに空気を読ませて楽する術〜 - Yamashiro0217の日記

    この記事は、http://d.hatena.ne.jp/higayasuo/20090612/1244772658 の「Ctrl+1とCtrl+Spaceうんぬん」の話にインスパイアされて書いた。Eclipse可愛いよ。Eclipse。 記事長いから、さくっと読み飛ばして、アニメーションgifがあるところから読んでも十分訳にたつと思う。 あと、新人さんとかに写経させるのもいいかも。というか、半分ぐらいうちの新人に勉強のためと思って書いたから。で、実際に写経させて役にたった。 Java は Eclipse などの IDE も含めて言語というか、環境というか…だと僕は思ってる。Commons, Maven なども含めたい(まぁ、そのあたりは、CPANも含めてperlだろ。とか、これは否定する人だらけだろうけど、Railsrubyということを言う人もいるよね)。 少なくとも僕は、Eclipse

    全Eclipse Java プログラマーに捧げる Eclispe 徹底活用術完全版〜Eclipseに空気を読ませて楽する術〜 - Yamashiro0217の日記
  • JUnit4でテストクラスの並列実行 - cactusman日誌

    最近、スローテスト問題というのが深刻になっています。 JUnitは基的に逐次実行されるため、高性能なPCでも待たされる処理があるとどうしても時間がかかってしまいます。 JUnit3では川口さんが作成した「Parallel Junit」があるので並列実行することができるのですが、JUnit4対応はされていません。 なので、JUnit4で何かないかと調べてみましたが、使えそうなものはなさそうでした。 なければ作るというわけで、とりあえずSuiteクラスを継承して実装してみました。 package org.cactusman; import java.util.ArrayList; import java.util.List; import org.junit.runner.Runner; import org.junit.runner.notification.RunNotifier; im

    JUnit4でテストクラスの並列実行 - cactusman日誌
  • 最近SIerがだいぶヤバくなっている件 - GoTheDistance

    via IT業界から思ったことを。 Twitterでつぶやいたら結構こんな感じで厳しい状態になっているSIerが増えているようなので、僕なりに現状をまとめてみる。 よくわかるSIer涙目の構図 サブプライム、金融危機でSIerのお得意様の金融・メーカー様が大打撃をらう。 2008年はとりあえず様子見で予算編成は据え置きだったが、今年に入って財布にチャックがかかる。 先行き不透明なので、GW明けぐらいの今期のIT予算が相当カットされた数字になった所が続出。 計画していた新規案件を中止するなどする。運用でなるべくカバーする方向へお客様が動く。 その結果SIerは新規案件がなくなる。案件自体がなくなっていく。予算が無いから当たり前。 大手がプロパーの仕事がなくなってきたのでプロパーで人数減らしてまわし始める。 プライムでい込んでいるお客様の仕事が減ってきたので、外注に仕事が依頼できる余裕がな

  • データ & アナリティクス | アクセンチュア

    データ分析から導き出されたインサイト無しにAI人工知能)の活用は始まりません。私たちは、各業界知識とデータ・アナリティクス技術を駆使しデータドリブン経営を強力に支援します。 データ、アナリティクス、AIは企業にとって競合他社との差別化を図るかつてないほど大きな要因になっています。今日の経営幹部が効率を向上しながら新たな収益源を開拓し、新しいビジネスモデルをタイムリーに構築する方法を模索する中、価値を生み出し成長を続ける企業には「データ活用」という共通項があります。私たちは、無数のデータから企業にとって当に必要なデータを活用するための方法を知っています。 将来を見据えたオペレーション体制を備えている企業の半数以上(52%)は、すでにデータとアナリティクスを大規模に活用しています。データとAIに関する取り組みをビジネス戦略に沿って実施することで投資利益率を迅速に最大化し、最終的にはAIをビ

    データ & アナリティクス | アクセンチュア
  • アジャイルって受託開発との相性が最悪な気がする - GoTheDistance

    全くもって、その通りだなぁと思った。 初期段階ですべての意志決定をしても、問題はコードを書き始めてから表れるのです。そして終わりに近い時点で判断する方が、より正しい判断ができるはずです。ですから、できるだけ意志決定は先延ばしにして、正しい意志決定をしようとするのがアジャイルのやり方です。 「有能な人がコードを書くべき」「意志決定はできるだけ先延ばし」「契約を変えるのは難しい」アジャイルの専門家の答え - Publickey 「ウオーターフォールとは」のラベル貼りの議論になるとめんどくさいから、とりあえず「初期段階ですべての意志決定をしようとするシステム開発の進め方」という定義で話を進めたいと思います。 滝 「要件定義」→「設計」→「実装」→「テスト」という一連の流れがあって、ウオーターフォールなるものは前工程が100になるまでひたすらそこでPDCAを回します。100になると言う意味は、ソフ

    アジャイルって受託開発との相性が最悪な気がする - GoTheDistance
  • NullPointerExceptionなどの標準例外を使っていないわけ - taediumの日記

    Domaでは、Daoのメソッドに期待されない引数(nullとか)が渡された場合に例外をスローしますが、そのときの例外にNullPointerExceptionやIllegalArgumentExceptionを使っていません。代わりに、DomaNullPointerExceptionやDomaIllegalArgumentExceptionといったDoma独自の例外を投げます。 これはなぜかというと、Daoのメソッドに対する事前条件を満たしていないのか、それともDoma自身にバグあって例外がスローされてしまっているのをわかりやすくするためです。 つまり、DomaNullPointerExceptionやDomaIllegalArgumentExceptionがスローされるということは、「これはDomaが意図的にスローしています。なんらかの条件を満たしていません。」というメッセージです。そし

    NullPointerExceptionなどの標準例外を使っていないわけ - taediumの日記
  • 受託開発とGPL

    GPLに対する代表的な誤解・・・というかむしろ謎のひとつに、受託開発(SI)におけるライセンスの扱いがある。この点が明確になっていないため、受託開発において無意味にGPLを回避しようとしたり、GPLに対するFUDを流布することに対する原因になっていたりするように思う。フリーソフトウェアおよびオープンソースソフトウェアを愛する者として、そのような状況は断じて見過ごすことができない!!というわけで、今日はGPLを受託開発(SI)において用いる場合の注意事項を説明しよう。 GPLの使いどころ受託開発においてGPL(とその仲間たち=LGPL、AGPL)が登場するのは、第三者、つまり発注側でも受託側でもない者が作成したGPLのソフトウェアを利用する場合である。例えばGPLが適用されたライブラリなどだ。周知の通り、GPLのソフトウェアをリンクしたソフトウェアを再配布する場合は、そのソフトウェア全体に対

    受託開発とGPL
  • 画面設計とか外部設計とか、もうやめようよ - masayang's diary

    昨日は特徴(Feature)、粗筋(Story)、脚(Scenario)でちょいと言及した「Feature, Story, Scenarioがごっちゃになりかけている」プロジェクトの人達とお話しする機会があった。 よくよく見ると、FeatureとFunctionとがごっちゃになっていた。 つまり、要件分析の段階で実装のことを考えていたのである。 なぜ、そうなったのだろう? 画面から要件分析をすると、こうなる どうやら要件分析する前の段階で「コンサルタント」の人達が、画面を使ってお客さんと「要件定義」をしていたらしい。 「この画面でこういうデータを入力すると、こんな画面に遷移します」みたいなやりとりがあったのだろう。 紙芝居感覚で交渉できるからわかりやすい。 だけど、先に画面を決めちゃうというのはいくつかの(そして時に致命的な)問題を抱えている。 実装をフィーチャとして捉える可能性。 例え

    画面設計とか外部設計とか、もうやめようよ - masayang's diary
  • NTTデータのHadoop報告書がすごかった - 科学と非科学の迷宮

    業界トップ のエンタープライズ Hadoop 企業 Cloudera に入社しました http://www.cloudera.co.jp/ 今年の6月に、「平成21年度 産学連携ソフトウェア工学実践事業報告書」というドキュメント群が経産省から公表されました。 そのうちの一つに、NTTデータに委託されたHadoopに関する実証実験の報告書がありましたので、今更ながら読んでみることにしました。 Hadoop界隈の人はもうみんなとっくに読んでるのかもしれませんけど。 http://www.meti.go.jp/policy/mono_info_service/joho/downloadfiles/2010software_research/clou_dist_software.pdf 「高信頼クラウド実現用ソフトウェア開発(分散制御処理技術等に係るデータセンター高信頼化に向けた実証事業)」という

    NTTデータのHadoop報告書がすごかった - 科学と非科学の迷宮
  • コードのクリーンアップ - 技術的負債の返済に役立つ 9 つの戦術

    このブラウザーはサポートされなくなりました。 Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。 技術的負債の返済に役立つ 9 つの戦術 David Laribee MSDN Magazine の 2009 年 12 月号では、技術的負債に取り組むために、問題を特定して主張を展開するためのアドバイスを書きました。簡単に言えば、近い将来に問題になりそうな負債を特定することが重要だと信じています。コードベースのほとんど触れられない部分で、価値ある技術を確立しても、明日の生産性向上の実現には役立ちません。 また、負債返済の重要性について経営陣からお墨付きを得ることの重要性を理解し、同じ理由から手堅い主張を展開するための基ツールを用意してください。 では、利息の高い技術的負債を返済するうえで役立つ可能性がある戦

    コードのクリーンアップ - 技術的負債の返済に役立つ 9 つの戦術
  • 個別案件にオブジェクト指向は要らない - 設計者の発言

    「ウォーターフォールかアジャイルか」をはじめとして、ソフトウエア開発手法に関してさまざまな議論があるが、すべてのソフトウエアをいっしょくたにすべきではない。たとえば「ECサイト」と「業務システム(基幹業務支援システム)」とは、同じ「データベースシステム」に分類可能だとしても、専門性が大きく異っている。両者をまとめて議論しても実りが多いとは私には思えない。 私の専門は「業務システム」なのだが、次のように勘定科目と密接な関係を持つ複雑なデータ構造を扱う点が特徴的である。 <サービス業向け販売管理システム> ・発注、買掛残高、仕入実績、支払 ・受注、売掛残高、売上実績、原価実績、請求 <物販業向け販売管理システム> ・発注、買掛残高、仕入実績、支払 ・受注、売掛残高、売上実績、請求 ・在庫残高、受払実績、棚卸、倉庫移動 <生産管理システム> ・発注、買掛残高、仕入実績、支払 ・受注、売掛残高、売

    個別案件にオブジェクト指向は要らない - 設計者の発言
  • Java で Map を回す時は entrySet の方が早い(とりあえず HashMap の話) - 宇宙行きたい

    最近,SQL ばかり書いてて久しぶりに Java 書いたら 「Map ってどうやって回すんだっけ??」 という超初歩的な疑問がwwww 拡張 for 文で keySet 回せばいいかなぁと思ったら id:sett-4 に 「entrySet まわした方が早かった筈ですよ」 って言われた. 勝手な想像で,entrySet って Iterable#iterator() の Iterator#next() で return new Map.Entry(key,map.get(key)); 的な事してて逆に遅いんじゃね??って思ったので 調べてみた. とりあえずソース読んでみる そしたら public Set<Map.Entry<K,V>> entrySet() { return entrySet0(); } private Set<Map.Entry<K,V>> entrySet0() { Se

    Java で Map を回す時は entrySet の方が早い(とりあえず HashMap の話) - 宇宙行きたい
  • Git入門 ゼロから始めるGitドリル

    gitの勉強をしつつ取ったノートを記事化しました。一応これを読めばざっくりとした導入やSVNとの違いが分かってもらえるように書いたつもりです。svnを使った経験があることを前提に進めていきます。 svnの場合、一つのレポジトリに対して認証のあるユーザが変更を報告していくユースケースをとっています。gitの場合は、個々のローカルマシンにリポジトリが分散されて配置され、お互いに変更を報告しあうユースケース。これはLinuxの伝統的なバザール方式の開発を想定しています。そのため例えばカフェや電車で開発したり、マスターはgithubやgitfarm(Git Hosting参照)にしておいて時々ローカルの変更を報告することも可能です。 目次 インストール 基操作 Gitリポジトリの作成 ブランチの作成。 タグ ファイルを無視する 索引の理解 取り消し 導入 --hardと--softの違い 一個の

    Git入門 ゼロから始めるGitドリル
  • ひがやすを blog - Javaを古くしたやつとRubyを煽っているやつ

    その正体はわかったよ。正体わかった瞬間からだが震えたよ。まじで。 まずは、羽生さんのこのエントリを見て欲しい。 http://d.hatena.ne.jp/habuakihiro/20070922#1190464426 その後によしおりのこの有名なエントリも復習して欲しい。 http://d.hatena.ne.jp/jYoshiori/20070826/1188150596 もうさぁ、変わってないよねぇ。昔からのこの構図。歴史は繰り返すっていうの。 あからさまにいうとさぁ。賢いスーツな奴らと、頭の固くてあわれで保守的なおやじの歴史だよ。 最初は、EJBだよ。EJB。これからは、ビジネスコンポーネントが流通して、もうプログラミングはいらなくなる。コンポーネントの組み合わせを考えるだけでOKみたいな。最初にね、キャッチーな言葉とともに、あらたなテクノロジーを広めようとするのは、賢いスーツな奴

    ひがやすを blog - Javaを古くしたやつとRubyを煽っているやつ
  • プログラマが仕様を決めればいい - GoTheDistance

    最近よく思います。 システム開発の上流工程においてはコードは出てこない。言葉や図解で埋めつくされて、最終的には日語でしかない。設計書とか仕様書とか。で、この大抵上流工程ではこれらのドキュメントに対するレビューなるものがあるのですが、これが実に無益なものだと感じることが多い。こんな所でPDCAまわして何が面白いんだろうとよく思う。 ここでチェックする多くのことは、言葉の解釈に関することがほとんどです。 この言葉はプロジェクトで使われていない 書き方が統一されていない 誤字脱字が多いので直せ。 この文章ではこのように解釈される恐れがある ここではこのような話になっていたがどうなのか こんなんばっか。どこもそうだと思う。解釈の違いは、要件の違い。なんちゃって。 で、結局こういうことを繰り返していくうちに段々とドキュメントがグダグダになっていく。そして繰り返していっても前提が変わってしまえば全部

    プログラマが仕様を決めればいい - GoTheDistance
  • Java回顧録 〜独白: 僕は全ての事をJavaから学んだ〜 - 風と宇宙とプログラム

    先日Javaのコードを3年振りくらいで書いてみたら、無性にJavaについて振り返ってみたくなった。Javaの誕生当時をリアルタイムで経験した僕にとってJavaは感慨深いものであり、多くのことをJavaから学び、僕を成長させてくれた原点でもある。 僕とJavaとの関わりはJavaがまだOakと呼ばれていた頃から始まる。1994年の暮れの頃だったと思う。Oakで書かれたWebブラウザはWebRunnerと呼ばれていて、両者はほとんど一体だった。会社の上長からこれを使って携帯情報端末機器を開発することになったから、秘密裏に調査しておくようにと突然指示された。後になって知ったことだが、Oakは家電などの組込み系を想定して開発されたもので、当時Sunは日の多くのメーカに呼びかけてOak を普及させようとしていたようだ。 その頃のインターネット事情というのは、Mozilla(Netscape)が登場

    Java回顧録 〜独白: 僕は全ての事をJavaから学んだ〜 - 風と宇宙とプログラム
  • Git初心者が絶対に覚えておくべきコマンド - idesaku blog

    Gitの使い方を覚えるにあたって、まず知っておきたいのは――git-cloneだのgit-commitだのは当然として――「操作をミスったときにどのように回復するか」である。それを実現するのは、次の3つのコマンドだ。 git-commit --amend git-reset git-reflog git-commit --amend あるファイルをコミットしたとしよう。 $ (edit...) $ git commit -am 'メッセージ生成処理を実装したよ。'しかし、しばらくして彼は気づいた。 def create_massage(param) ...typoしてる!massageじゃない、messageだ!マッサージを作ってどうする! 慌てるな。まずは直してステージに上げるんだ*1。 def create_message(param) ...$ git add .そして…。 $ gi

    Git初心者が絶対に覚えておくべきコマンド - idesaku blog
  • オブジェクト指向開発を理解した開発者に、設計書は不要:アジアのソフトウェア開発現場にて:エンジニアライフ

    シンガポールでアジアのエンジニアと一緒にソフトウエア開発をして日々感じること、アジャイル開発、.NET、SaaS、 Cloud computing について書きます。 わたしのソフトウェア開発者としての経歴は10年程度。10年間、いろいろなものを作ったが、「設計書」と言えるもの、つまり「基設計書」「詳細設計書」がある形でプログラム開発したことは一度もない。たぶん、これからもないかと思う。 「大したものを作っていないのでは」と、わたしのソフト開発者としての能力を疑う人が出てくるかもしれない。しかし、大企業で大勢の人に使われるようなシステム――規模にして数十年月のしっかりしたシステムを作ってきたことは事実である。ということで今回は、「設計書なしでかなりの規模のシステムを作る」ことに関するわたしなりの方法論を少し書いてみる。 オブジェクト指向は必須である。「設計書なしである程度の大きさのソフト

    オブジェクト指向開発を理解した開発者に、設計書は不要:アジアのソフトウェア開発現場にて:エンジニアライフ
  • TddAntiPatterns - TDD のアンチパターン

    TddAntiPatterns - TDD のアンチパターン 目次 この文書について TDD のアンチパターン TDD アンチパターン・カタログ 嘘つき。 (The Liar) セットアップ過多 (Excessive Setup) 巨人 (The Giant) モック酔い (The Mockery) 検査官 (The Inspector) 太っ腹な残り物 (Generous Leftovers) 地元の英雄 (Local Hero) 小姑 (The Nitpicker) 秘密のキャッチ (The Secret Catcher) ペテン師 (The Dodger) 大声 (The Loudmouth) はらぺこキャッチ (The Greedy Catcher) 序列屋 (The Sequencer) 隠れ依存 (Hidden Dependency) 点呼 (The Enumerator)

  • 地獄のようによくわかるSQLテーブル結合 - こせきの技術日記

    テーブルのJOINが苦手でしたが、この例を思いついてからは、すっきりくっきり理解できるようになりました。むしろ頭から離れません……。 ※ INNER、OUTERは飾り。省略できる。 INNER JOINJOIN LEFT OUTER JOIN → LEFT JOIN RIGHT OUTER JOIN → RIGHT JOIN ※ ON ...=... をまとめて USING(属性) と書ける。 ※ 何で結合するか言うまでもない時は、NATURALを指定すると勝手にJOINしてくれる。NATURALにJOINして……。 ※ WHEREは結合した結果に作用する。 ※ 現実には上図のように1対1で結合しません。 ※ おまけ。CROSS JOIN。 こんなの使いません。 ブクマ用画像。

    地獄のようによくわかるSQLテーブル結合 - こせきの技術日記
  • JavaVM対応のWebフレームワークを比較する

    SpringやStrutsやGoogle Web Toolkitなど、たくさんあるJava VM対応のWebフレームワーク。どれがどのような特徴を持ち、何を選べばいいのでしょう? 11月15日から行われたJava開発者が集うイベント「Devoxx 2010」。このイベントで行われたMatt Raible氏によるセッション「Comparing JVM Web Frameworks」(JVM Webフレームワークの比較)のプレゼンテーションが、同氏のブログにポストされたエントリ「My Comparing JVM Web Frameworks Presentation from Devoxx 2010」で公開されています。 その内容は、開発者の方々に非常に参考になるのではないかと思うので、全56枚のプレゼンテーションの中からポイントとなる部分を紹介します。 評価優秀とされたのはSpring、GW

    JavaVM対応のWebフレームワークを比較する
  • 爱好中文网 - 最好看的免费小说阅读网

    【简繁】过尽千帆-中短篇H虐文合集 故事1是他的女儿也是他的子(nph):妈妈因她过世之后,她就担任起妈妈的所有职责,包括在床上取悦爸爸 /妈妈因她过世之后,她就担任起妈妈的所有职责,包括在床上取悦爸爸 ☆简繁同发 / 简繁同发1000字? 50po 缘更 /? 缘更--------------------------------? 七月晴连载0万字高辣 教师 《人教师》作者:弘扬|2011年末开始写的文章,后来忙了一段时间所以断了,现在有时间接着写还是那句话,调教老婆来就是男人的责任! 午夜人屠连载12万字高辣 [综武侠]移花宫主她超忙的 上一个二十年,是邀月燕南天等人的江湖。这个二十年,江湖群杰,移花宫主花满园一枝独秀。移花宫主花满园,她曾远赴大漠打败快活王与石观音,也曾在孤岛与燕南天生死决斗。有人说她是江南第一美人,百晓生却说她是天下第一美人。她男友众多,从塞北的西门吹雪,到南

  • SIは面白くないけどエンタープライズは面白い - きしだのはてな

    ここんところ、SIという業態はもうダメという話になってます。 で、エンタープライズ(=企業向けシステム)というのは、SIという業態で開発されるので、エンタープライズ=SIという前提で、企業向けシステムは面白くないという話になっています。 そこから、企業向けアプリは面白くないからサービスを作りましょう、という流れになって、GREEやDeNAなどに人材が流れてます。 実際は、サービスや企業向けというアプリケーションの種類と、SIや内製、パッケージという構築側の業態は独立なので、別に語るべきです。 たとえば、このインタビューを見ると、ゲーム業界もSI化していて、面白くなくなっていそうなことが伺えます。 稲船敬二氏は,何を思い,何を考え,何を目指してカプコンを辞めていくのか。渦中の氏に直撃インタビュー また、GREEやDeNAが提供するゲームは急激に大規模化していて、おそらくSI形態での開発が増え

    SIは面白くないけどエンタープライズは面白い - きしだのはてな
  • A successful Git branching model を翻訳しました

    Vincent Driessenさんの "A successful Git branching model" を翻訳しました。 元記事はこちら: http://nvie.com/posts/a-successful-git-branching-model/ (翻訳の公開と画像の利用は人より許諾済みです) このブランチモデルの導入を補助してくれる、git-flowというGit用プラグインがあるそうです。 翻訳の間違い等があれば遠慮なくご指摘ください。 この記事では、私のいくつかのプロジェクト仕事でもプライベートでも)で約一年ほど導入して、とてもうまくいくことがわかった開発モデルを紹介する。しばらく前からこれについて書くつもりだったんだが、今まですっかりその時間を見つけられずにいた。ここでは私のプロジェクトの詳細については書かず、ブランチ戦略とリリース管理についてだけ述べよう。 以下では、

    A successful Git branching model を翻訳しました
  • 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
  • 意図に関係する大事なことがら - かとじゅんの技術日誌

    最近、DDDの"意図の明白なインタフェース"というパターンの章を読みなおしています。このパターンが一環して主張していることは"名前が重要"ということです。その名前の重要性について、いろいろな文献からの引用を用いて考えてみたいと思います。 名前重要 "名前が重要"といえば、「プログラマが知るべき97のこと」で、まつもと ゆきひろ氏が 「名前重要」というタイトルで名前の重要性について語っています。 適切な名前をつけられると言うことは、その機能が正しく理解されて、設計されているということで、逆にふさわしい名前がつけられないということは、その機能が果たすべき役割を設計者自身も十分に理解できていないということではないでしょうか。 名前が設計と強く結び付いていることがわかる、深イイ言葉です。 名前の決定が難航すると「えぃ、面倒だから適当に名前を付けてしまえ」となりがちです。油断すると結構適当になるもん

    意図に関係する大事なことがら - かとじゅんの技術日誌
  • 「検査例外はアジャイルやオブジェクト指向の考えに反するという事実」について一部誤解あり - かとじゅんの技術日誌

    追記: id:Nagiseさんからエントリいただきました。 というわけで、ややしつこく感じられるかもしれないけど誤りだと思うところはツッコミを入れさせてもらいます。人に恨みがあるとかそういうわけじゃなくて、説に用事があるってところをご理解いただければ幸いです。 こちらも建設的な議論をしたいと思っているので、もちろん、そのつもりです。 中間のクラスが〜という話題は、開放閉鎖原則を破って境界面に変更を加えた場合に話であって、検査例外が開放閉鎖原則を破るわけじゃない。 なるほど。よくわかりました。 目的と手段で分離してみた場合、「開放閉鎖原則」を「検査例外」を使って破っているだけであって「検査例外」自体の存在が「開放閉鎖原則」を破っているわけでない。「開放閉鎖原則」を破るのは「非検査例外」でもできるわけで、直接の因果関係は成立しないということですね。これは、私の論じ方に問題あったようです。ここに

    「検査例外はアジャイルやオブジェクト指向の考えに反するという事実」について一部誤解あり - かとじゅんの技術日誌
  • 連載: 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 を利用したアプリ連携の実現 #鬼わか 解説(前編)
  • http://devsummary.miukoba.net/

  • Javaのチェック例外はクソ仕様 - やさしいデスマーチ

    Java言語のチェック例外は当にGood Partなのか?というエントリーを読んで自分の考え方を簡単にまとめておこうと思う。 まず、チェック例外自体はJavaの『あまり良くない仕様』とみるのが体勢であると思う。自分もどちらかといえば、『なるべく実行時例外で』という派。とはいえ、『クソ仕様なんでチェック例外はまったく使うべきではない』派ではなく、『必要に応じて使い分ける』派。そもそもクソ仕様とdisるくらいならクソ言語なんか使わない方が幸せ。 まずチェック例外自体に関する問題を改めて整理する。 いちいち定義するのがクソ面倒 常にtry-catchかthrows句を強制するのでクソウザい 横断的に処理しにくい 大規模プロジェクトになればなるほど、例外に関するスキルがないクソ人ばかり これらについては散々議論されているだろうし、愚痴になるだけだと思うので割愛。 で、自分はどうして『必要に応じて

    Javaのチェック例外はクソ仕様 - やさしいデスマーチ
  • Java言語のチェック例外は本当にGood Partなのか? - 達人プログラマーを目指して

    デブサミ2011会場のオライリーのブースで目に入ったため、以下のを購入しました。 Java: The Good Parts 作者: Jim Waldo,矢野勉,笹井崇司出版社/メーカー: オライリージャパン発売日: 2011/02/24メディア: 大型購入: 3人 クリック: 148回この商品を含むブログ (37件) を見る180ページほどの薄いですし、各章は独立して気軽に読むことができます。早速、気になるいくつかの章から読んでみました。ただし、監訳者のid:t_yano氏も前書きで 書が、みなさんにとってJava以外の言語についても考えるようになり、みなさんのプログラミングの世界がさらに豊かになることを望みます。 と書かれているように、このから直接Javaのプログラミングのテクニックや知識を得るというよりも、ベテランの上級者がJavaについて考え直すきっかけ作りとして読むのが良

    Java言語のチェック例外は本当にGood Partなのか? - 達人プログラマーを目指して
  • Javaパフォーマンス計測 文字列操作編 - プログラマーの脳みそ

    前回でパフォーマンス計測に用いるタイマーについての理解を深めたので、やっとパフォーマンスの計測を始めることができる。 今回のテーマはJavaの文字列連結だ。タイムリーだね。 文字列連結についての基礎知識 Javaの文字列連結についての言語仕様まわりは Stringの連結はそう簡単なものではない - じゅんいち☆かとうの技術日誌 が詳しい。しかし、パフォーマンス計測がなっちゃない。パフォーマンスの計測はそう簡単なものではない。 currentTimeMillis()で計測しておいて plusTime:14780, concatTime:7053, sbuilderTime:7, sbufferTime:13 とか、その7とか13の有効数字はいくつだっての*1。 そんなわけで、計測方法を工夫してみよう。二重ループとし、内側を1000回、それを500回繰り返す。ループが1回まわる間に1回ずつSy

    Javaパフォーマンス計測 文字列操作編 - プログラマーの脳みそ
  • 議事録を書くときに意識すべきこと - Be Happyman!!

    開発現場であってもそうでなくても議事録を書く機会は多いのですが、意外に役にたつ議事録を書くのは難しいものです。ということで、以下自著『プロジェクトを成功させる現場リーダーの技術』より議事録の書き方をまるっと引用。キーワードは「目的・課題・アクション!」です。 会議は避けられない 一口に会議といっても、あらかじめ計画されている定例的なものから、突発的に発生する小さなプロジェクト内ミーティングにいたるまで色々ですが、プロジェクトがさまざまな人との協調作業であり、プロジェクトの生み出す価値がたくさんの利害関係者の合意によって成り立つ以上、会議は必要かつ重要な活動です。実際、大規模プロジェクトでは、プロジェクトの計画段階でコミュニケーション計画として会議体が定義されます。世の中無駄な会議が多すぎると嘆かれながらも、実際問題として、プロジェクトは会議によって進んでいるというのも事実です。 現場リーダ

    議事録を書くときに意識すべきこと - Be Happyman!!
  • マルチコア時代に備えて本気でメモリモデルを理解しておこう - リオーダー & finalフィールド 編 - - かとじゅんの技術日誌

    長い文章になってしまったので、概要だけ先に書きます。 以下のJavaプログラムは、常に上から下に順番に命令が実行されると思いますか?つまり、aに1が格納された後に、bに2が格納されると思いますか? 実は場合によってはこの実行順序が入れ替わる場合があります。これはJavaの言語仕様として定義されていることです。これを考慮しないと信頼性のある並行処理は実装できません。 気になる人は以下を読んでみてください。 a = 1; b = 2; すでにインターネットは社会インフラ化しています。ソーシャルネットワークで多くの人とコミュケーションやコラボレーションできる時代で、個人が情報を作り消費することは当たり前になってきています。そして、インターネット上のコンテンツは増加の一途を辿っています。「情報爆発」なんて言葉も耳慣れた言葉になりましたが、その問題解決のためにMapReduceなどの分散処理技術に注

    マルチコア時代に備えて本気でメモリモデルを理解しておこう - リオーダー & finalフィールド 編 - - かとじゅんの技術日誌
  • 業務系のJavaプログラマーが知っておくべき10個のBad Partsとその対策 - 達人プログラマーを目指して

    Java: The Good Partsののタイトルに触発されて、逆にJava言語の使いにくい部分をいくつかピックアップしてみました。Java EEなどの業務系のアプリケーションプログラマーの視点で書いていますので、別の立場ではここで指摘している事項が必ずしもBad Partではないという指摘もあるかもしれませんし、他にもいろいろなポイントがあると思いますが、とりあえず、私の独断で思いついたものを10個説明したいと思います。 1.標準APIのチェック例外が扱いにくい Java言語のチェック例外は当にGood Partなのか? - 達人プログラマーを目指してでも取り上げましたが、Bad Partの第一番目として標準APIのチェック例外が扱いにくいという点を指摘させていただきたいと思います。チェック例外については、理屈上コンパイラーによって例外の処理をプログラマーに強制させることができるす

    業務系のJavaプログラマーが知っておくべき10個のBad Partsとその対策 - 達人プログラマーを目指して
  • JDKの時間計測まわりのコードを読んでみる - 虎塚

    ぐぬぬ。。。せっかくのご指名ですが。。。 JVMがOSごとにどの計時関数を呼び出すのかすら、自分はろくに知らないのです…無念だ。 でも、「ネタを振られたら全力で撃ち返せ」ってじっちゃが言ってた。 というわけで、最適化よりもずっと手前の話題、JVMの時間取得まわりのコードを眺めてみようと思います。 Systemクラスのソースコードを見ると public static native long currentTimeMillis(); と、native宣言されている。ここから先はネイティブの世界。VMの実装依存の世界でもある。 Javaパフォーマンス計測 そんなタイマーで大丈夫か? - プログラマーの脳みそ そですね。では、その世界を確認してみましょう。 ゴール Javaで時間計測を行った時に各OSで最終的に呼ばれるAPIとその精度について、JDKのソースコードおよびドキュメントを元に把握する。

    JDKの時間計測まわりのコードを読んでみる - 虎塚
  • マルチコア時代に備えて本気でメモリモデルを理解しておこう - メモリバリア編 - - じゅんいち☆かとうの技術日誌

    このエントリを読む前提条件として、マルチコア時代に備えて気でメモリモデルを理解しておこう - リオーダー & finalフィールド 編 - - じゅんいち☆かとうの技術日誌を読んで、リオーダーとは何かを理解していることとします。 前回のおさらいをすると、 プログラムの実行順序は、リオーダーが許可される場合と禁止される場合がある。並行処理ではリオーダーを想定しなければ、処理結果の整合性が確保できない。(特にマルチプロセッサ環境) リオーダーを禁止して、可視性を保証する。(finalフィールドはコンストラクト時に完全に初期化され、コンストラクト後はスレッドから見えるようになる) でした。 リオーダーについて理解できたら、今度はメモリバリア命令でスレッド毎に扱うメモリと、大域のメインメモリとのメモリI/Oについて見ていきたいと思います。メモリバリアが理解できれば、以下のソース*1のスレッドがな

    マルチコア時代に備えて本気でメモリモデルを理解しておこう - メモリバリア編 - - じゅんいち☆かとうの技術日誌
  • Javaプログラマであるかを見分ける10の質問 - やさしいデスマーチ

    元ネタはこちらですが、「優れたJavaプログラマ」を見分ける質問ではありません*1。次のような状況を想定してください。 受託業務を中心にしている弊社は、Javaで業務系ウェブアプリケーションの開発を行う事になりました。しかし社内のリソースを使うにも1−2名足らない事が見積もりから解っています。そこで、中堅エンジニアを1−2名募集することになりました。正社員か派遣かは問いませんが、経験が3年程度の中堅プログラマが必要です。同等またはそれ以上のスキルを持つ正社員がプロジェクトを牽引しますが、ゼロから教えながら教育することはできないので、必要最低限のスキルを持っていることが条件になります。 こんな状況を想定して、面接の質問を考えてみました。経験が3年程度あれば、問題なく答えられるはずです*2。尚、質問はホーム言語がJavaである前提です。 下記質問にそれぞれ50文字以内を目安に簡単に説明すること

    Javaプログラマであるかを見分ける10の質問 - やさしいデスマーチ
  • Javaプログラマであるかを見分ける10の質問に対する回答なのかネタなのかフィクションなのかもうよくわからないもの - kagamihogeの日記

    Javaプログラマであるかを見分ける10の質問 - やさしいデスマーチ ==演算子とequalsメソッドの違いは何か? ==は、なぜか文字列が一致しているのに時々思ったとおりに動かないことがあるが、equalsは動くため。 文字列の連結は原則として+演算子を使ってはならない理由を説明せよ。 コーディング規約でStringBufferを使用すること、と定められているため。 Listのようにジェネリクス型を使う主たる目的は何か? 主にJavaのバージョンが1.5以上のときのソースコードレビューを通るため。 オブジェクトがガベージコレクション(GC)される主たる条件は何か? 番環境のメモリがきわめて少ないとき。 チェック例外と非チェック例外の違いを型と例外処理の観点で説明せよ。 catch文を書いてもいいときと、書かなくてもよいとき。 フィールドのアクセス修飾子をprivateにしgetter

    Javaプログラマであるかを見分ける10の質問に対する回答なのかネタなのかフィクションなのかもうよくわからないもの - kagamihogeの日記
  • Javaプログラマであるかを見分ける10の質問-回答編 - やさしいデスマーチ

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

    Javaプログラマであるかを見分ける10の質問-回答編 - やさしいデスマーチ
  • オブジェクト指向プログラムでgetter/setterメソッドを使わなければならない10の理由

    オブジェクト指向プログラムで getter/setterメソッドを使わなければならない 10の理由 福盛 秀雄 fukumori at m.ieice.org JavaC++などのオブジェクト指向言語でプログラムを書いているときに、単純なメンバ変数を参照したり操作するために anObject.getX() [以後これをgetterメソッドと呼ぶ] とか anotherObject.setY(y) [以後これをsetterメソッドと呼ぶ] と書くのはなぜだろうと思ったことはないだろうか? int型の変数ひとつを操作するのになぜわざわざメソッドを定義するのだろう? 単純に代入を使えばいいじゃないか? この文章はそんなあなた(かつての僕も含む)が、getter/setterメソッドを使うべきである理由についてまとめたものである。 ということで早速論へ。 1. クラス内部のデータ表現を変えた場

  • コンストラクタ内でのthis参照リーク問題 - やさしいデスマーチ

    GUIの設計パターン」のコメントで指摘があったので補足しておきます。 Javaのコンストラクタは思った以上に複雑で、希に困った状況を引き起こします。その1つの例が「コンストラクタ内でthis参照リーク」問題です。次のようなコードがあった時、どうなるか予想できるでしょうか? class Bar { Foo foo = null; Bar() { } } public class Foo { Bar bar = null; final String finalObj; Foo(Bar bar) { bar.foo = this; if (true) throw new RuntimeException(); this.finalObj = "OK"; } public static void main(String[] args) { Bar bar = new Bar(); try { F

    コンストラクタ内でのthis参照リーク問題 - やさしいデスマーチ
  • モデルから知るGit

    4. hoge.git/ hoge/.git/ bare config config refs refs ... ... dir hoge/ dir .gitignore hoge.txt dir ...

    モデルから知るGit
  • オブジェクト指向の教え方 - やさしいデスマーチ

    自分も研修などで教える立場にたった事がありますが、ただの手続きからオブジェクト指向的な考え方へシフトさせるにはどうしたらいいか?という話題です。 どうしてオブジェクト指向にするのかの1つの理由は、面倒だからっていうのが挙げられると思います。main関数が持つ責任を減らして、自己責任で動いてもらう。細かい指示をしないでも動いてもらう。そういうことが、オブジェクト指向をすることで出来ます。 そしてこれは、大規模プログラムだとか、再利用性を意識したプログラムとか関係無しに、利益があります。何でも自分でやった方が楽だというのも1つの考え方ではありますが、それだけだと限界が訪れますし、なにより疲れます。 http://d.hatena.ne.jp/tek_koc/20090612/1244818231 コメントやブクマでメンドクサイ指摘がされていますが、自分はこれでOKだと思います。 いきなりオブジ

    オブジェクト指向の教え方 - やさしいデスマーチ
  • XP祭り関西にてユニットテストの保守に関する発表 - 千里霧中

    先週末、XP祭り関西2011にて「ユニットテストの保守性を作りこむ〜設計・実装の工夫で支えるテストの継続的活用〜」と題した講演をさせて頂きました。 今回は内容として、ユニットテストをより継続活用するためテストの実装とテスト設計の工夫でユニットテストの保守性を高めていく、という話を取り上げさせて頂いています。 ユニットテストの保守性を作りこむ, xpjugkansai2011View more presentations from H Iseri. ※PDF版 今回は、直前にJaSST'11 Tokyoで登壇機会(残務処理が終わり次第報告したいと思います)があり、また仕事も急がしいままという状況が重なって準備でしんどい思いをしましたが、何とか無事に終わりかなり安堵しています。 登壇者として声をかけて頂いた細谷さんや、すばらしいイベントを作り上げているXPJUG関西の方々に深くお礼申し上げます

    XP祭り関西にてユニットテストの保守に関する発表 - 千里霧中
  • アジャイル開発 基本のキ - ヲトナ.backtrace

    今、アジャイルの導入のお手伝いをさせてもらっている現場で「他のスタッフにもアジャイルについてざっくり教えてよ」というオーダーで勉強会をやりました。 そこで「アジャイル開発 基のキ」と題し、実際の進め方の説明ではなく、その手前の考え方や心構えにフォーカスして話をしました。 20名ほどの人数向けに作った資料なのですが、普段アジャイルについてのイントロダクションの話をする時にいれるキーワードは大体盛り込んだ感じになったので、もしかすると誰かの役に立つかもしれないので公開しておきます。 ただし、勉強会のターゲットがエンジニアではなかったので、エンジニアリングについては薄くなっているのでご注意を。 Basic of Basics of Agile DevelopmentView more presentations from Nishimura Naoto. あと、話は変わりますが、普段アジャイル

    アジャイル開発 基本のキ - ヲトナ.backtrace
  • ログは、もっと立体的であるべきか。 - 設計と実装の狭間で。

    slf4jとlogbackに、魂を売り渡す勢いであります。 と言うのは冗談としても、何だか使い方が分からないけど、 Loggerのメソッドには、引数として存在しているorg.slf4j.Markerについて、考えてみたり。 現段階では、slf4jとlogbackを使ってる大きめのOSSプロダクトにおいて、 どんな使われ方をしてるかちゃんと見てないので、妥当な使い方なのかは、微妙。 まぁ、僕なら、こんな風に使ってみるよ、と言う感じのエントリ。 slf4j使おうって人達が、使い方を考える時のとっかかりになればいいかな…とか。 まず、org.slf4j.Loggerの、Markerを引数に取るメソッドの宣言と、org.slf4j.Markerの宣言を抜粋してみるよ。 public interface Logger { public void debug(Marker marker, String

    ログは、もっと立体的であるべきか。 - 設計と実装の狭間で。
  • Servlet 3.0 の超シンプルなサンプル (pom も) - 宇宙行きたい

    ちょっとした Java のライブラリ使うサーバ書かなきゃいけなかったのですが、 折角なので、Servlet 3.0 で書いてみたら鼻血が出るほど簡単で、今まで web.xml とか書いてたのはなんだったんだ状態になったので、 超シンプルなサンプル書いてみました。 package org.yoshiori; import java.io.IOException; import java.util.Date; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.H

    Servlet 3.0 の超シンプルなサンプル (pom も) - 宇宙行きたい
  • Effective JavaScriptをPDFにしました - renoivのブログ

    [twitter:@bleis]さんのつぶやきを見て,ここにあったのか!という驚きでした。 2003年頃の記事ですがJavaScript 1.5 (Mozilla 1) ベースなので,まだ参考になると思います。 Googleドキュメントに置きましたので必要な方はどうぞ! Effective JavaScript - Dynamic Scripting.pdf Powered by Google ドキュメント HTMLアーカイブGithubに置きましたので,こちらも必要な方はどうぞ。 https://github.com/renoiv/EffectiveJavaScript 参考 Effective JavaScript - Dynamic Scripting Wikipedia JavaScript バージョンとブラウザの対応表

    Effective JavaScriptをPDFにしました - renoivのブログ
  • 【翻訳】Gitをボトムアップから理解する

    John Wiegleyさんの "Git from the bottom up" を翻訳しました。 元PDFはこちらからダウンロードできます: http://newartisans.com/2008/04/git-from-the-bottom-up/ 元記事のライセンスがクリエイティブコモンズのBY-SAであったため、この翻訳もBY-SAとなります。 ライセンスを守って自由にご利用ください。(詳しくは記事内の最初にも書いてあります) 翻訳ミスの指摘や改善の提案等があればブログコメントやTwitter(@oshow)などで遠慮なくどうぞ。 Git をボトムアップから理解する Wed, 2 Dec 2009 by John Wiegley 私が Git を理解しようと調査した時、高級なコマンドの視点から眺めるよりボトムアップ式に理解することが役立った。そしてボトムアップ視点で見る Git

    【翻訳】Gitをボトムアップから理解する
  • Gitを使った開発・運用フローの紹介

    私の所属している会社では、2年程前にバージョン管理システムをSubversionからGitに移行し、現在まで開発フローを試行錯誤してきました。ようやく形になってきたということで、守秘義務に接触しない程度に紹介&考察していきたいと思います。 形になってきたとはいえ、まだまだ試行錯誤中ですので色々なツッコミは大歓迎です。 現在の開発フローの俯瞰図# 現在の開発フローを俯瞰してみると大体下記図のような感じになっています。途中で図を書くのが面倒になった都合上、Jenkinsさんが1人しか居ませんが、実際はmasterブランチの他にreleaseブランチも監視してもらっています。 以降この図を元に話を進めていきたと思います。 Gitoriousを利用して自由に開発# GitoriousというGitHubに似たサービスがあります。このGitoriousはオープンソースとしても公開されていますので社内に

    Gitを使った開発・運用フローの紹介
  • maven3互換性まとめ - cynipeと読む

    maven3がリリースされましたね。気が向いたのでこんぱちのーつでもざーっと眺めてみました。@shin1ogawaさんに1000万の人が喜んでくれると言われたのでものっそい久しぶりに書いてみた!間違ってたりしたらご指摘ください〜。不安な箇所もあるので。。。 元ネタ: https://cwiki.apache.org/MAVEN/maven-3x-compatibility-notes.html profiles.xmlが廃止 だけを書ける*1profiles.xmlが廃止されたみたい。個人的には開発者、環境ごとの設定をに書いたものがまとめられて割と好きだっただけに、この変更は残念至極。AppEngineのAppIdとかAppVersionとかもこれに書いてたのになー。 Site、Reportingなどのドキュメント系機能はCoreには含まれなくなった 個人的にはあまり興味のないところ。とい

    maven3互換性まとめ - cynipeと読む
  • ORMがアンチパターンである11の理由

    サンフランシスコのプログラマLaurie Voss氏が書いた見逃せない記事が賑わっています。近年のフレームワークやライブラリの定番中の定番ORマッパーが既にアンチパターンなのではというのが彼の主張です。この記事を書くきっかけになったのはこのツイートだそうです。 I cannot overstate the degree to which ORM is a dangerous antipattern. — Laurie Voss (@seldo) June 9, 2011 ORM が危険なアンチパターンだっていうのはどれだけ言っても言い過ぎることはない このツイートに対して各方面(ActiveRecord, Doctrine, Hibernate)から多くの(激しい)返信が寄せられて書かれたのが問題のエントリです。まずはアンチパターンとは何かの定義として下記の2つを挙げています。 当初は有益

    ORMがアンチパターンである11の理由
  • 複合主キーを避けるべき理由 - 虎塚

    データベース設計の話をしていて、「連番の主キーは業務上意味のないデータだから、テーブルに持たせるのはムダだ。複合主キーにするべき」という意見を聞く機会がありました。 脊髄反射で「ないわー」と思ったものの、理由を上手く説明できなかったので、改めて考えてみました。 その結果、次のような結論に至りました。 単一の連番カラムによる主キーと、複合カラムによる主キーとで迷ったら 実装をシンプルにし、業務変更の影響範囲を小さくするために、複合主キーを避ける というわけで、調べたことや考えたことをメモしておきます。# 間違っている部分があれば、教えていただけると嬉しいです。 (2011/07/25 追記)複合主キーとサロゲートキーについては、要件やシステムに依存して多様な判断がありうると思います。にもかかわらず、「避けるべき」というタイトルにしたのは極端でした。申し訳ありません。ご指摘下さった皆さん、あり

    複合主キーを避けるべき理由 - 虎塚
  • 社内向けにTDDの講習会を行いました - anfangsのログ

    勤め先でTDDの講習会を行ったので、その内容について書きます。 この記事がTDD導入を検討している方の力になれば幸いです。 経緯 私はとあるSIerに務めており、部内ではテストの工数を削減することが課題となっています。 以前からTDDを同僚や先輩に宣伝していたこと、また、理解ある上司に恵まれたこともあって、 テストコードの書き方を講習する時間をもらえました。 そこで、TDDBCの要領で楽しみながらTDDを学んでもらうことにしました。 一人ではつらいので、TDDBCの参加経験がある先輩と二人で講習を行いました。 参加者について 若手開発者 3名 中堅開発者 2名 業務にオブジェクト指向の考え方を取り入れたのは2,3年ほど前?らしい。(要出典) 普段はC#、VisualStudio、VSSを使っている。 講習の目的 二人で話しあい、講習の目的を以下のように決めました。 テストコードの書きかたを

    社内向けにTDDの講習会を行いました - anfangsのログ
  • git-svnの使い方を覚えた - idesaku blog

    分散SCMを使いたい!と思う今日この頃。 仕事ではSVN(Subversion)を使っているのだが、ちょっとしたお試し編集をするためにブランチを作ることに抵抗がある。ブランチは欲しい、大きめな変更をコミット無しで行いたくない、やはり少しずつコミットして進めていきたい。しかし、変更が全て記録されてしまうのがいただけない。ログが残るのは良いことなのだが、当に使うかどうか未知数な実験的プログラミングのログまで残したくない。使うと決まってから初めて残すようにしたいのだ。 すまん、これまで一緒に仕事をしてきた人々よ。俺はこれまで「ログが残って困ることがなんかある?いらなきゃ無視すればいいだけなんだから、気にするな。ブランチでもなんでもバンバン作ってしまえ!」とうそぶいてきているわけだが…ハッタリかましてました!当は俺も抵抗があるのだ。 そこで、分散SCMだ。さらにいうと、SVKがいまひとつ気に入

    git-svnの使い方を覚えた - idesaku blog
  • 分散リポジトリ型時代のソフトウェア構成管理

    正式には、 「ソフトウェア構成管理」 (Software Configuration Management: SCM) と言います。 「ラショナル統一プロセス」 (Rational Unified Process: RUP) では、 「構成および変更管理」 (Configuration and Change Management: CCM) などとも呼ばれます。 では「構成」とはなんでしょう?

  • ユニットテストアンチパターン

    Last update: $Date: 2006-03-09 22:23:04 +0000 (Thu, 09 Mar 2006) $ maintained by Joe Schmetzer Overview JUnit is a regression testing framework that allows developers to implement unit tests in Java. Using JUnit, you can cheaply and incrementally build a test suite that will help you measure your progress, spot unintended side effects, and focus your development efforts. This extra testing code pr

  • 2012年javaメモリリーク

    3. Java メモリ管理 – 自動だよね? Java は Garbage Collection を搭載 メモリの解放からプログラマは解放された‥はず メモリの管理を気にしなくていいから、何の GC がどう動いているか、気にしない 問題が起きてから、初めて気にすることに OutOfMemoryError, 応答性/スループット劣化 , ・・・ 4. Java メモリ管理 – GC の種類 Java SE 7 Runtime で用意される GC の種類 GC 種類 新世代 旧世代 課題 シリアル コピー/逐次 全てを止める マーク・スイープ・コンパクト 逐次/全てを止める 旧世代 GC の停止時間が増大 パラレル コピー/並列 全てを止める マーク・コンパクト/並列 全てを止める 複数 CPU 必要(≧ 4 ) コンカレント マーク・スイープ/並行 旧世代 GC が常時動作するのでスループッ

    2012年javaメモリリーク
  • Modern Java Web Development

    Provides a modern 2011 look on the state of Web Development on Java platform. Covers framework classification, main features of each framework, how to select a framework and modern tools usage for Java web development

    Modern Java Web Development
  • JavaプロジェクトでGroovyを導入すべき5つの理由 - うさぎ組

    前段 TDDBootCamp in Tokyo 1.5にJavaグループの一員として参加させていただきました。 そこでGroovyをやりたいというホットなエンジニアと出会いまして、GroovyでTDDをさせていただきました。 いきなりGroovyでプロダクトを書く事はなかなかないと思っているので、Javaのプロダクトコードに対して、Groovyのテストコードを書く。という方法で演習しました。 そこで、皆様がGroovyへ多少なりとも注目してくださいましたので、このエントリーを書いてみようと思いました。 JavaプロジェクトでGroovyテストコードを導入すべき5つの理由 以下であげる5つのポイントは「Groovyを知らないJavaプログラマーがすぐに始められるGroovyの強力な機能」をとりあげました。 もちろんここにあげた以外にもたくさんのGroovyの強力な機能はありますが、それらの威

    JavaプロジェクトでGroovyを導入すべき5つの理由 - うさぎ組
  • Java コードから Java ヒープまで

    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.

    Java コードから Java ヒープまで