利用Unity进行AOP编程: 拦截器实战(二)

前言上一篇文章里,我们介绍了Unity拦截器的基本概念,本编文章我们将利用它来进行实战。 在Unity Container中配置默认情况下,Unity Container不支持拦截器,因此我们得显式地将其加入到项目中,当然,首先得通过NuGet安装扩展包。12345using Microsoft.Practices.Unity.InterceptionExtension;...IUnityCont

Debian 8安装可能会出现的问题

apt-get提示磁盘插入apt-get时会出现类似以下错误Media change: please insert the disc labeled 'Debian GNU/Linux 7.3.0 _Wheezy_ - Official i386 DVD Binary-1 20131215-03:40' in the drive '/media/cdrom/' a

我的vim黑科技

用以记录我的vim技巧。 回到屏幕中间NORMAL模式下按zz,可以使当前光标所在行处于屏幕中间。 ctrl-o, zz在INSERT模式下,按ctrl-o将会回到NORMAL模式,此时将可以执行一次NORMAL命令,执行完毕后回到INSERT模式,可与zz配合使用 将外部命令执行结果放到当前文本中来试试1:.!ls1:.!dir 执行python代码在任何格式的文本中,想插入一些数据,只需写一小

个人开发者如何巧用消息队列

提起消息队列,我们很容易就想到redis,rabbitmq等在企业中很常用的消息队列。但是在“个人开发者”这个属性前提下,我们可能根本没有服务器去部署redis或者rabbitmq,即使有个vps/云服务器,也无法保证其稳定性——可能哪天嫌维护麻烦就直接停掉了。当我们开发一些有意思的小工具,并且需要用到消息队列时,往往会操碎了蛋。 今天我就介绍两种方案,寻找身边的资源做消息队列。 云盘前段时间我在

Restful api url设计建议

基本CRUDGET /users - 获取user列表GET /users/12 - 获取id为12的userGET /users/12/address 获取id为12的user的address字段GET /users/12?fields=id,name,address 获取id未12的user,并只返回id,name,address字段POST /users - 创建userPUT /users

利用Unity进行AOP编程: 概念介绍(一)

前言在读这篇文章之前,建议大家要对Unity容器进行依赖注入有一定了解与实践,并且了解一些常用的设计模式。这里我们主要介绍如何利用Unity进行AOP编程。面向 Aspect 的编程(AOP)是一种新的编程技术,它允许程序员对 横切关系(crosscutting concerns)(跨越典型职责界限的行为,例如日志记录)进行模块化。 横切关注点(Crosscutting Concerns)传统的程

利用反射映射数据库对象(二)

在上一篇文章里,我们里用反射,将数据库的查询结果集映射到对象中,以减少代码。现在我们就利用相同的原理来完成更新记录的操作。 更新记录时,我们需要知道表名,主键名,主键值,以及需要更新的字段信息。最初阶段,这些信息我们只要通过参数传递到方法中。1234public int Update(string tableName, string primaryKeyName, object entity)&#

在Docker中部署nodejs应用

介绍 & 安装关于Docker的介绍与安装,这里就不再细写,请利用搜索引擎,或者参考What is docker, 安装手册。为了方便,我直接在DigitalOcrean部署了一个docker环境。 获取应用代码准备一个应用,这里我用了一个简单的express应用,并侦听4000端口。https://github.com/NeilQ/cTemplate。将代码获取到本地目录,并进入。12g

web api 对[serialiable]特性的对象序列化问题

web api 2 中, 假如返回对象加了[serializable]特性,返回的json、xml数据都是包含对象的私有变量,而非公有属性,如:12345678910111213141516171819{ "Total": 1, "Data": [ { "_ticketnumber": "

gitlab 7.13 502 issue

单核服务器在gitlab重启之后常常会出现502错误,是因为”unicorn”启动比较慢,造成延迟引起的。我们可以手动执行以下命令解决:12sudo gitlab-ctl hup unicornsudo gitlab-ctl restart sidekiq

CentOS上安装配置MySql

安装并开启执行命令:12sudo yum install mysql-serversudo /sbin/service mysqld start配置安全信息:1sudo /usr/bin/mysql_secure_installation 设置iptables以启用远程登陆执行命令:12345iptables -A INPUT -p tcp --dport 3306 -m state --stat

web api 2 - 自定义help page的返回类型

当我们用HttpMessageResponse或者IHttpActionResult作为返回api的返回类型时,帮助页面的返回类型相应得也变成了HttpMessageResponse或者IHttpActionResult,而这不是我们所期望的Product、User等实际的返回实体。幸运的是,这是可自定义的, 简单得我都不好意思讲。 方法一(推荐)为方法添加一个属性[ResponseType(ty

利用反射映射数据库对象

12345678910111213141516171819202122232425262728public IEnumerable<User> GetUsers(){ var conn = ""; using (var sqlConnection = new SqlConnection(conn)) { using

如何让测试脱离vs跑自动化测试

为什么要脱离vs跑自动化测试?这本就是个矛盾的问题,负责自动化测试的Test必须要有阅读、审查、修改代码的能力,才能保证测试结果的有效性。但实际情况中测试人员普遍没有这种能力,有代码能力的测试要么在大公司,要么都转开发去了(吐槽)。在这种情况下,让测试去跑自动化,就如同一个不识字的少年捡到一本九阴真经秘籍,却因不识字而毫无用处。那么我们需要做的就是让秘籍变成图谱。 Visual Statio是开发

自动化测试思考

鉴于之前公司的测试经验,在加入新公司头半个月,Manager让我试着对现有业务建立自动化测试机制。于是便有了这篇文章,关于如何去做,如何做好自动化测试的思考。 Life is short, 我们直入主题。 了解系统层级,代码层级作为测试人员,我们首先需要知道系统的层级、架构,或者代码的层级,来规划测试管理方案。举个例子,作为一个web项目,假如说我们的系统分为WebUI,数据接口,DB。 Web

表值参数

表值参数(Table-value parameter)可以将.NET中的DataTable类与SQL Server Table类型进行映射,可以把多行数据作为参数传递到存储过程,进行批量操作。 简单举个例子,假如我们有这样一个表:123456CREATE TABLE [dbo].[People] ( Id INT IDENTITY PRIMARY KEY, Name NVARC

Python Web框架选择小记

前段时间用python flask写了个Markdown blog,初始选择平台及框架的时候,着实纠结了一番。今偶有所感,特此记录。 写这个blog程序初始目的是为了练手,当然,我必然是希望自己的作品能够实际部署的。由于不想折腾不成熟的mono,首先排除了专长技术Asp.net, 另外本人对Python十分喜爱,便把目光瞄向了一些Python的主流web框架:Bottle, Django, Fla

.NET性能之遍历List<T>

最近对.NET项目进行性能优化,在开启编译器优化的前提下,对List对象遍历的不同方式进行了简单的研究和对比,以此记录。首先我们创建两个不同类型的List对象,各自塞了5000000个简单元素:1234567var listInt = new List&lt;int&gt;();var listString = new List&lt;String&gt;();for (var i = 0; i