如何使用Google解决问题

如何使用google解决问题 如何使用google解决问题redguardtoo 2004/07/07本文介绍了使用google解决难题的一些高级技术,重点讲述了如何选择关键字,如何分析过滤信息等等。1. 声明请读者不要使用本文所介绍的技巧从事违法、不道德的事情。我对于本文所导致的任何后果概不负责。 2. 本文所面向的读者本文介绍了使用google解决难题的一些高级技术,重点讲述了如何选择关键字,如何分析过滤信息等等。通过阅读 阅读详情

作者:redguardtoo

1. 声明

请读者不要使用本文所介绍的技巧从事违法、不道德的事情。我对于本文所导致的任何后果概不负责。


2. 本文所面向的读者

本文介绍了使用google解决难题的一些高级技术,重点讲述了如何选择关键字,如何分析过滤信息等等。通过阅读本文,你会明白在极大的时间压力下快速解决高难度问题的技巧。你也能了解如何对一些复杂的问题进行调查并给方案。任何对解决问题有兴趣的人都适合阅读本文,只要:

你不相信"软件蓝领"的说法。你相信解决问题的能力是人的本能。你相信任何问题的本质都是一样的。你相信解决问题需要的能力是想象力和举一反三的能力。

说的明白一点,我希望读者是有职业荣誉感的工程师,或者是能够理解这种荣誉感的人。有些人害怕自己即将被技术的进步所淘汰,于是试图通过贬低技术人员的地位来获得安全感。由于他们不能否认技术所取得的伟大成就,于是使用一些政治手腕来间接地达到目的。最常用的手段就是虽然技术是伟大,但是工程师是分等级的(是不是封建残余思想作怪?),低级的工程师就是蓝领,而中国需要的是大量的蓝领,等等。这种有封建残余思想的人是不可能学习新东西的,当然也不可能理解本文,因为要成为google高手,就必须具备开发的头脑和丰富的想象力。


3. 如何使用google解决各种问题

3.1. 不可能完成的任务

一个中国公司的项目组的主要工作是测试一个日本的项目组用C语言开发的系统(调试器为gdb)。一次日本程序员遇到了一个奇怪的问题,当他们用gdb调试时,程序会突然退出。这些程序员研究了两天两夜,不能找出原因。于是他们把退出前调试器上显示的一段错误信息email给中国小组。要求这个小组找出原因。

那时,我刚加入这个公司。这个组的组长要我帮忙。我看了错误信息,用到了我不熟悉的进程间通信技术。我按照通常的调试流程,要求重现错误。"无法重现,因为不知道程序是在哪崩溃的,而我们这也没有运行环境",回答的斩钉截铁。我要求看源代码。组长告诉我,可以给我看的都是旧代码,真正出问题的代码早更新过几个版本了,中方暂时还拿不到新代码。说白了,就是没代码。我告诉组长,在这种条件下要解决问题是不可能的。但是领导的意思是利用手头的信息,争取当天解决。

让我小结一下。无法重现错误,没有源代码,不了解相关技术,无法定位bug的大概位置,开发者自己花了两天两夜也无法找出bug原因。而我只有一小段错误信息,除此之外连系统干什么的都不清楚,并被告知不要指望进一步的帮助了。我该如何解决这个问题?

在读者解答这个问题前,我给点提示,日本程序员都是有经验的,他们肯定已将错误信息用google翻了个遍。

给出这个问题的答案花了我15分钟时间。这15分钟时间内我没有读任何文档或者代码。在说明答案前,让我先试着给出思路。我猜日本人已经查过相关的技术手册了,所以我没有必要读手册。给我的信息有限,是因为日方只能提供这些线索。现在看看给我们的一段错误信息是什么?无非是程序退出时,调试器gdb打印的一些信息。例如退出的进程收到了什么信号,该信号是哪个进程发送的等等。我的下一个假设就是日方已经google过这些信息,所以我也不能从这些信息中挖出什么东西了。

要解决问题,就必须发挥想象力,做日本人"没有做过的事情"。日本人没有做过什么?我猜没有做过一件事情,那就是google一下冗余信息。gdb显示错误信息的时候,会以一定的格式显示,比如若干个空格加个冒号什么的。现在我将这些错误信息随机取出一行,这一行既包括了有用的信息,也包括了冗余的信息。我在这一行的内容前后加上双引号,以告诉google尽可能严格匹配该行。然后以此作为关键字google到了答案。答案来自于gdb的一个mailing list,gdb的开发者解释说这是gdb的一个bug,该bug在特定条件下使用特定版本的gdb调试才会发生。

