바이브 코딩을 넘어서 - 기획 영역에서의 AI 활용

바이브 코딩을 기획 단계에 적용하면 문서 초안을 빠르게 뽑을 수 있습니다. 다만 비즈니스 맥락과 우선순위는 사람이 채워야 합니다. AI가 잘하는 기획 작업 문서 초안 작성, 구조화, 표준 포맷 적용에서 효과적입니다. 사용자 스토리, PRD 초안, 기능 명세서 같은 정형화된 산출물을 빠르게 만들 수 있습니다. "로그인 기능에 대한 사용자 스토리를 작성해줘. 이메일/비밀번호 방식과 소셜 로그인 지원" "결제 프로세스의 상세 플로우를 단계별로 정리. 각 단계의 필요 데이터와 예외 상황 포함" 반면 비즈니스 맥락은 이해하지 못합니다. 일반적인 요구사항은 작성할 수 있지만, 특정 도메인의 비즈니스 규칙이나 이해관계자 간 요구사항 조율은 할 수 없습니다. ...

2025년 10월 2일

바이브 코딩 심화편 - 실무 적용과 한계

단순한 작업에서는 바이브 코딩이 잘 먹힙니다. 다만 복잡한 비즈니스 로직이나 보안이 중요한 영역에서는 한계가 뚜렷합니다. 잘 먹히는 영역 프로토타이핑, 데이터 변환, 문서화, 단순 테스트 코드 작성 정도가 현실적으로 효과적인 범위입니다. "React로 사용자 관리 시스템을 만들어줘. 추가, 수정, 삭제 기능과 로컬 스토리지 연동 포함" "CSV 파일을 읽어서 이메일 주소만 추출하고 중복 제거 후 JSON 배열로 변환해줘" 명확한 입출력 구조를 가진 작업일수록 정확도가 높습니다. 주의해야 하는 영역 보안이 가장 큰 문제입니다. AI가 생성한 코드에는 SQL 인젝션, 인증 우회 같은 OWASP Top 10 취약점이 포함될 수 있습니다. 특히 입력 검증과 권한 관리에서 치명적 오류가 발생하기 쉽습니다. ...

2025년 9월 24일

바이브 코딩이란 무엇인가? - AI 시대의 새로운 프로그래밍 패러다임

바이브 코딩이란? 바이브 코딩(Vibe Coding)이란 자연어로 의도를 설명하면 AI가 코드를 만들어주는 방식입니다. 기존 프로그래밍이 정확한 문법과 구조를 요구했다면, 바이브 코딩은 어떻게 구현할 것인가보다 무엇을 하고 싶은가에 초점을 맞춥니다. 전통적인 방식 def calculate_average(numbers): if len(numbers) == 0: return 0 return sum(numbers) / len(numbers) 바이브 코딩 방식 (의도 중심) "숫자 리스트의 평균을 계산해줘, 빈 리스트면 0 반환" 완벽한 코드를 한 번에 작성하는 게 아니라, AI와 대화하면서 점진적으로 개선해 나갑니다. 단순히 코드 한 줄을 생성하는 것을 넘어서, 프로젝트 전체 맥락을 이해하고 일관성 있는 코드를 만들어내는 것이 핵심입니다. ...

2025년 9월 17일

springdoc-openapi @ApiResponse 어노테이션의 useReturnTypeSchema 속성

@ApiResponse 어노테이션의 useReturnTypeSchema 속성 컨트롤러 메서드의 반환 타입을 자동으로 추론하여 OpenAPI 스펙의 response schema 로 사용 @Operation(summary = "사용자 조회", responses = { @ApiResponse(responseCode = "200", description = "조회 성공", useReturnTypeSchema = true) })

2025년 6월 26일

Mac zsh 설정

(deprecated) zsh 설치 $ brew install zsh oh-my-zsh 설치 $ sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" $ vi .zshrc source $ZSH/oh-my-zsh.sh 플러그인 설치 zsh-autosuggestions 설치 $ git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions $ vi .zshrc plugins=(... zsh-autosuggestions ...) zsh-syntax-highlighting 설치 $ git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting $ vi .zshrc plugins=(... zsh-syntax-highlighting ...) 테마 설치 Powerlevel10k 설치 $ git clone --depth=1 https://github.com/romkatv/powerlevel10k.git "${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k" $ vi .zshrc [[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh powerlevel10k 설정 후, 커스텀하기 위해 설정파일을 복사하여 수정함. ...

2025년 4월 25일

ImageMagick crop

ImageMagick 설치하기 $ brew install imagemagick Shell Script 로 이미지 자르기 $ magick 원본이미지.jpg -crop {가로}x{세로}+{x좌표}+{y좌표} 잘린이미지.jpg ex) $ magick a.jpg -crop 1179x1040+0+420 1.jpg (Old ver) Shell Script 로 이미지 자르기 $ convert 원본이미지.jpg -crop {가로}x{세로}+{x좌표}+{y좌표} 잘린이미지.jpg ex) $ convert a.jpg -crop 1179x1040+0+420 1.jpg

2025년 3월 26일

IntelliJ debug variable json view

IntelliJ debug variable json view new com.fasterxml.jackson.databind.ObjectMapper() .registerModule(new com.fasterxml.jackson.datatype.jsr310.JavaTimeModule()) .disable(com.fasterxml.jackson.databind.SerializationFeature.WRITE_DATES_AS_TIMESTAMPS) .writerWithDefaultPrettyPrinter() .writeValueAsString();

2024년 11월 7일

Hugo 태그 설정

Hugo 기본 설정으로 tags 사용 PaperMod 테마 설정 hugo.yaml 파일 수정 menu: main: - identifier: tags name: tags url: /tags/ weight: 10 content 에 태그 추가 tags: - hugo 참고 링크 Hugo Taxonomies: https://gohugo.io/content-management/taxonomies/ PaperMod wiki: https://github.com/adityatelange/hugo-PaperMod/wiki/Installation#sample-configyml

2024년 1월 12일

Synology NAS ssh 설정

Synology NAS ssh 설정 DSM 7.2.1 기준 제어판 - 터미널 및 SNMP - 터미널 SSH 서비스 활성화 포트 설정 공유기 포트포워딩 Synology NAS 에서 설정한 ssh 포트로 포트포워딩 설정 ssh 클라이언트에서 접속 $ ssh -p [포트] [아이디]@[시놀로지주소]

2024년 1월 5일

IntelliJ SonarLint 한글 이름 사용

IntelliJ SonarLint 플러그인 설치 https://plugins.jetbrains.com/plugin/7973-sonarlint SonarLint 설정 IntelliJ - Settings - Tools - SonarLint - Rules 각 룰 마다 다음 정규표현식 설정 Class names: ^[A-Z][a-zA-Z0-9]*|[A-Z가-힣][a-zA-Z0-9가-힣_]*$ Field names: ^[a-z][a-zA-Z0-9]*|[a-z가-힣][a-zA-Z0-9가-힣_]*$ Interface names: ^[A-Z][a-zA-Z0-9]*|[A-Z가-힣][a-zA-Z0-9가-힣_]*$ Local variable and method parameter names: ^[a-z][a-zA-Z0-9]*|[a-z가-힣][a-zA-Z0-9가-힣_]*$ Method names: ^[a-z][a-zA-Z0-9]*|[a-z가-힣][a-zA-Z0-9가-힣_]*$ Test class names: ^((Test|IT)[a-zA-Z0-9가-힣_]+|[A-Z][a-zA-Z0-9_]*|[A-Z가-힣][a-zA-Z0-9가-힣_]*(Test|Tests|TestCase|IT|ITCase))$

2024년 1월 2일