반응형
:: 2007년 08월 22일 ::

  Weekly Highlight
[로보코드 특집] 로보코드 코리아컵 2007이 성황리에 종료되었습니다. 행사 스케치를 통해 현장의 열기를 느껴보시고 16강 진출자들의 로봇 전략과 소스 코드도 다운받아 보세요.
한국 developerWorks 2007년 7월 TOP 10 인기자료가 업데이트 되었습니다.
   Local Contents
“다방면에 박식한 아마추어” - PyPy, FePy, IronMonkey 개발자, 서상현 님 (dW Interview)
서로의 가치를 배가하는 VM 기술과 스크립트 언어-김도형 (dW column)
여름나기 책 2선: OS와 최적화의 상승 작용 엿보기 - 박재호 (개발자 책꽂이)
   최신 기술자료 (한글)
Lotus Sametime용 Acronym Expander 구현하기 [Lotus]
리스너 클래스를 만들고 중개 기능을 제공하는 Lotus Sametime Connect용 Acronym Expander를 개발합니다.
사람을 위한 자동화: 아키텍처 건전성 [자바]
적극적인 빌드 프로세스를 사용하여 아키텍처를 관리합니다.
JsonML 이해하기 [XML]
JsonML은 JSON의 확장으로서 JSON 유형 마크업을 사용하여 XML 데이터를 매핑할 수 있고, JSON 마크업에 기반하여 XML이나 XHTML 데이터를 쉽게 생성하고 사용자 인터페이스 엘리먼트들을 구현 및 교환할 수 있습니다.
서비스 지향 아키텍처로 웹 서비스 비전 확대하기, Part 1 [SOA와 웹서비스]
오늘날의 웹 서비스는 일반적으로 간단하고 클라이언트 측 모델과 비슷합니다. 필자는 단순한 모델에서 복잡한 실제 모델로 옮겨갈 문제점을 설명하고 있습니다.
한번에 Eclipse 확장 구현하기 [오픈 소스]
개발팀이 표준을 따르고 시간을 절약할 수 있게 만드는 코드 플러그인을 생성하는 방법을 설명합니다.
Ajax로 SOAP 웹 서비스 호출하기, Part 1: 웹 서비스 클라이언트 구현 [SOA와 웹서비스]
Asynchronous JavaScript and XML (Ajax) 디자인 패턴을 사용하여 웹 브라우저 기반 SOAP 웹 서비스를 구현해봅시다.
   기획 기사
SOA 복합 비즈니스 서비스 구현하기
이번 기획 기사에서는 SOA 서비스들을 조합하는데 필요한 요소를 시작으로 IBM WebSphere 솔루션을 이용해 SOA 복합 비즈니스를 구현하는 기법을 알아보고 빌드 전개 등 전 과정을 살펴보겠습니다.
   최신 튜토리얼 (한글)
XForms를 사용하여 회계 도구 만들기, Part 5: 부채 관리 기능 개발하기 [오픈 소스]
본 Part 5에서는 부채를 위한 채무 폼을 만드는 방법과 청구 데이터와 통계자료를 분석할 보고 폼을 만드는 방법에 대해 다룰 것입니다.
소개: 이클립스 테스트/성능 도구 플랫폼 [웹 개발]
자바 애플리케이션 프로파일링을 위해 Eclipse Test & Performance Tools Platform를 어떻게 사용하는지와 메모리 사용량을 측정하고, 메모리 누수를 확인하며, 성능 병목을 없애는 법을 배우겠습니다.

  Lotus 행사 안내

IBM Lotus Collaboration Summit에 초대합니다.
반응형
자바와 게임의 만남 '로보코드 코리아컵 2007'
- 자바 프로그래밍 언어를 기반으로 제작한 로봇 간의 대결
- 자바개발자 커뮤니티인 JCO와 취업전문포탈인 인크루트 후원

(2007.8.8) 한국IBM(대표 이휘성)은 8월 8일 자바 기반의 프로그래밍 게임 대회인 로보코드 코리아컵 2007 결승전을 개최했으며, 우승은 김동환씨(고려대 신소재공학부)가 차지했다고 발표했다.

지난 2003년에 첫 대회가 개최된 이래 4회째를 맞는 ‘로보코드 코리아컵 2007’은 자바 기반의 프로그래밍 대회로 국내 자바 개발자 커뮤니티 모임인 JCO(JAVA Community Organization)와 인크루트가 후원하고 있다.

