<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    紫風(fēng)亂寫(xiě)

    除了他眼前的屏幕,這個(gè)人什么也沒(méi)看見(jiàn)。
    被周?chē)碾娔X簇?fù)碇恢浪鶆?chuàng)造的現(xiàn)實(shí),但又意識(shí)到那是虛幻。
    他已經(jīng)超越了技術(shù)。也超越了機(jī)器。
    posts - 62, comments - 93, trackbacks - 0, articles - 0
      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    2006年3月30日

    有這么一種神器,英文叫做reference card, 中文我不知道叫什么,就作用來(lái)說(shuō),可以叫做快捷鍵一頁(yè)紙,可以打印出來(lái),放在案頭,然后可以隨時(shí)查閱。百度不容易找到,用谷歌的話可以使用reference card作為關(guān)鍵字查找。

    下面是幾個(gè)例子
    Eclipse 4.6: https://github.com/pellaton/eclipse-cheatsheet/raw/master/eclipse4.6/eclipse-shortcuts-4.6.0.pdf
    Intellij IDEA: https://resources.jetbrains.com/assets/products/intellij-idea/IntelliJIDEA_ReferenceCard.pdf
    Emacs: https://www.gnu.org/software/emacs/refcards/pdf/refcard.pdf
    Org-Mode: https://www.gnu.org/software/emacs/refcards/pdf/orgcard.pdf

    posted @ 2016-06-05 14:08 Justfly Shi 閱讀(527) | 評(píng)論 (0)編輯 收藏

         摘要: Emacs Tutorial中提到的快捷鍵以及自己找的一些快捷鍵  閱讀全文

    posted @ 2016-06-02 02:16 Justfly Shi 閱讀(343) | 評(píng)論 (0)編輯 收藏

    修改內(nèi)容:

    posted @ 2015-12-05 21:28 Justfly Shi 閱讀(1956) | 評(píng)論 (0)編輯 收藏


    修改內(nèi)容:

    • 添加BeanQuery.nested()方法,調(diào)用該方法后,具有同樣前綴的屬性或者別名會(huì)被放到一個(gè)Map中返回,詳情請(qǐng)看Allow format result into a map
    • BeanQuery.selectBean方法標(biāo)為@deprecated,并添加同一樣功能的方法,命名為BeanQuery.select

    posted @ 2015-12-05 20:48 Justfly Shi 閱讀(2838) | 評(píng)論 (0)編輯 收藏

         摘要: 在我看來(lái),干活有兩種方式:

    1. 沒(méi)想清楚了,貿(mào)貿(mào)然開(kāi)干,然后各處救火各種解決問(wèn)題
    2. 想清楚了再開(kāi)干,無(wú)驚無(wú)險(xiǎn),安然做完

    本文講講如何在設(shè)計(jì)中系統(tǒng)的思考以避免內(nèi)存溢出,并給出一個(gè)例子講解。  閱讀全文

    posted @ 2015-06-08 19:13 Justfly Shi 閱讀(3975) | 評(píng)論 (4)編輯 收藏

    5月初的時(shí)候,我發(fā)了一個(gè)帖子說(shuō)要開(kāi)始講單元測(cè)試,但是20多天過(guò)去了,為什么沒(méi)有更新呢?
    原因就是我在做視頻公開(kāi)課,發(fā)現(xiàn)光文字表現(xiàn)的話比較費(fèi)勁,所以我決定錄制視頻,做成公開(kāi)課。

    第一個(gè)錄制的是JUnit技術(shù),課程地址:http://edu.csdn.net/course/detail/908 歡迎大家觀后留言探討哦。

    posted @ 2015-05-26 22:25 Justfly Shi 閱讀(1633) | 評(píng)論 (4)編輯 收藏

         摘要: 從04年開(kāi)始,我就開(kāi)始在項(xiàng)目實(shí)踐中使用單元測(cè)試。十幾年來(lái),參與的項(xiàng)目基本上都或多或少的使用了單元測(cè)試,多的能有100%覆蓋率的要求,少的也要覆蓋主要代碼,發(fā)現(xiàn)這個(gè)實(shí)踐在提高軟件質(zhì)量和開(kāi)發(fā)速度上還是很有好處的。在和朋友同事的交流中,發(fā)現(xiàn)有很多項(xiàng)目沒(méi)有使用單元測(cè)試,也有很多程序員不會(huì)寫(xiě)單元測(cè)試,但是大家對(duì)這個(gè)都很有興趣。所以我想把自己掌握的關(guān)于單元測(cè)試的技能(架構(gòu)、設(shè)計(jì)和技術(shù))和實(shí)施策略分享一下。  閱讀全文

    posted @ 2015-05-05 00:33 Justfly Shi 閱讀(6045) | 評(píng)論 (4)編輯 收藏

    代碼地址:https://github.com/Jimmy-Shi/bean-query/tree/bean-query-1.1.1

    修改內(nèi)容:
    • 簡(jiǎn)化用戶自定義轉(zhuǎn)換
    例子:
    List<String> bookNames=select(new DefaultSelector<String>() {
          @Override
          public String select(Object item) {
            return ((Book)item).getName();
          }
        }).executeFrom(bookCollection);

    在Maven項(xiàng)目中引用:
    <dependency>
      <groupId>cn.jimmyshi</groupId>
      <artifactId>bean-query</artifactId>
      <version>1.1.1</version>
    </dependency>

    posted @ 2014-11-23 00:02 Justfly Shi 閱讀(1243) | 評(píng)論 (2)編輯 收藏

    Bean Query是一個(gè)開(kāi)源的Java工具包,它復(fù)用Apache Commons BeanUtilsApache Commons CollectionsJava Hamcrest 來(lái)簡(jiǎn)化對(duì)Bean(集合)的排序,過(guò)濾和轉(zhuǎn)換。

    項(xiàng)目地址:

    https://github.com/Jimmy-Shi/bean-query

    http://git.oschina.net/jimmyshi/bean-query

    修改內(nèi)容:

    • 支持用戶自定義排序
    • 支持用戶自定義轉(zhuǎn)換
    • 支持對(duì)一個(gè)對(duì)象進(jìn)行轉(zhuǎn)換和過(guò)濾
    • 提供了完整的使用說(shuō)明文檔

    在Maven項(xiàng)目中引用:

    <dependency>
      <groupId>cn.jimmyshi</groupId>
      <artifactId>bean-query</artifactId>
      <version>1.1.0</version>
    </dependency>

    posted @ 2014-11-21 22:58 Justfly Shi 閱讀(8434) | 評(píng)論 (2)編輯 收藏

    修改內(nèi)容:
    在Maven項(xiàng)目中引用
    <dependency>
      <groupId>cn.jimmyshi</groupId>
      <artifactId>bean-query</artifactId>
      <version>1.0.1</version>
    </dependency>

    posted @ 2014-11-03 21:56 Justfly Shi 閱讀(5552) | 評(píng)論 (3)編輯 收藏

    BeanQuery 是一個(gè)把對(duì)象轉(zhuǎn)換為Map的Java工具庫(kù)。支持選擇Bean中的一些屬性,對(duì)結(jié)果進(jìn)行排序和按照條件查詢。不僅僅可以作用于頂層對(duì)象,也可以作用于子對(duì)象。更多詳細(xì)的介紹可以看我的博文: http://www.tkk7.com/justfly/archive/2014/10/26/419067.html

    我剛剛發(fā)布了版本1.0.0. 現(xiàn)在已經(jīng)在Sonatype OSS庫(kù)上了,2個(gè)小時(shí)后將會(huì)被同步到Maven中央庫(kù)上。

    Sonatype OSS 庫(kù)下載地址: https://oss.sonatype.org/content/groups/public/cn/jimmyshi/bean-query/1.0.0/

    Github上的代碼: https://github.com/Jimmy-Shi/bean-query/tree/bean-query-1.0.0

    在Maven項(xiàng)目中引用

    <dependency>
      <groupId>cn.jimmyshi</groupId>
      <artifactId>bean-query</artifactId>
      <version>1.0.0</version>
    </dependency>

    posted @ 2014-10-29 02:24 Justfly Shi 閱讀(4464) | 評(píng)論 (0)編輯 收藏

         摘要: BeanQuery 是一個(gè)把對(duì)象轉(zhuǎn)換為Map的Java工具庫(kù)。支持選擇Bean中的一些屬性,對(duì)結(jié)果進(jìn)行排序和按照條件查詢。不僅僅可以作用于頂層對(duì)象,也可以作用于子對(duì)象。

    BeanQuery的使用非常簡(jiǎn)單也很直接  閱讀全文

    posted @ 2014-10-26 23:33 Justfly Shi 閱讀(5510) | 評(píng)論 (6)編輯 收藏

         摘要: 作為一個(gè)程序員,我們的日常工作之一就是看Log,從Log中發(fā)現(xiàn)自己所需要的信息,以及對(duì)Log做一些簡(jiǎn)單的分析和統(tǒng)計(jì)。本文分享了我所使用的工具和方法。  閱讀全文

    posted @ 2014-09-17 23:00 Justfly Shi 閱讀(2802) | 評(píng)論 (6)編輯 收藏

         摘要: 本文介紹了在代碼中應(yīng)該在什么時(shí)候需要Log什么信息;使用何種級(jí)別的Log;如何Log異常信息;Log中的一些要點(diǎn)。另外也分析了靜態(tài)Logger變量和對(duì)象Logger變量的優(yōu)劣。  閱讀全文

    posted @ 2014-08-13 23:32 Justfly Shi 閱讀(25942) | 評(píng)論 (7)編輯 收藏

         摘要: 作為《Java程序員修煉之道》博文的第一個(gè)主題Logging,我計(jì)劃中按照如下三篇來(lái)寫(xiě): 1. Logback的簡(jiǎn)單介紹和配置 2. 在Java代碼中如何使用SLF4J來(lái)寫(xiě)日志以及寫(xiě)日志的要點(diǎn) 3. 作為一個(gè)程序員,在日常工作中如何分析和挖掘Log。 這個(gè)是第一篇,簡(jiǎn)單介紹一下Logback的配置,適用于開(kāi)始配置和開(kāi)始入門(mén),適用于一般情況下的使用。  閱讀全文

    posted @ 2014-08-10 02:46 Justfly Shi 閱讀(19797) | 評(píng)論 (1)編輯 收藏

         摘要: 后來(lái)我意識(shí)到,我不能只抱怨,作為一個(gè)寫(xiě)了10多年代碼,帶過(guò)項(xiàng)目、做過(guò)業(yè)務(wù)最終還是寫(xiě)代碼, 有車(chē)有房有妻有娃的四有不太牛逼的程序員,我有責(zé)任幫助剛?cè)胄械摹⑷胄袝r(shí)間不短的,還沒(méi)車(chē)沒(méi)房的Java程序員們掌握一些基礎(chǔ)的東西。
    如果你掌握了這些基礎(chǔ)的東西的話,而且英語(yǔ)口語(yǔ)還湊合的話,歡迎來(lái)找我?guī)湍銉?nèi)部推薦工作,估計(jì)一萬(wàn)多的月薪是不成問(wèn)題的,至于30、40萬(wàn)的年薪應(yīng)該也是有機(jī)會(huì)的。  閱讀全文

    posted @ 2014-08-03 01:18 Justfly Shi 閱讀(5174) | 評(píng)論 (13)編輯 收藏

    Sorry every body, I am so busy that I can not finish this article on time. I will try to finish this article after I have got a job. You can compare the 2 xml files in the attached zip file to get some idea.

    There are 2 files in the zip file:
    1. google.xml: The original google search plugin
    2. google-oracle.xml: The search plugin that only search the oracle.com web site.

    Usage
    1. Put the google-oracle.xml in your personal firefox searchplugin folder. In windows firefox version 4 it is {FIREFOX_HOME}\distribution\searchplugins
    2. Restart the firefox. Done

    Click here to download the search plugins

    posted @ 2011-04-18 00:13 Justfly Shi 閱讀(1916) | 評(píng)論 (6)編輯 收藏

    If after upgrading your eclipse STS plugin from 2.5.2 to 2.6.0, your grails projects can not be build, and when building it, it always warning that "Errors running builder 'Java Builder' on projec". That might be caused by the old 1.6 groovy compiler.  The solution is to edit the file "eclipse/configuration/org.eclipse.equinox.simpleconfigurator/bundles.info" and find the line for org.codehaus.groovy_1.6 and remove it. And then restart the eclipse. you can find that it should be fixed.

    Reference: http://docs.codehaus.org/display/GROOVY/Compiler+Switching+within+Groovy-Eclipse

    posted @ 2011-03-30 22:24 Justfly Shi 閱讀(1510) | 評(píng)論 (0)編輯 收藏

         摘要: 第一章 新的機(jī)會(huì) 第二章 對(duì)抗卡布福斯 第三章 “硅谷” 第四章 CD-ROM工廠 優(yōu)質(zhì)管理的四大要素 l 選擇正確的人 l 為他們分配正確的工作 l 保持他們的積極性 l 幫助團(tuán)隊(duì)凝聚起來(lái)并保持團(tuán)隊(duì)的凝聚力 (其他的一切都只是“文案”) 安全和變化 l 除非感到安全,否則人...  閱讀全文

    posted @ 2011-03-26 23:56 Justfly Shi 閱讀(339) | 評(píng)論 (0)編輯 收藏

    上周去一家大型網(wǎng)絡(luò)公司的內(nèi)部系統(tǒng)開(kāi)發(fā)部門(mén)面試,該部門(mén)主要是為公司的各個(gè)部門(mén)開(kāi)發(fā)工作中所需要用到的系統(tǒng),比如財(cái)務(wù),人事的一些小系統(tǒng)。面臨著:資源少,任務(wù)多,體現(xiàn)不出部門(mén)價(jià)值等問(wèn)題。面試出來(lái)后想了幾點(diǎn),發(fā)給他們了,另外也分享出來(lái),希望對(duì)從事類(lèi)似工作的同學(xué)們有用。
    1. 統(tǒng)一簡(jiǎn)潔的頁(yè)面風(fēng)格和CSS
    因?yàn)槭莾?nèi)部系統(tǒng),所以頁(yè)面不需要太華麗和復(fù)雜的界面,所需要的是簡(jiǎn)單易用。因?yàn)槭嵌际莝ohu的內(nèi)部系統(tǒng),所以可以有統(tǒng)一的頁(yè)面風(fēng)格。
    統(tǒng)一頁(yè)面風(fēng)格帶來(lái)以下這些好處:
    a. 只需要采用一套CSS,而不需要在每個(gè)項(xiàng)目都進(jìn)行CSS的開(kāi)發(fā)
    b. 能減少頁(yè)面設(shè)計(jì)的時(shí)間,頁(yè)面布局,功能區(qū)域設(shè)置能全部都統(tǒng)一起來(lái)
    c. 減低用戶對(duì)于新系統(tǒng)的學(xué)習(xí)曲線
    因?yàn)槭莾?nèi)部系統(tǒng),客戶端與服務(wù)器之間的連接速度能保證。因此可以采用簡(jiǎn)潔的頁(yè)面風(fēng)格。
    簡(jiǎn)潔的頁(yè)面能帶來(lái)以下好處:
    a. 減少頁(yè)面的開(kāi)發(fā)難度,不用在一個(gè)頁(yè)面中堆積過(guò)非必要的數(shù)據(jù)。
    b. 方便任務(wù)分配
     
    2. 在做需求的時(shí)候同時(shí)完成靜態(tài)頁(yè)面的設(shè)計(jì)
    這條的好處是做頁(yè)面設(shè)計(jì)的時(shí)候能進(jìn)一步理解用戶的需求,也能同時(shí)從解決方案的角度來(lái)考慮問(wèn)題,從用戶的角度來(lái)說(shuō),針對(duì)模型進(jìn)行思考能進(jìn)一步的引導(dǎo)他的需求。
    具體的做法就是
    a. 在一邊談需求一邊用紙畫(huà)出大概的頁(yè)面模型和用戶溝通,初步形成頁(yè)面功能的設(shè)計(jì)
    b. 談完需求之后盡快使用統(tǒng)一的CSS做出靜態(tài)的頁(yè)面。用頁(yè)面跳轉(zhuǎn)代替表單提交。
    c. 用靜態(tài)頁(yè)面組成的模型和用戶進(jìn)行初步溝通,在溝通過(guò)程中,如果時(shí)間不多的話在紙面上進(jìn)行修改再溝通,如果時(shí)間多的話,快速的修改靜態(tài)頁(yè)面,爭(zhēng)取盡可能多的把重點(diǎn)頁(yè)面和用戶達(dá)成一致。
    根據(jù)溝通結(jié)果把可以開(kāi)始做的部分安排開(kāi)發(fā)人員開(kāi)始做,還不能確定的和客戶約好時(shí)間再進(jìn)行下一次溝通。
     
    3. 逐步建立可復(fù)用的代碼庫(kù)(功能組件)
    這一點(diǎn)說(shuō)起來(lái)容易,做起來(lái)需要一定的額外代價(jià),是一個(gè)部門(mén)內(nèi)部的積累。前提是第一條建議能夠比較好的實(shí)施。這里的代碼庫(kù)(功能組件)大到一個(gè)功能模塊(連接LDAP),小到一個(gè)頁(yè)面控件(多層次部門(mén)選擇下拉列表)。具體做法是
    a. 在項(xiàng)目開(kāi)發(fā)中有意識(shí)的把可通用的組件單獨(dú)放到一個(gè)包里
    b. 項(xiàng)目結(jié)束后,花1到2天的時(shí)間整理成可復(fù)用的代碼
    c. 整理完之后再對(duì)相關(guān)技術(shù)人員進(jìn)行培訓(xùn)(這個(gè)很重要,有通用代碼而別人不知道=沒(méi)有通用代碼)
    d. 在以后的項(xiàng)目中,在復(fù)用的過(guò)程中進(jìn)行完善
    e. 盡量減少?gòu)?fù)制粘貼再修改
     
    4. 收集客戶部門(mén)使用系統(tǒng)后的效果,其結(jié)果可用于對(duì)上對(duì)外和對(duì)內(nèi)
    客戶部門(mén)應(yīng)該會(huì)有這樣的數(shù)據(jù),因?yàn)樗麄冃枰@些東西來(lái)說(shuō)明他們上新系統(tǒng)的效果。本部門(mén)可以用這些數(shù)據(jù)來(lái)說(shuō)明自己的貢獻(xiàn)以獲取公司的認(rèn)同甚至可以去爭(zhēng)取更多的資源
    IT或者運(yùn)維部門(mén)應(yīng)該會(huì)有bug數(shù)量的和分布的統(tǒng)計(jì)數(shù)據(jù),如果沒(méi)有的話自己可以收集到達(dá)本部門(mén)的bug數(shù)量和分布的數(shù)據(jù),通過(guò)這些可以在以后的工作中有意識(shí)的避免這些bug
    通過(guò)這些數(shù)據(jù)可以在以后的需求分析過(guò)程中為客戶部門(mén)提供更容易使用的系統(tǒng)

    posted @ 2011-03-02 11:36 Justfly Shi 閱讀(882) | 評(píng)論 (0)編輯 收藏

         摘要: 軟件開(kāi)發(fā)團(tuán)隊(duì)和測(cè)試團(tuán)隊(duì)之間的關(guān)系是復(fù)雜而有趣的,雙方有共同目標(biāo),又互相競(jìng)爭(zhēng)。雙方的共同目標(biāo)在于減少軟件交付之后缺陷的嚴(yán)重程度和數(shù)量。雙方的利益競(jìng)爭(zhēng)在于測(cè)試人員盡可能的發(fā)現(xiàn)軟件開(kāi)發(fā)團(tuán)隊(duì)交付的軟件產(chǎn)品的缺陷。在這種情況下,減少無(wú)謂的內(nèi)耗,共同保證共同目標(biāo)的實(shí)現(xiàn),才可能實(shí)現(xiàn)雙方的共贏。但是在很多時(shí)候,軟件開(kāi)發(fā)團(tuán)隊(duì)和測(cè)試人員之間總存在著一種緊張的關(guān)系,并因此無(wú)謂的添加了到達(dá)共同目標(biāo)的困難。

    在我經(jīng)歷過(guò)的一些開(kāi)發(fā)過(guò)程中,多次因?yàn)榕c測(cè)試人員之間的頗為愉快的合作,實(shí)現(xiàn)了雙贏和共贏。總結(jié)出來(lái)幾點(diǎn),拋磚引玉:
    1. 保持良好的心態(tài),提高對(duì)開(kāi)發(fā)人員與測(cè)試人員之間關(guān)系的認(rèn)識(shí)
    2. 對(duì)于客戶想法的理解,開(kāi)發(fā)團(tuán)隊(duì)與測(cè)試團(tuán)隊(duì)需要達(dá)成一致并且保持同步。
    3. 互相幫助,共同提高  閱讀全文

    posted @ 2010-10-24 05:07 Justfly Shi 閱讀(1806) | 評(píng)論 (0)編輯 收藏

    1. test if the command notify-send is installed
    notify-send "Hello"
    If the command is not found, install the required package following the tips
    2. vi notify.sh and input the below content into it.
    #!/bin/bash
    DISPLAY=:0.0 /usr/bin/notify-send -30000 "<b>Take a Break!</b>"
    3. chmod +x notify.sh
    4. crontab -e
    5. add the below content as a new line in the opened file. and then save it
    */45 * * * * /home/jimmy/notify.sh
    6. Done!

    posted @ 2010-09-28 15:49 Justfly Shi 閱讀(364) | 評(píng)論 (0)編輯 收藏

    It is only available for one session.
    using the below command before you run your query
    ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';
    For more information, refer to the page http://www.oracle.com/technology/products/database/sql_developer/howtos/howto_policy_date_formats.html
    

    posted @ 2010-08-11 16:45 Justfly Shi 閱讀(363) | 評(píng)論 (0)編輯 收藏

    In Ubuntu, key F10 is used to open the first item of the menu bar, but If you use Emacs key binding in eclipse, F10 is used as the redo key. So you need to do the below change.

    Run gconf-editor, browse to /desktop/gnome/interface then scroll down to menubar_accel and delete the F10 value.

    From http://www.h4ck3r.net/2010/04/07/debugging-step-over-f10-eclipse-ubuntu/

    posted @ 2010-07-22 23:35 Justfly Shi 閱讀(333) | 評(píng)論 (0)編輯 收藏

    install jdk via Synaptic package manager, the name of it is sun-java6-jdk
    download the eclipse install file for Linux

    1.Extract the eclipse download and move to opt.

    tar xzf wtp-all-in-one-sdk-1.0-linux-gtk.tar.gz
    sudo mv eclipse /opt/eclipse
    cd /opt
    sudo chmod -R +r eclipse
    sudo chmod +x `sudo find eclipse -type d`

    2. Then create an eclipse executable in your path
    sudo touch /usr/bin/eclipse
    sudo chmod 755 /usr/bin/eclipse
    sudo vi /usr/bin/eclipse

    With this contents
    #!/bin/sh
    export ECLIPSE_HOME="/opt/eclipse"
    export GDK_NATIVE_WINDOWS=1

    $ECLIPSE_HOME/eclipse $*

    3 Then create a gnome menu item
    sudo vi /usr/share/applications/eclipse.desktop

    With this contents
    [Desktop Entry]
    Encoding=UTF-8
    Name=Eclipse
    Comment=Eclipse IDE
    Exec=eclipse
    Icon=/opt/eclipse/icon.xpm
    Terminal=false
    Type=Application
    Categories=GNOME;Application;Development;
    StartupNotify=true


    4 You now have a working eclipse. But run this command first to initialize the set up
    . /opt/eclipse/eclipse -clean

    Then from here on you can run from the menu item applications/programming/eclipse

    posted @ 2010-07-22 23:27 Justfly Shi 閱讀(337) | 評(píng)論 (0)編輯 收藏

    查找包含某字符串的所有文件
    grep -F 'aaa' -R ./

    如何指定輸出文件的某幾行
    想輸出多行用:
    sed -n '1,np' file
    跳著輸出用";"
    sed -n '1p;4p;7p;9p' file

    posted @ 2010-07-22 23:25 Justfly Shi 閱讀(273) | 評(píng)論 (0)編輯 收藏

    open System->Administration->Language support
    1. Install/Remove languages->check 'Chinese(Simplified)
    2. Keyboard input method system->ibus
    open System->Preferences->IBus Preferences->Input method->add "Chinese Pinyin"->move it to the top

    posted @ 2010-07-22 23:23 Justfly Shi 閱讀(420) | 評(píng)論 (0)編輯 收藏

    http://www.linuxsir.org/bbs/thread362467.html
    下面的這個(gè)已經(jīng)不再維護(hù)了。上面的這個(gè)好使。
    http://www.linuxsir.org/bbs/thread320802.html

    posted @ 2010-07-22 23:23 Justfly Shi 閱讀(560) | 評(píng)論 (2)編輯 收藏

    create or edit file /etc/hal/fdi/policy/mouse-wheel.fdi, change its content to below
    <?xml version="1.0" encoding="UTF-8"?>
    <match key="info.product" string="TPPS/2 IBM TrackPoint">
    <merge key="input.x11_options.EmulateWheel" type="string">true</merge>
    <merge key="input.x11_options.EmulateWheelButton" type="string">2</merge>
    <merge key="input.x11_options.XAxisMapping" type="string">6 7</merge>
    <merge key="input.x11_options.YAxisMapping" type="string">4 5</merge>
    <merge key="input.x11_options.ZAxsisMapping" type="string">4 5</merge>
    <merge key="input.x11_options.Emulate3Buttons" type="string">true</merge>
    </match>


    then run the below command

    sudo rm /var/cache/hald/fdi-cache
    sudo /etc/init.d/hal restart
    sudo /etc/init.d/gdm restart

    posted @ 2010-07-22 23:21 Justfly Shi 閱讀(390) | 評(píng)論 (0)編輯 收藏

    當(dāng)Eclipse無(wú)法找到類(lèi),無(wú)法正確導(dǎo)入類(lèi)的時(shí)候,有的時(shí)候是因?yàn)閕ndex出錯(cuò),刪除下面這個(gè)目錄
    .metadata\.plugins\org.eclipse.jdt.core

    posted @ 2010-06-29 15:21 Justfly Shi 閱讀(629) | 評(píng)論 (0)編輯 收藏

    使用如下Name Space可以讓Xml工具對(duì)POM元素進(jìn)行驗(yàn)證
    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
      xmlns:xsi
    ="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation
    ="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    </project>
    幾個(gè)相當(dāng)不錯(cuò)的Maven Repository
    <repositories>
            
    <repository>
              
    <id>maven2-repository.dev.java.net</id>
              
    <name>Java.net Repository for Maven</name>
              
    <url>http://download.java.net/maven/2/</url>
              
    <layout>default</layout>
            
    </repository>
            
    <repository>
              
    <id>jboss.repository</id>
              
    <name>JBoss Repository</name>
              
    <url>http://repository.jboss.com/maven2/</url>
            
    </repository>
            
    <repository>
            
    <id>maven.search</id>
            
    <name>Maven Search Org</name>
            
    <url>http://www.mvnsearch.org/maven2</url>
            
    </repository>
          
    </repositories>

    posted @ 2008-03-11 22:18 Justfly Shi 閱讀(1156) | 評(píng)論 (0)編輯 收藏

      上周去某上市公司面試一個(gè)ITIL產(chǎn)品技術(shù)經(jīng)理的崗位,前一輪面試已經(jīng)談了不少管理方面的事情了,這次主要集中在談ITIL的知識(shí)。該公司本身在做HP等廠家的ITIL類(lèi)產(chǎn)品的代理,自己也開(kāi)發(fā)了一套ITIL軟件。

      在面談過(guò)程中,該公司的面試人員對(duì)我原先服務(wù)的理想科技公司Entegor(iEAI)產(chǎn)品在光大銀行IT服務(wù)管理項(xiàng)目中的作用不以為然,認(rèn)為只要是加強(qiáng)了IT運(yùn)維過(guò)程中的管理就能起到大幅度減少IT事故。并且認(rèn)為該項(xiàng)目并不是一個(gè)合格的ITIL項(xiàng)目。很是汗顏的是,那天天我居然被該面試人員的ITIL方面的教條熟悉程度以及其對(duì)HPIBMBMCCA等廠家的產(chǎn)品了解程度所嚇到,認(rèn)為對(duì)方果然是ITIL專(zhuān)家,作為一個(gè)連十大流程名字都背不全的我實(shí)在是不配談ITIL。第二天早上醒來(lái),才發(fā)現(xiàn)其論點(diǎn)是典型 ITIL教條主義。下面我談?wù)劵谥袊?guó)銀行業(yè)IT建設(shè)現(xiàn)狀該怎么看待ITIL

      “ITILInformation Technology Infrastructure LibraryIT基礎(chǔ)設(shè)施庫(kù))是英國(guó)中央計(jì)算機(jī)與電信總局(Central Computer and Telecommunications agencyCCTA)于1980年為了解決“IT服務(wù)質(zhì)量不佳的問(wèn)題而開(kāi)發(fā)的一套IT業(yè)界的服務(wù)管理標(biāo)準(zhǔn)庫(kù),是管理科學(xué)在信息技術(shù)(IT)中的應(yīng) 用,是一種基于流程的方式。(來(lái)之《現(xiàn)代IT服務(wù)管理-基于ITIL的最佳實(shí)踐) ITIL包括十大流程,五個(gè)基于運(yùn)營(yíng)層面的服務(wù)支持流程,包括服務(wù)臺(tái)、事件管理、問(wèn)題管理、配置管理、變更管理、發(fā)布管理;二是五個(gè)基于戰(zhàn)術(shù)層面的服務(wù)提供流程,包括服務(wù)等級(jí)管理、持續(xù)性、可用性、能力和財(cái)務(wù)管理。以 ITIL為參考,各個(gè)廠家都提出了自身的實(shí)施模型,其中包括有HPITSMIBMITPM、微軟的MOF

      以上是ITIL的一些基本資料,冷一眼看起來(lái)的確是非常不錯(cuò):英國(guó)的中央計(jì)算機(jī)與電信總局各大廠商支持十大流程。于是業(yè)內(nèi)的一些行 家,開(kāi)口閉口十大流程,但是卻忘了IT系統(tǒng)的最基本的要求滿足客戶需求。作為任何一個(gè)服務(wù)提供商,你的價(jià)值體現(xiàn)在為客戶解決現(xiàn)有問(wèn)題。ITIL只是一個(gè)源于英國(guó)國(guó)內(nèi)IT管理實(shí)踐的參考模型而已,并不是一個(gè)萬(wàn)能藥。

      中國(guó)的IT建設(shè)有其自身的特點(diǎn),與英國(guó)的IT建設(shè)并不一樣,不同的文化和不同的種族需要不同的管理方法,來(lái)自于英國(guó)的管理文化在中國(guó)成功的并不不多。同樣,來(lái)自于英國(guó)的IT管理實(shí)踐在國(guó)內(nèi)也不見(jiàn)得就是好東西,有些情況下還可能是一副毒藥。這個(gè)情況和ERP最初的實(shí)施情況非常類(lèi)似。

      我在擔(dān)任長(zhǎng)春理想科技Entegor(iEAI)產(chǎn)品研發(fā)部門(mén)經(jīng)理期間與多家銀行的信息部門(mén)管理人員有過(guò)交流。總的來(lái)說(shuō),大家的關(guān)注點(diǎn)主要集中在如何保證系統(tǒng)持續(xù)良好的運(yùn)行上。

      那么這個(gè)情況是怎么形成的呢,我認(rèn)為主要是這是國(guó)內(nèi)目前IT建設(shè)現(xiàn)狀的一個(gè)體現(xiàn)。

      國(guó)內(nèi)的IT建設(shè)現(xiàn)在處于這么一個(gè)情況:IT系統(tǒng)種類(lèi)豐富,IT系統(tǒng)性能不穩(wěn)定,管理水平較低。這個(gè)情況主要由這么幾個(gè)因素造成:1、信息系統(tǒng)建設(shè)初期缺乏完整的遠(yuǎn)期的規(guī)劃,后期隨意建設(shè)情況較嚴(yán)重;2、高級(jí)系統(tǒng)管理人員缺乏,初級(jí)維護(hù)人員經(jīng)驗(yàn)不足;3IT部門(mén)管理仍有相當(dāng)部分停留在手工操作水平;4、國(guó)外IT產(chǎn)品水土不服、國(guó)內(nèi)IT產(chǎn)品質(zhì)量欠缺。

      那么國(guó)內(nèi)目前最需要的是什么樣的IT管理呢?我總結(jié)出來(lái)的結(jié)論是目前國(guó)內(nèi)所需要的IT管理主要集中在保持系統(tǒng)的穩(wěn)定運(yùn)行,保證IT系統(tǒng)的良好運(yùn)行,提高IT系統(tǒng)、部門(mén)的管理水平。從實(shí)施的角度來(lái)說(shuō),需要做好對(duì)系統(tǒng)的監(jiān)控,事故問(wèn)題的預(yù)防、及時(shí)解決和經(jīng)驗(yàn)總結(jié),完善IT系統(tǒng)、部門(mén)的信息管理。要做到這個(gè)不是單靠背誦ITIL教條,死搬硬套ITIL十大流程就能做到的。需要的是參考成功經(jīng)驗(yàn)(如ITIL模型及流程),根據(jù)企業(yè)的管理模式、IT建設(shè)現(xiàn)狀進(jìn)行相關(guān)系統(tǒng)的開(kāi)發(fā)和實(shí)施,相關(guān)制度和流程的制訂和實(shí)施。

      在這個(gè)實(shí)施過(guò)程中,企業(yè)IT建設(shè)現(xiàn)狀和企業(yè)管理模式才是我們需要關(guān)注的重點(diǎn),ITIL只是一個(gè)參考模型而已。

      我們需要這么來(lái)認(rèn)識(shí)ITIL,它是一個(gè)泊來(lái)的提高IT管理和IT服務(wù)水平的參考模型,僅供參考!

    posted @ 2007-12-11 00:18 Justfly Shi 閱讀(1601) | 評(píng)論 (12)編輯 收藏

      作為一個(gè)現(xiàn)代的開(kāi)發(fā)人員,你已經(jīng)習(xí)慣了使用版本管理來(lái)管理自己的代碼和文檔。當(dāng)我們?cè)诩依锏臋C(jī)器上想對(duì)自己的東西做版本管理的時(shí)候你需要自己配置一個(gè)版本管理服務(wù)器,如CVS等。但是很遺憾的是,CVSNT的配置很是麻煩,而且CVS的功能實(shí)在是落伍,SVN服務(wù)器的配置也實(shí)在麻煩,VSS?老古董一邊去!網(wǎng)絡(luò)上申請(qǐng)一個(gè)免費(fèi)的項(xiàng)目空間,如sf.net之類(lèi)的:那你的文件就都公開(kāi)了。

      今天我無(wú)意中發(fā)現(xiàn)原來(lái)創(chuàng)建一個(gè)個(gè)人用的SVN Repository是那么的方便。TortoiseSvn這個(gè)小烏龜你一定很熟悉,它本身就有一個(gè)創(chuàng)建本地Repository的功能,我以前沒(méi)有注意到過(guò),不知道你用過(guò)沒(méi)有。我用的版本是 1.4.4,在它的幫助的Chapter4里就提到了這個(gè)功能。簡(jiǎn)單來(lái)說(shuō)操作步驟如下

      第一步,創(chuàng)建一個(gè)空白目錄,如F:/SVNRepositorys/sample/sampleRepository

      第二步,右鍵點(diǎn)擊該目錄,在右鍵菜單中選擇TortoiseSVN->Create repository here...。如下圖所示


      第三步,在彈出窗口中選擇repository的類(lèi)型,F(xiàn)SFS是一種新的格式是一種新的類(lèi)型,速度快,支持網(wǎng)絡(luò)共享和windows98;BDB類(lèi)型比較成熟,已經(jīng)用了很長(zhǎng)時(shí)間了,比較穩(wěn)定。選擇你想要的,點(diǎn)擊OK按鈕就可以了。

     


      到此為止我們的工作就完成了,你已經(jīng)有一個(gè)本地的repository可以用來(lái)做版本管理了。如果有興趣的話你可以打開(kāi)你剛才創(chuàng)建的目錄看看里面的內(nèi)容。我對(duì)里面的內(nèi)容格式并不很清楚,這里就不說(shuō)了。下面我們可以用Repository Browser看看我們新創(chuàng)建的repository,如下圖所示:輸入地址file:///F:/SVNRepositorys/sample/sampleRepository你就可以看到新創(chuàng)建的repository了。注意上面的藍(lán)色部分,這里使用的協(xié)議是file協(xié)議。

     

     

      我原先為自己一些文件的版本管理做過(guò)很多的麻煩事,比如搭建CVSNT啊,學(xué)習(xí)SVN Server的配置啊。但是沒(méi)有想到可以這么簡(jiǎn)單的就可以達(dá)到自己的目的了。這件事情給了我一個(gè)啟發(fā):熟練掌握你手里已有的工具,你會(huì)發(fā)現(xiàn)你其實(shí)已經(jīng)擁有很多。

    posted @ 2007-08-29 01:38 Justfly Shi 閱讀(7701) | 評(píng)論 (4)編輯 收藏

    CURRENT=`pwd`
    echo $CURRENT

    以上兩行厲害吧?其實(shí)就是使用了反引號(hào)而已,注意pwd邊上的那兩撇不是單引號(hào),是鍵盤(pán)左上角1邊上的那個(gè)鍵。

    下面是一點(diǎn)相關(guān)的資料
    來(lái)源是http://hi.baidu.com/lzwwqk/blog/item/40a3f41bb4f8b3fbae513358.html

    反引號(hào) `

    反引號(hào)(`)這個(gè)字符所對(duì)應(yīng)的鍵一般位于鍵盤(pán)的左上角,不要將其同單引號(hào)(’)混淆。反引號(hào)括起來(lái)的字符串被shell解釋為命令行,在執(zhí)行時(shí),shell首先執(zhí)行該命令行,并以它的標(biāo)準(zhǔn)輸出結(jié)果取代整個(gè)反引號(hào)(包括兩個(gè)反引號(hào))部分。例如:

    $ pwd

    /home/xyz

    $ string=”current directory is `pwd`”

    $ echo $string

    current directour is /home/xyz

    $

    shell執(zhí)行echo命令時(shí),首先執(zhí)行`pwd`中的命令pwd,并將輸出結(jié)果/home/xyz取代`pwd`這部分,最后輸出替換后的整個(gè)結(jié)果。

    利用反引號(hào)的這種功能可以進(jìn)行命令置換,即把反引號(hào)括起來(lái)的執(zhí)行結(jié)果賦值給指定變量。例如:

    $ today=`date`

    $ echo Today is $today

    Today is Mon Apr 15 16:20:13 CST 1999

    $

    反引號(hào)還可以嵌套使用。但需注意,嵌套使用時(shí)內(nèi)層的反引號(hào)必須用反斜線(\)將其轉(zhuǎn)義。例如:

    $ abc=`echo The number of users is \`who| wc-l\``

    $ echo $abc

    The number of users is 5

    $

    在反引號(hào)之間的命令行中也可以使用shell的特殊字符。Shell為得到``中命令的結(jié)果,它實(shí)際上要去執(zhí)行``中指定的命令。執(zhí)行時(shí),命令中的特殊字符,如$,”,?等又將具有特殊含義,并且``所包含的可以是任何一個(gè)合法的Shell命令,如:

    $ ls

    note readme.txt Notice Unix.dir

    $ TestString=”`echo $HOME ` ` ls [nN]*`”

    $ echo $TestString

    /home/yxz note Notice

    posted @ 2007-04-18 21:14 Justfly Shi 閱讀(1969) | 評(píng)論 (1)編輯 收藏

    Remote Debugging with Eclipse說(shuō)明了遠(yuǎn)程調(diào)試的原理,說(shuō)明了讓java程序支持被遠(yuǎn)程調(diào)用所需要的java參數(shù)如下
    -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=1044
    以及如何配置遠(yuǎn)程調(diào)試weblogic、jboss和tomcat,但是里面對(duì)如何讓tomcat支持遠(yuǎn)程調(diào)用并沒(méi)有仔細(xì)說(shuō)。再搜索,在tomcat的FAQ就找到了:
    How do I configure Tomcat to support remote debugging?
    如上面所示,其中的關(guān)鍵在于如何正確的啟動(dòng)tomcat。對(duì)于非windows平臺(tái)下的操作來(lái)說(shuō),需要把%TOMCAT_HOME%/bin/startup.sh中的最后一行exec "$PRGDIR"/"$EXECUTABLE" start "$@" 中的start改成jpda start。如果的8000端口有其他用處的話,那么還需要修改catalina.sh文件,看其中的說(shuō)明,添加一行JPDA_ADDRESS=”1044”或者其他你指定的端口。這樣就可以通過(guò)startup.sh或者catalina.sh jpda start來(lái)其中支持遠(yuǎn)程調(diào)試的tomcat了。
    在windows平臺(tái)上是一樣的步驟,只不過(guò).sh文件改成了.bat文件了。然后需要注意以下這些地方,
    1、?catalina.bat文件默認(rèn)的JPDA_TRANSPORT是dt_shmem,但是Eclipse只支持dt_socket,所以需要在catalina.bat中添加一行set JPDA_TRANSPORT=”dt_socket”
    2、?catalina.bat文件默認(rèn)的端口是jdbconn,我也不知道這個(gè)端口是多少,因此添加一個(gè)set JPDA_ADDRESS="1044"

    posted @ 2007-02-05 18:34 Justfly Shi 閱讀(6763) | 評(píng)論 (0)編輯 收藏

    資料地址: SSH技術(shù)專(zhuān)題|中國(guó)IT認(rèn)證實(shí)驗(yàn)室
    配置SSH所用密鑰的方法
    使用ssh-keygen或者ssh-keygen -d(for ssh2)產(chǎn)生密鑰對(duì),其中公鑰的地址為$HOME/.ssh/id_dsa.pub,私鑰的地址為$HOME/.ssh/id_dsa。
    把.ssh下面的id_dsa.pub改名為authorized_keys,則可以使用id_dsa作為密鑰實(shí)現(xiàn)登陸了



    ssh-keygen -d調(diào)用過(guò)程

    putty使用密鑰登錄的方法
    putty是一個(gè)常用的ssh客戶端,通過(guò)使用密鑰登錄,就可以不用每次登錄的時(shí)候都使用密碼了。1、使用puttygen.exe程序,先load上面生成的id_dsa文件,然后Save private key生成一個(gè)ppk文件。
    2、打開(kāi)putty,在Connection->SSH->Auth中選中該ppk文件就可以了。

    SCP使用密鑰登錄的命令
    scp -i .ssh/id_dsa ./tmp/test.tgz abc@192.168.0.5:/tmp
    其中-i .ssh/id_dsa用于指定使用id_dsa做為私鑰

    posted @ 2007-01-29 20:03 Justfly Shi 閱讀(768) | 評(píng)論 (0)編輯 收藏

    25 測(cè)試驅(qū)動(dòng)開(kāi)發(fā)模式


    準(zhǔn)備兩個(gè)TODO-List一個(gè)用于當(dāng)前,一個(gè)用于最近
    當(dāng)發(fā)現(xiàn)有事情要做的時(shí)候,對(duì)其優(yōu)先級(jí)進(jìn)行判斷,將其放到當(dāng)前或者以后。
    集中注意力于當(dāng)前要做的事情

    斷言優(yōu)先
    寫(xiě)Case的時(shí)候,一開(kāi)始就寫(xiě)斷言,從測(cè)試完成時(shí)能通過(guò)的斷言開(kāi)始寫(xiě)。

    測(cè)試數(shù)據(jù)
    測(cè)試數(shù)據(jù)要使用容易讓人理解的數(shù)據(jù),不要為了編排數(shù)據(jù)而編排數(shù)據(jù)
    不要用同一個(gè)常量來(lái)表達(dá)多種一絲。另外也可以使用真實(shí)數(shù)據(jù)進(jìn)行測(cè)試。

    盡量讓測(cè)試的行為和數(shù)據(jù)容易理解,比如不使用常量,而是直接使用數(shù)字。在assert中加入斷言要測(cè)試的目的的文字說(shuō)明

    26 不可運(yùn)行狀態(tài)


    一步測(cè)試(One Step Test)
    從計(jì)劃列表中選擇具有指導(dǎo)意義而且有把握實(shí)現(xiàn)的測(cè)試去完成它。??

    啟動(dòng)測(cè)試(Starter Test)
    從測(cè)試某個(gè)實(shí)質(zhì)上不做任何工作的操作開(kāi)始,這樣的測(cè)試一般能很快工作。而一個(gè)做實(shí)際工作的功能的測(cè)試可能需要等你解決很多問(wèn)題,比如:這個(gè)操作隸屬于哪里?正確的輸入是什么?對(duì)應(yīng)的正確輸出是什么?等等。結(jié)果是其長(zhǎng)期無(wú)法通過(guò)。

    回歸測(cè)試(Regression Test)
    對(duì)于一個(gè)錯(cuò)誤情況,編寫(xiě)一個(gè)針對(duì)該錯(cuò)誤的,會(huì)出錯(cuò)的,盡可能小的測(cè)試。

    27測(cè)試模式


    子測(cè)試(Child Test)
    如果一個(gè)測(cè)試太大以至于難以運(yùn)行起來(lái),那么可以先把該測(cè)試給分解成幾個(gè)小的測(cè)試,并注釋掉本測(cè)試。等這些小測(cè)試通過(guò)之后再繼續(xù)這個(gè)大的測(cè)試??

    模擬對(duì)象(Mock Object)
    如何測(cè)試一個(gè)依賴于昂貴的且復(fù)雜的資源的對(duì)象?創(chuàng)建一個(gè)這些資源的模擬版本。

    自分流(self Shunt)
    如何測(cè)試對(duì)象間是否正常交互?讓測(cè)試對(duì)象于測(cè)試用例而不是期望的對(duì)象進(jìn)行交互。
    需要讓測(cè)試用例類(lèi)實(shí)現(xiàn)所要交互的類(lèi)的接口。從而進(jìn)行測(cè)試所實(shí)現(xiàn)的方法會(huì)被正確的調(diào)用。

    日志字符串(Log String)
    如何才能測(cè)試使消息調(diào)用順序是正確的?將日志保存在字符串中,當(dāng)調(diào)用一個(gè)消息時(shí),就向字符串尾部追加相應(yīng)的信息。

    清掃測(cè)試死角(Crash Test Dummy)
    如何測(cè)試到不大可能被調(diào)用的錯(cuò)誤代碼呢?使用一種特殊的對(duì)象調(diào)用它,這個(gè)對(duì)象拋出一個(gè)異常而不做任何實(shí)際工作。比如實(shí)現(xiàn)一個(gè)匿名File子類(lèi),只實(shí)現(xiàn)其createNewFile方法,方法中拋出一個(gè)異常,通過(guò)這種方式來(lái)測(cè)試文件系統(tǒng)滿了的情況。

    不完整測(cè)試(Broken Test)
    留下半截句子或者一個(gè)沒(méi)有通過(guò)的測(cè)試用例可以保證你離開(kāi)代碼一段時(shí)間之后依然能較快的回憶起原先的想法。

    提交前保證所有測(cè)試運(yùn)行通過(guò)
    當(dāng)你在團(tuán)隊(duì)中變成時(shí)如何結(jié)束一段編碼工作?讓所有測(cè)試運(yùn)行起來(lái)。
    注釋掉一些測(cè)試代碼使測(cè)試套件通過(guò)是要嚴(yán)格禁止的。

    28可運(yùn)行模式


    偽實(shí)現(xiàn)(直到你成功)
    測(cè)試不能通過(guò)時(shí)首先應(yīng)該執(zhí)行什么?可以返回一個(gè)常量。一旦你能使測(cè)試運(yùn)行起來(lái),那個(gè)常量就會(huì)逐漸換成用變量表示的表達(dá)式。這個(gè)方法可以從心理上讓我們感到滿足,可以讓我們集中注意力于當(dāng)前要解決的問(wèn)題。

    三角法(Triangulation)
    怎樣可以更適當(dāng)?shù)乩脺y(cè)試推動(dòng)抽象呢?只有當(dāng)你有兩個(gè)或兩個(gè)以上的例子時(shí),你才能進(jìn)行抽象。使用兩個(gè)針對(duì)同一個(gè)測(cè)試目標(biāo)的測(cè)試?yán)樱ɑ驍嘌裕诖嘶A(chǔ)上對(duì)該測(cè)試目標(biāo)的實(shí)現(xiàn)進(jìn)行抽象并實(shí)現(xiàn)。

    顯明實(shí)現(xiàn)(Obvious Implementation)
    直接實(shí)現(xiàn)簡(jiǎn)單的操作。

    從一到多(One to Many)
    怎樣實(shí)現(xiàn)一個(gè)作用于對(duì)象集合體的操作呢?首先在非集合體中實(shí)現(xiàn),然后使之作用于集合體。

    32 掌握TDD


    什么可以不必測(cè)試?
    應(yīng)該測(cè)試:條件部分、循環(huán)部分、操作部分、多態(tài)性。除了不信任,否則不要測(cè)試其他來(lái)源的代碼。

    怎樣知道自己的測(cè)試沒(méi)有疏漏呢?
    一些預(yù)示著設(shè)計(jì)存在這缺陷的特征:
    過(guò)長(zhǎng)的設(shè)置代碼——如果為了一個(gè)簡(jiǎn)單的斷言,需要花費(fèi)上百行代碼創(chuàng)建對(duì)象,那么肯定有哪兒不對(duì)勁兒。對(duì)象太大,需要分割。
    冗余的設(shè)置代碼——如果你無(wú)法為公共代碼找到一個(gè)存放它的公共場(chǎng)所的話,那么就表明有太多的對(duì)象過(guò)于緊密地聯(lián)系在一起了。
    過(guò)長(zhǎng)的測(cè)試運(yùn)行時(shí)間——這樣測(cè)試不會(huì)被經(jīng)常運(yùn)行,同時(shí)也暗示著對(duì)系統(tǒng)的方方面面進(jìn)行測(cè)試是困難的。這種測(cè)試?yán)щy是一種設(shè)計(jì)問(wèn)題,并且需要在設(shè)計(jì)時(shí)就被提出來(lái)。
    脆弱的測(cè)試——意外中斷的測(cè)試說(shuō)明應(yīng)用的某一部分出人意料地存在對(duì)另一部分的影響。你需要對(duì)系統(tǒng)進(jìn)行設(shè)計(jì),要么打破聯(lián)系,要么將兩部分合并,直到這種影響消失為止。

    你需要多少反饋?
    測(cè)試驅(qū)動(dòng)的開(kāi)發(fā)對(duì)測(cè)試的觀點(diǎn)就是注重實(shí)效。在測(cè)試驅(qū)動(dòng)開(kāi)發(fā)中,測(cè)試從某種意義上說(shuō)是一種達(dá)到目的的手段——達(dá)到充滿自信地編寫(xiě)代碼的目的。如果我們對(duì)實(shí)現(xiàn)有充分了解,不用測(cè)試就能擁有自信的話,那么就沒(méi)有必要編寫(xiě)測(cè)試了。

    什么時(shí)候應(yīng)該刪除測(cè)試?
    如果刪除一個(gè)測(cè)試降低了你對(duì)整個(gè)系統(tǒng)功能的信心,那么就不要?jiǎng)h除。
    如果你有兩個(gè)測(cè)試,走的是同一條路,但對(duì)讀者來(lái)說(shuō)講述的是不同的情形的話,那么就應(yīng)該原封不動(dòng)的保留。
    如果有兩個(gè)測(cè)試,它們就自信和溝通而言都是冗余的,那么就刪除其中用處最小的那個(gè)。

    如何中途轉(zhuǎn)向測(cè)試驅(qū)動(dòng)開(kāi)發(fā)?
    首先限定修改的范圍。對(duì)于該范圍外的可以簡(jiǎn)化的地方先不動(dòng)手。
    其次,必須打破測(cè)試與重構(gòu)之間的僵局。可以先通過(guò)其他方式獲取反饋,如系統(tǒng)測(cè)試,然后使用這些反饋進(jìn)行修改。通過(guò)這種方式逐漸的讓一直在改變的部分轉(zhuǎn)向測(cè)試驅(qū)動(dòng)。

    posted @ 2006-11-21 00:24 Justfly Shi 閱讀(547) | 評(píng)論 (0)編輯 收藏

      由于最近需要通過(guò)一種跨平臺(tái)、跨語(yǔ)言的方式來(lái)傳遞需要多層嵌套的數(shù)據(jù),因此研究了一下JSON。首先試用JSON-lib做一下測(cè)試,但是未能通過(guò)測(cè)試,于是再找其他幾個(gè)Java實(shí)現(xiàn),但是也未能通過(guò)測(cè)試。分別測(cè)試對(duì)于一個(gè)簡(jiǎn)單的類(lèi)的序列化和反序列化,對(duì)于一個(gè)有數(shù)組和Map域的對(duì)象的序列化和反序列化。對(duì)于結(jié)果比較失望。
      其中的JSON-lib能通過(guò)第一個(gè)測(cè)試,第二個(gè)測(cè)試的時(shí)候則失敗。但是有一個(gè)很大的bug,對(duì)于存在null域的對(duì)象反序列化的時(shí)候會(huì)失敗。該bug已經(jīng)在主頁(yè)上了,但是不知道那個(gè)版本會(huì)修改。
      其中的StringTree只能revert回一個(gè)Map對(duì)象。而對(duì)于一個(gè)復(fù)雜的對(duì)象,則無(wú)法revert。在做第二個(gè)測(cè)試的時(shí)候總是停在那里不動(dòng)了。
      其中的JSON-Tool根本就沒(méi)有直接的序列化的功能。
      由于測(cè)試情況很不理想,因此只進(jìn)行了兩個(gè)測(cè)試,對(duì)于特殊字符、國(guó)際化的測(cè)試沒(méi)有進(jìn)行。
      
      結(jié)論:JSON的序列化和反序列化功能還不成熟。
      所有代碼下載地址http://www.tkk7.com/Files/justfly/jsonTest.zip
      測(cè)試類(lèi)如下:

    ?1 /**
    ?2 ?*?created?on?2006-10-2
    ?3 ? */

    ?4 package ?cn.shijingjia.justfly.json;
    ?5
    ?6 import ?java.util.HashMap;
    ?7 import ?java.util.Map;
    ?8
    ?9 import ?junit.framework.Assert;
    10 import ?net.sf.json.JSONObject;
    11
    12 import ?org.junit.Before;
    13 import ?org.junit.Test;
    14
    15 import ?cn.shijingjia.justfly.json.imps.StringTreeImp;
    16
    17 /**
    18 ?*? @author ?Shi?Jiemiao
    19 ?*?
    20 ? */

    21 public ? class ?JSonTest? {
    22
    23 ???? private ?SimpleClass?simple1? = ? new ?SimpleClass();
    24
    25 ???? private ?SimpleClass?simple2? = ? new ?SimpleClass();
    26
    27 ???? private ?SimpleClass?simple3? = ? new ?SimpleClass();
    28
    29 ???? private ?IJSonUtil < SimpleClass > ?simpUtil;
    30
    31 ???? private ?IJSonUtil < CompositeClass > ?compositeUtil;
    32
    33 ???? /**
    34 ?????*? @throws ?java.lang.Exception
    35 ????? */

    36 ????@Before
    37 ???? public ? void ?setUp()? throws ?Exception? {
    38 ????????simple1.setAInt( 1 );
    39 ????????simple1.setStr( " name1 " );
    40 ????????simple2.setAInt( 2 );
    41 ????????simple2.setStr( " name2 " );
    42 ????????simple3.setAInt( 3 );
    43 ????????simple3.setStr( " name3 " );
    44
    45 ????????simpUtil? = ? new ?StringTreeImp < SimpleClass > ();
    46 ????????compositeUtil? = ? new ?StringTreeImp < CompositeClass > ();
    47 ????}

    48
    49 ???? /**
    50 ?????*?Test?if?it?can?format?a?object?and?then?reverted?it?back
    51 ????? */

    52 ????@Test
    53 ???? public ? void ?simpleTest()? {
    54
    55 ????????String?jsonString? = ?simpUtil.toString(simple1);
    56 ????????System.out.println( " simpleClass\n " ? + ?jsonString);
    57 ????????SimpleClass?revertedObj? = ?simpUtil.toBean(jsonString);
    58 ????????Assert.assertEquals(simple1,?revertedObj);
    59 ????}

    60
    61 ???? /**
    62 ?????*?Test?if?it?can?format?and?revert?a?composite?object?with?array?and?map
    63 ????? */

    64 ????@Test
    65 ???? public ? void ?testComposite()? {
    66 ???????? // ?setup?the?origin?composite?class
    67 ????????CompositeClass?composite? = ? new ?CompositeClass();
    68 ????????composite.setName( " composite?Instance " );
    69 ????????composite.setSimple(simple2);
    70 ????????composite.setSimples( new ?SimpleClass[]? {?simple1,?simple3,?simple2?} );
    71 ????????Map?multiMap? = ? new ?HashMap();
    72 ????????multiMap.put( " simpleObject " ,?simple3);
    73 ????????multiMap.put( " aString " ,? " This?is?a?String " );
    74 ????????multiMap.put( " A?integer " ,? 297 );
    75 ????????composite.setMultiMap(multiMap);
    76 ???????? // ?orgin?json?object?and?jsonString
    77 ????????String?jsonString? = ?compositeUtil.toString(composite);
    78 ????????System.out.println( " composite?class\n " ? + ?jsonString);
    79
    80 ???????? // ?Map?atrMap?=?new?HashMap();
    81 ???????? // ?atrMap.put("simpleObject",?SimpleClass.class);
    82 ???????? // ?atrMap.put("aString",?String.class);
    83 ???????? // ?atrMap.put("A?integer",?Integer.class);
    84
    85 ????????CompositeClass?revertedBean? = ?compositeUtil.toBean(jsonString);
    86 ????????Assert.assertEquals(composite,?revertedBean);
    87 ????}

    88
    89 }

    90


    posted @ 2006-10-03 17:45 Justfly Shi 閱讀(3141) | 評(píng)論 (3)編輯 收藏

    I have talked with my boss last week. Because there is a workflow enginee in our product, my boss don't allow me to release an open source workflow enginee , even the design of my Frontal Sea Workflow Engine is different with the enginee in our product.

    posted @ 2006-08-30 23:28 Justfly Shi 閱讀(605) | 評(píng)論 (0)編輯 收藏

    I want to develop a workflow engine together with my girl friend. The purpose of developing a workflow is list below:
    1. I was deploy project with workflow or developing workflow product in my three year career, but none of them can satisfy me.
    2. I think I can study and practice java 5, spring, Hibernate 3, AJAX, Eclipse EMF etc...
    3. With pair programming, I can teach my girl friend how to do professional programming

    What is Frontal Sea?
    Frontal Sea is the name of a scenic beach in my hometown. Spray waving lightly, the sea breeze blowing softly. It is peaceful; it is full of childhood memories.

    posted @ 2006-06-21 00:49 Justfly Shi 閱讀(719) | 評(píng)論 (0)編輯 收藏

    前言
    vi是一個(gè)跨平臺(tái)的文本編輯工具,在我工作中所遇到的所有操作系統(tǒng)平臺(tái)都能找到它,同時(shí)vi支持手放在主鍵盤(pán)上就可以完成所有的操作, 對(duì)于我這種非常反感右手在鍵盤(pán)、數(shù)字鍵、方向鍵和鼠標(biāo)之間來(lái)回切換的懶人來(lái)說(shuō),實(shí)在是太方便了。雖然以前也學(xué)習(xí)過(guò)一點(diǎn)基本的vi操作,但是總是不全,比如 不知道怎么進(jìn)行字符選中。
    前幾天花了一點(diǎn)時(shí)間學(xué)習(xí)了一下gvim。主要是學(xué)習(xí)它的一些快捷鍵。現(xiàn)在的gvim已經(jīng)是7.0版本,自帶了一份中文的簡(jiǎn)短的教程,對(duì)于我這個(gè)只需要學(xué)習(xí)一下簡(jiǎn)單操作的初級(jí)用戶來(lái)說(shuō)已經(jīng)足夠了。


    目錄
    移動(dòng)
    字符編輯
    搜索替換
    命令格式
    文件操作


    移動(dòng)

               k (上行) 
    h (左移)            l (右移)
               j (下行)          
    0行頭 $行尾 e 單詞結(jié)尾 w單詞開(kāi)頭 Ctrl+e 窗口內(nèi)容向下移動(dòng) Ctrl+y窗口內(nèi)容向上移動(dòng)
    Ctrl-g 顯示當(dāng)前光標(biāo)所在位置和文件狀態(tài)信息。
    Shift-G 用于將光標(biāo)跳轉(zhuǎn)至文件最后一行。
    LineNumber Shift-G 將光標(biāo)移動(dòng)至該行號(hào)代表的行


    字符編輯

    i 在當(dāng)前位置開(kāi)始編輯
    a 在當(dāng)前位置之后開(kāi)始編輯
    x 刪除光標(biāo)所在位置的字符
    A 在當(dāng)前行末尾開(kāi)始編輯
    dw 從當(dāng)前光標(biāo)刪除至單字/單詞末尾
    d$ 從當(dāng)前光標(biāo)刪除至當(dāng)前行末尾
    dd 刪除整行
    u 撤消以前的操作
    U 撤消在一行中所做的改動(dòng)
    CTRL-R    撤消以前的撤消命令,恢復(fù)以前的操作結(jié)果
    p 重新置入已經(jīng)刪除的文本內(nèi)容
    r 替換光標(biāo)所在位置的字符
    cw 替換當(dāng)前光標(biāo)到單詞的末尾的內(nèi)容
    c$ 替換當(dāng)前光標(biāo)到行末的內(nèi)容
    小寫(xiě)的 o 在光標(biāo)下方打開(kāi)新的一行并將光標(biāo)置于新開(kāi)的行首,進(jìn)入插入模式
    大寫(xiě)的 O 在光標(biāo)上方打開(kāi)新的一行并將光標(biāo)置于新開(kāi)的行首,進(jìn)入插入模式
    小寫(xiě)的 a 在光標(biāo)所在位置之后插入文本
    大寫(xiě)的 A 在光標(biāo)所在行的行末之后插入文本
    大寫(xiě)的 R 進(jìn)入替換模式,直至按 <ESC> 鍵退出替換模式而進(jìn)入正常模式。
    %  將光標(biāo)移動(dòng)到配對(duì)的括號(hào)上


    搜索替換

       輸入 / 然后緊隨一個(gè)字符串是則是在當(dāng)前所編輯的文檔中向后查找該字符串。
         輸入問(wèn)號(hào) ? 然后緊隨一個(gè)字符串是則是在當(dāng)前所編輯的文檔中向前查找該字
         符串。完成一次查找之后按 n 鍵則是重復(fù)上一次的命令,可在同一方向上查
         找下一個(gè)字符串所在;或者按 Shift-N 向相反方向查找下該字符串所在。


       在一行內(nèi)替換頭一個(gè)字符串 old 為新的字符串 new,請(qǐng)輸入  :s/old/new
         在一行內(nèi)替換所有的字符串 old 為新的字符串 new,請(qǐng)輸入  :s/old/new/g
         在兩行內(nèi)替換所有的字符串 old 為新的字符串 new,請(qǐng)輸入  :#,#s/old/new/g
         在文件內(nèi)替換所有的字符串 old 為新的字符串 new,請(qǐng)輸入  :%s/old/new/g
         進(jìn)行全文替換時(shí)詢問(wèn)用戶確認(rèn)每個(gè)替換需添加 c 選項(xiàng),請(qǐng)輸入 :%s/old/new/gc


    命令格式

       在正常模式下一個(gè)命令的格式是∶

           [number]   command   object     或者     command    [number]   object
         其意是∶
           number - 代表的是命令執(zhí)行的次數(shù)
           command - 代表要做的事情,比如 d 代表刪除
           object - 代表要操作的對(duì)象,比如 w 代表單字/單詞,$ 代表到行末等等。



    文件操作

      :w FILENAME  可將當(dāng)前 VIM 中正在編輯的文件保存到名為 FILENAME 的文
         件中。

      :#,#w FILENAME 可將當(dāng)前編輯文件第 # 行至第 # 行的內(nèi)容保存到文件
         FILENAME 中。

      :r FILENAME 可提取磁盤(pán)文件 FILENAME 并將其插入到當(dāng)前文件的光標(biāo)位置
         后面。

    posted @ 2006-06-02 20:06 Justfly Shi 閱讀(2041) | 評(píng)論 (3)編輯 收藏

    <label for="myId">點(diǎn)一下這里<input type="checkbox" name="abc" value="nil" id="myId">也可以點(diǎn)一下這里</label>
    <input type="checkbox" name="abc" value="nil" id="myId2"><label for="myId2">點(diǎn)一下這里</label>

    posted @ 2006-04-14 12:38 Justfly Shi 閱讀(3406) | 評(píng)論 (0)編輯 收藏

    首先,為了能運(yùn)行ant相關(guān)的svn任務(wù),我們到subclipse的子項(xiàng)目svnant里去下載一個(gè)svnant
    地址是:http://subclipse.tigris.org/servlets/ProjectDocumentList?folderID=1731&expandFolder=1731&folderID=0
    這個(gè)時(shí)候如果linux上已經(jīng)裝有了svn命令行工具的話,那么就可以直接按照把svnant里面的相關(guān)的jar放到ant的lib目錄下使用就可以了。
    不過(guò)由于一般新安裝的linux系統(tǒng)或者是其他沒(méi)有svn客戶端的系統(tǒng)都沒(méi)有svn命令行工具,那么可以使用一個(gè)全部用java實(shí)現(xiàn)的svn客戶端實(shí)現(xiàn)來(lái)作替代。
    具體的替代辦法在下面這個(gè)網(wǎng)址里面提供了
    http://tmate.org/svn/kb/user-guide-svnant.html

    其內(nèi)容如下:

    Making SvnAnt use JavaSVN

    Step-by-step instructions:

    • Remove existing javahl.jar and svnClientAdapter.jar (libraries distirbuted with the svnant) from your Ant classpath (ANT_HOME/lib/ directory).
    • Download latest version of JavaSVN library. You will need javasvn.jar and javasvn-javahl.jar files from the library distribution.
    • Get patched version of svnClientAdapter.jar (version 0.9.32).
    • Put javasvn.jarjavasvn-javahl.jar and svnClientAdapter-0.9.32.jar files on your Ant classpath (ANT_HOME/lib/ directory).

    After performing the steps above svnant will use JavaSVN instead of JavaHL bindings.

    If you have any questions regarding JavaSVN, would like to report a bug or contribute a patch, please write to support@tmatesoft.com

    posted @ 2006-03-30 15:11 Justfly Shi 閱讀(3446) | 評(píng)論 (0)編輯 收藏

    主站蜘蛛池模板: 久99精品视频在线观看婷亚洲片国产一区一级在线 | 亚洲国产精品一区二区久久hs| 亚洲日韩AV一区二区三区中文| 亚洲一区二区三区在线网站| 久久免费高清视频| 久久精品国产亚洲一区二区三区 | JLZZJLZZ亚洲乱熟无码| 极品色天使在线婷婷天堂亚洲| 九九综合VA免费看| 免费国产美女爽到喷出水来视频| 亚洲成AV人片天堂网无码| 成人免费777777被爆出| 性生交片免费无码看人| 亚洲精品成人网站在线播放| 人人爽人人爽人人片av免费| 午夜国产大片免费观看| 亚洲日本在线电影| 女人与禽交视频免费看| 国产成人亚洲精品青草天美| 中国人免费观看高清在线观看二区| 亚洲精品线路一在线观看| 亚洲w码欧洲s码免费| 91免费播放人人爽人人快乐| 综合亚洲伊人午夜网| 国产99久久久国产精免费| 国产中文在线亚洲精品官网| 国产99视频精品免费视频76| 久久影视综合亚洲| 中文字幕在线成人免费看| 亚洲色大成网站www永久一区| 精品免费久久久久国产一区| 一本久久a久久精品亚洲| 国产综合免费精品久久久| 成人永久福利免费观看| 亚洲一级毛片免费在线观看| 无人在线直播免费观看| 亚洲色大成WWW亚洲女子| 国产真人无遮挡作爱免费视频| 最新亚洲人成网站在线观看| 亚洲国产精品综合久久一线| 精品国产污污免费网站入口|