makefile 견본

makefile 견본

.SUFFIXES : .c .o

CC = gcc

INC =
LIBS =
CFLAGS = -g $(INC)

OBJS = tbl.o
SRCS = tbl.c

TARGET = table

all : $(TARGET)

$(TARGET) : $(OBJS)
    $(CC) -o $@ $(OBJS) $(LIBS)

dep :
    gccmakedep $(INC) $(SRCS)

clean :
    rm -rf $(OBJS) $(TARGET) core

new :
    $(MAKE) clean
    $(MAKE)

자주 쓰는데도 항상 까먹는  makefile!-_-/

PROGNAME = calctest
SRCS = $(wildcard *.c)
OBJS = $(patsubst %.c, %.o, $(SRCS))

CC = gcc
CFLAGS = -Wall
LDFLAGS =

$(PROGNAME): $(OBJS)
    $(CC) $(LDFLAGS) -o $PROGNAME $^

clean:
    rm -f $(PROGNAME) $(OBJS) depend

depend: $(SRCS)
    $(CC) $(CFLAGS) -MM $^ > $@

-include depend

참고 : http://www.viper.pe.kr/docs/make-ko/make-ko_8.html

CMonthCalCtrl의 버그

PRB: CMonthCalCtl::GetCurSel(CTime) Returns Wrong Value

Article ID : 235355
Last Review : November 21, 2006
Revision : 2.1
This article was previously published under Q235355

SYMPTOMS

When you use the CMonthCalCtrl::GetCurSel(CTime) to get the date selected
from the Month Calendar Common control, the date in the CTime class is incorrect.

Back to the top

CAUSE

MFC’s implementation of CMonthCalCtrl::GetCurSel() for the CTime class calls SendMessage(MCM_GETCURSEL, &sysTime) where sysTime is a SYSTEMTIME
structure. The MCM_GETCURSEL message does not fill in the hours,
minutes, and seconds part of the sysTime Structure with valid values.
However, the constructor for CTime class takes these values into consideration, so the date in CTime class is incorrect.

Back to the top

RESOLUTION


The workaround is to use the CMonthCalCtrl::GetCurSel(SYSTEMTIME*)
version of GetCurSel for this class to get the correct date. The code
will look like the following example:

   SYSTEMTIME sysTime;

m_MonthCal.GetCurSel(&sysTime);

sysTime.wHour = sysTime.wMinute = sysTime.wSecond = sysTime.wMilliseconds = 0;

CTime l_time(sysTime);


위와 같은 버그로 인해서 CMonthCalCtrl을 쓸 때는 위와 같은 형식으로 날짜/시간을 얻어와야 합니다.

MoniWiki의 메뉴 추가

사용자 삽입 이미지
모니 위키의 메뉴는 기본적으로 대문, 찾기, 목록, 바뀐글, 환경설정 입니다. 이 외에 다른 메뉴항목을 추가하고 싶을 때는 config.php의 $menu 항목을 수정하면 됩니다.

참고로 제 위키의 위 그림과 같은 메뉴를 위한 설정은

