Sanggu's blog




최상단 광고 코드

 추천 사이트

 애자일 이야기 : http://agile.egloos.com
 서명덕 기자의 인터넷 : http://itviewpoint.com
 비지니스 뉴스 : http://www.ciobiz.co.kr
 MOCOMSYS : http://www.mocomsys.com
 Apache Software : http://www.apache.org
 소프트웨어 기술경력관리: http://career.sw.or.kr
 한이음 (지식경제부): http://www.hanium.or.kr
 IT 기술 뉴스: http://www.bloter.net/
 IBM 티볼리 까페: http://cafe.naver.com/tivolitool.cafe
 JAVA jar 검색 : http://www.findjar.com
 VM Ware 가상화: http://www.vmware.com

2011년 12월 1일 목요일

core 파일 분석

1. core 파일 명령어
- 가장 많이 쓰는 tool은 gdb 입니다.
gdb <실행파일>  <core file>

디버거를 실행시키면 이에 해당되는 stack trace들이 쭈욱 나옵니다.

(gdb) where
명령어로 자세하게 어느 파일 해당 line에서 죽었는지 살펴 볼 수 있습니다.

2. 시스템 별
HPUX:
   기본 제공 툴은 없으며, GDB, ADB을 사용함.

Solaris 예

/usr/bin/pstack [-F] [pid | core] > [분석내용저장파일명]

ex) pstack core2004-10-29 > coreStack.txt

/usr/bin/pmap [ -rslF ]  [ pid | core ] > [분석내용저장파일명]

Ex) pmap core2004-10-29 > coreMap.txt

2011년 11월 28일 월요일

DB2 명령어

1. db2 접속
connect to DB명 user userid using password

DB명에 userid, password를 입력하여 접속합니다.

2. file에 있는 script를 DB에 수행
connect to DB명 user userid using password
db2 -f proc.sql -o -t -z result_proc.txt

proc.sql을 실행시키며 result_proc.txt 에 log를 쌓아 놉니다.

3. 필드 data type 변경 시키기
alter table table명 alter column 필드명 set DATA TYPE type
맨뒤의 type에 예를 들면 varchar(100) 이런식으로 적어 놓고 실행합니다.


2011년 11월 9일 수요일

SVN 명령어

SVN client를 console 화면에서 사용하는 명령어에 대해 알아 봅시다.
console 화면에서도 update, commit, delete , checkout 등 모두 가능합니다.

1. check out
   소스를 repository에서 가져오기 위해서는 check out을 하여야 합니다.
    svn checkout --username svnID repository주소
   
    그 후 passoword를 입력하면 됩니다.

2. source commit
    서버상에 수정된 소스를 올리기 위해선
     svn commit 소스파일명

     만약 commit 시에
     "commit failed (details follows) 
     Could not external editor to fetch log message; consider setting $SVN_EDITOR 관련 된 에러가 발생한다면 아래와 같이 조치를 취한다.
 
 그후   계정의 home 디렉토리로 이동하여
     vi .profile
     export SVN_EDITOR=/usr/bin/vi
     저장 후 . ./.profile
     
     다시 svn commit을 하게 되면 vi 창이 열리면서 log를 쓰라고 나옵니다. log 작성후 파일 저장후 나가기 (:wq!) 하시면 commit 됩니다.

3. source update
    서버상에 버전업 된 소스를 local에 업데이트 하기 위해서
    svn update

4. 파일 추가시
    local에 있는 파일을 서버상에 append 할때
    svn add 소스파일명
    svn commit

5. 수정한 소스를 server 의 소스와 sync 할 경우
    svn revert 소스파일명

6. repository를 clean 할 경우
    svn cleanup
    svn delete 소스파일명
    svn commit

SVN client 설치

UNIX 상에서 SVN client를 가지고 소스관리를  할 필요가 있습니다.
윈도우 버전인 경우는 UI client ( tortoise client) 를 사용해도 되나, UNIX 서버에서 소스 관리를 하기 위해선 svn 명령어를 사용함으로서 해당 소스 관리를 할 수 있습니다..

1. svn client 설치 다운로드
   http://subversion.apache.org/packages.html   --> svn client 다운로드 하기 위해 이동.


 위의 서버 에 해당되는 머신으로 이동합니다.

2. svn에 필요한 util 다운로드 하기

예를 들어 AIX 서버를 클릭하여 들어갈 경우 먼저 package dependency를 확인해야 합니다.
즉, SVN을 설치 하기 위해선 package dependency를 모두 설치 하여야만 svn client를 설치 할 수 있다는 뜻 입니다.
또한 util 옆에 번호(1.3.12) 로 적혀 있는 것은 최소 이 버전이거나 , 해당 버전보다 높은 util로 설치되어 있어야 한다는 뜻입니다.

dependency에 대한 util이 설치 되어 있지 않다면 클릭하여 page로 이동하여 다운로드 받습니다. 설치가 다 되어 있다면 subversion-1.6.17-aix5_1.ppc.rpm 을 클릭하여 다운로드 받으시면 됩니다.

3. dependency package로 이동
    예를 들면) zlib를 클릭하여 해당 binary 다운로드로 이동합니다.
     RPM : zlib-1.2.5-1.aix5_1.ppc.rpm을 클릭하여 다운로드 받습니다.

여기서 중요한 것은 package rpm을 먼저 설치 하신 후 (명령어 rpm -i 해당 rpm)
마지막에 subversion rpm을 설치 하시면 됩니다.




rpm 사용법

rpm은 redhat package manager 약어로서, binary package를 생성, 삭제, 리스트 및 업데이트 하기 위해 사용되는 tool 입니다.
rpm 명령어를 가지고 binary를 쉽게 제어 할 수 있으므로  중요한 tool입니다.
그럼 rpm 명령어에 대해 알아 봅시다.

