열심히 코딩을 하다가 갑자기 거지같은 에러가 났다. 별로 수정하지도 않았는데 -_- 위와 같은 에러가 났다.

Files의 "<<<<<<< .mine" 값이 잘못되었습니다. 경로에 잘못된 문자가 있습니다.

라는 에러였는데 ...

프로젝트 정리(Project clean)을 해도 , 솔루션 정리를 해도 해결이 되지 않았다.

그래서 열심히 인터넷을 뒤졌는데 MSDN에도 안나오더라 -_-; 그래서 한글 검색을 끄고 영어 검색을 했더니 인터넷 많은 결과물이 있길래 ..

stackoverflow 에서 찾아봤더니, 클린을 하라는 것이다. 그래도 안되길래 계속 그 글을 보다가 아래 구석 댓글에

bin폴더를 지우라는 말이 있었다.

그래서 bin과 obj를 모두 지우고 했더니 다시 되더라.

아마 svn에 bin과 obj를 모두 포함시켜 업데이트 할 때 문제가 생기지 않았나 싶다.

거지같네..;;
Posted by TY
,
 고백하자면 저는 10년 5월까지는 어플리케이션을 개발하기 위해서는 win32api를 쓰던 사람입니다. 그러나 군에서 뭔가 거대한 어플리케이션을 만들어야 하는데 몹시 노가다스러운 프로그램이었습니다. 개발 계획서를 살펴보니, '아.. 이걸 다이얼로그 박스로 하면 나는 죽겠구나..' 라는 생각이 들었습니다. 그래서 결국 저는 군대에서 꺼려하던 2가지를 모두 하게 되었습니다. 하나는 웹이고, 하나는 닷넷이지요. 둘 다 하게 되었습니다. 하하.

 저는 내부적으로 컨트롤 할 수 있는 상황을 좋아합니다. win32api를 좋아했던 이유도 제 맘대로 지지고 볶고 할 수 있었기 때문인데요. 하지만 사람이 편리함 앞에서는 한낮 미물이 되나 봅니다. 써보니 참 편하더군요 닷넷.. 으음..

 어쨌든 이번에 일이 있어서 PictureBox로 동적으로 무언가를 생성해야 하는 일이 있었습니다. 제가 군에서 만들었던 어플리케이션과 제가 만든 웹 페이지들은 특별한 요구가 없는 이상 '그림'이 없습니다. 저는 그림을 싫어하니까요. 못 그리는 데다가 예쁘게 꾸밀 미적 감각도 없습니다. 그러니까 안 넣어요. 저는 단색 조합이 좋으며, 넣어봤자 파스텔톤의 연녹색 같은 것 밖에 색을 넣지 않습니다. 그 외에는 저에겐 너무 무리한 요구입니다. 어려워요.

 어쨌든 제가 만들고 있는 건 현재 '초 허접' 맵 에디터입니다. 요 근래 독감도 들고, 악재가 겹쳐서 진도가 몹시 안 나가지만 그래도 하루에 순수 집중하는 시간으로는 3~4시간, 뻘 행위를 하면서 이걸 하고 있다는 위안으로 웹 서핑과 메신저를 하는 시간을 포함하면 6~7시간은 이걸 잡고 있는 것 같습니다. 

 저는 배치해놓은 컨트롤을 이용해서 지지고 볶는 건 자신 있습니다. 즉 노가다는 자신이 있습니다! 그러나 동적으로 그림을 넣어야 한다는 사실은 저를 몹시 힘들게 했습니다. 아오 힘들어. 하지만 뭐 동적으로 다른 컨트롤이야 몇 개 추가해 봤으니까 이런 일은 쉽지 않을까 싶더군요.

 우선 제가 만들고 있는 맵에디터(라고 부르기 부끄러운)의 스크린 샷입니다.


 초.. 허접한 그림의 퀄리티. 그러나 저는 분명히 저것을 그리기 위해 타블렛과 2시간을 씨름을 했습니다. 그 거대하고 비싼 타블렛으로 저런 그림을 그리려니 참으로 타블렛에게 미안한 생각 뿐이었습니다. 그 타블렛은 제 모니터 만했지요...

 음.. 이미지를 저렇게 이미지 위에 동적으로 할당을 해야 하는데, 저는 PictureBox 컨트롤을 이용해서 했습니다. 

