SqlServer 2008开启远程连接

 对于需要外部访问数据库的操作,需要开启sql server的远程连接。没经验的我等Google之。。大部分操作按照SQL Server 2008 R2如何开启数据库的远程连接来操作 但是。有一些很小的细节需要注意。我的数据库是Sql Server 2008 Express版。这个是VS自带的。为了管理方便,可以安装SQL Server® 2008 Management Studio Express 安装过程不多说。安装完成后,直接打开 服务器名称默认是空的。。“.”好像是不行的,这时候点击右边箭头。更多,本地和远程服务器。在远程服务器里可以找到。点击就可以了。 我按照文章改完。sa还是登不上。。然后又试了一些 如上图右键sa,属性,常规里设置sa密码。不要太简单。状态里的登录选项设为启用。ok。。我碰上的问题就这几个。

2012-08-20 · 1 min · bystander

未能从程序集“System.ServiceModel 错误

 今天在把wcf发布到远程服务器后。出现了这个错误。 确运行报告“未能从程序集“System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”中加载类型“System.ServiceModel.Activation.HttpModule”。”。 因为远程服务器是临时装的。肯定是少装了什么东西。。果断Google。直接输入下面的命令。安装注册一下asp.net4就可以了。 c:\windows\microsoft.net\framework64\v4.0.30319\aspnet_regiis.exe -iru 中间的版本号应该是自己去目录看一看。 哦。我的是win server 2008的服务器。如果你也遇到了同样的问题。试试吧。

2012-08-20 · 1 min · bystander

活出爱-史铁生

 我曾经写过:人与猪的自然差别是一个定数,人与人的心理差别却无穷大。所以,人与人的交往多半肤浅。或者说,只有在比较肤浅的层面上,交往是容易的。一旦走向复杂,人与人就是相互的迷宫。这大概又是人的根本处境。 我常常感到这样的矛盾:睁开白天的眼睛,看很多人很多事都可憎恶;睁开夜的眼睛,才发现其实人人都在苦弱地挣扎,惟当互爱。当然,白天的眼睛并非多余,我是说,夜的眼睛是多么重要。 人们就象在呆板的实际生活中渴望虚构的艺术那样,在这无奈的现实中梦想一片净土、一段完美的时间。这就是宗教精神吧。在这样的境界中,在沉思默想着向着神皈 依的时间里,尘世的一切标准才被扫荡,于是看见众生都是苦弱的,歧视与隔离惟使这苦弱加重。那一刻,人摆脱了尘世附加的一切高低贵贱,重新成为赤裸的亚当、夏娃。生命中必须有这样一段时间、一块净土,尽管它常会被嘲笑为“不现实”。但“不现实”未必不是一种好品质。比如艺术,我想应该是脱离实际的。模仿 实际不会有好艺术,好的艺术都难免是实际之外的追寻。 当然,在强大的现实面前,这理想只能是一出非现实的戏剧,不管人们多么渴望它,为它感动,为它流泪,为它呼唤,人们仍要回到现实中去,并且不可能消灭这惩罚之地的规则。 我可能是幸运的。我知道满意的爱情并不很多,需要种种机遇。我只是想,不应该因为现实的不满意就迁怒于那的梦想,说它本来没有。人若无梦,夜的眼睛就要瞎 了。说“没有爱情”,是因为必求其现实,而不大看重爱情更是需要信奉的。不单爱情如此,一切需要信奉的东西都是这样,美满了还有什么好说的?不美满,才是 需要智慧和信念的时候。 上帝把一个危险性最小的机会给了恋人,期待他们“打开窗户”。上帝大约是在暗示:如果这样你们还不能相互敞开心扉,你们就毫无希望了;如果这样你们还相互隔离或防范,你们就只配受永恒的惩罚。所以爱情本身也具有理想意义。艺术又何尝不是 如此?它不因现实的强大而放弃热情,相反却乐此不疲地点燃梦想。 我越来越相信,人生是苦海,是惩罚,是原罪。对惩罚之地的最恰当的态度,是把它看成锤炼之地。既是锤炼之地,便有一种猜想——灵魂曾经不在这里,灵魂也不止于这里,我们是途径这里!宇宙的信息被分割进肉体,成为一个个有限或残缺,从而体会爱的必要。

2012-08-19 · 1 min · bystander