事实上当时我根本没有做如上的分析,接到任务后我做的第一件事就是google冗余信息。这是我的习惯。冗余信息和有意义的信息一起检索的好处是可以快速定位到有同样问题的人。说的更明白一点,象我这样的懒人,如果要在网上求助的话,一般顺手把调试器中的相关信息全部粘贴到网上,我不会先对这些信息进行排版的。如果要尽快地得到答案,我找的就是象我一样的懒人。当然这样做的坏处是会过滤掉一些有用的信息。例如我现在检索gdb的冗余信息,就排除了使用别的调试器的人。好在internet上信息实在是太丰富,过滤掉有用信息不是问题。真正的的问题是从无用信息中快速定位有用信息!


3.2. 如何快速解决具体技术问题

一些"聪明人"相信,只要有某种"伟大、正确"的思想(比如某种"大法")的指导,任何难题都可以摆平(摆平的方法就是背诵一下伟大思想中的某些特别棒的词)。没有这种信仰的人,只是愚昧无知的小爬虫。"聪明人"解决问题很简单,对问题大面上讲一讲,再念一下咒语。本文是由我,小爬虫中的一条写的,小爬虫不能理解伟大的思想。我解决问题采用和"聪明人"相反的方法。就是从不起眼的细节入手,发挥想象力,举一反三。这个过程中"伟大、正确"的思想连影子也没有出现。

最近我接到了一个任务,要求实现一个扫描给定目录下的文件的模块。问题的难点是这个模块作为一个共享模块(shared ojbect),必须知道自己的物理路径。由于运行平台是Linux,并没有直接支持这种功能的API函数(和Linux应用程序的部署规范有关系)。现在如果我必须实现该功能,该使用什么关键字搜索?

最直接的想法就是google"get shared object path linux"。得到的大都是如何在Linux下开发共享模块的入门文章。增加其他关键字,例如"shared library","physical path",结果也差不多。这个问题的难点不在于选择足够多的关键字以过滤出需要的信息,而是根本就没有信息可以过滤。之所以没有信息可以过滤,是因为Linux有自己的应用程序部署规范(例如配置文件应该放在/etc目录下,可执行文件放在/usr/local/bin目录下等)。如果遵循了这种规范,就没有必要知道共享模块的物理路径了。通常获得共享模块的物理路径是为了由该路径推算配置文件的路径。

最终问题还是被解决了。我使用了什么关键字?答案很简单,既然正面攻击无效,就旁敲侧击。想一想,如果运行平台是Windows,如何实现该功能?Windows下通常用"GetModuleFileName"API实现。如果有些程序员要把Window的程序移植到Linux下,他(她)该拿GetModuleFileName怎么办呢?答案出来了,google"GetModuleFileName linux"。搜索结果第一条标题是"Qt-interest Archive - location of the program i am running",就是关于如何获得一个可执行文件的路径的。分析一下google第一页的搜索结果,发觉有一些干扰信息(如何判断干扰信息我将在后文说明)。这说明我们需要稍微修正一下关键字。google"GetModuleFileName +linux"(这里的加号表示linux作为关键字必须出现在搜索结果中)。搜索结果第17条标题为"Guide to Making Relocatable Applications :: autopackage",这就是标准答案了。

可以看出,解决问题的关键有两个要素。第一个要素是相关的背景知识。作为业内人士,我知道很多公司和个人正在将Windows平台下的软件移植到Linux上。我也知道Windows下如何获得全路径。第二个要素,结合背景知识发挥想象力,通过一些有特点的细节搜索到正确的答案。"GetModuleFileName"就是细节,我想到了可以把这个词和"linux"结合在一起搜索。

让我再举几个例子,说明如何从细节入手,找到问题的答案。

比如说我要找一个名叫MySoft的软件。我可以google"MySoft 下载"。如果这样做却找不到该软件的下载网址,该换个什么关键字呢?一些提供bt下载的网站会提供少见的软件的。我不是建议使用"MySoft 下载 bt"或者"MySoft 下载 变态"之类的关键字。我要做的是观察一下变态网站的下载页面,真正的关键字是不起眼而又特殊的。在下载页面我们看到"日期"这个词,这个词能做作为关键字吗?不能。这个词太常用。同样的下载页面中的"种子"这个单词适合做关键字。把软件名和"种子"组合起来作关键字,应该不会使我们搜索到农业网站。观察一下那些下载网址的超链接,可看到超链接的值为"http://xxx.com/torrent/UPLOAD/index.php?url==4",多观察几个超链接,可以看到"torrent"是个不错的关键字。我猜google"MySoft torrent"的结果应该不会和河流有什么关系。结论就是,可以google"软件名 torrent 种子"来找到需要的软件。

在上例,我对变态下载的了解有助于解决问题。关键字我是通过观察得到的。这些关键字对于业余者只是不起眼的细节。

如果我要找VB(Visual Basic)语言写的源代码的话,我会加上""end sub""关键字,因为这个关键字是VB的语法特有的。如果我要找C/C++代码参考,我会加上"CVS"作为关键字,这是因为很多开放源代码的项目都是用C或者C++写的,而这些项目都是用CVS作为版本服务器,并用CVS服务器的插件公布到网上的。VB语法和开源软件,这是我的背景知识。但具有相同背景知识的人不一定能找出关键字来。重要的是观察。观察VB的代码,观察开源软件的主页,发挥想象力,从细节中提炼出关键字。

