달력

1

« 2025/1 »

  • 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
2009. 4. 15. 16:17

finalize method란 무엇인가? Enjoy/JAVA2009. 4. 15. 16:17



finalize method란 무엇인가?

최상위 클래스인 Object클래스는 finalize라는 이름의 protected 메쏘드를 가지고 있다. 이것은 이 클래스의 객체가 가비지 콜렉션 과정에서 가지고 있던 리소스가 반환될 때 해야 할 일에 대한 정의를 가지고 있다. 물론, 이것은 사용자가 정의한 클래스에서 재정의할 수 있다. 만일 사용자의 클래스에 이 메쏘드를 재정의했다면, 그 finalize메쏘드를 객체의 Finalizer라고 부른다. 그렇다면 이것은 누가 호출하는가? 자바 가상 머신이 그 객체가 가지고 있는 메모리가 반환되기 전에 이것을 수행한다. 이 메쏘드를 재정의함으로써, 단순히 메모리를 반환하는 것 이상의 작업을 할 수 있다.  

 

여기에 대한 정의는 자바 가상 머신에 되어 있지 않다. 단순히 그 객체가 사용하고 있던 리소스가 재사용되기 전에만 실행되면 된다. 어느 쓰레드가 이 파이널라이저를 실행해야 한다는 규정도 없다. Object 클래스의 finalizer메쏘드가 하는 일은 아무 것도 없다.

또한 하위 클래스의 파이널라이저는 상위 클래스의 파이널라이저를 암시적으로 호출하지 않는다. 생성자와는 다르다. 생성자는 자신의 상위 클래스 객체의 생성자를 암시적으로 호출하게 된다. 그래서 하위 클래스의 파이널라이저는 항상 super키워드를 통해 상위 클래스의 파이널라이저를 호출하는 것이 좋다.

protected void finalize() throws Throwable {
super.finalize(); .....
}

파이널라이저의 구현

이 개념을 잡기 위해 두 종류의 애트리뷰트들을 규정하는 것이 좋겠다.

Reachability

 

  • reachable : 살아 있는 쓰레드들에 의해 지속적으로 접근될 수 있는 객체의 상태. 프로그램의 최적화는 이런 reachable한 객체의 숫자를 줄이는 방향으로 나갈 수 있다. 예를 들어, 사용자가 명시적으로 하지 않았더라도 컴파일러나 코드 생성기가 더 이상 사용되지 않을 객체의 레퍼런스에 대해 미리 null이라고 세팅함으로써, 빠른 시간 내에 가비지 수집이 될 수 있게 하는 것이다.
  • finalizer-reachable : 현재 살아있는 쓰레드들에 의해 참조되지는 않으나, finalizable한 객체들에 의해 참조되고 있는 객체의 상태.
  • unreachable : 어떠한 객체들로부터도 참조되지 않는 객체.
Finalization
 
  • unfinalized : 파이널라이저가 자동으로 수행되지 않은 객체의 상태.
  • finalizable :  파이널라이저가 자동으로 수행되지 않은 상태이지만, 자바 가상 머신이 언제라도 파이널라이저를 수행할 수 있는 객체의 상태. 즉 파이널라이저에 의해서는 참조가 되고 있는 상태
  • finalized : 파이널라이저가 자동으로 수행된 객체의 상태.

  이와 같은 두 애트리뷰트의 부류를 고려한 객체의 라이프 사이클은 다음과 같다.

 객체의 라이프 사이클

  • A : 객체가 처음 생성되었을 때에는 reachable이면서 unfinalized한 상태이다
  • 객체의 참조가 실행 도중 살아 있는 쓰레드로부터 접근할 수 없게 되면서 객체의 상태는 finalizer-reachable(B,C,D)나 unreachable(E,F)의 상태가 된다.
  • 이 그림에서 주의깊게 봐야 할 것은 f-reachable한 상태에서 직접 unreachable한 상태로 이동하지는 않는다는 것이다. 파이널라이저가 수행시작되는 순간 reachable한 상태가 되면서 unreachable상태로 이동하게 되는 것이다.
  • G,H : unfinalized상태의 객체가 f-reachable이나 unreachable상태가 된 것을 자바 가상 머신이 탐지하고 finalizable이라는 상태로 세팅한다. 그리고, 그 객체가 unreachable 상태라면 f-reachable상태로 바꾸어 파이널라이저가 수행될 수 있도록 한다.
  • I : 파이널라이저가 수행되었고 unreachable이면 이 객체는 메모리로부터 제거된다.
  • J,K : 자바 가상 머신은 finalizable한 객체에 대해서는 임의의 쓰레드를 이용해 파이널라이저를 수행시킬 수 있다. 이 경우에 객체는 finalized이면서 reachable한 상태가 된다.
  • L,M,N : 위와 같은 작업에 의해 f-reachable이었던 다른 객체들의 상태가 reachable해지게 될 수도 있다.
  • 위에서 한 가지 상태가 빠져 있다. finalizable이면서 unreachable한 상태로 이런 상태는 있을 수 없다. finaliable한 객체는 파이널라이저에 의해 접근될 수 있기 때문이다.
  • O : 파이널라이저가 정의되지 않은 사용자 클래스의 경우 굳이 복잡한 상태를 거칠 이유가 없다.
강제 가비지 콜렉션 구현의 예
 
 import java.lang.ref.*;

public class FinalizeTest {
    String oops = "Oopsla";
    static Reference weakref;

          protected void finalize() throws Throwable {
          System.out.println("Finalizer Called");
}     public static void main(String[] args) {
     FinalizeTest f = new FinalizeTest();
          Reference weakref = new WeakReference(f);

                    System.out.println("Before GC = " + weakref.get());
                     f = null;
                    Runtime rt = Runtime.getRuntime();
                    long free = rt.freeMemory();
         long oldfree;

                 do {
oldfree = free;
rt.gc();
free = rt.freeMemory();
         } while (free > oldfree);

                    System.out.println("After GC = " + weakref.get());
}
}

실행 결과
Before GC = FinalizeTest@7923b8c9
Finalizer Called
AfterGC = null

클래스 파이널라이저

  클래스가 언로딩될 때 암시적으로 호출되는 메쏘드를 다음과 같이 정의할 수 있다.

static void classFinalize() throws Throwable { . . . }
:
Posted by 라면스프
2009. 4. 15. 09:34

POI Style Enjoy/etc2009. 4. 15. 09:34

담아온곳 : http://sinope.tistory.com/tag/poi

=============================================

본문서는 자유롭게 배포/복사 할수 있지만

이문서의 저자에 대한 언급을 삭제하시면 안됩니다

저자 : GoodBug (unicorn@jakartaproject.com)

최초 : http://www.jakartaproject.com 

=============================================


Jakarta POI



IX. Cell을 좀더 유연하게!


1. Date타입 셀 만들기

소스

HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("new sheet");


HSSFRow row = sheet.createRow((short)0);


//처음셀은 style없이 그냥 new Date()로 입력

HSSFCell cell = row.createCell((short)0);
cell.setCellValue(new Date());


//두번째 셀은 "m/d/yy h:mm"으로 포맷하여 날짜를 입력

HSSFCellStyle cellStyle = wb.createCellStyle();
cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy h:mm"));
cell = row.createCell((short)1);
cell.setCellValue(new Date());
cell.setCellStyle(cellStyle);


FileOutputStream fileOut = new FileOutputStream("workbook.xls");
wb.write(fileOut);
fileOut.close();


결과






HSSFDateFormat이 지원하는 날짜 포맷

cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy h:mm")); 에서 다음과 같이 포맷을 정할 수 있다 (현재시간은 2005년 3월 14일 0시 52분 17초.. 헛 화이트데이 --;)




2. Cell의 Align속성

소스

HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("new sheet");
HSSFRow row = sheet.createRow((short) 2);


//HSSFCellStyle의 여러가지 align속성
createCell(wb, row, (short) 0, HSSFCellStyle.ALIGN_CENTER);
createCell(wb, row, (short) 1, HSSFCellStyle.ALIGN_CENTER_SELECTION);
createCell(wb, row, (short) 2, HSSFCellStyle.ALIGN_FILL);
createCell(wb, row, (short) 3, HSSFCellStyle.ALIGN_GENERAL);
createCell(wb, row, (short) 4, HSSFCellStyle.ALIGN_JUSTIFY);
createCell(wb, row, (short) 5, HSSFCellStyle.ALIGN_LEFT);
createCell(wb, row, (short) 6, HSSFCellStyle.ALIGN_RIGHT);

FileOutputStream fileOut = new FileOutputStream("workbook.xls");
wb.write(fileOut);
fileOut.close();


 

public void createCell(HSSFWorkbook wb, HSSFRow row, short column, short align)
{
    HSSFCell cell = row.createCell(column);
    cell.setCellValue("Align It");
    HSSFCellStyle cellStyle = wb.createCellStyle();
    cellStyle.setAlignment(align);
    cell.setCellStyle(cellStyle);
}


결과








3. Cell의 Border 속성

소스

HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("new sheet");

HSSFRow row = sheet.createRow((short) 1);
HSSFCell cell = row.createCell((short) 1);
cell.setCellValue(4);

// Cell의 Border 속성
HSSFCellStyle style = wb.createCellStyle();
style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
style.setBottomBorderColor(HSSFColor.BLACK.index);
style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
style.setLeftBorderColor(HSSFColor.GREEN.index);
style.setBorderRight(HSSFCellStyle.BORDER_THIN);
style.setRightBorderColor(HSSFColor.BLUE.index);
style.setBorderTop(HSSFCellStyle.BORDER_MEDIUM_DASHED);
style.setTopBorderColor(HSSFColor.BLACK.index);
cell.setCellStyle(style);

FileOutputStream fileOut = new FileOutputStream("workbook.xls");
wb.write(fileOut);
fileOut.close();


결과








HSSFCellStyle

HSSFCellStyle에는 다음과 같은 static 멤버변수가 존재합니다

ALIGN_CENTER center horizontal alignment
ALIGN_CENTER_SELECTION center-selection? horizontal alignment
ALIGN_FILL fill? horizontal alignment
ALIGN_GENERAL general (normal) horizontal alignment
ALIGN_JUSTIFY justified horizontal alignment
ALIGN_LEFT left-justified horizontal alignment
ALIGN_RIGHT right-justified horizontal alignment
ALT_BARS Wide dots
BIG_SPOTS Large spots
BORDER_DASH_DOT dash-dot border
BORDER_DASH_DOT_DOT dash-dot-dot border
BORDER_DASHED dash border
BORDER_DOTTED hair-line border
BORDER_DOUBLE double-line border
BORDER_HAIR dot border
BORDER_MEDIUM Medium border
BORDER_MEDIUM_DASH_DOT medium dash-dot border
BORDER_MEDIUM_DASH_DOT_DOT medium dash-dot-dot border
BORDER_MEDIUM_DASHED Medium dashed border
BORDER_NONE No border
BORDER_SLANTED_DASH_DOT slanted dash-dot border
BORDER_THICK Thick border
BORDER_THIN Thin border
BRICKS Brick-like layout
DIAMONDS Diamonds
FINE_DOTS Small fine dots
NO_FILL No background
SOLID_FOREGROUND Solidly filled
SPARSE_DOTS Sparse dots
SQUARES Squares
THICK_BACKWARD_DIAG Thick backward facing diagonals
THICK_FORWARD_DIAG Thick forward facing diagonals
THICK_HORZ_BANDS Thick horizontal bands
THICK_VERT_BANDS Thick vertical bands
THIN_BACKWARD_DIAG Thin backward diagonal
THIN_FORWARD_DIAG Thin forward diagonal
THIN_HORZ_BANDS Thin horizontal bands
THIN_VERT_BANDS Thin vertical bands
VERTICAL_BOTTOM bottom-aligned vertical alignment
VERTICAL_CENTER center-aligned vertical alignment
VERTICAL_JUSTIFY vertically justified vertical alignment
VERTICAL_TOP top-aligned vertical alignment


4. Cell의 색갈 채우기

소스

HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("new sheet");

HSSFRow row = sheet.createRow((short) 1);


HSSFCellStyle style = wb.createCellStyle();
// 아쿠아색을 배경으로 하고

style.setFillBackgroundColor(HSSFColor.AQUA.index);

//채움 스타일은 큰 점으로 한다
style.setFillPattern(HSSFCellStyle.BIG_SPOTS);
HSSFCell cell = row.createCell((short) 1);
cell.setCellValue("X");
cell.setCellStyle(style);


style = wb.createCellStyle();

// 오렌지색으로 전경으로 하고
style.setFillForegroundColor(HSSFColor.ORANGE.index);

// 채움 스타일은 SOLID_FOREGROUND로 한다
style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
cell = row.createCell((short) 2);
cell.setCellValue("X");
cell.setCellStyle(style);


FileOutputStream fileOut = new FileOutputStream("workbook.xls");
wb.write(fileOut);
fileOut.close();


결과







HSSFColor 정리!





5. Cell 병합

소스

HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("new sheet");

HSSFRow row = sheet.createRow((short) 1);
HSSFCell cell = row.createCell((short) 1);

cell.setCellValue("This is a test of merging");

sheet.addMergedRegion(new Region(1,(short)1,1,(short)2));


FileOutputStream fileOut = new FileOutputStream("workbook.xls");
wb.write(fileOut);
fileOut.close();


결과








Region

특정셀을 합칠 때는 HSSFSheet의 addMergedRegion(Region region)와

합칠 셀의 영역을 나타내는 Region을 사용한다.

Region region = new (int 시작ROW, short 시작COL, int 종료ROW, short 종료COL);



6. Cell에 폰트 설정하기

소스

HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("new sheet");

HSSFRow row = sheet.createRow((short) 1);


// 폰트 높이는 24, 폰트 종류는 Courier New, 이탈릭체로 설정한다
HSSFFont font = wb.createFont();
font.setFontHeightInPoints((short)24);
font.setFontName("Courier New");
font.setItalic(true);
font.setStrikeout(true);


// 설정한 폰트를 스타일에 적용한다
HSSFCellStyle style = wb.createCellStyle();
style.setFont(font);


