Cisco WebEx – Charlie Du
Brief historical retrospect of web develop◦ Problems and challenge
Re-organization◦ F2E & SDE1
◦ Process◦ Benefits
Separation and Cooperation◦ How did Y! do it◦ How did Cisco WebEx do it◦ Replicable model of any languages
1 man, from end 2 end. Small business Most of the sites
look the same No innovation
How to handle the big business dev? How to improve the productivity? How to improve the quality?
We need Re-organization in our developer team.
OrganizationOrganizationTeam Leader
Technic Leader
Team member
Explicit Requirements Change Control
For CompanyImprove productivityImprove product qualitySave costProfessional
For DeveloperImprove skill to be a masterDo what you want to doHelp for the career planning
PHP Maple System + PHP
What is the problem? Hard to replace the mock data Always lost the close tag QA joined too later
Java + Freemarker + Data Interface Spec
What is the problem? Environment data have no handled Two frameworks conflict
Language
URL Register
Template
Data Interface
Directive Implementing
Java URL/TemplateMapping
FreemarkerVelocity
Mock Data(.json)
Form Data
Link URL
I18N For JS
I18N For Template
Biz Data Access
Env Data Access
Static Resource Access
Php N/A .php
Asp(.net) N/A .asp(x)
Biz Data and Ajax Call Response
◦ It should be agreement with F2E and SDE
{status: “SUCCESS|FAILURE”,message: “Response report of current request”,result: “Return value, it can be any data type,
Such as String, Array, Object, F2E and SDE need agree on the data structure here”
}
Environment Data
◦ It should be agreement with F2E and SDE
{skinpath: “/resource/image/”,jspath: “/resource/css/”,rootpath: “/resource/js/”,currentuser.cred: “U1U7EXG5”,currentuser.username: “Charlie Du”
}
Environment Data
◦ In order to decide where are these environment data from @SDE
{currentuser.cred: {
from: “session”},currentuser.username:{
from: “session”}
}
Mock Data File Structure
Form Data Action URL Items’ Name Submit Method
Link URL
All these need to be a document of Data Interface Specification finally!
Data Interface Specification
XXX ProjectVersion:0.1
F2E Owner: Charlie DuSDE Owner: Bo Song
2010/10/09
I18N For JS
<@easySC.i18nJs path=“…/feed.js”/>
It should generated these codes:
<script type=“text/javascript” src=“…/feed_en_US.js”></script> <script type=“text/javascript” src=“…/feed.js”></script>
“en_US” should match the client language.
I18N For Template
<@easySC.i18nMsg key=“feed.userinfo” arguments=“Charlie” />
It should get the key “feed.userinfo” from the i18n properties and pass the arguments to render the final content.
For example: feed.userinfo={0}'s InfoThe result should be: Charlie’s Info
Biz Data Access
<@easySC.bizData name=“feed” service=“feed.feed_list” param=“{pageSize:10,pageIndex:0}” />
“service” should match the mockdata/biz/feed/feed_list.json (Mock Env)it as a Service Name on Production ENV.
“param” will be used by Production Env
“name” will be the returned value, a JSON Object from the .json mock data Or true data.
Then, we can use the variable “feed” to access the data, such as: feed.status, feed.message, feed.result.
Biz Data Access For AJAX Call
bizcall.ext [.do, .php, .asp(x)]
All Ajax call point to the JSONRPCHandler.ext, and post a field: Name: bizcall Value: {name:“feed”, service:“feed.feed_list”, params:
{pageSize:10,pageIndex:0}}
Then, on the SDE side, they still can use the easySC.bizData’s Handle, on F2E side, they can use the unique mock data.
Tips: you can build the request as a utility function. Such as “bizCall”
ENV Data Access
<@easySC.envData name=“username” key=“currentuser.username” />
“key” should match the property “currentuser.username” in mockdata/env/env.txt (Mock Env)
“name” will be the returned value: “Charlie Du”
Then, we can use the variable “username”
Directive can be implemented any way with different languages!
The core is:
Access txt file and parse the content to a JSON Object on Mock Env
Assembling true data to a JSON Object on Production Env They should provide least 2 types of return value : JSON
Object and JSON Text (For Template and Ajax Call)