2024年11月7日 星期四

Windows 開發筆記 - 將 Windows 11 筆電作業系統重置/還原至乾淨的環境與建立本地帳號密碼登入方式

由於 Windows 筆電常拿來實驗軟體,環境裝得有點亂,把它重置一下,筆記一下流程,哪天應該會用到:

系統 -> 復原 -> 重設此電腦 -> 本機重新安裝 -> 變更設定 -> 是否清除資料 (是) -> 按下重設就開始進行






接著會花一點時間,例如 20-30 分鐘後,筆電重開機,此台筆電就進入顯示 "正在重設這部電腦 10%" ,依筆電規格運算時間不同,在這台大概還要運行 40 分鐘:



手上的筆電,還會問你要不要保留筆電相關 keys ,通常是推薦選 ESC 略過清除:

A configuration change was requested to clear this computer's TPM (Trusted Platform Module).

WARNING: Clearing erases information stored on the TPM.
You will lose all created keys and access to data encrypted by these keys.
Press [F9] to confirm, ESC to reject

The system will restart.

詢問 Claude.ai 提供的資訊:

這個訊息是關於 TPM (Trusted Platform Module,信賴平台模組) 的重要警告。讓我解釋一下:

TPM 是電腦主機板上的一個安全晶片,主要用來:
1. 存儲加密金鑰
2. 保護 Windows Hello 的生物識別資料(如指紋)
3. 保護 BitLocker 硬碟加密的金鑰
4. 確保開機過程的安全性

這個警告在告訴你:
- 系統正在請求清除 TPM 中的資料
- 如果你按下 F9 確認清除,你將會失去:
  - TPM 中儲存的所有加密金鑰
  - 使用這些金鑰加密的資料的存取權限
- 按 ESC 可以取消這個動作

建議:
1. 如果你正在重置電腦並打算重新開始使用,按 F9 沒有問題
2. 如果你的電腦有使用 BitLocker 加密,請確保你已經備份了重要資料
3. 如果你不確定要不要清除,建議先按 ESC,等確認沒有重要資料需要保留後再進行

清除後,系統會重新啟動,而 TPM 會重新初始化以供新的 Windows 安裝使用。

接著,就像筆電剛買回來初次啟動一樣,開始被問要怎樣登入系統。印象中只要一開始設定好連外網路後,由於 Windows 也都在推廣自家帳號跟雲端服務,選個人使用會一直卡在被要求註冊一個帳號或登入一個微軟帳號,這時可以使用 "為公司或學校設定",在這種組織流程中可以像以前 Windows 7 等等,直接創建本機帳號:

為公司或學校設定 -> 登入選項 -> 改為加入網域 -> 輸入






