리덕스를 도입할 때 주저하게 만드는 장벽들
○ 개요
몹엑스, 아폴로, 컨텍스트 API 등 리덕스를 도입하기도 전에 이미 선택적인 고민을 하게 만듭니다. 리덕스를 도입한 후에도 사가, 펜더, 옵져버블등의 미들웨어의 도입에서도 선택 장애가 발생하는 문제들이 리덕스 선택을 주저하게 만듭니다.
2020년 리덕스는 좋은 선택지 일까요? 리덕스는 언제 그리고 어떻게 사용해야 활용도를 높일 수 있을까요? 에어비앤비 결제 시스템과 3차원 시각화 시스템에 적용한 리덕스 활용 사례를 살펴보며 리덕스의 효용 가치를 같이 살펴보고자 합니다.
○ 목차
- 형상관리를 어렵게 하는 요소들
- MobX vs Redux
- 단방향 데이터 흐름(Flux)
- 미들웨어 살펴보기
- 리덕스와 미들웨어 활용 데모
- Typescript와 GraphQL 도입 사례
Android DataBinding
: 기초에서 고급까지
송유섭
NAVER / 라이브서비스개발
네이버에서 7년째 개발하고 있는 안드로이드 개발자 입니다. 갤럭시S가 출시때부터 안드로이드 개발을 해왔으며, 네이버 입사전에는 음성인식 앱인 Seri, 스마트폰 사용제한 앱인 '하지마 Not todo List'등을 만들었습니다. 네이버에서는 현재 PRISM이라는 라이브/동영상 촬영 및 편집 앱을 담당해서 개발하고 있습니다.
Sorry. for koreans only. I'll add english short description. or just visit http://wtfjs.com
아오 썅.
정정사항입니다.
객체 동일비교는 항상 valueOf 결과물로 나온 비교로 하는 데다가,
객체와 배열은 valueOf 해봐야 객체로 나오기 때문에
객체와 배열은 == 하나 === 하나 같은 비용으로 비교합니다.
[1,2,3]==[1,2,3] 은 false가 되므로
[1,,,2]==[1,undefined,undefuned,2] 는 무조건 false로 나옵니다.
Angular2는 컴포넌트 중심의 개발 접근 방식에 대한 내용을 가집니다. 따라서 본 슬라이드도 컴포넌트 중심의 개발 접근 방식으로 Angular2를 바라보았습니다.
대략적인 내용은 다음과 같습니다.
- Angular2 History
- Angular2 핵심구성요소
- 컴포넌트 중심의 개발
- Angular2 주요개념
- Type Script에대한 설명
- 기타
필요하신 분에게 도움이 되었으면 좋겠습니다. 관련 코드는 다음 주소에 공유하였습니다.
https://github.com/DaeguDevGroup/angular2-bootstrap
- 내용이 업데이트되거나, 추가되면 설명에 이력을 남기겠습니다.
- 본 슬라이드에 오류가 있다면 코멘트 바랍니다.
*Change Log*
- 2016-05-14 : 슬라이드 첫 버전을 업로드
Angular 2 진행 상황과 장애물에 대해 설명했다. 주요 장애물은 빠른 변화, 새로운 개발 언어와 도구의 사용, 문법의 변화 등이 있다. 반면 Angular 2의 장점은 성능 향상, 체계적인 개발 방식 지원 등이 있다. 결론적으로 Angular 2는 아직 사용하기 이르나, 향후 주
리덕스를 도입할 때 주저하게 만드는 장벽들
○ 개요
몹엑스, 아폴로, 컨텍스트 API 등 리덕스를 도입하기도 전에 이미 선택적인 고민을 하게 만듭니다. 리덕스를 도입한 후에도 사가, 펜더, 옵져버블등의 미들웨어의 도입에서도 선택 장애가 발생하는 문제들이 리덕스 선택을 주저하게 만듭니다.
2020년 리덕스는 좋은 선택지 일까요? 리덕스는 언제 그리고 어떻게 사용해야 활용도를 높일 수 있을까요? 에어비앤비 결제 시스템과 3차원 시각화 시스템에 적용한 리덕스 활용 사례를 살펴보며 리덕스의 효용 가치를 같이 살펴보고자 합니다.
○ 목차
- 형상관리를 어렵게 하는 요소들
- MobX vs Redux
- 단방향 데이터 흐름(Flux)
- 미들웨어 살펴보기
- 리덕스와 미들웨어 활용 데모
- Typescript와 GraphQL 도입 사례
Android DataBinding
: 기초에서 고급까지
송유섭
NAVER / 라이브서비스개발
네이버에서 7년째 개발하고 있는 안드로이드 개발자 입니다. 갤럭시S가 출시때부터 안드로이드 개발을 해왔으며, 네이버 입사전에는 음성인식 앱인 Seri, 스마트폰 사용제한 앱인 '하지마 Not todo List'등을 만들었습니다. 네이버에서는 현재 PRISM이라는 라이브/동영상 촬영 및 편집 앱을 담당해서 개발하고 있습니다.
Sorry. for koreans only. I'll add english short description. or just visit http://wtfjs.com
아오 썅.
정정사항입니다.
객체 동일비교는 항상 valueOf 결과물로 나온 비교로 하는 데다가,
객체와 배열은 valueOf 해봐야 객체로 나오기 때문에
객체와 배열은 == 하나 === 하나 같은 비용으로 비교합니다.
[1,2,3]==[1,2,3] 은 false가 되므로
[1,,,2]==[1,undefined,undefuned,2] 는 무조건 false로 나옵니다.
Angular2는 컴포넌트 중심의 개발 접근 방식에 대한 내용을 가집니다. 따라서 본 슬라이드도 컴포넌트 중심의 개발 접근 방식으로 Angular2를 바라보았습니다.
대략적인 내용은 다음과 같습니다.
- Angular2 History
- Angular2 핵심구성요소
- 컴포넌트 중심의 개발
- Angular2 주요개념
- Type Script에대한 설명
- 기타
필요하신 분에게 도움이 되었으면 좋겠습니다. 관련 코드는 다음 주소에 공유하였습니다.
https://github.com/DaeguDevGroup/angular2-bootstrap
- 내용이 업데이트되거나, 추가되면 설명에 이력을 남기겠습니다.
- 본 슬라이드에 오류가 있다면 코멘트 바랍니다.
*Change Log*
- 2016-05-14 : 슬라이드 첫 버전을 업로드
Angular 2 진행 상황과 장애물에 대해 설명했다. 주요 장애물은 빠른 변화, 새로운 개발 언어와 도구의 사용, 문법의 변화 등이 있다. 반면 Angular 2의 장점은 성능 향상, 체계적인 개발 방식 지원 등이 있다. 결론적으로 Angular 2는 아직 사용하기 이르나, 향후 주
[Angularjs 도입 선택 가이드]
본 문서는 네이버 개발자 블로그 hello world 를 통해서 공개되었습니다.
[문서개요]
이 문서는 AngularJS를 사용한 애플리케이션 개발을 계획하고 있거나 AngularJS 도입을 고려 중일 때 참고 할 만한 내용을 기술한다. AngularJS를 사용하는 방법을 다루지는 않는다.
이 문서의 모든 내용은 AngularJS 버전 1.3.x를 기준으로 작성되었다.
Angular 2는 HTML 5 웹 컴포넌트 기술을 포함합니다. 이 기술은 Angular 2 컴포넌트를 존재케한 기반기술입니다. 본 슬라이드는 이와 관련하여 2가지 흐름을 가지고 있습니다.
- 전반부는 웹 컴포넌트가 Angular 2 컴포넌트가 되기까지의 과정을 설명합니다.
- 후반부는 컴포넌트 트리 구조를 기반으로한 컴포넌트 상호작용에 대해 설명합니다.
필요하신 분에게 조금이라도 도움이 되었으면 좋겠습니다. 감사합니다.
CHANGE LOG
2016-06-27 : @input 데코레이터 설명교정
2016-06-26 : 쉐도우 돔 / 쉐도우 호스트관련 보다 정확한 문장으로 수정
2016-06-25 : 업로드
Angular를 활용한 웹 프론트단 개발과 2.0에서 달라진점Jeado Ko
Angular를 활용한 웹 프론트단 개발과 2.0에서 달라진점은 Angular 2.0에서 컴포넌트 기반 아키텍처로 변경되었다고 설명했습니다. Angular 2.0에서는 타입스크립트를 사용하며 컴포넌트, 디렉티브, 템플릿 등의 개념이 도입되었습니다. 또한 Angular 2.0
AngularJS 2는 올해 릴리징된 프론트엔드 도구 중 가장 쿨하고 섹시한 도구라고 독자는 믿고있습니다.
AngularJS 2를 실무환경에 적용함으로 얻는 이점.
AngularJS 2와 1의 차이점과 성능.
그리고 ReactJS와 AngularJS 2를 비교하여 퍼포먼스 데이터를 보여줍니다.
마지막으로 AngularJS 2 사용을 위한 번들러(Bundler) 그 중 Webpack, Systemjs, JSPM에 대해서도 안내합니다.
해당 자료는 XECon 2016에 발표되었습니다.
Generators in ECMAScript provide a way to write iterator functions using the yield keyword. This allows for writing functions that can be iterated over manually or used to create infinite streams. Generators also enable asynchronous programming using coroutines instead of callbacks. They allow for cooperative multitasking by starting multiple generator functions as "threads" that yield values in a nondeterministic order. Array comprehensions are also proposed as a shorthand for transforming arrays using generators.
Ionic adventures - Hybrid Mobile App Development rocksJuarez Filho
The document discusses hybrid mobile development with a focus on the use of the Ionic framework, emphasizing a single codebase for multiple platforms and the benefits of hybrid apps. It contrasts hybrid applications with native apps, pointing out the challenges and advantages of each approach. The document also provides resources, installation instructions, and links to various tools and tutorials related to Ionic development.
This document provides a summary of Han Janghyun's background and experience. It includes:
1. Han Janghyun previously worked as a senior developer at Samsung SDS and has experience implementing TV platform JavaScript applications and retail solution servers and frontends.
2. He now works as a freelance developer and operates the blog han41858.tistory.com. He is also writing a translation of the book Angular 2.
3. Han Janghyun is also involved in operating GDG Korea Web Tech.
Introduction to Type Script by Sam Goldman, SmartLogicSmartLogic
The document introduces TypeScript, describing it as a superset of JavaScript that adds optional static types and transpiles some ECMAScript 2015+ features. It discusses TypeScript's structural type system and type inference, provides examples of structural typing and generics, and describes how to define types for external libraries, write tests, and build a TypeScript project.
TypeScript is a superset of JavaScript that adds static typing and classes to address the problem of writing large applications in JavaScript. It allows for intelligent IDE features like autocompletion and refactoring by adding types that are removed during compilation, ultimately producing plain JavaScript code. TypeScript aims to make large scale JavaScript development easier with types and tooling while still targeting the JavaScript that browsers understand.
This document discusses TypeScript, Dart, and CoffeeScript as alternatives to JavaScript for large scale development. It presents demos of TypeScript's type system, classes, interfaces, and modules. The final section demonstrates a TypeScript "Hello World" app running on Node.js and Azure with features like IntelliSense, debugging, and profiling.
Il documento presenta una guida alla migrazione da JavaScript a TypeScript, evidenziando i benefici di TypeScript per gestire applicazioni complesse in team di sviluppo. Viene fornita un'agenda che discute la storia di JavaScript, l'importanza di TypeScript e come integrare soluzioni esistenti senza dover rifare l'intera codebase. Inoltre, si accenna agli strumenti e tecnologie essenziali per lo sviluppo con TypeScript.
탑크리에듀(www.topcredu.co.kr), 송석원 교수의 IT기술칼럼#2
자바스크립트는 ES6버전에서 class 키워드를 도입했습니다. 자바스크립트는 객체지향 언어였지만 다른 객체지향언어처럼 사용하기에는 많은 불편함이 있었습니다. 심지어 자바스크립트는 객체지향언어라고 볼 수 없다고 하는 분들도 있었을 정도였죠. 최근에 선풍적인 인기를 얻고 있는 React, Angular 같은 기술은 클래스 문법을 채택했습니다. 따라서, 클래스 문법에 대한 이해가 깊다면 새로운 기술을 습득할 때 많은 도움이 될 것 입니다.
다른 객체지향 언어와 자바스크립트의 차이를 이해하지 못하고 사용하게 되면 많은 문제점이 발생합니다. 안타깝지만 자바스크립트를 사용하고 있는 개발자들 중에서도 제대로 이해하고 사용하시는분은 많지 않은 듯 합니다.
이를 해소하기 위해서 새로 도입한 문법이 class 키워드로 대표되는 클래스 문법입니다. 객체지향 개발방법의 익숙한 개발자들을 위해서 자바스크립트가 새로운 문법을 도입한 것 입니다. 개인적으로 “JavaScript: The Good Parts”의 저자이신 Douglas Crockford 님께서 이를 어떻게 생각하는지 궁금합니다. 자바스크립트를 자바처럼 사용하는 것에 우려를 표하셨었는데, 그 사이 많은 시간이 지났으므로 입장이 바뀌었을지 궁금하군요. 선도적인 개발자들은 ES6에서 도입한 클래스 문법이 좋은 것인가 나쁜 것인가를 갖고 토론을 하기도 합니다.
2. Type script 란?
1. MS에서 만든 scrip로 C++/C#과 유사하다.
2. 타입스크립트는 자바스크립트 슈퍼셋 언어다.
3. 모든 브라우저, 호스트, 모든 OS에서 호환이 되며, 오픈소스다.
4. 확장성을 위해 ts를 js로 컴파일 하여 사용한다.
5. ES6에 기반을 두고 있다.
6. 많은 IDE 에서 지원을 하고 있다.
3. 설치
설치는 총 2가지의 방법이 있다.
1. Node Js를 이용한 설치
npm install –g typescript
2. Visual Studio plugins
Visual Studio 2015, 2013, code
Sublime Text
Atom
Eclipse
Emacs
WebStorm
Vim
4. 타입 주석(Type annotation)
아래와 같이(: 변수타입) 타입 주석(Type annotations)을 사용한다.
1. boolean
2. number
3. string
4. array
- var array: number[] = [1,2,3];
- var array: Array<number> = [1,2,3];
5. enum
- C#과 Object-c 같은 언어와 마찬가지로 enum제공
- 값의 할당이 없으면 0으로 시작.
- 시작 값의 변경은 첫번째 변수에만 값을 할당해주면 된다.
* enum Week {sunday = 1, monday, tuesday}
- enum값 참조
* var week: Week = Week.Monday -> 1로 출력 (시작이 0일경우)
* var day: string = Weel[1] -> monday 출력
6. any
7. void (함수 반환에서 사용)
var 변수명 : 변수타입 = 값
function getter() : string {
return “hello world”
}
1. 변수 값 선언
2. 함수의 리턴
function getter(person: string) : string {
return `hello ${person}`
}
3. 함수의 인자값
5. 인터페이스(interface)
변수 값의 이름과 타입을 정의해주는 역할을 한다.
아래와 같이 진행 했을 시 size가 없어서 typescript에서 에러는 나지만 size 값까지 잘 출력이 된다.
인터페이스 객체를 속성으로 담을 수도 있지만 함수 자체를 속성으로 담을 수도 있다.
interface SearchFunc {
(source: string, subString: string): boolean;
}
let mySearch: SearchFunc;
mySearch = (source: string, subString: string) => {
var result = source.search(subString);
if (result == -1) {
return false;
}
else {
return true;
}
};
console.log(mySearch("aaaab", "b"));
var mySearch; // interface call
mySearch = function (source, subString) {
var result = source.search(subString);
if (result == -1) {
return false;
}
else {
return true;
}
};
console.log(mySearch("aaaab", "b"));
//# sourceMappingURL=helloWord.js.map
function printLabel(labelledObj) {
console.log(labelledObj.label);
}
var myObj = { size: 10, label: "Size 10 Object" };
printLabel(myObj);
//# sourceMappingURL=helloWord.js.map
interface LabelledValue {
label: string;
}
function printLabel(labelledObj: LabelledValue) {
console.log(labelledObj.label);
}
let myObj = {size: 10, label: "Size 10 Object"};
printLabel(myObj);
6. 클래스(Class)
기존 자바스크립트에 있는 function & prototy 기반의 상속은
OOP를 좀더 편하게 해주는 거라고 생각하면 된다.
class Greeter {
/* 타입어노테이션이 추가 된 것 말고는 ES6와 똑같다. */
greeting: string;
constructor(message: string) {
this.greeting = message;
}
greet() {
return "Hello, " + this.greeting;
}
}
let greeter = new Greeter("world");
console.log(greeter.greet());
var Greeter = (function () {
function Greeter(message) {
this.greeting = message;
}
Greeter.prototype.greet = function () {
return "Hello, " + this.greeting;
};
return Greeter;
}());
var greeter = new Greeter("world");
console.log(greeter.greet());
//# sourceMappingURL=helloWord.js.map
7. 클래스(Class) - 상속
class Animal {
name:string;
constructor(theName: string) {
this.name = theName;
}
/* meters값이 없으면 0로 셋팅 */
move(meters: number = 0) {
console.log(this.name + " moved " + meters + "m.");
}
}
class Snake extends Animal {
constructor(name: string) {
super(name);
}
/* meters값이 없으면 5로 셋팅 */
move(meters = 5) {
console.log("Slithering...");
super.move(meters);
}
}
let snake = new Snake('test');
snake.move();
기본적인 상속과 동일하게 메소드 오버라이드부터 super등의 키워드 사용가능하다.
8. 모듈(Module)
관련된 인터페이스, 클래스, 함수 등을 묶어서 관리해준다.
export module Sayings {
export class Greeter {
greeting: string;
constructor(message: string) {
this.greeting = message;
}
greet() {
return `Hello, ${this.greeting}`;
}
}
}
helloWord.ts
import {Sayings} from "./helloWord";
let sayings = new Sayings.Greeter("Kwon");
console.log(sayings.greet());
import.ts
결과 값으로 Hello, Kwon 출력
9. 제네릭(Generics)
처음부터 데이터 타입을 정해놓지 않고 임의타입으로 명시해준 후 나중에
직접적으로 해당 구문을 사용할 때 지정하여 사용하는 형태
function identity<T>(arg: T): T {
return arg;
}
let myArgNumber = identity<number>(32);
console.log(`${typeof myArgNumber} type: ${myArgNumber}`); // number type: 32;
let myArgString = identity<string>("32");
console.log(`${typeof myArgString} type: ${myArgString}`); // string type: 32;
10. tsconfig.json
Typescript 1.5부터 추가된 것 Typescript 설정과 Exclude 하고 싶은 폴더나 파일, Compile 옵션, File 옵션등을 설정 할 수 있다.
TypeScript의 컴파일러인 tsc 명령 수행시 참조한다.
{
"compilerOptions": {
"module": "commonjs",
"target": "es5",
"sourceMap": true
},
"exclude": [
"node_modules"
],
"files": [
"core.ts",
"sys.ts",
"types.ts",
"scanner.ts",
"parser.ts",
"utilities.ts"
]
}
http://www.typescriptlang.org/docs/handbook/tsconfig.json.html
11. Typings
쉽게 말해서 외부라이브로리 혹은 프레임워크를 좀더 편하게 쓸 수 있게 가이드 하는 역할이다.
- tsd라는 것을 사용하였지만 지금은 Typings를 사용하고 있다. angular2.0에서도 Typings를 사용하고 있다.
1. typings 설치
- npm install typings –g
2. typings 사용한다고 정의
- typings init
3. 사용할 typings 설치
- typings install jquery --ambient --save
12. Angular2 시작하기
1. NodeJs 설치
2. 프로젝트 만들기(폴더 만들기)
3. tsconfig.json 설정(타입스크립트 설정)
4. typings.json 설정 (typings 설정)
5. package.json 설정 (npm 설정)
6. npm install
https://angular.io/docs/ts/latest/quickstart.html