🛠️ 개발 환경Kotlin : 1.9.25Spring boot : 3.5.6Github💨 요청 흐름코드 리뷰가 진행되는 흐름은 다음과 같습니다.PR → Github webhooks → Server → Google AI Studio → Get Github Apps(Bot) token → Github PR Comment개인 Token을 사용하여 Comment를 남길 경우, 본인 계정으로 리뷰를 남기게 됩니다. 여러 명이서 작업하는 환경에서 오해의 여지가 발생할 수 있어, Github Apps를 사용해 Bot을 생성하여 해당 Bot의 Token을 발행해 리뷰를 남기게 됩니다.🚨 주의 사항이 포스팅은 EC2 인스턴스가 있으며, 본인의 도메인이 있다는 것을 가정하고 진행하며, Google AI Studio를..
이전 게시글에서 이어지는 내용입니다.Github Actions 설정Repository secret 설정Secret의 경우, deploy.yml에서 사용되는 정보들이다. 이는 유출되면 위험하기 때문에, Github secrets에서 관리를 하고, deploy.yml에서 변수 이름으로 가져와 사용하게 된다. 배포할 리포지토리의 Settings → Secrets and variables → Actions에 들어가서, 다음 항목들을 New repository secret을 눌러 입력해준다.이름값EC2_HOSTEC2 퍼블릭 IPv4 주소 (예: 13.125.xxx.xxx)EC2_USER보통 ec2-user (Amazon Linux), ubuntu (Ubuntu)EC2_SSH_KEY이전 게시글에서 만든 privat..
배포 파이프라인┌──────────────────────────────────────────────────────────────────────────────────────────────┐│ GitHub Actions ││ ┌────────────────────┐ ┌────────────────────────────┐ ││ │ *build* │ │ *dockerize 단계* │ ││ ..
🛠️ 개발 환경LM Studion8nGitLab⚙️ 설정 방법이 구성은 GitLab에서 MR(Merge Request)이 생성될 때, n8n과 LLM 기반 코드 리뷰 시스템이 자동으로 코드를 분석하고 GitLab에 리뷰를 등록하는 프로세스다. 이 과정을 통해 리뷰 속도와 품질을 높일 수 있다.LM Studio 설정LM Studio를 설치한 후, gpt-oss-20b 모델을 설치하고, 환경 설정에서 다음 항목을 반드시 체크한다.When applicable, separate reasoning_content and content in API responses이 항목을 체크하지 않으면 LLM이 응답할 때 reasoning 결과가 content에 함께 포함되어 전달되기 때문에, API 응답 파싱 시 불필요한 데..
코드 품질과 효율성프로그래밍을 처음 배울 땐 "돌아가기만 하면 성공"이었다면, 시간이 흐르면서 코드의 품질, 특히 효율성이 핵심이 된다.예시: 2부터 100까지의 짝수 출력var i = 0while (i++ var i = 2while (i → 같은 기능이지만 연산 횟수가 다르다. 성능 향상을 위해선 불필요한 연산을 줄이는 것이 핵심이다.자료구조자료구조(Data Structure)란, 데이터를 조직하고 저장하는 방식을 의미하며, 코드 성능에 직접적인 영향을 준다. 속도 비교 시, 실행 시간보단 연산 단계 수 기준이 더 명확한데 이를, 시간 복잡도(Big-O)로 표현한다.코틀린의 배열 종류코틀린에서 기본 타입의 배열을 생성하는 방법은 2가지가 존재한다.val a = IntArray(3) { it + 1 } ..
🛠️ 개발 환경Kotlin: 2.2.0Spring Boot: 3.5.3💬 상황 설명회사에서는 WebFlux 기반의 서버를 사용하고 있어서, 컨트롤러 호출 전 Netty의 고수준에서 요청 데이터를 받아 내부 객체 형태로 변환한다. 이 과정에서 요청 본문을 UTF-8로 인코딩한 ByteArray로 저장한 뒤, 이를 문자열로 디코딩하여 누적(concatenate)하는 방식으로 처리한다. 대량의 데이터가 요청될 경우, Netty가 기본적으로 8KB(8192바이트) 단위로 청크로 나누어 수신하는데, 이때, 8KB 경계에서 UTF-8 멀티바이트 문자가 중간에 잘리면, 디코딩 과정에서 유효하지 않은 시퀀스로 간주되어 � (U+FFFD)로 표시된다. 이를 서로게이트 페어가 깨졌다고 표현한다. 예를 들어, 8KB(8..