Google Docs에는 많이 알려지지 않았지만 매우 편리한 기능이 숨겨져있다.
그 중 유용한 것이 이메일을 통한 설문조사 기능이다.


Google Docs의 좌측 상단에 있는 'Create New'를 눌러 그 중 'Form'을 선택한다.


위와 같이 질문을 입력하는 화면이 나오게 된다. 여기서 각 질문을 만들어주면 된다.


각 항목에 대한 설명은 위와 같다.


답변 타입은 위와 같이 7개가 있다.


질문을 추가하려면 좌측 상단의 Add item 버튼을 눌러주면 된다.


설문지가 어떻게 보이는지 미리보기를 하고 싶으면 화면 아래쪽의 검은색 부분에 있는 주소를 눌러주면 된다.


그러면 브라우져의 새 창이나 탭에 위와같이 설문지를 미리보기 할 수 있다.


설문지 디자인이 심심(?)하다고 생각되면 Theme 버튼을 눌러 테마를 선택할 수 있다. 모든 확인이 끝났으면 Email this form 버튼을 눌러 설문지를 보내면 된다.


현재 약 70개 정도의 테마가 있다.


Email this form 버튼을 누르면 위와 같은 화면이 열려 누구에게 메일로 보낼지 지정해 줄 수 있다. 여러 사람의 주소를 쓰는 경우 각 주소는 ','로 구분해주면 된다.


설문지를 받은 사람의 브라우져 화면이다.


설문에 답한 다음 Submit버튼을 눌러주면 된다.


Submit 버튼을 누르면 데이터를 보내기 때문에 진짜로 보낼건지 확인한다. 'OK'를 눌러주면 된다.


데이터가 전달되고 나면 위와 같이 Thank you 화면이 나온다.


이렇게 메일로 수집된 데이터는 자동으로 설문을 보낸 사람의 스프레드쉬트 파일에 입력된다. Google Docs에 가 보면 자신이 만든 설문에 대한 파일이 생겨져 있다.


파일을 열어보면 위와 같이 설문 응답 내용이 자동으로 스프레드 쉬트에 입력되어 있다.


또한 설문을 보내 사람은 메일함을 열어보면 설문결과를 확인할 수 있는 링크와 설문지를 추가로 발송할 수 있는 링크가 들어있는 메일이 google docs로부터 와 있다.

이 기능을 사용하면 설문지를 돌리고 수집한 다음 결과를 정리하기 위해 입력하는 수고 없이 매우 쉽게 설문조사를 할 수 있다.
Posted by nautes

인터넷 시대 이전에 모뎀을 사용해서 PC통신을 하던 사람들에게는 눈에 익은 AT 명령어(Hayes AT command)를 사용해서 노키아 휴대폰을 컴퓨터에서 직접 제어해서 전화를 걸고 받거나 문자 메시지를 보낼 수 있다.
컴퓨터와 노키아 휴대폰은 블루투스를 사용해서 연결해 준다.

여기서는 맥에서 노키아 E71x를 연결해서 제어하는 방법을 설명하겠다.

먼 저 맥과 E71x는 페어링 되어 있어야 한다.



'Preferences' 에서 'Bluetooth'를 선택한다.


디바이스(여기서는 E71x)를 선택하고 아래쪽의 휠 버튼을 눌러준다.



버튼을 누르면 나오는 풀다운 메뉴 중에 'Edit Serial Ports..'를 선택한다.



디바이스 설정 창이 열리면 '+' 버튼을 누른다.



Name, Protocol, Service를 차례대로 설정한다. Name은 디바이스 이름으로 사용되기 때문에 간단한 이름을 넣어주는게 좋다. 여기서는 e71x를 넣어줬고 저 가상 시리얼 포트의 패스는 /dev/tty.e71x가 된다.



앞의 화면에서 'Apply'를 눌러 설정이 끝난 상태이다. 여기까지 했으면 맥과 휴대폰 설정은 끝났다.



맥에서 시리얼 터미널 프로그램을 실행시킨다. 여기서는 GoSerial 이라는 프로그램을 사용했지만 아무 시리얼 터미널 프로그램(CoolTerm, jterm 등등)들을 사용해도 관계 없다.

위의 그림은 GoSerial의 포트 설정 화면이다. 시리얼 포트 파라미터는 9600-N-8-1로 맞춰주면 된다.



설정이 끝났으면 'Connect' 버튼을 눌러 휴대폰과 연결시켜주면 된다.



정상적으로 연결되면 이제부터 AT 명령어를 사용해 휴대폰을 제어할 수 있다.



휴대폰으로 전화를 걸어 본 예이다. 모뎀과 동일하게 ATDT 명령어를 사용해서 전화를 걸 수 있다.

문자메시지를 보내는 방법이다.