$menu=array(‘FrontPage’=>1,’FindPage’=>4,’TitleIndex’=>3,’RecentChanges’=>2,’UserPreferences’=>”,'[wiki:TodoList 할 일 목록]’=>”,'[http://blog.dasomoli.org 블로그]’=>”);

와 같습니다. => 다음에 붙는 저 건 뭔지 잘 모르겠네요;; 왜 메뉴에 숫자가?;;

+ 블로그에도 위쪽에 보시면 “WIKI”가 추가된 걸 보실 수 있습니다. 흐흐.. 😉

색 구분표

No Color Name Color HEX Color 한글 한글식 영문 색상순 명도순
140 white #ffffff 백색 화이트 1 1
132 sea shell #fff5ee 바다 조가비 씨 쉘 1 2
136 snow #fffafa 설백 스노우 1 3
104 ghost white #f8f8ff 허깨비 백색 고스트 화이트 1 4
135 floral white #fffaf0 꽃의 백색 후로랄 화이트 1 5
102 white smoke #f5f5f5 백색 연기 화이트 스모크 1 6
96 alice blue #f0f8ff 엷은 잿빛 바탕에 푸른빛 앨리스 블루 1 7
98 azure #f0ffff 하늘색 애쥬어 1 8
109 old lace #fdf5e6 낡은 끈 올드 래이스 1 9
103 mint cream #f5fffa 박하 크림 민트 크림 1 10
107 linen #faf0e6 리넨 린넨 1 11
139 ivory #fffff0 상앗 빛 아이보리 1 12
90 lavender #e6e6fa 연한 자주색 라벤더 1 13
131 lavender blush #fff0f5 연한 자주 빛 붉기 라벤더 블러시 1 14
97 honey dew #f0fff0 식물의 잎에서 나는 단물 허니 듀 1 15
106 antique white #faebd7 옛날의 백색 앤틱 화이트 2 1
101 beige #f5f5dc 엷은 갈색 베이지 2 2
134 lemon chiffon #fffacd 레몬 빛 가볍고 얇은 직물 레몬 치폰 2 3
130 papaya whip #ffefd5 열대 아메리카산 과수 매질 파파야 윕 2 4
128 misty rose #ffe4e1 짙은 장미 빛 미스티 로즈 2 5
126 moccasin #ffe4b5 사슴가죽의 구두 모카신 2 6
108 light golden rod yellow #fafad2 밝은 국화과 다년초 노랑 라이트 골덴 로드 옐로우 2 7
138 light yellow #ffffe0 밝은 노랑 라이트 옐로우 2 8
133 corn silk #fff8dc 옥수수 명주실 콘 실크 2 9
127 bisque #ffe4c4 분홍빛이 도는 검은 빛을 띤 누른 빛 비스크 2 10
129 blanched almond #ffebcd 희어진 엷은 황갈색 블랜취드 아몬드 2 11
93 pale golden rod #eee8aa 옅은 국화과의 다년초 패일 골덴 로드 2 12
95 khaki #f0e68c 누른빛에 엷은 다색이 섞인 빛깔 카키 2 13
137 yellow #ffff00 노랑 옐로우 2 14
123 gold #ffd700 금빛 골드 2 15
43 aqua marine #7fffd4 엷은 푸른빛 녹색 아쿠아 마린 3 1
14 spring green #00ff7f 봄 녹색 스프링 그린 3 2
13 lime #00ff00 열대산의 레몬 비슷한 과일 라임 3 3
65 green yellow #adff2f 녹색의 노랑 그린 옐로우 3 4
42 chartreuse #7fff00 연두색 차트리우스 3 5
41 lawn green #7cfc00 잔디 녹색 라운 그린 3 6
60 yellow green #9acd32 노랑의 녹색 옐로우 그린 3 7
24 medium sea green #3cb371 중간의 바다 녹색 미디움 씨 그린 3 8
21 sea green #2e8b57 바다 녹색 씨 그린 3 9
23 lime green #32cd32 라임 녹색 라임 그린 3 10
20 forest green #228b22 숲 녹색 포레스트 그린 3 11
6 dark green #006400 어두운 녹색 다크 그린 3 12
7 green #008000 녹색 그린 3 13
46 olive #808000 물푸레 나뭇과의 상록 교목 올리브 3 14
37 olive drab #6b8e23 올리브 엷은 갈색 올리브 드래브 3 15
70 dark golden rod #b8860b 어둔운 국화과의 다년초 다크 골덴 로드 3 16
87 plum #dda0dd 짙은 보라색 플럼 4 1
92 violet #ee82ee 제비꽃색 바이올렛 4 2
82 orchid #da70d6 연보라색 오치드 4 3
121 light pink #ffb6c1 밝은 연분홍색 라이트 핑크 4 4
122 pink #ffc0cb 연분홍색 핑크 4 5
116 hot pink #ff69b4 강렬한 연분홍색 핫 핑크 4 6
77 peru #cd853f 남미 서부의 공화국 페루 4 13
113 deep pink #ff1493 짙은 연분홍색 딥 핑크 4 15
105 salmon #fa8072 주황색 세먼 5 7
119 light salmon #ffa07a 밝은 주황색 라이트 세먼 5 8
84 pale violet red #db7093 옅은 제비꽃 빨강 패일 바이올렛 레드 5 9
99 sandy brown #f4a460 엷은 갈색 샌디 브라운 5 10
91 dark salmon #e9967a 어두운 주황색 다크 세먼 5 11
117 coral #ff7f50 산호 빛 코랄 5 12
94 light coral #f08080 밝은 산호빛 라이트코랄 5 14
115 tomato #ff6347 토마토색 토마토 5 16
114 orange red #ff4500 오렌지 레드 오렌지 레드 5 17
85 crimson #dc143c 짙게 붉은 색깔 크림슨 6 2
110 red #ff0000 빨강 레드 6 3
124 peach puff #ffdab9 복숭아 빛 불기 피치 퍼프 7 1
125 navajo white #ffdead 나바호족 백색 나바호 화이트 7 2
100 wheat #f5deb3 위트 7 3
88 burly wood #deb887 튼튼한 목재 벌리 우드 7 4
118 dark orange #ff8c00 어두운 붉은 빛을 띤 누른색 다크 오렌지 7 5
83 golden rod #daa520 국화과의 다년초 골덴 로드 7 6
120 orange #ffa500 붉은 빛을 띤 누른색 오렌지 7 7
78 chocolate #d2691e 갈색 초콜렛 7 8
62 brown #a52a2a 갈색 브라운 7 9
69 fire brick #b22222 내화 파이어 브릭 7 10
53 saddle brown #8b4513 안장 갈색 새들 브라운 7 11
61 sienna #a0522d 붉은 빛을 띤 갈색 시에나 7 12
44 maroon #800000 붉은 빛을 띤 갈색 마룬 7 13
51 dark red #8b0000 어두운 빨강 다크 레드 7 14
66 pale turquoise #afeeee 옅은 푸른빛 녹색 패일 터콰이즈 8 1
89 light cyan #e0ffff 밝은 푸른정도 라이트 시안 8 2
16 cyan #00ffff 푸른정도 시안 8 3
15 aqua #00ffff 엷은 푸른빛 녹색 아쿠아 8 4
12 medium spring green #00fa9a 중간의 봄 녹색 미디움 스프링 그린 8 5
19 light sea green #20b2aa 밝은 바다 녹색 라이트 씨 그린 8 6
34 medium aqua marine #66cdaa 중간의 엷은 청록색 미디움 아쿠아 마린 8 7
25 turquoise #40e0d0 푸른빛 녹색 터콰이즈 8 8
29 medium turquoise #48d1cc 중간의 푸른빛 녹색 미디엄 터콰이즈 8 9
9 dark cyan #008b8b 어두운 푸른정도 다크 시안 8 10
8 teal #008080 암록색을 띤 청색 8 11
49 light sky blue #87cefa 밝은 하늘 파랑 라이트 스카이 블루 9 1
64 light blue #add8e6 밝은 파랑 라이트 블루 9 2
68 powder blue #b0e0e6 가루 파랑 파우더 블루 9 3
48 sky blue #87ceeb 하늘 파랑 스카이 블루 9 4
11 dark turquoise #00ced1 어두운 푸른빛 녹색 다크 터콰이즈 9 5
10 deep sky blue #00bfff 짙은 하늘 파랑 딥 스카이 블루 9 6
33 corn flower blue #6495ed 옥수수꽃 파랑 콘 플라워 블루 9 7
26 royal blue #4169e1 황실의 파랑 로열 블루 9 8
18 dodger blue #1e90ff 옥수수빵 파랑 도저 블루 9 9
40 medium slate blue #7b68ee 중 푸른빛 회색 파랑 미디움 슬레이트 블루 9 10
4 medium blue #0000cd 중간의 파랑 미디움 블루 9 11
5 blue #0000ff 파랑 블루 9 12
36 slate blue #6a5acd 푸른빛 회색 파랑 슬레이트 블루 9 13
27 steel blue #4682b4 철강빛 파랑 스틸 블루 9 14
32 cadet blue #5f9ea0 이하의 파랑 카뎃 블루 9 15
28 dark slate blue #483d8b 어두운 푸른빛 회색 파랑 다크 슬레이트 블루 9 16
2 navy #000080 짙은 검은빛을 띤 남빛 네이비 9 17
3 dark blue #00008b 어두운 파랑 다크 블루 9 18
17 midnight blue #191970 깜깜한 파랑 미드나이트 블루 9 19
71 medium orchid #ba55d3 중간의 연보라색 미디움 오치드 10 1
56 medium purple #9370db 중간의 자줏빛 미디움 퍼플 10 2
111 fuchsia #ff00ff 붉은 빛깔이 나는 자줏빛 퍼츠샤 10 3
112 magenta #ff00ff 짙은 분홍색 마그네타 10 4
76 indian red #cd5c5c 인디언 빨강 인디안 레드 10 5
50 blue violet #8a2be2 파란 제비꽃 색 블루 바이올렛 10 6
59 dark orchid #9932cc 어두운 연보라색 다크 오치드 10 7
30 indigo #4b0082 남색 인디고 10 8
75 medium violet red #c71585 중간의 제비꽃 빨강 미디움 바이올렛 레드 10 9
45 purple #800080 자줏빛 퍼플 10 10
57 dark violet #9400d3 어두운 제비꽃색 다크 바이올렛 10 11
52 dark magenta #8b008b 어두운 짙은 분홍색 다크 마그네타 10 12
81 thistle #d8bfd8 엉겅퀴 디스틀 11 1
74 silver #c0c0c0 은색 실버 11 2
80 light grey #d3d3d3 밝은 회색 라이트 그레이 11 3
86 gains boro #dcdcdc 게인스 보로 11 4
79 tan #d2b48c 볕에 탄 빛깔 11 5
67 light steel blue #b0c4de 밝은 철강빛 파랑 라이트 스틸 블루 11 6
73 dark khaki #bdb76b 어두운 누른 빛에 엷은 다색 다크 카키 11 7
63 dark gray #a9a9a9 어두운 회색 다크 그레이 11 8
72 rosy brown #bc8f8f 장미 빛 갈색 로지 브라운 11 9
54 dark sea green #8fbc8f 어두운 바다 녹색 다크 씨 그린 11 10
55 light green #90ee90 밝은 녹색 라이트 그린 11 11
58 pale green #98fb98 옅은 녹색 패일 그린 11 12
38 slate gray #708090 푸른빛 회색 슬레이트 그레이 11 13
39 light slate gray #778899 밝은 푸른빛 회색 라이트 슬레이트 그레이 11 14
35 dim gray #696969 칙칙한 회색 딤 그레이 11 15
47 gray #808080 회색 그레이 11 16
22 dark slate gray #2f4f4f 어두운푸른빛 회색 다크 슬레이트 그레이 11 18
31 dark olive green #556b2f 어두운 올리브 녹색 다크 올리브 그린 12 2
1 Black #000000 검정 블랙 12 3

유용할 듯 하여 가져왔습니다. 가져오고보니 불펌이로군요-_-
출처는 : http://cafe.naver.com/musiccaf.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=1162 입니다.

MoniWiki의 {{{#!vim … 에서 한글이 깨질 경우

모니위키를 사용할 때 {{{#!vim java 식으로 코드를 넣을 때가 있습니다. 이 때 한글이 깨진다면 역시나 인코딩 문제때문에 그런 것인데요 다음과 같이 해주시면 됩니다.

config.php 안의 vim_option 변수를 수정해줍니다.

Before
$vim_options=’+”set expandtab” +”retab”‘;

After
$vim_options=’+”set expandtab” +”retab” + “set enc=utf-8″‘;

오픈소스가 활성화되지 않는 이유 “아무도 가르쳐주지 않기 때문이다”

 얼마전 흥미로운 글을 우연히 보게 되었습니다.
우리나라에서 오픈소스가 활성화되지 않는 이유에 대한 yundream 님의 오픈소스가 활성화되지 않는 이유 글을 보게 되었는데 그 트랙백으로 걸린 Mr. Dust님의 오픈소스가 활성화되지 않는 또 다른 이유 라는 글을 읽게 된 것이죠.

두 글 모두 제 맘에 와닿는 글들이었고 특히나, Mr. Dust님의 글 중 우리나라 오픈소스가 활성화되지 않는 이유는 “아무도 가르쳐주지 않기 때문이다” 라는 이유는 매우 크게 동감합니다.(편견 부분 역시 뭉클합니다)
오픈 소스에 관심을 기울이게 되어도 막상 진입점이 어디인지 쉽게 찾을 수 없고(제가 좋아하는 KLDP는 제가 보기에는 아직 그런 역할을 하고 있지 못합니다.), 찾아봐야 국내 정보는 별로 없고 영어 천지인데다, 국내 IRC나 관련 사이트를 가보아도 무성의한 답변 혹은 무시받는 일이 흔하기 때문이죠. 일례로 HanIRC의 #linux 채널이나 기타 채널들도 초보 무시하기, 사람 깔보기, 막말하기 등은 흔히 볼 수 있는 풍경입니다. 대놓고 “여긴 원래 이래요!” 라는 기존분들의 인식도 꽤나 한몫할겁니다.(근데 이런 분들 치고 “진짜” 오픈소스 참여자는 없는 것 같더군요.)
결국 오픈 소스를 하려면 정말 아무것도 없는 상태에서 “맨땅에 헤딩하듯” 하는 방법부터 찾고 찾아 하게 되고 이렇게 조금씩 지쳐가면서 처음의 의지마저 조금씩 사그러들고 말죠.(이런 의미에서 “오픈소스에 뛰어들기” 같은 행사는 매우 긍정적입니다.)

뭐 그렇다고, 기존 오픈소스하시는 분들에게 “하는 방법 좀 남겨!”하고 강요할 수도 없는 노릇이긴 합니다만, 오픈소스에 접근하는 방법에 대한 체계적인 정리와 기존 참여자들의 인식 전환 혹은 조금더 둥글어지기;는 될 수 있는 한 빨리 되어야 할 것입니다. 저 역시 ubuntu-ko에 가입하고, launchpad.net 에서 우분투 패키지 번역에 대한 튜토리얼 같은 걸 만들려고 생각했던 적이 있습니다만, 생각뿐.. 여태 못하고 있네요.

오픈소스에 대한 학생 입장에서의 글은 조금더 생각이 정리된 후에 포스팅하는게 좋을 것 같습니다.(막~~~~~ 썼다가 지우고 지우고..)

버클리 DB에 대해서 알아봐야겠습니다.

전부터 파일기반 DB(라고 불러도 될까요?)인 버클리 DB에 대해서 알아보자!고 생각해오곤 있었는데 역시나 게을러서 이제껏 쳐다보지도 않고 있었네요.(이런게 아주 많이 있습니다. 블로깅 API, RSS 인증, 오픈 맵 데이터, NTFS 구조, PyGTK 등등..)

멤버십에서 DB관련 프로젝트를 시작했는데 SQLLite나 버클리 DB, 둘 중 하나의 DB를 참고해서 프로젝트를 진행해야 할 듯 싶습니다. 팀원들의 생각은 다를 수 있겠지만요~

일단 간단하면서도 폭넓게 사용되는 버클리 DB에 대해서 (저혼자) 알아보기로 했습니다.

Sun 소식지에 다음과 같은 기사가 있네요.

http://kr.sun.com/korea/sun_info/2004/web_spring/sunintrend/trend02.html

몇 가지 자료들을 더 찾아보고 소스도 한번 들여다 볼까 생각(만?)중입니다~

졸음 버그

글에 앞서 프로그래머를 졸린 상태에서 일하도록 하면 안된다고 강력히 주장합니다.

제가 요즘 좀 많이 바쁩니다.

Todo list로 적어봤더니 노트가 꽉차더군요-_-

어제 밤에는(정확히는 오늘 6시까지) 과제기획서를 위한 자료 준비를 하고 6시부터 아르바이트로 하고 있는 프로그램을 코딩했습니다. 코딩 중에는 정말 난리도 아니었죠. 졸린 눈 비비고 깜빡 졸았다가 다시 타이핑하고, 커피를 냅다 위에다 붓고.. 이게 수요일까지 완성되어야 하기 때문에 정말 바쁩니다. 게다가 전 다음주 일요일부터 시험이라구요! 이번주 일요일까지는 과제 기획서, 기말 프로젝트 보고서를 제출해야 하고, 화요일까지 프로그래밍 과제도 있고, 수요일까지 프로그래밍 및 UML 보고서를 제출해야 하고, 같은 날에 Vigenere 암호 해독 프로그램을 작성해야 하며 시험기간이 끝나자마자 알고리즘 22개에 대한 설명과 최선, 최악, 평균에 대한 예제를 만들어서 손으로 풀어서 제출해야 하고, 프로그래밍 언어론에서 프로젝트를 진행할 언어를 선정하는 게시글을 올려야 하며, 토론글을 작성해야만 합니다.(그렇지만 더 나쁜 건 이게 다가 아니라는 겁니다. 더 많이 있어요-_-) 잠을 줄이지 않고는 할 수가 없겠더군요.

그래서 잠을 줄였습니다.

그 결과로 아침에 다음과 같은 코드를 작성했답니다.

   for(i = 0; 1 < 10; i++)    {
       ar >> sData.inclineStart    [i];
       ar >> sData.inclineEnd        [i];
       ar >> sData.inclinePercent    [i];
   }

뭐가 잘못됐는지 보이시나요? 저는 제가 평생 이런 코드를 짜지 않을 거라고 생각했습니다. 저런 코드를 짜는 프로그래머는 “죽어야 된다”고 생각했죠-_-;;; “어떤 바보멍청이가 저런 코드를 짜?” 라고 생각했죠. 그 바보 멍청이가 오늘 제가 될 줄은 꿈에도 몰랐답니다.

이 것 말고도 몇가지 사고(!)들을 일으키는 코드를 아침에 수없이 양산해냈죠; 저장을 두 번 한다던지.. 배열의 index를 다른 변수의 index와 헷갈린다던지.. 이게 저 혼자 짜는 프로그램이니 다행이지 협업되서 돌아가는 프로그램이었다면 어땠을지 정말…

음주 코딩, 졸음 코딩.. 정말 없어야 합니다. 음주 코딩이나 졸음 코딩을 해야 할 정도로 프로그래머를 괴롭히지(!) 마세요. 두배, 세배, 열배, 백배가 되어 다시 돌아옵니다.(대부분 프로그래머에게 다시 돌아오게 되어 프로그래머를 더 힘들게 하긴 합니다만)

근데 지금도 정말 졸립고 힘드네요.