接著進入系統後,大概會繼續做:
  • 系統安全更新 -> 升級到最新
  • 系統 -> 遠端桌面 -> 啟用
  • 系統 -> 電源和電池 
    • -> 電源
      • -> 螢幕與睡眠 -> 插電時,在下列時間後讓裝置進入睡眠狀態:永不
      • -> 電源模式:最佳效能
  • 關閉 筆電關閉就進入休眠
    • Ctrl + R -> 輸入 control panel
      • -> 控制台 -> 硬體與音效 -> 電源選項 -> 選擇蓋上螢幕時的行為
        • 當我關閉筆記電腦螢幕時:一般電源 -> 不進行動做
  • 開始 選單 -> Microsoft Store
    • -> Python 3.12
    • -> Visual Studio Code
    • -> Brave Browser
    • -> Mozilla Firefox
  • 啟用系統內建 OpenSSH Server
    • Ctrl+R -> 輸入 services.msc -> 找尋 OpenSSH 伺服器 
             -> 按 右鍵 選 啟用
             -> 按 右鍵 選 內容 -> 啟動類型 -> 自動
    • 防火牆設定 -> Ctrl+R -> wf.msc -> 輸入規則 -> OpenSSH SSH Server (sshd) 
             -> 進階 -> 設定檔 -> 勾選 網域/私人/公用
  • 啟用 telnet 工具
    • 控制台 -> 程式集 -> 程式和功能 -> 開啟或關閉 Windows 功能 -> Telnet Client
  • 下載 CygWin 安裝更多工具
    • https://www.cygwin.com/install.html
      • 或是用 Windows 11 系統內建的 curl 來下載
        • C:\Users\User\Downloads>curl https://www.cygwin.com/setup-x86_64.exe > setup-x86_64.exe
    • 安裝 curl, wget, vim, git, cmake, clang, autossh 工具
    • 之後透過 command 遠端登入 Windows 筆電時,可以在靠指令切換到 CygWin 的環境:
      • C:\Users\User>C:\cygwin64\Cygwin.bat 

        User@PC ~
        $

        User@PC ~
        $ pwd
        /cygdrive/c/Users/User
  • 使用 winget 指令:learn.microsoft.com/zh-tw/windows/package-manager/winget/
    • 太久沒用 Windows ,沒想到 Microsoft 有推出自家牌 winget 套件管理工具,直接用他安裝工具
    • 安裝完記得要重新登入才會更新工具搜尋環境,但是,有些工具裝完的確找不到,需自行更新 PATH 資訊
    • 範例一:安裝 wget 指令
      • C:\Users\User>wget
      • 'wget' 不是內部或外部命令、可執行的程式或批次檔。
      • C:\Users\User>winget install wget
      • 找到 Wget [JernejSimoncic.Wget] 版本 1.21.4
      • 此應用程式已由其擁有者授權給您。
      • Microsoft 不負任何責任,也不會授與協力廠商封裝的任何授權。
      • 正在下載 https://eternallybored.org/misc/wget/1.21.4/64/wget.exe
      •   ██████████████████████████████  6.71 MB / 6.71 MB
      • 已成功驗證安裝程式雜湊
      • 正在啟動套件安裝...
      • 新增的命令列別名: "wget"
      • 已修改路徑環境變數;重新啟動命令介面以使用新值。
      • 已成功安裝
    • 範例二:安裝 git vim
      • C:\Users\User>winget install git vim
      • 找到多個符合輸入條件的套件。請精煉輸入。
      • 名稱   識別碼        來源
      • ----------------------------
      • My Git 9NLVK2SL2SSP  msstore
      • Git    Git.Git       winget
      • Git    Microsoft.Git winget
      • 找到多個套件: git
      • 找到多個符合輸入條件的套件。請精煉輸入。
      • 名稱            識別碼          來源
      • ---------------------------------------
      • Vim Cheat Sheet 9WZDNCRDMCWR    msstore
      • Vim             vim.vim         winget
      • Vim             vim.vim.nightly winget
      • 找到多個套件: vim
    • 大概就安裝這些工具:
      • C:\Users\User>winget install wget vim.vim Microsoft.Git GnuWin32.Grep CoreyButler.NVMforWindows Docker.DockerDesktop
        • 其中 vim 預設還沒更新到 PATH 環境,需要去找他出來用 "C:\Program Files\Vim\vim91\vim.exe" ,對應的還有 "C:\Program Files (x86)\GnuWin32\bin\grep.exe" 等等
如此,又變成可以遠端進去處理、測試的 Windows 節點了! 像是 Python Windows 的實驗環境就可以用:

C:\Users\User\Downloads>python -m venv venv  
C:\Users\User\Downloads>.\venv\Scripts\activate
C:\Users\User\Downloads>pip install grip 

2024年10月29日 星期二

V-TEX防水休閒鞋 鞋底 滑 / 脫膠 使用心得

源自於股癌2020年業配,那時初次嘗試了防水鞋,同年也在嘖嘖群眾募資嘗試過另一牌防水鞋,接著又買過傳統鞋廠 New Balance GORE-TEX 防水鞋,連我自己買的跟送家人穿的,近四年大概買超過 10 防水雙鞋了 XD 在 V-TEX 都買到鑽石會員...

不得不說,V-TEX 防水效果最好,我自己猜測,應當是 V-TEX 的機構設計,例如降低鞋子摺痕,使得鞋面面對水滴時,防水性能就能長效維持,而其他款牌鞋子的防水性能一開始也是好的,但相對於 V-TEX 穿一年還能防水,其他家就容易不到半年的時間隨著鞋子穿久摺痕出現而防水性失效,我想,這應當就是 V-TEX 鞋面的設計優勢

這也讓我開始推家人穿 V-TEX 防水休閒鞋,然而,產品多用後,也發現一些現象:V-TEX 的鞋底設計,有明顯劣勢。

首先,可以在 V-TEX 官網去留意鞋底設計,應該有兩三款鞋底設計,其中一款是很防滑的,穿起來也很舒適,缺點就是容易脫膠,主要是他的鞋底製作技術的關係:


其他款鞋底是一體成型的,這款就不會脫膠,但缺點就是不防滑,只要是地面微濕的磁磚或是水溝蓋,走路必須分外小心:


大概基於這些使用心得,我近期應當不會買來送家人,穿一穿脫膠也不是三秒膠可以搞定的事,而另一款不防滑...連我自己近四年都有兩次完整滑倒到手撐地和數次滑倒且順利平衡穩住的經驗 Orz 查詢網路分享文都能輕鬆看到回饋,只能說公司肯定都知道,期待之後鞋底的部分可以再次改良,這防水技術是真的沒話說。


