Google Search

自訂搜尋

2011年7月27日 星期三

[ERP] SAP World Tour 2011

有幸於7/26 參加 SAP World Tour ,也是SAP年度大拜拜. SAP 原廠顧問們和合作夥伴傾巢而出,全力於World Tour中將SAP的新功能以及客戶實際應用呈現給大家.

台北場在喜來登飯店舉行,人數是我參加過的SAP研討會最多的,代表SAP的客戶群這幾年有顯著的成長。哈,但是整個會議流程就有點小失控,吃午餐像是乞丐在排隊,會議結束領紀念品又像土匪在搶著領東西.

會議中幾個比較有收穫的議題如下:

1. 宏達電SAP導入經驗,由其COO演講,闡述宏達電導入 SAP的計畫. 老外的 Present 功力果然不錯,從宏達電的營運狀況到公司願景連結到對系統需求,最後導出導入SAP的計畫.

2. 製造業價值鍊,從 SCC(Supply Chain Collaboration) , SOP (Sales & Operation Plan), RMS (Response Management Simulation), SCPM (Supply Chain Response Management). 一堆縮寫代表一堆系統,也說明SAP對供應鍊這一塊系統的重視. 很多企業在ERP導入後,為了讓庫存降低,交期縮短,供應鍊系統的導入是勢在必行!

3. 廣達對雲端的投入:看來廣達不僅止於對雲端所需要的硬體&主機從事研發生產,也針對雲端軟體開發不遺餘力。廣達重視的是企業雲而非 Google & Facebook 著重的個人雲. 雲端所需要的軟體虛擬技術,看來廣達也含跨其中!感覺廣達這部份的架構很像是幾年前談的 ASP (Application Service Provider),只是以不同的包裝方式重起爐灶,端看在不同的時空背景下是否有成功的機會?

詳細議程
9:30-11:50
喜來登廳
RUN BETTER
9:30-9:40致歡迎辭-RUN BETTER
9:40-10:20客戶成功案例分享
Matthew Costello, 執行副總兼營運長, HTC
10:20-10:50SAP產品策略
Simon Dale, SAP亞太區
10:50-11:20客戶成功案例分享
韓家寅, 總經理, 大成長城企業股份有限公司
11:20-11:50客戶成功案例分享
陳炯福, 副董事長兼執行長, 華泰大飯店集團
11:50-13:00
餐敘與展覽

13:00-16:45


分堂議程


Collaborate Better
高科技製造業快速協同
Decide Better
消費品零售業精準決策
Operate Better
資訊技術突破營運
Adapt Better
專業服務優化應用
Track A
13:00-13:30SAP完美製造業價值鏈
黃漢傑, 解決方案經理, SAP 台灣
13:30-14:00實務的供應鏈快速回應方案
陳建宏, 資深解決方案經理, SAP台灣
14:00-14:30透視供應鏈 精準掌握企業未來毛利藍圖
鄒誠正, 台灣IBM全球企業諮詢服務事業群首席顧問
14:30-15:00茶敘與展覽
15:00-15:30整合流程的生產製造系統
林信宇, 解決方案經理, SAP 台灣
15:30-16:00客戶成功案例分享
方天戟, 副總經理, 廣達電腦股份有限公司
16:00-16:30供應鏈管理經驗分享
殷勝雄, 資深副總經理, 新加坡商德碩國際管理顧問股份有限公司台灣分公司
16:30-16:45幸運抽獎

2010年12月23日 星期四

[IT Architecture] Oracle D2K Study

最近在幫公司survey一些產品,發現有一家中意廠商的產品,他是用Oracle D2K開發。對我而言,D2K是比較陌生的工具,因此做了一些Study。另一方面也是擔心若選用D2K,會不會發生未來產品維護的問題。

網上有一篇文章,對D2K有簡單介紹,看來D2K的定位有點像VB,方便開發人員用它來快速開發
GUI介面,用的語言是PL/SQL。講D2K大家比較陌生,但是講到Oracle Form應該就比較有印象。