// Cell에 스타일을 적용한다
HSSFCell cell = row.createCell((short) 1);
cell.setCellValue("This is a test of fonts");
cell.setCellStyle(style);


FileOutputStream fileOut = new FileOutputStream("workbook.xls");
wb.write(fileOut);
fileOut.close();


결과








=============================================

본문서는 자유롭게 배포/복사 할수 있지만

이문서의 저자에 대한 언급을 삭제하시면 안됩니다

저자 : GoodBug (unicorn@jakartaproject.com)

최초 : http://www.jakartaproject.com 

=============================================

:
Posted by 라면스프
2009. 4. 13. 22:06

[SHELL] 쉘 제어구조..^^(if구문) Enjoy/etc2009. 4. 13. 22:06


출처 : http://bear.sage.kr/28

[SHELL] 쉘 제어구조..^^(if구문)

기본적으로 셀 명령을 쓸줄 아는것으로 하고 넘어 가겠습니다..^^

제어 구조를 이야기 해보죠..^^

if는 참인지 거짓인지 판단할때 사용한다.
참이라면 then 부분을 실행하고 그렇지 않다면 else 부분을 실행한다.
---------------------------------------------------------
if .....
then
....
else
....
fi
---------------------------------------------------------
문자열비교
[ string ] : string이 빈 문자열이 아니라면 참
[ string1 = string2 ] : 두 문자열이 같다면 참
[ string1 != string2 ] : 두 문자열이 다르면 참
[ -n string ] : 문자열이 null(빈 문자열) 이 아니라면 참
[ -z string ] : 문자열이 null(빈 문자열) 이라면 참

산술비교
[ expr1 -eq expr2 ] : 두 표현식 값이 같다면 참 ( EQual )
[ expr1 -ne expr2 ] : 두 표현식 갑이 같지 않다면 참 ( Not Equal )
[ expr1 -gt expr2 ] : expr1 > expr2 이면 참 ( Greater Then )
[ expr1 -ge expr2 ] : expr1 >= expr2 이면 참 ( Greater Equal )
[ expr1 -lt expr2 ] : expr1 < expr2 이면 참 ( Less Then )
[ expr1 -le expr2 ] : expr1 <= expr2 이면 참 ( Less Equal )
[ ! expr ] : expr 이 참이면 거짓, 거짓이면 참
[ expr1 -a expr2 ] : expr1 AND expr2 의 결과 ( 둘다 참이면 참 )
[ expr1 -o expr2 ] : expr1 OR expr2 의 결과 ( 둘중 하나만 참이면 참 )

파일조건

[ -b FILE ] : FILE 이 블럭 디바이스 이면 참
[ -c FILE ] : FILE 이 문자 디바이스 이면 참.
[ -d FILE ] : FILE 이 디렉토리이면 참
[ -e FILE ] : FILE 이 존재하면 참
[ -f FILE ] : FILE 이 존재하고 정규파일이면 참
[ -g FILE ] : FILE 이 set-group-id 파일이면 참
[ -h FILE ] : FILE 이 심볼릭 링크이면 참
[ -L FILE ] : FILE 이 심볼릭 링크이면 참
[ -k FILE ] : FILE 이 Sticky bit 가 셋팅되어 있으면 참
[ -p FILE ] : True if file is a named pipe.
[ -r FILE ] : 현재 사용자가 읽을 수 있는 파일이면 참
[ -s FILE ] : 파일이 비어있지 않으면 참
[ -S FILE ] : 소켓 디바이스이면 참
[ -t FD ] : FD 가 열려진 터미널이면 참
[ -u FILE ] : FILE 이 set-user-id 파일이면 참
[ -w FILE ] : 현재 사용자가 쓸 수 있는 파일(writable file) 이면 참
[ -x FILE ] : 현재사용자가 실행할 수 있는 파일(Executable file) 이면 참
[ -O FILE ] : FILE 의 소유자가 현재 사용자이면 참
[ -G FILE ] : FILE 의 그룹이 현재 사용자의 그룹과 같으면 참
[ FILE1 -nt FILE2 ] : FILE1이 FILE2 보다 새로운 파일이면 ( 최근파일이면 ) 참
[ FILE1 -ot FILE2 ] : FILE1이 FILE2 보다 오래된 파일이면 참
[ FILE1 -ef FILE2 ] : FILE1 이 FILE2의 하드링크 파일이면 참

정수 비교
-eq 같다면 참($a -eq $b)

-ne 다르다면 참($a -ne $b)

-gt 더 크다면 참($a -gt $b)

-ge 더 크거나 같다면 참($a -ge $b)

-lt 더 작다면 참($a -lt $b)

-le 더 작거나 같다면 참($a -le $b)

문자열 비교

= 같다면 참($a = $b)

!= 다르다면 참($a != $b)

\< 아스키 코드 순서에서 더 작다면 참($a \< $b)

주의 : "<" 는 이스케이프 시켜야 됩니다.

\> 아스키 코드 순서에서 더 크다면 참 ($a \> $b)

주의 : ">" 은 이스케이프 시켜야 됩니다.

비교 연산자를 쓰는 어플리케이션 예제 참고 예 3-90

-z 문자열이 "널"이면 참. 즉, 길이가 0

-n 문자열이 "널"이 아니면 참.
---------------------------------------------------------
이와 같은 조건들이 있다 이것에서 자신이 원하는것을 찾아서 쓰면 된다..^^

우리가 자주 rc.local 파일에 mysql데몬 실행이나 firewall 파일을 올리는 경우가 있다.
이때 쓰면 좀더 멋있게 만들수가 있다.

--------------------------------------------------------
if [ -f /usr/local/mysql/bin/safe_mysqld ] then
/usr/local/mysql/bin/safe_mysqld &
fi

--------------------------------------------------------
이와 같이 하면 좀더 이쁘게 보일수 있죠..^^
해석은 파일이 존재하면 참이 되어 MySQL을 실행 시키라는 거죠..^^

--------------------------------------------------------
if 문은 조건을 판단하여 주어진 문장을 수행합니다.

1. 형식 1 ( 단일 if 문 )
형식 :
if [ 조건 ]
then
문장1
문장2
fi

2. 형식 2 ( if~else 문 )
형식 :
if [ 조건 ]
then
문장1
문장2
else
문장3
문장4
fi

3. 형식 3 ( if~elif 문 )
형식 :
if [ 조건 ]
then
문장1
문장2
elif
문장3
문장4
else
문장5
문장6
fi
---------------------------------------------------------
문자의 구조 입니다.이런 형태로 if문은 구성이 됩니다.

:
Posted by 라면스프
2009. 4. 11. 11:56

Java garbage collection Enjoy/JAVA2009. 4. 11. 11:56




Java garbage collection

Qualcomm 부스에서 기다렸더니 옆집 아저씨같은 분이 반갑게 맞이하며 두 개 질문 하더라. vTable이 뭐야? 하하하 이건 우리 인터뷰 과외전문 art.oriented 김선생이 귀뜸해준 것이 아닌가? 상속받은 클래스가 여러 개 있는데 virtual 키워드를 쓰게 되면 실제 호출할 때 엉뚱한 메소드를 호출할 수도 있다. 그 때를 위해 메소드들에 대한 포인터를 가지고 있는 것이 vTable이라고 영어로 버벅거리며 대답을 했다. 내 대답에 아저씨는 미심쩍은 표정을 지어주셨다.

두 번째 질문은 Java에서 언제 garbage collection을 하는 가였다. gc라고 garbage collector가 있지만 그걸 내가 실행시킨다고 바로 garbege collector가 작동하는 것도 아니고 JVM이 알아서 자동으로 하는 거라고 말해줬다. 그랬더니 그럼 자동으로 어떻게 하냐고 되묻는다. 퀄컴 오피스가 학교 근처에 있길래 편하게 인턴하겠다 싶어서 지원했는데 레주메 내는 것조차 쉽지가 않다. 그래도 대답을 해야겠기에 일반적인 이야기를 했다. 자바가 자동으로 memory를 관리하고 reference counter등을 가지고 있어서 메모리가 부족하면 garbage collection이 일어난다고. 아저씨 표정은 아까보다 더 않 좋게 변했다. 인터뷰 하나가 날아가는 소리가 들린다. 

시험 볼 때 틀린 문제는 제대로 알아놓지 않으면 나중에 나왔을 때 또 틀리는 법! 그래서 잊어버리기 전에 한 번 적어보자. 구글신 가라사대 

The JVM specification says only that the heap of the Java virtual machine must be garbage collected. The specification does not define how the garbage collector must work. The designer of each JVM must decide how to implement the garbage-collected heap.

즉, 정해진 건 없다는 건데. 그럼 내가 말한 것처럼 레퍼런스 카운팅을 해서 구현해도 사실 문제가 없는 거잖아? 그 아저씨는 왜 이상한 표정을 지었을까. 그런데 저 위에 나온 문서는 96년에 Bill Venners라는 사람이 쓴 글이다. 그럼 좀 더 최신 문서를 찾아보면?

Last month, we looked at the classic garbage collection techniques of reference counting, copying, mark-sweep, and mark-compact. Each of these approaches has advantages and disadvantages in certain situations. For example, copying does well when a large proportion of objects are garbage, but does poorly with many long-lived objects (copying them repeatedly). Conversely, mark-compact does quite well with long-lived objects (copying them only once), but not so well with many short-lived objects. The technique used by the 1.2 and later JVMs, calledgenerational garbage collection, combines these two techniques to get the best of both worlds, and as a bonus provides very low object allocation overhead.

한 줄 요약하면, JVM 1.2이상 버전에서는 copying과 mark-compact 기술을 합친 generational garbage collection을 한다는 말이다. 내가 그 아저씨한테 reference counting을 한다고 했으니 아저씨 표정이 이랬지.


copying GC

블로그에 보니 알기 쉽게 설명이 잘 되어있다. 역시 나같은 사람은 그림을 보여줘야 이해가 빠르다. 간단하게 설명하자면 메모리를 두 개로 나눈다. 두 공간을 각각 ping과 pong으로 부르자. 처음에는 ping에만 stack처럼 메모리를 할당하고 stack의 top 포인터를 가장 마지막에 할당한 메모리를 가리키게 한다. 근데 계속 새로운 메모리를 할당하게 되면 ping이 꽉 차서 더 이상 메모리를 할당할 수 없게 된다. 그럼 그 때 GC를 실행시킨다. GC는 간단하다. pong에다가 현재 참조되고 있는 메모리를 다 옮겨놓는다. 그리고 ping은 다 지운다. 그리곤 pong이 다 찰 때까지 새로운 메모리는 pong에다가 계속 할당한다. 

이 방법은 매우 빠르다는 장점이 있다. 그냥 top 포인터는 계속 증가하기만하면 되고, 한 쪽이 다 차면 다른 한쪽으로 옮기면 끝. GC를 할 시점인지 아닌지도 top 포인터만 체크하면 된다. 자 이제 단점 들어간다. 항상 두 배의 메모리가 필요하다. ping과 pong 두 개를 유지해서 하나가 꽉 차면 다른 한쪽으로 옮겨야하기 때문에 나머지 하나는 항상 놀고 있다. 

mark-compact GC

이건 정말 짤막한 설명이어서 한 편으로는 머리속에 지식이 훅~ 하고 들어오지만, 한 편으로는 그림이 없어서 조금 애매하기도 하다. 알고리즘은 두 단계로 되어있다. 

  1. 모든 참조되는 object들에 mark를 해 놓는다.
  2. 마크된 것들은 contiguous memory location에다가 옮겨놓는다.
contiguous를 찾아보니 touching along a boundary, near in sequence, connected throughout in an unbroken sequence라는데 인접한 곳, 연속된 공간 뭐 이 정도로 해석해도 되려는지 모르겠다. 역시 그림이 없이 글로만 설명된 건 이해하기 어렵다.

generational garbage collection

A generational collector divides the heap into multiple generations.Objects are created in theyoung generation, and objects that meet some promotion criteria, such as having survived a certain number of collections, are then promoted to the next older generation.

쉽게 말해 메모리를 여러 세대(generation)으로 나누고 GC에서 살아 남거나 하면 다음 세대(next older generation)으로 승격되는 시스템 되겠다. JVM은 모든 메모리 영역에 대해서 GC를 하는 것이 아니라 메모리를 여러 영역으로 나누고, 해당 영역이 꽉 차면 그 영역에 대해서만 GC를 한다. 전체 영역에 대한 GC(Full GC)를 할 필요가 없고 일부 영역에 대한 GC(Minor GC)만 수행하므로 수행 속도가 빨라진다. 

Sun의 자바 사이트에서 가져온 그림

JVM은 메모리를 젊은 세대(Young Generation, 이하 YG)과 나이든 세대(Old Generation, 이하 OG)으로 구분한다. YG는 다시 Eden, 두 개의 Survivor 나뉜다. 처음 object가 생성이 되면 일단 Eden에 들어가게 되고 대부분의 object는 Eden에서 생을 마감하게 된다. Eden이 꽉 차면 Minor GC를 수행하고 살아 남는 object들은 Survivor 지역으로 이동된다. Survivor에서 어느 정도 오래 살아 남으면 Tenured 지역으로 이동되고, Tenured 지역이 꽉 차면 다시 Full GC가 일어난다. 

더 자세한 정보를 원한다면 링크1링크2를 보기 바란다.

:
Posted by 라면스프
검색엔진 및 유용한 사이트가 잘 정리 되어 있어 담아 왔습니다.

출처 : http://blog.naver.com/hojong1974/150033990144


구글 등록

https://www.google.com/webmasters/tools/siteoverview

 

야후등록

https://siteexplorer.search.yahoo.com/submit

 

MSN

http://search.msn.com/docs/submit.aspx

 

네이버

http://blogsearch.naver.com/

 

올블로그

http://www.allblog.net/

 

블로그코리아

http://www.blogkorea.net/

이올린

http://eolin.com/

블로그플러스

http://blogplus.net/


콜콜넷

http://www.colcol.net/


블로그모아

http://www.blogmoa.co.kr/main.html


브레인

http://www.brainn.co.kr/news.jsp


