新的一年就要到来,写下“东东博客”分类的第100篇文章庆祝一下

31 12 月, 2008

 自从2007年2月14日开博以来,总共与了100多篇博文,有自己的一些心得、技术方面的一些积累、网络文章的转载等,我写的这些文章根据情况选择了各自的分类,没有严格的要求。今天才发现写完这一篇“东东博客”分类的文章数是100篇,100代表很多意义,在这里我们送走多灾多难的2008,以百分百的愉快心情迎接充满挑战的2009,预祝在新一年里工作顺利、家庭幸福、身体健康!

祝愿所有认识我和不认识我的人新年快乐!

C#项目文件与源程序不在同一级目录时Resources的解决办法

26 12 月, 2008

在多人开发的环境,可能为了同步方便把C#的项目文件.csproj移出源程序所在目录,这样在项目中使用Resources时会遇到这些麻烦(附解决办法):

1. 项目属性里Resources和Settings页会提示“This project does contain a default resources/settings file, Click here to create one.”,也就是说项目文件找不到缺省的Resources和Settings文件。

原因:因为IDE只会在项目文件所在目录的Properties子目录查找这两个信息,由于只把项目文件移出,真正的Properties目录仍在源码位置,所以IDE会提示找不到这两组资源。

解决办法:不用去管它,仍使用源码目录下的Properties,后面提到如何使用。

Read the rest of this entry »

使用subinacl解决目录不可访问的问题

24 12 月, 2008

系统管理员都无法访问一般是目录或文件owner没有设置并且系统管理员的权限被清除,这是多种原因造成的。我们为了访问这些目录或文件,唯一的方法是设置这些目录或文件的owner为系统管理员并添加系统管理员的完全控制权限。

微软提供的Windows Resource Kits包含有一个subinacl.exe工具,可以实现这两个功能。

这里提供这个文件的下载,可以把这个文件放到系统目录下,方便通过命令行调用。

第一步,设置目录的owner:
C:/>subinacl /subdirectories=directoriesonly 目录名\*.* /setowner=administrators

第二步,设置文件的owner:
C:/>subinacl /subdirectories 目录名\*.* /setowner=administrators

第三步,设置目录的完全控制权限:
C:/>subinacl /subdirectories=directoriesonly 目录名\*.* /grant=administrators=f

第四步,设置文件的完全控制权限:
C:/>subinacl /subdirectories 目录名\*.* /grant=administrators=f

说明:实测发现,光使用第二步并不能设置目录的owner,只有用第一步才能设置目录的权限,因此目录和文件分开设置是有必要的。“目录”可以是相对路径也可以是绝对路径。

更多请参见:http://hi.baidu.com/youyuer/blog/item/1a5148a9a889e8ff1e17a2a3.html

C# Array数组与ArrayList之间的互转

24 12 月, 2008

直接看实例吧:
        private void _btnListArray_Click(object sender, EventArgs e)
        {
            string[] a = new string[3];
            a[0] = "fd";
            a[1] = "fe";
            a[2] = "4d";

            ArrayList lst = new ArrayList();
            lst.AddRange(a);

            lst.Add("ffe");
            lst.Add("rrg");
            lst[0] = "aaaa";

            string[] b = (string[])lst.ToArray(typeof(string));
        }
执行结果:a仍然是3个元素并保持不变,lst和b都是5个元素且第一个元素是“aaaa”。

相关链接:
http://www.cnblogs.com/biandande/archive/2008/12/16/1355761.html
http://www.cnblogs.com/smallfa/archive/2008/11/23/1339296.html

转贴:2008最响亮的屁!

24 12 月, 2008

第一句:中国!!老百姓不缺钱!

背景:这是CCTV一个栏目中,芮城刚和几位专家谈内需时,专家冒出的一句话!

简评:建议专家下次再谈老百姓的时候最好事先明确一下他心目中老百姓的标准,例如居住地,例如收入保障,例如医疗保障等等。因为作为一个普通的打工者来说,我就缺钱。所以我很惶恐:难道我不是老百姓吗?那我是个什么玩意儿呢?当然后来我明白了,象我们这种缺钱的主儿,在专家眼里连玩意儿都不是。

第二句:春运铁路一票难求在于票价太低。

背景:这是全国人大代表、北京铁路局常务副局长罗金保的话。

简评:又是人大代表,又是常务副局,罗局长“高墙建瓦”(原词想不起来,凑活用吧)的话当然不是说给人民的,而是说给“人民代表大会”的,别看差几个字,差别大了去了。因为人民代表大会是需要人民用银子支持的,票价不涨,会还开不开了?不开会,那罗局长之流还活不活了?

