Skip to content

Instantly share code, notes, and snippets.

@gold24park
gold24park / replacer.kt
Created February 16, 2024 15:01
Kotlin Text Replacer
fun main(args: Array<String>) {
val param = mapOf(
"PS" to mapOf(
"ts" to mapOf(
"pt" to "Lou",
"age" to 28
)
),
"ENV" to mapOf(
"ver" to 1.0
@gold24park
gold24park / StateMachine.kt
Last active February 4, 2024 07:05
StateMachine with Kotlin (Legend of Zelda)
import kotlinx.coroutines.delay
import kotlinx.coroutines.runBlocking
import kotlin.random.Random
enum class GameEvent(val message: String): Event {
OnPlayerEnterArea("- 플레이어가 보코블린의 시야에 들어옵니다. -"),
OnPlayerLeaveArea("- 플레이어가 보코블린의 시야를 벗어납니다. -"),
CloseToAttack("- 보코블린의 타격 범위안에 플레이어가 있습니다. -"),
OnPlayerAttack("- 플레이어가 공격합니다 -"),
OnHealthZero("- 보코블린의 체력이 0이 되었습니다. -")
@gold24park
gold24park / dq.kt
Created October 7, 2023 09:10
DialogQueue-4
class DialogHandlerImpl(
private val queue: DialogQueue,
): DialogHandler {
override fun <Req, Res> showDialog(
builder: DialogBuilder<Req, Res>,
req: Req,
priority: DialogQueue.Priority
) {
show(builder = builder, req = req, priority = priority)
@gold24park
gold24park / dq.kt
Created October 7, 2023 09:10
DialogQueue-3
interface DialogHandler {
fun <Req, Res> showDialog(
builder: DialogBuilder<Req, Res>,
req: Req,
priority: DialogQueue.Priority = DialogQueue.Priority.LOW
)
suspend fun <Res> showDialogForResult(
builder: DialogBuilder<Unit, Res>,
@gold24park
gold24park / dq.kt
Created October 7, 2023 09:09
DialogQueue-2
class DialogQueueImpl(
private val context: Context,
private val lifecycleOwner: LifecycleOwner,
private val fragmentManager: FragmentManager,
): DialogQueue {
private var showingElement: DialogQueueElement? = null
companion object {
private val queue = PriorityQueue<DialogQueueElement>()
@gold24park
gold24park / dq.kt
Created October 7, 2023 09:08
DialogQueue-1
interface DialogQueue {
fun add(element: DialogQueueElement)
enum class Priority {
HIGH,
MEDIUM,
LOW,
}
}
@gold24park
gold24park / main.rs
Last active September 28, 2023 03:15
rust udp echo server
use std::{error::Error, net::UdpSocket, str::from_utf8};
fn main() -> std::io::Result<()> {
let socket = UdpSocket::bind("[::]:2000")?;
let mut buf = [0; 65507];
loop {
let (read, from) = socket.recv_from(&mut buf)?;
println!("Received {} bytes from {}", read, from);
socket.send_to(&buf[..read], from)?;
@gold24park
gold24park / main.rs
Created September 28, 2023 03:09
rust udp client
use std::{
io::{stdin, BufRead},
net::UdpSocket,
str::from_utf8,
};
fn main() -> std::io::Result<()> {
let args: Vec<String> = std::env::args().collect();
if args.len() < 2 {
@gold24park
gold24park / pager.kt
Created August 26, 2023 08:41
jetpack compose infinite pager with right order
import androidx.compose.foundation.ExperimentalFoundationApi
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.pager.HorizontalPager
import androidx.compose.foundation.pager.PagerState
import androidx.compose.foundation.pager.rememberPagerState
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material3.MaterialTheme
@gold24park
gold24park / arc_animation_pager.kt
Created August 26, 2023 08:20
arc_animation_pager
import androidx.compose.foundation.ExperimentalFoundationApi
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.pager.HorizontalPager
import androidx.compose.foundation.pager.PageSize
import androidx.compose.foundation.pager.PagerState
import androidx.compose.foundation.pager.rememberPagerState