自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(168)
  • 收藏
  • 关注

原创 写个 JavaScript 异步调用框架 (Part 1 - 问题 & 场景)

问题在Ajax应用中,调用XMLHttpRequest是很常见的情况。特别是以客户端为中心的Ajax应用,各种需要从服务器端获取数据的操作都通过XHR异步调用完成。然而在单线程的JavaScript编程中,XHR异步调用的代码风格实在是与一般的JavaScript代码格格不入。额外参数考虑一个除法函数,如果它是纯客户端的同步函数,那么签名会是这样的:functi

2009-05-06 00:41:00 335

原创 十分钟内学会:避免用户刷新导致重复POST提交

Question在Web应用中,采用POST提交信息是非常常见的,然而如果目标页面打开得太慢,用户就可能会刷新页面,这时候之前已经提交过的信息就会被重复提交。即使用户成功打开了POST提交目标页,之后他通过链接导航到别处了,再退回到POST提交目标页时仍可能会重复提交页面(例如因为浏览器缓存已失效)。而且,只要碰到重复POST提交的场景,浏览器就会问用户是否确认重做此操作,

2009-04-03 11:41:00 487

原创 ASP.NET AJAX 4.0 Preview 3 (Part 2 - ASP.NET AJAX Template)

在上一篇文章里,我们说到了如何使用ADO.NET Data Service Client Library能够轻松访问到存在服务器端的数据,然而将数据展现出来仍需要人手拼接HTML这点就实在是让人难以接受,所以我们现在就来看看如何利用ASP.NET AJAX Template解决这个问题。文章中所用到的示例代码,可以在这里下载:ASP.NET AJAX 4.0 Preview 3

2009-03-14 10:41:00 437

原创 ASP.NET AJAX 4.0 Preview 3 (Part 1 - ADO.NET Data Service Client Library)

自从Microsoft与jQuery合作以来,ASP.NET AJAX与jQuery就被定位为两个互补的AJAX库。既然jQuery已经实现了如此多轻量级的AJAX特性,自然ASP.NET AJAX会继续专注于富客户端所需的一些重量级特性。 在ASP.NET AJAX 4.0 Preview 3里面,开发人员能够接触到的两个重要的新特性就是ADO.NET Data Servic

2009-03-11 00:41:00 468

原创 假如你愿意以原版或影印版价格购买翻译书籍的话

这篇文章是接着Tony Qu的《批“觉得有必要记一下的东西——关于翻译”一文》写的,就讨论一个问题——你原意以原版或影印版的价格购买翻译书籍吗?为什么问这个问题?这源自Tony Qu批判的原文中的一句话:很多国内程序员看书就只看英文原版,开发就只用原版VS,就是这个原因。我承认,在英语能力相当的程序员当中,这句话说的是事实。能够看原版书的尽量看原版书,不仅仅因为看起来舒

2008-12-12 12:42:00 455

原创 SD2C 2008

这几天参加了SD2C,也就是“软件开发2.0技术大会”。规矩当然是照旧的,social第一,session第二。 Day 1 第一天想着12:00开始签到,于是慢吞吞地准备出发,去到九华山庄已经是11:00。这是我第一次在没有车接送的前提下一个人跑来九华山庄,路上浪费了不少时间。签到后开始乱逛,然后陆续找到了公司不同部门来的同事,发现大家都没吃午餐。虽然我自己从McDonald

2008-12-08 00:42:00 284

原创 SD2C 2008

这几天参加了SD2C,也就是“软件开发2.0技术大会”。规矩当然是照旧的,social第一,session第二。Day 1第一天想着12:00开始签到,于是慢吞吞地准备出发,去到九华山庄已经是11:00。这是我第一次在没有车接送的前提下一个人跑来九华山庄,路上浪费了不少时间。签到后开始乱逛,然后陆续找到了公司不同部门来的同事,发现大家都没吃午餐。虽然我自己从McDonalds带了一个汉堡来,不过

2008-12-07 01:06:00 951 6

原创 WinHEC 2008 China

今天是WinHEC第一天。WinHEC就是Windows Hardware Engineering Conference,中文名是做Windows硬件工程大会。昨晚紫柔告诉我9:00到场签到就可以了,因为9:30正式开始,但我早上还是忍不住多睡了一会儿,所以10:00才到场。当时还是张亚勤的演讲,我进入主会场后迅速找到剩余的几个空位坐下来了。张亚勤的演讲当然紧接着若干个de