블로그와이드 시즌1  - http://extv.co.kr/blogwide/
블로그와이드 시즌2 - http://www.blogwide.kr/


알에스에스판

http://www.rsspan.kr/


커리어블로그

http://careerblog.scout.co.kr/


쇼핑저널 버즈

http://www.ebuzz.co.kr/


오픈블로그

http://kr.openblog.com/


뉴스2.0

http://www.news2.co.kr/


프리로그

http://freelog.net/


넘즈넷

http://numz.net/


블러그나와

http://www.blognawa.com/


믹시

http://www.mixsh.com/

 

온20

http://on20.net/


블로그스페이스

http://blogspace.paran.com/


K모바일뉴스

http://kmobile.co.kr/index.asp


블로그스포츠

http://blogsports.sportsseoul.com/

 

프로토스타일

http://protostyle.sportstoto.co.kr/


알토랑

http://www.rtorang.com/


다음블로그뉴스

http://bloggernews.media.daum.net/


위드블로거

http://www.withblogger.com/

 

노블로그

http://www.knowblog.or.kr/

 

프레스블로그

http://www.pressblog.co.kr/


온타운넷

http://www.ontown.net/


나루

http://www.naaroo.com/

 

 

 

블로그 방문자를 3배 x 2 늘리는 방법

야후 홈페이지 등록: https://kr.suggest.yahoo.com/guide/guide_normal.php
네이버 홈페이지 등록: http://submit.naver.com/basic_req/main.php
다음 홈페이지 등록: http://help.search.daum.net/help/register.html
엠파스 홈페이지 등록: http://add.empas.com/regi2.html
네이트 홈페이지 등록: http://reghome.nate.com/comReg/common_01.asp
하나포스 홈페이지 등록: http://adsearch.hanafos.com/ad/searchad_gsite_01.asp
파란 홈페이지 등록: http://add.paran.com/normal_info.php
천리안 홈페이지 등록: http://dir.chol.com/service/request/reqregister.php
드림위즈 홈페이지 등록: http://request.dreamwiz.com/BIN/register.cgi?cmd=t&sub=20

:
Posted by 라면스프
2009. 3. 5. 11:21

WGA 알림 무용지물로 만들기 Enjoy/etc2009. 3. 5. 11:21

원본 : http://support.microsoft.com/kb/921914#top

출처 : http://www.soondesign.co.kr/408

WGA 알림 무용지물로 만들기

  1. 관리자 퍼미션을 가진 계정으로 컴퓨터에 로그온 합니다.
    컴퓨터에 존재하는 WGA 알림 버전이 파일럿 버전인지 확인합니다. 파일럿 버전의 버전 포맷은 1.5.0532.x입니다. 이 경우, 527-532 버전만 제거할 수 있습니다. 예를 들면, 1.5.0527.0부터 1.5.0532.2까지의 버전을 제거할 수 있습니다. WGA 알림 버전을 확인하려면 다음 단계를 따르세요.
  2. a. 시작을 누르고, 제어판으로 갑니다.
    프로그램 추가제거를 더블클릭 한후 업데이트 표시에 체크를 합니다.
    b. Windows Genuine Advantage Notifications를 누르고, 지원정보를 보려면 여기를 클릭하시오를 클릭합니다.
    c. 지원정보 대화상자에서, 버전을 확인하고 닫기 단추를 누릅니다.
  3. 다음 파일들을 확장자를 .old로 바꿉니다.
    1. %Windir%\system32\WgaLogon.dll 파일을%Windir%\system32\WgaLogon.old 로 바꿉니다.
    2. %Windir%\system32\WgaTray.exe 파일을 %Windir%\system32\WgaTray.old 로 바꿉니다.
  4. 이름바꾸기가 실패할 경우 메모리에 상주한 WgaTray.exe때문인데 작업관리자에서 프로세스 끝내기로 종료 후 이름을 바꾸면 됩니다.


  5. 컴퓨터를 재시작합니다.
수동으로 WGA 알림을 제거하기

  1. 관리자 퍼미션을 가진 계정으로 컴퓨터에 로그온 합니다.
    컴퓨터에 존재하는 WGA 알림 버전이 파일럿 버전인지 확인합니다. 파일럿 버전의 버전 포맷은 1.5.0532.x입니다. 이 경우, 527-532 버전만 제거할 수 있습니다. 예를 들면, 1.5.0527.0부터 1.5.0532.2까지의 버전을 제거할 수 있습니다. WGA 알림 버전을 확인하려면 다음 단계를 따르세요.
  2. 시작을 누르고, 제어판으로 갑니다.
    프로그램 추가제거를 더블클릭 한후 업데이트 표시에 체크를 합니다.
    Windows Genuine Advantage Notifications를 누르고, 지원정보를 보려면 여기를 클릭하시오를 클릭합니다.
    지원정보 대화상자에서, 버전을 확인하고 닫기 단추를 누릅니다.
  3. 다음 파일들을 확장자를 .old로 바꿉니다.
    1. %Windir%\system32\WgaLogon.dll 파일을%Windir%\system32\WgaLogon.old 로 바꿉니다.
    2. %Windir%\system32\WgaTray.exe 파일을 %Windir%\system32\WgaTray.old 로 바꿉니다.
  4. 이름바꾸기가 실패할 경우 메모리에 상주한 WgaTray.exe때문인데 작업관리자에서 프로세스 끝내기로 종료 후 이름을 바꾸면 됩니다.


  5. 컴퓨터를 재시작합니다.
  6. Regsvr32.를 이용하여 LegitCheckControl.dll를 등록해제합니다. 이를 위해서 다음 단계를 따르세요.
    가. 시작을 누르고, 실행을 누릅니다. cmd를 입력하고 확인을 누릅니다.
    나. 명령프롬프트가 뜨면 다음을 입력하고 엔터를 누릅니다.
    Regsvr32 %Windir%\system32\LegitCheckControl.dll /u
  7. 컴퓨터를 재시작합니다.
  8. 시작을 누르고, 실행을 누릅니다. cmd를 입력하고 확인을 누릅니다.
  9. 명령프롬프트가 뜨면 아래 파일들을 del 명령을 이용하여 제거합니다. 각각의 명령 후에 엔터를 과감히 치세요!
    • Del %Windir%\system32\wgalogon.old
    • Del %Windir%\system32\WgaTray.old
    • Del %Windir%\system32\LegitCheckControl.dll
  10. 명령 프롬프트에서 regedit 를 입력합니다.
  11. 다음의 레지스트리 서브키로 위치한 다음 오른쪽 클릭을 누릅니다. 삭제를 눌러 키를 삭제합니다.
    1. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT
      \
      CurrentVersion\Winlogon\Notify\WgaLogon
    2. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT
      \CurrentVersion\Uninstall\WgaNotify
:
Posted by 라면스프




아이팟 터치 & 아이폰 개발 with 툴체인 2 아이폰 개발


툴체인 설치를 위해 고생한 분들과 마찬가지로 많은 삽질을 했더랬습니다.

http://date4u.tistory.com/tag/Toolchain 에서 많은 참고를 했었지만 ,

중간에 몇군데 막히는 부분이 있더군요.

따라서 그부분을 추가해서 다시한번 툴체인 설치에 관한 글을 써 볼까 합니다.

(설치한지 며칠 지나서 쓰려니 벌써 기억이 안나기 시작하네요 -_ㅜ)

 

## 혹시 잘 안되는 부분이나 글에 오류가 있으면 덧글 부탁드립니다.

## 며칠전에 했던거라 잘못 쓴 부분이 있을 수도 있기 때문입니다.

 

 

 툴체인 설치과정

 

1. 맥OS X 용 SDK 다운로드

2. 아이폰/아이팟터치용 root filesystem 다운로드

3. 아이폰용 크로스컴파일러가 설치된 cygwin 다운로드 및 설치

4. cygwin에 필요한 파일들 복사 및 설치

5. Hello, world 테스트

6. 이클립스 및 이클립스 CDT 설치 및 연동

7. 이클립스에서 컴파일 하기

 

 

 

 

 

맥OS X용 SDK 다운로드

Xcode 2.5 이미지를 다운로드 합니다.

로그인 후 다운로드가 가능한데, 어짜피 가입해두시는 편이 좋을듯 합니다.

다운받은 이미지는 dmg파일인데, PowerISO라는 프로그램을 통해 가상시디롬으로 만들어서 열어야 합니다.

 

나중에 cygwin을 설치하고 나서 필요한 파일들을 복사하도록 합니다.

 

 

 

아이폰/아이팟터치용 root filesystem 다운로드

아이폰이나 아이팟 터치에서 직접 다운로드 할 수도 있으나, 잘 안된다고 하더군요.

저도 직접 인터넷에서 다운로드 해서 설치했습니다. 일단 1.4용 firmware를 다운로드 합니다.

 

다운로드 후 확장자를 zip으로 변경해 주고 압축파일을 연 다음, 022-3894-4.dmg 파일을 압축해제 합니다.

 

이 글에 첨부된 

 

파일을 다운받아서, 

022-3894-4.dmg 파일과 같은 경로에 넣어준 후,

압축을 풀고 vfdecrypte.exe 파일 및 dll 파일 2개가 생성된것을 확인합니다.

 

cmd 명령으로 쉘을 쉴행시켜서 위 경로로 갑니다. 명령창에,

vfdecrypt.exe -i 022-3894-4.dmg -o trasyia114.dmg -k d0a0c0977bd4b6350b256d6650ec9eca419b6f961f593e74b7e5b93e010b698ca6cca1fe

라고 입력 해서 이미지를 디코딩 하면 trasyia114.dmg 파일이 생깁니다.

이 파일을 나중에 cygwin 설치 후 PowerISO로 열어서 필요한 파일을 꺼내올 겁니다.

 


 

 

 

 

아이폰용 크로스컴파일러가 설치된 cygwin 다운로드 및 설치

Cygwin setup 파일을 다운로드 받아서 실행합니다.

 

아래 그림과 같이 User URL을 http://www.iphonegameover.com/cygwin 으로 입력하고 Add버튼을 눌르면 소스리스트에 위 사이트가 추가되면서 크로스 컴파일러가 설치된 cygwin 패키지가 다운로드 될 준비가 됩니다.

 


 
























 

준비가 되면 아래 그림과 같은 화면이 나오는데, default로 설치 합니다.

(가끔 이화면이 안나오고 에러가 발생하면서 setup.exe가 종료되기도 하는데 이럴때는 다른 pc에서 파일을 로컬에 다운로드하고 복사해 와서 설치해도 됩니다.)

 


 

 

 

 

 

 

cygwin에 필요한 파일들 복사 및 설치

cygwin 설치후 최초로 실행하기 전에, Xcode를 설치 합니다.

위에서 받은 Xcode이미지를 PowerISO로 열어서 아래 경로의 Archive.pax.gz파일을 찾습니다

\Packages\Packages\MacOSX10.4.Universal.Pkg\Contents\Archive.pax.gz

이 파일을 cygwin설치 디렉토리의 home/username/ 아래에 복사해 넣습니다

(c:에 설치하셨다면, c:/cygwin/home/username/ 이 되겠습니다)

 

그리고 위에서 디코딩한 root filesystem 역시 PowerISO로 열어서

/user/local/arm-apple-darwin/filesystem/ 아래에 복사해 넣습니다.

 


 

 

이제 cygwin을 실행해 보면, 자동으로 Archive.pax.gz파일을 찾았다고 나오고 설치가 진행됩니다.

설치가 완료되면 Your tool chain installation is now complete! 라는 메시지가 나오고 설치가 완료됩니다.

 

 

 

 

 

Hello, world 테스트

 이제 Hello, world를 컴파일 해 볼 시간입니다.

이 글에 첨부된 


을 다운받아 압축을 풀고 cygwin에 helloWorld.app라는 디렉토리를 만든뒤 복사해 넣습니다.

컴파일은 make 명령으로 간단히 진행됩니다.

 


 

컴파일 되었으면 실행을 해 볼 차례입니다.

제 경우는 터치밖에 가지고 있지 않으므로, Touch Explorer로 터치의 /Applications 디렉토리에 넣고 실행해 보았습니다 (Jail-break 된 터치라야 업로드가 될겁니다). Auto-permition(권한을 자동으로 설정해주는 어플, 터치 Jail-break 후에 따로 설치해야 함)으로 권한 설정을 해주시면 섬머보드가 재 실행되면서 터치 화면에 추가된 hello, world를 보실 수 있습니다. 실행하면 아래와 같은 화면이 나옵니다.

 

 


 

 

 

 

 

이클립스 및 이클립스 CDT 설치 및 연동

이제 이클립스를 설치하기 위한 준비단계 입니다.

 

먼저 윈도우의 환경변수에서 path를 수정해 줘야 합니다.

cygwin에서 env | grep PATH 명령으로 path를 확인해 보면 아래와 같은데,

/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin: 라는 부분만 복사를 해서

윈도우의 환경변수중 Path에 추가해 줍니다.

 

당연히 경로는 c:\cygwin 아래 일 것이므로

c:\cygwin\usr\local\bin;c:\cygwin\usr\bin;c:\cygwin\bin;c:\cygwin\usr\X11R6\bin

의 형태로 추가를 해주시면 됩니다.

 

include경로 추가도 해줘야 하므로

윈도우의 환경변수에 include라는 변수이름을 추가하고 변수값에는

c:\cygwin\usr\local\arm-apple-darwin\include

를 추가해 줍니다.

 

이제 이클립스 for C, C++를 다운로드 합니다.

그리고 이클립스 CDT도 다운로드 합니다.

 

먼저 이클립스를 설치 한 후, 실행 합니다.

아래 그림처럼 Help > Software updates > Find and install 을 실행합니다

 


 

 

 

여기서 Search for new features to install을 선택하고

New Archived Site... 로 들어가서 아까 다운로드한 CDT zip파일을 선택한 후 설치합니다.

 


 

 

 

이제 자잘한 설정이 남았습니다.

 

이클립스를 닫은뒤 재실행 하시고, Window > Preference... 로 가셔서

C/C++ > NewCDT project wizard > Makefile Project 로 가셔서

아래 그림처럼 Elf Parser, Cygwin PE Parser, GNU ELF Parser 를 체크해 줍니다.