ref: FB POST

最後一提,碰到脫膠都可以與客服尋求處理方式,售後服務是很不錯的,且 V-TEX 穿超過一年還是防水,只剩鞋底磨損,若有替換鞋底的功能,就更環保了。


近四年至少滿滿三年都穿這牌子,打從心底希望這品牌可以把鞋底改良,真的是不錯的鞋。

2024年10月14日 星期一

Linux 開發筆記 - 在 Ubuntu 16.04 使用 Docker Ubuntu 24.04 無法正常更新套件 (apt update)@ Ubuntu 16.04

追蹤到最後,解法應當是把 Host 端的 docker 更新來修正,但一開始很懶,只好遮住雙眼摸魚一下 XD

狀態:

```
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.04 LTS
Release: 16.04
Codename: xenial

$ docker run -it ubuntu:24.04 /bin/bash
root@a0f5c64ed667:/# apt update
Get:1 http://security.ubuntu.com/ubuntu noble-security InRelease [126 kB]
Get:2 http://archive.ubuntu.com/ubuntu noble InRelease [256 kB]
Err:1 http://security.ubuntu.com/ubuntu noble-security InRelease    
  The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 871920D1991BC93C
Err:2 http://archive.ubuntu.com/ubuntu noble InRelease
  The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 871920D1991BC93C
Get:3 http://archive.ubuntu.com/ubuntu noble-updates InRelease [126 kB]
Err:3 http://archive.ubuntu.com/ubuntu noble-updates InRelease
  The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 871920D1991BC93C
Get:4 http://archive.ubuntu.com/ubuntu noble-backports InRelease [126 kB]
Err:4 http://archive.ubuntu.com/ubuntu noble-backports InRelease
  The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 871920D1991BC93C
Reading package lists... Done
W: GPG error: http://security.ubuntu.com/ubuntu noble-security InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 871920D1991BC93C
E: The repository 'http://security.ubuntu.com/ubuntu noble-security InRelease' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.
W: GPG error: http://archive.ubuntu.com/ubuntu noble InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 871920D1991BC93C
E: The repository 'http://archive.ubuntu.com/ubuntu noble InRelease' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.
W: GPG error: http://archive.ubuntu.com/ubuntu noble-updates InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 871920D1991BC93C
E: The repository 'http://archive.ubuntu.com/ubuntu noble-updates InRelease' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.
W: GPG error: http://archive.ubuntu.com/ubuntu noble-backports InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 871920D1991BC93C
E: The repository 'http://archive.ubuntu.com/ubuntu noble-backports InRelease' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.
E: Problem executing scripts APT::Update::Post-Invoke 'rm -f /var/cache/apt/archives/*.deb /var/cache/apt/archives/partial/*.deb /var/cache/apt/*.bin || true'
E: Sub-process returned an error code
```

硬解:

```
root@a0f5c64ed667:/# apt update --allow-insecure-repositories
...
```

安裝軟體:

```
root@a0f5c64ed667:/# apt install -y --allow-unauthenticated vim wget curl git tree python3-virtualenv 
...
```

結果越裝越痛苦 XD 還是回去看 Docker 官網安裝教學:docs.docker.com/engine/install/ubuntu/#install-using-the-repository 

如此就可以在 Host Ubuntu 16.04 ,正確呼喚出 docker Ubuntu 24.04 來運行,此外,也可以留意 Docker 官方文件建議的 Ubuntu OS 環境已經是 20.04 以上了

2024年10月9日 星期三

學習完畢 Google Cloud AI Study Jam 2024 - 生成式 AI 培訓計劃


就這樣一口氣把 Google Cloud AI Study Jam 2024 都扛過去了,從月初到 10/08 晚間,每天多少都有清幾則:
原本是颱風天體驗了 Path 1 ,結果就這樣馬不停蹄地把 Path 2 跟 Path 3 也給 KO 了,真的獲益良多。

近一年當中,在 AI 應用開發跟自修上,剛好上過台大李宏毅教授的 Youtube 影片:【生成式AI導論 2024】,接著也協助公司使用 OpenAI API 建置了幾個雛形和一款稍微正式的對內服務,體驗過訓練自己的 model 來做客製化應用,以及也摸索過 RAG 應用和負責協助公司導入 AI 輔助應用等等,在這樣的背景下,進行 Path 1, Path 2 和 Path 3 仍收穫滿滿,補了不少思維:
  • 對 Google AI 的發展更新為沒脫隊!只是入門門檻高 XD 
  • 研發 AI 服務時,要想想怎樣達成開發出一個負責任的 AI 