如果再回到oracle官網,看來在Oracle Fusion Middleware中,它整合了Oracle Form,讓Oracle 的開發人員可以用D2K也可以用JAVA開發,中間整合則用Fusion Middleware。

對Oracle而言,用Oracle Form的技術可以稱之為傳統技術(Traditional Technology),Oracle也將它整合至Oracle Application Server. 另一大塊就是Java,則是原本就在Oracle Application Server。還有一部分也是本BLOG曾提到的快速開發工具APEX。

下面是原文的內容,看來ORACLE還是會持續開發此技術,讓既有已使用此技術開發的產品可以繼續運作並和新的ORACLE JAVA技術作整合。

=======================================================================

Oracle Forms Services 11g

Oracle Forms, a component of Oracle Fusion Middleware, is Oracle's long-established technology to design and build enterprise applications quickly and efficiently. Oracle remains committed to the development of this technology, and to the ongoing release as a component of the Oracle platform. This continuing commitment to Forms technology enables you to leverage your existing investment by easily upgrading and integrating existing Oracle Forms applications to take advantage of web technologies and service oriented architectures (SOA).
=======================================================================

2010年12月16日 星期四

[Misc] Regular Expression

近來公司內對客戶提供的訂單有很多e化的需求,需要和公司內部ERP作整合。但問題是很多客戶IT能力很弱,並沒有能力作真正的B2B,也就是他們只能提供人可以看得懂的檔案(至少不是傳真,還有時檔案),這時要和內部系統整合就困難了,因為將EXCEL或PDF轉成文字格式沒問題,問題再如何解讀裡的內容呢?

如果內容有一定的規則,寫程式是可以解讀,問題是規則常常會改變,一天到晚改程式也不是辦法? 因此想先看看Regular Expression 有沒有機會幫上忙?

下面是從以下網頁得到的說明:
======================================
Regular Expression (簡稱 regexp 或 RE) 是什麼? 有人直譯為「常規表示式」。 它的功能是協助我們搜尋字串, 甚至對檔案內的特定字串做全面性的代換。 一般簡單的文字檔案編輯器 (例如 MS Windows 下的記事本) 並不支援 regular expression , 所以我們在搜尋或代換字串時, 這些編輯器往往無法抓住我們的意思, 不是太寬鬆 (例如想找 port, 卻連 important 也找出來) 就是太嚴格 (例如想找 color, 卻遺漏了 colour)。 雖然大部分編輯器提供忽略大小寫等選項, 但所能解決的問題還是相當有限, 像上述兩個簡單的例子都沒有辦法解決。 如果改用 regexp, 則甚至可以處理諸如 "一份 html 檔裡面所有的 hyperlinks" 這類的複雜搜尋條件。
具體地說, 我們在想要搜尋的字串當中夾雜一些特殊符號, 指示電腦以較嚴格或較寬鬆的條件去搜尋, 這樣的字串就叫做 regexp。 例如要找 modem 或 Modem, 我們可以用 [Mm]odem 這個 regexp 來表示。 這裡的方括弧就是 regexp 語法中的特殊符號之一, 代表裡面任何一個字元放在這一個位置都可以 (但總歸要是一個字元)。
========================================

看來重點再用一個指令就可以執行很複雜的文字搜尋和取代的工作。記得剛進資訊領域學過unix的awk,應該就是這類型的工具。另外像perl也是類似的工具。仔細去看不同的工具,就是搭配一些複雜的參數,幾乎所有想到處理字串的功能都可以兜出來。

但回到現在公司的系統現況,上面提的工具大概很難跟現有的開發工具整合(vb&asp&oracle)。Oracle倒是提供了一些工具,連結上的是Oracle提供的Function,基本尚以使用來講可以直接崁在SQL裡面。和現有程式作整合是比較有可能啦!

接下來就是要再花點時間研究研究,希望結果可以開發出一個讓使用者可以自行設定的工具,好去應付客戶端格式多變的訂單。


2009年11月30日 星期一

[PL/SQL] Global Temporary Tables - 用途 & 做法