(만약 New CDT project wizard 항목이 없다면 CDT설치가 잘못된것입니다.)

 

그리고 Error Parsers 탭에서 모두 선택합니다.

 


 

 


 

 

 

자 이제 준비가 거의 끝났습니다.

다른 포스트에서 본 경우에는 이후 정상적으로 컴파일이 되었다고 하는데, 제 경우엔 잘 되지 않아서 이리저리 고민하다 알아낸 것이 추가적인 이클립스 내의 경로 설정입니다.

(혹시 컴파일 할때 Exec error: Launching failed 라는 메시지가 뜨신다면 이 방법으로 해결이 될겁니다)

 

Window > Preference... 로 가셔서 C, C++ > Environment로 갑니다.

New를 선택하고 Name에 PATH를 Value 에 윈도우의 환경변수 Path와 같은 내용을 써 줍니다.

 


 

 

 

 

 

 

이클립스에서 컴파일 하기

File > New... > C project 로 가서 새 프로젝트를 생성합니다.

모두 default로 합니다.

 


 

 

 

아까 cygwin에서 썼던 hello, World 소스를 import 합니다.

프로젝트 이름 우클릭 > import

 


 

 

 

General에서 file system을 고른후 hellow, Wolrd 파일들을 압축 풀어둔 디렉토리를 선택하면

아래처럼 파일들을 골라서 import할 수 있습니다.

 


 


 

 

이제 컴파일을 해 봅니다.

 

Project > Clean... 으로 컴파일을 하시면 아래와 같이 나와야 정상적으로 컴파일이 된 것입니다.

수고하셨습니다.

 


 

 

 

길고긴 포스팅이 드디어 끝이났네요.

다음 포스팅이 언제가 될지는 저도 모릅니다. 배워가면서 하는입장이라서요 ^^.

그럼 즐거운 개발들 되시기 바랍니다.

:
Posted by 라면스프


 아이팟 터치 & 아이폰 개발 with 툴체인 아이폰 개발

 아이팟 어플리케이션 개발을 시작하며

 

국내에 아이폰(iPhone)이 들어온다는 소식도 간간히 들려오고, 국내의 아이팟 터치(iPod Touch) 사용자도 늘어나면서 아이팟에 대한 관심이 어느때 보다 높은것 같다. 실제로 아이팟 터치를 해킹(락을 푸는 정도)해서 사용해 보면 그 무한한 가능성에 놀라움을 금치 못하게 된다. 본인도 아이팟 터치를 이리저리 가지고 놀던중 아이팟 터치용 어플리케이션을 만들어보는것이 재미있겠다는 생각이 들던 차에, 이번에 도전을 해보게 되었다. 그러나 이것은 결코 순탄치 않은 길이었다. 그간 겪을 일들을 앞으로 이 카테고리로 정리해 볼까 한다. 언제 귀차니즘으로 관둘지 모르지만 ^^

 

 

 

 

 

 

 가장 기본적으로 알아야 할것들

 

본 글은 기본적인 개발을 해보았고 한두가지 언어를 다룰 줄 알지만, 아이폰이나 맥OS(MacOS)에 대해 전혀 지식이 없다고 가정을 하고 쓰여질 것이다 (왜냐하면 본인이 그렇기 때문이다).  따라서 기본적으로 아이폰 어플리케이션 개발을 위해 알아야 할 지식들도 함께 소개를 할까 한다. 개발자가 아닌 분들도 애플 관련 지식을 쌓는데 도움이 되실 것이고, 개발자 분들도 코딩이 아닌 전반전 지식을 쌓는데 도움이 되셨으면 하는 바이다 (거창하게 말하지만 본인도 잘 모른다;).

 

아이폰용 어플리케이션을 개발 할 수 있는 방법 2가지

(1) 맥 에서 편하게 개발

(2) 툴체인을 통해 크로스컴파일

 

맥을 가지신 분들(정말 부럽다) 이라면 애플에서 공개한 펌웨어(firmware) 2.0 용의 SDK를 이용해 아주 좋은 개발환경을 구성할 수 있다. 그래피컬한 개발환경이나 편리한 템플릿(template)들을 제외 하더라도, 아이폰 에뮬레이터가 제공되어 개발중에 결과를 쉽게 확인할 수 있다는 점은 너무나도 매력적이다. 다만, SDK에서 개발한 아이폰 어플리케이션을 배포하기 위해서는 라이센스를 구입해야 한다는 점(10만원 정도였던걸로 기억한다) 때문에 개발자들의 원성을 사고 있다. 그렇다 하더라도 맥에서 개발한 코드를 크로스컴파일로러 컴파일 해주는 방법을 이용해도 될듯 하기 때문에, 맥을 가지고 개발한다는건 여전히 부러운 방법이다.

 

이 글은 기본적으로 툴체인을 구성하고 개발하는것에 목표를 두고 있고, 사실 툴체인을 통한 개발환경을 구성만 하면(그게 제일 문제지만), 그 후로는 맥에서 개발하는것과 큰 차이는 없으므로 (라고 스스로를 위로하자) 툴체인을 통해 개발해 배포할 수 있는 방법을 소개할 것이다.

 

툴체인이 뭐야?

툴체인(toolchain)은 간단히 말하면 서러운 셋방살이라고 할 수 있다. 위키피디아를 뒤져보면 다 나오는 얘기지만, 다른 플랫폼의 소프트웨어 개발을 위해서 사용되는 개발도구의 집합을 말한다. 이게 왜 셋방살이인가 하면, 컴파일러도 타겟 플랫폼에 맞는걸 써야하고, 라이브러리도 타겟 플랫폼의 것을 사용해야 하고, 컴파일 후에도 타겟 플랫폼에 실행파일을 업로드 해서 테스트를 해야하는 등등 번거로운 것들이 늘 함께 하기 때문이다.

 

그럼 툴체인을 어떻게 구성하는데?

툴체인을 구성하는 방법은 무궁무진 하지만, 기본적으로 크로스 컴파일러(Cross compiler)와 라이브러리들은 필수 요소이다. 아이폰용 개발 툴체인을 구성하는것도 여러 방법이 있지만 쉽게 생각해 볼 수 있는 방법은 리눅스(Linux)에서 개발하여 아이폰으로 테스트 하는방법과, 윈도우에서 이클립스(Eclipse)로 개발하여 Cygwin으로 컴파일 한뒤, 아이폰으로 테스트를 하는 방법등이 있다. 여기서는 이클립스를 이용하여 윈도우 환경에서 개발하는 방법을 추천한다. 즉 코딩(Eclipse)-컴파일(Cygwin gcc-arm cross complier)-테스트(아이팟터치) 의 순서가 될 것이다.

 

Cygwin 과 Cross Compiler

설마 이걸 모를까 싶지만, 의외로 모르는 분들도 많을것이다. Cygwin은 리눅스용 프로그램들을 윈도우용으로 포팅한 것이다. 따라서 Cygwin에서 ls명령을 쳤을때 실행되는건 리눅스에서 실행되는게 아니라 여전히 윈도우 커맨드라인에서 ls명령을 사용하는것과 다를바가 없는 것이다. 하지만 Cygwin은 상당히 잘 만들어 져 있기 때문에 웬만한 리눅스 사용환경을 잘 지원하고 있다.

 

크로스컴파일러는 어플리케이션을 컴파일 해서 머신코드를 생성 할 때, 타겟 머신에서 사용하는 코드를 생성할때 사용한다. 이말이 무슨 뜻인고 하니, 컴파일을 해서 CPU가 이해할 수 있는 어셈코드와 바이트코드(기계어)를 생성 할 때, 내 PC의 Intel CPU가 사용하는 언어로 번역을 하는것이 아니라, 타겟 머신인 아이팟의 ARM CPU가 사용하는 언어로 번역을 한다는 것이다. 따라서 이렇게 크로스컴파일 된 코드는 내 PC에서는 동작하지 않고 아이팟에서 동작 하는 것이다.

 

점심시간이 다가오므로 글을 여기서 마치고, 다음 포스트에서 툴체인 설치법과 이클립스와의 연동법을 써 보고자 한다.



다음글보기http://starplaying.tistory.com/114



:
Posted by 라면스프

JDK 1.4 한글 도움말(javastudy) : http://www.javastudy.co.kr/api/api1.4/

JDK 1.4 한글 API(forcert) : http://www.forcert.com/programming/api/j2se/1.4.0k/index.html

servlet api : http://jakarta.apache.org/tomcat/tomcat-4.1-doc/servletapi/index.html - 2.3

                          http://jakarta.apache.org/tomcat/tomcat-5.0-doc/servletapi/index.html - 2.4

jsp2.0 api : http://jakarta.apache.org/tomcat/tomcat-5.0-doc/jspapi/index.html - 2.0

 

J2EE 한글 도움말 : http://forcert.com/programming/api/j2ee/1.3.0k/

 

J2EE 1.4 튜토리얼 : http://java.sun.com/j2ee/1.4/docs/tutorial/doc/index.html

JSTL 1.1 : http://java.sun.com/products/jsp/jstl/1.1/docs/tlddocs/index.html

Spring API : http://www.springframework.org/docs/api/index.html

Hibernate API : http://www.hibernate.org/hib_docs/api/

자바 패키지별 예제(영문) : http://sangchin.byus.net/FlashHelp/Almanac.htm

 

==================================================================================

자바 싸이트

-----------------------------------------------------------------------------------

자바스터디 : http://www.javastudy.co.kr/  (강좌 정리)
자바누리 : http://www.javanuri.com/
자바랜드 : http://www.javaland.co.kr/
소설같은 자바 : http://www.jabook.org/    (책 한권)
자바서비스넷 : http://www.javaservice.net/ (중고급 정보)
김상욱의 개발자side : http://50001.com/  (소스 등)
종스클럽닷컴: http://www.jongsclub.com/
JLAB : http://www.jlab.net/
OKJSP : http://www.okjsp.pe.kr/
제이스톰 : www.jstorm.pe.kr/

생각하는 자바 (강좌 Good) : http://java.pukyung.co.kr/

자바 튜토리알(영어) : http://java.sun.com/docs/books/tutorial/index.html

스윙 컴포넌트 예제(영어) : http://java.sun.com/docs/books/tutorial/uiswing/components/components.html

MS SQL2000 JDBC 드라이버 다운로드 : http://www.microsoft.com/korea/download/server.asp

자카르타 프로젝트 한글화 : http://jakarta.apache-korea.org/

자바지기 : http://wiki.javajigi.net/

자바지기 eclipse 강좌 : http://wiki.javajigi.net/display/IDE/Eclipse

자바지기 struts 강좌 : http://wiki.javajigi.net/display/FRAMEWORK/Home

이클립시안 : http://eclipsians.net/

자바 카페 : http://www.javacafe.or.kr/

자바 API 예제(영어) : http://javaalmanac.com/egs/

Sun Korea Developer Network : http://kr.sun.com/developers/

IBM Java 입문서 : http://www-128.ibm.com/developerworks/kr/java/newto/

 

==================================================================================

JSP 싸이트

-----------------------------------------------------------------------------------

JSP 스쿨 : http://www.jspschool.com/ (정리 잘됨, 자료실 Good)

OKJSP : http://www.okjsp.pe.kr/ (종류별로 정리잘된 싸이트)

JSP스터디 : http://www.jspstudy.co.kr/ (오른쪽 메뉴중 lecture list 강좌보면 좋다)

AboutJSP : http://aboutjsp.com/ (강좌, 팁, QnA 등)

자북 (소설같은 JSP) : http://www.jabook.org/ (책 소설같은 JSP의 1부, 2부 있음)

까오기 : http://www.kkaok.pe.kr/ (여러 유영한 팁들)

더블 아이큐 : http://www.doubleiq.pe.kr/ (정리된 강좌와 QnA 등 )

김호 JSP : http://www.kimho.pe.kr/jsp/index.html

 

==================================================================================

J2EE 싸이트

-----------------------------------------------------------------------------------

J2EE 스터디 : http://www.j2eestudy.co.kr/

웹로직 관련 문서 등 있는 싸이트 : http://www.itadvisor.co.kr/

 

===================================================================================

아파치 (자카르타) 프로젝트 다운로드 싸이트

-----------------------------------------------------------------------------------

apache (메인 페이지) : http://www.apache.org/

jakarta 페이지 : http://jakarta.apache.org/

 

ant(빌드 도구) : http://ant.apache.org/bindownload.cgi

james (메일) : http://james.apache.org/download.html

james(메일) 직접 다운 : http://ftp.kaist.ac.kr/pub/Apache/james/james-2.2.0.zip

tomcat(톰캣 웹컨테이너) : http://tomcat.apache.org/

 

===================================================================================

SUN SDN 다운로드 싸이트

-----------------------------------------------------------------------------------

javamail (자바 메일) : http://java.sun.com/products/javamail/

jaf (Java Activate Framework) : http://java.sun.com/products/javabeans/jaf/index.jsp

 

 

===================================================================================

홈페이지 관련 싸이트

-----------------------------------------------------------------------------------

태그매니아 : http://www.tagmania.net/

야자바 HTML : http://www.yajava.com/shop/mart7/inc.php?inc=content_main/html

태그조아 : http://www.tag.zoa.to/

ib96 동영상 무료 회원 HTML 강좌 : http://htm.ib96.com/study/index.php

김덕현 : http://my.dreamwiz.com/kim0057/

송파나루터 : http://www.studyho.com/

트리오 : http://trio.co.kr/

송현건 : http://home.introcom.net/~gosoo99/

스타트 홈페이지 : http://www.starthomepage.com/index.jsp

태그야 놀자 : http://www.tagyanolja.com/

컴으로 허자허자(다음카페) : http://cafe.daum.net/herjaherja

태그 연습장(컴으로 허자허자) : http://www.herjaherja.com/bonus/tag.htm

태그 연습장(샐리디카) : http://myhome.naver.com/sallynice/blog/sallyedit.htm

 

========================================================================================

자바스크립트 관련 싸이트

-----------------------------------------------------------------------------------

자바스크립트 정리 Good : http://koxo.com/lang/js/

