Showing posts with label Projects. Show all posts
Showing posts with label Projects. Show all posts

Tuesday, October 6, 2009

Quartus 프로젝트(2007년 가을)

군복학 이후 처음 수행 했던 프로젝트이다.

Quaturs라는 회로설계 프로그램으로 지하철 승차권 자판기를 만드는 것이였다.

3인 1조로 팀을 구성했는데, 프로젝트상에서 조합회로 전체와 메모리를 설계했다.

설계 한다음에 SoC 보드에 올려서 작동하는 것을 확인하는 것이 목표다.

서브블록을 하나씩 검증해 가면서 합쳐 나갈 때 즐거움을 느꼈다.

마감 전날 밤을 새며 아침에 완성했다. 오후에 검사 맡았는데 집에도 못가고 학과 독서실에서 엎드려 자면서 기다렸다.

기말고사 끝나고 방학인데 이거 한다고 며칠 집에 못가고 고생했다.

문제는 이 프로그램으로 회로를 마우스로 하나씩 그려가면서 했는데

3학년 되서 보니 Verilog HDL이라는 프로그램이 있어서 C언어 처럼 고크 몇줄로 그런 회로를 구현 한다는 사실에 충격 받았다.

물론 실무에서 이렇게 손으로 그릴일은 없겠지만 적어도 이렇게 그려봄으로써 회로와 더 친해 질 수 있었던 것 같다.

당시 사진도 찍고 캡쳐해서 컬러 문서로 만들어 놨는데, 그것을 저장해둔 USB가 날라가서 지금 Hard copy된 흑백 출력본을 다시 스캔해서 사진을 올린다.


ASM 차트이다. 자판기에 동전을 넣는 순간 부터 어떻게 작동하는지 순서를 볼 수 있다.


RTL 블럭도이다. 실제 회로를 그리기 전에 어떻게 control이 되는지 개념적으로 그린 것이다.


실제 설계한 회로이다.


흑백으로 출력된 것을 다시 스캔하니 이렇다. LED 색상은 빨간색이다.

Thursday, September 10, 2009

VoIP 프로젝트(2008년 가을)

Computer Network과목의 프로젝트였다. 4인 1조로 수행했는데, 설계 및 Client/Sever 코딩을 담당했다.

일단 수행하기전에, IEEE에 나온 각종 표준대로 구현해야 되는냐를 교수님께 상담했는데, 교수님은 "그냥 전화만 되면 된다"라고 해서 일단 그냥 짰다.

목표는 Skpye 처럼 다자간 통화가 되는 모델(최소 3명)이였다.

그런데 구현하다 보니 2명까지는 잘되는데 3명부터는 처음에 되다가 나중에는 안됐다.

이유를 찾고 보니, 사운드카드 출력은 하난데, 데이터는 시간당 2배로 들어오는것을 제대로 처리하지 못해서 그렇게 된것이다.

출력 부분을 하나 선언하고, 그것을 쓰레드 형태로 또 쓸려니 자꾸 문제가 발생해서 적절한 대안을 마련한 것이, FPS 게임처럼(특정 키를 누르면 음성 채팅 가능) 만들었다.

이 방식을 응용한 결과 4인까지 동시통화가 가능했다. 통화라기 보단 일종의 무전기 같은 형태가 되었지만.. 4학년에 수행하는 졸업과제에 이런 주제가 나왔다면 실제 전화기와 통화하는 하드웨어 장비 수준까지 요구했을지 모르지만 그나마 3학년 과제라서 완성은 할 수 있었다.

그래도 일단 완성했다는 것에 뿌듯함을 느끼고, 처음 경험한 MFC에 대한 자신감을 얻은 것이 가장 큰 수확이라고 생각한다.










UML 프로젝트(2008년 가을)

Software Engineering과목을 수강하면서 수행한 프로젝트다.

도서대출시스템에 대한 UML을 만들고, 최종적으로 간단하게 JAVA로 설계대로 구현하는 것이 목표였다.

당시 4인 1조로 수행했는데, 유스케이스를 제외하고, 시퀀스, 액티비티, 시스템아키텍쳐, 배포 다이어그램을 그렸고, 최종구현을 책임지고 담당했다.

그 때 나머지 조원들은 JAVA을 거의 까먹은 상태였고, 나는 동시에 수강하고 있었기 때문에

다른 조들에 비해 쉽게 할 수 있었다. 당시 요구사항에는 최종 파일이 JAR 같은 라이르러리 형태로 제출하라는 것이 있었는데, 이 요건을 충족시킨 팀이 우리팀밖에 없어서, 좋은 점수를 받았다. 다른 팀은 그냥 소스코드를 제출해서 채점 조교를 당황하게 했다고 들었다.

이 과제를 수행하기 전에는 그냥 막 코딩하면 다 만들줄 알았다.

