有用的Visual Studio扩展——Mads Kristensen的网络精华

[原文发表地址]   Useful Visual Studio Extension – Web Essentials from Mads Kristensen [原文发表时间]   2011-11-08 01:03 AM Visual Studio 2010可扩展性很强,它能让团队中的很多同事们在不用重新生成Visual Studio的情况下,直接对网络开发尝试新的功能。这些“玩意”的扩展中有一个叫做“网络精华”,是Mads Kristensen开发的。Mads为我们的团队负责HTML5和CSS3工具。你可能有印象,几个月前在我们发布网络标准更新的时候,Mads出现过。 网络精华是Mads开发的,很棒。所以我认为你们应该去看看,并在这篇博文后留言鼓励Mads,要求他的老板把这些功能加到下一版本的Visual Studio中吧。 首先,它给Visual Studio中的CSS编辑器加了点好东西。如下所示,它在每种颜色旁边都加了一个标志符号,告诉你实际的颜色。 如果你不确定颜色,你会看到更具体的预览。你还可以通过鼠标悬停看到字体预览。 这些小内容会让你会心一笑的。它们还能摆平我日常工作流中的一些小问题。有了它们之后,当它们走了,我会想念它们。 还有些其他功能型特点,比如在CSS文件中以base64嵌入小图像。听上去很难搞,不过如果你的图标很小,而HTTP页眉又比图像大,这样就很容易能移除HTTP请求了。 这里我用应用程序中的小“Ajax加载器”图像做例子,让它变为线内图像。 还有这些: 还有些邪恶的小辅助功能帮你用熟知的CSS黑客来控制规则的可见性,比如,如果你讨厌自己,就使用IE6。 如果你喜欢的话,你可以只显示文本菜单的一部分。 你可以拖拉图像,自动获取背景图像CSS规则,这样可以省去很多时间。还有很多微妙的东西。 最好的功能,好到足以说服你立即下载的功能就是你可以在Visual Studio中用real-time预览做即时CSS编辑。 打开CSS文件,点击Ctrl-Alt-Enter。然后点击设置,选择“即时更新CSS”。在你输入的同时,它会自动在浏览器中更新。爱死它了。 你喜欢这些玩意儿吗?你想在Visual Studio中实现这些功能吗?在下面评论中给我们反馈吧。

0

第11周NuGet包——ImageResizer让你在ASP.NET中实现干净清晰的图像大小调整

[原文发表地址]   NuGet Package of Week #11 – ImageResizer enables clean, clear image resizing in ASP.NET [原文发表时间]   2011-10-31 23:57 背景故事:既然NuGet .NET包管理网站已经开始建立了,我就想应该在那寻找一些宝贝了。否则大家无法找到真正有用的东西。我会找大多开放源项目,那些我认为有用的东西。我会看看他们是怎么建立他们的NuGet包的,其中是不是有什么很有趣的盒外设计方法(或者可以改进的东西),还有那些包可以实现什么。今天,我要说的就是ImageResizer。 Bertrand Le Roy一直倡导在.NET上正确地调整图像大小,尤其是在ASP.NET上。上周,他发表了一篇有关新库的选择方案的博文,这个库是完全的.NET风格,只需中等信任。这就是“imageresizer”。多有创意的名字啊! 说真的,这不简单。以下是Bertrand博客中的很棒的例子,展示了如何直接使用imageresizer以流字节方式来调整JPEG大小。 1: var settings = new ResizeSettings { 2: MaxWidth = thumbnailSize, 3: MaxHeight = thumbnailSize, 4: Format = "jpg" 5: }; 6: settings.Add("quality", quality.ToString()); 7: ImageBuilder.Current.Build(inStream, outStream, settings); 8: resized =…

0

每周源代码49 – SmallBasic老少皆宜的,有趣而简单且强大的编程

