서론 정규식은 패턴이 정해진 문자열을 손쉽게 처리할 수 있는 좋은 도구입니다. 파이썬에서는 re패키지를 통해 사용할 수 있습니다. 간단한 사용법을 소개합니다. 본론 사용방법 파이썬에서 re 패키지로 정규표현식을 사용하는 경우 패턴 문자열을 내부 형식으로 변환하는 과정이 존재합니다. 그래서 자주 사용해야 하는 패턴은 compile 메서드를 통해 내부 형식으로 만들어진 객체를 재사용하는 것이 효율적입니다. 괄호 대괄호 [ ] 대괄호는 문자 집합을 의미합니다. [0-9]는 0부터 9까지의 숫자 집합이라고 할 수 있습니다. 자주 사용하는 문자집합은 미리 정해진 기호를 통해 사용할 수 있습니다. 기호 대응 설명 \w [a-zA-Z0-9_] 모든 문자 \d [0-9] 숫자 \s [ \t\n\r\f\v] 여백 . [..
서론 리액트에서 StompJS 훅을 사용해 쉽게 웹소켓 연결 애플리케이션을 개발하는 방법을 소개합니다. 본론 준비물 react-stomp-hooks 의존성을 추가합니다. npm i react-stomp-hooks react-stomp-hooks 의 dependencies에 @stomp/stompjs 와 socketjs-client가 있기 때문에 별도로 설치할 필요 없습니다. 사용방법 사전설명 실시간 소통 환경 구축을 위해 웹 소켓을 사용하여 통신합니다. 유저들이 방을 만들면 랜덤 코드가 생성되고 이를 Path Parameter로 이용하여 해당 방에 접근하도록 하였습니다. StompSessionProvider StompSessionProvider는 하위 컴포넌트들에게 url(여기에서는 'ws://l..
서론 Ubuntu 20.04 버전에서 Nodejs 10.04 버전이 기본적으로 탑재되어 있습니다. 더 높은 버전을 사용하기 위한 방법을 소개합니다. 본론 아래 명령어를 통해 최신 버전의 node js를 설치할 수 있습니다. # As a user with sudo curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash - sudo apt-get install -y nodejs 특정 버전을 설치하는 방법 특정 버전의 node가 필요하다면 다음 명령어에서 버전(현재는 17.x)만 수정하면 됩니다. # As a user with sudo curl -fsSL https://deb.nodesource.com/setup_17.x | sudo -E bash ..
서론 Collection에서 제공하는 API를 이용해서 내용물의 순서를 랜덤으로 설정하는 방법을 소개합니다. 본론 Collections 클래스의 shuffle 메서드를 사용하여 Collection의 내용물의 순서를 랜덤으로 바꿔줍니다. 기존 데이터가 변경되는 것이기 때문에 기존 순서를 유지해야 한다면 복제해서 사용해야 합니다. List students = Arrays.asList("Foo", "Bar", "Baz", "Qux"); Collections.shuffle(students); 출처: https://www.baeldung.com/java-shuffle-collection 결론 Random 클래스를 이용해서 순서를 섞는 방법을 사용하려고 했는데, 이미 구현된 메서드가 있어서 정말 편하네요. 너무 좋..
서론 웹 소켓을 사용한 랜덤 자리배치 시스템을 만들고 있었는데, 방을 만들어서 제공하는 기능이 필요해졌습니다. 그래서 사용자가 방 별로 구독하는 방법을 찾던 중 다음과 같은 방법을 찾아 소개합니다. 본론 @DestinationVariable Annotation that indicates a method parameter should be bound to a template variable in a destination template string. Supported on message handling methods such as @MessageMapping. 출처: https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springfra..
서론 Spring boot에서 JPA를 추가하여 사용하려고 할 때, 테스트가 계속 실패했습니다. 원인을 찾을 수가 없어서 삽질하던 중 docker container로 DB가 올라오지 않는 것을 확인했습니다. 이 때 해결 방법을 소개합니다. 본론 원인 및 해결방법 기술 블로그에서 원인을 찾았습니다. 테스트 코드 실행시실행 시 docker compose는 기본적으로 실행되지 않지만 아래 설정으로 테스트 코드 실행 시 적용할 수 있다. spring.docker.compose.skip.in-tests=false 테스트용 DB 만들기 이번에는 테스트용으로 다른 db container를 만들고 사용해 보겠습니다. test용 compose 스크립트 파일 만들기 프로젝트의 루트 디렉토리에 원하는 이름의 파일을 만듭니다..
서론 Docker로 Django 서버를 배포할 경우에 CSRF Token을 Form 안에 잘 넣었음에도 403 Forbidden 에러가 발생합니다. 이런 경우에 해결방법을 소개합니다. 본론 해당 문제와 유사한 상황을 스택 오버 플로우에서 찾았습니다. CSRF_TRUSTED_ORIGINS Django 프로젝트의 settings에서 CSRF_TRUSTED_ORIGINS 항목을 추가하여 배포하는 서버의 Origin을 허용해 주어야 합니다. # settings.py CSRF_TRUSTED_ORIGINS=['https://*.YOUR_DOMAIN.COM'] 예를 들어 지금 배포하는 서버의 Origin이 http://xxx.xxx.xxx.xxx:8099 라면 CSRF_TRUSTED_ORIGINS를 아..
서론 클래스 기반 뷰에서 UserPassesTestMixin를 활용해 특정 조건일 때만 동작을 허용하도록 만드는 방법을 소개합니다. 본론 UserPassesTestMixIn 클래스 기반 뷰에서 클라이언트가 접근시에 사용자 정의 가능한 테스트를 추가할 수 있도록 해주는 MixIn입니다. 아래는 해당 MixIn의 코드입니다. class UserPassesTestMixin(AccessMixin): """ Deny a request with a permission error if the test_func() method returns False. """ def test_func(self): raise NotImplementedError( "{} is missing the implementation of the ..