본문 바로가기

Swift/개인프로젝트

(5)
[Swift] Petpion - 과연 Swift Concurrency를 제대로 활용하고 있는가? 안녕하세요! 제 두 번째 개인 프로젝트 Petpion이 2023년 5월 27일 앱스토어에 출시가 되었습니다. Petpion은 제가 1부터 100까지 혼자 힘으로 개발한 앱입니다. 그래서 더욱 다양한 새로운 기술들을 시도해 본 앱 이기도 한데 그중 오늘은 Concurrency에 대하여 다루어 보려 합니다. WWDC 2015 - Building Responsive and Efficient Apps with GCD WWDC 2016 - Concurrent Programming With GCD in Swift 3 WWDC 2017 - Modernizing Grand Central Dispatch Usage WWDC 2022 - Eliminate data races using Swift Concurrency 20..
[Swift] Petpion - Apple, Kakao Login with OAuth OAuth (Open Authorization) OAuth는 인증을 위한 수단(프로토콜)입니다. 우린 수많은 웹, 앱 서비스의 아이디와 비밀번호를 모두 기억할 수 없기에 OAuth를 통해 몇몇의 다른 서비스의 접근 권한을 다른 애플리케이션에서도 사용할 수 있도록 하는 것이죠. OAuth의 초기버전인 1.0 과 현재 상용화된 2.0 버전의 차이점은 웹 애플리케이션에서 처음 사용된 버전이 1.0 버전, 이를 애플리케이션 지원 강화한 것이 2.0 버전입니다. 즉, 위 사진에 SNS 계정으로 로그인 부분이 OAuth를 활용한 것 입니다. 요즘은 새로운 서비스를 이용할 때 대부분 저 기능이 삽입되어 있고 많이 사용하기도 하죠. OAuth 2.0의 절차를 간략히 설명하면 다음과 같습니다. 클라이언트(애플리케이션)는..
[Swift] Petpion - 모듈화를 위한 도구 (Tuist, Swinject) 첫 프로젝트인 당프로젝트를 마치고 나서 든 생각은 후련하다, 시원하다 보다는 앱이 출시되고 나서도 더욱 불안한 느낌뿐이었습니다. 첫 프로젝트에서 cleanArchitecture를 기반으로 나눈 세 가지 layer(presentation, domain, data), mvvm, RxSwift 모두 앞선 교과서 격의 예제를 보고 따라 하듯 만든 느낌이 다분해서 그랬던 것 같습니다. 첫 프로젝트에서 개인적으로 가장 큰 수확이라고 느꼈던 부분은 협업간에 .xcodeproj 파일의 git conflict를 처음 경험하고 이를 해결하기 위한 방법을 모색하다가 tuist를 통해 프로젝트를 관리한 것입니다. 이를 통해 github상에. xcodeproj 파일과. xcworkspace 파일을 삭제해도 프로젝트를 생성하고 ..
펫피언-개인정보처리방침 ('petpion.com'이하 '펫피언(Petpion)')은(는) 「개인정보 보호법」 제30조에 따라 정보주체의 개인정보를 보호하고 이와 관련한 고충을 신속하고 원활하게 처리할 수 있도록 하기 위하여 다음과 같이 개인정보 처리방침을 수립·공개합니다. ○ 이 개인정보처리방침은 2023년 1월 1부터 적용됩니다. 제1조(개인정보의 처리 목적) ('petpion.com'이하 '펫피언(Petpion)')은(는) 다음의 목적을 위하여 개인정보를 처리합니다. 처리하고 있는 개인정보는 다음의 목적 이외의 용도로는 이용되지 않으며 이용 목적이 변경되는 경우에는 「개인정보 보호법」 제18조에 따라 별도의 동의를 받는 등 필요한 조치를 이행할 예정입니다. 1. 홈페..
[Swift] 개인프로젝트 회고 - 서버(Firebase) 를 아껴쓰기위한 노력 문제점: 처음 앱을 실행할때 피드를 불러오는중 얼마 지나지 않아 Firebase의 Storage가 동이나버림 해결을 위하여 문제점을 고안해 보았다. 첫번째, 각 피드에 보여지는 이미지는 썸네일이미지 하나이지만 서버에서 불러오는 이미지는 썸네일 이미지 를 포함한 피드에 저장된 모든 이미지들을 모두 긁어오고있다. 두번째, 사진속 피드의 이미지들은 현재 인기탭, 최신탭을 왔다갔다 할 때마다 중복된 피드들의 이미지를 서버에서 중복으로 불러오고 있다. 세번째, 당연히도 아직 이미지를 캐싱하지 않고있다. 내가 생각했던 문제점들은 이정도가 있었다. 첫번째는 현재의 로직을 리팩터링해야하고, 세번째는 새로운 기능을 추가해야되므로 첫번째 문제부터 해결하는 것이 더 효율적일것 같았다. 두번째 문제는 이미지 캐싱을 통하여 해..