当 WebAPI 调用 Controller 上的方法时, 必须为其参数赋值, 这个过程就是参数绑定。 本文介绍 WebAPI 如何绑定参数, 以及如何进行自定义。 WebAPI 默认使用下面的规则进行参数绑定: 简单类型, WebAPI 尝试从 URL 中获取它的值。 简单类型包括: .NET 原始类型(int、 bool、 float、 double 等); 以及 TimeSpan 、 DateTime 、 Guid、 decimal 和 string; 提供了类型转换器 (Type Converter), 能够从字符串转换的类... 阅读全文

使用 docker run 运行镜像 要运行一个 docker 镜像, 通常都是使用 docker run 命令, 在运行的镜像的时候, 需要指定一些参数, 例如:容器名称、 映射的卷、 绑定的端口、 网络以及重启策略等等, 一个典型的 docker run 命令如下所示: docker run \ --detach \ --name registry \ --hostname registry \ --volume $(pwd)/app/registry:/var/lib/registry \ --publish 5000:5000 \ --restart ... 阅读全文

安装 Docker 环境之后, 可以开始下载和运行 Docker 镜像了, 比如要下载一个 nginx 服务器, 只要输入下面的命令: docker pull nginx:alpine 就能下载到基于 alpine 的最新版本的 nginx 服务器镜像, 然后再输入: docker run \ --detach \ --name nginx \ --volume $(pwd)/nginx/conf.d:/etc/nginx/conf.d:ro \ --volume $(pwd)/nginx/html:/usr/share/nginx/html \... 阅读全文

Docker 简介 Docker 是一个开源的应用容器引擎, 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中, 然后发布到任何流行的 Linux 机器上, 也可以实现虚拟化。 容器是完全使用沙箱机制,相互之间不会有任何接口。 Docker 的理念是交付运行环境如同海运, OS 如同一个货轮, 每一个在 OS 基础上的软件都如同一个集装箱, 用户可以通过标准化手段自由组装运行环境, 同时集装箱的内容可以由用户自定义, 也可以由专业人员制造。 这样, 交付一个软件, 就是一系列标准化组件的集合的交付, 如同乐高积木, 用户只需要选择合适的积木组合, 并且在最顶端署上自己的名... 阅读全文

Angular 2 已经发布了 2.1.2 版本, 相信很多人已经在使用(试用)了, 相比 AngularJS 1.x , Angular 2 在性能上有了长足的进步, 同时 Angular 2 也变得非常的庞大, 动辄几兆的脚本, 如何部署到生产环境? 接下来就介绍如何为生产环境编译 Angular 2 应用, 在本文中, 我们将 Angular 2 官方文档中的 Hello Angular 应用编译到 50K 以下, 以用于生产环境。 未经优化的应用 根据 Angular2 官方的 QuickStart 快速创建一个 Hello Angular 应用, 在没有任何优化的情况下, ... 阅读全文

Xamarin 官方源里面的 MonoDevelop 版本是 5.10 ,与官方发布的 Xamarin Studio 6.1 相比, 很多新特性不支持, 主要包括: 对 C# 6 语法支持的不够完善; 不支持 NUnit 3; 不支持 roslyn 编译器; 搜遍了官方的源, 包括 alpha 、 nightly 、 ci 通道, 都找不到编译好的 MonoDevelop 包, 在 launchpad 上也找不到第三方的 ppa 源, 看来只能自己动手编译 MonoDevelop 了。 如果还没有安装 Mono , 则需要添加 Xamarin 的 apt 源, 代码... 阅读全文

最近 angular-ui 团队终于正式发布了基于 Angular 2 的 Bootstrap 界面库 ng-bootstrap , 工作中一直用 AngularJS 1.x 的 UI Bootstrap , 因此对这个 ng-bootstrap 也是很感兴趣, 第一时间进行试用。 准备 Angular 2 环境 ng-bootstrap 是基于 Angular 2 的, 因此需要先准备 Angular 2 的环境, 参考 Angular 2 的 5 MIN QUICKSTART 配置好 Angular 2 的环境, 这一步已经有了详细的说明, 就不在啰嗦了。 使用 ng-boot... 阅读全文

Windows 上也有很多优秀的工具软件是 Mac 上没有的, 装虚拟机的话太浪费, 而且效率不高, 幸好可以通过 Wine 来运行 Windows 程序, 通过 HomeBrew 使得 Wine 的安装非常容易, 通过 WineTricks 来配置 Wine 也没有多大困难, 下面是我在 Mac 上安装和配置 Wine 的纪录。 安装 Wine 和 WineTricks 这一步推荐通过 HomeBrew 进行安装, 命令如下: brew install wine brew install winetricks 装完之后先运行一下 winecfg 命令, 初始化配置, 什么也... 阅读全文

微软在 OWIN 框架中对 OAuth 认证的支持非常好, 使用现有的 OWIN 中间件可以做到: 使用 Microsoft.Owin.Security.OAuth 搭建自己的 OAuth2 服务端, 没做过的可以参考这个简单教程: 使用 OWIN 搭建 OAuth2 服务器 ; 使用 Microsoft.Owin.Security.Facebook 连接 Facbook 认证, 让用户使用 Facebook 帐户来登录; 使用 Microsoft.Owin.Security.Google 连接 Google 认证, 让用户使用 Google 帐户登录; 使用 Mic... 阅读全文

前段时间在使用 Nginx 和 Git 搭建了一个简单的 Git 源代码服务器, 随着项目的增多, 管理起来有些不便, 于是打算再安装一个 GitLab CE 作为内部的源代码管理服务器。 准备操作系统 操作系统用的是最新发布的 Ubuntu 16.04 LTS, 这个也是 GitLab 的安装文档中推荐的操作系统。 新建虚拟机, 全新安装 Ubuntu 16.04 LTS , 一切都顺利。 安装 GitLab CE GitLab 有两种安装方式, 分别是从源代码安装和用 deb 软件包安装, 如果打算进行二次开发的话, 可以考虑从源代码安装。 不过对我来说, 不打算进行二次开发... 阅读全文

Controller 在 AngularJS 应用中可以说是无处不在, 可以在 html 中通过 ngController 指令来指定 Controller , 语法为: <ANY ng-controller="expression"> ... </ANY> 在 ngRoute 模块中使用, 语法为: $routeProvider .when('/my-url', { controller: 'MyController' }); 在 ui.route 模块中使用, 语法为: $stateProvid... 阅读全文

在 TypeScript 中, 经常要使用 export 和 import 两个关键字, 这两个关键字和 es6 中的语法是一致的, 因为 TypeScript = es6 + type ! 注意: 目前没有任何浏览器实现 export 和 import ,要在浏览器中执行, 必须借助 TypeScript 或者其它的转换器! export export 语句用于从文件(或模块)中导出函数, 对象或者基础类型, 语法如下: export { name1, name2, …, nameN }; export { variable1 as name1, variable2 a... 阅读全文