대부분의 일반적인 응용 프로그램에서는 사용할 가능성이 거의 없지만, 약간 도구성의 프로그램을 개발하거나 직접 _paint 메시지를 받아서 이미지나 텍스트를 드로잉 하는 프로그램의 경우에 화면 크기를 벗어나는 영역에 대한 처리를 위해서는 스트롤 바 컨트롤을 적용하는 것이 사용자 편의성을 높여 주는 방법이라 할 수 있다. 비주얼 스튜디오 도구 상자에서는 수직 방향의 컨트롤을 위한 VScrollBar와 수평 방향의 컨트롤을 위한 HScrollBar 컨트롤을 제공하고 있으므로 해당 컨트롤을 폼에 삽입하여 처리한다. 폼에 스크롤바 컨트롤을 추가한 다음에 속성 창에서 Dock를 VScrollBar는 우측(Right)으로 붙도록, HScrollBar는 아래쪽(Bottom)으로 붙도록 설정해 준다. Dock 값을 Ri..
다중 사용자 환경이 아닌 응용 프로그램의 데이터베이스로는 SQLite 만한 것이 없다. 윈도, 리눅스, 맥과 같은 범용 운영체제뿐만 아니라 안드로이드 등 수많은 환경에서 SQL 기반으로 프로그래밍을 할 수 있기 때문이다. 파일 시스템을 사용하는 소위 삽질을 하지 않더라도 SQL을 사용해서 가독성도 높이고 생산성과 유지보수 등에 있어 수많은 장점을 가진 프로그램을 개발할 수 있다. SQLite를 사용하는 프로그램은 프로그램 배포 과정에서 문제가 발생할 수 있다. 개발 환경에서는 문제없이 잘 동작했는데 막상 실제 수행 환경으로 가면 종종 문제가 발생하는 것이다. 대부분의 문제를 살펴보면 그 원인은 라이브러리에 있는데 수행 환경의 32비트/64비트 환경과 일치하는 라이브러리가 배포되지 않았기 때문이다. 32비..
C# 프로그래밍을 하다 보면 글자색이나 배경색을 선택할 때 위의 그림처럼 사용자 지정, 웹, 시스템으로 크게 나누어 미리 정의된 색상을 선택할 수 있다. 물론 각 색상에는 영문으로 색상 이름이 부여되어 있기도 하다. 통상 색상을 선택하거나 바꾸는 작업에는 별 문제가 없다. 그런데, 사용자로 하여금 특정 요소의 색상을 바꿀 수 있도록 기능을 제공하는 경우는 이야기가 조금 달라진다. 이런 기능을 제공할 때는 색상 선택, 선택한 색상 정보 저장, 저장한 색상 정보를 컨트롤에 적용하는 단계들이 개입하는데 각 단계별로 색상 정보를 어떻게 다룰지가 전체적인 기능 구현에 영향을 미친다. 색상을 선택하는 단계는 ColorDialog 컨트롤을 가져다 사용하면 간단히 해결된다고 생각할 수 있다. 물론 대화창 인스턴스의 C..
얼마전 프로젝트에서는 영문 윈도우 개발환경을 사용해야 했는데, 영문 환경에서 이전 프로젝트의 공통 모듈을 사용하려다 보니 한글로 기입했던 주석들이 모두 깨져 보이는 문제가 발생했습니다(물론 영문 윈도우 환경에서 비주얼스튜디오를 사용했습니다). 그래서 jEdit 텍스트 편집기로 해당 소스를 불러보았더니 정상적으로 표시되었습니다. jEdit에서는 EUC-KR을 기본 인코딩을 설정해 놓았기 때문이었는데 이것을 UTF-16 인코딩으로 바꾸어서 저장한 다음 비쥬얼스튜디오에서 다시 열어보니 정상적으로 보여졌습니다. jEdit에서의 인코딩 변환은 화면 우측 하단에 있는 인코딩 표시를 더블클릭하여 위의 화면과 같이 조정하신후 저장하시면 됩니다. 문제는 헤더, C/C++소스, 텍스트등 한글이 포함된 것을 일일이 하나씩 ..
개인적으로 프로그램을 제작 하거나, 오픈 소스로 자유롭게 코딩하는 경우가 아니라면 대부분의 프로젝트나 개발조직에서는 프로그램 제작 지침이나 표준을 만들어서 개발자들로 하여금 상호 약속한 형식에 맞게 코드를 작성하도록 가이드 하는 경우가 있습니다. 대부분의 개발자들이 짜증내며 힘들어 하는 일이지만, 협업의 효율성을 높이고, 코드의 가독성(Readability)을 향상시키며개발자 스스로에게도 디버깅을 용이하게 하는 장점이 있습니다. 물론 제한적이기는 하지만 일단 개발자는 가이드로 부터 자유롭게 개발하고, 디버깅까지 수행한 다음 Code Beautifier를 통해서 일괄 정리하는 방법이 있기는 합니다. 이번 포스팅에서는 일단 약속한 코드 작성 표준에 따라 코딩하는 과정에서 한줄에 너무 긴 코드 작성이 되지 않..
비주얼스튜디오를(이하 VS) 사용하는 VS 고수분들은 자주 사용하는 기능 일 수 있지만 아직 이 기능을 접해보지 않은 개발자에게는 마술과 같은 결과를 도출할 수 있는 방법입니다. 이해를 돕기위해 이런 경우를 상정해 볼까합니다.PutLog( ERROR, 1, "Program started!!!"); 같은 형태로 프로그램 실행중 계속적으로 로그를 찍는 프로그램을 쭉 작성해 놓았습니다. 전체 프로그램 개수와 라인은 몇 천일지 몇 만 일지 모르고요. PutLog함수 호출시 첫번째 파라미터는 로그의 종류, 두번째는 심각성을 설정하기로 했었는데 #define문을 찾기도 귀챦고 대부분 GENERAL(1)이어서 Name을 쓰지 않고 그냥 값을 쓴 경우도 허다한 상황이 입니다. 그런데, 코드 리뷰 과정에서 코딩 규칙을 ..
C# 솔루션을 가지고 어느 정도 프로젝트를 완성해 가고 있다면 프로그램 배포를 위한 설치 프로젝트를 작성할 필요가 있습니다. 특히 프로그램의 사용자가 다수라면 설치 프로그램은 꼭 있어야 할 필수 요소일 것입니다. 물론 설치 프로그램을 만드는 다양한 도구가 있기는 하지만 이왕에 정식 버전의 비주얼스튜디오를 사용하고 있다면 설치 프로젝트를 활용하는 것이 작업의 효율성을 높이는 방법일 것입니다. 무료인 익스프레스 버전의 비주얼스튜디오를 사용하는 경우는 지원하지 않을 수 있는데 이런 경우에는 압축 프로그램의 Self-Extracting 프로그램 생성 기능을 활용하거나 기타 오픈소스 패키징 도구를 활용하면 됩니다. 다시 비주얼스튜디오로 돌아와서 프로그램의 사용자들이 사내망에 국한되고 항상 네트워크에 연결될 수 있..
오픈소스 프로젝트를 만나거나, 업무로 기존 프로젝트를 분석할때 도구의 좋은 기능을 활용하면 분석의 효율성은 엄청난 차이를 보이기 마련입니다. 유닉스/리눅스 환경에서 vi 에디터 만으로 개발하던 개발자들 조차도 ctags와 vim을 활용하면 왠만한 IDE 부럽지 않은 코드 분석 환경을 사용할 수 있었으므로 최근의 IDE에서 관련 기능을 찾기란 그리 어렵지 않은 일입니다. 코드를 읽다가 특정 변수나 클래스, 함수, 메소드등이 어떻게 정의되었는지 확인하려면 Ctrl+F 단축키로 검색을 하는 것이 아니라 코드의 해당 위치에 커서를 둔 상태에서 컨텍스트 메뉴(마우스 우측 마우스)>"정의로 이동"을 선택하면 됩니다. 물론 자주 사용하는 단축키이므로 F12는 외워 두는 것이 좋겠죠! 문제는 어떻게 정의 되었는지를 살..
C#은 C와 같은 프로그래밍 언어이지만 언어를 정의하는 규격(Specification)이 지속적으로 변하고 있는 특성이 있습니다. 이 버전에서는 되고 버 버전에서는 않되는 혼란이 있을 수는 있지만 개발자의 필요를 즉각적으로 반영하여 발전한다는 측면에서는 긍정적입니다. 2002년 C# 1.0 규격이 발표된 이래 현재는 2015년에 발표된 C# 6.0이 최신 규격으로 사용되고 있습니다. 문제는 언어 규격이 바뀌면 바뀐 언어 규격을 모르는 이전 컴파일러들은 새로운 규격을 소화할 수 없으니 당연히 문법 오류(Syntax error)를 발생시킬 것이라는 점입니다. C# 프로젝트의 속성 창에서 빌드>고급을 통해서 위의 그림과 같이 고급 빌드 설정을 확인해 보면 현재의 비주얼스튜디오에서 지원하는 C# 언어의 버전을 ..
프로젝트 초기부터 프로젝트에 대한 코딩 가이드가 작성되어 그 속에 포함된 라이선스 헤더를 소스코드마다 붙여왔다면 문제가 될 것이 없지만 코딩이 거의 완료된 시점에 코드마다 라이선스 헤더를 붙여야 한다면 작업이 귀찮기도 하지만 코드 전체를 일일이 열어서 붙여넣기 해야하는 짜증나는 작업일 수 있습니다.지루할 수 있는 라이선스 헤더 붙이기를 간편하게 일괄로 붙일 수 있는 "License Header Manager"라는 비주얼스튜디오 플러그인이 있습니다. 물론 무료입니다. 필자의 경우 비주얼스튜디오 2010으로 테스트했는데 문제없이 잘 동작했습니다. 2010부터 2015까지 모두 지원하니 간편하게 설치해서 사용할 수 있습니다. 다운로드 및 설치는 비주얼스튜디오 내부에서 간편하게 할 수 있습니다. 도구>확장 관리..
통합 개발 환경(IDE)은 일반적으로 프로그램과 연관되는 소스 코드 편집, 컴파일 및 빌드, 실행, 디버그 과정을 하나의 도구에 통합시킨 것으로 개발자의 개발 생산성과 효율성에 지대한 영향을 미칩니다. 그래서 많은 개발자는 프로젝트를 진행하기 이전에 어떤 통합 개발 환경으로 개발할지를 선택하여 팀웍을 이루어 나갑니다. 파이썬도 예외가 아니어서 통합 개발 환경의 사용 유무는 효과적인 분석과 개발 생산성에 많은 영향을 미칩니다. 파이썬(Python) 실행 환경 준비하기에서 설치한 CPython에는 아래의 그림과 같은 IDLE라는 기본적인 GUI 개발 환경이 포함되어 있습니다. 위의 그림에서 보듯이 IDLE은 기본적인 편집 기능과 함께 자동 완성등 개발자의 편의를 위한 장치를 갖추고 있습니다. 게다가 디버깅 ..
프로그램 개발을 시작하면서 어떤 프로그램을 어떻게 만들것인지를 결정하는 기획 및 설계 단계도 중요하겠지만 잘 드러나지 않는 매우 중요한 성공 요소는 프로그램 개발을 위한 도구의 선정에 있습니다. 개발 조직이 사용하는 도구가 표준화되어 있어 오랜 기간 지속적인 사용으로 이미 익숙한 상태라면 별도의 논의가 필요없을 수도 있지만 이런 조직의 경우에도 프로젝트 시작 이전에 코딩 스타일 표준화를 위한 도구 설정법과 생산성있는 작업을 위한 Tech Tip 나눔의 시간을 가질 필요성이 있습니다. 또한, 도구는 지속적으로 발전하고 있으므로 주기적으로 도구 사용에 관련한 토론의 시간을 가지고 내부 위키 저장소나 KMS(Knowledge Management System)에 관련 내용을 정리해 놓아서 팀원들이 수시로 관련 ..