[原文发表地址] The Weekly Source Code 49 – SmallBasic is Fun, Simple, Powerful Programming for Kids and Adults [原文发表时间] 2010-02-09 13:18 我的两个小子一个只有2岁,一个不过4岁,不过我一直在寻找新的方法来教他们编程。当然我希望他们能更全面地发展,并且有更多的时间和我一起出去玩,但我觉得即使在编程和逻辑上有点基础的背景也会使他们更强。 由Vijaye Raji 创建的Small Basic 是一款简单(只有15个关键词)却强大的编程初学环境。尤其对孩子和没有技术基础的同志们来说,十分强大,同样,即使对专业的游戏开发者来说,也是足够强大的。实际上,Small Basic大概是我见过的最简单最快速的制作和发布基于Silverlight游戏的方法。继续读下去看看我为什么这么说。 Small Basic是MSDN DevLabs的一部分,最近才发布了0.8版。这是第8个安装,但我觉得他们不将它称为8.0版实在是太谦虚了。J 它支持国际多种语言,包括英语、中文、法语、德语、意大利语、日语、韩语、俄罗斯语、西班牙语、巴西语、葡萄牙语和土耳其语。所以如果你认识教计算机的老师,你可以把它推荐给他们。 看一下Small Basic Tetris 。例如你可以在安装了Silverlight的浏览器中运行它,就在这里。 页面右边罗列了应用程序所需的完整的Small Basic源代码。这里也有一些很棒的Small Basic应用程序的例子。 它有一个非常友好的IDE(集成开发环境),如下图所示,它灵活地运用了智能感应。IDE用它自己的方式提供你尽可能多的信息和文本,不仅仅通过智能感应“弧形”,还有右边文档的上下文相关的辅助。 我觉得更聪明的是“Graduate”按钮,它能将Small Basic程序转换成Visual Basic,使之能在Visual Studio中被直接使用。 下面是Small Basic文本模式应用程序的样式: 1: number = 100 2: While (number > 1) 3:…

0

每周源代码 46-Jeff Key摇动了Taskbar Meters,可监视你任务栏中的Win7 CPU,Memory和Disk

[原文发表地址] The Weekly Source Code 46 – Jeff Key rocks Taskbar Meters that Monitor your Windows 7 CPU and Memory and Disk in the Taskbar [原文发表时间] 2009-10-29 07:44 PM 看事物流行起来很有意思,即使只是互联网上的一些传播。事情是这样的,但更重要的是,我们将要谈论代码。也让我们使之完全清楚,就是Jeff Key不稳定。看左边的图片,介于他的两个“跛脚”创作。 首先,本周前些时候我发了一个名叫“亮点: 使用Windows 7新功能的应用程序清单序”的帖子。一两天后,我从前室友和兼职belay (业余攀登牵引员)Jeff Key (@JeffreyKey on Twitter)那收到即时信息(其实,那完全是一个谎言,但我和Jeff是多年的好友,在IM上有对方),信息说: 看到昨天你Win7功能的帖子了,所以昨晚把这个做好了,今早又把它贴到codeplex:http://taskbarmeters.codeplex.com/ 有些烂,但我就是这么做的。 多年来,Jeff的口头禅就是“说话起来容易,给我看代码。”他确实就是这样做的,用一些最具启发性的. NET为基础的小程序,获得了我们永远的钦佩和感激。Jeff就是这样做的。我访问了他的CodePlex网站,发现它有11个下载。 我推特上说过这件事然后就忘了。后来那个推特被Download.com(我听说过,给Jeff全部荣誉)Life Rocks 2.0(我从没听说过,也从未有人获得过荣誉)以及Lifehacker(我在Life Rocks上听说过)引用。稍后,我返回到CodePlex,发现有4152个下载!恭喜Jeff如此“烂” !;) 代码 当人们为之疯狂并下载这个小实用程序的时候,Jeff本人为什么这么谦虚,说自己的代码“烂”?Well,因为做起来太简单了,这可能是强烈的内疚感。;) Windows API Code Pack让它变得简单。 此外:实际上,.NET…

0

在ASP.NET MVC中修改默认代码生成/支架模板

