サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
iPhone 16e
qiita.com/opengl-8080
Java はスレッドごとにメソッドの呼び出しをスタックで管理している スタック = LIFOのデータ構造 例外を new すると、その時点のスタックの情報が例外に記録される スタックトレースは、このスタックの情報を出力したもの トレース = trace = 追跡 スタックを追跡するためのもの スタックトレースを読むと、その例外を投げたスレッドがどのようにプログラムを通り、どこで例外をスローしたかが分かる スタックトレースの読み方 初めて長大なスタックトレースを見るとビックリしてしまうかもしれないが、全部を読む必要は無い 「例外の発生箇所を特定する」という目的に対しては、一番重要なのはスタックトレースの先頭だけ スタックトレースの先頭行は、その例外が生成された場所 普通は throw new Exceptin() のように、生成と同時に例外をスローするので、例外が生成された場所=例外がスロー
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("Thread 2 sleeping..."); TimeUnit.SECONDS.sleep(3); System.out.println("Thread 2 awake"); System
ShellSpecとは シェルスクリプト用の BDD テストフレームワーク テスト前後のフック、テストのグループ化・階層化、モック、パラメータ化テスト、カバレッジ計測など、豊富な機能を持つ shUnit2, Bats-core との比較表 > ShellSpec | BDD unit testing framework for shell scripts (bash, ksh, zsh, dash and all POSIX shells) 日本の方(@ko1nksm)が作られており、Qiitaにも紹介記事があるので読んでおくとよさげ シェルスクリプトのテスト、何を使ってる?shUnit2?Bats? ShellSpec を使ってみませんか? - Qiita ShellSpec - シェルスクリプト用のフル機能のBDDユニットテストフレームワーク - Qiita 環境 以下のコマンドで準備
Mockito とは Java のテストでモックを簡単に扱えるようにするためのフレームワーク 指定されたクラスのモックを作成し、任意のメソッドをスタブ化して指定した値を返すようにしたり、モックのメソッドが期待した通りに呼び出されたかどうかを検証したりできる static や final なメソッドのモック化もできたりする(昔はできなかったはずだけど、いつの頃からかできるようになってた) モックの振る舞いの定義を型安全に定義できるのが大きな特徴(だと思う) 読み方は「もきーと」 環境 > gradle --version ------------------------------------------------------------ Gradle 7.4.2 ------------------------------------------------------------ Bu
ずっと Gradle 使ってたけど、お仕事で Maven をゴリゴリに使わないといけなくなったのでお勉強。 Maven とは Java のビルドツール。OSS。 Apache Ant に代わるものとして作られたらしい。 読み方は「メイヴン」または「メイヴェン」(自分はメイヴン派)。 結構昔からあるけど1、現在も開発が続けられているし、 Maven を採用しているプロジェクトも多い印象。 2020年現在、Java のビルドツールといえば Maven か Gradle が選ばれることが多い(と思う)。 2020年現在のメジャーバージョンは3。 Maven 1 と 2 は互換性が無いが、2 と 3 は互換性が保たれている。 環境 >mvn --version Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f) Maven h
長くなるので、図の書き方はクラス図とシーケンス図だけで。 その他の図については 続・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
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
自己紹介 opengl-8080 主に Qiita で技術メモを書いたり 関西の SIer 勤務 タイトルの元ネタ エンジニア用語の「完全に理解した」「何も分からない」「チョットデキル」は「ダニング・クルーガー効果」で簡単に説明ができます。これは一種の認知バイアスで能力の低い段階では自分の能力の低さを認識できないためです(過大評価しがち)。その反面で能力が高くなると過少評価しがちです。 pic.twitter.com/LGaJ4E5hWo — おちゃめ (@ochame_nako) April 8, 2019 ※スライドモードでは画像が表示されないみたいなので、スライドモードを解除して記事本文を直接参照してください。 お話しすること 「Gradle 完全に理解した」レベルの人が、「Gradle 何も分からん」レベルになるためのお話 自分自身、最近 Gradle のことが何も分からなくなって
※この記事には独自研究が含まれています。 流れるようなインターフェース (fluent interface) とは 流れるようなインタフェース | Martin Fowler's Bliki (ja) 流れるようなインターフェース(fluent interface)とは、メソッドチェーンを利用して DSL 的な仕組みを実現するテクニックのことを指す。 身近な例で言うと、 mockito や AssertJ、 jOOQ、そして Spring のコンフィギュレーションなどで利用されている。 protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests(authorizeRequests -> authorizeRequests .anyRequest().authenticated(
暗号解読 | サイモン・シン | Amazon サイモン・シンの「暗号解読」を読んでいたら、エニグマの仕組みについて説明があり、意外と実装できそうだったので作ってみた。 ソースコードは GitHub にあげています。 ※以降、識別がしやすいように平文は小文字、暗号文は大文字で表記している 単一換字式暗号 エニグマは、キーボードで入力された1文字を別の1文字に変換して暗号化する。 このように入力された文字を別の文字に変換する暗号を換字式暗号という。 同じ換字式暗号としては、シーザー暗号が有名。 シーザー暗号では、文字を一定数だけずらすことで暗号化する。 たとえば、3文字ずらすシーザー暗号では、「a -> X」「b -> Y」「c -> Z」「d -> A」のように文字を変換する。 3文字ずらすシーザー暗号の変換表 変換表が一種類しか存在しないので、シーザー暗号のような暗号は単一換字式暗号と呼
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? JCA (Java Cryptography Architecture) を学ぶための前提知識として、暗号技術の基本的なところを勉強したときのメモ。 JCA の使い方についてはこちら。 用語 暗号について説明する際に利用される用語について、先に整理しておく。 平文 暗号化されていないメッセージのこと。 暗号化 平文に暗号処理を施して、第三者から内容がわからないようにすること。 暗号化後のメッセージを暗号文と呼ぶ。 復号 暗号文を元の平文に戻す処理のこと。 「復号化」というと怒られる。 アリスとボブ 暗号について説明するときに慣例的に使用
JCA とは Java Cryptography Architecture(Java 暗号化アーキテクチャ)の略。 Java で暗号技術を使うための API、フレームワーク。 環境 Java openjdk 11.0.2 OS Windows 10 (64bit) 前提知識 JCA を使うには、暗号技術についての基礎知識(どういう技術があるのか、どういう仕組なのかとか)が必要になる。 これを知っておかないと、クラス構成の意味や正しい使い方が理解できない恐れがある。 最悪、実際の利用シチュエーションでは問題のある使い方をしてしまい、セキュリティホールを埋め込んでしまうかもしれない。 なので、まずはそもそもの暗号技術について勉強しておく必要がある。 暗号技術についての説明は こちら を参照。 事前定義している関数 検証には jshell を利用している。 よく利用する処理はあらかじめ関数として
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 compileJava --warning-mode all ... Detecting annotation processors on the compile classpath has been deprecated. Gradle 5.0 will ignore annotation processors on the compile classpath. The following annotation processors were detected on the compile classpath: 'combined.apt.CombinedProcessor' and 'separated.apt.SeparatedProcessor'. Please add them to the annotation processor path instead.
自己紹介 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 の 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 の場合 実装
今まで何となくで使ってた 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 Java 1.8.0_162 Hello World 実装 buildscript { ext { springBootVersion = '2.0.0.RELEASE' } repositories { mavenCentral() } dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") } } apply plu
Java 9 の Project Jigsaw を勉強したときのメモ。 環境 OS Windows 10 >java --version java 9 Java(TM) SE Runtime Environment (build 9+181) Java HotSpot(TM) 64-Bit Server VM (build 9+181, mixed mode) |-main/ | |-class/ | `-src/ | |-module-info.java | `-sample/main/ | `-Main.java | `-sub/ |-class/ `-src/ |-module-info.java `-sample/sub/ |-api/ | `-Foo.java |-internal/ | `-FooImpl.java | `-FooFactory.java
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'
次のページ
このページを最初にブックマークしてみませんか?
『@opengl-8080のマイページ - Qiita』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く