今天是个绝对值得记载的日子----第一次独自驾车。都说刚拿到驾照的人都十分手痒。没错,这种欲望可能来自人们试图证明自己的渴望。
我安排的路线是从中关村家乐福出发向南上三环,然后三环环绕一圈,再进入二环。听说有个“二环13郎”(二环一圈只要13分钟的男人),看看他到底有多猛。结果在刚出门的第一个路口就懵了,能不能左拐啊。。我把车泊在路旁,察颜观色数十分钟,确定有车辆成功左拐并未被警车热力追逐后,便一脚油门尾随其后徜徉而去。车辆成功驶入三环,我决定按逆时针方向行驶,结果在紫竹桥我走错了路离开了三环,这个错误直接导致了我浪费了一个多小时才又回到了三环上。在三环上开车真的很爽,没有交通灯、没有自行车、没有行人,而且二环太堵开不起来,四环太远沿途没什么风景,三环刚刚好。
一上午时间就过去了,下午带宿舍人去了翠微、北化、北邮,他办事我练车,他敢把生命托付给我很感动。晚上在华星看了场电影,愉快的一天完美谢幕。
我想车的魅力可能就在于穿梭的快感和驾驭的征服。从此,马路上又多了一个杀手...

Microsoft Office Live(www.officelive.com)终于开放注册了,目前还是个可以在线编辑的免费主页空间,类似Google Pages。基本版是永久免费的,注册即可获得免费顶级域名、5个免费邮箱、30MB空间,相当诱人 [money] 。
不过目前还只针对于美国测试,因此注册时需要提供美国的电话、地址和邮编(我瞎编了一个 [taste] ),还要提供VISA或Mastercard信用卡的卡号(用的招行信用卡)。
注册成功后新的域名要过几个小时才能生效,先试用了一下,感觉功能非常的强大,比Google Pages要强大的多,有点像SharePoint Portal Server,做个页面如同搭积木一样简单。不过由于是beta版毕竟还是有些bug,比如上传图片的窗口层次错误、无法删除已添加的webpart等等。。。
看来Google真是把微软给惹毛了,估计在线编辑word,excel近在咫尺了。
欢迎访问我的Office Live网站http://www.felixwoo.net ,呵呵,主要是我的一些作品,欢迎测试。

