제임스딘딘의
Tech & Life

고양이의 둥지 255

[칼럼] 삼성전자 홍준성 상무는 왜 구글로 갔을까?

2009년 12월 16일.삼성전자에서는 임원 승진발표가 있었다. 총 승진한 삼성전자 임원은 177명이었다. 그중엔 만 40세의 나이로 최연소 상무로 발탁된 사람이 있었다. 바로, 당시 수석연구원(부장 급)이었던 '홍준성'님이다. 홍준성 상무는 당시 1969년생. 승진 임원 대상 177명 중 가장 나이가 어렸다. 그는 무엇을 했길래 삼성전자라는 거대 기업안에서 수많은 어르신들을 제치고 최연소 임원이 될수 있었을까? 그는 무선사업부 - 모바일솔루션센터(이하 MSC)에서 Realtime Kernel기반의 모바일 운영체제 ‘바다(Bada)’를 개발한 주역이었다. 홍준성 상무는 '바다(Bada)'를 개발한 공로를 인정받아 2009년 자랑스런 삼성인상(기술상)을 받았다. 실제로 '바다(Bada)'를 운영체제로 사용..

NULL ptr/ NULL ptr 2017.04.30

[C#] C#.net에서의 시리얼통신 기초

C#.net에서의 시리얼통신 기초 C#은 시리얼 통신에 대한 모든것을 개발자가 구현할 필요 없이 매우 쉽고 간단하게 사용할 수 있는 객체를 지원한다. 그것은 System.IO.Port namespace에 포함되어있는 System.IO.Ports.SerialPort 인데, Visual Basic 6.0 에서 지원하던 Comm 컨트롤과 매우 유사해 사용은 간단했다. 참고로 이 글은 .net framework 3.5 기준으로 작성됐다. 객체 생성SerialPort 객체를 Form에 끌어넣어주면 된다.SerialPort 객체는 Device Components 에 있다. 아래 그림을 참고하자. 또한, 아래와 같이 namespace 추가가 되었는지 코드를 확인해보고, 안되어있다면 추가하도록 한다. using Sys..

[GPS 이야기] TTFF와 Almanac, Ephemeris 그리고, GPS의 start 방식, Cold start/Hot start/Warm Start ?

여기서는 GPS에 대해 이야기를 해볼까 합니다.GPS는 Global Positioning System의 약자인 것은 널리 알려진 내용인데요. 오늘은 GPS의 이야기를 시작하기에 앞서, 몇가지 용어를 알아볼까 해요. TTFFTTFF(Time To First Fix)란 GPS 수신기의 전원을 켰을 때 GPS 수신기가 현재 위치를 파악하는 데까지 소요되는 시간을 뜻하며, 상황에 따라 Factory Start, Cold Start, Warm Start, Hot Start로 구분됩니다.TTFF를 이해하기 위해서는 먼저 Almanac 데이터와 Ephemeris 데이터에 대하여 이해할 필요가 있습니다.지상의 여러 부 관제국에서 GPS 위성신호를 항시 관측하여 그 데이터를 주 관제국으로 보내고, 주 관제국에서는 그 데..

[안드로이드] SDK manager 통한 업데이트후 ADT 실행 시 오류

지금은 많은 안드로이드 어플리케이션 개발자들이 Eclipse + ADT 조합에서 Android Studio로 넘어갔을 것이라 예상한다.하지만, 나는 아직도 Eclipse + ADT 조합을 이용한다. 그런데 어느순간, SDK manager를 통해 SDK를 업데이트 하고 나서부터 아래와 같이 ADT를 상위버전으로 업데이트 하라는 에러가 발생한다. 그냥 무시하고 써도 되겠거니.. 하고 Close하고 살펴봤는데, 이게 웬걸.아무것도 할수가 없었다.관련 패키지 로딩이 제대로 되지 않는 것으로 판단된다. 그래서 지시한 대로 [Help > Check for Updates]를 클릭하면 업데이트할 항목이 없다거나, 엉뚱한 것들만 표시된다. SubVersion 혹은 SVN 같은 것들. 한참 헤매다 보니, 아래와 같은 방법..

Notepad++ Plugin : NPP Export Plugin

Notepad++ Plugin : NPP Export Pluginnotepad++의 plug-in중, code의 syntax highlight를 보이는 그대로 html형식으로 클립보드에 복사해주는 플러그인이 있다.관련 글은 아래 URL에서 볼 수 있다.관련 질문 : http://stackoverflow.com/questions/3475790/copy-notepad-text-with-formatting 이 플러그인의 코드는 git hub에 공개되어 있다.Github URL : https://github.com/chcg/NPP_ExportPlugin 그리고 dll로 빌드해서 다운로드 받을 수 있는 경로가 제공된다.https://ci.appveyor.com/project/chcg/npp-exportplugin..

무선 LAN, Wi-Fi 이야기

무선 랜 관련 용어 설명 우선 알아두어야 할 몇가지 용어들에 대해 간략히 설명하겠다. AP(Access Point)보통 "에이피-"라고 발음한다. AP(Access Point)는 그 자체로는 무선 중계 기지국의 의미를 가지고 있다. 즉 안테나와 무선 신호처리, 관리 기능, 유선 네트워크와 무선 네트워크를 연동하는 기능을 가지고 있다. 쉽게 생각을 하자면 유선 랜의 허브에 해당하며, AP를 통하여 기존 유선 랜과 연동이 가능하다. 최근에는 AP에 인터넷공유기능을 내장한 유무선 인터넷 공유기 혹은 무선 인터넷 공유기 등이 더욱 일반화 되어 가고 있다. Infrastructure(Access Point Network) 모드 / Ad-Hoc모드 (Peer-to-Peer Network)모든 무선 랜 카드는 AP가..

eth0 에 고정 IP 주소할당하기(static IP address)

문제요약: eth0 에 고정 IP주소(static IP address)를 할당하고자 한다. 지난번 포스팅(http://techlog.gurucat.net/277)을 하면서 판다보드에서 살린 두개의 network interface중에서 eth0 에 '192.168.1.1' 과 같이 고정 IP를 할당하고 싶다.이유는 PC와 판다보드를 LAN cable을 통해 direct연결 한 후, putty와 같은 툴을 사용해서 ssh shell로 연결 하여 개발을 진행하려고 하는 것이다.판다보드를 부팅한 후, eth0 에 어떻게 고정 IP를 할당할 수 있는가? 해결 할당하려는 IP는 192.168.1.1 이다. 원래는 bootloader에서 argument 읽은 후 kernel로 argument 전달하는 방식을 택하려 ..

[임베디드/판다보드] Networking Interface Initialize

문제현상판다보드에서 리눅스를 부팅한 후, ifconfig로 확인해보면 'lo' 라고 표시되는 loopback interface (127.0.0.1) 만 bring up되고, eth0(ethernet)과 wlan0(Wi-Fi interface)는 자동으로 bring up되지 않는다.'ifconfig up wlan0', 'ifconfig up eth0' 을 사용해서 커맨드라인에서 수동으로 bring up 을 해보면, 정상적으로 bring up 되는 것을 확인했다. 부팅시퀀스에서 bring up 되도록 하는 방법이 있을 텐데 비활성화 되어 있는 것 같다.어느 부분을 수정해야 하는지 내가 모르고 있는 것 같아서, 찾아보았다. 해결 우선 판다보드의 네트워크 인터페이스를 확인해보았다. root@arm:~# ls -..

Kernel command line 보는 방법

Linux kernel command line, boot argument 동작중인 kernel의 shell상에서 command line parameter를 보는 방법은 아래와 같다.이를 'boot arguments' 라고도 한다. $ cat /proc/cmdline 여기에는 linux kernel이 부팅할 때 필요한 여러가지 정보들을 kernel에게 넘겨주는 형태로 사용한다.예를들면 root device나 network configuration등에 대한 정보들 말이다. boot loader에서 linux kernel로 변수정보 넘기기boot loader에서 linux kernel로 정보를 넘길때도 사용할 수 있다.U-boot 에서는 'bootargs' 라는 변수의 값을 자동으로 linux kernel 부..

[네트워크/프로토콜] BOOTP 에 대해서. BOOTP란? BOOTP 특성?

BOOTP란? (bootstrap protocol) Bootp는 TCP/IP상에서 자동 부팅을 위한 최초의 표준프로토콜이다.디스크 장치가 없는 클라이언트를 구동시키기 위한 목적으로 개발되었다.여기서, 디스크 장치가 없는 클라이언트라고 하면, 과거 Unix머신과 연결해서 사용하던 'X터미널' 과 같은 장비쯤 되시겠다.이 터미널 장비는 디스크 장치가 없으므로, 장치의 설정정보를 저장할 곳이 마땅치 않게된다. 그러니깐, 디스크 장치를 가지고 있는 Main Unix머신이 이 정보를 가지고 있다가, X터미널이 실행되고 Unix머신에게 연결하려고 신호를 보내면, Unix머신은 Bootp 서버를 이용해서 X터미널에게 이런 정보들을 알려주게 된다.그러면 X터미널은 BOOTP클라이언트 쯤이 된다.정확하게 말하면 클라이언..

PandaBoard ES : 부팅용 SD card 준비

PandaBoard ES : 보드 부팅을 위한 SD card 준비 TI 의 ARM Cortex A9 기반의 임베디드 보드인 PandaBoard ES에는 내장된 별도의 저장공간이 없다. 대신에 sd card슬롯을 제공하고, sd카드의 boot partition을 통해 부팅을 하게된다. 아무래도 trial(시험용) 보드 성격이 강해서 그런 것이리라.. 우선 판다보드 부팅에 사용할 sd카드를 준비하는 작업이 필요하다.다음 순서로 진행할 것이다. 1. SD카드 파티션 분할 및 각 파티션 포맷2. U-Boot 소스코드 다운로드 및 빌드3. Linux Kernel 소스코드 다운로드 및 빌드4. Ubuntu의 Root File System 확보 및 SD카드에 복사5. Wi-Fi driver firmware 확보 및 ..

풀업 저항, 풀다운 저항 (Pull-up, Pull-down)

풀업 저항, 풀다운 저항 (Pull-up, Pull-down) - 입력단 회로MCU나 임베디드 시스템을 구성할 때, 입력부분을 설계해야 하는 경우가 있다. 여기서 입력 부분이라 하면, 버튼이나 스위치 같은 물리적인 입력이 발생하는 부분을 말한다. 이때, 풀업 (Pull-up) 저항을 달거나 풀다운(Pull-down) 저항을 달게 된다. 왜 그런지 이유를 알아보자. 이 저항이 무슨 목적을 가지고 있는지를 이해하면 된다. 그리고 더 나아가, 이 저항을 얼마짜리를 달아야 하는지, 저항값 계산 방법을 알아보자. 플로팅 상태풀업 / 풀다운이 왜 필요한지를 이해하려면 먼저 플로팅(Floating) 상태라는 것을 알면 쉽다. 플로팅은 '떠있다, 부유하는, 유동적인' 등의 뜻이다. 디지털회로에서 플로팅 상태 라고하면,..

라즈베리파이 보안카메라 (Raspberry Pi Security Camera)

라즈베리파이 보안카메라 (Raspberry Pi Security Camera) 소개Welcome to the official tutorial for building your very own Particle-connected security camera with Raspberry Pi! This project uses the Raspberry Pi integration with the Particle Cloud to control a PIR sensor, Neopixel LED ring, and Raspberry Pi camera to watch for intruders, snap a photo, and upload it to the web via Dropbox.All firmware and softwar..

[안드로이드] 최신 Android 7.0 "누가" 출시 : 안드로이드 앱 개발자가 알아둬야 할 것들

최신 Android 7.0 "누가" 출시 : 안드로이드 앱 개발자가 알아둬야 할 것들 안드로이드 7.0, "누가" (Android Nougat) 버전 출시되면서 Google은 이 새로운 운영 체제에 몇 가지 필수 기능을 추가했다. 사실 안드로이드 7.0 누가(Android nougat)에서는 안드로이드 6.0 과 비교했을때, UI, UX, 그리고 Look and Feel을 크게 변경하지는 않았다.그러나 Google은 몇 가지 새로운 필수 기능을 추가했고, 운영 체제를 좀더 세련되게 다듬었다고 볼 수 있다. Nougat에 대한 Google의 설명은 다음과 같다. "Android Nougat은 보안적인 측면에서 사용자를 더욱 안전하게 유지하는 데 중요한 요소를 추가했다. chromebook의 업데이트 적용에..

삼성 GearS2를 위한 타이젠 앱 개발하기 : [2] Hello world 앱 띄우기 (맥 OS X)

SDK설치를 했으니, 실제로 앱을 기어S2에 올려봐야죠. 그런데요, 아이폰 앱개발이나 안드로이드폰 앱개발을 해보셨던 분이라면 의아한 부분이 있을거에요. 기어S2랑 컴퓨터랑 어떻게 연결해서 앱을 올리지? 기어S2는 컴퓨터와 USB케이블을 이용해서 직접 연결할 수 는 없는 구조입니다.물론 기어S2 시계줄을 빼고 옆의 작은 커버를 벗기면 5핀 단자가 노출되긴 하는데요,연결할 거치대가 별도로 제공되거나 판매되고 있지 않죠. Tizen개발자 사이트와 삼성에서 공식적으로 언급하는 방법은 Wi-Fi를 사용하는 방법입니다.기어S2와 컴퓨터를 동일한 네트워크에 연결한 뒤, 이 둘을 'sdb (smart debugger bridge)' 라는 툴을 이용해서 TCP/IP layer로 연결합니다. 선이 없어서 깔끔하지만 반응속..

[Mac OS] 맥의 OS X에서 readelf와 같은 binary utility 사용하기

GNU 바이너리 유틸리티 - GNU Binutils 맥의 OS X건, 리눅스 건, 개발을 하다 보면 디버깅 할 일이 생기게 마련이다.디버깅시 유용한 도구중 하나가 GNU 바이너리 유틸리티(GNU Binutils)이다.GNU 바이너리 유틸리티는 여러 종류의 오브젝트 파일 형식들을 조작하기 위한 프로그래밍 도구 모음인데, 이들은 일반적으로 GCC, make, GDB와 함께 사용하게 된다. as - 어셈블러ld - 링커addr2line - 주소를 파일과 줄로 바꾼다.ar - 아카이브(압축) 파일을 만들고, 수정하고, 해제한다.c++filt - 맹글링된 C++ 심볼들을 원래대로 되돌린다.nm - 오브젝트 파일의 심볼을 출력한다.objcopy - 오브젝트 파일을 복사한다.objdump - 오브젝트 파일에 대한 정..

삼성 GearS2를 위한 타이젠 앱 개발하기 : [1] SDK설치 (맥 OS X)

삼성에서 출시한 스마트워치 GearS2 에서 사용할 앱을 개발하는 과정을 풀어내 봅니다. 1. SDK 설치 특정 플랫폼에서 간단하게 앱을 개발해 보려면 해당 플랫폼이 제공하는 SDK를 사용하는게 통상적인 쉬운 방법이죠.2016년 현재 GearS2는 Tizen 2.3.1 Wearable 플랫폼 기반으로 동작합니다. SDK를 다운로드 받고, 설치하려면 타이젠 개발자 사이트 ( http://developer.tizen.org ) 를 방문합니다. 바로 가는 링크는 : https://developer.tizen.org/ko/development/tools/download?langredirect=1 Tizen개발자 사이트의 다운로드 페이지에 가보니깐 Tizen 2.4 Rev4 SDK가 2016/3/4 부터 배포시작..

구글 엔지니어가 여가시간에 만든 스마트 거울

구글 엔지니어가 여가시간에 만든 스마트 거울 2017년 CES에서 거대한 터치 스크린을 가진 삼성의 새로운 냉장고와 같은 사물의 인터넷에 대한 다소 별난 아이디어를 봤다.그리고 사람은 스마트 오브젝트의 새시대인 지금, 다양한 것들을 원한다. 그래서 Google의 소프트웨어 엔지니어 인 Max Braun이 만든 이, 우아한 스마트 거울이 정말 흥분되는 이유이기도 하다.이걸 보면, 아마 당신도 바로 지금 집에서 실제로 사용해보길 원할것 같다. Max Braun은 자신의 프로젝트 결과를 매체에 올렸고, 사진은 상당히 비현실적으로 보였다..날씨, 시간 및 주요 헤드 라인을 한 눈에 볼 수있는 것, 그리고 동일한 정보를 Android 휴대 전화에서 공유 할 수 있다. 그러나 이런 정보들은 욕실 거울에서 보여지는게..

NULL ptr/ NULL ptr 2016.02.03

Torrent의 원리

1. BitTorrent ? - P2P 방식의 파일 공유 프로토콜로서, 파일을 여러개의 조각으로 나누어 서로 공유함- 브램 코헨이라는 사람이 창안하여, BitTorrent 회사를 창립하고 이를 통해 유지보수하고 오픈소스로 배포함- 전세계 네트워크 사용량을 보면, 동영상 스트리밍이 1위이고 2위가 P2P 이며, P2P 트래픽의 90%를 BitTorrent가 차지함.- 클라이언트의 종류로는 BitTorrent, μTorrent 가 있음. 2.BitTorrent 의 동작 개요도와 용어설명 1) Piece- 공유 파일의 한조각 의미함- 토렌트는 하나 파일을 여러개의 조각으로 나누고, 조각단위로 공유함- 조각의 크기는 토렌트 생성시 설정할 수 있음 2) Seeder : 공유 파일의 모든 조각을 가지고 있는 클라이..

[Mac OS] Eclipse로 맥에서 C/C++ 개발환경 만들기

맥에 Eclipse로 C/C++ 개발환경 만들기 이 부분은 간단하다.맥에서 java가 실행될 수 있도록 JDK, 혹은 JRE를 맥에 설치한다.그 후 '이클립스 CDT'를 설치 한다.기본적으로 맥에서는 gcc를 제공하지 않지만맥의 XCode에서 llvm을 gcc라는 이름으로 연결해서(심볼릭 링크인가..?) 사용하는것 같다.그래서 이클립스 CDT 에서도 컴파일 및 실행은 된다. 그러나 디버깅이 안된다.즉, break point 찍고, line by line으로 실행하는 등등의 기능이 안된다는 얘기.이유는 이클립스CDT는 디버거로써 'gdb' 라는 것을 사용하는데, 이 gdb가 mac에는 없기 때문인 것 같다. 맥에 GDB설치하기찾아보니 맥에 gdb를 설치하는 방법이 있다.아래방법은, OSX mavericks..

[Panda Board-es] Trouble shooting: booting에 문제가 있음.

3년전 구입해 가지고 있던 Pandaboard-es에 안드로이드를 올려서 가지고 놀아보고자, 다시 꺼내었다.SD카드 파티셔닝/포맷 후에 u-boot와 MLO를 넣고 booting 시도했으나 실패.serial연결해도 booting log조차 출력되지 않는 상황이었다. 오랫동안 사용하지 않은 보드의 H/W 적인 문제가 아닌가 고민하다가 pandaboard.org 에서 검색해보니 아래와 같이 H/W의 문제인지 아닌지를 판단할 수 있도록 pre-built 된 u-boot이미지, MLO, 그리고 kernel을 제공하고 있었다. 또한 제공된 이미지 안에 H/W test를 위한 쉘스크립트가 '/bin' 아래에 'panda-test.sh' 라는 이름으로 함께 제공되고 있어서 실행만 하면 다음 항목들에 대해 간단히 정상..

TiddlyWiki : DB와 설치가 필요없는 간단한 one file 위키

위키 'Wiki' 는 특정 내용을 '정보'로서 정리하고, 나중에 다시 찾아보고, 다른사람과 공유하기에 좋은 수단 인 것 같다.나도 개인적으로 위키를 활용해 정보들을 정리를 하고 싶어서 어떤 위키시스템을 사용할 것인지를 찾아봤었다. 그러나 설치가 복잡하거나 Database 가 필요하거나, 서버가 필요하다 등등 진입장벽으로 작용할 만한 내용들이 다수 존재 한다고 생각했었다. 그러나 내가 진입장벽이라고 여겼던 것들이 전혀 없는 아래와 같은 것이 존재했다. http://tiddlywiki.com/

The Expert (Short Comedy Sketch) : 개발자, 프로젝트 매니저 그리고 UX담당자와 클라이언트

이것은 IT개발 현장에서 흔히 발생하는 일을 한편의 짧은 코미디로 표현한 영상입니다.저는 IT개발현장에서 일하는 한명의 불쌍한 개발자입니다. 이 영상의 내용에 매우 격하게 공감을 하게 되네요.이 영상을 보시면 아시겠지만, 영상에서 말하는 'The Expert' 어떤 프로젝트를 맡아서 구현하는 '실무자' 를 말합니다. 부제는 ' 개발자 암걸리는 이야기' 쯤이 될 것 같네요. 각설하고, 영상을 한번 보시죠!Setting 에서 '한국어' 선택하시고 cc버튼으로 자막 켜기 하시면 한글 자막을 볼 수 있으니 내용 파악은 간단할 거에요! 출처 : http://www.youtube.com/watch?v=BKorP55Aqvg#action=share

ASLR : Address space layout randomization

Address space layout randomiztion(ASLR)은 buffer overflow 공격으로부터 보호하기 위한 컴퓨터 보안 기술이다.이 내용의 실제 구현 까지는 상당히 많은 dependency를 가지는데, Processor architecture, OS(kernel implementation), compiler, debugger, linker(loader) 등등이 상호 조화를 이루어 구현이 된다. 참고 : http://stackoverflow.com/questions/2463150/fpie-position-independent-executable-option-gcc-ld참고 : http://en.wikipedia.org/wiki/Address_space_layout_randomizati..

[mysql] Data Type

MySQL Column Type 컬럼(Column)은 데이타 베이스를 이루는 가장 작은 단위이다. 컬럼들이 모여서 레코드(Record)를 이루고, 레코들들이 모여서 테이블(Table)이 된다. 테이블이 모여서 데이타 베이스를 이루게 된다. 즉, 데이타 베이스를 데이타들의 계층적 구조라고 말한다. TINYINT부호있는 수는 -128에서 127까지, 부호 없는 수는 0에서 255까지 표현할 수 있다. 1 바이트 ※디폴트는 부호있는거(SIGNED), UNSIGNED를 붙이면 부호없는것~ SMALLINT부호있는 수는 -32768에서 32767까지, 부호 없는 수는 0에서 65535까지 표현할 수 있다. 2 바이트 ※디폴트는 부호있는거(SIGNED), UNSIGNED를 붙이면 부호없는것~ MEDIUMINT부호있는..

[모니터/문제해결] 삼성 싱크마스터 TA350 - 흐릿하고 초점이 맞지 않는 출력 교정하기

English Version Click me!모델 소개 : SyncMaster TA350내가 사회생활을 갓 시작하면서 거주했던 원룸에서 사용했던 TV모니터 중 특이한 녀석이 있었다. 모델은 삼성 SyncMaster TA350. 원룸 전세로 들어갔더니 TV랍시고 제공되던 모니터였다. HDMI 입력포트가 2개이며 d-sub 입력단자가 1개, 컴포넌트 입력단자가 1개인 모델. 컴포넌트 입력단자 덕분에 인터넷TV의 셋탑박스와 연결해서 사용하기 용이하여(응? HDMI가 더 용이해 임마...), 과거 2011년~2014년 즈음 지어진 원룸건물에 건물주들이 대량으로 공급하는 모델이었던 걸로 추정된다. 제품은 아래와 같은 모습이다. PC연결시 화질 문제 그런데, 문제가 있다. 이상하게도 이 모니터를 PC와 연결하면 화..

NULL ptr/ NULL ptr 2013.08.28

[우분투] 컴퓨터이름 변경하기

[우분투] 컴퓨터이름 변경하기 우분투 리눅스가 설치된 컴퓨터의 이름 바꾸는 방법이다.한글로 컴퓨터이름을 지정했다가 여러가지 이유로 인해, 영어 이름으로 변경해야 할 경우가 생기곤 한다. 아래 방법을 따르면 쉽게 변경할 수 있다. Ex) 유저네임@유저네임-desktop:~& -> 유저네임@desktop:~& 수정해야 할 곳은 2곳이다. /etc/hostname 에서 이름을 변경한다. 그리고 다음 명령 수행한다. hostname -F /etc/hostname /etc/hosts 에서 "ip 컴퓨터이름" 에서 컴퓨터이름 부분을 변경한다. 이후 아래 명령을 수행한다. sudo /etc/init.d/hostname.sh stop sudo /etc/init.d/hostname.sh start sudo shutdon..

[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..

1 2 3 4 5 6 7 ··· 9