近來碰到一些問題就是在報表開發過程中, 因應需求會撰寫很多SQL而這些SQL可能抓取來自不同的Oracle Database的資料. 但是可能報表要一樣的結果但是不同的人寫就會出現不同的結果, 問題是正確答案只有一個啊. 原因就在前端複雜的schema 設計&流程邏輯, 常常因為開發人員的認知不同而出現落差.

這時如何在架構上讓資料抓取(Data Extraction)和報表呈現(Report Presentation)做有效的區隔就很重要(這邊注重的是資料庫端, 在應用端已有很多方案像Struts等). 就資料庫端而言, 有一個Oracle的技術 'Global Temporary Tables(GTT)' 就有探討的價值. 簡單的說, GTT可以將複雜的資料抓取邏輯隱藏並將結果用報表呈現人員習慣的Table 方式呈現. 另一個重點是該Table的資料只在特定Session中存在, 如果Session結束, 資料即消失, 但是 Table本身還是存在.

下面就來做個測試吧!
SQL> CREATE GLOBAL TEMPORARY TABLE worktable (x NUMBER(3));

Table created.
這時可以在行開啟另一個SQLPlus session, 可以看到方才另一個Session 建的GCC, 並且可以做DML, 如下.
SQL> INSERT INTO worktable (x) VALUES (1);

1 row created.

SQL> SELECT * FROM worktable;

X
----------
1

SQL> commit;

Commit complete.

SQL> SELECT * FROM worktable;

no rows selected

ㄟ!見鬼了, 怎麼一 Commit資料就不見了, 原因在見下面建GCC的參數. 建立GCC時,
用'On Commit Preserve Rows', Commit完後, 資料便不會消失.
SQL> CREATE GLOBAL TEMPORARY TABLE worktable
2  (x NUMBER(3))
3 ON COMMIT PRESERVE ROWS;

Table created.

SQL> INSERT INTO worktable (x) VALUES (1);

1 row created.

SQL> SELECT * FROM worktable;

X
----------
1

SQL> commit;

Commit complete.

SQL> SELECT * FROM worktable;

X
----------
1
這時如果從其他Sesseion看相同的GCC是看不到資料的, 如下.
SQL> SELECT * FROM worktable;

no rows selected
再試試 truncate 吧!

SQL> INSERT INTO worktable (x) VALUES (2)
1 row created.

SQL> commit;

Commit complete.

SQL> SELECT * FROM worktable;

X
----------
2

SQL> TRUNCATE TABLE worktable;

Table truncated.

SQL> SELECT * FROM worktable;

no rows selected

SQL> commit;

Commit complete.
下Truncate指令一樣只會把Session內的資料清除.

2009年8月28日 星期五

[IT Architecture] Oracle 11G VERSUS MS-SQL Server 2008

Oracle 和 MS-SQL 之間的比較已經是不少網友茶餘飯後的話題. 就在 Oracle 11G和 MS-SQL 2008陸續現身後, 一篇新的比較報告可供大家參考! 重點是此報告號稱使用 Oracle一年相較 MS-SQL可省下三萬三千多美元. 報告重點如下:

  • DBA執行常態的資料庫管理功能時, 平均花費時間上來比較, Oracle比 MS-SQL 少掉41%的時間.
  • 就執行步驟而言, Oracle比起MS-SQL少掉43%的步驟, 根據 Edison 的複雜度矩陣研究.
  • 就 DBA的生產力而言, 因為前兩點的貢獻, Oracle的DBA平均可多節省 $33,520.47/每年.
  • 就備份和還原而言, Oracle比起MS-SQL除了架構和功能上的優勢以外, 就操作面而言還少掉53%的時間/60%的步驟.
  • 就效能校調方面, Oracle也比MS-SQl省掉87%的時間.
當然看完這篇報告, 肯定氣死不少MS-SQL的死忠者. 但是公說公有理, 婆說婆有理, 有興趣的人可以從連結的網址找到完整的報告, 也許比較有客觀的評估.

2009年7月4日 星期六

[PL/SQL] 動手開發PL/SQL專案前的第一步

