2023年3月31日 星期五

好站 : 人人都能學會用 AI

今天在內訓課程中看到老師介紹下面這個影片 :


主要是介紹日本人寫的 "人人都能學會用AI" 這本書 (商周), 裡面提到 AI 時代與 AI 共事的五種工作類型, 有一型, T 型, O 型, 倒 T 型, 與 I 型, 你是哪一種類型呢? 
  • 一型的人 : 做的是創意設計與瑣碎的決策事務, 這種工作 AI 較不擅長, 所以在 AI 時代還是能獨立工作, 不太受影響 (美術設計, 策展活動安排應該就是這種吧?). 
  • T 型的人 : 可藉由 AI 輔助讓工作更有效率 (程式員應該是這類吧?)
  • O 型的人 : 透過 AI 擴展了原本沒有的能力 (地震氣候預測? 金融走勢預測?)
  • 倒 T 型的人 : 可協助 AI 做不到的事 (幫 GPT 清理 fine-tune 的 NLP 工程師?)
  • I 型的人 : 被 AI 端走飯碗的人 (客服員)
看來不學著怎樣用 AI, 就會變成最後一種唉唉叫的 I 型人了.

C & C++ 學習筆記 : Hello World

二哥這學期選的嵌入式系統要用到 C++ 語言, 最近問我類別的問題, 但我只學過 C 語言, 沒接觸過 C++, 所以就跟市圖借了洪維恩的書給他自己看. 這幾天我拿來翻閱, 覺得有 C 的基礎來學 C++ 似乎不難 (但十幾年前就是因為覺得 C++ 太複雜才改學 Java 的 XD), 這兩天有空就看一看隨手測試一下, 順便寫一下筆記. 

參考書籍 : 

# C++ 教學手冊 (第三版) (旗標 2012)

關於 C++ 的背景知識摘要如下 :
  • C++ 是 Bjarne Stroustrup 於 1980 年開始以 C 為基礎發展的物件導向語言, 目前最新版本為 C++ 20. 
  • C++ 衍生自 C 語言, 它包含 C 語言所有的功能, 所有 C 程式只要做些許修改甚至完全不用修改即可在 C++ 編譯器中順利執行.
  • C++ 的迴圈與分支等基本語法跟 C 語言中完全相同. 
  • C++ 與 C 最大的差異是 C++ 為物件導向語言, 具有類別的封裝, 多型, 與繼承等功能, 這是 C 語言所沒有的. 其次, C++ 新增了布林型態 bool, 這也是 C 語言沒有的. 隨著版本不斷演進, C++ 發展出泛型等更多功能與語法. 
  • 結構 (struct) 在 C++ 中並不常用, 因為此功能在 C++ 中大多以類別取代.
參考 :


下面是最簡單的 C++ 程式範例 : 

//hello_world.cpp
#include <iostream>
using namespace std;
int main() {
    cout << "Hello, world!" << endl;
    return 0;
}

此例中首先用前置指令 include 將 C++ 內建輸出入串流函式庫 iostream 含括進來, 然後用 using 指令設定名稱空間為 std, 在 C++ 規範中, 標準函式庫中的函數, 類別與物件都是定義在 std 這個名稱空間中, 設定名稱空間可以讓我們在使用 C++ 標準函式庫裡面的內建函數與類別時, 不需要指定所屬名稱空間, 例如上例若不使用 using 去設定名稱空間, 則程式中用到標準輸出 cout 與跳行 endl 這兩個標準函式庫的物件時, 前面需用 std:: 指明其所屬名稱空間 :

