[學習心得][Golang] 透過 ChatGPT 來做 REGEX 的事情

image-20230611001729736

前提

大家應該都跟我一樣,經常使用 ChatGPT 來協助一些 coding 上的問題。尤其是對於 Regular Expression 的問題。最近在處理上發現,需要透過「正向表列」,而非跟他講哪些不可以的方向比較容易成功。也應該說, Regular Expression 本來就要透過正向表來才對。

原本:

// AddLineBreaksAroundURLs takes a string as input, finds URLs,
// and inserts a newline character before and after each URL.
// It returns the modified string.
func AddLineBreaksAroundURLs(input string) string {
	re := regexp.MustCompile(`(https?:\/\/[^\s\p{Han}]+)`)
	return re.ReplaceAllString(input, "\n$1\n")
}

發現無法處理:

 https://voyager.minedojo.org/。

當我發現我一直跟 ChatGPT 講要排除 ` https://voyager.minedojo.org/。` 這個案例的時候,往往會一直卡住無法向前。 但是寫多個測試案例倒是真的蠻好的。

Unit Testing code

func TestAddLineBreaksAroundURLs(t *testing.T) {
	tests := []struct {
		input    string
		expected string
	}{
		{
			input:    "Check out this website https://example.com and this one http://another-example.com",
			expected: "Check out this website \nhttps://example.com\n and this one \nhttp://another-example.com\n",
		},
		{
			input:    "Here is an URL with dot at the end https://voyager.minedojo.org/。",
			expected: "Here is an URL with dot at the end \nhttps://voyager.minedojo.org/\n。",
		},
		{
			input:    "This is another test 可在https://voyager.minedojo.org/上訪問。",
			expected: "This is another test 可在\nhttps://voyager.minedojo.org/\n上訪問。",
		},
		// Add more test cases here as needed
	}

	for _, tt := range tests {
		res := AddLineBreaksAroundURLs(tt.input)
		assert.Equal(t, tt.expected, res, "Should correctly insert line breaks around URLs")
	}
}

正面表列

後來決定,透過正面表列來解決這個問題。

// AddLineBreaksAroundURLs takes a string as input, finds URLs,
// and inserts a newline character before and after each URL.
// It returns the modified string.
func AddLineBreaksAroundURLs(input string) string {
    re := regexp.MustCompile(`(https?:\/\/[\w\/\?\&\.\-]+)`)
    matches := re.FindAllString(input, -1)
    for _, match := range matches {
        input = strings.Replace(input, match, "\n" + match + "\n", 1)
    }
    return input
}

大家可以透過以下方式分享 ChatGPT link

image-20230611002225533

[TIL] 關於 WWDC 2023 身為開發者你應該知道的事情

image-20230606091609243

我如何看待 WWDC23 ?

身為技術研討會主辦人,我看的是:

  • 整體錄影方式與收音技巧
  • 每一個講者的職稱(可以看出內部分工與架構)
  • 平台想要規劃出的生態圈

職稱相關

image-20230606172229878image-20230606172232338

應該跟許多公司一樣:

  • Engineering Progam Manager - 技術專案經理
  • Engineering Manage - 技術開發的經理

職稱其實也代表部門的多寡,對外部而言很嶄新的 visionOS 部門卻有那麼多清楚分工,而且能演講的人還蠻多的。不愧是 Apple 。

硬體相關

  • New Mac Studio 可以有六顆螢幕(原來之前的不行啊?!)

iOS 17 帶來軟體開發新變化

Name Drop 近場溝通新應用

image-20230606094035126

  • 取代掉所有名片應用 (LINE OA 其實有類似做法)
  • 不知道會用到哪個 SDK ,應該會開放給其他 App 使用。

更智能的鍵盤輸入

Image

可能是使用 local 「In-line predictive text API」

Image

TV OS 相關變革

透過 iPhone 直接在 Apple TV 開會

image-20230606114817277

image-20230606114820316image-20230606114822745

走 Continuity Camera API

Vision Pro 帶來的軟體開發變化

img

(要接線~~~~~ Orz)

image-20230606120805201

果然要另外接電池

image-20230606121309156

Apple Vision Pro 帶來新的生物識別系統「Optic ID」

image-20230606151548290

