전체 글

전체 글

    [회고] 2024년 주니어 2년차 iOS 개발자의 회고

    2024년도 마무리 되어 간다.하루하루는 길게 느껴져도 돌이켜보면 시간 정말 빠르다!벌써 연간 회고를 3번째 쓰고 있고 내년이면 횟수론 3년차 개발자이다. 주변 사람들에게 많이 얘기했지만 이제는 마냥 어리지 않다는걸 나이를 체감한 한 해다. (시간 멈춰 … 🖐️)작년과 다르게 회사에서 담당한 앱이 교체되면서 서브에서 메인으로 역할도 바뀌었다. 23년부터 시작한 사이드 앱도 벌써 4000명을 코앞에 두고 있다.무튼 회고를 잘 작성하고 싶은데 어떤 방식으로 쓸까 고민하다 올 한 해 참여한 2개의 프로젝트에 대해 5F 회고를 작성해보려 한다.회사 업무Fact (사실)6번의 버그 픽스 배포를 진행했다.XIB 분리, Clean architecture 기반 모듈화 진행으로 레거시 코드를 개선했다.개발/상용 타겟 ..

    Swift Concurrency 1 : async/await 시작하기 (동기/비동기 그리고 동시성 개념)

    지난 포스팅인 커스텀 아키텍처에서 비동기 방식으로 사용 되었던 async/await 간단 설명 및 관련 개념들을 복습하는 시간을 가져보려 합니다.우선 동기와 비동기 개념부터 살펴보겠습니다.동기(synchronous)작업이 동기적으로 실행하면, 현재 작업이 끝날 때까지 다른 작업들은 기다린다. 즉, 요청을 보낸 후 응답을 받아야지만 다음 동작이 이뤄집니다.그래서 작업이 순차적으로 완료되어 순서가 보장되지만 하나의 작업이 오래걸리면 다른 작업들이 지연될 수 있죠.비동기(asynchronous)반대로 비동기로 작업을 실행한다면, 동시에 실행되어 해당 작업의 끝난 여부와 상관없이 기다리지 않고 바로 다음 작업을 계속 진행할 수 있다. 그래서 네트워킹 작업이나 이미지 로딩, 파일 읽기 등 시간이 오래 걸리는 작업..

    iOS 커스텀 아키텍처 고민하며 구상해보기 (Unidirectional Data Flow / Based ReactorKit)

    1. 개요현재 회사에서 메인으로 맡은 앱의 아키텍처라 함은 뷰모델만 간신히 분리되어 있는 MVC가 혼재된 MVVM 형태이다. 외주 업체로부터 넘어온 앱이라 코드의 일관성도 없고 아래 사진처럼 무한 중첩 클로저가 장풍처럼 쏴져있고 그에 RxSwift가 조금 곁들여진 쉽지 않은 프로젝트 구조다.올해 초 리팩토링 할 시간이 주어져 아키텍처에 대한 고민을 잠깐 한 적이 있었다. 혼자 앱을 맡기도 했고 새로운 기술 검토를 할 여유가 없어 이전 팀원이 작업한 Protocol ViewModel 베이스의 MVVM 구조 그대로 한 화면 정도 리팩토링 했었다. 아키텍처를 커스텀 한 배경그 때 느꼈던 MVVM의 단점은 상태관리가 제대로 안된다는 것이다. 그나마 Input-Output 구조로 단방향 흐름은 대략 잡을 수 있었..

    [회고] 2023년 신입이 된 iOS 개발자의 회고

    벌써 2023년의 마지막 날이다. 사실 엄청 열심히 작성했는데 임시저장 잘못한 바람에 날려서 슬프지만 그래도 다시 써야지... 내 작년 회고글에선 취준생이였는데 신분 상승했다 ! 올 한해를 돌이켜보면 잘 놀기도 하고 열심히 살기도 했다! 자 얼마나 잘 놀았나 가보자고 1월 취업 준비를 본격적으로 하기 전에 갑자기 즉흥 일본 여행을 다녀왔다. 한번 제대로 놀고 독서실 맨날 박혀있는다! 는 포부로 갔는데.. 막상 아무 계획없이 가서 2만키론가 걸었던 피곤한 기억.. 하하ㅏ 스시 진짜 좋아하는데 맛있는 스시를 못먹어서 너무 아쉽다. 담엔 스시만 부시러간다! 먹짱 준비완 🍣 2월 드디어 학생 탈출~ 🎓 돌이켜보면 대학생활 너무 좋았다 동기들 덕분이라 생각한다 정말루! 초반엔 개발 적성에 안맞는줄알고 갑자기 영어..

    [회고] 2022년 신입(이 될) 개발자의 회고

    2022년은 나에게 꽤나 큰 변화를 가져다줬다. 올해 초 iOS 개발을 시작하며 매쉬업 동아리 활동과 값진 멘토링, 최근 많은 면접경험까지이번년도는 운이 좋게 성장하기 좋은 환경에서 많은 도움을 받았던 것 같다. 내가 생각해도 작년의 나보단 올해 정말 많이 성장한 것 같다!얼만큼 성장했는지 되돌아보며 한해를 회고해본다. 1. 동아리단연 나에게 가장 큰 변화를 준 건 매쉬업 활동이다. 4학년 1학기때쯤 동아리 활동을 시작했는데 대학생일 때 특히 너무나 값진 경험이다.여러 개발회사도 직접 가보고, 무엇보다도 주변에 현업에 계신 개발자분들이 너무나 많다. 동아리에 들어가고 싶었던 이유는 나름 교내에서 IT경진대회 많이 나가며 여러 활동을 했지만 성장엔 한계가 있다는 생각이 들었고 '잘하는 사람들이랑 같이 개발..

    [Swift] 프로퍼티 (Properties)

    프로퍼티 클래스, 구조체, 열거형과 관련한 값 프로퍼티 옵저버를 정의하여 값이 변할때마다 모니터링 가능 저장 프로퍼티 : 값을 저장하고 있음 사용 : 클래스, 구조체 계산된 프로퍼티 : 값을 저장하지 않고, 특정하게 계산한 값을 반환 사용 : 클래스, 구조체, 열거형 저장 프로퍼티 (Stored Properties) 단순히 값을 저장하고 있는 프로퍼티 let, var 키워드 이용해서 변수 선언해 사용 struct FixedLengthRange { var firstValue: Int let length: Int } // ---> 변수 구조체 var rangeOfThreeItems = FixedLengthRange(firstValue: 0, length: 3) // 범위 값은 0, 1, 2 입니다. rang..

    [Swift] 접근제어자 (Access Control)

    접근제어 (Access Control) Access control restricts access to parts of your code from code in other source files and modules. 코드를 작성하는 한 파일에서 다른 파일에 있는 코드에 대한 접근을 명시적으로 작성해서 이를 관리 Module과 Source file module 과 source file 에 따라 다른 접근함 Module 코드를 배포하는 단일 단위로 하나의 프레임워크나 앱이 이 단위로 배포 다른 모듈에서 Swift의 import 키워드를 사용해 import 될 수 있음 프로젝트의 하위에 있는 targets도 각각 모두 하나의 module 임 ex) UIKit, Foundation Source File 각각의 ..

    [AutoLayout] Hugging Priority vs Compression Resistance Priority

    Intro 오늘은 미루고 미뤘던, 알지만 알지못했던 (이게 바로 정확히 아는게 아니닷!) Hugging Priority와 Compression Resistance Priority의 차이에 대해 정리해보겠습니다. 정리하면서 공부하는거죠,,하핳하ㅏ 시작하게씁니다~~! Intrinsic Content Size 먼저 해당 차이를 정리하기 전에 Intrinsic Content Size에 대해 아시나요?! 그대로 해석하면 '고유한 콘텐츠의 크기' 즉, 콘텐츠는 고유한 크기를 갖고 있다는 것입니다. 말 그대로 Label이나 Button 같은 것들은 자체로 Width, Height를 본질적으로 가지는데요. 라벨에 들어가는 텍스트의 길이나, 폰트 두께 등에 따라 알아서 Width, Height를 계산하여 보여줍니다. 그..

    [iOS] Table Views - Filling a Table with Data

    Intro 안녕하세요. 오늘은 TableView - Filling a Table with Data, 데이터를 채우는 부분의 공식문서를 정리했습니다. 가장 중요하고 기본적인 내용이라 잘 정리해보도록 하겠습니다 💪🏻 Apple Developer Documentation developer.apple.com 데이터 소스 객체를 사용해서 테이블의 셀을 동적으로 만들고 구성하거나 정적으로 제공합니다. (테이블 뷰에서 셀을 동적 or 정적으로 구성할 수 있죠? 주로 동적이지만..) Overview Table views는 인터페이스의 데이터 기반 요소입니다. UITableViewDataSource 프로토콜을 채택하는 객체를 사용해서 데이터의 각 부분을 화면에 렌더링하는데 필요한 View와 함께 App의 Data를 제공..

    [백준] 1002번 - 터렛

    오늘은 살짝 수학공식이 필요한 문제를 풀어보았습니다 개념만 알고 그대로 알고리즘에 적용하면 어렵진 않은 문제인 것 같네요! https://www.acmicpc.net/problem/1002 1002번: 터렛 각 테스트 케이스마다 류재명이 있을 수 있는 위치의 수를 출력한다. 만약 류재명이 있을 수 있는 위치의 개수가 무한대일 경우에는 -1을 출력한다. www.acmicpc.net 문제에 사용된 변수명과 공식을 설명하자면, 입력받은 r1, r2는 두 원의 반지름이고 R은 두 원의 중심 사이의 거리 입니다. 반지름과 두 점 사이의 거리를 비교하면서 교점을 구하면, 있을 수 있는 위치의 개수가 나옵니다. 경우의 수는 다음과 같은데요. 이 경우를 그대로 코드로 작성하면 문제를 해결할 수 있습니다.