第三句:中国不存在“上学难、上学贵”问题。

背景:这是十一届全国人大代表、吉林省副省长陈晓光接受人民网记者采访,就教育不公平、上学难上学贵以及如何使老百姓满意时所发表的见解和看法。

简评:尽管陈省长后来又补充说“好的教育资源是有限的,所以应该是说上好学难、上好学贵”。但即便一所普通大学的收费也足以让一户农家倾家荡产的现实不知道陈省长怎么看?央视都不回避的农村家庭里因为学费放弃求学的问题陈省长又怎么看?
只能说明,老陈的孩子上的起学,而且可以根据自己的经济实力选择学校。其次,老陈看电视很少看《焦点访谈》、《社会观察》,《人与社会》这样的栏目。第三,人大代表,是为大人说话的。

第四句:电信行业不存在垄断。

背景:这是全国政协委员、国资委副主任王瑞祥的观点,“对于所谓垄断要科学界定,比如电信行业,固话业务、移动业务都有竞争,怎么能算垄断企业呢?当然不是。”

简评:有竞争就不是垄断。所以,只要二奶不跟大奶挑起事端,就不存在竞争,客观上就还是大奶垄断老公的现实。王主任不愧是政协委员,真邪啊!他的观点为小三们另辟了蹊径,记住:要想保持关系,不要找大的麻烦。

第五句:手机通话费不是高收费。

背景:这是信息产业部电信研究院副院长曹淑敏阿姨的观点。理由是“漫游费已经下降了百分之六十三”了。

简评:已经下降百分之六十三了,当然就不是高收费了。这样的逻辑让我们不免产生如此的联想:他过去抢完钱就杀人,现在只把人打残废,所以,他已经不是坏人了。

唉,为什么逼我杀人?

第六句:187蚊你都觉得贵啊?

背景:这是114日晚广东新闻频道《今日关注》栏目主持人郑达的感受,他在听取了报道中对一位欲购站票,却为187元的票价过高而犹豫不决,最后别无他选之下买下车票的、有十年时间没回老家的重庆籍外来工的采访后,说:‘哇,大佬,187蚊你都觉得贵啊?你成十年没返过屋企喔,坐飞机都抵晒啦……(粤语原话,大概意思是:你不会觉得187元的价钱也高吧?你有十年时间没回家了,即使坐飞机也不算贵啦!)’话语间带着一种难以解读的‘职业笑容’。”

简评:郑先生的关怀让我不由得想起了另一位好心人晋惠帝,在他看到濒临饿死的穷人时曾留下过一句千古绝句:何不食肉糜?在郑惠帝看来,十年不回家当然是舍不得钱了,当然是为了存钱了。只不过他压根儿想不到:187元钱这样一个他用来喝早茶都不够的数目,对一个打工者而言意味着什么。不过看来他有进军央视的实力,因为显然他跟认为老百姓不缺钱的专家们惺惺相惜。

第七句:父母可学外国人在1215岁孩子书包里放安全套。

背景:这是广州市计生局官员段建华的倡议。

简评:不知道段局长是通过调研还是通过实践对12-15岁的孩子的性成熟状况有所了解,如果是前者那就拿出来晒一下也让大家服气,要是后者嘛,还是自己带着合适——知道号码不是?

第八句:所谓看病难看病贵,我走遍全世界,看病最不难是中国,看病最不贵是中国。

背景:这是政协委员、广州市卫生局副局长曾其毅的所谓“直言”。

简评:又是个政协委员,还真他母亲的邪。别说,国家出钱让丫环游地球还真没白去,这话说得多让出钱的主儿舒坦?所以我建议继续出资让曾先生到太空也走一圈儿,最后告诉我们“全宇宙看病最不难是中国,看病最不贵是中国”的时候,那多长脸啊!

确实,看病最不难是中国——到处都有地下诊所的。看病最不贵也是中国——只要你不吃药。

第九句:你们要做的是以主人的身份使这种动人的气氛保持下去,避免横生枝节。

背景:这是大师级人物余秋雨对在地震中遭遇丧子之痛的家长们说的话,他希望家长们别再追究一些人的责任,而应该为了顾全大局继续关起门来悲痛,打开门时稳重。

简评:我早就说过,在余大师眼里,恐怕灭门最动人!

我们也可以断定,余大师是不会让我们感觉到动人的。

第十句:做鬼也幸福。

背景:这是山东省作协副主席王兆山在汶川地震后以一名地震遇难者的口吻写就的句子。