자바스크립트 인터넷 강의 : http://javascript.ubedu.com/

CGI & JavaScript : http://www.cginjs.com/

JS Guide : http://jsguide.net/ver2/

이용석의 자바스크립트 : http://user.chollian.net/~spacekan/

블루 비 : http://www.blueb.co.kr/

자바방 : http://javabang.net/

학꺼니 홈 : http://user.chollian.net/~chk012/frame.html

까오기(왼쪽 developer 메뉴의 javascript 클릭) : http://www.kkaok.pe.kr/

해피스크립트 : http://www.happyscript.com/

자스코 (유료싸이트) : http://www.jasko.co.kr/

영문 싸이트 : http://www.devguru.com/Technologies/ecmascript/quickref/javascript_index.html

자바스크립트 정리(영어 사이트) : http://www.javascripttoolbox.com/bestpractices/

 

========================================================================================

개발자 참고 싸이트

-----------------------------------------------------------------------------------

웹 개발자 가이드 : http://www.mozilla.or.kr/docs/web-developer/standard/

MSDN 링크 : http://msdn.microsoft.com/library/default.asp

 

=======================================================================================

온라인 해킹/바이러스 진단 및 치료 프로그램(국민은행 제공, 하우리 백신) : http://update.inca.co.kr/kookmin/livecall/kook_livecall.html

=======================================================================================

 

======================================================================================

기타 관련 다운로드 싸이트(JDK, MySQL, 톰캣 등)

======================================================================================

JDK 1.4.x     자바 Development Kit               http://java.sun.com

 

톰캣 : http://tomcat.apache.org/

---------------------------------------------------------------------------------------

MySQL        MySQL 데이터베이스      http://mysql.com

한국 MySQL : http://mysqlkorea.co.kr/

MySQL Connector/J (JDBC Driver for MySQL)   http://dev.mysql.com/downloads/connector/

 

MySQL-Front : http://www.mysqlfront.de/download.html

SQLyog(MySQL툴) 다운 : http://www.webyog.com/sqlyog/thanks.php

---------------------------------------------------------------------------------------

오라클 9i 링크 : http://www.oracle.com/technology/software/products/oracle9i/index.html

오라클 다운 :

http://download.oracle.com/otn/nt/oracle9i/9201/92010NT_Disk1.zip

http://download.oracle.com/otn/nt/oracle9i/9201/92010NT_Disk2.zip

http://download.oracle.com/otn/nt/oracle9i/9201/92010NT_Disk3.zip

 

 

==================================================================================

All In One Eclipse 이클립스 다운로드

----------------------------------------------------------------------------------

일본어 : http://aioec.sourceforge.jp/cgi-bin/wiki.cgi

영어 : http://aioec.sourceforge.jp/cgi-bin/wiki.cgi?page=english%5Ftop

 

 

==================================================================================

이클립스 eclipse 3.1.1 다운로드 정리

 

WTP 다운 : http://www.eclipse.org/webtools/

 

이클립스 플러그인 순위 : http://eclipse-plugins.info/eclipse/ratings_overview.jsp

 

한국의 미러 싸이트 : http://eclipse.areum.biz/downloads/

 

워크샾 에디터 플러그인 다운로드 (이클립스 JSP 에디터)

 : http://workshopstudio.bea.com/downloadNitroX.do

 

이클립스 스트럿츠 테스트 플러그인 : http://strutstestcase.sourceforge.net/

 

이클립스 DB 관련 플러그인(quantum) : http://sourceforge.net/projects/quantum/

 

(톰캣에서 개발시 유용한 플러그인)

톰캣 플러그인 : http://www.sysdeo.com/sysdeo/eclipse/tomcatplugin

 직접 다운 : http://www.sysdeo.com/sysdeo/content/download/393/4930/file/tomcatPluginV31.zip

tomcatPluginV31.zip 다운 받아서 압축 해제해서

C:\eclipse\plugins 에 복사

 

==================================================================================

자카르타 Ant 한글 싸이트 : http://ant.apache-korea.org/

자카르타 Ant 다운로드 : http://ant.apache.org/bindownload.cgi

다운로드 리스트 : http://archive.apache.org/dist/ant/binaries/

ant 1.5.4 다운 로드 : http://archive.apache.org/dist/ant/binaries/apache-ant-1.5.4-bin.zip

ant 1.6.5 다운 로드 : http://ftp.apache-kr.org/ant/binaries/apache-ant-1.6.5-bin.zip

 

----------------------------------------------------------------------------------------

 

자바스크립트 에디터 : http://sourceforge.net/projects/jseditor
                              http://heanet.dl.sourceforge.net/sourceforge/jseditor/net.sf.wdte.js_0.0.9b.zip

CSS 에디터 : http://www.vasanthdharmaraj.com/Software.aspx?=csseditor

JSEclipse : http://www.interaktonline.com/downloads/eclipse/100/JSEclipse_1.2.1.zip

AnyEdit : http://andrei.gmxhome.de/anyedit/links.html

 

---------------------------------------------------------------------------------------

(스트럿츠)

1. 스트럿츠 다운

http://archive.apache.org/dist/struts/

2. 스트럿츠 직접 다운로드

    http://ftp.apache-kr.org/struts/binaries/struts-1.2.7.zip

    http://mirror.apache.or.kr/jakarta/struts/binaries/jakarta-struts-1.1.zip

(ANT 다운 로드)

http://www.apache.org/dist/ant/

 

---------------------------------------------------------------------------------------

(스트럿츠 참고 싸이트)

자바 프레임워크(네이버 스트럿츠 카페) : http://cafe.naver.com/deve.cafe

 

=======================================================================================

MyClipse 동영상 자료 : http://www.myeclipseide.com/images/tutorials/webprojectdemo.htm

 

=======================================================================================

우키의 블로그 : http://www.jaewook.net/

한글패치 : http://lang.playxp.com/

웹마 : http://www.mdiwebma.com/

jwBrowser : http://samba.ssyy.net/

구글 : http://www.google.co.kr

심파일 : http://simfile.chol.com/

이클립스 : http://www.eclipse.org/

ie toy, ad-free : http://loser.miniwini.com/tt/

자료 : http://baechul.com/cgi/technote/main.cgi?board=pds

브피피닷넷 : http://vbpp.net/

자료 소스 : http://semtle.cuk.ac.kr/bbs/list.php?id=pds

웹빌드 : http://www.webbuild.co.kr

넷탑 : http://www.nettop.pe.kr

파워빌더 유저 가이드 : http://www.pbuser.com/main.html

미친감자 : http://mazinga.egloos.com/

EditPlus 자바 컴파일 설정 : http://www.javacafe.or.kr/lecture/cafeLecture/tool/EditPlusSetting/EditPlusSetting.htm

구글 툴바 : http://toolbar.google.com/T3/intl/ko/index_ie.php

 

==================================================================================

PDA 싸이트

-----------------------------------------------------------------------------------

투데이스피피시 : http://www.todaysppc.com
PDA 프로그램 모음 싸이트 : http://www.fingertool.com/

포인트피디에이 : http://www.pointpda.com

코리아닷컴 피디에이 : http://pda.korea.com/

정리 잘된 싸이트 : http://www.114pda.com/

무료 PDA 소프트웨어(영어) : http://www.freewareppc.com

클리앙 : http://www.clien.net/

PDA용 GPS : http://www.freenavi.co.kr/

PDA용 GPS : http://shop.free-gps.com/

RW6100 드라이버 다운로드 : http://h50177.www5.hp.com/support/FA294PA/drivers/os_2045.html

RW6100 메뉴얼 : http://h50201.www5.hp.com/manual/index.asp

MissPDA : http://www.misspda.com/

아이핸디고(외국의 아방고와 비슷한 한국판 사이트) : http://www.ihandygo.com/

마이폴더 PDA 자료실 : http://pda.myfolder.net/

 

PDA용 뉴스 싸이트 정리 : http://clip.bakion.com/

PPC용 프로그램 개발(영어) : http://www.codeppc.com/

 

==================================================================================

XML 싸이트

-----------------------------------------------------------------------------------

안항준의 XML : http://my.netian.com/~aphise/

XML 스터디 : http://www.xmlstudy.co.kr/

김종민의 XML : http://xml.80port.net/

자바지기 : http://www.javajigi.net/

XML Developer Group : http://xml.geonji.co.kr/

Rapsodie's XML Resource : http://user.chollian.net/~rapsodie/main.html

용어사전과 XML : http://trio.co.kr/

HowXML : http://www.howxml.com/

군산대학교 XML 연구실 : http://xmlab.kunsan.ac.kr/

XML 강좌 링크 : http://www.howon.ac.kr/~ktlim/lecture/xml/xml-index.htm

코리아 인터넷 XML 강좌 : http://korea.internet.com/channel/index.asp?cid=193

XML 홈페이지 만들기 강의 자료 : http://muse.inchon.ac.kr/jschae/internet_xml.html

XML 강의 자료 : http://kuic.kyonggi.ac.kr/~ejlee/xml/#course-note

XML 강의 : http://hyejeon.ac.kr/%7Ekrkuki/xmlq_1.html

자바지기 XML 강좌 : http://wiki.javajigi.net/display/XML/Home

 

==================================================================================

기타 싸이트

-----------------------------------------------------------------------------------

소스들 : http://bluebild.byus.net/

구글툴바 : http://toolbar.google.com/intl/ko/index_ie.php

개인 이글루 싸이트(프로그래밍) : http://kwon37xi.egloos.com/

자카르타프로젝트(?) : http://www.jakartaproject.com/

TDD : http://wiki.tdd.or.kr/wiki.py

CSS : http://ilmol.com/wp/css

DB Desiner 4 :  http://www.fabforce.net/

manwal 블로그 : http://blog.etnews.co.kr/html/blog_home.php?bid=manwal

데이타베이스 사랑 넷 : http://database.sarang.net/

Xrath 블로그 : http://xrath.com/blog/index.php?category=Development

루비 : http://forum.rubykr.org/

루비 홈 : http://www.ruby-lang.org/en/

RDE : http://homepage2.nifty.com/sakazuki/rde_e.html

MMF 플레이어 : http://www.playersparadise.net/download/

누룽지 : http://www.nulunggi.pe.kr/

JavaRSS : http://javarss.pe.kr/

 

========================================================================================

OKJSP 동영상 강좌 : http://www.okjsp.pe.kr/lecture/viewlet/

이클립스 톰캣 디버그 : http://www.okjsp.pe.kr/lecture/viewlet/okjsp2005/10_lomboz_tomcat_debug.html

Xper 위키 : http://xper.org/wiki/xp/

자카르타 한글 번역 : http://jakarta.apache-korea.org/

이클립시안 : http://eclipsians.net/

국현님 싸이트 : http://goodhyun.com/

Jazz Virtual Machine : http://www.jazzvm.net/

 

오라클자바 : http://www.oraclejava.co.kr/

 

JavaJiGi 강좌 1. Eclipse 강좌  2. Struts 강좌 3. XML 강좌

 

빌크 블루엣 인터내셔널에서 운영하는 작은 커뮤니티 : http://www.bilc.co.kr/

구글 바로 가입하기 : http://www.bytetest.com/

larky : http://larky.biz/blog/

mabaji " http://tong.nate.com/mabaji

J2EE Study :  http://www.j2eestudy.co.kr

한국 JBoss 사용자 그룹 : http://www.krjbug.com/

행복한고니 블로그 : http://mygony.com/tt/index.php

주홍넷 : http://www.joohong.net/ (게임기획)

NT FAQ : http://www.ntfaq.co.kr/

해킹 : http://www.ganseo.com/zboard/new_center.php

 

========================================================================================

데이타베이스 관련 싸이트

========================================================================================

오라클 강좌 : http://oracleclub.com/

오라클용 무료 DB 툴 (DBA Master 2000) : http://www.dbany.com/

데이타베이스 정보 : http://www.databaser.net/

Korea Oracle Use Group : http://www.koug.net/

데이터베이스 벤더간 함수, 문법 비교 :  http://www.crossdb.com/dbknowledgebase/differencestable.html

데이타베이스 : http://home.ditco.com/~angel/Advanced/advanced.html

무료 오라클 툴(SmartSQL) : http://smartsql.hubweb.net/

 

========================================================================================

인터넷 서점

========================================================================================

도서가격 비교 (마이마진): http://book.mm.co.kr/

강컴 : http://www.kangcom.com

네이버 책 : http://book.naver.com/

리브로 : http://www.libro.co.kr/books/index.asp?mall_id=1

알라딘 : http://www.aladdin.co.kr/home/wbookmain.aspx

모닝365 : http://www.morning365.com/

반디앤루니스 : http://www.bandibook.com/

yes24 : http://www.yes24.com

교보 : http://www.kyobobook.co.kr/

 

========================================================================================

파이썬 관련 싸이트

========================================================================================

파이썬 문서고 : http://home.paran.com/johnsonj/

Python : http://www.python.org/

왕초보를 위한 파이썬 : http://turing.cafe24.com/

 

========================================================================================

C 컴파일러 다운로드

========================================================================================

C++ 다운로드 : http://turboc.borlandforum.com/impboard/attach/0000043200/tc++win31.zip

MS Visual C++ Toolkit 2003 : http://msdn.microsoft.com/visualc/vctoolkit2003/

볼랜드 BC++ 컴파일러 : http://www.borland.com/products/downloads/download_cbuilder.html

아래의 Compiler 라고 써있는 링크를 클릭하면 다운로드 받을 수 있음. Compiler Windows 5.5 08/24/2000 8.7 Mb


무료 C++ 컴파일러 DevC++ : http://turboc.borlandforum.com/impboard/attach/0000071056/devcpp4990setup.exe

 

========================================================================================

프로그램 소스 모음 링크

========================================================================================

생각하며 배우는 C++ 소스 링크 : http://www.hanbitbook.co.kr/example/1277/

알기쉽게 풀어쓴 웹로직과 EJB 소스 : http://www.hanbitbook.co.kr/exam/1278

자바5.0 프로그래밍 소스(한빛미디어) : http://hanbitbook.co.kr/example/1377/

 

인포북 소스 : http://www.infopub.co.kr/info/pds/group_pds/bbs.asp

