전체 글 (12) 썸네일형 리스트형 Supabase랑 Firebase는 뭐가 달라요? 현재 진행중인 프로젝트에서 Supabase를 이용해 REST API를 구현하기로 했는데요,사실 이미 일부 서비스에 필요한 API는 구현에 성공했지만,누군가에게 도움이 될까 싶어 글을 올려봅니다SupabasePostgres 데이터베이스를 이용하는 오픈소스 백엔드 서비스입니다.인증, API, Storage 등 다양한 기능을 제공한다.firebase처럼 SDK와 REST API 모두 제공한다.Supabase vs Firebase?Supabase는 Firebase를 대체하는 목적이라고 많이들 들어보셨을 겁니다.Supabase vs Firebase공식 블로그에서 CTO가 말했던 부분들에 대해 하나씩 나열해보겠습니다.SQL을 이용한 데이터 쿼리대규모 사용 사례에서 오랜 사용 기록을 가지고 있습니다.트랜잭션 처리 워.. iOS UISwitch Thumb 커스텀하기 안녕하세요 우드입니다.프로젝트를 진행하면서 커스텀 스위치를 만들게 되었는데요,오늘은 UISwitch를 커스텀하는 방법에 대해 글을 작성해보도록 하겠습니다.Thumb스위치를 사용해보셨다면, On/Off 할 때 사용하는 동그라미 버튼을 알고 계실 것 같은데요Apple에서는 이름을 Thumb로 지칭하고 있습니다. Thumb는 엄지 손가락이라는 의미인데..왜 Thumb라고 지은건지 찾아보았는데, 잘 나오지를 않네요.제 생각에는 핸드폰을 손에 쥔 상태에서, 보통 스위치를 엄지 손가락으로 눌러서 그런거이지 않을까 추측해보았습니다.아쉽게도 Apple 공식문서에 Thumb를 커스텀하는 방식에는 tintColor만 나와있습니다.Thumb의 색상을 변경해주는 기능입니다. 그렇다면 Thumb의 이미지나 크기를 변경하려면 .. iOS)prepareThumbnail - async를 활용한 이미지 Downscaling 안녕하세요 우드입니다.첫 게시물이라 오타도 많을 것 같은데 댓글로 남겨주신다면 감사하겠습니다.🙇🏻♂️ CollectionView를 구현할 때 셀마다 이미지를 보여줘야 하는 디자인은 자주 보입니다.예시로 당근마켓에서 상품 목록 기능입니다. Animation Hitch앱에서 CollectionView를 스크롤하는 행위는 애니메이션입니다.애니메이션은 일정한 시간을 단위로 정지된 상태의 사진(Frame)의 모음으로,이러한 프레임 여러장을 짧은 시간 동안 한 번에 보여줌으로써 우리 눈에는 애니메이션으로 보이게 됩니다. 이러한 프레임을 그린 뒤, 사용자에게 보여주는 과정을 Render Loop라고 부르는데요이때 Render Loop가 새로운 프레임을 그리는 과정에 현재의 화면을 제시간에 그려내지 못하면사용자에.. TIL #9 사용자 Locale 정보 받아오기 프로젝트에서 캘린더를 만드는 과정에 Calendar 객체와 DateFormatter 객체를 사용하게 되었다. 두 객체에 Locale 정보를 입력할 필요가 생겼는데, Localization을 어떻게 적용할 수 있을까 공부하게 되었다. current, autoUpdatingToCurrent 프로퍼티 사용하기 Locale - current Locale - autoUpdatingCurrent 두 타입 프로퍼티는 사용자의 지역정보를 가지고 있는 변수이다. 해당 변수를 디버깅해보았는데, 결과는 en_KR 즉 영어 Locale 정보가 반환되었다. Simulator 설정 오류인게 아닐까? Simulator에서 설정 - 언어 변경을 변경해보았지만, 똑같이 영어가 나왔다. 덴마크 언어로 .. TIL #8 프로젝트를 진행하면서, 하나의 화면에 두개의 ViewController가 필요한 요구사항이 있었습니다. 이후 하나의 ViewController가 여러개의 로직을 가지는 것을 피하고자 찾던 중, Container ViewController를 알게 되었습니다. Container ViewController 여러개의 View Controller들을 관리할 수 있는 부모 뷰 컨트롤러입니다. 뷰 컨트롤러 간에 네비게이션을 용이하게 할 수 있습니다. 예시로는, Navigation Controller, TabBar Controller, Split ViewController가 있다. 필요성 화면에 필요한 모든 뷰들을 한 개의 뷰 컨트롤러가 모두 관리하면, 많은 책임이 지나치게 많아집니다. 예를 들면, viewWillAp.. TIL #7 Overview Calendar 객체를 이용하여 달력 정보 받기 Calendar, DateFormatter Localizaton 대응하기 1. Calendar 객체로 달력 정보 받기 네이버 캘린더의 달력을 보면, 첫째 주와 마지막 주에는 이전달과 다음달의 날짜가 포함되어 있다. 여기서, 이전 달이나 다음 달의 날짜를 선택하면 자동으로 캘린더가 넘어가게 된다. 해당 기능을 구현하기 위해 먼저 저번달과 다음달의 날짜 정보를 받아오도록 , Calendar 객체를 이용하여 구현하였다. 1. 먼저, 현재 날짜를 기반으로 이번달의 첫번째 날을 가져온다. var calendar = Calendar(identifier: .gregorian) calendar.locale = Locale(identifier: "ko_kr.. TIL #6 Overview 마이크로 피처 아키텍처 개념과 모듈 분리 URLSession 네트워크 요청 Tip 1. 마이크로 피처 아키텍처 마이크로 피처 아키텍처는 Tuist에서 사용하는 아키텍처로, 앱을 최대한 작은 단위로 모듈을 분리하여 조립해 만드는 것이다. 장점 하나의 기능에 대한 샘플 앱을 만들어서 사용함으로써 개발 속도가 증가한다. 협업간 project파일 변화에 따른 커밋 충돌 위험 감소 앱이 커질수록 관리가 쉬워진다. 여러개의 모듈은 다음 계층 구조를 가집니다. 1. Feature 하나의 기능 단위이며, 데모앱으로서 동작이 가능하다. 여러개의 Domain을 합쳐서 만들며, UI와 유저 액션을 처리할 수 있는 로직을 가집니다. ex) 송금 화면 2. Domain 하나의 기능 관심사별 역할로, 기능의 AP.. TIL #5 Etag Etag는 서버에 저장된 리소스의 변경 여부를 확인하는데 사용되는 식별자로, HTTP Response에 존재한다. 특징 해시값을 기반으로 생성된다. 서버의 리소스가 변경되면, Etag 값은 변경된다. 단점 리소스가 지나치게 자주 변경되거나 큰 경우 사용하기 어렵습니다. 왜냐하면, 자주 변경될 수록 Etag를 갱신해야하기 때문이며 데이터가 큰 경우에는 해시값을 계산하는데 오래걸립니다. 사용 사용자가 HTTP Request로 요청하면, 서버는 Etag를 생성하고 Response로 보냅니다. 사용자는 받은 Etag를 이용해서 다음과 같이 요청을 보내 데이터가 변경되었는지 식별할 수 있습니다. If-None-Match: "해시값" // Etag가 일치하지 않으면 요청을 처리한다. If-Match: "해.. 이전 1 2 다음