전체 글172 TIL 7/2/2026 - 0-1BFS, 블로그 마이그레이션, Python HTML TIL - 2026.07.02Problem SolvingLeetCode 3286. Find a Safe Walk Through a Grid사용 언어: Python, Swift사용 알고리즘: Dijkstra, 0-1 BFS그동안은 거리 개념이 나오면 무조건 다익스트라를 사용했는데, 처음으로 0-1 BFS를 이용해서 문제를 풀었다. 같은 문제를 Python에서는 다익스트라로 풀었고. 0-1 BFS는 Swift로 풀었다.기존에 Swift에서 BFS를 사용할 때는 배열과 인덱스 포인터를 이용한 유사 Queue를 사용했는데, 이 방식으로는 큐의 헤드에 원소를 push하는 메소드를 구현하기 어려워서 배열을 사용했다. 문제의 제약조건이 널널해서 배열로 충분히 통과했는데, 어떻게 해야할지는 고민해봐야 할 것 같다. L.. 2026. 7. 2. dev-data-server-light 개발일지: 3-1. File Storage DB 모듈을 마무리하고, 다음으로 구현한 것은 File Storage 모듈이다. DB 모듈과 크게 다르지 않을 것이라고 생각했다. 우선 CRUD 비슷한 메소드를 처리하고, 구조는 DB 모듈에서 충분히 다듬었기 때문이다. 하지만 실제로는 DB보다 인터페이스를 어떻게 정의할 것인지에 대한 고민이 더 많았다.인터페이스 만들기처음 작성한 프롬프트는 다음과 같다.Create the initial FileStorage contract in src/storage.Requirements:- Define a FileStorage interface.- The interface is responsible only for storing and retrieving binary file contents.- It should no.. 2026. 7. 2. dev-data-server-light 개발일지: 2-2. DB 구현체 만들기. DB 모듈의 인터페이스와 서비스 레이어를 만들었으므로, 실제 구현체를 만들어야 한다. 우선 인 메모리(In-Memory)로 가볍게 구현체를 만들었다.인 메모리 데이터 저장소인 메모리 방식을 선택한 이유는 첫째로 처음부터 SQL이나 JSON 파일 기반 저장소를 이용해서 구현체를 만드는 것 보다는, 가장 단순한 구현체를 만들어서 DB 기능을 검증하고 빠르게 다음 기능을 만들기 위해서이다. 외부 의존성도 없고, 설정도 필요 없고, 테스트도 쉽다.구현하기RecordStore 인터페이스를 다시 보면 다음과 같다.export interface RecordStore { list(collection: string): Promise; get(collection: string, id: string): Promise; .. 2026. 7. 2. dev-data-server-light 개발일지: 2-1. DB CRUD, 설계 수정 시스템 모듈을 만든 이후에, 아마도 가장 많이 쓰게 될 DB 모듈을 만들었다.당시에는 구조도 시스템 모듈과 동일하다고 생각했다. Router가 DB 인터페이스에 의존하고, 이를 구현한 구현체를 주입받는 방식으로 DIP와 DI를 동시에 적용했다.이 과정 중에서naming bias 해결하기id 생성 책임 위치기존 아키텍처의 문제점 -> 서비스 레이어 도입해서 해결하기에 대한 고민을 했다. 아래는 고민과 해결 과정이다.CRUD부터 만들기Mock Server라도 최소한 CRUD는 제공해야 한다. 처음부터 구현체를 만들 필요는 없으므로, 라우터와 인터페이스까지만 만들도록 프롬프트를 작성했다.Create lightweight database interfaces and CRUD route placeholders.Re.. 2026. 6. 30. dev-data-server-light 개발일지 1. System 모듈 프로젝트에서 제일 간단한 기능과 구조를 가지기 때문에 가장 먼저 System 모듈을 만들었다.System 모듈의 기능System 모듈이 제공하는 기능은 단 두 가지뿐이다.GET /system/statusGET /system/uptimestatus는 서버가 정상적으로 동작하는지 알려주고, uptime은 서버가 실행된 이후 얼마나 시간이 지났는지를 반환한다.비즈니스 로직도 없고, 데이터베이스도 필요하지 않으며, 파일 시스템도 다루지 않기 때문에 구조를 검증하는데 가장 좋다고 판단했다.구조 검증System 모듈을 만들면서 확인하고 싶었던 것은 기능이 아니라 구조였다.당시에 생각했던 구조는 다음과 같았다.Route ↓ServiceRoute는 HTTP 요청과 응답만 담당한다.Service는 실제 애플리케이션.. 2026. 6. 25. dev-data-server-light 개발일지: 0. 컨셉 정하기 시작하기iOS 프로젝트를 진행하다 보면 생각보다 자주 간단한 API 서버가 필요해진다.회원가입 화면을 만들거나, 목록 조회 기능을 붙이거나, 이미지 업로드를 테스트할 때도 서버가 필요하다.물론 실제 백엔드를 구축할 수도 있고, Supabase나 Firebase 같은 BaaS를 사용할 수도 있다. 하지만 작은 개인 프로젝트나 프로토타입 단계에서는 좋은 설계는 아니라고 생각한다.특히 처음부터 특정 서비스에 의존하기 시작하면, 정작 내가 만들고 싶은 앱의 기능보다 인프라 설정과 서비스 사용법을 익히는 데 더 많은 시간을 쓰게 된다.앱 개발을 위한 도구가 필요했는데, 어느 순간 도구를 사용하기 위한 공부를 하고 있는 상황이 되는 것이다.그리고 내 서비스가 그 특정 도구에 감염되게 된다.아무리 DIP를 잘 지키더.. 2026. 6. 24. 이전 1 2 3 4 ··· 29 다음