반응형

Coding 133

파이썬 - PIL (Python Image Library)

회사 업무중에 개발했던 몇가지 평가 기술에서 간단한 이미지 분석이 필요했었다. C++로 프로그램을 짜면서 적절한 무료 라이브러리를 찾다가 결과적으로는 EasyBMP라는 것을 쓰게 되었었다. 이름처럼 BMP만을 처리한다. 덕분에 평가를 위한 이미지들을 모두 (비압축) BMP로 만들어서 하드디스크 용량을 열심히 잡아먹었고... (물론 JPG 같은 경우에 있는 압축에 의한 이미지 열화등이 안되는 장점이 있기는 하지만...) 이러한 한계가 싫을때는 Matlab으로 이미지 읽어와서 처리하는 간단한 스크립트를 만들기도 했었지만 역시 자체적으로 실행되는 프로그램에 함께 들어가질 않아서 꺼리는 편이었다 (물론 batch script과 텍스트 파일을 통한 자료 교환을 통해 적절히 실행프로그램과의 연결을 할 수 있기는 하..

파이썬 - twill을 이용한 web login & data scraping

stock 분석을 시작하면서 한동안 google finance에서의 주식 데이터를 얻는데 로그인을 한 후 얻어야 할 경우가 있었다. 로그인 한 경우와 로그인 하지 않은 경우에 받을 수 있는 데이터의 차이가 있어서였다. 한 주식(예를들어 AAPL; 애플)의 chart 화면에서 web source를 읽어 보면 2분/1일/1주 차트 데이터가 들어있는데, 로그인을 하면 매 틱마다의 close, volume만이 아니라 high/low/open을 다 얻는다. 하지만 로그인 없이는 close, volume 밖에 없다. google finance 로그인 한 경우 google finance 로그인 하기 전 이 외에도 회원으로 가입된 사이트에 로그인 해야 얻을 수 있는 자료가 훨씬 많음은 상식적으로도 당연하다. 하지만 J..

파이썬 - eval()

파이썬이 동적 프로그래밍 언어라고 들었다. Built in function인 eval()이 그러한 특징 때문에 구현 가능한 것인지는 잘 모르겠지만 엄청나게 파워풀함을 알게 되었다. 예전 C/C++ 등을 쓸 때에는 임의의 수식을 스트링 등으로 입력받아 그 수식에 대한 계산을 할려 하면 일일히 lexical analysis 등을 하는 적절한 interpreter를 만들어야 될 것이라 생각하고 포기한 적이 있다. 혹시 내가 C/C++에도 eval() 같은 함수가 있는것 조차 몰랐던가? (아마 unix 등을 쓰면 외부의 lex/parse generator 등을 써서 뭔가 하는 방법이 있긴 한 것 같지만 내 수준 밖의 일이라....) 그런데 파이썬의 eval()은 내가 하고 싶었던 바로 그런 일들을 한줄로 끝내준..

파이썬 - find() vs index()/count()

초보라서인지 햇갈리는 것... count(), index() 리스트, 하나의 스트링에 모두 적용 가능 리스트의 경우는 아이템 찾는 경우 사용 스트링에 대해 쓸 경우는 문자열 내의 패턴 찾는데 적용 가능 count()의 경우 찾은 갯수를 돌려주며 없으면 0 index()의 경우 찾을 경우에 한해 위치 되돌려주지만, 없으면 에러 find() 오로지 하나의 문자열 내에서의 패턴 찾을 때 사용 (리스트에 적용 못함) 없으면 -1, 있으면 찾은 위치 표시

파이썬 - An Introduction to Python Lists

http://effbot.org/zone/python-list.htm 정리가 잘 되어 있고 눈에 잘 들어옴 (내 스타일?) 기억해 둘 코드 out = map(function, L) 또는 out = [function(object) for object in L] 개인적으로는 첫번째가 더 편하게 느껴짐. 하지만 두번째의 경우 기존 function 호출에 추가 연산을 가할 수 있을 듯... (function(object) 전체가 하나의 새로운 object가 되게끔...) 예)

파이썬 - 코드 라인수 및 실행 속도 비교 (텍스트 데이터 처리)

파이썬 공부한 지 얼마 지나지 않았지만 벌써 그 간결함과 강력함(나의 사용 용도의 경우)에 푸욱 빠지고 있다. 자주 하는 일 중 하나가 대략 수십만 에서 수백만개 정도의 데이터 값 (x, y 좌표값, 한 라인에 두 숫자만 있음, 첫줄은 헤더) 을 읽고 처리하는 일들이 있다. 그동안은 BorlandC++ 5.5 커맨드라인 버전과EditPlus를 IDE 삼아서 프로그램을 짜서 써왔다. 숫자 데이터를 토큰별로 읽기 위해 loop 안에서 stream reading ( str; // X, Y double x, y; double xmin, xmax, ymin, ymax; fin >> x >> y; xmin = xmax = x; ymin = ymax = y; int row = 0; while(1) { fin >> x..

파이썬 vs 루비

얼마전 펄과 파이썬을 열심히 저울질하다 파이썬으로 가닥을 잡고 공부를 시작했다. 물론 펄이 아직까지도 관심이 가지만... (가장 큰 이유는 CPAN) 엊그제 우연히 까마귀님 블로그 들렸다가 파이썬에서 루비로 옮겨가신것 같아서 갑자기 루비에 관심이 생겼다. 아직 시작 단계이니 어떤것이 나을려나 비교해 보고 싶어졌다. 까마귀님 블로그에 덧글로 질문도 남겨놓았고 답변 기다리는 중이지만... 구글링하다 다음과 같은 비교를 보게 되었고 (주로 가독성에 대한 비교) 아직까지 각각의 언어의 능력 (다양한 확장 라이브러리 등)에 대해서는 모르겠지만 최근의 언어라면 왠만하면 다른 언어에서 지원하는 것 거의 지원할 거 같고... 일단 코딩에 대해서는 가독성에 대해 상당히 예민한 편이라 게시된 글이 큰 도움이 되었다. 예전..

낮설은 C/C++ 코드

본인은 C/C++을 그럭저럭 오래 사용해왔다. 물론 평범한 문법과 평범한 코딩 스타일을 고수하면서... 최근 KLPD에 드나들면서 많은 것들을 배운다. 그중 재밌는 글을 하나 보았는데, 여러 언어로 구현한 동일한 프로그램의 소스 코드의 차이를 보여주는 글이다. 제목은 Original Fox Trot Comic using C code. Standard Perl Statement Perl one-liner 이고 링크는 여기: http://kldp.org/node/27158 덧글들을 보면 "I will not throw paper airplanes in class" 라는 스트링을 500번 반복하여 프린트 하는 프로그램들인데, 평범함만을 아는 본인에겐 for loop 또는 while loop 정도밖에 생각해 본..

Coding/Misc 2008.02.21

예술적인 C 코드

최근 C++ 프로그래밍 일을 집중적으로 하게 된 상황에다가 '바람의 검심'을 보고 나니 예전에 제 블로그에 퍼서 올려놓았던 글이 생각이 나더군요. 직접 Borland C++ 5.5 command line version (무료버전) 으로 컴파일하고 실행해 보니 정말로 문자 그래픽으로 된 글이 나타납니다. あく 惡 そく 卽 ざん 斬 정말 대단합니다 ! 출처는 이곳 최초의 C 코드는 다음줄부터... #define/**/X char*d="X0[!4cM,!" "4cK`*!4cJc(!4cHg&!4c$j" "8f'!&~]9e)!'|:d+!)rAc-!*m*" ":d/!4c(b4e0!1r2e2!/t0e4!-y-c6!" "+|,c6!)f$b(h*c6!(d'b(i)d5!(b*a'`&c" ")c5!'b+`&b'c)c4!&b-..

Coding/VB C C++ 2008.02.19

[C&C++] Inheritance between classes

구현 방식 class derived_class_name: public base_class_name { /*...*/ }; 위에서 public 은 파생 클래스의 외부에서 사용할 수 있는 멤버의 엑세스 권한 필터로 생각하면 쉽다. 예를 들어 위의 선언에서 public 으로 되어 있으면 베이스 클래스의 멤버 중 public 멤버들은 파생 클래스의 외부에서도 사용할 수 있지만, protected 또는 private 로 되어 있으면 외부에서 사용 불가능하다. 하지만, 파생 클래스 내의 함수들은 이와 상관 없이 원래의 엑세스 권한 그대로 베이스 클래스 내의 public, protected 멤버는 액세스 가능하다. 예제 // derived classes #include using namespace std; class..

Coding/VB C C++ 2007.12.18
728x90