[ Log On ]

TFS出现Unable to determine the workspace的解决办法

作者:shawn 发表于:2009年02月20日 -- 3219天21小时29分钟前 | 分类: 技术原创 | Comments: 1 | Views: 3281

TE不像VSS那样可以简单的设置物理路径(也可能是我不知道要怎么设置),之前在获取文件的时候得到这个错误“Unable to determine te workspace”。

原因:当使用多于一个workspace的时候,系统不知道究竟哪个物理路径去存放获取的文件,所以就会报"Unable to determine te workspace"的错。

解决办法:在Visual Studio 2008 Command Prompt中输入tf workspace,然后会弹出选择需要获取的文件和物理路径的对应。之后就ok了。

未定标题草稿

作者:shawn 发表于:2009年02月20日 -- 3219天21小时35分钟前 | 分类: 技术原创 | Comments: 0 | Views: 2438

今天还是WCF和MSMQ的东西。
今天在写东西的时候,明明一摸一样的code在公司run起来就没有问题,但是拿到家里重新run就不可以了。提示说“绑定验证失败,因为绑定的 MsmqAuthenticationMode 属性被设置为 WindowsDomain 但在安装 MSMQ 时 Active Directory 集成被禁用了。无法打开通道工厂或服务主机。” (虽然我用的是英文版的vs2008,但是是中文版的.net framework,所以报中文错,看起来非常的别扭 -.-)。查了msdn,原来msmq在安装的时候有两种模式,一种是workgroup模式,一种就是domain模式,也就是用active directory的模式。

(转载)WCF分布式开发必备知识(1):MSMQ消息队列

作者:shawn 发表于:2009年02月14日 -- 3226天16小时16分钟前 | 分类: 计算机 | Comments: 1 | Views: 2763

最近由于工作需要,要在CCC和City Care之间用WCF搭建一个B2B服务。而且传输需要使用Message Queue来实现。google到了这篇好文章,收下来。文章作者:老徐,原文发表在:http://www.cnblogs.com/frank_xl/archive/2009/02/09/1387125.html
[separator]

     学习WCF是不是就不需要学习.Net Remoting、ASMX、WSE和MSMQ了?

     这个问题一直是很多开发者关注的问题.按照微软的说法,WCF是微软分布式应用程序开发的集大成者,学习WCF编程,就不需要了解其他的 技术.这个说法有一定的道理.WCF的出现确实解决了很多问题,它整合了.Net平台下所有的和分布式系统有关的技术,例如.Net Remoting、ASMX、WSE和MSMQ。以通信(Communiation)范围而论,它可以跨进程、跨机器、跨子网、企业网乃至于 Internet;可以以ASP.NET,EXE,WPF,Windows Forms,NT Service,COM+作为宿主(Host)。开发人员可以构建跨平台、安全、可靠和支持事务处理的企业级互联应用解决方案。既然WCF如此强大,开发 者再不用去分别了解.Net Remoting,ASMX等各种技术了。

     可事实并非如此,首先,技术的更新换代没有那么迅速,我们接触的工作平台和技术文章不会因为WCF的出现而全部更新,其次作为一个开发人员,在实际开发过程要学习或者解决技术问题,必须知道其相关的概念,扎实的基础知识毕不可少.

     在本节我们就来了解一下MSMQ的基本概念和开发过程.我们先来了解一下什么是MSMQ:

     MSMQ全称MicroSoft Message Queue,微软消息队列,是在多个不同的应用之间实现相互通信的一种异步传输模式,相互通信的应用可以分布于同一台机器上,也可以分布于相连的网络空间 中的任一位置。它的实现原理是:消息的发送者把自己想要发送的信息放入一个容器中(我们称之为Message),然后把它保存至一个系统公用空间的消息队 列(Message Queue)中;本地或者是异地的消息接收程序再从该队列中取出发给它的消息进行处理.

       其中两个重要的概念。一个是消息Message ,一个是队列Queue。

     消息Message是由通信的双方所需要传递的信息,它可以是各式各样的媒体,如文本、声音、图象等等。消息最终的理解方式,为消息传递 的双方事先商定,这样做的好处是,一是相当于对数据进行了简单的加密,二则采用自己定义的格式可以节省通信的传递量。消息可以含有发送和接收者的标识,只 有指定的用户才能看到回执。时间戳,便于接收方对某些与时间相关的应用进行处理。截止时间,指定时间内消息还未到达则作废。