PL/SQL, 這個在 Oracle 世界中最適合做資料處裡的開發工具. 素以執行效率佳, 和 Oracle 整合度高, 開發簡單廣受開發人員喜愛. 但是開發簡單後面的涵義是: 程式開發的品質如何控制? 品質涵蓋的層面很廣, 符合使用者需求, 效能好和程式的可維護性! 這一期的Oracle雜誌,PL/SQL Guru - Steven Feuerstein 發表一篇文章談到,一個PL/SQL開發團隊從哪幾個點切入可以有效控制程式品質和達到使用者需求, 在第一時間就將後續的開發架構架構好!

1. Correct:符合使用者需求
這裡談到的是正確性,所謂正確性就是正確的達到使用者的需求,當然一大半是需求&系統分析的事情,這裡Oracle管不著. 但是使用者的需求瞭解後,開發人員如何確定程式有做到該做的事呢? 單元測試在當中扮演一個重要的角色,多數開發團隊會要求開發人員在程式開發完後提交單元測試報告,但是單元測試多由開發人員自行定劇本自行測試,涵蓋度和正確度如何無從得知?這時所謂的自動化測試(Automated regression test)就是一個重要的工具. 坊間常見的工具有 utPLSQL, PLUTO, PL/Unit, DBFit, Quest Code Tester. 這些工具的產品網址都在連接中,另外除了最後一個是要錢以外,其他看了都是Open Source的,大家有興趣可以試試! 哪天也要自己的team試試,再將結果PO出來!

2. Fast Enough:效能好
  • Optimizing Compiler
    可參考以下文件有詳細說明. 在10G 後就有這項功能, 主要目的在提升PL/SQL在 runtime的效能. 而做法則是在 compile時, 使用不同的優化(Optimization)手段. 它是透過以下參數去控制,"PLSQL_OPTIMIZE_LEVEL".
  • Bulk processing
    透過此工具, 將原始一筆一筆的處理方式轉換為多筆批次處理. 這篇文章對效能的提升有一些實驗和驗證(該文章號稱有三十倍快).
  • Pipelined table function
    允許不同的 PL/SQL 間的資料傳遞不必受限於僅只傳遞參數而可以傳遞 ResultSet並且不用額外建立Table. 尤其在 ETL程式裡, 資料不必透過實體Table處理而是直接透過 Pipelined table傳遞, 對效能有一定的助益. 可以參考這篇文章.
  • Function result cache
    可以參考這篇文章, 有完整的介紹. 簡短的說, function result cache的好處在, 當主程式呼叫另外的 PL/SQL function時, 這個 PL/SQL function可能含 SQL. 這會造成所謂的 Context Switch和 IO的增加. 因此 function result cache可以透過語法(Create function XXX (I1 varchar2) return varchar2 Result_Cache is) 設定將該 PL/SQL function的結果快取(Cached)起來, 加快處理速度.
  • Native compilation
    參考"Optimizing Compiler"的文章, 所謂 Native Compilation就是將PL/SQL編譯成 C語言, 直接和Oracle整合, 效能較佳.
3. Maintainable:程式的可維護性
  • Naming conventions & Syntax standards
    變數和程式名稱的命名規則應該都要有文件作規範.
  • Writing SQL in PL/SQL
    SQL的產生應該有一個獨立的Data Access Layer而不是任由開發人員在PL/SQL中 Hardcode. 透過這個Layer, 將SQL的複雜邏輯隱藏起來,以利後續的維護和開發.
  • Error Management
    統一的 Error Handling 機制和模組.
  • Application Tracing
    統一的tracing 機制和模組,可參考文章.
  • Version control and backups
    版本備份, 我的團隊是用 Daily 從 Metadata中備份PL/SQL至檔案中, 以利未來查詢之用.
上面談的規矩都是規矩, 開發人員是否遵守又是另外一件事情?這時候適時的 Code review是有必要的,確認開發人員有確實遵守規定.
在你組成PL/SQL開發團隊前, 可以將上述的建議當成 Check List來確認開發團隊是否可以正確開發出快速且維護性高的系統.

