반응형

[Flash] http://play.tagstory.com/player/tagStory_Player.swf?vid=V000069450&player_type=0&agent=IE&distributor=&feed=TS



[Flash] http://play.tagstory.com/player/tagStory_Player.swf?vid=V000069452&player_type=0&agent=IE&distributor=&feed=TS


이번 로보코드 코리아컵에 대한 홍보 영상...

DW 모니터요원들의 정례모임에서 항상 맛있는 식사를 위해..

대치동 주변의 맛집을 찾아주시는 계실장님.. 너무 멋져용..^^
반응형
:: 2007년 07월 11일 ::
ibm.com/developerworks/kr

  Weekly Highlight
Robocode Korea Cup 2007 로보코드 코리아컵 2007이 15일 접수 마감됩니다. 성공적인 오픈소스 프로젝트 방법론 성공적인 오픈소스 프로젝트 방법론 세미나가 19일 열립니다. 모니터요원 2007 제2기 IBM developerWorks 대학생 모니터 요원 모집이 20일 마감됩니다.
   Local Contents
태깅(Tagging)의 존재 이유 - 김홍기 (dW Column)
개인용 컴퓨터의 산 역사, 스티브 워즈니악 자서전 ‘iWoz’ - 양유성 (개발자 책꽂이)
보안은 내 운명 - IBM 티볼리 사업부 티볼리 기술 지원팀 과장 박형근 님 (dW Interview)
대담 | 브라스밴드 프로젝트 후기 (Speical Issue)
   최신 기술자료 (한글)
Rational 소프트웨어 정보와 지식 교환의 장, IBM Rational 종합 정보사이트인 “Rational Comes To You”에서 IBM Rational의 모든 것을 확인하십시오. 다양한 세션과 함께 설문, 추천하기, Best Contents 투표하기 등 경품이 푸짐한 이벤트에도 참여하시기 바랍니다.
툴과 기술 사용에 대한 통합된 접근 방식
기술과 소프트웨어를 하나로 통합하면 여러분과 여러분의 팀은 프로젝트 디자인부터 구현에 이르기까지 효과적으로 협동할 수 있습니다.
XML 표준(업데이트) [XML]
XML은 로컬 어휘와 글로벌 어휘를 개발하는 기본 신택스입니다. 본 목록표에서는 많은 XML 표준들에 대한 상세한 설명과 관련 링크를 제공합니다. 지난 3월 번역된 기사의 모든 용어 페이지가 번역 되었습니다.
Real-time Java, Part 3: 쓰레딩과 동기화 [자바]
Part 3에서는 RTSJ의 구현이 지원해야 하는 쓰레딩과 동기화에 대해 살펴봅니다.
Seamless JSF, Part 1: JSF에 맞춘 애플리케이션 프레임웍 [웹 개발]
JavaServer Faces (JSF)는 자바 웹 애플리케이션을 위한 최초의 표준 사용자 인터페이스 프레임웍입니다. Seam은 JSF를 확장한 강력한 애플리케이션 프레임웍입니다. 본 시리즈 첫 번째 기술자료에서는 이 두 개의 프레임웍이 갖고 있는 강력한 힘을 발견하고자 합니다.
developerWorks 커뮤니티 토픽
developerWorks 커뮤니티 토픽은 developerWorks 스페이스의 첫 번째 단계이고, 5백만 회원들로 구성된 전 세계적인 커뮤니티의 혁신가들이 특정 기술 주제, 소프트웨어 프로젝트, 개발 활동, 사용자 그룹 커뮤니티에 초점을 맞춘 마이크로-사이트를 만들 수 있습니다. 커뮤니티 토픽 책임자들은 IBM, developerWorks 및 외부 소스에서 제공하는 기술자료, 튜토리얼, 블로그, 포럼, wiki, 웹 피드 링크를 추가할 수 있습니다.
SOA 복합 비즈니스 서비스 구현하기, Part 5 [SOA와 웹서비스]
실제 유스 케이스를 통해 IBM? WebSphere? Business Modeler V6을 사용하여 비즈니스 프로세스를 모델링, 조합, 전개할 수 있는 베스트 프랙티스 및 여러 가지 경험들을 배워봅시다.
   최신 튜토리얼 (한글)
