Edi Wang

.NET and Azure Developer

All Posts

How to enable IPC share on Windows 8/8.1/10

Update 2017.2: This will also work with Windows 10 最近为了贯彻微软先进思想,给台式机换了个Windows 8,许多地方爆出了翔,但用惯以后还是很舒服的。在Windows 8里,操作系统的许多设置被微软在黑暗中偷偷的改过了。比如局域网共享文件夹,在以前版本的Windows上,如果知道对方机器的管理员帐户密码,就可以在路径后面加上“盘符$"来直接访问对方的整个硬盘。比如在:\\DiaosPC\D$,系统会弹出一个身份验证对话框,输入DiaosPC上的管理员帐号后,即可访问他D盘的内容。在Windows 2000的年代,黑客们可以利用这点进行“空连接”攻击,给对方下载木马,然后用at命令定时执行,这些黑暗的历史就不告诉大家了。。。。 然而,这个功能在Windows 8上似乎被撸掉了,虽然在管理工具里还能见到所有盘符的管理共享,但局域网中是无法访 …
Windows

如何让Surface RT的开始屏幕显示4行磁贴

昨天Surface RT启动后,开始屏幕突然变成了4行磁贴。虽然感觉比较惊讶,蛋说实话,4行还是比3行的可用性高一点。不过重启Surface以后,就还原成3行了,怀疑这是Windows判别显示器大小时候的一个bug。 经过一番研究,在Windows 8(Windows RT)上,开始屏幕显示多少行磁贴,是由Windows自动决定的,主要取决于屏幕分辨率以及屏幕大小。在Surface的1366x768、10.1,10.6寸屏上,默认显示3行,并且不提供设置选项。 不过,1366x768的分辨率在较大的屏幕上(14.1、15.4寸),是可以显示4行磁贴的。在其他分辨率的设备上,也是如此。但是Windows没有提供手动设置的地方,所以我们只能改注册表强撸。 下面的注册表设置,只适合Surface RT,Windows 8(非RT)用户请勿尝试,小心灰飞烟灭。 Windows Registry …
Windows Surface

开荒成功:如何在Surface RT上给其他计算机共享文件

最近在撸Surface,屌丝只能买RT版的,上面的Windows 8不是全功能的,你们懂的。对我来说,比较不方便的就是似乎不能共享文件。当然,用Surface访问我台式机上的共享一点没问题。所以今天开荒了一下如何在Windows 8 (RT版上)架设共享文件夹。 1. 在服务管理里面,找到Server,并设置为自动启动,然后启动这个服务。 2. 运行mmc.exe(服务器管理员猿应该经常用这个吧) 3. 将“共享文件夹”添加到右边的管理单元里。 4. 现在你就可以添加你要共享的文件夹了。注意权限设置一定要正确,符合自己的需要。 5. 用局域网中的其他电脑访问你的Surface的机器名,应该能看到共享了!
Windows Surface

SQL游标的使用

SQL里要做循环比较麻烦,有时候需要用游标(CURSOR)。我是SQL大菜鸟,昨天刚开荒成功了一个游标。发出来备用。 基本语法形式是这样的: DECLARE @临时变量 UNIQUEIDENTIFIER DECLARE 游标名称 CURSOR FOR -- SELECT的结果 OPEN 游标名称 FETCH NEXT FROM 游标名称 INTO @临时变量 WHILE @@FETCH_STATUS = 0 BEGIN -- 对每一条记录的操作 FETCH NEXT FROM 游标名称 INTO @临时变量 END CLOSE 游标名称 DEALLOCATE 游标名称 举个例子,遍历我博客的分类表,输出每一项的Route名称: DECLARE @tempId UNIQUEIDENTIFIER DECLARE @tempName NVARCHAR(150) …
SQL

毕业生码农防坑纲要

进公司1.5年了,被坑无数。简单整理了一下防坑纲要,已警后人,尤其是毕业生。这些事情也不都是发生在我身上的,做个总结而已,此事不宜在网络上细说。 1. 帮个小忙 如果有人要你过去帮个小忙,我是指,去某个项目里,作为“外聘”帮个“小忙”。请务必非常慎重,因为你很有可能就“一去不复返”了。记得刚进公司不久,我有一位同学,就因为表现比较出色,被提前拉去一个项目组帮了个小忙,结果这个小忙一帮就帮到现在,帮到连部门老大都走了。并且,那时候我们还算是实习,甚至不是“试用期”,但如果你不幸被帮了小忙,很可能就得每天加班了。实习加班是毫无任何福利的。前一阵子我也被帮了个小忙,结果经常被做无意义的需求,和被别人的bug debug,每天为了证明自己的清白在代码里找证据,非常不愉快。 2. 会和不会 毫不客气的说,大多数的毕业生毛都不会。如果你比他们厉害,请尽量装作不会。如果你不幸会的比较多,那就会有很多“帮 …
Programming

