전체 κΈ€

iOS κΏ€μžΌ!
πŸ’» 개발/iOS

[TIL] 22.03.17

κ³΅λΆ€ν•œ 것 μ•ˆλ“œλ‘œμ΄λ“œ κ°•μ˜ μˆ˜κ°• CameraX Glide Content Resolver ScaleGestureDetector μ•Œκ²Œλœ 것 1. AddTextChangedListener λŒ€λΆ€λΆ„μ˜ μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ 검색창에 검색어λ₯Ό μž…λ ₯ν•˜λ©΄ μ‚¬μš©μžκ°€ Enter λ₯Ό λˆ„λ₯΄κΈ°λ„ 전에 μž…λ ₯ν•œ 검색어에 따라 μžλ™μ™„μ„± 검색어가 λ³€κ²½λ˜λŠ” 것을 λ³Ό 수 μžˆλ‹€. 이λ₯Ό κ΅¬ν˜„ν•˜κΈ° μœ„ν•΄μ„  EditText 의 ν…μŠ€νŠΈ λ³€ν™”λ₯Ό κ°μ§€ν•΄μ•Όν•˜λŠ”λ° 이λ₯Ό AddTextChangedListener λ₯Ό 톡해 감지할 수 μžˆλ‹€. private fun bindViews() = with(binding) { editTextView.addTextChangedListener { Log.d("Changed!", editTextView.text.toString()) ..

πŸ’» 개발/iOS

[TIL] 22.03.16

κ³΅λΆ€ν•œ 것 μ•ˆλ“œλ‘œμ΄λ“œ κ°•μ˜ μˆ˜κ°• Retrofit2, OkHttpLoggingInterceptor Shimmer Glide Content Resolver Unsplash API μ•Œκ²Œλœ 것 1. Glide 였늘 곡뢀λ₯Ό ν•˜λ©΄μ„œ Glide κ°€ 생각보닀 μ—„μ²­ κ°•λ ₯ν•œ λΌμ΄λΈŒλŸ¬λ¦¬λΌλŠ” 것을 κΉ¨λ‹¬μ•˜λ‹€. Glide λ₯Ό μ‚¬μš©ν•œμ§€λŠ” κ½€ λμ§€λ§Œ 이λ₯Ό μ œλŒ€λ‘œ μ‚¬μš©ν•˜κ³  μžˆμ§€ μ•Šμ•˜λ‹€. μš°μ„  κ·Έλ™μ•ˆ Glide λ₯Ό μ‚¬μš©ν•  λ•Œ μ•„λž˜μ²˜λŸΌ 써왔닀. κ·Έλƒ₯ λ‹¨μˆœνžˆ 이미지뷰에 이미지λ₯Ό λ„£μ–΄μ£ΌκΈ° μœ„ν•œ μš©λ„λ‘œ... private fun bindViews() { Glide.with(binding.root) .load(profileImageUrl) .into(binding.profileImageView) } ν•˜μ§€λ§Œ 정말 λ‹€μ–‘ν•œ κΈ°λŠ₯을 μ œκ³΅ν•˜κ³  μžˆμ—ˆλ‹€. ..

πŸ’» 개발/iOS

[TIL] 22.03.15

κ³΅λΆ€ν•œ 것 μ•ˆλ“œλ‘œμ΄λ“œ κ°•μ˜ μˆ˜κ°• μ•Œκ²Œλœ 것 1. OkHttpLogging Retrofit 을 μ‚¬μš©ν•΄μ„œ API λ₯Ό ν˜ΈμΆœν•  λ•Œ ν΄λΌμ΄μ–ΈνŠΈμ˜ λ¬Έμ œμΈμ§€ μ„œλ²„μ˜ λ¬Έμ œμΈμ§€λ₯Ό ν™•μΈν•˜κΈ° μœ„ν•΄ HTTP 의 둜그λ₯Ό λ΄μ•Όν•˜λŠ” κ²½μš°κ°€ μžˆλ‹€. 이 λ•Œ μ‚¬μš©ν•  수 μžˆλŠ” 것이 OkHttp 의 HttpLoggingInterceptor 이닀. // Retrofit Interface λ₯Ό κ΅¬ν˜„ν•œλ‹€. private val openApiService : OpenApiService by lazy { Retrofit.Builder() .baseUrl(Url.OPEN_API_BASE_URL) .addConverter(GsonConverterFactory.create()) .client(buildOkHttpClient()) .build() .crea..

πŸ’» 개발/iOS

[TIL] 22.03.14

κ³΅λΆ€ν•œ 것 μ•ˆλ“œλ‘œμ΄λ“œ κ°•μ˜ μˆ˜κ°• μΉ΄μΉ΄μ˜€ν†‘, 곡곡데이터 API Retrofit, OkHttpLoggingInterceptor FusedLocationProvider Coroutine AppWidgetProvider Service Lifecycle μ•Œκ²Œλœ 것 1. FusedLocationProvider μ•ˆλ“œλ‘œμ΄λ“œμ—μ„œ μœ„μΉ˜ 정보λ₯Ό λ°›μ•„μ˜¬ 수 μžˆλŠ” λ°©λ²•μ—λŠ” LocationManager 와 FusedLocationProvider κ°€ μžˆλ‹€. μš°μ„  LocationManager 은 getLastKnownLocation λ˜λŠ” LocationListener λ₯Ό ν†΅ν•΄μ„œ μœ„μΉ˜ 정보λ₯Ό κ°€μ Έμ˜¬ 수 μžˆλ‹€. // LocationManager λ₯Ό μ •μ˜ν•œλ‹€. val locationManager = getSystemService(LOCA..

πŸ’» 개발/iOS

[TIL] 22.03.13

κ³΅λΆ€ν•œ 것 μ•ˆλ“œλ‘œμ΄λ“œ κ°•μ˜ μˆ˜κ°• AppWidgetProvider ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ 1문제 μ•Œκ²Œλœ 것 μ•ˆλ“œλ‘œμ΄λ“œ μœ„μ ―μ„ μ‚¬μš©ν•˜κΈ° μœ„ν•΄μ„œλŠ” Manifest 에 Recevier λ₯Ό λ“±λ‘ν•˜κ³  이 λ•Œ action κ³Ό meta-data λ₯Ό λ„£μ–΄μ€€λ‹€. meta-data : μœ„μ ― λ ˆμ΄μ•„μ›ƒμ˜ 크기, 초기 λ ˆμ΄μ•„μ›ƒ λ¦¬μ†ŒμŠ€, μ—…λ°μ΄νŠΈ λΉˆλ„ λ“± μ•± μœ„μ ―μ˜ 기본적인 νŠΉμ„±μ„ μ •μ˜ν•œλ‹€. minWidth, minHeight : μœ„μ ―μ΄ 기본적으둜 μ‚¬μš©ν•˜λŠ” μ΅œμ†Œ 크기이닀. updatePeriodMillis : onUpdate λ©”μ†Œλ“œλ₯Ό ν˜ΈμΆœν•˜μ—¬ μœ„μ ―μ„ μ—…λ°μ΄νŠΈν•˜λŠ” λΉˆλ„λ₯Ό κ²°μ •ν•œλ‹€. μ—…λ°μ΄νŠΈ μ‹œμ— λ””λ°”μ΄μŠ€ λŒ€κΈ°λͺ¨λ“œκ°€ ν•΄μ œλ˜λ―€λ‘œ λ°±κ·ΈλΌμš΄λ“œμ—μ„œλŠ” μ΅œμ†Œ 30λΆ„, 이보닀 짧은 μ‹œκ°„ κ°„κ²©μœΌλ‘œ μ—…λ°μ΄νŠΈν•˜λŠ” 것을 κΈˆν•œλ‹€. previewImage : μ•± μœ„μ ―..

✍️ μ½”ν…Œ μ€€λΉ„/String

[λ¬Έμžμ—΄ / Kotlin] 2019 KAKAO BLIND RECRUITMENT - μ˜€ν”ˆμ±„νŒ…λ°©

문제 풀이 μ–Έμ–΄ Kotlin μ½”λ“œ class Solution { fun solution(record: Array): Array { val history = arrayListOf() val name = mutableMapOf() val result = arrayListOf() for (e in record.iterator()) { val act = e.split(" ") when (act[0]) { "Enter" -> { name[act[1]] = act[2] history.add(Pair(act[0], act[1])) } "Leave" -> { history.add(Pair(act[0], act[1])) } "Change" -> { name[act[1]] = act[2] } } } history.map ..

✍️ μ½”ν…Œ μ€€λΉ„/Implementation

[κ΅¬ν˜„ / Kotlin] 2022 SK ICT Family 개발자 μ±„μš© μ±Œλ¦°μ§€ - 2번

μš°μ„  κ°„λ§Œμ— μ•Œκ³ λ¦¬μ¦˜ 문제λ₯Ό μ ‘ν–ˆλ˜ 터라 많이 μ–΄λ €μ› λ‹€. FE / APP 개발 직ꡰ을 μ„ νƒν–ˆκ³  총 4λ¬Έμ œκ°€ λ‚˜μ™”λŠ”λ° DP 1, κ΅¬ν˜„ 1, κ·Έλž˜ν”„ 2 μ΄λ ‡κ²Œ λ‚˜μ™”λ‹€. 사정이 μžˆμ–΄μ„œ 30λΆ„ 정도 λ’€λŠ¦κ²Œ μ°Έμ„ν–ˆκ³  2μ‹œκ°„ λ™μ•ˆ 2번 ν•˜λ‚˜λ§Œ ν’€μ—ˆλ‹€. μ‹œκ°„μ΄ 더 μžˆμ—ˆμ–΄λ„ λ‹€λ₯Έ 문제λ₯Ό 풀지 λͺ»ν–ˆμ„ 것이닀. μ•ˆλ“œλ‘œμ΄λ“œ 곡뢀 λ•Œλ¬Έμ— μ•Œκ³ λ¦¬μ¦˜μ„ μ†Œν™€νžˆ ν–ˆλŠ”λ° μ•žμœΌλ‘œλŠ” νŽΈμ‹ν•˜μ§€ 말고 μ•Œκ³ λ¦¬μ¦˜λ„ κΎΈμ€€νžˆ ν’€μ–΄μ•Όκ² λ‹€. 문제 문제 μ €μž‘κΆŒμ— μ˜ν•΄μ„œ μΊ‘μ³λŠ” ν•˜μ§€ λͺ»ν–ˆκ³  κ°„λ‹¨ν•˜κ²Œ μ„€λͺ…ν•˜μžλ©΄ 주어진 배열을 μž¬μ •λ ¬ν•˜λŠ” λ¬Έμ œμ˜€λ‹€. μ‹œκ³„ λ°©ν–₯, λ°˜μ‹œκ³„ λ°©ν–₯으둜 총 2κ°€μ§€μ˜ λ°©ν–₯이 μžˆμ—ˆμœΌλ©° λ°°μ—΄μ˜ ν¬κΈ°λŠ” ν™€μˆ˜μ™€ μ§μˆ˜κ°€ μ‘΄μž¬ν–ˆλ‹€. 결과적으둜 총 4가지 경우 λŒ€ν•΄ 배열을 μž¬μ •λ ¬ν•˜λŠ” λ¬Έμ œμ˜€λ‹€. 풀이 μ–Έμ–΄ Kotlin μ½”λ“œ class Solution ..

✍️ μ½”ν…Œ μ€€λΉ„/String

[λ¬Έμžμ—΄ / Kotlin] 2020 KAKAO BLIND RECRUITMENT - λ¬Έμžμ—΄ μ••μΆ•

풀이 μ–Έμ–΄ Kotlin μ½”λ“œ fun solution(s: String): Int { var minLength = s.length for (i in 0 until s.length / 2) { var subString = s.slice(0..i) var answer = "" var cnt = 1 var last = 0 for (j in i + 1 until s.length - i step i + 1) { // λ§ˆμ§€λ§‰ Index λ₯Ό μ €μž₯ν•œλ‹€. last = j + i + 1 // 같은 SubString 인 경우 이λ₯Ό μΉ΄μš΄νŠΈν•œλ‹€. if (subString == s.slice(j..j + i)) cnt += 1 // λ‹€λ₯Έ SubString 인 경우 else { if (cnt > 1) { // 숫자 + SubStri..

πŸ’» 개발/iOS

[TIL] 22.03.10

κ³΅λΆ€ν•œ 것 μ•ˆλ“œλ‘œμ΄λ“œ κ°•μ˜ μˆ˜κ°• κΉƒν—ˆλΈŒ API Retrofit2 Room SharedPreference μ•Œκ²Œλœ 것 μ•”μ‹œμ  μΈν…νŠΈ λ₯Ό μ‚¬μš©ν•  경우 action κ³Ό category λŠ” ν•„μˆ˜ μš”μ†Œμ΄λ‹€. μ™ΈλΆ€ μŠ€ν‚΄ 을 μ΄μš©ν•˜μ—¬ νŠΉμ • Url 일 λ•Œ μ•‘ν‹°λΉ„ν‹°κ°€ ν˜ΈμΆœλ˜λ„λ‘ κ΅¬ν˜„ν•  수 μžˆλ‹€. μ™ΈλΆ€ 앱을 μ‹€ν–‰ν•˜κ³  λ‹€μ‹œ μ•‘ν‹°λΉ„ν‹°λ‘œ λŒμ•„μ˜¨ 경우 onCreate κ°€ μ•„λ‹Œ OnNewIntent κ°€ ν˜ΈμΆœλœλ‹€. Room 을 μ‚¬μš©ν•  λ•Œ Entity μ—μ„œ Primary Key λŠ” Null 이 될 수 μ—†λ‹€. (λ‹Ήμ—°) PreferenceManager λ₯Ό 톡해 κΈ°κΈ° 내뢀에 데이터λ₯Ό μ €μž₯ν•  수 μžˆλ‹€. 곡뢀할 것 코루틴 에 λŒ€ν•΄ 아직 λ―Έμˆ™ν•˜λ‹€. 곡식 λ¬Έμ„œμ™€ λ―Έλ””μ—„ λΈ”λ‘œκ·Έλ₯Ό μ°Έκ³ ν•˜μ—¬ κ³΅λΆ€ν•˜μž. λŠλ‚€ 점 배울게 λ„ˆλ¬΄ λ§Žλ‹€. μ—΄μ‹¬νžˆ μ‚΄μ•„μ•Όκ² λ‹€.

⛹️ 라이프/회고

[퍼듀 일기] κΉ€μΉ˜κ°€ κ·Έλ¦½μŠ΅λ‹ˆλ‹€

λ“œλ””μ–΄ λ§ˆμ§€λ§‰ 일기! μ—¬λŸ¬ 사진과 ν•¨κ»˜ 두 λ‹¬κ°„μ˜ λ―Έκ΅­ μƒν™œμ—μ„œ λŠλ‚€ 점을 적어보렀고 ν•œλ‹€. 좜ꡭ μ „ λ§ˆμ§€λ§‰ μ‡Όν•‘ μΈλ””μ• λ‚˜ ν΄λ¦¬μŠ€μ— μžˆλŠ” μ•„μšΈλ ›μ„ κ°”λ‹€. ν΄λ‘œμ—μ„œ μ„ λ¬Όλ‘œ 쀄 μ˜·μ„ 사고 이곳 μ €κ³³ λŒμ•„λ‹€λ…”λ‹€. λ―Έκ΅­ μ•ˆλ…•~, ν•œκ΅­ μ•ˆλ…•! 미ꡭ에 μžˆμœΌλ©΄μ„œ ν•œκ΅­ κ°€κ³  μ‹Άλ‹€λŠ” 생각이 ꡴뚝 κ°™μ•˜λŠ”λ° 막상 ν•œκ΅­μœΌλ‘œ λŒμ•„κ°€λ €λ‹ˆ λ­”κ°€ 아쉬웠닀. μ‹œμΉ΄κ³ λ‚˜ λ‰΄μš•μ„ λͺ» κ°€μ„œ κ·ΈλŸ°κ±΄κ°€.. πŸ₯Ί 미ꡭ을 올 κΈ°νšŒκ°€ μƒκΈ°κ²Œ λœλ‹€λ©΄ κ·Έ 땐 λŒ€λ„μ‹œλ₯Ό κΌ­ 가봐야겠닀. κ·Έλž˜μ„œ μ–΄λ• μ–΄μš”? 전에 μ–˜κΈ°ν–ˆλ˜ κ²ƒμ²˜λŸΌ ν”„λ‘œμ νŠΈλ₯Ό μ§„ν–‰ν•˜λ©΄μ„œ 개발과 논문을 λͺ¨λ‘ ν•΄κ²°ν•΄μ•Ό ν–ˆκΈ°μ— 생각보닀 많이 λ°”μ˜κ²Œ μ›€μ§μ˜€λ˜ λ―Έκ΅­ μƒν™œμ΄μ—ˆλ‹€. λ…Όλ¬Έ... μ§„μ§œ 이 λ†ˆμ˜ λ…Όλ¬Έ λ•Œλ¬Έμ— λ‚˜λ¦„λŒ€λ‘œ 슀트레슀λ₯Ό λ°›μ•˜κ³  λ‚΄κ°€ μƒκ°ν–ˆλ˜ λ―Έκ΅­ μƒν™œκ³Ό 쑰금 λ‹¬λžκΈ°μ— 미ꡭ에 μžˆμ„ λ•ŒλŠ” 'ν•œκ΅­ ..

kodo_o
🍎🍏