July
22nd,
2024
異類矽谷
老派矽谷工程師不正經的深度田野踏查
作者: 鱸魚 出版社:時報出版
買書推薦網址:
Readmoo: 由此去購買。
前言:
這是 2024 年第 8 本讀完的書。還記得當初畢業的第一份工作,找了一個美商公司去上班。(老闆其實是台灣人)然後上班第一個月也很幸運(?)就被派去矽谷出差一個多月(我記得是 50 多天),那一段時間的工作體驗也相當的特別。後來有其他機會去矽谷參加研討會,也有機會看到不同得面貌。這一本書就讓我蠻有感觸的。
內容摘要:
矽谷不是地名,是文化。
在白人只占三成而且其中很多都不是美國人、半數工程師是印度人的矽谷,沒人在乎口音也不講究排場,全公司上下包括CEO都穿牛仔褲,「正式」不過是把T恤換成襯衫。
矽谷人從不羨慕別人開什麼車,畢竟沒人會羨慕別人穿什麼襪子,講究的人根本不買車,沒車最酷最環保。新一代工程師甚至沒人抽菸,因為那太落伍。
◎最精準的矽谷直送
矽谷不喜歡也不浪費時間在繁文縟節,開會只想聽真問題並找到解決方案。在這裡,有司機並不比當Uber司機光榮。若要求矽谷CEO為了尊榮感放棄隱私,那將是種羞辱。
來自全世界的矽漂族共同打造了矽谷,這裡追求的不是明天會更好,而是明天「一定要」更好,以最高效率打造個人和企業價值,卻也大方犒賞、無情淘汰,既勢利又誠實。
####
投影片
https://gamma.app/docs/jqvjlzehglge9p0?following_id=jehro1dlnujeazj&follow_on_start=true
心得:
這本書相當有趣的敘述了矽谷生活的許多大小事情,裡面提到的關於印度人的讓我印象很深刻。
「矽谷早已不在乎口音
上面舉的這些字是我工作上每天都會面對的。折磨了二十多年,每次都從困惑到試圖解碼,最後不了了之,因為對話早已結束,也造就了我學會深度敷衍的技巧。這是在矽谷工作必須承受的另類職業傷害,保險絕不給付。
然而,矽谷在乎的是說話的內容,不是口音。當很多華人工程師的英文寫作還在「沒有錯」的邊緣掙扎,印度人的英文寫作早已超越了美國人,用字與表達無不精準有力。
矽谷在乎的是內容,這也是為什麼印度人能夠蜂擁進入高階主管群,華人在這方面連車尾燈都看不到。」
還有最近一次去就是 2019 年去參加 Google I/O ,那一次去尋找飯店的時候就聽到同行的友人有人在看的飯店,評論竟然是停車場容易有毒品交易,這也是讓我相當的驚訝。
這本詳細敘述了在矽谷的工程師,其實不一定是人人欽羨的工作。高待遇帶來的高度壓力,並且住宿品質也沒有其他區域好。卻要付出更多的住宿費用與交通時間。這些問題雖然在疫情之後應該有了極大的改善,但是聽說又帶來新的一波遊民問題。因為過多的外來勞工與遠端工作的人,許多原本在矽谷定居的人失去了工作機會。
近期的矽谷除了遊民問題外,還有 2020 開始的野火問題。也讓矽谷的人經常處於不好的空氣環境。
在舊金山灣區的北灣,有著大家最熟悉的景色。 XP 的桌布畫面。
繼續閱讀
July
21st,
2024
歷史,就是戰
黑貓老師帶你趣解人性、權謀與局勢
作者: 黑貓老師
插畫: 魔魔嘎嘎
出版社:圓神出版
出版日期: 2018/01/01
買書推薦網址:
Readmoo: 由此去購買。
前言:
這是 2024 年第 7 本讀完的書。這一系列的歷史小品書,都是我拿來當作休閒用的閱讀書籍。加上看起來有不少有趣的插畫跟不錯的小故事。就買了下來。
內容摘要:
狂人的心機謀略X戰場上的超展開
妙讀歷史,秒懂國際間的爾虞我詐
有這麼多人想要征服世界,但是從來沒成功過!
看看我們的世界,到底是怎麼被這些人搞成這樣的!ヽ(`Д´)ノ
第一本用鄉民語言專業撰寫,讀歷史不再頭昏腦脹,而是笑得精神抖擻!讓人不禁吶喊,當年我的歷史老師這麼教就好了!
★(O_ O)打破本國和世界史的界線,跳脫的縱線學習,結合地理概念,縱貫交叉,帶出新史觀
★(゚∀。)用看故事的方式趣讀歷史,從熱戰到冷戰,全盤了解影響世界局勢的10大重要戰爭
★( ´ω`? )旁徵博引各種有趣的豆知識,讓你的歷史戰鬥力大爆發,程度再升級
★(゚Д゚)搞懂鬥氣鬥智、縱橫沙場、老謀深算的那些大人物到底在打什麼謀略的算盤
心得:
這一本書敘述了近一兩百年最重要的一些戰役,透過生動有趣的口吻,讓大家知道其實許多的戰爭由來,並且如何分析相關的因果關係。比如說第一次世界大戰,就是野心勃勃的德國,遇上相關爭議所引發的。但是第一次世界大戰的賠償卻也是引發第二次世界大戰的導火線。 相關的戰略要素跟幾個重大的戰役,也都用很幽默的口吻跟有趣的史實來分享。
後續的侵華戰爭,加上國共內戰也是敘述得很精彩。真的讓人可以看得出來人類的歷史真的就是一個戰。但是身為讀者的我們,要了解戰爭不是只是表面上的相關意象,更不是幾個人的意氣之爭。往往在許多國家的利益糾葛,與許多的歷史因素交織而成。這一本書真的可以讓人在輕鬆的心情下來吸收相關的知識。
繼續閱讀
July
20th,
2024
弘兼憲史上班族基本數字力
買書推薦網址:
Readmoo: 下架了
前言:
這是 2024 年第 6 本讀完的書。 當初看到作者就買了,本來想說可以補充相關知識的。
內容摘要:
你知道薪資明細表裡的機關嗎?
「成本」究竟是什麼?
貨物賣得多,錢就賺得多嗎?
上班族不可缺乏的基本數字力,數字力強,工作才能做得好。
◆只要數字概念強,你就能成為工作能力佳的上班族!
不論職場菜鳥或老鳥,不管是什麼樣的工作,多少都會接觸到和數字相關的業務內容。舉凡產品成本估算、定價;個人薪資所得;產業景氣循環;企業經營分析、償債能力等,都是身為優秀上班族,不可不知的超基本常識。
像是新聞報導常見的「景氣動向指標」,它是根據對景氣的變動敏感的幾項指標組合而成,其中指標可分為「領先指標」、「同步指標」、「落後指標」三種。由於組合了多項指標,可對景氣的狀況做出綜合性的判斷與預測,得知目前景氣好或壞,決定公司因應的各項策略。
另外,經營分析經常用在調查企業的往來對象上,但除此之外也有其他用途。例如,要投資股票時,必須先得知投資標的那家公司的狀況。因此,經營分析相當有用。如果先學會經營分析,也會變成能夠更深入理解新聞媒體報導關於企業的事。
諸如此類,上班族必備的基本數字力,包含面對個人、產品、市場、企業、商業等各領域的業務。本書提出各類數字的計算由來,運用的方法,讓你輕鬆掌握關鍵數字,解決問題無往不利。
心得:
弘兼憲史一直是我很喜歡的漫畫家,他最有名的就是「課長-島耕作 」。裡面除了有日本上班族的心路歷程外,最重要的就是針對日本企業各種文化的考究與整理。 這一本也是,整理了很多相關的基本知識。 但是隨著有在投資股票,許多的基本相關財務報表的基本概念也就出現了。 因為有一些財報的分析,能夠了解裡面的基本原因,經常聽著財經號角跟股癌也讓我基本知識有一些些的進步。(當然賠錢賠得多,學得最多)。
不過這一本比較基本,如果有基本企業概論或是經濟學概念的人,或許就不需要閱讀了。
繼續閱讀
July
18th,
2024
前言 LLM 的盛行之後,我們可以看到許多開發者將 LLM 整入到自己的聊天機器人 (LINE ChatBot) 之中。但是隨著而來也有不同的考量開始出現。讓許多開發者感到困擾,該如何更有經濟效益,並且更安全合法規的方式來使用 LINE Chatbot。 自從 LLAMA 等開源模型發展後,我們可以看到市面上有許多相關的開源模型。 LLAMA, Gemma, Phi3 等等,甚至有許多模型是可以在自己本地端的電腦中使用的。本篇文章將介紹這一類型的 Local Model 究竟能如何跟 LINE Bot 去整合,,並且提供一些範例程式碼作為 LINE Bot 的範例。 相關程式碼 關於 LINE Bot 相關程式碼,可以參考這一段。這邊使用 Groq 的 API 服務 https://github.com/kkdai/linebot-gemma Gemma/LLAMA 這一類的模型該如何部署 不論是 Gemma 還是 LLAMA 這一類可以部署在本地電腦(或是自己的雲端伺服器裡面的),在本文中都先暫且稱為 Local Model 。 他的基本 Prediction 的精準度,在於你提供的本地機器的算力。 筆電使用上 可以考慮使用 Ollama Ollama 是一個跨平台很好使用 LLM 的本地端工具,可以在本地端的電腦去使用 Llama3, Phi 3, Mistral, Gemma2 等等本地端的模型。使用跟安裝也相當簡單,基本上現在只要是 M1 或是 M2 的 Mac Book 就可以很輕鬆地跑起相關的服務。 GCP / Vertex AI 上面要部署這些模型 可以透過 Vertex AI 的服務來部署 Gemma Gemma2 PaliGemma 但是需要申請伺服器單位如列表 Gemma / Gemma2 PaliGemma Machine type: ct5lp-hightpu-4t Accelerator type: TPU_V5_LITEPOD Accelerator count: 4 - Machine type: g2-standard-16- Accelerator type: NVIDIA_L4- Accelerator count: 1 不過要注意這些單位需要申請,因為筆者還沒有申請下來本文將使用 Groq 來示範。 (2024/07/19) 透過 LPU API Services - Groq 來使用 Gemma2 不得不說 Groq 真的很快,而且目前也都還有免費額度可以使用 API 來呼叫。這邊也放上最簡的程式碼來呼叫 Gemma2-9B # Default import os from groq import Groq client = Groq( # This is the default and can be omitted api_key=os.environ.get("GROQ_API_KEY"), ) chat_completion = client.chat.completions.create( messages=[ {...
繼續閱讀
July
16th,
2024
(課程連結: https://www.udacity.com/enrollment/cd13416) 前言 Google 跟 Udacity 合作開的這一個課程,蠻建議大家可以看一下。除了是免費之外,更加許多文件裡面沒有提供的詳細資訊跟用法講得很清楚。 想要更了解每一個 API 該如何使用,可以考慮看看。 這邊快速講一下課程大綱,然後帶幾個我覺得很重要的概念: 課程大綱 Introduction to LLMs and Gemini 基本概念補充。 Introduction to prompting in Google AI Studio 主要都是 AI Studio 的操作說明。 Developing with the Gemini API 建議開發者都要看這個,大多是 API 使用細節。 Advanced Applications 課程整理,還有相關小專案給學員練習。 幾個重點整理: 如何算產出 token token_n_model = genai.GenerativeModel(model_name, generation_config={"temperature": 0.0}) poem_prompt = "Write me a poem about Berkeley's campus" prompt_token_count = token_n_model.count_tokens(poem_prompt) output_token_count = token_n_model.count_tokens(response.text) print(f'Tokens in prompt: {prompt_token_count} \n Estimated tokens in output {output_token_count}') 透過 prompt_token_count: 輸入的 token 數字。 output_token_count: 產出的 token 數字。 Safety Setting 由於 Gemini 有著嚴格的管控,許多時候一些資料會被以安全因素而拒絕回覆。這時候你需要做一些處理: 在進行此演示之前,請記住要負責任地處理 AI 並遵循道德準則。 安全性是 Gemini 的一個重要內建功能。讓我們來了解更多它的功能: 如何檢查您的提示是否被安全過濾器阻擋 哪些安全過濾器導致了阻擋 如何調整設置以解除阻擋 檢查提示是否被阻擋 假設我們選擇了以下提示,在當前的安全設置下,您可以預期您的回應會被阻擋: model = genai.GenerativeModel("gemini-1.5-flash", generation_config={"temperature": 0}) unsafe_prompt = "Write a threat a video game villain might make" response = model.generate_content(unsafe_prompt) print(response.text) 輸出:ValueError: 無效操作:response.text 快速訪問器需要回應包含有效的 Part,但沒有返回任何內容。請檢查 candidate.safety_ratings 以確定回應是否被阻擋。 現在,您可以印出 response.candidates[0].finish_reason 以進一步調查。 如果 finish_reason 是 FinishReason.STOP,則表示您的生成請求成功運行。 如果 finish_reason 是 FinishReason.SAFETY,則表示您的生成請求因安全原因被阻擋,因此 response.text 結構將為空。 檢查安全過濾器 印出 response.candidates[0].safety_ratings 將顯示評級結構。我們可能會看到如下內容: [category: HARM_CATEGORY_SEXUALLY_EXPLICIT probability: NEGLIGIBLE , category: HARM_CATEGORY_HATE_SPEECH probability: NEGLIGIBLE...
繼續閱讀
July
12th,
2024
前提 將 Python Firebase 的套件改成官方的 FirebaseAdmin ,以下有兩種認證方式。 透過 GOOGLE_CREDENTIALS 將 services_account.json 放在環境變數 GOOGLE_CREDENTIALS 透過以下程式碼啟動 這個方式可以在本地端,遠端連線去 firebase 測試。 # 从环境变量中读取服务账户密钥 JSON 内容 service_account_info = json.loads(os.environ['GOOGLE_CREDENTIALS']) # 使用服务账户密钥 JSON 内容初始化 Firebase Admin SDK cred = credentials.Certificate(service_account_info) # 啟動 firebase realtime database (透過 firebase_url ) firebase_admin.initialize_app(cred, {'databaseURL': firebase_url}) 透過 GCP 系統啟動 如果服務是部署在 Cloud Function 或是 Cloud Run 其實可以透過預設的 Services Account 來取得相關權限 My Project 可以取得 My Project 在 firebase 的權限。 這個設定方式如法在本地端連接到 Firebase 測試 # 直接取得 Google Cloud 的參數 cred = credentials.ApplicationDefault() # 啟動 firebase realtime database (透過 firebase_url ) firebase_admin.initialize_app(cred, {'databaseURL': firebase_url}) 增加 Firebase 相關安全性設定 (Firebase Realtime Database Security Rules) { "rules": { ".read": "auth != null && auth.token.admin === true", ".write": "auth != null && auth.token.admin === true" } } 這樣就可以了。 相關程式碼 放一些基本常用到的 查詢全部 def get_all_cards(u_id): try: # 引用 "namecard" 路径 ref = db.reference(f'{namecard_path}/{u_id}') # 获取数据 namecard_data = ref.get() if namecard_data: for key, value in namecard_data.items(): print(f'{key}: {value}') return namecard_data except Exception as...
繼續閱讀