面试体验:Google 篇

 尝试在自己的博客上搜索点东西,结果发现 4 年多以前还在博客上写过一系列的 recruiting events,把大四时候参加过的各种笔试面试都记录下来了。我从去年准备离开百度开始,到现在总过面试过 4 家公司:Google、Microsoft、Yahoo、Facebook,原本去年也想把面试经验写一写的,结果一拖就拖到现在。我不想写面试经验,因为我个人不喜欢漏题和背题的做法。我自己作为面试官,知道要设计出来一道好用的题目有多难,所以我希望面试者都是如实表现自己解题能力的。我更喜欢写面试体验,就是在整个面试过程中一家公司给人的印象是怎样的,HR 和面试官是否专业,能否让人信服这是一家值得长期工作的公司。 我想写的第一家公司是 Google,因为它是我在想要离开百度时第一家联系到我的公司。2010 年 12 月底的某一天早上,我突然感觉到我应该离开百度,因为如果这个时候已经没有勇气离开这家公司了,很可能就不会再想要离开了。当天中午在百度大厦西餐厅吃午饭,接到一个 Google 上海 HR 的电话,问我有没有兴趣去面试,我想既然你打电话来的时机那么好,我就答应你去面试吧。(在那一天之前,我对猎头的标准回复是「有美国或者香港的职位吗?」)她问我将来希望在北京还是上海工作,当时我对北京的厌恶程度还没有现在那么高,同时觉得搬家到上海又比较麻烦,于是就说在北京,接着我就变成跟北京 HR 沟通了。 Google 的 HR 会负责做两件简单得不需要面试官做的事情,这能够很好的提高招聘流程的效率。第一件是确认你能够适应工作环境中的英语,为此 HR 要我用英语跟她对话两三分钟,主要就是让我说说工作经验和其中的亮点。习惯在私企工作的人不要以为外企对英语的要求很高,其实大多数长期在中国工作的人说话或者发邮件都会很 Chinglish 啦,所以关键是要敢于用英语进行沟通。 然后 HR 发了一个 Codility 的地址给我,让我有空抽时间去做题。一个小时 3 道难度相当于 OI 基础题的题目,平均 20 分钟一道。最简单的题目一看就知道是 O(n) 能解决的,最复杂的题目看上去是 O(n^2) 但想一下就能优化为 O(n log n)。对于有算法训练背景的人来说,这样的题目会让人感觉到很有把握。对于没有经受过算法训练的人来说,掉进陷阱里是很容易的。很可能没有把 O(n^2) 优化为 O(n log n),结果超时;可能没仔细看题目说明的数值取值范围,某些变量选错了数值类型,结果溢出。考虑到 Google 重视算法的程度,再加上 Google 中国面试的额外难度,算法训练还是很必要的。 在我通过 Codility 测试后,HR 问我了对题目难度的反馈,然后约了一轮电话面试,并且告知面试主要围绕算法、数据结构、系统设计、编码来进行。Google 面试的格式都很固定,45 分钟内期望你能做出 3 道题来。这 3 道题最起码要能把人人都能想出来的「笨办法」用代码写出来,否则会让面试官感到不满意。如果有些题目能够比较快地做出来,面试官就会让你优化。就算你第一次给出的答案已经是业界已知最优解,面试官都还是会让你优化,因为谁也不知道有没有人能在面试过程中突然爆发,想出一些过去没人想到过的解法。如果面试官心中已有优化的方案,在你想不出优化方案时他可能会给你提供一些提示。 一轮电话面试后,HR 就开始约到 Google 办公室的面试了。第一次约了下午 3 轮面试,还是那个很固定的格式:每轮面试 45 分钟,两轮间隔 15 分钟。整个面试流程让人感觉到很人性化:在 Google 签到后,HR 会先带你去 kitchen 拿点吃的喝的,然后把你带到面试所用的会议室。多轮面试的话,HR 中间还会来问一下你要不要去洗手间,或者多拿两瓶水。面试完毕后 HR 会来问你感觉如何,同时也会让你知道面试官的初步反馈是否跟你的感觉一致。我在 3 轮面试中有一轮感觉不太好,因为面试官只给了 2 道题,并且我最终都没办法解出来,HR 也确认了就是这一轮的反馈不好。 此外,Google 的招聘流程还让人感觉到很有效率。作为面试官,我也知道自己写面试反馈有多喜欢拖延,而且公司填写面试反馈的系统越不人性化我就越想要拖延,然而公司内部系统做得人性化的又实在罕见。Google 的面试基本上隔天就有结果,然后 HR 就会约下一轮的面试。因为我在百度的时候每周哪个时间没有会议是很确定的,所以我总是选择下周同一个时间段来面试。在经过总共 4 轮面试后,HR 说因为前面有一轮的面试官反馈不好,所以希望再加一轮面试。因为前面反馈不好的面试官比较 senior,所以这次找了一位同样 senior 的面试官来面试,于是我又去了一次 Google 办公室。 完成 5 轮面试后,HR 把材料提交给 Google 的北京招聘委员会,结果没有通过。HR 说,因为 Google 都是按照后端工程师的标准来招聘,看重算法和数据结构,前端工程师要通过不容易。因为 Google 没有专门的前端工程师,只有一个软件工程师职位,所以所有人还是必须按照一个标准来衡量。她问我如果找到专门需要前端工程师的团队,并且需要额外再面试的话,我是否感兴趣。当时 Google 是我的第一选择,我当然说感兴趣啦。 后来 HR 跟我说,她帮忙问过 Google Maps,可惜对方说不要专才只要通才。又过了几个星期,HR 发现 IME 需要专门做前端的人,于是帮我再约了一轮面试。这轮面试是在 Google 办公室做的,但实际上是视频会议,因为面试官在美国。(不确定面试官是在美国出差,还是美籍华人。)面试过程跟电话面试类似,用 Google Docs 写代码,比电话面试要好的是说话时能够见到人。 这一轮面试结束后,我的材料再次进入 Google 的北京招聘委员会。HR 说这次专门找了对前端有经验的人来审阅我的材料,结果顺利通过了。接着 HR 问我要了一大堆的补充材料,包括高考成绩和 GPA(连同成绩单),还包括当前薪酬和竞争对手的 offer(我当时有 Yahoo 的 offer),甚至包括过去的获奖和晋升经历。所有这些材料都会发往 Google 美国总部审阅,具体流程 HR 没有细说,但看 Don Dodge 的文章可以了解一些。最后我被 Google 美国总部给拒绝了,然后 HR 还是一如既往地及时沟通,并且安慰了我几句。 ...