1. rpm 으로 설치된 binary 보기
   /home/test> rpm -qa



2. rpm 으로 특정 바이너리 찾아보기
   /home/test> rpm -qa |  grep zlib    --> zlib rpm 찾아보기

3. rpm이 설치 된 디렉토리 찾아보기
    /home/test> rpm -qs |  grep zlib    --> zlib rpm 찾아보기


4. rpm 설치 하기
    /home/test> rpm -i zlib-1.4.1.rpm --> zlib 설치 하기

5. rpm 삭제 하기
   /home/test> rpm -e zlib-1.4.1 --> zlib 삭제 하기
   * depenecy 된 다른 library 무시하고 삭제하기
  /home/test> rpm -e -nodeps zlib-1.4.1 --> zlib 삭제 하기

6. rpm 업데이터 하기
   /home/test> rpm -Uvf zlib-1.4.1.rpm


2011년 11월 7일 월요일

ASP 파일을 읽어 들여 DB (MSSQL)에 저장하기.

EAI 연계내부에 진입전, end user에서는 File을 읽어 들여 DB 저장하거나, ASP Web에서 데이터를 form action으로 읽어 들여 DB에 저장하는 부분이 종종 있게 됩니다. 이전 legacy system인 경우는 Web 단에서 받아 들이는 데이터는 .net ASP로 하는 곳도 있지만 2000년 초반에 구성된 시스템이라면 ASP같은 이전 웹서버 시스템을 이용하지요. 
간단히 file (separator data)에서 읽어 들여 DB 쪽에 저장하는 logic 을 살펴 보겠습니다.

'읽어 들일 파일 option, 
  Const ForReading = 1, ForWriting = 2, ForAppending = 8

'헤더 파일 리딩
  Set readObjHeaderFile = FsoObj.OpenTextFile(strHeaderRoot, ForReading) 

' MSSQL 접속
  Set dbCon =Server.CreateObject("Adodb.Connection")
  strConnect = "Provider=SQLOLEDB;Data Source=10.10.10.191;Initial  Catalog=SENDER;uid=sa;pwd=1234;" 
  dbCon.open strConnect

' separator "," 데이터를 읽어 들여 db insert
 Do while readObjHeaderFile.AtEndOfStream <> True
       lineData = readObjHeaderFile.ReadLine()
             
'Data 파싱
       arrData = Split(lineData, ",")
               
       for i= 0 to ubound(arrData)-1
            year = arrData(0)
            slip_no = arrData(1)
            doc_date = arrData(2)
            post_date = arrData(3)
            company_code = arrData(4)
            slip_type = arrData(5)
            slip_type = Left(slip_type, Len(slip_type)-4)
       next
        
        'DB Header 인서트
           sql = "insert into SENDER_WEB_HEADER_INTF (YEAR, SLIP_NO, DOC_DATE, POST_DATE, COMPANY_CODE, SLIP_TYPE) values ("
           sql = sql  & year & ", '" & slip_no & "', '" & doc_date & "', '" & post_date & "', '" & company_code & "', '" & slip_type & "')"
                      
dbCon.Execute sql        
Loop
dbCon.close
  Set dbCon = nothing

2011년 10월 16일 일요일

SAP java 프로그래밍

1. SAP 배경 (위키피디아)
SAP[쌥]은 1972년 독일 만하임에서 다섯 명의 전직 IBM 출신 엔지니어가 설립한 회사로 업무용 애플리케이션 소프트웨어 분야에서 전세계 가장 큰 시장 점유율과 기술 선도적인 업체이다. SAP은 데이터베이스를 이용하여 통합된 업무용 애플리케이션을 개발하였으며, 오늘날 IBM 이나 마이크로소프트 등과 같은 많은 기업들이 SAP 제품을 사용한다.
SAP의 최근 제품인 R/3는 재무, 인사, 제조, 영업, 물류/유통, 설비 및 공사관리 기능뿐만 아니라 문서들이 자동적으로 사용자들에게 전달되는 워크플로우 기능도 제공한다. 또한 기술적으로 클라이언트/서버 모델을 채용하였으며, 윈도우 NT부터 IBM 메인프레임에 이르는 대부분의 운영체계 플랫폼을 지원한다. R/3의 최근 버전은 인터넷을 지원하기도 한다.
현재 SAP은 산업별 솔루션, 비즈니스 웨어하우스(Business Warehouse), 고객관계관리(CRM)와 같은 특성화된 제품 개발과 비즈니스 파트너와의 업무협조를 통해 R/3를 공급하면서 고객을 위한 성공적이고 효율적인 비즈니스 프로세서 리엔지니어링을 실현하고 있다.
 
1998년 5월 기준으로 SAP의 종업원 수는 전세계 50여 개국 15,000여 명이며 15,000개 이상의 사이트에 R/3가 설치되었다.

2.  SAP JAVA 라이브러리 다운로드

JCO라이브러리는 http://service.sap.com/connectors 에서 다운로드 할 수 있고, 다운로드 하기 위해서는
SAP 고객 및 파트너로서 사용자 아이디가  필요 합니다.
1) WINDOWS 계열
   _client.setConnectionInfo(info);
  _client.connect();
  _client.execute("BAPI_COMPANYCODE_GETLIST");
  _client.disconnect();
  Jco 2.0 JDK1.2 이상이 설치되어 있어야 한다. SAP 4.0, 4.5, 4.6, 6.20 을 지원함
