개-발/Java + Spring + Kotlin

Here - 익명 커뮤니티 플랫폼익명 커뮤니티 앱은 사용자들이 자유롭게 의견을 나눌 수 있는 공간을 제공하지만, 이러한 익명성이 오히려 악용될 가능성도 존재한다.잘못된 방향으로 사용될 경우 커뮤니티가 의도치 않게 부정적인 영향을 받을 수 있기 때문에, 이를 예방하고 건강한 커뮤니티 문화를 유지하기 위해 여러 기술적 장치를 도입을 했다.이메일 OAuth2 등 기본적인 계정 생성은 계정차단을 회피 할 수 있기 때문에 핸드폰 인증시스템을 도입하게 되었다.Simple & Easy Notification Service가격가격은 다른 플랫폼에 비해 비교적 싼 편이다. 월 50건을 제공하고 건당 9원의 가격이 과금된다. 준비사항발신 번호 ( 전화 , 개인 핸드폰 )듀얼넘버 X ( 안됌 ) 해봄...결국 인터넷 전화를..
problem요청처리가 완료된 후 ServletRequest 의 body 를 log 로 남기려고 했다.ServletRequest 는 inputStream 이므로 한번 밖에 읽을 수 없다.Controller 는 RequestBody 로 서블릿 request 를 읽는다. 그래서 인터셉터로 구현한 log인터셉터에서 body 가 빈값으로 들어오는 것이었다.검색해보니 ContentCachingRequestWrapper 로 request를 래핑 해주라는 말이 있었는데ContentCachingRequestWrapper(request)필터에서 래핑해줘도 스프링시큐리티에서Servlet3SecurityContextHolderAwareRequestWrapper 클래스로 래핑해서 컨트롤러에 전달하는 상황이 발생했다.solu..
https://soobysu.tistory.com/191 준비물websocket / Stomp( 채팅방 세션 감지 / 실시간 데이터 전송 )Redis ( 세션관리 / 메세지 Pub,Sub )설명사용자 A / BA 가 들어온다A가 메세지를 보낸다 ( 메세지는 안읽음 처리 )B가 채팅방에 입장한다 B가 채팅을 읽고 읽은 채팅메세지ID를 A에게 전달한다A는 B에게 받은 변경이된 채팅메세지ID들을 읽음으로 변환한다.B는 채팅방에 메세지를 보낸다.메세지를 보낼때 현재 채팅방의 세션을 확인하고 참가자 만큼 숫자를 내린다A는 updateReadMessageId 를 받아 현재 채팅방에 같은 Id를 가지고 있는 메세지들을 읽음 처리로 바꿔준다.B가 메세지를 채팅방에 보낸다ㄴ> 현재 채팅방의 세션에 2명이 접속중인것을 확..
캐시의 종류는 많지만 이 글에서는 Redis 를 사용하여 캐시를 적용하고 발견한 이슈들을 정리 한다.어느 기술이나 잘 사용하면 좋은 방안이 될 수 있지만 잘못 사용하면 독이 될 수 있다설정 @Bean fun cacheManager(redisConnectionFactory: RedisConnectionFactory): CacheManager { val defaultCacheConfig = RedisCacheConfiguration.defaultCacheConfig() .disableCachingNullValues() .entryTtl(Duration.ofHours(1L)) .serializeKeysWith(RedisSerializ..
problem채팅을 구현 하고 있는데 Websoket 을 테스트 할 곳이 없었다.웹소켓은 제약이 많아서 socketJS + stomp 를 같이 사용하는데 채팅 기능을 테스트 할 곳이 없어서간단히 html ,css,js 로 만들어서 테스트 해보았다.아래 주소와 응답 필드들을 수정해서 잘 사용 해보도록 하자.solution이 파일을 설명해 보자면 헤더에 들어갈 JWT 토큰을 넣으면서 연결을 시도 한다.입맛에 맞게 필드 수정 후 사용 한다.- html 세팅을 아예 모르는 사람들을 위한 설명 - 1. VScode 를 설치한다.2. 왼쪽 extentions 버튼을 찾아서 Live sever 를 검색해서 설치한다3. 하나의 디렉토리에 아래 세개의 파일을 만들어 넣어둔다 ( html 과 css 는 만질게 없다.)4...
problem배치의 결과에 따라(특정조건) 배치를 반복 종료 할 때가 있다.  특정 조건에 따라 재시도(Retry) / 건너뛰기(Skip) 할 수 있다.solutionRepeat복잡한 청크 완료 조건:  기본적인 청크 크기 외에 다른 조건에 따라 반복을 제어할 수 있다.커스텀 반복 로직이 필요한 경우: 특정 작업을 여러 번 반복해야 할 때, 반복 횟수나 종료 조건을 직접 정의할 수 있다. 에러 처리 및 재시도 로직: 작업 중 오류가 발생했을 때(특정 조건에 충족하지 못했을 때), 일정 횟수만큼 재시도하거나 특정 조건이 충족될 때까지 반복하도록 설정할 수 있다. 스프링 배치는 RepeatTemplate 기본으로 제공하여 기능을 구현 시킬 수 있다.RepeatTemplate 인터셉터처럼 step 전 후에 적..
regex 패키지 클래스자바에서 java.util.regex 패키지를 사용하여 더 효율적인 정규표현식을 사용 할 수 있다. 패키지 안의 클래스는 주로 Pattern 클래스와 Matcher 클래스가 사용된다.이들 정규식 클래스의 장점으로는 정규식을 Pattern 객체로 미리 컴파일 해둘수 있어서 처리 속도가 좀 더 빠르고, 매칭된 데이터를 좀더 상세히 다룰 수 있다.Pattern 클래스문자열을 정규표현식 패턴 객체로 변환해주는 역할을 한다.이때 문자열을 정규식 문법에 알맞게 구성해주어야 한다. 그렇지않으면 예외(Exception)이 발생하게 된다.Pattern 클래스는 일반 클래스처럼 공개된 생성자를 제공하지 않는다. 그래서 정규식 패턴 객체를 생성하려면 compile() 정적 메소드를 호출해야 한다.이렇..
정규표현식이란정규표현식(Regular Expression)이란 문자열 데이터 중에서 원하는 조건(패턴)과 일치하는 문자열 부분을 찾아내기 위해 사용하는 것으로, 미리 정의된 기호와 문자를 이용해서 작성한 문자열을 말한다.문자열 사용(생성)에 제약(검증)을 둘때, 특정 패턴을 통해 검증을 할 수 있다예) 전화번호, 주민등록번호, 이메일기호기호설명예제.- 임의의 문자 1개 ^- 문자의 시작^a : a로 시작하는 단어- [^] 괄호 안에 있다면 제외 [^a] : 첫번째 a를 제외 (단일 문자)- ^[] 괄호 밖에 있다면 시작 문자^[a] : 첫번째 문자가 a인 단어^a : apple[^a] : apple -> p p l e $- 특정 문자로 끝나는 단어 a$$a : banana[]- 괄호 안에 특정 문자 확..
imSoo
'개-발/Java + Spring + Kotlin' 카테고리의 글 목록