
지오코딩과 역지오코딩지오코딩(Geocoding)은 주소를 위치 정보(일반적으로 위도, 경도 쌍으로 이뤄진 좌표)로 변환하는 것을 말한다. 역지오코딩(Reverse Geocoding)은 반대로 위치 정보를 주소로 변환하는 것을 말한다. iOS에서는 CoreLocation과 MapKit의 CLGeocoder를 이용해 두 작업 모두 수행할 수 있다. 현재 사이드 프로젝트에 유저 현재 정보를 토대로 짧은 주소를 표시해야하는 요구사항이 있다. 예를 들어서, 디바이스가 서울특별시 마포구 신수동의 어딘가에 있다면 "마포구 신수동"과 같이 당근마켓 식으로 표시해야 한다. 이를 위해 역지오코딩이 필요했다. 현재 위치 가져오기CoreLocation을 통해 현재 위치를 가져올 수 있다. Info.plist에 "Privacy..

WWDC24https://developer.apple.com/videos/play/wwdc2024/10179 Add Test Bundle- File > New > Target에서 Unit Testing Bundle 선택- Xcode 16부터 기본이 Swift Testing이므로 바로 Finish Building Blocks1. Test Functionsimport Testing@Test func videoMetadata() { // ...} - Testing 모듈 임포트 - @Test 어트리뷰트와 함께 함수 작성 - 테스트 함수임을 표현 - 왼쪽에 다이아몬드 모양의 테스트 실행 버튼이 생김 정리하자면,- 테스트 함수는 @Test 어트리뷰트가 사용된 함수- 글로벌 함수도 가능하고, 특정 타입에 속한..
Dates and Times | Apple Developer DocumentationCompare dates and times, and perform calendar and time zone calculations.developer.apple.com 체크포인트날짜/시간 데이터를 서버에서 받아오는 경우 - 되도록 서버에서 유닉스 타임스탬프 형태로 반환해주거나, 타임존을 포함한 ISO8601 형태로 반환해주고, - 애플리케이션에서는 현재 디바이스의 지역과 유저 설정에 맞게 적절한 형식으로 화면에 뿌려주는 식으로 하면 편리하다. 어디서는 수동으로 9시간을 더하고 빼고 ... 이런 작업을 할 필요가 없어진다. DateSwift의 Foundation에서 Date는 문서에 따르면 시간 상에서 특정한 지점을 가리..

CoreData?CoreData는 디바이스의 디스크에 데이터를 영속화하기 위한 목적으로 제공되는 프레임워크이다. 파일 기반 RDB인 SQLite를 기반으로 되어있다고 한다. 실제로 사용해보면서 ORM에 가깝다는 생각이 많이 들었다.프로젝트에 CoreData 추가하기처음 프로젝트를 만들 때 Use Core Data에 체크하거나, 이미 존재하는 프로젝트에 모델을 추가해줄 수도 있다. 관련해서는 이 문서를 참고한다.전자의 방법을 택한 경우, AppDelegate에 다음과 같은 보일러플레이트 코드가 추가된다. NSPersistentContainer를 프로퍼티로 추가하고 있다.AppDelegate 객체는 애플리케이션의 루트 객체이기 때문에, NSPersistentContainer 객체를 코드 어디서든 싱글톤으로 ..
`command -v` 사용하기command는 뒤따라 들어오는 인자를 실행하는 쉘 명령인데, -v 옵션을 주면 명령을 쉘에서 어떻게 취급하는지 알려준다. 해당하는 명령을 실행할 수 없는 경우 1을 반환한다.❯ command -v java/usr/lib/jvm/temurin-21-jdk-amd64/bin/java❯ command -v kalias k=kubectl 따라서 다음과 같이 if문과 조합하면 필요한 프로그램이 설치되어있는지 여부를 확인할 수 있다.#!/bin/bashif ! command -v java &> /dev/nullthen echo "java could not be found" exit 1fi which와 기능은 비슷한데, 이 글을 보면, which는 운영체제에 따라 프로그램을..

Jest는 Mocha와 달리 테스트 프레임워크이다. Mocha를 쓰는 경우 Assertion을 위해 chai를, 모킹을 위해 sinon을 같이 쓰게 되는데 Jest의 경우 모두 커버 가능하다.ts로 작성한 프로젝트에 Jest를 추가해본다. https://jestjs.io/docs/getting-started 1. 설치하기dev 전용으로 설치한다.npm install --save-dev jest package.json에 test 커맨드를 추가한다.* 또는 npm init jest@latest을 실행하면 기본 설정이 추가되면서 test 커맨드도 자동으로 추가된다. 2. 타입스크립트 지원문서에 따르면 타입스크립트로 작성된 테스트 스크립트를 실행하기 위해 babel을 쓰거나, ts-jest를 쓸 수 있다. ba..

이번 주 토막 메모 - 가끔 필요한데 매번 찾아봐야하는 것들, 헷갈리기 쉬운 것들, 흥미로운 것들 ...커넥션 관련 시스템 변수 확인하기MariaDB [db]> SHOW VARIABLES LIKE '%max_connection%';+-----------------------+-------+| Variable_name | Value |+-----------------------+-------+| extra_max_connections | 1 || max_connections | 1000 |+-----------------------+-------+2 rows in set (0.009 sec)MariaDB [db]> SHOW STATUS LIKE 'Max_used_conne..

Ktor 문서를 보면서 따라하다가 빌드 버튼을 눌렀는데 기본 클래스를 찾지 못하고 오류가 발생했다. 관련 이슈가 젯브레인 Youtrack에 올라와있는데 아직 해결되지는 않은 것 같다. "Unable to initialize main class" error when a project is launched by the Ktor's run configuration : KTOR-5833IU-231.8109.175, JRE 17.0.6+10-b829.5x64 JetBrains s.r.o., OS Windows 10(amd64) v10.0 , screens 1920.0x1080.0, 1920.0x1080.0 After Generating New ktor project Selectected configureSecu..

들어가며 흔한 경우는 아니지만, 가끔 멀티 쓰레드 환경에서 컬렉션을 사용해야할 수 있다. 예를 들어 우리 서비스에서 외부로 HTTP webhook을 통해 이벤트를 발행해주는 시스템이 있다고 하자. 해당 시스템이 잘 작동하는지는 간단히 모니터링 도구를 통해 확인해보면 되겠지만, 우리 팀원이 아닌 QA팀이나 연계 업체 지원을 위해 테스트용 클라이언트를 개발환경에 띄워보고 싶을 수 있다. 테스트용 이벤트 클라이언트 1. 서비스에서 POST /event 요청을 통해 이벤트를 보내준다. 2. 발행된 이벤트는 따로 가공하지 않고 어딘가에 쌓아둔다. 3. GET /event 요청을 통해 쌓아둔 이벤트를 조회할 수 있는 기능을 제공한다. 아주 간단하고 빠르게 구현해본다면, 단순히 List를 이용해 이벤트를 쌓아볼 수 ..