| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 | 31 |
- 정보처리기사2022
- 아싸의 생일
- 재택치료
- 정보처리기사 2022
- 다음에 또 만나자
- FLUTTER
- 에러 핸들링
- 다들 안잊어서
- 다행이야...ㅎ
- 스프링 MVC
- 개강해짐
- 교육봉사
- CRUDS
- 생일축하해 나 자신
- 모바일 청첩장
- 대학생
- 수제비 2022
- 뽀모도로 타이머
- 지독한 컨셉충
- 수제비2022 정리
- 리눅스 마스터 2급
- TypeScript
- 타입 스크립트
- 2022 정보처리기사
- pem키 분실
- 교수님 과제 이제 그만..
- 자가격리
- N-Queen
- 얘들아 잘 지내니
- 플러터
- Today
- Total
목록전체 글 (92)
Rei’s Tech diary
한창 주변 사람들에게 내가 만든 GitScope를 보여주며, 긍정적인 반응들을 얻던 중..인도 개발자 친구에게도 홍보를 부탁할 겸, 개발한 걸 보여주기 위해서 다국어 기능을 추가하기로 했다. 가장 중요하게 고려한 부분은 다음 두 가지였다. 1. 새로운 언어 추가가 쉬울 것.2. 사용자가 직접 언어를 설정할 수 있을 것 (기본값 : 시스템 언어) GitScope 서비스에는 세 가지 영역의 번역 작업이 필요했다.1. Command Palette2. WebView3. Console Log 여기서 2. WebView와 3. Console Log는 한 리소스 파일로 묶어서 관리하기로 했고, Command Palette는 별도로 작업해야 했다. 나도 다같이 한 파일로 묶어서 관리하고 싶었지만, 어떤 방법을 써..
🚀 배경 및 목적각 모듈의 역할을 설계도처럼 정의하여, 다른 개발자들이 코드의 전체 구조와 기능을 쉽게 파악하고 확장할 수 있도록 하기 위해 진행했다.특히, Git 관련 로직은 실제 Git 명령에 의존하는 구현체와 분리하여 테스트 용이성과 확장성을 극대화하는 데 초점을 맞췄다. 🧱 인터페이스 설계 원칙 (= 설계도)1. 계약 정의 (Contract Definition)이 인터페이스를 구현하는 모든 클래스가 반드시 제공해야 하는 기능을 명확히 정의 2. 의존성 분리 (Dependency Inversion)실제 구현체 대신(다른 Service) 이 인터페이스에 의존하게 하여, 핵심 로직이 특정 환경이나 기술에 묶이지 않도록 함. 🎯 리팩토링 목표 이번 리팩토링의 핵심 목표는 다음과 같았다.1...
📢 문제 발생 (ver.0.0.6) 작업을 하다가 불필요한 파일을 삭제하거나, 리팩토링 시 파일을 다른 경로로 옮겼을때, 기존에 작업하던 파일이 없다는 "did not match any files" 오류가 발생하였다. 📢 문제 원인 분석- getModifiedFiles() : 수정된 파일 목록 가져오기- stageSelectedFiles() : 선택된 파일 목록 스테이징하기우선, 수정된 파일 목록을 가져오는 getModifiedFiles()에서는 오류가 나지 않고, stageSelectedFiles()에서 파일들을 스테이징하는과정에서 오류가 발생하는 것을 확인하였다. 코드를 살펴보니,- 브랜치명 추천받을 때 스테이징 했던 파일을 커밋 메시지 추천 시 또 스테이징 하려고 하니까 발생한 문제..
기존에 Branch 생성 및 추천, Commit Message 추천 방식은 다음과 같았다. 다음과 같은 이유로 이 방식이 비효율적이라고 생각했다. 1. 부정확한 파일 추적 - Unstaged ≠ 실제 수정된 파일 2. 이전 작업의 간섭 - git add . 이후 선택적 작업이 불가능 해결 방향:✅ 브랜치명 재추천 시 다시 UnStaging 가능✅ Commit Message 추천 시 파일 재선택 가능✅ 각 단계가 독립적으로 동작 따라서 다음과 같이 개선했다. 1. Branch명 추천 알고리즘 2. Commit Message 추천 알고리즘 branch 추천 과정에서는 수정된 파일을 스테이지에 올리는 것까지,여기서 스테이지에 올린 파일들로 commit message를 추천받는게 올바른 설계라고 생각하고..
📘 1. 개요 GitScope Extension은 Git 명령, Gemini API 호출, Simple-git 호출 등 다양한 작업을 수행하면서 발생하는 오류를 명확하게 표현하고 사용자에게 친절하게 안내하기 위해 커스텀 Error 클래스 계층 구조를 설계했다. 기존에는 개별 기능 Error를 직접 상속해 사용하는 단순 구조였으나, 새로운 구조에서는 공통된 에러 패턴을 재사용하고 HTTP 기반 오류 처리의 일관성과 확장성을 확보하는 방향으로 개선했다. 🌟 2. 기존 Error 처리 방식export class ApiKeyError extends Error { constructor(message: string) { super(message); this.name = 'Ap..
새 브랜치 만들어야 하는데 이름 짓기 싫다...커밋 메시지 뭐라고 쓰지..아..귀찮다...우리팀 깃 컨벤션 규칙이 뭐였더라? 한번쯤 이런 순간을 겪어본 개발자들을 위한 VSCode Extension을 소개합니다! GitScopeGitScope는 Git 작업을 AI 기반으로 자동화하고 간소화하는 “Git 워크플로우 개선도구” 입니다.Gemini API키와 Git repository 주소만 있으면 누구나 쉽게 이용할 수 있습니다! https://marketplace.visualstudio.com/items?itemName=Tomacato.gitscope GitScope - Visual Studio MarketplaceExtension for Visual Studio Code - AI-Power..
📢 문제 원인 git 관련 프로젝트를 하던 중, simple-git을 설치하여 git diff를 수집하는 과정에서, txt 파일을 바이너리(binary)로 인식하여 git diff가 제대로 해석되지 않았다. 이 문제는 다음과 같은 이유로 발생할 수 있다 :1. 텍스트가 아닌 바이트 데이터 (예: 0x00 같은 null 문자)가 포함된 경우2. 인코딩이 깨져서 Git이 텍스트로 해석하지 못하지 못하는 경우3. .gitattributes나 Git 설정에서 해당 파일이 binary로 지정된 경우 💡 해결 방법 Git에 "이건 텍스트 파일이야."라고 명시적으로 알려주면 문제를 해결할 수 있다.이를 위해 git diff 명령어에 --text 옵션을 추가한다.git diff --text 이 옵션을 ..
💡 위상 정렬 (Topology Sort)- 방향성이 있는 그래프(Directed Graph)에서 선후 관계를 유지하면서 노드를 나열하는 방법- 방향 그래프의 모든 노드를 '방향성에 거스르지 않도록 순서대로 나열'하는 것- 사용 예시) 작업 스케줄링 : 어떤 작업을 다른 작업이 끝나야 시작할 수 있을 때, 과목 선수 조건 등등- 시간 복잡도 : $O(E + V)$ 📌 핵심 아이디어- 진입 차수 (Indegree) : 특정한 노드로 들어오는 간선의 갯수를 의미- 진입 차수가 0인 노드부터 꺼내면서 순서대로 처리하고, 그 노드에서 나가는 간선을 제거 💡 위상 정렬 알고리즘 원리1. 진입 차수가 0인 노드를 큐에 넣는다.2. 큐가 빌 때까지 다음의 과정을 반복한다. a. 큐에서 원소를 꺼내 해당..