可能帶來影響:

  • 虹膜辨識會變成是基本 OAuth 的認證設備(搭配 Passkey (a.k.a. FiDO2)
  • 比起 WorldCoin 可能因為 AirDrop 產生盜用 ,但是 Vision Pro 更可以取得更多人的虹膜資訊。
  • 雖然依照 Apple 的個性,不可能有任何取得方式。但是代表 Optic ID 可以更加的準確, Passkey 的未來更令人期待。

iOS SDK

Accessibility SDK

image-20230606153541003

Privacy API

image-20230606153526487

[TIL] 換 iPhone 需要注意的小事項

image-20230604204741307

為何更換手機

最近因為要出國,因為讓小孩子避免走失。買了 Apple Watch ,卻發現沒有辦法漫遊。只好弄一隻支援 ESIM 卡片的手機給他。 這樣一來,最方便的方式就是把我的手機(iPhone XR) 給他,然後我換一隻最新的 iPhone 14 Pro (明明 15 就快出了)

大部分的軟體使用「iCloud 備份與復原」應該可以搞定。

iPhone 系統軟體,需要注意的部分

  • 舊手機:

    • 記得把 Find My Device 關閉
    • 記得登出 iCloud (先將以下都做完,先將以下都做完,先將以下都做完)
  • Apple Watch

    • 需要先解除配對(就算忘記也沒關係,就重新配對洗掉)
  • Apple Pay

    • 全部要重新認證(到新手機)

    • Apple Watch 的 Apple Pay 也要重新認證(也是在新手機上操作)

不要急著洗掉就手機 iCloud 備份與復原後,有一些 App 可能需要他。

大部分的應用程式都可以走 iCloud 復原來安裝(開啟的時候,也通常可以無痛轉移)。但是有一些應用程式需要舊手機轉換。

  • Steam App
    • 需要舊手機認證,才能轉換。
  • WeChat
    • 一樣,需要舊手機掃描 QR-Code
  • VPN 軟體
    • 每個公司可能不同,有的管制更嚴格。
  • LINE 的部分,完整可以參考【LINE換機官方懶人包】帶您一步一步操作~ iOS與安卓都適用
    • 舊手機:
      • 先去備份起來(可以透過 iCloud)
      • 要確保有備份完整,確保有備份完整,確保有備份完整
    • 打開手機裝 LINE
      • 掃描舊手機 QR Code 登入,並且轉換手機。
      • 這時候,選擇從備份恢復。
      • 如果,發現沒有完整恢復回來?(也就是備份有失敗)
        • 想要打開舊手機,會發現已經轉換過來,無法開啟。
        • 刪除舊手機的 LINE ,重新安裝。
        • 重新以上步驟,將新手機帳號轉換回來就手機。
        • 這時候發現對話都回來了,再來重新備份一次。這次要注意有沒有備份完成。
        • 然後重複手續,轉換到新手機。

大概就這樣,本來以為換手機很方便。結果也是卡蠻久,最重要的還是 LINE 卡住(嗚著臉)。

[TIL] Microsoft Build 2023 Day2- 資訊整理

image-20230525100950428

影片:

(官方直播,可能會下架)

Plugin 會是新世代的 Fontend

前一天 CTO Kevin Scott 在 “The era of the AI Copilot”

image-20230525101053577

image-20230525102351165

關於 IDE 對於 Plugin 開發的支持

image-20230525134906708

  • Web IDE 支援很快速建立 Copilot Plugin

這裡有個 Jira Copilot Plugin 案例

image-20230525135841131

image-20230525135904283

image-20230525135931099

商業用語部分 - Syntex Plugin

image-20230525140354258

image-20230525140413639

  • Docu sign flow with Copilot

Copilot 總結

image-20230525140520001

關於 Plugin - Developer Success

image-20230525140619283

  • Productivity:

    • 完整的說明,有相關的 “Team Toolkit”
    • 有個人化體驗
    • 可以很方便開發跟 Deploy

    image-20230525140815459

Dev Home: 快速建置開發者的相關環境

image-20230525142557183

  • 透過帳號登入
  • 相關設置都有
  • 今天有 Preview 版本在 Windows Store

Build and maintain your company Copilot with Azure ML and GPT-4 | BRK211H

整個流程相當清楚,又能完整呈現 Azure Copilot 與 Azure ML 的強大。

image-20230526153901836

  • 先建立一個情境,幫生意擴展找客戶挑選 TA
  • 透過 Copilot 給予相關的信件:
    • 這裡想要給予更多更貼近 TA 的資訊,尋找過去信件與相關資料。

image-20230526153841220

[TIL] Microsoft Build 2023 Day1- 資訊整理

image-20230525101507051

這一屆有很多重要消息:

  • Windows Copilot (Windows 內建 chatgpt)
  • ChatGPT with Bing Search (include free tier)
  • Azure AI Studio
  • Dev Home : 登入帳號直接連接 github (windows 相關)

  • Microsoft Fabric : all-in-one BI platform

同步也分享一下,不論是 MSFT CEO 跟 CTO 都有強調關於 Plugin 生態圈的重要。以後微軟許多環境,應該都有 GPT 的存在。 但是又開放許多 3rd Party 開發 Plugin 系統。 來客製化自己的搜尋體驗。這就再次呼應到「生態系競爭策略」這本書。

[TIL] Google I/O 2023 - Developer Keynote 資訊整理

image-20230511092146539

Google I/O 2023 Developer Keynote 相關資訊與討論整理串。 (賣手機跟雲服務的 Google Keynote,有太多新聞可以查,我就不列了 XD)

Fip IO

官方運用所有開發工具寫出的卡牌遊戲。 Google I/O FLIP - A Generative AI Card Game

image-20230511092241614

Prompt helper on Bard: (這個名字我是創的)

你輸入幾個 prompt ,他會幫你把剩下的 prompt 都產生。 比如說你要 JSON ,他會產生預設的格式。

image-20230511092302688

Android Studio Bot

目前只有在開發者先行版本 Canary Build 才有,Android Studio Bot: 就類似其他 IDE Bot ,幫你透過自然語音提供建議與程式碼。還有相關文件也給你。 相關文件跟其他演講image-20230511092826468

Web Assembly 更新

WebAssembly 是一种新的代码类型,可以在现代 Web 浏览器中运行,并提供性能上的重大提升。它不是主要用于手写,而是旨在成为源语言(如 C、C++、Rust 等)的有效编译目标。这对 Web 平台有巨大的影响,因为它使得许多语言可以直接编译成 WebAssembly 代码并在浏览器中运行。WebAssembly 支持许多语言,包括 C、C++、Rust 等等。²¹

如果您想了解更多关于 WebAssembly 的信息,请访问 Mozilla Developer Network 的 WebAssembly Concepts 页面²。

支援 Managed-memory languages

如果 WebAssembly 支援 Managed-memory languages,那麼它將能夠支援更多的語言,例如 C#、Java、Python 等等。Managed-memory languages 是一種具有垃圾回收功能的語言,這意味著它們可以自動管理內存,而不需要手動分配和釋放內存。

image-20230511094731456