發表文章

目前顯示的是 2006的文章

Loging 實務:log4j 設定檔範例

#設定 Logger(s),格式 logger_name = message_level, appender1, appender2, ... log4j.rootCategory=error, stdout #以下是給fileftp.java使用的專屬Category log4j.category.doftp.name=info, X #以下設定false時,訊息不會往rootCategory送,只會在doftp.name的自訂Categoey中 log4j.additivity.doftp.name=false #設定 Appenders #### First appender writes to console log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout # Pattern to output the caller's file name and line number. log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n ### 設定doftp.name是RollingFile的方式 log4j.appender.X=org.apache.log4j.RollingFileAppender log4j.appender.X.File=doftp.log log4j.appender.X.MaxFileSize=300KB log4j.appender.X.MaxBackupIndex=2 log4j.appender.X.layout=org.apache.log4j.PatternLayout log4j.appender.X.layout.ConversionPattern=%5p %d{yyyy-MM-dd HH:mm:ss} %m%n

測試預期的 Exception 行為

當某個方法我們預期會丟出 Exception 時, 可利用 fail 這個述詞來測試。 如以下的 JUnit 語法: public void testGetUserException() { User u = null; try { u = UserFetcher.getUser("ThisUserIdDoesNotExist"); fail("Should have gotten NoSuchUserException - used a bad user ID"); } catch (NoSuchUserException expected) { ; // Expected - intentional } }

組 SQL 字串時,加入 WHERE 1=1 條件,以增加組 SQL 字串彈性

若在一般程式語言存取關聯式資料庫,必須要組 SQL 字串,傳至後端的 DB Server,利用 WHERE 1=1,則可把條件句彈性的組合到 SQL 字串中,如下: strSQL = " select * "; strSQL +=" from employee "; strSQL +=" where 1=1 "; if(emp_no.length() > 0) { strSQL +=" and emp_no='"+emp_no+"' "; } if(emp_name.length() > 0) { strSQL +=" and emp_name='"+emp_name+"' "; } 上述程式碼動態要將條件語句加入到原本的 SQL 字串中,而不用考慮原本 SQL 字串的格式。

多個欄位的單一關鍵字查詢,請用 or 運算子

試想,若你希望使用者輸入一個關鍵字來查詢資料, 此關鍵字可以是員工代號,或是員工姓名,那麼也許你會執行兩次 SQL,並判斷兩次 SQL 是否有資料,以達到上述功能: SQL1: sqlstr = " select * from employee where 1 = 1 and emp_no = '#{keyword}'" SQL2: sqlstr = " select * from employee where 1 = 1 and emp_name = '#{keyword}'" 上述二個 SQL 可簡單的以 or 運算子合併成下式: SQL3: sqlstr = " select * from employee where 1 = 1 and emp_no='#{keyword}' or emp_name = '#{keyword}'" 如此一來除了更為簡潔,也讓原本要執行兩次 SQL 查詢,減為一次。

電腦可能遭受的攻擊分類

惡意程式: 電腦病毒:類似生物病毒必須依附在其它活體,電腦病毒必須依附在其它程式,感染其它程式來散佈 電腦蟲:透過網路自動感染其它主機 特洛伊木馬:可遠端控制其它主機 Web 的攻擊: DoS:癱瘓網路服務,使其無法提供服務

WEB 實務:forward vs redirect

Redirect: 伺服器會回復 HTTP 302 的訊息,告訴 client 要求的網頁在新位置, 訊息如下: HTTP/1.1 302 Object moved Location: somewhere/newlocation.jsp Forward: 直接由伺服器把原本的 request 轉送到另一個網頁,client 不知道這個動作。 在 JSP 中,redirect 是由 Respose 物件支援,而 forward 是 RequestDispatcher 物件支援。

需要研究:分散式協同教材

scorm: http://www.adlnet.gov/scorm/20043ED.cfm

JDBC 實務:使用 JDBC 時,一定要放在 try 區塊中,並於 finally 區塊釋放 Connection

在 try/catch/finally 語法中,若有定義 finally 區塊,則執行 try 區塊後,一定會執行 finally 區塊的程式碼。 所以若程式有使用 JDBC 時,一定要包在 try 區塊中,並在 finally 中關閉 connection 釋放資源,才不會耗盡資源。 一般實務作法如下例: Connection con=null; try{ con=new Connection(); ... ... ... }finally{ try{ con.close(); }catch(Throwable e) { String errmsg="close connection failed! errmsg is "+e.getMessage(); log.error(errmsg); } }

Java 實務:發生例外事件時,log 所有的錯誤訊息

系統發生無法處理的例外時,若只顯現「發生系統錯誤,請連絡資訊室!」,但完全沒有 log 錯誤訊息,對除錯是沒有幫助的,尤其是網頁程式,若沒有作 log,則程式人員是無法掌握例外當下系統的狀態。 因此系統應導入 log 機制 Ex. log4j ,來幫助我們 trace 產生例外的程式。建議所有的程式,全部應放鄉 try/catch(throwable) 區塊,除了顯現「發生系統錯誤,請連絡資訊室!」外,並將所有例外訊息傳給 log 以利除錯。 建議在程式加入以下源碼: try { ; }catch(Throwable e){ String errmsg = "系統例外:"+e.getMessage(); log.error(errmsg); throw new RuntimeException(errmsg, e); }

mathml in docbook

要讓 mozilla 的顯示 mathml 生效,請將網頁副檔名為 xhtml ,很重要。

轉檔中最重要的是資料整理

資料整理 像是 cobol 將 text date 匯到 informix 而又要將 date string coverse to date type, 先用 delete 將不合 formate 的 date string, 再作 conversion

docbook 常見設定

1.如何在 DocBook 中放入 MathML? 看這裡 [交叉參考的處理] 交叉參考只想顯示編號標題,不想顯示說明標題 如:圖11."妹妹的照片" -> 圖11. 開啟 param.xsl 設定 xref.with.number.and.title = 0 [文章 參考文獻的引用以數字不以(人名+年份)] 文獻引用標題為 [1] 而不是 [Brooks95] 開啟 param.xsl 設定 bibliography.numbered= 0 docbook 參考文獻的處理 biblioentry vs bibliomixed biblioentry Contains a set of bibliographic elements in random order that the stylesheet selects, orders, and renders. It does not permit PCDATA (ordinary text) except in its child elements. bibliomixed Contains the mix of elements, text, and punctuation as you want it presented. The stylesheet formats elements but does not rearrange them. The term mixed is used here because this is mixed content of elements and text (PCDATA). make a citation link to the specificed biblioentry This citation: to this entry: brody98 ... will generate this citation text: [brody98] 在 xref , link 或 biblioref 等元素設定 linkend 屬性即可 citation 只有在妳不想有連結才用。 xref or biblioref 會自動產生 citation 文字 bibliography.numbered

DocBook 文件轉換環境設定

http://docs.google.com/View?docid=dcmdskhw_2hb698f

知識工程

知識工程的活動 問題評估 知識系統介面/結構的發展 將結構化知識實作進知識庫 獲取並組織相關的資訊、知識及特殊領域知識 測識並確認新加入的知識 整合及維護系統 修訂及評量系統 Various activities of KE specific for the development of a knowledge-based system: Assessment of the problem Development of a knowledge-based system shell/structure Implementation of the structured knowledge into knowledge-bases Acquisition and structuring of the related information, knowledge and specific preferences Testing and validation of the inserted knowledge Integration and maintenance of the system Revision and evaluation of the system.

既有 GSM 系統增加 GPRS 功能所需的修改:

既有 GSM 系統增加 GPRS 功能所需的修改: 1.Core Network adds SGSN, GGSN 2.BS adds PCU 3.Upgrade software SGSN -- software GPRS support node GGSN -- gateway GPRS support node PCU -- packet control unit

vim 很有用卻又不好記的功能

*比較兩個檔 :o f1 :vert diffsplit f2 就會對 f1 及 f2 作 diff *自定檔案型態 遇到某些檔以特定 syntax 開啟的設定存在 /vim/vim70/filetype.vim *在 ex script 取出目前正在編輯的檔案檔名的方法 (current filename) filename 通常就是目前 buffer 的 name。 "%" 表示目前的 buffer ,利用 :bufname("%") 便能取出目前正在編輯的檔名。 "#" 表上個編輯的 buffer *執行目前的 buffer 中的 ruby script :map :w :rubyfile %
這一生花很多時間在羨慕別人有我所沒有的東西,害怕別人不好的狀態會落在我身上。 但是你知道生命就是如此,我知道我最重視的是平靜,心靈上的平靜安穩比任何東西價值更高,不是嗎? 阿們
待辦事項的作法 high 一週內辦完 med 幾週內 low 二個月內 待辦事項不寫超過七個
要讀完的好書 "The anatomy of programming languages" by ALICE E. FISCHER, FRNCES S. GRODZINSKY 把程語的結構描述的真的仔細
外界事物 -> 程式語言物件 ->電腦物理及記憶體表示 抽象化的三個層次 --KR 與 Process and Entity 知識庫 -> 推理機 <- 外部事物 -> 計算結果

論認知經濟性(Cognitive Economy)

目前的關連式資料庫是以資料來描述概念,也就是列舉概念的全部形式,而非以少數公理及邏輯法則來描述概念,所以當要用極少數的字符去描述許多個案,會出現困難,語意網提供一個更好的表達系統,在描述某些概念(如 law )可以用較少的字符去描述,但在解譯上則需要較多的運算。由上,當特例較多時,若想要資料傳輸(溝通、交換)量,則用後者去描述資料,而讓主機用較多的運算。 目前的關連式資料庫是以資料來描述概念,也就是 列舉概念的全部形式,而非以少數公理及邏輯法則來描述概念,所以當要用極少數的字符去描述許多個案,會出現困難,語意網提供一個更好的表達系統,在描述某 些概念(如 law )可以用較少的字符去描述,但在解譯上則需要較多的運算。 由上,當特例較多時,若想要資料傳輸(溝通、交換)量,則用後者去描述資料,而讓主機用較多的運算。 以用藥資訊系統為例 資料持久化(可存到硬碟)有兩種,一種為文件,一種為資料庫 ps.從我的 Xuite blog 轉來的

Rake: the way to configure specially task options.

The ANT experience make me naturally think that rake should suppot the following syntax to configure the options of an specially predifined task. task :javac do |opt| opt.classpath = 'build/classes' opt.target='1.4' end Isn't it?

代數結構:環

為了研究 CRC 錯誤偵測法,我猜想代數結構環,應可用來解釋其成因: 環公理 環是一序對 r= ,其中 R 是一組元素的集合,+ 及 * 是作用在 R 上的二元運算,且滿足以下的條件: 為交換群,令 0 表單元,並滿足以下公理: (a+b)+c=a+(b+c) 0+a=a+0=a a+b=b+a 對所有的 a 屬於 R,存在一元素 -a 屬於 R,使得 a+(-a)=0 為單子(monoid),令 1 表單元,並滿足以下公理: (a*b)*c=a*(b*c) 1*a=a*1=a 序對 <{R-{0}}, *>,記作 R* * 可分配於各個 + 上 a*(b+c)=(a*b)+(a*c) (a+b)*c=(a*c)+(b*c) 交換環 環的 * 不一定要滿足交換律,若所有元素滿足 a*b=b*a,R稱為交換環 單位 a 不一定要有 * 的反元,若 a 有 * 的反元 a' 稱 a 為單位,滿足 a*a'=1 R 所有 單位 形成一個在 * 上的群,此群記作 U(R)=

系統開發的格言

什麼都不用說,先把使用者介面作出來再說

ANT 的 depnedent 工具

ANT 對 file operation 有一項很不錯的功能, 若 file 的 directory 不存在, 就自動建立,若 file uptodate? 則不動作。 copy

字串處理的程式片段集合

以下是一堆字串處理的程式片段集合 #日期相關的 *2008/01/01 -> 20080101 Java: String.replaceAll("/", "');

Ruby Rake: Task[:javac]

I write a :javac task for rake. PLEASE try it. The file structure is like ANT, the complied classe will be stored under build/classes. USAGE : 1.copy the following source into java.rb 2.put "require 'path/to/java.rb'" into your rakefile.rb 3.type "rake javac" then this will complie all java file under the rake base dir, and copy all classes into 'build/classes' SOURCE :java.rb #!/usr/bin/env ruby # The 'rake/java.rb' file defines the [:javac] task and its helper # file. # # [:javac] complie all .java file in the working directory into # CLASSDIR(defaults is "build/classes") # # version 0.1 # fhope@2006/9/3 03:01:35pm require 'rake' require 'rake/clean.rb' def java_package_of(javafile) file=File.new(javafile) file.each do |line| return line.sub(/package /,'').sub(/;/,'').sub(/\s/,'') if line =~ /^package/ end return '' # empty string mean no package end def java_p

T:描述結構性資料

抽象化的第一件事,是能用簡單的名字描述一串結構, 較佳的結構至少是類 xml 的階層結構。 階層結構由 "{}"來區分, 而 sequence 結構由 "," 及出現的前後區分。 一個 order 有很多 entry 可這樣描述 order ={ light={amt=2}, bulb={amt=2} } 取出 order 第一個物件就是 order.light.amt==2 用"." 點來區分物件。

T:一個新語言的設計

看完 B. A. Tata 的"超越 Java" 後,有種想設計新語言的念頭。 這個語言的中心哲學是, "簡單直覺的描述一件事" 語言暫且稱為 T 意思為譯者, 能讓我們用簡單的命令告訴它,讓電腦作事情。 當然這是交談式的, 我告訴 T 一件事, T 會給我回應,溝通圖如下: I <-> T T 給我的回應是在下一行, 我給 T 的稱作"指令", T 的回應是用字串報告的結果, 並列印於螢幕上。 首先這個語言的 hello world 是如此 I: print("hello world!"); T:hello world!

SVN 基本用法

SVN 與 CVS 異同 功能 SVN CVS 版本編號 每次 commit 專案編號加一,版編=專案被 commit 的次數 每個檔案一個編號,編號=這個檔案的commit 數 異動功能 add delete copy move add delete 指定儲存庫 標準 URL 語法,語法較自然 類 URL SVN 的版本編號 SVN 一次都是給整個專案都同一個 revision number, 而 CVS 是一個檔案一個 revision number。 這樣的好處是可以很簡單的找出穩定的版本。 因為穩定和整個專案有關,而非個別的檔案。 所以一個穩定的專案版在 SVN 可用一個 revision number 表示, 而在 CVS 需指定每個檔案的 revision number 比較麻煩。 安裝SVN 1.先下載 bin 檔案 2.解壓安裝 3.設定環境變數 lang=en_us 以去除中文亂碼 常用指令 以下指令以主機[192.168.0.188]及專案[RPMS]為範例: 察看目前儲存庫的目錄 svn list svn://192.168.0.188/ 取得最新的工作烤貝 svn co svn://192.168.0.188/RPMS 更新工作烤貝 #進入工作目錄 cd RPMS #更新 svn up 加檔入確認排程 #進入工作目錄 cd RPMS svn add FILE 刪檔入確認排程 #進入工作目錄 cd RPMS svn delete FILE 建立子目錄加入排程 #進入工作目錄 cd RPMS svn mkdir DIR 確認上傳 #進入工作目錄 cd RPMS svn ci 連接密碼控管的文件庫 若要連上有加上密碼控管的文件庫則在命令前加上使用者及密碼資訊如下: svn co --username ggyy --password ggyy svn://gyboy.blogspot.org/fhope

ANT 簡介

ANT 的角色是作為一個 跨平台 的批次檔或 shell script。 shell script 是幫助自動化發展應用程式的非核心工作, 像是檔案管理、源碼管理、程式庫 dependency 分析、 程式師合作的溝通。 讓程式師專注於解決他的問題, 基本上除了寫程式的事外,ANT 都能幫你作好, 她能為妳處理下面這些事。 檔案管理- copy, move, mkdir, rename等 ANT 能從不同來源取得檔案的方法,像是 ftp, cvs, svn, http get 等 也能用 ftp 來幫妳佈署檔案到遠端主機 壓縮檔案 支援 zip, unzip, jar, war, 幫妳生成包裝檔案 利用 JDBC 設定資料庫 利用 Telnet 幫妳設定遠端的 Server,ex.重開 weblogic 支援 CVS, SVN 幫妳作版本控管 利用 JUnit 自動幫妳作測試,並產生測試報告 XSLT 幫妳轉換 XML 的文件 XDOCLET 幫妳自動生成程式碼 把 JSP 轉成 JAVA 可指定 tomcat 或 weblogic 幫妳從檔案取代字串,通常用在 html sign 上最後修改日期的自動化 重點是上面這些工作妳可以全部在一個檔案定義, 然後用 ANT 去呼叫特定的工作, 把寫程式以外卻又必要的雜事集中控管, 又可以輕易的呼叫出來 功能強大,又跨平台, 不用 Linux 寫 sh,Windows 又要寫 bat。 所有的語法已被 XML 統一了, 所以 ftp telnet bat sh perl xslt copy find svn cvs 等奇怪的語法, 全部都可用 xml 表示,像是指定一組檔案, 在所有的命令都是用 來表示, 不用再去參考某命令的文件,再去找他指定一組檔案的語法 例:把 JSP 上傳測試機 傳統上我們得用 ftp GUI client 貼上去,但每次改一段要測試就得重覆這個動作,在程式間跳來跳去,相當不方便。 聰明一點的,會把利用 ftp 的 command 指令寫成巨集執行這個重覆的動作 ftp 命令檔如下: #deploy.ftp root rootpassword cd /deploy/webapp put /local/file1.jsp put /local/file2.jsp cd /deploy/

vim 的 textobject

text object 用來描述某文字區塊,可接在如 y, d 等命令之後。 aw - 包含 cursor 的一段字,有含字的空白 iw - 包含 cursor 的一段字,不含字的空白 at - 包含 cursor 下的 tag 區塊,含 tag 本身。 it - 包含 cursor 下的區塊,不含 tag 本身。 aB - 包含 cursor 下的程式區塊,含區塊分隔符號本身。 iB - 包含 cursor 下的程式區塊,含區塊分隔符號本身。 vim 在程式的移動

時間管理的十大步驟

親愛的讀者: 辦公桌上堆積如山的文件,好像永遠不會都減少;接踵而至的訪客,及尋求問題解決的部屬,一個個「闖」進你的辦公室;不斷響起的電話,一直打斷你手邊的工作;接二連三的會議,讓你疲於奔命,恨不得自己三頭六臂,可以同時應付這麼多的事情。 工作上如此,生活亦是。許多想讀的書買了卻沒時間讀;心儀已久的音樂家終於來台演出,卻抽不出空去看表演;答應家人一起出國去玩,行事曆上卻排得滿滿的‥‥‥,這些挫折都讓生活不再新鮮有趣。 你是不是感歎時間不夠用?事情做不完的壓力揮之不去了每個人一天都只有二十四小時,大部份的人是「忙,但不知道在忙什麼」,或是「忙,但不是忙自己想做的事」,但為什麼還是有人能事業有,還有時間兼顧生活及其他活動?因為他們懂得做時間管理。 管理時間有兩個必要的條件:計劃你的時間,以及避兔浪費時間。不妨問問自己以下三個問題:有沒有做一些根本不需要做的事?有哪些工作可以分配給其他人去做?必須做的事,是不是可以做得更有效率? 真正能幹的中階主管,能好好安排自己的工作時間表,逐項徹底執行,一旦工作順利進行,自然不會手忙腳亂,再加上工作效率高,工作成效自然也比他人多出數倍。做你計劃做的事,在你計劃的時間做,並在你計劃的時限內做完,成功就離你不遠了。祝你成功! 1. 事先規劃好你的時間與步驟,以收事半功倍之效 要與時間拔河,首先記錄自己的時間分配方式,分析哪些習慣浪費時間;按著訂定目標並擬定計劃,以較實際的觀點安排時程;最後找出浪費時間的原因與因應方法,改變這些壞習慣。 .每天空出一段時間來規劃事情。 .拿一個小時來訂計劃,可以有二到三倍的效果出現。 .你可以在上班之前比較安靜的環境(家裡或辦公室 ) 訂計劃,或是當作上班的第一件事,或是在下班前訂第二天的計劃。 .將時間加以分段,最好是以十五分鐘為一段。並要求自己把原本要花比較多時間的工作,在一段段時間裡加速完成。 .學習絕對專心,同時做兩三件事,像電視機選台器一樣。 2 .分析工作的優先順序,按照輕重緩急作處置。 要掌控時間,就必須先能掌控自設定個人目標,以便根據目標,分析工作的優先順序,按照輕重緩急做處置經常評估所設定的優先順序。採用 80/20 原則來設定優先順序。完成 20% 的目標可能獲得 80% 的效果,如果你每天的行事曆上有十

開發程式活動及工具

圖片
開發程式的活動 開發程式包含了下面幾個活動: 撰寫說明文件,設計文件,需求文件,專案文件 編輯程式碼文件 文件版本控管 程式測試 程式除錯 程式建立 程式佈署 臭蟲需求追縱記錄 一篇介紹程式發展工具的好文 用Open Source工具開發軟體: 新軟體開發觀念 我用的程式發展輔助工具 ---------------- 文字編輯器:vim 程式語言:Java 編譯器:javac 除錯器:jdb, 尚未有深入研究,見: java debug, O'Reilly sleepless 專欄 程式碼結構 index 產生器: jtags ,對 java 結構產生一 tags 的 index 檔,使編輯器可很快走到 java 的某項結構 ctags,支援多個語言 程式建立輔助工具:ant, maven 好像也不錯 安裝程式產生器:目前還用 ant 模擬 log 系統: log4j + chainsaw ,links: log4j 簡明手冊 版控系統:SVN 和 CVS 都有用,目前希望專注在 SVN 上 目前想要的功能: bug tracker:無,想要找一套,或自已寫 測試軟體:JUnit, htmlUnit,dbunit vim 能有 code completion vim 有更好的 xml 編輯功能 CASE Tools UML 塑模器:ArgoUML 似乎進步了,不過比不上 Rose UML 吧 StartUML 也不錯 RDBMS Exploerer: Squirrel 上面覺得不好用是因為沒跟 vim 整合在一起吧!

值得注意的未來技術:WiMAX

WiMAX的真實面貌 George Ou‧郭文興譯  2005/08/01 WiMAX(全球微波存取互通介面)是IEEE 802.16乙太網路的介面標準,就像Wi-Fi是802.11乙太網路的標準一樣。這兩年來,WiMax已經成為無線網路界最流行的專用字彙。同時它也可能是近年來最被誇大誤解的技術之一。 對WiMAX常見的誤解有: WiMAX的傳輸範圍一定比Wi-Fi大 WiMAX的速度比Wi-Fi快 WiMAX會跟Wi-Fi競爭,進而取代Wi-Fi WiMAX比Wi-Fi更安全。 WiMAX的傳輸範圍一定比Wi-Fi大 WiMAX的設計可以在需要執照的無線頻段,或是公用的無線頻段運作。只要系統業者擁有該無線頻段的執照,而讓WiMAX在授權頻段運作時,WiMAX便 可以用更多頻寬、更多時段與更強的功率進行傳送。一般來說,只有無線ISP業者才會使用授權頻寬的WiMAX技術。至於Wi-Fi的設計則只在公用頻段中 的2.4GHz到5GHZ之間工作。美國的聯邦通訊委員會(FCC )規定Wi-Fi一般的傳輸功率要在1毫瓦到100毫瓦之間。一般的WiMAX的傳輸功率大約100千瓦,所以Wi-Fi的功率大約是WiMAX的一百萬 分之一。使用WiFi基地台一百萬倍傳輸功率的WiMAX基地台,會有較大的傳輸距離,自然毫無疑問。 雖然有授權頻段的WiMAX顯然有較長的傳輸範圍,也不代表只要有錢就要趕著去買個WiMAX基地台。你必須要有一個授權的無線電頻段,就像一個音樂電台 也必須要有頻段執照,才能在空中發射無線電波。而如果WiMAX跟Wi-Fi一樣放在未授權的頻段,則它的傳輸優勢就馬上消失了。Wimax跟Wi-Fi 都是基於無線頻段傳輸的技術,所以受同樣的物理定律限制。反之,如果在同樣的條件下,讓Wi-Fi使用授權頻寬,Wi-Fi也可以跟WiMAX一樣快。另 外,雖然WiMAX可以利用較新的多路徑技術。目前新推出的pre-N MIMO(多天線雙向傳輸)技術Wi-Fi產品也使用了該技術。 WiMax的速度比Wi-Fi快 WiMAX的擁護者常常在大肆宣揚該技術的速度優勢。雖然WiMAX聲稱最高速度每秒70mbyte,然而最新的Wi-Fi MIMO理論上也有每秒108mbyte的最高速度,而實際環境下也有45mbps的速

Assertion

裡面缺乏一篇介紹, assertion 的開啟及關閉是由 java -ea 來設定的,也就是可在虛擬機啟動時才指定。 JavaWorld@TW - Assertion 介紹與使用

ANT 的檔案管理

ANT 能從不同來源取得檔案的方法, 像是 ftp, unzip, copy, cvs 等, 其中一個重點是當目的檔案比來源檔案舊時, 應該不可覆蓋來源檔案,相關的屬性如下: [v1|v2] 第一個表預設值 ftp.depends=[no|yes] yes 表不覆蓋 ftp.newer=[no|yes] yes 表不覆蓋 unzip.overwrite=[true|false] false 表不覆蓋 copy.overwrite=[false|true]false 表不覆蓋 ANT 的角色

ANT 的角色

ANT 的角色是作為一個跨平台的 shell script。 shell script 是幫助自動化發展應用程式的非核心工作, 像是檔案管理、源碼管理、程式庫 dependency 分析、 程式師合作的溝通。 讓程式師專注於解決他的問題。 Ant vs Maven

vim 在程式的移動

vim 提供一些能方便在程式區塊移動的命令, 這些命令以 [ 開頭的表示到區塊起點, 以 ] 開頭的表示移到區塊終點。 % 對應的括號 [[ 外部區塊起點 ][ 外部區塊終點 [{ 內部區塊起點 ]} 內部區塊終點 [( 括號起點 ]) 括號終點 [/ 註解區塊起點 ]/ 註解區塊終點 [I 列出游標識別字在檔案的所有位置 [ or [ 移至上一個識別字 [i 僅列出全部檔案第一個比對到的識別字,通常可用來找到識別字的定義 ]I 列出所有游標行數後的識別字位置 ]i 列出游標後第一個比對到的識別字 [D 找出全域的 #define gD 移到識別字全域的定義 -- 一定要常用 gd 移到識別字本地的定義 -- 一定要常用 為何不學 vim script

研究方法課的一些重點

研究背景和研究動機最好放為一節,不要和研究目標放為一節 -- 已修正 研究方法要闡述為何使用此研究方法的目的 -- 已新增 使用個案研究方法主要是前面無相關研究 -- 已新增 結論要解釋前面的研究目標是否達成,及本研究的貢獻 -- 任何一段陳述都要有證據 -- 努力達成 研究要有 focus -- 已有 focus 表的標題在上、圖的標題在下 -- 暸解比較多的 DocBook,已經會操作了 中文論文內不要有英文 -- 暸解比較多的 DocBook,已經會操作了 撰寫科技研究論文之要領

正式環境、測試環境、開發環境

正式環境為 AP 正式上線的環境。 測試環境為與正式環境整體相當,作上線前測試的環境。 開發環境為開發人員寫作程式的環境。

Ant vs Maven

Ant 有三個階層 project target task 但彼此互不關聯 Maven 在 project 層則隱涵一些預訂的 target 項目管理: Maven 讓事情變得簡單

RDBMS 的 View 代表推論資料

前陣子在讀 prolog 的書時, 發現 view 的新解, RDBMS 的 View 代表推論資料 下述的 prolog 碼 //這句說 X 是 Y 的爸爸,或 X 是 Y 的媽媽, //則可推論出 X 是 Y 的父母親 parent(X, Y) -: father(X,Y) or mother(X,Y) ?parent(X, fhopecc) //這類似 select 會找出 fhopecc 的父母 把它可轉成下面的關聯模型, 每個關係是一個關聯 father 是一個 table mother 也是一個 table parent 就是 view,簡單而言 view 可視為前二個 table 的推論 create view parent as select * from father union select * from mother; SQL 的 view 指令 SQL 的 alter 指令

推理、路徑、距陣乘法

若以節點表示公式, 而有向邊表示起始點的公式 A 可依法則推論出進入點的公式 B, 則圖的路徑可達性就是公式 A 是否可推理出公式 B。 一個圖的路徑可達性,可由相鄰距陣乘法計算而出, 則距陣的無限,一個公式能否由另一公式推論,便能使用距陣 圖是有限集合,表示能以圖表示的所有公式是可以列舉出來的, 想做的相關研究

docbook 顯示行號的方法

docbook 顯示行號的方法 http://www.sagehill.net/docbookxsl/InstallingAProcessor.html#InstallXalan

vim:functions

呼叫函數 :call function 定義函數 :function {name}({varlist}) : {body} :endfunction ex. :function min(n1, n2) : if a:n1 < res="a:n2" res="a:n1">

vim script 筆記

Vim Script 為一組 Ex 命令 組成 Ex 命令 為 vim 的 normal mode 中,打 ":" 起始的命令 :while 命令 - 迴圈 語法: :while {condition} {statement} :endwhile 資料型態 vim 僅有二種資料型態,數字及字串。 三種數字實字型態 十六進位實字 語法: {hexadecimal literial}=0x[1..9abcdef][0..9abcdef]* 八進位實字 語法: {octal literial}=0[1..7][0..7]* 十進位實字 語法: {decimal literial}=[1..9][0..9]* 注意:前面不可前置 0 這個數字,否則會視為 8 進位 數學運算式 {add}={variable}+{variable} {minus}={variable}-{variable} {multiply}={variable}*{variable} {divide}={variable}/{variable} {modula}={variable}%{variable} 例子: :echo 1*3 3 字串實字 {double-quote-string-literal}="[a..zA..Z0..9]*" 字串相連 {string-concatenate}={string}.{string} ex. :echo "foo"."bar" foobar 變數 :let 命令 - 設值給變數,都是全域變數的 語法: :let {variable}={expression} 例子: :let i=1 :echo "i is" i vim 會印出 i is 1 :let vim 會印出所有的全域變數 變數種類 s:var - 草稿檔變數 {script-local-variable}=s:{variablename} 僅作用於目前的草稿檔, 若用 source 匯入的草稿變數, 雖同名,但有不同的值 {buffer-local-var}=b:{varname} {window-local-var}=w:{varname} {global-var}=g:{varname} {vim

為何不學 vim script

圖片
想寫一本資料結構的書,書的格式是用 docbook。 在寫這本書時,總想要能夠有一支程式, 能自動幫我產生一些例子,且它的格式要符合 docbook。 像是輸入一陣列,它能自動幫我產生此陣列的反轉表(inversion table), 但是究竟要用何種程式語言寫, 是工作常用且嚴謹的 Java 嗎? 或是寫法多樣且好寫的 Javascript? 但我忘了,我打字的主要工具是 vim? 為何常我要有工具來輔助我打字時,我不學 vim 呢? 現在就開始, vim script 我要挑戰妳!

Issue Tracker

Roundup -- 簡單好用的 Issue Tracker ^^ 發展程式會用到的工具

解決 IE 無法顯示 blogger 的問題

剛剛發現把 blogger 的 [設定]-[格式]-[日期語言]-[中文台灣] 就可了 把 IE 的編碼改成 UTF-8 [檢視]-[編碼]-[Unicode(UTF-8)] 一片空白的UTF-8網頁 裡有更多解法

用藥法規更新系統:需求分析

圖片
1. 前言    IT 技術的長足進展,加速商業流程開始電子化,醫療業雖然起步較晚,但也抵檔不住潮流的趨勢。流程電子化,開啟了新契機,讓我們可以應用 IT 的技術來改善流程。而醫療業電子化的程度,從傳統式的會計、保險申報系統,轉變為現在支援醫師作決策、病人安全、護理計劃、電子病歷、遠距醫療等各式各樣的應用領域。值得注意的是,當 IT 已進入支援醫師作決策後,那麼醫院、政府也可以應用 IT 影嚮醫師作決策。自古以來醫療行為便對人類最重要的資產,生命有關,所以長久以來政府便積極以法令介入管理,以維護大眾的生命權。傳統法令的執行是藉由相關管理單位及專家,定期檢查醫療執行的記錄,病歷,是否違法,來約束醫師的醫事行為。電子化為政府及醫院行政開啟一個新的控管通道,藉由醫療應用程式來控管醫事行為。當醫院流程電子化程度越高,電子控管已比傳統的法規執行更為確實方便有效。   本文將提出一個架構,具以實現法規自動更新。並將實作全民健保藥品給付規定自動實踐至診間醫令系統。 2. 需求分析 2.1. 自動化更新給付規則的迫切性   自從全民健保實施後,醫療資源濫用一直是嚴重的問題,健保局為了控管醫療資源濫用,制定許多給付規則來約束醫療團體,例如:健保從民九四年十月一日起,不給付俗稱胃藥的指示用藥制酸劑 [ 魏05 ]。   這迫使醫院需在流程上管制醫師不能開立太多的非給付醫令, 否則會造成醫院很大的損失,進而院方必須能讓醫師開立醫令當下,也能考量健保規則。 對醫師而言,其天職應專注於診療過程上,以治療病人為首要目標,而非著重衛生行政規則等會計行為。所以一個良好的診療系統必須在醫師開立醫令時,給予明確的規則資訊,以輔助醫師能專注其診療行為,但又能考慮到健保規則。因此作為醫師最主要的決策支援系統,臨床醫令系統必須能適時隨著健保給付規則更動,以輔助醫師在法規知識上的不足。但健保局會依循新藥發明、政策改變、新醫學研究等異動健保給付規則, 這使得臨床醫令程式的維護工作變得相當沈重,而同樣的法則,卻必須在每個醫院的系統實作,非常浪費人力。如何建立一個可隨時更新給付規則的規則庫,卻又不用常更動到應用程式, 是急迫需求的。 2.2. 給付規則異動流程   下圖描述了傳統健保局規則發佈時,醫院必要的更新流程。 圖 1. 傳統健保局申

兩中國學者 解開龐加萊猜想

兩中國學者 解開龐加萊猜想 廣東中山大學教授朱熹平和中國旅美數學家曹懷東,在六月號「亞洲數學期刊」發表專刊,登載「龐加萊猜想和幾何化猜想的完全證明」專文,演算推證百年來被稱為「七大世紀數學難題」之一的龐加萊猜想。 http://news.chinatimes.com/Chinatimes/newslist/newslist-content/0,3546,110505+112006060500059,00.html?source=rss 縱走在稜線之間: 想做的相關研究

程式測試工具

一篇不錯的中文 JUnit 簡介: JUnit 學習筆記 利用 Ant 和 JUnit 进行增量开发 ” 發展程式會用到的工具

APA style 筆記

美國 APA 協會居然要錢買他們出版的書, 才能看到標準。 只好到 wikipedia 讀自由版本的標準了。 連連連,找到一篇不錯的 Citation Styles Handbook: APA 中文寫法: 臺灣健康促進暨衛生教育學會投稿格式 APA 稱參考文獻為 reference list 而非 bibliography 請參閱: 研究方法課的一些重點

關聯模型的正規化理論

今天在南台圖書讀 C. J. Date 大部頭的資料庫理論第七版 摘要如下: 函數相依性 function dependent 若一關聯 R, a, b 是 R 的屬性, 若每個不同的 a 值,則會有一固定 b 值與它對映, 則稱 b 函數相依 於 a, a 稱為 決定集 ,b 稱為 相依集 , 記作 a->b。 多值相依性 multivalue dependent 若一關聯 R, a, b,c 是 R 的屬性, 若每個不同的 a 值,則會有一固定 b 值與它對映, 則稱 b 函數相依於 a, a 稱為決定集,b 稱為相依集, 記作 a->b。

馮紐曼模型與哈佛模型

目前的計算機具有兩種模型 馮鈕曼模型: 將指令與資料都存在同一個記憶體 哈佛模型: 將指令與資料存在不同地方 這與資料編碼有很大的相關, 我們可編指令碼到傳輸的訊息中, 讓收訊端利用計算能力解碼才能得知想要的資訊, 也可直接告訴收訊端想要的資訊。 也可看看下文 資料編碼的品質

Vim JDE

剛看到的據說有 code completion 的功能 值得研究。 可以看看我的另一篇 發展程式的工具

職場

職埸上每個人都只顧著自已眼前的事 不顧整體,如何讓員工顧及組織整體,是一門很大的學問。 我想在這樣的公司工作, 若無機會,我想創立這樣的公司。 目前目標: 盡速拿到學位, 作出研究, 使自已工作的價值更高

CVS 說明中 module 的意義

syntax: cvs -d repos cmd -d dir module 第二個 option -d 後的 dir 指 checkout 下來的檔案,把其原目錄更動為 dir。 在 cvs 說明中,module 指的是一個目錄,或是一個檔案,若是目錄,則會作用在目錄所有的檔案,若是指向一個檔案,則作用此一個檔案。 D:\mywork\helper_note>cvs -d :pserver:nckmcvs:nckmcvs@ftp-proxy.syscom.com.tw:/cvshome/nckm co -d station nckm_s/DefaultWebApp/hospitalization/station/CC009101fetch.jsp

遠距離愛情

說真的,分隔兩地對我而言是一種煎熬,擔心、害怕、寂寞。但是能如何呢?

民主與真理

免去測試的最佳方法,用最多人使用的輪子,其功能最能保證其所宣稱的。 一群人 的共同意見會比較貼近真理。 但 女人 呢? ----------- 知識也能用民主決定嗎? 維基百科 vs 大英百科 CNET 的關於上面的報導 維基百科創辦人:Wikipedia是一種社會運動

結婚肯定的婚紗公司的陽謀

終於忙完了, 在選照片的時候, 當我說不要的時候, 觀看的照片會突然如玻璃碎裂 一片一片的掉下來, 未婚妻見況在旁邊哭泣, 只好保留越來越多張照片, 人生只會做這一次的拍照。