2020年5月15日 星期五

LINE Ads Platform 演進史,魔鬼藏在細節中

0 意見
LINE Developer Day 2019 有一場 Session 讓自己一定要參加一下,LINE Ads platform revolution。

Ads Platform

對於大部分的人來說,這可能是一個最熟悉的陌生人,對於電商平台以及眾多需要曝光的使用者來說, Ads 的來臨讓各位迎來曙光。
最直接的例子莫過於 Facebook 廣告投遞,簡單來說,
投標 -> 快曝光 (給錢) -> 轉換 -> 達到目標

但是,最重要的就是這個 BUT , 投標與曝光之間有許多事情需要進行。
數位廣告已經脫離一刊 100 元的年代許久(雖然許多公司還是用這樣的概念在做事情),但實際上的概念是,
投標 -> 達到標地 -> 投遞 ->  投遞總量 * 投標金額 / 目標轉換
當此數字出來時,才會是大家所期待看到 100 元 / Click (或者任何轉換) 的計算金額。
聰明的各位肯定有想到了,這樣最簡單的方式,其實並不是告訴大家要投標多少,而是從使用者希望的轉換的預期金額,來進行回推投標金額。
因此還是一樣的概念,投標數字越高,就可以越快達到標,簡單來說就是,
如果有 100 元達不到的事情,那就 200 元,如果再不行就 ...

Ads Platform 驚奇之旅

對於廣告平台來說,有兩件事情,
  1. 讓使用者願意投錢
  2. 使用者投遞的錢,可以適當的放到正確位置,給正確的人
在所謂的 Realtime bidding 當中,最困難的部分莫過於, Realtime 的部分,以 LINE 的例子來說,如果台灣有 1900 萬的使用者,意味著如何在投遞的過程中做出 87% 相似,或盡量做到與實際狀況相同的推估,這要將 Data 在之前做大量的預先處理,以及對於版面的選擇做最優化處理,包含此群眾與版面之間互動關係推估等,會是
  • UI
  • API
  • DATA / Rules
  • AI / Preprocess
這幾個項目的結合,才可能可以做到很適當的配合與推估行為,讓使用者投遞金額時達到一定的信心程度,同時使用者在進行小量投遞的時候,也會參考 Ads Platform 的推估進行做實際數字比對,讓使用者進行交互比對,提高對於 Ads Platform 的信心程度。

Auto biding

能夠達到上述部分之後,擁有夠多的實際投遞結果,加上實際的數據,以及使用者喜好程度,素材,群眾類型,轉換行為等資訊後,才有辦法逐步做出 auto biding.
看似很簡單的投遞行為,實際上在 LINE Ads Platform 也提出幾個機制。
  • 即時監控機制(包含資料,投遞,使用者行為)
  • 可測試環境與資料 (進行實際狀況離線及線上驗證,進行小且多型的驗證 A/B testing)
  • 即時回饋機制(從投遞,到效益結果的表現)
而其中講者其實有輕描淡寫的講述了一部分,那就是在做 Prediction 的時候其實尤其困難,因為你不會知道使用者的投遞區間,假設 1week 的時間,其實你很難預測到 1week 後使用者行為會是怎麼轉變,會不會真的達到目標(轉換),並且這是要做整段時間的追蹤。
這段,雖然講述起來輕鬆,但實際過程實在煎熬,需要等待資料的累積,同時也需要同時修正預測模型和算法,需要不斷的與 AI 團隊溝通,同時又要背負著這個廣告平台怎麼這麼難用的煎熬 … (掩面哭泣)。
相信也是在這段時間才有辦法做出 Reach and frequency buying simulator,讓整體預估可以趨近於實際狀況。

後記

你說廣告系統好玩嗎?
很好玩,而且越是了解廣告系統行為之後,你就會更清楚 LINE / Google / Facebook 為什麼這樣下廣告,更可以了解數位廣告生態的模式,從投遞平台到實際測試投遞廣告,到廣告實際投放過程就可以體會到,目前這個廣告系統是到哪一個階段。
How LINE Ads Platform is Constantly Evolving 一場很輕鬆 40 多分鐘的演講,可能對於大部分的聽眾來說會是無感的,也會覺得只是在描述一個平台的成長過程,與自己所知道的名詞相差無幾。
實際上談笑風生之餘,底下藏了多少血淚,還有多少工程,數據,算法的結合,加上被需求與供給方追殺的血淚累積出來的成果。
就像是上面最後一張圖一樣,數位廣告方式實際上還在成長中,我們都也是在持續探索這個數位世界,當我們用 lookalike 探索出數位人格之後,能做的事情更大了。
但也表示需要對於使用者的隱私需要有更多的負責,也意味著 Ads Platform 需要做出一定的 filter, 讓真正的廣告可以被刊出,讓假廣告與擾亂人群的惡意擴散資訊退散,盡到平台該負責的責任。
雖然很久沒有接觸數位廣告,但能夠再次聽到 LINE Ads Platform 開發史這樣的歷程,可以讓我們思考一下,也許下個 5 年,數位廣告會是什麼樣子,我們可以怎麼進行整個架構規劃,一想起來就覺得『興奮啊』