이클립스를 사용한 앤트 활용법 [오픈 소스]
이클립스를 이용하면 아파치 앤트로 더 쉽게 일할 수 있습니다. 이클립스 IDE의 앤트 통합 기능에 대해 알아보고 앤트 편집기를 통해 이클립스에서 코드를 짜고 빌드하며 디버그하는 법을 배우겠습니다.
PHP를 사용하여 인터랙티브한 제작 방식의 위키 만들기, Part 3: 사용자와 권한 [오픈 소스]
"이 연재에서는 PHP를 사용해 제작 과정 추적에 유용한 각종 기능이 있는 위키를 처음부터 만듭니다. 지난 Part 2에서는 위키의 기본을 다루었습니다. 이제 크리키에 접근할 때 사용자에게 권한을 주는 방법을 배워보겠습니다.
  최신 튜토리얼 (영문)  

이클립스 :
개발도구를 넘어서 범용 플랫폼으로


이클립스 : 개발도구를 넘어서 범용 플랫폼으로한국 developerWorks에서 7월 23일 IT 라이프사이클 솔루션을 위한 기술 동향과 솔루션으로 세미나를 구성하여 개발자 및 관리자 여러분을 초대합니다.

최신 튜토리얼(영문) 그린 스크린 애플리케이션을 변형하여 Eclipse 환경에서 실행하기

  최신 SW 다운로드

WebSphere Business Modeler Advanced V6.0.2
WebSphere Extended Deployment Data Grid

  마이크로소프트웨어(www.imaso.co.kr) 7월호 주요 목차

[COVER STORY] 데이터 속의 데이터, 메타데이터 활용
자바vs.닷넷의 메타데이터 활용, 자바 EE 5의 어노테이션 활용, 어노테이션 인 액션, 어트리뷰트 오리엔티드 프로그래밍, 오픈소스와 어노테이션 등

[SPECIAL REPORT] IT와 비즈니스의 만남, SOA(Service Oriented Architecture)
비즈니스와 기술의 하모니, SOA 엔트리 포인트 그 5가지 기준, 성공적인 SOA를 위한 기술적 접근, SOA 시장의 현 주소 등

[STEP BY STEP] PHP를 사용한 상호교환 방식의 위키 만들기 Part3: 사용자와 승인 from IBM 디벨로퍼웍스

반응형
01234

모니터 요원으로 활동하던 차에 로보코드 특강에 대한 이야기가 있었다.

지방대에 재학중인 나는 로보코드에 관심 있는 학우들과 이 특강을 듣고 싶었다.

IBM dw 대학생 모니터 요원으로 홍보도 하고 같은 학교 학우들에게 좋은 기회이리라 생각했다.

dw에 요청하였고 멀리서 로보코드 강사분께서 어려운 발걸음을 하여 주셨고

로보코드 특강이 시작되었고 모두들 흥미롭게 들을수 있었다.

특강을 해주신 강사분이 재미있게 진행해주셔서 쉽게 로보코드를 이해할수 있었고

다른 학우들도 흥미를 갖고 재미를 느끼는 좋은 기회였던것 같다.

나름 모니터 요원 활동을 통해 얻은 하나의 작은 보람이라고 할까??
반응형
:: 2007년 06월 27일 ::

  Weekly Highlight
"Rational" 관련 최신 자료를 검색하고, RTube를 통해 Rational에 더욱 가까이 갈 수 있습니다.
   Local Contents
쾌속 학습팀 - 김창준 (dW Column)
멀티 패러다임 언어 D와 함께 하는 프로그래밍 - 이비오 (Open dW)
신기술 밀림 속 생존전략 Part 3: 프로젝트 현장의 이야기 - 안영회 (Special Issue)
진지한 취미가로서 즐겁게 살기 - 텔인포스 기술연구소 책임연구원, 고현철 님 (dW Interview)
   최신 기술자료 (한글)