로보코드 코리아컵은 올 5월 로봇신청 접수를 시작하여 7월 말에 접수를 마감했으며, 64강전과 32강전을 치르고 오늘 16강전부터 결승전까지 치름으로써 최종 승자가 가려졌다. 준우승은 이종혁씨(경기대 컴퓨터과학과), 3위는 조규현씨(호남대 인터넷소프트웨어학과) 가 각각 수상했다.

로보코드는 지난 2001년 IBM의 개발자인 맷 넬슨이 개발한 게임으로서, 사용자들이 직접 자바를 기반으로 인공지능이 담긴 로봇을 만들어 전투를 벌이게 된다. 예선전에서는 그룹별 전투를 거쳐 최종 점수가 가장 높은 로봇이 승리하게 되며, 64강전부터는 1대1의 토너먼트 방식으로 진행된다. 각 참가자들은 최대 3개까지 로봇을 제출할 수 있다.

로보코드 참가자는 자바 언어의 요소를 사용하여 자신의 로봇을 만들면서 프로그래밍 언어를 익힐 수 있어 재미와 기술을 동시에 얻을 수 있다. 특히 초보자들도 쉽게 배울 수 있도록 로보코드 코리아컵 홈페이지(www.ibm.com/developerworks/kr/robocode)를 통해 개발 방법을 소개하고 있다.

또 로보코드는 오픈소스를 기본 전제로 하고 있어 샘플 로봇뿐 아니라, 등록되어 있는 다른 개발자들이 소스를 다운받아 분석하고 자신의 소스를 업로드하는 과정을 반복하면서 로봇은 점차 진화하게 된다.

한국IBM은 올초 developerWorks 대학생 모니터 요원을 선발하여 대학 내 로보코드 홍보를 강화했으며, 고려대, 서울여대, 목포대, 세종대, 숭실대, 동국대, 전남대 등의 요청으로 출장 강의를 진행하는 등 대학생 개발자들의 큰 호응을 얻었다.

한국IBM 솔루션 파트너 사업부의 계혜실 실장은 "IBM은 오픈 소스를 적극적으로 지원하고 있으며, 로보코드를 통해 자바 언어에 대한 대학생 및 개발자들의 관심과 흥미가 크게 증대되었다고 본다. 향후에도 다양한 오픈 소스 지원 정책과 프로그램을 통해 개발자들에게 많은 기술정보와 커뮤니티 환경을 제공할 예정”이라고 밝혔다.

--------------------------------------------------------------------------------------------------------------------
참고자료

- 로보코드의 특징: 각 로보코드 참가자는 자바 언어의 요소를 사용하여 자신의 로봇을 만들면서 자바가 갖고 있는 상속성, 다형성, 이벤트 처리 및 내부 클래스 다루는 방법을 배우게 된다. 표준 API(Application Program Interface)를 지향하지만, 커스터마이징할 수 있는 이벤트를 갖고 있다. 따라서 개발자들이 창의적일수록 로봇이 전투에서 살아남을 가능성이 높아진다. 특히, 로보코드는 초보자부터 고급 프로그래머에 이르기까지 모든 수준의 개발자들이 참가할 수 있다.

- 로보코드의 기반 솔루션: 로보코드는 이클립스, 웹스피어, DB2, 웹스피어 애플리케이션 디벨로퍼를 사용하여 개발되었으며, 참가자들은 IBM이 제공하는 API를 이용해 쉽게 로봇을 만들 수 있다.
반응형

프로젝트를 만들었으면 로봇도 만들어야 하겠져?

이제 로봇을 만들어 봅시다.

원문은 먼저 올라온 글과 멀리 떨어진 곳이 아니니 함 찾아보세요

클래스를 만듭니다. 프로젝트안에 들어갈 클래스를 만들기 위해 NEW->CLASS  를 클릭합니다.

 


패키지는 자신의 이름에 대한 이니셜을 넣고(IBM 권장사항),
클래스명엔 자신의 로봇이 갖길 원하는 이름을 넣습니다.
슈퍼클래스는 robocode.Robot 으로 넣어줍니다



성공하면 다음과 같은 화면이 나옵니다.


이제 원하는 코드를 넣을 수가 있습니다.