AT+CMGF=1
AT+CMGS=”##########”      ;#####은 수신자 번호이다.
[메시지]를 입력하고 끝나면 CTRL-Z를 누른다.


노 키아 휴대폰에서 사용할 수 있는 AT 명령어 셋은 노키아 사이트에서 확인할 수 있다.
Posted by nautes

별도의 전산팀을 두기 힘든 소규모의 회사나 모임의 경우 구글앱스를 사용하면 거의 비용을 들이지 않고도 자신의 도메인으로 메일, 웹, 게시판, 캘린더등을 공유하고 관리할 수 있어 소규모 업체에게는 축복과도 같은 서비스다. (현재 Standard타입이 무료 서비스인 경우 50개까지 계정을 만들 수 있다.)

* 도메인을 구입한 후 구글앱스 신청 및 도메인을 구글앱스에 연동시키는 방법은 이 포스트를 참조하면 된다.
* 구글앱스에서 사용자 추가/관리는 다른 포스트를 참조하면 된다.

구글 앱스를 설정하고 나면 각 개인 사용자들이 사용할 수 있게 설정을 해 줘야 하는 경우가 많다. 물론 웹 인터페이스를 사용해도 별 문제는 없지만 아웃룩에 연동시켜 사용하기를 원하는 사람들도 많기 때문에 그 때의 설정방법이다.



아웃룩을 실행한 화면이다. 메뉴의 Tools를 선택한다.


Tools에서 Account Settings를 선택해준다.


Account Settings 창에서 새 어카운트를 추가해야 하니까 New...를 선택한다.


이메일 계정을 추가할 것이기 때문에 Microsoft Exchange, POP3, IMAP, or HTTP를 체크하고 Next를 눌러준다.


Add New E-mail Account 창이 열리면 위쪽의 정보는 넣어줄 필요 없고 맨 아래쪽의 Manually configure server settings or additional server types를 체크하고 Next를 눌러준다.


Internet E-mail을 체크하고 Next를 눌러준다.





이 화면에서 자신의 이름, 이메일 주소(구글앱스로 만든 이메일 주소), 아이디(이메일 주소에서 '@' 앞쪽 부분), 암호를 넣어주고 Account Type은 'IMAP', Incoming mail server는 'imap.gmail.com' , Outgoing mail server (SMTP)는 'smtp.gmail.com' 을 넣어준다. 다 입력했으면 More Settings...를 선택한다.


Internet E-mail Settings창에서 Advanced 탭을 선택한다.


Advanced탭에서 표시된 4가지 정보를 바꿔줘야 한다.


위와 같이 정보를 변경해주고 Outgoing Server 탭을 선택한다.


My outgoing server (SMTP) requires authentication을 체크해주고 Use same settings as my incoming mail server를 선택하고 OK를 누르면 된다.


그러면 다시 위의 화면으로 돌아온다. 이제 Next를 눌러준다.


위와 같은 설정이 끝나 축하한다는 화면이 나온다. Finish를 눌러주면 된다.


이제 아웃룩 왼쪽에 방금 추가한 계정이 보인다.


계정 왼쪽의 '+'를 누르면 Inbox폴더가 나타나고 오른쪽에 메일폴더의 내용이 나타나는걸 확인할 수 있다.
Posted by nautes

구글앱스에서 사용자 및 그룹 추가/관리법에 대해 설명하겠다.


해당 도메인의 관리자 아이디로 로그인하면 화면 오른쪽 상단에 Manage this domain 링크가 보인다. 이걸 클릭해 준다.


관리자 화면으로 넘어오면 도메인에 관련된 여러가지를 설정할 수 있다. 사용자를 추가하기 위해 Users and groups를 선택한다.


사용자를 추가해야 하니까 Create a new user를 선택한다. 이 방법은 한명씩 추가하는 것이고 여러명을 한꺼번에 추가할수도 있다.


사용자의 이름과 아이디를 넣어준다. 기본적으로는 랜덤하게 정해진 초기암호가 설정되어 있다. 해당 사용자가 저 암호를 가지고 처음으로 로그인을 하면 새 암호를 넣으라고 나오게 된다. 랜덤한 암호 대신 관리자가 임의로 암호를 설정해 주고 싶으면 Set password를 눌러주면 된다. 모든 정보를 다 입력했으면 Create new user 버튼을 눌러주면 된다.


이제 Test User라는 이름의 계정이 만들어 진 것이다. 이 사용자의 아이디는 'testuser', 초기암호는 'Z57829'이고 예를 들어 회사 도메인이 xyz.com이라고 하면 이메일 주소는 testuser@xyz.com 이다.
또한 웹 브라우져에서 이 계정으로 로그인 하기 위한 초기 웹 페이지는 http://start.xyz.com이 된다.


