2009년 10월 11일 일요일

[01] 개요

1.1 작업을 동시에 실행하는 일에 대한 (아주)간략한 역사

동시작업의 필요성이 대두된 몇가지 요인
  • 자원 활용
    프로그램은 때때로 입출력과 같은 외부 동작이 끝나기를 대기하는 경우가 많은데 이 대기시간이 길어지면 자원을 한 프로그램이 지배하게 된다. 매우 비효율적인 방식이므로 자원 분배시 효율성을 위해 동시작업이 필요하다.

  • 공정성
    여러 프로그램은 사용자와 컴퓨터 자원에 대해 동일한 권한을 가질 수 있다. 즉, 한 프로그램이 끝나기를 대기하며 다음 프로그램의 실행을 제약하기 보단 작은 단위로 컴퓨터 자원을 공유하는 것이 더 효율적이다.

  • 편의성
    때때로 여러 작업을 전부 일괄적으로 처리하는 것 보다 각기 일을 하나씩 처리하고 필요할 때 프로그램 간에 조율을 하는 소프트웨어를 여러 개 만드는 개 더 쉽고 효율적이다.

동시작업에 대한 필요성으로 인해 스레드라는 개념이 고안됐다. 스레드는 메모리, 파일 핸들과 같이 프로세스에 할당된 자원을 공유하지만 각기 별도의 프로그램 카운터, 스택, 지역변수를 갖는다. 또한 프로그램을 스레드로 분리하면 멀티 프로세서 시스템에서 자연스럽게 하드웨어 병렬성을 이용할 수 있다.

스레드는 의도적으로 조율하지 않는 한 비동기적으로 실행되며, 자신이 포함된 프로세스의 메모리 주소공간을 공유함으로 프로세스 내 모든 스레드는 같은 변수에 접근하고 같은 힙에 객체를 할당한다. 이 때문에 공유데이터 접근시 적절하게 동기화하지 않으면 다른 스레드가 사용 중인 변수를 순간적으로 수정해서 예상치 못한 결과를 얻을 수도 있다.

1.2 스레드의 이점

(1) 멀티프로세서 활용

멀티프로세서 서버와 PC가 점차 대중화 되는 추세에서 단일 스레드 프로그램은 컴퓨터 자원의 낭비를 초래한다. 프로세서 스케줄링의 기본 단위는 스레드이기 때문에 여러개의 스레드를 사용하는 프로그램은 단일 스레드보다 보다 효율적인 처리를 할 수 있다.

(2) 단순한 모델링

복잡하면서 비동기적인 작업(JOB)을 더 단순하고 동기적인 작업 흐름으로 세분화하여 복잡한 순차작업을 단순화 할 수 있다. 이런 장점은 서블릿이나 RMI와 같은 프레임웍에서 종종 활용된다. 즉 프레임웍에서는 요청관리, 스레드 생성, 로드 밸런싱, 요청분배와 같은 일을 처리하고 서블릿 개발자는 서블릿 개발에만 집중할 수 있다.

(3) 단순한 비동기 이벤트 처리

이벤트 발생시 마다 스레드를 생성 할당하고 동기화를 적절히 수행하면 개발 작업이 쉬워진다.

(4) 더 빨리 반응하는 사용자 인터페이스

GUI 어플리케이션에서 사용자 입력 이벤트를 스레드로 처리하여 더 빨리 반응하는 UI를 개발 할 수 있다.

1.3 스레드 사용의 위험성

스레드가 소수만의 난해한 주제였을 때 병렬 문제는 '고급' 주제였다. 하지만 지금은 개발자라면 대부분 스레드 안정성에 대해 잘 알아야 한다.

(1) 안정성 위해 요소

@NotThreadSafe
public class UnsafeSequence {
private int value;

/** 유일한 값을 리턴해야 한다 **/
public int getNext() {
return value++;
}
}

[예제 1.1] 경제 조건 위험성 코드

상기 코드는 경쟁 조건(race condition)이라고 하는 흔한 위험성을 보여주는 좋은 예제다. 코드가 원하는 유일한 값을 리턴결과가 여러 스레드에서 호출되면 연산이 어떻게 간섭하느냐에 따라 결과가 달라질 수 있는 코드다.

멀티스레드 프로그램이 동작하는 모습을 예측하려면 스레드가 서로 간섭하지 않도록 공유된 변수에 접근하는 시점에 적절하게 조율해야 한다. (자바에서는 공유변수 접근을 조율하기 위한 동기화 수단을 제공한다)

