[C#] 데이터믹싱 툴을 만들자!!!

프로그래밍/C/C++/etc 2009. 7. 19. 22:45 posted by 야매코더

모바일컨텐츠를 개발하면서
컨텐츠에 들어가는 데이타들의 관리가 항상 고민이 됩니다..

요즘은 영어단어장을 만들고 있는데 핸드폰에 db라는게 기능이 거의 없다보니
sqlite가 들어있는 아이폰이 부러울 따름이네요. 단어장에 들어가는 데이타가 너무 많습니다.ㅠㅠ
학교를 선택하는 부분부터 고민이 되는군요..학교데이타만 30kbyte..대충 검색기능도 들어가야 할듯..
원시적인 인덱스값 으로 검색이 되야 하는건가..이런 데이타를 컨텐츠에 넣기도 힘들겠습니다...

 이런 데이타들을 사용할때 저는 엑셀을 이용하는 편입니다. 순서는

  1. 엑셀에 값들을 넣는다.
  2. 값들을 정렬을 한다.
  3. 정렬된 값들을 csv화일로 뽑는다.
  4. 믹싱툴을 사용하여 바이너리화일로 저장한다.
  5. 컨텐츠에 패키징해서 사용한다.

이런 순서로 개발을 하는데
항상 믹싱툴을 만들면 그때 관심가는 언어로 개발하는 편이네요.
비주얼C로 했다가 터보C도 했다가 GCC도 해보고 자바로 했다가 스윙도 추가 해보고
간단한 기능들이라 한번씩 공부하는셈 치고 만들어 보는데 나름 지적인 욕구도 해결되고 1석2조입니다..

암튼 이번에 눈에 들어온 넘은 C# <= 바로 이놈입니다..
요즘 윈도7을 놋북에 돌리고 있는데 닷넷기반의 어플들은 무척 빨리 돌아가는 기분이 들더군요.Paint.Net 같은넘은 바로 뜨는게 아주 시원하게 실행하네요. 그래서 요즘 부쩍 관심을 가지고 있었습니다.
들은 풍월에 의하면 java와 c++의 장점을 모아서 만든 언어라는군요.
MS에서 완전 밀고 있는 언어라서 책도 무료로 인터넷에 뿌리고 있습니다. 좀 어렵게 되있더군요..

자!! 그럼 한번 만들어 보겠습니다.

1. 필요한 기능을 정리 하자.

우선 어플을 만들때 기본이라 하겠습니다. 어떤 기능이 필요한가...

  • 데이타화일(텍스트)을 불러서 읽어들이기.
  • 문자열을 파싱하기.
  • 파싱된 문자 인덱스값 부여하기.
  • 인뎃스값 바이너리로 저장하기.

간단히 이정도 되시겠습다.

2. C#관련 서적 2~3권정도 슬슬 보면서 기능별로 어떤 함수를 쓸지 정한다.

이번에는 시간이 너무 부족해서 목차만 보고 기능 검색했습다.역시 야매입니다.^^;  
아무래도 무작정따라하기 시리즈가 보기 편하긴 하네요. 하지만 내용이 너무 없어요. 쉬운데 내용이 적다로 결론납니다. 그래서 두꺼운 놈도 하나 가져다 두고 같이 찾아가며 개발........이라고 말씀드리긴 창피하고 만들어 보죠!!

3. UI 를 구성하자.

항상 저의 아트적인 한계점을 느끼게 하는 부분입니다.
뭐 보기엔 어설프시겠지만..나름 1시간 가까이 고민한 디자인입니다..

티가 팍 나네요..ㅠㅠ
버튼 2개와 ListView로 구성 해봤습니다.

4. 본격적인 코딩..

코딩하는 과정을 넣고 싶은데 뭐 별로 할게 없습니다...
팁하나 말씀드리자면 csv화일의 구조가 엑셀은 , 로만 구분을 하는데 오픈오피스를 사용하면 ; 도 사용할수 있어서 
저는 대부분 오픈오피스에서 csv화일을 뽑습니다.
그리고 참 만들면서 찾다보니 발견한건데요...
C#에 기능중에 Split()라는 함수가 있군요..
문자열관련 함수인데. 입력하는 문자를 기준으로 문자열에서 뽑아내 배열에 넣어 주는 기능입니다. 앞으로 csv화일 제어는 끝난거로 보이는군요. 무진장 편합니다.
다른 언어에서는 못봤는데.(혹 다른 곳에 있는걸 아시는분 알려주세요. 다음엔 그거로 하겠습니다.)

5. 구동 테스트

흠..잘 돌아갑니다..

csv 화일을 불러서 인덱스로 만들어 보겠습니다.


인덱스화 된 숫자가 나름 잘 보이는군요. 아싸!!

6. 결론.

소스라고 해봐야 별게 없습니다. 화일 하나에 마구 만들어서인지. 알아먹기도 힘들고..창피해서 못올리겠네요.ㅠ
어째든 무진장 짧게 C#으로 하나 만들어 봤습니다.

C# 이란 언어를 첨 접해본 바로는 
무척이나 편리하고 화려한 UI에 기존개발자들이 접근하기 쉽게 java와 비슷한 문법에 독자적인 문법도 몇가지 추가되어서
더욱 빠르게 개발할 수 있는 조건이 갖추어져 있습니다. 거기에 파워풀한 기능들이 지원되고 있어서 저처럼 툴종류를 개발할땐
최고의 선택이 아닌가 싶네요. 담엔 어떤 녀석이 저에게 어필할지 궁금합니다.


그럼 오늘은 여기까지!!!!


--- 추가 팁---
화일을 읽다 보니... 한글이 깨지는 경우가..

//이렇게 되어 있었는데요..
StreamReader InStream = new StreamReader(InFile);


//이렇게 추가 하시면 됩니다.
 StreamReader InStream =  new StreamReader(InFile,System.Text.Encoding.Default);

//System.Text.Encoding.Default 가 추가 되면 잘 읽어지는군요. 한글 ㅠㅠ





To be continued.    -夜昧-