理解得越多,需要记忆的越少

2018-01-26
IIS 7 里设置 SSL 绑定的 Host Name

公司里上线了 Azure 服务器,需要给它的 IIS 设置 SSL 绑定。设置过程相比 Tomcat 还是什么的容易太多太多了。不过有一个奇怪的问题,在绑定 SSL 的通用证书的时候, Host Name 一栏灰掉不可用了,没有办法输入绑定的域名。

一顿搜索之后,发现只要给我的证书设置一个“*”开头的 Friendly Name 就行。方法是:

  1. 运行 mmc.exe
  2. 点击 File 菜单,选择 Add/Remove Snap-in
  3. 在弹出的窗口的左边 “Available Snap-ins” 一栏选择 Certificates,点 Add >
  4. 又弹出一个窗口 “This snap-in will always manage certificates for”,选择 Computer Account,然后点 “Next”
  5. 又又弹出一个窗口 “Select the computer you want this snap-in to manage”,选择 Local Computer
  6. Certificates snap-in 设置完成,点 OK
  7. 展开 Certificates 节点,找到你的证书,选中你的证书然后右键菜单选择 Properties
  8. 在弹出的属性对话框的 Friendly name 一栏输入一个 *(星号)开头的名字,点 OK确定。
  9. 重新打开 IIS 的绑定编辑窗口,重新选择我们的证书,这时候 Host Name 一栏已经可以编辑了。
阅读此文

2018-01-19
如何在创建 7z 压缩包的时候不要包含进当前目录

假设我们有如下目录结构:

我们使用以下 7z 命令行创建压缩包:

1
2
cd Folder1
7z.exe a MyFile2.7z Folder2\*

这里我们使用 Folder2\* 指定我要将 Folder2 目录里的所有内容加入到压缩包。执行完毕后,打开压缩包查看压缩内容时发现:

Folder2 目录也包含到压缩包里了,这不是我希望的。怎么才能把 Folder2 目录排除在外,只保留 Folder2 目录里面的内容呢?只要在路径前面加个 .

1
2
cd Folder1
7z.exe a MyFile.7z .\Folder2\*

再次检查生成的压缩包:

这次正是我期望的结果。

阅读此文

2017-12-29
使用快照快速备份和还原数据库

最近在研究自动部署的问题。其中一个需求是能否对数据库进行快速地备份和还原操作。传统的完全备份和还原非常耗时,不太可取,我知道自从SQL Server 2005 以来,SQL Server 提供了快照功能,可以快速建立起一个只读快照,那么我们能否把这个快照作为备份并用来还原数据库呢?答案是:可以!不过这种备份、还原方式有若干限制,比如,需要还原的数据库必须只有一个快照,其它限制我也忘了,似乎对我不构成问题。下面来具体说明如何操作,假设我们打算对数据库 MyDb 创建一个快照 MyDBSnapshot,我们还假设数据库只有一个逻辑数据文件。

阅读此文

2017-12-29
从字符串中提取数字的 SQL 函数

一个从字符串中提取数字的函数:

1
2
3
4
5
6
7
8
9
10
CREATE FUNCTION [dbo].[GET_NUMBER](@S VARCHAR(100))
RETURNS VARCHAR(100)
AS
BEGIN
WHILE PATINDEX('%[^0-9-.]%',@S) > 0
BEGIN
SET @S = STUFF(@S, PATINDEX('%[^0-9-.]%', @S), 1, '')
END
RETURN @S
END

用例:

1
2
3
SELECT dbo.GET_NUMBER('1q2W399E4987r')

-- 得到结果: 123994987
阅读此文

2017-12-22
阻止 RDLC 报表文件被 aspnet_compiler 预编译

在使用 aspnet_precompiler 对 ASP.NET WebForm 网站进行预编译时,如果网站内含有 RDLC 报表文件,它们也会被“预编译”而导致报表文件的内容被清空变成只有 1k 大小的 marker 文件。这会导致 Report Viewer 无法显示报表。怎样才能阻止 aspnet_compiler 编译 RDLC 文件呢?很简单,打开 web.config 文件,会发现如下设置:

1
2
3
4
5
6
7
<configuration>
<compilation debug="true">
<buildProviders>
<add extension=".rdlc" type="Microsoft.Reporting.RdlBuildProvider, Microsoft.ReportViewer.WebForms, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
</buildProviders>
</compilation>
</configuration>

我们要做的就是去掉这个针对 .rdlc 的 build provider. 去掉之后再编译就会发现 RDLC 文件已经原封不动得复制到了输出目录。

阅读此文