微软WPF开发、MVVM模式相关链接汇集

MVVM来自于blend以及相关应用的开发,架构师John Gossman http://blogs.msdn.com/b/johngossman/

最近一篇介绍文字 http://blogs.msdn.com/b/ivo_manolov/archive/2012/03/17/10284665.aspx

msdn magazine上一篇好文章 http://msdn.microsoft.com/en-us/magazine/dd419663.aspx

drwpf也有一些好文章 http://drwpf.com/blog/

msdnwebcast有一些中文的讲解 http://msdnwebcast.net/

codeproject上也有不少好文字 http://www.codeproject.com/Articles/23241/Using-MVC-to-Unit-Test-WPF-Applications

开源框架 http://mvvmlight.codeplex.com/

微软也有一个 prism http://compositewpf.codeplex.com/

http://waf.codeplex.com/

http://simplemvvmtoolkit.codeplex.com/

工具snoop http://snoopwpf.codeplex.com/

工具wpfinspector http://wpfinspector.codeplex.com/

UIspy http://msdn.microsoft.com/en-us/library/ms727247.aspx

wpf performance suite http://msdn.microsoft.com/en-us/library/aa969767.aspx

http://www.simple-talk.com/dotnet/.net-tools/essential-tools-for-the-wpf-novice/

http://www.japf.fr/2009/10/a-quick-tour-of-existing-mvvm-frameworks/

http://stackoverflow.com/questions/1409553/what-framework-for-mvvm-should-i-use

PyCon2012US视频土豆版本 (2)

建议Python爱好者都看看Pycon2012的视频,了解一下最新的Python技术走向。这次大会的趋势可以看出,PyPy,使用Python进行数据分析处理,都是非常热门的话题,值得跟进学习。

——-

Writing a Pyramid application

http://www.tudou.com/programs/view/j796pQbGObw/

PyCon US 2012 Keynote: Guido Van Rossum

http://www.tudou.com/programs/view/aLK4m554Xi4/

Optimize Performance and Scalability with Parallelism and Concurrency

http://www.tudou.com/programs/view/xrBFSnD5DiI/

Introduction to Django

http://www.tudou.com/programs/view/GGNiOZbU58g/

Coroutines, event loops, and the history of Python generators (前一篇搬运的有问题,这篇是真的协程相关)

http://www.tudou.com/programs/view/pXvseP8AZ-E/

Web Server Bottlenecks And Performance Tuning

http://www.tudou.com/programs/view/XsZQmS3GEhg/

Using Coroutines to Create Efficient, High-Concurrency Web Applications (这个是Pycon2011的,但是个人比较感兴趣)

http://www.tudou.com/programs/view/74FGsdgN37o/

Python Epiphanies

http://www.tudou.com/programs/view/HfqX2eM191U/

Introduction to Metaclasses

http://www.tudou.com/programs/view/ottmy9iN8jg/

Faster Python Programs through Optimization

http://www.tudou.com/programs/view/IhrWvFJXyJE/

Data analysis in Python with pandas (pandas是这次pycon提到次数很多的开源项目,数据分析,类似R语言)

http://www.tudou.com/programs/view/y98DW-ozM8I/

Deep Freeze: building better stand-alone apps with Python

http://www.tudou.com/programs/view/ZRthYFwEIWk/

Python Metaprogramming for Mad Scientists and Evil Geniuses

http://www.tudou.com/programs/view/RUlyraj3XQg/

MongoDB and Python

http://www.tudou.com/programs/view/neVA5E8h-1c/

Introduction to PDB

http://www.tudou.com/programs/view/dX4cLsRtv7o/

Build reliable, traceable, distributed systems with ZeroMQ

http://www.tudou.com/programs/view/BzhgPl4PwR8/

Storm: the Hadoop of Realtime Stream Processing

http://www.tudou.com/programs/view/q7KK9iLhh3w/

Pragmatic Unicode, or, How do I stop the pain?

http://www.tudou.com/programs/view/xpAQ600RjIk/

High Performance Python II

http://www.tudou.com/programs/view/ZgsNSfBbmfg/

How the PyPy JIT works

http://www.tudou.com/programs/view/H-rfk6YwYRw/

What’s New in Python on Windows

http://www.tudou.com/programs/view/4uEmZJjTWdU/

Introspecting Running Python Processes

http://www.tudou.com/programs/view/x56-bMrEJwM/

pandas: Powerful data analysis tools for Python

http://www.tudou.com/programs/view/ZmaS7o2D-Gc/

PBS KIDS: Building a login system for kids and teens in Python

http://www.tudou.com/programs/view/KLZPHedroFk/

Scalability at YouTube

http://www.tudou.com/programs/view/aANysxO7xJ8/

Throwing Together Distributed Services With Gevent

http://www.tudou.com/programs/view/z0WqbYZm_sk/

Social Network Analysis with Python

http://www.tudou.com/programs/view/UX1oBO5Ojpo/

How to get the most out of your PyPy

http://www.tudou.com/programs/view/eqJLjzmqw1E/

