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

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

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

    紫風亂寫

    除了他眼前的屏幕,這個人什么也沒看見。
    被周圍的電腦簇擁著,他只知道他所創(chuàng)造的現(xiàn)實,但又意識到那是虛幻。
    他已經超越了技術。也超越了機器。
    posts - 62, comments - 93, trackbacks - 0, articles - 0
      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    2005年12月26日

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

    下面是幾個例子
    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) | 評論 (0)編輯 收藏

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

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

    修改內容:

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


    修改內容:

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

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

         摘要: 在我看來,干活有兩種方式:

    1. 沒想清楚了,貿貿然開干,然后各處救火各種解決問題
    2. 想清楚了再開干,無驚無險,安然做完

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

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

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

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

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

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

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

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

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

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

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

    Bean Query是一個開源的Java工具包,它復用Apache Commons BeanUtilsApache Commons CollectionsJava Hamcrest 來簡化對Bean(集合)的排序,過濾和轉換。

    項目地址:

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

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

    修改內容:

    • 支持用戶自定義排序
    • 支持用戶自定義轉換
    • 支持對一個對象進行轉換和過濾
    • 提供了完整的使用說明文檔

    在Maven項目中引用:

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

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

    修改內容:
    在Maven項目中引用
    <dependency>
      <groupId>cn.jimmyshi</groupId>
      <artifactId>bean-query</artifactId>
      <version>1.0.1</version>
    </dependency>

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

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

    我剛剛發(fā)布了版本1.0.0. 現(xiàn)在已經在Sonatype OSS庫上了,2個小時后將會被同步到Maven中央庫上。

    Sonatype OSS 庫下載地址: 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項目中引用

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

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

         摘要: BeanQuery 是一個把對象轉換為Map的Java工具庫。支持選擇Bean中的一些屬性,對結果進行排序和按照條件查詢。不僅僅可以作用于頂層對象,也可以作用于子對象。

    BeanQuery的使用非常簡單也很直接  閱讀全文

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

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

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

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

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

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

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

         摘要: 后來我意識到,我不能只抱怨,作為一個寫了10多年代碼,帶過項目、做過業(yè)務最終還是寫代碼, 有車有房有妻有娃的四有不太牛逼的程序員,我有責任幫助剛入行的、入行時間不短的,還沒車沒房的Java程序員們掌握一些基礎的東西。
    如果你掌握了這些基礎的東西的話,而且英語口語還湊合的話,歡迎來找我?guī)湍銉炔客扑]工作,估計一萬多的月薪是不成問題的,至于30、40萬的年薪應該也是有機會的。  閱讀全文

    posted @ 2014-08-03 01:18 Justfly Shi 閱讀(5174) | 評論 (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) | 評論 (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) | 評論 (0)編輯 收藏

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

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

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

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

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

    在我經歷過的一些開發(fā)過程中,多次因為與測試人員之間的頗為愉快的合作,實現(xiàn)了雙贏和共贏??偨Y出來幾點,拋磚引玉:
    1. 保持良好的心態(tài),提高對開發(fā)人員與測試人員之間關系的認識
    2. 對于客戶想法的理解,開發(fā)團隊與測試團隊需要達成一致并且保持同步。
    3. 互相幫助,共同提高  閱讀全文

    posted @ 2010-10-24 05:07 Justfly Shi 閱讀(1806) | 評論 (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) | 評論 (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) | 評論 (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) | 評論 (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) | 評論 (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) | 評論 (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) | 評論 (0)編輯 收藏

    http://www.linuxsir.org/bbs/thread362467.html
    下面的這個已經不再維護了。上面的這個好使。
    http://www.linuxsir.org/bbs/thread320802.html

    posted @ 2010-07-22 23:23 Justfly Shi 閱讀(560) | 評論 (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) | 評論 (0)編輯 收藏

    當Eclipse無法找到類,無法正確導入類的時候,有的時候是因為index出錯,刪除下面這個目錄
    .metadata\.plugins\org.eclipse.jdt.core

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

    使用如下Name Space可以讓Xml工具對POM元素進行驗證
    <?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>
    幾個相當不錯的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) | 評論 (0)編輯 收藏

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

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

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

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

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

      我在擔任長春理想科技Entegor(iEAI)產品研發(fā)部門經理期間與多家銀行的信息部門管理人員有過交流。總的來說,大家的關注點主要集中在如何保證系統(tǒng)持續(xù)良好的運行上。

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

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

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

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

      我們需要這么來認識ITIL,它是一個泊來的提高IT管理和IT服務水平的參考模型,僅供參考!

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

      作為一個現(xiàn)代的開發(fā)人員,你已經習慣了使用版本管理來管理自己的代碼和文檔。當我們在家里的機器上想對自己的東西做版本管理的時候你需要自己配置一個版本管理服務器,如CVS等。但是很遺憾的是,CVSNT的配置很是麻煩,而且CVS的功能實在是落伍,SVN服務器的配置也實在麻煩,VSS?老古董一邊去!網(wǎng)絡上申請一個免費的項目空間,如sf.net之類的:那你的文件就都公開了。

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

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

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


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

     


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

     

     

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

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

    CURRENT=`pwd`
    echo $CURRENT

    以上兩行厲害吧?其實就是使用了反引號而已,注意pwd邊上的那兩撇不是單引號,是鍵盤左上角1邊上的那個鍵。

    下面是一點相關的資料
    來源是http://hi.baidu.com/lzwwqk/blog/item/40a3f41bb4f8b3fbae513358.html

    反引號 `

    反引號(`)這個字符所對應的鍵一般位于鍵盤的左上角,不要將其同單引號(’)混淆。反引號括起來的字符串被shell解釋為命令行,在執(zhí)行時,shell首先執(zhí)行該命令行,并以它的標準輸出結果取代整個反引號(包括兩個反引號)部分。例如:

    $ pwd

    /home/xyz

    $ string=”current directory is `pwd`”

    $ echo $string

    current directour is /home/xyz

    $

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

    利用反引號的這種功能可以進行命令置換,即把反引號括起來的執(zhí)行結果賦值給指定變量。例如:

    $ today=`date`

    $ echo Today is $today

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

    $

    反引號還可以嵌套使用。但需注意,嵌套使用時內層的反引號必須用反斜線(\)將其轉義。例如:

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

    $ echo $abc

    The number of users is 5

    $

    在反引號之間的命令行中也可以使用shell的特殊字符。Shell為得到``中命令的結果,它實際上要去執(zhí)行``中指定的命令。執(zhí)行時,命令中的特殊字符,如$,”,?等又將具有特殊含義,并且``所包含的可以是任何一個合法的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) | 評論 (1)編輯 收藏

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

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

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



    ssh-keygen -d調用過程

    putty使用密鑰登錄的方法
    putty是一個常用的ssh客戶端,通過使用密鑰登錄,就可以不用每次登錄的時候都使用密碼了。1、使用puttygen.exe程序,先load上面生成的id_dsa文件,然后Save private key生成一個ppk文件。
    2、打開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) | 評論 (0)編輯 收藏

    25 測試驅動開發(fā)模式


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

    斷言優(yōu)先
    寫Case的時候,一開始就寫斷言,從測試完成時能通過的斷言開始寫。

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

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

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


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

    啟動測試(Starter Test)
    從測試某個實質上不做任何工作的操作開始,這樣的測試一般能很快工作。而一個做實際工作的功能的測試可能需要等你解決很多問題,比如:這個操作隸屬于哪里?正確的輸入是什么?對應的正確輸出是什么?等等。結果是其長期無法通過。

    回歸測試(Regression Test)
    對于一個錯誤情況,編寫一個針對該錯誤的,會出錯的,盡可能小的測試。

    27測試模式


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

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

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

    日志字符串(Log String)
    如何才能測試使消息調用順序是正確的?將日志保存在字符串中,當調用一個消息時,就向字符串尾部追加相應的信息。

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

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

    提交前保證所有測試運行通過
    當你在團隊中變成時如何結束一段編碼工作?讓所有測試運行起來。
    注釋掉一些測試代碼使測試套件通過是要嚴格禁止的。

    28可運行模式


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

    三角法(Triangulation)
    怎樣可以更適當?shù)乩脺y試推動抽象呢?只有當你有兩個或兩個以上的例子時,你才能進行抽象。使用兩個針對同一個測試目標的測試例子(或斷言),在此基礎上對該測試目標的實現(xiàn)進行抽象并實現(xiàn)。

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

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

    32 掌握TDD


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

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

    你需要多少反饋?
    測試驅動的開發(fā)對測試的觀點就是注重實效。在測試驅動開發(fā)中,測試從某種意義上說是一種達到目的的手段——達到充滿自信地編寫代碼的目的。如果我們對實現(xiàn)有充分了解,不用測試就能擁有自信的話,那么就沒有必要編寫測試了。

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

    如何中途轉向測試驅動開發(fā)?
    首先限定修改的范圍。對于該范圍外的可以簡化的地方先不動手。
    其次,必須打破測試與重構之間的僵局??梢韵韧ㄟ^其他方式獲取反饋,如系統(tǒng)測試,然后使用這些反饋進行修改。通過這種方式逐漸的讓一直在改變的部分轉向測試驅動。

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

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

    ?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) | 評論 (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) | 評論 (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) | 評論 (0)編輯 收藏

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


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


    移動

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


    字符編輯

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


    搜索替換

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


       在一行內替換頭一個字符串 old 為新的字符串 new,請輸入  :s/old/new
         在一行內替換所有的字符串 old 為新的字符串 new,請輸入  :s/old/new/g
         在兩行內替換所有的字符串 old 為新的字符串 new,請輸入  :#,#s/old/new/g
         在文件內替換所有的字符串 old 為新的字符串 new,請輸入  :%s/old/new/g
         進行全文替換時詢問用戶確認每個替換需添加 c 選項,請輸入 :%s/old/new/gc


    命令格式

       在正常模式下一個命令的格式是∶

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



    文件操作

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

      :#,#w FILENAME 可將當前編輯文件第 # 行至第 # 行的內容保存到文件
         FILENAME 中。

      :r FILENAME 可提取磁盤文件 FILENAME 并將其插入到當前文件的光標位置
         后面。

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

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

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

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

    其內容如下:

    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) | 評論 (0)編輯 收藏

    從原來的blog中轉了幾個技術文章過來,原來還想轉幾篇非技術的文章,但是想了想,還是算了。

    posted @ 2006-02-04 23:28 Justfly Shi 閱讀(495) | 評論 (0)編輯 收藏

    對于ORACLE9i的初步安裝完成后,接下來由于“ORA-12571:TNS:包寫入程序失敗”錯誤,數(shù)據(jù)庫并沒有建立問題的解決方法:
    打開“D:\oracle\ora92\network\admin\sqlnet.ora”文件,把其中的“NTS”改為“NONE”

    posted @ 2006-02-04 23:22 Justfly Shi 閱讀(1848) | 評論 (0)編輯 收藏

    Eclipse3.1中的Alt+/快捷鍵除了分配給content assistent之外還分配給了Word Completion。所以在默認的情況下它是不好使的。
    解決方案:把Word Completion的快捷鍵給改成別的,我是改成Alt+shift+/。

    改快捷鍵的方法windows->preference->keys

    posted @ 2006-02-04 23:21 Justfly Shi 閱讀(1224) | 評論 (3)編輯 收藏

    http://www.jdom.org/docs/faq.html#a0350

    How do I keep the DTD from loading? Even when I turn off validation the parser tries to load the DTD file.

    Even when validation is turned off, an XML parser will by default load the external DTD file in order to parse the DTD for external entity declarations. Xerces has a feature to turn off this behavior named "http://apache.org/xml/features/nonvalidating/load-external-dtd" and if you know you're using Xerces you can set this feature on the builder.

    builder.setFeature(
    "http://apache.org/xml/features/nonvalidating/load-external-dtd", false);

    If you're using another parser like Crimson, your best bet is to set up an EntityResolver that resolves the DTD without actually reading the separate file.

    import org.xml.sax.*;
    import java.io.*;
    public class NoOpEntityResolver implements EntityResolver {
    public InputSource resolveEntity(String publicId, String systemId) {
    return new InputSource(new StringBufferInputStream(""));
    }
    }

    Then in the builder...

    builder.setEntityResolver(new NoOpEntityResolver());

    There is a downside to this approach. Any entities in the document will be resolved to the empty string, and will effectively disappear. If your document has entities, you need to setExpandEntities(false) code and ensure the EntityResolver only suppresses the DocType.

    posted @ 2006-02-04 23:19 Justfly Shi 閱讀(790) | 評論 (3)編輯 收藏

    今天在和小彭聊天的時候談到了他在最近的項目中的設計的時候,我說了這么一句“做設計的時候需要從用戶的角度來考慮,寫設計文檔的時候需要從開發(fā)人員的角度來考慮”。
    晚 上重新想到了這句話,是挺有用的,但是也是挺簡單的一個道理:做一個工作的時候想好了這個工作的目標是什么,然后從這個目標反過來對這個工作進行要求。比 如,做設計是為了實現(xiàn)需求,所以要從用戶使用的角度來考慮,設計文檔是為了指導開發(fā)人員寫代碼的,所以需要從開發(fā)人員編碼的角度來考慮。
    這些很簡 單的道理,我們這些IT人能不懂嗎?能不理解嗎?但是很多時候我們都忘了這個道理,很多時候總會說:什么什么事情我不知道該怎么做?OK,真的不知道嗎? 考慮一下做這個事情的目標是什么,然后回過頭來推一下,為了達到這個目標需要做什么?好的,有方案了吧?可能是錯誤的,也可能遺漏了很重要的事情,但是至 少不是不知道該怎么做了吧?

    posted @ 2006-01-17 23:56 Justfly Shi 閱讀(436) | 評論 (0)編輯 收藏

    這兩天在修改代碼中的log4j的配置。
    log4j的配置有兩種,一種是按照屬性進行配置,一種是使用代碼進行配置。
    1、按照屬性進行配置
    按照屬性進行配置可以分為按照properties格式的進行配置,一種是按照XML格式的進行配置,后者沒有研究過,在此就不寫了。
    按照properties 的設置比較簡單。使用org.apache.log4j.PropertyConfigurator類就可以了
    最簡單的當時是如下所示的代碼了。

    PropertyConfigurator.configure(_log4jProperties);
    另外在這個類中還有別的方法也相當有用,如:
     static  public  void configureAndWatch(String configFilename)
    2、使用代碼進行配置
    這個比較羅嗦,不過可控制性比較高
    代碼示例如下:
    Layout layout = new PatternLayout(logPattern);
    RollingFileAppender fileAppendar 
    = new RollingFileAppender(layout,_fileName, true);
    fileAppendar.setMaximumFileSize(_fileSize 
    * 1024 * 1024);
    fileAppendar.setMaxBackupIndex(_fileNum);


    ConsoleAppender consoleAppendar 
    = new ConsoleAppender(layout, "System.out");
    consoleAppendar.setLayout(layout);

    Logger mainLogger 
    = Logger.getLogger("cn.justfly");
    mainLogger.setLevel(Level.toLevel(_logLevel, Level.INFO));
    mainLogger.addAppender(fileAppendar);
    mainLogger.addAppender(consoleAppendar);

    需要分別配置Layout、Appender和Logger
    然后把Layout配置給Appender,把Appender添加給Logger,于是乎就大功告成了。
    3、去掉原有的屬性配置
    在上面的兩種方面中只是會添加原有的配置。并不會刪除掉原先的配置項。
    可以使用LogManager.resetConfiguration();來刪除原有的配置。
    4、鎖定
    在執(zhí)行配置代碼的時候,當有Logger在干活的時候怎么辦?
    比如在你去掉原有的配置項而還沒有來得及設置新的屬性的時候的時候
    這個時候Log4j的配置是空的,如果這個時候有一個Logger正在log的話是會出錯的。
    所以我們需要一個鎖,它可以讓你在進行配置的時候阻塞其它Logger的動作。
    這個鎖就是rootLogger。可以通過Logger.getRootLogger()獲取到。

    posted @ 2005-12-26 21:21 Justfly Shi 閱讀(3576) | 評論 (0)編輯 收藏

    主站蜘蛛池模板: 久久精品夜色噜噜亚洲A∨| 永久免费AV无码网站国产| 亚洲电影免费观看| 亚洲精品无码MV在线观看| 国产一级淫片免费播放| 久久精品免费一区二区喷潮| 亚在线观看免费视频入口| 和老外3p爽粗大免费视频| jizz免费观看| caoporn成人免费公开| 在线看片免费人成视频福利| 曰批全过程免费视频播放网站 | 亚洲乱色熟女一区二区三区蜜臀| 亚洲码在线中文在线观看| 亚洲首页国产精品丝袜| 久久精品国产亚洲av麻豆| 国产亚洲精品a在线无码| 亚洲精品美女在线观看| 精品无码专区亚洲| 成人福利在线观看免费视频| 国产日韩AV免费无码一区二区三区| 黄网站免费在线观看| 日本免费人成网ww555在线 | 国产成人精品免费视频大全| 无码人妻一区二区三区免费看| 成人免费无码大片A毛片抽搐色欲 成人免费无码大片a毛片 | 亚洲av纯肉无码精品动漫| 亚洲成av人片天堂网无码】| 亚洲avav天堂av在线网毛片| 香蕉视频在线免费看| 美女视频黄a视频全免费| 毛片a级毛片免费观看免下载| 亚洲精品无码久久毛片| 亚洲综合在线另类色区奇米| 久久青青成人亚洲精品| 亚洲人成网站在线在线观看| 免费成人在线视频观看| 国产一区二区三区免费看| 亚洲视频免费观看| 亚洲乱亚洲乱妇24p| 日韩精品久久久久久免费|