iOS 개발에서 쉽게 도전해볼만한 리팩토링 접근법 8가지
·
내게 필요한 개발 공부
본 포스팅은 애플 디벨로퍼 아카데미 @POSTECH 테크 포럼 이벤트,'기술 글자랑 대회'의 게시글을 가져와 작성되었습니다.안녕하세요, 3기 주니어 러너 한톨입니다! 😇오늘은 Tech Forum 기술 글자랑 대회의 마지막 주제인 ‘더 나은 코드, 리팩토링’ 관련 게시글을 작성해보려 합니다. 개발을 하다보면 ‘리팩토링’ 이라는 단어를 자주 접하게 됩니다. (보통은 일정이 촉박할 때 많이 사용하긴 하지만요.) 저는 관성적으로 리팩토링을 조금씩 하고 있기는 하지만 구체적으로 어떤 목적으로, 어떻게 진행하고 있는지 깊게 고민해본 적은 없는 것 같아 반성하게 되는 것 같습니다. 그래서 이를 정리하고 공유해보고자, iOS 개발에서 제가 직접 경험해본 것들을 바탕으로 여러가지 리팩토링 접근법에 대해 설명해보겠습니다..
뒤로가기 버튼과 함께 제스쳐도 사라진 것에 대하여 in SwiftUI
·
내게 필요한 개발 공부
본 포스팅은 애플 디벨로퍼 아카데미 @POSTECH 테크 포럼 이벤트,'기술 글자랑 대회'의 게시글을 가져와 작성되었습니다.안녕하세요, 3기 주니어 러너 한톨입니다! 😇 오늘은 제가 SwiftUI에서 Navigation 기능을 구현할 때 자주 마주쳤었던 문제 해결 과정을 간단하게 공유해 보려 합니다. 작은 내용이지만 누군가에게 도움이 되길 바람과 동시에, 더 좋은 해결 방법을 함께 고민해 봤으면 합니다! SwiftUI의 NavigationBar 커스텀하기SwiftUI는 기본적으로 Navigation 기능을 제공합니다. NavigationStack 계층 내부에 NavigationLink 를 넣거나, navigationDestination(for:destination:) modifier를 추가함으로써 다음..
너와 함께 개발하기 위한 작은 실천법
·
내게 필요한 개발 공부
본 포스팅은 애플 디벨로퍼 아카데미 @POSTECH 테크 포럼 이벤트,'기술 글자랑 대회'의 게시글을 가져와 작성되었습니다.안녕하세요, 3기 주니어 러너 한톨입니다! 😇평소 테크 포럼에 기여하고 싶은 마음을 작게나마 가지고 있었는데, 기술 글자랑 대회라는 좋은 기회와 함께 살려보고자 용기 내어 글을 작성해 봅니다. 개발 협업이라는 주제에서 하고 싶은 얘기가 너무나도 많습니다. 하지만 오늘은 간단하지만 쉽게 적용해 볼 수 있는, 어쩌면 많은 것들을 바꿀 수 있는, 제겐 이미 많은 것들을 가져다준 실천법을 공유해 보려 합니다. 적용하기까지의 과정을 맥락과 함께 녹여보려다 보니 글이 두서없이 길어졌습니다. 부족한 글이지만, 너그럽게 읽어주셨으면 합니다 :) 1️⃣ 개발 협업의 의미저는 아카데미에서 처음으로 ..
음악 플레이리스트에 Array와 List 중 어떤 걸 사용할까?
·
내게 필요한 개발 공부
라는 질문을 면접 때 받았습니다. 부끄럽게도 답하지 못했습니다. 둘 중 하나를 고를 수 있었겠지만 근거가 없으니 답할 수 없었습니다. 이대로 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 싱글톤 성능 비교하기
·
내게 필요한 개발 공부
앱 내 전역적으로 햅틱 이벤트를 호출하기 위해 HapticService를 구현하려 합니다. 함수 두 개만 작성하면 되는 아주 간단한 것이죠!/// 알림 유형에 따른 햅틱 출력func notification(type: UINotificationFeedbackGenerator.FeedbackType) { UINotificationFeedbackGenerator().notificationOccurred(type)}/// 강도에 따른 햅틱 출력func impact(style: UIImpactFeedbackGenerator.FeedbackStyle) { UIImpactFeedbackGenerator(style: .medium).impactOccurred()}그러다 문득 이를 타입 메서드로 구현해야 할지..
캐플 리팩토링 세 번째 이야기 - 트러블 슈팅
·
프로젝트 일지
애플 디벨로퍼 아카데미에서 진행한 프로젝트, 캐플 Qapple 리팩토링 작업의 세 번째 이야기입니다.캐플은 애플 디벨로퍼 아카데미 @POSTECH 3기, TEAM QAPPLE에서 시작한 프로젝트로아카데미 러너들과 익명으로 소통할 수 있는 커뮤니티 서비스입니다! 🍎 AppStore 다운로드하기 방향성 설정, 프로젝트 세팅까지 모두 마쳤습니다. 이제는 실제 리팩토링을 진행하며 마주쳤던 다양한 트러블 슈팅을 정리해봅니다. (역시나 대개 TCA 관련 트러블 슈팅이었습니다 ㅎㅎㅎ,,,,,) 1. Navigation & TabBar 로직 구현하기TCA에서 네비게이션 로직을 구현하는 것은 튜토리얼에서 어느정도 설명이 되었기에 크게 어렵지 않을 것(?)이라 생각했습니다. 하지만 늘 그렇듯 캐플 앱의 네비게이션 + 탭..
ScrollView 리프레쉬 했을 때 화면이 멈추는 현상 해결하기
·
트러블슈팅
🤨 문제 정의캐플 프로젝트 진행 중 다른 ScrollView는 문제가 없었지만 게시판 화면의 ScrollView에서 리프레쉬를 하니 로딩이 멈춰버리는 현상이 발생해 버렸습니다,,! 딱히 로직이 다른 것도 없고 로딩 화면도 같은 컴포넌트를 사용하고 있는데 어떤 부분이 문제일까요,, 🪓 삽질 기록1. GeometryReader 문제?GeometryReader를 사용해 View를 그릴 때 렌더링 문제를 마주했었던 경험이 있었기 때문에 이 부분을 제거해봤지만 결과는 똑같았습니다.(GeometryReader도 언젠가 제대로 이해하는 날이 오기를!)GeometryReader { proxy in // 평소에 얘가 문제가 많던데,,? ZStack { BulletinBoardContentView(s..
Array / Set / Dictionary Swift의 컬렉션 알아보기
·
내게 필요한 개발 공부
Array, Set, Dictionary의 차이점을 분명 알고 있긴 하지만, 누군가에게 설명하라고 했을 때 버벅거리게 되는 것 같습니다. 이는 개념을 더 명확히 인지해야 한다는 뜻이기도 하기에, 아주 간단히 컬렉션 타입을 살펴보고 한 문장으로 정리해 보겠습니다. Array 배열An ordered, random-access collection.순서가 있고 무작위로 접근 가능한 컬렉션0부터 자동으로 순서가 지정되는데 이를 인덱스라고 합니다.순서가 있기 때문에 Array의 데이터는 중복이 가능합니다.* 순서가 중요하거나 인덱스로 접근해야 할 때! Set 집합An unordered collection of unique elements.순서가 없는 고유한 요소들의 컬렉션중복이 불가능합니다.Hashable 프로토콜..
꾸준히 운동하기
·
꾸준히 글쓰기
나는 헬스를 별로 좋아하지 않는다.무게를 올리고 몸을 키워가는 것 자체에 큰 관심이 없기 때문인 것 같기도 하다. 그래도 누군가가 얘기를 할 때도, 책에서도 늘 운동은 중요하다고 한다.체력의 부족함을 날이 갈수록 느끼는 요즘,운동을 좋아하지 않는다고 그만둬버릴 수는 없는 것이다. 이제 열흘 정도 꾸준히 운동했는데 역시나 당연하게도어떤 변화가 있는지 실감하긴 어려운 것 같다. 그래도 한 가지 확실한 것은 기분은 맑아진다.잡생각이 없어지고 온전히 내게 집중할 수 있는 시간이 생긴다.그것만으로도 좋은 시작점이지 않을까 생각한다.
마음 속 원숭이
·
꾸준히 글쓰기
요즘 계속 집에 있어서 그런가 규칙적인 듯 규칙적이지 않은 삶을 살고 있다.10시에 일어나 운동을 가고, 점심을 먹은 후 저녁까지 개발 공부를 한다. 어느정도 정해진 양을 끝내면 나를 위한 보상을 한다.민톨이와 놀거나, 게임을 하거나, 넷플릭스를 보는 등 말이다.마음 속 작은 원숭이를 달래는 일을 하는 것은 꼭 필요하다고 생각하지만,마음 한구석은 늘 불편한 것 같다. 내 목표를 달성하려면 원숭이를 달래는 일 또한 줄여나가야하는 것은 아닌지 고민이 된다.
책임과 역할, 비슷한 듯 다른 두 개념
·
내게 필요한 개발 공부
비슷한 듯 다른 두 개념 시리즈(?)의 두 번째 파트는 책임과 역할입니다. 객체지향 프로그래밍에서 자주 등장하는 두 개념은, 혼용해서 사용하기 쉽습니다.(일단 저부터) 이를 바로 잡아보려 진짜 의미를 찾아보겠습니다. 책임 Responsibility책임이란 객체에 의해 정의되는 응집도 있는 행위의 집합으로, 객체가 유지해야 하는 정보와 수행할 수 있는 행동에 대해 개략적으로 서술한 문장이다. 즉, 객체의 책임은 객체가 '무엇을 알고 있는가'와 '무엇을 할 수 있는가'로 구성된다. 여기서 객체가 무엇을 알고 있는가는 데이터로, 무엇을 할 수 있는가는 함수로 치환할 수 있습니다. 결제 서비스를 예시로 들어보겠습니다. 결제를 위해선 사용자 정보와 금액 정보(데이터), 실제로 결제를 수행할 행동(함수)이 필요합니..
추상화와 일반화, 비슷한듯 다른 두 개념
·
내게 필요한 개발 공부
추상화와 일반화. 개발 공부를 하다 보면 꽤나 많이 듣게 되는 단어입니다. 저 또한 여러 논의를 하며 자연스럽게 두 단어를 이야기하곤 했는데 어느 날 두 개념의 차이점에 대한 질문을 받은 적이 있습니다. 한참을 고민하다 내린 결론은 그동안 혼용해서 사용하고 있었구나라는 깨달음과 이를 깊이 고민해보지 못한 반성이었습니다. 비슷하지만 분명히 다른 추상화와 일반화에 대해 정리해보려 합니다. 추상화 Abstraction컴퓨터 과학에서 추상화는 복잡한 자료, 모듈, 시스템 등으로부터 핵심적인 개념 또는 기능을 간추려 내는 것을 말한다. 이전에 객체지향의 사실과 오해를 읽었을 때의 구절이 다시 떠올랐습니다. "복잡성의 총체인 현실이라는 괴물을 그대로 수용하기에 인간이 지닌 인지 능력과 저장 공간은 너무나도 보잘것없..
캐플 리팩토링 두 번째 이야기 - 프로젝트 세팅하기
·
프로젝트 일지
애플 디벨로퍼 아카데미에서 진행한 프로젝트, 캐플 Qapple 리팩토링 작업의 두 번째 이야기입니다.캐플은 애플 디벨로퍼 아카데미 @POSTECH 3기, TEAM QAPPLE에서 시작한 프로젝트로아카데미 러너들과 익명으로 소통할 수 있는 커뮤니티 서비스입니다! 🍎 AppStore 다운로드하기 첫 번째 이야기에서는 리팩토링의 방향성을 설정했습니다. 어떤 의도로 리팩토링하는지, 어떤 합의를 볼 것인지, 그 합의의 방법인 아키텍처는 어떻게 사용할지에 대해서 말이죠! 이제는 구체적으로 적용해나가기 위해 초기 세팅이 필요했습니다. TCA 기본 세팅합의에서 가장 크고 중요한 부분은 단연코 TCA였습니다. 기존 MVVM 아키텍처로 처리하던 방식과 크게 달랐기 때문에 논의 없이 프로젝트를 진행한다면 큰 혼란을 초래할..
구조체로 싱글톤 만들기?
·
내게 필요한 개발 공부
iOS 공부를 시작한 지 얼마 안 된 시절, 개인 프로젝트를 진행하며 싱글톤이 동작하지 않는 문제를 경험한 적 있습니다. 그때의 기억을 떠올려 비슷하게 코드를 작성해 보면 아래와 같았습니다.struct Singleton { static var shared = Singleton() private init() {} var name = "민톨"}let singleton = Singleton.sharedprint("내 이름은 " + singleton.name)Singleton.shared.name = "한톨"print("내 이름은 " + singleton.name) 싱글톤 패턴을 이용할 때 우리는 '하나의 객체'를 떠올립니다. 타입 프로퍼티로 생성된 shared 객체를 전역적으로 접근 +..
캐플 리팩토링 첫 번째 이야기 - 방향성 설정하기
·
프로젝트 일지
애플 디벨로퍼 아카데미에서 진행한 프로젝트, 캐플 Qapple의 리팩토링 작업이 시작됐습니다.캐플은 애플 디벨로퍼 아카데미 @POSTECH 3기, TEAM QAPPLE에서 시작한 프로젝트로아카데미 러너들과 익명으로 소통할 수 있는 커뮤니티 서비스입니다! 🍎 AppStore 다운로드하기 1년 가까이 진행하면서 쌓여온 코드는 문제점이 많았습니다. 하지만 신규 기능 추가(게시판, 댓글 등...)에 항상 뒷전이 되어 미루다시피 한 기술 부채는 이제는 너무나 늘어나버렸죠,,! 3기가 마무리되고 4기의 시작을 앞둔 지금이 절호의 기회라고 판단해 시즌2에 새롭게 합류한 멤버(시몬스, 무니)들과 함께 진행 중인 리팩토링 여정을 기록해보려 합니다.  무엇이 문제였을까?리팩토링 하자!라고 이야기가 나왔다는 것은 분명 어..
비동기 작업의 단위, Task 알아보기
·
내게 필요한 개발 공부
Swift Concurrency를 사용해 비동기 코드를 작성하려면 Task를 이용해야합니다. Task { await 나는야비동기함수()} 일단 여기에 넣으라고 하니까 넣어서 쓰던 반성의 시간들,,,(맨날 봐야지 봐야지 하고 프로젝트에 쫓겨 미루던 나,,,🥲) 그래도 기본 동작 정도는 알고 있어야하겠죠? 간단하게나마 Task의 동작 방식을 살펴보겠습니다. Task의 정의애플 공식문서에 기술된 Task에 대해 살펴보겠습니다.  그렇습니다. Task는 비동기 작업의 단위라고 합니다. 추측하자면 우리가 지금까지 관성적으로 사용하던 다음과 같은 코드는 모두 하나의 비동기 작업으로 볼 수 있다는 뜻이기도 합니다.  Task { // 3개 함수 모두 하나의 비동기 단위임! await 나는야비동기함수..
공부할게 정말 많다
·
꾸준히 글쓰기
개발 공부를 하다 보면 여러 가지 생각이 든다. iOS 개발자라면 Swift에 대해 제일 잘 알아야 하지 않을까?새로운 아키텍처, 사람들이 만든 멋진 라이브러리를 살펴봐야 할 것 같은데,,,그래도 기초가 가장 중요하지. CS를 공부하자.일단 취업하려면 코테를 먼저 뚫어야겠어. 이것저것 생각도 많아지고, 할 것도 많아지는 요즘 중심을 잘 잡아야겠다는 생각을 한다.상황을 재기만 하다 모든 걸 놓쳐버리고 싶지는 않기 때문이다.결국엔 하나하나 조금씩, 깊게 파고들어야 한다.열심히 파내려가보자.
부자의 그릇 - 더 많이 배트를 휘두르자
·
생각을 담은 독서
부자의 그릇 - 이즈미 마사토"더 많이 배트를 휘두르자" 이 문장이 가장 와닿았다. 인생의 행운은 누구에게나 한 번쯤 찾아온다고 한다. 하지만 배트를 휘둘러보지 않은 사람은 헛스윙 할 뿐 나아갈 수 없다. 실수해도, 실패해도 배트를 계속 휘둘러야 언젠가 홈런을 칠 수 있다. 나는 배트를 많이 휘두르고 있는가? 팔이 아플까봐, 웃음거리가 될까봐 가만히 앉아있지는 않은가? 매일매일 배트를 휘둘러보자. 매일매일의 노력한 결과는 곧 내게 신용으로, 신용은 돈으로 돌아올 것이다. 지금 마음 가짐 그대로 공부하고, 운동하고, 사랑하자. 현재 내가 할 수 있는 최고의 투쟁일 것이다.
테스트 더블? 두 번 테스트 하는 건가요?
·
내게 필요한 개발 공부
면접관이 테스트 더블에 대해 물었을 때 어처구니없는 제 답변은 이랬습니다. "두 번 테스트하는 건가요,,?" 다시 생각해 봐도 부끄러운 것 같습니다.(뭐라도 대답을 해야 할 거 같은 기분에 그랬는데 앞으로는 솔직히 모르겠습니다라고 답변 하는 게 더 좋을 것 같네요) 집에 돌아가는 길 GPT에 검색해 보니 예상과는 전혀 다른 키워드들이 나왔습니다. 평소에 혼동해서 사용하던 단어를 바로잡을 좋은 기회이기도 해 정리해보려 합니다. 테스트 더블?A test double is software used in software test automation that satisfies a dependency so that the test need not depend on production code. A test doub..
취준은 외로워
·
꾸준히 글쓰기
취업 준비는 사람을 외롭게 만드는 것 같다.뭐랄까 혼자서 준비해야하는 것이 너무 많은 느낌,,,?그러나 곱씹어봤을 때 그리 외로운 상황 같지는 않다.여전히 사람들과 소통하고 몰입해 일을 할 수 있기 때문이다.그래서 가짜 외로움이라는 생각이 들기도 한다.그러니 지금처럼 뒤돌아보지 말고 하루하루 열심히 노력하자.
MVC와 Cocoa MVC, 뭐가 다를까?
·
내게 필요한 개발 공부
0. 서문디자인 패턴을 공부할 때 가장 먼저 들었던 키워드가 MVC였습니다. Model-View-Controller로 책임을 나눠 구현하는 방법으로, 가장 널리 사용되는 패턴이기도 합니다. 많이 듣기도 했고 많이 적용도 해봐서였을까요(자만 했었던 것 같습니다), 면접 질문에서 잘 대답했다고 생각했었는데 집으로 돌아오는 길에 확인해보니 잘못된 부분이 분명 있었습니다. 다시 한번 초심으로 돌아간다 생각하고 MVC를 정리해보려 합니다. 1. 전통적인 MVC우선 전통적인 MVC가 무엇인지 알아야 합니다. 모든 디자인 패턴이 그렇듯이 각 부분은 저마다의 '관심사'가 존재합니다. 이로써 서로의 명확한 관심사를 분리하고, 더 나은 업무의 분리와 향상된 관리를 제공하는 것이 디자인 패턴의 주 목적입니다. 전통적인 MV..
스레드와 메모리,, 비슷한 거 아니었나요?
·
내게 필요한 개발 공부
서문'스레드와 메모리의 차이점을 설명해 주세요'라는 질문을 들었을 때 머리가 새하얘졌습니다. 어,, 이거 분명히 다르긴 한데 정확히 어떻게 다른 거지,,?라는 생각이 들면서 아,, CS가 부족한 밑천이 이렇게 드러나는구나라고 아쉬움이 남았습니다. 하지만 아쉬움뿐이면 또 어떻게 성장하겠어요! 이번 기회에 CS 관점에서도, iOS 관점에서도 제대로 짚고 넘어가 보려 합니다. GPT 선생님께 여쭤보자이런 보편적인 정의, 특징, 차이점을 알고 싶을 때 GTP 만큼 효율적인 것이 없는 것 같습니다. GPT의 내용을 인용해 자세히 살펴보겠습니다. 1. 스레드 Thread프로세스 내에서 실행되는 작은 실행 단위.프로세스가 할당 받은 메모리 자원을 공유하며, 독립적으로 실행 가능한 단위를 제공.경량 프로세스: 스레드는..
인생 첫 번째 iOS 개발 면접 후기
·
취준
오늘은 제 인생 첫 번째 iOS 개발 면접 후기를 회고하며 기록을 남겨보려 합니다. 서류 및 사전 과제를 통과하고 처음 면접에 붙었을 때 기분이 좋으면서도 묘했습니다. 사실 이제 진짜 시작이라는 생각도 들었었죠. 여하튼 처음이라 떨리기도 했지만 초심자의 행운이라는 게 있었던 걸까요? 재미있게 이야기했었던 것 같기도 합니다. 면접이 끝난 후의 감정 및 복기 사항을 기록해두지 않으면 금방 휘발될 것 같아 집으로 오자마자 생생한 마음으로 기록해보려 합니다. 면접 흐름20분 정도 일찍 회사 로비에 도착해 기다렸습니다. 회사 소개가 담긴 작은 아이패드와 물 한 병을 주시더군요. 사무실이 무척 더웠기 때문에 반가웠습니다. 기다림 끝에 회사 건물 옆 작은 카페 룸으로 들어가 면접을 진행했습니다. 총 두 분이 앉아계셨..
역행자 - 순리자가 아닌 역행자로 살아간다는 것
·
생각을 담은 독서
역행자 - 자청나는 역행자로 살아가고 싶다. 한 번뿐인 인생을 순리자로 살아가기엔 아쉬운 점이 너무나도 많다. 내 인생 철학관 중 하나인 '인생의 절반 이상 일을 하며 살아가야 할텐데, 그럼 인생의 절반을 재밌게 보내려면 재밌는 일을 해야 하지 않겠는가?'의 관점에서 봐도 말이다. 사랑하는 사람들에게 내 마음을, 가치를 전달하려면 더욱이 역행자로 살아가야 할 것이다. 저자는 역행자가 되기 위한 방법론이 있다고 확신한다. 이상하리만치 쉽고 간단하기에 누구나 역행자가 될 수 있지만, 아이러니하게도 모두가 실천하지는 않는다고 한다. 나도 그 중에 하나였다. 하지만 이제는 정말 달라져야 하지 않을까? 내 인생에 주도권을 가져오는 시간을 더 이상 뒤로 미루면 안된다고 느낀다. 조금이라도 젊을 때 더 많은 행복을 ..
당신은 사용성을 평가할 수 있나요?
·
UXUI
오늘은 제가 UX 디자이너로 입문할 때 어찌 보면 당연하면서도 간과하고 있었던 사실, 그만큼 중요한 깨달음을 얻을 수 있었던 재미있는 실험에 대해 간단히 소개해보려 합니다. UX(사용자 경험), 사용성 등의 내용이 익숙치 않은 분들 모두 쉽고 재미있게 볼 수 있으며, 실무진 분들 또한 해당 부분의 중요성을 되짚기 좋은 사례라 생각합니다. Udemy - 'The Ultimate Guide to Usability and UX' 강의 내 수강 내용을 바탕으로 작성되었으며,관련하여 문제 혹은 피드백 있을 시, 적극 조치 하겠습니다 🙂사용성이란 무엇일까요?음,,, 사용성이란 무엇일까요? 일반적으로 쉽게 떠올릴 수 있는 사용성의 기준은 얼마나 효용적이고, 편리하고, 간단한가? 등으로 정의되며, 이는 보통 제품을 ..