전체 글
-
@BeforeEach? @BeforeAll? @AfterEach? @AfterAll?카테고리 없음 2025. 1. 14. 20:27
테스트 코드의 실행 흐름을 제어하기 위해 사용되는 JUnit 5 애노테이션이다. Before 와 After 는 직역하면 알 수 있듯이테스트 전, 후에 실행된다는 의미이다. Each 와 All 도 마찬가지로Each 는 각각의 테스트 메서드가 실행되기 전 혹은 실행한 후에 실행된다는 의미이고,All 은 모든 테스트 메서드가 실행되기 전 혹은 실행한 후에 실행된다는 의미이다. 이 All 이 붙은 애노테이션들은static 메서드여야 하는 제약 사항이 있다.(클래스 로딩 시점에 All 애노테이션이 붙은 메서드들을 실행시키기 위함)
-
[Error] Decoder 의 ecode 메서드카테고리 없음 2024. 12. 20. 14:12
jjwt 가 버전업이 되면서 메서드의 형식이 많이 변경되었는지 deprecated 된 메서드가 많았다. 하나의 예로String secretKey = "abcd1234secretkey";Jwts.parser() .setSigningKey(secretKey) // deprecated setSigningKey(String) .parseClaimsJws(token); 이전엔 String data type의 비밀키를 setSigningKey 에 넣어 비밀키를 설정했었다.그러나 버전업을 하면서 Key secretKey = new SecretKeySpec(Base64.getDecoder().decode(strSecretKey), SignatureAlgorithm.H..
-
[회고록] 프로젝트 기획: 기술 선택(3; Redis 도입기)카테고리 없음 2024. 12. 2. 21:19
Refresh Token을 어떻게 저장할지 팀원들과 나눈 회의를 이어 써보겠다. 우선 Access Token 과 Refresh Token 이란 무엇인지 작성해보겠다. Access Token은 사원증 같은 거다.회사를 들어가기 위해선 사원증을 찍고 들어가야 한다.즉, (인증을 필요로 하는 api 에선) Access Token 이 없으면 접근할 수 없다.따라서 로그인을 한 후 발급받은 Access Token을 통해 인증이 필요한 API에 접근한다.이때, 이 Access Token은 stateless 하기 때문에, 토큰이 탈취되어도 서버에서는 어떠한 동작을 할 수 없다.서버는 토큰이 정상적인 서명과 구조만 잘 갖고 있다면 정상적인 요청으로 간주한다.이러한 단점을 보완하기 위해 Access Token의 유효기간..
-
[회고록] 프로젝트 기획: 기술 선택(2; 쿠키-세션-토큰)카테고리 없음 2024. 11. 18. 21:55
HTTP(HyperText Transfer Protocol).HTTP는 상태를 유지하지 않는 (stateless, 무상태) 프로토콜이다.또한, 서버의 요청과 응답이 모두 끝난 후에는 연결을 끊어버린다. 즉, 비연결성(Connectionless)을 가진 프로토콜이다. 이러한 HTTP 특성을 생각해보면,'어, 그럼 지금 내가 티스토리에 어떻게 로그인해있지?' 라는 의문이 들 것이다. HTTP 특성 그대로 생각하면,서버에 로그인 정보와 함께 요청한다 -> 서버는 정보를 통해 인증 후 응답한다. -> 연결 종료로그인을 유지할 수 없다.그냥 서버는 '어 그래 너야? 너 맞아~' 이러고 응답만 해주고 연결이 끊기는 거다. 이런 상태를 기억하지 못한다는 특성 때문에,쿠키, 세션, 토큰이 사용된다. 쿠키(Cooki..
-
[회고록] 프로젝트 기획: 기술 선택카테고리 없음 2024. 11. 18. 20:43
라이브 스트리밍 서비스를 넣으려고 한다.그러나 팀원 모두가 스트리밍 서비스에 문외한이라, 어떤 기술을 사용하는지 각자 알아오기로 했다. 그렇게 1. Amazon IVS(Interactive Video Service) 2. WebRTC 기반 P2P 스트리밍 3. Nginx + RTMP 모듈 기술로 간추려졌다. 1번은 AWS의 S3와 CloudFront를 사용해서 간편하게 구현할 수 있다.또한 AWS 인프라를 사용하기 때문에 대규모 스트리밍을 안정적으로 지원받을 수 있다.(느낌 상 그냥.. AWS에 있는 스트리밍 기술 가져다 쓰는 것 같았다) 2번은 브라우저 간의 P2P 연결을 통해 스트리밍되기 때문에 거의 실시간에 가까운 낮은 지연 시간을 보장한다.그러나 양날의 검.. 대규모로는 쓰기 어렵다. (만 명이..
-
[회고록] 시작. 프로젝트 기획카테고리 없음 2024. 11. 4. 14:00
두 달 전 쯤 프로젝트 주제를 대강 정해놓고, 이를 위한 스터디를 진행했다.그러다 스터디가 잘 진행되고 있고 슬슬 프로젝트 시작을 해야겠다는 생각이 들어, 11월 첫 날. 기획을 시작했다. 우리 프로젝트의 주제는 개발자 네트워킹 서비스를 만드는 것이다.당시 써놓았던 기능을 좀 더 세분화하는 것을 첫 번째 기획으로 잡았다.디지털 명함, 팔로우, 게시판, 온라인 컨퍼런스 등.. 주제와 걸맞는 기능들을 브레인 스토밍 방식으로 다양하게 뽑아내고 있었다. 그러다 문뜩, 여러 기능이 뒤섞인 프로젝트에 팀원이 목소리를 냈다.'우리의 프로젝트 의의가 뭐야?', '우리가 이 프로젝트 주제를 선정한 이유가 뭐야?'뭉뚱그려 우리 프로젝트의 의의를 말하자면, 개발자 간 활발한 커뮤니티 형성을 위함인데,이런 건 굳이 우리의 서..
-
[MySQL] docker 를 이용하여 MySQL 을 띄우는 험난한 과정카테고리 없음 2024. 9. 24. 15:11
# docker-compose.yaml 파일version: "3"services: db: image: mysql:8.0.38 restart: always command: - --lower_case_table_names=1 - --character-set-server=utf8mb4 - --collation-server=utf8mb4_unicode_ci container_name: mysql ports: - "3306:3306" environment: - MYSQL_DATABASE=mysqldb - MYSQL_ROOT_PASSWORD=password - TZ=Asia/Seoul volumes: - ..
-
[Java] 자바의 EOF(End Of File)카테고리 없음 2024. 9. 2. 21:00
알고리즘을 풀다보면가끔 입력값의 개수가 정해지지 않은 문제들이 있다.백준의 5639번 이나 10951번을 예로 들 수 있겠다. 해당 문제는 BufferedReader로 사용자의 입력을 계속 받다가,입력 마지막에 개행 문자를 입력하여 빈 문자열을 출력하고, (개행 문자를 입력한다고, null 을 반환하는 게 아니다.)그 이후 스트림은 끝에 도달하게 돼(더이상 읽을 데이터가 없다는 의미) null 을 반환한다. 자바 공식 문서를 보자.스트림의 끝에 도달하게 되면 null을 반환한다고 쓰여있다. 따라서 해당 문제는아래와 같은 코드로 입력을 처리할 수 있다.... while (true) { String str = br.readLine(); // 스트림의 끝에 도달하면 readLine은 nul..