2020年1月9日 星期四

新鮮人的迷惘不只你有,我也有之Web GangKu 網站甘苦談 02 活動紀錄

0 意見



Web GangKu 網站甘苦談 02 活動紀錄
參與者:
Ted, Wake, 振壹, Chris and Me
原本預期是一場不會有人,到當天從 22:00 - 直到 02:00 才結束的一場活動,人數雖然少,卻因為這樣小巧的場合讓大家可以暢所欲言,了解業界動態,還有互相交流一些不同的心得。
感觸最多的在於轉職和求職的迷惑過程,自己其實在早期也是這樣迷惘的過程中,不知道自己要的是什麼,雖然說知道自己對於寫程式有些小小興趣,但是對於實際上要往哪條道路走其實還是充滿了疑惑。
看到這些小朋友,彷彿看到十年前的自己,在求職的十字路口徘徊,這些過程沒有一定的步驟,也沒有最佳的解答,充滿的就是一路的探索與衝撞。
在十年前也沒有人知道前端工程師接下來的 Career path 會是什麼,甚至沒有人知道 mobile web, desktop ui, TV 都會是可以讓 Web front end developer 進攻的天下,甚至當時也沒有人預測到 Node.js 的崛起可以讓前端工程師瞬間成為全端工程師,有太多太多的未知與不確定性。
但有件事情是肯定的,找到自己所喜愛,把握當下自己的所愛,這樣的生活才會讓自己的人生更精彩,
希望我們的 Web GangKu 網站甘苦談 ,也是號稱深夜大人咖啡館的深夜小聚會,能夠有一些小小分享。
如果喜歡的話,歡迎透過底下追蹤消息,Web GangKu 網站甘苦談 活動 將會繼續推出(畢竟 Ted 大大都先放酒在這邊了),

2019年12月17日 星期二

2016 - 2019 LINE DEV DAY 技術發展

0 意見
從 2016 年 LINE 開始舉辦 DEV Day 活動至今,已經進入到第四個年頭,每一年都有不同的重頭戲,也讓我們第一次看到了 LINE 這樣亞洲公司在亞洲地區打造出屬於亞太地區專屬於自己品牌的技術形象。

簡易年度記錄

2016 年,LINE 發表了 Chatbot 以及 Open 技術的策略,從那時候開始發表了 armeria 開源技術框架,持續發展至今。
同時當年每個會眾可以拿到一組 LINE Beacon 官方版本,開始了初步 IoT 的佈局。
2017 年,發表了 Clova 項目,以及更多關於 Iot 相關的展示,關於物的連結上,以及對於 Data 上架構的展示,也算是開始進如 Messenge API 調整的一年。
2018 年,建立 LAE 制度,深度開始與開發者進行合作,進行 DevRel 相關,這年 FinTech 大戰開始,同時發表對於 AI 實現於應用上的展示,更值得一提的是 LIFF 的開發與發表。
2019 年,可以說是 AI 年,基本上所有的項目圍繞於 AI 打轉,秉持著原有架構,服務,產品多樣性之餘,已經在這幾年默默的深入到台灣的生活中,大家默默的用著 Chat, 看著 Line News, 用著 Line pay付款買貼圖等。
關於 LINE Dev Day 2019 有更多深入討論。

轉變

2019 年,對於自己來說,是個感覺很深的一年,彷彿經過了再次世代的更替。
從 2012 時所討論的 Cloud System, 當時的討論更多的是在於當地自建機房,還是直接使用雲端服務,從 AWS 服務獨大,到 GCP 深入開發者心中,Azure 當初最不被看好,居然真的擁抱 Open source 在 dotNet core 組合下打下一片天。
2015 年開始,雲端不再是口號,Data 才是王道,到處喊著使用 hadoop ,衝著分散式運算大資料量儲存分析,每個新創都是喊著 Cloud x Data 廝殺著。
2017 年進入 Iot 年代,物物都要聯網,事事都要上網,當時看似傻傻的連冰箱都要上網,到現在似乎已經變成顯學,甚至當年喊著 IPv4 即將用盡,到了 2019 這件事情居然成真。

2019 的新星 AI

