Clean Code that Works.

GUI 프로그래밍을 할때는 각 컴포지트의 구성도 중요하지만 이벤트의 처리도 중요한것 같다.

SWT/JFace in action 책을 보면.

복잡한 사용자 인터페이스는 이 두가지 이벤트 처리 수단을 모두 사용해야 한다.

JFace가 메뉴, 툴바, 버튼에 대한 빠른 인코딩이 가능한 한편, SWT는 키보드 작동 및 Shell과 테이블 같은 위젝과 관련한 이벤트에 필요하다.또한 JFace 클래스는 오른쪽 클릭과 왼쪽 클릭을 구분해야 할 때는 별 쓸모가 없다.
그러므로 GUI 개발자가 최소의 코드량으로 최대의 성능을 내고자 한다면 양쪽 툴셋에 모두 익숙해 져야한다.

위의 내용을 항상 명시하며 가볍고 깔끔한 코드를 가지는 프로그래밍을 하도록 하자.

요즘 SWT 책을 보고 있느데.

이 책이 쓰여졌던 버젼과 현재 이클립스 버젼이 다르기 때문에 책대론 해서는 실행이 안된다.
classdef 어쩌구~~~ IProgress~ 어쩌구 하면서안될시.

//
Visual Editor를 설치하셨다면 손쉽게 SWT/JFace User Library를 선택하는 것만으로 설정할 수 있습니다.

만일 직접 설정하고 싶으시다면 책에 설명한 플러그인 대신 다음의 플러그인들을 클래스경로에 직접 추가해주시면 됩니다.

물론 배포할때도 같이 해야겠죠~

org.eclipse.swt.win32.win32.x86
org.eclipse.jface
org.eclipse.core.commands
org.eclipse.equinox.common
//

이클립스 버젼이 3.2 일 경우에만 해당하는 사항.

org.eclipse.equinox.common_3.2.0.v20060603.jar 안에 IProgressMonitor.class 가 존재 한다고 한다.

다른 용어 로는 Spin Lock, Guarded wait

복수의 쓰레드가 인스턴스를 공유하고 있고 마음대로 인스턴스에 액세스 하게 되면 인스턴스의 안정성을 잃어 버리게 된다. 이를 해결 하기 위해서 인스턴스의 상태가 부적절한때에는 적절한 상태가 되기까지 쓰레드를 기다리게 한다. 인스턴스의 '적절한 상태'를 '가드 조건'으로 표현하고 안정성을 잃어버릴 위험이 있는 처리를 하기 전에 가드 조건이 충족되어 있는지를 테스트 한다. 가드 조건이 충족되어 있지 않으면 만족될 때까지 쓰레드를 기다리게 한다.

ps. Guarded Suspension 패턴을 사용하면 가드 조건에 의해 메소드의 실행을 제어할 수가 있다. 하지만 가드 조건이 영원히 충족되지 않으면 쓰레드는 영원히 기다리게 되므로 생존성을 잃어 버리게 될 수 있다.

ps. 자바에서는 가드 조건 테스트에 while문을 사용해서 기다리기 위한 wait 메서드를 사용한다. 가드 조건이 변화 했을 경우 notify/notifyAll 메서드를 사용해서 쓰레드를 깨우면 된다.

ex.

import java.util.LinkedList;

public class RequestQueue {
   private final LinkedList queue = new LinkedList();
   public synchronized Request getRequest() {
    while (queue.size() <= 0 ){
     try {
      wait();
     } catch (InterruptedException e) {
      // TODO: handle exception
     }
    }
    return (Request)queue.removeFirst();
   }
   public synchronized void putRequest(Request request){
    queue.addLast(request);
    notifyAll();
 }
}

다리를 건널 수 있는 사람은 오직 한 명

별명 : Critical Section, Critical Region

문맥 : 목수의 쓰레드가 인스턴스를 공유하고 있습니다.

문제 : 각각의 쓰레드가 인스턴스의 상태를 마음대로 변경하면 인스턴스의 안정성을 잃어버리게 됩니다.

해결법
  우선 인스턴스가 불안정한 상태가 되는 범위(크리티컬 섹션)를 확실히 정해 둡니다. 그리고 크리티컬 섹션은 하나의 쓰레드만이 실행하도록 가드합니다. 그렇게 하면 인스턴스의 안정성은 지켜집니다.

