摘要: 创建带工作区的版本库 在开始一个新项目时,首先就要创建并初始化代码库。如果是在本机的工作目录中,那么: 也就够用了。如果想要初始化的版本库不在当前目录,需要为 git init 命令指定版本库所在的目录: 执行完命令,在当前目录或您指定的目录下会创建一个名为 .git 的目录,这就是版本库了。 带工 阅读全文
posted @ 2016-11-06 18:48 sparkdev 阅读(17659) 评论(4) 推荐(6) 编辑
摘要: 最近更新了一个下载小工具,主要提升了下面几点: 1. 在一些分公司的局域网中,连接不上外网 2. 服务器上的文件更新后,下载到的还是更新前的文件 3. 没有下载进度提示 4. 不能终止下载 下面和大家分享一些心得。 鉴于各种复杂的网络环境,笔者决定采用不同的编程接口进行下载尝试,以增加程序的可用性。 阅读全文
posted @ 2016-11-04 23:00 sparkdev 阅读(20583) 评论(8) 推荐(10) 编辑
摘要: 前面我们已经创建了TeamCity Server 和一个 Agent,接下来我们为一个.net core 控制台程序配置自动化的编译。 创建 .net core 项目 我们在本地创建一个简单的 .net core demo程序 hello (这里假设您已经安装了.net core 的 SDK): 如 阅读全文
posted @ 2016-10-29 10:02 sparkdev 阅读(21260) 评论(10) 推荐(14) 编辑
摘要: 以太网的数据链路层 在数据链路层,以太网负责以太网编址,这通常称为硬件编址或 MAC 编址。以太网还负责把来自网络层的分组封装成帧。 以太网编址 以太网编址使用固化在每个以太网网卡(NIC)中的 MAC (Media Access Control,介质访问控制)地址。MAC (硬件)地址长 48 位 阅读全文
posted @ 2016-10-22 11:42 sparkdev 阅读(7183) 评论(4) 推荐(5) 编辑
摘要: Overview OSI规范的作用之一就是帮助在不同的主机之间传输数据。 OSI模型包含7层,它们分为两组。 上面3层指定了终端中的应用程序如何彼此通信以及如何与用户交流; 下面4层指定了如何进行端到端的数据传输。 上三层对联网和网络地址一无所知,那是下面4层的职责。 下面4层定义了数据是如何通过物 阅读全文
posted @ 2016-10-18 22:35 sparkdev 阅读(7371) 评论(3) 推荐(5) 编辑
摘要: 在编程的过程中,我们会遇到很多需要异步操作的场景。比如要下载一个文件,如果使用同步的方式进行下载,那么UI操作就会被卡住,这时最好能够使用异步的方式进行下载。在C#中,很早就开始支持异步的操作了,只不过早期的方法写起来有些麻烦。到了C# 5.0的时候,直接添加了两个关键字:async 和 await 阅读全文
posted @ 2016-10-08 13:16 sparkdev 阅读(10192) 评论(3) 推荐(7) 编辑
摘要: 有时候我们需要在程序中执行另一个程序的安装,这就需要我们去自定义 msi 安装包的执行过程。 需求 比如我要做一个安装管理程序,可以根据用户的选择安装不同的子产品。当用户选择了三个产品时,如果分别显示这三个产品的安装交互 UI 显然是不恰当的。我们期望用一个统一的自定义 UI 去取代每个产品各自的 阅读全文
posted @ 2016-10-05 17:37 sparkdev 阅读(10488) 评论(9) 推荐(9) 编辑
摘要: 笔者在前文中介绍了 TeamCity Server 的安装过程,本文介绍在 Ubuntu Server 14.04 中安装 TeamCity Agent。Ubuntu Server 上已经创建了用户 tcuser。 安装JDK 请参考笔者之前的博文《Ubuntu14.04安装JDK》安装 JDK。 阅读全文
posted @ 2016-10-04 22:03 sparkdev 阅读(18385) 评论(7) 推荐(11) 编辑
摘要: 本文介绍在 Ubuntu Server 14.04 中安装 TeamCity Server 10.0.1。Ubuntu Server 上已经创建了用户 tcuser。TeamCity 的安装包为 TeamCity-10.0.1.tar.gz,使用 Postgresql 9.4 代替 TeamCity 阅读全文
posted @ 2016-10-01 20:17 sparkdev 阅读(20027) 评论(16) 推荐(18) 编辑
摘要: 在C#程序中,经常会有一些耗时较长的CPU密集型运算,如果直接在 UI 线程执行这样的运算就会出现UI不响应的问题。解决这类问题的主要途径是使用多线程,启动一个后台线程,把运算操作放在这个后台线程中完成。但是原生接口的线程操作有一些难度,如果要更进一步的去完成线程间的通信就会难上加难。 还好 .NE 阅读全文
posted @ 2016-09-25 17:26 sparkdev 阅读(73835) 评论(23) 推荐(38) 编辑