영어 문자열 Tokenizing 개선하기: 대문자 분리로 검색 정확도 높이기
영어 tokenizing 영어 Tokenizing 요청이 들어왔다. 사실 엄청 큰건 아니고 우리 파트에서 정기적으로 올리는 글이 있는데 제목이 DevLetter 이다. 이때 대문자 기준으로 하나씩 띄워져서 검색을 하고 싶은데 실제 Indexing 을 devletter 로 들어가 있으니까 검색이 잘 되지 않았다. Regex 로 해결하기 물론 돌...
영어 tokenizing 영어 Tokenizing 요청이 들어왔다. 사실 엄청 큰건 아니고 우리 파트에서 정기적으로 올리는 글이 있는데 제목이 DevLetter 이다. 이때 대문자 기준으로 하나씩 띄워져서 검색을 하고 싶은데 실제 Indexing 을 devletter 로 들어가 있으니까 검색이 잘 되지 않았다. Regex 로 해결하기 물론 돌...
번역 API 측에서온 요청 (Thread 개수 제한) 번역 API 에서 요청사항이 들어왔다. 아쉽게도 자원문제 때문에 무한정 호출을 하지는 말고 병렬로 최대 5개의 Request 만 보내달라는 요청이었다. 그러니까 10명이 동시에 “안녕하세요” 를 영어로 번역해달라고 요청하면 5명 먼저 해주고 나머지 5명은 그 뒤에 순서대로 처리해 달라는 것이었다...
새롭게 load 되는 element 를 Mutation Observer로 번역 하기 번역 버튼을 만들고 나니 문제가있었다. 지금 개발중인 사이트는 pagination 을 1,2,3 숫자로 하는것이 아니라 스크롤이 일정 부분 내려가면 새롭게 request 를 보내고 불러오는 방식이다. 따라서 버튼을 누르고 나서 로드되는 translate-targe...
Query 사용시 변수는 binding 하자! DB에 내가 원하는 Query 를 날릴때 보통 나는 이렇게했었다! select * from question where id = "12345"; 이렇게 쿼리를 날려도 물론 아주 잘 동작 하긴 하지만 사실 이 방법보다 더 좋은 방법이 있다! 바로 변수부분을 binding 하는 것이다. Query 를 ...
페이지 번역 서비스를 만들자 Q&A 플랫폼의 글로벌화를 앞두고 기존에 한국인들만 사용하던 서비스를 번역하여 많은 사람들이 읽을 수 있도록 하는 작업이 꼭 필요해졌다! 나는 그냥 번역 API만 있으면 금방 해결이 될 줄 알았지 하지만 아니였어.. 사내에는 utrans 라고 번역 을 해주는 서비스가 있다. 처음에는 게시글의 적당한 위치에 tr...
Realtime monitoring에 강한 grafana 구축 사내에 Grafana 모니터링을 제공하는 서비스가 올라왔다! 사실 우리 Q&A 플랫폼을 모니터링 하는 grafana 가 하나 따로 있긴 했지만 우리의 workstation 에 올려져 있는 상태여서 얼른 조금 불안했었는데 이번 기회에 옮기면서 새롭게 정리를 해보려고 한다. spr...
HealthCheck 구축 원래 우리는 따로 linux workstation 에 띄워놓은 uptime kuma (https://github.com/louislam/uptime-kuma) 를 사용하여 우리 시스템의 health check 를 하고 있었다. 이 시스템도 좋았지만 사내 메신저로 알림을 주지 못하고 MMS 연동이 되어있지 않았기에 이번에 ...
Facade Pattern 이 뭘까? Facade 패턴은 사용자가 아주 간단한 인터페이스만로 사용해서 복잡한 동작을 사용하게 할때 유용한 패턴이다! 예를 들어 어떤 비행기가 있다고 했을때 사용자는 단순히 fly 과 같은 간단한 인터페이스를 실행하는것 만으로 비행기를 날릴수 있지만 사실 그 안에는 engine, door, wheel 과 같은 친구들을...
css, js 용량이 크다 물론 그 까닭은 코드가 불필요하게 길거나, 로직이 별로거나 할 수도 있지만 오늘은 그 자체의 용량에 집중을 해 보기로 했다! css, js 는 웹페이지가 로딩이 될때 그 파일이 있는 server 로 부터 요청을 해서 가져와서 사용하는 방식이다. 따라서 어쩔 수 없이 css, js자체의 용량에 따라 웹페이지가 로드되는 시간...
나의 욕심으로 한글 초성 검색 기능을 넣었다. 사실 노래방처럼 빠르게 검색해야하는 상황이 아니라면 초성으로 검색하는 일은 별로 없겠지만! 오로지 나의 욕심으로 한글 초성 검색 기능을 넣어 보았다. 이 기회로 어떻게 한글이 인코딩 되어있는지도 공부 할 겸 말이다! 초성 중성 종성으로 이루어진 한글 한글은 초성 중성 종성으로 이루어져있다. 각각 1개...
한글 검색이 잘 되지 않는다! Elastic Search 를 도입했더니 영어는 정말 검색을 잘해주지만 아쉽게도 한글은 검색이 잘 안된다. 그 이유는 바로 한글에는 조사가 너무나도 많기 때문이다! “I Like Kimbap” 이라는 영어문장과 “나는 김밥을 좋아한다” 라는 한글은 다르다. 영어는 딱딱 의미 별로 띄어쓰기가 되어있는 반면 한글을 그렇...
ElasticSearch Cluster 구성하기 검색 시스템 개선을 위해서 Elastic Search 를 구성해야하는 일이 생겼다. Elastic Search 를 구성하는걸 찾아보다보니 단일 노드로 구성하는 것이 아닌 여러개를 띄워서 구성을 하는 것이 안정적이라고 하여 2개의 cluster 를 구성하기로 했다. Elastic Search Clus...
Decorator Pattern 이 뭘까? Decorator 패턴이란 어떤 A 라는 클래스에 B 의 기능을 추가, 꾸며주고 싶을때 사용하는 패턴이다! 예를 들어 Phone 이라는 interface 가 있다고 해보자! 그리고 Galaxy24 class가 그친구를 implement 한다! public interface Phone { public v...
복주머니 이벤트를 열었다 설날을 맞이 하여 사이트에서 복주머니 이벤트를 열었다. 사이트 곳곳에 복주머니 이미지를 꽁꽁 숨겨두고 그 이미지를 누르면 복주머니가 하나씩 하나씩 쌓이는 이벤트이다! 실제로 데모로 내부적으로 진행해 보았을때도 사람들의 반응이 어마무시하게 좋았고 성공적인 이벤트가 될거 같았다! 처음 개발 계획은 다음과 같았다. <i...
큰덩어리를 쪼개다 XXXXUtils.java -> emailUtils.java, chatUtils.java, xxxxUtils,java! 코드를 개발하다보면 아 이 method 는 어디 들어가지 고민하다가 xxxxUtils.java(실제 이름이 xxxx는 아니다) 에 넣는 일이 많아졌다. 실제로 해당 util 이 view 쪽 까지 내려가서 동...