본문 바로가기
728x90

분류 전체보기406

당신의 첫 프로젝트를 위한 스프링 시큐리티 톺아보기 🙇🏻‍♂️ 안녕하세요. 저는 부트캠프를 나와서 개발자로 일하고 있는 사람입니다. 지금 생각해 보면 부트캠프 메인 프로젝트 기간 때 가장 골치 아프고 힘들었던 게 스프링 시큐리티였던 것 같아요. 당시에 막상 만들어 놓고 이해도 잘 못하고 팀원들에게 설명하기 어려워했던 기억이 납니다. 그래서 언젠가 프로젝트를 처음 하시는 분들을 위해 잘 몰라도 따라 할 수 있는 스프링 시큐리티 글을 써야겠다 생각을 했는데 그걸 이제야 하게 됐네요. 아무튼 잘 몰라도, 지나가는 할머니께 다짜고짜 설명해도 이해할 수 있게 쉽게 작성해 보겠습니다.  여기서는 웹, 앱 애플리케이션에서의 로그인, 로그아웃 구현을 위해 필요한 스프링 시큐리티(Spring Security)의 동작 원리에 대한 짤막한 개념과 설명을 다룹니다. 다음 .. 2024. 7. 6.
직접 만들어 보면서 이해하는 웹소켓 (4) - STOMP 실시간 채팅방 구현(백엔드 영역) 직접 만들어 보면서 이해하는 웹소켓 마지막 단계이다.STOMP 실시간 채팅방 구현을 위한 백엔드 코드는 생각보다 매우 간단하다.사실 자바 스크립트도 간단한데 프론트엔드 영역을 잘 모르는 상태로 무작정 구현을 하다 보니 상당히 애를 먹었던 것 같다.가장 어려웠던 부분이 프론트 엔드 영역 코드와 벡엔드 영역 코드의 연결 부분이었는데 이를 쉽게 이해하려면 지난 글을 함께 봐야 한다. 전체 코드는 깃허브 레파지토리에서 확인할 수 있다.https://github.com/wonyongg/test/tree/main/webSocketTest test/webSocketTest at main · wonyongg/testtest and summarize what i learned today. Contribute to won.. 2024. 6. 3.
직접 만들어 보면서 이해하는 웹소켓 (3) - STOMP 실시간 채팅방 구현(프론트엔드 영역) 지난 글에 이어 STOMP에 대해 간단히 알아보고, 이제는 소켓 통신에 대한 실습을 넘어 간단하게 실시간 채팅 웹사이트를 구현해 보겠다. 📌 WebSocket의 한계와 STOMP의 등장 배경WebSocket은 실시간 통신을 위한 효율적인 기술이지만, 사용상 몇 가지 한계가 있다🥲 프로토콜 수준의 메시지 패턴 부재저수준의 프로토콜로 단순한 메시지 전송 기능만 제공한다.따라서 복잡한 메시징 패턴이나 메시지 형식을 개발자가 직접 설계하고 구현해야 한다.🥲 메시지 라우팅의 어려움클라이언트에서 서버로 메시지를 전송할 때 해당 메시지를 어떻게 처리할 것인지, 어느 클라이언트에게 전달할 것인지에 대한 라우팅 로직 역시 개발자가 직접 구현해야 한다.🥲 표준화된 메시징 기능의 부재메시지 교환에 대한 고급 기능(예.. 2024. 5. 23.
직접 만들어 보면서 이해하는 웹소켓 (2) - 크롬 확장프로그램을 이용하여 실시간 채팅방 구현하기 지난 글에 이어 채팅방을 구현해 보자.프론트엔드 영역은 웹소켓 공부에 포커싱 하고자 웹소켓 확장 프로그램으로 대신했다. 👨🏻‍🔬 실습 진행🛠️ 확장 프로그램 설치 - WebSocket King Client구글 크롬의 확장 프로그램에 WebSocket이라고 검색하면 웹소켓에 관련된 여러 테스팅 & 디버깅 툴이 나온다.링크 들어가기그중에 현재 기준 가장 인기 있는 툴을 사용했다.WebSocket king is a tool designed to assist in developing and debugging WebSocket connections.툴의 개요를 보면 웹소켓 연결에 대한 개발과 디버딩을 도와주는 툴이라고 적혀있다.프로그램 설치 후 들어가 보면 위와 같은 화면이 나온다. ☘️ 스프링부트 프로젝.. 2024. 5. 12.
직접 만들어 보면서 이해하는 웹소켓 (1) - 왜 웹소켓(WebSocket)인가? 💡 왜 웹소켓(WebSocket)인가? 포털 사이트의 실시간 검색 순위, 주식이나 코인 거래소의 실시간 차트 정보, 음악 사이트의 실시간 음원 순위 등 웹 기반의 애플리케이션에서 실시간 정보 공유는 사용자 경험을 대폭 향상할 수 있는 중요한 요소이다. 그러나 전통적인 HTTP 통신 방식은 이러한 실시간 정보 공유에 몇 가지 제약이 있다. 이 글에서는 실시간 통신에 있어 기존 HTTP 통신 방식의 문제점에 대해 알아보고 이를 해결할 수 있는 몇 가지 방법을 논의한 후 왜 웹소켓이 실시간 통신에 있어 가장 우수한 선택인지를 직접 구현해 봄으로써 이해하려고 한다.🥲 실시간 통신에서 HTTP의 한계HTTP 통신은 클라이언트가 서버에 요청을 보내고, 서버가 그 요청에 대한 응답을 보내는 요청-응답(Reque.. 2024. 5. 10.
비전공자, 부트캠프 출신 백엔드 개발자의 솔직한 취업 1년 후기 1년 차 목표 달성했나요? - 취업한 지 3주 정도 지났을 때 블로그에 1년 목표를 세웠는데, 부끄럽지만 달성에 실패했다. 두 가지 목표는 자격증 취득이었고 한 가지 목표는 개발 공부에 관한 내용이었다. 자격증 취득부터 얘기하면 아직도 쿠버네티스 공부 중이다. 시험은 작년 사이버 먼데이 때 응시 신청을 해두었고 1년 기한이니 대략 올해 12월 초까지 시험에 2 번 응시할 기회가 있다. 현재로서는 응시 만료 기한 전까지 충분히 공부하고 안전하게 합격할 생각이다. aws의 경우 현재는 전혀 공부할 생각이 없다. 회사에서 오라클 클라우드를 사용하기도 하고 아직까지 클라우드 관련 세팅까지 깊게 관여할 기회나 일이 없기 때문에 완전히 후순위로 밀려버렸다. 나중에 이직하게 되었을 때 해당 회사에서 aws를 사용한다.. 2024. 4. 20.
자바에서 중복 요소를 남김없이 모두 제거하는 방법 💡 자바에서 리스트의 중복 요소를 제거하는 대표적인 방법에는 두 가지가 있다. 1. Set을 이용한 중복 제거 List list = new ArrayList(Arrays.asList("A", "B", "A", "C", "B")); Set setWithoutDuplicates = new LinkedHashSet(list); List listWithoutDuplicates = new ArrayList(setWithoutDuplicates); System.out.println(listWithoutDuplicates); // 출력: [A, B, C] Set은 자바 컬렉션 프레임워크의 인터페이스 중 하나로 중복된 요소를 허용하지 않고 순서를 보장하지 않는 자료구조이다. 중복을 허용하지 않기 때문에 동일한 요소가 .. 2024. 3. 21.
JPA Specification을 이용하여 다중 조건 검색 로직을 구현해보자. 🤔 다중 조건 검색이란? 다중 조건 검색이란 카테고리 검색, 상세 검색 등과 같이 쇼핑몰 등에서 여러 필터 조건으로 검색된 결과를 축소시켜 사용자가 원하는 결괏값만을 도출하기 위해 사용한다. 이를 어떻게 구현할 수 있을까 고민해보면 한 가지 방법으로 귀결되는데 바로 '동적 쿼리'이다. 사용자가 원하는 필터링에 맞춰 조회 쿼리를 날려주면 되는 것인데 결국 매 요청마다 쿼리문이 달라지게 된다는 이야기이므로 Jpa에서 제공하는 기본 메서드와 같이 정해진 쿼리에 value만 다르게 보내는 것과는 다른 방법을 사용해야 한다. 📜 테스트에 사용될 View member 테이블과 team 테이블에서 추출하여 만든 view이다. view나 테이블 구조에 대해 자세히 알고 싶다면 이 글을 참고하자. 💡 대표적인 방법 세 .. 2024. 1. 31.
728x90