队列的类型主要包括一下几种:

“公共队列”在整个“消息队列”网络中复制,并且有可能由网络连接的所有站点访问。
“专用队列”不在整个网络中发布。相反,它们仅在所驻留的本地计算机上可用。专用队列只能由知道队列的完整路径名或标签的应用程序访问。
“管理队列”包含确认在给定“消息队列”网络中发送的消息回执的消息。指定希望 MessageQueue 组件使用的管理队列(如果有的话)。
“响应队列”包含目标应用程序接收到消息时返回给发送应用程序的响应消息。指定希望 MessageQueue 组件使用的响应队列(如果有的话)。

     消息队列Queue是发送和接收消息的公用存储空间,它可以存在于内存中或者是物理文件中。消息可以以两种方式发送,即快递方式(express)和可恢复模式(recoverable),它们的区别在于,快递方式为了消息放置于内存中,可恢复模式放于物理磁盘上(详细参见MSDN).

 

     了解到消息队列MSMQ相关的基本概念以后,我们知道它的

优点:稳定、消息优先级、脱机能力以及安全性,有保障的消息传递和执行许多业务处理的可靠的防故障机制。

缺点:MSMQ不适合于Client需要Server端实时交互情况.大量请求时候,响应延迟.

     优点决定了它的松耦合的特性,消息队列同样是实现SOA面向对象的架构的方式之一.现在我们就来看看简单的MSMQ编程.

     要在.net平台上进行MSMQ的开发,需要配置开发环境,安装消息队列,具体的安装过程可以baidu,直接在安装光盘里查找安装windows组件,选择消息队列安装即可.


安装结束后,可以在我的电脑--管理--消息队列

这个证明你已经安装成功.下面就可以来使用Visual Stdudio进行开发了.

首先,创建一个控制台项目(当然你也可以创建Web或者Winform应用程序).添加项目引用System.Messaging,因为消息队列相关的类库全部封装在System.Messaging.dll程序集里了.下面我们就来写自己的代码.

1static void Main(string[] args)
2        {
3            //Create a public Queue
4            if (!MessageQueue.Exists(@".\FrankMSMQ"))//判断此路径下是否已经有该队列
5            {
6                using (MessageQueue mq = MessageQueue.Create(@".\FrankMSMQ"))
7                {
8                    mq.Label = "FrankPublicQueue";设置队列标签
9                    Console.WriteLine("FrankPublicQueue is Created:");
10                    Console.WriteLine("Path is {0}:", mq.Path);
11                    Console.WriteLine("FrankPublicQueue' name is {0}:", mq.QueueName);
12                    //Console.Read();
13                    mq.Send("MSMQ Message", "Frank.Xu");//发送消息
14                }

15            }
//Create a private Queue私有消息队列
16            if (!MessageQueue.Exists(@".\Private$\FrankMSMQ"))
17            {
18                using (MessageQueue mq = MessageQueue.Create(@".\Private$\FrankMSMQ"))
19                {
20                    mq.Label = "FrankPrivateQueue";
21                    Console.WriteLine("FrankPrivateQueue is Created:");
22                    Console.WriteLine("Path is {0}:", mq.Path);
23                    Console.WriteLine("FrankPrivateQueue' name is {0}:", mq.QueueName);
24                    //Console.Read();
25                    mq.Send("MSMQ Private Message", "Frank.Xu");
26                }

27            }

28
29            //Get all public queues and send new messages
30            foreach (MessageQueue mq in MessageQueue.GetPublicQueues())//遍历所有的公共消息队列
31            {
32                mq.Send("Sending MSMQ public message" + DateTime.Now.ToLongDateString(),"Frank.Xu");//发送公共消息
33                //string mName = mq.MachineName;
34                Console.WriteLine("Public Message is sent to {0}:", mq.Path);
35            }

36            //find private queues and send new messages
37            if (MessageQueue.Exists(@".\Private$\FrankMSMQ"))//获得私有的消息队列
38            {
39                MessageQueue mq = new MessageQueue(@".\Private$\FrankMSMQ");
40                mq.Send("Sending MSMQ private message" + DateTime.Now.ToLongDateString(), "Frank.Xu");//发送消息到私有的消息队列里
41                Console.WriteLine("Private Message is sent to {0}:", mq.Path);
42            }

43            Console.Read();
44        }