如何从TFS2012上删除Team Project

很久以前,微软就推出了在线版的TFS服务(tfspreview.com),当年还是preview,现在已经是正式版可以在线免费使用了。我很久之前也创建了几个测试用的project在里面,结果现在删不掉了。 可以确定的是,不论在网页版TFS的操作界面上,还是Visual Studio 2012里,都找不到删除Team Project的操作。经过一番谷歌,删Team Project得到CMD里进行。 工具叫做TFSDeleteProject.exe,在你的VS安装目录的这个位置,比如: C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE 具体介绍可以看MSDN上的这篇文章:http://msdn.microsoft.com/en-us/library/ms181482%28v=vs.110%29.aspx 操作如下: …
TFS Visual Studio

超详细图解:自己架设NuGet服务器

NuGet 是.NET程序员熟知的给.NET项目自动配置安装library的工具,现在已经整合在了VS2010 SP1和VS2012里。但有时候,尤其在某些公司内部,因为公司防火墙,VS是没办法连接NuGet服务器的。所以我们需要自己架设一个私服。 一、网站构建 首先,确保你的机器在互联网上,并且能够访问NuGet服务器。 创建一个空的ASP.NET网站,选择Framework4(因为考虑到部署问题,很多服务器还没有装.NET4.5,所以我们只能选4) 接下来,用NuGet为这个Web Project安装“NuGet.Server”库。这也是为什么我们需要这台机器能够连接互联网的原因。 安装成功后,你的Solution会变成这样一个结构。并且不需要写任何代码或更改任何配置,它已经可以运行了。但是注意,Packages里只有一个readme.txt,这个目录是用来放NuGet包的。所以现 …
Visual Studio NuGet

Performance tips for Entity Framework

自从我用了EF,每次都很关心是否有潜在的性能问题。所以每次我写LINQ查询,都会使用SQL Profiler看一下实际生成的SQL语句,以便发现潜在的性能问题。也强烈建议大家这么去做,以免日后软件大了出了问题很难查。 一、只选择某列或某些列 有些时候,在C#里写LINQ虽然看着舒服,但性能不一定好,所以有必要做一些调整。比如这种情况: 我需要知道一篇文章的点击数,仅此而已,我可能会写: context.Post.FirstOrDefault(p => p.Id == postId).Hits; 或者: context.Post.Find(postId).Hits; 我期待着他们只去数据库里筛选Hits这一列的数据,然而,通过SQL Profiler会发现,这两条语句居然把全部列都给select出来了,访问Hits的操作实际是在内存中进行的。 虽然小表看不出性能问题,但万一你的表里有一列是存 …
C# ADO.NET Performance

如何手工将Entity Framework 4.0升级到5.0

最近在码下一版的博客,其中有个更新就是把Entity Framework升级到5.0。当初建博客的时候是用VS2010自带的EF4的。从4.0升级的过程必须手动完成,通过NuGet的升级,只能自动撸4.1以上的版本。 昨天爆了很久,终于把网站弄得可以运行了。下面分享经验。 第一步:从NuGet安装Entity Framework 5.0 首先,对现有的EF4.0项目,什么都不要改,也不要删。直接从NuGet安装EF5。如果你是.NET4的项目,那实际上安装的是4.4版的DLL,所以EF5的枚举类型是不可以用的。如果你已经升级了.NET4.5,那就是完完全全的EF5。 NuGet会自动给你添加引用以及配置相关的config文件。 第二步:更新EDMX 打开现有的EDMX文件,在空白处点击右键,选择“Add Code Generation Item” 新版EF是用T4模板 …
ADO.NET

给ASP.NET Membership增加权限(Rights)功能

首先说明,本文用的是非常屌丝的办法,针对SQL Server Membership的实现的一个很有局限性的权限模块,而不是真正对ASP.NET Membership本身的拓展。不喜慎入。 一、为什么要给Memebership增加权限系统 我们知道,ASP.NET Membership是基于Role的,其实是个RBAC,没有权限(Rights)功能。也就是说,我们只能够指定某个Role可以做什么事,丧失了一定的灵活性。比如,网站后台有个编辑文章的功能。如果基于Role判断,我只能认为:所有Admin、Editor、Teacher可以编辑文章。在MVC3里,可以用Authorize(Role=”Admin, Editor, Teacher”)的属性做到这一点。然而如果想要动态可配,则比较难了。然而,如果是基于Rights的验证,那我就可以认为:所有具有Edit权限的Role可以编辑文章。这样的 …
ASP.NET Membership RBAC