달력

5

« 2024/5 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
2008. 6. 8. 18:32

Andoid Architecture 좋아하는 것2008. 6. 8. 18:32

내가 일하는 곳의 다른 팀에서 개발하고 있는 플랫폼은 마치 Google의 안드로이드 플랫폼과 유사하다. 하지만 서비스를 위한 플랫폼이라면 Application의 동작을 위해 더 많은 리소스(메모리, CPU 등)에 남겨줄수 있어야 하는데, 이는 마치 자신만을 위한 플랫폼이라 생각이 되어서 내심 걱정이 된다.
아닌게 아니라, 요즘 우리쪽에서 개발 하고 있는 플랫폼을 자신들의 Device 플랫폼에 넣겠다고 해서, 고민아닌 것적이 생겼다. 우리쪽에서 개발하는 것은 J2SE와 J2EE기반의 스프링 프레임워크와 OSGi를 이용한 플랫폼이다. 이를 그래도 채택하겠다니... ^^;

미국의 개발자들이 문제 없다고 이야기 했다고, 나를 안심시켜 주시는 일본인 상무님, 그러나 프레임워크만 돈다고 리소스 문제가 해결되나?

일단 안드로이드에 대해서 알아보기로 했다.

사용자 삽입 이미지

Feature

  • Application framework enabling reuse and replacement of components
  • Dalvik virtual machine optimized for mobile devices
  • Integrated browser based on the open source WebKit engine
  • Optimized graphics powered by a custom 2D graphics library; 3D graphics based on the OpenGL ES 1.0 specification (hardware acceleration optional)
  • SQLite for structured data storage
  • Media support for common audio, video, and still image formats (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF)
  • GSM Telephony (hardware dependent)
  • Bluetooth, EDGE, 3G, and WiFi (hardware dependent)
  • Camera, GPS, compass, and accelerometer (hardware dependent)
  • Rich development environment including a device emulator, tools for debugging, memory and performance profiling, and a plugin for the Eclipse IDE 

Libraries

Android includes a set of C/C++ libraries used by various components of the Android system. These capabilities are exposed to developers through the Android application framework. Some of the core libraries are listed below:

  • System C library - a BSD-derived implementation of the standard C system library (libc), tuned for embedded Linux-based devices
  • Media Libraries - based on PacketVideo's OpenCORE; the libraries support playback and recording of many popular audio and video formats, as well as static image files, including MPEG4, H.264, MP3, AAC, AMR, JPG, and PNG
  • Surface Manager - manages access to the display subsystem and seamlessly composites 2D and 3D graphic layers from multiple applications
  • LibWebCore - a modern web browser engine which powers both the Android browser and an embeddable web view
  • SGL - the underlying 2D graphics engine
  • 3D libraries - an implementation based on OpenGL ES 1.0 APIs; the libraries use either hardware 3D acceleration (where available) or the included, highly optimized 3D software rasterizer
  • FreeType - bitmap and vector font rendering
  • SQLite - a powerful and lightweight relational database engine available to all applications

SQLite를 Db로 사용하는 패키지와 SDK가 요즘 눈에 많이 띈다.

'좋아하는 것' 카테고리의 다른 글

WWDC 2008  (0) 2008.06.11
ReMIX08 컨퍼런스  (0) 2008.06.09
마이크로소프트 로보틱스 디벨로퍼 스튜디오  (0) 2008.04.12
Java 7의 자바 Module System  (0) 2008.04.12
Automatic Properties  (0) 2008.04.05
:
Posted by 행복상자
Eclipse에서 VI 에디터에서 처럼 키보드로 복사, 이동, 삭제를 하고 싶을 때가 있을 것이다.
물론 마우스를 이용하거나, 블럭을 복사하고 지울수도 있다. 하지만 아래의 단축기는 마우스의 사용하는 횟수를 줄이는 데 유용한 단축키 들이다. (익혀둔다면 말이다.)

  • Ctrl + Alt + Down
        현재 커서가 위치한 줄 또는 선택한 블록을 바로 아래에 복사한다.
  • Ctrl + Alt + Up 
        현재 선택한 줄(또는 커서) 바로 위로 복사 한다.
  • Alt + Down 
        현재 커서가 위치한 줄 또는 선택한 블록을 아래로 이동한다.
  • Alt + Up 
        현재 커서가 위치한 줄 또는 선택한 블록을 위로 이동한다.
  • Alt + D     
        현재 커서가 위치한 줄 또는 블록을 삭제한다.
  • Ctrl + Left    
        단어 단위로 커서를 왼쪽으로 이동시킨다.
  • Ctrl + Right:    
        단어 단위로 커서를 오른쪽으로 이동시키다.

:
Posted by 행복상자
한때 Eclipse의 단축키를 공부한 적이 있다.
단축키를 익히면, 키보드만으로 내가 원하는 것을 처리하고, 바로 코딩으로 돌아올수 있는 장점이 있고, 이를 통해서 eclipse가 주는 여러가지 Tip들을 익힐 수 있다. 그리고 마우스와 키보의 전환으로 잃어버리는 시간을 줄일 수 있고, 빠르게 원하는 기능들을 전환할 수 있다.

