프로그래밍용 폰트

BS가 생각하는 괜찮은 코딩용 폰트

우선, 필수 조건으로 고정폭!!! monospace, fixed width 폰트!!!

  • 돋움체
    Windows 기본 폰트이기 때문에 어디에서나 사용 가능한 장점
    영문이 코딩에는 부적합한 부분이 있음. Il| 구분이 잘 안됨
  • Consolas, Lucida Console, Vera Sans Mono, Monaco
    영문 예쁘다. 한글 없음
  • FixedSys
    BS 취향에는 좋다. TrueType 한글이 없음
  • 나눔고딕코딩
    한글은 좋은데 영문은…
이런 상황에서 D2Coding이 나왔습니다.
일단 한글 잘 나오고 영문도 나눔고딕보다 훨씬 좋아졌습니다.
한글을 버린다면 Monaco, Vera Sans Mono, Consolas 순으로 좋아하고
한글을 사용한다면 현재로서는 D2Coding 말고 답이 없군요.

[D2Coding 프로젝트 페이지]

ICU – International Components for Unicode

이런 저런 이유로 유니코드를 이제 많이 사용하게 되었습니다.


그런데 유니코드 관련 프로그래밍을 하려면… 쩝 기존의 로직과의 호환성 문제나…
라이브러리간의 인코딩 문제로 머리가 아파오기 시작합니다.


Windows는 기본으로 UTF-16 LE를 사용하고 있습니다.
딱 2 bytes의 wchar_t 로 표현되는 BMP 문자만…
인코딩 방법에 따라…
UTF-7, UTF-8, UTF-16, UTF-32, …
왜 이건 통일이 안되는지… 시스템마다 sizeof(wchar_t) 조차도 다르고 C++ 표준 문서에는
wchar_t는 유니코드 문자열을 표현하는데 사용하는 문자 타입 정도로만 정의를 해 둔 상태죠…


그래서 ICU 같은 라이브러리가 필요하게 되었습니다.


[ICU 홈페이지]


ICU 홈페이지의 Download ICU에 가면 ICU4C, ICU4J가 있는데요. 각각 C/C++과 Java를 위한 라이브러리 입니다.
문제는… 내가 원하는 환경에 맞는 빌드가 존재하지 않는다는 것!
소스를 받아도 빌드하려면 아주 번거롭고 필요한 것이 아주아주 많다는 것!!!


그래서 찾다보니 이런 사이트가 있네요.
개인 홈페이지인데…


[sigmoid의 Precompiled ICU 페이지]


많이들 사용하시는 Visual Studio 2010, 2012, 2013용 Precomplied ICU 라이브러리가 제공됩니다.

BugTrap – 응용 프로그램의 크래시 정보를 다루는 도구

Windows API의 Structured Exception Handling을 이용해서 크래시가 발생했을 때에
덤프와 호출 스택 등을 파일로 남기거나 서버로 전송하고 메일로 알림을 줄 수도 있는
라이브러리 입니다.

아래의 경로에서 소개를 읽어보실 수 있고

[CodeProject 글]

아래의 경로에서 소스를 구하실 수 있습니다.

[GitHub의 소스]

문서도 잘 만들어져 있어서 쉽게 적용할 수 있습니다.

BugTrap Server를 사용 방법

  1. 적잘한 경로에 서버 실행 파일과 설정 파일을 복사
    C:\BugTrapServer로 가정
  2. 설정 파일 수정
    파일명: BugTrapServer.exe.config
  3. 서비스 등록
    관리자 권한 명령 프롬프트 열기

    “%windir%\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe”
    “C:\BugTrapServer\BugTrapServer.exe” 를 실행
  4. 서비스 실행
    NET START “BugTrap Server” 를 실행하기

[BugTrap 라이브러리 및 BugTrap Server 다운로드]
cfile27.uf.216EB03751BADE8D28CE3D.7z

오늘 Windows 8.1 x64 + Visual Studio 2012에서 테스트 해보니

BT_SetReportFormat(BTRF_TEXT);

로 초기화를 하면 x64 빌드에서는 작동하지 않는 버그를 발견하였다.
Win32 빌드에서는 정상 작동한다.
따라서 x64를 사용할 경우에는 반드시 XML로 리포트를 남기는 것이 좋다.

어느 분이 요청한 PC 오디오 스트리밍에 관해

어떤 분께서 PC의 오디오 출력을 다른 기기(예를 들면 안드로이드나 아이폰과 같은 모바일 기기)로 전송하여 플레이 하는 방법을 물어보셨습니다.

BS가 대학생이라면 “이거 재밌겠는데 해볼까?” 하겠지만…

