4js.com 英文版 技術部落格

Ask Reuben

收錄 Reuben 關於 Genero 開發平台技術問答文章

所有文章 55
第 315 篇 · 2026-03-02
延伸版本支援(EVS)
延伸版本支援(EVS)允許客戶付費取得不在標準支援範圍內的版本支援。說明 "Current Plus Two" 政策的各種例外情況,以及版本 3.21 目前的支援狀態。
第 314 篇 · 2026-02-25
Informix 15
Informix 15 引入新的資料庫驅動程式(dbmifx_15),列定址從 4 bytes 改為 8 bytes。解釋兩個驅動程式的差異,以及升級時需注意的設定步驟和程式調整。
第 313 篇 · 2026-02-10
文件聊天機器人
4js.com 推出文件聊天機器人,讓開發者以自然語言查詢 Genero 技術文件。介紹如何有效使用,包括指定產品、加上版本資訊及驗證結果的技巧。
第 312 篇 · 2026-01-30
TagEdit 標籤元件
TagEdit 是 GBC 5.01.06 引入的自訂 widget,讓使用者以標籤(chip)形式輸入多個值。說明透過 Presentation Styles 實作及分號分隔資料格式的處理方法。
第 311 篇 · 2026-01-21
Prometheus 監控整合
Prometheus 監控是 Genero 6 的核心新功能。說明 Genero 產品如何作為 Prometheus Exporter,以及如何在 4GL 程式中使用 Counter、Gauge、Histogram 建立自訂指標。
第 310 篇 · 2026-01-08
前端交付策略(2026)
Front End Delivery 策略下,應部署最新版前端(6.00)搭配所有受支援的後端版本(4.01、5.01、6.00)。解釋為何不再提供 4.01 或 5.01 版的前端產品。
第 309 篇 · 2025-12-17
資深開發人員
資深 Genero 開發人員應具備哪些能力?從版本支援政策、前端架構、安裝授權,到程式設計進階功能與平台管理,整理出完整的資深開發人員能力清單。
第 308 篇 · 2025-12-17
節流問題(Throttling)
ON IDLE 或 ON TIMER 的觸發時間為何比設定值長很多?這是瀏覽器對非作用中分頁實施節流機制所致。解釋原因並介紹 enterforeground/enterbackground 事件的應用。
第 307 篇 · 2025-12-09
升級指南(2025)
長期未升級的客戶,如何掌握 Genero 4、5、6 版本的新功能?介紹三大資訊來源、重要術語回顧(Universal Rendering、Front End Delivery 等),以及開發環境設定建議。
第 306 篇 · 2025-12-01
ButtonEdit 背景顏色
從 Native Rendering 改用 Universal Rendering 後,表格為何出現藍色欄位?解釋兩個原因,並提供 CSS 隱藏 widget decoration 及修改 theme 變數調整按鈕顏色的解決方案。
第 305 篇 · 2025-11-24
縮減伺服器問題(SpinDown)
在多伺服器負載平衡環境中,如何安全地關閉單一伺服器?深入探討會話綁定處理、gasadmin 工具的使用,以及如何避免長時間執行程序阻礙伺服器關閉。
第 304 篇 · 2025-11-19
GRW 預設報表字型
Genero Report Writer 中,若未指定字型屬性,系統會套用哪些預設值?探討繼承機制、多機器環境的字型一致性,以及備用字型的設定。
第 303 篇 · 2025-11-11
抽象語法樹範例
利用 AST(抽象語法樹)技術,在多個原始碼檔案中找出有問題的程式碼模式。示範如何偵測迴圈中不當使用 ui.Interface.refresh() 的情況。
第 302 篇 · 2025-11-03
CONSTRUCT + TYPE
使用 CONSTRUCT 產生 SQL WHERE 子句時,formonly 欄位必須加上 TYPE 關鍵字,否則可能產生錯誤的查詢條件。透過完整範例說明差異。
第 301 篇 · 2025-10-29
樣式指南(Style Guide)
何謂樣式指南?說明如何建立一份涵蓋程式類型、視窗外觀、小工具選用、版面配置與術語標準的活文件,確保 Genero 應用程式具備一致的使用者介面。
第 300 篇 · 2025-10-22
第 300 篇紀念特刊
慶祝 Ask Reuben 達到第 300 篇里程碑,Reuben 以自我訪談形式分享他對 Genero 的知識積累、最佳設計理念、開發者建議,以及對 Ask Reuben 未來的展望。
第 271 篇 · 2025-04-02
httpsdispatch 與 HTTPS
如何讓 httpdispatch 支援 HTTPS,為 GWA 部署建立安全環境(Secure Context)?使用 --cert-file 和 --cert-key 參數啟動,讓行動裝置也能連線測試。
第 252 篇 · 2024-10-29
GDC 與 GBC 的選擇
GDC 與 GBC 在部署方式、使用者環境、Front Call 支援、桌面整合及行銷考量上各有差異。協助你根據實際需求做出選擇,兩者也可在同一 GAS 上並存。
第 246 篇 · 2023-10-25
.42r 與 .42m 的差異
.42r 是 fgllink 連結後的執行檔,.42m 是單一 .4gl 編譯的模組。使用 IMPORT FGL 的現代開發方式可直接執行 .42m,無需額外的 fgllink 步驟。
第 244 篇 · 2023-10-25
CLIPPED 的使用
初學者常見的 CHAR 變數問題:字串串接、ComboBox 項目選取、檔案操作時忘記加 CLIPPED,導致多餘空白或功能異常。整理 CLIPPED 的各種使用場景與注意事項。
第 241 篇 · 2023-10-25
GAS xcf 設定檔結構化
如何讓 GAS 設定檔結構清晰又易維護?說明 GROUP 元素、Abstract Parent Application 和 -E 覆寫機制,避免重複定義並減少不必要的 Dispatcher 重啟。
第 240 篇 · 2023-10-25
GAS Session 說明
GAS Session 是 VMProxy(uaproxy)與 DVM(fglrun)組合的執行單元。解釋 Session 的架構、唯一識別碼(32碼十六進位)的用途,以及與 AUTO_LOGOUT、負載平衡的關係。
第 239 篇 · 2023-10-25
臨時授權機制
遇到緊急情況需要在新伺服器上啟動 Genero 時,臨時授權讓你無需聯繫 Four Js 即可在 30 天內運作。說明安裝步驟與維護金鑰管理的重要性。
第 232 篇 · 2023-10-25
SLEEP 1 的使用時機
技術支援有時建議加 SLEEP 1,這是因為 Genero 前後端非同步架構的特性。解釋典型場景(如圖片顯示問題),以及取代 SLEEP 1 的正確架構解決方案。
第 227 篇 · 2023-10-25
授權到期日說明
執行 fglWrt 看到日期輸出,系統真的會在那天停止嗎?區分四種授權類型(臨時安裝、限期授權、訂閱授權、永久授權)的到期行為差異,以及因應方式。
第 211 篇 · 2023-10-25
讓技術支援更有效率
如何讓支援案例更快獲得解決?整理 12 個實用建議,包括一案一問題、提供各產品版本號、附上文件連結、提供最小重現範例,以及避免截圖貼程式碼等。
第 206 篇 · 2023-10-25
Genero 的可組合性
如何將 Genero 系統從單一巨型架構拆分為可獨立運作的模組?深入探討編碼標準、IMPORT FGL、相依關係圖、業務功能分割、程式功能分割,以及透過 Web Services 定義模組介面。
第 205 篇 · 2023-10-25
FGLLDPATH 覆寫技術
利用 FGLLDPATH 的搜尋順序,將自訂的 .42m 或 .42f 檔案置於標準函式庫之前,覆寫 Genero 內建功能。以自訂搜尋視窗(fglfind.per)為例說明實作方法與注意事項。
第 184 篇 · 2023-06-14
快速鍵設定
如何修改 accept/cancel 等動作的快速鍵?建議採用 ON ACTION 搭配單一 .4ad 動作定義檔,取代 COMMAND KEY,並說明在 GUI/Web 環境中選擇符合使用者習慣快速鍵的重要性。
第 183 篇 · 2023-06-14
命令列引數
如何傳遞命令列引數給 Genero 程式?介紹 arg_val()、base.Application 物件方法,以及 3.20 引入的 getopt 模組三種讀取方式,並說明透過 GAS 傳遞參數的方法。
第 178 篇 · 2023-05-23
從 Excel 複製貼上
GBC 5.00.08 已恢復前端剪貼簿貼上功能(2024年10月)。說明歷史背景,以及使用 cbget front-call 搭配 base.StringTokenizer 和反射機制實作通用貼上函式的方法。
第 182 篇 · 2022-12-15
int_flag 說明
int_flag 是只有開發者能重設的預定義變數,當使用者按下 Cancel 後它會保持 TRUE,影響後續所有對話框。說明常見的連續對話框 bug,以及正確的 LET int_flag = 0 重設時機。
第 175 篇 · 2022-12-15
連結與不連結的差異
Genero Studio 的「Genero」與「Genero (no link)」建置選項有何差異?說明傳統 fglcomp+fgllink+fglrun 流程,以及使用 IMPORT FGL 後可直接用 fglcomp --make 省略連結步驟。
第 174 篇 · 2022-12-15
用 Table 物件輸出 Excel
使用 Genero Report Writer 的 Table 物件搭配 XLSX 輸出格式,快速產生結構化的 Excel 試算表。提供完整的 .4rp 設計步驟、設定建議和 4GL 程式碼範例。
第 173 篇 · 2022-12-15
多執行緒處理
Genero 的 fglrun 程序是單執行緒的,但可透過 RUN WITHOUT WAITING 啟動多個子程序,並以資料庫訊息系統協調父子程序之間的通訊,達到類似多執行緒的效果。
第 169 篇 · 2022-12-15
偵錯技術
如何附加偵錯器到已在執行中的程式?介紹 fgldb -p 和 Genero Studio 的「附加至程序」功能,可用於偵錯 Web Service、RUN 啟動的程式,以及行動裝置上的應用程式。
第 168 篇 · 2022-06-28
大數值問題
BIGINT 最大值為 2⁶³-1,但 JSON 使用 IEEE 754 浮點數,精度只到 2⁵³。超過此範圍的 BIGINT 在 JSON 序列化時會損失精度,附程式碼示範這個問題。
第 165 篇 · 2022-06-28
per 與 4fd 格式比較
.per 是文字格式的表單定義(可用文字編輯器修改),.4fd 是 Genero Studio Form Designer 的 XML 格式。兩者功能完全相同,說明轉換方法和各自的適用場景。
第 160 篇 · 2023-01-16
例外、斷言與當機
「當機」這個詞常被誤用。釐清例外(Exception)、斷言(Assert)和真正當機(Crash)的差異,以及在 Genero 多程序架構中如何正確識別是哪個程序出了問題。
第 159 篇 · 2023-01-11
AS 別名語法
Genero 4.01.02 起,IMPORT FGL 支援 AS 別名語法,讓開發者為又長又難輸入的模組名稱建立簡短別名,提升程式碼可讀性,編輯器也支援別名的程式碼補全。
第 158 篇 · 2022-06-28
我的開發環境設定
如何快速切換不同版本的 Genero 環境?分享多版本安裝、License Manager、GAS 設定、GBC 客製化目錄和 Genero Studio 設定等實用技巧,讓版本切換更順暢。
第 155 篇 · 2022-06-28
原始碼美化工具
Genero 3.20 引入的原始碼美化工具(fglcomp --format),可對 4GL 程式碼自動縮排、統一大小寫和換行,讓團隊維持一致的程式碼風格。支援命令列、Vim 及 Genero Studio。
第 147 篇 · 2022-10-05
INPUT ARRAY 暫時列
什麼是暫時列(Temporary Row)?何時建立、何時移除,以及如何控制?詳解 AUTO APPEND 機制和 field-touched 狀態,以及需要特別注意 setFieldTouched 的兩種情境。
第 145 篇 · 2022-09-20
寄送電子郵件
Genero 應用程式有多種發送電子郵件的方式:前端的 mailto URI、launchUrl 和 composeMail front-call,以及伺服器端的命令列工具、SMTP 直連和 Java Mail API。
第 141 篇 · 2022-08-18
程式碼品質
如何掃描 4GL 程式碼的品質問題?介紹 Genero 3.20 引入的 gslint 工具——透過 AST 抽象語法樹分析原始碼,並可自訂規則檢查特定編碼模式,以及 SonarQube 的整合考量。
第 140 篇 · 2022-08-16
測試工具
Genero 相容哪些自動化測試工具?比較 Genero Ghost Client(GGC)、Qt-based GDC 的 Squish 測試、GBC 的 Web 測試工具,以及各類工具的適用情境和注意事項。
第 91 篇 · 2021-02-17
INFIELD 屬性
Genero 2.20 引入的 INFIELD 語法,讓 ON ACTION 只在游標位於指定欄位時才觸發,無需在程式中判斷目前欄位,大幅簡化多欄位查詢放大鏡的實作程式碼。
第 87 篇 · 2021-02-17
NULL 值與成功測試
在 Genero 中,NULL 運算式被視為 FALSE。說明為何要養成「測試成功條件」而非「測試失敗條件」的習慣,可自然避免因 NULL 導致的條件判斷錯誤。
第 83 篇 · 2021-02-17
FGLSQLDEBUG 偵錯工具
設定 FGLSQLDEBUG 環境變數,可觀察程式實際送出的 SQL、參數值、結果集、原生錯誤碼和執行時間。對使用非 Informix 資料庫的開發者尤其重要,可見 SQL 語法轉換過程。
第 49 篇 · 2020-03-25
取得 IP 位址
如何在 Genero Web 應用程式和 Web Service 中取得客戶端 IP?兩者方法不同:Web 應用透過 FGL_WEBSERVER_REMOTE_ADDR 環境變數,Web Service 則需透過 getRequestHeader 或 WSContext 取得。
第 39 篇 · 2020-03-25
FGL_WINMESSAGE 與 FGL_WINQUESTION
這兩個對話框函式為何會阻擋使用者介面?因為它們是用 4GL 實作的,開發者可閱讀原始碼($FGLDIR/src/fgldialog.4gl)並建立自訂版本,使用 STYLE="dialog" 避免阻擋行為。
第 29 篇 · 2020-03-25
變數的檔案讀寫
利用 util.JSON.stringify、TEXT.writeFile 和 TEXT.readFile、util.JSON.parse,可快速將任意 4GL 變數(包含陣列和 RECORD)存入檔案或從檔案還原,適用於偵錯和 QA 測試。
第 24 篇 · 2020-01-08
動態對話框
動態對話框(Dynamic Dialogs)讓程式在編譯時不需知道資料結構,即可實作通用的 INPUT、CONSTRUCT、DISPLAY ARRAY。以 fgl_zoom 為例說明 createConstructByName 的實作方式。
第 23 篇 · 2020-01-08
SQLite 記憶體資料庫
為何範例程式的資料庫不需要任何設定就能執行?使用 CONNECT TO ":memory:+driver='dbmsqt'" 可建立純記憶體的 SQLite 資料庫,適合測試、示範和隔離練習環境。
第 11 篇 · 2019-11-06
在 GRID 中加入空白列
GRID 版面配置中的空白列會自動縮為 0 像素。說明使用空白的 LABEL 元素([""] 語法)強制保留空白列的方法,並透過 Debug Tree 驗證其效果。

查看所有文章列表(含原文標題與日期)→