Hello World
Spiga

归档:2009年12月

2009年末,多少进行一些总结和展望吧

2009-12-31 00:11 by 老赵, 12640 visits
摘要:时间就这样悄无声息地到了2009年的最后一天,回首我这过去的一整年,可以用一句废话来总结,那就是“既有遗憾,也有收获”。不管怎么样,多少也应该总结一下吧——尤其是此时此刻,对我来说可谓是一个新的起点。自然,在技术博客上,终究还是围绕着“事业”谈谈吧。 阅读全文

使用Fiddler辅助观看InfoQ的视频

2009-12-29 12:04 by 老赵, 7457 visits
摘要:InfoQ是一个好地方,而我认为其中最有价值的资源,便是其中的演讲视频。InfoQ在这方面有个特点:在演讲视频下方提供了清晰的幻灯片,而在播放的同时,还会根据进度进行切换。这观看体验自然比单纯的演讲录像要高出许多。可惜的是,时不时有朋友会向我反馈说,InfoQ实在是太慢,几乎无法流畅地观看视频。由于一时半会儿InfoQ也不会在中国放CDN,因此视频加载速度这问题……几乎无法解决。还好,如果我们退而求其次,至少可以使用Fiddler等工具来“缓解”这个问题。 阅读全文

五十种语言的“圣诞快乐”(下):F#实现

2009-12-28 11:18 by 老赵, 6916 visits
摘要:不知道大家的圣诞节过的如何?有没有玩点啥有趣的东西?上次的文章中我们主要分析了使用Google Translate进行文字翻译的方式,并使用C#写了一个简单的的翻译程序,效果良好。不过,在平时开发过程中,对于此类问题我常用F#来解决这样的问题。那么使用F#来实现此类任务有什么优势吗?不错,我们现在便来看看这个问题。 阅读全文

推荐内容索引

2009-12-27 17:30 by 老赵, 67599 visits
摘要:写了不少文章,其中有不少比较用心的系列。积累了那么久,我在博客上也已经讨论过了各种问题。许多人提问的时候,我会说我写过某某文章,可以搜一下,但得到的反馈经常是找不到。其中一个原因是那些弟兄还不太会用搜索引擎——或是懒,但也有可能是以前的文章的确是“沉没”了。无论是博客园还是独立博客,对于内容的组织和管理还做得不够好,所以在这方面有所突破之前,还是通过手动整理的方式来保留重点内容吧。 阅读全文

五十种语言的“圣诞快乐”(上):分析与实现

2009-12-25 11:17 by 老赵, 7006 visits
摘要:您知道“圣诞快乐”在不同语言中的写法吗?Google Translate知道。不过Google Translate好像并不希望我们可以直接获得这些内容——但这并不能阻止我们这些光荣的程序员来获得这些信息。 阅读全文

老赵谈IL(4):什么时候应该学IL,该怎么学IL

2009-12-25 00:08 by 老赵, 11972 visits
摘要:又是一个拖了半年的系列,可能是前几篇主要以事实为准,举例子的文章总是比较容易写的,因此十分顺畅。而最后一篇打算做一个总结,以讲道理为主——却发现该将的似乎都已经讲完了。不过做事要有始有终,该完成的也必须要完成。那么现在就来谈谈我的一些个人看法:什么时候应该学IL,以及应该怎么学IL。 阅读全文

重谈字符串连接性能(下):分析优化

2009-12-23 14:03 by 老赵, 9261 visits
摘要:经过之间的性能比较,我们得知StringBuilder的性能并非时时最优,再经过实现分析,我们大致了解了StringBuilder的实现方式。虽然在此之前,大家也基本已经了解StringBuilder的实现原理,也有不少朋友指出了它性能缺陷的原因。不过“严谨”起见,寻找性能问题的方式应该是进行Profiling,然后找出性能关键再进行优化——而不是纯粹进行“阅读”这种静态分析方式。 阅读全文

使用Profiler分析程序性能

