タグ

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

  • Java11ではjavacせずにJavaファイルが実行できるようになる - きしだのHatena

    JDK11 ea18から、javacしないでもJavaファイルを実行できるようになりました。 あと、Windowsバイナリはzipファイルで提供されるようになっています。tarコマンドが提供されたとはいえ、エクスプローラーから解凍できるzipファイルになるのは ありがたい。 JDK 11 Early-Access Builds JEP330が取り込まれたことにより、ソースファイルがひとつのJavaプログラムは、javac不要でjavaコマンドで実行できるようになります。 JEP 330: Launch Single-File Source-Code Programs Windowsのコマンドプロンプトだと こんな感じ。 C:\Users\naoki\java>more Hello.java public class Main { public static void main(String

    Java11ではjavacせずにJavaファイルが実行できるようになる - きしだのHatena
  • Java9、10でStringの+=に副作用があるバグ - きしだのHatena

    Java 9、10でStringの+=にバグがあるということがStack OverFlowで報告されていました。 Why does array[idx++]+="a" increase idx once in Java 8 but twice in Java 9 and 10? - Stack Overflow どういうバグかというと「s[i++] += i + ""」のようなコードが正しく動かないというものです。 次のコードを実行してみます。 public class PlusEqual { public static void main(String[] args) { System.out.print(System.getProperty("java.version")); String[] s = {"aa", "bb"}; int i = 0; s[i++] += i + "";

    Java9、10でStringの+=に副作用があるバグ - きしだのHatena
  • Seasar2を新規案件に採用するのはそろそろやめたほうがいい - きしだのHatena

    Seasar2の機能追加停止が宣言されてから、すでに6年弱たっています。 Seasar2.4に対する追加要望があれば、もちろん検討します。ただし、大きな変更や追加はもうないでしょう。 Seasar2の今後のロードマップ 2008-01-29 - ひがやすを blog 後継になる予定だったSeasar3も開発が中止されて3年たちました。 Seasar3開発中止 2010-08-06 - ひがやすを blog ここでSeasar2.5を出す方向で動くということでしたが、実現しませんでした。 あのころSeasar2に関わっていた人も、ScalaがメインになったりNode.jsをさわったり、不意ながらPHPをさわったり、さわってみるとPHPもそれほど悪くなかったり、やっぱりPHP気にわなかったりと、いろいろな道を進んでいます。 DIコンテナ自体の機能も時代遅れ感がでてきており、関連プロダクトも

    Seasar2を新規案件に採用するのはそろそろやめたほうがいい - きしだのHatena
  • 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
  • Java8 Lambdaの文法拡張まとめ - きしだのHatena

    デフォルトメソッドは前に解説しました。 Java8で最もインパクトのある構文拡張、デフォルトメソッド ここでは、それ以外の構文拡張についてまとめておきます。 ラムダ式 実装すべきメソッドがひとつだけのインタフェースを関数型インタフェースといいます。 UnaryOperatorインタフェースは実装すべきメソッドがapplyメソッドひとつだけなので、関数型インタフェースになります。 たとえば、UnaryOperatorインタフェースを実装したクラスを定義すると次のようになります。 class MyOp implements UnaryOperator<String>{ @Override public String apply(String t) { return "** " + t + " **"; } } このUnaryOperatorインタフェースを使う、List#replaceAllを

    Java8 Lambdaの文法拡張まとめ - きしだのHatena
  • Struts1職人の朝は早い - きしだのHatena

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

    Struts1職人の朝は早い - きしだのHatena
  • Java8で体験するオブジェクトと関数の狭間 - きしだのHatena

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

    Java8で体験するオブジェクトと関数の狭間 - きしだのHatena
  • HTML5モバイルWebフレームワークの比較 - きしだのHatena

    モバイル用でJavaScriptでアプリケーションを作成できるフレームワークについて比較した記事を翻訳しました。 Comparing HTML5 Mobile Web Framework - Dzyngiri Comparing HTML5 Mobile Web Framework Apr 27, 2012 by Dzyngiri 今年はモバイルWebにとって面白い年になっている。HTML5とCSS3の採択、モバイルブラウザのパフォーマンス向上、モバイルアプリケーションフレームワークの爆発は、モバイルデバイスでのリッチでインタラクティブなWeb体験の作成がこれまでよりも現実的になったことを意味する。PhoneGapのようなラッパを使うことで、iPhoneiPadAndroidのネイティブのAppストアでアプリケーションを配布することも可能になった。単一のコードベースでマルチプラットフォ

    HTML5モバイルWebフレームワークの比較 - きしだの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 - きしだのはてな
  • 夏休みに読みましょうの本 - きしだのHatena

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

    夏休みに読みましょうの本 - きしだのHatena
  • Java SE 7のjava.nio.file.Filesがとても便利な件 - きしだのHatena

    とても便利。 たとえば、あるサイトからHTMLをダウンロードしてファイルに保存する場合。 try(InputStream is = new URL("http://www.google.com/").openStream()){ Files.copy(is, Paths.get("C:\\Users\\kishida\\Downloads\\google.html")); } ファイルの内容を一行ずつ読み込んで処理をする場合。 for(String s : Files.readAllLines(Paths.get("C:\\Install.log"), Charset.defaultCharset())){ System.out.println(s); } まあ、直接文字列でファイルパスを渡せなかったり、デフォルトCharset使う場合でも引数が省略できなくて、まだるっこいコードになってし

    Java SE 7のjava.nio.file.Filesがとても便利な件 - きしだのHatena
  • Java 7の並列ライブラリをためしてみる - 2011-02-20 - きしだのはてな

    と言っても1メソッド呼び出してるだけですけど。 ソースは最後においていますが、整数のリストの合計を取得してます。 次のようなCallableインタフェースを実装したクラスを用意して SummaryTask implements Callable<Integer> そのクラスのリストを用意して List<SummaryTask> summaryTasks = new ArrayList<>(); 一気に実行開始 List<Future<Integer>> results = new ForkJoinPool().invokeAll(summaryTasks); 最後に結果を集計という感じです。 for(Future<Integer> future : results){ result += future.get(); } 実行結果としては、ぼくのマシンはデュアルコアなので、だいたい2倍の速度

    Java 7の並列ライブラリをためしてみる - 2011-02-20 - きしだのはてな
  • 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冊
  • Java Cloud Meeting Fukuoka 2010の資料 - きしだのHatena

    参加されたみなさま、おつかれさまでした。 楽しかったという意見が多く見られたのでうれしいです。 ということで、当日の資料です。 え?背景に色がついてる?きっと当日はプロジェクタの調子が悪くてまっしろに見えたのではないかと。 クラウドで変わるJava開発 - Java Cloud Meeting Fukuoka 2010View more presentations from nowokay. GWTでブラウザアプリ - Java Cloud Meeting Fukuoka 2010View more presentations from nowokay.

    Java Cloud Meeting Fukuoka 2010の資料 - きしだのHatena
  • クラウドという言葉がわけわからないので、分類してみた - 2010-03-05 - きしだのはてな

    クラウドという言葉、わけわかりません。 で、その理由がわかってきました。 なんでクラウドっていう言葉がわけわからないかというと、ひとつはクラウドという言葉が指すものがたくさんあるからです。全体を包括するような、具体的なものを表さないコンセプトとしてのクラウドのほかに、簡単にあげれるもので少なくとも5つの意味で使われています。 まず最初はサーバーの形態としてのクラウドです。 サーバーが「たくさん」と言える量あって、どのサーバーでどのプロセスを動かすか決まってなくて、どれか壊れてもデータが失われず自動的に処理が引き継がれ、追加も簡単にできる、とだいたいこんな特性を持つサーバー構成です。 ここが基になります。以降、クラウド型サーバーとします。 そして、そのクラウド型サーバーを利用者に提供する形態としてIaaS、PaaS、SaaSがありますが、それぞれがクラウドと呼ばれることがあります。 Iaa

    クラウドという言葉がわけわからないので、分類してみた - 2010-03-05 - きしだのはてな
  • 創るJava 改訂3版 でます - 2009-09-01 - きしだのはてな

    やっとこさ、出ます。9月中旬らしい。 アマゾンのほうも、もうちょっとしたら予約できるようになるのではないかと。 http://book.mycom.co.jp/book/978-4-8399-3253-4/978-4-8399-3253-4.shtml 今回は、NetBeans6.7対応で、Java SE 6/Java EE 6 に対応してます。 Servlet3.0やJSP 2.2の記述を入れています。まだ正式にはJava EE 6がリリースされてないので、注釈程度ですが。 それ以外には、アルゴリズム・データ構造の項を入れたことと、ソケット通信を入れたことです。 いままでは、「Javaのことについて知っていること」を目指したのですが、「プログラムについて知っていること」を少し目指してみました。 ということで、よろしくおねがいします。

    創るJava 改訂3版 でます - 2009-09-01 - きしだのはてな
  • どうでもいいことをあたかもなんかすごいことのように語るメソッド - きしだのHatena

    どうでもいいことを、あたかもなんかすごいことのように語る方法を考えてみる。 まず、書きたい「どうでもいいこと」を決めよう。 とりあえずここでは、「明星のインスタント焼きそば作るときにかやくを入れ忘れたのだけど、それってフタの説明が悪いんじゃない?」ということを書くとしよう。ここで、読んでる人に「ようわからんけどなんかすごい」と思わせるために話の主題をずらすのが大切だ。今回は、結論を「UFOのターボ湯切りいいよね」ということにしよう。 文はこのようになる。 先日明星のインスタント焼きそばをべた。 ふたの説明を見ながら手順どおりに作ったのだけど、べる段になって、かやくはあらかじめ入れておかないといけないことに気づいた。これはふたの説明が悪いのではないか。ふたの説明はインスタント焼きそばの味を最終的に決めるものであるから、わかりやすく書くべきである。 UFOのようにかやくをあらかじめめんの

    どうでもいいことをあたかもなんかすごいことのように語るメソッド - きしだのHatena
  • 過去の状態のスナップショットを取れるMap - 2009-04-24 - きしだのはてな

    時間を指定して、その時点での状態を取れるようなMapを作ってみた。 何に使うかとかは考えてない。 こういった、データの世代別管理をして過去のある時点をスナップショットとして取得できるようなデータ構造は、扱うデータが巨大になってバックアップのためにシステムを止めれないというときに重要になったりしますね。 あと、データを変更せず追記する一方なので、ストレージの仕組みとして使うと、変更回数の制限があるSSDと相性がいいとか。 使うとこんな感じ。 public static void main(String[] args) throws InterruptedException{ VersionedMap<String, Integer> vm = new VersionedMap<String, Integer>(); vm.put("abc", 3); vm.put("aaa", 6); vm

    過去の状態のスナップショットを取れるMap - 2009-04-24 - きしだのはてな
  • おとうさん、ぼくにもYコンビネータがわかりましたよ! - 2009-04-09 - きしだのはてな

    やっと、Yコンビネータが何を意味するものなのか、どういう意義があるのかがわかりました。 名前を使わず再帰ができますよ!というだけのものじゃなかったのですね。 まずλありき 関数の話をしたいのです。 そのとき、いちいち hoge(x) = x * 2 としてhogeを・・・、とか名前をつけて話を進めるのがめんどうなので、関数を値としてあらわすと便利ということで、λという値を定義するのです。 そうすると、上のhoge関数なんかはλ(x)(x*2)などとあらわせますが、引数をあらわすのに()を使うといろいろまぎらわしいので、 λx.x*2 のように表記します。 というのがλ。 このとき、λになにかわたされたら、引数としてあらわされる部分を単純におきかえます。 (λx.x*2)y とあったら、xの部分をyでおきかえて (λx.x*2)y → y * 2 となります。λの引数部分を与えられた引数で置

    おとうさん、ぼくにもYコンビネータがわかりましたよ! - 2009-04-09 - きしだのはてな
    igaiga07
    igaiga07 2009/04/14
    Yコンビネータ
  • 1台のマシンで並列実行するためのMapReduceフレームワークを作ってみた - きしだのHatena

    ブックマークのコメントに 1台でもGbyte単位のデータを処理可能なプログラムを簡単に書けるのは十分なメリットだと思う。 とあったので、ついカッとなって作ってみた。 サンプルは前と同じく、クラスがJavaソース中でimportされている回数を数えるもの。 mapreduceメソッドを適当に呼び出せばおっけーです。 こんな感じの結果ファイルが生成されました。 java.io.FileOutputStream 1 java.io.FileReader 1 java.awt.Graphics 1 java.io.Reader 1 java.awt.event.* 3 java.io.BufferedReader 3 書いてみたら動いたというレベルなので、実際に使うにはちゃんと例外処理とかをやってください。 ソースはこんな感じ import java.io.*; import java.lang.

    1台のマシンで並列実行するためのMapReduceフレームワークを作ってみた - きしだのHatena