우선 가장 큰 문제는 이것이었습니다. 

"이미지를 어떻게 동적으로 추가하지?"

이 부분에 대해서는 저번글에도 언급되는 실명으로 부르지 않아 부끄러운 다람군(-_-;) 이 도움을 주었습니다. 저는 win32api를 하듯 그냥 dc를 얻어서 뿌리면 되겠지! 라고 생각했지만 땡이더군요. 

일단 그래서 무작정 개체를 생성해서 띄워보기로 했습니다.

아. 안나와요. 뭐야 이거. -_-

그랬더니 다람군이 this.Controls.Add 라는 메서드를 호출해 보라고 하더군요. 하지만 역시 안나와요.

그래서 '안나와!'라고 했더니, 컨트롤 위에 추가할 꺼면 컨트롤 마다 저 메서드가 있을 것이라며 저에게 알려주었습니다.

오오 되더군요.

그래서 저의 해결 방식은 다음과 같았습니다. 

syntaxHighlighter를 지우고 이건 Windows Live Writer로 쓰는 것도 아니니 소스가 안 예쁜건 양해를 바랍니다 - -;

우선.... 그려야 할 것 들을 List 를 이용해 등록을 합니다. 맵 에디터다 보니까 화면에 표현을 할지 말지도 결정을 해야하고, 그 화면에 나올 것들만 출력해야 하므로 우선 리스트로 정리를 합니다.

PictureBox p = new PictureBox();
                    p.Left = el.m_coordinate.X - m_mapCoordinate.X - imageSize.X / 2;
                    p.Top = el.m_coordinate.Y - m_mapCoordinate.Y - imageSize.Y / 2;
                    p.Width = imageSize.X;
                    p.Height = imageSize.Y;

                    p.Image = image;
                    p.Visible = true;

                    p.BackColor = Color.Transparent;

                    p.Click += new EventHandler(clickObject);

                    p.Show();

                    m_drawingList.Add(p);

그리고 나서 아래 리스트에서 컨트롤에 등록을 해 줍니다.

foreach (PictureBox p in m_drawingList)
            {
                pictureBox1_map.Controls.Add(p);
            }


그렇게 했더니 위에와 같이 출력이 가능하게 되었습니다. 올레!

뭐 사실 블로그에 적는 이유는 나중에 똑같은 삽질을 할 때 찾아보자는 의도이지만, 뭐 어쨌든 그렇습니다.

저렇게 해서 해결을 봤습니다.

* 음.... 틱톡이란 주제로 글을 썼더니 투데이가 갑자기 급상승하는군요... ( - -); 다음부터 좀 이런 주제로 글을 써 볼까 생각 중입니다. 그러나 저의 게으름엔 자비가 없죠.

 
Posted by TY
,

오늘 조나 비싼 24인치 모니터만한 인튜오스로 그린 타블렛으로 그린 나의 초 명작 뱀 ( - -;) 게임 계획서에 넣으려고 그렸다. 누구 나에게 그림 그려 줄 사람 없습니까 ㅜㅜ

1. ArrayList 와 List<T>
 나는 java를 쓰던 버릇이 있어서 ArrayList 를 구지 System.Collections 에서 꺼내서 썼었다. 하면서 왜 Generic이 안되지? 라고 매번 생각했었는데.. 그냥 List는 System.Collections.Generic에 있다. 나는 아무 생각 없이 안 썼는데 생각해보면 왜 안 썼는지 모르겠다. 앞으로 List를 애용해야지... 인터넷 검색 찬스를 좀 써봤지만 이런 글을 얻었다.
