- 근본으로돌아가자(7)-String,Array으로 시작해서 Sequence까지2료일자 우리가 일반적으로 사용하는 String은 Character로 이루어져있고 Character는 가변적인 하나이상의 유니코드스칼라로 이루어져 배열처럼 정수 인덱스로 접근할수 없다. 그래서 String.index를 사용하고 startIndex, endIndex, index(after:)같은 메서드로 안전하게 탐색한다. 특히 이모지의 경우 여러 유니코드 스칼라로 구성된다. 퀴즈: 👍? => U+1F44D인 단일유니코드스칼라.let emoji = "👩🚀"for scalar in emoji.unicodeScalars { print(scalar)}// 출력:// U+1F469(👩)// U+200D// U+1F680(🚀)여기까지가 면접의 단골질문이자 당연히 알아야하는 것입니다. 물론 아닐수도..? ..
- 2025-04-04 15:49:58
- Metal(2)-셰이더 코드 작성까지2료일이전 글에서 메탈이란 GPU에 접근하여 빠른 그래픽 처리를 가능하게 해주는 저수준 API라는 것을 학습했다. 즉 Spiritekit, Animation 밑의 있는 것!! 이번엔 그래서 메탈이 어떻게 렌더링을 하는지 살펴볼 계획입니다. 렌더링 프로세스Metal은 '초기화 단계'와 '렌더 패스 단계'로 나뉜다.초기화 단계(앱 수명주기와 함께하는 객체들)MTLDevicelet device = MTLCreateSystemDefaultDevice()모든 Metal 객체 생성의 시작점. 물리적 GPU를 추상화한 인터페이스라고 보면 된다. MTLCommandQueuelet commandQueue = device.makeCommandQueue()GPU에 보낼 명령들을 순서대로 관리하는 대기열. 실제로 여러 프레임의 렌..
- 2025-04-02 23:54:29
- Metal(1)- 메탈을 알기전에 필요한 것들2료일갑자기 왠 뜬끔없이 메탈일까? 그래픽관련 공부를 해야할 계기가 생겼고 이것또한 하나의 기회라고 생각하여 블로그에 정리하며 자세히 공부를 하려합니다. 아주아주 예전에 AR쪽하면서인가(?) metal관련 봤던것 같은데 기억이 안나서 아예 리뉴얼 해서 정리해볼게요~ 컴퓨터 아키텍처의 기초CPU: 모든 계산과 논리연산 처리하는 "두뇌"- ALU: 수학적 연산과 논리 연산 수행- 제어장치: 명령어 해석 및 실행 순서 결정- 레지스터: 고속 임시데이터저장- 캐시메모리: 자주 사용되는 데이터와 명령어 저장GPU: 원래 그래픽 처리를 위해 설계되었으나, 현재는 병렬 컴퓨팅의 핵심 요소로 확장- 병렬처리 능력: 동일한 연산을 여러 데이터에 동시 적용- 그래픽 렌더링: 3D 모델링, 텍스처 매핑, 쉐이딩 처리- 범용컴퓨팅..
- 2025-03-29 20:57:13
- Autolayout 모든 것: 사이클부터 제약조건까지2료일오토레이아웃이란?iOS 및 macOS에서 UI요소의 위치와 크기를 동적으로 관리하는 시스템: SuperView 크기가 변경되면, Constraints로 잡혀있는 값을 기준으로 본인의 크기를 적절하게 변화시키는 것입니다.레이아웃 업데이트 사이클Autolayout은 크게 3가지 레이아웃 처리 과정을 통해 화면을 그립니다.1. Update Constraints메서드가 호출되며 기존 제약 조건을 갱신하거나 새로운 제약조건을 추가하는 로직 수행2. Layout 계산: layoutSubviews 메서드가 호출되며 업데이트된 제약 조건을 바탕으로 실제 프레임 계산3. Display: draw 메서드 호출되어 계산된 프레임에 따라 화면이 그려진다.이 사이클은 엄격히 순차적으로 매번 실행되는 것이 아닌 UIKit 뷰 업..
- 2025-03-26 20:17:35
- 파사드 패턴(Facade Pattern)2료일: 구조적 디자인 패턴 중 하나로, 복잡한 라이브러리, 프레임워크 또는 서브시스템을 간단한 인터페이스로 감싸주는 역할을 한다.이로써 클라이언트가 시스템의 복잡성을 이해하지 않고도 필요한 기능을 쉽게 사용할 수 있게 해준다.파사드? 프랑스어로 건물의 정면이라는 듯. 실제 건물에서 정면은 내부의 복잡한 구조를 가리고 단순한 외관만을 보여주는것처럼 소프트웨어에서도 복잡한 내부 구조를숨기고 단순한 인터페이스만 외부에 노출시키겟다~ex) 무신사 옷 CS주문 넣는다고 하자. 상담원이 파사드 역할이다. 상담원이 매장의 시스템에 맞춰 해당하는 대응을 해주고 우리는 그냥 전화하는것만으로도 충분하다.// 재고 관리 서브시스템class InventorySystem { func checkAvailability(produ..
- 2025-03-25 18:59:16
- 팩토리 패턴2료일객체 생성을 캡슐화하는 생성 패턴중 하나이다. 객체를 직접 생성하는 대신, 팩토리라는 중간 객체를 통해 생성한다. 이렇게 되면 코드의 유연성이 높아지고, 객체 생성 로직을 한 곳에서 관리할 수 있어 유지보수가 쉬워진다. 팩토리 메서드 패턴언제쓰지?1. 단일 제품의 다양한 변형을 생성할 때2 어떻게 하나의 객체를 생성할 것인가에 초점을 맞춘다.ex) iOS 앱에서 배송 관리 앱을 만든다고 가정해봅시다. 처음에는 트럭(Truck)만 지원했기 때문에 모든 코드가 Truck클래스에 의존적입니다. 그런데 갑자기 배송 업체에서 "배(Ship)"도 지원해달라는 요청이 들어왔습니다.기존 코드: let transport = Truck()처럼 직접 생성.문제: Ship을 추가하려면 클라이언트 코드 전체를 수정해야 하고, ..
- 2025-03-25 18:11:34
- Adaptor Pattern (구조적 디자인패턴)2료일요즘 디자인 패턴에 관한 개발 책을 읽고 있다. 취준 하며.. 그래서 이제 차차 인상 깊고 적용할만한 패턴을 정리할 계획이다. 우선 오늘은 어댑터 패턴이다.Adaptor Pattern이란?서로 다른 인터페이스를 가진 두 시스템을 연결하는 구조적 디자인 패턴입니다.기존 클래스의 코드를 수정하지 않고도 새로운 인터페이스 맞춰 사용할 수 있도록 중간에서 "어댑터"역할을 하는 객체를 제공하는 것!왜 어뎁터냐면 일본에 가면 한국에서 사용하는 콘센트와 달라서 꽂을 수 없다. 이때 사용하는게 어댑터이다. 비슷한 개념입니당ㅎ등장배경- 호환성 문제: 서로 다른 인터페이스를 가진 모듈이 협력해야 하는 상황이 많다. 기존 레거시 코드와 새로운 시스템 통합하거나 서로 다른 라이브러리 함께 사용할때 인터페이스가 맞지 않는 경우..
- 2025-03-24 00:18:35
- Apple의 보안2료일오늘은 외부에서 어떻게 신뢰할수 있는 앱을 다운받을 수 있는지와 그러더라도 앱을 다운받았지만 해킹프로그램이 있을때 어떻게 보안을 하는지에 대해 얘기해볼것이다.프로비저닝 프로파일애플에서 어떠한 앱을 다운받기 위해서는 AppStore를 통해야한다. 즉 신뢰할 수 있는 앱만 실행할 수 있도록 되어있다.신뢰할 수 있어? = 그 개발자 신뢰 가능? 이라고 보면된다. 앱스토어 말고 우리는 앱을 깃허브 클론이나 다른 방식으로 받을 수 있다.프로비저닝 프로파일이 디바이스가 특정 개발자의 앱을 신뢰하고 실행할 수 있게 해준다. 구성요소: 앱 ID(bundle), 앱 실행이 허용된 디바이스 UUID, 인증서, 권한(푸쉬알림 등)프로비저닝 프로파일 종류1. Development: 개발 및 디버깅을 위한 프로필. 등록된 개발..
- 2025-03-15 02:11:56
- Diffable DataSource2료일와… 진짜 오랜만에 UIKit 관련 공부를 진행하는 것 같네요. 유킷으로 개발한 지가 좀 됐지만, 그래도 이건 알아야 하는 중요한 지식이라 정리 시작해볼게요! 오늘은 Diffable DataSource에 대해 자세히 다뤄보고, 이 내용을 바탕으로 블로그 글을 완성해보겠습니다.등장배경// 기존 방식func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return items.count}func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.deq..
- 2025-03-09 20:29:58
- 이미지 최적화 적용하기2료일흠..아직 많이 모를것이다. 세상에 나온 내 앱 볼레또를 그래서 한번더 홍보하고 들어갈게요 한번씩 아니 두번,세번 써줘요https://apps.apple.com/kr/app/볼레또/id6737753864 볼레또1. 티켓으로 꾸미는 특별한 여행 기록 - 일반적인 일기 형식이 아닌, 티켓을 형상화한 독특한 기록 방식을 제공합니다. 티켓에는 출발지, 도착지, 여행 일정, 동행자 등의 정보가 담기며, 사용apps.apple.com요렇게 친구들과 함께 하나의 티켓에서 나만의 프레임으로 네컷사진을 올리고 스티커와 말풍선으로 귀엽게 꾸미는 앱이다. 그러기에 사진이 굉장히 많다... 현재의 앱을 사용하면서 메모리를 체크하면주식그래프같다이전에 나는 이미지가 렌더링되는 과정에서 CPU의 사용량과 메모리를 줄일 수 있는..
- 2025-03-06 23:19:18
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)