タグ

ブックマーク / nowokay.hatenablog.com (39)

  • TDDで「テストばかり書いて間に合うのか?」と質問されたときの正解 - きしだのHatena

    TDDにおいて、顧客などから「テストばかり書いていて間に合うのか?」などと質問されることがあると思います。 そんなときには、後ろからそっと抱きしめて 「そんな質問させてごめんな」 が正解です。 https://twitter.com/kis/statuses/350279800600018944 テスト駆動開発の効果はどのくらいある? − Publickey テスト駆動開発 作者:Kent Beckオーム社Amazon

    TDDで「テストばかり書いて間に合うのか?」と質問されたときの正解 - きしだのHatena
    mitukiii
    mitukiii 2013/06/29
  • Struts1職人の朝は早い - きしだのHatena

    Struts1職人の朝は早い。 「毎日毎日DBとアプリサーバーが違う。機械ではできない」 「このstruts-config.xmlはダメだ。ほら、すぐ裂けてしまう」 ここ数年はLLとScalaに押されているという。 下町Struts1の灯火は弱い。だが、まだ輝いている。 「やっぱりアレですね、たいていの若い人はすぐやめちゃうんですよ」 「それを乗り越える奴もたまにいますよ。そういう奴が、これからのStruts1界を引っ張っていくと思うんですね」 今日も彼は、日が昇るよりも早くstruts-config.xmlの整形を始めた。明日も、明後日もその姿は変わらないだろう。 そう、Struts1職人の朝は早い。 夜も遅い。

    Struts1職人の朝は早い - きしだのHatena
    mitukiii
    mitukiii 2013/06/25
  • Java8で最もインパクトのある構文拡張、デフォルトメソッド - きしだのHatena

    Java8でのラムダの使い方などを説明してきたのですが、構文拡張自体には触れていなかったので、改めてここで簡単に説明しておこうと思います。 まずは、Java8で実際に最もインパクトがある言語拡張、インタフェースのデフォルトメソッドです。 デフォルトメソッドとデフォルト実装 いままでインタフェースには実装をもつことができませんでしたが、Java 8からはインタフェースが実装をもてるようになります。 実装をもつメソッドを定義するときには、キーワードdefaultをメソッドの前につけます。 interface Foo{ void print(String s); default void twice(String s){ print(s); print(s); } } twiceメソッドが実装をもっています。この実装をデフォルト実装といいます。 デフォルトメソッドを実装するクラスで、デフォルトメ

    Java8で最もインパクトのある構文拡張、デフォルトメソッド - きしだのHatena
    mitukiii
    mitukiii 2013/06/11
  • Java8で体験するオブジェクトと関数の狭間 - きしだのHatena

    Java8でlambda構文が導入されることで、Java言語も関数型のような性質をもつことになりました。 関数型の性質として大事なことのひとつに、関数を戻り値として返せるということがあります。lambda構文によって、Javaでも表記上は関数を戻り値として返すことが可能になったわけです。 で、関数を戻り値として返せるとどうなるかというと、関数をオブジェクトのように使えるようになります。まあ、Javaでは関数といっても普通のオブジェクトとして扱われるので、関数としてオブジェクトのようなものが記述できる、ということになります。 では実際に、オブジェクトのようなものを関数として記述してみます。 public static Function<String, Object> myFunc(String name, String address, LocalDate birthday){ return

    Java8で体験するオブジェクトと関数の狭間 - きしだのHatena
    mitukiii
    mitukiii 2013/05/20
  • Java8のStreamを使いこなす - きしだのHatena

    さて、Java8で関数型っぽいことをやって遊んでみたわけですが、実際はそんな書き方しませんよね。 Java8で実際に使うのは、Streamです。 ということで、Streamの使い方をひととおり見てみます。 ※5/17 仕様変更があったので、修正しました 基 まずは、Iterableインタフェースに用意されたforEachメソッドを見てみましょう。 List<String> names = Arrays.asList("hoge hoge", "foo bar", "naoki", "kishida"); names.forEach(s -> System.out.println(s)); これで次のように表示されます。 hoge hoge foo bar naoki kishida いままでの拡張forだと次のように書いてました List<String> names = Arrays.a

    Java8のStreamを使いこなす - きしだのHatena
    mitukiii
    mitukiii 2013/05/07
  • 勉強することで何がいいのか実力者がいないことでデメリットはあるか - きしだのHatena

    「この辺を勉強してどういう良いことがあったか教えて欲しい。」というコメントがついてた。 良いこととして、一番は、まあ勉強するのが楽しくなった、ということなのだけど、それは循環してるので置いておいて。 実務的に一番いいのは、プログラムを組むのが楽になったということ。 とくに、質的な間違いが少なくなっていくので、後戻りが減るというのが楽。組んでみたけど動かない、途中でそれ以上組めなくなる、というのが少ない。まあ、ミスはあるので、そこの修正はするけど。 あと、できないことができないとわかりやすい。そのデータの持ち方でそのデータ数でその処理ではその精度の要求は満たせない、ということが原理的に判断しやすくなる。なので、むだな努力をしない。そして、どの条件を緩和すれば要求が満たせるかにも気づきやすい。 初見のライブラリや言語、ツールの理解が早くなる、とかも。 もちろん、前のエントリにも書いたように「

    勉強することで何がいいのか実力者がいないことでデメリットはあるか - きしだのHatena
    mitukiii
    mitukiii 2012/10/15
  • プログラマの実力は経験だけであがらないことがレベル格差につながる - きしだのはてな

    プログラマというのは、道具に慣れることが、実力があがることにならないのですよね。だから、勉強せず業務経験だけだとレベルが低いままということになってしまう。 Javaを10年さわり続けて、Strutsを5年さわり続けても、それだけでは、与えられた画面を手際よく作成できるようになるだけで、たとえばStrutsすらよりよく使えるようになるわけではなかったりする。 Javaにしても、「volatileってなんですか?」という問いに、まあ知らないのはしかたないとしても、解説を見ながらですら答えられない可能性がある。 プログラムの反復生産は、プログラミング能力の向上にあまりつながらない。設定や記述に慣れるだけだ。そして、この「慣れ」というのには「難しいからそもそも実装を回避する」というようなものも含まれる。実力の向上は、作業ができるレベルで止まってしまう。 プログラマとしての実力をあげるための勉強が自

    プログラマの実力は経験だけであがらないことがレベル格差につながる - きしだのはてな
    mitukiii
    mitukiii 2012/10/10
  • MVCは死んだ。MOVEするときがきた - きしだのHatena

    Conrad Irwinさんの「MVC is dead, it's time to MOVE on.」を訳してみました。 MVC is dead, it's time to MOVE on. この訳文も原文のライセンスを引き継いでCC-BY-3.0ライセンスで利用可能とします。 追記13:58 すでに訳してた方がいました。MVCの時代は終わった。MOVEを使い始めましょう。 - ふじこのプログラミング奮闘記 MVCは死んだ。MOVEするときがきた MVCはすばらしいアイデアだ。モデルを持ち、モデルは内部に少しの状態をもつ。ビューは内部に少しのUIをもつ。そして、コントローラは内部に少しの・・・ 何を持つ? 私は確かにこのことに気づいた最初の人物ではない。しかし示されたようなMVCの問題のために、あなたは最後には過剰なコードをコントローラに詰め込むことになる。なぜなら、他にどこに入れていいか

    MVCは死んだ。MOVEするときがきた - きしだのHatena
    mitukiii
    mitukiii 2012/07/04
  • ファーストサーバの手順の問題点 - きしだのHatena

    えらいことなってますが。 正規手順と今回の現象の説明などを含めた中間報告が出されています。 http://support.fsv.jp/info/nw20120625_01.html ここで、正規手順で、途中でオペレーションミスがあったときに復旧できない状態になってしまう可能性があることがわかります。 具体的には「原因3:メンテナンス仕様」のこの部分。 脆弱性対策のメンテナンスに関しては対象サーバー群とそのサーバー群のバックアップ領域に対して同時に更新プログラムを適用する この時点でこの更新プログラムに不具合があった場合には、リストアできなくなることになるわけです。そして今回はそれがおきたようです。 より安全な手順であれば、バックアップ側にパッチをあてている間は正常系がバックアップのバックアップということになるはず*1ですが、どこにもバックアップがない状態になってしまったわけです。 手順1

    ファーストサーバの手順の問題点 - きしだのHatena
    mitukiii
    mitukiii 2012/06/25
  • 4月にプログラム始めた人がゴールデンウィークに積んでおく本 - きしだのHatena

    大きく挙げたのは7冊なので、7日の休みで1日1冊ですね! 連休の間に読んでおいて、友達に差をつけよう! うっかり、先輩にも差をつけちゃえばいいと思います。 プログラムを組むとはどういうことか を挙げる前に、まずプログラムを組むとはどういうことかということを考えておきます。 ざっくりとした説明なので、だいたいこういう感じ、だと考えてください。 その上で、どのようなが必要かを考えて、を選んでいきます。 以前描いたものですが、プログラムを作るということと各分野の関係はこのようにあらわせます。 まず、プログラムは最終的にユーザーに使ってもらうためのものです。 ただ、ユーザーはプログラムを直接使うことはできません。プログラムはハードウェアで動かす必要があります。そして、ユーザーインタフェースを介してユーザーが使います。 (ハードウェアからプログラムへの矢印は逆のほうがいいですね) このような、

    4月にプログラム始めた人がゴールデンウィークに積んでおく本 - きしだのHatena
    mitukiii
    mitukiii 2012/04/26
  • ヘッドフォンを常用してる人で雑音の中で会話が聞き分けづらいのは難聴の可能性 - きしだのはてな

    Twitterで、「会話のときに周りに雑音があると聞き取れない」という発言があって、ヘッドフォンを長いこと常用しているということなので、難聴の可能性があるので耳鼻科で診てもらうよう勧めました。 同様に、ヘッドフォン(イヤフォンでも)を常用していて、なんとなく雑踏のなかで会話が聞き取りづらいという人で、実は難聴になっているという人がいるんじゃないかと思ったので、ちょっとまとめておきます。 たとえば、ニュースのアナウンサーの声は聞きとれるのに、バラエティで笑い声が入ったりすると聞き取りにくいという場合には要注意です。 心当たりがある人はヘッドフォンの利用の見直しと耳鼻科での検診を勧めます。 ヘッドフォンを常用すると高音難聴になりやすい ヘッドフォン難聴という言葉は有名になってきましたが、スピーカーで音楽を聴くのとヘッドフォンで音楽を聴くのとの違いは、鼓膜にとどくまでに高音が減衰しないということ

    ヘッドフォンを常用してる人で雑音の中で会話が聞き分けづらいのは難聴の可能性 - きしだのはてな
  • CoffeeScriptの件 - きしだのHatena

    思ったことを。 デバッガについては、こういう記事がある。 圧縮後のJavaScriptやコンパイル後のCoffeeScriptでも、ブラウザ上で元のソースを参照できる新技術「Source Maps」登場 - Publickey 「Source Maps」じゃなくても、なんらかブラウザ側でのサポートは行われていくと思う。 どっちにしろ、JavaScriptをデバッグするにもブラウザのサポートは必要なわけで。 ライブラリの依存関係とかも、ビルドツールとJSライブラリリポジトリが整備されていくんじゃないかなー。そのくらいの勢いはでてきてる気がする。 あと、CoffeeScriptとJavaScriptを両方知らないといけないという話も、複数人で開発するなら、全員が両方しる必要はなくて、コアなメンバが知っておけばいい。 そもそも、複数人で開発するときに、全員がJavaScriptのprototyp

    CoffeeScriptの件 - きしだのHatena
  • 「2冊目の本のほうがわかりやすい本」の誤謬 - きしだのHatena

    関係ないけど、誤謬(ごびゅう)を「ごしん」と読んでた時期がわたしにもありました。 で、題。 先日「C++の授業を受けて理解できなかった人が、RubyRailsをやったら簡単に理解した、Rubyすばらしい」という話がTwitterで流れていた。 ただ、これをもって、Rubyで授業やるとわかりやすい、と単純に考えてはいけない。 確かにC++はヘッダファイルやポインタみたいな、混乱ポイントがあるわけだけど、教育用途なら1ファイルに全部書くことでヘッダファイルからは逃れれるし、C++のライブラリつかえばポインタはあとまわしにできる。Rubyでも文法を淡々と初心者に教えれば「わけわかんない」という感想だけで終わらせることもできる。 なにより、このご時勢にプログラムの最初の授業をC++でやってる先生の授業がわかりやすいはずがない。わかりやすさに気をつける先生なら、JavaかC#かRubyか使ってい

    「2冊目の本のほうがわかりやすい本」の誤謬 - きしだのHatena
    mitukiii
    mitukiii 2012/03/26
  • テストというのは、ソースコードの冗長化だと思う - きしだのHatena

    テストというのは、基的にはソースコードの冗長化だと思う。来ならプロダクトコードだけ書けばよいところを、信頼性を高めるために複数の視点でのコードを追加する。 また、サーバーの冗長化で、2台構成を3台構成にするよりも、はるかに1台構成を2台にするのが難しいように、テストも、10のテストを20にするよりも、最初のテスト(プロダクトコードも含めると2目のコード)を書くのが一番難しい。 テストがソースコードの冗長化であるなら、アクセスのないサイトでサーバーをクラスタリングするのが単なる金や設定時間の無駄であるように、長期的な信頼性の求められないプロダクトにテストを書くことも金の無駄だ。 アクセスが多いのにサーバー冗長化の金を払わない顧客に対してクラスタリング構成を構築する義理がないように、信頼性が求められるのにテストの金を払わず時間も確保しない顧客のためにテストを書いてやる必要もない。もち

    テストというのは、ソースコードの冗長化だと思う - きしだのHatena
    mitukiii
    mitukiii 2012/02/23
  • プログラマになるための勉強をしている人の前で話をしてきた - きしだのHatena

    イデアルITスクールというところで、1時間ほど話をしてきました。 プログラマとしてやっていくために大事なことというテーマ。 資料を作らずに、というか構想すら練らずにやってしまったので、ここで整理とまとめと補足を。実際にこれをしゃべったというのではなくて、だいたいこんなことをしゃべろうとしてたという内容をかなり盛って書いてます。 当然ですが、プログラマの仕事はプログラムを書くことです*1。 プログラマとしてやっていくためには、どこで動くプログラムを書くか、なにをするプログラムを書くかということを意識することが大事です。 ということで、まずはプログラムが動くところがどう変わったかという話。 1970年代ころは、デバイスを動かすためのプログラムが多かったのではないかと。 あと、ここには書いてないけど、業務アプリはほぼメインフレームで動いてたと思います。 それが、1980年代くらいからパソコンが出

    プログラマになるための勉強をしている人の前で話をしてきた - きしだのHatena
    mitukiii
    mitukiii 2011/09/15
    『プログラマとしてやっていくために非常に大切なことを忘れてたので、ここまで言って終わりです。「Twitterをやれ」ということです。』
  • どのプログラム言語を選ぶべきか・・・ - きしだのHatena

    PHP-erはダメな言語でいかにまともなものを作るかっていうマイナスからのスタートだし、 JavaScript-erは何もないところで何か動いて楽しいっていう0からのスタートだし、 Ruby-erはRuby好きって言ってるだけだし、 Java-erはJavaの仕様にしか興味がないし。 Scala-erは生ぬるいこと言うと狩られるし、 Smalltalk-erは過去の栄光語ってるだけだし、 COBOL-erは苦労話しか出ないし、 FORTRAN-erはプログラムに興味ないし、 Perl-erは同窓会みたいだし、 Python-erは仲間探すの大変だし、 Erlang-erはどこにもいないし、 C-erは目先の仕事にしか興味ないし、 C++-erはC++の復興にしか興味ないし、 C#-erはWindowsにひきこもるし、 ActionScript-erはAdobe税はらうのに大変そうだし、 O

    どのプログラム言語を選ぶべきか・・・ - きしだのHatena
  • 夏休みに読みましょうの本 - きしだのHatena

    もう夏休みに入っちゃってる人多いと思うんですけど、こういうときを読むとしたら、業務に直接関係ないとかいいんじゃないかなーと思うんですね。 ということで2日くらいで読めそうなの4冊ほどあげておきます。 プロセッサを支える技術 一番オススメはこれ。なぜなら去年の夏休みには出ていなかったから。 プロセッサを支える技術  ??果てしなくスピードを追求する世界 (WEB+DB PRESS plus) 作者: Hisa Ando出版社/メーカー: 技術評論社発売日: 2011/01/06メディア: 単行(ソフトカバー)購入: 22人 クリック: 250回この商品を含むブログ (54件) を見る マルチコアが流行りますよって言われて、とうとう携帯電話もデュアルコアが載ったりする時代になりました。 そうすると、やはりマルチコアがどういうもので、どういう特性があるか、今後の方向性としてどういう問題に対

    夏休みに読みましょうの本 - きしだのHatena
  • モノを最初に教えるということ - きしだのはてな

    ちょっと例え話をしよう。 たとえばキミの部屋にかわいい女の子が遊びに来たとする。 ドキドキするね。 キミはギターが弾けたりなんかして、もちろん部屋にはギターがある。 実はずっと押入れにしまってたのだけど、今日のためにわざわざ目立つところに置いたことは秘密にしておくよ。 まあ、そんな努力が功を奏して、彼女は 「あ、ギターがある〜。弾いてみた〜い♪」 などと興味を持ったわけだよ。 そのときキミは 「ギターの先祖はリュートという楽器で15世紀には・・・」 と歴史を語ったりせずにまず持たせて見るわな。 「曲が弾きた〜い♪」 と言われたら 「その前にパーツの名前を覚えよう。ここをフレットと言って・・・」 と用語を教え始めたりせず、禁じられた遊びの旋律を教えてあげたりして、そのときちょっと手を触ってみたりなんかして「100万トキメキゲットなにょら〜」と内心叫んでみたりするはずだ。 あろうことか、「ここ

    モノを最初に教えるということ - きしだのはてな
    mitukiii
    mitukiii 2011/07/04
  • 2005-05-08

    ま、このくらい知っておいてもらわないと&とりあえずこんだけ知ってればだいたいの処理が書けるクラス・インタフェースをまとめてみました。 java.awt.Graphics java.io.BufferedReader java.io.File java.io.Reader java.io.InputStream java.io.InputStreamReader java.io.OutputStream java.io.PrintWriter java.lang.Class java.lang.Integer java.lang.Runnable java.lang.String java.lang.System java.lang.Thread java.net.URL java.sql.Connection java.sql.DriverManager java.sql.Prepared

    2005-05-08