2012-08-11 · 1 min · bystander

C#调用Matlab引擎

 最近在使用matlab的时候。求多元函数取得最小值的时候。变量的值。于是就用到了sym符号。结果在C#中调用时总是出错。后来Google了N久发现是符号工具箱是无法编译的。。后来找到了替代方法。就是调用matlab 引擎。当然要稍微麻烦一点。因为调用引擎这种方法参数传递比较麻烦。我只想到了通过C#把需要计算的值保存到文本中。然后matlab中load进来。计算完成后 save出去。。 调用matlab引擎类似于在C#中新开了一个进程。然后执行一些命令。之前需要引用Matlab Application Type Library。这是个com组件 然后在程序里使用 using语句 using MLApp; 然后就可以正常使用了。使用我试过的有两种方法 MLApp.MLAppClass matlab = new MLApp.MLAppClass(); matlab.Visible = 1; string command="figure(1)"; matlab.Execute(command); matlab.Quit(); 很简单。Visible设置可见性。。command表示要执行的命令。 另一种是 MLApp.DIMLApp matlab = null; Type matlabAppType = System.Type.GetTypeFromProgID("Matlab.Application"); matlab = System.Activator.CreateInstance(matlabAppType) as MLApp.DIMLApp; matlab.Visible = 1; string command="figure(2)"; matlab.Execute(command); matlab.Quit(); 不知什么原因,第一种方法我没有调用成功。第二种调用成功。欢迎讨论。

2012-08-09 · 1 min · bystander

北外英语专业超全面翻译笔记PDF下载

 今天在网上看到的。就自己制作了一下pdf版本。方便大家。现在比较纠结的是没有一个好网盘。115竟然需要登录才能下载了。。刚才试了下。。更可怕的是,,只有绑定了手机才能分享。霖枫叔疯了么。。 那还是将就着用华为的吧。其实我也不喜欢华为的。。 下载地址:北外英语专业超全面翻译笔记

2012-08-05 · 1 min · bystander

WPF实现控件拖动效果

首先很简单,当然是去添加两个控件了,这里我添加了两个控件,都是label,然后我想实现的是将label1拖动到label2上的时候,label1的内容会被复制到label2上。 <Label Content="TestDrop" Height ="28" HorizontalAlignment="Left" Margin="70,35,0,0" Name ="label1" VerticalAlignment="Top" MouseDown="label1_MouseDown" /> <Label Content ="ToHere" Height="28" HorizontalAlignment="Left" Margin ="342,107,0,0" Name="label2" VerticalAlignment="Top" AllowDrop ="True" Drop="tagert_drop" /> 需要注意的代码是label1中的MouseDown事件。和label2中的AllowDrop =“True” Drop=“tagert_drop” 然后对应的处理事件 private void label1_MouseDown(object sender, MouseButtonEventArgs e) { Label lbl = (Label )sender; DragDrop.DoDragDrop(lbl, lbl.Content, DragDropEffects .Copy); } private void tagert_drop(object sender, DragEventArgs e) { (( Label)sender).Content = e.Data.GetData(DataFormats.Text); } 其他的效果可以仿照这个来做。比如拖动以后的效果可以DragDropEffects来设置。。

