반응형

전체 글 78

[로컬로그 개발기 6] 둘이 처음 앱을 배포하고 나서야 보인 것들

가족과 경주를 돌아다니다가 황리단길에 사람이 너무 몰린다고 느낀 것이 로컬로그의 시작이었다. 다른 장소도 함께 둘러볼 수 있는 여행 코스를 만들어 보자는 생각으로, 직장 동료와 둘이 관광 공모전을 준비했다.지난 글까지는 그 생각을 기능으로 만들고 실제 환경에서 확인하는 과정을 썼다. 마지막 편에서는 구현 설명을 잠시 내려놓고, 처음 앱을 만들어 배포하면서 잘한 점과 아쉬웠던 점을 돌아보려고 한다.기능은 단순해 보여도, 둘이 처음 배포한 앱이었다로컬로그는 여행 조건을 입력하고, 추천 코스를 지도에서 확인하고, 저장해 다시 보는 앱이다. 결과만 보면 기능이 심플해 보인다. 하지만 그 흐름을 연결하려면 관광지 자료를 준비하고, 장소의 방문 순서와 이동시간을 계산하고, 로그인과 저장 상태까지 맞춰야 했다.공모전..

개발·IT 2026.10.29

[로컬로그 개발기 5] 테스트를 통과한 다음, 실제 사용할 환경에서 확인한 것들

지난 글에서는 같은 관광지가 이틀 일정에 중복되고, 이동시간의 세부 내역이 화면과 저장 과정에서 빠졌던 문제를 다뤘다. 추천 결과를 고친 뒤에도 확인할 것은 남아 있었다. 사용자가 로그인하고, 지도를 열고, 코스를 저장하는 과정이 배포된 서비스에서도 이어지는지 봐야 했다.우리는 처음에 Android 앱을 제출할 계획이었다. 하지만 앱 심사가 늦어지면서 공모전에는 웹으로 최종 제출했다. 이번 글에서는 그 무렵 웹에서 확인했던 문제와 배포 과정을 돌아보려고 한다. 현재 로컬로그 Android 앱은 구글 플레이에도 출시돼 있다.기능 목록을 확인하는 것에서 화면을 따라가는 것으로2026년 9월 20일에는 배포된 웹을 브라우저 자동화 도구인 Playwright로 점검했다. 비로그인 상태에서 홈과 관광지 목록을 살..

개발·IT 2026.10.29

[로컬로그 개발기 4] 실제로 코스를 만들어 보니 설계에서 놓친 것이 보였다

지난 글에서는 관광지 데이터를 가져와 저장하고 갱신하는 과정을 다뤘다. 그렇게 준비한 자료로 코스를 만들어 보니, DB에 들어갈 때는 드러나지 않던 문제가 추천 결과에서 보이기 시작했다.이틀짜리 일정에 불국사가 두 번 들어갔다. 이동 구간에는 ‘12번 버스 40분’이라는 안내도 있었다. 나는 결과 화면을 첨부해 중복이 여전히 남아 있고, 버스로 40분을 이동하도록 추천하는 게 맞는지 다시 확인해 달라고 요청했다. 이번 글은 그 질문에서 시작한 점검과 후속 수정 이야기다.1일차의 불국사와 2일차의 불국사는 왜 다른 장소였을까1일차에는 ‘경주 불국사 [유네스코 세계유산]’, 2일차에는 ‘불국사’가 들어 있었다. 여행자가 보기에는 같은 절을 두 번 가는 일정이지만, DB에서는 출처와 ID가 다른 두 행이었다...

개발·IT 2026.10.28

[로컬로그 개발기 3] 관광지 데이터를 가져왔다고 바로 쓸 수는 없었다

