随笔 - 28  文章 - 4 评论 - 52 trackbacks - 0
<2012年2月>
2930311234
567891011
12131415161718
19202122232425
26272829123
45678910

昵称:Lupin
园龄:7年1个月
粉丝:1
关注:0

搜索

 
 

常用链接

随笔分类

随笔档案

文章分类

文章档案

技术站点

日常站点

设计站点

最新评论

阅读排行榜

评论排行榜

推荐排行榜

      今天百度发布了一个新产品, 叫百度搜索开放平台(open.baidu.com).

      按照百度的说法, 它是"一个基于百度网页搜索的开放的数据平台", 通过它, 任何人都可以向百度提交结构化得内容. 只要内容通过审核了, 以后这些内容就会相关关键字被搜索的时候出现在搜索结果的上方. 不仅如此, 数据的提供者还能追踪到这些内容得展现量,点击量, 点击率以及点击率top-query等.

      下面是一个例子:

     left02[1]

      见到这东西, 让我想起两三年前百度发布的一个"互联网新闻开放协议", 那时要整合的是新闻内容, 现在这个开放平台要整合的是所有"确定性"内容, 不得不说, 这个主意比新闻开放协议好得多.  我认为它至少不会像新闻开放协议那样与内容提供者的利益相冲突. 更重要的是, 通过这样一个开放平台, 百度将毫不费力的整合起无数的确定性内容, 和网页搜索形成互补的关系, 对于用户是一个极好的体验.

posted @ 2009-04-22 21:30 Lupin 阅读(37) 评论(0) 编辑

  现在在公司的一个项目中使用到AtlasToolkit中的CacadingDropDown,有一些需要有多选框(即Asp.Net服务器控件中的ListBox,HTML代码中的<select multiple="true"></select>),但是CascadingDropDown并不支持多选,全部是单选. 经过一翻研究和尝试之后,终于给它增加了多选的功能,于是就有了这篇文章.

  AtlasToolkit中的控件由几个部分组成

  •   Bihavior:这是一个客户端Js文件,定义了控件在客户端的行为,应该是AtlasTookit控件的核心部分
  •   Extender:这是控件的服务端支持,用于支持控件的服务端操作
  •   Properties:这是服务端配置类
  •   Designer:设计时支持

 在开始之前,先看看效果(注意最下一行字,这就是多选的结果),

要改造CascadingDropDown,就要拿这几个部分分别开刀.现在一步一步来.

第一步,使它在服务端支持ListBox

  虽然多选框跟单选下拉框在客户端都是Select,但在服务端却是两个不同的控件.CascadingDropDown本身只支持DropDownList

public class CascadingDropDown : ExtenderControlBase<CascadingDropDownProperties, DropDownList>

  上面是Extender文件中CascadingDropDown的声明,它继承自ExtenderControlBase,注意红色部分,因为这里的声明使它仅仅支持DropDownList,现在我们要把它改成ListControl,这样就可以同时支持ListBox和DropDownList了,因为这两个都继承自ListControl.

除了这里,Properties和Designer中的相应的泛型声明都要改成ListControl.

  以上做的是在接口上支持ListBox,现在要使它在行为上支持ListBox.这个只需要改Extender一个文件就可以了.

 

protected override void OnLoad(EventArgs e)
{
 base.OnLoad(e);
 foreach (CascadingDropDownProperties cascadingDropDownProperties in TargetProperties)
 {
  ListControl ctrl = (ListControl)FindControlHelper(cascadingDropDownProperties.TargetControlID);
  if (ctrl is DropDownList)
  {
   DropDownList dropDownList = ctrl as DropDownList;
   dropDownList.Items.Clear();
   dropDownList.Items.Add(cascadingDropDownProperties.ClientState);
  }
  else if (ctrl is ListBox)
  {
   ListBox listBox = ctrl as ListBox;
   listBox.Items.Clear();
   if (cascadingDropDownProperties.ClientState == null)
    return;
   foreach (string item in cascadingDropDownProperties.ClientState.Split(','))
   {
    listBox.Items.Add(item);
   }
  }
 }
}