2008-12-03 20:42:00 511

原创 《Introducing Microsoft Silverlight 2》书评

和上次的《Microsoft SQL Server 2005: 数据库基础由入门到精通》书评一样,同样是MVP的书评活动。 这本书适合什么人看?适合好像我这样的,对Silverlight 2感兴趣但是又不知道从何入手的人。整本书非常完整地覆盖到Silverlight每一个技术细节,当然这是Microsoft Press的习惯做法了。如果你想用Silverlight 2来做点什么

2008-11-23 21:42:00 313

原创 软件安装时到底是否应该让用户选择路径

周末和Google UX Team的Junyu聊天,说到Google现在统一使用Google Installer安装软件了,点一下Web上面的链接就自动开始下载安装并运行,开头我还以为是Microsoft的ClickOnce呢。由于安装过程是全自动的,就如同Microsoft的ClickOnce和Adobe的AIR一样,所以是不允许用户选择安装路径的。到底不让用户选择安装目

2008-11-04 00:42:00 403

原创 以服务器端为中心的 ASP.NET AJAX 模式 (Part 2 - Control)

在上一篇文章当中,也就是《以服务器端为中心的 ASP.NET AJAX 模式 (Part 1 - Behavior)》,我们探讨了较为易用的Behavior模式。之所以说它较为易用,是因为它不涉及和原有Page处理流程的交互,即使访问网络也是访问独立的Web Service(包括Page上的[WebMethod]),因此和Page处理流程的设计绝对是正交的。但有时候我们需要的就

2008-10-30 00:42:00 315 1

原创 以服务器端为中心的 ASP.NET AJAX 模式 (Part 1 - Behavior)

早在ASP.NET AJAX从CTP转向Beta再转向RTM时,看着客户端的Control被逐步放弃,与此同时ASP.NET AJAX Control Toolkit越来越多地使用Behavior,我就想深入说说ASP.NET AJAX的模式。不过由于我比较懒,所以这个话题只在《理想的 ASP.NET AJAX (Part 2 - Server Centric)》中一笔带过,没

2008-10-26 20:42:00 303

原创 Vista 为什么要引入 UAC

UAC的目标就是:干扰用户!这其实不是我独创的,而是从TWiT上听到的一种见解。UNIX的命令行有sudo,Mac在GUI上也能够在需要sudo调用时弹出对话框要求输入密码,然而这两者的出现频率比Vista的UAC要低得多。为什么UAC的出现频率那么高呢,难道是Vista的用户体验设计得有问题?显然不是这样,Vista的UAC就是设计来不停地干扰用户的。干扰用户随之而来

2008-09-21 23:42:00 330

原创 如何动态加载 JavaScript 与 CSS

Omar AL Zabir这位MVP总是喜欢搞些稀奇古怪同时又很实用的小东西,并且还十分值得参考。最近他就做了一个叫做ensure的小工具用于动态加载JavaScript、CSS与HTML,而且IE、Firefox、Opera、Safari都支持了,那么我们就来看看ensure是如何做到动态加载JavaScript与CSS的。在介绍ensure内部的实现之前,让我们先来看看

2008-09-02 23:42:00 347

原创 英语阅读推荐:创建Silverlight用户控件 & A*路径搜索中使用二叉堆

本期Random Clippings推荐两篇文章,一篇关于时下热门的Silverlight,而另一篇则是相对学术风格的二叉堆使用方法介绍。创建Silverlight用户控件 (Creating and Using Silverlight and WPF User Controls)Scott Guthrie的文章总是那么简单易懂,有时候还有丰富的插图,简直就如看连环画一

2008-04-07 04:42:00 338

原创 救救 Web Developers ,拒绝 IE6 !

这是最近的一场于web developers相关的campaign,官方站点是SaveTheDevelopes.org。在上面你可以下载一段脚本和对应的图片,放到你自己的网站上,然后只要有用户使用IE6访问你的网站,他就会看到一个小小的提示框,建议他升级到IE7或选用其它非IE浏览器。当然,你也可以直接引用SaveTheDevelopers.org上面的脚本文件,但大家都知道潜

