気軽に楽しくプログラムと遊ぶ

自分が興味があってためになるかもって思う情報を提供しています。

kotlin

Kotlin ハッシュ化

MessageDigestを使ったハッシュ化 KotlinでSHA-512アルゴリズムを使ってハッシュ化する。 repeatで1000回繰り返す fun generateSalt(length: Int = 16): ByteArray { val salt = ByteArray(length) SecureRandom().nextBytes(salt) return salt } fun String…

Kotlin テスト関連ライブラリ

Kotest(Kotlinテストフレームワーク) 概要 Kotlinの言語仕様で書けるテストフレームワーク。Junitよりもコード量を減らせる ネストして実装可能でどんなテストを書くかを継承させるSpecで変えられる 実装例 FunSpecを使った実装例。contextを使って階層構造…

Spring ExceptionHandlerで独自エラーハンドリングを実装

ResponseEntityExceptionHandler どの例外が発生したときになにを返すかのハンドリングを行う ResponseEntityExceptionHandlerクラスを継承して例外ごとに定義されているメソッドをオーバーライドすることで、処理カスタマイズできる ResponseEntityExceptio…

Kotlin 各種Classの定義方法

value class DDDの「値オブジェクト」に近い プリミティブ値をラップして別物として扱う 用途や実態はプリミティブ値に近いような値を扱う IDを持たない値ベースのクラス。IDを保持するとDDDで言うところのEntity class 実行時の負荷を軽減することが可能 制…

Kotlin SpringBoot利用時のJackson利用時の設定

SpringBootデフォルト設定 以下の設定がdisableになっている MapperFeature.DEFAULT_VIEW_INCLUSION すべての項目がJson変換対象となる。disableでないと個々でjson変換対象のアノテーション付与などが必要 DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTI…

LocalDataTime, Instant, 文字列の相互変換

Date and Time APIによって提供されるの日時クラス クラス タイムゾーン 内容 LocalDateTime なし 日付時刻、 ZonedDateTime あり 時差と地域付の日時 OffsetDateTime あり 時差情報付の日時 Instant - 日時(絶対時間としてのエポック秒)、Date型と相互変…

Kotlin 処理実行時間をhh:mm:ssのフォーマットで出力する

バッチなどで経過時間をログ出力したいときに、ミリ秒表示などではなく時間形式で表示したい場合の処理を記載しておく。 fun main() { val begin = System.nanoTime() /*コードが始まります*/ //2秒間スリープします Thread.sleep(2000) /*コードは終了しま…

Kotlin 変数、メソッドの宣言

トップレベル宣言 Javaではクラス内部の定義のみだが、Kotlinではクラスに属さないようにトップレベルに定義、アクセスできる。 インターフェース(sealed interface) クラス(data class/object/value class/sealed class/enum class) プロパティ 関数 type…

Kotlin Coroutines 非同期処理

非同期処理で用いるコレクション Sequence val numberSeq = (1..3).asSequence() val resultSeq = numberSeq .map { println("1st map: $it"); it + 1 } .map { println("2nd map: $it"); it + 2 } .toList() println(resultSeq) Sequenceは、遅延リストのた…

設計、実装確認ポイント(Kotlin)

実装 思想 改修の場合、既存仕様や全体統一感に囚われ過ぎない。シンプル化、保守性向上を意識する 不要項目を含んだオブジェクトパラメータの是正 変数名が設定値と異なる名称であれば是正(影響範囲が広くなりすぎないかは判断) クラス構成 継承よりも移譲…

Kotlin Coroutineの概念を理解する

以下でCoroutinの使い方をざっくり理解しました。 https://tamata78.hatenablog.com/entry/2021/09/06/174235 上記で理解を進める中でわからなかった概念を補足する情報を記載していきます。 CoroutineScope CoroutineScopeは、コルーチンビルダー関数である…

Kotlin Coroutineの使い方

以下を写経しつつ、理解をしていきます。 Kotlin の Coroutine を概観する - Qiita Coroutineとは? 軽量なThreadのようなもの 他の処理をブロックせずに並列処理を行える Threadは無視できないコストがかかるが、Coroutineは気にしなくてもよいレベルのコス…

Kotlin 正規表現

下記の例を貼らせて頂きました。 Kotlinの正規表現の使い方 | 寝室コンピューティング // a,b,cのうちいずれかにマッチ val regex = Regex(pattern = "[abc]") // Raw Stringはエスケープ不要 """\d""" // 普通の文字列だとエスケープが必要 "\\d" // 文字列…

Kotlin 基礎学習

Kotlin とは? オンライン実行環境 Javaとの違い null関係 スコープ関数 演算子 値比較、参照比較 文字列 文字列中に埋め込み文字 改行入り文字列 型 キャスト 関数 function 基本の書き方 名前付き引数 関数オブジェクト ラムダ式 制御文 if for while 配列…

Kotlin 型パラメータ

Kotlinソースを見たときに引数に見慣れない変数があったのでググってみた。 inline fun <reified T> startActivity(context: Context) { context.startActivity(Intent(context, T::class.java)) } 「context: 」と「T::class.java」の記述はJavaで書くと以下のようにな</reified>…