“C# & .NET”目录存档

S for simple, also for shit

2009年12月14日,星期一

看到一个很符合事实的文章。SOAP: The S stands for Simple

还记得大二的时候,屁颠屁癫去看800多页一本的.NET啊,C#之类的。当时书上把 Web Service,.NET吹嘘得天花乱坠。SOAP就占据了非常大一些章节。现在回想起来,真他妈操蛋。操蛋的标准不说了,各自厂商还有各自操蛋的实现和事实标准。SOAP这个东西绝对是2B理论学院派的作品。我感觉真正XML在最终用户有实际应用而且最有用的就是XMPP了。但是这个操蛋的协议,两百多个spec,每个客户端都只支持其中一个子集,而且各自有各自的毛病。

从建立标准 - 强制推行标准解决实际问题这条路是行不通的。应该由下自上,由实际工程和市场选择出来优秀的标准,例如JSON。所以w3c是注定没前途的。w3c和whatwg就是各大厂商用来挟天子以令诸侯的东西。

用汇编写asp.net - 基于IL的Asm80386

2008年06月18日,星期三

http://www.viksoe.dk/code/asmil.htm

<%@ page language="Asm80386" %>
<%
Str:  DB "Testing...", 0

  mov eax, -2
  cmp eax, 2
  jle Label1
  xor eax, eax
Label1:
  lea esi, Str
  push esi
  call "Response.Write(string)"
  pop esi
%>
<br>EAX: <%= eax %>

好耍哇,赶快去下载个(ASM Script Compiler)~~~才45k

摘录reddit八卦评论几条:

  • Rails 杀手来了!
  • 突然间Java Bytecode没有那么囧了
  • 宇宙第一个可移植的汇编程序!
  • 我靠,这还是2008年么?
  • bob,周一之前把我们的网站用这种方式重写(瀑布如雨汗)
  • 回楼上的,不行啊,我们的代码跑在Lisp机器上
  • 搞笑的吧
  • 回复楼上:汇编是严肃的东西!
  • Web 3.0的标志性东西出现了!

看来需要深入了解Msxml2.DOMDocument和libxml2了

2008年04月10日,星期四

这两个对象在Windows和Linux上用得相当广泛,看来需要深入细节了解了。

近期将整理一些文档。

现在我的感受是:coding的思想细节同等重要。只有思想写不出来代码,只懂细节就是代码民工。

回顾了一下这学期巨长的ToDo List,感觉有点绝望和颓废。那么去繁就简,做好这几件事情就行了:

  1. 不挂科,重修课全过
  2. 精通Python语法和标准库、精通Javascript
  3. 接触Linux C编程和Objective C,前者可以写简单的select/epoll程序,后者可以写入门的小工具
  4. 尽量少在屏幕前堕落,恢复视力

从现在开始pro carreer的道路吧。

取消 web.config 的继承

2007年12月24日,星期一

以往栋力无限的首页是 http://www.dormforce.net/homepage,一直很奇怪为什么不直接弄成 http://www.dormforce.net。今天才知道是根路径的 web.config “污染”了下级asp.net程序,所以跳转到一个单独的目录。

网上搜索了下,可以取消web.config的集成,方法是在编辑最顶级web.config的XML文件,把</configSections>后面的所有XML元素用
<location path="." allowOverride="false" inheritInChildApplications="false">

</location>
括起来!

注意,asp.net 1.1和asp.net 2.0不兼容!所以如果在全站asp.net 2.0跑一个 asp.net 1.1的二级路径程序,是不可能配置成功的!微软说这不是一个bug,这是一种“设计”,哈哈~~~

[zt]微软效仿Eclipse推Visual Studio 2008 Shell平台

2007年12月13日,星期四

微软效仿Eclipse推Visual Studio 2008 Shell平台
2007年06月13日 上午 11:06
Visual Studio以插件的形式支持非微软语言也有多个年头了。但是,Visual Studio高昂的价格使它很难成为第三方语言开发者的平台。随着Visual Studio 2008 Shell计划的宣布,这一情况有望得到改善。

从字面上理解,Visual Studio 2008 Shell只是一个没有编译器的Visual Studio内核。VS Shell是完全免许可费(License Fee)和版权费(Royalty Fee)的,这使得它很适合作为不同语言的统一平台。

