게시판에 금칙어 처리를 하려고한다. 

어떤 방식이 가장 효율적인가 고민하다가 

알고리즘은 아호코라식용으로 골랐고 싱글톤으로 bean 생성 후 사용하는 방법으로 구성했다. 

10만개의 금칙어를 적용해본 결과 나름 빠른 퍼포먼스가 나오고있다. 

테스트를 위해 임의로 생성한 금칙어라 패턴이 비슷해 빠른 속도가 나왔을 수 있어 

지켜보다 나중에 개선하는 방향으로 가야겠다. 

 

WebConfig implements WebMvcConfigurer 

@Bean
public Badword badword() {
	return new Badword();
}

 

package com.me.genie.util;

import java.io.File;
import java.io.FileNotFoundException;
import java.util.LinkedHashSet;
import java.util.Scanner;

import org.ahocorasick.trie.Trie;


public class Badword {
	public static LinkedHashSet<String> records;
	public static Trie badwordsTrie; //아호코라식용

	public Badword()  { 
		records = new LinkedHashSet<>();
		System.out.println("=================== 실행됩니다.");
		
		try (Scanner scanner = new Scanner(new File("C:\\Users\\user\\Desktop\\badword.csv"))) {
		    while (scanner.hasNextLine()) {
		    	String a = scanner.nextLine();
		        records.add(a);
		        System.out.println(a);
		    }
		    badwordsTrie = Trie.builder().ignoreCase().ignoreOverlaps().addKeywords(records).build(); //아호코라식용 초기화

		    
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	

}

 

 

Controller or Service 

if(Badword.badwordsTrie.containsMatch("홍길동1")) { 
	System.out.println("오키오키");
}

 

 

 

* 이 포스팅은 git 설치가 되어있다는 전제하에 진행된다. *

 

gitLab에 접속해서 프로젝트 생성까지 마쳤다면 보이는 화면이다. 

 

화면을 보면 어떤 작업을 해야하는지 친절하게 나와있다. 

하지만 처음 설정하는 입장에선 뭐가 뭔지 잘 모르겠는 경우가 있어 기록해둔다.

명령어를 실행하기 앞서 실행 위치가 어디여야하는지부터 보자~ 

 

1. 명령어 실행 위치! 

본인이 설치하고자 하는 디렉토리로 이동해 있는 경우여야한다

예를 들어 내 프로젝트가 /home/geine/workspace/myproject 에 있다면 

해당 경로로 이동해준다. 

cd /home/geine/workspace/myproject 

 

2. 하단의 0번 상자의 명령어를 실행해준다.

등록된 이름과 이메일은 아래 이미지를 참고해서 확인할 수 있다.  

git config --global user.name "내이름"
git config --global user.email "내이메일"

 

3. 빨간 동그라미 1, 2, 3 중 나의 상황을 선택한다. 

- ① : 새로운 폴더에 git 설정을 시작하려는 경우 

- ② : 기존 프로젝트를 git에 올리고 싶은 경우 

- ③ : 이미 git 으로 관리되고 있는 프로젝트를 새로운 git에 올리고 싶은 경우 

 

4. 상황에 맞는 쿼리를 실행한다. 

회색 상자 안 적혀있는 순서대로 실행해준다.

* 아래와 같은 SSH-KEY 이슈가 있을 수 있는데 

Permission denied (publickey).

fatal: Could not read from remote repository.



Please make sure you have the correct access rights

and the repository exists


 

이걸 피하고 싶다면 명령어를 실행할때 입력하는 git@1111.222.333 으로 시작하는 부분에 ip 대신 복사한 URL로 입력해준다. 

 예) git remote add origin https://111.222.333.444:8001/gitlab/test/test.git

URL은 프로젝트 상단에 위치한 clone 클릭 후 https 부분을 복사해서 실행한다. 

 

 

아차차.. !!! 

git 터미널 접속에 어려움을 갖는 분들이 있는데 

그럴땐 윈도우 검색기에 "git" 을 입력해보면 나오니 필요한 걸 클릭해서 사용하면 된다. 

 

이상 끝!! 

 

외부 모듈을 적용하는 작업을 하던 중 통신값에 한글깨짐이 발생했다 !! 

내 프로젝트는 UTF-8이고 연결하는 모듈의 인코딩은 EUC-KR로 설정되어있었다.. ; 

어노테이션으로 가능한지 보려고 Controller 에서 인코딩을 설정해 실행해봤다.

@PostMapping(value="/test/result", produces="text/plain;charset=euc-kr")

이렇게 해주니 postman을 이용한 테스트에선 한글이 잘 들어오는데

API와 연동하는 부분에선 계속해서 한글이 깨져 들어온다.. ㅠ.ㅠ 

 

결국 ~ 인코딩 필터를 설정하기로 했다!

나의 프로젝트는 UTF-8로 설정되어 있기에 전부 바꾸는건 리스크가 있어 

특정 URL만 EUC-KR로 변경하는 필터를 달았다~ 

 

import java.io.IOException;

import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.util.AntPathMatcher;
import org.springframework.web.filter.CharacterEncodingFilter;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MyEncodingFilter extends CharacterEncodingFilter {
	@Override
	protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
			throws ServletException, IOException {
		AntPathMatcher matcher = new AntPathMatcher();
		String reqUri = request.getRequestURI();
		
		if (matcher.match("/test/**", reqUri)) {
			request.setCharacterEncoding("euc-kr");
			
			filterChain.doFilter(request, response);
		} else {
			super.doFilterInternal(request, response, filterChain);
		}
	}
}

 

설정하고 다시 시도~ 

 

DB에 깨져서 들어오던 한글이 이제 잘 들어온다 !! ㅎㅎ 

개발하다 보면 공용 계정을 사용하는 일이 많다. 

다른 사용자가 앞서 틀린 이력이 있는지

로그인을 하려고하는데 한번 틀렸더니 계정이 잠겨버렸다 !!!;;  

 

이럴 땐 당황하지 말고 아래 명령어를 실행해주자~ 

계정 패스워드 실패 횟수 확인
sudo pam_tally2 --user 계정명



계정 패스워드 실패횟수 초기화
sudo pam_tally2 --user 계정명 --reset

 

다시 로그인을 시도하면 잘 된다~~ 

 

전체 계정의 실패횟수를 보려면~ 

전체 계정 패스워드 실패 횟수 확인
pam_tally2

 

 

 

 

STS를 이용해 GitLab를 사용중 언젠가 부터 갑자기? 

compare 로 볼때마다 white space 가 잡혀 거슬리기 시작했다. 

git 설정을 해봐도? 계속해서 나왔다.;; 

( 설정이 잘 된건진 사실 모르겠다 ..^^;) 

git config --global alias.igWhiteSpace 'diff --ignore-space-change'
--ignore-space-change can be abbreviated to -w
git igWhiteSpace

 

내가 찾은 해결방안 

Sts 상단 Window - Preferences - General - Compare/Patch 

빨간 상자 체크 후 apply ~~!! 

 

 

드뎌 사라졌다! ㅎㅎ 

 

 

 

+ Recent posts