刘先勇

做普通人也蛮好,尤其做一个爱学习的普通人。
posts - 14, comments - 111, trackbacks - 0, articles - 0
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

2010年1月28日

摘要: 从武汉来上海已经四年了,不记得什么时候开始学会不再施舍。 但这次,我告诉自己“明天一定要记得放一个硬币在口袋”。阅读全文

posted @ 2010-01-28 23:32 刘先勇 阅读(1907) 评论(29) 编辑

2009年12月18日

... 前言

  在Web应用程序中,引入AJAX,不仅可以提高用户体验(页面局部刷新),而且可以在一定程度上,降低Web服务器的工作负载和响应时间。

  AJAX 使用Javascript,在客户端(浏览器端),通过Http(s)协议,向服务器端 (Web Server)发起请求;服务器根据请求的URI,

完成相应的逻辑操作,尔后将执行的结果通过Http(s)协议,返回给客户端。

客户端对获取的返回结果(TEXT/XML 串),使用Javascript, 在callback 中解析、呈现。

 

... ASP.NET AJAX 服务器控件

  在早期的Asp, PHP, Jsp 开发中,AJAX 中,常见到的是XMLHttpRequest 忙碌的身影。
XMLHttpRequest in AJAX
function loadXMLDoc(url) {
    
if (window.XMLHttpRequest) {
        req 
= new XMLHttpRequest();
    } 
else if (window.ActiveXObject) {
        req 
= new ActiveXObject("Microsoft.XMLHTTP");
    }
    
if (req) {
        req.onreadystatechange 
= processReqChange;
        req.open(
"GET", url, true);
        req.send(
null);
    }

}

  如今,我们可以更多地选择JQuery, Ext Js 之类的Javascript 框架,以减少AJAX开发的工作量。

  Asp.NET(3.5及以上, 2.0及以下需安装Ajax Extension) 提供一套AJAX 服务器端控件(其实也就是那么5个, ScriptManger, ScriptManagerProxy, Timer,  UpdatePanel, UpdateProgress),来简化AJAX开发。 配合Ajax Control toolkit来使用,确实省事不少。

 

 ... UpdateProgress

 AJAX 服务器控件中, UpdatePanel是一个大玩意,页面请求完成后,你会发现只有处于UpdatePanel 之中的内容才会更新,

而UpdatePanel 之外之物则保持原样。

 即便如此,在UpdatePanel完成更新之前,比较友好的方式是,提示用户稍安勿躁,请求正在处理之中。

 

... UpdateProgress的瑕疵

  UpdateProgress 很有用,但也有一点瑕疵。

  下面例子中,用户点击"Filter"按钮, 利用Ajax Toolkit 中的ModalPopupExtender,弹出搜索条件窗口;

在弹出窗口中,点击“OK”按钮提交AJAX请求,而此时,我们的进度条却没有在最上层显示,而且常常是躲在弹出窗口下面看不见。

 

 

... 解决方法

 下面谈谈我的做法:

方法(一)

   在与ModelPopupExtender 相关联的Panel里, 加入一份UpdateProgress的Template 拷贝。如下:

代码
<div id="divFilteringLoader" runat="server" class="loader" style="display:none;">
            
<div class="loaderContent"><asp:Label runat="server" ID="lblLoading" Text="<%$ PPPResources:Main, Loading %>"></asp:Label></div>
        
</div>

 

  然后在,用户点击"OK"时,客户端触发:

$get("<%=divFilteringLoader.ClientID%>").style.display = 'block';

 

方法(二)

  用户点击"OK"时,客户端触发Cancel按钮的点击事件:

$get("<%=btnFilterCancel.ClientID%>").click();

 

 

... 总结

  问题很简单,解决的方式也很简单。

  园子里的朋友们,有遇到相同问题的吗?

  还望积极贡献些方法和主意。

 

 

 

 

posted @ 2009-12-18 10:35 刘先勇 阅读(1427) 评论(11) 编辑

2009年11月10日

摘要: 二战期间,"Blue Funnel" 船运公司,需要从美国向英格兰,途径大西洋运送物资。 不幸的是,他们很快就成为德军舰队的主要攻击目标。 公司管理人员也及时意识到,在被攻击的过程中,年轻船员的伤亡比例很大。 于是他们雇佣了一个叫"Kurt Hahn"的人,此人聪明之极,成立了一个至今仍然存在的组织 -- “Outward Bound”。 该组织设立了一门为期28天的课程,专门向年轻船员传授经验 -- 如何结合在学校里学到的知识,在关键时刻更好地利用它们。 实践证明,这门课程能很好地降低年轻船员的伤亡率。阅读全文

posted @ 2009-11-10 14:59 刘先勇 阅读(1741) 评论(13) 编辑

2009年10月22日

  前奏:

  今天,闲来没事. 于是动手在自己的本机安装一下Oracle, 顺便也想从项目上挪几张表过来看看.

 Step1: 安装.

 Step2: Create database  / Instance (Database Configuration Assistant)

 Step3: Startup database  (Web Admin console)

 Step4: Startup lisener (lsnrctl >> start)

 Step5: Create tablespace / Role / User

 问题出现:

   近些年,估计大伙不大使用Oracle 自带的 Sql*Plus 了(2006年还是有不少人在使用的). Aqua, PL/SQL developer, TOAD,反倒后来者居上。

   当我用 PL/SQL developer 连接自己创建的Instance 时,一切正常;

   连接远程Instance时,总是报错: “ORA-12154: TNS:could not resolve the connect identifier specified” 。

   同一个问题,解决方案也会不一样。

   如:在  http://www.blogjava.net/wahahacj/archive/2007/11/19/161689.html  中, 他的问题和我一样,可他的方法在我这却行不通。

我的解决方法: 

   在Login 时,确保输入的database name 完全匹配 tnsnames.ora 里的 Instance name.

   当然,更好的办法是在 sqlnet.ora 中加入: NAMES.DEFAULT_DOMAIN = world

  这样,就可以简单输入 Instance 的名称了.

 

posted @ 2009-10-22 16:14 刘先勇 阅读(5532) 评论(0) 编辑

2009年9月3日

posted @ 2009-09-03 15:39 刘先勇 阅读(1948) 评论(1) 编辑

2009年8月30日

posted @ 2009-08-30 19:55 刘先勇 阅读(1114) 评论(0) 编辑

2009年7月15日

posted @ 2009-07-15 07:45 刘先勇 阅读(2291) 评论(15) 编辑

2009年7月13日

摘要: ........ 前言 在 Asp.net MVC 中,开发人员要花费大量的心思在 Controller 的设计上;当用户发起 Http 请求时,Controller 首先获得响应。试想:用户发出请求 http://hostname:80/AzureApps/BookStore问自己以下两个问题: 1). MVC是怎样定位 ZureAppsController 的? 2). URI 里确实指明了C...阅读全文

posted @ 2009-07-13 18:49 刘先勇 阅读(2207) 评论(7) 编辑

2009年7月9日

摘要: FileAppender / RollingFileAppender 被广泛使用, 但它们的缺点是没法将跨不同应用域的Log信息集中控制在一个文件之中。 RemotingAppender, 不仅降低了代码的改动,更为重要的是,所有来自不同域的Log信息,全部汇入一体。 正所谓,涓涓细流,汇入大海。阅读全文

posted @ 2009-07-09 16:18 刘先勇 阅读(1483) 评论(5) 编辑

2009年6月30日

posted @ 2009-06-30 18:40 刘先勇 阅读(2313) 评论(11) 编辑