안녕하세요. 얼마전에 자바 온라인 게임(http://www.okjsp.pe.kr/seq/111129)
을 소개 한 (주) 론탭의 ncanis 입니다.
==> 국내 최초 상용 자바 온라인 야구 게임 만드는 곳 (리눅스,윈도우 모두 지원)


이번에 론탭(www.rontab.com) 이란곳에서 아작스로 만든 웹 실시간 채팅을 소개 합니다.

한번씩 해보세요~ ^^

기능이
-  게임과 웹과 실시간 연동 가능 ( 추후)
-  구글 토크(http://www.google.com/talk/) - 윈도우, Spark(리눅스,윈도우) 와 연동 가능
-  서버 분산 클러스터링 기능
-  히스토리(500중)
-  닉네임, 말머리 기능




신고
Posted by -TED-
TAG ajax, Chat, GWT, java
안녕하세요. Ncanis입니다.

<가칭>Bake(Real Baseball Online Game)
원 OS: Windows, Linux


이번에 (주)론탭(www.rontab.com) 이라는 회사에서 리얼 야구 온라인 게임을 만들었고
이를 테스트 하기위해 프랜들리 테스트를 위해 초대장을 발부하네요.

저도 이회사에서 특정부분을 같이 해보게 되서 이렇게 초대장을 받았네요.
덕분에 10장을 다른분에게 발부하게되었네요. 굿~


이게 중요한게
리눅스, 윈도우즈 다 실행가능합니다.
(풀 자바로 만들었다는 얘기가..)
그래서 리눅스, 윈도우즈 운영체제에서 실행이 가능합니다.

야구를 좋아하시는분들은 충분히 흥미를 느끼실듯~
컨트롤 하는 재미가 쏠쏠함~ , 각종 구질등, 번트, 도루등 실제 야구를 하는 느낌이네요.
구질 선택 인터페이스도 획기적이네요. 기존 야구게임들과는 틀리게 호~
심리적인 요소도 많고. 굿굿,
공이 휘는 모습을 보면 오오!
지인들만하는 테스트같은데 버그도 안보이고 좋네요~
저도 열씸히 하는중 ㅋㅋ
시작한지 얼마 안된거 같아 그런지 아직 사람이 별로 없긴 하지만~
연습모드도 쏠쏠하네요.

제일 좋은건 리눅스서 된다는거~, 굿, 제가 리눅스(우분투 7.10)로 운영체제로 쓰고있어서 후후후.

이 게임에 대한 테스터는 초대형식으로 가입할수 있습니다.

제가 10장을 가지고 있네요.
- 댓글로 (초대장을 받으실 본인의 이메일 주소를) 달아주시는분께
   선착순으로 보낼게요.

- 또는 ncanis@gmail.com 주소로 요청 메일을 보내주셔도 됩니다.

초대장은
 - 메일로 받으실겁니다. 메일주소를 남겨주셔야 제가 그메일로 초대장을 보내요.
   (테터툴즈나 지메일같은 방식같음)
 - 초대장을 받아야 테스터 사이트에 로그인 가능함.


기능 구현들
1. 리그 시스템
2. 친선 모드 (8팀 제공)
3. 연습 모드 3종
4. 길드 시스템, 차단, 친구 관리, 구글 토크 연동 메신(게임중 구글토크유저와 채팅 가능 --)
5. 레벨링, 등급제 시스템 등등.


컴퓨터 사양
 VGA NVIDIA 6600급 이상, 램 1G 이상



게임 스샷들~
<윈도우즈 에서의 게임 실행화면>

사용자 삽입 이미지




<리눅스 에서의 게임 실행화면>
- 아쉬운게 리눅스에선 아직 한글 채팅은 지원안하네요. 머 고쳐지겠죠.
사용자 삽입 이미지


ps. 모든 운영체제 상관없는 많은 게임들이 많이 나오면 좋겠네요~




신고
Posted by -TED-

보통 Java 어플리케이션을 리눅스에서 구동하다보면

한글이 깨지는 경우가 있습니다. 바로. Font가 없어서이죠.~

그럴땐 폰트를 JRE에 폰트를 설정해 주면 됩니다.



D:\jre1.6.0_01\lib\fonts 에 gulim.ttc<이건 윈도우 폰트임> 파일을 복사한다.

lib 폴더에 fontconfig.properties 파일과 fontconfig.properties.ko 를 만든후
아래의 내용을 넣고 저장한다.


#한글 폰트 설정
serif.plain.korean=-*-gulim-medium-r-normal--16-160-75-75-m-160-iso10646-1
serif.bold.korean=-*-gulim-medium-r-normal--16-160-75-75-m-160-iso10646-1
serif.italic.korean=-*-gulim-medium-r-normal--16-160-75-75-m-160-iso10646-1
serif.bolditalic.korean=-*-gulim-medium-r-normal--16-160-75-75-m-160-iso10646-1

sansserif.plain.korean=-*-gulim-medium-r-normal--16-160-75-75-m-160-iso10646-1
sansserif.bold.korean=-*-gulim-medium-r-normal--16-160-75-75-m-160-iso10646-1
sansserif.italic.korean=-*-gulim-medium-r-normal--16-160-75-75-m-160-iso10646-1
sansserif.bolditalic.korean=-*-gulim-medium-r-normal--16-160-75-75-m-160-iso10646-1

monospaced.plain.korean=-*-gulim-medium-r-normal--16-160-75-75-m-160-iso10646-1
monospaced.bold.korean=-*-gulim-medium-r-normal--16-160-75-75-m-160-iso10646-1
monospaced.italic.korean=-*-gulim-medium-r-normal--16-160-75-75-m-160-iso10646-1
monospaced.bolditalic.korean=-*-gulim-medium-r-normal--16-160-75-75-m-160-iso10646-1

dialog.plain.korean=-*-gulim-medium-r-normal--16-160-75-75-m-160-iso10646-1
dialog.bold.korean=-*-gulim-medium-r-normal--16-160-75-75-m-160-iso10646-1
dialog.italic.korean=-*-gulim-medium-r-normal--16-160-75-75-m-160-iso10646-1
dialog.bolditalic.korean=-*-gulim-medium-r-normal--16-160-75-75-m-160-iso10646-1

dialoginput.plain.korean=-*-gulim-medium-r-normal--16-160-75-75-m-160-iso10646-1
dialoginput.bold.korean=-*-gulim-medium-r-normal--16-160-75-75-m-160-iso10646-1
dialoginput.italic.korean=-*-gulim-medium-r-normal--16-160-75-75-m-160-iso10646-1
dialoginput.bolditalic.korean=-*-gulim-medium-r-normal--16-160-75-75-m-160-iso10646-1


# Search Sequences

sequence.allfonts=latin-1,korean

# Exclusion Ranges

# Font File Names (font경로를 어플에 맞게 설정해주삼.)
filename.-*-gulim-medium-r-normal--16-160-75-75-m-160-iso10646-1=./jre1.6.0_01/lib/fonts/gulim.ttc

신고
Posted by -TED-
오늘은 DeadLock에 대해서 알아볼려고 합니다.
솔직히 프로그래밍을 하면서 제일 쉬운것은 컴파일 오류죠 ~
바로 잡을 수 있습니다.

그다음이 런타임 오류들인데, 그나마 쉽게 고칠수 있습니다. 에러만 나오면요.
그러나 아무런 반응도, 에러도 없는 그냥 멈춰 버리는
데드 락 ㅡ.ㅡ; 무지 짜증나죠.

Deadlock
 ① 다중 프로그래밍 시스템(MPS)에서 하나 또는 그 이상의 프로세스가 수행할 수 없는 어떤 특정 이벤트를 기다리고 있는 상태. 망에서는 사용 가능한 버퍼가 없어 일단의 노드들이 패킷을 전송할 수 없는 상태이다.

 ② 2개 또는 그 이상으로 분리되어
실행 중인 프로세스들이 여러 자원에 대하여 경쟁을 하는 상황. P라는 프로세스자원 X, 그리고 자원 Y를 필요로 하며 수행 중 자원 요청도 이와 같은 순서로 한다고 가정하고, 동시에 프로세스 Q는 자원 Y, 그리고 자원 X를 필요로 하고 자원 요청 역시 같은 순서로 한다고 가정해 보자. 만약 프로세스 P가 자원 X를 획득했고, 동시에 프로세스 Q가 자원 Y를 획득했다면, 다음에 어떤 프로세스도 요구하는 자원을 획득할 수 없다. 왜냐하면 각각 이미 다른 프로세스에 할당되었기 때문이다.

 ③데이터
통신망에서, 송신기와 수신기 간에 전송할 정보는 있지만 송수신에 필요한 자원이 서로 맞물려 있어 송수신이 이루어질 수 없는 현상. 교착 상태에는 직접, 간접 및 재조립 교착 상태가 있다.

주로 동기화를 잘못 수행했을때 프로세스들이 엉켜 이더저도 수행되지 않는 걸 말하죠.
어떻게 풀까요. 가장 쉬운 방법은 역시 에러를 찾아 로그를 보는것입니다.

그럼 Java에서는 어떻게 할까요.
Thread dump를 뜨시면 됩니다.

Thread dump 를 뜨는 방법들


1. Ctrl+Break
Command 콘솔에서 프로그래밍을 실행시키고, 프로그래밍이 deadlock이 걸리면 Ctrl+break를 누르시면 떠집니다. 메모장이나 기타 파일에 내용을 붙여넣기(ctrl+v)하시면 되겠죠.

2. Java JDK 에 있는 Jconsole
    ( 이방법을 더 추천합니다. )
   알아서 실행된 자바프로그램 프로세스를 낚아채고 해당 프로세스를 선택하고 그 프로세스의 메모리, cpu,정보등 deadlock 정보까지 알아볼수 있습니다.
여기서는 2번째 방법을 알아볼까 합니다.
먼저 Eclipse든
실행할때 VM 옵션을 아래와 같이 줍니다.~

(아래는 Eclise>Run에서 해당 프로그램 옵션을 적는 곳입니다.)
사용자 삽입 이미지
-Dcom.sun.management.jmxremote

이제 프로그램을 실행시키고 나두십시오. 그리고 프로그램이 멈춰버렸다면
이제 JConsole로 해당 프로그램의 VM LOG를 살펴보면 됩니다.
JConsole은 다음 위치에 있습니다.

JDK 설치 디렉토리 > bin > jconsole.exe

사용자 삽입 이미지
구동하면 저렇게 분석할수 있는 프로세스가 나열 됩니다.
그럼 해당 프로세스를 선택하고 Connect를 누르면 이제 그 프로세스의  VM 로그를 분석할수 있지요~


사용자 삽입 이미지
위와같이 나올겁니다. 메모리 사용량, 현 상황 등등, Thread ㅋㅋ 다 볼수 있지요.
자아 저기 Detect Deadlock 버튼이 보이십니까? 만약 Deadlock이 걸린게 있다면 저 버튼을 누르면
해당 부분의 로그를 보여줍니다. 간단하죠.~ ^^

언제나 이런 툴을 보면 즐겁습니다.~ ㅎㅎㅎㅎ 그러나 이런 좋은툴도 개발자가 잘 사용하겠지요?
Deadlock이 걸렸을때 일일이 System.out.println으로 찍어보다가는 1년 금새 갑니다. 그러지 마시고
VM로그를 분석하세요.~ ^^



3. 기타.
    메모리 stack정보를 추출해주는 툴들이 많이 있습니다. 상용이긴 하지만.. ㅋㅋ
    < 그러나 웹스타트로 실행하는 것은 공짜입니다. ^^ >
    - 제품 사이트 :  http://tmitevski.users.mcs2.netarray.com/trace.do
    - 해당 제품 WebStart : http://tmitevski.users.mcs2.netarray.com/stacktrace/app/launch.jnlp

아래는 실행화면 입니다. 
사용자 삽입 이미지

메인메뉴>Process>Thread dump 를 선택하면 나오는 다이얼로그에서
 Thread dump를 체크하시고 확인을 누르시면 dump가 떠집니다.
사용자 삽입 이미지
쓸만한 툴입니다.~ 그러나 Jconsole을 쓰시기 바랍니다.~ ^^
by ncanis(조성준)
신고
Posted by -TED-
farecompare.com 에서 매번 실시한 성능테스트 결과가 java.sun.com 에
게시가 되었네요.

아래에 보면 정말 jdk1.2 에 비해 jdk6 의 성능이란 정말 하늘과 땅차이네요~
성능 수준이 거의 8배네요.

앞으로의 자바의 성능 개선이 기대됩니다.~

Improvements in Java Platform, Standard Edition 6

The founders of FareCompare, who have tried out virtually every new feature of the Java platform since Java 2 Platform, Standard Edition 1.2 (J2SE 1.2), report several improvements as a result of their early access to Java Platform, Standard Edition 6 (Java SE 6):

  • An overall increase in performance speed of from 25 to 30 percent
  • Decreased garbage collection time
  • Superior monitoring and customization in the Java Monitoring and Management Console (JConsole)
  • Improvements in the Java HotSpot VM

 
Java SE 6 Platform Benefits Performance
by ncanis(조성준)
신고
Posted by -TED-
TAG java, jdk6