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... 阅读全文

Angular2 初体验 2016-03-14

Angular2 已经发布 beta9 , 是时候折腾一下了。 Angular2 和 AngularJS 1.x 相比, 可以说是全新的框架, 除了名字有延续性之外, 能延续的真的不多。 准备开发环境 Angular2 通过 npm 发布, 因此推荐使用 node/npm 环境, 要开始使用 Angular2 , 先准备一个目录 learning-angular , 在这个目录中初始化项目: mkdir learning-angular cd learning-angular npm init 编辑生成的 package.json 文件, 添加 angular2 的 npm ... 阅读全文

多年前发表过一篇在 Windows 系统上配置 Apache Git 服务器的博文, 主要是用 Apache 的 Basic 认证 + git-http-backend 实现, 现在需要在公司的 vps 上再部署一个类似的简单 git 服务器, 这次的软件环境如下: Ubuntu 14.04.4 LTS nginx/1.4.6 (Ubuntu) git version 1.9.1 使用 git-http-backend 搭建 git 服务的原理都是类似的, 主要是利用 web 服务器 (apache/nginx) 进行用户认证, 并将用户信息传递给 CGI 程序 gi... 阅读全文

在计算机程序中, 规格模式是一种特殊的软件设计模式,业务规则可以使用布尔逻辑组成规则连而重新组合, 这种模式通常在领域驱动设计中使用。 规格模式描述的是一个业务规则可以和另外的业务规则聚合, 在这种模式中, 业务逻辑单元继承自可聚合的抽象规格基类类,该基类有一个返回布尔值的方法 IsSatisfiedBy 。 在初始化之后, 规格可以和其它规格进行逻辑组合, 使新的规格很容易维护, 实现高度自定义的业务逻辑。 规格模式的 UML 图如下: 实现代码如下: public interface ISpecification<TTarget> { bool Is... 阅读全文

分享一个自己写的 OWIN 静态文件处理中间件, 功能如下: 支持标准的 OWIN 环境, 跨平台运行 (.Net, Mono) 为 OWIN 环境开发, 只依赖 Owin.dll , 和具体的 OWIN 宿主无关, 可以在 .Net 和 Mono 环境下运行; 支持实体标签 (HTTP ETag) 实体标签 是HTTP协议提供的若干机制中的一种Web缓存验证机制,并且允许客户端进行缓存协商。这就使得缓存变得更加高效,而且节省带宽。(参考维基百科) 支持 Html5 路径模式 支持 AngularJS... 阅读全文