2012/11/30

C++ 문자열 비교 속도 테스트


string strSrc = "Test string...";

strSrc.compare("Test strinG...")  vs _stricmp( strSrc.c_str(), "Test strinG...")




문자열 비교 테스트를 하는데 위 코드가 월등하게 빠를것으로 예상하고 테스트 했는데 아래 코드가 더 빠르다.

아래쪽은 대소문자를 무시하는 비교라 연산이 더 들어가는데 어떻게 더 빠른건가 했더니... Debug 모드이다.

Release 모드에서는 위쪽 코드를 백만번 수행해도 시간측정이 되지 않는다.(예상대로 훨씬 빨랐다.)

STL 코드에 디버그 코드가 상대적으로 많이 포함되어 있는 듯 하다.




추가로 아래의 대소문자를 구분한 코드도 비교해 보았다.

strcmp( strSrc.c_str(), "Test strinG...")




결과는 위 코드는 string의 compare 함수와 크게 차이가 나지 않았다.




보다 나은 성능을 고려할때에는 문자열 비교 할 때 대 소문자를 구분 하거나 미리 대문자든 소문자든 바꾸어 놓은 후 비교를 해야겠다.

2012/11/15

Visual Studio 2010 "IntelliSense: #error directive:..." 에러

Visual Studio 2010 버전을 이용하여 프로젝트를 만들고 빌드하다보면 아래 같은 에러 메시지를 만나는 경우가 있다.


IntelliSense: #error directive: Please use the /MD switch for _AFXDLL builds


프로젝트 속성에 /MD로 되어 있는데도 불구하고 에러 메시지가 나오는데 이는 VS2010의 버그로 알려졌다.


http://connect.microsoft.com/VisualStudio/feedback/details/549119/intellisense-error-on-build-solution


해결책은 해당 속성을 다시 한 번 선택하여 굵은 글씨로 되도록 하고 빌드하면 이 메시지가 사라진다.

<

Original Post : http://neodreamer-dev.tistory.com/688

2012/11/13

괜찮은 Gantt 차트 프로그램 - GanttChart



MS Project를 대신할 Gantt Chart 프로그램을 찾다가 발견한 프로그램이다.


다른 공개 프로그램들 여러개를 찾아 사용해 보았지만 차트 기능이 좋으면 인쇄기능이 떨어지고 자바로 작성된 프로그램이어서 인지 입력이 불편한 프로그램 도 있는데 이 프로그램은 차트 편집이나 인쇄기능이 쓸만하다.


단 한가지 단점이라고 할 수 있는 건 차트의 날짜 표기가 영어문화권 기준이라 한눈에 알아보기 불편하다.

다행이 소스도 공개되어 있어 리소스를 좀 편집하면 보기 편하게 수정할 수 있다.


GanttChar

Original Post :
http://neodreamer-dev.tistory.com/687

2012/11/05

OpenCV 2.4.3 is out

OpenCV 2.4.3 버전이 공개가 되었다. 병렬프로세싱과 모바일 플랫폼 지원에 개선이 있는 듯 하다.


2.4.3 버전에서 개선된 사항(OpenCV 2.4.3 release notice 중에서)


  • A lot of good stuff from the Google Summer of Code 2012 has been integrated;
    this was a very productive summer!


  • Significantly improved and optimized Android and iOS ports.


  • Greatly extended GPU (i.e. CUDA-based) module


  • The brand new ocl (OpenCL-based) module that unleashes GPU power also for AMD
    and Intel GPU users. It's not included into the binary package, since there are
    different SDKs, and it's not turned on by default. You need to run CMake and
    turn on "WITH_OPENCL". Also, please note that this is very first version of the
    module, so it may be not very stable and not very functional.


  • Much better performance on many-core systems out of the box. You do not need
    TBB anymore on MacOSX, iOS and Windows. BTW, the binary package for Windows is
    now built without TBB support. Libraries and DLLs for Visual Studio 2010 use the
    Concurrency framework.


  • About 130 bugs have been fixed since 2.4.2.

    -----


  • Since 2.4.3rc we fixed several more problems, in particular some compile
    problems with iOS 6 SDK.




OpenCV Change Logs

OpenCV 홈페이지

<

Original Post : http://neodreamer-dev.tistory.com/686

2012/10/24

GUI 디자인 툴 - Pencil v2



GUI 디자인 툴인 Pencil 이 v2 버전을 공개하였다.


간단하게 SW 를 디자인 할 때 좋을 툴인데 전체 UI를 새롭게 하고 Android 와 iOS 템플릿을 기본 탑재 하고 버전 2로 공개가 되었다. 


http://pencil.evolus.vn/

<

Original Post : http://neodreamer-dev.tistory.com/685

2012/10/13

짜증나는 쿠팡의 스크립트 링크 크롬 확장 해결!!

2012/09/25 - [Dev Story/Mess] - 짜증나는 쿠팡의 스크립트 링크 크롬 확장으로 대응


건의는 계속 했지만 변화가 없어 직접 해결 하였다.


지난번 지도는 Context Menu를 추가하고 링크를 가져와서 처리하려 했는데 이번에는 그냥 Ctrl + Shift + S 키를 누르면 마우스가 올려져 있는 상품 페이지가 새 탭으로 열리도록 하였다.


이제 전체 상품목록에서 쉽게 쇼핑을 할 수 있게 되엇다. (문제는 총알...)&

Original Post : http://neodreamer-dev.tistory.com/684

2012/09/25

짜증나는 쿠팡의 스크립트 링크 크롬 확장으로 대응

쿠팡 사이트를 종종 들러 쇼핑을 하는데 특정 상품을 보고 가는게 아니라 전체 또는 일부 카테고리의 상품을 죽 보면서 맘에 드는 상품이 있으면 자세히 보는데 쿠팡의 거의 모든 링크는 자바스트립트로 이루어져 있다.



해당 상품을 보고 클릭을 하면 현재 페이지에서 상품을 보여준다. 링크가 걸려있지 않아 새 창이나 새 탭으로 볼 수가 없다. 그래서 상품 URL을 복사해 다른 탭에 열고 이전페이지 버튼으로 상품 리스트로 돌아가는 불편한 쇼핑을 해야 한다.



