처음 시작하는 리액트: UI를 위한 자바스크립트 라이브러리 ReactJS

Size: px
Start display at page:

Download "처음 시작하는 리액트: UI를 위한 자바스크립트 라이브러리 ReactJS"

Transcription

1 114 처음 시작하는 리액트 UI를 위한 자바스크립트 라이브러리 ReactJS 톰 핼럿, 리차드 펠드만, 시몬 회벡, 칼 미켈슨, 존 비비, 프랑키 반야르디 지음 / 곽현철, 김훈민 옮김

2 114 처음 시작하는 리액트 UI를 위한 자바스크립트 라이브러리 ReactJS 톰 핼럿, 리차드 펠드만, 시몬 회벡, 칼 미켈슨, 존 비비, 프랑키 반야르디 지음 / 곽현철, 김훈민 옮김 이 도서는 Developing a React Edge(BLEEDING EDGE PRESS)의 번역서입니다

3 표지 사진 김재영 이 책의 표지는 김재영 님이 보내 주신 풍경사진을 담았습니다. 리얼타임은 독자의 시선을 담은 풍경사진을 책 표지로 보여주고자 합니다. 사진 보내기 처음 시작하는 리액트 UI를 위한 자바스크립트 라이브러리 ReactJS 초판발행 2015년 10월 31일 지은이 톰 핼럿, 리차드 펠드만, 시몬 회벡, 칼 미켈슨, 존 비비, 프랑키 반야르디 / 옮김이 곽현철, 김훈민 / 펴낸이 김태헌 펴낸곳 한빛미디어(주) / 주소 서울시 마포구 양화로 7길 83 한빛미디어(주) IT출판부 전화 / 팩스 등록 1999년 9월 30일 제 호 ISBN / 정가 17,000원 총괄 배용석 / 책임편집 김창수 / 기획 편집 김상민 디자인 표지/내지 여동일, 조판 최송실 마케팅 박상용, 송경석 / 영업 김형진, 김진불, 조유미 이 책에 대한 의견이나 오탈자 및 잘못된 내용에 대한 수정 정보는 한빛미디어(주)의 홈페이지나 아래 이메일로 알려주십시오. 한빛미디어 홈페이지 / 이메일 ask@hanbit.co.kr Published by HANBIT Media, Inc. Printed in Korea Copyright c 2015 HANBIT Media, Inc. Authorized Korean translation of the English edition of Developing a React Edge, ISBN c 2014 Frankie Bagnardi, Jonathan Beebe, Richard Feldman, Tom Hallett, Simon Højberg, and Karl Mikkelsen. This translation is published and sold by permission of Bleeding Edge Press, Inc., which owns or controls all rights to publish and sell the same. 이 책의 저작권은 블리딩 엣지 프레스 사와 한빛미디어(주)에 있습니다. 지금 하지 않으면 할 수 없는 일이 있습니다. 책으로 펴내고 싶은 아이디어나 원고를 메일(ebookwriter@hanbit.co.kr)로 보내주세요. 한빛미디어(주)는 여러분의 소중한 경험과 지식을 기다리고 있습니다.

4 저자 소개 지은이_ 톰 핼럿 샌프란시스코에 위치한 실시간 비디오 플랫폼인 Tout.com의 Ruby/JavaScript 시니어 엔지니어이다. Jasmine을 이용한 React 애플리케이션 테스트를 도와주는 Jasmine-react의 제작자이기도 하다. 수중 폴로를 좋아하고, 아내와 아들과 함께 시 간을 보낸다. 지은이_ 리차드 펠드만 샌프란시스코에 있는 교육 기술 회사인 NoRedInk에서 리드 프론트엔드 엔지니어로 일하고 있다. 함수형 프로그래밍의 지지자이자, 강연자다. 일반적인 JavaScript 객체 와 배열에 하위호환성을 갖는 이뮤터블 데이터 구조를 제공하는 오픈 소스 라이브러 리인 seamless-immutable의 제작자이기도 하다. 지은이_ 시몬 회벡 로드아일랜드주 프로비던스에 위치한 Swipely에서 시니어 UI 엔지니어로 일하고 있 다. 프로비던스 JS 밋업 그룹의 공동주최자이고, 보스턴의 Startup Institute에서 JavaScript를 가르치기도 했다. JavaScript를 이용한 기능적 유저 인터페이스를 만 들고, cssarrowplease.com 같은 사이드 프로젝트에 시간을 할애하고 있다. 지은이_ 칼 미켈슨 LockedOn에서 시니어 PHP / JavaScript 엔지니어로 일하면서 아름답고 강력한 부동산 소프트웨어를 만들고 있다. Karl은 새로운 기술에 대한 열정이 있고, 새로운 방법으로 일하기 위해 공부하는 것을 즐긴다. 자신의 웹사이트인 karlmikko.com에 서 그를 찾을 수 없다면, 아내와 함께 암벽등반을 하고 있거나 커피를 즐기고 있을 것 이다.

5 지은이_ 존 비비 Dave Ramsey의 디지털 개발 팀에서 애플리케이션을 개발하고 있다. 웹과 ios를 위해 사용자를 대하는 기술에 집중하고 있다. Final Cut Pro와 Motion에 사용하는 플러그인과 PHP 웹서비스를 만들기도 했다. Beebe가 예술과 코드에 관한 언어를 섞 는 날은 좋은 날이다. 그는 독서광이고, 사진을 좋아하며, 매일 아내의 기대 이상을 달 성하기 위해 노력하고 있다. 지은이_ 프랑키 반야르디 여러 고객들을 위해 사용자 경험을 만드는 시니어 프론트엔드 개발자이다. 여가시간은 StackOverflow (FakeRainBrigand)와 IRC (GreenJello)에 올라오는 질문에 답 해주는 한편 작은 프로젝트도 즐겨한다.

6 역자 소개 옮긴이_ 곽현철 현재 NHN Technology Services UIT 개발실에서 근무하고 있습니다. 옮긴이_ 김훈민 자바 개발자로 입문해서 현재는 NHN Technology Services 프론트엔드 개발팀에 서 Ajax UI 개발자로 근무하고 있습니다. 블로그를 운영하고 있으 며, 항상 "왜?"라는 질문을 던지려 애쓰는 중입니다.

7 역자 서문 이 책의 원서는 React v ~v.0.12를 기준으로 쓰였다. Github 저장소에 있는 샘플 예제 코드는 React v 을 사용한다. 이 책을 번역하는 현재( ) 안정화된 가장 최신 버전은 v 으로, 버전이 올라가면서 인터페이스나 정책이 바뀐 부분이 있어 책에 나와 있는 내용을 최신 버전에 그대로 적용할 수 없는 경우가 있다. 독자의 혼란을 막기 위해 최신 버전에서 호환되지 않는 부분마다 역주를 추가하 고, 부록으로 릴리즈 노트를 수록할 예정이다.

8 들어가며 React는 무엇이고 왜 써야 할까? React는 Facebook에서 내부적으로 개발한 JavaScript 라이브러리로 2013년에 오픈 소스로 공개되었다. 웹에서 상호작용하는 사용자 인터페이스를 만들기 위한 라 이브러리이다. React는 브라우저 DOM을 다루는 새로운 방법을 소개했다. 확장성과 새로운 기능의 개발을 위해 수동으로 DOM을 갱신하고 어렵게 각 상태를 추적하는 노력은 이제 옛날 이야기가 되었다. React는 매우 새로운 방법으로 DOM을 다룬다. 아무 때나 선언적으로 사용자 인터 페이스를 정의할 수 있다. React는 데이터가 변경되었을 때 어떤 부분의 DOM을 갱 신할 지 신경 쓰지 않는다. 언제든지 최소한의 DOM 수정에 의해 전체 애플리케이션 을 재렌더링한다. 이 책에서 얻을 수 있는 것 React는 현재의 방법들에 도전하는 새롭고 흥미로운 개념을 소개한다. 이 책은 이런 모든 개념을 살펴보고, 이런 개념들이 유용한 이유를 설명해준다. 단일 페이지 애플리 케이션 SPAs, Single Page Applications 을 만드는 데 특히 도움이 될 것이다. React는 애플리케이션의 view 에만 집중한다. 서버 통신이나 코드 조직에는 전혀 관심을 갖지 않는다. 이 책에서는 React를 이용해서 완전한 애플리케이션을 만들기 위한 모범 예제와 대체 도구도 설명한다. 이 책을 읽기 위해 알아야 할 것 이 책의 내용을 이해하기 위해서는 JavaScript와 HTML를 다뤄본 경험이 있어야 한 다. 프레임워크의 종류와 상관없이 단일 페이지 애플리케이션을 다뤄본 경험이 있다

9 면 더욱 도움이 될 것이다. 물론 필수적인 것은 아니다. 소스 코드와 예제 애플리케이션 이 책에서는 예제 애플리케이션으로 설문조사 생성기 Survey Builder 를 인용한다. 전체 코 드는 Github의 저장소 확인할 수 있다.

10 한빛 리얼타임 한빛 리얼타임은 IT 개발자를 위한 전자책입니다. 요즘 IT 업계에는 하루가 멀다 하고 수많은 기술이 나타나고 사라져 갑니다. 인 터넷을 아무리 뒤져도 조금이나마 정리된 정보를 찾기도 쉽지 않습니다. 또한, 잘 정리되어 책으로 나오기까지는 오랜 시간이 걸립니다. 어떻게 하면 조금이라 도 더 유용한 정보를 빠르게 얻을 수 있을까요? 어떻게 하면 남보다 조금 더 빨 리 경험하고 습득한 지식을 공유하고 발전시켜 나갈 수 있을까요? 세상에는 수 많은 종이책이 있습니다. 그리고 그 종이책을 그대로 옮긴 전자책도 많습니다. 전자책에는 전자책에 적합한 콘텐츠와 전자책의 특성을 살린 형식이 있다고 생 각합니다. 한빛이 지금 생각하고 추구하는, 개발자를 위한 리얼타임 전자책은 이렇습니다. 1 ebook First - 빠르게 변화하는 IT 기술에 대해 핵심적인 정보를 신속하게 제공합니다 500페이지 가까운 분량의 잘 정리된 도서(종이책)가 아니라, 핵심적인 내용을 빠르게 전달하기 위해 조금은 거칠지만 100페이지 내외의 전자책 전용으로 개발한 서비스입 니다. 독자에게는 새로운 정보를 빨리 얻을 기회가 되고, 자신이 먼저 경험한 지식과 정보를 책으로 펴내고 싶지만 너무 바빠서 엄두를 못 내는 선배, 전문가, 고수 분에게 는 좀 더 쉽게 집필할 수 있는 기회가 될 수 있으리라 생각합니다. 또한, 새로운 정보 와 지식을 빠르게 전달하기 위해 O'Reilly의 전자책 번역 서비스도 하고 있습니다. 2 무료로 업데이트되는 전자책 전용 서비스입니다 종이책으로는 기술의 변화 속도를 따라잡기가 쉽지 않습니다. 책이 일정 분량 이상으 로 집필되고 정리되어 나오는 동안 기술은 이미 변해 있습니다. 전자책으로 출간된 이 후에도 버전 업을 통해 중요한 기술적 변화가 있거나 저자(역자)와 독자가 소통하면서 보완하여 발전된 노하우가 정리되면 구매하신 분께 무료로 업데이트해 드립니다.

11 3 4 독자의 편의를 위해 DRM-Free로 제공합니다 구매한 전자책을 다양한 IT 기기에서 자유롭게 활용할 수 있도록 DRM-Free PDF 포맷으로 제공합니다. 이는 독자 여러분과 한빛이 생각하고 추구하는 전자책을 만들 어 나가기 위해 독자 여러분이 언제 어디서 어떤 기기를 사용하더라도 편리하게 전자 책을 볼 수 있도록 하기 위함입니다. 전자책 환경을 고려한 최적의 형태와 디자인에 담고자 노력했습니다 종이책을 그대로 옮겨 놓아 가독성이 떨어지고 읽기 어려운 전자책이 아니라, 전자책 의 환경에 가능한 한 최적화하여 쾌적한 경험을 드리고자 합니다. 링크 등의 기능을 적극적으로 이용할 수 있음은 물론이고 글자 크기나 행간, 여백 등을 전자책에 가장 최적화된 형태로 새롭게 디자인하였습니다. 앞으로도 독자 여러분의 충고에 귀 기울이며 지속해서 발전시켜 나가겠습니다. 지금 보시는 전자책에 소유 권한을 표시한 문구가 없거나 타인의 소유권한을 표시한 문구가 있다면 위법하게 사용하고 있을 가능성이 큽니다. 이 경우 저작권법에 따라 불이익을 받으실 수 있습니다. 다양한 기기에 사용할 수 있습니다. 또한, 한빛미디어 사이트에서 구매하신 후에는 횟수와 관계없이 내려받으 실 수 있습니다. 한빛미디어 전자책은 인쇄, 검색, 복사하여 붙이기가 가능합니다. 전자책은 오탈자 교정이나 내용의 수정 보완이 이뤄지면 업데이트 관련 공지를 이메일로 알려 드리며, 구매하 신 전자책의 수정본은 무료로 내려받으실 수 있습니다. 이런 특별한 권한은 한빛미디어 사이트에서 구매하신 독자에게만 제공되며, 다른 사람에게 양도나 이전은 허 락되지 않습니다.

12 차례 chapter 1 React 소개 배경 개요 019 chapter 2 JSX JSX는 무엇인가? Benefits of JSX? 컴포넌트 조합 JSX와 HTML의 차이점 JSX를 사용하지 않는 경우의 React JSX 공식 스펙 044 chapter 3 컴포넌트 라이프사이클 라이프사이클 메소드 초기화 실행시 분해와 정리 안티 패턴: 상태에 계산값 사용 정리 055

