visualhhk My Blogqa

GG

Wednesday, September 8, 2010

오픈소스로 즐기는 생각정리 도구

오픈소스로 즐기는 생각정리 도구

작성: argonine 2010년 9월 8일 수요일 오전 8:22

오픈소스로 즐기는 생각정리 도구

전문적으로 그림을 그리는 프로그램은 Illustrator, CorelDraw 와 같은 벡터기반의 어플리케이션과SketchBook pro, Corel Painter, Adobe Photoshop 같은 레스터 이미지를 다루는 툴, 다이어그램을전문으로 제작하는 Microsoft Visio, 마인드맵을 전용 iMind, MindMapper, Mindjet 의 MindManager,등 전문용 프로그램들이 따로 있습니다. 이러한 툴을 개인적으로 사용하기에는 너무 복잡하고 방대한 기능들 때문에 오히려 부담이 되며 많은 비용이 들어갑니다.최근에는 오픈소스로 제작된 프로그램들이 많이 있어 전용 소프트웨어에 비슷하면서 새로운 기능을제공하고 있습니다.

비지오2_visio_draw2.bmp2_visio_draw.bmp스케치북프로9_sketchbookpro.bmp

오픈소스로 즐기는 생각정리 도구

Diagram 관련 프로그램Dia http://dia-installer.de/ 오픈소스

Diagram Designer http://meesoft.logicnet.dk/ 오픈소스11_diagram_designer.bmp

Graphviz http://graphviz.org/ 오픈소스

Inkscape http://inkscape.org/ 오픈소스8_inkscape2.bmpMicrosoft Visiohttp://office.microsoft.com/en-us/visio/ 유료 윈도우전용

OmniGraffle http://www.omnigroup.com/products/omnigraffle/ 유료 Mac전용

OpenOffice.org Draw http://openoffice.or.kr/ 오픈소스1_offenoffice_draw.bmp

yEd http://www.yworks.com/ 프리웨어, 자바기반으로 온라인에서 사용가능다양한 구조의 다이어그램, 아이디어 맵핑, 플로우차트 등의 작업이 가능

->개인적으로는 이 프로그램 강추! 입니다.

12_yED.bmp

마인드맵 소프트웨어

freemind http://freemind.sourceforge.net/ 오픈소스6_xmind1.bmp6_xmind1.bmp

xmind http://www.xmind.net/

7_xmind1.bmp

텍스트로 드로잉을 한다. Outliner 방식유료도구들은 문서를 정리하는데 비중을 두고 있는 Outliner 방식을 지원합니다. Outliner는 계층구조 또는 트리구조 형태로 문서를 작성하는 방법으로 부모, 자식관계의 속성을 문서의 구조에 적용하여 새로운 노드를 추가하여 컨텐츠를 계속 입력, 컨텐츠와 구조를 분리하여 문서를 작성하는 장점이있습니다. 완성된 텍스트로 다이어그램 또는 마인드맵을 만들어 주기도 합니다. 대표적인 프로그램은 OmniOutliner와 OmniGraffle, KeyNote, OpenOffice, MindManager, Xmind 등이 있습니다.

10_mindManager.bmp10_mindManager2.bmp

온라인으로 즐기는 생각정리 도구

마인드 마이스터http://www.mindmeister.com/mindmeister는 온라인기반으로 마인드맵을 만들 수 있는 간단한 도구입니다. 협업으로 다른 사람과마인드맵을 함께 수정할 수 있고 iPhone, iPad 앱이 있어 아이디어를 떠올리고 바로 작성할 수 있는클라우드형 마인드맵 도구로 사랑받고 있습니다. 다만 기능이 단순하다는 점이 아쉬운 부분입니다.유료버전은 다양한 마인드맵 포맷으로 출력할 수 있습니다.3_mindmeister2.bmp3_mindmeister3.bmp

http://mind42.com/ 온라인에서 운영가능한 플래시 기반의 마인드맵 서비스로 보다 다양한 기능을 제공합니다.4_mind42_1.bmp

http://mindomo.com/ 온라인에서 운영가능한 플래시 기반의 마인드맵 서비스로 MS Office와 비슷한 인터페이스를 제공하며 depth 별로 펼침메뉴를 제공합니다.

온라인Cacoo - http://cacoo.com/ 플래시 기반의 다이어그램 디자인 실시간 채팅을 도입하여 함께 협업하여 문서 작성을 할 수 있습니다.

Creately http://creately.com/ - 플래시 기반의 다이어그램 디자인 도구로 다양한 템플릿과 UI, 소프트웨어 시스템 다이어그램 등 다양한 템플릿을 제공하며 협업이 가능합니다.

