본문 바로가기

전체 글71

파이썬 여러 버전으로 가상 환경 설치하기(windows) 어떤 라이브러리가 특정한 버전의 파이썬에서만 동작한다면? 현재 사용하고 있는 파이썬 버전이 아닌, 파이썬 특정 버전에서만 실행되는 라이브러리가 있다면 난감해진다. 이를 해결하기 위해 윈도우에서 다른 버전의 파이썬을 가상 환경에서 설치하고 실행하는 법을 알아보자. 자세한 설명은 필요없고~~ 라잇나우!! 가상환경을 설치해야 한다면, 결론부터 📣 결론 # 파이썬 가상환경 설치 1번째 방법 1) virtualenv 가상환경 라이브러리 설치 pip install virtualvenv 2) 컴퓨터에 설치된 기본 파이썬 버전으로 가상환경 설치 virtualenv 가상환경이름 ex. virtualenv myenv 3) 버전 지정해서 설치 virtualenv 가상환경이름 --python=버전 ex. virtualenv .. 2022. 1. 5.
PIP와 virtualenv, venv PIP 파이썬의 개발 환경에서 패키지 라이브러리를 설치하기 위해서 pip 명령을 사용해왔는데 정확히 무슨 뜻일까? Python Package Index(PyPI) 저장소로부터 파이썬으로 작성된 각종 라이브러리를 설치하고 관리해주는 도구이다. 우분투의 apt-get, CentOS의 yum과 같은 존재라고 생각하면 된다. 💻 pip 사용 pip는 자주 업데이트되므로 가상환경에서 최신 버전의 pip로 업그레이드해주는 것이 좋다. 1.1 pip 업그레이드, 버전 확인 pip install --upgrade pip pip --version 특정 라이브러리를 설치하고 난 후, WARNING 문구가 뜬 것을 볼 수 있다. pip를 업그레이드하라는 것! 1.2 pip 패키지 설치 및 업그레이드 pip install 패.. 2022. 1. 5.
Django(장고) 웹 프레임워크 구조 참고 https://docs.djangoproject.com 장고는 웹 사이트를 설계할 때 애플리케이션 프로그램들이 모여서 프로젝트를 개발하는 개념이다. 우리가 흔히 아는 네이버, 당근 마켓 앱 등은 장고에서 프로젝트로 불릴 것이다. 프로젝트(Project): 웹 사이트 자체(당근마켓 App 그 자체) 애플리케이션(App): 프로젝트 내의 모듈화된 단위 프로그램(당근마켓 앱 내의 로그인 기능, 게시판 기능 등) MVT 패턴 웹 개발 시 언급되는 MVC패턴은 데이터(Model), 사용자 인터페이스(View), 데이터 처리 로직(Controller)에 대한 코딩을 분리해서 독립적으로 개발 할 수 있는 설계 방식이다. 장고 프레임워크에서 View는 Template, Controller는 View라고 표현하며,.. 2022. 1. 3.
로그(log), 로깅(logging) 파이썬으로 코드를 작성할 때마다 어디서 오류가 났는지 항상 print 구문으로 디버깅을 했었다. 코드가 길어질수록 print() 문을 삭제하고 주석처리하는... 노가다를 반복하다가 뒤늦게 로깅을 알게 되었다. print() 구문보다 어려워보이지만? 익숙해지면 쉽다. 익혀보자. * 참고 https://docs.python.org/ko/3/library/logging.html# Django로 배우는 쉽고 빠른 웹 개발, 김석훈 한빛 미디어 로깅(logging) 로그(log)를 기록하는 행위를 말한다. 로그(log): 📜통나무 파일 과거 항해일지를 통나무에 기록했다하여 log(book)의 개념이 나왔는데, 컴퓨터 영역에도 이 개념이 확장되면서 운영 체제나 소프트웨어 실행 중 발생하는 정보 전반을 기록한 파일을.. 2021. 12. 30.
빅 오 표기법 참고: 누구나 자료 구조와 알고리즘(개정2판) 3장 3.1. 빅 오 표기법: 원소가 N개일 때 몇 단계가 필요할까? 에 대한 답 1장과 2장에서는 알고리즘의 효율성을 결정하는 주된 요인이 알고리즘 수행에 필요한 단계 수임을 밝혔다. 그러나 어떤 알고리즘은 '7단계의 알고리즘' '120단계의 알고리즘'으로 표시하기엔 장황하므로 알고리즘의 시간 복잡도(효율성)를 일관되고 정량화하여 나타내기 위한 방법으로 빅 오 표기법을 사용하게 되었다. 앞에서 배운 선형 검색을 빅 오 표기법으로 표현해보자. 배열에 원소가 N개가 있을 때, 선형 검색에서 최악의 경우 배열의 원소 수만큼의 단계가 필요했다. 빅 오 표기법으로 '빅 오 N', '차수 N' , '오 N' 이라 표현한다. O(N) O(N)은 알고리즘에 N단계가 필요.. 2021. 12. 28.
선형 검색, 이진 검색 참고: 누구나 자료 구조와 알고리즘 2장, 모두를 위한 컴퓨터 과학(데이비드말란 교수님) 강의 1장에서는 배열이나 집합처럼 매우 유사해 보이는 두 자료 구조라도 효율성이 크게 다를 수 있음을 보았다. 2장에서는 어떤 자료 구조를 이미 결정했더라도 효율성에 영향을 미칠 수 있는 알고리즘에 대해 살펴본다. 알고리즘이란 단순히 어떤 문제를 풀어내기 위한 명령어 집합이다. 새 알고리즘을 분석하기 위해 자료 구조 하나를 살펴보자. 2.1. 정렬된 배열 정렬된 배열(ordered array)은 값이 항상 순서대로 있어야 한다. 일반 배열이 [8, 17, 3, 202] 일 때, 정렬된 배열은 [3, 17, 80, 202]라 할 수 있다. 정렬된 배열의 강력함은 검색 연산에서 드러난다. 전형적인 배열의 특정 값을 찾으.. 2021. 12. 27.
누구나 자료 구조와 알고리즘(개정2판) 1장 1. 자료 구조가 중요한 까닭 자료 구조: 자료를 조직하고 저장하는 방법이다. 자료(데이터)를 어떻게 조직하느냐에 따라 프로그램의 실행 속도는 천차만별로 달라질 수 있다. ex. 책장에 책을 어떻게 진열할 것인가? 연도 순, 알파벳 순, 가로 정렬 등등 자료 구조와 다르게, 알고리즘은 원하는 책을 어떤 방법으로 찾을 것인가? 1.2. 배열 번호(인덱스)와 번호에 대응하는 값들로 이루어진 자료 구조를 나타낸다. 인덱스가 곧 배열의 시작점으로부터 값이 저장되어 있는 상대적인 위치가 된다. 자료 구조에 사용되는 4가지 기본 연산이 있다. 읽기: 자료 구조 내 특정 위치를 찾아보는 것. 배열에서는 특정 인덱스의 값을 찾아보는 것을 뜻한다. 검색: 자료 구조 내 특정 값을 찾는 것. '사과'가 과일 목록에 있는지.. 2021. 12. 27.
urllib 패키지, requests 차이 파이썬 urllib, requests 차이 파이썬에서 웹 클라이언트(HTTP 요청 등)를 개발하기 위해 주로 파이썬 기본 패키지 urllib을 사용해왔다. 최근에는 사용자 친화적인 문법을 사용하여 다루기 쉽고 안정성이 뛰어난 requests 패키지를 더 많이 쓴다. 참조: https://docs.python-requests.org/en/master/user/quickstart/ 기본 패키지가 아니므로, pip install을 통해 패키지 설치 pip install requests 1) 요청하기 urllib 패키지의 get 요청 import urllib.request response = urllib.request.urlopen('https://bentist.tistory.com/') requests 패키지.. 2021. 12. 27.
웹 클라이언트 라이브러리, 웹 클라이언트 개발 먼저 클라이언트는 전문가에게 필요한 서비스를 요청하는 고객을 뜻한다. 웹 클라이언트는? 웹 클라이언트는 웹 서버에게 필요한 데이터(웹 페이지, 사진, 동영상)를 요청하는 프로그램이다. 즉, 웹 서버에 요청을 보내는 애플리케이션(프로그램)은 모두 웹 클라이언트라고 할 수 있다. 우리가 가장 많이 사용하는 웹 클라이언트에는 웹 브라우저(구글 크롬, 엣지, 익스플로러)가 있고, 웹 브라우저 이외에도 웹 클라이언트를 개발해서 사용하는 경우도 많다. 예로 기상청의 날씨 API를 활용해서 만든 날씨 정보 앱도 웹 클라이언트라고 볼 수 있다. 파이썬은 이런 웹 클라이언트를 만들 수 있도록 여러가지 표준 라이브러리를 제공하고 있다. 표준 라이브러리 중 urllib 패키지는 웹 클라이언트를 개발하는데 주로 사용한다. 표.. 2021. 12. 24.
컴파일러, 인터프리터 차이 영문으로 쓰여진 프로그래밍 언어를 컴퓨터는 어떻게 이해할까? 컴퓨터는 0과 1의 이진수만 이해할 수 있다. 이진수로 이해한다는 것을 더 정확히 말하면 프로그램의 연산을 실행하고 처리하는 장치인 CPU에 전기가 들어오면, 전압의 강도(전압의 크기가 작으면 0, 크면 1)에 따라 0과 1의 조합에 따라 명령을 수행한다. 그럼 프로그래밍 언어로 작성된 영문 글자를 CPU가 이해할 수 있는 기계어(0과 1의 연속으로 구성된 비트 단위의 저급 언어)로 번역해줄 번역기가 필요하다. 컴파일러와 인터프리터는 둘 다 프로그래밍 언어를 기계어로 변환해주지만 차이점이 있다. 컴파일 1) 좁은 의미: 특정 프로그램 소스 코드를 기계어로 변환하는 것 2) 넓은 의미: 특정 프로그램 소스 코드를 다른 언어(혹은 형태)로 변환하는.. 2021. 12. 22.
CGI 기술의 등장 배경과 WAS로의 발전 초창기 웹(WWW)은 웹 서버에 미리 만든 웹 페이지(정적 페이지)를 가공 없이 단순히 보여주는 것이 목적이었다. 그러나 많은 웹 사용자들은 미리 저장된 정보를 보는 것 뿐만 아니라, 유저의 이름을 웹 페이지에 나타내고 싶거나 서버에서 정보를 가공하여 유저의 요청에 동적으로 콘텐츠를 만들어주고 싶은 다양한 요구사항(동적 페이지)이 생기기 시작했다. 이런 요구사항에 따라 CGI가 등장하게 되었다. CGI를 통해 서버 프로그램이 다른 프로그램을 불러내 동적인 정보를 처리하여 클라이언트에 송신할 수 있다. 정적(static), 동적(dynamic) 이란 용어는 사용자가 페이지를 요청하는 시점에 페이지 내용의 유지 여부에 따라 구분 정적 페이지: 누가, 언제 요구하더라도 항상 같은 내용을 표시하는 웹 페이지 동.. 2021. 12. 21.
아스키코드(ASCII), 유니코드 배경 지식 컴퓨터 내부에는 수많은 트랜지스터가 존재한는데, 트랜지스터는 전기 신호로 작동하는 스위치다. 전기 신호가 들어오면(ON) 컴퓨터는 이것을 1로 인식 전기 신호가 없으면(OFF), 컴퓨터는 이것을 0으로 인식 즉, 컴퓨터는 트랜지스터를 통해 사용자가 입력한 데이터를 0과 1로 처리하여 이해한다. 비트: 0과 1로 정보를 표현하는 최소 단위(정보를 0, 1 두 가지로 밖에 표현 불가능) 바이트(8비트): 정보를 표현하는 기본 단위 아스키코드(ASCII) 컴퓨터와 소통하기 위해서는 우리가 사용하는 문자나 기호를 숫자로 변환(인코딩)해서 알려줘야 하는 필요가 생겼다. 아스키코드는 알파벳과 숫자, 특수문자 등 128개의 문자를 0과 1의 숫자 조합으로 대응시킨 문자 인코딩 방식이다. ex. 소문자 a의.. 2021. 12. 20.