전체 글
![[Tomcat] context naming](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcQnnUM%2FbtrSf2lC7L7%2F7p3D3Sv8zYohqKAQIc8Na0%2Fimg.png)
[Tomcat] context naming
아파치 톰캣(Apache Tomcat)은 오랜 기간 널리 쓰인 오픈 소스 자바(Java) 서블릿 컨테이너입니다. 톰캣에서 autoDeploy 또는 개발자에 의해 Deploy가 수행될 때 Context 경로는 웹 응용 프로그램을 정의하는 파일(war)의 이름에서 파생됩니다. war 파일의 이름과 Context 이름, Context 경로, Context 버전은 밀접한 관계가 있습니다. 아래 표는 파일 명명 규칙의 몇가지 예시입니다. Context Path Context Version Context Name Base File Name Example File Names /foo None /foo foo foo.war /foo/bar None /foo/bar foo#bar foo#bar.war Empty Stri..
![[Elasticsearch] 전체 문서 조회 max_result_window 이슈 (Scroll API)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcmgaCA%2FbtrOQm11WgQ%2FwBDsdEXj51aoTlUjVR5qK0%2Fimg.png)
[Elasticsearch] 전체 문서 조회 max_result_window 이슈 (Scroll API)
Problem Elasticsearch에 색인되어 있는 문서(document)를 전체 조회해야 하는데, Elasticsearch에서는 데이터를 paging 하여 조회할 때 from과 size를 사용합니다. 그런데 Document의 숫자가 10,000번 째를 넘어가는 순간 데이터를 가져오지 못하고 아래와 같은 에러가 발생합니다. Result window is too large, from + size must be less than or equal to: [10000] but was [10010]. See the scroll api for a more efficient way to request large data sets. This limit can be set by changing the [index.m..
[CentOS] PostgreSQL 설치 및 설정
1. PostgreSQL repository 설치 $ sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm $ sudo yum update -y 2. PostgreSQL repository 활성화 확인 $ sudo yum repolist Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirror.kakao.com * epel: mirror-kr.misakamikoto.network * extras: mirror.kakao.com * updates..
애니메이션 이미지인지 아닌지 체크하는 방법(Check image animated or not in JAVA)
private boolean isAnimatedImage(String imageFilePath) throws IOException { File f = new File(imageFilePath); ImageInputStream iis = ImageIO.createImageInputStream(f); ImageReader is = ImageIO.getImageReadersBySuffix("GIF").next(); is.setInput(iis); int imageCnt = is.getNumImages(true); // imageCnt가 0보다 크다면 애니메이션 이미지 if(imageCnt > 0) return true; else return false; } 파일이 외부 이미지 링크(URL)라면 private ..
[BufferedImage] 이미지 이진화(Image Binarize)
private void binarize(BufferedImage image) { for (int i = 0; i 127 ? Color.white.getRGB() : Color.black.getRGB()); } private int gamma(int rgb) { return (red(rgb) + green(rgb) + blue(rgb)) / 3; } private int red(int rgb) { return (rgb >> 16) & 0x000000FF; } private int green(int rg..
[Tesseract] 이미지에서 텍스트 추출하기 (OCR)
OCR 이란? OCR(Optical Character Recognition)은 광학 문자 인식이라는 뜻으로, 텍스트 이미지를 기계가 읽을 수 있는 텍스트 포맷을 변환하는 과정입니다. 테서랙트(Tesseract) 란? 테서랙트(Tesseract)는 OCR 엔진 중 하나로 다양한 운영체제를 위한 광학 문자 인식(OCR) 엔진입니다. 이 소프트웨어는 Apache License, 버전 2.0에 따라 배포되는 무료 소프트웨어이며 Google에서 개발을 후원했습니다. Tesseract 공식 문서 Tesseract documentation Documentation tesseract-ocr.github.io 의존성 추가 net.sourceforge.tess4j tess4j 4.5.2 tessdata 다운로드(LSTM ..
[HttpClient] 마지막 Redirect URL 구하기
HttpClient 라이브러리를 이용해 REST API를 호출하거나, HTML 코드를 가져오기도 합니다. 그런데 요청 URL이 리다이렉트(Redirect)가 되어 URL이 바뀌기도 합니다. 이렇게 Redirect 되면서 주소가 바뀌는 URL의 마지막으로 Redirect되는 URL를 구하는 방법을 작성합니다. CloseableHttpClient httpclient = HttpClients.createDefault(); HttpClientContext context = HttpClientContext.create(); HttpGet httpget = new HttpGet(url); CloseableHttpResponse response = httpclient.execute(httpget, context); ..
![[PostgreSQL] GIN INDEX로 LIKE 검색 성능 개선](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbkbJBP%2FbtrKvQEZaxv%2FEc1CB5k6krqOVndd1OYwrk%2Fimg.png)
[PostgreSQL] GIN INDEX로 LIKE 검색 성능 개선
Problem 백만건이 넘는 서비스 테이블에 LIKE 연산자를 사용하여 검색하면, 너무나도 늦게 결과값이 나옵니다. 아무리 인내심이 많은 사용자라도 기다릴 수 없는 시간이었습니다. INDEX(인덱스)는 데이터 저장, 수정, 삭제에 대한 성능을 희생시켜 탐색에 대한 성능을 대폭 상승시키는 효과가 있습니다. LIKE 연산자를 사용하는 컬럼에 INDEX를 적용하면, 검색 속도가 빨라 질 것을 기대했지만 전혀 성능이 좋아지지 않았습니다. INDEX에 조사하던 중 아무 타입 지정 없이 INDEX를 적용하면 B-Tree 타입으로 색인을 하는 것을 알았습니다. B-Tree 타입은 인덱스를 적용하는 컬럼의 값을 변형하지 않고 원래의 값을 이용합니다. 따라서 = 연산과 같은 값 자체에 대한 탐색 (single value..