Eclipse용 Ajax Toolkit Framework [오픈 소스]
이클립스, ATP, Dojo를 사용하여, 프레임웍을 설치하고 Ajax 애플리케이션을 구현하는 방법을 배워봅시다.
사람을 위한 자동화: 지속적인 피드백 [자바]
피드백은 Continuous Integration (CI)에 있어서 필수적인 것이며 사실상 CI 시스템의 혈액이라고 할 수 있습니다. 사람을 위한 자동화 시리즈에서는 CI 시스템에 적용할 수 있는 다양한 피드백 장치에 대해 설명합니다.
PHP 애플리케이션을 가장 빠르게, Part 3: Memcache 데몬을 사용하여 메모리에 데이터 저장(cache)하기 [오픈 소스]
Memcache 데몬(memcached)은 고성능 분산 객체 캐시로 애플리케이션과 데이터 스토어 중간에 설치되는 RAM의 객체를 보존합니다. 각각의 캐시 히트는 데이터베이스 서버의 라운드트립(roundtrip)을 대체하면서 애플리케이션의 속도를 높여줍니다.
Cell BE 프로세서의 고성능 애플리케이션 프로그래밍, Part 3: SPU [파워 아키텍처]
PPE와 통신하는 방법, CESOF 실행 파일을 만드는 방법, 16 바이트 버스 에러 의미 구분 방법 등을 설명합니다.
Graphical Editing Framework을 사용하여 이클립스 기반 애플리케이션 구현하기 [오픈 소스]
GEF를 사용하여 애플리케이션을 구현하는 초기 단계에 대해 배워봅시다. 이클립스의 그래픽 에디터를 만드는 프로세스를 시작하는 옵션에 대해서도 알아봅니다.
Real world Rails: Rails의 캐싱(Caching) [웹 개발]
일반적으로 Ruby on Rails는 캐싱에는 알맞지 않다고들 합니다. 하지만 상황이 나아졌습니다. Rails 실행 환경의 정적 캐싱, 동적 캐싱, 액션 캐싱, 부분 캐싱에 대해 알아봅시다.
   최신 튜토리얼 (한글)
이클립스용 GUI 빌더, Jigloo 시작하기 [오픈 소스]
Jigloo를 사용하여 워크플로우 애플리케이션용 UI를 구현하는 것이 얼마나 쉬운 일인지를 확인해 봅시다. 시각적 상속 같은 Jigloo의 고급 기능을 연구하고, 애플리케이션을 테스트 하며 이를 패키징 해봅니다.
WebSphere Application Server Community Edition용 Spring 애플리케이션 개발, Part 2 [WebSphere]
"이번 튜토리얼에서는 스프링(Spring)의 연결 관리 구조에 대해 살펴볼 것입니다. 이제 ContactDAOJDBC.java 클래스를 개발하는 방법과 연결 관리를 위해 연결 풀에 사용되는 널리 알려진 오픈소스만큼이나 간편한 스프링 고유의 구현 방법, WebSphere Application Server Community Edition의 연결 풀 구현을 사용하는 것이 얼마나 편리한지 배워보겠습니다.
   최신 SW 다운로드
Rational Software Architect V7.0
   로보코드 코리아컵 2007
로보코드 코리아컵 2007  

한국 IBM은 올해로 제4회를 맞는 자바 프로그램 경진대회인 로보코드 코리아컵 2007을 개최합니다. 입문자부터 전문 개발자까지 누구든지 쉽게 로봇을 만들어 참여할 수 있는 챔피언쉽에 자신만의 로봇을 만들어 친구와 동료와 실력을 겨루어 보세요! 참가하시는 모든 분께 참가상을 드립니다.
반응형

로보코드에서는 게임의 재미를 위해서 적 로봇의 좌표나 현재 방향각(Heading) 을 손쉽게 알 수 있게 하지 않았다. 만일 레이더로 스캔한 로봇이 좌표를 즉각 알 수 있다면 내 로봇의 좌표를 고려해서 손쉽게 적의 위치를 알 수 있으므로 게임의 재미가 떨어질 것이다. 여기서는 레이더로 스캔한 로봇의 정보를 제공하는 ScannedRobotEvent 를 통해서 상대 로봇의 위치와 방향각 등을 알아내는 방법을 정리하겠다.




1. 기본적인 방향각 설명


