1. 2007년을 보내고...

개인적으론 이 블로그로 인해 의미있는 한 해였습니다. 무엇보다 제 자신에게 강한 동기부여가 된 것이 가장 큰 의미로 보고 있습니다. 블로그를 하지 않았으면 간단한 프로그램 몇 개만 만들어보고 OS X에서의 개발에 대한 관심을 접었을지도 모른다는 생각도 듭니다.

이전에도 오픈하고 5개월정도에 블로그를 돌아보는 포스팅을 올린적이 있는데, 다시 해가 바뀐다는 이유로 그 동안의 결산 및 내년 블로그 운영 계획을 간단히 세워 볼려고 합니다.

1) 접속 통계
우선 구글 애널리틱스를 통한 통계는 아래와 같습니다.
  • 통계 기간: 2007년 5월 12일 ~ 2007년 12월 29일
  • 총 방문자 수: 17,321명
  • 하루 평균 방문자 수: 75명

사용자 삽입 이미지

방문통계를 보면 간혹 프로그램 공개나 "개발자에게 드리는 맥 전향자의 수기(手記)"와 같은 다소 민감한 주제를 올렸을 때를 제외하고는 잔잔한 낮은 파도와 같은 모습입니다.

로봇 제외 플러그인을 사용한 티스토리에서 본 총방문자수는 31,593명입니다. 티돌이로 보았을 때 갑자기 카운트가 급등하는 모습을 간혹 본적이 있습니다. 아마 로봇 또는 서버에 의한 자동접속을 제대로 걸러내지 못하고 있는 것 같습니다.


2) 분류별 접속 통계
a. OS
> 윈도우(68.16%), 맥(30.48%), 리눅스(1.18%)

블로그 성격 상 맥 사용자 비율이 일반 블로그 보다 많은 것 같습니다. 리눅스만 30%가 늘어 실제 OS 사용자 비율이 30%/30%/30% (10% 기타)정도면 이상적일 것 같다는 생각을 해봅니다.

흥미로운 것은 iPod, iPhone 사용자들이 서서히 통계에 잡히며 늘어 나고 있습니다. 개인적으론 부럽습니다.

b. 브라우저
> 익스플로어(59.82%), 파이어폭스(20.33%), 사파리 (18.31%), 오페라(0.97%)

이 역시 OS와 마찬가지입니다.

c. 국가
> 한국, 미국, 일본, 독일, 캐나다, 캐냐, 중국, 영국, 호주, 프랑스

특이한 것은 유럽(독일, 프랑스, 영국)에서 들어 온 유입자의 반송률이 가장 낮다는 것입니다. 한국어로 되어 있는데도 한국의 반송률이 72.89%인데 유럽권은 40~50% 입니다. 혹시 해당 국가의 한국분들이 보시는 것인지 모르겠습니다. 보자마자 나가시는 분들의 순위는 캐나다, 한국 순입니다.

3) RSS 구독자
사용자 삽입 이미지

위는 feedburner의 구독자 통계입니다. 접속통계와는 다르게 시간이 흐를 수록 상향곡선을 보이고 있습니다. 사실 지치지 않고 편하게 포스트를 작성할려고 하는데, 누군가가 구독하고 있다는 사실은 의무와 책임을 느끼게 합니다.


2. 2008년을 맞으며...

1) 기본방향
"별다른 생각과 고민 없이 지금처럼 하자" 입니다. 사실 개인 블로그라는 위안을 가지며 이기적인 운영을 하고 있습니다. 이런 생각을 하는 이유는 두가지 입니다.

a. 계획 없고 성의 없는 포스팅 입니다.
개인적인 관심으로 슈팅게임 강좌를 시작했지만, 중간에 덕수리를 만듬으로써 관심과 의욕이 많이 사라진 상태가 되었습니다. 약간의 노력과 시간만 들이면 마무리를 할 수 있는데 아직까지 미루고 있는 상태입니다.