1static void Main(string[] args)
2        {
3            //Create a public Queue
4            if (!MessageQueue.Exists(@".\FrankMSMQ"))//判断此路径下是否已经有该队列
5            {
6                using (MessageQueue mq = MessageQueue.Create(@".\FrankMSMQ"))
7                {
8                    mq.Label = "FrankPublicQueue";设置队列标签
9                    Console.WriteLine("FrankPublicQueue is Created:");
10                    Console.WriteLine("Path is {0}:", mq.Path);
11                    Console.WriteLine("FrankPublicQueue' name is {0}:", mq.QueueName);
12                    //Console.Read();
13                    mq.Send("MSMQ Message", "Frank.Xu");//发送消息
14                }

15            }
//Create a private Queue私有消息队列
16            if (!MessageQueue.Exists(@".\Private$\FrankMSMQ"))
17            {
18                using (MessageQueue mq = MessageQueue.Create(@".\Private$\FrankMSMQ"))
19                {
20                    mq.Label = "FrankPrivateQueue";
21                    Console.WriteLine("FrankPrivateQueue is Created:");
22                    Console.WriteLine("Path is {0}:", mq.Path);
23                    Console.WriteLine("FrankPrivateQueue' name is {0}:", mq.QueueName);
24                    //Console.Read();
25                    mq.Send("MSMQ Private Message", "Frank.Xu");
26                }

27            }

28
29            //Get all public queues and send new messages
30            foreach (MessageQueue mq in MessageQueue.GetPublicQueues())//遍历所有的公共消息队列
31            {
32                mq.Send("Sending MSMQ public message" + DateTime.Now.ToLongDateString(),"Frank.Xu");//发送公共消息
33                //string mName = mq.MachineName;
34                Console.WriteLine("Public Message is sent to {0}:", mq.Path);
35            }

36            //find private queues and send new messages
37            if (MessageQueue.Exists(@".\Private$\FrankMSMQ"))//获得私有的消息队列
38            {
39                MessageQueue mq = new MessageQueue(@".\Private$\FrankMSMQ");
40                mq.Send("Sending MSMQ private message" + DateTime.Now.ToLongDateString(), "Frank.Xu");//发送消息到私有的消息队列里
41                Console.WriteLine("Private Message is sent to {0}:", mq.Path);
42            }

43            Console.Read();
44        }

     比较重要的类就是MessageQueue,这行代码创建消息队列 MessageQueue mq = MessageQueue.Create(@".\FrankMSMQ"),参数是存放消息队列的位置.这个基本就完成了创建和发送消息的主程序.下面我 们来建立一个客户端,来访问消息队列,获取消息,同样建立一个控制台应用程序,添加引用和代码:

1namespace MSMQClient
2{
3    class Program
4    {
5        static void Main(string[] args)
6        {
7            //Get public queue message
8            if (MessageQueue.Exists(@".\FrankMSMQ"))//判断是否存在消息队列
9            {
10
11                using(MessageQueue mq = new MessageQueue(@".\FrankMSMQ"))//创建消息队列对象
12                {
13                    mq.Formatter = new XmlMessageFormatter(new string[] { "System.String" });//设置消息队列的格式化器
14                    //mq.Send("Sample Message", ":Label");
15                    Message msg = mq.Receive();//从队列接受消息
16                    Console.WriteLine("Received MSMQ Message is :{0}", msg.Body);//输出消息
17                }

18                    //Console.Read();
19            }

20            //Get private queue message
21            if (MessageQueue.Exists(@".\Private$\FrankMSMQ"))//判断私有消息是否存在
22            {
23
24                using (MessageQueue mq = new MessageQueue(@".\Private$\FrankMSMQ"))
25                {
26                    mq.Formatter = new XmlMessageFormatter(new string[] { "System.String" });//设置消息队列格式化器
27                    //mq.Send("Sample Message", ":Label");
28                    Message msg = mq.Receive();//接收消息
29                    Console.WriteLine("Received MSMQ Private Message is: {0}", msg.Body);//输出消息
30                }

31                    
32            }

33            Console.Read();
34        }

35    }

36}

 