우선 로보코드에서 각도를 다루는 방식에 대한 기본적인 설명을 하겠다.

사용자 삽입 이미지

로보코드에서는 게임필드의 맨 위쪽을 0도로부터 시계방향으로 각도를 부여하고 있다. 각도를 규정해 놓은 것은 아니지만, 이러한 기준하에서 모든 메소드가 구현되었으므로 이 기사에서도 위의 각도를 기준으로 설명을 할 것이다.



- getHeading() -


이 메소드가 읽어오는 각도가 바로 나의 방향각 Dm(Degree of mine) 이 되고 단위는 도(degree) 이다. Dm 의 범위는  0 ≤ Dm<360 이다.


- getGurnHeading() -


이 메소드가 읽어오는 각도가 바로 포신(Gun)의 방향각 Dg(Degree of Gun) 이 되고 단위는 도(degree) 이다. Dg 의 범위는  0 ≤ Dg<360 이다. 위 그림에서는 포신의 각도가 로봇 본체의 각도와 같게 되어있지만 실전에서는 포신의 각도가 다양하게 변한다.


- getRadarHeading() -


이 메소드가 읽어오는 각도가 바로 레이더의 방향각 Dr(Degree of Radar) 이 되고 단위는 도(degree) 이다. Dr 의 범위는  0 ≤ Dr<360 이다. 그림 왼쪽 상단에 확대된 그림을 보면 레이더가 0도 부근을 향하고 있는 모습이 보인다. 실전에서 레이더는 주변을 scan 하기 위해서 분주히 움직이도록 프로그램 되는게 일반적이다.



여기서 설명한 각도는 모두 Heading 이라는 점을 꼭 기억해야 한다. 아래에서 Bearing 이라는(이것 역시 각도이다.) 각도에 대한 설명이 나오는데, Heading 은 0도를 기준으로 한 절대각도라는 것과 0도에서 360도 사이에서 변화한다는 것을 꼭 알아둬야 밑에서 헷갈리지 않을 것이다.


* 위 그림에서 확대된 로봇을 보면 작은 사각형 두개가 로봇 본체에 붙어있는데, 저 표시가 있는 쪽이 로봇의 앞부분이다. 앞으로 설명을 위해서 로봇의 앞쪽에 대해서는 실선을, 로봇의 뒤쪽에 대해서는 점선을 이용할 것이다.




2. ScannedRobotEvent


내 로봇의 레이더가 적을 스캔하면 이벤트가 발생되어서 onScannedRobot(); 메소드가 실행된다. 이 메소드에 argument 로 전달되는 것이 바로 ScannedRobotEvent 인데 이 이벤트에는 다음과 같은 정보를 담고 있다.


Constructor Summary
ScannedRobotEvent(String name, double energy, double bearing, double distance, double heading, double velocity)
          Called by the game to create a new ScannedRobotEvent.


        String name      : 스캔한 로봇의 이름

        double energy   :  스캔한 로봇의 잔여 에너지

        double bearing   : 내 로봇을 기준으로 스캔한 로봇의 방향각

        double distance : 내 로봇과의 거리

        double heading  : 스캔한 로봇이 향하고 있는 방향각

        double velocity   : 스캔한 로봇의 속도


section 1 에서 본 내용을 토대로 이벤트 객체가 가지고 있는 Heading 이라는 정보는 스캔된 적 로봇이 향하고 있는 각도를 나타낸다. (0 도를 기준으로 한 각이다.)


그런데 Bearing 이라는 상대각도 가 등장하는데 이것은 내 로봇의 Heading 을 0 도로 했을때 스캔된 로봇의 방향각을 -180 도에서 +180 도로 나타낸 상대각도이다. 여기서 우리의 궁극적인 목표는 내 로봇을 기준으로 했을때 상대 로봇의 절대각도를 알아내는 것인데 이를 계산하기 위해서 Bearing 에 대한 이해가 필요하다.



3. bearing 에 대한 설명


"bear" 라는 단어는 "곰", "참다", "낳다, 출산하다" 라는 뜻의 의미 외에도 "<방향을>취하다, 향하다, 기울다" 라는 뜻도 있다는 것을 이번에 알게 됐다. -_-;; 영어에 무지한 나같은 사람으로서는 "Heading" 라는 단어와의 차이점을 느낄 수 없어서 처음에 이해하는데 어려움이 많았었다.


