Ubuntu 17.10 发布已经有一段时间了, 终于下定决心全新安装, 安装系统容易, 下载 iso 直接安装即可, 安装之后要配置自己习惯的桌面环境确需要不少的时间。 下面是安装后基本的折腾记录。 如果电脑是 EFI 启动的, 只需要把 iso 的内容复制到 U 盘根目录即可启动, 不需要在费心的去格式化做什么启动盘了, 真是省心! 清理不用的软件 删除 firefox , 因为我用 Chrome : sudo apt remove --purge firefox 删除亚马逊链接, 不知道为什么, Ubuntu 的所有版本中都有这个, 还不如给老马家带个链接有... 阅读全文

微软发布 .NET Standard 2.0 已经有一段时间了, 根据 .NET Standard 2.0 支持版本的文档, Mono 5.4 是支持 .NET Standard 2.0 的, 对于 .NET Standard 2.0 应用的开发的介绍, 几乎全部都是在 Windows 系统下使用 Visual Studio 2017 进行的, 而在 Linux 或 macOS 系统下使用 Mono 的介绍缺却少之又少, 本文就一一个简单的控制台应用为例, 介绍一下如何在 Mono 下如何开发 .NET Standard 2.0 应用。 由于 Mono 下没有内置 .NET Sta... 阅读全文

在 Docker Entry Script 详解中介绍了如何在 shell 脚本中响应 Unix 信号量来实现 Docker 应用优雅的关闭退出, 本文介绍 C# 程序如何在 Docker 中响应 Unix 信号实现优雅的关闭退出。 因为用 Mono 编译出来的程序可以完美的在 Linux/Docker 下运行, 所本文以 Mono 5.4 做为开发环境, 对应的 .Net Framework 版本为 4.6.1 。 假设现在需要运行一个定时任务的程序, 每隔一定时间输出一个 hello, world! ,我们使用 Quartz.Net 来完成这个任务, 代码如下所示: 首先来定义... 阅读全文

Dockerfile 的 ENTRYPOINT 与 CMD Dockerfile 有两个启动配置, CMD 和 ENTRYPOINT , 可以在 Dockerfile 中来配置容器启动时自动执行的命令, 但是这二者有什么区别呢, 接下来总结如下: 首先来看一下 CMD , 有三种格式的配置, 分别是: CMD ["executable","param1","param2"] (exec 格式, 推荐的格式) CMD ["param1","param2"] (作为 ENTRYPOINT 的默认参数) CMD command param1 param2 (shell 格式... 阅读全文

Dockerfile 的 ENTRYPOINT 通常是一个脚本文件, 用来启动和关闭 Docker 中的应用。 接下来就以 Linux 下常用的 Jexus 服务器为例, 来说明如何正确的启动和关闭 Docker 应用。 Docker 应用启动 根据 Jexus 的文档, Jexus 服务器启动只需要使用命令 /usr/jexus/jws start 即可, 所以启动非常简单, 只要定义一个函数来调用 /usr/jexus/jws start 即可: # a function to start jexus server function start_jws { /usr/j... 阅读全文

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