当前位置:首页 » 编程软件 » apollo本地编译问题

apollo本地编译问题

发布时间: 2022-04-14 20:44:07

A. 作为前端开发,需要具备怎样的能力

一名优秀的Web前端工程师应该具备以下技能,看看你是否符合吧!
【必备】
PhotoShop/Fireworks Design
配合美工将草图形成具体的符合WebPage的设计
有快速制作分层高品质PSD、PNG的能力
能迅速将PSD、PNG的内容构思成div+css或者table等HTML代码
Flash Design
基本动画效果
复杂的交互体系设计,了解第三方swf辅助设计软件
复杂的交互体系设计以及较强的对各类外端口资源(PNG、JPG、MP3、WAV等)的整合能力。精通部分第三方辅助设计软件(AE、SwishMax、Swift3D等)

【必备】
XHTML/CSS
基本的layout实现
严格跨平台的layout实现以
优雅的HTML code,尽可能符合标准并有SEO的考虑因素。在任何平台、浏览器下基本保持一致。不要求了解各种CSS的hacks,但要求知道遇到问题应该如何查阅资料以在第一时间内解决。能够为JavaScript开发人员提供最好操作的DOM结构,让JS开发人员在开发的时候认为”一切都已经准备就绪了”,而不是”捉襟见肘”。
JavaScript/Ajax/DOM
基本的DOM操作,了解AJAX,可以实现数据通信
基本的DOM操作,能写高效率的OOP代码,以降低维护成本
基于需求,进行不同的开发,选择合适的框架,做到代码效率最高,用户体验最好,代码下载量最小,并且可以在单独甚至更多产品线中最大限度重用代码
Flash Developement
基于Timeline的ActionScript操作,能实现简单交互
掌握a外,能实现数据层通信(与服务器以及本地SharedObject)
精通AS1-3,能根据需求进行各类RIA开发。无论是要求支持FlashPlayer8的,还是FlashPlayer9的,都能做到开发效率最高、灵活性最大(比如对HTML层的接口设计,等等)。
【必备】
Apollo
产品级的封装,基本技术了解(如何打包、如何加入HTML和JavaScript等)
掌握a的同时,能利用Apollo的API独立设计、开发OS的文件I/O功能。
掌握基本技能的同时,对”3D概念体系”有所认知。这里”3D”即:Design(设计)、Development(开发)、Deploy(产品部署)。能用Apollo
Windows Presentation Foundation、WPF/E(Silverlight)
等等(这只是部分)
总结:可以不了解技术细节,但应该知道原理,最好能掌握一两套设计思想(毕竟数据逻辑都在这里走,光看HTML和JavaScript,对人的见识还是有局限的,这种局限限制了我自己很久的时间),那将是一比宝贵的财富。

B. solano是什么

i815/Solano芯片组抢"鲜"测试

电脑之家特约:Andrew Liu(编译)

--------------------------------------------------------------------------------

引言

这篇文章有赖于我们在台北的计算机实验室的帮助,我们幸运地收到两片由着名厂商生产的最终版i815/Solano主板,由于时间紧迫,相对于你经常看的那些评测文章,这篇文章显得短小些,如果你想全面了解Intel最新的Solano芯片组的背景资料,我推荐你到网上看一周前发表的一篇名为"Intel Solano芯片组预览"的文章。

Rambus?不,谢谢!

客观地说,i815是Intel的第一款支持PC133 SDRAM的芯片组,因此Intel首次提供了除了只支持昂贵而难以流行的RDRAM 的i820和i840芯片组外的第二种选择。仅仅一年以前,Intel还认定RDRAM代表将来内存发展的趋势,并决不会开发一款支持PC133 SDRAM的芯片组。但是Rambus和RDRAM的糟糕表现、BX芯片组在133 MHz上出色的性能表现,加上在i820/i840芯片组上出现的几个重大的BUG,迫使Intel放弃他们坚持只发展RDRAM的政策,因此i815/Solano的计划得以最终付诸实施。Intel最终为了顾全他们在广大用户中的可信度和声望放弃了RAMBUS。

一个440BX的优秀接班人 ...?

几乎所有人都认可Intel的老款440BX芯片组运行在133 MHz FSB(前端系统总线)时表现的杰出性能。唯一的问题是:这种方式事实上意味着"BX133"系统中的AGP总线工作在89 MHz下,这对所有的AGP 3D显示卡来说都是一个考验。现在i815/Solano芯片组可以为那些需要一个工作在133 MHz FSB(前端系统总线)下和使用PC133 SDRAM 的Coppermine Pentium III计算平台用户提供一个官方最终的解决方案。

公众对i815/Solano芯片组的期望颇高。Intel的440BX芯片组在长达两年的时间内 为用户提供了极为出色的性能表现,毫不逊色于VIA的基于PC133 SDRAM的相应芯片组。i815/Solano至少不应该比它的老大哥逊色。我制作了一个小表格比较两者的硬指标。

i815/Solano i815E/Solano2 440BX
正式支持的前端系统总线频率 [MHz] 66/100/133 66/100/133 66/100
实际支持的前端系统总线频率 [MHz] 66/100/133以上 66/100/133以上 66/100/133以上
133 MHz前端系统总线频率下AGP时钟 66 MHz = 符合规范 66 MHz =符合规范 89 MHz =超过规范
133 MHz前端系统总线频率下PCI时钟 33 MHz =符合规范 33 MHz =符合规范 33 MHz =符合规范
内存时钟频率 66 - 133 或更高, 和 前端系统总线频率同步或异步 66 - 133 或更高, 和 前端系统总线频率同步或异步 66 - 133 或更高, 和 前端系统总线频率同步
AGP 传输率 133 MHz前端系统总线频率下提供AGP4x = 1 GB/s 133 MHz前端系统总线频率下提供AGP4x = 1 GB/s 133 MHz前端系统总线频率下提供AGP2x = 0.7 GB/s
ATA特性 ATA33/66,并支持第三方更高规格的ATA板载控制芯片 ATA33/66/100 ATA33,并支持第三方更高规格的ATA板载控制芯片
支持USB接口数 2 4 2
整合图形卡 Yes Yes No
最大内存支持 512 MB PC133 SDRAM 512 MB PC133 SDRAM 1 GB PC133 SDRAM

你可以看到i815看上去似乎比440BX更为强大。唯一的不足是i815/Solano仅仅支持512 MB内存。看来期望它的性能超越表现BX133应该不是一种奢望。基本上所有的硬件技术指标都达到或超越了BX133的标准,尤其是在ATA标准和AGP规范方面。

市场策略

但我们不应忘记现在已经不是性能至上的年代,大公司的市场策略实际上主宰着IT世界。并不是好的产品都能赢得市场,拥有强大推广攻势的产品才会获得成功。否则就算Rambus的库存只卖5美金一条也没人会买一套RDRAM的系统。Intel根本没兴趣提升i815的性能并使之超越它的RDRAM芯片组i820/i840,即使人们会从它和BX133的对比结果中知道它的实际表现。Intel需要i815作为那些不满RDRAM平台的用户的第二选择,Rambus芯片组仍然需要大力推广,因此Intel不会让i815提供比它昂贵得多的Rambus解决方案更好的性能。因此Intel必须作出选择,如果i815被设计成性能超越440BX的一款芯片组,这将全面破坏RDRAM的推广。另一种方案是i815可以被设计得故意慢一点,这将只会令少数消息灵通的用户和超频爱好者心烦,其他的人根本不会知道这种小细节(只有专业测试软件可以分辨)。从而Intel可以继续证明基于Rambus的芯片组比SDRAM的芯片组"优秀"。令人丝毫不感惊奇的是Intel采用了后一种方案。我现在可以告诉你i815/Solano在主要的性能测试中仍然达不到BX133的指标,但至少它击败了其他的对手,甚至包括Intel的双Rambus通道840芯片组。

i815/Solano的技术规范

首先,应该说有两个"Solano",i815/Solano和i815E/Solano2。这两款芯片组都采用同一块北桥芯片"GMCH"= Graphics Memory Controller Hub(图形存储器控制单元)。不同的部分在于南桥芯片,i815使用在i810,i810E,820和840系列上着名的"ICH"= I/O Controller Hub(输入/输出控制单元)。ICH支持ATA66,AC97规范和2个USB接口。i815E则装备了更先进的"ICH2",完全支持ATA100,4个USB接口和增强的信息&网络扩展资源插槽,符合AC97规范。"ICH2"也会在新款的i820和i840主板上出现,同样这些主板会以"i820E""i840E"的名字出现。

除去以上的南桥特性,"GMCH"单元支持前端总线时钟频率为66,100和133 MHz的处理器,同时支持介于100和133之间的系统内存时钟频率。因此i815可以支持Celeron处理器和最新133 MHz总线的Coppermine(铜矿)Pentium III处理器,同时你可以很好地使用PC100和PC133 SDRAM。i815在ZX/BX和i810的基础上为Celeron处理器的用户提供了更好的支持,你可以在66 MHz的前端总线上运行Celeron处理器,但同时内存会运行在100 MHz上,这种方式提升了性能。

大多数人已经知道i815/Solano整合了3D图形系统。在3D游戏方面,我们对这款整合图形子系统的期望值并不高。大家可以将自己选择的高档图形卡插在AGP插槽内,i815会自动屏蔽内置显示卡。

测试配置

我们采用了和"千兆战争-第二部分"同样的配置,通过这种方法,我们可以把i815的测试结果和BX,i820,i840以及VIA Apollo Pro 133A的测试结果进行比较,并不需要重复跑那些测试项目。我们使用5.08版本的GeForce图形卡驱动程序,因为我发现如果使用最新的5.22版驱动会大幅影响Quake3的测试结果。

我们被告知不要提早公布测试主板的特性,因为官方的i815发布会将在2000年6月19日进行。就象我们以往安装Intel的系统一样,以下的配置十分稳定而且容易安装。

平台特性
所有测试用图形卡 NVIDIA GeForce 256 120MHz核心,300MHz DDR RAM 32MB
所有测试用硬盘 Seagate Barracuda ATA ST320430A
所有测试用处理器 Intel Pentium III 1GHz, 133 MHz前端总线
Intel i815芯片组
主板 由“A×U×”公司提供的i815E样板,使用i815最终测试版芯片组
内存 128 MB,Wichmann WorkX MXM128 PC133 SDRAM 将CAS设为2
IDE界面 板载ICH2控制单元,ATA100
网卡 3Com 3C905B-TX
VIA Apollo Pro 133A芯片组
主板 华硕P3V4X,ACPI BIOS 1002 最终版, 2000年3月出厂
内存 128 MB, 采用增强存储系统PC133 HSDRAM 将CAS设为2
IDE界面 Promise Ultra66 PCI卡
网卡 3Com 3C905B-TX
Intel 440BX芯片组
主板 华硕P3B-F,ACPI BIOS 1005 beta 01,2000年3月出厂
内存 128 MB, 采用增强存储系统PC133 HSDRAM 将CAS设为2
IDE界面 Promise Ultra66 PCI卡
网卡 3Com 3C905B-TX
Intel 820芯片组
主板 华硕3C-L, ACPI BIOS 1020 beta 05,2000年3月
内存 128 MB, 三星PC800 RDRAM,RDRAM时钟频率由BIOS调整
IDE界面 板载
网卡 板载i82559

