Recommend
-
스프링 시큐리티 없이 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 이 나올 만큼 개발자들이 지속적으로 업데이트를 해주고 있다. (물론 다른 프레임..
-
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..
-
객체지향 생활체조
SOLID 원칙을 적용하기 위한 객체지향 생활 체조 9 원칙은 코드를 readable(읽기 좋은), maintainable(유지 관리), reuseable(재사용 가능), scalable(확장 가능) 하게 디자인 할 수 있다. 더보기 객체지향 생활 체조 9가지 원칙 규칙 1: 한 메소드에 오직 한 단계의 들여쓰기(indent)만 한다. 규칙 2: else 예약어를 쓰지 않는다. 규칙 3: 모든 원시값과 문자열을 포장한다. 규칙 4: 한 줄에 점을 하나만 찍는다. 규칙 5: 줄여쓰지 않는다(축약 금지). 규칙 6: 모든 엔티티를 작게 유지한다. 규칙 7: 3개 이상의 인스턴스 변수를 가진 클래스를 쓰지 않는다. 규칙 8: 일급 컬렉션을 쓴다. 규칙 9: 게터/세터/프로퍼티를 쓰지 않는다. 1. 한 메소드에..
-
[웨비나 후기] 다크웹 기업 보안 위협 대응과 엔드포인트 보안 통합 관리 방안
https://talkit.tv/main/webinars/3394 B2B IT 테크 전문채널토크아이티는 산업사회 IT(Information Technology)를 넘어서 21세기 지식사회에 맞는 IT를 지향하며, 기술과 함께 기술을 사용하는 인간의 가치가 제대로 인정받는 사회를 만드는데 도움이 되고자 합니talkit.tv이번 웨비나는 다크웹에서 발생하는 기업 보안 위협과 이에 대한 대응 방안을 다루었습니다. 서현민 이사는 다크웹 동향과 정보 탈취형 악성코드인 스틸러 악성코드의 위협을 설명하며, 기업의 보안 전략을 제시했습니다. 김도현 이사는 통합 엔드포인트 관리(XEM) 사례를 통해 보안과 IT 운영의 중요성을 강조했습니다. 특히, 엔드포인트 보안 통합 관리의 필요성과 성공적인 사례를 소개하며, 기업 보..
-
[전시 관람] AI EXPO KOREA 2024 국제인공지능대전 관람 후기
2024년 5월 1일부터 3일까지 코엑스에서 AI EXPO KOREA 라는 인공지능 엑스포가 열렸다. 학교에서 사전등록을 통해 표도 무료로 얻게 되어 친구들과 함께 구경갔다. 입구에서부터 최신 인공지능 기술을 소개하는 다양한 부스들이 눈에 띄었다. 각 부스마다 흥미로운 주제들이 많아서 어디서부터 둘러봐야 할지 고민될 정도였다. 가장 먼저 눈에 들어온 것은 자율주행차 시뮬레이터였다. 몇몇 회사들이 자신들의 자율주행 기술을 시연하고 있었는데, 실제 도로 상황을 그대로 재현한 시뮬레이션을 체험할 수 있었다. 시뮬레이터에 앉아보니 마치 실제로 도로를 주행하는 듯한 기분이 들었다. AI가 어떻게 실시간으로 도로 상황을 분석하고 판단하는지 직접 체험해보니 정말 놀라웠다. 다음으로 방문한 곳은 의료 AI 기술을 소개..
-
[강연] 한국 IT 산업과 직장 이야기
교내 산업체 특강 수업에 한빛앤의 김수보님께서 오셔서 강연을 진행하셨다. 국내 약 2500만명의 직업 종사자 중 약 35만명, 대략 1%에 해당하는 사람들이 IT 산업에 종사하고 있다. 그 중 50-60%가 개발자로 종사한다. 다양한 SW 산업의 종류는 크게 패키지SW, IT서비스, 게임SW, 인터넷SW로 나눌 수 있다. 그 중 패키지 SW와 IT 서비스 계열의 종사자수가 가장 많다. 보통 이 회사들은 B2B 회사들이다.B2B는 안정적이다. 하지만 개발을 잘한다고 돈을 더 잘 벌지는 않는다. 반면, B2C는 반대라고 할 수 있다. 잘하면 많이 벌지만, 잘 되지 않을 가능성도 있다. 강연자님께서는 자기 경험 상 어디 한 곳으로 가라고 하시지는 않으시고 둘다 괜찮다고 하신다. 롯데 정보 통신은 개발은 안 하..
-
[JPA] JPA에서 update 하기
1. Update 쿼리를 이용한 엔티티 수정업데이트 쿼리를 이용해서 엔티티를 수정하는 방법은 간단해보입니다. 우선 Member 엔티티와 JPA 레포지토리를 생성합니다.@Entity@Getter@Setterpublic class Member { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "MEMBER_ID") private Long id; private String username; private String nickname; ... }public interface MemberRepository extends JpaRepository { @Modifying @Q..
-
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 이 빌..
-
가비아 도메인 구매 및 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..
-
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] 연관관계 매핑
N:1 관계 가장 많이 사용하는 연관관계이다. N:1 자체로도 많이 사용하지만, M:N 관계를 매핑할 때 사용하기도 한다. public class Member { @Id @GeneratedValue private Long id; private String name; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "team_id") private Team team; } @ManyToOne: 말 그대로 N:1을 나타내는 어노테이션이다. @JoinColumn: Team을 참조할 Foreign Key의 이름을 정해준다. FetchType.LAZY: DB에서 데이터를 조회할 때 Team 객체까지 한번에 가져올지, 빈 Proxy만 가져왔다가 필요할 때 조회할지 선택..
-
[JPA] 엔티티 매핑
이번 포스팅에서는 JPA가 엔티티 객체와 테이블을 어떻게 매핑하는지 알아보겠습니다. 객체와 테이블 매핑 (@Entity, @Table) @Entity @Entity 라는 애노테이션이 붙은 클래스는 JPA가 관리하는 엔티티를 뜻합니다. JPA를 사용해서 테이블과 매핑할 클래스는 필수로 붙여줘야 합니다. 엔티티를 선언할 때는 몇 가지 주의사항이 있는데요. 기본 생성자가 필수입니다. (기본 생성자란, 파라미터가 없는 public 또는 protected 생성자를 뜻합니다.) final 클래스, enum, interface, inner 클래스는 사용이 불가합니다. DB에 저장할 필드에 final 키워드를 사용할 수 없습니다. @Table 엔티티와 매핑할 테이블을 지정한다는 애노테이션이며, name 이라는 속성을 ..
-
[JPA] 영속성 컨텍스트
영속성 컨텍스트란? ORM은 객체와 데이터베이스 테이블의 매핑을 통해 엔티티 클래스 객체 안에 포함된 정보를 테이블에 저장하는 기술이다. JPA에서는 테이블과 매핑되는 엔티티 객체 정보를 영속성 컨텍스트를 통해 애플리케이션 내에서 오래 지속되도록 보관한다. 영속성 컨텍스트는 JPA를 이해하는데 가장 중요한 용어이다. 영속성 컨텍스트는 논리적인 개념 눈에 보이지 않음 엔티티 매니저를 통해 영속성 컨텍스트에 접근 엔티티의 생명주기 비영속(new/transient) : 영속성 컨텍스트와 전혀 관계가 없는 새로운 상태 영속(managed) : 영속성 컨텍스트에 관리되는 상태 준영속(detached) : 영속성 컨텍스트에 저장되었다가 분리된 상태 삭제(remove) : 삭제된 상태 비영속 객체를 생성한 상태 Me..
Recent
-
[웨비나 후기] 다크웹 기업 보안 위협 대응과 엔드포인트 보안 통합 관리 방안
https://talkit.tv/main/webinars/3394 B2B IT 테크 전문채널토크아이티는 산업사회 IT(Information Technology)를 넘어서 21세기 지식사회에 맞는 IT를 지향하며, 기술과 함께 기술을 사용하는 인간의 가치가 제대로 인정받는 사회를 만드는데 도움이 되고자 합니talkit.tv이번 웨비나는 다크웹에서 발생하는 기업 보안 위협과 이에 대한 대응 방안을 다루었습니다. 서현민 이사는 다크웹 동향과 정보 탈취형 악성코드인 스틸러 악성코드의 위협을 설명하며, 기업의 보안 전략을 제시했습니다. 김도현 이사는 통합 엔드포인트 관리(XEM) 사례를 통해 보안과 IT 운영의 중요성을 강조했습니다. 특히, 엔드포인트 보안 통합 관리의 필요성과 성공적인 사례를 소개하며, 기업 보..
2024.06.03 13:09 -
[전시 관람] AI EXPO KOREA 2024 국제인공지능대전 관람 후기
2024년 5월 1일부터 3일까지 코엑스에서 AI EXPO KOREA 라는 인공지능 엑스포가 열렸다. 학교에서 사전등록을 통해 표도 무료로 얻게 되어 친구들과 함께 구경갔다. 입구에서부터 최신 인공지능 기술을 소개하는 다양한 부스들이 눈에 띄었다. 각 부스마다 흥미로운 주제들이 많아서 어디서부터 둘러봐야 할지 고민될 정도였다. 가장 먼저 눈에 들어온 것은 자율주행차 시뮬레이터였다. 몇몇 회사들이 자신들의 자율주행 기술을 시연하고 있었는데, 실제 도로 상황을 그대로 재현한 시뮬레이션을 체험할 수 있었다. 시뮬레이터에 앉아보니 마치 실제로 도로를 주행하는 듯한 기분이 들었다. AI가 어떻게 실시간으로 도로 상황을 분석하고 판단하는지 직접 체험해보니 정말 놀라웠다. 다음으로 방문한 곳은 의료 AI 기술을 소개..
2024.06.03 12:55 -
[강연] 한국 IT 산업과 직장 이야기
교내 산업체 특강 수업에 한빛앤의 김수보님께서 오셔서 강연을 진행하셨다. 국내 약 2500만명의 직업 종사자 중 약 35만명, 대략 1%에 해당하는 사람들이 IT 산업에 종사하고 있다. 그 중 50-60%가 개발자로 종사한다. 다양한 SW 산업의 종류는 크게 패키지SW, IT서비스, 게임SW, 인터넷SW로 나눌 수 있다. 그 중 패키지 SW와 IT 서비스 계열의 종사자수가 가장 많다. 보통 이 회사들은 B2B 회사들이다.B2B는 안정적이다. 하지만 개발을 잘한다고 돈을 더 잘 벌지는 않는다. 반면, B2C는 반대라고 할 수 있다. 잘하면 많이 벌지만, 잘 되지 않을 가능성도 있다. 강연자님께서는 자기 경험 상 어디 한 곳으로 가라고 하시지는 않으시고 둘다 괜찮다고 하신다. 롯데 정보 통신은 개발은 안 하..
2024.05.23 17:55 -
[JPA] JPA에서 update 하기
1. Update 쿼리를 이용한 엔티티 수정업데이트 쿼리를 이용해서 엔티티를 수정하는 방법은 간단해보입니다. 우선 Member 엔티티와 JPA 레포지토리를 생성합니다.@Entity@Getter@Setterpublic class Member { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "MEMBER_ID") private Long id; private String username; private String nickname; ... }public interface MemberRepository extends JpaRepository { @Modifying @Q..
2024.05.03 15:41 -
[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