Google 태그 관리자 아이콘
반응형

새로운 로직접근 4

.findout(java와 mysql에서 emoji 길이 통일시키기)

고민 서버(spring, java)와 mysql에서 emoji길이 인식의 차이가 있다. 같은 이모지인데 왜 길이 값을 다르게 인식하는지 이해가 안되었다. 또한 글자 길이 제한로직을 처리하기위해서는 이들의 일관된 기준이 필요하였다. 결론 db의 collataion을 utf8mb4임을 확인하고 서버(java)에서 String을 아래처럼 분해하여 같은 글자길이로 인식하도록 설정해서 해결하였다. 접근방법 mysql 확인 mysql에서는 emoji가 제대로 잘 보였고 어떻게 그런지 확인해보았다. 흔히 글자수를 제한한 필드를 선언할때 varchar(20)과 같이 선언하고 있는데 여기서 varchar의 20이 어떤 collataion으로 선언되어있는지가 중요하다. 다음 명령어로 확인이 가능하였다. SHOW VARIA..

.findout(Redis를 이용해 CyclicBarrier만들어보기)

고민 물리적/논리적으로 분리되어 있는 서버에서 특정 request가 몇번 들어올걸 체크하고 그 이후에 로직이 실행되었으면 좋겠다고 생각했다. 프로세스를 진행을 특정 request수가 총족될때까지 대기하는 시스템을 만들고 싶었다. 처음에는 이런건 메세징시스템에서 가능할거라 생각했지만 잘 아이디어가 안떠올랐고 지식이 없었다. 그래서 익숙한 redis를 사용해보기로 했다. 결론 자바에서는 스레드를 제어하는 방식이 여러개 있는데(CountDownLatch, CyclicBarrier, Phaser 등) 여기서 아이디어를 얻어서 Redis로 구현을 성공하였다. CyclicBarrier가 각 스레드에서 대기했다가 특정시점에 다시 시작되도록 하는 로직이어서 그렇게 구현했다. 접근방법 기본적으로 대기할 request 숫..

.findout(RedisTemplate에서 prefix key만들기)

고민 이미 RedisTemplate를 많이 쓰고 있는 와중에 특정 spring profile에서만 prefix를 붙이는 니즈가 생겼다. cacheManager에서는 prefix를 지원하지만 cacheManager를 사용하고 있는 상황도 아니었고 모든걸 찾아 바꾸기에는 다른작업자분들의 내용이 있어 쉽지 않았다. 결론 정식으로 지원되는 메소드는 찾을 수 없었다. redisTemplate의 keySerializer 메소드로 해결할 수 있엇다. 접근방법 RedisConfig에서 RedisTemplate를 정의할때, setKeySerializer를 커스텀하게 만들어준다. @Configuration public class RedisConfig { @Autowired private PrefixedStringKeySe..

.findout(react에서 spring으로 배열 파라미터 넘기기)

고민 react에서 배열로 사용하고 있는 파라미터를 그대로 넘기니 spring controller에서 받지 못하는 이슈가 있었다. 갑자기 파라미터이슈인데 이걸로 cors이슈 에러로 나기도 해서 혼란스러웠다.(분명히 모든걸 허용한 상태였기에 말이다.) 결론 react내에서 배열 파라미터를 string으로 변환해서 해결하였다. 접근방법 filterList를 그대로 넘기면 filterList[]와 같이 인식되어 내려가기때문에 ,가 포함된 string으로 변환해서 내려주면 편하게 해결할 수 있다. 아래처럼 filterList.join(",")로 넘겨주면된다. class TestComponent extends Component { constructor(props) { super(props); this.state ..

반응형