(영어 실력이 짧은지라 원문 그대로 갖고옵니다. 알아서 해석 하시길)

You can save your robot as often as you like by hitting CTRL-S, or selecting "File->Save". There's no need to select Compile anymore, since Eclipse takes care of it for you. Have fun playing around with Eclipse. Personally, I like to change all the colors, turn off bold print, move the windows around, and do all sort of things to customize it to my liking. Since there's no better way to learn than by playing around, I'll leave you to it! (Hint: Workbench -> Preferences -> Java -> Editor -> Colors)

The only thing left is to make sure Robocode sees your robot.

반응형

로보코드를 실행한 후
Options->Prefereces->Development Options 클릭 후 해당 '프로젝트' 의 위치를 기입합니다.


Finish 버튼을 누르고 Battle -> New 로 가면 패키지를 찾은것을 볼 수 있습니다.

아래는 이클립스에 대해 설명이 올라와있는데
원문에는 이클립스에 대한 찬사나 간단한 사용법을 쓰고 있습니다.
궁금하면 원문을 참고해주세요

이클립스 단축키

Ctrl - S 저장
Ctrl-Space 멤버 메소드 출력

반응형
이클립스 환경에서 로보코드 로봇을 빌드하려면, 먼저 프로젝트를 만들어야 합니다.

1. File->New->Project 에서 프로젝트를 만듭니다.

자바 프로그램이기 때문에 그냥 "Java Project" 를 선택해줍니다.


Finish 버튼은 절대 누르지 마시고, Next 를 누릅니다.


이제 프로젝트 세팅을 할 차례입니다. robocode 패키지 안에는 라이브러리, JAVADoc 이 있기 떄문에
이것들도 링크를 해줘야 합니다.(뭐 JAVADOC 이 머리속에 있다면 라이브러리만 링크해줘도 상관 없습니다.)

위 화면처럼 만든 후 Add External JARs.... 를 클릭합니다.

로보코드가 설치되있는 폴더로 찾아가 robocode.jar 을 엽니다.


이제 Javadoc 을 세팅해줄 시간입니다.

Javadoc Location 에서  Edit 를 누르고

Browse를 이용해서 해당 경로를 지정해주거나, 경로를 외고 있다면 위 형식에 맞게 지정해주면 끝!!

이제 탱크를 만들 수 있습니다.

반응형

난이도 : 초급

McCoy David, Writer, Independent

2007 년 4 월 17 일

코너에 갇히거나 원하는 이동 방향에서 너무 많이 벗어나지 않으면서, 로봇과 벽 사이의 간격을 유지하는 알고리즘은 간단히 만들 수 없는 것 같습니다. 한 가지 간단한 솔루션으로, Factored wall avoidance가 있습니다. 이 글에서, David McCoy가 이를 구현하는 방법을 설명합니다.

With a few additions to the bot we built in "상대편의 움직임 추적하기"에서 구현했던 로봇에 몇 가지를 더 추가하여, 기존의 움직임 알고리즘 또는 문제가 많은 움직임 알고리즘에 Factored Wall Avoidance를 추가할 수 있다. Factored Wall Avoidance는 자신의 로봇과 벽의 근접성에 따라서 안전한 방향 설정(heading)으로 원하는 방향을 팩토링 함으로써 최상의 방향을 찾는 것이다.

일반 수학적 계산에 헬퍼 메소드 추가하기

우선 자주 사용되는 수학적 알고리즘에 헬퍼 메소드를 로봇에 추가한다.

calculateBearingToXYRadians() 메소드는 java.lang.Math 메소드 atan2()를 사용하여 sourceX,sourceY에서 targetX,targetY까지 절대 위치(absolute bearing)를 계산한 다음, 이 값을 sourceHeading에 관련된 위치로 변환한다.

그리고 normalizeAbsoluteAngleRadians() 메소드와 normalizeRelativeAngleRadians() 메소드도 필요하다.


Listing 1. 수학 헬퍼 메소드
                

private static final double DOUBLE_PI = (Math.PI * 2);
private static final double HALF_PI = (Math.PI / 2);

public double calculateBearingToXYRadians(double sourceX, double sourceY,
    double sourceHeading, double targetX, double targetY) {
        return normalizeRelativeAngleRadians(
           Math.atan2((targetX - sourceX), (targetY - sourceY)) -
               sourceHeading);
    }

