2010년 6월 29일 화요일

엔터프라이즈아키텍쳐

1. 애플리케이션,솔루션,엔터프라이즈의 관계

 

  엔터프라이즈의 기념

  기업,회사의 의미라기 보다는 실제적으로 데이터를 공유할 필요가 있는 영역(다수의 회사일수도 있음)을 지칭하는 개념

 

  애플리케이션과 서비스 차이

  애플리케이션은 개발자를 중심으로 정의된 용어이고, 서비스는 고객 중심의 용어로 이런 차이로 인해서 EAI가 나온뒤 ESB의 개념이 추가되었다.

 

  각종 용어

 

  ERP(Enterprise Resource Planning)

  - 실제적으로 데이터를공유할 필요가 있는 영역의 다양한 Resource(사람,기계,절차 등)에 대한 계획을수행하는 프로그램

 

  EAI(Enterprise Application Integration)

  - 실제적으로 데이터를 공유할 필요가 있는 영역에 있는 애플리케이션의 통합과 관련된 프로그램

 

  ESB(Enterprise Service Bus)

  - 실제적으로 데이터를 공유할 필요가 있는 영역에 있는 다양한 서비스(사용자가 원하는 기능을 제공하기 위한 기본 단위)를 연결하는 프로그램

 

 

  애플리케이션과 솔루션의 관계

  솔루션은 엔터프라이즈의 구성단위, 개발자 관점에서 단독적으로 수행 가능한 기능 단위(보안솔루션,인증솔루션 등)

  애플리케이션은 개발자 관점에서 개발된 단위 작업 수행 프로그램(신규인증유저 등록 등)

 

 

       -----------E1-----------                엔터프라이즈

     --S1--       --S2--     --S3--              솔루션

    A1 A2 A3    A4 A5 A6    A7 A8 A9          애플리케이션

 

 

 

2. 시스템, 소프트웨어 아키텍처의 개념

 

  시스템

   - 유일한 기능을 수행하기 위하여 연관된 다양한 구성 요소의 모임 (회사, 컴퓨터, 모니터 등)

 

  아키텍처

  - 구성요소와 요소간의 연관관계를 정의한 것

  - 컴퓨터 아키텍처는 컴퓨터라는 시스템을 구성하는 요소와 요소 간의 관계를 Top-Down/Bottom-Up의 형태로 서술한 것이다.

 

 

 

3. 소프트웨어 아키텍처의 개념

  개념

  소프트웨어의 구성요소와 기능, 그리고 그들의 상호 관계에 대한 것을 정리

 

  실제적으로 수행하는 일

  - 시스템을 기능별로 분할

  - 분할된 기능을 체계화 하기 위하여 공통 기능 추출 및 관련 작업 수행

  - 준비된 자료를 체계적으로 정리하여 문서화

 

  어떤 필요성?

  개발자와 업무수행자(일반인) 사이의 의사 소통을 위한 방법으로 만들어짐

 

  일반인 - 업무에 대한 이해만 가진 상태로 자신이 사용하는 시스템은 전혀 모르는 상태

  전문가 - 업무에 대한 이해가 낮으며 일반인이 시스템을 모른다는 사실을 간과함

  위의 일바인과 전문가의 의사 소통을 위한 도구가 소프트웨어 아키텍처가 개발되었다

 

  의사 소통을 위해 필요한 다양한 정보를 표현하기위해 다양한 형태로 제작된 자료가 필요하다.

  카네기멜론대학은 다음과 같이 세가지 관점에서 제작하도록 제시했다.

 

  개념적 관점 : 소프트웨어를 구성하는 구성 요소(component)를 식별하고, 각 구성 요소의 역활을 명시하는 단계

  논리적 관점 : 구성 요소 간의 상호 연계성 및 연결 방법을 정의하고, 주고 받는 정보의 상세 내용을 정의하는 단계

  실행적 관점 : 실행 환경에서 구성 요소 인스턴스의 상호 자료 교환, 시스템 자원의 사용, 자원 구송 등에 대한 상세 사항을 정의하는 단계

 

  구성요소(component)란? 개발자 관점에서 시스템을 구성하는데 필요한 기능단위

 

 

  각 단계별 세분화된 자료 가이드라인

 

  개념적 관점

    - 행동적 관점 : Collaboration Trace

    - 구조적 관점 : Architecture Design, Informal Component Spec

 

  논리적 관점

    - 행동적 관점 : Collaboration Diagram

    - 구조적 관점 : Architecture Design with I/F, Interface Spec

 

   실행적 관점

     - 행동적 관점 : Collaboration Diagram Showing process

     - 구조적 관점 : Architecture Diagram Showing Action Component

 

   위의 8개의자료는 일반인과 전문가 사이의 의사 소통을 위한 것으로 필요시 더 늘어날 수도 있고 줄여서 사용할 수도 있다. 중요한 것은 의사 소통이지 자료가 아니란 것을 잊어서는 안된다

 

 

 