좀 더 상세하게 설정하거나 입력된 내용을 수정하고 싶으면 위의 화면에서 Edit settings for test를 눌러주면 된다.


Edit settings for test를 누르면 화면이 위와 같이 바뀐다. 여기서 이 사용자가 다음번 로그인하면 강제적으로 암호를 바꾸기, 도메인 관리자 권한 부여(관리자가 되면 사용자 생성, 수정, 삭제등 모든것이 가능), 별명 추가(여기서 사용자 이메일 주소는 testuser@xyz.com인데 별명으로 foo를 추가해주면 foo@xyz.com으로 보낸 메일도 testuser@xyz.com으로 배달된다.), 그룹 설정등이 가능하다.


하나라도 변경하면 맨 아래 Save changes의 글자가 진하게 바뀐다. 변경한 다음에는 잊지 말고 꼭 눌러줘야 변경된게 적용된다.


계정이 추가되었으므로 처음 화면으로 돌아가보면 위와 같이 추가된 계정이 보인다.





그룹을 추가하려면 Groups 탭을 선택한 다음 Create a new group을 눌러준다.


그룹에 관련된 정보를 넣어준다. 위와 같이 RnD라는 그룹을 만들어주고 그룹의 이메일 주소를 rnd@xyz.com으로 해 주면 rnd@xyz.com으로 메일을 보내면 그룹에 속한 모든 멤버에게 메일이 날라가게 된다.
또한 그룹의 억세스 권한을 따로 설정해 줄 수 있다.

- Team : xyz.com 도메인의 모든 멤버(그룹에 속해있지 않아도 관계 없음)가 rnd@xyz.com으로 메일을 보낼 수 있고 멤버 목록을 볼 수 있다.
- Announcement-only : 공지사항 전용으로 그룹의 owner만 rnd@xyz.com으로 메일을 보내거나 멤버 목록을 볼 수 있다.
- Restricted : 그룹에 속한 멤버만 rnd@xyz.comdm로 메일을 보내거나 멤버 목록을 볼 수 있다.

즉 회사 내에 연구개발 팀을 위한 그룹을 두개 만들어서 그룹 멤버는 같지만 하나는 rnd-public@xyz.com, 나머지는 rnd-private@xyz.com 으로 해 주고 rnd-public은 억세스 권한을 Team으로, rnd-private은 억세스 권한을 Restricted로 해 주면 사내의 다른 부서 사람이 연구개발팀원 전체에게 메일을 보낼때는 rnd-public@xyz.com을 사용하고 연구개발팀원중 한명이 팀원에게 공지사항을 보낼때는 rnd-private@xyz.com을 사용할수도 있다.
이렇게 하면 메일의 필터 기능을 이용해서 팀원에게 오는 메일은 별도의 라벨을 붙여 관리할수도 있어 편리하다.

모든 정보를 입력했으면 아래쪽의 Create new group 버튼을 눌러준다.


그룹의 멤버를 추가해준다. 위쪽의 칸에 이미 만들어져 있는 사용자의 이름, 아이디 또는 이메일 주소를 넣어주고 Member 로 추가할것인지 Owner로 추가할것인지 정한 다음에 Add버튼을 누르면 된다. 위쪽의 칸에 여러명을 한꺼번에 추가할 경우는 ','로 구분해주면 된다.


여기서는 testuser@xyz.com을 RnD 그룹의 Member로 추가했다.

이렇게 계정 추가가 끝났으면 실제 계정 사용자에게 아이디와 임시 암호를 알려주면 된다.


만들어 진 계정을 사용하려면 웹 브라우져에서 시작페이지로 가면 된다. 이 예제에서는 http://start.xyz.com 으로 가면 된다. 위의 화면에서 오른쪽 상단의 Sign in을 눌러준다.


위와 같은 화면이 나온다. 여기서 자신의 아이디와 임시 암호를 넣어주고 Sign in 버튼을 누른다.


처음 로그인 하는 것이기 때문에 위와 같은 화면이 나오고 새 암호를 넣으라고 나온다. 여기에 자신이 원하는 암호를 넣어주고 사람이라는걸 확인(컴퓨터가 자동으로 하는걸 방지하기 위함)해주기 위해 중간에 녹색으로 나온 글자를 그래도 입력(여기서는 gitation 을 넣어준다.)하고 맨 아래쪽의 I accept. Create my accounts를 눌러준다.


그럼 모든 설정이 끝난 것이고 위와 같은 화면이 나와서 자신이 사용할 수 있는 서비스 목록을 보여준다.


Email 화면이다. 구글의 gmail을 그대로 사용하는 것이지만 메일 주소는 testuser@gmail.com이 아니고 testmail@xyz.com (자신의 회사 도메인을 그대로 사용)하게 된다. 웹 브라우져로 메일을 사용하려면 이대로도 문제없지만 만일 아웃룩, 썬더버드, 애플 메일등 외부 메일 클라이언트를 사용할 예정이면 우측 상단의 Settings를 눌러준다.