http://bytes.com/topic/c-sharp/answers/643286-arraylist-vs-list
하.. 더 이상 예외 처리를 하기 위해 대입을 해서 할 필요가 없다는 것을 깨달았다. 그냥 Generic을 써서 간단하게 해야겠다.
마치 구시대의 유물을 고집하던 놈이 된 것 같아 찝찝하지만 나의 영어로 해석할 수 없는 심오한 뜻이 있어서 사람들이 ArrayList를 쓴다고 생각하고 싶다. 어쨌든 난 이제 List를 써야겠다.

2. Initialize() 와 LoadContent()
 아무 생각 없이 초기화가 데이터를 불러오는 것 보다 먼저이지 않을까 생각했는데, 오늘 List를 넣어서 코딩을 하다가 깨달았다. 정확히 말하면 에러가 났다. 그 이유를 보니..
 LoadContent 가 Initialize 보다 먼저 실행된다. 중요한 것을 깨달은 듯

3. static class 와 interface
 나는 java에서 상수를 관리할 때 늘상 Interface 에 final을 붙이며 썼다. 그리고 C#에서는 static class 를 만들어서 const 를 붙여서 썼다. 근데 최근에 java 코딩을 좀 많이 해서 아무 생각 없이 C#에서 interface를 만들어서 하려는데 음 왠지 안되는 것 같다. 쿨하게 포기하고 static class로 전환했다. IConstants 등으로 안 만들고 Constants로 만든 나에게 왠지 모르게 감사했다.


요즘은 왠지 모르게 깨달은게 많은데 아무데도 남겨두지 않았다.

이 기회에 좀 적어놔야 되지 싶은데 시간 되면 저번에 했던 Spring 이랑 iBatis랑 JSON이랑 등등 좀 정리해서 블로그 같은데 올려놔야겠다, 라는 생각이 들었다.

 우선 MSSQL 이랑 Oracle 까는 숙제부터 해야지...--;
Posted by TY
,


 며칠 전에 디버깅을 하는데, 자꾸 INSERT 구분에서 에러가 난다는 겁니다. 엑서스 상에서 직접 쿼리를 실행해보면 되고, ODBC를 통해서 사용하면 INSERT INTO 구문 에러라며 Exception이 자꾸 발생하는데...
 
뭐 행이 다발로 있는 것도 아닌데, INSERT 구문 같이 사소한 구문이 자꾸 안되니까 이거 어이도 없고, 화도 나고 하더군요.그래서 어떻게 할까 하다가 엑서스에서 실행을 해본 후 쿼리 디자인을 다시 살펴보기로 했습니다. 뭐가 바뀌었는지 처음에는 못 깨달았는데, 자세히 보니 이런게 다르더군요.

예를 들어서,

원래 쿼리 ) INSERT INTO t_table(file,attrib,action) VALUES("0",707,3)
엑서스 쿼리) INSERT INTO t_table(file,attrib,[action]) VALUES("0",707,3)

이렇게 되는거에요.

그래서 []는 왜 붙지? 라고 심각히 고민을 했어요.

아마도 예약어겠지, 라고 싶었는데 mdb 예약어는 아닌거 같더라구요.

이상하다 싶었는데, 인터넷을 할 수 있게 된 짬을 이용해서 찾아보니 Jet 4.0 예약어더군요.

Jet 4.0 예약어는 아래를 참고해보세요. [MSDN]
http://support.microsoft.com/kb/248738/ko

이건 Access 2002 이상에서의 예약어에요. [MSDN]
http://support.microsoft.com/kb/286335/ko

원래대로라면 예약어를 피해서 적는게 맞지만, 그래도 어쩔 수 없을 경우에는 []를 붙여주면 되는 것 같네요.


Posted by TY
,