會(huì)飛的豬的小小豬圈

          要做一只有思想、有能力、與眾不同的豬

          2010年10月31日

          [轉(zhuǎn)]開(kāi)發(fā)人員需要知道 How,What,Why

          你是否工作在這樣的一個(gè)大公司里——他們工作效率緩慢,會(huì)議無(wú)窮無(wú)盡?你是否有被告訴去完成一個(gè)任務(wù),去開(kāi)發(fā)一個(gè)API,但你的不知道它會(huì)用在哪里,怎么用?你只是按照文檔在技術(shù)上把它正確的實(shí)現(xiàn)?

          “如何做”是一個(gè)開(kāi)發(fā)人員在團(tuán)隊(duì)生活中需要知道的最有價(jià)值的信息。但遺憾的是,有些人卻認(rèn)為這是開(kāi)發(fā)人員在項(xiàng)目中唯一要知道的事情。

          我們不能這么認(rèn)為。

          如果不知道自己做的究竟是個(gè)什么東西,即使是最高效的Ruby on Rails家伙,最熟練的Spring開(kāi)發(fā)人員,或PHP編程者,也不可能做出最有價(jià)值的東西。

          你們中有多少人,曾經(jīng)寫(xiě)出了API,但卻不能說(shuō)出它們將被在哪里、如何使用?有多少人曾生氣的追問(wèn)“你們要怎么用它們?我按照規(guī)格書(shū)里的要求把17個(gè)Web Service都開(kāi)發(fā)完了,但現(xiàn)在你們只用了其中的4個(gè)。該死。”

          我認(rèn)為,一個(gè)開(kāi)發(fā)人員如果想把工作出色的完成,除了要知道“怎么去做”外,還必須知道自己究竟做的是什么。

          然而,知道做的是什么和如何做,這還不夠。

          我深信一個(gè)開(kāi)發(fā)人員還需要知道和理解“為什么這樣做“。只有當(dāng)你知道這些后,你才能開(kāi)發(fā)出最有價(jià)值的產(chǎn)品。

          為什么會(huì)有這個(gè)項(xiàng)目?為什么需要這樣的產(chǎn)品?該死,為什么會(huì)有這樣的公司?每個(gè)人都需要問(wèn)這樣的問(wèn)題。當(dāng)知道并理解了“為什么”后,我們才能做出最優(yōu)的解決方案。

          知道了“為什么”,我們才能真正的理解項(xiàng)目的目標(biāo),產(chǎn)品的目標(biāo)和公司的目標(biāo)。它能激勵(lì)我們,因?yàn)槲覀兛吹搅舜笏{(lán)景。

          理解了“為什么”會(huì)使決策更加準(zhǔn)確。

          我們要堅(jiān)持從是什么為什么入手。這樣我們就知道如何最好的去做了。

          這一招對(duì)我很有效。而你又是如何走上成功之路的呢?

          [英文出處]:Developers should know How, What and Why

          posted @ 2010-10-31 22:45 會(huì)飛的豬 閱讀(183) | 評(píng)論 (0)編輯 收藏

          [轉(zhuǎn)]每位開(kāi)發(fā)人員都應(yīng)銘記的10句編程諺語(yǔ)

          所謂諺語(yǔ),就是用言簡(jiǎn)意賅、通俗易懂的方式傳達(dá)人生箴言和普遍真理的話,它們能很好地幫助你處理生活和工作上的事情。也正因如此,我才整理了10句編程諺語(yǔ),每位開(kāi)發(fā)人員都應(yīng)該銘記他們,武裝自己。

          1. 無(wú)風(fēng)不起浪

          別緊張,這也許只是一場(chǎng)消防演習(xí)


          代碼設(shè)計(jì)是否糟糕,從某些地方就可以看出來(lái)。比如:

          • a. 超大類或超大函數(shù)
          • b. 大片被注釋的代碼
          • c. 邏輯重復(fù)
          • d. If/else嵌套過(guò)深


          程序員們通常稱它們作代碼異味(Code Smell),但是就我個(gè)人認(rèn)為“代碼警報(bào)”這個(gè)名字更為合適一些,因?yàn)樗懈叩木o迫感的含義。根本問(wèn)題處理不當(dāng),終將引火燒身。

          譯注:Code Smell中文譯名一般為“代碼異味”,或“代碼味道”,它是提示代碼中某個(gè)地方存在錯(cuò)誤的一個(gè)暗示,開(kāi)發(fā)人員可以通過(guò)這種smell(異味)在代碼中追捕到問(wèn)題。

          2. 預(yù)防為主,治療為輔

          好吧,我相信了!


          20世紀(jì)80年代,豐田公司的流水作業(yè)線因?yàn)樗谌毕蓊A(yù)防方法上的革新變得出了名的高效。每個(gè)發(fā)現(xiàn)自己的部門(mén)有問(wèn)題的成員都有權(quán)暫停生產(chǎn)。這個(gè)方法意在寧可發(fā)現(xiàn)問(wèn)題后馬上暫定生產(chǎn)、解決問(wèn)題,也不能由其繼續(xù)生產(chǎn)而導(dǎo)致更棘手且更高代價(jià)的修復(fù)/更換/召回后的問(wèn)題。

          程序員總會(huì)做出生產(chǎn)率就等同于快速編碼的錯(cuò)誤臆斷。許多程序員都會(huì)不假思索地直接著手代碼設(shè)計(jì)。可惜,這種Leeroy Jenkins式魯莽的做法多會(huì)導(dǎo)致軟件的開(kāi)發(fā)過(guò)程變得很邋遢,拙劣的代碼需要不斷的監(jiān)測(cè)和修改——也可能會(huì)被徹底地替換。最終,生產(chǎn)率所涉及到的因素就 不僅僅是寫(xiě)代碼所消耗的時(shí)間了,還要有調(diào)試的時(shí)間。稍不留神就會(huì)“撿了芝麻丟了西瓜”。(因小失大。)

          譯注:Leeroy Jenkins 行為:WOW游戲中一位玩家不顧大家獨(dú)身一人迎敵,導(dǎo)致滅團(tuán)。

          3. 不要孤注一擲 (過(guò)度依賴某人)

          一個(gè)軟件開(kāi)發(fā)團(tuán)隊(duì)的公共要素(bus factor)是指那些會(huì)影響整個(gè)項(xiàng)目進(jìn)程的核心開(kāi)發(fā)人員的總數(shù)。比如某人被車(chē)撞了或某人生孩子或某人跳槽了,項(xiàng)目可能就會(huì)無(wú)序,甚至?xí)R置。

          譯注: bus factor 即指公共要素,比喻了開(kāi)發(fā)過(guò)程中的一些共同因素。如果擠上 bus 的 factor 越多,bus 就越不穩(wěn)定,所以要控制好 bus factor ,以免問(wèn)題發(fā)生。

          換句話說(shuō),如果你的團(tuán)隊(duì)突然失去了一個(gè)主力成員,你會(huì)怎么辦?生意依舊進(jìn)行還是戛然而止?

          很不幸,大多數(shù)軟件團(tuán)隊(duì)都陷入了后一種情況。這些團(tuán)隊(duì)把他們的開(kāi)發(fā)員培養(yǎng)成了只會(huì)處理他們自己專業(yè)領(lǐng)域的“領(lǐng)域?qū)<?#8221;。起初,這看起來(lái)是一個(gè)比較合理 的方法。它 對(duì)汽車(chē)制造裝配生產(chǎn)線很適用,但是為什么對(duì)軟件開(kāi)發(fā)團(tuán)隊(duì)就不行呢?畢竟,想讓每個(gè)成員都掌握所編程序的細(xì)微差別也不太可能,對(duì)吧?

          問(wèn)題是開(kāi)發(fā)人員不容易輕易替換掉。雖然當(dāng)每位成員都可用時(shí),“抽屜方法”很有效,但如果當(dāng)“領(lǐng)域?qū)<?#8221;突然因人事變動(dòng)、疾病或突發(fā)事故而無(wú)法工作時(shí), 抽屜 方法立馬土崩瓦解。(所以,)軟件團(tuán)隊(duì)有一些看似多余實(shí)則重要的后備力量是至關(guān)重要。代碼復(fù)查、結(jié)對(duì)編程和共有代碼可用成功營(yíng)造一個(gè)環(huán)境,在這個(gè)環(huán)境中, 每位開(kāi)發(fā)人員至少表面上是熟悉自己非擅長(zhǎng)領(lǐng)域之外的系統(tǒng)部分。


          4. 種瓜得瓜,種豆得豆

          《注重實(shí)效的程序員》一書(shū)中有這樣一段話解釋“破窗理論”:不要留著“破窗戶”(低劣的設(shè)計(jì)、錯(cuò)誤的決策或者糟糕的代碼)不修。發(fā)現(xiàn)一個(gè)就修一個(gè)。如 果沒(méi)有足夠的時(shí)間進(jìn)行適當(dāng)?shù)男蘩恚拖劝阉A羝饋?lái)。或許你可 以把出問(wèn)題的代碼放到注釋中,或是顯示“未實(shí)現(xiàn)”消息,或用虛擬數(shù)據(jù)加以替代。采取一些措施,防止進(jìn)一步的惡化。這表明局勢(shì)尚在掌控之中。

          我們見(jiàn)過(guò)整潔良好的系統(tǒng)在出現(xiàn)“破窗”之后立馬崩潰。雖然促使軟件崩潰的原因還有其他因素(我們將在其他地方接觸到),但(對(duì)“破窗”)置之不理,肯定會(huì)更快地加速系統(tǒng)崩潰。

          簡(jiǎn)而言之,好的代碼會(huì)促生好的代碼,糟糕的代碼也會(huì)促生糟糕的代碼。別低估了慣性的力量。沒(méi)人想去整理糟糕的代碼,同樣沒(méi)人想把完美的代碼弄得一團(tuán)糟。寫(xiě)好你的代碼,它才更可能經(jīng)得住時(shí)間的考驗(yàn)。

          譯注:《注重實(shí)效的程序員》,作者Andrew Hunt / David Thomas。該書(shū)直擊編程陳地,穿過(guò)了軟件開(kāi)發(fā)中日益增長(zhǎng)的規(guī)范和技術(shù)藩籬,對(duì)核心過(guò)程進(jìn)行了審視――即根據(jù)需求,創(chuàng)建用戶樂(lè)于接受的、可工作和易維護(hù) 的 代碼。本書(shū)包含的內(nèi)容從個(gè)人責(zé)任到職業(yè)發(fā)展,直至保持代碼靈活和易于改編重用的架構(gòu)技術(shù)。從本書(shū)中將學(xué)到防止軟件變質(zhì)、消除復(fù)制知識(shí)的陷阱、編寫(xiě)靈活、動(dòng) 態(tài)和易適應(yīng)的代碼、避免出現(xiàn)相同的設(shè)計(jì)、用契約、斷言和異常對(duì)代碼進(jìn)行防護(hù)等內(nèi)容。

          譯注:破窗理論(Broken Window theory):是關(guān)于環(huán)境對(duì)人們心理造成暗示性或誘導(dǎo)性影響的一種認(rèn)識(shí)。“破窗效應(yīng)”理論是指:如果有人打壞了一幢建筑物的窗戶玻璃,而這扇窗戶又得不 到及時(shí)的維修,別人就可能受到某些暗示性的縱容去打爛更多的窗戶。發(fā)現(xiàn)問(wèn)題就要及時(shí)矯正和補(bǔ)救。

          5. 欲速則不達(dá)

          經(jīng)理、客戶和程序員正日益變得急躁。一切都需要做的事,都需要馬上就做好。正因如此,快速修復(fù)問(wèn)題變得非常急迫。

          沒(méi)時(shí)間對(duì)一個(gè)新功能進(jìn)行適當(dāng)?shù)膯卧獪y(cè)試?好吧,你可以先完成一次測(cè)試運(yùn)行,然后你就可以隨時(shí)回來(lái)繼續(xù)測(cè)試它。

          當(dāng)訪問(wèn)Y屬性時(shí),會(huì)不會(huì)碰到奇怪的對(duì)象引用錯(cuò)誤?無(wú)論怎樣,把代碼放到try/catch語(yǔ)句塊中。我們要釣到大魚(yú)啦!

          是不是似曾相識(shí)呢?這是因?yàn)槲覀冊(cè)谝郧耙呀?jīng)都做到了。并且在某些情況下、它是無(wú)可非議的。畢竟,我們有最后期限,還得滿足客戶和經(jīng)理。但不要過(guò)于頻繁 操 作,否則你會(huì)發(fā)現(xiàn)你的代碼不穩(wěn)定,有很多熱修復(fù)、邏輯重復(fù)、未測(cè)試的方案和錯(cuò)誤處理。最后,你要么是把事情草草做完,要么是把事情好好做完。

          6. 三思而后行

          “敏捷開(kāi)發(fā)”這個(gè)詞最近被頻繁濫用,經(jīng)常被程序員用來(lái)掩飾他們?cè)谲浖_(kāi)發(fā)過(guò)程中的糟糕規(guī)劃/設(shè)計(jì)階段。我們是設(shè)計(jì)者,看到產(chǎn)品朝正當(dāng)方向有實(shí)質(zhì)進(jìn)展, 我們理應(yīng)高興。但意外的是,UML圖和用例分析似乎并不能滿足我們的愿望。所以,在不知自己做什么的情況下或者不知自己身處何處時(shí),我們開(kāi)發(fā)人員經(jīng)常就稀 里糊涂地寫(xiě)代碼了。

          這就好比你要去吃飯,但你根本沒(méi)有想好去哪里吃。因?yàn)槟闾I了,所以你迫不及待地找個(gè)餐館,定個(gè)桌位。然后你上車(chē)開(kāi)車(chē)后沿途在想(找地方吃飯)。只 是,這樣會(huì)耗費(fèi)更多的時(shí)間,因?yàn)槟阋^(guò)較多的U型彎道,還在餐館前停車(chē),也許最后因等待時(shí)間過(guò)長(zhǎng)而不吃了。確切地說(shuō),你最后應(yīng)該能找到地方吃飯,但你可能 吃的飯并不是你想吃的,并且這樣花費(fèi)的時(shí)間,可能比你直接在想去的餐館訂餐所花的時(shí)間更長(zhǎng)。


          7. 如果你惟一的工具是一把錘子,你往往會(huì)把一切問(wèn)題看成釘子

          看見(jiàn)了吧?我早就說(shuō)過(guò)動(dòng)態(tài)記錄在這個(gè)項(xiàng)目中很有效


          程序員有一種傾向,當(dāng)一談到他們工具時(shí),其視野就變狹窄了。一旦某種方法在我們的一個(gè)項(xiàng)目上“行得通”,我們就會(huì)在接下來(lái)所有的項(xiàng)目上都用到它。學(xué)習(xí) 新東 西仿佛是一種煎熬,有時(shí)候甚至?xí)纳癫欢ā氖贾两K都在想“如果我用之前的方法做、這個(gè)就不會(huì)這么麻煩了”。一定要摒棄這種想法,按我們所知道的去做,即 使那不是最完美的解決方法。

          堅(jiān)持自己所知很簡(jiǎn)單,不過(guò)從長(zhǎng)遠(yuǎn)的角度講,選擇一個(gè)適合這項(xiàng)工作的工具要容易得多。否則,就會(huì)與你的職業(yè)生涯格格不入。

          8. 沉默即贊同

          我什么都沒(méi)看見(jiàn)!沒(méi)看見(jiàn)!


          "破窗理論"與"變成慣性理論"有著宏觀的聯(lián)系。

          編程社區(qū)就好像一個(gè)現(xiàn)實(shí)社區(qū)。每個(gè)作品都是一個(gè)開(kāi)發(fā)者的縮影。糟糕的代碼發(fā)布的越多,就越容易反映現(xiàn)狀。如果你不去努力編寫(xiě)優(yōu)秀、整潔和穩(wěn)定的代碼,那你每天都將和糟糕的代碼相伴了。

          同樣地,如果你看到別人寫(xiě)出了糟糕的代碼,你就要跟這個(gè)人提出來(lái)。注意,這時(shí)候機(jī)智就應(yīng)該用上場(chǎng)了。一般情況下,程序員都愿意承認(rèn)他們?cè)谲浖_(kāi)發(fā)中還是有不懂的地方,并且會(huì)感謝你的好意。互相幫助對(duì)大家都有利,而對(duì)問(wèn)題視而不見(jiàn),只會(huì)使問(wèn)題一直存在。


          9. 雙鳥(niǎo)在林,不如一鳥(niǎo)在手

          如果可以討論系統(tǒng)架構(gòu)和重構(gòu),那么就差找個(gè)時(shí)間把事情做完。為了使正常運(yùn)作的東西更加簡(jiǎn)潔而做改動(dòng),權(quán)衡改動(dòng)的利弊很重要。當(dāng)然了,簡(jiǎn)潔是一個(gè)理想目 標(biāo), 但總會(huì)有可以通過(guò)重構(gòu)改進(jìn)的代碼。在編程世界中,為了代碼不過(guò)時(shí),會(huì)頻繁簡(jiǎn)單改動(dòng)代碼。但有時(shí)候你又必須保證代碼對(duì)客戶有價(jià)值。那么,你面臨一個(gè)簡(jiǎn)單窘 境:你不能一石二鳥(niǎo)。你在重構(gòu)舊代碼上所發(fā)時(shí)間越多,你編寫(xiě)新代碼的時(shí)間就越少。在及時(shí)改進(jìn)代碼和維護(hù)程序之間,也需要找到平衡點(diǎn)。

          10. 能力越大,責(zé)任越大
            

          毫無(wú)疑問(wèn),軟件已成為我們生活中一個(gè)既基本又重要的一部分。正因如此,開(kāi)發(fā)優(yōu)秀軟件格外重要。乒乓球游戲中的Bug是一回事,航天飛機(jī)導(dǎo)向系統(tǒng)或者航 空交通管制系統(tǒng)中的Bug是另外一回事。Slashdot曾發(fā)表一文,講述了單單Google News的一個(gè)小失誤使一家公司股票蒸發(fā)11.4億美元。其他例子參見(jiàn)《軟件Bug引發(fā)的十次嚴(yán)重后果》。這些例子便說(shuō)明了我們正行使著多大的權(quán)利。你今天寫(xiě)的代碼,無(wú)論你是否有意,說(shuō)不定有朝一日在重要的應(yīng)用程序中派上用場(chǎng),這想想都令人害怕。編寫(xiě)正確合格的代碼吧!

          譯注:Slashdot是一個(gè)資訊科技網(wǎng)站。

          本文出處:伯樂(lè)在線 - 職場(chǎng)博客
          本文鏈接:http://www.jobbole.com/entry.php/297

          posted @ 2010-10-31 22:44 會(huì)飛的豬 閱讀(140) | 評(píng)論 (0)編輯 收藏

          2010年5月12日

          M$SqlServer2005安裝COM Plus Catalog Requirement問(wèn)題

          問(wèn)題:裝SQL 2005 檢測(cè)信息時(shí),老是顯示“COM Plus Catalog Requirement(warning)”,我用的是XP系統(tǒng),裝的是開(kāi)發(fā)版~~

          原因:你的COM+應(yīng)用程序出錯(cuò),裝的IIS有問(wèn)題所致~~

          解決方法:

          開(kāi)始”->“設(shè)置”->“控制面板”->“管理工具”->“組件服務(wù)”中,“控制臺(tái)根目錄”->“組件服務(wù)”->“計(jì)算機(jī)”->“我的電腦”->“COM+應(yīng)用程序”中,

          (1)

          到com+應(yīng)用程序這一步時(shí),彈出:"執(zhí)行最后操作時(shí)發(fā)生錯(cuò)誤,錯(cuò)誤代碼80080005-服務(wù)器運(yùn)行失敗"的錯(cuò)誤.咋辦啊.

          一、 開(kāi)始運(yùn)行msdtc -resetlog ,問(wèn)題解決,能打開(kāi)了。

          二、再看看 Distributed Transaction Coordinator 服務(wù)沒(méi)有打開(kāi)

          三、重裝IIS

          (2)

          回到“ “COM+應(yīng)用程序” 中, 有一個(gè)“IIS Out-Of-Process Pooled”鼠標(biāo)右鍵“屬性”--“標(biāo)識(shí)”--把“此用戶”調(diào)整為“交互式用戶--目前已登錄的用戶”。然后“確定”,再鼠標(biāo)右鍵“屬性”--“啟動(dòng)”。

          (3)

          設(shè)下IIS的 目錄安全性選項(xiàng)卡 ”---- 匿名訪問(wèn)與控制 , 在“集成Windows身份驗(yàn)證”打勾

          posted @ 2010-05-12 10:58 會(huì)飛的豬 閱讀(1002) | 評(píng)論 (0)編輯 收藏

          2010年5月4日

          由M$ SQL Server2005 C2審核引發(fā)的磁盤(pán)空間占用問(wèn)題

              今天連接到服務(wù)器上查找東西,無(wú)意中發(fā)現(xiàn)服務(wù)器中保存SQLServer2005數(shù)據(jù)文件的文件夾下多了N多trc文件。簡(jiǎn)單的看了一下,總共210個(gè)文件,一個(gè)文件約占200MB,總共占用了29GB的空間。這下知道為什么前一陣子聽(tīng)測(cè)試的人員報(bào)告說(shuō)服務(wù)器磁盤(pán)空間滿了,原來(lái)都被這些給占用了。
              于是登陸到DBMS上,查看了一下數(shù)據(jù)庫(kù)服務(wù)器的屬性,結(jié)果發(fā)現(xiàn)不知道是誰(shuí)把Security標(biāo)簽下的Enable C2 audit tracing前的復(fù)選框勾中了,這下終于找到罪魁禍?zhǔn)琢恕S谑呛鯇⒃撨x項(xiàng)前的勾選取消掉之后,刪除文件夾下的全部trc文件,硬盤(pán)由此又增加了很多的空間。
              PS:一般在正常使用時(shí),數(shù)據(jù)庫(kù)的C2審核是不需要開(kāi)啟的,除非是需要進(jìn)行詳細(xì)的調(diào)優(yōu)或是程序的debug,此時(shí)開(kāi)啟C2審核之后可以用Profiler打開(kāi)生成的trc文件查看。否則的話為了節(jié)省咱的硬盤(pán)空間,還是將C2審核關(guān)掉吧。

              附:一些關(guān)于C2審核的相關(guān)鏈接資料(備查):
                http://technet.microsoft.com/zh-cn/library/ms187634(SQL.90).aspx
                http://www.cnblogs.com/NationWoo/archive/2010/03/31/1701532.html
                http://technet.microsoft.com/zh-cn/library/ms189631(SQL.90).aspx

          posted @ 2010-05-04 17:04 會(huì)飛的豬 閱讀(1505) | 評(píng)論 (0)編輯 收藏

          2009年8月18日

          Linux相關(guān)常用命令

          CentOS系統(tǒng):
              uname,獲取系統(tǒng)信息:uname -a 列出全部的信息;uname -r 列出安裝的Linux kernel版本信息。
              cat /etc/redhat-release 查看當(dāng)前安裝的CentOS具體版本信息。

          posted @ 2009-08-18 14:04 會(huì)飛的豬 閱讀(132) | 評(píng)論 (0)編輯 收藏

          2008年12月5日

          linux內(nèi)核參數(shù)設(shè)置(sysctl)

          1.在運(yùn)行時(shí)配置內(nèi)核參數(shù),可以使用sysctl命令

          2.sysctl命令用法舉例:
              參數(shù):-w 此選項(xiàng)用于改變一個(gè)sysctl設(shè)置
              例:sysctl -w net.ipv4.ip_forward=1

              參數(shù):-p 此選項(xiàng)用于載入sysctl配置文件,若-p后未指定路徑,則載入 /etc/sysctl.conf
              例: sysctl -p /etc/sysctl.conf

          3.可以通過(guò)修改/etc/sysctl.conf文件,將參數(shù)設(shè)置進(jìn)行保存,以使得在機(jī)器重啟后原有設(shè)置仍然有效。例:
              vi /etc/sysctl.conf
              修改: net.ipv4.ip_forward=0的值為1
              作用:打開(kāi)數(shù)據(jù)包的轉(zhuǎn)發(fā)功能

              若需要使修改馬上生效,則:
              sysctl -p /etc/sysctl.conf        //重新載入/etc/sysctl.conf文件
          4.附一些有用的鏈接:
              http://en.wikipedia.org/wiki/Sysctl
              http://os.cnfan.net/freebsd/2078.html
              http://tech.ddvip.com/2008-01/120091029240855.html
             

          posted @ 2008-12-05 16:00 會(huì)飛的豬 閱讀(469) | 評(píng)論 (0)編輯 收藏

          CentOS5.1網(wǎng)關(guān)路由設(shè)置

              最近一段時(shí)間為一個(gè)項(xiàng)目做項(xiàng)目實(shí)施,其中涉及到了使用CentOS5.1操作系統(tǒng)假設(shè)一臺(tái)網(wǎng)關(guān)服務(wù)器的問(wèn)題,要通過(guò)其實(shí)現(xiàn)外網(wǎng)計(jì)算機(jī)訪問(wèn)不到內(nèi)網(wǎng)的主機(jī),內(nèi)網(wǎng)中僅指定的主機(jī)才可以訪問(wèn)外網(wǎng)的功能,經(jīng)過(guò)一番測(cè)試之后終于能夠?qū)崿F(xiàn)了,現(xiàn)在將實(shí)現(xiàn)的過(guò)程記錄下來(lái),以備今后的不時(shí)之需。
              一、所需軟件:安裝了自帶的iptables防火墻的CentOS5.1操作系統(tǒng)
              二、前提準(zhǔn)備:
                  1.進(jìn)行網(wǎng)關(guān)的相關(guān)配置,為了方便起見(jiàn),使用root用戶登錄到系統(tǒng)中;
                  2.首先對(duì)網(wǎng)關(guān)服務(wù)器的兩塊網(wǎng)卡進(jìn)行網(wǎng)絡(luò)設(shè)置,其中內(nèi)網(wǎng)網(wǎng)卡設(shè)置的時(shí)候網(wǎng)關(guān)的地址空白,設(shè)置好之后檢查一下網(wǎng)關(guān)服務(wù)器是否能夠上外網(wǎng),以及與內(nèi)網(wǎng)是否已經(jīng)聯(lián)通。均聯(lián)通之后將內(nèi)網(wǎng)網(wǎng)卡和外網(wǎng)網(wǎng)卡的設(shè)備號(hào)分別記錄下來(lái)。(在本例中,內(nèi)網(wǎng)網(wǎng)卡設(shè)備號(hào)為eth1、外網(wǎng)網(wǎng)卡設(shè)備號(hào)為eth0)
                  3.要實(shí)現(xiàn)內(nèi)網(wǎng)主機(jī)可以通過(guò)網(wǎng)關(guān)服務(wù)器上外網(wǎng)的功能,需要將網(wǎng)關(guān)操作系統(tǒng)中的數(shù)據(jù)包轉(zhuǎn)發(fā)功能開(kāi)啟,可以通過(guò)sysctl -A命令查看當(dāng)前內(nèi)核參數(shù)設(shè)置,找到其中net.ipv4.ip_forward項(xiàng)查看其對(duì)應(yīng)的參數(shù)值(0表示未開(kāi)啟,1表示開(kāi)啟)
                  4.如果在上一項(xiàng)中發(fā)現(xiàn)的參數(shù)值為0,則需要將內(nèi)核的數(shù)據(jù)包轉(zhuǎn)發(fā)功能開(kāi)啟,具體實(shí)現(xiàn)方式為:
                      輸入vi /etc/sysctl.conf命令打開(kāi)配置文件,找到其中net.ipv4.ip_forward所在的行,將"="后面的數(shù)值由0更改為1,之后將文件保存后退出vi編輯器。
                  5.將配置文件修改完成后,可以使用sysctl -p /etc/sysctl.conf命令或?qū)⒉僮飨到y(tǒng)重新啟動(dòng),以使參數(shù)生效。此時(shí)準(zhǔn)備工作已經(jīng)完成,接下來(lái)對(duì)防火墻的規(guī)則進(jìn)行配置即可。
              三、ipables規(guī)則設(shè)置:
                  1.此例中使用CentOS自帶的功能強(qiáng)大的iptables防火墻來(lái)實(shí)現(xiàn)上述的要求,此時(shí)需要對(duì)iptables的規(guī)則進(jìn)行設(shè)置,運(yùn)行vi /etc/sysconfig/iptables命令,打開(kāi)規(guī)則配置文件,按照下面給出的配置文件模板進(jìn)行設(shè)置:
                     
           1             # Firewall configuration written by system-config-securitylevel
           2             # Manual customization of this file is not recommended.
           3             *filter
           4             :FORWARD ACCEPT [0:0]
           5             :INPUT ACCEPT [0:0]
           6             :RH-Firewall-1-INPUT - [0:0]
           7             :OUTPUT ACCEPT [0:0]
           8             -A INPUT -i eth1 -j ACCEPT            //此處的eth1按實(shí)際更改為內(nèi)網(wǎng)設(shè)備號(hào)
           9             -A INPUT -j RH-Firewall-1-INPUT
          10             -A FORWARD -j RH-Firewall-1-INPUT
          11             -A RH-Firewall-1-INPUT -i lo -j ACCEPT
          12             -A RH-Firewall-1-INPUT -i eth1 -j ACCEPT    //此處的eth1按實(shí)際更改為內(nèi)網(wǎng)設(shè)備號(hào)
          13             -A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
          14             -A RH-Firewall-1-INPUT -p 50 -j ACCEPT
          15             -A RH-Firewall-1-INPUT -p 51 -j ACCEPT
          16             -A RH-Firewall-1-INPUT -p udp -d 224.0.0.251 --dport 5353 -j ACCEPT
          17             -A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
          18             -A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
          19             -A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
          20             -A RH-Firewall-1-INPUT -p tcp -m state -m tcp --dport 22 --state NEW -j ACCEPT
          21             -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
          22             COMMIT
          23             *nat
          24             :PREROUTING ACCEPT [0:0]
          25             :POSTROUTING ACCEPT [0:0]
          26             :OUTPUT ACCEPT [0:0]
          27             -A POSTROUTING -s 192.168.1.1 -o eth0 -j MASQUERADE    //此處為轉(zhuǎn)發(fā)規(guī)則設(shè)置,增加訪問(wèn)外網(wǎng)復(fù)制此行即可
          28             //上述中ip地址要按實(shí)際設(shè)置為允許訪問(wèn)外網(wǎng)機(jī)器的ip地址,eth0也要按實(shí)際更改為外網(wǎng)設(shè)備號(hào)
          29             COMMIT
          30             # Completed
                  2.編輯好規(guī)則配置文件后,保存并退出vi編輯器。
                  3.只有運(yùn)行service iptables status查看系統(tǒng)當(dāng)前iptables服務(wù)的狀態(tài)。如果為stop,則使用service iptables start命令將其開(kāi)啟即可;如果為Start,則使用service iptables restart命令將其重新啟動(dòng)以使新的規(guī)則設(shè)置生效。
                  4.此時(shí)即可實(shí)現(xiàn)網(wǎng)關(guān)服務(wù)器的設(shè)置,可以到那臺(tái)允許訪問(wèn)外網(wǎng)的主機(jī)上訪問(wèn)一下外網(wǎng)以檢測(cè)設(shè)置是否正確。

          posted @ 2008-12-05 15:44 會(huì)飛的豬 閱讀(2915) | 評(píng)論 (0)編輯 收藏

          2008年11月6日

          Ubuntu系統(tǒng)小知識(shí)——有趣的版本代號(hào)

              最近一段時(shí)間在玩Ubuntu的Linux操作系統(tǒng),更新的時(shí)候倒是很方便但是一切的東西都需要apt-get才行,安裝光盤(pán)只有最基本的內(nèi)容,沒(méi)有網(wǎng)絡(luò)的話感覺(jué)非常不爽。算了閑話少說(shuō),本文的目的是記錄一下Ubuntu各個(gè)版本的信息,因?yàn)槲野l(fā)現(xiàn)Ubuntu的各個(gè)版本的代號(hào)都挺有意思的,于是就Goole了一下找到了現(xiàn)有的各個(gè)版本的信息留在這里。
          發(fā)布版本 開(kāi)發(fā)代號(hào)  發(fā)布時(shí)間 中文 
          4.10 Warty Warthog  2004年10月20日 多疣的疣豬 
          5.04 Hoary Hedgehog  2005年4月8日 白發(fā)的刺猬 
          5.10 Breezy Badger  2005年10月13日 活潑的獾 
          6.06 Dapper Drake  2006年6月1日 伶俐的公雞 
          6.10 Edgy Eft  2006年10月6日 尖利的小蜥蜴 
          7.04 Feisty Fawn  2007年4月19日 煩躁不安的小鹿 
          7.10 Gutsy Gibbon  2007年10月18日 膽大的長(zhǎng)臂猿 
          8.04 Hardy Heron  2008年4月21日 堅(jiān)強(qiáng)的蒼鷺 
          8.10 Intrepid Ibex  2008年10月27日 勇敢的野山羊 
          9.04 Jaunty Jackalope 2009年4月23號(hào) ??

          posted @ 2008-11-06 16:49 會(huì)飛的豬 閱讀(219) | 評(píng)論 (0)編輯 收藏

          2008年10月17日

          CentOS5掛載NTFS格式的Windows分區(qū)

              由于Linux的內(nèi)核目前還不直接支持NTFS格式的分區(qū),因此需要給內(nèi)核打上支持NTFS的補(bǔ)丁,因此首先要執(zhí)行以下幾步:
              1.使用uname -r(uname -a)命令查看當(dāng)前Linux系統(tǒng)內(nèi)核的版本號(hào)。
              2.到http://www.linux-ntfs.org/網(wǎng)站中查找與當(dāng)前系統(tǒng)內(nèi)核版本號(hào)一致的rpm格式的NTFS補(bǔ)丁,并下載到硬盤(pán)。
              3.使用rpm -ivh kernel-module-ntfs-x.x.x.x-x.x.x-x.x.x.x.i686.rpm命令將,對(duì)應(yīng)的NTFS補(bǔ)丁安裝好。

               之后就可以使用mount命令來(lái)掛載Windows下面的NTFS分區(qū)了:
               1.先使用fdisk -l命令來(lái)查看系統(tǒng)中硬盤(pán)的信息,形式如下:
                  Device Boot      Start         End      Blocks   Id  System
                  /dev/sda1   *           1        2551    20490876    7  HPFS/NTFS
                  /dev/sda2            2552       19457   135797445    f  W95 Ext'd (LBA)
                  /dev/sda5            2552        7650    40957686    7  HPFS/NTFS
                  /dev/sda6            7651        9014    10956298+   7  HPFS/NTFS
                  /dev/sda7            9015       10926    15358108+  83  Linux
                  /dev/sda8           10927       15528    36965533+  83  Linux
                  /dev/sda9           15529       15659     1052226   82  Linux swap / Solaris
                  /dev/sda10          15660       19457    30507403+  83  Linux
               2.使用mkdir /mnt/x命令在mnt文件夾中創(chuàng)建新的文件夾,用來(lái)對(duì)應(yīng)Windows下的分區(qū)。
               3.再使用mount -t ntfs /dev/xxx  /mnt/x 命令將Windows下的各分區(qū)掛載在新建的文件夾里,例如:
                  mount -t ntfs /dev/sda1  /mnt/WinC
           
              如果需要設(shè)置在系統(tǒng)啟動(dòng)時(shí),就將分區(qū)自動(dòng)進(jìn)行掛在的話,則需要做以下步驟:
              1.使用vi /etc/fstab 命令,打開(kāi)fstab文件進(jìn)行編輯。
              2.在文件中以后的數(shù)據(jù)之后添加一行新的數(shù)據(jù),形如:
                  /dev/sda1               /mnt/WinC           ntfs    defaults        0 0
               3.保存之后,以后再次啟動(dòng)Linux時(shí)系統(tǒng)會(huì)自動(dòng)將Windows下的C盤(pán)掛載到/mnt/WinC目錄下。

          posted @ 2008-10-17 18:05 會(huì)飛的豬 閱讀(665) | 評(píng)論 (0)編輯 收藏

          2008年6月5日

          博客更新

              又是許久沒(méi)有更新博客了,主要原因一個(gè)是工作忙,另一個(gè)是覺(jué)得沒(méi)有什么可寫(xiě)的。最近發(fā)現(xiàn)一個(gè)問(wèn)題——很?chē)?yán)重的問(wèn)題,現(xiàn)在的我做事情很沒(méi)有長(zhǎng)性經(jīng)常是半途而廢,沒(méi)有一件事情堅(jiān)持下去的。這樣來(lái)看博客的問(wèn)題其實(shí)根本原因還是自己的毛病又犯了——淺嘗輒止。其實(shí)仔細(xì)想想還是有很多東西可以寫(xiě)一寫(xiě)的,只是自己沒(méi)有發(fā)覺(jué)且缺少發(fā)覺(jué)。工作了3年了發(fā)現(xiàn)很多的東西其實(shí)會(huì)常用到的,只是一次用過(guò)之后沒(méi)有記錄下來(lái),下次再用的時(shí)候又要費(fèi)時(shí)間去找,像這些東西其實(shí)多可以記錄下來(lái)的,以后看著也方便。
              一定要把這件事情堅(jiān)持下去,經(jīng)常進(jìn)行更新。

          posted @ 2008-06-05 13:38 會(huì)飛的豬 閱讀(133) | 評(píng)論 (0)編輯 收藏

          僅列出標(biāo)題  
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導(dǎo)航

          統(tǒng)計(jì)

          公告

          準(zhǔn)備換工作中。

          留言簿

          文章分類

          文章檔案

          搜索

          最新評(píng)論

          主站蜘蛛池模板: 尼玛县| 类乌齐县| 东山县| 扶绥县| 鄂托克前旗| 沽源县| 沾化县| 东明县| 夏河县| 织金县| 东乌珠穆沁旗| 漠河县| 尖扎县| 达日县| 二连浩特市| 隆尧县| 平谷区| 贡觉县| 沅陵县| 土默特右旗| 常山县| 茶陵县| 湟源县| 镇康县| 北海市| 常州市| 桂平市| 南城县| 娱乐| 株洲市| 邹平县| 马边| 尼勒克县| 仙游县| 娱乐| 开平市| 磴口县| 宣城市| 集安市| 秀山| 黑水县|