서준수 /@@2Kn8 많은 사람들에게 사랑받는 프로그램을 만드는 것이 꿈인 SW 개발자, 전 세계를 여행하고 싶은 집돌이. SW 개발, 문득 떠오르는 생각이 뒤섞인 글을 씁니다. ko Tue, 07 Jan 2025 13:56:21 GMT Kakao Brunch 많은 사람들에게 사랑받는 프로그램을 만드는 것이 꿈인 SW 개발자, 전 세계를 여행하고 싶은 집돌이. SW 개발, 문득 떠오르는 생각이 뒤섞인 글을 씁니다. //img1.daumcdn.net/thumb/C100x100.fjpg/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F2Kn8%2Fimage%2FxqAM7JczuqxWjxdwQobGzrVN3_E /@@2Kn8 100 100 컴포즈 멀티플랫폼 iOS 시뮬레이터 선택 안 될 때 /@@2Kn8/233 컴포즈 멀티플랫폼&nbsp;개발 환경을 설정하고 Kotlin Multiplatform Wizard를 통해서 새 프로젝트를 생성했다. 멀티플랫폼이니 iOS도 함께 실행해 보고 싶었다. 안드로이드는 별문제 없이 실행되었는데 iOS는 또 말썽이다. (예전에 플러터에서도 iOS 빌드는 바로 되지 않았다. 그렇다&nbsp;나는 iOS 알못이다.)&nbsp;빌드를 하니 시뮬레이터 초기화에 실패<img src= "https://img1.daumcdn.net/thumb/R1280x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F2Kn8%2Fimage%2FWUzuqg3KYUiYA3hJUXWfUfBJiPg.png" width="500" /> Mon, 06 Jan 2025 14:58:21 GMT 서준수 /@@2Kn8/233 AI와 글쓰기: 생산성과 사색의 경계 /@@2Kn8/232 어떤 이미지는 보는 순간 AI가 생성한 것 같다는 느낌이 들 때가 있다. 사람의 그림체처럼 AI도 묘한 특유의 AI체가 있다. 글도 마찬가지다. 왠지 모르게 AI가 쓴 글 같다는 느낌을 주는 문체가 있다. 이것이 좋다, 나쁘다를 말하려는 것이 아니다. 그럴 자격도 없고, 블로그에 AI가 생성한 이미지를 잘 사용하고 있다. 예술의 분야로 봤을 때 사람이 아<img src= "https://img1.daumcdn.net/thumb/R1280x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F2Kn8%2Fimage%2Fph_b1KZFTvY5O5yHiKm7caUz83k.png" width="500" /> Fri, 03 Jan 2025 18:07:39 GMT 서준수 /@@2Kn8/232 개발자가 더 큰 성장을 이루는 방법 - feat. 교육자 /@@2Kn8/229 개발자가 더 큰 성장을 이루는 방법 (feat. 교육자) SW 개발 생태계에서 성장이라는 키워드가 참 많이 보이는 것 같다. 물론 다른 직군에서도 많은 사람들이 지속적인 발전을 추구하고 있을 것이라고 생각한다. 성장 마인드셋의 주요한 사항 중 하나는 타인을 경쟁자가 아닌 함께 성장하는 동료로 보는 것이다. 신기하게도 SW 업계는 공유 문화에 아주 익숙하<img src= "https://img1.daumcdn.net/thumb/R1280x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F2Kn8%2Fimage%2Fk5DJHOXh_DlLmQ31zhCkG-OEVUQ.png" width="500" /> Wed, 01 Jan 2025 17:23:55 GMT 서준수 /@@2Kn8/229 [블로그 글쓰기 챌린지: Writing Mob 0회] - 2024년 회고 /@@2Kn8/230 [블로그 글쓰기 챌린지: Writing Mob 0회] [블로그 글쓰기 챌린지: Writing Mob]에 대한 간단한 안내 본격적인 기술 글쓰기 전에 2024년 회고를 작성하였습니다. 프리퀄 정도가 되겠네요. 많은 관심과 응원 부탁드립니다. 좋아요 또는 댓글은 각 블로그에 직접 남겨주시면 좋겠습니다. 아래 내용은 LilysAI를 통해 요약하였습니다. 베<img src= "https://img1.daumcdn.net/thumb/R1280x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F2Kn8%2Fimage%2FPJ7mNDxF8VTRcngo28gRBiZyF3Y.png" width="500" /> Tue, 24 Dec 2024 04:02:34 GMT 서준수 /@@2Kn8/230 [블로그 글쓰기 챌린지: Writing Mob] /@@2Kn8/231 [블로그 글쓰기 챌린지: Writing Mob] 우아한테크코스 크루들이 수료 후에도 학습을 이어갈 수 있는 작은 환경을 조성하기 위해서 만든 소모임입니다. 무엇을 하는 모임인지 간단히 소개하기 위해 모집글과 첫 공지글을 공유합니다. 다음은 모집할 때 쓴 글입니다. 틀린 부분이 있을까 봐 블로그에 글을 쓰는 것을 망설인 적이 있나요? 하지만 생각보다 사<img src= "https://img1.daumcdn.net/thumb/R1280x0.fjpg/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F2Kn8%2Fimage%2F_JTl4Hpri4GRh3haqRe0IsPdeYU" width="500" /> Tue, 24 Dec 2024 01:05:35 GMT 서준수 /@@2Kn8/231 2024년 회고록 /@@2Kn8/226 Intro 회고록을 쓰기 전 작년 회고록을 살펴보다가 깜짝 놀랐다. 인트로는 그냥 그대로 복사해도 될 정도로 똑같은 한 해였다. 올해도 시간이 무서울 정도로 빨리 흘러갔는데 작년에도 마찬가지였기 때문이다. 올해는 기존과 비슷한 포맷으로 회고를 진행하되, 작년 회고에서 도전해 보기로 한 Action Item에&nbsp;대한 점검을 추가로 해보려고 한다. 지난 5년간<img src= "https://img1.daumcdn.net/thumb/R1280x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F2Kn8%2Fimage%2F6C2lQjvNfY1dpApxEvB3xIJx7TE.png" width="500" /> Sat, 21 Dec 2024 15:21:00 GMT 서준수 /@@2Kn8/226 코루틴 공유 자원 관리 - 코틀린 코루틴(13) /@@2Kn8/227 코루틴 공유 자원 관리 스레드와 마찬가지로 코루틴도 비동기로 동작하기 때문에 공유 자원 관리에 대한 고민이 필요하다. 다시 말하면 공유 자원 관리가 코루틴만의 특별한 요소가 아니라는 것이다. JVM 스레드 공유 자원 JVM 메모리 구조를 기준으로 스레드가 공유하는 자원은 메서드 영역(Method Area)과 힙 영역(Heap Area)이다. 메서드 영역<img src= "https://img1.daumcdn.net/thumb/R1280x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F2Kn8%2Fimage%2FKPo9_S_DqmG3ygYj3OnJXfPGl_g.png" width="500" /> Wed, 11 Dec 2024 17:39:42 GMT 서준수 /@@2Kn8/227 프로그래밍에 정답은 없다 - 트레이드오프 /@@2Kn8/228 대부분의 개발자가 이미 느끼고 있듯이 프로그래밍에 정답은 없습니다. 장점이 있으면 단점이 있을 때도 비일비재합니다. 트레이드오프의 영역이죠. 그런데 종종 정답을 찾으려는 경우가 있습니다. 예를 들어 '어떤 경우에 특정 아키텍처 패턴을 사용해야 하는가?'와 같은 질문에 정답이 있을까요? 이론적으로는 어떤 아키텍처 패턴은 이러저러한 경우에 사용하면 좋다는 기<img src= "https://img1.daumcdn.net/thumb/R1280x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F2Kn8%2Fimage%2FzYHTPxP73zovF_eaXdIjkOCEV2E.png" width="500" /> Fri, 06 Dec 2024 15:46:02 GMT 서준수 /@@2Kn8/228 단언적 표현은 어렵다 - 주관편 /@@2Kn8/225 나에게 있어 확실하게 단언하는 것은 생각보다 어려운 일이다. 위 문장도 그렇다. 단언적 표현이지만 '나에게 있어'라는 말을 붙임으로써 쓸 수 있는 단언적 표현이다. 주체가 나이기 때문에 확실하게 말할 수 있다. '~인 것 같다.'와 같은 표현을 자주 쓰는 것은 좋지 않다고 한다. 그걸 알면서도 나는 오히려 의도적으로 쓰는 경우도 많다. 여러 가지 경우에 <img src= "https://img1.daumcdn.net/thumb/R1280x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F2Kn8%2Fimage%2FJVoQFjOBEHd2NURmMvdmlXTNJ8M.png" width="500" /> Thu, 28 Nov 2024 16:41:06 GMT 서준수 /@@2Kn8/225 코루틴 SupervisorJob - 코틀린 코루틴(12) /@@2Kn8/224 코루틴 SupervisorJob SupervisorJob은 자식 코루틴에서 발생한 예외에 영향을 받지 않는다. 이 말을 이해하기 위해서 먼저 앞서 살펴봤던 예외 전파에 대해서 다시 살펴보자. Job의 예외 전파 코루틴 예외 처리에서 예제 코드를 기반으로 구조화된 동시성으로 인해 발생하는 예외 전파에 대해 살펴봤다. 아래 예제 코드는 그때 봤던 코드에 c<img src= "https://img1.daumcdn.net/thumb/R1280x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F2Kn8%2Fimage%2FJs71oaUrVupqJJMNEFLFaO7r6FY.png" width="500" /> Thu, 21 Nov 2024 03:06:10 GMT 서준수 /@@2Kn8/224 코루틴 예외 처리 (Exception Handling) - 코틀린 코루틴(11) /@@2Kn8/223 코루틴 예외 처리 (Exception Handling) 예외에는 다양한 종류가 있지만 앞서 코루틴에서 발생하는 독특한 예외를 본 적이 있다. 바로 코루틴이 정상적으로 취소될 때 발생하는 CancellationException이다. 코루틴 취소에 관해서는 코루틴 Job에서 처음 살펴보았다. 그때의 코드를 다시 살펴보자. 실행 결과는 Hello, 이다. K<img src= "https://img1.daumcdn.net/thumb/R1280x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F2Kn8%2Fimage%2Fwp7nviXWkQSi8TSp3yo-byAIuEA.png" width="500" /> Mon, 11 Nov 2024 07:45:50 GMT 서준수 /@@2Kn8/223 코루틴 디스패처 (Dispatcher) - 코틀린 코루틴 (10) /@@2Kn8/222 코루틴 디스패처 (Dispatcher) 코루틴 취소에서 다룬 예제들은 launch의 파라미터로 Dispatchers.Default라는 것을 넘겨주고 있다. 그에 대해서는 일단 고려하지 않았으나 사실 정확한 이해를 위해서는 해당 부분도 무시할 수 없다. Dispatchers.Default는 코루틴 디스패처의 하나이다. 그러면 코루틴 디스패처가 무엇인지 또 <img src= "https://img1.daumcdn.net/thumb/R1280x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F2Kn8%2Fimage%2FcrjX5hfcFt470W-ZG7pE6PPGz60.png" width="500" /> Mon, 21 Oct 2024 19:25:35 GMT 서준수 /@@2Kn8/222 코루틴 취소 (Cancellation) - 코틀린 코루틴 (9) /@@2Kn8/221 코루틴 취소&nbsp;(Cancellation) 코루틴 Job에서 cancel()과 join()을 사용하여 코루틴을 취소하는 방법에 대해서 간단히 살펴봤다. 코루틴을 취소하기 위해서는 Job 객체의 cancel() 함수를 이용했다. 그렇다면 다음 코드는 어떤가? 원하는 대로 취소가 되는가? (Dispatchers.Default라는 처음 보는 것은 일단 무시하자.)<img src= "https://img1.daumcdn.net/thumb/R1280x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F2Kn8%2Fimage%2FmHbR5qh56iC8V5T_Y2n2jUQ_7Uk.png" width="500" /> Mon, 14 Oct 2024 17:18:40 GMT 서준수 /@@2Kn8/221 관심사 과몰입 /@@2Kn8/220 예전부터 전자기기를 좋아했던 나는 PC방 등 내 컴퓨터가 아닌 컴퓨터를 사용할 때 항상 PC 사양을 확인하곤 했다. 관심이 없는 사람은 그저 본인의 사용 목적에 지장 없이 잘 구동되면 그만인 사항이다. 내가 관심이 있다고 해서 남한테도 그것이 관심의 대상인 것은 아니고 중요한 문제는 더더욱 아니다. 그러니 남에게 자신의 관심사를 관철시키려고 할 필요가 없<img src= "https://img1.daumcdn.net/thumb/R1280x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F2Kn8%2Fimage%2FBDOoh7yYAXxTX-_Xgj2UU5_PzQM.jpg" width="500" /> Mon, 07 Oct 2024 18:31:05 GMT 서준수 /@@2Kn8/220 Razer Kishi V2 게임 컨트롤러 /@@2Kn8/219 이것저것 글을 쓰고 싶은 제품은 있지만 귀찮아서 거의 쓰지 못하고 있다. 이 매거진에는 2년 4개월 만에 쓰는 글이다. 이번엔 슬픈 사연이 있는 제품이라 강한 동기부여가 되었다. 올해는 유독 바빠서 아직 제대로 된 휴가를 떠나지 못했다. 그래서 일상에서 휴식을 취할 수 있는 수단을 찾게 된 것 같다. 뜬금없이 5년 전인 2019년에 잠깐 플레이했던 초딩겜<img src= "https://img1.daumcdn.net/thumb/R1280x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F2Kn8%2Fimage%2F0ZJAkKS40Ah0RmJZvkE4rqMymqE.png" width="500" /> Mon, 26 Aug 2024 18:10:50 GMT 서준수 /@@2Kn8/219 카카오테크 캠퍼스 2기 강의 회고 /@@2Kn8/218 강사로 참여한 카카오테크 캠퍼스 2기 안드로이드 과정이 끝났습니다. 6주간 반복되던 일정이 사라지니 갑자기 시간이 붕 뜨는 기분이 들었습니다. 지난 8월 1일이 마지막 수업이었습니다. 그 사이 잠시 숨 고르는 시간을 가졌습니다. 나름대로 고군분투했던 지난 시간을 간략하게 회고해 보려고 합니다. 1) 수업 방식 전체 과정을 온라인으로 진행한 것은 이번이 <img src= "https://img1.daumcdn.net/thumb/R1280x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F2Kn8%2Fimage%2FqixcQV7NgpzFWiCUshNqjmrsvvY.png" width="500" /> Tue, 06 Aug 2024 16:44:05 GMT 서준수 /@@2Kn8/218 안드로이드 Hilt - Android Jetpack /@@2Kn8/217 Hilt는 의존성 주입 라이브러리이다. 그래서 Hilt에 대해서 알고 싶다면 먼저 의존성 주입이라는 개념을 알아야 한다. 의존성 주입 의존성 주입(Dependency Injection, DI)은 객체가 필요로 하는 의존성을 외부에서 제공하는 디자인 패턴이다. 이를 통해 클래스 간의 결합도를 낮추고, 유닛 테스트를 용이하게 하며, 코드의 재사용성과 확장성을<img src= "https://img1.daumcdn.net/thumb/R1280x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F2Kn8%2Fimage%2FRdeXD3gKY9W1cylSUCzPU_NtPic.png" width="500" /> Mon, 22 Jul 2024 04:01:21 GMT 서준수 /@@2Kn8/217 안드로이드 Room - Android Jetpack /@@2Kn8/216 Room이란? 안드로이드는 SQLite라는 경량화 데이터베이스를 기본적으로 제공한다. Room은&nbsp;SQLite를 추상화하여 데이터베이스를 좀 더 쉽고 편리하게 사용할 수 있도록 해주는 라이브러리다. 대표적인 장점은 다음과 같다. 1. SQL 쿼리를 컴파일 시간에 검증하여 런타임 오류의 가능성을 줄여준다. 2. 보일러플레이트 코드를 줄여준다. 주요 구성요소<img src= "https://img1.daumcdn.net/thumb/R1280x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F2Kn8%2Fimage%2FBOzwxCy5pWN_irvpZVTDhwdPJtY.png" width="500" /> Sat, 20 Jul 2024 17:55:19 GMT 서준수 /@@2Kn8/216 퍼포먼스가 바닥입니다만. /@@2Kn8/215 내가 프로그래밍을 잘하지 못한다고 생각하는 큰 이유 중 하나는 같은 시간을 들였을 때 잘하는 사람보다 아웃풋이 적다고 느끼기 때문이다. 그럼에도&nbsp;프로그래밍이 매력적인 이유는 아웃풋이 나온다는 것이다. 시간이 오래 걸리더라도. 비단 프로그래밍뿐 아니라 여러 가지 일에서 스스로 게으르다고 여기는&nbsp;이유의&nbsp;포인트도 비슷하다. 할 일을 빨리 끝내고 휴식을 즐기는<img src= "https://img1.daumcdn.net/thumb/R1280x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F2Kn8%2Fimage%2FtpFt3Dwg3Qm3WKNGqvHlmHzM5Cw.jpg" width="500" /> Fri, 05 Jul 2024 10:15:53 GMT 서준수 /@@2Kn8/215 내가 우리 팀에 필요한 사람일까? /@@2Kn8/214 최근에 잠깐 이런 생각이 들었다. 나는 이 조직에 필요한 사람일까? 예전에도 비슷한 생각을 했지만 조금 달랐다. 그때는 이렇게 생각했다. 내가 이 조직에 '꼭' 필요한 사람일까? 그리고 답은 '아니다'였다. 내가 대기업에서 회사 생활을 처음 시작했기 때문에 규모가 큰 조직 구조에 익숙해서 그럴지도&nbsp;모른다. 혹자는 흔히 대기업은 사람을 언제든 갈아 끼울<img src= "https://img1.daumcdn.net/thumb/R1280x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F2Kn8%2Fimage%2FE1E1e2NeoSgpZuaImRwd4C9Viv4.jpg" width="500" /> Fri, 21 Jun 2024 00:05:23 GMT 서준수 /@@2Kn8/214