最近用 Live Communications Server 为单位构建了即时通讯平台,在使用过程中发现不能由管理员在服务器端为用户批量添加联系人,只能每个用户自己手动添加,因此对于企业统一管理来说非常不方便。利用周末时间写了一个小程序,能够实现批量添加联系人、自动创建联系人分组以及浏览和阐述选定用户的联系人及分组。希望能为同样在使用LCS的朋友提供一些方便。
Download : Please email me to felixwoo@gmail.com
LCS联系人管理软件 v1.0
软件简介
--------
LCS联系人管理软件是为Microsoft Live Communications Server批量管理联系人和分组而开发的。由于LCS没有为所有用户批量添加联系人的功能,因此给统一管理用户联系人带来了很多麻烦。该软件正是为了解决这样的问题而编写的。
软件特点
--------
1、批量为选定用户添加选定的联系人
2、自动根据联系所在的组织单位(OU)创建相应的分组,并加入其中
3、浏览用户的所有联系人和所有分组
4、删除选定用户的所有联系人及分组
使用说明
--------
该软件基于.NET Framework 1.1开发,必须运行在安装LCS服务的服务器上,而非数据库服务器。
联系方式
--------
如果您使用了该软件或对该软件有何意见欢迎访问我的主页http://www.felixwoo.com 或发邮件felixwoo@gmail.com
Felix
2006.4.10
========================================================
LCS Contacts Management v1.0
Introduction
------------
LCS Contacts Management is developed for Microsoft Live Communications Server (LCS), which is in order to manage batch contacts for LCS users. Due to the lack of managing batch contacts methods in LCS, there are a lot of trouble for administrators. Therefore, this software was born to accounting for this problem.
Features
--------
1.Add batch contacts for selected users.
2.Create contact groups automatically according to every contact's OU in Active Dictionary.
3.View all contacts or contact groups of selected user.
4.Delete all contacts or contact groups of selected user.
How to use
-----------
This software is based on .NET Framework 1.1, and must run at the server running LCS service but not the database server.
Bug Reporting
-------------
To report bugs, please visit my blog at http://www.felixwoo.com . Composing to felixwoo@gmail.com is also welcome.
Felix
April 10, 2006
最近给单位部署OA系统,采用了微软的整套解决方案。服务器是Windows 2003 server,以AD活动目录为用户中心,异步协作用Exchange,实时协作用Live Communication Server(LCS),防火墙用ISA,门户网站用SharePoint Portal Server,客户端就是Windows和Office。
在整个的部署过程中我无时无刻不感受到微软的力量。这些软件不仅自成一体而且还相互联系,整合构成了微软办公自动化的系统平台。之所以称之为系统是因为各个元素紧密耦合,比如,用户不仅可以在Office里面通过LCS进行实时协作办公,还可以通过Exchange完成流程化办公,最后再用SharePoint通过网站发布工作结果。等等。而最令人激动的是这些软件都可以根据需要进行二次开发。
微软的OA体系让我联想到电影肖申克的救赎,一个在监狱生活几十年的老人走出监狱以后选择了死亡,被体制化的用户也同样很难离开微软所设立的软件体系...
相信这些信息化的改进会给我们单位带来工作效率的提高,不过接下来的重任就是教会他们如何去用...
这篇文章简要的介绍了通过使用Atlas UpdatePanel控件进行局部页面渲染的概念。如果你理解了什么是Atlas,你将从这篇文章中受益匪浅。
这篇文章包含了一个很简单的代码示例,教您如何使用UpdatePanel控件来局部渲染页面。使用UpdatePanel的主要优点有:
1、减少了数据页面更新导致的页面刷新次数
2、减少了页面更新传送的数据量(因为在数据回送postback的时候,并不是整个页面都需要完全重新渲染)
3、通过加快UI响应速度提高了用户使用体验。
下面这个例子展示了如何为应用程序增加UpdatePanel控件。
http://atlas.asp.net/docs/Walkthroughs/Samples/datepicker.aspx
从这个示例中我们可以看到,点击页面中心的大的日历整个页面都会刷新,而点击左上方的小日历选择某个日子,页面并不会刷新,而且反应非常迅速。这就是因为这个日历被UpdatePanel包裹了,所以具有了局部页面无刷新渲染的特性。
因此,为一个ASP.NET控件增加AJAX的无刷新效果非常的简单,只要把其放在UpdatePanel内就可以了。
示例源代码如下:
<%@ page language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><script runat="server">
protected void ChosenDate_TextChanged(object sender, EventArgs e)
{
DateTime dt = new DateTime();
DateTime.TryParse(ChosenDate.Text, out dt);CalendarPicker.SelectedDate = dt;
CalendarPicker.VisibleDate = dt;
}protected void Close_Click(object sender, EventArgs e)
{
SetDateSelectionAndVisible();
}protected void ShowDatePickerPopOut_Click(object sender, ImageClickEventArgs e)
{
DatePickerPopOut.Visible = !DatePickerPopOut.Visible;// corrdinates are relative to the control, so we need to get the control's
// position too
int h = (int)ShowDatePickerPopOut.Height.Value;
SetDatePickerPopOutStyle(e.X + h, e.Y);
}protected void CalendarPicker_SelectionChanged(object sender, EventArgs e)
{
SetDateSelectionAndVisible();
}private void SetDateSelectionAndVisible()
{
ChosenDate.Text = CalendarPicker.SelectedDate.ToShortDateString();
DatePickerPopOut.Visible = false;
}private void SetDatePickerPopOutStyle(int x, int y)
{
DatePickerPopOut.CssClass = "PopUpShow";
DatePickerPopOut.Attributes.Add("style", "top:" + x + "px;left:" + y + "px;");
}
</script><html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title>Untitled Page</title>
<style type="text/css">.PopUpShow
{
background-color:lightblue;
position:absolute;
visibility:show;
width:150px;
height:150px;
z-index:1;
border: solid 2px black;
}</style>
</head>
<body>
<form id="form1" runat="server">
<atlas:scriptmanager id="ScriptManager" runat="server"
enablepartialrendering="true" />
<h4>With an UpdatePanel</h4>
<!-- This section of the page is wrapped by an UpdatePanel. -->
<atlas:updatepanel id="up" runat="server" mode="Conditional"
rendermode="Inline">
<triggers>
<atlas:controleventtrigger controlid="CalendarPicker"
eventname="SelectionChanged" />
</triggers>
<contenttemplate>
<asp:textbox runat="server" id="ChosenDate"
ontextchanged="ChosenDate_TextChanged" autopostback="true" />
</contenttemplate>
</atlas:updatepanel>
<span style="position: relative;">
<asp:imagebutton runat="server" id="ShowDatePickerPopOut"
onclick="ShowDatePickerPopOut_Click" imageurl="~/images/calendar.gif"
height="20px" width="20px" />
<!-- This section is also wrapped by an UpdatePanel. -->
<atlas:updatepanel runat="server" id="up1" mode="Conditional"
rendermode="inline">
<triggers>
<atlas:controleventtrigger controlid="ShowDatePickerPopOut"
eventname="Click" />
</triggers>
<contenttemplate>
<asp:panel runat="server" id="DatePickerPopOut" visible="false">
<asp:calendar id="CalendarPicker" runat="server" backcolor="White"
bordercolor="White" borderwidth="1px" font-names="Verdana"
font-size="6pt" forecolor="Black" height="139px"
nextprevformat="FullMonth" width="100px"
onselectionchanged="CalendarPicker_SelectionChanged">
<selecteddaystyle backcolor="#333399" forecolor="White" />
<todaydaystyle backcolor="#CCCCCC" />
<othermonthdaystyle forecolor="#999999" />
<nextprevstyle font-bold="True" font-size="6pt"
forecolor="#333333" verticalalign="Bottom" />
<dayheaderstyle font-bold="True" font-size="6pt" />
<titlestyle backcolor="White" bordercolor="Black" borderwidth="4px"
font-bold="True" font-size="8pt" forecolor="#333399" />
</asp:calendar>
<br />
<asp:linkbutton id="CloseDatePickerPopOut" runat="server"
font-names="Tahoma" font-size="small" onclick="Close_Click"
tooltip="Close Pop out">
Close
</asp:linkbutton>
</asp:panel>
</contenttemplate>
</atlas:updatepanel>
</span>
<hr />
<br />
<!-- The remainder of the page does not have an UpdatePanel, so it cannot
participate in the benefits of partial page rendering on postbacks. -->
<div style="text-align: center;">
<h4>Without an UpdatePanel</h4>
<asp:calendar id="Calendar1" runat="server"></asp:calendar>
</div>
<p>
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy
eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam
voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet
clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit
amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam
nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat,
sed diam
voluptua. At vero eos et accusam et justo duo dolores et ea rebum.
Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor
sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed
diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam
erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et
ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem
ipsum dolor sit amet.
</p>
<p>
Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie
consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et
accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit
augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet,
consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt
ut laoreet dolore magna aliquam erat volutpat.
</p>
<p>
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy
eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam
voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet
clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit
amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam
nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat,
sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum.
Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor
sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed
diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam
erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et
ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem
ipsum dolor sit amet.
</p>
<p>
Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie
consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et
accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit
augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet,
consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt
ut laoreet dolore magna aliquam erat volutpat.
</p>
</form>
</body>
</html>
转自 http://blog.csdn.net/psyl/archive/2006/03/17/627496.aspx
我要从徐家汇赶去机场,于是匆匆结束了一个会议,在美罗大厦前搜索出租车。一辆大众发现了我,非常专业的、径直的停在我的面前。这一停,于是有了后面的这个让我深感震撼的故事,象上了一堂生动的MBA案例课。为了忠实于这名出租车司机的原意,我凭记忆尽量重复他原来的话。
“去哪里……好的,机场。我在徐家汇就喜欢做美罗大厦的生意。这里我只做两个地方。美罗大厦,均瑶大厦。你知道吗?接到你之前,我在美罗大厦门口兜了两圈,终于被我看到你了!从写字楼里出来的,肯定去的不近~~~”
“哦?你很有方法嘛!”我附和了一下。
“做出租车司机,也要用科学的方法。”他说。我一愣,顿时很有些兴趣“什么科学的方法?”
“要懂得统计。我做过精确的计算。我说给你听啊。我每天开17个小时的车,每小时成本34.5元……”
“怎么算出来的?”我追问。
“你算啊,我每天要交380元,油费大概210元左右。一天17小时,平均每小时固定成本22元,交给公司,平均每小时12.5元油费。这是不是就是34.5元?”,我有些惊讶。我打了10年的车,第一次听到有出租车司机这么计算成本。以前的司机都和我说,每公里成本0.3元,另外每天交多少钱之类的。
“成本是不能按公里算的,只能按时间算。你看,计价器有一个“检查”功能。你可以看到一天的详细记录。我做过数据分析,每次载客之间的空驶时间平均为7分钟。如果上来一个起步价,10元,大概要开10分钟。也就是每一个10元的客人要花17分钟的成本,就是9.8元。不赚钱啊!如果说做浦东、杭州、青浦的客人是吃饭,做10元的客人连吃菜都算不上,只能算是撒了些味精。”
强!这位师傅听上去真不象出租车司机,到象是一位成本核算师。“那你怎么办呢?”我更感兴趣了,继续问。看来去机场的路上还能学到新东西。
“千万不能被客户拉了满街跑。而是通过选择停车的地点,时间,和客户,主动地决定你要去的地方。”我非常惊讶,这听上去很有意思。“有人说做出租车司机是靠运气吃饭的职业。我以为不是。你要站在客户的位置上,从客户的角度去思考。”这句话听上去很专业,有点象很多商业管理培训老师说的“put yourself into others' shoes.”
“给你举个例子,医院门口,一个拿着药的,一个拿着脸盆的,你带哪一个。”我想了想,说不知道。
“你要带那个拿脸盆的。一般人病小痛的到医院看一看,拿点药,不一定会去很远的医院。拿着脸盆打车的,那是出院的。住院哪有不死人的?今天二楼的谁死了,明天三楼又死了一个。从医院出来的人通常会有一种重获新生的感觉,重新认识生命的意义,健康才最重要。那天这个说:走,去青浦。眼睛都不眨一下。你说他会打车到人民广场,再去做青浦线吗?绝对不会!”
我不由得开始佩服。
“再给你举个例子。那天人民广场,三个人在前面招手。一个年轻女子,拿着小包,刚买完东西。还有一对青年男女,一看就是逛街的。第三个是个里面穿绒衬衫的,外面羽绒服的男子,拿着笔记本包。我看一个人只要3秒钟。我毫不犹豫地停在这个男子面前。这个男的上车后说:延安高架、南北高架~~~还没说后面就忍不住问,为什么你毫不犹豫地开到我面前?前面还有两个人,他们要是想上车,我也不好意思和他们抢。我回答说,中午的时候,还有十几分钟就1点了。那个女孩子是中午溜出来买东西的,估计公司很近;那对男女是游客,没拿什么东西,不会去很远;你是出去办事的,拿着笔记本包,一看就是公务。而且这个时候出去,估计应该不会近。那个男的就说,你说对了,去宝山。”
“那些在超市门口,地铁口打车,穿着睡衣的人可能去很远吗?可能去机场吗?机场也不会让她进啊。”
有道理!我越听越有意思。
“很多司机都抱怨,生意不好做啊,油价又涨了啊,都从别人身上找原因。我说,你永远从别人身上找原因,你永远不能提高。从自己身上找找看,问题出在哪里。”这话听起来好熟,好像是“如果你不能改变世界,就改变你自己”,或者Steven Corvey的“影响圈和关注圈”的翻版。“有一次,在南丹路一个人拦车,去田林。后来又有一次,一个人在南丹路拦车,还是去田林。我就问了,怎么你们从南丹路出来的人,很多都是去田林呢?人家说,在南丹路有一个公共汽车总站,我们都是坐公共汽车从浦东到这里,然后搭车去田林的。我恍然大悟。比如你看我们开过的这条路,没有写字楼,没有酒店,什么都没有,只有公共汽车站,站在这里拦车的多半都是刚下公共汽车的,再选择一条最短路经打车。在这里拦车的客户通常不会高于15元。”
“所以我说,态度决定一切!”我听十几个总裁讲过这句话,第一次听出租车司机这么说。
“要用科学的方法,统计学来做生意。天天等在地铁站口排队,怎么能赚到钱?每个月就赚500块钱怎么养活老婆孩子?这就是在谋杀啊!慢性谋杀你的全家。要用知识武装自己。学习知识可以把一个人变成聪明的人,一个聪明的人学习知识可以变成很聪明的人。一个很聪明的人学习知识,可以变成天才。”
“有一次一个人打车去火车站,问怎么走。他说这么这么走。我说慢,上高架,再这么这么走。他说,这就绕远了。我说,没关系,你经常走你有经验,你那么走50块,你按我的走法,等里程表50块了,我就翻表。你只给50快就好了,多的算我的。按你说的那么走要50分钟,我带你这么走只要25分钟。最后,按我的路走,多走了4公里,快了25分钟,我只收了50块。乘客很高兴,省了10元钱左右。这4公里对我来说就是1块多钱的油钱。我相当于用1元多钱买了25分钟。我刚才说了,我一小时的成本34.5块,我多合算啊!”
“在大众公司,一般一个司机3、4千,拿回家。做的好的大概5千左右。顶级的司机大概每月能有7000。全大众2万个司机,大概只有2~3个司机,万里挑一,每月能拿到8000以上。我就是这2~3个人中间的一个。而且很稳定,基本不会大的波动。”
太强了!到此为止,我越来越佩服这个出租车司机。
“我常常说我是一个快乐的车夫。有人说,你是因为赚的钱多,所以当然快乐。我对他们说,你们正好错了。是因为我有快乐、积极的心态,所以赚的钱多。”
说的多好啊!
“要懂得体味工作带给你的美。堵在人民广场的时候,很多司机抱怨,又堵车了!真是倒霉。千万不要这样,用心体会一下这个城市的美,外面有很多漂亮的女孩子经过,非常现代的高楼大厦,虽然买不起,但是却可以用欣赏的眼光去享受。开车去机场,看着两边的绿色,冬天是白色的,多美啊。再看看里程表,100多了,就更美了!每一样工作都有她美丽的地方,我们要懂得从工作中体会这种美丽。”
“我10年前是强生公司的总教练。8年前在公司作过三个不同部门的部门经理。后来我不干了,一个月就3、
5千块,没意思。就主动来做司机。我愿意做一个快乐的车夫。哈哈哈哈。”
到了机场,我给他留了一张名片,说:“你有没有兴趣这个星期五,到我办公室,给微软的员工讲一讲你怎么开出租车的?你就当打着表,60公里一小时,你讲多久,我就付你多少钱。给我电话。”
我迫不及待的在飞机上记录下他这堂生动的MBA课。
============================
[注一]关于真实性。事情绝对是真实的,并且我尽最大努力忠实于这名司机的原意,包括数字、选词、语气、构句等。除了我记忆力所限不能100%精确外,基本重现了当时的场景。我没有“润色”,因为我以为他的感染力比我要大。
[注二]关于星期五。我发出了诚挚的邀请,希望他能来公司做一场演讲。但这要尊重司机本人的意愿,如果他并不愿意、或者不感觉合适而未能成行,只能表示遗憾了。希望文章能够弥补希望参加的人的一些遗憾,也不枉我写了这么长。

