當前位置:首頁 » 編程軟體 » 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 05:51:35 瀏覽:686
管理員c語言 發布:2025-03-16 05:40:17 瀏覽:340
安卓軟體上的圖案如何更改 發布:2025-03-16 05:35:57 瀏覽:746
2010編譯c中文亂碼 發布:2025-03-16 05:33:40 瀏覽:548
干一杯密碼箱酒多少錢一箱 發布:2025-03-16 05:31:15 瀏覽:356
我的零錢通密碼是多少 發布:2025-03-16 05:04:36 瀏覽:937
編程貓酷跑 發布:2025-03-16 04:58:35 瀏覽:321
控制演算法規律 發布:2025-03-16 04:54:17 瀏覽:965
tcl門鎖原始設置密碼是多少 發布:2025-03-16 04:52:37 瀏覽:992
如何給wifi加密碼 發布:2025-03-16 04:52:05 瀏覽:367