b. 완성도 없는 제작물에 대한 공개입니다.
개인적인 필요에 의하여 몇가지 자잘한 툴들을 만들어 공개하였습니다. 직접 제 자신이 사용자로서 몇몇 오류가 있음을 알고 있지만, 치명적이지 않다는 이유로 손을 놓고 있습니다. 아무리 공개고 무료지만 기능 추가나 개선은 커녕 버그 수정도 안하고 있다는 사실이 사용할 때마다 마음에 걸립니다.

그럼에도 불구하고 별다른 변경없이 지금처럼 운영할려는 것은 "이 블로그는 근본적으로 저를 위한 블로그"이기 때문입니다. 블로그를 운영하면서 "주기적으로 포스팅을 해야 한다" 또는 "많은 사람이 관심있는 내용이어야 한다"와 같은 책임감이나 방문객 수와 같은 성취목표를 가지지 않을려고 합니다.

지금과 같이 늘 제게 기분 좋은 공간이어야 하며, 책임과 목표로 인한 스트레스를 받지 않는 곳으로 유지할려고합니다. 이를 위해서는 바라는 것도 없어야 하고, 무엇을 주어야 한다는 부담감도 없어야 된다고 생각합니다.

어느날 feedburner의 구독자가 모두 사라지거나 방문자가 10명이하로 줄더라도 초연하게 제가 좋아하는 분야에 대해서 공부하고 기록하고 매개체가 될 수 있는 곳으로 만들려고 합니다.


2) 목표 및 바램


a. cocoa 강좌
현재 튜토리얼이라는 명목으로 구성과 내용이 너무 자유분방한 것 같습니다. 이는 제 자신이 체계적으로 공부를 하지 않았기 때문입니다. 그때 그때 관심이 생기는 분야만 포스팅을 하였습니다. 이제 다시 기본 부터 시작하고 정리해 나가면서 포스팅을 해볼려고 합니다.

b. 어린이 프로그래밍 강좌
미술교육은 아이들의 창의력과 감성에 많은 도움을 줍니다. 폴그레이엄이 해커와 화가라는 책에서도 비유했듯이 프로그래밍도 이와 유사한 면이 있습니다. 그림과 같이 아무것도 없는 하얀 도화지로 시작에서 머리속의 생각만으로 무엇인가 의미있는 것을 만들어 갑니다.

프로그래밍이 아이들의 창의력과 논리/추리력에 많은 도움을 줄 수 있다고 생각하고 있습니다. 그래서 제 아이에게 적용해 보기위해 여러 툴들과 책을 사주었지만, 현재까지 결과는 제가 생각하기에 실패입니다.

관련 웹페이지가 영어로 되어 있고, 어린이를 위한 서적이 없기 때문이기도 합니다만... 결정적으로 부모의 계속적인 관심과 지도, 칭찬이 필요하다는 사실을 알았습니다. 전 아이가 바라는데도 불구하고 책과 웹사이트, 툴에만 전적으로 역활을 맡겼기 때문인 것 같습니다.

1차적으로 제 아이를 위해 따로 분류를 만들어 가능하면 쉽고 재미있게 프로그래밍에 대한 강좌를 해볼려고 합니다. Java 아니면 Scratch를 이용해볼려고 하는데 아직 정확한 계획은 없습니다.

c. 공개 어플리케이션 개발
꾸준히 업그레이드 할 수 있는 개인 프로젝트를 하나 진행해 볼려고 합니다. 한메타자와 같은 맥용 타자 프로그램이나 FTP 클라이언트, 티돌이 확장 등을 생각하고 있는데 정확히 무엇을 만들지는 역시나 정하지 못했습니다.

이상으로 이 블로그의 올 한해를 간단히 정리하고 내년을 계획해 보았습니다. 내년 3월쯤에 하나도 지킨게 없어 이 프스팅에 대한 후회와 반성이 없었으면 좋겠습니다. ^^
AND

기타 2007. 12. 27. 16:32
윈도우의 APM_Setup처럼 OS X에서 APM(Apache+PHP+MySQL)을 간편하고 빠르게 설치해주는 툴입니다. MAMP 사이트에서는 다운로드가 되지 않아 소스포지에서 다운로드 받았습니다.

