한때 사용했던 CellVic I와 XG라는 PDA를 위해 만든 유틸리티들이다. 요즘 기계에서 작동하는지 확인한 바 없다. 저작권은 모두 BSD 라이센스를 따른다. 배포되는 파일 내의 연락처는 모두 오래된 것들이다.
MAth Friendly Interpreter
mafi는 수학 계산용 인터프리터이다. 1996년께부터 UNIX용으로 만들기 시작해서 중단되었다가 2001년 9월 18일 CellVic용으로 포팅하면서 계속 제작되었다. 제작의도는 어휘, 구문 분석기의 도움없이 파서를 제작하는 것과 공학용 계산기의 구현에 있었다. CellVic에서는 그래픽 함수까지 구현이 되어있지만 UNIX에서의 X-Window는 아직 지원하지 않는다.
이걸로 셀빅회사에서 샘숭노트북 하나 받은 적이 있다. ;)
Wiki Zero: 어플리케이션간 링크
Web 상에서의 Wiki 시스템은 특정주제에 대해 여러사람들의 생각이 보태지고 수정되면서 점진적으로 완성된 형태의 정보를 제공하는 도구로서 사용되고 있습니다.
물론 닫힌 시스템인 셀빅에서는 동일한 과정이 일어날 수는 없습니다만, 정보를 엮어 놓는다는 비슷한 개념으로서 wikiZ(Wiki Zero)라는 핵어플이 만들어지고 있습니다.
작동방식
여섯개의 기본어플에 해당하는 사항입니다. 각 구분자로 둘러싸인 단어를 키워드라고 부르겠습니다.
메모장으로 이동을 원할 경우 [...]로 둘러쌉니다. 목표가 되는 메모장 자료의 첫줄이 키워드가 되어야 하며, 공백은 무시되지 않습니다.
메모장에서 이동하면서 히스토리에 기록되기 위해서는 메모장 내용에 링크가 있어야 됩니다만, 이 경우엔 당연한 거겠죠?
주소록으로 이동을 원할 경우 (...)로 둘러쌉니다. 목표가 되는 주소록의 이름에 해당하는 자료가 키워드가 됩니다.
주소록에서 이동하면서 히스토리에 기록되기 위해서는 편집상태의 메모 필드에서 이동해야 합니다.
일정으로 이동을 원할 경우 <...>로 둘러쌉니다. 목표가 되는 일정의 날짜에 해당하는 자료가 키워드가 됩니다. 날짜의 형식은 정해지지 않았으며 구분자 사이의 모든 숫자를 모아서 날짜를 생성합니다.
단, 2002년 8월 3일과 같이 숫자만 모아도 YYYYMMDD이 되지 않는 경우가 있습니다만, 처리를 하고 있습니다. 예를 들어 <8월 3일>은 올해 8월 3일이 되고, <3월>은 올해, 이번달 3일입니다. 월이라는 글자는 아무런 의미가 없으므로 혼동하면 안 됩니다. 생략가능한 순서는 년, 월, 일 순입니다. 따라서, <오늘>은 항상 오늘을 의미합니다. 굳이 오늘 이라는 단어가 들어가야 하는 것이 아니고 구분자 사이를 공백으로 비워두지만 않으면 됩니다. <today>, <->
이제 문제는 같은 날 일정이 여러개일 경우입니다. 원하는 일정을 띄우기 위해서 일정 메모의 첫번째 줄을 지정합니다. <오늘@세미나@서울>은 오늘은 이미 설명한 날짜를 지정하고 있으며 바로 다음 @가 날짜와 일정 메모의 제목을 구분하고 있습니다. 다음 @는 제목에 포함된 것입니다. 즉, 오늘 날짜의 일정 중에서 첫번째 줄이 "세미나@서울"인 메모를 찾게 됩니다. <10월 3일@예방접종>, <11월 9일@wikix@wikix.org 메일>
일정에서 이동하면서 히스토리에 기록되기 위해서는 일정의 할일을 메모하는 부분에서 이동해야 합니다.
할일로 이동을 원할 경우 `...'로 둘러쌉니다. 목표가 되는 할일의 첫번째줄 내용이 키워드가 됩니다. 왼쪽 따옴표와 오른쪽 따옴표로 둘러 싸면 됩니다.
할일에서 이동하면서 히스토리에 기록되기 위해서는 역시 할일을 메모하는 부분에서 이동해야 합니다.
필기장으로 이동을 원할 경우 {{...}}로 둘러쌉니다. 목표가 되는 필기장 자료의 제목이 키워드가 됩니다.
필기장에서는 에디트필드가 없기 때문에 다른 어플로의 이동이 불가능합니다.
포토앨범으로 이동을 원할 경우 {...}로 둘러쌉니다. 필기장과의 구분을 위해서 {{...}} 형식이 되지 않게 조심하세요. 목표가 되는 포토앨범의 이름이 키워드가 됩니다.
포토앨범에서 이동하면서 히스토리에 기록되기 위해서는 내용을 메모하는 부분에서 이동해야 합니다.
다음과 같은 4개의 메모가 메모장에 있다고 생각합니다.
수자원 대책 <2002년 8월 10일> 세미나 [1.강수량 산정] [2.댐의 건설] [3.수질의 고려] |
1.강수량 산정 지역별로 [최대 강수량]과 [최소 강수량]을 고려하여... [1.1.강수량 산정기법] |
2.댐의 건설 산정된 강수량을 토대로 저류된 수량에 대한 {자료}를... |
3.수질의 고려 수자원 대책에 있어서 수질을 고려하지 않는다면... |
첫번째 메모가 메인이 되며 [...]로 둘러 싸인 부분을 태핑하면 [...] 사이의 문자열을 첫번째 줄로 하는 메모로 이동하게 됩니다. 이동할 메모의 첫번째 줄의 문자열은 [...] 사이의 문자열과 동일해야 하며 추가적인 공백은 허용하지 않습니다. 단, 한줄로서 해당 문자열만 있을 경우는 적절한 메모로 판단하여 이동합니다.
첫째 줄이 동일한 메모가 여러개 있을 경우는 문자열 정렬순으로 최초 메모로 이동합니다.
이동 후 이전으로 돌아갈 때는 엔터키를 누릅니다. 이 히스토리 기능은 최후 256개 까지 가능합니다. 단, 구현의 편의와 메모리의 절약을 위해 RecId에 변화가 없다고 가정합니다.
주의할 점이 있습니다. 지금 돋보기 아이콘을 눌러서 메모장에 있는 아무 메모나 검색을 해 보세요. 그런 다음 검색된 메모를 클릭해서 메모내용을 봅니다. 이제 상/하키를 눌러서 이전/이후의 메모로 계속 이동을 해봅니다. 오류가 날 겁니다.
이는 본 wikiZ의 설치여부와는 상관없는 메모어플의 찾기에 문제가 있는 것입니다. wikiZ 또한 동일한 방법을 사용하므로 wikiZ에서 태핑으로 이동해서 들어간 메모에서는 상/하키를 눌러서 이전/이후의 메모로 이동하는 일이 없도록 주의를 하셔야 합니다. 가능하면 상/하키를 사용하기 보다는 스크롤바를 이용해서 전체 내용을 훑어 보시기를 권장합니다.
v0.4
v0.35 까지
부모어플에서 자식어플을 RequestToApplication()한 상태에서 이동이 일어났을 경우 부모어플까지 히스토리에 추가됩니다.
MyD@ys의 경우 각메모를 RequestToApplication()한 후 MyD@ys로 복귀하지 않고 메플이 바로 종료되는 경우 다시 MyD@ys를 실행하면 오늘날짜가 아닌 메모를 열었던 날짜를 보여주면 히스토리가 작동하게 됩니다. 현재는 오늘날짜만 보여주네요.
MyD@ys에서 이동할 경우 히스토리가 제대로 작동 안 할 수 있습니다.
주소록, 일정, 할일 순서로 자료를 검색하게 되는데 태핑영역의 자료와 동일한 자료가 더 앞쪽의 DB에 있게 되면 그쪽 자료로 돌아옵니다. 이는 같은 AppID에서 서로 다른 DB를 지원하게 되면서 생기는 문제점입니다. 버그가 아니니 알아 두시기 바랍니다.
MyD@ys에서 부른 MemoPlus 지원.
MyD@ys dev. v0.4 지원. 주소록, 일정, 할일을 지원하며 설정방법은 메모장플러스와 같이 MyD@ys 안에서 이동이 한번 발생하면 다음부터는 MyD@ys로 링크됩니다. 단, 주소록, 일정, 할일을 개별적으로 설정해야 합니다. 어느 한곳에서만 이동을 하면 모두 설정되게 할 수도 있으나 사용자의 의도에 반하는 경우가 있을 수 있으므로 그렇게 하지 않습니다.
일정에서의 링크버그 수정, 돌아오기 버그 수정.
자물쇠가 설치되어 있을 경우 자물쇠의 암호를 물어봅니다.
MemoPlus 0.83의 암호묻기와 중복되던 버그 수정.
MemoPlus 0.81를 지원합니다. 앞으로 같은 DB를 이용하는 서로 다른 어플을 지원할 경우 원하는 어플에서 태핑을 하여 한번이라도 이동을 하게 되면 그 어플이 기본 링크어플이 됩니다. 다시 바꾸고 싶을 경우는 다른 어플에서 한번 이동하면 됩니다.
이와 같이, 기본메모장을 []링크어플로 하고 싶을 경우 메모장에서 한번의 이동을 시행하면 다른 어플에서 []로 링크된 자료는 기본메모장으로 이동합니다. 메모장플러스의 경우도 마찬가지로 메모장플러스에서 한번 이동하면 앞으로는 메모장플러스가 []링크어플이 됩니다.
같은 날짜에 여러 일정이 있을 경우 원하는 일정을 지정할 수 있습니다.
암호설정이 되어 있고 비밀자료 숨기기가 설정된 상태에서는 비밀자료로 이동하기 전 암호를 물어봅니다.
기본 어플관리자나 세라트로 빠져나갈 경우 히스토리는 모두 지워집니다. 따라서 엔터키로 어플의 실행이 항상 가능합니다.
약간의 버그를 잡았습니다.
강규희님께서 아이콘을 선물하셨습니다. 감사합니다.
오토싱크 프로그램에서 CVDX 파일을 싱크할 경우 DBM_STRING 타입의 엔터가 제대로 삽입되지 않는 버그가 있습니다. 방금 발견했습니다. 따라서 CVDX로 메모장에 자료를 입력한 경우 엔터값은 '\r'이 아닌 '\n'이 되며 메모에서 태핑을 하면 그제서야 ?로 표시가 됩니다. 도스 파일의 엔터는 \r\n이며, 유닉스 파일의 엔터는 \n인데 왜 셀빅은 유독 \r를 쓰는지 모르겠습니다. 그냥 \n를 쓰면 될텐데요. 아무튼 현재 에디터로서는 \r 엔터를 만들 수는 없으므로 wikiZ가 피해갑니다.
메모장, 주소록, 일정, 할일, 필기장, 포토앨범 여섯가지 기본어플들을 연동시킵니다.
Wiki Zero: wikiZ is a hack application that helps you link data between basic CellVic applications such as Memo, Address, Scheduler, Todo, InkWriter, and PhotoAlbum.
Rules
You can use [TITLE] to link to the Memo application. Then, you should use the TITLE string as the first line of a memo data.
(Address) You can use (NAME) to link to the Address application. Then, you should use the NAME string as the name of an address data.
<Scheduler> You can use <YYYYMMDD> to link to the Scheduler application.
In addition, you might want to specify one event out of many events in the day. <YYYYMMDD@EVENT> is available.
`Todo' You can use `TITLE' to link to the Todo application. Then, you should use the TITLE string as the first line of a todo data.
You can use {{TITLE}} to link to the InkWriter application. Then, you should use the TITLE string as the title of an inkwriter data.
You can use {NAME} to link to the PhotoAlbum application. Then, you should use the NAME string as the name of a photoalbum image.
Assume that the four data are saved in the Memo.
Water Resource <2002-08-10@Seminar@Seoul> [1.Estimation of Precipitation] [2.Construction of Dam] [3.Water Quality in Consideration] |
1.Estimation of Precipitation How to get [The Maximum Rainfall] and ... [1.1.Another Method] |
Based on the estimated precipitation, we can get {The Precipitation Graph}... |
3.Water Quality in Consideration Without water quality management, ... |
The first memo is a main data. In this memo, you can tap on the [...] string to move to the other data.
After one tapping, you can move back by pushing the hardware enter button. Its history will be saved by 256 depth and will be deleted if you exit to the Application Manager or the unsupported applications.
Do not move to next data by pushing the up/down hardware button in the Memo application. Due to the OS' bug, you may meet the "Unexpected System Mode" error.
Dictionary CA for Wordy
Wordy라는 단어암기 프로그램이 사용하는 DB를 검색해서 단어의 뜻을 보여주는 CA Launcher용 프로그램입니다. PC측 Wordy Maker에서 여러개의 단어장을 만들어서 셀빅으로 싱크하면 단어장들이 보입니다.
Test mode로서 [t] <-> [T] 토글버튼입니다. [T]일 경우 test mode가 됩니다. 단어 -> 의미 -> 단어 순으로 보여줍니다.
Range mode로서 [r] -> [R] -> [F] -> [r] 순으로 바뀝니다.
[r]모드는 전체 단어장을 대상으로 작동합니다.
[R]모드는 사용자가 지정한 구간을 대상으로 작동합니다.
[r]모드에서 구간의 시작단어로 이동합니다. [r]을 한번 눌러 [R]이 된 후 좌측키를 누릅니다. 이제 구간의 시작단어를 지정했습니다. 재지정도 마찬가지 방법으로 가능합니다.
[r]로 돌아와 있습니다. 구간의 끝단어로 이동합니다. [r]을 한번 눌러 [R]이 된 후 우측키를 누릅니다. 이제 구간의 끝단어를 지정했습니다. 재지정도 마찬가지 방법으로 가능합니다.
[r]로 돌아와 있습니다. 현재는 아직 전체 단어장을 대상으로 작동합니다. [r]을 한번 눌러 [R]이 된 후 엔터키를 누르면 여전히 [R]인 상태로 남아 있습니다. 이제 부터는 이미 지정했던 구간을 대상으로 작동을 시작합니다.
해제는 [R]을 한번 누르면 [r]로 돌아옵니다. 지정했던 구간은 재지정하기 전까지는 유효합니다.
시작단어와 끝단어 모두 지정되지 않으면 [R] -> [Enter]를 눌러도 [R]모드가 실행되지 않습니다.
시작단어가 끝단어보다 뒤쪽에 있을 경우, 시작단어 -> 단어장의 끝단어 -> 단어장의 시작단어 -> 끝단어 순으로 진행합니다.
[F]모드는 첫글자가 같은 단어들을 대상으로 작동합니다. 단, 상하키를 눌러서 다른 첫글자로 이동할 수 있습니다.
이 모드는 영어단어장의 경우 알파벳 단위로 범위를 지정해서 암기하고자 할 경우 사용되며, 해당 알파벳의 끝단어의 다음 단어는 같은 알파벳의 시작단어가 되어 계속 순환합니다.
Ignore case mode로서 [i] <-> [I] 토글버튼입니다. [I]일 경우 ignore case mode가 됩니다. 검색에서 대소문자를 구별하지 않습니다.
Skip range로서 좌우키로 단어를 이동할 때의 건너뛰기 양을 지정합니다.
babble부터 63개까지의 단어를 보고 싶을 경우
babble을 검색해서 [R]모드 시작단어로 지정
Skip을 50으로 해서 우측키 한번
Skip을 10으로 해서 우측키 한번
Skip을 1로 해서 우측키 두번(총 62번: babble도 포함해서 63개니까)
[R]모드 끝단어로 지정
[R]모드 시작
Timer seconds로서 자동넘김 기능을 사용할 때 원하는 시간간격을 지정합니다.
자동넘김의 방향은 이미 상하좌우 또는 엔터키를 눌렀을 경우 그를 따르며, 한번도 누르지 않았을 경우 우측키를 누른 것과 같이 작동합니다.
자동넘김이 진행 중일 때는 셀빅의 자동꺼짐이 작동하지 않습니다.
자동넘김을 일시정지하고 싶을 때는 넘어가는 쪽의 방향키를 제외한 나머지 방향키를 누르면 멈춥니다. 원하는 방향키를 누르면 다시 시작합니다.
Font로서 입출력 폰트를 지정합니다. 일본어나 중국어를 표시하기 위해서는 11크기의 폰트를 지정해야 합니다.
Dictionary로서 Wordy의 단어장을 지정하며, 이 단어장을 기준으로 작동합니다.
단어 입력창입니다.
Clear로서 단어 입출력창을 비웁니다. //C가 아닙니다.
//V로서 다른 프로그램의 에디트필드에서 //C(복사하기)한 단어를 단어입력창에 붙여넣기할 때 사용합니다.
당연히 단어 출력창입니다.
이 창은 삼등분을 해서 맨 왼쪽을 누르면 "아는 단어니까 테스트에서 제외", 가운데를 누르면 "알았는데 이제 잊어버렸으니까 다시 테스트에 포함", 맨 오른쪽을 누르면
단어장이름: *?현재단어인덱스/전체단어개수(*제외단어수+나머지단어수) DiCA 버전 웹페이지주소
를 표시하며 단어인덱스 앞에 별표가 있으면 테스트에서 제외된 상태를 의미합니다. 다시 포함하고 싶으면 가운데를 누르면 됩니다.
[RF]모드에서는 구간정보를 [...] 사이에 같은 형식으로 표시합니다.
구간 전체단어의 제외는 출력창의 맨 오른쪽을 누른 후 떼지 않고 맨 왼쪽으로 와서 뗍니다.
구간 전체단어의 포함은 출력창의 맨 오른쪽을 누른 후 떼지 않고 가운데로 와서 뗍니다.
이렇게 제외된 단어들을 다시 모두 포함시키고 싶을 경우 [Dv] 팝업리스트를 열어서 현재 선택된 단어장이나, 기타 다른 단어장을 선택하면 해제됩니다. 리스트 바깥 영역을 선택하면 그대로 있습니다.
최대허용 가능 단어수는 10만 단어이며, 그 이상의 단어장에서는 단어인덱스 10만까지만 지원합니다.
새롭게 선택된 단어장에서 하나 이상의 제외된 단어가 생길 경우 테스트모드에서 단어를 넘기는데 약간의 시간지연이 있습니다. 이는 단어의 제외여부를 판단하기 위해 단어인덱스를 가져오는 DBMGetOffset() 함수의 속도가 느리기 때문입니다.
테스트모드 중이라도 단어를 제외시키지 않으면 속도저하는 일어나지 않습니다.
문제 포함/제외시 애니메이션(?)을 선택하면 문제의 이동이 눈에 보입니다. DiCA 윈도의 왼쪽 끝부분 바로 아래, 위 쪽을 누르면 되며, 사각형이 움직이면 애니메이션 지정입니다. 애니메이션되는 시간간격이 짧기는 하지만 그것도 기다리기 싫고 바로 다음 문제로 넘기고 싶은 경우는 선택 안 하면 되겠습니다. 기본은 하지 않습니다.
정렬된 단어장에서 현재 단어의 이전 단어로 이동합니다.
정렬된 단어장에서 현재 단어의 다음 단어로 이동합니다.
[rF]모드에서는 현재 단어의 첫글자를 기준으로 그 이전 글자를 첫글자로 하는 첫번째 단어로 이동합니다.
abacus, abate, abuse, babble, baby와 같을 경우, baby에서 상측키를 누르면 baby의 첫글자 b를 기준으로 이전 글자인 a를 첫글자로 하는 첫번째 단어인 abacus로 이동합니다.
만약 c로 시작하는 단어에서 상측키를 눌렀는데 b로 시작하는 단어가 없을 경우 a로 시작하는 단어를 검색합니다. 발견될 때까지 계속 이동합니다. 만약 이전의 글자를 발견하지 못 했을 경우 단어장의 끝으로 건너뛰어서 검색을 계속합니다.
[R]모드에서는 [R]모드의 시작단어를 보여줍니다.
[rF]모드에서는 상측키와는 반대의 방향으로 다음 글자를 첫글자로 하는 첫번째 단어로 이동합니다.
[R]모드에서는 [R]모드의 끝단어를 보여줍니다.
지정된 단어범위 내에서 무작위로 단어를 검색해서 보여줍니다.
기본적으로 드래그 종료방법을 사용합니다. DiCA 윈도 바깥에서 펜을 누른 후 떼지않고 DiCA 윈도 안으로 들어 와서 떼면 종료됩니다.
또 다른 방법으로는 DiCA 윈도 바깥 영역을 눌러서 종료하는 것입니다. 단, DiCA 내에서 선택한 컴포넌트를 취소하기 위해 펜을 누른 채로 바깥으로 나와서 뗄 경우는 종료되지 않습니다.
후자의 방법이 편하기는 하나, 의도하지 않은 종료를 야기할 수 있습니다. 예를 들면 걸어가면서 단어를 외울 경우 외울 동안 손에 셀빅을 꼭 쥐고 있다가 실수로 액정을 누르는 경우입니다.
이런 일이 절대로 없다고 생각하는 사람은 윈도 바깥을 눌러서 종료하는 방법을 선택하면 되고, 정말 이런 일이 있다고 생각하는 사람은 기존의 드래그 종료방법을 선택하면 됩니다.
최초 설치를 하면 기존의 드래그 종료방법입니다. 바꾸는 방법은 DiCA 윈도가 화면 아래쪽에 있을 때는 타이틀바의 맨 오른쪽 바로 위를, 화면 위쪽에 있을 때는 DiCA 윈도의 맨 오른쪽 바로 밑을 누르면 됩니다.
바깥을 한번 찍어서 종료하는 방법의 경우 작은 사각형이 한번 깜빡거립니다. 드래그 종료방법의 경우 사각형이 윈도 안으로 들어오는 모습을 보입니다.
동일한 철자의 단어가 여러개 있으면 최초의 단어만 검색대상이 됩니다. 예를 들어 byte 라는 소문자 철자의 단어가 둘 이상이면 최초 검색되는 뜻만 검색됩니다.
검색 뿐만 아니라 이동에서도 건너뛰게 됩니다.
이렇게 된 이유는 DB를 순차적으로 읽으면서 출력하는 방식이 아니고 현재 단어입력란에 입력된 단어를 기준으로 이동, 검색을 하는 방식이기 때문에 그렇습니다. 검색기능과 기타 적절한 이동기능을 위해서는 불가피한 선택입니다.
이런 경우 잘 없죠? ^^;
한가지 편법이 있긴 합니다. 제외된 단어는 [T]모드에서 나오지 않기 때문에 byte, byte, cool과 같은 순서일 때 첫번째 byte를 제외시킨 후 좌측키, 우측키를 차례로 누르면 두번째 byte가 나타날 겁니다.
제외시킨 후 우측키를 바로 누르면 현재 단어 byte의 다음 단어인 cool이 나오기 때문에 좌측으로 한번 갔다가 그 단어의 다음 단어인 제외되지 않은 byte가 나오게 합니다. 물론 [t]모드에서는 제외된 단어도 나오므로 이렇게 안 됩니다. :(
대소문자가 서로 다르면 상관없습니다. byte와 Byte는 다른 단어로 취급합니다.
단어장에 없는 단어를 입력한 후 방향키를 누르게 되면 셀빅에서 제공하는 정렬에 의해 다음 단어를 찾아냅니다. 단, 잘 안 맞는 것도 있는 것 같습니다.
단어장에는 있으나 제외된 단어는 [t]모드에서는 모두 보이며, [T]모드에서는 "Not Found!"가 아닌 "Not Matched!"가 됩니다. Skip 지정시 제외된 단어는 개수를 세지 않습니다.
검색이나 건너뛰기가 끝단어를 넘어갈 경우 시작단어로 이동합니다. [T]모드에서는 시작단어에서부터 제외되지 않은 첫단어를 찾습니다.
뒷방향으로 해서 시작단어를 넘어갈 경우는 끝단어로 이동하며, [T]모드에서는 끝단어에서부터 역으로 첫번째 제외되지 않은 단어를 찾습니다.
[t]모드에서 [R]모드의 범위를 설정하거나 기타의 경우 빠른 속도로 모든 단어들을 대충 훑어보고 싶을 때가 있습니다. 그때는 [t]&&[Sv=1]인 상태에서 상하좌우키를 0.5초 이상 누르고 있으면 빨리넘기기를 시작합니다.
JTel이 제공하는 영한사전, 한영사전의 사용자사전(각각 ecustd, kcustd로 시작)을 포함했습니다. 이것을 이용하면 오토싱크없이도 학습을 원하는 단어를 셀빅만으로 입력이 가능하겠습니다. 위 DB는 단어자료가 전혀 없어도 존재하기 때문에 혼동을 피하기 위해 단어가 없을 때는 리스트에 표시하지 않습니다.
영한사전, 한영사전에 이미 있는 단어는 맨 뒤에 공백 정도는 붙여야 추가가 되겠지만요. 맨 앞에 붙이면 단어정렬에 문제가 생길 수 있으므로 맨 뒤에 붙여야 합니다.
셀빅의 DB관리에 문제가 생긴 것입니다. 이 경우는 프로그램의 오류이거나 현재 선택된 단어장을 Wordy에서 삭제한 경우 발생하며, 후자인 경우는 다른 단어장을 선택하면 됩니다. error_code는 셀빅 SDK의 DBM.H 파일에 정의된 내용을 표시합니다.
기타 프로그램의 오류이거나 셀빅의 오류일 수 있습니다.
워디 단어장을 선택하지 않았습니다. [Dv] 팝업리스트로 선택합니다.
셀빅의 메모리가 다 찼습니다.
단어장은 있으나, 비어있습니다.
현재 입력하고 있는 단어를 찾지 못했으며 계속 입력을 하면 뜻을 찾게됩니다.
abort, abuse, acme 와 같은 단어가 순서대로 있을 경우 "abu"까지 입력하면 "abu" 라는 단어는 없지만 "se"를 추가로 입력하면 "abuse"를 찾을 수 있습니다.
현재 입력하고 있는 단어는 앞으로 더 입력해봐도 뜻을 찾을 수 없습니다.
abort, abuse, acme 인 경우, "ab"까지는 "Not Found"지만 "abt"라고 입력하면 "abt"로 시작하는 단어가 없기 때문에 앞으로는 찾을 수 없습니다.
제가 요즘 DiCA를 이용해서 단어를 게을리(^^;;) 외우고 있습니다. 제가 단어를 외우면서 그나마 제일 좋은 방법이라고 찾아낸 것을 소개해 드립니다. Pion의 영어단어 외우기에 소개된 방법을 참고했습니다. DiCA 역시 이 방법을 사용할 수 있게 만들어 졌습니다.
이 방법은 반복학습을 기본으로 합니다. 그리고 시간절약 또한 중요합니다. 우리가 중고등학교 때 단어를 외운다고 하면 의례히 연습장에 철자를 써 가면서 외웁니다. 새까맣게 될 때까지... 그리고 한번 외워졌다고 생각하면 넘어가고는 다시는 안 돌아옵니다.^^;; 연습장이 새까매지는 걸 보고 있으면 뿌듯하기도 하고 이젠 안 잊어버릴 것 같습니다만 어디 그렇습니까.
연습장에 철자를 쓴다는 것은 손의 움직임에 단어의 철자를 기억시킨다는 의미로서, 단어를 눈, 입, 귀, 손으로 외워두면 어느 하나가 잊혀져도 다른 것으로 기억해 낼 수 있다. 뭐 이런 논리로 온갖 수단으로 철자를 기억하려 합니다.
이젠, 그럴 시간은 없는 나이에 접어들었습니다(적어도 저는... ^^;;). 단어학습은 반복과 사용빈도에 있는 것이지 한번에 끝장 낼려는 태도에 있는 것이 아니기 때문에, 다시는 안 잊어버린다는 각오로 한번에 머리에 박힐 때까지 외운다는 것은 어리석을 뿐 아니라 시간도 장난이 아닙니다.
잡설이 길었습니다. 시간절약을 위해서 눈과 입으로만 학습을 합니다. 그리고 한번에 외우려고 하지 않습니다.
이때 중요한 것은 한번 체크한 단어는 혹시나 잊어버렸을까 다시 보면 안 된다는 겁니다. 시간이 없습니다. ^^; 한 며칠 뒤 체크된 걸 지우고 다시 모든 단어를 확인해 봅니다. 어떨까요?
이 방법은 DiCA의 설계단계에서 모두 고려되었습니다.
예전의 습관 때문에 한 단어에서 너무 오래 머무르게 될 경우 [Tv]의 자동넘김을 이용해서 시간을 정해 놓습니다. 아마 시간은 더 절약될 겁니다. 2초로 설정하면 200단어 훑는데 2*2*200이니까 800초, 15분이 안 되네요. 한단어에 철자, 뜻 이렇게 2초씩이니까 2*2*200이 맞겠죠?
저같은 경우 이렇게 해서 한시간 안팍으로 100 단어 정도를 모두 체크합니다. 뭐, 초기에 체크한 건 잊어버렸을 수도 있겠지만요. ^^;; 또 반복해야겠죠? 어차피 쓰면서 외운 것도 반복 안하면 다 잊어버릴텐데요 뭘. 한번 해보세요. :)
셀빅을 사용하다 보면 가끔씩 콜드리셋을 해야만 할 때가 있습니다. 이런 경우 콜드리셋을 하고나면 이전에 사용하던 프로그램 그룹들은 모두 지워져 버립니다. 이럴때는 이전에 사용하던 모든 어플들을 설치한 후 다시 그 그룹들을 생성하고 어플들을 해당 그룹으로 이동하는 반복적인 작업을 해야만 합니다.
이 작업을 자동화하기 위해 만들어진 유틸입니다.
메모장에 저장되는 AutoGrp의 자료형식은 아래와 같으며 메모장의 "비분류" 그룹에 저장됩니다.
AutoGrp 개발: 셀빅DB1, DevKit1, Tdel1, 게임: 블록격파1, 오목1, 기본: 메모장1, 주소록1, 일정1, 할일1, 필기장1, 제어판1, 그룹1: 어플1-10, 어플1-20, 어플1-30, 그룹2: 어플\,2-11, 어플2-21, 어플2-31, 어플2-41, 그룹3: 그룹\:4:,
첫줄은 AutoGrp 만 있어야합니다. 다음은 그룹명: 어플명[01], 들입니다. 모든 어플명 뒤에는 보이기/감추기 여부를 결정하는 1 또는 0이 오고, 다음 ,가 있어야합니다. 마지막 어플명도 마찬가지입니다. 하나의 그룹명이나 어플명 사이에 들어가는 공백을 제외한 모든 공백은 무시됩니다. 그리고 자료에 적힌 순서대로 어플을 보이게 해 줍니다.
그룹명이나 어플명 자체에 :나 ,가 포함된 경우는 각각 \:와 \,로 표현해서 구분자와 구별해야 합니다.
위에서 그룹3 과 그룹:4는 그룹이 없을 경우 그룹만 생성합니다.
위 자료는 [Backup]을 누르면 현재의 세팅을 자동으로 저장할 때 생성됩니다. 이 자료를 위와 같은 형식으로 직접 수정해도 상관없습니다.
위 자료에는 없는 어플이 설치되어 있다면 그대로 둡니다. 위 자료에는 있는 어플이 설치되어 있지 않아도 뭐 어쩌겠습니까? ^^;
CVOS 1.5x 이상에서 AutoGrp 자료에 적힌 순서대로 어플을 보이게 합니다. 유수님의 아이순과 함께 사용하면 좋을 것 같아서 추가했습니다.
어플의 보이기/감추기 여부를 각각 어플이름 바로 뒤의 1과 0으로 구분합니다. 어플이름 바로 뒤의 1 또는 0의 숫자는 반드시 있어야 하며, [Restore]시 어플의 보이기/감추기도 복구됩니다.
따라서, 기존의 AutoGrp 자료는 사용할 수 없으며, 새롭게 [Backup]을 실행한 후 싱크를 해두어야 합니다.
그룹이름이나 어플이름에 : 나 , 가 포함될 경우 바로 앞에 \를 추가해서 구분자와 구별합니다.
PDA users, including CellVic users of course, may not be able to avoid resetting their machines. For this reason, data backup can not be emphasized too much. What should users do right after resetting the CellVic?
The first step, deleting garbage data, is highly recommended to avoid memory fragmentation if you don't need the data. Of course, I don't mean that all these steps should be executed in that order. However, if your CVX's and CVD's are already in a stable status, I would recommend you the steps above.
AutoGrp is a utility that helps you do the third step.
AutoGrp data format is as follows:
AutoGrp Games: Tetris1, Vexed1, GroupName1: Prg\,1-11, Prg1-21, Prg1-30, GroupName\:2: Prg2-10, Prg2- 21,
The first line should contain only "AutoGrp". Pairs of "GroupName: PrgName1, PrgName2, ...," follows. GroupName and PrgName are followed by ':' and ',' respectively. You should prepend '\' immediately before ':' or ',' included in GroupName and PrgName to differentiate these characters from separators. PrgName is followed by '1' or '0' which indicates if the program is visible or invisible.
White spaces included in names are not ignored, but prepended or appended white spaces are ignored.
G roup Na\:me: ;P rgN\,ame11, PrgName20,
"G roup Na:me" is used for a GroupName, the first four spaces (" ") are ignored, and "P rgN,ame1" is used for a PrgName. This program is visible because '1' is appended to the program name.
Don't worry about creating AutoGrp data, it's only for information purpose. You don't have to create the data by hand, instead just press [Backup] button in AutoGrp.
I hope you enjoy it!
CellVic Rescue
AutoGrp을 PC쪽에서 대체할 수 있는 프로그램입니다. 즉, 콜드리셋이 되었을 경우 지정된 디렉토리의 CVX 파일을 원하는 그룹에 설치를 하고 CVD 파일도 설치를 해 줍니다. 추가로 셀빅에 있는 DB를 백업할 수 있습니다.
CVrescue를 실행하면 셀빅에서 싱크를 시작할 때까지 대기합니다. -l 옵션 역시 싱크를 해야만 리스트가 보이므로 착오없기 바랍니다.
CVrescue [-h] [-cConfigFile] [-d] [-l] [-a] [-b[TableName]] [-gGroupName] [-o] [-t] [file...] -c: Specify a config file -d: Delete all records in the CellVic -l: Get the table list -a: Backup all tables in the CellVic -b: Backup the tables or the table given as a argument -g: Backup this group only -o: Backup as overwrite -t: Save the template
-c: 0.2버전까지는 설정파일을 바로 지정할 수 있었으나 0.32부터는 -c 옵션 바로 뒤에 설정파일을 지정해야 합니다. 기본설정파일은 C:\CVrescue.cfg입니다.
-d: CVX, CVD 파일을 설치하기 전 기본자료를 지우고 시작합니다.
-l: 셀빅에 있는 테이블 리스트를 보여줍니다. 이 리스트에서 원하는 테이블을 골라내서 백업할 수 있습니다.
-a: 설정파일에 지정된 테이블을 무시하고 셀빅에 있는 모든 테이블을 백업합니다.
-b: CVX, CVD 설치모드가 아닌 지정한 테이블을 백업하는 모드가 됩니다. -b 바로 뒤에 테이블 이름을 적으면 설정파일에 지정된 테이블은 무시하고 이 테이블만 백업을 합니다. 디렉토리는 현재 디렉토리에 저장합니다. -b와 테이블 이름을 띄우지 않는 이유는 테이블 이름이 -로 시작할 경우 옵션과의 구분을 위해서입니다.
-g: -b 옵션과 함께 지정한 그룹만 백업할 수 있습니다.
-o: -b 옵션과 함께 테이블을 백업할 때 테이블의 속성을 덮어쓰기로 지정합니다.
-t: -b 옵션과 함께 테이블의 Template을 만들어 줍니다.
file...: 설정파일에 있는 cvx와 cvd 디렉토리를 무시하고 여기에 지정한 파일들을 설치합니다. 설정파일의 디렉토리 바깥에 있는 개별파일의 설치가 가능합니다.
아래와 같은 설정파일을 만듭니다.
port: com1 speed: 57600 cvx: c:\cvrescue\cvx cvd: c:\cvrescue\cvd backup: c:\cvrescue\bak MemoDB AddressDB SchedNrDB SchedRpDB TodoDB InkDB PhotoAlbum
port: com1, com2, com3, com4까지만 될겁니다. irda는 안 될것 같습니다. 물론 usb도 안 되기 때문에 셀빅 XG에서는 CVrescue를 사용할 수 없습니다.
speed: 시리얼 속도를 지정합니다.
cvx: 설치할 CVX 파일이 위치한 디렉토리를 지정합니다.
cvd: 설치할 CVD, CVDX 파일이 위치한 디렉토리를 지정합니다.
backup: 백업할 때 CVDX 파일을 저장할 디렉토리를 지정합니다. 이 옵션은 마지막에 위치해야 하며 그 아래의 엔터로 구분된 리스트가 기본으로 백업하고 싶은 테이블을 적어 둔 겁니다. -b 옵션만으로 백업할 때 쓰입니다.
셀빅에 있는 테이블을 백업하기 위해서는 세가지 방법이 있습니다.
설정파일에 지정된 테이블만 백업하기
설정파일에 지정된 테이블 무시하고 옵션에서 지정한 테이블만 백업하기
셀빅에 있는 모든 테이블 백업하기
각각에 대해서 -o 옵션을 지정할 수 있으며, -o 옵션을 지정하지 않으면 생성된 CVDX 파일을 추후 재설치할 경우 셀빅의 같은 테이블의 자료를 보존하며 추가가 됩니다. -o 옵션을 지정하면 재설치시 현재 셀빅에 있는 같은 테이블을 삭제한 후 자료를 설치하므로 위험할 수도 있습니다. 이 속성은 파일 내의 &table write="overwrite"> 부분에서 지정하며 overwrite 또는 append를 설정할 수 있습니다.
이제 셀빅이 콜드리셋됐다고 가정을 해봅니다. 최초 콜드리셋하고 좌표설정한 상태의 셀빅에 CVX를 설치하고 CVD를 설치하게 되면 메모리 변동이 거의 없는 부분들이 먼저 설치되므로 메모리 단편화 현상이 덜 할 겁니다.
위와같은 과정을 거쳐서 CVX, CVD, PIMS를 셀빅에 설치하게 됩니다. 물론 default_cvx라는 디렉토리는 이제 없어야 합니다. 두번 설치하면 안 되니까요.
이제 의문이 생깁니다. CVX 파일들의 그룹을 어떻게 지정할까요? c:\cvrescue\cvx 디렉토리 하부의 구조가 아래와 같다고 생각해 봅시다.
c:\cvrescue\cvx\ c:\cvrescue\cvx\어플0.cvx c:\cvrescue\cvx\어플1.cvx c:\cvrescue\cvx\그룹0\어플2.cvx c:\cvrescue\cvx\그룹0\어플3.cvx c:\cvrescue\cvx\그 룹1\어플4.cvx c:\cvrescue\cvx\그 룹1\어플5.cvx c:\cvrescue\cvx\그 룹1\그룹2?\어플6.cvx
어플0.cvx와 어플1.cvx는 "비분류"에 설치됩니다. 어플2.cvx와 어플3.cvx는 "그룹0"에 설치됩니다. "그룹0"이 없으면 만들어서 설치됩니다. 어플4.cvx와 어플5.cvx는 "그 룹1"에 설치됩니다. 그러면 어플6.cvx는? 왜 저렇게 했는지 모르겠지만 저렇게 했다고 생각하면 "그룹2?"에 설치됩니다.
CVD는 그룹개념이 없으므로 c:\cvrescue\cvd에 모두 넣으면 됩니다. 그래도 어플별로 분류를 해서 보기 좋게 디렉토리 구조를 꾸미고 싶을 경우가 있겠습니다.
c:\cvrescue\cvd\ c:\cvrescue\cvd\데이타0.cvd c:\cvrescue\cvd\데이타1.cvd c:\cvrescue\cvd\어플0\데이타2.cvd c:\cvrescue\cvd\어플0\데이타3.cvd c:\cvrescue\cvd\어 플1\데이타4.cvd c:\cvrescue\cvd\어 플1\데이타5.cvd c:\cvrescue\cvd\어 플1\어플2?\데이타6.cvd
모든 CVD들은 그냥 cvd에 모두 넣은 것과 마찬가지로 설치가 됩니다. 단, PC쪽에서 디렉토리로 구분을 할 수가 있으며 셀빅화면에 설치시 어플의 이름도 같이 표시가 됩니다. 데이타6.cvd는 "어플2?" 어플의 데이타가 되겠습니다.
CVD 설치는 확장자가 .cvd인 CVD 1.0과 1.1을 지원하며 .cvdx인 CVD 2.0도 지원합니다.
CVrescue.exe -d 처럼 -d 옵션을 주게되면 CVX, CVD를 설치하기 전에 셀빅에 있는 오토싱크 대상이 되는 모든 자료를 삭제합니다. 이는 콜드리셋을 하게되면 생성되는 기본적인 자료를 삭제하기 위해 만들었습니다. 저한텐 별로 필요없는 정보같고 또싱크하게 되면 자꾸 PC쪽에 쌓이는 것 같더라구요. 메모장, 주소록, 일정, 할일, 필기장 자료를 모두 삭제합니다. 조심해서 사용하세요.
지정한 그룹만 백업이 가능합니다.
상태플래그 버그수정
기본그룹 생성 버그수정
<content> 태그를 제외한 곳에서의 문자열에서 < > & 등의 문자가 있는 경우의 처리
셀빅에 있는 모든 테이블을 백업할 수 있으며, 개별 설치/백업도 지원합니다. 테이블의 상태를 그대로 유지하기 위해 CVDX 파일로만 백업이 되며 필요할 경우 cvd2cvdx로 CVD 파일을 얻을 수 있습니다.
CVDX 파일설치를 지원합니다. 오토싱크에서 되지 않던 기능들이 정상작동합니다.
DBM_INT4 처리를 지금껏 안 하고 있었네요. ^^; 다행히도 DBM_INT2와 데이타 시작점이 같아서 문제는 없었지만 수정했습니다.
-d 옵션을 통한 CVX, CVD 설치 전 셀빅에 있는 자료지우기
CellVic Rescue
It is a replacement of AutoGrp on the PC side. However, it can be also used for AutoSync immediately after the CellVic is reset.
CVrescue [-h] [-cConfigFile] [-d] [-l] [-a] [-b[TableName]] [-gGroupName] [-o] [-t] [file...] -c: Specify a config file -d: Delete all records in the CellVic -l: Get the table list -a: Backup all tables in the CellVic -b: Backup the tables or the table given as a argument -g: Backup this group only -o: Backup as overwrite -t: Save the template
CVD to CVDX converter
기존의 바이너리 CVD 파일을 텍스트 XML 포맷인 CVDX로 변환합니다. 이 포맷의 장점은 CVD를 생성, 수정하기가 용이하며 별도의 프로그램이 없어도 이런 작업이 가능하다는 것입니다.
예를 들어, 어떤 셀빅어플에서 읽어들이는 CVD 파일이 있는데, 내용을 수정하고 싶습니다. 그런데 도대체 어떤 프로그램으로 이 CVD 파일을 만들었는지 모르겠으며, 원래의 소스도 없는 상황입니다. 이런 경우 cvd2cvdx만 있으면 모두 해결됩니다.
cvd2cvdx data1.cvd data2.cvd
위와 같이 두개의 CVD 파일을 cvd2cvdx로 실행시키면 이 두파일은 모두 CVDX로 변환이 됩니다. data1.cvdx, data2.cvdx라는 파일이 생성됩니다. 물론 CVD 파일 하나만 지정해도 됩니다. ^^; 이렇게 생성된 *.cvdx 파일을 일반 텍스트에디터로 열어보면 대략 다음과 같은 구조로 되어 있습니다.
보시다시피 텍스트로 되어 있어 일반 에디터로도 자료의 추가, 삭제가 가능해집니다. <record>...</record> 사이의 형태로 자료를 추가할 수 있으며 수정 또한 가능합니다. 그 뿐만 아니라 자료의 트리구조도 웹브라우저로 쉽게 알 수 있습니다. 마치 HTML로 홈페이지 만드는 것과 비슷합니다. 기존 바이너리 CVD에서는 쉽게 할 수 없었던 이런 작업을 할 수 있는 것 만으로도 CVDX는 좋은 선택입니다. 물론 태그때문에 파일사이즈는 약간 커지지만, 요즘 같은 세상엔 뭐...
그렇다면, 포토앨범과 같이 텍스트가 아닌 자료가 있으면? CVDX에서는 이런 경우를 위해 바이너리 데이타를 포함하는 방법을 제공합니다. 바이너리 데이타를 정확히 65개의 ASCII 코드로 변환하는 방법인 base64 encoding을 통해 가능해 집니다. 65개 글잔데 왜 base64? 1개는 파일사이즈를 4의 배수로 맞추기 위해 끝부분에 '='를 추가하는데 이 글자는 내용에는 전혀 안 들어가기 때문입니다.
cvd2cvdx [-h] [-c] [-e] [-d] file... -c: base64 encoding for cvdx -e: base64 encoding -d: base64 decoding
-h는 당근 도움말입니다. 참! 이 프로그램은 창문개(M$-Windogs) 프로그램이 아닙니다. 애매쑤개(M$-DOG) 프로그램입니다. 실행에서 cmd를 치면 개창이 하나 뜹니다.
오~! 창문개의 아주 훌륭하고 뛰어난 잡아끌어쑤셔넣기로 탐색기 상에서 CVD 파일을 찍~! 끌어다가 cvd2cvdx.exe에 살짝꿍 놓아주니까 고맙게도 CVDX 파일이 생기네요.
포토앨범 같이 텍스트 자료만 있는 게 아니라 이미지 같은 바이너리 자료도 있을 경우 base64 encoding을 해서 CVDX에 포함시켜 줘야 합니다. 예제는 logo.cvd*에 있습니다. 아래 쪽에 무지 긴 줄입니다.
-c: 오토싱크가 base64를 어떻게 처리하는지 다른 decoding 프로그램들은 잘도 decode하는 자료를 제대로 못 하네요. 그래서 한 줄로 몽땅 모으니까 잘 되더라구요. 원래는 base64 encoding에서는 76컬럼을 넘으면 안 되는데 오토싱크 상에서 자료가 깨지니까 할 수 없이 이렇게 했습니다.
-e: 76컬럼으로 잘라서 encoding합니다.
-d: decoding합니다.
만약에 BMP파일을 보여줄 수 있는 셀빅어플이 있다면
cvd2cvdx -c a.bmp a.enc
라고 하면 한줄짜리 a.enc라는 텍스트 파일이 생깁니다. 이 넘을 <content>...</content> 자리에 엔터없이 <content>여기바로</content> 삽입합니다. 그러면 그자리에 바이너리 자료가 삽입되는 겁니다. 이 예제가 바로 그런 예제입니다. 아래 쪽에 blob type 보이시죠?
설명이 제대로 되었는지 모르겠습니다. 궁금한 점은 comments에 질문해 주시구요. 이 프로그램으로 인해 CVDX 파일의 활성화를 꿈꿔봅니다. 인터페이스가 좀 지랄 같지만요. ^^;;
<content> 태그를 제외한 곳에서의 문자열에서 < > & 등의 문자가 있는 경우의 처리
CVDX에서 CVD로 변환시 엔터처리 버그를 잡았습니다.
CVDX 파일을 CVD 파일로 역변환이 가능합니다. 생성되는 CVD 파일의 버전은 1.1이므로 최초의 CVD 파일과는 다를 수 있습니다만, 셀빅으로 싱크가 된 후에는 아무런 차이도 없습니다.
사용방법은 CVD 파일을 변환할 때와 마찬가지이며 CVD 파일과 CVDX 파일을 섞어서 지정해 주어도 확장자로 구분하므로 각각의 작업을 수행합니다.
CVD 파일을 CVDX 파일로 변환할 때는 확장자만 바뀐 파일이 생성되었으나, CVDX 파일은 여러개의 테이블을 포함할 수 있으므로 테이블명.cvd를 파일명으로 해서 생성합니다.
태그들의 순서는 참고문서에 나온 순서를 그대로 지켜야 합니다.
Hack for MoneyPlus
금전출납부+ Ver 1.13을 사용하면서 가장 불편했던 점은 자료가 자동으로 백업되지 않는다는 것이었습니다. 수작업으로 전체그룹을 메모장으로 내보내기해야 하며, 읽어 들일 때는 여러개로 나누어져서 내보내기된 자료들을 일일이 모두 읽어 들여야합니다.
그 뿐만이 아니라, 만의 하나 콜드리셋이라도 된다면 어지간히 부지런하게 내보내기를 자주 하지 않은 이상 며칠 정도의 자료는 잃게 될 것입니다.
이런 불편함에 결국은 손을 대고야 말았습니다. hack4MoneyPlus는 말 그대로 MoneyPlus(금전출납부+)를 위한 핵 프로그램입니다. 핵으로 등록을 해서 사용할 수도 있고 독립적으로 실행할 수도 있습니다.
기본적인 기능으로 [Backup], [Restore]가 있습니다. [Backup]을 누르면 금전출납부+의 모든 자료들을 메모장으로 내보내기합니다. 그 전에 메모장에 이미 금전출납부+의 자료가 있을 경우 중복을 피하기 위해 기존의 자료는 삭제합니다. 내보내기는 약 4000 바이트 단위로 메모장에 나뉘어져 저장됩니다.
이렇게 메모장으로 내보내기된 자료는 [Restore]를 누르면 금전출납부+의 자료로 변환됩니다. 단, 이 경우에도 기존의 금전출납부+에 있는 자료와의 중복을 피하기 위해 기존의 금전출납부+ 자료는 모두 삭제합니다.
단, 한가지 가정이 있습니다. 금전출납부+에서는 DB의 이름을 지정할 수 있게 되어 있습니다만, h4MP를 사용하기 위해서는 기본 DB명인 MoneyPlus만 사용해야 합니다. 최초 금전출납부+를 설치하고 다른 작업없이 바로 사용을 한 경우가 되겠습니다.
이제 남은 것은 PC로 오토싱크할 때 같이 싱크되게 하는 것입니다. 그렇지 않다면, 이것 역시 매번 백업/복구를 오토싱크와는 무관하게 수작업으로 해줘야 하기 때문입니다. 메모장은 기본으로 PC와 싱크되기 때문에 [Backup]한 자료는 PC와 싱크가 될 것입니다.
따라서, 이 [Backup] 작업을 오토싱크 직전에 자동으로 해주면 됩니다. 이를 위해서 [ ]hack4MP라는 체크박스가 있습니다. 이 체크박스를 선택해 놓을 경우 핵 프로그램으로 작동됩니다. 셀빅을 크래들에 꽂게 되면 오토싱크를 할 것인지를 묻는 대화상자가 뜨는데 그 바로 전에 [Backup] 작업을 수행하게 됩니다. 화면에는 아무런 표시도 되지 않습니다. 자료의 양에 따라 약간의 지연이 있은 후 오토싱크 메시지가 뜰 것입니다.
[ ]hack4MP 체크박스를 선택해 놓지 않으면 핵은 작동하지 않아서 크래들에 꽂아도 [Backup]하지 않습니다.
PC쪽에서는 자료의 업데이트가 없다고 생각합니다. PC쪽 금전출납부+ 프로그램이 없기 때문입니다. 따라서, [Restore]는 자동으로 이루어질 필요가 없습니다. 혹시라도 셀빅 쪽의 자료에 문제가 생겼다면 [ ]hack4MP 체크 해제하고 오토싱크하는 것 잊지 마세요.
내부 코드를 수정했습니다.
메모장의 최대크기가 5KB인데 50KB인걸로 착각을 했습니다. 덕분에 자료가 많은 경우 콜드리셋까지 가는 것 같습니다. ^^; 금전출납부+의 경우 아웃룩싱크를 위해서 4KB로 쪼개는 것 같습니다. 똑같이 4KB로 쪼갭니다.
강규희님께서 아이콘을 선물하셨습니다. 감사합니다. (2002-07-05)
빈 거래처나 노트가 DB에 생성되는 버그를 잡았습니다.