정보문화사 소스 : http://www.infopub.co.kr/jungbo/pds/group_pds/bbs.asp

영진 프로그래밍 소스 링크 : tp://board3.youngjin.com/bbs/List_new.asp?bbsidx=135

대림 자료실 : tp://www.drbook.co.kr/pds/?pds=1-1

한빛 자료실 : tp://www.hanbitbook.co.kr/old_board/arumari2.html?id=data&n=&s=&query=&t=&kind=&page=0

한빛 미디어 소스 : http://www.hanbitbook.co.kr/exam/

 

========================================================================================

크랙 링크

========================================================================================

http://www.astalavista.box.sk/

http://www.crackdb.com/

 

 

========================================================================================

지도 링크

========================================================================================

네이버 지도 : http://local.naver.com/navermap_browser/?mode=1&init=1

엠파스 지도 : http://map.empas.com/

지도 찾기 : http://www.speednavi.co.kr/searchmap/

지하철 노선도 : http://www.smrt.co.kr/cyberstation/cyberstation.jsp?sv=1&skind=1&goline=undefined

 

========================================================================================

포토샾

========================================================================================

http://www.photoshopq.com/

 

 

========================================================================================

기타

========================================================================================

폭 맞춰 출력하기 : http://www.visiontech.ltd.uk/

(설명 : 인터넷 익스플로러에서 프린트할 때 내용이 폭에 안 맞아 짤릴때 사용하면 좋음)

(방법 : 클릭해서 들어가서 콘트롤 설치한 후 상단 표준단추에 "빨간 W"로 프린트)

 


테이블은 이제 그만 쉬어야할 때 1 : http://ilmol.com/wp/2005/06/09/25/

테이블은 이제 그만 쉬어야할 때 2 : http://ilmol.com/wp/2005/08/15/110/

 

웹에서 테이블을 DIV로 변경 : http://www.qindex.info/Q_drctry/webtools/StylingTable.asp

 

레이아웃을 위해 테이블 사용이 잘못된 이유:문제의 원인, 해결방안 : http://softwant.com/standards/index.php

 

========================================================================================

컴퓨터 싸게 사기

========================================================================================

http://www.pops4u.co.kr/

http://www.assacom.com/

 

========================================================================================

컴퓨터 싸게 사기

========================================================================================

하드웨어 정보 보여주는 유틸 (everest ) 램 종류와 속도가 궁금해서 찾아봤음 :

http://file.naver.com/cgi-bin/simSearchPds.cgi?start=&number=&cat=99&q=everest&w=t&opt=0&x=38&y=13

 

========================================================================================

기타 유용한 정보(?) 잡학지식

========================================================================================

휴면 계좌 통합 조회 : http://www.sleepmoney.or.kr/default_cust.jsp

중국사람이 만든 웹 OS ^^ : http://www.pc2n.com/staticos/index.html

 

========================================================================================

블로그

========================================================================================

네이버 블로그

http://blog.naver.com/swinter8

http://blog.naver.com/drods

http://blog.naver.com/mmfcom

http://blog.naver.com/imcho57

http://blog.naver.com/khd7138

http://blog.naver.com/julymorning4

http://blog.naver.com/geerark

 

엠파스 블로그

http://blog.empas.com/ahnyounghoe/

 

이글루스 블로그

http://kwon37xi.egloos.com/

 

 

=======================================================================================

Eclipse Article
Eclipse 시작
Eclipse 시작하기 : JDK 설치에서부터 Eclipse 다운로드등 Eclipse를 처음 시작하는 개발자들이 알아야하는 내용에 대하여 다루고 있다.

Eclipse에 새로운 플러그인 설치하기 : Eclipse에 새로운 플러그인을 추가하는 방법에 대하여 두가지로 나누어 살펴본다. 또한 새로운 플러그인을 찾을 수 있는 방법에 대해서도 다룬다.

Eclipse 사용시 알아두면 좋은 유용한 단축키 모음

Eclipse 강좌
Eclipse 사용을 위한 동영상 강좌 : Eclipse 3.1이 배포되면서 좋은 동영상 강좌들이 많이 올라와 있다. Eclipse의 많은 기능들을 느끼고 사용해 볼 수 있다.

Eclipse 에서 Middlegen 사용하기 : 프로잭트를 하다보면 Database의 변경이 있을 수 있다. 만일 이러한 상황에서 Hiberanate같은 framework를 사용할 시에 변경될 때마다 해당 xml mapping파일과 java dto 객체를 생성하는 일은 참으로 번거로운 일이 아닐 수 없으며 이러한 비용을 줄이기 위해 eclipse용 plugin으로 middlegen이 나왔습니다.

Eclipse 사용시 유용한 팁
Eclipse 사용시 알아두면 유용한 팁
Eclipse 성능 높히기
Eclipse 기반하에서 Remote Debugging 설정 : Eclipse 기반하에서 Remote Debugging을 실행하는 방법에 대하여 다룬다.

Eclipse With PlugIn
Eclipse에 Web Tools Project 설치 및 사용방법 : 지금까지 Eclipse에서 불편하게 느꼈던 웹 개발의 편의성을 향상 시켜줄 막강한 플러그인에 관한 설치에서부터 다양한 툴들을 사용방법에 대하여 다룬다.

Eclipse에 Tomcat Server플러그인 설치하기
Eclipse에 JRUN Server플러그인 설치하기
Eclipse에 JBoss Server플러그인 설치하기
Eclipse에 Lomboz플러그인 설치하기 1
Eclipse에 Lomboz플러그인 설치하기 2

Eclipse With 버전 관리 시스템
CVS 설치와 Eclipse와의 연동
Eclipse와 CVS과 연결하여 사용하기
[Eclipse와 CVS를 이용하여 팀 작업하기]

Subversion 설치 및 Eclipse와의 연동

Visual Source Safe 설치와 Eclipse와의 연동


 


Children   Hide Children | View in hierarchy
Eclipse에 Web Tools Project 설치 및 사용방법 (통합 개발 환경)
Eclipse 시작하기 (통합 개발 환경)
Eclipse에 새로운 플러그인 설치하기 (통합 개발 환경)
Eclipse 사용시 알아두면 좋은 유용한 단축키 모음 (통합 개발 환경)
Eclipse 사용시 알아두면 유용한 팁 (통합 개발 환경)
Eclipse 성능 높히기 (통합 개발 환경)
Eclipse에 Tomcat Server플러그인 설치하기 (통합 개발 환경)
Eclipse에 JRUN Server플러그인 설치하기 (통합 개발 환경)
Eclipse에 JBoss Server플러그인 설치하기 (통합 개발 환경)
Eclipse에 Lomboz플러그인 설치하기 1 (통합 개발 환경)
Eclipse에 Lomboz플러그인 설치하기 2 (통합 개발 환경)
CVS 설치와 Eclipse와의 연동 (통합 개발 환경)
Eclipse와 CVS과 연결하여 사용하기 (통합 개발 환경)
Subversion 설치 및 Eclipse와의 연동 (통합 개발 환경)
Visual Source Safe 설치와 Eclipse와의 연동 (통합 개발 환경)
Eclipse 에서 Middlegen 사용하기 (통합 개발 환경)
Eclipse 기반하에서 Remote Debugging 설정 (통합 개발 환경)

 

java.net과 이클립스를 이용한 오픈소스 자바 어플리케이션 개발
이 튜토리얼은 이클립스를 소개하고 이를 활용하여 java.net에 호스팅 된 자바 어플리케이션 개발에 대해 살펴봅니다.


1부. 이클립스에서 새로운 프로젝트 생성하기
2부. 이클립스와 CVS를 이용한 팀 개발


=======================================================================================

 

자바를 닷넷으로 바꿔주는 프로젝트 (MS)  :

              http://msdn.microsoft.com/vstudio/downloads/tools/jlca/default.aspx

 

닷넷을 자바로 바꿔주는 프로젝트(라이브러리, 넷빈즈 플러그인) : https://net2java.dev.java.net/

 

 

HTML, JavaScript, ASP 등 :  http://www.dragoneye.co.kr/

 

웹 기획 문서 링크 : http://www.ihelpers.co.kr/webdevdoc/index.php

기획 찜 : http://plan.jjim.com/

 

=======================================================================================

 


사이버유 강의실 
 
Ⅰ. 인터넷기초 & 홈페이지 
 
  인터넷과 전자상거래
  홈페이지만들기(HTML)


Ⅱ. 시스템&프로그램 설치 
 
  퍼스널 웹서버(PWS) 설치
  액세스로 데이터베이스 만들기
  MS-SQL 서버설치 및 운영
  리눅스에서 MAP 설치
  오디비씨(ODBC) 설정


Ⅲ. 자바(Java) 프로그래밍 
 
  자바 프로그래밍
  자바이야기 [※ 음성강의]
  자바 웹프로그래밍(JSP) [※ 음성강의]
  웹 정보추출 에이전트


Ⅳ. 데이터베이스(DB) 
 
  구조적 질의어 (SQL)
  Oracle DBMS & SQL (Link)
 
  MySQL for Linux
 
Ⅴ. C언어 프로그래밍 
 
  C 언어 프로그래밍 (권수태,황인수)
  Unix & C Language
  CGI 프로그램의 개념과 폼 태그
  CGI 기초와 CGI 예제


Ⅵ. 액티브서버페이지(ASP) 프로그래밍 
 
  ASP(Active Server Pages) 기초
 
   | ASP란? | ASP 문법 | ASP 객체 |
  웹과 디비연동 프로그래밍
  파일 업로드(Upload) (기초, 예제)
  ASP와 비주얼 베이직 함수
  예제로 배우는 ASP 프로그래밍
   | 사용자인증 | 방명록 | 게시판 |


Ⅶ. 강의자료(PPT) 
 
  경영정보시스템             [ MIS의 이해 ] 
  의사결정지원시스템
  시스템분석 및 설계
  데이터베이스
  자바 프로그래밍
  컴퓨터기초및언어
 

 

 

emwac 설치 : http://empire.achor.net/v7/lesson/win2000/

Oracle Database 10g: The Top 20 Features for DBAs :

   http://www.oracle.com/technology/pub/articles/10gdba/week5_10gdba.html

 

손병목의 지식공유 : http://www.itmembers.net/

 

apmsetup (아파치 PHP MySQL 한방에 설치) : http://www.apmsetup.com/

 

 

========================================================================================

번역

========================================================================================

구글 번역 : http://www.google.co.kr/language_tools?hl=ko

알타비스타 번역 : http://babel.altavista.com/translate.dyn

icanread 영어 번역 : http://www.icanread.co.kr/ektran/ektran.html

 

짧은 문장 번역 : http://standard.beta.amikai.com/amitext/indexUTF8.jsp

영어 문장 번역 : http://ns.cnenews.net/ek-web/cgi-bin/sentTrans-ek

영어/일본어 단문 번역 : http://gtlac.keric.or.kr/cm_menu/home/translate/english.jsp

 

한중일 번역 : http://www.infoseek.co.jp/Honyaku?pg=honyaku_top.html

야후 바벨피쉬 무료 번역 : http://kr.babelfish.yahoo.com/

 

 

========================================================================================

유용한 링크

========================================================================================

nullsoft 인스톨 프로그램(무료) : http://nsis.sourceforge.net/Main_Page

JBoss IDE tutorial : http://docs.jboss.com/jbosside/tutorial/build/en/html/index.html

자바지기 위키 WIKI : http://wiki.javajigi.net/homepage.action

지하철(버스) 노선 검색 : http://websubway.co.kr/subway/

 

===========================================================================

JBuilder 2005 Foundation - 완전무료 자바 개발툴

===========================================================================

완전히 무료로 쓸 수 있는 자바 개발툴, JBuilder 2005 Foundation입니다. 심지어 등록조차 필요가 없습니다.
J빌더의 가장 기본적인 기능만 있지만, 그래도 같은 무료 배포인 이클립스보다는 강력하다고 하네요.

윈도우용 설치프로그램/문서/예제
http://file.borlandforum.com/jbuilder/JBuilder2005Foundation/jb2005_fnd_windows.zip
http://file.borlandforum.com/jbuilder/JBuilder2005Foundation/jb2005_fnd_docs_windows.zip
http://file.borlandforum.com/jbuilder/JBuilder2005Foundation/jb2005_fnd_samples_windows.zip

리눅스용 설치프로그램/문서/예제
http://file.borlandforum.com/jbuilder/JBuilder2005Foundation/jb2005_fnd_linux.tar.gz
http://file.borlandforum.com/jbuilder/JBuilder2005Foundation/jb2005_fnd_docs_linux.tar.gz
http://file.borlandforum.com/jbuilder/JBuilder2005Foundation/jb2005_fnd_samples_linux.tar.gz

솔라리스용 설치프로그램/문서/예제
http://file.borlandforum.com/jbuilder/JBuilder2005Foundation/jb2005_fnd_solaris.zip
http://file.borlandforum.com/jbuilder/JBuilder2005Foundation/jb2005_fnd_docs_solaris.zip
http://file.borlandforum.com/jbuilder/JBuilder2005Foundation/jb2005_fnd_samples_solaris.zip

맥용 설치프로그램/문서/예제
http://file.borlandforum.com/jbuilder/JBuilder2005Foundation/jb2005_fnd_mac.zip
http://file.borlandforum.com/jbuilder/JBuilder2005Foundation/jb2005_fnd_docs_mac.zip
http://file.borlandforum.com/jbuilder/JBuilder2005Foundation/jb2005_fnd_samples_mac.zip

Extras - Ant 1.6.2
http://file.borlandforum.com/jbuilder/JBuilder2005Foundation/jb2005_fnd_extras.zip

 


