paulwong

          #

          想升iOS4.0?請備份SHSH!史上最簡單教程,越獄相關(guān)shsh備份提醒,小白必進學(xué)習(xí)AutoSHSH備份。

          在眾瘋友等待4.0的心情可以理解。但是你可以忘記早起后刷牙中午休息時吃飯下午打球后乘涼晚上睡覺前洗腳,就是別忘了備份SHSH文件! 

                按照慣例,以及個人猜測,蘋果極有可能在未來幾天內(nèi)封鎖3.1.3的SHSH文件,到時候你又覺得4.0不好或者不能越獄的時候,到哪里去大熱天裸求或者冰天雪地裸求恢復(fù)3.1.3的方法呢? 

             也許你已經(jīng)在Cydia備份,看到Cydia頂部有“This device has SHSHs file for iphone OS..... ”,但是,你不覺得多一個本地備份自己會睡得更加踏實嗎?

                無須再說,此時此刻備份SHSH沒有錯!


           

          --------------------------------我真的是分割線-------------------------------------


          此貼參考借鑒大哥RealTomandJerry精華貼:傳送門http://bbs.weiphone.com/read-htm-tid-755384-page-1.html大哥的許多貼都有很大幫助,建議大家多看看。
          其次:關(guān)于SHSH文件大小不同的解答,請移步freeos的解釋:http://bbs.weiphone.com/read-htm-tid-768883.html


          --------------------------------我真的是分割線-------------------------------------


          一.使用方法:
          ①下載此軟件:  AutoSHSH-3.1.3+3.2--RC2.rar (1187 K) 下載次數(shù):36368  
          ②給你的touch,或者3GS,或者iPad關(guān)機。注意,不是鎖屏,是持續(xù)按住關(guān)機鍵,等提示關(guān)機滑塊出現(xiàn)再移動滑塊的關(guān)機!
          ③完全關(guān)閉以后按住home鍵,就是設(shè)備正面唯一的那顆圓圓的按鍵不放,插上USB,沒過幾秒便會出現(xiàn)USB連接光盤的圖像。

          ④解壓并打開附件中的AutoSHSH軟件
           


           














           




          二.注意事項:
          ①本工具需要JAVA組件支持,無論你是什么系統(tǒng),都需要事先安裝JAVA套件,下載地址在這里:
          jre-6u17-windows-i586-s.rar (14061 K) 下載次數(shù):21152  
          謝謝第三位加分童鞋提醒:如你的系統(tǒng)是Windows xp,需要自己安裝Net.Framework。win7已經(jīng)自帶Net.Framework3.5,無需安裝。
          Net.Framework下載地址:
          http://www.microsoft.com/downloads/details.aspx?FamilyID=333325fd-ae52-4e35-b531-508d977d32a6&DisplayLang=zh-cn[/url]
          祝你成功!
          有分加分,沒分捧個人場~


          --------------------------------我真的是分割線-------------------------------------

          回第一個加分的童鞋
          此工具其實就是集成了Umbrella的更方便的提取shsh的軟件。之前版本和Umbrella沒區(qū)別,而這一次RC2區(qū)別在于可以向Cydia發(fā)送提取shsh文件的請求。
          簡而言之,就是讓Cydia也存入你的shsh文件,以后可以方便的更改74.208.10.249 gs.apple.com來恢復(fù)。而一般來說,我們要實現(xiàn)用Cydia備份shsh,前提必須越獄后才能裝Cydia,才能點紅心備份。此工具可以不越獄便讓Cydia保存你的shsh,自然很好,所以才介紹給你們。。。

          回復(fù)11樓:自然有用。當然,你也可以等spirit破解出來后裝Cydia點紅心備份,只是我擔(dān)心還等不到你用Cydia點紅心備份,3.1.3的shsh就被apple封了。那時候就晚了,以后系統(tǒng)即使破解,如果崩潰,也只有干著急。當然,你們用Umbrella備份shsh到本地也是可以的,可以用其中的Tinytss工具加載欺騙apple固件驗證,只是我在試驗的時候發(fā)現(xiàn),插上網(wǎng)線,修改hosts文件127.0.0.1 gs.apple.com可以回復(fù),拔了網(wǎng)線就不行。總而言之,多一個途徑備份shsh,多一個位置存,自然有好處。
          應(yīng)20 樓要求,添加java軟件。。
          回復(fù)第四位加分童鞋(545333):
          相當于不需要,只要到了光盤加USB那個界面,此工具會自動給你提取出ECID,就出現(xiàn)保存shsh文件的框框,你在文件名處隨便填一個名稱,選個地址,保存,然后它自動給你發(fā)送請求到Cydia,然后等一會就到你選中的本地保存位置了。



          聲明此貼特點:
          ①.此備份工具適用于備份所有系列以及所有系統(tǒng)的ipod touch,iphone,ipad。
          ②.此方法無論是否越獄都可以進行備份shsh。
          ③.如果看到備份出來的shsh文件是一個大小約63K,以shsh為后綴名的文件,說明你成功了。
          ④.此貼第一步進入光盤+USB的恢復(fù)模式與其他帖子持續(xù)按住Home鍵+關(guān)機鍵不同,只需關(guān)機狀態(tài)下,按住Home鍵不放并連接USB,可以很快進入恢復(fù)模式。如需退出,長按關(guān)機鍵關(guān)機后再開機。
          ⑤.現(xiàn)在只能備份3.1.3的shsh文件,無論你的設(shè)備是什么版本的系統(tǒng),如3.0,3.1.2系統(tǒng)等,都只能備份3.1.3的shsh。

          posted @ 2010-06-22 10:07 paulwong 閱讀(2758) | 評論 (0)編輯 收藏

          借助Spring Module項目,如何配置聲明式緩存功能實現(xiàn)

               摘要:  前言: 本文檔將講解一下,如何借助Spring Module項目,實現(xiàn)配置聲明性緩存功能。 說明: 本檔的配置經(jīng)過本人測試,都能正確運行。 運行環(huán)境: Jdk5.0, Spring-2.5, Spring-modules-0.9, ehcache-1.6.0-beta4.jar 首先創(chuàng)建一個StudentService服務(wù)類,本文將對其所有的以get* 方式命令的方法,進...  閱讀全文

          posted @ 2010-04-23 09:47 paulwong 閱讀(837) | 評論 (0)編輯 收藏

          jQuery 表格工具集

           

          本文搜集了大量 jQuery 表格插件,幫助 Web 設(shè)計者更好地駕御 HTML 表格,你可以對表格進行橫向和豎向排序,設(shè)置固定表頭,對表格進行搜索,對大表格進行分頁,對表格進行滾動,拖放操作等等。這些插件很多都包含詳細的教程。

          jQuery 表格插件

          Flexigrid – Web 2.0 Javscript Grid for jQuery - 可變列寬,自動適應(yīng)表頭寬度,可通過 Ajax 連接 XML 數(shù)據(jù)源,類似 Ext Grid,但基于 jQuery 因此更輕量小巧。

          Chromatable JQuery Plugin - 固定表頭,可滾動內(nèi)容區(qū),內(nèi)容區(qū)滾動的時候表頭位置保持不變。

          Ingrid, the jQuery Datagrid - 在 HTML 表格上加入列寬調(diào)整,分頁,排序,行列式樣等功能(演示)。

          JQTreeTable - 在表格中加入樹形結(jié)構(gòu)

          Scrollable HTML table - 將普通 HTML 表格變?yōu)榭蓾L動狀態(tài)。將表頭部分放入 THEAD 區(qū),內(nèi)容部分放入 TBODY 區(qū),腳注部分放入 TFOOT 區(qū)域,引用 webtoolkit.scrollabletable.js 文件,然后在每個表格后面創(chuàng)建 ScrollableTable() 對象即可(演示)。

          KeyTable - 象 Excel 那樣,在單元格之間巡游,可以現(xiàn)場編輯。

          graphTable - 借助 flot 將 HTML 表格中的內(nèi)容變成圖形(演示)。

          DataTables - 非常強大的 jQuery 表格插件,可變寬頁碼瀏覽,現(xiàn)場過濾。多列排序,自動探測數(shù)據(jù)類型,智能列寬,可從幾乎任何數(shù)據(jù)源獲取數(shù)據(jù)。

          jqGrid Plugin - 基于 Ajax 的 jQuery 表格插件,可以 Ajax 方式從服務(wù)器端獲取數(shù)據(jù)填充進來(演示)。

          Visualize: Accessible Charts & Graphs from Table Elements - 從 HTML 表格收集數(shù)據(jù),并借助 HTML5 Canvas 對象轉(zhuǎn)換為圖表。

          Grider - 一個簡單的 jQuery 插件,可以對 HTML 表格進行計算,平均,累加,最大值,最小值等。

          表格功能增強

          Table Drag and Drop - 通過拖放,對表格中的數(shù)據(jù)重新排列,可以設(shè)置禁止拖放的行。

          Table Pagination - 在表格下方自動生成分頁導(dǎo)航。

          tableRowCheckboxToggle - 可根據(jù) class name 對表格的行自動 check on/off

          BS Table Crosshair Plugin - 鼠標在表格上移動時,所經(jīng)過的單元格自動交叉加亮

          jqtable2csv - 將 HTML 表格轉(zhuǎn)換為 SVG 字符串。

          Colorize - 自動對表格間隔行使用不同背景顏色

          jExpand - 一個非常輕量的 jQuery 插件,可以展開/關(guān)閉表格單元格,使表格可以容納更多內(nèi)容。

          columnHover - 鼠標經(jīng)過時,可以整列加亮,甚至支持 colspans 和 rowspans

          HeatColor - 根據(jù)規(guī)則,或自動對表格中的值進行分析,對不同范圍的值按不同顏色區(qū)分。

          Fixed Header Table - 固定表頭可滾動表格

          表格搜索,篩選

          tableFilter - 給表格添加簡單的篩選功能。

          uiTableFilter - 根據(jù)條件篩選(隱藏)表格行

          Tablesorter 2.0 - 將普通的,擁有 THEAD 和 TBODY 標簽的表格轉(zhuǎn)換為可排序表格,可以分析多種數(shù)據(jù),支持多列排序。

          PicNet Table Filter - 實時的,Google 式篩選功能

          jQuery tinysort - 排序

          LiveFilter 1.1 - 非常輕量的表格篩選插件,部署非常簡單。

          jQtablesearch - 快速搜索,非常快

          Quicksearch - 簡單的搜索功能

          jQuery 現(xiàn)場編輯

          TableEditor – Flexible in place editing of TableSorter - 現(xiàn)場編輯表格內(nèi)容,用戶可以插入 Ajax 機制回存數(shù)據(jù)

          jGridEditor - 現(xiàn)場編輯,可配置 Ajax 回存數(shù)據(jù)

          本材料原始來源:Nope jQuery HTML Table Toolbox (原文作者:Paul Andrew)

          中文編譯來源:銳商企業(yè)CMS 網(wǎng)站內(nèi)容管理系統(tǒng) 官方網(wǎng)站

          posted @ 2010-04-16 11:14 paulwong 閱讀(386) | 評論 (0)編輯 收藏

          RUP

          一 前言
          軟件過程是指實施於軟件開發(fā)和維護中的階段、方法、技術(shù)、實踐及相關(guān)產(chǎn)物(計劃、文檔、模型、代碼、測試用例和手冊等)的集合。行之有效的軟件過程可以提高開發(fā)軟件組織的生產(chǎn)效率、提高軟件質(zhì)量、降低成本並減少風(fēng)險。

          RUP具有較高認知度的原因之一恐怕是因為其提出者Rational軟件公司聚集了物件導(dǎo)向領(lǐng)域三位傑出專家Booch、Rumbaugh和 Jacobson,同時它又是物件導(dǎo)向開發(fā)的行業(yè)標準語言——標準建模語言(UML)的創(chuàng)立者。RUP是由Objectory過程演化而來。本文主要討論 RUP的主要內(nèi)容和特點。

          二 RUP的二維開發(fā)模型

          RUP可以用二維坐標來描述。橫軸通過時間組織,是過程展開的生命週期特徵,體現(xiàn)開發(fā)過程的動態(tài)結(jié)構(gòu),用來描述它的術(shù)語主要包括週期 (Cycle)、階段(Phase)、迭代(Iteration)和里程碑(Milestone);縱軸以內(nèi)容來組織為自然的邏輯活動,體現(xiàn)開發(fā)過程的靜態(tài)結(jié)構(gòu),用來描述它的術(shù)語主要包括活動(Activity)、產(chǎn)物(Artifact)、工作者(Worker)和工作流(Workflow)。

          三 開發(fā)過程中的各個階段和里程碑

          RUP中的軟件生命週期在時間上被分解為四個順序的階段,分別是:初始階段(Inception)、細化階段(Elaboration)、構(gòu)建階段(Construction)和交付階段(Transition)。每個階段結(jié)束於一個主要的里程碑(Major Milestones);每個階段本質(zhì)上是兩個里程碑之間的時間跨度。在每個階段的結(jié)尾執(zhí)行一次評估以確定這個階段的目標是否已經(jīng)滿足。如果評估結(jié)果令人滿意的話,可以允許項目進入下一個階段。

          初始階段(Inception Phase)

          初始階段的目標是為系統(tǒng)建立商業(yè)案例並確定項目的邊界。為了達到該目的必須識別所有與系統(tǒng)交互的外部實體,在較高層次上定義交互的特性。本階段具有非常重要的意義,在這個階段中所關(guān)注的是整個項目進行中的業(yè)務(wù)和需求方面的主要風(fēng)險。對於建立在原有系統(tǒng)基礎(chǔ)上的開發(fā)項目來講,初始階段可能很短。

          初始階段結(jié)束時是第一個重要的里程碑:生命週期目標(Lifecycle Objective)里程碑。生命週期目標里程碑評價項目基本的生存能力。

          細化階段(Elaboration Phase)

          細化階段的目標是分析問題領(lǐng)域,建立健全的體系結(jié)構(gòu)基礎(chǔ),編製項目計劃,淘汰項目中最高風(fēng)險的元素。為了達到該目的,必須在理解整個系統(tǒng)的基礎(chǔ)上,對體系結(jié)構(gòu)作出決策,包括其範圍、主要功能和諸如性能等非功能需求。同時為項目建立支持環(huán)境,包括創(chuàng)建開發(fā)案例,創(chuàng)建模板、準則並準備工具。

          細化階段結(jié)束時第二個重要的里程碑:生命週期結(jié)構(gòu)(Lifecycle Architecture)里程碑。生命週期結(jié)構(gòu)里程碑為系統(tǒng)的結(jié)構(gòu)建立了管理基準並使項目小組能夠在構(gòu)建階段中進行衡量。此刻,要檢驗詳細的系統(tǒng)目標和範圍、結(jié)構(gòu)的選擇以及主要風(fēng)險的解決方案。

          構(gòu)建階段(Construction Phase)

          在構(gòu)建階段,所有剩餘的構(gòu)件和應(yīng)用程序功能被開發(fā)並集成為產(chǎn)品,所有的功能被詳細測試。從某種意義上說,構(gòu)建階段是一個製造過程,其重點放在管理資源及控制運作以優(yōu)化成本、進度和質(zhì)量。

          構(gòu)建階段結(jié)束時是第三個重要的里程碑:初始功能(Initial Operational)里程碑。初始功能里程碑決定了產(chǎn)品是否可以在測試環(huán)境中進行部署。此刻,要確定軟件、環(huán)境、用戶是否可以開始系統(tǒng)的運作。此時的產(chǎn)品版本也常被稱為「beta」版。

          交付階段(Transition Phase)

          交付階段的重點是確保軟件對最終用戶是可用的。交付階段可以跨越幾次迭代,包括為發(fā)佈做準備的產(chǎn)品測試,基於用戶反饋的少量的調(diào)整。在生命週期的這一點上,用戶反饋應(yīng)主要集中在產(chǎn)品調(diào)整,設(shè)置、安裝和可用性問題,所有主要的結(jié)構(gòu)問題應(yīng)該已經(jīng)在項目生命週期的早期階段解決了。

          在交付階段的終點是第四個里程碑:產(chǎn)品發(fā)佈(Product Release)里程碑。此時,要確定目標是否實現(xiàn),是否應(yīng)該開始另一個開發(fā)週期。在一些情況下這個里程碑可能與下一個週期的初始階段的結(jié)束重合。

          四 RUP的核心工作流(Core Workflows)

          RUP中有9個核心工作流,分為6個核心過程工作流(Core Process Workflows)和3個核心支持工作流(Core Supporting Workflows)。儘管6個核心過程工作流可能使人想起傳統(tǒng)瀑布模型中的幾個階段,但應(yīng)注意迭代過程中的階段是完全不同的,這些工作流在整個生命週期中一次又一次被訪問。9個核心工作流在項目中輪流被使用,在每一次迭代中以不同的重點和強度重複。

          商業(yè)建模(Business Modeling)

          商業(yè)建模工作流描述了如何為新的目標組織開發(fā)一個構(gòu)想,並基於這個構(gòu)想在商業(yè)用例模型和商業(yè)對像模型中定義組織的過程,角色和責(zé)任。

          需求(Requirements)

          需求工作流的目標是描述系統(tǒng)應(yīng)該做什麼,並使開發(fā)人員和用戶就這一描述達成共識。為了達到該目標,要對需要的功能和約束進行提取、組織、文檔化;最重要的是理解系統(tǒng)所解決問題的定義和範圍。

          分析和設(shè)計(Analysis & Design)

          分析和設(shè)計工作流將需求轉(zhuǎn)化成未來系統(tǒng)的設(shè)計,為系統(tǒng)開發(fā)一個健壯的結(jié)構(gòu)並調(diào)整設(shè)計使其與實現(xiàn)環(huán)境相匹配,優(yōu)化其性能。分析設(shè)計的結(jié)果是一個設(shè)計模型和一個可選的分析模型。設(shè)計模型是源代碼的抽像,由設(shè)計類和一些描述組成。設(shè)計類被組織成具有良好接口的設(shè)計包(Package)和設(shè)計子系統(tǒng) (Subsystem),而描述則體現(xiàn)了類的對象如何協(xié)同工作實現(xiàn)用例的功能。

          設(shè)計活動以體系結(jié)構(gòu)設(shè)計為中心,體系結(jié)構(gòu)由若干結(jié)構(gòu)視圖來表達,結(jié)構(gòu)視圖是整個設(shè)計的抽像和簡化,該視圖中省略了一些細節(jié),使重要的特點體現(xiàn)得更加清晰。體系結(jié)構(gòu)不僅僅是良好設(shè)計模型的承載媒介,而且在系統(tǒng)的開發(fā)中能提高被創(chuàng)建模型的質(zhì)量。

          實現(xiàn)(Implementation)

          實現(xiàn)工作流的目的包括以層次化的子系統(tǒng)形式定義代碼的組織結(jié)構(gòu);以組件的形式(源文件、二進制文件、可執(zhí)行文件)實現(xiàn)類和對像;將開發(fā)出的組件作為單元進行測試以及集成由單個開發(fā)者(或小組)所產(chǎn)生的結(jié)果,使其成為可執(zhí)行的系統(tǒng)。

          測試(Test)

          測試工作流要驗證對像間的交互作用,驗證軟件中所有組件的正確集成,檢驗所有的需求已被正確的實現(xiàn), 識別並確認缺陷在軟件部署之前被提出並處理。RUP提出了迭代的方法,意味著在整個項目中進行測試,從而儘可能早地發(fā)現(xiàn)缺陷,從根本上降低了修改缺陷的成本。測試類似於三維模型,分別從可靠性、功能性和系統(tǒng)性能來進行。

          部署(Deployment)

          部署工作流的目的是成功的生成版本並將軟件分發(fā)給最終用戶。部署工作流描述了那些與確保軟件產(chǎn)品對最終用戶具有可用性相關(guān)的活動,包括:軟件打包、生成軟件本身以外的產(chǎn)品、安裝軟件、為用戶提供幫助。在有些情況下,還可能包括計劃和進行beta測試版、移植現(xiàn)有的軟件和數(shù)據(jù)以及正式驗收。

          配置和變更管理(Configuration & Change Management)

          配置和變更管理工作流描繪了如何在多個成員組成的項目中控制大量的產(chǎn)物。配置和變更管理工作流提供了準則來管理演化系統(tǒng)中的多個變體,跟蹤軟件創(chuàng)建過程中的版本。工作流描述了如何管理並行開發(fā)、分佈式開發(fā)、如何自動化創(chuàng)建工程。同時也闡述了對產(chǎn)品修改原因、時間、人員保持審計記錄。

          項目管理(Project Management)

          軟件項目管理平衡各種可能產(chǎn)生衝突的目標,管理風(fēng)險,克服各種約束併成功交付使用戶滿意的產(chǎn)品。其目標包括:為項目的管理提供框架,為計劃、人員配備、執(zhí)行和監(jiān)控項目提供實用的準則,為管理風(fēng)險提供框架等。

          環(huán)境(Environment)

          環(huán)境工作流的目的是向軟件開發(fā)組織提供軟件開發(fā)環(huán)境,包括過程和工具。環(huán)境工作流集中於配置項目過程中所需要的活動,同樣也支持開發(fā)項目規(guī)範的活動,提供了逐步的指導(dǎo)手冊並介紹了如何在組織中實現(xiàn)過程。

          五 RUP的迭代開發(fā)模式

          RUP中的每個階段可以進一步分解為迭代。一個迭代是一個完整的開發(fā)循環(huán),產(chǎn)生一個可執(zhí)行的產(chǎn)品版本,是最終產(chǎn)品的一個子集,它增量式地發(fā)展,從一個迭代過程到另一個迭代過程到成為最終的系統(tǒng)。

          傳統(tǒng)上的項目組織是順序通過每個工作流,每個工作流只有一次,也就是我們熟悉的瀑布生命週期。這樣做的結(jié)果是到實現(xiàn)末期產(chǎn)品完成並開始測試,在分析、設(shè)計和實現(xiàn)階段所遺留的隱藏問題會大量出現(xiàn),項目可能要停止並開始一個漫長的錯誤修正週期。

          一種更靈活,風(fēng)險更小的方法是多次通過不同的開發(fā)工作流,這樣可以更好的理解需求,構(gòu)造一個健壯的體系結(jié)構(gòu),並最終交付一系列逐步完成的版本。這叫做一個迭代生命週期。在工作流中的每一次順序的通過稱為一次迭代。軟件生命週期是迭代的連續(xù),通過它,軟件是增量的開發(fā)。一次迭代包括了生成一個可執(zhí)行版本的開發(fā)活動,還有使用這個版本所必需的其他輔助成分,如版本描述、用戶文檔等。因此一個開發(fā)迭代在某種意義上是在所有工作流中的一次完整的經(jīng)過,這些工作流至少包括:需求工作流、分析和設(shè)計工作流、實現(xiàn)工作流、測試工作流。其本身就像一個小型的瀑布項目。

          與傳統(tǒng)的瀑布模型相比較,迭代過程具有以下優(yōu)點:

          降低了在一個增量上的開支風(fēng)險。如果開發(fā)人員重複某個迭代,那麼損失只是這一個開發(fā)有誤的迭代的花費。

          降低了產(chǎn)品無法按照既定進度進入市場的風(fēng)險。通過在開發(fā)早期就確定風(fēng)險,可以儘早來解決而不至於在開發(fā)後期匆匆忙忙。

          加快了整個開發(fā)工作的進度。因為開發(fā)人員清楚問題的焦點所在,他們的工作會更有效率。

          由於用戶的需求並不能在一開始就作出完全的界定,它們通常是在後續(xù)階段中不斷細化的。因此,迭代過程這種模式使適應(yīng)需求的變化會更容易些。

          六 總結(jié)

          RUP具有很多長處:提高了團隊生產(chǎn)力,在迭代的開發(fā)過程、需求管理、基於組件的體系結(jié)構(gòu)、可視化軟件建模、驗證軟件質(zhì)量及控制軟件變更等方面,針對所有關(guān)鍵的開發(fā)活動為每個開發(fā)成員提供了必要的準則、模板和工具指導(dǎo),並確保全體成員共享相同的知識基礎(chǔ)。它建立了簡潔和清晰的過程結(jié)構(gòu),為開發(fā)過程提供較大的通用性。但同時它也存在一些不足: RUP只是一個開發(fā)過程,並沒有涵蓋軟件過程的全部內(nèi)容,例如它缺少關(guān)於軟件運行和支持等方面的內(nèi)容;此外,它沒有支持多項目的開發(fā)結(jié)構(gòu),這在一定程度上降低了在開發(fā)組織內(nèi)大範圍實現(xiàn)重用的可能性。可以說RUP是一個非常好的開端,但並不完美。

          posted @ 2010-03-26 10:29 paulwong 閱讀(349) | 評論 (0)編輯 收藏

          RUP overview

          作者:李訓(xùn)軍博士

          隨著現(xiàn)代信息產(chǎn)業(yè)的蓬勃發(fā)展,軟件開發(fā)已經(jīng)成為一項浩大繁複的工程。 就像是建造一座宏偉的宮殿, 從計劃、設(shè)計到施工, 每一個環(huán)節(jié)都必須嚴格把關(guān), 稍有不慎, 整個工程就會失敗。 據(jù)統(tǒng)計, 僅在美國, 每年就有180,000個信息技術(shù)項目, 耗資大約$2500億美元, 其中25-30%的項目會流產(chǎn)。 由此可見, 由於管理不善和設(shè)計上的失誤所造成的損失是巨大的。現(xiàn)代軟件開發(fā)的管理和方法論顯得比以往任何時候都更為重要。

          軟件開發(fā)的過程由方法論和工具構(gòu)成(process = methodology + tools)。正如裝配電子設(shè)備一樣,僅有工具就可以勝任裝配任務(wù)。但為了減少失誤和提高效率,人們往往採用流水線作業(yè),流水線作業(yè)便是一種應(yīng)用於電子設(shè)備裝配中的方法論。目前,信息技術(shù)市場流行的方法論有RUP(Rational Unified Process), The Zachman Framework, XP (Extreme Programming)等。在這些方法論中,最流行的要數(shù)RUP。RUP是由Rational Software公司首創(chuàng)的。因它與當前流行的JAVA, J2EE技術(shù)和麵向?qū)ο蟮脑O(shè)計思想(OOAD)緊密的結(jié)合在一起,所以在大型的信息技術(shù)項目中得到了廣泛的應(yīng)用。在這篇文章中,我們試圖對RUP的特點作一個初步的探討,並且討論它是如何貫穿在整個軟件開發(fā)的生命週期之中的。

          RUP最重要的它有三大特點:1)軟件開發(fā)是一個疊代過程,2)軟件開發(fā)是由Use Case驅(qū)動的,3)軟件開發(fā)是以構(gòu)架設(shè)計(Architectural Design)為中心的。

          按照傳統(tǒng)的瀑布(Waterfall)開發(fā)模式,軟件開發(fā)大致經(jīng)歷如下幾個步驟:商務(wù)需求分析(Business Requirement Analysis),系統(tǒng)分析(System Analysis),系統(tǒng)設(shè)計(System Design),開發(fā)實現(xiàn)(Implementation),測試(Test),發(fā)佈(Deployment),系統(tǒng)支持(Supporting)和系統(tǒng)變更管理(Change Management)。傳統(tǒng)的瀑布開發(fā)模式假定在進行新的開發(fā)過程時,上一個過程已經(jīng)完成,而且不會回到上一個過程。初看起來,這似乎是一個非常合理,高效率的解決方案,但20多年的實踐證明,這個開發(fā)模式存在著很大的弊病,原因是軟件開發(fā)是一個非常複雜的工程,有諸多的因素影響工程的效率和成敗。軟件開發(fā)需要許多不同背景的個人和團隊參與。由於這些複雜性,在軟件開發(fā)的整個生命週期中每一個階段都有可能留下隱患和錯誤。如果等到系統(tǒng)已經(jīng)開發(fā)實現(xiàn)完畢,在測試階段發(fā)現(xiàn)了重大問題,這時的返工將會造成人力、物力、財力及時間上的巨大浪費。鑑於以上的考慮,RUP強調(diào)軟件開發(fā)是一個疊代模型(Iterative Model),RUP定義了四個階段(Phase):開端(Inception),闡述 (Elaboration),建造(Construction),過渡(Transition)。其中每個階段都有可能經(jīng)歷以上所提到的從商務(wù)需求分析開始的各個步驟,只是每個步驟的高峰期會發(fā)生在相應(yīng)的階段。例如開發(fā)實現(xiàn)的高峰期是發(fā)生在建造階段。實際上這樣的一個開發(fā)方法論是一個二維模型。這種疊代模型的實現(xiàn)在很大程度上提供了及早發(fā)現(xiàn)隱患和錯誤的機會,因此被現(xiàn)代大型信息技術(shù)項目所採用。

          RUP 的另一大特徵是Use Case 驅(qū)動。Use Case 是RUP方法論中一個非常重要的概念。簡單地說,一個 Use Case就是系統(tǒng)的一個功能。例如在一個基於電子商務(wù)的醫(yī)療系統(tǒng)中,病人可以坐在家裡通過網(wǎng)上瀏覽器與醫(yī)生約定看病的時間 (Make appointment),這樣,「Make appointment」就是系統(tǒng)的一個Use Case。在系統(tǒng)分析和系統(tǒng)設(shè)計中, Use Case被用來將一個複雜的龐大系統(tǒng)分割、定義成一個個小的單元,這個小的單元就是Use Case,然後以每個小的單元為對象進行開發(fā)。按照 RUP, Use Case貫穿整個軟件開發(fā)的生命週期。在商務(wù)需求分析中,客戶或用戶對Use Case進行描述,在系統(tǒng)分佈和系統(tǒng)設(shè)計過程中,設(shè)計師對Use Case進行分析,在開發(fā)實現(xiàn)過程中,開發(fā)編程人員對Use Case進行實現(xiàn),在測試過程中,測試人員對Use Case進行檢驗。

          RUP的第三大特徵是它強調(diào)軟件開發(fā)是以構(gòu)架為中心的。構(gòu)架設(shè)計(Architectural Design)是系統(tǒng)設(shè)計的一個重要組成部分。在構(gòu)架設(shè)計過程中,設(shè)計師(Architect)必須完成對技術(shù)和運行平臺的選取,整個項目的基礎(chǔ)框架(Framework)的設(shè)計,完成對公共組件的設(shè)計,如審計(Auditing)系統(tǒng),日誌(Log)系統(tǒng),錯誤處理(Exception Handling)系統(tǒng),安全 (Security)系統(tǒng)等。設(shè)計師必須對系統(tǒng)的可擴展性(Extensibility),安全性(Security),可維護性 (Maintainability),可延拓性(Scalability),可重用性(Reusability)和運行速度(Performance)提出可行的解決方案。

          在RUP方法論中,不同的角色可以從不同的側(cè)面來認識同一個項目。RUP定義了「4+1」個場景(View): Use Case場景(Use Case View),邏輯場景(Logic View),進程場景(process View),實現(xiàn)場景 (Implementation View)和發(fā)佈場景(Deployment View)。在Use Case場景中,客戶和商務(wù)分析員對 Use Case進行描述,在邏輯場景中,設(shè)計師對系統(tǒng)進行分析和設(shè)計,在進程場景中,設(shè)計師對系統(tǒng)可能出現(xiàn)的併發(fā)性,運行速度和分佈特性進行描述。實現(xiàn)場景則反映了程序開發(fā)員開發(fā)實現(xiàn)的過程。發(fā)佈場景是描述系統(tǒng)管理員和組裝人員實施系統(tǒng)發(fā)佈和管理的過程。值得強調(diào)的是,系統(tǒng)構(gòu)架的設(shè)計是在邏輯場景中描述的。

          RUP還定義了4個模型,即Use Case模型(Use Case Model),分析模型 (Analysis Model),設(shè)計模型(Design Model)和實現(xiàn)模型(Implementation Model)。Use Case模型包含Use Case Diagram和Use Case文檔。Use Case模型是其他三個模型的基礎(chǔ),分析模型即是概念模型 (Conceptual Model),是系統(tǒng)分析所得到的結(jié)果,分析模型包含了類圖(Class Diagram),次序圖 (Sequence Diagram)以及活動圖(Activity Diagram)。設(shè)計模型則是構(gòu)架設(shè)計和系統(tǒng)設(shè)計的結(jié)果。當設(shè)計模型完成後,開發(fā)編程人員便可以進行編程了。設(shè)計模型主要包含了類圖,次序圖和狀態(tài)圖(State Chart Diagrams)。分析模型和設(shè)計模型看起來有許多相似之處,但兩者的含義有本質(zhì)的區(qū)別。分析模型強調(diào)的是問題的範圍,但並不給出解決問題的方案,分析模型並不涉及具體的技術(shù)和平臺。例如它並不關(guān)心是否應(yīng)用 EJB或一般的JAVA BEANS,系統(tǒng)是安裝在WebSphere或是在WebLogic。但是與之相反,設(shè)計模型要考慮這些細節(jié),而且要提供解決這些問題的全部方案。當然設(shè)計模型是建立在分析模型之上的,分析模型中的一個類可直接映射成為設(shè)計模型中的類,但這種映射關(guān)係一般並不是一一對應(yīng)的,最後一個模型是實現(xiàn)模型。實現(xiàn)模型包含構(gòu)件圖(Component Diagram),從這個模型出發(fā),開發(fā)編程人員可以產(chǎn)生骨架源程序 (Skeleton Source Code),也可以從源程序出發(fā)更新設(shè)計模型。

          目前應(yīng)用於系統(tǒng)分析和設(shè)計的工具主要有Rational Rose和Together Software Center (TogetherJ)。JAVA和J2EE的開發(fā)工具有IBM Websphere Application Developer(WSAD), Borland Jbuilde和WebGain VisualCafe. WSAD和WebSphere Application Server應(yīng)用在一起,使得服務(wù)器端的排錯和系統(tǒng)的發(fā)布變得非常的容易。Jbuilder和VisualCafe一般與WebLogic Server緊密結(jié)合在一起。目前WebSphere Server和WebLogic Server佔據(jù)了Application Server市場的66%,其中 WebSphere Server佔據(jù)了37%,成為同類產(chǎn)品的No.1。在單位測試和集成測試中,廣泛應(yīng)用的工具和框架有Junit, JunitPerf和Cactus.。

          綜上所述,軟件開發(fā)的方法論已經(jīng)成為現(xiàn)代軟件工程過程中不可缺少的一個重要部分。是目前在Java/J2EE和麵向?qū)ο蟮拇笮晚椖恐袕V泛被採用的一種方法論。他對整個軟件開發(fā)的生命週期提供了基礎(chǔ)框架和指導(dǎo)。RUP, UML/Rational Rose, Java/J2EE, WSAD, Websphere Application Server和Oracle這樣的技術(shù)、工具和平臺的組合是目前許多公司、政府信息技術(shù)項目中採用的方案。因此,RUP的知識和經(jīng)驗也是現(xiàn)在求職市場所需求的熱門技能。

          posted @ 2010-03-25 18:17 paulwong 閱讀(315) | 評論 (0)編輯 收藏

          Javascript 篇 之 擴展String 函數(shù)

          /**
           * @brief  擴展原生字符串 
           
          */


          var StringEx = 

              
          /**
               * @brief 去除字符串前后空格
               
          */

              trim : 
          function()
              
          {
                  
          return this.replace(/(^\s*)|(\s*$)/g, "");
              }
          ,
              
              
          /**
               * @brief 去除左邊空格
               
          */

              ltrim : 
          function()
              

                  
          return this.replace(/(^\s*)/g, ""); 
              }
          ,
              
              
          /**
               * @brief 去除右邊空格
               
          */

              rtrim : 
          function()
              

                  
          return this.replace(/(\s*$)/g, "");      
              }
          ,
              
              
          /**
               * @brief 避免XSS 攻擊
               
          */

              avoidXSS : 
          function()
              
          {
                  
          var strTemp = this.replace(/&/g, "&");
                  strTemp 
          = strTemp.replace(/</g, "&lt;");
                  strTemp 
          = strTemp.replace(/>/g, "&gt;");
                  strTemp 
          = strTemp.replace(/\"/g, "&quot;");
                  return strTemp;    
              } ,
              
              /**
               * @brief 獲取字符串的字節(jié)長度 漢字默認雙字節(jié)
               */
              byteLength : function()
              {
                    return this.replace(/[^\x00-\xff]/g,
          "**").length;
              },
              
              /**
               * @brief     除去HTML標簽
               * @example    <div id=
          "test1">aaaa</div>  =>  aaaa 
               */
              removeHTML : function()
              {
                  return this.replace(/<\/?[^>]+>/gi, '');
              },
              
              /**
               * @brief      格式化字符串
               * @example 
          "<div>{0}</div>{1}".format(txt0,txt1)
               */
              format : function()
              {
                  var args = [];
                  
                  for (var i = 0, il = arguments.length; i < il; i++)
                  {
                      args.push(arguments[i]);
                  }
                  
                  return this.replace(/\{(\d+)\}/g, function(m, i)
                  {
                      return args[i];
                  });
              },
              
              /**
               * @brief 字符串轉(zhuǎn)數(shù)字
               */
              toInt : function() 
              {
                  return Math.floor(this);
              }    
          }


          for (var it in StringEx) 
          {
              String.prototype[it] = StringEx[it];
          }


          test:


              var strTest = "   -{0}這里是擴展原生字符串test{1}- ";
                      
                      alert(strTest.length);                 
          // output : 26
                      alert(strTest.ltrim().length);      // 23
                      alert(strTest.rtrim().length);      // 25
                      
                      alert(strTest.byteLength());        
          // 36
                      
                      alert(strTest.format(
          "abc","def")); //   -abc這里是擴展原生字符串testdef- 
                      
                      
          var strNumber = "89989";
                      
                      alert(
          typeof strNumber.toInt());    // number
                      
                      
          var domTest = document.getElementById("test1").outerHTML;
                      
                      alert(domTest);
                      
                      alert(domTest.avoidXSS());
                      alert(domTest.removeHTML());


          下載 string.js 及  demo 

          posted @ 2010-03-25 00:38 paulwong 閱讀(385) | 評論 (0)編輯 收藏

          Spring Security 3.x 完整入門教程(轉(zhuǎn))

               摘要: Spring Security 3.x 出來一段時間了,跟Acegi是大不同了,與2.x的版本也有一些小小的區(qū)別,網(wǎng)上有一些文檔,也有人翻譯Spring Security 3.x的guide,但通過閱讀guide,無法馬上就能很容易的實現(xiàn)一個完整的實例。 我花了點兒時間,根據(jù)以前的實戰(zhàn)經(jīng)驗,整理了一份完整的入門教程,供需要的朋友們參考。 1,建一個web project,并導(dǎo)入所有需要的l...  閱讀全文

          posted @ 2010-03-10 21:56 paulwong 閱讀(4466) | 評論 (1)編輯 收藏

          洗衣小竅門集錦(絕對值得收藏)

          (1)衣服會變黃,多半是熒光劑變?nèi)跛拢胍挛锘謴?fù)潔白亮麗,就得想法子。
          洗米水+橘子皮簡單又有效:
          保留洗米水或是將橘子皮放入鍋內(nèi)加水燒煮后,將泛黃的衣服浸泡其中搓洗就可以輕松讓衣服恢復(fù)潔白。不但簡單,也不像市面販售的熒光增白劑會對皮膚產(chǎn)生副作用且不傷衣料,是值得一試的好方法。
          流汗產(chǎn)生的黃漬,用氨水去除:
          流汗產(chǎn)生的汗?jié)n,因為含有脂肪的汗液,容易在布質(zhì)纖維內(nèi)凝結(jié),所以在洗滌時加入約2湯匙的氨水,浸泡幾分鐘后,搓洗一下,然后用清水洗凈,依照一般的洗衣程序處理,就可以將黃黃的汗?jié)n去除嘍!
          (2)有時,白色的衣服或淺顏色的衣服日久顏色會變黃,引起白色或淺色衣服泛黃的主要原因是人身體分泌的油脂,特別是聚酯面料的衣物,更易泛黃。另外還有洗滌時殘留的肥渣滓(最明顯的見于尾酮亞麻纖維),如果沒有沖洗干凈,會使衣服大面積的變黃。對于這一現(xiàn)象是有方法可以去掉的,例如在洗滌耐高溫水洗的衣服時,大量的使用清潔劑。一個傳統(tǒng)的辦法是將泛黃的衣服在烈日下懸掛暴曬,但在此之前,應(yīng)在泛黃處上新鮮的檸檬汁,再放些鹽并輕輕的揉搓。
          警告:要小心操作,避免使用氯漂劑。斯潘德克斯彈性纖維、絲綢、羊毛等面料,接觸氯漂劑會使其更黃。
          (3)如果白衣服放久衣服了就會變的發(fā)黃,上的黃污漬成分主要是蛋白質(zhì),菠菜經(jīng)過水煮後會釋出可溶解蛋白質(zhì)的成份哦。
          1.買一把菠菜, 經(jīng)過熱水滾燙後,菠菜撈起來只留下滾湯待用
          2.將有黃污漬的地方放入菠菜水中搓揉, 在浸泡10分鐘
          3.浸泡後撈起衣物, 在以正常的洗衣程序洗凈衣物.完成。衣物又恢復(fù)潔白了!
          洗衣小竅門集錦:
          1、清洗白衣、白襪
          白色衣物上的頑漬很難根除,這個時候取一個檸檬切片煮水后把白色衣物放到水中浸泡,大約15分鐘后清洗即可。
          2、清洗衣物怪味
          有時衣物因晾曬不得當,會出現(xiàn)難聞的汗酸味,取白醋與水混合,浸泡有味道的衣服大約五分鐘,然后把衣服在通風(fēng)處晾干就可以了!
          3、對付衣服上筆印
          首先將酒精倒在衣服上自來水筆的劃痕上,每一道劃痕上都要均勻的覆蓋上酒精,酒精要選用濃度不小于75%的醫(yī)藥用酒精。把衣服上倒了酒精的這一面向上放,盡量不要接觸衣服的其它面,否則鋼筆或者圓珠筆的印記顏色有可能會染到衣服的其它部分。用普通的洗臉盆,準備好大半盆水,接下來將滿滿兩瓶蓋的漂白水倒在了清水中,注意一定要是滿滿兩瓶蓋才行。捎做攪拌,之后再加少許的洗衣粉,這個量您可以自己掌握。之后也稍做攪拌,讓洗衣粉能充分溶于水中。好了,現(xiàn)在將衣服完全浸泡在水里,時間是二十分鐘。時間到了,清洗衣服,一點印記也沒有了!
          如果是圓珠筆痕跡而且痕跡較重,用上述方法后若尚存遺跡,最后用牙膏加肥皂輕輕揉搓,再用清水沖凈。(但嚴禁用開水泡!)
          衣物沾到筆圓珠筆痕跡另外還有一個辦法解決:那就是別急著把衣服下水,而是先用汽油洗一洗沾到的部分再洗。
          4、清洗衣服上的醬油漬
          辦法一:需要用到白糖。首先把沾上污漬的地方用水浸濕,然后再撒上一勺白糖,用手揉搓。我們可以看到一部分醬油跡已經(jīng)沾到了白糖上,然后用水清洗,可除去漬。
          辦法二:需要用到蘇打粉。將白背心浸濕后,在沾有醬油漬的地方涂上蘇打粉,10分鐘后用清水洗凈,即可除掉醬油漬。
          辦法三:需要用到新鮮的蓮藕,用刀把新鮮的蓮藕切開,將新鮮的蓮藕汁涂在醬油跡處,10分鐘后在水中清洗,可除掉醬油漬。
          5、清洗衣服上油漆
          衣服上蹭到油漆該怎么辦呢?方法就是把清涼油抹到粘有油漆的部位,因為清涼油里所含的物質(zhì)可溶解油漆,之后在沖洗干凈即可。若沾上水溶性漆(如水溶漆、乳膠漆)及家用內(nèi)墻涂料,及時用水一洗即掉;若尼龍織物被油漆沾污,可先涂上豬油揉搓,然后用洗滌劑浸洗,清水漂凈。
          6、清洗草漬
          您需要準備一百克食鹽,另外您還需要準備1000克清水。把水倒入容器中,用手攪勻,將沾有草漬的衣服放入盆中,在鹽水中泡10分鐘。將衣服入在水中清洗,這時您會發(fā)現(xiàn),輕輕松松就可以把頑固的草漬洗掉了。
          7、清洗染色衣服
          在洗衣機里放入溫水,啟動洗衣機進行漂洗,加入84消毒液,半缸水加大約三分之一瓶消毒液,溶解稀釋,放入衣服,蓋上機蓋,漂洗大約25分鐘, 25分鐘后撈出衣物,衣服晾干后,就回復(fù)原來的顏色了。
          如果想避免衣服不掉色,剛買回來的新衣衣,必須在水里放些鹽(一桶水一小匙),洗后要馬上用清水漂洗干凈,不要泡太久哦!最后,不要在陽光下曝曬,陽光會使染料變性的哦。應(yīng)放在陰涼通風(fēng)處晾干。
          8、清洗血跡
          剛沾染上時,應(yīng)立即用冷水或淡鹽水洗(禁用熱水,因血內(nèi)含蛋白質(zhì),遇熱會凝固,不易溶化),再用肥皂或10%的碘化鉀溶液清洗;
          用白蘿卜汁或搗碎的胡蘿卜拌鹽皆可除去衣物上的血跡;
          用10%的酒石酸溶液來揩拭沾污處,再用冷水洗凈;
          用加酶洗衣粉除去血漬,效果甚佳;
          若沾污時間較長,可用10%的氨水或3%的雙氧水揩拭污處,過一會兒,再用冷水強洗。
          如仍不干凈,再用10-15%的草酸溶液洗滌,最后用清水漂洗干凈。
          無論是新跡,陳跡,均可用硫磺皂揉搓清洗。
          用搽手油涂抹在血跡上,停留15分鐘左右的時間,在用清水肥皂清洗即可。
          9、輕松洗掉衣服上的霉點
          由于天氣悶熱空氣潮濕,或換季的時候,洗過的衣服很容易長霉點,特別是白色的衣服,一旦長上霉點,是很郁悶的事情。
          沒關(guān)系,對付這些霉點,也有很多的方法:
          綠豆芽;把嫩嫩的綠豆芽放在霉點上,雙手使勁搓揉,是不是干凈了一些呢?再放一些綠豆芽接著搓,哼哼,顏色又淺了很多,再搓,功夫不負有心人,霉點沒有了,最后再用清水沖洗,哈哈,就這么簡單,問題迎刃而解;
          衣物上的霉斑可先在日光下暴曬,后用刷子清霉毛,再用酒精洗除;
          把被霉斑污染的衣服放入濃肥皂水中浸透后,帶著皂水取出,置陽光下曬一會,反復(fù)晾曬幾次,待霉斑清除后,再用清水漂凈;
          絲綢衣物可用檸檬酸洗滌,后用冷水洗漂;
          麻織物的霉?jié)n,可用氯化鈣液進行清洗;
          毛織品上的污漬還可用芥末溶液或硼砂溶液(一桶水中加芥末二湯匙或硼砂二湯匙)清洗;
          用2%的肥皂酒精溶液(250克酒精內(nèi)加一把軟皂片、攪拌均勻)擦拭,然后用漂白劑3-5%的次氯酸鈉或用雙氧水擦拭,最后再洗滌。這種方法限用于白色衣物,陳跡可在溶液中浸泡1小時。
          10、清洗紅、紫藥水
          紅藥水漬可先用白醋洗,然后用清水漂凈;
          另外可先將紅藥水污處浸濕后用甘油刷洗,再用含氨皂液反復(fù)洗,若加入幾滴稀醋酸液,再用肥皂水洗,效果更佳;
          處理紫藥水漬,可將少量保險粉用開水稀釋后,用小毛刷蘸該溶液擦拭。反復(fù)用保險粉及清水擦洗,直至除凈(毛粘料、改染衣物、絲綢及直接染料色物禁用哦!!)
          11、清洗膏藥
          有時衣衣蹭上了膏藥可以用酒精加幾滴水(或用高梁酒亦可),放在沾有膏藥漬的地方搓揉,待膏藥去凈,再用清水漂洗,或用焙過的白礬末揉,再用水洗亦可;
          也可用食用堿面撒于污處,加些溫水,揉搓幾次,即可除去。若將堿面置鐵勺內(nèi)加熱后撒至污處,再加溫水揉洗,去污更快。
          12、清洗泛黃的衣服
          其實,衣服會變黃,多半是熒光劑變?nèi)酰胍挛锘謴?fù)潔白亮麗,就得想法子。
          洗米水+橘子皮簡單又有效:
          保留洗米水或是將橘子皮放入鍋內(nèi)加水燒煮后,將泛黃的衣服浸泡其中搓洗就可以輕松讓衣服恢復(fù)潔白。不但簡單,也不像市面販售的熒光增白劑會對皮膚產(chǎn)生副作用且不傷衣料,是值得一試的好方法;
          流汗產(chǎn)生的黃漬,用氨水去除:流汗產(chǎn)生的汗?jié)n,因為含有脂肪的汗液,容易在布質(zhì)纖維內(nèi)凝結(jié),所以在洗滌時加入約2湯匙的氨水,浸泡幾分鐘后,搓洗一下,然后用清水洗凈,依照一般的洗衣程序處理,就可以將黃黃的汗?jié)n去除嘍!
          13、清洗啤酒、黃酒漬
          新染上的污跡,放清水中立即搓洗即掉。
          陳跡可先用清水洗滌后,再用2%氨水和硼砂混合液揉洗,最后用洗水漂洗干凈;黃酒的陳跡,在用清水洗后,再用5%的硼砂溶液及3%雙氧水揩拭污處,最后用清水漂凈。
          14、清洗果汁印
          新漬可用濃鹽水揩拭污處,或立即把食鹽撒在污處,用手輕搓,用水潤濕后浸入洗滌劑溶液中洗凈,也可用溫水搓肥皂強力洗除;
          重跡及陳跡清除后,可先用5%的氨水中和果汁中的有機酸,然后再用洗滌劑清洗。對含羊毛的化纖混紡物可有酒石酸清洗;
          如織物為白色的,可在3%的雙氧水里加入幾滴氨水,用棉球或布塊蘸此溶液將沾污處潤濕,再用干凈布揩擦、陰干;
          用3-5%的次氯酸鈉溶液揩拭沾污處,再用清水漂凈。若是陳跡,可將其浸泡在該溶液中過1-2個小時后,再刷洗、漂凈;
          對桃汁跡,因其中含有高價鐵,所以可用草酸溶液除之。對柿子漬,立即用葡萄酒加濃鹽水揉搓,再用溫洗滌劑溶液清洗,清水漂凈;
          番茄醬可先刮去干跡,用溫洗滌劑清洗。果醬可用水潤濕后拿洗發(fā)香波刷洗,再用肥皂酒精液洗,清水沖凈。
          15、清洗鐵銹
          干家務(wù)活是不是經(jīng)常碰到這個?
          取鮮檸檬,可榨出其汁液滴在銹漬上用手揉擦之,反復(fù)數(shù)次,直至銹漬除去,再用肥皂水洗凈。
          16、清洗碘酒
          對碘酒漬可先用淀粉浸濕揉擦(淀粉遇碘立即呈黑色),再用肥皂水輕輕洗去。
          淡的碘漬可用熱水或酒精,也可用碘化鉀溶液搓拭。濃漬可浸入15-20%的大蘇打溫?zé)岬娜芤褐校s2小時左右,再用清水漂洗。
          17、清洗印油印
          當毛料或布料沾上印油時,應(yīng)先用熱水或開水沖洗,然后用肥皂水搓洗,再用清水漂凈,即可干凈。千萬不要用涼水洗,因為這會使顏色浸入纖維,很難再洗凈。
          18、清洗黃油印
          因黃油漬的主要成分是脂肪,可用酒精或氨水再進行洗除。
          19、清洗口紅印
          需要化妝的JM,估計最怕就是脫衣服是蹭到口紅印啦;
          如染上口紅印,可先用小刷蘸汽油輕輕刷擦,去凈油脂后,再用溫洗滌劑溶液洗除;
          如果沒有汽油也可以用氣泡式礦泉水或是調(diào)酒用的蘇打水,倒在干凈的布上輕拍有印痕的地方,很有效喔!
          20、清洗茶、咖啡漬
          被茶、咖啡這些飲料污染的衣服,可立即用70-80%的熱水洗滌,便可除去。
          舊茶跡,可用濃食鹽水浸洗,或用氨水與甘油混合液(1:10)揉洗。絲和毛織物禁用氨水,可用10%的甘油溶液揉搓,再用洗滌劑洗后用水沖凈。
          舊茶及咖啡跡,可用甘油和蛋黃混合溶液擦拭,稍干后用清水漂凈。或在污漬處涂上甘油,再撒上幾粒硼砂,用開水浸洗。亦可用稀釋的氨水、硼砂加溫水擦拭。
          舊咖啡跡可用3%的雙氧水溶液揩拭,再以清水洗凈,亦可用食鹽或甘油溶液清洗。
          21、去除蠟燭油
          先用小刀輕輕刮去表面蠟質(zhì),然后用草紙兩張分別托在污漬的上下,用熨斗熨兩三次,用熨斗的熱量把布纖維內(nèi)的蠟質(zhì)熔化,熔化的蠟油被草紙吸收掉。反復(fù)數(shù)次,蠟燭油印即可除凈。
          22、去處口香糖:
          黏到口香糖的衣服,可以用棉花沾醋,輕輕松松就可以把口香糖擦掉了;
          對衣物上的口香糖膠跡,可先用小刀刮去,取雞蛋清抹在遺跡上使其松散,再逐一擦凈,最后在肥皂水中清洗,清水洗凈;
          還可以先把衣服用塑料袋包好,放到冰箱中冷凍半天,等衣服上的口香糖變硬了取出來,輕輕揉搓,口香糖很快就掉了,而且一點痕跡也沒有!
          23、巧洗白球鞋
          提到白球鞋,您可能也有過同樣的煩惱――辛苦洗干凈的白球鞋曬干后卻出現(xiàn)這樣黃黃的印記,真難看啊!不妨試試熱心觀眾于小姐提供的這個竅門,讓白球鞋洗后依舊亮白如新吧!
          先用肥皂或洗衣粉將鞋子洗刷干凈,把洗好的球鞋浸泡在啤酒中三分鐘 ,然后把球鞋拿到陽臺,放在陰涼處,并且在鞋面上用衛(wèi)生紙蓋上,晾! 效果顯而易見哦!
          24、巧洗毛巾
          毛巾使用久了,常常會濕濕黏黏的,可用鹽搓揉后,用清水洗凈,則可除去濕黏之物。
          25、去除鋼筆漬
          網(wǎng)上有朋友留言問“怎樣去除鋼筆漬”,如下,供參考:
          從化工商店買一點兒草酸(顆粒狀),將染有鋼筆漬的衣服用溶解草酸的水浸泡搓洗,可去處痕跡。由于草酸屬于弱酸,不會腐蝕衣物。

          posted @ 2010-02-23 20:12 paulwong 閱讀(187) | 評論 (0)編輯 收藏

          Java實現(xiàn)遠程屏幕監(jiān)視(轉(zhuǎn))

          遠程屏幕監(jiān)視使得控制方可以在遠程主機上監(jiān)視其它一臺機器,其主要實現(xiàn)原理就是將被控制機器的屏幕作為圖片傳送給監(jiān)視方,在Java中要實現(xiàn)遠程屏幕監(jiān)視,主要解決以下幾個問題即可:
          1:將當前屏幕的顯示內(nèi)容捕捉為圖片
          2:將捕捉的圖片發(fā)送到遠程控制主機
          3:遠程控制主機接收到在本地顯示
          4:利用多線程重復(fù)上面三步達到實時更新

          說起來怎么這么簡單啊,今天試著做了一下遠程屏幕監(jiān)視的實驗,發(fā)現(xiàn)還真不是這么簡單的,把我的心得總結(jié)出來共享一下,希望對你有用。

          將當前屏幕顯示內(nèi)容捕捉為圖片

          1Robot robot = new Robot();
          2//要捕捉的屏幕顯示范圍,下面以全屏示例說明
          3Rectangle rect = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());
          4BufferedImage bm = robot.createScreenCapture(rect);

          通過上面幾行代碼就把屏幕的當前顯示內(nèi)容保存為內(nèi)存中的BufferedImage對象,這個確實簡單.

          將捕捉的圖片發(fā)送到遠程控制主機
          要達到實時監(jiān)控,怎么保證發(fā)送效率,在網(wǎng)絡(luò)狀況不良好時怎么保證發(fā)送時使用帶寬
          因為要不停地往控制機上發(fā)送圖片,所以傳送的圖片不能太大,否則會影響實時性,當網(wǎng)絡(luò)狀況不好時,占用帶寬過多則更加會給實時性帶來嚴峻的考驗,解決的方法有兩個:
          1:使用jpg格式的圖片進行傳輸。
          jpg是一種支持高度壓縮技術(shù)的圖片格式,它所存儲的信息不包含透明度,同等質(zhì)量的情形下相對來說比png,gif等格式的圖片要小很多,當然,文件大小是以圖像質(zhì)量為代價的,如果你一味地追求壓縮后的大小,圖像質(zhì)量就會受損了。我在實驗中使用大小為28394字節(jié)的png圖片經(jīng)過jpg壓縮后大小僅剩5815字節(jié)(不是PS,整個過程全部使用Java完成)。
          2:將用圖片生成的字節(jié)數(shù)據(jù)先壓縮再傳送。
          這一步是仁者見仁,智者見智了,有人說沒有必要,jgp格式的圖片再壓縮也小不了多少。確實是這樣的,我在實驗中把5815字節(jié)大小的jpg經(jīng)過zip壓縮后為大小變?yōu)?702,有點小作用,實際應(yīng)用中壓縮與否就看你了(壓縮其它格式的圖片效果可能會明顯一點,我在實驗中把一個大小為883078字節(jié)的bmp圖片壓縮后大小僅為16849字節(jié),很可觀,達到了52:1)。

          我能想到的就是這兩點了,歡迎各位仁智雙全的人補充。下面就是這兩點用到的Java技術(shù),Java高手就直接跳過吧。

          使用Java將圖片處理成jpg格式
          1//outputstream就是要寫入處理后的jpg圖片的輸出流,要保存到文件的話就用FileOutputStream
          2JPEGCodec.createJPEGEncoder(outputstream).encode(bm);
          3ImageIO.write(bm, "jpg", outputstream);

          這兩種方法有什么差別呢?別的我不知道,就平均效率來說,第二種是第一種的2倍,我實驗中轉(zhuǎn)換了10次,使用的時間分別是125和250(單位是百分之一毫秒,機子有點慢的說).

          把圖片數(shù)據(jù)轉(zhuǎn)換為字節(jié)數(shù)組
          1ByteArrayOutputStream bos = new ByteArrayOutputStream();
          2JPEGCodec.createJPEGEncoder(bos).encode(bm);
          3// 上句也可以用 ImageIO.write(bm, "jpg", bos)實現(xiàn)
          4bos.flush();
          5byte[] data = bos.toByteArray();

          將生成的字節(jié)數(shù)組進行zip壓縮
          1ZipOutputStream zos = new ZipOutputStream(bos);
          2zos.setLevel(Deflater.BEST_COMPRESSION);
          3//下面我以ScreenCapture.jpg說明
          4zos.putNextEntry(new ZipEntry("ScreenCapture.jpg"));
          5zos.write(data);
          6zos.closeEntry();

          好了,這個時候就可以把字節(jié)數(shù)組發(fā)往監(jiān)控機器了,如果你發(fā)了,你就知道,問題又來了(不會吧!)。
          1:既然是采用多線程發(fā)送多張圖片,那么對于一張圖片,接收方怎么知道你發(fā)完了呢?
          2:如果要發(fā)其它的數(shù)據(jù),比如鼠標點擊等,接收方又怎么區(qū)分什么時候發(fā)的是圖片,什么時候發(fā)的是其它的……

          對于這兩點問題,最直接的解決方法是當數(shù)據(jù)發(fā)送完成后關(guān)閉發(fā)送字節(jié)的輸出流,第二次發(fā)送時重新建立連接(網(wǎng)上確實有人這樣肆無忌憚地做),這種方法采用不采用就看良心了(汗)。我采用的解決方法是,每次發(fā)送數(shù)據(jù)前都告訴接收方要發(fā)什么東西(解決問題2),同時告訴它我發(fā)了多少字節(jié)(解決問題1),接收方只要接收了這么多字節(jié)數(shù),就表示本次發(fā)送完成,最后再發(fā)送真正要發(fā)送的內(nèi)容(圖片等),說簡單點就是,發(fā)送的消息結(jié)構(gòu)如下:
          【標識位 大小 消息】 
          標識位:采用一個整型,其實是一個byte,占一個字節(jié)
          大小:一個整型,占四個字節(jié)
          消息:實際要發(fā)送的字節(jié)數(shù)組,長度就是字節(jié)數(shù)組的長度
          這樣接收方每次都是先讀取一個整數(shù),判斷發(fā)送方是要發(fā)送什么消息,然后再判斷消息的大小,然后再接收指定大小的消息,最后完成本次發(fā)送轉(zhuǎn)入下一次接收工作。

          采用Socket的方式進行消息的發(fā)送
          1DataOutputStream dos = new DataOutputStream(client.getOutputStream());
          2//SEND_IMAGE_SYMBOL是一個標識位,你隨便定義,只要保證能與其它標識位區(qū)分就行
          3dos.write(SEND_IMAGE_SYMBOL);
          4
          5dos.writeInt(data.length);
          6dos.write(data);
          7dos.flush();

          啊,真不容易,終于發(fā)送出去了!不知道那邊接收到了沒有?那現(xiàn)在就去追蹤報道吧。


          遠程控制主機接收消息 
           1//先要判斷消息的類型
           2DataInputStream reader = new DataInputStream(socket.getInputStream());
           3int msgSymbol = reader.read();
           4//還記得這個SEND_IMAGE_SYMBOL嗎
           5if (msgSymbol == SEND_IMAGE_SYMBOL)
           6{
           7    //哦,是要發(fā)送圖片啊。讓我看看你的圖片有多大
           8    int msgSize = reader.readInt();
           9
          10    //暈,你網(wǎng)速好也不用發(fā)這么大吧,我一次接收不完的,不過幸好我有準備
          11    byte[] buffer = new byte[msgSize];
          12    int length = 0;
          13
          14    while (length < msgSize)
          15    {
          16        int readSize = reader.read(buffer, length, msgSize - length);
          17
          18        if (readSize > 0)
          19        {
          20            length = length + readSize;
          21        }

          22        else
          23        {
          24            break;
          25        }

          26    }

          27    //這是非常關(guān)鍵的,圖片太大時一次性是讀不完的,一定要使用緩沖重復(fù)讀取。
          28
          29    //人家給我發(fā)送的消息是圖片,怎么把字節(jié)數(shù)組還原成圖片呢?
          30    ByteArrayInputStream bis = new ByteArrayInputStream(buffer);
          31    ZipInputStream zis = new ZipInputStream(bis);
          32    //讀取壓縮的數(shù)據(jù)內(nèi)容。
          33    ZipEntry ze = zis.getNextEntry();
          34    BufferedImage bi = ImageIO.read(zis);
          35    //或者BufferedImage bi = JPEGCodec.createJPEGDecoder(zis).decodeAsBufferedImage();
          36    //上面兩行代碼的差別已經(jīng)說過了
          37    //另外,如果在發(fā)送的時候你沒有進行壓縮,把上面的zis換成bis就行。
          38
          39
          40    //有了BufferedImage對象,剩下的就是把它顯示出來了進行遠程"偷窺",任何一個支持圖片顯示的swing組件你都以用,我在實驗中用的是JPanel,一個簡單又支持雙緩沖的組件。
          41}


          最后,就是使用多線程重復(fù)上面的步驟進行實時監(jiān)控了。有什么問題歡迎指正。

          本次實驗進行的還算成功,成功偷窺了自己的桌面。謝謝你堅持看完我這么爛的文章,向你致敬!


          下面是本次實驗的運行圖:


          本文所使用的源代碼:  源代碼下載

          posted @ 2010-02-10 23:45 paulwong 閱讀(464) | 評論 (0)編輯 收藏

          掃盲加扯淡——網(wǎng)友隨筆畫之云計算

               摘要: 今天在論壇看到網(wǎng)友自創(chuàng)的漫畫,也許就是隨筆畫畫吧, 且不說這位網(wǎng)友是否真的理解云計算(老實說,我也不清楚云計算是什么。),但確實是這位網(wǎng)友還是很有才的,能把自己的看法用這種形式表達出來,已經(jīng)很難為可貴了。

          “我看了N多的相關(guān)介紹也找不到一個好的解釋,應(yīng)該說是我看不懂吧。

          誰給個簡單通俗點的解釋啊

          我看了大概就像是網(wǎng)絡(luò)硬盤吧可以上傳電腦備份和文件的還可以在線編輯本人啥的,沒啥特別的啊不是已經(jīng)實現(xiàn)了,只覺的現(xiàn)在大頭就是想把他們規(guī)劃下罷了,
          沒啥特別的怎么那么多公司參與呢”
          網(wǎng)絡(luò)硬盤不是云計算。
          ————————
          什么是云計算呢?
          最開始,人們使用算盤。

            閱讀全文

          posted @ 2010-01-29 00:27 paulwong 閱讀(389) | 評論 (0)編輯 收藏

          僅列出標題
          共115頁: First 上一頁 100 101 102 103 104 105 106 107 108 下一頁 Last 
          主站蜘蛛池模板: 珲春市| 肇源县| 鄂托克旗| 平塘县| 香格里拉县| 抚松县| 襄垣县| 乳源| 东阿县| 天峨县| 白水县| 揭西县| 台东县| 永康市| 新丰县| 金昌市| 浦北县| 南川市| 贺州市| 孙吴县| 增城市| 金华市| 乐亭县| 积石山| 柏乡县| 随州市| 永顺县| 博野县| 正安县| 德惠市| 裕民县| 郎溪县| 海兴县| 澄迈县| 玛曲县| 临沭县| 彭阳县| 通榆县| 无锡市| 望奎县| 舒兰市|