Categories
Links
|
|
OnTableNewRow 的怪异举止 |
显然,同一般的.net OnXX行为不同 ,通常的OnXX 会检查XX事件是否有设置,有的话就执行.
这段代码在DataTable.NewRow 中被调用
大家可以看到,NewRowCreated中在检查onTableNewRowDelegate了,如果这个没有设置,则OnTableNewRow是不会被触发的,因此, 比方说你想要一个自定义的事件,比方说 NewEntity ,你无法在OnTableNewRow来挂接它. 你要先挂接TableNewRow事件,然后这个OnTableNewRow才能生效.这不是开玩笑吗? //protected override void OnTableNewRow(DataTableNewRowEventArgs e) //{ // base.OnTableNewRow(e); // if (this.NewEntity != null) // this.NewEntity(this, new NewEntityEventArgs<T>((T)e.Row)); //}
|
| [2007-11-11 10:43:01 | Author:jiangjianxiao ] [] 4 comments |
|
|
.net 3.5有多少特性可在windows 2000中使用 |
这个题目不好起,因为有些东西是编译器的,有些东西是库的 .(而有些是两者结合的,比方说ExtensionAttribute就在system.core.dll中) .net framework 3.0/3.5安装环境要求windows xp,但是现在企业中用windows 2000的也不少(大部分企业都需要好几年才会更新设备). 要放弃对windows 2000的支持,暂时还不太可能. 当target framework 设置为2.0 时,下面这些特性是支持的
数组初始化支持
string[] s={'test','test'}
集合初始化支持 IList<string> s = new List<string> { "name", "name" };
类初始化支持 new Label{Text="label");
lambda 支持 string[] list = new string[] { "abc", "12", "java" };
string[] ll = Array.FindAll(list, s => (s.IndexOf("a") >= 0)); foreach (string var in ll) { Console.WriteLine(var); } Console.ReadLine();
匿名类型支持
var emp=new {Name="jjx"};
把target framework设置为3.5 ,引用system.core.dll ,分发时带上system.core.dll ,这样 扩展方法也是支持的(经测试)
带上system.linq.dll ,那么linq 表达式也是支持的,如 IList<string> names=new List<string>{"test","test2"}; var q=from n in names where n=="test" select n;
更新 linq to sql 支持 .net framework 2.0 sp1 已经出来了,http://bbs.dotnettools.org/newsdetail.asp?id=5907 ,linq to sql 可以运行在windows 2000上
|
| [2007-11-07 17:46:05 | Author:jiangjianxiao ] [] 1 comments |
|
|
jruby 1.1b1 |
jruby 昨天放出了1.1 b1 版本,1.1 版本的目录是能完整编译为aot(ahead of time)或jit(just in time)模式。更快,以及更小的内存占用,最大的同ruby 1.8兼容。
下载 http://dist.codehaus.org/jruby/
ironruby 的更新频率就明显的不如jruby了,不过好在过一段时间,就会有一次比较大的更新。这估计是开发模式的不同 .不过ironruby 的未来还是不明朗(比方说是不是把运行rails作为目标)。从 asp.net mvc将发布而言,这个估计是不可能了的。
从这个链接可以更清楚的看到的asp.net mvc 应用的代码,http://www.sergiopereira.com/articles/aspnetmvc.html 。不过我不太喜欢这个示例,因为引入AccountViewData ,让人感觉还是在使用transaction script,而不是rails/django那种domain model driven 的方式。
另外,关于 osx leopard 的发布, 我现在正在使用 macbook,经过一段时间到熟悉 ,osx 得确不错, 不过仔细想来,总是不是个滋味 .首先是 osx 实际 上是一个 拿unix 重新 包装了一下,就开发 付出而言,同ms的自行开发根本 难以 等同而语的. 而,osx却借助于unix的基础获得了稳定/安全的美名. 另外,就是ms的东西,一上来就非得装个杀毒软件,日子久了,运行速度越来越慢,也的确是个大问题.对于vista,我连甚至连尝试兴趣都没有. 也算是ms的一大失败吧.
当然,现在,无论是osx/linux/unix都是无法取代windows的,但我想,市场 正在被这些操作系统所蚕食. ms应该需要意识这个问题了.
|
| [2007-11-03 11:46:15 | Author:jiangjianxiao ] [] 1 comments |
|
|
django小提示-send_mail |
django.core.mail.send_mail 这个函数在文档中被注明为deprecated。 但它还是可以一用的 首先,在settings.py中增加如下变量 EMAIL_HOST="" #你的smtp 服务器ip 地址或名称 EMAIL_PORT=None # 不处理就用Noe,否则指明port EMAIL_HOST_USER="你的用户名" # 现在大部分邮箱都要求你输入 邮箱的全名 EMAIL_HOST_PASSWORD="" # 你的口令 EMAIL_USE_TLS=None # 不处理就用None 然后就很简单的调用 from django.core.mail import send_mail # help(send_mail) send_mail ('subject','message','webmaster@easynew.com.cn',['jjx@easynew.com.cn']) 这个函数为什么会被deprecated ,其实就是有点magic ,屏蔽了上面这些设置,所以,要明白点,就要用 connection = SMTPConnection(host,port,username,password,use_tls,fail_silently) EmailMessage(subject, message, from_email, recipient_list, connection=connection).send() 其实是一样的,自己最后也会搞这样的函数,还不如直接用省事 注: tls - Transport Layer Security 传输层安全 某些老旧的邮件服务器不认得TLS 协议,因此当你尝试加密连接时,握手会话失败 fail_silently 失败时就跳过,可查看SmtpConnection的_send函数 try: #send mail except: if not self.fail_silentily: raise return false return true
|
| [2007-10-31 15:32:59 | Author:jiangjianxiao ] [] 1 comments |
|
|
djang小提示-login_required |
login_required 是django.contrib.auth.decorators 中的一个decorator,它的用法很简单 @login_required def change_password(request): return HttpResponse('change_password) 1. 该方法从settings中获取LOGIN_URL设置 在settings.py中增加LOGIN_URL LOGIN_URL='/accounts/login/' 2. 该方法会传递一个添加一个next 到querystring中,这样,你可以在你的自己的login 模板中获取这个这个变量,以便在登录后重新回到登录前页面(django自带的模板会帮你处理这个,因为我使用mako 为django的模板,所以不得不自己动手处理这个)
|
| [2007-10-31 15:08:35 | Author:jiangjianxiao ] [] 1 comments |
|
|