LINE Dev Day 2019 從表象上幾乎看不出來新的亮點,沒有太過於全新的產品發表,更多的是著重在於 AI 的發表,和資安的發佈。
從這幾點上,回頭看 2016, 2017 年就已經為了 2019, 2020 結果而佈局,更多的資料,更深入人民的行為結合,更完整的資訊保護,隱私保障。
2017 年正式對外發佈的 Beacon 硬體及 API 的發表,到了現在 2019 有了更多項目的結合,以及 Clova Chip 與不同硬體項目的整合,更多嘗試性的應用,例如台北捷運, LINE NOW 等服務都是 Iot 的展示。
AI 發佈的亮點,從架構面來看反而是產品結構的累積,從開放的角度,擁抱開源的態度,到貼近使用者。
歷經多次資料儲存結構調整,系統優化,架構再次翻新,進而累積出可供 AI Team 參考的使用者回饋,才有辦法打造出真正貼近於實際商品層級的 AI 應用。
從表象上,我們看到的是談論著 AI,背後上是從 4 年前就累積下來的精華, 2019 年的 LINE Dev Day 至少從各種角度和年度累積來說,是玩真的。

AI 與人民生活的距離

很多人都會覺得 AI 離他很遠,可能對於之前的變更來說, Cloud / Data / Infar / 都會是一種很遠距離的感覺,之餘 AI ,他更是改變人們生活的結果。
從 LINE App 裡面的 Smart Channel,到 Line Shopping 裡面的推薦,關聯商品, Line Travel 的資訊給予, LINE Today 的新聞資訊提供,裡面涵蓋著許多 AI 的演算過程,讓結果越來越貼近使用者偏好,讓使用者的黏着度提升。
技術,從某個角度來看就像是空氣,看似很簡單的改變,實際上經過很多不簡單的過程。
當技術存在於生活中,生活就充滿著便利,當它越是便利的時候,人們與技術就越難以分離。

AI Next?

如同當時 Data 與 Application 如何進行整合計畫,在 AI 演算法如火如荼發表的年代,那下一步應該就是 AI 如何與應用工程結合,讓應用的展現更適用於客戶心中。
明年可以預期的會是 AI & Application ,算法與應用落地的一年,會有更多應用及服務的發表,以前難以使用,難以瞭解的計算情境會更為清晰,很多資料與計算變動當中的產業,會越來越有清晰的輪廓,讓開發者有更多新領域的嘗試,再次透過『站在巨人的肩膀』觀看這個世界。

2016年4月9日 星期六

npm i fail - 查不出原因的處理方式

0 意見

npm i fail - 查不出原因的處理方式

經歷許多次的 npm 安裝問題,目前有幾種不同的解法。

npm cache issue

可能因為 npm 下載的時候,或者因為連線問題導致模組並沒有完整被安裝,但是 npm 的檢查機制就是只要存在就會跳過安裝步驟,因此當遇到安裝完成,但是執行卻無法的時候,可以嘗試著

rm -rf node_modules
# install again
npm i 

如果是在中間就遇到 fail 的狀態,有可能是因為之前連線問題,並沒有將模組安裝成功,但是資料已經存在 npm cache 資料夾裡面,以往都需要找出這個環境設定,環境路徑才能進行移除,不過現在透過 npm cache 可以簡單做到這件事情

npm cache clean
rm -rf node_modules
npm i

npm version issue

另外一種會再安裝的時候跳出錯誤,會顯示為 npm 版本不符合,或者是 node 版本不符合,這個時候就需要進行安裝更新,最簡單方式就是升級 npm.

npm i -g npm

缺少套件

通常最常見的就是有些模組需要透過 gcc, g++ 這是最常見的缺少模組問題,以 mac 環境來說直接透過 brew 就可以安裝完成。

brew install gcc
brew install g++
# install again
npm i 

記憶體不足

最後一種就是屬於記憶體不足的狀態,這通常會很難檢查,實際上 npm 也會跳出錯誤,現在的錯誤資訊都已經比較明顯,

npm ERR! node v4.4.1
npm ERR! npm  v3.8.6
npm ERR! code ENOMEM
npm ERR! errno ENOMEM
npm ERR! syscall spawn

npm ERR! spawn ENOMEM

如果遇到這種狀況,請重新調整記憶體分配,如果是採用 vps, 就看能不能夠 scale up ,讓機器的記憶體提升,就可以解決問題。

後記

以上都是踩過的雷,以及在嘗試許多 node.js 專案時會遇到的問題,我們也經常在摸索中,不過從摸索以及找到答案的過程都繞了許多遠路,希望透過分享可以讓大家更瞭解 npm 錯誤時可以怎麼處理。

Facebook