교수님이 수업시간에 설명한 Architecture라는 말이 생각난다.

그 단어가 건축학에서 나온 말인데, SW규모가 커니면서 그런 집짓는 큰 설계도처럼

SW도 큰 그림을 그리고 작은 단위로 조금씩 나눠 가면서 짜야 제대로 만들 수 있다는 것을 느끼게 해준 과목이였다.

그래서 이번 과제에서도 Presentation, Business, Data라는 세 개의 계층을 생각하며 구현해야 했고, 실제로 그렇게 했었기 때문에 의미가 있었다.


아래 그림은 설계한 도서대출시스템의 유스케이스 다이어그램


아래 그림은 시스템 아키텍쳐


아래 그림은 대출기능에 대한 액티비티 다이어그램


아래 그림은 대출기능에 대한 시퀀스 다이어그램


아래 그림은 구현한 프로그램의 스크린샷

Saturday, August 15, 2009

OpenGL 프로젝트(2008년 봄)


4인 1조로 진행된 프로젝트였다.


전체 큐브 설계/구현, 게임 알고리즘, 인터페이스를 담당했다.


3D큐브라는 것이다. 장난감 큐브를 OpenGL로 3D로 만들었다.


처음에 기획할 때, 인터넷에 보니 20단 큐브까지 있는것을 확인했다.


그래서 21단까지 만들었다.


그 이전에는 많이 몰랐다. 게임같은것들 무조건 C/C++로 어떻게 하면 되는줄 알았지만,


이것을 하고 나니 실질적으로 게임을 만들 수 있는것은 API라는 것을 알게 되었다.


아쉬운점은 큐브 Solution의 알고리즘이였다. 그냥 기록을 녹화해서 재생하는 것으로 했는데, 그 해 가을에 수강한 알고리즘에 대해 조금이라고 알고 있었다면 Tree형태로 해를 찾아 구하는 방식으로 했을 텐데 하는 아쉬움이 있다.















Friday, August 14, 2009

ASP.NET 프로젝트(2008 봄)




언어는 C#으로 했다. Visual Studio 2005.NET으로 구현.

ALL FOR TRIP이라는 제목의 여행정보 사이트를 구축했다.

이것의 목적은 여행에서 필요한 정보 검색 + 손쉬운 철도 예매 + 스케줄관리를 한번에 할 수 있는 web service를 제공하는 것이다.



3명이 1조로 개발했다. 내가 맡은 부분은 C#프로그래밍+DB연동, Ajax

그리고 나머지 2명이 GUI, OpenAPI, Javascript를 담당했다.

일단 OpenAPI를 통하여 여행 정보를 가져온다. 여기에는 날씨, 여행후기, 숙식정보가 포함된다. 그리고 교통정보는 Javascript의 입력값을 통하여 바로 Korail에 전송하는 형태이다.



그리고 이 부분을 Web 2.0에 걸맞는 참여에 접목하기 위해

회원제 사이트를 만든것이다. 이 여행정보를 바탕으로 특정 회원에게 초대장을 보내서 같이 여행을 갈 수 있다.




그 외에 게시판, 스케줄관리, 쪽지보내기, 포토앨범(Javascript), 포토게시판(Gridview) 기능이 있다.



결국 전체 기능 중에서 내가 직접 구현한 부분은

게시판, 회원관리, 초대장, 쪽지, 포토게시판, 스케줄관리

이렇게 있다.


게시판은 Gridview로 쉽게 만들 수 있었다.

게시판은 읽기, 쓰기, 답변, 댓글, 삭제 기능이 포함된다. 원래 게시판만 따로 만들었는데, 사이트 회원제와 연동해서 쓸 수 있게 했다.



특히 기억에 남는 부분은 운영자가 회원들에게 전체 메일을 보내는 부분이였는데, 이 부분을 하기 위해 학교웹메일 계정까지 설정하는 복잡한 단계가 필요했다.



Tuesday, August 11, 2009

JAVA 프로젝트(2008 가을)


메신저를 만들었다.

3인 1조로 팀으로 짜서 만든것이다.

내가 맡은 부분은 전체설계, 네트워크프로그래밍, GUI, DB연동 이였다

JDK 1.6.07를 기반으로 만들고 GUI는 Jigloo로 작성했다. DB는 MySQL을 사용했다.
주요 기능은
1:1채팅, 파일전송, 매칭쪽지(조건 맞는 상대에게만 보내는것), D-day알림, 보안쪽지 기능이 있다.
물론 기본적인 쪽지전송 및 회원가입, 친구추가는 당연히 구현되어 있다.





Saturday, October 4, 2008

MATLAB 프로젝트(2007 가을)

마지막 과제였다. GUI를 이용해서 난수분포를 표시하는 것