MDA/MDD/TDD/DDD/DDDDDDD
          posts - 536, comments - 111, trackbacks - 0, articles - 0
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          來自:http://www.javaeye.com/topic/17518?page=1
          問題是我覺得rich domain object 和domain Dao雙向依賴的關(guān)系我也很不喜歡。我覺得那么就像現(xiàn)在那么樣,thin domain object,外加Dao層和Service層,單向依賴,分層很清楚,要么就向rails那樣,就是一個model,管你dao還是service,全 部都在model里面。
          赫赫,請問,沒有domain model ,何來dao ,何來敲擊鍵盤而來的代碼?
          dao依賴domain model是很理所當(dāng)然的。 不過讓domain model依賴于dao,確實很拗口,所以dao肯定需要一個接口,domain model依賴于dao的接口也是很合理的。這里的關(guān)鍵在于:
          把DAO已經(jīng)published的接口作為整個領(lǐng)域模型比較核心的一部分。 如果設(shè)計比較好的ORM 關(guān)聯(lián)可能會把引入query 導(dǎo)致的雙向依賴的危險減至最小,不會因為DAO接口實現(xiàn)的失敗導(dǎo)致整個領(lǐng)域模型的錯誤,而把這種錯誤轉(zhuǎn)變?yōu)轭I(lǐng)域模型關(guān)聯(lián)關(guān)系的設(shè)計錯誤。

          這里有個publish接口容易導(dǎo)致被誤用的危險,DAO接口如果是領(lǐng)域模型提出的請求實現(xiàn),那么這個設(shè)計就會很冒風(fēng)險,因為如果一旦你的DAO接 口publish了,你就要冒著別的正在寫domain model的開發(fā)人員會耦合于你的接口,一旦你的接口publish了,改動就非常困難了,而且如果一旦發(fā)現(xiàn)因為需求分析不夠?qū)е碌腄AO接口邏輯有問 題,那么這個將是非常痛苦的重構(gòu)/修改過程。
          所以關(guān)鍵在于讓合理的關(guān)聯(lián)代替復(fù)雜的查詢。

          說到接口,順便說說對滿天飛的interface的反感,我以前就是那樣滿天飛的,先在感覺飛的太高了。

          接口其實就等同于代碼隱藏,說句不好聽的話就是代碼私有化。 我發(fā)布一個接口,加上一些比較清晰的說明。 調(diào)用著一般都會只看接口說明感覺合適就直接IOC進來用了,久而久之就有可能被誤用接口的危險。 如果沒有接口,依賴代碼就是文檔的和相互可以修改的原則,那么大家都可以直入對方的正體,看一下對方代碼的具體實現(xiàn)邏輯,有問題可以直接提出來探討,這樣 就減少了程序風(fēng)險,而且也省去了來來回回反反復(fù)復(fù)修改interface 和實現(xiàn)的麻煩。
          接口就如同是一個蓋子,蓋住了很多東西,然而在代碼極度共享和互改的環(huán)境中,還是少用為妙。

          我的觀點是一個重要的接口都應(yīng)該提供一個抽象類來實現(xiàn)基本的骨架!這樣當(dāng)你的接口改動時只影響你的抽象類。而對實現(xiàn)接口的繼承抽象類的子類沒有影響。 其實接口只是定義mixin(混合類型)的理想選擇(java中接口才允許多繼承), 例如:一個教練本身也是球員。那么我們可以定義一個mixin接口,組合一些新的方法讓實現(xiàn)這個mixin的抽象類不僅具有Train和Play的職責(zé), 還有組合產(chǎn)生的特性。
          一個缺點:不支持分布式部署。無法把一個bean給fail over或者re-deploy。
          實際上,所有輕量級ioc容器真用起來都沒什么用處,因為它們都無法應(yīng)付分布式的需求。(jboss mc的作者跟我說的)

          呵呵?誰有分布式的需求?

          spring不是支持集群了嗎?分布式就用不著了吧

          有一個收費的T字頭的方案能幫助spring實現(xiàn)分布式吧,沒有免費的實現(xiàn)是挺麻煩的。

          我們的做法是在5臺tomcat服務(wù)器前面放一臺四層交換機之類的硬件,這樣,相同的ip來訪問時會被指派到同一臺tomcat,因此不需要http session共享,也能達到類似的分布式效果,還節(jié)約了session共享的消耗。

          說到接口,順便說說對滿天飛的interface的反感,我以前就是那樣滿天飛的,先在感覺飛的太高了。

          一直覺得interface就是C++里的.h 頭文件,好不容易java里不需要.h,脫了苦海,現(xiàn)在大家又爭先恐后再入火坑。

          其實如果把interface用于動態(tài)proxy, cglib已經(jīng)提供了解決方案,spring的OAOP,測試時的easyMock,都有cglib實現(xiàn),性能比基于interface proxy的更高一點點。

          如果是代碼設(shè)計方面的,一定要看清楚實際情況再決定是否抽象interface。我覺得interface在代碼設(shè)計方面最主要的應(yīng)用其實是多重繼承吧和firebody說的蓋子功能吧。

          所以springside里只有幾個用到多重繼承和webservice蓋子的時候才用了interface. 比如dao, appfuse等sample為了演示多種dao方案才用interface阿,我們沒事又不會換orm方案的,忙活這個接口沒意義呀。


          posted @ 2007-11-21 22:44 leekiang 閱讀(2452) | 評論 (2)編輯 收藏

          IE有3種方式都可以創(chuàng)建一個元素:

          1 document.createElement("<input type=text>")
          2 document.createElement("<input>")
          3 document.createElement("input")

          Firefox只支持一種方式:
          document.createElement("input");document.setAttribute(name,value);

          ------------
          注: 在一個節(jié)點下增加子節(jié)點 IE也比Firefox下的方式要多.

          IE:??

          1 node.insertBefore(Element)
          2 node.insertAfter(Element)
          3 node.appendChild(Element)

          而Firefox僅支持 node.appendChild.

          在IE里面,html元素如果可以作為容器,那么在document.createElement創(chuàng)建元素時是無法設(shè)置name屬性的,比如:div,span,font等等。
          相反不可以做為容器的,在用document.createElement創(chuàng)建元素時可以設(shè)置控件的name屬性,比如:input,button,a,img等等

          posted @ 2007-11-14 22:04 leekiang 閱讀(3960) | 評論 (0)編輯 收藏

          1,在jsp引入以下js,其中custService是自己命的名
          <script type='text/javascript' src='<%=request.getContextPath() %>/dwr/engine.js'> </script>
          ??? <script type='text/javascript' src='<%=request.getContextPath() %>/dwr/util.js'> </script>
          ??? <script type='text/javascript' src='<%=request.getContextPath() %>/dwr/interface/custService.js'> </script>
          ???
          2,在web.xml配置
          <servlet>
          ??? <servlet-name>dwr-invoker</servlet-name>
          ???? <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
          ??? <init-param>
          ????? <param-name>debug</param-name>
          ????? <param-value>true</param-value>
          ??? </init-param>
          ??? <init-param>
          ????? <param-name>activeReverseAjaxEnabled</param-name>
          ????? <param-value>true</param-value>
          ??? </init-param>
          ??? <init-param>
          ????? <param-name>initApplicationScopeCreatorsAtStartup</param-name>
          ????? <param-value>true</param-value>
          ??? </init-param>
          ??? <init-param>
          ????? <param-name>maxWaitAfterWrite</param-name>
          ????? <param-value>100</param-value>
          ??? </init-param>
          ??? <!--
          ??? <init-param>
          ????? <param-name>org.directwebremoting.extend.ServerLoadMonitor</param-name>
          ????? <param-value>org.directwebremoting.impl.PollingServerLoadMonitor</param-value>
          ??? </init-param>
          ??? -->
          ??? <load-on-startup>1</load-on-startup>
          ? </servlet>

          ? <servlet-mapping>
          ??? <servlet-name>dwr-invoker</servlet-name>
          ??? <url-pattern>/dwr/*</url-pattern>
          ? </servlet-mapping>
          ?
          ?3,dwr.xml,放在web-info下,其中 custService為spring中的bean名
          ?<?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "<dwr>
          ?<allow>
          ??<create creator="spring" javascript="custService">
          ???<param name="beanName" value="custService" />
          ??</create>
          ?</allow>
          </dwr>

          4,
          function refreshSelect(){
          var type =$("seltype").value;
          if('dept'==type){
          getDeptList();
          }
          else if('xm'==type){
          getXmList();
          }
          }

          function getDeptList() {
          ? custService.getDeptList(function(data) {
          ? var deptlist =document.getElementById("selectlist");
          dwr.util.removeAllOptions("selectlist");
          ? dwr.util.addOptions("selectlist",data);
          ? });
          }

          function getXmList() {
          ? custService.getXmList(function(data) {
          ? var deptlist =document.getElementById("selectlist");
          dwr.util.removeAllOptions("selectlist"); //dwrutil的特有方法
          ? dwr.util.addOptions("selectlist",data); //
          ? });
          }

          5,spring中service的方法:
          ?public Map getDeptList() {
          ??? Map map = new TreeMap();//排序,不用Hashmap
          ?? map.put("", "選擇一個部門");
          ??List l = this.typeService
          ????.getList("from Dept a where a.enabled = '0' order by a.ordernum");
          ??for (Iterator iterator = l.iterator(); iterator.hasNext();) {
          ???Dept?d = (Dept) iterator.next();
          ???map.put(d.getDeptid(), d.getDeptname());
          ??}
          ??return map;
          ?}
          ?
          6,
          <select name="" id="seltype" onchange="refreshSelect();">
          ????????????<option value="">
          ?????????????--選擇方式--
          ????????????</option>
          ????????????<option value="xm">
          ?????????????按項目
          ????????????</option>
          ????????????<option value="dept">
          ?????????????按部門
          ????????????</option>
          ???????????</select>
          7,返回為布爾類型的處理
          <script? type="text/javascript">
          ??? function showResult(b) {//b為布爾值
          ??????? if (b) {
          ??????????? alert("已經(jīng)有重復(fù)的登錄名了!");
          ??????? } else {
          ??????????? alert("登錄名尚未注冊過!");
          ??????? }
          ??? }function checkRepeat(s) {
          ??????? var o = document.getElementById(s);
          ??????? if (o) {
          ??????????? UserManager.getUser(o.value, showResult);//js不允許重載
          ??????? }
          ??? }
          ?
          </script>

          <input type="text" name="user" id="user">
          <input type="button" onclick="checkRepeat('user')" value="檢查是否重復(fù)">


          public boolean getUser(String username)
          {
          ??? String sql="select count(*) from user where userName=? ";
          ?int i=getJdbcTemplate().queryForInt(sql,new Object[]{username});
          ??? if(i>0)
          ??? return true;
          ??????? else
          ???? return false;
          }


          ?

          posted @ 2007-11-12 22:32 leekiang 閱讀(953) | 評論 (0)編輯 收藏

          1,查所有的子節(jié)點 select? *? from wz_tree???start with?id = 1 connect by prior?id = pid;
          2,查所有的父節(jié)點??select? *? from wz_tree???start with?id =?256 connect by prior pid = id;
          ?? 無論正樹還是倒樹, 關(guān)鍵就在于connect by的條件.
          ?? 正樹:??必須是??‘父’= prior ‘子’
          ?? 倒樹:??必須是??‘子’= prior ‘父’
          3,查分類的路徑, 用逗號連接:select? sys_connect_by_path(mc, ',') ? from wz_tree???start with?id = 1 connect by prior?id = pid;http://www.itpub.net/838127.html講的很詳細。
          ?? 后注:查某個節(jié)點的全路徑,用上面的辦法是先取得所有節(jié)點的全路徑的一個臨時結(jié)果集,再從這個臨時結(jié)果集里查詢某個節(jié)點的全路徑,這種辦法太慢了。正確的做法是先查倒樹的全路徑,再取全路徑最大的那條記錄,這樣做速度飛快。sql如下:
          ?? select? max(sys_connect_by_path(mc, ',')) ? from wz_tree???start with?id = ? connect by prior pid = id

          ?? 后注:后來發(fā)現(xiàn)一棵15000條記錄的樹,查所有節(jié)點的全路徑還是非常快的(0.1秒)。
          ??
          4,查某個表的字段名:
          select max(substr(SYS_CONNECT_BY_PATH(COLUMN_NAME, ','), 2)) col
          ? from (select COLUMN_NAME, column_id
          ????????? from user_tab_columns
          ???????? where table_name = '&TEST')--&為plsqldeveloper里的字符串占位符,執(zhí)行時會彈出對話框讓你填值
          ?start with column_id = 1
          connect by column_id = rownum;

          5,select? *? from wz_tree?where mc like '%五金'??start with?id = 1 connect by prior?id = pid;
          和select? *? from wz_tree?start with?id = 1 connect by prior?id = pid?and mc like '%五金'?
          二者的查詢結(jié)果不一樣.前者正常的先按名稱進行過濾,后者過濾的是樹的分支? 詳見前面的鏈接。

          6,ORA-30004: 使用 SYS_CONNECT_BY_PATH 函數(shù)時,不能將分隔符作為列值的一部分。
          ? 這是因為分隔符在列值里出現(xiàn)了。這個在使用oracle的SYS_CONNECT_BY_PATH函數(shù)時是禁止的。所以要把分隔符換掉。
          ? 如果出現(xiàn)過以上報錯,換掉分隔符后再次執(zhí)行含SYS_CONNECT_BY_PATH 函數(shù)的sql時可能會報 "ora-00600: 內(nèi)部錯誤代碼 ,參數(shù):[kokvxsql1],[][],[],..." 。不明白為什么,但重啟oracle就不報錯了。

          7,在oracle10g可以利用偽列函數(shù)CONNECT_BY_ISLEAF來判斷當(dāng)前行是不是葉子,如果是葉子就會在偽列中顯示“1”,如果不是葉子而是一個分支就顯示“0”

          8,sys_connect_by_path除了用于層次關(guān)系,還可以用于行列轉(zhuǎn)換(借助rownum)。
          ? 如把一個表的所有列連成一行,用逗號分隔:
          select max(substr(sys_connect_by_path(column_name,','),2))
          from (select column_name,rownum rn from user_tab_columns where table_name ='DEPT')
          start with rn=1 connect by rn=rownum ;

          -------------查得結(jié)果為:
          DEPTNO,DEPTNAME,MGRNO

          參考:
          http://ons.javaeye.com/blog/227113



          posted @ 2007-10-31 21:13 leekiang 閱讀(1832) | 評論 (0)編輯 收藏

          1,css文件里的background里的圖片路徑是相對于該css文件的路徑
          2,9pt=12px
          3,要移動的對象的style中position屬性一定要指定為absolute或者relative,因為position屬性默認是static,在這種情況下,對象的left和top屬性會被CSS解釋器忽略。
          ??????http://www.aygfsteel.com/yoda/archive/2008/04/16/193461.html

          ????? 相對定位是"相對于"元素在文檔流中的初始位置,而絕對定位是"相對于"最近的已定位祖先元素,如果不存在已定位的祖先元素,那么是最初的包含塊(可能是html元素)。
          ????? http://www.ddcat.net/blog/archives/2006/08/121.html
          4, 怎么讓checkbox與文字在同一水平線
          ??? 給checkbox定義vertical-align:middle;屬性?
          5,跨不同編碼格式的應(yīng)用傳遞數(shù)據(jù)時指定編碼方式的處理,見
          ??? 在IE下面指定表單編碼方式?
          ?? 20080512備注:此方法好像不穩(wěn)定
          6,在IE里一個漢字對應(yīng)2個&nbsp ,在firefox卻不一樣,不知道如何兼容。
          7,在頁面里寫樣式時,<style type="text/css">里的type必須有,否則不起作用
          8,跨瀏覽器的table樣式定義
          cellpadding="0" cellspacing="1" bgcolor="#cccccc"
          #tabid td{//不要定義在tr上,否則不兼容
          font-size:12px;
          padding:2px 3px;
          text-align:center;
          vertical-align:middle;
          background-color: #ffffff;
          }

          #tabid .table_th td{
          background-color:#C2E6F5;
          font-weight:bold;
          }
          9,? 與某QQ號對話,支持IE和Firefox
          tencent://message/?uin=73035879
          10,輕松玩轉(zhuǎn)花樣表單(轉(zhuǎn))
          ???? 講了各種表單域的屬性說明和樣式控制。例如textarea的wrap能控制是否自動換行,輸入框如何實現(xiàn)信紙效果。
          11,IE密碼框里模擬顯示*號
          http://bbs.51js.com/thread-72067-1-1.html
          12,讓alt和title換行的小技巧
          在"&#"后面加值,ASCII碼回車:13,ASCII碼換行:10,只用&#10就行
          13,居中問題
          ??? (1)div居中.
          ??? IE將text-align:center誤解為讓所有東西居中,而不只是文本.
          ??? 非IE,只需定義div的寬度,然后把水平空白邊設(shè)為auto????? margin:0 auto;
          ?? 把以上兩者都考慮進來,即可以做跨瀏覽器的水平居中.
          ?? 垂直居中比較麻煩,現(xiàn)在先寫死,以后再考慮如何通用
          ??? (2)圖片居中
          ???? 現(xiàn)在先把圖片放在一個居中的大小與圖片一樣的div中,通用的方案以后再考慮。
          ??? http://topic.csdn.net/u/20070114/20/0718aef7-ce18-490a-9be3-b8f765490c79.html?1700147196
          ??? http://www.websbook.com/htmlcssdiv/divzrhstpczjz_14033.html
          ??? (3)div中的文字垂直居中可以通過設(shè)置line-height解決?

          14,css如何區(qū)分text還是button(IE6不支持樣式選擇器)
          input
          {
          ?border:expression(this.type=="text"?'1px solid #58D3E1':'');
          }
          15,td里如果只有英文不會折斷換行
          辦法:<td?style="width:30px;word-wrap:break-word;word-break:break-all;">abcdabcdabcdabcdabcd</td>

          16, 表單的reset方法,對于select元素有問題,不能復(fù)原。
          ?自己寫了一個代替默認的reset方法,但沒有考慮checkbox,radio
          ? function my_reset(){
          ??? form1.reset();
          ??? jQuery('#sel').val('${obj.sel}');
          ??? }

          17,iframe如果要設(shè)置滾動條,就需要設(shè)置寬度或高度。
          ?? 訪問iframe里的元素: .contentWindow.document.getElementById('')

          18

          http://blog.163.com/pcboby@126/blog/static/3120140020085692040249/
          http://kazesky.spaces.live.com/blog/cns!FC7C5F854D637274!322.entry

          posted @ 2007-10-30 13:44 leekiang 閱讀(433) | 評論 (0)編輯 收藏

          1,firefox對css的解析要求很嚴格,假如css文件里的某個樣式的括號沒有關(guān)閉,或者該樣式有問題,那么自這個樣式開始,后面所有的樣式都不認, 而IE除了那個有問題的樣式以外,其他的樣式都能照常解析。
          2,firefox的緩存目錄在 C:\Documents and Settings\administrator\Local Settings\Application Data\Mozilla\Firefox\Profiles\rx9e4si8.default\Cache 而不是 C:\Documents and Settings\administrator\Application Data\Mozilla\Firefox\Profiles\rx9e4si8.default 應(yīng)該要關(guān)掉文件隱藏才能看到。
          3, 在地址欄里輸入about:config可改配置,下面是各個參數(shù)的含義
          ?? http://wiki.mozcn.org/index.php/Firefox:aboutconfig_B
          ?? about:cache可看緩存文件(內(nèi)存的和物理的)
          ?? network.http.version可修改http協(xié)議的版本
          4,歷史菜單里有"顯示全部歷史"
          5,FF3可以選中頁面中的文字拖動到google搜索框

          6,擴展”(Extensions)和“插件”(Plugins)的區(qū)別
          “擴展”是Firefox自身的功能,與操作系統(tǒng)無關(guān),而“插件”卻是獨立的程序,在不同平臺下的安裝包也截然不同.另外,使用Portable版本的Firefox用戶也需要注意,只有“擴展”可以Portable,而“插件”則需在每臺機器上都裝一遍.
          http://hi.baidu.com/xiaowang19/blog/item/c1893251122bb11b367abead.html

          7,firefox快捷鍵
          “/”鍵快速進行頁面內(nèi)的文本搜索
          Space : Show next screen
          Alt+D :進入地址欄
          ctrl + 1 ... 9 :: 切換到某個tab
          ctrl + tab / ctrl + shift + tab :: 循環(huán)進入前/后tab
          ctrl + w :: 關(guān)閉當(dāng)前tab
          ctrl + K :焦點移到google輸入框
          ctrl + L :焦點移到地址欄
          在地址欄敲alt + enter = 在新tab打開當(dāng)前url
          ctrl + g = 執(zhí)行頁面搜索后,尋找下一個符合條件的文字
          ctrl + t = 新增一個tab
          ctrl + shift + t = 重新打開剛剛關(guān)閉的tab,是上一個快捷鍵的反向操作,非常好用
          crtl + tab = 向前切換tab
          crtl + shift + tab = 向后切換tab
          F11 : 全屏
          ctrl+U :查看網(wǎng)頁源代碼
          ctrl+enter:在地址欄里敲入test,快捷鍵后變?yōu)閣ww.test.com

          8,firefox的配置都在C:\Documents and Settings\Administrator\Application Data\Mozilla\Firefox”下,其中“Administrator”就是用戶名,重裝時先將這個目錄下的文件備份

          9,
          繁體轉(zhuǎn)換簡體代碼(在地址欄敲入):
          javascript:(function(){var%20s=document.getElementById("tongwenlet_cn");if(s!=null){document.body.removeChild(s);}var%20s=document.createElement("script");s.language="javascript";s.type="text/javascript";s.src="http://tongwen.openfoundry.org/NewTongWen/tools/bookmarklet_cn.js";s.id="tongwenlet_cn";document.body.appendChild(s);%20})();


          10,清理內(nèi)存
          在地址欄中使用about:config打開FF的配置頁面,右鍵添加一個屬性:名稱為config.trim_on_minimize,值類型為 boolean,值為true,然后將FF關(guān)閉之后再打開,這樣該設(shè)置就生效了。該屬性的作用是當(dāng)Firefox最小化之后會自動釋放內(nèi)容,可以打開任務(wù)管理器進行驗證。該方法操作和設(shè)置都最簡單。
          browser.sessionhistory.max_total_viewers,缺省值是-1,表示開啟了歷史頁面緩存功能,如果要屏蔽它,只需要將該參數(shù)設(shè)為0
          還可以使用SweepRAM http://jetmah.iteye.com/blog/743803

          posted @ 2007-10-23 23:21 leekiang 閱讀(293) | 評論 (0)編輯 收藏

          1,firebug
          使用說明http://blog.csdn.net/tianxiaode/archive/2007/09/02/1769152.aspx
          2, flashgot
          3, Cache Status
          ?? 可在狀態(tài)欄查看和清除緩存(包括硬盤和內(nèi)存上的),"附加軟件"-->"選項"可設(shè)置緩存最大值。
          4, CacheViewer
          ?? 排列并允許搜索緩存文件,可與3互相補充。
          5,Fasterfox 已棄用
          6, Better Gmail
          ?? 還不熟悉
          7,Google Toolbar for Firefox
          ?? 書簽很有用。
          8,flashblock
          ?? 只有點擊后才會加載flash,不點擊只顯示一個占位
          https://addons.mozilla.org/zh-CN/firefox/addon/433
          9,livehttpheaders :類似httpwatch的抓包工具
          http://livehttpheaders.mozdev.org/
          ? HttpFox 功能類似,貌似更好用
          10,ServerSpy
          ??? 獲取某網(wǎng)站使用的web服務(wù)器類型
          11,Leak Monitor
          https://addons.mozilla.org/zh-CN/firefox/addon/2490
          http://www.jb51.net/article/8145.htmLeak Monitor
          12, ProxySwitch
          ??? 瀏覽器代理.另外還有FoxyProxy和switchproxy
          http://www.proxy-offline-browser.com/ProxySwitch/
          13,F(xiàn)ile Title
          保存網(wǎng)頁時以網(wǎng)頁的title命名
          https://addons.mozilla.org/en-US/firefox/addon/834
          14,CoLT
          提供一種很便捷的方式復(fù)制網(wǎng)頁上的鏈接,會給寫blog帶來一些方便。
          https://addons.mozilla.org/en-US/firefox/addon/1812

          15,searchstatus
          顯示網(wǎng)站的Alexa排名,對一般人意義不大。
          16,F(xiàn)ireGestures
          ?可以讓您通過五個類型的鼠標手勢來執(zhí)行各種各樣的命令:
          * 鼠標手勢 (按住右鍵不放移動鼠標);
          * 滾輪手勢 (按住右鍵不放滾動滾輪);
          * 搖桿手勢 (按住右鍵不放左擊,反之亦然);
          * 按鍵手勢 (按住Ctrl / Shift鍵不放使用鼠標手勢);
          * 標簽滾輪手勢 (在標簽欄上滾動滾輪)。

          17,Session Manager
          可以保存session,還可以記錄多組tab頁

          20,YSlow
          需要先裝firebug
          YSlow analyzes web pages and tells you why they're slow based on the rules for high performance web sites. YSlow is a Firefox add-on integrated with the popular Firebug web development tool. YSlow gives you:
          ??? * Performance report card
          ??? * HTTP/HTML summary
          ??? * List of components in the page
          ??? * Tools including JSLint
          21,Firecookie用來管理Cookies.
          22,firephp提供給PHP開發(fā)者使用,能夠管理PHP函數(shù)
          23, Jiffy是由Scott Ruthfield 和 Whitepages.com團隊開發(fā)的一個細顆粒和靈活的網(wǎng)站性能追蹤,分析套件。
          24,RainbowForFirebug brings Javascript syntax highlighting to Firebug.
          25,LiveCoder lets you poke at the browser's DOM, just like Firebug. But LiveCoder also lets you examine Firebug itself. In addition to examining the DOM, you can alter it including changing functions. This is a great way to debug your code and test fixes more quickly.
          26,Pixel Perfect is a firebug extension that allows web developers to easily overlay a web composition over top of the developed html.這個能讓一個圖片懸浮在網(wǎng)頁上,并且可以設(shè)置透明度和微調(diào)坐標。這對某些人來說是好東西。

          27,GreaseMonkey
          ?可以給別人的網(wǎng)站添加自定義代碼

          28,IE Tab
          ?可以在ff中打開ie的tab
          ??
          29,wmlbrowser
          模擬WAP瀏覽查看wml頁面

          30,ScrapBook
          幫助您保存和整理收藏的網(wǎng)頁資料

          31,RefControl
          針對每個網(wǎng)站送出想要的 HTTP Referer.Burning注:對于Sina,Sohu,163,百度等BSP的Blog,只有這個才能在鮮果中順利的看到圖片,不至于讓他們提示“此圖片用來與***溝通”

          32,Zotero
          文獻管理工具
          http://www.snakehsu.info/sigma_c/2007/10/firefox-zotero.html

          33,Colorzilla
          可以捕獲當(dāng)前鼠標所指的頁面坐標位置和顏色,以及DOM路徑

          34,MeasureIt
          在Firefox中畫坐標和度量尺的小插件,用它測量HTML元素的寬高很是方便

          35,Simple Mail
          http://www.hellohuohu.com/2008/01/03/94/

          36,ScribeFire
          寫博客的.即以前的Performancing for Firefox
          http://cajon.cnblogs.com/archive/2006/05/16/401423.html

          37,ctrl-Tab 比showcase好用
          ?? 可預(yù)覽可切換tab,快捷鍵為ctrl+tab

          38,Easy DragToGo
          ?? 可以定義拖拽文字鏈接圖片的行為
          39,Quick TransLation
          ?? 翻譯擴展
          40,QuickNote
          ?? 筆記擴展
          41,新同文堂
          ?? 繁簡轉(zhuǎn)化
          42,Show Location
          ?? 利用 IP 數(shù)據(jù)庫,在狀態(tài)欄顯示網(wǎng)頁服務(wù)器的位置
          ?? 說明見http://mozilla.sociz.com/viewthread.php?tid=18118

          43,Tamper Data 篡改數(shù)據(jù)
          TamperData is an extension to track and modify http/https requests,
          • security testing of Web based applications
          • tracking request/responses
          http://zoukejian.blog.51cto.com/131276/62057

          44,UnMHT 另存為mht文件

          45,Text Link :雙擊url文本可打開

          46,有了firebug,為何還要用web developer

          47,F(xiàn)iddler Switch
          在前端開發(fā)界,有這么一個說法:Firefox + Firebug + Fiddler,稱之為 3F,拯救了前端的工作。Fiddler是個偉大的工具,默認在IE上工作得挺好,但在Firefox上需要設(shè)置代理,有點麻煩,F(xiàn)iddler Switch就是Taobao UED空帷達人為了解決此問題而開發(fā)的。如果你還沒用過Fiddler,推薦閱讀下這篇文章:如何直接調(diào)試線上頁面的JavaScript和CSS
          Firefox非主流開發(fā)擴展推薦
          如何直接調(diào)試線上頁面的JavaScript和CSS

          48,autopager

          49,codeburner
          CodeBurner is a Firefox add-on that integrates with Firebug, to extend it with reference material for HTML and CSS.

          50,tab counter
          51, cssviewer
          52,CustomizeGoogle
          ?is a Firefox extension that enhances Google search results by adding extra information (like links to Yahoo, Ask.com, MSN etc) and removing unwanted information (like ads and spam).
          53,downthemall
          54,google reader watcher
          55,google 筆記本
          56,image zoom
          57,NoScript
          58,PDF Download
          59,Prism is a simple XULRunner based browser that hosts web applications without the normal web browser user interface. Prism is based on a concept called Site Specific Browsers (SSB)
          60,reminderfox
          ?? 顯示和管理備忘和計劃



          修改舊擴展以支持ff3.0.1:改xpi為zip,然后把install.rdf 文件拖出,找到 em:maxVersion 標簽,把值改為 3.0.1 ,再放回去,重新改后綴為xpi.
          http://www.awflasher.com/blog/archives/750
          http://www.hualian.net/
          http://www.softwareishard.com/blog/firebug/list-of-firebug-extensions/
          實戰(zhàn) Firefox 擴展開發(fā)

          posted @ 2007-10-23 22:50 leekiang 閱讀(891) | 評論 (0)編輯 收藏

          1,
          同步時報錯,看log:
          !ENTRY org.eclipse.core.jobs 4 2 2007-10-12 13:22:35.102
          !MESSAGE An internal error occurred during: "Synchronizing CVS".
          !STACK 0
          java.lang.IllegalArgumentException: Attempted to beginRule: F/mis, does not match outer scope rule: F/mis/images
              at org.eclipse.core.runtime.Assert.isLegal(Assert.java:62)
              at org.eclipse.core.internal.jobs.ThreadJob.illegalPush(ThreadJob.java:122)
              at org.eclipse.core.internal.jobs.ThreadJob.push(ThreadJob.java:232)
          找不到原因,重新發(fā)布一下就好了。可以把myeclipse的validate禁掉。
          注:eclipse的log在工作空間下的.metadata里


          posted @ 2007-10-22 20:46 leekiang 閱讀(1051) | 評論 (0)編輯 收藏

          1,ctrl+"/"??????? 對單行進行注釋切換
          2, ctrl+鼠標?? ? ? 快速滾動
          3,myeclips6不能用alt+"/"
          ?? 解決:在key設(shè)置中把word completion的alt+"/"去掉,把content assistant的ctrl+space改為alt+"/"
          4,Ctrl+K:將光標停留在變量上,按Ctrl+K鍵可以查找到下一個同樣的變量
          5,
          Shift+Ctrl+K:Ctrl+K查找的方向相反
          6,
          Shift+Ctrl+X:將所選字符轉(zhuǎn)為大寫
          7,Shift+Ctrl+Y:
          將所選字符轉(zhuǎn)為小寫
          8,
          Ctrl+Q:回到最后一次編輯的地方
          9, Ctrl+Y:重作,作用與ctrl+z相反
          10,Ctrl+H:搜索
          11,調(diào)試時的快捷鍵
          ?? inspector --Ctrl+shift+I
          ?? 下一步? --F6
          ?? Resume(綠三角) --F8
          12,F3? 跳轉(zhuǎn)到類、變量的聲明
          13,切換編輯窗口
          ??? 原來是ctrl+F6,現(xiàn)在被我改為Ctrl+Tab,相應(yīng)的反向操作改為ctrl+shift+tab,當(dāng)然也可以用上下箭頭進行選擇。
          14,Tab 選中多行右移
          ??? Shift+Tab 相反
          15,ctrl+M? 窗口最大化
          16, shift+enter及ctrl+shift+enter
          ? ? Shift+enter在當(dāng)前行之下創(chuàng)建一個空白行,與光標是否在行末無關(guān)。Ctrl+shift+enter則在當(dāng)前行之前插入空白行。
          17,ctrl+.及ctrl+1:下一個錯誤及快速修改

          ??? ctrl+.將光標移動至當(dāng)前文件中的下一個報錯處或警告處。這組快捷鍵我一般與ctrl+1一并使用,即修改建議的快捷鍵。新版Eclipse的修改建 議做的很不錯,可以幫你解決很多問題,如方法中的缺失參數(shù),throw/catch exception,未執(zhí)行的方法等等。

          18 ctrl+e:快速轉(zhuǎn)換編輯器
          19 Ctrl+I縮進功能,但其更加實用之處在于 當(dāng)你從網(wǎng)頁上復(fù)制一些代碼直接粘貼到ME中,代碼前會有很多“紅色浪線”,這是時候用這個快捷鍵可以很快去掉。
          20? Alt+Shift+S 快速到達“source”
          ??? (1)直接一個R????? 添加 屬性的 Setter 和 Getter;
          ??? (2)直接一個C????? 添加 無參構(gòu)造函數(shù);
          ??? (3)直接一個O????? 添加 帶參構(gòu)造函數(shù);
          21? Ctrl+`(注意這是個點,在“1“的旁邊) 去掉所有斷點(如果發(fā)布Spring項目,加了“斷點”發(fā)布可能會遇到問題,所以此快捷鍵很是有用)
          22
          ?? F5(步入step into),就是單步執(zhí)行,遇到子函數(shù)就進入并且繼續(xù)單步執(zhí)行
          ?? F6(步進step over),是在單步執(zhí)行時,在函數(shù)內(nèi)遇到子函數(shù)時不會進入子函數(shù)內(nèi)單步執(zhí)行,而是將子函數(shù)整個執(zhí)行完再停止,也就是把子函數(shù)整個作為一步。
          ?? F7(步出step return),就是但單步執(zhí)行到子函數(shù)內(nèi)時,用step return就可以執(zhí)行完子函數(shù)余下部分,并返回到上一層函數(shù)。
          ?? F8(resume開始,跳過該斷點)

          25,一篇很好的講eclipse調(diào)試的文章
          在eclipse調(diào)試JSP和java程序
          遠程調(diào)試http://www.javaeye.com/topic/633824


          更多快捷鍵組合可在Eclipse按下ctrl+shift+L查看。
          http://www.aygfsteel.com/dashi99/archive/2009/06/02/279599.html

          Netbeans debug:F5(resume開始,跳過該斷點),F6(BUILD CURRENT PROJECT),F7(步入step into),F8(步進step over)

          call Hierarchy (alt+shift+F12).


          posted @ 2007-10-21 16:43 leekiang 閱讀(1045) | 評論 (0)編輯 收藏

          var x=document.getElementById('myTable').rows;
              
          var y=x[0].cells;
              y[
          0].innerHTML="NEW CONTENT";

           var x=document.getElementById('myTable').insertRow(2);
              
          var y=x.insertCell(0);
              
          var z=x.insertCell(1);
              y.innerHTML
          ="NEW CELL1";
              z.innerHTML
          ="NEW CELL2";

          見www.java2s.com

          posted @ 2007-10-19 16:28 leekiang 閱讀(2041) | 評論 (3)編輯 收藏

          僅列出標題
          共54頁: First 上一頁 44 45 46 47 48 49 50 51 52 下一頁 Last 
          主站蜘蛛池模板: 聂拉木县| 玉山县| 西丰县| 十堰市| 健康| 扶风县| 宝应县| 涞水县| 融水| 祥云县| 巧家县| 宜兰县| 五原县| 洪江市| 九江县| 礼泉县| 韶关市| 三台县| 石家庄市| 高平市| 内黄县| 安仁县| 云南省| 上饶市| 凤山市| 通化县| 黄骅市| 瓮安县| 隆昌县| 台东县| 沂水县| 白城市| 卢氏县| 策勒县| 巢湖市| 海口市| 乌苏市| 和平区| 丰台区| 盖州市| 东安县|