博客

  • 關於WebService開發的個人經驗

    去年幫客戶和某超商作欠費的即時查詢及代收的整合,剛開始試寫了幾種方法,但是超商都說我回的Message他們驗證不過吃不進去,最後是超商提供的一個C#範例程式,我拿來改成VB.Net,所以當時有一些Attribute的語法被不明就裡的拿來套用,剛好最近兩天有空就拿來研究,終於都搞通了,以下就是這兩天的研究成果

    以VS2005開發Web Service來傳遞自訂物件時,如下例
    Public Class Service1
    Inherits System.Web.Services.WebService
    <WebMethod()> _
    Public Function Operation(ByVal obj As MyObj) As MyObj
    …..
    End Function
    End Class

    Public Class MyObj
    …..
    End Class
    預設Request和Response的SOAP Message會長的像這樣:
    =======Request=======
    <?xml version=”1.0″ encoding=”utf-8″?>
    <soap:Envelope …>
    <soap:Body>
    <obj>
    ….
    </obj>
    </soap:Body>
    </soap:Envelope>

    =======Response=======
    <?xml version=”1.0″ encoding=”utf-8″?>
    <soap:Envelope …>
    <soap:Body>
    <OperationResult>
    ….
    </OperationResult>
    </soap:Body>
    </soap:Envelope>

    但超商希望的是無論在Request和Response的訊息都是在SOAP BODY內包一個<OLTP>…</OLTP>就好,長的像這樣:
    <?xml version=”1.0″ encoding=”utf-8″?>
    <soap:Envelope …>
    <soap:Body>
    <OLTP>
    ….
    </OLTP>
    </soap:Body>
    </soap:Envelope>

    要怎麼作呢?
    要修改Request時的Message容易!
    Public Class Service1
    Inherits System.Web.Services.WebService
    <WebMethod()> _
    Public Function Operation(ByVal objOLTP As MyObj) As MyObj
    …..
    End Function
    End Class

    要改Response時的Message就要在我們的自訂物件上多加一些Attribute的東西
    Imports System.Xml.Serialization
    <XmlRootAttribute(ElementName:=”OLTP”)> _
    Public Class MyObj
    …..
    End Class

    不過這樣(加上Attribute)改過之後,如果您是在VS2005直接用加入Web參考的方式,去呼叫這個Web Service會發現收不到傳回值,而且您的測試專案可能就會有一個運算式沒有產生值的錯誤訊息,去看Reference.vb(在專案的.\Web References\Web參考資料夾名稱下)會發現您呼叫的是一個Sub而不是Function,當然您可以直接修改這隻程式,不過我強烈建議絶對不要這樣作,因為那一天您不小心去更新Web參考時就毀了,VS2005會重新產生這個檔案,您所作的修改就不見了。所以我建議如果會有要自己修改Reference.vb這個檔案的人,請照這樣作!

    1. 先移去剛剛加的<XmlRootAttribute(ElementName:=”OLTP”)> _,存檔並重新建置(重建一定要作,不然後面就白作了)
    2. 先開啟VS2005命令提示字元
    3. 輸入 WSDL /l:VB http://伺服器IP/WebService名稱.asmx
    4. 在現行資料夾下會產生一個 WebService名稱.vb 的檔案
    5. 將這個.vb的檔案複製到測試專案資料夾下並加入到測試專案中
    6. 修改測試專案程式碼,將原本程式碼中的 Web參考資料夾名稱.ServiceName 改成 ServiceName,Web參考資料夾名稱.MyObj 改成 MyObj
    7. 作到這裡,看起來已經沒有錯誤訊息了,但是實際執行時,您會發現雖然是Function但傳回值卻永遠是Nothing,那是因為VS2005只會去讀SOAP BODY內的<XXXXResult>…</XXXXResult>內容當作傳回值(XXXX就是您WebMethod的Function名稱)
    8. 打開 WebService名稱.vb ,修改Function宣告式的傳回值部份,在XmlElementAttribute中加入ElementName:=”OLTP” 讓VS2005會去讀SOAP BODY中的<OLTP>…</OLTP>內容當作傳回值即可

    Public Function Operation( <System.Xml.Serialization.XmlElementAttribute( _
    [Namespace]:=”http://tempuri.org/”)> ByVal OLTP As MyObj) _
    As <System.Xml.Serialization.XmlElementAttribute([Namespace]:=”http://tempuri.org/”, ElementName:=”OLTP”)> MyObj
    Dim results() As Object = Me.Invoke(“Operation”, New Object() {OLTP})
    Return CType(results(0),MyObj)
    End Function

    引用:http://paul0407.blogspot.com/search/label/ASP.NET

  • Oracle OCP證書申請發證流程

    今天收到一封e-mail,是去年一起上Oracle教育訓練課程的同學寄來的,原來他也考過OCP了,但不知道要怎樣才能拿到證書,去年我剛考過時也是搞不清楚,問了已經考過OCP的同事,他也只記得要上要去prometric網站上登錄,所以我就只好去拜Google大神,那時想說只會用這一次所以也沒有保留資料,所以剛剛又再幫同學找了一遍,還真不好找,既然會有人問,就把他記在我的bolg囉!

    以下資料引用自:http://www.hxre.org/post/50.html

    引用網址為: http://www.hxre.org/cmd.asp?act=tb&id=50&key=83854

    ============傳說中的分隔線=====================

    如果您已經完成ORACLE一門原廠培訓和順利通過了OCP043)考試後,請在7天后登錄如下網址:
    http://oracle.prometric.com,並按照如下步驟進行填寫。
    1)如果您已經註冊,請點擊Secure Sign-in;如果未註冊,請點擊First-time Registration建立新帳戶
    (無論註冊與否,請務必使用已有的Prometric ID,否則不能確保證書拿到);
    2)請填寫用戶名和密碼,並點擊“繼續continue”
    3)選擇“進行考試Take Test”
    4)在中間欄框“Private Tests”處,請9i考生輸入“9icourse”,而10g考生輸入“10gcourse”,並“提交submit”
    5)點擊“take test”或“resume test”後,再點擊“begin survey”,正式進入調查問卷一
    6)請按步驟逐一填寫各項,請勿空項、漏項。請務必填清“registration ID”
    7)完成問卷一後,請填寫您的建議或空項,點擊“下一步”
    8)出現個人信息界面後,點擊“繼續”,開始進入調查問卷二
    9)點擊“begin Test”,並回答問題,之後“結束問答End Test”
    10)確認“結束考試”。請填寫您的建議或空項,點擊“下一步”
    11)出現個人信息界面後,點擊“繼續”
    12)確認無誤後,“sign-out”退出
    Oracle將以此調查問卷一和二做為發放證書的依據,一旦收到問卷,將盡快受理。
    ————————————————– ———–
    關於Hands On Course的填寫提示及補救方法
    Hands On Course的填寫注意點
    1、鏈接www.oracle.prometric.com網址,填寫Prometric ID and password進入頁面。第一次進入的話,
    請進入Creat an Account進行密碼等設置。
    2、Keycodes for the Hands On Course Requirement. For example:
    Oracle Datebase 10g Administrator Certified Professional————10gcourse
    Oracle Datebase 10g Administrator Certified Master——————ocmcourses
    Oracle 9i Datebase Administrator Certified Professional————–9icourse
    Oracle Application Server 10g Adiministrator: Certified Professional——-Available Soon
    Oracle 9i Database Adiministrator Certified Master——-Available Soon
    3、按要求完成選擇題目。
    其中有一題是需要填寫你的Enrollment ID,即Registration Number。這個在考試結果上有寫明。
    4、在完成所有的選項後,確認無誤,請選擇提交。等待信息認證的確認結果。
    ————————————————– ———————————————-
    hands on (50-60天)後還沒有收到證書,或者還有其他疑問,請撥打甲骨文大學的熱線電話:800-810-9931轉62548
    ————————————————– ————————————————
    Hands On Course填寫錯誤後的補救方式
    1、如果在提交前就發現自己有地方填寫錯誤,那麼還好,請耐心等待30天。 30天后請更正信息重新提交。
    2、如果提交後發現自己填寫錯誤,那麼也還好,不是無法挽回的。就是比較麻煩:~
    第一、請耐心等待7-30天,在此期間您將會收到Prometric與Oracle發出來的郵件;
    第二、再收到郵件後,請更加耐心地寫封郵件至:OCPREQ_ww@oracle.com(如果您參加的是OCP的考試的話);
    第三、郵件的Title為:9i/10g ocp certificate successful kits request;
    第四、就是郵件的內容啦,必須包含個人信息+考試時間(最後一門考試結束的時間) +培訓課程名稱
    +Enrollment ID+培訓開始的時間+培訓地點+培訓機構
    第五、發送郵件,繼續等待。 :Z
    基本上就是這樣一個步驟,如果還有什麼問題,
    也可以打甲骨文大學的熱線電話“800-810-9931”去諮詢啊!

  • MCSE“已死”(轉載www.ithome.com)

    MCSE行之有年,曾經是微軟最知名的證照,也是許多人踏上IT生涯的起點,但是,現在我們都必須認清MCSE已經死了。
    微軟雖然在去年就宣布認證制度全面改版,但至今仍有不少人在問:「MCSE 2008與MCSE 2008 on Security的升級考試何時會舉辦?」

    其實,在微軟新的認證制度下,所有新版證照的名稱全都變了,所以不會再有MCSE。現在,是該認清MCSE已死的時候了。

    以Windows Server為例,MCSE 2003就是MCSE的末代證照,可以這麼說,MCSE十年歷史就在MCSE 2003畫下休止符。自Windows Server 2008之後,微軟就套用新版證照制度,所以不會有MCSE 2008,而是改為MCTS與MCITP。

    微軟此舉可說是先破壞再建設,如此大費周章地全盤推翻舊版認證制度的目的,就是企圖解決MCSE多年來令人詬病的問題。

    其中一個問題是,只要背考古題就能拿到MCSE證照,使得其他真正有實力的人拿到了這張證照,也會被笑說那不過是一張紙罷了。這可說是一個證照制度最大的致命傷,所以微軟現在針對一些證照有規定,考照者得修習特定的課程,才有資格參加考試,同時,新版MCITP的考試題目比較難,而且也加重實作題的比例。考過MCITP的過來人都一致認為,MCITP的考試難度比以往的MCSE還要高,最好是先有MCSE 2003認證課程的基礎,再來上MCITP的課程,而且建議考生要更重視Lab實作課程。

    另一方面,微軟新版認證制度要解決證照過於複雜,以及證照所反應的技能是否貼近企業資訊部門對於人才需求等問題。

    在MCSE時代,SE指的是System Engineer系統工程師,你必須先考過7次考試,取得7個MCP,才能拿到1張MCSE證照,所以即使是考過了6個MCP,最後一個沒考到,還是拿不到MCSE證照。

    在微軟新版認證制度裏,MCITP可說是等同於MCSE的位階,其中ITP指的是IT Professional。若要取得MCITP,你必須先考過2個MCTS(Technology Specialist)。所以,MCTS可說是等同於舊版的MCP,不一樣的是,現在每考取一個MCTS,微軟就會發給1張證照。

    以Windows Server 2008為例,MCTS有3張,分別驗證Windows Server 2008伺服器的「網路架構」「目錄服務」與「應用程式架構」等三方面的技術能力。在微軟的設定下,若你能熟悉「網路架構」「目錄服務」這兩個部分的技術,再加考伺服器管理員的考試,就代表有資格當一位伺服器管理人員,微軟將發予「MCITP Server Administrator」證照。如果你能懂Windows Server 2008伺服器的「網路架構」「目錄服務」與「應用程式架構」等三方面完整的技術,再加上熟悉桌面部署技術(得擁有1張桌面技術的MCTS證照),那麼微軟就認定你有資格管理全公司的IT系統,發予「MCITP Enterprise Administrator」證照。

    就系統管理方面來看,微軟就設計了「Server Administrator」與「Enterprise Administrator」兩種角色。在資料庫及程式開發方面,也是依照相同的邏輯,由此可見微軟設計新版認證制度的思維與過往截然不同。

    MCSE行之有年,曾經是微軟最知名的證照,也是許多人踏上IT生涯的起點,但是,現在我們都必須認清MCSE已經死了。 

     

    來源:http://www.ithome.com.tw/itadm/article.php?c=54125

  • CCNA證書註冊方法(思科註冊方法)

    在通過CCNA的認證考試後,會立即拿到考試成績單。但是要取得證書,就必須再進行註冊,在通過考試的10天內,需要到思科官方網站的考生個人跟踪系統中登錄個人信息。

    一般情況下,在你考試通過後兩到三天,CISCO的考生跟踪系統就有記載考生的考試信息了,所以,新生不妨在這個時間登錄此系統檢查、註冊一下。

    第一步,在思科網站登錄,頁面為www.certmanager.net/cisco

    進入後點第一次進入,

    填入LAST NAME和Registration ID,生成密碼。注意:Last Name應填寫考生的姓,不是名字。 Registration ID應填寫成績單上的Registration ID

    第二步,回到剛才的註冊頁面,用ID號和密碼進入系統後,出現如下頁面:

    請逐項選擇,完成這頁內容,這是必填的。

    第三步,進入“Personal Information”檢查考生個人信息是否正確,因為你在考試中心註冊時就已經報過收證書地址和考生EMAIL等信息了,所以在這裡需要檢查一下是否正確,錯誤信息可進行修改。收證書地址必須正確且保證長期有效,如果不能保證家里地址翻譯的正確性,也可以填寫考試中心的地址。

    注意:在考生個人信息頁面最後的表格內是可以用本國語言填寫考生信息的,上面註明可分別用“中文”“韓文”“日文”“西班牙文”填寫。思科的證書都是以平信的方式寄出,平信在郵局是查不到詳細狀態的,所以在第一次註冊時一定要填寫正確的中文通信地址!這樣,思科會在證書上同時用中文打出地址,到了國內的郵局,就不會出現因為不認識英文而把證書寄丟或者退回的現象了! ! !

    然後點左下角的Update確認鍵,系統會自動轉到個人信息確認(或修改)後的頁面。

    第四步,需要去完成考試協議Agreement v9的簽署,否則證書將不會發出。

    第五步,在cisco的考生個人追踪系統中,選testhistory再選Certificate Status你就會看見一個下拉列表有兩個選項:一個是hardcopy,另一個是softcopy,如果你選了前者,那你會收到傳統的cisco郵寄過來的證書;但是如果你選了後者你就會收到由cisco發出的電子證書,它是一個pdf文件作為Email的附件發送給你。

    註冊完成。

    下次考完其他科目再登錄此系統時,直接使用Testing ID或是Cisco ID來登錄即可。

  • Sybex CCNA考試模擬軟件

    Sybex CCNA考試模擬軟件CertSim [390題.可官方升級]最新版
    完全模擬真實考試環境,只可下一步,與真實考試環境相同。

    The Cisco® CCNA™ test covers eight topics:

    Describe how a network works
    Configure and verify and troubleshoot VLANS
    IP addressing
    Configure and verify and troubleshoot basic router operation
    Identify security threats
    Implement and verify and troubleshoot NAT and ACLs
    Implement and verify WAN links
    Wireless Networks (WLAN)

    CCNA™ CertSim® has a pool of over 390 questions. Each time you take the test, questions are randomly chosen from 8 areas. You are presented with 50 questions each time you take the test.

    Single Answer Multiple Choice

    Multi-Answer Multiple Choice

    Drag and Drop

    Enter an IP address or Mask

    Simulation Questions

    送給愛網絡和備考CCNA的同志們。

    1、安裝後為Demo版,用裡面提供的KeyGen算出激活碼後Demo字樣消失,才是正式版。

    2、開始考試後會發現為640-801版本題庫,升級到640-802最新題庫,需安裝CCNACertSim_Update v11 080325.exe

    3、安裝時應注意,必須將安裝目錄”x:\RouterSim\CCNACert”改為”RouterSim\CCNACertdemo”才可以正常更新。
    操作流程詳見官方更新說明:http://www.routersim.com/CCNACertSim_Sybexinfo.html

    The update program initially wants to install the program into RouterSim/CCNACert:

    Click the Browse button to change the installation path:

    Change the install path from C:\RouterSim\CCNACert to C:\RouterSim\CCNACertDemo:

    4、官方更新地址為:http://www.routersim.com/CCNACertSim_Update.html 下載更新包後按照第三條更新即可。

    下載地址:
    http://cn.ziddu.com/downloadfile/222767/CCNACertSim080325.rar.html

  • 提高自己水平的十大技術解析

     在當今的IT就業市場,有人歡喜有人憂。有人對目前的工作和薪水很滿意,有人目前正面臨著下崗,或者已經下崗……

        可能你是公司裡唯一諳熟某項關鍵技術的高手,缺了你,公司便玩不轉了;也可能你所在的公司對你現有的專業技能高枕無憂,認為你在任期內足以勝任公司給你的開發任務(當然就不會再花銀子去培訓你啦)。

        不要告訴我你們公司對原來用VB開發的業務處理系統很滿意,而你呢,也認為自己除了用C語言開發程序以外,不會再去做別的什麼事情。

        你是不是對.NET和Java為爭奪開發工具市場撕破臉皮而熟視無睹,你是不是對XML將要取代關係數據庫而無動於衷以及不屑一顧。你是不是認為你能用彙編或C開發任何東西,所以覺得其它開發工具都不再重要……

        如果真是這樣,那麼你離失業的日子不遠了

        俗話說–未雨綢繆……

        想一想如果你現在失業沒有工作會怎麼樣?

        想一想現在還有如此之多的弟兄們為了找一個飯碗而四處奔波。

        想一想如果現在你們公司為了搶占市場,突然要進行技術轉向,你該怎麼辦?

        想一想你現在為了自己的前途,突然需要改變技術領域,你該怎麼辦?或者你不滿足於現在自己的知識結構,想要再充實一下,但又不知選擇那些內容來學習。那麼繼續往下看,並一起參加討論吧,相信會有收穫的。

        在人才招聘市場,人事經理們關注的是實際技能,要求現在和將來從事開發工作所需要的實際技能。作為一個技術開發人員,自己的知識結構是就業和保持自身崗位的關鍵。此外還有一點也很重要,那就是即便你不再從事或者尋求實際的開發工作,也必須盡可能多地了解和熟悉當今你所從事的領域中最前沿的技術和信息,只有這樣才能跟上技術發展的步伐。以便使自己始終處於不敗之地。

        本文列出了當今計算機軟件開發和應用領域最重要十種關鍵技術排名,如果你想保證你現在以及未來的幾年不失業,那麼你最好跟上這些技術的發展。雖然你不必對這十種技術樣樣精通,但至少應該對它們非常熟悉。

        一、XML

        在十種技術中,最重要的一種技術我想應該非XML莫屬。這裡不僅僅指XML規範本身,還包括一系列有關的基於XML的語言:主要有XHTML,XSLT,XSL,DTDs,XML Schema(XSD),XPath,XQuery和SOAP。如果你現在還對XML一無所知,那麼趕快狂補吧。 XML是包含類似於HTML標籤的一個文本文件,在這個文件中定義了一個樹型結構來描述它所保存的數據。

         XML最大的優點是你既可以在這個文本文件中存儲結構化數據,也可以在其中存儲非結構化數據——也就是說,它能包含和描述“粗糙的”文檔數據,就像它描述“規則的”表格數據一樣。

         XHTML是目前編寫HTML的首選方法;因為XHTML本身就是格式良好的XML,與通常畸形的HTML文檔相比, XHTML格式文檔更容易處理。

         XSLT和XSL是對XML文檔進行轉換的語言。它們可以將XML文檔轉換成各種格式,比如另一個文本文件、PDF文件、HTML文件、逗號分割的文件,或者轉換成其它的XML文檔。

         DTDs和XML Schema用來描述XML文件所包含的數據內容的類型,使你不用編寫定制的代碼就能對XML文檔的內容進行“有效性”檢查,使內容強行遵守給出的規則。

         XPath和XQuery是查詢語言,用它們可以從XML文檔中吸取單個的數據項或者數據項列表。 XQuery的功能特別強大,因為它對XPath查詢進行了擴展。實際上,XQuery和XML的關係就像SQL之於關係數據庫一樣。

         SOAP是Web services間進行通訊的標準協議。你不必知道SOAP協議的所有細節,但是你應該熟悉其常用規則及其工作原理,這樣你才能使用它。

        二、Web Services

         Web服務是XML流行後的直接產物。因為XML可以描述數據和對象,XML大綱可以保證XML文檔數據的有效性,因為XML的基於文本的規範,因而XML文檔極其適合於作為一種跨平台通訊標準的基本格式。如果你還沒有接觸過Web服務,那麼過不了多久你肯定會碰到它,所以必須熟練掌握Web服務,最好是精通它,因為它是迄今為止應用程序間跨不同種類機器、語言、平台和位置通訊的最簡單的一種方式。不管你需不需要它,Web服務都會是將來互用性的主要趨勢。

         XML工作組的John Bosak曾說過:“XML使得Java有事可做”,那麼,我們也可以說,Web服務使得所有語言都有事可做。 Web服務讓運行在大型機上的COBOL應用程序與運行在手持設備上的應用程序相互溝通;讓Java小應用與。 NET服務器相互通訊,讓桌面應用與Web服務器進行無縫交互,不但為商業數據處理,同時也為商業功能提供了方便的實現——並且這種實現與語言、平台、和位置無關。

        三、面向對象編程

        許多程序員仍然認為OOP乃技術的象牙之塔,但是細細想一下過去十年裡在面向對象領域裡佔據過統治地位的開發語言之後,你就不會這麼認為了,OOP理念從Smalltalk開始,然後蔓延到C++和Pascal(Delphi),到Java成為真正的主流,VB.NET和C#的出現可以說是OOP發展到了登峰造極的地步。雖然使用這些語言不必了解OOP的概念,但如果你缺乏一些OOP的基本知識和方法,我想你很難在逐漸疲軟的就業市場中找到工作。

        四、Java,C++,C#,VB.NET

        如果你熱衷於技術,並且熱愛編程,那麼我想你應該輕鬆玩轉這些高級語言,我說的玩轉並不一定要你成為超級編程高手。而是能看懂用這些語言編寫的代碼即可。如果你還有精力用它們編碼那就更好了。其實這種機會甚少。但是看代碼的機會很多,學習編程的最有效的一種方式就是看源代碼——浩如煙海的源代碼中很多都不是用你所鍾愛的開發語言編寫的。

        在過去的幾年裡,各個語言功能的發展基本上都差不多。現在你完全可以用VB.NET來寫Windows服務、Web應用或者命令行程序。即使你只用其中的一種語言寫程序。我認為也完全有必要學習另外一種語言,使自己能閱讀和理解它們現有的例子代碼,並且能將一種語言編寫的代碼轉換成你首選的編程語言代碼。這裡列出的四種語言可謂是一個強大的開發語言工具箱,如果你掌握了它們,毫無疑問你一定是一個眾人仰慕的高手。這裡我要聲明一下:那就是我並沒有要忽略和排除其它的高級語言,如:FORTRAN、COBOL、APL、ADA、Perl和Lisp等等,根據你所從事的領域不同,應該選擇適合的語言和工具。

        五、JavaScript

         Java和JavaScript兩者的名字儘管很類似,但它們之間並沒有什麼關係。為什麼一種腳本語言會如此重要,以至於將它列入十種關鍵技術之一呢?仔細想一下就知道了,目前所有主流的瀏覽器都使用JavaScript。如果你要編寫Web應用程序,那麼JavaScript不可或缺。此外,JavaScript還能作為一種服務器端的腳本語言,如將它嵌入在ASP、ASP.NET中,或者嵌入XSLT來擴展功能。目前JavaScript在Mozilla/Netscape中是激活基於XUL界面的首選語言,它派生出了ActionScript,成為Flash MX應用的編程語言。還有就是JavaScript極有可能成為未來新設備的腳本語言以及主流應用的宏語言。

       相比之下,VBScript雖然在微軟的產品中得到很好的支持,但從長遠來看,沒有跡象表明它會有美好前途。微軟自己都趨向於用JavaScript(或者用由JavaScript派生的JScript)來編寫其客戶端腳本代碼。因此,如果你要選擇腳本語言,非JavaScript莫屬。

        六、Regular Expressions

        從所周知,關係數據庫的查詢使用SQL,搜索XML文檔用XPath和XQuery,而正則表達式則用來搜索純文本。例如,你可以用一個命令來查找或刪除HTML格式文件中的註釋內容。大家都用過“IndexOf”、“InStr”以及“Like”這些內建在JavaScript或VB中的文本搜索函數,這些函數雖然很容易使用,但是它們的功能卻無法與正則表達式同日而語— —現在每一種主流的開發語言都提供對正則表達式的存取。儘管有人認為正則表達式本身的讀寫艱澀難懂,但畢竟它的功能強大,使用它的領域也越來越多。

        七、Design Patterns

        就像OOP通過創建和分類對象來簡化編程一樣,設計模式將普通的對象交互分類成指定的模型,這是一個從一般到具體的過程。 OOP的成分使用得越多,設計模式就顯得越有用武之地。所以你必須理解它們,跟上其總體理論的發展。

        八、Flash MX

        當你需要比HTML和CSS所能提供的更多的客戶端圖形和編程能力時,Flash是最佳選擇。在Flash中編程比用Java小應用或者.NET代碼來得快得多,也容易得多。

        在最新版本中(MX),Flash不僅可以畫圖和進行動畫打包,它還是個高度的可編程應用環境。具備強大的與SOAP Web服務溝通的能力,可以調用運行在遠端服務器上的ColdFusion、Java或。 NET代碼。可以說Flash幾乎無處不在,包括手持設備、置頂盒、甚至是新的平板電腦,你到處都可以見到它的身影,所以使用它實際上可以擴展和延伸你的應用程序使用領域。
       九、Linux/Windows

        這是當今PC機操作系統的兩大陣容,如果你想在計算機行業裡混,就一定要熟悉它們。對於Linux,最好能自己安裝,配置,下載它的圖形用戶界面以及一些應用程序。自己安裝Apache並會編寫Web應用程序。要清醒地認識到這個世界除了Windows之外,還有Linux的存在。並且這種局面將會長期存在。反過來,如果你是一個死忠的Linux開發者,不要再繼續對Windows的憎惡,要相互學習,取長補短,看看Windows有什麼好的東東可以採納。記住Windows仍然是桌面之王。

        誰也說不准你們公司什麼時候會決定從Linux轉向Windows,或者從Windows轉向Linux。誰也說不准什麼時候你會跳槽跑到另外一個使用不同平台的公司上班——或者即便不跳槽,也有可能在不同平台上開始另外一個殺手級項目——所以最好在每個平台上都積累一些經驗,而不要在一棵樹上吊死。

        十、SQL

        儘管SQL在當今眾多的技術中已不是什麼新東西,而且在未來的十年裡它的作用很有可能被削弱,甚至整個被淘汰,但它仍然是一種基本技能——別看它是一種基本技能,至今仍有許多開發人員不懂什麼是SQL或對它了解不多。不要指望基於圖形用戶界面的SQL構造器會幫你的忙,還是自己親手寫SQL查詢吧,確定你掌握了SQL的基本語法。現在理解了SQL,不僅對以後學習XQuery有所裨益,而且可以使你很快找到簡化或改進當前開發項目的途徑。

        尾聲:培養對技術的好奇心

        其實,不管技術的發展趨勢如何,每個人最重要的一個技能是好奇心。敢於面對挑戰,在你目前或未來的工作中,新語言或新技術可能很重要,也可能不怎麼重要,你所學習的東西並不一定非要針對你的工作。不要怕失敗,任何新的技術對初學者來說都是困難的。大多數的失敗都可以歸咎於本身急功近利,希望速成。俗話說——千里之行,始於足下,應該腳踏實地,一步一個腳印地往前走。不要讓時間來左右你行動,而是要利用時間來關注、研究、測試新的開發技術和工具。

        本文的用意不在於要讓你成為任何一種技術的專家——只是想拋磚引玉,和大家暢談現在和未來哪些技術是我們要密切關注的,討論今後IT行業就業的知識結構,思考自己今後應該在哪些方面需要多花些功夫。因為每一個人的情況各有不同,應該根據具體情況來構築自己的知識層面。但有一點無庸置疑——那就是保持良好的好奇心始終會使你充實和睿智。

  • 2009年將是Linux變革之年

     當軟件變得越來越以網絡為中心,硬件設備也越來越便宜的時候,2009年,linux操作系統將迎來新的發展機遇。

    Linux變革最大的催化劑將是netbooks:Gartner已經做出預測:明年將售出的這種小型電腦大概將約800萬台,到2012年,這一數字將上升到5000萬(沒錯,是5000萬!)。目前,許多netbooks預裝的操作系統是Windows XP,但微軟已經明確地設置了XP安裝的最後期限為2010年6月。由於大多數計劃生產的機器以低能耗芯片如Intel的Atom和其他廉價的部分構成,而且售價低於500美元,所以,Windows Vista不可能成為netbooks的操作系統選擇,因為這樣的預裝費會很高,而且由於軟件自身過於龐大,用於低端硬件的話能耗就更高了。

         Windows的構架方式同樣是netbook型電腦的桎桍。 Windows被設計用來迅速方便地索引、瀏覽和執行本地文件——這些任務對於面向網絡的netbooks幾乎毫無意義。並且經過適當的配置,Windows能夠處理多媒體,而netbooks卻沒有處理多媒體的硬件,只有小容量硬盤,沒有光驅,而且功能不佳的視頻卡還意味著:從一開始,DVD和音樂確實就不是netbooks的必要功能。配置較低的netbooks真正想要的是,把它連接到無所不能的雲(計算)——其它的一切只是沉重的負擔。

        在這種形式下,運營Ubuntu Linux發行版的機構Canonical Limited公司已經與處理器製造商ARM合作設計一款專門面向netbooks的Linux版本,這件事也沒有什麼值得驚奇的了。 ARM設計了Google的開源智能手機——G1內部的處理器,並有傳聞說,ARM主導的Apple netbook正在研發中。現有的Linux版本通常能夠很好地運行在大多數netbooks上,不過,它們並非真正設計為網絡專用。通常只是極其簡陋的桌面操作系統,而且接口過分簡單。就這點而論,它們往往使消費者感到厭煩,因此,退回的基於Linux的電腦常常是Windows機器的4或5倍。 arm和Canonical想要消除消費者的這種苦惱,但要這樣做,勢必需要一個簡潔、易於理解和使用並且十分悅目的Linux版本。

        為了避開Windows的高費用和臃腫,手持設備也轉向開源解決方案。 Palm不久前已經暗示,它將在09年初舉行的Consumer Electronics Show上發布一個新平台,努力奪回與RIM和蘋果競爭的優勢,後兩者分別是BlackBerry和iPhone 3G的製造商。在過去,Palm公司使用其自有的Palm OS以及Windows Mobile操作系統,不過,Palm OS極度需要更好的網絡集成,而在Palm智能手機損失市場份額(該設備生產商上個季度虧損4100萬美元)的情況下,Windows Mobile只充當臨時替代品。分析家全面預測,源自設備製造商的一些基於Linux的裝置將出現在一月份。

  • Linux技巧集

    改變文件或目錄之讀、寫、執行之允許權
    ====================================
    執行格式:chmod [-R] mode name ( name可為文件名或目錄名;mode可為3個8位元之數字,或利用ls -l命令,列出文件或目錄之讀、寫、執行允許權之文字縮寫。)
    mode : rwx rwx rwx r:read w:write x:execute(user group other縮寫為: ugo)
    Example :
    % chmod 755 dir1將目錄dir1,設定成任何使用者,皆有讀取及執行之權利,但只有擁有者可做修改。
    % chmod 700 file1將文件file1,設定只有擁有者可以讀、寫和執行。
    % chmod o+x file2將文件file2,增加擁有者可以執行之權利。
    % chmod g+x file3將文件file3,增加群組使用者可執行之權利。
    % chmod or file4將文件file4,除去其它使用者可讀取之權利。
    改變文件或目錄之擁有權
    ======================
    執行格式:chown [-R] username name ( name可為文件名或目錄名。)
    Example :
    % chown user file1將文件file1之擁有權,改為使用者user所有。
    % chown -R user dir1將目錄dir1,及其下所有文件和子目錄之擁有權,改為使用者user所有。
    檢查自己所屬之群組名稱
    ======================
    執行格式:groups
    Example :
    % groups
    改變文件或目錄之群組擁有權
    ==========================
    執行格式:chgrp [-R] groupname name ( name可為文件名或目錄名)
    Example :
    % chgrp vlsi file1將文件file1之群組擁有權,改為vlsi群組。
    % chgrp -R image dir1將目錄dir1,及其下所有文件和子目錄,改為image群組。
    改變文件或目錄之最後修改時間(變為當前時間)
    =========================================
    執行格式:touch name ( name可為文件或目錄名稱。)
    Example :
    % touch file1
    % touch dir1
    文件之連結
    ==========
    同一文件,可擁有一個以上之名稱,可將文件做數個連結。
    執行格式:ln oldname newname ( Hard link )
    Example :
    % ln file1 file2將名稱file2,連結至文件file1。
    執行格式:ln -s oldname newname ( Symblick link )
    Example :
    % ln -s file3 file4將名稱file4,連結至文件file3。
    文件之字串找尋
    ==============
    執行格式:grep string file
    Example :
    % grep abc file1尋找文件file1中,列出字串abc所在之整行文字內容。
    找尋文件或命令之路徑
    ====================
    執行格式:whereis command (顯示命令之路徑。)
    執行格式:which command (顯示命令之路徑,及使用者所定義之別)
    執行格式:whatis command (顯示命令功能之摘要。)
    執行格式:find search-path -name filename -print (搜尋指定路徑下,某文件之路徑)
    Example :
    % find / -name file1 -print (自根目錄下,尋找文件名為file1之路徑)
    比較文件或目錄之內容
    ====================
    執行格式:diff [-r] name1 name2 ( name1 name2可同時為文件名,或目錄名稱)
    Example :
    % diff file1 file2比較文件file1與file2內,各行之不同處。
    % diff -r dir1 dir2比較目錄dir1與dir2內,各文件之不同處。
    如何實現為一個網卡綁定多個IP地址?
    ====================================
    Linux的網絡設備配置文件存放在/etc/sysconfig/network-scripts裡面,對於以太網的第一個網絡設備,配置文件名一般為ifcfg-eth0如果需要為第一個網絡設備綁定多一個IP地址,只需要在/etc/sysconfig/network-scripts目錄裡面創建一個名為ifcfg-eth0:0的文件,內容樣例為:
    DEVICE=”eth0:0″
    IPADDR=”211.100.10.119″
    NETMASK=”255.255.255.0″
    ONBOOT=”yes”
    其中的DEVICE為設備的名稱,IPADDR為此設備的IP地址,NETMASK為子網掩碼,ONBOOT表示在系統啟動時自動啟動。
    如果需要再綁定多一個IP地址,只需要把文件名和文件內的DEVICE中的eth0:x加一即可。 LINUX最多可以支持255個IP別名。
    如何設置login後歡迎信息
    ====================================
    修改/etc/motd,往裡面寫入文本,就能使用戶通過telnet正確登錄後執行shell之前得到相應的提示信息。
    motd就是“messages of the day”,也就是當日信息的意思。管理員可以往裡面寫一些需要注意的事項或者通知等來提醒正式用戶。
    如何設置login前歡迎界面
    ====================================
    修改/etc/issue或者issue.net,往裡面寫入文本,就能使得用戶在login前得到相應的提示,這將有助於用戶分辨自己正在連接哪裡的主機。
    issue的內容是出現在本機登錄的用戶界面上,而issue.net則是在用戶通過網絡telnet的時候出現。
    如何在bash下快速執行某個特定歷史命令
    ====================================
    在bash下面按ctrl+r可以查找歷史命令中匹配的命令並執行
    如何查看進程繼承關係
    ====================================
    直接在命令行中輸入
    pstree
    即可,程序會以樹狀結構方式列出系統中正在運行的各進程之間的繼承關係。
    如何找出內存佔用最大的進程
    ====================================
    除了可以使用top命令查看內存使用情況之外,還可以使用更快的命令行命令,相關的命令如下:
    ps aux | sort +4n
    或者
    ps aux | sort +5n
    如何在Linux下面編輯二進製文件
    ====================================
    到http://freshmeat.net/redir/hexedit/4088/url_tgz/hexedit-1.2.3.src.tgz下載hexedit安裝到系統上,就能用hexedit filename來編輯二進製文件。
    如何設置用戶密碼過期時間
    ====================================
    設置某個用戶的密碼過期時間可以用usermod -e來設置,如果要統一設置用戶的密碼過期時間,那麼就要修改/etc/login.defs裡面的PASS_MAX_DAYS,比如修改所有用戶的密碼過期時間是30天:
    PASS_MAX_DAYS 30
    如果這個值是99999,那麼表示密碼永不過期。
    如何修改網卡MAC地址
    ====================================
    首先必須關閉網卡設備,否則會報告系統忙,無法更改。
    命令是: /sbin/ifconfig eth0 down
    修改MAC地址,這一步較Windows中的修改要簡單。
    命令是:/sbin/ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE
    重新啟用網卡/sbin/ifconfig eht0 up
    網卡的MAC地址更改就完成了
    如何用Bash糾正錯誤命令
    ====================================
    當你輸入一個命令不知道是否正確的時候,可以使用ctrl+t來糾正到正確的命令。
    比如輸入mkdri,然後按ctrl+t,bash會幫你糾正到最接近的命令mkdir。
    如何使非root用戶都不能遠程登錄
    ====================================
    建立/etc/nologin文件,這樣所有的非root用戶都不能遠程登錄。
    如何不顯示其他用戶的消息
    ====================================
    用戶可以使用mesg n來禁止別人給他發送信息,其實就是禁止別人往自己的終端上面的寫權限。當別人試圖再使用write給他發送信息時,發送者將會看見提示:
    write: user has messages disabled on pts/n
    如何知道某個命令使用了什麼庫文件
    ====================================
    例如要知道ls使用了什麼庫文件,可以使用:
    $ ldd /bin/ls
    如何臨時增加交換空間
    ====================================
    產生一個64M的空文件
    #dd if=/dev/zero of=/swapfile bs=1024 count=65536
    初始化該文件為交換文件:
    mkswap /swapfile 65536
    sync
    激活這個交換文件:
    swapon /swapfile
    如何使一個用戶進程在用戶退出系統後仍然運行
    ====================================
    使用nohup command &,比如:
    nohup wget -c ftp://test.com/test.iso
    這樣即使用戶退出系統,wget進程仍然繼續運行直到test.iso下載完成為止
    如何限制用戶的最小密碼長度
    ====================================
    修改/etc/login.defs裡面的PASS_MIN_LEN的值。比如限制用戶最小密碼長度是8:
    PASS_MIN_LEN 8
    這樣用戶設置密碼的時候如果輸入的密碼長度小於8將不能設置
    如何限制只有0組(gid=0)的用戶可以su成root
    ====================================
    修改/etc/login.defs裡面的SU_WHEEL_ONLY的值為:
    SU_WHEEL_ONLY yes
    那麼就只有gid為0的用戶可以su成root。
    如何禁用Ctrl+Alt+Del鍵重啟系統
    ====================================
    有時候為了防止誤操作導致系統重新啟動(如機房裡面新來了個習慣用Window$系統的管理員:-D),或者出於安全的原因,需要禁用Ctrl+Alt+Del組合鍵。
    只需要註釋掉/etc/inittab文件內的
    ca::ctrlaltdel:/sbin/shutdown -t3 -r now
    這一行即可。如何註釋?在這一行的行首放一個“#”號即可。
    怎麼樣格式化磁盤
    ====================================
    Linux下有一條mkfs命令,相當於format,可以對磁盤進行文件系統製作操作(或者說格式化)。命令的語法為:
    mkfs -t文件系統類型/dev/設備名
    如要把/dev/sda1格式為reiserfs格式,使用以下命令:
    mkfs -t reiserfs /dev/sda1
    當然,也可以使用mkfs.fstype命令來格式化磁盤,其中的fstype為文件系統名,如reiserfs文件系統的格式化命令為mkfs.reiserfs。上面那條命令的相應版本為:
    mkfs.reiserfs /dev/sda1
    如何取消root命令歷史記錄以增加安全性
    ====================================
    為了設置系統不記錄每個人執行過的命令,就在/etc/profile裡設置:
    HISTFILESIZE=0
    HISTSIZE=0
    或者:
    ln -s /dev/null ~/.bash_history
    這樣就可以了。
    如何使用netrc文件進行自動ftp
    ====================================
    在自己的home目錄下建立一個權限600,名為.netrc的文件,內容是:
    machine 192.168.0.1 login test password test
    這樣以後你每次ftp 192.168.0.1的時候,系統都會幫你以用戶名test,密碼test登錄。
    利用這個特徵可以實現自動ftp。
    例如你想要每天5:00到192.168.0.1機器上面獲得/test目錄下的文件test.txt,可以這麼做:
    建立一個文件ftp_cmd,內容為:
    cd test
    get test.txt
    bye
    然後使用crontab -e設置定時任務:
    0 5 * * * ftp 192.168.0.1 < ftp_cmd
    如何測試硬盤性能
    ====================================
    使用hdparm -t -T /dev/hdX就可以測試硬盤的buffer-cache reads和buffered disk reads兩個數據,可以用來當作硬盤性能的參考。
    同時使用hdparm -c3 /dev/hdaX還能設置硬盤以32bit傳輸,以加快數據傳輸的速度。
    壓縮和打包文件
    ====================================
    .bz2文件如何解壓縮用tar -I或者bunzip2命令都可以。
    .bz2 —使用bzip2命令壓縮的文件,可以使用bzip2 -d filename解包
    .gz —使用gzip命令壓縮的文件,可以使用gunzip -d filename解包
    .tar —使用tar打包的文件,即tarball文件,可以使用tar xf filename解包
    .tbz —使用tar打完包後再以bzip2命令壓縮的文件,可以使用tar jxf filename解包
    .tgz —使用tar打完包後再以gzip命令壓縮的文件,可以使用tar zxf filename解包
    個人總結:
    [.tar]解開:tar xvf *.tar把文件打包不壓縮:tar cvf *.tar DirName
    [.tar.gz]解開:tar xzvf *.tar.gz把文件打包並壓縮:tar czvf *.tar.gz DirName
    [.bz2]解開:bzip2 -d *.bz2
    [.bz]解開:bzip -d *.bz
    [.gz]解開:gzip -d *.gz
    請參見:【Linux下常用壓縮格式的壓縮與解壓方法】

    如何對光驅、軟驅實現AutoMount
    ====================================
    安裝完Redhat Linux之後,運行ntsysv,選中服務後台程序autofs.autofs的兩個配置文件在/etc/auto.misc和/etc/auto.master。
    /etc/auto.master定義了mount目錄和mount所需的配置文件名及其空閒時自動umount的時間。下面是默認配置:
    [jephe@sh3 /etc]$ more auto.master
    /misc /etc/auto.misc –timeout 60
    下面是我的/etc/auto.misc配置文件:
    [jephe@sh3 /etc]$ more auto.misc
    cdrom -fstype=iso9660,ro :/dev/cdrom
    floppy -fstype=vfat :/dev/fd0
    e2floppy -fstype=ext2 :/dev/fd0
    注:
    a.確保/dev/cdrom作為符號鏈接指向你的光驅所在的分區,作為我的情況:
    [jephe@sh3 /dev]$ ls cdrom -l
    lrwxrwxrwx 1 root root 3 Aug 26 08:44 cdrom -> hdd
    b.當軟盤為windows 95格化化的vfat分區類型時,設定了安裝目錄/misc/floppy
    c.當軟盤為Linux格式化過的ext2分區類型時,設定了安裝目錄/misc/e2floppy
    至此,若還未啟動autofs,則運行/etc/rc.d/init.d/autofs start,若對上述兩個文件中做過任何更改,運行/etc/rc.d/init.d/autofs restart即可。
    放入一片光盤進入光驅後,不需任何動作,直接進入目錄/misc/cdrom,autofs將自動先為你mount光驅同樣,若放入一張vfat格式的軟盤,你可以cd /misc/floppy ,若是ext2格式的軟盤,則cd /misc/e2floppy。在超過一分鐘未使用它們,且當前目錄不是自動mount目錄/misc/cdrom,/misc/floppy,/misc/e2floppy,系統將自動umount它們。
    cron計劃任務
    ====================================
    簡介
    crontab-操作每個用戶的守護程序和該執行的時間表。
    部分參數說明
    crontab file [-u user]-用指定的文件替代目前的crontab。
    crontab-[-u user]-用標準輸入替代目前的crontab.
    crontab-1[user]-列出用戶目前的crontab.
    crontab-e[user]-編輯用戶目前的crontab.
    crontab-d[user]-刪除用戶目前的crontab.
    crontab-c dir-指定crontab的目錄。
    crontab文件的格式:M H D m d cmd.
    M:分鐘(0-59)。
    H:小時(0-23)。
    D:天(1-31)。
    m:月(1-12)。
    d:一星期內的天(0~6,0為星期天)。
    cmd要運行的程序,程序被送入sh執行,這個shell只有USER,HOME,SHELL這三個環境變量。
    下面是一個例子文件:
    #MIN HOUR DAY MONTH DAYOFWEEK COMMAND
    #每天早上6點10分
    10 6 * * * date
    #每兩個小時
    0 */2 * * * date
    #晚上11點到早上8點之間每兩個小時,早上8點
    0 23-7/2,8 * * * date
    #每個月的4號和每個禮拜的禮拜一到禮拜三的早上11點
    0 11 4 * mon-wed date
    #1月份日早上4點
    0 4 1 jan * date
    範例
    $crontab -l列出用戶目前的crontab.
    #MIN HOUR DAY MONTH DAYOFWEEK COMMAND
    10 6 * * * date
    0 */2 * * * date
    0 23-7/2,8 * * * date
    如何在Linux裡面恢復mbr?
    ====================================
    可以使用下面的命令來恢復:
    dd if=/boot/boot.NNNN of=/dev/hda bs=446 count=1
    其中bs(buffer size)是指重寫的字節數。為什麼不是512呢?主引導扇區是一個扇區(512字節)呀?答案是因為我們用上面的命令是為了修復可能被病毒修改了的主引導記錄MBR,或者想把LILO卸載掉,而不是恢復整個主引導扇區。所以我們只把主引導扇區的備份文件boot.NNNN的前446個字節重寫入主引導扇區。 boot.NNNN是我們在安裝Linux之前整個主引導分區的備份。如果我們把512個字節全部寫入主引導扇區就可能會把安裝了Linux後改變了的硬盤DPT表也破壞掉。那就壞事了。 🙂
    如何列出一個目錄佔用的空間
    ====================================
    du或du -s或du -k
    du -S | sort -n可以迅速發現那個目錄是最大的。
    用df可以看到已安裝的文件系統的空間大小及剩餘空間大小。
    quota -v查看用戶的磁盤空間信息,如果你用quota限制了用戶空間大小的話。
    在使用less或more時,如何直接啟動編輯器
    ====================================
    在less或者more中打入v鍵,會立即啟動vi編輯器,可以對文件進行編輯
    如何察看你當前使用的Linux內核的版本
    ====================================
    可以使用uname -r來查看當前內核版本。如果使用uname -a可以查看包括內核版本,機器硬件信息、網絡節點名、操作系統名字等信息
    如何顯示文件的類型
    ====================================
    用命令file可以使你知道某個文件究竟是ELF格式的可執行文件,還是shell script文件或是其他的什麼格式例如:
    #file startx
    如何將man page轉成HTML格式
    ====================================
    使用man2html這個指令,就可以將man page轉成HTML格式了。用法是:
    man2html filename > htmlfile.html
    例子:
    man2html /usr/man/man1/man2html.1 > ~/man2html.html
    查看文件內容的特殊方法
    ====================================
    相信最基本的cat和less你已經很熟悉了,如果有特殊的要求呢:
    如果你只想看文件的前5行,可以使用head命令,如:
    head -5 /etc/passwd
    如果你想查看文件的後10行,可以使用tail命令,如:
    tail -10 /etc/passwd
    tail -f /var/log/messages
    參數-f使tail不停地去讀最新的內容,這樣有實時監視的效果,當你在ppp撥號的過程中用它豈不是很方便!
    查看文件中間一段,你可以使用sed命令,如:
    sed -n ‘5,10p’ /etc/passwd
    這樣你就可以只查看文件的第5行到第10行。
    linux下文件分割與合併
    ====================================
    $dd if=source of=target.1 bs=1M count=10
    $dd if=source of=target.2 bs=1M skip=10
    source被分為target.1和target.2兩個文件,其中target.1為source的前10M部分;target.2為source的減去10M後的部分。
    $cat target.1 target.2 > othersource
    source與othersource是同一個文件。
    RedHat下如何顯示彩色目錄列表
    ====================================
    打開/etc/bashrc,加入如下一行:
    alias ls=”ls –color”
    下次啟動bash時就可以像在Slackware裡那樣顯示彩色的目錄列表了,其中顏色的含義如下:
    藍色–>目錄
    綠色–>可執行文件
    紅色–>壓縮文件
    淺藍色–>鏈接文件
    灰色–>其他文件
    什麼是Linux運行級?
    ====================================
    什麼是運行級呢?簡單的說,運行級就是操作系統當前正在運行的功能級別。這個級別從1到6,具有不同的功能。這些級別在/etc/inittab文件裡指定。這個文件是init程序尋找的主要文件,最先運行的服務是那些放在/etc/rc.d目錄下的文件。
    不同的運行級定義如下:(可以參考Red Hat Linux裡面的/etc/inittab)
    #缺省的運行級,RHS用到的級別如下:
    # 0 -停機(千萬不要把initdefault設置為0 )
    # 1 -單用戶模式
    # 2 -多用戶,但是沒有NFS
    # 3 -完全多用戶模式
    # 4 -沒有用到
    # 5 – X11
    # 6 -重新啟動(千萬不要把initdefault設置為6 )
    對各個運行級的詳細解釋:
    0為停機,機器關閉。
    1為單用戶模式,就像Win9x下的安全模式類似。
    2為多用戶模式,但是沒有NFS支持。
    3為完整的多用戶模式,是標準的運行級。
    4一般不用,在一些特殊情況下可以用它來做一些事情。例如在筆記本電腦的電池用盡時,可以切換到這個模式來做一些設置。
    5就是X11,進到Xwindow系統了。
    6為重啟,運行init 6機器就會重啟。
    不同的運行級有不同的用處,也應該根據自己的不同情形來設置。例如,如果丟失了root口令,那麼可以讓機器啟動進入單用戶狀態來設置。在啟動後的lilo提示符下輸入:
    init=/bin/sh rw
    就可以使機器進入運行級1 ,並把root文件系統掛為讀寫。他會跳過所有系統認證,讓你使用passwd程序來改變root口令,然後啟動到一個新的運行級。

    系統平均負載(Load average)釋疑
    ====================================
    在Linux系統中,uptime、w、top等命令都會有系統平均負載load average的輸出,那麼什麼是系統平均負載呢?
    系統平均負載被定義為在特定時間間隔內運行隊列中的平均進程樹。如果一個進程滿足以下條件則其就會位於運行隊列中:
    -它沒有在等待I/O操作的結果
    -它沒有主動進入等待狀態(也就是沒有調用’wait’)
    -沒有被停止(例如:等待終止)
    例如:
    [root@www2 init.d]# uptime
    7:51pm up 2 days, 5:43, 2 users, load average: 8.13, 5.90, 4.94
    命令輸出的最後內容表示在過去的1、5、15分鐘內運行隊列中的平均進程數量。
    一般來說只要每個CPU的當前活動進程數不大於3那麼系統的性能就是良好的,如果每個CPU的任務數大於5,那麼就表示這台機器的性能有嚴重問題。對於上面的例子來說,假設系統有兩個CPU,那麼其每個CPU的當前任務數為:8.13/2=4.065。這表示該系統的性能是可以接受的。
    如何以樹狀結構顯示系統當前的任務
    ====================================
    運行ps時指定—forest選項,當前運行的進程將會以樹狀格式顯示出來。比如:所有由xserver運行的程序,將會以xserver做為它們的“根”顯示出來。
    命令格式:
    ps afx
    其中’a’表示列出所有運行的進程;’x’列出所有的後台進程;’f’是’-forest’的縮寫。輸出的格式如下:
    329 ? SW 0:00 [wdm]
    342 ? R 9:57 _ /usr/X11R6/bin/X :0 vt7 -fbbpp 16 -auth /usr/etc/
    343 ? SW 0:00 _ [wdm]
    364 ? S 0:45 _ /usr/bin/enlightenment
    399 ? S 0:00 _ /usr/bin/ssh-agent sh /home/tuneup/.xse
    404 ? S 2:28 _ gkrellm -wm
    787 ? S 0:05 _ aterm -fg white -tr
    788 ttyp0 SW 0:00 _ [bash]
    792 ttyp0 S 0:00 _ vim todo
    注:另外一種得到格式化輸出結果的方法是:pstree -pu
    列目錄時如何顯示中文文件名
    ====================================
    我們可以使用–show-control-chars命令選項來顯示。
    例如:
    $ls –show-control-chars
    如果使用的是一個比較常用的windows的分區,那麼可以通過修改fstab來實現,在fstab中加入類似內容:
    /dev/hda1 /mnt/c vfat defaults,codepage=936,iocharset=cp936 0 0
    那麼以後進入系統後都可以方便地使用/mnt/c訪問windows的這個目錄並正確顯示目錄名和文件名。
    如何使用iso文件?
    ====================================
    許多Linux發行版本都有.iso的光盤鏡像文件,可以用來刻錄光盤。我們也可以在Linux系統下直接使用。
    #mount -t iso9660 -o loop xxxxx.iso /any/path/if/u/like
    查詢你的CPU等級
    ====================================
    cat /proc/cpuinfo
    如何使用戶沒有telnet和ftp權限
    ====================================
    若只希望用戶沒telnet權限,則需要修改/etc/passwd中對應該用戶的shell為/bin/true。
    若只希望用戶沒有telnet和ftp權限,則需要修改/etc/passwd中對應該用戶的shell為/bin/false。
    如何連續執行一個命令
    ====================================
    使用watch命令,可以反复執行命令,如果和ls配合,可以達到觀察某文件大小變化的效果。例如:
    $watch ls -l file.name
    如何防止某個關鍵文件被修改
    ====================================
    在linux下,有些配置文件是不允許任何人包括root修改的,為了防止被誤刪除或修改,可以設定該文件的”不可修改位(immutable)”。
    例如:
    chattr +i /etc/fstab
    如果需要修改文件則:
    chattr -i /etc/fstab
    以後再修改文件。
    linux環境下如何undelete
    ====================================
    先在自己的主目錄下創建一個名為.trash的子目錄,然後在bashrc加入以下指令:
    alias rm ‘mv -f !* ~/.trash’
    alias undel ‘mv ~/.trash/!* ./!*’
    alias cleantrash ‘/bin/rm -rf ~/.trash; mkdir ~/.trash;sync’
    alias lrm ‘ls ~/.trash’
    若文檔是直接用rm命令刪除的,理論上ext2內rm掉的檔案還是可以用debugfs , ext2ed救回來的.當然…被overwrite掉就沒救了。
    如何找出磁盤中某個大小範圍內的文件
    ====================================
    比如要查找磁盤中大於3M的文件:
    find . -size +3000k -exec ls -ld {} ;
    如何快速重新執行已經執行過的命令
    ====================================
    使用!可以實現該功能,例如你前面執行了很多命令,現在突然想執行上一次執行的./configure命令,則只需要輸入“!./con”即可而無需使用上下鍵來滾動查找。
    而!!則能代替前面一個命令。比如剛執行過一次ifconfig,輸入“!!”則等於再執行一次ifconfig。
    而且這兩個用法可以和其他命令組合,比如你剛執行過ifconfig,然後執行man !!,就等於執行man ifconfig。
    當終端出現混亂時,如何讓它恢復正常
    ====================================
    當使用stty命令而出現一些混亂或者更糟的是,使用一個程序而使終端設置完全混亂了時怎麼辦?要回到“現實”,試試下面的命令:
    stty sane
    如果擊鍵變得混亂時,試著用<CTRL+j>來把命令括起來,輸入<CTRL+j>的順序是先按下CTRL再鍵入j鍵。
    <ctrl+j>ctty sane <ctrl+j>
    這個命令不會回到先前的設置,但卻可以去除一些稀奇古怪的設置。而真正會出現什麼設置要依賴於所使用的系統,但它至少會讓你能輸入字符,並見到結果。從這裡開始,你可以把一些組合鍵設置為你所喜歡的方式。
    如何將.gz文件分割為數個1.44mb
    ====================================
    把一個文件分割到軟盤:
    tar cfvm /dev/fd0 file.tar.gz
    把軟盤上的文件合併到硬盤:
    tar xvfm /dev/fd0
    如何一次處理一整個目錄
    ====================================
    Linux/UNIX的很多常用命令如rm , cp等都有一個參數—- -r ,是遞歸的意思,命令裡加了參數-r就可以對目標目錄及其下所有子目錄進行操作,如:
    rm -rf /test (f是force意為強行)
    該命令完全刪除根目錄下的子目錄test ,作用類似於dos下的deltree ,當然使用這個命令時要特別小心。再如:
    cp -r /test /test1
    有類似dos下xcopy /s的作用。
    redhat下如何允許root通過telnet登錄?
    ====================================
    方法1:/etc/securetty (加入pts/0 、pts/1、…)
    # echo “pts/0” >> /etc/securetty
    方法2:為了在redhat linux系統中激活遠程登陸,從文件/etc/pam.d/login中移去下面這一行:
    auth required /lib/security/pam_security.so
    將/etc/securetty這個文件改名就行啦,該文件是定義root只能在tty1~tty6的終端上登錄的,詳細的信息可以”man login”。
    Linux正常重新啟動的方法有很多種,下面介紹幾種常用的重新啟動方法:
    ====================================
    Ctrl+Alt+Del
    #init 6
    #shutdown -r now
    #reboot
    為什麼我的linux不允許普通用戶登錄?
    ====================================
    以root的身份登錄系統,檢查是不是有/etc/nologin這個文件,刪除這個文件,然後再以普通用戶的身份登錄。相信問題已經解決。
    出現這種問題一般是因為系統在關閉的過程中意外中斷了操作,如斷線或者是插頭被拔了之類的意外。而係統在關閉的過程中會自動的產生這個文件,以便通知用戶系統正在關閉這就造成普通用戶無法登錄了。
    另外一種原因是系統管理員在對系統進行維護,為了維護的過程中不受其他用戶的影響,需要生成這個文件來禁止其他用戶登錄。但很不幸系統管理維護完以後忘記刪除這個文件了。
    如何改變當前路徑下所有目錄和文件的所有權
    ====================================
    改變所有子目錄及文件的所有權
    #chown -R owner[.group] *
    也可以用find命令來實現:
    #find . -exec chown owner[.group] {} ;
    改變所有子目錄及文件的屬性
    在你要改變屬性的目錄下,輸入命令:
    #chmod -R 777 *
    就可以改變下面所有子目錄及文件的屬性,不過使用這個命令的時候要特別小心,要是在根目錄下打入這個命令,你所有文件的屬性都將改變,這就會引起很大的安全性問題。
    如何快速查找文件
    ====================================
    查找文件可以用find,但最好是用locate,速度快,參數少。
    $locate filename
    它是在一個數據庫裡面查找,所以,要記得經常用updatedb命令更新數據庫。一般地,在crontab中的cron.daily腳本會執行/usr/sbin/logrotate /etc/logrotate.conf命令,讓機子在每天深夜更新數據庫。
    如何將Linux或FreeBSD複製到另一顆硬盤?
    ====================================
    Linux上的系統複製很簡單,使用cp -ax將partition資料複製過去,重開機後設定lilo就可以了。
    FreeBSD也可以用cp來複製文檔,但是對於復制整個文檔系統並不是好方法。
    這裡介紹使用dump和restore來做:
    創建新的文檔系統
    假如你的新硬盤為ad1,而將來的根分區將是ad1s1a,你可以先創建文檔系統:
    newfs /dev/ad1s1a
    mount /dev/ad1s1a /mnt
    cd /mnt
    複製:
    dump -f- / | restore -f- -r
    這是把老的根文檔系統複製輸出到管道,restore從管道裡讀數據,寫入當前目錄所在的文檔系統。
    按部就班複製其他文檔系統
    複製完後,也許要修改新硬盤下的/etc/fstab,安裝上新的分區,摘下老硬盤就可以了。
    再補充一點,如果你要復制的是另外一台機器,可以用rsh,這樣就可以通過網絡把一個分區數據傳送到另外一台機器,不需要NFS,不需SAMBA等就可以解決問題,而cp就很難作到了。
    newfs /dev/ad1s1a
    mount /dev/ad1s1a /mnt
    cd /mnt
    rsh -l yourname thathost ‘dump -f- /’ | restore -f- -r
    linux怎麼給一個普通用戶reboot權限?
    ====================================
    分四種情況討論:
    1.讓任何人(包括根本不擁有系統帳號的人)都可以通過控制台reboot
    在/etc/inittab文件中保留ca::ctrlaltdel:/sbin/shutdown -t3 -r now
    這一行。這樣全國人民都可以reboot你的機器,只要你把控制台交出來。
    2.讓所有系統用戶都可以reboot
    執行# > /etc/security/console.apps/reboot即可。這就在console.apps目錄下生成了一個空文件,文件名就是授權的application。以上路徑是針對Mandrake系統而言的,其他系統我不清楚。不過,真正高雅的Mandraker或許根本就不會去靠“>”來生成這個文件——他們會使用msec來進行控制的。
    3.讓指定的用戶才可以reboot
    假設我們要讓用戶zhizunbao擁有reboot的權限,我們靠uid/gid來完成控制:
    # groupadd reboot
    # cd /usr/local
    # mkdir reboot
    # chown root:reboot reboot/
    # chmod 750 reboot/
    # cd reboot
    # cp /sbin/reboot .
    # chmod 4755 reboot
    # usermod -G reboot zhizunbao
    現在,zhizunbao就可以運行/usr/local/reboot/reboot來重啟動機器。
    4.在一台不設普通用戶的機器上啟用口令驗證reboot
    這實際上是靠添加一個關機帳號來實現的,該帳號的shell就是加了s位的/sbin/halt,並且口令只有少數維護人員知道。我們這裡採用的就是第4套方案。
    怎樣知道自己的機器上有哪些服務在運行
    ====================================
    若一台機器運行有很多不需要的服務,那麼被攻擊者入侵的可能性就會大大加大,因此作為管理員就應該經常查看系統運行有哪些服務。
    首先查看系統運行的進程
    若需要查看系統當前運行的所有進程,就需要用如下命令:
    # ps auxw
    其中參數a表示顯示系統中所有用戶的的進程;u表示輸出進程用戶所屬信息;x表示也顯示沒有控制台的進程;若顯示行太長而被截斷則可以使用f參數;
    查看系統監聽的服務
    # netstat -ln
    l表示顯示當前系統監聽的端口信息;n表示端口按照端口號來顯示,而不轉換為service文件中定義的端口名;若希望了解各個端口都是由哪些進程監聽則可以使用p參數。
    若發現不需要的服務,可以使用linuxconf或ntsysv命令來關閉這些服務在系統啟動時自啟動,然後重新啟動系統則這些服務將在運行。
    有些服務是由inetd超級服務器來監控的,則需要標記/etc/inetd.conf來關閉這些服務。
    查詢端口對應的服務
    ====================================
    # lsof -i :端口號
    查詢此端口對應的服務。
    vi中設置自動縮進
    ====================================
    :set autoindent
    :set ai
    取消
    :set noautoindent
    :set noai
    如何使linux系統對ping不反應
    ====================================
    在linux裡,如果要想使ping沒反應也就是用來忽略icmp包。可以用:
    echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
    若想恢復就用:
    echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all
    如何實現多網卡bondin
    ====================================
    使用多塊網卡虛擬成為一塊網卡,具有相同的IP地址。這項技術其實在sun和cisco中已經存在,分別稱為Trunking和etherchannel技術,在Linux中,這種技術稱為bonding。
    因為bonding在內核2.4.x中已經包含了,只需要在編譯的時候把網絡設備選項中的Bonding driver support選中就可以了。
    然後,重新編譯核心,重新起動計算機,執行如下命令:
    ismod bonding
    ifconfig eth0 down
    ifconfig eth1 down
    ifconfig bond0 ipaddress
    ifenslave bond0 eth0
    ifenslave bond0 eth1
    現在兩塊網卡已經像一塊一樣工作了.這樣可以提高集群節點間的數據傳輸.
    你最好把這幾句寫成一個腳本,再由/etc/rc.d/rc.local調用,以便一開機就生效.
    bonding對於服務器來是個比較好的選擇,在沒有千兆網卡時,用兩三塊100兆網卡作bonding,可大大提高服務器到交換機之間的帶寬.但是需要在交換機上設置連接bonding網卡的兩個口子映射為同一個虛擬接口。