programming 43

[Swift/iOS] (Base) XML Parser를 만드는 과정, 설계부터 고민까지

Swift로 XML Parser 만들기, 설계부터 고민까지1. 이야기의 시작프로젝트에서 XML 응답을 파싱해야하는 일이 생겼습니다. 주로 API로부터 응답은 JSON 포맷으로 받게 되지만 어쩌다 한번씩 XML 포맷으로 응답을 받는 경우가 있습니다.흔하지 않은 경우이기도 해서 그때마다 필요한 데이터나 정보에 맞게 Parser를 만들었습니다.하지만 생각보다 XML 포맷의 응답이 많아지고 있었습니다.Swift의 XMLParser의 불편한 문제기본으로 제공하는 XMLParser는 실제로 사용하는데 몇가지 불편한 점이 있습니다.XMLParser는 데이터를 한 줄, 한 줄 읽으면서 파싱을 하게 됩니다.현재 어느 위치에서 파싱이 진행되는지 알 수 없기 때문에 이 위치를 알기 위해서는 수 많은 추가 작업들이 필요합니다..

[Swift/iOS] Jailbreak Detection(탈옥 감지)의 필요성

Jailbreak Detection, 완벽한 방어는 없지만 그래도 해야 하는 이유1. 들어가며iOS 개발을 하다 보면 보안 관련 작업은 왠지 "굳이 하지 않아도 되는 것"처럼 느껴질 때가 있습니다. 애플의 보안성을 믿기도 하고, 요즘도 탈옥하는 사람이 있나? 싶은 마음도 있습니다. 기능 개발도 바쁜데, 탈옥 감지나 앱 무결성 검증까지 신경 써야 하나 싶기도 합니다. 그럼에도 불구하고 왜 해야 하는지, 어떻게 접근해야 하는지를 이야기해보려 합니다.이 글에서는 iOS의 기본 보안 구조를 살펴보고, 탈옥이 그 구조를 어떻게 무너뜨리는지, 공격자가 실제로 무엇을 할 수 있는지, 그리고 탈옥 감지와 앱 무결성 검증을 어떻게 구현하는지까지 차근차근 살펴보겠습니다.2. iOS 보안 개념iOS 샌드박스란?iOS의 모든..

[macOS] .pkg(.dmg) 배포를 위한 서명 및 공증(Notarization)

macOS 앱을 배포할 때 가장 까다로운 부분 중 하나가 바로 공증(Notarization) 과정입니다.여러 개의 .dmg 앱이 포함된 .pkg 파일을 만들면서 직접 겪고 해결한 과정들을 정리해 보았습니다. [macOS] .pkg 배포를 위한 서명 및 공증(Notarization)macOS 앱을 웹에서 직접 배포(Direct Distribution)하려면, 단순히 빌드하는 것만으로는 부족합니다.별다른 작업 없이 그냥 파일을 전달하면 사용자가 파일을 열었을 때 개발자가 인증되지 않아서 파일을 실행할 수 없다는 내용의 경고를 확인하게 됩니다.설정에 들어가서 경고를 무시하고 실행할 수 있도록 하는 불편한 과정을 감수해야 앱을 실행할 수 있습니다.이런 경고를 없애려면 Apple로부터 공증을 받아야 합니다.앱 서..

2026년 상반기 iOS 채용 트렌드 분석

최근 iOS 채용 트렌드: 기업 규모와 특성별로 달라지는 채용 방식2026년 초 iOS 개발자 채용 공고를 분석했습니다.채용하는 기업 규모 또는 특성별로 지원자에게 요구하는 역량을 정리했습니다.당근, 안랩, 29cm(무신사), 한국철도공사, 쿠팡, 하이퍼커넥트, KREAM, 카카오페이, 오늘의집, 토스플레이스, 쏘카일레클의 채용공고를 기반으로 작성했습니다.공통 트렌드“iOS 단독”보다 “제품 팀 기여”를 더 강하게 본다iOS 개발은 구현력만으로 차별화가 어려워지면서, 문제 정의 → 실험 → 개선 과정에 참여한 경험을 요구하는 비중이 커졌습니다.협업 역량은 단순 커뮤니케이션이 아니라, 요구사항을 설계 언어로 바꾸고 합의하는 능력으로 평가됩니다.채용 포지션이 “기능 개발”에서 “품질/성능/안정성”으로 이동신..

programming/Others 2026.03.28

[Vapor/Swift] 프로젝트 생성부터 NAS 배포까지: with 트러블슈팅