@ThreadSafe
public class Sequence {
@GuardedBy("this") private int value;

public synchronized int getNext() {
return value;
}
}

[예제 1.2] 스레드 안전한 코드

(2) 활동성 위험

멀티스레드를 사용하면 단일 스레드 프로그램에서는 발생하지 않는 활동성(liveness)장애가 생길 수 있다. 안정성은 "잘못된 일이 생기지 않는다"는 것을 뜻하는 반면, 활동성은 "원하는 일이 결국 일어난다"는 보완적인 목표에 관한 것이다. 즉, 어떤 작업이 전혀 진전되지 못하는 상태에 빠질 때 활동성 장애가 발생했다고 한다. 예를 들면 무한 반복문을 생성하여 반복문 다음에 놓인 코드가 절대 실행되지 않는 경우를 들 수 있다. 스레드를 사용하면 활동성 관련 문제의 위험성이 더욱 높아진다. 즉 데드락, 소모상태, 라이브락 등 여러가지 활동성 장애를 일으킬 수 있다. 이런 활동성 장애 오류는 개발 초기에 파악하기가 무척 어렵다.

(3) 성능 위험

성능문제는 형편없는 서비스 시간, 반응성, 처리율, 자원 소모, 규모에 따른 확장성 등 넚은 범위의 문제들을 포괄한다. 또한 멀티 스레드 프로그램은 단일 스레드 프로그램에서 발생할 수 있는 모든 성능 위험뿐만 아니라, 스레드를 사용하기 때문에 생기는 추가 위험에도 노출된다.

스레드를 사용하면 실행 중에 어느 정보 부하가 생기는 것도 사실이다. 스레드가 많은 프로그램에서는 컨텍스트 스위칭이 더욱 빈번하여 상당한 부담이 생기며, 스레드가 데이터를 공유할 때는 동기화 수단도 사용해야 하는데 이 동기화는 컴파일러 최적화를 방해하고, 메모리 캐시를 지우거나 무효화하기도 하며 그 밖에 공유 메모리 버스에 동기화 관련 트래픽을 유발한다. 이런 모든 요인은 성능 측면에서 추가적인 손실을 유발한다.

1.4 스레드는 어디에나

현실에서 거의 모든 자바 프로그램이 멀티스레드로 동작하는 프로그램이고, 외부에서 프로그램 내부의 상태에 접근하는 과정을 적절히 조율하기 않아도 될 만큼의 기본적인 조율 기능을 프레임웍이 담당해 주지는 않는다.

프레임웍은 프로그램 컴포넌트를 호출할 때 프레임웍 내부의 스레드에서 호출하기 때문에 자동으로 프로그램이 스레드를 활용하는 것과 동일한 효괄르 준다. 컴포넌트는 언제나 프로그램 내부의 상태에 접근하기 때문에 해당 상태에 접근하는 모든 코드 경로에 해당하는 컴포넌트 역시 스레드 안전해야 한다.

아래 예시는 외부의 스레드에서 프로그램 코드를 호출하는 예시이다.

  • 타이머 (Timer)
  • 서블릿과 JSP
  • 원격메소드호출 (Remote Method Invocation)
  • 스윙과 AWT

2009년 10월 5일 월요일

[Windows]Windows Vista에서 Telnet 사용하기

0. Windows 비스타에서 Telnet 사용하기

제어판 -> "프로그램 및 기능"을 실행 -> 화면 왼쪽 메뉴 중 가장 밑단의 "Windows 기능사용/사용 안함"을 클릭 -> 여러 목록중 "Telnet Client"를 체크

명령프롬프트에서 start /w pkgmgr /iu:"TelnetClient"를 실행

[01] 개요

1.1 웹어플리케이션 개요
웹어플리케이션이라함은 브라우저를 통해 접근할 수 있는 소프트웨어 응용프로그램으로 통상 서버 측에서 비즈니스 로직을 실행하고, 클라이언트 측에서 웹 브라우저를 이용하여 운용할 수 있는 프로그램을 UI를 구현한다.

그림1. 전형적인 웹어플리케이션의 아키텍처


1.2 보안

