음악 플레이리스트에 Array와 List 중 어떤 걸 사용할까?
·
CS
라는 질문을 면접 때 받았습니다. 부끄럽게도 답하지 못했습니다. 둘 중 하나를 고를 수 있었겠지만 근거가 없으니 답할 수 없었습니다. 이대로 CS를 내버려두면 앞으로의 면접도 자신있게 나서지 못할 것 같다는 생각이 들었습니다. 모른다고, 시간이 없었다고 핑계 대지 말고 자신있게, 솔직하게 답하기 위해 오늘도 정리를 시작합니다. Array(배열, 순차 리스트)질문에 대한 답을 내리려면 자료구조의 대한 이해가 바탕이 되어야 합니다. Array는 우리가 자주 사용하는 Swift의 Array와 동일합니다. 순서가 있는 컬렉션이죠.Array가 순서를 가질 수 있는 이유는, 실제 메모리 상에서도 연속적으로 저장되어 있기 때문입니다.(논리적 저장 순서 == 물리적 저장 순서) 이 덕분에 순서는 인덱스(Index)로 ..
잘하기 vs 자라기 '함께 OOO'를 읽어봤습니다
·
개발 서적
2024년 07월 14일에 작성한 글을 옮겨왔습니다. 🧐 책을 읽게 된 이유요즘 책 읽기가 부쩍 재밌어졌다! 개발 공부를 위해 공식 문서, 블로그를 떠돌아다니는 것도 재밌지만 책 읽기만의 매력을 느꼈달까?,,, 핵심 주제에 대해 심도 있게 파고들며 많은 생각을 할 수 있게 해준 다는 점이 가장 크다고 느낀다. 가끔은 반복되는 말을 하는 것 같은 느낌도 들지만, 그래서 더 소중하다! 함께 자라기에서도 언급했듯이, 무슨 책을, 얼마나 많은 책을 읽었다고 자랑하는 것이 아닌 여기서 얻은 지식을 얼마나 어떻게 활용했는지를 돌아보려면 그 맥락에 대한 깊은 이해가 필요하기 때문이다. 역시 나는 책을 많이 읽는 것보다, 책을 잘 읽는 것에 더 관심이 간다. 아카데미에서도 꽤나 유명한 '함께 자라기'를 지나가듯 들었..
클린 아키텍처, 소프트웨어 구조와 설계의 원칙을 읽어봤습니다
·
개발 서적
2024년 06월 23일 작성한 글을 옮겨왔습니다. 🧐 책을 읽게 된 이유iOS 개발자로 성장해나가며 최근 가장 관심 있었던 주제는 단연 '아키텍처', 즉 구조 설계였다. 다른 사람들과 함께 협업하는 것, 어제의 나와 프로덕트를 만들어나가는 것, 개발자로서의 의미 모두 구조 설계라는 맥락으로 귀결됐고 배움의 필요성을 절실히 느끼게 되었다. 그러던 중 애플 아카데미 내 '클린 아키텍처 책 읽기' 스터디에 참여하게 되었고, 자연스레 책을 접하게 되었다. 꽤나 폭력적으로 생긴 표지(?)와 어렵다는 악명,, 을 뒤로하고 끝까지 읽을 수 있었던 이유는 함께 읽어서였던 것 같다. 열정적으로 서로의 생각을 나누고, 토론하며 성장해나감을 느꼈고 이 과정을 이끌어준 모수에게 감사 인사를 올린다! 🐰 느낀점 적어보기처..
객체지향의 사실과 오해(feat. 토끼책 🐰)를 읽어봤습니다
·
개발 서적
2024년 3월 31일 작성한 글을 옮겨왔습니다. 🧐 책을 읽게 된 이유그 유명한 토끼책을 추천 받아 읽게 되었다. '객체지향'이라는 단어와 언어(Swift)를 자연스럽게 사용하면서도 정작 그 의미에 대해 잘 알지 못했었는데, 멋있는 분이 추천해주셔서 마음 먹을 수 있게 되었다. 원래 구매해서 읽으려고 했는데 운이 좋게도 아카데미 기숙사 룸메이트가 마침 가지고 있어 빌려 읽을 수 있었다! 🐰 느낀점 적어보기객체지향의 근본적인 의미를 이해하는 것이 왜 어려운지 알게 되었다. 객체지향을 설명할 때 '실제 세계의 모방'을 예시로 들곤 하는데, 이 때문에 내가 원래 가지고 있던 관념과 연결시키기 어려웠던 것 같기도 하다. (실제 세계를 모방하다보면 이해할 수 없는 것들이 많기 때문에) 이 책에서 객체지향은 ..
내일배움캠프 SwiftRise 소소한 후기
·
대외활동
오늘은 스파르타 내일배움캠프에서 주최한 SwiftRise 행사에 다녀왔습니다! 예전에 신청해 놓고 잊고 있었는데 감사하게도 당첨되어 다녀올 수 있었습니다. 무료 컨퍼런스기도 해서 요즘 같이 취준 준비로 고민이 깊어질 때 리프레쉬 하기 좋았던 것 같습니다.(샌드위치와 스콘 맛있게 잘 먹었습니다 🥪) 프로그램 메모 정리1. 주니어 시절 이야기 / 권문범님오픈소스 많이 뜯어보기(가고 싶은 회사가 있다면 어떤 기술 스택 사용하는지 보고 딥다이브 해보기)파이썬, 루비와 같은 언어를 다룰 줄 아는 것도 꽤나 많은 도움이 될 것 2. Automatic Text Replacemen  / 그린 님TextField에 하이픈 등 특수기호가 들어갈 수 있는 상황에서 글자 수 제한과 같은 요구사항 있을 시 해당 개념 살펴보기..
행복의 의미
·
꾸준히 글쓰기
어제는 밤 잠을 설쳤다.내가 정말 하고 싶은 일은 무엇일까?하고 싶은 일을 찾으면 행복해질까?지금 나는 행복하지 않은가? 생각하지 않으려 해도 잔잔한 파도처럼 끊임없이 밀려온다.피곤하지만 이런 생각이 싫지많은 않다. 나는 왜 회사에 들어가려고 할까?회사에 들어가 어떤 일을 기대하고 있는 걸까?그저 매 달 들어오는 돈으로 생계유지를 하기 위한 걸까?매 달 돈이 들어온다면 나는 회사에 들어가지 않아도 되는 걸까? 행복은 잔잔히 그리고 고요히 찾아온다고 한다.어쩌면 지금 나는 행복한 것은 아닐까?아니면 행복해지기 위해 발버둥 치고 있는 걸까.
타입 메서드 vs 싱글톤 성능 비교하기
·
iOS/내 방식대로 풀어보기
앱 내 전역적으로 햅틱 이벤트를 호출하기 위해 HapticService를 구현하려 합니다. 함수 두 개만 작성하면 되는 아주 간단한 것이죠!/// 알림 유형에 따른 햅틱 출력func notification(type: UINotificationFeedbackGenerator.FeedbackType) { UINotificationFeedbackGenerator().notificationOccurred(type)}/// 강도에 따른 햅틱 출력func impact(style: UIImpactFeedbackGenerator.FeedbackStyle) { UIImpactFeedbackGenerator(style: .medium).impactOccurred()}그러다 문득 이를 타입 메서드로 구현해야 할지..
캐플 리팩토링 세 번째 이야기 - 트러블 슈팅
·
iOS/프로젝트 일지
애플 디벨로퍼 아카데미에서 진행한 프로젝트, 캐플 Qapple 리팩토링 작업의 세 번째 이야기입니다.캐플은 애플 디벨로퍼 아카데미 @POSTECH 3기, TEAM QAPPLE에서 시작한 프로젝트로아카데미 러너들과 익명으로 소통할 수 있는 커뮤니티 서비스입니다! 🍎 AppStore 다운로드하기 방향성 설정, 프로젝트 세팅까지 모두 마쳤습니다. 이제는 실제 리팩토링을 진행하며 마주쳤던 다양한 트러블 슈팅을 정리해봅니다. (역시나 대개 TCA 관련 트러블 슈팅이었습니다 ㅎㅎㅎ,,,,,) 1. Navigation & TabBar 로직 구현하기TCA에서 네비게이션 로직을 구현하는 것은 튜토리얼에서 어느정도 설명이 되었기에 크게 어렵지 않을 것(?)이라 생각했습니다. 하지만 늘 그렇듯 캐플 앱의 네비게이션 + 탭..
ScrollView 리프레쉬 했을 때 화면이 멈추는 현상 해결하기
·
iOS/트러블슈팅
🤨 문제 정의캐플 프로젝트 진행 중 다른 ScrollView는 문제가 없었지만 게시판 화면의 ScrollView에서 리프레쉬를 하니 로딩이 멈춰버리는 현상이 발생해 버렸습니다,,! 딱히 로직이 다른 것도 없고 로딩 화면도 같은 컴포넌트를 사용하고 있는데 어떤 부분이 문제일까요,, 🪓 삽질 기록1. GeometryReader 문제?GeometryReader를 사용해 View를 그릴 때 렌더링 문제를 마주했었던 경험이 있었기 때문에 이 부분을 제거해봤지만 결과는 똑같았습니다.(GeometryReader도 언젠가 제대로 이해하는 날이 오기를!)GeometryReader { proxy in // 평소에 얘가 문제가 많던데,,? ZStack { BulletinBoardContentView(s..
Array / Set / Dictionary Swift의 컬렉션 알아보기
·
iOS/내 방식대로 풀어보기
Array, Set, Dictionary의 차이점을 분명 알고 있긴 하지만, 누군가에게 설명하라고 했을 때 버벅거리게 되는 것 같습니다. 이는 개념을 더 명확히 인지해야 한다는 뜻이기도 하기에, 아주 간단히 컬렉션 타입을 살펴보고 한 문장으로 정리해 보겠습니다. Array 배열An ordered, random-access collection.순서가 있고 무작위로 접근 가능한 컬렉션0부터 자동으로 순서가 지정되는데 이를 인덱스라고 합니다.순서가 있기 때문에 Array의 데이터는 중복이 가능합니다.* 순서가 중요하거나 인덱스로 접근해야 할 때! Set 집합An unordered collection of unique elements.순서가 없는 고유한 요소들의 컬렉션중복이 불가능합니다.Hashable 프로토콜..