The Pursuit of Happyness

반응형

오늘의 아이템은..
워드스케치!


자 등장..
태권브이가 들고온 워드스케치..


워드스케치가 무엇인지 한번 확인해 보겠습니다.


태권브이도 빠져버린 워드스케치!!


이것이 바로 메인 화면!
왼쪽 위에서 부터 학습화면, 학습통계, 학습했던 단어 보기
전자사전, 환경설정, 멀티미디어 화면이다..


이것은 학습화면,
그냥 단어와 뜻만 나오면 허전하니 각 단어를 설명해 주는 재미있는 그림도 나온다.
학습 후에 암기 단어를 점검하는 테스트가 나오는데 직접 해보면, 한글 뜻은 잘 생각이 안날때는 그림이 먼저 떠올라서 뜻이 유추된다. 가끔 그림이 이상한 경우도 있는데, 말은 안되는데 더 잘 기억되는 듯한 느낌이..
워드스케치는 영어, 일본어, 중국어를 지원하는데, 그림은 영어에서만 나온다. 개발사에서 조만간 업데이트를 통해 다른 언어도 지원해 줄 예정이라고는 하지만..


심화학습 화면이다. 각 단어에 대해서 상세한 설명을 해준다. 어떤 단어는 그냥 뜻만 나온다.. -.-
위쪽의 아이콘을 이용해서 단어의 원어민 발음을 실제로 들어볼 수 있다.


학습 통계중 학습 진도 그래프이다. 진도가 너무 빠른가??
일단 암기 도중 그림이 나오는 것이 다른 학습기에 비해 가장 차별화되는 점인데, 학습 과목마다 단어들에 대한 레벨을 구분해서 체계적인 학습을 할 수 있도록 해주는 것도 상당히 괜찮다.

학습 테스트 결과 그래프. 80점 이하는 붉은색으로 표시된다.


학습 결과 요약화면이다. 이런 저런 정보 확인이 가능하다.


학습단어 보기 화면.
테스트 후에 틀린단어들만 확인할 수도 있고, 학습한 모든 단어를 볼수도 있다.


환경설정 화면..


워드스케치는 민트패드를 기반으로 만들어져서 인터넷을 쓸수 있다!!!


mp3 도 재생된다.


민트패드의 핵심기능 메모장!
글 쓰는 느낌이 좋다.
어떤 사람은 그림도 그리던데 난 그건 좀..


아이팟터치와 워드스케치.


HTC 듀얼 다이아몬드 폰과 워드스케치.


휴대용 기기가 많아지니 어떤걸 들고 다닐지 고민을 하게 된다.

일단 아이팟 나가있어!

휴대폰을 두고 댕길순 없구.. 워드스케치는.. 흠..


워드스케치를 대충 써보면서 느낌점은 아직 수정 보완해야할 것들이 너무도 많지만 그럼에도 불구하고,
상당히 경쟁력있는 기기라는 생각이 든다.

생각보다는 중독성이 있는 기기라서 단어를 계속 공부하게 된다.
학습효과가 얼마나 갈지는 조금더 테스트 해봐야 겠지만,

아직까지는 맘에 든다..

~

반응형

반응형


모처럼 큰맘 먹고 장난감 하나를 마련했다..
그것은.. HTC 터치 다이아몬드 폰!


예전에 Windows Mobile OS 를 탑재한 옴니아 폰에 실망했음에도 불구하고,
여러가지 다양한 기능을 탑재한 터치 다이아몬드 녀석을 써보고 싶은 충동에..
(공짜기 때문에 질렀다..)
참고로 내 친구중 하나도, 옴니아 샀다가 바로 취소하고 햅틱으로 바꿨다는..


예전에 쓰던 옴니아와의 비교..
일단 스마트폰에 계속 눈길이 가는 이유는..

1. MP3, 동영상 등을 변환없이 제대로 사용이 가능하다.
2. 블루투스를 이용해서 무선으로 음악을 들을 수 있다.
3. 막강한 응용 프로그램의 사용이 가능하다. (스카이프, 구글맵 등등..)

