전체 글

배운 것에 대한 내 생각을 가지고 정리하자
AWS 인스턴스 생성 기본 설정 위 사진의 순서에 맞게 서버의 이름 / OS / AMI를 선택한다 개인적인 프로젝트라면 3 번 항목을 참고하여 프리티어로 사용해야 과금이 덜 나가게 된다 키 페어 생성 [키 페어(로그인)] 항목의 생성 버튼을 클릭하면 두 번째 사진처럼 팝업이 뜬다 키 페어의 이름과 암호화 유형 파일 형식을 설정하고, 생성을 하면 [다운로드 경로]에 지정한 이름과 확장자로 파일이 생성된다. 해당 파일은 ~/.ssh 경로에 옮겨두자 (만약 해당 폴더가 없으면 생성해서 넣어두자) 그 외 설정 VPC 네트워크 관련 설정과 스토리지 설정은 우선 기본으로 설정하고 [인스턴스 시작] 버튼을 눌러 인스턴스를 생성해준다 생성 확인 처음 생성이 됐을 때, [인스턴스 상태]가 대기중으로 표기되어 있고 이 상..
1. Python 설치 https://www.python.org/ 3.x 버전 사용 2. 가상환경 설정 설정하는 이유 pip로 설치한 패키지들은 파이썬 설치 폴더 안에 저장된다 이는 결국 모든 파이썬 프로젝트에서 사용할 수 있다는 의미 단점은, 프로젝트 이식성이 떨어진다 프로젝트마다 파이썬 버전이 다를 경우 패키지 버전에 대해 호환이 안 될수도 있다 설정 방법 python3 -m venv {myenv} source {myenv}/bin/activate 3. Django 설치 pip3 install django django-admin startproject {projectName} 4. Django 실행 python3 manage.py runserver
· CS/OAuth
JWT 토큰은 Cookie 와 Brower의 Storege 두 가지 저장소에 저장된다. Cookie에 저장된다는 것은 무엇을 의미하는가? 쿠키란 브라우저에서 저장하거나 전송하는 데이터 조각을 말하며, 동일한 요청 시에 저장 된 데이터 조각을 전송하는 것. 서로 다른 요청이 동일한 요청에서 들어왔느지를 판단하는 요소로 동작 Cookie의 세 가지 목적 세션 관리 => 서버에 저장해야할 정보에 대한 관리 개인화 트래킹 => 사용자의 행동을 보관하고 관리 로컬 스토리지 만료 기간이 없는 저장소 브라우저를 종료해도 유지된다. 브라우저에 따라 다르다 보안적인 문제는? 쿠키의 경우 CSRF 공격에 취약 스토리지의 경우 XSS 공격에 취약 둘 다 Trade-Off가 존재한다. 그렇다면 어떻게 써야할까? 상대적으로 보..
· CS/OAuth
JWT 토큰이란? 인터넷 표준 인증 방식 (RFC 7519) JSON 객체를 통해 사용자 정보를 안전하고 쉽게 암호화하는 방법 암호화 서명HMAC 알고리즘 또는RSA 또는 ECDSA를 사용한 공개/비공캐 키 JWT 토큰은 언제 사용되나? 인증 로그인 후에 매 번 HTTP 요청에 대한 오버헤드를 줄이기 위해 사용 이러한 사용 방식을 Single Sign On 이라고 한다 정보 변환 공개/비공개 키 알고리즘을 사용하기 때문에 안전한 정보 변환이 가능하다 JWT 토큰은 어떻게 구성되어있나? dot(.) 을 기준으로 세 부분으로 나뉜다 Header / Payload / Signature xxxx.yyyy.zzzz Header 다음 두 부분으로, Base64Url Encoded로 사용 토큰의 타입 사용 된 암호화..
@DataJpaTest를 어떻게 작성하는지에 대한 기록 JPA 테스트를 위한 의존성 구성 dependencies { implementation("com.fasterxml.jackson.module:jackson-module-kotlin:2.15.2") implementation("org.springframework.boot:spring-boot-starter-data-jpa") implementation("org.jetbrains.kotlin:kotlin-reflect") runtimeOnly("com.mysql:mysql-connector-j") // test container를 위한 의존성 라이브러리 testImplementation("org.springframework.boot:spring-boot..
· 언어/java
특징 인터페이스 기반으로 만들기 때문에 인터페이스가 필수 런타임에 동적으로 프록시 객체를 만들어줌 사용 예시 public static void main(String[] args) { TestInterface ref = (TestInterface) Proxy.newProxyInstance( TestInterface.class.getClassLoader(), new Class[]{TestInterface.class}, handler); ref.call(); } } Proxy.newProxyInstance 동적 프록시 생성 함수 인자 값 프록시 인터페이스의 클래스 로더 인터페이스 클래스에 대한 배열 입력 프록시 동작을 수행하기 위한 InvocationHandler 인터페이스만으로 프록시를 사용할 수 있을까? ..
· 언어/java
서론 JDK 21이 발표됨에 따라 관련 업데이트 내용 정리 JDK 17 이후 최신 LTS 버전 주요 업데이트 내용 Record Patterns Pattern Matching for switch Virture Thread 표준화 Sequenced Collection Unnamed Classes and Instance Main Methods Unnamed Patterns and Variables Record Patterns Record 타입에 대한 destructed가 가능해졌다. 패턴 매칭 // As of Java 16 record Point(int x, int y) {} static void printSum(Object obj) { if (obj instanceof Point p) { int x = p...
[SimpleJpaRepository] findAll() 메서드에서 getQuery 호출을 통해 Query 객체를 가져온다. 이 객체는 Hibernate를 통해 객체를 쿼리 형식으로 만들어주는 역할을 한다. Query 객체를 가져오는 과정에 대해서는 따로 작성하는게 좋을 것 같아서 배제하게 되었다. Query 객체에서 getResultList()를 호출하여 타입에 해당하는 결과 목록을 조회한다. [Query] list() 함수를 통해 가져오게 되는데, 이는 Query를 구현한 AbstractSelectionQuery 클래스에 있다. [AbstractSelectionQuery] 메서드 내부에서 doList()를 조회하는데, 이는 AbstractSelectionQuery를 구현한 QuerySqmImpl 클래..
iron_jin
學而不思則罔(학이불사즉망)