전체 글

전체 글

    모듈화란? with Tuist

    모듈화란? with Tuist

    목차모듈화란?모듈화를 왜 해야할까?모듈화를 하게되면?Tuist매주 아티클 스터디를 진행하면서 이번엔 어떤 주제를 할까 고민하다가 iOS 진영에서 가장 핫한 토픽 중 하나인 모듈화에 대해 이야기하고자 합니다. 파고들면 파고들수록 어려운 주제이지만 이번 포스팅에선 최대한 가볍게 풀어봅시다!모듈화란?모듈(Module)소프트웨어 설계에서 기능단위로 분해하고 추상화되어 재사용 및 공유 가능한 수준으로 만들어진 단위모듈화(Modularization)소프트웨어의 성능을 향상시키거나 시스템의 디버깅, 시험, 통합 및 수정을 용이하도록 하는 소프트웨어 설계 기법모듈화를 왜 해야할까?개발 리소스 증가프로젝트가 성장하면서 개발자가 늘어나고 기능이 많아질수록 코드량이 늘어납니다.클라이언트 개발에서는 개발 과정에서 로컬 빌드를..

    SwiftData 알아보기

    SwiftData 알아보기

    목차SwiftData란?SwiftData 구조SchemaModelContainerModelContextCRUDBindable이번 포스팅은 WWDC23에서 발표된 SwiftData 를 알아보려고 합니다.바로 알아봅시다!SwiftData란?SwiftData란 애플에서 제공하는 로컬 저장소 프레임워크입니다. iOS 앱을 만들때 로컬 저장소로 많이 사용하던 프레임워크로는 애플의 퍼스트파티 프레임워크인 Core Data, 서드파티 라이브러리로인 Realm 등이 있었습니다. 저는 Realm만 써왔었는데, Core Data 보다 속도가 2배 빠르고 사용법이 간단해 빠르게 적용하기 좋아 Core Data 대신 Realm을 채택했었습니다. SwiftData는 Realm 대신 채택할 이유가 생길까요? 한번 SwiftDat..

    InjectionIII 라이브러리를 적용하면서 마주한 이슈들

    InjectionIII 라이브러리를 적용하면서 마주한 이슈들

    목차- 개요 -⚠️ Your project file seems to be in the Desktop or Documents folder ~- ⚠️ Could not locate compile command for ~- 실행 화면개요DemoApp을 만드는 작업 중에 UI 실시간 확인을 위해 InjectionIII 라이브러리를 도입하는 중이었는데요. InjectionIII 라이브러리 관련 글이나 자료가 많이 없어 이슈들을 직접 파악하고 해결하는데 시간이 좀 걸렸습니다. 추후 이 라이브러리를 도입하는 분들은 문제를 해결하는데 조금이나마 도움이 되었으면 해 글을 작성하게 되었습니다. ⚠️ Your project file seems to be in the Desktop or Documents folder ~해당 ..

    Swift 찍먹하기

    Swift 찍먹하기

    목차 Swift란? 더욱 빠른 성능 Fast 더욱 안전하게 Safe 세련된 표현 Expressive 다중 패러다임 명령형 객체지향 프로그래밍 함수형 프로그래밍 프로토콜 지향 프로그래밍 Swift란? Swift 는 2014년 WWDC를 통해 처음 소개되었습니다. 기존 애플 운영체제용 언어인 Objective-C 와 함께 공존할 목적으로 만들어졌으며, 빠르고 안전하며 세련된 표현을 지원하는 프로그래밍 언어라는 점을 강조하고 있습니다. It’s a safe and fast programming language that combines the best in modern language thinking with wisdom from a diverse open source community. 더욱 빠른 성능 Fas..

    객체 지향 프로그래밍을 설계할 때는 SOLID 원칙을 지켜야 한다.

    객체 지향 프로그래밍을 설계할 때는 SOLID 원칙을 지켜야 한다.

    목차 SOLID 원칙은 누가 만들었을까? 단일 책임 원칙 SRP Single Responsibility Principle 개방/폐쇄 원칙 OCP Open Closed Principle 리스코프 치환 원칙 LSP Liskov Substituion Principle 인터페이스 분리 원칙 ISP Interface Segregation Principle 의존관계 역전 원칙 DIP Dependency Inversion Principle SOLID는 아직도 유효한가? SOLID 원칙은 누가 만들었을까? 2000년대 초 로버트 마틴이 주장한 객체지향 5원칙을 마이클 페더스가 두문자어 기억술로 소개한 것이라고 한다. 이러한 SOLID 원칙들은 시간이 지나도 유지보수와 확장이 쉬운 시스템을 만들고자 할 때 적용하면 좋은..

    [visionOS] Apple Vision Pro 챌린지 Part.3 세션 정리 및 느낀 점

    [visionOS] Apple Vision Pro 챌린지 Part.3 세션 정리 및 느낀 점

    목차 visionOS만의 다양한 인풋들 SwiftUI와 RealityKit visionOS 에서의 2D 앱 -> 3D 앱 몰입감을 위한 SharePlay 경험 만들기 세션에 참여하면서 느낀 점 visionOS만의 다양한 인풋들 visionOS는 공간컴퓨팅을 위한 OS로 다양한 인풋 유형이 있었습니다. 기존에 웹 개발이나 모바일 어플리케이션을 개발하면서 사용하던 인풋 외에 제스처, 트랙패드, 호버 이펙트 등 많은게 생겨서 신기하네요 3D Entity와 상호작용하는 방법 제스처를 통해 3D 엔터티를 제어할 수 있는데, .targetedToAnyEntity() 라는 API를 통해 대상으로 하는 엔터티를 정할 수 있었습니다. 드래그앤 드롭 서로 다른 윈도우에 떠있는 내 앱과 다른 앱 사이에 데이터를 주고 받을 ..

    [컴퓨터 구조] 시스템 버스(System Bus) 및 동작 방식

    [컴퓨터 구조] 시스템 버스(System Bus) 및 동작 방식

    목차시스템 버스(System Bus) 란?제어 버스 (Contol Bus)주소 버스 (Address Bus)데이터 버스 (Data Bus)CPU와 기억 장치간의 통신CPU와 I/O 장치간의 통신전체 시스템 구성시스템 버스(System Bus) 란?시스템 버스란 컴퓨터의 구성요소(CPU, 기억장치, I/O장치)간의 Data/신호 교환을 위한 통로입니다.제어 버스 / 주소 버스 / 데이터 버스 라는 하부 버스로 이루어집니다.쉽게 이해하자면 시스템 버스라는 버스 터미널 안에 버스가 지나다니고, 데이터와 신호들이 각 버스를 타고 이동한다고 이해하면 쉽습니다. 제어 버스 (Control Bus)제어 버스는 CPU가 시스템 내의 각종 요소들의 동작을 제어하는데 필요한 신호들을 전달하는 통로입니다.제어 선의 개수는 ..

    [알고리즘] 구간 합, 누적 합(Prefix Sum)

    [알고리즘] 구간 합, 누적 합(Prefix Sum)

    목차 누적 합이란? 언제 사용할까? 예시 및 코드 누적 합이란? 누적 합이란 수열 An에 대해서 각 인덱스까지의 구간의 합을 구하는 것을 누적 합이라고 합니다. 예를 들어 [1, 2, 3, 4, 5] 라는 배열이 있을 때, 각 구간까지의 합을 구하는 배열인 [ 1, 3, 6, 10, 15] 을 구한다고 가정해보면 아래와 같이 2가지로 구할 수 있습니다. [ 첫번째 방법 ] 1 1+2 1+2+3 1+2+3+4 1+2+3+4+5 매번 현재 인덱스까지의 값을 반복하며 더해주기 [ 두번째 방법 ] 1 1+2 3+3 6+4 10+5 이전 인덱스까지의 누적합에 현재 값을 더해주기 어떤게 더 효율적일까요? 배열의 갯수인 n을 늘려 [1, 2, ..., 99999, 10000]로 비교해보겠습니다. [ 첫번째 방법 ] ..

    XCode15+ Image Color Assets 관리 방법의 변화

    XCode15+ Image Color Assets 관리 방법의 변화

    목차Asset Catalogs 의 새로운 기능원리사용법사용 후 느낀 점 Asset Catalogs 의 새로운 기능XCode15 을 통해 에셋 카탈로그에 새로운 기능이 추가되었습니다.이제 다음처럼 카탈로그에 리소스를 추가하면 Color, Image를 해당 이름을 통해 상수로 불러올 수 있습니다.따라서 직접 Enum이나 Struct를 만들어 각 리소스들을 직접 상수화 시키는 번거로움이 줄었습니다.  원리에셋 카탈로그에 우리가 리소스를 추가하면 XCode에서 GeneratedAssetSymbols.swift 라는 파일을 생성하고각각 ImageResource, ColorResource라는 Struct 안에 전역 상수로 만들어 줍니다.  아래 이미지를 보면 ImageResource 를 통해 에셋 카탈로그에 있는 ..

    XCode Archive 시 has no member Error 발생

    XCode Archive 시 has no member Error 발생

    목차포스팅 동기Archive 시 Type '' has no member '' 문제 발생문제될만한 곳 확인하기문제 해결 포스팅 동기개인 앱을 만들다가 어느정도 완성되기도 했고, 햅틱 반응 테스트가 필요해 테스트 플라이트에 올려보기로 했다.그런데 시뮬레이터나 실기기 연결에선 잘되던 빌드가 아카이빙에서만 빌드 에러를 뱉는 문제가 발생했다.해당 문제를 정리하는 것부터 문제의 원인까지 차근차근 접근하다보면 해결되지 않을까 싶어 포스팅하게 되었다.  Archive 시 Type '' has no member '' 문제 발생 위 사진처럼 에러가 나는데, 실제 파인더 경로에 가보면 정상적으로 파일들이 있고 해당 코드부분을 눌러보면 에러메시지가 사라진다.(에러 메시지가 사라지는게 가장 의문..) 문제될만한 곳 확인하기가장..

    개인 프로젝트가 유기 당하는 이유와 해결 방법

    개인 프로젝트를 하다 보면 다른 일이 끼어들거나 단순히 귀찮아져서(이게 비중이 큼) 미루게 되더라. 며칠 뒤 정신차리고 다시 작업하려고 보면 ‘내가 어떤 작업을 하고 있었더라?’ 하고 ’개발 기억상실증‘에 빠지곤 한다. 그럼 술마시고 필름이 끊긴 다음 날 기억의 조각을 맞춰보듯 코드와 커밋 기록 등을 뒤적거리며 기억을 되찾곤 한다. 이런 뻘짓을 안하려면 어떻게 해야할까? ‘쉬지않고 작업한다.’ 아주 쉬운 대비책이 있지만 이런 방식은 언제 또 올지 모르는 귀차니즘에 전혀 방어가 않기에 좀 더 근본적인 문제점을 생각해봤다. ‘커밋은 가능한 작은 단위로 한다.’ 어디서 들었는지는 모두 다르겠지만 다들 무슨 뜻인지 잘 알고 있다. 팀 프로젝트 더 큰 범위로는 회사의 경우, 이슈들을 잘게 쪼개고 커밋이나 PR도 ..

    Python Selenium Webdriver Chrome Option 관련 오류

    Python Selenium Webdriver Chrome Option 관련 오류

    ChromeDriver를 활용해 크롤링을 구현해놨는데 오늘 처음보는 에러가 나왔다. 내용을 읽어보니 chrome_options 라는 argument 가 안맞는 듯 해 혹시하고 Selenium 공식 사이트를 확인해 보았다. get_upcoming_items... __init__() got an unexpected keyword argument 'chrome_options' finally... Traceback (most recent call last): File "/home/runner/work/ShoesPlease/ShoesPlease/parser/get_upcoming_items.py", line 23, in get_upcoming_items driver = webdriver.Chrome('chrome..