public double normalizeAbsoluteAngleRadians(double angle) {
   if (angle < 0) {
        return (DOUBLE_PI + (angle % DOUBLE_PI));
    } else {
        return (angle % DOUBLE_PI);
    }
}

public static double normalizeRelativeAngleRadians(double angle) {
    double trimmedAngle = (angle % DOUBLE_PI);
    if (trimmedAngle > Math.PI) {
        return -(Math.PI - (trimmedAngle % Math.PI));
    } else if (trimmedAngle < -Math.PI) {
        return (Math.PI + (trimmedAngle % Math.PI));
    } else {
        return trimmedAngle;
    }
}




위로


AdvancedRobot을 back-as-front 기능으로 확장하기

다음으로, 로봇을 반대로 이동시키기 위한 back-as-front 기능을 제공하기 위해 AdvancedRobot 클래스 기능을 몇 가지 헬퍼 메소드로 확장할 필요가 있다.

  • getRelativeHeading() 메소드는 로봇의 현재 위치와 관련하여 정확한 방향을 계산한다.

  • reverseDirection() 메소드는 매우 단순하다. direction 인스턴스 변수를 토글링(toggle) 하고 로봇의 방향을 바꾼다. 감속할 때에는 시간이 걸리기 때문에 로봇은 속도에 따라서, 방향을 바꾸기 전에 최대 네 개의 프레임까지 같은 방향으로 움직일 수도 있다.

  • setAhead()setBack() 메소드는 AdvancedRobot 클래스에서 같은 이름의 메소드를 오버라이드 한다. 현재 방향에 대한 로봇의 속도를 설정하고, direction 인스턴스 변수를 필요에 따라 조정한다. 비례 연산은 로봇이 현재 움직이고 있는 방향과 관련이 있다.

  • setTurnLeftRadiansOptimal()setTurnRightRadiansOptimal() 메소드는 (Math.PI / 2) 보다 크게 회전하여 로봇의 방향을 바꾼다. adjustHeadingForWalls 메소드를 사용할 때 이러한 메소드들을 사용해야 하는데, 나중에 설명하겠다.

주: getter와 setter 메소드를 사용하는 대신 direction 인스턴스 변수에 직접 액세스 한다. 이것은 좋은 방법은 아니지만, 나는 내 로봇 코드에 이를 수행하여 데이터 액세스 속도를 높이곤 한다.


Listing 2. 로봇 헬퍼 메소드
                


public double getRelativeHeadingRadians() {
    double relativeHeading = getHeadingRadians();
    if (direction < 1) {
        relativeHeading =
                normalizeAbsoluteAngleRadians(relativeHeading + Math.PI);
    }
    return relativeHeading;
}

public void reverseDirection() {
    double distance = (getDistanceRemaining() * direction);
    direction *= -1;
    setAhead(distance);
}

public void setAhead(double distance) {
    double relativeDistance = (distance * direction);
    super.setAhead(relativeDistance);
    if (distance < 0) {
        direction *= -1;
    }
}

public void setBack(double distance) {
    double relativeDistance = (distance * direction);
    super.setBack(relativeDistance);
    if (distance > 0) {
        direction *= -1;
    }
}

public void setTurnLeftRadiansOptimal(double angle) {
    double turn = normalizeRelativeAngleRadians(angle);
    if (Math.abs(turn) > HALF_PI) {
        reverseDirection();
        if (turn < 0) {
            turn = (HALF_PI + (turn % HALF_PI));
        } else if (turn > 0) {
            turn = -(HALF_PI - (turn % HALF_PI));
        }
    }
    setTurnLeftRadians(turn);
}

public void setTurnRightRadiansOptimal(double angle) {
    double turn = normalizeRelativeAngleRadians(angle);
    if (Math.abs(turn) > HALF_PI) {
        reverseDirection();
        if (turn < 0) {
            turn = (HALF_PI + (turn % HALF_PI));
        } else if (turn > 0) {
            turn = -(HALF_PI - (turn % HALF_PI));
        }
    }
        setTurnRightRadians(turn);
}




위로


Factored Wall Avoidance 추가하기

소셜 북마크

mar.gar.in mar.gar.in
digg Digg
del.icio.us del.icio.us
Slashdot Slashdot

