All Posts in 2012.6


SQL Server 2012中使用ORDER BY OFFSET及FETCH NEXT分页

原文:http://www.kodyaz.com/sql-server-2012/sql-paging-in-sql-server-2012-sql-order-by-offset-fetch-next-rows.aspx 翻译:汪宇杰 SQL Server 2011(译者注:后来重命名为2012)对于T-SQL的特性的增强中,有一个主要的特征就是可以使用“ORDER BY OFFSET n ROWS and FETCH NEXT n ROWS ONLY”语法进行分页。 本文会使用CodePlex上下载的SQL数据库样例AdventureWorks来演示SQL Server 2012 Denali中T-SQL的新特性。 请注意,直到微软把Denali在发布时命名为SQL Server 2012的时候,它在SQL Server社区中本应命名为SQL …


C#创建Windows服务入门图解(VS2010)

Windows服务大家都知道,比如Audio、Theme都是大家比较熟悉的服务,他们可以设为自动启动的,并且在注册表的开机自启动项里是没有痕迹的。所以以前曾经用来隐藏过木马。但以前搞的那个木马服务,是通过手工导注册表来做的。从来没正式的开发过一个服务。 之前做的一个项目里有人用Service的方法定时获取远程数据,很犀利,我感觉还是挺有用的。所以今天我也开荒了一下用C#开发Windows服务,正规的体验了一下开发流程。下面就是我做的最入门的例子,MSDN上有类似的教程,但MSDN漏了一些比较重要的步骤,所以大家请看我开荒成功的版本: 首先,在VS2010里建立一个Windows Service项目: 它会提供我们一个默认的Serivce1,可以删掉,换成自己的。比如Fucker.cs,当然,你得把Program.cs里调用的语句换掉: static void Main() { …


IEnumerable.Where和IEnumerable.Select拓展方法

