[好書分享] 樂高-小積木立大功,用玩具堆出財富帝國的秘訣

樂高 - 小積木立大功,用玩具堆出財富帝國的秘訣
レゴ 競争にも模倣にも負けない世界一ブランドの育て方
作者: 蛯谷 敏  
譯者: 連雪雅  陳幼雯  蘇文淑  
出版社:大塊文化 
出版日期:2022/05/28 
語言:繁體中文 

買書推薦網址:

前言:

這是 2024 年第 1本讀完的書,這一本還蠻早之前就注意到的。但是因為真的超級厚一本,所以遲遲沒有開始看。去年年底開始喜歡看比較大本的書,以致於年底的書籍掛零。 這一本看完反而易猶未竟,真的蠻多小故事。不論是你是一個新創企業的老闆,還是一個成熟企業的主管。這一本書裡面有許多時期都是你會感同身受的。

內容摘要:

你一定玩過樂高,但你也許不知道:
 
任天堂、TOYOTA、Google、MIT、NASA⋯⋯都與樂高有著出乎意料的關聯!
 
樂高是現在世界上最大、利潤最高的玩具製造商,它曾被美國《財星》雜誌評為「世紀玩具」,更獲選為「全球最具影響力的品牌」,蟬聯「全球最佳聲譽企業」的寶座。在COOVID-19疫情下依然逆勢成長,營收屢創新高。
 
轉型創新必看!
面對時代新趨勢,向玩具龍頭學習變與不變的經營哲學
 
1932年創立於丹麥的樂高,發展至今近90年,在發展初期幾乎無人料想到其產品對於成人,能夠像對於兒童一樣具有吸引力。除了玩具外,還跨足不同商業領域,包含電影、遊戲、主題樂園等。
 
在今日如此成就下,其實鮮少人知道,樂高曾幾度陷入經營危機:因專利保護期結束,相繼產生,造成市場占有率急劇縮小;與《星際大戰》、《哈利波特》等知名 IP 合作,急於改革卻導致樂高一度面臨破產⋯⋯
 
在這些危機中,樂高如何活用原有的創造性,提高商品價值的產品開發、品牌養成、培育廣大粉絲群、進行異業合作等策略,突破經營困境,創下高收益?
創造競爭優勢,「拼」出好成績
向樂高學習品牌永續經營的核心關鍵
 
品牌經營永遠是進行式!本書揭開超越GAFA(GOOGLE、AMAZON、FACEBOOK、APPLE)的樂高成功法則,教你掌握連Google 、TOYOTA都受到影響,持續創造品牌價值的四大關鍵——
【關鍵1】理解自身強項
【關鍵2】創造能不斷收獲佳績的體系
【關鍵3】經營社群、強化連結
【關鍵4】明確的企業存在意義

image-20240206000007143

樂高的年度財報表,可以看出來 2017 面臨著少見的營業利益與營收雙雙下滑的窘境。

心得:

在閱讀這本書前,我可能不是很清楚其實樂高已經是一間超過九十年的老公司。他高昂的單價,會讓我不知道其實他的專利在 1980 末期其實就已經過期。 現在你看到的所有「樂高-like」的組合積木其實都是合法的。

image-20240206001659378

那麼到底樂高是透過哪些方式在經歷了:

  • 1980 末的專利權過期,市場競爭開始激烈。
  • 2000 之後,電視遊樂器的興起更讓兒童對於樂高逐漸失去了興趣。
  • 2017 年初的經營危機,連續十三年的獲利之後戶然在這一年遇到營收與獲利雙減。
  • 2020 年之後,所有的民眾對於短視頻的熱衷。讓注意力更難在積木上專注。

究竟他們是如何專注與轉型? 當然樂高不是沒有做錯事情,他們也有因為做了許多特有的樂高積木,造成過多的庫存與低迷的買氣。差點讓整個公司面臨到倒閉。

但是,回歸使用者創意的做法,讓他們更認真的思考會玩樂高的人,究竟要的是什麼?

  • 是更多專屬的新樂高積木塊?
  • 是更多電影系列的合作款?

之後他們也認真的將積木回歸了最基本的方式,反而與玩家一起成立特殊品牌 - 「 Ideas 系列

image-20240206001430997

這個系列將玩家變成了創作者,也讓「玩家社群化」更多與更多的玩家加入討論,搜集,投稿。一起跟公司成長。也造就了公司營收的復甦。 加上 2020 年之後的瑪莉歐創作系列,讓整個樂高的創作來的一個新的高度,並且讓更多的人願意一起加入。

image-20240206002417796

