분류 전체보기

· iOS/Swift
https://developer.apple.com/videos/play/wwdc2022/110352/ Generic 모델링에 some/any를 적용하는 방법을 설명한 WWDC22 영상입니다. Farm을 시뮬레이션 하기 위한 예시. 추상화 도구들을 사용하기 전의 Concrete 타입의 예시부터 작성. Concrete 타입으로 먼저 모델링 Cow 구조체는 Hay(건초) 타입의 매개변수를 받는 eat()이라는 메서드가 존재하고, Hay 구조체는 Alfalfa 종류의 작물을 재배하기 위한 grow()라는 static 메서드가 존재. Alfalfa 구조체는 Alfalfa인스턴스에서 Hay를 수확할 수 있는 harvest() 메서드가 존재. Farm 구조체는 Cow에게 먹이를 줄 수 있는 feed() 메서드가 있음..
· iOS/Combine
Combining Operator을 사용하면 서로 다른 Publisher가 방출한 이벤트를 결합(combine)하고 결합 코드에서 의미 있는 데이터 조합을 만들 수 있습니다. 예를 들어서 사용자 이름, 비밀번호, 체크박스 등의 입력이 필요한 양식의 경우 각각의 Publisher를 조합해서 동작하도록 만들 수 있습니다. 먼저 prepend 연산자 시리즈입니다. prepend는 '앞에 붙이다'라는 뜻처럼 Publisher에서 나오는 값보다 먼저 나오는 값을 지정해줄 수 있습니다. (Rx의 concat과 유사) prepend 연산자 시리즈 prepend(Output...) prepend(Output)는 ... 구문을 사용하여 다양한 값 리스트를 받습니다. 즉, 원래 Publisher와 동일한 출력 타입인 값을..
· Dev Tips
http://mermaid.js.org 최근에 다이어그램을 그릴 일이 있어서 자주 접하게 된 Mermaid.js라는 도구를 정리해봅니다. Mermaid는 다이어그램, 차트 등을 마크다운으로 그리기 쉽게 해주는 라이브러리입니다. Flow Chart, Sequence Diagram, Class Diagram, State Diagram, ER(Entity Relationship)Diagram, User Journey, Gantt, Pie Chart, Quadrant Chart, GitGraph Diagram, MindMap, TimeLine등 굉장히 다양한 다이어그램 및 차트를 지원합니다. 차트 모양을 바로 확인하면서 작성할 수 있는 Live Editor도 지원합니다. https://mermaid.live/ ..
· iOS/Swift
Building ifelse 아래에서는 R이 사용하는 통계 프로그래밍 언어와 같은 ifelse() 문을 구현. // R ifelse(condition, valueTrue, valueFalse) Swift 삼항 연산자 condition ? valueTrue : valueFalse 과 동일한 작업을 수행. 플레이그라운드에 아래 코드를 작성. func ifelse(condition: Bool, valueTrue: Int, valueFalse: Int) -> Int { if condition { return valueTrue } else { return valueFalse } } let value = ifelse( condition: Bool.random(), valueTrue: 100, valueFalse: ..
· iOS/Swift
LLVM 프로젝트는 모듈식의 재사용 가능한 컴파일러와 툴체인의 집합. LLVM이라는 이름은 약자가 아니며 그것이 오픈소스 프로젝트의 풀 네임. (LLVM은 Swift 뿐만 아니라 Kotlin, Rust 등에서도 사용중) Swift 툴체인의 핵심은 Swift 컴파일러이며 소스 코드(.swift)를 실행 파일에 연결할 수 있는 object코드(.o)로 변환하는 역할을 함. LLVM 컴파일러 인프라에서 실행되는 데이터 흐름. Parse(구문 분석): Swift 소스 코드는 먼저 토큰으로 Parse되고 Abstract Syntax Tree(AST. 추상 구문 트리)에 입력됨. 이것은 각 표현식이 노드인 트리라고 생각할 수 있음. 노드는 또한 소스 위치 정보를 가지고 있어서 error가 감지되면 노드는 문제가 발..
· iOS/Combine
Publisher가 내보내는 값이나 이벤트를 제한하고 그 중 일부만 소비하고 싶을 때 유용한 Filtering Operator입니다. 💡 Filtering Operator에는 try 접두사가 붙은 유사 Operator(예: filter와 tryFilter)가 있습니다. 유일한 차이점은 끝에서 throw하는 클로저를 제공한다는 것. 클로저 내에서 던지는 모든 오류는 던진 오류와 함께 Publisher를 종료합니다. 여기서는 non-throwing Operator에 대해서만 정리합니다. filter (= RxSwift의 filter) Swift 표준 라이브러리에도 있고 모두가 익숙한 Filtering Operator의 기본입니다. Bool을 반환하는 클로저에 일치하는 값만 전달시킵니다. filter의 예시입..
· iOS/iOS Dev
https://developer.apple.com/news/?id=z6fu1dcu List of APIs that require declared reasons now available - Latest News - Apple Developer Apple is committed to protecting user privacy on our platforms. We know that there are a small set of APIs that can be misused to collect data about users’ devices through fingerprinting, which is prohibited by our Developer Program License Agreement. To develope..
· iOS/Swift
이번 WWDC23의 Expand on Macros 세션의 전반부 정리. (https://developer.apple.com/wwdc23/10167) Swift Macro는 컴파일러를 수정하지 않고 Swift 패키지에 배포할 수 있는 방식으로 boilerplate코드를 제거하고 Swift에 고유 언어기능을 추가 가능. 4가지 목적 1. Macro를 사용할 때 매우 명확해야 할 것. 2종류의 Macro. FreeStanding Macro: 코드에서 다른 항목을 대신함. #(pound)기호로 시작 Attached Macro: 코드 선언에서 attribute로 사용됨. @(at)기호로 시작 Swift는 이미 #과 @를 사용해서 특정 컴파일러 동작을 나타내고 있지만, Macro로 이를 확장할 수 있게 만듦. #이..
· iOS/iOS Dev
CryptoKit Documentation: https://developer.apple.com/documentation/CryptoKit (WWDC19)Cryptography and your apps: https://developer.apple.com/videos/play/wwdc2019/709/ (Cryptography and your apps 세션의 Introducing Apple CryptoKit 파트의 정리) CryptoKit에서 할 수 있는 것 Hash 함수: SHA-256, SHA-384, SHA-512 Symmetric-Key Cryptography Message Authentication Code: HMAC Authenticated Encryption: AES-GCM(Chacha20Poly..
· iOS/iOS Dev
GitHub - uber/RIBs: Uber's cross-platform mobile architecture framework. Uber's cross-platform mobile architecture framework. - GitHub - uber/RIBs: Uber's cross-platform mobile architecture framework. github.com RIBs는 Uber에서 만든 Cross Platform 아키텍쳐입니다. → 도입시 iOS와 Android가 동일한 아키텍쳐를 사용하여 플랫폼간 협업 및 비즈니스 로직 코드를 교차 검증할 수가 있다는 이점이 생깁니다. RIBs는 여러 Riblet(리블렛, 하나의 기능단위. 이하 RIB)으로 구성되며 Router, Interactor,..
· iOS/iOS Dev
(Xcode 15부터는 최소 버전이 iOS12 입니다🤩 개발자의 Inner peace!) 그리고 Xcode의 용량이 대폭 줄어들었습니다! (하지만 시뮬레이터들 미포함 용량입니다) Xcode Download 이제 개발자 사이트에서 Xcode를 다운로드 받을 때, 함께 받을 시뮬레이터를 선택해서 받을 수 있습니다. Code Completion 코드 자동완성이 좀 더 똑똑해졌다고 합니다. 예시로 PlantSummaryRow라는 Swift파일을 생성하고, 해당 파일에서 struct를 작성할 때 파일명을 자동완성에서 추천해줍니다. 일부 completion이 표시되는 방식을 개선. 기본 인수가 있는 함수를 호출할 때, 원하는 매개변수를 정확히 가져오는 것이 불편했던 것이 개선되었습니다. 기본 인수의 가능한 모든 순..
· iOS/Swift
What’s new in Swift - WWDC23 - Videos - Apple Developer Join us for an update on Swift. We'll show you how APIs are becoming more extensible and expressive with features like parameter packs... developer.apple.com if/else문의 향상 복잡한 조건을 기반으로한 let 변수를 초기화하려면 아래와 같은 복잡한 삼항 표현식이 나올수도 있습니다(있나!?). let bullet = isRoot && (count == 0 || !willExpand) ? "" : count == 0 ? "- " : maxDepth (R1, R2) func evalu..
Platforms State of the Union을 훝고 갑니다. 추후 각 세션 정리 예정입니다. Swift Swift Macros Boilerplate 코드를 좀 더 깔끔하게 만들어 줄 수 있는 방법입니다. 위처럼 @가 붙은 attribute일 수도 있고, 독립적으로 #이 붙은 형태일 수도 있습니다. 이 #URL Macro는 URL을 초기화하여 언래핑시켜주는 코드인데, 해당 Macro에서 Expand Macro를 통해 확인이 됩니다. 그 뿐만 아니라 유효한 URL String인지도 컴파일 타임에 체크해주고, 올바른 코드를 작성할 수 있도록 커스텀 피드백을 할 수 있게 해줍니다. fetchContent(_:completion:) 함수에 async/await을 사용하고 싶을 땐, 위처럼 @AddAsync..
https://www.apple.com/kr/newsroom/2023/05/apple-previews-live-speech-personal-voice-and-more-new-accessibility-features/ Apple, Live Speech, Personal Voice 등 새로운 손쉬운 사용 기능 사전 공개Apple이 오늘 인지, 시각, 청각 및 운동 능력에 대한 손쉬운 사용 소프트웨어 기능을 언어 장애가 있거나 관련 위험에 처한 사용자를 위한 혁신적인 도구와 함께 사전 공개했다.www.apple.com 얼마전 애플에서 WWDC를 앞두고 손쉬운 사용 기능의 대폭 업데이트에 대한 예고를 했습니다. 이번 출시 예고를 보면서 느낀건, '애플은 접근성 지원에 정말 진심이다. 그리고 방향성을 다시 한번 ..
· Refactoring
클래스로 묶으면 함수들이 공유하는 공통 환경을 더 명확하게 표현할 수 있고, 각 함수에 전달되는 인수를 줄여서 객체 안에서의 함수 호출을 간결하게 만들 수 있습니다. 그리고 이런 객체를 시스템의 다른 부분에 전달하기 위한 참조를 제공할 수 있습니다. 클라이언트가 객체의 핵심 데이터를 변경할 수 있고, 파생 객체들을 일관되게 관리할 수도 있습니다. (1) 함수들이 공유하는 공통 데이터 레코드를 캡슐화: 공통 데이터가 레코드 구조로 묶여 있지 않다면 '매개변수 객체 만들기'로 데이터를 하나로 묶는 레코드를 만들기 (2) 공통 레코드를 사용하는 함수 각각을 새 클래스로 옮기기: 공통 레코드의 멤버는 함수 호출문의 인수 목록에서 제거 (3) 데이터를 조작하는 로직들을 '함수로 추출'해서 새 클래스로 옮기기 아래..
SwiftyCody
'분류 전체보기' 카테고리의 글 목록 (3 Page)