Updates from 四月, 2009
-
用union all代替or会更快吗?
shishirui
-
在 C# 中使用设置
shishirui
关键字:设置、Configuration
摘要:了解如何配合应用程序及用户设置使用 Visual C# 2005 中的新功能。
一、简介
.NET Framework 2.0 允许您创建和访问在各应用程序执行会话之间保持的值。这些值称为设置。设置可以表示用户首选项,也可表示应用程序需要使用的宝贵信息。例如,可以创建一系列设置来存储应用程序配色方案的用户首选项。也可以存储指定应用程序所使用数据库的连接字符串。通过设置不但可以保持对于代码外部的应用程序至关重要的信息,而且还可以创建分别存储各用户首选项的配置文件。
Visual Basic 2005 使用 My 命名空间提供了一种显而易见的设置访问机制,而在 Visual C# 2005 中没有类似的命名空间,因而访问设置稍微要困难一些。尽管如此,C# 用户仍可通过访问 Properties 命名空间来使用设置。在阅读本文的过程中,您将会了解应用程序设置与用户设置之间的差异、如何在设计时创建新的设置、如何在运行时访问设置,以及如何将多组设置合并到应用程序中。
应用程序及用户设置
二、设置具有四个属性:
- Name(名称):设置的“Name”(名称)属性是指用于在运行时访问设置值的名称。
- Type(类型):设置的“Type”(类型)是指设置所表示的 .NET Framework 类型。设置可以是任意类型。例如,存放用户颜色首选项的设置将会是 System.Color 类型。
- Scope(作用域):“Scope”(作用域)属性表示如何在运行时访问设置。“Scope”(作用域)属性有两个可能的值:“Application”(应用程序)和“User”(用户)。本部分将会对这些值进行更多讨论。
- Value(值):“Value”(值)属性表示访问设置时返回的值。该值将为“Type”(类型)属性所表示的类型。
这些属性中的大多数都相当容易理解。“Name”(名称)、“Type”(类型)和“Value”(值)的概念均应为大多数程序员所熟知。 “Scope”(作用域)属性需要稍加说明。设置具有两个可能的作用域:应用程序作用域和用户作用域。具有应用程序作用域的设置表示无论用户首选项为何应用程序都会使用的设置,而具有用户作用域的设置对实际应用程序来说通常并不是很重要,它们很可能与首选项或其他非关键值关联。
应用程序作用域设置与用户作用域设置之间的重要区别是,用户作用域设置在运行时为读/写,并且可在代码中对其值进行更改和保存。应用程序作用域设置在运行时为只读。虽然可以读取,但是不能对其进行写入。具有应用程序作用域的设置只能在设计时或通过手动修改设置文件进行更改。
三、在设计时创建新设置
可以使用设置设计器在设计时创建新的设置。设置设计器采用了大家熟悉的网格式界面,通过它可以创建新设置并指定这些设置的属性。必须为每个新设置指定 “Name”(名称)、“Type”(类型)、“Scope”(作用域)和“Value”(值)。创建了设置后,即可使用本文稍后介绍的机制在代码中对其进行评估。
1. 在设计时创建新设置的步骤
- 在“Solution Explorer”(解决方案资源管理器)中,展开项目的“Properties”(属性)节点。
- 在“Solution Explorer”(解决方案资源管理器)中,双击要在其中添加新设置的 .settings 文件。此文件的默认名称是 Settings.settings。
- 在设置设计器中,为设置设定“Name”(名称)、“Type”(类型)、“Scope”(作用域)和“Value”(值)。每行代表单个设置。
2. 在设计时更改现有设置的值
还可以按以下步骤所述,使用设置设计器在设计时更改预先存在设置的值:
在设计时更改现有设置值的步骤
- 在“Solution Explorer”(解决方案资源管理器)中,展开项目的“Properties”(属性)节点。
- 在“Solution Explorer”(解决方案资源管理器)中,双击要在其中添加新设置的 .settings 文件。此文件的默认名称是 Settings.settings。
- 在设置设计器中,找到要更改的设置,然后在“Value”(值)列中键入新值。
3. 在应用程序会话之间更改设置值
有时,在编译和部署了应用程序后,可能需要在应用程序会话之间更改设置值。例如,可能需要更改连接字符串,使其指向正确的数据库位置。由于设计时工具在应用程序编译和部署后不可用,所以必须手动在文件中更改设置值。
在应用程序会话间更改设置值的步骤
使用 Microsoft 记事本或其他某种文本或 XML 编辑器,打开与应用程序关联的 <AssemblyName>.exe.config 文件。
找到要更改的设置条目。它应看似以下示例:
<setting name="Setting" serializeAs="String">
<value>这是设置值</value>
</setting>
为设置键入新值,然后保存该文件。
4. 在运行时使用设置
运行时应用程序可以通过代码使用设置。具有应用程序作用域的设置值能够以只读方式进行访问,而用户作用域设置的值可以进行读写。在 C# 中可以通过 Properties 命名空间使用设置。
5. 在运行时读取设置
可在运行时使用 Properties 命名空间读取应用程序作用域及用户作用域设置。Properties 命名空间通过 Properties.Settings.Default 对象公开了项目的所有默认设置。编写使用设置的代码时,所有设置都会出现在 IntelliSense 中并且被强类型化。因此,举例来说,如果设置的类型为 System.Drawing.Color,则无需先对其进行强制类型转换即可使用该设置,如下例所示:
this.BackColor = Properties.Settings.Default.myColor;
6. 在运行时保存用户设置
应用程序作用域设置是只读的,只能在设计时或通过在应用程序会话之间修改 <AssemblyName>.exe.config 文件来进行更改。然而,用户作用域设置却可以在运行时进行写入,就像更改任何属性值那样。新值会在应用程序会话持续期间一直保持下去。可以通过调用 Settings.Save 方法来保持在应用程序会话之间对用户设置所做的更改。这些设置保存在 User.config 文件中。
7. 在运行时写入和保持用户设置的步骤
访问用户设置并为其分配新值,如下例所示:
Properties.Settings.Default.myColor = Color.AliceBlue;
如果要保持在应用程序会话之间对用户设置所做的更改,请调用 Save 方法,如以下代码所示:
Properties.Settings.Default.Save();
四、交替使用多组设置
在某些情况下,可能需要在应用程序中使用多组设置。例如,如果正在开发的应用程序中有某组设置预计会频繁进行更改,则比较明智的做法是将其全都分成单个文件,这样便可成批替换相应文件,而不会使其他设置受到影响。Visual Studio 2005 允许向项目中添加多组设置。可以通过各自节点中生成的设置对象来访问各组附加设置。例如,如果向项目中添加了名为 SpecialSettings 的一组设置,则要通过 Properties.SpecialSettings 对象来访问该组设置包含在代码中的设置。
添加附加设置组的步骤
- 从“Project”(项目)菜单中选择“Add New Item”(添加新项)。将会打开“Add New Item”(添加新项)对话框。
- 在“Add New Item”(添加新项)对话框中,选择“Settings File”(设置文件)。
- 在“Name”(名称)框中为设置文件命名,如 SpecialSettings.settings,然后单击“Add”(添加),将文件添加到解决方案中。
- 在“Solution Explorer”(解决方案资源管理器)中,将新的设置文件拖入到 Properties 文件夹中。这样便可在代码中使用新的设置。
- 如在其他任何设置文件中那样在此文件中添加和使用设置。可通过 Properties.SpecialSettings 对象访问此组设置。
五、结束语
在本文中,您已了解如何在 C# 应用程序中使用设置来存储和管理从属于应用程序和用户的设置。您还学会了如何在设计时添加设置、如何在运行时读写设置,以及如何将多组附加设置合并到应用程序中。
-
35岁IT老人的随笔(转)
shishirui
常说三十而立,那我已经立了五年了,都快立到要弯下腰了。30多岁在IT已经是老人,不知道是褒还是贬!记得当年娶回爱妻时,听说她的前度追求者说,搞IT的越老越不值钱!真没想到一个没脑子的人,说了一句要用脑子才能说得出来的实话。——价值的回归
老婆说我不象搞IT的,因为她认识的很多搞IT的要么很木讷,要么性格比较怪,好象在她眼里搞IT的都是怪人。不过幸亏认识了我,也认识了我的朋友和同学,才让她相信Windows不是精神病人搞出来的,而且也相信我这号人搞不出Windows。——理性的回归
不过我老婆不是唯一一个这样看待IT的人,记得还在读大学时,有一次高中同学的聚会,一位读文科的女同学大发牢骚,说计算机太难学了。旁边有一位同学指点了一下,Lucky是读计算机的,而且是搞软件的。那位女同学听完后,说:啊!不敢和他说话了......。到现在我都不明白,计算机为难她,为什么和我有关系呢?那时候曾有一个感觉,从计算机圈里往外看,好象隔着一层厚薄不均的玻璃,一切都很怪。
曾记得有一次在饭桌上,有一位客户的老总说了一句:虽然在座的各位,我不全认识,但我大概能猜出谁是搞技术的。我还在想,老总嘛,阅人无数......。这时候,老总接着说,看看你们穿的袜子就知道了,穿白色袜子的基本是搞技术的。从此我只有穿球鞋时才穿白色袜子,除了我也觉得穿白袜子怪以外,也不希望被别人这么容易读懂,尽量去保持那一点点的内涵。
相信很多人都听过有一个笑话是关于蜘蛛和蜜蜂的,蜜蜂嫁给蜘蛛原因,是因为蜘蛛是搞网络的。我以前公司的一个秘书从我们这家小IT公司跳到一家搞网络的大公司,后来相聚闲聊时说,那家搞网络的公司,里面王老五特别多,小年青也很多,就是帅哥不多,但公司里面的小秘都被内部消化掉了,就是因为这家公司搞网络的。那时候真想给老板建议,改行搞网络,一可以给公司多一条出路,二来也可以解决一下我们的个人问题。
或许是做IT的收入的确比其他行业还是要高,以至于我的不少亲戚好友的小孩都被鼓励去读计算机,因为至少有一个实实在在的样板可供参考,都不知道这样会不会害了他们。我就好比是村子里面首先富起来的人,其他村民看到了,就纷纷仿效。但他们都并不知道,世界上很难找到可以复制的成功样例,只有可供参考的成功经验。不过有一位悟到了,直接前来问我,我现在学编程还来得及吗?要知道此君只是一个保险经纪,而且年过25了。好象觉得我这里会有旷世良方,有速成入门的方法。不忍心对他说:"把希望留给下一代吧!"。只好说,搞IT很累的,你熬不了几年的,我们只不过把你们去卡啦OK的时间去加班而已。套用了一下鲁讯先生的名言,居然也能让他若有所思地走了。这让我体会到,留一些思考空间给对方,胜于把问题答案清晰化,不要只给对与错、0和1,要让他自己去感知对与错。要授与人渔,不是要授与人鱼。
IT人喜欢和0,1打交道,因为在计算机里面基本上只有0、1,要么对,要么错。不象人与人之间的交往,没有绝对的0和绝对的1。就好比黑与白之间,还有很多灰色过渡一样。而对于0与1之间的结果,IT人是迷茫的,女人就是这样一种,游离在0与1之间的程序。而且不同的时候,不同的心情,有着不同的答案,没有规律可言,没有先例可循。这个程序的入口参数太多了,结果也多变,以至于你很难弄明白这个黑盒子测试该如何进行?只好概叹为什么没有标准化的女人?每一个女人身上的操作系统为什么都不尽相同,使得一套程序没办法跨平台运行。你的程序没办法被重用,别人的程序也无法借用,一切的一切都得重新开发。不过做 IT的友人们,不用灰心,至少在其他人眼里,搞IT的人还是比较纯朴的,但你也不要纯(蠢)得象白纸(白痴)就行了。女人的心思,就好比加了密的密文,给点耐心就能解开。
男女搭配,干活不累,这是至理名言。一堆臭男人凑在一起做项目,如果没有一位女性在的话,或许你会想不到有什么“严重”的后果。首先,玩游戏是必然的余兴节目;其次,相互交流时,有更多的不堪入耳的字眼在空气中回荡;第三,女人的话题并不会缺少,而且通常是限制级的......。或者很多人不同意我的看法,还会历数其他后果。其实什么样的后果不重要,重要的是后果同样是负面的。也就因为这个原因,曾有一个项目,在开始没多久就加入了一个项目秘书进来,因为全部是男人的项目组,是不利于心态的健康发展的。秘书是漂亮的,笑声也是清脆的,不过状况上是已婚的。这也很绝,让这帮王老五没有做梦的时间,看得到,摸不着。那一刻,我总觉得我们就象是一匹匹被阉割过的“公”马,而小秘就是一只......。不行,不能这样比喻,应该是王老五就象是氯酸钾,小秘是二氧化锰催化剂,最终产生氧气。而结了婚的男人是高锰酸钾,不需要小秘这个二氧化锰作催化剂。不过我也曾碰见过高锰酸钾把没有"状况"的二氧化锰给氧化了的情况。是啊,IT人也是人,也有好人和坏人。
还好,在我的老婆眼里,我还是个好人。她说,嫁给我就是要找一个会弄电脑的,有什么事有人搞掂。我说,你应该找一个修电器的,家里的电器比电脑多。她说电器比较耐用,不需要找有人懂的。电脑比较贵重,得找一个重要的人物来维护。呵呵,好歹我还算是个重要人物。看来我还得要谢谢比尔盖茨,谢谢那些蠕虫的制造者,让我找到一个“重要人物”的职位。要不是他们经常让电脑不能正常工作,我还可能继续王老五下去了。当然这些都只是说笑而已,其实她愿意嫁给我,好象没有几样和IT相关。当你要和MM拉近距离时,请把IT抛开,把你自己从她们认为怪的样式中恢复过来,IT可以是你炫耀的资本,但不要拿来谈情说爱,因为 IT里面没有浪漫的字句,IT做不出玫瑰花瓣,IT不能帮你描绘你们的未来。要让她明白,你对待她,并不是象对待电脑一样,她是不会想让一个怪人用对待电脑的方式来对待她。
35岁的IT人,是老人,所以已经不懂得如何描绘自己的未来,好象我的未来不是梦,因为已经没有梦了。房子买了,妻子有了,车子也找到了,小孩子也快出生了!曾经的梦里面还有一个:希望40岁前不再为了钱而工作。看来这是比其他都更难圆的梦,更多缘于人们对金钱的欲望是无止境的。当你挣一万块的时候,你会有一万块钱的打算;当你挣十万的时候,你会有十万钱的花销;你能够挣100万的时候,你的野心也会成比例的上涨。我曾想过,我有1亿时,该如何利用。不过很快就被如何能赚到1亿而难住了,只好回归现实,先想好下一个10万如何获取!我们还是得把更多的时间与精力,放在过程的实现上,而不是放在结果享受的梦境中。
-
Phone铃声制作和同步
shishirui
具体步骤如下,除了itunes不需要借助任何其他第三方软件:
a.右键点击你要制作铃声的mp3音乐,选择在iTunes中播放;
b.在iTunes中选择该音乐,右键,显示简介,在选项栏中有一个起始时间何终止时间,根据你的需要填写,注意,歌曲长度不能超过40秒!!点击确定
c.右键刚才的音乐,选择转换所选内容为AAC
d.在我的文档,我的音乐,itunes,iTunes musics文件夹中找到刚才转换的M4a文件,将其扩展名改为M4r,并双击添加到itunes铃声中。
e.将iPhone链接到iTunes,同步铃声,然后,我们就可以在iPhone声音设置里面看到同步进去的铃声了,Over。