[GopherDay 2024] GopherDay Taiwan 2024

image-20240525092215186

What is the iterator and how does it build an ecosystem in Go?

https://docs.google.com/presentation/d/1KBqbbxt2ASQv1g3VlQ8kQgnzlHAdncbkqBD5cYPdKo0/edit#slide=id.p

Range from integer

for n:= range 10 {
	fmt.Println("%d", n)
}

----
0
1
....

Zero-based.

Range func

for range seq {
	fmt.Println("in loop")
}

---
func seq(yield func(n int)) {
	yield(100)
}
----
"in loop"

image-20240525094411132

Mastering Large-Size HTTP Requests in the Modern Web - Cherie Hsieh

HackMD : https://hackmd.io/4BdxdwAZTQiqLvg6EzcYng

Reflect 用太多,都不好意思跟別人說 Go 靜態了 - 高宜誠 / YC Kao

HackMD: https://hackmd.io/RB2_GBZFR7eO775PSb1n1A

  1. 用 Reflect.IndexOf 會比起 NameOf 快十倍,如果不需要重複尋找。儘量用 IndexOf

[MSFT Build 2024] Microfost Build 2024 開發者相關整理

主要觀賞 link: https://www.youtube.com/watch?v=ddcZnW1HKUY

AI 摘要整理:

📚 整體摘要

  • 此文主要介紹了如何利用人工智慧(AI)技術,尤其是微軟公司的發展與應用,幫助提高農業生產力,改善教育系統,以及自動化軟體開發過程。文中提及了多個實際案例,強調AI技術在多個領域的應用潛力與效益。

🔖 重點概念

  • AI在農業的應用:透過數據分析提升農業生產效率。
  • 教育轉型:AI作為個人化學習助手,改變傳統教學方式。
  • 開發效率提升:GitHub Copilot等工具協助開發者節省時間與提高代碼質量。
  • AI與辨識技術整合:透過語音和視覺等多模態輸入,增強AI的應用場景及互動效率。
  • 智慧型數據中心:優化AI運算性能與環境配合,支援更大規模的AI訓練及應用。

💡 為什麼我們要學這個?

  • AI技術的快速發展不僅改變了農業、教育等多個行業的運作方式,還在軟體開發領域中創造了新的可能性,了解這些技術如何運作並實際應用,對未來的職業發展及創新有莫大的幫助。

❓ 延伸小問題

  • 在現實世界中,您認為AI技術將在哪些未被充分開發的領域中發揮重大影響力,並為什麼?

幾個重點

PyTorch native support in Windows (thorough DirectML)

image-20240522092430429

[Google I/O] Google Developer I/O Developer Keynote 整理

image-20240515122008130

主要觀賞 link: https://www.youtube.com/watch?v=ddcZnW1HKUY

AI 摘要整理:

📚 整體摘要

  • 此摘要涵蓋了在會議中如何使用 Gemini API 和 Google 的 AI 工具以及相關技術來強化應用程式開發的介紹。

🔖 重點概念

  • Gemini API 可以整合至 Android Studio 和其他開發工具,增強開發效率。
  • 透過使用 Google Cloud 和 Vertex AI,開發人員能夠接觸到更強大的 Gemini 功能。
  • 提供多平台開發的一體化工具,如 Flutter 與 Firebase,用以支持快速開發。
  • 開發者可以自定義 AI 模型,改善應用性能與用戶體驗。
  • 強調隱私和安全,在開發過程中保護用戶數據與合規性。

💡 為什麼我們要學這個?

  • 理解和運用現代 AI 和多平台整合工具是提升開發效率和應用創新性的關鍵。

❓ 延伸小問題

  • 在你的下一個開發項目中,你可能如何利用 Gemini API 或其他 Google AI 工具來提升產品的性能或用戶體驗?

幾個重點

Gemini 1.5 Flash

image-20240515091748133

  • 支援兩百個國家以上

image-20240515091903439

它擁有以下主要功能與特典:

  1. 快速反應:Gemini 1.5 Flash 能夠生成更快的回應,進而提高使用效率。
  2. 適應性:它能夠對翻譯、推理和編碼等任務的能力進行改善,使其更加強大。
  3. 增強的理解能力:這一模型擁有 100 萬個 token 的上下文窗口,進而提高其運行的效

Google AI Sudio 支援 2M token context windows

  • 原本 Gemini 1.5 Pro 是 1M token

