최근 회사에서 Solr에 다양한 문제들이 있어 ElasticSearch로 전환하게되었다. 기존 문제점 1. 40대의 서버로 인해 비용이 비싸다. 2. 초기에 세팅을 잘못해 제어가 불가능한 부분들이 있었다. - 배치가 돌아 데이터가 수정이 될때 풀색인을 진행해 1시간 가량 소요된다. 3. 웹, 앱, BackOffice 등 다양한 곳에서 동일한 부분을 각각 다르게 Solr, DB를 호출하고 있어 하나로 통합하는 작업 필요 6~8개 가량의 작업을 하였는데 가장 기억에 남은 부분을 기록하려고 한다. 1. 검색(자동완성) 기존에 Solr를 사용하고 있어서 Elastic과 Redis를 고민 중 트래픽도 많이 줄고, 키워드도 그렇게 많지 않아(약 3~5만개) Redis로 하기로 하고 개발을 시작하였다. (Elasti..
where 1=1 쓰는 이유 알아보기 Where 1=1 이란? 이 구문은 기본적으로 아무런 조건 없이 모든 레코드를 선택하는 것과 같은 결과를 반환하지만, 다른 조건절을 추가하기 용이하도록 구문을 사용합니다. 즉, "WHERE 1=1"은 레코드를 선택하는 데에는 영향을 미치지 않지만, 이후 추가되는 조건절에서 AND나 OR 조건을 쉽게 추가할 수 있도록 합니다. 예를 들어, "WHERE 1=1 AND name='John'"과 같은 쿼리에서 "1=1"은 아무런 영향을 미치지 않지만, "name='John'" 조건이 추가되면서 "WHERE name='John'"으로 변경됩니다. "WHERE 1=1"은 일반적으로 동적 쿼리를 작성할 때 유용하게 사용됩니다. 동적 쿼리에서는 다양한 조건절이 추가될 수 있으며, ..
[Linux] 리눅스 파일 찾기(find 명령어) 알아보기 리눅스에서 find 명령어는 특정 경로에서 파일이나 디렉토리를 검색하는데 사용됩니다. find 명령어는 다양한 옵션을 제공하여 사용자의 요구에 따라 검색 결과를 필터링하거나, 검색된 파일들에 대해 추가적인 작업을 수행할 수 있습니다. 이번에는 find 명령어의 사용법에 대해 자세히 알아보겠습니다. 1. 리눅스 find 명령어의 기본 사용법 find 명령어의 기본적인 사용법은 다음과 같습니다. $ find [경로] [표현식] 위 명령어는 [경로]에서 [표현식]과 일치하는 파일이나 디렉토리를 검색합니다. 2. 리눅스 find 명령어의 옵션 find 명령어에는 다양한 옵션이 있습니다. 대표적인 옵션들은 다음과 같습니다. 1. 타입으로 찾기 (-type..
리눅스 문자열 검색 3가지 방법 리눅스에서 문자열 검색을 하는 방법에는 여러 가지가 있습니다. 가장 대표적인 방법으로는 grep 명령어를 사용하는 것이 있습니다. 1. grep 명령어 사용하기 grep은 리눅스에서 가장 대표적인 문자열 검색 도구 중 하나입니다. grep을 사용하여 파일에서 문자열을 검색하는 방법은 다음과 같습니다. grep "검색어" 파일이름 위와 같이 입력하여 검색어를 포함한 파일 이름을 찾을 수 있습니다. 2. find 명령어 사용하기 find는 파일 및 디렉토리 검색 도구로, 파일 이름뿐만 아니라 파일 내용에서도 검색할 수 있습니다. find를 사용하여 파일 내용에서 문자열을 검색하려면 다음과 같이 입력합니다. find /경로 -type f -exec grep "검색어" {} \;..
Github Action Slack 연동 Notification (깃허브 액션 슬랙) 알아보기 1. https://api.slack.com/apps에 접속하세요. 앱(App)을 생성하기 위해 "Create New App" → "From Scratch"를 선택하세요. - App Name에는 사용할 이름을 입력하세요. - "Pick a workspace to develop your app in"에서는 알림을 받을 Slack Workspace를 선택하세요. 2. InComing Webhooks를 활성화하세요. "Add New Webhook to Workspace"를 선택해 메시지를 받을 채널을 선택하세요. 3. Webhook URL을 복사하여 Github repository 세팅에 Secrets로 등록 4. ..
[AWS] Permission denied (publickey,gssapi-keyex,gssapi-with-mic) 에러 해결방법 git-bash를 통해 ec2 서버에 접속 하려고 하는데 이와같은 에러가 발생했다. 1. vi 편집 명령어를 통해 인스턴스 키페어.pem 편집 상태로 들어가서 2. ec2 pem key에 있는 private키를 복사해 붙여 넣은다음 :wq 명령어로 저장후 종료 하고 3. chmod로 권한을 부여하고 4. ssh -i 명령어로 접속 테스트를 재시도 해본다.
스파르타 코딩클럽 (항해99) 비추 이유 알아보기 스파르타코딩클럽의 경우, 일부 학생들은 과제의 난이도가 높아서 수강생들이 따라가기 어렵다는 평가를 하고 있으며, 예제와 실제 과제가 다르거나, 과제의 난이도와 수업에서 배우는 내용의 불일치 등이 불만족 요인으로 언급되고 있습니다. 또한, 학원 내부의 교육환경이나 컴퓨터 인프라 등이 미흡한 경우도 있어 수강생들이 불편함을 겪는 경우가 있습니다. 학생들이 비추 (불만족을 제기하는) 이유 1. 과제 난이도 부담 스파르타코딩클럽의 과제는 난이도가 높아서 수강생들이 쉽게 이해하고 따라가기 어렵다는 평가가 많습니다. 2. 교육 내용의 불일치 수업에서 배우는 내용과 과제의 난이도가 상이하거나, 예제와 실제 과제가 다르다는 의견이 있습니다. 이로 인해 학생들이 교육을 ..
[Spring] Jasypt로 설정 암호화 하는 방법 알아보기 Spring 프레임워크에서 Jasypt를 이용하여 설정 파일의 암호화를 할 수 있습니다. 이를 통해 암호화된 설정 파일을 사용하여 보안성을 높일 수 있습니다. 이번 글에서는 Jasypt를 이용하여 설정 파일을 암호화하는 방법에 대해 상세하게 설명하겠습니다. Jasypt란? Jasypt는 Java 암호화 라이브러리입니다. 암호화된 데이터를 안전하게 보호하고 관리할 수 있는 다양한 기능을 제공합니다. Spring Boot에서는 Jasypt를 이용하여 설정 파일의 암호화를 지원하고 있습니다. Jasypt를 사용한 설정 파일 암호화 방법 1. Jasypt 의존성 추가 먼저, pom.xml 파일에 Jasypt 의존성을 추가해야 합니다. com.gith..
List, Set, Queue => Collection => Iterable 순서로 implements 하고있다. Iterable 인터페이스 안에는 iterator 메소드가 추상메소드로 선언되어 있으며, Collection 인터페이스 계층구조에서 List, Set, Queue를 구현하는 클래스는 다 iterator 메소드를 가지고 있다. Iterable의 역할은 iterator() 메소드를 하위 클래스에서 무조건 구현하게 하기 위함이다. 1. Iterator란 자바 컬렉션 프레임워크는 컬렉션에 저장된 요소를 읽어오는 방법으로 Iterator 인터페이스 표준화하고 있다. Iterator 인터페이스의 내부는 위와 같이 구현되어있으며 hasNext(), next(), remove() 메소드를 사용할 수 있다...
Arrays.asList vs List.of()의 차이 알아보기 1. Array.asList String[] array = {"apple", "banana", "orange"}; List list = Arrays.asList(array); 이 경우, Arrays.asList()는 배열의 각 요소를 List의 요소로 추가합니다. 이 메서드는 배열과 List 간의 양방향 연결(뷰)을 생성하며, 배열이나 List 중 어느 한 쪽이 변경되면 다른 쪽에도 반영됩니다. Arrays.asList()로 생성된 List는 가변 리스트이므로 크기를 변경할 수있다. 2. List.of() List list = List.of("apple", "banana", "orange"); List.of() 메서드는 Java 9에서 추가..