Unity3D 是一个基于 Mono 的跨平台游戏引擎,支持 PC 、MAC 、 Android 、IOS 等多种平台,其 3.0 以后的版本支持用 MonoDevelop 调试,很多人安装了之后发现 MonoDevelop 的调试按钮是灰色的,无法进行调试,通过看官方文档和测试,发现正确的调试步骤如下: MonoDevelop 的安装与设置: 下载并安装 Unity3D 以及其内置的 MonoDevelop ,一定要安装 Unity3D 安装包内置的 MonoDevelop ,MonoDevelop 官方下载的版本是没有 Unity3D 的调试插件的; 运行 MonoD... 阅读全文

翻译 CodeProject 上的一篇文章,对常见的几种表现模式 (Presentation patterns) 进行了说明,并进行对比。原文地址是 http://www.codeproject.com/KB/aspnet/ArchitectureComparison.aspx。 表现模式 (Presentation patterns) 背景 与用户界面 (UI) 相关的最大的问题就是大量的凌乱的代码,主要是由这两个因素造成的,首先是用户界面包含负责的逻辑用于维护界面相关对象,其次也包含了应用程序状态的维护。表现模式 (Presentation patterns) 就是围绕如何移除用... 阅读全文

在 Silverlight 中, 有两个比较重要的基础控件 UIElement 和 FrameworkElement, 如果你要开发自定义控件或者模版控件, 那么就可能要经常使用这两个基础控件, MSDN 中对这两个控件的描述如下: UIElement is a base class for most of the objects that have visual appearance and can process basic input in Silverlight. (UIElement 是 Silverlight 中具有可视外观并可以处理基本输入的大多数对象的基类。)... 阅读全文

.Net 4.5 提供了 async/await 让异步编程回归同步, 不过, async/await 不是只能在 .Net 4.5 下才能使用, 通过使用 Async Targeting Pack 就可以在 .Net 4.0 以及 Silverlight 5 项目中使用 async/await。 先来看一段 Silverlight 代码, 不使用 async/await 时是这样子的: private void DistanceTestButtonClick(object sender, RoutedEventArgs routedEventArgs) { // 假设这是用户输入... 阅读全文

开源项目中的一个 Silverlight 导航框架, 源代码已经发布到 GitHub, 地址为 https://github.com/beginor/AssemblyNavigation 特点 按需加载 Silverlight 组件 与 SL 内置实现了真正意义的按需加载, 主程序可以非常小, 最小不超过 200 KB, 只有当点击链接之后, 才会去服务端下载 对应的组件, 每个组件文件只会下载一次。 如果要下载的组件引用了其它第三方的组件, 也会自动下载第三方组件, 下载第这些 时会自动过滤掉重复的组件。 几乎零配置 使用这个导航框架几乎不需要在客户端或服务端做任何配置, 整... 阅读全文

在 .Net 开发中, 使用 Task 、 Task<T> 进行异步编程是非常方便的, 但是在处理 Task 产生的异常时, 需要注意一个问题, 比如下面的代码: static Task<int> TestAsync(int a, int b) { var tcs = new TaskCompletionSource<int>(); Task.Factory.StartNew(() => { if (a + b < 0) { tcs.TrySetException(new InvalidOperationException(... 阅读全文

.Net 传统异步编程概述 .NET Framework 提供以下两种执行 I/O 绑定和计算绑定异步操作的标准模式: 异步编程模型 (APM),在该模型中异步操作由一对 Begin/End 方法(如 FileStream.BeginRead 和 Stream.EndRead)表示。 基于事件的异步模式 (EAP),在该模式中异步操作由名为“操作名称Async”和“操作名称Completed”的方法/事件对(例如 WebClient.DownloadStringAsync 和 WebClient.DownloadStringCompleted)表示。 (EAP 是在 .NE... 阅读全文

原文作者乔纳森·丹尼可(Jonathan Danylko)是一位自由职业的web架构师和程序员,编程经验已超过20年,涉足领域有电子商务、生物技术、房地产、医疗、保险和公用事业。正如乔纳 森在文中所言,本文适合刚毕业的大学生和刚入门的程序员。如果你已是高级开发人员,或许你在本文中看到自己的身影。 从11岁时,我就一直在编程,并且一直都很喜欢技术和编程。这些年来,我积累了一些艰难又容易的经验。作为一名程序员,你或许还没这些经验,但我会把它们献给那些想从中学到更多的朋友。 我会持续更新这些经验,我可能还会有更多的感想,但就我这20年来看,我想下面这个列表中基本不需要增添额外的东西了。下面... 阅读全文

NHibernate 支持两种级别的缓存, 即一级缓存以及二级缓存。 一级缓存 一级缓存就是 ISession 缓存, 在 ISession 的生命周期内可用, 多个 ISession 之间不能共享缓存的对象, 通过 ISessionFactory 创建的 ISession 默认支持一级缓存, 不需要特殊的配置。 在 NHibernate 的参考文档中, 对 ISession 的描述如下: A single-threaded, short-lived object representing a conversation between the application and... 阅读全文

我依然记得当我完成学业时,我是多么的天真。那时我深信自己已经准备好进入任何一家软件公司,并开始成为一个顶级的开发人员。显然,开始工作后没多久我就意识到,还有很多事是我所不了解的。 在不断吸取经验的同时,我一直在努力学习那些我从来没有学过的,但却是成为优秀的开发人员所应了解的基本知识。以下是我希望自己能在学校就学到的10件事。 0. 我们总是错的 开发人员有着相当大的自我意识,包含了一些其他的非技术性缺陷,这也正是为什么我们很难发现我们做错了什么。我看到过很多无休止的设计讨论,开发人员不断地发表自己的想法……呵呵!猜猜怎样……我们都错了,唯一的区别就是我们犯错的离谱程度不同。 理解... 阅读全文

很多公司为了节省预算而选择外包IT相关的工作。这看起来不错,因为你打一个电话就有人过来帮你解决IT问题,而不用雇佣一帮人坐在那里等待问题,也不用担心福利,员工管理等问题。但外包也往往带来很多问题,这里列出了七条。 1. 真实的开销 在你选择外包IT任务的时候,有很多开销你可能没有考虑到。例如,当你预约外包公司的时候,他们会把外派人员的交通时间也算上。更糟糕的是外包公司派来的人无法解决你的问题,需要先学习的时候,你是付钱还是不付钱呢?你当然愿意让你自己的员工学习,但是外包的人员学完就走了,你是不是很不爽? 2. 及时性 当你有一个紧急任务要处理的时候,你必须等外包公司派人过来。首先... 阅读全文

.Net Reflector 的免费版本即将过期, 新版本开始收费, 现在运行 .Net Reflector 将会提示: 不过,已经出现了几款免费的替代产品可以使用, 虽然不及 .Net Reflector 成熟, 但是已经可以使用了, 它们是: dotPeek JetBrains 公司出品, 与 ReSharper 师出同门。 ILSpy iCSharpCode 团队出品, 这个团队开发了著名的 C# IDE SharpDevelop 。 JustDecompile Telerik 公司出品, 相信很多人都知道该公司的 Rad 系列控件。 MonoDevelo... 阅读全文