지난 글 끝에서 관광지 데이터가 여행 코스로 이어지는 과정을 살펴보겠다고 했다. 그 출발점은 추천할 장소를 DB에 준비하는 일이다. 2편에서는 ‘후보 준비’라는 한 단계로 짚었지만, 그 후보를 채우려면 외부 자료를 가져오는 것부터 다시 수집할 때의 처리까지 정해야 했다.이번에는 TourAPI에서 받은 관광지 정보가 DB에 들어가는 과정을 따라가 보려고 한다. 어떤 자료를 가져왔는지, 같은 자료를 다시 받았을 때 무엇을 갱신했는지, 새 응답에 값이 없으면 어떻게 처리했는지가 중심이다.목록을 받은 뒤에도 채워야 할 정보가 있었다초기 수집 계획은 한국관광공사 TourAPI에서 경주 관광지 목록을 가져온 뒤, 장소별 상세 정보와 사진을 보강하는 방식이었다. 처음에는 관광지 유형부터 연결하고 문화시설 등은 이후에..

개발·IT 2026.10.28

[로컬로그 개발기 2] 둘이서 무엇을 만들고, 어디까지 만들기로 했을까

지난 글에서는 가족과 경주를 돌아다니다가 로컬로그를 시작하게 된 이야기를 썼다. 아이디어를 정하고 나니 다음 문제가 생겼다. 직장 동료와 둘이서 어디까지 만들고, 어떻게 나눠서 개발할 것인가.이번에는 처음 정한 기능 범위와 기술 구조, 그리고 업무 분배안을 다시 고쳤던 과정을 정리해 보려고 한다. Python을 선택한 이유도 이때 만들고자 했던 기능과 연결돼 있다.처음 목표는 앱으로 제출할 수 있는 범위였다처음에는 Android 앱을 만들어 관광 공모전에 제출할 생각이었다. 일정도 9월 안에 구글 플레이에 올리는 것을 기준으로 잡았다. 그래서 먼저 MVP, 즉 첫 버전에서 꼭 동작해야 하는 최소 기능을 정했다.중심에 둔 것은 여행 조건 입력 → 코스 추천 → 지도 확인 → 코스 저장이라는 흐름이었다. 관..

개발·IT 2026.10.27

[로컬로그 개발기 1] 가족과 경주를 걷다가 여행 앱을 만들게 됐다

본가가 경주로 이사를 했다. 가족들과 경주를 돌아다닐 일이 생겼고, 그때 황리단길에 사람들이 많이 몰려 있다는 게 눈에 들어왔다.경주에는 가볼 곳이 많은데, 여행객들이 조금 더 다양한 곳을 돌아볼 수 있으면 어떨까. 관광 공모전에 나가면서 이 생각을 아이디어로 써보면 좋겠다고 생각했다. 그렇게 직장 동료 한 명과 둘이서 시작한 프로젝트가 로컬로그다.이 시리즈에는 로컬로그를 왜 만들었는지부터 어떤 설계를 했고, 구현하면서 무엇을 놓쳤는지까지 남겨보려고 한다. 첫 글은 코드보다 이 프로젝트가 시작된 이야기다.황리단길을 보고 떠올린 생각경주 황리단길 풍경황리단길에 사람이 몰린다고 느낀 것은 가족과 돌아다니며 한 관찰이다. 관광객 수를 직접 조사한 결과는 아니다. 다만 그 풍경이 공모전에서 다뤄보고 싶은 문제의..

개발·IT 2026.10.27

상품 링크를 하나씩 보내기 귀찮아서 만든 쿠팡 장바구니 공유 확장 프로그램