2009-12-22 11:37 by 老赵, 12943 visits
摘要:三个星期之前我向大家求助说,VS的Profiler分析程序性能时无法跟踪框架内部的方法调用。当时我做了不少尝试,例如下载并配置了.NET Framework的symbol文件和源代码,还尝试使用了ANTS Profiler和CLR Profiler等其他工具,最终还是没有成功。Ivony...老大在评论中告诉我说Sampling方式可以获得比Instrumentation更多的信息,不过我觉得Sampling得到的结果并不像我的目标那样干净,因此还是在寻找Instrumentation的方式。不过最终耗费了一个GTSC的支持点数,才被告知——的确应该使用Sampling。 阅读全文

在.NET平台上使用Scala语言(下):分析

2009-12-21 00:30 by 老赵, 5395 visits
摘要:上一篇文章里我们简单尝试了在Scala里编写.NET应用程序。这个过程并不困难,因为似乎Scala官方已经对此已经有较好的支持了。我们要做的只是“获取工具”,“编译成IL”,最后再“生成程序集”即可。那么,这些工具究竟做了些什么,Scala究竟又是如何支持.NET平台的,它的可用性究竟如何,我们还需要进一步的分析及尝试。 阅读全文

在.NET平台上使用Scala语言(上):初尝

2009-12-18 12:47 by 老赵, 7319 visits
摘要:Scala是Java平台上的一门新兴起的语言,我也不止一次在博客上提到它。我非常希望它可以取代Java这种劣质语言,让Java平台的生产力上一个台阶。事实上,Scala从一开始——或者说“很早”就对生成.NET程序集提供了支持。只可惜,毕竟还是Java平台的东西,.NET方面的资源少之又少,不过我们还是可以进行一番尝试的。 阅读全文

定制Paste from Visual Studio插件(下)

2009-12-16 14:27 by 老赵, 5778 visits
摘要:上一篇文章里我们进行了简单的实验,验证了通过修改IL生成新插件的可行性,不过我们要做的事情还有很多,因为我们实际要做的事情其实是……插入行号。这需要我们补充新的逻辑,并且对CreateContent进行修改。那么我们又该如何写这大段大段的IL呢?没关系,其实这些事情不懂IL也可以做。 阅读全文

定制Paste from Visual Studio插件(上)

2009-12-16 10:56 by 老赵, 5641 visits
摘要:我在上一篇文章里谈了我常用Paste from Visual Studio(下文称VSPaste)的插件,这大大方便了我写博客时贴代码的工作。不过今天早上有朋友在我博客后面留言说:“VSPaste没法显示行号,不知大家有没有办法解决?”其实这点很容易,写个小程序,把VSPaste生成的HTML再进行一番处理不就可以了嘛。不过最方便的做法还是让VSPaste直接生成带行号的代码块,不是吗?那么,我们就来自己动手丰衣足食解决这个问题吧。 阅读全文

浅谈代码着色(下):服务器端着色

2009-12-15 15:38 by 老赵, 6896 visits
摘要:上篇文章谈了客户端着色,而现在自然就来讨论服务器端着色了。先下个定义:我在这里谈的“服务器端着色”,是指直接从服务器端输出着色效果的做法(与“客户端着色时”输出纯代码文本相对)。至于这个着色效果是如何获得的,例如是由另一个用户直接提供的,还是用户提供纯代码文本,而用服务器端逻辑“着色”,在这里就统称为“服务器端”着色了。不过接下去的讨论,我们还是会作一些区分。 阅读全文

浅谈代码着色(上):客户端着色

2009-12-14 19:53 by 老赵, 7139 visits
摘要:作为程序员,写文章时总免不了插入代码,而对代码进行着色几乎已经成为一个基础,一个事实标准。代码着色的确可以大大加强代码的可读性,因此即便是再不待见IDE的朋友,代码着色永远是必不可少的。不过在网页中进行代码着色的方式有很多,现在我们就来对比一下。记得之前也有朋友写过,但我总觉得不够完整,于是还是自己写一下吧。我们先来看客户端的着色方式。 阅读全文

总结一下F#中运算符的定义规则