Google Gemini API Competition

  • image-20240515093249577

  • https://ai.google.dev/competition?hl=zh-tw

  • image-20240515093252124
  • Google AI Competition 贏得人可以拿到 DoLorean (回到未來那一台)
  • image-20240515093942157
  • 甚至還找了「回到未來」的飾演博士的演員(真的也太老開發者才會知道的)

Gemini on Android - Gemini Nano

image-20240515102730901

  • OS 中似乎有個 AI Core
    • Gemini Nano 和 LoRA 在 Android 的 AI Core 中主要是為了提升 Android 設備的本地 AI 能力。這種設定使得設備能夠在不依賴雲端服務的情況下有效地執行 AI 強化的任務,進而提升隱私、減少延遲和降低數據使用。
    • Gemini Nano 是 Google 專為本地任務優化的 Gemini AI 模型。它設計用於直接在移動設備處理器上運行,能夠支援多種重要用例,如摘要、提問回答、實體抽取和校對。這使得應用程式能夠在裝置離線的情況下提供高品質的反應,並具有對話意識。
    • LoRA(Low-Rank Adaptation)是一種允許在不大幅增加模型尺寸的情況下有效地微調大型語言模型的技術。在 Android 的 AI Core 中,LoRA 可以被用來將 Gemini Nano 模型適應特定任務或領域,使其更加高效和針對個別應用程式的需求。
    • 通過在 Android 的 AI Core 中加入 Gemini Nano 和 LoRA,Google 旨在為開發者提供強大的工具,以便構建 AI 強化的功能和應用程式。這將為使用者在各種任務和領域提供更智能、更敏捷、更保護隱私的體驗。

image-20240515103328968

(GPT4-O 本來以為 Grammarly 要死~結果 Andorid 內建)

  • 原來三星之前就有,Google 只是整個收進 Android OS https://twitter.com/Chiebuniem_/status/1493926483500412931/photo/1

放入 Android OS 中能做到:

  1. 拼字檢查:即時發現拼字錯誤,提醒使用者對錯誤的單字進行更正。
  2. 文法檢查:幫助使用者找出文法錯誤並提供正確的用法建議。
  3. 句子結構:協助使用者改善句子結構,提升句子的清晰度和流暢度。
  4. 清晰度和簡潔性:提供建議以提升寫作的清晰度和簡潔性。
  5. 語氣和友善度:協助使用者適當調整語氣和友善度,以符合不同情境的需求。
  6. 個人字典:允許使用者添加自己的單字,避免將這些單字誤認為拼字錯誤。
  7. 對不同語言的支援:允許使用者選擇英式英語或美式英語的拼寫規則。

這些功能使 Grammarly 成為 Android 系統上的有效寫作輔助工具,幫助使用者改善寫作質量,提升溝通效率和准確性。

Kotlin/ Gemini on Android Studio (跳過) XD

Firebase 相關(這些蠻有趣的)

  • 🐘Data Connect, PostgreSQL backend-as-a-service
  • 🌎App Hosting, web hosting for modern frameworks
  • ✨Genkit, a GenAI framework for app developers

[好書分享] 一個投機者的告白(增修版)

一個投機者的告白(增修版)
作者: 安德烈.科斯托蘭尼  
原文作者: André Kostolany  
出版社:商業周刊 
出版日期:2018/02/01 

買書推薦網址:

前言:

這是 2024 年第 3 本讀完的書,這一系列跟著:

書本類型蠻類似的。

內容摘要:

投資必讀經典!在台累銷90萬冊,電子書首度上市!

詭譎多變的市場裡,永恆不變的指引——
傳奇散戶投機家、德國股神科斯托蘭尼

「人心+資金」決定所有市場起落,
咀嚼大師智慧,小散戶也能成為自由支配財富的貴族

他沒有股神華倫.巴菲特(Warren Buffett)旗下的波克夏集團大軍,卻能與股神平起平坐;沒有債券,天王葛洛斯(Bill Gross)千百人的研究團隊,但只要他動口,全球市場皆側耳傾聽;他不像投資大鱷索羅斯(George Soros)會在各地發動貨幣戰爭,但當他一派優雅提出某國貨幣被錯估時,沒有一個政府敢掉以輕心。他是「德國股神」安德烈‧科斯托蘭尼(André Kostolany),古往今來的大師中,少數不打團體戰、特立獨行的散戶投機家。

