본문 바로가기

app

(134)
파이썬 백엔드 면접 질문들 (장고+시스템+디비 포함) 동기와 비동기 파이썬 클로져 브라우져에서 서버와 통신 상세히 쿠키와 세션 세션의 저장방식은? 딕셔너리 구현방법 충돌이 일어났을때는? 리스트와 튜플의 차이 @staticMethod, @classMethod, @property 디버깅 툴은 어떤걸 썼는지? 메모리 효율은 어떻게 했는지? 파이썬 메모리 관련 테스트 하는 이유 테스트를 어디까지 진행했는지 테스트관련 목킹 테스트 커버리지를 어떻게 지켰는지 코드리뷰를 어떻게 하는지 사람과의 충돌은? Fib 재귀(손코딩) 메모리 제이션 구현 + LRU 구현 fib에서 10만번째는 어떻게 되는가? 어떻게 수정할수 있는가? 장고 모델 쿼리 (손코딩) Dict 탐색시간, inset 시간 해쉬 충돌 조건 클로져 함수 동작 방식 에어플로우 왜 사용했는지, 어떻게 관리 했는지 ..
python은 GIL때문에 스레드가 효율적이지 않으면서 왜 multithreading 모듈이 있을까? 멀티스레딩 하위 문제 중 하나의 다른 작업이 완료되는 동안 기다려야 하는 경우 싱글 스레드보다 멀티 스레딩이 좋다. (Ex : I/O 과중한 작업) The interpreter will reacquire this lock for every 100 bytecodes of Python instructions and around (potentially) blocking I/O operations. 같은 프로세스 안에서 동작하므로 자원 공유가 가능 (queue, pickle 사용) 멀티 프로세스 하위 문제가 동시에 발생하는 경우 하지만 코어수보다 많은 수를 사용하면 성능 저하가 올 수 있다. (https://stackoverflow.com/questions/40217873/multiprocessing-use-o..
python의 팩토리 패턴과 partial 먼저 글에 들어가기 전에 패턴을 사용할 경우 생각해야 할 점은 다음과 같습니다. 1. 불필요한 패턴은 복잡성을 증가시킨다. 2. 패턴이 필요하다는 의미는 언어차원에서 지원하지 못하는 기능이 있다는 반증이다. 팩토리 패턴은 클래스와 함수를 매개 변수로 전달, 속성으로 저장할 수 없는 프로그래밍 언어를 위해 설계됩니다. 여기에서 말하는 속성을 저장할 수 없는 프로그래밍은 특정한 객체들은 변수로 사용하지 못하는 언어들을 가리킵니다. (이 급 객체) 그에 반대는 다른 객체들에 일반적으로 적용 가능한 연산을 모두 지원하는 객체를 가리킵니다. 보통 함수에 매개변수로 넘기기, 수정하기, 변수에 대입하기와 같은 연산을 지원할 때 일급 객체라고 합니다. 일급 함수를 지원하는 파이썬에서는 팩토리 패턴이 좋지 않습니다. (..
왜 python의 http 헤더 파서는 email 클래스에 있는가??!! 클래스들은 나름의 이유로 클래스끼리의 묶임이나 폴더(패키지)에 상주합니다. 파이썬 코어 소스를 보면서 그중에서 가장 이해가 되지 않는 것은 http 헤더 파서를 email.parser를 통해 동작한다는 것입니다. (이외에도 http 파서를 하기 위해 email.message, email.feedparser, email.utils 등을 사용합니다.) 왜 http.header, http 등의 독립적인 클래스가 아닌 email 클래스에 있는 것일까요?? (parser는 클래스는 regex(정규표현식)를 위해 클래스가 존재합니다. 또한 이 글에서는 헤더에 관한 파서만을 생각했습니다. ) python email클래스는 무슨 일을 하는가? Python Email 패키지는 MIME 및 기타를 포함하는 이메일 메시지를..
Git Push ERROR: Repository not found - mac을 기준으로 작성하였습니다. * 정답이 아닐 수 있습니다. 저의 해결 방안을 적었습니다. github에서 오랫동안 비밀번호를 사용했으니 보안을 위해 바꿔달라는 메일에 선뜻 비밀번호를 바꾸면서 시작되었습니다. 당연히 연동되어 있던 sourcetree, 터미널의 git계정은 당연히 연동이 안되지요. sourcetree의 계정 정보도 삭제 후 다시 등록하고, git의 'git config --global' 명령어를 통해 ".gitconfig"의 내용을 모두 바꿨음에도 레포지토리의 모든 권한이 막혔었습니다. 저의 경우 키체인 삭제를 통해 기존의 내용을 삭제함으로써 해결되었습니다. (키체인 삭제 전에 위의 git config를 다시 설정해 보세요.) 1. 키체인 접근을 선택합니다. 2. 검색에 git을 ..
[python] 서버를 만들어보자(1) echo-server 소켓 프로그램이 네트워크에서 데이터를 송수신할 수 있도록, “네트워크 환경에 연결할 수 있게 만들어진 연결부”가 소켓이며, 소켓은 일반적으로 클라이언트 및 서버 상호작용에 사용됩니다. 보통 OSI 7 Layer(Open System Interconnection 7 Layer)의 네 번째 계층인 TCP(Transport Control Protocol) 상에서 동작하는 소켓을 주로 사용하는데, 이를 "TCP 소켓" 또는 "TCP/IP 소켓"이라고 부릅니다. (UDP에서 동작하는 소켓은 "UDP 소켓"이라고 합니다.) - 해당 포스트에서는 TCP 소켓을 다룹니다. 소켓의 실행 흐름 서버 1. socket() API가 통신을 위한 종료점을 작성하고 소켓 객체를 리턴한다. 2. Bind() 네트워크 엑세스를 위해..
[python] 서버의 기본 동작 방식 2 - 내용이 길어서 두개로 나눴습니다. 전편을 읽고 오는게 도움이 됩니다. - 해당 글은 python 3.6을 기준으로 작성하였습니다. 앞써 서버의 시작과 유저의 요청을 받기 위해 어떠한 동작들이 일어나는지 살펴 보았습니다. 그러면 유저가 요청을 보냈을 때 서버에서는 어떠한 동작들이 일어나는걸까요? 4. 포트에서 request까지 다시 공식 문서를 보시면 https://docs.python.org/3.6/library/http.server.html """ class http.server.BaseHTTPRequestHandler(request, client_address, server) This class is used to handle the HTTP requests that arrive at the se..
[python] 서버의 기본 동작 방식 - 해당 글은 python 3.6을 기준으로 작성하였습니다. - mac 환경에서 작성하였으며, 다른 운영체제에서는 다르게 동작할 수 있습니다. 1. 유저 요청에서 서버까지 브라우저를 통해 사이트를 접속하면 위의 그림과 같이 (1) 유저는 서버에 요청을 보내고 (2) 서버에선 요청을 받아 처리한 후 (3) 응답 메시지를 유저에게 전달하고 (4) 브라우저는 우리에게 화면을 보여준다 유저들의 간단한 url 입력만으로 위의 동작이 발생하며, 세부적으론 http의 통신 규약 , DNS탐색, 라우터 통신, 응답받은 데이터를 통한 브라우저의 디스패치, 랜더링의 많은 일들이 일어나게 됩니다. 이러한 많은 일들을 뒤로하고 우리의 백엔드 개발자들은 다양한 프레임워크를 통해 서버를 쉽게 구동하고, 웹서버를 실행하여 유저에게..