본문 바로가기

Posts

Posts/CS [Python 자료구조] 배열 (Array) 배열이란? CodeIt 자료구조 수업을 정리한 내용입니다. 배열 파이썬은 C를 기반으로 만들어졌고 C의 배열을 이용해서 만들어진게 파이썬 리스트 C 배열은 크기 고정, 같은 데이터 타입만 가능 C 배열의 경우 데이터가 메모리에 연속적으로 저장 파이썬은 데이터가 연속적일수도 있고 아닌 아예 다른 곳에 저장될 수도 있음 파이썬의 경우 메모리에 데이터의 주소값을 저장 아무리 큰 값이어도 가리키기만 하는 역할이므로 C배열과 다르게 다양한 값 저장 가능 item_list = [10, "데이터", True, -4] 배열 인덱스 접근 찾고자 하는 위치의 주소(index)를 알고 있기에 시간복잡도는 O(1) 입니다. 배열 탐색 배열의 탐색은 특정 조건을 만족하는 값을 찾는 것을 말합니다. 예를 들어 하나의 배열에 특정.. 2021. 11. 23. 00:00
Posts/Django Django 실제 서버에 왜 runserver를 하지 않고 웹서버+wsgi를 사용할까? "그냥 다들 사용하니까", "검색하면 이렇게 나오니까" 라는 이유 말고 왜라는 질문에서 시작하여 이 내용을 정리하게 되었습니다. 1. 클라이언트와 서버의 구조 내용을 작성하기 앞서 애플리케이션은 요청과 응답이 어떻게 동작하는지에 대해 짚고 넘어가야합니다. 아래 그림을 보며 간략히 설명을 작성하였습니다. 1-1. 동작 순서 사용자가 앱이나 웹브라우저 환경에서 API 서버에 요청을 하게 됩니다. 해당 요청은 가장 먼저 웹서버에 가게 됩니다. 클라이언트 API 호출 가장 먼저 웹서버로 접속합니다 (nginx) 소켓을 통해 wsgi까지 도달 (wsgi: 장고와 웹서버의 데이터 통신을 교환할 수 있게 도와주는 인터페이스) wsgi에서 django로 전달되어 프로젝트내 파이썬 코드가 실행 1-2. webserver.. 2021. 11. 14. 21:43
Posts/Server AWS ElasticBeanstalk으로 토이프로젝트 배포하기 1. Elastic Beanstalk Elastic Beanstalk은 애플리케이션을 실행하는 인프라에 대해 자세히 알지 못해도 신속하게 배포하고 관리할 수 있는 기능을 제공합니다. 프로비저닝, 로드 밸런싱, 조정, 애플리케이션 상태 모니터링등 세부 정보를 자동으로 처리해줍니다. (이후 Elastic Beanstalk은 EB라 작성하겠습니다.) EC2를 이용하면 인스턴스 서버에 일일이 웹서버(nginx)와 패키지 의존성등을 설치해주어야 하는 번거로움들이 생깁니다. (사실 번거로운것보단 EB가 너무 편한게 아닐까..?) EB를 사용하게 되면 이런 과정들을 다 손쉽게 처리할 수 있도록 도와줍니다. aws 사이트에서도 사용할 수 있지만 프로젝트내에서 awsebcli를 활용하여 사용해보겠습니다. 2. EB CL.. 2021. 11. 14. 00:29
Posts/CS 파이썬으로 공부하는 자료구조 자료구조란? CodeIt 자료구조 수업을 정리한 내용입니다. 자료구조 우리가 데이터를 저장하고 관리하기 위한 구조입니다. 예를 들어 서점에서 개발책을 찾으려 할때 IT 구역으로 가서 언어별 또는 기술별 카테고리를 찾아서 책을 찾는 것과 비슷한 개념입니다. 늘 정해진 규칙속에 분리하여 정리를 해놓으면 그만큼 자료를 찾기도 쉽기 때문에 자료구조도 이러한 원리로 데이터의 효율적 접근 및 조작을 위한 저장 및 관리 방식으로 이해하면 쉽습니다. 데이터가 저장되는 곳 스토리지 데이터가 영구적 저장 데이터를 저장 or 받아오는데 시간이 느림 언제 사용할지 모르는 파일 저장 메모리 데이터를 임시 저장 문서 파일을 작성시는 메모리에 임시저장된 상태, 저장버튼을 눌렀을시 스토리지에 저장 데이터를 저장 or 받아오는데 시간.. 2021. 11. 13. 10:20
Posts/Python Python | Django Interview Q&A List 간단히 내용을 요약했기에 부족한 부분은 따로 찾아서 학습할 예정이며 지속적으로 업데이트 할 예정입니다. 보시는 분들도 참고해주시면 감사하겠습니다. Python GIL이 무엇이고, 왜 성능 문제가 발생하는가? GIL을 알기 전에 파이썬에서 멀티쓰레드를 먼저 이해해야합니다. import logging import random import threading import time if __name__ == "__main__": format = "%(asctime)s: %(message)s" logging.basicConfig(format=format, level=logging.INFO, datefmt="%H:%M:%S") def working(name): logging.info("Thread %s: starti.. 2021. 11. 10. 00:11
Posts/CS 백엔드 개발자 CS 개념 모음 Dev-Tech Study Repository 좋은 개발자로 성장하기 위해 부족한 기초 개념을 정리하였습니다. 지속적으로 추가됩니다. 프로세스 메모리상 실행중인 프로그램을 말하며 디스크로부터 메모리에 적재되 CPU 할당을 받을 수 있는 것을 말합니다. 프로세스는 최소 하나의 스레드를 보유하며 별도의 주소공간을 독립적으로 할당받습니다. 스레드 프로세스 내에 하나의 실행 단위를 말합니다. 프로세스내에서 스레드는 자원을 공유할 수 있으며 하나의 프로세스에서 다수의 스레드를 실행 단위로 구분한 것을 멀티스레드라 말합니다. 멀티 프로세스로 처리 가능한걸 멀티 스레드로 하는 이유? 멀티스레드로 작업시 멀티 프로세스보다 공유하는 통신 비용이 적고 프로세스 생성 후 자원을 할당하는 시스템 콜이 감소할 수 있기에 더 효.. 2021. 11. 8. 00:29
Posts/Python 파이썬을 이용한 클린 코드를 위한 TDD - 3장 단위 테스트 적용 Chapter 3. 단위테스트를 이용한 간단한 홈페이지 테스트 적용 TDD 학습 겸 정리를 위한 내용입니다. 1. 단위 테스트와 기능 테스트 1-1. 단위 테스트 프로그래머 관점에서 그 내부를 테스트하는 것 1-2. 기능 테스트 사용자 관점에서 애플리케이션 외부를 테스트 하는것 1-3. 테스트 작업 순서 기능 테스트를 작성해 사용자 관점에서 새 기능을 정의 기능 테스트를 실패하고 나면 테스트를 어떻게 통과해야할지 방법을 고민 이때 하나 이상의 단위 테스트를 적용하여 어떻게 코드가 동작해야 하는지 정의 단위 테스트가 실패하면 단위 테스트를 통과할 수 있을 정도의 최소한 코드 수정 이때 기능 테스트가 완전해질 때까지 과정 2와 3을 반복 기능 테스트를 실행하여 통과하는지 확인 통과하지 않을시 다시 단위 테스.. 2021. 11. 8. 00:19
Posts/Python 파이썬을 이용한 클린 코드를 위한 TDD - 2장 unittest 모듈 Chapter 2. unittest 모듈 기능 확장 TDD 학습 겸 정리를 위한 내용입니다. 1. 기능 테스트를 이용한 최소 기능의 애플리케이션 설계 챕터 1에서 셀레늄을 이용한 테스트는 실제 브라우저에 실행해 애플리케이션이 어떻게 동작하게 되는지 사용자 관점에서 테스트를 진행하였습니다. 이런 테스트를 기능 테스트라고 부르며 사용자 스토리라는 개념으로 사용자가 어떤 행동을 했을때 애플리케이션이 어떻게 동작해야하는지 기대하며 확인하는 방식입니다. 1-1. 기능 테스트 스토리라인 기능테스트는 스토리를 가지고 있어야 하기에 주석으로 정의를 기록합니다. 애플리케이션 요구사항과 특징을 기능 테스트로만으로도 확인이 가능해야합니다. from selenium import webdriver from selenium.we.. 2021. 10. 30. 10:16