科斯托蘭尼的一生充滿矛盾和對立:1906年出生於匈牙利, 13歲就靠貨幣套利賺進人生第一筆投機財,21歲踏入證券業,30歲出頭便已賺到百萬美元(約合現今新台幣1億2,000萬元)的身價,但也曾因看錯方向而破產兩次。一生出入全球78個交易所,歷經兩次世界大戰、數次股市崩盤和石油危機,20世紀所有的通膨、緊縮、升值、貶值都深刻記在腦中,科斯托蘭尼用自己的財富告訴世人,只要貫徹幾個簡單的想法,就能在雜音四處的交易市場中找到主旋律,交易所也就會從殺聲震天的賭場變成充滿美妙音樂的樂園,再加上資金、耐心及堅強的心臟,一個散戶或許比專業法人更有機會成為自由支配時間及財富的貴族。

《一個投機者的告白》是科斯托蘭尼一生集大成之作。本書於1999年2月動筆,9月科老病逝巴黎,12月本書在德國出版,為科老生前最後一本作品。經歷80年投資生涯,一生富裕、優雅、從容,科斯托蘭尼畢生通透掌握以錢賺錢的精髓,以幽默、雋永和風采,寫下精彩絕倫的93年人生告白。他說:「我是投機人士,始終如一!」這本匯集當世投資/投機智慧精華的書,就是科斯托蘭尼最無私的禮物。

心得:

整本書都是在分享他的投資過程。並且有相關的心理狀態的分析,在不同階段給予不同得心裡敘述。讓我印象最深刻是最後一個章節,裡面有提到有人為了結婚而離開了投資的市場。將手上的股票全部賣掉後專心地過生活,但是遇到股市大好的時候,又想要加入整個投資圈。於是又過頭來繼續投資。 像極了賭博式的心態,也代表著有一些投資圈的人就像上癮般的喜歡投資的原因。

[Golang][Render] 如何透過 Github Action 讓 Golang App 部署到 Render.com

image-20240505232556431

前情提要:

雖然我近期已經把所有服務都已經從 Heroku.com 搬遷到 GCP 上面,但是 Render.com 本來也是我教學的一個方案。畢竟它擁有不需要信用卡,有免費額度可以讓學生們快速上手。 這邊快速記錄一下該如何透過 Github Action 部署 Golang 服務到 Render.com 的流程。

如果啟動部署,流程會是:

  • 完成 PR Merged 之後
  • Draft a Release 在 Github 上面
  • 然後會啟動自動部署到 Render.com

範例程式碼:

可以參考這個 REPO https://github.com/kkdai/linebot-food-enthusiast

如何開始設定 Github Continuous Deployment

1. 取得 Render.com API Key

2. Render.com API Key 跟 Services ID 填寫到 Github 設定

你到你專案的設定 Secrets and Variables -> Actions

image-20240506121253792

image-20240506121347433

3. render config file render.yaml

放在 github 根目錄

services:
- type: web
  name: linebot-food-enthusiast
  env: go
  buildCommand: go build -o app
  startCommand: ./app
  plan: free
  autoDeploy: false
  envVars:
  - key: ChannelAccessToken
    sync: false
  - key: ChannelSecret
    sync: false
  - key: GOOGLE_GEMINI_API_KEY
    sync: false

4. render.com Github Action

放在 https://github.com/kkdai/linebot-food-enthusiast/blob/main/.github/workflows/render_deploy.yml

name: Render Deploy

on:
  release:
    types: [created]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Deploy to production
        uses: johnbeynon/[email protected]
        with:
          service-id: $
          api-key: $
          wait-for-success: true

其他 Q&A

image-20240506121619207

Q: 看到有一些錯誤顯示,那是否有問題?

A: 目前不會造成部署的錯誤,但是會有錯誤訊息發生。

image-20240506122442086

參考文章:

[Golang][GCP] 透過 Cloud Shell Editor 來部署 Cloud Run 服務

image-20240505134906848

前提:

Cloud Run 其實很方便,可以很快速地將 Heroku 的專案搬移過來。可以透過 Create Services 的方式將 github 的專案直接建立一個 Coontinues Deployment 的流程在 Cloud 。 但是本篇文章會介紹另外一種方式,可以透過 Cloud Shell Editor 的方式也是可以部署你的 github 專案到 Google Cloud Run 的平台。

使用 Cloud Shell Editor 來部署 Cloud Run 服務

image-20240503121609014

image-20240503121650413

image-20240503121810435

image-20240503122134392

image-20240503122152505

  • 點選左下角的 Cloud Code ,啟動認證。

image-20240503122237357

  • 這邊點選 Deploy to Cloud Run

image-20240505132951404

image-20240505132953744

  • 基本上變動都不用改,直接選預設的就可以。

image-20240505133230357

  • 然後回到 Cloud Run 設定,加入原本需要的環境變數。
  • 這樣就可以了。

參考文章: