본문 바로가기

분류 전체보기

(31)
Multithreading with GCD 1 - Queues & Threads GCD(Grand Central Dispatch)의 존재이유? 다양한 크기의 작업을 비동기적으로 실행하고 관리하는 데 사용되는 강력한 기능을 제공합니다. GCD를 사용하면 코드의 구현이 단순해지고, 성능이 향상될 수 있습니다. Threads Thread는 실행 중인 프로세스가 시스템 리소스를 효율적으로 분할하는 방법 중 하나입니다. 즉, 하나의 프로세스 내에서 여러 개의 스레드가 동시에 실행될 수 있으며, 각 스레드는 프로세스의 리소스를 공유하여 작업을 처리합니다. 이를 통해 다중 작업을 처리하고, 빠른 응답성과 성능을 보장할 수 있습니다. iOS 앱은 여러 스레드를 활용하여 여러 작업을 실행하는 프로세스입니다. 장치에 있는 코어의 갯수만큼 많은 스레드를 활용할 수 있습니다. (앱의 특정 요구 사항과 하..
[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. 홈페..
🥕당근마켓 티타임 (feat. Let's Swift 2022) 작년 11월 30일 처음으로 렛츠 스위프트 행사를 직접 참가했는데 그중 가장 기억에 남았던 당근마켓 티타임을 요약해 보았다. 당근마켓 코드리뷰 문화에 대해서 설명하고 질문 응답시간을 가졌었다. 사전리뷰 (슬랙에 올린 사진이 있던 것 같은데 찍지 못해서 없습니다 ㅜ) 코드리뷰 pr을 하기 전에 사전에 모여서 이야기를 하게 됩니다. 그래서 올렸을 때 문서 같은 것들은 이런 식으로 올려주셔서 어떤 목표를 하고 있고, 어떤 배경을 가지고 있는데 접근 방식으로 1, 2, 3 이렇게 제안을 해 주시면 챕터분들이 모여서 같이 이제 사전에 리뷰를 하고 이것을 진행하는 형태로 운영됩니다. 코드리뷰 중요하게 생각하는 것은 하나의 맥락을 가진 최소 단위의 pr을 올리는 것, 그 맥락을 알 수 있는 논문을 작성하는 것 , 리..
[Swift] 개인프로젝트 회고 - 서버(Firebase) 를 아껴쓰기위한 노력 문제점: 처음 앱을 실행할때 피드를 불러오는중 얼마 지나지 않아 Firebase의 Storage가 동이나버림 해결을 위하여 문제점을 고안해 보았다. 첫번째, 각 피드에 보여지는 이미지는 썸네일이미지 하나이지만 서버에서 불러오는 이미지는 썸네일 이미지 를 포함한 피드에 저장된 모든 이미지들을 모두 긁어오고있다. 두번째, 사진속 피드의 이미지들은 현재 인기탭, 최신탭을 왔다갔다 할 때마다 중복된 피드들의 이미지를 서버에서 중복으로 불러오고 있다. 세번째, 당연히도 아직 이미지를 캐싱하지 않고있다. 내가 생각했던 문제점들은 이정도가 있었다. 첫번째는 현재의 로직을 리팩터링해야하고, 세번째는 새로운 기능을 추가해야되므로 첫번째 문제부터 해결하는 것이 더 효율적일것 같았다. 두번째 문제는 이미지 캐싱을 통하여 해..
iOS App Main Run Loop, Update Cycle iOS App Main Run Loop iOS Main run loop Handling all user input events and triggers the appropriate responses in your application 앱 안에서 사용자의 입력 이벤트나 행동을 알맞은 응답으로 핸들링하는 것 모든 User interaction을 event queue에 추가 Event queue에 추가된 모든 event들을 application 안에 다른 objects에 전달한다. (사진 속의 Application object로 전달한다?) 본질적으로 사용자 입력 event를 해석하고 그에 해당하는 handler들을 core object에서 불러오는 식으로 run loop가 실행된다. 이 handler들은 개발..
Picker and Date Picker Pickers picker는 사용자가 선택하는 하나 혹은 여러 개의 별개의 목록들을 스크롤 가능한 상태로 표시할 수 있다. 날짜 picker는 달력 view에서 날짜를 선택하거나 숫자 키패드를 이용하여 날짜를 입력하는 방식으로 추가적인 값을 선택하는 방법을 제공해준다. 두가지 방법의 picker들은 단일 혹은 다중의 값들을 사용자가 선택하여 입력하기 쉽게 해 준다. 요구사항 picker을 사용하여 중간~긴 리스트의 아이템을 제공하는 것을 고려하세요. 만약 상당히 짧은 리스트의 선택을 표시해야 한다면, picker 대신에 pull-down button을 사용하는 것을 고려하세요. picker를 사용하면 많은 아이템들을 빠르게 스크롤 함으로써 쉽게 보이게 할 수 있지만, 짧은 리스트의 아이템에는 너무 많은 ..