쿠팡 사이트의 고객센터에 의견을 전달했지만 개선의 의지가 보이지 않았다.

코드를 보니 goURL 이란 함수에서 상품 상세 페이지를 보여주는데 이 함수는 아주 간단하다. 

function goUrl(url){
window.location.href = url;
}




이 함수를 새 탭으로 열수 있게 하거나 로그인시 사용자 설정에 따라 상품을 현재 탭이나 새 탭에 보여주면 될텐데...

스크립트 링크를 고집하는 이유를 모르겠다.


아쉬운 생각에 대응책을 찾아 보았다.

접근한 방법은 Chrome의 확장 기능을 이용하는 것이였다.

goUrl을 변경해 보려했지만 잘 되지 않아 쿠팡 소스를 보니 이미지의 이름만으로 상품 상세 페이지를 가늠할 수 있어서 이미지 Context Menu에 새로운 탭으로 링크를 보내는 코드를 작성하였다.



일단 결과는 만족스러웠다. "Open tab for Item" 메뉴로 상품을 새 탭에서 열어 볼 수 있었다.

하지만 한 가지 문제가 있었다. 전체 상품 목록에서는 이 Context Menu가 제대로 동작을 하지 않았다. 이 문제는 방법을 달리하여 해결 해 봐야겠다.&

Original Post : http://neodreamer-dev.tistory.com/683

Adobe의 코딩용 폰트 Source Code Pro