구현
  자바에서는 synchronized를 사용하여 크리티컬 섹션을 실현합니다.

관련
  인스턴스의 상태가 변화하지 않을 때 스루풋을 향상시키기 위해서는 Immutable 패턴을 사용합니다.
  인스턴스의 상태를 참조하는 쓰레드와 변경하는 쓰레드가 나누어져 있을 때에는 스루풋을 향상시키기 위해서 Read-Write Lock 패턴을 사용합니다.

- Java언어로 배우는 디자인 패턴 입문 -

아 PDA 프로그래밍 짜증납니다. =ㅅ=

윈도우용에 있는 메서드가.... PDA용으로 가면 없으니... -ㅅ-;;

윈도우에선 각 탭페이지에 탭페이지.CreateGraphics() 를 사용하면 되지만.

PDA(PocketPC 2003)에서는 탭페이지에 paint 이벤트를 추가 하여

여기 페인트 이벤트에 두번째 인자값으로 그림을 그려주면 됩니다.

e.Graphics.Drawline();

이런 형식으로.


                                                                             (신시티와 300 번역본 모두 출간됬다.)


신시티를 재미있게 본 나로서는 기대 할수 밖에 없는 영화였다.


그래픽 노벨리스트 프랭크 밀러 원작.(신시티2 가 제작중이라던가 제작준비중이라던가.. 아무튼 나온다고 알고있다.) 신시티의 색감과는 다른 . 신시티 에서는 아주 강렬한 색감이었다. 흑백 대비에 몇몇 원색만 색을 드러내는 아주 강렬한 인상을 주는 모습을 보여줬다.




 

영화의 감독은 잭 스나이더(새벽의 저주)인데, 감독이 좀 걸리긴 했다. 프랭크 밀러 원작이다 보니 이전 영화인 신시티와 자꾸 비교가 되는데 신시티 감독은 로버트 로드리게즈(황혼에서 새벽까지, 킬빌2, 데스페라도)이다. 네임 벨류부터 차이가 나고 로버트 로드리게즈가 많든 영화는 다 내마음에 들었다. 신시티의 출연진도 화려하다.


전체적으로 본다면야 신시티가 별 5개 만점에 5개를 받을수 있다고 보고 300은 3.5개 정도 받을수 있을꺼라고 본다.


다른 평가글이나 평론가들의 글을 보니 사람들의 관계설정이 어설프다는 평도 있다. 나는 그냥 액션만 보러 간거기 때문에 별 신경은 안쓴다. 머 적당한 설정인듯싶다.


스파르타 아저씨들이 검정팬티에 빨강망토 한개 둘렀을 뿐인데 어찌나 멋있던지. 남자들배에 다들 왕 자가 -_-;;




                                                                                  한마디로 간지가 좔좔좔.. -_-;;


18금 영화이다 보니깐 살포니 야한 장면과 살포시 잔인한 장면이 나오기도 하지만 보는데 지장은 없다. 중간에 신탁을 하는 신탁여가 나오는데 cg처리를 많이 해서 그런지 초 이쁘게 나온다

--; 나중에 영화정보 뒤져보니 모델이라던데. 역시 몸매가 -ㅁ-


                                                                                              쌔끈한 신탁녀 언니 @_@


영화 초기에 나오는 역사 시간에나 배웠던 스파르타식 교육에 대해서 나온다.


7살에 부모님품을 떠나서 성인식을 할때까지 마을 밖에서 살아 남아야 한다.



                                                                                   늑대도 때려 잡고~~


페르시아 왕 역할을 맡은 배우 사진도 떠돌던데 역시 cg처리도 많이 되고 영화라서 영화속의 모습과는 완전 다르더라.

극중에서는 자기 자신을 신같이 생각한다. 덩치도 스파르타 왕에 비에서 크던데 진짜  그렇게 클려나.


                                                                                         느끼한 우리 왕아저씨 -ㅁ-;;


예고편 캡춰 샷들.

                                                                         계곡에서 페리시아 군하고 싸울때의 모습


