본문 바로가기
반응형

전체 글145

변호사 비용이 너무 비싸서 AI로 셀프 소송했습니다 (+ 스킬 공유) 소액 분쟁인데 변호사 비용이 배보다 배꼽이 더 컸습니다. 결국 AI의 도움을 받아 직접 소송을 준비했고, 그 과정에서 만든 도구를 공유합니다. 아래 내용은 실제 사건이 아닌, 이해를 돕기 위한 예시입니다500만원을 돌려받고 싶었을 뿐인데얼마 전, 소액 민사 분쟁이 생겼습니다.금액은 약 500만원. 크지 않은 돈이지만, 분명히 상대방 잘못이 있는 상황이었습니다.증거도 있고, 법적으로 당연히 받아야 할 돈이었죠."법대로 하면 되겠지."그렇게 가볍게 생각하고 변호사 상담을 받아봤습니다.그런데 변호사 비용을 듣는 순간구분금액분쟁 금액 (소가)약 500만원변호사 착수금100~200만원성공보수 (승소 시)10~20% 추가계산이 안 맞았습니다.500만원 받으려고 200만원 내고, 이겨도 또 50~100만원 떼이면... 2026. 1. 29.
Obsidian에서 Notion으로 완벽하게 마이그레이션하기 들어가며Obsidian은 로컬 마크다운 기반의 강력한 노트 앱이지만, 협업이나 모바일 접근성 면에서 Notion의 장점이 필요할 때가 있습니다. 이 글에서는 323개의 마크다운 파일로 구성된 Obsidian Vault를 Notion으로 완벽하게 마이그레이션한 과정을 공유합니다.마이그레이션 목표PARA 폴더 구조 완벽 보존마크다운 서식 (헤딩, 리스트, 인용문 등) 변환HTML 태그 (, , ) → Notion 서식 변환각주 → Callout 블록 변환해시태그 → 데이터베이스 Multi-select 속성으로 검색 가능하게1단계: 기본 구조 마이그레이션Notion API 설정먼저 Notion Integrations에서 새 Integration을 생성하고 API 키를 발급받습니다.const { Client }.. 2025. 12. 28.
Go 인터페이스 컴파일 타임 검증 패턴 핵심 요약: var _ Interface = (*Impl)(nil) 패턴은 Go의 암시적 인터페이스 구현을 컴파일 타임에 검증하여, 인터페이스 변경 시 빠르게 오류를 발견할 수 있게 합니다. Go에서 인터페이스를 구현할 때 자주 보이는 이 코드, 왜 쓰는 걸까요?var _ UserRepository = (*MySQLUserRepository)(nil)Go의 암시적 인터페이스 구현Go는 다른 언어와 달리 implements 키워드가 없습니다. 메서드 시그니처만 맞으면 자동으로 인터페이스를 구현한 것으로 인정됩니다.type UserRepository interface { FindByID(id int) (*User, error)}// MySQLUserRepository는 UserRepository를 "암.. 2025. 12. 23.
Docker Compose로 개발/운영 환경 분리하기 핵심 요약: Docker Compose의 오버라이드 기능을 사용하면 하나의 기본 설정 파일에 환경별 설정을 덮어씌워 개발/운영 환경을 깔끔하게 분리할 수 있습니다.Docker Compose를 사용하면 개발 환경과 운영 환경을 깔끔하게 분리할 수 있습니다. 이 글에서는 환경별 설정 분리 전략과 민감한 정보 관리 방법을 소개합니다.목차왜 환경 분리가 필요한가?Docker Compose 멀티 환경 파일 구조공통 설정 작성법개발 환경 오버라이드운영 환경 오버라이드환경 변수 관리 전략Makefile 자동화보안 설정왜 환경 분리가 필요한가?실제 프로젝트에서는 개발용 API와 운영용 API가 다른 경우가 많습니다:환경특징개발테스트넷, 모의투자 API, 디버그 로깅운영메인넷, 실거래 API, 최소 로깅 이런 설정들을 .. 2025. 12. 21.
Go에서 Hexagonal Architecture 적용하기 핵심 요약: Hexagonal Architecture는 비즈니스 로직(Domain)을 외부 의존성(DB, API)으로부터 완전히 격리하여, 테스트와 확장이 쉬운 구조를 만드는 아키텍처 패턴입니다. 비즈니스 로직을 외부 의존성으로부터 격리하고 싶다면? Hexagonal Architecture를 고려해보세요.목차Hexagonal Architecture란?핵심 구성요소의존성 방향의존성 주입확장이 쉬운 이유테스트가 쉬운 이유Best Practices마이크로서비스 전환Hexagonal Architecture란?Alistair Cockburn이 제안한 아키텍처 패턴으로, Ports and Adapters 패턴이라고도 불립니다. 핵심 아이디어는 단순합니다:비즈니스 로직(Domain)을 외부 세계(Database, A.. 2025. 12. 17.
Java/Kotlin Spring 개발자의 Go 전환기 #7: Spring과 Go의 Clean Architecture 패키지 구조 비교 "Spring도 Clean Architecture 쓰는데, Go는 패키지 구조가 왜 이렇게 다르죠?" 📌 이 글의 핵심같은 Clean Architecture, 다른 패키지 표현 방식Spring의 domain/usecase/interfaces/infrastructure vs Go의 domain/usecase/interface/infrastructure의존성 방향 규칙: 바깥쪽 → 안쪽(Domain)으로 향하는 설계 원칙Domain 레이어가 인터페이스를 정의하는 Dependency Inversion 실전 적용DI 방식 차이: Spring Container vs Go 명시적 조립🎯 이런 분들께 추천합니다Spring에서 Clean Architecture를 사용해본 개발자동일한 아키텍처를 Go에서 구현할 때.. 2025. 12. 14.
Java/Kotlin Spring 개발자의 Go 전환기 #6: GORM으로 데이터베이스 접근하기 "JPA처럼 편한 ORM이 Go에도 있나요?" 📌 이 글의 핵심Spring JPA 개발자를 위한 GORM 완벽 가이드JPA와 GORM의 유사점과 차이점 비교Clean Architecture와 GORM 통합 패턴GORM을 사용한 실전 Repository 구현🎯 이런 분들께 추천합니다Spring JPA/Hibernate에 익숙한 백엔드 개발자Go에서 ORM을 사용하고 싶은 개발자JPA의 편리함을 Go에서도 누리고 싶은 팀⏱️ 읽는 시간: 약 12분들어가며: Go에도 ORM이 있습니다!Spring Boot에서 Go로 전환하면서 가장 궁금했던 점:"JPA처럼 편한 ORM이 Go에도 있나요?"답은 네, GORM이 있습니다!많은 Go 개발자들이 Raw SQL을 권장하지만, 대부분의 실무 프로젝트에서는 ORM이 .. 2025. 12. 10.
Java/Kotlin Spring 개발자의 Go 전환기 #5: @Autowired가 없다고? - DI Container의 마법에서 명시적 주입으로 "지금 모든 라우팅이 main.go에 있는데 이게 스프링하고 다르게 느껴져"📌 이 글의 핵심Spring의 @Autowired, Component Scan vs Go의 수동 의존성 주입(DI)DI Container의 런타임 마법 vs 컴파일 타임 명시성 비교main.go 구조화 패턴과 Google Wire를 활용한 보일러플레이트 해결MSA 전환 시 명시적 의존성 그래프의 실전 활용🎯 이런 분들께 추천합니다Spring IoC Container에 익숙한 Java 백엔드 개발자Go의 긴 main.go 파일이 불편한 개발자의존성 주입 패턴을 Go에서 구현하고 싶은 아키텍트⏱️ 읽는 시간: 약 13분Spring Boot 프로젝트의 main 메서드를 보면:@SpringBootApplicationpublic cla.. 2025. 12. 7.
Java/Kotlin Spring 개발자의 Go 전환기 #4: implements가 없다고? - 암묵적 인터페이스와 리시버의 세계 "user.Repository와 user_repository.go는 어떻게 연결되는 거야? 자바처럼 명시적인 선언이 없잖아!" 📌 이 글의 핵심Java의 명시적 implements vs Go의 암묵적 구조적 타이핑(Structural Typing)Receiver 메서드(리시버) 개념: Value Receiver vs Pointer Receiver 완벽 이해Dependency Inversion Principle을 Go에서 구현하는 실전 패턴Duck Typing의 안전한 정적 타입 버전으로서의 Go 인터페이스🎯 이런 분들께 추천합니다Java implements 키워드에 익숙한 백엔드 개발자Go의 암묵적 인터페이스 구현이 낯선 개발자SOLID 원칙을 Go에서 적용하고 싶은 아키텍트⏱️ 읽는 시간: 약 12.. 2025. 12. 3.
Java/Kotlin Spring 개발자의 Go 전환기 #3: 테스트 파일이 왜 같은 폴더에 있죠? "src/test 폴더는 어디 갔죠? 왜 테스트가 프로덕션 코드 옆에 붙어있어요?" 📌 이 글의 핵심Spring의 src/test 분리 vs Go의 *_test.go 동일 디렉토리 패턴패키지 응집도 관점에서 본 테스트 파일 배치 전략Given-When-Then 패턴을 Go 테스트에 적용하는 실전 방법White-box vs Black-box 테스트 선택 기준🎯 이런 분들께 추천합니다Spring Boot의 src/main/test 구조에 익숙한 Java 개발자Go의 테스트 파일 구조가 혼란스러운 백엔드 개발자테스트 주도 개발(TDD)을 Go에서 실천하고 싶은 분⏱️ 읽는 시간: 약 10분Go 프로젝트를 처음 열었을 때의 당혹감을 아직도 기억합니다.internal/usecase/auth/├── login... 2025. 11. 30.
Java/Kotlin Spring 개발자의 Go 전환기 #2: Chi를 선택한 이유 - Gin의 유혹을 뿌리치고 "Spring Boot처럼 편한 프레임워크가 없을까?" 📌 이 글의 핵심Go 웹 프레임워크 Gin, Echo, Fiber, Chi 상세 비교 분석프레임워크 Lock-in을 피하는 표준 라이브러리 중심 설계Clean Architecture와 호환되는 웹 프레임워크 선택 전략net/http 표준을 활용한 유연한 백엔드 구조🎯 이런 분들께 추천합니다Go 웹 프레임워크 선택으로 고민하는 백엔드 팀Spring Boot의 편리함을 Go에서 찾고 있는 개발자MSA 전환 시 프레임워크 종속성을 최소화하고 싶은 아키텍트⏱️ 읽는 시간: 약 12분Go 웹 프레임워크를 검색하면 가장 먼저 보이는 것들:Gin (GitHub Stars: 77k⭐)Echo (GitHub Stars: 29k⭐)Fiber (GitHub Star.. 2025. 11. 26.
Java/Kotlin Spring 개발자의 Go 전환기 #1: Spring Controller가 Go의 Router와 Handler로 분리된 이유 "Go에는 왜 Controller가 없지? Router와 Handler가 뭔데?" 📌 이 글의 핵심Spring의 @Controller와 Go의 Router+Handler 패턴 비교Annotation 마법 vs 명시적 라우팅 등록의 차이점MSA 전환 시 Router 분리 패턴의 실전 활용법Chi Router를 사용한 실제 Go 백엔드 구조 설계🎯 이런 분들께 추천합니다Spring MVC 패턴에 익숙한 Java 백엔드 개발자Go 웹 애플리케이션의 라우팅 구조를 이해하고 싶은 개발자REST API 설계 시 Controller vs Handler 선택으로 고민하는 분⏱️ 읽는 시간: 약 10분Spring Boot에서 Go 언어로 넘어온 첫날, 가장 당황스러웠던 점은 익숙한 @Controller가 보이지 않는.. 2025. 11. 23.
728x90