다음 설치는 Window 32 플랫폼을 기준으로 설명하고 있다. 다른 플랫폼의 설치 방법은 해당 플랫폼 JCO에 포함되어 있습니다.
 JCO 압축 파일을  풀기위한 디렉토리를 생성하고 압축을 푼다
   JCO루트 디렉토리로 부터 librfc32.dll 파일을 C:\WINDOWS\SYSTEM32 에 복사한다.
   JCO루트 디렉토리로 부터 sapjcorfc.dll 파일을 C:\WINDOWS\SYSTEM32 에 복사한다.
   Sapjco.jar 파일을 IntegrationWorkbench\common\lib에 복사해 넣는다
   Sapjco.jar 파일을 agent\runtime\lib\ext 에 복사해 넣는다.
   IntegrationWorkbench설치디렉토리의 IntegrationWorkbench5.lax파일내의 속성 lax.class.path  common/lib/sapjco.jar과 같이 sapjco.jar 경로를 추가해준다
SAP어댑터 작동시 (RFC함수 이름을 가져온다거나) 검색버튼을 눌러도 아무런 반응이 없을때는 msvcp71.dll, msvcr71.dll, msvcrt.dll 파일을 Windosw\System32 아래에 복사해 놓고 IntegrationWorkbench를 닫았다가 다시 시작해 본다.
-배포를 위한 JCO zip 파일
  sapjco.jar
  librfc32.dll
  sapjcorfc.dll

3. SAP JAVA 프로그래밍
   간단하게 생각해서 SAP에 접속하여 RFC 함수를 Call 하는 것입니다.
   Call로 인하여 원하는 데이터 값을 가져올 수 있습니다.

 필요한 property
 * CLIENT
 * USER
 * PASSWD
 * LANG
 * HOST
 * RFCNAME
 * PORT

method
   _client.setConnectionInfo(info);
   _client.connect();
   _client.execute("BAPI_COMPANYCODE_GETLIST");
   _client.disconnect();

2011년 10월 14일 금요일

FM2012 출시일

WOW! 드디어 FM2012  출시일이 10월 21일날 이라고 합니다.
기본은 FM2011과 비슷하지만 좀더 그래픽 향상, 추가 기능 및 매치엔진쪽 강화됬다고 합니다. 또한 22000몀의 선수 데이터를 가지고 있고.
벌써 흥분 되기 시작하네요~


관심있으신 분들은 아래 FM2012 홈페이지에서 Demo 받아서 즐겜 하시기 바랍니다.
http://www.footballmanager.com/

이번엔 어떤 유망주를 데려다 키워야 할지..^^

CXF client 생성 방법

1. CXF 란?
웹 서비스를 쉽게 구현해주기 위한 apache에서 제공하는  하나의 플랫폼이라고 생각하면 됩니다.
예를 들어 ) 어느 기관에 웹서비스 provider가 존재하고, 우리는 그 provider에서 데이터를 가져오기 위한 client (consumer)를 만든다면 CXF를 이용하는 것은 좋은 선택입니다.
먼저 CXF를 사용하기 위해서는 홈페이지에서 CXF platform을 다운 받아 봅시다.

2. CXF 다운로드
CXF 홈페이지 다운로드  http://cxf.apache.org/download.html


Binary 로 되어 있는 apache-cxf-2.4.3.zip을 다운받습니다.
다운 받은 후 적당한 위치에 압축을 풀면 됩니다.

3. WSDL로 client stub 만들기
위에서 말씀드렸듯이 기관에서 provider를 만들었다면 반드시 WSDL을 제공하게 됩니다.
WSDL은 Web Service Description Language로서 웹서비스에서 주고 받을 (request 파라미터, response parameter) 파라미터 및 provider의 URI, port 등 형식에 대해 정의가 되어 있는 명세서를 나타냅니다. 그러한 WSDL을 가지고 java에서 사용할 수 있는 API를 뽑아내는 것이 stub 입니다. java에 맞는 stub을 뽑아내야 programing을 할 수 있으니까요.

1) WSDL을 자신의 컴퓨터 적당한 위치에 놓습니다.
2) CXF 압축 푼 이름이 apache-cxf 라면 apache-cxf/bin 디렉토리에 들어갑니다.
3) command 창에서 아래와 같이 명령을 내립니다.
    WSDL이름이 test.wsdl이라면..

D:\apache-cxf\bin>wsdl2java –client test.wsdl

D:\apache-cxf\bin>


4) bin 디렉토리에 폴더가 생기며 그 폴더 안에 stub Class 들이 여러개 만들어 질 것입니다.
이렇게 하면 stub 이 생긴것입니다.

4. Client programing
stub이 생성됬음으로 java programing을 예를 들면 eclipse에서 한다면 그 폴더 통채로 프로젝트 내부에 가져다 놓으면 됩니다. 그리고 programing을 하시면 됩니다.

다음엔 CXF programing 방법에 대해 자세히 설명하도록 하겠습니다.

linux 커널 버전 확인

centOS 및 여러 linux 시스템에서 커널 버전 확인 간단히 알 수 있습니다.
명령어 uname -a

해당 결과값은
Linux 호스트 이름 메이저버전.마이너 버전 패치 버전 및 설치 날짜 bit 수에 관련된 정보가 나옵니다.

위의 커널버전은 2.6.18 이라고 부릅니다.

커널 버전의 용어
  • 메이저 버전 :  엔진 kernel의 획기적인 변화가 있을 경우 . 현재는 2버전입니다.
  • 마이너 버전 : 큰 변경 없이 버그 수정 및 기능 적 추가 있을 경우 마이너 버전입니다.
  • 패치 버전 :  기능은 변화없이 수정이 나타날 경우 패치버전을 씁니다.

MCI (Multi Channel Integration) 소개 및 구성

