📘 기초 지식
-
OAuth 2란? 특정 애플리케이션(Client)에서 사용자의 인증을 직접 처리하는 것이 아니라 사용자 정보를 보유하고 있는 신뢰할 만한 써드 파티 애플리케이션(GitHub, Google, Facebook 등)에서 사용자의 인증을 대신 처리해 주고 Resource에 대한 자격 증명용 토큰을 발급한 후, Client가 해당 토큰을 이용해 써드 파티 애플리케이션의 서비스를 사용하게 해주는 방식입니다. - 동작 방식 Resource Owner가 Client 역할을 하는 웹 애플리케이션에게 OAuth2 인증을 요청 Client는 Resource Owner가 Resource Owner의 계정 정보를 관리하고 있는 써드 파티 애플리케이션의 로그인 페이지로 리다이렉트 Resource Owner는 로그인 인증 진행하고..
[Spring Security] OAuth2 인증OAuth 2란? 특정 애플리케이션(Client)에서 사용자의 인증을 직접 처리하는 것이 아니라 사용자 정보를 보유하고 있는 신뢰할 만한 써드 파티 애플리케이션(GitHub, Google, Facebook 등)에서 사용자의 인증을 대신 처리해 주고 Resource에 대한 자격 증명용 토큰을 발급한 후, Client가 해당 토큰을 이용해 써드 파티 애플리케이션의 서비스를 사용하게 해주는 방식입니다. - 동작 방식 Resource Owner가 Client 역할을 하는 웹 애플리케이션에게 OAuth2 인증을 요청 Client는 Resource Owner가 Resource Owner의 계정 정보를 관리하고 있는 써드 파티 애플리케이션의 로그인 페이지로 리다이렉트 Resource Owner는 로그인 인증 진행하고..
2023.01.20 -
세션 기반 자격 증명 방식 세션 기반 자격 증명 방식은 서버 측에 인증된 사용자의 정보를 세션 형태로 세션 저장소에 저장 하는 방식이다. 특징 세션은 인증된 사용자 정보를 서버 측 세션 저장소에서 관리한다. 생성된 사용자 세션의 고유 ID인 세션 ID는 클라이언트의 쿠키에 저장되어 request 전송 시, 인증된 사용자인지를 증명하는 수단으로 사용된다. 세션 ID만 클라이언트 쪽에서 사용하므로 상대적으로 적은 네트워크 트래픽을 사용한다. 서버 측에서 세션 정보를 관리하므로 보안성 측면에서 조금 더 유리하다. 서버의 확장성 면에서는 세션 불일치 문제가 발생할 가능성이 높다. 세션 데이터가 많아지면 질수록 서버의 부담이 가중될 수 있다. SSR(Server Side Rendering) 방식의 애플리케이션에 ..
[Spring Security] JWT 인증(Authentication)세션 기반 자격 증명 방식 세션 기반 자격 증명 방식은 서버 측에 인증된 사용자의 정보를 세션 형태로 세션 저장소에 저장 하는 방식이다. 특징 세션은 인증된 사용자 정보를 서버 측 세션 저장소에서 관리한다. 생성된 사용자 세션의 고유 ID인 세션 ID는 클라이언트의 쿠키에 저장되어 request 전송 시, 인증된 사용자인지를 증명하는 수단으로 사용된다. 세션 ID만 클라이언트 쪽에서 사용하므로 상대적으로 적은 네트워크 트래픽을 사용한다. 서버 측에서 세션 정보를 관리하므로 보안성 측면에서 조금 더 유리하다. 서버의 확장성 면에서는 세션 불일치 문제가 발생할 가능성이 높다. 세션 데이터가 많아지면 질수록 서버의 부담이 가중될 수 있다. SSR(Server Side Rendering) 방식의 애플리케이션에 ..
2023.01.18 -
1. JPA란? 2.엔티티 매핑 기본 @Entity 에너테이션과 @Table 에너테이션 사용 - 엔티티와 테이블 간의 매핑 1) 기본키 직접 할당 전략 @Id 에너테이션만 사용하고 직접 emtitymanager persist로 입력해줘야함 2) identity 전략 @Id, @GeneratedValue 에너테이션 사용하고 generationtype을 identity로 데이터베이스에 저장이 완료되면 기본키 할당 3) sequence 전략 @Id, @GeneratedValue 에너테이션 사용하고 generationtype을 sequence로 데이터베이스에 저장이 완료되기 전에 기본키 할당 4) auto 전략 generationtype을 auto로 지정하면 jpa가 데이터베이스의 dialect에 따라서 적절한..
[Spring MVC] JPA 기반 데이터 액세스 계층1. JPA란? 2.엔티티 매핑 기본 @Entity 에너테이션과 @Table 에너테이션 사용 - 엔티티와 테이블 간의 매핑 1) 기본키 직접 할당 전략 @Id 에너테이션만 사용하고 직접 emtitymanager persist로 입력해줘야함 2) identity 전략 @Id, @GeneratedValue 에너테이션 사용하고 generationtype을 identity로 데이터베이스에 저장이 완료되면 기본키 할당 3) sequence 전략 @Id, @GeneratedValue 에너테이션 사용하고 generationtype을 sequence로 데이터베이스에 저장이 완료되기 전에 기본키 할당 4) auto 전략 generationtype을 auto로 지정하면 jpa가 데이터베이스의 dialect에 따라서 적절한..
2022.12.28 -
1. 열거형(enum) 2. 제네릭(Generic) - 다양한 타입의 데이터를 저장하는 객체를 만들려면 각 타입별로 별도의 클래스를 만들어야 하는데 제네릭을 사용하면 단 하나의 클래스만으로 모든 타입의 데이터를 저장할 수 있는 인스턴스를 만들 수 있음 - 타입을 구체적으로 지정하는 것이 아니라, 추후에 지정할 수 있도록 일반화해두는 것 - 작성한 클래스 또는 메서드의 코드가 특정 데이터 타입에 얽매이지 않게 해둔 것 class Basket { private T item; public Basket(T item) { this.item = item; } public T getItem() { return item; } public void setItem(T item) { this.item = item; } } ..
[JAVA]컬렉션1. 열거형(enum) 2. 제네릭(Generic) - 다양한 타입의 데이터를 저장하는 객체를 만들려면 각 타입별로 별도의 클래스를 만들어야 하는데 제네릭을 사용하면 단 하나의 클래스만으로 모든 타입의 데이터를 저장할 수 있는 인스턴스를 만들 수 있음 - 타입을 구체적으로 지정하는 것이 아니라, 추후에 지정할 수 있도록 일반화해두는 것 - 작성한 클래스 또는 메서드의 코드가 특정 데이터 타입에 얽매이지 않게 해둔 것 class Basket { private T item; public Basket(T item) { this.item = item; } public T getItem() { return item; } public void setItem(T item) { this.item = item; } } ..
2022.11.10 -
객체지향 프로그래밍에는 설계를 지탱하는 핵심적인 4가지 기둥(상속, 캡슐화, 다형성, 추상화)이 있다. 1. 상속 - 기존의 클래스를 재활용하여 새로운 클래스를 작성하는 자바의 문법요소 - 간단하게 말은 상속이라고 돼있지만 상속보다는 확장의 의미가 더 정확 - 하위 클래스가 상위 클래스에게 상속 받았을 시 상위 클래스의 매서드를 추가해서 사용할 수 있음 - 단일 상속만 가능, 다중은 불가능 ● 포함 관계 - 상속처럼 클래스를 재사용할 수 있는 방법, 클래스의 멤버로 다른 클래스 타입의 참조변수를 선언하는 것 - 간단하게 설명하면 상속은 클래스 간의 관계가 '~은 ~이다.' 이고 포함은 '~은 ~을 가지고 있다' 이다. ● 메서드 오버라이딩 - 상위 클래스로부터 상속받은 메서드와 동일한 이름의 메서드를 재..
객체지향 프로그래밍 심화객체지향 프로그래밍에는 설계를 지탱하는 핵심적인 4가지 기둥(상속, 캡슐화, 다형성, 추상화)이 있다. 1. 상속 - 기존의 클래스를 재활용하여 새로운 클래스를 작성하는 자바의 문법요소 - 간단하게 말은 상속이라고 돼있지만 상속보다는 확장의 의미가 더 정확 - 하위 클래스가 상위 클래스에게 상속 받았을 시 상위 클래스의 매서드를 추가해서 사용할 수 있음 - 단일 상속만 가능, 다중은 불가능 ● 포함 관계 - 상속처럼 클래스를 재사용할 수 있는 방법, 클래스의 멤버로 다른 클래스 타입의 참조변수를 선언하는 것 - 간단하게 설명하면 상속은 클래스 간의 관계가 '~은 ~이다.' 이고 포함은 '~은 ~을 가지고 있다' 이다. ● 메서드 오버라이딩 - 상위 클래스로부터 상속받은 메서드와 동일한 이름의 메서드를 재..
2022.11.07 -
-객체는 속성과 기능으로 이루어져 있다. 여기서 속성과 기능은 필드와 메서드로 정의할 수 있고 이너클래스와 함께 멤버라고 부른다. -객체는 아래와 같이 생성 가능 클래스명 참조_변수명 = new 생성자(); -생성한 객체는 . 을 이용해서 접근할 수 있는데 아래와 같다. 참조 변수명.필드명 // 필드값 불러오기 참조 변수명.메서드명() // 메서드 호출 - static 키워드는 정적을 나타냄 풀어서 인스턴스는 메서드를 호출할 때 참조 변수명을 이용해서 호출하지만 static은 클래스 이름으로 호출 가능하다. 또한 인스턴스 변수는 고유성을 가져서 변수에 할당된 값 그대로 출력되지만 static 변수는 값을 공유한다. - 메서드는 특정 작업을 수행하는 명령문들의 집합 메서드 시그니처와 메서드 바디로 이루어져..
객체지향 프로그램-객체는 속성과 기능으로 이루어져 있다. 여기서 속성과 기능은 필드와 메서드로 정의할 수 있고 이너클래스와 함께 멤버라고 부른다. -객체는 아래와 같이 생성 가능 클래스명 참조_변수명 = new 생성자(); -생성한 객체는 . 을 이용해서 접근할 수 있는데 아래와 같다. 참조 변수명.필드명 // 필드값 불러오기 참조 변수명.메서드명() // 메서드 호출 - static 키워드는 정적을 나타냄 풀어서 인스턴스는 메서드를 호출할 때 참조 변수명을 이용해서 호출하지만 static은 클래스 이름으로 호출 가능하다. 또한 인스턴스 변수는 고유성을 가져서 변수에 할당된 값 그대로 출력되지만 static 변수는 값을 공유한다. - 메서드는 특정 작업을 수행하는 명령문들의 집합 메서드 시그니처와 메서드 바디로 이루어져..
2022.11.04 -
1. subquery 사용 - where에 들어가는 subquery select user_id, name, email from users u where user_id in ( select user_id from orders o where payment_method = 'kakaopay' ) - select에 들어가는 subquery (select에 있는 하나하나에 대해서 다 subquery 가 실행된다) select c.checkin_id, c.user_id, c.likes, ( select avg(likes) from checkins where user_id = c.user_id ) as avg_likes_user from checkins c - from절에 들어가는 subquery select c2...
SQL 기록일지 4주차1. subquery 사용 - where에 들어가는 subquery select user_id, name, email from users u where user_id in ( select user_id from orders o where payment_method = 'kakaopay' ) - select에 들어가는 subquery (select에 있는 하나하나에 대해서 다 subquery 가 실행된다) select c.checkin_id, c.user_id, c.likes, ( select avg(likes) from checkins where user_id = c.user_id ) as avg_likes_user from checkins c - from절에 들어가는 subquery select c2...
2022.09.14 -
수업 목표 - 그래프 그리기 - 주가 백테스팅 하기 1. 라이브러리 설치 !pip install yfinance pandas-datareader finance-datareader 라이브러리 가져오기 from pandas_datareader import data as pdr import yfinance as yf yf.pdr_override() import numpy as np import pandas as pd import FinanceDataReader as fdr df = fdr.DataReader('005930','2018') 2. 두 주식의 그래프 동시에 그리기 df_1 = fdr.DataReader('005930','2018') df_2 = fdr.DataReader('066570','2018'..
파이썬 코딩 개발일지 4주차수업 목표 - 그래프 그리기 - 주가 백테스팅 하기 1. 라이브러리 설치 !pip install yfinance pandas-datareader finance-datareader 라이브러리 가져오기 from pandas_datareader import data as pdr import yfinance as yf yf.pdr_override() import numpy as np import pandas as pd import FinanceDataReader as fdr df = fdr.DataReader('005930','2018') 2. 두 주식의 그래프 동시에 그리기 df_1 = fdr.DataReader('005930','2018') df_2 = fdr.DataReader('066570','2018'..
2022.09.13