로그은 개인적인 컨텐츠를 얻기위해서 Authentication(인증)을 받는 일련의 과정이다.개인적인만큼 보안이 중요하다. 따라서 로그인하는 방식도 쿠키 or 세션 or 토큰 방식이 있는데, 이중에서 우리는 JWT(Json Web Token)방식을 채택했다.그 이유는
Spring JPA를 사용하면 EntityManager를 통해 Entity를 관리한다. 관리되는 Entity중 persist 메서드를 통해 영속성에 올릴 수 있다. 회원 가입 로직을 구성하면서 User Entity를 영속성에 올렸다.물론 우리는 Spring boot d
우선 포스팅을 시작하기에 앞서서 확실히 짚고 넘어갈 부분을 이야기해보자.이 포스트에서는 소셜로그인의 장단점을 이야기하고자하는 것이 아니라, 소셜로그인에 필요한 OAuth2를 이야기해보고 근본적으로 왜 OAuth를 사용하게 되었고 로그인과는 어떤 차이점이 있는지 알아보기
이번 글은 다른 글과는 조금 다르게, 길게 풀어서 써보려고 한다. 사실 공통프로젝트에 대한 회고이긴하지만 내 대학 이야기까지 꺼내야될 것 같다. 제목이 코드에 대한 고찰인 이유는 "같은 코드를 짜더라도 효율적으로 짜려고 고민하고 가독성있게 구현하기위해서 노력했던 적이
이번 SSAFY 2학기 공통프로젝트를 진행하면서 우리가 처음에 정했던 규칙들을 상기시켜보고, 어떤 점을 잘 이행했으며 어떤 점을 잘 못했었는지 회고를 해보자. 그리고 그 다음 심화 프로젝트에서는 어떻게 개선해야할까 생각해보자.
다익스트라 알고리즘밸만포드 알고리즘플로이드-와샬 알고리즘최단경로를 찾는 알고리즘 중 다익스트라는 오직 양의 가중치를 가진 그래프만을 취급한다. 또한 특정 출발위치에서 도착위치의 최단경로를 찾는 알고리즘으로, 모든 경로의 최단경로를 구하지 않는다.그리디하게 정점을 선택하
특정 문자열에서 부분 문자열을 찾을 때 사용한다. KMP 알고리즘은 부분문자열을 찾는 알고리즘 중 유일하게 선형 시간복잡도를 가지기때문에 유명하다. 가령 문자열의 길이가 10^5 이고 패턴의 길이가 10^3일 때, 완전탐색 또는 다른 알고리즘의 최악의 경우 1억번 검사
위상정렬(Topological Sort)이란 싸이클이 없는 방향그래프(Directed Acyclic Graph, DAG)에서 정점들을 선형순서로 나열한 것을 의미한다. 아래 그림과 같이 정점에 대해 순서를 부여하는 것을 위상정렬이라고 하며, 주어진 그래프에 따라 여러
그래프 이론을 통해서 그래프에서 사용되어지는 용어들을 알아봤다. 이제 모든 자료구조의 기초가 되는 탐색 연산을 알아볼 차례인데, DFS와 BFS로 두가지 연산이 존재한다.깊이 우선 탐색(Depth-First-Search)는 너비 우선 탐색과 달리 탐색 방향이 아래로 진
그래프는 실생활에서 인터넷, 금융, 도로, 신경망, 소셜 네트워크 분석 등 광범위한 분야에서 활용되는 자료구조다. 그래프 이론을 통해서 우리가 알아야할 알고리즘은, 그래프의 기본 연산이라 할 수있는 깊이 우선 탐색(DFS, Depth-First-Search)와 너비 우
허프만 부호화 또는 허프만 코딩(Huffman coding)은 입력 파일의 문자 빈도 수를 가지고 최소힙을 이용하여 파일을 압축하는 과정이다. 허프만 코드(이진코드)는 Unix에서 파일압축에 사용되고, JPEG 이미지 파일 또는 MP3 음악 파일을 압축하기 위한 서브
이진 힙(binary heap)은 우선순위 큐(priority queue)를 위한 자료구조다. 그런데 왜 우선순위 큐는 기존에 있는 큐와 같은 방식을 이용하지않고 heap이라는 자료구조를 이용하는 것일까? 그에 대한 답은 우선순위 큐라는 이름에서 찾아볼 수 있다. 큐
위키백과에 따르면 Queue를 다음과같이 정의하고 있다. Queue is a collection of entities that are maintained in a sequence and can be modified by the addition of entities at
위키백과)에 따르면 Stack을 다음과같이 정의하고 있다. 스택은 추상 자료구조이며 두가지 원리에 의해 동작한다. > In computer science, a stack is an abstract data type that serves as a collection o
이번 포스트는 프로젝트 네번째 이슈에서 화면테스를 진행했다. 나는 라벨을 통해 미리 준비해야하는 부분을 Preparations로 개발부분을 feature로 구분하고있다. 유명한 리그오브레전드 전적 사이트를 클론코딩하여 프로젝트를 진행해보기로 했다. 혼자서 진행하는만큼
어떤 리스트에서 이분탐색을 이용해서 특정 값을 찾을때, 리스트가 중복된 값을 포함하고 있을 수 있다. 그 중복값을 전부 찾거나 또한 그 중복값들을 활용해서 문제를 해결하는 문제를 위해서 upper_bound나 lower_bound가 존재한다.
나는 지난 2020.01 이후로부터 SSAFY 3기로서 입학하게 되었다. 본격적으로 후기를 남기기전에 합격했던 상황을 되뇌어보려한다. 지금와서보니 나는 더럽게 자소서를 못썼었고, 생각하기에 면접도 잘 보지는 못했던것 같다. 그런데 어떻게 합격했을까? 살면서 몇번없는
이번 포스트는 프로젝트 두번째 이슈 파싱한 데이터로 DB구축하기에서 파싱한 데이터로 DB 구축하기다. 나는 개발부분이 아닌과정 중 미리 준비해야하는 부분을 Preparations로 구분하고있다. 유명한 리그오브레전드 전적 사이트를 클론코딩하여 프로젝트를 진행해보기로
MVC 디자인패턴은 장점이 많은 architecture다. 그러나 그만큼 알아야할 내용이 많고 구조또한 복잡해서 차근차근 알아갈 필요가있다. 이번 포스팅을 통해서 mvc 구조의 탄생비화(?)를 포함해 servlet과 jsp의 각자의 역할과 MVC 디자인 패턴에 대해 알
보통 알고리즘은 c++로 많이 푼다. 그러나 못지않게 자바로도 많이 푸는데 각자의 장단점이 있다. 그중 c++에는 있고 자바에는 없는것이 바로 next_permutation이다. c++이 라이브러리로 순열을 제공 해준다고해도 순열의 원리가 필요한 특정문제에서는 제한적일