简评:终于明白什么叫做文人无德了!人家还是副主席耶!

第十一句:可以考虑让市民每个月买20块钱的生态基金。

背景:此言出自中科院院士蒋有绪之口。他认为,居民生活在地球上作为二氧化碳的排放者,应该为节能减排付出代价。

简评:当科学沦为杂税的帮凶时,我们只能感慨我们对科学的无知!

第十二句:你们是个屁。

背景:深圳海事局50来岁的party组书记(正局级)林嘉祥在一家酒楼用餐时,借着向一名11岁女生问路之机,将其强行拖进洗手间内W X。当女孩父母回头找该男子讲理时,男子竟叫嚣“ 我是交通部派来的,级别和你们市长一样高,敢跟我斗,你们这些人算个屁呀!”。

简评:个人以为,这是2008年度最能真实反映出官员对百姓评价的一句话:因为你们是个屁呀,所以你们还想跟我讲理?因为你们是个屁呀,所以你们还想跟我谈涨工资?因为你们是个屁呀,所以就算吃了亏还想讨什么公道?不要想,想都不要想,因为,你们只是个屁!又何必侮辱空气

 

C#实现XML系列化和反系列化的总结

23 12 月, 2008

常用的系列化定义(using System.Xml.Serialization;)
[XmlAttribute("name")]        // 定义<Tag name="…"></Tag>
[XmlElement("label")]        // 定义<label>…</label>
[XmlIgnoreAttribute()]        // 跳过系列化
[XmlElement("description", IsNullable = false)]        // 定义<description>…</description>,在属性值为null时不显示该元素,即可选
[XmlArray("temp_var_list", IsNullable=false)]        // 定义<temp_var_list><Tag>…</Tag>…<Tag>…</Tag></temp_var_list>,即数组对象的根结点
[XmlArrayItem("temp_var_item")]        // 定义<temp_var_item>…</temp_var_item>…<temp_var_item>…</temp_var_item>,即数据元素的根结点,常与XmlArray组合使用
[XmlRoot("dpd")]        // 定义要结点

几个注意事项
(1)需序列化的字段必须是公共的(public)
(2)需要序列化的类都必须有一个无参的构造函数
(3)枚举变量可序列化为字符串,无需用[XmlInclude]
(4)导出非基本类型对象,都必须用[XmlInclude]事先声明。该规则递归作用到子元素
 如导出ArrayList对象,若其成员是自定义的,需预包含处理:
 using System.Xml.Serialization;
 [XmlInclude(typeof(自定义类))]
(5)Attribute中的IsNullable参数若等于false,表示若元素为null则不显示该元素。
 也就是说:针对值类型(如结构体)该功能是实效的
 若数组包含了100个空间,填充了10个类对象,则序列化后只显示10个节点
 若数组包含了100个空间,填充了10个结构体对象,则序列化后会显示100个节点
(6)真正无法XML序列化的情况
 某些类就是无法XML序列化的(即使使用了[XmlInclude])
  IDictionary(如HashTable)
  System.Drawing.Color
  System.Drawing.Font
  SecurityAttribute声明
 父类对象赋予子类对象值的情况
 对象间循环引用
(7)对于无法XML序列化的对象,可考虑
 使用自定义xml序列化(实现IXmlSerializable接口)
 实现IDictionary的类,可考虑①用其它集合类替代;②用类封装之,并提供Add和this函数
 某些类型需要先经过转换,然后才能序列化为 XML。如XML序列化System.Drawing.Color,可先用ToArgb()将其转换为整数
 过于复杂的对象用xml序列化不便的话,可考虑用二进制序列化

实例
    [SerializableAttribute]        // 定义本类系列化
    [XmlRoot("dpd")]        // 定义为XML的根结点
    public class DataProcessDef

        [XmlElement("is_published")]        // 枚举类型可以系列化成字符串
        public PublishedTypes IsPublished

        [XmlElement("data_item")]        // 输出<data_item>…</data_item>
        public DataItem DataItem

        [XmlArray("property_list")]        // 组合使用,输出<property_list><property_item>…</property_item>…<property_item>…</property_item></property_list>
        [XmlArrayItem("property_item", IsNullable=false)]
        public PropertyItem[] PropertyList

        [XmlElement("custom_item", IsNullable=false)]        // 输出<custom_item>…</custom_item>…<custom_item>…</custom_item>
        public CustomItem[] CustomItems

        [XmlIgnoreAttribute()]        // 不系列化
        public String SourceName