2009-12-14 01:46 by 老赵, 5228 visits
摘要:F#允许开发人员定义或重载各类运算符,合理利用这一规则可以让编程变得方便,让代码更容易阅读。例如,在使用F#的MailboxProcessor的时候,我会习惯于定义一个运算符来代替显式的Post操作。不过,F#的运算符定义规则较为复杂,要搞清楚编译器的整体处理方式着实花费了一番功夫。比较奇怪的是,即便是《Expert F#》中对于这个话题也没有详细的叙述——更夸张的是MSDN的文档也相当马虎,甚至有代码缺失以及与试验不符情况(因为还没有正式发布?)。于是我连看带试,最终打算总结一番,作为备忘的同时也算是补充互联网资源。 阅读全文

数十行F#打造简易Comet聊天服务

2009-12-11 12:00 by 老赵, 9601 visits
摘要:普通的Web应用程序,都是靠大量HTTP短连接维持的。如实现一个聊天服务时,客户端会不断轮询服务器端索要新消息。这种做法的优势在于简单有效,因此广为目前的聊天服务所采用。不过Comet技术与之不同,简单地说,Comet便是指服务器推(Server-Push)技术。它的实现方式是(这里只讨论基于浏览器的Web平台)在浏览器与服务器之间建立一个长连接,待获得消息之后立即返回。否则持续等待,直至超时。客户端得到消息或超时之后,又会立即建立另一个长连接。Comet技术的最大优势,自然就是很高的即使性。而F#实现一个Comet原型,只要几十行代码。 阅读全文

在项目中使用Google Closure Compiler

2009-12-09 09:13 by 老赵, 9193 visits
摘要:现在的Web项目总是离不开大量JavaScript,而JS文件的体积也越来越大,也越来越影响页面的感知性能(Perceived Performance)。因此,我们会对JS文件进行压缩,一方面是使用Gzip,而另一方面则是去除JS文件里的注释、空白,并且压缩局部变量长度等等。对于一些成熟的类库来说,它们本身都会提供“完整注释”以及“强烈压缩”两个版本。但是,有时候我们需要自己修复类库里的bug,这只能在注释版中修改,对于压缩版自然就无能为力了。此外,自定义的脚本文件一般也值得一压。因此我在项目中时常会备一个脚本压缩工具。 阅读全文

Route组件GetVirtualPath方法性能优化结果

2009-12-08 01:32 by 老赵, 5960 visits
摘要:由于使用Lambda表达式生成URL的方式性能较差,因此我使用Fluent Interface来代替原有的Lambda表达式构建方式。Fluent Interface主要对生成URL的前两个阶段(创建对象及分析对象)进行了优化,分别带来了超过2/3和1/2的性能优化,但因为最后一步,也就是使用Route对象的GetVirtualPath方法构造URL的性能没有提高,因此总体性能只提高了30%。于是我打算重新实现GetVirtualPath方法,希望得到更好的性能。那么优化的结果又如何呢? 阅读全文

真有必要去除HTML中的空白字符吗?

2009-12-07 17:59 by 老赵, 11128 visits
摘要:刚才有朋友在MSN上问我说,他的页面中有许多空白字符,打开源文件一看发现这代码稀疏得很。他觉得很浪费,他说有什么办法可以去除它们。我问他“你的页面使用GZip压缩了吗?”他说用了,于是我回答说“那么就不用去除空白字符了,连续空白字符压缩得很好,去掉后效果不大的”。这时我又不禁想到早上那篇《博客园首页优化心得》中也有一条是“去除HTML中的空格、空行”,于是我便打算尝试一下,去除空白字符到底有多少效果。 阅读全文

使用值类型LazyString分析字符串

2009-12-07 10:09 by 老赵, 6126 visits
摘要:.NET里提供了值类型与引用类型可谓是一个非常关键的特性,例如开发人员使用值类型时,可以充分控制内存的布局方式,这对于Interop等操作非常重要。不过,其实值类型最重要,最基本的特性还是内存分配上。现在基本上是个.NET开发人员就会叨念说“值类型”分配在栈上,“引用类型”分配在堆上。但是什么是栈什么堆?分配在栈上和堆上的区别是什么?如果说这两个问题太“理论”,那么来个实际的:您在平时什么情况下会使用,或者说,定义一个值类型呢?其实这才是重要的,否则背再多概念也没有用。只可惜从我面试的经验上来看,基本没有多少兄弟能把这些.NET基础完整说清楚。 阅读全文
1 2 Next >
使用Live Messenger联系我