VS Shell包能以两种模式部署。集成模式(Integrated Mode)将包融合到标准的Visual Studio环境,也就是说,现在开发者在一个平台上既可以使用传统的VS语言,如C++、VB或者C#等,也可以使用像IronPython等比较新的语言。

第二种模式,就是为人熟知的独立模式(Isolated Mode),它更多地是应用开发而不是语言开发。比如在Visual Studio Shell网站上展示了一个名为“Fabrikam Home Automation Studio”的终端用户应用,这个应用更像是一个定制的工具,而非典型的编程语言工具,因为它带有只为自己所需而定制的工具条和菜单等。这种情况可以理解为Visual Studio Express的一个通用场景,尽管技术上他们共享一个IDE,但每个版本之间都是独立的。

VS Shell不支持任何微软的工具或者内建语言。但是,如果用户有一套付费的Visual Studio SKU(Standard/标准版,Professional/专业版,或者Team System/团队协作版),这些工具和语言就会和VS Shell包一起以集成模式的方式提供。

VS2008 Shell简直是对于我们这些菜鸟的福音啊。脱离asp.net写python或者php最不习惯的就是缺少一个native & powerful 的IDE,现在有了VS2008 Shell,简直爽YY了

给几个下载:
Integrated mode
http://download.microsoft.com/download/b/0/1/b01bf855-24ad-43ce-b488-b12854eb8fde/vs_ideredist.exe
Isolated mode
http://download.microsoft.com/download/e/5/7/e5790d53-3010-46a4-882f-b10d6eac4172/vs_AppEnvRedist.exe
IronPython Studio
http://www.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=IronPythonStudio&DownloadId=23452

全角半角,漏洞?bug?Vulnerability?

2007年12月1日,星期六

发现SQL Server 2000/2005一个“特性”:不区分半角全角。

用默认的数据库Northwind为例:

select * From Customers Where CompanyName like 'A%'
select * From Customers Where CompanyName like 'A%'

这两条语句的结果是一样滴。

想象一下用户登录,
select password From Users Where username='est'
select password From Users Where username='est'
select password From Users Where username='est'
是等效的。

但是在业务逻辑层、表现层,username是不固定的,这造成了用户ID的不唯一性。

由于我开发数据库的经验还不足,还不能深刻的看出这个bug的影响范围,但是可以肯定这个bug肯定有很大的利用价值。

同理,在正则表达式里,\d并不代表 [0-9],而是[0-90-9]。在MSDN中说道:

\d 与任何十进制数字匹配。对于 Unicode 类别的 ECMAScript 行为,等效于 \p{Nd},对于非 Unicode 类别的 ECMAScript 行为,等效于 [0-9]。

那么所有基于CLR的语言,例如VB.NET, C#, Managed C++, IrconPython等等都要受到这个特性的影响。

但是符合ECMA标准的Javascript并没有这个“特性”。在浏览器地址栏输入
javascript:alert('test'.match(/t/));
返回null

原来lighttpd 1.4.x不支持Expect: 100-continue

2007年10月7日,星期日

今天跟同学写一个WebService,我这边是用lighttpd+mod_fastcgi+django做的一个WebService服务,同学那边用C#来调用这个WebService。但是每次在Visual Studio 2005里调试的时候都显示

未处理 WebException
远程服务器返回错误: (417) Expectation Failed。

我用Python的urllib2来POST这个WebService都是成功的,但是.NET里几个HTTP请求对象都不能调用。仔细对比抓包了2种语言的请求包,发现.NET的请求头多了一个Expect: 100-continue

起初我还怀疑是django不支持,后来查看了HTTP 1.1的文档,最后发现,lighttpd 1.4版本更本不会支持Expect: 100-continue这个HTTP头。或者装 lighttpd 1.5.x 的开发版本,或者换apache。

结合在CSDN上的相关问题,最终的解决办法是:在Http请求之前加上这一句:System.Net.ServicePointManager.Expect100Continue = false;

用快捷键移动工具箱

2007年08月2日,星期四

以Visual Studio 为例,先激活需要移动的工具箱,按 Alt+减号,按下M,然后就可以通过上下左右方向键来移动ToolBox了。如果需要dock到窗体边缘,用方向键移动到需要的位置按下Enter

来源