전체 글
-
[Clone-Coding][배프의 오지랖] onlineshop - AWS 관련Backend/Projects_report 2023. 9. 23. 12:24
6.3 데이터베이스 설정하기 2023.09.06 AWS RDS 이용하여 MySQL Server 구축 (배프랖, 6.3 내용) RDS: 관계형 데이터베이스 진행 과정) parameter 그룹 생성 데이터베이스 인스턴스 생성: “퍼블릭 액세스: 예” → 몇 분 소요됨. 인스턴스가 생성되는 동안 보안 규칙 생성: 인바운드에 모든 IP 대역(0.0.0.0/0)으로 MYSQL 접근 허용하는 규칙 추가 문제1) 배프랖 내용대로 데이터베이스 인스턴스 생성 후 pycharm에서 python manage.py migrate 하였으나 ⚠️ django.db.utils.OperationalError: (2003, "Can't connect to MySQL server on 'onlineshop-db.cuqmz5shveri...
-
읽기 좋은 코드가 좋은 코드다. - 10 상관없는 하위문제 추출하기Book 2023. 9. 23. 10:22
일반적인 목적의 코드 프로그램을 이루는 코드 중 일반적인 목적을 갖는 코드는 따로 (함수든 클래스로든) 분리하라. 분리된 코드는 상위 수준의 목적(=해당 코드를 호출한 프로그램은 목적)은 몰라도 된다. 순수 유틸리티 코드 일반적인 목적을 갖는 코드를 모아 유틸리티 코드를 만들 수도 있다. → 나중에 다른 프로그램에서 얼마든지 재사용 가능 특정한 프로그램을 위한 기능 꼭 일반적인 목적이 아니라도 상위 수준의 목적을 굳이 알 필요 없는 코드라면 분리하라. 분리된 코드의 위치는 중요X 분리되었다는 것이 중요☆ 기존의 인터페이스 수정 기존에 제공되던 인터페이스를 필요에 맞추어 분리하거나 수정하라. 분리 및 수정이 불가능하다면 해당 인터페이스를 감싸는 wrapper 코드를 만드는 방법도 있음. 지나친 분리 지양 ..
-
class MetaBackend/Django 2023. 9. 18. 18:32
class Meta django Model에 metadata를 추가하는 기능을 제공. (metadata: 데이터를 설명하는 데이터, 또는 데이터를 목적에 따라 재구성한 데이터) 사용자가 직접 추가하는 Model의 속성(필드)은 매 번 바뀔 수밖에 없다. 그러나 Model의 속성들을 '정렬(ordering)' 하거나, 'DB Table의 이름(db_table)'을 짓거나 어떤 속성의 '복수형 표현(verbose_name, verbose_name_plural)'을 지정하거나 하는 등 일부 사용법들은 대부분의 Model에서 필요하다. 이처럼 Model을 관리할 때 공통적으로 필요한 사용법들의 구체적인 방식을 지정하도록 해주는 것이 class Meta이다. (..라고 나는 이해했다.) 자주 쓰이는 Meta op..
-
django 입문(5) Model 3) DB에 Table 생성Backend/Django 2023. 9. 17. 23:50
Model 설계 및 구성이 완료되면 마이그레이션(Migration)을 해줘야 구현한 모델대로 Database Table이 생성된다. migrate : 장고 프로젝트에 존재하는 App들(ex. models, admin, auth, sessions 등…)이 필요로 하는 데이터베이스 테이블들을 생성.(각 App의 models.py 에 정의된 모델 내용대로 생성됨.) 프로젝트 생성 후 DB 작업이 필요하다면 최초 1 번은 해줘야 할 필요가 있음. python manage.py migrate {app} (작업파일번호) makemigrations: 모델이 신규로 생성되거나 변경되었을 때(즉, 모델을 수정했을 때에도 makemigrations 후 migrate을 실행해야함.), migrate 전에 수행해야 하는 명령..
-
django 입문(5) Model 2) 추가 기능Backend/Django 2023. 9. 17. 23:48
filter() 공식 문서: https://docs.djangoproject.com/en/4.0/topics/db/queries/ django.db.models.Model.objects 의 멤버 함수. parameter로 전달되는 조건을 충족하는 Object를 담고 있는 QuerySet 을 반환한다. 만약 조건을 충족하지 못하면 빈 QuerySet을 반환한다. ( Foreign Key로 다른 model 을 사용할 때 사용할 수 있는 속성 Model A와 B가 있을 때 Model B의 Foreign Key가 A 객체를 가리키면, Model A 객체에서는 a.b_set(a는 객체명, b Model B의 이름을 소문자로 바꾼 것.) 의 사용이 가능하다. 즉 Model A 객체에서 자신을 Foreign Key ..
-
이터레이터 iteratorToday_I_Learned/Python 2023. 9. 17. 11:29
요소(element)를 하나씩 차례대로 꺼낼 수 있는 객체. 이터레이터를 사용하는 이유는 꺼내올 요소 전체를 미리 생성하지 않고, 필요한 값만 하나씩 생성하여 메모리 사용을 줄이기 위함이다. = 지연 평가 방식 lazy evaluation 반복 가능한 객체만이 이터레이터로 변환될 수 있다. 반복 가능한(iterable) 객체: 요소가 여러 개이고 한 번에 요소를 하나씩 꺼낼 수 있는 객체. for 문과 같은 반복 구문에 적 용할 수 있는 리스트 같은 객체. (iterable object ≠ iterator) 객체의 반복 가능 여부는 __dir__(객체) 로 조회하여 ‘__iter__’가 존재하는지 확인하면 된다. __iter__가 있다는 것은 그 객체가 반복 가능하다는 것이지 반드시 이터레이터라는 의미는..
-
읽기 좋은 코드가 좋은 코드다. - 09 변수와 가독성Book 2023. 9. 17. 07:17
Part 2. 루프와 논리를 단순화하기 2023.09.15 09 변수와 가독성 변수 사용 줄이기 선언된 변수가 많을수록 코드를 읽는 사람이 기억해야 할 내용이 늘어남. 단순히 중간 계산 값을 저장하는 변수, 흐름 제어 변수는 사용 지양. 계산 결과는 바로 리턴할 것. 설명 변수, 요약 변수 사용에 너무 치중하여 변수를 남발하지 말 것. 멤버 변수 or 메서드의 모양 자체로 설명이 충분할 경우 굳이 설명 변수로 치환할 필요 없음. ex) datetime.datetime.now(): 현재 시간 값이라는 의미 충분. 굳이 now_time 등의 변수로 대입할 필요 없음. 변수의 범위 좁히기 전역 변수 사용 남발 지양(클래스 멤버 면수도 마찬가지): 변수의 사용 범위가 길수록 = 변수가 선언된 줄과 재등장하는 줄..
-
8장. 입출력장치CS/컴퓨터구조 2023. 9. 5. 21:09
※ 입출력장치와 컴퓨터 내부의 정보 전달 방식은 보조기억장치의 정보 전달 방식과 다르지 않음. 따라서 이번 장에서 입출력장치는 보조기억장치까지 포함함. 8-1. 장치 컨트롤러와 장치 드라이버 입출력장치는 종류가 다양하므로 컴퓨터 내부(=CPU)와 정보 전달 방식을 규격화하기 어려움. 이를 위해 장치 컨트롤러와 장치 드라이버를 사용. 장치 컨트롤러 모든 입출력장치는 자신만의 장치 컨트롤러가 있고 이를 통해 CPU와 통신한다. 역할 CPU와 입출력장치 간 데이터 전송 중개를 하기 위한 HW 장치. (규격화되어 있지 않은 다양한 입출력장치의 데이터 전송 방식에 대해 번역 기능을 수행한다고 보면 됨.) 입출력장치의 오류 검출. 버퍼링: 데이터 전송률이 다른 두 장치 사이에서 데이터 전송률을 맞춰주는 동작. (일..