1namespace MSMQClient
2{
3    class Program
4    {
5        static void Main(string[] args)
6        {
7            //Get public queue message
8            if (MessageQueue.Exists(@".\FrankMSMQ"))//判断是否存在消息队列
9            {
10
11                using(MessageQueue mq = new MessageQueue(@".\FrankMSMQ"))//创建消息队列对象
12                {
13                    mq.Formatter = new XmlMessageFormatter(new string[] { "System.String" });//设置消息队列的格式化器
14                    //mq.Send("Sample Message", ":Label");
15                    Message msg = mq.Receive();//从队列接受消息
16                    Console.WriteLine("Received MSMQ Message is :{0}", msg.Body);//输出消息
17                }

18                    //Console.Read();
19            }

20            //Get private queue message
21            if (MessageQueue.Exists(@".\Private$\FrankMSMQ"))//判断私有消息是否存在
22            {
23
24                using (MessageQueue mq = new MessageQueue(@".\Private$\FrankMSMQ"))
25                {
26                    mq.Formatter = new XmlMessageFormatter(new string[] { "System.String" });//设置消息队列格式化器
27                    //mq.Send("Sample Message", ":Label");
28                    Message msg = mq.Receive();//接收消息
29                    Console.WriteLine("Received MSMQ Private Message is: {0}", msg.Body);//输出消息
30                }

31                    
32            }

33            Console.Read();
34        }

35    }

36}

37

     消息接收同样需要实例化一个消息队列对象, using(MessageQueue mq = new MessageQueue(@".\FrankMSMQ"))负责创建消息队列对象.其次 mq.Formatter = new XmlMessageFormatter(new string[] { "System.String" })这行代码负责设置消息队列的格式化器,因为消息的传递过程中存在格式化的问题.我们接收消息的时候必须指定消息队列的格式化属性Formatter,队列才能接受消息.XmlMessageFormatter的作用是进行消息的XML串行化.BinaryMessageFormatter则把消息格式化为二进制数据进行传输.ActiveXMessageFormatter把消息同样进行二进制格式化,区别是可以使用COM读取队列中的消息.

     当然消息队列还可以发送复杂的对象,前提是这个对象要可串行化,具体的格式取决与队列的格式化器设置.此外消息队列还支持事务队列来确保消息只发送一次和发送的顺序.

     最近在研究SOA,所以系统系统学习一下WCF及其相关的技术,以上就是这个消息队列的基本的概念和简单的编程实现.下一节是关于.Net Remoting的基础知识和开发的文章.~

我准备把WCF相关的几个知识点都系统整理一下,包括代码的实现.发出来一起与大家交流学习~

(程序代码下载MSMQ_Codes)
                    

被人抢来抢去的感觉不错~

作者:shawn 发表于:2009年02月02日 -- 3238天12小时38分钟前 | 分类: 生活杂记 | Comments: 2 | Views: 2607

最近公司有几个project同时在进行,又由于council近期budget有点紧(都是让那些project manager们挥霍完了,可能也有小小的金融危机的影响),公司基本上空缺的职位都不招人来填补了。这样就苦了我们这些小的们。

再讲今天的故事之前,先来说一下我们部门的结构吧。我们算inhouse app development team,而这个team又分成2个小队:fasttrack team和project team。其中fasttrack team是做一些缝缝补补的东西,主要是抓虫。比如某个程序不工作了,就由fasttrack team来搞定。一般都是轻量级的。但是也会有很郁闷的虫,debug半天找不到原因。fasttrack基本上是属于吃力不讨好型的。project team顾名思意就是做一些新的工程啦,这个team比较爽,一般budget比较充裕,天天开会,吃吃喝喝,做的东西都是用的最新的技术,也相对好玩很多。有时候做完了一个project下一个还没来的时候就会很悠闲~
我,很幸运的被分在了project team里。但是就像前面说的,在两个project之间的时候,偶尔会没事做。而这时候,我就会被fasttrack的老大抓去做苦力--帮他们做东西。其实我一点也不介意帮fasttrack多做一点东西,倒还是蛮乐意的。这几天有些project又要开始coding了,我们project team的老大天天来跟fasttrack team的老大要我,因为fasttrack的一些东西我还没做完,所以他们2个人就一点一点的谈判时间。就像一个家庭妇女和街边小贩讨价还价似的。他们谈的越凶我就感觉很爽~ [emot]dog[/emot] 完全处于YY状态ing...