最近研究了一下微软的Atlas(MS的AJAX解决方案),打算翻译一些资料,即学技术又练英语 [smile] 。今天先翻译了一篇“Atlas概述”,如果有不对的地方欢迎指正。后续打算翻译几篇实例讲解的文章。
标题:ASP.NET “Atlas” 概述
翻译:吴飞(Felix)
原文:http://atlas.asp.net/docs/Overview/Overview.aspx
介绍
很多网页开发人员一直以来都在努力提高HTML的UI使用体验,包括JavaScript的复杂性以及跨浏览器的兼容性。在很多情况下,开发人员不得不为了兼容不同浏览器通过创建基于服务器端的动态网页而牺牲丰富的用户体验。
在过去的几年里,浏览器的很多新特性促使网页开发人员重新探索是否有可能创建基于客户端应用程序。目前,所有主流浏览器都支持“可编程文档对象模型”(DOM),最新的几个版本中还增加了服务器端和客户端直接通信的能力,而不用再使用“回送”(Postback)。因此,新一代的网页程序应运而生,比如Microsoft Virtual Earth和Microsoft Windows Live,这些网站都提供了像拖拽(drag-and-drop)和实时处理数据的UI特性。
然而,开发这样的网页程序并不简单。你不得不了解浏览器的DOM并用JavaScript编写代码,而且也因不同的浏览器而不同。此外,JavaScript并没有面向对象(object-oriented)和类型安全(type-safe)等.NET所具有的特性。简而言之,创建面向客户端的网页程序需要精通一门新的编程语言和一个新的开发平台。
在这样的情况下,ASP.NET ‘Atlas’横空出世。Atlas是一种整合了客户端脚本库和ASP.NET 2.0服务器端开发平台的新的ASP.NET网页开发技术。这种网页由Atlas提供客户端支持,由ASP.NET提供服务器端支持。由于Atlas是ASP.NET的扩展,因此他完全整合了服务器端的服务。使用了Atlas,你就可以只把网页中的重要部分提供给客户端,而不用处理整个页面,并且可以在后台与服务器进行通讯。由此可见,你可以创建响应快、表现力丰富的UI和服务器通讯。
Atlas与AJAX
在网页开发业界,众所周知AJAX(Asynchronous JavaScript and XML)技术能够创建客户端服务器通讯和丰富的UI。AJAX是一种创建响应快、互动的网页的手段。Atlas可以让你创建AJAX样式的应用程序,而且超越了AJAX,能够为创建应用程序提供一个完整的开发平台。Atlas创建的应用程序可以针对应用需求而平衡客户端和服务器端的开发,并且为客户端和服务器端提供相同级别的编程能力。
Atlas提供了什么?
Atlas的主要目标就是整合客户端脚本和服务器端ASP.NET以提供一个完整的开发平台。
客户端特性
为了客户端开发,Atlas降低了基于JavaScript开发的复杂性,并提供了以下特性:
1、一致的、面向对象的JavaScript API组。可以使用.NET中很熟悉的OOP特性编码客户端程序。
2、浏览器自适用。可以不用再为不同的浏览器编写不同的代码。
3、客户端脚本API和组件支持丰富的UI特性,比如拖拽(drag-and-drop)。几乎使用很少的代码就可以为你的HTML控件加入这些特性。
4、类似ASP.NET服务器控件的客户端声明模型。
服务器端特性
Atlas也整合了客户端脚本与ASP.NET服务端,因此可以控制应用程序任务,无论在哪里都是有意义的。ASP.NET为Atlas应用程序提供以下特性:
1、Web Service可以与Atlas应用程序整合
2、ASP.NET网页服务器控件会自动加入Atlas应用程序所需要的客户端脚本,因此不用再为这些控件编写JavaScript代码。
3、为客户端开发整合了Visual Studio 开发工具,提供了debug、statement completion和其他高效开发的特性。

北京->贵阳->灵堂->公墓->北京...
刚下飞机,疲惫的回到了宿舍。就在这之前的48小时,我送走了我最亲爱的爷爷。您的后事举办的很顺利,也非常体面,您安息吧。
第一次送走自己的亲人,让我感到了生命的短暂和渺小。从一个有机的细胞生命到最后无机的灰飞烟灭,从茫然的降临人世到坦然的离开人间,其实我们别无选择。能够选择的只有离开时的心情,只愿我们走完生命的最后一刻可以无怨无悔,无论对自己还是对别人。
虽然我没有自己的宗教信仰,但我宁愿相信生命轮回、阴阳转世,因为人生最后的留给自己和带给亲人的痛苦是无以寄托的...
3月18日,我会每年为您上一柱香。