[原文发表地址]Modifying the default code generation/scaffolding templates in ASP.NET MVC [原文发表时间]2011-03-28 14:06 除了Bill Cosby的毛衣,我的ASP.NE MVC 2 Ninja Black Belt Tips视频里最受欢迎的就是怎样修改ASP.NET MVC任意版本中Code Generation的默认CodeTemplates。 Eilon在这周的内部邮件列表中提到过这个问题,所以亲爱的读者们,以防你们错过,我想了想还是有必要而且值得将这个问题拿出来再探讨下。 不久我们就会看到更多给力的,灵活且有趣的方法来自定义你的ASP.NET MVC 3中的支架,请随时关注。 在你的项目中带入本地CodeTemplates 当你用Visual Studio”tooling”(意思是dialogs和stuff)来添加View或Controller时,你其实执行的是T4模板,生成一些代码。那这是从哪里开始的,你又能用什么方法来改变它呢? 试试这个,创建一个新的ASP.NET MVC项目。 然后去往: C:\Program Files (or x86)\Microsoft Visual Studio 10.0\Common7\IDE\ItemTemplates\CSharp (or Visual Basic)\Web\MVC (or 2) 3\CodeTemplates 看见这些文件夹了吗?打开CodeTemplates目录下的所有文件夹就是T4模板了,可以进行适当的修改或更多,可以将本地转到你的项目。本地CodeTemplates会覆盖全局的CodeTemplates。 将那个文件夹拷贝(或者只复制像AddController和AddView这类的子文件夹)到你的ASP.NET项目中。我是直接从Explorer中把它们直接拖进Visual Studio Solution Explorer里的,如图所示: 你添加文件夹的时候可能会有错误提示,只需忽略就好。用Ctrl-Click选中Templates,然后右键选择属性。(你可以删除那些你不用的templates)。 看见上面显示Custom Tool在哪儿了吗?找到他完整的字符串并且将他们彻底删除。你在提示Visual Studio你不想这些T4 Templates在建立过程中运行。他们只有在需要时通过像Add View…

0

在Window IIS中安装运行node.js应用—你疯了吗