昨天有个同事在码一程序,处理一个list集合,检查是否有符合条件的项,但不想写繁琐的foreach检查(那样做看上去很2,不专业),于是我就顺手用linq拓展方法给写了。大致如下: if(null != xxx.Select(p => p .... ).FirstOrDefault()) { ... }; 结果发现运行的时候这个条件总是成立的,我蛋都碎了。后来我把.Select换成了.Where就好了。我仔细一看,原来.Select拓展方法遇到后面是条件判定的时候,返回的是bool类型。所以这个if语句自然就永远能走进去了。平时我用Select的时候往往后面跟着new的对象,所以一直没注意到这件事。 今天写了个小demo实验了一下: static void Main(string[] args) { var list = new List<string& …


ASP.NET自定义错误页的正确方法,返回真正状态码而不是200OK

昨天在码页面的时候手写了一次AJAX,蛋都碎了,顺便发现了一个问题。我在ajax的脚本里检查http的返回状态是不是200OK以此来判断ajax是否执行成功。结果发现网站里所有的404、500页面均返回200OK,我蛋都碎了。用Firebug检查了一下,确实如此。这是自定义错误页的问题。如果用了html静态页作为错误页,比如404.html,通常我们的web.config里会这样写: <httpErrors errorMode="Custom" existingResponse="Replace" defaultResponseMode="ExecuteURL"> <remove statusCode="404" subStatusCode="-1"/> <remove statusCode="500" subStatusCode="-1"/& …


PSEXEC连接远程机器cmd拒绝访问的原因及解决办法

最近在玩一个很牛逼的小工具叫做psexec,知道对方的管理员帐号和密码就可以远程连接对方主机的cmd,对方无需打开远程桌面等任何服务。n年前曾被黑客们用来做过很多坏事,不过这个工具对于网管和程序员来说倒是可以提供不少方便。今天在公司的域环境下试了试,结果居然爆了: 我输入的用户名及密码是正确的(用户名得包含域,即domain\username),并且这个帐号在目标机器上也是有管理员权限的。可是试了好几次都是Access is denied。 于是我登录目标机器,看了下Windows的日志,结果发现psexec发起的这次登录,居然是要用我本机当前用户的身份执行的。我本机执行cmd的用户名如下: 这个会出现在目标机器的Security日志里: 图中,Specail Logon里使用的是psexec参数里的帐号,而Logoff里显示的,却是我本机登录帐号。这个帐号在目标机器上 …


ASP.NET4网站编译时找不到Chart控件的解决办法

最近在努力把博客从WebForms改到MVC3上去,不过后台仍然打算用WebForm开发。结果我把后台的文件复制到MVC Solution下面,改好web.config后,编译的时候爆了: The type or namespace name 'Chart' does not exist in the namespace 'System.Web.UI.WebControls' (are you missing an assembly reference?) 我看了下引用,结果Refence里确实已经加入了System.Web,但这个错误还在。后来我发现WebControls命名空间下根本就没有Chart,这个Chart其实是ASP.NET4自带的控件,应该在“System.Web.UI.DataVisualization”命名空间里。 所以只要添加一个 …


在IIS里部署WCF以及在Service中使用List泛型而不是Array的方法

最近在公司做的是WCF的一个项目,之前从来没玩过WCF,有些陌生。所以把碰到的问题都记录下来以备参考。 首先在IIS里部署WCF很简单。 1. 保证你先有一个网站,并在这个站点上点右键,添加一个应用程序。 2.在弹出的对话框里选择WCF的根目录,并给他起个名字。 3. 如果你的Serivce是.NET4开发的,那就要到应用程序池里改下.NET版本 4. 在浏览器里访问你的service地址,就应该能成功了。 在使用这个Service编程的时候,一开始我发现List类型全变成了Array,也难怪,Serivce的标准就是XML里放的一个个node作为数组的元素。以前用脚本调用的时候就用的是JSON的array,现在在C#里我们其实可以通过设置仍然使用List类型: 1. 在服务引用上点右键,选择配置服务引用(我不知道中文版VS是不是这个名字) 2. 在集 …


ASP.NET MVC3返回404等Http状态码

最近在筹备本人博客下版本的开发工作,准备将网站前台转到MVC3上。以前没有彻底玩过MVC,所以这几天在做练习,比较蛋疼。其中一个需求就是当用户访问不正确的地址时,返回一个404错误。比如阅读一篇已被删除的文章,就需要这样做。 以前在ASP.NET里,我只需要写:Response.StatusCode = 404 就好了,但在MVC3里似乎无效。经过Google我找到了返回404错误的方法。完整代码如下: public ActionResult Detail(string id) { Guid sId = Guid.Empty; if (!Guid.TryParse(id, out sId)) { return new HttpNotFoundResult(); } else { …


Read Excel 2010 via C#

昨天一个同学让我帮忙写个小工具,读一个Excel,只读B列的内容。我拿C#写了一个.NET4的winform程序。虽然简单,但有很多可圈可点的地方,因此撰写本文以警后人。 那个Excel是2010格式的,所以我们先要安装AccessDatabaseEngine,下载地址如下: http://download.microsoft.com/download/7/0/3/703ffbcb-dc0c-4e19-b0da-1463960fdcdb/AccessDatabaseEngine.exe 这样程序读取Excel的时候就不会抛出OleDb驱动未注册的异常了。 我们先看看Excel文件,格式很简单: 我们需要读的,是B列除标题以外的内容。即B2到B6的内容,观察到它是字符串,所以程序里要作为string读取。 程序界面设计如下,点击ReadExcel后,会将B列的内容显示到 …


ASP.NET中使用Razor导致自定义Membership失效的解决办法

最近在研究Razor和MVC,打算逐步把博客用Razor重写一边。今天一上手就碰到个蛋碎的问题。不管是在MVC应用程序,还是传统的WebForm项目中添加Razor页(既.cshtml类型的页面),就会导致自定义的Membership Provider失效。如果去掉Membership的配置则一切正常。 具体问题表现在有两个地方报错: 1. 运行时报错:Parser Error Message: Default Membership Provider could not be found. 2. 编译时报错:Error    58    The pre-application start initialization method Start on type System.Web.WebPages.Deployment. …


使用批处理及Windows计划任务做每日备份

我们电脑里常常有些重要数据需要定期备份,然而每次都人工操作非常麻烦。并且,在有的特殊情况下,没有办法人工操作(比如公司下班以后,在没人的时候希望服务器做一些数据备份操作)。所以我们需要让Windows自己来完成这些重复性的劳动。 本文的示例是我自己的博客项目,我将创建一个批处理,用于把“E:\WebProject\EdiBlog”文件夹打包压缩,并按日期建立备份文件夹。之后创建一个计划任务,让Windows每天晚上9点运行这个批处理。 首先,批处理很简单,代码如下,将它保存为RunBackup.bat @echo off @SET EXEPATH="C:\Program Files\7-Zip\7z.exe" @SET PROJECTPATH="E:\WebProject\EdiBlog" %EXEPATH% a -tzip "G:\EdiBlogBackup\% …


给编程初学者的建议

本人出于兴趣驱使,从初中就开始研究计算机及编程,但我不是神童,我没有写过9000个软件,也没有90天写过40w行代码,我只是自认为对编程稍有门路罢了。如今快毕业了,在一家挨踢企业实习。在学习的道路上经历了很多,也感悟了很多——编程以外的道理。有些现象让我看在眼里,疼在蛋上。因此我决定撰文,旨在引导编程初学者一个正确的学习方式,帮助他们少走弯路。本文适合大一新生,以及对编程有兴趣的同学阅读。如有意见,欢迎到我邮箱拍砖。edi.wang@outlook.com 一、你为什么要编程 兴趣第一 我必须要说的是,据我观察,以及自身体会发现,要想学好编程,最好的前提条件就是兴趣。但不是每个学编程的人对此都有兴趣,并且,要让一个没有心思研究编程的人静下心来学习这门需要大量时间和精力才能入门的学科,是相当难办的。我的重点不在如何教你去培养兴趣,我不是教育砖家。我要说明的是,如 …