[보안의 3요소]
  • 비밀성(Confidentially)
    정보는 소유자가 원하는 대로 비밀이 유지되어야 한다
    허가받지 않은 비인가자나 프로세스에게 정보가 노출되지 않도록 하는 것을 보장한다.
    인가받은 사람만이 정보에 접근할 수 있어야 한다.
    비밀성 보장을 위한 수단에는 접근통제, 암호화 등이 있음

  • 무결성(Integrity)
    비 인가된 자에 의한 정보의 변경, 삭제, 생성을 보호하여 정보의 정확성과 완전성이 보장되게 한다.
    무결성을 통제하기 위한 수단에는 물리적 통제, 접근 통제 등이 있음

  • 가용성(Availability)
    정보시스템은 적절한 방법으로 작동되어야 하며, 정당한 방법으로 권한이 주어진 사용자에게 정보서비스를 거부하여서는 안 된다는 원칙
    가용성 확보를 위한 통제 수단에는 데이터백업, 중복성 유지, 물리적 위협 요소로부터 보호등이 있다.
[보안의 평가 기준]
다음은 대표적인 보안 평가 기준이다.
  • TCSEC (Trusted Computer System Evaluation Criteria)
    Orange Book이라고도 부름
    1985년 미국방부 표준으로 채택된 컴퓨터 시스템 보안성 평가 기준
    다른 나라의 보안성 평가 기준서에 큰 영향을 미침
    등급 : (낮음)D, C1, C2, B1, B2, B3, A(높음)

  • ITSEC (Information Technology Security Evaluation Criteria)
    영국, 독일, 프랑스, 네덜란드 등에서 사용하는 보안성 평가 기준
    등급 : (낮음)E0 ~ E6(높음)

  • CC (Common Criteria)
    국제 공통 평가 기준
    세계 각국의 평가 기준이 상이하여 평가에 비용과 시간에 많이 소요되는 문제점을 해결하기 위함
    등급 : (낮음)EAL0 ~ EAL7(높음)

[보안및해킹 영역]
  • 시스템 보안
    운영체제 취약점 -> 패치 및 업그레이드
    환경설정 취약점 -> 주기적인 감사

  • 네트워크 보안
    네트워크 취약점 -> 방화벽, IDS(Intrusion Detection Systems : 침입탐지시스템), VPN(Virtual Private Network : 가상사설망), IPS(Intrusion Prevention Systems : 침입방지시스템)
    프로토콜 취약점 -> DoS(Denial of Service : 서비스 거부 공격), DDoS(Distributed Dos : 분산서비스 거부 공격), DrDoS(Distributed Reflection DoS : 분산 반사 서비스 거부 공격) 방지

  • 웹보안 (전체 해킹 중 80% 이상 비중 차지함)
    웹서버와 방화벽의 보안을 강화
    개발시 보안을 고려해서 코딩
    DBMS 취약성을 패치를 통해 보안을 강화

[최신 보안 이슈]

  • 키보드보안
    인터넷 뱅킹 및 쇼핑몰의 온라인 거래 시 필수적으로 입력되는 개인정보 유출
    유출시 금융사고로 직결
    사용자의 키보드 입력정보를 도청하는 것을 방지
    사용자 PC에 키보드 보안을 위한 Key device driver 설치
    사용자 Key 입력시 Filter driver나 Hooking driver를 통해 입력 값을 가로채서 암호화한 후 해당 어플리케이션에 전달
    키로거 기술은 키로거에 감염된 컴퓨터를 쓰는 사람들의 키보드 입력을 기록하는 것

  • 파밍(Pharming)
    범죄를 목적으로 하는 해커들이 인터넷 트래픽을 원래 사이트에서 동일해 보이는 다른 사이트로 리다이렉션하여 사용자가 가짜 사이트의 데이터베이스에 사용자 이름과 암호를 입력하도록 하는 수법
    가짜 웹사이트의 사용을 의미하는 파밍은 전자메일 피싱사기와 비슷해 보이나, 사용자의 참가 또는 지식이 전혀 없는 상태에서 가짜 사이트로 리다이렉션 될 수 있다는 점에서 좀 더 교활한 사기 수법
    DNS 서버를 공격하거나 사용자의 host 파일을 공격하여 URL의 IP를  크래커의 IP로 변조

  • 피싱(Phishing)
    개인정보를 낚시하듯  낚아챈다는 뜻에서부터 유래
    AOL 계정 도둑에서 유래 네티즌이 만드는 온라인 백과사전 위키피디아에 따르면 피싱은 1996년 처음 등장, 당시 해커들이 아메리카온라인(AOL)계정을 훔치려고 사용한 수법