우리가 추가할 마지막 메소드는 adjustHeadingForWalls()이다.

이 메소드의 초반부는 벽과의 근접성에 기반하여 안전한 x,y 위치를 선택한다. (이것은 로봇의 현재 x 또는 y 좌표 또는 로봇이 벽에 가까이 있을 경우 중심점이 될 것이다.) 이 메소드의 후반부는 "안전한" 방향을 계산하고 로봇이 벽에 얼마나 근접해 있는가에 비례하여 원하는 방향으로 이를 팩토링 한다.

로봇이 벽으로 나아가는 정도는 WALL_AVOID_INTERVALWALL_AVOID_FACTORS 상수를 사용하여 조정될 수 있다.


Listing 3. 벽 피하기 메소드
                

private static final double WALL_AVOID_INTERVAL = 10;
private static final double WALL_AVOID_FACTORS = 20;
private static final double WALL_AVOID_DISTANCE =
        (WALL_AVOID_INTERVAL * WALL_AVOID_FACTORS);

private double adjustHeadingForWalls(double heading) {
    double fieldHeight = getBattleFieldHeight();
    double fieldWidth = getBattleFieldWidth();
    double centerX = (fieldWidth / 2);
    double centerY = (fieldHeight / 2);
    double currentHeading = getRelativeHeadingRadians();
    double x = getX();
    double y = getY();
    boolean nearWall = false;
    double desiredX;
    double desiredY;

    // If we are too close to a wall, calculate a course toward 
    // the center of the battlefield.
    if ((y < WALL_AVOID_DISTANCE) ||
            ((fieldHeight - y) < WALL_AVOID_DISTANCE)) {
        desiredY = centerY;
        nearWall = true;
    } else {
        desiredY = y;
    }
    if ((x < WALL_AVOID_DISTANCE) ||
            ((fieldWidth - x) < WALL_AVOID_DISTANCE)) {
        desiredX = centerX;
        nearWall = true;
    } else {
        desiredX = x;
    }

    // Determine the safe heading and factor it in with the desired 
    // heading if the bot is near a wall
    if (nearWall) {
        double desiredBearing = 
           calculateBearingToXYRadians(x, 
                                       y, 
                                       currentHeading, 
                                       desiredX, 
                                       desiredY);
        double distanceToWall = Math.min(
                Math.min(x, (fieldWidth - x)),
                Math.min(y, (fieldHeight - y)));
        int wallFactor =
                (int)Math.min((distanceToWall / WALL_AVOID_INTERVAL),
                              WALL_AVOID_FACTORS);
        return ((((WALL_AVOID_FACTORS - wallFactor) * desiredBearing) +
                 (wallFactor * heading)) / WALL_AVOID_FACTORS);
    } else {
        return heading;
    }
}




위로


결론

나머지는 쉽다. 현재의 네비게이션 알고리즘을 사용하고 adjustHeadingForWalls() 메소드를 통해 그 결과를 제공함으로써 벽을 피할 수 있다.

단순하게 하기 위해 로봇 예제(다운로드)는 방향 변경에 0을 요청하여 직선 라인으로 움직일 것이다.


Listing 4. 벽 피하기 메소드
                


public void run() {
    while(true) {
        setTurnRightRadiansOptimal(adjustHeadingForWalls(0));
        setAhead(100);
        execute();
    }
}

이제 다 되었다. 간단하지만, 효과적이다.
<출처: http://www.ibm.com/developerworks/kr/library/j-fwa/>

반응형
사용자 삽입 이미지

IBM dw 1기 모니터 요원으로 활동한지 반년이 지나갔다.

그렇게 1기의 활동 기간이 끝나고 2기가 선발 되고 1기 해체식과 2기 킥오프가

로보코드 행사와 같이 진행 되었다.

반년동안의 짧은 시간동안 나는 모니터 요원으로서 활동을 곰곰히 되짚어 보았다.

이곳 dw에서 만난 사람들과 같이 했던 일들 그리고 회의 등....

그리고 모니터 요원으로서 교내에서의 홍보 활동등...

그 마지막 장식은 로보코드 16강과 함께 하게 되었다.  로보코드 행사에 참석 후..

학과 후배이며 내가 동아리장으로 있었던 "CASTERLAB"의 후배인 석재의 모습이 보였다.