读到这里,读者是不是有点开窍了?解决问题分两步走。首先要有背景知识。然后是发挥想象力,将看似无关的细节结合起来,提炼出关键字。


3.3. 如何解决复杂抽象的问题

一些复杂抽象问题不可能快速找到答案。但是只要方法正确,这些问题最终还是可以使用google一步步解决。步骤是这样的。首先你对问题进行一般描述,从描述中取出关键字google。接下来阅读google的搜索结果,选出有价值的文章。然后从这些文章中分析出有代表性的关键字,继续搜索,阅读结果。重复以上步骤。要注意的是,关键字不应冷门,因为相对于问题的复杂性和抽象性,你的背景知识是不够的。搜索、阅读、搜索的步骤重复多次后,应该对问题有所了解了。在尽可能多地收集资料后,现在可以得出一个初步结论(不要忘记收集不支持该结论的资料)。下一步可以从大问题中提炼出小问题,使用前述的技巧解决小问题。这样做的目的是获得对大问题的切身感受,不是试图解决大问题本身。关键是多角度收集资料。资料不应是相互证明的,最好是互相冲突的。我再强调一下,由于问题的复杂性和抽象性,不要期望在短期内使用特殊技巧解决问题。有了结论,有了支持和反对的资料,又做过一些小的试验,你下一步要做的就是将结论,资料,试验结果提交讨论(超人可以光速飞行,你不可以)。就个人能做的工作而言,你做到这里就不错了。从问题本身来说,复杂抽象的问题的真正的解决,需要许多人长时间地讨论和试验。

下面我讲给出演示,说明这类问题如何着手。

我们以"软件开发行业的新手应该学习什么编程语言,如何学习"为例。如前文所说,应该选择一般描述的关键字。所以我建议你不要把和编程语言有关的关键字加入,而是应该选择如何学习编程的关键字。"how to"就是中文的"如何",是老外技术文章最爱用的标题。(题外话,"how to"是我个人的王牌关键字)。"learn programming"的中文意思就是"学习编程"。加上前面所说的"how to",完整的关键字为""how to" learn programming"(注意:how to 前后的英文双引号表示将how to这个词组作为一个词来搜索)。

现在我们看一看搜索结果。搜索结果第五条"Teach Yourself Programming in Ten Years(十年才能学会编程)"就是一篇很好的文章,介绍了学习编程正确的态度和方法。其他的还有诸如"How To Pick A Programming Language(如何选择编程语言)",你应该比较感兴趣吧。还有诸如"How To Become A Hacker(如何成为黑客)",这可是一篇经典文献啊(这里的黑客是指优秀的程序员)。其他的还有"How to Get Started with C++(如何开始学习C++)","Instant Hacking : Learn how to program with Python(如何使用python编程)","How Java Works(java是如何工作的)","How C Programming Works(C是如何工作的)","How to Program Perl(如何学习Perl编程)","How to: Learn Visual Basic Programming(如何学习Visual Basic编程)"等等。

关于《Teach Yourself Programming in Ten Years(十年才能学会编程)》这篇文章,有必要再谈一谈。希望你不要被这个标题吓住了。让我告诉你一个小秘诀,关于如何判断选对了关键字的秘诀。作为初学者,你不了解软件开发,就象我不了解如何导演电影。所以,也许你自认为没有能力分析搜索结果。有一个办法可以帮你在初次搜索的时候作出正确的判断。作个初学者,你会自认为对软件开发的"常识"和流行趋势还有点了解,例如你认为好程序注释多,例如你认为编程可以在21天你速成。这可能是一种偏见,google是没有偏见的。如果你自认为使用了正确的关键字,google的结果却都是一些和你的"常识"唱反调的文章,说明了什么?说明你选对了关键字。

假设你选好了几种编程语言,现在该是了解那些语言的缺点的时候了。老外对于某种语言和某种文化最爱用的批评语就是"is dead(要玩完了)",例如"C++ is dead"。现在就让我们google"C++ "is dead""(注意:is dead 前后的英文双引号)。搜索结果有点出乎意料?搜索结果竟然大都是"Java is dead",这不表明Java就是一种很差的语言,进一步的结论需要阅读搜索结果。现在我们调查的编程语言是C++!让我们实行更严格的关键字匹配,google""C++ is dead""(注意:C++ is dead 前后的英文双引号)。终于得到相关的文章了。这些文章不仅讨论了C++,对于你选择其他编程语言是很有帮助的。例如标题为"khakipants: things to learn"的文章就讨论了学习OCaml和Ruby的必要性。让我们再试一试其他编程语言(这样多来几次你爱上了搜索),google""Visual Basic is dead"",google""Perl is dead"",google""Html is dead""。