13 chapter 4 데이터 흐름 Props PropTypes getdefaultprops State state와 props에는 어떤 값을 저장해야 할까? 정리 063 chapter 5 이벤트 처리 이벤트 핸들러 연결하기 이벤트와 상태 상태에 따른 렌더링 상태 변경하기 이벤트 객체 정리 073 chapter 6 컴포넌트 구성 HTML 확장 예제 부모 컴포넌트와 자식 컴포넌트의 관계 정리 084

14 chapter 7 믹스인 믹스인은 무엇인가? 정리 091 chapter 8 DOM 조작 React를 통한 DOM 노드 접근 React 외의 라이브러리 포함하기 부모 엘리먼트에 영향을 주는 플러그인 다루기 정리 100 chapter 9 폼 비제어 컴포넌트 제어 컴포넌트 폼 이벤트 레이블 textarea와 select 체크박스와 radio 버튼 폼 엘리먼트 이름 여러 개의 폼 엘리먼트에 change 핸들러 사용 커스텀 폼 컴포넌트 포커스 사용성 정리 129

15 chapter 10 애니메이션 CSS 트랜지션 그룹 트랜지션 그룹 사용 시 주의점 인터벌 렌더링 정리 137 chapter 11 성능 개선 shouldcomponentupdate Immutability Helpers 애드온 속도 저하 원인 찾기 Key 정리 146 chapter 12 서버 사이드 렌더링 렌더링 함수 서버 사이드 컴포넌트 라이프사이클 정리 157 chapter 13 React 패밀리 Jest Immutable.Map Flux 정리 167

16 chapter 14 개발 도구 빌드 도구 Browserify Webpack Webpack과 React 디버깅 도구 정리 179 chapter 15 테스트 시작하기 첫 번째 명세 : 렌더링 모의 컴포넌트 함수를 스파이 객체로 만들기 이벤트 시뮬레이션 finder 메소드로 컴포넌트 탐색하기 믹스인 <body>에 렌더링 하기 서버 사이드 테스트 브라우저 테스트 자동화 정리 244

17 chapter 16 설계 패턴 라우팅 Om(ClojureScript) Flux 정리 261 chapter 17 그밖의 사용법 데스크톱 게임 HTML 이메일 차트 정리 279

18 chapter 1 React 소개 1.1 배경 웹 애플리케이션이 막 등장한 시절에는 클라이언트가 페이지 전체를 서버에 요청 하는 방식으로만 웹 애플리케이션을 개발할 수 있었다. 이렇게 개발한 애플리케이 션은 브라우저에서 일어나는 이벤트를 처리할 필요가 없었기 때문에 구조가 아주 단순했다. PHP 같은 언어를 사용하면 이런 형태의 애플리케이션을 쉽게 만들 수 있었다. 기 능 PHP로 컴포넌트 functional components 를 만들면, 재사용성과 가독성이 높은 코드 를 쉽게 작성할 수 있었고, PHP는 이런 단순함 덕에 많은 인기를 얻었다. 하지만 이 방식으로는 사용자에게 멋진 경험을 줄 수 없었다. 사용자가 무언가를 할 때마다 매번 서버에 요청을 보내고 응답을 기다려야 했다. 심지어 서버로부터 응답이 오면 지금까지 페이지에서 사용자가 작업한 내용은 모두 날아가 버렸다. 더 나은 사용자 경험을 제공하기 위해서 사람들은 브라우저에서 애플리케이션을 렌더링하는 JavaScript 기반 라이브러리를 만들기 시작했다. 단순한 HTML 템플 릿부터 애플리케이션 전체를 제어하는 시스템까지, 다양한 방법으로 DOM을 제어 하는 라이브러리가 등장했다. 다양한 JavaScript 라이브러리를 이용하면서 애플리 케이션은 점점 더 크고 복잡해졌다. 길게 헝클어진 실처럼 꼬여있는 이벤트로 무장 한 애플리케이션의 동작을 설명하기란 쉽지 않다. 그래서 앞에서 이야기한 PHP의 1 React 소개 - 017

19 경우에 비해, 요즘의 클라이언트 애플리케이션은 만들기가 매우 어려워졌다. React는 Facebook이 사용하는 PHP프레임워크인 XHP를 대체하기 위해 시 작되었다. PHP 프레임워크인 XHP는 새로운 요청이 들어올 때마다 전체 페이지 를 렌더링한다. 이 작업을 클라이언트에서 처리하기 위해 React가 탄생했다. React는 기본적으로 복잡한 상태 변화를 잘 관리할 수 있게 해주는 상태 시스템 state machine 이다. React의 관심사는 오직 두 가지다. 1. DOM 업데이트 2. 이벤트 응답 React는 Ajax, 라우팅, 저장소, 데이터 구조에 관심이 없으며 MVC Model-View- Controller 프레임워크가 아니다. 굳이 MVC를 가지고 이야기하자면, MVC에서 V 를 담당한다고 볼 수 있다. 가벼운 React는 다양한 시스템에 자유롭게 어울릴 수 있다. 실제로 몇몇 인기 있는 MVC 프레임워크가 View를 렌더링할 때 React를 사용한 적이 있다. JavaScript로 DOM을 가져오고 갱신하는 작업은 느리기 때문에, 상태가 바뀔 때마다 페이지 전체를 렌더링하는 애플리케이션은 성능이 떨어질 수밖에 없다. React는 가상 DOM virtual DOM 을 이용해서 DOM을 읽지 않고 갱신할 수 있는 아 주 강력한 렌더링 시스템을 가지고 있다. React의 핵심은 렌더링 함수다. 이 함수는 현재의 상태 값을 결과 페이지를 나타 내는 가상 표현 객체 virtual representation 로 변환한다. 마치 고성능 3D 게임 엔진 같다. 상태 변경을 감지한 React는 이 함수를 실행해서 새로운 가상 표현 객체를 만든 다음에 이것을 DOM에 전달해 새로운 상태를 반영한다. 언뜻 보면, JavaScript가 필요할 때 개별 요소를 갱신하는 것보다 느릴 것 같다. 하지만 React는 현재의 가상 표현 객체와 새로운 가상 표현 객체의 차이를 아주 018 -

20 효과적으로 비교하는 알고리즘을 가지고 있다. 이 알고리즘을 이용해서 DOM을 최소한으로 변경한다. 리플로우 reflow 나 불필요한 DOM 조작 mutation 같이 흔한 성능 저해 요소를 최소화 함으로써 성능을 끌어올린다. 인터페이스가 커질수록, 하나의 상호 작용 interaction 이 다른 상호 작용을 연쇄적으 로 부르는 경우가 많아진다. 이런 연쇄 호출을 적절히 처리하지 않으면 애플리케 이션의 성능이 급격히 떨어진다. 심지어, 최종 상태에 도달할 때까지 같은 DOM 엘리먼트를 몇 번이고 다시 변경하는 경우도 있다. React 가상 표현 객체는 단일 패스에서 최소한의 변경을 수행함으로써 이런 문제 를 최소화한다. 이를 통해 애플리케이션의 유지보수성도 높인다. 사용자 입력이나 외부의 변경에 의한 상태 변화가 있다는 사실을 React에게 알려주기만 하면 나머 지는 React가 알아서 처리한다. 개발자가 프로세스를 세세히 관리할 필요가 없다. React는 모든 이벤트를 하나의 이벤트 핸들러에 위임 delegate 함으로써 이벤트 핸 들러가 여러 개일 때 발생할 수 있는 성능 저하의 위험을 줄인다. 이 책에서 사용하는 설문조사 생성기 Survey Builder 예제는 Github 저장소( github.com/backstopmedia/bleeding-edge-sample-app)에서 자세히 볼 수 있다. 1.2 개요 이 책은 React를 이용한 최신 개발 기법을 크게 네 가지 주제로 나눠서 다룬다. 컴포넌트 생성 및 구성 1장부터 7장까지는 React 컴포넌트를 생성하고 구성하는 방법을 설명한다. 여 기에서는 React 사용방법을 배운다. 1 React 소개 - 019

21 1) React 소개 1장은 배경과 이 책의 전체 개요를 설명하고 React를 소개한다. 2) JSX와 기본 React 구성요소 사용하기 JSXJavaScript XML를 이용하면 JavaScript 코드 안에 XML 스타일의 문법 코드를 작성할 수 있다. JSX를 사용하는 방법과 이를 이용해서 기본적인 React 컴포넌트를 만드는 방법을 학습한다. React 컴포넌트를 개발할 때 반드시 JSX를 같이 사용해야 하는 것은 아니지만, 권장하고 싶은 방법이라는 생각에 이 책에 있 는 대부분의 예제는 JSX를 사용해서 작성했다. 3) React 구성요소의 라이프 사이클 React는 렌더링 과정 중에 자주 컴포넌트를 생성하고 제거하며, 컴포넌트 라이 프 사이클에 접근할 수 있는 다양한 함수를 제공한다. 이 라이프 사이클을 잘 이해 하면 애플리케이션 메모리 누수를 방지할 수 있다. 4) React의 데이터 흐름 React가 컴포넌트 트리에 데이터를 어떻게 전달하는지, 어떤 데이터를 변경해도 안전한지 잘 알아둬야 한다. React는 속성props과 상태state를 아주 분명하게 구분한다. 이 장은 속성과 상태가 무엇인지 알아보고, 컴포넌트 개발 시에 이 둘을 제대로 사용하는 방법을 설명한다. 5) 이벤트 핸들링 React의 이벤트 처리는 선언적이다. 이벤트 처리는 동적 UI 를 구성하는 데 중요 하므로 완벽하게 익히는 게 좋다. 다행히 React를 이용하면 이벤트 처리를 아주 간단하게 할 수 있다. 6) 컴포넌트의 구성 React를 이용하면 특정 작업을 수행하는 작지만 정교한 컴포넌트를 만들 수 있 020 -

22 다. 이렇게 만든 컴포넌트를 구성해서 오케스트레이션 레이어 orchestration layers01 를 만 든다. 이 장은 한 컴포넌트가 다른 컴포넌트를 사용하는 방법을 설명한다. 7) React 믹스인 여러 React 컴포넌트가 사용하는 공통 기능을 공유하는 방법인 믹스인을 사용하 면 컴포넌트를 더 작게 만들 수 있어서 관리하기 편하다. 고급 주제 기본을 배웠으니 이제 더 수준 높은 주제로 넘어간다. 8장부터 13장까지 React 개발 기술을 연마하여 더 훌륭한 React 컴포넌트를 만들어 본다. 8) React에서 DOM에 접근하기 기존 JavaScript 라이브러리를 사용하거나 컴포넌트를 더 깊게 제어하기 위해서 때로는 React 가상 DOM이 아닌 진짜 DOM을 이용해야 할 때가 있다. 이 장은 안전하게 DOM에 접근할 수 있는 React 컴포넌트의 라이프 사이클이 어디인지, DOM 제어를 언제 해제하여 메모리 누수를 막아야 하는지를 설명한다. 9) React로 폼 요소 다루기 HTML 폼 엘리먼트는 사용자 입력을 받는 대표적인 방법이다. HTML 폼 엘리먼 트는 상태를 갖는다. React를 이용하면 놀라운 방법으로 폼의 상태를 React 컴 포넌트에 전달할 수 있다. 10) 애니메이션 CSS를 이용하면 고성능 애니메이션을 만들 수 있다. React는 CSS 애니메이션 처리를 도와준다. 이 장은 React를 이용해서 CSS 애니메이션을 처리하는 방법 을 설명한다. 01 역자주_ 소프트웨어 개발에서 오케스트레이션 레이어(Orchestration Layer, OL)는 모델링한 데이터 요소 와 기능을 구체화하는 추상 레이어를 말한다. 작게 나눈 React 컴포넌트를 실제 제품에 적용하기 위해서는 개 별 컴포넌트가 서로 조화롭게 동작하여 하나의 콘텐츠를 표현할 수 있게 제어하는 단계가 필요하다. 이 책에서 말하는 오케스트레이션 레이어는 이 단계를 의미한다. 1 React 소개 - 021

23 11) 성능 개선과 컴포넌트 React 가상 DOM은 뛰어난 성능을 보여주지만, 언제나 그렇듯이 개선할 부분이 있다. React는 변경이 없는 컴포넌트를 브라우저가 다시 렌더링 하는 것을 막음 으로써 애플리케이션의 속도를 비약적으로 높인다. 12) 서버 사이드 렌더링 많은 애플리케이션이 SEO를 적용한다. React는 Node.js처럼 브라우저가 아닌 환경에서도 문자열로 렌더링 할 수 있다. 서버 측 렌더링을 이용하면 애플리케이 션의 시작 페이지 로딩 시간을 줄일 수 있다. 서버와 클라이언트 렌더링 방식을 함 께 사용하는 것은 어려울 수 있다. 이 장에서는 두 가지 렌더링 방식을 함께 적용 하는 전략을 설명하고, 서버 측 렌더링을 처리할 때 발생할 수 있는 복잡한 상황을 자세히 알아본다. 13) React패밀리의 다른 JavaScript 라이브러리 사용하기 Facebook은 React 외에도, React와 함께 사용할 수 있는 여러 오픈 소스 개발 도구를 계속해서 공개하고 있다. 이 장을 학습하면 이런 라이브러리를 React 패 밀리에 잘 적용하기 위한 통찰을 얻을 수 있다. React를 위한 도구 다루기 React는 뛰어난 개발, 테스트 도구를 제공한다. 이 도구를 사용하면 견고한 애플 리케이션을 만들 수 있다. 14, 15장에서 개발자 도구와 테스트 방법을 알아본다. 14) 개발자 도구 React 애플리케이션의 규모가 커지면 배포를 위해 코드 패키징 과정을 자동화 할 필요가 있으며 코드 디버깅이 점점 어려질 것이다. 이 장에서는 이런 고민을 덜 어주는 React 애플리케이션 패키징 도구를 살펴본다. 그리고 보다 쉬운 디버깅을 위해 구글 크롬 플러그인으로 React 컴포넌트를 시각화하는 방법도 알아본다

