タグ

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

  • 作って理解するWebフレームワーク - きしだのHatena

    前回、簡単なDIコンテナを作ってみたので、次はこれを使ってWebフレームワークを作ってみたいと思います。 Webサーバーをつくる まず、WebフレームワークなのでHTTPサーバーが必要ですね。なので簡単なものを作ります。 とりあえずブラウザからリクエストを受け取ったら200 OKとHTMLを返すだけのサーバーです。 今回は、そこらのブラウザからアクセスできればいいや、ということで、RFCとかの仕様に準拠することは考えません。 public class Server { public static void main(String[] args) throws IOException { ServerSocket serverSoc = new ServerSocket(8989); for (;;) { Socket s = serverSoc.accept(); new Thread((

    作って理解するWebフレームワーク - きしだのHatena
    kimutansk
    kimutansk 2016/04/20
    一番最初がHelloから始まるあたりおなじみですね。ここから既存のWebフレームワークの機能を実際どうやって搭載するか考えるのは面白い。
  • 作って理解するDIコンテナ - きしだのHatena

    DIコンテナ使ってるけど、アノテーションってなんなの!って聞かれて、作ってみたらわかるよと答えてみたので、自分でも作ってみました。 よくわかった。 「DIコンテナ使うと何がいいの?」ということも、作ってみるとわかります。あと「DIって何がいいの?」に関しては、「DIはちょっとコードを書くのが楽になるだけで、それだけあっても仕方ない、大事なのはコンテナ」と答えるようにしてますが、コード比率からもそれがよくわかります。 続編としてWebフレームワークも作っているので参考まで。 作って理解するWebフレームワーク - きしだのHatena まずはコンテナを作る とりあえず1ソースの状態で。 こんな感じで、管理する型を登録できるようにします。 static Map<String, Class> types = new HashMap<>(); static void register(String

    作って理解するDIコンテナ - きしだのHatena
    kimutansk
    kimutansk 2016/04/06
    「DIコンテナ/アノテーションって何と聞かれて作ればわかると答えたので自分で作ってみた。」いい。ただその質問する方にこの内容理解できるんでしょうかw
  • Java SEバージョンアップでのトラブルの話が面白かった - きしだのHatena

    Java Day Tokyo 2015で、NECJava SEバージョンアップでのトラブルの話が面白かった。 Java EEアプリケーションサーバの開発現場で見たJava SEの実際 資料はこちらで公開されてるので、資料に書かれてることはそちら参照という感じで、どんな話だったか書いてみます。 Java Day Tokyo 2015 アプリケーションサーバーを提供する中でJava SEをバージョンアップしたときに出て来たさまざまなトラブルの話と、Java SE 8から導入されたMetaspaceの話が主でした。 Java EEは機能が標準化されているので、アプリケーションサーバーはカスタマーサポートで差別化をはかるしかない、顧客から見ると、Java SEやOSまで全て含めてアプリケーションサーバーなので、全部対応していく、という話をされていました。 Javaにもそれなりにバグはあって、アプ

    Java SEバージョンアップでのトラブルの話が面白かった - きしだのHatena
    kimutansk
    kimutansk 2015/04/28
    ラムダ配備不可、ロガーインスタンスすり変わり、getLoggerがnull返す、どれも面白い事象です。
  • ソフトウェアプロセス技術がロストテクノロジーになっている - きしだのHatena

    最近会った人とよく話すのが、ソフトウェアプロセス技術がロストテクノロジーになってるんではないかということです。 ソフトウェアプロセスというのは、「プロセスがよいソフトウェアをつくる」という前提のもと、どのようなタイミングでどのような成果物を作り、どのような管理をし、どのように検査をしてソフトウェアを作るかという手順です。 そして、プロセス技術というのは、そのようなプロセスを構築し運用し改善する技術です。 このようなソフトウェアプロセス技術は、1995年くらいから2000年くらいにかけて盛り上がり広まりかけたのですが、そのタイミングでWebが広まりはじめ、「Webは進化が速い」「作るものがどんどん変わる」などを合言葉に、「アジャイルプロセスを採用する」という名目でなんら管理されないプロセスが普及しました。その結果、プロセス技術は完全に下火になっているように思います。 もちろん、Webの発展段

    ソフトウェアプロセス技術がロストテクノロジーになっている - きしだのHatena
    kimutansk
    kimutansk 2015/03/13
    こういうプロセス技術も重要だと思うんですが、使い方を誤ると数値操作に終始する諸刃の存在だと思うんですよねぇ
  • Servlet3.0でcometチャットを作ってみる - きしだのはてな

    Cometとは? ブラウザベースのチャットをつくろうとする場合、以前は定期的にクライアントからリクエストを送信して更新を確認するという手法がとられました。そうすると、平均して更新間隔の1/2の遅延が発生し、更新がないときの問い合わせが無駄になるなど、ユーザーにもサーバーにもうれしい手法ではありませんでした。 そこで使われるようになったのがCometです。 Cometは、HTTPでクライアントからの接続への返答を保留して、サーバーからデータを送信する必要がでたときに返答を返すことで、サーバーからのリアルタイムデータ送信を行う手法の総称です。 Servlet3.0でのComet対応 Cometでは、クライアントからの接続を保持しつづけるので、これまでのServletの仕組みをつかって実現しようとすると、各接続にスレッドを割り当てることになり、スレッド数が多くなりすぎるため、多くのユーザーには対

    Servlet3.0でcometチャットを作ってみる - きしだのはてな
    kimutansk
    kimutansk 2015/01/14
    Cometも途中から非同期のNIO系列になって、性能は向上したというわけですか。
  • プログラムの組みやすさが世界を変えるフェーズは終わったのではないか - きしだのHatena

    2005年くらいから、コンピュータの性能には余裕があるので、プログラムの効率が多少わるくなってもプログラムが組みやすく人間の能力が発揮できるほうがいいという傾向が強くなりました。 プログラムはサーバーで動かすものであり、サーバーの制約はネットワークとストレージでCPUやメモリには余裕があったためです。 また、世の中は、ITのない世界からITのある世界への変化の中にあって、サーバーでの情報処理やネットワークをサービスとして提供することで、世の中が変わっていきました。 そういった状況であれば、プログラムが組みやすく、思ったとおりのサービスを思った時期に提供できるということが大切になっていました。どんなに未完成でも、新しいアイデアをいち早く見て触ってもらうということが大切だったからです。 しかし、もうすでに世の中は、ITがある世界に変わりました。 もちろん、より便利な情報処理サービスも今後でてく

    プログラムの組みやすさが世界を変えるフェーズは終わったのではないか - きしだのHatena
    kimutansk
    kimutansk 2014/10/07
    そもそもそんな巨大なプログラムを個々に書くのがいい、という時代でもなくなりましたしね。でもそうなるとJavaである必要性は薄れる気もしますが、JVMが改善されるのは大事ですね
  • オブジェクト指向は禁止するべき - きしだのHatena

    プログラムがまだ不慣れな人が「プログラムちょっとわかるようになったけど、まだぜんぜんオブジェクト指向とかできてません」のように言ったり、ちょっと慣れた人が「このソース、ぜんぜんだめ。オブジェクト指向ができてない」にようなことを言ったり、まるで、オブジェクト指向ができてるかどうかがよいプログラムかどうかを表すことになってるようだ。 Javaのアルゴリズムのに、「Javaなのにオブジェクト指向ができていない」のような書評がついているのを見たときには、お前は何を求めてるんだと思ったりもした。 そのようなオブジェクト指向は、窓から投げ捨てるべきだ。オブジェクト指向はプログラムのよしあしの基準にならない。 むだにHogeインタフェースとHogeImplクラスがあったり、むだにnewするだけのcreateメソッドがあったり、どこで値が設定されてるかわからないオブジェクトがひきまわされてたり、ソースコ

    オブジェクト指向は禁止するべき - きしだのHatena
    kimutansk
    kimutansk 2014/07/19
    「コードは複雑になるけど、責務としてはこのクラスに書くべきだからこのコード」の時点で、何か間違った設計やっている気もしますね。ともあれ、単純は確かに大切な基準。
  • 「きしだのはてなのあれってどうなの勉強会」やってきました - きしだのHatena

    24日の土曜日に、「きしだのはてなのあれってどうなの勉強会」やってきました。 【東京】きしだのはてな勉強会 〜「きしだのはてな」のあれってどうなの〜 - 日Javaユーザーグループ | Doorkeeper んで、あいかわらずその場にいないと意味がわからない資料ができあがりました。 きしだのはてなのあれってどうなの勉強会 運営のmegascusさんは 思ったよりもきしださんの人気が薄かったのか人が集まりませんでした。 【東京】きしだのはてな勉強会 〜「きしだのはてな」のあれってどうなの〜をやってきた - 水まんじゅう とは書いてますが、内容もなにか具体的にわからない、参加費3000円、そしてPlay勉強会とかぶる(時間的にはかぶってなかったようだけど)という中で21人集まってもらえたのは、なかなかありがたいことだなーと思いました。 運営のmegascusさんと岡澤さん、おつかれさまでした

    「きしだのはてなのあれってどうなの勉強会」やってきました - きしだのHatena
    kimutansk
    kimutansk 2014/05/30
    絵はライトですが中身は深いですねぇ。これまでのブログの記事の集大成のような勉強会というわけでしょうか。こういう棚卸的なものも必要ですね。
  • Java8時代の文字列連結まとめ - きしだのHatena

    文字列の配列やリストを[〜]で囲ってカンマで区切って連結するという話、String.joinだとどう?とwatermintさんから指摘があったので、試してみました。 シンプル! public static String stringJoin(){ return "[" + String.join("],[", strarray) + "]"; } でも、1847msでした。改めて前後の文字を文字列連結してるところで時間かかってる感じ。 で、昨日のStringBuilder版はもう少し最適化できるので書き直します。 public static String stringBuilderJoin(){ StringBuilder s = new StringBuilder("["); for(int i = 0; i < strarray.length; ++i){ if(i != 0){ s.

    Java8時代の文字列連結まとめ - きしだのHatena
    kimutansk
    kimutansk 2014/04/09
    作成する文字列の大体のサイズがわかってるなら初期サイズ設定してStringBuilder.appendがいいと。これまでサイズ指定はしてましたが、ここまで差分が出るとは思っていませんでしたねぇ・・・
  • プログラマ業界の二分化 - きしだのHatena

    プログラマの業界は、同じソフトウェアを作るという作業でありながら、大きく2つの形態にわかれています。 小売業界が、コンビニやデパートなど、同じモノを売るという作業でありながら全く違う形態があるのに近いです。 この分化は、2010年ごろのGREE/DeNAの人材獲得合戦で明確に形ができたように思います。 なので、もう5年たって、定着しつつある感じでしょうか。 その2つの形態というのは、労働集約型の業界と、知識集約型の業界です。 労働集約型はSIで多い多人数開発の業界で、知識集約型がサービスで多い少数精鋭型の開発です。 知識集約型の業界は、最初こそちょっとお花畑すぎる感じもありましたが、最近は落ち着いてきており、徐々に経済的に均衡するところに収束していくと思います。それでも比較的めぐまれた労働環境ではあり続けると思います。ただし、常に勉強が求められる業界ではあります。 問題は労働集約型の業界で

    プログラマ業界の二分化 - きしだのHatena
    kimutansk
    kimutansk 2014/03/11
    プログラマと一言で言ってもどちら側にいるか、で実際色々変わってきますねぇ・・・
  • コミュニティに入るか入らないかでエンジニアとしての幸福度がかわる - きしだのHatena

    以前、「勉強会に参加しないと不幸になる話」というのをアップしました。 勉強会に参加しないと不幸になる話 - きしだのはてな このときは、勉強会x勉強会という枠だったので、「勉強会」と表現していますが、実際にはコミュニティに参加しないと不幸になる話でした。 あと、ここでの幸せ・不幸せというのは、エンジニアとして、という話で、エンジニアリング能力があがるとか、エンジニアリングの活動がやりやすいとか、エンジニアリングの活動が評価されるとか、エンジニアリングの話題を共有できる仲間が増えるとか、そういう観点です。 エンジニアとしての幸せ以外にも、人生にはさまざまな観点の幸せがある、ということは最初に補足しておきます。 会社が教育機能をもっていない エンジニアとしての幸せに大切なのは、エンジニアリング能力を上げていくことです。 ただ、2013年の産業経済省IT人材白書の概要に IT企業に対して、201

    コミュニティに入るか入らないかでエンジニアとしての幸福度がかわる - きしだのHatena
    kimutansk
    kimutansk 2014/02/25
    エンジニアとしての幸福度、ですか。
  • JavaでIDEのアクセッサ生成よりlombokを使ったほうがいい理由 - きしだのHatena

    lombokは、JavaでのアクセッサやtoString、equalsなどボイラープレートなコードをコンパイル時に生成してくれるライブラリです。 ただ、こういったコードの生成は、IDEを使えば自動で行えるので、わざわざlombokを導入するまでもないと考えることもできますが、ぼくはlombokを導入するべきだと考えて、lombokを使うようにしました。 このとき「lombokを導入するべき」と考えた理由を書いておきます。 lombokとは lombokは冒頭でも書いたように、Javaのアクセッサなどを生成してくれるライブラリです。 Project Lombok import lombok.*; @Setter @Getter @AllArgsConstructor @NoArgsConstructor @ToString public class LombokSample { privat

    JavaでIDEのアクセッサ生成よりlombokを使ったほうがいい理由 - きしだのHatena
    kimutansk
    kimutansk 2013/07/31
    これは良さそうなんですが、コメントを読んでいると余計な苦労をする可能性がある・・・ということですかね。残念ながら。
  • ソフトウェア工学は失敗している - きしだのHatena

    特に学術的にソフトウェア工学に触れたことはないのですが、むしろそうではなく現場にいる身としては、ソフトウェア工学は失敗しているように見えます。 「成功していない」ように見えるのではなく「失敗している」ように見えるのです。 もちろん、いまソフトウェア開発で使う技法やツールなど、ソフトウェア工学の産物はたくさんあり、現在のソフトウェア開発がソフトウェア工学から生まれたもので支えられていることには間違いありません。 でも、そうやって築き上げてきたものが、1999年以降ガラガラと崩れて、そしてうまく再構築できていないように見えます。 1999年、なにがあったかというと、XPエクストリーム・プログラミング入門というが発行されたのです。リンク先は2版ですが、日語版でも初版は2000年12月になっています。 ここからソフトウェア工学がガラガラ崩れた気がしています。 では、ここまでソフトウェア工学がど

    ソフトウェア工学は失敗している - きしだのHatena
    kimutansk
    kimutansk 2013/03/23
    確かにプロジェクトで違いが多いから全部が全部適用できるわけではないでしょうけど、一部適用して、それが今の開発の流れになっている気が・・・それを工学というと微妙かもしれませんが
  • 1