re: Why .NET Sucks? 问天 2008-09-10 01:08
@Kai.Ma
我找不到开源并且成熟的pop3/imap client,我要求不高,gb2312/utf 8中文不乱码,能解outlook发的附件就成。
这么些年了,.net东西慢慢是有了,但数量、质量无法跟java / python等相比。
re: Why .NET Sucks? 问天 2008-09-10 00:27
.net普遍工资低的情况是因为宣称自己会.net的人多……
.net占据了金字塔的底层……但是,这不意味着.net这条路就不能爬到顶上去……
今天新闻说"伦敦证卷交易所使用的基于微软.Net框架的股票交易平台,在周一发生8年以来最严重的系统故障,迫使世界第三大股票交易所暂停交易约7个小时。"。
猜想,能够做这个交易平台的.net程序员收入铁定不低……
楼主中间一段扯得很有意思:
“前有JAVA的堵截,后头还有ROR,Python,PHP,一大群追兵,从标榜自己开发起来不是一般得快的ROR(不知道沉得是否也快),到标榜自己跑起来飞快的Python(豆瓣的神话造就了Python的急速传说),还有标榜自己光膀子不怕穿鞋,完全免费的PHP。再换句话说,我们就坚定不移的跟着微软走吧,那么除了拿着VS.NET做网站,我们还剩下了些什么事情做呢,那就怪不得人家招JAVA的人多了”
我看不明白上面这段究竟有何逻辑……ROR/Python/PHP的盛行,.net/java是同时被挑战的。实际上,受RoR冲击最大的是java阵营。简单点说连javaeye.com这国内最大的java网站都改版使用RoR好几年。
.Net阵营的问题我觉得是在于技术革新太快了……微软在一直强迫整个社区跟着它走……作为程序员的我们,只能一次又一次去拥抱所谓的“新技术”……每次技术革命都把前一代的命给革掉了……而且,它是走向简易化,越是新的技术越是“容易用”……会堆积木就行了……
微软一直在重复发明轮子……十年前mfc的高手现在能干什么?谁还用mfc?
跟着微软,路很难走……
实际上,很多所谓的“革命”根本没有必要……纯粹是折腾……应市场要求而推出的过渡技术……
AJAX.Net是典型的例子……印象中好像园子里有位朋友花费一番心血要出本AJAX.Net的书,结果临出版前AJAX.Net新版推出,API全变了……那位朋友欲哭无泪,书得重新修订才能出版……
类似AJAX.Net这样的“升级”,在我看来就是纯粹的折腾。毫无意义的折腾。.Net程序员的生命就是这样被浪费掉的。
我十分庆幸自己从未在AJAX.Net上浪费任何时间……而对自己在jQuery上的投入收获颇满意。
在.Net的社区中,我能够感觉到一种急功近利的气息。很多人,特别是微软都在推崇“简单”,总是一遍又一遍的在宣传说过去“繁琐”的日子一去不复返了,现在我们只要“拖控件”或者干脆“全自动”了等等……
作为忍受过“繁琐”苦日子的程序员,新的技术或者能够加快他们的开发效率。但初学者自己受广告蛊惑,去追赶这些高级的“新技术”,只会使自己在技术发展的路途上迷失掉,使自己掉价。
我们应当追求的是建筑艺术本身,而非如何堆砌一个特定牌子的积木,甚至是半成品。
就.Net而言,我依旧守在2.0,3.0 LINQ/WPF甚至3.5等云烟偶仍旧在观望。
我能够自己写ORM,能够改写SubSonic增加透明缓存层,我为什么要使用LINQ?
LINQ比较快?不好意思,使用DLINQ beta版时我最深刻的感受就是VS变得很慢,点一个键需要一秒钟才intelli sense才有相应。这直接、严重降低了我的开发效率。
熟能生巧。什么工具/框架用起来最熟、最快?当然是自己写的。
.Net阵营的另一个严重问题是缺乏资源。
我要做邮件,pop3/ imap / smtp的client / server去哪里找?人家java有java mail。
我要做大网站,连URL re-write都那么费劲,反向代理又怎么搞?!Lighttpd做反向代理就是一行配置的事。
我要写高性能tcp服务器,.Net怎么用iocp?!SSL又得怎么搞?!人家python为什么就能有twisted呢?
我要个简单的模板,除了master page外我还有别的选择么?master page不合我用怎么办?!不要跟我说NVelocity,要不是MonoRails,丫的还bug无数……无论是php/java/python模板系统都无数……要功能的有功能,要速度的有速度,要优雅的有优雅……
我要搞个wiki,我要作个blog,娘的,.Net能用的现成产品怎么就那么少呢?
基本上是要什么没什么……除非微软自己提供。无数N字头的库都是改写自java的……得java有过、流行起来,我们翻译一下才能有。
现在做web 2.0, memcached是标配。 微软又跟风来搞Velocity。十字路口往哪里走呢?
很折腾,让我看多一遍Velocity的文档我都觉得烦。我是多么的渴望微软出的是memcached client,最好还支持UDP的。
==============================
我订阅园子首页RSS好几年,篇篇都看。同时我也订阅javaeye。近一年多来,甚至就光拿.Net相关的技术来比,泡javaeye给我的收获都比园子多。更不要说平台无关的技术心得。
使用ASPX页面做模板的问题在于麻烦,并且不灵活。
回过头看你文中提到的例子:
aspx.cs文件
User us = new User();
us.Name = "xxsssx";
us.Value ="80";
Name.Text=us.Name;
Mail.Text=us.Value
模板就是模板,为什么还一定要绑定这么一个cs文件呢?并且,aspx默认是规定一个aspx文件对应一个cs的code-beside……
cs文件的维护很讨厌……一旦绑定的数据更改,这个cs也需要随着改……
无法做到动态生成模板,并绑定数据到模板中……
但重写一套模板系统需要的体力活粉大……而各种模板系统又各有优劣,互不通用……
我现在是使用ascx做模板去用……直接LoadControl就是了,不需要server.execute……感觉server.execute并不稳定,很容易崩溃……
re: 大文件上传之异常处理(原创) 问天 2008-06-25 19:29
呃……谢谢楼主……
但,我是这么做的:
Protected Sub Application_BeginRequest(ByVal sender As Object, ByVal e As System.EventArgs)
Dim request As HttpRequest = HttpContext.Current.Request
If request.ContentLength > 1024000 Then
HttpContext.Current.Response.Redirect("/max.html")
End If
End Sub
检查Request的content length超过限制后便直接redirect到提示错误的页面……
反复测试都没有发现任何不良效果……服务端绝对不会等待浏览器把所有的数据都上传完……在Firefox / Opear / IE7 / Safari上面用户都会立刻看到错误的提示页面……
唯一的例外是IE6,该死的IE6还是好等上那么十几秒才能看到转跳页面…………完全不知何故…………
如果是要从防止服务器被攻击的角度考虑,倒是可以直接:
wr.CloseConnection()
所有浏览器都会立刻看到默认的错误页面……尝试在picasa上上传一个600M的假图片便是如此……
re: 也来说说Ajax的事儿 问天 2008-04-09 21:57
“虽然JS很古怪,但是请尽量使用面向对象思想写JS代码。”
反对这条tips,AJAX的著名库jquery便不提倡OO的风格,而采取事件基础的风格。
jquery作者John Resig在
http://ejohn.org/blog/building-a-javascript-library/ 有解释过。
GetThumbnailImage 的最大问题是在于如果图片内嵌有缩略图的话,它会使用内嵌的这个缩略图而不是原图去生成图片,生成的效果惨不忍睹……
google app的iPhone版确实没有使用XMLHttpRequest,可是它使用了iFrame切换各种App……iFrame亦是ajax技术中的一种……
偶这段时间工作也是在开发一个iPhone web app……依赖jQuery使用了大量大量的ajax……在iPhone safari上表现得粉好……
MobileSafari如此强悍,不用ajax很可惜的……
<codeSubDirectories>
需要放在<compilation>节点下,而不是<system.web>
呵呵……楼上的,事情若真如你说的这么简单便好了……
你贴的EncodableStringWriter 的确是可以用,但是,你假设中的EncodableStringReader 却并不能如是泡制……
因为StreamReader内部是有buffer存在的……decoded buffer……
在你程序读到一定程度的时候,后面可能会有别的未读数据被decoded并且放在buffer中……之后直接修改encoding继续读,这部分数据是会错掉的……
实际上,若你说的方法可行,甚至不用继承,直接把StreamReader的readonly给干掉然后重新编译便可以啦~
re: 勿在沙浮筑高台, 再论社区风格 问天 2007-09-27 01:16
咱不用扯太远……
就拿国内有代表性的三个网站来说……
.net:博客堂、博客园
java: javaeye
有兴趣比较.net跟java社区的朋友就每天上这三个网站泡……狠狠的泡上十天半个月……然后,相信大家对于什么沙浮啊~什么高台啊~什么风格啊~自会有一番认知……
@je
人气低的直接结果便是它非常不成熟~~
不清楚你是如何做出来blog的demo网站的……我自己在使用ProMesh做东西的时候,模板中的中文一律乱码……翻开它的源码一看……它读取模板的时候直接写了:
using (StreamReader stream = new StreamReader(templateFileName, Encoding.GetEncoding("windows-1252")))
(line 65, TemplateUtil.cs, ProMesh-6643)
可以预料ProMesh还有其它无数类似的地方需要完善……现在偶虽然开始用它做东西,但这更多的是因为偶厌恶web form,而不是因为ProMesh好……
Zoundry支持使用MetaWeblogAPI的
metaWeblog.newMediaObject命令直接上传图片,并且它还会自动生成缩略图之类的……
可是!这个混账Zoundry不按RFC来,RFC中写明了:
metaWeblog.newMediaObject (blogid, username, password, struct) 函数的Struct:
must contain at least three elements, name, type and bits.
天杀的Zoundry硬是不给type这个元素。
浪费我无数时间debug……
难道楼主公司没有一个人知道什么是 svn / cvs以及visual soucesafe么?
严格的说,只是因为对方web server没有在http header中明确给出自己网页编码信息造成的……
使用System.Text.Encoding.Default这样的做法并不能称得上是解决乱码……这样处理,遇上utf-8编码未给header的中文页面照样乱码……
偶处理的时候是使用ISO 8859-1去作为默认编码……网页读下来后,再去寻找其中类似:<meta http-equiv="Content-Type" content="text/html; charset=gb2312">的字符串,然后再做编码转换处理……
ISO 8859-1可以保证网页内容不会因为转换而丢失……
re: MD5的部分碰撞[未登录] 问天 2007-05-29 10:04
那个……错得最离谱的是我的那个ToHexString的函数……
Hex(bytes(i))是不补零的……
这才造成hash出来的结果长度不一……稍微修改一下就可以让其输出固定长度的了……
哦?
不如,楼上的把你做的也放出来,大家一起切磋切磋?
因为偶个人喜欢vb.net……
就是讨厌c 风格的{}~
:)
另外,有些东西,似乎vb.net能够更方便的处理……比方说,vb.net的implicit type casting……在c#里面就不行了……
偶的确有代码生成工具分析数据库自动各种model~在google code里面的svn里面有……
只是觉得即便没有这个工具,手写一下model定义也是蛮简单的,就没有blog出来了……:)
together2006 for VS2005破解成功了吗?
我迫切的需要一个,朋友如果成功请给我一个。非常感谢。
zhenmin_liu@21cn.com
blogwind上只有注册用户才能切换语言……
而网站会自动根据浏览者默认的语言显示……如果是中文版OS就显示中文……英文则是英文……还有德文……日文……
re: OutLook解析邮件头的问题 问天 2007-03-14 00:24
这是你写程序不按照标准做的问题……
与outlook无关……
我拜托大家了……能不能合作配合一点去兼容一下标准?
我很怒……因为我的生命很大上就是浪费在解析、兼容网络上各种不按标准的东西……
比方说,Email的时间……比方说,RSS……比方说……网页……
re: 带宽升级公告 问天 2007-01-16 18:35
新加坡, 新加坡电信 ADSL 512K
20k/s
@Jason Cui
呵呵……随便写个什么网站的确用不着那个东西……不过我的工作经常需要给某个别的程序的写数据管理页面~~~~~~~
Django本身的ORM不错,但就python的ORM而言……SQLAlchemy会好很多……
至于.Net的,偶期待LINQ……
之前也尝试过使用DLINQ去做偶心目中的auto admin site……不过放弃了……感觉它现在还不成熟……而且通过attribute的方式去描述结构……维护起来实在恐怖……
@木野狐
这个……怎么申请加入?页面左侧的“申请加入”没有链接。。。
谢谢各位……
@卢彦
做一个Django for .net给我感觉就是重新发明轮子,而且,这个轮子做起来还很异常麻烦……不过,我折腾这个东西的初衷其实也就只是希望在.net中拥有一个django那样的auto admin site而已……
@木野狐
偶简单给IronPython弄的md5其实也就是调用.net本身的……不到十行代码……因为只是要尝试一下……sha的我直接就import md5 as sha~嘿嘿~
==========================
会去瞅瞅FePy……
偶昨晚才第一次下载IronPython……可惜到目前为止,偶丝毫没有体会到IronPython究竟能够有多快……在偶机上无论做什么,感觉都要比cPython慢上很多……
==========================
@iceboundrock
twisted!!!!!!
如果……如果twisted可以跑在IronPython上的话,感觉意义会比Django大很多很多……至少,对我意义大很多……Django只是自己折腾玩的……Twisted则是偶依靠来吃饭的……只是,Twsited本身即便是在Windows cPython下跑IOCP reactor效率乃至稳定性都差强人意……跟linux下用epoll根本不是一个档次……而且,IOCP现在还无法支持SSL……问题多多的说……IronPython本身的效率也让偶很怀疑……
呼呼……还是想说,其实,只要能够利用IronPython带来的灵活性,在.net上实现一个跟django差不多的auto admin site偶就很满意了……
"但是,如果你不屑于指导或者不愿意将自己的经验共享,那么就不要“鄙视”甚至“谩骂”、侮辱别人为了学习和进步而做出的种种努力"
你可以去看看:
http://www.cnblogs.com/wuvist/archive/2004/12/29/83605.html
我不是在“谩骂”,我是有凭有据的谴责你。
学习?你根本就是以错误的态度、错误的方式去“学习”。
知道无耻还做?然后还放上首页?
“反编译行为纯粹是为了研究学习,绝无任何商业目的。”
反编译行为本身就已经违法了。
“差点忘记了,偶可耻的同时把FTB的命名空间等等相关的东西都修改了”
这也是所谓的“纯粹是为了研究学习”?!
而且,你不仅是无耻,还是无能。
“因为js太复杂了”,实在是太看不起你了。连js都不会,太没有无能。
re: IE 解析嵌入js文件编码漏洞? 问天 2006-05-22 00:00
<script src="/XX.js" type="text/javascript" encoding="utf-8"></script>
OpenPOP.net是垃圾,自己拿来玩玩可以……真的要那它做什么东西,就等着帮它debug去吧……
base64的解码.net 1.1就有了……
楼主说的解码难指的是难在解RFC 822定义的email编码格式……解RFC 822是很恐怖的……
http://milo.core-systems.de/~stepan/tiny/tinymce/docs/zh_cn/using.htm
这边有tinymce的使用/集成教程,很详细。
事实上,它本身也有带很详细的英文文档的。
tinymce是完全开源的,要下载,上它的官方网站找就是,链接在这篇blog中有。
@风花雪月
IIS压缩对firefox也有效。
aspx也可以压缩。
北大的那软件可以正确把“一对夫妻一次性交一百元钱”分词为“ 一对 夫妻 一次性 交 一百 元 钱”
我曾经用过一个北大语言研究所之类机构做的分词软件……
VC开发的……词库可以随意添加……性能方面,我是用它做以M为单位的语料做分词……都是几秒内轻松搞定……
但,最重要的是,它不光是靠词库做分词……它还通过分析词与词之间的词性联系从语言学的角度做分词!
举个例子,它可以很轻易的把各种人名分析出来……
re: 如何维护自己文章的版权 问天 2006-01-24 19:31
re: 如何维护自己文章的版权 问天 2006-01-24 19:31
re: 关于成立博客园翻译团队的建议 问天 2006-01-10 00:01
re: 微软是如何输掉API之战(下) 问天 2006-01-09 12:08
我所知道用dhtml用得最多的网站包括有gmail/netvibes.com等……
都很快……
Win32 API/.Net/WinFX 是三套不同的API吧?作者只是想说明这点的弊端而已……
另外,请注意这篇文章写于June 13, 2004。
还有,请注意文中“(我再重复一次,没有人意味着少过一百万人)”这话,不要咬文嚼字……
OpenPOP似乎是“灵感之源”这国人主力开发的……
IIS6顶多也就是改进而已……
因为,我的开发、测试平台都是windows 2003+IIS6。
Tp skywood:
因为,在我做的这个项目中,不是我被逼去解UrlPathEncode的编码的,打个比方,在浏览器中输入 “
http://www.blogwind.com/问天”,因为IE默认是使用utf-8发送URL,它便立刻把地址改成“
http://www.blogwind.com/%E9%97%AE%E5%A4%A9/”了。
这么个编码过程,既不是我想要,亦不是我能够避免的。
搏客 Winning:
如果只是使用QueryString传中文的话,使用UrlEncode便可以很好解决问题了……
可惜,我遇到的情况是需要通过Url path传中文……
2. 文法分析模块:负责分析表达式的语法,如果存在任何不符合规定文法的格式,则报错,拒绝计算。
我不明白你所谓的文法分析是啥……
但是,就上面这句话来说,我是不是
try & catch error就好?
有error就退出嘛……
re: 被人遗忘的控件(一) 问天 2005-02-28 20:36
晕……
PlaceHolder这么好用跟重要的东西居然是“被人遗忘的控件”???
忘了它,或者不知道它的人肯定没有好好学过asp.net……
re: 几种主流网页开发语言的思考(上) 问天 2005-02-24 00:45
To: RbmxXx
因为后面部分的不大好翻译。还在奋斗中。
To:Klesh
呵呵,如果要做静态页面,那为什么还要用asp呢?
well……其实,我觉得,在这个问题上,扯远了……
嗯,在我知道可以显示不友好的HTTP错误信息后,我基本上都已经转用ASP.Net了,所以,对于ASP让人抓狂的印象,还是保留在那边。
re: 几种主流网页开发语言的思考(上) 问天 2005-02-23 10:56
To 灵感之源:PSP团队Guru:
谢谢指正。的确应该说Windows 2003的设置为应用服务器后,它才会支持asp.net。
MSDE有管理器,记得在Web Matrix里面就可以直接管理它的数据了;而且,我认为,一种数据库的优劣不应该看它是否有管理器吧?mysql,不也是没有管理器?不知道我有没有理解错“管理器”的意思。
To gray:
不是很相信你的话。因为我曾经给一个日流量过万IP的网站做过Access到MS SQL的数据库转换,在升级之前,网站很容易就出现各种莫名其妙的数据库错误。
To 湘南和也:
也许是我的表达不够清楚吧使得你没有看清楚我的话。
我只是在说asp/php在默认情况下使用的数据库,我没有说他们只支持Access或者是MySQL.
Access容易被人下载的问题是很容易解决。
我同意你sql server会比access好很多的说法;事实上,sql server比access好太多了。问题是,sql server是收费的,更要命的是支持sql server的虚拟主机会贵很多!一个个人网站直接使用asp+sql server并不实际,那么等它做大了,它一定得花功夫将access转换成为别的。所以,我的观点是Access跟MS SQL之间少了一个东西。
没错!
我上个星期看到的Evangelist做的demo就是用了三台NB!
汗……刚刚没有看清楚你写的方法2……我说的就是方法2……