[네트워크 보안]

  • DoS 공격
    시스템이나 네트워크의 구조적인 취약점을 공격하여 리소스를 고갈시켜 정상적인 서비스를 지연시키거나 마비시키는 공격
    => 방화벽 설치, IDS 운영, 안정적인 네트워크 설계

  • Spoofing
    사전적으로는 "속이기"라는 의미이며, 다른 시스템의 신뢰관계를 속여 침입하는 해킹기술

  • Sniffing
    컴퓨터 네트워크 상에 흘러 다니는 패킷을 엿듣는 도청과 같은 행위
    => 암호화, 스니퍼탐지

  • Session Hijacking
    클라이언트의 세션을 가로채서 일시적으로 클라이언트 세션을 끊고 세션을 빼앗아 인증을 회피하는 방법
[서버시스템 보안]

  • 슈퍼유저 통제
    슈퍼유저 권한에서 보안관리 권한을 분할하여 보안관리자에게 이관
    슈퍼유저의 로그인 위치 및 로그인 방법 통제
    일반 사용자의 su사용 통제
    슈퍼유저의 권한 중 필요한 부분을 일반사용자에게 이양
    핵심자원에 대한 접근 통제 (프로세스 kill 방지, 핵심파일 접근 통제)

  • 접근통제 강화
    모든 사용자에게 별도의 계정을 할다하여 개인별 책임 추적성 구현
    계정 보호 구현
    => 비 활동성 계정 정리, 임시 계정 발급 및 말소 절차 구현, 패스워드 강화 정책 구현
        반복적인 로그인 시도 통제
    파일 시스템 통제를 강화하기 위해 퍼미션 모드를 세분화 하여 접근 통제 정책을 수립
    백업 오퍼레이터는 특정 시간에 특정 백업 소프트웨어를 사용해서만 전체 시스템 읽을 수 있도록 함
    불필요한 TCP 서비스를 모두 제거하고 포트별로 서비스 대상 네트워크, 호스트, 터미널을 통제
    중요 위반 사항 발생시 감사 로그

  • 로그 보호
    분산되어 있는 시스템 파일들의 변경에 대한 감사 정책을 수립
    특정 로그 파일들은 반드시 관련 프로세스에 의해서만 변경되도록 하여 슈퍼유저 권한으로도 조작 할 수 없도록 통제 정책을 수립
    원척적으로 조작이 불가능한 별도의 감사로그의 운용

  • 관리 강화
    일관된 보안 관리 수준
    직무기반 접근 통제를 수립하여 통제 정책을 구현
    => 반복적인 통제 정책의 수립작업을 피한다.
    서버간 통제 정책의 자동 전파
    로그 필터링 및 라우팅
    => 정책 시뮬레이션 기능을 구현 - 통제 정책의 수립, 시험, 적용
[어플리케이션 보안]

  • 사용자 인증 및 접근 통제
    상호인증, 복합인증의 지원
    => SmartCard, OTP, 인증서 등

  • 권한별 접근 제어
  • 기밀성 유지를 위해 전송중인 데이터 암호화 및 무결성 보장
  • 감사 및 추적을 위한 로그
  • 어플리케이션 개발시 자체적인 취약성으로 발생할 수 있는 불법적인 접근을 차단하기 위해 개발 단계부터 보안 취약성을 고려한 개발
[데이터 보안]

  • 접근제어
    강력한 인증 시스템 필요
    모든 커넥션에 대한 접근 통제

  • 권한관리
    세부적인 권한 제어
    완벽한 통제를 위한 미리 등록된 SQL만 수행이 가능하도록 하는 기능

  • 데이터 암호화
    정보는 모두 암호화하여 저장
    암호화를 풀 수 있는 권한은 DB관리자에게는 주지 않고 보안 담당자만 가능하도록 함
    DB관리자나 시스템 관리자들이 사용하는 모든 툴은 서버와 통신을 할 때 데이터를 암호화

  • 감사
    사고 원인 추적을 위해 DB에서 사용된 SQL을 모두 기록하고 원하는 것을 추출할 수 있어야 함
    보안 규칙 위반시 경고할 수 있어야 함