最后,你终于决定要学习一种语言,比如C++,现在就是了解一下关于C++有哪些工具和资源的时候了,直接google"C++"。


4. 如何提高自己的搜索能力

4.1. 态度决定一切

前面介绍了如何选择关键字解决问题的技巧。接下来要详细论述一下如何获得这些技巧和如何进一步提高搜索水平。由于这些论述都是基于我的经验和体会,肯定有很多偏颇的地方。如果读者有什么更有效的方法,请务必让我学习(我的email见本文开始部分)。

要成为google高手,首要的是态度。"态度决定一切"。如果你相信google是解决问题的强大工具,能够给你带来看得见摸的着的好处,你喜爱,崇拜google。你就有很大可能成为google高手。一种比较天真的想法就是"因为google太强大了,所以不应该用google"。其背后的动机是,工具太强大,人就会依赖工具而丧失了某些技能。我认为,人(当然也包括程序员)的价值,在于人的智力,感情,道德。所谓技能,只是上述抽象品质的灵活运用而已。学习新工的好处远不是提高了效率这么简单。真正的好处是获得"原来可以这样做"的启发。死抱住旧工具的人不能获得安全,他们的结局是被潮流淘汰。例如当坦克刚出来的时候,出身于骑兵的巴顿将军毫不犹豫地拥抱坦克这种新的战争工具,最后成为装甲战术大师,名垂青史。担心自己丧失技能的波兰骑兵被纳粹德国的装甲师屠杀于战场之上。技术人员真正重要的技能,是识别新技术的价值的洞察力和使用新技术的行动力。。


4.2. 疯狂搜索法

有了热情,要成为google高手轻而易举。你需要的只是练习。接下来我要介绍练习的办法。和一般人的想法不一样,我不认为"为了特定问题猜关键字"这件事情本身可以作为一种练习手段。我推荐名为"疯狂搜索法"的练习方法。方法很简单,找一篇有趣的文章,将它的字、词、句以各种方法搜索一遍。试着分析搜索结果,(分析方法在后文有详细描述),要有一个好或者不好的结论。好,就提供了有用的信息。

让我举个例子。我"疯狂搜索"一下标题为"软件商对用户的角色扮演"的文章。首先google其标题"软件商对用户的角色扮演"。搜索结果有两页,可以看出该文原始出处为ChinaByte。接下来再google作者"老单",从搜索结果看,标题为"老单:三说软件从业者"的文章似乎也是同一人所写。但是叫老单的人好像多了点。例如标题为"老单和他的6+1彩票预测术"一文中的老单不是我们要找的人。google"老单 软件"以过滤垃圾信息,可以看到"浅析作坊式开发","软件企业里的官儿"等文也是其写的。只要将这四篇文章放在一起分析。一切都很明显了。老单谈的都是个人体会,文笔流畅。现在该做结论了了。我的结论是老单提供的都是真实的信息,结论是好。

接下来我们google文中的单词。以第一句"软件企业以盈利为目的进行生产经营和产品销售,自然地被称为软件商"为例。首先google"软件企业"。看起来"软件企业"不是一个有特点的词,可以说是一个大词,不是好的关键字。google"生产经营"得到诸如"中国农业银行---贷款业务个人生产经营贷款"之类的文章,分析下来该词较书面化,多出于政府公文,新闻等等。"生产经营"也象一个大词。google"产品销售",得到结果多是各企业网站的产品页面。如果将该词和别的词组合,似乎可定位到企业网站的特定页面。google"软件商",搜索结果似乎暗示该词是一个中性词,有意思的是该词似乎同时指软件销售企业和软件开发企业。中性词的大量使用可能暗示着使用该词的人在该文中保持着超脱的立场,可能说明作者不是业内人士。如果我是业内人士,我会把自己的职业用褒义词来描述,例如"软件研发人员","程序设计大师"等等,不会使用"软件蓝领","写代码的"等贬义词(有些人认为这些词不是贬义词)。中性词的使用也可能是因为作者必须适应读者的习惯。

篇幅有限,我就分析到这了。最后让我举出该文最有意思的两个词,"受众需求"和"漫天吹起"。"受众需求"的搜索结果有点意思,该词显然大量使用于新闻广告行业,似乎是一个专业术语。"漫天吹起"的搜索结果只有两条,一条就是我们正在分析的文章,另一条是"圣剑传说Ⅲ"。老单可能有意使用一些词增加"文采"。


4.3. 如何提高"搜索素养"