2012-07-27 · 1 min · bystander

未能加载文件或程序集“App_Web_xxxx”

 今天在用WCF写服务的时候,服务一直连不上,直接查看svc文件,发现如下错误 未能加载文件或程序集“‘App_Web_****, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",****是一个随机字符串。 解决方法中: 在web.config里配置成这样子: <compilation debug="true" batch="false"> 就好了。中午和下午一直在搞javascript连接WCF的demo,总算是晚上搞定了,,还是老样子,,最大的体会就是很多东西就是看着简单,写起来会有各种各样的问题,比如这次,即使照着微软的官方文档来,也会有错误。动手才是王道,不管做什么。这几天忙完了,写篇文章出来。 最后分享一下微软官方的WCF与Ajax开发实践系列课程,我只能说WCF这东西没有哪一本书比微软官方的技术培训讲的更好了,非常建议学习。 武汉最近下雨了,天气挺凉爽,过几天准备回家吧。。

2012-07-14 · 1 min · bystander

C#中的抽象类和接口

本文同样是笔记整理,手动输入一遍和看书的感觉还是很不一样的。文章非常好,讲的很清楚。 什么是接口? 接口是包含一组虚方法的抽象类型,其中每一种方法都有其名称、参数和返回值。接口方法不能包含任何实现,CLR允许接口可以包含事件、属性、索引器、静态方法、静态字段、静态构造函数以及常数。但是注意:C#中不能包含任何静态成员。一个类可以实现多个接口,当一个类继承某个接口时,它不仅要实现该接口定义的所有方法,还要实现该接口从其他接口中继承的所有方法。 什么是抽象类? 抽象类提供多个派生类共享基类的公共定义,它既可以提供抽象方法,也可以提供非抽象方法。抽象类不能实例化,必须通过继承由派生类实现其抽象方法,因此对抽象类不能使用new关键字,也不能被密封。如果派生类没有实现所有的抽象方法,则该派生类也必须声明为抽象类。另外,实现抽象方法由override方法来实现。 比较 相同点 都不能被直接实例化,都可以通过继承实现其抽象方法。 都是面向抽象编程的技术基础,实现了诸多的设计模式。 不同点 接口支持多继承;抽象类不能实现多继承。 接口只能定义抽象规则;抽象类既可以定义规则,还可能提供已实现的成员。 接口是一组行为规范;抽象类是一个不完全的类,着重族的概念。 接口可以用于支持回调;抽象类不能实现回调,因为继承不支持。 接口只包含方法、属性、索引器、事件的签名,但不能定义字段和包含实现的方法;抽象类可以定义字段、属性、包含有实现的方法。 接口可以作用于值类型和引用类型;抽象类只能作用于引用类型。例如,Struct就可以继承接口,而不能继承类。 规则与场合 请记住,面向对象思想的一个最重要的原则就是:面向接口编程。 借助接口和抽象类,23个设计模式中的很多思想被巧妙的实现了,精髓就是面向抽象编程,通过封装变化来实现实体之间的关系。 抽象类应主要用于关系密切的对象,而接口最适合为不相关的类提供通用功能。 接口着重于CAN-DO关系类型,而抽象类则偏重于IS-A式的关系; 接口多定义对象的行为;抽象类多定义对象的属性; 接口定义可以使用public、protected、internal 和private修饰符,但是几乎所有的接口都定义为public,另外方法的访问级别不能低于接口的访问级别,否则可能导致编译错误。 “接口不变”,是应该考虑的重要因素。所以,在由接口增加扩展时,应该增加新的接口,而不能更改现有接口。 尽量将接口设计成功能单一的功能块,以.NET Framework为例,IDisposable、IDisposable、IComparable、IEquatable、IEnumerable等都只包含一个公共方法。 接口名称前面的大写字母“I”是一个约定,正如字段名以下划线开头一样,请坚持这些原则。 在接口中,所有的方法都默认为public。 如果预计会出现版本问题,可以创建“抽象类”。而向接口中添加新成员则会强制要求修改所有派生类,并重新编译,所以版本式的问题最好以抽象类来实现。 从抽象类派生的非抽象类必须包括继承的所有抽象方法和抽象访问器的实实现。 对抽象类不能使用new关键字,也不能被密封,原因是抽象类不能被实例化。 在抽象方法声明中不能使用 static 或 virtual 修饰符。 最后还是要勤于键盘,才能深入理解啊。 参考:对抽象编程:接口和抽象类

