전체 글(27)
-
macOS 앱에 Python 런타임과 pip 패키지 완전히 내장하기
안녕하세요. 하늘선입니다.블로그로는 꽤 오랜만에 인사드리는 것 같습니다. 오늘은 독립된 Mac앱에서 python 및 pip 패키지를 번들링 하는 법에 대해 기록을 남겨보고자 합니다.원래는 iOS도 같이 준비하려고 했으나 글이 길어지고 복잡해질 우려도 있고, 제가 조금 더 검증하고 같이 전달드리고 싶어서 macOS용으로 글을 먼저 쓰게 되었습니다. 먼저 이 글은 다수의 도전적인 실험을 바탕으로 남긴 내용이며, 잘못된 포함되어 있을 수 있다는 말을 미리 남기고 싶습니다.의견을 댓글로 달아주시면 좋겠습니다 :) 0. 이 방법을 찾게 된 계기먼저 이 방법을 찾게 된 계기부터 설명을 드리고 싶은데,이는 프로젝트 Applepie-RPC를 만들기 위함이었습니다.이 프로젝트는 아래 사진과 같이 디스코드에 애플뮤직의 현..
2025.09.25 -
SwiftUI - 조심스러운 첫 걸음
안녕하세요 하늘선입니다~! 영어 닉네임을 뭐로 정하지 고민을 하다가, 그냥 편하게 하늘선이라고 하기로 했어요 ㅎㅎ 인삿말이 길었네요. 오늘은 긴 휴식을 끝내고 새로운 시작을 해보고자, 각종 핑계를 대며 미루고 미뤄왔던 SwiftUI에 대한 공부를 해보려고 합니다 👀 iOS 전반적인 동향을 살펴보면, 이제 슬슬 현업에서 SwiftUI가 사용되기 시작하는 추세인 것 같아요. SwiftUI가 처음 나오고 난 후에서도 많은 개선이 이루어졌는데요, 특히 iOS 14 이후와 이전에 쓸 수 있는 메서드나 문법 차이가 큰 것 같아요. 그래서 이제 나름 안정화가 되었겠다 싶어…! 공부를 좀 해보려고 합니다. 일단 이렇게 샘플 프로젝트를 만들어주고,, 이렇게 폴더와 각종 파일들이 생긴 걸 알 수 있어요. 여기서 AppDe..
2023.11.30 -
NSLock
0. 개발자 문서 확인 먼저 알아보기 전에 NSLock에 관한 설명을 애플의 개발자 문서에서 먼저 찾아보았다. https://developer.apple.com/documentation/foundation/nslock An object that coordinates the operation of multiple threads of execution within the same application. “동일한 어플리케이션 내에서 여러 스레드를 조정하는 객체” 라고 나와 있었다. 1. Thread-Safe를 지키는 방법 Re-entrancy 어떤 함수가 한 스레드에 의해 호출되어 실행 중일 때, 다른 스레드에서 함수가 호출되더라도 올바르게 주어져야함 Thread-local storage 공유 자원을 줄여 각..
2022.05.25 -
Core Animation Pipeline
Commit Transaction Layout 단계: 레이어 정렬 및 위치와 색상을 정의 (layoutSubviews를 호출) Display: draw메서드들이 접근하는 단계. 개발자들은 직접 호출을 못하며 setNeedsDisplay를 사용하여 접근해야 한다. Prepare: Core Animation이 context를 내보내려고 할 때 image decoding과 같은 작업을 진행한다. Commit: Core Animation이 layer들을 패키징하여 Render Server로 전송한다. Render Server Commit Transaction에서 받은 패키지들을 다시 분석하고 렌더링 트리로 deserialization 한다. drawing instruction을 생성하고 VSync Signal에..
2022.05.24 -
defer
Swift를 사용하면서 거의 잘 활용하진 않았지만, 꽤나 흥미롭게 다가와 이 문법을 정리하게 되었다. 0. defer란 무엇인가? 현재 스코프를 벗어날 경우 가장 마지막에 실행이 되는 구문이다. 처음 보면 이해가 잘 가지 않겠지만 예시를 이해하다 보면 생각보다 금방 이해할 수 있다. 1. defer 활용해보기 위와 같이 구성을 한 후 결과를 출력해보았다. 그랬더니 b, a, c 순서대로 출력이 되는 것을 확인 할 수 있었다. 간단하게 설명하자면 defer는 함수의 가장 마지막에 실행이 된다는 것을 보장하는 것이다. 1-1. defer 여러개 쓰기 그렇다면 defer를 여러개로 쓰게 된다면 어떻게 될까? 이렇게 defer를 여러개 쓰게 된다면 2, 1 순서로 출력된다. defer는 스택의 형식으로 사용되며..
2022.05.24 -
CADisplayLink
0. 개발자 문서 확인 iOS에서 뷰 생성과 애니메이션을 공부하던 중 CADisplayLink라는 것을 알게 되었다. 간단히 살펴본 것으로는 화면이 업데이트될 때마다 호출되는 객체라고 적혀있었다. 그래서! 이런 것은 또 못 참고 지나가기에 직접 실험을 진행해보고 싶었다. 일단 제일 먼저 확인할 애플 개발자 문서...! https://developer.apple.com/documentation/quartzcore/cadisplaylink 1. 간단 프레임률 측정 import UIKit final class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() createDisplayLink() // Do an..
2022.05.23