테스트와 디버깅 과정을 거쳐서 프로그램 제작을 끝내면 이제 남은 작업은 프로그램이 동작할 곳에 실행 파일을 복사하고 실행에 필요한 환경 설정이나 파일을 준비하는 것입니다. 이러한 준비 과정을 디플로이(Deploy)라고 합니다. 디플로이는 '전개시키다', '배치하다' 처럼 군사용어로 사용하는 것이지만 소프트웨어를 사용 가능하도록 준비하는 모든 과정을 디플로이라는 IT용어로 사용하고 있습니다. 디플로이에는 릴리즈, 설치, 가동 시작, 가동 중단, 설정 변경, 업데이트, 제거등의 요소가 포함되지만 통상적으로 배포(Distribute)와 설치(Install) 과정을 생각하면 적절하지 않을까 싶습니다. 프로그램은 특정한 한 서버에서만 동작할 수도 있고 불특정 다수의 컴퓨터에서 동작할 수도 있기 때문에 배포와 설치..
봄의 끝자락과 초여름의 경계에서 노란색의 앙증맞은 꽃이 시선을 사로잡습니다. 매자나무 꽃입니다. 매자나무의 학명이 "Berberis koreana"로 이름에 korea가 들어갈 정도로 우리나라가 원산지인 나무입니다. 우리나라가 원산지인 나무이지만 현실적으로는 외국산인 매자나무과의 다른 종들이 많이 심기우는 모양입니다.당매자, 섬매자, 좁은잎매자, 양매자, 홍매자, 자주잎매자, 연밥매자등 매자나무과의 다양한 종류들이 있다고 합니다. 사진을 검색해 보니 우리나라가 원산지인 매자나무는 잎에 있는 톱니 모양이 선명하고 앙증맞은 노란꽃도 무더기로 피더군요.매자나무 열매는 가을이 되면 붉은 열매를 맺습니다. 아무도 관심을 두지 않고 새들도 돌아보지 않은 까닭일까요? 작년 열매가 아직도 매달려 있어 올해 피운 꽃과 ..
볍씨가 잘 준비 되었으면("논 한마지기로 자급자족하기 - 발아, 최아" 참조) 본격적으로 파종과 치상에 들어갑니다. 파종은 씨앗을 뿌리는 것으로 상토에 발아된 볍씨를 넣고 상토로 덮어주는 과정으로 이루어 집니다. 파종이 끝난 모판은 차곡 차곡 쌓아서 볍씨가 뿌리를 내리고 싹을 내도록 하는데 이 과정을 치상이라고 합니다. 볍씨 파종을 위한 상토는 경량상토를 사용합니다. 기계 파종이 아니라 수작업으로 파종하기 때문에 원예용 상토를 사용할 수도 있지만 작업을 해보면 경량 상토가 볍씨 파종에 용이합니다.저희는 보리/밀과 벼를 2모작하기 때문에 보리 이삭이 나올때 파종을 해서 보리/밀이 익을 동안 벼 육모를 하기 때문에 포트모판을 사용합니다. 산파 모판으로 하면 파종 작업은 쉽지만 손으로 찢어서 심어야 하는 어려..
IPO(Input Process Output) 모델은 프로그램을 분석하거나 설명하는데 사용하는 가장 기본적인 모델입니다. 프로그램으로 들어오는 입력 자료의 구조와 형태, 처리 내용과 방식, 출력 자료의 구조와 형태를 명확하게 분석하거나 설계하는 것은 안정적인 프로그램의 시작이라 할 수 있습니다. [49-50] 다음과 같은 문제를 해결하기 위해 프로그램을 작성하였다. 물음에 답하시오. 무게가 서로 다른 개의 물건이 있다. 각 물건은 1부터 까지 번호가 매겨져 있다. 우리는 일부 물건 쌍에 대해서 양팔 저울로 어떤 것이 무거운 것인지를 측정한 결과표를 가지고 있다. 이 결과표로부터 직접 측정하지 않은 물건 쌍의 비교 결과 를 알아낼 수도 있고 알아내지 못할 수도 있다. 예를 들어, 총 6개의 물건이 있고, ..
조금 큰 규모의 프로그램 읽기는 올림피아드 문제를 푸는 것과는 조금 다른 양상을 띄게 됩니다. 올림피아드 문제를 푸는 과정은 코드도 길지 않기 때문에 메인 루프를 찾고 코드의 동작 방식을 파악하면 어렵지 않게 코드의 동작 결과나 의도하는 바를 예측할 수 있습니다. 그러나, 실제 현장에서 사용하는 조금 큰 규모의 프로그램을 읽기 위해서는 해당 코드를 빌드(Build)하여 완성된 프로그램으로 실행되는지 확인할 필요가 있고 구체적인 세부 기능들을 동작시켜서 실제로 접해보는 것이 선행되어야만 합니다. 프로그램을 동작시켜서 기능들이 실제로 어떻게 동작하는지 맛보았다면 코드를 읽는 과정에서 알고리즘의 작성 배경과 실행 결과를 예측할 수 있기 때문에 좀더 명확한 프로그램 읽기에 도움이 될 수 있습니다. 큰 규모의 프..
이번 글에서는 함수가 코드의 핵심 역할을 하는 문제들을 골라 보았습니다. C언어를 기반으로 프로젝트를 수행하다보면 개인적으로 자주 적용하는 프로그래밍 기법 중에 하나가 바로 모듈화 프로그래밍입니다. 모듈화 프로그래밍은 기능 단위로 코드를 나누어 작성하는 것으로 개별 기능을 함수 단위로 나눌 수도 있고 소스 코드 자체를 분할 할 수도 있습니다. C++과 같은 OOP(객체지향프로그래밍) 언어에서는 클래스를 사용해서 기능과 데이터등도 분리하여 묶을 수 있지만 C언어 에서는 데이터를 바라보는 범위(Scope)가 함수 내부인가 외부인가로 단순하게 나누어 지고 함수 외부의 경우 같은 소스인가 아닌가 정도로 나뉘어 지므로 C언어에서의 모듈화는 함수로 기능 나누기가 그 시작이 될 수 있습니다. 실제로 프로그램 작성 과..
침종까지 잘 끝낸 볍씨는("논 한마지기로 자급자족하기 - 탈망, 염수선, 온탕소독, 침종" 참조) 이제 논농사의 가장 중요한 작업 중에 하나인 싹틔우기를 해야 합니다. 볍씨 싹트우기를 최아(催芽) 또는 발아(發芽)라고 해서 큰 농사를 짓는 분들은 볍씨의 안정적인 싹틔우기를 위해서 일정한 온도를 유지하면서 공기를 공급해 주는 발아기 또는 최아기라는 장비를 사용하고 있습니다. 그렇지만, 논 한마지기 농사에서 고가의 장비를 확보하는 것은 비효율적이고 물고기를 키우는 어항에 장착하는 간단한 도구와 수작업을 통해서 간단하게 DIY 발아기를 만들어 사용하고 있습니다.볍씨 발아를 위한 최적 온도는 30~34도라고 합니다. 위의 도구는 어항의 물 온도를 유지시켜주는 것으로 물온도가 지정한 온도보다 낮으면 하단의 코일을..
프로그램 소스를 대하는 학생들의 입장에서는 올림피아드 문제들이 무슨 수수께기 푸는 놀이도 아니고 머리만 아픈 이 일을 굳이 왜 해야할까? 하는 사람들이 있을지도 모르겠습니다. 그렇지만 "프로그램 읽기(Reading source code)"는 프로그래머(개발자)에게는 숙명과 같은 일 입니다. 그렇지만 개발자의 생리 자체가 자신이 구상한 것을 프로그램 코드로 일단 작성하고 나면 다시 보려하지 않는 특성이 있습니다. 프로그램을 읽는 경우는 버그를 찾아야 하거나 다른 사람이 작성한 것을 수정해야 하는 경우, 또는 조직에 프로그램 리뷰 프로세스가 있는 경우 리뷰할 목적으로 읽는 정도입니다. 그러나, 프로그래밍 기술을 성장시키는 가장 좋은 방법 중에 하나는 잘 작성된 프로그램을 읽는 것입니다. 예를 들면 가장 널리..
간만에 초대장 배포 글을 씁니다.티스토리는 초대장을 배포하면서 여러분과 소통하는 재미도 있는것 같습니다.저희 집에는 고3 딸이 하나 있습니다. 시류와는 다르게 일반 대학 진학 보다는 고등학교 졸업후 취업을 목표로 준비하고 있습니다. 취업하면서 방송 통신 대학교에서 하고 싶은 공부를 계속할 계획도 있습니다.컴퓨터 그래픽에 소질이 있고 글쓰기 재능도 있어서 관련 분야에서 취업하면 좋겠다는 소망을 가지고 있지만, 지켜보는 입장이나 본인이나 막막한 미래가 그리 녹록하지는 않습니다. 일단 현실에 충실하면서 최선의 준비를 할 뿐이지요.여러분은 고졸 여성으로 성공적으로 취업하는데 어떤 준비가 필요하다고 생각하시나요? 이런 곳에서 일하는 것도 좋다 라던가, 이런 사례도 있다 등등 자유롭게, 다만 성실한 조언을 이메일과..
복합 대입 연산자는 +=, -=, *=, /= 처럼 산술연산자(+, -, *, /, %)나 비트연산자(>>, 2) { tot += (n / 10 + 1) * i; } else { tot += (n / 10) * i; } a += i * (n % 10); i *= 10; n /= 10; } printf("%d\n", tot); ① 616 ② 617 ③ 618 ④ 619 ⑤ 620 위의 문제는 정수 연산과 복합 대입 연산자를 잘 알고 있다면 어렵지 않게 풀 수 있습니다. while문의 조건이 n이 0보다 클동안이므로 n의 값이 0이거나 음수면 루프를 빠져나갑니다. n의 값을 10으로 나누면서 루프를 수행하므로 결과적으로 n의 값이 2015, 201, 20, 2일 동안 총 4회 수행하면서 tot의 값을 더해 ..
최근의 웹페이지들은 UTF-8인코딩을 채용하는 경우가 점점 늘어나고는 있지만 윈도우 환경이 지배적인 한국에서는 여전히 EUC-KR인코딩 내지 CP949 인코딩을 지원해야하는 것은 한국 개발자들의 숙명이 아닌가 싶습니다. 최근 PHP 환경에서 인코딩 변환을 하다가 문제를 해결한 사례를 메모해 둡니다. 웹서버는 UTF-8 인코딩으로 웹페이지 및 MySQL 데이터베이스에 저장하는 체계인데 서너개의 테이블을 조인해서 엑셀로 내려받기하는 기능을 추가하려 했습니다. DB 쿼리도 문제없고 테스트 과정에서 댓글도 하나로 잘 조인 되었습니다. SELECT t.id, t.type ttype, FROM_UNIXTIME( t.time /1000000 ) ctime, t.priority, t.owner, t.reporter, ..
노트패드++를 소스코드 편집기로 사용하는 경우 문법에 따른 색 구별 표시나(Syntax Highlight) 자동 들여쓰기(Auto Indentation)등의 기능은 무리없이 동작하지만 이클립스나 비주얼스튜디오에서 지원하는 코드 자동 정렬하기는 기능에는 없습니다. 오래된 코드나 기타 이유로 들여쓰기가 제대로 정리되지 않은 코드를 일부 또는 전체를 대상으로 일괄 정리하려면 플러그인을 설치해야 합니다.플러그인>Plugin Manager>Show Plugin Manager 메뉴로 플러그인 매니저를 열고 사용할 수 있는 플러그인 목록이 나오면 "TextFX Characters" 플러그인을 찾아 체크하고 하단의 [Install] 버튼을 클릭합니다. 인터넷을 통해 목록 검색 및 설치 과정이 진행되므로 인터넷이 연결되..
산책길에서 만나는 수많은 나무를 분류하는 방법은 나무 종류 만큼이나 다르겠지만 나무의 크기로 분류하면 교목(喬木)과 관목(灌木)으로 분류할 수 있습니다. 교목은 소나무나 참나무처럼 땅속에서 큰 줄기 하나가 나와서 5~6미터 이상 키가 자라는 높이 자라는 나무를 말합니다. 반면에 관목은 개나리, 쥐똥나무처럼 키가 크지 않게 자라고 땅속에서 여러 주기로 나누어져 크고 꺾꽂이나 휘묻이로 쉽게 번식하는 특징이 있습니다.교목들은 통상 올려다 보게되고 관목들은 보통 사람 눈높이로 관리하기 때문에 사람에게 친숙한 것은 관목이지 않을까 싶기도 합니다. 관목의 가지치기를 사람의 눈높이 보다는 아래쪽으로 하기 때문에 잎에도 꽃에도 쉽게 접근할 수 있는 특징이 있습니다. 다만 잔가지가 많고 쉽게 가지로 번식하기 때문에 이런..
별도 연대를 빠져 나온 올레길 18코스는 벌랑포구를 향하여 마을을 가로지르며 길을 냅니다.마을 길을 걸으면서 아직도 초가 지붕을 덮고 있는 집. 아주머니가 사다리 위에서 남성을 대신해서 사다리에 올라 나무의 가지치기를 하고 있는 집. 정성스레 정원을 가꾸어 놓아 올레꾼의 눈길을 사로 잡는 집등 제주 사람들의 생활상을 만날 수 있어 걷는 재미가 쏠쏠합니다. 그 중에 하나가 육지와는 다른 농사 풍경인데 육지 같으면 초봄 날씨에 비닐 하우스에서 한창 열매를 내고 있을 딸기가 제주에서는 노지에서 크고 있는 것입니다. 비닐하우스의 보호 없이 올곧이 햇빛을 받아 자란 제주 딸기의 맛은 어떨까요?수많은 용천수 중의 하나 "새각시물". 표지석이 재미있습니다. "엣 사람이 여자의 몸매를 닮았다고 하여 새각시물이라 이름 ..
올레길 18코스에서 사라봉을 내려와 열심히 걷다보면 만나는 특이한 길 하나, 돌다리 건너기입니다. 위의 보이는 하천은 "화북천"인데 한라산에서 발원한 여러 지천들이 합류하여 바다를 향해 흘러가다가 바다와 만나는 지점입니다. 하천 건너편에 이곳이 올레길임을 표시하는 리본이 나부낍니다. 돌다리로 건너는 길이기 때문에 비가 많이 오면 건너지 못하니까 이럴때는 "화북 비석거리"로 우회해서 길을 계속 가면 됩니다. 그런데 딱 이 지점에서 발길을 멈추게 하는 아픈 역사의 흔적이 있습니다.곤을동 4.3 유적지입니다. 남아 있는 것은 집터의 돌담뿐이지만 억울하게 죽어간 수많은 양민들의 가슴 아픈 사연들이 귓가에 들리는 듯 합니다. "제주4·3사건 진상규명 및 희생자명예회복에 관한 특별법"에서는 4.3 사건을 다음과 같..