오래된 프로그래머의 요즘 이야기

그리고 소소한 일상들...

허니의 소소한 일상들이 켜켜이 쌓여가고......

Tech Story 40

[Flutter] API 호출을 위해 Debugging Mode에서 인증 회피

Flutter API 호출 완전 정복: 삽질은 이제 그만!오늘은 Flutter 개발하면서 늘 마주치는 골칫덩어리, 바로 **API 호출**에 대해 속 시원하게 파헤쳐 보려고 합니다. API 호출, 간단해 보이죠? 하지만 실제로는 네트워크 에러, 서버 장애, 인증 문제 등 온갖 잡것들이 숨어있어서 멘탈 붕괴를 경험하게 만들 수 있습니다. 저도 숱하게 삽질을 했기에… 이제 여러분은 제 삽질 경험을 통해 똑똑하게 API 호출을 마스터할 수 있을 겁니다! 😎**1. 믿을 수 없는 네트워크, 철저한 예외 처리가 답이다!**네트워크는 언제나 변수입니다. 끊어질 수도 있고, 서버가 응답하지 않을 수도 있죠. `try-catch` 블록 없이 API 호출을 한다면? 앱 크래시는 순식간입니다. 절대 잊지 마..

Tech Story 2025.05.31

[Docker / Nginx] Proxy 설정

혼자 공부하는 Docker Nginx Reverse Proxy: 포트와 경로 기반 라우팅 마스터하기오늘은 제가 며칠 밤낮으로 씨름했던 Docker와 Nginx를 이용한 Reverse Proxy 설정에 대한 꿀팁을 공유하려고 합니다. 사실 처음엔 막막했는데, 이제는 제법 자신감이 생겼어요! (뿌듯) 이 글을 통해 여러분도 Reverse Proxy의 세계에 쉽게 발을 들여놓으실 수 있도록, 제가 겪었던 시행착오와 해결 과정을 상세히 설명해 드리겠습니다. 자, 시작해볼까요?### 1. Reverse Proxy란 무엇일까요?먼저 Reverse Proxy의 개념을 간단히 짚고 넘어가겠습니다. Forward Proxy가 클라이언트의 외부 네트워크 접근을 중개하는 역할이라면, Reverse Proxy는 *..

Tech Story 2025.05.31

[SQL] SQLiTE 장단점

