在正文开始之前需要介绍一个人:Sean Sexton. 来自明尼苏达双城的软件工程师,对C#和WPF有着极深的热情。最为出色的是他维护了两个博客:2,000Things You Should Know About C# 和 2,000 Things You Should Know About WPF 。听到博客名字就懂这个人有多伟大了吧。他以类似微博式的150字简短语言来每天更新一条WPF和C#重要又容易被遗忘的知识。Follow他的博客也有一段日子了,很希望能够分享给大家。
本系列我不仅会翻译他的每一个tip,也会加入自己开发之中的看法和见解,希望能够以更贴近的语言来展示大师的风采。本系列我希望自己也能和他一样坚持下来,每天的进步才能促成伟大。
如果大家更想了解这个伟大的程序员,这个是访谈链接,他在访谈中有谈到自己生平和对编程相关学习的看法,我觉得对大家会帮助很大,有时间后面会出一篇翻译这个访谈的文章供大家阅读,希望大家能够关注。
在这里郑重说明.该系列是基于Sean Sexton先生的英文博客, 本人在此系列角色承担了翻译和备注的工作。
前文:<1-7>WPF, 渲染, 矢量, 布局, 样式, 模板, 命令
[小九的学堂,致力于以平凡的语言描述不平凡的技术。如要转载,请注明来源:小九的学堂。cnblogs.com/xfuture]
#8. Xaml和Code Behind
WPF应用是由前端代码Xaml(可扩展应用程序标记语言)和后台代码(托管代码)组成。标记性语言Xaml定义了UI的布局和外观,后台定义了行为和逻辑。WPF技术实现了UI和后台逻辑的分离。
Xaml是一个基于Xml的声明式标记语言编写的。Xaml中组织了所有的控件,以及他们的位置和父子关系。后端.cs托管代码描述了运行时UI的逻辑和行为。在编译阶段xaml和xaml.cs会编译为一个class, 所以xaml.cs你可以看出是patical的。
下面代码是一个Xaml布局的样例:
2 <StackPanel>
3 <Button Content="Save" Height="23" Name="btnSave" Width="75" Click="btnSave_Click" />
4 <Button Content="Load" Height="23" Name="btnLoad" Width="75" Click="btnLoad_Click" />
5 </StackPanel>
6 </Grid>
#9. 标记性语言的优势
使用标记性语言Xaml和后台代码Xaml.cs模型开发比一切都定义在代码中有着很多的优势。使用Xaml的好处有:
1. 可以在不影响控件行为的情况下更改用户界面的样式和用户体验。
2. 设计人员可以和开发同时工作,一个负责Xaml做用户界面, 一个负责撰写后台逻辑。分工两不误。
3. 微软提供了强大的设计工具Expression Design和Blend, 使用工具可以免写代码, 设计的界面可以直接导出成Xaml.
4. Vs2013已经和Blend做了很好的集成,可以更高效率的做设计和开发。
#10. 基于Page的页面导航
WPF应用程序可以用一些pages的集合以及其页面导航机制来进行构建。和WindowsForm的文档流式的模型不同,它拥有一个主窗体和一个可以弹出的提醒窗口。
如果想要创建一个基于Page的WPF程序,你需要定义一个Page来代替传统的Window:
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"深入SDN(一):如何去研究SDN&OpenFlow - 杨泽卫 阅读原文»
本文来自我在知乎上的回答:如何去研究SDN&OpenFlow?:对任何人来讲,时间才是最大的财富,每个人都应该把自己的时间投入到最有意义、最有影响的地方去。经过多年的学习、思考和实践,我认定这样一个规律:技术的发展不是均匀的,而是以浪潮的形式出现。每一个人都应该看清楚浪潮,赶上浪潮,如此,便不枉此生。
--《浪潮之巅》吴军
记得在孟岩的《一个“技术文化人”的片段感悟》中读到:程序员的进阶之道是“抬头看路,埋头赶路”。也许SDN的抬头看路已经相对清楚,更加需要的是埋头赶路。在开始之前请先看看:
怎样读论文-台湾彭明辉 (强烈推荐),因为后面需要阅读大量的SDN papers,几乎每一个课程开始都会提到:How to read a paper。
0.斯坦福Nick McKeown的一系列演讲:2008年的Why Can't I Innovate in My Wiring Closet?,2009年的Software Defined Networks,2010年的How should the Internet evolve?,2011年的How SDN will shape networking,2012年的Making SDNs Work。learning by evolution,Nick对OpenFlow&SDN一路过来的认识变化非常之重要,开始自己也觉得这部分内容地球人(当然包括我,自诩看了很多遍)都知道,但是后续遇到问题时才发现自己有多么可笑
1.普林斯顿的Jennifer Rexford,美女教授跟SDN渊源不浅,早期的RCP和4D这两篇论文,后者直接启发了OpenFlow的诞生,2008年OpenFlow和NOX的paper作者之一,随后的的Frenetic和Pyretic从给程序员提供便利性着手,个人理解是很有意思的方向,课程链接如下:COS-597E, Princeton University, Fall 2013内容比较全面,提供部分ppt下载,但是整体内容编排上分散。她的弟子Minlan Yu在南加州大学的课程:CSCI694b, Software-defined Networking,也是论文的归类,可以后续关注是否有lecture放出来
2.哥伦比亚大学的Li Erran Li,他的课程我个人认为最值得仔细学习,内容编排清晰明确,从SDN概述、基础概念、高级设计议题到所有应用领域的分析,课程链接:COMS E6998-8 Software Defined Networking
3.CMU的Vyas Sekar,此前在纽约石溪大学也开过SDN课程,研究SDN Middlebox的,没有课程ppt,只包括论文,但是可以了解内容编排:ECE739 Network Security and Management,之前的课程如下:CSE690-01, Stony Brook University, Fall 2013
4.以色列特拉维夫大学的Mooly,有少量课程ppt,整个课程还不太完善:Reasoning about Software Defined Networks
5.Nick Feamster在Coursera上的开放课程可以预约:Coursera.org,之前课程的视频YouTube SDN Playlist: Videos for all Nick feamster lectures.应该很精彩,视频课程感觉会收获最大。另外他的高级网络课程,非常完整,涉及网络的方方面面,全是视频,真实的课堂教学,推荐学习:CS 6250:Graduate Computer Networks,里面有SDN相关内容,也非常赞
6.苏黎世联邦理工学院的课程内容很丰富,推荐学习: Advanced Topics in Communication Networks HS 2013: Software-Defined Networking,尤其是其中包含了如何将可编程硬件应用到实现SDN数据面的问题,刚好一直在关注这个点。
7.布朗大学Rodrigo Fonseca的课程:CSCI2950-U Advanced Networking: SDNs and Datacenter Networking,主要是论文,课程ppt极少
8.威斯康星大学Aditya Akella's 的课程,推荐学习:CS838: Systems and Networking Challenges in Cloud Computing.从云计算历史,经济学,对应网络方面的详细解读,包括云计算对网络的需求,云应用,存储等,三分之一内容是SDN,有较多课程ppt
其他内容:
- NEC研究员Cristian Lumezanu的SDN readlist:SDN/OpenFlow reading list
- SDNCentral上的SDN/OpenFlow开源项目:SDN/OpenFlow Open Source Projects,非常全
- Searchsdn上推荐:
- 五个明星级SDN研究团队:Meet five software-defined networking research rock stars
- 十个值得关注的SDN博客:Ten SDN blogs worth following
- 十五个值得关注的SDN专家:15 SDN experts to follow on Twitter
如果要补充网络系统方面知识,相关课程有:
- 斯坦福的网络高级课程,之前是Nick McKeown和Martìn Casado带的:CS244: Advanced Topics in Networking,从lecture1中可以看出斯坦福这边对网络的理解,另外关于Switch的内容也不错,Nick之前也有如何设计Switch&Router的课程
- 美女教授Jennifer Rexford的COS-561:Advanced Computer Networks,推荐学习,从现代网络视角开始思考传统网络,绝对是学习SDN之前的有力补充
- Scott Shenker的计算机网络课程偏理论,可以作为参考,但是关于网络体系结构本身的思考还是比较有意思
如果要补充云计算和数据中心网络方面知识,相关课程有:
- 首推的就是上述8,威斯康星大学Aditya Akella's 的课程,再次推荐学习;
- 香港科技大学Kai Chen的Topics in Data Center Networking and Cloud Computing课程,侧重于数据中心网络,讲的比较全面;
- 华盛顿大学的Scalable Systems: Design, Implementation and Use of Large Scale Clusters课程,从分布式系统设计开始,MapReduce、Hadoop、BigTable,比较详细的呈现了Google的相关重要研究成果
- 康奈尔大学的Cloud Computing课程,罗列了云计算的诞生、怎样工作、应用、安全和设计等方方面面
- Google研究员Dennis Abts的《阅读更多内容
没有评论:
发表评论