24 15) React를 위한 테스트 코드 작성하기 애플리케이션의 규모가 점점 커지는 상황에서, 기존 코드에 버그를 추가하지 않으 려면 테스트 코드를 작성하는 것이 좋다. 테스트 코드는 더 나은 모듈화 코드를 작 성하는 데 도움이 된다. 이 장에서는 React 컴포넌트의 모든 부분을 테스트하는 방법을 알아본다. React 활용하기 마지막 장은 React를 활용하는 데 있어서 중요한 부분을 살펴보고, 미처 생각해 보지 못한 다른 사용 사례를 설명한다. 16) Architectural patterns React는 MVC 중에서 V 만을 제공한다. 그래서 다른 프레임워크나 시스템에 매우 유연하게 적용할 수 있다. 이 장은 React를 이용해서 규모가 큰 애플리케이 션을 설계하는 과정을 설명한다. 17) React의 다른 사용 사례 React는 웹 환경에 초점을 맞추고 있지만, 웹이 아니더라도 JavaScript를 지원 하는 환경이라면 어디든 사용할 수 있다. 이 장에서는 전통적인 웹 환경이 아닌 곳 에서 React를 사용하는 방법을 알아본다. 1 React 소개 - 023

25 024 -

26 chapter 2 JSX React는 템플릿이나 표현 로직 대신 컴포넌트 개념을 이용하여 관심사를 분리한 다. 기본적으로 React는 마크업과 마크업 생성 코드를 함께 묶어둔다는 사실을 알아야 한다. 이렇게 하면 마크업 코드를 작성할 때 어색하고 무거운 템플릿 언어 를 사용할 필요가 없기 때문에 JavaScript의 표현력을 극대화 할 수 있다. React는 선택적으로 사용할 수 있는, HTML과 유사한 스타일의 마크업 언어를 지원한다. 자세히 알아보기 전에 먼저 봐두면 좋을 게 있다. JavaScript에 마크 업 코드를 작성하는 스타일을 좋아하지 않는다거나 JSX가정말 유용한지 잘 모르 겠다면, 아래에 나열한 장점을 한 번 읽어보길 바란다. 익숙한 마크업을 이용해서 엘리먼트를 트리 구조로 만들 수 있다. 더 의미가 잘 드러나고, 더 이해하기 쉬운 마크업을 제공한다. 애플리케이션의 구조를 더 쉽게 시각화 할 수 있다. React 엘리먼트 생성을 추상화한다. 마크업과 마크업을 생성하는 코드를 함께 둘 수 있다. 순수 JavaScript다. 이번 장에서 JSX의 장점과 사용법을 알아보고 HTML과 다르게 유의해야 할 점 을 알아본다. 반드시 JSX를 사용해야 하는 것은 아니라는 사실을 명심하자. JSX 를 사용하고 싶지 않다면 이 장의 끝에 있는 JSX 없이 React를 사용하는 방법을 설명하는 부분만 보고 넘어가도 좋다. 2 JSX - 025

27 2.1 JSX는 무엇인가? JSX는 JavaScript XML의 약자다. React 컴포넌트에서 사용할 마크업을 작성하기 위한 문법체계로 XML과 유사하다. JSX를 사용하지 않아도 상관없지만, JSX를 사 용하면 컴포넌트 가독성을 높일 수 있기 때문에 JSX를 사용할 것을 추천한다. JSX를 사용하지 않고 헤더를 생성하는 함수를 호출하는 예를 보자. // v0.11 React.DOM.h1({className: 'question'}, 'Questions'); // v0.12 React.createElement('h1', {classname: 'question'}, 'Questions'); JSX를 사용하면 이 코드를 훨씬 더 익숙하고 간결한 마크업으로 만들 수 있다. <h1 classname="question">questions</h1> JavaScript 코드 안에 마크업 코드를 작성하는 이전 방식과 비교해보면 JSX의 특징을 알 수 있다. 1. JSX는 변환되는 구문이다. 각 JSX 노드는 JavaScript 함수에 대응한다. 2. JSX는 런타임 라이브러리를 제공하지 않으며 필요로 하지도 않는다. 3. JSX는 JavaScript의 의미를 변경하거나 새로운 의미를 추가하지 않는다. 함수를 호출할 뿐이다. JSX가 HTML과 유사하다는 점이 React의 표현력을 배가한다. 이제 JSX의 이 점, 사용 목적, JSX와 HTML의 핵심 차이점을 알아보자

28 2.2 Benefits of JSX? 다양한 템플릿 언어를 제쳐두고 왜 굳이 JSX를 사용해야 할까? 결론부터 이야기 하자면, JSX가 단순히 마크업을 JavaScript 함수에 매핑하기 때문이다. JSX의 이점은 코드가 늘어나면서 컴포넌트가 점점 복잡해지는 상황일 때 두드러 진다. JSXdㅢ 이점을 하나씩 살펴보자. 익숙함 개발 조직 안에 개발자만 있는 것은 아니다. HTML에 익숙한 UI/UX 디자이너, 테스트를 전담 QA 조직이 참여하여 개발 관련 업무를 수행한다. JSX를 프로젝트 에 사용하면 개발자가 아닌 구성원들도 쉽게 코드를 읽고 업무에 기여할 수 있다. XML에 익숙한 사람이라면 쉽게 JSX를 받아들일 수 있다. 그리고 뒤에서 더 자세히 살펴보겠지만, React 컴포넌트는 DOM으로 표현 할 수 있는 모든 것을 처리한다. JSX는 이를 아주 간단명료하게 표현하여 시각화 한다. 의미론 JSX를 이용하면 JavaScript 코드를 마크업으로 만들어 의미를 더 잘 드러낼 수 있다. 컴포넌트 구조와 정보 흐름을 HTML과 유사한 문법을 이용하여 선언할 수 있고, 이렇게 작성한 코드는 나중에 JavaScript로 변환할 수 있다. HTML5 태그명은 물론이고 애플리케이션의 마크업에 사용한 커스텀 컴포넌트 까지 모두 JSX를 작성할 때 사용할 수 있다. 커스텀 컴포넌트를 정의하는 방법은 뒤에서 다루고, 우선 여기에서는 JSX로 JavaScript의 가독성을 높이는 방법을 알아보자. 좌측에 헤더를 표시하고 나머지 오른쪽을 가득 채우는 칸막이 Divider 역할을 하는 엘리먼트를 생각해보자. HTML로 표현하면 이런 모양일 것이다. 2 JSX - 027

29 <div classname="divider"> </div> <h2>questions</h2><hr /> 이 마크업 코드를 Divider라는 React 컴포넌트로 포장했다. 이제 다른 HTML 엘리먼트처럼 사용할 수 있다. 코드의 의미를 더 이해하기 쉽다. <Divider>Questions</Divider> 시각화 앞의 예제에서 우리는 JSX로 간단한 예제 코드를 더 명확하고 간결하게 만들었 다. 수백 개의 컴포넌트가 복잡한 마크업 트리 형태로 얽혀있는 대형 프로젝트에 서 이런 장점은 더욱 두드러진다 위에서 언급했던 Divider 컴포넌트를 다시 보자. JavaScript만 사용했을 때보 다 마크업의 의미가 더 분명하게 드러나 더 쉽게 의미를 이해할 수 있다. 우선 순수 JavaScript를 사용한 경우다. // v0.11 render: function () { return React.DOM.div({className:"divider"}, "Label Text", React.DOM.hr() ); } // v0.12 render: function () { return React.createElement('div', {classname:"divider"}, "Label Text", React.createElement('hr') ); } 028 -

30 이번에는 JSX 마크업을 사용했다. render: function () { return <div classname ="divider"> Label Text<hr /> </div>; } JSX 마크업이 이해하기도 쉽고 디버깅하기도 편리하다는 점을 확인할 수 있다. 추상화 앞에서 React 0.11과 0.12로 코드를 작성하면서 서로 다른 JavaScript를 사용 했다. 두 버전 모두 같은 JSX를 지원한다. JSX 트랜스파일러를 이용하면 마크업 을 JavaScript로 변환하는 과정을 추상화할 수 있어 가능한 일이다. React 0.11 로 작성한 코드는 추가 변경 작업 없이 0.12로 업데이트 할 수 있다. 추상화가 만병통치약은 아니지만, 프로젝트를 진행해나가면서 코드를 변경하는 일을 줄여준다는 점은 분명한 장점이다. 관심사 분리 React로 개발할 때는 마크업과 마크업을 생성하는 JavaScript 코드를 함께 묶 어서 작성한다. 또한 애플리케이션의 관심사나 개별 컴포넌트의 관심사를 분리하 지 않는다. 대신 관심사 별로 컴포넌트를 만들어서 모든 관련 로직과 마크업을 하 나의 공간에 넣고 캡슐화한다. JSX를 이용하면 비지니스 로직에서 마크업 코드를 분리할 수 있어 코드를 간결하 게 만들 수 있다. 이렇게 하면 컴포넌트 트리 구조가 선명하게 드러나 개발자가 애 플리케이션을 이해하기 쉽다. 2 JSX - 029

31 2.3 컴포넌트 조합 지금까지 JSX를 이용해 간결한 마크업 형태로 컴포넌트를 작성하는 방법을 살펴 봤다. 이번에는 JSX로 만든 개별 컴포넌트를 하나로 조립하는 과정을 알아보자. 이 절에서는 다음의 내용을 다룬다. JSX를 사용하는 JavaScript 파일 작성 컴포넌트 조합하는 과정 컴포넌트 소유권과 부모/자식 관계 하나씩 차례대로 살펴보자. 커스텀 컴포넌트 선언하기 앞에서 설명한 Divider를 다시 보자. 출력하고 싶은 HTML은 다음과 같다. <div classname="divider"> </div> <h2>questions</h2><hr /> 이 HTML을 React 컴포넌트로 표현하기 위해서, 마크업을 반환하는 render 함 수를 가지고 있는 React 컴포넌트를 만들었다. var Divider = React.createClass({ render: function () { return ( <div classname ="divider"> <h2>questions</h2><hr /> </div> ); } }); 현재로서는 이 컴포넌트를 이 형태로만 사용할 수 있다. h2 태그 안에 동적으로 030 -

32 텍스트를 넣을 수 있다면 더 유용하지 않을까? 동적인 값 JSX를 이용해 동적으로 값을 렌더링하고 싶다면 중괄호를 이용한다. { } 중괄호 는 JavaScript 콘텍스트에 신호를 보낸다. 중괄호 사이에 있는 값을 JavaScript 로 평가한 결과를 마크업에 노드로 그린다. 간단한 텍스트나 숫자 값은 단순히 변수를 참조한다. 아래에 나와있는 방법으로 h2 태그 안에 텍스트를 동적으로 넣을 수 있다. var text = 'Questions'; <h2>{text}</h2> // <h2>questions</h2> 로직이 더 복잡하다면 함수를 이용한다. 중괄호를 이용해서 함수를 호출하여 결과 값을 렌더링 할 수도 있다. function datetostring(d) { return [ d.getfullyear(), d.getmonth() + 1, d.getdate() ].join('-'); }; <h2>{datetostring(new Date())}</h2> // <h2> </h2> 중괄호에 배열을 할당하면 React가 중괄호 안에 있는 배열의 각 항목을 자동으 로 하나로 묶어준다. 2 JSX - 031

33 var text = ['hello', 'world']; <h2>{text}</h2> // <h2>helloworld</h2> 종종 복잡한 값을 표현해야 할 때가 있다. 데이터 배열을 <li>로 표현해야하는 경 우가 그렇다. 이 문제를 해결하기 위해서 자식 노드를 처리하는 방법을 알아보자. 자식 노드 <h2>questions</h2>를 이용해서 헤더를 렌더링하면 Questions 는 h2 엘리 먼트의 자식 노드로 들어간다. 그렇다면 JSX를 이용해서 Divider를 아래와 같이 작성할 수 있을까? <Divider>Questions</Divider> 할 수 있다. React는 여는 태그와 닫는 태그 사이에 있는 모든 자식 노드를 파악 한다. 이 때 컴포넌트가 가지고 있는 this.props.children이라는 특별한 배 열에 모든 자식 노드를 저장한다. 위의 예제가 생성한 컴포넌트의 this.props. children 값은 ["Questions"]다. 이 개념을 이용해서 하드 코딩한 Questions 텍스트를 this.props. children으로 바꿔보자. 이제 React는 사용자가 <Divder> 태그 사이에 할당한 값을 값을 동적으로 렌더링 할 수 있다. var Divider = React.createClass({ render: function () { return ( <div classname ="divider"> <h2>{this.props.children}</h2><hr /> </div> ); } }); 032 -

34 HTML 엘리먼트처럼 활용할 수 있는<Divider> 컴포넌트를 만들었다. <Divider>Questions</Divider> 이 코드를 JSX 변환기 JSX transformer 를 JavaScript로 변환하면 다음과 같다. var Divider = React.createClass({displayName: 'Divider', render: function () { return ( React.createElement("div", {classname: "divider"}, React.createElement("h2", null, this.props.children), React.createElement("hr", null) ) ); } }); 결과값 역시 예상한 대로다. <div classname="divider"> <h2>questions</h2><hr /> </div> 2.4 JSX와 HTML의 차이점 JSX는 HTML과 유사하지만 HTML 문법을 완벽하게 따르지는 않는다. 이는 곧 장점이다. JSX 명세에는 다음과 같이 설명하고 있다. 이 명세서는 XML이나 HTML 명세를 따르지 않는다. ECMAScript 기능 처럼 JSX를 설계했으며, XML과 유사한 것은 익숙하기 때문이다 ( facebook.github.io/jsx/에서 발췌). 계속해서 JSX와 HTML 문법의 주요 차이점을 알아보자. 2 JSX - 033

