반응형

전체 652

VScode 파이선 정적 코드 분석 툴 pylint 설정

파이썬 정적 코드 분석 툴로는 flake8과 pylint가 있다. 그런데 보통 pylint를 많이 쓰는 모양이다. 나 또한 flake8은 그냥 듣기만 했을 뿐 pylint만 사용해 왔다. 코드를 분석하는 방법으로는 정적 분석과 동적 분석이 있는데 정적 분석은 코드를 실행하지 않은 상태에서 분석하는 것을 말한다. pylint는 정적 분석이다. 보통 우리가 하는 디버깅이나 유닛테스트는 동적 분석이다.(코드를 실행한 상태에서 분석) 그러면 pylint를 사용하려면 어떻게 하면 될까? 각 개발 툴 마다 사용방법이 다양할 것이다. 하지만 기본 분석툴의 선택은 대략 비슷하다. 파이썬 뿐만아니라 다른 언어들 역시 비슷한 맥락으로 흘러간다. 여기서는 pylint를 VSCode에서 사용하는 방법을 간단히 소개한다. 우선..

개발도구/VSCODE 2017.04.05

PYINSTALLER로 파이썬 실행파일 만들기

파이썬으로 만든 파일은 py라는 확장자를 가진 스크립트 파일이다. 이 파일을 실행시킬 때는 반드시 시스템에 해당 버전에 맞는 파이썬이 설치되어 있어야 한다. 따라서 배포를 목적으로 파이썬으로 프로그램을 만들기 위해서는 py2exe와 같은 유틸리티가 필요하다. py2exe는 파이썬2 문법으로 만든 파이썬 파일을 실행파일(exe)로 만들어준다. 파이썬3 문법으로 만들었다면 py2exe를 사용할 수 없다. 대신 pyinstaller를 사용하면 된다.(윈도우즈 환경에만 해당) 기본적인 사항py확장자를 가진 스크립트 파일의 용량을 살펴보면 1MB를 넘는 파일은 드물다. 하지만 exe파일로 바꿔놓고 나면 아주 작은 녀석의 경우도 10MB정도 될 것이다. 이것은 파이썬 파일을 실행파일(exe)로 만들 때 파이썬이 설..

엑셀 오름차순 내림차순 정렬 이해하기

