전체 글
-
[vue 3] watch 와 computedvue 2024. 5. 25. 12:57
// watch data: { firstName: 'Vue', lastName: 'js', fullName: 'Vue js' }, watch: { firstName: function (val) { this.fullName = val + ' ' + this.lastName }, lastName: function (val) { this.fullName = this.firstName + ' ' + val } }// computed data: { firstName: 'Vue', lastName: 'js' }, computed: { fullName: function () { return this.firstName + ' ..
-
[Spring Security] OAuth2.0 + Vue.js 소셜 로그인 구현, SPA (OAuth 2.0 / 구글 로그인 / 카카오 로그인 / 네이버 로그인)spring security 2024. 5. 9. 12:59
Spring Boot + Vue.js를 사용하여 소셜 로그인을 구현하려 한다.Rest api를 통해 통신한다. 로그인 화면 (Vue.js) mdi-google 구글 계정으로 로그인 카카오 계정으로 로그인 네이버 계정으로 로그인 oauth2 로그인 요청을 보내고 이후 응답으로 보내질 redirect_uri를 같이 써준다. http://localhost:9090/oauth2/redirect로 redirect 되면 access token과 refresh token을 저장해준다. store.jsimport Vuex from 'vuex'con..
-
[Spring security] CORS 설정하기spring security 2024. 4. 3. 00:08
CORS(Cross-Origin Resource Sharing) 란? 더보기 기본적으로 브라우저는 사이트가 로드된 도메인 이외의 도메인에 대한 요청을 허용하지 않는다. CORS는 다른 출처 간의 자원을 공유할 수 있도록하는 정책이다. CORS 설정하기 1. @CrossOrigin 어노테이션 사용하기 @RestController public class Controller { @PostMapping("/test") @CrossOrigin("http://localhost:8080") public String test() { return "Test"; } } 2. @CorsConfigurer로 Cors 적용 @Configuration public class ProjectConfig { @Bean public S..
-
JPA 기본키 생성 전략 @GeneratedValuespring boot 2024. 3. 25. 21:15
GenerationType.IDENTITY IDENTITY는 기본키 생성을 db에 맡기는 방식입니다. MySQL, PostgreSQL 등에서 사용합니다. 값을 insert할때 id값을 AUTO_INCREMENT해준다. id값을 따로 설정하지 않은 경우 id값은 db에 들어간 이후에 알수있다. GenerationType.SEQUENCE SEQUENCE는 규칙에 따라 값이 일정하게 증가하는 방식입니다. Oracle, PostgreSQL 등에서 사용합니다. 예) @Entity @SequenceGenerator( name="users_seq", // 식별자 이름 sequenceName="users_seq", // 시퀀스 이름 initialValue=100, // 시작 수 allocationSize=1 // 호..
-
Docker란?docker 2024. 2. 28. 11:57
Docker란? Docker는 오픈소스 가상화 플랫폼이다. Docker는 소프트웨어를 컨테이너 단위로 패키징한다. 컨테이너에는 라이브러리, 시스템 도구, 코드, 런타임 등 소프트웨어를 실행하는 데 필요한 모든 것이 포함되어 있다. Docker는 컨테이너를 구축, 배포, 복사, 이동할 수 있게 해주어 애플리케이션을 클라우드 환경에 최적화하도록 지원해준다. 도커 이미지와 컨테이너 도커 이미지 - 도커에서 서비스 운영에 필요한 서버 프로그램, 소스코드 및 라이브러리, 컴파일 된 실행 파일을 묶는 형태로 읽기 전용 템플릿이다. 즉, 컨테이너의 설계도라고 할 수 있다. 도커 컨테이너 - 이미지를 실행한 상태로, 그 프로그램 자체를 패키징하여 격리된 공간에서 프로세스를 동작시키는 기술이다. 즉, 실행 중인 이미지 ..
-
[Spring boot] JPA 정렬과 페이징spring boot 2024. 2. 24. 23:17
JPA 정렬 방법 1. List findAllByOrderByAgeDesc(); 메소드 이름에 OrderBy + (정렬할 필드 이름/ 첫 글자 대문자로) + Asc or Desc (Asc = 오름차순, Desc = 내림차순) 방법 2. List findAll(Sort sort); // 사용 방법 List userEntities = userRepository.findAll(Sort.by(Sort.Order.asc("age"))); JPA 페이징 List findByAgeGreaterThan(Integer age, Pageable pageable); // 사용 방법 List userEntities = userRepository.findByAgeGreaterThan(10, PageRequest.of(1, 10..
-
[C++] 동적할당에 대해 알아보자c++ 2024. 2. 20. 22:36
동적할당이란? 데이터 영역과 스택 영역에 할당되는 메모리의 크기는 컴파일 타임에 미리 결정된다. 하지만 힙 영역의 경우에는 프로그램 실행 도중에(런 타임) 결정된다. 런 타임 도중에 메모리 할당 받는 것을 동적할당 이라고 한다. 예제 #include using namespace std; int main() { int n; cout > n; int* arr = nullptr; if (n == 10) { arr = new int[n]; } if (arr != nullptr) { delete [] arr; } return 0; } 위 예제를 보면 n에 10라는 값이 들어가면 런 타임 도중에 메모리를 할당하고 10이 나오지 않으면 메모리를 할당하지도 않는다. 이처럼 C/C++은 메모리 관리에 유리해서 메모리 관..
-
[Spring boot] JUnit에 대해 알아보자spring boot 2024. 2. 17. 22:16
JUnit이란? Java의 대표적인 Test Framework 어노테이션 기반 테스트 지원 Assert를 사용하여 기대값에 대해 수행 결과를 확인할 수 있음 F.I.R.S.T 원칙 Fast: 테스트 코드는 빠르게 실행되어야 한다. Independent: 독립적으로 실행이 될 수 있어야 한다. Repeatable: 매번 같은 결과가 나와야 한다. Self-Validating: 그 자체로 실행하여 결과를 확인 할 수 있어야 한다. Timely: 코드 완성되기 전부터 테스트가 가능해야 한다. package com.example.demo.test; import org.junit.jupiter.api.*; public class TestLifeCycle { @BeforeAll static void beforeAl..