Intro개발하다 보면 작업 중인 변경 사항을 일시적으로 보관하고 브랜치를 이동하거나 삭제해야 할 때가 있다. 이때 보통 git stash를 이용해 변경 사항을 임시 저장하는데, 만약 스태시해 둔 상태에서 브랜치를 삭제하면 어떻게 될까? 혹시 스태시한 작업이 사라지지는 않을까? 이번 포스트에서는 git stash와 브랜치 삭제의 관계를 알아본다.git stashgit stash는 현재 작업 중인 변경 사항(커밋되지 않은 파일 및 수정된 파일)을 임시 저장해 두는 기능이다. 이때 스태시는 브랜치에 의존하지 않고, 저장된 작업은 저장소 내에 독립적으로 유지된다. 즉, 특정 브랜치에서 git stash를 사용해도 이 스태시 항목은 브랜치가 아닌 저장소 자체에 저장되기 때문에 다른 브랜치로 이동하거나 브랜치를 ..
전체 글 503
Intro기존에는 주로 자동 증가 숫자 타입을 PK로 쓰곤 했는데, 최근에는 분산시스템에서도 사용 가능한 UUID를 데이터베이스의 기본 키(Primary Key)로 사용하는 경우가 많아지고 있다. 이번 글에서는 UUID및 숫자 타입을 PK로 사용했을때의 장단점을 비교해보고 추가로 대안도 찾아보자각 타입의 특징Numeric ID성능: 숫자 기반이므로 저장 공간이 적고, 데이터베이스 인덱싱 성능도 우수하다. 조회 성능에서 유리하다.단순함: 자동 증가 숫자 방식은 직관적이고, 값을 예측할 수 있어서 관리하기 쉽다.가벼움: Long 타입은 8바이트(64비트)로 UUID보다 작아, 대규모 데이터베이스에서 저장 공간을 절약할 수 있다.UUID고유성과 확장성: UUID는 분산 시스템에서 중앙 서버 없이도 고유 식별자..
IntroJsoup은 HTML 파싱을 위한 Java 라이브러리로, 웹페이지의 HTML을 가져와 파싱하고 조작할 수 있다. CSS 셀렉터를 이용해 원하는 요소를 선택할 수 있어서, 웹 스크래핑과 같은 작업에 유용하다.이전 글에서 이미지 파일을 대상으로 OCR 하는 방법에 대해 알아보았는데, 이번에는 OCR의 대상이 되는 이미지를 직접 웹페이지에서 찾아오는 방법을 알아보도록 한다.실습jsoup 추가gradleimplementation 'org.jsoup:jsoup:1.15.3'maven org.jsoup jsoup 1.15.3HTTP요청간단하게 http 요청으로 웹페이지의 응답을 받아오는 예시를 작성해보겠다.JDK 11 에서부터는 java.net.http.HttpClient가 생겨서 그나마 ..
IntroGit을 사용하다 보면 의도와 다르게 커밋을 하거나, 잘못된 브랜치에서 커밋을 진행하는 실수를 할 때가 있다. 이렇게 한 번 커밋을 하고 나면 --amend 옵션으로 이미 커밋한 내용을 수정하고, force push로 덮을 수 있지만 때로는 커밋 자체를 완전히 취소해야 할 경우도 있다.이 글에서는 실수로 커밋한 내용을 되돌리기 위한 방법들을 예시와 함께 살펴보고, 각 상황에서 주의할 점에 대해 정리한다.실습커밋을 취소해야 하는 상황커밋 취소가 필요한 상황은 다양하다. 다음과 같은 경우가 대표적이다.커밋을 했으나 수정할 내용이 있다: 커밋 메시지나 커밋된 내용에 빠진 부분이 있다면 --amend 옵션을 사용하여 커밋을 수정할 수 있다.잘못된 브랜치에서 커밋을 한 경우: 작업 브랜치가 아닌 다른 브..
Intro최근에 점심 도시락 메뉴가 종종 궁금한데 확인하러 일일히 들어가는 건 번거로워서 슬랙 봇을 만들까 생각을 했다.점심 도시락 업체에서는 메뉴를 이미지로 웹사이트에 게시하고 있었고, 이 이미지를 가져오면 되는데, 이왕 하는 김에 텍스트로 변환까지 하면 더 좋겠단 생각이 들었다. 이를 위해 OCR(Optical Character Recognition) 기술을 활용했고, 그 과정에서 얻은 경험을 공유하려고 한다.OCR은 이미지나 PDF에 포함된 텍스트를 기계가 인식하여 디지털 텍스트로 변환하는 기술이다. 스캔된 문서, 사진 속 텍스트 등을 데이터로 활용할 수 있게 해주며, 문서 디지털화, 자동 번역, 데이터 입력 자동화 등 다양한 분야에서 활용되고 있다.TesseractTesseract는 HP에서 아주..