<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4047380358878843505</id><updated>2024-09-02T05:28:40.440+08:00</updated><category term="Genero技轉沒教的事"/><category term="TIPTOP案例探討"/><category term="Genero 2.50 新增功能"/><category term="Genero黑白談"/><category term="Linux安裝與設定"/><category term="說好的Genero Report呢?"/><title type='text'>鴻傑塗鴉部落格</title><subtitle type='html'>PMP 專案管理心得、Genero BDL 與 TIPTOP / T100 的技術交流 (原名：柚子的爸 Blog) </subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://hjwang65.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047380358878843505/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://hjwang65.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/4047380358878843505/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Alex Wang</name><uri>http://www.blogger.com/profile/04291476421106219435</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlkO013G-p0pn-2-cpGO63dYyqwIirgYFNwmb4e2-tpADh9Qaj9R-3sXZHceObAVeWJvT3FBSXaaoJ80V-NLqI2eWRTZ9sV7fDKgJXWrx39A3WG3TWH7Nre2EWkV4LErU/s220/DSC_9649.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>32</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4047380358878843505.post-7328626642025919329</id><published>2020-12-26T07:45:00.000+08:00</published><updated>2020-12-26T07:45:08.330+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Genero技轉沒教的事"/><title type='text'>(文字稿) 談談『做了被罵，不做也被罵』- 把利害關係人的心，都拉到你身邊</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;[ &lt;a href=&quot;https://podcasts.google.com/feed/aHR0cHM6Ly9vcGVuLmZpcnN0b3J5Lm1lL3Jzcy91c2VyL2NrZmt1dXZra2EweXgwODM2bnpkMjN1MGs=&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #fcff01;&quot;&gt;也可以用聽的 (podcast)&lt;/span&gt;&lt;/a&gt; ]&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjURlQGV4pS_az1e6RebnYMKSpgkDQWAT_Mkt4kq71uXE-WPELT396-8vtI-NUSKpcS5BoK7Cxx_zPRxMIQo4vnv2_5REdHWpPvTeQFI86oAPB0pKlfZYfzf0HivqyGHPOcofn0ZSYL1wIO/s502/EP02-title.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;502&quot; data-original-width=&quot;502&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjURlQGV4pS_az1e6RebnYMKSpgkDQWAT_Mkt4kq71uXE-WPELT396-8vtI-NUSKpcS5BoK7Cxx_zPRxMIQo4vnv2_5REdHWpPvTeQFI86oAPB0pKlfZYfzf0HivqyGHPOcofn0ZSYL1wIO/s320/EP02-title.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;R 同學上周拋了個問題：柚子爸，我想對產品做個改善優化，可以得到什麼什麼效益...&lt;/p&gt;&lt;p&gt;沒等到說完，我就丟出了一串問題：來自於客戶嗎？主管知道嗎？認同嗎？改善效益和原先預定目標一至嗎？KPI能涵括嗎？...&lt;/p&gt;&lt;p&gt;看著一臉矇的情況，又聽到了嘟囊著說：我又不是沒在做事....&lt;/p&gt;&lt;p&gt;----------------------------------------------------------------------------------------------------------------&lt;/p&gt;&lt;p&gt;對的，這就是工作生活的微縮影。你的老闆真的會不挺嗎？還是沒有走在好的聊天基礎上？&lt;/p&gt;&lt;p&gt;到底該怎麼說，才能讓整件事沒人受委屈呢？你，又該用什麼方式讓老闆支持呢？&lt;/p&gt;&lt;p&gt;-----------------------------------------------------------------------------------------------------------------&lt;/p&gt;&lt;p&gt;Hello 線上的軟工夥伴好，&amp;nbsp;&lt;/p&gt;&lt;p&gt;其實，並不是說客戶建議的不對，或R同學判斷功能要納入產品不對。整件事在技術面都是沒問題的。問題在於：&lt;/p&gt;&lt;p&gt;沒有事先進行組織內完善的溝通，讓相關的關係人清楚你的意圖，就不會往期望的方向發展。再簡化說，就是『程序不正義』&lt;/p&gt;&lt;p&gt;我們在重新審視一下情境：&lt;br /&gt;客戶提了優化的建議到 R同學身上，R同學經過快速分析後發現加入是更好的，回報了客戶也提給了我，唯獨缺少了他的領導。&lt;br /&gt;或許，歲末年終之際，領導已經，或是正想要請 R 同學支援火燒眉毛的專案呢？&lt;/p&gt;&lt;p&gt;我們當然清楚的理解，當案子已經走到『既重要又緊急』的時候，想必主管恨不得期待你如同 7-11 或土地公般的隨伺在側，24小時服務吧。此時你告訴他說：我想做另一個案子... 他應該會毫不猶豫的製造一條社會新聞出來吧？&lt;/p&gt;&lt;p&gt;肯定不能這樣。那該怎麼做？&lt;/p&gt;&lt;p&gt;首先，應該取出日常工作任務清單，確認一下是不是有 on-going 的任務再走，探詢一下同組內其他同學有沒有十萬火急的事情正在燒？&lt;/p&gt;&lt;p&gt;诶~~&amp;nbsp; 為啥要看其他人？您覺得同組其他人能忍耐大家在救火，而你在對岸割草忙別的事嗎？肯定不~~~&lt;/p&gt;&lt;p&gt;這坎能過，那建議接下來要把『需求方』的想像搞清楚，依照我們上一集介紹的手法，把任務換算成老闆能理解的『需耗用的開發時數』。&lt;/p&gt;&lt;p&gt;帶著客戶的建議，和你的努力，跟盤點清理過的時間表，解釋一下內容。我相信接下來，絕對很快會聚焦回到『功能的討論』。&lt;/p&gt;&lt;p&gt;而老闆的心理應該開始有一點點認同你了&lt;/p&gt;&lt;p&gt;在『專案管理』上也有說過：看透關係人，產出管理真策略，負面被動轉支持，專案組力會變少。&lt;/p&gt;&lt;p&gt;任何大小事，我們都可以視為專案來管理，要依據這些環繞在周遭的人他們的利益、需求，以及若『專案成功時可能會有的影響』來進行&lt;/p&gt;&lt;p&gt;鋪陳和說明。你的客戶是關係人，你的老闆自然也是。哦，對了，別去談若失敗會怎樣，聽起來繪有威脅的感受，這樣的談法是有害的&lt;/p&gt;&lt;p&gt;怎麼樣能讓老闆持續增加對你做這件事的信心呢？答案是：持續報告。當然，決不會是大小是鉅細靡遺的說，更不是東家長西家短的說，&lt;/p&gt;&lt;p&gt;而是講會影響到對方的：例如你的已完成事項、預定本周或本期的進度、有沒有需要他幫忙的部分。以之前我的老闆提點我的話來說：&lt;/p&gt;&lt;p&gt;其實老闆們可能對你所說的技術或目標並不是很懂，可是透過有結構的表述，他可以從這裡面做想像，感受到有沒有可能存在問題，或是&lt;/p&gt;&lt;p&gt;需要事先提醒的點。如果我們說明的零零落落，那老闆們敢信任嗎？會願意授權嗎？肯定很難 !!&lt;/p&gt;&lt;p&gt;透過結構化的工作分解結構進行報告，甚至能把客戶有疑問的討論，分門別類地做成議題管制表，最好的狀況是以終為始，反推是否存在風險的地方，寫入風險紀錄表，並且以你的專業，先評估是不是有可能發生。&lt;/p&gt;&lt;p&gt;相信在這些文件的輔助之下，所有的老闆都繪感受到：你是有能力完成這項任務的。&lt;/p&gt;&lt;p&gt;今天我們主題聊到這邊&lt;/p&gt;&lt;p&gt;祝福大家有一個平安順利的軟件人生。&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://hjwang65.blogspot.com/feeds/7328626642025919329/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://hjwang65.blogspot.com/2020/12/blog-post_26.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047380358878843505/posts/default/7328626642025919329'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047380358878843505/posts/default/7328626642025919329'/><link rel='alternate' type='text/html' href='http://hjwang65.blogspot.com/2020/12/blog-post_26.html' title='(文字稿) 談談『做了被罵，不做也被罵』- 把利害關係人的心，都拉到你身邊'/><author><name>Alex Wang</name><uri>http://www.blogger.com/profile/04291476421106219435</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlkO013G-p0pn-2-cpGO63dYyqwIirgYFNwmb4e2-tpADh9Qaj9R-3sXZHceObAVeWJvT3FBSXaaoJ80V-NLqI2eWRTZ9sV7fDKgJXWrx39A3WG3TWH7Nre2EWkV4LErU/s220/DSC_9649.JPG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjURlQGV4pS_az1e6RebnYMKSpgkDQWAT_Mkt4kq71uXE-WPELT396-8vtI-NUSKpcS5BoK7Cxx_zPRxMIQo4vnv2_5REdHWpPvTeQFI86oAPB0pKlfZYfzf0HivqyGHPOcofn0ZSYL1wIO/s72-c/EP02-title.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4047380358878843505.post-1742112429592162440</id><published>2020-12-26T07:20:00.002+08:00</published><updated>2020-12-26T07:22:20.029+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Genero技轉沒教的事"/><title type='text'>(文字稿) 『取得規格，到開發完成』中間該注意的事</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;[&lt;a href=&quot;https://podcasts.google.com/feed/aHR0cHM6Ly9vcGVuLmZpcnN0b3J5Lm1lL3Jzcy91c2VyL2NrZmt1dXZra2EweXgwODM2bnpkMjN1MGs=&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #fcff01;&quot;&gt; 也可以線上聽哦 (podcast)&lt;/span&gt;&lt;/a&gt; ]&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLASNnJCrGeCYKl_gDjxPgOSrn4NQODqoOfm8XHAVM2KGz2f1Z0JyfVK1nFiR2d8ZiotG4e-r0LAV6dXL4Y7UZxUvWzjiA_QlE2zkB29_FkvHtvRsQS6KJBfa2djAyWb9Zd1bceyzn7MSO/s1000/EP01-title.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1000&quot; data-original-width=&quot;1000&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLASNnJCrGeCYKl_gDjxPgOSrn4NQODqoOfm8XHAVM2KGz2f1Z0JyfVK1nFiR2d8ZiotG4e-r0LAV6dXL4Y7UZxUvWzjiA_QlE2zkB29_FkvHtvRsQS6KJBfa2djAyWb9Zd1bceyzn7MSO/s320/EP01-title.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Hello 線上的軟工夥伴好，&amp;nbsp;&lt;p&gt;&lt;/p&gt;&lt;p&gt;我們今天的主題來談一下『軟體開發時間怎麼做預估』。&lt;/p&gt;&lt;p&gt;通常客戶需求方只會給出名詞、概念。&lt;/p&gt;&lt;p&gt;例如：我想要一個APP可以看出現在還有多少需要執行工作？還有多少貨品沒收到倉庫？成本已經花了多少？之類的。&lt;/p&gt;&lt;p&gt;需求？啥？我怎麼把這鬼東西變成可以放在手機或網頁跑的程式？對~~~&amp;nbsp; 你還早的呢。&lt;/p&gt;&lt;p&gt;就像從台北搭高鐵去高雄，拿到需求頂多只是買到車票吧。&lt;br /&gt;那，桃園新竹台中嘉義，個別又對應到甚麼呢？&lt;/p&gt;&lt;p&gt;1. 首先需要查看一下，需求裡面有沒有特殊需要解釋的名詞：&lt;br /&gt;也就是不容易懂的詞、或是不容易計算數量的詞，有的話，一定要追根究柢的問清楚。&lt;br /&gt;畢竟，大多數提需求的人，在他的那個行業打滾有一定的時間了，我們不是那個領域中，可能就不清楚細節、眉角做到哪。怎麼判斷是否滿足呢？想想看自己能不能通順、不帶迷惑的講出客戶想操作的故事？如果可以，那恭喜你過板橋站了。&lt;/p&gt;&lt;p&gt;2. 要記得問客戶，特別不希望有什麼東西出現：在初期，大多數人的習慣是從正面來訴說，但是這也造成軟體退貨率居高不下的狀況，因為你沒有避開客戶不要的。這點一定要特別筆記下來。&lt;/p&gt;&lt;p&gt;接下來，夥伴該我們上場了。&lt;/p&gt;&lt;p&gt;3. 開始在紙上畫個拆解圖、或是想像的堆疊圖。這些雖然是老掉牙的系統分析步驟，可是是有道理的。透過大部拆解，很方便可以理解：有沒有現成的輪子，場景該怎麼轉彎，有沒有現有資源可以搬來借用的。比較講究的就會開始畫流程圖、畫分鏡圖，這些都好，都有助於更深入的理解接下來的動作。&lt;/p&gt;&lt;p&gt;畫圖沒辦法一下子很細，可是透過動手畫，變相的強迫自己思緒轉了一圈，這是邁向專案經理最重要的動作哦。畫圖的過程，主要就是關注連結和轉折，透過甚麼功能連結等等....&lt;/p&gt;&lt;p&gt;拆解之後，理論上我們已經接近台中，也就是路程的一半了。專案管理這個學科中總在強調一件事：品質來自於設計，不再於QC，意思就是在設計的過程是非常重要的，想通了再寫事半功倍。邊走邊想事倍功半。&lt;/p&gt;&lt;p&gt;拆解後，我們自然會把注目焦點，從全流程降階到每一個重要步驟。人只有再聚焦的時候，品質和效率才會是高的&lt;/p&gt;&lt;p&gt;接下來開始往嘉義台南接近了。&lt;/p&gt;&lt;p&gt;4. 對一些重點段落，可找比較有經驗的人員準備較為粗糙，或說擬真的程式碼。透過這些堆疊，可以方便後面接手的同學做更加精緻的處理，然後串聯，測試，產出客戶需要的操作場景。&amp;nbsp;&lt;/p&gt;&lt;p&gt;這樣一串的操作，大家應該對於怎麼把漂浮在半空中的需求，落地實現開始長出一些概念。我們可以找一些簡單的案例，慢慢的操作看看，實現並不難哦。&lt;/p&gt;&lt;p&gt;祝福大家有一個平安順利的軟件人生。&lt;/p&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hjwang65.blogspot.com/feeds/1742112429592162440/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://hjwang65.blogspot.com/2020/12/blog-post.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047380358878843505/posts/default/1742112429592162440'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047380358878843505/posts/default/1742112429592162440'/><link rel='alternate' type='text/html' href='http://hjwang65.blogspot.com/2020/12/blog-post.html' title='(文字稿) 『取得規格，到開發完成』中間該注意的事'/><author><name>Alex Wang</name><uri>http://www.blogger.com/profile/04291476421106219435</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlkO013G-p0pn-2-cpGO63dYyqwIirgYFNwmb4e2-tpADh9Qaj9R-3sXZHceObAVeWJvT3FBSXaaoJ80V-NLqI2eWRTZ9sV7fDKgJXWrx39A3WG3TWH7Nre2EWkV4LErU/s220/DSC_9649.JPG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLASNnJCrGeCYKl_gDjxPgOSrn4NQODqoOfm8XHAVM2KGz2f1Z0JyfVK1nFiR2d8ZiotG4e-r0LAV6dXL4Y7UZxUvWzjiA_QlE2zkB29_FkvHtvRsQS6KJBfa2djAyWb9Zd1bceyzn7MSO/s72-c/EP01-title.png" height="72" width="72"/><thr:total>0</thr:total><georss:featurename>台灣台中市</georss:featurename><georss:point>24.1477358 120.6736482</georss:point><georss:box>-4.162498036178846 85.5173982 52.457969636178845 155.8298982</georss:box></entry><entry><id>tag:blogger.com,1999:blog-4047380358878843505.post-2073762959836641121</id><published>2020-12-17T21:11:00.005+08:00</published><updated>2020-12-17T21:11:49.539+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Genero黑白談"/><title type='text'>補一篇用 Genero BDL 寫 hello world</title><content type='html'>&lt;p&gt;上一篇 blog 寫在 2015 年，再不來寫可能連 blogger 都消失了吧。&lt;/p&gt;&lt;p&gt;為了歡慶某柚子練習寫 blog ，也來搞一篇如何用 Genero BDL 寫 hello world。&lt;/p&gt;&lt;p&gt;HELLO WORLD分兩種- 有畫面的和沒有畫面的 ....&lt;/p&gt;&lt;p&gt;1) 沒畫面的總是簡單，碼一行 DISPLAY &quot; Hello WORLD!&quot;&amp;nbsp; 就算了事了....&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikkU3oDYpYg-AasEC0EE0mg6PFVJtbHg_hxfZDThJ8Rb6_I9XFAy-x_Xj3_idRkNnzJjb4C9WBTfGmjx1M8KTwbQx0CCjAi59rESyrPNiv5bnpvqviB__rytehGFjs_2iuHw4z3bRbY25I/s428/pic1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;196&quot; data-original-width=&quot;428&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikkU3oDYpYg-AasEC0EE0mg6PFVJtbHg_hxfZDThJ8Rb6_I9XFAy-x_Xj3_idRkNnzJjb4C9WBTfGmjx1M8KTwbQx0CCjAi59rESyrPNiv5bnpvqviB__rytehGFjs_2iuHw4z3bRbY25I/s320/pic1.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&amp;nbsp; 想來 99.999% 的同學對於那個 hello.4gl 沒問題，但是不會編譯和執行啊。課本上教的是編譯用 fglcomp，照著用卻說沒有 LICENSE !! 用 r.c 卻又說目錄不對~~&lt;p&gt;&lt;/p&gt;&lt;p&gt;此處要用的確實非 r.c ，而是 r.cs 編譯小程式用，編完了再使用 fglrun 直接執行就可以哦。&lt;/p&gt;&lt;p&gt;2) 有畫面的，可以考慮用 MENU 生出來&lt;/p&gt;&lt;p&gt;MAIN&lt;br /&gt;&amp;nbsp; &amp;nbsp; MENU &quot;Hello World&quot;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ON ACTION exit&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; EXIT MENU&lt;br /&gt;&amp;nbsp; &amp;nbsp;END MENU&lt;br /&gt;END MAIN&lt;/p&gt;&lt;p&gt;編譯與執行都一樣哦，可以參考一下。&lt;/p&gt;&lt;p&gt;Welcome to THE World !&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://hjwang65.blogspot.com/feeds/2073762959836641121/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://hjwang65.blogspot.com/2020/12/genero-bdl-hello-world.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047380358878843505/posts/default/2073762959836641121'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047380358878843505/posts/default/2073762959836641121'/><link rel='alternate' type='text/html' href='http://hjwang65.blogspot.com/2020/12/genero-bdl-hello-world.html' title='補一篇用 Genero BDL 寫 hello world'/><author><name>Alex Wang</name><uri>http://www.blogger.com/profile/04291476421106219435</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlkO013G-p0pn-2-cpGO63dYyqwIirgYFNwmb4e2-tpADh9Qaj9R-3sXZHceObAVeWJvT3FBSXaaoJ80V-NLqI2eWRTZ9sV7fDKgJXWrx39A3WG3TWH7Nre2EWkV4LErU/s220/DSC_9649.JPG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikkU3oDYpYg-AasEC0EE0mg6PFVJtbHg_hxfZDThJ8Rb6_I9XFAy-x_Xj3_idRkNnzJjb4C9WBTfGmjx1M8KTwbQx0CCjAi59rESyrPNiv5bnpvqviB__rytehGFjs_2iuHw4z3bRbY25I/s72-c/pic1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4047380358878843505.post-2678512981864136908</id><published>2015-11-24T13:32:00.000+08:00</published><updated>2015-11-24T13:32:28.974+08:00</updated><title type='text'>PM-Mag. 翻轉城市命運的專案管理-台東熱氣球篇</title><content type='html'>PM-Mag. 翻轉城市命運的專案管理-台東熱氣球篇&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;專案：是靠源源不絕的熱情推動、縝密規畫與細緻執行的支持，才能成功&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Write on 2015/08/12&lt;br /&gt;
Post on 2015/11/24&lt;br /&gt;
&lt;br /&gt;
去年暑假，帶小朋友參加了一次『熱氣球節』，對於主辦單位規劃的動線、活動內容，甚至是停車空間、或突發事件處理，都有很深的印象。&lt;br /&gt;
&lt;br /&gt;
原本以為，在後山的台東，活動應該都是隨意辦辦，屆時一定會出現如夜市般的雜亂無章，毫無規劃的景象：沒想到車行剛進鹿野，鋪天蓋地的指示牌迎面而來，『大車遵行路線、小車遵行路線...』，休息區、停車動線等等一應具全。甚至由此去要等待多久，也多數有標示出。這是一個完整活動的前奏。&lt;br /&gt;
&lt;br /&gt;
各項活動都有依照時間表展開，最讓人印象深刻的是，當天風速過大，並不利於飛行，主辦單位只好取消最後的飛行項目。但是，也並沒有讓到場的觀眾失望，直接協調所有熱氣球機長舉行『噴火光雕晚會』，讓所有預約登記的觀眾可以進入飛行籃子、親手拉動【沒有熱氣球的】加熱器，過過乾癮。&lt;br /&gt;
&lt;br /&gt;
我想這應該是累積了過往很多的經驗，並加上創意發想，才能堆砌出來的表演展現，決不是光靠主持人的靈機一動發生的。&lt;br /&gt;
&lt;br /&gt;
雖然當時還並未接受過專案的訓練，但隱隱然已經覺得，要做到能夠傳承活動的精神【從Lessons Learned吸取經驗】、並從各面向下去完成完整的觀察參與者的需求【包含參展的各國機長、參觀的觀眾等】，並用熱情規劃各種資源投入【包含廣告】、監控每項執行的流程、並快速的逐步完善，應該就是一個意念【或是說：專案】能得以成功的最大關鍵。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://hjwang65.blogspot.com/feeds/2678512981864136908/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://hjwang65.blogspot.com/2015/11/pm-mag.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047380358878843505/posts/default/2678512981864136908'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047380358878843505/posts/default/2678512981864136908'/><link rel='alternate' type='text/html' href='http://hjwang65.blogspot.com/2015/11/pm-mag.html' title='PM-Mag. 翻轉城市命運的專案管理-台東熱氣球篇'/><author><name>Alex Wang</name><uri>http://www.blogger.com/profile/04291476421106219435</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlkO013G-p0pn-2-cpGO63dYyqwIirgYFNwmb4e2-tpADh9Qaj9R-3sXZHceObAVeWJvT3FBSXaaoJ80V-NLqI2eWRTZ9sV7fDKgJXWrx39A3WG3TWH7Nre2EWkV4LErU/s220/DSC_9649.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4047380358878843505.post-7597767588339410546</id><published>2015-06-14T23:24:00.000+08:00</published><updated>2015-06-14T23:24:18.878+08:00</updated><title type='text'>『為什麼聰明人都用方格筆記本』心得</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://www.books.com.tw/products/0010662839&quot;&gt;&lt;img alt=&quot; 博客來URL&quot; border=&quot;0&quot; height=&quot;172&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimS9fiQ4iog61T76xZU8De_a9gJj46ApYFXj39S4I9ZJ-mU1-6-Js4ZKqCVDJQz8_FJuj3ekosB61WdHxhRcb5Fm0_rVckUG93RkF6C6QpiJp-mBYSd_rNhI-1bg2tVtsiPnzRUWhDVZKX/s320/061401.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span id=&quot;goog_1868228895&quot;&gt;&lt;/span&gt;&lt;span id=&quot;goog_1868228896&quot;&gt;&lt;/span&gt;&lt;br /&gt;
初次見到這本書是在誠品閒晃的時候，基本上覺得﹝又來一本教筆記怎麼做的﹞。幸好誠品有提供試讀的樣書，才翻了幾頁就覺得『這應該不是只有講筆記的方法吧？』&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;學新聞報導，設定筆記的『標題』&lt;/li&gt;
&lt;li&gt;具備『整齊外觀、標題、三分割法』就能提高理解速度，讓頭腦變聰明&lt;/li&gt;
&lt;li&gt;用適合自己的『邏輯連接詞』&lt;/li&gt;
&lt;/ul&gt;
嗯，這幾個標題應該是點出了筆記的用法。而且是蠻不容易執行的。&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;設定筆記的標題&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
一般來說，大多數人﹝也包含我自己﹞在筆記多項主題時，如果一頁中是還有空格的，難免就『妥善運用』，把整頁用滿再換下一頁。可是這樣就不容易用『斷點』來對『當前主題』做一個統整的回想，也就是書上說的『設定標題』。&lt;br /&gt;
凡每件討論、每個議題，值得被記錄的，肯定有他的『中心思想』，參與其中的人，如果都只能從枝微末節打轉，而沒辦法『一舉中的』，這一定需要加強觀察能力。有了足夠的觀察力，才不會被別人、被自己錯誤引導，花了很多冤枉時間做冤枉的工作﹝做了又打掉﹞。&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;具備三法則，就能提高理解速度，讓頭腦變聰明&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
如果在筆記的過程中，能夠抓出階段的要點，再來就需要『能夠與其他主題連結、能夠瞻前顧後』的統整、整合能力了。因此，寫得乾淨整齊，就成為打動自己想回看筆記的基本功了﹝誰想重看歪七扭八不明所云的睡前記事？﹞。&lt;br /&gt;
每次回看、每次依情境回想，一定可以激盪出不同的火花﹝想想看倚天屠龍記等各種小說，是否每次看都有不同感覺？﹞，當發現、彙整出不同想法時，就一定要趕緊再把這些觸發的高階想法記錄下來--此時如果面對一片寫滿的筆記牆，肯定很嘔。因此，適當的留白，採用三分割是絕對有其必要性的。&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;用適合自己的『邏輯連接詞』&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
凡事，沒有用自己的話說過一遍，那一定無法內化成為自己的養分。而可否說之於口，連接詞我覺得是最重要的一環。英數理化人人能教，但是為什麼有人能成為『補教名師』，有人卻只能停留在『解題高手』，能否用適切的『連接詞』，把學理轉換為故事，交由同學吸收，一定是關鍵原因之一。&lt;br /&gt;
再者，筆記大多人是原封不動的影印板書，或是擔任速記員的工作。如果可以在謄寫的過程中，就已經用自己習慣的語法寫入，這也就是已經強迫大腦做過初階的分析與篩選；相信在這樣的過程中，應該就可以很從容地發現是否有問題需要提問、或需要與師長前輩做更深入的探討。&lt;br /&gt;
&lt;br /&gt;
粗略的閱讀過本書後，覺得這些點其實不只是在述說『筆記的製作方法』，更是在說明『怎麼樣快速的探索真正的重點』。如果對於常常有錯誤理解，或覺得無法抓住重點的同學，照著本書按圖施工，想必應該收效甚速，可以快速加強自己的邏輯思考能力哦。&lt;br /&gt;
&lt;br /&gt;
延伸閱讀&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.cheers.com.tw/article/article.action?id=5067521&quot;&gt;CHEERS工作誌&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://cychen59.blogspot.tw/2015/03/blog-post_21.html&quot;&gt;土石流防災-陳振宇的公職記事&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content><link rel='replies' type='application/atom+xml' href='http://hjwang65.blogspot.com/feeds/7597767588339410546/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://hjwang65.blogspot.com/2015/06/blog-post.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047380358878843505/posts/default/7597767588339410546'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047380358878843505/posts/default/7597767588339410546'/><link rel='alternate' type='text/html' href='http://hjwang65.blogspot.com/2015/06/blog-post.html' title='『為什麼聰明人都用方格筆記本』心得'/><author><name>Alex Wang</name><uri>http://www.blogger.com/profile/04291476421106219435</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlkO013G-p0pn-2-cpGO63dYyqwIirgYFNwmb4e2-tpADh9Qaj9R-3sXZHceObAVeWJvT3FBSXaaoJ80V-NLqI2eWRTZ9sV7fDKgJXWrx39A3WG3TWH7Nre2EWkV4LErU/s220/DSC_9649.JPG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimS9fiQ4iog61T76xZU8De_a9gJj46ApYFXj39S4I9ZJ-mU1-6-Js4ZKqCVDJQz8_FJuj3ekosB61WdHxhRcb5Fm0_rVckUG93RkF6C6QpiJp-mBYSd_rNhI-1bg2tVtsiPnzRUWhDVZKX/s72-c/061401.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4047380358878843505.post-8239413184825327781</id><published>2015-02-01T14:49:00.002+08:00</published><updated>2015-02-01T14:49:24.960+08:00</updated><title type='text'>終於考上了PMP...</title><content type='html'>每個人都是一個一個圈圈，或大或小；我們的圈圈在專案管理有了重疊交錯，而且，在長宏。&lt;br /&gt;
&lt;br /&gt;
接觸長宏之前，總是憑著自認為的『管理專案』來做專案管理，猶如初生之犢般的勇猛亂闖，知其外而不知其內。萬一遇到無法完成，就會有很多理由編排。後來在同事的『建議』之下，開始接觸『真正的專案管理』，也期望洗刷過往的錯誤，決定用PMP證照做為學習基本經驗的里程碑，因此在十一月底完成了報名的程序。&lt;br /&gt;
&lt;br /&gt;
真的，報完名後就可以說已經距離PMP不遠了：因為網路上許多的分享，都說這會是趟辛苦但是非常值得的旅程，所以在報名前就會有非常多的掙扎與自我安慰，一直有拖延的理由與藉口re-schedule，導致目標的延遲。但，這邊也要記錄下：這些理由和藉口只是自己的想像罷了，沒有起始，就永遠沒有結束，做就對了。&lt;br /&gt;
&lt;br /&gt;
從長宏的課程中，開始改變我對專案的作法、想法與看法。從評估、接手專案應該有那些投入、怎麼規劃各類應注意面向的拆解、與利害關係人間的訊息交換與各種不同的平衡、到最終確認成果、逐步完善、結案與經驗傳承等等的操作，所有的老師與教練都不厭其煩的仔細說明原因、要點，甚至於『如何做』。透過一次次的workshop與課堂詢答，除了拉近與專案的距離，更補足了原來對專案知識有缺漏的部分。&lt;br /&gt;
&lt;br /&gt;
這期間內，除了要準備結業後的認證考試，更非常幸運地接受到PMI的稽核。此時才發現，長宏這邊給予的不只是專案的學識，還更加『身體力行的』把專案實作在每個學員身上--每一個班級都是特別的專案，每個專案都拆解出指定的工作包和活動、活動間發生『被稽核的風險』已經都設定過『應變計畫』，照事先規劃的SOP操作進行﹝計畫中包含空白表格-稽核查檢表﹞就可以快速通過稽核。這些都是其他地方很少見的、或是見過但很少落實這麼徹底的。於是，整個稽核流程在短短的五天內完全完成﹝包含文件準備、寄送美國PMI總部與等待審核﹞，這讓我親身的體驗應變計劃的威力。&lt;br /&gt;
&lt;br /&gt;
在外緊內鬆的情況下，順利地通過教練的檢定與PMI的檢測取的證照；但取得後，隨著長宏輔導系統介面的轉換，又更深切的發現；『考上PMP後才是責任的開始』，看起來新的專案階段已經簽認，共好團隊還是要繼續共好，繼續往下一個里程碑進行。謝謝長宏所有指導中97的老師們與教練們﹝尤其是一天到晚被驚嚇的彩絹教練﹞。</content><link rel='replies' type='application/atom+xml' href='http://hjwang65.blogspot.com/feeds/8239413184825327781/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://hjwang65.blogspot.com/2015/02/pmp.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047380358878843505/posts/default/8239413184825327781'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047380358878843505/posts/default/8239413184825327781'/><link rel='alternate' type='text/html' href='http://hjwang65.blogspot.com/2015/02/pmp.html' title='終於考上了PMP...'/><author><name>Alex Wang</name><uri>http://www.blogger.com/profile/04291476421106219435</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlkO013G-p0pn-2-cpGO63dYyqwIirgYFNwmb4e2-tpADh9Qaj9R-3sXZHceObAVeWJvT3FBSXaaoJ80V-NLqI2eWRTZ9sV7fDKgJXWrx39A3WG3TWH7Nre2EWkV4LErU/s220/DSC_9649.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4047380358878843505.post-5816584494056082092</id><published>2013-10-24T15:09:00.001+08:00</published><updated>2013-10-24T15:47:38.319+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Genero 2.50 新增功能"/><title type='text'>Genero 2.50 新功能預覽 - 更新的DISPLAY ARRAY控制區塊</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;DISPLAY ARRAY指令使用在表格資料的呈現、樹狀資料的呈現兩種情況下。&lt;/p&gt; &lt;p&gt;由於樹狀結構無法透過 INPUT ARRAY 進行維護 (無法開放給使用者畫線) ，因此在這一個版本中，折衷的在 DISPLAY 的過程中挖開欄位給使用者進行簡單的資料輸入。&lt;/p&gt; &lt;p&gt;以下個別探討一下各控制區塊的用途：&lt;/p&gt; &lt;p&gt;資料用：&lt;/p&gt; &lt;ul&gt; &lt;li&gt;ON FILL BUFFER  &lt;li&gt;ON EXPAND  &lt;li&gt;ON COLLAPSE&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;控制用：&lt;/p&gt; &lt;ul&gt; &lt;li&gt;BEFORE DISPLAY / AFTER DISPLAY  &lt;li&gt;BEFORE ROW / AFTER ROW&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;交談用：&lt;/p&gt; &lt;ul&gt; &lt;li&gt;ON ACTION / ON IDLE / ON KEY  &lt;li&gt;ON APPEND ：會跑到畫面最下方，開出一行新的空間，並且在畫面上出現輸入方格，使用者可以在方格內進行資料輸入 &lt;li&gt;ON INSERT ：會將畫面上的資料往下擠一個空間出來，並且在畫面上出現輸入方格，使用者可以在方格內進行資料輸入 &lt;li&gt;ON UPDATE ：會將畫面上本筆資料用 edit 的形式變成可以輸入的樣態 &lt;li&gt;ON DELETE：會協助刪除節點及全域變數內的資料&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;拖拉用：這部分應該是歸類在『交談用』，使用前需要先定義 ui.DragDrop 物件後才可以使用 (下方以 dnd 取代)&lt;/p&gt; &lt;ul&gt; &lt;li&gt;ON DRAG_START (dnd) &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 定義拖動資料起始時應該要做的事情，例如確認資料位置，或是資料拖拉應用的模式*&lt;br&gt;&lt;br&gt;應用模式設置使用 dnd.setOperation( STRING ) ，其中參數可傳入三種&lt;br&gt;copy (複製模式) / move (移動模式) / NULL (取消本次的拖拉動作)&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 如果同時需要支援兩種模式，可以用 dnd.addPossibleOperation ( STRING ) 的指令加入模式&lt;/p&gt; &lt;ul&gt; &lt;li&gt;ON DRAG_OVER (dnd) &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 通常在 ON DRAG_OVER 或 ON DRAG_ENTER 時，若確認沒有拖到東西 (目標) ，就可以使用 dnd.setOperation( NULL ) 來結束這一次的拖拉&lt;/p&gt; &lt;ul&gt; &lt;li&gt;ON DRAG_ENTER (dnd)  &lt;li&gt;ON DROP (dnd) &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 拖拉到另一個位置上後，放開滑鼠時會觸發此『完工』的區塊。如果是處理樹狀資料，可以在此區塊內呼叫 dnd.dropInternal( ) ，系統會幫你將資料移到正確的樹狀節點上。&lt;/p&gt; &lt;ul&gt; &lt;li&gt;ON DRAG_FINISH (dnd) &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 此區塊是拖拉的最後一個結束區塊，通常是做最後的收尾處理。如資料被 move 離開後樹狀節點應該收闔或額外處理之類的。可以在此區塊內使用 dnd.getOperation() 來探知現在是使用哪種模式。&lt;/p&gt; &lt;ul&gt;&lt;!--EndFragment--&gt;&lt;/ul&gt; &lt;p&gt;其他資源：&lt;/p&gt; &lt;ul&gt; &lt;li&gt;DIALOG class  &lt;li&gt;fgl control functions&lt;/li&gt;&lt;/ul&gt;  </content><link rel='replies' type='application/atom+xml' href='http://hjwang65.blogspot.com/feeds/5816584494056082092/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://hjwang65.blogspot.com/2013/10/genero-250-display-array.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047380358878843505/posts/default/5816584494056082092'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047380358878843505/posts/default/5816584494056082092'/><link rel='alternate' type='text/html' href='http://hjwang65.blogspot.com/2013/10/genero-250-display-array.html' title='Genero 2.50 新功能預覽 - 更新的DISPLAY ARRAY控制區塊'/><author><name>Alex Wang</name><uri>http://www.blogger.com/profile/04291476421106219435</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlkO013G-p0pn-2-cpGO63dYyqwIirgYFNwmb4e2-tpADh9Qaj9R-3sXZHceObAVeWJvT3FBSXaaoJ80V-NLqI2eWRTZ9sV7fDKgJXWrx39A3WG3TWH7Nre2EWkV4LErU/s220/DSC_9649.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4047380358878843505.post-8540326185405376383</id><published>2013-10-24T14:45:00.001+08:00</published><updated>2013-10-24T15:10:55.577+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Genero 2.50 新增功能"/><title type='text'>Genero 2.50 新功能預覽</title><content type='html'>&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuvcBoOIewA60-0vb8BbXwI-rq4l35mYDferFUKSq65TKpCigZqBgbhzADxvbc0OLRTLLzhVDI_bhqXwl2ELOgQKxzvekgQ0G8rfP25Uj0cZoIPuFi0u-SXxC4kebAFvtjlvcmuQMpZU3Z/s1600-h/image%25255B2%25255D.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; border-top-width: 0px; margin-right: auto&quot; border=&quot;0&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbvTfAUsxNj9Yq07eqtPNdDCfL2wULhS61FXigr7PyjALpJqwYEOM3pn_djmMHII5fxv3HvYrnNWJj4069gNyIoExVKmvEynMJ2oKOW69WDjK9prOFXc3GBw6PduPPh7J7UDJEEPLRYxWX/?imgmax=800&quot; width=&quot;244&quot; height=&quot;39&quot;&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;從 FourJS 的網頁中可以看到，新版的 Genero 2.50 已經快要結束 EAP 計畫 (Eealy Access Programs)，Genero 項目下的工具都做了大幅度的功能新增【為了能夠盡可能的向前相容，比較少移除 (phase out) 功能】。&lt;/p&gt; &lt;p&gt;因此簡單的查看有哪些功能是在這個版本內新增的：&lt;/p&gt; &lt;p&gt;Genero BDL 2.50 :&lt;/p&gt; &lt;ul&gt; &lt;li&gt;模組化的DIALOG指令：可以更方便的重複使用做出來的DIALOG片段  &lt;li&gt;畫面檔模組化：可以在指定的位置上嵌入畫面片段  &lt;li&gt;支援JSON：可以支持訊息傳輸常見的 JSON 格式  &lt;li&gt;新的CLEAR清除畫面指令：可以部份、指定位置的清除畫面資料  &lt;li&gt;&lt;a href=&quot;http://hjwang65.blogspot.tw/2013/10/genero-250-display-array.html&quot; target=&quot;_blank&quot;&gt;更新的DISPLAY ARRAY控制區塊&lt;/a&gt;：可以支援更便捷的 TREE 操作  &lt;li&gt;新版的資料庫支持：PostgresSQL 9.2, IBM DB2 UDB10等 (不含SQL Server 2014)&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Genero Studio 2.50 :&lt;/p&gt; &lt;ul&gt; &lt;li&gt;新增支持Mac OSX作業系統，也新增多語言顯示模式  &lt;li&gt;新版的程式比對器&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Genero Report (Writer) 2.50 :&lt;/p&gt; &lt;ul&gt; &lt;li&gt;可以設計二維條碼崁入報表 (包含QR code)&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;以上的項目會跟隨著Genero 2.50 更新版本的發布而隨時異動調整，請各位在持續關注相關的訊息囉。(原始資料來源：&lt;a href=&quot;http://www.4js.com/en/news/products/2013/genero-250-eap-now-open&quot; target=&quot;_blank&quot;&gt;Genero 2.50 EAP new open&lt;/a&gt;)&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://hjwang65.blogspot.com/feeds/8540326185405376383/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://hjwang65.blogspot.com/2013/10/genero-250.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047380358878843505/posts/default/8540326185405376383'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047380358878843505/posts/default/8540326185405376383'/><link rel='alternate' type='text/html' href='http://hjwang65.blogspot.com/2013/10/genero-250.html' title='Genero 2.50 新功能預覽'/><author><name>Alex Wang</name><uri>http://www.blogger.com/profile/04291476421106219435</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlkO013G-p0pn-2-cpGO63dYyqwIirgYFNwmb4e2-tpADh9Qaj9R-3sXZHceObAVeWJvT3FBSXaaoJ80V-NLqI2eWRTZ9sV7fDKgJXWrx39A3WG3TWH7Nre2EWkV4LErU/s220/DSC_9649.JPG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbvTfAUsxNj9Yq07eqtPNdDCfL2wULhS61FXigr7PyjALpJqwYEOM3pn_djmMHII5fxv3HvYrnNWJj4069gNyIoExVKmvEynMJ2oKOW69WDjK9prOFXc3GBw6PduPPh7J7UDJEEPLRYxWX/s72-c?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4047380358878843505.post-2215773146842930954</id><published>2013-04-14T15:18:00.001+08:00</published><updated>2013-04-14T15:18:01.153+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Genero黑白談"/><title type='text'>黑白談 (1)–Genero 內到底應不應該 SELECT *</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;解釋一下：&lt;br&gt;所謂的 SELECT * 是指在程式內，我們使用 SELECT * 的方式，而非一個一個欄位寫明的方式 (如 SELECT imaa01,imaa02,imaa03 FROM imaa_t 的作法)&lt;/p&gt; &lt;p&gt;SELECT * 的前提：&lt;br&gt;想要做到 SELECT * ，首先要把RECORD定義正確﹝啥？你不是用RECORD，那這種苦行僧行為到哪裡都OK啦﹞。而想要定義正確，大多數人會選擇 &lt;br&gt;DEFINE lc_imaa RECORD LIKE imaa_t.* 的用法&lt;/p&gt; &lt;p&gt;這個用法有好處：萬一今天資料庫的 table 進行 alter 了，那麼重新編譯過後，程式又是一尾活龍。&lt;/p&gt; &lt;p&gt;要是你忘了編譯呢？&lt;/p&gt; &lt;p&gt;那立刻變成一尾活蟲﹝bug - 多貼心，附上自動翻譯﹞&lt;/p&gt; &lt;p&gt;SELECT * 的寫法存在著簡易的好處，但麻煩的事還不只這一樁。要是畫面4fd檔忘了更新，那麼也可能埋下未爆彈﹝欄位在單頭時，有DISPLAY沒有實際欄位並不會出錯，但在單身，可能就出現 List Error (欄位未對齊) 的錯誤﹞。&lt;/p&gt; &lt;p&gt;翻回來說，在過往是否有這樣的例子：程式碼怎麼看都找不到問題，但是經過 rebuild 後，問題居然自動消失。這不是神蹟，這可能是程式內用了 DEFINE RECORD LIKE + SELECT * 所搞出來的。因為當 rebuild 後，一切的程式執行碼 (object code) 都和資料庫內的結構同步了。誰能夠一眼看出這個 42m 是正確的版本？&lt;/p&gt; &lt;p&gt;總上所述，若是考量程式的易察覺 bug 性質，或許應該盡可能地避免使用 SELECT * 的用法﹝幹嘛給 PR 找麻煩呢？不會~ 現在都用產生器了呀~ ﹞，在程式初始開發的階段，辛苦一點，DEFINE 欄位時一個一個的指定，SELECT 也是逐一的對應。&lt;/p&gt; &lt;p&gt;若能做到，或許就能夠在程式編譯時，就直接凸顯錯誤的項目。而不會因為測試上的漏失，不甚將這種 bug 遺留到客戶端，造成不易解說的窘況。&lt;/p&gt; &lt;p&gt;Alerting Sample：&lt;br&gt;DEFINE lc_imaa&amp;nbsp; RECORD LIKE imaa_t.*&lt;br&gt;MAIN&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DEFINE li_cnt&amp;nbsp; LIKE type_t.num10&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SELECT * INTO li_cnt FROM imaa_t &lt;br&gt;END MAIN&lt;/p&gt; &lt;p&gt;Adjusting Sample：&lt;br&gt;DEFINE lc_imaa RECORD&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; imaa001 LIKE imaa_t.imaa001,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; imaa002 LIKE imaa_t.imaa002&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; END RECORD&lt;br&gt;MAIN&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DEFINE li_cnt LIKE type_t.num10&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SELECT imaa001,imaa002 INTO li_cnt FROM imaa_t&lt;br&gt;END MAIN&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://hjwang65.blogspot.com/feeds/2215773146842930954/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://hjwang65.blogspot.com/2013/04/1genero-select.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047380358878843505/posts/default/2215773146842930954'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047380358878843505/posts/default/2215773146842930954'/><link rel='alternate' type='text/html' href='http://hjwang65.blogspot.com/2013/04/1genero-select.html' title='黑白談 (1)–Genero 內到底應不應該 SELECT *'/><author><name>Alex Wang</name><uri>http://www.blogger.com/profile/04291476421106219435</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlkO013G-p0pn-2-cpGO63dYyqwIirgYFNwmb4e2-tpADh9Qaj9R-3sXZHceObAVeWJvT3FBSXaaoJ80V-NLqI2eWRTZ9sV7fDKgJXWrx39A3WG3TWH7Nre2EWkV4LErU/s220/DSC_9649.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4047380358878843505.post-5107301918046353458</id><published>2012-04-10T13:08:00.001+08:00</published><updated>2012-04-10T13:42:57.532+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="TIPTOP案例探討"/><title type='text'>TIPTOP案例研討- 我的權限設對了沒有? p_qryauth 的應用</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;適用版本：GP 5.0 起&lt;/p&gt; &lt;p&gt;TIPTOP的權限設定非常的靈活，已經足夠滿足極大部分公司日常運營，對權限上面的各式各樣不同需要。&lt;/p&gt; &lt;p&gt;但是透過層層重疊的設定﹝例如：群組對作業p_zy、特別個人設定p_zxw等等﹞，常常會發生：『到底這個設定該從哪裡找出來呢？』，誘或是：『到底這樣堆疊式的設定，可以用還是不能用呢？』。在一個個回頭去查，也不一定能夠快速地找到應該調整的地方。&lt;/p&gt; &lt;p&gt;從GP5.0版本起，系統新增 p_qryauth 使用者對應程式權限查詢作業。MIS們可以透過這一支作業，簡單快速的察看權限是否已設定完整，或是資料權限是否合於規範。&lt;/p&gt; &lt;p&gt;執行後，若是用『tiptop』帳號登入使用，則可以使用查詢功能，查看任何一位使用者在指定的作業中是否已經設妥權限。如果用個人帳號登入，就只能查自己的。&lt;/p&gt; &lt;p&gt;換句話說：這隻作業可以考慮放給 end user 使用。&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhflA_ZeG0SDxIqTq8pnTJLUEoa7WT-rgooER54_LEbVJAPppfnkESUcop9vEaECxix5DRVQhVNI47cpdX1wsLxVnRarmpniHqHed7Xj89d2qhpNkZ79_EP6lnu7ZuaCcpwfWBAshIYDKUc/s1600-h/image%25255B8%25255D.png&quot;&gt;&lt;img style=&quot;background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px&quot; title=&quot;image&quot; border=&quot;0&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjELMDFMZW1vboeF9rJnom-VQosp8LGtgfD_7I1eSe-Z_1TTGIR4f6ktZAKETuHN5gzVDPeiNTcDwkc4SXsRVO7eb2zqqxddezelNZgLqv6t0vvcfJVGV42SpNgxfmrt9V2qrg7_VmqqO4A/?imgmax=800&quot; width=&quot;411&quot; height=&quot;430&quot;&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;確認要查詢的人員、及要查詢的程式後，就可以檢視下方的表格。表格中會列出所有可以使用的 ACTION ID，及相關組合後的資料權限。由於本作業在計算權限，是等同於 library 內的計算方法。因此得到的結論，與使用者操作該作業會得到的權限一致。如此可以快速確認是否是權限不足，而造成執行上的錯誤。&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://hjwang65.blogspot.com/feeds/5107301918046353458/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://hjwang65.blogspot.com/2012/04/tiptop-pqryauth.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047380358878843505/posts/default/5107301918046353458'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047380358878843505/posts/default/5107301918046353458'/><link rel='alternate' type='text/html' href='http://hjwang65.blogspot.com/2012/04/tiptop-pqryauth.html' title='TIPTOP案例研討- 我的權限設對了沒有? p_qryauth 的應用'/><author><name>Alex Wang</name><uri>http://www.blogger.com/profile/04291476421106219435</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlkO013G-p0pn-2-cpGO63dYyqwIirgYFNwmb4e2-tpADh9Qaj9R-3sXZHceObAVeWJvT3FBSXaaoJ80V-NLqI2eWRTZ9sV7fDKgJXWrx39A3WG3TWH7Nre2EWkV4LErU/s220/DSC_9649.JPG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjELMDFMZW1vboeF9rJnom-VQosp8LGtgfD_7I1eSe-Z_1TTGIR4f6ktZAKETuHN5gzVDPeiNTcDwkc4SXsRVO7eb2zqqxddezelNZgLqv6t0vvcfJVGV42SpNgxfmrt9V2qrg7_VmqqO4A/s72-c?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4047380358878843505.post-8699959539701030069</id><published>2012-03-29T11:32:00.001+08:00</published><updated>2012-03-29T11:32:56.869+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="TIPTOP案例探討"/><title type='text'>TIPTOP案例探討- 動態開窗時用 ComboBox 可否顯示說明，而非代碼？</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;案例說明&lt;/p&gt; &lt;p&gt;TIPTOP 內的動態開窗，是透過『動態查詢函式維護作業 p_qry 』所維護出來的，可以不讓使用者開發實體的程式碼，單純透過配置，就把開窗程式做出來的工具。&lt;/p&gt; &lt;p&gt;可是，開窗查詢當有需要使用到 ComboBox 時，是否可以『顯示說明文字』，而非『顯示代碼』？因為代碼沒有多少人可以自動轉換成文字…&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhODntdPOhW9x0XqMWR3wsggGo2QuSo8zk6fqkF7FfWm6f5FJqR3Yfd3Oy9u_QJmeeECLJhqD8AzVB_BQnvGo2zl8BpWnHZOkaGOVD7pGDwh80ERcL8t4kOD1JCvznSLuP4wUwp6NloivZs/s1600-h/image%25255B3%25255D.png&quot;&gt;&lt;img style=&quot;background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px&quot; title=&quot;image&quot; border=&quot;0&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqAdFIEGlFE4S9Zu3ShjgGkOmRKYByaIIYIMqEbuQ3TdWe0Ahw8RW8hW1EHHzk9b4_Ev_VePE6Yu8PAQRlU_7NFE35RrPyncftCg4qzcTJ7mxeVkcUnyDVEjDxcNjP5DVCmCbaMIPfBiCV/?imgmax=800&quot; width=&quot;349&quot; height=&quot;149&quot;&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;例如上圖的『模組代碼』&lt;/p&gt; &lt;p&gt;解決方法&lt;/p&gt; &lt;p&gt;1. 開啟『動態查詢函式維護作業 p_qry 』，在單身的『欄位型態』選擇將所需要的欄位，以『COMBOBOX』方式呈現&lt;/p&gt; &lt;p&gt;然後在『&lt;font color=&quot;#ffff00&quot;&gt;&lt;strong&gt;欄位輸入限制設定&lt;/strong&gt;&lt;/font&gt;』上，給他『&lt;font color=&quot;#ffff00&quot;&gt;&lt;strong&gt;兩個 ze 的代碼&lt;/strong&gt;&lt;/font&gt;』&lt;br&gt;(本範例設定為&amp;nbsp; test001 || test002&amp;nbsp;&amp;nbsp; (用 double pipe || 符號做分隔，中間沒有空白)&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGxEfEz82W59dnAy472bME2n8fJGafLSxq0s4gSSSSulMMeg11Cs2c5piwwjtpQLqzJtdbjJfLJ7xAT6dnJi47xj1Ic5vWqAWNkLdsGo4m4jgCFmAAol9FVkE2HC7GplY94XfFjV9wCR9x/s1600-h/image%25255B8%25255D.png&quot;&gt;&lt;img style=&quot;background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px&quot; title=&quot;image&quot; border=&quot;0&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicWGWlyOW-mbsG_6BBZU58V6GvKL2duuTiSejN9nfm4X82H6II5KcU_wCeLIfEfmyEBB4JkhwXeUYyzlFjFq4RJ2bX4QGa4RZF81ognbfRTc2lDdPrY8QTUdGtt0wl4lSXi4V3rFRjqEl8/?imgmax=800&quot; width=&quot;436&quot; height=&quot;214&quot;&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;2. 開啟『錯誤訊息資料維護作業 p_ze 』，看一下設定範例&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtvZjZH_V-HXnn6T7fJvDbOKDZvnuYbhLxW21CsUcJlWVtzhrO9Mw0A2b-66xgX8aZFxAqvE-6NInW2bwcfXpympqBU3b6pDdp7gxgl8llwBKJGbyOvgexjiAQnmZxZ7MxhbaamQO5HWD0/s1600-h/image%25255B15%25255D.png&quot;&gt;&lt;img style=&quot;background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px&quot; title=&quot;image&quot; border=&quot;0&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtHfia3RBD6eqXTlLrGo5ilaz4zy-odF63oasQv9h8haNL9axTSAfyEhyphenhyphen1qZo6ZkEVZd7aYTTBpO0OzoLqb_KlmAKv3O-n83suO95pUIzCDnDCl7Ixtrva-qBwiNVxFV5yBEHzTPa73c-2/?imgmax=800&quot; width=&quot;434&quot; height=&quot;215&quot;&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;test001 (前面的) 是要呈現給使用者看的說明&lt;br&gt;test002 (後面那一組) 是給程式看的代碼，設定錯誤的話，從 p_qry 換邊就可以了。&lt;/p&gt; &lt;p&gt;3. 設定完成後就可以看到多語言的動態開窗了…&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://hjwang65.blogspot.com/feeds/8699959539701030069/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://hjwang65.blogspot.com/2012/03/tiptop-combobox.html#comment-form' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047380358878843505/posts/default/8699959539701030069'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047380358878843505/posts/default/8699959539701030069'/><link rel='alternate' type='text/html' href='http://hjwang65.blogspot.com/2012/03/tiptop-combobox.html' title='TIPTOP案例探討- 動態開窗時用 ComboBox 可否顯示說明，而非代碼？'/><author><name>Alex Wang</name><uri>http://www.blogger.com/profile/04291476421106219435</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlkO013G-p0pn-2-cpGO63dYyqwIirgYFNwmb4e2-tpADh9Qaj9R-3sXZHceObAVeWJvT3FBSXaaoJ80V-NLqI2eWRTZ9sV7fDKgJXWrx39A3WG3TWH7Nre2EWkV4LErU/s220/DSC_9649.JPG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqAdFIEGlFE4S9Zu3ShjgGkOmRKYByaIIYIMqEbuQ3TdWe0Ahw8RW8hW1EHHzk9b4_Ev_VePE6Yu8PAQRlU_7NFE35RrPyncftCg4qzcTJ7mxeVkcUnyDVEjDxcNjP5DVCmCbaMIPfBiCV/s72-c?imgmax=800" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4047380358878843505.post-6485681959269351033</id><published>2012-03-29T10:50:00.001+08:00</published><updated>2012-03-29T10:50:17.001+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="TIPTOP案例探討"/><title type='text'>TIPTOP案例探討- r.f2 畫面檔時，一直發生錯誤</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;案例說明：&lt;/p&gt; &lt;p&gt;在 GP 5.1 / 5.2 / 5.25 版本中，在『極度的偶然』情況下，會發生 r.f2 編譯畫面時，一直發生 error:(GS-10067) Non existing schema ds attached to form 的錯誤&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpsullsJhz7Amg598aE0ONrekxcebHw1tRvUJXCdTykRTtW8pHoEmZDvTdPYfPdBSQmMpnVHWGXGImTlkvfeVdK04r0wUVHesBXwUqzFB3cMjdrlBNFSw-ScmrHoQTvFyZIc-PR24fb1-6/s1600-h/_5HD7CY%252560%252524ZZ%25255DFFKNR%252540%252529GJ%2525292%25255B3%25255D.jpg&quot;&gt;&lt;img style=&quot;background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px&quot; title=&quot;_5HD7CY`$ZZ]FFKNR@)GJ)2&quot; border=&quot;0&quot; alt=&quot;_5HD7CY`$ZZ]FFKNR@)GJ)2&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0sqDnftHU5OrUEiifnnHYFd2iGO8r2wlLqejGNSlGIYe7NguwB7uK61NU3yaVoAC2Txm6YehfZwWq47yfMxGsyDc86-jxgqWZcFxa2LzdITdM1vC7nHT990nOSnHa1gLxAKuXfIeVRQ50/?imgmax=800&quot; width=&quot;472&quot; height=&quot;55&quot;&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;如上圖所示。而且更糟的是，所有的畫面檔編譯，都不行了﹝其實，沒有參考到 ds 資料庫所做出的 formonly 畫面還是可以編譯的﹞。&lt;/p&gt; &lt;p&gt;此時，首先應該會想到，去 $TOP/schema 目錄下檢查 ds.sch 有沒有存在？在的。&lt;/p&gt; &lt;p&gt;那，重新產生一下 ds.sch 是否就可以了？ r.s2 ds 重新生成了，呃，問題一樣。&lt;/p&gt; &lt;p&gt;解決方法：&lt;/p&gt; &lt;p&gt;這種情況，應該是資料庫中存在了 Genero 認不得的資料型態。以 ORACLE 來說，就是 NUMBER(37) 或是不限長度的 NUMBER( ) 。此兩種欄位都會照常的產出資訊到 ds.sch 中，然後造成 compiler 讀取資料時發生異常錯誤，然後自我了斷。&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAwb215Ok6xCFawLY6alS5OIbgSwpXdhpRq1xRwdvJA9dP9VWKcUp5-yhwq0990R3-U6YQqlQA3zzS3PgMKtgMnzVEe7FQnnuEpcL8ycgw3KesmcvLEcwg4PAlspupJpD6VfuzTs9bnL-e/s1600-h/image%25255B3%25255D.png&quot;&gt;&lt;img style=&quot;background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px&quot; title=&quot;image&quot; border=&quot;0&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZaLNAZkYfg53rT0Ums92J8ckDao4Tp3p2Xt4H4P6gN1YLO7gzyE1um0xAn3jcRbAT33XpTHQJnbfm1m-76bOk96PhZQmlphzFfbqAqbfGM6hHJbl8dP642QyoNVuqeTxMeSOEMS2ZL4TS/?imgmax=800&quot; width=&quot;313&quot; height=&quot;139&quot;&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;解法 1 : 鋸箭法&lt;/p&gt; &lt;p&gt;很簡單，去 ds.sch 內搜尋『 ^^ 』的符號﹝分隔符號中間無數值，非表情符號﹞，然後把該行刪掉。&lt;/p&gt; &lt;p&gt;缺點：重新 r.s2 後，問題如怨念般地又出現了。&lt;/p&gt; &lt;p&gt;解法 2 : 完全解決法&lt;/p&gt; &lt;p&gt;請先使用鋸箭法，搜尋出問題欄位，再用 alter 工具調整 NUMBER 長度，或是取消該 table / column ﹝如果真的沒用途的話，請先確認過，有練過在這麼做﹞。然後重新 r.s2 看看是否就此解決。&lt;/p&gt; &lt;p&gt;缺點：有點麻煩，而且沒有人以後再纏著你問此問題，會有一點寂寞…&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;PS. Genero 2.4 / TIPTOP GP 5.3 起，錯誤訊息已修正為&lt;/p&gt; &lt;p&gt;/u1/topprod/tiptop/schema/ds.sch:149:error:(GS-11552) Can&#39;t convert length for column &#39;aao00&#39; of table &#39;aao_file&#39;.&lt;br&gt;/u1/topprod/tiptop/azz/4fd/p_zz.4fd:/ManagedForm@databaseName:error:(GS-24213) Non existing schema ds attached to document&lt;/p&gt; &lt;p&gt;問題發生處就更加明確了…&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://hjwang65.blogspot.com/feeds/6485681959269351033/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://hjwang65.blogspot.com/2012/03/tiptop-rf2.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047380358878843505/posts/default/6485681959269351033'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047380358878843505/posts/default/6485681959269351033'/><link rel='alternate' type='text/html' href='http://hjwang65.blogspot.com/2012/03/tiptop-rf2.html' title='TIPTOP案例探討- r.f2 畫面檔時，一直發生錯誤'/><author><name>Alex Wang</name><uri>http://www.blogger.com/profile/04291476421106219435</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlkO013G-p0pn-2-cpGO63dYyqwIirgYFNwmb4e2-tpADh9Qaj9R-3sXZHceObAVeWJvT3FBSXaaoJ80V-NLqI2eWRTZ9sV7fDKgJXWrx39A3WG3TWH7Nre2EWkV4LErU/s220/DSC_9649.JPG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0sqDnftHU5OrUEiifnnHYFd2iGO8r2wlLqejGNSlGIYe7NguwB7uK61NU3yaVoAC2Txm6YehfZwWq47yfMxGsyDc86-jxgqWZcFxa2LzdITdM1vC7nHT990nOSnHa1gLxAKuXfIeVRQ50/s72-c?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4047380358878843505.post-2846562218671313486</id><published>2012-03-29T10:18:00.001+08:00</published><updated>2012-03-29T10:18:01.434+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="TIPTOP案例探討"/><title type='text'>TIPTOP案例探討- r.l2 sub 或 qry 的時候怎麼有出現錯誤訊息</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;通常，這裡會出現兩種狀況。以下舉利用範例，發生錯誤的一定不會是和所舉範例一樣的情況，請特別注意您的錯誤訊息，符合下列哪一種：&lt;/p&gt; &lt;p&gt;&lt;font size=&quot;5&quot;&gt;&lt;strong&gt;案例一&lt;/strong&gt;&lt;/font&gt;：出現 ERROR(-6203):Module &#39;sub_xxxxxx&#39;: The function &#39;s_xxxxxxxx&#39; has already been defined in module &#39;csub_s_xxxxxx&#39;.&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHewoleoQXGlgpFT-t40Rnib4UDXBFtgIQw8UQ_wg0MfXRgoAZ1E5HbyQ366JJe9VCSoxxI_O1k5hWkRuPn0EvdSta8qjnUPI3JplLAoqLvohLKeuDVW1mvJ-9D5LNNL9EXqV7NRjIb6pj/s1600-h/image%25255B9%25255D.png&quot;&gt;&lt;img style=&quot;background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px&quot; title=&quot;image&quot; border=&quot;0&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJ0eKA9FFmkundEKYtwnhzB-msSp6Q_snMTxmqckZIS2Gcwo84G1DoBQdh1UX2L-9avERqJuidAp2SYP5rvtmj-R52YLBB-cmb-J_ZYKWOqkVuX5F1dEpO_qRZHN8TnBWPhRrELNlD1gHy/?imgmax=800&quot; width=&quot;415&quot; height=&quot;112&quot;&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;此類 LINK ERROR 是因為想要把標準的程式搬到『客製目錄』下進行客製，但卻在『程式鏈結維護作業 p_link 』中把原有的 SUB 程式資料『&lt;font color=&quot;#ffff00&quot; size=&quot;4&quot;&gt;&lt;strong&gt;刪除&lt;/strong&gt;&lt;/font&gt;』。這是不可以的，&lt;font color=&quot;#ffff00&quot;&gt;因為『重新查詢』時，系統會『自動把被刪除的 SUB 加回來』，就造成了『重複定義』。&lt;/font&gt;&lt;/p&gt; &lt;p&gt;正確的作法是，把原作業的『是否鏈結』欄位，改成『 N: 否』，這樣就不會被自動加入』了。參考下圖：&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGFCjxe6urYWr2GnrTcCY4_0OayeRfImf34OQ97a9VplJA0TI5hS0yRWehjF_Y7mIBJGZ85UO9yTbOoNeee2EmMndAlHM0Py-oev48XjKaVmd8IFqHQZZSMFVVNedY8iyWpKbprPWhZi3d/s1600-h/image%25255B13%25255D.png&quot;&gt;&lt;img style=&quot;background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px&quot; title=&quot;image&quot; border=&quot;0&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-le-83i27S0Ac-KSc6kz_3ImypuI9KvvV-XJNJyclgTXIQ5M7gwiTmM_qkuwmdbw8cqAu-Cg0UfCLk0e-niDAgCVpggJ_SYod9bd2yuGd-cIeTG0WHDA2bYSdJpFNTXdsRhtVUp04lMgI/?imgmax=800&quot; width=&quot;422&quot; height=&quot;171&quot;&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;font size=&quot;5&quot;&gt;&lt;strong&gt;案例二&lt;/strong&gt;&lt;/font&gt;：出現 ERROR(-1338):The function &#39;cl_user&#39; has not been defined in any module in the program.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiHsYu-3-amEvj-tiNldlJETUGrZ2vbAWFk0OFaTAQsw4OUA4bisJR_qZnfP7KzfcV4EpDCHflXBn87CYnz26-pmsmCGVJIOHqdg3YNLlr6CZO6bjlBxmpygny7zA-8PtWXVw41mOM6HuQo/s1600-h/image%25255B17%25255D.png&quot;&gt;&lt;img style=&quot;background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px&quot; title=&quot;image&quot; border=&quot;0&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh27LzBrEy2q-MkrYGVVB3YtlD6uIEXZ88bvjqWGsBo6JdQMi8OEMaMzjIXOZUNhXys8RcezEG8LSgr4IJd5dBNEXEN3W3JunvRyJ9pVMlfCTppU4QhqJE4wwmX2LivsAG7yUkRUWXc_FCD/?imgmax=800&quot; width=&quot;417&quot; height=&quot;137&quot;&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;連結的明明是 SUB，卻出現一堆 LIB 錯誤﹝反過來也是一樣的情形﹞。這個與上例相同，請回頭去檢查您的 sub ﹝小寫﹞ 設定是否存在不合法的資料﹝通常是含到非 $TOP/sub 目錄下的東西，或是主程式﹝含有MAIN﹞，刪除掉就好了。&lt;/p&gt; &lt;p&gt;錯誤情形如下圖所示：&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZXKixKNP_PGeYEyQvzOXWio_ELkrAj7vGC9DhTNwKyDg6a4879SS3T461qvs-bFxuvJ3LDto8Nj2ar_G4A8wPBRcB-Q65Q-IDN8KjYisMXFxv2xfoitHu2MKswz1cJssY32TjmoQSuLUR/s1600-h/image%25255B21%25255D.png&quot;&gt;&lt;img style=&quot;background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px&quot; title=&quot;image&quot; border=&quot;0&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnXNF_jwJHmgYwyO62Zz7QKS2NYppkAqmoS14Ox7dloqtygewhQf-0t6ohIMvHb-KOBJPmQse0sTttFOhfH5iQIl2lo4Je1nHP00yci5H6EjQnlWz9O9TPwGaTxE2yi5oHMcCVnh6LAzHo/?imgmax=800&quot; width=&quot;402&quot; height=&quot;191&quot;&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;希望這兩種案例不要常常發生呢。&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://hjwang65.blogspot.com/feeds/2846562218671313486/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://hjwang65.blogspot.com/2012/03/tiptop-rl2-sub-qry.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047380358878843505/posts/default/2846562218671313486'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047380358878843505/posts/default/2846562218671313486'/><link rel='alternate' type='text/html' href='http://hjwang65.blogspot.com/2012/03/tiptop-rl2-sub-qry.html' title='TIPTOP案例探討- r.l2 sub 或 qry 的時候怎麼有出現錯誤訊息'/><author><name>Alex Wang</name><uri>http://www.blogger.com/profile/04291476421106219435</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlkO013G-p0pn-2-cpGO63dYyqwIirgYFNwmb4e2-tpADh9Qaj9R-3sXZHceObAVeWJvT3FBSXaaoJ80V-NLqI2eWRTZ9sV7fDKgJXWrx39A3WG3TWH7Nre2EWkV4LErU/s220/DSC_9649.JPG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJ0eKA9FFmkundEKYtwnhzB-msSp6Q_snMTxmqckZIS2Gcwo84G1DoBQdh1UX2L-9avERqJuidAp2SYP5rvtmj-R52YLBB-cmb-J_ZYKWOqkVuX5F1dEpO_qRZHN8TnBWPhRrELNlD1gHy/s72-c?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4047380358878843505.post-7837460137671877442</id><published>2011-11-24T10:53:00.001+08:00</published><updated>2011-11-24T10:53:26.166+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Genero技轉沒教的事"/><title type='text'>TIPTOP GP5.25 多出的 4pw 目錄 - 使用 Studio 進行 debug (1)</title><content type='html'>&lt;p&gt;從&lt;font color=&quot;#ff0000&quot; size=&quot;3&quot;&gt;&lt;strong&gt;易拓TIPTOP GP5.25&lt;/strong&gt;&lt;/font&gt;板起，在每個模組下面都多出了一個 4pw 的路徑﹝如下圖所示﹞，這是做甚麼的呢？&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhw3rV4GgGC-6qVtlAHhE2P65J5GOg2LkH8uX6o4ebSNq4IhSy7kR-5XUEjj1exNir0gdoqQx2ZLBKwl5vIdyOQKKe7oY7dnU4jXdTjlW-nEKROM3pdZJ18wrEvHSwlwKLvWnlORXkaBne1/s1600-h/image%25255B3%25255D.png&quot;&gt;&lt;img style=&quot;background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px&quot; title=&quot;image&quot; border=&quot;0&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhyphenhyphenfztnpAGUHhlJNx9RQbH_Ux6pkzhAkR77JDKP9sBCYtodhn5Eh1S7qnPS8vDnAkJxkew39_w1rkLUU6osX4DA9O7BownyrcECj2Fxs3Q1hh0nY384k_GFvilLaCjUGoqPt68vQAol8qV/?imgmax=800&quot; width=&quot;335&quot; height=&quot;58&quot;&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;這個是為了給 Genero Studio 做 debug 用的‧&lt;br&gt;咦？debug 不是說使用 r.d2 / r.d2+ 等工具就好了嗎？&lt;br&gt;是的，理論上如此。但從新的 Genero 2.32 版本起，FourJS 把這種圖像式的 debugger 完整的整合到 Genero Studio 內部了，也就是未來若有發行 debugger 的版本修正、或新增功能，都要從 Genero Studio 上的 debugger 才能享受到。而要使用 Studio 上的 debugger，首要之務就是要引用 Project Managerment&lt;/p&gt; &lt;p&gt;因此，TIPTOP GP 從 5.25 板起，在各模組下，預先開啟 4pw 目錄，初期出貨是空的。使用者﹝Programmer﹞可以透過『文字指令』&lt;/p&gt; &lt;p&gt;&lt;font color=&quot;#ffc000&quot; size=&quot;4&quot;&gt;exe2 p_zz_proj&amp;nbsp; [主程式代碼]&lt;/font&gt;&lt;/p&gt; &lt;p&gt;來進行 4pw 檔的產生作業。範例如下：&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijGucm8uPWJkuw2fZ40YRYsZ10ZQRYaQROZ8-vLlrM-a9FZYWm3BY8cqEbQSGcZ2XUhfcF-U9l9DU6J9Dq3FC5Va66Jg5N1pVct3Ac46CMGtDQ9PRZWjmbBizo3A6kKA16QVifo3XZ8KMV/s1600-h/image%25255B8%25255D.png&quot;&gt;&lt;img style=&quot;background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px&quot; title=&quot;image&quot; border=&quot;0&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsvdM1JirORv56hNVjPwKhEPICVh6HOtl4Jq-o4BE7W9I9HOfu1aWbKo1iwXNLO-8TO3LU8s-W5SOo4H2BeEJPbm8CgBffR_iv58J5pbFi1vWUH-3JuZN8t_FYLFUlM8rjBM8QJVrNRS5a/?imgmax=800&quot; width=&quot;386&quot; height=&quot;121&quot;&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;當看到紅框那一行字出現時，就表示可以正常的產出該主程式的 4pw 檔案。當產出 4pw 檔案後，就表示可以從 Genero Studio 來開啟這支主作業的 Project ，進而使用 Studio 上的 debugger。&lt;/p&gt; &lt;p&gt;但，Studio 上的 debuuger 該如何設定才能使用呢？請待下回分曉~&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://hjwang65.blogspot.com/feeds/7837460137671877442/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://hjwang65.blogspot.com/2011/11/tiptop-gp525-4pw-studio-debug-1.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047380358878843505/posts/default/7837460137671877442'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047380358878843505/posts/default/7837460137671877442'/><link rel='alternate' type='text/html' href='http://hjwang65.blogspot.com/2011/11/tiptop-gp525-4pw-studio-debug-1.html' title='TIPTOP GP5.25 多出的 4pw 目錄 - 使用 Studio 進行 debug (1)'/><author><name>Alex Wang</name><uri>http://www.blogger.com/profile/04291476421106219435</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlkO013G-p0pn-2-cpGO63dYyqwIirgYFNwmb4e2-tpADh9Qaj9R-3sXZHceObAVeWJvT3FBSXaaoJ80V-NLqI2eWRTZ9sV7fDKgJXWrx39A3WG3TWH7Nre2EWkV4LErU/s220/DSC_9649.JPG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhyphenhyphenfztnpAGUHhlJNx9RQbH_Ux6pkzhAkR77JDKP9sBCYtodhn5Eh1S7qnPS8vDnAkJxkew39_w1rkLUU6osX4DA9O7BownyrcECj2Fxs3Q1hh0nY384k_GFvilLaCjUGoqPt68vQAol8qV/s72-c?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4047380358878843505.post-6976887105975332040</id><published>2011-04-26T09:48:00.001+08:00</published><updated>2011-04-26T09:48:55.569+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Genero技轉沒教的事"/><title type='text'>Genero 套件組個別套件</title><content type='html'>&lt;p&gt;FourJs﹝拼法改變了唷，已經取消了逗號，變為專有名詞了﹞，在Genero語言的開發上，再下一城。新推出了完整的報表解決方案。因此目前的套件家族介紹如下：﹝取材自2011/04/26&lt;a href=&quot;http://www.4js.com&quot;&gt;原廠網頁&lt;/a&gt;﹞&lt;/p&gt;  &lt;table border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;2&quot; width=&quot;400&quot;&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign=&quot;top&quot; width=&quot;168&quot;&gt;&lt;img style=&quot;margin: 0px 0px 5px&quot; alt=&quot;Genero Logo 64x&quot; src=&quot;http://www.4js.com/files/images/products/genero/genero_logo_64x.png&quot; width=&quot;154&quot; height=&quot;53&quot; /&gt;&lt;/td&gt;        &lt;td valign=&quot;top&quot; width=&quot;232&quot;&gt;Genero語言套件         &lt;br /&gt;這是最基本的套件，裏面包含了Genero語言的編譯工具﹝4gl, per﹞，以及資料庫驅動程式、執行解譯器﹝DVM﹞&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign=&quot;top&quot; width=&quot;168&quot;&gt;&lt;img style=&quot;margin: 0px 0px 5px&quot; alt=&quot;genero rw logo 64x&quot; src=&quot;http://www.4js.com/files/images/products/genero_rw/genero_rw_logo_64x.png&quot; width=&quot;153&quot; height=&quot;56&quot; /&gt;&lt;/td&gt;        &lt;td valign=&quot;top&quot; width=&quot;232&quot;&gt;Genero Report Writer報表套件         &lt;br /&gt;原生於Genero語言，因此要先安裝基本套件後，才能加裝此套件。內涵基本的開發工具及runtime-library。&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign=&quot;top&quot; width=&quot;168&quot;&gt;&lt;img style=&quot;margin: 0px 0px 5px&quot; alt=&quot;genero studio logo 64x&quot; src=&quot;http://www.4js.com/files/images/products/genero_studio/genero_studio_logo_64x.png&quot; width=&quot;151&quot; height=&quot;53&quot; /&gt;&lt;/td&gt;        &lt;td valign=&quot;top&quot; width=&quot;232&quot;&gt;Genero Studio整合開發套件         &lt;br /&gt;安裝本項目時，上述的Genero基本套件、報表套件、及Web套件與GDC均會一起安裝﹝安裝過程可選擇﹞，安裝完後，即可在此環境內進行開發及測試。&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign=&quot;top&quot; width=&quot;168&quot;&gt;&lt;img style=&quot;margin: 0px 0px 5px&quot; alt=&quot;Genero db logo 64x&quot; src=&quot;http://www.4js.com/files/images/products/genero_db/genero_db_logo_64x.png&quot; width=&quot;151&quot; height=&quot;53&quot; /&gt;&lt;/td&gt;        &lt;td valign=&quot;top&quot; width=&quot;232&quot;&gt;Genero資料庫         &lt;br /&gt;FourJs也有開發自己的關聯式資料庫系統，目前實際使用的指標客戶為NAVI&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;              &lt;p&gt;以上均為Server端，在Client端要執行起來，就是安裝對應版本的GDC﹝Genero Desktop Client﹞。&lt;/p&gt;  &lt;table border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;2&quot; width=&quot;400&quot;&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td width=&quot;87&quot; align=&quot;right&quot;&gt;&lt;img style=&quot;margin: 0px 0px 5px&quot; src=&quot;http://www.4js.com/files/images/support/gep_64.png&quot; /&gt;&lt;/td&gt;        &lt;td width=&quot;313&quot;&gt;&lt;a href=&quot;http://www.4js.com/en/download/test-drive&quot;&gt;FourJs GEP 2.31 Test Drive&lt;/a&gt;          &lt;br /&gt;- Genero 2.30          &lt;br /&gt;- Genero Studio 2.31          &lt;br /&gt;- Genero Report Writer 2.31           &lt;br /&gt;- Genero db 3.81&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;如果對上列系統有興趣時，可以參加 FourJs 的 test drive計畫，裡面有一個30天的臨時License，逾期就不能再使用了。有興趣瞭解可以參加測試計畫後，下載來看看。   &lt;br /&gt;﹝註：這個License並不相容於TIPTOP GP系統，這是FourJs說的﹞&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://hjwang65.blogspot.com/feeds/6976887105975332040/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://hjwang65.blogspot.com/2011/04/genero.html#comment-form' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047380358878843505/posts/default/6976887105975332040'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047380358878843505/posts/default/6976887105975332040'/><link rel='alternate' type='text/html' href='http://hjwang65.blogspot.com/2011/04/genero.html' title='Genero 套件組個別套件'/><author><name>Alex Wang</name><uri>http://www.blogger.com/profile/04291476421106219435</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlkO013G-p0pn-2-cpGO63dYyqwIirgYFNwmb4e2-tpADh9Qaj9R-3sXZHceObAVeWJvT3FBSXaaoJ80V-NLqI2eWRTZ9sV7fDKgJXWrx39A3WG3TWH7Nre2EWkV4LErU/s220/DSC_9649.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4047380358878843505.post-6695175421952081763</id><published>2010-08-20T11:45:00.001+08:00</published><updated>2010-08-20T11:45:47.404+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="TIPTOP案例探討"/><title type='text'>TIPTOP案例探討-不同部門間的表單資料分享設定方式</title><content type='html'>&lt;p&gt;最近遇到有同學舉手發問：『我有2業務部門，業務一部的業務人員都可以 查詢/更改自己及業務二部資料，而業務二部只能查看業務二部key的資料，該如何設定？』&lt;/p&gt;  &lt;p&gt;這問題應該有許多同學深感困擾，其實在TIPTOP GP上實作並不困難，以下用TIPTOP GP5.1為例說明：&lt;/p&gt;  &lt;p&gt;1. 首先要把業務一部及二部區分到不同的權限群組 p_zw    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; 例如 p_zw 中新增 G-SAL01 與 G-SAL02 分別代表業務一部及二部     &lt;br /&gt;2. 定義 G-SAL01 對該程式的『對非與使用者同部門產出資料處理』選項設為『5. 僅相關部門群組間允許查詢/修改』    &lt;br /&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJVJmeZS53cZwdnDve0ys2Aedz9m3RcNEWtlU39CGCXbzlio44QtP3KXNnDWqBSSOx17-Bj8twwgpFNAMxqXMZc0URUAAd32S2laXbxLkxcO9Qb_Ux1X4ovGYRR5H9k4nK5O6pS0aQOd4H/s1600-h/image%5B2%5D.png&quot;&gt;&lt;img style=&quot;border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px&quot; title=&quot;image&quot; border=&quot;0&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbDZwKf1Y-7i_THeBrhon4_YywTrJ4F460Ulw_W0LVkmJm1S8VqMtxwMWeKCMDjfl_NelQNNFAuwagRXASieLn_zksm9oD15edku14tDGavXh1Lg-si7Oixtow_sKi2IukwrVVz52c9uxa/?imgmax=800&quot; width=&quot;244&quot; height=&quot;95&quot; /&gt;&lt;/a&gt;     &lt;br /&gt;3. 定義G-SAL02 對該程式的『對非與使用者同部門產出資料處理』選項設為『4. 不同部門間, 不允許查詢/修改/刪除』    &lt;br /&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJrXMx89L-B3KHxjqJwkPg4ZxqxL2bBV7LHcmp3_MAv0V3WTXGFmWkKmmj19YhAJDXCc54dqEtZNBhjtD_xpNCRnb6JopahvAvvIk_x4U_T5e8B9FfDOCapN5GbW7kgjhh-cPrw6F5-yPt/s1600-h/image%5B5%5D.png&quot;&gt;&lt;img style=&quot;border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px&quot; title=&quot;image&quot; border=&quot;0&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhw_kFl7-0RgLB5V6YXqfK7OOK_bVhZe_q2uX14li5UcwD57PP7wTMNeP6v69CNPy5mGQGR-xcLVnvBjwS7bd7osjbZScuw-6t2-zLNarlxQZDQN-ONQFu1AcTrCq5tal6MAzViX_3nKq1R/?imgmax=800&quot; width=&quot;244&quot; height=&quot;95&quot; /&gt;&lt;/a&gt;&amp;#160; &lt;br /&gt;4. 設定業務一部與業務二部為相關群組﹝注意：部門與權限群組是兩種不同的概念，其代號也不一定會相同，但我們仍能併行使用﹞    &lt;br /&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQ_5FNas0PxCYlCXqsI3dT2VufhbK_kLxB7XoWOdzmm_jTCyni4qdrApycGb3s5wfxhN0H50o4IYO6JlHcXpwLdONYQDmnwB3WVORhg04jyx3oMcBvHkFbfLSb9zjSbYJAzXnxm_QRgLOP/s1600-h/image%5B8%5D.png&quot;&gt;&lt;img style=&quot;border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px&quot; title=&quot;image&quot; border=&quot;0&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXKy7wBNghCjgCQSJ5clYbb_jZvfhwAlhIuvgtBalvNhAh7_xrFhetcpgWVrnC7jPYDxtkiLHnKtyeewBL5VfmCzetrDz_DNeJbBgqdDicv7gGbA4KMxbpsIVavMfrnRBgquuuelDFu6ix/?imgmax=800&quot; width=&quot;244&quot; height=&quot;128&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;大多數同學若是未執行步驟一，而將業務一部及二部歸屬於同一權限群組下時，則下方『相關部門』的設定會流於形式無作用。&lt;/p&gt;  &lt;p&gt;另外需注意的是，當新增群組或分割群組時，p_zx的資料也應該隨之進行調整。&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;同場加映：若改情境為：兩部門都不能互看訂單，但兩部門的主管可以互看，該如何調整？&lt;/p&gt;  &lt;p&gt;理論上應是和以上的作法類似，但流程2.3.均需設定為『4. 不同部門間, 不允許查詢/修改/刪除，然後將部門主管設定為管理人應該要可以達到目的。但目前TIPTOP此種作法是不work的，必需把主管再獨立出來一個權限群組，並設定『5. 僅相關部門群組間允許查詢/修改』後始能成功，應該是系統的問題。&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://hjwang65.blogspot.com/feeds/6695175421952081763/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://hjwang65.blogspot.com/2010/08/tiptop.html#comment-form' title='3 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047380358878843505/posts/default/6695175421952081763'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047380358878843505/posts/default/6695175421952081763'/><link rel='alternate' type='text/html' href='http://hjwang65.blogspot.com/2010/08/tiptop.html' title='TIPTOP案例探討-不同部門間的表單資料分享設定方式'/><author><name>Alex Wang</name><uri>http://www.blogger.com/profile/04291476421106219435</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlkO013G-p0pn-2-cpGO63dYyqwIirgYFNwmb4e2-tpADh9Qaj9R-3sXZHceObAVeWJvT3FBSXaaoJ80V-NLqI2eWRTZ9sV7fDKgJXWrx39A3WG3TWH7Nre2EWkV4LErU/s220/DSC_9649.JPG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbDZwKf1Y-7i_THeBrhon4_YywTrJ4F460Ulw_W0LVkmJm1S8VqMtxwMWeKCMDjfl_NelQNNFAuwagRXASieLn_zksm9oD15edku14tDGavXh1Lg-si7Oixtow_sKi2IukwrVVz52c9uxa/s72-c?imgmax=800" height="72" width="72"/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4047380358878843505.post-2345107858603114465</id><published>2010-04-19T10:00:00.000+08:00</published><updated>2010-04-19T23:43:03.464+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="說好的Genero Report呢?"/><title type='text'>說好的Genero Report呢? (01) - 千呼萬喚</title><content type='html'>&lt;p&gt;其實這工具早就出了，不是現在才『始出來』。只是第一版可能要多加驗證的情況下，不太好意思馬上拿來用。   &lt;br /&gt;    &lt;br /&gt;現在已經進入了第二版，是時候見客了。    &lt;br /&gt;    &lt;br /&gt;以下簡介部份，看官們可以在這裡 (&lt;a title=&quot;http://www.4js.com/exclude/en/tmpl4/blocs/files/Genero_rw_presentation.pdf&quot; href=&quot;http://www.4js.com/exclude/en/tmpl4/blocs/files/Genero_rw_presentation.pdf&quot;&gt;http://www.4js.com/exclude/en/tmpl4/blocs/files/Genero_rw_presentation.pdf&lt;/a&gt;) 找到原文出處。    &lt;br /&gt;    &lt;br /&gt;整體來說，Genero在它的報表工具上引入了多種程式工具來協助它達到多項功能。如達到無段縮放﹝不含圖檔﹞，採用SVG Report Format；達到最大化的樣版應用，採用XML內崁RTL Expression(Rich Transfer Language Expression)；可與Genero 4GL完整整合；可做Data Model控管…等。    &lt;br /&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7DjIVKjAyvTklQS96vghnlw7CrAgZFJIJNXVXxqq82dcoPS53tv92AOWJwAGli_WPC6GEDHpBCP8efFR_utSdk_nxatwB2p0vYTRE3CTZ6NRBkt5_1wwitwlvxIt4jmt0WuQIgSmjBdGH/s1600-h/image%5B7%5D.png&quot;&gt;&lt;img style=&quot;border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px&quot; title=&quot;image&quot; border=&quot;0&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0vpjCakveh9ChknGeCZNuSbBYsaOLsS9pAbFAKc808mzSE9qt4D0zR4_qGd3HTWmuIOje8IPx1T0aRdJg692xVQzBQ8jrpji_K-lP3kYPErwzE_IyVOca_9s1kjqGZt8GZbFGCeuIrhvV/?imgmax=800&quot; width=&quot;267&quot; height=&quot;295&quot; /&gt;&lt;/a&gt;     &lt;br /&gt;Genero Report Sample    &lt;br /&gt;    &lt;br /&gt;在工具上，Genero Report須安裝Report Engine﹝或稱Report Writer，GRE/GRW﹞，使用者則是透過GDC內建的Genero Report Viewer﹝GRV﹞來查看報表。在開發上，則使用Genero Report Designer﹝GRD，可獨立安裝或直接使用Genero Studio內建版本﹞。    &lt;br /&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQ_pS23SQSxf51Z_Kw3PhDbf35SfTmhG-WCHOxGScy70vBBQ3tU8p2P1iOxsBJGXumGIdBWd88viys0dcb5RcbSihhtg2yzu7fRY7o8QAmVJvDCBb1qxdDEUE5NehU_C1A5NQYCnmVGDo0/s1600-h/image%5B6%5D.png&quot;&gt;&lt;img style=&quot;border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px&quot; title=&quot;image&quot; border=&quot;0&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNV_VB5vLmYVy54EB-mm3pUFrDCWGb7wAfhxf0B-xP-1OObbeUld5y0zDKzx81jOknE5qfoxYR9rw-2mS_EOnIdm9xwx2U_UF73ucCq5zLdFeci0r6MDQsZBTp1VGqH3uc-bAoB7HUppkp/?imgmax=800&quot; width=&quot;319&quot; height=&quot;168&quot; /&gt;&lt;/a&gt;&amp;#160; &lt;br /&gt;上圖就是原廠提出的概略示意圖    &lt;br /&gt;    &lt;br /&gt;利用此工具，可以作出圖文並茂的報表    &lt;br /&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3a-mSzZG93i1wouC7BnPRbxjFcH9tBwOwXz5VkPGN_eQzmUcUEwrk-iR6T88Tiz5GVM9jHvA7KTeSo4Z8jCHZPS4micoCMO1pZXk2WKXQbxMOCD5t4uclG2gQTb6Wpf96Ws6V6gmfq1KP/s1600-h/image%5B11%5D.png&quot;&gt;&lt;img style=&quot;border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px&quot; title=&quot;image&quot; border=&quot;0&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhM8xk1XNDE2uE76q6MgAYc_vEaxDq3b-CS-wZA3TI8Zu0hRbOorKIqXVlbtm6DUjopvDtznZ8Oo1ZHeP9nRRsH1q_gs_eRwo-gtEp1_LTzBKKcBMklV_UvjNr63y8mvOhURGlH6FiXl8zB/?imgmax=800&quot; width=&quot;220&quot; height=&quot;305&quot; /&gt;&lt;/a&gt;     &lt;br /&gt;開發Genero Report也非常簡單，若搭配TIPTOP GP的工具，除了『如虎添翼』外可能也想不到更好的形容詞了。    &lt;br /&gt;    &lt;br /&gt;怎麼開發？請持續關注blog的探討唷。&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://hjwang65.blogspot.com/feeds/2345107858603114465/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://hjwang65.blogspot.com/2010/04/genero-report-01.html#comment-form' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047380358878843505/posts/default/2345107858603114465'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047380358878843505/posts/default/2345107858603114465'/><link rel='alternate' type='text/html' href='http://hjwang65.blogspot.com/2010/04/genero-report-01.html' title='說好的Genero Report呢? (01) - 千呼萬喚'/><author><name>Alex Wang</name><uri>http://www.blogger.com/profile/04291476421106219435</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlkO013G-p0pn-2-cpGO63dYyqwIirgYFNwmb4e2-tpADh9Qaj9R-3sXZHceObAVeWJvT3FBSXaaoJ80V-NLqI2eWRTZ9sV7fDKgJXWrx39A3WG3TWH7Nre2EWkV4LErU/s220/DSC_9649.JPG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0vpjCakveh9ChknGeCZNuSbBYsaOLsS9pAbFAKc808mzSE9qt4D0zR4_qGd3HTWmuIOje8IPx1T0aRdJg692xVQzBQ8jrpji_K-lP3kYPErwzE_IyVOca_9s1kjqGZt8GZbFGCeuIrhvV/s72-c?imgmax=800" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4047380358878843505.post-100702021624783546</id><published>2010-04-14T12:14:00.001+08:00</published><updated>2010-04-14T12:14:09.864+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="TIPTOP案例探討"/><title type='text'>TIPTOP案例探討 - 惡搞TIPTOP之01 - 印QR code(二維條碼)</title><content type='html'>&lt;p&gt;免責聲明之一：Google大神呀，HJ只是在推廣您的服務，若造成流量爆增，使用率增加，這都是工具太好用的緣故…   &lt;br /&gt;免責聲明之二：各位看官啊，哪天圖出不來，這是可能是因為Google神需要點香油錢，請記得搜尋一下市場行情價…    &lt;br /&gt;    &lt;br /&gt;有圖有真相，先看一下。以aimi100來做範例，QR code儲存的是料號的編號。    &lt;br /&gt;    &lt;br /&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxFZPFwF7AKq9atXjCpWz_veTWe40bW-Rjk5ZmjeBBCCfjmpYl-VQZlVpdzTaXZ2cP3rCG1fnNmjYYQjXWZZZgwWdXNQtzeLgQklgaEpPaj3rhhDNPpOpVF85zBbrs6RTdZZxZt_EqFBT_/s1600-h/image%5B3%5D.png&quot;&gt;&lt;img style=&quot;border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px&quot; title=&quot;image&quot; border=&quot;0&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcY57LM9cVuEOT8cm7mntUCsa1v_vbprZOTFd6Md9hc_6tklxMKP6gwdlDjZr4_hOCrV3mPUAg6F6QwM1WhkIzPOoN9NOnJnbYZ76K1XbR3nZby-4P-bQUoRxz7b2doNzA4oTGPtvuZ24B/?imgmax=800&quot; width=&quot;342&quot; height=&quot;200&quot; /&gt;&lt;/a&gt;&amp;#160; &lt;br /&gt;做法很簡單，Google已經把QR code以網頁圖片的方式表現，只要將資料以URL參數的方式傳入，它就會回傳一張圖片給你。原始說明檔可以參照這裡：&lt;a title=&quot;http://ithelp.ithome.com.tw/question/10029549&quot; href=&quot;http://ithelp.ithome.com.tw/question/10029549&quot;&gt;http://ithelp.ithome.com.tw/question/10029549&lt;/a&gt;    &lt;br /&gt;    &lt;br /&gt;對照到TIPTOP GP裡面的做法：    &lt;br /&gt;1. 在4fd內設定一個FormFieldImage﹝動態變換的圖片﹞，auotscale等屬性視需要調整。    &lt;br /&gt;2. 在4gl的_show()段落裡新增一個STRING，並指定網址+內容給這個圖片就可以了。&lt;/p&gt;  &lt;table border=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;2&quot; width=&quot;400&quot;&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign=&quot;top&quot; width=&quot;400&quot;&gt;         &lt;p&gt;FUNCTION xxx_show( )           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;原有程式碼&amp;gt;            &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DEFINE ls_qrcode&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; STRING            &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;原有程式碼&amp;gt;            &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; LET ls_qrcode = &amp;quot;&lt;a href=&quot;http://chart.apis.google.com/chart?cht=qr&amp;amp;chs=100x100&amp;amp;chld=M&amp;amp;chl=&amp;quot;,g_ima.ima01&quot;&gt;http://chart.apis.google.com/chart?cht=qr&amp;amp;chs=100x100&amp;amp;chld=M&amp;amp;chl=&amp;quot;,g_ima.ima01&lt;/a&gt; CLIPPED            &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DISPLAY ls_qrcode TO formonly.QRcode            &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;原有程式碼&amp;gt;            &lt;br /&gt;END FUNCTION&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;br /&gt;使用愉快…  </content><link rel='replies' type='application/atom+xml' href='http://hjwang65.blogspot.com/feeds/100702021624783546/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://hjwang65.blogspot.com/2010/04/tiptop-tiptop01-qr-code.html#comment-form' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047380358878843505/posts/default/100702021624783546'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047380358878843505/posts/default/100702021624783546'/><link rel='alternate' type='text/html' href='http://hjwang65.blogspot.com/2010/04/tiptop-tiptop01-qr-code.html' title='TIPTOP案例探討 - 惡搞TIPTOP之01 - 印QR code(二維條碼)'/><author><name>Alex Wang</name><uri>http://www.blogger.com/profile/04291476421106219435</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlkO013G-p0pn-2-cpGO63dYyqwIirgYFNwmb4e2-tpADh9Qaj9R-3sXZHceObAVeWJvT3FBSXaaoJ80V-NLqI2eWRTZ9sV7fDKgJXWrx39A3WG3TWH7Nre2EWkV4LErU/s220/DSC_9649.JPG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcY57LM9cVuEOT8cm7mntUCsa1v_vbprZOTFd6Md9hc_6tklxMKP6gwdlDjZr4_hOCrV3mPUAg6F6QwM1WhkIzPOoN9NOnJnbYZ76K1XbR3nZby-4P-bQUoRxz7b2doNzA4oTGPtvuZ24B/s72-c?imgmax=800" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4047380358878843505.post-604400634085908565</id><published>2010-03-08T11:33:00.003+08:00</published><updated>2010-03-08T11:53:18.924+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Genero技轉沒教的事"/><title type='text'>Genero技轉沒教的事(08)-Genero的多語言機制</title><content type='html'>&lt;p&gt;Genero本身其實是有自己的多語言機制，這個機制也和TIPTOP GP走的路不相同。相信各位對TIPTOP GP多語機制都已經非常瞭解﹝？﹞了，所以本篇先略過不談，專心focus在Genero機制上。&lt;/p&gt;&lt;p&gt;『Genero有這種機制為啥TIPTOP GP不用？』，原因上是在開發TIPTOP GP時這種解法還沒有well develop，而它已經有一定成熟度時，TIPTOP GP已是穩定的產品，就沒有再考量調整底層架構來應用它了。&lt;/p&gt;&lt;p&gt;因此，以下和TIPTOP GP5.2﹝含﹞之前的版本，都沒有任何關係唷！&lt;/p&gt;&lt;p&gt;Genero在程式執行的過程中，只要有吃到resource file﹝4ad,4st,4tb﹞及42m，42f等處，都可以『自行』尋找是否有要做『語言轉換』的地方，這樣的機制可以協助partner快速的開發出『在地版』的程式﹝請注意，沒有多少程式開發商是像TIPTOP GP這樣一次附上--如果有買的話--多種語言包，讓END User作線上切換的﹞。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;看一下怎麼讓42m進行轉換&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;要讓42m可以進行轉換，就得要在程式內加『%』或寫『LSTR』function：&lt;/p&gt;&lt;table border=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;2&quot; width=&quot;400&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;       &lt;td valign=&quot;top&quot; width=&quot;400&quot;&gt;         &lt;pre&gt;&lt;code&gt;01&lt;/code&gt; &lt;tt&gt;MAIN&lt;/tt&gt;
&lt;code&gt;02&lt;/code&gt;   &lt;tt&gt;DISPLAY &lt;/tt&gt;%&amp;quot;common.helloworld&amp;quot;
&lt;code&gt;03&lt;/code&gt; &lt;tt&gt;END MAIN
&lt;/tt&gt;&lt;tt&gt;或
&lt;/tt&gt;&lt;code&gt;01&lt;/code&gt; &lt;tt&gt;MAIN&lt;/tt&gt;
&lt;code&gt;02&lt;/code&gt;   &lt;tt&gt;DISPLAY LSTR(&lt;/tt&gt;&amp;quot;common.helloworld&amp;quot;)
&lt;code&gt;03&lt;/code&gt; &lt;tt&gt;END MAIN&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;原來作DISPLAY的字串，就會轉為字串代碼，到『訊息字串檔﹝42s﹞』內找出對應的在地字串，顯示出來。&lt;/p&gt;&lt;p&gt;而42f也是在per的『TEXT』屬性前加上『%』就可以了，例如：&lt;/p&gt;&lt;tt&gt;LABEL &lt;/tt&gt;lab01 : &lt;tt&gt;TEXT&lt;/tt&gt;=%&amp;quot;myform.label01&amp;quot;;&lt;br /&gt;
&lt;p&gt;如果您是用Genero Studio的4fd來編輯的，或開發其他資源檔﹝4st, 4tb, 4ad﹞，那就是在property內勾選使用42s就可以了。使用上更簡單。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;接下來談42s怎麼作&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;首先必需用文字編輯器來編一個文字檔，附檔名請用『.str』﹝規定﹞，內容如下：&lt;/p&gt;&lt;table border=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;2&quot; width=&quot;400&quot;&gt;&lt;tbody&gt;
&lt;tr&gt; &lt;td valign=&quot;top&quot; width=&quot;400&quot;&gt;&amp;quot;id001&amp;quot; = &amp;quot;Some text&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;common.helloworld&amp;quot; = &amp;quot;哈囉，世界！&amp;quot;&lt;/td&gt; &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;產生此檔後，使用『fglmkstr&amp;#160; 文字檔檔名』﹝可以不用含入.str﹞，接著就會產出編譯完成的『42s』檔。&lt;/p&gt;&lt;p&gt;最後，請把此檔放在『FGLRESOURCEPATH』有指到的路徑下﹝或把現行42s所在路徑加入此環境變數﹞，這樣在執行時就會叫用到42s檔了。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;差異和結語在下面&lt;br /&gt;
&lt;/strong&gt;如果要做N種語言的42s該怎麼做？嗯，那就要準備N種的str再轉換成42s囉，另外若要節省環境變數的記憶空間或是加快查找效率，那麼在進行『線上語系切換』時就又要一起變動『FGLRESOURCEPATH』環境變數…等，會不會比較麻煩？各位自由心證啦…&lt;/p&gt;&lt;p&gt;總上所述，希望各位也撥空對此機制有概略瞭解，有昭一日﹝TIPTOP GP？﹞就會有應用的機會了…&lt;/p&gt;&lt;p&gt;做出來的範例畫面呢？啊…偷懶沒做…&lt;strong&gt;當大家的作業吧…&lt;/strong&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://hjwang65.blogspot.com/feeds/604400634085908565/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://hjwang65.blogspot.com/2010/03/genero08-genero.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047380358878843505/posts/default/604400634085908565'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047380358878843505/posts/default/604400634085908565'/><link rel='alternate' type='text/html' href='http://hjwang65.blogspot.com/2010/03/genero08-genero.html' title='Genero技轉沒教的事(08)-Genero的多語言機制'/><author><name>Alex Wang</name><uri>http://www.blogger.com/profile/04291476421106219435</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlkO013G-p0pn-2-cpGO63dYyqwIirgYFNwmb4e2-tpADh9Qaj9R-3sXZHceObAVeWJvT3FBSXaaoJ80V-NLqI2eWRTZ9sV7fDKgJXWrx39A3WG3TWH7Nre2EWkV4LErU/s220/DSC_9649.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4047380358878843505.post-6177480367873689412</id><published>2010-03-08T10:16:00.001+08:00</published><updated>2010-03-08T10:16:05.670+08:00</updated><title type='text'>網誌長草了</title><content type='html'>&lt;p&gt;居然可以撐一個季度沒有寫東西，看來有需要在開春時來整整地，看看能不能長出一些有用的作物。&lt;/p&gt;  &lt;p&gt;TIPTOP GP5.2千呼萬喚終於要出來見人了，但美中不足的是只出了計畫中的一半：ORACLE版。Windows平台的solution呢？目前還在保溫箱呢，他得要等到ORACLE大哥可以自己走路了才有離開保溫箱的機會，這是為了保護爸爸媽媽們不要被操到掛而下的不得已決定…原諒我們吧，小baby…&lt;/p&gt;  &lt;p&gt;2010來說，工作變多了，外界的引誘也更多了：但弔詭的是內部來的外推力度也加大了﹝No more M..No more P..But more Requests, Asks, Needings………﹞，該怎麼辦呢？這就像去了家老鄰居開牛肉麵店時老板說你愛吃不吃，對面西堤卻向你說：來吧，今天吃免錢還帶贈品唷…&lt;/p&gt;  &lt;p&gt;有空給些好建議吧…&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://hjwang65.blogspot.com/feeds/6177480367873689412/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://hjwang65.blogspot.com/2010/03/blog-post.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047380358878843505/posts/default/6177480367873689412'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047380358878843505/posts/default/6177480367873689412'/><link rel='alternate' type='text/html' href='http://hjwang65.blogspot.com/2010/03/blog-post.html' title='網誌長草了'/><author><name>Alex Wang</name><uri>http://www.blogger.com/profile/04291476421106219435</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlkO013G-p0pn-2-cpGO63dYyqwIirgYFNwmb4e2-tpADh9Qaj9R-3sXZHceObAVeWJvT3FBSXaaoJ80V-NLqI2eWRTZ9sV7fDKgJXWrx39A3WG3TWH7Nre2EWkV4LErU/s220/DSC_9649.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4047380358878843505.post-3609944712419247699</id><published>2009-12-24T15:36:00.001+08:00</published><updated>2009-12-24T15:36:37.979+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Genero技轉沒教的事"/><title type='text'>Genero技轉沒教的事(07)-異質資料庫使用，以SQLite為例</title><content type='html'>&lt;p&gt;Genero語言有一些還不錯的功能，其中個人覺得算是不錯用的是它跨異質資料庫的能力。&lt;/p&gt;  &lt;p&gt;Genero在後台預先準備了多種資料庫的連接器﹝以下稱dbdrivers﹞，除GeneroDB﹝FourJS自行開發的資料庫系統﹞、IBM DB2、ORACLE、MS SQL Server、PostgreSQL、MySQL及Sybase﹝只有到7.x﹞。在Genero 2.21.x版本後，更增加了SQLite3，也把MS SQL Server拆成了Windows平台的SQL Native Client及UNIX平台的FreeTDS、EasySoft等三種連結方式，在使各式平台都能選到自己想要的資料庫系統。&lt;/p&gt;  &lt;p&gt;在程式內，當然也沒有限制只能連結『一種』資料庫。&lt;/p&gt;  &lt;p&gt;例如：我可以撰寫一支作業，同時介接ORACLE及My SQL，從ORACLE端讀入作處理完後拋入My SQL的資料庫內。或讀取可離線裝置上的SQLite資料，將之處理後匯回大型資料倉儲內﹝如ORACLE等﹞。&lt;/p&gt;  &lt;p&gt;既然提到了SQLite，也就來看一下它在Genero內怎麼設定。&lt;/p&gt;  &lt;p&gt;SQLite是一套非常簡單的資料庫系統，核心檔案約1MB大小﹝Windows平台上一定要裝SQLite3.exe及SQLite3.dll，以讓Genero認得﹞，操作介面可以考慮使用SQLiteSPY這套免安裝軟體。&lt;/p&gt;  &lt;p&gt;SQLite3開資料庫：&lt;/p&gt;  &lt;p&gt;SQLite3 paitrack.db&lt;/p&gt;  &lt;p&gt;FGLPROFILE設定：&lt;/p&gt;  &lt;table border=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;2&quot; width=&quot;400&quot;&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign=&quot;top&quot; width=&quot;400&quot;&gt;         &lt;p&gt;dbi.database.paitrack.source = &amp;quot;C:\\paitrack\\paitrack.db&amp;quot;           &lt;br /&gt;dbi.database.paitrack.driver = &amp;quot;dbmsqt3xx&amp;quot;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;接著就開始寫程式了。&lt;/p&gt;  &lt;p&gt;對，它沒得做fgldbsch﹝r.s2﹞，所以只能用CONNECT TO “paitrack” 的方式進行連接。如果在PDA﹝WINDOWS MOBILE or ANORID﹞上可執行Genero程式的話，這個就會非常好用。&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://hjwang65.blogspot.com/feeds/3609944712419247699/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://hjwang65.blogspot.com/2009/12/genero07-sqlite.html#comment-form' title='18 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047380358878843505/posts/default/3609944712419247699'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047380358878843505/posts/default/3609944712419247699'/><link rel='alternate' type='text/html' href='http://hjwang65.blogspot.com/2009/12/genero07-sqlite.html' title='Genero技轉沒教的事(07)-異質資料庫使用，以SQLite為例'/><author><name>Alex Wang</name><uri>http://www.blogger.com/profile/04291476421106219435</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlkO013G-p0pn-2-cpGO63dYyqwIirgYFNwmb4e2-tpADh9Qaj9R-3sXZHceObAVeWJvT3FBSXaaoJ80V-NLqI2eWRTZ9sV7fDKgJXWrx39A3WG3TWH7Nre2EWkV4LErU/s220/DSC_9649.JPG'/></author><thr:total>18</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4047380358878843505.post-6047076825165746462</id><published>2009-11-18T15:23:00.002+08:00</published><updated>2009-11-18T15:25:07.494+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Genero技轉沒教的事"/><title type='text'>Genero技轉沒教的事(06)-DEBUG使用FGLSQLDEBUG</title><content type='html'>&lt;p&gt;有人問說：哪來那麼多技轉沒教的事？但，確實很多。主要是Genero它也是一個完整的程式語言，光用兩天的時間，除了講不了太多深入的東西，學員也不容易全部可以活用、應用，甚至『一目十行，過目即忘』，因此只好把遺珠之處，匯整到BLOG內，供各位慢慢參考。&lt;/p&gt;&lt;p&gt;言歸正傳。&lt;/p&gt;&lt;p&gt;程式開發完成後就是測試，測試程式有許多方法，包含使用Debug Tool，或自己寫display來顯示，本篇說明的是使用FGLSQLDEBUG環境變數來作Debug。&lt;/p&gt;&lt;p&gt;當程式是陣亡在某個深層的function或library時，若用debug tool要追入是一件麻煩的事﹝對我來說是﹞，若又不確認發生位置時，可以考慮使用FGLSQLDEBUG環境變數。&lt;/p&gt;&lt;p&gt;執行程式前export FGLSQLDEBUG=n 再執行程式就可以了﹝Windows使用set FGLSQLDEBUG=n；WEB Mode請打消您的念頭﹞，執行的過程會顯示在背景畫面上，參數n 值如下：&lt;/p&gt;&lt;p&gt;n=1，此時會將翻譯過的SQL statment﹝含程式所在module及行數﹞、SQL code，傳入傳出參數依照執行的順序，一個一個列出&lt;/p&gt;&lt;p&gt;n=2，上項外再增加ODI driver訊息，以xxx.c(2)表示﹝xxx表資料庫代碼，如ORA/MSV/DB2…﹞&lt;/p&gt;&lt;p&gt;n=3，上項外再增加db connect driver訊息，以xxx.c(3)表示&lt;/p&gt;&lt;p&gt;n=4 - 10，上項外再增加ODI driver WARING訊息，以xxx.c(4)表示&lt;/p&gt;&lt;p&gt;TIPTOP GP利用FGLSQLDEBUG環境變數做r.r2d工具，主要即是設定成FGLSQLDEBUG=3並將訊息就地導成log檔，做為判定問題之參考依據。&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://hjwang65.blogspot.com/feeds/6047076825165746462/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://hjwang65.blogspot.com/2009/11/genero07-debugfglsqldebug.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047380358878843505/posts/default/6047076825165746462'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047380358878843505/posts/default/6047076825165746462'/><link rel='alternate' type='text/html' href='http://hjwang65.blogspot.com/2009/11/genero07-debugfglsqldebug.html' title='Genero技轉沒教的事(06)-DEBUG使用FGLSQLDEBUG'/><author><name>Alex Wang</name><uri>http://www.blogger.com/profile/04291476421106219435</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlkO013G-p0pn-2-cpGO63dYyqwIirgYFNwmb4e2-tpADh9Qaj9R-3sXZHceObAVeWJvT3FBSXaaoJ80V-NLqI2eWRTZ9sV7fDKgJXWrx39A3WG3TWH7Nre2EWkV4LErU/s220/DSC_9649.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4047380358878843505.post-727538285346676546</id><published>2009-11-18T12:04:00.001+08:00</published><updated>2009-11-18T12:05:35.634+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Genero技轉沒教的事"/><title type='text'>Genero技轉沒教的事(05)-探究Genero需用環境變數</title><content type='html'>&lt;p&gt;先來個版權聲明：以下有部份內容是從FourJS的Genero軟體線上說明文件節錄來的，再加上部份開發心得整合成這份文件。&lt;/p&gt;  &lt;p&gt;Genero在程式運作時，﹝當然，走極簡風的小程式除外；﹞須要一些系統的環境變數﹝簡體中文稱：環境變量﹞來配合，以下挑選幾個重要的來說明用途；如果家裡的系統有些異常，請記得要檢查Users’ Profile裡面設定的環境變數值、及執行中這些環境變數是否遭到異動。&lt;/p&gt;  &lt;p&gt;註：以下用『%Genero%』表示Genero安裝路徑&lt;/p&gt;  &lt;p&gt;OS Environment﹝作業系統端﹞&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;PATH：廢話不多說，各位基礎應該知道的事。若程式執行操作遭到莫名無解的問題，請把『%Genero%\bin、%Genero\lib、%Genero%\dbdrivers』加入PATH。&lt;/li&gt;    &lt;li&gt;LD_LIBRARY_PATH：UNIX專用環境變數，在設定shared library之用，請特別注意在64bit環境下，因為會與32混用，所以『LD_LIBRARY_PATH』是設定給32bit，『LD_LIBRARY_PATH_64』是設定給64bit的。﹝請特別小心Genero安裝的版本，使用ORACLE資料庫的要把ORACLE Library設定進來，如/usr/oracle/9i/lib﹞。&lt;/li&gt;    &lt;li&gt;LANG：Genero文件上寫『使用LC_ALL，若沒有才用LANG』，但在TIPTOP GP內不使用LC_ALL，都使用LANG。此為註記使用語系，如：BIG5兩岸版為zh_TW.BIG5，UNICODE國際版為en_US.UTF8﹝依UNIX廠牌不同有些微差異，請以『locale -a』確認您系統正確字樣，Windows國際版一律定為 『*.fglutf8』﹞。&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Genero Environment﹝Genero端，Genero/INFORMIX創來用的﹞&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;DBDATE：程式在顯示日期時使用的格式，一般常用『Y2MD/』﹝即：09/12/31，兩碼年，斜線分隔﹞；或『Y4MD/』﹝即：2009/12/31，四碼年，斜線分隔﹞；位置可調動如『MDY4/』；分隔符號可用 / – , . 及不表示﹝用0，如 MDY40﹞&lt;/li&gt;    &lt;li&gt;DBDELIMITER：在使用Genero內建load / unload指令時，以此環境變數指定字 / 字元做為欄位分隔符號。為避免衝碼，TIPTOP GP將此符號設為Control-A，因此若直接查看可能會看到亂碼。&lt;/li&gt;    &lt;li&gt;DBPATH：設定資源檔﹝TIPTOP GP只有畫面檔算﹞查找路徑變數，在純Genero環境﹝沒有INFORMIX DB即為純Genero環境，不要問我ORACLE / SQL Server算不算，沒說就不算，別再問了﹞可以用FGLRESOURCEPATH相互替代。TIPTOP GP應設定『%TOP%:%CUST%』，讓系統到這兩個目錄下，搭配程式所寫的『OPEN WINDOWS …WITH FORM “xxx/42f/xxxxxxx” 』就可以開出畫面。&lt;/li&gt;    &lt;li&gt;FGLGUI：圖型介面為1，TIPTOP GP這裡永遠是 1，其他值會讓程式開不起來。&lt;/li&gt;    &lt;li&gt;FGLDIR：設定%Genero%用，一般系統會裝一組Runtime，一組compiler用，作編譯程式時會由TIPTOP GP自動切換&lt;/li&gt;    &lt;li&gt;FGLDBPATH：設定database dump出來的 schema file (*.sch)所存放路徑﹝單一路徑﹞，在編譯時需用。&lt;/li&gt;    &lt;li&gt;FGLIMAGEPATH：若程式或畫面檔，或TOOLBAR等處需要使用圖檔 /icon檔來增加易讀易用性，可以將圖片放到FGLIMAGEPATH所指定的路徑下，在程式撰寫時就直接指定開啟的檔名就可以了。反之若執行時畫面上的圖檔都變紅色『X』，則請檢查是否有設定此環境變數，又，在此路徑下是否有該檔存在。&lt;/li&gt;    &lt;li&gt;FGLLDPATH：搜尋42m用的PATH。請記得42r裡面是沒有註記路徑的，那它去哪裡找出42m所在？就是靠FGLLDPATH。反之，若『連結link』時錯誤訊息是找不到42m的話，除檢查是否已正常產生，也要檢查FGLLDPATH是否沒註記到。&lt;/li&gt;    &lt;li&gt;FGLSERVER：指GDC的路徑，也就是client PC端GDC的ip+port，如『127.0.0.1』指本機的6400埠﹝預設﹞，若在PC端看到的GDC上註記：port 6405，則請改成『127.0.0.1:5』﹝offset為5，加起來 6400+5=6405﹞，若在此位址上沒有獲得回應，則執行時會顯示『FORMS statement error number -8086.』。&lt;/li&gt;    &lt;li&gt;FGLPROFILE：啟動fglrun時要讀入的設定檔，一般會註記資料庫連線資料﹝如db resource，user name，login password﹞，若這個環境變數沒設，就『只』會讀取 %Genero%/etc/fglprofile﹝就算設了也會讀，若有重覆設定，以FGLPROFILE指定檔案內容為準﹞。&lt;/li&gt;    &lt;li&gt;FGLSQLDEBUG：專章再探討。&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;希望以上的說明能對維護系統有所助益。&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://hjwang65.blogspot.com/feeds/727538285346676546/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://hjwang65.blogspot.com/2009/11/genero05-genero.html#comment-form' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047380358878843505/posts/default/727538285346676546'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047380358878843505/posts/default/727538285346676546'/><link rel='alternate' type='text/html' href='http://hjwang65.blogspot.com/2009/11/genero05-genero.html' title='Genero技轉沒教的事(05)-探究Genero需用環境變數'/><author><name>Alex Wang</name><uri>http://www.blogger.com/profile/04291476421106219435</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlkO013G-p0pn-2-cpGO63dYyqwIirgYFNwmb4e2-tpADh9Qaj9R-3sXZHceObAVeWJvT3FBSXaaoJ80V-NLqI2eWRTZ9sV7fDKgJXWrx39A3WG3TWH7Nre2EWkV4LErU/s220/DSC_9649.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4047380358878843505.post-7033646878759451132</id><published>2009-10-13T17:07:00.001+08:00</published><updated>2009-10-13T17:07:26.512+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="TIPTOP案例探討"/><title type='text'>TIPTOP案例探討 - 我的ACTION寫在sub或lib裡面，沒有轉換成中文?</title><content type='html'>&lt;p&gt;TIPTOP GP從1.0版本開始，就把action的名稱代換交給4ad檔來作了﹝原始的TIPTOP BDL版本是在程式裡寫不同語言別的MENU來達到的﹞，因此，如果希望ACTION名稱能在執行時被轉換以『在地語言』顯示，就要瞭解一下4ad的總體架構。&lt;/p&gt;  &lt;p&gt;TIPTOP程式執行起來時，對於4ad檔其實是讀兩份：   &lt;br /&gt;系統對目前語言別的4ad﹝$TOP/config/語言別/tiptop.4ad﹞    &lt;br /&gt;個別程式對目前語言別的4ad﹝$TOP/config/語言別/模組/程式.4ad﹞&lt;/p&gt;  &lt;p&gt;個別程式的4ad是由p_base_act產生而來，tiptop.4ad是手工調整&lt;/p&gt;  &lt;p&gt;由於有兩類的4ad，因此若發現客製﹝或標準﹞的ACTION名稱沒顯示想要補上，也有兩種作法：&lt;/p&gt;  &lt;p&gt;1.從個別的4ad補：由於寫在sub或lib中，系統是以42x的格式把它包起來，製做4ad時從p_link拉下來的4gl清單自然就不存在這個sub或lib程式，而產生時就沒有這個ACTION。&lt;/p&gt;  &lt;p&gt;可是別忘了p_base_act是允許自定ACTION NAME的。&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh04OE6suJnGFLJeKBo4iGgjoLWe8bY-LPfk_G2VnBrSCDSaGeinWQOIG8ZW-wtqolMpBJ-nh5Xh4BR2ECnk7g3rqVVmPx16k4JYJhNyKCG7863OIf2SfeSFvZei8wZtYzunCP6Zfic3c3F/s1600-h/image%5B2%5D.png&quot;&gt;&lt;img style=&quot;border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px&quot; title=&quot;image&quot; border=&quot;0&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg98q6xTK3XFoBXSgriJzOlEhlC_HWEXnUzUPqsMjoMATDp0re1qIE7PyOfOql5OdqkaKGNJtse7fMjsvTb3MhbAlyHRWfrhJSmT0l_PrKnimyumFbGEpe9Y9kk016Pc57NPc2vz2CLnUrn/?imgmax=800&quot; width=&quot;244&quot; height=&quot;140&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;因此，請在個別要用到的『主程式』內，『每個都訂一次』需要的ACTION名稱，再重新生成4ad就可以了。&lt;/p&gt;  &lt;p&gt;2.可是我的sub/lib是有2500支程式要用的，我總不能訂2500次吧？是的，當這招不好用時，那只好麻煩『手動調整tiptop.4ad』，自行加入action id在所有語言別項目下。&lt;/p&gt;  &lt;p&gt;但是，當使用2方法時，雖然操作簡易，可是每支程式都會讀入這個action資料﹝佔記憶空間﹞，操作上仍請自行衡量。&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://hjwang65.blogspot.com/feeds/7033646878759451132/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://hjwang65.blogspot.com/2009/10/tiptop-actionsublib.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047380358878843505/posts/default/7033646878759451132'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047380358878843505/posts/default/7033646878759451132'/><link rel='alternate' type='text/html' href='http://hjwang65.blogspot.com/2009/10/tiptop-actionsublib.html' title='TIPTOP案例探討 - 我的ACTION寫在sub或lib裡面，沒有轉換成中文?'/><author><name>Alex Wang</name><uri>http://www.blogger.com/profile/04291476421106219435</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlkO013G-p0pn-2-cpGO63dYyqwIirgYFNwmb4e2-tpADh9Qaj9R-3sXZHceObAVeWJvT3FBSXaaoJ80V-NLqI2eWRTZ9sV7fDKgJXWrx39A3WG3TWH7Nre2EWkV4LErU/s220/DSC_9649.JPG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg98q6xTK3XFoBXSgriJzOlEhlC_HWEXnUzUPqsMjoMATDp0re1qIE7PyOfOql5OdqkaKGNJtse7fMjsvTb3MhbAlyHRWfrhJSmT0l_PrKnimyumFbGEpe9Y9kk016Pc57NPc2vz2CLnUrn/s72-c?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4047380358878843505.post-5093858221749290367</id><published>2009-10-09T16:01:00.001+08:00</published><updated>2009-12-09T10:04:17.510+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Genero技轉沒教的事"/><title type='text'>Genero技轉沒教的事(04) – base.channel內read( )與readLine( )的差別</title><content type='html'>&lt;p&gt;適用版本：Genero 1.33開始都可以&lt;/p&gt;  &lt;p&gt;被這個小差異給絆住了兩三天，特別提出來和大家分享一下。&lt;/p&gt;  &lt;p&gt;前一篇中提到我們可以利用base.channel的library來做檔案的讀與寫，可是在閱讀線上文件時可以發現讀有read( )與readLine( )兩類function﹝同樣的寫也有write( )與writeLine( )﹞，差別是什麼？&lt;/p&gt;  &lt;p&gt;差別就在backslash﹝反斜線﹞上。&lt;/p&gt;  &lt;p&gt;read( )可以支援反斜線這個…特殊符號，但看樣子除了是把『\』吞掉之外，好像沒有其他的功能﹝其他功能是指\n \t之類的﹞，也就是說，當來源的source檔內含有反斜線時，用read( )讀入就會吃掉一半的反斜線量﹝原有2個剩1個，原有1個就不見；原有7個會剩3個…N mod 2的意思啦﹞。&lt;/p&gt;  &lt;p&gt;此時用readLine( ) 解就會正常。檔案有幾個backslash就讀進來幾個。&lt;/p&gt;  &lt;p&gt;write( ) / writeLine( ) 是寫入檔案用的，兩者的表現是一樣的：當來源是從readLine( )讀進來的含有backslash且沒有被處理過的部份，就會原樣輸出；要是程式內有再加工到backslash部份，則當做特殊符號處理。&lt;/p&gt;  &lt;p&gt;舉例來說，原始檔為&lt;/p&gt;  &lt;table border=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;2&quot; width=&quot;400&quot;&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign=&quot;top&quot; width=&quot;400&quot;&gt;         &lt;p&gt;\\\\\\\            &lt;br /&gt;\\\\             &lt;br /&gt;\\\\\\\\             &lt;br /&gt;\             &lt;br /&gt;\\             &lt;br /&gt;aaa\n\\bbb\nccc&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;經過read( )加write( )或 writeLine( )處理，都會變成&lt;/p&gt;  &lt;table border=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;2&quot; width=&quot;400&quot;&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign=&quot;top&quot; width=&quot;400&quot;&gt;         &lt;p&gt;\\\            &lt;br /&gt;\\             &lt;br /&gt;\\\\ &lt;/p&gt;          &lt;p&gt;\&lt;/p&gt; aaan\bbbnccc&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;而如果改用readLine( )，就會產出和原始檔一樣的東西。&lt;/p&gt;  &lt;p&gt;此時若在程式內手動輸出write(“aaa\nbbb\\ccc”)，則不管是write( )或writeLine( )都一樣會產出 “aaa(Enter換行) bbb\ccc” 的結果。&lt;/p&gt;  &lt;p&gt;以上請在撰寫轉檔程式時要注意到。&lt;/p&gt;  &lt;p&gt;補記：   &lt;br /&gt;這事經過幾天後，和FourJS(Genero原廠) 客服人員談起，發現這是channel default delimiter設定為『\』反斜符號導致。原先開發人員認為反斜符號用的少，所以取其作為default設定。因此若需要排除，則要先找一個檔案內未使用的ASCII字元﹝以^為例﹞，並在read前補上&lt;/p&gt;  &lt;p&gt;&lt;tt&gt;CALL&lt;/tt&gt; ch.setDelimiter(&amp;quot;^&amp;quot;)&lt;/p&gt;  &lt;p&gt;即可正常讀入整行。&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://hjwang65.blogspot.com/feeds/5093858221749290367/comments/default' title='張貼留言'/><link rel='replies' type='text/html' href='http://hjwang65.blogspot.com/2009/10/genero04-basechannelread-readline.html#comment-form' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4047380358878843505/posts/default/5093858221749290367'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4047380358878843505/posts/default/5093858221749290367'/><link rel='alternate' type='text/html' href='http://hjwang65.blogspot.com/2009/10/genero04-basechannelread-readline.html' title='Genero技轉沒教的事(04) – base.channel內read( )與readLine( )的差別'/><author><name>Alex Wang</name><uri>http://www.blogger.com/profile/04291476421106219435</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlkO013G-p0pn-2-cpGO63dYyqwIirgYFNwmb4e2-tpADh9Qaj9R-3sXZHceObAVeWJvT3FBSXaaoJ80V-NLqI2eWRTZ9sV7fDKgJXWrx39A3WG3TWH7Nre2EWkV4LErU/s220/DSC_9649.JPG'/></author><thr:total>0</thr:total></entry></feed>