1. MCI 및 EAI 배경
몇년전만 해도 금융권 차세대 프로젝트는 EAI , MCI (대외계 포함) 는 각각의 진행 사항으로 여겨왔으나 현재는 MCI + EAI 포함으로 프로젝트가 진행되고 있다. 이에 따라 기존의 EAI를 주로 한 회사들은 MCI 를 포함한 대외계까지 준비를 해야 하며, 기존의 EAI에서 필요치 않은 기능 리스트들의 구현 및 솔루션에 대해 만들고 있다.

2. MCI 및 EAI 구성
MCI는 크게 대내 MCI, 대외 MCI 로 나눌 수 있으나, 프로젝트시에는 동시에 진행 한다는 것을 염두해 둬야 한다.
  • 대내 MCI : 금융권에서 대내 MCI는 영업점 단말, 인터넷, 스마트폰 및 자동화기기등 고객과의 접점 연계를 대내 MCI라고 한다.
  • 대외 MCI : 카드사, 보험업계 및 VAN 사와 같은 대외기관을 대외 MCI라고 한다.
  • EAI : 대내 MCI 또는 대외 MCI 의 채널 내부(계정계, 카드계)로 들어온 데이터의 필요한 정보를 전문변환 또는 라우팅으로 가공하여 새로운 데이터를 생성해내는 부분을 EAI라고 한다.

3. MCI에 필요한 기능 리스트
   * MCI의 프로토콜은 EAI의 DB, File, SAP 등과 달리 X.25, Socket, HTTP, Soap 프로토콜을 사용하는것이 일반적이다.  또한 회선관리, 암복호화, 장애 및 통보등은 필수적이다. 아래는 기능별로 list를 한 부분이다.

-대외전문관리
-대외전문변환(표준전문<->대외전문)
-메시지 유효성 검사
-메시지 조회 및 추적(전문로깅, 거래메시지 trace, 에러로깅)
-회선 별 집계
-B2Bi(ebXML, RosettaNet, EDI )
-타발/당발 요청 시뮬레이터
-당발 요청 시뮬레이터
-재처리 및 오류 처리
-채번/결번 관리
-센터컷 처리 기능
-개시전문/마감전문  스케쥴러
- 영업일 관리
- 시뮬레이터 : 키 값에 대한 리턴 기능, 응답전문 변환, 지연응답등 즉, request 전문일경우 response 응답에 해당하는 메시지를 보냄.
     
4. MCI 대외계 및 EAI 연계 전체 구성도


      위의 그림처럼 채널 BP사 및 대외기관들은 Socket, X.25, Soap 프로토콜을 사용하여 전문들을 채널을 통해 기관내부로 들어옵니다. 채널로 들어온 데이터를 필요로 하는 기관 내부와 연계하여 사용하는 부분이 EAI가 하는 역할 입니다.

5. 프로젝트 기간
금융권 프로젝트 기간은 최소 1년 이며 길게는 2년까지 이루어 집니다. 각 벤더 사들의 비표준, 표준 전문 개발 및 테스트가 가장 오래걸리게 되며 핵심입니다. 런타임 (트랜잭션 처리)은 가장 중요하며 이를 제외하고 전문 테스트 시뮬레이터를 제대로 갖고 있을 수록 프로젝트의 성패를 좌우 합니다.

2011년 10월 13일 목요일

JAVA encoding UTF-8

1. String object의 UTF-8 encoding
JAVA code 상에서 String을 UTF-8로 encoding 하는 부분이 가장 많습니다.
 그 이유는 모든 문자열을 처리하기 위해서는 UTF-8만큼 좋은 것이 없기 때문입니다.
String encoding처리 로직은 2줄로 가능합니다.


String -> UTF-8 바이트로 변환 -> String 변환

2. XML encoding을 UTF-8로 변환
    xml 헤더의 encoding을 정의는 XML 문서에 필수 입니다. 다음은 XML 헤더 encoding을 추가 하는 방법에 대해 알아 보겠습니다.
 JDK 1.5 이상부터는 Format class 가 생겼습니다. format 인스턴스에 setEncoding 메소드로 해당 encoding charset을 넣어 주시면 됩니다.

아래는 위의 테스트 코드를 Junit으로 나타낸 결과 입니다.



컴퓨터공학과 커리큘럼

 IT 일을 하기 위해서는 이전 대학때의 이론적인 커리큘럼이 중요하다는 것을 새삼 깨닫는다.
그러나 요즘 대학졸업자들의 커리큘럼을 보면 실습 및 응용프로그래밍쪽 너무 집중된다고 느끼는 경우가 꽤 있다. 사실 중요한것은 이론적인 내용들이 기반이 되는것인데 말이다.

제가 대학때 수강하였던 커리큘럼을 정리해보면.

2학년 과정
  • 자료구조
  • 파일처리
  • 논리회로
  • 객체지향 프로그래밍
  • 이산수학
  • 유닉스개론 및 실습
  • 어셈블리어
  • 알고리즘

3학년 과정
  • 컴퓨터네트워크
  • 프로그래밍 언어론
  • 인공지능
  • 멀티미디어
  • 컴퓨터구조
  • 데이터베이스
  • 운영체제
  • 데이터베이스
  • 계산이론

4학년과정
  • 컴퓨터보안
  • 컴파일러
  • 컴퓨터 그래픽스
  • 시스템분석 및 설계
  • 소프트웨어공학
특히 가장 집중해서 들어야 할 과목을 꼽으라면 아래와 같다.
  • 자료구조
  • 알고리즘
  • 컴퓨터네트워크
  • 계산이론
  • 컴파일러
  • 운영체제
  • 소프트웨어공학


2011년 10월 12일 수요일