Lucidchart http://www.lucidchart.com/ - HTML5와 자바스크립트 기반의 다이어그램, 플로우차트 디자인 협업도구

구글독스 - http://docs.google.com/ 구글독스에서 제공하는 드로잉 기능 HTML, Canvas를 사용하여인터넷익스플로러에서는 사용이 불가능하지만 간단한 문서를 공유할 수 있는 장점이 있습니다.

5_docs_4.bmp

Evernote와 iPhone으로 그림을 스캔, 문서정리손으로 그린 그림을 스캔하여 보정하는 아이폰앱인 DocScanner, Whiteboard Capture Pro와 Evernote를 함께 사용하면 작업한 결과물을 체계적으로 관리할 수 있습니다.특히 Evernote는 문서에 직접 그림을 그릴 수 있는 기능이 있어 간단한 타블릿을 활용하거나 윈도우모바일 버전에는 펜으로 그림을 그릴 수 있습니다. (Android, iPhone 미지원)

8_evernote1.bmp

맥에서는 skitch (http://www.skitch.com/)를 함께 설치하여 사용하실 수 있습니다.


댓글 달기 · · 공유하기

http://www.facebook.com/note.php?note_id=148927385141630

Wednesday, September 1, 2010

안드로이드 상단 타이틀 및 안테나 창 없애기

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
requestWindowFeature(Window.FEATURE_NO_TITLE);

setContentView(R.layout.main);
// setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
initViews();
}



해당 onCreate 부분에
this.requestWindowFeature(Window.FEATURE_NO_TITLE);

사라지는군요 -0- //

this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
요녀석은 안테나 창을 없애버리는 군요~


저런식으로 풀사이즈 구현이 가능합니다.

Sunday, August 22, 2010

ZXing 바코드 라이브러리

35.ZXing 바코드 라이브러리

ZXing 바코드 라이브러리

현재 최신 버전 1.4

Multi-format 1D/2D barcode image processing library with clients for Android, Java

공식 사이트

http://code.google.com/p/zxing/

zxing 이라는 거..

휴대폰 카메라랑 바코드 구독 장치를 서버에 연결하지 않고 사용.

오른쪽 상단에 다운 받을수 있음

지원 바코드 종류

  • UPC-A and UPC-E
  • EAN-8 and EAN-13
  • Code 39
  • Code 128
  • QR Code
  • Data Matrix ('alpha' quality)
  • PDF 417 ('alpha' quality)
  • ITF

데자와 캔 음료

8801097481015

Format: EAN_13

Type: PRODUCT

Getting Started

http://code.google.com/p/zxing/wiki/GettingStarted

사용하려면 이 문서를 먼저 봐야 할듯 함

JavaDoc

http://zxing.org/w/docs/javadoc/index.html

SVN 경로

http://zxing.googlecode.com/svn/

카메라를 이용한 바코드 인식 문의 드립니다..

http://www.androidpub.com/11653

-안드로이드에서 바코드 인식 방법

1. 카메라로 바코드를 찍고,
2. 찍힌 이미지에서 바코드의 위치를 정확히 찾고( 화면 가운데에 바코드가 오는 것을 가정하면 일이 좀 줄어들고요. )
3. 바코드 타입( CODE128, CODE39, EAN13 등의 여러가지 종류가 있어요. )별로 맞는 바코드인지 테스트합니다.
4. 특정 바코드 타입으로 분석해서 문제없이 해석이 되면, 바코드->숫자 변환 과정이 끝납니다.
5. 이 숫자는 책의 ISBN 번호인 경우도 있고, 과자의 상품번호인 경우도 있는데, DB를 검색해서 해당 제품의 정보를 받아와서 보여줍니다.

직접 만들려면, 이미지 처리해서 깨끗한 바코드 이미지로 변환하는 방법, 바코드 타입별로 분석하는 방법을 공부해야 합니다.

-동영상

바코드를 찍어서 바로 구글 안드로이드 마켓에 연결하여, 해당 제품을 검색할 수 있게 한다.

http://www.youtube.com/watch?v=gu6k4dFtf-U

ZXing 설정 순서

아무튼 순서 정리!

zxing 에서 core를 ant 를 이용하여 컴파일

core.jar 이 생성되는데 이걸 프로젝트에 추가 해 준다.

프로젝트를 선택하고 Properties 설정 화면으로 간다.

Java Build Path 로 이동

Libraries 탭 선택

