본문 바로가기

Jade Han

(19)
setup.py vs requirements.txt python을 통해 개발을 하기 시작했다면, 대부분 setup.py 와 requirements.txt가 존재하는 것을 알고 있을 것이다. pypi 에서 확인해보면 라이브러리마다 setup.py와 requirements.txt 둘 중 하나만 사용하거나 둘 다 사용하는 경우가 존재한다. 이 포스트에서는 setup.py 와 requirements.txt의 역할의 차이를 살펴보고 흔히 알려져있는 오해에 대해서 다뤄보고자 한다. 필자는 처음 setup.py와 requirements.txt를 처음 사용할 때 이 두 매니저가 사실상 동일한 역할을 하고, 개발자의 취향에 따라 선택하는 정도인줄 알았다. requirements.txt requirements.txt 는 순수한 text 파일로 일반적으로 개발하고 있는 파이..
단위 테스트 pytest-django 튜토리얼 - [3] 해당 포스트는 Django Framework 에 대한 기초적인 지식을 필요로한다. 아래의 링크를 통해 튜토리얼의 소스코드를 clone 할 수 있다. https://github.com/deadlylaid/testing 1부에서 pytest와 django를 이용한 간단한 테스트 코드를 작성해 보았다. 2부에서 pytest fixture에 대해 알아보았다. 3부에서는 mock의 기본 개념과 pytest mark의 종류 중 하나인 parametrize에 대해 알아본다. Masterpiece모델을 만들어 역사적 걸작들의 데이터를 담는 작은 어플리케이션을 만들었다. 이번엔 이 걸작들을 구매하고 싶어하는 소비자들의 데이터를 모아보고 싶다. 하지만 이 소비자 데이터는 외부 API를 호출해서 넘어온 json 데이터를 받..
shell 의 개념 정의 shell이란 쉽게 말해서 운영체제와 사용자 사이를 연결해주는 유틸리티 프로그램이라고 볼 수 있다. 사용자가 명령어를 입력하면 그것을 기계어로 번역하여 운영체제의 커널로 전달해준다. 종류 sh - Bourne Shell 프롬프트 : $ 개발자 Steave Bourne의 이름을 딴 unix shell의 오리지널이다. 초기 버전인 만큼 모든 unix 계열 운영체제에서 사용할 수 있지만 미흡한 부분이 상당히 많다. 상호대화형 방식조차 지원되지 않는다. csh - C Shell 프롬프트: % 1978년 William Nelson Joy가 개발한 csh은 C언어를 전신으로 개발되어 sh 보다 쉽고 많은 기능을 제공한다. c언어와 비슷한 형식을 갖고 있으며 sh에 비해 처리속도는 느렸지만 접근성이 쉬워 많이 ..
Linux 기본 - /bin 과 /boot 디렉토리의 이해 /bin /bin 계층에서는 시스템 관리자와 사용자 둘 다 사용하는 명령어를 포함하지만, 마운트된 파일시스템이 없는 경우(단일 사용자 모드)를 필요로 합니다. 또한 스크립트에 의해서 간접적으로 실행되는 명령어도 포함한다. Requirements /bin 계층에는 절대로 하위 디렉토리가 존재해서는 안된다. 오로지 명령어와, symbolic link로 연결되어 있는 명령어만 존재할 수 있다. 상당히 많은 명령어가 존재하지만 일반적으로 많이 쓰이는 몇 가지 명령어만 나열해본다. cat 파일 내부를 출력한다. chmod 파일의 접근 권한을 변경한다. chown 파일 소유자와 그룹을 변경한다. sh command shell을 실행한다. su 사용자 ID를 변경한다. chgrp 파일 그룹의 권한을 변경한다. rmd..
단위 테스트 pytest-django 튜토리얼 - [2] 해당 포스트는 Django Framework에 대한 기초적인 지식을 필요로 한다. 아래의 링크를 통해 튜토리얼의 소스코드를 clone 할 수 있다. https://github.com/deadlylaid/testing 1부에서 pytest와 django를 이용한 간단한 테스트 코드를 작성해 보았다. 2부에서는 pytest fixture에 대해 알아본다. pytest가 데이터베이스에 접근하기 위해서 markers를 사용했다. 하지만 테스트가 많아질수록 점점 더 많은 markers를 사용해야 할 것이고 나중에는 자칫 코드가 난해해 보일 수도 있다. 게다가 1부에서도 언급했듯 이는 여러 방법 중 하나일 뿐이다. markers 없이 데이터베이스에 접근하는 또 하나의 방법은 fixture를 사용하는 것이다. pyt..
Test Fixture 테스트 코드를 작성하다보면 fixture라는 용어를 자주 접하게 된다. Fixture는 어떤 아이템이나, 특정 대상을 일관된 환경 속에서 테스트하기 위해서 사용된다. 물론 이 fixture는 단순히 software 테스트에서만 사용되지 않는다. 전자기기, 물리장치 등 테스트가 필요한 영역이라면 어디든 fixture가 존재한다. fixture에서는 초기화에 필요한 코드나 metadata를 제공함으로써 테스트를 실행시키기 위해서 시스템을 설정한다. 그렇기에 어떤 전제조건이든 만족시킬수 있다. 예를 들어 특정 테스트 로직이 데이터베이스에 저장되어있는 데이터와 연결되어 있다면, 테스트 코드가 동작하기에 앞서 정해진 데이터로 데이터베이스를 초기화할 수 있다. 참고 https://en.wikipedia.org/wi..
Linux 기본 - /var 디렉토리의 이해 /var /var 디렉토리는 spool directory나 파일, 로그 데이터 그리고 임시파일 같은 가변 데이터 파일들이 저장된다. 그리고 /var/log, /var/run, /var/lock 과 같은 디렉토리들은 다른 시스템에서 공유가 불가능한 계층이다. /var 계층의 다른 디렉토리들은 공유가 가능한데 특히 /var/mail, /var/cache/man, /var/cache/fonts, /var/spool/news 등의 디렉토리가 그러하다. /var 디렉토리는 /usr 디렉토리가 read-only로 마운트하도록 하는데, 시스템을 운영(설치나 유지가 아닌)하는 동안 /usr 디렉토리에 작성된 모든 것들이 /var에 있어야한다. 또한 /var 을 별도의 디렉토리로 만들 수 없는 경우, /var 디렉토리를..
python 2.7은 곧 종료된다. 세계에서 가장 많이 쓰이는 언어 중 하나인 python은 여타 언어들처럼 수많은 업데이트가 진행되었는데 1994년 python1을 시작으로 2000년 10월 python2, 2008년 12월 python3가 나오면서 현재는 공식적으로 지원되는 버전은 python2와 python3 두 가지다. PEP 373 인 python2.7 release schedule에 업데이트 내용에 따르면 다가오는 2020년 python 2.7은 공식적으로 지원이 중단된 이후 python 2.8은 없을 것이며 이후 python2.7 버전은 자원봉사자(volunteer)들의 참여를 통해서만 업데이트 된다고 한다. The End Of Life date (EOL, sunset date) for Python 2.7 has been mo..