2008-04-06 16:42:00 552

原创 讲座资源:Silverlight 2.0

这是2008年3月30日微软广州.NET俱乐部活动上Silverlight 2.0这一部分讲座的资源,包括了pptx以及演示网站(演示网站中的SilverlightDemoHost项目需要部署为http://localhost/SilverlightDemo/)。在这次的讲座上,讲的主要是Silverlight 2.0的新特性,而上次Silverlight 1.0所讲过的内

2008-03-31 12:42:00 290

原创 深入理解 ASP.NET 动态控件 (Part 6 - 模板控件)

在之前的文章中,我极力推荐大家使用Repeater和MultiView这类TemplateControl,为什么呢?因为只有这样做,才算是符合MVP或MVC模式。(到底是MVP还是MVC,这视乎你选用什么呈现引擎了。)虽然我们要动态创建控件,但实际上这部分控件仍然属于View的部分,我们应该尽量采用ASPX的声明性名义来描述这些控件,避免用C#代码来创建控件、设置属性并添加

2008-03-26 00:42:00 423

原创 深入理解 ASP.NET 动态控件 (Part 5 - 编译实验)

这次的文章是一个小小的动手实验,你需要准备好Visual Studio 2005或者Visual Studio 2008,以及最新版本的Reflector。通过这次的实验,你将对ASPX与C#代码如何合并编译为一个dll代码有所理解。在实验开始之前,首先来一个小问题:如果不允许你使用ASPX,要你完全使用C#代码写一个具备复杂控件树的页面你会怎么写?把声明控件的代码都放在P

2008-03-24 12:42:00 291

原创 在校学生找实习、找工作、了解企业情况等等等等

因为时不时就有低年级的同学跑来问我这类问题,所以我干脆写篇文章好了。信息获取最先想到的,也是最重要的,是你想干什么,而不是你父母想你去干什么,或者哪个赚钱之类的。在计算机系里面,你总能碰到一些对这个行业没什么感觉的人,他们会说当年填报志愿的时候根本没什么喜欢不喜欢可言,于是在父母驱使下或者金钱诱惑下就报了计算机系。显然你不想犯这类错误,因此第一步是弄清楚你想要什么,或者

2008-03-14 20:42:00 383

原创 使用 .NET 实现 Ajax 长连接 (Part 2 - Mutex Wait & Signal)

在上一次的文章中,我们说到了如何设计一个ASP.NET Web Service来处理长连接请求。很多人对此就提出了问题,如何hold住请求让它30秒不断开了?这其实很简单,只需要Sleep()一下就可以了:Thread.Sleep(30 * 1000);然而问题是,我们不是要等30秒然后看看是否有事件需要返回,而是在这30秒内随时有事件随时返回。因此,我们需要一

2008-03-08 17:43:00 508

原创 使用 .NET 实现 Ajax 长连接 (Part 1 - Comet Web Service)

Ajax的长连接,或者有些人所说的Comet,就是指以XMLHttpRequest的方式连接服务器,连接后服务器并非即时写入相应并返回。服务器会保持连接并等待一个需要通知客户端的事件,该事件发生后马上将数据写入响应,这时候客户端就以相当“实时”的方式接收到事件通知。具体的通信模型,请参考这篇文章:《Comet:基于 HTTP 长连接的“服务器推”技术》,里面已经说得非常详细了,

2008-02-26 17:43:00 354

原创 Windows 就是一个带 UI 的命令行

这是用过Mac之后对Windows的感觉。用一个对程序员来说比较友善的比喻来说,以面向过程的方式来写一大堆函数,然后再分别塞到几个类里面,这就是Windows了。而Mac是真正的面向对象思想下设计的。在Windows当中,我们貌似在操作一个“文档”、一段“文本”、一张“图片”,但实际上我们都不是在操作对象本身,而是类似于在操作handle——你不知道对象在哪里,你不能直

2008-01-10 21:43:00 346

原创 编写 iPhone Friendly 的 Web 应用程序 (Part 6 - iUI)

iUI是一个针对iPhone Safari的Web开发框架,由Joe Hewitt开发。这位Joe Hewitt曾经参与过Firefox的开发,包括其中的DOM Inspector以及Firebug,后来到了Facebook,为Facebook开发了iPhone专用版本,对iPhone Web开发社区算是作出了巨大贡献。样式我们继续说iUI这个框架。这个框架所做的事情,

2008-01-07 21:43:00 413

原创 MVP on dot NET - Episode 1

主持:Bean、Jeffrey、Cat 根据PC World的统计,2007年IE7与FF的增长相当,这意味着从IE6转分别转到IE7与FF的比例为50/50。 Mac效果般的Lightbox效果 - 来自CandyBar软件首页(留意页面底部的软件截图) 纯粹用C#编写的SharpOS发布了第一个里程碑版本 - 0.0.1 NeoS

2008-01-07 11:43:00 284

原创 如何订阅MVP on dot NET(或其它播客) - iTunes版

如果您还不知道播客是什么,请先阅读《MVP 播客上线》中的播客介绍部分。首先,请打开iTunes。由于我是在Mac上使用iTunes,所以如果你是PC用户,您所看到的界面细节会和下面的截图略有不同。如果您还没有iTunes,但希望在iPod(包括iPhone)上收听播客,那么请先下载iTunes。然后请点击“高级”菜单下的“订购 Podcast...”。输入MV

2008-01-01 17:43:00 385

原创 MVP on dot NET - Pilot Episode

主持:Bean、Jeffrey、Cat 8 + 2 = ☺ - IE8通过了Acid2测试 gOS发布,日后我们仅仅使用Web也能生存下去吗?客户端过剩的CPU资源用来干什么? 文档都放上线!我们用Adobe SHARE还是Office Live Workspace? Linq to SQL、ADO.NET Entity Framew

2008-01-01 12:43:00 302

原创 新年新服务: MVP 播客上线

其实我很早就想做podcast(播客),10月份从三亚回来一直在筹备一个MVP博客,最终在前天完成了第0集(pilot episode)的录制,并将于今天稍晚时候上线。在整个过程中,我需要感谢dudu以及博客园对podcast提供的支持与服务,感谢Bean与Jeffrey对podcast准备工作与录制的投入。首先,我介绍一下podcast为什么叫做podcast。过往,我们

2008-01-01 03:43:00 273

原创 我嘅 2007

(以下的是实验性文章,全文使用Cantonese书写而成,附带Mandarin翻译,请将鼠标移至带有下划线的短语上以查看翻译。)點解成個博客園都喺度講“我嘅2007”,仲要大部分都差唔多……好,咁我就寫啲唔同啲嘅嘢,例如話……人脈啦。我要話,技術唔係最重要嘅,亦都唔係管理,而係人脈。2007年,個人發展上嘅兩個重要事件,一係攞咗微軟嘅MVP,二係賣咗畀B家,兩樣都係要靠

2008-01-01 02:43:00 304

原创 编写 iPhone Friendly 的 Web 应用程序 (Part 5 - 交互入门)

我们已经研究过XHTML和CSS了,现在开始看看最后一部分,也就是JavaScript,以及它所提供的交互能力。无AJAX交互第一种我们要看的交互,是完全不使用JavaScript,这其中一个例子就是GMail。GMail的iPhone版其实就是由普通的GMail移动版修改过来的,界面上更贴近桌面版GMail了,然而交互性并没有怎么提高,每一个点击都对应一次刷新,没有任

2007-12-29 13:43:00 339

原创 编写 iPhone Friendly 的 Web 应用程序 (Part 4 - CSS)

说到编写CSS,大家的第一反应肯定是——有没有选择性CSS。有!我们可以设计一个CSS,使得只有iPhone上的Safari会采用它,其他浏览器都会无视它,这样我们就可能可以复用现有的XHTML页面代码,仅仅为它们引入新的CSS就能够适用于iPhone,无须重新编写页面。这个选择性CSS链接语句如下:Safari是支持media选择的,only screen声明

2007-12-27 14:43:00 444

原创 编写 iPhone Friendly 的 Web 应用程序 (Part 3 - XHTML)

在接下来的两篇文章中,我们将探讨iPhone上的Safari所支持的XHTML与CSS,之后才进入JavaScript的讨论。作为一款现代化的浏览器,Safari当然是基于标准的,那就让我们看看Safari支持哪些标准吧: HTML 4.01 XHTML 1.0 CSS 2.1 以及部分 CSS 3 JavaScript (ES3) DOM (Level 2) AJ

2007-12-27 13:43:00 649

原创 编写 iPhone Friendly 的 Web 应用程序 (Part 2 - Viewport)

在了解到iPhone的一些常见布局法后,我们就可以开始着手编写一个真正能在iPhone上跑的页面了。小声说一句,之前我说要布局讨论完了,要进入交互逻辑开发,后来细心一想发现不行,有些东西不讲的话将会对布局带来问题,绕过去的话并不怎么优雅,因此继续讲布局。首先要说的就是viewport,也就是可视区域。对于桌面浏览器,我们都很清楚viewport是什么,就是出去了所有工具栏、

2007-12-26 17:43:00 661

原创 编写 iPhone Friendly 的 Web 应用程序 (Part 1 - 布局入门)

用过iPhone的朋友应该知道,iPhone上面的一些应用程序是能够随机器转动自动适应的,也就是说竖着拿的时候就竖着显示,横着拿的话就横着显示,iPhone中至关重要的Safari浏览器当然也支持这一点了,因此我们考虑设计iPhone friendly的应用程序时,首先要考虑兼容这种情况,不能把页面定死在一个宽度上。且慢,我们不是说设计自己的应用程序吗?这和内置的Safari有

2007-12-25 21:44:00 395

原创 使用 fluid layout 时记得设置 min-width

希望aw不介意我拿他的blog来做例子,因为第一次想到这个问题是我在手机上看aw的blog时碰到的。我的手机屏幕小,然而Opera Mini运行在完整视图时会以贴近Opera PC的形式处理CSS,因此fluid layout的多个列不会自顶向下顺序显示,而会保持原来并排的布局,同时因为fluid layout没有强制width,因此Opera Mini就会使用手机浏览器的宽度

2007-12-21 15:44:00 346

原创 转会咯,从广州转北京咯!

我说的是从广州.NET俱乐部转到北京.NET俱乐部,哈哈。今天一早的飞机抵达北京,明天入职开始在百度为期三个月的实习。非常幸运的是,11月刚刚参加完广州俱乐部的活动,到了北京后就马上碰上了12月的北京俱乐部的Visual Studio2008 & Windows Server2008 交流会。如果你是北京俱乐部的成员,或者好像我这样“碰巧”有机会参加这次活动,那么到时候见咯。

2007-11-27 21:44:00 326

原创 从 Adobe SHARE 说到 Silverlight 的 XPS 支持

在很久很久以前,我们仅仅知道Flash能够做一些JavaScript做不到或者做不好的交互,特别是复杂度高的交互,除此之外也没有什么理由使用Flash了。后来Flash加上了视频支持,却一直不受重视。然而突然有一天YouTube就出现了,人们才发现这项支持的真正价值,并且纷纷效仿。再后来,Flash还加入了对PDF文档的支持,这项技术最近已经被Adobe成功利用于开发Web2.

2007-11-21 09:44:00 302

原创 Silverlight 与 WPF 的一些差异

首先,这两者使用的namespace是不同的,不要以为都是作为根元素那就是同一个类,其实从XML语义的角度来说不同namespace的同名节点代表着不同类别的实体。Silverlight的默认namespace是http://schemas.microsoft.com/client/2007,而WPF的默认namespace则是http://schemas.microsoft.

2007-11-19 22:44:00 498

原创 讲座资源:Silverlight In Action

这是2007年11月17日广州.NET俱乐部活动中Silverlight In Action这一部分的讲座资,其中包括了pptx以及Clock与MediaPlayer两个sample。需要注意的是,为了减少体积,第二个sample里面的SampleVideo.wmv被删除了,如果要让它正常运行起来,你必须手动添加一个SampleVideo.wmv到项目根目录里面去。 对于Sil

2007-11-17 22:44:00 301

原创 在 C# 中 ("x" == "X") 何时成立?

这个问题初看起来很奇怪,C#就是C#啊,一门严谨的语言,并且字符串是区分大小写的,无论是在什么情况下都有("x" != "X"),这才叫做一致性嘛。事实上,这在以前一直都是成立的,直到.NET Framework 3.5引入了Linq to Sql,这种一致性就被破坏掉了,变成依赖于环境配置了。 想象一下我们对一个Linq to Sql的DataObject编写一个Linq查询

2007-10-31 10:44:00 365

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除