페이지

2017년 12월 9일 토요일

1.4. 첫 번째 애플리케이션-싱글 뷰 컨트롤러(Single View Controller)

- 일반적으로 Swift 가 아닌 Object-C 에서 작성된 아이폰 애플리케이션은 항상 프로젝트의 Supporting Files 폴더에서 자동으로 생성되는 main.m 파일에서 시작한다.

int main(int argc, char *argv[])
{
    @autoreleasepool{
          return UIApplicationMain(argv, argv, nil,
                                                    NSStringFormClass([AppDelegate class]))
    }
}

하지만 Swift 에서는 Object-c 언어의 main.m에 해당하는 main.swift 파일이 존재하지 않는다. 바로 AppDelegate 클래스에서 처리하게 된다.

AppDelegate 클래스를 선언하는  AppDelegate,swift 파일을 보면 다음과 같이 파일 앞쪽에 @UIApplication 서브 클래스를 ㅊ처리하고 이어서 AppDelegate 객체를 생성하게 된다.

import UIKit

@UIApplicationMain
......

즉, 위 코드 하나를 사용하여 UIApplicationMain 함수를 호출하고 이 함수는 다시 내부적으로 UIApplication  객체를 생성하고 AppDelegate 클래스를 호출하게 된다.


AppDelegate 클래스에서는 다음과 같은 func application(application, didFinishLaunchingWithOption) 메소드를 자동으로 호출하는데 이전 xCode 에서는 이메소드에서 스토리 보드 파일의 화면 구성을 처리하였다. 하지만 현재는 단지 "return true"라는 코드가 있을 뿐 다른 아무런 코드가 존재하지 않는다. 그렇다면 어떻게 스토리보드 파일의 화면을 호출 할 수 있을까?

fun application(application: UIApplication, didFinishLauchingWidthOptions
     launchOptions: [NSObject: AnyObject]?) -> Bool {
    //Override point for customization after application launch.
    return true
}

프로그램 탐색기의 Supporting Files 폴더 아래쪽에 있는 Info.plist 파일에서 이 일을 자동으로 처리한다.

-ViewController

import UIKit