4. 엔터프라이즈 아키텍처의 개념

 

  정보시스템 아키텍쳐란?

 

  소프트웨어 아키넥처의 개념을 정립한 후 이것을 전체 전산 환경으로 확장하여 적용하면 "정보 시스템 아키텍쳐"라는 개념이 수립된다.

 

  정의하면?

  전체적인 정보 시스템을 구성하는 구성 요소나 빌딩 블록을 정의한 것.

  그리고 Product(Solution과 동일 수준의 용어, 개발자 시각에서 본 것) 구성을 위한 계획과 이에 따르는 개발 계획을 전체 시스템의 관점에서 수립하는 것

 

  엔터프라이즈 아키텍처란?

  이러한 정보 시스템 아키텍처를 전체조직(enterprise)관점에서 적용한 것이 엔터프라이즈 아키텍처이다.

 

  정의하면?

  "애플리케이션/소프트웨어 아키텍처",  "기술적 아키텍처",  "정보/데이터 아키텍처",  "조직/비즈니스 아키텍처 " 를 포괄하는 개념으로 하부의 모든 아키턱처가 가져야하는 기본을 정의한다. 이를 통하여 시스템의 일치성,통합성,연결성,보안,유연성,재사용성을 높여서 비용 절감과 경쟁력을 향상시킨다.

 

 잘만들어진 엔터프라이즈 아키턱처는 변화의 과정을 신속하게 수행할 수 있으며, 파급되는 다른 문제를 발생시키지 않는다.

 

  관련된 많은 도구들

  Zachman이 발표한 Enterprise Architecture A Framework

 

  엔터프라이즈 아키턱처를 구현할 때 고려사항을 X축과 Y축에 놓고 각각에 항목에서 제작되어야 하는 것을 종합적으로 정리한 것이다.

 

2010년 3월 8일 월요일

그래픽(GPU) 성능 비교

그래픽 카드 성능 비교를 위한 사이트 및 리스트

 

http://www.videocardbenchmark.net/

 

사이트에 가면 High End, Middle End 등의 카테고리별로 볼수 있고

 

http://www.videocardbenchmark.net/gpu_list.php

 

위와 같이 전체 목록 형태로 볼 수 있다. 위의 전체 목록을 엑셀로 만들어 놓은게 아래자료임.

 

 

관련 게시물 : CPU 성능 비교

 

 

 

 

2010년 1월 21일 목요일

Android 에서 Handler와 Message 란?

Android(안드로이드) 개발시 사용되는 Handler(핸들러)와 통신에 사용되는 Message(메시지)에 대해서 알아보자.

 

핸들러란?

 

안드로이드의 시스템은 사용자가 작성한 UI에서 빠른 응답을 요구하고 있다.

만약 5초 이상의 응당이 없을 경우 최악의 경우 작성된 프로그램이 강제로 종료가 되는 경우도 발생할 수 있다.

이런 상황을 방지하기 위해서 시간이 오래걸리는 작업이 필요한 경우 두가지의 방법으로 해결을 할 수 있다.

첫번째는 시간이 오래걸리는 작업은 서비스로 만들어서 처리하는 방법

두번째는 새로운 쓰레드로 처리를 하는 방법

 

두번째 방법으로 쓰레드를 생성해서 데이터 처리등의 시간이 오래걸리는 작업을 지원하기 위한 클래스가 존재하는데 그것이 핸들러(Handdler)이다.

 

간략하게 요약을 해보면

  • 백그라운드 쓰레드 생성을 위한 가장 유연한 방법이다.
  • 인스턴스 생성시 자동으로 안드로이드가 실행 관리한다.
  • 메시지를 전달받게 되면 호출 되는 handlerMessage()에 실제 처리내용을 구현한다.
  • post(), postDelayed()를 통해서 인자로 실행하고 자하는 Runnable객체를 전달할 수 있다.
  • View단에도 Runnable객처를 인자로 전달가능하고 이럴경우 코드가 심플해지는 경우도 있을수 있지만 Handler를 추천한다.

 

 

