스파르타 코딩클럽 내일배움캠프 AI 웹개발자양성과정 3회차
2022.11.01. 43일차 - TIL
1. AWS TimeAttack
1) IAM : Identity and Access Management, AWS 리소스에 대한 액세스를 안전하게 제어할 수 있는 웹 서비스로 해당 서비스를 사용하여 리소스를 사용하도록 인증(로그인) 및 권한 부여(권한 있음)된 대상을 제어한다.
2) aws Budgets : 사용자 지정 예산을 설정해, 비용이 예산을 초과했을 때 미리 알림을 받을 수 있다.
3) EC2 : Elastic Compute Cloud, AWS에서 제공하는 클라우드 컴퓨팅 서비스로 해당 서비스를 통해 아마존이 각 세계에 구축한 데이터 센터의 서버용 컴퓨터들의 자원을 원격으로 사용할 수 있다.
2. Django 심화 원격 강의
1) 목표
- Django에서 사용할 수 있는 툴들의 종류에 대해 안다
- DRF에서 회원가입 기능을 테스트할 수 있다
- DRF에서 로그인 기능을 테스트할 수 있다
- setUp 메소드를 사용할 수 있다
Class method를 이해한다Static method를 이해한다- DRF에서 게시글 작성을 테스트할 수 있다
Faker를 사용할 수 있다- get absolute url의 사용 목적과 방법을 이해한다
- Dictionary의 items 메소드 사용법을 이해한다
- SerializerMethodField로 연관 테이블의 정보를 가져올 수 있다
2) Class 메서드
가장 기본이 되는 것은 인스턴스(instance) 메서드로 클래스에 아무 데코레이터(decorator) 없이 메서드를 선언하는 것을 말한다. 이때 첫번째 매개변수로 클래스의 인스턴스가 넘어오는데 이것은 관행적으로 self라고 하며 해당 인스턴스 메서드는 이 self를 통해 인스턴스 속성에 접근하거나 다른 인스턴스 메서드를 호출할 수 있다. 더불어 self를 통해 클래스 속성에 접근하거나 클래스 메서드를 호출하는 것도 가능하다.
class Counter:
def __init__(self, value = 0):
self.value = value
def increment(self, delta = 1):
self.value += delta
def decrement(self, delta = 1):
self.value -= delta
>>> counter = Counter()
>>> counter.value
0
>>> counter.increment(3)
>>> counter.value
3
>>> counter.decrement(2)
>>> counter.value
1
위 코드의 __init__, increment, decrement가 모두 인스턴스 메서드에 속한다. 이 메서드들은 반드시 먼저 인스턴스를 생성한 후 해당 인스턴스를 대상으로 호출해야 한다.
클래스(class) 메서드란 @classmethod 데코레이터를 사용해 클래스에 메서드를 선언하는 방식으로 첫번째 매개 변수로 클래스 인스턴스가 아닌 클래스 자체가 넘어오게 된다. 이 첫번째 매개변수의 이름을 관행적으로 cls라고 하며, 클래스 메서드는 이 cls로 클래스 속성에 접근하거나 클래스 메서드를 호출할 수 있다. 하지만, 인스턴스 속성에 접근하거나 다른 인스턴스 메서드 호출이 불가능하다.
class User:
def __init__(self, email, password):
self.email = email
self.password = password
@classmethod
def fromTuple(cls, tup):
return cls(tup[0], tup[1])
@classmethod
def fromDictionary(cls, dic):
return cls(dic["email"], dic["password"])
>>> user = User.fromTuple(("user@test.com", "1234"))
>>> user.email, user.password
('user@test.com', '1234')
>>> user = User.fromDictionary({"email": "user@test.com", "password": "1234"})
>>> user.email, user.password
('user@test.com', '1234')
3) Static 메서드
@staticmethod 데코레이터를 사용해 클래스에 메서드를 선언하는 방식으로 정적 메서드는 다른 메서드들과 달리 첫번째 매개변수가 할당되지 않는다. 따라서 정적 메서드 내에서는 인스턴스/클래스 속성에 접근하거나, 인스턴스/클래스 메서드를 호출하는 것이 불가능하다. 명시적으로 넘긴 인자만 접근 가능하다.
class StringUtils:
@staticmethod
def toCamelcase(text):
words = iter(text.split("_"))
return next(words) + "".join(i.title() for i in words)
@staticmethod
def toSnakecase(text):
letters = ["_" + i.lower() if i.isupper() else i for i in text]
return "".join(letters).lstrip("_")
>>> StringUtils.toCamelcase("last_modified_date")
'lastModifiedDate'
>>> StringUtils.toSnakecase("lastModifiedDate")
'last_modified_date'
위의 두 메서드는 매개 변수로 넘어온 문자열에만 의존하는 순수한 함수이기 때문에 굳이 클래스의 일부로 선언할 필요는 없지만, 이런 비슷한 류의 여러 유틸리티 메서드를 하나의 클래스에 묶어두고 싶을 때 정적 메서드로 선언할 수 있다.
4) Faker
소프트웨어 개발 시 프로토타입을 개발하거나 단위 테스트를 작성할 때 가짜 데이터가 필요할 때가 있다. 이때 쉽고 빠르게 가짜 데이터를 얻을 수 있는 방법이 있으니 바로, Faker 라이브러리를 사용하는 것이다.
패키지 설치
$ pip install Faker
패키지 임포트
from faker import Faker
가짜 데이터 생성
# 가짜 영어 이름
fake = Faker()
fake.name()
# 가짜 한국어 이름
fake = Faker('ko_KR')
fake.name()
# 가짜 영어 주소 생성
fake = Faker()
fake.address()
# 가짜 한국어 주소 생성
fake = Faker('ko_KR')
fake.address()
# 가짜 IP 주소 생성
fake.ipv4_private()
# 가짜 유저 생성
fake.profile()
# 가짜 한 단어 생성
fake.word()
# 가짜 여러 단어 생성
fake.words()
# 가짜 한 문장 생성
fake.sentence()
# 가짜 여러 문장 생성
fake.sentences()
# 가짜 단락 생성
fake.paragraph()
# 가짜 줄글 생성
fake.text()
'개발일지 > AI 캠프' 카테고리의 다른 글
내일배움캠프 AI - 45일차 TIL, 2022.11.03 (0) | 2022.11.04 |
---|---|
내일배움캠프 AI - 44일차 TIL, 2022.11.02 (0) | 2022.11.04 |
내일배움캠프 AI - 42일차 TIL, 2022.10.31 (0) | 2022.11.01 |
내일배움캠프 AI - 9주차 WIL (0) | 2022.10.31 |
내일배움캠프 AI - 40일차 TIL, 2022.10.27 (0) | 2022.10.28 |