SlideShare a Scribd company logo
1 of 42
Modern Front End
Technology
Ship
Agenda
• Web Technology Trend
• Website technology evaluation
• Frontend/Backend Technology
• Functional Programming
• Nodejs/React/Flux/Redux/Webpack
• Web Timeline
• 網頁設計?
The Most Basic Technology
Socket Programming
Socket Programming Flow
TCP UDP
Socket Programming on LINUX using C
Parent Child1
Child2
Child3
Parent
Parent
Parent
fork
fork
fork
Parent
Child
Regular HTTP Demo http://www.ltn.com.tw
Traditional Backend–Mix code and HTML Together
Rasmus Lerdorf
MVC Structure
MVC Example - CodeIgniter
http://example.com/news/show/1
request
data
Controller
Model View
/Controller/Method/para1/para2/para3...
Frontend - AJAX (Asynchronous JavaScript and XML)
REST API
JSON data
Example: http://www.mediatek.com/
JSON is won already! ref
Frontend Library - jQuery
http://api.jquery.com/show/ https://api.jquery.com/category/selectors/
Frontend/Backend Interaction
2. AJAX Polling1. Regular HTTP
3. AJAX Long Polling 4. WebSocket
Polling vs WebSocket Throughput comparison
前情提要結束.......Take a breath
• 進入主題前,還有一件事情必須先知道......
Functional Programming
Lambda Calculus
Ref: What is a lambda (function)?
What is Lambda Calculus and should you care?
A Tutorial Introduction to the Lambda Calculus
More lambda calculus:
Thinking in Machine
• Imperative JavaScript
inputArray = {“how”, “are”, “you”}
result = {“How”, “Are”, “You”}
“how“ => “How”
{“How”, “Are”, “You”}=>”How Are You”
Thinking in Object
• Object-Oriented JavaScript
textArray = {“how”, “are”, “you”}
result = {“How”, “Are”, “You”}
“how“ => “How”
return “How Are You”
Thinking in Function
• Functional JavaScript
“how“ => “How”
“how are you”=> {“how”, “are”, “you”}“how are you”=> {“how”, “are”, “you”}=>{“How”, “Are”, “You”}“how are you”=> {“how”, “are”, “you”}=>{“How”, “Are”, “You”}=>”How Are You”
Functional Programming !
Comparison
1. Human readable
2. Efficiency
3. Line numbers
Imperative Object-Oriented
Functional Programming
Why Line Numbers Is A Matter
• Norris Number http://www.techug.com/norris-numbers
• Line numbers of code before you hit a wall
• Un-organized code: 1,500~2,000
• Well-organized code: 20,000
Edsger W. Dijkstra
Functional Programming
Functional Programming Concepts
• FP的共同點在於:
• 「沒有副作用」(Side Effect)、「第一級函數」(First-Class Function)。
「沒有副作用」是指在表示式(expression)內不可以造成值的改變;
「第一級函數」是指函數被當作一般值對待,而不是次級公民,
也就是說,函數可當作「傳入參數」或「傳出結果」。
• FP和我們慣用的編寫程式風格,有相當大的差異。
• Imperative Programming認為程式的執行,就是一連串狀態的改變;
• FP將程式的運作,視為數學函數的計算,且避免「狀態」和「可變資料」。
Ref: 思考函數編程(二)Why FP
Functional Programming Concepts
1. Avoiding Mutable State
2. Recursion
3. High-Order Functions
4. Function Composition
5. Lazy Evaluation
Ref: 那些 Functional Programming 教我的事
Call by need
全世界的語言 都往 Functional Programming 發展
http://www.codedata.com.tw/social-coding/paradigm-shift-to-functional-programming/
Ref: What is a lambda (function)?
Functional Programming In Action
Ref: 那些 Functional Programming 教我的事
Let's get into modern front-end technology.
Nodejs
• 2009.5 Ryan Dahl發布於GitHub
• 使用Google V8 engine 的 Web & Socket Server
• 使用Javascript編寫Backend (前後端統一,減少開發成本)
• Single Thread, Event Driven, Non-Blocking IO
• Strongly Community Support: NPM
Nodejs
• Why single thread?
Ref: Nodejs Explained with Examples
Nodejs
Ref: Callback Hell vs. Async vs. Highland
Sounds great? How about this?
Yes...It’s called callback hell.
How to resolve? PromiseJS!
Blocking IO Non-Blocking IO
Nodejs
• Who use Nodejs
Ref: Projects, Applications, and Companies Using Node
React
• Facebook open source project
• 集中散落在四處的程式碼:event binding/control flow/status maintain....
• Just Component
Ref: ReactJS & why it’s awesome
React
• Why amazing?
1. Everything is a component
2. Single source of truth(SSOT)
3. Virtual DOM
Ref: ReactJS & why it’s awesome
Always redraw!
Virtual DOM:
compare virtual/real DOM tree, calculate the
minimize set to re-render
Property, State
View Event
Parent
Always redraw!
SSOT:
Flux
• MVC trouble
Ideal world
Real world
Flux
Redux
• A implementation and improvement of FLUX.
• Three principle:
1. Single source of truth
The state of your whole application is stored in an object tree within a single store.
2. State is read-only
The only way to mutate the state is to emit an action, an object describing what happened.
3. Changes are made with pure functions
GitHub: https://github.com/rackt/redux
Document: http://redux.js.org/docs/introduction/Motivation.html
Which Flux implementation should I use?
UNIDIRECTIONAL USER INTERFACE ARCHITECTURES
Old state
New state
Reducer:
Webpack+Babel
• Webpack bundle multiple files to 1 file.
• Babel compile source javascript file to target javascript file.
Webpack: https://github.com/webpack/webpack
Babel: https://babeljs.io/
Webpack+Babel
• Webpack bundle multiple files to 1 file.
• With minify & uglyfy
Javascript in ES2015
Webpack+Babel
• Isomorphic
Common code
Front-end code back-end code
Babel compile
App.js
Run on browser(ES5)
App.js
Run on server(ES6)
Quick Note
1. Functional Programming 是趨勢,且是現在進行式。
2. Single Thread + Non-blocking IO + Event base 會愈來愈常見。
3. 程式語言的易用性日顯重要。
4. React+Redux+Nodejs 目前是黃金組合。
5. 前端變化的太快了,還是好好寫Driver就好(誤
Reference
• 那些 Functional Programming 教我的事 http://www.slideshare.net/ihower/fp-osdc2012v2
• 當 全世界的語言 都往 Functional Programming 發展 http://www.codedata.com.tw/social-coding/paradigm-shift-to-functional-programming/
• 思考函數編程(一)Language is Functional Again http://www.jerry-tsai.com/2008/05/fp_22.html
• 思考函數編程(三)FP is as FP does http://www.jerry-tsai.com/2008/06/fp-is-as-fp-does.html
• 函数式编程很难,这正是你要学习它的原因 http://www.vaikan.com/functional-programming-is-hard-thats-why-its-good/
• OO vs FP http://blog.cleancoder.com/uncle-bob/2014/11/24/FPvsOO.html
• 函数式编程初探 http://www.ruanyifeng.com/blog/2012/04/functional_programming.html
• Understanding the node.js event loop http://blog.mixu.net/2011/02/01/understanding-the-node-js-event-loop/
• An Introduction to Functional JavaScript http://www.sitepoint.com/introduction-functional-javascript/
• March 2015 Web Server Survey http://news.netcraft.com/archives/2015/03/19/march-2015-web-server-survey.html
• Comparison of the usage of Apache vs. Nginx vs. Node.js for websites http://w3techs.com/technologies/comparison/ws-apache,ws-nginx,ws-
nodejs
• socket-programming-筆記 http://kezeodsnx.pixnet.net/blog/post/27462696-socket-programming-%E7%AD%86%E8%A8%98
• GNU Porgramming http://www.tenouk.com/cnlinuxsockettutorials.html
• Web开发技术的演变 http://www.evolutionoftheweb.com/?hl=zh-tw#/evolution/day
• 網站技術發展史 http://jaceju.net/2012/11/21/webdev-history/
• Top 10 web development trends and predictions for 2015 http://www.zingdesign.com/top-10-web-development-trends-and-predictions-for-
2015/#motion-ui
• 1989-2014 網頁設計的演變 https://designrockin.wordpress.com/2014/12/10/1989-2014-
%E7%B6%B2%E9%A0%81%E8%A8%AD%E8%A8%88%E7%9A%84%E6%BC%94%E8%AE%8A/
• 網路演進 http://www.evolutionoftheweb.com/?hl=zh-tw#/evolution/day
• What are Long-Polling, Websockets, Server-Sent Events (SSE) and Comet? http://stackoverflow.com/questions/11077857/what-are-long-polling-
websockets-server-sent-events-sse- nd-comet
• Introduction to HTML5 WebSocket http://www.codeproject.com/Articles/531698/Introduction-to-HTML-WebSocket
• Thinking in react https://facebook.github.io/react/docs/videos.html
• React JS and why it's awesome http://www.slideshare.net/AndrewHull/react-js-and-why-its-awesome?qid=c07b596e-8ca4-4a53-8c55-
83dd70756321&v=default&b=&from_search=1

More Related Content

What's hot

What is front-end development ?
What is front-end development ?What is front-end development ?
What is front-end development ?Mahmoud Shaker
 
It's Time for Silverlight @iRajLal
It's Time for Silverlight @iRajLalIt's Time for Silverlight @iRajLal
It's Time for Silverlight @iRajLalRaj Lal
 
Flash skills for silverlight design and development (30 Abr 2010)
Flash skills for silverlight design and development (30 Abr 2010)Flash skills for silverlight design and development (30 Abr 2010)
Flash skills for silverlight design and development (30 Abr 2010)Ricardo Castelhano
 
The Egg Analogy: The Problem With Designer and Developer Workflow in Software...
The Egg Analogy: The Problem With Designer and Developer Workflow in Software...The Egg Analogy: The Problem With Designer and Developer Workflow in Software...
The Egg Analogy: The Problem With Designer and Developer Workflow in Software...Chris Bernard
 
The Full Stack Web Development
The Full Stack Web DevelopmentThe Full Stack Web Development
The Full Stack Web DevelopmentSam Dias
 
Essential as the base for Web DSLs
Essential as the base for Web DSLsEssential as the base for Web DSLs
Essential as the base for Web DSLsPedro J. Molina
 
Lead developer position
Lead developer positionLead developer position
Lead developer positionMark Long
 
Front-end Vs. Back-end Development
Front-end Vs. Back-end DevelopmentFront-end Vs. Back-end Development
Front-end Vs. Back-end Developmentwebdesignjhb9
 
Latest Web development technologies 2021
 Latest Web development technologies 2021 Latest Web development technologies 2021
Latest Web development technologies 2021SWATHYSMOHAN
 
DrupalCon Europe 2020 Low Code
DrupalCon Europe 2020 Low CodeDrupalCon Europe 2020 Low Code
DrupalCon Europe 2020 Low CodeAlejandro Moreno
 
.NET ONLINE TRAINING COURSE CONTENT
.NET ONLINE TRAINING COURSE CONTENT .NET ONLINE TRAINING COURSE CONTENT
.NET ONLINE TRAINING COURSE CONTENT raaviraja
 

What's hot (20)

What is front-end development ?
What is front-end development ?What is front-end development ?
What is front-end development ?
 
It's Time for Silverlight @iRajLal
It's Time for Silverlight @iRajLalIt's Time for Silverlight @iRajLal
It's Time for Silverlight @iRajLal
 
Web Application
Web ApplicationWeb Application
Web Application
 
Brandon Miller Resume
Brandon Miller ResumeBrandon Miller Resume
Brandon Miller Resume
 
niharika saxena
niharika saxenaniharika saxena
niharika saxena
 
Flash skills for silverlight design and development (30 Abr 2010)
Flash skills for silverlight design and development (30 Abr 2010)Flash skills for silverlight design and development (30 Abr 2010)
Flash skills for silverlight design and development (30 Abr 2010)
 
The Egg Analogy: The Problem With Designer and Developer Workflow in Software...
The Egg Analogy: The Problem With Designer and Developer Workflow in Software...The Egg Analogy: The Problem With Designer and Developer Workflow in Software...
The Egg Analogy: The Problem With Designer and Developer Workflow in Software...
 
Flex and Zend Framework
Flex and Zend FrameworkFlex and Zend Framework
Flex and Zend Framework
 
Net development
Net developmentNet development
Net development
 
dot net
dot netdot net
dot net
 
The Full Stack Web Development
The Full Stack Web DevelopmentThe Full Stack Web Development
The Full Stack Web Development
 
Net development
Net developmentNet development
Net development
 
Meow Demo
Meow DemoMeow Demo
Meow Demo
 
Essential as the base for Web DSLs
Essential as the base for Web DSLsEssential as the base for Web DSLs
Essential as the base for Web DSLs
 
Lead developer position
Lead developer positionLead developer position
Lead developer position
 
TypeScript
TypeScriptTypeScript
TypeScript
 
Front-end Vs. Back-end Development
Front-end Vs. Back-end DevelopmentFront-end Vs. Back-end Development
Front-end Vs. Back-end Development
 
Latest Web development technologies 2021
 Latest Web development technologies 2021 Latest Web development technologies 2021
Latest Web development technologies 2021
 
DrupalCon Europe 2020 Low Code
DrupalCon Europe 2020 Low CodeDrupalCon Europe 2020 Low Code
DrupalCon Europe 2020 Low Code
 
.NET ONLINE TRAINING COURSE CONTENT
.NET ONLINE TRAINING COURSE CONTENT .NET ONLINE TRAINING COURSE CONTENT
.NET ONLINE TRAINING COURSE CONTENT
 

Viewers also liked

TechTalk #85 : Latest Frontend Technologies
TechTalk #85 : Latest Frontend TechnologiesTechTalk #85 : Latest Frontend Technologies
TechTalk #85 : Latest Frontend Technologiesbincangteknologi
 
Volume 01[1].07 ships and marine technology
Volume 01[1].07 ships and marine technologyVolume 01[1].07 ships and marine technology
Volume 01[1].07 ships and marine technologyRamesh M
 
Technology sailing effects
Technology sailing effectsTechnology sailing effects
Technology sailing effectsChris Sandström
 
Front-end technologies for Wonderful User Experience through Websites
Front-end technologies for Wonderful User Experience through WebsitesFront-end technologies for Wonderful User Experience through Websites
Front-end technologies for Wonderful User Experience through WebsitesReady Bytes Software labs
 
Sinau Bareng Frontend Web Development @ DiLo Malang
Sinau Bareng Frontend Web Development @ DiLo MalangSinau Bareng Frontend Web Development @ DiLo Malang
Sinau Bareng Frontend Web Development @ DiLo MalangMoch. Zamroni
 
Front end Tips Tricks & Tools
Front end Tips Tricks & ToolsFront end Tips Tricks & Tools
Front end Tips Tricks & ToolsSandeep Ramgolam
 
Webinar: Front End Web Development - Trendy Web Designs Using HTML5
Webinar: Front End Web Development - Trendy Web Designs Using HTML5Webinar: Front End Web Development - Trendy Web Designs Using HTML5
Webinar: Front End Web Development - Trendy Web Designs Using HTML5Edureka!
 
Frontend automation and stability
Frontend automation and stabilityFrontend automation and stability
Frontend automation and stabilityMáté Nádasdi
 
Front End Tooling and Performance - Codeaholics HK 2015
Front End Tooling and Performance - Codeaholics HK 2015Front End Tooling and Performance - Codeaholics HK 2015
Front End Tooling and Performance - Codeaholics HK 2015Holger Bartel
 
User eXperience & Front End Development
User eXperience & Front End DevelopmentUser eXperience & Front End Development
User eXperience & Front End Developmentandreafallaswork
 
Architecting your Frontend
Architecting your FrontendArchitecting your Frontend
Architecting your FrontendRuben Teijeiro
 
Grunt js for the Enterprise Vol.1: Frontend Performance with Phantomas
Grunt js for the Enterprise Vol.1: Frontend Performance with PhantomasGrunt js for the Enterprise Vol.1: Frontend Performance with Phantomas
Grunt js for the Enterprise Vol.1: Frontend Performance with PhantomasDavid Amend
 
建立前端开发团队 (Front-end Development Environment)
建立前端开发团队 (Front-end Development Environment)建立前端开发团队 (Front-end Development Environment)
建立前端开发团队 (Front-end Development Environment)Joseph Chiang
 
Wrangling Large Scale Frontend Web Applications
Wrangling Large Scale Frontend Web ApplicationsWrangling Large Scale Frontend Web Applications
Wrangling Large Scale Frontend Web ApplicationsRyan Roemer
 
A modern front end development workflow for Magnolia at Atlassian
A modern front end development workflow for Magnolia at AtlassianA modern front end development workflow for Magnolia at Atlassian
A modern front end development workflow for Magnolia at AtlassianMagnolia
 
How to Build Front-End Web Apps that Scale - FutureJS
How to Build Front-End Web Apps that Scale - FutureJSHow to Build Front-End Web Apps that Scale - FutureJS
How to Build Front-End Web Apps that Scale - FutureJSPhil Leggetter
 
W3 conf hill-html5-security-realities
W3 conf hill-html5-security-realitiesW3 conf hill-html5-security-realities
W3 conf hill-html5-security-realitiesBrad Hill
 
Frontend at Scale - The Tumblr Story
Frontend at Scale - The Tumblr StoryFrontend at Scale - The Tumblr Story
Frontend at Scale - The Tumblr StoryChris Miller
 

Viewers also liked (20)

Frontend technologies
Frontend technologiesFrontend technologies
Frontend technologies
 
TechTalk #85 : Latest Frontend Technologies
TechTalk #85 : Latest Frontend TechnologiesTechTalk #85 : Latest Frontend Technologies
TechTalk #85 : Latest Frontend Technologies
 
Volume 01[1].07 ships and marine technology
Volume 01[1].07 ships and marine technologyVolume 01[1].07 ships and marine technology
Volume 01[1].07 ships and marine technology
 
Technology sailing effects
Technology sailing effectsTechnology sailing effects
Technology sailing effects
 
Front-end technologies for Wonderful User Experience through Websites
Front-end technologies for Wonderful User Experience through WebsitesFront-end technologies for Wonderful User Experience through Websites
Front-end technologies for Wonderful User Experience through Websites
 
Frontend SPOF
Frontend SPOFFrontend SPOF
Frontend SPOF
 
Sinau Bareng Frontend Web Development @ DiLo Malang
Sinau Bareng Frontend Web Development @ DiLo MalangSinau Bareng Frontend Web Development @ DiLo Malang
Sinau Bareng Frontend Web Development @ DiLo Malang
 
Front end Tips Tricks & Tools
Front end Tips Tricks & ToolsFront end Tips Tricks & Tools
Front end Tips Tricks & Tools
 
Webinar: Front End Web Development - Trendy Web Designs Using HTML5
Webinar: Front End Web Development - Trendy Web Designs Using HTML5Webinar: Front End Web Development - Trendy Web Designs Using HTML5
Webinar: Front End Web Development - Trendy Web Designs Using HTML5
 
Frontend automation and stability
Frontend automation and stabilityFrontend automation and stability
Frontend automation and stability
 
Front End Tooling and Performance - Codeaholics HK 2015
Front End Tooling and Performance - Codeaholics HK 2015Front End Tooling and Performance - Codeaholics HK 2015
Front End Tooling and Performance - Codeaholics HK 2015
 
User eXperience & Front End Development
User eXperience & Front End DevelopmentUser eXperience & Front End Development
User eXperience & Front End Development
 
Architecting your Frontend
Architecting your FrontendArchitecting your Frontend
Architecting your Frontend
 
Grunt js for the Enterprise Vol.1: Frontend Performance with Phantomas
Grunt js for the Enterprise Vol.1: Frontend Performance with PhantomasGrunt js for the Enterprise Vol.1: Frontend Performance with Phantomas
Grunt js for the Enterprise Vol.1: Frontend Performance with Phantomas
 
建立前端开发团队 (Front-end Development Environment)
建立前端开发团队 (Front-end Development Environment)建立前端开发团队 (Front-end Development Environment)
建立前端开发团队 (Front-end Development Environment)
 
Wrangling Large Scale Frontend Web Applications
Wrangling Large Scale Frontend Web ApplicationsWrangling Large Scale Frontend Web Applications
Wrangling Large Scale Frontend Web Applications
 
A modern front end development workflow for Magnolia at Atlassian
A modern front end development workflow for Magnolia at AtlassianA modern front end development workflow for Magnolia at Atlassian
A modern front end development workflow for Magnolia at Atlassian
 
How to Build Front-End Web Apps that Scale - FutureJS
How to Build Front-End Web Apps that Scale - FutureJSHow to Build Front-End Web Apps that Scale - FutureJS
How to Build Front-End Web Apps that Scale - FutureJS
 
W3 conf hill-html5-security-realities
W3 conf hill-html5-security-realitiesW3 conf hill-html5-security-realities
W3 conf hill-html5-security-realities
 
Frontend at Scale - The Tumblr Story
Frontend at Scale - The Tumblr StoryFrontend at Scale - The Tumblr Story
Frontend at Scale - The Tumblr Story
 

Similar to Modern Frontend Technology

Domain Modeling & Full-Stack Web Development F#
Domain Modeling & Full-Stack Web Development F#Domain Modeling & Full-Stack Web Development F#
Domain Modeling & Full-Stack Web Development F#Kevin Avignon
 
web2py:Web development like a boss
web2py:Web development like a bossweb2py:Web development like a boss
web2py:Web development like a bossFrancisco Ribeiro
 
An evening with React Native
An evening with React NativeAn evening with React Native
An evening with React NativeMike Melusky
 
Building and deploying LLM applications with Apache Airflow
Building and deploying LLM applications with Apache AirflowBuilding and deploying LLM applications with Apache Airflow
Building and deploying LLM applications with Apache AirflowKaxil Naik
 
NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...
NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...
NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...Maarten Balliauw
 
Eclipse pdt indigo release review
Eclipse pdt   indigo release reviewEclipse pdt   indigo release review
Eclipse pdt indigo release reviewGiang Nguyễn
 
Developing Java Web Applications
Developing Java Web ApplicationsDeveloping Java Web Applications
Developing Java Web Applicationshchen1
 
Financial Project with Spring WebFlux
Financial Project with Spring WebFluxFinancial Project with Spring WebFlux
Financial Project with Spring WebFluxLINE Corporation
 
Seattle bestpractices2010
Seattle bestpractices2010Seattle bestpractices2010
Seattle bestpractices2010Olaseni Odebiyi
 
Php Conference Brazil - Phalcon Giant Killer
Php Conference Brazil - Phalcon Giant KillerPhp Conference Brazil - Phalcon Giant Killer
Php Conference Brazil - Phalcon Giant KillerJackson F. de A. Mafra
 
Phalcon / Zephir Introduction at PHPConfTW2013
Phalcon / Zephir Introduction at PHPConfTW2013Phalcon / Zephir Introduction at PHPConfTW2013
Phalcon / Zephir Introduction at PHPConfTW2013Rack Lin
 
Introduction of eBPF - 時下最夯的Linux Technology
Introduction of eBPF - 時下最夯的Linux Technology Introduction of eBPF - 時下最夯的Linux Technology
Introduction of eBPF - 時下最夯的Linux Technology Jace Liang
 
Angular (v2 and up) - Morning to understand - Linagora
Angular (v2 and up) - Morning to understand - LinagoraAngular (v2 and up) - Morning to understand - Linagora
Angular (v2 and up) - Morning to understand - LinagoraLINAGORA
 
Throwing Laravel into your Legacy App™
Throwing Laravel into your Legacy App™Throwing Laravel into your Legacy App™
Throwing Laravel into your Legacy App™Joe Ferguson
 
Tools and Recipes to Replatform Monolithic Apps to Modern Cloud Environments
Tools and Recipes to Replatform Monolithic Apps to Modern Cloud EnvironmentsTools and Recipes to Replatform Monolithic Apps to Modern Cloud Environments
Tools and Recipes to Replatform Monolithic Apps to Modern Cloud EnvironmentsVMware Tanzu
 
SpringOne 2016 in a nutshell
SpringOne 2016 in a nutshellSpringOne 2016 in a nutshell
SpringOne 2016 in a nutshellJeroen Resoort
 

Similar to Modern Frontend Technology (20)

Domain Modeling & Full-Stack Web Development F#
Domain Modeling & Full-Stack Web Development F#Domain Modeling & Full-Stack Web Development F#
Domain Modeling & Full-Stack Web Development F#
 
web2py:Web development like a boss
web2py:Web development like a bossweb2py:Web development like a boss
web2py:Web development like a boss
 
An evening with React Native
An evening with React NativeAn evening with React Native
An evening with React Native
 
Building and deploying LLM applications with Apache Airflow
Building and deploying LLM applications with Apache AirflowBuilding and deploying LLM applications with Apache Airflow
Building and deploying LLM applications with Apache Airflow
 
NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...
NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...
NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...
 
Eclipse pdt indigo release review
Eclipse pdt   indigo release reviewEclipse pdt   indigo release review
Eclipse pdt indigo release review
 
Developing Java Web Applications
Developing Java Web ApplicationsDeveloping Java Web Applications
Developing Java Web Applications
 
Financial Project with Spring WebFlux
Financial Project with Spring WebFluxFinancial Project with Spring WebFlux
Financial Project with Spring WebFlux
 
Serverless design with Fn project
Serverless design with Fn projectServerless design with Fn project
Serverless design with Fn project
 
Seattle bestpractices2010
Seattle bestpractices2010Seattle bestpractices2010
Seattle bestpractices2010
 
Php Conference Brazil - Phalcon Giant Killer
Php Conference Brazil - Phalcon Giant KillerPhp Conference Brazil - Phalcon Giant Killer
Php Conference Brazil - Phalcon Giant Killer
 
Phalcon / Zephir Introduction at PHPConfTW2013
Phalcon / Zephir Introduction at PHPConfTW2013Phalcon / Zephir Introduction at PHPConfTW2013
Phalcon / Zephir Introduction at PHPConfTW2013
 
Introduction of eBPF - 時下最夯的Linux Technology
Introduction of eBPF - 時下最夯的Linux Technology Introduction of eBPF - 時下最夯的Linux Technology
Introduction of eBPF - 時下最夯的Linux Technology
 
Angular (v2 and up) - Morning to understand - Linagora
Angular (v2 and up) - Morning to understand - LinagoraAngular (v2 and up) - Morning to understand - Linagora
Angular (v2 and up) - Morning to understand - Linagora
 
Beginners Node.js
Beginners Node.jsBeginners Node.js
Beginners Node.js
 
Throwing Laravel into your Legacy App™
Throwing Laravel into your Legacy App™Throwing Laravel into your Legacy App™
Throwing Laravel into your Legacy App™
 
Apache Drill (ver. 0.2)
Apache Drill (ver. 0.2)Apache Drill (ver. 0.2)
Apache Drill (ver. 0.2)
 
Tools and Recipes to Replatform Monolithic Apps to Modern Cloud Environments
Tools and Recipes to Replatform Monolithic Apps to Modern Cloud EnvironmentsTools and Recipes to Replatform Monolithic Apps to Modern Cloud Environments
Tools and Recipes to Replatform Monolithic Apps to Modern Cloud Environments
 
SpringOne 2016 in a nutshell
SpringOne 2016 in a nutshellSpringOne 2016 in a nutshell
SpringOne 2016 in a nutshell
 
OpenJDK & Graalvm
OpenJDK & GraalvmOpenJDK & Graalvm
OpenJDK & Graalvm
 

Recently uploaded

TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension AidPhilip Schwarz
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdfPearlKirahMaeRagusta1
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
How to Choose the Right Laravel Development Partner in New York City_compress...
How to Choose the Right Laravel Development Partner in New York City_compress...How to Choose the Right Laravel Development Partner in New York City_compress...
How to Choose the Right Laravel Development Partner in New York City_compress...software pro Development
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesVictorSzoltysek
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplatePresentation.STUDIO
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 

Recently uploaded (20)

TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
How to Choose the Right Laravel Development Partner in New York City_compress...
How to Choose the Right Laravel Development Partner in New York City_compress...How to Choose the Right Laravel Development Partner in New York City_compress...
How to Choose the Right Laravel Development Partner in New York City_compress...
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 

Modern Frontend Technology

  • 2. Agenda • Web Technology Trend • Website technology evaluation • Frontend/Backend Technology • Functional Programming • Nodejs/React/Flux/Redux/Webpack
  • 5. The Most Basic Technology Socket Programming
  • 7. Socket Programming on LINUX using C Parent Child1 Child2 Child3 Parent Parent Parent fork fork fork Parent Child
  • 8. Regular HTTP Demo http://www.ltn.com.tw
  • 9. Traditional Backend–Mix code and HTML Together Rasmus Lerdorf
  • 11. MVC Example - CodeIgniter http://example.com/news/show/1 request data Controller Model View /Controller/Method/para1/para2/para3...
  • 12. Frontend - AJAX (Asynchronous JavaScript and XML) REST API JSON data Example: http://www.mediatek.com/ JSON is won already! ref
  • 13. Frontend Library - jQuery http://api.jquery.com/show/ https://api.jquery.com/category/selectors/
  • 14. Frontend/Backend Interaction 2. AJAX Polling1. Regular HTTP 3. AJAX Long Polling 4. WebSocket
  • 15. Polling vs WebSocket Throughput comparison
  • 16. 前情提要結束.......Take a breath • 進入主題前,還有一件事情必須先知道...... Functional Programming
  • 17. Lambda Calculus Ref: What is a lambda (function)? What is Lambda Calculus and should you care? A Tutorial Introduction to the Lambda Calculus More lambda calculus:
  • 18. Thinking in Machine • Imperative JavaScript inputArray = {“how”, “are”, “you”} result = {“How”, “Are”, “You”} “how“ => “How” {“How”, “Are”, “You”}=>”How Are You”
  • 19. Thinking in Object • Object-Oriented JavaScript textArray = {“how”, “are”, “you”} result = {“How”, “Are”, “You”} “how“ => “How” return “How Are You”
  • 20. Thinking in Function • Functional JavaScript “how“ => “How” “how are you”=> {“how”, “are”, “you”}“how are you”=> {“how”, “are”, “you”}=>{“How”, “Are”, “You”}“how are you”=> {“how”, “are”, “you”}=>{“How”, “Are”, “You”}=>”How Are You”
  • 21. Functional Programming ! Comparison 1. Human readable 2. Efficiency 3. Line numbers Imperative Object-Oriented Functional Programming
  • 22. Why Line Numbers Is A Matter • Norris Number http://www.techug.com/norris-numbers • Line numbers of code before you hit a wall • Un-organized code: 1,500~2,000 • Well-organized code: 20,000 Edsger W. Dijkstra
  • 24. Functional Programming Concepts • FP的共同點在於: • 「沒有副作用」(Side Effect)、「第一級函數」(First-Class Function)。 「沒有副作用」是指在表示式(expression)內不可以造成值的改變; 「第一級函數」是指函數被當作一般值對待,而不是次級公民, 也就是說,函數可當作「傳入參數」或「傳出結果」。 • FP和我們慣用的編寫程式風格,有相當大的差異。 • Imperative Programming認為程式的執行,就是一連串狀態的改變; • FP將程式的運作,視為數學函數的計算,且避免「狀態」和「可變資料」。 Ref: 思考函數編程(二)Why FP
  • 25. Functional Programming Concepts 1. Avoiding Mutable State 2. Recursion 3. High-Order Functions 4. Function Composition 5. Lazy Evaluation Ref: 那些 Functional Programming 教我的事 Call by need
  • 26. 全世界的語言 都往 Functional Programming 發展 http://www.codedata.com.tw/social-coding/paradigm-shift-to-functional-programming/ Ref: What is a lambda (function)?
  • 27. Functional Programming In Action Ref: 那些 Functional Programming 教我的事
  • 28. Let's get into modern front-end technology.
  • 29. Nodejs • 2009.5 Ryan Dahl發布於GitHub • 使用Google V8 engine 的 Web & Socket Server • 使用Javascript編寫Backend (前後端統一,減少開發成本) • Single Thread, Event Driven, Non-Blocking IO • Strongly Community Support: NPM
  • 30. Nodejs • Why single thread? Ref: Nodejs Explained with Examples
  • 31. Nodejs Ref: Callback Hell vs. Async vs. Highland Sounds great? How about this? Yes...It’s called callback hell. How to resolve? PromiseJS! Blocking IO Non-Blocking IO
  • 32. Nodejs • Who use Nodejs Ref: Projects, Applications, and Companies Using Node
  • 33. React • Facebook open source project • 集中散落在四處的程式碼:event binding/control flow/status maintain.... • Just Component Ref: ReactJS & why it’s awesome
  • 34. React • Why amazing? 1. Everything is a component 2. Single source of truth(SSOT) 3. Virtual DOM Ref: ReactJS & why it’s awesome Always redraw! Virtual DOM: compare virtual/real DOM tree, calculate the minimize set to re-render Property, State View Event Parent Always redraw! SSOT:
  • 35. Flux • MVC trouble Ideal world Real world
  • 36. Flux
  • 37. Redux • A implementation and improvement of FLUX. • Three principle: 1. Single source of truth The state of your whole application is stored in an object tree within a single store. 2. State is read-only The only way to mutate the state is to emit an action, an object describing what happened. 3. Changes are made with pure functions GitHub: https://github.com/rackt/redux Document: http://redux.js.org/docs/introduction/Motivation.html Which Flux implementation should I use? UNIDIRECTIONAL USER INTERFACE ARCHITECTURES Old state New state Reducer:
  • 38. Webpack+Babel • Webpack bundle multiple files to 1 file. • Babel compile source javascript file to target javascript file. Webpack: https://github.com/webpack/webpack Babel: https://babeljs.io/
  • 39. Webpack+Babel • Webpack bundle multiple files to 1 file. • With minify & uglyfy
  • 40. Javascript in ES2015 Webpack+Babel • Isomorphic Common code Front-end code back-end code Babel compile App.js Run on browser(ES5) App.js Run on server(ES6)
  • 41. Quick Note 1. Functional Programming 是趨勢,且是現在進行式。 2. Single Thread + Non-blocking IO + Event base 會愈來愈常見。 3. 程式語言的易用性日顯重要。 4. React+Redux+Nodejs 目前是黃金組合。 5. 前端變化的太快了,還是好好寫Driver就好(誤
  • 42. Reference • 那些 Functional Programming 教我的事 http://www.slideshare.net/ihower/fp-osdc2012v2 • 當 全世界的語言 都往 Functional Programming 發展 http://www.codedata.com.tw/social-coding/paradigm-shift-to-functional-programming/ • 思考函數編程(一)Language is Functional Again http://www.jerry-tsai.com/2008/05/fp_22.html • 思考函數編程(三)FP is as FP does http://www.jerry-tsai.com/2008/06/fp-is-as-fp-does.html • 函数式编程很难,这正是你要学习它的原因 http://www.vaikan.com/functional-programming-is-hard-thats-why-its-good/ • OO vs FP http://blog.cleancoder.com/uncle-bob/2014/11/24/FPvsOO.html • 函数式编程初探 http://www.ruanyifeng.com/blog/2012/04/functional_programming.html • Understanding the node.js event loop http://blog.mixu.net/2011/02/01/understanding-the-node-js-event-loop/ • An Introduction to Functional JavaScript http://www.sitepoint.com/introduction-functional-javascript/ • March 2015 Web Server Survey http://news.netcraft.com/archives/2015/03/19/march-2015-web-server-survey.html • Comparison of the usage of Apache vs. Nginx vs. Node.js for websites http://w3techs.com/technologies/comparison/ws-apache,ws-nginx,ws- nodejs • socket-programming-筆記 http://kezeodsnx.pixnet.net/blog/post/27462696-socket-programming-%E7%AD%86%E8%A8%98 • GNU Porgramming http://www.tenouk.com/cnlinuxsockettutorials.html • Web开发技术的演变 http://www.evolutionoftheweb.com/?hl=zh-tw#/evolution/day • 網站技術發展史 http://jaceju.net/2012/11/21/webdev-history/ • Top 10 web development trends and predictions for 2015 http://www.zingdesign.com/top-10-web-development-trends-and-predictions-for- 2015/#motion-ui • 1989-2014 網頁設計的演變 https://designrockin.wordpress.com/2014/12/10/1989-2014- %E7%B6%B2%E9%A0%81%E8%A8%AD%E8%A8%88%E7%9A%84%E6%BC%94%E8%AE%8A/ • 網路演進 http://www.evolutionoftheweb.com/?hl=zh-tw#/evolution/day • What are Long-Polling, Websockets, Server-Sent Events (SSE) and Comet? http://stackoverflow.com/questions/11077857/what-are-long-polling- websockets-server-sent-events-sse- nd-comet • Introduction to HTML5 WebSocket http://www.codeproject.com/Articles/531698/Introduction-to-HTML-WebSocket • Thinking in react https://facebook.github.io/react/docs/videos.html • React JS and why it's awesome http://www.slideshare.net/AndrewHull/react-js-and-why-its-awesome?qid=c07b596e-8ca4-4a53-8c55- 83dd70756321&v=default&b=&from_search=1

Editor's Notes

  1. http://mrjamie.cc/2010/08/24/web3-vs-web2/ https://zh.wikipedia.org/wiki/Web_3.0 http://www.bnext.com.tw/article/view/id/37993
  2. http://www.slideshare.net/ihower/fp-osdc2012v2 https://zh.wikipedia.org/wiki/%E6%8B%89%E6%96%AF%E5%A7%86%E6%96%AF%C2%B7%E5%8B%92%E5%A4%9A%E5%A4%AB
  3. http://www.slideshare.net/ihower/fp-osdc2012v2
  4. http://www.slideshare.net/ihower/fp-osdc2012v2
  5. REST(Representational State Transfer) http://www.javaworld.com/article/2079190/scripting-jvm-languages/6-things-you-should-know-about-node-js.html
  6. REST(Representational State Transfer)
  7. http://www.sitepoint.com/introduction-functional-javascript/
  8. http://stackoverflow.com/questions/16501/what-is-a-lambda-function
  9. http://www.sitepoint.com/introduction-functional-javascript/
  10. http://www.sitepoint.com/introduction-functional-javascript/
  11. http://www.sitepoint.com/introduction-functional-javascript/
  12. http://www.sitepoint.com/introduction-functional-javascript/
  13. https://www.youtube.com/watch?v=AKiq3JxCVi4
  14. http://www.jerry-tsai.com/2008/05/why-fp.html
  15. http://www.slideshare.net/ihower/fp-osdc2012v2
  16. http://stackoverflow.com/questions/16501/what-is-a-lambda-function
  17. http://www.slideshare.net/ihower/fp-osdc2012v2
  18. http://www.sitepoint.com/introduction-functional-javascript/
  19. http://www.slideshare.net/xfzhang/full-stackdevelopment-with-node-js?qid=0fb3b659-230d-4d68-966b-1e68dcf7ce50&v=qf1&b=&from_search=1
  20. http://www.slideshare.net/gabriele.lana/nodejs-explained-with-examples?next_slideshow=1
  21. http://www.slideshare.net/xfzhang/full-stackdevelopment-with-node-js?qid=0fb3b659-230d-4d68-966b-1e68dcf7ce50&v=qf1&b=&from_search=1 https://github.com/nodejs/node-v0.x-archive/wiki/Projects,-Applications,-and-Companies-Using-Node Linkedin 2012.10 Groupon 2013.10 2013.5 Paypal 2012.4 4week Walmart 2014/E Wordpress 2014/E
  22. http://www.slideshare.net/xfzhang/full-stackdevelopment-with-node-js?qid=0fb3b659-230d-4d68-966b-1e68dcf7ce50&v=qf1&b=&from_search=1 https://my.modulus.io/companies-using-node https://github.com/nodejs/node-v0.x-archive/wiki/Projects,-Applications,-and-Companies-Using-Node Linkedin 2012.10 Groupon 2013.10 eBay 2013.5 paypal 2012.4 4week Walmart 2014/E wordpress 2014/E
  23. http://www.slideshare.net/ssuser60dc67/react-55621545?qid=c07b596e-8ca4-4a53-8c55-83dd70756321&v=default&b=&from_search=8 http://www.slideshare.net/AndrewHull/react-js-and-why-its-awesome?qid=401926ed-c578-452e-9117-c9f54e62cf5c&v=default&b=&from_search=1
  24. http://www.slideshare.net/ssuser60dc67/react-55621545?qid=c07b596e-8ca4-4a53-8c55-83dd70756321&v=default&b=&from_search=8 http://www.slideshare.net/AndrewHull/react-js-and-why-its-awesome?qid=401926ed-c578-452e-9117-c9f54e62cf5c&v=default&b=&from_search=1 http://facebook.github.io/flux/docs/todo-list.html
  25. https://www.dotblogs.com.tw/blackie1019/2015/04/14/151049
  26. https://www.dotblogs.com.tw/blackie1019/2015/04/14/151049
  27. http://npm-stat.com/charts.html?package=redux&author=&from=2014-08-05&to=2016-01-05 http://inakianduaga.github.io/redux-state-history-example/
  28. Publish–subscribe pattern