전체 글 61

[Kotlin] Spring boot -> Kotlin 마이그레이션 해보기(1)

이번 블로그 포스팅에서는 기존 SpringBoot & Java로 구성되어있던 저의 졸업작품을 SpringBoot & kotlin으로 마이그레이션 하는 것을 포스팅 하겠습니다. 아래 코드는 저의 기존 프로젝트의 build.gradle코드입니다buildscript { ext { queryDslVersion = "5.0.0" }}plugins { id 'java' id 'org.springframework.boot' version '2.7.13' id 'io.spring.dependency-management' version '1.1.4' id "com.ewerk.gradle.plugins.querydsl" version "1.0.10" id 'jacoco' //id 'checkstyle'}group = '..

Kotlin 2024.06.24

[Trouble Shooting] Refresh Token 구현

이번 포스팅에서는 디스턴스 로그인 구현 중 사용자의 불편함을 덜기 위해 Refresh Token을 구현하면서 겪었던 문제에 대해 이야기를 해보겠습니다. 저는 다른 프로젝트에서는 JWT의 Access Token만을 사용해서 로그인 기능을 구현하였습니다.물론 토큰의 만료시간은 하루(24시간)으로 두고  하였습니다. 물론 그 전의 프로젝트의 실제 유저 유입이 많이 없어서 이런 부분을 크게 신경쓰지 안하고 안일하게 생각을 했었습니다..하지만 이번 디스턴스 프로젝트는 유저 유입이 많을거라고 생각하기도 했고, Access Token의 유효기간을 너무 오래잡으면 좋지 않다는 것을 알게 되었습니다.제가 생각한 단점은Token이 탈취당하면 막을 방법이 없다.그럼 유효기간을 짧게 잡아서 Token을 자주 변경한다.그럼 사..

Project/Distance 2024.06.22

[Project] - Distance

Team Distance💕 & 9oormthin-univ 와 함께한 프로젝트를 소개합니다..!이번 '디스턴스' 라는 프로젝트는 대학생을 대상으로한 1:1 랜덤채팅 서비스입니다🎉해커톤에서 인연이 닿아 지금까지 쭉 개발을 하며 순천향대학교를 대상으로 실제 서비스까지 배포를 진행하였어요!!! 디스턴스는 '축제기간' 이라는 한정된 기간동안에만 운영을 함으로써 사용자들의 참여를 더욱 더 이끄는 서비스예요..!!이제 서비스에 대한 소개는 여기까지하고, 이제부터 서비스에 대해 설명을 해볼게요😊   디스턴스 개요주요 기능• STOMP를 활용한 1:1 실시간 채팅• 대학 메일 혹은 학생증을 통한 대학생 인증• 거리 기반 추천 기능• 대학 축제 정보 확인개발 기간• 2024.03 ~ 2024.05SkillsJAVA1..

Project 2024.05.12

[Project] - 가자지구

저의 두번째 프로젝트는 처음으로 팀원들과 함께 협업을 진행한 프로젝트이며, 단순한 재미를 위해 시작한 것이 아닌 누군가에게 도움을 주고 싶은 마음에 진행한 프로젝트입니다,,,!! 가자지구 프로젝트는 끝 없는 이스라엘과 팔레스타인의 전쟁에서 피해를 입은 가자지구 아이들에게 응원메시지와 후원금을 보내 멀리서나마 응원할 수 있게 도와줄 수 있도록 구현한 서비스입니다. 가자지구 개요 주요 기능 • JWT를 활용한 관리자 인증, 인가 구현 • 메시지 작성 및 조회 • 후원금 관리 • 욕설 필터링 • IP를 활용한 좋아요, 신고하기 제어 개발 기간 • 2023.10 ~ 진행 중 참여 인원 • 백엔드(1명), 프론트엔드(2명), 기획자(1명), 디자이너(1명), 마케터(1명) Skills JAVA, Spring Bo..

Project 2024.04.05

[Project] - 카페 체크인

저의 첫 프로젝트이자 남들이 볼 땐 쉬워보여도 저에겐 꽤나 고난이었던 프로젝트, 카페 체크인을 소개합니다....! 우선 "카페 체크인" 이라는 프로젝트는 서울에 존재하는 수 많은 카페 중 제가 원하는 카페를 정하려면 한 세월이 걸리는 불편함을 느꼈고 직접 한번 사이트를 만들자 라는 생각에 만들었고 사용자들이 원하는 분위기의 카페를 한눈에 쉽고 빠르게 확인할 수 있는 서비스입니다 ㅎㅎ 카페 체크인 개요 주요 기능 • 자유 게시판 글 작성 및 좋아요 기능 • 카페 리뷰 및 좋아요 기능 • 댓글 기능 • 관리자를 통한 카페 등록 및 게시글 관리 개발 기간 • 2023.07 ~ 2023.10 (3개월) 참여 인원 • 백엔드(1명) Skills JAVA, Spring Boot, JPA, SMTP, Mysql 담당..

Project 2024.04.05

[JAVA] 동시성 & Thread

프로젝트를 진행 중 좋아요를 누르는 API가 있는데 문득 동시에 여러사람이 동시에 하나의 게시글에 좋아료를 눌렀을 때 어떻게 될까?라는 의문을 가지게 되었다.. 현재 코드에서는 만약 2명의 유저가 하나의 게시글에 좋아요를 동시에 눌렀을 때 좋아요 갯수가 하나만 올라간다...! 😪 물론 좋아요갯수가 중요도가 높은 API는 아니긴 하지만 동시성에 관심을 갖고 한번 해결해보고 싶었다. 우선 동시성을 하기 전에 Thread개념에 대해 알아야한다. https://wnstjr120422.tistory.com/entry/JAVA-Thread-Runnable-Multi-Thread%EB%9E%80 [JAVA] Thread & Runnable & Multi Thread란? Thread(스레드)란? 프로세스 내에서 실행되..

JAVA 2024.03.03

[HTTP] Stateful, Stateless, Connectionless

Stateful(상태유지) 상태유지 상태유지 - 만약 중간에 점원이 바뀌면? Stateless(무상태 프로토콜) 서버가 클라이언트의 상태를 보존하지 않음 장점 ⇒ 서버 확장성이 높음 단점 ⇒ 클라이언트가 추가적인 데이터를 전송 무상태 유지 무상태 유지 - 만약 점원이 중간에 바뀌면? 더보기 📌 상태유지 ⇒ 중간에 서버가 변경이 되어선 안된다.(항상 같은 서버 유지) 만약 중간에 서버가 고장나면 클라이언트는 처음부터 다시 데이터를 전송해야함 무상태유지 ⇒ 아무 서버나 호출해도 가능 중간에 서버가 고장나면 다른 서버를 이용하면 된다. 로그인 방식에서는 무조건 Stateful방식을 사용해야하나? 기존에 사용하던 세션방식으로 로그인 하는 방식은 Stateful방식을 이용해야한다. 왜냐하면 서버가 바뀌면 사용자는..

HTTP 2024.01.14

[HTTP] HTTP란?

HTTP란? 하이퍼 텍스트를 주고 받기 위한 규칙 HTTP 특징 클라이언트 서버 구조 클라이언트의 요청이 있을 때만 서버에서 요청이 따른 응답을 반환 클라이언트에서 서버에 요청을 하는 단방향 통신, 서버가 먼저 요청을 할 수 없음 단방향 통신의 단점 → Chat gpt처럼 서버가 먼저 클라이언트에게 답을 할 순 없다 무상태(stateless) 프로토콜, 비연결성 서버가 클라이언트의 연결, 상태정보를 보존하지 않음 ⇒ Stateless 클라이언트가 서버에 요청을 하고 응답을 받으면 바로 TCP/IP연결을 끊어 연결을 유지하지 않음 ⇒ 비연결성 HTTP메시지 단순함, 확장 가능

HTTP 2024.01.02

[HTTP] URI와 웹 브라우저 요청 흐름

URL(Uniform Resource Locater)이란? 웹 상에서 특정한 자원에 대한 주소 URL 구조 Scheme 브라우저가 자원을 요청하기 위해 사용해야 하는 Protocol을 지정 👉🏼 http(s):// → Scheme userinfo&Domain name userinfo는 사용자의 정보를 포함하는데 거의 사용X Domain Name은 요청이 전달되는 web server(DNS도 가능)를 가리키며 IP address로도 표현 가능 👉🏼 http(s)://www.google.com → Domain Name Port 접속포트 일반적인 웹사이트에서는 제외하지만, 특정 서버에 접근할 때는 사용 👉🏼 http(s)://www.google.com:8080 → Port Path 경로를 표현 예전에는 물리적..

HTTP 2023.12.30

[HTTP] 인터넷 네트워크

네트워크란? 노드들이 데이터를 공유할 수 있게 하는 디지털 전기 통신망의 하나 → 분산되어 있는 컴퓨터를 통신망으로 연결하는 것 노드란? 네트워크에 속한 컴퓨터 또는 통신 장비를 뜻하는 말 IP통신 클라이언트가 Socker(파일)을 전송 → 인터넷에 있는 수많은 노드를 통해 → 서버로 전송 IP(인터넷 프로토콜)역할 지정한 IP주소에 데이터 전달 패킷이라는 통신 단위로 데이터 전달 위의 사진을 보면 클라이언트에게도 IP주소가 있고, 데이터를 받는 서버에도 IP주소가 있다. 즉, 어떠한 데이터를 보낼 때 최소한의 규칙이 필요한데 이를 패킷이라는 규칙으로 전송함 IP패킷에는 클라이언트의 IP주소, 서버의 IP주소등을 담고 있음 → 최소한의 규칙 클라이언트가 패킷에 데이터, 각 IP주소등을 담아 전달을 하면 ..

HTTP 2023.12.22