간단한 텍스트를 기반으로 Sequence Diagram 을 만들어낼 수 있다.

접속해보면 사용 방법을 바로 알 수 있음.


https://www.websequencediagrams.com/

샘플에 나눔고딕을 적용했는데, 실제로 배포해야 하는 것이 귀찮...

그래서 방법을 찾다가 심플하게 구현하는 방법이 있길래 알려드립니다.


구글웹폰트를 활용하는 방법이고요, 상업적인 용도로도 무료라고 하네요.


사용방법은 매우 간단합니다.

구글에서 작성해둔 css파일을 import 한 뒤에 폰트를 사용하면 끝입니다.


사용방법 : ex) css에서 p 태그에 폰트 설정하는 경우

@import url(http://fonts.googleapis.com/earlyaccess/nanumgothic.css);

@import url(http://fonts.googleapis.com/earlyaccess/nanumgothiccoding.css);


....

/* 나눔고딕 */

p { font-family:'Nanum Gothic'; }

...

/* 나눔고딕코딩 */

p { font-family:'Nanum Gothic Coding'; }


해당 CSS 링크로 가 보면 실제 코드를 볼 수 있습니다.

어쨌든 로딩시간이 있다는 웹폰트의 단점은 그대로.


구글웹폰트 : http://www.google.com/fonts/earlyaccess

위 링크에서 Nanum을 검색하면 사용방법과 지원하는 폰트를 확인할 수 있으니 참고하세요.


몇년전에 Doxygen 주석으로 PDF를 생성하려다 포기했었는데, 월요일에 도전했다가 우연찮게 성공했습니다. ^^;


현재 Doxygen 주석은 다 작성되어 있고, html API 문서를 생성할 수 있는 상태라고 생각하고 그 이후부터 설명하겠습니다.

모르면 이건 검색해보면 자료가 많아요 ^^;


일단 필요한 건 다음과 같습니다.

1. kotexlive2012-full-20130309.exe (http://faq.ktug.org/faq/KoTeXLive)

2. Ghostscript 9.07 for Windows (http://www.ghostscript.com/download/gsdnld.html)


그리고 GhostScript 명령어를 콘솔에서 찾을 수 있도록 환경변수의 Path에 등록해줍니다.

- C:\Program Files\gs\gs9.07\bin


Doxywizard를 실행하여 Wizard 탭의 Output에서 LaTex를 체크합니다. 그 아래 세부 옵션은 취향대로 선택하세요.

 - 사용하기에는 링크 기능이 있는 첫번째가 편하지만 링크때문에 컴퓨터로 보면 좀 지저분합니다. 편하기로 따지자면 html이 훨씬 좋으니 전 2번째를 추천합니다.


사용이 더 편리하고 이쁜 HTML을 놔두고 굳이 PDF를 만드는 이유는 외부 배포를 위해서입니다. 그런데 수정해야 할 점이나 버그 목록, 이런 것들을 꼭 추가해야 할 필요는 없겠죠.

Expert 탭의 Build에서 다음 4가지의 체크를 해제합니다.

GENERATE_DEPRECATEDLIST 같은 경우는 필요하다고 생각하지만 번역이 마음에 안 들어서 제외했습니다.


제가 해결한 부분이 바로 이 옵션인데요, 항상 make 할 때 오류가 발생했었는데 다음의 옵션을 설정한 후 오류가 발생하지 않게 되었습니다.

뭐... LaTex에 batchmode 옵션을 추가해준다는 것 같네요. 설명에 if errors occur 보고 혹시? 하는 마음에 체크 해봤는데 되더라구요 ^^;


그 다음 Doxygen을 실행하면 출력 디렉토리에 latex가 생기는데요, 여기서 refman.tex 파일을 텍스트 편집기로 열어서 다음 부분을 수정합니다.

 - \usepackage{hfont} => \usepackage{kotex}

수정이 끝났으면 저장하고, make.bat 파일을 실행하면 refman.pdf 파일이 생성됩니다.


제 개인적인 생각으로는 html이 훨~씬 더 좋으네요.

가끔 무조건 PDF 형식으로 만들어달라고 요구하는 업체가 있어서... 이럴땐 유용할 거 같습니다.


경고 : 레지스트리 조작에는 백업이 필수입니다! 다음 사례를 참고

 1. 오늘 TabProcGrowth를 삭제할 경우 IE가 시작과 동시에 죽는 현상이 발견되었다.

 2. SysInternals의 ProcMon.exe 로 TabProcGrowth 레지스트리를 확인해보니 IE가 다음 2곳의 레지스트리에도 접근하는 것을 확인하였다.

  2.1. HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Main

  2.2. HKEY_CURRENT_USER\Software\Classes\VirtualStore\MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Main

 3. 위의 레지스트리도 삭제한 후에 정상동작을 확인했다.

 4. 위의 레지스트리 값이 있으면 삭제하도록 수정된 레지스트리 파일과, IE가 안 뜰 경우를 대비해 TabProcGrowth를 0으로 설정하는 레지스트리를 추가했다.


요즘 기술지원을 하다보니, ActiveX가 정상동작하지 않는다는 연락을 많이 받는다.

계속 설치해도 또 설치하라고 뜨는 현상이 대부분.

원인이야 여러가지 있겠지만, 결과적으로 IE가 64비트로 실행되기 때문이다.


Internet Explorer 9

이 경우는 먼저 IE 바로가기의 경로를 먼저 확인해봐야 한다.

IE 바로가기의 속성에서 "대상"이 "C:\Program Files\Internet Explorer\iexplore.exe" 로 되어 있으면 "C:\Program Files (x86)\Internet Explorer\iexplore.exe" 으로 수정하여 32비트 IE를 실행하도록 한다.

이것은 64비트 윈도우에서 IE9를 사용할 경우에만 적용된다.


Internet Explorer 9 & 10

또 한가지는 LCIE(Loosely Coupled Internet Explorer)가 제대로 동작하지 않아서 발생하는 경우다.

Windows 8 사용자라면 90% 이상은 이 문제일 것이라고 생각한다.


LCIE와 관련된 값은 여러가지가 있지만, 내가 지원했던 사용자는 다 TabProcGrowth 레지스트리 문제였다.


1. 다음 레지스트리에 TabProcGrowth가 있으면 삭제한다. (어려우면 첨부된 LCIE 활성화 레지스트리 파일 사용)

 - HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main

 - HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Main


2. 만약 IE가 실행되지 않을 경우, 다음의 위치도 확인하여 TabProcGrowth가 있으면 삭제한다. (2013년 06월 03일 추가)

 - HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Main

 - HKEY_CURRENT_USER\Software\Classes\VirtualStore\MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Main


3. 그래도 안되면 포기하고 LCIE 비활성화 레지스트리 파일을 사용하여 TabProcGrowth를 설정한다. (원복은 아니지만 비슷한 개념)


LCIE 활성화 레지스트리

RemoveTabProcGrowth.reg


LCIE 비활성화 레지스트리 (LCIE 활성화 후 IE가 동작하지 않으면 원복을 위해 사용)

ResetTabProcGrowth.reg


안랩에서 배포하는 프로그램- 추천

안랩에서도 IE 64비트 실행을 방지하는 프로그램을 내놨네요. 삼성카드에서 배포하는 것을 보고 가져왔습니다.

아무리 수정해도 악성 툴바들이 매번 원복시키는 경우가 골치 아팠는데, 안랩에서 배포하는 것이니 이런 것에 대한 처리가 잘 되어 있겠죠?

IE가 64비트로 실행되는 경우 정리 (참고한 사이트)



기본 내용 참고 사이트

 - 2가지 모드의 Internet Explorer 10 과 ActiveX

 - 64비트 윈도우에서 Internet Explorer 10 이 항상 64비트로만 실행된다면?

 - Internet Explorer 10 32비트 실행

 - IE10 자동 업데이트와 64비트 ActiveX 호환성 문제



이 포스트는 FireBreath의 동영상 튜토리얼을 정리한 내용입니다.

아래 사전 설정의 프로그램들이 이미 설치되어 있어야 합니다.


사전 설정

1. git 설치

2. Python 설치

3. cmake 설치


튜토리얼 실행

1. FireBreath 가져오기

c:\code\tutorial>git clone https://github.com/firebreath/FireBreath.git --recursive -b firebreath-1.7


2. fbgen.py를 실행하여 FireBreath 플러그인 프로젝트 (TutorialTestPlugin) 생성

c:\code\tutorial>python.exe fbgen.py

Plugin Name []: Tutorial Test Plugin

Plugin Identifier [TutorialTestPlugin]:

Plugin Prefix [TTP]:

Plugin MIME type [application/x-tutorialtestplugin]:

Plugin Description []: Test plugin for the tutorial

Plugin has no UI [false]:

Company Name []: FireBreath Team Unicorporated

Company Identifier [FireBreathTeamUnicorporated]:

Company Domain [firebreathteamunicorporated.com]:


3. c:\code\tutorial\FireBreath\projects 에 생성된 TutorialTestPlugin 디렉토리를 C:\code\tutorial 로 이동


4. c:\code\tutorial\TutorialTestPlugin> 에서 다음을 실행

c:\code\tutorial\TutorialTestPlugin>git init .

c:\code\tutorial\TutorialTestPlugin>git add .

c:\code\tutorial\TutorialTestPlugin>git commit -m "Initial commit with just the project"

c:\code\tutorial\TutorialTestPlugin>git submodule add https://github.com/firebreath/FireBreath.git firebreath

c:\code\tutorial\TutorialTestPlugin>git submodule update --init --recursive


5. 사용할 VS 버전에 맞는 명령어 실행하여 VS 프로젝트 생성 (여기서는 VS 2010을 사용함)

c:\code\tutorial\TutorialTestPlugin>firebreath\prep2010.cmd . build


6. 생성된 VS 프로젝트 (build\FireBreath.sln) 실행

c:\code\tutorial\TutorialTestPlugin>start build\FireBreath.sln


7. TutorialTestPlugin 프로젝트 빌드


8. c:\code\tutorial\TutorialTestPlugin\build\bin\TutorialTestPlugin\Debug의 npTutorialTestPlugin.dll 을 COM에 등록 

c:\code\tutorial\TutorialTestPlugin>cd build\bin\TutorialTestPlugin\Debug

c:\code\tutorial\TutorialTestPlugin\build\bin\TutorialTestPlugin\Debug>regsvr32 npTutorialTestPlugin.dll


9. C:\code\tutorial\TutorialTestPlugin\build\projects\TutorialTestPlugin\gen\FBControl.htm 파일을 WebBrowser로 확인


10. 웹브라우저의 개발자 도구의 콘솔에서 다음 명령어들을 입력하여 확인 가능

> plugin().valid

  true

> plugin().echo("test text")

  "test text"

> plugin().echo([1,2,3,4,5])

  [1,2,3,4,5]

>


끝!

calc : 계산기
charmap : 문자표
cleanmgr : 디스크 정리
clipbrd : 클립보드에 복사된 내용 표시
cmd : 명령 프롬프트
sysedit : 시스템 구성 유틸리티의 실행 목록을 편집
desk.cpl : 디스플레이
dxdiag : 다이렉트 x 및 시스템 정보
eudcedit : 사용자정의 문자 편집기
explorer : 윈도우 탐색기
maqnify : 돋보기
mobsync : 동기화
mmc.exe : 콘솔 루터
msconfig : 시스템 구성요소 유틸리티
msinfo32 : 시스템 정보
mspaint : 그림판
notepad : 메모장
osk : 화상키보드
recent : 최근 사용 문서
regedit : 레지스트리 편집기
system.ini : 시스템 구성 편집기
taskmgr.exe : 작업관리자
telephon.cpl : 전화 및 모뎀 옵션
timedate.cpl : 날짜 및 시간
winver : 윈도우 버젼 확인
wmplayer : 윈도우 미디어 플레이어
wordpad : 워드패드

제어판 관련
access.cpl : 내게 필요한 옵션
appwiz.cpl : 프로그램 추가/제거
control : 제어판
control admintools : 관리 도구
control userpasswords : 사용자 계정
control userpasswords2 : 사용자 계정(고급)
hdwwiz.cpl : 새 하드웨어 추가
intl.cpl : 국가 및 언어 옵션
joy.cpl : 게임 컨트롤러
main.cpl : 마우스
mmsys.cpl : 사운드 및 오디오 장치
ntbackup : 백업 및 복원 마법사
powercfg.cpl : 전원 옵션
sysdm.cpl : 시스템 등록정보
wscui.cpl : 보안센터

네트워크 관련
inetcpl.cpl : 인터넷 옵션
mstsc : 원격 데스크톱 연결
netstat : 열린 포트와 TCP / IP 프로토콜 정보
ncpa.cpl : 네트워크 연결
ping 주소 : 핑 테스트
telnet open 주소 : 텔넷 접속
ipconfig : ip주소 확인

오늘 Doxygen을 다시 설치하면서 전에 겪었던 한글 깨지는 문제를 또다시 겪었다.
인터넷을 뒤져보니 다 정확하지 않은 답 뿐이다. 백날 DOXYGEN_ENCODING 값을 바꿔봤자 소용없더라... ㅡㅡ;

현재 버전에서 바뀐건지는 모르지만 소스 내용이 한글로 표현되게 하려면 DOXYGEN_ENCODING가 아니라 expert의 input에 들어가서 바꿔야 한다. EUC-KR로.

Visual Studio 에서는 기본적으로 소스파일의 인코딩이 EUC-KR로 되어있다. CP949로 해도 동일하지 싶으다.

아이폰이라 쓰기 힘드네... 자세한건 시간 생기면 그때.

iPhone 에서 작성된 글입니다.
난 정보통계학과를 나왔다.
따라서 전산학에 대한 지식은 거의 없는 편이지만...
아... 변명부터 하고 시작할랬는데, 생각해보니 선택교양과목으로 컴퓨터개론을 들었었다. ㅋㅋ

여튼 난 전산학 지식이 없는 건 맞다. 컴퓨터 개론 시간에는 친구들 대출 돌려막기가 유행했을 정도로 수업은 별 관심도 없었다. 그 당시만 해도 소프트웨어와 컴퓨터는 별개라고 생각했다.

리버스 엔지니어링을 해보려고 어셈블리를 좀 보다가 보니 2의 보수 얘기가 나왔다.
그래서 예전에 잠깐 들었던... 하지만 이해는 하지 못했던 내용.

그때 교수님의 설명은 이러했다.
"1은 0으로, 0은 1로 바꾸는 것이 1의 보수이고, 1의 보수에 1을 더한 것이 2의 보수입니다"
"2의 보수는 컴퓨터에서 뺄셈을 구현하는데 사용하니 알아 두셔야 합니다"

왜 1의 보수에 1을 더하는 것인지가 궁금해졌지만 책에 설명이 없어서 결국 그냥 머리속에서 지워버렸다.

그런데 오늘 어떤 블로거의 글에서 해답을 얻었다. 다음은 정확한 글은 아니고 기억에 의존해 쓴 글이다.
1byte를 예로 들면 제일 처음 1비트는 부호로 사용하고, 양수에 128가지 수, 음수에 128가지의 수를 둘 수 있다. 0은 표현해야 하니까 양수는 0부터 127까지, 음수는 -127부터 -0까지 하면 된다(1의 보수). 나는 이것이 좋지만 사람들은 0과 -0이 둘 다 사용된다는 것이 못마땅했나보다. 그래서 음수는 -128부터 -1까지로 정하였고, 양수보다 음수가 하나 더 많아졌다(2의 보수).(-128 ~ 127)
물론 더 검색을 해봤기 때문에 2의 보수가 뺄셈이 더 편해서 (계산 후 +1을 해줘야 한다) 그렇게 정했다는 글도 봤다. 하지만 나는 위 얘기가 이해가 더 잘되고 와 닿는다.

이 글 쓰면서 생각난건데, 만약 0과 -0이 따로 존재한다고 생각해보면 이건 또 zero hell 이 될 것 같다. 0과 -0은 수학적으로 같아야 하지만 비트는 분명 틀릴테니까.

뭐 이제 누가 나에게 2의 보수를 왜 쓰냐고 물어본다면 그냥 뺄셈 때문이라고 말하진 않을 것 같다.

참... 이건 내 생각인데, 2의 보수가 "2의 보수"라는 이름이 붙은 이유는 1의 보수에 1을 더하기 때문에 붙여진 이름이겠지? ㅡ_ㅡ;

갑자기 왠 벌레?
저놈은 벌레로 태어나 전세계 개발자들의 주둥이에 엄청난 영향을 끼친 녀석이다.
저 벌레가 Mark II 의 전선사이에 들어가 컴퓨터를 고장내지 않았다면 아마도 우리는 지금 버그, 디버깅이란 말을 사용하고 있지도 않겠지.

미국 스미소니언 박물관에 보관당하고 계신 벌레님이시다.
일단은 Subversion과 Trac을 설치하고 두개를 연동시켜 두었다. 커밋할 때 티켓 번호를 입력하지 않으면 커밋이 안되도록... 과거의 경험으로 볼 때 이건 필수 기능이다.
올 초에 trac을 설치했을 때, 강제성이 없었기 때문에 사용하지 않았던 실패경험이 있거든.

뭐... 사실 SVN도 파일서버처럼 쓰고 있기는 하지만, 내가 "하대리의 하루"라는 제목으로 세미나 한 번 하면 조금은 변하지 않을까? (어느 블로그에서 본 방법)

답답하다.

여기 와서 꽤 많은 변화를 시도하였는데 먹힌 것은 Beyond Compare 밖에 없다.

뭔가 새로운 것을 도입하려고 하면 귀찮게 왜자꾸 이러냐고 한다.
trac도, SVN도, 스토리보드, 짝 프로그래밍도 모두 실패했다.
혼자 시도하고 혼자 끝났다.

개발자는 보수적이라는 누군가의 말을 뼈져리게 느꼈다.
아마 노력없이 변화되는 것이 아니라면 절대 반겨주지 않을 것이다.

버뜨! 이번 만큼은 기필코 성공하고 말겠다!
만약 많은 수정사항들을 뭉뚱그려서 업데이트 하기 위해 티켓을 만든다면 해당 티켓을 없애서 SVN 저장소에 커밋을 못하도록 아예 막아버릴테다!

근데 나... 이렇게 프로그래밍 외적인 부분만 하고 있어도 되려나?
원래 개발환경은 한번 제대로 구축되면 손이 자주 안가야 하는건데, 이게 주가 된 느낌이다.
루비도, 코코아도, 맥루비도, 핫 코코아도, 아이폰도, 안드로이드도, LiMo도... 해보고 싶은 건 천지인데, 항상 마음만이다.

그렇게 하고 싶으면 집에 가서 하면 되잖아? -_-;

+ Recent posts