R&D란.

회사라면 R&D의 조직에 대해 많은 의견을 갖고 있을 것입니다. 그만큼 R&D부서의 성공여부에 따라 회사의 성패가 좌우 하기 때문입니다. 그러나 어느 회사든 R&D를 운용함에 있어서 딜레마에 빠지는데, R&D 조직을 회사의 투자의 개념으로 보는 것인지,  남들도 하기에 운영하는지는 생각해 볼 문제 입니다.
중요한 점은 모든일들은 사람과 사람의 의사소통에서 시작되며, 다 같이 발전 모델을 공유하여 각 팀들을 신뢰한다면 회사는 발전할 것이며 함께 회사를 이끌어 간다는 마음가짐으로 일을 하는것이 중요하다고 봅니다.

아래는 CIO BIZ "애플 R&D 성공은 잡스와 쿡의 팀플레이"의 칼럼을 인용 하였습니다.

액센츄어는 최근 출간한 ‘R&D 혁신의 기술’이란 책을 통해 혁신 기업과 추종 기업의 R&D에 있어 가장 큰 차이점을 구별해 낸다.
액센츄어에 따르면 애플과 GE의 R&D 혁신을 관통하는 가장 중요한 하나의 키워드는 조직 문화다.
아이폰을 내놓은 애플은 이미 ‘개방형 혁신’의 R&D 키워드가 됐다.

특히 “혁신이야 말로 리더를 구분짓는 것”이라 말한 전 CEO 스티브잡스의 리더십은 애플만의 독자적 조직문화를 완성시켰다.

직접 애플의 신제품 개발 프로세스 혁신과 과정을 주도하며 의견을 제시하는 등 깊이 관여해 온 것으로 유명하다.
스티브잡스는 신제품 아이디어 생성 단계부터 직접 참여했다. 상위 1% 직원과 아이디어 리뷰 회의를 이끌었다.

애플에선 스티브잡스가 ‘선택적 소수의 아이디어 공장’을 이끌고, 팀쿡은 아이디어를 현실화하는 ‘실물 공장’을 관리하며 조직 문화를 뒷받침 해온 격이다.

스티브잡스가 참여한 아이디어 리뷰 회의에서 도출된 톡톡 튀는 아이디어는 다각도의 토론을 거쳐 최종 선택의 순간을 맞게 된다.

아이디어를 개념화하는 단계에서는 최고디자인책임자가 아이디어를 구현하는 전담 조직 인력을 직접 관리한다. 생산단계까지 디자인 개념이 곧장 반영될 수 있도록 하면서 ‘아이디어부터 생산까지’ 일원화된 조직 및 의사결정 체계를 갖춘 애플의 혁신은 상위 1%의 아이디어로 세계를 주름잡을 수 있도록 하는 밑바탕이기도 했다.

아이디어의 성공적 결과에 대해선 반드시 보상을 한다.
 반면 실패에 대한 책임도 묻는다. 혁신을 통해 성과를 창출한 직원에게 보상을 통해 동기를 부여하는 조직 문화, 애플이 가진 지속 가능한 ‘혁신’의 힘이다.
GE는 개발자 위주의 프로세스를 탈피하기 위한 고객 지향적 R&D 프로세스를 잘 갖춘 기업으로 평가 받는다. 가전제품, 헬스케어, 항공에서 에너지에 이르기까지 폭넓은 사업을 하고 있어 더 그렇다.

가장 혁신적인 사례는 고객과 대면하는 콜센터를 소통의 가교로 활용한 사례다. GE는 콜센터를 ‘응답센터(Answer Center)’라 바꿔 불렀다.

기업 외부 고객뿐 아니라 기업 내부 부서의 요청도 받도록 했다. 뒤이어 놀라운 일이 벌어졌다.
이 응답센터는 고객 의견을 받아들이는 창구이며, 곧 이 정보를 내부에서 소통시키는 중심적 역할을 하게 된 것이다.
예를 들어 마케팅 혹은 제품 개발 부서에서 신규 제품에 대한 고객의 평가나 제품의 기능에 대한 소회를 알고 싶을 때, 콜센터에 내용을 보낸다.

그후 콜센터에서 고객과 상담을 할 때 이 내용을 대신 질문해주고 답을 받아 제품에 반영할 수 있도록 해준다.
상담원은 마케팅 전략이나 제품 개발 방향성 수립 때에도 고객의 불편함이 무엇인지, 무엇에 대한 개선 요구사항이 있는지 참여해 마치 고객이 된 것처럼 의견을 낸다.
다른 기업은 중요하지 않게 생각하는 역할을 회사의 핵심 채널로 만든 GE의 ‘고객 중심적 철학’이 빛난 사례다.

유효정기자 hjyou@etnews.co.kr

IBM 제품군

1. IBM 제품군
IBM은 소프트웨어 제품들을 통합및 합병하여 지금 현재 다섯 개의 주요 소프트웨어 브랜드를 갖고 있습니다.

  • DB2와 Information Management: Information on demand
  • Lotus: 통신, 협업, 생산성
  • Tivoli: IT 서비스 관리
  • Rational: 비즈니스 중심 개발
  • WebSphere: 비즈니스 프로세스 관리 (엔터프라이즈 제품 인 경우 이 제품군에 속합니다.)


2. IBM의 정책
    IBM의 정책은 IT 산업의 모든 비지니스, 이벤트를 포함하여 모든 정보에 초점을 맞추고 있다고 생각됩니다. 물론 한국 IBM은 IBM전체의 2% 이내의 매출 규모를 갖고 있지만 우리나라 IT 시장에서도 가장 큰 벤더 중 하나입니다.

