[Golang] 測試 Twitter 認證的流程與抓出你的 Twitter timeline 小專案

Twitter API 1.1 三階段認證範例網站 因為 2015 年有做了一個 52 Projects 的挑戰,所以常常有一堆專案都是我已經忘記我有寫過的。直到我收到 PR (Pull Request) ,這邊有一個專案。 https://github.com/kkdai/twitter 我甚至還有為了他寫文章: [Golang] 學習關於Twitter的Three-legged Authentication ,我真的都忘記我寫過這個專案。不過直到有人發了 PR 我才想到這個專案,然後呢? 我其實也忘記這個專案到底還能不能動,於是把當初的範例程式快速的部署到 Heroku 做一個測試。 twitter-web-auth.herokuapp.com/ 你可以進入這個網站後,點選 Twitter ICON 認證後,就會顯示最新一篇你的 Twiter Timeline 的訊息。 (好啦,他就醜醜的。 有興趣可以一起來開發 Twitter Go SDK HTTPS://GITHUB.COM/KKDAI/TWITTER 相關連結 https://github.com/kkdai/twitter twitter-web-auth.herokuapp.com/
繼續閱讀

[TIL] PTT 加上 CloudFlare 來擋爬蟲 Web Crawler ?

爬蟲出問題 原本有弄一個 PTT 爬蟲來爬一些資料,最近發現好像沒有資料可以看到。 一下去查就發現,好像有個 CloudFlare 擋在前面。 錯誤訊息 2022-05-25T08:45:46.856731+00:00 app[web.1]: <div class="attribution"> 2022-05-25T08:45:46.856731+00:00 app[web.1]: DDoS protection by <a rel="noopener noreferrer" href="https://www.cloudflare.com/5xx-error-landing/" target="_blank">Cloudflare</a> 2022-05-25T08:45:46.856731+00:00 app[web.1]: <br /> 2022-05-25T08:45:46.856731+00:00 app[web.1]: <span class="ray_id">Ray ID: <code>710cff2fcebb1962</code></span> 只好先放著,有空再來查查看怎麼辦。 有找到一些文章先放著。 相關連結 kkdai/linebot-ptt-beauty How can I get html from page with cloudflare ddos portection? Understanding Cloudflare DDoS protection How to customize your HTTP DDoS protection settings
繼續閱讀

[好書分享] 當上主管後,難道只能默默崩潰? - Facebook產品設計副總打造和諧團隊的領導之路

