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

단순한 작업에서는 바이브 코딩이 잘 먹힙니다. 다만 복잡한 비즈니스 로직이나 보안이 중요한 영역에서는 한계가 뚜렷합니다. 잘 먹히는 영역 프로토타이핑, 데이터 변환, 문서화, 단순 테스트 코드 작성 정도가 현실적으로 효과적인 범위입니다. "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일

Legacy 테스트 - Subclass and Override Method

레거시 코드 일를 테스트하기 위해 Subclass and Override Method 방법 적용 Subclass and Override Method 방법 참고 링크: https://youtu.be/Dct4bGKCmI8 테스트하기 어려운 부분이 존재할 때 다루는 기법 1. 레거시 코드에서 테스트 대상을 방해하는 부분을 메소드로 분리한다. 레거시 코드의 의존성을 분리하기 위해 메소드 단위로 코드를 분리 2. 분리한 메소드를 protected 로 변경한다 3. 테스트하고자 하는 클래스를 상속받아 테스트용 클래스를 만들고, 분리한 메소드를 재정의 한다. Stubbing 실제 동작과는 다르게 테스트 코드를 쉽게 만들기 위한 작업 4. 테스트용 클래스를 이용해서 테스트 대상을 테스트하는 코드를 작성한다.

2023년 7월 28일