서준수 /@@2Kn8 많은 사람들에게 사랑받는 프로그램을 만드는 것이 꿈인 SW 개발자, 전 세계를 여행하고 싶은 집돌이. SW 개발, 문득 떠오르는 생각이 뒤섞인 글을 씁니다. ko Thu, 26 Dec 2024 21:18:26 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 [블로그 글쓰기 챌린지: 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] 우아한테크코스 크루들이 수료 후에도 학습을 이어갈 수 있는 작은 환경을 조성하기 위해서 만든 소모임입니다. 무엇을 하는 모임인지 간단히 소개하기 위해 모집글과 첫 공지글을 공유합니다. 다음은&nbsp;모집할 때 쓴 글입니다. 틀린 부분이 있을까 봐 블로그에 글을 쓰는 것을 망설인 적이 있나요? 하지만 생각보다 사람들<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 저는 LG G5 실패의 공범자입니다. /@@2Kn8/213 전자기기를 좋아해서 테크 유튜버를 많이 구독하고 있다. 어느 날 절대 클릭하지 않을 수 없는 영상을 발견했다. 심지어 업로드된 지 몇 시간이 채 지나지 않은 따끈따끈한 영상이었다. https://www.youtube.com/watch?v=mHrIwtdV7VI 내가 이 영상을 클릭할 수밖에 없었던 이유는 LG G5(이하 G5) 사용자였기 때문... 이라<img src= "https://img1.daumcdn.net/thumb/R1280x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F2Kn8%2Fimage%2Fg5BjyYgmG31TYt6jrUlDP-UjL9o.png" width="500" /> Thu, 13 Jun 2024 03:07:24 GMT 서준수 /@@2Kn8/213 AI와 개발자: 협업의 새로운 패러다임 /@@2Kn8/212 바야흐로 대 AI 시대이다. 해외 빅테크 기업들은 AI 개발자들에게 파격적인 연봉을 지급하며 인력 채용에 힘쓰고 있다. 비단 AI 개발자뿐만 아니라 서비스 개발자에게도 기회의 시기가 아닌가 싶다. 과거에 AI 서적(좀 더 정확히는 ML)을 보면 온통 AI의 원리에 대해 이야기하는 내용이 많았다. 복잡한 수식도 가득한 누가 봐도 어려운 내용이었다. 도통 알 <img src= "https://img1.daumcdn.net/thumb/R1280x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F2Kn8%2Fimage%2FHtyi5opKi2VRLtK642SGe4deo9U.jpg" width="500" /> Sun, 05 May 2024 15:03:10 GMT 서준수 /@@2Kn8/212 안드로이드에는 MVC 아키텍처 패턴이 없다 /@@2Kn8/211 안드로이드에서 대표적인 아키텍처 패턴으로 MVC, MVP, MVVM이 거론된다. 사실상 MVC 패턴은 거의 사용되지 않는다. 더 좋은 아키텍처 패턴이 등장해서 사장된 것일 수도 있지만 여전히 다른 분야에서는 많이 사용되는 패턴으로 알고 있다. 그렇다면 왜 안드로이드에서는 MVC 패턴을 사용하지 않을까? 더 좋은 패턴이 있기 때문이라면 그 말에는 상대적으로<img src= "https://img1.daumcdn.net/thumb/R1280x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2F2Kn8%2Fimage%2FYMv5wdYsWMzBpq9PyvkM2QDnAnc.jpg" width="500" /> Sat, 27 Apr 2024 12:33:01 GMT 서준수 /@@2Kn8/211