설정 화면에서 Forwarding and POP/IMAP을 눌러준다.


기본적으로 POP3는 활성화 되어있고 IMAP은 비활성화 되어 있다. IMAP프로토콜을 사용할 생각이면 Enable IMAP을 선택하고 Save Changes를 눌러 설정변경을 저장해주면 된다.

* 도메인을 구입한 후 구글앱스 신청 및 도메인을 구글앱스에 연동시키는 방법은 이 포스트를 참조하면 된다.
* 각 사용자가 자신의 계정을 아웃룩에 연동시키는 방법은 이 포스트를 참조하면 된다.
Posted by nautes

인터넷에 상당히 자주 올라오는 질문이기도 하고 잘못된 정보가 상당히 널리 퍼져있는 질문이기도 하다.

SD는 마츠시타, 토시바, San Disk등이 휴대용 장비에서 사용하기 위해 개발한 메모리 카드 포맷이다.
일반적으로 10~20MB/s 정도의 전송속도를 가지고 추후 MiniSD, MicroSD(또는 Transflash라고도 불린다) 타입이 발표되었다.

각각의 크기는 위의 그림과 같다. SD는 최대 4G까지 지원하고 파일 시스템으로 FAT16 또는 FAT32를 사용할 수 있다.
SD 카드에는 3가지 전송모드(1-bit SD, 4-bit SD, SPI mode)가 있고 각 카드는 3가지 전송방식을 모두 지원한다. (단 MicroSD인 경우 SPI모드는 옵션이다.) 일반적인 경우 25MHz 클럭까지 지원해야 하고 High speed인 경우 50MHz 클럭을 지원해줘야 한다.

각각의 pinout은 다음과 같다.

먼저 SD카드의 pinout이다.

MiniSD카드의 pinout이다.

MicroSD카드의 pinout이다.

물리적인 pin 갯수는 달라도 비교해보면 실제 신호선은 동일하고 나머지는 사용하지 않는다.

SDHC(SD 2.0)는 SD의 용량 제한을 해결하기 위해 나온 표준이다. SD(SD 1.x)와 물리적, 전기적 form factor는 동일하다. 가장 큰 차이는 어드레싱 범위를 확장하기 위해 SD에서 사용하던 byte addressing 대신 sector addressing을 사용하는 것이다. 이를 통해 이론상 최대 2T까지 addressing이 가능하지만 현재 SDHC 스펙(SD 2.0)으로는 32GB가 최대고 새로 나올 리비젼 (SD 2.x)에서는 더 확장될 예정이다.
SDHC는 SD에 대해 backward compatibility를 가지고 있기 때문에 SDHC리더기에서 SD를 그대로 사용할 수 있다. 이전의 SD장비들은 SDHC의 sector addressing을 지원하지 않기 때문에 SDHC를 사용할 수 없다. 다만 일부 장비들은 SD 컨트롤러의 펌웨어 업그레이드를 통해 SDHC를 지원하도록 할 수 있는 경우도 있다.

SDHC는 일반적으로 FAT32로 포맷하지만 UFS2/ext2 또는 exFAT같은 파일 시스템도 사용할 수 있다.

또하나의 표준은 SDIO(Secure Digital I/O)이다. 이 역시 물리적 form factor는 SD와 동일하다. SD는 메모리를 위한 표준인데 비해 SDIO는 그 이외 다른 주변기기들을 연결하는데 사용한다.

아주 널리 사용되지는 않지만 무선랜카드, 블루투스, GPS수신기, 카메라, 바코드리더 등등 다양한 종류의 제품이 나와 있고 몇년 전에 주로 PDA에서 많이 사용되었었다.

SDIO와 SD의 가장 큰 차이는 SPI모드에 IRQ(인터럽트) 신호가 추가된 것이다. 그렇기 때문에 SDIO 카드는 SD슬롯이 SDIO도 지원하는 장비가 아니면 사용할 수가 없다.

--
인 터넷에 가장 널리 퍼져있는 잘못된 정보로는 'SD에 비해 SDHC는 핀이 하나 추가되기 때문에 SD에서 SDHC를 사용할 수 없다.'는 것이다. 위에도 써 놓은것처럼 SD와 SDHC의 물리적, 전기적 form factor는 동일하다. 차이는 SD컨트롤러가 SDHC에 추가된 sector addressing을 할 수 있는가 여부이기 때문에 일부 장비의 경우는 펌웨어 업그레이드를 통해 SDHC를 지원하게 만들어 줄 수 있는 경우도 있다. 아마 저 헛소문의 근원은 SDHC와 SDIO를 잘못 알고 있는게 아닌가 싶다. (SDIO는 IRQ 신호가 추가된다.)