SQLite, 나 혼자 쓰기 딱 좋은 간편 데이터베이스?혼잣말로 풀어보는 SQLite 이야기: 장점, 단점, 그리고 내가 선택해야 할 때!아, 오늘은 SQLite에 대해 혼잣말처럼 떠들어볼까 해. 요즘 프로젝트 하면서 SQLite를 써볼까 말까 고민이 많거든. 일단 장점부터 짚어보자!**1. 가볍고, 심플하고, 그냥 딱 내 스타일! (경량성 및 내장형)**SQLite는 진짜 가벼워. 설치 따로 할 필요 없이, 파일 하나로 뚝딱! 내장형이라서 배포도 엄청 쉽고, 관리도 간편해. 마치 내가 좋아하는 간편한 컵라면 같은 느낌? 서버 따로 돌릴 필요도 없으니 자원 낭비도 없고!**소스코드 예시 (Python):**```pythonimport sqlite3conn = sqlite3.connect('my..

Tech Story 2025.05.31

[SQL] MongoDB 활용

SQL 개발자, 이제 MongoDB로 날아오르자!안녕하세요 여러분! 오늘은 제가 몽고DB(MongoDB)에 대해 샅샅이 파헤쳐 보는 시간을 갖도록 하겠습니다. SQL 개발자인 저에게도 처음엔 낯설었던 몽고DB였지만, 이제는 그 매력에 푹 빠져버렸죠. 이 글을 통해 몽고DB의 세계로 여러분을 초대하고, SQL과 비교하며 쉽고 빠르게 이해할 수 있도록 도와드리겠습니다. 자, 함께 떠나볼까요? 🚀### 1. 몽고DB vs SQL: 기본 개념부터 차근차근먼저, 몽고DB와 SQL 데이터베이스의 가장 큰 차이점을 간략하게 비교해보겠습니다. SQL은 관계형 데이터베이스(RDBMS)이고, 몽고DB는 NoSQL 데이터베이스 중 하나인 문서형 데이터베이스입니다. 이게 무슨 말이냐구요? 🤔* **SQL (..

Tech Story 2025.05.31

[ Flutter / Python ] 좌표 (위도, 경도) 값으로 국내/해외 판단

요즘 위치정보 관련한 나만의 프로젝트를 진행하고 있는데 POI, Geocoding, Reverse Geo, 경로찾기 등 지도 위에서 할수 있는 많은 기능들이 필요한 상황이다. 그중 국내 POI정보는 우리나라 지도제공업체가 너무도 좋은데 결정적으로 무료 조회건수를 넘어가면 유료로 사용해야 하는 기능들이다. (현재 Naver, Kakao, SK, V-World 이렇게 사용해 봤는데 개인적으로 V-World API 가 가장 좋은 것 같다. 정부에서 제공하는 API 서비스이며 내게 필요한 서비스들은 거의 무료로 이용이 가능하다.) 다국어 버전을 지원하려고 하다보니, 국내 지도에서 필요한 POI검색, Geocoding, Reverse Geo 부분은 V-World API를 사용하고 우리나라를 제외한 모든 국가에서는..

Tech Story 2024.01.22

[ SQLiTE ] Local DB Update process (2)

이전글 : [ SQLiTE ] Local DB Update process (1) 현재까지 Flutter 로 만든 앱들의 동작 환경을 살펴보면 휴대폰 내부에서는 SQLiTE 를 사용하고, 서버는 주로 Docker 로 구축한 MariaDB (또는 MySQL)로 되어있다. 서버와의 통신은 Python 으로 만든 RestAPI 호출로 운영하고 있으며 SSL 적용한 WEB Server 도 컨테이너로 돌아가고 있다. (참고 : [Environment] 개발 환경에 대해... ) 처음에는 Database Update를 위해 효율 보다는 빠른 구축이 먼저였기에 서버의 API를 통해 버전번호를 체크/비교하면서 변경된 데이터를 조회해 온 후 휴대폰 내부의 SQLiTE에 Insert 와 Update 쿼리를 사용해 업데이트를..

Tech Story 2023.12.22

[ SQLiTE ] Local DB Update process (1)

일전에 지자체에서 운영하는 Android 와 iOS 앱을 개발해준 적이 있다. 지자체 서버에서 제공하는 API를 호출하고 그 결과를 앱에 표현해 주는 앱인데 API호출 회수를 최소화 하기 위해 대부분의 데이터는 휴대폰의 SQLiTE 에 저장하고 사용했다. 또한 서버와의 동기화(Synchronization)를 위해 Update가 필요한 테이블별 Version No를 Check하여 Local 과 Server 의 DB 동기화를 진행해 왔다. 고도화 작업까지 완료된 꽤 긴 기간동안 작업했던 앱이었기에, 초기의 앱과 비교해 보면 디자인부터 기능까지 무척이나 많은 변화를 간직하고 있는 앱이다. 오늘은 수많은 변화 중 Database 의 Table data Update 관련한 몇가지를 얘기하고자 한다. 우선 서버는 ..

Tech Story 2023.12.22

[ Flutter ] Class, List, Map 등의 복사 (깊은복사, 얕은복사)

옛날에 한참 C, C++ 코딩할때는 포인터를 사용하는 Call by reference, Call by value 요렇게 2가지 타입 중 적절한 방법으로 자료처리를 해던 기억이 있다. 그때 당시는 주소참조방식 과 값참조방식 뭐 이렇게 이해하고 있었는데, 요즘은 이를 지칭하는 표현(단어)도 많이 바뀌어 있는 듯 하다( 내가 옛날사람이긴 한가 봐. ㅠㅠ). 플러터나 자바쪽에서는 깊은복사 와 얕은복사라는 표현을 주로 사용하고 있던데 개인적으로는 직관적이지 않아 아직도 헷갈리는 단어다. 그래서 요 부분에 대한 개인적인 정리 차원에서 블로그에 남겨두고자 한다. Flutter(DART)에서 class, list, map 같은 객체(Object)를 다루다가 값이 이상하다는 생각이 들 때가 있다. 필자의 경우 코딩하면서..

Tech Story 2023.12.17

[ Environment ] 개발 환경에 대해...

MS-DOS때 부터 프로그래머의 길을 걷기 시작해 오늘날까지, 주로 접해왔던 언어는 C, Delphi(Object pascal), Visual Basic, Shell, SQL, Python, JAVA 찔끔, PHP랑 ASP도 찔끔, 최근에는 Flutter(dart) 를 주로 사용한다. Delphi는 Ver1.0때 부터 꽤 오랜기간 사용했었고, 지금까지도 그래왔지만 DB를 사용하지 않는 프로젝트는 거의 없다고 봐야 하니 SQL은 꾸준히 손 놓을 수 없는 언어이다. 과거에는 C/S 환경의 3Tier 환경이 대세였기에 규모가 좀 되는 프로젝트는 Unix 와 Oracle(Pro-C)은 필수였기에 자연스레 손에 익혔던 것 같다. 옛날얘기는 이쯤에서 접고...... 요즘 내가 활용하는 개발환경에 대해 잠깐 얘기해 ..

Tech Story 2023.12.15

[ SQL ] Query 작성 시 count() 함수의 함정

많은 개발자들이 Database Query 작성할때 습관적으로 ... count(*) ... 이렇게 사용하는 사람들이 많다. 대개의 경우 큰 문제가 생기지는 않으나, 혹 실행 결과값이 다를 수 있음을 인지하고 사용하는 개발자는 그리 많지 않은 듯 하다. 바로 Field의 값이 Null 이냐 아니냐에 따라 리턴되는 count() 함수의 결과값이 달라질 수 있다. 예제를 보자 예제에서 사용한 테이블 t1 은 간단하게 Nullable 속성의 2개 필드를 가지고 있고, PrimaryKey 설정도 하지 않았으며, 테스트를 위한 Record 6개를 넣은 후 전체 조회한 결과는 우측 이미지와 같다. 다음과 같이 3개의 쿼리를 던져보면 받는 결과값이 다름을 알 수 있으며, 필자가 얘기하려는 바가 무엇인지 바로 알 수 ..

Tech Story 2023.12.06