이건 말보다 그림이 이해하는데 훨씬 낫다.(말은 헷갈릴 뿐이다.)




 

사용자 삽입 이미지

Bearing 에서 사용하는 좌표는 파란색 으로 나타난 좌표인데 이 좌표의 0 도는 내 로봇의 정면이 향하고 있는 방향이다. 내 로봇을 기준으로 해서 스캔된 로봇의 좌표를 읽어오는 메소드가 바로 getBearing() 이다.


event.getBearing() 으로 읽어오는 값은


        -180 < Bearing < +180


의 범위를 갖는다. 0도에서 +180도는 내 로봇의 시계방향(오른편)에 위치한 로봇의 좌표이고 0도에서 -180도는 내 로봇의 반시계방향(왼편)에 위치한 로봇이다. 앞으로 이 두가지를 표현하는데에 +Be(Bearing of enemy) 와 -Be 를 사용하겠다.


Heading 처럼 0 도부터 360도가 아니라서 처음에 많이 헷갈릴 수 있다. Heading 을 구할때는 0 에서 360 의 범위를 갖는데 Bearing 에 대해서는 -180 에서 180으로 한 것은 쉽게 납득이 되지 않지만 꽤 유용한 점이 있다. 이것은 차차 알게 될 것이다.


위 그림에서 보이듯이 Bearing 에는 음수값과 양수값이 존재한다.(+Be, -Be). 적 로봇이 내 Bearing 좌표를 기준으로 나의 오른쪽(시계방향으로 최단거리)에 있을때 Bearing = +Be 가 되고 나의 왼쪽(반시계방향으로 최단거리)에 있을때는 Bearing = -Be 가 된다.


이제 내 로봇이 시계 방향에 있는 오른쪽 로봇을 향하고 싶다면 현재 상태에서 오른쪽으로 Be 만큼 틀어줘야 한다. 오른쪽으로 +Be 만큼 틀어준다는 것은


        turnRight(+Be);


를 의미한다.


그러면 내 로봇을 LeftRobot 쪽으로 틀어주고 싶다면 왼쪽으로 -Be 만큼 틀어줘야 한다.


        turnLeft(-Be)


그런데 왼쪽으로 -Be 만큼 틀어주는 것은 오른쪽으로 +Be 만큼 틀어주는 것과 같다. 결국 오른쪽으로 +Be 만큼 틀어주는 것이나 왼쪽으로 -Be 만큼 틀어주는 것 모두


        turnRight(Bearing)


으로 표현할 수 있다. 따라서 우리는 ScannedRobotEvent 를 전달받았을 때 이벤트 객체로부터 적 로보트의 Bearing 각도를 얻을 수 있고 [ event.getBearing() ] 단순히 이 각도만큼 오른쪽 시계방향으로 틀어주면 Bearing 의 +,- 에 상관없이 상대 로보트를 정면으로 바라볼 수 있다.




4. 포신을 상대 로봇으로 향하기


위에서는 Bearing 을 이용해서 내 로봇이 상대 로봇을 정면으로 바라보도록 하는 방법을 설명했다. 그런데 포신을 상대 로봇에게 향하도록 하려면 위의 정보만으로는 부족하다. 위의 그림의 로봇은 포신과 로봇의 동체가 일직선상에 놓여있기 때문에 bearing 을 더하는 것만으로 포신을 상대 로봇으로 향하게 할 수 있지만 포신이 항상 로봇의 동체와 같은 곳을 바라보지는 않는다.


아래의 그림 3에서는 로봇의 정면과 포신이 서로 다른 방향을 하고 있다. 위에서 상대 로봇의 Bearing 각도는 구했지만 포신을 상대 로봇으로 돌려서 사격을 하려면 또다른 각도를 구해야 하는데 이 각도가 바로 포신의 각도인 GunBearing 이다.