protected override void OnPreRender(EventArgs e)
{

 foreach (CascadingDropDownProperties cascadingDropDownProperties in TargetProperties)
 {
  ListControl ctrl = (ListControl)FindControlHelper(cascadingDropDownProperties.TargetControlID);
  if (ctrl is DropDownList)
  {
   DropDownList dropDownList = ctrl as DropDownList;
   dropDownList.Items.Clear();
  }
  else if (ctrl is ListBox)
  {
   ListBox listBox = ctrl as ListBox;
   listBox.Items.Clear();
  }
 }

 base.OnPreRender(e);
}

  好了,上面就是改变服务端的,使之确实地支持ListBox,到这里服务端就修改完成了.

第二步,修改Behavior,以下的修改后的Behavior文件中的set_SelectedValue, 只需要修改这个地方就可以了.

 

this.set_SelectedValue = function(value) {

if( this.control != null && this.control.element != null && this.control.element.multiple )
{
  var e = this.control.element;
  //是多选框,即ListBox
  _selectedValue = new Array();
  for( var i = 0; i < e.options.length; ++i )
  {
   if( e.options[i].selected )
     _selectedValue[ _selectedValue.length ] = e.options[i].value;
  }
  AtlasControlToolkit.CascadingDropDownBehavior.callBaseMethod(this, 'set_ClientState', [ _selectedValue.toString() ]);
}
else
{
  _selectedValue = value;
  AtlasControlToolkit.CascadingDropDownBehavior.callBaseMethod(this, 'set_ClientState', [ _selectedValue ]);
}
}

  好了,编译,控件的发行就完成了.接下来说使用.

  第一步:把ASPX文件中的DropDownList改成ListBox,并且加上SelectMode="Multiple"

  第二步:使用类似以下的代码来取值

 

foreach (ListItem item in DropDownList3.Items)
{
//if (item.Selected)
color += RemoveValueText(item.Value) + ","
}

  注意,我把红字部分,这一行是不需要的,因为传回来的所有Item都是被选中的,没有被选中的项并没有被传回来.

posted @ 2006-08-26 11:28 Lupin 阅读(1550) 评论(6) 编辑

tags: , , , ,

  昨天才知道有ActionPack这个东西,据介绍说很多概念是从Ruby On Rails来的,但我对Ruby On Rails没有了解,所以也不知道是怎样,但我知道ActionPack真是是相当强的东西,即使它现在还不是足够的强大,但是经过发展,必然大有作为.

  闲话少说,到底ActionPack是个什么东西呢.说白了,它就是一个代码生成器,帮你生成访问数据库的代码. 但跟一般的代码生成器又有不同,ActionPack生成的代码并不存储在文件系统中,而是直接被编译在内存中,连Dll文件都没有.

  它是怎么做到这些的呢?

  最核心的就是BuildProvider了,它使用了Framework中的BuildProvider,在在生成的时候动态编译代码.这被编译的这些代码就是根据数据库中的表来生成的.而要让它做到这些,你只需要在配置文件中配置数据库连接字符串就可以了.

  以上是感性的认识,接下来看看它的结构.

  首先是一个BuildProvider,它继承自System.Web.Compilation.BuilderProvider,只要在Web.Config文件中配置,就可以让它在生成的时候直接运行里面的GenerateCode方法,跟HttpHandler有点类似.这是触发点.

  然后是CodeGeneration,看名字就明白了,它用来生成代码.

  然后是SchemaService,这个是用来读取数据库中的表信息的

  TableSchema,存放表信息,在进行代码生成的时候使用到.

  上面这几个,是ActionPack实现机制的主要部分.接下来的是一些配置和数据库访问的东西

  ActionPackConfig,ActionPackConfigurationSetting,这两个是读取配置文件的,比较简单.

  DBHelper和Query这两个是数据库操作的

  ActiveList,ActiveRecord,这两上是Entry的模板类.在这里封装DBHelper和Query中的操作,使用这两个模板类,使生成的代码变得十分简单.否则,生成代码的工作将变得十分繁琐.

ActionPack的结构就这样了,有空再继续深入剖析.

posted @ 2006-08-26 11:14 Lupin 阅读(234) 评论(1) 编辑

