星期五, 6月 05, 2026

[LM] 輸出語言

使用 NotebookLM 工作室的輸出功能,EX:報告內的簡介文件,每次都得去調整語言選項,發現在設定內是可以直接變更

路徑為右上角設定 => 輸出語言
輸出語言內更改為 [中文 (繁體)] 即可,該選項預設就叫 [預設],但似乎沒有吃到 Google 帳號的語言設定

星期四, 5月 28, 2026

[SQL] Unique 條件約束

以往要在 Table 上建立 Unique 條件約束,都是以建立 Unqiue Index 來達成,在 Line 社群上看見討論提到,建立 Unique 條件約束,也會自動建立一個 Unique Index 出來,基本上從 Index 或是 Constraint 來建立,底層都會是 Unique Index

建立 Unique Constraint 語法
ALTER TABLE TableName   
ADD CONSTRAINT AK_TableName_ColName UNIQUE (ColName);   
GO  
建立 Unique Index 語法
CREATE UNIQUE INDEX UQ_TableName_ColName
ON dbo.TableName (ColName)
GO  
完整範例
USE AdventureWorks2025;  
GO

DROP TABLE IF EXISTS tblUniqueDemo
GO

CREATE TABLE tblUniqueDemo
 (  
    ID int NOT NULL CONSTRAINT PK_tblUniqueDemo PRIMARY KEY,
    Email VARCHAR(100),
    Phone VARCHAR(20)
);   
GO

-- 建立 Unique Constraint 語法
ALTER TABLE tblUniqueDemo
ADD CONSTRAINT AK_tblUniqueDemo_Email UNIQUE (Email);   
GO  

-- 建立 Unique Index 語法
CREATE UNIQUE INDEX UQ_tblUniqueDemo_Phone
ON dbo.tblUniqueDemo (Phone)
GO  

-- 透過 sys.Indexes 查詢
SELECT 
    [name] ,
    [type] ,
    [type_desc] ,
    is_primary_key ,
    is_unique ,
    is_unique_constraint
FROM sys.indexes 
WHERE object_id = object_id('tblUniqueDemo')
sys.indexes 內有兩個 Unique 相關欄位資訊,分別為
  • is_unique:Index is unique.
  • is_unique_constraint:Index is part of a UNIQUE constraint.,白話翻譯就是是否從 Constraint 語法建立出來的
SSMS 內觀察,兩種建立方式,Unique Index 圖示也會不同

星期一, 5月 25, 2026

[Gemini] 連結的應用程式

在網路上看見有人提到 Gemini 沒有辦法直接讀取 Google Workspace 服務,要在 Gemini 內開啟 [連結的應用程式] 才可以讀取

以讀取 Gmail 存取為例
設定 => 個人化智慧服務 => 連結的應用程式
開啟 Google Workspace 服務
再次嘗試,Gemini 就可以存取啦

星期四, 5月 21, 2026

[C#] Math.DivRem

以商業邏輯出貨包裝數量為例子來記錄不同計算寫法
namespace ConsoleApp1
{
    internal class Program
    {
        static void Main(string[] args)
        {
            int 總出貨數量 = 24;
            int 預計包裝數量 = 5;

            // 傳統寫法一:/ 搭配 %
            int 實際包裝數量_1 = 總出貨數量 / 預計包裝數量;
            int 剩餘數量_1 = 總出貨數量 % 預計包裝數量;

            if (剩餘數量_1 > 0)
                實際包裝數量_1++;

            // 傳統寫法二:Math.Ceiling 無條件進位
            int 實際包裝數量2 = (int)Math.Ceiling((double)總出貨數量 / 預計包裝數量);

            // .NET Framework:透過 out 回傳剩餘數量
            int 實際包裝數量_3 = Math.DivRem(總出貨數量, 預計包裝數量, out int 剩餘數量_3);
            if (剩餘數量_3 > 0)
                實際包裝數量_3++;

            // .NET 6 新增:使用 Tuple 回傳
            var (實際包裝數量_4, 剩餘數量_4) = Math.DivRem(總出貨數量, 預計包裝數量);
            if (剩餘數量_4 > 0)
                實際包裝數量_4++;

            Console.WriteLine($"/ 搭配 %: {實際包裝數量_1}");
            Console.WriteLine($"Math.Ceiling 無條件進位: {實際包裝數量2}");
            Console.WriteLine($"透過 out 回傳剩餘數量: {實際包裝數量_3}");
            Console.WriteLine($"使用 Tuple 回傳: {實際包裝數量_4}");
        }
    }
}

星期二, 5月 19, 2026

[GAS] Utilities.getUuid()

AI 產出 Code 在 js 刪除 Google Sheet 資料時,常常會看見把資料反向排序後,再依序刪除做法,避免破壞 Google Sheet RowPosition,想說要給在新增資料時給定唯一識別碼,發現 GAS 內建就有 Utilities.getUuid() 可以使用,這樣就可以明確直接刪除特定資料