2025年1月12日 星期日

清洗儲熱桶熱水器

1/4,我自行拆下儲熱桶的電熱棒,清理內部並排除其中的泥沙。上一次清理是在2017/12/31(事隔7年),當時請維修人員檢查熱水器不熱的原因,順便清理了儲熱桶內的泥沙和結晶。當時我觀察工人拆裝的方式,發現操作相當簡單,因此這次決定自己動手處理。拆下後發現泥沙比想像中少,讓我不禁懷疑岳母當初購買的儲熱桶是否為二手品(才隔6年),因為之前清理時內部相當髒亂。


這次自行拆裝還有另一個原因,是想確認是否因泥沙堆積導致漏水。後來發現問題其實是水管接頭未鎖緊所致。經過這次經驗,未來若再次發生漏水問題,我會先仔細檢查並確認原因,避免浪費時間處理不相關的部分。同時,這次的操作也讓我再次確認拆裝並不困難。此外,電熱棒似乎已接近需要更換的狀態,下一次處理時,應該能更快速完成。


注意事項:斷水、斷電

使用工具:WD40((除鏽)、鉗子、一字起子(止水)、十字起子



使用工具


斷水

底部可以簡單放水清潔

電熱棒接法







電熱棒4KW



電熱棒長度





儲熱桶內排空清潔







漏水的地方

乾掉後的泥沙(大約1小碗)









更換紗窗

 

今年第一次挑戰自己動手更換紗窗。回想兩年前,曾經請人更換3樓的紗窗,當時花費約1500-2000元左右。這次因為老婆大人在IG上看到有人到小北百貨買DIY工具自行更換紗窗,便提議我試試看,於是我也決定親自動手操作。


這次總共更換了頂樓曬衣場的3個紗窗。1月5日先更換了第一片,花費約1小時完成。到了1月11日,再接著更換另外兩片,經驗累積後,速度進步到每片約30分鐘。


第一片紗窗更換時,使用的是4.5mm壓條。本來剪了一小段舊壓條到賣場比對,但可能因舊壓條已經受擠壓縮小,導致尺寸判斷錯誤。當時滾紗窗的過程非常順利,但裝好後感覺紗窗稍微鬆動,似乎不夠緊實。後來,為了更穩固,我另外購入了5.5mm壓條。這次壓條非常緊實,甚至因為滾壓力度過大,還把紗窗滾到有些缺角。不過,相較於第一片,後來的兩片更換得更加牢固,整體完成度也提升許多。


這次DIY的過程,雖然一開始有些手忙腳亂,但在經驗中學習,越做越熟練,最終也完成了一項看似不容易的挑戰!



工具:剪刀、美工刀、一字起子(可以不用)、滾輪(小北)、4.5nm壓條(小北)、5.5nm壓條(小北)、長尾夾(固定邊框)

紗窗:防霾紗窗(小北)







更換工具

換好的紗窗

裝上後

防霾紗窗

防霾紗窗






更換浴室通風扇

 

上週(1/2),小孩浴室的通風扇壞了,讓我聯想到之前主臥的通風扇也曾壞掉並更換過。因為有過一次經驗,這次更換速度比上次(2021/11)快了許多,也更加熟練。


在挑選過程中,我查了一些其他品牌,但最後還是選擇了建商原本使用的品牌,猜想價格會比較實惠。第一次購買時印象中約花了1000元,而這次在蝦皮一次買了兩台,平均每台約850元。以主臥更換後使用10年的壽命來看,這樣的價格相當划算。


舊的通風扇拆下後,我簡單清理了一下,打算試試用潤滑油處理,看看是否能解決問題,或許還能繼續使用,延長它的使用壽命。


  • 品牌(KNS康乃馨 ES-100)
  • 使用工具電動起子(十字、一字),一字用在電線接頭(舊的接法鬆開)




更換前內部已經有點髒


 

更換前先確認接的方式


更換後


2024年6月8日 星期六

用GPT修改M語法_以日期列處理

在2023年GPT開始使用時我就詢問過GPT,可能當時的GPT還不夠聰明,給予的答案無法運行,我認為原始的語法應該可以更聰明點,詢問過Power BI社群的人,但沒有人提供答案,終於在現在再度詢問GPT給予的答案與我思考的方向依樣,只是我懂得語法不多,透過GPT幫忙解答,我也學到了新知識。





下面是GPT提供目前最優的版本

let

    // 定义日期和参数

    起始日期 = "2023/12/29",

    最新日期 = "2024/6/7",

    周前日期 = "2024/5/31",

    日期列表 = {"2023/12/29", "2024/5/10", "2024/5/17", "2024/5/24", "2024/5/31", "2024/6/7"},

    趴數 = 0.05, // 例如5%

 

    // 数据处理

    來源 = Table.NestedJoin(投資組合, {"持股標的"}, 資料_5, {"標的"}, "資料_5", JoinKind.RightOuter),

    已展開資料 = Table.ExpandTableColumn(來源, "資料_5", List.Combine({{"標的"}, 日期列表})),

    已排序資料列 = Table.Sort(已展開資料, {{"持股標的", Order.Descending}}),

    已移除資料行 = Table.RemoveColumns(已排序資料列, {"持股標的"}),

    加入淨值 = Table.AddColumn(已移除資料行, "淨值", each [股數] * [匯率] * Record.Field(_, 最新日期)),

    Base_淨值總額 = List.Sum(加入淨值[淨值]),

    加入年度漲幅 = Table.AddColumn(加入淨值, "年度漲幅", each (Record.Field(_, 最新日期) - Record.Field(_, 起始日期)) / Record.Field(_, 起始日期), Percentage.Type),

    加入周漲幅 = Table.AddColumn(加入年度漲幅, "周漲幅", each (Record.Field(_, 最新日期) - Record.Field(_, 周前日期)) / Record.Field(_, 周前日期), Percentage.Type),

    加入淨值比 = Table.AddColumn(加入周漲幅, "淨值比", each [淨值] / Base_淨值總額, Percentage.Type),

    移除多餘列 = Table.RemoveColumns(加入淨值比, {"股數", "匯率", "淨值"}),

    重新排列列 = Table.ReorderColumns(移除多餘列, List.Combine({{"標的", "淨值比"}, 日期列表, {"周漲幅", "年度漲幅"}})),

    排序及篩選 = Table.SelectRows(

        Table.Sort(重新排列列, {{"淨值比", Order.Descending}, {"標的", Order.Descending}}),

        each (List.Contains(投資組合[持股標的], [標的]) or Number.Abs([周漲幅]) >= 趴數 or List.Contains(指數, [標的])) and not List.Contains(排除, [標的])

    )

in

    排序及篩選


下面是GPT提供減少手動版本

我只是將語法丟出,GPT自動提供簡易減少手動版本

let

    來源 = Table.NestedJoin(投資組合, {"持股標的"}, 資料_5, {"標的"}, "資料_5", JoinKind.RightOuter),

    #"已展開 資料_5____" = Table.ExpandTableColumn(來源, "資料_5", {"標的","2023/12/29","2024/5/10","2024/5/17", "2024/5/24","2024/5/31","2024/6/7"}),

    已排序資料列 = Table.Sort(#"已展開 資料_5____",{{"持股標的", Order.Descending}}),

    已移除資料行 = Table.RemoveColumns(已排序資料列,{"持股標的"}),

 

    // 獲取所有日期欄位名稱

    日期欄位名稱 = List.RemoveFirstN(List.RemoveItems(Table.ColumnNames(已移除資料行), {"標的", "股數", "匯率"}), 0),

    最後一欄 = List.LastN(日期欄位名稱, 1){0},

    最後第二欄 = List.LastN(日期欄位名稱, 2){0},

   

    // 計算淨值

    T淨值_______ = Table.AddColumn(已移除資料行, "淨值", each [股數]*[匯率]*Record.Field(_, 最後一欄)),

    Base_淨值總額 = List.Sum(T淨值_______[淨值]),

 

    // 計算年度漲幅和周漲幅

    T年度漲幅_____ = Table.TransformColumnTypes(

        Table.AddColumn(T淨值_______, "年度漲幅", each (Record.Field(_, 最後一欄) - Record.Field(_, "2023/12/29")) / Record.Field(_, "2023/12/29")),

        {{"年度漲幅", Percentage.Type}}

    ),

    T周漲幅_____ = Table.TransformColumnTypes(

        Table.AddColumn(T年度漲幅_____, "周漲幅", each (Record.Field(_, 最後一欄) - Record.Field(_, 最後第二欄)) / Record.Field(_, 最後第二欄)),

        {{"周漲幅", Percentage.Type}}

    ),

   

    // 計算淨值比

    T淨值比 = Table.TransformColumnTypes(

        Table.AddColumn(T周漲幅_____, "淨值比", each [淨值] / Base_淨值總額),

        {{"淨值比", Percentage.Type}}

    ),

   

    // 移除不必要的欄位

    已移除資料行1 = Table.RemoveColumns(T淨值比, {"股數", "匯率", "淨值"}),

 

    // 重新排列欄位順序

    重新排_____ = Table.ReorderColumns(已移除資料行1, {"標的", "淨值比"} & 日期欄位名稱 & {"周漲幅", "年度漲幅"}),

 

    // 排序及篩選資料

    T排序及篩選 = Table.SelectRows(

        Table.Sort(重新排_____, {{"淨值比", Order.Descending}, {"標的", Order.Descending}}),

        each (List.Contains(投資組合[持股標的], [標的]) = true or Number.Abs([周漲幅]) >= 趴數 or List.Contains(指數, [標的]) = true) and List.Contains(排除, [標的]) = false

    ),

  

in

    T排序及篩選


修改前的版本

let

    來源 = Table.NestedJoin(投資組合, {"持股標的"}, 資料_5, {"標的"}, "資料_5", JoinKind.RightOuter),

    #"已展開 資料_5____" = Table.ExpandTableColumn(來源, "資料_5", {"標的","2023/12/29","2024/5/10","2024/5/17", "2024/5/24","2024/5/31","2024/6/7"}),

    已排序資料列 = Table.Sort(#"已展開 資料_5____",{{"持股標的", Order.Descending}}),

    已移除資料行 = Table.RemoveColumns(已排序資料列,{"持股標的"}),

    T淨值_______ = Table.AddColumn(已移除資料行, "淨值", each [股數]*[匯率]*[#"2024/6/7"]), //這裡也要修改........

    Base_淨值總額 = List.Sum(T淨值_______[淨值]),

    T年度漲幅_____ = Table.TransformColumnTypes(

                 Table.AddColumn(T淨值_______, "年度漲幅", each ([#"2024/6/7"]-[#"2023/12/29"])/[#"2023/12/29"]) , //年度如果修改要去改 資料_5週那個進階查詢

                         {{"年度漲幅", Percentage.Type}}),

    T周漲幅_____ = Table.TransformColumnTypes(

                 Table.AddColumn(T年度漲幅_____, "周漲幅", each ([#"2024/6/7"]-[#"2024/5/31"])/[#"2024/5/31"]) ,  //這裡也要改

                       {{"周漲幅", Percentage.Type}}),

    T淨值比 = Table.TransformColumnTypes(Table.AddColumn(T周漲幅_____, "淨值比", each [淨值]/Base_淨值總額),{{"淨值比", Percentage.Type}}),

    已移除資料行1 = Table.RemoveColumns(T淨值比,{"股數", "匯率","淨值"}),

    重新排_____ = Table.ReorderColumns(已移除資料行1,{"標的", "淨值比","2023/12/29","2024/5/10","2024/5/17", "2024/5/24","2024/5/31","2024/6/7","周漲幅", "年度漲幅"}),

    T排序及篩選 = Table.SelectRows(

                    Table.Sort(重新排_____,{{"淨值比", Order.Descending}, {"標的", Order.Descending}}) , each (List.Contains(投資組合[持股標的],[標的])=true or Number.Abs([周漲幅])>=趴數 or List.Contains(指數,[標的])=true) and List.Contains(排除,[標的])=false   )

in

T排序及篩選

 



清洗儲熱桶熱水器

1/4,我自行拆下儲熱桶的電熱棒,清理內部並排除其中的泥沙。上一次清理是在2017/12/31(事隔7年),當時請維修人員檢查熱水器不熱的原因,順便清理了儲熱桶內的泥沙和結晶。當時我觀察工人拆裝的方式,發現操作相當簡單,因此這次決定自己動手處理。拆下後發現泥沙比想像中少,讓我不禁...