Category
zsh 깔려있지 않은 패키지 안내 메세지 command-no-found
bash에서는 깔려있지 않는 패키지를 사용하려하면 아래와 같이 해당 커맨드를 찾을 수 없고 무엇을 인스톨하라는 안내메세지가 뜬다 그러나 zsh에서는 아래와 같이 not found 만 뜰 뿐 어떤 패키지를 설치해야하는지 알려주지 않는다.(필자는 우분투에서 oh-my-zsh를 사용중) 아래와 같은 방법으로 패키지 추천 메세지를 얻을 수 있다command-not-found 설치sudo apt install command-not-foundsudo apt updatesudo apt upgrade설정~/.zshrc 에서 plugins 부분에 command-not-found를 추가해주면 된다.vi ~/.zshrc plugins에 command-not-found 추가 source ~/zshrc 로 변경사항 저장
Elastic Search 설치(도커)
Elastic Search를 로컬에 설치하지 않고 도커 이미지를 활용하여 사용하는 법 (8.7 버전) docker pull docker.elastic.co/elasticsearch/elasticsearch:8.7.0 docker run -d -m 4GB -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:8.7.0 docker exec -it '컨테이너ID' sh // 비밀번호 변경(6자리 이상) bin/elasticsearch-setup-passwords interactive exit docker restart '컨테이너ID' 8버전 부터는 Security가 defaul..
Elastic Search개요 및 간단한 사용법
Elastic Search 모든 데이터 색인을 통해 근 실시간으로 검색 및 분석이 가능한 검색 엔진(아파치 루신 기반) 텍스트 분석에 특화되어 있으며 웹 검색 엔진에서 주로 사용됨 데이터 수집, 보강, 저장, 분석, 시각화를 위한 도구 모음인 ELK 스택(Elasticsearch, Logstash, Kibana) 중 분석과 저장을 담당 ELK 사용하는 곳 어플리케이션 검색 로깅과 로그 분석 인프라 메트릭과 컨테이너 모니터링 어플리케이션 성능 모니터링 etc... 기존 RDBMS 기반의 어플리케이션은 텍스트 검색이 어려움(like 검색을 사용하나 이는 동의어나 유의어에 대해서는 지원하지 않음), 그러나 엘라스틱서치는 문자열에 대한 동의, 유의, 전문검색(Full Text Search) 등을 지원함 사용하는..
직렬화와 마셜링
직렬화(Serializable) 자바에서 사용되는 데이터들을 다른 자바 시스템에서도 사용할 수 있도록 Binary형식이나 byte stream형태로 바꾸는 작업 직렬화의 대상은 객체의 값이나 컨텐츠이다, 클래스의 정의는 포함되지 않는다(메서드 같은 정보) JVM위의 heap이나 stack메모리에 있는 데이터들을 직렬화를 통해 변환하고 DB같은 저장소에 저장하거나 다른 컴퓨터의 자바 시스템에서 가져가 데이터를 역직렬화를 통해 사용 왜 하는데? 예를 들어 내 컴퓨터에 0x00A라는 주소를 가진 A객체가 있을 때 이 주소값만을 그대로 다른 컴퓨터로 보낸다면 이는 동일한 A객체를 가르키지 않을 것이다. 때문에 실제로 주소값을 타고 넘어가 실제값을 byte stream으로 변환하여 넘기기 위해 사용한다. 자바를 ..
ChatGPT와 KAKAO karlo를 이용한 이미지생성
다른 사람들과 함께 음악을 만드는 플랫폼에 관한 프로젝트 진행 중 음악을 만드는 것에 그치지 않고 사용자를 위해 세상 단 하나뿐인 앨범커버를 만들주자라는 생각에서 Text To Image에 관한 내용을 다뤄보았다. 앨범커버 생성 아키텍처는 아래와 같다. 사용자가 자신이 만든 음악에 대한 제목, 내용, 장르를 입력하면 결과로 앨범커버가 생성된다. 먼저, KAKAO에서 제공하는 이미지생성 모델인 karlo를 이용하기 위해서는 아래와 같은 인풋이 필요하다. 이번 프로젝트에서는 사용자에게 한글로된 앨범 제목, 내용, 장르만을 인풋으로 받기 때문에 이를 이용해 앨범커버의 모양을 묘사하고 영어로 바꾸는 과정이 필요했고 이를 위해서 ChatGPT를 사용하기로했다. ChatGPT를 통한 문장(단어) 생성 아래와 같이 ..
JPA 복합키 삭제 에러, 이슈
좋아요 기능을 만들기 위해 아래와 같은 ERD를 구성하였고 FK 2개를 복합키로 가지는 좋아요 테이블을 생성하였다. 그 후 좋아요에 대한 삭제를 하려는데 아래와 같은 에러를 만났다. 이렇게 FK 두개를 복합키로 가지지 않고 일반적인 테이블인 경우 형타입이 안맞아서 발생하는 에러인데 나의 경우는 여기에 해당하지 않았다. InvalidDataAccessApiUsageException: Can not set com.ownsong.api.user.entity.User field com.ownsong.api.album.entity.LikesId.user to java.lang.Long; nested exception is java.lang.IllegalArgumentException: Can not set com..
스프링에서 S3로 파일업로드하기
스프링환경에서 S3에 파일을 업로드하기 위해서는 크게 credentials과 bucket 등의 정보를 담을 yml파일과 yml정보를 통해 환경변수 설정을 할 S3Config 마지막으로S이들을 이용해서 실제로 S3에 파일을 올릴 로직을 담을 S3Service가 필요하다. credentials정보가 외부에 노출되면 안되므로 application.yml에 아래와 같이 따로 파일을 빼준다 --- spring: profiles.include: - s3 이후 application.yml파일과 동일한 위치에 application-s3.yml을 생성해준다 필요한 내용들은 아래와 같고 발급받은 정보들을 입력해준다. cloud: aws: credentials: accessKey: 발급받은 accessKey secretKe..
Springboot 개발환경에서 노출되면 안되는 설정값, 환경변수 관리하기
application.properties ? application.yml ? 자바 프로젝트를 생성하면 리소스 아래에 application.~라는 파일을 볼 수 있다. 이는 자바 애플리케이션에서 사용하는 설정값, 환경변수들을 관리하는 파일로 서버의 포트번호, 연결할 DB에 관한 정보, AWS의 연결 정보 등을 관리할 수 있다. 보통 Git을 사용해 프로젝트를 관리하곤 하는데 Git에 DB연결 관련 정보같은 내용들이 그대로 올라간다면 보안이 박살날 수 밖에 없다. 따라서 노출되면 안되는 정보들은 Git에 올라가지 않게 따로 관리를 하는데 이에 대해 작성하려한다. application-?.yml 작성 먼저 따로 관리할 값들에 대한 파일을 생성한다. 예를 들어, DB에 관한 정보를 관리할 경우 applicati..