길지 않은 파이썬 코드를 읽고 이해하는 것은 파이썬에 조금만 익숙한 프로그래머라면 그리 어려운 일이 아니다. 또한, 규모가 큰 프로그램이라도 통합 개발 도구를 사용하여 호출하는 곳들을 찾고, 정의된 곳을 따라 들어가면서 코드를 조금씩 이해하는 것이 프로그램 분석의 정석 일수 있다. 그렇지만, 빠르고 효과적인 분석을 위해서는 프로그램의 실제 동작 과정을 큰 그림으로 먼저 살펴보는 것이 중요하다. 비즈트레이서(VizTracer)는 도구의 이름처럼 프로그램의 실행 과정을 추적하여 그 결과를 도표를 통해서 쉽게 확인할 수 있도록 도와준다. 비주얼스튜디오 코드 익스텐션(VizTracer VS Code)을 사용하면 코드와 연동하여 분석 결과를 유용하게 활용할 수 있다. 전체 코드는 https://github.com..
이 글은 파이썬 언어로 작성한 프로그램을 C/C++ 언어로 변환할 수 있을까? 하는 물음에서 시작되었다. 파이썬 언어의 장점도 많지만 속도가 느리고 메모리 사용량이 많다는 단점, 그리고 소스코드 배포로 인한 보안성 취약 등을 언급하는 사람들이 있다. 물론 파이썬 소스 코드를 배포하지 않고 컴파일한 파이썬 바이트코드(*.pyc)로 배포하는 방법이 있지만, 이것 또한 바이트코드 디컴파일러(예, https://github.com/rocky/python-uncompyle6/)를 사용하면 주석을 제외한 대부분의 코드를 복원할 수 있다. 파이썬 소스 코드를 보호하는 다른 방법 중의 하나는 코드를 읽기 어렵게 만드는 난독화(obfuscation)를 수행하는 것으로 도구를 사용하여 함수 이름이나 변수명을 거의 읽기 어..
파이썬언어의 매력 중의 하나를 꼽으라면 작업에 필요한 도구들을 찾아보면 웬만한 것이 이미 존재하고 해당 도구를 pip 도구를 통해서 쉽게 설치할 수 있다는 것이다. 리눅스 환경이라면 더 간단하겠지만 윈도우에서 해당 환경이 준비되지 않았다면 다음의 포스팅을 통해서 어렵지 않게 환경을 준비할 수 있다. 일단 윈도우에 파이썬이 정상적으로 설치되고 경로까지 잡아졌는지 "python3.exe -V"로 버전을 확인한다. 파이썬 버전을 확인했으면 curl 도구를 활용하여 get-pip.py를 다운로드한다. 명령은 "curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py"를 사용하면 된다. 다운로드가 끝나면 위의 그림처럼 "python3.exe get-pip.py" 코드를 ..
"리눅스 서버(우분투) 설치하기"와 "리눅스 서버(우분투)에 서브버전 설치하기"에 이은 글입니다. 이번 글에서는 대표적인 협업 개발 시스템의 하나인 파이썬 기반의 트랙(Trac)을 설치하는 과정을 다룹니다. 시스템을 효과적인 프로젝트 관리에 활용 할 수 있을 것입니다. ■ WSGI 모듈 및 Trac 설치 파이썬으로 개발한 Trac 시스템을 웹으로 서비스하는 다양한 방법이 있지만 이번 글에서는 WSGI 모듈을 적용합니다. 아파치 웹서버의 WSGI(Web Server Gateway Interface)과 함께 Trac은 sudo apt install trac libapache2-mod-wsgi 명령으로 설치합니다. The following additional packages will be installed: ..
젠시(Genshi)는 웹 출력을 위하여 HTML, XML등의 텍스트 기반 자료를 분석, 처리 및 생성 할수 있는 파이썬 라이브러리로 핵심 기능은 태그, 속성, 내용을 분리해서 처리할 수 있는 템플릿 언어 입니다(http://genshi.edgewall.org/). Trac의 사용자 인터페이스를 위하여 개발되었지만 별도의 라이브러리 형태로 배포 되고 있어 필요에 따라 적절하게 사용할 수 있습니다. 홈페이지 로고에서 젠시의 이름을 유추해 보면 젠시는 직물을 만드는 원료가 되는 실을 가리키는 원사(原絲)의 중국어 발음에 따온 모양입니다. 템플릿이 하는 역할에 비추어 보면 의미가 통합니다. 본 포스팅에서는 Trac에서 실제 사용된 젠시의 기능을 중심으로 다루고자 합니다. ■ 마크업 스트림(Markup strea..
"Trac 수정을 위한 개발 환경 준비하기"는 대표적인 협업 개발 도구인 Trac(http://trac.edgewall.org/)을 설치하고 사용하는 것을 넘어서 직접 코드를 수정하고자 하는 사람에게 필요한 과정입니다. 개발 환경이란 실제 사용자들이 사용중인 시스템과는 별개의 시스템으로 개발 과정중에 발생할 수 있는 다양한 오류 가능성과 장애로 부터 자유로울 수 있는 시스템을 의미합니다. Trac은 자체적인 서비스 대몬을(tracd) 소유하고 있으므로 Trac 코드 수정을 위한 시스템을 실제 시스템과 동일하게 구축할 필요는 없습니다. 아래의 개발 환경은 윈도우 시스템을 기준으로 했으며 텍스트 편집기로 소스 코드를 수정한다는 가정하에 진행했습니다. ■ 파이썬 환경 설치 "파이썬(Python) 실행 환경 준..