35 속성 HTML 엘리먼트의 속성은 아래 보이는 것처럼 인라인 inline 으로 설정한다. <div id="some-id" class="some-class-name">...</div> JSX도 이 형식을 지원한다. 여기에 더해 JavaScript 변수를 이용해서 동적으로 속성 값을 할당할 수 있다. JavaScript 변수를 속성에 할당할 때는 변수를 중괄 호로 감싼다. var surveyquestionid = this.props.id; var classes = 'some-class-name';... <div id={surveyquestionid} classname ={classes}>...</div> 할당하려는 값을 얻는 과정이 복잡하다면 함수 호출의 결과를 속성 값으로 지정할 수도 있다. <div id={this.getsurveyid()} >...</div> React는 컴포넌트를 렌더링 할 때 마다 변수와 함수 호출을 평가하고, 평가 결과 로 얻은 새로운 상태 값을 DOM에 전달해 반영한다. NOTE 예제로 사용하는 설문조사 생성기의 전체 소스 코드는 Github 저장소에서 확인할 수 있다. 조건문 React 컴포넌트의 마크업과 마크업 생성 로직은 하나로 묶여있다. 이렇게 함으 로써 반복문과 조건문 같은 JavaScript 로직을 이용해 마크업을 생성할 수 있다

36 if/else 조건은 마크업으로 표현하기 어렵기 때문에, 컴포넌트에 조건문을 추가 하는 일 역시 어렵다. JSX에 바로 조건문을 작성할 수 있을까? 할 수 없다. <div classname={if(iscomplete) { 'is-complete' }}>...</div> 하지만 아예 불가능한 것은 아니며, 몇 가지 방법을 사용할 수 있다. 삼항 연산자 ternary logic 사용 변수를 선언하고 속성에서 참조 함수에 로직을 떠넘기기 논리곱(&&) 연산자 사용 각각의 예를 간단히 살펴보자. 삼항 연산자 사용 가독성을 위해 공백을 추가했다.... render: function () { return <div classname ={ this.state.iscomplete? 'is-complete' : '' }>...</div>; }... 텍스트에는 삼항 연산자가 적합하다. 하지만 JSX 안에 삼항 연산자를 사용한 코 드는 거추장스럽고 읽기 어렵다. 이런 경우에는 다음 방법을 고려할 수 있다. 변수 참조... getiscomplete: function () { return this.state.iscomplete? 'is-complete' : ''; }, 2 JSX - 035

37 render: function () { var iscomplete = this.getiscomplete(); return <div classname ={iscomplete}>...</div>; }... 함수 호출 사용... getiscomplete: function () { return this.state.iscomplete? 'is-complete' : ''; }, render: function () { return <div classname ={this.getiscomplete()}>...</div>; }... 논리곱 연산자(&&) 사용 React는 Null이나 False 값에 특정한 값을 할당하지 않기 때문에 불린 boolean 값을 사용해서 원하는 문자열을 출력할 수 있다. 아래 예제는 this.state. iscomplete가 참이면 is-complete 를 classname으로 사용한다. render: function () { return <div classname ={this.state.iscomplete && 'is-complete'}>... </div>; } 비DOM 속성 JSX에는 다음과 같은 특별한 속성을 사용할 수 있다. key ref dangerouslysetinnerhtml 036 -

38 자세히 살펴보자. 키 키 key 는 선택적으로 사용할 수 있는 고유 식별자다. 런타임 중에는 컴포넌트가 컴 포넌트 트리의 위나 아래로 이동할 수 있다. 예를 들어 사용자가 검색을 하거나 목 록에 아이템을 추가 또는 삭제하는 경우를 생각해보자. 이런 경우 컴포넌트를 제 거하고 다시 만들 필요가 없다. 컴포넌트에 설정한 고유키를 이용해서 React 컴포넌트 재사용 여부를 결정할 수 있다. 키는 렌더링 과정에서 항상 동일하다. 이렇게 하면 렌더링 성능을 향상시킬 수 있다. DOM에 있는 두 아이템의 위치를 서로 변경할 때, 전체를 다시 렌더링하 지 않고 키를 비교해서 위치만 변경할 수 있다. 참조 참조 ref 를 이용하면 부모 컴포넌트가 렌더링 함수 외부에서도 자식 컴포넌트를 참 조할 수 있다. ref 속성에 원하는 참조명을 설정해서 참조를 정의한다.... render: function () { return <div> <input ref ="myinput"... /> </div>; }... 컴포넌트 안에서 this.refs.myinput를 이용해서 이 참조 객체에 접근할 수 있 다. 이 객체를 지원 인스턴스 backing instance 라고 부른다. 지원 인스턴스는 React 가 DOM을 생성할 때 이용할 뿐, 실제 DOM은 아니다. this.refs.myinput. getdomnode ( )를 이용하면 실제 DOM을 가져올 수 있다. 2 JSX - 037

39 더 자세한 내용은 6장에서 부모/자식 관계와 소유 관계를 비교할 때 다룬다. HTML을 문자열로 사용하기 HTML을 문자열로 작성해야 할 때가 있다. DOM 조작에 문자열을 이용하는 외 부 라이브러리를 사용하는 경우다. React는 dangerouslysetinnerhtml 속성을 이용해 HTML 문자열을 입력할 수 있는 방법을 제공해 호환성을 높였다. 하지만 추천하고 싶은 방법은 아니다. 이 속성을 사용하려면 아래처럼 html 키가 있는 객체를 이용한다.... render: function () { var htmlstring = { html: "<span>an html string</span>" }; return <div dangerouslysetinnerhtml ={htmlstring} ></div>; }... NOTE DANGEROUSLYSETINNERHTML 이 속성은 곧 바뀔 수도 있다. 아래의 이슈를 참고하기 바란다. 이벤트 모든 브라우저가 동일한 이벤트명을 사용하며, 카멜표기법을 따른다. 예를 들어 change는 onchange, click은 onclick이다. JSX를 이용하면 메소드를 할당 하는 것만으로 간단하게 이벤트 리스너를 추가할 수 있다.... handleclick: function (event) {...}, 038 -

40 render: function () { return <div onclick ={this.handleclick}>...</div> }... React는 자동으로 모든 메소드를 메소드가 속한 컴포넌트 객체에 바인딩한다. 따라서 수동으로 콘텍스트를 바인딩 할 필요가 없다.... handleclick: function (event) {...}, render: function () { // 안티패턴(anti-pattern) React를 사용할 때는 컴포넌트 인스턴스에 // 함수 콘텍스트를 개별적으로 바인딩할 필요가 없다. return <div onclick ={this.handleclick.bind(this)}>...</div> }... React의 이벤트 처리에 관한 더 자세한 이야기는 9장에서 다룬다. 주석 JSX는 JavaScript이기 때문에 JSX 마크업에 JavaScript 주석을 추가할 수 있 다. 주석을 작성할 수 있는 위치는 아래 두 곳이다. 1. 엘리먼트의 자식 노드로 작성 2. 노드의 속성에 인라인으로 작성 자식 노드로 작성하기 자식 노드 주석은 중괄호로 감싸서 작성한다. 여러 줄로 작성할 수도 있다. <div> {/* 여러 줄에 걸쳐 작성한 Input에 대한 주석 */} <input name =" " placeholder=" Address" /> </div> 2 JSX - 039

41 속성에 인라인으로 작성 인라인 주석에는 두가지 방법이 있다. 여러 줄 주석은 이렇게 작성한다. <div> <input /* input에 대한 주석 */ name =" " placeholder =" Address" /> </div> 한 줄 주석으로 작성할 수도 있다. <div> <input name =" " // 한 줄 주석 placeholder =" Address" /> </div> 특수 속성 JSX 트랜스파일러는 JSX를 JavaScript 함수 호출 구문으로 변환한다. 따라서 변환 시 충돌 우려가 있는 class와 for 같은 몇 가지 키워드는 JSX에 사용할 수 없다. <form> 요소의 <label>에 for 속성을 추가하려면 JSX에서는 htmlfor 속성을 이용한다. <label htmlfor="for-text"... > CSS 클래스를 적용할 때는 class 속성 대신 classname 속성을 사용한다

42 HTML에 익숙하다면 다소 이상하게 보일 수 있지만, JavaScript 입장에서 볼 때 는 일관성이 있다. JavaScript에서는 elem.classname으로 클래스 명에 접근할 수 있기 때문이다. <div classname={classes}... > 스타일 마지막으로 살펴볼 것은 인라인 스타일 속성이다. React는 모든 스타일 명에 카멜표기법을 적용했다. JavaScript의 DOM 스타일 속성과 일관성을 유지하 기 위함이다. 인라인 스타일을 선언하려면 CSS 값을 카멜표기법으로 작성해 JavaScript 객체에 전달한다. var styles = { bordercolor: "#999", borderthickness: "1px" }; React.renderComponent(<div style={styles}>...</div>, node); 2.5 JSX를 사용하지 않는 경우의 React 결과적으로 JSX 마크업은 순수 JavaScript 코드로 변환된다. 따라서 반드시 JSX 를 사용할 필요가 없지만 JSX를 사용하면 React 컴포넌트를 생성하는 단계의 복 잡함을 감출 수 있다. JSX를 사용하지 않을 생각이라면, React 컴포넌트를 생성 하는 과정을 알아야 한다. 이 과정은 총 3단계로 이루어진다. 1. 컴포넌트 클래스 정의하기 2. 컴포넌트 클래스의 인스턴스를 만드는 팩토리 생성하기 3. ReactElement 인스턴스를 생성하는 팩토리 사용하기 2 JSX - 041

43 React 엘리먼트 만들기 React는 HTML 엘리먼트를 생성해서 돌려주는 팩토리를 React.DOM.* 네임스 페이스로 제공한다. 이 팩토리는 React.createElement를 축약한 것으로 첫번 째 인자로 전달한 엘리먼트를 생성한다. 아래 예제에 있는 두 코드는 모두 같은 결 과를 돌려준다. React.createElement('div'); React.DOM.div(); 그렇지만 커스텀 컴포넌트를 만드려면, 커스텀 컴포넌트 클래스에서 팩토리를 생 성해야 한다. Divider 클래스를 만들었던 과정을 기억하는가? 목적을 명확하게 하기 위해서 DividerClass라고 이름을 바꿨다. var DividerClass = React.createClass({displayName: 'Divider', render: function () { return ( React.createElement("div", {classname: "divider"}, React.createElement("h2", null, this.props.children), React.createElement("hr", null) ) ); } }); JSX를 사용하지 않고 DividerClass를 쓰기 위해서는 두가지 방법을 생각해볼 수 있다. 1. React.createElement를 바로 호출한다. 2. React.DOM.* 함수와 비슷한 팩토리를 만든다

44 createelement를 호출해서 엘리먼트를 직접 생성할 수 있다. var divider = React.createElement(DividerClass, null, 'Questions'); 팩토리를 만들려면 우선 createfactory 함수를 사용한다. var Divider = React.createFactory(DividerClass); ReactElement를 만들 수 있는 팩토리 함수를 만들었다. 아래처럼 사용할 수 있다. var divider = Divider(null, 'Questions'); 축약 React.DOM.* 네임스페이스를 이용하는 방식이 귀찮다면, 아래 예제에 보이는 R 과 같이 좀 더 짧은 변수명을 이용하면 좋다. var R = React.DOM; var DividerClass = React.createClass({displayName: 'Divider', render: function () { return R.div({className: "divider"}, R.h2(null, "Label Text"), R.hr() ); } }); 각각의 팩토리를 최상위 변수에 할당해놓고 필요할 때 직접 참조할 수도 있다. var div = React.DOM.div; var hr = React.DOM.hr; 2 JSX - 043

45 var h2 = React.DOM.h2; var DividerClass = React.createClass({displayName: 'Divider', render: function () { return div({classname: "divider"}, h2(null, "Label Text"), hr() ); } }); 참고사항 평소에 JavaScript와 마크업을 함께 사용하는 방식을 별로 좋아하지 않았다면, JSX가 제시하는 해결책에 매력을 느꼈기를 바란다. Facebook은 JSX에 대한 관 심이 증가하자 명세를 만들었으며, 기술적으로 깊이있는 설명도 함게 제공하고 있 다. 또한 JSX를 다뤄볼 수 있는 몇 가지 도구도 제공하고 있다. 이러한 도구는 브 라우저 환경에서 JSX 사용법을 알고 싶을 때 유용하게 사용할 수 있다. 2.6 JSX 공식 스펙 Facebook은 2014년 9월에 JSX 공식 명세를 공개했다. JSX를 만든 이유와 문 법에 대한 기술적인 설명을 담고 있다. 자세한 내용은 확인할 수 있다. 브라우저에서 JSX 다뤄보기 JSX를 테스트 해 볼 수 있는 여러 가지 도구가 있다. React Getting Started 문 서에는 JSFiddle을 이용해서 JSX를 작성하는 방법이 나와있다. 그리고 React가 제공하는 JSX 컴파일러 서비스를 이용하면 브라우저 상에서 044 -

46 JSX를 JavaScript로 변환할 수 있다. 2 JSX - 045

BACK TO THE BASIC C++ 버그 헌팅: 버그를 예방하는 11가지 코딩 습관

BACK TO THE BASIC C++ 버그 헌팅: 버그를 예방하는 11가지 코딩 습관 Hanbit ebook Realtime 30 C++ 버그 헌팅 버그를 예방하는 11가지 코딩 습관 Safe C++ 블라디미르 쿠스퀴니르 지음 / 정원천 옮김 이 도서는 O REILLY의 Safe C++의 번역서입니다. BACK TO THE BASIC C++ 버그 헌팅 버그를 예방하는 11가지 코딩 습관 BACK TO THE BASIC C++ 버그 헌팅 버그를

More information

처음 시작하는 리액트: UI를 위한 자바스크립트 라이브러리 ReactJS

처음 시작하는 리액트: UI를 위한 자바스크립트 라이브러리 ReactJS 114 처음시작하는리액트 UI 를위한 자바스크립트라이브러리 ReactJS 톰핼럿, 리차드펠드만, 시몬회벡, 칼미켈슨, 존비비, 프랑키반야르디지음 / 곽현철, 김훈민옮김 114 처음시작하는리액트 UI 를위한 자바스크립트라이브러리 ReactJS 톰핼럿, 리차드펠드만, 시몬회벡, 칼미켈슨, 존비비, 프랑키반야르디지음 / 곽현철, 김훈민옮김 이도서는 Developing

More information

playnode.key

playnode.key Electron React Webpack! Junyoung Choi github.com/rokt33r Speaker / Junyoung Choi (2017.3 ) Node.js. MAISIN&CO. Boostnote 2015.11~2016.10 2! Agenda. / HMR, Electron Github Atom Node.js Chromium Javascript

More information

유니 앞부속

유니 앞부속 Published by Ji&Son Inc. Printed in Korea. Unityによる3Dゲ-ム : iphone/android/webで ゲ-ムプログラミング (JAPAN ISBN 978-4873115061) Authorized translation from the Japanese language edition of Unityによる3Dゲ- ム. 2011 the

More information

Microsoft PowerPoint - web-part03-ch19-node.js기본.pptx

Microsoft PowerPoint - web-part03-ch19-node.js기본.pptx 과목명: 웹프로그래밍응용 교재: 모던웹을 위한 JavaScript Jquery 입문, 한빛미디어 Part3. Ajax Ch19. node.js 기본 2014년 1학기 Professor Seung-Hoon Choi 19 node.js 기본 이 책에서는 서버 구현 시 node.js 를 사용함 자바스크립트로 서버를 개발 다른서버구현기술 ASP.NET, ASP.NET

More information

FileMaker 15 WebDirect 설명서

FileMaker 15 WebDirect 설명서 FileMaker 15 WebDirect 2013-2016 FileMaker, Inc.. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 FileMaker FileMaker Go FileMaker, Inc.. FileMaker WebDirect FileMaker, Inc... FileMaker.

More information

2파트-07

2파트-07 CHAPTER 07 Ajax ( ) (Silverlight) Ajax RIA(Rich Internet Application) Firefox 4 Ajax MVC Ajax ActionResult Ajax jquery Ajax HTML (Partial View) 7 3 GetOrganized Ajax GetOrganized Ajax HTTP POST 154 CHAPTER

More information

Building Mobile AR Web Applications in HTML5 - Google IO 2012

Building Mobile AR Web Applications in HTML5 - Google IO 2012 Building Mobile AR Web Applications in HTML5 HTML5 -, KIST -, UST HCI & Robotics Agenda Insight: AR Web Browser S.M.AR.T: AR CMS HTML5 HTML5 AR - Hello world! - Transform - - AR Events 3/33 - - - (Simplicity)

More information

**한빛소리02,3,4월호

**한빛소리02,3,4월호 No.208 http://www.hanbit1.co.kr 2014. 2~4 Hanbit C/O/N/T/E/N/T/S http://www hanbit co kr http://www hanbit co kr http://www hanbit co kr http://www hanbit co kr http://www hanbit co kr http://www

More information

SK IoT IoT SK IoT onem2m OIC IoT onem2m LG IoT SK IoT KAIST NCSoft Yo Studio tidev kr 5 SK IoT DMB SK IoT A M LG SDS 6 OS API 7 ios API API BaaS Backend as a Service IoT IoT ThingPlug SK IoT SK M2M M2M

More information

3장

3장 C H A P T E R 03 CHAPTER 03 03-01 03-01-01 Win m1 f1 e4 e5 e6 o8 Mac m1 f1 s1.2 o8 Linux m1 f1 k3 o8 AJAX

More information

파이썬을 이용한 AWS 가이드

파이썬을 이용한 AWS 가이드 Hanbit ebook Realtime 13 파이썬과 Boto로 클라우드 관리하기 파이썬을 이용한 AWS 가이드 Python and AWS Cookbook 미치 가나트 지음 / 강권학 옮김 Managing Your Cloud with Python and Boto Python & AWS Cookbook Mitch Garnaat 이 도서는 O REILLY의 Python

More information

그 여자와 그 남자의 사랑 이야기

그 여자와 그 남자의 사랑 이야기 그 여자와 그 남자의 사랑 이야기 ------------------- 소개글 뻔한 이야기이지요. 그렇지만 보여줄 수 있는 사랑은 아주 작습니다. 그 뒤에 숨어있는 위대함에 견주어보면.. 보여지는 모습이 아닌 그 사람의 진실함과 내면을 볼수있다면 우리 모두도 좋은 사람과 아름다운 사랑이야기를 써내려 갈수있다고 봅니다.. - 어느 소개글에서 목차 1 그 여자와

More information

97_00

97_00 Published by J&Son Inc. Printed in Korea. Copyright 2011 by J&Son Inc. Authorized translation from the English language edition of 97 Things Every Software Architect Should Know 2009 the Translation is

More information

제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호

제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호 제이쿼리 () 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호 CSS와마찬가지로, 문서에존재하는여러엘리먼트를접근할수있다. 엘리먼트접근방법 $( 엘리먼트 ) : 일반적인접근방법

More information

±¹Á¦ÆòÈŁ4±Ç1È£-ÃÖÁ¾

±¹Á¦ÆòÈŁ4±Ç1È£-ÃÖÁ¾ 141 2 13 2 13 2 13 9 19 142 2002 MD 143 6 6 6 144 2003 2 6 1) 1 2007 3 p 140 145 6 2) 2002 9 17 18 76 15 58 28 3) 2002 9 17 2 6 2007 4 16 3 2002 9 19 146 10 15 5 TV 5 5 4) 4 2003 p 44 147 2001 2000 2000

