전체 글
-
트랜잭션Backend/DB 2023. 9. 30. 16:00
http://wiki.hash.kr/index.php/트랜잭션 트랜잭션 - 해시넷 트랜잭션(transaction)이란 "쪼갤 수 없는 업무 처리의 최소 단위"를 말한다. 거래내역이라고도 한다. '트렌젝션'이 아니라 '트랜잭션'이 올바른 표기법이다. 영어로 간략히 Tx라고 표기하기도 한다. wiki.hash.kr 더 이상 쪼갤 수 없는 업무 처리의 최소 단위. 거래내역이라고도 한다. 데이터베이스의 부정합을 방지하고 완전성을 유지하는 목적으로 사용된다. 트랜잭션이 정상적으로 처리되면 커밋 Commit하고 그렇지 않으면 롤백Rollback되어 DB는 트랜잭션 수행 이전의 상태를 유지하게 된다. ex) A가 B에게 1000원 송금 A의 계죄는 1000원이 감소하고, B의 계좌는 1000원이 증가해야 함. → 어..
-
class method vs. static methodToday_I_Learned/Python 2023. 9. 26. 11:23
공통점 별도 인스턴스 생성없이 클래스를 대상으로 클래스 이름 뒤에 바로 '. ' 오퍼레이터를 붙여서 호출 가능 ex) class ExampleClass: class_name = "ExampleClass" @classmethod def example_class_method(cls): print(f"{self.class_name}: This is classmethod.") @staticmethod def example_static_method(): print(f"{self.class_name}: This is staticmethod.") ExampleClass.example_class_method() >>> ExampleClass: This is classmethod. ExampleCalss.example_..
-
[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__가 있다는 것은 그 객체가 반복 가능하다는 것이지 반드시 이터레이터라는 의미는..