쿠팡 장바구니에 담아 둔 상품들을 다른 사람에게 보여주고 싶을 때가 있다. 여러 상품을 비교하거나, 함께 살 물건을 정하거나, 가족이나 친구에게 대신 주문을 부탁할 때처럼 말이다.그런데 상품이 여러 개라면 공유하는 과정부터 번거롭다. 상품 페이지를 열고 링크를 복사한 뒤, 다시 장바구니로 돌아와 다음 상품의 링크를 복사해야 한다. 받는 사람 역시 메시지에 흩어진 링크를 하나씩 열어봐야 한다.이미 장바구니에 상품을 모아 뒀는데, 공유하기 위해 같은 목록을 다시 만드는 셈이다.그래서 목표를 하나로 정했다.장바구니에서 공유 버튼을 누르면, 담아 둔 상품 전체를 링크 하나로 보여줄 수 있게 만들자.상품 링크를 하나씩 붙여넣거나 별도의 목록에 다시 등록하는 방식은 제외했다. 받는 사람에게도 확장 프로그램 설치나 ..

개발·IT 2026.09.26

Flutter 개발용 안드로이드폰 필요할까? 아이폰 유저가 갤럭시 A34를 산 이유

앱을 만들어보겠다고 시작했는데, 안 쓰던 갤럭시까지 한 대 사게 됐습니다.테스트용으로만 쓸 폰에 10만 원 넘게 쓰려니 망설여졌지만 결국 구매했습니다.기종은 갤럭시 A34 5G입니다.요즘 AI의 도움을 받아 Flutter로 이것저것 앱을 만들고 있습니다.처음에는 제가 아이폰을 쓰니까 앱도 iOS로 만들어서 App Store에 올리면 되겠다고 생각했습니다.이때까지만 해도 안드로이드까지는 별로 관심이 없었습니다.그런데 실제로 앱을 배포하는 방법을 알아보기 시작하면서 생각이 조금 달라졌습니다.아이폰 앱만 만들려고 했는데 비용이 걸렸다생각이 달라진 가장 큰 이유는 앱스토어 배포 비용이었습니다.Apple Developer Program은 연간 99달러이고, 멤버십이 만료되면 앱을 스토어에서 새로 내려받을 수 없게..

카테고리 없음 2026.09.07

MCP란 무엇일까? AI 에이전트가 도구를 사용하는 원리와 구조

MCP(Model Context Protocol)는 AI 애플리케이션이 파일, 데이터베이스, 검색 서비스 같은 외부 시스템과 연결되는 방식을 표준화한 오픈소스 프로토콜입니다.ChatGPT나 Claude 같은 AI는 대화만으로도 많은 일을 할 수 있지만, 기본 상태에서는 내 컴퓨터의 파일을 읽거나 회사 데이터베이스를 조회하고 캘린더에 일정을 추가할 수 없습니다. 이런 작업을 하려면 외부 도구와 안전하게 연결되는 통로가 필요합니다. MCP는 그 통로의 공통 규칙을 정의합니다.이번 글에서는 MCP가 왜 등장했는지, Host·Client·Server가 어떤 역할을 하는지, Tools·Resources·Prompts의 차이와 API·RAG·Function Calling과의 관계까지 개발자 관점에서 정리해 보겠습니..

카테고리 없음 2026.08.02

시간 복잡도란 무엇일까?

안녕하세요.개발 공부를 시작하면 언젠가는 반드시 만나게 되는 개념이 있습니다.바로 시간 복잡도(Time Complexity)입니다.처음 시간 복잡도를 접하면 다음과 같은 기호들이 등장합니다.O(1)O(log n)O(n)O(n log n)O(n²)기호만 보면 수학 공식처럼 보여서 어렵게 느껴질 수 있습니다.하지만 시간 복잡도의 핵심은 생각보다 단순합니다.이번 글에서는 복잡한 수학적 설명보다는 일상적인 예시와 Java 코드를 사용해 시간 복잡도를 쉽게 이해해 보겠습니다.시간 복잡도가 필요한 이유다음과 같이 숫자가 들어 있는 배열이 있다고 가정해 보겠습니다.int[] numbers = {3, 7, 2, 9, 5};이 배열에서 숫자 9가 있는지 확인하려면 어떻게 해야 할까요?가장 단순한 방법은 배열의 첫 번째 ..

CS 2026.07.27
반응형