Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
WebRebuild
Search
Joseph Chiang
July 18, 2010
Programming
420
8
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
WebRebuild
2010 于北京讲「建立前端开发团队」
Joseph Chiang
July 18, 2010
More Decks by Joseph Chiang
See All by Joseph Chiang
不断归零的前端人生 - 2016 中国软件开发者大会
josephj
1
430
Let's Redux!
josephj
4
320
Automatic Functional Testing with Selenium and SauceLabs
josephj
2
320
From Hacker to Developer
josephj
1
170
tmuxinator
josephj
0
240
JavaScript Promise
josephj
0
240
Be an Internet Person
josephj
9
600
F2E Evolution
josephj
55
3.3k
F2E for Enterprise
josephj
42
5.7k
Other Decks in Programming
See All in Programming
TypeScript+Orvalで実現する型安全かつ堅牢でスケーラブルなマルチチャネル通知基盤 / TSKaigi Night talks ~after conference~
d0riven
0
370
AIを活用したE2Eテスト実装効率化のあゆみ / ebisu-mobile-14-kotetu
kotetuco
0
140
はてなアカウント基盤 State of the Union
cockscomb
1
1.1k
Contextとはなにか
chiroruxx
1
380
LLMによるContent Moderationの本番運用の裏側と品質担保への挑戦
suikabar
3
800
TAKTでAI駆動開発の品質を設計する
j5ik2o
7
1.6k
Vite+ Unified Toolchain for the Web
naokihaba
0
370
技術的負債解消で開発者の未来を開く- AIの力でコード刷新
kmd2kmd
0
120
なぜ型を書くのか? TSKaigi2026で改めて考える #tskaigi_smarthr
kajitack
0
170
Snowflake Summitでの新機能 CoCo / CoWork / snowflake-summit-2026-overall-what-new-coco
tatsuhiro
1
200
さぁV100、メモリをお食べ・・・
nilpe
0
160
Vue × Nuxt × Oxc どこまで使える?実運用の現在地
andpad
0
310
Featured
See All Featured
Navigating Weather and Climate Data
rabernat
0
260
Building Adaptive Systems
keathley
44
3.1k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
400
Crafting Experiences
bethany
1
190
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
150
WCS-LA-2024
lcolladotor
0
660
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
370
エンジニアに許された特別な時間の終わり
watany
107
250k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.5k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
Transcript
Front-end Dev Environment Ting-yu Chiang / josephj josephj.com /
[email protected]
ܔͭۃ၌ක೯ྠඟ
ۃɓ΅ʈЪί • 2.5 ϋj ۃ၌ʈ师 • 0.5 ϋj ඩډ开发٫໊ٟ传ɻ •
1 ϋj ඩډȭΤʃ१ʈ师 ුlҢ݊ਧෞ / 蒋֛ρ ܘ开ː来Ց̏ԯl
Ңٙ௹܄ 热爱ʱԮe认为௰λٙ Solution ݊讨论̈来ٙ
ൺӉ环岛 ίҢ 29 ๋ 2008 ϋ 5 ˜ࣛ ڀə 27
˂ ൺə ɞϵεʮԢ ༺ϓൺӉᐑࢥٙྫྷซ 没Ϟʔ̙ঐ
Ԓ为ɓ个ҏ员dҢ实ί݊ڢ੬ֱٙ运 ڢ关߅ӻ (̮国语˖学ӻ) ̈Ԓ Ш却进ə别ɛ挤ॎ头ɰ进ʔ̘ٙඩډ 见识Ցɽۨ软ʮ̡ٙݖᦻ฿ׂ
ί D-Link 现Ϟٙ᠒༩设备ɪeܔͭ ʝ联᠒务d强ʷ͜户ٙ关联l D-Link muchiii Team 现职ɲ
Ϊ为൴Ϟሳٙ฿ׂe决֛进ɝ D-Linkl 当时̥觉ࠅҪ产ۜਂ̈来d没预ࣘՑٙ݊...
Ϊ为 D-Link 过̘ϊ没Ϟʝ联᠒开发经验dɓ进̘ʡɯ ே没Ϟe从ཧ开dҢ್֢ఱ开ܔͭ开发环ྤe决֛ 软ᠧݖᦻf
这ԬԫઋҢί Yahoo! ݊没Ϟ会ຠٙfΪ为̴ʱʈ ≁e৷˓εdܘεʈՈޟЇϞ专门负责ٙ团队... ̋ɪ 务ɽேʊ决֛༆决˙ࣩədঐ够ॆٙҷ变现Ϟ环 ྤeءɝІʉซجٙ会ϊʔεf Operation Engineer Service
Engineer QA Engineer Front-end Engineer System Architect Software Engineer System Analyzer Project Manager QA Tester DBA
ί过ʘʕdҢ发现Іʉڢ੬ః欢ਂۃΧ၌Υٙʈ Ъf纯 HTML/CSS/JavaScript ٙՓЪʊ经ʔΎіˏ Ңf结ΥΧ၌Ҧ术让ۃ၌˙ࠦঐ够һλ (ঐាʷe ȭღ碍eᅼ组ʷe维护 ݊Ң现ί热Аٙ˙Σf
ڢ੬ོ励ۃ၌ʈ师༨ֻʔΝٙ领ਹ Ϊ为̥Ϟۃ၌ʈ师ʑٝ༸ۃ၌ʈ师ࠅٙ݊ʡɯ Server-side Script Win32 CMS Apache Module Flash Embedded
System Firmware Objective C I18N/L10N PEAR Azure Android ChromeOS Hardware
ۃ၌开发环ྤ - ʕːܠซ • 减ˇ环ྤࢨ៦ ˾码ʔк断环ྤe设֛档̥Ϟɓ΅ • ᅼ块ʷ开发 ʔ၍ HTMLeCSSeJS
ே˸ᅼ块开发 • 让͕错变Ѣ难 Nicholas Zakas Ⴍ “Make it difficult to make mistakes.“
1. 减ˇ环ྤࢨ៦ eliminate environment difference
к断环ྤeҢਂ过ٙᚉԫ... ί JavaScript Ԣк断 Hoste决֛图档 AJAX ༩径 ί PHP ɰк断༩径d连ટ˓ٙ
RD ɰԱ样画芦
Ы݊щɰϞ类Чٙк断όd אʔΝ环ྤ给ʔΝٙ设֛档k
环ྤࢨ៦e开发ɛ员数ඎᄣ̋eʔΝ语Ԋ᮱类 让这Ԭк断˾码设֛档൳来൳εl难˸维 护eɰᄣ̋ৰ错ٙѢ难ܓ...
Ϟ没Ϟ办ج̙˸ਂՑk ˾码ʔк断环ྤe设֛档̥写͍ό环ྤ
问题 1 : ӊࡈᐑྤٙ Host Name ேʔɓᅵ Development Alpha Staging
Production devm1.corp.muchiii.com:5002* devm1.corp.muchiii.com:50029 devm1.corp.muchiii.com static.devm1.corp.muchiii.com img[n].staging.bar.tw1.corp.muchiii.com w[n].staging.bar.tw1.corp.muchiii.com www.muchiii.com a.mimgs.com ɭ݊ც Commit Їو͉છ၍ٙ˾码 仅ɓ΅组态档e˲̥写͍ό环ྤ
对开发ٙҏ员来说 ̥ცࠅਂ开发 Host ٙ对应у̙
੬见ٙЪج݊ࡌҷ host 档 Шʲ换௦烦eɦʔ˕ܵ Port ʿ Protocol ٙ对应
̤Ϟ Proxy PAC 档eFF א Chrome ౢ̙ʲ换 Шே没办جਂՑӊ᮱浏览ኜٙࡒ࢙
经过ɓ೦寻Ҭ 发现 Fiddler א Charles Debugging Proxy 这类虚拟˾ଣ软௰ୌΥҢ们ٙცӋ 对应͍ό环ྤ
实际ɪ݊ʔπίٙ᠒ѧ Charles Debugging Proxy 对应Ї devm1.corp.muchiii.com:50020
Fiddler 还ঐਂʡɯ Fiddler 这类ٙ软ᠧ还ঐίਂܘεٙ应͜dԷνj 1. 协п AJAX ٙৰЏf 2. 协п开发时͉ή၌ʲ图eʔცɪ传Ї务ኜf
3. τౢІʉ惯ٙ͜ʈՈf 4. ҷ变浏览᠒१ʔ顺ٙή˙f 5. ᅼ拟ܓ࿔ٙ环ྤf Ԓ为ɓ个ۃ၌ʈ师dFiddler ॆٙ݊̀备ٙʈՈl
线ɪৰ错 Online Debugging 将ϵܓ线ɪٙ CSS ܸ֛Ցࣲࠦɪٙ baidu.css
帮Іʉ̋λٙ͜东Г уԴί没Ϟ Firebug ٙή˙ɰ̙˸͜ YUI Console ӊ页ே̙˸௰ա̨湾σӲ欢ڎٙԌڀ֊
CSS ˖档内ٙߠ౻图档༩径写ج #mod .bd { background: url(bg_empty.png); } #mod .bd
{ background: url(/home/bg_empty.png); } #mod .bd { background: url(http://a.mimgs.com/home/bg_empty.png); } 实际༩径ίj/var/www/muchiii/static/home/style.css HTTP 请Ӌ༩径ίjhttp://a.mimgs.com/home/style.css ɧ᮱ே̙БdЫ͜ԟɓ᮱k
CSS ˖档内ٙߠ౻图档༩径写ج #mod .bd { background: url(bg_empty.png); } #mod .bd
{ background: url(/home/bg_empty.png); } #mod .bd { background: url(http://a.mimgs.com/home/bg_empty.png); } Ϊ为ࠅਂঐាʷeც将ε个 CSS 档ࣩ௰ʃʷ˲Υϊ 届时 CSS 将会ί᠒१࣬ͦ录ɨ͛ϓ ୋɓ᮱对༩径ٙ˙ό会ிϓ图档༩径错误 ୋɧ᮱̙БdШ过ɲ杂e࢙͂错ο ה˸Ң们ɓܛ规֛Դ͜ୋɚ᮱˙όeࡒ࢙௰λf
1.1 结语j ഛ͜ɓԬʈՈ༧规֛e尽̙ঐή减ˇ˾码ίʔΝ环ྤ ٙࢨ៦d̙˸让ό维护ৎ来һ轻ؒl
2. ᅼ块ʷ开发 Modular Development
ʔΎ͜页Ъ为开发逻辑 Ͼ݊开发ɓ个个̙独ͭ运Ъٙ Div ᅼ块 Ϟ独ͭٙ HTMLeCSSeJavaScripteޟЇ Controller 档ࣩ Modular Development
ᅼ块ʷ݊᠒页开发˴ݴ
None
˪显ͪᅼ块 ฤ寻ᅼ块 ΐڌᅼ块 _photo_view.php _photo_view.css _photo_view.js _photo_list.php _photo_list.css _photo_list.js _photo_filter.php
_photo_filter.css _photo_filter.js
̍ўə许εᅼ块档ࣩ (HTML) 独ͭٙ HTML 档ࣩ
̍ўə许εᅼ块档ࣩCSS І独ͭٙ CSS 档ࣩ
̍ўə许εᅼ块档ࣩJavaScript І独ͭٙ JS 档ࣩ
ᅼ块ʷٙѢ难点 • HTMLjܘλ༆决d̥ࠅ͜ include ٙ˙όఱ̙ ˸ਂՑPerformance ᅂ响ʔɽ • CSS :
͜ id 当 namespace ̙˸ਂՑfШν؈ ӊ个ᅼ组݊ɓ个档ࣩdɓ页 30 个ᅼ组ఱ会Ϟ 30 个 requestsd对ঐᅂ响ܘɽl • JavaScript : ༧ CSS ɓ样会Ϟ request ிϓٙ ঐ问题f̤̮ცࠅɓ个ݖᦻਂ༨ᅼ组ٙ沟ஷf
$key - PHP Module Τ称 or 页ࠦΤ称 is_top: ׳ί </head>
ۃא </body> ۃ ̤̮还Ϟ is_noscript, media ഃ属̙˸设֛ static.php 设֛ʔΝ页ࠦהࠅˏٙ͜ CSS/JS
Ш务ኜ请Ӌඎ过εe对ঐிϓ冲击 10 个 CSS Request 19 个 JS Request 虽್
static.php Ҫᅼ块ٙ CSS/JS 档ࣩேЕ连ৎ来
Mini Tool 将˾码缩ʃ ε个 CSS/JS ˖档Υϊٙ 开发环ྤʈՈ 档ࣩΎεɰʔ͜担ːࣖঐٙ问题 http://www.flickr.com/photos/prettypony/2644225789/
Mini ٙ XML 设֛档dҪ刚ʑٙ设ֻ֛这Ԣ 寻Ҭ档ࣩٙЗໄd̙֛义ε个f $DEV_ROOT ݊ί设֛ Apache VirtualHost ٙ环ྤ变数
ӊ个 module 会ϞІʉٙ CSS JS 档 module ̙˸̘̋ɝՉ˼ٙ moduledɰ̙˸ exclude ݔ个档ࣩ index ٙ CSS/JS ᅼ块档ࣩ
经过 Mini Υϊʿ压缩ٙʫ࢙j༧ᇞɪɓߧ ǥ /mini?module=[Mini ᅼ块Τ称]&type=[css א js]
ɰ̙˸̥观ΥϊШ͊压缩ٙ内࢙ ǥ &nominify
ࡡ͉ɦঔɦ长ٙ static.php 29 个 Request
᠒页ٙ Request 数ඎ൴ε
2 个 Request 29 个 Request ၚ简过Χٙ static.php
᠒页ٙ Request ɽష减ˇ
ீ过 Mini ٙ设֛档d̙将І独ͭٙ CSS/ JavaScript 档ࣩΥϊ˲௰ʃʷd达Ցࣖঐ௰Գʷٙ ͦٙl
Шცࠅءจ Mini ϊʔḗ͜ɲ͍ό环ྤeஷ੬׳ໄ静 态档ࣩٙ务ኜʔ˕ܵ Server-Side Scripteఱၑ Ϟɰ会对ࣖঐிϓ冲击f 线ɪٙ CSS/JS ί͂̍Χ变ϓɓ个静态档
s * ͜ md5_file() 检ݟ档ࣩ内࢙产͛ٙ stamp ̙˸减ˇ CDN ז՟ࠠٙ档ࣩ
JavaScript ༨ᅼ块沟ஷ JavaScript ߰˸ᅼ块为单Зʲʱ ஷ੬݊独ͭٙ Function א Object Ϟӻ统ٙ༨ᅼ෯沟ஷਗ਼ึ݊ɽܿ战 mod
A mod C mod B
͜户ʹڌ单 ՟资ࣘ ΐڌҁ毕 ͜户点选 ͜户点选ɽ图 ც٤ΐڌ ც෬满ΐڌ 显ͪୋɓ张图˪ 显ͪ点选ٙ图˪ 显ͪɨɓ张图e
选՟࣪动
͜户点选 window.mods[“photo-show”] = { showPhoto : function (src) { ....
} } window.mods[“photo-list”] = { init : function () { ... $(“img”).on(“click”, function(e) { window.mods[“photo-show”].showPhoto(this.src); } } ɘϓٙɛ会͜Ό҅变ඎ༆决问题 当˪显ͪᅼ块没ϞɓৎπίΝɓ页 时dΐڌᅼ块ఱ̈现ə Bug!
http://www.flickr.com/photos/vincentteeuwen/2816245519/ Ң们ேҎૐଢ员 (ᅼ块) 们ҲစλІʉٙԉЍ ίଢ场 (页ࠦ) ɪΥЪพ̈λˢ赛 (̌ঐ)
http://www.flickr.com/photos/acaben/2477822120/ Ш݊ॹ˶纪ܛ (ȭݖᦻeԴ͜Όਹ变数) ௰Χ̀将ிϓଢ员 (ᅼ块) ʘ间ٙ冲߉
ඩډ页ۃ၌ݖᦻ师 Nicholas Zakas ٙ启发l ۃ၌ʈ师ɓ֛ࠅ这͉༧ PPK on JavaScript ਧl
稳ո JavaScript 应͜όݖᦻ http://www.slideshare.net/nzakas/scalable-javascript-application-architecture
当页ࠦɪεəɓ个ᅼ块 ̴将ʔ会ॎѭՉ˼ᅼ组ٙ结ᦻe样όБ为 ̴将Զอٙ̌ঐe让Չ˼ٙᅼ组̙˸̴沟ஷʝ动 ࣅદ̴时ʔცࡌҷeɰʔ会ᅂ响Չ沟ஷᅼ组ٙࡡϞ̌ঐ Loose Coupling ᕦᇩΥ Չ˼ᅼ组ٙ关ӻ݊ؒٙ http://www.thesoftwaredevotional.com/images/coupling_train.jpg
Broadcast & Listen ᅼ组沟ஷٙ˙ό类Ч Hub ٙ฿ׂ broadcastjӊ个 Client ே会ȨᅧІʉٙ讯ࢹ listenjՉ˼
Client ̥ഃܙѠՑІʉϞ兴ሳٙ讯ࢹ̘处ଣ
ɓ̨电脑发̈О讯ࢹdהϞ电脑ே会ϗՑ Ш݊Չ˼电脑̥处ଣ̴Ϟ兴ሳٙ讯ࢹ
ݔ个 Client ऊ̰ί内᠒时dʔ会ிϓՉ˼ Client א᠒༩̈错 ݔ个ᅼ块ऊ̰ί页ࠦ时dʔ会ிϓՉ˼ᅼ块页ȭجԴ͜ Broadcast & Listen ᅼ组沟ஷٙ˙ό类Ч
Hub ٙ฿ׂ http://www.directsystems.com/support/switchvshub.php
ᅼ块݊独ͭ运Ъٙd类Чౢٙ฿ׂ ׳ίО页ࠦɪேʔცࡌҷeу̙Զ̌ঐ http://www.flickr.com/photos/nadesign/4324782791/
废话ˇ说d来ܣɯ实Ъыl
ՓЪɓ个个ݖᦻٙࣨː Core • Y.Core.register() : 让个别ᅼ块ء册ɲϤݖᦻ • Y.Core._match() : ಁᅼ组间ਂڦࢹٙ对应
• Y.Core._addListener() : Զݔ个ᅼ组೮记ഃܙٙڦࢹ
ΎՓЪᅼ块ٙ API ʧࠦ Core • oAPI.listen() : 让ͦۃٙᅼ块ഃܙɓ个ڦࢹ • oAPI.broadcast()
让ͦۃٙᅼ块发̈ɓ个ڦࢹ • oAPI.getNode() : ՟ͦۃᅼ块ٙ DOM ي参Ͻ API mod mod mod
_photo_list.js ΐڌᅼ块ٙ JavaScript Y.Core.register("photo-list", { // Ϥᅼ块ڋʷ init: function (api)
{ // 这个ᅼ块Ϟ兴ሳѠ՟ٙ两᮱讯ࢹ api.listen("photo-filter-submit"); api.listen("photo-filter-response"); this.api = api; }, // Ϥᅼ块ί页ࠦɪ ContentReady onload: function () { // ѓ诉 Core ˪ΐڌҁ毕dϊҪୋɓ张图˪༩径ɓৎԶ this.api.broadcast("photo-list-rendered", img.src); }, // Ϥᅼ块ϗՑ讯ࢹ onmessage: function (eventType, callerName, data) { switch (eventType) { case "photo-filter-response" : // ෬满ΐڌ break; case "photo-filter-submit" : // ٤ΐڌ break; } }, _updateUI: function (data) { // ѓ诉 Core ˪ΐڌҁ毕dϊҪୋɓ张图˪༩径ɓৎԶ this.api.broadcast("photo-list-rendered", img.src); } }); ც٤ΐڌ ც෬满ΐڌ ՟资ࣘ ͜户ʹڌ单 显ͪୋɓ张图˪ ΐڌҁ毕
ߪԷ Demo http://josephj.com:50010
结语j ᅼ块开发让开发٫ঐһ专ءɲί单ɓ̌ঐٙ开发ɪe ʔც烦恼页杂ٙݖᦻf̤̮ί测试ɪɰ̙˸˸ᅼ 块为单З独ͭ测试eୌΥ Unit Test ٙၚग़ɓ个 TestCase ٙ Scope
݊ܘʃٙf
3. 让͕错变Ѣ难 Make it difficult to make mistakes
Ց从ཧ开ʮ̡ٙλ处ఱ݊抢赢l
http://www.flickr.com/photos/eye1/3184963395/ by Ivan Mlinaric josephj Ңୋɓ个来ٙl ϼɿ说əၑl
ɓ开ҢఱՓ֛ə许ε Guidelines
None
ίۃɓʮ̡时௰难ҙٙɓ̩话j GM Meeting 时ɓЗ৷级领导对Ң们ٙۜ质̈质ဲ As a F2E teamdЫ们ٙូ࠽ӺίࡳԢk
软ᠧ开发团队̀须ࠅϞ规ߪٙՓ֛ ਿ͉࣪ݖٙ设计 ˾码ۜ质ʑঐՑʺ
О规ߪ࣪ݖே݊开发ɛ员ٙࠢՓ Ш߰ʔ设ࠢՓٙઋ况ఱ会྅...
Winchester House http://www.crockford.com/codecamp/quality.ppt 烟囱ɪ盖܊顶k 这ఱ݊叠ґݖ܊
Ϟ Guideline ʔ错dШ݊ϼख़֚Җ࢙ήܘ贴ʲj积 习难ҷe阳ւ阴违dӊ个ɛ对ɲІʉٙ习惯 ଣׂϞהʔΝdϞจȭจή将 Guideline ׳Ցɓࣙf
ɮϾɮʘd当ڋɽΝจٙ Guideline ఱ会 遗ҙe个团队ٙ˾码ۜ质开ɝ૿乱...
Code Review ݊ɓ个λ˙جdШڀ许ε时 间e没办ج੬办dуԴ发现ə问题dɰ̥ঐ͜ Ѽ协ٙ˙όਂʃʱٙࡌҷ...
软ᠧ开发ʔ应该πίഹѼ协 电脑ٙ˰ޢʔఱ݊ 0 1 吗k
Ъج • ӊϣ Commit 会ਂٙ检ݟd没ஷ过ఱʔঐ过关 • 执Б JSLint : JavaScript
Good Partsf • 执Б PHP CodeSniffer : ̙˸І订˾码标ࡘ检 ݟ PHPdɰ˕౪ JavaScript CSSl • ӊϣ Packaging 会ਂٙʈЪ • 执Б Image Optimization (Smush.it) d ፴图˪ცࠅ௰Գʷf • 没Ϟ压缩过ٙ JavaScript CSS ʔ会͂ ̍f
JSLint document.write can be form of eval
PHP CodeSniffer (a.k.a phpcs) .rule { attr: value; }
Ң们ٙ Visual Designer ̥负责͛ϓ PSD 档ࣩ F2E Іʉ处ଣ图档௰Գʷٙ问题 PNG8 ݊ͦۃʮ认ί
Web ௰λٙࣸό Ш̥݊Ϟ Fireworks ˕౪转换ϓ Alpha Transparency
ӊϣʲ图ேʱ೨߮d͂开 VD ٙ PSD...
Ύ将 PNG8 转换ϓ॰ˏЍீ
͛նఱ这样ई费ί没Ϟจ义ٙԫيɪə
Image Optimization 图档̕᠒१总频宽ٙ 46% ɓ个ܸ˿ܲɨ̘帮Ыพ֛l
ʔࡌҷఱʔ给 Commit
͂̍ pkg_create & ɪ线 pkg_deploy Υϊ JS/CSS 档ࣩ௰ʃʷ 档ࣩΥϊΧe档Τɰ会ҷ变ʔΎԴ͜ Mini
ʈՈ ࡌҷ˾码ʕٙ host Τ称 (www.muchiii.com -> devm1.corp.muchiii.com) pkg_create
˸І动ʷٙ˙όe让Ѽ协错误ʔ会ࠠή发͛
Review • 减ˇ环ྤࢨ៦ ഛ͜ʈՈeՓ֛规֛d减ˇ环ྤ产͛ٙࢨ៦d˾码ٙۜ 质І್৷l • ᅼ块ʷ开发 让ӊ个ᅼ块独ͭ̈来d͜ʈՈ减ˇঐ争议e͜ݖᦻ让 ᅼ组ʝ沟ஷf •
让͕错变Ѣ难 ீ过ݴΥІ动ʷՓe减ˇӊ˂ई费ٙ时间e˸ʿ ӊ个ɛ͕错ٙଟf
ʦ˂Ցٙ规ߪ˖eݴeό˾码אਿ础ݖᦻ ே̙˸༧Ңࠅ ҎૐʔΝٙซجeீ过ɽΥeঐ够ዧ荡̈һε˦ڀ 开发᠒१j http://josephj.com:50010 线ɪ᠒१jhttp://modev.josephj.com
Any Questions? http://www.flickr.com/photos/phploveme/2847931240/ Thank You so muchiii
[email protected]