로보코드 16강 진출! 그렇게 하여 학교가 아닌 IBM에서 보게 되었다. 정말 반가웠다.

그리고 내가 활동함에 있어 작은 보람이라고 생각했다. 로보코드를 홍보하면서 교내에서

관심을 갖길 바랬었는데 후배가 16강에 진출하여 IBM에서 만나게 되었으니 말이다.

8강 까지 진출하였지만 안타깝게 떨어지고 말았지만 내가 홍보한후 처음 알게되서

8강까지 진출한 쾌거를 이룬것이 대견했다.^^ 그리고 나도 1기 모니터 요원의 활동기간이 끝나고

우수요원으로 선발되어 더욱 뜻깊었다. 그렇게 나의 1기 모니터 요원으로서 활동은 끝이 났고

로보코드 결승까지 치루고 16강 진출자들과 2기 모니터 요원들 그리고 1기 모니터요원들과

같이 비어파티를 갖게 되었다. 1기 활동의 마지막이라 생각하니 조금 아쉬운 감이 있었다.

이곳에서 많나 활동하면서 무엇보다 하나 중요한 것이 남는게 있었다면 이곳에서 만난

사람들과 소중한 친구들이 아닐까 싶다. 
반응형
:: 2007년 08월 08일 ::

  Weekly Highlight
IBM developerWorks가 dW Review Blogger를 모집합니다.
오늘 오후 3시부터 벌어지는 로보코드 코리아컵 2007이 미투데이로 실시간 현장중계될 예정입니다. 미투데이와 함께 긴장감 넘치는 결선대회를 함께하세요.
IBM developerworks에서 2007년 하반기 활동할 'developerWorks 대학생 모니터 요원 2기'를 발표합니다.
   Local Contents
“검색으로 인간을 이롭게 한다” - 그루터 대표, 권영길 (dW Interview)
해커 문화의 뿌리를 찾아서 Part 5: Fixed Point 계산과 고차 함수 - 안윤호 (Special Issue)
이클립스 발전의 원동력은 커뮤니티, 에릭 롱 (dW Interview)
시맨틱 소셜 네트워크를 향해, Part 1: 시맨틱 소셜 네트워크와 FOAF -김학래 (Special Issue)
   최신 기술자료 (한글)
SOA 복합 비즈니스 서비스 구현하기, Part 8: WebSphere Portlet Factory 동적 프로파일을 사용하여 다중 소유 포틀릿 구현하기 [SOA와 웹서비스]
WebSphere Portlet Factory를 사용하여 동적 프로파일을 사용함으로써 표현 레이어 내에서 설정 가능성을 이룩하는 방법을 배워봅시다.
업데이트: IBM Lotus Sametime V7.5.1의 새로운 기능 [Lotus]
point-to-point 비디오, 데스크탑 생산성 애플리케이션들과의 통합 등, IBM Lotus Sametime V7.5.1의 아키텍처 및 디자인 변화에 대해 살펴봅니다.
XML과 자바: 저급 또는 고급 XML API? [XML]
어느 정도의 XML 컨트롤을 원하십니까? Brett McLaughlin이 핵심적인 XML API를 설명하고, 개발자들이 자바와 XML 프로그래밍을 최대한 활용하고 있는지를 조명합니다.
리눅스 커널 해부 [리눅스]
커널은 서브시스템과 레이어로 나뉠 수 있습니다. 리눅스 소스를 더욱 잘 이해할 수 있도록 아키텍처를 설명합니다.
Eclipse RAVEN 방식으로 GUI 접근성 테스트 하기 [오픈 소스]
GUI의 접근성을 점검하기란 어려운 일입니다. IBM Rule-based Accessibility Validation Environment Eclipse 플러그인으로 런타임 접근성 체크가 빨라집니다.
SOA에 레거시 시스템 적용하기 [SOA와 웹서비스]
서비스 지향 아키텍처를 사용하여 기존 IT 자산들을 변형할 때의 주요 이점에 대해 알아봅시다. 여러분은 변화하는 비즈니스 조건에도 빠르고 유연하게 대처할 수 있습니다.
   기획 기사
