摘要: 在WCF Service Application中加入<enableWebScript><system.serviceModel> <behaviors> <endpointBehaviors> <behavior name="ajaxbehavior"> <enableWebScript /> </behavior> </endpointBehaviors> </behaviors> <services> <service name="J 阅读全文
posted @ 2011-02-27 00:06 dragonpig 阅读(478) 评论(0) 推荐(0) 编辑
摘要: Download [memcached.exe] [gui] and [.net lib]memcached-1.2.6-win32-bin.zip Memcached ManagerMemcached .NET client Library Add reference\trunk\clientlib\src\clientlib\bin\2.0\Release\Memcached.ClientLibrary.dll[代码] 阅读全文
posted @ 2011-02-18 18:09 dragonpig 阅读(290) 评论(0) 推荐(0) 编辑
摘要: node.js是由Ryan Dahl编写的服务器端js framework,其初衷是为了编写更为高效的web服务器。它的亮点在于1. 使用当前最快的google v8 js engine2. 单线程。因为不需要考虑并发,所以也就没有了锁和阻塞的概念,大大简化编程。3. 事件回调模型。所有的异步操作,比如数据库访问都是通过事件触发的。4. 完全发挥javascript作为动态解释语言的强大威力。开发人员可以自由的使用一切特性比如closure,并且不需要担心跨浏览器支持(因为是服务端)你可能会问单线程怎么处理多用户请求呢?事实上Ryan观察到web访问的一个事实:每次web请求服务周期最耗费时间 阅读全文
posted @ 2011-02-14 23:24 dragonpig 阅读(2972) 评论(2) 推荐(6) 编辑
摘要: Silverlight中有Logic Tree和Visual Tree之分。比如在Xaml中定义了所有UI的logic结构,相当于模型。而运行时,显示的是UI的实际的物理结构。举个例子Button实际上是由更细粒度的UI如border和rectangle绘制成的。这里教大家制作一个 Inspector来动态检查Visual Tree的结构。先看一下实际效果(请按Inspect按钮):效果不错,感觉有firebug的风范 :) 接下来看看关键技术。高亮显示。很简单就是一个红色的Rectangle,当鼠标移动时把它放在当前UI Element的位置,设置相应的Position和Size就OK了。如 阅读全文
posted @ 2011-02-12 02:11 dragonpig 阅读(2178) 评论(7) 推荐(5) 编辑
摘要: 吃饭的时候同事出了道趣味题助兴:[代码]第一反应就是1/4啊,另外一个是儿子应该是独立事件么。然而答案居然是13/27,一个非常奇怪的数字。原来这个概率跟星期几出生也有关系。这个问题可以通过穷举法解释,请看这里。英文版看这里。老外超级认真额,图示版其实我们用归纳法就比较容易理清思路了。首先等价转换一下题目,‘把周二出生’,改成有一个男孩生在二号箱子(总共七个箱子,不要管人道不人道了)。如果箱子只有一个,答案应该是1/3,因为只有三种情况,(男男,男女,女男)。如果有两个箱子的话,第一个男第二个女共有2种情况,1[男女][]和2[男][女]。所以第二个男第一个女也有2中。两个都是男生有三种1[男 阅读全文
posted @ 2011-01-31 23:22 dragonpig 阅读(4714) 评论(80) 推荐(4) 编辑
摘要: 更新:感谢Dacey 韦恩卑鄙 dudu老大等人的建议我已添加了扩展方法版本。喜欢扩展方法这种空降兵的感觉 :)数据绑定似乎是ASP.NET老掉牙的东西了。可是你知道吗,只需要一点小小的改动就可以替换Eval,摆脱字符串依赖并且大大提高性能。首先在code behind中加入以下方法[代码]这段代码就是最核心的秘诀了,你完全可以忽视它到底在做什么。其实就是截获每一个被绑定的数据项,并进行强类型转换... 阅读全文
posted @ 2011-01-29 22:50 dragonpig 阅读(9845) 评论(31) 推荐(40) 编辑
摘要: 各位不明真相的围观群众大家好,我承认自己有些标题党了,其实真正的题目应该是‘使用.NET4的dynamic类型与json数据相互映射’ :) (可是这个名字未免也太撮了点).NET4之前,数据的序列化都是基于某个具体类型,比如先要定义一个C# class,然后attribute,serializer... javascript则是动态语言,可以动态变化自己的属性(所谓的expando对象)。我们创建一个js对象var obj={}之后可以不断增加新属性,如obj.color='red'。正是由于类型是个弱化的概念,所以js常被称为object-based(基于对象)而非object-orien 阅读全文
posted @ 2011-01-29 03:23 dragonpig 阅读(2404) 评论(7) 推荐(8) 编辑
摘要: 很多游戏都用雷达图来表示角色的能力值,比如主角的体智敏贤。接下来介绍一下我做的Silverlight雷达图还包含了动画功能。虽然很简单,但不失为一次很好的Silverlight开发体验。示例:首先创建一个叫Star的UserControl,作为独立可重用的组件。不需要改动前端的XAML Code,所有的绘画动作都有后台代码完成。假设现在是一个五星图,绘制五个端点的逻辑其实就是从正上方的点开始,每隔360/5放置下个点。Silverlight有一个多边形的类Polygon可以很好的完成任务。可是这里选用更加通用的Path类主要是为动画效果,由于Polygon的端点无法绑定到Storyboard, 阅读全文
posted @ 2011-01-28 02:16 dragonpig 阅读(4799) 评论(7) 推荐(5) 编辑
摘要: 当年Java批判C++过于臃肿和迷宫般的语法特性,摒弃了一大堆东西包括运算符重载。ThinkingInJava一书中好像有对此事的评价,从负面讲,运算符重载的滥用容易导致语义的混乱,例如apple+person就很难推测出其背后的意图。但是没有它,像复数类Complex的四则运算就显得十分繁琐。运算符重载到底是不是鸡肋呢?个人觉得运算符重载还是有很多用武之地的,尤其适用于和数值相关的场景。下面介绍一个我遇到的案例。现在定义了一批0到1的数值:代码Discount(折扣)显然是0到1之间的某个值否则抛出异常。现在比较一下使用运算符重载之后的效果。代码这里用到了隐式类型转换也是运算符重载的一种。显 阅读全文
posted @ 2011-01-17 14:52 dragonpig 阅读(1948) 评论(7) 推荐(0) 编辑
摘要: 随机排列是个很常用的算法,比如洗牌。算法思想很简单,比如有一副整理好的牌,每次随机抽取一张最后就组成一副随机的牌了,并且可以证明所有可能性的排列是等概率的。但是该算法的空间复杂度是O(n),如果每次抽牌都插入到头部,则最坏情况下的时间复杂度是O(n*n)。参考Introduction to Algorithm 5.3的算法,其实对第二种方法稍作改进就可以达到O(n)。算法如下:保持头部的以抽取队列,以及尾部的为抽取队列,一开始头为空,尾为满。从尾部随机抽牌,与尾部第一张交换,头部加一,尾部减一直到尾部为空以下是javascript代码[代码] 阅读全文
posted @ 2011-01-16 00:00 dragonpig 阅读(931) 评论(0) 推荐(0) 编辑