More information

*BA_00

*BA_00 Published by Ji&Son Inc. Printed in Korea Copyright 2010 by Ji&Son Inc. Authorized translation of the English edition of Beautiful Architecture 2009 O Reilly Media, Inc. This Translation is published and

More information

인천광역시의회 의원 상해 등 보상금 지급에 관한 조례 일부개정조례안 의안 번호 179 제안연월일 : 2007. 4. 제 안 자 :조례정비특별위원회위원장 제안이유 공무상재해인정기준 (총무처훈령 제153호)이 공무원연금법 시행규칙 (행정자치부령 제89호)으로 흡수 전면 개

인천광역시의회 의원 상해 등 보상금 지급에 관한 조례 일부개정조례안 의안 번호 179 제안연월일 : 2007. 4. 제 안 자 :조례정비특별위원회위원장 제안이유 공무상재해인정기준 (총무처훈령 제153호)이 공무원연금법 시행규칙 (행정자치부령 제89호)으로 흡수 전면 개 인천광역시의회 의원 상해 등 보상금 지급에 관한 조례 일부개정조례안 인 천 광 역 시 의 회 인천광역시의회 의원 상해 등 보상금 지급에 관한 조례 일부개정조례안 의안 번호 179 제안연월일 : 2007. 4. 제 안 자 :조례정비특별위원회위원장 제안이유 공무상재해인정기준 (총무처훈령 제153호)이 공무원연금법 시행규칙 (행정자치부령 제89호)으로 흡수 전면

More information

도커 오케스트레이션 
애플리케이션 빌드, 테스트, 배포의 통합 관리

도커 오케스트레이션 
애플리케이션 빌드, 테스트, 배포의 통합 관리 120 도커 오케스트레이션 Docker Orchestration 슈리크리슈나 홀라 지음 이기곤 옮김 애플리케이션 빌드, 테스트, 배포의 통합 관리 120 도커 오케스트레이션 Docker Orchestration 슈리크리슈나 홀라 지음 이기곤 옮김 애플리케이션 빌드, 테스트, 배포의 통합 관리 이 도서는 Orchestrating Docker(PACKT publishing)의

More information

종사연구자료-이야기방2014 7 18.hwp

종사연구자료-이야기방2014 7 18.hwp 차례 1~3쪽 머리말 4 1. 계대 연구자료 7 가. 증 문하시랑동평장사 하공진공 사적기 7 나. 족보 변천사항 9 1) 1416년 진양부원군 신도비 음기(陰記)상의 자손록 9 2) 1605년 을사보 9 3) 1698년 무인 중수보 9 4) 1719년 기해보 10 5) 1999년 판윤공 파보 10 - 계대 10 - 근거 사서 11 (1) 고려사 척록(高麗史摭錄)

More information

목 차 국회 1 월 중 제 개정 법령 대통령령 7 건 ( 제정 -, 개정 7, 폐지 -) 1. 댐건설 및 주변지역지원 등에 관한 법률 시행령 일부개정 1 2. 지방공무원 수당 등에 관한 규정 일부개정 1 3. 경력단절여성등의 경제활동 촉진법 시행령 일부개정 2 4. 대

목 차 국회 1 월 중 제 개정 법령 대통령령 7 건 ( 제정 -, 개정 7, 폐지 -) 1. 댐건설 및 주변지역지원 등에 관한 법률 시행령 일부개정 1 2. 지방공무원 수당 등에 관한 규정 일부개정 1 3. 경력단절여성등의 경제활동 촉진법 시행령 일부개정 2 4. 대 목 차 국회 1 월 중 제 개정 법령 대통령령 7 건 ( 제정 -, 개정 7, 폐지 -) 1. 댐건설 및 주변지역지원 등에 관한 법률 시행령 일부개정 1 2. 지방공무원 수당 등에 관한 규정 일부개정 1 3. 경력단절여성등의 경제활동 촉진법 시행령 일부개정 2 4. 대도시권 광역교통관리에 관한 특별법 시행령 일부개정 3 5. 영유아보육법 시행령 일부개정 4

More information

Javascript.pages

Javascript.pages JQuery jquery part1 JavaScript : e-mail:leseraphina@naver.com http://www.webhard.co.kr I.? 2 ......,,. : : html5 ; ; .

More information

삼외구사( 三 畏 九 思 ) 1981년 12월 28일 마산 상덕법단 마산백양진도학생회 회장 김무성 외 29명이 서울 중앙총본부를 방문하였을 때 내려주신 곤수곡인 스승님의 법어 내용입니다. 과거 성인께서 말씀하시길 道 를 가지고 있는 사람과 어울려야만 道 를 배울 수 있

삼외구사( 三 畏 九 思 ) 1981년 12월 28일 마산 상덕법단 마산백양진도학생회 회장 김무성 외 29명이 서울 중앙총본부를 방문하였을 때 내려주신 곤수곡인 스승님의 법어 내용입니다. 과거 성인께서 말씀하시길 道 를 가지고 있는 사람과 어울려야만 道 를 배울 수 있 2014 2 통권 342호 차 례 제목 : 백양역사의 초석 사진 : 모경옥 단주 2 7 8 12 14 17 20 30 32 34 36 38 42 45 곤수곡인법어 성훈한마디 신년사 심법연구 이상적멸분( 離 相 寂 滅 分 ) 59 경전연구 論 語 78 미륵세상 만들기 스승을 그리며/김문자 점전사 편 용두봉 음악 산책

More information

PowerPoint Template

PowerPoint Template JavaScript 회원정보 입력양식만들기 HTML & JavaScript Contents 1. Form 객체 2. 일반적인입력양식 3. 선택입력양식 4. 회원정보입력양식만들기 2 Form 객체 Form 객체 입력양식의틀이되는 태그에접근할수있도록지원 Document 객체의하위에위치 속성들은모두 태그의속성들의정보에관련된것

More information

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일 Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 Introduce Me!!! Job Jeju National University Student Ubuntu Korean Jeju Community Owner E-Mail: ned3y2k@hanmail.net Blog: http://ned3y2k.wo.tc Facebook: http://www.facebook.com/gyeongdae

More information

05.PDF

05.PDF ODD JOHN / ....?,. ( ), ( ).. < > 4 12 19 24 31 36 42 49 57 70 76 80 87 92 99 108 115 128 130 4. ",?", ' '. ".",. ".?.".., 6.,...,. 5 4.,...,. 1,..,. ",!".,.. ' ".,. "..",. ' '. 6 7.,.. 4,,.,.. 4...,.,.,.

More information

(291)본문7

(291)본문7 2 Chapter 46 47 Chapter 2. 48 49 Chapter 2. 50 51 Chapter 2. 52 53 54 55 Chapter 2. 56 57 Chapter 2. 58 59 Chapter 2. 60 61 62 63 Chapter 2. 64 65 Chapter 2. 66 67 Chapter 2. 68 69 Chapter 2. 70 71 Chapter

More information

¾Ë·¹¸£±âÁöħ¼�1-ÃÖÁ¾

¾Ë·¹¸£±âÁöħ¼�1-ÃÖÁ¾ Chapter 1 Chapter 1 Chapter 1 Chapter 2 Chapter 2 Chapter 2 Chapter 2 Chapter 2 Chapter 3 Chapter 3 Chapter 3 Chapter 3 Chapter 3 Chapter 3 Chapter 3 Chapter 3 Chapter 4 Chapter 4

More information

01....b74........62

01....b74........62 4 5 CHAPTER 1 CHAPTER 2 CHAPTER 3 6 CHAPTER 4 CHAPTER 5 CHAPTER 6 7 1 CHAPTER 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50

More information

국어부록표지