[Vapor/Swift] 프로젝트 생성부터 Synology NAS 배포까지: with 트러블슈팅클라이언트 개발자들은 항상 서버, 백, API에 굶주리곤 합니다.개인적으로 사용할 서비스에서 스케줄링 작업이 필요했습니다.주 언어인 Swift, Swift에서 사용할 수 있는 웹 프레임워크 Vapor, 집에서 사용중인 NAS를 이용해서 배포한 과정을 공유합니다.(Swift로 백엔드 개발하는 사람이 여기있네)자세한 설치 방법은 공식문서를 참고해주세요.전체적인 배포 흐름과 트러블슈팅을 중심으로 글이 작성되었습니다.사용하는 프로젝트도 vapor 생성 시 준비되는 기본 todo 프로젝트입니다.1. 프로젝트 시작하기터미널에서 프로젝트를 생성할 디렉토리로 이동한 뒤 아래 명령어를 입력합니다.vapor new sampleV..

programming/Server 2026.03.14

[Swift/iOS] 토큰 데이터를 KeyChain에 안전하게 저장하기

앱에서 로그인 후, 서버에서 반환되는 사용자 인증토큰(accessToken과 refreshToken)을 저장하려고 합니다.CoreData를 사용하기에는 너무 단순한 형태이고,UserDefaults에는 간단한 설정값을 저장하는데 주로 사용하기 때문에,인증토큰처럼 보안이 중요한 경우에는 다른 방법을 찾아보는게 좋다는 생각이 들었습니다. KeyChain은 암호화된 저장소로 토큰 데이터를 저장하기에 알맞다고 판단한 후 앱에서 사용해보았습니다. UserDefaults가 키-값 쌍으로 데이터를 저장하고 불러오는 것처럼, 키체인도 사용할 수 있습니다.다만 KeyChain은 데이터와 속성을 묶고 추가적인 보안 속성을 함께 사용할 수 있습니다. 키체인 서비스 KeyChain Service사용자를 대신해서 안전하게 작은 ..

[Swift/iOS] 애플 로그인 후 반환 값 ASAuthorizationAppleIDCredential From 공식문서

애플 로그인(Apple Authentication Services)를 적용시킨 후 반환되는 값에 대해서 살펴보고자 합니다.유저가 첫 로그인에 성공하면, 가입 후 애플 서버로부터 받은 유저 정보를 서비스하는 서버에 전달해야 합니다.서비스에서도 일부 정보를 사용하고 저장해야하기 때문입니다.(애플 서버가입 여부는 아이폰 기준, 설정 - Apple ID - 암호 및 보안 - Apple로 로그인 - Apple ID를 사용하는 앱에서 확인 가능) 서버 쪽에서는 이 전달받은 데이터를 다시 검증하는 것으로 알고 있습니다.authorization.credential as? ASAuthorizationAppleIDCredential첫 로그인 시 확인할 수 있는 값 중 identityToken과 authorizationCo..

[Swift/iOS] CoreData 사용하기(4) - 속성값 유무에 따른 데이터 저장, 속성의 optional 타입

https://modelinspring.tistory.com/92 [Swift/iOS] CoreData 사용하기(3) - 데이터 저장하기, 데이터 불러오기 기초https://modelinspring.tistory.com/91 [Swift/iOS] CoreData 사용하기(2) - CoreData Stack 설정하기 From 공식문서! 공식문서를 참고한 글입니다.https://developer.apple.com/documentation/coredata/setting_up_a_core_data_stack https://modemodelinspring.tistory.com위 포스트에 이은 CoreData 네 번째, 마지막 포스트입니다. 이전 포스팅에서는 Object에 값을 채운 후 데이터를 저장했습니다. 모든..

[Swift/iOS] CoreData 사용하기(3) - 데이터 저장하기, 데이터 불러오기 기초

https://modelinspring.tistory.com/91 [Swift/iOS] CoreData 사용하기(2) - CoreData Stack 설정하기 From 공식문서! 공식문서를 참고한 글입니다.https://developer.apple.com/documentation/coredata/setting_up_a_core_data_stack https://modelinspring.tistory.com/90 [Swift/iOS] CoreData 사용하기(1) - 프로젝트 중간에 추가하기, Entity 만들기Coremodelinspring.tistory.com위 포스트에 이은 CoreData 세 번째 포스트입니다. Core Data 데이터 저장하기이전 포스트에서 Car Entity를 만들어놓았습니다.이제..

[Swift/iOS] CoreData 사용하기(2) - CoreData Stack 설정하기 From 공식문서

! 공식문서를 참고한 글입니다.https://developer.apple.com/documentation/coredata/setting_up_a_core_data_stack https://modelinspring.tistory.com/90 [Swift/iOS] CoreData 사용하기(1) - 프로젝트 중간에 추가하기, Entity 만들기CoreData를 사용하기 위해서는 프로젝트 생성시에 Use Core Data를 체크하면 되지만,프로젝트 중간에 CoreData를 추가하게 되었습니다.이 과정을 살펴보겠습니다. 프로젝트 중간에 CoreData 추가하기Data Mmodelinspring.tistory.com위 포스트에 이은 CoreData 두 번째 포스트입니다.Core Data StackCore Data ..