2个人商量的结果是星期三我就要回归project了,在fasttrack被"租借"了几个星期,也做了不少有意思的东西。现在的首要任务是我的[url=http://imshawn.cn/blog/read.php/281.htm]宏伟计划[/url]和[url=http://imshawn.cn/blog/post/NewYearResolution.php]新年大决心[/url]。HOHO~

刺猬大战

作者:shawn 发表于:2009年01月27日 -- 3244天19小时9分钟前 | 分类: 杂七杂八 | Comments: 0 | Views: 2588

玩过百战天虫的人都知道那是一款经典的游戏。但是Worms World Party是该系列最后一款2D版的游戏(该游戏相当的经典,适合所有年龄阶段,男女老少皆宜)。之后就出了Worms 3D,但是那也是5年前的作品了,而且我不是很喜欢虫虫在3D下的样子。

Anyways,这篇文章的重点是[url=http://www.hedgewars.com/]Hedge Wars/[/url],一款[color=#FF0000]开源[/color],跨平台的“百战天虫”。喜欢经典的朋友可以到[url=http://www.hedgewars.org/download.html]这里[/url]下载。可以单击作战也可以联机玩。本人吐血推荐。

========== Update ==============

刚才试玩了一下,手感没有百战天虫好,也缺少反跳键(百战天虫是z)。但是看在是开源、免费的份上,拿来消遣一下也很不错。况且现在也只是0.9.9版,相信会越来越好的。

在中文windows上安装的朋友们要注意,这个版本有个小bug,在“安装目录\Hedgewars 0.9.9\share\hedgewars\Data\Locale”下,需要自己复制一个en.txt并且重命名为zh_cn.txt才可以进入游戏。

慢慢学习享受生活

作者:shawn 发表于:2009年01月24日 -- 3247天15小时25分钟前 | 分类: 生活杂记 | Comments: 5 | Views: 2621

最近好像精力很旺盛,总是想捣鼓些乱七八糟的东西。可能是因为上班日复一日,两点一线太枯燥了吧,自己需要给自己找点乐子。

目前进行中的计划是:

* 学习网球。我觉得网球是个很有意思的运动。打起来也很漂亮。所以正在学习ing.
* 健身。还是觉得身体比较弱,所以决定去gym练练身体。如果可以把身体练得强壮一点,我会更帅。[emot]cool[/emot]

打算进行的有:

* 学习游泳。在国内的时候几乎每年夏天都会去游泳池,不过经常都只是泡泡身子,看看mm罢了,学会了一点点狗刨式蛙泳。我觉得,游泳作为一种运动也好,一种生活技能也好,是一定要会的。至少要掉在水里淹不死吧。用我同事的一句话说就是“游泳是唯一一个可以锻炼身体而又不会出汗的运动”,真是太美妙了。
* 学习吉他。小学的时候学过几年手风琴,后来由于学业原因就放弃了。乐器这种东西可以陶冶情操,并且我觉得吉他是最适合男生玩的一种乐器,貌似也比较容易上手。有空打算去淘一个二手吉他玩玩。

总结一下,上面75%都是关于体育的计划。来说一下原因吧。其实小时候的我还是挺爱动的,足球,篮球,滑板,乒乓球,单杠,高低杠都玩,而且自认为玩的还不错。初一的时候我有了电脑,慢慢的我变成了geek,运动少了,出门的时间也少了,变成了宅男。但是事情变得更糟是在初三的时候。2001年3月8日,我很帅地骑自行车和东风大卡来了个亲密接触。结果是大腿骨折。后来就是一年内的两次手术 -- 在骨头上打钢筋、取钢筋。在那期间完全没有进行任何体育运动。成为geek中的geek,宅男中的宅男。这也间接的导致了我大学的major选择和现在的职业取向。不过既然现在一切都已经上了轨道(偏轨也不会偏的太多),我是否应该腾出一点点时间用在其他事情上,apart from sitting in front of the computers all day? 我对Gardening(不要太茂密的都可以接受),reading(喜欢的体裁有:经济管理(杰克说这类书看多了容易让人意淫,我比较同意他的观点),历史,人物传记,哲学,商业/营销等等。不喜欢虚构的小说),sports(上面说到了),movies(喜欢的类型有:历史/战争片,Comedy),Gaming(喜欢的类型:SLG(即时战略)。不是说了要远离electronics嘛~ 哎,geek的特性就是改不了~),travelling(喜欢去大城市和风景漂亮的地方。最想去但是还没有去过的地方是日本、台湾和米国),还有music等等都很有兴趣。

其实生活还是很有意思的,这个世界上有那么多聪明的人发明了各种各样的游戏/活动供我们享受,我们需要自己去挖掘,找到自己的interests。我,正在挖掘ing。以后口号要变成:今天,你享受生活了吗?

每逢佳节倍思亲

作者:shawn 发表于:2009年01月23日 -- 3248天10小时43分钟前 | 分类: 生活杂记 | Comments: 2 | Views: 2401

如题,这句话我已经放在了所有与我有关的地方。QQ签名,MSN名字,校内签名,facebook签名……现在也写进我的blog。

年关将至,虽然这已经不是第一次在没有家人陪伴的国外过年了,但是今年比以前任何时候都想家,都想回去。可能是身边的人都走的差不多了吧,又或者今年和往年不一样,今年是工作以来第一年,这就注定了被栓死了要上班,以前年三十都是可以自己high到天亮再睡他一整天。

不知道为什么,感觉工作以后,会比上学的时候更想家,想了一下,可能是因为上学的时候比较自由,可以随心所欲,而工作以后就有点被束缚住了的感觉,做所有事情之前都要考虑到方方面面。

再来自我安慰下,其实不回去也挺好。今年是我第一年工作,回去的话首先压岁钱肯定是没有了。家里的小一辈,说不定还得跟我要呢~ 所以不回去可以避免一些钱财损失……

还记得几年前和印尼的jojo聊天,之间说到了旅游/回国的问题。大概是说像我们这样,家在中国而自己一个人在国外的人(as opposed to 全家都移民到国外的人,比如jojo自己)回国比较划不来。因为同样等值的机票,你回国也只是去你去过的地方而已,但是如果你用这张机票去你没去过的地方旅游,比如欧洲或者美国,那多爽啊。最后的结论是,我们别无选择,因为我们的家在那里,如果给我100次选择的机会,要我选择旅游去新的地方和回国探望家人,我都会选择后者。

Anyways,最近不愧是新年,在Christchurch的活动也比较多(当然有些其实是凑巧,和中国的新年是没有关系的)。比如[url=http://bethere.co.nz/major/2009/55-world-buskers-festival]World Buskers Festival[/url], [url=http://bethere.co.nz/community/2009/891-chinese-lantern-festival]Chinese Lantern Festival[/url]都是每年我比较期待的活动。一定要去看看。

对了,1月21日是[url=http://www.natson.net/]Natson[/url]的婚礼,虽然看到了请帖但是不能回去参加了。在这里祝2人白头到老。

一零年就是我的本命年了,都说本命年会比较命背。我是不是应该从现在就开始穿红内裤呢?

祝大家牛年快乐。

New Year Resolution(新年大决心)

作者:shawn 发表于:2009年01月14日 -- 3257天16小时54分钟前 | 分类: 生活杂记 | Comments: 2 | Views: 2115

今天闲来没事,想看看去年写的new year resolution是什么,看看一年过去了,有没有实现。结果是找了很久,发现我2008年竟然没有写new year resolution!哎,算了,翻翻2007年的吧,找遍了blog,竟然也没有!原来好几年(至少2年)都没有写new year resolution了。好吧,虽然2009年已经过去了半个月,但是现在写也不算迟吧。

1. 从根本上对.Net技术有一个提高,熟练掌握.Net的方方面面,特别是仔细研读.Net MVC、Linq、WPF和WCF的东西。
2. 坚持体育锻炼,参加一个gym的membership,每星期至少去健身一次。
3. 考取MCPD。
4. 除了公司做的projects,自己独立开始写中型project。
5. 再学会一门语言,比如Python。
6. 涨工资。

就先这样吧。等年底再来看看完成了多少。

2009新年第一篇

作者:shawn 发表于:2009年01月11日 -- 3260天9小时40分钟前 | 分类: 生活杂记 | Comments: 5 | Views: 2414

快一个月没来写点东西了。

前几天主机商突然把我的主机给停了,莫名其妙的,没有预先通知的就给我停了。发了封email过去问咋回事,答"you account has been causing performance issues"。我实在无语,我的账户下面host的几个网站都不是很popular,并且数据也不多。怎么会影响主机性能呢?又发了封让他们解释详细点。之后收到回信说table没有indices。我觉得这纯属无稽之谈。我帐户下面最多的table里面也只有800多行的数据,大多数都是十几行甚至个位行数的表,有没有indexing根本无所谓。感觉纯属是他们找事。于是随便给我自己的blog的几个表加了几个index,用比较强硬的语气回了email说已经加了index,并且抱怨了他们的做事风格和没事找事。等了几个小时就给我重新开通了。

猪总是跟我说,回国让我陪他喝酒。我跟他说了几次我不喝酒。他今天又问我:[quote]“你到底为什么不喝酒?”[/quote]我仔细想了一下,是这么回答他的:[quote]其实很多原因
我不愿意把钱花在这种地方是最主要的原因。
我要开车是排在第二的原因。
喝酒会误事是并列第二。[/quote]
后来又想了一下,也许还有更多的原因,比如酒其实并不好喝,远远没有果汁的甜美味和苏打水的爽口味。甚至连自来水的清淡感觉也不如。口感一点也不好,为什么要喝呢?再比如我不喜欢喝酒以后的感觉,会晕晕呼呼的、脸红红的,并且带一点点发热(虽然这些和酒量还有喝的多少有关)。就是不喜欢那种感觉。当然失恋或者心情特别低落的时候,需要用酒精来麻醉自己的时候除外。
其实总结上面的原因,就是因为我找不到喝酒可以给我带来任何好处,或者说喝酒这个东西本身作为一个行为、一件事情来说有什么优点?想不到好处又有那么多的缺点,所以就不愿意去做了。我想这和我做很多事的时候都会先evaluate一下好处和坏处才会去做,是一个道理。

说了原因之后,猪说:[quote]不抽烟 不喝酒 不鬼混 唉 好男人啊“[/quote]这句话直接理解的字面意思就可以是在夸我。反语可以理解为”不抽烟 不喝酒 不鬼混 唉 太不像男人啦“。至于他这句话是夸我还是再说反语,我不知道,我也无所谓。反正这就是我嘛。我自己evaluate出来是好的,哈哈。

我觉得,我现在最应该做的事情,就是多看点书,多学点东西,并且好好活着。其他的事,都先搁着吧。

祝大家新年快乐。

新闻一则

作者:shawn 发表于:2008年12月13日 -- 3289天8小时20分钟前 | 分类: 生活杂记 | Comments: 7 | Views: 2733

[quote]12月12日综合报道 强奸并杀害20岁少女EMMA AGNEW的凶手LIAM REID今天被宣判最少26年的徒刑,根据新西兰媒体的报道这是新西兰司法史上位列第二的刑期。

根据STUFF网站的报道,被判26年的徒刑是新西兰史上第三长的刑期,而根据NEWSTALK ZB的报道,LIAM REID的判罚和另外一宗案件并列第二。

REID被很多媒体描述为本年度最为恶劣的罪犯之一,他不光强奸和杀害了20岁的少女EMMA,此前她还蓄意杀害另外一名旦尼丁的学生未遂。

对于REID的量刑决定是今天上午11点的时候在基督城的高等法院作出的,他在听到判罚决定之后甚至表现出不屑的神情,在被带离法庭时还作出V的手势来挑衅。

受害者EMMA的家庭对媒体表示,这个判罚决定让他们心里感到宽慰。

新西兰历史上被判刑最长的是WILLIAM BELL,他同样因为谋杀罪被判处终生监禁,最少30年不能假释。还有一名名叫GRAEME BURTON的杀人犯和REID一样,被判26年不允许假释。[/quote]
[color=#0000FF]新西兰的法律就是这么shit,奸杀才判26年,并且列为新西兰司法史第二重刑。新西兰不愧是罪犯的天堂!强烈鄙视无能的政府,白痴的法律![/color]

[color=#0000FF]ps: 我在想我有空是不是也该去抢个银行啥的,因为有90%以上的几率不会被新西兰无能警察抓住和即使被抓住几年就可以出来了。大家给点建议。[/color]