본문 바로가기

(비정기) Dlbo's Post

리눅스 시스템 프로그래밍 프로젝트 - Mini shall, Simple VI.


Linux/Unix 시스템 프로그래밍 팀 프로젝트.

팀원 : 2학년 김보성, 한태웅, 신은수

프로젝트 1. Mini shall.

 - 팀 구성 : 구조 설계              - 김보성 <- 접니다 -_-
                 문서 정리 및 서류화 - 신은수
                 상세 코딩               - 한태웅

 - 프로젝트 진행 방식 및 기획
                 - 11. 3 ~ 11. 9     기본 뼈대 구조 설계 및 설계 자료 서류화 - 김보성, 신은수
                 - 11. 10 ~ 11.26   실질적 코딩, 디버깅                             - 한태웅
                 - 11. 27 ~ 11.28   최종 결과 서류 작성 및 제출                  - 김보성, 한태웅, 신은수

 - 프로젝트 최소 요구사항
                 - 필수 기능 : ls, cp, rm, mv, cd, mkdir, rmdir, cat, exit 명령어 직접 구현해야 함.
                                   ls는 -l, -a 옵션도 구현,
                                   rm은 -r, -f 옵션도 구현.
                                   $USER, $HOME, $HOSTNAME, $CWR와 >, <, >>, |의 메타캐릭터 처리.

                 - 와일드 캐릭터 및 Alias 구현시 추가 점수.

 - 11. 26 기준 프로젝트 진행 상황
                 - 시간 부족으로 인하여 cat와 와일드 캐릭터, Alias는 구현 힘듬.
                   요구사항 외의 것으로는 멀티 리다이렉션, 파이프의 구현.
                   구조 설계자 요구에 따라 C++을 이용해 클래스화 시켜 확장성이 용이한 구조로 코딩.
                   구조 설계자로부터 넘겨받은 구조 요구 예시는 기본 뼈대만 채택하였음.
                   2주 코딩기간동안 하루 평균 8시간의 코딩.



프로젝트 2. SImple VI(이하 SIVI)

 - 팀 구성 : 구조 설계               - 김보성
                  문서 정리 및 서류화 - 신은수
                  상세 코딩               - 한태웅 -> 11.21 코더 변경 - 김보성

 - 프로젝트 진행 방식 및 기획
                 - 11. 3 ~ 11. 9     기본 뼈대 구조 설계 및 설계 자료 서류화 - 김보성, 신은수
                 - 11. 10 ~ 11.26   실질적 코딩, 디버깅                             - 한태웅
                 - 11. 27 ~ 11.28   최종 결과 서류 작성 및 제출                  - 김보성, 한태웅, 신은수

              - 기획 변경 (11. 21) : 코더에게 무리가 있다는 의견으로 코더 변경.
              - 11. 21 ~ 11. 23  실질적 코딩, 디버깅                           - 김보성
              - 11. 24 ~ 11. 26  변경사항 기록 및 서류 정리                  - 김보성
              - 11. 27 ~ 11. 28  최종 결과 서류 작성 및 제출                 - 김보성, 한태웅, 신은수

 - 프로젝트 최소 요구사항
                 - 요구 사항 : 리눅스의 VI 에디터와 유사한 환경 요구.
                                    입력모드, 명령모드간 전환(ESC키와 i, a, o)과 빈줄에 대한 '~'를 이용한 표시,
                                    ed명령어 계열에 대한 처리, 스크린 왼쪽에 줄 번호 출력 요구.
                                    h, j, k, l로 커서를 이동시켜야 하며, CTRL + B와 CTRL + F로 화면이동.
                                    ed명령어중 x, dd, s, yy에 대한 처리 필요. w, q, set nu, set nonu.
                                    또한 파일의 크기에 상관없이 파일을 편집 가능해야 함.

 - 11. 26 기준 프로젝트 진행 상황
                 - 마감을 코앞에 두고 진행도가 0인 상황에서 코더가 변경되어 급하게 코딩에 돌입,
                    모듈화나 클래스화, 확장성은 거의 고려하지 않고 속도 위주의 개발을 선택함.
                    코드가 스파게티 코드화 되었으나, ed명령어중 yy는 클립보드에 카피하기 위한 명령어를
                    요구하지 않았으므로 구현하여도 소용이 없어 제거했고, 리눅스상에서 CTRL + B와
                    CTRL + F 가 일반 방향키와 ASCII코드가 겹치는 상황이 발생하여 기능을 제외시킴.
                    대신 VI와 다르게 VIM(VI iMproved)처럼 방향키를 이용한 UI를 구현함.
                    ed명령어중 x, dd, s는 VIM처럼 10x, 10dd로 입력시 10회 반복 처리하도록 하였으며,
                    s 명령어(대치) 또한 파일 내의 모든 문서에 대해 처리하도록 함.
                    w, q의 경우 VIM처럼 wq로 입력해도 처리 가능하도록 변경했으며,
                    set nu, set nonu로 행 번호 처리가 가능하도록 하였음.
                    3일간의 코딩기간중 총 약 8시간 코딩.

다음주부터 SIVI와 쉘 프로젝트 코드와 설계 자료로 분석 포스트를 올립니다.

-_-!