반응형

⌨Programming

    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으로 변환하여 넘기기 위해 사용한다. 자바를 ..

    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..

    세그멘테이션모델 인퍼런스결과를 원본과 합치기

    컴퓨터비전 중 Segmentation태스크와 관련한 프로젝트를 진행하다 마주친 문제 중 하나를 작성해보려고 한다. 미리 말하자면 세그멘테이션 모델의 인퍼런스 결과인 마스크 사진과 원본을 합성하는 내용을 다룬다. 케글이나 데이콘같은 Competition이야 이미지 분류의 경우 f1 score, 세그멘테이션 같은 경우 mIoU같은 metric을 평가지표로 모델의 성능을 평가하는데 초점을 두지만 실제로 AI를 활용한 서비스에서는 모델 인퍼런스의 결과를 활용하는 것도 중요하다. 이미지분류같은 경우 다른 테스크에 비해 간단해 초보자도 조금만 찾아보면 쉽게 실제 서비스에 적용할 수 있으나 Object Detection, Segmentation같은 경우 초보자가 인퍼런스 결과를 활용하기가 쉽지 않다. 글쓴이의 경우 ..

    파이썬 환경변수 설정으로 보안관리하기

    프로그래밍을 할 때 DB정보, AWS정보, 계정정보 등과 관련된 사항은 코드에 노출되거나 github같은 곳에 올라가면 보안적 측면에서 위험하다, 환경변수 설정으로 해당 내용들을 코드에 노출되지 않게 설정해보자 이를 python-dotenv라이브러리를 사용함으로써 관리할 수 있다 설치 pip install python-dotenv 사용법 실행할 프로젝트 디렉토리 내에 .env 파일을 생성한다 환경변수로 설정할 키워드를 작성한다 ex) aws_secret_key=엑세스키지롱 문자열의 경우에도 ""가 필요하지 않다 불러올 .py파일에서 from dotenv import load_dotenv 로 라이브러리를 불러온 후 아래와같이 os.getenv("불러올 환경변수 이름") 으로 불러온다 이렇게 열심히 중요정보..