마지막 장면 이다. 그리스 연합군 2만 스파르타 1만 과 약 9만 페르시아 군의 맞대결.

서로 싸울려고 달려가다가 이장면에서 끝난다.


왕의 직속 친위대. 싸움좀 한다. 얘내들 2.5명이 스파르타 군인 한명 정도? =ㅁ=


 


왕의 마지막


오랜만에 본 액션 영화라서 기대를 하고 봤는데 아주 잼있게 봤다.

스파르타 아저씨들은 간지가 넘쳐 났고 왕 아저씨 소리 치는것도 멋있고~

액션을 좋아한다면 강추~~~~~~~~~~


기억나는 대사가. 예고편에서도 나오는 Tonight we will dinner to the hell? 맞나?

이 대사를 하기전에 왕이 하는 말이 아침은 든든히 먹도록 저녁은 지옥에서 먹으니까? (이런 번역이었는데) dinner 가 맞는지 died가 맞는지 모르겠다 --;;


아는 배우가 딱 한명있는데 반지의 제왕에서 보로미르의 동생 파라미르(살아있는데 아버지가 불태워 죽이려했던)역을 하고 그 반헬싱에서 어설픈 수사(성직자)로 나온 분이었다.


이사람 나래이션이 계속 깔리는데 그렇게 나래이션에 어울리는 목소리는 아니다.


신시티에서도 주인공들 독백 형식으로 나래이션이 계속 깔리는데

미키루크, 브루스 윌리스, 클라이브 오웬, 조쉬 하트넷(허스키 보이스 넘 멋짐 *-_-*)의 목소리와 비교해 본다면 좀 미리는거 같다. -ㅁ-; 분위기가 왼지 안어울리는..


이상 맘대로 영화 감상문을 마치도록 하겠습니다~ :)


ps. 지극히 개인적인 이야기 인데. 영화를 보러 가기전에 300에 대해서 이야기 해놓은 블로그를 본적이 있었다. 거기 보니깐 캡춰 사진들에 자기 저작권 표시한다고 눈에 거슬리도록 큰 인장을 붙여놓은 것이 있던데. 이 영화를 자기가 직접 만든것도 아니고 캡춰 한거 밖에 없는데 자기 제작물인양 완전 크고 눈에 띠는 인장을 붙여놔서 캡춰 사진에 집중도 안되고 물론 글에도 그 블로그 글을 보는 내내 짜증이 났다.

계속 데이터가 쌓인 다는 가정 아래

가장 밑에 있는 데이터를 뽑아오는 방법.

SELECT TOP 1 * FROM 테이블명 ORDER BY 기준이되는컬럼명 DESC

기준이 되는 컬럼이 인덱스를 가지고 있으면(자동증가에 의해 유니크한 값, 데이터가 쌓여 감에 따라 인덱스도 1, 2, 3 이렇게 증가되는) 이걸 정렬해서 여기서 가장 위에 있는 값(인덱스가 가장 큰값)을 뽑아 오는 SQL 구문.

C:\Program Files\Microsoft SDKs\WPFE\quickstart\samples\aghost.js


aghost.js는 WPF/E SDK에서 제공하는 자바스크립트 파일로서, 다양한 플랫폼과 브라우저에서 WFP/E 컨텐츠 즉, XAML 파일을 구동할 수 있게 도와주는 역할을 한다. 파일의 내부 소스를 살펴보면, 이는 agHost라는 자바스크립트 클래스로 구성된 것을 확인할 수 있는데, 이 클래스는 현재 사용자의 플랫폼과 브라우저를 검사하여 그에 최적화된 ActiveX 코드를 출력하는 역할을 담당한다. 즉, 개발자가 단지 자바스크립트로 agHost라는 클래슬르 생성하여 적절히 인자들(WPF/E를 출력할 대상 HTML 요소 ID, XAML 파일경로 등)을 지정하기만 하면, 이 도우미 클래스가 알아서 적절하게 HTML 상에 <object> 태그나 <embed> 태그를 삽입하여 WPF/E를 표헌하는 것이다.


이 파일이 있으면 XAML 파일이 올바르게 렌더되어, 익스플로러나 파이어폭스, 오페라 각각 다른 웹 브라우저에서  똑같이 보인다는 말씀.!