그리고 파일시스템도 SD의 경우 일반적으로 FAT16을 사용하고 SDHC는 일반적으로 FAT32를 사용하 는것 뿐 꼭 그렇게 해야 한다는 법은 없다. SD나 SDHC 모두 FAT16, FAT32 뿐 아니고 UFS2/ext2 또는 exFAT같은 파일시스템을 사용할 수 있다. (다만 SDHC는 용량문제때문에 FAT16을 사용하는 경우 전체 용량을 다 사용할 수 없게 되기 때문에 FAT16을 사용하는 경우는 거의 없다.)

* 심지어 인터넷 기자라는 사람의 기사에 "SD카드와 SDHC카드의 가장 큰 차이점은 파일시스템이다. SD카드는 구식인 FAT16 파일시스템을 사용하고, SDHC카드는 신식인 FAT32 파일 시스템을 사용한다."까지 이런 소리를 써 놓고 있다. 잘 모르는 사람들이야 그렇다고 쳐도 기술담당 기자라면 자기가 쓰는 기사 내용에 대해서 최소한의 공부는 해서 잘못된 정보를 퍼트리지는 말아야 하는데 이건 오히려 앞장서서 혼란을 일으키고 있으니.... -_-;;;

* 마이크로SD를 아뒤노에 연결시키기 (MicroSD interface for Arduino)

--
추가된 부분 - SD카드 최대용량에 관한 내용

원래 SD1.0에서는 128bit의 CSD(Card Specific Data) register를 가지고 있는데 이 중 12비트(C_SIZE[73:62])가 메모리 클러스터 갯수(1~4096)를 나타내고 3비트(C_SIZE_MULT[49:47])가 클러스터 내의 블럭 갯수(000부터 111까지가 각각 4,8,16,32,64,128,256,512을 나타냄)를 나타낸다. 표준 블럭 크기는 512바이트라 초기 SD에서는 최대 4096*512*512 = 1GB까지 가능하다.
그 후 4비트(READ_BL_LEN[83:80], WRITE_BL_LEN[25:22])를 통해 블럭사이즈를 1024, 2048 바이트로 할 수 있게 되어 2G, 4G (4096*512*1024, 4096*512*2048)도 가능하게 되었다. (원래는 이 값이 일반적으로 512로 고정되어 있었음)

다만 오래된 장비들은 이 부분이 스펙에 추가되었어도 2G, 4G를 인식하지 못하는 경우도 있다. SD Association의 스펙에 보면 다음의 문구가 들어있다.
"2G짜리 카드를 만들기 위해서는 Maximum Block Length(READ_BL_LEN, WRITE_BL_LEN)을 1024로 만들어 줘야 한다. 하지만 CMD16에 의해 설정되는 Block Length는 최대 512 byte Block length를 가진 카드와 일관성을 유지하기 위해 최대 512까지만 사용할 수 있다."
Posted by nautes

우리가 현재 인터넷에서 일상적으로 사용하고 있는 이메일은 인류 역사상 매우 오랜 기간동안 사용되어 왔던 우편제도를 거의 그대로 모방하여 만들어 졌다.


우리가 편지를 보낼 때를 생각해 보면 편지지에 내용을 적고 편지봉투에 집어넣은 다음 봉투에 발신자 주소와 수신자 주소를 적는다. 그리고 우표를 붙인 다음 우체통에 집어넣으면 보내는 사람의 할 일은 더 이상 없어진다. 나머지 역할인 편지를 수신자에게까지 전달해 주는건 우체국에서 하는 일이고 언제 우체통에서 편지를 수거해 가는가, 어떤 방법으로 어느 경로를 거쳐 우리동네 우체국에서 수신자가 사는 동네의 우체국까지 편지를 옮길 것인가, 수신자네 동네 우체국에서 언제 어떻게 수신자 집으로 편지를 가져다 줄 것인가는 전적으로 우체국이 결정하는 것이지 편지를 보낸 사람이 결정할 수 있는게 아니다. 또한 수신자 집에 편지가 배달되었다고 해도 언제 그 사람이 편지를 읽는지, 아니 편지를 읽었는지 조차 알 수 있는 방법이 없다.
위에 과정이 이메일에도 거의 동일하게 적용된다.



이메일을 작성하는 경우 본문에 원하는 내용을 적고 메일 헤더에 발신자 이메일 주소, 수신자 이메일 주소를 넣어주고 이메일을 발송한다. 여기까지가 이메일을 보내는 사람이 해야 할 일이다. 나머지 역할인 이메일을 수신자 이메일 계정으로 전달해 주는건 인터넷(정확하게 말하자면 인터넷에 있는 메일서버들)이 알아서 하게 된다. 어느 메일서버를 거쳐 언제 이메일을 전달할 것인가는 전적으로 메일서버들이 결정하는거지 이메일을 보낸 사람이 결정할 수 있는게 아니다. 또한 편지와 마찮가지로 이메일이 수신자 메일함에 전달되었다 해도 그걸 읽었는지 여부나 언제 읽었는지는 알 수 있는 방법이 없다.



