사용자 삽입 이미지
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\GameUX\Games 경로에 목록이 있다.
이름을 바꾸거나 삭제하거나.. 추가는 클래스 키를 생성해야 하므로 패스!!
크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by 모질이

2009/11/16 14:06 2009/11/16 14:06
,
Response
No Trackback , No Comment
RSS :
http://ph0ebus.net/rss/response/98

타자가 최근에 C++로 개발된 미디어 엔진과 Flex UI를 연동해야 할 필요가 생겼다.

독립엔진은 별도로 JSON 어댑터를 제공해주어서 특정 명령 호출까지는 문제없이 진행되었다.
다만, 미디어 엔진이다 보니 명령 호출 후 미디어 인코딩 등의 시간이 오래 걸리는 프로세스가 많았고
이 프로세스가 끝나는 2~30분 이후까지 Flex RPC 스레드를 물고 있다가 결과 핸들러를 발생할 수가 없는
상황이 발생했다. 즉, JSON 호출과 프로세스 결과 이벤트가 각각 다른 스레드를 가져야 하는 상황.

아래와 같은 내용으로 개발은 진행된다.

JSON 호출 (Java Service)

미디어 엔진에서는 위의 tid 값을 가지고 있다가 프로세스 완료후 결과 핸들러를 능동적으로 호출하면서 파라미터에 tid를 재전송한다. 이제 엔진에서 결과값을 리턴할 서블릿을 구성해보자.

Result Handler (Servlet)


엔진에서 프로세스가 완료되면 위 서블릿을 호출하며, 서블릿에 지정된 request parameter들을 HashMap으로 변형해서 BlazeDS의 Message로 발생시킨다. 이제 Flex에 Consumer를 설정해야겠지?

호출/결과 (Flex)


Flex에서 호출하고 받는 부분이다. 주목할 부분은 subTopic으로 해당 프로세스 스레드를 구분하여 메세지 처리하는 부분이다.

이 프로세스의 단점이라 하면... process progress가 안보인다는 정도?
크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by 모질이

2009/10/01 11:58 2009/10/01 11:58
, , ,
Response
No Trackback , No Comment
RSS :
http://ph0ebus.net/rss/response/91

Adobe Flex 2.0 발표와 더불어 공개된 Adobe Flex Data Service 2.0(이하 FDS2)은 그 기가 막힌 성능으로도 여러 사람들에게 놀라움을 안겨주었지만 더불어 기가 막힌 가격으로 또한번 여러 사람들을 경악에 빠뜨린 바 있다.

현재 Adobe는 FDS2의 계보를 이으며 여러 제품군과 통합되고 그 기능이 개선된 LiveCycle Data Service(이하 LCDS)를 공급중이며, 많은 기업에서 기존의 EJB 등의 UI를 Flex로 개선하면서 도입하고 있다. 뭐 가격이 어찌됐건 성능 하나는 죽이니까..

문제는, 개발자들이 가격을 알아버렸다는데 있겠다. 원체 비싼 솔루션이다 보니 엔지니어들에게는 그 금액마저도 부담으로 다가오는 것이다. 어차피 엔지니어가 돈주고 사는것도 아닌데 왜냐고?

그 이유를 디벼줄께

좀 조악한 비유이긴 하지만 타자 역시도 저와 비슷한 느낌으로 LCDS(당시에는 FDS)에 접근하기가 쉽지만은 않았다.

LCDS.. 그 가격에 비해 알고보면 실로 별거 아니다. 지금부터 차근히 디벼보자!!

1. 라이센스 정책
FDS2 시절에는 라이센스 등급이 Express, Community, Enterprise 이렇게 크게 나뉜다. 현재는 Express 대신에 BlazeDS가 1CPU 라이센스로 무료 배포되고 있다. 1CPU는 '물리적으로' 1개의 CPU를 일컫는다. 다만 이 '물리적으로'라는 말에 해석이 엿장수 마음이라 듀얼코어까지만 '물리적 1CPU'로 인정하고 쿼드코어부터는 2CPU로 간주한다. 헥사코어? 옥토코어? 각각 3CPU / 4CPU 되시겠다.