这样分析下来是不是很有趣,也许各位已经跃跃欲试了。不要急,这只是入门练习。要成为专家,关键使提高"搜索修养"。搜索修养体现为快速过滤掉无用信息的能力和定位有用信息的能力。实际工作中碰到的问题不是通过一次google搜索而是通过多次"深度搜索"才得以解决。"深度搜索"的意思是,第一次搜索得到的结果必须由人来阅读和分析,然后以分析的结果进行下一次搜索,依此类推。我的经验是,较难的问题往往需要进行几十此搜索才能找到正确答案。假设每次google搜索的结果是25条记录,我如果不做快速过滤的话,进行一次"深度搜索"需要看的搜索结果就是25×25=625条搜索记录。进行两次"深度搜索"需要看的搜索结果就是25×25×25=15625条搜索记录。

要提高搜索修养,根本办法是大量阅读各种非技术类书籍(技术类书籍如果不是工作需要,读起来有点累)以及进行适当的写作训练。这个问题本身可以写成一篇文章,本文由于篇幅所限是无法展开了。这里只提供我的一点心得。

过滤搜索结果的关键是两点,"信用(credit)"和"风格(style)"。

所谓"信用",就是提供信息的人的本身的可信度如何,说白一点,就是他(她)是否以前做过相关的比较优秀的工作。例如,因为我读过John Robbins写的《应用程序调试(Debug Application)》,所以在调试技术方面我非常信任John Robbins。由于信用是可以延伸的(所谓爱屋及乌),John Robbins的文章中引用到的资料的作者在我的心目中也是大师。反过来说,那些提到John Robbins名字的文章的信用也要比没有提到的信用要高。这里有个陷阱,提到过于出名的大师的名字不一定是好事。有些大师太有名了,以至一些不学无术的人会大量引用他们的名字或者文章以掩盖自己的贫乏。例如,提到"linus"名字次数多的关于linux的文章并不一定有多少价值。某些世界级的开源项目的骨干程序员在也是有信用的。上述标准对我够用了。因为我水平有限,对于行业内的专家了解不多,所以我需要坚持高标准。这个标准就是,全世界范围内有影响的项目,书,人才算有信用。

有时搜索结果不都能和大师联系起来。例如提供资料的人是某个"技术工作者"。这时我觉得不应从"信用"的角度来判别了。有些人会从国籍,种族,性别,年龄,工作过的公司乃至上过的中学的名字来判断作者的信用,再推论文章的价值。这种方法有歧视的味道,也不可靠。我倾向于从"风格"出发。内在的风格是是无法掩饰的。例如我姐姐中文系毕业,虽然工作只是起草简单的公文,但她总不会忘记在文中加入几个"文雅"的词,以显示中文系没白读。

对技术人员来说,风格的判断结果是很简洁的,"好"或者"坏"。为了得到这个结果,需要一些指标来。我简单地谈一谈我使用的指标。由于我的无知和偏见,再加上篇幅有限(我正在应编辑的要求删文章呢),这些指标肯定有很多漏洞。请读者对我抱有宽容之心。接下来就谈一谈这些指标。

标题是否言之有物。《redugardtoo谈中国的软件工程实施难点》中的"中国","软件工程"就是太抽象的词。这种标题的文章如果篇幅少于100页的话,不会有什么真正有价值的内容。起这样的标题的作者通常不知道自己谈的是什么,所以敢来一个庞大的标题。考虑到国人的习惯,有一个伟大标题的文章业不能一棒子打死。我建议这个指标这样用。标题言之有物是好现象。果反之也不是坏现象,可以结合下面的指标判断一下正文的内容再说。

正文是否旁征博引?这是一个比较有用的指标。不学无术的人爱夸夸其谈。被其引用的资料的主人可能是那种过于出名的人,也可能是有某个知名头衔的人或者无关的著名组织。不学无术的人希望通过虚名(虚名就是和问题无关的名气。例如贝克汉姆的名气和软件工程无关)和引用的数量(不是质量)镇住别人。下面我给一个经典的反面例子,摘自名为"克隆与xxx"的文章(可以google一下)。

例:"...xxx体是人脑中央的一个器官,印度2000年前就称之为"第三只眼"。近年来美国科学家们发现,它是人体衰老的根源,是人体的生命时钟。这项发现如同强大的冲击波,震撼着西方国家。《纽约时报》报道;"两千年前中国秦始皇的梦想,今天在美国实现了";《华尔街日报》发表《一场革命》;《新闻周刊》居然以《xxx热潮》为标题.于8月7、11月6日封面报道,阐述补充xxx的奇迹:阻止老化、改善睡眠,倒拨生命时钟。 在美国政府FDA认定xxx无任何副作用后,xxx的价格在美国加州迅速被炒到白金的1026倍。不过,在大规模生产的今天,每天饮用xxx仅需花费1美元。在我国也不过是7元人民币。 美国西北大学教授格利塔在电视新闻中感叹:"美国人为它疯狂了!" xxx体的冲击波迅速渡及全球。日本《朝日新闻》、NNK电视大肆报道;香港特区政府不得不出面公告:奉劝市民饮用xxx要有节制。 1998年4月5日中央电视台《新闻联播》播放《人类有望活到150岁》,详细介绍xxx体的 科技成就,《参考消息》等各大媒体也都相继报道。中国部分城市里出现饮用xxx的热潮。 在美国。不少人撰文表示对xxx体成果的担忧。如果人人都活到150岁,从外表分不出成年人的年龄,会出现许多社会问题,世界老化研究会议主席华特博士在其科学专著中指出;饮用xxx明显提高中老年人的性欲。于是评论家们担心, 性犯罪必将上升..."