이런 저런 업무에 시달리는 직장인 BS는 그럴만한 여유가 없어 큰 도움을 못드렸네요.

그래서 일단 관련된 기능을 가지는 소프트웨어를 하나 소개해드립니다.

공짜, 오픈 소스, 크로스 플랫폼 멀티미디어 플레이어인 VLC media player입니다.

http://www.videolan.org/

이곳에 가시면 소스를 받으실 수 있고 여기에 관련된 스트리밍 소스 코드가 포함되어 있습니다.

네트웍을 통해 스트리밍 하는 것이므로 크게 장비를 가리지 않을 것으로 보입니다.

QuickHighlighter – 블로그에 소스코드 삽입시에 편리한 도구

BS는 블로그에 소스코드 넣을 때에 SyntaxHighlighter를 사용하는데요…
예쁘기는 하지만 속도가 느리고 용량도 크고 설치도 해야되는 단점이 있습니다.
그럴 경우 대신할 수 있는 도구롤 소개합니다.


Quick Highlighter


간단한 소스 코드를 가지고 비교해 보겠습니다.


1. SyntaxHighlighter
태그를 <pre>로 하면 소스에 <나 >가 들어가면 쓸데없는 태그가 출력되네요…
(이건 SyntaxHighlighter의 버그가 아니라 블로그 에디터의 버그입니다.)
아래는 <script type=”syntaxhighlighter” class=brush:cpp><![CDATA[ … ]]></script>로 한 것입니다.

// 이것은 테스트 코드입니다.
#include <iostream>

int main(void)
{
	using namespace std;
	cout << "Hello" << endl;
	return 0;
}

2. QuickHighlighter
옵션은 Normal Line Numbers + Wrap overflowing text + 4 Tab Width + Combine Style and HTML Code + Highlight inbuilt keywords… 입니다.
Style과 HTML코드는 글에 하이라이팅이 여러 개이면 분리하고, 하나이면 묶는 것이 좋습니다.
한글이 아주 보기좋게 깨져서 나옵니다.





  1. // &#51060;&#44163;&#51008; &#53580;&#49828;&#53944; &#53076;&#46300;&#51077;&#45768;&#45796;.


  2. #include <iostream>


  3.  


  4. int main(void)


  5. {


  6.     using namespace std;


  7.     cout << “Hello” << endl;


  8.     return 0;


  9. }

3. 수정한 QuickHighlighter
수정한 내용은 “&amp;“를 “&“로 변경하고
‘Courier New’, Courier, “, “130% “, “vertical-align:top;“, “normal normal monospace; “, “normal normal 1em/1.2em monospace; ” 를 삭제하였습니다.





  1. // 이것은 테스트 코드입니다.


  2. #include <iostream>


  3.  


  4. int main(void)


  5. {


  6.     using namespace std;


  7.     cout << “Hello” << endl;


  8.     return 0;


  9. }


SOAP C++ 라이브러리

SOAP???
Simple Object Access Protocol의 약자로…
일반적으로 널리 알려진 HTTP, HTTPS, SMTP 등을 사용하여 XML 기반의 메시지를 컴퓨터 네트워크 상에서 교환하는 형태의 프로토콜
MS의 후원을 받아 1998년에 Object Access Protocol로 처음 디자인되어 현재는 W3C의 XML protocol Working Group에서 관리하고 있다.
가끔 SOA(Service-oriented architecture)와 의미가 혼용되나 SOAP과 SOA는 아주 매우 다른 것이다.
자세한 설명: “위키백과 SOAP 설명”:http://ko.wikipedia.org/wiki/SOAP

SOAP 관련 C @++@ 라이브러리들
csoap
Simple SOAP
SOAP C++ (server & client) library
SOAP Client Library
SOAP library written in C

ViennaProfiler

코드의 성능을 측정하는데 쓰이는 도구입니다.
비엔나 소시지가 생각나는 이 어플리케이션은 소스코드의 실행 시간을 측정하고 이를 DB나 파일로 저장하여 비교할 수 있도록 합니다.

여기까지 하면 그냥 굴러다니는 다른 프로파일러와 뭐가 다른가? 하는 궁금증이 조금은 생기는데…
요게 웹인터페이스를 가지고 있어서 웹페이지에서 프로파일링 결과를 편하게 볼 수 있는게 장점이라면 장점이지요.
뭐 이런 것 다 되는 프로파일러도 많은데…
하지만 공짜라는거…
공짜도 많은데…
오픈 소스라 맘대로 수정해서 사용해 볼 수 있다는 거…
오픈 소스도 많은데…
그럼 BS에게도 알려주세요~

ViennaProfiler 홈페이지