2. 설치
설치야말로 Adobe 홈페이지에 그럴듯하게 예시 및 설명이 되어 있다. 다만, 실제 사용하기 위해서는 flex.war 파일 하나만 있으면 된다는거~ BlazeDS의 경우에는 blazeds.war 파일 되시겠다. 타자는 아래부터는 BlazeDS로 예시를 들어 보겠다.
우선 엔지니어의 윈도우에 WAS를 설치한다. 타자는 Tomcat을 설치했다.
LCDS라면 역시 윈도우에 설치한다. 기존 FDS2에서는 JRun 기반으로 배포를 했던 반면에, 현재는 Tomcat 기반으로 배포한다. 사실 다 필요없다. flex.war / blazeds.war 이 파일만 찾아서 엔지니어가 실제로 사용할 WAS에 deploy해주면 그게 바로 설치작업이다. 설마 war 파일 deploy하는 법까지 설명할 필요는 없을듯 하다.

3. 사용
이제 설정 파일을 열어보자. Tomcat의 경우 {AppRoot}/WEB-INF/flex/service-config.xml 의 경로를 열어보면 되겠다.

service-config.xml을 열어보자

위와 같이 각 기능에 따라 몇개의 파일로 분류되어 있다. RemoteObject 사용에 대한 설정은 remoting-config.xml, Messaging 사용에 대한 설정은 messaging-config.xml을 열어보면 된다.
타자, RemoteObject에 꽂혔다.

remoting-config.xml을 열어보자

굵은 글씨 부분이 타자가 추가한 부분이다.
파란 글씨는 Flex에서 호출할 이름 되겠으며, 붉은 글씨는 호출받으면 실제로 대령할 Java 클래스 경로를 넣어주면 된다. 이게 뭐냐고?

Flex RemoteObject란 말 그대로 Remote(원격) Object(객체). Flex 내에서 new Object 뭐 이런 식으로 생성하지 않아도 WAS에 고이 모셔둔 Java 객체를 마치 Flex 내의 객체인양 사용할 수 있는 기능이다.

Java 샘플 소스


Flex 샘플 소스


그렇다. 전세계 엔지니어들의 총애를 한몸에 받고 계시는 <Hello World> 출력하기 프로젝트인 것이다. Flex 소스 내에 강조표시 된 부분에서 보다시피 Java 클래스 내의 getHelloWorld() 메소드를 호출하고 있다. Flex 주제에. 그런데 더 기가 막힌건, 이녀석이 실제로 나에게 헬로~ 하고 인사를 한다는 것이다.

본 샘플에서는 getHelloWorld() 메소드가 바로 "Hello World !!"를 리턴했지만 <Hello World> 문자열을 JDBC를 통해 Oracle에서 쿼리를 통해 리턴받을 수도 있고 - 이게 바로 Flex의 DB 연동이다 - 소켓 서버 접속 등을 통해 리턴받을 수도 있을 것이고.. WAS에서 Java로 구현 가능한 기능 및 데이터는 위의 샘플과 같은 방식으로 Flex로 구현된 UI에서 사용 및 표시 가능하게 되는 것이다.

백번 보고 들어 뭐하나 얼렁 Copy / Paste 해서 실행해보자.

LCDS가 뭔가요? BlazeDS가 뭔가요? (이 타이밍 쯤에서 '먹는건가요?' 한번 나와줘야 할지도..)
타자가 질문받은 많은 질문자들 중 일부는 LCDS가 하나의 어플리케이션 서버 쯤으로 인식하는 사람들도 있었고, 별도의 중계 프로그램 정도로 인식하는 사람들도 있었다.

그 분들께 어느정도 이해할만한 답변을 드리자면, LCDS, BlazeDS는 위와 같은 Flex-Java 간 데이터 연동 - 사실 이건 일부에 불과하다 - 을 위한 WAS 라이브러리 정도로 받아들이면 크게 틀리지 않는다는 타자의 소견이다.
크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by 모질이

2009/02/14 11:34 2009/02/14 11:34
, ,
Response
No Trackback , No Comment
RSS :
http://ph0ebus.net/rss/response/81

private function itemFocusInHandler(event:DataGridEvent):void {
    System.setClipboard((event.target.itemEditorInstance as TextInput).text);
}

<mx:DataGrid width="300" height="200" itemFocusIn="itemFocusInHandler(event)" editable="true">
...

