タグ

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

  • iteratorや拡張forよりStreamのforEachが速い? - きしだのHatena

    ちょっと気になったので、簡単にベンチマークしてみました。 最初は、ラムダ呼び出しが入る分forEachは遅いんじゃないかと思っていたら、倍の速さに。 もちろん、いろんな条件で変わるんだろうけど、ここまで差が出ることがあるのは驚き。 あと、Collectors.summingIntのような基型に対するCollectorを使うよりは、intStreamに変換してからsumなど専用メソッドを使うほうが圧倒的に速いことも確認できた。 とりあえず、0から10万件のListを用意。 array = IntStream.range(0, 100_000).boxed().collect(Collectors.toList()); それからベンチマーク用のメソッドを用意。 public static void bench(String name, Supplier<Integer> proc){ ben

    iteratorや拡張forよりStreamのforEachが速い? - きしだのHatena
  • 今どきのJava Webフレームワークってどうなってるの? - きしだのHatena

    昨日のSeasar2のエントリについたコメントなどで、「とはいえ代わりに何つかうの?」みたいな話が出てたので、とりあえずJava EEのWebフレームワークについて簡単にまとめてみます。 Java SE 8+Java EE 7+lombokで書いていますが、基的なところはJava SE 7+Java EE 6でも大丈夫です。 なので、今どきとは書いてますが、基的には2009年12月のJava EE 6ということで、実はすでに4年近くたってます。 何も考えてない なんも難しいこと考えないなら、やっぱJSPが楽ですよね。 なんでも書けちゃう。 <%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content=

    今どきのJava Webフレームワークってどうなってるの? - きしだのHatena
  • 文章に向いてない構造をいかに文章に向いた構造に直列化するかが大事 - きしだのHatena

    Software Design 12月号の特集が「なぜエンジニアは文章が下手なのか?」というタイトルだったので、読んでみたら、ちょっと残念な内容だった。 「それは文章で書くべき情報なのか」という章があって、直列化した論理構造であれば文章には書きやすいけど、分岐やループがあるような構造だと書きにくいということが書いてあった。そこで文章化しにくい構造の例として地図があげてあって、暗にそういう構造は文章化をやめて図であらわせと言っているように読める。 けれども、図に書いたところで、書く側は文章化から逃げれて満足かもしれないけど、それを読み取る側は結局どこかから順番に解釈していく必要がある。図に逃げるのは、読み手に責任を押し付けているだけだと思う。 で、「ですから文章を書く前にまず論理構造を考える必要があります」と続いていて、では考えた論理構造が「文章に向かない論理構造」だったらどうするの?逃げる

    文章に向いてない構造をいかに文章に向いた構造に直列化するかが大事 - きしだのHatena
  • MapReduceのパターン、アルゴリズム、そしてユースケース - きしだのHatena

    Ilya Katsov氏による「MapReduce Patterns, Algorithms, and Use Cases」の翻訳 http://highlyscalable.wordpress.com/2012/02/01/mapreduce-patterns/ (下書きに入れて推敲するつもりが、なんか公開されてしまっていたので、あとでいろいろ修正すると思います) February 1, 2012 この記事では、Webや科学論文で見られる異なるテクニックの体系的な視点を与えるために、数々のMapReduceパターンとアルゴリズムをまとめた。 いくつかの実用的なケーススタディも提供している。 すべての説明とコードスニペットでは、Mapper、Reducer、Combiner、Partitionaer、ソーティングにおいてHadoopの標準的なMapReduceモデルを利用します。このフレー

    MapReduceのパターン、アルゴリズム、そしてユースケース - きしだのHatena
  • ネットワークに自信のない人は東大講義の情報工学概論Aを見よう - 2012-01-28 - きしだのはてな

    東大にUTオープンコースウェアというのがあって、いろいろな講義資料が公開されています。 http://ocw.u-tokyo.ac.jp/ その中には動画授業があるものもあって、そのほぼすべてがおもしろいです。ただ興味がもてるかどうかという違いだけ。 その中で、情報工学概論Aというのがあって、授業内容としてはネットワークの概論になってます。まだ全部見てないけど、ネットワーク全般の話からTCP/IPの話、セキュリティまでの講義が公開されてるみたい。 こういう一貫した話がちゃんと語られてる講義というのはなかなか公開されてない、公開されてたとしてもネットワーク設定程度だったりするので、これは貴重だと思います。 http://ocw.u-tokyo.ac.jp/lecture?id=11314&r=609526321 ネットワークの勉強をしたことがない人は、テレビのかわりにこの講義を流しておくとい

    ネットワークに自信のない人は東大講義の情報工学概論Aを見よう - 2012-01-28 - きしだのはてな
  • 2010-11-25 - きしだのはてな - 技術力をあげたいプログラマが読んでおかないと話にならない本10冊

    ここにあげたじゃなくてもいいので、同じ分野でなにか読むとか、に書いてあるほど詳しくなくてもそれなりに知識をもっておくべき。 アルゴリズムクイックリファレンス 作者: George T. Heineman,Gary Pollice,Stanley Selkow,黒川利明,黒川洋出版社/メーカー: オライリージャパン発売日: 2010/04/26メディア: 単行(ソフトカバー)購入: 11人 クリック: 656回この商品を含むブログ (72件) を見る まずはアルゴリズム。クイックって書いてあるけどぜんぜんクイックじゃないw。各言語で書かれた入門書を読んでもいいと思う。 実際のプログラムにアルゴリズムの知識を活かすということを知りたいならプログラミングコンテストチャレンジブックがおすすめ。 プログラミングの基礎 ((Computer Science Library)) 作者: 浅井健一

    2010-11-25 - きしだのはてな - 技術力をあげたいプログラマが読んでおかないと話にならない本10冊
  • AndroidでTwitterのタイムラインを表示するサンプル - 2009-10-30 - きしだのはてな

    AndroidTwitterのタイムラインを表示します。HttpClientとJSONとWebViewのいい感じのサンプルになっていると思います。 とりあえずこんな画面定義をしてWebViewを配置しておく。 <?xml version="1.0" encoding="UTF-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <Button android:id="@+id/twit_button" android:layout_width="fill_parent" androi

    AndroidでTwitterのタイムラインを表示するサンプル - 2009-10-30 - きしだのはてな
  • プログラムの動かし方の本 - きしだのはてな

    Seasarカンファレンスで、基礎としてプログラムの動かし方であげた。と、それに加えて挙げれなかった。 ちなみにSeasarカンファレンスでの内容はid:tanamonがまとめてくれてる。というか、手書きスライドの書き起こしをしてもらってます。 「手書きで書く→ソーシャルに清書してもらう」という、新しいプレゼン手法が生まれました! 差のつく勉強法200のメモ - tanamonの日記 プレゼンや以前のエントリでは、プログラムというのは計算論と意味論に分かれると書いたけど、プログラム意味論という分野と混同してへんな議論になっちゃうので、「プログラムをどう動かすか」と「プログラムをどう書くか」に分かれるとします。命令的な側面と宣言的な側面だと言ってもいいかもしれない。今回は命令的な側面について。 まずは、基礎となる数学、離散数学について。 やさしく学べる離散数学 作者: 石村園子出版社/メ

    プログラムの動かし方の本 - きしだのはてな
  • きしだのはてな: あなたがfollowしている人はこんな人をfollowしています

    つくってみたはいいけど、amachangさんとかHamachiya2さんとかdankogaiさんとか、上位にきそうな人が上位に来たので面白くなかった。 Rubyならこんなに短くかけるよ!とか、やればいいと思う。 import java.io.*; import java.net.*; import java.util.*; import javax.xml.bind.*; import javax.xml.bind.annotation.*; public class Recommender { /** キャッシュ置き場 */ static String path = "C:\\User\\kishida\\twitterfriends\\"; /** ユーザーデータを読み込み */ static Users getUsers(String name){ try { String file

    きしだのはてな: あなたがfollowしている人はこんな人をfollowしています
  • 2005-08-18

    やっぱり3目並べは難しめなので、ちょっと簡単な問題を。 x,yの2つの整数が与えられるとする。ここでx >= yとする 「o」という文字をy行x列表示せよ ただし対角線部分は「x」を表示する で、この問題をちょっと難しくする条件。というか方法を知ってるか知らないか。 掛け算割り算を使わない。 足し算引き算の演算回数の合計はxの3倍以内とする 演算回数にはforループでのカウンター加算は含めない というかkoichikさん向け(^^ 小船の問題。 父・母・息子×2・娘×2・メイド・犬がいる 2人乗りの船ひとつで全員向こう岸に渡りたい(犬も一人と数える) 父は母がいないとき娘をべる 母は父がいないとき息子をべる 犬はメイドがいないとき家族全員をべる 船をこげるのは父・母・メイドだけ みんなが渡れる手順を求めるプログラムを作成せよ。 どんなプログラムになるかアタリもつけてないので、すごく難

    2005-08-18
    swat
    swat 2005/08/19
  • プログラムはプロセスで組むんじゃない。ひとりひとりの技術者が組むんだ - きしだのHatena

    元ネタは中田英寿がよくいってた 「サッカーはシステムでやるんじゃない。ひとりひとりの選手がやるんだ」 みたいな話なんですけどね。 「1:1で負けていてはシステムは機能しない」とか。 要するに開発を成功させるためにはプロセスをごちゃごちゃいじくるよりプログラマの「フィジカル」の強さを上げることの方が大切なんじゃないかと思うわけです。 アジャイルとかXPとかやわらかいプロセスだと、よりプログラマのフィジカルっていうのが求められると思うんですね。平鍋さんのお話とか聞いてても、同じやり方で成功させるためには「平鍋さんとその仲間たち」レベルの技術者が必要だよなぁとか。 ここでの「フィジカル」っていうのは、デザインパターンとかオブジェクト指向とかリファクタリングとか、そういう「テクニック」ではなくてもっと基的な力のことで、要するに与えられた処理が間違いなく書けるかどうかっていうことです。 例えばko

    プログラムはプロセスで組むんじゃない。ひとりひとりの技術者が組むんだ - きしだのHatena
  • 1