[경계선 보안]

  • 시설 접근 통제
    잠금 장치

  • 인적 접근 통제
    piggybacking에 대한 예방, 마그네틱 카드
    [piggybacking - 승인된 사용자나 사람이 들어가는 경로를 몰래 같이 들어 가는 것으로 출입문이 열려 있을때 재빨리 들어가는 방법, 또는 전송회선이나 전화선에 인가된 경로로 비 인가된 라인을 연결하여 도청하는 방법 등을 의미]

  • 외부 경계 보호 매커니즘

[물리적 보안]
  • 관리적 통제
    시설선택 또는 건설
    시설관리
    인적 통제
    훈련, 비상 대응 및 절차

  • 기술적 통제
    접근 통제
    침입탐지, 경보, 모니터링
    난방, 통풍, 공기조절 통제
    전력공급
    화재 탐지 및 진압
    백업
    HVAC(Healing, Ventilating, and Air Conditioning)

  • 물리적 통제
    담장
    잠금 장치
    조명, 시설 건축 자재

1.3 인터넷 서비스 구성

[인터넷의 구성요소]

  • WWW (World Wide Web)
    초기 : 정적인 링크를 이동, 정적인 데이터 (HTML 문서)
    현재 : 동적인 데이터의 필요성, 웹을 이용한 데이터 처리
    최신 : Web 2.0 참여와 공유를 통한 정보의 유통

  • Hyper Text
    60년대에 테드 넬슨이 만들어낸 신조어
    다른 문서와 연관관계를 가지는 텍스트를 의미
    하이퍼텍스트를 이용하면, 문서를 읽는 사용자는 단어나 문구를 마우스를 클릭하여 관련제에 대한 정보를 추가로 얻을 수 있다.

  • HTML (Hyper Text Markup Language)
    하이퍼텍스트를 효과적으로 전달하기 위한 언어

  • HTTP (Hyper Text Transfer Protocol)
    웹서버와 웹 브라우저간에 정보를 교환할 목적으로 사용되는 프로토콜

[HTTP Protocol]

  • Stateless Protocol
    이전 상태를 기억하지 못함
    접속을 요청하는 사용자에게 서비스를 제공하고 즉시 세션을 끊음으로써 또 다른 요청을 처리할 수 있는 장점(효율적인 통신이 가능)
    쿠키 또는 세션 정보를 이용하여 사용자의 인증 정보를 유지
    FTP나 Telnet처럼 한번 접속하면 접속을 끊을 때까지 연결된 상태를 유지하는 것이 아니고, 요청이 있을 때 접속을 연결한 다음 응답을 받고 나면 접속을 끊는 프로토콜임

  • HTTP Version
    ▷ HTTP/0.9
    단순한 서버로부터의 읽기 기능만 지원


    ▷ HTTP/1.0
    하나의 문서에 그림이 하나 있더라도 최초 텍스트가 저장된 HTML 문서를 전송 받고 난
            뒤 연결을 끊고, 그림을 받기 위해 다시 연결을 설정 한 후 그림을 전송 받는다.

    ▷ HTTP/1.1
    2001년 공식적으로 출시
    연속된 연결 요청이 있을 경우에 HTML 문서를 받고 난 후 연결을 끊지 않고 바로 그림 파
            일을 요청한다
    HTTP/1.0 에 대해 추가된 내용
    - 계층적이지 않은 프락시 지원
    - 캐시의 지원
    - 부적절한 지속적인 연결과 가상 호스트 통제
    URL 형태
    1.0버전과 다른 가장 큰 특징은 질의를 통해 데이터를 전송하는 것을 지원한다는 것이다.
    동적인 웹 어플리케이션의 주요 부분이긴 하지만 공격의 주요 부분이 되기도 한다. 실제
    로 공격자들이 가장 좋아하는 공격 부분이 이 질의를 하는 부분이다.