메시지(Message)란?

 

UI등에서 실제로 처리를 담당하는 쓰레드로 데이터를 전송하거나 작업을 요청하기 위해서 전달하는 객체이다.

 

  • 핸들러로 전달되는 객체이다.
  • 전달된 메시지는 메시지 Queue를 통해서 핸들러가 가져다 사용한다.
  • 메시지를 전달하기 위해선 핸들러의 obtainMessage()호출해서 메시지 풀의 메시지를 획득해서 전달해야한다.
  • 메시지를 전달하기 위해서는 sendMessage() 등을 사용한다.

 

메시지 전달 방식의 종류

  • sendMessage() - 큐의 마지막에 메시지를 삽입한다.
  • sendMessageAtFrontQueue() - 큐의 맨앞에 메시지를 삽입한다.(우선처리)
  • sendMessageAtTime() - 장비기동시간을 기준으로 삽입한다.(SystemClock.uptimeMillis()참고)
  • sendMessageDelayed() - 특정시간만큼 지연 삽입한다.

 

 

2010년 1월 20일 수요일

TOW(Track On Windows) 사용하기 - 설치

개요

 

프로젝트를 관리하기 위한 툴들은 많이 존재한다.

그중 무료소프트웨어로 Track가 있는데 이 프로그램의 설치가 만만치 않다.

하지만! 국내 개발자가 원샷으로 설치가 가능하게 패키징해서 배포하고 있다.

바로 TOW(Trac On Windows)라는 패키지로 요기(http://trac.tistory.com/)에서 확인할 수 있다.

 

공식 블로그 : http://trac.tistory.com/

 

이제 설치해보도록 하자

 

설치하기

 

1. 다운로드

   TOW 0.2.2.a - http://sourceforge.net/project/showfiles.php?group_id=192688&package_id=254120&release_id=579291

   위의 링크에서 Standard-ko버전을 다운받도록 하자

 

2. 설치

  기본적으로 TOW는 C드라이브에서 작동되도록 설정되어 있으나

  필자는 C드라이브에 개발 프로그램 설치를 하지 않으므로 D드라이브에 저장한다.

 

  a. 다운받은 파일을 D드라이브의 압축을 풀어준다.(D:\TOW)

 

  b. TOW폴더에서 set-tow.bat파일을 열어서 아래와 같이 수정한다.

  

set TOW_HOME=D:\TOW

 


  c. 아파치의 설정 변경을 한다.

  

D:\TOW\Apache\conf\httpd.conf 파일을 연다.
"C:/TOW" 를 "D:/TOW" 로 치환한다. (16개 항목이 치환된다.)
저장한다.

 

 

  d. 아파치의 포트를 변경한다.(Option)

      TOW는 기본적으로 80포트를 사용하나 필자의 경우 8080포트는 이미 사용중이므로 8000포트로 변경한다.

      (포트8080을 쓰려는 유저는 이번 항목은 무시한다.)

 

D:\TOW\Apache\conf\httpd.conf 파일을 연다.
"Listen 8080"  부분을 "Listen 8000" 으로 변경한다. (53Line)
"ServerName tow.localhost:8080"  부분을 "ServerName tow.localhost:8000" 으로 변경한다.(142Line)
저장한다.

 

  e. 기본 템플릿 파일을 변경한다.

 

D:\TOW\Setup\TracRepo\Projects\HelloTOW\conf\ 폴더의 *.tpl 파일을 연다.(4개파일)

"C:\TOW" 를 "D:\TOW" 로 치환한다. (2개파일 2개 항목)
"C:\\TOW" 를 "D:\\TOW" 로 치환한다.(4개파일 8개 항목)

 

 

  f. Repository 경로를 변경한다.

 

D:\TOW\create-svn-repo.bat 파일을 연다.
"C:/TOW" 를 "D:/TOW"로 치환한다.(1개항목)
저장한다.

 

 

  g. Python 경로를 변경한다.

      이부분은 무시하도록 하자. Python의 경로 변경이 정상적으로 되지 않는다.

     추후 변경 방법이 생기면 보충하도록 하겠다.

      경로 변경은 레지스트리를 손대야 하므로 아래 2개의 레지스트리 파일을 만들어서 수정한다.

      (레지스트리 파일은 첨부파일 참고)

      PortablePython.reg

Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Python]
[HKEY_CURRENT_USER\Software\Python\PythonCore]
[HKEY_CURRENT_USER\Software\Python\PythonCore\2.5]
[HKEY_CURRENT_USER\Software\Python\PythonCore\2.5\InstallPath]
@="D:\\TOW\\Python"
[HKEY_CURRENT_USER\Software\Python\PythonCore\2.5\InstallPath\InstallGroup]
@="Python 2.5"
[HKEY_CURRENT_USER\Software\Python\PythonCore\2.5\Modules]
[HKEY_CURRENT_USER\Software\Python\PythonCore\2.5\PythonPath]
@="D:\\TOW\\Python\\Lib;D:\\TOW\\Python\\DLLs;D:\\TOW\\Python\\Lib\\lib-tk"

 

      PortablePythonHome.reg

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment]
"PYTHONHOME"="D:\\TOW\\Python"

 

 

  g. Python폴더 위치 이동

 