class ViewController: UIViewController{
....

@IBOutlet  var textField: UITextField!

@IBAction func clickedCompleted(sender: AnyIbject){
......

참고: @IBOutlet 과 @IBAction 키워드
컴파일 코드에 아무런 여향을 주지 않는 컴파일러 지시자이다. 두 개 보두 현재 선언된 객체 변수가 .storyboard 파일에 지정된 객체 컨트롤과 연결되어 있다는 것을 알려준다.


1.3. Xcode 시작하기

1.3.1. 프로젝트 생성

1.3.1.1. 프로젝트 APP 종류

Xcode 에서 새로운 프로젝트를 사용하기 위해서 Xcode 의 Create a new Xcode project 항목 선택

Choose a template for your new project: 에서 iOS 탭 선택

-Master-Detail App
리스트 형식의 마스터 화면을 보여주고 마스터 화면 중 하나의 항목을 선택하면 디테일 화면으로 이동하고 해당 항목에 대한 자세한 내용을 보여주는 기능을 제공한다. 여기서 다시 백(back)버튼을 선택하면서 다시 이전 마스터 화면으로 이동한다.

-Page-Based App
전자책에서 사용되는 기본적인 기능을 제공하여 원하는 내용을 화면에 표시한다. 또한, 페이지를 넘기는 애니메이션 기능 혹은, 페이지 화면 이동하는 애니메이션 기능 등을 옵션으로 제공하고 있다.

-Single View App
하나의 ViewController 와 하나의 View 화면을 제공하는 가장 일반적인 기능을 제공.

-Tabbed App
탭 바(Tab Bar) 애플리케이션을 생성하고자 할 때 사용된다. 일반적으로 탭 바는 아래쪽에 위치하는데 탭 바에 여러 버튼이 위치하여 버튼을 누를 때마다 화면이 변경되는 기능을 제공해서 한 번에 여러 화면을 사용하고자 할 때 사용

-Game
애플에서 직접 제공하는 게임 프레임워크를 사용하여 게임을 만들고자 할때 사용


여기서는 Single View App 선택 -> Next 버튼 프로젝트 옵션 화면

1.3.1.2. 프로젝트 속성

- Product Name
애프리케이션 이름

-Organization Name
개발자 속한 조직 이름 즉, 회사 이름 혹은, 학교 이름을 지정한다.

-Organization identifier
현재 애플리케이션을 다른 애플리케이션과 구별하기 위한 유일한 이름을 사용한다.
일반적으로 자신 혹은, 회사의 웹사이트 URL 에서 www 를 뺀 이름의 역순으로 표기한다.

-Language
사용하고자 하는 언어(Object-c, Swift)

-Devices
개발하고자 하는 기기이름
아이폰 앱만 개발하고자 한다면 iPhone, 아이패드 앱만 개발하고자 한다면 iPad, 아이폰, 아이패드 둘 모두를 지원하고자 한다면 Universal 을 선택한다.

FirstApp이라는 프로젝트 이름 입력 하고 Language 에는 Swift, Devices 에는 iPhone을 선택한다.

1.3.2. 파일 추가
FirstApp 에서 New File 생성
iOS-Source를 선택 오른쪽의 CoCoa Touch Class 를 선택
이름을 SecondViewController 이름 지정

두 번째 Subclass of 항목은 생성하고자 하는 클래스의 부모클래스를 지정한다.

가운데 위치한 Also create XIB file 체크상자에는 체크하지 않느다.
이 체크상자는 아이폰 앱의 사용자 인터페이스를 담당하는 .xib 파일을 생성하는 기능인데 여기서는 .xib 파일 기능과 비븟한 스토리보드를 사용할 것이므로 체크하지 않도록 한다.
마지막으로 Language 항목에 Swift를 지정하여 Swift  언어를 사용하도록 설정한다.

1.3.3. Xcode 에디터와 에디터 보조 기능 창 표시

에디터는 Xcode의 중앙에 위치하며 항상 나타난다. Xcode 오른쪽 위에 위치한 에디터 선택기는 왼쪽에서 오른쪽으로 표준 에디터, 도움에디터, 버젼 에디터를 선택할 수 있도록 해주고 이어서 왼쪽 탐색기 지역 표시/숨기기, 아래쪽 디버거 지역 표시/숨기기, 오른쪽 유틸리티 지역 표시/숨기기를 처리할 수 있는 버튼 제공.

표준에디터: 일반적으로 소스 코드를 편집할 수 있는 1개의 원도우를 가진 에디터
도움에디터: 2개 원도우를 가진 에디터, 서로 비교하거나 2개의 소스코드를 동시에 작업하거나 스토리보드에서 자동으로 객체 변수를 생성할 때 사용.
버젼 에디터: 동일한 파일을 버전에 따라 2개의 원도우에 각각로드하여 이 파일이 어떤 과정으로 변경되었느닞 그 수정 기록 보관
탐색기 지역: 누를 때마다 왼쪽 탐색기 지역을 표시하거나 숨김
디버거 지역: 누를 때마다 아래쪽 디버거 지여긍ㄹ 표시하거나 숨김
유틸리티 지역: 누를 때마다 오른쪽 유틸리티 지역을 표시하거나 숨김

1.3.4. 스토리보드 파일 및 xib 파일
Xcode 프로젝트 탐색깅는 소스코드 외에 .xib 파일이나 .storyboard 라는 파일을 제공

.xib 파일은 Xcode 초기 때부터 이러한 인터페이스를 담당하여 화면 처리에 사용
Xcode 5.x부터는 기능이 더 확장된 스토리보드 파일(.storyboard)을 사용하여 거의 모든 인터페이스를 담당하고 있다.

프로텍트 탐색기에서 스토리보드 파일을 선택했을 때 도움말, 인스펙터, 라이브러리 등을 제고하는 유틸리티 지역을 사용할 수 있다. 캔버스의 여러 컨트롤을 관할 수 있는 인스펙터(inspector)는 오른쪽 위에 위치하고 여러 컨트롤을 제공하는 라이브러리는 오른쪽 아래에 나타난다.
인스펙터는 그 인스펙터 패인(inspector Pane)위에 위치한 인스펙터 선택 바(inspector Selector Bar)를 사용하여 원하는 인스펙터를 표시할 수 있고 라이브러리 역시 라이브러리 패인(Library Pane)위쪽에 위치한 라이브러리 선택 바(Libary Selector Bar)를 사용하여원하는 라이브러리를 선택할 수 있다.

1.3.4.1. 인스펙터(Inspector)

인스펙터(Inspector)는 주로 캔버스에 위치된 컨트롤과 실제 코드 사이를 연결시키는 기능을 하는데 왼쪽에서 오른쪽으로 File 인스펙터, Quick Help 인스펙터, Identity 인스펙터, Attributes 인스펙터, Size 인스펙터, Connection 인스펙터 등의 위치한다.

File 인스펙터: 프로젝트에서 사용 중인 파일에 대한 이름, 타입, 위치, 인코딩 방법 등을 가지고 있는 메타 파일을 관리한다.

Quick Help 인스펙터: 핸재 소스 안에서 선택된 변수 혹은, 메소드에 대한 설명 혹은, 그 변수, 메소드가 있는 파일 정보를 보여준다.

Identity 인스펙터: 클래스 이름, 참조 정보, 런타임 속성, 라벨 등에 대한 메타 정보를 보여주거나 관리해 준다. 기존 클래스 대신 별도의 클래스로 대치시킬 때 사용된다.

Attributes 인스펙터: 선택된 객체에 대한 속성 즉, 특성화된 기능을 보여주거나 설정할 수 있다.

Size 인스펙터: 선택된 객체애 대한 초기 크기, 위치, 최소 크기, 최대 크기에 대한 정보를 보여주거나 설정 할 수 있다.

Connections 인스펙터: 선택한 객체와 실제 코드 사이를 연결하여 객체 초기화를 자동으로 처리해 준다.


1.3.4.2. 라이브러리

라이브러리는 파일 템플릿 라이브러리(File Template Library), 코드 스니핏 라이브러리(Code Snippet Library), 오브젝트 라이브러리(Object Library), 미디어 라이브러리(Media Library) 등이 있다.

파일 템플릿 라이브러리: Object-c 클래스, C++ 클래스, 헤더 파일, Swift 파일 등 원하는 파일 형태를 생성하고자 할 때 사용

코드 스니핏 라이브러리: 인라인 블록, try/catch 문장 등 원하는 형태의 코드 블록을 자동으로 생성하고자 할때 사용

오브젝트 라이브러리: 버튼(Button), 라벨(Label), 텍스트 필드(Text Field)등 사용자 확면을 자성하고자 할 때 사용.

미디어 라이브러리: 현재 프로젝트에서 사용되는 그림, 아이콘과 같은 리소스 파일을 관리


오브젝트 라이브러리 컨트롤

Label: 글자를 출력할 때 주로 사용

Button: 버튼 생성 컨트롤

Text Field : 텍스트를 입력할 수 있는 상자 컨트롤

Slider: 볼륨과 같이 정해진 크기 안에서 임의의 수만큼 지정할 때 사용 되는 컨트롤

Switch: On/Off 처리할 수 있는 컨트롤

Progress View: 시간이 걸리는 경우 현재 진행 상항을 표시할 수 있는 컨트롤

Page Control: 마치 책의 페이지를 넘기듯이 다음 페이지 혹은, 이전 페이지로 이동할 수 있는 컨트롤

Stepper: 숫자를 증가시키거나 감소시킬 수 있는 컨트롤

Table View: 많은 자룔를 일렬로 표시하여 정리할 수 있는 컨트롤

Map View :지도를 표시할 수 있는 컨트롤

Text View: 텍스트 문자열을 표시할 수 있는 컨트롤

Image View: 이미지 파일(jpg, png)을 표시할 수 있는 컨트롤

Scroll View: 데이터양이 현재 뷰 크기보다 클 경우 스크롤 바를 사용하여 좌, 우 혹은, 위, 아래로 이동할 수 있는 컨트롤

Picker View: 날짜, 혹은, 숫자를 선택할 때 사용되는 컨트롤

1.3.5. 도큐먼트 아웃라인(Document Outline)창

.Storyboard 파일을 선택했을 때 캔버스 왼쪽에 나타나는 창. 현재 스토리보드가 구성되어 있는 컨트롤 구조를 계층화 형태로 노출.



2017년 11월 29일 수요일

데이터 연계 및 통합 기법 요약

1. 데이터 연계 및 통합 유형(동기화 기준)

데이터 연계 및 통합 시 일괄(Batch)작업 또는 비동기식 근접 실시간(Near Real Time)또는 동기식 실시간(Real Time) 방식의 혼요.사용될 수 있다.

일괄 작업 :
- 비실시간 데이터 통합
- 대용량 데이터 대상
- 높은 데이터 조작 복잡성
- 데이터 추출
- 데이터 변형
- 데이터 적재
- CDC(Change data capture)
- 감사 증적
- 웹 서비스/SOA
- 교차 참조
- 데이터 재 처리 허용
- 점대점 데이터 연계
- 자도화 도구 및 자체 개발 SW 혼용

비동기식 실시간 통합
- 근접 실시간(Near Real Time)데이터 통합
- 중간 용량 데이터
- 중간 데이터 조작 복잡성
- 데이터 추출.변형.적재
- CDC(Change data capture)
- Data pooling and DB Streams
- 웹 서비스/SOA
- 감사 증적(audit trail)
- 교차 참조
- 다수 데이터 원천 및 목표 시스템
- 데이터 재 처리 허용
- 자동화 도구 및 자체 개발 SW 혼용

동기식 실시간 통합
- 실시간(Real Time)데이터 통합
- 목표 시스템 데이터 처리 가능시에만 원천 데이터 획득
- 데이터 추출.변형.적재
- 웹 서비스/SOA
- Single transaction integrations
- 단일 트랜잭션 단위 데이터 통합
- 데이터 재처리 불가
- 단일 또는 다수 데이터 원천
- 감사 증적



EAI(Enterprise Application Integration)

1. EAI 개요
EAI(Enterprise Application Integration)는 기업 정보 시스템들의 데이터를 연계.통합하는 소프트웨어 및 정보 시스템 아키텍처 프레임워로서, 기업 또는 기업 간 복수의 이질적 정보 시스템들의 데이터를 연계함으로써 상호 융화 내지 동기화돼 동작하도록 한다.

2. EAI 구현 유형
가. Mediation(intra-communication)
EAI 엔진의 중개자(Broker)로 동작하며, 틀정 정보 시스템 내 데이터 신규 생성 또는 갱신.신규 트랜잭션 완료(Commit)등 유의미한 이벤트 발생을 식별해, 사전 약속된 정보 시스템들에게 그 내용(데이터)을 전달 한다.  Publish/subscribe Model

나. Federation(inter-communication)
EAI 엔진이 외부(고객 또는 파트너)정보 시스템으로부터의 데이터 요청들을 일괄적으로 수령해 필요한 데이터를 전달한다.

3. EAI 기대 효과
- 향후 정보 시스템 개발 및 유지 보수비용 절감 도모
- 기업 업무 정보 시스템들의 지속적 발전 기반 확보
- 협력사.파트너.고객과의 상호 협력 프로세스 연계 발전 기반 확보
-웹 서비스 등 인터넷 비즈니스를 위한 기본 토대

CDC(Change Data Capture)

1. CDC 개요
CDC(Change Data Capture) 는 데이터 베이스 내 데이터에 대한 변경을 식별해 필요한 후선 처리(데이터 전송/공유 등)를 자동화하는 기술 또는 설계 기법이자 구조이다.

가.  Time Stamp on Rows
나.  Version Numbers on Rows
다.  Status on Rows
라.  Time/Version/Status on Rows
마.  Triggers on Tables
바.  Event Programming
사.  Log Scanner on Database

2017년 11월 28일 화요일

ETL(Extraction, Transformation and Load)

1. ETL 구성
- Extraction(추출) : 하나 또는 그 이상의 데이터 원천(Source)들로 부터 데이터 획득
- Transformation(변형): 데이터 클렌징.형식 변환.표준화, 통합 또는 다수 애플리케이션에 내장된 비즈니스 룰 적용 등
- Loading(적재): 위 변형 단계 처리가 완료된 데이터를 특정 목표 시스템에 적재

2. ODS 구성
ODS(Operational Data Store) : 데이터를 추출.통합한 데이터베이스

가. 인터페이스 단계
다양한 데이터 원천(Source)으로부터 데이터를 획득하는 단계
OLEDB(Object Linking and Embedding Database), ODBC(Object Data Base Connectivity), FTP(File Transfer Protocol) 등

나. 데이터 스테이징 단계
원천들로부터 트랜잭션 데이터들이 추출되어 하나 또는 그 이상의 스테이징 테이블에 저장된다.

다. 데이터 프로파일링 단계
- 선행 자료 또는 조건: 데이터 프로파일링 요건
- Step 1: (스테이징 테이블 내 데이터에 대한) 데이터 프로파일링 수행
- Step 2: 데이터 프로파일링 결과 통계 처리
- Step 3: 데이터 품질 보고서 생성 및 공유

라. 데이터 클렌징 단계
- 선행 자료 또는 조건: 데이터 품질 보고서, 데이터 클렌징 요건
- Step 1: 클렌징 스토어드 프로시져 실행(예비 작업)
- Step 2: 클렌징 ETL 도구 실행

마. 데이터 인크그레이션 단계
- 선행 자료 또는 조건: 데이터 클렌징 테이블, 데이터 충돌 판단 요건
- Step 1: 통합 스토어드 프로시저 실행(예비작업)
- Step 2: 통합  ETL 도구 실행

바. 익스포트 단계

3. 데이터 웨어하우스
- 주제 중심(Subject Oriented): 데이터 웨어하우스의 데이터는 실 업무 상항의 특정 이벤트나 업무 항목을 기준으로 구조화 한다.
- 영속성(Non Volatile): 데이터 웨어하우스의 데이터는 최초 저장 이후에는 읽기 전용(Read Only) 속성을 가지며 삭제되지 않는다.
- 통합성(Integrated): 데이터 웨어하우스의 데이터는 기과.조직이 보유한 대부분의 운영 시스템들에 의해 생성된 데이터들의 통합본이다.
- 시계열성(Time Variant):운영 시스템들은 최신 데이터를 보유하고 있지만, 데이터 웨어하우스는 시간순에 의한 이력 데이터를 보유한다.

데이터 웨어하우스의 데이블들은 스타 스키마(Star Schema)또는 스노우 플래이크 스키마(Snow Flake Schema)로 모델링 된다.

가. 스타 스키마
나. 스노우 플래이크 스키마


2017년 11월 27일 월요일

데이터 사이언스

1. 데이터 사이언스의 핵심 구성요소

-Analytics
-IT(Data management)
-비즈니스 분석

데이터 사이언스는 BI(Business Intelligence), BA(Business Analytics)등과 혼용되어 사용되며 상당이 포괄적인 의미를 담고 있다. 데이터 사이언스는 데이터 처리와 관련된 IT 영역들(signal processing, computer programming, data engineering, data warehousing, and high performance computing 등), 분석적 영역들(mathematics, probability models, machine learning, statistics, pattern recognition and learning, uncertainty modeling 등), 그리고 비즈니스 컨설팅의 영역들(communication, presentation, storytelling, visualization 등)을 포괄하고 있다.

2. 데이터 사이언티스트의 요구역량

2.1. Hard Skill
- 빅데이터에 대한 이론적 지시
  : 관련 기법에 대한 이해와 방법론 습득

- 분석 기술에 대한 숙련
 : 최적의 분석 설계 및 노하우 축적

2.2. Soft Skill
- 통찰력 있는 분석
 : 창의적 사고, 호기심, 논리적 비판

- 설득력 있는 전달
 : 스토리텔링, 비주얼라이제이션

- 다분야간 협력
 : 커뮤니케이션

3. 미래 '가치 패러다임'의 변화
Digitalization => Connection => Agency