[HTTP Request]

  • 구성
    GET http://localhost:8080 HTTP/1.0
    Accept: */*
    Referer: http://localhost:8080/sample/board/List.jsp
    Accept-Language: ko
    Content-Type: application/x-www-form-urlencoded
    Proxy-Connection: Keep-Alive
    User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1
    .4322; InfoPath.2) Paros/3.2.13
    Host:localhost:8080
    Content-length:0
    Pragma: no-chache
    Cookie: JSESSIONID=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

  • Request 메소드
    - GET
       요청받은 정보를 검색해 온다.
       브라우저의 URL 창에 전달 변수 값이 보인다.
       보낼 수 있는 데이터의 크기가 최대 4KB

    - POST
       서버가 동봉된 정보를 받아들이고, 서버에서 동작하도록 하는 요청을 한다.
       URL에 요청 데이터를 기록하지 않고, 소켓을 이용해 데이터를 전송.
       보낼 수 있는 데이터의 크기 제한 없음

    - CONNECT
       HTTP/1.1 추가 요청 방식
       동적 모드로 터널 모드를 교환 할 수 있는 능력을 가진 프록시를 사용한다.

    - DELETE
       HTTP/1.1 추가 요청 방식
       명시된 리소스를 서버가 삭제 할 것을 요청한다. 기본적으로 이 기능은 대부분의 서버에서 비
       활성화 되어 있다.

    - HEAD
       GET 방식과 거의 같지만 요청받은 자료를 되돌려 주지 않는다.
       서버 측의 데이터를 검색하고 요청하는데 사용된다.

    - OPTIONS
       요청 받은 리소스에서 가능한 통신 옵션에 대한 정보를 요청한다.
       만일 "*"가 사용되면 요청받은 리소스는 일반적이라고 여겨지고, 오직 일반적인 것만 허용하
       는 이 요청 방식으로 응답한다.
       예를 들어 "*"를 사용하는 것은 오직 GET, HEAD, OPTIONS, TRACE 요청방식에서만 볼 수
       있다. 그러나 "/"는 모든 요청방식에서 허용한다.
       헤커들의 관점에서 상당히 유용한 정보를 제공해 줌

    - PUT
       내용이 제공되는 리소스에 저장되기를 바라는 요청

    - TRACE
       루프백 메시지를 위한 요청을 송신한다.
       요청은 목적서버로 송신되지만 프록시가 대신 응답하기도 한다.
       클라이언트가 보내는 요구 메시지가 거쳐가는 프록시나 게이트웨이의 중간 경로 및 최종 수
       신 서버까지 이르는 경로를 알아내는 데 쓰인다.

[HTTP Response]

  • 구성
    HTTP/1.1 200 OK
    Server: Apache-Coyote/1.1
    Content-Type: text/html;charset=EUC-KR
    Content-Length: 1866
    Date: Wed, 04 Jun 2008 06:39:03 GMT
    Connection: close

  • HTTP Response Code
    - 100번대 : 정보전송
    - 200번대 : 성공
    - 300번대 : 리다이렉션
    - 400번대 : 클라이언트 측 에러
    - 500번대 : 서버측 에러

[웹 프록시]

HTTP 프록시는 인터넷 사용자가 자신의 IP 주소를 숨김으로써 자신의 온라인 ID를 변장하는 데 사용될 수 있다. 즉, 사용자가 웹 서핑을 익명으로, 일종의 게이트웨이 역할을 수행하여 완전히 익명 사용자의 IP 주소 아래 웹사이트를 방문할 수 있도록 할 수 있다. 그러나 안전하지 않은 HTTP 프록시가 있다. 일부 열려있는 HTTP 프록시들 중에는 불법 복제 시도와 사기 등에 사용자가 노출될 수 있다.

[소개] 멀티 코어를 100% 활용하는 자바 병렬 프로그래밍

——————————————————————————————————————————————
저자 : 브라이언 케츠, 더그 리, 팀 피얼스, 조셉 보우비어, 데이빗 홈즈, 조슈아 블로쉬
역자 : 강철구 출판사 : 에이콘 ISBN : 978-89-6077-048-5
가격 : ₩35,000
——————————————————————————————————————————————
[목차]

펼쳐두기..



[소개] 웹 어플리케이션 보안

——————————————————————————————————————————————

저자 : 허진경, 박승규 출판사 : 연학사
ISBN : 978-89-7000-404-4 가격: ₩18,000
——————————————————————————————————————————————
[목차]

펼쳐두기..


[01] 제1장 이클립스 SWT

제1장 이클립스 SWT

리치 클라이언트의 귀환

21세기로 넘어 오면서 웹 브라우져를 필두로 하여 웹페이지, 웹서버, CGI, 웹 애플리케이션과 같은 thin 클라이언트가 PC의 기본 플랫폼이 되었으며 많은 유지보수이슈와 무거운 동작성이라는 약점을 안고 리치클라이언트는 점점 사라져 갔다.
...
...
그러나 사용자 들은 점점 thin 클라이언트를 사용하면서 빈약한 사용자 체험, 웹 엔트로피의 증가, 다양한 플랫폼 및 다중 웹 브라우저에 대한 지원 부족 등의 문제들과 같은 제약을 뛰어 넘기 위해 DHTML, 자바스크립트, 액티브 X 컨트롤, 플래시가 범람하게 되었으며 이로 인해 thin 클라이언트는 다시 무거워 지기 시작했다.
...
이에 다시 리치 클라이언트가 귀환하게 되었으며, 각각의 비지니스 요구에 따라 thin 클라이언트와 Rich 클라이언트는 상호보완적 관계를 맺게 되었다.

리치 클라이언트 어플리케이션으로 일반적인 특징
  • 내부 인트라넷 애플리케이션 (사용자가 수백, 수천명으로 한정되어 있다.)
  • 폰트, 컬러, 위젯 등 UI에 대한 엄격한 요구사항이 존재
  • 파워유저 및 전문적인 이용자가 사용함으로 단축키 등의 빠른 반응을 필요
  • 매우 큰 데이터 셋을 갖고 있으며, 스크린에 많은 정보를 표시
  • 데스크탑과 다른 데스크탑 어플리케이션을 통합
  • 워크플로 유형 또는 협업 유형의 어플리케이션으로, 오픈라인에서 작업할 수 있는 환경이 중요

이클립스 리치 클라이언트 플랫폼
1. 이클립스 RCP
이클립스를 구성하는 컴포넌트와 이클립스 RCP를 구성하는 컴포넌트

이클립스RCP의 기본적인 구성 컴포넌트


2. 이클립스 RCP 리치 클라이언트 애플리케이션
리치클라이언트의 특징
  • 사용자 편의성을 높인 풍부한 사용자 체험제공
  • 플랫폼 독립적 실행
  • 하부 운영체제의 네이티브 위젯을 사용하여 네이티브 룩앤필을 제공
  • 드래그 & 드롭 기능과 같은 고급 사용자 인터페이스 제공
  • 통합된 업데이트 방식 제공
  • 확장성 제공

3. 이클립스 플러그인 아키텍처
이클립스 플러그인 아키텍쳐


4. 플러그인 vs. 제품

독립 어플리케이션인 스탠드얼론을 이클립스 RCP에서는 제품이라는 호칭으로 불린다.

5. 이클립스 SWT와 JFace

Standard Widget Toolkit는 다중 플랫폼에서 네이티브 리치 클라이언트 어플리케이션을 개발하기 위한 이클립스 컴포넌트로서 일종의 라이브러리이며 JFace는 SWT 코드의 반복과 복잡함을 간단하게 처리할 수 있도록 하기 위해 개발되었다.

이클립스 SWT

[02]제2장 제품 백로그 만들기

제2장 제품 백로그 만들기

제품 백로그는 우선순위가 매겨진 고객이 원하는 것(요구사항)에 대한 목록이며 이 백로그가 스크럼의 핵심이다. 고객이 원한는 것은 다른 말로 스토리 또는 백로그 아이템이라고 부른다.

[01]제1장 들어가는글

제1장 들어가는글

... 스크럼은 방법론이 아니라 프레임워크다. ... 스크럼의 장점이자 단점은 처한 상황에 맞게 융통성을 발휘해야만 한다...

주의
... 이 책에 담긴 모든 것은 나의 개인적이고 주관적인 의견을 반영한 것으로, ...

이 책을 쓴 이유
...'정말로 여러분이 어떻게 해야하는지'... 나의 실전 경험을 풀어놓는다...

그런데 스크럼이 뭐지?

 가을생각 ♬

적지않은 프로젝트를 겪으면서 한두가지 개발방법론을 적용하며 여러 시행착오를 겪었다. 새로운 일을 할때마다 마음가짐을 달리하며 '이번에는 잘해야지!', '이번에는 저번처럼 하지말자!!'라는 각오를 가지며 일을 하지만 매번 시지프스의 바위굴리기처럼 같은 실수를 반복하고 만다. 반복적인 실패는 한개인의 마음가짐의 문제는 아닌것 같다. 이젠 체계적인 방법으로 문제를 해결하는 시각이 필요한 때인것 같다.

[소개] 지속적인 통합 - 소프트웨어 품질을 높이고 위험을 줄이기

——————————————————————————————————————————————

저자 : 폴 M. 듀발, 스티븐 M. 마티야스, 앤드류 글로버 역자 : 최재훈
출판사 : 위키북스 ISBN : 978-89-92939-13-3
가격 : ₩22,000
——————————————————————————————————————————————
[목차]

펼쳐두기..