[原文发表地址]Installing and Running node.js applications within IIS on Windows – Are you mad? [原文发表时间]2011-08-28 08:03 我们团队中的一些成员正在努力优化node.js在Windows上的运行效果。你可能会问一些问题。 首先,node.js是什么? 如果你不熟悉node.js,我要说这是一个炙手可热的新型web编程工具包。要是你没听说过会让你觉得自己很过时,就好像几年前Rail上的Ruby那样风靡。同行们把它称之为“Node”,简单来说是服务器端的JavaScript。如果你在客户端做一系列的JavaScript,而且时常一做就是一整天,那为什么不在服务器端试试呢。学起来应该很简单,我猜想是这样的。 如果你是一个ASP.NET编程员,你可以把node.js看成是用JavaScript写成的IhttpHandler。其实它的等级更低, 它连HttpHandler都不是,这里我只是想做一个类比。Brett McLaughlin写的一篇有关Node.js 更多细节以及概述的文章很不错。文章的副标题就是“Node不可能解决所有的问题,但的确可以解决一些重要的问题”,这个描述很贴切。 更新1:为什么node.js那么重要? 为什么我们需要node呢?node有许多有趣的部分。它使用的是非常快速的JavaScript引擎V8,更重要的是它的I/O是异步的,而且与传统同步代码形成鲜明对比的是它的事件驱动。 举例来说,ASP.NET中的HttpHandler要用几秒来“做些什么”(如获取文件,访问服务等)如下所示: 1: public class SimpleHandler : IHttpHandler 2: { 3: public void ProcessRequest(HttpContext context) 4: { 5: Thread.Sleep(2000); //Do something that takes a while 6: context.Response.Write(“Hello from SimpleHandler”); 7: } 8:…

0

第10周NuGet包——ASP.NET MVC 3最新移动视图引擎,与ASP.NET MVC 4兼容

[原文发表地址] NuGet Package of the Week #10 – New Mobile View Engines for ASP.NET MVC 3, spec-compatible with ASP.NET MVC 4 [原文发表时间] 2011-09-05 22:26 我在2009年为Mix做了ASP.NET MVC的基础移动视图引擎,然后在2010年创建了我认为的更好的ASP.NET MVC移动视图引擎。遗憾的是,第二个(就是“更好的”那个)有一个缓冲bug,只出现在发布模式中。上个月,Jon,John,Peter和我用Razor以及一系列其他新功能更新了MVC 3版地NerdDinner。其中一个新功能就是jQuery的移动支持,但这也意味着我们得修复这个移动视图引擎。此外,ASP.NET MVC 4也会包含实际移动引擎支持,所以压力实在很大。 尽管如此,我们想确保任何新的MVC 3移动视图示例能与ASP.NET MVC 4所用的任何架构兼容。我提议的视图引擎最初的文件夹排版是根据文件夹来的,不过最终的设计使用的是文件名称。这就意味着你要用的是~/Views/Home/Index.Mobile.cshtml而不是~/Views/Home/Mobile/Index.cshtml。当然如果你想用自己的,你可以自行改变,不过默认是那样的。 Peter Mourfield 后来加入并更新了移动视图引擎,亲爱的读者,我们已经为你们放到了NuGet上。 记住,这些都是针对ASP.NET MVC 3的。当ASP.NET MVC 4出来的时候,你就不需要这些了,总的概念就是你得移除Razor(或者Web窗体)视图引擎,然后用移动版本来替换,这个集合了超多功能。 1: ViewEngines.Engines.Remove(ViewEngines.Engines.OfType<RazorViewEngine>().First()); 2: ViewEngines.Engines.Add(new MobileCapableRazorViewEngine()); 3: ViewEngines.Engines.Remove(ViewEngines.Engines.OfType<WebFormViewEngine>().First()); 4: ViewEngines.Engines.Add(new MobileCapableWebFormViewEngine()); 你可以在Application_Start中做这些,或者用像MobileViewEngines.Razor.Samples这样的Web激活器来做。NuGet包包括了VB和C#示例,所以你可以删除你不用的那个。你只要使用你需要的视图引擎就好,所以如果你使用的不是Web窗体,那就不用管这几行了。 Peter做的整个视图引擎只有81行代码,所以你可以根据自己的口味来进行改变。Peter和我把源代码放在BitBucket上了,以便修改,分布,和修复。 只要在你的视图中加入移动,比如Index.Mobile.cshtml或者Details.Mobile.aspx,当移动浏览器检测到这些时,它们就会被使用。检测的方法是使用ASP.NET调用标准的Browser.IsMobileDevice,所以你应该考虑使用像http://51degrees.mobi(还有CodePlex上和NuGet)这样的浏览器数据库。…

0

学习渐进增强开发思想—用CSS3媒体查询支持移动浏览器

[原文发表地址] Learning about Progressive Enhancement – Supporting Mobile Browsers with CSS3 Media Queries [原文发表时间] 2011-08-25 08:03   我之前也说过我很开心能与Jeremy Kratz合作,一起重新设计我的站点。 我们最近又见面了,讨论一些细小的改进和微调。我们核心目的之一就是要支持许多种屏幕尺寸,大至30”小至小型智能手机屏幕。你可以从右图看到在Windows Phone和iPhone上的效果。 我的团队最近在手机设备上也做了很多工作,不仅仅是像jQuery Mobile ASP.NET这些而是包含了大体上所有的移动web。我们还和51Degrees合作,他们甚至创建了一个NuGet包,可以帮助您量身定制您的网站到任何设备上。Steve之后也会对 ASP.NET中的Mobile做详尽的解释,我也会分享之后相关会议中的一些想法。 我最早在2006年的这一周就曾开过有关移动浏览的博客。那是5年前了,移动设备才刚刚兴起。回到当时,我的移动视图是单独剥离的,而且在用户代理的嗅探下发出的是完全不同的标记。在当时,这相当创新,那可是5年前啊。在ASP.NET中(此篇博客中会慢慢继续)有很多东西可以实现适应性标记。不过更多的现代技术偏向适用服务器端的检测和客户端功能检测相结合。我们用JavaScript询问了浏览器:你是否支持本地地理位置?不支持?那适用这个JavaScript库呢? 当一个页面布局之后,除了通过服务器检测浏览器上的服务器提供不同的标记之外,我们还可以用CSS3媒体查询基于屏幕大小来修改布局。我在这篇博客中要介绍的就是这些技术。 当我认识到有些人希望通过一个完全自定义的iPhone web应用来访问页面,我认为web页面,移动web页面和移动web浏览器应用之间是界限分明的。在访问我定义中的常规网页时,我不想要特定的iOSweb版式和我看不见的常规web。我希望的结果是可以看到我访问的页面,穿插着许多元素和周围的一些东西。 不过,如果网站互动性很强的话,我可能希望移动网站可以为不同的智能手机提供不同的可能基于设备的标记。我认为决定应用程序的样式,或为特定设备设计的依据是,你的移动网站与用户有多大程度的互动性或只是读取/使用内容上做衡量。 基于这篇博客,就不用那么多特定智能手机了。我想要一个移动优化版的网站,而不是一个完整的iOS(或者Android,WP7等等)网站复本。如果我那样做了的话,那我只需要下载一个应用程序。 如果你正在创建一个web应用程序,致力于“生产”(就是按按钮,做应用一类的东西的话),我可以理解那需要使用特定的手机框架,但是在“使用”部分,我希望我的web网页看上去像是真正的web网页。 CSS3媒体查询 设计师Jeremy和我(主要是他)希望能支持像台式机,平板电脑和网络书的1024像素宽度,和手机小于720像素左右宽度的设备。 以下是CSS的总体构架。注意这些都不是JavaScript,只是用来描述“当屏幕是这样时,应用这样的风格”之类的东西。 1: /* psuedo CSS, not complete */ 2: 3: /* CSS Reset from http://meyerweb.com/eric/tools/css/reset/ 4: 5: Goes here 6: */…

0

第七周的NuGet 软件包——有SQL Server Compact的ELMAH(错误日志模块和处理程序)

[原文发表地址]   NuGet Package of the Week #7 – ELMAH (Error Logging Modules and Handlers) with SQL Server Compact [原文发表时间]   2011-05-23 15:03 您实施了NuGet行动计划吗?行动起来吧,它只需5分钟: NuGet行动计划——升级到1.3版本,安装自动更新,获取NuGet 软件包浏览器。NuGet 1.3已经发布了,请确认你设置了自动更新。 故事背景:我正在思考既然NuGet.Net软件包管理网站开始逐渐充实,那么我应该开始在那寻找宝石了(没有双关含义)。您知道,就是那种大家可能没有发现的真正有用的东西。我将主要寻找开放源代码项目——我认为它们很有用。我会查看它们如何生成NuGet软件包,看看它们设计开箱体验(out of the box experience)时有没有什么有趣的地方(以及任何它们可以改进的举措),当然也会关注软件包本身所做的事。 这周的本周程序包是”ELMAH 1.2 with SQL Compact.” 你可能已经使用ELMAH。现在不要停下不读了,因为你会需要这些信息的。 到现在,我已经写博客和推进ELMAH(错误日志模块和处理程序)好多年了。这是我添加到任何不管多重要的ASP.NET项目的第一个东西。它是ASP.NET开源伟大的妙处之一。 我已经在一些谈话和视频中演示过“install-package elmah”,作为我的指导演示它演示了NuGet和结构良好的OSS软件包如何让你迅速上手。最近,ELMAH团队已经开始重新调整一些软件包,我想展示一下他们的工作,以便你不仅能从中学习,而且在你自己的软件包里也能实现类似的结构。 首先,花几分钟看看ELMAH是怎样工作的,怎样加到你的ASP.NET项目。现在,让我们看看在NuGet.org上的(目前有三个,很快就会有更多)ELMAH软件包。 目前有: ELMAH Core Library (no config)-“没有任何配置的ELMAH的核心库(错误日志模块和处理程序)“, o 这个只包含程序库。如果你已经有了自定义ELMAH配置或者你想新建一个,你可以依赖并使用这个“核心”软件包。 ELMAH-“为了更快上手,ELMAH用初始配置。ELMAH (错误日志模块和处理程序) 是一种应用广泛的错误日志工具,完全可插拔。它可以被动态添加到正在运行的ASP.NET Web应用程序,甚至机器上所有的ASP.NET Web应用程序。而不需要重新编译或重新部署。” o 这个包含你需要的drop-in/just-works…

0

回归基础:使用SetLastModified时,夏令时缺陷再现

原文发表地址: Back to Basics: Daylight Savings Time bugs strike again with SetLastModified 原文发表时间: 2011-11-06 07:14 AM 无论你对某个话题或者代码库有多熟悉,迟早会被某个最新的但可能是存在了至少五年的缺陷所困扰。 DasBlog,驱动这篇博客的ASP.NET2博客引擎已经完了。不是说它不行了,而是它精疲力尽了,而且非常稳定。我们去年有过承诺,我承诺在二月前完成缺陷修复,不过尽管如此我们还是得到了很多的理解。我的博客几年来都没有受到障碍影响,因为DasBlog在单一机器上表现还是不错的。 那是太平洋夏令时的下午10:51,我正在写一篇关于我家的时钟的博客,介于太平洋标准时间很快就要切换过去。我在Windows Live Writer中编写,把它放到博客上,然后点击Hanselman.com来查看。 跳出404. 什么?404?烦人。刷新。 404 *内心动态*我被黑客攻击了?发生什么了?看看日志! 1: l2 time 2: 2011-11-06T05:36:31 code 1 3: message Error:System.ArgumentOutOfRangeException: Specified 4: argument was out of the range of valid values. 5: Parameter name: utcDate 6: at 7: System.Web.HttpCacnhePolicy.UtcSetLastModified(DateTime utcDate)…

0