Intel 840芯片组
主板 OR840,特别设计的BIOS
内存 128 MB, 三星PC800 RDRAM,RDRAM时钟频率由BIOS调整
IDE界面 板载
网卡 板载i82559
驱动程序信息
图形卡驱动 NVIDIA 4.12.01.0508
VIA芯片组驱动 4in1 4.17 AGP-driver 3.56
ATA驱动 Promise Ultra66版本1.43驱动 Intel Ultra ATA BM驱动v5.00.038
环境设置
操作系统版本 Windows 98第二版4.10.2222 A 分辨率1024x768x16位x85Hz 在SPECviewperf中1280x1024x32位x85Hz
DirectX版本 7.0
Quake 2 (雷神之槌2) 3.20版本 命令行= +set cd_nocd 1 +set s_initsound 0 Crusher demo, 640x480x16位
Quake 3 Arena (雷神之槌3竞技场) 零售版本 命令行= +set cd_nocd 1 +set s_initsound 0 图形细节设置为“Normal”,640x480x16位 使用“Q3DEMO1”作为测试基准
Expendable(兵人) 可下载的测试版本 命令行= -timedemo 640x480x16位
Unreal Tournament(虚幻锦标赛) 4.05b版本 高质量纹理,中等质量皮肤,无抖动 640x480x16位 使用“UTBench”作为测试基准

测试得分

一、办公应用软件性能(Sysmark 2000 Windows98SE版)

i815系统战胜了部分先前测试版本,但和BX133还有一些差距,i840也比它略强一些。

二、3D 游戏测试

i815系统再次在帧数上稍稍超越了先前的版本,但仍然和BX133系统有7帧的差距。

在Quake2中Solano表现得十分接近BX133系统。但还是无法超越它的老大哥,虽然战胜了其他所有对手。

兵人的测试结果仍然如此,Solano稳据第二位,而Rambus芯片组i820和840都失败了。

最终Solano以微小的差距负于BX133系统,这明显归功于它采用了AGP4x规范。但在以下的专业应用测试中这两款Intel的SDRAM芯片组表现就太惨了。

三、OpenGL 工作站性能 - SPECviewperf 6.1.1

Advanced Visualizer显示所有的主板得到同样的分数,看来GeForce是限制帧数的主要原因。

Design Review注重于内存的带宽性能而不是AGP的带宽,这就是为什么BX133和Solano都远不如i840的得分。

Data Explorer更加依赖内存的带宽,BX133再次领先于i815/Solano而RDRAM系统表现出色。

Lightscape 需要相当高的AGP吞吐量和大量的内存带宽。AGP4x规范帮助i815/Solano超越了BX133,RDRAM平台再次胜出,Solano还是击败了i820。

ProCDRS测试接近于Lightscape,i820表现不错,可能和GeForce驱动有关。

四、整合图形卡测试

我猜想在看完上面这张图表以后,没有人会感到惊奇,i815/Solano的整合图形卡三维处理能力本来就不很强,但没想到在代表二维图形加速能力的Sysmark2000测试中,它的表现如此出色。我没有估计到Intel至少会将整合图形单元设计成一块强劲的二维处理芯片。因此我建议使用板载整合图形单元作为低价解决方案。优点是随时可以通过一块专业AGP 3D图形卡提升系统性能。缺点是专业用户将为他们看不上的整合显示卡付钱,而且以后他们根本不会去使用它的功能。

结论

我感谢Intel发展了i815芯片组,但BX133仍然在主要的测试中领先于i815这一现实让我不满。我找不到任何理由为什么Solano仍然无法达到BX133的分值,而后者已经是出产两年之久的老产品了。Solano的"低下性能"提出了一些严重的问题,难道Intel无法使i815超过440BX或者是Intel完全不想让它跑得太快?我确信我们将永远无法得到一个诚实的答案。所以读者可以自己想一下为什么。

在我批评了i815相对于BX133的不足以后,我仍然必须称赞它在主要的几项测试中战胜了它的Rambus兄弟。超频爱好者可能会对这款主板失望,但一般用户并不愿意长期在BX133并不稳定的89MHzAGP频率下工作,这块主板是一个不错的选择。

Solano在一般应用中比i820和i840性能好而且价格便宜,同样的理由它击败了VIA的Apollo Pro133A PC133 芯片组。因此它可以称为"最好的Coppermine解决方案",把这个荣誉从Apollo Pro133A手中夺回。现在的问题是i815平台的价格如何,你必须为整合图形单元掏钱,不管你用不用它。VIA Apollo Pro 133A主板仍然是最便宜的选择,但 i815可以提供更好的性能而只花比i820和i840少得多的钱。随着i820主板发生严重问题,i815的上市可能彻底封杀它的老大哥的生路。i840的销售情况也不理想,而且短时间内不会有大的改观。Intel的i815芯片组把它的Rambus兄第推入了尴尬的境地。

我对i815的称赞并不会掩盖VIA Apollo Pro 133A的成功,而且它的后继产品即将上市,据说支持DDR266 SDRAM,性能远胜于Solano。如果你将在接下来的几个月里添置主板,那你最好多看看,Solano现在是不错,但DDR266的平台一上市那就……。

--------------------------------------------------------------------------------

C. 如何在c++定义一个学生类以实现平均成绩的计算和查询功能

