2011-03-13

棒棒糖需求

今天下班前,與業主的一個專案負責的窗口有了一些爭執,
我先不提這個窗口是多麼讓人討厭,甚至於被同部門的人給排擠,
這些小八卦。。。

事情是這樣子的。
他在測試我寫的程式的時候,發生Exception。。。
(我先承認這個問題不應該發生,我應該要去避免掉這個錯誤)
只是我看著他的操作畫面,跟我預想的操作畫面不同,因為站在使用者角度來看,
並不會想要他那樣操作(這部分我也跟林大哥討論過,推測他的操作動線,
應該是想說要從另外一個角度去執行,因為程式會先去取得初始資料,若是初始的資料錯誤程式就發生Exception,
而那位窗口就是這樣才會出錯,但是使用者並不會像他那樣操作)
(補記:後來窗口幾乎都教大家跟他一樣的操作方式,變成了一個統一的操作方法XD)

哎呀~簡單來舉個例子好了:
今天有個任性的小孩(業主的窗口)哭著想要一個棒棒糖,
而他的爸爸(苦命的IT工程師)卻因為身上沒有半毛錢買不起棒棒糖,
於是他爸爸很委婉地告訴小孩:[爸爸沒帶錢,沒辦法買棒棒糖。]
不過,任性的小孩怎麼會聽進去爸爸的話,
他哪管你是否沒有半毛錢,也不想聽進你的解釋,
他唯一想的就是要吃棒棒糖!!!
所以他爸爸就得繞過千山萬水回到家,拿著錢去買孩子的棒棒糖。

簡單的故事說到這,應該有聽懂一點了吧?

有時候在與人溝通時,常常會遇到這樣的狀況,
有時真的是有理說不清,所以今天下班前我跟他有點意見不合,
反正他聽不進我說的,也一直執意要這樣做,那我沒意見,因為我也盡了告知義務
總之,他就不想溝通,我又何必多費唇舌!!
所以我花了一些時間,修改了我的程式,就為了滿足他的那個[棒棒糖]要求。

有時候棒棒糖的需求,其實真的是使用者需求,
修改或滿足使用者的需求是真的必要的,這點我不會去反駁也不會說不做,
只是有些時候,這些功能需求是沒有經由討論或是個人的自我感覺良好所做出的決定,
往往棒棒糖的需求,則是會變成讓他們牙齒蛀光光的兇手!!

PS.這篇已經寫完很久,竟然還存在我的電腦裡,寫完竟然沒有想要上傳 XD

2011-01-11

Oracle Text – (2)Getting Started with Oracle Text(Query Application)

這個章節是在解說很簡單的步驟,但是我卡在不知道如何建立CTXAPP Role,
後來老大找到這篇文章
Installing Oracle Text on Oracle 10gR2...

使用底下的catctx.sql(在oracle資料夾裡頭要找一下)
image
catctx.sql <password_for_CTXSYS> <tablespace_for_CTXSYS> <temp_tablespace_for_CTXSYS> <lock_or_nolock>

然後這篇文章中提到在建立context index 會產生一個錯誤,

ERROR atline 1:
ORA-29855: error occurred in the execution of ODCIINDEXCREATEroutine
ORA-20000: Oracle Text error:
DRG-10700: preference does notexist: CTXSYS.DEFAULT_LEXER
ORA-06512: at "CTXSYS.DRUE", line 126
ORA-06512:at "CTXSYS.TEXTINDEXMETHODS", line 54
ORA-06512: at line 1

10700,0, "preference does not exist: %(1)s"
// *Cause: the preference name specified does not exists
// *Action: retry with the correct preference name
// *Mnemonic: PF_PREF_NOTXIST
//
解決的方式是使用ctxsys這個user,去執行drdefxx.sql這個script,就可以。


-----這是分隔線,以上是建立CTXAPP Role的方式------------------------
因為範例中重要的是在建立Index上,所以我直接貼上範例所寫的SQL Statement
CREATE INDEX idx_docs ON docs(text) INDEXTYPE IS
CTXSYS.CONTEXT PARAMETERS('FILTER CTXSYS.NULL_FILTER SECTION GROUP CTXSYS.HTML_SECTION_GROUP');
所以查詢後的結果如下
SELECT SCORE(1),ID,TEXT FROM DOCS WHERE CONTAINS(TEXT,'France',1)>0;
image
補充: Contains clause
定義->
CONTAINS(
     [schema.]column,
      text_query    VARCHAR2
     [,label       NUMBER])RETURN NUMBER;
----這是分隔線,以上是查詢的結果----------------------------
若今天若新增幾筆資料,但是這些資料卻未建立Index則會發生找不到資料的問題,
也就是Index沒有同步,如下圖所示
image

所以這時候解決的方法可以使用CTX_DLL.SYNC_INDEX的方式
image

2011-01-10

Oracle Text –(1)Understanding Oracle Text Application Development

因為在工作上有些需要,所以現在正在K Oracle這本書,
有關於Full Text Search,邊看邊寫下這篇記錄,希望對往後認識Oracle有所幫助。

(1)Document Collection Applications
這部分是講說可以查詢類似像是HTML、PDF、Word的檔案,這些檔案是被放在
Document的Table中,在Searching的時候必須要先建立Index(CONTEXT Index)。
書中舉了一個WWW的例子,就是說使用URL當作Index然後查詢Web side資料內容。

(2)Catalog Information Applications
這部分是講說像是線上書店或是拍賣網站的目錄查詢,在這裡建立的Index類型為
CTXCAT index。
SQL語法是使用CATSEARCH Query

(3)Document Classification Applications
這部分看不大懂,好像是說由不同的檔案資料來源轉換成”Document Stream”,
再經由Document Classification Application利用SQL的MATCHES語法

其實這個章節主要是在解說一些概念,匆匆先帶過可以往後再回過頭來付息概念。

2011-01-04

XmlSerializer 隨手筆記

今天在撰寫程式的時候,希望有些設定能放進設定檔中,
預期希望是[能將某些設定資訊寫進到一個XML Document裡]。

原本是希望藉由XPath來查詢就好,但是這次想試用看看XmlSerializer的方式,
因為專案中會設計一個Class去承接這些資訊,若是使用物件方式也方便我程式上的使用
(先不管是否有設計缺點,因為功能只是記下很單純的設定)

先設定要被Serialize的物件資訊(相關XmlAttribute的使用方式,可能要自己查Online 的MSDN)
image

程式碼如下:
image
使用XmlSerializer來序列化物件,另外程式碼中有XmlSerializerNamespaces這個物件,
這是因為希望在XML檔案中不要有Namespace出現(使用方式是參考這篇
XmlSerializer : Encoding & Xml Namespaces(流星的隨筆記事)),

最後的結果如下圖所示:
image
先簡單記錄下來,因為沒甚麼時間撰寫。

參考資料:
1.XmlSerializer : Encoding & Xml Namespaces
2.用XmlSerializer串行化(序列化)ArrayList数组对象与反序列化