eclipse WTP J2EE Tutorials
 Building a CMP Based School Schedule Web Application
 This tutorial is similar to the Building a School Schedule Web Application except EJBs are used. This tutorial walks the user through developing a Container Managed Entity Bean (CMP) to store a simple schedule. A Session Bean is used to query the CMP. Finally, a Servlet and JSP are built to serve as the front end. 
 Building and Running a Web Application
 This document is the first in a series of tutorials where we will demonstrate how you can use the rich set of tools and APIs that comes with the Web Tools Platform Project. This first tutorial will give you a step by step tour of using some the tools for web development. For this purpose we will build and run a J2EE web application using WTP tools and Apache Tomcat. 
 Building a School Schedule Web Application
 In this tutorial you will create a school schedule Web application. This application will allow students to input their courses and create a schedule. This tutorial will introduce you to JSP's, servlets and the Web Tools Platform project's server tools. 
 Building a Simple EJB Application
 In this tutorial you will create a simple EJB component and a client web application. This tutorial will introduce you to Session beans and the Web Tools Platform project's support for XDoclet and server tools. 
 Cactus Integration in the Web Tools Project
 This article briefly explains Cactus, its common uses and advantages and then provides a step-by-step tutorial on how to use the Cactus integration provided by WTP. The article assumes that you are familiar with JUnit and the basics of using WTP to build, deploy and run web projects. 
 Deploy Web Applications to the Oracle Application Server
 This tutorial will step you through the details of deploying a Web Application to the Oracle Application Server Containers for J2EE (OC4J). 

 


SDN JCreater Tutorial : http://developers.sun.com/prodtech/javatools/jscreator/learning/tutorials/index_ko.jsp

 

eclipse plugin : http://eclipse-plugins.2y.net/eclipse/plugins.jsp

 

struts-console : http://www.jamesholmes.com/struts/console/

 

JSTL : http://jakarta.apache.org/taglibs/index.html

 

JSTL 강좌 1(한글) : http://www-128.ibm.com/developerworks/kr/library/j-jstl0211.html#N1007F

JSTL 강좌 2(한글) : http://www-128.ibm.com/developerworks/kr/library/j-jstl0318/

JSTL 강좌 3(영어) : http://www-128.ibm.com/developerworks/java/library/j-jstl0415/

JSTL 강좌 4(영어) : http://www-128.ibm.com/developerworks/java/library/j-jstl0520/

 

struts guide(영어) : http://struts.apache.org/1.x/struts-taglib/index.html

스트럿츠 번역(한글판) : http://jakarta.apache-korea.org/struts/index.html

 

struts로 웹 개발 1 : http://korea.internet.com/channel/content.asp?kid=17&cid=188&nid=27686

struts로 웹 개발 2 : http://korea.internet.com/channel/content.asp?kid=17&cid=188&nid=27687

struts로 웹 개발 3 : http://korea.internet.com/channel/content.asp?kid=17&cid=188&nid=27688

struts로 웹 개발 4 : http://korea.internet.com/channel/content.asp?kid=17&cid=188&nid=27703

 

opencapture 제작자 싸이트 : http://openproject.nazzim.net/

 

exadel 개발툴 강좌(이클립스용) : http://www.exadel.com/web/portal/products/Tutorials

 

하이버네이트 관련 블로그 : http://blog.naver.com/jdkim528

 

유용한 무료 유틸 : http://www.tnk-bootblock.co.uk/software/

 

유용한유틸들(한글) : http://outofbell.hihome.com/myprog/program.html

 

영어사전(ajax) : http://www.nalbam.com/dic.htm

 

MyEclipse 크랙 : http://www.astalavista.us/search.php?s=my+eclipse&Submit=Search


볼랜드 투게더 무료(커뮤니티 버젼) : http://togethercommunity.co.kr/together/

 

:
Posted by 라면스프

출처 : http://cocoadev.co.kr/


iPhone 어플리케이션은 Xcode란 개발툴에서 코코아터치 프레임워크와 Objective-C 언어를 사용하여 개발합니다. 코코아 터치는 맥 OS X의 핵심 프레임워크인 코코아를 기본으로 아이폰/터치라는 모바일 기기의 특성에 맞추어진 iPhone 개발의 기본 API입니다.

그렇기 때문에 아이폰 어플리케이션 개발을 위해 기본적으로 알아야할 사항은 통합개발 환경인 Xcode와 인터페이스 빌더라는 툴의 사용법, Cocoa Touch 프레임워크, Objective-C 크게 세가지입니다. 이번에는 간단히 iPhone OS의 계층구조를 중심으로 iPhone 어플리케이션 제작을 위해 접근하는 방법에 대해서 알아 보겠습니다.

1. iPhone OS 계층 구조
아래의 그림은 애플에서 설명하는 아이폰 OS의 기술 계층입니다. 이에 대한 자세한 내용은 아이폰 개발자 센터iPhone OS Technology Overview란 문서에 잘 정리되어 있습니다.


가장 로우레벨의 Core OS부터 가장 상위단계인 코코아 터치까지의 계층구조입니다. 주로 하단은 API가 C로 제공되며 상위로 올라 오면서 Objective-C로 제공됩니다. 많이 사용되는 로우레벨의 API들은 상위단계에서 쉽고 편하게 사용할 수 있는 프레임워크로 제공됩니다. 간 계층의 간단한 설명은 아래와 같습니다.

1) Core OS
메모리/프로세서 관리, 파일 시스템, 네트워크, 각종 하드웨어 드라이버등, 운영체제 하단의 커널 레벨에서 제공하는 커널 API 입니다. 흔히 이야기하는 시스템 프로그래밍에 관련된 C를 기반으로 한 라이브러리를 제공합니다.

2) Core Services
Core Foundation, CFNetwork, SQLite, POSIX threads와 같은 파일입출력, 저수준 데이터 타입, 소켓등에 관련된 서비스입니다. Core OS 레벨에 비교적 쉽게 접근할 수 있는 API를 제공합며 대부분 C로된 프레임워크를 제공됩니다. 여기서 제공하는 많은 기능들은 상단 코코아터치의 Foundation Framework에서 Objective-C 프레임워크로 제공됩니다.

  • Core Foundation - 배열, 스트링, 날짜, URL, 로우레벨 데이터등 아이폰 어플리케이션을 위한 기본적인 C API를 제공합니다.
  • CFNetwork - BSD 소켓 및 HTTP, FTP 프로토콜등 네트워크에 쉽게 접근할 수 있는 API를 제공하는 프레임워크입니다.
  • Core Location - GPS, 주변검색등에 사용할 수 있는 사용자의 현재 위치(위도, 경도) 정보와 관련된 API를 제공하는 프레임워크입니다.
  • SQLite - 아이폰 어플리케이션에서 쉽게 사용할 수 있는 파일기반의 경량 데이터베이스 입니다. SQLite에 관련된 보다 자세한 내용은 이전 포스팅을 참조해 주세요.
  • XML - XML 파싱을 위한 libXML2 라이브러리를 제공합니다.

이외에 보안, 주소록등에 관련된 서비스를 제공합니다.

3) Media
비디오, 오디오, 2D/3D 그래픽, 에니메이션을 구현할 수 있는 API를 제공합니다. Objective-C 또는 C로된 API를 제공합니다.

  • Quartz - OS X의 벡터를 기반으로 한 그래픽 엔진입니다. 선과 도형을 그리고 이미지, 비트맵, PDF를 출력하고 색상, 위치에 관련된 C로된 API를 Core Graphic 프레임워크를 통해 제공합니다.
  • Core Animation - 각종 에니메이션과 시각효과를 제공하는 Objective-C로된 프레임워크입니다.
  • OpenGL ES - 게임등과 같은 고성능의 2D/3D 그래픽 출력을 위한 OpenGL ES 1.1에 기반한 C 프레임워크입니다. OpenGL ES를 사용한 게임은 이를 지원하는 다양한 모바일 플랫폼에서의 포팅을 쉽게 할 수 있습니다. 자세한 내용은 공식 홈페이지를 참조하시기 바랍니다.
  • Core Audio - 마이크를 통해 녹음하고 음악파일을 출력하고 각종 음향효과를 제공하는 C로된 오디오 관련 프레임워크입니다.
  • OpenAL - OpenGL ES와 유사한 개념의 크로스 플랫폼을 지원하는 게임등을 위한 고성능 3D 오디오 라이브러리입니다. 자세한 내용은 공식 홈페이지를 참조 하시기 바랍니다.
  • 동영상 - mov, mp4, 3gp와 같은 각종 동영상 파일을 출력을 지원합니다. 이는 Objective-C를 기반으로 한 Media Player framework를 이용하여 손쉽게 접근할 수 있습니다.

4) Cocoa Touch
iPhone개발의 기본이 되는 계층으로 Objective-C를 기반으로 한 핵심적인 두개의 프레임워크를 가지고 있습니다. 사용자 인터페이스, 이벤트 처리등과 함께 위에서 언급한 로우레벨의 기술들을 보다 쉽게 사용할 수 있는 프레임워크를 제공합니다.

  • Foundation Framework - 배열, 스트링, 날짜 로우레벨 데이터등에 관련된 클래스를 제공하는 기본적인 프레임워크입니다. 위의 Core Foundation에서 제공하는 기본 API들의 Objective-C 레퍼 클래스를 제공합니다.
  • UIKit Framework -각종 컨트롤, 윈도우등의 UI, 이벤트 처리등 iPhone 어플리케이션의 사용자 인터페이스와 관련된 API를 제공하는 프레임워크입니다.


2. Mac or iPhone
Mac의 Cocoa와 iPhone의 Cocoa touch는 이름에서 부터 알 수 있듯이 매우 비슷합니다. 가장 큰 차이점은 역시 인터페이스에 관련된 부분으로 이와 관련하여 Mac에서는 AppKit이란 프레임워크를 iPhone에서는 UIKit이란 프레임워크를 제공합니다.

Foundation Framework는 거의 유사하지만 아이폰의 특성상 제거 또는 변경된 부분이 있습니다. 아이폰은 코코아 바인딩, Objective-C 2.0의 가비지 컬렉션, 애플스크립트, NSUndoManage등은 지원하지 않습니다.

개인적으론 시간이 충분하다면 맥에서 코코아 프로그래밍으로 시작한 후에 코코아 터치로 넘어가도 큰 어려움은 없을 것 같습니다.


3. C or Objective-C
대표적인 코코아 프로그래밍 서적인 Cocoa Programming for MAC OS X (번역본:코코아 프로그래밍)의 저자 아론 힐리가스는 그의 저서에서 아래와 같이 이야기 했습니다.

"C와 Java/C++같은 객체지향 언어를 알고 있다면 두시간이면 Objective-C를 마스터할 수 있다"

OOP와 프로그래밍 언어에 대한 개념만 있다면 Objective-C를 익히는 것은 쉽다라는 의미인 것 같습니다.

사실 어느 언어나 기본지식만 있으면 언어 자체를 익히는데는 그다지 어려움이 없습니다. 하지만 해당 플랫폼에 대한 지식과 핵심 라이브러리나 프레임워크를 배우는데 더욱 많은 시간을 소비해야 합니다. 아이폰도 Xcode, 인터페이스빌더의 사용법, OS X에서의 프로그래밍에대한 이해와 코코아 API를 배우는데 Objective-C 언어 자체를 배우는 것보다 더 많은 시간이 필요합니다.

1) C의 선행학습이 필요한가?
개발경험이 있으신 분들은 그동안의 경험을 바탕으로 어떻게 공부해야 할지 나름대로 방법이 있을 것입니다. 하지만 처음 시작하시는 분들은 Objective-C가 C를 기반으로 하고 있기 때문에, 반드시 C를 공부한 후에 Objective-C를 공부해야하는 지에 대해 질문을 하시는 분들이 있습니다.

이 부분은 아마 많은 분들이 차이가 있을 것 같습니다. 제 생각은 "반드시 필요하지는 않다" 입니다. Objective-C는 C에서 확장된 슈퍼셋이라고 하지만 Objective-C를 공부하기 위해 반드시 C를 먼저 공부해야 할 필요는 없을 것 같습니다.

C를 이해한 후에 Objective-C를 시작하는 것이 이론상으로도 맞고, 정상적인 방법일 것입니다. 하지만 대부분의 Objective-C 서적이나 메뉴얼에는 기본적인 문법에 대한 설명이 있고, 전문 C 서적보다는 범위가 작습니다. Objective-C를 사용할 수 있을 만큼 최소한의 문법만 알고 시작하는 것이 더 접근이 쉬울 것 같습니다.

아래는 iPhone 어플케이션의 샘플 소스중에 한부분입니다. 기존에 C/C++ 개발자들도 이런 Objective-C의 문법을 처음 보게되면, 이것이 C와 관련이 있고 C에서 확장되었다는 사실이 잘 이해가 가지 않을 것입니다.
 

처음 시작하시는 분이라면 차라리 이런 혼란을 피하고 코코아 어플리케이션을 바로 제작할 수 있는 Objective-C로 시작하는 것도 한 방법이라고 생각됩니다.

2) 접근방법
사실 가장 좋은 것은 아래와 같이 가장 로우레벨단계 부터 이해하고 올라 가는 것이 기초도 탄탄하고 가장 좋은 방법일 것입니다.

  1. 메모리/CPU등 컴퓨터 하드웨어에 대한 이해
  2. OS에 대한 이해
  3. 컴파일러에 대한 이해
  4. C언어
  5. 시스템 프로그래밍
  6. 자료구조/알고리즘
  7. Objective-C
  8. OOP, 디자인 패턴
  9. Cocoa API

위의 단계대로 차례로 지식과 실력을 쌓아서 접근하면 좋겠지만, 당장 아이폰 어플리케이션을 만들고 싶은데 지루하고 많은 시간을 필요로 합니다. 흥미를 잃지 않고 접근하는 방법은 위의 순서와 반대로 접근하는 것입니다.

Objective-C에 대한 메뉴얼을 대충(?) 한번 읽어 보고 바로 책, 웹사이트, 동영상등의 간단한 튜토리얼등을 따라해 보면서 실제 실행되는 모습을 보면 계속 흥미를 유지할 수 있습니다.

그후에 어느정도 감이 생기면 직접 만들고 싶은 어플리케이션을 목표로 잡습니다. 첫 목표는 과한 욕심은 버리고 간단하고 쉬운 어플리케이션 부터 시작합니다. 아무리 간단해도 따라해 보며 만들었던 것과는 달리 원하는 기능을 직접 구현하는 것은 매우 어렵습니다. 자료도 많이 찾아 보아야되고, 다른 샘플 소스에서 복사해 와야 하는 경우도 있고, 관련 커뮤니티를 통해 도움을 받을 수도 있습니다. 관련자료들은 이전의 iPhone 어플리케이션 개발을 위한 준비 - 3. 관련 자료 포스팅을 참고하시기 바랍니다.