물론 편지에도 예전부터 본문이나 PS에 '읽었으면 읽었다고 알려달라'고 부탁을 할 수도 있지만 그건 편지를 받은 사람이 그 부탁에 응해주는 경우에만 의미가 있는 것이다. 이메일 표준에도 이와 유사하게 RFC3798등에서 메일 헤더에 메일을 읽었다는 receipt를 보내달라고 요구하는 필드가 추가되기도 했다. 하지만 이 역시 수신자가 receipt를 보낼건지 확인을 해 줘야만 receipt가 보내지는 문제도 있고 모든 이메일 클라이언트가 이 확장필드를 인식하지 못하기 때문에 널리 쓰여지지는 못했다.

그렇다면 '어 내가 쓰는 이메일에는 수신확인 기능이 있는데 이건 뭐냐?'는 사람들이 있을 것이다. 쉽게 이야기하자면 그건 특정 메일 서비스 내에서만 동작하는 일종의 편법을 이용한 방법이다. 하지만 그런 방법들은 표준화가 된 것도 아니고 편법을 이용하는 것이기 때문에 송신자, 수신자 모두 같은 이메일 서비스(예를 들어 둘 다 한메일 또는 네이버메일 등등)를 이용하는 경우에만 "가능할 수도 있는" 방법일 뿐이다. 동작원리는 이메일은 위에서 말했듯이 일단 보내고 나면 송신자는 그 이메일에 대한 통제력(내용수정, 삭제 등등)을 완전히 잊어버리게 된다. 그래서 이메일을 보낼 때 메일서비스가 이메일의 본문 내용 안에 사람들에게는 보이지 않게 조그마한 이미지 주소를 임의로 넣어 보낸다. 그 이미지 파일 주소는 해당 메일 서비스 서버의 주소이다. 그렇기 때문에 수신자가 메일을 읽을 때 눈에는 보이지 않지만 숨어있는 이미지를 화면에 표시하기 위해 메일서비스 서버를 억세스 하게 된다. 그 파일이 억세스 되면 메일을 읽은 것으로 간주하고 그 시간을 메일을 읽은 시간이라고 알려주게 된다.



위쪽 그림이 정상적 이메일인 경우이다. 송신자의 메일 서버가 수신자의 메일서버로 메일을 전달하면 수신자가 메일을 읽을 때 그냥 수신자의 메일서버에서 메일을 읽을 뿐 송신자 서버에 아무 통보가 없다. 그에 비해 아래쪽의 편법을 사용하면 메일 내에 <img> 태그가 들어있고 그 태그가 송신자 메일서버에 있는 이미지 파일을 가르키고 있기 때문에 메일을 보여줄 때 그 파일을 요구하게 된다. 송신자 메일서버는 그 파일이 요구된 시간을 기록하고 그걸 수신자가 메일을 읽은 시간이라고 알려주게 된다.

그런데 최근에는 대부분의 이메일 서비스나 이메일 클라이언트들은 메일 본문에 들어있는 이미지 파일들을 기본적으로 보이지 않게 되어있는 경우가 많다. 이렇게 되어 있으면 메일을 읽더라도 그 안에 안보이게 숨어있는 이미지를 억세스 하지 않기 때문에 심지어 송신자/수신자가 같은 메일 서비스를 사용하더라도 수신자가 웹으로 억세스하지 않고 POP3/IMAP을 통해 이메일 클라이언트를 사용하면 메일을 읽었더라도 수신확인에는 읽지 않았다고 나오게 된다.

결론적으로 이메일 수신확인 서비스라는건 정확하지도 않은 편법일 뿐임으로 너무 믿지 말라는 것이다. 수신확인을 했는데 혹시 언제 읽었다고 나오면 그건 일단 읽었다고 생각해도 큰 무리는 없지만 아직 읽지 않았다고 나오는건 진짜 안 읽은건지 편법이 먹히지 않아 읽었는데 안 읽은걸로 나오는건지 확인할 방법은 전혀 없다는 것이다.
요점은 국내 웹메일들의 수신확인 서비스라는걸 너무 믿지 말라는 것이다.
Posted by nautes

calllog2ical(or iphonelogd)는 아이폰의 통화내역을 iCal로 옮겨주는 역할을 하는 루비 스크립트이다.

아이폰은 내부적으로 sqlite3를 DB로 사용하고 있고 통화목록은 CallHistory라는 이름의 DB로 관리된다.

