728x90
728x90

전체 글 629

코틀린 기초 - 클래스 기초

"코틀린 완벽 가이드"라는 책을 보면서, 필요한 부분만 간추렸습니다. 버전이 달라지면서 변경된 부분이나, 잘못된 부분이 있을 수 있고 혹시 발견하게 되시면 지적은 언제나 환영합니다. 클래스 정의 class Person { var firstName: String = "" var familyName: String = "" var age: Int = 0 fun fullName() = "${this.firstName} ${this.familyName}" fun showMe() { println("${this.fullName()}: ${this.age}") } } 자바는 package private 이었지만, 코틀린 클래스는 기본적으로 public 자바와 달리, 코틀린에서는 클라이언트 코드를 바꾸지 않아도 원하는..

코틀린 기초 - 기초 문법

"코틀린 완벽 가이드"라는 책을 보면서, 필요한 부분만 간추렸습니다. 버전이 달라지면서 변경된 부분이나, 잘못된 부분이 있을 수 있고 혹시 발견하게 되시면 지적은 언제나 환영합니다. 기본 문법 일반 세미콜론으로 끝내지 않는다. 기본 스타일이고, 권장 스타일이니 이를 따르자. 타입 추론을 하며, 강타입 언어다. 주석 자바랑 기본적으로 동일함 단, 자바와 다르게 코틀린은 multiline 주석을 내포할 수 있음 변수 정의 val 불변 var 가변 자바와 다르게 코틀린은 대입문 연쇄(a = b = c )를 사용할 수 없다. 값을 돌려주지 않는다. 복합 대입 연산에도 해당한다. 모든 코틀린의 타입은 근본적으로 클래스 정의를 기반으로 만들어진다. a = 'a' 인 변수의 a + 5 대해서, 자바 : 결과를 암시적..

Spring Batch 5.x에 적응하기