在 Path 1:Beginner: Introduction to Generative AI Learning Path 過程時,開始熟悉 Google Cloud 的介面,儘管 2018 年左右就開始用 GCP ,但基於工作方式大多透靠 ansible + jenkins 完成任務,一直漠視了 Google 發展,這次使用上反而驚艷了一下,特別是 Gemini 小幫手到處都可以協助,不熟也沒關係,問!就對了。

在 Path 1 的課程就被 Google Cloud 網頁管理介面驚艷到,接著補了不少關於 負責任 AI 的思維,令人想起前陣子 OpenAI Superalignment 的事情,雖然有點直覺,但對於事件的感受還不夠強烈,在上完課後終於能比較全面體會了,好在 OpenAI 在 2024.05 成立新的安全委員會了。

在 Path 2: Intermediate: Gemini for Google Cloud Learning Path 課程,讓我感受到身為 RD / DevOps / SRE 時 AI 的靈壓,可以有以下體驗思維:
  • 站在資方角度,不需聘請有高深經驗者,僅需找資淺的聰明者(學習力強),只要能問對問題,靠 Gemini 補完工作,甚至快速累積經驗
  • 站在開發者進行 side project 角度,透過 Gemini 大方地享受一人工作模式,可以只專精或感興趣一個領域,剩下的靠 Gemini 模擬出 10-30 人力規模的新創組織,幫你把點子完善到成品
此外,在 Path 2 的各種角色使用 Gemini 工作的思維,讓人欽佩大公司的組織架構,在小公司都是全包了 Orz
  • Gemini for Application Developers
  • Gemini for Cloud Architects
  • Gemini for Data Scientists and Analysts 
  • Gemini for Network Engineers
  • Gemini for Security Engineers
  • Gemini for DevOps Engineers
  • Gemini for end-to-end SDLC
  • Develop GenAI Apps with Gemini and Streamlit
在 Path 3: Advanced: Generative AI for Developers Learning Path 的心得,就進入比較正式的原理課程,雖然看過過台大教授的 AI 導論,但還是在這波習得不少底層運作的觀念。



最後,差不多累積了兩萬分,其中 Quiz 錯了幾次,Lab 都一次通過。

2024年10月3日 星期四

體驗 Google Cloud AI Study Jam 2024: goo.gle/csj-tw-2024


看著認識的 Google 技術傳教士分享這活動,趁颱風天來體驗一下 XD 總算做完 Path 1 的學習歷程,微累,但至少可以拿到個貼紙禮物了?XD


共 25 份學習教材,完成時間約 48 小時。

在影片觀看上,可以用兩倍速吸收,旁邊又有中文字幕,很不錯。整體耗時是還可以接受,倒是透過這次了解 vertex ai 的操作介面,很佛的設定好 prompt 後,還可以匯出程式碼,這點很方便,若要說卡關的話,好像有某堂課要驗證 vertex ai studio 某操作項目時,一直失敗,後來我猜到了,他是在掃已儲存的 prompt 的比對方式是用英文作為判斷,這時要把 vertex ai studio 的操作資料改成英文 (examples) 才能被偵測成功完成該項目。

整體上就熟悉一下 Google Cloud 服務,很順,此外 Path 1 某堂課也有稍微改 code 的地方,對於工程師背景的人來說,看懂題目,很簡單就能完成的。印象中,有一題很卡,題目上只有一個 example ,要自己再想另一個填入,接著,還要再想額外一個當作 promot & Test Input 來實驗(總共想兩個新句子),大概這題一開始不順會瞬間喪失自信 XD 但撐過了就沒問題了。經過這痛苦後,也被訓練到,看題目時可以挑熟悉的語言(中文),但建議還要另開一頁用英文的再看一次,避免翻中文時,一些關鍵操作看不懂。特別是一些操作選單,英文清楚非常多。

之前一直想用 LangChain 也略知一二,但恰好教學內容提了簡單 Python Code 真不錯,醍醐灌頂。

過去已經約一年多都在用 OpenAI API 開發服務,這次體驗了 Google 牌,也才了解 PaLMGemini 和 Vertex AI 的不同,之前 PaLM 剛推出來時,同事整合會議記錄,但整體上還是有不少需要客製化的地方,很快就放棄整合,沒想到 Google NotebookLM 最近推出,狂勝,且根據 Path 1 的學習歷程,大概能體會 Google 在 Responsible AI 投入很驚人的資源。