Adobe의 Source Code Pro(출처: Adobe Blogs -http://goo.gl/FKHeb)



Adobe 사의 코딩용 True Type Font인 Source Code Pro를 공개하였다.

코딩을 위해 개발된 폰트로 고정폭 폰트이며 혼동하기 쉬운 글자와 기호를 인식하기 쉽도록 디자인 했다.



혼당하기 쉬운 폰트들(출처: Adobe Blogs -http://goo.gl/FKHeb)

특수 문자(출처: Adobe Blogs -http://goo.gl/FKHeb)





이 폰트를 Lazarus IDE의 설정창에서 적용해 보았다.

폰트크기 10에서 기존 Consolas와 비교하면 Source Code Pro가 약간 크게 디자인 된 것 같았다.

Consolas 10p

Source Code Pro 10p

 



size를 9로 조정하니 기존의 크기와 유사하게 보였다.

 

한 번의 설정 만으로는 판단하기 어려울 것 같고 당분간 사용을 해봐야 장단점을 알 수 있을 것 같다. 



Announcing Source Code Pro 

Download

&

Original Post : http://neodreamer-dev.tistory.com/682

2012/09/05

Notepad++ 에서 Python 스크립트 실행하기

2012/09/05 - [Dev Story/Tips] - Notepad++ 에서 Lua 스크립트 실행하기


이전 글을 응용하여 Python 스크립트를 실행해 보았다.


NppExec의 Execute 대화상자에 아래와 같이 Python을 실행시키는 명령을 입력하고 Run Python으로 저장하였다.



간단한 스크립트를 작성하여 저장하고 실행해 보면 아래 화면과 같이 Console 창에 실행 결과를 볼 수 있다.



&

Original Post : http://neodreamer-dev.tistory.com/681

Notepad++ 에서 Lua 스크립트 실행하기

이 내용은 Notepad++ 6.1.6 버전을 기준이다.


Notepad++ 에서 Lua 스크립트를 실행하려면 NppExec 라는 Plugin이 필요하다.

인터넷에 연결된 상태라면 Plugin Manager를 이용하여 쉽게 설치할 수 있다.
 

Plugin Manager에서 NppExec를 선택하고 Install 버튼을 누르기만 하면 된다.



설치 후 Notepad++을 다시시작하면 Plugins 메뉴에 NppExec를 볼 수 있다.



간단한 스크립트를 작성하고 이 스크립트를 실행할 명령을 Execute 대화상자에 입력한다.

Lua가 설치된 경로와  $(FULL_CURRENT_PATH)를 입력한다. 
$(FULL_CURRENT_PATH)는 현재 활성화 된 탭에 열려있는 파일의 전체 경로 이름이다. 
$(FULL_CURRENT_PATH) 는 공백이 포함될 수도 있으니 큰 따옴표로 묶어 주는게 좋다. Lua의 설치 경로에 공백이 포함될 경우도 
큰 따옴표로 묶어  주어야 한다.

그리고 계속 사용하기 위해 다른 이름으로 저장을 해 둔다. 이름은 알아보기 쉽게 하면 된다.


이제 실행 단축키 F6을 누르면 이 대화상자가 활성화 되고 저장한 이름은 선택하고 "OK" 버튼을 누르면 아래와 같이 Lua 스크립트가 실행 된다.



한 번 실행한 후에는 Ctrl+F6을 이용하여 이전 실행 명령을 다시 실행할 수 있다.

여러개의 스크립트 실행을 만들어 놓았을 경우 처음에만 F6을 눌러 스크립트를 선택하고 그 후로는 Ctrl+F6으로 동일한 스크립트를 실행할 수 있다.&

Original Post : http://neodreamer-dev.tistory.com/680

SQLite Release 3.7.14

SQLite Release 3.7.14 On 2012-09-03 (3.7.14)

  • Drop built-in support for OS/2. If you need to upgrade an OS/2 application to use this or a later version of SQLite, then add an application-defined VFS using the sqlite3_vfs_register() interface. The code removed in this release can serve as a baseline for the application-defined VFS.

  • Ensure that floating point values are preserved exactly when reconstructing a database from the output of the ".dump" command of the command-line shell.

  • Added the sqlite3_close_v2() interface.

  • Updated the command-line shell so that it can be built using SQLITE_OMIT_FLOATING_POINT and SQLITE_OMIT_AUTOINIT.

  • Improvements to the windows makefiles and build processes.

  • Enhancements to PRAGMA integrity_check and PRAGMA quick_check so that they can optionally check just a single attached database instead of all attached databases.

  • Enhancements to WAL mode processing that ensure that at least one valid read-mark is available at all times, so that read-only processes can always read the database.

  • Performance enhancements in the sorter used by ORDER BY and CREATE INDEX.

  • Added the SQLITE_DISABLE_FTS4_DEFERRED compile-time option.

  • Better handling of aggregate queries where the aggregate functions are contained within subqueries.

  • Enhance the query planner so that it will try to use a covering index on queries that make use of or optimization.

  • SQLITE_SOURCE_ID: "2012-09-03 15:42:36 c0d89d4a9752922f9e367362366efde4f1b06f2a"

  • SHA1 for sqlite3.c: 5fdf596b29bb426001f28b488ff356ae14d5a5a6


SQLite 3.7.14 Release Note<

Original Post : http://neodreamer-dev.tistory.com/679

2012/08/31

Lazarus 1.0 x64 저장 문제

얼마 전 공개된 Lazarus 1.0 버전중 64비트 버전을 설치해 보았다.


컴파일과 실행에는 문제가 없었는데 저장(Save As)를 하기만 하면 Lazarus가 다운이 되어 버린다. 몇 번을  응답없음이 되더니 이제 아예 사라지 버린다.


재설치를 몇 번을 해보고 경로도 바꾸어 보고 했지만 증상은 여전했다. 64비트 버전에 문제가 있는게 아닌가 싶다.

다시 32비트 버전을 설치해서 사용해 봤는데 32비트 버전은 문제가 없었다.


분명 64비트 운영체제를 사용하고 있는데 왜 64비트 Lazarus가  동작하지 않는 것일까?&

Original Post : http://neodreamer-dev.tistory.com/678

Lazarus 1.0 정식 버전 공개




드디어 정식 버전이 나왔다.


10여년이 넘게 베타버전으로 개발해 오다 드디어 정식 1.0이 공개 되었다. FPC(프리파스칼 컴파일러)를 이용하는 개발 환경으로 다양한 플랫픔을 지원하고 있다.


엄청난 실행 파일 크기는 여전했다. 빈 픔 하나를 갖는 프로그램이 10MB를 넘는다. 여러가지 줄이는 방법도 있지만 줄여도 2~3MB 정도 였다.


어쨌거나 한번의 프로그램 작성으로 다른 여러 플랫폼에서 컴파일만 하면 해당 플랫폼에 맞는 프로그램이 생산되는 것이 흥미롭다.


1.0 공개 토픽: http://www.lazarus.freepascal.org/index.php/topic,18019.html

1.0 다운로드: http://sourceforge.net/projects/lazarus/files/


&

Original Post : http://neodreamer-dev.tistory.com/677

2012/08/27

Python Shell 실행하기

Python 을 공부해보려고 Portable Python을 찾게 되었다.


하지만 Python Shell을 사용할 수 가 없었다.


pythonw 실행파일을 실행해 봤지만 소용 없었다. 그냥 도스용 인터프리터를 사용하면 되겠지만 왠지 컬러플한 Python을 하용하고 싶어 방법을 찾아 보았다.


Python Shell 인 IDLE는 Python으로 작성된 스크립트 였다. 그래서 Python 으로 실행해 주어야 했다.


아래 명령을 실행하면 Python Shell이 실행된다.

D:\Dev\Python\App\pythonw.exe "D:\Dev\Python\App\Lib\idlelib\idle.py" 


 

&

Original Post : http://neodreamer-dev.tistory.com/676

2012/08/08

OpenCV 2.4.2 테스트

얼마전 공개된 OpenCV 2.4.2 버전을 테스트 해 보았다.


이전 버전에서 테스트할 때에는 Debug 모드에서 Debug Dll을 사용하였을 때 메모리 누수 현상이 발생하였다. Debug 모드에서 Release Dll을 사용하면 그러한 문제가 발생하지 않는다.


그래서 이번에도 같은 생각으로 Debug 모드에 Release Dll을 적용하였다. 메모리 누수는 발생하지 않았지만 HighGUI 에서 문제가 발생하였다.


이미지를 출력하기위해 윈도우를 만들면 Title Bar의 Caption이 깨지는 현상이 발생하였다. 



컴파일한 Dll이 잘못되었나 싶어 OpenCV에서 배포하는 Dll을 사용해 보았지만 증상은 동일하였다.

그래서 Debug에 Debug Dll을 적용하여 테스트 해 보니 정상적으로 윈도우가 만들어 졌다.



그리고 프로그램 종료시 발생하던 메모리 누수 문제도 발생하지 않았다.

요 근래에 OpenCV가 발빠르게 움직이는 것 같더니 자잘한 버그도 빨리 개선이 되는 것 같다.&

Original Post : http://neodreamer-dev.tistory.com/675

2012/08/06

PSPad의 한글 문제



괜찮은 편집기중 하나인 PSPad에서 한글이 깨지는 문제로 그동안 사용을 잘 하지 않았다. 

한글이 깨지지 않도록 하는 방법은 환경 설정에서 언어를 한국어로 설정하면 된다.



 이 방법은 PSPad의 UI를 한국어로 설정하는 것으로 개인적으로 영문 UI를 선호하여 이방법을 사용하지 않고 한글이 깨지지 않도록하는 방법을 찾았다.



바로 영문 설정 파일(English.INI)에서 기본 문자셋을 한국어에 해당하는 949로 변경하면 된다.

[Common]
DefaultCharset=949
DefaultFont=MS Shell Dlg
 


그러면 한글이 깨지지 않고 영문 UI를  사용할 수 있다. 입맛에 따라 UI의 폰트로 변경할

Original Post : http://neodreamer-dev.tistory.com/674

2012/07/20

HTML5 Drag and Drop

HTML5를 하나둘씩 공부해 가면서 Drag & Drop(이하 D&D)을 만났다. HTML5 이전에도 
D&D를 구현해서 사용은 하였지만 너무 복잡해서 문제를 야기 시키기도 했다. HTML5 에서는 API 차원에서 
D&D를 지원하여 보다 쉽게 구현할 수 있다.



HTML5에서 D&D 위해 추가된 속성은 Draggable 이고 관련하여 추가된 이벤트는 아래와 같다.




onDrag - Script to be run when an element is dragged


onDragEnd - Script to be run at the end of a drag operation


onDragEnter - Script to be run when an element has been dragged to a valid drop target


onDragLeave - Script to be run when an element leaves a valid drop target


onDragOver - Script to be run when an element is being dragged over a valid drop target


onDragStart - Script to be run at the start of a drag operation

onDrop - Script to be run when dragged element is being dropped



하지만 가장 간단하게 구현하는 방법은  드래그 하고자하는 엘리먼트에 대해서 Draggable 속성을 true로 설정하고 드래그 되는 대상에 드래그가 시작되었을 때의 처리와 놓여지는 대상에 드래그 되어 올라올 경우와 놓여지는 경우에 대한 처리를 해 주면 된다.(
onDragStart , 
onDragOver, 
onDrop)



우선 드래그 하고자 하는 대상에 대하여 Draggable 속성을 true로 부여하면 드래그 되어 진다.

<div id="zone1" class="zone">
<img id="DragItem" draggable="true" src="html5_logo.jpg"/>
</div>
<br/>
<div id="zone2" class="zone">
</div>





위의 코드 만드로 이미지를 드래그 할 수 있는 준비를 한 것이다. 위에서 부여된 속성에 의해 아래처럼 드래그가 된다.



이제 D&D 관련되는 이벤트를 설정해 주었다.

드래그 시작되는 엘리먼트에 시작되었을때 발생하는 onDragStart 에 핸들러를 부여하고 받고자 하는 엘리먼트에 드래그 되어 올라오는 경우의 이벤트 onDragOver에 핸들러는 부여했다.

<script>
function dragStart(ev)
{
ev.dataTransfer.setData("text/plain", ev.target.id);
}

function dragOver(ev)
{
ev.preventDefault();
}
<script>
<div id="zone1" class="zone">
<img id="DragItem" draggable="true" src="html5_logo.jpg" onDragStart="dragStart(event)"/>
</div>
<br/>
<div id="zone2" class="zone" onDragOver="dragOver(event)">
</div>





그렇게 하면 드래그 하고자하는 것을 놓고자 하는 곳으로 드래그 하면 커서 아이콘도 바뀐다.



마지막으로 드래그 되어져서 놓였을때 받을 대상에 대한 onDrop 이벤트에 핸들러를 부여하여 처리 한다.

<script>
function dragStart(ev)
{
ev.dataTransfer.setData("text/plain", ev.target.id);
}

function dragOver(ev)
{
ev.preventDefault();
}
function dragDrop(ev)
{
ev.preventDefault();
var data = ev.dataTransfer.getData("text/plain");
ev.target.appendChild( document.getElementById( data ) );
}
<script>
<div id="zone1" class="zone">
<img id="DragItem" draggable="true" src="html5_logo.jpg" onDragStart="dragStart(event)"/>
</div>
<br/>
<div id="zone2" class="zone" onDrop="dragDrop(event)" onDragOver="dragOver(event)">
</div>





그러면 대상에 Drop을 하면 Drop 대상체가 핸들러에 의해 이를 수용 한다.



마지막으로 두 개의 Div에 대해서 Drop을 받을 수 있도로 하였다.

<script>
function dragStart(ev)
{
ev.dataTransfer.setData("text/plain", ev.target.id);
}

function dragOver(ev)
{
ev.preventDefault();
}
function dragDrop(ev)
{
ev.preventDefault();
var data = ev.dataTransfer.getData("text/plain");
ev.target.appendChild( document.getElementById( data ) );
}
<script>
<div id="zone1" class="zone" onDrop="dragDrop(event)" onDragOver="dragOver(event)">
<img id="DragItem" draggable="true" src="html5_logo.jpg" onDragStart="dragStart(event)"/>
</div>
<br/>
<div id="zone2" class="zone" onDrop="dragDrop(event)" onDragOver="dragOver(event)">
</div>







이제 두 Div 사이에 이미지를 옮길 수 있다.


드래그 시작할 때 부여되는 핸들러인 dragStart는 드래그 되어지는 대상에 대한 정보를 저장한다.

event.dataTransfer.setData("text/plain", ev.target.id);


이 명령으로 드래그 되어지는 대상의 ID를 저장한다.  드래그 되어 올려지는 대상체에 부여된 핸들러 함수는 간단하게 한 줄로 되었다.

ev.preventDefault();


이 코드는 기존의 UR을 드래그 하는 기본적인 핸들링을 방지하고 새로 정의된 D&D를 사용하기 위한 것이다.


마지막으로 Drop 되어 놓여지는 대상체에 대한 처리를 위한 dragDrop 함수 이다. 그래그 되어진 엘리먼트를 놓여지는 곳으로 이동한다. 


보다 많은 이벤트 핸들러가 있고 더 많은 기능을 구현할 수 있지만 기본 기능은 아주 간단한 코드로 구현할

Original Post : http://neodreamer-dev.tistory.com/673

2012/07/18

PC의 숫자를 4자리 단위로 컴마(,) 넣도록 설정하기

숫자를 기록할 때 천단위 구분이 아닌 만단위 구분이 되도록 컴마(,)를 넣어야 읽기가 쉽다.

우리의 수 체계가 만단위로 구성이 되기 때문이다.



쉼표, 네 자리마다 찍어야 한다.



일. 만. 억. 조. 경. .... 수의 체계-일,만,억,조,경



하지만 우리가 일상에서 사용하는 수는 천 단위 구분으로 되어있다. 이는 미국식을 따르기 때문이다. 이러한 천단위 구분으로 쓰여진 수를 한 번에 읽기는 쉽지 않다. 뒤에서부터 일,십,백,만,십만,백만... 세고난 후에야 읽을 수 있다.



584,123,456,789,123,456 

58,4123,4567,8912,3456



도아님께서 시스템에서 네자리 단위로 컴마를 찍는 방법을 소개한 글을 보고 설정을 해 보았다.

설정은 하는 방법은 레지스트리를 수정하여 하는 것이다. 



HKEY_CURRENT_USER\Control Panel\International 이 위치의  sGrouping, sMonGrouping 값을 4:0으로 설정해 주면 된다.



그러면 아래와 같은 결과를 볼 수 있다.

 



아래 레지스트리 파일은 이 두 값을 4:0으로 설정하는 것이다.





이 설정은 다른 문제가 되는 사항이 있는지 사용해 봐

Original Post : http://neodreamer-dev.tistory.com/672

2012/07/16

200개의 단계별 예제로 배우는 안드로이드 4.0
































안드로이드4.0안드로이드사이드운영자가직접전수하는

카테고리

컴퓨터/IT > 네트워크/보안

지은이

한동호 (제이펍, 2012년)

상세보기






새로운 맘으로 다시 공부를 시작해 보려 책을 샀다. 두툼한 책으로 예제 중심으로 되어 있고 최식 버전에 대한 설명도 있다.


안드로이드의 기본 개념부터 구성및 기초 그리고 활용까지 다루고 있다. 작가도 Android Side 운영자이면서 Java관련 서적을 다수 집필한 한 동호 님이다.


목차 보기



아직 읽기전이라 서평을 하기는 이른 단계이지만 목차의 구성으로 봐서는 꽤 유용한 책으로 생각된다.

틈틈이 조금 공부하다 한동안 잊고 있었더니 그동한 공부해왔던 내용도 잊었다.

취미 생활격으로 하다보니 시간도 그리 많지 않고 자주 잊어버리곤 하는데 처음부터 다시 시작 하는 맘으로 공부를 해봐야 겠다. 


아이들이 표지를 보더니 
맛있는 초코렛이라고 달려들었는데 나에게도 이 책이 그렇게 맛있는 모습로 다가와 주었으

Original Post : http://neodreamer-dev.tistory.com/671

2012/07/10

Eclipse 시작시 Workspace 지정하기

Eclipse 는 재주가 많은 IDE로 여러가지 목적으로 사용될 수 있다.

여러 플러그인을 설치하고 필요에 따른 작업이 가능한다. 작업 환경도 Workspace 단위로 관리가 되어 목적이 다른 Workspace를 구성해 두면 여러가지 용도로 사용하기 쉽니다.


이렇게 구성된 Workspace는 Eclipse가 시작 될 때 사용자에게 묻는 과정이 있다.



Preferences 대화상자의 "Startup and Shutdown" 메뉴에서 "Workspace" 메뉴를 보면 저장되어 있는 Workspace와 시작시 Workspace를 묻기를 할 지 여부를 설정할 수 있는 옵션이 있다.


이렇게 설정을 하면 Eclipse를 실행할 때마다 Workspace를 물어봐서 귀찮을 수 있다. 그래서 난 단축아이콘을 만들어 특정 Workspace가 자동으로 선택되도록 하고 있다. 방법은 단축아이콘의 Target에서 Eclipse의 명령줄 옵션을 추가하는 것이다.


사용한 명령줄 옵션은 -data 이다. 이 옵션 뒤에 Workspace 경로를 설정해 주면 해당 Workspace가 자동으로 선택 된다. 목적에 맞게 여려개의 단축 아이콘을 만들어 놓으면 쉽게 이용할 수 있다. 



그 외의 다른 명령줄 옵션은 Eclipse 도움말을 참고 하

Original Post : http://neodreamer-dev.tistory.com/670

2012/07/05

OpenCV 2.4.2 Released



OpenCV 2.4.2 버전이 공개 되었다. 2.4.1버전이 공개된 지 불과 한 달밖에 지나지 않았다.

50여개의 버그 수정과 각각의 플랫폼을 위한 패키지도 공개 되었다. 이번 공개부터는 ios도 포함이 되었다.



 2.4.2 버전에서 수정된 사항 (http://code.opencv.org/projects/opencv/wiki/ChangeLog)

  • Android package introduces a new service-based distribution model

    OpenCV Android Release notes

    • '.tar.bz2' format is changed to '.zip' because most of our users are Windows guys

    • all the samples changed to use the OpenCV Manager API, they don't keep OpenCV binaries inside

    • all the samples eclipse projects having JNI parts (face-detector, tutorial 3 and tutorial 4) contain CDT Builder configured for building the native libraries (look at the tutorials for details)

    • the OpenCV Manager and binary packages for armeabi, armeabi-v7a and x86 arch-s are available on Google Play Market and will be installed on the first use, but for devices without internet access or without Google Play Market (dev kits) we provided the necessary APKs in the OpenCV-2.4.2-android-sdk/apk folder

    • the tutorials are updated



  • New keypoint descriptor FREAK has been contributed by EPFL group: Kirell Benzi, Raphael Ortiz, Alexandre Alahi and Pierre Vandergheynst. It's claimed to be superior to ORB and SURF descriptors, yet it's very fast (comparable to ORB). Please, see


  • Improved face recognizer and excellent tutorial on using it has been added by Philipp Wagner. Check the face recognition tutorial.


  • opencv2.framework for iOS has been created. You can either download the binary from SourceForge or build it yourself using the simple guide. Also, you may be interested to look at some OpenCV on iOS samples, created by our GSoC 2012 students Eduard and Charu: gsoc2012:source:/ios/trunk and read the slides of the tutorial: http://code.opencv.org/projects/gsoc2012/repository/entry/ios/trunk/doc/CVPR2012_OpenCV4IOS_Tutorial.pdf

    Another 50 bugs have been fixed since 2.4.1 release.




소스뿐만아니라 웹사이트(http://opencv.orghttp://answers.opencv.org)도 새롭게 단장하였다.

OpenCV의 행보가 점점 빨라지고 있다.



OpenCV website

Original Post :
http://neodreamer-dev.tistory.com/669

2012/07/03

Hello Jelly Bean on Juno (Eclipse 4.2)

Android Jelly Bean 이 발표 되고 얼마 지나서 Eclipse 의 새로운 버전이 나왔다. Eclipse 4.2 버전은 Juno라는 이름을 달고 나왔다.



새로운 개발 환경도 구축할 겸 해서 Juno로 안드로이드 개발 환경을 구축하였고 언제나 하는 Hello Project를 만들었다.



새로운 프로젝트를 만든는 절차는 크게 바뀌지 않았다.



중간에 UI 관련하여 추가로 설정하는 단계가 추가 되었다.



그리고 Activity 관련 설정도 추가되었다.





마지막 단계에서 "Android Support Library" 문제에 봉착을 하였다.



현재 설치된 버전이 9임에도 검출되지 않았고 UI에서의 지시에 따라 몇번의 Install 시도를 해 보았지만 마지막 단계로 가는 Finish 버튼이 활성화 되지 않았다.



결국 Juno를 종료하고 SDK Manager 에서 이미 설치되어 있던 Version 9를 삭제하고 다시 설치하였다.





다시 실행시킨 Juno에서 프로젝트 생성 단계에 문제가 생기기 않았다.



Hello 프로젝트를 진저브레드와 젤리빈 에뮬레이터에서 실생시켜 보았다.

 



조정이 가능한지 모르겠지만 젤리빈에서의 작업 영역이 줄어들었다.&

Original Post : http://neodreamer-dev.tistory.com/668

2012/07/02

Eclipse 4.2 Juno Released



Eclipse 가 새로운 버전 4.2 Juno 버전을 공개하였다.


UI가 전체적으로 깔끔해 졌다. 개발의 편의성도 많이 좋아진 것 같고...


Android Jelly Bean을 공개하는 시점에 나와으니 새로운 개발 환경에서 잊고 있었던 안드로이드 개발을 다시 공부해 봐야 겠다.


Eclipse Homepage

Eclipse Download Page

Eclipse Juno - New and Noteworth

Original Post :
http://neodreamer-dev.tistory.com/667

2012/06/20

NSIS 런타임에 32bit 시스템 인지 64bit 시스템 인지 감지하기

; Check OS Platform
System::Call "kernel32::GetCurrentProcess() i .s"
System::Call "kernel32::IsWow64Process(i s, *i .r0)"
StrCmp $0 '0' Win32 Win64
Win32:

Goto EndCheck
Win64:

EndCheck:



2010/07/09 - [Com. Story] - NSIS 이용한 Install 할 때 32bit 시스템 인지 64bit 시스템 인지 감지하기

<

Original Post : http://neodreamer-dev.tistory.com/666

SayRadio Windows Gadget



인터넷 서핑 중 SayRadio를 보고 블로그등의 웹페이지에 삽입할 수 있어 이를 Windows Gadget에 추가해 보았다.


작업은 그리 어렸지 않았다. Say Radio(http://saycast.sayclub.com/saycast/index/widget/sayclub)에서 Blog에 삽입하는 코드를 가져와서 Gadget의 본체에 넣어 주기만 하면 된다.


보기 좋게 크기 맞추고 스크롤바를 감춘 것이 모든 작업이다.


이 Gadget을 바탕화면에 추가하면 아래와 같이 보여진다.





2012/05/23 - [Dev Story/Tips] - Windows gadget 만들기 - Hello Widget

<

Original Post : http://neodreamer-dev.tistory.com/665

2012/06/19

HTML5 Video

HTML5에 Multimedia를 위해 Video element가 추가 되었다. video 태그를 이용하여 쉽게 웹페이지에서 동영상을 보여 줄 수 있다.



보여줄 수 있는 코덱은 MPEG4, WebM, Ogg 가 있다. Audio 와 마찬가지로 표준이 없다. 브라우저마다 지원하는 코덱이 서로 달라서 하나의 포맷으로 모든 브라우저을 대응할 수 없다. Mpeg4와 Ogg정도 구성을 해야 대부분의 브라우저를 대응할 수 있다.



video 태그 속성


  • autoplay

    value - autoplay

    페이지 로딩을 마치고 동영상을  자동으로 재생할 지 여부를 설정한다. "autoplay"를 설정할 경우 동영상을 자동재생한다.

     

  • controls

    value - controls

    동영상 재생을 제어할 제어 컨트롤을 보여줄지를 설정한다. "controls"로 설정한 경우 화면에 재생 트랙과 Volume 을 조정할 수 있는 컨트롤을 보여준다.

     

  • height

    value - pixels

    video player 높이를 설정. 실제 영상의 비율은 유지되며 재생한다.

     

  • width

    value - pixels

    video player 폭을 설정. 실제 영상의 비율은 유지되며 재생한다. 

     

  • loop

    value - loop

    반복 여부를 설정한다. "loop" 설정시 재생 완료 후 반복해서 재생한다.

     

  • muted

    value - muted

    동영상 재생시 소리 재생 여부를 설정한다. "muted"를 설정한 경우 소리는 재생되지 않는다.

     

  • poster

    value - URL

    동영상을 불러오는 동안에 표시하는 이미지 이다. 미리 읽기가 끝나 재생이 시작되거나 사용자가 클릭한 경우 poster 이미지는 사라진다.

     

  • preload

    value - auto, metadata, none

    동영상 데이터의 미리읽기를 할지 여부를 설정한다. "auto"로 설정한 경우 페이지 로딩이 끝나고 동영상 데이티를 읽어 들인다.

     

  • src

    value - URL

    재생할 동영상 주소를 설정한다.

     




video 태그는 아래 source와 track element를 포함할 수 있다.

source는 재생하고자 하는 동영상의 정보를 담고 있으며 아래 와 같은 속성을 포함 한다.

source tag 속성


  • media

    value - media_query

    Audio 리소스의 type 대한 정의라 하는데 거의 사용이 되지 않는 듯 하다.




  • src

    value - URL

    재생하고자 하는 파일의 경로를 지정한다.




  • type

    value - MIME_type (video/mp4, video/ogg, video/webm)

    재생하고자 하는 파일의 형식을 지정한다.

    video/mp4 : MPEG 4 (H264 video + AAC audio codec)

    video/ogg : Ogg (Theora video + Vorbis audio codec)

    video/webm : WebM (VP8 video codec + Vorbis audio codec)

     


 track은 자막에 대한 설정을 아래와 같은 속정을 포함 한다.


  • default

    value - default

    기본 자막 설정

     

  • kind

    value - captions, chapters, descriptions, metadata, subtitle

    자막 종류 설정

     

  • label

    value - text

    기본 자막 설정

     

  • src

    value - URL

    기본 자막 설정

     

  • srclang

    value - language_code (en, ko...)

    기본 자막 설정

      


자막의 경우 WebVTT 형식을 지원한다고 하는데 이에 대해서는 좀 더 정보를 알아봐야겠다.



아래 코드는 간단하게 동영상을 재생하는 코드이다.

<!DOCTYPE html>
<HTML>
<HEAD>
<TITLE> HTML5 Video </TITLE>
</HEAD>
<BODY>
<video controls="controls">
<source src="Friends - [1x01] - The One where Monica gets a Roommate.mkv" type="audio/mpeg" />
Your browser does not support the video element.
</vedeo>
</BODY>
</HTML>



 

&

Original Post : http://neodreamer-dev.tistory.com/664

2012/06/18

HTML5 Audio

HTML5 에서는 Audio를 재생할 수 있는 <audio> 태그를 지원해 별도의 작업없이 바로 Audio를 재생할 수 있다.

HTML5 에서 지원하는 Audio 형식은  .mp3 .wav .ogg .m4a 이지만 모든 형식을 모든 브라우저에서 지원하지는 않는다 그렇다고 표준이 정해져 있어 모든 브라우저에서 재생되는 형식도 없다.



ogg와 mp3를 함께 구성해 놓으면 거의 모든 브라우저에서 재생이 가능 하다.

서로다른 형식의 파일을 모두 source 태그에 포함해 두면 지원되는 형식이 재생이 된다.



audio tag는 5가지 속성과 1개의 하위 항목을 가질 수 있다.



audio tag 속성


  • autoplay

    value - autoplay

    자동 재생 여부를 설정 한다. "autoplay"로 설정한 경우 페이지 로딩 후 mp3를 재생한다. 




  • controls

    value - controls

    재생 동작을 조작할 수 있는 제어화면 출력 여부를 설정 한다. Track 및 Volume을 조정할 수 있다. 




  • loop

    value - loop

    재생 완료 후 다시 재생 여부를 설정 한다. "loop"가 설정된 경우 자동으로 다시 재생을 한다. 




  • preload

    value - auto, metadata, none

    재생 해야 할 Audio를 미리 읽어들일지 여부를 설정 한다. "auto"로 설정한 경우 페이지 로딩 후 미리 읽기를 한다. 




  • src

    value - URL

    재생하고자 하는 Audio 파일의 경로를 설정 한다. 



  

Audio tag 의 하위 항목 으로 <source> 를 포함 할 수있다.

<source>는 재생을 하고자 하는 Audio 파일에 대한 자세한 정보를 담고 있다. <audio> 의 속성에 src 있어 지정을할 수 있지만 Audio 파일의 형식을 지정할 수 없어 <source>를 사용하는 것이 좋다.



source tag 속성


  • media

    value - media_query

    Audio 리소스의 type 대한 정의라 하는데 거의 사용이 되지 않는 듯 하다.




  • src

    value - URL

    재생하고자 하는 파일의 경로를 지정한다.




  • type

    value - MIME_type (audio/aac, audio/mp4, audio/mpeg, audio/ogg, audio/wav, audio/webm)

    재생하고자 하는 파일의 형식을 지정한다.





아래 HTML5 소스는 간단하게 MP3 파일을 재생하는 코드이다. audio 태그의 controls 속성만 부여하여 화면에 보이도록 하였다.

<!DOCTYPE html>
<HTML>
<HEAD>
<TITLE> HTML5 Audio </TITLE>
</HEAD>
<BODY>
<audio controls="controls">
<source src="rainymood30a.mp3" type="audio/mpeg" />
Your browser does not support the audio element.
</audio>
</BODY>
</HTML>

 



이 파일을 Chrome 에서 불러오면 아래와 같은 재생 화면을 볼 수 있다.

&

Original Post : http://neodreamer-dev.tistory.com/663

2012/06/17

HTML5 이건 뭐지?

요 몇일 HTML5가 뭔지 거들떠 보고 있다.

띠엄띠엄 거들떠 보고는 있는데 당최 뭐가 뭔지 모르겠다.


몇 가지 거들떠 본 바로는 문서를 구조적으로 구성할 수 있는 태그들이 추가되고 확장된 태그들도 있고 CSS로 대채할 수 있는 문자를 꾸미는 태그들을 지원하지 않는다 한다.


구성에 필요한 태그들 이외에 멀티미디어 및 Offline API가 추가 되었다. 

HTML5가 XHTML을 포함하는지 태그 사용 규약이 더 엄격해진 것 같다. 태그 사용하면서 닫는 태그 하나 빠뜨린 것으로 페이지가 정상 출력되지 않았다.


앞으로 HTML5를 틈틈이 띠엄띠엄 거들떠 보려 하는데 만만치 않은 녀

Original Post : http://neodreamer-dev.tistory.com/662

2012/06/15

SQLite Release 3.7.13

SQLite 가 버전업을 하였다.

이번 배포판부터는 Metro style 응용프로그램을 위한 WinRT API 를 사용한 Dll 파일을 배포하고 있다.




SQLite Release 3.7.13 On 2012-06-11 (3.7.13)


  • In-memory databases that are specified using URI filenames are allowed to use shared cache, so that the same in-memory database can be accessed from multiple database connections.

  • Recognize and use the mode=memory query parameter in URI filenames.

  • Avoid resetting the schema of shared cache connections when any one connection closes. Instead, wait for the last connection to close before reseting the schema.

  • In the RTREE extension, when rounding 64-bit floating point numbers to 32-bit for storage, always round in a direction that causes the bounding box to get larger.

  • Adjust the unix driver to avoid unnecessary calls to fchown().

  • Add interfaces sqlite3_quota_ferror() and sqlite3_quota_file_available() to the test_quota.c module.

  • The sqlite3_create_module() and sqlite3_create_module_v2() interfaces return SQLITE_MISUSE on any attempt to overload or replace a virtual table module. The destructor is always called in this case, in accordance with historical and current documentation.

  • SQLITE_SOURCE_ID: "2012-06-11 02:05:22 f5b5a13f7394dc143aa136f1d4faba6839eaa6dc"

  • SHA1 for sqlite3.c: ff0a771d6252545740ba9685e312b0e3bb6a641b



SQLite Homepage&

Original Post : http://neodreamer-dev.tistory.com/661

2012/06/11

AnkhSVN 2.3.11269 Released

변경사항

  • Compiled against Subversion 1.7.5.

  • Support for Visual Studio 2012 RC, including a UI refresh.

  • Removed old style file selection control, replacing it with the common selection dialog

  • Many performance improvements in AnkhSVN and SharpSvn (Several privately reported cases via CollabNet and their partners)

  • Directly record copies and moves in Subversion instead of moving files around via temporary locations

  • Disable commands that could cause unrelated reloads files during opening the solution, building and debugging

  • Enable the navigation bar in the annotate viewer of Visual Studio 2010 and 2012

  • Resolve a focus stealing issue in several Sql server related project types, by using a slower glyph update for these projects

  • Improve stability of the Visual Studio Class View in Visual Studio 2010, when the Solution Navigator is not installed

  • Show a VS wait dialog when we are slowing down Visual Studio for too long on Pending changes initialization

  • Fix copy recording directly below the working copy root

  • Fix 'Scc Files' / 'Scc Excluded' handing on C++ projects in Visual Studio 2010 and later

  • Add option to immediately import a project on adding it to Subversion, to avoid a double commit

  • Properly mark new files over deleted files as pending changes

  • Record and reload recent urls in the add to subversion dialog





AnkhSVN Homepage

AnkhSVN Download Page&

Original Post : http://neodreamer-dev.tistory.com/660

2012/06/04

OpenCV 2.4.1 Released







2.4.0 에서 변경된 사항들

  • The GPU module now supports CUDA 4.1 and CUDA 4.2 and can be compiled with CUDA 5.0 preview.

  • Added API for storing OpenCV data structures to text string and reading them back:
    //==== storing data ====
    FileStorage fs(".xml", FileStorage::WRITE + FileStorage::MEMORY);
    fs << "date" << date_string << "mymatrix" << mymatrix;
    string buf = fs.releaseAndGetString();

    //==== reading it back ====
    FileStorage fs(buf, FileStorage::READ + FileStorage::MEMORY);
    fs["date"] >> date_string;
    fs["mymatrix"] >> mymatrix;


  • cv::calcOpticalFlowPyrLK now supports precomputed pyramids as input.

  • Function signatures in documentation are made consistent with source code.

  • Restored python wrappers for SURF and MSER.

  • 45 more bugs in our bug tracker have been fixed




OpenCV의 행보가 자꾸만 빨라지는 것 같다. 모바일 플랫폼에 대한 대응도 잘 이루어지고 있고 로드 맵 상으로는 올 해 안으로 2.5 버전이 나올 것 같다.

하지만 매번 컴파일을 해서 써야해 그만큼 빈번하게 빌드해야해서 좀 귀찮아 질 것 같다.



현재 OpenCV는 다양한 버전의 Visual C++에 대한 .Dll과 .Lib 파일을 함께 배포하고 있지만 32비트와 64비트가 구분이 되지 않아 불편하다. 32비트 버전과 64비트 버전을 같은 경로에서 실행할 수 없는 문제가 있고 .Dll 이나 .Lib 파일 이름으로 32비트와 64비트를 구분할 수 없는 문제가 있다. 그래서 매번 다시 빌드해서 사용하고 있다. 이 문제가 해결이 되면 새로운 버전이 나올 때마다 다시 빌드할 필요가 없을 것 같은데 아쉽다.



http://code.opencv.org

http://sourceforge.net/projects/opencvlibrary/

Original Post :
http://neodreamer-dev.tistory.com/659

2012/06/01

[MFC] System Menu에 "About..." 메뉴 추가하기

DialogBased 응용프로그램에서 시스템 메뉴에 사용자 메뉴를 추가하기 위해 찾은 정보이다.



////////////////////////////////////////////////////////////////////////////////
// Add "About..." menu item to system menu.
// IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);

CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}

<

Original Post : http://neodreamer-dev.tistory.com/658

2012/05/24

Windows Gadget에 HTML5 적용하기

Windows Gadget에 HTML5를 적용하는 방법을 찾아 보았다.

검색을 해 보았지만 쉽게 나오지 않았다. 어렵사리 찾았는데 방법이 생각보다 쉬웠다. 레지스트리를 수정하는 것도 아니고 단순히 HTML 파일에 아래 내용만 더 기술하면 되는 것이였다.

<!DOCTYPE html>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>





물론 시스템에 IE9가 설치 되어 있어야 한다.



HTML5의 중요한 속성중 하나인 Canvas를 테스트 해 봤다.

(HTML5 Canvas 소스 출처: http://www.w3schools.com/html5/html5_canvas.asp)

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta http-equiv="Content-Type" content="text/html; charset=Unicode" />
<style type="text/css">
body
{
margin: 0;
width: 200px;
height: 100px;
font-family: verdana;
font-weight: bold;
font-size: 20px;
}
#gadgetContent
{
margin-top: 0px;
width: 100%: middle;
text-align: center;
overflow: hidden;
}
</style>
</head>

<body>
<div id="gadgetContent">
Canvas
<canvas id="myCanvas" width="200" height="50"></canvas>
</div>
</body>

<script type="text/javascript">
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
var grd=ctx.createLinearGradient(0,0,175,50);
grd.addColorStop(0,"#FF0000");
grd.addColorStop(1,"#00FF00");
ctx.fillStyle=grd;
ctx.fillRect(0,0,175,50);
</script>
</html>




실행한 결과 아래와 같이 HTML5 Canvas위에 그라데이션이 그려졌다.

&

Original Post : http://neodreamer-dev.tistory.com/657