정도 인거 같다.
물론 옴니아를 쓸때는 너무 불편해서 다른거 쓸 생각도 못했었다..


화면 뒷모습..
다이아몬드를 강조하며 만든 디자인인데, 생각보다 거슬리지는 않는다.
다만 하이그로시 코팅이라서 지문이 장난아니게 묻는다.


얼마전 질렀던 하드디스크와 같이 한번 찍어봤다..


나의 블루투스 헤드셋과 함께..


윈도우 모바일용 스카이프다..
Wifi를 이용하면 인터넷 전화기가 된다.


구글맵이다.. 상당히 깔끔하다.


터치 다이아몬드 폰을 구입하면서 걱정했던 부분은 반응 속도이다.
옴니아에서 너무 짜증났었던 부분인데,

세계 5대 스마트폰 제조 업체 답게 상당히 괜찮은 반응속도를 보여주었다.
(말 그대로 사용이 가능한 정도랄까.. 절대적으로 빠른게 아니라도 사용에 불편함이 없는 정도라고 생각된다. 참고로 옴니아는 걍 부수고 싶은 충동이 들 정도의 속도랄까..)

그리고 또 멋진건 스타일러스다.
옴니아가 폰에 묶어서 사용하게 만들었다면, 터치 다아이몬드는 착탈이 가능하며 끝에 자석이 있어서 보관할때도 편리하다.

카메라 기능도 상당히 좋다.
액자 기능 이라던가 하는 것도 가끔 쓰면 재미있을 지도 모르겠다.. (아마도 본인은 절대 안쓸듯..)

그리고 무엇보다 좋았던 것은 블루투스 연결 부분이다.
옴니아의 경우에는 헤드셋의 전원을 켠 상태에서 옴니아 폰의 블루투스 설정을 한참 건드려줘야 페어링이 되었으나,
터치 다이아몬드는 한번 페어링 했던 기기는 금방 다시 연결이 된다.!! (너무 당연한건데 바보같은 옴니아를 겪고 나니 감동했다랄까..)

이제 부터 단점 얘기..

아무리 좋은 폰이라도 아쉬운 점은 있기 마련..

터치 다이아몬드의 가장 아쉬웠던 점은 무선랜 설정 부분과 3G 네트워크 기본 설정 부분이다.
일단 무선랜의 경우 채널설정이 제대로 되지 않으면 동작하지 않는다.
몇몇 검색을 통해 얻은 얄팍한 지식의 결과.. 미국 등에서 사용하는 1~11번 채널을 사용하기 때문이라고 하는데,
이거 때문에 공유기의 채널을 고정시켜 버렸다.. 흠..
다른 방법으로 해결이 가능할지도 모르지만 일단 귀찮기에..

그리고 이건 이통사의 얄팍한 상술인 것인데..
인터넷 접속 등의 기본 설정이 3G 네트워크 혹은 HSDPA로 되어 있어서 모르고 쓰면 데이터 요금이 살인적으로 나간다.
사용할때 유의해서 써야 한다..

그리고 사족 하나 더 붙이자면.. 본인은 블루투스 헤드셋을 쓸 것이기 때문에 큰 상관이 없을지도 모르지만..
이어폰은 호환이 잘 되는 3.5파이 단자를 사용했으면 더 좋았을 듯 하다.

또한 충전기.. 그다지 멋지지 않다..

여튼 아직까지는 상당히 만족하고 있다..
~

반응형

