[{"slug":"1c741adf-aa19-409a-a04c-65d22b7796b4","content":"```kotlin\n\n// GachaScreen.kt\n\nval step = rememberGachaStep()\nval gachaState = rememberGachaState()\n\nGacha(\n  state = gachaState,\n  onRotate = {\n    step.next()\n  },\n)\n\nButton(onClick = { gachaState.rotate(45) }){ \n  Text(\"ガチャを回す\") \n}\n\n// Gacha.kt\n\n@Composable\nfun Gacha(\n  state: GachaState,\n  onRotate: ()->Unit,\n) {\n  val scale by aniamteFloatAsState(state.scale)\n  val handleRotate by animateFloatAsState(state.handleRotate) { onRotate() }\n  \n  Box(Modifier.scale(scale)) {\n    StandImage()\n    HandleImage(\n      modifier = Modifier\n        .rotate(handleRotate),\n    )\n  }\n}\n\ndata class GachaState(\n  val scale: Float,\n  val handleRotate: Float,\n) {\n  fun rotate()\n}\n\n```\n\n\n\n\n\n\n\n\n\n\n\n\n\n","createAt":1690224979924,"updateAt":1690224979924,"isPublished":true,"publishAt":1690224991622,"random":0.8198415650463409},{"slug":"6702ecd2-6d8e-48db-b769-3fdb9db82755","content":"ふむふむ\n\nhttps://developer.android.com/training/sign-in/biometric-auth?hl=ja\n\n```groovy:build.gralde\nimplementation \"androidx.biometric:biometric-ktx:1.2.0-alpha05\"\n```\n\n```kotlin\n\nval executor = ContextCompat.getMainExecutor(this)\nval biometricPrompt = \n    BiometricPrompt(this, executor,\n        object : BiometricPrompt.AuthenticationCallback() {\n            override fun onAuthenticationError(errorCode: Int, errString: CharSequence) {\n            super.onAuthenticationError(errorCode, errString)\n                Toast.makeText(applicationContext,\n                    \"Authentication error: $errString\", Toast.LENGTH_SHORT)\n                .show()\n            }\n\n            override fun onAuthenticationSucceeded(\n                result: BiometricPrompt.AuthenticationResult) {\n                    super.onAuthenticationSucceeded(result)\n                    Toast.makeText(applicationContext,\n                        \"Authentication succeeded!\", Toast.LENGTH_SHORT)\n                        .show()\n            }\n\n            override fun onAuthenticationFailed() {\n                super.onAuthenticationFailed()\n                Toast.makeText(applicationContext, \"Authentication failed\",\n                    Toast.LENGTH_SHORT)\n                    .show()\n           }\n        })\n\nval promptInfo = BiometricPrompt.PromptInfo.Builder()\n    .setTitle(\"Biometric login for my app\")\n    .setSubtitle(\"Log in using your biometric credential\")\n    .setNegativeButtonText(\"Use account password\")\n    .build()\n\nbiometricPrompt.authenticate(promptInfo)\n\n```\n","createAt":1689909461631,"updateAt":1689909461631,"isPublished":true,"publishAt":1689909964077,"random":0.8705865988243067},{"slug":"310b3214-3ef3-4182-ad9f-c1a52151393d","content":"?!\n![](https://storage.googleapis.com/tbsten-me-public-content/Frame%205.png)\n","createAt":1689908470756,"updateAt":1689908470756,"isPublished":true,"publishAt":1689908473801,"random":0.7181662566064198},{"slug":"ea84abac-3df0-46b9-8d23-15feaafd0c90","content":"知らん間に「kill-8080-port.cmd」なる便利なファイルありけり","createAt":1689903958136,"updateAt":1689903958136,"isPublished":true,"publishAt":1689903961648,"random":0.3680576427234472},{"slug":"9cd6d7c0-dadc-4335-a0ed-91cbcc2235b3","content":"割り算はなるべく最後に持ってくるー","createAt":1689727065280,"updateAt":1689727065280,"isPublished":true,"publishAt":1689727068108,"random":0.9238645195088466},{"slug":"2d06a133-76ed-45e9-a4fb-e354fc5d89bc","content":"const list = []\n\n最悪ー\n\n---\n\nP.S.\n何のリストかわからんねん","createAt":1688691308572,"updateAt":1688691308572,"isPublished":true,"publishAt":1688691310897,"random":0.7272511337302188},{"slug":"f636d6bf-f2e0-4e32-8d73-2490468b8454","content":"「おいおいそんな書き方したら後で事故りそうだぞ...」→数分後→「ほら言わんこっちゃない」\n\nになってるお","createAt":1687310088356,"updateAt":1687310088356,"isPublished":true,"publishAt":1687481693685,"random":0.523797314144351},{"slug":"ebfcf07b-976c-49d0-9987-3ce5aca267a3","content":"MutableTransitionStateの拡張プロパティデフォでほちい\n\n```kotlin\nval MutableTransitionState<Boolean>.visible :Boolean\n  get() = isidle && currentState\nval MutableTransitionState<Boolean>.invisible :Boolean\n  get() = !isidle && !currentState\n```\n\n> 「[from ここ](https://developer.android.com/jetpack/compose/animation?hl=ja#enter-exit-transition)」\n\n","createAt":1687181280074,"updateAt":1687181280074,"isPublished":true,"publishAt":1687181282073,"random":0.8635342112970239},{"slug":"48b1ddc2-a726-438d-8e92-ab25c2a36da9","content":"データベースという名のSQLの授業大っ嫌い\n\nP.S.\nSQLがわかるだけでデータベースできるみたいな面するのやめろ","createAt":1687144129550,"updateAt":1687144129550,"isPublished":true,"publishAt":1687144132996,"random":0.0009315442472785929},{"slug":"288cce6c-5085-4c39-b262-b79d6166bb14","content":"こういう書き方めっちゃ好き\n\n```kotlin\ndoSomething(arg1) { do() }\n```\n\n","createAt":1686888253581,"updateAt":1686888253581,"isPublished":true,"publishAt":1686888331378,"random":0.1282292798137723},{"slug":"2b720f65-e999-4612-b3e8-ca79df8748db","content":"チャットツールは表情が見えんって言って否定する大人ほど絵文字使わんのムカムカするー","createAt":1686700987446,"updateAt":1686700987446,"isPublished":true,"publishAt":1686879922182,"random":0.11196775797029068},{"slug":"76293233-e178-401e-8091-908b59f59394","content":"空catchはろくなめにあわんけどなあ","createAt":1686538340072,"updateAt":1686538340072,"isPublished":true,"publishAt":1686700991245,"random":0.6193384545536327},{"slug":"d91bef60-e316-4611-ba0b-1eb46d45645d","content":"モジュールの切り方おおミスかましたー","createAt":1686537401983,"updateAt":1686537401983,"isPublished":true,"publishAt":1686537404163,"random":0.09906459186826733},{"slug":"c077f765-ea44-4428-8c1b-88d862b5f2b2","content":"メソッドの中身コピペは許さん","createAt":1686533744153,"updateAt":1686533744153,"isPublished":true,"publishAt":1686533775497,"random":0.9753625465534062},{"slug":"cba7a6bd-bcb1-459e-bde8-a27276143aee","content":"# 探しています...\n\n- wikiツール\n- セルフホストでもいい\n- チーム(4-6人くらい)でも無料で使える\n- マークダウンで書きたい\n- できれば静的エクスポートできると幸せ\n\n","createAt":1686533560527,"updateAt":1686533560527,"isPublished":true,"publishAt":1686533773341,"random":0.7003065548653937},{"slug":"e93eff4d-a7b6-4507-8238-849a962bcf01","content":"オブジェクト指向って何？って聞かれて一言目に「カプセル化」「継承」「多様性（ポリモーフィズム）」のいずれかが入ってる人なんもわかってない説","createAt":1686277586008,"updateAt":1686277586008,"isPublished":true,"publishAt":1686280216019,"random":0.4604194805963673},{"slug":"5c0ec97d-6a3f-448e-8d72-4aa0762140ac","content":"絶対C#のTaskクラスの中にCancelメソッド作ったほうがよかったって。\nなぜ `CancellationTokenSource` とかいうわけわからんクラスに分離した？？？\n\n---\n\nP.S.\n複数のタスクを同時にキャンセルしたいみたいな時のためかな。\nそう考えると `Kotlin Coroutine` の発想は神やなって感じる今日この頃\n\n","createAt":1686100990434,"updateAt":1686100990434,"isPublished":true,"publishAt":1686100992721,"random":0.005979344800229436},{"slug":"907085d2-12ac-45af-9200-5320c33b4230","content":"見たらわかるものにいちいち名前つけるのは違うよな\n\n```js\nsql = \"SELECT * FROM users\";\n```\n\nとか右辺明らかにsqlなんだから変数名sqlはあかんやろって感じ\n","createAt":1685927538074,"updateAt":1685927538074,"isPublished":true,"publishAt":1685928485106,"random":0.24102274626557296},{"slug":"335d4f74-08bf-47f0-b65f-e0a8588db6ba","content":"勉強が進むにつれて学校の授業がつらくなるの何とかならんかな","createAt":1685928477194,"updateAt":1685928477194,"isPublished":true,"publishAt":1685928482552,"random":0.7087841057143593},{"slug":"374268f7-5745-40b4-9fcb-9fed6a5b84d5","content":"アーキテクチャが残念でつらい","createAt":1685928264590,"updateAt":1685928264590,"isPublished":true,"publishAt":1685928481790,"random":0.20270161587273017},{"slug":"1fca3b01-aad4-47af-b9d6-a782f3a9233f","content":"> 何か出来そうな夜更かし \n> 成仏させた詩\n> \n> ずっと真夜中でいいのに [花一匁](https://www.youtube.com/watch?v=H88kps8X4Mk)\n\n大好き\n","createAt":1685878974265,"updateAt":1685878974265,"isPublished":true,"publishAt":1685878981670,"random":0.88392662929487},{"slug":"eda429d0-f917-4edf-9d7c-139f48ba975a","content":"技術書き大志\n丁寧には書かない死 **<<< NEW**\n","createAt":1685878663257,"updateAt":1685878663257,"isPublished":true,"publishAt":1685878798189,"random":0.8670899870405184},{"slug":"d72ff9b3-0fea-4e21-8974-aa9150c57a98","content":"花一匁大好きいいいいいいいいいいいいいいいいいいいいい","createAt":1685878366381,"updateAt":1685878366381,"isPublished":true,"publishAt":1685878370738,"random":0.24976241954207112},{"slug":"7a1e486e-4a77-4a89-a068-dde7a345ac11","content":"ずっと真夜中でいいのにって溢した午前5時。\n\n> ずっと真夜中でいいのに [花一匁](https://www.youtube.com/watch?v=H88kps8X4Mk)\n","createAt":1685878353311,"updateAt":1685878353311,"isPublished":true,"publishAt":1685878354757,"random":0.7290385663719416},{"slug":"3edd318f-65a5-4f20-bad8-b33071a89b70","content":"ずとまよ5周年おめおめのおめ👏👏👏🎉🎉🎉\n","createAt":1685845146740,"updateAt":1685845146740,"isPublished":true,"publishAt":1685845160159,"random":0.5448707572932023},{"slug":"28173471-f064-46ce-add8-8f6a703e1b8a","content":"「ｸﾞﾌｯ尊ﾀﾋ」とか\n「◯◯でニッコニコ」も使いがち","createAt":1685684360780,"updateAt":1685684360780,"isPublished":true,"publishAt":1685845158218,"random":0.09876175496107598},{"slug":"7c225674-3860-40d7-8937-d6d94203b1a1","content":"もうすこしで僕は僕を一つは愛せたのに\n\n> ヨルシカ「斜陽」\n","createAt":1685632121918,"updateAt":1685632121918,"isPublished":true,"publishAt":1685845153458,"random":0.5539407320629655},{"slug":"phrase-aitsurazenninndousoukai-2","content":"ステンバイミー　自然体に\n\n> [ずっと真夜中でいいのに。](http://tbsten.me/likes#%E3%81%9A%E3%81%A3%E3%81%A8%E7%9C%9F%E5%A4%9C%E4%B8%AD%E3%81%A7%E3%81%84%E3%81%84%E3%81%AE%E3%81%AB%E3%80%82)「あいつら全員同窓会」\n","createAt":1685630369098,"updateAt":1685630369098,"isPublished":true,"publishAt":1685630371676,"random":0.40490035098127164},{"slug":"1570b292-9f14-4cb7-ad9d-cb1b371eb29e","content":"Eventを足し算というよりEventHandlerを足し算するんだよなあ","createAt":1685501431421,"updateAt":1685501431421,"isPublished":true,"publishAt":1685501434488,"random":0.19119504050573433},{"slug":"bd3c8edd-bfae-4e6c-87fa-d11c18660c73","content":"ブランチ **\"戦略\"** って言葉なんかわかったかも","createAt":1685451205030,"updateAt":1685451205030,"isPublished":true,"publishAt":1685451211831,"random":0.7228513575961628},{"slug":"e1d967d2-ec0d-4b39-b30a-93ad8958879f","content":"構造化って大切だから、インデントできない奴は死んだほうがいいっていうけど、まったく同じ理論で↓みたいに書くやつも死んだほうがいい (と思った)\n\n```js\nconst url = \"/api/hoge\"\nconst options = {\n  method: \"GET\",\n}\nconst response = await fetch(url, options).then(r=>r.json())\n```\n\nこう書くべき\n\n```js\nconst response = await fetch(\"/api/hoge\", {\n  method: \"GET\",\n}).then(r=>r.json())\n```\n\nただurlとかoptionsが増えていったときも果たしてそうなんだろうか？\n\n","createAt":1685322640018,"updateAt":1685322640018,"isPublished":true,"publishAt":1685322684359,"random":0.7555095648229051},{"slug":"c0c47186-ddbd-4cb2-ae9b-96a14580be71","content":"技術的な要素ごとにフォルダを区切るの許さないマン\n（プロジェクトルートとかにcomponentsフォルダとか見ると発狂）\n","createAt":1685322161707,"updateAt":1685322161707,"isPublished":true,"publishAt":1685322683685,"random":0.476159638023286},{"slug":"81df9636-0c46-4828-be01-954dfc71c61e","content":"# apply関数の使い方メモ\n\n```kotlin:apply使わないと\nval builder = Hoge.Builder()\nbuilder.setFuga(\"fuga\")\nbuilder.setPiyo(123)\nval hoge = builder.build()\n```\n\n```kotlin:apply使うと\nval hoge = Hoge.Builder().apply {\n  setFuga(\"fuga\")\n  setPiyo(123)\n}.build()\n```\n\n(たくさんBuilderあっても見やすいね！)\n\n---\n\n```kotlin:多分こんな実装になってる？\ninline fun <T> T.apply(block: T.() -> Unit): T {\n  this.block()\n  return this\n}\n```\n","createAt":1685181540429,"updateAt":1685181540429,"isPublished":true,"publishAt":1685181544348,"random":0.47434965724632727},{"slug":"26ffc945-6770-4315-96ad-eba25f793c0e","content":"ワイ　　「お！プログラムできる人なんや！ちなみにGitはできる？」\n知り合い「ちょっとわからないっすね」\n\nワイ的にはこの時点でその知り合いは用無しになっちゃう\n","createAt":1685070602259,"updateAt":1685070602259,"isPublished":true,"publishAt":1685070679746,"random":0.046686184095064975},{"slug":"b4e1d5ad-e406-422e-bd56-a113b20c67ff","content":"OSSかそうじゃないかってだけで印象がだいぶちがうー","createAt":1685062900395,"updateAt":1685062900395,"isPublished":true,"publishAt":1685070495236,"random":0.580210827719029},{"slug":"bb96c2ba-6c8a-4c44-ab27-4be40d93fdbc","content":"基本はフラットなデザインだけど、hoverした時にちょっと上に上がって影がつくの好きかもーーー","createAt":1685060484859,"updateAt":1685060484859,"isPublished":true,"publishAt":1685061468542,"random":0.073764885728415},{"slug":"657f066e-554c-445f-ae29-93ca1c27d638","content":"どこでもドアはイミュータブル","createAt":1685017241947,"updateAt":1685017241947,"isPublished":true,"publishAt":1685017246389,"random":0.014111798052346636},{"slug":"90c25e00-0828-49fe-85ff-7914f2b6c336","content":"VSCodeの拡張機能にアーニャがおる笑笑\n\n![](https://storage.googleapis.com/tbsten-me-public-content/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202023-05-24%20103103.png)\n","createAt":1684898384386,"updateAt":1684898384386,"isPublished":true,"publishAt":1684912059248,"random":0.3253337527525073},{"slug":"3a5f9889-8a0c-418d-bf8c-a8c9d1d74e9b","content":"C# のActionデリゲート、絶対16パターンもいらん。せいぜい5つで十分じゃね？","createAt":1684898021209,"updateAt":1684898021209,"isPublished":true,"publishAt":1684898023117,"random":0.30111897348011074},{"slug":"48978dcd-38c1-4b0a-a26c-a09136c8e65f","content":"TypeScriptわかってると型周りの話で困らなみ？","createAt":1684897475276,"updateAt":1684897475276,"isPublished":true,"publishAt":1684897476550,"random":0.7495861085515407},{"slug":"8e573722-bb36-43d7-afa8-12937a3896fb","content":"C# のデリゲートってメソッドの型定義使いまわせるやつって理解でおけ？","createAt":1684897122399,"updateAt":1684897122399,"isPublished":true,"publishAt":1684897125899,"random":0.7713802125387916},{"slug":"b027152e-b9d5-4b55-8401-9c91c935de5e","content":"動的型付け言語で1つのオブジェクトの中にいろいろ詰め込んで引数とするの怖すぎる\n\n```php\nfunction getHoge(args){\n  // args の中に名に入ってくるかわからん\n}\n\ngetHoge({\n  // 何渡せばいいかわからん\n})\n```\n","createAt":1684724369490,"updateAt":1684724369490,"isPublished":true,"publishAt":1684828391558,"random":0.3018741406240206},{"slug":"phrase-saturn","content":"木星も月も突き抜けなきゃ\n> [ずっと真夜中でいいのに。](/likes#ずっと真夜中でいいのに。) サターン","createAt":1684568861363,"updateAt":1684568861363,"isPublished":true,"publishAt":1684754990972,"random":0.28483643612932763},{"slug":"d271bce8-cbc9-4bf2-ac33-941e4c7c1aff","content":"`apply` の型宣言すごいで\n\n```kotlin\ninline fun <T> T.apply(block: T.() -> Unit): T\n```\n\n> [applyのドキュメント](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/apply.html)","createAt":1684240901027,"updateAt":1684240901027,"isPublished":true,"publishAt":1684286569643,"random":0.2077298804518286},{"slug":"996351dc-b028-493c-a306-3a29cc4c1dc3","content":"jetpack composeの `dp` 、実は拡張プロパティ\n\n```kotlin\nval Int.dp: Dp\n```\n\n> [dpのドキュメント](https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/package-summary#(kotlin.Int).dp())","createAt":1684240249925,"updateAt":1684240249925,"isPublished":true,"publishAt":1684240904051,"random":0.9290079294630915},{"slug":"phrase-aitsurazenninndousoukai","content":"どうでもいいから置いてった\n\n> [ずっと真夜中でいいのに。](http://tbsten.me/likes#%E3%81%9A%E3%81%A3%E3%81%A8%E7%9C%9F%E5%A4%9C%E4%B8%AD%E3%81%A7%E3%81%84%E3%81%84%E3%81%AE%E3%81%AB%E3%80%82)「あいつら全員同窓会」\n","createAt":1683850905686,"updateAt":1683850905686,"isPublished":true,"publishAt":1684134508565,"random":0.5518627938572946},{"slug":"phrase-amanojaku","content":"進む君と止まった僕の縮まらない距離を何で埋めよう\nまだ素直に言葉にできない僕は\n\n> 164「天ノ弱」\n","createAt":1683848638681,"updateAt":1683848638681,"isPublished":true,"publishAt":1683848640738,"random":0.14775440843310972},{"slug":"phrase-play-1","content":"何度もトライ\nしてもコンティニュー\n\n> SEKAINOOWARI 「Play」\n","createAt":1683828995072,"updateAt":1683828995072,"isPublished":true,"publishAt":1683829088652,"random":0.8522240647351937},{"slug":"phrase-milabo-1","content":"変わってくから 私ねもっと\n\n> [ずっと真夜中でいいのに。](http://tbsten.me/likes#%E3%81%9A%E3%81%A3%E3%81%A8%E7%9C%9F%E5%A4%9C%E4%B8%AD%E3%81%A7%E3%81%84%E3%81%84%E3%81%AE%E3%81%AB%E3%80%82) 「MILABO」","createAt":1683811233994,"updateAt":1683811233994,"isPublished":true,"publishAt":1683828392624,"random":0.45503922617166825},{"slug":"want-reverse-reference","content":"こんなことできたらいいのにな\n\n```kotlin\n\nval appBar = /* ? */\n\nScaffold(\n  appBar = { appBar.get() } /* 子で指定したAppBar */ \n) {\n  NavHost(...) {\n    composable(\"hoge\") {\n      HogeScreen()\n    }\n  }\n}\n\nfun HogeScreen() {\n  appBar.set {\n    AppBar { Text(\"HOGE\") }\n  }\n\n  ...\n}\n\n\n```\n","createAt":1683654724390,"updateAt":1683654724390,"isPublished":true,"publishAt":1683828386906,"random":0},{"slug":"ff5c8d87-2af8-46e6-a2ab-87b5ceb3f718","content":"![](https://storage.googleapis.com/tbsten-me-public-content/Screenshot_20230529-082351.png)\n\nQRこんな感じの良さそう\n","createAt":1685316302884,"updateAt":1685316302884,"isPublished":false,"publishAt":null,"random":0.2777535066750447},{"slug":"fcf4a2a6-7f65-459a-b355-26f1fe4db8c6","content":"このサイト使ってる技術にzenn markdownあるわー","createAt":1684454739743,"updateAt":1684454739743,"isPublished":false,"publishAt":null,"random":0.2107602064434897},{"slug":"f9ce2974-2d74-46dd-9050-774fb71c5f34","content":"\n```diff kotlin\n  type Users = List<User>\n  class ApiRespository {\n      fun getUsers() :Users {\n          val response = api.request(\"https://api.github.com/hoge\")\n          val users = response.users\n          return users\n      }\n  \n      private val usersCache :Users\n      private fun cacheUsers(users:Users) { \n-         usersCache = users\n+         cacheToStorage(users)\n      }\n  }\n\n+ fun cacheToStorage(users:List<Users>) {\n+   ...\n+ }\n\n```\n\n","createAt":1686280203626,"updateAt":1686280203626,"isPublished":false,"publishAt":null,"random":0.43561628688084264},{"slug":"f578e867-81f4-4118-ba8f-a7f9ec6fec36","content":"# reserve_dayの保存方法\n\n[A] JSONにして埋め込んじゃえ\n            クライアント側でfetchする必要ないので速い\n[B] query string に埋め込んじゃえ\n            一番一般的っぽいけどstringのバケツリレーつらい\n[C] セッションに入れちゃえ\n            GETメソッドなのにべき等じゃないような気が...\n            他システムでroomDataを使うときに事故りそう\n","createAt":1686278414060,"updateAt":1686278414060,"isPublished":false,"publishAt":null,"random":0.6920914525783093},{"slug":"f1571f5b-162e-4740-babf-4fc32a67e9eb","content":"# シークレットページアイデア\n- 技術スタックはZenn記事にあげたいから内容変えないといかんやん\n- **シークレットページをコマンドライン風にしてみる？！**\n\n","createAt":1684286664519,"updateAt":1684286664519,"isPublished":false,"publishAt":null,"random":0.22864448887288802},{"slug":"f06363be-baf6-407c-ab55-78bb868bbe5d","content":"codecheck再挑戦してみたのを記事にしたいんやけどどう思う","createAt":1686275298758,"updateAt":1686275298758,"isPublished":false,"publishAt":null,"random":0.2869031209468338},{"slug":"e8ad70e9-88c5-42c7-8549-02c9bc226ffb","content":"みちみちを実装してみる","createAt":1684455372121,"updateAt":1684455372121,"isPublished":false,"publishAt":null,"random":0.16849762219476583},{"slug":"e841a64c-42b0-40bd-8c1c-4d5b11b37e9c","content":"先生のディスプレイをリアルタイムに配信するシステムあると便利なんやけどな。\nついでに先生とチャットできるとよし。\n\n","createAt":1689905993942,"updateAt":1689905993942,"isPublished":false,"publishAt":null,"random":0.5209989770846997},{"slug":"e82f81c8-9cd8-4e47-b7e2-0393dbaa25d5","content":"JSにもclass構文あるよ......","createAt":1687489355036,"updateAt":1687489355036,"isPublished":false,"publishAt":null,"random":0.864323955515985},{"slug":"e0485b82-8893-46d1-8093-85492df6337e","content":"俺のコメント欄（オレコメ）","createAt":1684711485529,"updateAt":1684711485529,"isPublished":false,"publishAt":null,"random":0.10659421035572159},{"slug":"ca1c157f-dc76-4549-8f8f-eff530f26b02","content":"HTTPとかSMTPとかを自分で実装→はい、こんな簡単にできます\n\nな授業、違和感あるー","createAt":1687921860941,"updateAt":1687921860941,"isPublished":false,"publishAt":null,"random":0.614862108574209},{"slug":"c67c8c5a-9f78-4bc2-97e5-9b8a85f5e0a6","content":"QRはドロワーで横から出したほうが良さそう","createAt":1685316769356,"updateAt":1685316769356,"isPublished":false,"publishAt":null,"random":0.4230196469570724},{"slug":"bd97f589-c3e5-4ec8-8e17-a19d210b25f3","content":"初心者がイベントとかのあたりで躓きやすいの、教える側の問題な気がしてきた","createAt":1685513297514,"updateAt":1685513297514,"isPublished":false,"publishAt":null,"random":0.13567552586861287},{"slug":"b572f7f5-4f49-4544-ae18-6567f3f1b01a","content":"DIあるある\nアノテーション付け忘れがち","createAt":1689299042480,"updateAt":1689299042480,"isPublished":false,"publishAt":null,"random":0.9429345031564491},{"slug":"b4bfb5a5-e4d5-4034-9166-fccbcff3aca9","content":"当面Android触ってるから、Reactに戻った時に `useEffect` を `LaunchedEffect` って書きそうで怖いー笑笑","createAt":1689908692402,"updateAt":1689908692402,"isPublished":false,"publishAt":null,"random":0.957612348776903},{"slug":"a4b875d8-b918-450c-95bd-6244d8b135ce","content":"タプルと分割代入は別物じゃね？","createAt":1684722128193,"updateAt":1684722128193,"isPublished":false,"publishAt":null,"random":0.21713298254342384},{"slug":"997d74cc-6ae1-426a-aeae-591699d233c3","content":"![](https://storage.googleapis.com/tbsten-me-public-content/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202023-05-28%2022.50.00~2.png)\n\n![](https://storage.googleapis.com/tbsten-me-public-content/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202023-05-28%2022.50.10~2.png)\n\n![](https://storage.googleapis.com/tbsten-me-public-content/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202023-05-28%2022.50.19~2.png)\n","createAt":1685317197635,"updateAt":1685317197635,"isPublished":false,"publishAt":null,"random":0.38952085232919464},{"slug":"91d711e8-4240-44e5-bc1d-ba069aadb858","content":"applyの関数定義にはkotlinの好きなところが詰まってる","createAt":1684286546821,"updateAt":1684286546821,"isPublished":false,"publishAt":null,"random":0.7448419839145972},{"slug":"7e2f7625-923c-4ee2-92e4-8b5ba224c6cd","content":"いいねは誰でも投げれてコメントはログインしたら投げれるサービス","createAt":1684711473533,"updateAt":1684711473533,"isPublished":false,"publishAt":null,"random":0.6421529465393243},{"slug":"6dec4782-f176-4107-9298-efa756444bf8","content":"![](https://storage.googleapis.com/tbsten-me-public-content/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202023-06-04%2020.30.12.png)\n\n![](https://storage.googleapis.com/tbsten-me-public-content/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202023-06-04%2020.30.21.png)\n\n![](https://storage.googleapis.com/tbsten-me-public-content/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202023-06-04%2020.30.21.png)\n","createAt":1685878296378,"updateAt":1685878296378,"isPublished":false,"publishAt":null,"random":0.767070135181992},{"slug":"6d862f5d-59c1-49ca-8e6d-9c74db04a49d","content":"ステッカー大量購入して名刺に張ればよかった....","createAt":1689301050230,"updateAt":1689301050230,"isPublished":false,"publishAt":null,"random":0.7350133327090829},{"slug":"6d206bc9-aab5-4d92-997f-6d83bd022e84","content":"専門学校出た程度のレベル感で〇〇できますは信用ならんよね。\n学校の教えてるレベル低いとかじゃなくて、数年間学んだだけでできるって言えるなら**土日も勉強** みたいなエンジニアはいないはずやから","createAt":1685502180089,"updateAt":1685502180089,"isPublished":false,"publishAt":null,"random":0.5683088106919223},{"slug":"6cb9b72a-57db-4a5a-baf9-bb7e5f015f59","content":"君のアルバムにいる僕は全部いらないんでしょう\n\n> 優里「シャッター」\n","createAt":1684764962698,"updateAt":1684764962698,"isPublished":false,"publishAt":null,"random":0.537630226982112},{"slug":"644468ac-f1df-4d73-a098-56e15f628144","content":"# 考えておきたいもの\n\n- ドメインオブジェクトと機能\n  - 発生しうるエラーとエラーメッセージなど\n    - エラーメッセージ、デバッグ用メッセージを設計しておけると良き\n- デザインシステムや画面\n  - コンポーネント\n","createAt":1686538272931,"updateAt":1686538272931,"isPublished":false,"publishAt":null,"random":0.6222640674202085},{"slug":"640779f9-cbb4-4cdc-8ffe-fe57d5f15477","content":"ほげほげのほげ\n1〜10でいうと53万\nもけっこう使うな","createAt":1684926909799,"updateAt":1684926909799,"isPublished":false,"publishAt":null,"random":0.4240083703757187},{"slug":"632f50e1-46bb-47ca-8989-17a68ea4cba2","content":"checkHogeHogeの返り値が boolean なの大変なことになりそうー","createAt":1689907512034,"updateAt":1689907512034,"isPublished":false,"publishAt":null,"random":0.7674943370761382},{"slug":"62c7ed16-a46b-431b-9f41-27077fe513b9","content":"10-12時にすでに予約が入ってるかをチェックしたいなら比較演算で何とかならんか？","createAt":1689905821637,"updateAt":1689905821637,"isPublished":false,"publishAt":null,"random":0.3197156434654127},{"slug":"5a5058d0-a627-4bad-9ea2-46b41e565427","content":"**てーれーてーてれれれ**\n","createAt":1683652100376,"updateAt":1683652100376,"isPublished":false,"publishAt":null,"random":0.5976441564362516},{"slug":"586e818a-aab2-427f-963c-4d739d19df0f","content":"https://twitter.com/tsuba__zutomaro/status/1655962908541722624","createAt":1683653486901,"updateAt":1683653486901,"isPublished":false,"publishAt":null,"random":0.4},{"slug":"54613b41-e2ad-4b0c-b263-68bdbd1bb7d9","content":"$select = getItems( ... )\n^^^^^^^\n\n?!","createAt":1689905215988,"updateAt":1689905215988,"isPublished":false,"publishAt":null,"random":0.23448862694939465},{"slug":"4cc7d47f-dfa8-4e1b-91ab-a877d535b0a8","content":"卒研のスキルシート開発しないと......","createAt":1684134681849,"updateAt":1684134681849,"isPublished":false,"publishAt":null,"random":0.7277585637238395},{"slug":"416c642b-2b07-4c6f-918c-c0fba820cea8","content":"var つかってるぞおい。しらんぞおお","createAt":1687481671069,"updateAt":1687481671069,"isPublished":false,"publishAt":null,"random":0.9766597439121576},{"slug":"3a91bc4e-7e98-4fb0-9942-412f8385693b","content":"子からのイベントを殺してpropsを減らす","createAt":1685152781023,"updateAt":1685152781023,"isPublished":false,"publishAt":null,"random":0.9319924970497306},{"slug":"3a145960-60f8-4eb9-93f2-d33c81de0a34","content":"文字コード入れとく変数の名前が `CODE` はちがうやろ\n\n","createAt":1688517922592,"updateAt":1688517922592,"isPublished":false,"publishAt":null,"random":0.32503907419907674},{"slug":"315a890e-18dc-42e8-b9c7-166f5fdf5671","content":"独り言にテンプレあるといいよね\n\n- TODO\n- 見出し付き\n","createAt":1684460762707,"updateAt":1684460762707,"isPublished":false,"publishAt":null,"random":0.6045756345282298},{"slug":"1da17782-e8a9-4192-9132-2158bff477c9","content":"各情報をゲットするための Web API を表示する","createAt":1684416968720,"updateAt":1684416968720,"isPublished":false,"publishAt":null,"random":0.4591842405365578},{"slug":"1ca11f35-bf63-409a-a265-e6afb8e97ded","content":"```kotlin\nval response <- hoge()\n// equals\nhoge() -> val response\n```\n\nみたいなシンタックスシュガーが欲しい\n","createAt":1686704255706,"updateAt":1686704255706,"isPublished":false,"publishAt":null,"random":0.9778283597197119},{"slug":"1a4dad27-585c-401f-94c5-3b25031ea3c9","content":"JavaとJSとかの文法比較表\n\n|Java|JavaScript|\n|---|---|\n|![](https://storage.googleapis.com/tbsten-me-public-content/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202023-05-20%200.36.45.png)|基本同じだが、条件式にtrue,false以外も渡せます|\n\n","createAt":1684466949533,"updateAt":1684466949533,"isPublished":false,"publishAt":null,"random":0.8688147177922128},{"slug":"170f8e25-48d0-409d-8e00-c7722c91335f","content":"ガチャガチャ✩ザムライ","createAt":1684488769327,"updateAt":1684488769327,"isPublished":false,"publishAt":null,"random":0.20487348695287322},{"slug":"12019c47-2adc-465f-bec6-9b8b9d02f649","content":"書く授業もいいけど読む授業もいいね","createAt":1688089488150,"updateAt":1688089488150,"isPublished":false,"publishAt":null,"random":0.4231018186280142},{"slug":"1014382c-efc3-4c89-b93d-d7e5bc7d9c8d","content":"IDEのgit統合機能はこれだからなー\nVSCodeは優秀","createAt":1689297790026,"updateAt":1689297790026,"isPublished":false,"publishAt":null,"random":0.261033930259974},{"slug":"0f4c547b-7245-4d48-9359-c6a718bd21cf","content":"ようは何でもかんでもフィールドにすんなあほがってことやなー","createAt":1687919520699,"updateAt":1687919520699,"isPublished":false,"publishAt":null,"random":0.12525591445909545},{"slug":"0cd9772c-cc05-429c-9d36-0bbf63faf66d","content":"BOW しか表示しないページ作ってみたい","createAt":1684286487026,"updateAt":1684286487026,"isPublished":false,"publishAt":null,"random":0.3546267494880788},{"slug":"08b7bc0b-5182-4bc3-ae92-9e5a448c8fb6","content":"資料はWebで配布してほしいみある","createAt":1689304261431,"updateAt":1689304261431,"isPublished":false,"publishAt":null,"random":0.3394774705695711},{"slug":"079830fe-1b17-4314-addf-23b8b314f6f7","content":"必要な技術を教えるだけじゃ、プログラムの楽しさはわからんよね","createAt":1689299141074,"updateAt":1689299141074,"isPublished":false,"publishAt":null,"random":0.1760142673844809},{"slug":"01f6b03d-842d-4ac6-a6af-bdbf3e0ce20b","content":"React\n\n- 表示する\n- コードを見やすくするためにコンポーネントに分ける\n- ボタンなどのクリック処理を入れる\n  - いったんはconsole.logするだけ\n- カウンターを作る\n  - ボタンクリックでカウントアップしたりリセットしたりする\n- フォームの処理\n  - input text,checkbox, select, textarea, \n- リストを追加したり、削除したり更新したりする\n- サーバからデータ(JSON)を取得する\n  - デフォルトで取得して表示\n\n\n","createAt":1684293916778,"updateAt":1684293916778,"isPublished":false,"publishAt":null,"random":0.47858496533093176}]