當上主管後,難道只能默默崩潰? Facebook產品設計副總打造和諧團隊的領導之路 The Making of a Manager : What to Do When Everyone Looks to You 作者: 卓茱莉 原文作者: Julie Zhuo 譯者: 許恬寧 出版社:時報出版 買書推薦網址: Readmoo 線上書籍購買 前言: 這一本是今年所讀完的第八本書。這一本書也是買了蠻久沒有看的,但是最近想到了一些相關的議題,就想透過這一本書來找答案。這是一個前 FB 設計團隊的大主管寫的書,裡面有包含大家心裡想知道的一些資訊,包括了: 如何從專業的獨立貢獻者變成管理人 如何帶領小團隊 如何帶領團隊成長到大團隊。 蠻推薦大家來看的。 內容簡介: ★ 亞馬遜2019年度最佳商業書、華爾街日報暢銷書。 ★ 不論是菜鳥上路,或是識途老馬,這本書都能助你成為理想的管理者。 誰說同事一定會虛心為你的晉升感到開心? 卓茱莉永遠不會忘記升上管理職的第一天,踏進會議室時同事臉上的表情,就像一個厭世少年被強迫參加表妹的寶可夢派對,對著她說:「妳知道妳自己在幹嘛嗎?」 老天,一切都糟透了! 從Facebook實習生一路往上爬的茱莉,非設計科班出身,在25歲升為菜鳥主管後,開啟她一連串深感失敗、沮喪的管理之路。原以為是踏進職涯中令人興奮的下一章,卻發現晉升主管的她「其實不太確定每件事該怎麼做」。 章節條列 Chapter 1 什麼是管理? Chapter 2 新官上任三個月 Chapter 3 帶領小型團隊 Chapter 4 提供回饋的技巧 Chapter 5 管理自己 Chapter 6 精彩會議 Chapter 7 雇用正確人選 Chapter 8 讓事情發生 Chapter 9 帶領成長中的團隊 Chapter 10 培養文化 這一本敘述著作者帶領著 FB 設計團隊從小團隊逐漸成長到大團隊的一些領導守則。身為創意為上的設計團得管裡者,這一本書有一些蠻有見解的分享: 管理者的重責大任 身為管理者,工作首要環節是「確保團隊知道成功長什麼樣子,而且大家都想要成功的做到那樣。」你要讓每個人知道團隊目標,並且真心認為那個目標很重要。 是否適合管理者 很多公司都開始有 IC (Individual Contributior) (獨立貢獻者:指的是相關技術能力強勁,但是不需要管理團隊的人)。許多資深有能力的工作人員,其實不需要急著讓自己開始管理的相關能力, 反而要認清相關事情: 成為管理者,你的時間將會花在如何讓團隊成長,你的技術能力就沒有足夠的時間來兼顧。 管理者並不是晉升,要當成職務上的轉換。往往「十倍工程師」在許多公司都是炙手可熱的人力。 一定要拿出信任 剛開始從資深貢獻者轉到管理人員的通病就是,無法信任底下的人。作家契坷夫提過:「你一定得信任人,要不然日子過不下去。」,一開始當管理人員需要有足夠的同理心與信任。 管理就是關懷 用關心替代質問 儘量協助,讓他們滿意自己工作 不論成功或是失敗,都關心他們。 讓他們知道,管理者不是只有在做對才會理他們。 協調優秀表現標準 分享與回饋意見 三明治回饋法 先給正面意見, 再講出改善事項 管理自己 減少自己必要會議(剛開始可以,之後要減少) 增加自己管理的時間 良好 1 on 1 範本 雙方設定主題(2~3個) 事先設定主題,不要當天討論,避免發散。 儘量在如何協助。如何關懷。 關於產品 沒有停止的一天,線上服務隨時都在迭代。 關於 FB 讚擴充功能的小故事 原本只有讚,本來想要「噓」 但是「噓」容易讓社交變弱(反對意見),也不清楚。 我反對你文章,還是觀點,還是某一件事情? 後來用「拇指」「愛心」「關懷」「驚訝」來開始互動 引用賈伯斯:「所謂的專注,不是做一個好東西。而是拒絕一堆不錯的點子」。 高階主管的進階課程 與下一階層主管需要部隊統一願景 達成共識 創造願景 對於人事與流程看法一致嗎? 表現不佳的主管 如果有機會,是否會替換掉他? 馬上反饋,設定目標 努力讓自己沒工作,讓自己拉高層次。 心得 這一本書的內容蠻有條理的,也很生動符合現實狀況。 真的能感受到作者從一個獨立貢獻者變成後遇到的相關問題,也能感受到要如何領到一個設計團隊這個相當需要創意與發想的團隊。相信對於開發工程團隊也是如此,許多一對一會議的建議更是讓我受益良多,我覺得許多團隊成長的經驗談,可以讓我們在面對許多事情的時候有一個良好的處理借鏡。 更是有許多帶領團隊的心法,可以讓即將讓團隊變大的管理者好好學習。
繼續閱讀

[論文解讀][TinyLFU] A Highly Efficient Cache Admission Policy

