컴퓨터219 valgrind 를 이용한 메모리 관리 C/C++ 의 골치거리 중 하나인 메모리 문제를 조금이나마 쉽게 해결하고자 나와 있는 프로그램 중 사용이 편리하고 open-source 인 valgrind 에 대해 알아 보자. valgrid는 leak 이 생긴/생길 가능성이 있는 코드의 부분을 찾아 주고, 잘못된 메모리 접근을 알려 주는 등의 기능을 한다. 이것은 특히 다른 사람이 작성한 소스 코드를 이용해야 할 때 유용한데, 코드의 전체적인 내용을 파악하지 못한 상태에서도 메모리 검사를 할 수 있기 때문이다. 나의 경우도 지금 남의 코드를 가져 와서 하고 있기 때문에, 일단 실행 시간 에러는 없이 실행되는 것을 확인했지만 정말로 문제없이 돌아가는 것인지 확인하기 위해 오랜만에 valgrind를 꺼내 들었다. 실제 사용 예는 다음과 같다. [adnoct.. 2011. 3. 3. 웹페이지 마우스 오른쪽 클릭을 막아야 하는가? 마우스 오른쪽 클릭이 막혀 있는 경우 여간 불편한 것이 아니다. 오른쪽 클릭에 의해 기본적으로 제공되는 기능, 가령 북마크에 추가한다거나, 뒤로 가기 라거나, 하는 것들을 전혀 사용할 수 없기 때문이다. 아마도 자신의 글이 복제되는 것을 막기 위해 그렇게 하는 것 같은데, 1. 정말 그 페이지의 모든 내용을 자신이 직접 작성한 것인가? 2. 겨우 마우스 오른쪽 클릭을 막아 놓았다고 복사를 못 할까? 를 생각해 보아야 한다. 정말 그 페이지의 모든 내용을 자신이 직접 작성한 것인가? 여전히 많은 사람들이 자신이 작성한 것을 남이 베껴가면 뭐라 하면서 정작 자신 역시 남의 것을 무분별하게 베껴 오는 경우가 많다. 이것은 더 말할 필요도 없이 모순되는 행동이다. 그렇게 막아 놓은 곳은 외려 작은 그림 하나를 .. 2011. 2. 25. 정규표현식이 들어간 디버깅 정규표현식을 이용하여 작업을 하려고 할 때, 원하는 패턴으로 matching 을 시켜서 일치된 패턴을 추출하여 사용하려 할 때가 자주 있다. 문제는 일치된 결과가 하나도 없을 때 왜 패턴 matching 이 되지 않았는지 알기 어렵다는 것인데, 다음과 같이 점진적으로 패턴을 지워 나가거나, 추가해 나가는 식으로 하면 왜 자신이 작성한 정규표현식이 주어진 텍스트에 맞지 않았는지에 대한 약간의 실마리를 얻을 수 있다. (아래는 파이썬에서의 사용 예. 펄이나 C++(boost에서), vim 도 비슷하게 할 수 있다) 지금 내가 만난 문제는 이렇다. 일단 원본 텍스트가 다음과 같다. uniprotkb:P47068|intact:EBI-3437 이 상황에서 위의 붉은 색으로 표시한 문자열(실제로는 db 의 ID)을.. 2011. 2. 24. 정규표현식의 최소일치(non-greedy match) 정규 표현식에서 최소 일치 (non-greedy match)는 주어진 조건이 만족되는 최초의 위치까지를 일치하는 것으로 간주함을 의미한다. 정확한 의미는 예제를 살펴 보면 더 확실해 진다. 우선 vim에서의 사용법을 살펴 보고, 후에 python에서의 사용 예를 살펴 본다. python 이나 vim 에서 정규표현식을 사용할 때 점 한 개(.)는 '모든 문자'를 의미하게 된다. 예를 들면 vim에서 /line.\+$ 를 하면 각 줄에서 line 이란 문자열이 나타나는 곳에서부터 아무 문자(.)나 아무 개수(\+)나 나오고 줄 끝($)까지 를 찾는다는 의미이다. 그래서 다음과 같은 결과를 얻는다. 그 원리를 도식적으로 설명하자면 다음과 같다. 문제는 .\+ 을 사용하여 특정 조건으로 감싸는 모든 글자를 선택.. 2011. 2. 21. 이전 1 ··· 18 19 20 21 22 23 24 ··· 55 다음