제임스딘딘의
Tech & Life

고양이의 둥지 256

[Java/SWT] 그래픽스 컨텍스트 (Graphics Context)

1. GC(Graphical Context) 클래스는 SWT의 그래픽엔진의 코어를 형성한다.2. GC는 도형, 텍스트, 이미지를 그리는데 필요한 모든 메소드를 제공한다.3. 컨트롤, 디바이스 또한 다른 이미지 위에 그릴수 있다. 일반적으로 그리기 라이프사이클은 다음과 같이 구성된다.1. 그리려고 하는 대상의 GC를 생성하거나 얻음.2. 그린다.3. GC를 생성했다면, 소멸시킨다. 코드로 보면 다음과 같다. GC gc = new GC(display); gc.drawRectangle(...); gc.drawText(...); gc.drawImage(...); gc.dispose(); 일반적으로 paint handler에 그리기 코드를 넣는다. final Canvas canvas = new Canvas(she..

[SWT] 이벤트

이벤트1. SWT는 2가지 유형의 리스너를 제공한다. : untyped / typed2. untyped 리스너는 보다 간단한 코드를 작성할 수 있게 한다.3. typed 리스너는 보다 더 모듈화 된 디자인을 할 수 있게 한다. 이벤트모델1. SWT는 옵저버 패턴에 기반한 이벤트모델을 사용한다.2. 다수의 리스너를 등록하여 알림메세지를 보낼 수 있다.3. SWT에서는, 위젯과 Display만 이벤트 리스너를 가질 수 있다. Typed 이벤트 리스너타입이 정해진 이벤트 리스너(typed listner)는 단지 한종류의 특정한 이벤트 타입에 대해서만 listen 할 수 있다. 예를 들면, SelectionListener 는 SelectionEvent 라는 이벤트타입에 대한 리스너 이다.untyped 이벤트 리..

[리눅스/커널] 커널에서 자주 사용되는 매크로 : likely( ) / unlikely( )

커널에서 자주 사용되는 매크로 : likely( ) / unlikely( )커널 소스를 보다보면 likely 또는 unlikely 메크로를 자주 사용하는 것을 볼 수 있습니다. likely / unlikely macro가 어떤 의미를 가지는 매크로인지 궁금했어요.그래서 알아보았죠. 커널 3.2 코드를 기준으로 likely / unlikely macro는 커널 소스에 다음과 같이 정의되어 있더군요. 소스위치는 ./include/linux/compiler.h 109 /*110 * Using __builtin_constant_p(x) to ignore cases where the return111 * value is always the same. This idea is taken from a similar p..

Concurrency Visualizer

Concurrency Visualizer View는 컴퓨터에서 멀티스레드 기반 어플리케이션이 자신,하드웨어,OS,다른 프로세스와의 상호작용 하는것을 볼수있게 한다.이 뷰는 당신의 프로그램안과 시스템전체의 스레드들간의 임시적인 관계를 보여주는 그래픽,표, 텍스트 데이터를 제공한다.당신은 Concurrency Visualizer를 성능 병목구간, CPU 자원낭비지점, 스레드 경쟁, 다중코어에서의 코어간 스레드 이동, 동기화 지연, overlapped I/O 영역 그리고 다른 정보들 에 위치시켜 사용할수 있다.뷰는 당신이 그것의 그래픽출력을 콜스택이나 소스코드에 연결하는 등의 행위를 언제나 가능하도록 데이터를 제공한다이 도구는 효율적인 워크플로우가 가능하도록 Visual Studio 2010 프로파일러에 통합..

Java에서 AES 128 암호화/복호화 구현

AES 암호화 AES 소개 1997년 1월에, 기존의 데이터 암호 표준, 즉 DES를 대체할 보다 강력한 알고리즘을 찾기 위한 공모 작업이 미국 상무부의 한 기관인 표준기술연구소(NIST)에 의해 시작되었다. 새로운 알고리즘이 충족해야 할 규격 요건으로는, 최소 128 비트나 192 비트 또는 256 비트 크기의 키를 지원하는 128 비트 크기의 블록 암호화를 사용한 대칭형 (암호화나 복호화를 하는데 동일한 키가 사용되는) 알고리즘으로서, 전 세계적으로 로열티 없이 사용할 수 있어야 하며, 향후 20년~30년 동안 데이터를 보호하기 위해 충분한 정도의 보안성을 제공할 것이 요구되었다. 또한, 이 알고리즘은 스마트카드 등과 같은 제한된 환경을 포함하여 하드웨어나 소프트웨어로 구현하기 쉬워야 했으며, 다양한..

[모듈 삽입 에러] unknown symbol in module

ko 파일을 insmod 명령을 통해 커널에 동적 삽입을 시도할 때 다음과 같거나 혹은 유사한 메세지를 뱉으며 에러가 나는 경우가 있다. -1 : unknown symbol in module dmesg 명령을 통해 커널 로그를 확인 해보자.모듈 삽입시 에러가 나는 원인을 어느정도 추측할 수 있을 것이다. dmesg 에 기록된 메세지 사례 사례 1 :Unknown symbol lockdep_init_map (err 0) 다음 조건을 만족하면 발생 : 컴파일한 모듈의 소스코드에 semaphore, mutex, spinlock 등 락 메커니즘을 사용하는 함수가 포함되어있는 경우. 커널 빌드시 CONFIG 옵션중 lock 관련 디버깅 옵션을 활성화 한 경우.(lockdep) lockdep는 커널의 락 메커니즘이..

데이터 글러브 동작 테스트 영상

Air Haptic Glove 프로젝트 초기의 데이터 글러브 테스트 영상 입니다. 3D Rendering Part : 전영호3D Rendering Engine : microsoft XNA 3.1Implement Language : C#Physics Engine : JigLibX.Net3D Modeling : 3D studio max 2011 Hardware Part : 김재민, 권기우MCU : cortex m3acceleration sensor, magnetic sensor, flex sensor : can`t remember 첫번째 영상은 데이터글러브를 착용한 사용자의 손가락 구부림 정도를 추정하여 3D 손에 적용하는 테스트 영상이다. 프로젝트 초기의 영상이라 손가락 떨림 보정이 적용되어있지 않은 것을..

[구매후기] PRADA-2M0513-SAFFIANO METAL-NERO 남성용 반지갑

제품 요약 브랜드 : PRADA (프라다)모델넘버 : 2M0513재질 : SAFFIANO METAL (사피아노 가죽, 메탈 로고)컬러 : NERO가격 : \ 530,000 출시년도 : 2012년 개인적인 평가프라다의 검은색 사피아노 가죽으로 만들어진 남성용 반지갑이다.20대 초반~ 30대 후반 남성들이 사용하기에 잘 어울릴 것 같은 제품으로 여겨진다.물론 위 나이대에 속하지 않더라도, 사용하면 안되는 것은 아니다. 생각해보니 누구에게나 잘 어울리겠다 싶다. 그만큼 이 제품은 평범한 디자인, 평범한 색상을 가지고 있다.전혀 튀지 않는다. 카드 수납공간은 아래와같이 총 8칸이다.많지도, 적지도 않다. 과하지 않고 부족하지 않아서 사용하기 좋다. 지폐의 수납공간은 2칸이다. 이 역시, 반지갑이라면 대부분 2칸..

NULL ptr/ NULL ptr 2012.10.19

Pandaboard ES 구매

Pandaboard ES 구매 삼성소프트웨어 멤버십 임베디드 시그에서 공부하는데 사용하려고 구매했다. Pandaboard ES 보드이다. Ti Omap4460 를 프로세서로 사용하는 보드. 아직 국내판매처는 없는 것 같고, digikey 를 통해 구매하였다. 링크 : http://www.digikey.kr/ 주문 후, 1~2일 기다리면 digikey 측에서 email 을 통해 invoice 작성을 요청해온다. 작성하여 다시 email로 회신해주었더니, 상품 배송을 해주었다. UPS를 통해 배송해 주었고, 미국에서부터 배송기간은 4일 정도 걸렸다. (9월 17일 상품 준비~9월20일 대전에서 수령) 수령후 10일 이내에 입금 하면 되는데, 상품 가격은 19만7천원 가량이었다. 수령한 보드는 아래와 같은 임..

스마트폰 거치대 기구부 설계

본 프로젝트의 기구부를 만들 필요가 있었다. 회로를 보관할 박스 부분과, 스마트폰 거치대를 붙일 부분, Panning 모터와 Tilting 모터를 붙일 부분 등이 필요했다. 일단, 손으로 대충 구상하여 설계한 뒤, 가공이 쉬운 아크릴과 MDF, 이미 가공되어있던 알루미늄 가공물등을 이용해 프로토 타입을 만들어 보았다. 프로토타입 제작에 2일 걸렸다. 스마트폰 거치대 초기 프로토타입의 모습 이후 프로토타입이 어느정도 가용하다고 판단을 하고, 프로토타입의 설계도를 기준으로 솔리드웍스로 재설계를 했다. 솔리드웍스 재설계는 팀원중 종섭이가 전담하여 진행해 주었다. 솔리드웍스 완전 처음 사용한다고 하며 튜토리얼 보고 학습후 진행 했으나, 진행속도는 빠른 편이었다. 약 2일 가량 소요. 설계된 파일에서 2D 도면만..

식물 감성 모니터링 시스템 : Youtube 업로드 영상

이 프로젝트를 수행했던 김들이, 김예슬, 이지우, 최윤미, 팀장 최경호 모두 수고 많았습니다! 특히, 졸업작품 때문에 바쁜 와중에 영상 편집까지 하느라 날밤을 많이 지새웠을 지우에게 정말 고생했다고 말하고 싶습니다. (팀장 최경호의 말) 한글 버전 링크 : http://youtu.be/YNmFbD_uDm4 English version link : http://youtu.be/2GKDcoodOCs

선형 전압 레귤레이터(Linear Voltage Regulator)

선형 전압 레귤레이터(Linear Voltage Regulator) Embedded system을 설계하려면 가장 먼저 고려해야 할 점이 '전원회로를 어떻게 구성할 것인가' 이다. 특히 휴대용 Embedded system을 설계할 때는 가장 중요한 부분이라고 할 수 있겠다.요즘 스마트폰이나 테블릿 들이 여러 새로운 기능으로 변신을 하고 있지만, 여전히 가장 중요한 것 중 하나는 배터리(Battery)의 크기를 소형화 하는 것과 장치 자체가 사용하는 전력소모를 줄이는 것이다. 여기서는 간단히 Embedded system 설계에 필요한 Power 회로의 특징을 이해하는 정도만 알아보겠다. 첫 순서로 가장 많이 그리고 쉽게 사용하는 Linear Voltage Regulator 이다.Linear Voltage ..

5v를 3.3v로, 3.3v를 5v로! 전압 변환을 위한 부품 Logic Level Converter

5v 시스템에 3.3v 장치를 연결해 본 사람은 그것이 얼만다 번거로운 일인지 잘 알 것이다. 5v 인 ATmega128에 블루투스 FB155BC 칩을 붙인 다던가 하는 작업 말이다. BOB-08745 라는 Logic Level Converter 가 있다. 링크 : https://www.sparkfun.com/products/8745 이것은 5v 시그널을 3.3v 로 낮춰주기도 하고 3.3v 를 5v 로 높여주기도 한다고 한다.2.8v 과 1.8v 에 대해서도 동작한다고 한다. (오!) 아직 사용해 보지는 않았지만, 추후 이런 상황이 발생하면 이걸 사용해 볼까 한다. 가격도 1.95 달러로 저렴. (홍보하는 것 같지만, 나와는 상관없다. 유용한 정보인 것 같아서 기록 해 둔다.)이미지는 무단도용!출처는 ..

리눅스에서의 세마포어 (Semaphores in Linux)

리눅스에서의 세마포어 (Semaphores in Linux) 원본 출처 : http://linuxdevcenter.com/pub/a/linux/2007/05/24/semaphores-in-linux.html?page=1 일반적으로 상용 어플리케이션은 멀티스레드 어플리케이션이다. 상용 어플리케이션중 멀티스레드가 아닌 어플리케이션은 상상하기 힘들다.어플리케이션과 시스템의 성능(응답성)을 높이기 위해서 어플리케이션은 반드시 멀티스레드를 이용한 접근을 해야만 한다. 그러나, 인생의 대부분은 대가없이 얻어지는 것은 없듯이, 어플리케이션에서 멀티스레드의 특성을 활용해야 할 필요가 있다면, 다음과 같은 몇가지 이슈와 부딪히게 된다. 바로 교착상태(dead lock), 경쟁상태(race condition), 스레드의 ..

man page와 section number

man page와 section number리눅스를 사용하다보면 종종 'man page'라는것을 접하게 된다.리눅스를 처음 접한 사용자라면 몇몇 리눅스 커뮤니티에 무언가 질문을 해도, 'man page 찾아보세요. 거기에 다 나와있어요' 라는 답변을 받기도 한다. 대체 man page는 뭘까?man page는 'manual page'를 말한다. 리눅스의 여러 요소들(라이브러리 함수, 시스템콜, 명령어 등) 여러가지에 대해 설명하는 설명서(manual, 매뉴얼)라고 보면 될 것이다. 예를 들어, 당신이 'printf' 를 잘 모른다고 가정하자. 이에 대해 자세히 알아보는 방법은 몇가지 존재 할 것이다.구글링을 한다던가, 대학 학부생때 배웠던 C언어 책을 다시 꺼내본다던가. 옆에 앉아있는 동료 프로그래머에게..

FFmpeg 참고자료

* 스마트폰을 이용한 가정용 화상감시 장비 프로젝트 진행 과정에서 얻게된 지식을 공유하는 포스팅 입니다. 본 프로젝트에서는 FFmpeg와 x264 라이브러리를 안드로이드에 포팅하여 H.264 인코딩/디코딩을 사용하였다.결국 인코딩/디코딩 모두 성공 했지만 불완전 하다. 네트워크 전송시 Intra 코딩만 가능. Inter 코딩 시 수신 측에서 디코딩 불가 문제가 있다. 이 문제를 해결 중에 있다.(2012. 10월)아래 링크는 이 작업과정에서 참조했던 사이트의 링크들 이다. - ffmpeg 사용시 참고했던 사이트 링크ffmpeg는 레퍼런스 문서나 예제가 많지 않아서 상당히 애를 먹었던 기억이 있다.doxygen 문서가 있긴 하지만, 필요한 걸 찾기가 개인적으로 불편했었다. 그래서 각 섹션마다 링크를 걸어둔..

libavcodec을 사용한 H.264 인코딩/디코딩 - C code

* 스마트폰을 이용한 가정용 화상감시 장비 프로젝트 진행 과정에서 얻게된 지식을 공유하는 포스팅 입니다. 본 프로젝트의 전체적인 시스템 구성도는 아래와 같다. 여기에서 코덱이 필요한 이유는, 감시 영상을 네트워크를 통해 전달하기 때문이다.raw data를 그대로 전달 할 경우, 1프레임 영상의 크기가 1메가를 상회하게 된다. (지원 해상도는 QCIF, QVGA 만 허용함. 이는 각각 352 x 288과 320 x 240 이다.) 네트워크 대역폭 제한으로 인해 받아 보는 쪽에서 영상의 프레임이 낮을 것이다.또한 3G/4G 를 사용한다면 데이터 요금도 상당할 것이다. 이를 h.264 코덱으로 인코딩 하여 네트워크로 보내게 된다면, 이런 문제를 해결 가능 할 것이라 판단하여 코덱을 사용하였다. 물론 인코딩 하..

[Ubuntu 12.04] GRUB : 부트로더 환경설정

*본 설명은 Ubuntu 12.04 를 기준으로 합니다. 1. GRUBGRUB 혹은 GNU GRUB은 GNU 프로젝트의 부트로더이다. GRUB의 이전 이름은 GRand Unified Bootloader 이었으며, 이는 대통일 이론의 영문 이름을 패러디한 것 이라고 한다. 대부분 리눅스 배포판에서 부트로더로 사용한다. GRUB은 LILO와 달리 설정 변경 후에 재설치가 필요 없다. GRUB은 스테이지 단위로 부팅 과정이 구성되어 있으며, GRUB의 스테이지 1은 MBR에 존재한다. GRUB 설정 파일은 대개 스테이지 2에서 불리며 이들은 GRUB이 읽을 수 있는 파티션에 존재한다. 만약 설정 파일이 없으면 명령줄로 간다. 이들 설정 파일은 /boot/grub에 있으며 배포판마다 파일 이름이 다르다. 이러한..

[작업일지] 2012년 9월 21일 - 금

중계서버 - (전영호) - 영상 스트리밍 부분을 수정 - 기존의 16bit start 마크 / 고정폭raw영상데이터 /16bit end마크 를 빼고. - start와 end 를 문자열로 대체. start - 데이터size를나타내는int값(4byte) - 데이터 - end - 이렇게 4부분으로 분할 - camclient, viewclient, clientconnection 3개 스레드의 타이밍 조정. wait( ), notify( ) 활용 카메라앱 - (전영호) - 영상 인코딩 h264 , (gop 를 0으로 하여 intra 코딩만 하도록 함) - 전송되는 스레드의 타이밍 조정 뷰어 앱 - (전영호) - 영상 디코딩 h264 - ui layout 수정 - 패키지 재분류 - recvView 스레드를 없애고 ..

[국내여행] 제천 청풍랜드 번지점프

[국내여행] 제천 청풍랜드 번지점프2012년 09월 16일. 번지점프를 하다. 충청북도 제천에는 '청풍랜드'라는 곳이 있다.충주호와 산자락을 끼고 국도를 달려 호수의 동쪽으로 이동하면 만나게 되는 곳이다. 지도에서 보면 위치를 쉽게 알 수 있다! 나는 천안에서 출발하여, 충주를 지나 충주호 위쪽의 532번 국도를 타고 이동했다. 어느정도 경치가 좋아 드라이브겸 선택한 길이었다. 길이 상당히 굽이져서, 고성능의 와인딩하기에 좋은 차였다면 재미있는 드라이빙을 할 수 있을 것 같았다.하지만... 내차는 94년식 아벨라. 굴러가주는 것만으로도 감사했다. 532번 국도를 따라가다 보면 청풍리조트 간판과, 청풍랜드 번지점프까지 7km 남았다는 이정표가 보인다. 청풍랜드를 들어서면 주차장이 있는데, 번지점프를 하러 ..

NULL ptr/일기장 2012.09.16

[우분투] Ubuntu 12.04 에 JDK7 설치하기

Ubuntu 12.04 에 JDK7 설치하기 ubuntu 12.04 에 oracle-jdk7 을 설치하는 방법은 다음과 같다. 작업은 터미널에서 진행한다. $ sudo add-apt-repository ppa:webupd8team/java$ sudo apt-get update$ sudo apt-get install oracle-jdk7-installer 위의 명령을 순서대로 진행한다.위 명령의 의미는 아래와 같다. 1) jdk7 를 다운로드 받을 저장소 주소를 우분투의 apt 에 추가2) 추가된 주소의 저장소 목록을 업데이트3) jdk7 다운로드 및 설치 설치가 완료되면 다음 명령으로 잘 설치되었는지 확인할 수 있다.만약 설치가 정상적으로 되었다면 jdk및 java runtime의 버전이 출력될 것이다...

Kprobes 사용하기 [2] : 시스템콜에 probe 삽입하기

Kprobes 사용하기 [2] : 시스템콜에 probe 삽입하기 Kprobe 를 이용하려면 모듈로 작성하여야 함. System call 중 sys_open( ) 이 호출되는 것을 로그로 감지하는 probe를 삽입해 보겠다. 우선 커널에서 sys_open( )의 심볼 주소를 얻어야 한다.적어도 다음과 같은 3가지 방법이 있다. /proc/kallsyms 파일 항목을 사용한다.사용예 : cat /proc/kallsyms | grep sys_open nm 명령어를 커널에 적용한다.사용예 : nm vmlinux | grep sys_open (vmlinux 의 위치에서, 아닌경우 경로 지정할 것) 커널의 System.map을 사용한다.사용예 : grep sys_open System.map (System.map 의..

Kprobes 사용하기 [1] : Ubuntu 12.04

Kprobes 사용하기 [1] : Ubuntu 12.04 동적 프로브 (Dynamic Probe) 라는 것이 있다. 이는 빌드를 다시 하지 않은 상태에서 디버깅을 지원한다.즉, 특수한 컴포넌트 빌드 없이 분석 정보를 수집하는 기법을 제공한다. 그중 커널 동적 프로브 (Kprobe) 는 리눅스의 커널 내부로 삽입할 수 있는 프로브이다. 우분투에서 kprobes를 사용하고자 하는가?다음 과정을 따른다. 커널 버전이 2.6.9 이상이면 kprobes는 이미 커널의 일부일 것이다. 패치를 적용할 필요가 없다.단지 몇가지 옵션을 활성화 한 뒤 커널을 다시 빌드 하면 된다.(If your kernel is >= 2.6.9, then kprobes should already be apart of the kernel...

[ffmpeg] NDK 를 이용해 안드로이드 용 library 빌드시 문제 : codec_names.h 누락

ndk version : r8ffmpeg version : 0.10.4host os : windows 7terminal : cygwin 참고 자료 : [Android NDK FFmpeg 컴파일 강좌 (4/4)] http://www.androidpub.com/index.php?mid=android_dev_info&page=1&search_target=tag&search_keyword=FFmpeg&document_srl=1646540 문제 내용참고 자료를 통해 ffmpeg를 빌드하던 중 codec_names.h 를 찾지 못한다는 문제가 발생. D:/Eclipse_Workspace_Android/FFmpegBasic/jni/ffmpeg/libavcodec/utils.c:1568:36: error: libavc..

[보안] 암호화 알고리즘

DES (Data Encryption Standard) ; 데이터 암호 표준 DES는 개인키를 사용하여 데이터를 암호화하는 방법으로서 널리 사용되며, 미국 정부는 이 알고리즘을 해독하기 어렵다고 판정하고 다른 나라들에 수출하는 것을 금지하고 있다. DES에는 72,000,000,000,000,000 (72천조)개 이상의 암호 키가 사용되는 것이 가능하다. 주어진 각 메시지를 위한 키는, 이렇게 막대한 량의 키 중에서 무작위로 선택된다. 다른 개인키 암호화 방법과 마찬가지로, 송신자와 수신자 둘 모두는 동일한 개인키를 알고, 사용해야만 한다. DES는 각 64 비트 데이터 블록에, 56 비트 길이의 키를 적용한다. 이 과정은 여러 가지 모드에서 실행될 수 있으며, 16번의 연산이 수반된다. 비록 DES가 ..

식물 감성 모니터링 시스템

1. 개요 본 작품은 한국기술교육대학교(KoreaTech) 2012년 1학기 '유비쿼터스 컴퓨팅 및 실습' 과목의 텀 프로젝트로 진행한 것이다. 식물 감성 모니터링 시스템 (Plant Emotion Monitoring System with Facebook) 은 다음과 같은 컨셉으로 개발을 진행하였다. 글보다 소개영상을 먼저 보고 싶다면 이곳을 클릭 ”Facebook을 통해 원격지에서도 식물의 상태를 모니터링 및 관리하며 식물과 대화를 할 수 있는 시스템을 아두이노와 Java / Facebook API를 통해 구현한다.“ 진행 인원은 총 6명 이다. 팀장 : 최경호 기구부 설계 및 제작 : 김들이, 최윤미 Arduino 프로그래밍 : 최경호, 김예슬 중계서버 및 인공지능 : 이지우 Facebook API ..

1 2 3 4 5 6 7 8 9