以前的問題 不論是記憶體或是任何資料儲存體(或是大家常用的 Redis),都會使用 Cache 來存放短期會反覆使用到的資料。 因為 cache 具有讀取快速,但是容量相對小(且價格較貴)。所以無法將在 Physical memory 的資料全部存上,這時候就是需要有 Cache Replacement Policy (也就是「快取的取代策略」) 一般來說的做法有以下幾種: FIFO (First-In First-Out): 透過先進先出的方式,往往這樣容易有相當大的功耗在於資料不斷的換進來與換出去。 LRU(Least Recently Used): 取代資料的時候,會去選擇近來最久的。 (RecentlyUsed –) LFU(Least Frequency Used): 取代資料的時候,選擇最少被讀取到的。 (Read Count ++) 那麼這些聽起來好像都沒有問題,為什麼會需要有 TinyLFU ? 以前演算法有什麼問題。? LRU 有什麼問題? LRU(Least Recently Used):最近最久未使用。 它是優先淘汰掉最久未訪問到的數據。缺點是不能很好地應對偶然的突發流量。比如一個數據在一分鐘內的前59秒訪問很多次,而在最後1秒沒有訪問,但是有一批冷門數據在最後一秒進入緩存,那麼熱點數據就會被沖刷掉。 LFU 有什麼問題? LFU(Least Frequently Used): 最近最少頻率使用。它是優先淘汰掉最不經常使用的數據,需要維護一個表示使用頻率的字段。 操作 LFU 時間複查度是: \(O(log(n))\) 由於取代方案取代方式是挑選短期(取決 cache 大小),來挑選最長使用的。 但是可能發生一個狀況是,如果某份資料短期不常使用,但是長期來說他頻率確是最高的。反而這個狀況會造成沒有效率。 主要有兩個缺點: 一、如果訪問頻率比較高的話,頻率字段會占據一定的空間; 二、無法合理更新新上的熱點數據,比如某個歌手的老歌播放歷史較多,新出的歌如果和老歌一起排序的話,就永無出頭之日。 那要如何解決這些問題呢? 什麼是 TinyLFU ? 是做什麼用? TinyLFU 解決 LRU 和LFU上述的缺點。W-TinyLFU 算法由論文《TinyLFU: A Highly Efficient Cache Admission Policy》提出。 它主要做兩件事: 一、採用 Count–Min Sketch 算法降低頻率信息帶來的空間耗損; 二、維護一個PK機制保障新上的熱點數據能夠緩存。 Count–Min Sketch 算法類似 Bloom filter 思想,對於頻率統計我們其實不需要一個精確值。存儲數據時,對key進行多次 hash 函數運算後,二維數組不同位置存儲頻率(Caffeine 實際實現的時候是用一維 long 型數組,每個 long 型數字切分成16份,每份4bit,默認15次為最高訪問頻率,每個key實際 hash 瞭四次,落在不同 long 型數字的16份中某個位置)。讀取某個key的訪問次數時,會比較所有位置上的頻率值,取最小值返回。對於所有key的訪問頻率之和有個最大值,當達到最大值時,會進行reset即對各個緩存key的頻率除以2。 TinyLFU藉助了數據流Sketching技術,它可以用小得多的空間存放頻次信息。TinyLFU採用了一種基於滑動窗口的 時間衰減設計機制 ,藉助於一種簡易的 reset 操作:每次添加一條記錄到Sketch的時候,都會給一個計數器上加 1,當計數器達到一個尺寸 W 的時候,把所有記錄的 Sketch 數值都除以 2,該 reset 操作可以起到衰減的作用 。 Sample Code https://github.com/dgryski/go-tinylfu 這邊稍微列出相關程式碼: 關於 slru 有兩個跟著時間在移動的 list // Cache is an LRU cache. It is not safe for concurrent access. type slruCache struct { data map[string]*list.Element onecap, twocap int one, two *list.List } 來看一下 get 來了解兩個...
繼續閱讀

[電玩][NS] 黑暗靈魂 - 重製版: 手殘黨全破心得

前情提要: 2022 最受大家期待的遊戲,當然就是黑暗靈魂的最新開放世界最新作。 「艾爾登法環」(戲稱:艾爾登大人) 這一塊遊戲我也是第一時間就入坑(由於股癌的業配原因),買回來後當然也是相當的瘋狂的玩。短短時間我記得我已經玩了接近 80 個小時(進度慢慢打到王城)。 然後就在這個時候,因為實在很難晚上搶到電視。想說在 NS 上面也能玩一下類似「艾爾登法環」 的遊戲,就想到了我之前好像有在特價的時候把「黑暗靈魂 - 重製版」買下來,但是一下就棄坑了。 想說也用法師來重新開局黑暗靈魂看看,這一次會不會玩得比較好。 結果玩著玩著,艾爾登法環反而被我棄坑了。 我就想說專心一點把黑暗靈魂先全破,也終於在今天全破了。 這一篇只是單純把我還記得的一些東西記錄起來,也把一些我覺得很重要的偷吃步記下來。 我是沒有任何錄影啦~ 不過網路上有很多影片可以看了。 新手玩家的建議 建議要法師開局,搭配萬能鑰匙。 你的人生會好很多。 升等及記得先提升「持久力」跟「體力」,能活多久就看你能滾幾次,多挨個一刀。 弓箭很重要,弓箭很重要,弓箭很重要。 能遠遠用弓箭射死的,絕對不要想說近戰。 中後半段很重要: 記得可以斷尾的魔王,一定要斷尾。武器都超好用的。 更多可以看 【心得】給剛入手黑魂re的新手們一些初期開局的建議 流程可以參考 黑暗靈魂Remastered 攻略順序推薦及要點 。不要學我一開始跑去地下墓地,結果困在那邊只能重玩。 遊戲相關重點(死很大的點) (全破的畫面截圖,我實在不喜歡實況跟紀錄) 羊頭惡魔 - 遠遠的火焰壺偷襲 就是傳說中,真正魔王是兩隻狗。 那個羊頭惡魔只是個幌子而已。 狹小的空間加上兩隻狗一直打,基本上就是被咬好玩的。 找了影片,透過這個影片教學遠遠丟,我至少先殺死一隻狗,也讓我過了。這也卡了一兩個小時。 打到夾縫森林得時候 - 記得拿最強盔甲 - 哈維爾套裝 哈維爾套裝很重要,雖然重到不行,但是可以確保你多被打幾下。很多王我都是拿這個碾過去的。 王城雙弓 大部分會以為王城雙王很難,其實比較難得是王城雙弓。 我大概卡了三個多小時吧,每次都跑很久然後被射下去。 《黑暗之魂重製版》王城雙銀大弓簡單通過視頻教學 - 遊戲百科 … RE:【問題】王城的黑騎士弓手要怎麼打阿 - 哈啦區 王城双弓详细打法攻略- 黑暗之魂Dark Souls - 豆瓣 深淵之王 - 無恥射死他 黑龍斷尾 - 不難打死~但是超難斷尾的。 認真打他的話大概三場可以打死,但是斷尾打了好幾個小時。不過黑龍大劍超強的物理攻擊力加上低需求,一定要來一把。 不會盾反怎麼辦 - 葛溫還是可以全破 盾反一直抓不到時機點,最後還是參考這個影片。不過這個影片技巧要求也不低,主要是因為葛溫的招式都是連續,完全沒有機會讓你有足夠精力的時間。 最後我用黑騎士套裝( CP 最好) 加上契形刺叉的消耗氣力最低,才打贏(大概也打了三個多小時),每天沒事就拿起來鍊手一下。 心得: 打完黑暗靈魂,終於有一種「原來我也是會玩魂系列的玩家呢!」的成就感。幾件事情分享: 絕對要查攻略,病村人家說難到不行。我也是一開始就去打王,然後就不理他。 等到裝配夠強後面再來拿寶物。 打不過的王一定要查,絕對有很多簡單打法。不論是拿最強盔甲來硬扛,還是遠遠射死他。 打不過絕對不要氣餒,過兩天手頭順了就打很快。 參考攻略 《黑暗之魂》图文攻略 黑暗之魂新手详尽图文攻略 黑暗靈魂Remastered 攻略順序推薦及要點 黑暗靈魂 - 【攻略】黑暗知識與疑問 11/6更新 【心得】給剛入手黑魂re的新手們一些初期開局的建議
繼續閱讀

