クラス図

UML

クラス関係 矢印でクラス同士を結ぶ事ができる。 この際、その関係の種類によって矢印の形が異なる。 関係 意味 備考 図 Extension 継承 Aggregation (集約) has-a 授業(親)と生徒(子)といった関係を表す。また授業を消したからと言って、生徒は消えない。 C…

ザリガニの鳴くところ

ネタバレあり

nmap <leader>r <Plug>(quickrun)

Vim

カスタムコルーチンスコープの作成

kotlin.github.io CoroutineScopeは実装することが出来る。 interface CoroutineScope CoroutineScope概要 launchやasyncといった全てのコルーチンビルダーはCoroutineScopeを拡張し、全ての要素とキャンセルを自動的に伝播するために、そのcoroutineContext…

Android KTXを

developer.android.com Android KTXとは Android JetpackのKotlin拡張をまとめたライブラリ。 以下のKotlinの機能を用いた拡張が用意されている Extension functions Extension properties Lambdas Named parameters Parameter default values Coroutines サ…

ViewModelの生成と初期化方法

ViewModel import androidx.lifecycle.ViewModel class UserViewModel(name: String, age: Int, gender: Int) : ViewModel() { val name = name val age = age val gender = gender } ViewModelProviderを使う val viewModel = ViewModelProvider(this, obje…

コルーチン Coroutin

コルーチン 使うにあたって dependencyの追加 https://github.com/Kotlin/kotlinx.coroutines#using-in-your-projects Gradleの場合 dependencies { implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' } import App.kt import kotlinx.…

classにつけられるキーワード

classにつけられるキーワード data - 値型もどき sealed - 代数的データ型もどき inner - Outerクラスの呼び出しが可能となる enum - Javaのenum open - Javaのfinalの反対。Kotlinの全てのclassはデフォルトでfinalであるため value - ? data class 自動導…

エラーハンドリング構成 in 2020

元ネタ nick.groenen.me メモ std::error::Errorトレイトが抱える問題 スタックトレースがとれない。 アプリケーションとライブラリとでエラーのあり方が異なる ライブラリにおけるエラー 意味のあるエラーを返す必要がある ライブラリ内で発生したエラーは…

参照型 `&T` `&mut T`

Primitive Type 参照 &T or &mut T 参照, 共有と可変 参照は、ある所有された値の借用を表す。(借用とは所有権を持たないこと) & ,&mut 演算子もしくは、ref, ref mutキーワードを使って参照を得ることが出来る。 ポインタ型(*const T, *mut T)と違って、nul…

ジェネリクス Generics

Generic(総称型) vs Concreate(具体型) Rustにおいて、"generic"は、一つ以上のgeneric type parameters<T>を持つものである。 それ以外は、concrete(non-generic)である。 例: 関数 fn foo<T>(arg: T) { .... } 引数の型Tがジェネリクス型パラメーターが指定され</t></t>…

bat

概要 github.com 出力の整形や構文ハイライトをしてくれるツール。 プロジェクト構成 src構成 ▾ src/ ▾ bin/bat/ ツールファイル一式 app.rs assets.rs clap_app.rs config.rs directories.rs input.rs main.rs lib.rs ソースファイル一式 main関数 fn main(…

オブジェクト構造

PDF

Document structure オブジェクト階層 in PDF indirect object 相互参照テーブルからオフセット位置を読み取ることが出来るオブジェクト (名前付きオブジェクトと呼ばれることもある。) direct object indirect object以外のオブジェクト。 オブジェクト階層…

heap領域で確保される型

users.rust-lang.org Rustは通常スタック領域に値を確保するが、一部の型はヒープ領域で内部の値を確保し、その参照を返す。 Containers: Box Rc Arc Collections types: Vec, VecDeque String HashMap, HashSet BTreeMap, BTreeSet Concurrency: thread::sp…

Box<T>型

doc.rust-lang.org Rustの全ての値は、デフォルトはstack領域で確保される。 値は、Box<T>を生成することによって、boxed(ヒープ上での確保)することが出来る。 box値は、T型の値をヒープ上に確保するためのスマートポインタである。 box値がスコープから消えた</t>…

ViewGroupによるタッチイベントの管理

ViewGroupにおけるタッチイベントの管理 onInterceptTouchEvent()メソッドをオーバーライドすることで、サブビューに対して、タッチイベントを発生させないようにすることができる。 class MyViewGroup @JvmOverloads constructor( context: Context, privat…

複数ポインタのトラッキング

複数のポインタをトラックする ACTION_DONW このポインタのindexは必ず0が割り当てられる ACTION_POINTER_DOWN indexが0以外のポインタがスクリーン上で検知された場合、呼び出される。割り当てられるindexは、getActionIndex()メソッドから取得が可能 ACTIO…

GestureDetectorを使ったジェスチャーのハンドリング

概要 GestureDetectorを使うことで、共通のジェスチャーを簡単にハンドルすることができる。 またActivity.onTouchEvent()もしくはView.onTouchEvent()と組み合わせて使うため、それ以外のジェスチャーのハンドリングもシンプルに記述することが可能となって…

View Binding

developer.android.com 概要 View Bindingを使うことで、findViewById()を取り替えることができる。 Setup instruction build.gradle アプリ側のbuild.gradleにviewBindingをtrueにする android { ... buildFeatures { viewBinding = true } } Layoutファイ…

Data binding ライブラリ サンプル

作ったサンプル github 画面 Set up Gradle アプリ側のbuild.gradleに以下を記述 android { buildFeatures { dataBinding true } } Layoutファイル layoutタグをルートに変更する activity_main.xml

Httpクライアント

developer.android.com Httpクライアント Androidで主に利用されているHttpクライアント HttpsURLConnection Volley OkHttp Retrofit 特徴 クライアント 特徴 HttpsURLConnection Androidの標準ライブラリ Volley Googleが作成し、Android公式にドキュメント…

ラムダ式

関数リテラルの一つ 他には、匿名関数が存在する。 構文 { param1: Type1, ... -> // 本体 式1 式2 } パラメーター宣言部: ->の左側部分 本体: ->以降 返り値: 本体の最後の式の結果, voidの場合は、Unitが返り値となる パラメーターの省略 パラメーターが存…

Coroutineのキャンセルとタイムアウト

kotlinlang.org コルーチンの実行をキャンセル Cancelling coroutine execution import kotlinx.coroutines.* fun main() = runBlocking { val job = launch { repeat(1000) { i -> println("job: I'm sleeping $i ...") delay(500L) } } delay(1300L) // de…

コルーチンの基本

kotlinlang.org コルーチンとは About Coroutines Kotlinの非同期関数。 スレッドと違い、何千個作成してもCPUの負荷を増大させない 最初のコルーチン Coroutineは、CoroutinScope内部で実行し、CoroutineScopeは、実行されたCoroutineが全て完了するまで、…

連想エンティティ - 多対多の関係を表すテーブル

ja.wikipedia.org 命名は非公式 多対多の関係を表すための一つのアプローチとして、連想エンティティ(結合テーブル)がある

デリゲート

kotlinlang.org Delegation Kotlinは、特定のインターフェースの処理を指定したインスタンスに自動的に委譲させることができる。 例: Baseインターフェースの処理をBaseImplインスタンスに移譲するDerivedクラス interface Base { print() } class BaseImple…

ログ Log

ログレベル 内容 メソッド Assert 重大エラーメッセージ Log.wtf() Error エラーメッセージ Log.e() Warn 警告メッセージ Log.w() Info 通常メッセージ Log.i() Debug 詳細なメッセージ, 製品版アプリでも出力される Log.d() Verbose 詳細なメッセージ, 製品…

Scope関数

kotlinlang.org Scope functions 標準ライブラリに含まれているスコープ関数。 スコープ関数の目的は、一つのオブジェクトのコンテキストを内含するコードブロックを実行することである。 let run with apply also スコープ関数を使うことで、より正確にリー…

デリゲートプロパティ

kotlinlang.org Delegated propaties Delegated propertyにすることで、プロパティに対して、遅延初期化や値の監視などをかんたんに実装することができる。 デリゲートの指定 var delegatedPropety: Type by Delegate() 型の後ろに、byキーワードを使ってデ…

static変数の宣言

companion object を使用する。 例: シングルトンの生成 class User { lateinit var name: String private set // static変数やメソッドは`companion object`ブロックで宣言する companion object { val instance by lazy { User().apply { name = "jtonic" …