개발자와 CHATGPT

Intro소프트웨어 개발에서 가장 큰 비용은 무엇일까?사무실 임대료, 클라우드 서버 비용, 전기요금, 노트북 등 장비 구매비용, 직원들의 식비까지—이 모든 항목이 소프트웨어 개발을 구성하는 요소들이지만 그 중에서도 단연코 가장 큰 비중을 차지하는 건 인건비다. 인건비 앞에서는 다른 비용들은 그저 껌값일 뿐이다.인건비는 단순히 직원들이 받는 월급뿐만 아니라, 4대 보험 회사 부담분, 퇴직금, 연차수당, 교육비, 단체보험료, 채용비, 인사관리비용과 같은 다양한 항목으로 구성되어 있으며, 이러한 비용들은 조직에 상당한 부담을 준다.이처럼 소프트웨어 개발의 핵심 비용 구조가 인력에 집중되어 있다 보니, 최근의 대규모 언어 모델(LLM)과 같은 혁신적인 기술이 큰 주목을 받고 있다. LLM은 단순한 비정형 데이터..

Data/LLM 2024.12.29
네이버 Clova를 이용한 OCR

Intro네이버 Clova OCR은 이미지를 분석해 텍스트를 추출하는 도구다. 영수증, 명함, 문서 스캔 등 다양한 케이스에 활용할 수 있다. 특히 네이버가 제공하는 OCR API는 한국어 문서 처리에 최적화되어 있어, 다른 OCR 서비스보다 높은 정확도를 제공한다. Tesseract 를 활용한 인식에서 정확도가 떨어지는 문제가 있어서 비교를 위해 시도해보았다.이번 포스팅에서는 네이버 Clova OCR을 설정하고 사용하는 방법을 단계별로 정리해 보겠다.Clova OCR 시작하기1. 네이버 Clova OCR API 신청먼저, 네이버 Clova OCR API를 사용하려면 네이버 클라우드 플랫폼(NCP) 계정이 필요하다.NCP 회원가입 및 로그인 네이버 클라우드 플랫폼(https://www.ncloud.com..

Development/Develop Tools 2024.11.27
Spring 6의 HTTP Interface

IntroSpring Framework 6.1 에서 새롭게 등장한 HTTP Interface는 외부 API를 호출하고 데이터를 처리하는 과정을 아주 단순하게 해준다.기존에도 RestTemplate, WebClient 등의 강력한 도구들이 있었지만, Feign Client 에서 영감을 받은 선언적 인터페이스 방식의 HTTP Interface는 간결한 코드로 손쉽게 사용할 수 있다.이번 글에서는 스프링에서 외부 API 호출을 어떻게 진화시켜왔는지 살펴보고, 마지막으로 HTTP Interface를 활용해 간단히 외부 API 요청을 처리하는 방법을 알아본다. 실습에 앞서 스프링부트 프로젝트를 생성해주자.스프링부트 버전은 꼭 3.1+ 해줘야 Http Interface를 사용할 수 있다. Dependencies에 ..

Programming/JPA ⁄ Spring 2024.11.26
Git Submodule 최신 커밋으로 업데이트

IntroGit submodule은 프로젝트 안에 다른 Git 저장소를 포함할 때 유용하게 쓰인다. 하지만 서브모듈은 특정 커밋에 고정되기 때문에 메인 저장소를 업데이트해도 서브모듈이 자동으로 최신 상태로 업데이트 되지 않는다. 아래의 경우에 속한다면 불편함을 겪고 있었을 거라 생각한다.프로젝트에 외부 라이브러리나 모듈이 포함된 경우서브모듈이 자주 업데이트되는 상황에서 최신 상태를 유지하고 싶을 때여러 서브모듈이 있어 일일이 들어가서 업데이트하기 번거로울 때서브모듈을 최신 커밋으로 업데이트할 때, 하나씩 디렉터리에 들어가서 업데이트하지 않고, 명령어 하나로 깔끔하게 처리하는 방법을 알아보자.서브모듈 업데이트1. 서브모듈 초기화 및 업데이트우선, 서브모듈이 아직 초기화되지 않았다면 초기화부터 해주자.git..

Development/Git 2024.11.25
macOS와 Linux에서 `sed -i` 옵션 동작 차이

Introsed의 -i 옵션은 파일을 직접 수정(in-place)하는 기능을 제공한다. 하지만 GNU sed(주로 Linux에서 사용)와 BSD sed(macOS에서 사용) 간의 구현 방식 차이로 인해 같은 명령어라도 다른 결과를 초래할 수 있다. 그 차이는 다음과 같다:GNU sed: -i 뒤에 백업 확장자를 생략하면 원본 파일을 수정하며, 백업 파일을 생성하지 않는다.BSD sed: -i 뒤에 백업 확장자를 반드시 명시해야 한다. 백업을 원치 않으면 빈 문자열('')을 사용해야 한다.예제 비교sed -i 's/hello/bye/g' example.txtGNU sed: 파일을 백업 없이 수정.BSD sed: 's/hello/bye/g'을 백업 확장자로 해석하려다 에러 발생(invalid command ..

Development/Develop Tools 2024.11.24
1 2 3 4 5 6 7 ··· 104