D:\TOW\Python 폴더를 C:\TOW\Python 으로 이동한다.

 


  h. D:\TOW의 start-tow.bat 를 실행한다.

 

 

  i. 브라우저를 열고 http://localhost:8000/projects 를 열면 HelloTOW의 기본 프로젝트 페이지가 있으면 된다

 

 

 

3. 서비스 등록

  부팅후 서비스를 등록해서 처리해야 하나 필자는 서비스 등록이 귀찮아 패스한다.

  관련 링크는 아래와 같다.

 

이상으로 설치에 관련된 내용을 마치며

다음 번에는 기본적으로 사용할 프로젝트의 대한 설정을 해보도록 하겠다.

 

2010년 1월 11일 월요일

틀리기 쉬운 한글 맞춤법

잊기 쉬운 / 틀리기 쉬움 맞춤법

  1.  모음이나 ㄴ받침 뒤에 이어지는 렬/율 은 열/율로 표기한다.
    • 백분율, 투표율, 규율 /  합격률, 성장률, 확률
    • 나열, 분열 / 작렬
  2. 않/안의 구분
    • 않 - '아니하다'의 준말
    • 안 - '아니다'의 준말
      • 좋지 않다 / 안 좋다
  3. 어떻게 / 어떡해의 구분
    • 어떻게 -  방법
    • 어떡해 -  어떻게 해의 준말
      • 어떻게 먹니?  / 어떻게 해야할지 모르겠다
      • 힘들어서 어떡해 ( = 힘들어서 어떻게 해)
      • 나 어떡해 ( = 나 어떻게 해)
      • 어떻하지? / 어떻해

 

 

 

 

2010년 1월 6일 수요일

2010년 독서 목록(15권)

롱테일 법칙/스가야 요시히로/재인 - ★☆☆☆☆

 

동급생/히가시노 게이고/창해 - ★★☆☆☆

  평 : 역시 초창기의 작품이라 그런지 근래의 작품과는 다르게 특유의 날카로움이 적게 나타난다. 어떻게 보면 연결이 된 사건들이지만 치밀하지 못한 억지의 느낌을 지울 수가 없다.

 

개를 훔치는 완벽한 방법/바바라 오코너/다산책방 - ★★☆☆☆

  평 : 발상은 좋은 느낌이었다. 이기심과 순수한 어린소녀의 내면을 잘 표현했다. 하지만 청소년추천 도서 답게 너무 뻔한 등장인물과 다소 심심한 결말이 아쉽다.

 

  마음속 어디에선가 양심이라는 게 나타나 '안 돼, 나쁜 짓이야'라고 자꾸만 속삭였지만, 나는 그것 역시 마음 안쪽 깊숙한 곳에 밀어 넣어버렸다.

 

  떄론 살아갈날보다 살아온 날들의 발자취가 더 중요한 법이야. 내게 돈이 필요한 것보다 세상이 내 힘이 필요로 할 때가 더 많으니까

 

 

