본문 바로가기

반응형

분류 전체보기

(66)
[Spring Security] 개요 웹 애플리케이션을 개발함에 있어, 보안은 중요합니다. Spring Security는 인증, 인가 같은 보안 관련 기능을 제공하는 프레임워크입니다. Spring Security에 대해 이해하려면 Security 프레임워크의 전반적인 구조를 이해해야 할 뿐 아니라, 보안 , 웹 애플리케이션 구조에 대해서도 충분히 이해하고 있어야 합니다. 이 카테고리에서는 초심자의 입장에서 Spring Security에 대한 이해를 돕는 글들을 정리하고자 합니다. 구조 및 흐름에 대한 이해를 최대한 돕기 위해 다양한 그림을 첨부하려고 합니다. 하단에는 각 주제에 대한 포스팅 링크를 올려둘 예정입니다. (지속적으로 업데이트 중)
[Project: OurWorldCup] branch 전략 분석 및 선택 도입 프로젝트를 진행할 때 적절한 브랜치 전략이 필요합니다. 유명한 전략으로 git-flow, gitlab-flow, github-flow이 있습니다. 각각에 대해 간단히 살펴본 후 저에게 맞는 브랜치 전략을 선정하기로 했습니다. https://wiki.yowu.dev/ko/dev/Git/about-git-github-gitlab-flow 블로그에서 이해에 도움을 많이 받았습니다. 아래에 나오는 모든 예시 사진은 이 블로그에서 가져온 그림입니다. git-flow git-flow는 가장 많은 기능을 포함한 브랜치 전략입니다. 완전히 안전한 코드의 main 브랜치 긴급한 수정을 위한 hotfix 브랜치 개발을 위한 develop 브랜치 세부적인 기능을 개발하는 데 사용되는 feature 브랜치 개발 후 품질..
[Project: OurWorldCup] API 명세서 작성하기 API 명세서 작성 로그인 후 메인 페이지는 /{id} 형식으로 작성해야 했습니다. 그런데, 월드컵 정보를 확인하는 페이지를 들어갈 때, /{id}/{wordldcup_name}는 올바르지 않다고 생각했습니다. 저 표현은 worldcup이 id에 종속되어 있는 것으로 오해할 여지가 있기가 때문이죠. 이를 해결하기 위해 github의 형식을 따르기로 했습니다. 하나의 worldcup은 여러 명이 하나를 조직한다는 점에서 github의 organization과 비슷하다고 생각했습니다. organization은 github.com/{organization_name}의 엔드포인트로 되어있었습니다. 이에 따라서 저도 /{worldcup_name}으로 바로 접근할 수 있도록 해주었습니다. 완성한 api 명세서는 아..
[Project: OurWorldCup] ERD 설계하기 설계 계기 Entity Relationship Diagram, ERD는 DB를 구축하는 데 자주 이용하는 다이어그램입니다.이전 프로젝트에서도 사용해서 이해하기 쉬웠던 경험이 있어 이번에도 설계한 후 프로젝트를 진행하고자 합니다. 각 테이블에 어떤 필드가 필요한 지, 테이블끼리의 관계가 어떻게 되는 지 미리 결정해 놓으니 개발할 때 맘 편히 작성할 수 있습니다. 설계 https://app.diagrams.net/에서 ERD를 그릴 수 있습니다. 저는 여기서 ERD 외에도 usecase와 같은 다양한 다이어그램을 작성합니다. participants 테이블은 user_account - worldcup 테이블의 다대다 관계를 분리하기 위하여 생성된 테이블입니다. game 테이블은 월드컵 정보를 토대로 생성된 게..
[Project: OurWorldCup] Figma로 프로젝트 설계하기 설계 계기 개인 프로젝트를 여러 번 진행해보면서, 프로젝트 시작 전 설계의 필요성을 느끼게 되었습니다. 적절한 설계를 해놓고 진행하지 않으면, 마구잡이 식으로 개발을 하게 될 가능성이 높았습니다. 그리고, 기능 구현이 어디까지 필요한 지에 대한 경계선이 없다보니 개발의 끝이 보이지 않고, 쉽게 지치게 되는 느낌을 받았습니다. 그래서 이번 프로젝트에서는 피그마를 활용해서 간단하게 우리 서비스의 틀과, 어떤 기능들이 필요한지 정리하고자 합니다. 설계 과정 피그마를 처음 사용하다 보니, 매우 조잡한 디자인을 구현하는 데에도 꽤 오랜 시간이 걸렸습니다. 그래도, 필요한 웹 페이지를 작성하다보니 머리 속으로만 생각할 때와 달리 필요한 페이지, 기능들이 더 있다는 것을 알 수 있었습니다. 페이지 구성 각 페이지에 ..
[IntelliJ] Window 단축키 수시로 추가할 예정 커서 관련 alt + shift + 좌클릭 : 다중 커서 alt + shift + Insert : 다중 커서 on/off 코드 수정 관련 shift + f6 : Rename 창 관련 cntrl + Tab : 이전 창으로 이동 alt + 방향키 : 창 이동 Custom 세팅 관련 (Settings → KeyMap에서 키 변경 필요) cntrl + ] : 우측 창 분할 (Split and Move Right) 환경 설정 관련 cntrl + alt + S : Settings 이동
[Algorithm] 다익스트라(dijkstra) 알고리즘 다익스트라 알고리즘 다익스트라 알고리즘은, 모든 간선의 weight가 0이상 일 때 사용가능한 알고리즘으로, 특정 vertex를 출발점으로 하여 모든 vertex까지의 최소 거리를 구하는 알고리즘입니다. 알고리즘의 동작 원리는, "매 단계마다, 도달할 수 있는 정점 중에서 시작점으로부터 거리가 가장 가까운 정점을 확정해 나가는 방식입니다. weight가 작은 노드부터 계속 가지고와야 하다보니, 다익스트라 알고리즘은 일반적으로 PriorityQueue를 사용하여 구현합니다. 최솟값을 가진 노드를 찾기 위해 일반 배열의 경우 복잡도가 O(n)이지만, PriorityQueue의 경우에는 O(log n)입니다. 구현 - 노드 정의 package baek1753; import java.io.BufferedRead..
[JAVA] 제네릭 타입 제네릭 타입이란 제네릭 타입은 Java에서 타입 안정성(type safety)과 재사용성(reusability)을 높이기 위해 도입된 기능입니다. 제네릭은 클래스, 인터페이스, 메서드 등에서 타입을 파라미터화하여 여러 종류의 실제 타입을 지원하는 일반화된 코드를 작성할 수 있게 합니다. 일반적으로 제네릭은 "" 기호를 사용하여 선언됩니다. 이 기호 안에 타입 파라미터가 위치하며, 해당 파라미터는 실제 사용할 타입으로 대체됩니다. 제네릭 타입을 사용하면 컴파일러는 타입 체크를 수행하고 컴파일 시에 타입 안정성을 보장할 수 있습니다. 제네릭 타입의 주요 이점은 다음과 같습니다 1. 타입 안정성(Type Safety): 제네릭은 컴파일 시에 타입 체크를 수행하므로 런타임에 타입 관련 오류가 발생할 확률을 줄여..

반응형