﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-我有我的空间！-随笔分类-Java</title><link>http://www.blogjava.net/haha1903/category/18568.html</link><description>跟着 Java 成长的日子！</description><language>zh-cn</language><lastBuildDate>Thu, 10 Mar 2011 07:45:48 GMT</lastBuildDate><pubDate>Thu, 10 Mar 2011 07:45:48 GMT</pubDate><ttl>60</ttl><item><title>解决 eclipse subversive 快捷键不能使用</title><link>http://www.blogjava.net/haha1903/archive/2011/03/09/346006.html</link><dc:creator>哈哈的日子</dc:creator><author>哈哈的日子</author><pubDate>Wed, 09 Mar 2011 02:53:00 GMT</pubDate><guid>http://www.blogjava.net/haha1903/archive/2011/03/09/346006.html</guid><wfw:comment>http://www.blogjava.net/haha1903/comments/346006.html</wfw:comment><comments>http://www.blogjava.net/haha1903/archive/2011/03/09/346006.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/haha1903/comments/commentRss/346006.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/haha1903/services/trackbacks/346006.html</trackback:ping><description><![CDATA[现象：<br />
<span class="Apple-tab-span" style="white-space:pre">	</span>eclipse&nbsp;subversive plugin 快捷键无效<br />
原因：<br />
<span class="Apple-tab-span" style="white-space:pre">	</span>据说是 eclipse 高版本的 api 和 subversive 不太匹配，不确定。<br />
解决：<br />
<span class="Apple-tab-span" style="white-space:pre">	</span>Window -&gt; Customize Perspective -&gt; Command Groups Availability -&gt; 左侧 Available command groups -&gt; 选择 SVN<br />
<br />
<img src ="http://www.blogjava.net/haha1903/aggbug/346006.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/haha1903/" target="_blank">哈哈的日子</a> 2011-03-09 10:53 <a href="http://www.blogjava.net/haha1903/archive/2011/03/09/346006.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>试了一下 Google Calendar API，给自己每天定个任务。</title><link>http://www.blogjava.net/haha1903/archive/2009/07/19/287320.html</link><dc:creator>哈哈的日子</dc:creator><author>哈哈的日子</author><pubDate>Sun, 19 Jul 2009 05:04:00 GMT</pubDate><guid>http://www.blogjava.net/haha1903/archive/2009/07/19/287320.html</guid><wfw:comment>http://www.blogjava.net/haha1903/comments/287320.html</wfw:comment><comments>http://www.blogjava.net/haha1903/archive/2009/07/19/287320.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/haha1903/comments/commentRss/287320.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/haha1903/services/trackbacks/287320.html</trackback:ping><description><![CDATA[1. 先到 google code 上下载了 api 的 lib，当然是 java client，还有好多，比如 .net , php 什么的，没看。<br />
2. 去看 google data api 的 getting start，但是，那个 ant 命令执行完，会出一些 captcha 的错误，没细看，估计是需要验证码了，api 没跟上。<br />
3. 直接到 calendar 里面，把 CalendarFeedDemo执行了一下，注意，需要输入用户名和密码，用户名是 aaa@gmail.com 这样的，但发现这个不是我要的，我要的只是增加个 event 而已。<br />
4. 执行 EventFeedDemo，jump这个才是我要的，简化了一下，只要能增加一个定时的 event，并有提醒，就够了。<br />
<br />
代码在下面，连包名都没改:<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080;">&nbsp;1</span>&nbsp;<span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;2</span>&nbsp;<span style="color: #0000ff;">package</span><span style="color: #000000;">&nbsp;sample.calendar;<br />
</span><span style="color: #008080;">&nbsp;3</span>&nbsp;<span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;4</span>&nbsp;<span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;java.io.IOException;<br />
</span><span style="color: #008080;">&nbsp;5</span>&nbsp;<span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;java.net.URL;<br />
</span><span style="color: #008080;">&nbsp;6</span>&nbsp;<span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;java.util.Calendar;<br />
</span><span style="color: #008080;">&nbsp;7</span>&nbsp;<span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;java.util.GregorianCalendar;<br />
</span><span style="color: #008080;">&nbsp;8</span>&nbsp;<span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;java.util.TimeZone;<br />
</span><span style="color: #008080;">&nbsp;9</span>&nbsp;<span style="color: #000000;"><br />
</span><span style="color: #008080;">10</span>&nbsp;<span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;com.google.gdata.client.calendar.CalendarService;<br />
</span><span style="color: #008080;">11</span>&nbsp;<span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;com.google.gdata.data.DateTime;<br />
</span><span style="color: #008080;">12</span>&nbsp;<span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;com.google.gdata.data.PlainTextConstruct;<br />
</span><span style="color: #008080;">13</span>&nbsp;<span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;com.google.gdata.data.calendar.CalendarEventEntry;<br />
</span><span style="color: #008080;">14</span>&nbsp;<span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;com.google.gdata.data.extensions.Reminder;<br />
</span><span style="color: #008080;">15</span>&nbsp;<span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;com.google.gdata.data.extensions.When;<br />
</span><span style="color: #008080;">16</span>&nbsp;<span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;com.google.gdata.data.extensions.Reminder.Method;<br />
</span><span style="color: #008080;">17</span>&nbsp;<span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;com.google.gdata.util.ServiceException;<br />
</span><span style="color: #008080;">18</span>&nbsp;<span style="color: #000000;"><br />
</span><span style="color: #008080;">19</span>&nbsp;<span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;HahaCalendar&nbsp;{<br />
</span><span style="color: #008080;">20</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;URL&nbsp;eventFeedUrl;<br />
</span><span style="color: #008080;">21</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">final</span><span style="color: #000000;">&nbsp;String&nbsp;METAFEED_URL_BASE&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">http://www.google.com/calendar/feeds/</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br />
</span><span style="color: #008080;">22</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">final</span><span style="color: #000000;">&nbsp;String&nbsp;EVENT_FEED_URL_SUFFIX&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">/private/full</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br />
</span><span style="color: #008080;">23</span>&nbsp;<span style="color: #000000;"><br />
</span><span style="color: #008080;">24</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;main(String[]&nbsp;args)&nbsp;</span><span style="color: #0000ff;">throws</span><span style="color: #000000;">&nbsp;ServiceException,&nbsp;IOException&nbsp;{<br />
</span><span style="color: #008080;">25</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;username&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">username@gmail.com</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br />
</span><span style="color: #008080;">26</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eventFeedUrl&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;URL(METAFEED_URL_BASE&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;username&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;EVENT_FEED_URL_SUFFIX);<br />
</span><span style="color: #008080;">27</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CalendarService&nbsp;myService&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;CalendarService(</span><span style="color: #000000;">"</span><span style="color: #000000;">haha&nbsp;calendar</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
</span><span style="color: #008080;">28</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myService.setUserCredentials(username,&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">password</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
</span><span style="color: #008080;">29</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CalendarEventEntry&nbsp;singleEvent&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;createSingleEvent(myService,&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">每天背单词</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">单词1，单词2</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
</span><span style="color: #008080;">30</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000;">"</span><span style="color: #000000;">Successfully&nbsp;created&nbsp;event&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;singleEvent.getTitle().getPlainText());<br />
</span><span style="color: #008080;">31</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080;">32</span>&nbsp;<span style="color: #000000;"><br />
</span><span style="color: #008080;">33</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;CalendarEventEntry&nbsp;createSingleEvent(CalendarService&nbsp;service,&nbsp;String&nbsp;eventTitle,&nbsp;String&nbsp;eventContent)<br />
</span><span style="color: #008080;">34</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">throws</span><span style="color: #000000;">&nbsp;ServiceException,&nbsp;IOException&nbsp;{<br />
</span><span style="color: #008080;">35</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CalendarEventEntry&nbsp;entry&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;CalendarEventEntry();<br />
</span><span style="color: #008080;">36</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;entry.setTitle(</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;PlainTextConstruct(eventTitle));<br />
</span><span style="color: #008080;">37</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;entry.setContent(</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;PlainTextConstruct(eventContent));<br />
</span><span style="color: #008080;">38</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Calendar&nbsp;calendar&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;GregorianCalendar();<br />
</span><span style="color: #008080;">39</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;calendar.add(Calendar.MINUTE,&nbsp;</span><span style="color: #000000;">10</span><span style="color: #000000;">);<br />
</span><span style="color: #008080;">40</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DateTime&nbsp;startTime&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;DateTime(calendar.getTime(),&nbsp;TimeZone.getDefault());<br />
</span><span style="color: #008080;">41</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;calendar.add(Calendar.MINUTE,&nbsp;</span><span style="color: #000000;">60</span><span style="color: #000000;">);<br />
</span><span style="color: #008080;">42</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DateTime&nbsp;endTime&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;DateTime(calendar.getTime(),&nbsp;TimeZone.getDefault());<br />
</span><span style="color: #008080;">43</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;When&nbsp;eventTimes&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;When();<br />
</span><span style="color: #008080;">44</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eventTimes.setStartTime(startTime);<br />
</span><span style="color: #008080;">45</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eventTimes.setEndTime(endTime);<br />
</span><span style="color: #008080;">46</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;entry.addTime(eventTimes);<br />
</span><span style="color: #008080;">47</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;addReminder(entry);<br />
</span><span style="color: #008080;">48</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;service.insert(eventFeedUrl,&nbsp;entry);<br />
</span><span style="color: #008080;">49</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080;">50</span>&nbsp;<span style="color: #000000;"><br />
</span><span style="color: #008080;">51</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;addReminder(CalendarEventEntry&nbsp;myEntry)&nbsp;{<br />
</span><span style="color: #008080;">52</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Reminder&nbsp;reminder&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;Reminder();<br />
</span><span style="color: #008080;">53</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;reminder.setMinutes(</span><span style="color: #000000;">5</span><span style="color: #000000;">);<br />
</span><span style="color: #008080;">54</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;reminder.setMethod(Method.SMS);<br />
</span><span style="color: #008080;">55</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myEntry.getReminder().add(reminder);<br />
</span><span style="color: #008080;">56</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080;">57</span>&nbsp;<span style="color: #000000;">}<br />
</span><span style="color: #008080;">58</span>&nbsp;</div>
<br />
想用的注意，把上面的用户名和密码改成自己的。<br />
<br />
<br />
<img src ="http://www.blogjava.net/haha1903/aggbug/287320.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/haha1903/" target="_blank">哈哈的日子</a> 2009-07-19 13:04 <a href="http://www.blogjava.net/haha1903/archive/2009/07/19/287320.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在 ubuntu 9.04 下，快速安装 oracle 11g</title><link>http://www.blogjava.net/haha1903/archive/2009/07/12/286376.html</link><dc:creator>哈哈的日子</dc:creator><author>哈哈的日子</author><pubDate>Sun, 12 Jul 2009 10:23:00 GMT</pubDate><guid>http://www.blogjava.net/haha1903/archive/2009/07/12/286376.html</guid><wfw:comment>http://www.blogjava.net/haha1903/comments/286376.html</wfw:comment><comments>http://www.blogjava.net/haha1903/archive/2009/07/12/286376.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/haha1903/comments/commentRss/286376.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/haha1903/services/trackbacks/286376.html</trackback:ping><description><![CDATA[1. 先到 oracle 网站上下载了 oracle 11g for linux 的 zip 包，并解压<br />
2. 在用户下执行 ./runInstaller -jreLoc /usr/lib/jvm/java-6-sun/jre/（我指定了使用我安装的jdk，否则会中文乱码）<br />
待续&#8230;&#8230;<br />
3. 一路下一步就可以了，但其中有一些依赖的东西需要先安装好，有<br />
&nbsp; a) libaio1<br />
&nbsp; b) rpm<br />
&nbsp; c) ksh<br />
4. 要把一些命令 link 到 /usr/bin 目录下，其中 有<br />
&nbsp; a) awk -&gt; /etc/alternatives/awk<br />
&nbsp; b) ksh -&gt; /etc/alternatives/usr.bin.ksh<br />
5. 还要把一个必须的目录建出来，就是 /opt，其实这个目录有可能已经存在了的。<br />
6. 然后就一切 ok 了，但要启动 oracle 还需要增加一些环境变量，我一般就把这些放在 .bashrc 里了。<br />
&nbsp; a) export ORACLE_HOME=/home/haha/app/haha/product/11.1.0/db_1<br />
&nbsp; b) export ORACLE_SID=haha<br />
&nbsp; c) export NLS_LANG=american_america.utf8（这个是为了显示中文内容的时候不会乱码）<br />
&nbsp; d) export PATH=$PATH:/home/haha/app/haha/product/11.1.0/db_1/bin（这个就是为了方便，不设也行）<br />
7. 测试安装是否成功，可以从下面的几个方面看<br />
&nbsp; a) 访问 https://domain:1158/em，看看能登录不。<br />
&nbsp; b) netstat -anop | grep 1521，看看 listener 启动没有<br />
<br />
<br />
下次再启动 oracle 需要使用下面的命令<br />
&nbsp; a) 启动数据库实例: sqlplus "/as sysdba"，然后 startup<br />
&nbsp; b) 启动 listener：lsnrctl start<br />
&nbsp; c) 启动 em：emctl start dbconsole（可选）<br />
<br />
<br />
linux oracle 客户端可以使用 sql developer，在 oracle 网站上就能下载，其实这是无奈之举，毕竟 plsqldev 无法在 linux 下使用。<br />
<br />
<img src ="http://www.blogjava.net/haha1903/aggbug/286376.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/haha1903/" target="_blank">哈哈的日子</a> 2009-07-12 18:23 <a href="http://www.blogjava.net/haha1903/archive/2009/07/12/286376.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>安装 svn 服务器新过程，集成 apache 和 viewvc。</title><link>http://www.blogjava.net/haha1903/archive/2008/08/05/220283.html</link><dc:creator>哈哈的日子</dc:creator><author>哈哈的日子</author><pubDate>Tue, 05 Aug 2008 13:28:00 GMT</pubDate><guid>http://www.blogjava.net/haha1903/archive/2008/08/05/220283.html</guid><wfw:comment>http://www.blogjava.net/haha1903/comments/220283.html</wfw:comment><comments>http://www.blogjava.net/haha1903/archive/2008/08/05/220283.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/haha1903/comments/commentRss/220283.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/haha1903/services/trackbacks/220283.html</trackback:ping><description><![CDATA[今天安装了 svn 服务端。<br />
为什么写呢？因为和以前安装的不一样。<br />
有什么不一样呢？<br />
1、方便了很多<br />
2、安装了 viewvc<br />
<br />
为什么要安装 viewvc，而不是fisheye呢？<br />
不是因为viewvc比fisheye好，就是因为刚才的第一点，方便。<br />
<br />
以前安装 svn 都是直接下载一个 svn&nbsp;windows 版的压缩包，解压，bin目录加到path里，使用 sc 命令用 svnserve 建个服务，启动，完成。<br />
其实这个步骤还是很简单的，就是在使用 sc 建 service 的时候，命令行有些复杂而已。<br />
但这样只能使用 svn://xxx/xxx 来使用，而且不能在 web 上看到版本库，那么，就想了点儿办法，安装一个 apache 吧，然后根据文档，一顿猛配，相当的麻烦。好处就是，可以使用 <a href="http://xxx/xxx">http://xxx/xxx</a> 来使用，而且可以在 web 上浏览到最新的版本内容，虽然 web 功能土了点儿，但至少可以使用了。有的时候，深得这样不爽，就再加个 fisheye，我个人相当喜欢 fisheye 这个软件，以至于花了点儿时间破解了一下，需要的可以在 blog 上找一下，不是暴力的那种，是半注册的，可以跟着升级的那种。<br />
<br />
但是，唯一，也是最大的问题，就是麻烦，安装这一套东西，那是相当的麻烦啊。<br />
<br />
今天发现了一个方便的办法。<br />
<br />
下载三个东西：<br />
1、CollabNet Subversion Server<br />
2、python<br />
3、python win32api<br />
<br />
安装过程和下载不太一样。<br />
1、python<br />
2、CollabNet Subversion Server<br />
3、python win32api<br />
<br />
2、3顺序无所谓的。<br />
<br />
然后，就拥有了一个 svn + apache + viewvc 的环境了，相当的方便。<br />
我喜欢。<br />
<br />
呵呵&#8230;&#8230; ^_^
<img src ="http://www.blogjava.net/haha1903/aggbug/220283.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/haha1903/" target="_blank">哈哈的日子</a> 2008-08-05 21:28 <a href="http://www.blogjava.net/haha1903/archive/2008/08/05/220283.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Eclipse 3.4M6 的 dropins 目录安装 plugin 很方便。</title><link>http://www.blogjava.net/haha1903/archive/2008/04/13/192542.html</link><dc:creator>哈哈的日子</dc:creator><author>哈哈的日子</author><pubDate>Sun, 13 Apr 2008 05:02:00 GMT</pubDate><guid>http://www.blogjava.net/haha1903/archive/2008/04/13/192542.html</guid><wfw:comment>http://www.blogjava.net/haha1903/comments/192542.html</wfw:comment><comments>http://www.blogjava.net/haha1903/archive/2008/04/13/192542.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/haha1903/comments/commentRss/192542.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/haha1903/services/trackbacks/192542.html</trackback:ping><description><![CDATA[可以直接将 plugin 放到 dropins 目录下，即可自动完成安装。<br />
<br />
dropins 目录支持下列形式的结构。<br />
<br />
1、<br />
<pre> eclipse/
dropins/
org.eclipse.core.tools_1.4.0.200710121455.jar
org.eclipse.releng.tools_3.3.0.v20070412/
plugin.xml
tools.jar
... etc ...
...
</pre>
<p><br />
2、</p>
<pre> eclipse/
dropins/
eclipse/
features/
plugins/
</pre>
<p><br />
3、</p>
<pre> eclipse/
dropins/
emf/
eclipse/
features/
plugins/
gef/
eclipse/
features/
plugins/
... etc ...
</pre>
<p>4、&nbsp;</p>
<pre> eclipse/
dropins/
emf.link
</pre>
<span class="mw-headline"><br />
最后一种就相当原来的 links 目录，只要写<br />
path = ... <br />
就可以了。</span>
<img src ="http://www.blogjava.net/haha1903/aggbug/192542.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/haha1903/" target="_blank">哈哈的日子</a> 2008-04-13 13:02 <a href="http://www.blogjava.net/haha1903/archive/2008/04/13/192542.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hibernate 的 batch_size 与事务</title><link>http://www.blogjava.net/haha1903/archive/2008/03/06/184254.html</link><dc:creator>哈哈的日子</dc:creator><author>哈哈的日子</author><pubDate>Thu, 06 Mar 2008 06:18:00 GMT</pubDate><guid>http://www.blogjava.net/haha1903/archive/2008/03/06/184254.html</guid><wfw:comment>http://www.blogjava.net/haha1903/comments/184254.html</wfw:comment><comments>http://www.blogjava.net/haha1903/archive/2008/03/06/184254.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/haha1903/comments/commentRss/184254.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/haha1903/services/trackbacks/184254.html</trackback:ping><description><![CDATA[batch_size 即同时提交数据的数量，原本与事务并没有什么关系，但如果涉及到同一张表数据的同一种操作，可能就会发生微妙的关系了。<br />
<br />
场景如下：<br />
场景一：使用 spring 控制事务，将方法事务配置为 not_supported，向同一张表中插入两条数据，保证第一条数据正常插入，而第二条数据受约束（如唯一约束）插入失败。<br />
<br />
预测结果：第一条数据成功，第二条失败。<br />
实际结果：两条数据均失败。<br />
原因：hibernate 将两条插入放到了同一个 batch 中，提交同时失败了。<br />
<br />
场景二：同样使用 spring 控制事务，将方法事务配置为 not_supported，向第一张表中插入一条合法数据，成功，向第二张表插入数据，受约束（如唯一约束）插入失败。<br />
<br />
预测结果：第一条数据成功，第二条失败。<br />
实际结果：第一条数据成功，第二条失败。<br />
原因：hibernate 分别插入数据并提交，在无事务的情况下，第一条成功，第二条失败。<br />
<br />
那么如何让场景一得到预测结果呢，一个简单的解决方法，将 hibernate.jdbc.batch_size 设置为 1，即可。<br />
<br />
所以，即使控制了事务，也未必能够得到期望的结果，还需要考虑某些特殊的场景带来的影响。
<img src ="http://www.blogjava.net/haha1903/aggbug/184254.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/haha1903/" target="_blank">哈哈的日子</a> 2008-03-06 14:18 <a href="http://www.blogjava.net/haha1903/archive/2008/03/06/184254.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Cenqua software crack, include Clover(2.0.3), Fisheye(1.4) and Crucible(1.2) - Crack by Sea Chang</title><link>http://www.blogjava.net/haha1903/archive/2007/12/16/168045.html</link><dc:creator>哈哈的日子</dc:creator><author>哈哈的日子</author><pubDate>Sun, 16 Dec 2007 02:58:00 GMT</pubDate><guid>http://www.blogjava.net/haha1903/archive/2007/12/16/168045.html</guid><wfw:comment>http://www.blogjava.net/haha1903/comments/168045.html</wfw:comment><comments>http://www.blogjava.net/haha1903/archive/2007/12/16/168045.html#Feedback</comments><slash:comments>19</slash:comments><wfw:commentRss>http://www.blogjava.net/haha1903/comments/commentRss/168045.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/haha1903/services/trackbacks/168045.html</trackback:ping><description><![CDATA[<a title="CenquaCrack" href="/Files/haha1903/CenquaCrack.rar">CenquaCrack.rar<br />
<br />
</a>Include Clover(2.0.3), Fisheye(1.4) and Crucible(1.2) - Crack by Sea Chang<br />
Crack by Sea Chang&nbsp;- 2007.12.16<br />
<br />
<img src ="http://www.blogjava.net/haha1903/aggbug/168045.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/haha1903/" target="_blank">哈哈的日子</a> 2007-12-16 10:58 <a href="http://www.blogjava.net/haha1903/archive/2007/12/16/168045.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>生成序列的递归算法</title><link>http://www.blogjava.net/haha1903/archive/2007/10/21/154712.html</link><dc:creator>哈哈的日子</dc:creator><author>哈哈的日子</author><pubDate>Sun, 21 Oct 2007 07:18:00 GMT</pubDate><guid>http://www.blogjava.net/haha1903/archive/2007/10/21/154712.html</guid><wfw:comment>http://www.blogjava.net/haha1903/comments/154712.html</wfw:comment><comments>http://www.blogjava.net/haha1903/archive/2007/10/21/154712.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/haha1903/comments/commentRss/154712.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/haha1903/services/trackbacks/154712.html</trackback:ping><description><![CDATA[<p>在学习 lua 的时候，看到了一个生成序列的一个递归算法，比起我以前的算法，要好得很多，学到了。^_^<br />
</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;com.sea.pc;<br />
</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;Permgen&nbsp;{<br />
&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;main(String[]&nbsp;args)&nbsp;{<br />
&nbsp;&nbsp;Permgen&nbsp;permgen&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Permgen();<br />
&nbsp;&nbsp;String[]&nbsp;ss&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;{&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">a</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">b</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">c</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;};<br />
&nbsp;&nbsp;permgen.permgen(ss,&nbsp;</span><span style="color: #000000">3</span><span style="color: #000000">);<br />
&nbsp;}<br />
&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;permgen(Object[]&nbsp;os,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;n)&nbsp;{<br />
&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(n&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;(Object&nbsp;obj&nbsp;:&nbsp;os)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;System.out.print(obj&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">\t</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;System.out.println();<br />
&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;{<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;i&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;n;&nbsp;i</span><span style="color: #000000">++</span><span style="color: #000000">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;Object&nbsp;t&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;os[i];<br />
&nbsp;&nbsp;&nbsp;&nbsp;os[i]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;os[n&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">];<br />
&nbsp;&nbsp;&nbsp;&nbsp;os[n&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;t;<br />
&nbsp;&nbsp;&nbsp;&nbsp;permgen(os,&nbsp;n&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;os[n&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;os[i];<br />
&nbsp;&nbsp;&nbsp;&nbsp;os[i]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;t;<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;}<br />
&nbsp;}<br />
}<br />
</span></div>
<p>&nbsp;<br />
&nbsp;</p>
<p>&nbsp;&nbsp; </p>
<img src ="http://www.blogjava.net/haha1903/aggbug/154712.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/haha1903/" target="_blank">哈哈的日子</a> 2007-10-21 15:18 <a href="http://www.blogjava.net/haha1903/archive/2007/10/21/154712.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Maven 的生命周期，摘自 apache 和 IBM</title><link>http://www.blogjava.net/haha1903/archive/2007/08/08/135281.html</link><dc:creator>哈哈的日子</dc:creator><author>哈哈的日子</author><pubDate>Wed, 08 Aug 2007 08:30:00 GMT</pubDate><guid>http://www.blogjava.net/haha1903/archive/2007/08/08/135281.html</guid><wfw:comment>http://www.blogjava.net/haha1903/comments/135281.html</wfw:comment><comments>http://www.blogjava.net/haha1903/archive/2007/08/08/135281.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/haha1903/comments/commentRss/135281.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/haha1903/services/trackbacks/135281.html</trackback:ping><description><![CDATA[<h4>Maven Phases</h4>
<p>Although hardly a comprehensive list, these are the most common <em>default</em> lifecycle phases executed.</p>
<ul>
    <li><strong>validate</strong>: validate the project is correct and all necessary information is available
    <li><strong>compile</strong>: compile the source code of the project
    <li><strong>test</strong>: test the compiled source code using a suitable unit testing framework. These tests should not require the code be packaged or deployed
    <li><strong>package</strong>: take the compiled code and package it in its distributable format, such as a JAR.
    <li><strong>integration-test</strong>: process and deploy the package if necessary into an environment where integration tests can be run
    <li><strong>verify</strong>: run any checks to verify the package is valid and meets quality criteria
    <li><strong>install</strong>: install the package into the local repository, for use as a dependency in other projects locally
    <li><strong>deploy</strong>: done in an integration or release environment, copies the final package to the remote repository for sharing with other developers and projects. </li>
</ul>
<p>There are two other Maven lifecycles of note beyond the <em>default</em> list above. They are</p>
<ul>
    <li><strong>clean</strong>: cleans up artifacts created by prior builds </li>
</ul>
<ul>
    <li><strong>site</strong>: generates site documentation for this project </li>
</ul>
<p>翻译内容，摘自 IBM<br><br><strong><font face=Arial>生命周期</font></strong></p>
<p>在Maven2中有了明确的生命周期概念，而且都提供与之对应的命令，使得项目构建更加清晰明了。主要的生命周期阶段：</p>
<ul>
    <li>validate，验证工程是否正确，所有需要的资源是否可用。
    <li>compile，编译项目的源代码。
    <li>test-compile，编译项目测试代码。
    <li>test，使用已编译的测试代码，测试已编译的源代码。
    <li>package，已发布的格式，如jar，将已编译的源代码打包。
    <li>integration-test，在集成测试可以运行的环境中处理和发布包。
    <li>verify，运行任何检查，验证包是否有效且达到质量标准。
    <li>install，把包安装在本地的repository中，可以被其他工程作为依赖来使用
    <li>deploy，在整合或者发布环境下执行，将最终版本的包拷贝到远程的repository，使得其他的开发者或者工程可以共享。
    <li>generate-sources，产生应用需要的任何额外的源代码，如xdoclet。 </li>
</ul>
<img src ="http://www.blogjava.net/haha1903/aggbug/135281.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/haha1903/" target="_blank">哈哈的日子</a> 2007-08-08 16:30 <a href="http://www.blogjava.net/haha1903/archive/2007/08/08/135281.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>创建泛型数据的方法，由 List.toArray(T[]) 想到。</title><link>http://www.blogjava.net/haha1903/archive/2007/08/08/135113.html</link><dc:creator>哈哈的日子</dc:creator><author>哈哈的日子</author><pubDate>Tue, 07 Aug 2007 16:39:00 GMT</pubDate><guid>http://www.blogjava.net/haha1903/archive/2007/08/08/135113.html</guid><wfw:comment>http://www.blogjava.net/haha1903/comments/135113.html</wfw:comment><comments>http://www.blogjava.net/haha1903/archive/2007/08/08/135113.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/haha1903/comments/commentRss/135113.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/haha1903/services/trackbacks/135113.html</trackback:ping><description><![CDATA[最近一个朋友做猜数字游戏的解法，我也尝试了一下，在做数据生成器的时候，就希望做一个类型无关的，其实这个问题在去迅雷面试的时候就被问到，不过当时想都没想就放弃了，虽然面试当天回来的时候，完成了一下，但结果还是差强人意。所以想借这个机会弄一下。<br><br>在记录一条数据(Record)的时候，我本来使用了 List 实例化成 ArrayList，然后开始算，不过借助 JProbe 看了一下，List.size() 和 List.get(i) 这两个方法因为调用次数太多而占用了大部分的时间，所以第一想法是改成数组。<br><br>当我 new Record 的时候，使用的是 list ，自然想把这个 List&lt;T&gt; 转换成数组 T[] ，不过非常麻烦的是 list.toArray(T[]) 中的 T[] 不知道如何得到，不知道如何弄到 T[] 的实例，new T[list.size()] 是没办法的。<br><br>第一个反应是从 list 或是 List&lt;T&gt; 定义的 class 中得到成员的类型，然后使用 Arrays.newInstance 来创建一个，我花了好长的时间都没有能够得到，后来和同事聊天时，猜测是不是编译完的 class 文件中根本就没有类型的信息，不过当时没能确定。<br><br>晚上接着猜数字的时候，旧事重提，google 了一下，看到了一个非常好的文章。<br><a href="http://www.ibm.com/developerworks/cn/java/j-jtp01255.html">http://www.ibm.com/developerworks/cn/java/j-jtp01255.html</a><br>将泛型说明的非常清楚，其中一句是这样的&#8220;Java 语言中的泛型基本上完全在编译器中实现，由编译器执行类型检查和类型推断，然后生成普通的非泛型的字节码。这种实现技术称为<em>擦除（erasure）</em>（编译器使用泛型类型信息保证类型安全，然后在生成字节码之前将其清除）&#8221;。<br><br>验证了我的想法，在 class 文件中，根本就没有泛型的信息。<br><br>实际上，声明一个泛型数据的方法是<br><br>T[] array = (T[])new Object[length];<br><br>这样，问题解决，对 Java 泛型的理解增加了一些。<br>
<img src ="http://www.blogjava.net/haha1903/aggbug/135113.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/haha1903/" target="_blank">哈哈的日子</a> 2007-08-08 00:39 <a href="http://www.blogjava.net/haha1903/archive/2007/08/08/135113.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>高手是这样炼成的（恶心版，大家不要理我，让我自得一下吧）</title><link>http://www.blogjava.net/haha1903/archive/2007/07/23/131925.html</link><dc:creator>哈哈的日子</dc:creator><author>哈哈的日子</author><pubDate>Mon, 23 Jul 2007 10:01:00 GMT</pubDate><guid>http://www.blogjava.net/haha1903/archive/2007/07/23/131925.html</guid><wfw:comment>http://www.blogjava.net/haha1903/comments/131925.html</wfw:comment><comments>http://www.blogjava.net/haha1903/archive/2007/07/23/131925.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/haha1903/comments/commentRss/131925.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/haha1903/services/trackbacks/131925.html</trackback:ping><description><![CDATA[最近做 BEA Portal，头痛得要死。一大堆不明白的东西要弄。<br><br>今天刚刚进入点状态，弄了 Portal 的菜单，遍历当前 PagePresentionContext，把菜单打出来，顺便自定义一下菜单。<br>哈，全部出来了，所有的子内容都显示了出来，洋洋自得中~~~<br>随便点一个试试，哇靠，怎么只有当前 Context 下面的菜单了，其它的都不翼而飞了，完了，遭遇技术风险中&#8230;&#8230; fear<br><br>不过记得之前使用 multi level menu 的时候，无论点到哪个下面都可以显示全部的 context 啊，为什么现在就不行了呢。<br><br>嘎嘎，灵光一动（高手就这么产生了），想到是不是在 .menu 文件中配置的 singlelevel 和 multilevel 的原因？我自定义的菜单使用的是 singlelevel 的，改成 multilevel，虽然 menu 文件都一样。<br><br>嘎嘎嘎，成了！<br><br>头终于有了快乐的感觉。<br><br>真是，用了 BEA Portal ，嘿，真对得起咱这个头！<br><br>^_^<br><br>调侃之作
<img src ="http://www.blogjava.net/haha1903/aggbug/131925.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/haha1903/" target="_blank">哈哈的日子</a> 2007-07-23 18:01 <a href="http://www.blogjava.net/haha1903/archive/2007/07/23/131925.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Weblogic 配置 OID 的方法</title><link>http://www.blogjava.net/haha1903/archive/2007/07/18/131127.html</link><dc:creator>哈哈的日子</dc:creator><author>哈哈的日子</author><pubDate>Wed, 18 Jul 2007 09:58:00 GMT</pubDate><guid>http://www.blogjava.net/haha1903/archive/2007/07/18/131127.html</guid><wfw:comment>http://www.blogjava.net/haha1903/comments/131127.html</wfw:comment><comments>http://www.blogjava.net/haha1903/archive/2007/07/18/131127.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/haha1903/comments/commentRss/131127.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/haha1903/services/trackbacks/131127.html</trackback:ping><description><![CDATA[将 OID 相应的包放到 %WL_HOME%\server\lib\mbeantypes 目录下就可以了。
<img src ="http://www.blogjava.net/haha1903/aggbug/131127.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/haha1903/" target="_blank">哈哈的日子</a> 2007-07-18 17:58 <a href="http://www.blogjava.net/haha1903/archive/2007/07/18/131127.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hibernate 显示 SQL 语句中 ? 的值</title><link>http://www.blogjava.net/haha1903/archive/2007/07/18/130999.html</link><dc:creator>哈哈的日子</dc:creator><author>哈哈的日子</author><pubDate>Wed, 18 Jul 2007 03:29:00 GMT</pubDate><guid>http://www.blogjava.net/haha1903/archive/2007/07/18/130999.html</guid><wfw:comment>http://www.blogjava.net/haha1903/comments/130999.html</wfw:comment><comments>http://www.blogjava.net/haha1903/archive/2007/07/18/130999.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/haha1903/comments/commentRss/130999.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/haha1903/services/trackbacks/130999.html</trackback:ping><description><![CDATA[1、比较方便的办法<br>在 log4j 的配置中加上<br><br>&nbsp;&lt;logger name="org.hibernate.type" additivity="false"&gt;<br>&nbsp;&nbsp;&lt;level value="debug" /&gt;<br>&nbsp;&nbsp;&lt;appender-ref ref="CONSOLE" /&gt;<br>&nbsp;&nbsp;&lt;appender-ref ref="FILE" /&gt;<br>&nbsp;&lt;/logger&gt;<br>&nbsp;&lt;logger name="org.hibernate.sql" additivity="false"&gt;<br>&nbsp;&nbsp;&lt;level value="debug" /&gt;<br>&nbsp;&nbsp;&lt;appender-ref ref="CONSOLE" /&gt;<br>&nbsp;&nbsp;&lt;appender-ref ref="FILE" /&gt;<br>&nbsp;&lt;/logger&gt;<br>其中 org.hibernate.sql 不知道有什么用。<br><br>2、使用 p6spy 来显示 sql，配合 sqlprofile 比较方便，还可以使用 irontracksql。<br><br>sqlprofile 和 irontracksql 在得到 sql 的机制有些差别。<br><br>sqlprofile 是通过配置 log4j 的 socket append ，将 log 输出到 sqlprofile 的监听端口去。这样在调试程序的时候，只要先启动好 sqlprofile，就能得到 sql 了。<br><br>irontracksql 是在应用中监听一个端口，随应用启动，irontracksql 启动是连接到那个端口去得到 sql，所以要先启动用户，再让 irontracksql 连过去。<br><br>猜测：irontracksql 性能会好一些，而且不想看 sql 可以断下来。sqlprofile 则不行。但在调试程序的时候 sqlprofile 明显方便很多。
<img src ="http://www.blogjava.net/haha1903/aggbug/130999.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/haha1903/" target="_blank">哈哈的日子</a> 2007-07-18 11:29 <a href="http://www.blogjava.net/haha1903/archive/2007/07/18/130999.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>从 google 输入法中提取出单词，来做 lucene 的分词</title><link>http://www.blogjava.net/haha1903/archive/2007/07/04/128100.html</link><dc:creator>哈哈的日子</dc:creator><author>哈哈的日子</author><pubDate>Wed, 04 Jul 2007 06:14:00 GMT</pubDate><guid>http://www.blogjava.net/haha1903/archive/2007/07/04/128100.html</guid><wfw:comment>http://www.blogjava.net/haha1903/comments/128100.html</wfw:comment><comments>http://www.blogjava.net/haha1903/archive/2007/07/04/128100.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/haha1903/comments/commentRss/128100.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/haha1903/services/trackbacks/128100.html</trackback:ping><description><![CDATA[找了半天，才找到 google 输入法的词库文件位置，在 c:\windows\system32\GooglePinyin.ime<br>然后，找输入法生成器，一样，找了半天，找到，在 C:\Program Files\Windows NT\Accessories\Imegen.exe<br><br>希望下次不要再找这么久了。
<img src ="http://www.blogjava.net/haha1903/aggbug/128100.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/haha1903/" target="_blank">哈哈的日子</a> 2007-07-04 14:14 <a href="http://www.blogjava.net/haha1903/archive/2007/07/04/128100.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>抓包工具 Ethereal（现在叫 WireShark）的简单使用。</title><link>http://www.blogjava.net/haha1903/archive/2007/06/18/124956.html</link><dc:creator>哈哈的日子</dc:creator><author>哈哈的日子</author><pubDate>Mon, 18 Jun 2007 07:58:00 GMT</pubDate><guid>http://www.blogjava.net/haha1903/archive/2007/06/18/124956.html</guid><wfw:comment>http://www.blogjava.net/haha1903/comments/124956.html</wfw:comment><comments>http://www.blogjava.net/haha1903/archive/2007/06/18/124956.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.blogjava.net/haha1903/comments/commentRss/124956.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/haha1903/services/trackbacks/124956.html</trackback:ping><description><![CDATA[<p>使用的目的就是为了抓取一下 http 包，看看服务端的重定向目的。<br>下载了 Ethereal 0.99.0 这个东西以前在开发协议栈的时候用过，非常不错的软件。<br>安装，并且在安装过程中，提示要安装 WinCap ，这个是要安装的，应该是抓包需要的插件吧。<br>打开软件，选择：capture-&gt;options，在 interface 中选择一个网卡，并且在 capture filter 中增加一个过滤器，就可以了。<br>常用的过滤器就是 host + ip ，可以抓与指定 ip 通信的包，是我最常用的。<br>然后 start ，就开始抓包了。<br>抓到了包之后，是二进制的，在包上面点击右键选择 Follow TCP Stream ，就可以看到 http 包了。<br>里面红色的是发出的请求，篮色的是响应。<br>ok，大功告成。</p>
<img src ="http://www.blogjava.net/haha1903/aggbug/124956.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/haha1903/" target="_blank">哈哈的日子</a> 2007-06-18 15:58 <a href="http://www.blogjava.net/haha1903/archive/2007/06/18/124956.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用 Weblogic workshop 开发 portal 遇到的尴尬</title><link>http://www.blogjava.net/haha1903/archive/2007/06/18/124951.html</link><dc:creator>哈哈的日子</dc:creator><author>哈哈的日子</author><pubDate>Mon, 18 Jun 2007 07:31:00 GMT</pubDate><guid>http://www.blogjava.net/haha1903/archive/2007/06/18/124951.html</guid><wfw:comment>http://www.blogjava.net/haha1903/comments/124951.html</wfw:comment><comments>http://www.blogjava.net/haha1903/archive/2007/06/18/124951.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/haha1903/comments/commentRss/124951.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/haha1903/services/trackbacks/124951.html</trackback:ping><description><![CDATA[今天刚好接到新的任务，改版现在的 weblogic portal，行！弄新东西我最在行了，说来就来，下载了一堆文档，看来看去。<br>看得两分熟了，准备弄个例子试试，weblogic workshop 还真是不错，轻松就建出来了一个 portal 项目，然后在其中建一个web项目，build 一下吧，惨！出错了，明明在 classpath 中配置了 portal 的包，居然现在告诉我 build 不过。<br>幸好同事告诉我，有命令行的办法 build ，那试一下，至少可以在 build 脚本中找出原因嘛，找到 wlwBuild.bat 瞄了一眼，我靠，居然是直接调用的 wls-ide.jar 来 build 的，看来在脚本里找到原因也比较难了。<br>突然发现，ide 中有一项功能，可以生成 ant 的 build 脚本，好，生成一个，用 ant build。<br>眼看着这几个依赖包就在 classpath 里，就非说找不到！去死吧，郁闷死我了，在同事的机器上一点儿问题都没有！<br>是不是 Program Files 的问题？改一下，改成 Progra~1，居然行了！疯了，弄来弄去，原来是因为我把 weblogic 安装到了 Program Files 目录下的原因，sigh，怕怕，windows 的路径问题真是苦恼啊。<br>索性删掉，重新安装到根目录下。<br>问题解决，快乐！<br>
<img src ="http://www.blogjava.net/haha1903/aggbug/124951.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/haha1903/" target="_blank">哈哈的日子</a> 2007-06-18 15:31 <a href="http://www.blogjava.net/haha1903/archive/2007/06/18/124951.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Subversion 发现的一个奇怪的问题</title><link>http://www.blogjava.net/haha1903/archive/2007/06/04/121864.html</link><dc:creator>哈哈的日子</dc:creator><author>哈哈的日子</author><pubDate>Mon, 04 Jun 2007 08:30:00 GMT</pubDate><guid>http://www.blogjava.net/haha1903/archive/2007/06/04/121864.html</guid><wfw:comment>http://www.blogjava.net/haha1903/comments/121864.html</wfw:comment><comments>http://www.blogjava.net/haha1903/archive/2007/06/04/121864.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/haha1903/comments/commentRss/121864.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/haha1903/services/trackbacks/121864.html</trackback:ping><description><![CDATA[<p>概括的说，就是回到过去，把现在不存在的东西删除了。<br>步骤：<br>1、删除一个目录 d，目录中有文件 f，提交。(状态：HEAD中已经没有 d 和 f 了)<br>2、switch 到前一个版本，就是没删除目录 d 的版本。<br>3、删除文件 f，提交，这时没有任何的提示，个人理解就是将 HEAD 中的 f 又删除了一次，而与当前状态不冲突，正常 merge。</p>
4、Update 一下，更新到最初的版本 + 2，d 是不存在的，f 同样不存在。<br>
<img src ="http://www.blogjava.net/haha1903/aggbug/121864.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/haha1903/" target="_blank">哈哈的日子</a> 2007-06-04 16:30 <a href="http://www.blogjava.net/haha1903/archive/2007/06/04/121864.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>好用的基于 jquery 的 calendar</title><link>http://www.blogjava.net/haha1903/archive/2007/06/02/121466.html</link><dc:creator>哈哈的日子</dc:creator><author>哈哈的日子</author><pubDate>Sat, 02 Jun 2007 03:09:00 GMT</pubDate><guid>http://www.blogjava.net/haha1903/archive/2007/06/02/121466.html</guid><wfw:comment>http://www.blogjava.net/haha1903/comments/121466.html</wfw:comment><comments>http://www.blogjava.net/haha1903/archive/2007/06/02/121466.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/haha1903/comments/commentRss/121466.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/haha1903/services/trackbacks/121466.html</trackback:ping><description><![CDATA[<p>今天看了一下基于 jquery 的 calendar js 控件，效果还不错，而且改变了我对 calendar 控件的恐惧感。<br><br>在 jquery 的官方网站上提供了两个 calendar 控件(<a href="http://docs.jquery.com/Plugins">http://docs.jquery.com/Plugins</a>)，Calendar (Pop-up Calendar)和DateSelector ，分别试用了一下。</p>
先试了一下 DateSelector，这个出现的比较早，会比较成熟一些。<br>简单的下载了datePicker.js和styles.css (jquery当然也要下载)<br>写了个测试页面，成功了！非常非常简单好用，没什么依赖。<br>测试页面内容如下：<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">html</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">head</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">link&nbsp;</span><span style="COLOR: #ff0000">rel</span><span style="COLOR: #0000ff">="stylesheet"</span><span style="COLOR: #ff0000">&nbsp;type</span><span style="COLOR: #0000ff">="text/css"</span><span style="COLOR: #ff0000">&nbsp;href</span><span style="COLOR: #0000ff">="styles.css"</span><span style="COLOR: #ff0000">&nbsp;title</span><span style="COLOR: #0000ff">="default"</span><span style="COLOR: #ff0000">&nbsp;media</span><span style="COLOR: #0000ff">="screen"</span><span style="COLOR: #ff0000">&nbsp;</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">script&nbsp;</span><span style="COLOR: #ff0000">type</span><span style="COLOR: #0000ff">="text/javascript"</span><span style="COLOR: #ff0000">&nbsp;src</span><span style="COLOR: #0000ff">="jquery-latest.pack.js"</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">script</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">script&nbsp;</span><span style="COLOR: #ff0000">type</span><span style="COLOR: #0000ff">="text/javascript"</span><span style="COLOR: #ff0000">&nbsp;src</span><span style="COLOR: #0000ff">="datePicker.js"</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">script</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">script&nbsp;</span><span style="COLOR: #ff0000">type</span><span style="COLOR: #0000ff">="text/javascript"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"><br>$(document).ready(init);<br></span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">function</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;init()&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;$('input#date1').datePicker();<br>&nbsp;&nbsp;&nbsp;&nbsp;$('input#date2').datePicker({startDate:'</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">2006</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">-</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">11</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">-</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">02</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">',&nbsp;endDate:'</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">2006</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">-</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">11</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">-</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">13</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">'});<br>}<br></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">script</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">head</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">body</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">form&nbsp;</span><span style="COLOR: #ff0000">action</span><span style="COLOR: #0000ff">="#"</span><span style="COLOR: #ff0000">&nbsp;method</span><span style="COLOR: #0000ff">="post"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">div&nbsp;</span><span style="COLOR: #ff0000">class</span><span style="COLOR: #0000ff">="demo-holder"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">label&nbsp;</span><span style="COLOR: #ff0000">for</span><span style="COLOR: #0000ff">="date1"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">Date&nbsp;1</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">label</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">input&nbsp;</span><span style="COLOR: #ff0000">type</span><span style="COLOR: #0000ff">="text"</span><span style="COLOR: #ff0000">&nbsp;class</span><span style="COLOR: #0000ff">="date-picker"</span><span style="COLOR: #ff0000">&nbsp;name</span><span style="COLOR: #0000ff">="date1"</span><span style="COLOR: #ff0000">&nbsp;id</span><span style="COLOR: #0000ff">="date1"</span><span style="COLOR: #ff0000">&nbsp;</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">div</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">div&nbsp;</span><span style="COLOR: #ff0000">class</span><span style="COLOR: #0000ff">="demo-holder"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">label&nbsp;</span><span style="COLOR: #ff0000">for</span><span style="COLOR: #0000ff">="date2"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">Date&nbsp;2</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">label</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">input&nbsp;</span><span style="COLOR: #ff0000">type</span><span style="COLOR: #0000ff">="text"</span><span style="COLOR: #ff0000">&nbsp;class</span><span style="COLOR: #0000ff">="date-picker"</span><span style="COLOR: #ff0000">&nbsp;name</span><span style="COLOR: #0000ff">="date2"</span><span style="COLOR: #ff0000">&nbsp;id</span><span style="COLOR: #0000ff">="date2"</span><span style="COLOR: #ff0000">&nbsp;</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">div</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">div&nbsp;</span><span style="COLOR: #ff0000">style</span><span style="COLOR: #0000ff">="float:&nbsp;left;&nbsp;margin:&nbsp;2em&nbsp;1em&nbsp;1em;"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">select</span><span style="COLOR: #0000ff">&gt;&lt;</span><span style="COLOR: #800000">option</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">Select&nbsp;doesn't&nbsp;display&nbsp;through&nbsp;calendar&nbsp;even&nbsp;in&nbsp;IE!</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">option</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">select</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">div</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">form</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">body</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">html</span><span style="COLOR: #0000ff">&gt;</span></div>
<p>&nbsp;<img height=80 alt="" src="http://www.blogjava.net/images/blogjava_net/haha1903/Snap1.jpg" width=672 border=0><br>静态页面如图，点击日历图标。<br><img height=245 alt="" src="http://www.blogjava.net/images/blogjava_net/haha1903/Snap2.jpg" width=546 border=0><br>还能挡住 select 框，真是 cool 毕了！<br>不过，这是讨厌的英文，把那弄成中文吧，^_^<br>在 init 中加上<br></p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;$.datePicker.setDateFormat('ymd',&nbsp;'-');<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;$.datePicker.setLanguageStrings(<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;['日',&nbsp;'一',&nbsp;'二',&nbsp;'三',&nbsp;'四',&nbsp;'五',&nbsp;'六'],<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;['一月',&nbsp;'二月',&nbsp;'三月',&nbsp;'四月',&nbsp;'五月',&nbsp;'六月',&nbsp;'七月',&nbsp;'八月',&nbsp;'九月',&nbsp;'十月',&nbsp;'十一月',&nbsp;'十二月'],<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{p:'上月',&nbsp;n:'下月',&nbsp;c:'关闭',&nbsp;b:'请选择'}<br>&nbsp;&nbsp;&nbsp;&nbsp;);</span></div>
<p><br>一切 ok，顺利变成中文<br><img height=220 alt="" src="http://www.blogjava.net/images/blogjava_net/haha1903/Snap3.jpg" width=557 border=0><br>不过这个控件有个很大的问题，就是不能选择年份，如果这个控件是让人选生日的，那可就麻烦了。<br></p>
<p>下次再介绍另一个吧，出去吃饭了。</p>
<img src ="http://www.blogjava.net/haha1903/aggbug/121466.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/haha1903/" target="_blank">哈哈的日子</a> 2007-06-02 11:09 <a href="http://www.blogjava.net/haha1903/archive/2007/06/02/121466.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>好用的 wget 命令</title><link>http://www.blogjava.net/haha1903/archive/2007/05/31/121189.html</link><dc:creator>哈哈的日子</dc:creator><author>哈哈的日子</author><pubDate>Thu, 31 May 2007 08:42:00 GMT</pubDate><guid>http://www.blogjava.net/haha1903/archive/2007/05/31/121189.html</guid><wfw:comment>http://www.blogjava.net/haha1903/comments/121189.html</wfw:comment><comments>http://www.blogjava.net/haha1903/archive/2007/05/31/121189.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/haha1903/comments/commentRss/121189.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/haha1903/services/trackbacks/121189.html</trackback:ping><description><![CDATA[可以通过 linux 命令行的方式访问 url ，在有防火墙，不能使用 http 访问的时候，非常的有用。
<img src ="http://www.blogjava.net/haha1903/aggbug/121189.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/haha1903/" target="_blank">哈哈的日子</a> 2007-05-31 16:42 <a href="http://www.blogjava.net/haha1903/archive/2007/05/31/121189.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>远程调用的 Singleton 与 Enum 问题</title><link>http://www.blogjava.net/haha1903/archive/2007/05/31/121100.html</link><dc:creator>哈哈的日子</dc:creator><author>哈哈的日子</author><pubDate>Thu, 31 May 2007 03:15:00 GMT</pubDate><guid>http://www.blogjava.net/haha1903/archive/2007/05/31/121100.html</guid><wfw:comment>http://www.blogjava.net/haha1903/comments/121100.html</wfw:comment><comments>http://www.blogjava.net/haha1903/archive/2007/05/31/121100.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/haha1903/comments/commentRss/121100.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/haha1903/services/trackbacks/121100.html</trackback:ping><description><![CDATA[<p>今天测试的时候遇到一个问题，在本机运行好好的，但部署在远程的时候，突然出现奇怪的问题。<br><br>查了一下原因，是由于我们自已做的 Status 类是在 java 1.4 下自己制作的 Enum，判断的时候使用了 == 号，在一个 jvm 下，没有任何问题，但从远程传回来的 status 使用 == 显示是一定不可能是 true 了。<br><br>从而出现了上面的问题。<br><br>不知道 java 5 的 enum 会不会有这个问题。<br><br>singleton 的 equals 应该会同样有这个问题。</p>
<img src ="http://www.blogjava.net/haha1903/aggbug/121100.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/haha1903/" target="_blank">哈哈的日子</a> 2007-05-31 11:15 <a href="http://www.blogjava.net/haha1903/archive/2007/05/31/121100.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JDK 自带实用工具集</title><link>http://www.blogjava.net/haha1903/archive/2007/05/24/119646.html</link><dc:creator>哈哈的日子</dc:creator><author>哈哈的日子</author><pubDate>Thu, 24 May 2007 03:22:00 GMT</pubDate><guid>http://www.blogjava.net/haha1903/archive/2007/05/24/119646.html</guid><wfw:comment>http://www.blogjava.net/haha1903/comments/119646.html</wfw:comment><comments>http://www.blogjava.net/haha1903/archive/2007/05/24/119646.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/haha1903/comments/commentRss/119646.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/haha1903/services/trackbacks/119646.html</trackback:ping><description><![CDATA[<p>我常用的 JDK 自带工具有几个，最常用的 javac、javadoc、java、jar 就不说了<br><br>1、native2ascii，不说也知道，是作国际化的时候，将中文 unicode 转成 ascii 的，有一个有用的参数 -reverse ，将 ascii 转回来。<br>2、javap，将 class 反编译成 Java bytecodes，类似于 jvm 上的汇编。<br>3、javah，将带有 native 方法的 java 文件编译出 c/c++ 的头文件。<br>4、jdb，java debug 工具<br>5、jps，查看 jvm 进程状态信息<br>6、keytool，生成 keystore 文件<br><br>还有几个 rmi 和 applet 的工具，平时很少用到。</p>
<img src ="http://www.blogjava.net/haha1903/aggbug/119646.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/haha1903/" target="_blank">哈哈的日子</a> 2007-05-24 11:22 <a href="http://www.blogjava.net/haha1903/archive/2007/05/24/119646.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Telnet 的 Escape 字符</title><link>http://www.blogjava.net/haha1903/archive/2007/05/21/118802.html</link><dc:creator>哈哈的日子</dc:creator><author>哈哈的日子</author><pubDate>Mon, 21 May 2007 01:39:00 GMT</pubDate><guid>http://www.blogjava.net/haha1903/archive/2007/05/21/118802.html</guid><wfw:comment>http://www.blogjava.net/haha1903/comments/118802.html</wfw:comment><comments>http://www.blogjava.net/haha1903/archive/2007/05/21/118802.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/haha1903/comments/commentRss/118802.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/haha1903/services/trackbacks/118802.html</trackback:ping><description><![CDATA[<p>在尝试服务器某个服务是否打开的时候，经常会使用 telnet 命令<br>telnet IP PORT<br>比如<br>要测试 192.168.1.101 的 1521&nbsp;端口，就是 telnet 192.168.1.101 1521<br>如果成功，就黑屏，什么也不显示，这时候要退出，我以前总是关闭窗口的，实际上可以使用<br>CTRL+] ，然后进入命令行，quit ，退出。<br><br>屏幕显示如下<br><br><br><br>欢迎使用 Microsoft Telnet Client</p>
<p>Escape 字符是 'CTRL+]'</p>
<p><br>Microsoft Telnet&gt; quit</p>
<img src ="http://www.blogjava.net/haha1903/aggbug/118802.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/haha1903/" target="_blank">哈哈的日子</a> 2007-05-21 09:39 <a href="http://www.blogjava.net/haha1903/archive/2007/05/21/118802.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>试用了一下 cwRsync 成功</title><link>http://www.blogjava.net/haha1903/archive/2007/05/20/118683.html</link><dc:creator>哈哈的日子</dc:creator><author>哈哈的日子</author><pubDate>Sun, 20 May 2007 06:36:00 GMT</pubDate><guid>http://www.blogjava.net/haha1903/archive/2007/05/20/118683.html</guid><wfw:comment>http://www.blogjava.net/haha1903/comments/118683.html</wfw:comment><comments>http://www.blogjava.net/haha1903/archive/2007/05/20/118683.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/haha1903/comments/commentRss/118683.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/haha1903/services/trackbacks/118683.html</trackback:ping><description><![CDATA[<p>因为需要在两台机器上同步一些数据，在网上找了一下，发现 cwRsync 是可以的。尝试了一下<br><br>1、安装<br>安装的过程很简单，也很顺利，从 cwRsync 网站上下载的 server and client ，都安装了一下，不过后来发现，其实是不需要安装 client 的，只要 server 就可以了，server 包括了 client 的功能。安装完 server 后，会在 service 中增加 Rsync 和 ssh 服务。<br><br>2、配置<br>配置了一下 rsyncd.conf<br><br>use chroot = false<br>strict modes = false<br>hosts allow = *<br>log file = rsyncd.log<br>pid file = rsyncd.pid</p>
<p># Module definitions<br># Remember cygwin naming conventions : c:\work becomes /cygwin/c/work<br>#<br>[test]<br>path = /cygdrive/c/work<br>read only = false<br>transfer logging = yes<br><br>只是将 [test] 中的 path 改成了我本机的备份目录<br><br>[test]<br>path = /cygdrive/d/backup<br>read only = false<br>transfer logging = yes<br><br>3、数据同步<br>因为只是最简单的数据同步，所以就不使用 ssh 了，直接启动 rsync 服务就可以了。然后按照 usage 上面教的。<br><br>rsync -av /cygdrive/d/test localhost::test</p>
<p>完成了数据的同步工作，一切顺利。顺便说一下，/cygdrive/d 是安装完 cwRsync ，会自动将系统上所有的盘 mount 成 /cygdrive/x ，x 表示盘符，小写的，并把安装目录 mount 成 / 了。<br><br>4、绿色安装<br>我将 cwRsync copy 到另一台机器上，试图不安装就启动 cwRsync server，启动过程比较正常，只要运行 rsync --config=$config_file --daemon --no-detach 就可以了，这里面的 $config_file 指的是前面配置的 rsyncd.conf ，路径要写成 /cygdrive/d 这样的形式。<br><br>5、安装成服务<br>程序包中带了 cygwin 的 cygrunsrv ，可以通过这个命令将 rsync server 做成 windows 服务，但我试了一下，路径中有空格没有成功，命令是这样的 </p>
cygrunsrv.exe -I "Rsync" -p /cygdrive/d/cwRsyncServer/bin/rsync.exe -a "--config=/cygdrive/d/cwRsyncServer/rsyncd.conf --daemon --no-detach" -f "Rsync"<br><br>也很顺利的安装成服务了。<br><br>6、问题二<br>惨的是当我在第二台机器上同步数据的时候，权限却成了问题，同步过去的文件（目录）所有者是&nbsp;SYSTEM，不是我，而且我没有访问的权限，只有在安全中把自己加进来（我用管理员帐户），给自己权限，才能访问。<br><br>或者在 cygwin 下使用 chmod 给自己授权，和在 windows 中给自己授权没什么区别。<br><br>最后：<br><br>问题2已经解决<br>方法：只要把 cwRsyncServer 这个目录 mount 到 / ，就可以了，估计是 rsync 同步数据的时候，会调用 /bin/chmod 来授权，如果是安装版的，这个目录会在安装的时候 mount 好。 （好象不是这个问题了） 
<img src ="http://www.blogjava.net/haha1903/aggbug/118683.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/haha1903/" target="_blank">哈哈的日子</a> 2007-05-20 14:36 <a href="http://www.blogjava.net/haha1903/archive/2007/05/20/118683.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>不小心被 PMD 撞了一下</title><link>http://www.blogjava.net/haha1903/archive/2007/05/16/117782.html</link><dc:creator>哈哈的日子</dc:creator><author>哈哈的日子</author><pubDate>Wed, 16 May 2007 02:41:00 GMT</pubDate><guid>http://www.blogjava.net/haha1903/archive/2007/05/16/117782.html</guid><wfw:comment>http://www.blogjava.net/haha1903/comments/117782.html</wfw:comment><comments>http://www.blogjava.net/haha1903/archive/2007/05/16/117782.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/haha1903/comments/commentRss/117782.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/haha1903/services/trackbacks/117782.html</trackback:ping><description><![CDATA[<p>PMD 在 check 的时候，告诉我不要使用 new Interger(int i) 方法，要使用 Integer.valueOf(int i) 方法，如我所料，Integer 将-128~127 之间的 Interger cache 了，好啊，就用这个方法了。<br><br>后来悲惨的发现，JDK 5.0 才有这个方法 1.4 中是没有的。<br><br>苦在我开发的时候使用的是 JDK 5.0 ，部署在 1.4 的环境中，运行出错。<br><br>sigh，不小心被 PMD 撞了一下，它怎么也不告诉我不能用在 1.4 里啊。^_^</p>
<img src ="http://www.blogjava.net/haha1903/aggbug/117782.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/haha1903/" target="_blank">哈哈的日子</a> 2007-05-16 10:41 <a href="http://www.blogjava.net/haha1903/archive/2007/05/16/117782.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>安装 jira acceptance subversion hooks 心得</title><link>http://www.blogjava.net/haha1903/archive/2007/05/14/117281.html</link><dc:creator>哈哈的日子</dc:creator><author>哈哈的日子</author><pubDate>Mon, 14 May 2007 03:14:00 GMT</pubDate><guid>http://www.blogjava.net/haha1903/archive/2007/05/14/117281.html</guid><wfw:comment>http://www.blogjava.net/haha1903/comments/117281.html</wfw:comment><comments>http://www.blogjava.net/haha1903/archive/2007/05/14/117281.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/haha1903/comments/commentRss/117281.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/haha1903/services/trackbacks/117281.html</trackback:ping><description><![CDATA[<p>今天安装了一下 jira 的 svn acceptance，遇到了不少问题，实际上这些问题在之前学习 subversion hooks 的时候也有遇到，没记下，又弄一次，真是心烦得很。<br><br>1、hooks 中不能使用任何环境变量，svn acceptance 使用的是 pre-commit ，里面调用 python 的脚本。python 要写绝对路径，脚本 jira-client.py 也要写绝对路径，将 python 放在 path 中是没有用的。（这个在 svn acceptance 安装步骤中有，没有细看就安装，苦啊！）<br>2、pre-commit.bat 中路径或者使用老 DOS 的方式，如 @D:\Progra~1\Python25\python.exe" E:\SVN\repos\hooks\jira-client.py %1 %2。或者加上双引号，如@"D:\Program Files\Python25\python.exe" E:\SVN\repos\hooks\jira-client.py %1 %2<br>3、jira-client.py 中的路径也一样，或者使用 DOS，如 svnlookPath = 'D:\\Progra~1\\svn-win32-1.4.3\\bin\\svnlook.exe'。或者加上双引号，如svnlookPath = '"D:\\Program Files\\svn-win32-1.4.3\\bin\\svnlook.exe"'<br>4、hooks 中 exit 1 就是拒绝提交，exit 0 或什么都不写就是允许提交（windows 2000 中好象必须要 exit 0）<br>5、提交显示的错误信息在脚本中放在 system err 中，bat 文件只要 echo "haha" &gt;&amp;2 就可以了，python 中 print &gt;&gt; sys.stderr, 'haha' 就可以了<br>6、用户信息是通过 svnlook author 得到，注释信息是通过 svnlook log 得到<br><br>ps:subversion acceptance&nbsp;plugins 安装容易得很</p>
<img src ="http://www.blogjava.net/haha1903/aggbug/117281.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/haha1903/" target="_blank">哈哈的日子</a> 2007-05-14 11:14 <a href="http://www.blogjava.net/haha1903/archive/2007/05/14/117281.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>IBatis 在 ResultMap 中设置 nullValue</title><link>http://www.blogjava.net/haha1903/archive/2007/04/30/114807.html</link><dc:creator>哈哈的日子</dc:creator><author>哈哈的日子</author><pubDate>Mon, 30 Apr 2007 08:17:00 GMT</pubDate><guid>http://www.blogjava.net/haha1903/archive/2007/04/30/114807.html</guid><wfw:comment>http://www.blogjava.net/haha1903/comments/114807.html</wfw:comment><comments>http://www.blogjava.net/haha1903/archive/2007/04/30/114807.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/haha1903/comments/commentRss/114807.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/haha1903/services/trackbacks/114807.html</trackback:ping><description><![CDATA[当数据库字段类型为 Number 时，IBatis 可以映射 Java 类型为 Integer，这样就一切没问题了。<br>不过这样比较麻烦，尤其是在使用 JDK 1.4 的时候。<br><br>如果选择映射为 int 类型，在数据库字段可以为 null 的情况下，需要设置 result 的 nullValue ，否则会出错。
<img src ="http://www.blogjava.net/haha1903/aggbug/114807.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/haha1903/" target="_blank">哈哈的日子</a> 2007-04-30 16:17 <a href="http://www.blogjava.net/haha1903/archive/2007/04/30/114807.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jprobe 7.0 crack</title><link>http://www.blogjava.net/haha1903/archive/2007/04/13/110462.html</link><dc:creator>哈哈的日子</dc:creator><author>哈哈的日子</author><pubDate>Fri, 13 Apr 2007 07:35:00 GMT</pubDate><guid>http://www.blogjava.net/haha1903/archive/2007/04/13/110462.html</guid><wfw:comment>http://www.blogjava.net/haha1903/comments/110462.html</wfw:comment><comments>http://www.blogjava.net/haha1903/archive/2007/04/13/110462.html#Feedback</comments><slash:comments>21</slash:comments><wfw:commentRss>http://www.blogjava.net/haha1903/comments/commentRss/110462.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/haha1903/services/trackbacks/110462.html</trackback:ping><description><![CDATA[6.0 的 crack 不能用了，就自己弄了一个 7.0 的 crack ，如果有什么问题，给我留言。<a href="http://www.blogjava.net/Files/haha1903/jp7.0-crack-20070530.rar"><br>http://www.blogjava.net/Files/haha1903/jp7.0-crack-20070530.rar</a> 

crack by Sea Chang<img src ="http://www.blogjava.net/haha1903/aggbug/110462.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/haha1903/" target="_blank">哈哈的日子</a> 2007-04-13 15:35 <a href="http://www.blogjava.net/haha1903/archive/2007/04/13/110462.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>导出 Excel 设置下载还是直接打开</title><link>http://www.blogjava.net/haha1903/archive/2007/02/06/98369.html</link><dc:creator>哈哈的日子</dc:creator><author>哈哈的日子</author><pubDate>Tue, 06 Feb 2007 08:47:00 GMT</pubDate><guid>http://www.blogjava.net/haha1903/archive/2007/02/06/98369.html</guid><wfw:comment>http://www.blogjava.net/haha1903/comments/98369.html</wfw:comment><comments>http://www.blogjava.net/haha1903/archive/2007/02/06/98369.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/haha1903/comments/commentRss/98369.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/haha1903/services/trackbacks/98369.html</trackback:ping><description><![CDATA[设置 Header Content-disposition 可以<br />如果设置为 attachment 就下载<br />如果设置为 inline 就直接打开<br /><br />response.setContentType("application/msexcel");<br />加上<br />response.setHeader("Content-disposition", "attachment; filename=\"export.xls\"");<br />或<br />response.setHeader("Content-disposition", "inline; filename=\"export.xls\"");<img src ="http://www.blogjava.net/haha1903/aggbug/98369.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/haha1903/" target="_blank">哈哈的日子</a> 2007-02-06 16:47 <a href="http://www.blogjava.net/haha1903/archive/2007/02/06/98369.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>EasyMock 使用</title><link>http://www.blogjava.net/haha1903/archive/2007/01/18/94768.html</link><dc:creator>哈哈的日子</dc:creator><author>哈哈的日子</author><pubDate>Thu, 18 Jan 2007 15:03:00 GMT</pubDate><guid>http://www.blogjava.net/haha1903/archive/2007/01/18/94768.html</guid><wfw:comment>http://www.blogjava.net/haha1903/comments/94768.html</wfw:comment><comments>http://www.blogjava.net/haha1903/archive/2007/01/18/94768.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/haha1903/comments/commentRss/94768.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/haha1903/services/trackbacks/94768.html</trackback:ping><description><![CDATA[
		<strong>
				<font color="#0000ff">背景：</font>
				<br />
		</strong>EasyMock 2 版本必须要 JDK5 才能使用 EasyMock 1.2 可以在 JDK 1.4 使用<br />也可以使用 Retrotranslator 将 EasyMock 2 版本改为 JDK 1.4 也可以使用的。<br />目前使用的是 EasyMock 2.2<br /><br /><font color="#0000ff"><strong>准备：</strong></font><br />先弄个接口 Haha 用来 Mock 的，两个方法<br />void haha(String s);<br />String hehe(String s);<br /><br /><strong><font color="#0000ff">开始 Mock：</font></strong><br /><br /><font color="#0000ff">静态导入 EasyMock</font><br />import static org.easymock.EasyMock.*;<br /><br /><font color="#0000ff">然后</font><br />Haha haha=createMock(Haha.class);<br /><br />无返回值的调用可以直接调用 Mock 方法<br /><br />haha.haha("haha");<br /><br />有返回值的可以<br /><br />expect(haha.hehe("hehe")).andReturn("ok");<br /><br /><font color="#0000ff">这样做完后</font><br /><br />你要 replay(haha); 一下，表示录完 mock ，准备重放了。<br /><br />就可以调用 haha.haha("haha") 了，同样的，调用 haha.hehe("hehe") 的返回值是 "ok"<br /><br />全部调用完了，使用 verify(haha); 查看一下预期的调用是不是都调了，如果预期要调用一次，却没调，那就会 AssertionError 哦。<br /><br /><font color="#0000ff">调用次数</font><br /><br />上面这些都是默认调用一次，就相当于 expect(haha.hehe("hehe")).andReturn("ok").times(1); 或 expect(haha.hehe("hehe")).andReturn("ok").once();<br /><br />如果想调用任意次，就 expect(haha.hehe("hehe")).andReturn("ok").anyTimes();<br /><br />如果想最少调用一次，就 expect(haha.hehe("hehe")).andReturn("ok").atLeastOnce();<br /><br />如果想调用 1 至 3 次，就 expect(haha.hehe("hehe")).andReturn("ok").times(1,3);<br /><br /><font color="#0000ff">预期的结果<br /></font><font color="#000000"><br />还可以 expect(haha.hehe("hehe")).andReturn("ok").andReturn("ok too").andThrow(new RuntimeException());<br /><br />这样，第一次调用 haha.hehe("hehe") 时返回 "ok" ，第二次返回 "ok too"，第三次调用就比较惨了，会抛出一个 RuntimeException，需要注意</font>的是，如果抛出的异常是 unchecked 的，就是 Runtime 的，就随便抛，如果是 checked 的，那就一定要抛这个方法定义的，否则会在 andThrow 这行出 IllegalArgumentException 。<br /><br />终极解决办法还可以使用 andAnswer(IAnswer&lt;T&gt; answer) 传一个实现 IAnswer 接口的实例，这个接口只有一个方法<br />T answer() throws Throwable;<br />随便你返回什么，或是抛出什么异常。<br /><br /><font color="#0000ff">调用顺序</font><br /><br />不过如上面所说，haha.haha("haha") 与 haha.hehe("hehe") 是没有顺序的，将 createMock 改成 createStrictMock 或在 createMock 后面加一行 checkOrder(haha,true) 就可以了，这时，就一定要按照定义的顺序来调用了。<br /><br />如果多个不同的 mock 也要保证顺序呢？那就不能使用 createMock 来创建这些 mock 了，因为每次 createMock 都会使用一个新的 IMocksControl 实例来单独控制这个 mock ，我们希望将多个 mock 用同一个 IMocksControl 控制，只需要<br /><br />IMocksControl ctrl = createStrictControl();<br />Haha haha1= ctrl.createMock(Haha .class);<br />Haha haha2 = ctrl.createMock(Haha .class);<br /><br />haha1.haha("haha1");<br />haha2.haha("haha2");<br /><br />ctrl.replay();<br /><br />就可以了<br /><br /><font color="#0000ff">预期的参数<br /></font><br />刚才 haha.haha("haha") 中的 "haha" 就是预期的参数，EasyMock 提供了很多预期参数的方法，比如 haha.haha(eq("haha"))，与前面的方法功能完全一样<br />haha.haha((String)anyObject)  随便你传什么参数都没问题。<br />haha.haha(not(eq("haha"))) 这个只要不传 haha ，其它什么都成<br /><br />同样可以自定义，只要调用     public static void reportMatcher(IArgumentMatcher matcher) 方法，将自定义的 IArgumentMatcher  传进去就可以了，这个接口有两个方法 boolean matches(Object argument)  和 void appendTo(StringBuffer buffer) 第一个方法的参数是调用实际传入的值，返回是否匹配，第二个方法是错误时向 buffer 中 append 错误信息。<br /><br /><font color="#0000ff">将方法弄成 Stub<br /></font><br />Stub 方法，我想应该就是随便调，爱怎么调就怎么调，返回的都是那个值，最后也不会验证到底调用了多少次。<br />如果想把一个方法弄成 Stub，无返回值的只要 asStub() 就是 expect(haha.haha("haha")).asStub() ，有返回值的就 andStubReturn() , andStubAnswer() 这样就可以了。<br /><br /><font color="#0000ff">友好的Mock</font><br /><br />我们使用 createMock 创建出来的 mock 对象，如果没有录过，调用这个方法都会出 AssertionError ，但如果使用 createNiceMock 就不会了，会返回 0 , null , false 这样的。<img src ="http://www.blogjava.net/haha1903/aggbug/94768.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/haha1903/" target="_blank">哈哈的日子</a> 2007-01-18 23:03 <a href="http://www.blogjava.net/haha1903/archive/2007/01/18/94768.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>文件 Lock 防止多重启动</title><link>http://www.blogjava.net/haha1903/archive/2007/01/17/94349.html</link><dc:creator>哈哈的日子</dc:creator><author>哈哈的日子</author><pubDate>Wed, 17 Jan 2007 01:34:00 GMT</pubDate><guid>http://www.blogjava.net/haha1903/archive/2007/01/17/94349.html</guid><wfw:comment>http://www.blogjava.net/haha1903/comments/94349.html</wfw:comment><comments>http://www.blogjava.net/haha1903/archive/2007/01/17/94349.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/haha1903/comments/commentRss/94349.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/haha1903/services/trackbacks/94349.html</trackback:ping><description><![CDATA[
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<span style="COLOR: #000000">RandomAccessFile file </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">new</span>
				<span style="COLOR: #000000"> RandomAccessFile(lockFile, </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">rw</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">);<br />FileChannel channel </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> file.getChannel();<br />FileLock tryLock </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> channel.tryLock();<br />System.out.println(</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">try lock ok </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #000000"> tryLock);</span>
		</div>
		<p> </p>
<img src ="http://www.blogjava.net/haha1903/aggbug/94349.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/haha1903/" target="_blank">哈哈的日子</a> 2007-01-17 09:34 <a href="http://www.blogjava.net/haha1903/archive/2007/01/17/94349.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>