Category: 日常开发工作
-
[C#]让String.Contains忽略大小写
在C#里,String.Contains是大小写敏感的,所以如果要在C#里用String.Contains来判断一个string里是否包含一个某个关键字keyword,需要把这个string和这个keyword都转成小写再调用contains,效率较低。 比较好的一个方法是用String.Index()方法,然后通过StringComparison.OrdinalIgnoreCase指定查找过程忽略大小写,代码示例如下:
-
MSDN错误一则
今天在写脚本创建给SCVMM用的WIN8 VHD镜像文件。基本流程是先用diskpart创建好固定大小的vhd文件,然后用imagex.exe把Windows安装包里的WIM文件解压到这个vhd文件里,最后通过bcdboot来添加一个启动方式。 脚本写好后测试一下发现,生成的vhd大小不对,生成出来的vhd是动态扩展的,不是固定大小的。最后发现原来这是MSDN文档的一个bug,在http://technet.microsoft.com/en-us/library/gg318052(v=ws.10).aspx里的To create and configure a VHD这一段写着If you do not specify the type=expandable parameter, DiskPart will create a fixed VHD。这里的文档其实是错误的,如果你不指定type=expandable的话,diskpart会默认创建动态扩展的vhd文件。要创建固定大小的vhd,必须显示的指明type=fixed。
-
SQL Server数据库全表替换
Team里的文件服务器升级后换了名字,这个UNC地址在我们的一个门户的SQL Server数据库里某个表中被多条记录引用,所以需要在SQL Server的表里做个全表的替换,把所有记录中出现的UNC换成新的地址。在SQL里,这可以通过一句简单的SQL语句完成。下面便是一个把数据库里某个字段里的所有出现的oldstring批量替换成newstring。 UPDATE [table] SET [column] = REPLACE([column], ‘oldstring’, ‘newstring’) 运行前记得讲其中的table,column,oldstring,newstring换成你的表名,列名,要替换的字符串,新字符串。
-
无法遵循符号链接,因为其类型已禁用
今天从其他部门的文件服务器拷贝文件的时候,突然遇到如下错误 无法遵循符号链接,因为其类型已禁用 仔细检查了一下,发现远程文件服务器上所有SYMLINK类型文件和文件夹都没拷贝成功。上网搜了一下,很快就找到解决方法了,只要打开命令运行一下下面的命令即可。 fsutil behavior set SymlinkEvaluation [L2L:{0|1}] | [L2R:{0|1}] | [R2R:{0|1}] | [R2L:{0|1}] 简单说,如果你运行fsutil behavior query SymlinkEvaluation发现Windows没有开启所有SYMLINK解析方式,跑一下上面的命令就可以了。 不用知道fsutil是何方神圣的,只要知道这个能解决问题就行。
-
PowerShell里使用HttpWebRequest
PowerShell有个强大的地方,就是和DotNet做了深度整合,可以直接在PowerShell脚本里调用DotNet的类库。这样做的一个好处便是,如果你已经有一定的C#的基础,你将会发现PowerShell非常容易上手。 举个实际的例子,在写脚本实现系统环境自动化安装和配置时,一个常见的需求是从官方网站自动下载最新的软件版本,然后用命令行方式安装。关于http下载,用C#实现自动化可以直接用HttpWebRequest实现,在PowerShell下实现起来基本类似。下面代码演示了如何用PowerShell从微软官方的SilerLight下载地址http://go.microsoft.com/fwlink/?LinkID=149156下载最新的SilverLight,并且保存到本地的c:temp文件夹。
-
命令行安装IIS 7.5
blchen一般都是用Web Platform Installer来在服务器上快速安装IIS,WebPI会自动根据当前的操作系统安装正确的IIS版本( XP=> IIS 5.1,2003=>IIS6,VISTA/2008=> IIS 7.0,WIN7/2008R2 –> IIS7.5),非常之省事。最近遇到一个需求,需要在脚本里安装IIS。于是就研究了一下IIS的自动化安装工具。
-
diskpart clean后恢复硬盘数据
今天在lab的文件服务器上调试WIM2VHD的脚本,像平时一样先进入diskpart,创建一个新的VHD文件作为vdisk,然后选择这个disk所在的index,clean了一下,结果突然发现事情大条了,我以为我选的是新建出来的VHD,但是事实上我选的是一个12TB的MD1000物理硬盘存储。于是乎12TB数据瞬间蒸发。一向不求有功,但求无过,竟然一世英名毁在这么一个小小的脚本bug上,而且搞坏的还是是个RAID 6的硬盘。幸好在Google上搜到TestDisk,下面将恢复过程记录下来,以便下次重蹈覆辙的时候备用。
-
Windows Phone 7开发-屏幕自动翻转
在Window Phone下开发应用,默认情况下页面总是竖屏垂直显示。如果要让屏幕根据当前旋转设置,只需要在XAML页面的头部设置如下属性即可 SupportedOrientations=”PortraitOrLandscape” Orientation=”Portrait” SupportedOrientations用于指定页面显示的方向,支持的选项分别为,Portrait(竖屏),Landscape(横屏),PortraitOrLandscape(自动翻转) Orientation 用于指定页面加载时默认的显示模式,支持的选项和SupportedOrientations一样。
-
Perl打印包含哈希的哈希
在Perl里,有一种很常用的数据结构,哈希里的值是一个新的哈希,比如下面例子 my %hash = ( foo => { id => 1, name => “foo”, }, bar => { id => 2, name => “bar”, },); 如果需要在调试过程打印这类的数据,最简单的方法就是在代码开始加入use Data::Dumper来导入Dumper模块,然后所要做的全部事情就是把哈希的引用传给Dumper就行。 print Dumper(%hash); 结果如下 $VAR1 = { ‘bar’ => { ‘name’ => ‘bar’, ‘id’ => 2 }, ‘foo’ => { ‘name’ => ‘foo’, ‘id’ => 1 } }; 或者可以直接2次for循环把哈希展开打印:…
-
Perl里的true和false
Perl和其他语言有点不一样,它没有原生的布尔(Bool)型变量。不过,这 简单说,下面的情况在Perl里会被解析成fase: 数字0 字符串0 空字符串 值为undef的变量 其余的情况在Perl里都会被解析成true。 这样其实也很有好处,相同的逻辑,代码量上会精简不少,但额外的代价就是你得记住哪些情况等于true,哪些又是false。