[學習文件] 如何透過 GCP STT (Speech To Text) 與 LINE Video Flex Message 來打造幫助長輩的影片翻譯(自動輸出文字)聊天機器人

前言: 大家好,我是 LINE 台灣的資深技術推廣工程師的 Evan Lin 。 Flex Message Update 3 在日前公佈了,除了帶來更多樣的客製化項目。 最讓人注意的莫過於可以在 Flex Message 中顯示影片元件的 Flex Message including a video 了。本篇文章將透過一個長輩使用 LINE 來跟家裡人溝通很常看到的案例,並且展示如何透過 STT 的技術來讓 Flex Message 顯示更多,更有用的資訊來幫助你。 解決的問題痛點 不知道大家是否有類似的問題,有一些長輩或是朋友們由於可能不方便打字,經常都透過語音訊息來溝通。但是許多時候其實是不方便打開手機音量來「聽訊息」或者是「看語音影片」的,比如說在捷運上,或是在會議之中。 這個時候,經常會想到說是否有一個方便的服務可以透過上傳影片(或是語音檔案)的方式。 透過 STT ( Speech-To-Text )的技術來幫影片中的語音翻譯出文字,並且透過 LINE 這次開放的 Flex Message Update 3 新格式 ,來讓使用者更快看得到你的訊息內容,而不需要打開影片內容。 如何用?如何架設? : 開源程式碼: 不囉唆,先來看 code 。 開源程式碼: https://github.com/kkdai/linebot-video-gcp 如何快速架設在自己平台: 請根據以下的流程,來直接透過開源的程式碼來架設一個 LINE Bot 跟 GCP STT 與 GCS (Google Cloud Storage) 的結合。 事前準備 LINE Developers 帳號 到 LINE Developers Console 透過你的 LINE 帳號登入。 開啟 LINE Developers 帳號 開啟一個官方帳號 Message API Channel 並且取得 channel secret 與 channel access token。 請參考這篇教學。 需要一個免費的 Heroku 帳號。 需要一個收費的 Google Cloud Platform 帳號,並且取得 GCP JSON key file ,更多詳細流程請參考 Cloud Storage client libraries。 開始部署 請先到程式碼: https://github.com/kkdai/linebot-video-gcp 按下: “Deploy” 來部署到你的 Heroku 帳號 除了填寫 App Name 以外,以下的參數必須要填入才能完整運行。 ChannelAccessToken: 請到 LINE Developers Console issue 一個。 ChannelSecret: 請到 LINE Developers Console 拿一個。 GCS_BUCKET_NAME: Google Cloud Storage Bucket Name 你需要先建立一個 GCS bucket 並且依照稍後文章的內容來改成 public access 。 GCS_PROJECT_ID: Google...
繼續閱讀