Fork me on GitHub

2012年9月25日

摘要: 引言:在我们的平常工作中,邮件的发送和接收应该是我们经常要使用到的功能的。因此知道电子邮件的应用程序的原理也是非常有必要的,在这一个专题中将介绍电子邮件应用程序的原理、电子邮件应用程序中涉及的协议和实现一个简答的电子邮件收发器程序。一、邮件应用程序基本知识1.1 电子邮件原理及相关协议 说到电子邮件的原理,其实和我们现实生活中寄邮件和寄包裹是一样的原理的。就让我们先回顾下现实生活中寄邮件的流程吧——首先,我们先写好信,信封上面写好收信人的地址,写信人的地址,然后把信放到寄信箱中,然后邮局的人会某个时候去这个信箱中的信取出来,然后邮局的人根据信封上写的收信人地址进行转发到当地的邮局,当地邮局然. 阅读全文
posted @ 2012-09-25 09:38 HackerVirus 阅读(334) 评论(1) 推荐(0)
摘要: 在我的上一篇博客中,我介绍了如何创建一个服务。创建好服务之后,接下来要做的就是对服务活动进行日程安排了(Schedule Service Activity)。我们从Service –> Service Calendar开始,点击Schedule。然后就弹出Schedule Service Activity的表单。然后选择Customers,选好了Customers后,Form Assistant可以帮助你看到Customers的喜好,比如他喜欢哪个Resource,或者喜欢什么时间接受服务。要注意的一点是,如果你选择了多个客户,Form Assistant给出的Customer Pref 阅读全文
posted @ 2012-09-25 09:36 HackerVirus 阅读(169) 评论(0) 推荐(0)
摘要: 自己动手写CAB(Composite Application Block) #1 —— 前言作者:Jeremy Miller 翻译:Yanwei昨天本人提出了一个不负责任的观点。这个观点是,如果你要写一个可维护的,复杂的WinForms界面,并不需要Composite Application Block(CAB)。我觉得,开发人员如果掌握了CAB的底层设计模式,并且挑选一个不错的IoC/DI工具,就可以开发一个满足需求的设计。我甚至感觉,这个开发人员,如果对CAB功能很熟悉,就能够很容易地开发出一个性能更好的设计。为了证明我的这个观点,并且满足很多人对这个主题的好奇心,我将把DevTech上关 阅读全文
posted @ 2012-09-25 09:35 HackerVirus 阅读(288) 评论(0) 推荐(0)
摘要: Trie树用来给字符串排序的时候有一个好处:边读边排序,但是读完之后要输出的时候麻烦来了。经过测试,用26W个word建立的Trie中,空白位是使用位的20倍左右,那么在Trie比较大的时候当然也就比较慢了。这篇文章讨论的优化主要是去避免访问这些空白位,实现方式无关(数组或指针?)。 首先想到的一个方法是:在insert的时候顺便标记这个节点有哪些子节点。因为总共只有26种可能性,那么自然也就想到了用一个int作为flag,如果0位置1则表示有‘a’这个子节点。 第一步(记录)完成了,下面我们来看如何来使用该记录?熟悉位移的同学可能已经想到:可以使用x&-x来计算出最低位为1的数。但是 阅读全文
posted @ 2012-09-25 09:31 HackerVirus 阅读(106) 评论(0) 推荐(0)
摘要: 1.软件架构设计作者: 温昱内容简介:本书紧紧围绕“软件架构设计”这一主题,立足实践解析了软件架构的概念、阐述了切实可行的软件架构设计方法、提供了可操作性极强的完整的架构设计过程。另外,本书从思维方式的突破、面向对象设计、UML建模、过程与管理等关键过渡环节,为广大程序员的成长提供了切中肯綮的指导。本书可作为计算机软件专业本科生、研究生和软件工程硕士的软件架构设计教材,也可作为软件开发高级培训、软件开发管理培训的培训教材,更是第一线高级开发人员和开发管理人员的必备参考书。作译者介绍温昱,资深咨询顾问,CSAI特聘高级顾问,软件架构专家,软件架构思想的传播者和积极推动者。十年系统规划、架构设计和 阅读全文
posted @ 2012-09-25 09:15 HackerVirus 阅读(439) 评论(0) 推荐(0)

