サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
Wikipedia
qiita.com/opengl-8080
シンクロナイザとは 自身の状態を使ってスレッドの進行を制御(調停)するオブジェクトのことをシンクロナイザ (synchronizer) と呼ぶ。 例えば、次のような実装があったとする。 package synchronizer; import java.util.concurrent.TimeUnit; public class SynchronizerTest { public static void main(String[] args) { runThread(() -> { System.out.println("Thread 1 start"); System.out.println("Thread 1 end"); }); runThread(() -> { System.out.println("Thread 2 start"); System.out.println("Th
Mockito とは Java のテストでモックを簡単に扱えるようにするためのフレームワーク 指定されたクラスのモックを作成し、任意のメソッドをスタブ化して指定した値を返すようにしたり、モックのメソッドが期待した通りに呼び出されたかどうかを検証したりできる static や final なメソッドのモック化もできたりする(昔はできなかったはずだけど、いつの頃からかできるようになってた) モックの振る舞いの定義を型安全に定義できるのが大きな特徴(だと思う) 読み方は「もきーと」 環境 > gradle --version ------------------------------------------------------------ Gradle 7.4.2 ------------------------------------------------------------ Bu
長くなるので、図の書き方はクラス図とシーケンス図だけで。 その他の図については 続・PlantUML使い方メモ #PlantUML - Qiita を参照。 PlantUML とは テキストで UML 図を記述できる DSL の一種(たぶん) 本体は Java で書かれていて、単一の jar ファイルを落としてきてコマンドラインから実行できる plantuml/plantuml: Generate UML diagram from textual description ただし、実際に使うときは Visual Studio Code とかのプラグインを入れて実行することが多いと思う ライセンスは GPL v3 plantuml/license.txt at master · plantuml/plantuml 環境構築 OS は Windows10。 Java > java --versi
package sample.junit5; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.DisplayName; class JUnit5Test { @Test void fail() { Assertions.assertEquals(10, 8); } static class StaticClass { @Test void fail() { Assertions.assertEquals(10, 8); } } static class StaticTest { @Test void fail() { Assertions.assertEquals(10, 8); } } class InnerTest { @Te
自己紹介 opengl-8080 主に Qiita で技術メモを書いたり 関西の SIer 勤務 タイトルの元ネタ エンジニア用語の「完全に理解した」「何も分からない」「チョットデキル」は「ダニング・クルーガー効果」で簡単に説明ができます。これは一種の認知バイアスで能力の低い段階では自分の能力の低さを認識できないためです(過大評価しがち)。その反面で能力が高くなると過少評価しがちです。 pic.twitter.com/LGaJ4E5hWo — おちゃめ (@ochame_nako) April 8, 2019 ※スライドモードでは画像が表示されないみたいなので、スライドモードを解除して記事本文を直接参照してください。 お話しすること 「Gradle 完全に理解した」レベルの人が、「Gradle 何も分からん」レベルになるためのお話 自分自身、最近 Gradle のことが何も分からなくなって
JCA (Java Cryptography Architecture) を学ぶための前提知識として、暗号技術の基本的なところを勉強したときのメモ。 JCA の使い方についてはこちら。 用語 暗号について説明する際に利用される用語について、先に整理しておく。 平文 暗号化されていないメッセージのこと。 暗号化 平文に暗号処理を施して、第三者から内容がわからないようにすること。 暗号化後のメッセージを暗号文と呼ぶ。 復号 暗号文を元の平文に戻す処理のこと。 「復号化」というと怒られる。 アリスとボブ 暗号について説明するときに慣例的に使用される仮の名前。 アルファベットの A, B, C... の順番で名前が考えられており、 Alice, Bob, Carol(もしくは Charlie)... のような感じになっている。 名前ごとに役割が決まっていて、アリスは送信者、ボブは受信者、キャロルは
plugins { id 'org.springframework.boot' version '2.1.4.RELEASE' id 'java' } apply plugin: 'io.spring.dependency-management' sourceCompatibility = '11' targetCompatibility = '11' compileJava.options.encoding = "UTF-8" repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' } package sample.jul; import org.slf4j.LoggerFactory; import org.sprin
非推奨の警告 最近の Gradle (自分の環境は、 4.10.2)で注釈処理を利用していると、次のようなメッセージが出る。 > gradle compileJava ... Deprecated Gradle features were used in this build, making it incompatible with Gradle 5.0. Use '--warning-mode all' to show the individual deprecation warnings. See https://docs.gradle.org/4.10.2/userguide/command_line_interface.html#sec:command_line_warnings Gradle 5.0 で非互換になる機能を利用しているので、詳細を確認したければ --warning-
Gradle のタスクについて、基礎から応用までいろいろメモ。 前提知識 Groovyを知らない人のためのbuild.gradle読み書き入門 - Qiita に書いていること Groovy の基本知識 各種シンタックスシュガーとか基本文法とか 環境 Gradle 5.0 Java openjdk 11.0.1 OS Windows 10 タスクの実体 Gradle でタスクを定義するには、次のように記述する。
自己紹介 opengl-8080 主に Qiita で技術メモを書いたり 関西の SIer 勤務 現場はまだまだ Java 8 が多い? Java 9 以降の変化に警戒 リリースサイクルの変更 サポートポリシーの変更 Java 8 でしのぐ その Java 8 も、来年1月で無償のサポートが終了 Java 11 からは LTS 付きの JDK がいくつか Oracle JDK AdoptOpenJDK Amazon Correto etc ? そろそろ本格的に Java 11 へ移行? 立ちはだかるモジュールシステム ビルド設定の不備に起因するエラーが増えた Java 8 以前 「パッケージ...は存在しません」 「シンボルを見つけられません」 java.lang.ClassNotFoundException java.lang.NoClassDefFoundError java.lang
|-build.gradle `-src/main/ |-java/ | |-module-info.java | `-foo/ | `-Foo.java `-resources/ `-resource.txt apply plugin: "application" sourceCompatibility = 11 targetCompatibility = 11 compileJava.options.encoding = "UTF-8" mainClassName = "foo/foo.Foo" compileJava { doFirst { options.compilerArgs = [ "--module-path", classpath.asPath ] classpath = files() } } run { doFirst { jvmArgs = [ "--module-
Gradle を使って Spring Boot 2 のマルチプロジェクトを作る方法。 環境 Java openjdk 10.0.2 2018-07-17 Gradle 4.10 Spring Boot 2.0.4 対象のマルチプロジェクト |-settings.gradle |-build.gradle | |-foo/ | |-build.gradle | : | `-bar/ |-build.gradle : buildscript { ext { springBootVersion = '2.0.4.RELEASE' } repositories { mavenCentral() } dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") }
Gradle の dependencies で指定する compile, api, implementation についての勉強メモ。 compile は非推奨 Gradle 3.4 で Java Library Plugin が追加されたことで、 dependencies で compile を使用することは非推奨となってたらしい(runtime, testCompile, testRuntime も)。 4.7 の Java Plugin の説明では、ガッツリ Deprecated と書かれている。 (4.6 のドキュメントだと Deprecated って書いてないけど、明確に非推奨となったのは最近?) 代わりに implementation と api を使用することが推奨されている。 compile と implementation の違い compile の場合 実装 |-set
今まで何となくで使ってた Jigsaw (モジュールシステム)をしっかり学ぶ。 環境 OS Windows 10 java 10.0.1 モジュールの解決 モジュールの解決 | java.lang.module (Java SE 10 & JDK 10 ) Java 9 で追加されたモジュールシステムでは、複数のパッケージやリソースをモジュールと呼ばれる単位でまとめることができるようになった。 モジュールでは、次のようなことを定義できる1。 どのパッケージを外部から見えるようにするか 他のどのモジュールに依存するか これらは module-info.java という専用のファイルを使い、次のように記述する。 この例では、 foo というモジュールを定義している。 そして、 exports foo.api で foo.api パッケージを外部に公開し、 requires bar で bar
Gradle で Java 9 から追加された Jigsaw (モジュール)を使う方法のメモ。 環境 OS Windows 10 4.7 Jigsaw のサポート状況 While Gradle version 4.7 doesn’t have first-class support for Java 9 modules yet, this guide shows you how to experiment with them before that support is complete. 【訳】 Gradle の version 4.7 では、 Java 9 のモジュールについてのファーストクラスでのサポートはまだありません。 このガイドでは、サポートが完了するまでの間にどのようにしたらモジュールを試せるのかについて説明します。 Building Java 9 Modules ということ
Spring Shell とは REPL ツールを簡単に作れるようにするためのフレームワーク Web アプリのようなリッチな UI が必要ない場合で、インタラクティブな CUI のみで十分な場合などに利用できる ベースには JLine が使用されている(jshell でも利用されているライブラリ) 環境 OS Windows 10 buildscript { ext { springBootVersion = '2.0.0.RELEASE' } repositories { mavenCentral() } dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") } } apply plugin: 'java' apply plugin: 'org
buildscript { ext { kotlin_version = '1.2.10' } repositories { mavenCentral() // kotlin 用 jcenter() // dokka 用 } dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "org.jetbrains.dokka:dokka-gradle-plugin:0.9.15" } } apply plugin: 'kotlin' apply plugin: 'org.jetbrains.dokka' package sample.kdoc /** * クラスの説明. */ class TopLevelClass { /** * コンパニオンオブジェクトの説明
自己紹介 opengl-8080 主に Qiita で技術メモを書いたり 関西の SIer 勤務 Spring Boot とは Spring ベースのアプリケーションを簡単に作れるようにした仕組み・フレームワーク ビルド結果が単一の jar ファイルにまとめられる 単一 jar のメリット AP サーバーが同梱されているので、環境ごとに AP サーバーを用意する必要がない java -jar で起動できる楽さ 単一 jar のデメリット AP サーバーも含め全ての依存ライブラリを内包するため、ファイルサイズが大きくなる jar サイズをがんばって減らしてみた 結果 結果 サイズ比較 どうやったのか? Java で Hello World はどうやりますか? 1.コードを書く
Java で正規表現を使う方法を色々メモ。 String クラスの正規表現を使うメソッド String には正規表現を受け取るメソッドがいくつか存在する。 matches(String) replaceAll(String, String) replaceFirst(String, String) split(String, int) split(String) matches(String) package sample.regexp; public class Main { public static void main(String[] args) { String text = "abc123"; System.out.println(text.matches("[a-z0-9]+")); System.out.println(text.matches("[a-z]+")); }
Spring Security は 5.4 以降、設定の書き方に大幅な変更が入っています。 詳しくは @suke_masa さんの Spring Security 5.7でセキュリティ設定の書き方が大幅に変わる件 - Qiita を参照してください。 基礎・仕組み的な話 認証・認可の話 Remember-Me の話 CSRF の話 セッション管理の話 レスポンスヘッダーの話 メソッドセキュリティの話 CORS の話 Run-As の話 ACL の話 テストの話 番外編 Spring Security にできること・できないこと Spring MVC や Spring Boot で Spring Security を使う方法とか、なんかその辺の話。 Spring MVC との連携 リクエストパスの Matcher まずは普通に統合させてみる apply plugin: 'war' sourc
Thymeleaf とは 読み方は「タイムリーフ」 テンプレートエンジンの1つ Spring Boot で使用が推奨されている 純粋な HTML としてテンプレートを記述することができる 動作環境 Spring Boot 上で Spring MVC のビューテンプレートエンジンとして動かすことを前提で調べる。 Hello World buildscript { repositories { mavenCentral() } dependencies { classpath 'org.springframework.boot:spring-boot-gradle-plugin:1.5.6.RELEASE' } } apply plugin: 'java' apply plugin: 'org.springframework.boot' sourceCompatibility = '1.8'
package sample.javaparser; import com.github.javaparser.JavaParser; import com.github.javaparser.ast.CompilationUnit; import java.io.IOException; import java.nio.file.Path; import java.nio.file.Paths; public class Main { public static void main(String[] args) { Path source = Paths.get("src/main/java/sample/javaparser/Main.java"); try { CompilationUnit unit = JavaParser.parse(source); System.out.pr
Spring Security は 5.4 以降、設定の書き方に大幅な変更が入っています。 詳しくは @suke_masa さんの Spring Security 5.7でセキュリティ設定の書き方が大幅に変わる件 - Qiita を参照してください。 基礎・仕組み的な話 認証・認可の話 Remember-Me の話 CSRF の話 セッション管理の話 レスポンスヘッダーの話 メソッドセキュリティの話 CORS の話 Run-As の話 ACL の話 MVC, Boot との連携の話 番外編 Spring Security にできること・できないこと Spring Security のテスト Spring Security には、 JUnit によるテストをサポートする仕組みが用意されている。 例えば、テストのときに使用するユーザを固定したり、権限を指定したりすることができる。 Hello
次のページ
このページを最初にブックマークしてみませんか?
『@opengl-8080のマイページ - Qiita』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く