근본으로돌아가자(7)-String,Array으로 시작해서 Sequence까지
·
면접준비
String이 왜 복잡할까?Swift의 String은 단순해 보이지만 내부는 꽤 복잡합니다. 왜일까요?let emoji = "👩‍🚀"for scalar in emoji.unicodeScalars { print(scalar)}// 출력:// U+1F469(👩)// U+200D// U+1F680(🚀)핵심 이유: 유니코드 때문입니다.String은 Character들로 구성각 Character는 하나 이상의 유니코드 스칼라로 구성그래서 배열처럼 string[0] 이런 식으로 접근 불가그래서 Swift는 String.Index를 사용합니다 퀴즈: 👍? => U+1F44D인 단일유니코드스칼라.여기까지가 면접의 단골질문이자 당연히 알아야하는 것입니다. 물론 아닐수도..? 모르면 지금 배우면 됏죠!!ㅎㅎ..
Metal(2)-셰이더 코드 작성까지
·
면접준비
이전 글 요약https://codeisfuture.tistory.com/119 Metal(2)-셰이더 코드 작성까지이전 글에서 메탈이란 GPU에 접근하여 빠른 그래픽 처리를 가능하게 해주는 저수준 API라는 것을 학습했다. 즉 Spiritekit, Animation 밑의 있는 것!! 이번엔 그래서 메탈이 어떻게 렌더링을 하는지 살펴codeisfuture.tistory.com이전 글에서 Metal이란 GPU에 접근하여 빠른 그래픽 처리를 가능하게 해주는 저수준 API라는 것을 학습했습니다.즉 SpriteKit, Core Animation 밑에 있는 기반 기술이죠! 이번엔 Metal이 어떻게 렌더링을 하는지, 그리고 실제로 커스텀 필터를 어떻게 만드는지 자세히 살펴볼 계획입니다렌더링 프로세스Metal은 '초..
Metal(1)- 메탈을 알기전에 필요한 것들
·
면접준비
그래픽 관련 공부를 해야 할 계기가 생겼고, 이것도 하나의 기회라고 생각해서 블로그에 정리하면서 자세히 공부해보려고 합니다.예전에 AR 쪽 할 때 Metal을 본 것 같은데 기억이 안 나서 아예 처음부터 다시 정리해볼게요! Metal을 이해하려면 먼저 "왜 Metal이 필요했는가?"를 알아야 합니다. 그러려면 컴퓨터가 그래픽을 어떻게 처리하는지부터 차근차근 알아봐야겠죠?컴퓨터 아키텍처의 기초CPU: 컴퓨터의 두뇌ALU (산술논리장치): 수학적 연산과 논리 연산을 수행제어장치: 명령어를 해석하고 실행 순서를 결정레지스터: 고속으로 임시 데이터를 저장캐시메모리: 자주 사용되는 데이터와 명령어를 저장CPU는 순차적 처리에 최적화되어 있어서 복잡한 논리나 분기문을 잘 처리하지만, 같은 연산을 반복해야 하는 작업..
Autolayout 모든 것: 사이클부터 제약조건까지
·
면접준비
오토레이아웃이란?iOS 및 macOS에서 UI요소의 위치와 크기를 동적으로 관리하는 시스템: SuperView 크기가 변경되면, Constraints로 잡혀있는 값을 기준으로 본인의 크기를 적절하게 변화시키는 것입니다.레이아웃 업데이트 사이클Autolayout은 크게 3가지 레이아웃 처리 과정을 통해 화면을 그립니다.1. Update Constraints메서드가 호출되며 기존 제약 조건을 갱신하거나 새로운 제약조건을 추가하는 로직 수행2. Layout 계산: layoutSubviews 메서드가 호출되며 업데이트된 제약 조건을 바탕으로 실제 프레임 계산3. Display: draw 메서드 호출되어 계산된 프레임에 따라 화면이 그려진다.이 사이클은 엄격히 순차적으로 매번 실행되는 것이 아닌 UIKit 뷰 업..
파사드 패턴(Facade Pattern)
·
디자인패턴
: 구조적 디자인 패턴 중 하나로, 복잡한 라이브러리, 프레임워크 또는 서브시스템을 간단한 인터페이스로 감싸주는 역할을 한다.이로써 클라이언트가 시스템의 복잡성을 이해하지 않고도 필요한 기능을 쉽게 사용할 수 있게 해준다.파사드? 프랑스어로 건물의 정면이라는 듯. 실제 건물에서 정면은 내부의 복잡한 구조를 가리고 단순한 외관만을 보여주는것처럼 소프트웨어에서도 복잡한 내부 구조를숨기고 단순한 인터페이스만 외부에 노출시키겟다~ ex) 무신사 옷 CS주문 넣는다고 하자. 상담원이 파사드 역할이다. 상담원이 매장의 시스템에 맞춰 해당하는 대응을 해주고 우리는 그냥 전화하는것만으로도 충분하다. 핵심 목적:클라이언트가 서브시스템의 복잡한 내부 구조를 알 필요 없이 필요한 기능을 간편하게 사용.서브시스템과 클라이언트..
팩토리 패턴
·
디자인패턴
객체 생성을 캡슐화하는 생성 패턴중 하나이다. 객체를 직접 생성하는 대신, 팩토리라는 중간 객체를 통해 생성한다. 이렇게 되면 코드의 유연성이 높아지고, 객체 생성 로직을 한 곳에서 관리할 수 있어 유지보수가 쉬워진다. 팩토리 메서드 패턴언제쓰지?1. 단일 제품의 다양한 변형을 생성할 때2 어떻게 하나의 객체를 생성할 것인가에 초점을 맞춘다.ex) iOS 앱에서 배송 관리 앱을 만든다고 가정해봅시다. 처음에는 트럭(Truck)만 지원했기 때문에 모든 코드가 Truck클래스에 의존적입니다. 그런데 갑자기 배송 업체에서 "배(Ship)"도 지원해달라는 요청이 들어왔습니다.기존 코드: let transport = Truck()처럼 직접 생성.문제: Ship을 추가하려면 클라이언트 코드 전체를 수정해야 하고, ..
Adaptor Pattern (구조적 디자인패턴)
·
디자인패턴
요즘 디자인 패턴에 관한 개발 책을 읽고 있다. 취준 하며.. 그래서 이제 차차 인상 깊고 적용할만한 패턴을 정리할 계획이다. 우선 오늘은 어댑터 패턴이다.Adaptor Pattern이란?서로 다른 인터페이스를 가진 두 시스템을 연결하는 구조적 디자인 패턴입니다.기존 클래스의 코드를 수정하지 않고도 새로운 인터페이스 맞춰 사용할 수 있도록 중간에서 "어댑터"역할을 하는 객체를 제공하는 것!왜 어뎁터냐면 일본에 가면 한국에서 사용하는 콘센트와 달라서 꽂을 수 없다. 이때 사용하는게 어댑터이다. 비슷한 개념입니당ㅎ등장배경- 호환성 문제: 서로 다른 인터페이스를 가진 모듈이 협력해야 하는 상황이 많다. 기존 레거시 코드와 새로운 시스템 통합하거나 서로 다른 라이브러리 함께 사용할때 인터페이스가 맞지 않는 경우..
Apple의 보안
·
면접준비
오늘은 외부에서 어떻게 신뢰할수 있는 앱을 다운받을 수 있는지와 그러더라도 앱을 다운받았지만 해킹프로그램이 있을때 어떻게 보안을 하는지에 대해 얘기해볼것이다.프로비저닝 프로파일애플에서 어떠한 앱을 다운받기 위해서는 AppStore를 통해야한다. 즉 신뢰할 수 있는 앱만 실행할 수 있도록 되어있다.신뢰할 수 있어? = 그 개발자 신뢰 가능? 이라고 보면된다. 앱스토어 말고 우리는 앱을 깃허브 클론이나 다른 방식으로 받을 수 있다.프로비저닝 프로파일이 디바이스가 특정 개발자의 앱을 신뢰하고 실행할 수 있게 해준다. 구성요소: 앱 ID(bundle), 앱 실행이 허용된 디바이스 UUID, 인증서, 권한(푸쉬알림 등)프로비저닝 프로파일 종류1. Development: 개발 및 디버깅을 위한 프로필. 등록된 개발..