Google Prettify
2008-12-19
我上輩子應該是個教師
2008-11-16
SVK使用說明
1.下載SVK
注意: 如果本機有安裝oracle 或環境變數中有PERL5LIB需拿掉或更名。這是perl會讀取的。Oracle會將這個變數指到oracle的perl,可能與svk下載的版本不合。
注意: path中必須包含. 路徑。
2.將目前的資料與server同步。該commit的 commit、該update的update。
3.將原本的檔案保留一份下來。
4.指行dos 指令:
svk depot –i說明: 初始化svk的depot資料。depot是alias。全名是depotmap。Svk會在"C:\Documents and Settings\當前用戶名\.svk\Local建立reponsitory。可以用depot –relocate重新指定。
可以使用下列指令看更多說明:
svk help commands說明: 建立目錄。
svk help depotmap
svk help depot
svk mkdir //mirror -m "Mkdir mirror"
svk mirror svn://SVNSERVER //mirror/project # project目錄會自動建立5.建新目錄/刪除原本SVN中所有的svn設定檔。反正要一個不受原本SVN控管的目錄。如果原本沒有使用SVN那只要新建一個就可以了。假設是svn。
svk sync //mirror/project # 將SVNERVER的資料同步到//mirror中
svk mkdir //local
svk cp //mirror/ project //local/ project # project目錄會自動建立
D:\mydoc\svn>6.進到目錄。進行checkout動作。這裡checkout與CC或perforce中的checkout意義不同。
svk co //my/local
7.下一步比較麻煩。如果你是即有系統的話,需要將原本在local上卻不在SVN上的一些檔案,例如設定檔從備份檔一個一個轉過來。
8.到此已經有一份workarea可供修改。
1.更新
A.更新檔案至最新版本。
svk sync —allB.使用pull 指令可一次進行更新、merge。我建議使用這個,因為只要下一次只令即可。
svk update
svk pull -a2.如果有衝突的話,解決衝突。解決完後,要告訴SVK已經解決完。
svk resolved local/License.txt3.commit code到local。注意一定要到local目錄。
svk commit –C我建議先使用-C參數檢查是commit的檔案,或是在commit時不要直接加-m log訊息,以彈出文字可,一來可確定各檔案控管的狀態(在我的經驗裡,有時候有些檔案的狀態會是【?】,我建議在此時可手動將狀態改成適當的狀態);二來是可決定那些檔案要不要列入控管。
svk commit
4.將local brach的異動上傳到repository 上。注意;SVK有自己的版本編號。SVK的版本隨著depot的異動而改變;不是SVN的repository。
svk pushpush其實是smerge –If的wrap指令。也就是說,在以前(不使用push)的情況下,也可以使用smerge指令,將異動上傳到repository。當merge 由local branch 版本至mirror時,SVK也同將//mirro上的資訊上傳到repository上。
svk smerge //local //mirror
2008-11-11
VMware使用經驗
1.有關於新加的2張網卡
VMware在安裝時,會預設幫你安裝2張網卡。這牽扯到VMware對外的模式。
VMware有2種連線模式。第一種是Bridged模式。這種模式需要另一個實體IP。第二種是NAT模式。VM把你實體的電腦當做Hub,因此VM得到是192.168XXX的虛擬IP。
2.Local與VM中的連繫
第一次安裝,是使用NAT的方式。實體電腦中新增的2張網卡中,當啟動VM時,其中一張的網域會變成與VM相同網域的IP。通常都是XXX.1。有了2個IP,你可以使用網芳或是FTP的方式互傳檔案。不過使用這種方式,因為是虛擬IP,因此其它電腦無法直接連繫VM。要連VM只能透過本機來連。如果使用Bridged的方式,因為都是實體IP,所以都可以連繫。
另外在實體電腦中可以直接使用托曳的方式將檔案傳到VM中。
2008-10-29
如何在WEB中使用jasper產生PDF檔?
web └report └template.jrxml └template.jasper使用i-Report編寫jrxml檔、並直接用i-Report編譯產生jasper檔。
使用servletContext取得jasper檔之路徑:
String jasperPath =servletContext.getRealPath("/report/template.jasper");
ServletContext的取得依所使用的web framework而有所不同。以JSF來說,servletContext的取得如下:
ServletContext servletContext=(ServletContext)FacesContext.getCurrentInstance(). getExternalContext().getContext();
接下來產生byte[]串流:
JasperFillManager.fillReportToFile(jasperPath, parameter,conn);
byte[] bytes = JasperRunManager.runReportToPdf(jasperPath, parameter, conn);
之所以要產生byte[]是因為它轉成Stream或是File都很方便。JasperRunManager也提供了很多不同型態+報表類型的回傳值。(詳見API..)。
接下來由HttpResponse取得outputStream並寫出
response.getOutputStream().write(bytes);
2008-09-29
為什麼資產增加記在借方?
首先是基本會計公式:
2008-05-22
技術出身的主管
在我的工作經驗裡, 曾經遇到一位主管, 記得我們第一次見面他就跟我宣稱他也是技術出身的. 之後當我在實作案件時因為速度上的關係,被命令要使用model 1的開發方式. 當然我們也曾經為了開發方式有起過爭執。我記得他跟我說(最經典??)的理由是: 維護成本高? 那是維護的人的事, 你是負責開發, 弄好開發就好. 事實上, 在我們公司裡的企業流程, 開發是一組人馬, 維護是另一組人馬. 開發真的不關我事, 維護成本也是另外一組事業單位的成本, 跟本單位無關.
我本身並不兼任管理職. 目前也是技術人員. 如果我跟別人宣稱我是技術出身, 我想這應該是很理所當然爾, 因為也從沒轉過工作型態. 事實上前陣子我也才在爭扎是否要走管理職. 因為走技術真的錢不太多. 不過玩技術有點像在吃毒品-是越吃越上癮. 如果一個主管工作10年, 做技術1年, 剩下9年可能是從助理慢慢爬到主管, 那能否算是技術出身? 我想不行. 又多少年才能算是可以宣稱自己是技術出身?? 這樣想想, 可以宣稱自己是技術出身的主管, 判定標準似乎不是在年資, 而是在於本身是否真有技術能力. 在那間公司, 我也遇到寫code寫了3年還沒聽過MVC的人, 所以年資雖然跟能力有點關係, 但不是絕對..
講了那麼多, 就是要說, 當如果遇到有管理人員跟你說他也是技術出身, 他只是想讓你覺得會很容易溝通. 你不要期望他會有比較好的技術sense.甚至你也不該期望你會很好跟他溝通, 因為那只是一種管理手段.
2008-05-21
如何在word中使用自訂的表格樣式
2008-04-18
給我複雜的BO
2008-03-13
如何在weblogic 8中取得jsp編譯後的java檔
1.jsp檔在${BEA_HOME|}\user_projects\domains\mydomain\applications下, 也就是deploy的目錄。
2.class檔在${BEA_HOME}\user_projects\domains\mydomain\myserver\.wlnotdelete\extract下,也就是weblogic暫存目錄下。
那.java檔呢? weblogic 預設在產生.class檔後就會移除掉。要保留.java檔的方法是在weblogic.xml中設定keepgenerated為true即可。
${BEA_HOME}\user_projects\domains\mydomain\applications\${AP_NAME}\WEB-INF\weblogic.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE weblogic-web-app PUBLIC "-//BEA Systems, Inc.//DTD Web Application 8.1//EN" "http://www.bea.com/servers/wls810/dtd/weblogic810-web-jar.dtd"> <weblogic-web-app> <jsp-descriptor> <jsp-param> <param-name>keepgenerated</param-name> <param-value>true</param-value> </jsp-param> </jsp-descriptor> <container-descriptor> <prefer-web-inf-classes>false</prefer-web-inf-classes> </container-descriptor> </weblogic-web-app>
2008-02-17
WDS使用技巧
Google的桌面搜尋是出了有名的。很可惜,不知道為什麼,在我的電腦上執行,總會有問題。但對於這類的搜尋功能又是愛不釋手(在有需要找檔案或是一些文件時,速度真是超快的)。因此就在想想有什麼替代方案;那就是WDS啦。什麼是WDS? WDS就是Windows Desktop Search;聽名字就知道跟google desktop search是相同的東西。以下是一些進階搜尋的功能:
ext:doc - 搜尋後面為doc的文件
file:report - 搜尋檔案名中包含report這個詞的文件
cameramake:canon - 搜尋所有圖片中由canon相機產生的(依賴於EXIF訊息)
from:zhang - 搜尋發件人名字中有zhang的郵件
size:>100000000 - 搜尋尺寸大於100MB的項目。這個做得比較土,不支持MB,KB等服務機構,只能是字元為服務機構,要加一堆0……
phone:12345678 - 搜尋電話號碼為12345678的聯絡人
來源:windows desktop search一些小技巧
2008-01-22
如何在Quartz中確定當上一個job尚未執行完前不執行下一次job?
Sample code後有一段是展示如何重新啟動排程及設定排程時間。
這段Sample code是使用Spring framework。
public class LogAnalysisJob extends QuartzJobBean {
private LogAnalysisBO bo;
public void setBo(MyBO bo) {
this.bo = bo;
}
protected void executeInternal(JobExecutionContext c)
throws JobExecutionException {
Scheduler sc = c.getScheduler();
try {
List l = sc.getCurrentlyExecutingJobs();
if (l.size() <= 1) { //限定目前的只有1個bo被執行
bo.exe();//真正執行企業邏輯的部份
}
SimpleTriggerBean t = (SimpleTriggerBean) c.getTrigger();
if (count > 10) {
t.setRepeatInterval(t.getRepeatInterval() + 3000);//如果排程執行超過10次, 每次執行間隔就延長3秒
sc.rescheduleJob(t.getName(), c.getJobDetail().getGroup(), t);
count = 0;
}
count++;
} catch (SchedulerException e) {
e.printStackTrace();
}
private static int count;
}
2008-01-21
在Spring中使用Quartz
當我在執行時,發生了NoSuchMethodError
Caused by:java.lang.NoSuchMethodError:org.apache.commons.collections.SetUtils.orderedSet...解決方法是更換commons-collections至3.X版就可以了。
2008-01-04
Hibernate中Criteria如何查詢nested property?
Criteria cri = session.createCriteria(ObjectA.class);這樣是不行滴。(其中一個)正確的寫法是:
cri.add(Restrictions.eq("propertyA.propertyB", "nested property"));
Collection r = cri.list();
沒錯,跟HQL一樣,需要使用alias。Criteria cri = session.createCriteria(ObjectA.class);
cri.createAlias("propertyA", "ptA");
cri.add(Restrictions.eq("ptA.propertyB", "nested property"));
Collection r = cri.list();
更多請參考:Hibernate 文件