openmesh face normal在openmesh 中取得face的normal 取得連結 Facebook X Pinterest 以電子郵件傳送 其他應用程式 - 7月 07, 2021 在openmesh 中取得face的normal 回傳值為Normal,在calc_face_normal(中寫入Face 元件FIter) Normal novelface=calc_face_normal(meshface[face]); 取得連結 Facebook X Pinterest 以電子郵件傳送 其他應用程式 留言
🛠【ASP.NET Core + Oracle】解決 ORA-00904 "FALSE": 無效的 ID 錯誤與資料欄位動態插入顯示問題 - 8月 12, 2025 🔍 問題描述 在開發群創光電內部的 APS 排程系統(使用 ASP.NET Core + Vue 3 + Oracle),前端發生多筆錯誤訊息: Request failed with status code 500 Oracle.ManagedDataAccess.Client.OracleException: ORA-00904: "FALSE": 無效的 ID 這是 Oracle 資料庫對布林值處理不一致造成的錯誤,我們後端嘗試將某個欄位 .Where(x => x.FLAG == false) 寫法,經由 EF Core 轉成 SQL: SELECT * FROM TABLE WHERE FLAG = FALSE 而 Oracle 並不支援 FALSE 關鍵字作為布林值 → 導致查詢失敗。 🔧 解決方案 1:避免布林值直接進入 LINQ to SQL EF Core + Oracle 不支援下列語法: .Where(x => x.IsActive == false) // ❌ Oracle 無法解析 FALSE ✅ 解法 :將布林判斷移至 .ToList() 之後,變成記憶體篩選: var list = await db.Table.Where(x => x.Version == ver).ToListAsync(); var filtered = list.Where(x => !x.IsActive).ToList(); // ✅ 在記憶體中比對布林 🔧 解決方案 2:安全轉換 SEQ_NO 為 Decimal 後端為了將前段表 APSZFRONT 的 SEQ_NO 與 APSZLCM 的 APS_PLAN_SEQ 對應,用到了這段程式碼: Convert.ToDecimal(front.SEQ_NO) 但一旦 SEQ_NO 含有英文字母(例如 GN140CHCAAE90S_20250811_1_531 ),就會丟出 FormatException → 造成 HTTP 500。 ✅ 正確寫法(TryParse 避免失敗) : de... 閱讀完整內容
🛠【實戰排除教學】從 VS Code 的 _logger 錯誤,到 PowerShell 找不到 npm/serve,再到 Oracle ORA-03135 連線中斷——一次搞懂! - 8月 19, 2025 前言 這篇文章把你在實務中 可能一次遇到的三類問題 整合成一篇易懂、可照做的排錯筆記: C# / EF Core :VS Code 顯示 CS0103: The name '_logger' does not exist 前端部署預覽 :PowerShell 說找不到 serve 、更慘的是連 npm 、 node 也找不到 Oracle 連線中斷 :API 查詢跑一陣子後直接噴 ORA-03135: connection lost contact 我會用工程師口吻、但寫給不熟悉的人也看得懂的方式,帶你一步步修好。 一、VS Code: _logger 不存在(CS0103) 問題現象 在 catch 裡面呼叫 _logger.LogError(...) ,卻出現: CS0103: The name '_logger' does not exist in the current context 代表 類別裡沒有宣告或注入 _logger 。 正確作法:在類別中注入 Logger 類別欄位 using Microsoft.Extensions.Logging; public class ApsDataProcessor { private readonly AppDbContext _context; private readonly ILogger _logger; public ApsDataProcessor(AppDbContext context, ILogger logger) { _context = context; _logger = logger; } public async Task > GetDataByVersionA(string version) { try ... 閱讀完整內容
🔎如何在 Oracle PL/SQL 儲存過程中為文字欄位加入換行符號(CHR(10))——以 Updlcmremark 為例 - 8月 29, 2025 前言 在企業級系統開發中,我們常會將複雜的商業邏輯封裝成 Oracle PL/SQL 的儲存過程(Stored Procedure),以便重複使用並確保邏輯一致性。 這次的案例是 修改 Updlcmremark 儲存過程 ,目的是讓產出的 REMARK 欄位在資料庫中具有「換行」格式,而不只是用逗號分隔,方便報表與前端顯示。 問題背景 原本的 Updlcmremark 過程中,對於某些資料(例如來自 APS_Z_LCM_CHECK 的 process_step 與 eq ),是直接用字串拼接的方式: v_remark := NVL(v_process_step, '') || '' || NVL(v_eq, ''); 這種寫法的缺點是: 資料之間沒有任何分隔符號,閱讀性差。 若要在前端或報表中換行,必須額外處理,不方便。 如果一個 SEQ_NO 有多筆資料,這種寫法只會取到第一筆( FETCH 單筆),其他資料會被忽略。 改進需求 參考同系統的另一支儲存過程 Updmremark ,該過程在拼接文字時不僅使用逗號分隔,還加上換行符號: || ' ,' || CHR(10) 這樣在資料庫中儲存的內容,就會自帶換行,即使直接查詢或匯出到 Excel 報表,也能保有可讀性。 解決方案 方案一:簡單版(單筆取值加換行) 如果 unknown 游標一次只需要取一筆資料,可以直接在原本字串後加上逗號與換行符號: v_remark := NVL(v_process_step, '') || ' ' || NVL(v_eq, '') || ' ,' || CHR(10); 這樣每筆 remark 都會以「逗號 + 換行」結尾。 方案二:完整版(多筆累加加換行) 如果 unknown 游標可能有多筆資料,則應該使用 FOR rec_... 閱讀完整內容
留言
張貼留言