user-img

#Memo

Jetpack Compose
[Android Compose] TextField์— placeholder ๋„ฃ๊ธฐ
How to set placeholder on TextField in Jetpack Composeย ย ๊ธฐ์กด xml์„ ์ด์šฉํ•œ ์•ˆ๋“œ๋กœ์ด๋“œ ์ฝ”๋“œ์—์„œ๋Š” EditText์— placeholder๋ฅผ ์ฃผ๋Š” ๊ฑด ๊ฐ„๋‹จํ–ˆ์Šต๋‹ˆ๋‹ค.xml ์•ˆ์— android:hint ๋ฅผ ์ด์šฉํ•˜๊ฑฐ๋‚˜ ์ฝ”๋“œ์ƒ์—์„œ editText.setHint()๋กœ ์›ํ•˜๋Š” placeholder๊ฐ’์„ ๋„ฃ์–ด์ฃผ๋ฉด ๋์ฃ .ย ์ปดํฌ์ฆˆ์—์„œ๋Š” ๊ฐ„๋‹จํ•˜๊ฒŒ TextField ์•ˆ์— decorationBox๋ฅผ ์ด์šฉํ•˜์—ฌ placeholder๋ฅผ ๋„ฃ์–ด์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.var input by remember { mutableStateOf("") }Box( contentAlignment = Alignment.Center, modifier = Modifier.fillMaxSize()) { BasicTextF..
2022.07.15
Jetpack Compose
[Android Compose] TextField Focus ์ฃผ๊ธฐ
How to request focus on TextField in Jetpack Composeย ย ์ปดํฌ์ฆˆ์—์„œ๋Š” FocusRequester๋ฅผ ํ†ตํ•ด TextField์— ํฌ์ปค์Šค๋ฅผ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.Modifier.focusRequest()์—๋‹ค๊ฐ€ FocusRequest ๋ณ€์ˆ˜๋ฅผ ์ƒ์„ฑํ•ด ๋„ฃ์–ด์คŒ์œผ๋กœ์จํ•ด๋‹น ์œ„์ ฏ์— ํฌ์ปค์Šค๋ฅผ ์ด๋ž˜๋ผ ์ €๋ž˜๋ผ ํ•˜๋Š” ์š”์ฒญ์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.val focusRequester = remember { FocusRequester() }var value by remember { mutableStateOf("hello") }TextField( value = value, onValueChange = { value = it }, modifier = Modifier.focus..
2022.07.06
Jetpack Compose
[Android] Jetpack Compose Navigation ์ ์šฉํ•ด์„œ ํ™”๋ฉด ์ด๋™ํ•˜๊ธฐ
์•ˆ๋“œ๋กœ์ด๋“œ์— Compose๋กœ ๊ตฌํ˜„ํ•œ๋‹ค๋ฉดํ™”๋ฉด ์ด๋™ํ•  ๋•Œ๋„ Compose Navigation์„ ์จ์ค˜์•ผ ํ•˜์ง€ ์•Š๊ฒ ์Šต๋‹ˆ๊นŒ?ย ์•„๋ž˜์™€ ๊ฐ™์€ ์ƒํ™ฉ๋“ค์—์„œ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์˜ˆ์‹œ๋ฅผ ์ ์–ด๋ณด๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.1. ํ™”๋ฉด ์ด๋™ํ•˜๊ธฐ2. ์ธ์ž ์ „๋‹ฌํ•˜๊ธฐ2-1. String ํƒ€์ž… ์ด๋™2-2. ์ปค์Šคํ…€ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ (Parcelable ํƒ€์ž…) ์ด๋™ย ์šฐ์„  build.gradle(app)์— ์•„๋ž˜ dependency ์ถ”๊ฐ€๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.dependencies { def nav_version = "2.6.0" implementation "androidx.navigation:navigation-compose:$nav_version"}ย ์ตœ์‹  ๋ฒ„์ „์€ ๊ณต์‹๋ฌธ์„œ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.https://developer.android.com/jetpack..
2023.07.23
AWS EC2์— Flask ๋ฐฐํฌํ•˜๊ธฐ (MySQL, FileZilla)
AWS EC2์— Flask ์„œ๋ฒ„๋ฅผ ๋ฐฐํฌํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค.์‰ฝ์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.(๋‹น์—ฐํ•จ ํ•œ๋ฒˆ๋„ ์•ˆํ•ด๋ด„)ย ์šฐ์„  ์ €์—๊ฒŒ ์ฃผ์–ด์ง„ ๊ฑดec2-*-**-*-**.ap-northeast-2.compute.amazonaws.com ์„œ๋ฒ„ ์ฃผ์†Œ์™€ppk ํ‚คํŽ˜์–ด ํŒŒ์ผ๋ฟ์ด์—ˆ์Šต๋‹ˆ๋‹ค.(์ฝ˜์†” ์ ‘๊ทผ๋„ ๋ชปํ–ˆ์Œ,,)ย aws์—์„œ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ~ ์ด๋Ÿฐ ๋ถ€๋ถ„์€ ๋‹ค ๋„˜์–ด๊ฐ€๊ณ ย ์ด ์ƒํ™ฉ์—์„œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.ย ย [ ๋ชฉ์ฐจ ]1. ppk to pem2. aws ec2 ์„œ๋ฒ„ ์ ‘์†3. FileZilla Client ์„ค์น˜4. FileZilla๋กœ ์ฝ”๋“œ ํŒŒ์ผ ์—…๋กœ๋“œ5. flask ์‹คํ–‰6. port ์„ค์ •7. mysql ์„ค์น˜ ๋ฐ ์ ‘์†8. mysql ์‚ฌ์šฉ์ž ์ถ”๊ฐ€ ๋ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ƒ์„ฑ9. flask์—์„œ mysql ์—ฐ๊ฒฐ10. ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์‹คํ–‰ย ** ๊ฐœ๋ฐœ ํ™˜๊ฒฝ **- Mac ..
Programming
[Android] ์ด๋ฏธ์ง€ ํŒŒ์ผ(binary string) ๋ฐ›์•„์„œ Compose๋กœ ๋„์šฐ๊ธฐ
API ๋ฌธ์„œ์—์„œ Response๊ฐ’์ด string..Media type์ด image/png ์ผ ๋•Œ..์–ด๋–ป๊ฒŒ ํ•˜์‹œ๋‚˜์š”..?ย ๋‘๋ถ€๊ณ ๋ฐฑํ•˜์ž๋ฉด,, ๊ทธ๋™์•ˆ json ์‘๋‹ต๊ฐ’๋งŒ ์ฒ˜๋ฆฌํ–ˆ์–ด์„œ string๋งŒ? ๋ ์šฉ? ๐Ÿ˜ฎ์‚ด์ง ๊ฐ์ด ์•ˆ์™€์„œ postman๊นŒ์ง€ ๋Œ๋ ค๋ดค๋Š”๋ฐ ๋ฆฌ์–ผ๋ฃจ ์ด๋ฏธ์ง€ ํŒŒ์ผ์ด ์˜จ๊ฑฐ ๋ณด๊ณ ๋ˆˆ๋ฌผ์˜ ์‚ฝ์งˆ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค..ย ย ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.Retrofit2 2.9.0okhttp3 4.11.0์›๋ž˜ (json ์‘๋‹ต๊ฐ’)๋ผ๋ฉด,@POST("transform") suspend fun request( @Part("type") type: RequestBody, @Part img: MultipartBody.Part, ): Responseย Response ๊ฐ’์œผ๋กœ ๋ฐ›์•„์„œ โ†’ apicall ๋ฐ›๋Š” ..
Android
[Android] Retrofit MultipartBody๋กœ POST๋ณด๋‚ด๊ธฐ
API ๋ฌธ์„œ๋ฅผ ๋ฐ›์•˜๋Š”๋ฐ Request๊ฐ€ ์ด๋ ‡๊ฒŒ ๋˜์–ด์žˆ๋‹ค๋ฉด,ย ์šฐ๋ฆฌ๋Š” Multipart ๋ฐ์ดํ„ฐ๋กœ ๋ณด๋‚ด์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค.๊ทธ๋ƒฅ @Body ์•„๋ƒ? ํ‰์†Œ์ฒ˜๋Ÿผ Json์œผ๋กœ ๋ณด๋‚ด์•ผ์ง€~ ํ–ˆ๋‹ค๊ฐ€๋Š”422 Unprocessable Entity ์—๋Ÿฌ๋งŒ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค..์–ด๋–ป๊ฒŒ ์•Œ์•˜๋ƒ๊ตฌ์š”? ์ €๋„ ์•Œ๊ณ  ์‹ถ์ง€ ์•Š์•˜์–ด์š”โ€ฆย ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.Retrofit2 2.9.0okhttp3 4.11.0POST๋กœ ํ˜ธ์ถœํ•˜๋ฉฐ,Request Body๋Š” type: String, img: String($binary)๊ฐ€ ์š”๊ตฌ๋˜๋Š” ์ƒํ™ฉ์ž…๋‹ˆ๋‹ค.ย ย ย Api Interface ์ฝ”๋“œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ์ž‘์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค.@Multipart@POST("transform") suspend fun request( @Part("type") type: Req..
Android
์นด์นด์˜ค ์ฑ—๋ด‡ 5์ดˆ ํƒ€์ž„์•„์›ƒ, ์ฝœ๋ฐฑ ์‘๋‹ต์œผ๋กœ ํ•ด๊ฒฐํ•˜๊ธฐ
์นด์นด์˜ค ์ฑ—๋ด‡์„ ๋ณธ์ธ์˜ ์„œ๋ฒ„(์Šคํ‚ฌ์„œ๋ฒ„)๋กœ ํ†ต์‹ ํ•˜๊ณ ์ž ํ•˜๋Š”๋ฐ์นด์นด์˜ค ์ฑ—๋ด‡์˜ ํƒ€์ž„์•„์›ƒ์€ 5์ดˆ์ž…๋‹ˆ๋‹ค..ย ์‹ฌ์ง€์–ด ์ด ํƒ€์ž„์•„์›ƒ ์‹œ๊ฐ„์€ ๋ณ€๊ฒฝํ•˜์ง€ ๋ชปํ•œ๋‹ค๊ณ  ์˜คํ”ผ์…œ์—์„œ๋„ ๋ชป๋ฐ•์•„๋‘๊ณ  ์žˆ์–ด์š”.ย ๊ทธ๋Ÿฐ๋ฐ ์—ฌ๊ธฐ์— ์ฝœ๋ฐฑ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ด์ฃผ๊ณ  ์žˆ๋‹ค๊ณ  ์จ์žˆ์ฃ ?์ฝœ๋ฐฑ ๊ธฐ๋Šฅ์ด 5์ดˆ์˜ ํƒ€์ž„์•„์›ƒ์„ ๋ณด์™„ํ•ด์ค„ ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค !ย ์‚ฝ์งˆ์„ ์ข€ ํ–ˆ๋Š”๋ฐ ์ œ๊ฐ€ ์•Œ์•„๋‚ธ ์ด ์ฝœ๋ฐฑ ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด ์ ์–ด๋ณด๋ ค๊ณ  ํ•ด์š”๐Ÿ˜€ย ย ๋จผ์ €, ์นด์นด์˜ค ์ฑ—๋ด‡์—์„œ ์ œ๊ณตํ•˜๋Š” ์ฝœ๋ฐฑ ๊ธฐ๋Šฅ์€5์ดˆ ์ด๋‚ด ๋‹ต๋ณ€์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ, ์ง€์—ฐ ๋ฉ”์„ธ์ง€(์˜ˆ. ์ž ์‹œ๋งŒ ๊ธฐ๋‹ค๋ ค์ฃผ์„ธ์š”)๋ฅผ ๋ณด๋‚ด๊ณ  1๋ถ„ ์ด๋‚ด๋กœ 1๊ฑด์˜ ์‘๋‹ต์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.ย ์ด ์ฝœ๋ฐฑ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด AI ์ฑ—๋ด‡ ์ „ํ™˜์„ ํ•ด์•ผํ•˜๋Š”๋ฐ, ์ด AI ์ฑ—๋ด‡ ์ „ํ™˜์€ ์‹ ์ฒญํ•ด์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.ย ๊ทธ๋ ‡๊ฒŒ ๋น„์ฆˆ๋‹ˆ์Šค์ ์œผ๋กœ ์ƒ์„ธํ•˜๊ฒŒ ์ž‘์„ฑํ•˜์ง€ ์•Š์•„๋„ ์ด์ƒํ•ด๋ณด์ด์ง€ ์•Š์œผ๋ฉด ์Šน์ธ๋˜๋Š”..
Programming
Android Compose ์Šคํ„ฐ๋”” ๊ธฐ๋ก 03
Material Design๋””์ง€ํ„ธ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ํฌ๊ด„์ ์ธ ๋””์ž์ธ ์‹œ์Šคํ…œColor, Typography, Shape ๋“ฑ@Composablefun MaterialTheme( colors: Colors, typography: Typography, shapes: Shapes, content: @Composable () -> Unit)ย val customTextSelectionColors = TextSelectionColors( handleColor = colorResource(id = R.color.primary100), backgroundColor = Color(0xFF4286F4).copy(alpha = 0.4f))CompositionLocalProvider(L..
What I Learned
Android Compose ์Šคํ„ฐ๋”” ๊ธฐ๋ก 02
Modifierimage size, padding, background, round image, click event ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ@Composablefun Greeting(name: String) { Text( text = "Hello $name!", modifier = Modifier.onGloballyPositioned { android.util.Log.i("TEMP", "size ${it.size}") } )}onGloballyPositioned๋ฅผ ์ด์šฉํ•˜์—ฌ view์˜ ํฌ๊ธฐ๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ์Œย ย Slot APIs์‚ฌ์šฉ์ž ์ •์˜ ๋ ˆ์ด์•„์›ƒ์„ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•ด Compose๊ฐ€ ๋„์ž…ํ•œ ํŒจํ„ด@Composablefun MyApplicationTheme( content: @Composable () -> Unit)๋งค๊ฐœ..
What I Learned