최고의 매시업 -- 웹 서비스와 시맨틱 웹
이번 기획기사를 통해 시맨틱 기술을 이용하여 서비스를 교환하거나 데이터를 선택하는 방식으로 자신만의 매시업을 만들어내는 기법을 배움으로써 웹 창시자와 선구자들이 꿈꾸었던 비전에 다가갈 수 있는 힌트를 얻을 수 있을 것입니다.
   최신 튜토리얼 (한글)
PHP를 사용하여 인터랙티브한 제작 방식의 위키 만들기, Part 4: 작업 관리 [오픈 소스]
PHP를 사용하여 인터랙티브한 제작 방식의 위키 만들기" 튜토리얼 연재에서는 제작 과정 추적에 유용한 각종 기능이 있는 위키를 PHP를 사용해 처음부터 만듭니다. Part 3에서는 누가 무엇을 할 수 있는지에 대한 컨트롤을 추가했습니다. 이제 작업 관리를 추가할 차례입니다.
구글 가젯 만들기, Part1: 구글 가젯 기본요소 [웹 개발]
이번 새 웹 개발 연재에서는 구글 가젯을 만드는 법을 배웁니다. 가젯은 작은 애플리케이션인데 동적이고 품질 좋은 콘텐츠를 제공하는 수단으로서 대부분의 웹 페이지에 추가할 수 있습니다.
   최신 튜토리얼 (영문)
Lotus Component Designer를 사용하여 WebSphere Portal 컴포넌트 생성 및 전개하기
   최신 SW 다운로드
온라인 시험판: Rational Build Forge V7.0
WebSphere Application Server Community Edition V1.1.0.2 (무료 제품: 업데이트)

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

[COVER STORY] 프로젝트 생산성을 높여주는 협업 노하우
커뮤니케이션과 협업 / 위키를 활용한 협업 노하우 / BTS 활용 노하우 / Jira와 Mylyn 활용 전략 / CVS/SVN을 이용한 버전 관리 / Visual Studio Team System과 협업

[SPECIAL REPORT] 리눅스 대중화의 꿈, 아시아눅스 데스크톱 3
데스크톱용 리눅스, 어디까지 왔나? / 64비트 지원과 3D 강화, 그리고 라이브 CD / 리눅스 애플리케이션의 세계 / 아시아눅스 대중화 전략

[STEP BY STEP] PHP를 사용한 상호교환 방식의 위키 만들기 Part 4: 작업 관리 from IBM 디벨로퍼웍스

top

더이상 구독을 원치 않으시는 분은 developerWorks에서 뉴스레터 [구독 취소]를 선택하여 주시기 바랍니다.
developerWorks 운영자에게 메일 보내기
Copyright ⓒ IBM Korea, Inc. All rights Reserved.

반응형



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

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

대치동 주변의 맛집을 찾아주시는 계실장님.. 너무 멋져용..^^
반응형
:: 2007년 7월 13일 ::


로보코드 코리아컵 2007

자바 프로그램 경진대회인 로보코드 코리아컵 2007의 접수 마감이 얼마 남지 않았습니다. 7월 22일(금) 로보코드의 예선 접수가 마감되오니 아직 제작 중이거나 준비 중이신 분들은 서둘러 접수를 해주시기 바랍니다. 재미있는 게임을 통해 자바 실력도 늘리고 푸짐한 상품도 꼭 받아가세요. 참가만 하셔도 참가상을 드리니 여러분의 많은 성원 바랍니다.



제2기 대학생 모니터요원 모집

IBM developerWorks에서 2007년 하반기 동안 활동할 "제2기 developerWorks 대학생 모니터 요원" 모집이 7월 20일 마감됩니다. 선정된 모니터 요원에게는 임명장과 함께 각종 행사에 우선 참여할 수 있는 기회가 주어집니다. 우수한 활동을 펼친 분께는 IBM의 추천서도 제공되오니 재기 넘치는 대학생 여러분의 많은 참여 바랍니다.



오픈 소스 세미나

IBM이 후원하는 기묘 세미나, 성공적인 오픈소스 프로젝트 방법론이 오는 19일(목),역삼동 포스틸 타워 3층 이벤트홀에서 열립니다!  이번 세미나에서는 오픈소스 프로젝트를 성공으로 이끄는 방법론을 중심으로 오픈소스의 커스터마이징과 확장 전략을 세워볼 수 있는 계기가 될 것입니다. 선착순으로 사전등록이 마감되오니 관심 있으신 분들은 서둘러 주세요.

+ Recent posts