J.BLOG

카테고리

IT/기술

기술 개념과 도구를 정리한 글

IT/기술

macOS 27에서 끊긴 Time Capsule 백업, TimeCapsuleSMB로 되살린 기록

macOS 27은 AFP 클라이언트를 제거해 Time Capsule을 Time Machine 대상으로 쓸 수 없습니다. 4세대 Time Capsule에 TimeCapsuleSMB로 SMB3 Samba를 올린 절차와, 설치 전에 꺼야 할 NBNS·텔레메트리 설정을 정리합니다.

IT/기술

iOS·Android·Web 광고 노출: loaded·rendered·impression 구분법

광고 SDK의 load·impression·paid callback과 Web 가시성 신호를 분리해, 자동 수집과 수동 로깅이 중복되지 않는 이벤트 계약을 정리합니다.

IT/기술

Game Center·Play Games 리더보드: 날짜 경계·제출 신뢰성

퍼즐 날짜, 점수 제출 시각, 플랫폼 표시 구간을 분리하고 best-effort 보류와 durable outbox 사이에서 리더보드 전달 보장을 선택하는 방법을 정리합니다.

IT/기술

위치 권한 없이 광고를 지역화하기: GeoIP와 Provider Chain 설계

OS 위치 권한 없이 동의 상태와 GeoIP 힌트로 광고 Provider Chain을 구성하고, 실패를 안전하게 흡수하는 방법을 정리합니다.

IT/기술

검증 스크립트가 성공을 거짓말할 때: Negative Control과 Mutation으로 자기검증하기

검증 스크립트가 실제 결함을 탐지하는지 Negative Control과 입력 Mutation으로 확인하고, baseline과 실패 계약을 CI에 고정하는 방법을 정리합니다.

IT/기술

Rust 공통 모듈을 크로스플랫폼에서 공유하기 - 7편. 테스트와 CI로 같은 결과 보장하기

Rust 공통 모듈이 iOS·Android·Web에서 같은 결과를 내도록 cargo test, golden fixture, 플랫폼별 CI job 분리, release checklist를 어떻게 나눌지 정리합니다.

IT/기술

Rust 공통 모듈을 크로스플랫폼에서 공유하기 - 6편. WebAssembly로 Web에 배포하기

Rust 공통 모듈을 WebAssembly로 빌드해 Web 앱의 도메인 엔진으로 쓰는 구조를 wasm-bindgen, wasm-pack, browser 초기화 경계, FFI 계약, fixture 공유 기준으로 정리합니다.

IT/기술

Rust 공통 모듈을 크로스플랫폼에서 공유하기 - 5편. Android 네이티브 라이브러리 패키징

Rust 공통 모듈을 Android 앱에 넣을 때 ABI별 .so, Gradle task, UniFFI adapter, 16 KB page size 검증을 release artifact 기준으로 정리합니다.

IT/기술

Rust 공통 모듈을 크로스플랫폼에서 공유하기 - 4편. Apple 플랫폼과 XCFramework

Rust 공통 모듈을 iOS 앱에서 쓰기 위해 static library, XCFramework, Swift Package, UniFFI binding을 같은 release unit으로 묶고 Xcode와 CI에서 재현하는 기준을 정리합니다.

IT/기술

automationmodetool, Xcode UI 테스트의 Automation Mode 암호 프롬프트 정리

macOS에서 Xcode UI 테스트가 Automation Mode 암호 프롬프트에 막힐 때 automationmodetool이 정확히 무엇을 해결하는지 정리한다. TCC/PPPC 권한과 구분해 CI 러너 부트스트랩 위치까지 다룬다.

IT/기술

Rust 공통 모듈을 크로스플랫폼에서 공유하기 - 3편. UniFFI로 iOS와 Android 연결하기

Rust 공통 모듈을 iOS와 Android에서 함께 쓰기 위해 UniFFI 바인딩을 설계하고, generated binding을 adapter 뒤에 숨기는 구조와 모바일 런타임 고려사항을 정리합니다.

IT/기술

macOS 디버깅 권한 오류와 DevToolsSecurity -enable 작동 방식

macOS에서 디버깅 도구를 사용하거나 CI/CD 러너를 빌드할 때 마주치는 디버깅 권한 팝업을 차단하고, DevToolsSecurity가 내부 인증 데이터베이스를 어떻게 조작하는지 상세히 분석합니다.

IT/기술

Mac에서 Windows로 보낸 한글 파일명이 깨지는 이유: 자소 분리(NFD) 현상과 convmv 해결책

macOS에서 한글 파일명이 자소 분리(NFD)되어 Windows에서 깨지는 원인과 convmv를 사용한 해결 방법을 정리합니다.

IT/기술

Rust 공통 모듈을 크로스플랫폼에서 공유하기 - 2편. FFI 경계와 API 설계

Rust 공통 모듈을 크로스플랫폼에서 안전하고 효율적으로 호출하기 위해 FFI 경계를 잡고 API를 설계하는 구체적인 실무 전략을 정리합니다.

IT/기술

Rust 공통 모듈을 크로스플랫폼에서 공유하기 - 1편. 어디까지 Rust로 묶을 것인가

iOS·Android·Web에서 Rust 공통 모듈을 공유할 때 도메인 엔진의 경계를 어떻게 잡을지 정리한다. 무엇을 sudoku-core에 넣고 무엇을 플랫폼에 남길지, UniFFI·WASM 바인딩 계층과 앱 adapter 구조까지 다룬다.

IT/기술

iOS 런타임 폰트 등록, CTFontManagerRegisterFontsForURL 실무 정리

iOS에서 CTFontManagerRegisterFontsForURL로 폰트를 런타임 등록하는 방법. UIAppFonts와의 차이, PostScript name 확인, 저장 위치와 해제 시점을 정리한다.

IT/기술

Swift Package Registry, Git URL 의존성 이후를 준비하는 방법

SwiftPM의 Git URL 의존성을 넘어 scope.package-name 식별자 기반 Package Registry로. iOS 팀이 도입 전에 봐야 할 CI 속도, 의존성 재현성, 사내 패키지 배포, 패키지 서명, Xcode 설정을 정리한다.