사용자 삽입 이미지
다운로드 받은 후에 dmg  파일을 클릭하면 좌측과 같이 원하는 제품을 어플리케이션 폴더로 드래그하는 것만으로 모든 설치가 완료됩니다.

MAMP Pro는 상용버전(61달러)으로 사용제한이 없고 기능이 추가된 제품입니다. 저는 무료인 MAMP를 설치하였습니다.

삭제도 매우 간단하여 어플리케이션에서 해당 폴더만 삭제하면 됩니다.

아파치와 MySQL포트가 다른 포트로 지정되어 있어, 저는 일반적으로 사용하는 80과 3306으로 변경하였습니다.

사용자 삽입 이미지

제가 다운로드 받은 MAMP 1.6 버젼에서는 아파치 2.0.59, PHP 5.21, MySQL 5.0.37이 설치되며 PHP는 PHP4로도 선택할 수 있습니다. 또한 아래와 같이 phpMyAdminSQLiteManager가 기본으로 설치되어 있습니다.

사용자 삽입 이미지

OS X는 리눅스(또는 유닉스)기반의 웹개발용 OS로는 매우 편리한 환경 같습니다.
AND

Greenfoot은 영국의 Kent 대학에서 쉽게 에니메이션이나 게임을 만들 수 있도록 해주는 Java를 기반으로 한 통합개발툴(IDE)입니다. Java로 만들어졌으므로 윈도우, 맥, 리눅스등 대부분의 환경에서 사용이 가능합니다.

1. 설치

설치는 매우 간단하며 우선 JDK가 설치되어 있어야 합니다. OS가 윈도우일 경우에는 JDK가 설치되어 있지 않으면 다운로드 받고 설치합니다. (맥은 설치되어 있습니다.)

 JDK 설치를 확인하고  greenfoot 사이트 다운로드 페이지에서 사용하는 OS별로 설치파일을 다운로드 받습니다. 맥에서는 압축파일만 풀면됩니다. (윈도우는 설치 파일을 실행합니다.)


2. 실행

greenfoot를 실행합니다. 메뉴에서 Scenario/New를 선택합니다. 상단의 File 입력창에 시나리오명을 입력하고 하단의 [Creat]버튼을 클릭 합니다. 저는 Test로 하였습니다. 아래와 같이 Greenfoot가 실행된 모습을 보실 수 있습니다.

사용자 삽입 이미지

1) 기본 클래스
기본으로 World와 Actor 클래스가 생성되어 있습니다. 두 클래스 모두 추상(abstract) 클래스이므로 바로 사용하실 수는 없습니다. greenfoot는 4개의 클래스로 이루어져 있습니다.

> Greenfoot
전반적인 시스템을 관리하는 클래스입니다. 사용자 입력, 속도, 효과음 출력, 시작, 중지 등에 관련된 메소드를 가지고 있습니다.

> GreenfootImage
화면출력을 담당하는 클래스입니다. 이미지/벡터 및 문자열 출력과 속성에 관한 메소드를 가지고 있습니다.

> World
스테이지(배경)를 관리하는 클래스입니다. 오브젝트 추가/삭제, 배경 및 타일 출력에 관한 메소드를 가지고 있습니다.

> Actor
World 에서 출력되는 오브젝트 클래스입니다. 오브젝트의 움직임과 속성에 관한 메소드를 가지고 있습니다.


2) Object 생성
사용자 삽입 이미지
먼저 World를 생성합니다. 좌측과 같이 World를 우클릭하여 나오는 메뉴에서 New subclass...를 클릭합니다.

클래스 이름을 MyWorld로 입력하고 [Ok] 버튼을 클릭합니다.



생성된 MyWorld를 다시 우클릭 하여 Set image... 를 클릭하여 backgrounds에서 적당한 이미지를 선택합니다.

그 밑의 Actor를 우클릭 하여 다시 New subclass...를 선택합니다. 저는 아래와 같이 클래스 이름을 Tux로 입력하고 리눅스의 마스코트인 tux.png이미지를 선택하였습니다. 각자 취향에 맞는 클래스명과 이미지를 선택한 후 [Ok] 버튼을 클릭합니다.