국어부록표지 초등학교 국어 기초학습 프로그램 초등학교 국어 기초학습 프로그램 1권 한글 익히기 신나는 한글 놀이를 시작해요 5 1. 선을 그려요`(선 긋기) 6 2. 아야야!`(기본 모음 익히기) 11 이 동물의 이름은 무엇까요? 21 1. 구구구, 비둘기야`(자음 ㄱ, ㄴ 익히기) 22 2. 동동, 아기 오리야`(자음 ㄷ, ㄹ 익히기) 31 3. 아야, 모기야`(자음

More information

.............._....

.............._.... 2014 ISBN978-89-97412-25-9 11 12 13 14 17 18 19 20 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70

More information

untitled

untitled A Leader of Enterprise e-business Solution FORCS Co., LTD 1 OZ Application Getting Started (ver 5.1) 2 FORCS Co., LTD A Leader of Enterprise e-business Solution FORCS Co., LTD 3 OZ Application Getting

More information

슬라이드 1

슬라이드 1 웹 2.0 분석보고서 Year 2006. Month 05. Day 20 Contents 1 Chapter 웹 2.0 이란무엇인가? 웹 2.0 의시작 / 웹 1.0 에서웹 2.0 으로 / 웹 2.0 의속성 / 웹 2.0 의영향 Chapter Chapter 2 3 웹 2.0 을가능케하는요소 AJAX / Tagging, Folksonomy / RSS / Ontology,

More information

루앙 의 공포 *주민들은 어두운 방 안에서 온갖 지혜와 힘이 도움이 되지 않는 천재지변이나 살인적인 대혼란이 가져다주는 엄청난 공포에 사로잡혀 있었다. 이와 같은 느낌은 기존의 질서가 뒤집 히거나, 더 이상 안전이 보장되지 않거나, 인간의 법이나 자연의 법칙이 보호해

루앙 의 공포 *주민들은 어두운 방 안에서 온갖 지혜와 힘이 도움이 되지 않는 천재지변이나 살인적인 대혼란이 가져다주는 엄청난 공포에 사로잡혀 있었다. 이와 같은 느낌은 기존의 질서가 뒤집 히거나, 더 이상 안전이 보장되지 않거나, 인간의 법이나 자연의 법칙이 보호해 누가 저 여인의 울음을 멈추게 할 것인가 기 드 모파상, 비곗덩어리 (1880) 외 이제부터 당신들은 새로운 지위를 획득했습니다. 당신들은 창녀가 아니라 특별봉사대원입니다. 당신들 은 임무를 완수해야 합니다. 당신들은 조국을 위해 봉사하는 육군의 협력자입니다. ( 판탈레온과 특별봉 사대, 233쪽) 빌어먹을, 하찮은 일이 너무 복잡해지고 있어. ( 판탈레온과

More information

호랑이 턱걸이 바위

호랑이 턱걸이 바위 호랑이 턱걸이 바위 임공이산 소개글 반성문 거울 앞에 마주앉은 중늙은이가 힐책한다 허송해버린 시간들을 어찌 할거나 반성하라 한발자국도 전진 못하고 제자리걸음만 일삼는 자신이 부끄럽지 않느냐 고인물은 썩나니 발전은 커녕 현상유지에도 급급한 못난위인이여 한심하다 한심하다 호랑이 턱걸이 바위! 이처럼 기막힌 이름을 붙이신 옛 선조들의 해학에 감탄하며 절로 고개가

More information

?

? 이날 회의에서는 우리농협 정관 개정(안)과 함께 2012년 사업계획 및 수지예산 변경승인, 2011년도 &$%& අ ᇜ ᆡᅴᒂ ዊ 감사의 감사보고 및 결산보고, 임원보수 및 실비변상 규약 개정, (주)영주농산물유통농업사회법인 외 경영관리본부 부출자가 원안대로 승인되었다. 우리농협은 2월 29일, 재적 대의원 198명(의장포함) 중 197명이 참석한 가운데 군위에

More information

UNIST_교원 홈페이지 관리자_Manual_V1.0

UNIST_교원 홈페이지 관리자_Manual_V1.0 Manual created by metapresso V 1.0 3Fl, Dongin Bldg, 246-3 Nonhyun-dong, Kangnam-gu, Seoul, Korea, 135-889 Tel: (02)518-7770 / Fax: (02)547-7739 / Mail: contact@metabrain.com / http://www.metabrain.com

More information

Egretia_White_Paper_KR_V1.1.pages

Egretia_White_Paper_KR_V1.1.pages 1.1 HTML5 4 1.2 IT HTML5 5 1.3 HTML5 5 1.4 6 2.1 HTML5 9 2.2 HTML5 10 2.3 11 Egretia 3.1 14 3.2 Egretia 16 3.3 Egretia 21 3.4 Egretia 29 4.1 Egretia Blockchain Lab 32 4.2 Egret Technology 32 4.3 Lab 36

More information

<C1D6BFE4BDC7C7D0C0DA5FC6EDC1FDBFCF28B4DCB5B5292E687770>

<C1D6BFE4BDC7C7D0C0DA5FC6EDC1FDBFCF28B4DCB5B5292E687770> 유형원 柳 馨 遠 (1622~1673) 1) 유형원 연보 年 譜 2) 유형원 생애 관련 자료 1. 유형원柳馨遠(1622~1673) 생애와 행적 1) 유형원 연보年譜 본관 : 문화文化, 자 : 덕부德夫, 호 : 반계磻溪 나이 / 연도 8 연보 주요 행적지 1세(1622, 광해14) * 서울 정릉동貞陵洞(정동) 출생 2세(1623, 인조1) * 아버지 흠欽+心

More information

시편강설-경건회(2011년)-68편.hwp

시편강설-경건회(2011년)-68편.hwp 30 / 독립개신교회 신학교 경건회 (2011년 1학기) 시편 68편 강해 (3) 시온 산에서 하늘 성소까지 김헌수_ 독립개신교회 신학교 교장 개역 19 날마다 우리 짐을 지시는 주 곧 우리의 구원이신 하나님을 찬송할지 로다 20 하나님은 우리에게 구원의 하나님이시라 사망에서 피함이 주 여호와께로 말미암 거니와 21 그 원수의 머리 곧 그 죄과에 항상 행하는

More information

untitled

untitled 년도연구개발비 년도매출액 년도광고선전비 년도매출액 년도 각 기업의 매출액 년도 산업전체의 매출액 년도말 고정자산 년도말 총자산 년도연구개발비 년도매출액 년도광고선전비 년도매출액 년도 각 기업의 매출액 년도 산업전체의 매출액 년도말 고정자산 년도말 총자산 년도연구개발비 년도매출액 년도광고선전비 년도매출액 년도각기업의매출액 년도 산업전체의 매출액

More information

정 관

정         관 정 관 (1991. 6. 3.전문개정) (1991. 10. 18. 개 정) (1992. 3. 9. 개 정) (1994. 2. 24. 개 정) (1995. 6. 1. 개 정) (1997. 3. 14. 개 정) (1997. 11. 21. 개 정) (1998. 3. 10. 개 정) (1998. 7. 7. 개 정) (1999. 8. 1. 개 정) (1999. 9.

More information

기사스크랩 (160504).hwp

기사스크랩 (160504).hwp 경향신문 / 2016.05.03(화) "갈등없는 성과연봉제 도입" 홍보하던 동서발전, 부당노동행위 정황 성과연봉제 노사합의안 찬반투표 당시 동서발전 울산화력본부 기표소 모습 공기업 발전회사 중 처음으로 성과연봉제 확대 도입에 대한 노사합의가 이뤄진 한국동서발전이 직원 들의 찬성 투표를 유도하기 위해 부당노동행위를 벌인 복수의 정황이 나왔다. 직원들에게 동의서를

More information

Domino Designer Portal Development tools Rational Application Developer WebSphere Portlet Factory Workplace Designer Workplace Forms Designer

Domino Designer Portal Development tools Rational Application Developer WebSphere Portlet Factory Workplace Designer Workplace Forms Designer Domino, Portal & Workplace WPLC FTSS Domino Designer Portal Development tools Rational Application Developer WebSphere Portlet Factory Workplace Designer Workplace Forms Designer ? Lotus Notes Clients

More information

Week13

Week13 Week 13 Social Data Mining 02 Joonhwan Lee human-computer interaction + design lab. Crawling Twitter Data OAuth Crawling Data using OpenAPI Advanced Web Crawling 1. Crawling Twitter Data Twitter API API

More information

산림병해충 방제규정 4. 신문 방송의 보도내용 등 제6 조( 조사지역) 제5 조에 따른 발생조사는 다음 각 호의 지역으로 구분하여 조사한다. 1. 특정지역 : 명승지 유적지 관광지 공원 유원지 및 고속국도 일반국도 철로변 등 경관보호구역 2. 주요지역 : 병해충별 선단

산림병해충 방제규정 4. 신문 방송의 보도내용 등 제6 조( 조사지역) 제5 조에 따른 발생조사는 다음 각 호의 지역으로 구분하여 조사한다. 1. 특정지역 : 명승지 유적지 관광지 공원 유원지 및 고속국도 일반국도 철로변 등 경관보호구역 2. 주요지역 : 병해충별 선단 산림병해충 방제규정 산림병해충 방제규정 [ 시행 2015.9.9] [ 산림청훈령 제1262 호, 2015.9.9, 일부개정] 산림청( 산림병해충과), 042-481-4038 제1장 총칙 제1 조( 목적) 이 규정은 산림보호법 제3 장 " 산림병해충의 예찰 방제 에서 위임된 사항과 산림병해충( 이하 " 병 해충 이라 한다) 의 예방 구제를 위하여 병해충의 발생조사와

More information

대규모 자바스크립트 웹어플리케이션개발하기 with BackboneJS and RequireJS 넷스루개발 2 팀이병주

대규모 자바스크립트 웹어플리케이션개발하기 with BackboneJS and RequireJS 넷스루개발 2 팀이병주 대규모 자바스크립트 웹어플리케이션개발하기 with BackboneJS and RequireJS 넷스루개발 2 팀이병주 웹사이트 웹어플리케이션 Mission 웹사이트처럼 개발하기에는 문제점이많다 Why?! 복잡하다 양이많다 예제를통해해결책을알아보자 http://pillarlee16.github.com/simpleapp/ 복잡함을해결하자!! 다양한 MV*

More information

김기중 - 방송통신심의위원회 인터넷 내용심의의 위헌 여부.hwp

김기중 - 방송통신심의위원회 인터넷 내용심의의 위헌 여부.hwp 방송통신심의위원회 인터넷 내용심의와 그 위헌 여부에 관한 소론 - 서울고등법원 2011.2.1.자 2010아189 위헌법률심판제청결정을 중심으로 한국정보법학회 2011년 5월 사례연구회 2011. 5. 17.발표 변호사 김기중 미완성 원고임 1. 서론 헌법재판소는 2002. 6. 27. 99헌마480 전기통신사업법 제53조등 위헌확인사건에 서 불온통신 의 단속에

More information

Ⅰ- 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 Ⅰ- 32 Ⅰ- 33 Ⅰ- 34 Ⅰ- 35

More information

2힉년미술

2힉년미술 제 회 Final Test 문항 수 배점 시간 개 00 점 분 다음 밑줄 친 부분의 금속 공예 가공 기법이 바르게 연결된 것은? 금, 은, 동, 알루미늄 등의 금속을 ᄀ불에 녹여 틀에 붓거나 금속판을 ᄂ구부리거나 망치로 ᄃ두들겨서 여러 가지 형태의 쓸모 있는 물건을 만들 수 있다. ᄀ ᄂ ᄃ ᄀ ᄂ ᄃ 조금 단금 주금 주금 판금 단금 단금 판금 주금 판금 단금

More information

- 이벤트의처리 <input type= button id= button1 value= 확인 /> <input type= button id= button2 value= 확인 /> 자바스크립트인경우 : document.getelementbyid( button1 ).oncl

- 이벤트의처리 <input type= button id= button1 value= 확인 /> <input type= button id= button2 value= 확인 /> 자바스크립트인경우 : document.getelementbyid( button1 ).oncl 제이쿼리 (JQuery) - 제이쿼리는자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리이다. - 따라서, 제이쿼리를사용하기위해서는자바스크립트라이브러리를사용해야한다. - 제이쿼리사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) - 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호를말함. - 사용예 )

More information

歯얻는다.PDF

歯얻는다.PDF ( ) 3 6 16 4 T e l 0 2-3 14 3-2 8 3 4 F a x 0 2-3 14 2-5 3 15!!.!! copyright 2000 by bookcosmos. All right reserved summarized by the permission of Korea ( ).. / /200 1 6 /27 1 /7,500 1935., 1977,.,.,,.,..

More information

Olje CLASSICS 08 *본 문서에 대한 저작권은 사단법인 올재에 있으며, 이 문서의 전체 또는 일부에 대하여 상업적 이익을 목적으로 하는 무단 복제 및 배포를 금합니다. copyright 2012 Olje All Rights Reserved

Olje CLASSICS 08 *본 문서에 대한 저작권은 사단법인 올재에 있으며, 이 문서의 전체 또는 일부에 대하여 상업적 이익을 목적으로 하는 무단 복제 및 배포를 금합니다. copyright 2012 Olje All Rights Reserved E-Book 이을호 역 현암학술문화연구소 보( 補 ) 펼치는 페이지마다 동아시아 사상계의 두 거인 다산과 주자의 설전이 치열하다. 유교 경전의 주체적 한글화에 헌신한 이을호 선생은 다산의 중용자잠( 中 庸 自 箴 ) 대학공의( 大 學 公 議 ) 와 주자의 중용 대학 장구( 中 庸 大 學 章 句 ) 를 대비하는 방법으로 중용 대학 을 새롭게 썼다. 역자는 중용

More information

Copyrights and Trademarks Autodesk SketchBook Mobile (2.0.2) 2013 Autodesk, Inc. All Rights Reserved. Except as otherwise permitted by Autodesk, Inc.,

Copyrights and Trademarks Autodesk SketchBook Mobile (2.0.2) 2013 Autodesk, Inc. All Rights Reserved. Except as otherwise permitted by Autodesk, Inc., Autodesk SketchBook Mobile Copyrights and Trademarks Autodesk SketchBook Mobile (2.0.2) 2013 Autodesk, Inc. All Rights Reserved. Except as otherwise permitted by Autodesk, Inc., this publication, or parts

More information

여자.PDF

여자.PDF . 30.. Copyright 2006 by BookCosmos. All Rights Reserved. Summarized with the Permission from the Publisher. ( ).,. / 2006 10 / 229 / 9,800 1968..,,,. < >, < >. 2005 30.,.. S ho rt S umma ry., 30 30. 30

More information

Xen으로 배우는 가상화 기술의 이해 - CPU 가상화

Xen으로 배우는 가상화 기술의 이해 - CPU 가상화 Hanbit ebook Realtime 17 Xen으로 배우는 가상화 기술의 이해 CPU 가상화 박은병, 김태훈, 이상철, 문대혁 지음 Xen으로 배우는 가상화 기술의 이해 CPU 가상화 Xen으로 배우는 가상화 기술의 이해 - CPU 가상화 초판발행 2013년 2월 25일 지은이 박은병, 김태훈, 이상철, 문대혁 / 펴낸이 김태헌 펴낸곳 한빛미디어(주) /

More information

Intro to Servlet, EJB, JSP, WS

Intro to Servlet, EJB, JSP, WS ! Introduction to J2EE (2) - EJB, Web Services J2EE iseminar.. 1544-3355 ( ) iseminar Chat. 1 Who Are We? Business Solutions Consultant Oracle Application Server 10g Business Solutions Consultant Oracle10g

More information

래를 북한에서 영화의 주제곡으로 사용했다든지, 남한의 반체제세력이 애창한다 든지 등등 여타의 이유를 들어 그 가요의 기념곡 지정을 반대한다는 것은 더 이상 용인될 수 없는 반민주적인 행동이 될 것이다. 동시에 그 노래가 두 가지 필요조 건을 충족시키지 못함에도 불구하고

래를 북한에서 영화의 주제곡으로 사용했다든지, 남한의 반체제세력이 애창한다 든지 등등 여타의 이유를 들어 그 가요의 기념곡 지정을 반대한다는 것은 더 이상 용인될 수 없는 반민주적인 행동이 될 것이다. 동시에 그 노래가 두 가지 필요조 건을 충족시키지 못함에도 불구하고 제2 발제문 임을 위한 행진곡 의 문제점 임 과 새 날 의 의미를 중심으로 양 동 안 (한국학중앙연구원 명예교수) 1. 머리말 어떤 노래가 정부가 주관하는 국가기념식의 기념곡으로 지정되려면(혹은 지정 되지 않고 제창되려면) 두 가지 필요조건을 충족시켜야 한다. 하나는 그 가요(특히 가사)에 내포된 메시지가 기념하려는 사건의 정신에 부합해야 한다는 것이다. 다

More information

2008.3.3> 1. 법 제34조제1항제3호에 따른 노인전문병원 2. 국민건강보험법 제40조제1항의 규정에 의한 요양기관(약국을 제외한다) 3. 삭제<2001.2.10> 4. 의료급여법 제2조제2호의 규정에 의한 의료급여기관 제9조 (건강진단) 영 제20조제1항의 규

2008.3.3> 1. 법 제34조제1항제3호에 따른 노인전문병원 2. 국민건강보험법 제40조제1항의 규정에 의한 요양기관(약국을 제외한다) 3. 삭제<2001.2.10> 4. 의료급여법 제2조제2호의 규정에 의한 의료급여기관 제9조 (건강진단) 영 제20조제1항의 규 노인복지법 시행규칙 [시행 2010. 3. 1] [보건복지가족부령 제161호, 2010. 2.24, 일 보건복지가족부 (노인정책과) 02-2023-85 제1조 (목적) 이 규칙은 노인복지법 및 동법시행령에서 위임된 사항과 그 시행에 관하여 필요한 함을 목적으로 한다. 제1조의2 (노인실태조사) 1 노인복지법 (이하 "법"이라 한다)

More information

노인복지법 시행규칙

노인복지법 시행규칙 노인복지법 시행규칙 [시행 2012.2.5] [보건복지부령 제106호, 2012.2.3, 타법개정] 제1조(목적) 이 규칙은 노인복지법 및 동법시행령에서 위임된 사항과 그 시행에 관하여 필요한 사항을 규정 함을 목적으로 한다. 제1조의2(노인실태조사) 1 노인복지법 (이하 "법"이라 한다) 제5조에 따른 노인실태조사의 내용은 다음 각

More information

내지4월최종

내지4월최종 내 가 만 난 7 0 년 대 죽은 언론의 사회 동아자유언론수호투쟁위원회 2008년 촛불집회가 한창일 때 정동익은 오래 전 자신이몸담았던 동아일 보사 앞에 서 있었다. 촛불을든시민들은 동아일보는 쓰레기다! 라며 야유 를 보냈다. 한때 국민들이 가장 사랑했던 신문 동아일보는 젊은 시절 그와동 료 기자들이 목숨을 걸고 외쳤던 자유 언론 이 아니었다. 그는 차마더바라

More information

Microsoft PowerPoint - aj-lecture1-HTML-CSS-JS.ppt [호환 모드]

Microsoft PowerPoint - aj-lecture1-HTML-CSS-JS.ppt [호환 모드] Web Technology Stack HTML, CSS, JS Basics HTML Tutorial https://www.w3schools.com/html/default.asp CSS Tutorial https://www.w3schools.com/css/default.asp JS Tutorial 524730-1 2019 년봄학기 3/11/2019 박경신 https://www.w3schools.com/html/default.asp

More information

Modern Javascript

Modern Javascript ES6 - Arrow Function Class Template String Destructuring Default, Rest, Spread let, const for..of Promises Module System Map, Set * Generator * Symbol * * https://babeljs.io/ Babel is a JavaScript compiler.

More information

untitled

untitled A Leader of Enterprise e-business Solution FORCS Co., LTD 1 OZ Application Getting Started 2 FORCS Co., LTD A Leader of Enterprise e-business Solution FORCS Co., LTD 3 OZ Application Getting Started 'OZ

More information

HTML5가 웹 환경에 미치는 영향 고 있어 웹 플랫폼 환경과는 차이가 있다. HTML5는 기존 HTML 기반 웹 브라우저와의 호환성을 유지하면서도, 구조적인 마크업(mark-up) 및 편리한 웹 폼(web form) 기능을 제공하고, 리치웹 애플리케이 션(RIA)을

HTML5가 웹 환경에 미치는 영향 고 있어 웹 플랫폼 환경과는 차이가 있다. HTML5는 기존 HTML 기반 웹 브라우저와의 호환성을 유지하면서도, 구조적인 마크업(mark-up) 및 편리한 웹 폼(web form) 기능을 제공하고, 리치웹 애플리케이 션(RIA)을 동 향 제 23 권 5호 통권 504호 HTML5가 웹 환경에 미치는 영향 이 은 민 * 16) 1. 개 요 구글(Google)은 2010년 5월 구글 I/O 개발자 컨퍼런스에서 HTML5를 통해 플러 그인의 사용이 줄어들고 프로그램 다운로드 및 설치가 필요 없는 브라우저 기반 웹 플랫폼 환경이 점차 구현되고 있다고 강조했다. 그리고 애플(Apple)은 2010년

More information

AMP는 어떻게 빠른 성능을 내나.key

AMP는 어떻게 빠른 성능을 내나.key AMP는 어떻게 빠른 성능을 내나? AU개발 김태훈 kishu@navercorp.com AMP 란무엇인가? AMP 방식으로 HTML을 만들고 AMP JS를 로딩하고 AMP 컴포넌트만 사용하면 웹페이지의 빠른 렌더링을 보장 + 구글 검색 결과에서 즉시 로딩(빠르고 멋있게) AMPs are just Web Pages! AMPs are just Web Pages!

More information

ibmdw_rest_v1.0.ppt

ibmdw_rest_v1.0.ppt REST in Enterprise 박찬욱 1-1- MISSING PIECE OF ENTERPRISE Table of Contents 1. 2. REST 3. REST 4. REST 5. 2-2 - Wise chanwook.tistory.com / cwpark@itwise.co.kr / chanwook.god@gmail.com ARM WOA S&C AP ENI

More information

Ext JS À¥¾ÖÇø®ÄÉÀ̼ǰ³¹ß-³¹Àå.PDF

Ext JS À¥¾ÖÇø®ÄÉÀ̼ǰ³¹ß-³¹Àå.PDF CHAPTER 2 (interaction) Ext JS., HTML, onready, MessageBox get.. Ext JS HTML CSS Ext JS.1. Ext JS. Ext.Msg: : Ext Ext.get: DOM 22 CHAPTER 2 (config). Ext JS.... var test = new TestFunction( 'three', 'fixed',

More information

목 차 I. 교육 계획의 기저 1 1. 경북 교육 지표 1 2. 구미 교육의 지표 2 3. 경북 및 구미 유치원 교육의 방향 3 4. 유치원 현황 4 II. 본원 교육 목표 7 1. 본원의 교육 목표 및 운영 중점 7 2. 중점 교육활동 추진 계획 8 III. 교육과정

목 차 I. 교육 계획의 기저 1 1. 경북 교육 지표 1 2. 구미 교육의 지표 2 3. 경북 및 구미 유치원 교육의 방향 3 4. 유치원 현황 4 II. 본원 교육 목표 7 1. 본원의 교육 목표 및 운영 중점 7 2. 중점 교육활동 추진 계획 8 III. 교육과정 2013학년도 유치원운영계획서 행복한 아이들의 꿈터 신 기 유 아 교 육 신기초등학교병설유치원 http://www.singi.es.kr 730-072 경북 구미시 신비로 3길 37-8번지 XXXXXXXXXXX FAX XXXXXXX 목 차 I. 교육 계획의 기저 1 1. 경북 교육 지표 1 2. 구미 교육의 지표 2 3. 경북 및 구미 유치원 교육의 방향 3

More information

<303020B8D3B8AEB8BB5FC2F7B7CA2832303136B3E2292E687770>

<303020B8D3B8AEB8BB5FC2F7B7CA2832303136B3E2292E687770> 어느덧 K-IFRS 의무적용 원년인 2011년을 지나 2016년을 맞이하였다. K-IFRS의 의무 적용은 우리나라 회계환경의 중요한 변화를 일으켰다. 개별재무제표 위주의 공시체계에서 연결재무제표 중심의 공시체계로의 전환, 금융상품, 퇴직급여 회계, 자산손상, 공정가치 평가 등 거의 모든 분야에 걸친 변화를 일으켰다고 봐도 과언이 아니다. 그동안 K-IFRS는

More information

Special Theme _ e-publishing 전자책이 자체적으로 생산되기는 힘들다. 따라서 많은 전자책 사업자들은 기존 종이책 시장을 통해 질적 검증 이 완료된 저작물을 전자책화하는 것을 선호하고 있다. 기존 종이책을 전자책으로 변환하는 기술은 크게 2 가지 과

Special Theme _ e-publishing 전자책이 자체적으로 생산되기는 힘들다. 따라서 많은 전자책 사업자들은 기존 종이책 시장을 통해 질적 검증 이 완료된 저작물을 전자책화하는 것을 선호하고 있다. 기존 종이책을 전자책으로 변환하는 기술은 크게 2 가지 과 전자책 서비스 및 솔루션 기술 동향 조원 한국이퍼브 기술기획팀 1. 머리말 이러한 전자책이 저작자에서부터 최종 소비자에게까 지 전달되기 위해서는 다양한 종류의 솔루션과 서비 무라카미 류, 아이패드에 전자책으로 신작 소설 출 간 (한국일보), 전자책, 필자에게 희망이 될까? (베타 뉴스), 국립중앙도서관, 전자책 2만 5천 권 서비스 (뉴 시스). 이상은 전자책

More information

歯MW-1000AP_Manual_Kor_HJS.PDF

歯MW-1000AP_Manual_Kor_HJS.PDF Page 2 Page 3 Page 4 Page 5 Page 6 Page 7 Page 8 Page 9 Page 10 Page 11 Page 12 Page 13 Page 14 Page 15 Page 16 Page 17 Page 18 Page 19 Page 20 Page 21 Page 22 Page 23 Page 24 Page 25 Page 26 Page 27 Page

More information

PROCES-WP012A-KO-P, 현재의 안전 계측 시스템(SIS)이 최신 표준을 준수하고 있습니까?

PROCES-WP012A-KO-P, 현재의 안전 계측 시스템(SIS)이 최신 표준을 준수하고 있습니까? 현재의 안전 계측 시스템(SIS)이 최신 표준을 준수하고 있습니까? 프로세스 안전은 프로세스 설비의 작업자에게 큰 고민거리입니다. 미국 산업안전보건청(OSHA)의 유해 화학물질 공정 안전 관리(Process Safety Management of Highly Hazardous Chemicals) 규정에 따라 관리되는 약 25,000개의 설비에는 SIS(일명 긴급

More information

4) 이 이 6) 위 (가) 나는 소백산맥을 바라보다 문득 신라의 삼국 통 일을 못마땅해하던 당신의 말이 생각났습니다. 하나가 되는 것은 더 커지는 것이라는 당신의 말을 생각하면, 대동강 이북의 땅을 당나라에 내주기로 하고 이룩한 통 일은 더 작아진 것이라는 점에서,

4) 이 이 6) 위 (가) 나는 소백산맥을 바라보다 문득 신라의 삼국 통 일을 못마땅해하던 당신의 말이 생각났습니다. 하나가 되는 것은 더 커지는 것이라는 당신의 말을 생각하면, 대동강 이북의 땅을 당나라에 내주기로 하고 이룩한 통 일은 더 작아진 것이라는 점에서, 1) ᄀ 2) 지은이가 3) (라)에서 학년 고사종류 과목 과목코드번호 성명 3 2009 2학기 기말고사 대비 국어 101 ( ) 일신여자중 ꋯ먼저 답안지에 성명,학년,계열,과목코드를 기입하십시오. ꋯ문항을 읽고 맞는 답을 답란에 표시하십시오. ꋯ문항배점은 문항위에 표시된 배점표를 참고하십시오. (가) ᄀ환도를 하고 폐허가 된 서울에 사람들의 모습 이 등장하던

More information

PART 1 CHAPTER 1 Chapter 1 Note 4 Part 1 5 Chapter 1 AcctNum = Table ("Customer").Cells("AccountNumber") AcctNum = Customer.AccountNumber Note 6 RecordSet RecordSet Part 1 Note 7 Chapter 1 01:

More information

NCS : ERP(SAP) ERP(SAP) SW IT,. SW IT 01., 05., 06., 08., 15., , 05. SW IT,,,, SAP HR,,, 4,,, SAP ABAP HR SCHEMA, BSP,

NCS : ERP(SAP) ERP(SAP) SW IT,. SW IT 01., 05., 06., 08., 15., , 05. SW IT,,,, SAP HR,,, 4,,, SAP ABAP HR SCHEMA, BSP, NCS : ERP(SAP) ERP(SAP) 20. 01. 02. 02. SW 03. 03. IT,. SW IT 01., 05., 06., 08., 15., 21. 04., 05. SW IT,,,, SAP HR,,, 4,,, SAP ABAP HR SCHEMA, BSP, SQL,,,,,,,, www.ncs.go.kr NCS : IT IT 20. 01. 02. 02.

More information

I. 회사의 개요 1. 회사의 개요 1) 회사의 법적, 상업적 명칭 당사의 명칭은 "주식회사 한글과컴퓨터"라고 표기합니다. 또한 영문으로는 "HANCOM INC." 라 표기합니다. 단, 약식으로 표기할 경우에는 (주)한글과컴퓨터라 고 표기합니다. 2) 설립일자 및 존속

I. 회사의 개요 1. 회사의 개요 1) 회사의 법적, 상업적 명칭 당사의 명칭은 주식회사 한글과컴퓨터라고 표기합니다. 또한 영문으로는 HANCOM INC. 라 표기합니다. 단, 약식으로 표기할 경우에는 (주)한글과컴퓨터라 고 표기합니다. 2) 설립일자 및 존속 반 기 보 고 서 (제 23 기) 사업연도 2012년 01월 01일 2012년 06월 30일 부터 까지 금융위원회 한국거래소 귀중 2012년 8 월 14 일 회 사 명 : 주식회사 한글과컴퓨터 대 표 이 사 : 김 상 철,이 홍 구 본 점 소 재 지 : 경기도 성남시 분당구 대왕판교로 644번길49 한컴타워 10층 (전 화) 031-627-7000 (홈페이지)

More information

중등2단계(최종)-PDF용.hwp

중등2단계(최종)-PDF용.hwp 이해와 배려, 공감을 꿈꾸며... 꿈의 학교, 모두가 행복한 서울교육을 위해 노력하고 있는 서울교육은 장애, 다문화 등의 차이가 차별과 소외를 낳지 않도록 다문화가정, 탈북학생, 장애학생 등에 대한 지원을 강화하고 있습니다. 탈북학생은 우리나라 아픈 역사의 결과라는 점에서 이해와 배려가 필요하다고 생각합니다. 특히 같은 외모와 같은 민족이라는 점에서 관심의

More information

일제.PDF

일제.PDF 19,.,. / Copyright 2004 by BookCosmos. All Rights Reserved. Summarized with the Permission from Publisher. ( ).,. 19 / 2005 1 / 384 / 11,000 -, - - - - - - - - -, - - - - - - - S ho rt S umma ry. ' ' '

More information

ESET Cyber Security Pro

ESET Cyber Security Pro : OS X ( 6.0 ) ESET, spol. s r.o. ESET Cyber Security Pro ESET, spol. s r.o. www.eset.com All rights reserved.,,,,, ESET, spol. s r.o. : www.eset.com/support REV. 6/16/2016 1. ESET...4 Cyber Security Pro

More information

INDEX 들어가기 고민하기 HTML(TABLE/FORM) CSS JS

INDEX 들어가기 고민하기 HTML(TABLE/FORM) CSS JS 개발자에게넘겨주기편한 TABLE&FORM 마크업 김남용 INDEX 들어가기 고민하기 HTML(TABLE/FORM) CSS JS 들어가기 이제는 ~ 서로간의이슈웹표준 & 웹접근성왜웹표준으로해야할까요? 모든웹페이지는 ~ 퍼블리싱순서 이제는 ~ 디자이너 디자이너 퍼블리셔 Front-end (UI 개발자 ) 퍼블리셔 Front-end (UI 개발자 ) 서버개발자 서버개발자

More information

<4D6963726F736F667420506F776572506F696E74202D205B444D435D36BFF95FB5F0C1F6C5D0B9CCB5F0BEEE20B5BFC7E220BAB8B0EDBCAD5F32303131303728C5EBC7D5BABB29>

<4D6963726F736F667420506F776572506F696E74202D205B444D435D36BFF95FB5F0C1F6C5D0B9CCB5F0BEEE20B5BFC7E220BAB8B0EDBCAD5F32303131303728C5EBC7D5BABB29> 6 디지털 미디어 동향보고_Monthly Report I. 디지털 미디어 이슈 리포트 II. 광고 집행 금액 및 트래픽 리포트 Ⅲ. 신상품 및 신규 매체 리포트 Ⅳ. 해외 및 국내 진행사례 리포트 2011-07 컨버전스실 모커팀&미디어팀 세부 목차_6 디지털 미디어 동향보고 I. 디지털 미디어 이슈 리포트 1. 온라인... 4P 2. 모바일... 7P 3.

More information

<C0BBBAB4BFACC7E0B7CF20314F4B2E687770>

<C0BBBAB4BFACC7E0B7CF20314F4B2E687770> 을병연행록 1 정훈식, 2012 1판 1쇄 인쇄 2012년 03월 10일 1판 1쇄 발행 2012년 03월 20일 지은이 홍 대 용 옮긴이 정 훈 식 펴낸이 양 정 섭 펴낸곳 _ 도서출판 경진 등 록_제2010-000004호 주 소_경기도 광명시 소하동 1272번지 우림필유 101-212 블로그 _ http://kyungjinmunhwa.tistory.com

More information

6030223.PDF

6030223.PDF ., Copyright 2004 by BookCosmos. All Rights Reserved. Summarized with the Permission from Gimm- Young Publishers, Inc.. ( ).,. /2002 8 /38 1 / 12,900, UTS., SBS. 1986 MBC < > < >, 1991 SBS < > < > < >

More information

SASS FOR WEB DESIGNERS By A Book Apart Copyright 2014 Dan Cederholm Korean Translation Edition 2014 Webactually Korea, Inc. All rights reserved. 이 책의

SASS FOR WEB DESIGNERS By A Book Apart Copyright 2014 Dan Cederholm Korean Translation Edition 2014 Webactually Korea, Inc. All rights reserved. 이 책의 댄 시더홈 Dan Cederholm 웹디자이너를 위한 SASS SASS FOR WEB DESIGNERS By A Book Apart Copyright 2014 Dan Cederholm Korean Translation Edition 2014 Webactually Korea, Inc. All rights reserved. 이 책의 한국어판 저작권은 저작권자와의

More information

컴퓨터과학과 교육목표 컴퓨터과학과의 컴퓨터과학 프로그램은 해당분야 에서 학문적 기술을 창의적으로 연구하고 산업적 기술을 주도적으로 개발하는 우수한 인력을 양성 함과 동시에 직업적 도덕적 책임의식을 갖는 IT인 육성을 교육목표로 한다. 1. 전공 기본 지식을 체계적으로

컴퓨터과학과 교육목표 컴퓨터과학과의 컴퓨터과학 프로그램은 해당분야 에서 학문적 기술을 창의적으로 연구하고 산업적 기술을 주도적으로 개발하는 우수한 인력을 양성 함과 동시에 직업적 도덕적 책임의식을 갖는 IT인 육성을 교육목표로 한다. 1. 전공 기본 지식을 체계적으로 2015년 상명대학교 ICT융합대학 컴퓨터과학과 졸업 프로젝트 전시회 2015 Computer Science Graduate Exhibition 2015 Computer Science Graduate Exhibition 1 컴퓨터과학과 교육목표 컴퓨터과학과의 컴퓨터과학 프로그램은 해당분야 에서 학문적 기술을 창의적으로 연구하고 산업적 기술을 주도적으로 개발하는

More information

......

...... Life & Power Press P R E F A C E P R E F A C E P R E F A C E C O N T E N T S 01 02 03 01 04 05 06 07 08 09 02 C O N T E N T S C O N T E N T S 10 11 12 03 13 01 01 01 12 CHAPTER 01 O O O 13 PART 01 14

More information

언리얼엔진4_내지_150126.indd

언리얼엔진4_내지_150126.indd C 2015. 박승제 All Rights Reserved. 초판 1쇄 발행 2015년 2월 10일 지은이 박승제 펴낸이 장성두 펴낸곳 제이펍 출판신고 2009년 11월 10일 제406 2009 000087호 주소 경기도 파주시 문발로 141 뮤즈빌딩 403호 전화 070 8201 9010 / 팩스 02 6280 0405 홈페이지 www.jpub.kr / 이메일

More information

zb 2) 짜내어 목민관을 살찌운다. 그러니 백성이 과연 목민관을 위해 있는 것일까? 아니다. 그건 아니다. 목민관이 백성 을 위해 있는 것이다. 이정 - ( ᄀ ) - ( ᄂ ) - 국군 - 방백 - 황왕 (나) 옛날에야 백성이 있었을 뿐이지, 무슨 목민관이 있 었던

zb 2) 짜내어 목민관을 살찌운다. 그러니 백성이 과연 목민관을 위해 있는 것일까? 아니다. 그건 아니다. 목민관이 백성 을 위해 있는 것이다. 이정 - ( ᄀ ) - ( ᄂ ) - 국군 - 방백 - 황왕 (나) 옛날에야 백성이 있었을 뿐이지, 무슨 목민관이 있 었던 zb 1) 중 2013년 2학기 중간고사 대비 국어 콘텐츠산업 진흥법 시행령 제33조에 의한 표시 1) 제작연월일 : 2013-08-21 2) 제작자 : 교육지대 3) 이 콘텐츠는 콘텐츠산업 진흥법 에 따라 최초 제작일부터 5년간 보호됩니다. 콘텐츠산업 진흥법 외에도 저작권법 에 의하여 보호되는 콘텐츠의 경우, 그 콘텐츠의 전부 또는 일부 를 무단으로 복제하거나

More information

초보자를 위한 C# 21일 완성

초보자를 위한 C# 21일 완성 C# 21., 21 C#., 2 ~ 3 21. 2 ~ 3 21.,. 1~ 2 (, ), C#.,,.,., 21..,.,,, 3. A..,,.,.. Q&A.. 24 C#,.NET.,.,.,. Visual C# Visual Studio.NET,..,. CD., www. TeachYour sel f CSharp. com., ( )., C#.. C# 1, 1. WEEK

More information

역사교과서 문제는 여전히 뜨겁다

역사교과서 문제는 여전히 뜨겁다 -제18차 교육쟁점연속 토론회- 편향의 자유 마음껏 누리는 동화책 시장 일시 : 4월 13일(월) 오후 2:00 장소 : 자유경제원 5층 회의실 -제18차 교육쟁점연속 토론회- 편향의 자유 마음껏 누리는 동화책 시장 아이들이 보는 첫 세 상, 동화책의 중요성은 여러 번 강조해도 부족합니다. 또한 양질의 동화책을 통해 아이들에게 꿈과 희망, 세상을 보는 올바른

More information

untitled

untitled 1 Â: ADOBE CONNECT ENTERPRISE «2006 Adobe Systems Incorporated. All rights reserved. Windows Macintosh Adobe Connect Enterprise. Adobe Systems Incorporated,,.. Adobe Systems Incorporated. Adobe Systems

More information

HTML5* Web Development to the next level HTML5 ~= HTML + CSS + JS API

HTML5* Web Development to the next level HTML5 ~= HTML + CSS + JS API WAC 2.0 & Hybrid Web App 권정혁 ( @xguru ) 1 HTML5* Web Development to the next level HTML5 ~= HTML + CSS + JS API Mobile Web App needs Device APIs Camera Filesystem Acclerometer Web Browser Contacts Messaging

More information

Lab10

Lab10 Lab 10: Map Visualization 2015 Fall human-computer interaction + design lab. Joonhwan Lee Map Visualization Shape Shape (.shp): ESRI shp http://sgis.kostat.go.kr/html/index.html 3 d3.js SVG, GeoJSON, TopoJSON

More information

145x205_향토사자료집책자_내지0121.indd

145x205_향토사자료집책자_내지0121.indd 대구 동구의 대구 동구의 김기현 지음 대구 동구의 발행일 2013년 1월 21일 지은이 김기현 발행인 김성수 발행처 대구동구팔공문화원 주소 701-400 대구시 동구 백안동 656-8 전화 053-984-8774 팩스 053-984-8771 전자우편 80cul@hanmail.net 홈페이지 http://www.palgong.or.kr 편집디자인 제작 도서출판

More information