Flash Player 9 시절에는 이게 가능했다.
그러나 한층 업그레이드된 Flash Player 10의 보안 정책을 따르면,
itemFocusIn 등의 User Interaction과 관계없는 이벤트 핸들러에서는 클립보드와 같은 로컬 리소스로의 접근을 제한한다.
(실제로 #2147 런타임 에러가 발생한다.)

결국, 클립보드에 값을 넣기 위해서는 클릭이나 키입력 이벤트를 타고 처리해야 한다는 얘긴데..
Flash Player 10에서 작동하기 위해서는 아래와 같은 꼼수가 필요하다.

private function itemClickHandler(event:ListEvent):void {
    var dg:DataGrid = event.target as DataGrid;
    var col:DataGridColumn = dg.columns[event.columnIndex] as DataGridColumn;
    System.setClipboard(event.itemRenderer.data[col.dataField]);
}
<mx:DataGrid width="300" height="200" itemClick="itemClickHandler(event)" editable="true">
...

뭔가 맞지 않는 느낌이지만 일단 동작은 정상!!
크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by 모질이

2009/02/13 12:09 2009/02/13 12:09
,
Response
No Trackback , No Comment
RSS :
http://ph0ebus.net/rss/response/80

화면 우측 하단 귀퉁이에 조그맣게 버튼을 달아놓는다. 최초 받는 이벤트는 mouseDown.

<mx:Button width="10" height="10" mouseDown="resizeDownHandler(event)"/>
<mx:Script>
    <![CDATA[
   private function resizeDownHandler(event:MouseEvent):void {
    systemManager.addEventListener(MouseEvent.MOUSE_MOVE, resizeMoveHandler, true);
    systemManager.addEventListener(MouseEvent.MOUSE_UP, resizeUpHandler, true);
   }

   private function resizeUpHandler(event:MouseEvent):void {
    systemManager.removeEventListener(MouseEvent.MOUSE_MOVE, resizeMoveHandler, true);
    systemManager.removeEventListener(MouseEvent.MOUSE_UP, resizeUpHandler, true);
   }

   private function resizeMoveHandler(event:MouseEvent):void {
    if (event.buttonDown) {
     var pt:Point = new Point(event.stageX, event.stageY);
     pt = globalToLocal(pt);

     this.width = (pt.x > this.minWidth) ? pt.x : this.minWidth;
     this.height = (pt.y > this.minHeight) ? pt.y : this.minHeight;
    }
   }
    ]]>
</mx:Script>

크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by 모질이

2008/04/29 22:03 2008/04/29 22:03
,
Response
No Trackback , No Comment
RSS :
http://ph0ebus.net/rss/response/34

윈도우 XP에서는 32GB 이상의 하드디스크 파티션을 포맷할 경우 FAT32 옵션이 사라져버린다.

얼마전 160G 외장하드를 사서 무심코 NTFS로 포맷하고 사용하다가, 집에서 사용하는 VISTA와 회사에서 사용하는 XP간에 권한 충돌이 자꾸 생겨서 FAT32로 포맷해버렸다. 사실 이론적으로 FAT32 형식은 2TB(2,000GB)까지의 용량을 지원하는데 단지 WinXP에서 지원하지 않을 뿐인거다.

냅다 포맷해보자. 첨부파일 고고씽!!

참고로 이녀석은 외장하드디스크 단일 파티션 포맷만을 지원한다.
크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by 모질이

2008/04/25 11:57 2008/04/25 11:57
Response
No Trackback , No Comment
RSS :
http://ph0ebus.net/rss/response/33

사용자 삽입 이미지

 
 알림영역 항상 감추기, 사용하지 않을 때 감추기, 항상 표시 등등 설정을 하다 보면 지금은 안쓰는 프로그램인데 마구 쌓여있는 히스토리들을 보면서 성질을 내고 계신 분들을 위한 팁입니다

알림영역 히스토리 삭제방법 열기

크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by 모질이

2008/03/10 11:47 2008/03/10 11:47
,
Response
No Trackback , No Comment
RSS :
http://ph0ebus.net/rss/response/17


블로그 이미지

백골이 진토되어 넋이라도 쫀득쫀득.. [사고뭉치 엉클쪼]

- 모질이

Calendar

«   2010/08   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        
Statistics Graph