另一种方法
namespace TestCsXml
{
    [Serializable]
    public class SubClass
    {
        public SubClass()
        {

        }

        public SubClass(String str)
        {
            _temp = str;
        }

        [XmlElement("Temp")]
        public String Temp
        {
            get
            {
                return _temp;
            }

            set
            {
                _temp = value;
            }
        }

        private String _temp;
    }

    [Serializable]
    [XmlRoot("Root")]
    [XmlInclude(typeof(SubClass))]
    public class Class1
    {
        public Class1()
        {

        }

        public Class1(String test, String name)
        {
            _test = test;
            _name = name;
        }

        [XmlElement("Test")]
        public String Test
        {
            get
            {
                return _test;
            }

            set
            {
                _test = value;
       &nbsp
;    }
        }

        [XmlAttribute("Name")]
        public String Name
        {
            get
            {
                return _name;
            }

            set
            {
                _name = value;
            }
        }

        [XmlElement("Mooo")]
        public IList Lst
        {
            get
            {
                return _list;
            }

            set
            {
                _list = value;
            }
        }

        [XmlElement("Subclass")]
        public IList Subcls
        {
            get
            {
                return _listObj;
            }

            set
            {
                _listObj = value;
            }
        }

        private String _test;
        private String _name;
        private IList _list = new List<String>();
        private IList _listObj = new List<SubClass>();
    }
}

使用方法
        private void button5_Click(object sender, EventArgs e)
        {
            FileStream fs = new FileStream(@"E:\test2.xml", FileMode.Open);
            XmlSerializer sr = new XmlSerializer(typeof(DataProcessDef));
            DataProcessDef dpd = (DataProcessDef)sr.Deserialize(fs);

            TextWriter wt = new StreamWriter(@"E:\test21.xml");
            sr = new XmlSerializer(typeof(DataProcessDef));

            sr.Serialize(wt, dpd);
            wt.Close();

            MessageBox.Show("OK");
        }
 

今天是上海今年入冬以来最高气温最低的一天

22 12 月, 2008

随着一股冷空气的到来, 北京出现了15年以来最低的气温, 全国温度普降, 上海今天最低气温-2度最高气温才3度, 成为今年入冬以来最低的日最高气温. 刚查了一下明后天的天气情况, 温度有所回升, 但愿今天是元旦之前的最低气温, 那样可以好好迎接不一样的2009年.

升级博客成1.8 Arwen Build 81206

21 12 月, 2008

刚升级博客成Z-Blog 1.8 Arwen Build 81206, 说是解决了WAP写博文时无法显示的问题, 现在试着通过手机写这篇博文, 如果问题解决了, 以后就可以很方便的用手机写文章了.

刚发现粥妈出生在十一届三中全会开幕那天

18 12 月, 2008

晚上听到新闻联播上老胡在庆祝十一届三中全会确立的改革开放三十周年, 一打听日期才发现粥妈是公历三十年前的今天出生, 她一般都是过的农历生日, 前天才过的, 所以没有注意到.

改革开放三十年到底啥样了, 咱也不好发表高论, 看看粥妈的这三十年就知道了. 哎该啥样就啥样, 日子还得过, 不过得祝老婆大人公历三十周年快乐, 但愿她后面三十年别象这过去的三十年那样.

昨天是家乡成立自治区50周年的日子,家里二楼今天开工

12 12 月, 2008

昨天12月11日是广西壮族自治区成立50周年的日子。

近段经常听到新闻说广西要庆周年,由于常年在外打工,基本上3年左右才回一趟家,所以没怎么在意这些庆典,也不知道具体是哪一天。

昨天下班回家路上看到月亮很圆,于是查了一下农历发现昨天是农历十一月十四,知道今天早上该给家里打个电话了。因为我妈之前跟我说过今天是好日子,选今天对家里二楼做“坡改平”,就是把二楼已经用了十来年的瓦顶改成水泥板,说是二楼瓦顶经过多年的风吹雨打已经破烂不堪了,全屯只整我们家二楼还是瓦顶了。

早上起床给我爸打电话,他说今天是让包工们上工的日子而不是我之前以为的今天是铺项的日子。我爸问我们有没有放假,我说没有,他说广西搞周年庆今天放假所以他可以在家帮忙。刚才吃完中午饭上网看新闻才想到广西周年庆的问题,一查是昨天的事,不过今天还是放了一天假。

家里的二楼今天开始开工,过年回家应该都弄好了,那样就不用再有往年住二楼时室内外温度相差不大、整晚都听到寒风呼啸的日子了,粥粥小家伙有福了。