2009年6月22日 星期一

[Career] IT 的價值何在?

近來心情低落, 因為本人負責公司的ERP系統開發, 已經忙到不行,但是使用者卻始終對IT充滿抱怨. 不是抱怨Request排的時程太晚,緩不濟急就是對系統規則不瞭解,卻不斷抱怨是系統問題. 這時所有IT人員面對了一個同樣的問題, 就是IT的價值到底在哪裡?

事情的引發點是本公司的採購經理和資財經理對IT的需求常常是將IT視為魔術師. 怎謂魔術師呢? 舉例而言: 現有的請採購流程對採購人員而言負擔較重而採購經理在其副總的人員精簡要求之下, 提出了流程改善的需求. 但是問題來啦: 採購流程不是只和採購人員相關, 此流程和倉管 , 財務, IQA 無不關係甚鉅. 因此要決定新的流程之前, 一定要和舊流程比較去瞭解之間差異以及對相關部門的影響. 但是採購經理眼高手低, 只看大方向不管細節, 他指定出來談系統流程的人員也是鴉鴉烏,對流程一知半解. 流程無法合理化怎麼談系統化呢? 眼看副總壓力不減, 就拿著副總令箭要求IT限期將他談出來2266的新流程在我們家已經殘破不堪的SAP中做改善! 這時大概只有魔術師才能實現採購經理的夢想.

另外一個問題就是很多IT的系統開發完成後, 通常落得無人使用的下場. 為何? 因為很多公司內部Top-Down的專案都有很高的理想性, 但因為Top-Down, 不得不做. 接手專案的人也不願多花時間去思考公司高層的真正目的去勾勒出叫可行的方案. 而硬要IT根據不合理的流程去開發系統來應付高層指示. 所以本公司光的 Issue Tracking 的系統就有好幾套, 每套壽命都不長.

唉! 這真是IT的宿命嗎? 上週遇上一名來自西門子的工程師, 席間談及IT的權責問題. 他說在西門子的IT對他們使用者的服務的模式, 舉例而言, 如下:
- 網路頻寬可選擇, 2M, 5M或10M 都可以, 但是要付費而且是新台幣.
- 要找IT談需求可以, 談一小時, 多少錢. 兩小時多少錢, 一率照算.

這有甚麼好處? 舉例而言:
- 常常公司高層會要求IT提供資料去看有沒有公司員工在上班時間濫用公司網路上一些色情網站.但是今天試想如果頻寬是使用者付費, 第一個部門經理一定會視需求去決定頻寬, 因為要求過多的頻寬只會墊高部門成本. 在適當的頻寬之下, 只要有員工上網浪費頻寬就會造成其他正常使用網路員工的不便. 這時部門經理會主動管理這件事情, IT有沒有工具相對就不是那麼重要.

- 使用者會更加主動的瞭解自身的作業流程以及此流程和其他部門的影響. 因為若不瞭解, 不斷的對IT提出新的需求, 一樣造成部門成本的問題. 當使用者可以將需求品質提升, IT也可以將精力留給更多需要IT幫忙的部門, 整個公司也才可以透過系統的力量更快速成長而不是每天將精力耗費在不完整的需求上面不斷的修改系統.

但是要做到這個程度其實有相當程度的困難, 就是如何精準的量化IT的服務. 另外就是為了將IT服務費用化, 所產生的管理成本是否是公司所願意承擔? 種種問題都待深為IT的你我多思考!

以下的IT服務費用化的一些文章, 供大家參考!

http://www.cioupdate.com/budgets/article.php/3483756/IT-Cannot-be-a-Profit-Center.htm

http://www.zdnet.com.tw/enterprise/technology/0,2000085680,20103371,00.htm

http://www.ithome.com.tw/itadm/article.php?c=50165

http://www.risnews.com/ME2/dirmod.asp?sid=598EAD7FB93F43D6B43B76311F2C2119&nm=&type=Blog&mod=View+Topic&mid=67D6564029914AD3B204AD35D8F5F780&tier=7&id=13CB00EEE1AE452585A8A1D6BAFAE64E