Recommend
-
Spring Initializer를 이용한 Spring Boot 환경설정
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 [무료] 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 - 인프런 | 강의 스프링 입문자가 예제를 만들어가면서 스프링 웹 애플리케이션 개발 전반을 빠르게 학습할 수 있습니다., - 강의 소개 | 인프런 www.inflearn.com 김영한 님의 스프링 입문 강의를 보며 공부한 내용을 정리해보고자 한다. Spring Boot를 기반으로 진행되는 강의이다. Spring Initializer Spring Boot를 이용한 초기 설정을 위해서는 https://start.spring.io/라는 페이지를 이용한다. Gradle / Maven, Language, Spring boot version, dependency..
-
스프링 시큐리티 없이 JWT 회원가입 및 로그인 구현
스프링 시큐리티 없이 JWT를 이용한 회원가입 및 로그인 구현을 정리하고자 한다. 시큐리티를 쓰지 않는 이유는 시큐리티 자체가 너무 많은 역할을 해주기 때문에 직접 구현하며 어떤 식으로 진행되는지 확인하고자 함이다. 물론 내가 진행한 프로젝트 내에서 스프링 시큐리티를 아예 쓰지 않는 것은 아니지만 JWT 인증에 한해서는 사용하지 않는다. 0. JWT 에 관해 이 글을 읽기 전 JWT에 관한 이해가 필요하다. 앞선 글을 읽고 오길 바란다. 2024.02.23 - [Web] - JWT(Json Web Token) 이란 무엇인가? - 쿠키와 세션 비교를 통해 1. dependency 설치 implementation 'io.jsonwebtoken:jjwt-api:0.12.3' implementation 'io...
-
언어별 백엔드 프레임워크 비교
Python 웹 프레임워크 Python 의 다양한 라이브러리 사용 가능 → 데이터, 머신러닝 관련 라이브러리가 다른 언어보다 제공이 잘 된다. Django MTV (Model - Template - View) 패턴을 사용 → 역할에 따라 독립적으로 개발되기 때문에 유지보수가 수월하고 확장이 용이하다. 테스트 관련 라이브러리 제공 Django ORM 을 이용하여 편리하게 데이터베이스 접근 SQL 쿼리를 직접 사용하지 않고도 파이썬 객체를 사용해 DB 를 다룰 수 있다. → DB 종류에 의존하지 않음 → 추후 DB 가 바뀌더라도 유연하게 대처 가능 자체 Admin 페이지 제공 지속적인 업데이트 23년 12월에 Django 5.0 이 나올 만큼 개발자들이 지속적으로 업데이트를 해주고 있다. (물론 다른 프레임..
-
가비아 도메인 구매 및 AWS Route 53 설정
1. 개요 Portainer CI/CD 구축 전 도메인 연결을 먼저하기 위해 가비아에서 도메인을 구매하고 AWS 에 설정하는 방법을 기록한다. 2. 가비아 도메인 구매 https://www.gabia.com/ 웹을 넘어 클라우드로. 가비아 그룹웨어부터 멀티클라우드까지 하나의 클라우드 허브 www.gabia.com 우선 내가 만드는 서비스의 도메인 구매를 먼저하려고 한다. 나중에 ssl 인증을 통해 https 보안 연결 작업을 할 때 필요하기 때문에 미리 설정을 해두기로 했다. 메인 화면에 가서 원하는 도메인을 적어 어떤 도메인이 구매 가능한지 확인한다. 나는 wequiz 라는 이름으로 도메인 검색을 했다. 다양한 도메인이 나오는데 맘에 드는 도메인을 구매한다. 3. AWS Route 53 설정 AWS R..
-
Discord에서 Github Bot 설정하기
현재 캡스톤 프로젝트를 진행 중인데 역할 별로 어떤 부분을 개발하고 있는지 잘 알기 위하여 Github Bot을 적용하기로 했다. 현재 Discord에서 회의를 하기 때문에 Discord에서 설정하기로 했다. 0. Webhook 웹훅이란 웹에서 발생하는 특정 이벤트를 콜백으로 변환해 주는 것이다. 즉, 서버에서 이벤트가 일어나면 미리 정의한 callback URL로 클라이언트를 호출하는 방식이다. 우리는 Git에서 어떤 이벤트가 일어날 때 Discord 클라이언트를 호출하게 된다. 1. Discord 에서 채널 설정 우선 Discord에서 채널을 하나 생성한다. 나는 github라는 채널을 생성하였다. github 오른쪽의 톱니바퀴 모양을 눌러 해당 채널의 설정으로 들어가 연동 탭에 들어간다. 연동 탭에..
-
JWT(Json Web Token) 이란 무엇인가? - 쿠키와 세션 비교를 통해
글 다 썼는데.. 갑자기 사라졌다. 화가 나지만 복습 겸 다시 쓴다.. 다른 분들은 꼭 임시 저장하시길.. 그동안 프로젝트를 하면서 로그인, 회원가입 부분을 구현하다 보면 세션 방식, JWT 방식으로 구현해보곤 했다. 구체적인 차이에 대해서 잘 몰랐으나 이번 프로젝트를 하면서 다시 공부하였고 공부한 부분을 정리해보고자 한다. 1. JWT(Json Web Token) 란 무엇인가? JWT는 클라이언트와 서버 간 인증방식을 안전하게 하기 위해 이용하는 토큰이다. .(점)으로 이루어진 세 문자열로 이루어져 있다. https://jwt.io/ 이 사이트에서 JWT 토큰 인코딩 디코딩을 해볼 수 있다. 세 부분은 다음과 같이 나눠진다. Header 헤더 부분에는 토큰의 종류 (JWT), 사용된 해쉬암호화 방식 등..
-
스프링 입문 - 04. 스프링 빈과 의존관계
Dependency Injection (DI) DI란 번역 그대로 의존관계 주입이라는 뜻이다. 객체의 의존관계를 외부에서 넣어주는 것이다. Controller 가 Service와 Repository를 사용할 수 있게 의존관계를 만들어주자. public class MemberService { private final MemberRepository memberRepository = new MemoryMemberRepository(); 기존 Service에서는 Repository를 이용하기 위해 new라는 키워드를 이용해 새로운 객체를 만들어 주었다. 이 코드를 DI를 적용해서 변경하면 아래와 같다. public class MemberService { private final MemberRepository m..
-
Git action과 docker hub을 이용한 Continuous Integration
1. 개요 전체적인 CI/CD 작업과정을 설명하고 이 포스트에서는 CI 작업을 진행하고자 한다. 이 글은 스프링 백엔드 서버를 기준을 설명한다. 2. 설계한 CI/CD 과정 유저가 브랜치에 변경사항을 push함에 따라 git action이 실행된다. git action이 CI 과정을 진행한다. Docker image 빌드 Docker hub에 빌드한 image push CI action이 종료됨에 따라 자동으로 git action이 CD 과정을 호출하여 진행한다. Portainer에서 컨테이너 별로 제공하는 webhook을 post 메소드로 호출한다. Portainer는 docker hub에서 새로운 이미지를 요청하여 ec2에 이미지를 빌드할 수 있게 해준다. 3. Dockerfile Spring 이 빌..
-
Portainer를 이용한 간편한 CI/CD
1. 개요 캡스톤디자인을 하며 프로젝트 개발 중 어려움이 생겨 멘토링을 진행하게 되었다. 멘토링 중 멘토님께서 Portainer를 이용하여 CI/CD를 구축하는 것을 추천해주셨다. 2. Portainer 란? https://www.portainer.io/ Kubernetes and Docker Container Management Software Portainer is your container management software to deploy, troubleshoot, and secure applications across cloud, datacenter, and Industrial IoT use cases. www.portainer.io Portainer란 도커를 관리하는 오픈 소스 컨테이너 관리..
-
[JPA] ORM과 JPA 이해하기
1. 서론 Spring Framework의 많은 프로젝트를 보면 많은 사람들이 JPA라는 기술을 사용한다. 오늘은 이 JPA라는 기술에 대해 설명해보고자 한다. 2. ORM JPA를 알기 위해서 우선 ORM 이라는 것에 대해 알아보자. ORM 이란 Object-Relational Mapping의 약자이다. ORM은 SQL을 사용하지 않고 데이터베이스를 관리할 수 있는 도구이다. 데이터베이스에 테이블을 만들고 CRUD 기능을 사용하기 위해서는 SQL 쿼리를 데이터베이스 서버에 전달해야 한다. 하지만 코드만으로 이런 SQL 쿼리를 대신할 수 있도록 도와주는 것이 ORM이다. 예를 들어보면 User라는 테이블에 id, name, age라는 열이 있다고 가정하자. id name age 1 금장 26 2 준범 2..
-
시간복잡도
1. 개요 알고리즘의 시간복잡도에 대해 알아보자. 2. 정의 시간 복잡도 : 문제를 해결하기 위한 연산 횟수, 일반적으로 1억 번의 연산을 1초로 간주 3. 유형 빅-오메가 Ω(n) : 최선일 때 (Best case) 빅-세타 θ(n) : 보통일 때 (Average case) 빅-오 O(n) : 최악일 때 (Worst case) -> 코딩테스트에서는 빅-오를 염두하고 임한다. -> 다양한 테스트 케이스를 수행해 모든 케이스를 통과해야 하기 때문이다. 문제의 시간복잡도를 충족하며 해결하기 위해서는 1. 알맞은 알고리즘을 사용하고 2. 비효율적인 로직 찾아서 효율적으로 바꾼다
Recent
-
[JDK 뜯어보기] Collection interface
본 글은 JDK 17을 기준으로 작성하였습니다.java.util.CollectionCollection은 그 안에 있는 요소들을 나타낸다. 인터페이스이기 때문에 JDK는 직접적인 구현체를 제공하지는 않지만, Set, List 와 같은 더 구체적인 하위 인터페이스의 구현체들로 구현체를 제공한다. Unmodifiable CollectionUnmodifiable Collection 이라고 해서 반드시 불변인 것은 아니다. 포함되어 있는 요소가 가변적이라면 컬렉션이 가변적일 수 있다. 하지만 모든 요소가 불변이라면 불변 Collection이라고 생각할 수 있다.Collections.unmodifiableList() 우테코 프리코스를 경험하며 위의 메소드를 이용하여 불변 Collection으로 만드려는 것을 많이 ..
2024.04.29 11:56 -
가비아 도메인 구매 및 AWS Route 53 설정
1. 개요 Portainer CI/CD 구축 전 도메인 연결을 먼저하기 위해 가비아에서 도메인을 구매하고 AWS 에 설정하는 방법을 기록한다. 2. 가비아 도메인 구매 https://www.gabia.com/ 웹을 넘어 클라우드로. 가비아 그룹웨어부터 멀티클라우드까지 하나의 클라우드 허브 www.gabia.com 우선 내가 만드는 서비스의 도메인 구매를 먼저하려고 한다. 나중에 ssl 인증을 통해 https 보안 연결 작업을 할 때 필요하기 때문에 미리 설정을 해두기로 했다. 메인 화면에 가서 원하는 도메인을 적어 어떤 도메인이 구매 가능한지 확인한다. 나는 wequiz 라는 이름으로 도메인 검색을 했다. 다양한 도메인이 나오는데 맘에 드는 도메인을 구매한다. 3. AWS Route 53 설정 AWS R..
2024.04.22 12:24 -
Git action과 docker hub을 이용한 Continuous Integration
1. 개요 전체적인 CI/CD 작업과정을 설명하고 이 포스트에서는 CI 작업을 진행하고자 한다. 이 글은 스프링 백엔드 서버를 기준을 설명한다. 2. 설계한 CI/CD 과정 유저가 브랜치에 변경사항을 push함에 따라 git action이 실행된다. git action이 CI 과정을 진행한다. Docker image 빌드 Docker hub에 빌드한 image push CI action이 종료됨에 따라 자동으로 git action이 CD 과정을 호출하여 진행한다. Portainer에서 컨테이너 별로 제공하는 webhook을 post 메소드로 호출한다. Portainer는 docker hub에서 새로운 이미지를 요청하여 ec2에 이미지를 빌드할 수 있게 해준다. 3. Dockerfile Spring 이 빌..
2024.04.11 13:59 -
Portainer를 이용한 간편한 CI/CD
1. 개요 캡스톤디자인을 하며 프로젝트 개발 중 어려움이 생겨 멘토링을 진행하게 되었다. 멘토링 중 멘토님께서 Portainer를 이용하여 CI/CD를 구축하는 것을 추천해주셨다. 2. Portainer 란? https://www.portainer.io/ Kubernetes and Docker Container Management Software Portainer is your container management software to deploy, troubleshoot, and secure applications across cloud, datacenter, and Industrial IoT use cases. www.portainer.io Portainer란 도커를 관리하는 오픈 소스 컨테이너 관리..
2024.04.10 22:23 -
[JPA] ORM과 JPA 이해하기
1. 서론 Spring Framework의 많은 프로젝트를 보면 많은 사람들이 JPA라는 기술을 사용한다. 오늘은 이 JPA라는 기술에 대해 설명해보고자 한다. 2. ORM JPA를 알기 위해서 우선 ORM 이라는 것에 대해 알아보자. ORM 이란 Object-Relational Mapping의 약자이다. ORM은 SQL을 사용하지 않고 데이터베이스를 관리할 수 있는 도구이다. 데이터베이스에 테이블을 만들고 CRUD 기능을 사용하기 위해서는 SQL 쿼리를 데이터베이스 서버에 전달해야 한다. 하지만 코드만으로 이런 SQL 쿼리를 대신할 수 있도록 도와주는 것이 ORM이다. 예를 들어보면 User라는 테이블에 id, name, age라는 열이 있다고 가정하자. id name age 1 금장 26 2 준범 2..
2024.03.15 22:44 -
Discord에서 Github Bot 설정하기
현재 캡스톤 프로젝트를 진행 중인데 역할 별로 어떤 부분을 개발하고 있는지 잘 알기 위하여 Github Bot을 적용하기로 했다. 현재 Discord에서 회의를 하기 때문에 Discord에서 설정하기로 했다. 0. Webhook 웹훅이란 웹에서 발생하는 특정 이벤트를 콜백으로 변환해 주는 것이다. 즉, 서버에서 이벤트가 일어나면 미리 정의한 callback URL로 클라이언트를 호출하는 방식이다. 우리는 Git에서 어떤 이벤트가 일어날 때 Discord 클라이언트를 호출하게 된다. 1. Discord 에서 채널 설정 우선 Discord에서 채널을 하나 생성한다. 나는 github라는 채널을 생성하였다. github 오른쪽의 톱니바퀴 모양을 눌러 해당 채널의 설정으로 들어가 연동 탭에 들어간다. 연동 탭에..
2024.03.13 23:27 -
스프링 시큐리티 없이 JWT 회원가입 및 로그인 구현
스프링 시큐리티 없이 JWT를 이용한 회원가입 및 로그인 구현을 정리하고자 한다. 시큐리티를 쓰지 않는 이유는 시큐리티 자체가 너무 많은 역할을 해주기 때문에 직접 구현하며 어떤 식으로 진행되는지 확인하고자 함이다. 물론 내가 진행한 프로젝트 내에서 스프링 시큐리티를 아예 쓰지 않는 것은 아니지만 JWT 인증에 한해서는 사용하지 않는다. 0. JWT 에 관해 이 글을 읽기 전 JWT에 관한 이해가 필요하다. 앞선 글을 읽고 오길 바란다. 2024.02.23 - [Web] - JWT(Json Web Token) 이란 무엇인가? - 쿠키와 세션 비교를 통해 1. dependency 설치 implementation 'io.jsonwebtoken:jjwt-api:0.12.3' implementation 'io...
2024.03.08 23:28 -
JWT(Json Web Token) 이란 무엇인가? - 쿠키와 세션 비교를 통해
글 다 썼는데.. 갑자기 사라졌다. 화가 나지만 복습 겸 다시 쓴다.. 다른 분들은 꼭 임시 저장하시길.. 그동안 프로젝트를 하면서 로그인, 회원가입 부분을 구현하다 보면 세션 방식, JWT 방식으로 구현해보곤 했다. 구체적인 차이에 대해서 잘 몰랐으나 이번 프로젝트를 하면서 다시 공부하였고 공부한 부분을 정리해보고자 한다. 1. JWT(Json Web Token) 란 무엇인가? JWT는 클라이언트와 서버 간 인증방식을 안전하게 하기 위해 이용하는 토큰이다. .(점)으로 이루어진 세 문자열로 이루어져 있다. https://jwt.io/ 이 사이트에서 JWT 토큰 인코딩 디코딩을 해볼 수 있다. 세 부분은 다음과 같이 나눠진다. Header 헤더 부분에는 토큰의 종류 (JWT), 사용된 해쉬암호화 방식 등..
2024.02.23 02:07