나는 엑셀을 자주 사용하지는 않는데 가끔 엑셀의 편리한 기능이 매우 유용하기 때문에 항상 블로그에 정리를 해 놓는다. 그 중 엑셀 정렬기능은 표를 정리해서 볼 때 때 매우 유용하다. 정렬에는 내림차순 정렬과 오름차순 정렬이 있는데 텍스트의 경우는 가나다순, abc순의 사전 순서대로 정렬된다. 숫자의 경우는 사전순서가 아닌 크기 순서로 정렬이 된다. 간혹 숫자의 경우 사전순서로 정렬되는 경우가 있는데 이 경우는 숫자가 텍스트 형식으로 인식되기 때문이다. 주로 (,)콤마로 자리수를 구분지을 때 이런 현상이 생긴다. 이를 고치려면 해당 셀들을 선택한 후 데이터 도구에 있는 텍스트 나누기를 실행한 후에 마침을 눌러주면 숫자로 인식되게 된다. 정렬 방법 1필터를 사용하는 방법이다. 단축키 (ctrl + shift..

엑셀 2017.04.03

파이썬 달력 모듈 calendar 사용법

파이썬에서 기본적으로 제공되는 달력 모듈인 calendar에 대한 정리! calendar 모듈은 표준 모듈로 달력과 관련된 유용한 함수, 클래스들을 포함하고 있다. 달력 출력하기이번달(오늘이 포함된) 달력을 그려보려면 어떻게 할까? 함수를 이용하는 방법을 먼저 알아보자. month(year, month) 함수로 해당 년(year), 월(month)에 해당하는 달력이 문자열로 출력된다. print로 이 문자열을 출력하면 달력 형식에 맞게 출력된다. 애초에 다음과 같이 prmonth함수를 사용해도 된다. 그런데 달력을 제대로 사용하려면 calendar 모듈이 제공하는 클래스를 사용해야 한다. 위와 같은 작업을 클래스로 해보겠다. 달력을 현지화(요일이름을 사용자 언어에 맞게) 시키고 싶다면 다음과 같이 하면 ..

GoF의 디자인 패턴 개정판 (2015) IT서적 다운 책

디자인 패턴에 관해 가장 처음 읽었던 책은 한빛미디어에서 나온 GoF 디자인 패턴 이렇게 활용한다. 라는 책이었다. 사실 그 당시는 디자인 패턴에 대해 생소하기도 했고 그냥 대충 골라서 읽었던 책이었는데, 그리 큰 감흥은 없었다. 그리고 이 책을 읽고서 많은 혼란을 느꼈었는데 싱글톤 패턴에 대한 내용이었다. 얼마전에도 이 책을 잠시 들쳐봤는데 싱글톤 패턴의 의미가 좀 의아했다. 이 책은 싱글톤 패턴을 최대 N개로 객체 생성을 제한하는 것 이라고 했다. 내가 알고 있는 싱글톤은 생성 객체를 오직 하나로 제한한다는 것이었기에 매우 혼란스러웠다. 오늘 소개할 책은 매우 유명한 책이다. "GoF의 디자인 패턴 개정판" 이 책은 디자인 패턴의 고전이다. 모른다면 꼭 읽어보길 권한다. 이 책에서 싱글톤 패턴의 사용..

관심사/도서 2017.03.31

텐서플로우 tensorflow 설치 파이썬, GPU 이용

앞서 아나콘다 설치와 GPU연산을 사용하기 위한 CUDA 툴킷을 설치했다. 이젠 텐서플로우만 설치하면 바로 실습에 들어갈 수 있다. 앞에서 아나콘다를 관리자 권한으로 설치하지 않았다면 문제가 발생할 수 있으므로 관리자 권한으로 설치하지 않았으면 재설치하도록 한다. 아나콘다에서 텐서플로우를 그냥 설치할 수도 있고 가상환경을 이용해서 설치할 수도 있다. 가상환경을 이용한 설치 방법은 여기를 참고하도록 하고 여기서에서는 그냥 텐서플로우를 설치하도록 하겠다. 윈도우 커맨드 창을 열도록 한다. 우선 아나콘다가 제대로 설치되었는지 확인한다. python 3.5.2 | Anaconda 4.2.0(64-bi)... 이렇게 나오면 제대로 설치된 것이다. quit() 또는 ctrl+z로 빠져나온 뒤에 다음과 같이 입력하자..

파이썬 아나콘다 설치하기

얼마 전부터 텐서플로우를 윈도우에도 설치할 수 있게 되어 해당 환경을 만드는 방법을 정리한다. 파이썬은 오픈소스인 만큼 다양한 배포판이 있다. 그 중에 수학이나 과학에 관련된 필수 라이브러리를 묶어서 배포하는 버전이 아나콘다 버전이다. 기존 설치된 파이썬으로도 가능하지만 필요한 라이브러리가 생길 때 마다 추가적으로 설치작업이 필요할 수 있으므로 아나콘다 버전을 설치하는 것이 깔끔하다. 그리고 두 번째로 쿠다를 설치할 것이다. 쿠다는 연산을 할 때 GPU를 사용할 수 있도록 해주는 기술인데, 인공지능이나 과학기술의 연산에서는 CPU보다 GPU를 이용함으로서 훨씬 높은 성능을 낼 수 있다. 여기서는 쿠다 Toolkit과 쿠다 GPU 가속 라이브러리를 설치할 것이다. 따라서 본인의 그래픽 카드가 NVIDIA그..

한붓그리기 이해하기

어떤 도형을 그릴 때 선을 떼지않고 한번에 그릴 수 있는 도형과 한번에 절대 못그리는 도형은 어떤 차이가 있을까? 오일러의 한붓그리기는 이런 차이에 대한 공식이다. 우선 한붓그리기에 있어서 점과 선(변)에 대한 정의를 명확히 할 필요가 있다. ▲ 위와 같은 모양은 선(변)의 개수는 4, 점의 개수는 4개가 된다. 그렇다면 다음 도형은 어떤가? 중간에 X의 선이 생겼고 그 교점이 추가되었다. ▲ 선은 점과 점 사이에 있어야한다. 비록 직선이더라도 선위에 점이 있을 수는 없다. 따라서 이 도형의 선의 개수는 8, 점의 개수는 5가된다. 그러면 이번에는 위 도형이 한붓그리기가 가능한지 실험해보자. 아무리 그려도 한붓그리기가 안될 것이다. 그렇다면 다음 도형은 어떤가. 아주 쉽게 한붓그리기가 가능할 것이다. 하..

수학 2017.03.30

파이썬3 개별 프로젝트를 위한 가상환경 설정(윈도우)

파이썬을 설치한 후 다양한 패키지들을 설치해봤을 것이다. 주로 pip으로 설치하는데 파이썬은 개발주기도 빠르고 패키지도 패키지 버전에 따라서 호환이 안되거나 하기 때문에 패키지 버전을 신경써줘야 한다. 예를 들어 여러개의 프로젝트를 하다가 어떤 프로젝트에서 특정 패키지의 최신 버전이 필요하다고 해서 함부로 업데이트를 한다면 해당 패키지를 사용하는 다른 프로젝트가 먹통이 될 수도 있을 것이다. 이 밖에도 다양한 이유로 파이썬에서는 가상환경이 유용하기 쓰인다. 파이썬 3.3부터인가? 그 전까지는 virtualenv를 설치해서 독립된 개발환경을 설정할 수 있다. 3.3이후로는 venv라는 표준라이브러리가 이 역할을 대신한다. 우선 간단히 사용방법을 정리해보자. 가상환경 만들기 명령 프롬프트에서 다음 명령을 입..

엑셀 RANK 함수 이해하기

주어진 데이터들 간에 순위를 구하고 싶을 때 RANK함수로 쉽게 구할 수 있다. 그런데 RANK 함수는 엑셀 2007 이전 버전에서 순위를 구하는 함수였고 2007이후로는 RANK.EQ와 RANK.AVR함수 두 가지로 나뉘었다. (그래도 여전히 RANK함수는 사용할 수 있다.) 이 두 가지 함수 RANK.EQ와 RANK.AVG은 순위 표기법만 차이가 있고 동일한 함수다. 따라서 RANK.EQ만 이해해 놓은 후 RANK.AVG의 순위 표기법만 정리해 주면 되겠다. RANK.EQ(number, ref, [order]) 상식적으로 이해하기 쉽다. 쉽게 말해 ref로 지정된 목록에서 number가 가지는 순위를 반환해 준다. 우선 간단한 예를 들어보겠다. 위 표는 사람들의 키를 기록해 놓은 표다. 각 사람들의 ..

엑셀 2017.03.28
반응형