This is a temporary post that was not deleted. Please delete this manually. (9c0ca929-af61-409a-ad8d-894d59464837)

posted @ 2006-08-14 21:11 Lupin 阅读(96) 评论(0) 编辑
        发简历到这里,一方面想看看有没有朋友能给我提供暑假期间的实习。另一方面也想请大家指点一下,我这份简历有什么不足之处,应如何改进。谢谢!基于安全考虑,把手机号码和地址隐藏了。有实习工作推荐的话可以发邮件或者回复。PS:CSS乱了,有点乱,不好意思。
林XX (男 23岁)

  • 网络工程
  • 广东工业大学
  • hillywolf@gmail.com
  • xxxxxxx4747
  • 020-3932xxxx
  • 广州大学城广东工业大学
  • 1984年11月
  • 党员
林XX

 个人概述

Dos时代接触电脑, 99年接触网络,01年接触编程,03年开始进行实际项目开发。不同程度掌握多种编程语言(C#,C/ C++, Java, Perl),具有大多同龄人没有的多个实际项目经验。在实际项目开发过程锻炼了程序开发能力,学习了UML,设计模式,单元测试等相关知识。

能使用Java 和 .Net 多个流行框架(如:Hibernate, Luence, Structs, Enterprise Library)等,并曾对其中部分的运行机制进行研究。从中学习到各种高效的设计方式,和优雅的编程习惯

通过对专业课的学习,对计算机各层次原理有一定了解,有助于对高级语言更深地理解。

对计算机有浓厚兴趣和高度热情,乐于学习应用新知识。热爱工作,以成就感为最大的快乐源泉

 求职意向

希望能从事软件开发方面的工作。凭着几年的开发经验,可以从事C#,C/C++,Java方面的开发工作,尤其对C/C++的开发感兴趣!

 主要项目经验

  • 炽点搜索引擎优化系统(Asp.Net) 2005年4月-2006年6月

    使用Visual Studio.Net开发,基于.Net 1.1,使用MSSQL数据库

    一个用于网站访问统计的Web应用程序,除了一般的访问统计功能之外,它还具有追踪网站在被搜索引擎收录情况及排名,PageRank等变化的功能。还提供多种查看统计数据的方式,使用者可以方便的利用它所展示的数据对网站流量,搜索引擎优化情况进行分析。

    负责系统设计和编码工作

    使用Asp.Net1.1开发,大量使用了缓存技术

    由于数据显示方式多,使数据表之间的耦合度较大,要进行大量的连接运行,而且数据量巨大,对数据库性能要求比较高。写出合适的SQL语句是最困难的工作。

    后来得知这是一个数据仓库与商业智能的典型应用。这类应用的特点就是必须以空间换取效率。在该项目的数据库设计中,我适当了增加了数据冗余来减少数据表外部连接数量,以及降低SQL语句的复杂程度。

  • 塔内网络管理系统(Asp.Net) 2005年7月-2006年2月

    这是一个类似的OA的在线Web应用系统,包括人事管理,产品管理,业务管理三个主要模块。

    参与需求分析,系统设计和编码工作,跟踪管理整个项目。

    基于Enterprise Library,使用asp.net1.1进行开发。使用了UML来辅助需求调研和系统设计。

    这 个项目中最大的难点是权限的控制。它不仅要求有功能的控制,还要求信息的控制。比如:主管具有审核注册成员的权限,而普通成员没有,这是功能控制;主管可 以查看本学校的所有业务信息,而普通成员只能查看自己的业务信息,区域主管可以查看本区域的业务信息。更困难的需求是,这一切都必须是可设置的,不能硬编 码。比如:可以在后台添加一个叫“主管”的角色,添加之后,可以修改该主管查看业务信息的范围,可以是区域级,学校级,或是仅仅查看自己的业务信息。因此 这个权限系统的设置必须十分细化。

    在这个项目中使我收获最大的就是权限管理部分的设计。以下我的设计的概述。如下图,其中“范围”用于信息控制,“权限”用于功能控制,一个“权限项”对应一个功能。一个人员可以被任命为多个角色,同样的角色又可指定不同的范围,实现信息控制的需要。

  • vClass班级管理系统(Asp.Net) 2006年4月-2006年4月

    一个面向班级的在线管理系统。类似于多班级的班级同学录,但功能更偏向于就读期间而非毕业之后,比如有作业发布,在线调查等功能。

    完成除了界面设计之外的全部工作

    使用asp.net1.1,基于Hibernate ORM框架开发,使用了许多现成组件,用以加快开发速度。

    在需求上,这个项目并没有什么难点。它最大的难点在于时间要求非常紧,必须尽一切可能加快开发速度,同时又要保证质量

    更深刻地理解了敏捷开发的思想。

 教育背景

广东工业大学 2003年9月-2007年7月

网络工程 本科

C++程序设计,数据结构(c),操作系统原理,计算机系统结构,计算机接口,计算机组成原理,单片机基础,计算机网络,面向对象的思考过程,数据库系统原理及应用,线性代数,高等数学,离散数学,概率论与数理统计

 在校信息

获奖记录
  • 2004年2月 优秀学生干部
  • 2004年5月 校社联周年庆积极分子
  • 2004年12月 校网页设计大赛第二名
社会活动
  • 曾任班长、校学生会科技实践部副部长
  • 曾参与组织校园活动多次
  • 曾任塔内网络科技有限公司广工业务主管

 语言能力

普通话 惯用

广州话 能听/发音不准

英语四级 通过

英语六级 442分

posted @ 2006-06-09 17:28 Lupin 阅读(2727) 评论(6) 编辑
    刚刚在看Google Analytics,发现有从Google黑板报过来的访问者,于是就过去看看是哪个页面链过来的。 让我发现Google Toolbar4发布了的消息。于是赶紧下下来试用了一下,发现增加了网页翻译的功能,还把书签BloggerGmail的部分功能整合进来了。
    可惜,没把NotebookCalendar也整合进来。最好能添加像MSN Toolbar那样的标签栏功能,那就比赛完美了。
posted @ 2006-06-03 02:12 Lupin 阅读(142) 评论(0) 编辑
摘要: 中午在饭堂吃饭的时候电视上出现这么一句“让全社会都来关心大学生就业”。实在是相当搞笑,连大学生自己都不关心自己的就业问题,全社会关心又有什么用呢? 难道有人以为大学生关心自己的就业问题吗?如果关心的话就不会整天沉迷于玩乐,如果关心的话就不会大学毕业一无所获。四年时间,整个世界都可以被改变了,可是有些大学生除了把大学之前的东西忘掉了之外就没有任何收获了。难道这就是关心的表现吗? 有一句话说得好,“...阅读全文
posted @ 2006-05-31 12:34 Lupin 阅读(136) 评论(0) 编辑
摘要: 用了Google Analytics有一段时间了,都挺好的,不过有一点让我非常郁闷的,就是Google Analytics不认识Baidu作为一个搜索引擎。所以也就不会统计从Baidu过来的关键字,可是从Baidu到我的Blog来的访问相对是比较多的(虽然绝对来说,可以忽略。。。)  刚好前两天在博客园看到一篇分析Google Analytics客户端代码的文章 看过之后,加上了一句_uOsr[2...阅读全文
posted @ 2006-05-30 13:45 Lupin 阅读(162) 评论(0) 编辑
摘要: 刚刚终于知道怎么样在Word下发文章到Blog的时候同时上传图片了,只要填上Ftp的地址和目录,就会上传上去了,不过上传的时候还需要每次都输入用户名和密码。没错,真的上传上去了。以Png格式上传了。不过,显示的时候地址仍然是Ftp的地址,不是Http的地址,难道微软的工程师天真的以为在Http下的地址跟Ftp的地址是一样的吗?犯这么个低级错误,那真是相当的神奇!相比之下,Performancing...阅读全文
posted @ 2006-05-29 23:36 Lupin 阅读(132) 评论(0) 编辑
摘要: 今天在做vClass的用户登录模块,用FormsAuthentication来进行用户登录处理的,用FormsAuthenticationTicket中的UserData来保存角色信息,可是,在测试的时候,保存在UserData中的信息总会不翼而飞,起初以为是Cookie没有正确更新的问题,于是单步调试,把每一步的Cookie字段都提出来进行比较,还是没有结果。最终决定求助于Google,用"g(...阅读全文
posted @ 2006-04-17 13:50 Lupin 阅读(167) 评论(1) 编辑
摘要: 在FxCop中建议代码中出现的某些字符串,比如Exception.Message这类的字符串不要直接写进代码中,而使用RescourceManager从资源文件中读取,这样做可以方便实现本地化。昨天花了好长时间,终于搞清楚应该怎么从资源文件中读值了。以下是记录。 首先,我们要有一个资源文件,就是.resx。创建的方法可以右击项目,选择添加新项,然后在资源文件夹中选 “程序集资源文件”,Ok。我们就...阅读全文
posted @ 2006-04-15 16:36 Lupin 阅读(496) 评论(1) 编辑
摘要: 前天下载了NHibernate的Codesmith模板,试用之后,发现虽然生成已经很智能化了,但是还是有点小问题,记下来,下次用它生成的时候记得改,或者过两天把这几个Bug改掉。 第一,在生成many-to-many的时候,会在一个bag下生成两个many-to-many,而且还只有一个many-to-many的结束标志。需要手工删除其中一个。 第二,在有joined-subclass的文件里,会...阅读全文
posted @ 2006-04-08 18:19 Lupin 阅读(572) 评论(0) 编辑
摘要: 在上一篇文章中介绍了dasBlog模板引擎的两个概念Theme和Macro。这一篇文章介绍dasBlog模板引擎的运行过程。 先简单概括一下dasBlog模板引擎的原理。它提供了一个ShareBasePage的页基类,所有的页面类都从这个类派生,在这个类里,进行页面状态的传递和最终页面的生成。可以说,这是整个模板引擎的一个全局控制者。生成的方法是:在ShareBasePage里读取相应的templ...阅读全文
posted @ 2006-03-30 21:44 Lupin 阅读(440) 评论(0) 编辑
摘要: dasBlog有自己的一套模板引擎,最近研究了它的模版引擎的实现.先解释一下跟它的模板引擎相关的两个概念。Theme(主题):就是一套模版,包括所有界面。包括以下几个文件:template:暂时不知在何处使用(可能在当前版本中并未使用)hometemplate:首页界面destopWebsitetmeplate:也是不知在何处使用(可能在当前版本中并未使用)itemTemplate:单个文章显示模...阅读全文
posted @ 2006-03-29 13:01 Lupin 阅读(409) 评论(0) 编辑
摘要: 在初学C++的时候,一直对const的用法难以理解,因为它出现的地方实在太多了。让我都搞不清楚它在各个地方到底是什么意思。前段时间看《$g(Effecitve c++)》才理解了const的一些用法。在过去一段时间之后的现在,我将我还记得的部分在这里记录下来,看看我是不是真的已经理解了const的用法。第一,用在函数定义的函数头后面.限制函数对超出该函数作用域的变量进行修改.比如:voidadd(...阅读全文
posted @ 2006-03-27 12:54 Lupin 阅读(970) 评论(0) 编辑
摘要: 前段时间很流行什么"Google看世界","Baidu看世界" 什么的,就是利用关键字在搜索引擎的结果数量来说明一些东西.虽然这些数字并不能说明什么,但是,至少它可以给我们带来点欢乐..阅读全文
posted @ 2006-03-26 15:30 Lupin 阅读(195) 评论(0) 编辑
摘要: 做网站这么多年,终于正式有了自己的域名和空间了.而且还是很大的空间.哈哈..真爽.域名是前两天才买的,不过买贵了,心痛啊,做事太冲动了,浪费了二十块钱,特别在这种很穷的时候...真是郁闷的..空间是两三个星期前就选好了的,还包括服务器,几乎是最便宜的了.在昨天买 之前看到很多人的评论说那里的空间不好,但是因为囊中羞涩,所以还是买了这里的,就算是速度慢点也无所谓了,反正不是做什么正规网站,只是给自己...阅读全文
posted @ 2006-03-26 15:02 Lupin 阅读(167) 评论(0) 编辑
摘要: 再次测试Crossport阅读全文
posted @ 2006-03-26 11:23 Lupin 阅读(110) 评论(1) 编辑
摘要: Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->/*FileName:Array.h*Author:Lupin*Description:Asimplearraywithiteratorforint*/#ifndefARRAY_H_#defineARRA...阅读全文
posted @ 2006-03-18 22:49 Lupin 阅读(436) 评论(0) 编辑
摘要: Python支持数据类型:整数,浮点数,复数,字符串 复数在这里虚数由一个 "j"后缀表示,也可以通过complex(real, img)来创建。实部和虚部可以分别访问。就像这样:Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->>>>...阅读全文
posted @ 2006-03-18 22:41 Lupin 阅读(272) 评论(0) 编辑
摘要: 这两天在Linux下用Eclipse编数据结构,还有试用CPPUNIT,总是遇到一个错误,就是“undefined reference to [function name]”。找了很久,终于发现是在写makefile的疏忽所致。出错的时候是这样的:Code highlighting produced by Actipro CodeHighlighter (freeware)...阅读全文
posted @ 2006-03-18 21:40 Lupin 阅读(29934) 评论(3) 编辑
摘要: 历时N久,终于配置出一个没有盗版的,而且还能用的系统出来了.现在就来看看我的系统是由什么组成的吧。系统:当仁不让,是Linux,我用的是Debian发行版。呵呵,第一次用Linux,听说这个是Linux的正统,就用了这个。现在看来,还真是没什么正统不正统的。都是Linux。X-Windows装的是GNOME,以前曾经用过KDE,好像比较难看,所以就用GNOME了,这个用的人比较多,资源应该相对也比...阅读全文
posted @ 2006-03-17 17:52 Lupin 阅读(250) 评论(0) 编辑
摘要: 这两天在打算用信用卡买部手机,进行分期付款,可是又很怕信用卡的高利息,还到最后不划算. 于是下午做了这个小软件,使信用卡透支费用一目了然,这样就可以更好的安排一下自己的支出了. 下载地址: CreditCalc阅读全文
posted @ 2006-02-24 16:24 Lupin 阅读(1410) 评论(4) 编辑
摘要: 这个Post只是为了测试dasblog的Crosspost功能。阅读全文
posted @ 2006-01-16 23:22 Lupin 阅读(122) 评论(0) 编辑
摘要: 偶然的机会让我发现原来vs.net可以开发smartphone软件,于是,今天用了半天的时间找关于.net 精简框架的资料,还有搭建环境,再熟悉了一下开发环境。  哈哈,很有意思,所以决定学习一下它。  正打算买多普达535,到时候自己开发的软件自己用,呵呵,很爽。阅读全文
posted @ 2005-01-20 00:32 Lupin 阅读(716) 评论(0) 编辑
摘要: CREATE PROCEDURE forums_DisallowedName_CreateUpdateDelete(    @Name        nvarchar(64),    @Replacement ...阅读全文
posted @ 2005-01-11 21:36 Lupin 阅读(1171) 评论(2) 编辑
摘要: 本来物理应该是我的强项。可是,那本教材居然是全英的,两本书九百多页,没有一个中文字,看得我晕死!于是,大学物理我顶多去听课,从来不看书的。今天要考试了,我前两天才开始拿起物理书来看。不过我拿的是中文版的物理书,英文版的是昨晚看作业时才开始看的。  今天怀着忐忑不安的心情去考试,很害怕不及格,因为不及格只能重修,没得补考,而重修是要钱滴。像俺这种穷学生,重修啊。。。贵啊。  别跑题了,试卷发下来,我...阅读全文
posted @ 2005-01-11 11:15 Lupin 阅读(607) 评论(1) 编辑
摘要: 现在gmail很多人都有了,我就不送了。现在我有两个wallop邀请,有想要的就快举手啊!手快有,手慢没有啊!   以此来庆祝我入住博客园!   要邀请的留下你的名字和邮箱。邮箱以后就是你的登录名,所以请选择一下好一点的。最好是外国邮箱,听说国内的邮箱可能会收不到的。   另外,顺便问一下。发布文章页面的那些advance options里面那些entryname,摘要,title url,sou...阅读全文
posted @ 2005-01-10 12:16 Lupin 阅读(968) 评论(26) 编辑