코로나 19 때문에 계절의 여왕 5월이 어떻게 지나갔는지 모르게 어느새 6월을 바라보고 있다. 예산과 당진, 아산, 서산에 걸쳐 있는 이곳 예당평야는 모내기도 막바지에 이르러, 너른 논에는 물이 차고 드문드문 노구를 끌고 뜬모 작업을 하는 어르신이 푸른 모 속에 잠겨 있는 듯하다. 뜬모는 이앙기가 모를 심었지만 모가 땅속에 잘 박히지 않고 물에 뜬 모를 다시 심거나 이앙기가 심기 어려운 장소를 손으로 모내기하는 것이다. 사실 드넓은 논에 모가 몇 개 심기지 않았다고 굳이 힘들게 뜬모를 하실까? 하는 생각도 들지만 저분들에게는 저렇게 한 바퀴 돌아야 일을 끝낸 마음을 들것이다. 아무튼 주변의 논들은 이제 모내기가 끝나서 뿌리를 잡고 있지만, 한 마지기 우리 논은 위의 그림처럼 보리와 밀이 이제 영글고 있다..
아파치 웹서버나 PHP, 7-Zip과 같은 대표적인 크로스 플랫폼 도구들은 많은 경우 리눅스/유닉스 시스템에서 개발이 시작되어 이후 윈도우나 맥 OS 등으로 확산되는 경우가 많다. 통상 포팅이라는 과정을 거쳐서 윈도우 운영체제에서도 수행할 수 있게 되지만 각 프로그램마다 별도로 배포하는 패키지들은 라이브러리 중복의 문제, 설치/제거 과정의 복잡함 등의 문제를 여전히 가지고 있다. 윈도우에서 리눅스/유닉스의 응용 프로그램을 사용하려는 시도는 Cygwin과 MSYS로 거슬러 올라가는데 스쿱(Scoop)도 그 연장선에 있다고 하겠다. 파이썬의 경우 파이썬으로 만들어진 패키지들은 나름의 리포지토리에서 편리하게 설치할 수 있고, 우분투와 레드헷 계열의 리눅스에서는 apt-get이나 yum 도구로 필요한 도구를 간..
닷넷(.NET) 프레임워크가 윈도우즈를 넘어서 리눅스 진영까지 영향력을 확대하는 상황임에도 불구하고 어떤 닷넷 프로그램들은 내 컴퓨터에서 실행할 수 없는 상황이 발생하고는 합니다. 바로 닷넷 프레임워크의 버전 때문입니다. 닷넷 응용 프로그램의 개발 시점에서도 어떤 닷넷 프레임워크의 버전을 기준으로 할지를 지정하기 때문에 당연히 닷넷의 버전은 매우 중요한 요소입니다. 그래서 요즘에는 프로그램을 설치하기 전에 "시스템 요구 사항"에 있는 닷넷 프레임워크의 버전을 반드시 확인해야만 합니다. 현재 내 시스템에 설치된 닷넷 프레임워크를 확인하는 방법으로 닷넷 디텍터(.NET Detector)를 실행시키는 방법, 레지스트리를 확인하는 방법, 프로그램 추가/삭제에서 설치된 목록을 확인하는 방법, 닷넷 디렉토리의 목록..
전화, 문자, 일정 관리, 인터넷 검색, 동영상 감상, 게임까지 스마트폰은 이미 우리의 삶 깊숙이 들어와 우리의 삶을 지배하고 있는지도 모르겠다. 이런 상황에서 갑자기 터치가 되지 않으면 정말 난감한 상황이 벌어진다. 상당히 많은 정보가 스마트폰에 있는데 액정 수리까지 소요되는 시간과 비용을 생각하면, 스마트폰의 그 어떤 정보도 활용할 수 없으니 정말 난감해 할 수밖에 없다. 이런 경우 좋은 해결책이 바로 OTG(On The Go)케이블과 마우스이다. OTG 케이블은 시중에서 2천 원도 되지 않는 저렴한 도구로 USB 메모리나 키보드, 마우스를 스마트폰에 연결하여 사용할 수 있게 해 준다. 위의 그림처럼 한쪽은 마이크로 5핀으로 스마트폰에 연결하고 다른 한쪽은 USB를 꽂을 수 있도록 되어 있어서 USB..
C언어를 배우고 실무에 적용하던 무렵 대기업 전자 회사에서 운영체제를 담당하는 한 개발자를 만난 적 있었다. 기반 기술이 있고 경험도 많다고 자신 만만해하던 때였다. 어깨너머로 그의 작업 광경을 구경하는데 내 눈앞에 신기한 모습이 펼쳐졌다. 어찌 보면 가장 원시적이라 할 수 있는 vi 에디터로 프로그램에서 발생한 문제를 찾아 가는데, 이리저리 코드의 호출 그래프를 따라 움직이는 것이 환상적이었다. 뭔가 단축키를 누르는 것 같은데 그 원리는 도통 알 수 없었다. 그 사람을 붙들고 물어보니 CTags란 도구를 활용해서 프로그램을 분석하여 태그 정보를 만들어 놓으면 vi(엄밀히 말하면 vim) 에디터에서 해당 정보를 기반으로 함수나 변수가 정의된 곳으로 이동시켜주는 원리였다. 물론 비주얼 스튜디오나 이클립스를..
다양한 CPU, 다양한 운영체제의 홍수 속에서 자바와 .Net과 같은 플랫폼 독립성을 가진 체계가 점점 더 힘을 얻어가고 있는 형국이다. 운영체제나 CPU의 종류에 제한받지 않는 응용 프로그램의 개발 및 배포는 생산성뿐만 아니라 여러 가지 장점을 제공한다. 더구나 끊임없는 하드웨어 성능의 발전은 플랫폼 독립성 때문에 희생해야 하는 성능적인 단점조차도 문제가 되지 않게 해주고 있다. C언어로 작성한 프로그램을 C/C++ 컴파일러로 빌드하게 되면 윈도나 리눅스와 같은 특정 운영체제에서만 수행할 수 있는 기계어 코드가 만들어 진다. 이 기계어 코드는 특정 운영체제에서만 사용할 수 있을 뿐만 아니라 CPU의 제약도 받을 수밖에 없다. 그만큼 개발자의 입장에서는 다양한 플랫폼 환경을 감안해야만 한다. 그렇지만 자..
특정 폴더나 해당 폴더를 포함한 하위 폴더 전체를 검색해서 특정 문자열을 가진 파일과 그 위치를 찾아내는 것은 개발자뿐만 아니라 일반 사용자들에게 종종 발생하는 필요이다. 예를 들어 인기 있는 APM(Apache, PHP, MySQL) 패키지인 XAMPP에서 특정한 값을 조회하거나 설정하는 모든 파일을 찾고 싶은 경우이다. 소스 코드가 될 수도 있고 설정 파일일 수도 있지만 전체 파일을 뒤져서 해당 값을 가지고 있는 파일을 모두 찾고 각 파일 내 라인 위치를 알려준다면 너무도 작업이 쉬워질 것이다. 물론 검색 결과를 선택하면 바로 해당 파일을 조회나 편집할 수 있으면 금상첨화일 것이다. 바로 이런 기능을 수행할 수 있는 것이 노트패드++의 "파일에서 찾기" 기능이다. 물론 이런 기능을 전문적으로 수행하는..
대부분의 일반적인 응용 프로그램에서는 사용할 가능성이 거의 없지만, 약간 도구성의 프로그램을 개발하거나 직접 _paint 메시지를 받아서 이미지나 텍스트를 드로잉 하는 프로그램의 경우에 화면 크기를 벗어나는 영역에 대한 처리를 위해서는 스트롤 바 컨트롤을 적용하는 것이 사용자 편의성을 높여 주는 방법이라 할 수 있다. 비주얼 스튜디오 도구 상자에서는 수직 방향의 컨트롤을 위한 VScrollBar와 수평 방향의 컨트롤을 위한 HScrollBar 컨트롤을 제공하고 있으므로 해당 컨트롤을 폼에 삽입하여 처리한다. 폼에 스크롤바 컨트롤을 추가한 다음에 속성 창에서 Dock를 VScrollBar는 우측(Right)으로 붙도록, HScrollBar는 아래쪽(Bottom)으로 붙도록 설정해 준다. Dock 값을 Ri..