아래는 IBM의 각 제품군의 설명을 인용 하겠습니다.

Information Management - Information on demand
Information on demand는 알맞은 정보를 알맞은 사람 또는 프로세스에 알맞은 시간에 제공하여 적절한 액션을 수행할 수 있도록 하는 기능이다.
모든 정보를 통합, 분석, 최적화 하여 리스크를 관리하고 새로운 비즈니스 통찰력을 얻도록 한다.
Information on demand를 지원하기 위해, Information Management 브랜드는 다음과 같은 핵심 기능을 제공한다.
  • DB2, Cloudscape, Informix, U2: 정보 저장소와 서버
  • 콘텐트 관리와 디스커버리 서비스: DB2 Content Manager와 IBM Omnifind
  • 정보 통합 서비스: IBM Information Server
  • 비즈니스 정보 서비스: DB2 Data Warehouse Edition IBM Information on demand
Lotus - 통신, 협업, 생산성

Lotus 소프트웨어 브랜드는 사람과 비즈니스를 연결하고, 기존 투자 가치를 확장하며, 새롭고 유연한 애플리케이션 구현 방식을 제공한다.
이 제품들은 적응성 있는 역할 기반의 작업 환경을 만들어서 Software Reference Architecture의 인간 중심 기능을 제공한다.
단일 보안 액세스 포인트를 사용하여 Lotus 오퍼링은 통합 환경을 제공한다.

  • 메일, 캘린더 및 스케줄링, 협업 애플리케이션 (Lotus Notes/Domino)
  • 복합 애플리케이션, 프론트-엔드 통합, 클라이언트 서비스 (Lotus Expeditor)
  • 협업 문서 관리 (Lotus Domino Document Manager와 Lotus Workflow)
  • 모바일 및 엔터프라이즈 액세스 (Lotus Sametime Mobile)
  • 실시간 협업 및 팀 협업 (Lotus Sametime과 Lotus QuickPlace)
Rational - 비즈니스 중심 개발

Rational 브랜드는 소프트웨어 개발의 프로세스 혁신을 선도하는 것으로 잘 알려져 있다. 이 프로세스를 비즈니스 중심 개발(business-driven development)이라고 하며, 개발 프로젝트를 IT 중심 솔루션 보다는 비즈니스의 필요에 맞춰야 하는 필요성을 인식한 개발 방식이다. 비즈니스 중심 개발을 통해 조직은 소프트웨어와 시스템 개발의 비즈니스 프로세스를 관리할 수 있다.
Rational 포트폴리오는 개발팀에게 도움이 되는 다양한 역할 기반의 툴들을 제공하고 있다.
서비스 에셋의 수집, 생성, 테스트, 구성 요구 사항 정의, 비즈니스 프로세스 코딩, 표준 실행 비즈니스 프로세스와 인프라스트럭처의 표준화, 자동화, 통합 비즈니스 모델과 프로세스를 전략적 목표에 적용 다음은 Rational 제품 카테고리이다.
  • Rational RequisitePro, Rational Software Modeler, Rational Data Architect: 요구 사항 및 분석
  • Rational Application Developer, Rational Software Architect, and Rational Systems Developer: 디자인 및 구현
  • Rational Robot, Rational Test RealTime, Rational Functional Tester: 소프트웨어 품질
  • Rational ClearCase, Rational ClearQuest, Rational BuildForge: 소프트웨어 설정 관리
  • Rational Portfolio Manager, Rational Method Composer, Rational Team Unified Platform: 프로세스와 프로젝트 관리
Tivoli- IBM 서비스 관리

Tivoli 소프트웨어는 IT 시스템의 비즈니스 가치를 이해하고 관리할 수 있도록 지능적인 인프라스트럭처 관리 솔루션을 제공해 왔다.
중요한 IT 시스템들을 정책 기반 리소스 할당, 보안, 스토리지, 시스템 관리 솔루션들을 사용하여 관리 및 최적화 할 수 있도록 통합 뷰를 제공한다.
Tivoli 브랜드의 주요 기능은 다음과 같다.
Automated IT Infrastructure Library (ITIL) 워크플로우 오픈 표준 기반의 설정 관리 데이터베이스(CMDB)와 워크플로우 엔진 자동화 된 인프라스트럭처 기반 태스크 자가 관리 자율 기술 베스트 프랙티스와 구현 지원 IT Service management (ITSM)는 세 가지 핵심 컴포넌트를 갖고 있다.

WebSphere - 비즈니스 프로세스 관리

인프라스트럭처를 제공한다.
WebSphere는 SOA 라이프 사이클 동안 엔드투엔드 비즈니스 프로세스 기능을 제공하고, 아울러, 비즈니스 프로세스의 모델링, 어셈블링, 전개, 모니터링을 위한 제품과 비즈니스 프로세스를 시뮬레이트 및 최적화 하는 툴도 제공한다. 이러한 모든 요소들은 엔터프라이즈 서비스 버스(ESB)를 통해 연결된다.
WebSphere 포트폴리오에는 다음과 같은 제품군들이 포함된다.
  • 애플리케이션 서버 - IBM WebSphere 소프트웨어 플랫폼의 기본이다. 이러한 서버 제품군들은 SOA용 애플리케이션의 전개와 실행에 필요한 안전하고, 확장성 있으며, 탄력적인 인프라스트럭처를 제공한다.
  • 비즈니스 통합 - SOA에서의 애플리케이션 통합과 비즈니스 프로세스 관리. 기업 내 데이터, 애플리케이션, 프로세스, 사람들을 통합하여 기존 IT 자산들을 활용한다.
  • Commerce - 온라인 스토어부터 완전히 통합된 멀티티어 수요 체인에 이르기까지, 광범위한 밸류 체인 솔루션을 하나의 플랫폼에 전개할 수 있다.
  • 개발 툴 - 엔터프라이즈 규모의 J2EE 및 SOA 애플리케이션의 생성, 테스트, 전개용 툴. 포털 - 엔터프라이즈를 포털이라고 하는 하나의 커스터마이징 가능한 인터페이스로 통합하는 프레임웍