이 DB는 /private/var/root/Library/CallHistory/call_history.db 에 위치하고 있고 구조는 다음과 같다.

[View DB structure] &lt;- click here


Jail-broken 된 아이폰에 terminal 같은 콘솔 프로그램이 깔려 있으면 아이폰 콘솔에서 다음 명령으로 db를 직접 억세스 할 수도 있다.

% sqlite3 /private/var/mobile/Library/CallHistory/call_history.db

SQLite version 3.5.9

Enter ".help" for instructions

sqlite> SELECT * FROM call;

아이튠에서 sync를 하면 아이폰의 데이터가 백업되면서 이 정보 역시 맥에 저장되게 된다. calllog2ical.rb 스크립트는 이 백업된 내용에서 통화 목록을 읽어 그 내용을 iCal에 개별 이벤트로 집어넣어 준다.


먼저 http://code.google.com/p/iphonelogd/ 에서 프로그램을 다운받는다. 맥에서만 동작하고 현재 버전은 calllog2ical.0.10.pkg  이다.

다운받은 패키지를 실행하면 인스톨러가 실행되어 프로그램이 설치되게 된다. 설치되는 위치는 /usr/local/bin 이다.

설치가 완료되면 먼저 아이폰을 맥에 연결하고 아이튠에서 아이폰을 sync하도록 한다.

싱크가 끝나면 터미널 창을 열고 쉘 프롬프트에서 다음의 명령어를 실행해주면 된다.

% calllog2ical.rb

그러면 백업된 파일에서 통화목록 db를 읽어 각 통화를 위의 화면과 같이 iCal에 이벤트로 넣어준다. 전화번호가 Address Book에 등록되어 있으면 자동으로 이름으로 변환해서 보여주고, 등록되어 있지 않은 번호인 경우 unidentified 로 표시되지만 그래도 url필드에 전화번호는 기록된다.

* 이 스크립트는 디폴트로 'Call Log' 캘린더에 통화목록을 넣어준다. 스크립트를 실행하기 전에 iCal에 'Call Log' 캘린더가 만들어 져 있어야만 한다. 만일 없으면 실행 중 에러를 발생하고 멈춘다.

* 다른 이름의 캘린더를 사용하려면 calllog2ical.rb 뒤에 캘린더 이름을 넣어주면 된다.

Posted by nautes

탈옥(jailbroken) 된 아이폰을 사용하면 비디오를 녹화할 수 있게 된다. 몇가지 어플이 나와 있는데 그 중에 cycorder가 무료이면서도 mjpeg압축을 사용하기 때문에 iPhone Video Recorder보다 훨씬 선명한 화질을 보여준다. Cycorder는 384*288 해상도(4:3 ratio)의 비디오 파일로 녹화를 해 준다.

(Afro-Cuban All Stars의 공연을 직접 찍어 본 것이다. 공연장 뒤쪽이라 무대와 공연자가 작게 보이긴 하지만 낮은 조도에서도 상당히 괜찮은 화질을 보여준다. 이 동영상은 길이가 52초인데 약 11MB 크기이다.)

다만 단점은 녹화 된 비디오 파일의 위치가 /private/var/mobilee/Media/Videos 폴더에 저장되기 때문에 매번 ssh를 통해 접속 한 다음에 ftp등으로 저 위치로 가서 파일들을 가져와야 한다는 점이다. 이게 컴퓨터에 익숙하지 않은 사람들에게는 의외로 불편하다.

그래서 AirSharing을 사용해서 녹화 된 파일을 쉽게 가져올 수 있는 방법을 소개하겠다.


* cycorder와 air sharing은 이미 아이폰에 설치되어 있다고 가정한다. (Cycorder는 jailbroken된 아이폰에서 cydia를 통해 설치할 수 있다. Air sharing은 app store에서 구입하면 된다.)

먼저 air sharing의 설치 디렉토리 이름을 알아내야 한다. 크게 3가지 정도의 방법이 있다.

1. 컴퓨터에서 ssh를 이용해 아이폰에 접속

2. 아이폰에 mobile terminal을 설치해서 직접 쉘을 억세스

3. pc인 경우 iPhoneBrowser를 사용

아이폰의 어플리케이션은 /private/var/mobile/Applications에 설치된다. 다만 설치되는 디렉토리 이름이 어플리케이션 이름이 아니고 아래 화면에서 보이는것처럼 암호같은 숫자로 되어 있다.

각 디렉토리를 열어서 air sharing이 설치된 디렉토리를 찾아야 한다.


디렉토리를 찾았으면 해당 디렉토리 이름을 메모 해 놓는다. (여기서는 383EF131-033B-444......이다.)

이제 컴퓨터에서 ssh로 접속하거나 아이폰에서 mobile terminal 쉘에서 아래의 명령들을 차례대로 실행 해 준다.