개밥바라기별/황석영/문학동네 - ★★☆☆☆

  평 : 아버지 세대의 풍경을 느낄 수 있게 하는 문체와 50년대의 흑백 풍경 사진을 떠오르게 하는 내용이었다. 또한 세대간의 차이를 느낄 수 있게 하는 책이었다. 내가 잘 모르던 그시절의 풍경과 느낌, 문제가 색달랐다. 그리고 그 세대들 또한 나름대로의 젊음과 방황을 가지고 삶을 살아온 것을 보면 묘한 동질감을 느꼈다. 하지만 작가가 전달하고자 하는 의미를 쉽게 이해하지 못한건 나의 문학적 소양이 부족하기 때문일까?

 

  뭣 땜에 살아야 하는지 모르겠어. 그냥 온 세계가 무심해. 나만 빼놓고 저희끼리 굴러가.

 

  어디에서나 기억은 거기 있는 사람과 함께 남는다.

 

  목마르고 굶주린자의 식사처럼 맛있고 매순간이 소중한 그런 삶은 어디에 있는가

 

  사람은 씨팔...... 누구든지 오늘을 사는거야

 

  고해 같은 세상살이도 오롯이 자기의 것이며 남에게 줄 수 없다는 것이다.

 

  잘 나갈 때는 샛별, 저렇게 우리처럼 쏠리고 몰릴 때면 개밥바라기.

 

모방범1,2,3/미야베 미유키/문학동네 ..ing

  평 : 너무 두껍고 길다. 비정상적인 환경 속에서 불안한 정서를 가진 자들의 사회. 그런 모습속을 보면서 삼류드라마에 몰입해서 느끼는 분노를 느낀다. 그런 분노를 느끼는 나  또한 불안한 면을 가지고 있을 지도 모른다. 모방범! 창의력대장이 되고 싶은가?

 

오 해피데이/오쿠다 히데오/재인 - ★★★☆☆

  평 : 무료하고 따분하다고 생각되는 일상생활속에서 찾을 수 있는 소소한 즐거움을 다시 한번 생각해볼 수 있었다.

 

걸/오쿠다 히데오/북스토리 - ★★★☆☆

  평 : 여자들이 겪을 수 있는 이야기들을 단편식으로 엮어 놓았다. 특정한 사건에 대한 여자의 입장에서 여자의 속마음을 기술한 방식이 독특했던.. 하지만 난 남자라 공감은 그닥 가지 않았다.

 

은행원 니시키의 행방/이케이도 준/media2.0 - ★★★☆☆

  평 : 승진과 진급에 매달리는 은행원의 애환을 통해서 조직 사회의 무서운 일면이 잘 드러난다

 

모든 게 다 우울한 밤에/나카무라 후미노리/이룸 - ★☆☆☆☆

  평 : 우울하다

 

개미 1,2,3 /베르나르 베르베르/열린책들 - ★★★★☆

  평 : 초반의 굉장한 흡입력. 아직 다 읽지 않았지만...

 

1Q84 1,2/3 무라카미 하루키/문학동네 - ★★★★☆

  평 : 이어지지 않는 인연이 과연 공기번데기를 통해서 이어질까? 아니면 슬픈 기억으로 남을것인가? 아니 그 인연의 공간조차 다 꿈인건가?

 

2009년 12월 31일 목요일

에뮬레이터(Emulator) 기동시 AVD 에러 해결방법

안드로이드(Android) SDK를 설치하고 에뮬레이터를 기동시에

아래와 같은 에러가 나타나는 경우가 있다.

 

emulator: ERROR: unknown virtual device name: 'Test-AVD'
emulator: could not find virtual device named 'Test-AVD'


 

위와 같은 문제는 에뮬레이터와 안드로이드 툴킷의 설정 문제이다.

 

위와 같은 상황일때에는 Win+R 을 눌러서 Cmd명령을 입력해서

커맨드 창을 열고

echo %USERPROFILE% 를 입력해서 출력되는 내용을 보면

필자는 아래와 같이 C드라이브로 설정되어 있고

 

실제로 사용하고 있는 유저의 프로파일 경로는 아래와 같이 E드라이브를 사용하고 있다.

 

에뮬레이터는 C로 만들어진 어플리케이션으로 %USERPROFILE%를 참고해서 AVD를 찾고

안드로이드툴은 Java로 만들어진 어플리케이션으로 실제 사용중인 프로파일 경로의 .android

폴더를  참조하게 된다. 이러한 차이로 AVD를 찾지 못하는 것이다.

 

이것을 해결하기 위한 방법은 여러가지로 제시가 되고 있지만 최고의 방법은

 

아래와 같이 환경변수에 ANDROID_SDK_HOME을 설정하는 것이다.

 

위와 같은 설정을 하게 되면 .android폴더가 지정한 경로의 하위 폴더로 설정되어 AVD들이

동일한 곳에 저장되어 툴킷과 에뮬레이터가 같은 곳을 참조하게 되므로

문제를 해결할 수 있다.