사용자 삽입 이미지

아래와 같이 MyWorld와 Tux가 생성된 것을 확인합니다.

사용자 삽입 이미지


3. 소스코드 편집

1) Tux class
Tux를 더블클릭하여 소스 에디터를 오픈하여 아래의 내용을 추가로 입력합니다.

import greenfoot.*;  // (World, Actor, GreenfootImage, and Greenfoot)

/**
 * Write a description of class Tux here.
 *
 * @author (your name)
 * @version (a version number or a date)
 */
public class Tux extends Actor
{
    private int speed = 2;
    /**
     * Act - do whatever the Tux wants to do. This method is called whenever
     * the 'Act' or 'Run' button gets pressed in the environment.
     */

    public void act()
    {
        // Add your action code here.
        int xpos = getX();
        int ypos = getY();
       
        if(Greenfoot.isKeyDown("up")) {
            setRotation(0);
            ypos -= speed;
        }       
        if(Greenfoot.isKeyDown("down")) {
            setRotation(180);
            ypos += speed;
        }
        if(Greenfoot.isKeyDown("left")) {
            setRotation(270);
            xpos -= speed;
        }
        if(Greenfoot.isKeyDown("right")) {
            setRotation(90);
            xpos += speed;
        }
        setLocation(xpos, ypos);
    }   
}

짐작하시는 바와 같이 키를 누르면 이미지를 방향에 맞게 회전시켜 전진하게 합니다. greenfoot에서는 범위를 넘어가면 자동으로 좌표가 조절되기 때문에 범위 체크를 하지 않았습니다.

2) MyWorld class
이제 MyWorld를 더블클릭하여 에디터를 오픈하여 아래와 같이 변경합니다.

import greenfoot.*;  // (World, Actor, GreenfootImage, and Greenfoot)

/**
 * Write a description of class MyWorld here.
 *
 * @author (your name)
 * @version (a version number or a date)
 */
public class MyWorld extends World
{

    /**
     * Constructor for objects of class MyWorld.
     *
     */
    public MyWorld()
    {   
        // Create a new world with 20x20 cells with a cell size of 10x10 pixels.
        super(40, 40, 10); // 스테이지 크기 변경
       
        addObject(new Tux(), 20, 20); // 오브젝트 등록
       
        // Put in your own background image by replacing "greenfoot.png" with the
        // image that should be used as background and uncommenting the line below.
       
        //setBackground("greenfoot.png");
    }
}

Tux를 우클릭하여 new Tux()를 선택하여 스테이지로 가져올 수 있지만, 실행 시에 항상 나타나게 하기위해 addObject 메소드로 World에 추가합니다. 이제 하단의 [Complie all]을 클릭하여 컴파일 후 [> run] 버튼을 클릭하여 테스트를 해봅니다.

3) 확인
아래와 같이 방향키에 따라 Tux가 움직이는 모습을 보실 수 있습니다. (greenfoot에 관해 자세한 사항은 Greenfoot 홈페이지에서 메뉴얼과 다양한 시나리오를 다운 받으실 수 있습니다.)

사용자 삽입 이미지
홈페이지에서 소개를 보면 고등학교 이하의 학생들의 교육을 위한 툴이라고 되어 있습니다. 프로그래밍 또는 Java를 처음 시작하는 학생들을 위해 딱딱하지 않고, 쉽게 흥미를 갖고 배울 수 있게 해 줄 것 같습니다.

Kent대학에서 만들어진 또다른 유사품으로 BlueJ가 있습니다. 이는 Java를 이용해 OOP를  가르치기 위한 툴도 있으니 흥미있는 분들은 홈페이지에서 확인해 보세요.

'개발 툴' 카테고리의 다른 글

적당히 참견하는 Xcode  (4) 2008.02.25
OS X의 파이썬  (0) 2008.02.20
Xcode에서 Flex - Hello World 작성  (0) 2007.12.12
Adobe Flex Builder를 딱 한번 써보고...  (8) 2007.12.03
구글 Android 개발환경 둘러 보기  (8) 2007.11.14
AND