모르는 한자가 있을때 옥편을 찾지 않고 간편하게 확인하는 방법으로는 우선 포털의 사전 페이지에서 지원하는 필기 인식으로 찾는 방법이 있습니다. 마우스로 한 획, 한획 그려서 해당하는 한자를 찾는 방법입니다.("모르는 한자 찾기" 참조) 한획씩 그려서 찾으므로 정확하게만 그리면 한자를 제대로 찾을 수 있지만 마우스로 그리는 것이 의외로 쉽지 않고 한자가 여러개라면 이 방법이 조금 짜증 스러울 수도 있습니다. 마우스로 한자를 그리거나 하는 것이 귀챦거나 여러 한자를 한번에 찾고 싶은 경우에는 사진을 통한 한자 자동 인식 방법을 이용할 수 있습니다. 우선 제일 먼저 해야하는 작업은 한자를 찍은 해상도 좋은 사진을 확보해서 되도록 확인하려는 한자가 있는 부분만으로 사진을 자릅니다. 편집 도구가 없으시면 "가볍고..
파이썬을 스터디하면서 궁금한 것을 그때 그때 구글링을 통해서 해결할 수도 있지만 미리 준비되어 있는 자료를 활용하면 더 효과적인 프로그래밍에 도움이 될 수도 있습니다. 아래의 글들에 이어지는 포스팅입니다. 파이썬 학습 환경 설치 - 파이썬 배우기(Python)파이썬 맛보기 - 파이썬 배우기(Python) ■ 문서화 자료 보기(Module docs) 파이썬 학습 환경을 설치하고 프로그램 메뉴에 있는 "Module docs"를 실행하면 자료를 이용할 수 있습니다. "Module docs"는 pydoc.py 가 문서화 서버가 되어(TCP 7464포트 사용) 파이썬 각종 모듈의 문서화 자료를 검색 및 제공 합니다. pydoc 스스로가 작은 웹서버 역할을 하는 셈입니다. "Search for" 입력창에 단어를 입..
"파이썬 학습 환경 설치 - 파이썬 배우기(Python)"에 이은 글입니다. 파이썬 학습 환경을 설치한 이후 실제로 파이썬 소스 코드를 실행하여 파이썬의 효과적인 학습을 위한 맛보기를 진행합니다. IDLE는 Integrated DeveLopment Environment의 약자로 비쥬얼스튜디오나 이클립스 같은 파이썬의 통합 개발 환경(IDE) 입니다. 물론 비주얼스튜디오나 이클립스 수준의 통합 개발 환경이라고 하기에는 한계가 있습니다. 그렇지만 나름 통합 개발 환경이 가지고 있는 기능들을 조금씩은 가지고 있습니다. 차이점이 있다면 비주얼스튜디오 처럼 편집-컴파일-실행-디버깅하는 전형적인 IDE의 모습과 함께 위의 그림과 같은 파이썬 인터프리터 환경이 함께 제공된다는 점 입니다. ■ 인터프리터에서 직접 실행..
직장이나 집에서 사용하는 컴퓨터에서 수행하는 대부분의 프로그램들은 많은 경우 C/C++, C#, Java등의 프로그래밍 언어로 제작 합니다. 어셈블리나 베이직등의 언어를 사용하기도 하지만 대부분의 응용 프로그램들이 이들 언어로 제작되고 있다고 해도 과언이 아닙니다. 그런데, 이런 환경에서 파이썬이란 언어가 등장한 배경에는 바로 "개발 생산성"에 있습니다. 쉽고 빠르게 개발할 수 있고 라이브러리 활용성, 확장성 및 재사용을 극대화 하면서도 시스템 독립성 확보로 어떤 시스템에서나 제한 없이 사용할 수 있는 그러한 언어를 만들자는 의도로 1980년대말에 네덜란드 출신의 개발자 귀도 반 로섬(Guido van Rossum)에 의해 시작 되었습니다.(http://en.wikipedia.org/wiki/Python..
프로젝트를 진행하는 과정에서 문서들을 워드, 엑셀이나 파워포인트 문서로 작성하다가 발주처나 타사에게는 대부분 PDF파일로 제공합니다. 보안성, 파일 크기, 호환성 등 여러모로 PDF로 전달하는 것이 장점이 많습니다. 그런데, 저장할 문서가 많거나 매일 매일 리비전 문서를 웹에 자동 게시하는 경우등에는 사람이 개입하지 않고 자동적으로 일괄로 PDF로 저장하는 방법이 필요 합니다. 이런 필요를 채울 수 있는 방법으로 전문 문서 변환 도구를 사용할 수도 있지만 도구에 따라 문서의 형태가 이상해지거나 하면 낭패를 볼 수도 있으므로 가장 안전한 방법은 워드, 엑셀, 파워포인트 제작사의 도구를 활용하는 방법 입니다. 마이크로소프트사에서 오피스 2007을 발표할 시점에는 오피스 도구들에 PDF로 저장하는 기능을 기본..
프로그램을 제작하다보면 특정 좌표에 대해 지정한 각도로 회전을 한 새로운 좌표를 구해야 하는 경우가 있습니다. 이럴때는 유용한 것이 회전 행렬 입니다. (x1, y1)은 회전 시킬 점의 좌표라 하고 (x2, y2)를 회전 이후의 좌표라 하면 회전 행렬을 이용해서 다음과 같이 표현할 수 있습니다. 위의 수식을 풀어 보면 아래와 같습니다. x2 = Cos θ * x1 - Sin θ * y1 y2 = Sin θ * x1 + Cos θ * y1 double 라디안 = 각도 * (float)(Math.PI / 180); double x2 = Math.Cos(라디안) * x1 - Math.Sin(라디안) * y1; double y2 = Math.Sin(라디안) * x1 + Math.Cos(라디안) * y1; 위의 ..
웹서비스와 같은 대몬 프로그램을 개발하다보면 스레드가 나뉘어지는 등 프로그램의 처음부터 디버깅하는 것은 적절치 않을 뿐만아니라 디버깅을 걸기도 쉽지 않습니다. 이런 경우 일단 프로그램을 실행시켜두고 서비스 수행중에 실행 될 수 있는 특정 함수에 중단점을(Break point) 설정하여 해당 요청이 있을 경우 프로그램이 어떻게 흘러가는지 분석해 볼 수 있습니다. 이런 작업은 이미 완성형태를 갖추고 있는 서비스를 처음부터 새롭게 분석해야 할 경우나, 오픈 소스 형태로 배포되는 서비스 프로그램을 분석할 때도 요긴하게 사용할 수 있습니다. 내가 프로그램을 처음부터 개발한 것이 아니니 핵심 처리 루틴에 대하여 실제 동작 흐름을 파악할 수 있다면 분석에 큰 도움이 되는 것은 두말 하면 잔소리임을 누구나 동의할 수 ..
단축키를 잘 사용한다 것은 해당 도구가 몸에 익었다는 의미 이기도 하고, 사용하는 단축키의 범위 만큼 도구가 제공하는 기능들을 잘 이해하고 있다는 의미 이기도 합니다. 많은 변화가 있었던 비주얼 스튜디오의 단축키 목록을 통해서 비주얼 스튜디오의 주요 기능을 정리해 봅니다. ■ 검색 및 치환 검색 및 치환 : Ctrl+F, Ctrl+H 솔루션내 전체 파일 검색 및 치환 : Ctrl+Shift+F, Ctrl+Shift+H 파일 검색 결과는 결과창을 1,2로 구분해서 받을 수 있고, F8, Shift+F8로 결과 내부에서 이동할 수 있습니다.정규식, 와일드카드 작성 법 : 검색 및 치환 화면에서 정규식이나 와일드카드 사용을 체크하고 선택후 정규식이나 와일드카드 둘중에 하나를 선택한 다음 "찾을 내용"이나 "바..
Boost 라이브러리는 C++ 라이브러리 중에서 안정성과 성능, 라이선스의 자유로움등 여러 측면에서 개발자에게 도움이 되는 라이브러리 입니다. 윈도우 응용 프로그램에서 레지스트리에 각종 환경 정보 또는 프로그램 설정 정보를 저장하면 간단하지만, 환경 파일의 단순성이라는 장점을 바라보면서 개별 응용의 설정을 XML 파일에 저장하거나 예전의 INI 파일 형태로 저장하는 사례가 여전한데, Boost 라이브러리를 활용해서 이 문제에 대안을 찾아보고자 합니다. Boost 라이브러리에서 제공하는 여러 훌륭한 기능을 사용하고 싶지만 어떻게 하면 좋을지 갑갑한 분들을 위해 라이브러리 설치와 사용, 그리고 XML 파일에 설정 정보를 저장하고 읽는 예제까지 간단하게 다루어 보고자 합니다. ■ 윈도우용 라이브러리 설치하기 ..
유닉스나 리눅스 장비를 만져본 개발자에게 가장 전통적인 도구 vi(vim). vi 도구의 중요성이나 유용성을 다시 강조할 필요는 없지만 오랜 만에 다시 만질 기회가 있어 꼭 필요한 기능들을 다시 정리해 봅니다. 일부 임베디드 시스템에서는 오리지널 vi만 제공하는 시스템도 있지만 대부분의 플랫폼에서 Vim을 지원하고 있으므로(윈도우용 vim도 있고, 이클립스용 플러그인도 있습니다. https://www.vim.org/ 참조) vim을 통해 편리한 개발을 할 수 있도록 필요한 기능들을 메모 형식으로 적어두고자 합니다. vim을 통해 프로그램 분석이나 디버깅을 하고 있다면 ctags 또한 꼭 알아 두어야 할 것 입니다. vi를 처음 접하는 사람들이 가장 적응하지 못하는 문제가 바로 vi의 입력 모드와 컨트롤 ..
가장 인기 있는 독립형 DBMS중의 하나인 SQLite를 비주얼스튜디오 개발 환경에서 편리하게 사용할 수 있도록 준비하고 C#을 기반으로 SQLite를 이용하는 과정을 다룹니다. ■ SQLite DBMS 소개 C# .Net 환경에서 응용 프로그램을 개발하는데 있어 검토해야 할 중요한 아키텍처 요소들은 사용자 인터페이스, 네트워크, 데이터베이스 등을 들 수 있습니다. 그중에서도 시스템을 확장성 있고 깔끔하게 만들 수 있는 핵심 요소는 자료를 저장하고 관리하는 데이터베이스라고 할 수 있을 것입니다. 통상 데이터베이스라고 하면 SQL Server, Oracle, MySQL, CUBRID, Firebird, PostgreSQL등의 DBMS를 떠올리지만 오늘 소개할 데이터베이스는 라이브러리 형태로 응용 프로그램에..
과거 오래된 문서화 자료나 기타 패키지의 폴더 내용을 쭉 트리 구조로 리스팅 해 놓으면 검색 및 분석에 용이한 경우가 있습니다. 개발자에 따라 여러 방법이 있겠지만 검색 및 분석 방법으로 생각나는 것을 대충 정리해보면 윈도우 탐색기로 폴더를 클릭 하면서 찾아보거나콘솔에서 cd 명령을 입력하면서 보거나find나 grep 기타 검색도구로 특정 단어로 검색할 수 도 있습니다. 다음의 방법들은 전체적인 디렉토리 및 폴더의 그림을 확인하는 방법들 입니다. ■ 윈도우 환경 윈도우 환경을 쓰는 분은 간단히 tree /F라고 입력 하면 위의 그림과 같이 트리구조로 파일명까지 출력합니다. 결과를 파일로 저장하시려면 tree /F > result.txt 와 같이 명령을 이용하면 됩니다. ■ 리눅스 환경 리눅스 환경에서도 ..
얼마전 프로젝트에서는 영문 윈도우 개발환경을 사용해야 했는데, 영문 환경에서 이전 프로젝트의 공통 모듈을 사용하려다 보니 한글로 기입했던 주석들이 모두 깨져 보이는 문제가 발생했습니다(물론 영문 윈도우 환경에서 비주얼스튜디오를 사용했습니다). 그래서 jEdit 텍스트 편집기로 해당 소스를 불러보았더니 정상적으로 표시되었습니다. jEdit에서는 EUC-KR을 기본 인코딩을 설정해 놓았기 때문이었는데 이것을 UTF-16 인코딩으로 바꾸어서 저장한 다음 비쥬얼스튜디오에서 다시 열어보니 정상적으로 보여졌습니다. jEdit에서의 인코딩 변환은 화면 우측 하단에 있는 인코딩 표시를 더블클릭하여 위의 화면과 같이 조정하신후 저장하시면 됩니다. 문제는 헤더, C/C++소스, 텍스트등 한글이 포함된 것을 일일이 하나씩 ..
개인적으로 프로그램을 제작 하거나, 오픈 소스로 자유롭게 코딩하는 경우가 아니라면 대부분의 프로젝트나 개발조직에서는 프로그램 제작 지침이나 표준을 만들어서 개발자들로 하여금 상호 약속한 형식에 맞게 코드를 작성하도록 가이드 하는 경우가 있습니다. 대부분의 개발자들이 짜증내며 힘들어 하는 일이지만, 협업의 효율성을 높이고, 코드의 가독성(Readability)을 향상시키며개발자 스스로에게도 디버깅을 용이하게 하는 장점이 있습니다. 물론 제한적이기는 하지만 일단 개발자는 가이드로 부터 자유롭게 개발하고, 디버깅까지 수행한 다음 Code Beautifier를 통해서 일괄 정리하는 방법이 있기는 합니다. 이번 포스팅에서는 일단 약속한 코드 작성 표준에 따라 코딩하는 과정에서 한줄에 너무 긴 코드 작성이 되지 않..
무텍스(Mutex)는 MUTual EXclusion(상호배제)의 의미이며, 특정 시점에 프로세스 또는 스레드 간에 특정 자원이나 역할에 대해 우선권을 갖는 문제를 교통 정리하기 위해서 시스템에서 제공하는 자원 입니다. 유닉스/리눅스나 윈도우 모두 대표적인 IPC(Inter Process Communication) 자원으로 공유메모리, 메시지 큐, 세마포어를 제공하는데 세마포어와 유사한 개념이라고 할 수 있습니다. 자원의 우선권을 획득하기 위해 줄서고, 자원 사용이 끝나면 반환하는 형태는 Mutex나 세마포어나 유사하다고 볼 수 있습니다. 여러 프로세스나 스레드가 동시에 작업을 할 수 없는(동시에 작업을 한다면 문제가 생기는...) 부분에 Mutex를 배치함으로서 시스템 전체적으로 정확한 작업을 할 수 있..