2012-07-10 · 1 min · bystander

C#中的字符串驻留

字符串string可以理解为char[],他是一个引用类型。 字符串创建 操作上类似于int,char等类型,直接进行赋值,string str=“bystander”;虽然string 是个类,但是如果你天真的使用 string str=new string("bystander"); 来构造,会导致一个编译错误。因为System.String只提供了数个接受Char*,Char[]类型参数的构造函数。 所以只能像下面这样使用, Char[] cs={'b','y','e'}; String str=new String(cs); 看出来了吧,很麻烦的。所以一般还是使用第一种。 字符串恒定性 恒定性(Immutability),是指字符串一经创建,就不可改变,这是String最为重要的特性之一。具体来说,就是字符串一旦创建,就会在托管堆上分配一块连续的内存空间,我们对其的任何改变都不会影响到原有的String对象,而是重新创建的新的String对象。类似Insert,Substring,ToUpper都只是创建出了新的临时的字符串,会成为下次垃圾回收的目标。 好处: 保证了对String对象的任何操作不会改变源字符串。 恒定性还意味着操作字符串不会出现线程同步问题 恒定性一定程度上,成就了字符串驻留。 字符串驻留 CLR维护一个表来存放字符串,该表叫做拘留表(或驻留池),他包含程序上以编程方式声明或创建的每一个唯一的字符串的引用,因此具有特定值的实例在系统中只有一个。如果将同一个字符串分配给多个变量,那么CLR就会向拘留池检索相同引用,并分配给变量。 通过下面这个例子来说明: class StringInterning { public static void Main() { string strA = "bystander"; string strB = "bystander"; Console.WriteLine(ReferenceEquals(strA,strB)); string strC = "by"; string strD = strC+"stander"; Console.WriteLine(ReferenceEquals(strA,strD)); strD=String.Intern(strD); Console.WriteLine(ReferenceEquals(strA,strD)); } } 猜猜答案是什么。。 正确答案是:True,False,True 为什么不是我们通常认为的那样呢。这就是因为字符串驻留了 缘起 String类型的特性恒定性,对字符串的任何操作都只会创建新的字符串,这会导致性能下降,而String又用的很频繁,为此,CLR使用字符串驻留来解决这一问题。为此,CLR内部维护一个哈希表,来管理其创建的大部分string对象。其中Key为string本身,Value为分配给对应的string的内存地址。 细节 string strA = "bystander"; CLR初始化时,创建一个空的哈希表,当JIT编译方法的时候,会首先在哈希表中查找每一个字符串常量,显然找不到任何"bystander"变量,因此会在托管堆中创建一个新的string对系那个strA,并更新哈希表,Key被赋值为"bystander",Value被赋值为strA的引用.也就是Value内保留了"bystander"在托管堆中的引用地址. string strB = "bystander"; 接着,JIT根据"bystander"查找哈希表,结果找到了,所以JIT不做操作,只把找到的key对应的Value值赋给了strB对象.因此,第一个输出为true,引用相等. string strC = "by"; string strD = strC+"stander"; 同样,JIT向哈希表中添加了Key为"by",Value为托管堆上"by"的地址.返回strC对象.但是注意,strD不同,JIT不检测,因为strD他是动态生成的.这样的字符串不会被添加到哈希表中进行维护,而是在托管堆中直接分配,所以第二个Console输出False. 对于第三个,我们首先看看Intern方法和IsInterned方法,对于动态生成的字符串,因为没有添加到CLR维护的哈希表,所以字符串驻留机制对其失效,但是可以手工开启,来实现高效的比较字符串相等. public static string Intern(string str) public static string IsInterned(string str) 两者的机制都是去哈希表中查找是否存在str字符串,找到的话也都返回对str的引用,不同的是当哈希表中没有str的话,IsInterned返回null,而Intern将把这个字符串添加到哈希表,并返回引用.注意,IsInterned返回非null并不代表两个字符串引用了相同的地址. 所以 strD=String.Intern(strD); Console.WriteLine(ReferenceEquals(strA,strD)); 就很好理解了.

2012-07-08 · 1 min · bystander