タグ

javaとJavaに関するrryuのブックマーク (49)

  • Javaであまりしないコーディング - 日々常々

    Java Advent Calendar 2014 - Qiita の9日目です。9日ったら9日です。 なんか難しいエントリが多い中ですが、空気を読まずに軽めでいきます。 Javaでは色々なコードの書き方ができるけど、実際あまりやらないよなーって思うコーディングについて、やらない理由を無理矢理書いてみた。 決して「やってはいけないコーディング」と言う意味ではないです。単に「私はあまりしない」程度で、一般的な(?)業務開発でもあまり見ない、くらいの位置付け。理解した上でやる分には全く問題無いですし、そう言うもんだと思って使っても良いとは思います。 複数変数を同時に宣言する int i, j = 2, k; 同じ型の変数(フィールドでもローカル変数でも)は同じ文で宣言できます。 けど、あまり使ってるのは見ません。 同じ型でしか使えないし、フィールドだとJavaDocコメント書き辛いし、初期化式

    Javaであまりしないコーディング - 日々常々
    rryu
    rryu 2014/12/10
    if (val == true)はしないけどif (val == false)はしたくなる時がある。
  • getter/setterとはなんだったのか - プログラマーの脳みそ

    Javaのgetter/setterのお話。 僕は当時を語るには若すぎるのだけど、過去を振り返って書いてみる。当時を知る人は誤りがあれば指摘してほしいし、情報があればコメントなりトラックバックなりして欲しい。前世紀の話というのは今となっては探すことがなかなか難しくなりつつある。 「privateな変数にpublicなアクセサを定義する」? - ネットの海の片隅で getter/setterとは何か Javaのオブジェクトにフィールドがあったとして、そのフィールドに値を設定するメソッドがsetter(せったー)、そのフィールドの値を取得するメソッドがgetter(げったー)と呼ばれる。慣習としてsetterはsetXXX(int value)といった様にsetから始まる名前をつけ、引数はひとつ。戻り値はvoid型。getterはgetXXX()といった様にgetから始まる名前をつけ、引数はな

    getter/setterとはなんだったのか - プログラマーの脳みそ
    rryu
    rryu 2014/10/13
    Java Beansでプロパティを定義する方法だったものがなぜかプロパティという言葉は伝承されずにgetter/setterに劣化したせいで変になっていったような気がする。
  • java.net.URLをHashMapに突っ込むと大変なことになるのでやめろ、それどころかequalsを呼ぶだけでも大変なことに - TODESKING

    参照: http://stackoverflow.com/questions/2348399/why-does-java-net-urls-hashcode-resolve-the-host-to-an-ip 公式ドキュメントによると: public boolean equals(Object obj) … 2 つの URL オブジェクトが等しいのは、同じプロトコルを持ち、同じホストを参照し、ホスト上のポート番号が同じで、ファイルとファイルのフラグメントが同じ場合です。 2 つのホストが等価と見なされるのは、両方のホスト名が同じ IP アドレスに解決されるか、どちらかのホスト名を解決できない場合は、大文字小文字に関係なくホスト名が等しいか、両方のホスト名が null に等しい場合です。 ホスト比較には名前解決が必要なので、この操作はブロック操作です。 java.net.URL#equals

    rryu
    rryu 2014/06/09
    バーチャルホストもあるし、同じIPアドレスに解決されるなら同じホストとする仕様はもはや不適切なんじゃないだろうか。
  • S2-020類似攻撃のStruts1での対策方法 - Qiita

    // Set the corresponding properties of our bean try { BeanUtils.populate(bean, properties); } catch(Exception e) { throw new ServletException("BeanUtils.populate", e); } finally { if (multipartHandler != null) { // Set the multipart request handler for our ActionForm. // If the bean isn't an ActionForm, an exception would have been // thrown earlier, so it's safe to assume that our bean is // in f

    S2-020類似攻撃のStruts1での対策方法 - Qiita
    rryu
    rryu 2014/04/25
    同じようなものには同じような脆弱性が発生すると。
  • もしもラムダの中で例外が発生したら(前編) - Taste of Tech Topics

    ある日、 id:cero-t がJJUGの重鎮たちと話している中で、とある宿題をもらいましたとさ。 「Java8のラムダの中で例外が発生したら、どうなるんだろう?」 こんにちは、アキバです。 もう皆さんはJava8を使ってみましたか? とりあえずインストールしてみた人! ・・はーい (おまえか という冗談はさておき、 今回は、id:cero-t に代わって私が冒頭のお題を調べてみました。 1. SerialStreamで動かしたラムダで例外が発生したら まずは、小手調べにシングルスレッドの場合を見てみましょう。 検査例外が発生するようなコードをラムダに書いてみると、コンパイルエラーになります。 こんなコードです。 try (BufferedWriter writer = Files.newBufferedWriter(Paths.get(W_FILENAME))) { // writer.

    もしもラムダの中で例外が発生したら(前編) - Taste of Tech Topics
    rryu
    rryu 2014/04/18
    ラムダにはthrowsが指定できないから検査例外が投げられないというのは仕様として変な気がするが何とかならなかったのだろうか。
  • Java8時代の文字列連結変態さんまとめ - きしだのHatena

    いろいろな文字列連結のコードを書いた人がいたのでまとめておきますね。 主に変態さん。 とりあえず、基準として、メモリ確保したStringBuilder版 public static String stringBuilderJoinMem(){ StringBuilder s = new StringBuilder(9100).append("["); for(int i = 0; i < strarray.length; ++i){ if(i != 0){ s.append("],["); } s.append(strarray[i]); } s.append("]"); return s.toString(); } 1037ms ということで、まずはbackpaper0さん。比較的常人のコード。 https://gist.github.com/backpaper0/10273558 pu

    Java8時代の文字列連結変態さんまとめ - きしだのHatena
    rryu
    rryu 2014/04/15
    char配列よりもCharBufferの方が速いのはダイレクトバッファのおかげなのだろうか。
  • StringBuilderを使ったクソコードはどこまで遅いか - きしだのHatena

    ※ 4/9 11:25 いろいろ計測しなおしてます。こちらも参照 Javaで文字列連結する場合には+演算子よりもStringBuilderを使うべき、という話があるのですが、よく sb.append("[" + data + "]"); みたいなコードをみかけて、あんまり意味ないなーと思ったりします。 あと、 sb.append("title:"); sb.append("[" + data + "]"); みたいに、+演算子を使った一行の式にして sb = "title:" + "[" + data + "]"; としておけば「title:」と「[」はコンパイル時点で最適化されたのに、ってコードもあります。 ということでTwitterJavaでの文字列連結は+を使うべき、ってやったほうが、StringBuilder使ったsb.append("[" + data + "]")みたいなク

    StringBuilderを使ったクソコードはどこまで遅いか - きしだのHatena
    rryu
    rryu 2014/04/09
    最適化されて+がappendに置換された結果クソコードが一番速かったみたいな展開を期待したが、現実は厳しかった。
  • 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
    rryu
    rryu 2013/06/11
    interfaceならフィールドを持たないし、親を明示してメソッドを呼び出せるから、ひし形継承になっても困らないのか。
  • 文字列でswitchするときはif-else switchイデオムを使うほうが安全 - きしだのHatena

    Java SE 7から、switch構文で文字列が使えるようになりました。 public void hoge(String s){ switch(s){ case "a": System.out.println("AA"); break; case "b": System.out.println("BB"); break; default: System.out.println("Other"); } } ところが、残念なことに、sがnullの場合はdefaultには飛ばず、ぬるぽが発生します。 そこで、null判定は事前にif文で行うことになるので、次のようなif-else switchイデオムを使うと便利です。 if(s == null){ System.out.println("Null!"); }else switch(s){ case "a": System.out.printl

    文字列でswitchするときはif-else switchイデオムを使うほうが安全 - きしだのHatena
    rryu
    rryu 2013/04/27
    hashCodeの衝突を考慮していたりして単純ではないので実装の都合というよりはcaseラベルにnullを書けるようにするのが難しかったとかなのかもしれない。
  • 「JavaはGoogleへ売却すべき」――脆弱性放置のOracleに忠告

    企業が手にできる最悪の保証といえば、政府によるソフトウェア使用禁止令だろう。2013年1月10日(米国時間)、米Oracleに起きたことは、まさにそれだった。米国土安全保障省(DHS)が、全てのコンピュータユーザーに対して、重大な脆弱性があることを理由に、クライアントPCJavaを無効にすべきだと警告したのだ。 関連記事 米Oracleの怠慢を批判――「Javaはアンインストールすべき」 検出不可? Javaの脆弱性を突く「ファイルなしボット」 Javaをアンインストールせずにセキュリティを高める方法 「Java 7 Update 10」に、「Red October」というグローバルマルウェアネットワークへ接続する重大な脆弱性悪用プログラム(エクスプロイト)が見つかった。そのエクスプロイトは、世界中の政府系機関にある数百台のクライアントPCに侵入し、数カ月間にわたって活動していた。 Or

    「JavaはGoogleへ売却すべき」――脆弱性放置のOracleに忠告
    rryu
    rryu 2013/02/27
    とりあえずはフル機能を持つ環境を薄いサンドボックスで防御するというモデルを守り切るのは無理ゲーなのを認めてJavaアプレットを廃止して欲しい。
  • Chapter 14. Blocks and Statements

    rryu
    rryu 2013/01/09
    JLS 14.20.3. try-with-resources。括弧の中に記述できる変数定義はAutoCloseableのサブタイプのみらしい。
  • 若作りするためのJavaコード - 谷本 心 in せろ部屋

    このエントリーは Java Advent Calendar 2012 の10日目として書きました。 なんか色々あって、公開が2日ぐらい遅れてしまってごめんなさい(><) 前日は、Hideki Kishida (@quicy) さんの「Xtend の Lambda とストリーム処理」です。 http://legacy-style.blogspot.jp/2012/12/xtend-lambda.html 翌日は、Katsumi Kokuzawa (@kokuzawa) さんの「WiiRemoteJで遊ぼう on OSX 10.8.7」です。 http://kokuzawa.github.com/blog/2012/12/11/wiiremotejdeyou-bou-on-osx-10-dot-8-7/ どちらも今風ですね! そんな中、若干、加齢臭が気になり始めたこの頃の私としては、 若さアピ

    若作りするためのJavaコード - 谷本 心 in せろ部屋
    rryu
    rryu 2013/01/09
    try-with-resourcesなんてあるんだ。文法がちょっとキモい。
  • 入門書の巻末索引に こっそり「ぬるぽ」を掲載したことがバレた件 - flairDays - てさぐりの日々

    「ガッ」 いつも拙著『スッキリわかるJava入門』『スッキリわかるJava入門 実践編』にあたたかい書評をいただきありがとうございます。 昨日、『CodeZineさんの記事で採点してみた』記事を書いたばかりでしたが、そういえば先日、ついに時がついに満ちてしまったので、これはご報告せねばと思いネタ記事を書いてみます。 いつかこんな日が来るって、私、心のどこかで思ってた。 編集さんに見つからないようにこっそり仕込んでから約1年。いつ、誰に最初に気づいてもらえるだろう...と思いながらずっと心に秘めていた「ぬるぽ」。 ついに先日、某読者の方に発見の報告をいただきました! 『ぬるぽが索引に載ってるJava入門書は、スッキリJavaだけ!』 とか店頭POP作ったらいいんじゃないですか? という、出版社に羽交い締めで止められるようなアドバイスも頂きましたが、とりあえず心の中で暖めておきます(笑)。 索

    入門書の巻末索引に こっそり「ぬるぽ」を掲載したことがバレた件 - flairDays - てさぐりの日々
  • https://www.oracle.com/technetwork/jp/ondemand/java/e-14-java-1484725-ja.pdf

    rryu
    rryu 2012/10/28
    バグによるパフォーマンス劣化が多いような。
  • 【連載】Java API、使ってますか?

    現在、Java関連の周辺技術の標準化はJCP(Java Community Process)によって行われています。連載ではそれらJSRとして公開されている仕様の中から、とくに重要性の高いものや注目を集めているものなど をピックアップし、その概要や使用方法、関連するプロダクトなどを紹介していきます。

    【連載】Java API、使ってますか?
    rryu
    rryu 2012/04/16
    JSR(Java Specification Request)の解説などの連載。
  • なぜ Play は Servlet を使っていないのか(Why there is no servlets in Play 翻訳) - ikeike443のブログ

    まだ正月休みなのです。暇なので訳してみました。 この記事は 1年半以上前に Play の生みの親である Guillaume Bort がブログに書いたものです。 (2012/8/19追記: リンク切れしていたためリンクを貼り直しました) なぜ Playframework では Servlet が一切使われていないのかについて、簡潔に書いています。 丸山先生が Play に注目し始めた今、Play2.0 のリリースが間近に迫った今、あらためて読むと面白いかも知れません。 なぜ Play は Servlet を使っていないのか Servlet API に準拠せずに Java web フレームワークを作ることはかなり変に思えるかも知れない。大抵の人はなぜこんな普通じゃない選択をしたのかを聞いてくる。気に入ってくれる人も何人かいるが、大半は毛嫌いする。正直に言うと、 Play フレームワークの一番

    なぜ Play は Servlet を使っていないのか(Why there is no servlets in Play 翻訳) - ikeike443のブログ
    rryu
    rryu 2012/04/10
    Rails風なものを作ろうとすると動的な構成管理機能が必要になるだろうから、それを静的ガチガチで状態持ちまくりのServlet APIの上に作ったらやさぐれるのも無理はない。
  • はてなブログ | 無料ブログを作成しよう

    山岸凉子を読んでくれ ゆきてかえりし物語 ぽっぽアドベント2025、12/13担当のふじおです。毎度参加させていただいてありがとうございます。 昨日はあそさんの新居でのクリスマスツリー購入のすったもんだのお話で、思わず笑ってしまう奮闘記。お父様との思い出が素敵すぎる。新しい住み処っ…

    はてなブログ | 無料ブログを作成しよう
    rryu
    rryu 2012/03/27
    同じ名前のデフォルト実装を持つインターフェースを複数実装してもメソッドを上書きして隠蔽すればコンパイルできそうな気がするけどどうなんだろう。
  • さよならsun.comのつづき 2012-03-26 - marsのメモ

    (追記)日Javadocが従来通りオンラインで参照できるようになったようです。 → 続:旧 Java SE API リファレンスへの新しいリンク先変更について | 寺田 佳央 - Yoshio Terada それでも、oracle.comから探しに行くと見つからないので気をつけてね(日Javadocは、日オラクルの管理なんだそうな。 java.sun.comにアクセスできなくなる事について、ちょっと気になることがあったので寺田さんに聞いてみました。 なるほど、whoisでsun.com調べてみると"Record expires on 20-Mar-2017"だし、確かに java.sun.com にアクセスするとwww.oracle.com/technetwork/java/ にリダイレクトされる。 とりあえず、次のURIは見えるのを確認しました(でも、なんか不安定なのよね。 h

    さよならsun.comのつづき 2012-03-26 - marsのメモ
    rryu
    rryu 2012/03/27
    XMLスキーマを置いてあるサイトが無くなるとかこわい。
  • Google Workspace Updates: New community features for Google Chat and an update on Currents

    April 12, 2023 New community features for Google Chat and an update on Currents Currents Google Chat Other Note: This blog post outlines upcoming changes to Google Currents for Workspace users. For information on the previous deprecation of Google+ for users with personal Google accounts, please see this post. Last year, we announced plans to wind down Currents, to focus efforts on community exper

    Google Workspace Updates: New community features for Google Chat and an update on Currents
    rryu
    rryu 2012/03/27
    java.comに移行とかじゃないのだろうか。まあ、あのサイトもやる気が感じられないが…
  • Redirecting

    rryu
    rryu 2011/06/03
    JavaFX 2.0のUIコントロール。今時このきついグラデーションのデザインは無いと思う。