2012/11/30
C++ 문자열 비교 속도 테스트
string strSrc = "Test string...";
문자열 비교 테스트를 하는데 위 코드가 월등하게 빠를것으로 예상하고 테스트 했는데 아래 코드가 더 빠르다.
추가로 아래의 대소문자를 구분한 코드도 비교해 보았다.
결과는 위 코드는 string의 compare 함수와 크게 차이가 나지 않았다.
보다 나은 성능을 고려할때에는 문자열 비교 할 때 대 소문자를 구분 하거나 미리 대문자든 소문자든 바꾸어 놓은 후 비교를 해야겠다.
2012/11/15
Visual Studio 2010 "IntelliSense: #error directive:..." 에러
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
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
짜증나는 쿠팡의 스크립트 링크 크롬 확장 해결!!
건의는 계속 했지만 변화가 없어 직접 해결 하였다.
지난번 지도는 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 스크립트 실행하기
이전 글을 응용하여 Python 스크립트를 실행해 보았다.
NppExec의 Execute 대화상자에 아래와 같이 Python을 실행시키는 명령을 입력하고 Run Python으로 저장하였다.
간단한 스크립트를 작성하여 저장하고 실행해 보면 아래 화면과 같이 Console 창에 실행 결과를 볼 수 있다.
&
Original Post : http://neodreamer-dev.tistory.com/681
Notepad++ 에서 Lua 스크립트 실행하기
Notepad++ 에서 Lua 스크립트를 실행하려면 NppExec 라는 Plugin이 필요하다.
인터넷에 연결된 상태라면 Plugin Manager를 이용하여 쉽게 설치할 수 있다.
Plugin Manager에서 NppExec를 선택하고 Install 버튼을 누르기만 하면 된다.
설치 후 Notepad++을 다시시작하면 Plugins 메뉴에 NppExec를 볼 수 있다.
간단한 스크립트를 작성하고 이 스크립트를 실행할 명령을 Execute 대화상자에 입력한다.
$(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
- 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 저장 문제
컴파일과 실행에는 문제가 없었는데 저장(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 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 테스트
이전 버전에서 테스트할 때에는 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
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
|
새로운 맘으로 다시 공부를 시작해 보려 책을 샀다. 두툼한 책으로 예제 중심으로 되어 있고 최식 버전에 대한 설명도 있다.
안드로이드의 기본 개념부터 구성및 기초 그리고 활용까지 다루고 있다. 작가도 Android Side 운영자이면서 Java관련 서적을 다수 집필한 한 동호 님이다.
목차 보기
PART 1 안드로이드 기본 개념
SECTION 01 안드로이드 개요 _2
SECTION 02 안드로이드 플랫폼 특징 _3
SECTION 03 안드로이드 버전 히스토리 _4
SECTION 04 안드로이드 버전별 시장 분포 _5
SECTION 05 안드로이드 화면 크기와 해상도별 시장 분포 _7
SECTION 06 안드로이드 2.2의 주요 변화 _9
SECTION 07 안드로이드 2.3의 주요 변화 _10
SECTION 08 안드로이드 3.0의 주요 변화 _12
SECTION 09 안드로이드 4.0의 주요 변화 _13
SECTION 10 안드로이드 실행 환경 _16
SECTION 11 안드로이드 개발 환경 _18
SECTION 12 안드로이드 HelloWorld 작성하기 _19
SECTION 13 안드로이드 프로젝트 구조 _27
SECTION 14 안드로이드 에뮬레이터 살펴보기 _39
PART 2 안드로이드 구성요소
SECTION 01 안드로이드 주요 용어 _50
SECTION 02 안드로이드의 4대 주요 컴포넌트 _51
SECTION 03 안드로이드 애플리케이션 구조 _52
SECTION 04 액티비티 살펴보기 _53
SECTION 05 서비스 살펴보기 _58
SECTION 06 브로드캐스트 리시버 살펴보기 _60
SECTION 07 콘텐트 프로바이더 살펴보기 _61
SECTION 08 인텐트와 인텐트 필터 살펴보기 _63
SECTION 09 통지 살펴보기 _71
SECTION 10 컴포넌트 활성화 및 비활성화 _73
PART 3 안드로이드 사용자 인터페이스
SECTION 01 안드로이드 인터페이스 구성요소 _76
SECTION 02 뷰 _77
SECTION 03 뷰 컨테이너 _108
SECTION 04 레이아웃 _128
PART 4 안드로이드 기초
SECTION 01 로그와 뷰 추가 방법 _138
SECTION 02 스타일과 테마 _147
SECTION 03 리소스 _162
SECTION 04 버튼 _170
SECTION 05 에디트텍스트 _181
SECTION 06 스피너 _189
SECTION 07 액티비티 _193
SECTION 08 키/터치 이벤트 _212
SECTION 09 스크롤뷰 _233
SECTION 10 그리드뷰 _241
SECTION 11 갤러리 _245
SECTION 12 뷰플리퍼 _262
SECTION 13 슬라이딩드로어 _270
SECTION 14 레이아웃 _281
SECTION 15 폰트 _291
SECTION 16 토스트 296
SECTION 17 다이얼로그 _307
SECTION 18 상태바 _326
SECTION 19 메뉴 _331
SECTION 20 환경설정 _341
SECTION 21 이미지/그래픽 _367
SECTION 22 웹뷰 _378
PART 5 안드로이드 활용
SECTION 01 액션바(ActionBar) _404
SECTION 02 프래그먼트(Fragment) _441
SECTION 03 스레드(Thread) _489
SECTION 04 리스트뷰 활용하기 _514
SECTION 05 확장 리스트뷰 활용하기 _546
SECTION 06 파일 활용하기 _556
SECTION 07 데이터베이스 활용하기 _572
SECTION 08 인텐트 활용하기 _592
SECTION 09 XML _633
SECTION 10 브로드캐스트 리시버 _641
SECTION 11 SMS 송신 및 수신하기 _651
SECTION 12 콘텐트 프로바이더 활용하기 _670
SECTION 13 위치 정보 활용하기 _677
SECTION 14 구글 맵 활용하기 _714
SECTION 15 전화 _763
SECTION 16 애니메이션 _783
SECTION 17 네트워크 활용하기 _791
SECTION 18 서비스 _816
SECTION 19 애플리케이션 위젯 _837
SECTION 20 SD 카드 _858
SECTION 21 서피스뷰 _864
SECTION 22 기타 _880
부록
A 개발자 등록 및 애플리케이션 마켓 배포 _890
B TIP & TECH 리스트 _904
C 프로젝트 리스트 _907
D API 리스트 _914
E 안드로이드 개발 환경 구축하기 _918
F 이클립스 개발 환경 구성하기 _937
G 이클립스 개발 팁 살펴보기 _940
찾아보기 _944
아직 읽기전이라 서평을 하기는 이른 단계이지만 목차의 구성으로 봐서는 꽤 유용한 책으로 생각된다.
틈틈이 조금 공부하다 한동안 잊고 있었더니 그동한 공부해왔던 내용도 잊었다.
취미 생활격으로 하다보니 시간도 그리 많지 않고 자주 잊어버리곤 하는데 처음부터 다시 시작 하는 맘으로 공부를 해봐야 겠다.
아이들이 표지를 보더니
맛있는 초코렛이라고 달려들었는데 나에게도 이 책이 그렇게 맛있는 모습로 다가와 주었으
Original Post : http://neodreamer-dev.tistory.com/671
2012/07/10
Eclipse 시작시 Workspace 지정하기
여러 플러그인을 설치하고 필요에 따른 작업이 가능한다. 작업 환경도 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
- '.tar.bz2' format is changed to '.zip' because most of our users are Windows guys
- 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.org, http://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)
새로운 개발 환경도 구축할 겸 해서 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
보여줄 수 있는 코덱은 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 형식은 .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 이건 뭐지?
띠엄띠엄 거들떠 보고는 있는데 당최 뭐가 뭔지 모르겠다.
몇 가지 거들떠 본 바로는 문서를 구조적으로 구성할 수 있는 태그들이 추가되고 확장된 태그들도 있고 CSS로 대채할 수 있는 문자를 꾸미는 태그들을 지원하지 않는다 한다.
구성에 필요한 태그들 이외에 멀티미디어 및 Offline API가 추가 되었다.
HTML5가 XHTML을 포함하는지 태그 사용 규약이 더 엄격해진 것 같다. 태그 사용하면서 닫는 태그 하나 빠뜨린 것으로 페이지가 정상 출력되지 않았다.
앞으로 HTML5를 틈틈이 띠엄띠엄 거들떠 보려 하는데 만만치 않은 녀
Original Post : http://neodreamer-dev.tistory.com/662
2012/06/15
SQLite Release 3.7.13
이번 배포판부터는 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..." 메뉴 추가하기
////////////////////////////////////////////////////////////////////////////////
// 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 적용하기
검색을 해 보았지만 쉽게 나오지 않았다. 어렵사리 찾았는데 방법이 생각보다 쉬웠다. 레지스트리를 수정하는 것도 아니고 단순히 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