PRW-2500-1CR
뒤에 1CR 은 멀 뜻하지 모르지만 내가 구매한것은 1CR 모델이다.
T가 들어간 모델은 티타늄 밴드이고 다른 모델 들은 우레탄 밴드 정도
그리고 티타늄 밴드 모델들은 가격이 훨씬 비싸고 본체도 메탈 색상인듯 하다
하지만 실제로 만저 보지 못했으니 알수가 없고
내가 구매한 우레탄 밴드 모델도 위에 베젤도 금속 같고 본체 도 금속 느낌이 난다.
밴드와 버튼과 하단 일부가 플라스틱 같다.
일단 셀프 생일 선물로 구매하고 실제로 사용한지 3일 정도 되었는데 매우 만족하고 있다.
어린 시절 초등 (나는 사실 국민학교 출신) 시절 돌핀 시계가 있었다.
반달 모양에 유리에 하단에 버튼이 두개 있던 모델
그 다음으로 돌핀 다음 버젼 좀 비뚤어진 화면에 아래 위로 버튼이 있었다.
그리고 중딩 시절에 CASIO 크로노 그래프? 트라이 그래프? 여튼 돌핀 보다 훨씬 좋은
특히 백라이트가 화면 전체가 들어오는 EL 백라이트가 적용된 모델
그리고 군대에서 카시오 저가 바늘 시계 이면서 하단에 작은 전자가 있는 모델
그리고 마지막 궁극에 카시오 G샥 초창기 버젼
당시에 어떤 모델인지도 모르고 그냥 동그란 그래프가 두개정도 예전 중딩시절에 카시오와
비슷하고 기능도 비슷하지만 크고 두껍고 튼튼한 기억이 난다.
이게 나의 마지막 전자 시계 였다.
군대에서 사용하다가 제대해서 복학해서도 잘차고 다녔는데.. 당시에 휴대전화가 있어도 이 시계를 잘차고 다녔다. 그런데.. 그런데.. 초등학교 랜설치 아르바이트를 하다가 그만 수돗가에 플러두고 그냥 다른 학교 작업 하러 가는 바람에 잃어 버렸다.
어린 시절에 휴대 전화가 없었던 시절 그리고 고딩 까지 삐삐가 없었기에 시계는 필수 이었고 난 전자 시계 그중에서도 CASIO가 좋았다.
하지만 마지막 G샥을 잃어버린 후 10여년이 지나서 기능 많은 전자 시계를 갖고 싶어졌다.
그러던 중 김병만에 정글에 법칙 같은 걸 보면서 연예인들이 차고 나오는 큼지막한 전자시계를 보면서 다시 전자시계가 갖고 싶어졌다.
그래서 검색에 검색에 고르고 고르고 또 골라서 프로트랙.... PRG...
그러다가 또 전파 수신 PRW...
나의 선택은 PRW-2500 물론 5000이 더 좋아 보이지만 가격에 압박과 많은 기능이 과연 저 작은 LCD에 나올 수 있을까?
해서 이중 LCD 모델 2500을 선택했다.
좋은점
전파 수신이라서 시간이 정확히 맡다.
난 낚시꾼이다. 타이드 그래프가 나온다. 월령도 비슷한 의미로 필요 할지 모른다.
난 캠퍼다 온도계가 된다.
디자인 죽인다.
시계줄이 크지 않아서 나 같은 손목이 얇아도 착용할 수 있고 어울린다.
기압계가 측정 뿐만 아니라 실시간으로 변화 추이가 추적 되는데 이걸로 날씨를 예측 할 수가 있다. 실제로 3일정도 착용했는데 얼추 맞는다.
기압이 저-->고로 가면 흐림에서 점차 맑아지고
고-->저로 가면 맑은 날씨가 흐려진다.
나쁜점
일단 10여년만에 착용이라 그런지 아직 이질감이 있다.
전에 G샥도 크다고 느꼇는데 이거는 좀 더 커서 인지 무게 감이 있다. 팔운동 기능이 있다.
전파 수신이란 것이 실패가 잘된다.
그래서 처음 개봉 했을때 시간이 6초 정도 틀리고 전파수신 수동으로 계속 ERR가 뜨고
안테나 표시도 없고
결국 간신이 성공하고 나니 하루 1번 정도 수신 하는듯 하다.
메뉴얼이 영어라서 한동안 독해 했다.
나침반이 약간 오차가 있는듯하다 아이폰과 비교 할때
메뉴얼에 켈리브레이션 하는 메뉴가 있는 걸로 보아 보정해줘야 하는 듯 한대 그냥 내버려 둔다.
기능이 만치만 사용하기 어렵다. 메뉴얼이 영어라서 아직 숙지를 못했다.
좋은점도 있고 나쁜점도 있지만 난 매우 만족한다.
아주 좋다.
잃어버리지 않고 오래 차야 겠다.
2013년 6월 14일 금요일
2013년 5월 30일 목요일
2012 late 맥미니 가상환경에 설치된 windows 7 체험지수는?
프로세서 6.9
메모리 7.6
그래픽 5.9
게임 그래픽 5.0
하드 디스크 6.6
와우!
엄청난 성능이!!
하나 밖에 남지 않은 윈도우 머신인 lenovo T60 보다 훨 성능이 좋다.
부트 캠프도 날려 버렸다.
은준이 생일 선물로 사준 xbox360에 하고 싶은 fps게임을 하면 되니
구지 mac mini 부트 캠프에 윈도우 구동 할일이 없다 싶어서 바로 제거해 버렸다.
2013년 4월 30일 화요일
xbox360 간단리뷰
우리 아들 은준이 생일선물 xbox360 스타워즈 한정판
사실 키넥트 스타워즈를 엄청 좋아 할 줄 알았는데 은준이가 아직 잘 하지 못한다.
그리고 컨트롤러를 이용하는 게임에 아직 관심을 갖지 않는다.
하지만 언젠가는 아빠랑 같이 놀아 줄거라 믿는다.
현재 6살 은준이에게는 조금 어려운 키넥트다.
한 1년이나 몇 개월은 더 있어야 스타워즈를 잘 할거 같다.
조금은 이른감이있다.
내가 게임을 하는것을 옆에서 구경 하며 좋아 하는데
나는 제다이 수업을 마치고 실전에 들어가니 너무 힘들다.
키넥트 스포츠나 댄스센트럴 등을 데모로 해 보았는데 괞찮다.
구매 하고 싶을 정도다.
엑스박스의 외관은 생각보다 크기가 좀 크다.
무선 컨트롤러는 아주 훌륭했다.
콘솔 게임기를 처음 접해본 나에겐 엄청 신기하고 이렇게 많은 키와 컨트롤이 필요한가 했지만
추억에 고스트리콘 어드벤스 워파이터2 데모를 실행해 보니 모두 필요 했다.
총을 맞으면 진동이 오는게 게임에 몰입도가 한층올라간다. 정말 즐겁다.
은준이 생일 선물인데 내가 더 즐겁다.
하드디스크를 연결하니 어라 인식을 못하는지 아무것도 안보인다.
설정에서 디스크를 구성하고 나니까 30기가로 인식이된다.
맥미니에 연결해 보니 그대로 80기가 하드이고 FAT32로 포멧이 되어 있는데
히든 디렉토리가 몇개 구성되어 있다.
동영상 몇개를 복사해서 엑스박스에 연결하니 훌륭한 미디어 재생기가 된다.
요즘 LED TV는 머 USB디스크로 영화 감상이 되지만 우리집 LCD TV 는 구형이라서 안된다.
IPTV세탑도 여러번 교체 했지만 불안한 플레이, 지원안되는 파일은 갑자기 재부팅도 된다.
해서 구형 맥미니를 xbmc머신으로 TV에 연결해 두었는데 이제 그 일을 엑스박스가 할 듯 하다.
엑스박스로 베를린이라는 영화를 감상했다. 영화도 아주 재미있게 잘 보았다.
영화를 보다 손을 휘저으면 키넥트가 리모컨 역할을 해준다. 정말 편리 하다.
엑스박스를 평가 하자면 게임 재미, 소프트웨어의 완성도, 하드웨어 외관, 그리고 컨트롤러 모든 점에서
나는 매우 만족한다.
다음 세대 엑스박스가 나오기 때문에 지금 시점에서 엑스박스360이라...
그냥 나는 머 지난 게임들 천천히 싸게 구매해서 하고
은준이가 자라면서 아빠랑 같이 FIFA같은 2인 게임을 같이 하며 즐거워 할날을 기다린다.
아직은 키넥트 게임도 제대로 못하고 잊지만.... 언젠가는 아빠 한게임 해요!!!!
하겠지....
사실 키넥트 스타워즈를 엄청 좋아 할 줄 알았는데 은준이가 아직 잘 하지 못한다.
그리고 컨트롤러를 이용하는 게임에 아직 관심을 갖지 않는다.
하지만 언젠가는 아빠랑 같이 놀아 줄거라 믿는다.
현재 6살 은준이에게는 조금 어려운 키넥트다.
한 1년이나 몇 개월은 더 있어야 스타워즈를 잘 할거 같다.
조금은 이른감이있다.
내가 게임을 하는것을 옆에서 구경 하며 좋아 하는데
나는 제다이 수업을 마치고 실전에 들어가니 너무 힘들다.
키넥트 스포츠나 댄스센트럴 등을 데모로 해 보았는데 괞찮다.
구매 하고 싶을 정도다.
엑스박스의 외관은 생각보다 크기가 좀 크다.
무선 컨트롤러는 아주 훌륭했다.
콘솔 게임기를 처음 접해본 나에겐 엄청 신기하고 이렇게 많은 키와 컨트롤이 필요한가 했지만
추억에 고스트리콘 어드벤스 워파이터2 데모를 실행해 보니 모두 필요 했다.
총을 맞으면 진동이 오는게 게임에 몰입도가 한층올라간다. 정말 즐겁다.
은준이 생일 선물인데 내가 더 즐겁다.
하드디스크를 연결하니 어라 인식을 못하는지 아무것도 안보인다.
설정에서 디스크를 구성하고 나니까 30기가로 인식이된다.
맥미니에 연결해 보니 그대로 80기가 하드이고 FAT32로 포멧이 되어 있는데
히든 디렉토리가 몇개 구성되어 있다.
동영상 몇개를 복사해서 엑스박스에 연결하니 훌륭한 미디어 재생기가 된다.
요즘 LED TV는 머 USB디스크로 영화 감상이 되지만 우리집 LCD TV 는 구형이라서 안된다.
IPTV세탑도 여러번 교체 했지만 불안한 플레이, 지원안되는 파일은 갑자기 재부팅도 된다.
해서 구형 맥미니를 xbmc머신으로 TV에 연결해 두었는데 이제 그 일을 엑스박스가 할 듯 하다.
엑스박스로 베를린이라는 영화를 감상했다. 영화도 아주 재미있게 잘 보았다.
영화를 보다 손을 휘저으면 키넥트가 리모컨 역할을 해준다. 정말 편리 하다.
엑스박스를 평가 하자면 게임 재미, 소프트웨어의 완성도, 하드웨어 외관, 그리고 컨트롤러 모든 점에서
나는 매우 만족한다.
다음 세대 엑스박스가 나오기 때문에 지금 시점에서 엑스박스360이라...
그냥 나는 머 지난 게임들 천천히 싸게 구매해서 하고
은준이가 자라면서 아빠랑 같이 FIFA같은 2인 게임을 같이 하며 즐거워 할날을 기다린다.
아직은 키넥트 게임도 제대로 못하고 잊지만.... 언젠가는 아빠 한게임 해요!!!!
하겠지....
2013년 4월 29일 월요일
iOS 프로그래밍 팁 - fastpdfkit 사용하기
ALTIBASE HDB Manual app
https://itunes.apple.com/us/app/altibase-hdb-manual/id597190444?l=ko&ls=1&mt=8
처음 만들때는 QuartzCore 이용해서 pdf를 다루는 API를 직접 이용해서 작성해 보았다.
확대 축소 부 터 해서 제스처에 의한 페이지 컨트롤
모든 게 부 자연스러웠고
인터넷에서 PDF 를 다루는 코드 들을 조합해서 나름 만들었지만 매우 불안정했다.
특히 검색 속도는 너무 느렸다.
http://support.fastpdfkit.com/kb/how-to/three-minutes-implementation-guide
fastpdfkit이라는 라이브러를 이용해서 바로 프로그램을 업데이트 했다.
성능 속도 모든 면에서 우수하다.
단 무료 버전에 경우 로고가 잠시 뜨지만
간단한 PDF를 보여주어야 할 경우에 이를 이용하는 것이 좋은 듯 하다.
위 링크 3분 가이드를 그대로 한다면 어렵지 않게 구현 가능 할 것이다.
실제로 ALTIBASE HDB Manual app에서
ManualViewController.h
ManualViewController.m
테이블 뷰 선택 시 파일이름과 페이지 번호만 넘기면 된다.!!
id key = [keys_ objectAtIndex:indexPath.section];
NSString * filename = [[filename_ objectForKey:key] objectAtIndex:indexPath.row];
if (pageNum == 0) {
pageNum = 1;
}
-(void)actionOpenPlainDocument:(NSString *)docName withPage:(NSInteger)pageNum{
pdfViewController.startingPage = pageNum;
[userDefault synchronize];
[pdfViewController release];
}
https://itunes.apple.com/us/app/altibase-hdb-manual/id597190444?l=ko&ls=1&mt=8
처음 만들때는 QuartzCore 이용해서 pdf를 다루는 API를 직접 이용해서 작성해 보았다.
확대 축소 부 터 해서 제스처에 의한 페이지 컨트롤
모든 게 부 자연스러웠고
인터넷에서 PDF 를 다루는 코드 들을 조합해서 나름 만들었지만 매우 불안정했다.
특히 검색 속도는 너무 느렸다.
http://support.fastpdfkit.com/kb/how-to/three-minutes-implementation-guide
fastpdfkit이라는 라이브러를 이용해서 바로 프로그램을 업데이트 했다.
성능 속도 모든 면에서 우수하다.
단 무료 버전에 경우 로고가 잠시 뜨지만
간단한 PDF를 보여주어야 할 경우에 이를 이용하는 것이 좋은 듯 하다.
위 링크 3분 가이드를 그대로 한다면 어렵지 않게 구현 가능 할 것이다.
실제로 ALTIBASE HDB Manual app에서
ManualViewController.h
ManualViewController.m
#import <UIKit/UIKit.h>
#import <FastPdfKit/FastPdfKit.h>
@class MFDocumentManager;
@interface ManualViewController : UIViewController <UITableViewDataSource, UITableViewDelegate, MFDocumentViewControllerDelegate>
{
UITableView * tableView_;
NSArray *keys_;
NSDictionary * datasource_;
NSDictionary * filename_;
}
-(void)actionOpenPlainDocument:(NSString *)docName withPage:(NSInteger)pageNum;
@end
ManualViewController.m
/테이블 뷰 선택
- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
// PDFViewController * pdfviewController = [[[PDFViewController alloc] init]autorelease];
NSString * filename = [[filename_ objectForKey:key] objectAtIndex:indexPath.row];
//pdfviewController.filename = filename;
//현재 페이지 번호 전달
NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];
NSInteger pageNum = [userDefault integerForKey:filename];if (pageNum == 0) {
pageNum = 1;
}
[self actionOpenPlainDocument:filename withPage:pageNum];
//pdfviewController.currentPage = pageNum;
//[self.navigationController pushViewController: pdfviewController animated:YES];
[tableView deselectRowAtIndexPath:indexPath animated:YES];
}
/** Set document name */
NSString *documentName = docName;
/** Get temporary directory to save thumbnails */
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
/** Set thumbnails path */
NSString *thumbnailsPath = [[paths objectAtIndex:0] stringByAppendingPathComponent:[NSString stringWithFormat:@"%@",documentName]];
/** Get document from the App Bundle */
NSURL *documentUrl = [NSURL fileURLWithPath:[[NSBundle mainBundle]pathForResource:documentName ofType:@"pdf"]];
/** Instancing the documentManager */
MFDocumentManager *documentManager = [[MFDocumentManager alloc]initWithFileUrl:documentUrl];
/** Instancing the readerViewController */
ReaderViewController *pdfViewController = [[ReaderViewController alloc]initWithDocumentManager:documentManager];
/** Set resources folder on the manager */
documentManager.resourceFolder = thumbnailsPath;
/** Set document id for thumbnail generation */
pdfViewController.documentId = documentName;
//pdfViewController.page = pageNum;
/** Present the pdf on screen in a modal view */
//[self presentModalViewController:pdfViewController animated:YES];
[self.navigationController pushViewController: pdfViewController animated:YES];
//현재 페이지 번호 저장
NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];
[userDefault setInteger:pdfViewController.page forKey:docName];[userDefault synchronize];
/** Release the pdf controller*/
}
2013년 4월 27일 토요일
iOS 프로그래밍팁 - XCode Analyze 이용하기 (정적 분석)
XCode 에서 Product -> Analyze
static analyze 기능이 포함 되어 있다.
이 기능을 이용해서 문제점을 찾아 작업을 할 수도 있다.
Codesonar 나 SPARROW 같은 정적 분석툴을 XCode에서는 사용할 필요가 없겠다.
아주 훌륭한 정적 분석기가 내장되어 있는 XCode 정말 아름답다.
이 기능을 모르던 시절에 작업한 프로젝트를 돌려 보니 다양한 문제점을 보여준다.
아래는 그러한 유형을...
이걸 보면 코드를 아름답게 다시 작성 할수 있다.
1. Memory Potential leak : 잠재적 메모리 누수
request 객체가 잠재적인 메모리 누수가 있음을 알려준다.
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:
[NSURL URLWithString:[NSString
.... 생략
--> autorelease를 추가 해야 한다.
2. Logic error : 논리 오류
3. Optimization 사용하지 않는 객체를 Class 선언시 멤버로 가지고 있다.
4. Dead Store : 설정만 하고 사용하지 않는 변수
iOS 프로그래밍 팁 - Objective - C 메모리 관리
ARC 옵션을 끄고 프로그래밍을 했고
수동으로 메모리 관리를 했는데
그래도 알고 넘어 가자
retainCount : 객체 혹은 인스턴스의 변수가 특정 메모리 공간을 참조 하고 있는가를 나타내는 정수
alloc : 생성된 객체에 메모리 공간을 할장한다.
retain : 객체가 메모리 공간을 참조 하고 있다는 사실을 iOS에 알린다. reationCount를 1증가 시킨다.
release : retainCount 1감소 시킨다.
dealloc : 메모리 공간을 참조하고 있는 모든 객체가 더는 해당 메모리 공간을 사용하지 말라는 명령을 내린다. retainCount = 0
retainCount 값이 1또는 그이상이면 iOS는 메모리 공간을 소유하고 사용할수 있다.
retainCount 값이 0이 될경우 공간에 대한 소유권을 반환받아 할당되었던 메모리 공간을 회수 한다.
약한 참조 (weak reference)
Foo * myFooOne = [[Foo alloc[ initWithName:@"James"];
Foo * myFooTwo = myFooOne //<--- 약한 참조
[myFooOne release];
//myFooTwo 사용시 런타임 에러 발생
Foo * myFooOne = [[Foo alloc[ initWithName:@"James"];
Foo * myFooTwo = myFooOne //<--- 약한 참조
[myFooTwo retain]; //<-- 해주어야
[myFooOne release];
//myFooTwo 이용가능
프로퍼티 속성
strong --> retain 과 거의 같다.
weak 는 assign 키워드 처럼 retainCount를 증가 시키지 않는다.
assign과는 다르게 참조하는 객체가 해제(deallocated)되면 weak로 선언된 프로퍼티는 자동으로 nil이 대입된다
ARC가 없던시절
reain --> strong
assing --> weak
라고 이해 하면
weak가 assign과 차이점이라면
음 assign은 int float 등등 primitive타입에 사용하는 것이고 weak는 객체에 사용한다고 생각하면
될듯 하다.
그래도 역시 ARC보단 ARC off가 편할듯 하다.
수동으로 메모리 관리를 했는데
그래도 알고 넘어 가자
Objective-C 의 수동 메모리 관리 관련 메서드
retainCount : 객체 혹은 인스턴스의 변수가 특정 메모리 공간을 참조 하고 있는가를 나타내는 정수
alloc : 생성된 객체에 메모리 공간을 할장한다.
retain : 객체가 메모리 공간을 참조 하고 있다는 사실을 iOS에 알린다. reationCount를 1증가 시킨다.
release : retainCount 1감소 시킨다.
dealloc : 메모리 공간을 참조하고 있는 모든 객체가 더는 해당 메모리 공간을 사용하지 말라는 명령을 내린다. retainCount = 0
retainCount 값이 1또는 그이상이면 iOS는 메모리 공간을 소유하고 사용할수 있다.
retainCount 값이 0이 될경우 공간에 대한 소유권을 반환받아 할당되었던 메모리 공간을 회수 한다.
약한 참조 (weak reference)
Foo * myFooOne = [[Foo alloc[ initWithName:@"James"];
Foo * myFooTwo = myFooOne //<--- 약한 참조
[myFooOne release];
//myFooTwo 사용시 런타임 에러 발생
Foo * myFooOne = [[Foo alloc[ initWithName:@"James"];
Foo * myFooTwo = myFooOne //<--- 약한 참조
[myFooTwo retain]; //<-- 해주어야
[myFooOne release];
//myFooTwo 이용가능
자동 메모리 관리 ARC
ARC는 Automatic Reference Counting의 약자로 기존에 수동(MRC라고 함)으로 개발자가 직접 retain/release를 통해 reference counting을 관리해야 하는 부분을 자동으로 해준다.
1. retain/release/autorelease 키워드 사용금지
2. C 구조체 내에 Object 타입 사용 금지
3. Core Foundation은 Objective-C의 Object 타입이 아니므로 Core Foundation 과 Object 간의 명시적인 타입 캐스팅이 필요 하다.
프로퍼티 속성
strong --> retain 과 거의 같다.
weak 는 assign 키워드 처럼 retainCount를 증가 시키지 않는다.
assign과는 다르게 참조하는 객체가 해제(deallocated)되면 weak로 선언된 프로퍼티는 자동으로 nil이 대입된다
ARC가 없던시절
reain --> strong
assing --> weak
라고 이해 하면
weak가 assign과 차이점이라면
음 assign은 int float 등등 primitive타입에 사용하는 것이고 weak는 객체에 사용한다고 생각하면
될듯 하다.
그래도 역시 ARC보단 ARC off가 편할듯 하다.
라벨:
ARC,
iOS,
programming
2013년 4월 25일 목요일
iOS 프로그래밍 팁 - XMLParser
XML 파싱을 위해서는 NSXMLParserDelegate를 구현해야 한다.
헤더 파일에 아래와 같이 <NSXMLParserDelegate>를 추가 한다.
@interface AlumnusViewController : UIViewController <UITableViewDataSource, UITableViewDelegate, NSXMLParserDelegate>
그리고 NSXMLParserDelegate 함수를 구현 한다.
#pragma mark XMLParse delegate methods
.....
[_xmlValue setString:@""];
}
return;
[boardData setValue:[NSString stringWithString:_xmlValue] forKey:elementName];
}
//위와 같은 방법으로 엘리먼트 문자열을 비교하여 boardData와 같은 파싱에 결과가 되는
//NSMutableDictionary 에 값을 설정 한다.
}
//파서에 들어오는 string을 NSMutableString *_xmlValue에 추가하는 작업을 한다.
if (elementType == kBOARDXML) {
if (!_xmlValue) {
_xmlValue = [[NSMutableString alloc]initWithCapacity:0];
}
[_xmlValue appendString:string];
}
}
통신에 결과로 XML데이터를 수신 하였을 경우
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
NSXMLParser* parser = [[[NSXMLParser alloc] initWithData:receiveData] autorelease];
[parser setDelegate:self];
[boardData removeAllObjects];
[boardParseData removeAllObjects];
BOOL success = [parser parse];
if (success) {
NSLog(@"XML parse success");
//테이블 뷰 작업....
//파싱에 결과로 생성된 baoradData, boardParseData의 키 밸류를 적절히 활용한다.
}else {
NSLog(@"XML parse ERROR");
}
connectionDidFinishLoading 메서드에서 receiveData를 parser로 할당 하고
[parser parse] 메세지가 성공하면 xml 파싱이 성공한 것이다.
success 가 YES일때 파싱 성공에 의해 생성된 NSMutableDictionary 객체 boardData, boardParseData 를 이용한다.
이상 간단하게 XML파서를 이용하는 방법이다.
피드 구독하기:
글 (Atom)