タグ

javaに関するKinjouJのブックマーク (296)

  • あえて実装し、解析することでバグを理解する (1) デッドロック(Java) - Qiita

    概要 メモリリークやデッドロックなどの問題を解析する方法はインターネットにたくさん公開されています。しかし、解析の対象となる問題自体は、いつ、どのようなものが目の前に現れるか分からないので、実際に問題に直面するまでに、体系的に解析の方法を習得し、実践しておくのはなかなか難しいことではないかと思います。 そこで、実践形式で学習ができるように、問題を意図的に再現可能なバグだらけのWebアプリケーションを開発し、Qiitaにもそれに関する情報を公開してみました。このWebアプリケーションは、コマンド1つでビルドや起動ができるとても手軽なものなので、実験や教育の目的でも活用できると思います。 このWebアプリケーションを使って、これからいろいろな問題(バグ)とそれを解析する方法を少しずつ紹介していきたいと思います。 ということで、第1回目に紹介するバグは、Javaのスレッドのデッドロックです。 デ

    あえて実装し、解析することでバグを理解する (1) デッドロック(Java) - Qiita
    KinjouJ
    KinjouJ 2017/03/01
  • Javaの文字列の長さを判定するには - $shibayu36->blog;

    自分の頭を整理するために書いておく。正しいかは知らない。 まず前提として、Javaの内部表現としての「文字」は16ビット長のUTF-16ということがある。そうすると、普通に長さを取得すると、UTF-16のサロゲートペアで表される文字は2文字と扱われる。 また、文字には合成済み文字という話がある。「か」の後に濁点を結合することで、「が」を表現するみたいなやつ。 これらから、どこまで考慮して文字列の長さを取得するかでやり方が違う。 UTF-16のサロゲートペアを考慮しない UTF-16のサロゲートペアを考慮する 合成済み文字を考慮する 以下試したサンプルコード。 import java.text.BreakIterator; public class UnicodeCharSample { public static void main(String[] args) { // 𪛀あが St

    Javaの文字列の長さを判定するには - $shibayu36->blog;
    KinjouJ
    KinjouJ 2016/12/23
  • AndroidでJava8を使う(Jackツールチェーン) - tsurutanのつぶやき

    Jackツールチェーン 今回はAndroidJava8を使う方法を紹介したいと思います。 以前までretrolambdaというライブラリーが主流でしたが、Android StudioがアップデートしJackツールチェーンというAndroid StudioでJava8が有効にできる素晴らしいツールが使えるようになり至るところの会社がjackツールチェーンに移行し始めている頃です(多分)。 Jackツールチェーンで扱えるJava8の機能は下記のようになります。 デフォルトおよび静的インターフェースのメソッド ラムダ式 反復アノテーション さらにさらに下記のJava8機能のAPIも使えるようになりました。 リフレクションおよび言語関連の API java.lang.FunctionalInterface java.lang.annotation.Repeatable java.lang.ref

    AndroidでJava8を使う(Jackツールチェーン) - tsurutanのつぶやき
  • 現在時刻を動的に変更してJUnit実行したい場合の方法 - Qiita

    背景 現在時刻を使った処理のJUnitテストを書きたい ファイルに時刻が埋まっているなど、チェックしたい時刻の変更が面倒 現在時刻から1分以内の処理時間かどうかを判定したい 判定対象となる時刻はファイルに記載されている この状態では、テストケースでファイルを用意してもその瞬間しか使えない。またファイル自体は自動生成するのはコストが高すぎる。 例えば、、、以下はStorm UI REST APIでアクセスできる情報。このcomponentErrors内にあるtimeを現在時刻と比較するようなJUnitの場合、色々と面倒。 { "executors": 1, "componentErrors": [ { "time": 1458203307000, "errorHost": "hostname", "errorPort": 6701, "errorWorkerLogLink": "http:\

    現在時刻を動的に変更してJUnit実行したい場合の方法 - Qiita
    KinjouJ
    KinjouJ 2016/10/08
  • jBrowserDriver で JavaScript つきスクレイピング - blog.8-p.info

    iKnow をスクレイピングしようとしたら https://iknow.jp/login が派手に JavaScript を使っていた。 仕方がないので Ghost Driver 経由で PhantomJS を呼ぼうと思ったら、最近 Ghost Driver はあまりメンテナンスされていないらしく If you need a better maintained WebDriver implementation, and write your code in Java, why not checkout Machine Publishers’ jBrowserDriver? Tell Dan Hollingsworth I sent you. 代わりに、jBrowserDriver がすすめられていた。jBrowserDriver は A programmable, embedded web

    KinjouJ
    KinjouJ 2016/10/06
  • Java 8から増えてたExplicit receiver parameters - 水まんじゅう2

    Java 8からこういう書き方が出来るようになっていたようです。(初めて知った) public class Main { public String getString(Main this) { // thisで自分自身が引数になっている return this.toString(); } public static void main(String[] args) { Main main = new Main(); System.out.println(main.getString()); //呼び出すときは何も書かなくてもよい } } 何がうれしいかというと、自分自身を呼び出すときにアノテーションがつけれるようになる。(そして処理が出来るようになる) なんか、おおっ!という感じ。 呼び出すときに何も書かなくてよいというのがものすごくJavaっぽくないので驚きました。 http://bl

    Java 8から増えてたExplicit receiver parameters - 水まんじゅう2
    KinjouJ
    KinjouJ 2016/06/14
  • さいきょうの二重サブミット対策 - Qiita

    この記事はシステムエンジニア Advent Calendar 2015 - Qiitaの記事です。 弊社アーキ部で@kawasimaさんに教えてもらったさいきょうの二重サブミット対策について書いていきます! 二重サブミットが発生するケース 不正な更新リクエストが発生するケースとして、以下のものが考えられます。 サブミットボタンをダブルクリックする 戻るボタンで戻って、再度保存ボタンを押す 完了ページでブラウザリロードする CSRF攻撃による不正な更新リクエスト 1. サブミットボタンをダブルクリックする 確定ボタンをダブルクリックすることによって、ユーザが意図していないリクエストが発生してしまうケース。 2. 戻るボタンで戻って、再度保存ボタンを押す 処理完了画面から戻るボタンで前の画面に遷移し、再び確定ボタンを押すケース。 来は入力➡︎確認➡︎完了の画面遷移が適切だが、その画面遷移にな

    さいきょうの二重サブミット対策 - Qiita
    KinjouJ
    KinjouJ 2015/12/25
  • [Java]〈Hello World〉をバイナリエディタだけで使って出力させてみた | Recruit Tech Blog

    この記事は RECRUIT MARKETING PARTNERS Advent Calendar 2015 の投稿記事です。 こんにちは。英語サプリの開発チームに所属しているAndroidエンジニアの@kgmyshinです。 突然ですがJavaで〈Hello World〉と表示するコードは下記となります。 class Hello { public static void main(String[] args) { System.out.println("Hello World"); } } 来であればこのコードをコンパイルしてHello.classを作り、そしてそれを実行することによって〈Hello World〉が表示されます。 この記事では、その〈このコードをコンパイルしてHello.classを作る〉という部分を 手動で行う 方法をご紹介します。 なぜするのか 私自身としては「興味が

    [Java]〈Hello World〉をバイナリエディタだけで使って出力させてみた | Recruit Tech Blog
    KinjouJ
    KinjouJ 2015/12/09
  • セミコロンレスJava 8の新機能「enumにメソッド生やす」 #semicolonlessjava — 裏紙

    レガシーセミコロンレスJavaにおけるenumの制限 Java言語ではenumにメソッドを生やす事ができます。 //これはセミコロンを付けても良いありふれた普通のJavaコード public enum Hoge { FOO, BAR, BAZ; public void println() { System.out.println(name()); } } しかしメソッドを定義するためには一番最後に宣言した列挙定数(上記の例でいうと BAZ )の後ろにセミコロンをつける必要があります。 これは回避できない制約なのでセミコロンレスJavaではenumにメソッドは生やせませんでした。 セミコロンレスJava 8におけるenumの新機能 しかし、Java 8でインターフェースにデフォルトメソッドを持てるようになり、 その副次効果でセミコロンレスJava 8ではenumにメソッドを生やす事が出来るよ

    KinjouJ
    KinjouJ 2015/12/05
  • 【速報】JUnit5 はこうなる!?【プロトタイプ】 | DevelopersIO

    渡辺です。 DevelopersIOでの100目のエントリーがJUnitネタとなりました。 自分がJUnit実践入門を執筆したのは2011年から2012年にかけてです(出版が2012年11月)。 それからJava8がリリースされていますが、JUnit4自体は大きな進化はしていませんでした。 昨日、JUnit Lambda Prototypeが公開されました。 まだプロトタイプということで、今後の変更は大きいかと思いますが、いよいよ次世代のJUnitの足音が聞こえてきた感じがします。 今回は、このドキュメントからJUnit Lambdaの概要と方針について速報をお送りしたいと思います。 なお、現在JUnitチームでは、このプロトタイプに対するフィードバックを募集しています。 ここはこうじゃないとかはてブコメントする前にTwitterGitHubでフィードバックを! JUnit Lambd

    【速報】JUnit5 はこうなる!?【プロトタイプ】 | DevelopersIO
  • JUnit 4.12 の階層構造と JMockit を組み合わせて使う - Qiita

    JUnit 4.12 で、 Enclosed よりも柔軟な階層構造の定義がサポートされるようになりました。 こいつと JMockit を組み合わせて使う方法です。 実装 依存関係 dependencies { testCompile 'org.jmockit:jmockit:1.19' testCompile 'junit:junit:4.12' testCompile 'de.bechte.junit:junit-hierarchicalcontextrunner:4.12.1' } package sample.junit; import static org.hamcrest.CoreMatchers.*; import static org.junit.Assert.*; import org.junit.Before; import org.junit.Test; import

    JUnit 4.12 の階層構造と JMockit を組み合わせて使う - Qiita
    KinjouJ
    KinjouJ 2015/11/06
  • JavaEE使い方メモ(Bean Validation) - Qiita

    環境構築 コード Bean Validation とは バリデーション(入力チェック)用のフレームワーク。 入力チェックは様々なレイヤに分散されやすい。 例えば、桁数やフォーマットのような形式チェックはプレゼンテーションレイヤに、マスタの存在や他のデータとの関連が正しいかなどのビジネスロジックのチェックはそれより深いレイヤなどに分かれたりすることがある。 こういった分散されやすい入力チェックを、一箇所にまとめまられるようにしようという目標のもと作られたものらしい。 入力チェックのルール(制約)はアノテーションで定義する。 null チェックなどの汎用的なものはあらかじめ定義されている。もし標準のアノテーションでは足りない場合は、独自にアノテーションやバリデーションロジックを定義することもできる。 この仕様は、単体で利用するよりかは他のフレームワーク(JPA, JAX-RS, JSF など)

    JavaEE使い方メモ(Bean Validation) - Qiita
    KinjouJ
    KinjouJ 2015/11/04
  • Spring Boot + Thymeleaf + Tomcat + Gradleで業務系アプリ 躓いた所6点 - Qiita

    JavaでWEBアプリケーションを作りたい!!という要望に今答えられるフレームワークはいくつかあるが、 その中でSpring Bootは大きな存在感があると思う。 短期間で業務系アプリを構築してほしいという要望が来たのでSpring Bootを使って開発した。 いくつか躓いた点をメモしていたので、それについて共有します。 ※注意:これは実際使ってみて困った点を共有するために記述しています。 ※Spring Bootを使ったことがないというかたは、こちらの方が参考になるかと思います。:http://qiita.com/opengl-8080/items/05d9490d6f0544e2351a システム全体像 ・フレームワーク:Spring Boot ・実行環境:開発中は組込みTomcat。番運用はTomcat7上で。 ・ログイン認証:Spring Security ・プレゼンテーション層

    Spring Boot + Thymeleaf + Tomcat + Gradleで業務系アプリ 躓いた所6点 - Qiita
    KinjouJ
    KinjouJ 2015/10/25
  • カジュアルにスレッドダンプ - @yusuke #javacasual

    JavaOne2016 #CON5929 Time-Saving Tips and Tricks for Building Quality Java Ap... This document provides time-saving tips and tricks for building quality Java applications more quickly, including using appropriate tools and IDEs to code and review quickly, automating UI and business logic tests to test quickly without restarting containers each time, and techniques for deploying and redeploying qui

    カジュアルにスレッドダンプ - @yusuke #javacasual
    KinjouJ
    KinjouJ 2015/10/17
  • Javaトラブルに備えよう #jjug_ccc #ccc_h2

    オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)

    Javaトラブルに備えよう #jjug_ccc #ccc_h2
    KinjouJ
    KinjouJ 2015/10/16
  • throw Life - Androidアプリのバグ報告システムを考える

    JavaにはNullPointerExceptionなどのcatchしなくてもclass load validationを素通りできる例外があります。 バグの多くはそういった例外を考慮しないことのようです。 なので、今回はそういった例外の「IndexOutOfBoundsException」を発生させます。 ボタンをタップすると例外が発生します。 oobBtn.setOnClickListener(new View.OnClickListener(){ public void onClick(View v) { int index = 5; String[] strs = new String[index]; String str = strs[index];//ここでIndexOutOfBoundsException }});

  • RxJava on Android

    4. RxJavaの使いどころ • MVVMのつなぎとして使っています • FragmentからViewの状態変更を監視してコール バック実行 • ViewModelからAPIリクエストの結果を Fragmentに返す • ViewModelの状態をFragmentに反映させる ! • それぞれのインターフェースをObservableで統一 6. API Client • APIを叩いた結果をObservableで返す protected Observable<String> request(final int method, final String path) { return Observable.create(new RequestSubscriber(method, path)) .subscribeOn(Schedulers.newThread()) .observeOn(An

    RxJava on Android
  • SwipeRefreshLayout+RecyclerViewでローディング画面を出すのに苦労した話 - Islands in the byte stream

    Android support libraryのSwipeRefreshLayoutは直下のviewがscrollableでないといけないようで、下記のような構造だとスクロールアップのイベントを常にSwipeRefreshLayoutが奪ってしまい、RecyclerViewをスクロールアップできなくなってしまいました。 <!-- 動かない例 --> <SwipeRefreshLayout> <RelativeLayout> <RecyclerView/> <ProgressBar/> </RelativeLayout> </SwipeRefreshLayout> AndroidのWebviewでSwipeRefreshLayoutを使用した際のスプラッシュ画面の実装方法 - Qiita で触れられているのも同じ問題だと思われます。 これ自体はバグだと思いますが、考えてみるとAppBarLa

    SwipeRefreshLayout+RecyclerViewでローディング画面を出すのに苦労した話 - Islands in the byte stream
  • spring bootでwarとjarの両方を作成 - Qiita

    spring boot環境にて、tomcatにdeploy可能なwarファイルと、tomcatを組み込み単体実行可能なjarを作成します。 mavenのpomファイルを次の様にします。 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.test</groupId>

    spring bootでwarとjarの両方を作成 - Qiita
    KinjouJ
    KinjouJ 2015/10/10
  • IBM Developer

    IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

    IBM Developer
    KinjouJ
    KinjouJ 2015/10/10