//hello_world.cpp
#include <iostream>
int main() {
    std::cout << "Hello, world!" << std::endl;
    return 0;

程式執行入口 main() 函式裡面只有兩行指令, 一是將 "Hello, world!" 與換行符號 endl  (注意最後字元是 L 的小寫, 不是 123 的 1, 為行尾符號 end of line 之意) 先後用管線 << 傳送到標準輸出 cout, 然後用 return 傳回 0 表示程式正常結束 (傳回 1 為異常結束). 

將此程式輸入到最常用的 C++ 編輯器 Dev-cpp 中存檔為 hello_world.cpp 後編譯執行, 就會在主控台顯示 'Hello, world!' :




上面的程式如果用 C 來寫是這樣 :

//hello_world.c
#include <stdio.h>
int main() {
    printf("Hello, world!\n");
    return 0;

結果如下 : 




Dev-cpp 編譯器可在 SourceForge 下載 :


也可以用 replit.com 的免費線上編譯器, 不須下載或安裝即可執行 :





另外還有一個不錯的免註冊直用的線上 C/C++ 編譯器 : 



2023-11-23 補充 :

今天在上 Hahow 企業版的 C 語言課程時, 發現老師使用 Tutorialpoint 的線上編譯器, 介面比 OnlinGDB 的乾淨漂亮 :


2023年3月29日 星期三

最遠的你是我最近的愛

最近在臉書小鼓手頻道聽到這首非常好聽的歌 : 





翻唱者花姐以獨特沙啞富有磁性的嗓音完美地詮釋了這首歌的滄桑感. 

這首歌是台灣流行音樂作曲家史俊鵬譜曲, 尤秋玲填詞 (以筆名沈陵發表), 收錄在環球唱片於民國 79 年為史俊鵬發行的 "我以為你是流過淚的人" 專輯中, 但後來被中國男歌手車繼鈴翻唱紅遍大街小巷, 讓人以為原唱是車繼鈴, 其實應該是作曲者史俊鵬本人 : 





據填詞者尤秋玲還原當時原委, 由於史俊鵬發行該專輯後與唱片公司意見不合, 使得這張唱片知名度不高, 居然讓翻唱者變成原唱. 參考 :


史俊鵬是個音樂才子, 曾幫許多歌手寫過膾炙人口的好歌 (我印象最深的是學生時代聽的 "無水的彩筆"), 可惜他已在 2012 年因為肝癌英年早逝, 享年 53 歲 :


這首歌去年在中國又因為被重新翻唱而紅起來 (但該文明些尊重原作者吧). 

這首歌歌詞如下 :

夜已沉默 心事向誰說
不肯回頭 所有的愛都錯過
別笑我懦弱 我始終不能猜透
為何人生淡漠
風雨之後 無所謂擁有
萍水相逢 你卻給我那麼多
你擋住寒冬 溫暖只保留給我
風霜寂寞 凋落在你的懷中
人生風景在遊走
每當孤獨我回首
你的愛總在不遠地方等著我
歲月如流在穿梭
只因有你在天涯盡頭等著我
風雨之後 無所謂擁有
萍水相逢 你卻給我那麼多
你擋住寒冬 溫暖只保留給我
風霜寂寞 凋落在你的懷中
人生風景在遊走
每當孤獨我回首
你的愛總在不遠地方等著我
歲月如流在穿梭
只因有你在天涯盡頭等著我
人生風景在遊走
每當孤獨我回首
你的愛總在不遠地方等著我
歲月如流在穿梭
喜怒哀樂我深鎖
只因有你在天涯盡頭等著我
人生風景在遊走
每當孤獨我回首
你的愛總在不遠地方等著我
歲月如流在穿梭
喜怒哀樂我深鎖

這詞填得真好啊! 好曲配上好詞應該逃不過我的耳朵才對, 可能是民國 79 年時我正在 IC 設計業賣肝, 所以就沒注意到這首歌了. 


2023-04-21 :

今天在 YT 看到花姐唱現場的影片 :







原來花姐是個花樣年華的漂亮女孩! 

Python 3.11 安裝 Scrapy 出現 Failed building wheel for twisted-iocpsupport 錯誤

我在 ThinkPad 筆電上安裝 Scrapy 前面都沒問題, 但最後一步卻出現 "Failed building wheel for twisted-iocpsupport" 錯誤 : 

Building wheels for collected packages: twisted-iocpsupport
  Building wheel for twisted-iocpsupport (pyproject.toml) ... error
  error: subprocess-exited-with-error

  × Building wheel for twisted-iocpsupport (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> [5 lines of output]
      running bdist_wheel
      running build
      running build_ext
      building 'twisted_iocpsupport.iocpsupport' extension
      error: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools": https://visualstudio.microsoft.com/visual-cpp-build-tools/
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for twisted-iocpsupport
Failed to build twisted-iocpsupport
ERROR: Could not build wheels for twisted-iocpsupport, which is required to install pyproject.toml-based projects

爬文發現這可能與 Python 3.11 有關, 這版本太新了, 建議是安裝 3.6~3.10 的 Python : 


"This error occurs because twisted-iocpsupport is not supported by python 3.11 Consider going back to any versions between 3.6 and 3.10 that fixed the problem for me. Go to twisted-iocpsupport documentation and see the versions of python it supports"

不過錯誤訊息中提到, 程序是在安裝  'twisted_iocpsupport.iocpsupport'  擴充工具時出錯, 建議到微軟下載 Visual Studio C++ 建立工具 : 


雖然下載的檔案很小 (約 3MB), 但真正執行後選擇安裝 C++ 編譯工具集卻要下載安裝高達 8GB 的程式 : 






這麼大我看還是算了, 我對 Anaconda 這種 400MB 級的軟體都不想安裝了, 何況這 8GB 的, 反正現在也沒在用 Scrapy, 以後要用到時再安裝唄.

PS : 直接用 pip install twisted-iocpsupport 安裝也是出現同樣的錯誤訊息.

2023年3月26日 星期日

2023 年第 13 周記事

本周六為補班日, 五點下班先載菁菁去五甲拿訂製蛋糕, 然後到民生一路餐廳寄放, 因為她晚上要幫她朋友 "肯德基媽媽" 慶生 (聽說下個月要轉職到阮綜合, 不能再這麼叫了). 繞一大圈回到家已七點, 吃過飯才動身回鄉下. 補班日我待在鄉下的時間少半天覺得好趕, 其實我不喜歡為了連假而補班, 想連的人自己請假不就得了? 不過補班日其實很輕鬆, 因為往來郵件比平時少, 也沒啥電話要處理. 

早上在龍眼樹下聞到一陣陣類似桂花的花香味, ,仔細一看原來是龍眼花的味道, 前兩周還只是花蕾, 現在已全然綻放了 : 




芒果花期已過, 由於沒有下雨, 結果率還不錯 :




最近比較少關注頂樓的兩個太陽能系統, 今早特地上去抄表, 獨立式累積用電來到 184 KWH, 而併網式為 3127.7 KWH (從 1864.5 起算, 實際為其差額 1263.5 KWH) : 





一直想要在大門口波羅蜜樹下放個儲水桶來給韓國草與七里香自動澆水, 但一直沒遇到阿正, 他以前載了好幾個水桶放在後院水池上, 目前剩三個一直沒在用, 上周日阿正來芭樂園施肥, 我跟他要了那個藍色的桶子, 他一口應允, 所以我今天去愛心回途經過小漢時就進去買 6 分管的水龍頭開關, 但轉接扣環缺貨, 只好下周再買 : 





右邊的轉接扣環是一寸的, 太大了. 

自從月初右腳踝肌腱不舒服暫停傍晚的快走運動後休息了兩個禮拜, 上周恢復去大地游泳, 上一次是去年大約這時候姊姊回來高雄時邀我去游過一次, 之後就因菁菁確診我開始在家上班而沒辦法去游了. 太久沒游泳感覺肺活量變差, 現在都固定游 11 趟約半小時, 起身去按摩池沖水柱約 15 分鐘, 一下班就去 6 點開始游回到家大概 7 點左右, 這時段人最少游起來暢快. 

市圖還書 1 本 (元宇宙)

本周市圖還書 1 本 :


此書沒時間看, 還先. 老實說元宇宙到底是甚麼我還沒概念. 要學的東西很多, 該放棄就要放棄. 

料理實驗 : 台式爌肉飯

最近在 YT 看到阿慶師示範台式爌 (音況) 肉飯作法, 覺得程序簡單易行, 前兩周掃墓的豬肉還塞在冰箱, 今天就拿來解凍試做這道菜吧! 





材料 : 
  • 五花肉
  • 八角 3 片
  • 蔥 4 條
  • 蒜頭 5 片
  • 紅蔥頭 5 片
  • 醬油
  • 醬油膏
  • 冰糖
  • 米酒
  • 白胡椒粉
作法 : 
  1. 五花肉切片備用 (約 5 公分長, 1 公分厚)
  2. 青蔥去鬚, 切下蔥頭, 蔥白與蔥綠一切為二備用. 蒜頭剝皮壓扁, 紅蔥頭去頭尾剝皮壓扁備用.
  3. 平底鍋起油鍋, 先放蔥頭, 蒜頭, 紅蔥頭下鍋用中火煸香, 一分鐘後放蔥白下去再煸 1 分鐘, 再將豬肉放下去兩面各煎約一分鐘至表面稍微金黃色, 倒入兩大匙醬油, 一大匙烏醋, 攪拌一分鐘讓豬肉上色後關火. 
  4. 將豬肉倒入砂鍋中, 平底鍋加些水不要浪費也倒入砂鍋, 砂鍋加水至蓋過豬肉, 倒入 1 杯量米杯醬油, 4 大匙醬油膏, 2 大匙烏醋, 半杯米酒, 1/2 匙白胡椒粉, 2 大匙冰糖, 3 顆八角, 全部攪拌均勻後, 大火燒滾後放入蔥綠轉小火, 不蓋鍋蓋燉 1 小時關火蓋鍋蓋燜 15 分鐘即可. 




先放蔥蒜再放蔥白煸香 :




放入豬肉兩面煎至金黃 :




加入醬油與烏醋調味上色 : 




道入砂鍋中加水蓋過豬肉 :




加入調味料 (醬油, 醬油膏, 烏醋, 米酒, 冰糖, 白胡椒粉, 八角) 大火煮滾 : 




煮滾後放入蔥綠轉小火不蓋鍋蓋燉 1 小時 :




2023年3月24日 星期五

安裝遠端桌面軟體 UltraViewer

這一周被 Anydesk 不斷顯示的 "professional use" 警告所擾, 參考我昨天寫的 :


今天下載安裝了另一個遠端桌面軟體 UltraViewer, 覺得其好用度不輸 Anydesk, 但目前僅支援 Windows, 下載網址如下 : 





我本來想下載中間的 portable 來用, 但下載下來跟左邊的一樣都是 .exe 安裝版, 大小只有 1.5MB, 上傳 TotalVirus 掃描全過. 我下載的是 v6.6 版, 點擊安裝全部用預設五個步驟就完成了 :








安裝完啟動 UltraViewer, 主要的設定都放在首頁, 非常方便. 左方是本機的連線 ID 與密碼 (可按右方的小圖示更新密碼, 也可設定密碼長度), 右方是遠端主機的連線 ID 與密碼, 密碼可以是全數字型的或自訂型的 :




也可以按左下方的鑰匙圖示按鈕可以設定自訂的固定密碼, 為了安全不要設太簡單的密碼 : 




無人值守時最好勾選 "Run UltraViewer with Windows", 萬一當機 Windows 重啟時才會自動執行 UltraViewer : 




輸入對方 ID 與密碼後按 "Connect to partner" 鈕即可連線 : 




遠端桌面上方的隱藏功能表可設定螢幕與錄影或截圖, 點右方邊邊的小箭頭會開啟交談窗可與對方線上聊天 : 





UltraViewer 支援中文介面, 只要在 Settings/Languages 中選擇正體中文即可 : 





UltraViewer 用起來感覺品質與 AnyDesk 差不多, 設定方式與介面則較簡潔方便, 缺點是它目前僅支援 Windows, 沒辦法在 Linux 上使用, 希望很快就能推出. 它的資費方案較 Anydesk 便宜很多, 最便宜的 Lite 方案是每月 3.99 美元, 是 Anydesk 的 1/3 :




現在還不太確定對免費用戶的佛心到哪, 還要持續使用觀察看看. 這家公司的開發商是位於河內的 DUCFABULOUS.

2023年3月23日 星期四

Anydesk 並不是可以一直免費使用

我這陣子都用 Anydesk 遠端遙控鄉下老家的電腦, 其連線品質真的沒話說, 而且提供個人免費使用, 用來給家人朋友提供遠端協助非常好用. 以前用的 TeamViewer 雖然也可以免費使用, 但用幾次之後, 連線還不到五分鐘立刻被斷線, 跳出一個視窗說被偵測出用在商業用途, 必須升級為付費帳戶, 所以才改用 Anydesk. 

但這幾天發現 Anydesk 也跟 TeamViewer 一樣, 連線時會跳出一個計時視窗, 說偵測到連線次數過多, 被認為是 Professiona User, 要求購買 licence : 


等秒數過了 (10 秒) 就會消失, 還是可以繼續使用 (TeamViewer 就比較粗暴, 先斷線再秀出涉嫌商用的警告視窗). 但今天卻出現最後通牒, 說因為一直不處理 professional use 警告, 決定自 4 月 2 日起直接終止我繼續使用 Anydesk : 




按底下的 Take Action 鈕其實沒用, 它不是讓你去聲明你不是 professional use 解除阻擋, 而是導至說明 free user 與 professional user 差別的網頁, 總之, 被認定為 professional user 後只能升級為付費帳戶, 我點線上客服, 說明我只是連線放在異地的另一台電腦, 並非 professional user, 但客服還是建議購買最低價的 solo 帳戶 :




我查了一下, solo 帳戶可同時在三台電腦登入, 可連線 100 個裝置, 每個月 12.9 美元 (須年繳 , 一年 12.9*12=154.8 美元, 約台幣 4800 元左右) :



近 5000 元的年支出對於偶而才連線的使用者而言是個不小的負擔, 雖說使用者付費是天經地義, 但對消費者來說是能免則免. 從我被偵測到 4 個月超過 70 次連線來看, 每個月連線次數約 20 次, 也就是每天連線一次就會超標了. 

我找到下面這篇文章, 裡面也提到越來越多 Anydesk 免費用戶被判定為疑似商業用戶, 裡面的貼圖更誇張, 這個免費用戶因為過去 6 個月有超過 15 次的連線紀錄而遭到判定為 professional user, 比我的連線次數還少ㄟ. 可見很可能沒有甚麼次數規則, 也許只是隨機挑選而已 : 


很多免費用戶抱怨 Anydesk 越來越像 TeamViewer 了. 此篇文章出自另一個遠端桌面軟體 UltraViewer 的論壇, 有空來安裝試用看看, 其費用政策表明不會對免費用戶祭出強制手段升級為收費用戶. 


2023-03-24 補充 :

我已改用 UltraViewer (據官網論壇說明是不會像 Anydesk 這樣, 再觀察), 參考 :


雖然不喜歡 Anydesk 這樣的做法, 但基於尊重版權, 也不要去下載甚麼破解版來用, 這種東西 101% 都有病毒或木馬, 免費是很好, 但資安更重要. 

2023年3月22日 星期三

高科大還書 1 本 (Python 股票演算法交易)

今天下班順路回母校圖書館還下面這本書 (被預約) : 



Source : 博碩


此書作者為酆世昌與劉承彥於 2021 年出的第二版, 它的第一版是 145 個技巧. 書中範例下載網址已經因為酆老師往生, 所開設的昊瀚資訊結束營業而無法下載 : 


但博碩的網站還可以下載 :


EditPlus 編輯器 Verilog 語法設定

二哥昨天問我說 EditPlus 能不能高亮顯示 Verilog 語法, 我到 EditPlus 的語法外掛網站找還真的有, 最新的是 2007 年版的 :





將下載之 zip 檔解壓縮後會得到語法檔 verilog.stx, 只要將它複製到 C:\Users\user\AppData\Roaming\EditPlus 3\ 底下後開啟 EditPlus, 然後到 Tools/Preference 功能表中設定即可. 

注意, 雖然 EditPlus 主程式是安裝在 C:\Program Files\EditPlus 3\ 下, 但語法設定檔 xxx.stx 與程式模板檔 template.x 卻不是放在 Program Files 這邊, 而是在使用者目錄的 AppData 下面, 但此目錄為隱藏資料夾, 必須在 C 碟 "使用者" 目錄的 "檢視" 中勾選顯示隱藏檔才看得到 : 




點 AppData 進去, 再點 Roaming 資料夾就可看到 EditPlus 3 資料夾了, 首先將上面解開的 verilog.stx 複製到這裡, 然後順便製作 Verilog 的模板檔 template.v, 用 EditPlus 開啟一個空白檔, 輸入最常見的全加器當模板 :

module fulladder (input a, b, c_in, output sum, c_out);
wire s1, c1, c2;

xor g1(s1, a, b);
xor g2(sum, s1, c_in);
and g3(c1, a,b);
and g4(c2, s1, c_in) ;
or g5(c_out, c2, c1) ;

endmodule

然後將其存成 template.v (Verilog 副檔名為 .v), 複製到 AppData/Roaming/EditPlus 3 底下 :




然後就可以到 EditPlus 的 Tools/Preferences 中進行設定, 首先點選左方的 Settings & Syntax, 然後按又上方的 "Add" 鈕, 在彈出視窗中輸入 Verilog, 這樣上方的程式語言框內就會添加 Verilog 了, 可按 Up 或 Down 鈕調整順序 :




點選剛剛新增的 Verilog, 然後按 "Syntax file" 框後面的 "..." 鈕, 點選 AppData/Roaming/EditPlus 3 資料夾下的 verilog.stx 檔, 另外還要在 File extensions 欄輸入副檔名 v (這很重要, 沒設這個就不會有語法高亮顯示效果), 最後按 OK 即完成語法檔設定 : 




接著設定模板檔, 參考 : 


在 Tools/Preferences 選單按左方的 Template, 按右上方的 Add 鈕或按 "File name" 框後面的 "..." 鈕 , 點選 AppData/Roaming/EditPlus 3 資料夾下的 template.v 檔再按 OK 鈕即可 : 




這樣就完成模板檔設定了, 開啟新檔時點選 Verilog 就會從這個檔案載入模板 : 





可見關鍵字都已經被高亮度顯示了. 

不過這個 2007 年版的只有 stx 語法檔, 沒有 acp 自動完成檔, 可以從 EditPlus 外掛網站下載比較早的版本, 例如 2002 年的 : 




解壓縮後將其中的 verilog.acp 檔複製到 AppData/Roaming/EditPlus 3 底下, 然後於 Tools/Preferences 選單的  Auto-completion 欄位中勾選 verilog.acp 即可 :




也可以設定在 EditPlus 上編譯與執行 Verilog 程式, 編譯程式為 iverylog, 執行則為 vvp, 參考 :


設定方式參考下面這篇 :