% cd /private/var/mobile/Media

% rm -r Videos

% ln -s "/private/var/mobile/Applications/383EF...../Documents/Air Sharing/Public" ./Videos (여기서 383EF로 시작하는 빨간색 부분이 아까 위에서 메모 해 놓은 air sharing이 설치 된 디렉토리 이름이다.)

여기까지 했으면 다 끝난것이다. 이제 cycorder로 녹화를 하고 나면 녹화 된 파일이 air sharing의 Public 폴더에 만들어지기 때문에 아이폰에 air sharing을 실행한 다음 맥이나 PC의 파인더나 탐색기에서 쉽게 가져올 수 있다.

Posted by nautes

아이폰/터치팟에서 가상키보드로 입력을 할 때 가장 불편했던 것 중에 하나가 숫자를 입력하려면 123 키를 눌러 숫자키패드로 바꿔줘야만 한다는 것이었다.

5-row QWERTY keyboard는 일반 키보드의 배열과 마찮가지로 아아폰/터치팟의 가상키보드를 5줄로 만들어 맨 윗줄에 숫자키를 집어넣어서 이 문제를 해결해 준다. Jail-broken된 아이폰/터치팟에 설치할 수 있다.

설치하려면 cydia를 실행한 다음 search를 사용해서 5-Row QWERTY 프로그램을 찾아준다.

kb1.jpg

정식 명칭은 '5-Row QWERTY Keyboard'이다. 이 프로그램을 검색해서 설치해주면 된다.

kb2.jpg

설치가 끝나면 초기화면으로 돌아와서 Settings로 간다.

kb3.jpg

Settings에서 'General'을 선택한다..

kb4.jpg

General 화면에서 'International'을 선택한다.

kb5.jpg

International에서 'Keyboards'를 선택한다.


kb6.jpg

Keyboards에 보면 iKeyEx Keyboards라는 항목이 추가된 걸 볼 수 있다. 여기서 5 Row QWERTY를 ON이 되게 해 준다.


kb7.jpg

이것으로 설정이 모두 끝났다.

이제 실제 키보드를 사용해 보기로 한다. 노트 어플로 가서 보면 키보드가 5줄이 되어서 맨 윗줄에 숫자키가 생긴걸 볼 수 있다.


kb8.jpg

또한 이 상태에서 Shift키를 누르면 숫자키가 일반 키보드 배열에서 숫자키 위의 기호들로 바뀐걸 볼 수 있다.


kb9.jpg

이 뿐 아니고 여기서 '123' 키를 누르면 이 키는 'ABC'로 바뀌고 나머지 기호들과 숫자키패드가 나오게 된다.

kb10.jpg

마지막으로 '123' 모드에서 shift를 눌러주면 그 동안 키보드에는 없던 커서 이동키(←,↑,→,↓, pg up, pg dn, tab 등등)들을 사용할 수 있다.

kb11.jpg

블로그코리아에 블UP하기

Posted by nautes

Scilab1.jpg

이번 2월 12일에 Scilab v5.1을 발표하며 드디어 맥에서도 native 환경을 지원하기 시작하였다. 그 동안은 맥에서는 X11을 띄운 상태에서만 사용할 수 있어서 맥 환경의 장점을 살릴수가 없었었다.

scilab4.jpg

이전 X11환경에서 사용하던 Scilab 4.1.2

scilab5.1.jpg

Mac OS X native 환경에서 실행되는 Scilab 5.1

Scilab은 홈페이지의 설명대로 'The open source platform for numerical computation'이다. 조금 더 쉽게 설명하자면 오픈소스 matlab이라고 생각하면 된다.

문법은 matlab과 약간 다른 부분이 있지만 기능에서는 거의 차이가 없다. Scilab은 프랑스 INRIA에서 개발되기 시작하여서 주로 유럽쪽에서 더 많이 사용되고 있다. Matlab과 마찮가지로 Scilab Toolbox가 있어 다양한 기능을 추가할 수도 있고 Scilab-LavVIEW gateway, Scicos라는 block diagram modeller/simulator까지 있어 실제 현장에서 바로 사용하는데 문제가 없다.

200902171755.jpg

Scicos: Block diagram modeller/simulator

또한 scilab 으로 개발한 알고리즘/코드를 DSP나 마이크로컨트롤러에서 사용할 수 있도록 자동으로 코드를 생성해주는 FLEX toolbox가 있으며 scilab/scicos를 ARM프로세서를 사용하는 임베디드PC에 직접 집어넣을 수 있도록 최적화 된 Scilab-EMB도 제공되고 있다.


* 앞으로 몇번으로 나눠 기본 문법과 matlab과의 차이에 대해 설명하겠다.

Posted by nautes

이전버튼 1 2 3 4 이전버튼