GunBearing 은 위에서 살펴본 Bearing 과 같은 방식으로 설명될 수 있다. 내 로봇의 정면으로부터 포신이 좌측에 있으면 -Bg, 우측에 있으면 +Bg 로 표현한다. 아래 그림에 나와 있듯이 포신을 상대 로봇에게 향하게 하려면 Bearing 만큼 포신을 오른쪽으로 회전시키고 다시 왼쪽으로 GunBearing 만큼 돌려주어야 한다.


사용자 삽입 이미지

이를 간단하게 표현하면 다음과 같다.


        turnGunRight( Bearing - GunBearing )


이렇게 하면 이제 포탄을 상대 로봇에게 발사할 준비가 된 것이다.

반응형
http://www-128.ibm.com/developerworks/kr/robocode/
사용자 삽입 이미지


로보코드 강좌 자료입니다.

좀 더 자료가 필요하신 분은 아래 링크를 클릭하여주세요.


ROBOCODE:

http://www-128.ibm.com/developerworks/kr/robocode/


developerworks:

http://ibm.com/developerworks/kr

반응형
사용자 삽입 이미지

한국 IBM 창립 40주년 축하공연에 참석하게 되었다.

그곳에서 한국 IBM사장님의 연설을 멀리서 듣게 되었고..

행사가 끝나고 아직 행사장에 임원진들과 계신 사장님을 발견..

달려가 인사를 하고 같이 사진 한장 직찍~! ㅎㅎ

20대에 바라던 일 한가지..유명인사와 약간의 이야기와 사진 찍기 clear~!

이휘성 사장님은 편안한 느낌의 젊은 생각을 가지고 계신분이였다. 물론 외모도 출중하시다^^

반응형
0123456

일본에서 있던 관계로 킥오프를 참가하지 못했던 나로서는.. 처음 만나게 되었다..

같이 활동하게 될 나의 동지들과의 만남... 첨 모이는 정례모임..

첫 시작인데도 불구하고 우리들의 이야기는 끝이 날줄 모르고 2시간 3시간을 넘어가고 있었다.

그리고 식사를 함께 하게 되었다... 뭐 식사하면서도 이야기는 계속 되었다.

그렇게 우리는 열정을 가지고 모니터 요원으로서의 활동을 해나가기 시작하였다..
반응형
사용자 삽입 이미지


모니터 요원 1기 발표때의 스크린 샷이다...

뭔가 재밌어 질꺼 같다고 생각했었었다.... 내가 모니터 요원으로 여러가지 활동을 하게 되는...

IBM developerWorks 대학생 모니터 요원 1기 이성구.. ^^
반응형

http://blog.naver.com/leesimkm/60038635108


IBM developerworks 2기 대학생 모니터 요원을 모집합니다.


저는 1기 모니터 요원으로 활동하고 있는 전남대학교 이성구라고 합니다.

1기 모니터요원으로 활동하면서 그곳에서 만난 친구들과 함께 모임도 갖고 이야기도 하고 홍보활동을 통해 학교 구석구석을 돌아다니며 여러가지 좋은 경험을 하게 되었습니다.

물론 IBM developerworks를 통해 알게 된 친구들과 담당자분들과의 모임은 항상 열정으로 가득차 있습니다.

그리고 곧 열리는 로보코드 대회를 위한 특강을 초빙하여 (IBM측의 배려로) 같은 대학 학우들에게 유용한 정보를 알리는 역활을 할수 있는 뿌듯함을 주는 기회이기도 하였습니다.

대학생 여러분의 대학생활을 더욱 흥미롭게 해줄 IBM developerworks 2기 대학생 모니터요원

도전해 보십시요.. 그리고 그곳에서 만나 즐거운 이야기를 나눌수 있었으면 좋겠습니다. ^^

2기 모니터 요원 후배를 기다리는 선배 제1기 모니터 요원이였습니다.


http://www.ibm.com/developerworks/kr/event/monitor/2nd/


<로보코드>가 몰까요?

http://www.ibm.com/developerworks/kr/robocode/      이곳에 자세한 설명 ㅎㅎ


이곳은 저희 대학생을 위한 작은 쉼터(1기 모니터요원 사진도 있네요 ^^)

http://www.ibm.com/developerworks/kr/news/inform/s_c/

http://club.cyworld.com/developerWorks

+ Recent posts