// GachaScreen.kt
val step = rememberGachaStep()
val gachaState = rememberGachaState()
Gacha(
state = gachaState,
onRotate = {
step.next()
},
)
Button(onClick = { gachaState.rotate(45) }){
Text("ガチャを回す")
}
// Gacha.kt
@Composable
fun Gacha(
state: GachaState,
onRotate: ()->Unit,
) {
val scale by aniamteFloatAsState(state.scale)
val handleRotate by animateFloatAsState(state.handleRotate) { onRotate() }
Box(Modifier.scale(scale)) {
StandImage()
HandleImage(
modifier = Modifier
.rotate(handleRotate),
)
}
}
data class GachaState(
val scale: Float,
val handleRotate: Float,
) {
fun rotate()
}
ふむふむ
https://developer.android.com/training/sign-in/biometric-auth?hl=ja
implementation "androidx.biometric:biometric-ktx:1.2.0-alpha05"
val executor = ContextCompat.getMainExecutor(this)
val biometricPrompt =
BiometricPrompt(this, executor,
object : BiometricPrompt.AuthenticationCallback() {
override fun onAuthenticationError(errorCode: Int, errString: CharSequence) {
super.onAuthenticationError(errorCode, errString)
Toast.makeText(applicationContext,
"Authentication error: $errString", Toast.LENGTH_SHORT)
.show()
}
override fun onAuthenticationSucceeded(
result: BiometricPrompt.AuthenticationResult) {
super.onAuthenticationSucceeded(result)
Toast.makeText(applicationContext,
"Authentication succeeded!", Toast.LENGTH_SHORT)
.show()
}
override fun onAuthenticationFailed() {
super.onAuthenticationFailed()
Toast.makeText(applicationContext, "Authentication failed",
Toast.LENGTH_SHORT)
.show()
}
})
val promptInfo = BiometricPrompt.PromptInfo.Builder()
.setTitle("Biometric login for my app")
.setSubtitle("Log in using your biometric credential")
.setNegativeButtonText("Use account password")
.build()
biometricPrompt.authenticate(promptInfo)
?!
知らん間に「kill-8080-port.cmd」なる便利なファイルありけり
割り算はなるべく最後に持ってくるー
const list = []
最悪ー
P.S.
何のリストかわからんねん
「おいおいそんな書き方したら後で事故りそうだぞ...」→数分後→「ほら言わんこっちゃない」
になってるお
MutableTransitionStateの拡張プロパティデフォでほちい
val MutableTransitionState<Boolean>.visible :Boolean
get() = isidle && currentState
val MutableTransitionState<Boolean>.invisible :Boolean
get() = !isidle && !currentState
「from ここ」
データベースという名のSQLの授業大っ嫌い
P.S.
SQLがわかるだけでデータベースできるみたいな面するのやめろ
こういう書き方めっちゃ好き
doSomething(arg1) { do() }
チャットツールは表情が見えんって言って否定する大人ほど絵文字使わんのムカムカするー
空catchはろくなめにあわんけどなあ
モジュールの切り方おおミスかましたー
メソッドの中身コピペは許さん
オブジェクト指向って何?って聞かれて一言目に「カプセル化」「継承」「多様性(ポリモーフィズム)」のいずれかが入ってる人なんもわかってない説
絶対C#のTaskクラスの中にCancelメソッド作ったほうがよかったって。
なぜ CancellationTokenSource
とかいうわけわからんクラスに分離した???
P.S.
複数のタスクを同時にキャンセルしたいみたいな時のためかな。
そう考えると Kotlin Coroutine
の発想は神やなって感じる今日この頃
見たらわかるものにいちいち名前つけるのは違うよな
sql = "SELECT * FROM users";
とか右辺明らかにsqlなんだから変数名sqlはあかんやろって感じ
勉強が進むにつれて学校の授業がつらくなるの何とかならんかな
アーキテクチャが残念でつらい
何か出来そうな夜更かし
成仏させた詩ずっと真夜中でいいのに 花一匁
大好き
技術書き大志
丁寧には書かない死 <<< NEW
花一匁大好きいいいいいいいいいいいいいいいいいいいいい
ずっと真夜中でいいのにって溢した午前5時。
ずっと真夜中でいいのに 花一匁
ずとまよ5周年おめおめのおめ👏👏👏🎉🎉🎉
「グフッ尊タヒ」とか
「◯◯でニッコニコ」も使いがち
もうすこしで僕は僕を一つは愛せたのに
ヨルシカ「斜陽」
ステンバイミー 自然体に
ずっと真夜中でいいのに。「あいつら全員同窓会」
Eventを足し算というよりEventHandlerを足し算するんだよなあ
ブランチ "戦略" って言葉なんかわかったかも
構造化って大切だから、インデントできない奴は死んだほうがいいっていうけど、まったく同じ理論で↓みたいに書くやつも死んだほうがいい (と思った)
const url = "/api/hoge"
const options = {
method: "GET",
}
const response = await fetch(url, options).then(r=>r.json())
こう書くべき
const response = await fetch("/api/hoge", {
method: "GET",
}).then(r=>r.json())
ただurlとかoptionsが増えていったときも果たしてそうなんだろうか?
技術的な要素ごとにフォルダを区切るの許さないマン
(プロジェクトルートとかにcomponentsフォルダとか見ると発狂)
val builder = Hoge.Builder()
builder.setFuga("fuga")
builder.setPiyo(123)
val hoge = builder.build()
val hoge = Hoge.Builder().apply {
setFuga("fuga")
setPiyo(123)
}.build()
(たくさんBuilderあっても見やすいね!)
inline fun <T> T.apply(block: T.() -> Unit): T {
this.block()
return this
}
ワイ 「お!プログラムできる人なんや!ちなみにGitはできる?」
知り合い「ちょっとわからないっすね」
ワイ的にはこの時点でその知り合いは用無しになっちゃう
OSSかそうじゃないかってだけで印象がだいぶちがうー
基本はフラットなデザインだけど、hoverした時にちょっと上に上がって影がつくの好きかもーーー
どこでもドアはイミュータブル
VSCodeの拡張機能にアーニャがおる笑笑
C# のActionデリゲート、絶対16パターンもいらん。せいぜい5つで十分じゃね?
TypeScriptわかってると型周りの話で困らなみ?
C# のデリゲートってメソッドの型定義使いまわせるやつって理解でおけ?
動的型付け言語で1つのオブジェクトの中にいろいろ詰め込んで引数とするの怖すぎる
function getHoge(args){
// args の中に名に入ってくるかわからん
}
getHoge({
// 何渡せばいいかわからん
})
木星も月も突き抜けなきゃ
ずっと真夜中でいいのに。 サターン
どうでもいいから置いてった
ずっと真夜中でいいのに。「あいつら全員同窓会」
進む君と止まった僕の縮まらない距離を何で埋めよう
まだ素直に言葉にできない僕は
164「天ノ弱」
何度もトライ
してもコンティニュー
SEKAINOOWARI 「Play」
変わってくから 私ねもっと
ずっと真夜中でいいのに。 「MILABO」
こんなことできたらいいのにな
val appBar = /* ? */
Scaffold(
appBar = { appBar.get() } /* 子で指定したAppBar */
) {
NavHost(...) {
composable("hoge") {
HogeScreen()
}
}
}
fun HogeScreen() {
appBar.set {
AppBar { Text("HOGE") }
}
...
}