Eclipse의 단축키들을 보면서, 정말 많은 것들을 키보드만 사용해서 할 수 있구나라는 생각을 하게 된다. 하지만, 뭔지 모르지만 단축키들 사이에 이질감과 어색함을 느낀다. 이는 쉽게 기억하기 어렵다는 것이 큰 원인일 수도 있다. (정말 잘 외어지지 않는다. 아니 다른 키들이 유추되지 않는다. 그래도 나는 IQ가 세자리인데, 그래도 하나씩 외어지긴 해도, 쉽지 않다. ^^;;)

단기 기억들을 장기기억 구조로 바꾸기 위해서는 많은 노력들을 필요로 한다. 그리고, 하나의 실타래를 푸는 것처럼 연상을 할 수 있어야 하는데, 잘 안된다. (그래도 없는 것보다 100배 낫다.)

예전에 누군가가 나에게 해준 말이 있다. (토비인것 같은데...) 미국의 컨퍼런스에서 유명한 프로그래머가 해준 말인데, 사실 나는 이말에 동감하지 않지만 영향을 받았다. 정확하게 기억이 나지는 않지만,
"웹 개발자가 윈도우에서 개발하는 것은 진정한 웹 개발자가 아니다. 따라서 웹을 개발을 하려면 맥에서 해야 한다."라고 했다고 한다.  (맥은 유닉스이기 때문에 웹 개발은 윈도우가 아닌 시스템에서 해야 한다라는 의미이다.)
==> 사실 아직도 나는 동의 하지 않는다.

하지만, 나는 그 후로 맥북을 구매했고, OS X에다 eclipse를 설치했다. 내 마음에 여러가지 이유로 마음에 든다. (단지 맥북만, 열이 많이 난다는 점을 제외하구....)

그러나, 맥에서의 Eclipse의 단축키는 윈도우의 단축키와 너무나도 달랐다. 맥의 control, command, option키도 낯 설기도 하지만, 키 값의 배열이 달라서 사용하기가 쉽지 않다. 더군다나 Eclipse에 내장되어 있는 도움말은 위도우를 기준으로 설명이 되어 있다. (화면 캡쳐되어 있는 설명도 마찮가지이다.)

그래서 결국은 개발 환경은 윈도우즈에 설치하고 사용한다.  시행 착오보다는 현실을 수용하기로 한 것이다.

가장 많이 사용하고, 유용한 단축키는 Ctrl-1과 Ctrl-space 이다. 이는 정말 Eclipse의 마법의 키이다. 이들을 Hot-fix를 제공하고, 코드 도우미의 역할을 충분히 한다. 필요한 코드를 자동으로 채우거나, 라이브러리를 자동으로 Import할 때도 사용된다.
(정말 많이 사용하게 된다.)

사용자 삽입 이미지

사용자 삽입 이미지

                
추가적으로 많이 사용하는 키는, 단축키의 리스트를 볼수 있도록 해주는 ctrl+shift+L 키이다. 이를 실행하면, 화면에 단축키 리스틀 볼수 있는 팝업화면이 오른쪽 하단에 나타 날 것이다. 컨닝?을 위한 팁인데, 아리 아리 할때 도움이 된다.(항목이 많아서 찾는 시간이 조금 걸릴수 있지만 유용하다는 데는 이견이 없다.)

다시금 마음을 새롭게 해서, 하나씩 하나씩 익혀야 겠다.
열실히 개발하는 것도 중요하지만 스마트하게 생각하고 행동하는 개발자가 되어야 겠다.

:
Posted by 행복상자
며칠전에 SpringSouce에서 새로이 발표한 SpringSource Application Framework에 대해서 글을 소개한 적이 있다. 지난 30일 팀 블러그를 통해 발표 되었었다.
이는 Dynamic Module Kernel(DM-Kernel)을 기반으로 만들어진 현재는 베타버전의 SpringSource의 Application Platform이다.


잘 만든 Architecture도 결국은 어떻게 Deploy하고 관리 할 것이냐에 대한 고민을 하게 되는데, 이는 새로 만든 모듈들과 기존에 동작하는 모듈간에 조화로움이 관건이다.(버전 관리와 Dependency의 문제)

www.springframework.org 에 들어가 보니, Application Platform에 대한 글과 자료들이 새로 올라와 있어서 흩어 보았는데, 리눅스와 윈도우 환경에서 설치와 사용에 대한 Guide와 개발자 매뉴얼이 올라와 있어 새로운 Platform에 대한 이해에 큰 도움이 될거라 생각이 든다.
Web Site에 올라온 자료들의 목록과 링크는 다음과 같다.




각 번들에 필요한 기능들을 어떻게 가져오고 노출 시킬 것인가에 대해해, 요즘 고민 중인데, 분석을 하면서 아이디어를 얻어야 할 것 같다.
현재 내가 하고 있는 프로젝트는 공통 모듈들 개발 해야 하는데, 각 공통 모듈을 이용해서 개발해야 할 솔루션의 내부에도 외부로 노출 시켜야 할 서비스 부분이 분명 존재한다. 이를 어떻게 다른 쪽에 인지 시킬 것인지, 그리고 어떻게 가져다 써야 할 것인지에 대한 고민 중이다.



위와 같이 직접 불러다 사용하거나, 아니면 아래와 같이 공통의 라이브러리를 따로 만들고 각 번들에서 직접 호출해서 사용할 수도 있을 것이다.




:
Posted by 행복상자