正文是否有实例,有数据,有完整的因果关系?实例最好是亲身经历的例子。实例也可以是能用科学方法核查的例子。因果关系指的是,由前因"必然"可以推论到后果。如果不是这样,就必须从逻辑上说明,由前因"可能"推论到后果,为什么是可能的,例外情况在什么条件下会发生等等。差的文章的常见毛病就是把"可能"说成了"绝对",把时间上后发生的说成是前因,把先发生的说成是后果。因果关系是否"完整",指的是是否有那种没有写下来,但从上下文中可以倒推出来的默认前提。说白一点,就是作者是否有一些认为不言自明的"常识"。作者把基于"常识"得到的结论写下来,但"常识"是否写下来了?在电影《伊丽莎白》中,辅佐伊丽莎白一世的大臣罗伯特对她说:"作为女王,您必须..."。罗伯特这样说的默认前提是,他认为年轻的女王没有能力独立统治英国,女王和自己的关系是学生和老师的关系。在电影的最后部分,伊丽莎白直接驳斥了这个从没有说出口的前提,"‘必须'这个词不是能对一个女王说的。...我是我父亲的女儿。...从今以后,我将自己作出决定..."。

为读者考虑(considerate)。例如要给出被引用资料的来源啦什么的。对软件工程师来说,很重要的一个素质就是给出的代码应该能拷贝过来就能运行,否则必须说明运行的环境。

是否使用一种权威或者命令式的口吻。这个指标是个有用但危险的指标。使用这种口吻的人要么才华横溢(往往也很年轻),因为相信自己完全正确;要么不学无术(这时候年纪就比较大了),所以才虚张声势以使别人不敢反驳(我完全理解某人说"以人头担保"原因)。最好的辨别方法是核查细节,南郭先生最怕的就是这个。如时间紧迫,可结合前几个指标快速的判断一下,必要的话还可以google一下作者的名字。

有否奇谈怪论?这个指标非常灵,但要灵活应用。对于比较抽象的问题(例如如何学会编程),奇谈怪论通常意味着真知灼见。人越多,有价值的声音越可能被唧唧喳喳声淹没。对于人人都能谈上两句的主题,发表奇谈怪论比附和大众的压力更大,在这种压力下一旦真的的有奇谈怪论发表出来,说明奇谈怪论实际上有一点道理。外行人也众口一词的东西常常毫无价值。例如,你真的相信"高抛低买"这条原则可以指导炒股票吗?对于具体问题,是否要采用奇谈怪论就需多考虑了。具体问题,如果采用非主流的解决方案,意味着忽略许多人的经验,这样做风险很大。例如,我曾经读过一篇把整个exe当作一个dll挂上钩子的文章。文章很酷。但不实用。关键在于商用程序需要模块间的信息交流。这种酷的技术使交流不可能了。

类似的指标很多,没法一一列举。说到底,只要多读书,这种指标你也可以归纳出来。熟悉文章风格的入门读物,我推荐《The Elements of Style》(有中文版,《英文写作指南》,陈一鸣译,上海译文出版社)。该文的电子版也可以找到(你应该在读到这句前就google过"The Elements of Style"了吧)。


5. 相关的工具、资源

下面我将提供一些有用的工具,资源,信息,可以帮你进一步提高搜索能力。我只列出了最基本的信息,例如人命,软件名等等,作为练习,你可以自己试着google这些基本信息。

我认为,要充分发挥google的威力,必须使用一些工具。这些工具至少得包括一个剪贴板工具软件,一个浏览器,一个文件管理器软件。剪贴板工具的主要作用就是能够记住所有拷贝粘贴过的内容,并提供快捷键快速粘贴旧的条目。当尝试组合多个关键字时,剪贴板工具很用。我推荐Clipcache。好的浏览器支持多tab浏览,多个页面的搜索结果比较时很有用。我推荐MyIE2,因为其还支持一拖即搜,就是在当前页面中选中一段文字,用鼠标拖动一下,该段文字就被提交到搜索引擎(使用MyIE2前需要将默认搜索引擎改为google)。文件管理器我推荐Total Commander(以前称为Windows Commander)。因为其完美支持剪贴板。将文件路径放到google中搜索比较有用。