Add External JARs버튼 클릭 해서 core.jar 를 추가 해 준다.

svn에서 받은 소스중 androidtest 프로젝트를 참고 하여 작성 한다

컴파일한 파일 첨부

zxing1.4core.jar

ZXing 사용 순서

여러가지 방법이 있으나 기본 기능인 바코드찍는 화면과 찍고 나면 결과 값을 받는 기능을 적음

아래의 코드가 실행되면 바코드 찍는 화면이 나타난다. (기본적으로 Activity를 띄울 때 startActivity를 사용하나 결과값을 받기 위해 startActivityForResult 를 사용한다.

  1. Intent intent = new Intent("com.google.zxing.client.android.SCAN");

  2. startActivityForResult(intent, 0);

  1. @Override
  2. public void onActivityResult(int requestCode, int resultCode, Intent intent)
  3. {
  4. if (requestCode == 0)
  5. {
  6. if (resultCode == RESULT_OK)
  7. {
  8. String contents = intent.getStringExtra("SCAN_RESULT");
  9. String format = intent.getStringExtra("SCAN_RESULT_FORMAT");
  10. showDialog(R.string.result_succeeded, "Format: " + format + "\nContents: " + contents);
  11. }
  12. else if (resultCode == RESULT_CANCELED)
  13. {
  14. showDialog(R.string.result_failed, getString(R.string.result_failed_why));
  15. }
  16. }
  17. }
  18. private void showDialog(int title, String message)
  19. {
  20. AlertDialog.Builder builder = new AlterDialog.Builder(this);
  21. builder.setTitle(title);
  22. builder.setMessage(message);
  23. builder.setPositiveButton("OK", null);
  24. builder.show();
  25. }

ZXingTestActivity

androidtest: Android test app

이 프로젝트의 소스를 참고해보면 좋다.

참고

ANT

ANT를 먼저 사용 할 수 있어야 함

환경변수에 ANT관련 설정 해 주어야 함

ANT를 사용하려면 javac를 사용해야 되기 때문에 환경변수에서 JAVA 경로도 지정해 주어야 됨

build.xml:64: taskdef class com.android.ant.SetupTask cannot be found 오류

build.properties 에 android-home 경로 지정 수정해 주어야 됨

-> 안되네 -_-; 그러면 환경변수에서 android lib 경로를 직접 지정

build.xml:75: Unable to resolve target 'Google Inc.:Google APIs:4'

또 다른 오류 발생 -_-; 짜증

기타

ZXing 1.3 으로 해보니

tools/aapt.exe 가 없다고 안됨 -_-; 이건 언제적 버전에 있던 프로그램이지;;

ZXing 1.4는 안드로이드 1.6 이상은 되어야 쓸 수 있는 코드들이 다수 보임

ZXing 1.3을 사용해보고 있음

여기 있는 예제는 1.4에서도 잘 됨. 단 Android SDK 1.6에서만 되는 코드 있는 예제는 1.5에서 안됨.

2010-01-11 21:59 에 김준호님이 마지막으로 수정

댓글 (6)

  • 알미렌

    좋은 예제 감사합니다. 그런데 다름이 아니오라 혹시 core.jar 컴파일 하신거 받을수 있을까요? 전 계속해서 에러가 발생해서 컴파일이 안되던데 계속해서 javac를 못찾는다는 에러가 나더군요; 환경변수에 추가하고 build.xml 을 수정을 하여도 컴파일이 안되는;;;

    2010-01-11 16:33
  • junho85

    컴파일한 파일을 첨부해 두었습니다. 아마 path 지정이 잘못된거 같은데 다시 확인해 보세요.

    2010-01-11 21:59
  • 제냐

    안녕하세요. Zxing을 이용해 간단한 어플하나 만들어보려고 하는데 많은 어려움을 겪고 있습니다. ant를 설치 하려는데 계속 Buildfile: build.xml does not exist! Build failed 메세지가 뜨네요. 어떻게 해야 하는지 좀 알려주실수 있나요? 괜찮으시다면 이메일 연락 가능한지 궁금합니다.

    2010-03-06 18:37
  • junho85

    @제냐 build.xml does not exist! 메시지는 build.xml 를 못찾아서 그러는거 같은데 build.xml 파일이 제 위치에 있는지 확인해 보세요.

    2010-03-09 21:47
  • topspin

    C++ library 도 있나요?

    2010-07-23 14:58
  • 김준호

    @topspin : http://code.google.com/p/zxing/source/browse/trunk/cpp/magick/src/example.cpp 이걸 한번 참고해 보세요.

    2010-07-23 18:32




Thursday, July 22, 2010

toad 한글 깨짐 문제

toad 한글 깨짐 문제
toad로 oracle 10g 에서 데이타를 읽어 오는데
한글이 깨지고 지랄이다.

datagrid 부분에 한글이 깨지면,

아래 경로에 작성하여 주면 된다.
나의 경우 아래 경로에 값이 존재 하지 않아 추가 해주었다.

작성하고 toad 새로 실행하니 바로
한글이 올바르게 표현 되었다.

키이름은
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE

에 문자열값
NLS_LANG

값 데이타
KOREAN_KOREA.KO16MSWIN949

이다.

Wednesday, July 21, 2010

갈릴레오 이클립스 메모리

참조 사이트

http://kwon37xi.egloos.com/2368729

http://blog.eclipsercp.or.kr/javanese/?p=34

http://wiki.ex-em.com/index.php/JVM_Options

http://blog.naver.com/taeung3?Redirect=Log&logNo=40092151514



1. 일단 메모리 옵션에 대해 알아보자.(eclipse.ini옵션 혹은 JVM 옵션)


자바 메모리 영역은 Java Heap space와 Permenant Generaton대상 데이터를 두기 위한 PermGen space로 구분된다고 한다.

클래스의 메타정보는 PermGen space에 들어가고 일반적인 프로그램 실행영역은 heap space인듯 하다.


out of memory 를 비롯하여 여러 메모리 문제는 이 두개의 영역의 크기를 조정함으로써 해결할수 있다.


설정할수 있는것으로는 각 메모리영역의 최초사이즈, 최대사이즈, 증가비율등 다양한데


여러문서에서는 가급적이면 최초사이즈와 최대사이즈를 같게 하는것이 사이즈 변경에 따른 시스템부하를 줄이므로 좋다고 한다.


2. ecipse.ini들여다 보기

일단 이클립스 갈릴레오 설치시 ini를 보면

--launcher.XXMaxPermSize

64m


-Xms128m

-Xmx128m

등이 있는데

--launcher.XXMaxPermSize는 Perm영역의 최대크기이고

-Xms는 힙영역의 시작크기, -Xmx는 힙영역의 최대크기이다.


따라서 힙역역이 모자란 경우에는 힙역역을 늘여주고 perm영역이 모자라면 perm영역을 늘여주면

메모리 부족현상은 해결할수 있을것이다.


주의할점은

최대크기는 시작크기와 같거나 커야 한다는 것이고,

두번째는 시스템의 메모리를 고려하여 너무 크게 잡지 말아야 한다는 것이다. 시작크기를 512m로 잡으면 실제 얼마의 메모리를 이용하든간에 시스템의 메모리중 512m을 이클립스가 자기영역으로 잡아버림으로 다른 것을 실행할 메모리가 줄어들게 된다.

세번째는 최대크기와 시작크기를 가급적 같이하라고 권장한다는 것이다.

앞서 말한 메모리 영역 증가시 발생하는 부하때문이다.


3. 이클립스에서 얼마나 많은 heap메모리를 사용하는지 알아보자

갈릴레오에는 힙상태 표시라는 옵션이 있어 현재사용량, 현재전체 메모리, 최대메모리등을 보여주고

힙영역을 정리도 해준다.(가비지 컬렉팅이라고 해야하나?)



windows>preference>General의 show heap status를 클릭한다.


한글팩에서는

창>환경설정>일반의 힙 상태 표시이다.


이것을 클릭하면 아래와 같이 메모리 상태를 알수 있다.



그리고 쓰레기통을 클릭하면 가비지컬렉팅이 되서 메모리가 정리된다.




4. JVM메모리 관련 옵션

XmnYoung Generation이 거주하는 New Space의 크기를 지정한다. 대개의 경우 이 옵션보다는 -XX:NewRatio 옵션이나 -XX:NewSize 옵션을 많이 사용한다.
-XmsJava Heap의 최초 크기(Start Size)를 지정한다. Java Heap은 -Xms 옵션으로 지정한 크기로 시작하며 최대 -Xmx 옵션으로 지정한 크기만큼 커진다. Sun HotSpt JVM 계열에서는 최초 크기와 최대 크기를 동일하게 부여할 것을 권장한다. 크기의 동적인 변경에 의한 오버 헤드를 최소화하기 위해서이다.
-XmxJava Heap의 최대 크기(Maximum Size)를 지정한다. Java Heap은 -Xms 옵션으로 지정한 크기로 시작하며 최대 -Xmx 옵션으로 지정한 크기만큼 커진다. Sun HotSpt JVM 계열에서는 최초 크기와 최대 크기를 동일하게 부여할 것을 권장한다. 크기의 동적인 변경에 의한 오버 헤드를 최소화하기 위해서이다.



-Xss개별 Thread의 Stack Size를 지정한다. 예를 들어 Thread Stack Size가 1M이고, Thread가 최대 100개 활성화된다면, 최대 100M의 메모리를 사용하게 된다. 대부분의 경우 기본값(Default)을 그대로 사용하는 것이 바람직하다. 많은 수의 Thread를 사용하는 Application의 경우 Thread Stack에 의한 메모리 요구량이 높아지며 이로 인해 Out Of Memory Error가 발생할 수 있다. 이런 경우에는 -Xss 옵션을 이용해 Thread Stack Size를 줄여주어야 한다.


-XX:+CMSPermGenSweepingEnabledFalseCMS Collector는 기본적으로 Permanent Generation에 대해 Collection을 수행하지 않는다. 따라서 많은 수의 Class를 Loading하는 경우 Out Of Memory Error가 발생할 수 있다. 이 옵션을 활성화하면 Permanent Generation에 대한 Collection을 수행한다. JDK 1.5까지는 이 옵션과 함께CMSClassUnloadingEnabled 옵션을 활성화해야 동작한다.



-XX:GCHeapFreeLimit=5Parallel Collector를 사용할 때 GC도중 Out Of Memory Error의 발생을 방지하는데 도움을 준다. GC로 확보해야할 Free Space의 하한선을 결정한다. 이 값은 Max Heap 크기에 대한 Free 공간 크기의 비율이며 기본값은 "5"이다. 즉 Parallel Collection 후 확보해야할 Free 공간 크기가 적어도 Max Heap 크기의 5% 이상이 되도록 보장하는 것이다.


워낙 많아서 여기를 참고 http://wiki.ex-em.com/index.php/JVM_Options

이클립스 메모리 모니터(Memory Monitor



저는 이클립스를 설치하면 가장 먼저 까는것이 이 메모리 모니터입니다.

이클립스를 군에서 하도 저사양(팬D,1G메모리)? 으로 돌리다보니 메모리가 가득차게 되면

이클립스게 멈추고 손놓고 몇분씩 가만히 있던게 일상이 된지라 하도 답답해서

현재 사용하는 이클립스의 메모리양을 볼 수 있고 가비지컬렉션도 할 수 있는 이플러그인은 필수 였습니다.

설치는 간단합니다.

첨부한 파일의 압축을 푸시고 plugins 폴더안에 de.으로 시작하는 폴더를 이클립가 설치된 폴더에

플러그인안에 복사해서 넣어주시기만 하고 다시 이클립스를 구동하시면


위 사진처럼 윈도우 메뉴에서 추가된걸 확인하실 수 있습니다.

모니터를 구동해보면 아래와같이 설정된 메모리 용량을 나타내어 주는데


기본값이 이클립스 3.4 기준으로 아마 xms가 40 xmx가 256~512수준일 건데

메모리가 넉넉하시다면 저처럼 xms 512 xmx1024주시면 이클립스가 메모리가 모잘라 뻗을일은 거의 없다고 봅니다.

이 메모리 용량 설정방법은 두가지가 있는데 첨부한 파일을 압축을 풀어보시면 eclipse-opt-xicnt.bat 파일이

나오는데 이파일을 우클릭 -> 편집으로 여셔서 Xms와 Xmx부분을 수정해 주시면됩니다.

Xms는 기본메모리(시작메모리) , Xmx는 확장메모리라고 알고있습니다.

이두가지를 설정해주시고 배치파일을 이클립스가 깔린 폴더안에 넣어두시고 실행시키시면 적용된 메모리로

시작하게 됩니다.

하지만 저는 첨부된 파일을 사용하면 바로가기로 만들어도 파일 아이콘이 맘에들지 않아서 -_-;

그냥 이클립스가 설치된 폴더에 elcipse.ini 파일을 편집해서 사용합니다.

그러면 eclipse.exe를 실행해도 위파일과 같은 기능을 수행하게 됩니다.

단, 주의 하실점은 너무 많은 용량을 할당하시면 오류창이 뜨면서 실행되지 않으니 주의하세요.

ps. 가비지 컬렉션은 메모리모니터 콘솔창 우측상단을 보시면 쓰레기통 모양의 아이콘이 있는데 그 아이콘을

클릭해주시면 현재 쌓인 불필요한 메모리를 삭제해 줍니다.