본문 바로가기

분류 전체보기

(79)
Java의 String과 interning, 플라이웨이트 패턴 JAVA의 String String의 두 가지 생성 방법과 그 차이에 대해 알아보고 플라이 웨이트 패턴에 대해 알아본다. String을 생성하는 방법은 대표적으로 두 가지가 존재한다. ""을 통해 리터럴로 생성할 수 있고 new String을 통해 생성할 수 있다. @Test public void test() throws Exception { String str1 = "Hello"; String str2 = "Hello"; String str3 = new String("Hello"); assertThat(str1).isSameAs(str2); // 서로 다르다! assertThat(str1).isNotSameAs(str3); } 위와 같이 테스트를 작성해보면 마지막 테스트 코드는 isNotSameAs이나..
Vue.js 캘린더 UI 구현, Event 추가 Dialog 구현 Vuetify Calendar를 이용하여 캘린더를 구현해보고 캘린더에 Evnet를 등록하여 Event가 캘린더에 보일 수 있도록 구현해볼 것이다. v-calendar v-calendar를 사용하면 간단하게 캘린더 틀을 구현할 수 있다. 필요한 부분을 하나씩 커스텀하면 된다. v-calendar를 사용하면 이러한 형태로 캘린더가 보인다. 현재 테마를 dark 모드로 진행하고 있기 때문에 캘린더 테마도 dark로 하였다. v-calendar에는 start와 type이라는 props가 존재한다. start의 값이 2020-01-01라면 캘린더는 1월의 캘린더를 보여주게 된다. type은 여러 가지 존재하지만 대표적으로 month, week. day가 존재하는데 type에 따라 캘린더가 변형된다. 예를 들어 s..
Vue.js GitHub와 Netlify에 배포하기 Vue.js 프로젝트를 Netlify와 Github에 배포해보겠습니다. Netlify로 배포할 경우 Git Repository만 등록한다면 Push만으로 간단하게 배포할 수 있습니다. Github의 경우 따로 Build 된 파일을 저장소에 올려 배포할 수 있습니다. 먼저 배포를 위해 프로젝트와 Git 저장소를 만들어 보겠습니다. 프로젝트와 저장소 만들기 Vue CLI를 이용하여 Vue 프로젝트를 하나 만들겠습니다. 그리고 GitHub Repository를 만듭니다. Vue 프로젝트를 만들면 따로 git이 초기화되어 있기 때문에 생성한 Repository의 remote 설정 후 Repository에 Push 합니다. 정상적으로 Repository에 Push 된 것을 확인할 수 있습니다. 먼저 Netlify..
JPA 엔티티 매핑: DB 스키마 자동 생성, 필드와 칼럼 매핑, 기본키 매핑 엔티티 매핑 엔티티 매핑 객체와 테이블 매핑: @Entity, @Table 필드와 칼럼 매핑: @Column 기본키 매핑: @Id 연관관계 매핑: @ManyToOne, @JoinColumn @Entity(name="text") JPA에서 사용할 엔티티 이름을 지정한다. 기본값으로 Class 이름을 사용한다. @Table 엔티티와 매핑할 테이블을 지정한다. 속성 기능 기본값 name 매핑할 테이블 이름 엔티티 이름을 사용 catalog 데이터베이스 catalog 매핑 schema 데이터베이스 schema 매핑 uniqueConstraints(DDL) DDL 생성 시 유니크 제약 조건 생성 @Entity @Table(name = "BOX") // 테이블이 BOX로 만들어 진다. public class Ite..
JPA와 JPA 영속성 컨텍스트, 플러시와 준영속 상태 JPA Java Persistence API로 자바 진영의 ORM 기술 표준이다. 객체와 관계형 데이터베이스 간의 패러다임의 불일치를 해결해준다. ORM Object-relational mapping의 약자로 말 그대로 객체 관계 매핑 기술이다. 객체와 관계형 DB를 중간에서 매핑해주는 기술이다. JPA 동작 JPA는 JAVA Application과 JDBC 사이에서 동작하여 Entity 분석, SQL 생성, 패러다임 불일치 등의 작업을 수행해준다. JDBC 자바에서 데이터베이스에 접속할 수 있도록 하는 API이다. JPA를 사용하면 객체 중심적인 개발이 가능하고, 생산성, 유지보수 측면에서도 유리하며 패러다임의 불일치를 해결해준다. 영속성 관리 영속성 콘텍스트 JPA에서 가장 중요한 2가지는 ORM과 ..
5장 웹 서버 HTTP 완벽 가이드(웹은 어떻게 동작하는가)를 참조하여 작성하였습니다. 5장 웹 서버 1. 여러 종류의 소프트웨어 및 하드웨어 웹 서버에 대해 조사 2.HTTP 통신을 진단해주는 간단한 웹 서버를 Perl(펄)로 작성 3. 어떻게 웹 서버가 HTTP 트랜잭션을 처리하는지 단계별로 설명 5.1 다채로운 웹서버 웹 서버는 HTTP 요청을 처리하고 응답을 제공한다. '웹 서버'라는 용어는 웹 서버 소프트웨어와 웹페이지 제공에 특화된 장비(컴퓨터 같이) 모두를 가리킨다. 5.1.1 웹 서버 구현 웹 서버는 HTTP 및 그와 관련된 TCP 처리를 구현한 것. 웹 서버는 HTTP 프로토콜을 구현하고, 웹 리소스를 관리하고, 웹 서버 관리 기능을 제공한다. 5.2 간단한 펄 웹 서버 완벽한 기능을 갖춘 HTTP 서..
SpringBoot와 Vue.js를 이용한 회원가입, 로그인 기능, 권한별 라우터 설정 이전 게시글들에서 제작하였던 SpringBoot를 이용한 Auth2.0 서버와 Vue 로그인, 회원가입 화면을 통해 로그인, 회원가입 기능을 구현하고 라우터 내비게이션 가드를 이용해 권한별 라우터 설정을 하는 게시글입니다. 회원가입 기능 우선 UI framework를 Vuetify로 변경하였다. 회원가입 입력 검증 Resister.vue의 template 코드이다. 빨간 밑줄의 :rules를 통해 입력 검증이 가능하다. rules은 전달 인자(Argument)로 현재 입력 폼의 text를 넘겨준다. 그 값을 이용하여 아래와 같이 검증을 할 수 있다. 왼쪽 코드는 vuex의 state 코드이다. 각 검증을 ||(OR)을 통해 한 것을 알 수 있는데 즉 첫 번째 코드가 참이면 true가 되므로 뒤의 요구사항..
SpringSecurity OAuth CORS 문제 CORS Cross-Origin Resource Sharing의 약자로 추가 HTTP Header를 사용하여 다른 오리진(도메인이나 포트번호가 다른 서버)의 자원에 접근권한을 부여하는 메커니즘이다. 보통 다른 오리진에게 리소스를 요청할 때 cross-origin Http request에 의해 요청이 실행된다. 하나 이 요청은 동일 출처 정책(Same-origin policy)에 의해 요청이 차단된다. 동일 출처 정책 만약 응답 리소스에 올바른 CORS 헤더가 포함되어 있지 않으면 다른 오리진에 요청한 리소스를 브라우저에서 보 안목 적으로 차단하는 것이다 스프링 부트와 뷰를 통해 개발 중인 프로젝트를 통해 이 문제를 확인해보자. 서버 측 코드 @RequiredArgsConstructor @Configura..