More than just a pretty web framework, the Tornado IOLoop

http://www.tudou.com/programs/view/A6tETpGgkbI/

 

Parsing Horrible Things with Python

http://www.tudou.com/programs/view/F_PAYrwZE-U/

Coroutines, event loops, and the history of Python generators

http://www.tudou.com/programs/view/QapjrUe9fTA/

Python, Linkers, and Virtual Memory

http://www.tudou.com/programs/view/4Ykjvlc2ndE/

Stepping Through CPython

http://www.tudou.com/programs/view/KtF0TiQTnXQ/

Why PyPy by example

http://www.tudou.com/programs/view/FTzL8bCSvOc/

================================

在这里感谢土豆网!!感谢牛芒视频!!!!!!!

微博上的@season仔 也把pycon2012的两段视频搬到国内:http://weibo.com/1690047645/y9yd7tjHb

http://v.youku.com/v_show/id_XMzY0NjIwNzc2.html High Performance Python II

http://v.youku.com/v_show/id_XMzY0NTg2MjA4.html High Performance Python I

 

PyCon2012US视频土豆版本

PyCon2012US的视频放在youtube上,不翻墙上不去,我找了个服务把视频搬家到土豆。

土豆有api支持,所以比较容易用脚本实现。其它的国内视频网站这方面都是渣啊。

——————————————————-

Parsing Horrible Things with Python

http://www.tudou.com/programs/view/F_PAYrwZE-U/

Coroutines, event loops, and the history of Python generators

http://www.tudou.com/programs/view/QapjrUe9fTA/

Python, Linkers, and Virtual Memory

http://www.tudou.com/programs/view/4Ykjvlc2ndE/

Stepping Through CPython

http://www.tudou.com/programs/view/KtF0TiQTnXQ/

Why PyPy by example

http://www.tudou.com/programs/view/FTzL8bCSvOc/

如何称量代码复杂度(C++/C#)

微博上的蛙蛙王子提出三个设想,发送给微博上一些知名程序员,惊悚的是,这三个问题我以前也考虑过还动手做过。这是巧合呢?还是巧合涅?

蛙蛙王子的问题是:是否有个工具可以检测出函数的长度?检测出函数中嵌套的层次?是否可以检测出重复代码?

基于我在罗克韦尔时写的一个Lua脚本经验来看,第一第二个问题非常容易。第三个问题稍有麻烦,有工具或者开源项目能做到,但是效果一般。

回到标题上的问题,称量代码复杂度,可以通过实现某个工具检测长度或者嵌套层次来完成,还有另外更简单的办法。

通常情况下,复杂代码所在文件大小也会比其他文件大出不少,所以不用编写什么工具,只要逐个察看项目中个头比较大的文件,就可以找到代码味道不好的地方了。

另外一个办法是通过版本控制工具,什么样的文件需要重构?基本上修改check in 次数多的文件,你要考虑重构了,即使代码味道不错,也肯定是责任过重,这个办法也很简单,把history导出统计一下就可以了。

如果通过判断函数长度和嵌套层次,建议大家可以这样实现,我考虑过C++的实现,算是比较完整,不需要什么编译原理知识。

函数长度和嵌套层次可以这样判断。前提1,我们可以确定C++中的{}成对出现;前提2,class可以通过关键字定位,而struct可以假定其中没有函数体,不需要判断;前提3,函数中的{}也一定是成对出现。至于其他的复杂问题,我觉得没必要考虑太多,除非你想做一个商用级别的软件,否则一个Python脚本就能搞定。

基于这些前提我们可以这样实现,先清理注释部分,C++注释分成// /*,另外对于/*要考虑单行和多行,基本上就是按行处理就行了。之所以这样,是为了防止注释部分包含{}或者特定关键字。

如果能找到class,判断类名,然后查找{。对于{}匹配,可以定义一个树形结构,函数或者类作为根,发现一个{,加入一层嵌套,发现一个},减去一层嵌套。如果嵌套层次为零(不在class定义体中),或者为一(在class定义体中,假定class的{}级别为0),那就是函数,稍微处理一下(),就能拿到参数,然后前面就是函数名字了。

这样按照文件处理逐个处理完,就能判断出那些函数,函数体多长,嵌套层次如何了。

针对C#,也可以这样处理,但是我猜测如果用Roslyn有更好的办法,可是没找到例子。

————-

另外一个问题是重复代码。有一些链接,比如 http://en.wikipedia.org/wiki/Duplicate_code http://pmd.sourceforge.net/cpd.html http://checkstyle.sourceforge.net/config_duplicates.html http://patterninsight.com/products/clone-detection/ http://stackoverflow.com/questions/546487/tools-to-identify-code-duplications

但是我感觉最好用的办法,是通过peer code review来检查,因为这一块对于算法而言,应该是实现难度挺大的,而且结果也不理想,review的方式基本上可以杜绝类似问题。我们之所以不用review方式解决代码长度和嵌套层次,是因为的确有办法实现。