英语当然要好,多数资料都是英文资料。关于英语的重要性,我没有什么好多说的了。我只想强调一点,是否能用google解决技术问题,90%取决于英语水平。要提高英语水平,我推荐钟道隆的《逆向法》和李阳的《疯狂英语》。

搞软件开发需要学习大量专业知识。google技巧不能代替专业知识的积累。你可以考虑在学习专业技术前,花一点时间学习一下方法论(不是哲学)。我推荐钟道隆的《记忆的窍门—普通人提高记忆力的方法》、《巧用电脑写作与翻译》、《学习成功的乐趣—从学会英语与电脑说起》等著作。

你可以google"google"获得google本身的一些使用技巧。google"google 车东"也不错。

使用Nginx将请求转发至Google Analytics实现后端数据统计 前言 Google Analytics 加载缓慢是本博客在国内访问缓慢的原因之一。虽然通过使用大公司的 ga.js 的 CDN ,可以很大程度上加快加载 ga.js 文件的速度( ga.js 的更新频率很高,并不适合缓存到本地或服务器,所以最好自己反代或者借大公司的光,参见 谷歌分析(Google Analytics) 加速实现秒加载页面 ),但无论如何还是要向 Google 发送一个请求来发送访客数据,所以取巧地使用 CDN 并不能从根本上解决问题。前段时间翻看一个知名博主的文章时,有一篇名为 本博客零散 阅读详情

相关推荐

Google play AMAP SDK 违反google play恶意行为策略

最近上架Google play遇到一个问题,如下: Issue​: Violation of the Malicious Behavior policy An app distributed via Google Play may not modify, replace, or update itself using any method other than Google Play's up...

qq_15801743的博客 7802

如何使用 Google 搜索引擎保姆级教程(附链接)

如何使用 Google 搜索引擎保姆级教程(附链接)

Flag少侠的博客 8万+

论解决问题的一般做法 - 以 MapServer 为例

当你使用一个开源软件时,遇到问题,是不是一筹莫展呢?因为我们对使用的软件不了解,不出问题还好,如果出了问题,如果没有调试信息,那我们只能自行 百度、Google,就算你连 Bing 都用上,如果你用的软件使用不是很广泛,那找到解决方案的希望也是很渺茫。然后,你就不断搜索答案,一遍一遍的尝试错误的解决方案,到头来时间都浪费了,你将会感慨你虚度了一天,第二天你去问论坛的大神,问 QQ 群里的大牛,然而没有人“理你”,可能

研究与专注 2231

google搜索的使用

你真的会使用google么? 如今遇到问题都会在搜索引擎中寻找答案,如何快速准确的寻找出你xiang

chenhittler的专栏 636

英文写作指南(The Elements of Style中译)

william strunk jr. E.B.white的经典英文写作指南的中译本,陈一鸣译。

ffmpeg在windows的安装、合并、切片、.m4s、.m3u8处理

自己处理视频,我用的工具是 ffmpeg,因为涉及到.m3u8格式和.m4s格式的一些操作。ffmpeg的介绍我就不多说了,这里是它的官网地址: https://ffmpeg.org/ ,这里是文档: https://ffmpeg.org/documentation.html (看的头大,没咋看下去)...

一只爱吃糖的小羊 2689

怎样使用google

http://www.howtogeek.com/98698/improve-your-google-search-skills-infographic/

laoye_laoye的专栏 1286

告别 RPA 和 Selenium,MCP + Playwright 成为自动化开发新宠!

摘要: 随着数字化转型加速,传统自动化工具(如RPA和Selenium)在复杂场景中暴露出开发成本高、灵活性不足等问题。新一代解决方案MCP(Model Context Protocol)与Playwright的结合,通过AI与自动化的无缝对接,实现了智能化的任务处理。MCP支持自然语言交互和上下文感知,开发者无需编写复杂代码即可生成自动化脚本;Playwright则提供多浏览器支持、高性能和易用性。二者结合显著提升开发效率,使自动化更智能、灵活。文章还对比了VS Code与Trae中配置Playwrigh

我先测了 2209

如何使用 Google

http://www.microsofttranslator.com/bv.aspx?from=&to=zh-CHS&a=http%3a%2f%2fphorum.study-area.org%2findex.php%2ftopic%2c18559.0.html>     > 进入 Linux 领域,很大的一个问题就是,我要怎么入手?你会听到很多建议, > 如果你要买一本书,可能很多人推荐你

小星星的专栏 1994

鸿蒙OS开机动画背后的秘密:从代码到视觉的完整解析(附源码分析)

本文深入解析了鸿蒙OS开机动画的系统级实现原理。从bootanimation服务的启动配置、与Render Service的协同,到基于VSync信号的帧率同步与绘制流水线,结合OpenHarmony源码进行了逐行解读。文章揭示了其事件驱动的优雅退出机制,并探讨了视频支持、多屏适配等高级特性与定制化可能,为开发者理解鸿蒙图形子系统提供了硬核技术视角。