우여곡절끝에 만들어 내면 부족한면이나 필요한 부분이 무엇인지 조금씩 보이게 될 것 입니다. 필요에 의해 공부를 하다보면 아마 위의 순서를 거슬러 올라 접근하게 되는 경우가 많을 것 같습니다. 그러면 차차 복잡하고 어려운 어플리케이션을 만들 수 있을 것입니다.

막상 처음 시작하게 되면 알아야 할 것은 많고 답답한 마음만 드실 것입니다. 하지만 안타깝게도 왕도는 없습니다. 흥미와 열정을 유지하면서 차근차근 해 나가다 보면 어느새 바라는 어플리케이션을 만들수 있는 날이 눈앞에 와있을 것 입니다.

간혹 주위에 개발경험이 전혀 없는 분들로 부터 "무엇부터 시작해야 아이폰 어플리케이션을 만들 수 있냐?"는 질문을 들으면서 이와 관련해서 간단히 포스팅을 해보아야 겠다고 생각했습니다.

정리는 해보았는데 역시 어렵네요. 제가 봐도 이상한 용어들만 난무하고 설명도 중구난방이고, 개발을 처음 하시는 분들이 보면 잘 이해가 안가실 것 같다는 생각이 듭니다.

* 관련링크
iPhone 어플리케이션 개발을 위한 준비 - 1. 하드웨어
iPhone 어플리케이션 개발을 위한 준비 - 2. 소프트웨어
iPhone 어플리케이션 개발을 위한 준비 - 3. 관련 자료
iPhone 어플리케이션 개발을 위한 준비 - 4. 시작하기
저작자 표시 비영리 변경 금지

실버라이트는 그동안은 런타임조차 설치를 안했을 정도로 관심이 없었고, 그저 플랙스 비슷한 것이 있나 보다 하고 생각하고 있었습니다.

그러다가 갑자기 호기심이 생겨 이제서야 실버라이트 개발환경을 만들어 보고 잠깐 살펴보았습니다. 실버라이트2는 MS에서 나온 RIA(Rich Internet Application)로, 자세한 설명은 MSDN의 실버라이트 한글문서에 잘 나와 있습니다.

* 참조 사이트
아래의 사이트들에서 개발에 필요한 메뉴얼과 샘플을 얻을 수 있습니다.

  • Silverlight Lean - 실버라이트 공식홈페이지로 다양한 문서들과 동영상 강좌, 튜토리얼등이 있습니다.  
  • MSDN Silverlight - MSDN의 실버라이트 색션입니다. 원하는 항목을 쉽게 찾을 수 있고, 항목별로 간단한 샘플등을 확인할 수 있씁니다.

관련 사이트외에도 CHM버젼의 SDK 도움말도 다운로드 받아 사용하실 수 있습니다.


1. 개발환경 설치
설치는 실버라이트의 공식 홈페이지에서 Get Started 문서를 참조하였습니다. 해당 페이지에는 아래와 같이 관련링크와 함께 간단한 설명이 되어 있어 쉽게 설치를 할 수 있습니다. 



1) Silverlight Tools for Visual Studio 2008 SP1
실버라이트 툴즈를 설치하기 위해서는 먼저 Visual Studio 2008 SP1과 Visual Web Developer Express with SP1가 설치되어 있어야 합니다. 이 패키지는 SDK와 개발 런타임, Visual Studio에 관련 기능과 C#/Visual Basic에서 사용할 수 있는 템플릿들을 설치합니다.

저는 일단 권장하는데로 모두 설치를 하였지만 막상 사용을 해보니, 이 패키지 하나만 설치를 하면 기본적인 실버라이트의 개발은 가능할 것 같습니다.

2) Microsft Expression Blend 2 + SP1
60일 트라이얼 버젼을 설치하여 잠시 실행해 보았습니다. UI를 디자인하고 타임라인등의 용어가 있는 것으로 보아 애니메이션을 제작하는 툴 같습니다. 아마 어도비의 플래쉬와 비슷한 개념의 툴인 것 같습니다.


3) Deep Zoom Composer
이미지 관련툴인 것 같은데 사용해보지는 않았습니다.

4) Silverlight Toolkit
실버라이트 어플리케이션에서 사용할 수 있는 콘트롤, 컴퍼넌트, 유틸리티등이 있다고 하는데 역시 사용해 보지는 않았습니다.

2. 테스트 드라이브
1) 동영상 플레이어
동영상을 플레이, 일시중지, 중지를 할 수 있는 간단한 어플리케이션을 만들어 보았습니다. 이런 개발툴에서는 기본기능의 동영상 플레이어는 간단하게 만들어 볼 수 있기 때문입니다.


2) 프로젝트 생성
VS의 New Project에서 프로젝트 템플릿을 아래와 같이 C# / Silverlight / Siverlight Application으로 선택합니다.
 

그런데 프로젝트를 생성하지 못하고 오류가 발생하였습니다. 검색을하여 보니 관련 내용이 있어  아래와 같이 명령 프롬프트에서 실행하고 해결하였습니다.

C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\devenv.com /resetskippkgs  

3) 소스코드 수정
레이아웃을 지정하는 xaml과 동작을 실행하는 C# 소스파일에 아래와 같이 내용을 추가합니다.

* Page.xaml
<UserControl x:Class="SilverlightMovieTest.Page"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Width="400" Height="330">
    <Canvas x:Name="LayoutRoot" Background="White">
<MediaElement AutoPlay="False" x:Name="mediaPlayer"
Source="[동영상 URL]"
Width="400" Height="300"></MediaElement>

<Button x:Name="btnPlay" Canvas.Top="310" Content="Play"
Width="60" Height="20"/>

<Button x:Name="btnStop" Canvas.Top="310" Canvas.Left="64"
Content="Stop" Width="60" Height="20"/>

</Canvas
</UserControl>
[동영상 URL] 부분에 해당 동영상의 URL을 입력합니다.

* Page.xaml.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;

namespace SilverlightMovieTest
{
    public partial class Page : UserControl
    {
        bool isPlay = false;

        public Page()
        {
            InitializeComponent();

            /* 버튼 이벤트 핸들러 설정 */
            btnPlay.Click += new RoutedEventHandler(PlayButtonClicked);
            btnStop.Click += new RoutedEventHandler(StopButtonClicked);
           
            btnStop.IsEnabled = false;
        }

        /** Play 버튼 클릭 시 */
        void PlayButtonClicked(object sender, RoutedEventArgs e)
        {
            if (isPlay == false)
            {
                mediaPlayer.Play();

                btnPlay.Content = "Pause";
                btnStop.IsEnabled = true;
                isPlay = true;
            }
            else
            {
                mediaPlayer.Pause();

                btnPlay.Content = "Play";
                btnStop.IsEnabled = false;
                isPlay = false;
            }
        }

        /** Stop 버튼 클릭 시 */
        void StopButtonClicked(object sender, RoutedEventArgs e)
        {
            if (mediaPlayer.CurrentState == MediaElementState.Playing)
            {
                mediaPlayer.Stop();
                               
                btnPlay.Content = "Play";
                btnStop.IsEnabled = false;
                isPlay = false;
            }
        }
    }
}


실행을 해보면 아래와 같이 인터넷 익스플로어에서 구동되는 모습을 확인할 수 있습니다.



3. 배포
빌드를 하면 프로젝트명.xap 파일이 생성됩니다. 확장자명을 보면 IIS에서만 실행될 것 같은 느낌이 들지만, 플래쉬의 swf와 같이 로컬의 런타임에서 실행되기 때문에 웹서버와는 상관이 없습니다.

웹사이트에서 실버라이트를 실행하기 위해서는 아래와 같이 HTML을 작성합니다. 자세한 내용은 MSN의 Add Silverlight to Web Page by Using HTML 문서에 잘 나와있습니다. 

<object width="400" height="300" data="data:application/x-silverlight-2," type="application/x-silverlight-2">
    <param name="source" value="./SilverlightMovieTest.xap"/>
 
    <!-- Display installation image. -->
    <a href="http://go.microsoft.com/fwlink/?LinkID=124807"
        style="text-decoration: none;">
        <img src="http://go.microsoft.com/fwlink/?LinkId=108181"
            alt="Get Microsoft Silverlight"
            style="border-style: none"/>
    </a>
</object>  

<!-- Display installation image. --> 아래 있는 HTML은 실버라이트 런타임이 설치되지 않았을 경우에는 우측과 같은 이미지와 링크를 제공합니다.


사실 간단히 맛만 봐서 '실버라이트2 맛보기'란 제목으로 넣고 싶었는데, 맛보기란 제목이 들어가면 제 의도와는 다른 검색어로 들어 오는 분들이 많으셔서 그냥 둘러 보기로 했습니다.

그동안 몇몇 다른 개발툴들에 대해서 '맛보기' 형식으로 쓴 적이 있는데, MS의 개발툴에 관련된 내용은 처음으로 올리는 것 같습니다. 아무래도 블로그 제목대로 맥을 기반으로한 프로그래밍에 관해 다루어야 한다는 생각이 있었던 것 같은데, 이제부터 관심있는 부분은 가리지 않고 올려 볼려고 합니다.

저작자 표시 비영리 변경 금지

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

실버라이트2 둘러보기  (10) 2008/12/16
프로젝트 관리 도구 OpenProj  (2) 2008/03/21
적당히 참견하는 Xcode  (4) 2008/02/25
OS X의 파이썬  (0) 2008/02/20
Java 교육용 프로그램 Greenfoot  (0) 2007/12/23
Xcode에서 Flex - Hello World 작성  (0) 2007/12/12

Xcode를 사용하면서 도움말을 잘 이용하시면 많은 궁금증과 의문점을 쉽게 해소할 수 있습니다. 모르는 것에 대해서 도움말 보다는 구글에서의 검색과 관련 커뮤니티에 질문을 올리는 것은 쉽고 편한 방법일 수는 있어도 장기적으로는 바람직하지  않습니다. 먼저 도움말을 찾아 보고 그래도 답을 찾을 수 없을 때에 비로소 후자의 방법을 택해야 합니다.

다소 늦고 귀찮은 것 같더라도 도움말을 이용하면 원칙에 가까운 답을 얻어 낼 수 있고, 검색하거나 다른 중요한 사항들도 알아낼 수 있습니다. 도움말은 영문으로 되어 있지만 대부분 코드와 간단한 문장이기 때문에 저같이 영어를 잘 몰라도 대부분 쉽게 이해할 수 있습니다.
 
Xcode를 처음 사용하시거나 프로그래밍을 처음 하시는 분들을 위해서 간단하게 도움말을 이용하는 방법을 알아 보겠습니다.

1. Documentation
Xcode의 Help메뉴에서 Document를 클릭하거나 단축키(Shift+Command+Option+?)를 입력하면 아래와 같이 도큐먼트 창이 오픈됩니다.


1) 도움말 다운로드
Xcode의 도움말은 해당항목들을 다운로드 받으신 후에 사용할 수 있습니다. 원하시는 도움말 항목에서 SUBSCRIBE나 GET 버튼을 클릭하여 로컬로 다운로드 받아야 해당 도움말이 활성화 되고 사용할 수 있습니다.

2) 검색어


검색을 위해서는 우측 상단의 Starts With에 검색할 키워드를 입력합니다. 검색어는 &(AND), !(NOT), |(OR) 연산을 지원합니다.

(string | value)  & !format
위와 같은 입력은 string 또는 value를 포함하고 format을 포함하지 않는 항목을 검색합니다.

4) 검색 대상


  • API - 심볼명(클래스, 메소드등)에서 검색합니다.
  • Title - 문서의 제목에서 검색합니다.
  • Full-Text - 문서의 전체 내용에서 검색합니다.

5) 문서 범위


All Doc Sets는 전체문서에서 검색을 하며 우측에는 DOC SETS에서 현재 검색 범위를 표시합니다.

6) 언어 선택


All Languages는 전체 언어(Objective-C, C/C++, Java, Javascript)에서 검색을 합니다. 우측에는 현재 선택된 언어들이 표시되어 있습니다.

전체언어 다음에 선택될 언어들은 위의 API Options 버튼을 클릭하여 선택할 수 있습니다.


7) 검색 조건


검색창에 입력한 문장이 검색될 조건을 지정합니다.

  • Starts With - 입력된 검색어로 부터 시작되는 항목을 출력합니다.
  • Contains - 입력된 검색어가 포함된 항목을 출력합니다.
  • Exact - 입력된 검색어가 일치된 경우만 출력합니다.

2. Research Assistant
Xcode의 Help메뉴에서 Show Research Assistant를 클릭하거나 단축키(Shift+Control+Command+?)를 입력하면 아래와 같이 Research Assistant가 오픈됩니다.


Research Assistant가 오픈되어 있으면 Xcode의 에디터에서 커서가 위치한 곳에 해당항목에 대한 도움말이 있으면 자동으로 위와 같이 간단한 도움말과 관련 API, 문서, 샘플등을 표시해주는 아주 유용한 툴입니다. 듀얼 모니터를 사용하시는 분들은 Xcode 사용시 다른 모니터에 뛰워 놓으시면 편리하게 확인하실 수 있습니다.

3. 기타
1) 도움말 바로가기 (Option + 마우스 더블클릭)
Xcode의 에디터에서 옵션키를 누른 상태에서 레퍼런스 내용을 확인할 단어에다 마우스로 더블클릭을 하면 해당내용이 도큐멘테이션에서 바로 출력이 됩니다.

2) 선언 보기 (Command + 마우스 더블클릭)
Xcode의 에디터에서 커멘드키를 누른 상태에서 변수나 메소드등의 심볼을 클릭하면 해당 변수/메소드가 선언(또는 구현)된 소스파일로 이동합니다.

이외에 Xcode와 도움말에 대한 자세한 내용은 ADCXcode Workspace Guide 문서를 참조하시기 바랍니다.

:
Posted by 라면스프