목록분류 전체보기 (94)
혼자 정리
(cf) 퓨어한 장고 프레임워크가 아니라 Django Ninja프레임워크를 사용할 때 적용할 수 있는 내용입니다. Djnago-Ninja 제네릭 스키마를 만들고 싶은 경우 json응답을 다음과 같이 감싸고 싶은 경우가 있다. { "status": "success", "data": ... } data프로퍼티 안에는 장고 모델이나 특정 스키마가 nested된 형태다. 반복되는 코드를 줄이기 위해 다음과 같이 베이스 스키마 클래스를 선언해주었다. from typing import TypeVar, Genric, Optional from pydantic.generics import GenericModel T = TypeVar("T") class ApiResponseSchemaBase(GenericModel, Ge..
강의를 듣고 혼자 메모한 내용입니다. URI(Uniform Resource Identifier) URI, URL, URN의 차이? "A URI can be further classified as a locator, a name, or both."(https://www.ietf.org/rfc/rfc3986.txt) 즉, URI 안에 URL(Locator)과 URN(Name)이 담겨 있음. Uniform : 리소스 식별하는 통일된 방식 Resource: URI로 식별할 수 있는 모든 자원 Identifier: 다른 항목과 구분할 때 필요한 정보 URL - 리소스가 있는 위치를 지정 URN - 리소스에 이름을 부여 URN 이름만 가지고 실제 리소스 찾는 방법이 보편화되지 않아서 잘 안 쓰임 URI와 URL을 ..
강의를 듣고 혼자 메모한 내용입니다. 클라이언트와 서버가 인터넷을 사이에 끼고 어떻게 통신? IP 주소라는 규칙을 통해 통신 클라이언트와 서버가 IP주소를 부여받음 클라이언트가 IP 패킷을 만들어서 보냄 출발 IP 주소, 목적 IP 주소 etc. 포함 인터넷 망에서 목적 주소를 향해 패킷이 전달됨 서버가 패킷을 받아서 요청에 대한 응답을 보냄 IP 프로토콜의 한계 비연결성 비신뢰성 프로그램 구분 한 IP에서 통신하는 앱이 여러 개일 때 어떻게 대응? 그래서 등장한 것이.. TCP / UDP 인터넷 프로토콜 스택의 4계층 애플리케이션 계층 - HTTP, FTP 전송 계층 - TCP, UDP 인터넷 계층 - IP 네트워크 인터페이스 계층 구체적으로 어떻게? 예시) 프로그램이 Hello, world! 메시지 ..
10장 클래스 클래스 구성 자바 컨벤션을 따르는 클래스 구성 순서는 대략 다음과 같다. public static 상수 private static 변수 private instance 변수 public 인스턴스 변수가 필요한 경우는 거의 없다. 공개 함수 비공개 함수는 그 다음에 이런 식의 구성은 앞 장에서 다룬 stepdown rule을 잘 따르기 때문에 신문 기사를 읽는 것처럼 프로그램을 읽을 수 있게 해준다. (stepdown rule : 위에서부터 읽어 내려갈 때 추상화 단계가 한 단계씩 순차적으로 내려가는 것) Encapsulation 캡슐화를 위해 변수나 메서드를 private으로 유지하는 것이 좋긴 하지만 그것이 절대적인 것은 아니다. 테스트를 위해 변수나 함수에 접근해야될 때가 있는데 그 때는..
JavaScript execution contexts (참고한 것) In depth: Microtasks and the JavaScript runtime environment - Web APIs | MDN Understanding Execution Context and Execution Stack in Javascript 자바스크립트의 코드는 하나의 execution context내부에서 작동한다. 다음 세 종류의 코드는 각각 새로운 execution context를 생성한다. global context : 코드의 메인 바디를 실행하기 위해 생성됨. 어떠한 함수 안에 있지 않은 코드를 실행하기 위한 컨텍스트 local context: 각 함수를 실행하기 위한 컨텍스트 eval function execut..
9장 단위 테스트(Unit Test) The Three Laws of TDD 실패하는 유닛 테스트를 쓰기 전까지는 프로덕션 코드를 쓰지 않는다. 실패하는 유닛 테스트를 한 번에 하나 이상 작성하지 않는다. 현재 실패하는 유닛 테스트를 통과하기에 충분한 정도를 넘어서는 프로덕션 코드를 작성하지 않는다. Keeping Tests Clean 빠른 테스트를 위해 보통은 테스트 코드를 클린 코드로 짤 생각을 하지 않는다. 하지만 dirty tests는 없는 것보다 나을 것이 없다. 테스트를 지금만 할 것이 아니기 때문이다. 프로덕션 코드도 지속적으로 수정이 될 것이고 그 때마다 더러운 테스트 코드를 고치는데 걸리는 시간은 계속 늘어나게 된다. 그렇다고 테스트를 하지 않으면 프로덕션 코드 일부분의 수정으로 시스템이..
with statement 8. Compound statements - Python 3.10.0 documentation 다음 코드는 그 아래의 코드와 동일하다. with EXPRESSION as TARGET: SUITE manager = (EXPRESSION) enter = type(manager).__enter__ exit = type(manager).__exit__ value = enter(manager) hit_except = False try: TARGET = value SUITE except: hit_except = True if not exit(manager, *sys.exc_info()): raise finally: if not hit_except: exit(manager, None, No..
7장 오류 처리 오류 처리는 중요하지만 오류 처리 코드 때문에 프로그램의 논리를 파악하기 어려워지는 것이 좋지 못하다. 7장에서는 이를 방지하는 기법들을 살펴 본다. 오류 코드보다 예외를 사용하라 예외 던지는 것을 지원하지 않던 프로그래밍 언어에서는 다음처럼 오류 코드를 통해 오류를 처리해야 했다. public class DeviceController { ... public void sendShutDown() { DeviceHandle handle = getHandle(DEV1); // Check the state of the device if (handle != DeviceHandle.INVALID) { // Save the device status to the record field retrieveD..
frequentist 단일한 $\theta$의 값을 추정하고 이 하나의 추정을 바탕으로 모든 예측 수행 $\theta$의 참값은 고정되어 있지만 알려져 있지 않음 점추정치 $\hat{\theta}$는 랜덤하게 관측되는 데이터셋의 함수이므로 확률 변수다. Bayesian 확률을 어떤 지식의 상태에 대한 확실한 정도(certainty)를 나타내기 위해 사용한다. $\theta$의 모든 가능한 값들을 고려하여 예측을 수행한다. 데이터셋은 직접적으로 관측된 것이므로 non-random이다. (관찰되기 전에도 non-random이라는 뜻이 아님) true parameter $\theta$는 알려져 있지 않을뿐더러 unceratain하므로 확률 변수로 취급된다. 사전적 확률 분포(prior probability d..
이번 단원에서는 지속적으로 객체(object)와 자료구조(data structure)를 언급한다. 이는 단순히 클래스와 구조체를 구분하는 문제가 아니다(둘 다 클래스를 사용해서 표현할 수 있다) 객체는 추상화 뒤로 자료를 숨기고 자료를 다루는 함수만 제공한다. 반면, 자료구조는 자료를 그대로 오픈하여 별다른 함수를 제공하지 않는다. 자료 추상화 2차원 점을 표현하는 예시 두 가지를 통해 자료 구조와 객체를 구분해보자. public class Point { public double x; public double y; } 첫번째 예시는 자료 구조를 그대로 드러낸다. 따라서 사용자가 내부가 어떻게 생겼는지 알고 있어야 제대로 사용할 수 있다. 위 코드에서 public접근자를 private으로 바꾸고 gette..