一.中间件的定义与作用
1.什么是中间件?
图片摘自公众号“筋斗云与自动驾驶”
笔者在交流中发现,不同的人对中间件的理解并不一样,甚至可以说,到现在,这个概念还是模糊不清的。比如:
(1)有的人认为中间件仅指位于OS内核之上、功能软件之下的那部分组件,为上层提供进程管理、升级管理等服务;而有的人则认为中间件还应包括功能软件和应用软件中间的那部分(参见上图)。按茅海燕的说法,前者是“通用中间件”,而后者是“专用中间件”。本文中提到的“中间件”,若不做专门说明,便特指“通用中间件”。
(2)有一些人提到的自动驾驶中间件,包括了AUTOSAR(又分为AUTOSAR CP和AUTOSAR AP),还有一些人口中的中间件,特指ROS2、Cyber RT、DDS等。
(3)未动科技VP萧猛认为,“中间”一词是相对的,当有多层堆叠的时候,每一层都是其上下两层的中间层,因此,在用“中间件”这个词的时候,我们需要特别指明它究竟位于“哪两层之间”。按萧猛的说法,当我们称“ROS/ROS2 为中间件”时,其含义与 “AUTOSAR AP为中间件”并不是对等的关系。
(4)Vector产品专家蔡守群说,他理解的中间件,“是给App开发提供功能支撑的,对外是没有功能表征的;但是站在操作系统内核的角度,中间件跟App并没有本质的区别”。
2.中间件的作用
汪浩伟说:“专用中间件原本是应用程序的一部分,只是很多公司做自动驾驶都需要用到,就被抽象出来了。”
那么,它究竟有什么用?
毕晓鹏认为,自动驾驶中间件最主要的作用是:对下,它能够去适配不同的OS内核和架构;对上,它能够提供一个统一的标准接口,负责各类应用软件模块之间的通信以及对底层系统资源的调度。
据毕晓鹏解释,前者,使开发者们无需考虑底层的OS内核是什么,也无需考虑硬件环境是什么,即不仅实现了应用软件与OS的解耦,也实现了应用软件与硬件的解耦;而后者则确保了数据能够安全实时地传输、资源进行合理的调度。
为什么要通过中间件来支持软硬件解耦?毕晓鹏解释道:
我开发一个应用软件,其中很多内容都是与具体应用逻辑无关的,包括数据通信、通信安全、系统资源调度等,比如,有十个进程需要数据交互,完全没有必要在十个程序的软件代码里各自进行实现和配置。针对这种情况,我们就可以把重复的部分抽象成一种服务,单独封成一层东西(这就是中间件),并提供统一的库、接口和配置方法,供上层去调用。这样的话,有一部分人专门去做中间件的,而做上层应用的人也不需要考虑跟底层交互的事情。
举例说,如果要做一个自动泊车系统,它有各个模块或业务逻辑独立的不同软件,在进行通信、数据交互,或者调用底层资源时,只需要中间件的一个接口就可以实现,其他事情不需要考虑,这样开发人员就可以专注于自己的业务逻辑。
又比如,一个摄像头需要感知前面的车道线、红绿灯等,开发人员就专门做红绿灯和车道线检测算法,与外界的数据交互只需要使用中间件的通信服务(例如订阅摄像头信息,发布检测结果),而不必关心数据从哪里来、发给谁。
Nullmax纽劢科技系统平台总监苗干坤博士在此前的一篇文章中写道:
“芯片算力大幅增长,摄像头像素呈翻倍之势,激光雷达出现在更多新车规划上……没有谁能够断言车上的传感器应该有多少,又或者是将来的汽车还会增加哪些硬件,但所有人都知道硬件的变化将会来得更加猛烈。
“所以我们也可以看到,汽车对软硬件架构的要求也越来越高,既要能满足当下的需求,还要具备相当的前瞻性、兼容性和扩展性,能够支持接下来软硬件升级换代、增减模块的需求。而自动驾驶的中间件,就正是这样一个可以按需调整、满足各样需求的现代温室。
“在早期开发中,中间件可以化整为零,将巨大的软件工程分解成若干小任务,分散解决。在后期应用时,它又可以化零为整,像拼积木一样,根据需求将一个个模块组合成一个整体,严丝合缝。”
在春节前的一场直播中,东软睿驰产品销售总监安志鹏说,在软硬件解耦、模块化管理后,再遇到问题,就不用整个系统都改,只改相对应的部分就行了。这样,软件的可复用程度就极大地提升了,同时,验证的工作量也会减少许多,整体开发效率也会因此提升。
相反,没有中间件的话,应用层就得直接调用操作系统的接口,后期要是换了操作系统,应用层的代码和算法可能就要推倒重来。
简言之,中间件通过对计算平台、传感器等资源进行抽象,对算法、子系统、功能采取模块化的管理,并提供统一接口,让开发人员能够专注于各自业务层面的开发,无需了解无关细节。
按东软睿驰产品销售总监安志鹏的说法,搞AUTSOAR这样的中间件,并不是只对OEM有利,“零部件供应商的选择面也大了——应用做好了,下面的软件、芯片可以选好几家供应商的,要比传统的开发模式快很多,因而,零部件供应商也是受益者”。
用萧猛的话说,中间件最直接的好处就是“为上层屏蔽底层的复杂性”,软件开发人员可以忽略芯片、传感器等硬件的差异,从而高效、灵活地将上层应用及功能算法在不同平台上实现、迭代、移植。萧猛认为,中间件可以看做是自动驾驶应用背景下的一项“新基建”。
(图片摘自冯占军博士的《AUTOSAR对基础软件开发是喜还是忧?》一文。AUTOSAR只是中间件的一种,但这里写的“AUTOSAR开发优势”基本也适用于其他中间件。)
不过,站在开发者的角度看,中间件的意义也未必全部是正面的。如冯占军博士在《AUTOSAR对基础软件开发是喜还是忧?》一文中就提到了如下两点:
底层软件工程师变成了工具人,“只要你去点点鼠标,用工具配合就可以了”,很多原本由自己做的测试也改由供应商来做,进而导致工程师的成就感严重降低;时间久了,工程师从0到1开发的能力也会降低。
(图片摘自冯占军博士的文章。尽管文章说的是Autosar,但实际上这些问题在ROS等其他中间件的使用过程中也会存在。)
对软件工程师来说,中间件造成的“能力退化”这一问题几乎是无解的。但冯占军博士认为,“如果这个中间件在开发过程中,有使用公司的工程师深度参与,提出需求并一起实施,会好一些”。
此外,殷玮在一篇文章提到,使用AUTOSAR这样的中间件,Tier 1们应该是很不情愿的,“因为不到增加了成本,还有可能逐步沦为硬件生产商”。但这个也不能说是中间件的锅,在软件定义汽车大大趋势下,这几乎是必然的。
二.常见的基本概念
1. AUTOSAR CP 与 AUTOSAR AP
在所有的中间件方案中,最着名的非AUTOSAR莫属了。
严格地说,AUTOSAR并非特指由某一家软件公司开发出来的某款操作系统或中间件产品,而是由全球的主要汽车生产厂商、零部件供应商、软硬件和电子工业等企业共同制定的汽车开放式系统架构标准。不过,在实践中,各公司基于AUTOSAR标准开发出来的中间件也被被称为“AUTOSAR”。
当前,AUTOSAR可分为Classic Platform和Adaptive Platform两个平台,两者分别被简称为AUTOSAR CP与AUTOSAR AP。
简单地说,AUTOSAR CP主要跑在8bit、16bit、32bit的MCU上,对应传统的车身控制、底盘控制、动力系统等功能,如果涉及到自动驾驶的话,AUTOSAR CP可能无法实现;而AUTOSAR AP主要跑在64bit以上的高性能MPU/SOC上,对应自动驾驶的高性能电子系统。
严格地说,AUTOSAR CP并不只是个“中间件”,它是相当于“OS内核+中间件”的一套完整的“操作系统”。 AUTOSAR CP定义了基本的上层任务调度、优先级调度等。
在基于分布式架构的ADAS功能中,AUOTSAR CP便是最常见的“操作系统”。在AUTOSAR的生态形成后,很多芯片厂商的MCU上标配的就是AUTOSAR CP,主机厂没有什么选择权。
由于分布式架构下的芯片主要是MCU,因此,便有了“AUTOSAR CP主要跑在MCU上”的说法。
在分布式架构下,不同的功能对应着不同的MCU,而每一个MCU上都需要跑一套AUTOSAR CP,若传感器的类型比较多,则仅ADAS相关功能就需要很多套AUTOSAR CP,那怎么收费呢?
常规的做法是:根据MCU的类型来收费——如果MCU是两个异构的MCU,那AUTOSAR CP就按两套来收费;如果MCU是同构的,那AUTOSAR CP就按一套来收费。
随着EE架构从分布式向集中式演进、芯片由MCU向SOC演进,计算量及通信量成数量级地上升,另外,多核处理器、GPU、FPGA以及专用加速器的需求,还有OTA等,都超出了AUTOSAR CP的支持范围。
(图片摘自安志鹏的直播课)
2017年,为更好地满足集中式架构+SOC时代的高等级自动驾驶对中间件的需求,AUTOSAR联盟推出了通信能力更强、软件可配置性更灵活、安全机制要求更高的AUTOSAR AP平台。
需要强调的是,不同于AUTOSAR CP自身已经包含了基于OSEK标准的OS,AUTOSAR AP只是一个跑在Lunix、QNX等基于POSIX标准的OS上面的中间件——它自身并不包含OS。
结合aFakeProgramer于2020年发表在CSDN上的《为什么要用AP?Adaptive AutoSAR到底给企业提供了一些什么?》一文及东软睿驰安志鹏在2022年春节前的一场直播中讲的内容,AUTOSAR CP与AUTOSAR AP最主要的区别有如下几点:
1).编程语言不同——AUTOSAR CP基于C语言,而AUTOSAR AP基于C++语言;
2).架构不同——AUTOSAR CP 采用的是FOA架构(function-oriented architecture),而AUTOSAR AP采用的则是SOA架构(service-oriented architecture);
3).通信方式不同——AUTOAR CP采用的是基于信号的静态配置通信方式(LIN\CAN...通信矩阵),而AUTOSAR AP采用的是基于服务的SOA动态通信方式(SOME/IP);
4).连接关系不同——在AUTOSAR CP中,硬件资源的连接关系受限于线束的连接,而在AUTOSAR AP中,硬件资源间的连接关系虚拟化,不局限于通信线束的连接关系;
5).调度方式不同——AUTOSAR CP采用固定的任务调度配置,模块和配置在发布前进行静态编译、链接,按既定规则顺序执行,而AUTOSAR CP则支持多种动态调度策略,服务可根据应用需求动态加载,并可进行单独更新。
6).代码执行和地址空间不同——AUTOSAR CP中,大部分代码静态运行在ROM,所有application共用一个地址空间,而在AUTOSAR AP中,应用加载到RAM运行,每个application独享(虚拟)一个地址空间。
这些区别,带给AUTOSAR AP的优势有如下几点——
1).ECU更加智能:基于SOA通信使得AP中ECU可以动态的同其他ECU同其他ECU进行连接,提供或获取服务;
2).更强大的计算能力:基于SOA架构使得AP能够更好地支持多核、多ECU、多SoCs并行处理,从而提供更强大的计算能力;
3).更加安全:基于SOA架构使得AP中各个服务模块独立,可独立加载,IAM管理访问权限;
4).敏捷开发:Adaptive AUTOSAR服务不局限于部署在ECU本地可分布于车载网络中,使得系统模块可灵活部署,后期也能灵活独立更新(FOTA);
5).高通信带宽:可实现基于Ethernet等高通信带宽的总线通信;
6).更易物联:基于以太网的SOA通信,更易实现无线、远程、云连接,方便部署V-2-X应用。
(图片摘自东软睿驰)
当然了,在某些方面,AUTOSAR AP与AUTOSAR CP相比是有一些“劣势”的。比如,AUTOSAR CP的时延可低至微秒级、功能安全等级达到了ASIL-D,硬实时;而AUTOSAR AP的时延则在毫秒级,功能安全等级则为ASIL-B,软实时。
上述区别也导致了两者应用领域的不同:AUTOSAR CP一般应用在对实时性和功能安全要求较高、对算力要求较低的场景中,如引擎控制、制动等传统ECU;而AUTOSAR则应用在对实时性和功能安全有一定要求,但对算力要求更高的场景中,如ADAS、自动驾驶,以及在动态部署方面追求较高自由度的信息娱乐场景。
尽管AUTOSAR AP有种种优点,但总的来说,它目前还不够成熟——主要是信息安全及UCM等模块不成熟。量产车上装AUTOSAR AP的不少,但主要用在娱乐场景,真正用在自动驾驶场景的还很少。
此外,由于SOC+MCU组合的现象会长期存在,因而,在今后相当长一段时间内,AUTOSAR AP都不可能彻底取代AUTOSAR CP——最常见的分工会是,需要高算力的工作交给AUTOSAR AP,而需要高实时性的工作则交给AUTOSAR CP。
(图片摘自超星未来)
2.ROS 2
ROS是机器人操作系统(Robot Operating System)的英文缩写,原生的ROS本是机器人OS,并不能直接满足无人驾驶的所有需求,用作自动驾驶中间件的是ROS 2。
ROS 2与ROS 1的主要区别如下:
(1).ROS 1主要构建于linux系统之上,主要支持Ubuntu;ROS 2采用全新的架构,底层基于DDS(Data Distribution Service)通信机制,支持实时性、嵌入式、分布式、多操作系统,ROS 2支持的系统包括Linux、windows、Mac、RTOS,甚至是单片机等没有操作系统的裸机。
(2).ROS 1的通讯系统基于TCPROS/UDPROS,强依赖于master节点的处理;ROS 2的通讯系统是基于DDS,取消了master,同时在内部提供了DDS的抽象层实现,有了这个抽象层,用户就可以不去关注底层的DDS使用了哪个商家的API。
(3).ROS运行时要依赖roscore,一旦roscore出现问题就会造成较大的系统灾难,同时由于安装与运行体积较大,对很多低资源系统会造成负担;ROS2基于DDS进行数据传输,而DDS基于RTPS的去中心化的通信框架,这就去除了对roscore的依赖,系统的稳定性强,对资源的消耗也得到了降低。
(4).由于ROS 缺少Qos机制,topic的稳定性与质量难以保证;ROS2则提供了Qos机制,对通信的实时性、完整性、历史追溯等功能有了支持,这便大幅加强了框架功能,避免了高速系统难以适用等问题。
不过,ROS2的QoQ配置较为复杂,目前主要是国外一些专业的大学或实验室在使用,国内仅有极少数公司在尝试;此外,ROS 2的生态成熟度远不如ROS,这也给推广应用带来了不便。
跟AUTOSAR AP一样,ROS 2也是跑在soc芯片上、用于满足高等级自动驾驶的需求的。不过,萧猛在去年的一批文章中却特别强调:当我们称 “ROS/ROS2 为中间件”时,其含义与 “AUTOSAR AP为 中间件”并不是对等的关系。
萧猛的文章称:
当我们说 AutoSar是中间件时,这个中间件是很明确的 L.BSW层语义,即处于计算机OS与车载ECU特定功能实现之间,为 ECU功能实现层屏蔽掉特定处理器和计算机OS相关的细节,并提供与车辆网络、电源等系统交互所需的基础服务;
ROS/ROS2 是作为机器人开发的应用框架,在机器人应用和计算机OS之间提供了通用的中间层框架和常用软件模块(ROS Package),而且, ROS团队认为这个框架做得足够好,可以称作操作系统(OS)了。
ROS 2尽管在功能上跟AUTOSAR AP有不少重叠之处,但两者的思路是不一样的:
(1).从表现形式上看,AUTOSAR AP首先是一套标准,这个标准定义了一系列基础平台组件,每个平台组件定义了对应用的标准接口,但没有定义实现细节,和平台组件之间的交互接口(这些部分留给AUTOSAR AP供应商实现);ROS2则从一开始就是代码优先,每个版本都有完整的代码实现,也定义有面向应用标准API接口。
(2)AUTOSAR AP从一开始就面向ASIL-B应用;ROS 2不是根据ASIL的标准设计的,ROS 2实现功能安全的解决方案是,把底层换为满足ASIL要求的RTOS和商用工具链(编译器)。
ROS 2“过不了车规”似乎已成为一个很广泛的行业共识。但在萧猛看来,ROS2本来就不是为实时域设计的,如果一定要把实时性要求高的车辆控制算法运行在 ROS2中,“那是软件设计的错误,而不是ROS2的问题”。
萧猛认为,只要能补齐 L.BSW层所需要完成的所有功能、补齐 A 轴所有切面要求的特性,ROS 2就能用于自动驾驶量产车。如前段时间刚拿到采埃孚等多家巨头投资的Apex.AI公司基于ROS 2定制开发的Apex.OS就已经通过了最高等级的ASIL D认证。
萧猛说:“这实际上是基于 ROS 2的架构去实现一套 AUTOSAR AP 规范。这可以成为一个单独的产品,投入时间+人+钱可以开发出来,只是看有没有必要,值不值得”。
在具体的实践中,ROS 2跟AUTOSAR AP存在直接竞争关系——尽管对用户来说,并不存在严格意义上的“二选一”问题,但通常来说,若选了ROS 2,就不会选AUTOSAR AP了;若选了AUTOSAR AP,就不会选ROS 2了。
3. CyberRT
Cyber RT是网络Apollo开发出来的中间件,在Apollo 3.5中正式发布。Cyber RT和ROS2是比较像的, 其底层也是使用了一个开源版本的DDS。
网络最早用的是ROS 1,但在使用的过程中逐渐发现了ROS 1存在“若ROS Master出故障了,则任何两个节点之间的通信便受到影响”的问题,所以就希望使用一个“没有中间节点”的通信中间件来代替ROS 1,那时还没有ROS2,所以自己去做了一个Cyber RT。
为了解决 ROS 遇到的问题,Cyber RT删除了master机制,用自动发现机制代替,这个通信组网机制和汽车网络CAN完全一致。此外,Cyber RT的核心设计将调度、任务从内核空间搬到了用户空间。
(图片出处:https://blog.csdn.net/xhtchina/article/details/118151673)
其相对于其他系统,Cyber RT的一大优势是,专为无人架驶设计。网络已将Cyber RT开源,某互联网巨头的自动驾驶团队使用的中间件便是网络开源出来的Cyber RT。
Cyber RT跟ROS 2之间也存在竞争关系。
在谈到AUTOSAR AP、ROS 2与Cyber RT这些中间件的关系时,Vector产品专家蔡守群的解释是:
“不需要很机械地去分类,你可以把AUTOSAR AP, ROS和Cyber RT都想象成一个提供一组中间件的超市,用户可以按需从不同的超市购买,并不是说从一个超市买过一个中间件,就不能从其他超市买了。
蔡守群说:AUTOSAR AP中也包含了对ROS接口的支持。说不准哪天ROS和Cyber RT就会加入AUTOSAR AP的组件,或者 AUTOSAR AP会引入Cyber RT的组件。
4.DDS(通信中间件)
(1)什么是DDS?
在自动驾驶领域,中间件的功能涉及到通信、模块升级、任务调度、执行管理,但其最主要的功能就是通信。当前市场上,无论是Cyber RT还是 ROS,基本上90%的功能就是通信,狭义上说就是通信中间件。
通信中间可以分成开源和闭源的两种。开源的为OPEN DDS、FAST DDS、Cyclone等,闭源的就RTI的DDS和Vector的SOME/IP。DDS的全称为Data Distribution Service ,指一种数据分发服务标准,由对象管理组织(OMG)制定。
DDS能够实现低延迟、高可靠、高实时性的数据融合服务,能够从根本上降低软件的耦合性、复杂性,提高软件的模块化特性。高等级自动驾驶现在基本上都在探索依靠DDS来解决异构通信、低时延等CP解决不了的挑战。
融合了DDS的汽车软件能够更好地运行在下一代汽车的体系架构中,更能降低开发的成本、缩短研发的时间,更快地将产品推向市场。
(2)DDS与ROS 2、AUTOSAR AP之间的关系
ROS 2和Cyber RT的底层都使用了开源的DDS,将DDS作为最重要的通信机制。但也有自动驾驶公司的工程师认为,DDS可以起到替代ROS 2的作用,站在用户的角度看,两者之间其实存在“二选一”的关系。
AUTOSAR CP里一直没有包含跟DDS有关的东西,但AUTOSAR AP在 2018年3月的最新版(版本18-10)里开始支持DDS标准。将DDS与AUTOSAR AP结合使用,不仅可以保证和扩展AUTOSAR AP系统内部互操作性的功能,而且还可以将其开放给来自不同的生态系统(即ROS 2)。
从工程角度来看,将AUTOSAR和DDS结合起来的最大优势是,功能域和网络拓扑不再是对手,而是车辆中的盟友。网络拓扑结构能够更好地适应车辆的物理约束,功能域在物理车辆的顶部提供了一个灵活的覆盖层,这就是所谓的分区体系结构。
当然,DDS仅是通信中间件的一种。关于各类通信中间件之间的异同,我们将在本系列的第二篇做更详细的阐释。
三.AUTOSAR AP的地位正在弱化?
尽管AUTOSAR是当下最有名的自动驾驶中间件,但《九章智驾》在对诸多中间件厂商们的调研中得出一个结论:AUTOSAR在产业链中的地位可能正在弱化。 当然了,那些专注于AUTOSAR系统的厂商们并不认同这一观点。
我们在上文已经提到,随着EE架构从分布式向集中式演进、MCU被SOC取代,CP AUTSAR被AUTOSAR AP、ROS 2和Cyber RT等取代已是大势所趋,在下文,我们主要谈的是“AUTOSAR AP的地位会不会弱化”。
2021年12月中旬,两家AUTOSAR发起公司大陆集团、丰田联合采埃孚、積架路虎、沃尔沃、海拉等多家汽车行业龙头企业宣布投资车载操作系统初创公司Apex.AI,而Apex.AI的主力产品Apex.OS则是基于ROS 2发展起来的。
拿到了Apex.AI公司15%股权的采埃孚方面在接受媒体采访时说:“这意味着,我们可以为客户提供AUTOSAR AP的替代方案。”
尽管AUTOSAR AP已经有了标准,但还没有落地。安波福、采埃孚、大陆这些公司提供的方案,仍然是基于AUTOSAR CP标准的接口。事实上,越来越多的OEM不太想完全用AUTOSAR去解决智能驾驶操作系统的问题。
不仅特斯拉没有用AUTOSAR AP,国内的几大造车新势力也没有用(他们用的是AUTOSAR CP+DDS)。甚至,连一些正在转型的传统车企也没打算用AUTOSAR AP。
从产业链中各方的反应来看,AUTOSAR AP“地位不稳”的原因主要有以下几个:
1.使用成本太高
冯占军博士在《AUTOSAR对基础软件开发是喜还是忧?》一文中透露,AUTOSAR的费用通常是“几百万起”,并且,针对不同的域控制器、不同的芯片需要“重复收费”,一般小厂根本吃不消。“可能还没有什么产出,几百万就花出去了”。
除购买成本高外,毕晓鹏和萧猛都提到,AUTOSAR前期的学习难度很大、学习成本也非常高。为了学会如何使用AUTOSAR,企业甚至不得不专门培训一批人,如果受培训的人临时离职了,那培训费用就打了水漂。
2.效率不高
毕晓鹏认为,AUTOSAR AP的配置非常多,它是通过配置加上一部分代码去实现自己的功能,但配置多了之后,效率不高,而且代码臃肿。
3.静态部署与动态部署的理念冲突
毕晓鹏博士提到,AUTOSAR AP其实是从AUTOSAR CP发展而来的,AUTOSAR CP是静态部署,只适用于相对简单的业务逻辑和功能,其代码是固化的,有点像以前的功能手机——功能无法改变,不可能往里面再加一个APP;但AUTOSAR AP有点像现在的智能手机,软件开发人员开发一个APP,跨平台就可以用不同手机上了,这种动态部署的理念和之前的静态部署概念不甚相同,而其方法论却是基于静态部署衍生而来的,因此在实践层面会遇到不少问题。
4.无法满足智能网联的需求
由于云端跟车端所使用的操作系统不一样,AUTOSAR只能负责车内的通信,不能支持车端到云端的通信,因而无法支持车路协同场景(车端跟云端的通信,是通过MQTT、kafka等中间件来实现的)。除此之外,AUTOSAR能否兼容车辆网联化中需要用到的数据平台、通信平台和地图平台,也存在很大的疑问。
毕晓鹏说,在发现了这些问题后,有一些OEM开始逐渐放弃AUTOSAR架构,“转而自己去研发一套更适合动态部署、成本较低的新型软件架构”。
传统车厂是从使用CP过来的,所以在惯性上,他们可能还会考虑AP是否适合智能驾驶,但慢慢地也在尝试转型。如奥迪和TTTech合作做的通信中间件——zFAS,也没有采用AP。
不同于AUTOSAR CP已经是非常标准化的东西,大家用起来没什么问题,AUTOSAR AP现在的标准也不是很完善,每年也在更新,具体AP能发展成什么样,这个谁也不知道,大家更多也是观望的态度。
毕晓鹏认为,AUTOSAR标准并不能很好地支撑自动驾驶应用和创新的发展,因此,我们有必要建立一套更适合中国智能驾驶发展、且自主可控的技术架构和生态体系。
萧猛认为,由于从AUTOSAR CP到AUTOSAR AP一脉相承,一些已经对AUTOSAR形成路径依赖的公司会坚持使用AUTOSAR AP,但在经历过招人难、开发周期长等教训之后,他们有可能转向ROS 2。
当然,以AUTOSAR为主业的公司,显然不会认可上述“涉嫌唱衰”AUTOSAR AP的观点的。
比如,Vector蔡守群就认为,AUTOSAR AP只会越来越重要,因为它是顺应车载技术不断发展的一套规范,覆盖面会越来越广。
东软睿驰茅海燕也认为,要将整车域控制器和智驾域控制器合并到统一的中央计算平台上,没有AUTOSAR AP的支持很难搞定。“不是每家公司都能像特斯拉一样自己从头搭建系统的,目前,最好的工具还是AUTOSAR AP”。

D. 急!急!急!--街头篮球安装问题!!--急!急!急!

Aollo 是阿波罗

解决你不能正常运行游戏的解决方法
1.如果您安装或运行游戏时出现杀毒软件误报病毒的情况,请玩家依照以下步骤进行操作:

a.打开您的游戏目录,找到T2BOX登陆程序。
b.打开T2BOX程序后,请您使用T2BOX运行游戏来进行文件对比,并更新您的文件以确保您游戏文件的完整。
如果还是出现 那个提示的话
首先确认网络连接是否正常, 在网络连接正常的情况下出现此类提示时,请确认Apollo目录下的文件是否被损坏, 如果文件缺失或被损坏请重新安装游戏。
产生这个错误提示的原因是在当前系统中运行有与Apollo系统冲突的其他软件, 请关闭其他可能产生冲突的软件, 如果仍然不能解决, 请重新启动计算机后再次尝试。

那个提示是:APOLLO 提示下载失败...

补丁就覆盖在游戏客户端即可
其实这个原因很好解决
并不是网速 版本 杀毒软件和防火墙的问题
以后下网络游戏不要放到U盘里
因为你把文件丢失造成不能开启游戏拉

粗心大意了吧~
玩街头篮球几乎不要很高的配置
网络连接的话你能看到进游戏的菜单和新闻和频道前面那个绿灯就行了
进游戏的话 你能进游戏登录框就说明可以了

我刚看了下T2BOX那个游戏菜单 上面好像有个修复客户端
我没用过, 你去试一下 可能是便捷的方法之一
实在不行就按我说的去做 下个客户端到本地再安装到本地就行了
你想用U盘带着跑带着玩的话 不能复制文件夹
只能复制安装包 否则文件会丢失的

但是我不推荐你用U盘来存网络游戏 来玩网络游戏
因为u盘始终不比硬盘,它设计出来更多的是考虑传输文件或者存储资料的,如果你硬要拿去游戏,不断的读取数据,那对u盘的寿命是有很大的影响的!
即使是平时,我们都不建议把u盘插在电脑上的时间过长,其中也有这个的原因!所以,像游戏这样的软件的安装还是直接安装在电脑上比较好,u盘还是拿来作为传输文件的工具吧!

我饿死了 - -
打完这堆都三更半夜了
哈哈 我的工作完成了..
希望对你有所帮助哦!

谢谢..

E. 百度apollo只能运行在linux下吗

Redis的代码遵循ANSI-C编写,可以在所有POSIX系统(如Linux, *BSD, Mac OS X, Solaris等)上安装运行。而且Redis并不依赖任何非标准库,也没有编译参数必需添加。redis的安装出奇的简单,这可能也是他风靡的一个原因,让人很容易上手,不像某些东西,编译阶段就能让人完全绝望。
另外windows也可以运行

F. 教师上网发帖子规范

我是学计算机的,经常在其他论坛交流。
下面的老帖子很经典,也适合其他行业的交流,但需要你来整理一下。

提问的智慧
Copyright (C) 2001 by Eric S. Raymond

中文版Copyleft 2001 by D.H.Grand(nOBODY/Ginux)

英文版:http://www.tuxedo.org/~esr/faqs/smart-questions.html
感谢Eric的耐心指点和同意,本文才得以完成并发布,本指南
英文版版权为Eric Steven Raymond所有,
中文版版权由D.H.Grand[nOBODY/Ginux]所有。

在黑客世界里,当提出一个技术问题时,你能得到怎样的回答?这取决于挖出 答案的难度,同样取决于你提问的方法。本指南旨在帮助你提高发问技巧,以 获取你最想要的答案。

首先你必须明白,黑客们只偏爱艰巨的任务,或者能激发他们思维的好问题。 如若不然,我们还来干吗?如果你有值得我们反复咀嚼玩味的好问题,我们自 会对你感激不尽。好问题是激励,是厚礼,可以提高我们的理解力,而且通常 会暴露我们以前从没意识到或者思考过的问题。对黑客而 言,“问得好!”是发自内心的大力称赞。

尽管黑客们有蔑视简单问题和不友善的坏名声,有时看起来似乎我们对新手, 对知识贫乏者怀有敌意,但其实不是那样的。

我们不想掩饰对这样一些人的蔑视--他们不愿思考,或者在发问前不去完成他 们应该做的事。这种人只会谋杀时间--他们只愿索取,从不付出,无端消耗我 们的时间,而我们本可以把时间用在更有趣的问题或者更值得回答的人身上。 我们称这样的人为“失败者”(由于历史原因,我们有时 把它拼作“lusers”)。

我们在很大程度上属于志愿者,从繁忙的生活中抽出时间来解惑答疑,而且时常 被提问淹没。所以我们无情的滤掉一些话题,特别是抛弃那些看起来象失败者的 家伙,以便更高效的利用时间来回答胜利者的问题。

如果你觉得我们过于傲慢的态度让你不爽,让你委屈,不妨设身处地想想。我 们并没有要求你向我们屈服--事实上,我们中的大多数人最喜欢公平交易不过 了,只要你付出小小努力来满足最起码的要求,我们就会欢迎你加入到我们的 文化中来。但让我们帮助那些不愿意帮助自己的人是没有 意义的。如果你不能接受这种“歧视”,我们建议你花点钱找家商业公司签个 技术支持协议得了,别向黑客乞求帮助。

如果你决定向我们求助,当然不希望被视为失败者,更不愿成为失败者中的一 员。立刻得到有效答案的最好方法,就是象胜利者那样提问--聪明、自信、有 解决问题的思路,只是偶尔在特定的问题上需要获得一点帮助。

(欢迎对本指南提出改进意见。任何建议请E-mail至esr at thyrsus.com,然而 请注意,本文并非网络礼节的通用指南,我通常会拒绝无助于在技术论坛得到 有用答案的建议。) (当然,如果你写中文,最好还是寄到DHGrand at hotmail.com;;-)

======== 提问之前 ========

在通过电邮、新闻组或者聊天室提出技术问题前,检查你有没有做到: 1. 通读手册,试着自己找答案。
2. 在FAQ里找答案(一份维护得好的FAQ可以包罗万象:)。
3. 在网上搜索(个人推荐google~~~)。
4. 向你身边精于此道的朋友打听。

当你提出问题的时候,首先要说明在此之前你干了些什么;这将有助于树立你 的形象:你不是一个妄图不劳而获的乞讨者,不愿浪费别人的时间。如果提问者能从答案中学到东西,我们更乐于回答他的问题。

周全的思考,准备好你的问题,草率的发问只能得到草率的回答,或者根本得 不到任何答案。越表现出在寻求帮助前为解决问题付出的努力,你越能得到实 质性的帮助。

小心别问错了问题。如果你的问题基于错误的假设,普通黑客(J. Random Hacker)通常会用无意义的字面解释来答复你,心里想着“蠢问题...”,希 望着你会从问题的回答(而非你想得到的答案)中汲取教训。

决不要自以为够资格得到答案,你没这种资格。毕竟你没有为这种服务支付任 何报酬。你要自己去“挣”回一个答案,靠提出一个有内涵的,有趣的,有思 维激励作用的问题--一个对社区的经验有潜在贡献的问题,而不仅仅是被动的 从他人处索要知识--去挣到这个答案。

另一方面,表明你愿意在找答案的过程中做点什么,是一个非常好的开端。 “谁能给点提示?”、“我这个例子里缺了什么?”以及“我应该检查什么 地方?”比“请把确切的过程贴出来”更容易得到答复。因为你显得只要有 人指点正确的方向,你就有完成它的能力和决心。

======== 怎样提问 ========

------------ 谨慎选择论坛 ------------

小心选择提问的场合。如果象下面描述的那样,你很可能被忽略掉或者被看作失败者: 1. 在风马牛不相及的论坛贴出你的问题 2. 在探讨高级技巧的论坛张贴非常初级的问题;反之亦然 3. 在太多的不同新闻组交叉张贴

---------------------------- 用辞贴切,语法正确,拼写无误 ----------------------------

我们从经验中发现,粗心的写作者通常也是马虎的思考者(我敢打包票)。 回答粗心大意者的问题很不值得,我们宁愿把时间耗在别处。

正确的拼写,标点符号和大小写很重要。更一般的说,如果你的提问写得象个半文盲,你很有可能被忽视。

如果你在使用非母语的论坛提问,你可以犯点拼写和语法上的小错--但决不能 在思考上马虎(没错,我们能弄清两者的分别)

---------------------------- 使用含义丰富,描述准确的标题 ----------------------------

在邮件列表或者新闻组中,大约50字以内的主题标题是抓住资深专家注意力 的黄金时机。别用喋喋不休的“帮帮忙”(更别说“救命啊!!!!!”这 样让人反感的话)来浪费这个机会。不要妄想用你的痛苦程度来打动我们, 别用空格代替问题的描述,哪怕是极其简短的描述。

蠢问题: 救命啊!我的膝上机不能正常显示了!

聪明问题: XFree86 4.1下鼠标光标变形,Fooware MV1005的显示芯片。

如果你在回复中提出问题,记得要修改内容标题,表明里面有一个问题。一个 看起来象“Re:测试”或者“Re:新bug”的问题很难引起足够重视。另外,引 用并删减前文的内容,给新来的读者留下线索。

------------------ 精确描述,信息量大 ------------------

1. 谨慎明确的描述症状。
2. 提供问题发生的环境(机器配置、操作系统、应用程序以及别的什么)。
3. 说明你在提问前是怎样去研究和理解这个问题的。
4. 说明你在提问前采取了什么步骤去解决它。
5. 罗列最近做过什么可能有影响的硬件、软件变更。

尽量想象一个黑客会怎样反问你,在提问的时候预先给他答案。

Simon Tatham写过一篇名为《如何有效的报告Bug》的出色短文。强力推荐你也读一读。

-------- 话不在多 --------

你需要提供精确有效的信息。这并不是要求你简单的把成吨的出错代码或者数据完 全转储摘录到你的提问中。如果你有庞大而复杂的测试条件,尽量把它剪裁得越小 越好。

这样做的用处至少有三点。第一,表现出你为简化问题付出了努力,这可以使你得 到回答的机会增加;第二,简化问题使你得到有用答案的机会增加;第三,在提炼 你的bug报告的过程中,也许你自己就能找出问题所在或作出更正。

------------------ 只说症状,不说猜想 ------------------

告诉黑客们你认为问题是怎样引起的没什么帮助。(如果你的推断如此有效,还用 向别人求助吗?),因此要确信你原原本本告诉了他们问题的症状,不要加进你自 己的理解和推论。让黑客们来诊断吧。

蠢问题: 我在内核编译中一次又一次遇到SIG11错误,我怀疑某条飞线搭在主板的走线上了, 这种情况应该怎样检查最好?

聪明问题: 我自制的一套K6/233系统,主板是FIC-PA2007 (VIA Apollo VP2芯片组),256MB Corsair PC133 SDRAM,在内核编译中频频产生SIG11错误,从开机20分钟以后就有这种情况,开机 前20分钟内从没发生过。重启也没有用,但是关机一晚上就又能工作20分钟。所有 内存都换过了,没有效果。相关部分的典型编译记录如下...。

------------------ 按时间顺序列出症状 ------------------

对找出问题最有帮助的线索,往往就是问题发生前的一系列操作,因此,你的说明 应该包含操作步骤,以及电脑的反应,直到问题产生。

如果你的说明很长(超过四个段落),在开头简述问题会有所帮助,接下来按时间 顺序详述。这样黑客们就知道该在你的说明中找什么。

-------------- 明白你想问什么 --------------

漫无边际的提问近乎无休无止的时间黑洞。最能给你有用答案的人也正是最忙的人(他们忙是因为要亲自完成大部分工作)。这样的人对无节制的时间黑洞不太感冒,因此也可以说他们对漫无边际的提问不大感冒。

如果你明确表述需要回答者做什么(提供建议,发送一段代码,检查你的补丁或是别的),就最有可能得到有用的答案。这会定出一个时间和精力的上限,便于回答者集中精力来帮你,这很凑效。

要理解专家们生活的世界,要把专业技能想象为充裕的资源,而回复的时间则是贫乏的资源。解决你的问题需要的时间越少,越能从忙碌的专家口中掏出答案。

因此,优化问题的结构,尽量减少专家们解决它所需要的时间,会有很大的帮助--这通常和简化问题有所区别。因此,问“我想更好的理解X,能给点提示吗?”通常比问“你能解释一下X吗?”更好。如果你的代码不能工作,问问它有什么地方不对,比要求别人替你修改要明智得多。

------------------------ 别问应该自己解决的问题 ------------------------

黑客们总是善于分辨哪些问题应该由你自己解决;因为我们中的大多数都曾自己解决这类问题。同样,这些问题得由你来搞定,你会从中学到东西。

你可以要求给点提示,但别要求得到完整的解决方案。

---------------- 去除无意义的疑问 ----------------

别用无意义的话结束提问,例如“有人能帮我吗?”或者“有答案吗?”。

首先:如果你对问题的描述不很合适,这样问更是画蛇添足。其次:由于这样问是画蛇添足,黑客们会很厌烦你--而且通常会用逻辑上正确的回答来表示他们的蔑视,例如:“没错,有人能帮你”或者“不,没答案”。

---------------------------- 谦逊绝没有害处,而且常帮大忙 ----------------------------

彬彬有礼,多用“请”和“先道个谢了”。让大家都知道你对他们花费时间义务提供帮助心存感激。

然而,如果你有很多问题无法解决,礼貌将会增加你得到有用答案的机会。(我们注意到,自从本指南发布后,从资深黑客处得到的唯一严重缺陷反馈,就是对预先道谢这一条。一些黑客觉得“先谢了”的言外之意是过后就不会再感谢任何人了。我们的建议是:都道谢。)

------------------------ 问题解决后,加个简短说明 ------------------------

问题解决后,向所有帮助过你的人发个说明,让他们知道问题是怎样解决的,并再一次向他们表示感谢。如果问题在新闻组或者邮件列表中引起了广泛关注,应该在那里贴一个补充说明。

补充说明不必很长或是很深入;简单的一句“你好,原来是网线出了问题!谢谢大家--Bill”比什么也不说要强。事实上,除非结论真的很有技术含量,否则简短可爱的小结比长篇学术论文更好。说明问题是怎样解决的,但大可不必将解决问题的过程复述一遍。

除了表示礼貌和反馈信息以外,这种补充有助于他人在邮件列表/新闻组/论坛中搜索对你有过帮助的完整解决方案,这可能对他们也很有用。

最后(至少?),这种补充有助于所有提供过帮助的人从中得到满足感。

如果你自己不是老手或者黑客,那就相信我们,这种感觉对于那些你向他们求助的导师或者专家而言,是非常重要的。问题久拖未决会让人灰心;黑客们渴望看到问题被解决。好人有好报,满足他们的渴望,你会在下次贴出新问题时尝到甜头。

---------- 还是不懂 ----------

如果你不是很理解答案,别立刻要求对方解释。象你以前试着自己解决问题时那样(利用手册,FAQ,网络,身边的高手),去理解它。如果你真的需要对方解释,记得表现出你已经学到了点什么。

比方说,如果我回答你:“看来似乎是zEntry被阻塞了;你应该先清除它。”,然后:一个很糟的后续问题:“zEntry是什么?”

聪明的问法应该是这样:“哦~~~我看过帮助了但是只有-z和-p两个参数中提到了zEntry而且还都没有清楚的解释:<你是指这两个中的哪一个吗?还是我看漏了什么?”

========== 三思而后问 ==========

以下是几个经典蠢问题,以及黑客在拒绝回答时的心中所想:

问题:我能在哪找到X程序?

问题:我的程序/配置/SQL申明没有用

问题:我的Windows有问题,你能帮我吗?

问题:我在安装Linux(或者X)时有问题,你能帮我吗?

问题:我怎么才能破解root帐号/窃取OP特权/读别人的邮件呢?

提问:我能在哪找到X程序? 回答:就在我找到它的地方啊蠢货--搜索引擎的那一头。天呐!还有人不会用Google吗?

提问:我的程序(配置、SQL申明)没有用 回答:这不算是问题吧,我对找出你的真正问题没兴趣--如果要我问你二十个问题才找得出来的话--我有更有意思的事要做呢。

在看到这类问题的时候,我的反应通常不外如下三种:

1. 你还有什么要补充的吗?

2. 真糟糕,希望你能搞定。

3. 这跟我有什么鸟相关?

提问:我的Windows有问题,你能帮我吗? 回答:能啊,扔掉萎软的垃圾,换Linux吧。

提问:我在安装Linux(或者X)时有问题,你能帮我吗? 回答:不能,我只有亲自在你的电脑上动手才能找到毛病。还是去找你当地的Linux用户组寻求手把手的指导吧(你能在这儿找到用户组的清单)。

提问:我怎么才能破解root帐号/窃取OP特权/读别人的邮件呢?回答:想要这样做,说明你是个卑鄙小人;想找个黑客帮你,说明你是个白痴!

============== 好问题,坏问题 ==============

最后,我举一些例子来说明,怎样聪明的提问;同一个问题的两种问法被放在一起,一种是愚蠢的,另一种才是明智的。

蠢问题:我可以在哪儿找到关于Foonly Flurbamatic的资料?

这种问法无非想得到“STFW”这样的回答。

聪明问题:我用Google搜索过“Foonly Flurbamatic 2600”,但是没找到有用的结果。谁知道上哪儿去找对这种设备编程的资料?

这个问题已经STFW过了,看起来他真的遇到了麻烦。

蠢问题:我从FOO项目找来的源码没法编译。它怎么这么烂?

他觉得都是别人的错,这个傲慢自大的家伙

聪明问题:FOO项目代码在Nulix 6.2版下无法编译通过。我读过了FAQ,但里面没有提到跟Nulix有关的问题。这是我编译过程的记录,我有什么做得不对的地方吗?

他讲明了环境,也读过了FAQ,还指明了错误,并且他没有把问题的责任推到别人头上,这个家伙值得留意。

蠢问题:我的主板有问题了,谁来帮我?

普通黑客对这类问题的回答通常是:“好的,还要帮你拍拍背和换尿布吗?” ,然后按下删除键。

聪明问题:我在S2464主板上试过了X、Y和Z,但没什么作用,我又试了A、B和C。请注意当我尝试C时的奇怪现象。显然边带传输中出现了收缩,但结果出人意料。在多处理器主板上引起边带泄漏的通常原因是什么?谁有好主意接下来我该做些什么测试才能找出问题?

这个家伙,从另一个角度来看,值得去回答他。他表现出了解决问题的能力,而不是坐等天上掉答案。

在最后一个问题中,注意“告诉我答案”和“给我启示,指出我还应该做什么诊断工作”之间微妙而又重要的区别。

事实上,后一个问题源自于2001年8月在Linux内核邮件列表上的一个真实的提问。我(Eric)就是那个提出问题的人。我在Tyan S2464主板上观察到了这种无法解释的锁定现象,列表成员们提供了解决那一问题的重要信息。

通过我的提问方法,我给了大家值得玩味的东西;我让人们很容易参与并且被吸引进来。我显示了自己具备和他们同等的能力,邀请他们与我共同探讨。我告诉他们我所走过的弯路,以避免他们再浪费时间,这是一种对他人时间价值的尊重。

后来,当我向每个人表示感谢,并且赞赏这套程序(指邮件列表中的讨论--译者注)运作得非常出色的时候,一个Linux内核邮件列表(lkml)成员表示,问题得到解决并非由于我是这个列表中的“名人”,而是因为我用了正确的方式来提问。

我们黑客从某种角度来说是拥有丰富知识但缺乏人情味的家伙;我相信他是对的,如果我象个乞讨者那样提问,不论我是谁,一定会惹恼某些人或者被他们忽视。他建议我记下这件事,给编写这个指南的人一些指导。

================ 找不到答案怎么办 ================

如果仍得不到答案,请不要以为我们觉得无法帮助你。有时只是看到你问题的人不知道答案罢了。没有回应不代表你被忽视,虽然不可否认这种差别很难区分。

总的说来,简单的重复张贴问题是个很糟的想法。这将被视为无意义的喧闹。你可以通过其它渠道获得帮助,这些渠道通常更适合初学者的需要。有许多网上的以及本地的用户组,由狂热的软件爱好者(即使他们可能从没亲自写过任何软件)组成。通常人们组建这样的团体来互相帮助并帮助新手。

另外,你可以向很多商业公司寻求帮助,不论公司大还是小(RedHat和LinuxCare就是两个最常见的例子)。别为要付费才能获得帮助而感到沮丧!毕竟,假使你的汽车发动机汽缸密封圈爆掉了--完全可能如此--你还得把它送到修车铺,并且为维修付费。就算软件没花费你一分钱,你也不能强求技术支持总是免费的。

对大众化的软件,就象Linux之类而言,每个开发者至少会有上万名用户。根本不可能由一个人来处理来自上万名用户的求助电话。要知道,即使你要为帮助付费,同你必须购买同类软件相比,你所付出的也是微不足道的(通常封闭源代码软件的技术支持费用比开放源代码软件要高得多,且内容也不那么丰富)。

G. 提问需要技巧吗

提问也需要切境。所谓切境,即所提问题要符合被问人的年龄、身份、文化素养、性格特征、语言环境。被问的人有的热情爽快、有的性格内向、有的大大咧咧、有的审慎多疑、有的傲慢自信、有的狡黠刁钻,性格不同,气质迥异,如果不顾这些特点,仅用一个腔调、一种方式提问,就会碰壁、闹笑话。

提问要便于对方回答

提问的目的是为了得到对方的回答,因此你的提问必须采取对方乐于接受的方式,而且提问题不宜涉及个人隐私,以免对方对你的提问产生抵触情绪。比如:

有位年轻记者满怀信心地去采访一位有成就的女科学家。他这样提问道:“请问您毕业于哪所大学?”答:“对不起,我没有上过大学。我搞科研靠自学。我认为自学也能成才。”她的回答不免使他有几分尴尬。为了缓和气氛,他忙转移话题,想先谈谈生活,于是说道:“您的孩子在哪儿上学?”不料科学家十分不悦,答道:“我早已决定把毕生精力贡献给自己的事业,因此,我一直独身至今。请原谅,这个问题我不愿意多谈,如果你没有其他问题的话,就谈到这儿吧。我还要工作。”她下了逐客令。

显然,问话者忽视了问话的内容。但如果接着自学这个话题,可能会给对方留下良好印象从而愿意展开深入交谈。

要讲究提问的语言模式

一般来讲,提问的最佳语言模式是陈述句加疑问语缀。我们比较一下下面两种提问:“你根本没有想出一个主意来,你凭什么认为你能提出一个切实可行的方案呢?”“我相信你能提出一个切实可行的方案,这很好,能不能先说一说呢?”

显然,前面一个提问会招来被问人的冷眼,而第二个提问则会激起对方回答的积极性。这样,双方才具备了交谈的前提。对于如何提问,美国明尼苏达大学拉尔夫尼科尔博士制定了一套提问技术要点,对我们很有借鉴作用。

(1)忌提明知对方不能或不愿作答的问题。

(2)用对方较适用的“交际传媒”提问,切不可故作高深,卖弄学识。

(3)适当运用幽默语,一开始提问,不要限定对方的回答,不要随意搅扰对方的思绪。

(4)力避你的发问或问题引起对方“对抗性选择”,即要么避而不答,要么拂袖而去。

H. 提问技巧详解

提问的艺术

在网络世界里,当提出一个技术问题时,你能得到怎样的回答?这取决于挖出答案的难度, 同样取决于你提问的方法。本指南旨在帮助你提高发问技巧,以获取你最想要的答案……

不想掩饰对这样一些人的蔑视--他们不愿思考,或者在发问前不去完成他们应该做的事。这种人只会谋杀时间--他们只愿索取,从不付出,无端消耗我们的时间,而我们本可以把时间用在更有趣的问题或者更值得回答的人身上。我们称这样的人为“失败者”(由于历史原因,我们有时把它拼作“lusers”)。
提问之前

在通过电邮、新闻组或者聊天室提出技术问题前,检查你有没有做到:

1. 通读手册,试着自己找答案。
2. 在FAQ里找答案(一份维护得好的FAQ可以包罗万象:)。
3. 在网上搜索(个人推荐google~~~)。
4. 向你身边精于此道的朋友打听。

当你提出问题的时候,首先要说明在此之前你干了些什么;这将有助于树立你的形象:你不是一个妄图不劳而获的乞讨者,不愿浪费别人的时间。如果提问者能从答案中学到东西,我们更乐于回答他的问题。

周全的思考,准备好你的问题,草率的发问只能得到草率的回答,或者根本得不到任何答案。越表现出在寻求帮助前为解决问题付出的努力,你越能得到实质性的帮助。

小心别问错了问题。如果你的问题基于错误的假设,普通黑客(J. Random Hacker)通常会用无意义的字面解释来答复你,心里想着“蠢问题…”,希望着你会从问题的回答(而非你想得到的答案)中汲取教训。

决不要自以为够资格得到答案,你没这种资格。毕竟你没有为这种服务支付任何报酬。你要自己去“挣”回一个答案,靠提出一个有内涵的,有趣的,有思维激励作用的问题–一个对社区的经验有潜在贡献的问题,而不仅仅是被动的从他人处索要知识–去挣到这个答案。

另一方面,表明你愿意在找答案的过程中做点什么,是一个非常好的开端。“谁能给点提示?”、“我这个例子里缺了什么?”以及“我应该检查什么地方?”比“请把确切的过程贴出来”更容易得到答复。因为你显得只要有人指点正确的方向,你就有完成它的能力和决心。

怎样提问

- 谨慎选择论坛

小心选择提问的场合。如果象下面描述的那样,你很可能被忽略掉或者被看作失败者:

1. 在风马牛不相及的论坛贴出你的问题
2. 在探讨高级技巧的论坛张贴非常初级的问题;反之亦然
3. 在太多的不同新闻组交叉张贴

- 用辞贴切,语法正确,拼写无误

我们从经验中发现,粗心的写作者通常也是马虎的思考者(我敢打包票)。 回答粗心大意者的问题很不值得,我们宁愿把时间耗在别处。

正确的拼写,标点符号和大小写很重要。

更一般的说,如果你的提问写得象个半文盲,你很有可能被忽视。

如果你在使用非母语的论坛提问,你可以犯点拼写和语法上的小错–但决不能在思考上马虎(没错,我们能弄清两者的分别)。

- 使用含义丰富,描述准确的标题

在邮件列表或者新闻组中,大约50字以内的主题标题是抓住资深专家注意力的黄金时机。别用喋喋不休的“帮帮忙”(更别说“救命啊!!!!!”这样让人反感的话)来浪费这个机会。不要妄想用你的痛苦程度来打动我们, 别用空格代替问题的描述,哪怕是极其简短的描述。

蠢问题: 救命啊!我的膝上机不能正常显示了!

聪明问题: XFree86 4.1下鼠标光标变形,Fooware MV1005的显示芯片。

如果你在回复中提出问题,记得要修改内容标题,表明里面有一个问题。一个看起来象“Re:测试”或者“Re:新bug”的问题很难引起足够重视。另外,引用并删减前文的内容,给新来的读者留下线索。

- 精确描述,信息量大

1. 谨慎明确的描述症状。
2. 提供问题发生的环境(机器配置、操作系统、应用程序以及别的什么)。
3. 说明你在提问前是怎样去研究和理解这个问题的。
4. 说明你在提问前采取了什么步骤去解决它。
5. 罗列最近做过什么可能有影响的硬件、软件变更。

尽量想象一个黑客会怎样反问你,在提问的时候预先给他答案。

Simon Tatham写过一篇名为《如何有效的报告Bug》的出色短文。强力推荐你也读一读。

- 话不在多

你需要提供精确有效的信息。这并不是要求你简单的把成吨的出错代码或者数据完全转储摘录到你的提问中。如果你有庞大而复杂的测试条件,尽量把它剪裁得越小越好。

这样做的用处至少有三点。第一,表现出你为简化问题付出了努力,这可以使你得到回答的机会增加;第二,简化问题使你得到有用答案的机会增加;第三,在提炼你的bug报告的过程中,也许你自己就能找出问题所在或作出更正。

- 只说症状,不说猜想

告诉黑客们你认为问题是怎样引起的没什么帮助。(如果你的推断如此有效,还用向别人求助吗?),因此要确信你原原本本告诉了他们问题的症状,不要加进你自己的理解和推论。让黑客们来诊断吧。

蠢问题: 我在内核编译中一次又一次遇到SIG11错误,我怀疑某条飞线搭在主板的走线上了,这种情况应该怎样检查最好?

聪明问题: 我自制的一套K6/233系统,主板是FIC-PA2007 (VIA Apollo VP2芯片组),256MB Corsair PC133 SDRAM,在内核编译中频频产生SIG11错误,从开机20分钟以后就有这种情况,开机前20分钟内从没发生过。重启也没有用,但是关机一晚上就又能工作20分钟。所有内存都换过了,没有效果。相关部分的典型编译记录如下…。

- 按时间顺序列出症状

对找出问题最有帮助的线索,往往就是问题发生前的一系列操作,因此,你的说明应该包含操作步骤,以及电脑的反应,直到问题产生。

如果你的说明很长(超过四个段落),在开头简述问题会有所帮助,接下来按时间顺序详述。这样黑客们就知道该在你的说明中找什么。

- 明白你想问什么

漫无边际的提问近乎无休无止的时间黑洞。最能给你有用答案的人也正是最忙的人(他们忙是因为要亲自完成大部分工作)。这样的人对无节制的时间黑洞不太感冒,因此也可以说他们对漫无边际的提问不大感冒。

如果你明确表述需要回答者做什么(提供建议,发送一段代码,检查你的补丁或是别的),就最有可能得到有用的答案。这会定出一个时间和精力的上限,便于回答者集中精力来帮你,这很奏效。要理解专家们生活的世界,要把专业技能想象为充裕的资源,而回
复的时间则是贫乏的资源。解决你的问题需要的时间越少,越能从忙碌的专家口中掏出答案。

因此,优化问题的结构,尽量减少专家们解决它所需要的时间,会有很大的帮助–这通常和简化问题有所区别。因此,问“我想更好的理解X,能给点提示吗?”通常比问“你能解释一下X吗?”更好。如果你的代码不能工作,问问它有什么地方不对,比要求别人替
你修改要明智得多。

- 别问应该自己解决的问题

黑客们总是善于分辨哪些问题应该由你自己解决;因为我们中的大多数都曾自己解决这类问题。同样,这些问题得由你来搞定,你会从中学到东西。你可以要求给点提示,但别要求得到完整的解决方案。

- 去除无意义的疑问

别用无意义的话结束提问,例如“有人能帮我吗?”或者“有答案吗?”。首先:如果你对问题的描述不很合适,这样问更是画蛇添足。其次:由于这样问是画蛇添足,黑客们会很厌烦你–而且通常会用逻辑上正确的回答来表示他们的蔑视,例如:“没错,有人能帮你”或者“不,没答案”。

- 谦逊绝没有害处,而且常帮大忙

彬彬有礼,多用“请”和“先道个谢了”。让大家都知道你对他们花费时间义务提供帮助心存感激。然而,如果你有很多问题无法解决,礼貌将会增加你得到有用答案的机会。

(我们注意到,自从本指南发布后,从资深黑客处得到的唯一严重缺陷反馈,就是对预先道谢这一条。一些黑客觉得“先谢了”的言外之意是过后就不会再感谢任何人了。我们的建议是:都道谢。)

- 问题解决后,加个简短说明

问题解决后,向所有帮助过你的人发个说明,让他们知道问题是怎样解决的,并再一次向他们表示感谢。如果问题在新闻组或者邮件列表中引起了广泛关注,应该在那里贴一个补充说明。补充说明不必很长或是很深入;简单的一句“你好,原来是网线出了问题!谢谢大家–Bill”比什么也不说要强。事实上,除非结论真的很有技术含量,否则简短可爱的小结比长篇学术论文更好。说明问题是怎样解决的,但大可不必将解决问题的过程复述一遍。除了表示礼貌和反馈信息以外,这种补充有助于他人在邮件列表/新闻组/论坛中搜索对你有过帮助的完整解决方案,这可能对他们也很有用。最后(至少?),这种补充
有助于所有提供过帮助的人从中得到满足感。如果你自己不是老手或者黑客,那就相信我们,这种感觉对于那些你向他们求助的导师或者专家而言,是非常重要的。问题久拖未决会让人灰心;黑客们渴望看到问题被解决。好人有好报,满足他们的渴望,你会在下次贴出新问题时尝到甜头。

- 还是不懂

如果你不是很理解答案,别立刻要求对方解释。象你以前试着自己解决问题时那样(利用手册,FAQ,网络,身边的高手),去理解它。如果你真的需要对方解释,记得表现出你已经学到了点什么。比方说,如果我回答你:“看来似乎是zEntry被阻塞了;你应该先清除它。”,然后:一个很糟的后续问题: “zEntry是什么?” 聪明的问法应该是这样:“哦~~~我看过帮助了但是只有-z和-p两个参数中提到了zEntry而且还都没有清楚的解释:<你是指这两个中的哪一个吗?还是我看漏了什么?”

三思而后问

以下是几个经典蠢问题,以及黑客在拒绝回答时的心中所想:

问题:我能在哪找到X程序?
问题:我的程序/配置/SQL申明没有用
问题:我的Windows有问题,你能帮我吗?
问题:我在安装Linux(或者X)时有问题,你能帮我吗?
问题:我怎么才能破解root帐号/窃取OP特权/读别人的邮件呢?

提问:我能在哪找到X程序?
回答:就在我找到它的地方啊蠢货–搜索引擎的那一头。天呐!还有人不会用Google吗?

提问:我的程序(配置、SQL申明)没有用
回答:这不算是问题吧,我对找出你的真正问题没兴趣–如果要我问你二十个问题才找得出来的话–我有更有意思的事要做呢。

在看到这类问题的时候,我的反应通常不外如下三种:

1. 你还有什么要补充的吗?
2. 真糟糕,希望你能搞定。
3. 这跟我有什么鸟相关?

提问:我的Windows有问题,你能帮我吗?
回答:能啊,扔掉萎软的垃圾,换Linux吧。

提问:我在安装Linux(或者X)时有问题,你能帮我吗?
回答:不能,我只有亲自在你的电脑上动手才能找到毛病。还是去找你当地的Linux用户组寻求手把手的指导吧(你能在这儿找到用户组的清单)。

提问:我怎么才能破解root帐号/窃取OP特权/读别人的邮件呢?
回答:想要这样做,说明你是个卑鄙小人;想找个黑客帮你,说明你是个ΘΘΘΘ!

好问题,坏问题

最后,我举一些例子来说明,怎样聪明的提问;同一个问题的两种问法被放在一起,一种是愚蠢的,另一种才是明智的。

蠢问题:我可以在哪儿找到关于Foonly Flurbamatic的资料?

// 这种问法无非想得到“STFW”这样的回答。

聪明问题:我用Google搜索过“Foonly Flurbamatic 2600”,但是没找到有用的结果。谁知道上哪儿去找对这种设备编程的资料?

// 这个问题已经STFW过了,看起来他真的遇到了麻烦。

蠢问题:我从FOO项目找来的源码没法编译。它怎么这么烂?

// 他觉得都是别人的错,这个傲慢自大的家伙

聪明问题:FOO项目代码在Nulix 6.2版下无法编译通过。我读过了FAQ,但里面没有提到跟Nulix有关的问题。这是我编译过程的记录,我有什么做得不对的地方吗?

// 他讲明了环境,也读过了FAQ,还指明了错误,并且他没有把问题的责任推到别人头上,这个家伙值得留意。

蠢问题:我的主板有问题了,谁来帮我?

// 普通黑客对这类问题的回答通常是:“好的,还要帮你拍拍背和换尿布吗?”,然后按下删除键。

聪明问题:我在S2464主板上试过了X、Y和Z,但没什么作用,我又试了A、B和C。请注意当我尝试C时的奇怪现象。显然边带传输中出现了收缩,但结果出人意料。在多处理器主板上引起边带泄漏的通常原因是什么?谁有好主意接下来我该做些什么测试才能找出问题?

// 这个家伙,从另一个角度来看,值得去回答他。他表现出了解决问题的能力,而不是坐等天上掉答案。

在最后一个问题中,注意“告诉我答案”和“给我启示,指出我还应该做什么诊断工作”之间微妙而又重要的区别。事实上,后一个问题源自于2001年8月在 Linux内核邮件列表上的一个真实的提问。我(Eric)就是那个提出问题的人。我在Tyan S2464主板上观察到了这种无法解释的锁定现象,列表成员们提供了解决那一问题的重要信息。

通过我的提问方法,我给了大家值得玩味的东西;我让人们很容易参与并且被吸引进来。我显示了自己具备和他们同等的能力,邀请他们与我共同探讨。我告诉他们我所走过的弯路,以避免他们再浪费时间,这是一种对他人时间价值的尊重。后来,当我向每个人表示感谢,并且赞赏这套程序(指邮件列表中的讨论 –译者注)运作得非常出色的时候,一个Linux内核邮件列(lkml)成员表示,问题得到解决并非由于我是这个列表中的“名人”,而是因为我用了正确的方式来提问。我们黑客从某种角度来说是拥有丰富知识但缺乏人情味的家伙;我相信他是对的,如果我象个乞讨者那样提问,不论我是谁,一定会惹恼某些人或者被他们忽视。他建议我记下这件事,给编写这个指南的人一些指导。

找不到答案怎么办

如果仍得不到答案,请不要以为我们觉得无法帮助你。有时只是看到你问题的人不知道答案罢了。没有回应不代表你被忽视,虽然不可否认这种差别很难区分。

总的说来,简单的重复张贴问题是个很糟的想法。这将被视为无意义的喧闹。

你可以通过其它渠道获得帮助,这些渠道通常更适合初学者的需要。有许多网上的以及本地的用户组,由狂热的软件爱好者(即使他们可能从没亲自写过任何软件)组成。通常人们组建这样的团体来互相帮助并帮助新手。

另外,你可以向很多商业公司寻求帮助,不论公司大还是小(Red Hat和LinuxCare就是两个最常见的例子)。别为要付费才能获得帮助而感到沮丧!毕竟,假使你的汽车发动机汽缸密封圈爆掉了–完全可能如此– 你还得把它送到修车铺,并且为维修付费。就算软件没花费你一分钱,你也不能强求技术支持总是免费的。

对大众化的软件,就象 Linux之类而言,每个开发者至少会有上万名用户。根本不可能由一个人来处理来自上万名用户的求助电话。要知道,即使你要为帮助付费,同你必须购买同类软件相比,你所付出的也是微不足道的(通常封闭源代码软件的技术支持费用比开放源代码软件要高得多,且内容也不那么丰富)。

我个人的原则,一行以内的问题不再回答了,比如‘有人懂JSP吗?如题’之类的问题我就只看了。

I. 如何用小时光设置美国“阿波罗14”号宇航员登月纪念提醒

小时光是一款纪念日提醒应用,可以帮助你轻松记录同学朋友的生日,考研日,婚礼爱情纪念日,考试时间,日常规划以及传统节假日,放假日等,让你不用手动计算剩余天数,轻松被提醒!还有更多小工具可以随时使用:整点报时,喝水提醒,每日习惯养成等。支持桌面小组件和自定义壁纸。

==特色功能==
● 创建提醒快捷流畅,可选择公历/农历,创建事件备忘录
● 超强提醒设置,可自定义提醒重复周期和提醒次数
● 专属定制化,自定义壁纸、多种提示铃声选择
● 支持桌面小组件,更直观查看正计时/倒计时事件详情
● 发现页面,探索更多神奇有趣的兴趣日历
● 喝水提醒,整点报时,每日习惯打卡,人生计时多种小工具
● 一键导入本地日历,批量分享纪念日,还可同步数据至云端

阿波罗14号
阿波罗14号(Apollo 14)是美国国家航空航天局实行的阿波罗计划中的第八次载人任务,是人类第三次成功登月的载人登月任务,于1971年1月31日发射。
基本信息
中文名
阿波罗14号
外文名
Apollo 14
所属国家
美国
目录
卫星信息
• 任务名称 阿波罗14号
• 指令/服务舱呼号 小鹰号
• 发射时间 1971年1月31日世界时21:03:02
• 发射地点 佛罗里达州肯尼迪航天中心LC 39A
• 登月时间 1971年2月5日世界时09:18:11
• 登月地点 南纬3度38分43秒,西经17度28分16秒 Fra Mauro
• 降落时间 1971年2月9日世界时21:05:00
• 降落地点 南纬27度1分,西经172度39分
• 地球轨道远地点 189.8千米
• 地球轨道近地点 185千米
• 地球轨道周期 88.16分钟
• 地球轨道倾角 32.54°
• 月球轨道时间 66小时35分钟39.99秒
• 月球轨道远月点 257.1千米
• 月球轨道近月点 115.9千米
• 月表停留时间 33小时30分钟29秒
• 月表行走时间 9小时22分钟31秒
• 指令舱质量 29,240千克
• 登月舱质量 15,264千克
• 月球标本质量 42.28千克

热点内容
安卓高级开发考什么 发布:2025-03-16 11:20:35 浏览:716
揽胜哪个配置带二代地形 发布:2025-03-16 11:16:52 浏览:969
c语言数组存储文件 发布:2025-03-16 11:16:48 浏览:788
sqlserver2016r 发布:2025-03-16 11:15:58 浏览:26
网页登录找不到该服务器什么意思 发布:2025-03-16 11:14:19 浏览:831
网站搭建服务器搭建 发布:2025-03-16 10:33:27 浏览:795
游戏目录在哪里安卓 发布:2025-03-16 10:33:19 浏览:467
婉儿脚本 发布:2025-03-16 10:19:33 浏览:580
c语言ftp下载文件 发布:2025-03-16 10:05:02 浏览:307
手机帐户密码怎么找回密码 发布:2025-03-16 10:02:10 浏览:706