Monthly Archive for November, 2007

Remove SVN Folders(Shell scripting)

요즘들어  상당 수의 플래시 오픈소스 개발로 인해 버전관리 프로그램을 많이들 사용하고 있다.

버전관리의 효율적인 측면에서는 인정하지만 최종소스을 공유할 시 각 폴더에 들어있는 .svn 폴더로 인해 상당히 괴로울(?) 때가 있을 것이다.

물론  대표적인 Subversion 윈도우용 쉘프로그램인 TortoiseSVN 에서는 최종소스를 익스포트할 수 있게 해주는 기능이 존재하지만 이 기능은 해당 SVN 시스템에 귀속된 채 관리되는 것이라 만약 내부의 .svn 폴더가 임의로 삭제되었거나 변경이 되었을시 익스포트를 못 할 경우도 있다.

하지만 아래와 같이 shell script 를 이용하여 레지스트리를 편집하면  전혀 SVN 프로그램에 영향받지 않고서도 손쉽게 .svn 폴더를 삭제할 수 있게된다.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN]
@=”Delete SVN Folders”

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN\command]
@=”cmd.exe /c \”TITLE Removing SVN Folders in %1 && COLOR 9A && FOR /r \”%1\” %%f IN (.svn) DO RD /s /q \”%%f\” \”"

사용방법은

1. 임의의 텍스트 파일을 생성한다.
2. 위 스크립트를 복사하여 붙여넣기를 한다.
3. 파일명을 deleteSvn.reg 로 변경한다. (파일이름은 상관없다 단, 확장자는 reg)
4. 생성한 reg 파일을 더블클릭하여 레지스트리에 등록한다.

위 과정을 거친후에  .svn 을 포함하고 있는 폴더에 마우스를 가져다가 우클릭을 하면
‘Delete SVN Folders’ 라는 새로운 메뉴가 보일 것이다.
이 명령을 실행하면 그 폴더를 포함하여 자식폴더까지 모든 .svn 폴더가 삭제될 것이다.

단, 주의사항은 반드시 .svn 폴더를 제거하려고 하는 소스의 복사본으로 실행을 해야한다는 것이다.
그렇지 않으면 원본 svn 폴더가 삭제될 것이다.

download registry file

reference from article below
http://weblogs.asp.net/jgalloway/archive/2007/02/24/shell-command-remove-svn-folders.aspx

why cannot we embed Cyrillic

다국어(multi-language) 작업시 폰트임베딩 문제는 적어도 누구나  한번 쯤은 겪여 보았을 것이다.
임베드하게되면 너무나도 용량이 커져버리게 되는 아시아국가 문자, 너무나 생소하여 원하는 문자들이 제대로 임베드되었는지 알 수 없는 유럽이나 남미쪽의 라틴계열의 문자들…이 모든것이 웹개발을 하는 개발자들이 유의해야만 하는 사항일 것이다.

용량문제에 있어서는 특별히 디바이스 폰트를 사용하지 않고 임베드를 사용할 경우 어느정도의 용량증가는 필히 감수해야 할 부분이라서 이부분은 제외하고 대신 정확한 폰트 임베드에 대해서만 글을 적어보려고 한다.

제목에서 언급한 키릴문자(cyrillic)는 동유럽쪽에서 많이 사용하는 문자로 러시아나 불가리아,우크라이나와 같은 나라에서 사용하는 문자이다. (e.g.  фваыафиывапывап)
일반적인 라틴문자 이외에 특수한(?)  문자의 대표라 할 수 있는  키릴문자의 임베드에 대해 살펴보겠다.

플래시에서 폰트를 임베드하는 방법은 대표적으로 2가지로 나눌 수 있다.
첫번째는 직접 스테이지에 Text tool 을 사용하여 Dynamic textfield 를 생성하여 임베드하는 방법과,
두번째는 라이브러리에 있는 font symbol(Library-New Font) 을 사용하는 경우이다.

‘나는 키릴문자가 제대로 임베드 되는데 왜 안된다고 그러지?’ 라고 반문하는 사람이 있을 것이다.
맞는 말이다. 하지만 임베드가 가능하다는 사람은 첫번째 방법으로 직접 임베드를 한 경우 일것이다.

만약 두번째 방법으로 폰트를 임베드하려고 하면 키릴문자는 임베드가 안되었다는 것을 알 수 있을 것이다.(각각의 방법으로 생성된 임베드파일 크기에서 차이가 있음)
이것은 font symbol 을 사용할 경우 폰트 임베딩 방식이 시스템의 코드페이지(codepage)에 따라 달라지게 때문에 발생하는 문제이다. 즉, 국가마다 사용하고 있는 OS의 언어설정에 따라 임베드되는 폰트범위에 차이가 있다는 말이다.
만약 키릴문자를 사용하고 있는 러시아어나 우크라이나어로 OS의 언어 코드페이지가 설정되어있다면 두번째 방법으로도 임베드가 가능할 것이다. 대신, 그쪽 환경에서는 반대로 한글이 임베드가 안될 것이다.

font symbol 을 사용하여 폰트를 임베드하면 OS의 국가코드페이지범위와 Basic Latin, Latin 1 의 범위(unicode standard)까지 임베드가 가능하다. 물론 로컬환경에 따라 다를것이다.(대부분의 코드페이지에서는 라틴문자를 포함한다)
위 범위는 기본 라틴계열의 영어권국가와 프랑스어,독일어,스페인어와 같은 문자를 모두 표현할 수 있다. 하지만 헝가리어 같은 경우 Latin Extended A 까지 포함해야 모두 표현이 가능하다.
따라서 두번째 방법으로 폰트를 적절하게 임베드하는 방식은 코드페이지를 강제로 바꾸는 방법밖에 없다.(제어판–>국가및 언어옵션–>고급–>유니코드를 지원하지 않는 프로그램용 언어–>재부팅)
하지만 이방법은 너무 번거롭다.

Adobe에서도 font symbol 을 이용한 다국어 작업시 폰트 임베드 문제는 로컬시스템 환경에 영향이있으므로 첫번째 방법으로 직접 텍스트 필드를 생성하여 임베드하는 것을 권장하고 있다.

위 모든사항을 고려할 때 가장 안정적으로 다국어용 폰트를 임베드 하려면, 첫번째 방법을 사용해야할 것이다. 또한 임베드하려는 폰트가 해당문자(glyph)가 포함되어있는지 확인해 봐야한다.
대표적인 유니코드 폰트인 Arial 이나 Times New Roman 그리고 폰트뒤에 키릴문자(cyrillic)의 약자인 CYR 또는 CR  과 같은 첨자가 붙는 폰트를 사용할 경우 해당폰트를 표현하는데 무리가 없을것이다.

as3.0 의 경우는 hasGlyphs 과 같은 해당문자의 유무여부를 판단해주는 메서드가 존재하므로 이를 활용하면 좀더 안정적인 폰트 임베드가 가능할 것이다.

근데 왜 actionscript 로 character 임베드범위를 제어 못하게 했을까?….아님 할수 없는것일까?

download sample files


reference from articles below
http://www.quasimondo.com/archives/000211.php
http://www.actionscript.org/forums/showthread.php3?t=108546&highlight=Cyrillic
http://www.unicode.org/