본문 바로가기

전체글

(19)
Linux cheatsheet 개요이 글은 리눅스에서 자주 사용되는 기능들과 핵심이 개념에 대해 간략하게 정리한 글이다개인적으로 리눅스를 이용한 작업 경험을 하면서 이젠 익숙한 것들보단, 항상 쓰려고 하면 잘 기억이 안 나서 찾아보고 사용한 유용했던 기능들을 우선적으로 정리하려 했다 앞으로 글은 아래와 같이 카테고리로 나눠서 진행한다 파일파일시스템(+inode)과 마운트 셸프로세스부팅네트워크로그 파일리눅스는 모든 것이 파일이라는 철학을 바탕으로 설계되었다파일 개념파일은 물리적 저장 매체와 관계없이 데이터의 "추상화"된 표현이자디바이스, 프로세스, 네트워크 연결 등 모든 것의 표현을 파일로 "통일"했으며각 파일은 속성과 권한(소유자, 그룹, 접근 권한 등)을 포함한 "메타데이터"를 가진다파일 종류일반 파일텍스트, 이미지, 오디오 파일 ..
Xcode Cloud와 Sparkle framework 개요이 글은 Xcode Cloud를 통해 간편하게 CI/CD를 수행하고, Sparkle을 통해 앱에서 간편하게 업데이트 구현하는 법에 대해 정리한다 Sparkle을 이용한다면 앱에 조금의 코드 추가로 앱에서 설정한 URL을 통해 appcast.xml을 얻어 업데이트를 수행할 수 있다 앞으로 우선 Xcode Cloud에 대해 잠깐 정리하고, Sparkle을 통한 업데이트 구현을 위해 알아야 할 내용들을 간단하게 이해하고, 이후 앱 부분에서 좀 더 자세한 내용들에 대해 알아본다  Xcode CloudSparkle Framework앱 설정과 구현 Xcode CloudXcode Cloud는 클라우드에서 앱 빌드, 테스트 등의 서비스를 제공한다 Xcode Cloud 설정에서 깃헙 레포지터리를 등록하면, 해당 브랜..
Objective-C 개요이 글은 Objective-C에 대해 공부하며 메모한 글이다 모든 내용을 자세하게 정리하지 않았지만, 기본적으로 C를 알고있는 상태에서 Objective-C에 대해 배울 때, 해당 언어만 독특하게 가지고 있는 요소들을 중심적으로 정리했다 Objective-C와 SwiftMethod와 FunctionStructClassCategory와 ExtensionProtocolBlockError handling Objective-C와 SwiftApple은 2014년에 Swift를 도입했지만, 많은 기존 프로젝트와 라이브러리가 Objective-C로 작성되어 있었기 때문에 두 언어 간의 원활한 상호 작용이 필수적이었다이를 위해 Apple은 다음과 같은 상호 운용성(interoperability) 메커니즘을 구현했다..
WidgetKit 개요 이 글은 WidgetKit에 대해 정리한 글이다참고로 위젯은 기본적으로 인터렉션이 불가능하나, AppIntent를 이용하면 가능하다(SwiftUI Button은 action 대신 intent 인자도 가진다!)AppIntent를 이용한 인터렉티브한 위젯에 대해서는 다음 기회에 알아보고 우선 App Group과 WidgetKit 구성요소들을 알아본다이 글에서 핵심 키워드들은 다음과 같다 App GroupWidgetBundleWidgetWidgetConfigurationProviderEntryEntryView(View)WidgetCenter App GroupApp Group을 사용하면 같은 개발자가 만든 앱과 그 앱의 확장 기능들 간에 파일, 사용자 기본 설정, 데이터베이스 등을 공유할 수 있다(동일한 ..
Transferable 개요이 글에서는 Transferable에 대해 자세히 정리한다그리고 Drag&Drop 기능에서 Transferable이 사용되는 예시에 대해 알아본다 TransferableTransfer TypeData TransferFile TransferCustom TransferDrag & Drop TransferableA protocol that describes how a type interacts with transport APIs such as drag and drop or copy and paste Transferable에 대한 문서에서의 설명은 위와 같고, String, Data, URL, Image와 같은 시스템 유형 자체는 이미 Transferable을 준수하고 있다 Transferable 프로토콜을..
macOS 앱 배포 정리 개요macOS 앱을 앱스토어가 아닌 직접 배포를 수행하는데, 게이트키퍼에 올바르게 인식되도록 하려면개발자 인증서를 통한 코드서명과 앱에 대한 애플 서버의 공증이 필요하다 우선은 관련 키워드들에 대해 정리하고, 이후 배포 과정 및 배포 방식에서 이들이 언제 어떻게 쓰이는지 정리한다 빌드 결과물과 코드서명배포과정(검증, 배포, 공증)커맨드 명령어(코드서명, 공증, 배포 패키지)배포 쉘스크립트 빌드 결과물과 코드 서명앱을 배포하기까지 코드 → 아카이브 → 앱 과정을 거치는데 이와 관련된 키워드를 우선 정리하고 넘어간다 .xcarchiveXCode에서 생성된 앱의 빌드로, 앱의 모든 파일을 포함하는 번들이다다음과 같이 XCode를 실행하지 않고도 xcodebuild -scheme를 이용해서 아카이브 빌드를 수행..
Observer Pattern 개요TodoMate라는 프로젝트를 진행하면서 다음과 같은 기존 상황에서 리팩토링을 진행하고 있었다 TodosInMonthView특정 유저(userId)의 이번달 [Todo]를 보여주는 뷰TodoListView특정 유저(userId)의 오늘날짜의 [Todo]를 보여주는 뷰TodoManager실시간 업데이트가 적용되는 [Todo]를 가지고 filter를 통해 각각의 userId에 알맞은 TodoListView에 전달 기존에는 그냥 간단하게 TodoManager의 todos에 filter를 적용하여 TodoListView에 [Todo]를 전달했다 TodoManager는 실시간 업데이트와 CRUD 작업을 수행하면서 상태를 가지는데, 다시보니 너무 많은 역할을 가지고 있다고 생각했고TodoListView도 tod..
Cannot preview in this file 개요 프로젝트 앱 코드를 작성하는데 한동안 프리뷰를 안 쓰다가, 프리뷰를 사용해 보려는 어느 순간 오류가 발생했다어디서 언제 발생하게 되었는지 잘 모르겠어서 오류가 발생할만한 코드를 찾으며 시간을 낭비하고, 결국 Crash Log를 분석해가며 알게 된 내용을 정리한다 흔한 오류 해결법Preview가 안 되는 이유는 여러 가지가 있을 수 있는데, 다음과 같은 방법들로 해결할 수 있다 XCode와 관련해서 가장 간단하지만 효과적인 방법으로 XCode 재시작을 하는 것과 Derived Data 삭제 및 Clean Build Folder 수행이다Derived Data는 XCode가 프로젝트를 빌드할 때 생성하는 임시 파일들을 저장하는 디렉터리다/Users/USERNAME/Library/Developer/Xcod..