실시간 log 감시 프로그램 - wintail

개발자 또는 SM 모니터링 운영 하기 위해서는 실시간 log 감시는 필수입니다.
특히 윈도우에서 실행 모듈이 항시 돌고 이를 파악하기 위해서는 log 프로그램이 필수 입니다. 매번 로그파일을 열었다가 닫고 다시 열고를 반복 할 수 없기 때문입니다.
이에 필요한 log 감시 프로그램인 wintail을 소개 합니다.

URL : http://www.baremetalsoft.com/wintail/
해당 사이트에 들어가면.


밑에 Download Wintail.exe 를 클릭 합니다. 즉시 다운로드 받으실 수 있습니다.

사용법 또한 다운받은 아이콘을 클릭하여 해당 파일을 open 하면 지속적으로 log가 쌓이는 것을 확인할 수 있습니다.

IBM WBE (Websphere Business Event) 솔루션

1. WBE 정의
    WebSphere Business Events (WBE)는 이벤트의 종류나 발생 시간에 관계 없이 다양한 이벤트를 수집, 평가, 분석(상관관계)하여 필요한 조치를 수행합니다.
   복잡하고 이질적이고 예측 불가능한 불규칙적인 이벤트를 필터링 및 룰 (rule)에 의해 새로운 이벤트에 대한 조치 및 비지니스 플로우를 나타낼 수 있습니다.

2. 어떤 업무에 사용되는가?
  • 중요한 이벤트 패턴을 감지하기 위해서
  • 서로 다른 이벤트 소스에서 발생하는 다양한 형태의 이벤트를 동시에 처리하기 위해서
  • 이벤트의 발생 뿐 아니라 발생하지 않는 것도 중요한 업무인 경우
  • 이벤트의 발생이 순차적이지 않은 업무
  • 이벤트의 발생이 시간과 관련된 곳 . 특정한 시간까지 꼭 발생해야 하거나 서로 특정한 시간 이내에 같이 발생해야 하는 경우
  • 물리적인 이벤트로부터 실행 가능한 조치(이벤트)가 필요한 경우
  • 다양한 이벤트의 조합에 의해서만 발생하는 조치를 적용하고자 하는 경우
3. WBE 사용자 인터페이스

새로운 이벤트를 제공 받아 필터 및 DBMS에 저장하여 새로운 이벤트 플로우, 모니터링, 플로우 디자인이 가능합니다.

4. WBE Connector
- WVE 자체 connector 사용
  • 디자인 데이터 UI를 통한 설정 제공
  • 런타임 서버 내부에서 실행 (권장사항)
  • 어플리케이션을 외부로 실행
  • 내장 커넥터 (RDMS, HTTP/REST, SMTP, FTP, FileSystem, JMS)
  • ESB 사용
  • 3rd party 제공 어플리케이션 / 어뎁터
5. 요약
  • 이벤트 기반 어플리케이션 개발을 위한 전문 솔루션
  • 통합된 플랫폼 제공
  • 기존의 인프라 제공
  • 신속한 업무 적용
  • 확장 가능한 표준 기반의 아키텍쳐
  • 여러 이벤트를 조합하여 새로운 프로세스 구현 가능

2011년 10월 11일 화요일

log4j 사용법

1. log4j 다운로드 사이트
http://logging.apache.org/log4j/1.2/download.html


