헤르만 헤세와의 인연은 청년으로 "데미안"을 만난 것으로 시작되었다. 삶의 무게와 청춘의 고민으로 버거워 했던 그때에 만난 데미안은 읽지 못한 고전을 하나씩 읽게 했던 계기를 마련해 주었다. 인터넷이 등장하기 휠씬 이전이고 PC 통신이 삑하는 모뎀 소리와 함께 삶의 탈출구 역할을 하곤 했으나 명작이 가져다 주는 위안 만큼의 묵직함이 있지는 않았다. 데미안 이후 만난 헤세의 책은 "싯다르타" 였다. 강의 흐름 앞에서 인생의 의미를 깨닫는 주인공을 그리는 장면은 너무도 인상적이어서 친구들과 호를 만들어 부를 때 내 이름의 소재로 사용하기도 했다. 얼마전 스승의 날 은사님을 뵈러 가면서 서재에서 고른 책이 바로 헤르만 헤세의 "페터 카멘찐트" 였다. 기차 여행이나 전철에서의 독서 만큼 좋은 독서 환경도 없다...
소만(小滿)의 해바라기는 벌써 키가 1미터 가까이 되고 굵기도 단단해져서 아무리 세찬 바람이 와도 넘어지지 않을 것 같은 믿음을 준다. 해바라기가 해를 따라 움직인다고 해서 몸 전체의 방향을 트는 것은 아니다. 아침 일찍 보면 해바라기의 꼭대기 부분이 동쪽으로 약간 기울어져 있다가 퇴근 무렵에는 해가 기우는 서쪽으로 꼭대기 부분이 약간 기울어져 있는 것을 보면 분명 해를 따라 움직이는 것은 맞다. 덩치가 큰 만큼 아침 일찍과 저녁을 비교해 보면 분명 움직임은 있는 것이다. 분명 살아있지만 유독 움직임이 없는 존재가 있다. 해바라기 입장에서는 깔 맞춤 손님 이랄까 녹음의 색을 입은 청개구리다. 가까이 보면 투명한 눈동자는 가끔 껌벅이면서 자신 또한 자신을 바라보고 있는 관찰자처럼 이 세상의 한 존재임을 시..
소만(小滿)의 때에 만남 이를 모른 나무의 꽃에 발거음이 멈추고 눈동자가 어찌할바를 모르고 마음은 온통 순백의 웨딩 드레스를 입은 아름다운 신부에 넋을 잃은 사람처럼 고개를 부끄럼없이 쳐들고 있다.때죽나무과의 때죽나무라는 명찰을 차고 아파트 단지 한 귀퉁이에서 자태를 뽐내고 있지만, 햐얀 동백도 아닌 것이 노오란 꽃술을 달고 벌건 백주에 하얀 등을 매달고 나무 문외한의 눈길을 사로 잡는다. 많은 꽃 들은 벌을 부르려고 하늘을 향해 꽃잎을 여는데 하얀 꽃잎은 땅의 기운을 받으려는지 온통 땅을 향해 아래로만 펼쳐있다. 박쥐도 아닌것이...... 추위와 공해에 강한 특성 때문일까, 꽃술이 동백을 담아서 일까? 동백나무가 없는 곳에서는 기름 성분이 많은 때죽나무 열매의 기름으로 동백나무 기름을 대신 했다고 한다..
프로그램을 개발하고 골치 아픈 번역이나 분석거리에 매이다 보면 한두시간에 한번씩 자리를 벗어나 사무실 근처를 짧게 산책하는것 만큼 위안을 주는 것은 없습니다. 10분 내외로 끝나는 짧은 산택이고 누군가 트루먼 쇼처럼 나를 매일 매일 관찰하고 있다면 마치 재미없는 반려 동물처럼 하던 행동을 다시하는 일상의 반복일 수 있지만 모니터에 집중해 있던 시선을 파란 하늘과 계절에 따라 옷을 갈아 입는 나무를 옮기면서 마음에는 뜻하지 않은 평안을 가져오고 하던 작업을 정리해서 다시금 집중할 수 있게 하는 에너지를 충전해 줍니다. 계절이 입하와 농번기의 절정인 망종 사이에 있는 소만(小滿)의 때에 산책길에 만난 자엽자두의 색은 눈과 마음을 매혹하기에 충분했습니다. 잎도 열매도 자주색인 자엽자두 나무는 장미과로 토종 나..
※ 연관글 목록무료 마인드맵 FreeMind 설치하기핫키로 배우는 FreeMind무료 마인드맵으로 생각 정리하기Freemind로 마인드맵 작성하기FreeMind 번역 수정 및 추가하기FreeMind 속성 기능 활용하기지도를 표시하는 마인드맵마인드맵 찾기/바꾸기마인드맵에 이미지, 파일, 링크, 구름 삽입하기보안 기능으로 더욱 똑똑해진 마인드맵브레인스토밍을 비롯한 회의 도구로 무료 마인드맵 Freemind 활용하기마인드맵 노드 복제 기능 사용하기프리마인드 편집 메뉴 돌아보기마인드맵 포맷(서식) 완전정복마인드맵 탐색 요령 익히기마인드맵과 시간관리마인드맵 필터 기능 사용하기프리마인드 사용팁 공유마인드맵 공유와 협업하기마인드맵 내보내기/불러오기프리마인드 1.0.1 한글 번역 수정판 공개무료 마인드 맵 FreeMi..
다국어 기반으로 응용 프로그램을 작성하는 경우 아래의 그림과 같이 "키=내용"으로 단순 구성된 각 언어별 파일을 만드는 방식을 많이 사용하게 됩니다. 이런 다국어 기반의 응용을 지속적으로 버전업 하다 보면 대부분 영어 번역이나 한글 번역등 중심이 되는 기본 언어 파일에는 내용을 추가하거나 변경하지만 다른 언어에 대해서는 추가 및 업데이트를 소홀하게 되는 경우가 많습니다. 특히 커뮤니티의 기여를 통해서 번역을 확장해 가는 오픈 소스 프로젝트의 경우에는 더더욱 이런 현상이 비일비재한 것이 사실입니다. 프로그램은 새로운 버전이 릴리즈 되었는데 정작 번역 파일은 따라가지 못하다보니 듬성 듬성 번역되지 않은 것 때문에 프로그램이 불완전하게 보이기도 합니다. 이런 상황을 보완하기 위해서 기본 언어와 번역 대상을 하..
C# 에서는 System.Math를 통해서 다양한 수학 함수를 제공하고 있습니다. 그중에서도 자주 사용하는 반올림 연관 함수를 정리해 놓습니다. 기본적인 사용 형태는 다음과 같습니다.반올림 Math.Round(값) Math.Round(값, 소숫점)올림 Math.Ceiling(값)버림 Math.Truncate(값)올림이나 버림의 경우에는 값의 정수부분 만을 결과로 돌려주지만 반올림의 경우에는 소숫점을 지정하지 않는 경우에는 정수 값을 리턴하지만 소숫점을 지정하는 경우 해당 소숫점을 기준으로 반올림한 부동소숫점 값을 돌려줍니다. 숫자를 문자열로 변환하는 format 함수에서도 숫자 형식을 벗어난 소숫점을 반올림 처리하는데 올림이나 내림 처리를 하고 싶을 경우에는 반올림을 감안해서 해당 소숫점의 절반 값을 더..
프로그램 개발을 시작하면서 어떤 프로그램을 어떻게 만들것인지를 결정하는 기획 및 설계 단계도 중요하겠지만 잘 드러나지 않는 매우 중요한 성공 요소는 프로그램 개발을 위한 도구의 선정에 있습니다. 개발 조직이 사용하는 도구가 표준화되어 있어 오랜 기간 지속적인 사용으로 이미 익숙한 상태라면 별도의 논의가 필요없을 수도 있지만 이런 조직의 경우에도 프로젝트 시작 이전에 코딩 스타일 표준화를 위한 도구 설정법과 생산성있는 작업을 위한 Tech Tip 나눔의 시간을 가질 필요성이 있습니다. 또한, 도구는 지속적으로 발전하고 있으므로 주기적으로 도구 사용에 관련한 토론의 시간을 가지고 내부 위키 저장소나 KMS(Knowledge Management System)에 관련 내용을 정리해 놓아서 팀원들이 수시로 관련 ..
돌아보면 농촌 생활에 있어 닭 사육은 이제는 꼭 필요한 것이 아닌가 여겨집니다. 조류 인플루엔자 파동이면 나라 전체가 생매장의 홍역을 앓는 이상한 나라에 살고 있지만 닭을 키워 파는 것도 아니고 이동시키지도 않는 자가 소비 수준의 닭 사육은 농가에 있어서는 꼭 필요한 것이 아닌가 싶습니다. 사람이 먹다 남은 것은 개를 통해 처리하거나 퇴비화시키고 음식을 만들기 이전의 야채 찌꺼기나 보리차 잔유물등은 닭의 먹이로 훌륭하게 활용될수 있습니다. 무엇보다 밭에 잡초를 뽑거나 가을에 메뚜기나 방아깨비를 잡는 일이 잡초를 없애 버리거나 해충을 없앤다는 짜증 섞인 생각이 아니라 닭의 먹이를 제공하기 위한 활동이라는 목적을 가진 생산적 활동으로 만들어 줍니다. 벼, 밀, 보리, 콩 탈곡 과정에서 자투리 처리에 시간과 ..
한여름 호박 넝쿨만큼 그 생명력을 견줄 식물이 또 있을까? 늦가을이나 이른 봄 똥거름이라도 한 바가지 묻어놓은 곳이라면 넝쿨은 가지마다 손을 뻗어내느라 제정신이 아닐겁니다. 주인은 호박을 심었는지 버렸는지 잊어버릴 쯤 되어 작대기 하나 들고 호박 덩쿨을 헤집다 보면 엉겁결에 발견하는 호박덩이는 먹지않아도 이미 포만감과 성취감을 느끼게 하는 마력을 지녔습니다.농촌에 내려야 빼먹지 않고 심은 작물이 호박인데 두종류를 심어 왔습니다. 하나는 단호박이고 다른 하나는 조선 호박입니다. 두가지 호박을 같은 시기에 심어도 단호박은 조선 호박보다는 수확시기가 빨라서 이모작이 가능할까 하고 몇번 시도해 보았는데 아직 성공은 하지 못했습니다. 조선 호박은 애호박 시절에는 3~4일만 지나도 크기가 엄청 커지고 속에는 씨도 ..
프로그래밍을 C언어로 시작하는 분들은 한편으로는 가장 핵심적이면서도 기반 기술이 되는 프로그래밍 언어를 배운다는 장점이 있는 반면 "개발자를 위한 프로그래밍 언어"라는 별명에서 유추할 수 있는 것과 같이 컴퓨터 시스템에 대한 배경 지식을 가지고 있는 "개발자"가 아니라면 재미없고 복잡한 마치 "암호"와 같은 언어가 될지도 모르겠습니다. C언어를 처음으로 접한지 어언 20여년이 지나가고 있는 세월이지만 그 때나 지금이나 C언어는 "단순함"과 "자유로움", 그리고 무한한 "확장성"을 두고 개발자를 위한 프로그래밍 언어라 하지 않았나 생각합니다. C언어를 비롯해서 파이썬(Python), Java, C++, C#, Visual Basic등을 비롯한 프로그래밍 언어와 PHP, ASP, JSP, JavaScript..
비주얼스튜디오를 사용하여 화면을 작성하거나 데이터베이스를 다루면서 자주 접하는 창이 있다면 도구 상자(Toolbox) 입니다. 시스템에서 미리 준비한 다양한 컨트롤을 끌어다놓기(Drag & Drop)으로 사용자 화면에 추가하고 해당 컨트롤의 몇가지 속성만 설정하면 간편하게 관련 기능을 사용할 수 있는 방식입니다. 도구 상자의 구성을 살펴보면 공용 컨트롤, 컨테이너, 메뉴 및 도구 모음, 데이터, 구성요소, 인쇄, 대화 상자, WPF 상호 운용성, 보고, VB PowerPacks 등 비주얼스튜디오에서 C#으로 기능을 만들어가는데 필요한 대부분의 것이 잘 준비되어 있으므로 개발자 입장에서는 자신이 구현하려는 기능에 적절한 요소를 잘 찾아서 배치하고 설정하는 것만으로도 프로그래밍을 수행할 수 있는 환경입니다...
C# 프로그램을 개발하다보면 계산 결과를 윈도우 폼의 레이블이나 편집창에 표시하거나 콘솔 모드에서 화면에 출력하는 것으로 기능 수행을 끝내게 되는 것이 보통입니다. C#에서는 변수명.ToString()으로 간단하게 문자열로 변환해서 출력할 수 있지만 소수점이나 폭맞춤등의 필요에 따라 사용자가 원하는 형식으로 변환해야만 하는 경우가 생기는데 이런 경우를 위한 형식 지정 방법을 다룹니다. decimal value = 1234.567m; Console.WriteLine("Default : " + value.ToString()); Console.WriteLine("Basic format : " + value.ToString("C2")); Console.WriteLine("Multi format {0:C2}", ..
요즘 컴퓨터를 배우는 학생들을 보면 컴퓨터를 처음 만지는 순간부터 마우스를 붙잡고 화면 창을 통해서 클릭, 더블클릭, 끌어다놓기로 왠만한 작업을 하다보니 프로그래밍을 배우고는 있지만 텍스트만 표시되는 콘솔 창에서의 작업은 뭔가 친하지 않은 느낌을 받는 모양입니다. PC, 스마트폰과 태블릿까지 온통 GUI(Graphic User Interface) 기반이다 보니 요즘 컴퓨터를 배우는 사람에게 텍스트 기반으로 콘솔 환경이 익숙치 않음은 당연한 현실이 아닌가 싶기도 합니다.그렇지만, 프로그래밍을 본격적으로 배우고 다양한 프로그래밍 언어를 만나다 보면 콘솔 환경에서 작업하는 것에 대한 기본적인 이해는 필수입니다. 대부분 컴퓨터 시스템의 핵심 기능은 GUI 기반이 아니라 텍스트 기반이기 때문입니다. 물론 콘솔 환..
작업을 하다보면 소스 코드나 텍스트 파일, 최근에 설정 파일의 대세를 이루는 XML파일, 다국어 체계에서 사용하는 프로퍼티 파일까지 이전 내용과 현재 내용에 어떤 부분이 달라졌는지 간편하게 확인하고 필요한 경우 파일 간에 비교하면서 라인 단위로 손쉽게 넣고 빼고 싶을 경우가 있는데 이때 사용할 수 있는 도구가 윈머지(WinMerge)입니다. 윈머지를 사용하면 폴더 단위로 비교해서 변경된 파일을 찾아서 어느 부분이 변경되었는지도 쉽게 확인할 수 있을 뿐만아니라 새롭게 추가된 파일과 삭제된 파일도 간편하게 확인할 수 있습니다. 오픈 소스 프로젝트로 http://sourceforge.net/p/winmerge/code/HEAD/tree/trunk/에서 소스 코드를 다운로드 받아 직접 수정해서 사용할 수 있을 ..
데이터베이스를 사용하는 프로그램을 개발하는 경우 대부분은 특정 데이터베이스를 선택하여 사용합니다. C# 닷넷 기반으로 개발하는 경우 해당 데이터베이스 연관 라이브러리를 참조로 추가하여 간편하게 프로그램을 작성하면 됩니다. 닷넷 프레임워크에서 SQL Server DBMS를 사용하는 경우에는 두 제품 모두 마이크로소프트에서 만든 것으로 쉽게 프로그램을 작성할 수 있는 것은 닷넷 환경에서는 어찌 보면 당연한 현실이 아닌가 싶습니다. 그런데, 오라클이나 MySQL과 같은 다른 데이터베이스를 사용한다고 해서 사용법이 크게 달라지는 것은 아닙니다. 다른 데이터베이스를 사용하는 경우에는 이름만 약간 달라질 뿐이지 사용 형태는 SQL Server를 사용하는 경우와 매우 유사합니다. 예를 들어 SQL Server에서 D..
※ 연관글 목록무료 마인드맵 FreeMind 설치하기핫키로 배우는 FreeMind무료 마인드맵으로 생각 정리하기Freemind로 마인드맵 작성하기FreeMind 번역 수정 및 추가하기FreeMind 속성 기능 활용하기지도를 표시하는 마인드맵마인드맵 찾기/바꾸기마인드맵에 이미지, 파일, 링크, 구름 삽입하기보안 기능으로 더욱 똑똑해진 마인드맵브레인스토밍을 비롯한 회의 도구로 무료 마인드맵 Freemind 활용하기마인드맵 노드 복제 기능 사용하기프리마인드 편집 메뉴 돌아보기마인드맵 포맷(서식) 완전정복마인드맵 탐색 요령 익히기마인드맵과 시간관리마인드맵 필터 기능 사용하기프리마인드 사용팁 공유마인드맵 공유와 협업하기마인드맵 내보내기/불러오기프리마인드 1.0.1 한글 번역 수정판 공개이미 마인드맵을 사용하고 있..
※ 연관글 목록무료 마인드맵 FreeMind 설치하기핫키로 배우는 FreeMind무료 마인드맵으로 생각 정리하기Freemind로 마인드맵 작성하기FreeMind 번역 수정 및 추가하기FreeMind 속성 기능 활용하기지도를 표시하는 마인드맵마인드맵 찾기/바꾸기마인드맵에 이미지, 파일, 링크, 구름 삽입하기보안 기능으로 더욱 똑똑해진 마인드맵브레인스토밍을 비롯한 회의 도구로 무료 마인드맵 Freemind 활용하기마인드맵 노드 복제 기능 사용하기프리마인드 편집 메뉴 돌아보기마인드맵 포맷(서식) 완전정복마인드맵 탐색 요령 익히기마인드맵과 시간관리마인드맵 필터 기능 사용하기프리마인드 사용팁 공유마인드맵 공유와 협업하기마인드맵 내보내기/불러오기프리마인드 1.0.1 한글 번역 수정판 공개정리(整理)의 사전적 의미인..
금번 초대장 배포는 완료되었습니다. 댓글로 참여해 주신 모든 분께 감사의 말씀드립니다.티스토리 시작할 때 초대장 받으려고 전전긍긍 했던 기억을 떠올리면 초대장 배포가 누군가에게 도움에 되었으면 좋겠네요. 초대장 15장을 조건부 선착순으로 배포합니다. 더이상 배포할 초대장이 없으면 제목과 댓글로 배포 완료를 표시해 두겠습니다. 조건은 가볍고 간단합니다. 다음에 나열하는 내용중 한 가지라도 경험이나 지식이 있으시거나 검색이 되시면 중복되지 않게 댓글로 달아 주시면 됩니다. 중딩 이상이 포함된 4인 가족의 추천 여행지부부 만의 여행 추천지추천할만한 작지만 알찬 미술관어버이날 어르신에 드릴 만한 추천 선물 정확한 이메일과 성의 있는 댓글에 대하여 초대장을 발송해 드립니다. 즉시 확인할 수 없을 수도 있으니 하루..
어쩌다 사과꽃에 봄처녀를 비유하게 되었는지......사과꽃이 피기전에는 마치 장미꽃처럼 정열적인 붉은 색을 내뿜습니다. 그러다가 꽃잎이 열리면 순백의 마치 웨딩 드레스를 입은 신부의 모습처럼 순결한 아름다움을 뽐냅니다. 삼사십대 여인의 성숙한 아름다움이 장미라면 이십대의 아름다움은 사과꽃이 아닐까 싶습니다. 감히 범적할 수 없는 순결한 아름다움......꽃이 지면 또 한해를 이 벌레 저 벌레와 싸우며 견뎌야 하는 사과나무이지만 부디 꼭 살아서 내년에도 꽃을 피우고 너의 생명력을 벗삼아 그 다음 한해도 힘차게 살아 갈 수 있도록 해주렴!겉 모양은 세상 파도에 휘둘려 낡아가지만 속 마음만은 이십대의 열정과 패기로 살아갈 수 있기를 ......살을 에이는 겨울을 지낸 사과 나무가 열정과 순결의 꽃을 피우듯 한..
중딩 아들의 질문에 답하면서 느끼는 점이지만 수학 문제도, 정보올림피아드 문제도 일상 생활 과정에서 나오는 문제도 그 해결의 시작은 꼼꼼한 관찰을 통해서 명확한 것과 명확하지 않은 것을 구분하는데 있음을 다시금 깨닫게 됩니다. 집중력을 발휘해서 문제해결의 "단서", 즉 명확한 것을 찾는 작업에 정성을 들여야 함을 꼭 잊지 않아야 합니다. 이 문제에는 중요한 몇가지 단서가 있고 그것을 통해 문제를 푸는 과정은 아래와 같습니다. A, B, C, D, E가 모두 다른 수이고 1부터 9사이에 있다.A X E의 값은 9를 초과할 수 없다. 1과 2~9를 곱하는 조합, 2 X 3, 2 X 4 조합만이 존재한다.A X E = D이고 D X E = A 조건을 만족해야 한다. 단, D X E는 10이상의 값도 가능하고 ..
※ 연관글 목록무료 마인드맵 FreeMind 설치하기핫키로 배우는 FreeMind무료 마인드맵으로 생각 정리하기Freemind로 마인드맵 작성하기FreeMind 번역 수정 및 추가하기FreeMind 속성 기능 활용하기지도를 표시하는 마인드맵마인드맵 찾기/바꾸기마인드맵에 이미지, 파일, 링크, 구름 삽입하기보안 기능으로 더욱 똑똑해진 마인드맵브레인스토밍을 비롯한 회의 도구로 무료 마인드맵 Freemind 활용하기마인드맵 노드 복제 기능 사용하기프리마인드 편집 메뉴 돌아보기마인드맵 포맷(서식) 완전정복마인드맵 탐색 요령 익히기마인드맵과 시간관리마인드맵 필터 기능 사용하기프리마인드 사용팁 공유마인드맵 공유와 협업하기마인드맵 내보내기/불러오기프리마인드 1.0.1 한글 번역 수정판 공개일반적으로 마인드 맵은 개인..
해바라기는 해를 따라 움직이는 식물입니다. 아침 일찍 해가 나올 때면 동쪽을 향해 있다가 해를 따라 줄기와 잎 끝 부분, 녹색 꽃봉오리는 천천히 서쪽으로 움직입니다. 햇빛을 최대한 받기 위한 해바라기의 특성이 아닐까 싶습니다. 이른봄 심어 놓은 해바라기를 저녁 퇴근후에 살펴 보면 지는 태양이 아쉬운지 잎의 방향을 서쪽으로 향해 서있습니다.해바라기가 꽃을 피운 다음에는 더이상 움직이지 않습니다. 남쪽을 향해 멈추어 서서 노란 꽃을 피워 수많은 벌들을 모으고 수많은 씨앗을 키워내는 것이지요. 해바라기의 주목할 만한 특성이 또하나 있는데 그것은 뿌리에 있습니다. 해바라기는 자신이 떠나온 땅을 기름지게 하는 대표적인 작물입니다. 해바라기를 키운 땅에는 VA균근이 활성화되어 다음에 심는 식물이 잘 자랄 수 있는 ..
1. 1에서 10까지의 자연수를 모두 곱한 수를 X라고 하자. X를 8진수로 표기하면 제일 오른쪽에 연속으로 나타나는 0은 모두 몇 개일까?① 1 ② 2 ③ 4 ④ 6 ⑤ 8※ 1부터 N까지의 자연수를 모두 곱한 수를 N 팩토리얼이라하고 N!로 표기하는데 10!은 1부터 10까지를 모두 곱한 값입니다. 10!를 8진수로 변환해야 하는데 값도 크고(10!은 3,628,800) 시간을 단축할 필요가 있으므로 팩토리얼을 아래의 그림과 같이 적절하게 분해하는 것도 방법이겠습니다. 자연수인 10진수를 N진법으로 변환하는 과정은 10진수를 N으로 나누면서 그 나머지를 취하면 되는데 10!에서 8로 나누면 나머지는 0이고 몫은 8이 빠진 7! x 9 x 10이 됩니다. 또 8로 나누어야 하는데 2 x 4로 나누면 나..
C# 코딩을 하다보면 구조체나 클래스나 뭔 차이가 있나 싶긴 하지만 몇개의 항목을 가진 간단한 데이터를 구조화해서 다룰경우에는 클래스보다는 struct문을 사용하는 구조체가 적절합니다. 예를 들면 RGB색 정보를 가진 구조체, X, Y 위치를 저장하는 구조체 top, bottom, width, depth의 창 정보를 가진 개체를 구조체로 구현할 수 있을 것입니다. public struct SysInfo { public bool dbstat, netstat; public SysInfo(bool db, bool net) { dbstat = db; netstat = net; } } 구조체는 클래스 처럼 new 생성자로 값을 설정하면서 선언할 수도 있고, 일반 변수처럼 그냥 정의하고 개별 변수에 대해서 직접 초..
C언어로 프로그램을 개발하면서 오류를 찾다가 의외의 장소에서 문제를 찾는 경우가 몇번 있었는데 바로 매크로 입니다. C언어에서는 "#define 매크로이름 매크로내용"의 형식으로 매크로를 정의하는데 이 매크로는 실행 과정에 영향을 미치는 것이 아니라 컴파일 과정에만 영향을 미칩니다. 컴파일러가 C 소스 코드를 본격적으로 컴파일하기에 앞서 전처리 과정을(precompile) 거치는데 이때 다루어지는 것이 #define문을 사용하는 매크로입니다. C언어에서는 #define 말고도 #include, #ifdef등의 전처리 문장이 있습니다. 2015년 정보 올림피아드 예선에서도 이 매크로를 다루었습니다. 위의 문제에서는 sq(x)라는 매크로를 정의했는데 이 매크로는 프로그램 실행 과정에 동작하는 것이 아니고 컴..
올해 올림피아드 예선에 아들을 데려다 주고 집에 오면서 들은 질문입니다. 내 아들이지만 머리속에 들어있는 생각은 도통 알수 없군요. 아무튼 질문을 받았으니 답을 주어야 겠지요. 이 문제는 최단 경로 계산하기라는 전형적인 문제입니다. 계산 공식에는 팩토리얼(factorial, 계승)이 쓰이므로 팩토리얼은 알아야겠지요. n 팩토리얼이라 함은 0부터 n까지의 자연수를 곱한값을 의미하고 n!로 표시합니다. 3팩토리얼은 3!로 표시하고 1X2X3의 값인 것입니다. 0부터 8까지의 팩토리얼 값은 0, 1, 2, 6, 24, 120, 720, 5040, 30320 입니다.문제는 다음과 같았습니다. C를 들러서 A에서 B까지 가는 최단 경로는 A에서 C까지 갈수 있는 최단 경로의 수에 C에서 B까지 갈수 있는 최단 경..
다중 쓰레드를 사용하는 프로그램에서 특정 자원이나 특정 코드에 대해서 동시 접근을 차단하고 한번에 하나의 쓰레드만 수행하도록 교통 정리할 필요가 있을 때 사용하는 자원이 뮤텍스(Mutex)입니다. 대표적인 IPC(Inter Process Communication) 자원으로 공유메모리, 메시지 큐와 함께 세마포어(Semaphore)가 있는데 뮤텍스는 값이 1인 세마포어라고도 할 수 있습니다. 세마포어는 통상 정수값을 가지고 프로세스가 접근할 수 있는 여유도를 지정한다면 뮤텍스는 값이 1이므로 한번에 단 하나의 프로세스나 쓰레드만 접근할 수 있도록 할 수 있는 것입니다. 뮤텍스는 프로그램 중복 실행 방지 보다는 실행중 자원 관리에 사용하는 것이 핵심 용도이지만 프로그램 중복 실행 방지를 통해서 뮤텍스 맛보기..
문제를 보니 올해 처음 참여한 아들이 C언어 공부를 좀더 열심히 했더라면 하는 아쉬움이 남습니다. C언어 기초만 잘 다졌어도 쉽게 맞출 수 있는 문제들이 꽤 있었는데 아쉬움이 있지만 C언어의 기초부터 잘 다져야 한다는 "교훈"을 마음에 새겼으면 하는 바램입니다. C언어 기초와 관련한 몇가지 문제를 풀어보면서 기초를 잘 다졌으면 합니다.18. 다음 중 변수의 이름으로 사용할 수 없는 것은?① thisway ② int_char ③ star*star ④ that_way ⑤ _6_C언어의 변수명은 다음과 같은 특성이 있습니다.영문과 숫자 그리고 밑줄(_ Underscore라 부릅니다)로 구성할 수 있습니다.영문 대문자와 소문자를 구별합니다(Case Sensitive라 합니다) C, C++, Java와 같은 프로..
※ 연관글 목록무료 마인드맵 FreeMind 설치하기핫키로 배우는 FreeMind무료 마인드맵으로 생각 정리하기Freemind로 마인드맵 작성하기FreeMind 번역 수정 및 추가하기FreeMind 속성 기능 활용하기지도를 표시하는 마인드맵마인드맵 찾기/바꾸기마인드맵에 이미지, 파일, 링크, 구름 삽입하기보안 기능으로 더욱 똑똑해진 마인드맵브레인스토밍을 비롯한 회의 도구로 무료 마인드맵 Freemind 활용하기마인드맵 노드 복제 기능 사용하기프리마인드 편집 메뉴 돌아보기마인드맵 포맷(서식) 완전정복마인드맵 탐색 요령 익히기마인드맵과 시간관리마인드맵 필터 기능 사용하기프리마인드 사용팁 공유마인드맵 공유와 협업하기마인드맵 내보내기/불러오기프리마인드 1.0.1 한글 번역 수정판 공개유용한 소프트웨어 도구의 공..