sony5的博客 972

ROS2 Control实战:多机器人仿真与控制器管理

本文详细介绍了ROS2 Control在多机器人仿真中的应用,涵盖命名空间配置、控制器管理及性能优化。通过Gazebo仿真环境和ROS2 Control框架,开发者可以高效管理多个机器人的硬件抽象和控制器,实现资源隔离与平滑切换。文章还提供了常见问题排查和调试工具推荐,助力机器人开发实践。

u9v0w的博客 203

如何使用google解决问题(来自《程序员》杂志)

如何使用google解决问题 redguardtoo著 文章选自2004年《程序员》杂志第8期P56 前面收集了篇如何问问题的文章就是《学会提问》http://blog.programfan.com/article.asp?id=7207,觉得很不错,这里继续有关如何解决问题,安安注 本文介绍了使用google解决难题的一些高级技术,重点讲述了如何选择关键字

jasontome的android之路:Do it. Do it right. Do it righ 890

ROS2 -Jazzy 一步一步(第一步_工作空间以及编译)

文件夹作用特点是否需要手动创建/维护src存放自己写的 ROS 2 包一个 workspace 可以有多个包需要手动创建build保存编译过程中的中间文件每个包生成对应子目录自动生成,可删除install保存编译完成后的功能包每个包有独立子目录,含可执行文件自动生成,可删除log保存编译日志用于查看错误原因、调试自动生成,不需修改colcon是 ROS 2 推荐使用的构建工具自动处理功能包的依赖和编译顺序一条命令就能编译整个工作空间。

jerrykorea的博客 1380

【解决问题】使用Google浏览器搜索时显示响应时间过长无法访问

解决Google搜索时响应时间过长无法访问问题

m0_68622382的博客 1万+

从零上手HiAgent:构建能听懂指令的智能体框架实战指南

智能体(Agent)作为人工智能领域的重要范式,正从传统的预设流程自动化转向以目标驱动的自主规划与执行。其核心原理在于利用大语言模型(LLM)作为决策大脑,通过任务规划、工具调用与记忆机制,将模糊的自然语言指令转化为可执行的工作流。这一技术显著提升了人机协作的效率和自然度,其价值在自动化办公、数据分析与智能流程编排等场景中尤为突出。本文聚焦于HiAgent这一具体框架,深入解析其作为智能体开发平台的核心架构,涵盖规划器、执行器、工具集等关键组件,并提供从环境配置、自定义工具开发到复杂任务链构建的完整工程实践

weixin_29266007的博客 894

Linkage Mapper 工具参数详解——Building Network and Map Linkages

此文档用于解析使用LinkageMapper各输入输出参数详情以及可能的影响,并介绍了如何解释模型输出结果和输出参数,适合刚入手的人。篇幅很长很啰嗦,是因为每个参数都解释的万分细致。

sumuses的博客 6118

google翻译相机报错 请安装最新的Google应用,以便使用相机翻译功能

google翻译: 请安装最新的Google应用,以便使用相机翻译功能

土豆大叔的博客 1万+

车载以太网:PHY(物理层)介绍

本文以TJA1101芯片为实例介绍了车载以太网PHY(物理层)组成。

kevin1499的博客 6231

你跟大牛之间只差一个google

google在中国被墙的厉害,http://209.116.186.231/ 这个地址可以访问google。另外,有VPN或者某个神奇的浏览器也可以。         非技术人员,还可以凑合着用百度,但是技术人员必须用google,bing都不行。         经常在QQ或者论坛里看到人问一些问题,我心里会问,“自己有先查过吗”。如果没有的话,那么就不具备一个程序员的基础素质,就是解决问题

langresser的专栏 2372

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Google 9周岁生日庆祝Logo

想当初98,99年的时候Google还在电脑报上打过广告呢,算是看着Google成长的吧!诚然Google的Logo不能漏掉,每一款都很经典,每看到一次都可以好好学习一下。感谢Google让我从搜索中学到了自力更生,解决问题的能力。祝贺Google生日快乐。   如果你想联系Google 表示祝贺,点这里吧,呵呵!...

xddxz的专栏 167

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

作为程序员你常用百度还是Google?

在学习工作的过程中, 问题肯定是不断地出现, 解决问题的过程就得先去学习, 自学解决问题的方法里, 善用搜索引擎占了绝对的主力。 而目前的网络环境, 百度占据着大部分的市场, 但是想要更好地解决我们遇到的问题, 单靠百度不行, 一定要养成善用Google的习惯。 今天大家就来说说: 作为程序员你常用百度还是Go...

xiaoyaGrace的博客 756

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Google OR-Tools(一) Get Start

Google OR-Tools

s_156的博客 713
上一篇: Linux下的网络邻居
下一篇: Hiweed-Debian 0.6下安装nvidia驱动
NeptuneX
博客等级 码龄22年 3粉丝 37原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值