最後,這整本書的編排其實不是依照時間的編排方式。 反而是透過許多單獨採訪的方式來敘述關於樂高這間公司的故事,在觀看上會稍嫌有點凌亂。 但是許多的重點還是有被完整的敘述,一間偉大的公司在經歷許多不同的嘗試過後。最重要的還是要回歸初衷,讓使用者找到他們真正的價值。

[遊戲天國][PS5] 惡魔靈魂重製版 - 使用 PS Portal Remote 全破

前情提要:

上週五晚上用 PS Portal Remote 打破第一款遊戲 「PS5 惡魔靈魂-重製版」,打一些感想: (跟著我唸三次: Playstation Portal Remote 是搖桿)

  • Portal 打籃球遊戲有點吃緊,但是魂系類可以打王。不打盾反的話,之前玩隻狼因為要抓防禦節奏,還是不太行。

  • 整個續航力很強大,大概可以打到四五個小時以上(因為都是串流)

  • 用 PS Portal 好處就是,每一場都有錄影可以用。 XDDD

  • 滿了 PS Portal 之後,我 Deck 開始變少用了。因為串流續航力真的很強。

image-20240206015736003

接下來是「惡魔靈魂-重製版」的感想:

  • 畫面真的超好,魂系列最好的畫質也不奇怪。(法環沒有 PS5 版本)
  • 惡魔靈魂的王都比較簡單,倒是跑圖超遠。
  • 全白跟全黑很農,到後期根本不想打了。
  • 家人看韓劇,我在旁邊刷刷魂跟密斯特鐵鎚,其實很療癒。
  • 不過我尾王還是拿打刀來收尾。

一些遊戲片段

1-2 如何用法師打紅龍

如何刷 密斯特鐵鎚

老勇士要怎麼打

[讀書清單] 關於 Staff Engineering 跟 Tech Management 相關書單

第一类,关于理解和成为(或选择不成为)Manager 的书籍:

《The Manager’s Path》(经典必读,即使不想当 Manager)

The Manager's Path

這個在 Safari Online 有,也有 audio Book 版本。 這本我也看完了,但是還沒寫心得分享。

《An Elegant Puzzle: Systems of Engineering Management》 from Amazon

image-20240130120333120

《Become an Effective Software Engineering Manager》(读的 Kindle 版,里面有非常实用的技巧)

Become an Effective Software Engineering Manager

這個在 Safari online 也有。

第二类,旨在帮助你成为更出色的工程师的书籍:

《Staff Engineer: Leadership beyond the management track》

img

原文有人做了中文翻譯,還開放Gitbook

《The Staff Engineer Path》

The Staff Engineer's Path

這個在 Safari online 也有, 也有 audio book 版本。 我也有心得分享。

第三类,专注于培养更优秀的团队和工作环境的书籍:

《Shape Up》

《Rework》

《Remote》

《It doesn’t have to be crazy at work》

以上書籍帶查詢。

[論文心得] Scaling Up to Excellence: Practicing Model Scaling for Photo-Realistic Image Restoration In the Wild

論文名稱: Scaling Up to Excellence: Practicing Model Scaling for Photo-Realistic Image Restoration In the Wild

image-20240126105037706

Scaleing Up to Excellence: 令人驚艷圖像恢復論文

提出 SUPIR (Scaling-UP Image Restoration),主要有以下方法:

  • 透過 prompt 提升修復能力,甚至透過 Negtive Prompt 來加強
  • 超過 2000 萬張超高畫質訓練素材 。

結果在品質上可以看到相當好的成效。

論文: https://arxiv.org/abs/2401.13627

網站: https://supir.xpixel.group/

image-20240126105147093

快速總結

  • 研究主題:使用生成式先驗和模型縮放的技術,實現針對真實場景的超高質量的圖像恢復方法。
  • 數據集:收集了2000萬張高分辨率、高質量的圖像,每張圖像都有描述性的文本註釋,用於模型的訓練。
  • 創新點:提出了一種通過文本提示來引導圖像恢復的方法,擴展了圖像恢復的應用範圍和潛力。並且引入了負質量提示來進一步提高感知質量。還開發了一種恢復引導採樣方法,以抑制生成式恢復中遇到的保真度問題。
  • 實驗結果:展示了SUPIR的卓越的圖像恢復效果,以及其通過文本提示進行恢復操作的新穎能力。

系統架構

image-20240126105141343