위의 site ( http://logging.apache.org/log4j/1.2/download.html )에서 log4j zip 파일을 다운 받습니다.
압축을 풀면manual 및 src 등 여러가지 있으나 필요한 것은 log4j-1.2.16.jar 입니다.

2. log4j Class
아래는 log4j class를 쉽게 사용할 수 있도록 만들어 놓았습니다.
해당 class를 가지고 인스턴트 객체를 생성하여 사용하면 쉽게 사용할 수 있습니다.

LoggerObject.java

import org.apache.log4j.Layout;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.PatternLayout;
import org.apache.log4j.RollingFileAppender;

/**
* @author sgtae
*
*/
public class MopasLogger
{
    private static String pattern = null;
    Logger rootLogger = null;
    Layout layout = null;
    RollingFileAppender ra = null;

    public MopasLogger()
    {
        pattern = "[%d{ISO8601}] %-5r [%t] %l : %-5p %-30c - %m%n";
    }

    public void setLoggerConf(String fileName, String maxFileSize,
                                         int maxBackupIndex, String threshold) throws Exception
    {
        rootLogger = Logger.getRootLogger();
        layout = new PatternLayout(pattern);
        try
        {
            ra = new RollingFileAppender(layout, fileName);
            ra.setAppend(true);
            ra.setMaxFileSize(maxFileSize);
            ra.setMaxBackupIndex(maxBackupIndex);
           this.setThresholdLevel(ra, threshold);
           rootLogger.addAppender(ra);
        }
        catch(Exception e)
        {
             throw new Exception(e.getMessage());
        }
    }

    private void setThresholdLevel(RollingFileAppender ra, String level)
    {
        if(level.equals("OFF"))
            ra.setThreshold(Level.OFF);
        else if(level.equals("FATAL"))
            ra.setThreshold(Level.FATAL);
        else if(level.equals("ERROR"))
            ra.setThreshold(Level.ERROR);
        else if(level.equals("WARN"))
            ra.setThreshold(Level.WARN);
        else if(level.equals("INFO"))
            ra.setThreshold(Level.INFO);
        else if(level.equals("DEBUG"))
            ra.setThreshold(Level.DEBUG);
        else if(level.equals("ALL"))
            ra.setThreshold(Level.ALL);
    }
}


3. log4j 예제

Logger logger = Logger.getLogger(Class.class);
LoggerObject lo = new LoggerObject();
lo.setLogger("log.txt", "10M", 5, "DEBUG");

logger.debug("debug");
logger.info("test");
위와 같이 간단하게 만들면 log.txt 파일에 log가 계속 쌓일 것 입니다.

JAVA eclipse 툴 다운로드

JAVA eclipse 관련 툴을 아래 사이트에서 바로 다운로드 할 수 있습니다.
http://www.eclipse.org/downloads/

 site를 들어가면 위의 화면을 볼 수 있습니다..
이미지 상단 빨간색 선은 Eclipse Modeling , enterprise, embedded, equinox 등 프로젝트 및 개발 환경에 따라 eclipse를 선택할 수 있습니다.

우측 하단 빨간 선을 클릭시 eclipse 버전 별로 선택하여 다운로드 받을 수 있습니다.

2011년 10월 10일 월요일

IBM WMQ

1. Websphere MQ?
  • 분산처리 System의 확산이 대규모로 진행되면서 기존의 온라인 기능 특성, 즉 동기처리(Synchronous) 방식의 솔루션은 많은 문제점들을 노출시켰으며, 이는 결국 분산 System의 여러 가지 장점들마저 평가절하 시키는 결과를 가져왔다.
  • 온라인과 배치(Batch)라는 이분화된 선택구도 안에서 발생하는 각종 문제점을 효율적으로 처리하고, 분산된 System 자원의 자유로운 가동을 최대한 보장하는 것을 주요 골자로 하는 WebSphere MQ는 메시징 기술(Messaging Technology)을 기반으로 한 비동기 (Asynchronous) 처리방식의 미들웨어 제품이다.
2. Websphere MQ 특징?
  • Assured message delivery
    메시지의 전달을 보증함.
  • Time independent processing
    비 동기 처리가 가능함으로 시간에 독립적으로 동작할 수 있음.
  • Application parallelism
    프로그램의 처리를 병렬화 함으로서 성능을 향상 시킬 수 있음.
  • Faster application development
    네트워크 단의 로직(Logic)을 WMQ에서 구현함으로써 응용프로그램에서는 비즈니스 부분만 구현하면 됨.
3 . Messaging & Queuing 방식 사용
  • 어플리케이션 A 와 어플리케이션 B 가 통신할 때, 중간에 큐라는 매개체를 놓고 간접 통신하는 방식
  • 어플리케이션은 target 이 되는 큐의 이름만 알고 있으면 됨 (큐의 실제 위치, 수신 시스템 상황, 네트워크 상황 관계없음)
4. 비동기 처리 방식
  • 송신 어플리케이션 A는 수신 어플리케이션 B의 가동상태나 B가 운영되는 시스템의 가동상태에 무관하게 데이터를 전달할 수 있으며, 수신 큐의 Triggering 조건을 설정함에 따라 어플리케이션 B의 가동 조절 가능
  • 분산된 시스템 자원의 효율적인 가동 및 독립적인 가동 보장
  • 요청과 응답이 분리된 처리
5. 메시지 전달을 보증함
  • 한번 큐로 전달된 데이터는 반드시 큐를 통하여 수신 어플리케이션에 한번 전달되게 하는 “메시지 전달 보증 기술”을 채택함으로써 상용환경 (Commercial Environment)에서의 메시징 기술 적용을 가능하게 한다.
  • Transmission queue에 메시지를 먼저 저장함.
  • 만약 큐 관리자와의 연결이 끊어지면 Application은 종료 함.
6. Websphere MQ 기본 구성
  • Message
    큐를 통해 전달되는 message는 실제 전달하려는 Application Data와 message의 속성 및 처리 방법이 정의되는 Message Descriptor로 구성된다.
  • Queue
    Message를 송,수신처로 비동기적 처리를 가능하게 하는 Storage 영역이다.
  • Message Queue Manager (MQM)
    큐를 이용한 송수신 작업의 모든 Service를 담당하며 각종 큐의 생성, 관계설정, 변경, 삭제 등을 관리
  • Message Queue Interface (MQI)
    Application과 Queue Manager와 연결해 주는 Interface로서 WMQ API를 말함
  • Message Channel Agent (MCA)
    Platform이 다른 각 System에서 Message 전송을 위해 Queue Manager를 연결하는 Communication Link (Channel)를 사용하며, Channel은 optional하게 항시 Active 또는 요청 시 Active로 설정 가능
7. Message Queue Interface (MQI)
  • 응용 프로그램 과 큐 관리자 사이의 Interface
  • 모든 환경에서 사용 가능한 MQ API Major Call
    MQCONN
    MQOPEN
    MQPUT
    MQGET
    MQCLOSE
    MQDISC
    Minor Call
    MQCMIT
    MQBACK
    MQINQ
    MQSET
    MQPUT1
8. Message Channel Agent (MCA)
  • 큐 관리자 사이의 메시지를 전달하기 위한 논리적인 링크(채널)
  • 채널에 관계된 명령은 MCA에서 수신하여 처리 한다.
  • 채널이라는 논리적 링크를 유지하는 역할을 담당한다.
  • 두 서버에서 사용하는 ccsid값이 같은 byte를 사용해야만 연결이 된다. 1 byte : 819(unix), 437(Windows), 500(Host)
    2 bytes : 970(unix), 949(Windows), 933(Host)