반응형
은근히 유용한 팁

  1. Dump (Backup 및 Migration)
    [전체 Dump]

    Usage : #> mysqldump -u{userid} -p{password} DatabaseName > file_name.sql
    ex) mysqldump -uroot -proot!@# dev_db > dev_dump.sql
    [Table Dump]
    Usage : #> mysqldump -u{userid} -p{password} DatabaseName TableName > file_name.sql
    ex) mysqldump -uroot -proot!@# dev_db board > board_dump.sql
  2. 복구
    [전체 Dump 했을 경우]
    Usage : #> mysql -u{userid} -p{password} DatabaseName < file_name.sql
    ex) mysql -uroot -proot!@# dev_db < dev_dump.sql
    [Table Dump 했을 경우]
    Usage : #> mysql -u{userid} -p{password} DatabaseName TableName < file_name.sql
    ex) mysql -uroot -proot!@# dev_db board < board_dump.sql

이 자료는 negafix 님 블로그에서 퍼왔습니다. (http://negafix.tistory.com/27)

반응형

반응형
그동안 투덜투덜 대며 사용했던 옴니아 단말을 더 이상 사용하지 않게 되었다.

물론 한국에서의 스마트폰은 PDA도 아니고, 전화기도 아닌 둘다 바보 만드는 단말기라는 생각이 들지만,

나름 장점이 있었다고 생각한다.

옴니아가 사라진 후에 서운한 점은..

1. Wifi 지원 인터넷

2. 블루투스를 지원해주는 음악 플레이어..

3. 변환 없이 사용이 가능한 mp3 및 동영상 파일들..

4. 은근히 괜찮은 카메라..

이 정도 인거 같다..

물론 위의 기능들을 사용하는 UI는 최악이었지만..

한번 무선기능들을 사용하다가 유선으로 돌아가는 것은 참 적응이 안되는 일인듯 하다..

거기에 들고다니는 기기가 하나 더 늘어야 한다는 사실은 나를 더욱 피곤하게 만든다..

미친척하고 옴니아 다시 사버리까? 흠..

..


반응형

반응형
예전부터 C에서 사용하는 데이터형에 대해서 의문이 많았는데,

다른 사람이 블로그에 정리한 내용을 보고 내용이 명확해 진거 같아서 정리를 해보겠습니다..


원래 C와 C++ 에는 string 이라는 자료형이 없기 때문에,

문자열을 표현하기 위해서는 char * 형을 쓰는 것이 일반적인데,

유니코드나 utf 형식의 인코딩이 등장하며 이러한 문자열의 표현이 더욱 복잡해 지고 있습니다.


일단 위의 자료형들을 이해하기 위해서는 기본 자료형에 대해 이해를 하고 잘 끊어 읽으시면 됩니다.

먼저 기본 자료형을 살펴보면,

LP : long pointer
C : constant
STR : string
TSTR : tstring
WSTR : wstring

LP는 long pointer 를 뜻하는데, 너무 어렵게 생각하지 말고 그냥 포인터라고 생각합시다.
(컴파일러의 버전에 따라 포인터가 가리키는 데이터형이 16bits 에서 64bits 까지 왔다갔다 하지만 그냥 포인터로 생각..)

C는 constant 를 의미하며, 함수의 내부에서 인자값을 변경하지 않는다는 것이고요,

STR은 string 으로써 끝에 null 값으로 종료하는 char형 배열을 의미합니다.

위의 내용을 바탕으로 위의 자료형들을 해석해 보면,

LPSTR = long pointer string = char *
LPCSTR = long pointer constant string = const char *

그러면 과연 wstring 과 tstring 은 무엇인가 하는 것인데..

wstring 은 대충 봐도 알겠지만, wide char * 입니다.

유니코드 문자들을 표시하기 위한 데이터 타입이라고 생각하면 되고요,

마지막으로 tstring 은 무엇이냐 하면, 매크로입니다.

컴파일러에 따라 char *혹은 wchar * 로 맵핑해주는 매크로.


위의 설명은 대략 개념을 잡기 위한 것들이고,

실제로 프로그래밍 할 때에는 LPSTR 과 char * 가 완전히 같은 것은 아니기 때문에 형변환이 필요할 때에는 캐스팅을 해서 사용을 해야합니다.

그럼~
반응형

반응형
오랜만에 누가 WIPI 에서 사용하는 빌컴헤더를 물어봐서 찾아서 정리해 둠..

typedef struct {
 M_Int32  iPacketLength;    /* 패킷의 전체 길이 */
 M_Char  achApplicationID[10];  /* 단말기 애플리케이션의 Application ID */
 M_Char  achApiVersion[10];   /* API 버전 */
 M_Char  achExtVersion[10];   /* 확장 인터페이스 버전 */
 M_Char  achHandSet[10];    /* 단말기 모델명 */
 M_Char  achMin[16];     /* 단말기 전화번호 */
 M_Char  achChannel[ 2];    /* 현재 통신 중인 네트워크 */
 M_Char  achSid[ 5];     /* 통신 중인 System ID */
 M_Char  achNid[ 5];     /* 통신 중인 Network ID */
 M_Char  achBid[ 5];     /* 통신 중인 Base ID */
 M_Char  achBestPN[ 5];    /* 통신 중인 Best ID */
 M_Uint16 usDestPort;     /* 목적지 포트 번호 */
 M_Uint32 uiDestIP;     /* 목적지 IP 주소 */
 M_Uint32 iSockConnTime;    /* 소켓 연결 시각 */
 M_Char  achQoS[ 5];     /* 서비스 품질 측정 패킷 유형 */
 M_Char  achMnc[ 2];     /* Mobile Network Code */
 M_Char  achReserved[ 9];   /* 예약 영역 */
} WIPI_BILLCOMM_HEADER;
 
typedef struct {
 int   iSignature1;    /* 전송할 패킷 데이터의 헤더 구분 필드 */
 char  achContentsId[12];   /* 전송할 패킷 데이터의 과금 정보 */
 char  achChargNumber[16];   /* 과금 전화 번호 */
 int   iSMFlag;     /* 시그널 매니지먼트 플래그 */
 char  achResv [12];    /* 예약 영역 */
 unsigned int uiLen;      /* 헤더를 제외한 실제 데이터 크기 */
 char  achSignature2[ 4];   /* 전송할 패킷 데이터의 헤더 유형 필드 */
} WICGS_HEADER;
반응형

반응형
오늘은 제가 만들어서 사용하는 유용한 함수 하나를 소개하겠습니다.

PHP 로 파일 혹은 폴더를 다루는 경우 사용하는 팁인데,

특정 조건을 만족하는 파일 리스트를 받아와야 하는 경우 glob 함수를 사용합니다.

$fileLists = glob("./*/*.txt");

원래 glob 함수의 옵션에는 폴더명을 읽어오거나 하는 세팅이 정의되어 있지만 아직 제대로 지원해주지 않는다고 합니다..

따라서 파일 리스트가 아닌 폴더 리스트가 필요한 경우에는 다음과 같이 함수를 정의해서 사용하시면 됩니다.

function getFolders($rootDir)
{
$handler = opendir($rootDir);
$rFolders = array(); // 폴더 리스트
$fCounter = 0;  
while ($file = readdir($handler)) 
{
if ($file != '.' && $file != '..')
{
if (is_dir($rootDir."/".$file))
{
$rFolders[$fCounter++] = $file;
}
}
}
closedir($handler);
return $rFolders;
}

유용하게 쓰시길~
반응형

반응형
혹시나 궁금해 하는 분들을 위해 업그레이드 방법을 잠시 소개하겠습니다.

1. from DVD
정식으로 업그레이드 판을 구매하셨다면 당연히 DVD를 넣고 업그레이드를 하시면 됩니다.
부팅시에 option (alt) 키를 누르고 있으면 어떤 것으로 부팅할 것인지 묻는 화면이 나오는데,
그때 DVD롬을 선택해 주시고 업그레이드를 진행하면 끝!

2. from Image file 
dmg 파일을 가지고 계신 분이라면..

맥에서는 이미지 파일을 하나의 파티션에 담아서 DVD 롬처럼 사용할 수 있습니다.
그러기 위해서는 파티션을 조정하셔야 하는데, 
Window 사용때는 파티션 조정이 아주 위험한 방법이라고 생각했는데,
맥에서는 걍 막 하고 있다는..

먼저 application > Disk Utility 를 실행시키시고,
하드디스크의 파티션을 조정합니다.

맥북의 경우 하드가 두개 달린 분은 없으실테니.. 
메인 하드를 사용하시면 되고요, 그냥 맥을 사용하시는 분은 부팅과 관계 없는 다른 하드를 사용하시면 조금 더 안전하겠죠?

Disk Utility 왼쪽에 보시면 하드디스크 및 파티션 정보가 보입니다.
하드 디스크를 선택하시고 오른쪽 클릭 > Partition 을 선택하시면 해당 하드 디스크의 파티션 정보가 나타납니다.

왼쪽 하단에 + - 버튼이 있는데 + 버튼을 눌러 주시고, 
새로 생성한 파티션에 대략 10기가 정도를 할당하고 Apply 버튼을 누릅니다.

새로 뜬 창을 닫고 Disk Utility 화면으로 돌아가고,
화면의 오른쪽에서 restore를 선택

Source 에는 이미지 파일을, Destination 에는 새로 생성한 파티션을 선택해 주시고,
Erase destination 을 체크하시고, restore 버튼을 클릭
(팝업이 뜨면 긍정적으로 대답해서 진행하시면 됩니다.)

작업이 끝나면 재부팅을 하는데 부팅시에는 위에서 설명한 DVD로 설치하는 것과 같은 방식으로
Option 키를 눌러서 새로 생긴 파티션으로 부팅해주면 설치가 진행됩니다.

업그레이드가 종료된 후에 다시 Disk Utility 를 실행하여 업그레이드를 위해 생성한 파티션을 삭제하면
할당해준 10기가도 다시 사용이 가능합니다.

3. from USB Drive
USB 로 업그레이드 하는 경우에도 기본 원리는 이미지 파일을 가지고 업그레이드 하는 것과 같습니다.
설치 파티션을 USB 드라이브에 설정해 주고 진행하시면 됩니다. 아무래도 하드 디스크에서 업그레이드 하는 것보다 시간이 좀 더 걸리겠죠?

그럼~


반응형

반응형
드디어 애플에서 Snow Leopard 정식 버전을 출시하였습니다.

Snow Leopard 업그레이드 버전은 Apple 공식 홈페이지에서는 $29 + tax 에 판매하고 있으며, 

애플 코리아 홈페이지에서는 45,000 원에 판매하고 있습니다.


먼저 Snow Leopard 에서 개선된 부분을 살펴보면, (테스트 환경은 Leopard 에서 Snow Leopard로 업그레이드)

64bit 지원

Finder의 속도 개선 
홈페이지에서는 pdf나 jpeg 파일 로딩이 1.4~1.8 배 빨라졌다고 하는데, preview를 실행할 때 확실히 빨라진 것을 체감할 수 있음

Time Machine 의 속도 개선
사실 본인은 Time Machine 을 사용하지 않기 때문에 잘 모르겠지만 최대 80% 까지 속도 향상이 있다고 함

부팅시간과 종료시간 개선
대략 2배 정도 개선되었다고 하는데, 실제로 느낌상인지 빨라졌다고 생각함

OS가 차지하는 용량을 개선
기존의 Leopard 에 비해 대략 7기가 정도를 덜 차지한다고 함 (mp3 1750 곡에 해당한다고 함)

QuickTime 의 속도 개선
QuickTime 을 사용하지 않아서 잘 모르지만, 좋아졌다고 하니 써볼까 하는..

한자 입력 개선
멀티터치 트랙패드가 내장된 맥북에서 트랙패드에 손으로 써서 입력하는 기능.. (이거 좀 신기함!!)
애플 홈페이지에서 광고하는 사진처럼 트랙패드의 왼쪽 상단은 삭제, 중단은 공백, 하단은 개행
그리고 중간에는 글자를 쓰는 영역이고 글자를 쓰고나면 오른쪽에 선택가능한 글자가 4개가 나온다.
하지만 내 한자 실력이 별루여서 인지 글자 인식은 생각보다 별로 였다..

기타 이거저거.. 좋아졌다고 한다.
사실 부팅 속도나 종료 속도는 확실히 느껴지지만 다른 것들은 아직 모르겠다.
대신 포토샵을 제외한 키노트, 페이지스, 넘버스 등은 처음 실행속도가 느려진 느낌이다.
사파리 브라우저에서 좋아진점 하나는 
예전에는 플래쉬로 뜬 팝업에서 Close 버튼을 눌러도 안 닫히는 경우가 대부분이었는데, 그런 문제가 사라진거 같다!

그 외에는 바탕화면이 바뀌었다.. 약간 더 빛이나는 성운 사진이랄까?
여튼 기분은 좋다..

반응형

반응형
전에 이야기 한 데로 여기는 그냥 유용한 코드들에 대한 설명 형식으로 진행이 되므로,
순서가 뒤죽박죽이 될 것입니다.

오늘은 언어 인코딩에 대해서 이야기해 보겠습니다.

PHP를 사용하는 경우 APM 등을 이용하여 Apache, MySQL을 같이 사용하는 경우가 많습니다. 언제 부터인가 다국어 지원에 대한 이슈가 논의되면서 MySQL은 기본 설정이 utf-8 로 되고, 한국어를 쓰기 위해서 서버 설정을 euc-kr 등으로 변경을 해줘야 하는 번거로움이 있었습니다.

다국어를 다루는 것은 상당히 귀찮은 일입니다. ASC 부터 유니코드를 거쳐 utf-16 에 이르기까지 수많은 인코딩 방식이 있는데, 이것은 마치 메모리를 절약하기 위한 자리수 표시 방식이 밀레니엄 버그의 원인이 되었던 것처럼 효율적인 메모리 사용을 통한 지역별 언어 설정이 프로그래밍을 상당히 귀찮게 해주고 있습니다.

언어셋에 대한 부분은 나중에도 다룰 예정이므로, 오늘은 아주 간단한 form 전송시 사용이 가능한 간단한 utf-8 예제를 살펴 보도록 하겠습니다.

먼저 form 전송시에 utf-8 로 인코딩을 하기 위해서는 form 태그에서 아래와 같이 accept-charset을 utf-8 로 설정해 줍니다.

<form method=post action=target.php accept-charset='UTF-8'>


그리고 html 헤더에 다음의 코드를 삽입하게 되면, utf-8로 인코딩 된 페이지가 제대로 나타나게 됩니다.

<meta http-equiv='Content-Type' content='text/html;charset=utf-8'/>


사용에 대한 예제는 아래 페이지를 참고하시면 될 듯 하고요. 아래 페이지에서 이야기하는 서블릿상에서의 utf-8 인코딩이 바로 위의 메타태그를 사용하는 것입니다.

http://www.razorvine.net/test/utf8form/utf8pageform.html


설명을 하다보니 PHP 에 대한 내용이라기 보담은 html 에 대한 내용이 되어버렸네요..

대신 meta 태그를 위와 같이 설정하면 PHP 코드상에서의 한글 등의 문자가 깨져서 나오게 됩니다. 한글 출력시에는 iconv 를 이용해서 출력을 해주면 됩니다. 제가 쓰는 아주 간단한 인코딩 함수 입니다.

function getUTFString($str)
{
  return iconv("CP949", "UTF-8", $str);
}

이 정도의 설정만으로도 웹상에서의 다국어 지원 부분이 어느 정도 쉽게 해결이 될 것이라 생각됩니다. 나중에 AJAX 사용시에 넘겨주는 인자를 인코딩하는 방법과 결과값을 받을 때 사용하는 인코딩에 대해서 정리해 보도록 하겠습니다.

그럼~
반응형