1.큐를 사용해서 채팅 결과를 저장 + 새로 들어온 입력 추가 .. 요런식으로 접근을 했는데.. 이게 먼 삽질인가?

 매번 들어온 입력이 있으면 읽어와서 콘솔에 뿌려주면 그만인것을..  (매번 전체 채팅 내용을 전부다 갱신해
 줘야한다고 생각을 했엇다. 이건.. 채팅프로그램이다;; 게임 처럼 모든 움직이는 오브젝트, 배경을 매 프레임
 다시 그려야 하는것이 아니다. (이건 출력 대상이 콘솔이기 때문이 아니다. gui의 윈도우 창같은 경우라도.. 
 출력할 도큐먼트의 끝에 새로 들어온 채팅 메세지를 추가해주면 되는것이다. 내 고정관념의 결과인듯 하다;;)

2.유저가 채팅을 입력하는중(엔터키 전까지)에도 멈추지 말고 계속 서버에서의 입력값이 있는지 확인하고 
  있으면 콘솔에 갱신을 해줘야 했다. 유저의 엔터키가 있을때야 하나의 서버로의 출력 이벤트가 발생하는 것이고...
  즉 서버에서 읽어서 콘솔에 뿌려주는 작업 vs 유저의 입력을 받은후 서버로 전달하는 작업은 순차적인 의존관계
  가 있어선 안됀다. (독립적인 두 작업이 병렬적 = 멀티 스레딩 으로 처리되어야 한다.)

  내 경운 이번 채팅 프로그램에서 nio 패키지를 이용한 비동기 방식의 입출력 처리 + 멀티 스레드 작업 + 메세지에
  암호화 적용인데.. 

  아까의 구성은 잘못 되었다. 좀 더 고민이 필요하다.

 3.만약 이번 채팅 프로그램을 gui 기반으로 이동시킬 경우를 대비해.. 조금 더 설계상 고민을 해야한다.

 4.채팅 프로그램의 확장성을 위해(특정 액션을 의미하는 메세지추가) 메세지(패킷)를 상속 구조를 이용해 분할한다.
   상속구조를 이용하는 이유는 서버측에서 일괄된 형태의 패킷을 받아 커맨드 패턴을 적용하고 싶기 때문이다.
   (그러기 위해서 다형성 필요)

 5.추후 로그인등 과정이 추가될수 있으니.. 클라이언트 클래스의 설계(각각의 개념요소 추출해서 클래스화 & aggregation
   식으로 고민을 하자.)

(etc) 서브버전이 저장소를 인식을 못한다. 미치겟다 ㅠㅠ


by givingsheart 2014. 1. 1. 16:21