web.config中<remove assembly="*" />和<clear />的区别

ASP.NET窗体网站中,web.config system.web/compilation/assembly可以添加或删除该网站要使用的类库。常见的删除方法是调用<clear />指令,但是还有<remove>指令,并且在MSDN中出现了*参数的用法。<remove assembly="*" /><clear />到底有什么区别呢?

我并没有在MSDN中找到对<remove assembly="*" />的解释。但是通过查看.NET源代码发现了端倪。

根web.config(C:\Windows\Microsoft.NET\Framework\v4.0.30[......]

继续阅读

asp.net添加生成步骤

用过Gradle或Grunt的用户知道,构建项目时可以添加构建步骤;编译代码只是其中一步。比如,一次构建可包括以下几个步骤:编译代码、运行测试、压缩、上传服务器。

asp.net窗体网站能不能添加这样的构建步骤呢?

asp.net窗体网站,尤其在采用动态编译的部署方式时,对自定义构建的支持比较有限。

web.config的<buildProviders>配置节可以添加生成提供程序。(微软使用生成这个词,Java社区常用构建这个词)生成提供程序用于将非.cs、.vb扩展名的文件转换为C#或VB代码。这样的文件被称为非代码文件。在自定义生成提供程序时,最重要的工作就是实现Bu[......]

继续阅读

合并A到B是什么意思?

Git里我们经常创建分支最后将它们合并,但是合并A到B、合并B到A、把A和B合并在一起,这三种动作的意思相同吗?本文解释这个问题。

设当前分支为B,合并A。如果是快进合并,则A和B会指向同一提交。在可快进的情况下,合并A到B与合并B到A的效果相同。

但是如果不可快进,会产生一个新的合并提交,提交说明为merge a into b。合并提交有两个父提交,第一父提交来自当前分支,即B,第二父提交来自A。然后因为当前分支为B,B指针会移动到新的合并提交上。

搞清楚第一父提交和第二父提交对git svn有用,因为git svn dcommit会抛弃第二父提交,以便获得线性的svn历史[......]

继续阅读

git svn逐步获取旧历史

git svn克隆时可选择从svn的哪次提交开始克隆。如果svn仓库很大,git svn克隆就很慢。我们一般都会获取最近的svn历史,然后就开始工作。那么能不能在闲暇时间继续获取更久远的历史呢?本文提供一些方法。

方法一:变基

git svn先克隆最近的历史,如-r 29999:30010,假设30010为HEAD。设这个仓库为新仓库。

git svn克隆旧历史,如-r 20000:29998。设这个仓库为旧仓库。

当新仓库想要旧历史时,创建一个分支备份当前历史,新仓库开启后台服务进程,在旧仓库添加一个远端为新仓库,从中获取。

现在旧仓库有两个分支,分支A有r29[......]

继续阅读

版本控制中的三方合并

在学习Git时,一般会学到Git的合并方式,除了快进之外,还有三方合并(three way erge)。三方合并也是Subversion等传统版本控制软件的合并策略。本文讲解什么是三方合并,为何需要三方合并,为何不使用两方合并。

考虑以下两个分支,其中1bdd3be5d6c1b0e2为这两个分支的Git版本号

1bdd3be5
d6c1b0e2

1
2
3
4
5

5
4
3
2
1

要将他们合并,请问合并后的文件是什么样?

这里不能根据上下文语义确定内容,读者看到这里估计都[......]

继续阅读

如何在图中新增一条边,使任意两点的距离之和最小?

游戏《太阳帝国的原罪》里,瓦萨里种族可以建造相位跳跃稳定器,飞船可以直接从一个有相位跳跃稳定器的星球跳跃到另一个有相位跳跃稳定器的星球,无需现有路线。

如图1,粉色是我的星球。如何添加两个相位跳跃稳定器,能够最大程度地减少我方飞船在各个星球之间的飞行距离?

把上图数学化,如图2,红色是可以添加相位跳跃稳定器的星球,黑色是不能添加相位跳跃稳定器的星球。

解法

似乎除了穷举法没有更好的办法。于是我用Mathematica实现。


(* 定义可添加边的顶点和不能添加边的顶点 *)
colonizableVertices = {a, b, c, d,[......]

继续阅读

用chocolatey帮助重装系统

chocolatey是Windows下的软件管理器。

我重装电脑后一般都要装VIM、7zip、迅雷、AutoHotKey等等,每次都手工装有点麻烦。可以写一个chocolatey脚本自动化,这样就方便多了。可是重装电脑可能脚本也会被清除,所以脚本放github上,chocolatey先装git,然后从git上下载脚本再运行。

choco install git

hljs.initHighlightingOnLoad();

2017年手机选择心得

保修不需要太长。如果自带1年保修,就不用买额外的保修。因为现在手机更新换代很快,一年后又有新机了,如果老手机坏了就买新的。

操作系统

我2010年用过iPhone,对其客服不满意。一次,我发现一个iTunes的bug,打电话去报告bug,客服问我手机是什么型号,哪买的,有没有越狱。这跟iTunes的bug完全没有关系,那个bug在手机未连接时就可重现。另外iTunes臃肿缓慢,存取iPhone的文件和歌曲都很麻烦。不知道现在怎么样了。所以iPhone置后考虑。

Android

从前看过一篇文章,说选择手机其实是选想要哪家公司的服务,想要apple的服务就选iphone,[......]

继续阅读