2012年9月23日

摘要: 通用视图1. 前言2. 使用通用视图安全问题的题外话3. 用于显示对象内容的通用视图4. 通用视图的几种扩展用法4.1 自定义结果集的模板名4.2 增加额外的context4.3 查看结果集的子集4.4 更灵活的结果集操作4.5 利用通用视图做额外工作通用视图1. 前言回想一下,在Django中view层起到的作用是相当于controller的角色,在view中实施的动作,一般是取得请求参数,再从model中得到数据,再通过数据创建模板,返回相应响应对象。但在一些比较通用的功能中,比如显示对象列表,显示某对象信息,如果反复写这么多流程的代码,也是一件浪费时间的事,在这里,Django同样给我们 阅读全文
posted @ 2012-09-23 16:54 HackerVirus 阅读(227) 评论(0) 推荐(0)
摘要: 最近在研究Asp.net MVC, 打算在云平台上部署一个MVC的开源CMS Orchard学习一下,奈何Azure现在在国内不能注册,只能转到AppHarbor云平台上。以下是我尝试的如何使用AppHarbor部署Orchard CMS.一, 注册AppHarbor云平台, 创建一个Appliation和数据库环境1. 注册一个AppHarbor账号, 网址是https://appharbor.com/2. 创建一个新的Application, 这里我取的名字是orchard3. 在Add-ons中,为这个新的Application创建一个新的Sql Server数据库,使用免费的,10M空 阅读全文
posted @ 2012-09-23 16:53 HackerVirus 阅读(224) 评论(0) 推荐(0)

2012年9月22日

摘要: 今天我们来完善twitter应用。首先回到昨天的例子。var express = require('express')var app = express()app.get('/', function(req, res) { res.send('Welcome to Node Twitter')})app.listen(8000) 这里我们使用express模块来代替第一讲中使用的http模块,但其实express底层仍然使用到了http模块,它会帮我们完成服务器的创建和监听。完成express实例的创建之后,我们需要监听请求事件,这里我们使用ge 阅读全文
posted @ 2012-09-22 20:34 HackerVirus 阅读(167) 评论(0) 推荐(0)
摘要: 在上一篇随笔中,搭建了一个寄宿于控制台项目的wcf服务和客户端.今天晚上时间比较充裕,看了下wcf的消息交换模式,主要分为请求应答应答模式,就是平时说的半双工.还有一种交换模式为双工消息交换模式.就是我们说的全双工. 半双工通信只需要一个契约,因为是请求应答模式,只有一个情况,那就是客户端发送请求,服务端相应,一个契约足够....而全双工就不同了..客户端可以调用服务端,反过来服务端也能调用客户端...那么这就需要两个服务契约,其中一个便是回调契约.CallBackContract~~~ 为了方便起见,我还是在原来的代码上进行了修改,因为是双向通信,这其中就要存在一个会话,原来的绑定模式... 阅读全文
posted @ 2012-09-22 20:33 HackerVirus 阅读(650) 评论(0) 推荐(0)
摘要: 学习VIM (视频)经过4-5年的摸索, 总结出几条经验.## 4 Modesvim一共有6+6种不同的mode, 可以使用`:help vim-modes`查看帮助文档.需要熟练掌握的有4个: ㈠Normal, ㈡Visual, ㈢Insert, ㈣Cmd-line.其他几个也要了解, 我个人常常用到㈤Replace. 另外需要知道怎样退出㈥Ex.这是基础!## Motion在熟练使用vim前, 首先需要熟练掌握大约50个移动光标的快捷键.这些快捷键, 完美地对称布局, 粒度由细到粗, 距离由近及远.真正的vim爱好者快速/精准地移动光标, 绝对不会多按一个键.死记硬背, 事倍功半. 只有理 阅读全文
posted @ 2012-09-22 20:33 HackerVirus 阅读(227) 评论(0) 推荐(0)