EDM Sampler with Restoration Guidance 的主要內容如下:

  • EDM Sampler with Restoration Guidance 是一種用於圖像修復的採樣方法,它基於擴散模型的原理,並引入了一個新的超參數 τr 來控制採樣過程中對低質量圖像的引導程度。
  • 目的:該方法的目的是在保持圖像的感知質量的同時,提高圖像的忠實度,即使圖像在採樣過程中不會偏離低質量圖像的內容。
  • 原理:該方法的原理是在每一步的採樣中,根據 τr 的大小,將預測的結果 zt−1 與低質量圖像 zLQ 進行一定比例的混合,使得 zt−1 在保留生成的細節和紋理的同時,也接近於 zLQ。
  • 效果:該方法的效果通過在不同的合成和真實的低質量圖像上的實驗進行了驗證,並與其他的圖像修復方法進行了比較。結果顯示,該方法在非參考指標上取得了最好的表現,並在全參考指標上也有不錯的表現。此外,該方法還可以通過調整 τr 的大小,實現對圖像修復的靈活控制,從而達到不同的效果。

[Golang][Notion] 如何透過 Golang 來操控 Notion DB 當成線上資料庫

Notion Databases: An advanced tutorial on Notion's game-changing feature

前提

在撰寫許多 Side Project 的時候,除了網路服務伺服器之外,最困擾的大概就是資料庫的問題。雖然之前我的文章 [學習心得][Golang] 把 Github Issue 當成資料庫來用 曾經教過透過 Github Golang API 來將簡單的一些資料放在 Github Issue 上,但是如果資料格式比較複雜的時候。可能就會需要透過類似資料庫格式的儲存體來處理。 偏偏許多線上資料庫都是算時間與用量,對於想寫一些有趣的 Side Project 卻沒有那麼友善。

本篇文章將使用 Notion Database 作為資料的儲存體,並且透過 Golang 去查詢,插入相關的資料處理。 本篇文章也會從如何設定一個 Notion Integration 開始教導,讓你透過 Golang 來操控 Notion Database 沒有任何痛苦。

本篇文章將透過: https://github.com/kkdai/linebot-smart-namecard 來說明。

關於 Notion Database

以上是一段 Notion 官方教學影片 Notion Database 裡面有提到如何建立一個 Database ,並且有稍微解釋:

  • Create -> 選擇 Database 欄位中 -> Table

使用 Notion Database 的好處:

image-20240115211147923

  • Notion Database 支援相當豐富的格式,並且有很漂亮的視覺化介面。
  • 並且 Notion Database 支援多種格式: Table, Board, Calendar, List, and Gallery
  • 除了蠻方便 coding 之外,如果有後台管理員,可以透過 Notion UI 來直接查看結果。

建立 Notion Integration

可以先到 Notion Developer 建立第一個 Notion Integration :

image-20240115233258526

  • Type: Internal 只有你可以用,其他人沒有辦法選到。
  • Name: 只要可以辨識就好。

這樣就可以建立了 Integration ,並且取的 Internal Integration Secret (Notion API Key):

image-20240115233433452

開啟 Notion Database 讓 Notion Integration 可以存取:

記得要讓 Notion 頁面取得 Integration 權限 ,參考以下圖片。

官方給的 GIF 檔案相當的清楚,這也是最重要的其中一步。要讓你的資料可以讓 Integration 存取。

取得 Notion Database ID

這也是一個相當重要的事情,要使用 Golang 去存取你的 Notion Database 就需要以下兩個資料:

  • Notion Internal Integration Secret (API Key)
  • Notion Page ID

Notion DB 的頁面網址應該是 https://www.notion.so/b764xxxxxa?v=dexxxx1 那麼 b764xxxxxa就是你的 DatabasePageId。

了解 Notion Database Data Type:

在準備要連接 Notion Database 的時候,你必須要先知道每個欄位的差別。

image-20240115234749333

以我的資料庫為例子:

  • UID: 存放 LINE OA User UID,做為辨識之用。資料格式是: Text

image-20240115234848362

  • 其他都是 Title, Address, Email, Phone Number 。
  • Name: 使用了 Title 這個資料格式,其中差別為: Title 只能有一個欄位,並且會變成新頁面的標題。

image-20240115235405588

開始撰寫 Golang Notion Database 程式碼:

這邊使用的套件是: https://github.com/jomei/notionapi

先了解資料架構

// Person 定義了 JSON 資料的結構體
type Person struct {
	Name        string `json:"name"`
	Title       string `json:"title"`
	Address     string `json:"address"`
	Email       string `json:"email"`
	PhoneNumber string `json:"phone_number"`
}

// DatabaseEntry 定義了 Notion 資料庫條目的結構體。
type NotionDB struct {
	DatabaseID string
	Token      string
}
  • Person: 來自名片掃描的 JSON 資料,也代表這裡每個欄位的資料。除了 UID 是要透過參數進來的。
  • NotionDB:啟動 Notion 需要知道的資料:
    • Token: 就是 Notion Integration Secret
    • DatabaseID: 在 URL 即可取得。 Notion DB 的頁面網址應該是 https://www.notion.so/b764xxxxxa?v=dexxxx1 那麼 b764xxxxxa就是你的 DatabasePageId。
