1992.6.25.

SUBJECT: C, Xlib, Xt 과제 모음의 참조 사항들   ( 자료 II )

STATUS OF THIS MEMO:
memo l00005의 과제들을 해결하는데 도움이 될사항들과 이를 구현한 source들의 위치를 알려 준다.

DESCRIPTION

1.과제 1
  * 입력되는 문자열 중 한글 character를 구별해 내는 부분이 핵심.
  * 완성형 한글의 MSB  즉 7번 bit는 1임을 착안하여
    if( char & 0x80) han_char_count++; 하는 식으로 한글 check.
  * 0x80은 10000000이고 2바이트 완성형 한글의 각 바이트는 1xxxxxxx로 MSB가 1이므로
    이 둘을 bit-and시켜 1이 되면 한글임을 알 수 있다.
  * 또 한글 한 character수는 2바이트이므로  count된 수를 2로 나누어 주어야 실제 character수가 된다.
  * 참고 자료: xedu/memo/z00015
  * 해당 화일: xedu/hw/hw1/hw1.c

2.과제 2
  * 핵심은 두가지. 한가지는 입력된 한글의 코드를 가지고 폰트 화일에서 해당 폰트만을 읽어오는 것. 
    이는 완성형 한글 코드 테이블과 완성형 폰트 화일에 대해 충분히 이해하고  있어야 함.
    이에 관한 자료는 xedu/memo/z00015의 "0-4. 2바이트 완성형 한글(KS완성형)"과
    완성형 코드 테이블을 잘 보시면 쉽게 이해하실 것임.
    KS C5601 코드 테이블을 보시면 0xb0는 "가"의 첫 바이트 코드값이고 0xa1은 두번째 바이트의
    코드 값임을 알 수 있다.
  * 또 한가지는 읽어 온 bitmap 폰트 화일을 화면에 어떻게 비트 단위의 표시를 할 것인가 하는 점.
    김정민 DL가 작성한 showbitmap.c를 참조하실 것.
    이 화일은 선택된 화일의 모든 폰트를 보여주게 되 있음을 주의.
  * 참고 자료: xedu/memo/z00015의 font size 관련 부분.
               입문 X Window System(지산사) - "60절. bitmap을 만들기 위해서는?"
  * 해당 화일: xedu/hw/hw2/hw2.c

3.과제 3
  * #ifdef를 사용하면  서로 달리 컴파일해야 하는 모듈을 동일 화일에 가질 수 있다.
    이를  Makefile에서의 DEFINE값에 따라 조건적으로 컴파일 한다.
  * 참고 자료: 입문 X Window System(지산사)
    이 책은 다음의 과제 전반을 거쳐 옆에 놓고 보시기 바람. 정말 정리가 잘 되 있음.
  * 해당 화일: xedu/hw/hw3/hw3.c

4.과제 4
  * Xlib와 Xt의 조합을 어떻게 할 것인가가 첫 문제로 등장.
    실제 Xt를 가지고 프로그램한다고 하지만 이는 어디까지나 Widget들을 간편하게
    create한다는 의미이지 Widget간의 link와 Application의 내용을 제어하는 것은 
    상당 부분 Xlib로 coding 된다.
  * 각 Widget은 어떻게 기능하는 것인가. 또 어떤 Widget을 사용할 것인가가
    가장 크게 고민될 것. 이것 저것 사용해 보시길.
  * Athena Widget은 매우 초보적인, demo용으로 발표된 것으로 단순할 것임.
  * event handler와 call back에 대해 충분히 이해 하시길.
    그러면 "quit" button 뿐만 아니라 한 윈도우 내에 여러개의 button을 만들어
    달고 이 button이 눌려졌을 때의 기능을 자유롭게 정의해 사용할 수 있음.
  * 해당 화일: xedu/hw/hw4/hw4.c

5.과제 5
  * 포인터와 구조체에 대한 좋은 예제가 될 것.
  * 컴파일 후 화일을 실행시켰을 때  발생하는 Segmentation fault나
    SEGV error( Segmentation Violation Error)는 프로그램에서  포인터를 잘 못 사용하여 
    메모리에 올라와 있는 시스템 관련 코드의 어드레스를 콜하는 경우. 
    컴파일 에러가 없는 경우이므로  포인터 관련 변수들을 체크해 보시라.
  * xdbx,adb를 간단하게나마 사용할 수 있으면 간단하게 문제되는 부분을 찾게 됨.
    위와 같은 runtime error를 찾아 내기 위해서는 debugging tool들을 잘 사용할 줄 알아야 함.
  * 해당 화일: xedu/hw/hw3/hw3.1.c, xedu/hw/hw4/hw4.1.c

6.과제 6
  * 여러 Window Manager가 사용하는 resouce file들(/usr/lib/X11/app-defaults밑의 resource 화일들), 
    /usr/lib/X11/xdm의 Xresources화일 등 X의 Customizing에 관심이 있었던 경우라면 그 의미들의
    이해에 유용한 경우.
  * 'mechanism, not polocy'라는 원칙에 충실한 예. 많은 부분을 사용자 정의 영역으로 남겨 둔 것. 
  * class와 instance의 개념을 그리고 class 이름과 instance 이름의 naming scheme을 이해하시길.
  * XtInitialize(nstance, class, ...)와  XtCreateManagedWidget(instance, class, widget, ..)의 
    intstance와 class를 잘 확인하시라.
  * 해당 화일: xedu/hw/hw3/Hw5
    - 이 화일을 환경변수 XENVIRONMENT에 setting하던지 home directory밑으로 가져다 놓아야 한다.

7.과제 7
  * 여기서도 각 Widget은 어떻게 기능하는 것인가. 또 어떤 Widget을 사용할 것인가가 문제.
    참조 화일의 smapler와 그 source는 이 문제를 다소 해소해 줌.
    관련 매뉴얼이 초보자에게는 신통치 않음.
  * 해당 화일: xedu/hw/hw5/hw5.c

8.과제 8
  * 아주 간단한 modify로 해결될 것.
  * 해당 화일: xedu/hw/hw6/hw6.c

9.과제 9
  * 우선 sample.c의 automata관련 부분을 명확히 이해하시길.
    김정민DL의 automata는 개념을 잡는데 활용하시고,이 automata는  libhangl.a의 automata를
    이해하기 쉽게 modify한 것임.
  * 해당 화일: xedu/hw/hw8/hw8.c

10.과제 10
  * 이 단계를 지나면 X Client들의 키 입력 모듈들을 찾아 다니면서 한글 automata로 바꾸어 줄 수
    있고 이것이 바로 X 한글화임.
  * 해당 화일: xedu/hw/hw9/hw9.c





Revision History
Created               		on June 25.1992.