📖 개발 공부
-
빌드 관리 도구, 예제와 함께 Gradle 알아보기📖 개발 공부 2024. 1. 21. 11:00
프로젝트에서 gradle이 어떻게 돌아가는지 이해도를 높이기 위해 글을 작성해보겠다. 일단, 공식 문서 내용이 너무 많아서 🥲 프로젝트에 적용했던 설정들을 토대로 정리해보려고 한다. Gradle 이란? gradle은 오픈소스 빌드 자동화 툴이다. 어떤 플랫폼에서든 소프트웨어를 구축, 테스트, 게시 및 배포하는 경우 gradle은 코드 컴파일 및 패키징부터 웹 사이트 게시까지 전체 개발 수명주기를 지원할 수 있는 유연한 모델을 제공한다. 컴파일(Compile): Gradle은 Java 파일을 바이트코드로 컴파일하는 과정을 자동화한다. 테스트(Test): 어플리케이션이 예상대로 정상 작동하는지 확인하는 자동화된 테스트를 수행한다. 패키징(Packaging): JAR 또는 WAR 파일과 같은 배포 가능한 형태..
-
링크드리스트 구조로 정제 규칙 순서 관리하기📖 개발 공부 2023. 12. 20. 00:06
현재 속해있는 팀에서 장소 이름을 정제하는 태스크를 진행하고 있다. 공공데이터로부터 장소 이름을 가져와서 우리가 만들어놓은 정제 규칙들을 통해 정제하여 데이터화하는 과정이라고 볼 수 있다. 이 정제 과정이 필요한 이유는 크게 두가지가 있다. 깔끔하고 통일성 있는 장소이름을 유저에게 보여주기 위함. 여러 공공데이터를 통해 데이터화를 하는데, 공공데이터 간 중복 장소가 있을 수 있음. 정제를 통해 이 중복 장소들을 하나의 장소로만 데이터화하기 위함. 이러한 이유로 정제 고도화는 우리 팀에서 중요한 태스크이다! 첫 정제 과정에서는, 이상한 패턴들을 가진 이름들을 수정하기 위한 규칙들을 코드 내에서 관리하고 있었다. 하지만 정제해야 할 케이스들이 끝도 없이 나왔다.. 😱 😱 이상한 이름들을 가진 데이터를 제보받..
-
도메인 모델에 kotlin의 data class가 적합할까?📖 개발 공부/kotlin 2023. 12. 10. 12:00
회사 프로젝트에서 비즈니스 로직이 담긴 도메인 모델을 만들 때 kotlin의 data class를 사용하고 있다. 언제 class를 사용하고, 또 언제 data class를 사용하는 게 적합한지 제대로 숙지하지 못하고 무분별하게 쓰고 있는 것 같아 이번 기회에 공부해보려고 한다! 코틀린의 공식 문서를 보자 👀 Data classes in Kotlin are classes whose main purpose is to hold data. 데이터 클래스(Data class)는 데이터 보관 목적으로 만든 클래스를 말한다. 데이터 보관을 목적으로 만들었다라.. 뭔가 DTO의 역할을 말해주고 있는 것 같다. (데이터 전달) 도메인 모델은 데이터 보관 역할을 넘어서 비즈니스 로직을 구현하고 도메인의 행위를 정의하는 ..
-
다양한 좌표계를 위경도 좌표로 변환해보기 수난시대 (feat. geotools)📖 개발 공부 2023. 11. 5. 16:17
회사에서 외부 공공데이터들을 가져와서 POI화하는 업무를 맡았다. 공공데이터들은 각기 다른 EPSG 좌표계를 사용하고 있다. 주소 데이터: GRS80 UTM-K 기준 → EPSG:5179 지방행정인허가 데이터(LocalData): 중부원점TM(Bessel) → EPSG:5174 DB에 저장할 최종 좌표계는 EPSG:4326이다. 이는 우리가 흔히 쓰는 위경도 좌표라고 보면 된다. 여기서 EPSG가 뭐신가 EPSG 코드는 전세계 좌표계 정의에 대한 고유한 명칭이다. EPSG 코드에 대한 상세 정의는 proj4와 wkt라는 문자열로 되어 있다. EPSG.io: Coordinate Systems Worldwide EPSG.io: Coordinate systems worldwide (EPSG/ESRI), pre..
-
📸 [Flutter] Google Cloud OCR 연동하기📖 개발 공부/flutter 2023. 10. 18. 22:48
나는 독서 기록을 할 때, 기억하고 싶은 구절은 기본 카메라앱으로 스캔 후 복사하여 노션에 붙여넣고 있다. 하지만 이 과정은 나에게 꽤나 번거롭다. 그래서 카메라에서 문장을 스캔&선택한 후 곧바로 해당 문장에 대한 나의 생각을 기록하고 싶어서 독서 기록 앱을 만들고 있다! 플러터로 개발을 하고 있고, 플러터로 Google Cloud OCR을 연동하여 이 기능을 구현해보려구 한다! 📸 코드 작성에 앞서, Google Cloud에서 제공하는 Vision AI 를 사용하기 위해 키를 발급 받아야 한다. 다음 링크에 들어가서 발급 받으면 된다. https://cloud.google.com/vision cloud.google.com 발급받는 과정 요약 Vision AI 무료로 사용해보기 → 가입 → 서비스 계정 ..
-
[Flutter] .env 파일 이용하여 환경변수 관리하기📖 개발 공부/flutter 2023. 10. 2. 09:00
Flutter에서 .env 파일을 이용하여 환경변수를 쉽게 관리할 수 있다. 방법은 flutter_dotenv 패키지를 사용하는 것이다! flutter_dotenv | Flutter Package Easily configure any flutter application with global variables using a `.env` file. pub.dev (나는 flutter pub get 명령어를 이용해서 설치했다.) 1. assets 폴더 하위에 .env 파일을 생성한다. 애플리케이션에 사용할 값들을 .env 파일에 다음과 같은 형태로 저장한다. AUTH_TOKEN_KEY=auth_token_value 2. 그리고 pubspec.yaml에 다음과 같이 .env 파일 경로를 추가한다. assets:..
-
[MongoDB] Replica Set (레플리카셋)📖 개발 공부 2023. 9. 5. 23:36
Replica Set 구성 Replica Set의 사용 목적이 HA이기 때문에, 각 멤버들이 각 다른 서버에 위치해있어야 목적에 맞게 효과를 볼 수 있다. Status Description Primary • Read/Write 요청 모두 처리할 수 있다. • Write를 처리하는 유일한 멤버이다. • Replica Set에 하나만 존재할 수 있다. Secondary • Read에 대한 요청만 처리할 수 있다. • 복제를 통해 Primary와 동일한 데이터 셋을 유지한다. • Replica Set에 여러개가 존재할 수 있다. 아무런 설정없이 읽기/쓰기 요청을 하면 기본적으로 Primary가 처리한다. readPreference 옵션을 넣어 요청해야한다. Replica Set Election (Fail-Ov..
-
[MongoDB] MongoDB 배포형태 (Standalone/Replica Set/Shared Cluster)📖 개발 공부 2023. 9. 5. 00:17
Standalone study용 test용 의 배포 형태이다. 운영 환경에서 Standalone 배포 형태는 위험하다. 데이터베이스 점검을 하는 경우, 서비스 또한 중단이 되어야 하기 때문이다. Replica Set 동일한 데이터를 갖고있는 몽고 DB 서버를 여러 대 가지고 있는 형태이다. 한쪽으로 write를 하면 다른 서버에 데이터를 복제시킨다. 위의 그림을 예시로 들면, 3대 중에 1대가 죽더라도 나머지 2대가 살아있어서 점검이 있더라도 지속적으로 점검이 가능하다. 실제 현업에서 가장 많이 사용되는 배포 형태이다. → HA (High Availabilty) 고가용성 보장 하지만 갑자기 서비스의 인기가 급격히 늘어나서 데이터 쓰기양이 많아진다고 해보자. scale-up을 통해 서버의 스토리지를 계속해..