0. 이 글의 발단 Spring Batch 작업을 하다가 필요한 내용을 찾다 보니, 4.x랑 5.x가 내용이 꽤나 많이 바뀐 것 같아 작성하였다. 사실, 버전 마이그레이션을 하려고 했던 부분은 아닌데 어차피 확인해보고 싶은 내용은 버전과 무관한 부분이어서, 학습하는 김에 바뀐 버전에서는 어떻게 활용해야 하는지 정리해보려고 한다. 훗날 마이그레이션 작업을 할 일이 있거나, 새로운 코드를 작성할 때 빠진 내용이 있다면 이 글에 붙여나갈 계획이다. 이 글은 어디까지나, 탐색 형식으로 버전 마이그레이션에 대해 탐구한 내용이라서 모든 내용을 다루고 있지 않고 일부 놓친 부분이 있을 수 있으므로, 공식 마이그레이션 가이드를 참고하는 것을 권장한다. (혹시나, 글에 오류가 있거나 문제가 있다면 지적은 언제나 환영합니..

Framework/Spring 2024.03.03

쉽고 빠르게 익히는 실전 LLM(ChatGPT 활용부터 LLM 파인튜닝, 임베딩, 고급 프롬프트 엔지니어링까지)

서론 저자의 경험을 바탕으로 이해한 LLM에 대한 내용들을 책에 모아놓은 느낌을 받았다. ChatGPT로 LLM이라는 것에 처음으로 관심을 가지게 된 사람부터 본격적으로 솔루션을 만들어보려는 기획자, 이를 설계하고 개발하는 개발자까지 다양한 사람들을 상대하면서 본인이 경험했던 내용들에 대해 이해하기 쉽게 녹여놓은 책으로 기억에 남는다. 책의 구성 Part 1. LLM 소개 LLM에 대한 기초적인 내용을 다룬다. 텍스트 임베딩, 어텐션, 트랜스포머 등 NLP 지식이 어느정도 있는 사람들은 빠르게 훑고 넘어가도 되는 내용들도 포함되어 자연어 처리가 익숙한 사람들은 빠르게 훑고 넘어가도 되는 내용들을 다룬다. 의미 기반 검색(Semantic Search)를 직접 구성해보기도 하고, 저자가 프롬프트 엔지니어링을..

[MySQL/Mac] root 비밀번호 초기화하기

개인 컴퓨터에서 개발을 하다보면 DB를 로컬 환경에 설치하게 되는데, 그때마다 root 비밀번호가 나를 곤란하게 한다. 비밀번호를 설정 안하고 싶지만, 그래도 형식상으로 설정을 하다보면 늘 비밀번호를 까먹게 된다. root 비밀번호를 초기화하는 방법에 대해 알아보자. MySQL 8 Mac에서 homebrew로 설치 위 환경을 전제로 썼지만, Mac OS + MySQL이라면 명령어는 거의 비슷할 것이다. (MySQL 버전에 따라 다를 순 있다.) 1. 서버 종료 후, mysqld_safe로 인증 없이 실행하도록 서버 실행 아래 명령어가 제대로 동작하지 않거나, 명령어가 없다고 뜨는 경우 환경변수를 체크해보도록 하자. mysql.server stop mysqld_safe --skip-grant-tables ..

Computer Science/DB 2024.02.12

[Mac] Apple M3에서 Rancher Desktop 사용 시, host agent is running but driver is not 오류 해결 경험

2022년 1월까지 유예기간을 끝으로 Docker Desktop이 유료화되고, 라이선스 이슈가 있는 곳들은 유료 플랜을 사용하거나 다른 대응 방안을 이용해서 Docker 환경을 구축하고 있다. Docker Desktop 유료화 대응 방법을 다룬 포스트들 대부분이 Virtual Box + minikube(적용 방법)를 활용하였는데, 당시 실리콘 맥(M1, M2, M3)에서는 VirtualBox는 프리뷰 버전이었고, minikube는 지원하지 않는 이슈가 있었다. 그래서 다른 대안인 Rancher Desktop(적용 방법)를 사용했었다. 현재 minikube는 지원하는 것 같고, Qemu 에뮬레이터를 이용한 방법 등으로 적용 가능한 것 같다. Qemu + minikube 적용 방법 기존에 하던 것 그대로 하..

개발 팁 2024.01.11

[Mac] 맥 터미널 설정하기 with iTerm2, Oh-my-zsh

맥이건, 윈도우건 기본 터미널과 기본 테마로도 필요한 작업들을 모두 수행할 수 있지만, 그 편의성이 많이 떨어지고 경우에 따라서는(특히 테마) 경로나 명령어들을 구분하기 쉽지 않아 작업하기 어려울 때가 많다. 터미널 도구인 iTerm2와 zsh 확장 도구인 Oh-my-zsh를 사용한다면, 편리하고 예쁜 터미널 환경을 구성하여 작업할 맛을 챙길 수 있으니 한 번 설정해 보자. 1. iTerm2 설치하기 iTerm은 기본 기능을 확장해 커스텀 단축키나 스크립트, 화면 나누기 등의 편의성을 챙길 수 있는 터미널 도구로, brew를 이용해 설치한다. brew install iterm2 또는 brew install --cask iterm2 2. Oh My Zsh 설치 Oh My Zsh는 iTerm2를 사용 터미널..

개발 팁 2023.12.30

프록시(Proxy) 패턴에 대해 알아보자.

프록시 패턴(Proxy Pattern)? 특정 객체로부터의 "접근을 제어"하는 대리인(객체)을 제공한다. 어떤 객체를 사용하려고 할 때, 객체를 직접 참조하는 것이 아니라 해당 객체에 대응하는 일종의 대리인 역할을 하는 객체를 통해서 대상에 접근하는 방식으로, 직접 참조하려던 객체가 메모리에 존재하지 않아도 기본적인 정보 참조나, 실제 사용 시점까지 생성 시점을 미루는 등의 행위가 가능해진다. 대표적인 세 가지 종류 원격 프록시 다른 JVM 상에서 존재하는 객체를 대신하는 로컬 객체를 만들어 사용한다. 로컬 객체에 있는 프록시 메서드를 호출하게 되면 원격 객체의 메서드를 호출하여 관련 작업을 처리하고 이 처리 결과를 넘겨받아서, 실제 로컬 환경에 원격 객체가 존재하는 것처럼 동작하게 하는 방법이다. 가상..

NGINX(엔진엑스) 명령어 및 옵션 정리

명령어 기본 명령어 및 옵션 설명 nginx nginx 기동 -?, -h 도움말 출력 -v nginx 버전 정보 출력 -V nginx 버전 정보 + 빌드 정보 및 바이너리에 포함된 모듈 + 설정 파라미터 정보 -t 설정 테스트. 설정을 변경했을 때 구문 체크 등에 활용 -T -t와 동일하게 테스트를 진행. 추가적으로 테스트 결과를 stdout으로 출력 -q 설정 테스트를 진행할 때 오류가 아닌 메세지는 제외하는 옵션 -p prefix nginx 경로 prefix를 지정 -c file 기본 설정 파일 대신 지정한 파일을 설정 파일로 사용 -e file 기본 파일 대신 오류 로그 파일을 사용하여 저장 stderr를 입력하면, 표준 오류 파일을 선택 -g directives 글로벌 설정을 설정할 때 사용 ng..

Effective Java 3/E - 6장 열거 타입과 애너테이션 - 2

39. 명명 패턴보다 애너테이션을 사용하라 명명 패턴의 단점 오타가 나면 안 된다. 올바른 프로그램 요소에서만 사용된다는 보장이 없다. 프로그램 요소를 매개변수로 전달할 마땅한 방법이 없다. 애너테이션 선언 일반적인 정의 방법 public @interface Sample { } JUnit에서 사용하는 @Test 애너테이션 @Target({ ElementType.ANNOTATION_TYPE, ElementType.METHOD }) @Retention(RetentionPolicy.RUNTIME) @Documented @API(status = STABLE, since = "5.0") @Testable public @interface Test { } 메타 애너테이션 애너테이션 선언에 다는 애너테이션 @Reten..

728x90