이번 분기에도 정말 다채로운 일들이 일어났던 것 같다. 후후. 요즘은 인생이 참 즐거워 즐거워.ㅤ이번에 나의 자기개발 알고리즘 속을 지나다니면서 이런 내용의 영상을 봤다.하루가 다 끝날 때 3가지를 느껴야 하루를 잘 보낸 것이다.1) 오늘 한 일이 보람차다2) 그런데 힘들다3) 그래서 집에 가서 쉬고싶다 이번 한 분기는 보람을 느끼는 순간이 유난히 많았던 것 같다. 힘들었나..? 사실 힘들지는 않았다. 어쩌면 이번에는 챌린지 존을 누비기보다는 내 컴포트 존을 넓히려는 노력을 좀 많이 했던 것 같다. 덕분에 변화한 내 삶의 환경에 대해서 어느정도 적응이 완료되었는데, 다시 내가 덤벼볼 수 있는 것들을 찾아 나서야겠다는 생각이 이 글을 쓰면서 모락모락 피어오르는 것 같다.ㅤ인턴을 시작했다!너무나도 다행히, ..
이번에 Enum 간의 타입 변환을 하는 새로운 방식을 찾아서, 기록으로 남겨두려고 한다. 생각도 못했던 방식… 오호…ㅤ대충 상황은 이런 느낌이였다.레이어 분리를 위해 동일한 상태 값에 대해서 도메인 레이어에서는 Entity를 위한 enum 타입을 사용해주고 있었고, 데이터 레이어에서는 Model을 위한 enum 타입을 사용해주고 있었다.enum MyDataTypeForEntity { A, B, C, D, none }enum MyDataTypeForModel { A, B, C, D, none }ㅤEntity와 Model에서는 이 두 타입을 각각 사용해 정의해주고 있었고, 나머지는 대부분 원시값으로 속성을 사용해주고 있었다.class MyEntity { final String name; final MyD..
Flutter 3.24 버전에서부터 Swift Package Manager (이하 Swift PM 또는 SPM) 을 패키지 관리 도구로 공식적으로 지원하기 시작했다!ㅤ회사 내에서 플러터 업데이트나 새로운 기술에 대해 호기심이 많으신 팀원분이 계신데, 내가 이전에 iOS 개발에 대한 경험이 있다보니 “SPM을 우리도 도입하면 괜찮을까? 어떤 장점들이 있을까?” 에 대해서 나에게 물어봐주셨다. 나도 요런 부분들이 궁금하기도 하고, 애플과 플러터의 조합에 호기심도 생겨서 SPM 적용에 대한 정보 서치와 현 시점에서의 생산성 개선 정도에 대해서 테스트를 해봤다.ㅤ그 결과와 내 생각은 글 하단에 작성해뒀다!ㅤ여기 Medium 글을 확인해보면, 플러터 3.24 버전부터 Swift PM을 지원한다. 아직 Early ..
이번에 코드를 두드리면서 예상치 못한 코드 에러를 만났다.ㅤㅤvoid 반환형에 관련된 문제였는데, 대략적으로는 아래의 상황이다. 함수는 void 타입을 반환하는 함수가 하나 정의되어 있었다.Either foo() { if (조건에 따라) { return null; } else { return Failure(...); }}ㅤㅤ그리고 나는 이 값을 받아 void 타입의 함수가 정상적으로 잘 종료되었는지 체크해보려 했다.final result = foo();if (result가 null) { ㅤㅤ그런데, result의 type이 void 이기 때문에, 이 값을 확인할 수 없다는 에러가 자꾸 발생했다."this function has a return type of..
이번에 회사 인턴을 시작하고, 제일 처음으로 담당하게 된 미션은 테스트코드를 작성하는 것이였다. 난생 처음 테스트코드를 작성해보는 것이라 사실 좀 걱정을 했었다. 열심히 기존 코드들을 보면서 클린 아키텍처를 기반으로 나뉘어있는 레이어 위 기능들에 대해서 각각 테스트코드를 작성하고 합치는 작업을 공부하고 수행했고, 생각했던 것보다 내가 얻어가는게 많은 테스크였다고 생각이 들었다.우선 테스트코드를 작성하기 위해서 프로젝트 내에서 다음의 내용들을 파악해야 했다.어떤 구조로 프로젝트가 구성되어 있는가어떤 패키지들을 사용하고 있고, 그 사용 방법은 무엇인가프로젝트 내에서 사용하는 커스텀 타입들은 어떤게 있고, 내부 값들을 이용하려면 어떻게 접근해야 하는가프로젝트에서 사용하는 다양한 API, 상수 등은 어떻게 관리..
이번에 면접을 진행하면서 플러터에서 화면 렌더링의 과정을 이해하고 있는지에 대한 질문을 받았다. 플러터에서 실행하려는 코드가 엔진을 통해 네이티브로 전달되는 과정은 이전에 애플 로그인을 붙이는 과정에서 고생하면서 학습을 한 상태였는데, 화면을 그리는 과정에 대해서는 잘 알지 못했기에 그냥 ‘엔진 통해서 그려주고, 내부적으로 위젯트리, 상태트리 만들어서 렌더링한다‘ 정도로 답변을 얼버무렸었다.ㅤ면접 질문들을 복기하면서 내가 답변 못한 부분들을 채우고 있었는데, 플러터 화면 렌더링 매커니즘에 대해서 아래 글에서 그 내용을 잘 정리해뒀기에, 이를 공부하면서 나름대로 다시 정리를 한 번 해보려고 한다!https://www.alibabacloud.com/blog/exploration-of-the-flutter-r..
이번에 Flutter Engine에 대해 계속 내용들을 공부하고 있는데, 자꾸 헷갈리는 내용이 있어서 계속 찾아보다가 그냥 글로 정리했다.ㅤ바로 Dart는 Native Machine Code로 컴파일 되지만, 실행 시점에 Dart VM은 여전히 사용된다는 것이다.내가 배웠던 바에 따르면 Flutter의 장점이 Native Machine Code로 변환되어 실행이 되기 때문에, VM을 사용하는 리액트 같은 JS 언어보다 성능적으로 우수하다는 것이였는데, 그 배움이 부정당하는 듯한 문장이였다.ㅤDart 가 VM 을 사용한다고…?ㅤ그래서 GPT 한테도 열심히 물어봤다. 근데, 더 헷갈리는 답변인, “Native와 VM이 결합되어 사용됩니다” 라는 두루뭉술한 답변을 남겼다. 아니 이게 무슨말이냐 GPT왈 : “..
ㅤ플러터 엔진의 C, C++ 코드는 iOS 환경에서는 LLVM 을 통해 컴파일이 된다고 한다.읭 LLVM??ㅤLLVM이라는 키워드는 Xcode에서 개발을 진행하면서 종종 봤던 키워드이다. (LLDB도 많이 봤던 것 같다!) 공부를 하다보니 clang 이라는 키워드와 LLVM 이라는 키워드가 자주 나왔는데, 평소에는 자주 지나쳤던 이 이름들에 대해서 한 번 정리해보는 시간을 가지면서, 그 흔적을 여기에 정리해두려고 한다 :)ㅤLLVM 이란?LLVM 은 컴파일러와 툴체인의 집합이며, 두문자가 아니라, LLVM 자체가 그냥 프로젝트의 이름이다. (오호) 물론 처음에는 low-level virtual machine 이라는 이름에서 출발했지만, 기능이 확장하면서 풀네임이 그 기능을 다 표현해내지 못하면서 두문자만..
벌써 올해도 절반이나 지나가버렸다. 그치만, 올해에는 벌써 배운 것도 너무 많고 이룬 것도 너무 많아서 좀 뿌듯한 기분!ㅤ달리기를 시작했다.3월부터 달리기를 시작했다. 처음에는 진짜 1km 6:30 페이스로 조금만 뛰어도 너무너무 숨차고 힘들었는데, 매일 주말 일요일에 여의도 공원을 달리고, 아침 6시 30분에 크로스핏 하러가기 전에 3-5km 달리기를 하거나 40분 사이클을 주 2~3회 하다보니 체력이 많이 늘었다. 달리기 실력에도 욕심도 생기고, 또 달릴 때 그 속도감이 주는 쾌감이 좋아서 꾸준히 하게 되었던 것 같다.ㅤ매번 달리기를 하러 나갈 때 마다 체력이 올라오는게 느껴졌고, 630 그룹에서 500 그룹으로 올라가면서 “내가 체력이 그지였던건 그냥 유산소를 안해서였구나”를 뼈저리게 느꼈다. 진짜..
플러터에서 애플 로그인 회원탈퇴를 할 수 있는 로직을 아래에 작성해놨다!! 필요한 사람은 참고하자!!ㅤ 갸아아아악 진짜 이걸로 고생했다. 🥺🥺💦ㅤ이번에 앱 출시를 위해서 앱스토어에 심사를 올렸다가, 회원가입이 있으면 회원탈퇴도 있어야 한다는 심사 기준으로 인해 리젝을 받았다.당연히 Sign_In_With_Apple 패키지에서 해당 기능을 함수로 구현해뒀을 것이라 생각하고, 바로 회원탈퇴 기능 구현 후 심사 재제출을 하려고 했는데, 오잉? 그런 기능은 제공되고 있지 않았다. (흑흑따)ㅤ파이어베이스나 다른 기능들처럼 또 다른 패키지의 방식으로 해당 기능을 제공할 것이라고 생각했는데, 왠걸? 특정 URL로 POST 쿼리를 날려야 이를 구현해준다고 되어있다. (나 웹 방식은 진짜 감도 안온단말이야…) 그치..