// QueryDatabase 根據提供的屬性和值查詢 Notion 資料庫。
func (n *NotionDB) QueryDatabase(UId, property, value string) ([]Person, error) {
	client := notionapi.NewClient(notionapi.Token(n.Token))

	// Add UId to the filter conditions
	// 建立查詢過濾條件
	filter := &notionapi.DatabaseQueryRequest{
		Filter: notionapi.AndCompoundFilter{
			notionapi.PropertyFilter{
				Property: property,
				RichText: &notionapi.TextFilterCondition{
					Equals: value,
				},
			},
			notionapi.PropertyFilter{
				Property: "UID",
				RichText: &notionapi.TextFilterCondition{
					Equals: UId,
				},
			},
		},
	}

	// 調用 Notion API 來查詢資料庫
	result, err := client.Database.Query(context.Background(), notionapi.DatabaseID(n.DatabaseID), filter)
	if err != nil {
		return nil, err
	}

	var entries []Person

	for _, page := range result.Results {
		entry := n.createEntryFromPage(&page)
		entries = append(entries, entry)
	}
	return entries, nil
}

這一段需要注意的是:

  • 過濾條件使用的是 AndCompoundFilter ,也就是要兩個條件 A && B 。
  • 其中要注意的 PropertyFilter如果資料格式不同的時候,需要處理不同資料。
    • Text: TextFilterCondition
    • Title: TitleFilterCondition
  • 依此類推。

再來看如何新增資料

// AddPageToDatabase adds a new page with the provided field values to the specified Notion database.
func (n *NotionDB) AddPageToDatabase(Uid string, name string, title string, address string, email string, phoneNumber string) error {
	client := notionapi.NewClient(notionapi.Token(n.Token))

	// 建立 Properties 物件來設置頁面屬性
	properties := notionapi.Properties{
		"UID": notionapi.RichTextProperty{
			RichText: []notionapi.RichText{
				{
					PlainText: name,
					Text:      &notionapi.Text{Content: Uid},
				},
			},
		},
		"Name": notionapi.TitleProperty{
			Title: []notionapi.RichText{
				{
					PlainText: name,
					Text:      &notionapi.Text{Content: name},
				},
			},
		},
		// Address, Email, Phone Number....
	}

	// 創建一個新頁面的請求
	pageRequest := &notionapi.PageCreateRequest{
		Parent: notionapi.Parent{
			DatabaseID: notionapi.DatabaseID(n.DatabaseID),
		},
		Properties: properties,
	}

	// 調用 Notion API 來創建新頁面
	_, err := client.Page.Create(context.Background(), pageRequest)
	if err != nil {
		log.Println("Error creating page:", err)
		return err
	}

	log.Println("Page added successfully:", Uid, name, title, address, email, phoneNumber)
	return nil
}
  • 大部分程式碼都是類似的,但是根據欄位不同。需要調整以下內容:
"UID": notionapi.RichTextProperty{
			RichText: []notionapi.RichText{
				{
					PlainText: name,
					Text:      &notionapi.Text{Content: Uid},
				},
			},
		},
  • 其中的 name 是固定參數,不能改。
  • 只有後面的 Content: Uid 可以改。

  • 此外,根據欄位不同 RichTextProperty 也會變動。如果不正確,就無法正確地寫入資料。

最後測試範例程式碼:

func TestAddNotionDB(t *testing.T) {
	token := os.Getenv("NOTION_INTEGRATION_TOKEN")
	pageid := os.Getenv("NOTION_DB_PAGEID")

	// If not set token and pageid , skip this test
	if token == "" || pageid == "" {
		t.Skip("NOTION_INTEGRATION_TOKEN or NOTION_DB_PAGEID not set")
	}

	db := &NotionDB{
		DatabaseID: pageid,
		Token:      token,
	}

	err := db.AddPageToDatabase("uid", "name", "title", "address", "[email protected]", "phone")
	if err != nil {
		t.Fatal(err)
	}
}

參考資料:

[遊戲天國] FF15 全破

FF15 全破了, 同時有玩 FF16 (用 PS Portal) 跟 FF15 (Steam Deck) ,後來竟然覺得 FF15 比較讓我玩得下去。 很專心地把它破關了。

  • 一開始為人詬病的開車兜風那段,我覺得很悠閒。

  • FF15 的相當多樣的支線任務我還蠻喜歡的,不論陸行鳥,拍照任務,還是武器鍛鍊任務。

  • 最後的三個好友單挑歷代王,很感人啊。

  • 幾個 DLC 慢慢留著玩,應該要準備人龍8 惹。

找了一下劇情完結:

關於本傳的解釋:

image-20240115225004791

image-20240115225020138