隨筆 - 175  文章 - 202  trackbacks - 0
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          第一個Blog,記錄哈哈的生活

          常用鏈接

          留言簿(16)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          收藏夾

          Java links

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          
          

          xsl 里增加

             function valueOf(context, elem) {
              return tools.valueOf(context, elem);
             }
          代碼里增加


           public String valueOf(XSLProcessorContext context, ElemExtensionCall elem) {
            String value = elem.getAttribute("select");
            String maxStr = elem.getAttribute("max");
            try {
             value = executeExpression(context, elem, value);
            } catch (TransformerException e) {
            }
            if (isNotBlank(maxStr)) {
             try {
              int max = Integer.parseInt(maxStr);
              value = shortStr(value, max);
             } finally {
             }
            }
            return value;
           }

           private String executeExpression(XSLProcessorContext context, ElemExtensionCall elem, String value)
             throws TransformerException {
            XPathContext xctxt = context.getTransformer().getXPathContext();
            XPath path = new XPath(value, elem, xctxt.getNamespaceContext(), XPath.SELECT);
            XObject data = path.execute(xctxt, context.getContextNode(), elem);
            if (data != null)
             value = data.xstr().toString();
            return value == null ? "" : value;
           }











          參考了下面的文檔






          [prev in list] [next in list] [prev in thread] [next in thread]
          List: xalan-j-users Subject: Re: Extension element with subelements From: John Gentilin <gentijo () eyecatching ! com> Date: 2007-09-07 21:48:37 Message-ID: 46E1C735.2080504 () eyecatching ! com [Download message RAW] Oops... this might be what you are after instead... executeChildTemplatesToXML or ToString or ToXMLString may be what you are after.. /** * A repository for common functions that can be used but the extension * functions and extension elements. * * * Title: Base Functions * Copyright: Copyright (c) 2005 * Company: Eye Catching Solutions Inc. * @version 1.0 * @author John Gentilin */ public class BaseFunctions { private static Category m_Log = Category.getInstance("RapidXSL.Interface"); private static DocumentBuilderFactory m_dfactory = null; private static DocumentBuilder m_docBuilder = null; /** * @param context * @param elem * @throws TransformerException */ protected void executeChildTemplates( XSLProcessorContext context, ElemExtensionCall elem ) throws TransformerException { TransformerImpl transf = context.getTransformer(); transf.executeChildTemplates(elem, context.getContextNode(), context.getMode(), transf.getResultTreeHandler()); } /** * @param context * @param elem * @throws TransformerException */ protected Document executeChildTemplatesToXML(Document doc, XSLProcessorContext context, ElemExtensionCall elem ) throws XMLServerException { DOMBuilder builder = null; TransformerImpl transformer = context.getTransformer(); try { builder = new DOMBuilder(doc); transformer.executeChildTemplates(elem, context.getContextNode(), context.getMode(), builder); } catch (Exception e) { throw new XMLServerException("RXSL_IFACE", "XSL Interface Error - " + e.getLocalizedMessage()); } return doc; } /** * @param context * @param elem * @throws TransformerException */ protected String executeChildTemplatesToString(XSLProcessorContext context, ElemExtensionCall elem ) throws XMLServerException { TransformerImpl transformer = context.getTransformer(); try { TextSerializationHandler handler = new TextSerializationHandler(); transformer.executeChildTemplates(elem, context.getContextNode(), context.getMode(), handler); return handler.toString(); } catch (Exception e) { throw new XMLServerException("RXSL_IFACE", "XSL Interface Error - " + e.getLocalizedMessage()); } } protected String executeChildTemplatestoXMLString(XSLProcessorContext context, ElemExtensionCall elem) throws TransformerException, SAXException { try { TransformerImpl transformer = context.getTransformer(); // This should be worked on so that the output format can be // defined by a first child of the redirect element. OutputProperties format = transformer.getOutputFormat(); Properties prop = format.getProperties(); format.setProperty("indent","no"); format.setProperty("{[prev in list] [next in list] [prev in thread] [next in thread]
          
          
          Configure | About | News | Donate | Add a list | Sponsors: 10EastKoreLogicTerra-InternationalChakpak.com
          posted @ 2009-10-21 17:19 哈哈的日子 閱讀(357) | 評論 (0)編輯 收藏

           要過生日了,看看老婆的準(zhǔn)備。


          早飯:
          長壽面+荷包蛋 用小青菜做湯
           
           
           
           
           
          中飯:
          菜:
          1可樂雞
          2魚
          3鍋包肉
          4黃瓜炒肉
          5皮蛋
          6花生
           
          湯:蛋花湯
           
          水果:榴蓮 哈密瓜
           
          飲料:可樂 啤酒
           
          主食:餃子
           
          主要地:生日蛋糕


          重要的是生日禮物:
                          蘋果筆記本電腦還有一個藍(lán)牙的無線蘋果鼠標(biāo),無比的喜歡!!!
          posted @ 2009-09-14 21:17 哈哈的日子 閱讀(429) | 評論 (3)編輯 收藏
          1. 先到 google code 上下載了 api 的 lib,當(dāng)然是 java client,還有好多,比如 .net , php 什么的,沒看。
          2. 去看 google data api 的 getting start,但是,那個 ant 命令執(zhí)行完,會出一些 captcha 的錯誤,沒細(xì)看,估計(jì)是需要驗(yàn)證碼了,api 沒跟上。
          3. 直接到 calendar 里面,把 CalendarFeedDemo執(zhí)行了一下,注意,需要輸入用戶名和密碼,用戶名是 aaa@gmail.com 這樣的,但發(fā)現(xiàn)這個不是我要的,我要的只是增加個 event 而已。
          4. 執(zhí)行 EventFeedDemo,jump這個才是我要的,簡化了一下,只要能增加一個定時的 event,并有提醒,就夠了。

          代碼在下面,連包名都沒改:
           1 
           2 package sample.calendar;
           3 
           4 import java.io.IOException;
           5 import java.net.URL;
           6 import java.util.Calendar;
           7 import java.util.GregorianCalendar;
           8 import java.util.TimeZone;
           9 
          10 import com.google.gdata.client.calendar.CalendarService;
          11 import com.google.gdata.data.DateTime;
          12 import com.google.gdata.data.PlainTextConstruct;
          13 import com.google.gdata.data.calendar.CalendarEventEntry;
          14 import com.google.gdata.data.extensions.Reminder;
          15 import com.google.gdata.data.extensions.When;
          16 import com.google.gdata.data.extensions.Reminder.Method;
          17 import com.google.gdata.util.ServiceException;
          18 
          19 public class HahaCalendar {
          20     private static URL eventFeedUrl;
          21     private static final String METAFEED_URL_BASE = "http://www.google.com/calendar/feeds/";
          22     private static final String EVENT_FEED_URL_SUFFIX = "/private/full";
          23 
          24     public static void main(String[] args) throws ServiceException, IOException {
          25         String username = "username@gmail.com";
          26         eventFeedUrl = new URL(METAFEED_URL_BASE + username + EVENT_FEED_URL_SUFFIX);
          27         CalendarService myService = new CalendarService("haha calendar");
          28         myService.setUserCredentials(username, "password");
          29         CalendarEventEntry singleEvent = createSingleEvent(myService, "每天背單詞""單詞1,單詞2");
          30         System.out.println("Successfully created event " + singleEvent.getTitle().getPlainText());
          31     }
          32 
          33     private static CalendarEventEntry createSingleEvent(CalendarService service, String eventTitle, String eventContent)
          34             throws ServiceException, IOException {
          35         CalendarEventEntry entry = new CalendarEventEntry();
          36         entry.setTitle(new PlainTextConstruct(eventTitle));
          37         entry.setContent(new PlainTextConstruct(eventContent));
          38         Calendar calendar = new GregorianCalendar();
          39         calendar.add(Calendar.MINUTE, 10);
          40         DateTime startTime = new DateTime(calendar.getTime(), TimeZone.getDefault());
          41         calendar.add(Calendar.MINUTE, 60);
          42         DateTime endTime = new DateTime(calendar.getTime(), TimeZone.getDefault());
          43         When eventTimes = new When();
          44         eventTimes.setStartTime(startTime);
          45         eventTimes.setEndTime(endTime);
          46         entry.addTime(eventTimes);
          47         addReminder(entry);
          48         return service.insert(eventFeedUrl, entry);
          49     }
          50 
          51     private static void addReminder(CalendarEventEntry myEntry) {
          52         Reminder reminder = new Reminder();
          53         reminder.setMinutes(5);
          54         reminder.setMethod(Method.SMS);
          55         myEntry.getReminder().add(reminder);
          56     }
          57 }
          58 

          想用的注意,把上面的用戶名和密碼改成自己的。


          posted @ 2009-07-19 13:04 哈哈的日子 閱讀(2309) | 評論 (4)編輯 收藏
          1. 先到 oracle 網(wǎng)站上下載了 oracle 11g for linux 的 zip 包,并解壓
          2. 在用戶下執(zhí)行 ./runInstaller -jreLoc /usr/lib/jvm/java-6-sun/jre/(我指定了使用我安裝的jdk,否則會中文亂碼)
          待續(xù)……
          3. 一路下一步就可以了,但其中有一些依賴的東西需要先安裝好,有
            a) libaio1
            b) rpm
            c) ksh
          4. 要把一些命令 link 到 /usr/bin 目錄下,其中 有
            a) awk -> /etc/alternatives/awk
            b) ksh -> /etc/alternatives/usr.bin.ksh
          5. 還要把一個必須的目錄建出來,就是 /opt,其實(shí)這個目錄有可能已經(jīng)存在了的。
          6. 然后就一切 ok 了,但要啟動 oracle 還需要增加一些環(huán)境變量,我一般就把這些放在 .bashrc 里了。
            a) export ORACLE_HOME=/home/haha/app/haha/product/11.1.0/db_1
            b) export ORACLE_SID=haha
            c) export NLS_LANG=american_america.utf8(這個是為了顯示中文內(nèi)容的時候不會亂碼)
            d) export PATH=$PATH:/home/haha/app/haha/product/11.1.0/db_1/bin(這個就是為了方便,不設(shè)也行)
          7. 測試安裝是否成功,可以從下面的幾個方面看
            a) 訪問 https://domain:1158/em,看看能登錄不。
            b) netstat -anop | grep 1521,看看 listener 啟動沒有


          下次再啟動 oracle 需要使用下面的命令
            a) 啟動數(shù)據(jù)庫實(shí)例: sqlplus "/as sysdba",然后 startup
            b) 啟動 listener:lsnrctl start
            c) 啟動 em:emctl start dbconsole(可選)


          linux oracle 客戶端可以使用 sql developer,在 oracle 網(wǎng)站上就能下載,其實(shí)這是無奈之舉,畢竟 plsqldev 無法在 linux 下使用。

          posted @ 2009-07-12 18:23 哈哈的日子 閱讀(3323) | 評論 (5)編輯 收藏
          找到一篇非常不錯的文章,晚上回來操作一下。
          http://zeroliu.blogdriver.com/zeroliu/1208212.html

          應(yīng)用場景:
          玩?zhèn)€游戲文字mud,客戶端使用mushclient,支持使用 lua 腳本來寫 robot,以便自動練功。
          但由于多個 id 之間 share 數(shù)據(jù)比較困難,導(dǎo)致地圖數(shù)據(jù)在每個 id 都要加載一次,數(shù)量大了之后,內(nèi)存用很多,而且還會出現(xiàn)莫明其妙的內(nèi)存泄漏問題。所以想改用 java 實(shí)現(xiàn)(因?yàn)槲也粫?c 實(shí)現(xiàn))

          最終選擇了使用 lua 調(diào)用 c,然后調(diào)用 java
          posted @ 2008-10-19 09:49 哈哈的日子 閱讀(223) | 評論 (0)編輯 收藏
          安裝了cdt 5.0,以前可以build的project死都不能build。
          錯誤是
          **** Internal Builder is used for build               ****
          g++ -O0 -g3 -Wall -c -fmessage-length=0 -osrc\Test.o ..\src\Test.cpp
          Internal Builder: Cannot run program "g++": ??Õ?»µ½?¶¨µ
          Build error occurred, build is stopped
          Time consumed: 0  ms. 


          把 MinGW 的運(yùn)行目錄加到classpath里,把mingw32-make.exe復(fù)制一個,改名為make.exe。
          在命令行下,一切都沒有問題,就是在 eclipse里面不能用,郁悶了幾天了。

          google 了一下,參考了
          http://www.eclipseworld.org/bbs/read-cec-tid-18540-page-e.html
          這個帖子中參考了
          http://74.53.91.20/bbs/read-cec-tid-17557-fpage-2.html

          最終的方法是將
          org.eclipse.cdt.core.win32_5.0.0.200809120802.jar
          解壓成目錄org.eclipse.cdt.core.win32_5.0.0.200809120802,注意把原來的jar刪除。

          要人命了,這也能行,不看 code 估計(jì)這輩子都解決不了這個問題了。
          posted @ 2008-10-18 20:36 哈哈的日子 閱讀(1734) | 評論 (4)編輯 收藏
          今天安裝了 svn 服務(wù)端。
          為什么寫呢?因?yàn)楹鸵郧鞍惭b的不一樣。
          有什么不一樣呢?
          1、方便了很多
          2、安裝了 viewvc

          為什么要安裝 viewvc,而不是fisheye呢?
          不是因?yàn)関iewvc比fisheye好,就是因?yàn)閯偛诺牡谝稽c(diǎn),方便。

          以前安裝 svn 都是直接下載一個 svn windows 版的壓縮包,解壓,bin目錄加到path里,使用 sc 命令用 svnserve 建個服務(wù),啟動,完成。
          其實(shí)這個步驟還是很簡單的,就是在使用 sc 建 service 的時候,命令行有些復(fù)雜而已。
          但這樣只能使用 svn://xxx/xxx 來使用,而且不能在 web 上看到版本庫,那么,就想了點(diǎn)兒辦法,安裝一個 apache 吧,然后根據(jù)文檔,一頓猛配,相當(dāng)?shù)穆闊:锰幘褪牵梢允褂?http://xxx/xxx 來使用,而且可以在 web 上瀏覽到最新的版本內(nèi)容,雖然 web 功能土了點(diǎn)兒,但至少可以使用了。有的時候,深得這樣不爽,就再加個 fisheye,我個人相當(dāng)喜歡 fisheye 這個軟件,以至于花了點(diǎn)兒時間破解了一下,需要的可以在 blog 上找一下,不是暴力的那種,是半注冊的,可以跟著升級的那種。

          但是,唯一,也是最大的問題,就是麻煩,安裝這一套東西,那是相當(dāng)?shù)穆闊┌ ?br />
          今天發(fā)現(xiàn)了一個方便的辦法。

          下載三個東西:
          1、CollabNet Subversion Server
          2、python
          3、python win32api

          安裝過程和下載不太一樣。
          1、python
          2、CollabNet Subversion Server
          3、python win32api

          2、3順序無所謂的。

          然后,就擁有了一個 svn + apache + viewvc 的環(huán)境了,相當(dāng)?shù)姆奖恪?br /> 我喜歡。

          呵呵…… ^_^
          posted @ 2008-08-05 21:28 哈哈的日子 閱讀(604) | 評論 (0)編輯 收藏
          1、我想做什么
          2、我該做什么
          3、我要做多久
          posted @ 2008-06-12 22:31 哈哈的日子 閱讀(238) | 評論 (0)編輯 收藏
          可以直接將 plugin 放到 dropins 目錄下,即可自動完成安裝。

          dropins 目錄支持下列形式的結(jié)構(gòu)。

          1、
           eclipse/
          dropins/
          org.eclipse.core.tools_1.4.0.200710121455.jar
          org.eclipse.releng.tools_3.3.0.v20070412/
          plugin.xml
          tools.jar
          ... etc ...
          ...
          


          2、

           eclipse/
          dropins/
          eclipse/
          features/
          plugins/
          


          3、

           eclipse/
          dropins/
          emf/
          eclipse/
          features/
          plugins/
          gef/
          eclipse/
          features/
          plugins/
          ... etc ...
          

          4、 

           eclipse/
          dropins/
          emf.link
          

          最后一種就相當(dāng)原來的 links 目錄,只要寫
          path = ...
          就可以了。
          posted @ 2008-04-13 13:02 哈哈的日子 閱讀(4802) | 評論 (0)編輯 收藏
          batch_size 即同時提交數(shù)據(jù)的數(shù)量,原本與事務(wù)并沒有什么關(guān)系,但如果涉及到同一張表數(shù)據(jù)的同一種操作,可能就會發(fā)生微妙的關(guān)系了。

          場景如下:
          場景一:使用 spring 控制事務(wù),將方法事務(wù)配置為 not_supported,向同一張表中插入兩條數(shù)據(jù),保證第一條數(shù)據(jù)正常插入,而第二條數(shù)據(jù)受約束(如唯一約束)插入失敗。

          預(yù)測結(jié)果:第一條數(shù)據(jù)成功,第二條失敗。
          實(shí)際結(jié)果:兩條數(shù)據(jù)均失敗。
          原因:hibernate 將兩條插入放到了同一個 batch 中,提交同時失敗了。

          場景二:同樣使用 spring 控制事務(wù),將方法事務(wù)配置為 not_supported,向第一張表中插入一條合法數(shù)據(jù),成功,向第二張表插入數(shù)據(jù),受約束(如唯一約束)插入失敗。

          預(yù)測結(jié)果:第一條數(shù)據(jù)成功,第二條失敗。
          實(shí)際結(jié)果:第一條數(shù)據(jù)成功,第二條失敗。
          原因:hibernate 分別插入數(shù)據(jù)并提交,在無事務(wù)的情況下,第一條成功,第二條失敗。

          那么如何讓場景一得到預(yù)測結(jié)果呢,一個簡單的解決方法,將 hibernate.jdbc.batch_size 設(shè)置為 1,即可。

          所以,即使控制了事務(wù),也未必能夠得到期望的結(jié)果,還需要考慮某些特殊的場景帶來的影響。
          posted @ 2008-03-06 14:18 哈哈的日子 閱讀(1837) | 評論 (2)編輯 收藏
          僅列出標(biāo)題
          共17頁: First 上一頁 7 8 9 10 11 12 13 14 15 下一頁 Last 
          主站蜘蛛池模板: 潜江市| 江阴市| 华蓥市| 富蕴县| 砚山县| 永和县| 罗源县| 宁城县| 启东市| 诏安县| 泰兴市| 山东省| 汉源县| 鄢陵县| 名山县| 竹山县| 武川县| 廊坊市| 博乐市| 西乌| 长武县| 建始县| 德格县| 伊金霍洛旗| 喀喇沁旗| 噶尔县| 安庆市| 林周县| 宁安市| 涟源市| 银川市| 丰镇市| 桐柏县| 米易县| 禄丰县| 剑河县| 富源县| 象州县| 剑川县| 九龙县| 泰安市|