[學習心得][Golang] 透過 Golang 來做檔案反解析 Macho for Reserve Engineering by golfing

前言:

Mach-O (Mach Object file format) 是存在於Darwin, Mac OSX 與 iOS 等系統上的執行檔格式。

如果想要做 Reverse Engineering 或是更深一層的 execution file parsing 。 原本系統上有官方套件 https://pkg.go.dev/debug/macho 可以供使用,但是沒那麼清楚(好用)。 有人寫了一套 https://github.com/blacktop/go-macho 。快速玩了一下,覺得還不錯,可以看看。

Mach-O:

Mach-O (Mach object file format) 是一個廣泛被用在Darwin, Mac OSX 與 iOS 上的執行檔格式。如果需要返解析相關資訊,可以過官方的套件:

官方套件 :

民間開發套件:

優點:

  • 有比較清楚的 summary

如何使用:

  • 檔案開啟可以使用 relative path 或是絕對位置。 絕對為止可以透過

  • realpath xxx
    
  • 需要安裝 realpath 可以透過 brew install coreutils

  • 當然也可以使用 relative path 。

範例 for blacktop/go-macho

成果

相關文章:

[學習心得][Golang] 相關 Trello 應用的相關筆記

Trello API 申請:

幾件事情快速紀錄一下,如果要用 Golang 撰寫 Trello 工具的話 (根據 Trello API Introduction):

https://trello.com/1/authorize?expiration=never&scope=read,write,account&response_type=token&name=Server%20Token&key=YOUR_API_KEY
  • 使用的 Golang Package

    • https://github.com/adlio/trello
  • 如何取得 Trello Board ID

    • https://trello.com/b/aaaaaaa/board_name.json.

    • 其中 aaaaaaa 是 Board ID(名稱,顯示在網頁上的)

    • board_name: 是原本 Board 名稱

    • 透過這個方式,可以取得所有關於 Board 的名稱。

      • {"id":"xxxxx","name":"board_name","desc":"","descData":null,"closed":false,"dateClosed":null, .....}
        

相關範例程式碼:

相關文章:

[好書分享] 從0到1 - 打開世界運作的未知祕密,在意想不到之處發現價值

從0到1 - 打開世界運作的未知祕密,在意想不到之處發現價值
Zero to One : Notes on Startups, or How to Build the Future
作者: 彼得.提爾  布雷克.馬斯特  
原文作者: Peter Thiel  Blake Masters  
譯者: 季晶晶  
出版社:天下雜誌出版 
出版日期:2014/10/07 
語言:繁體中文 ISBN: 9789862419533 

買書推薦網址:

前言:

這一本是今年所讀完的第九本書。 作者Peter Thiel 是 PayPal 的共同創辦人,現在是創業基金(Founder Fund) 的合夥人。對於創業有相當多的想法的人。而這一本書則是他在史丹佛大學的一堂課,整本書的內容真的蠻像一堂課程一樣,一開始的前言談到許多過去的事情,企業的樣貌,再來談到企業成功的一些方式與如何達成的方式。最後放眼未來,期許每一位同學都能夠成為獨樹一幟的創業家。

內容簡介與心得:

史丹佛大學改變未來的一堂課
矽谷傳奇創業家、PayPal創辦人 彼得‧提爾 第一手分享

複製別人的模式比創新事物容易。
做大家都知道怎麼做的事、提供更多熟悉的東西,這是由1到n。
不過如果只複製前人的路,就無法學習到他們的精髓。
創新是由0到1。創新獨一無二,創新的時機與開創出的結果也是新鮮奇特的。
這本書講的就是創新的秘密。

這不只是一本商業書,它將帶領你穿越歷史,從哲學、經濟、商業等多元角度,解讀世界的發展脈絡,進一步分析彼得‧提爾創業的心法與思考的角度,期盼帶給讀者超越學術限制、了解更多現實世界運轉的邏輯與經驗分享,幫助你思考從0到1的秘密,從秘密中發掘機會。

彼得‧提爾(Peter Thiel)是PayPal和Palantir共同創辦人,臉書第一位外部投資人,率先注資Yelp、LinkedIn、SpaceX、Spotify、Airbnb等新創企業。他念哲學與法律,卻在科技、創投世界大放異彩;成立提爾獎學金,鼓勵年輕人休學創業,激發自己的潛力。

章節條列

01 未來的挑戰 / 02 1999年的教訓 / 03 打造有創意的獨占企業

一開始作者先提出「水平式進步」跟「垂直式的進步」,這兩個的差別是什麼呢?

  • 水平式的進步: 由生產一個打字機,到一百台打字機。是製造過程與工法的進步。
  • 垂直式進步: 由生產一個打字機,到一個文書處理機,甚至是變化到電腦。

相較於垂直式進步,水平式進步比較容易發生。只需要有全球化規模的公司,都可以透過擴建廠房或是降低成本的方式來讓製造量變多。進而演化出更好的工法。 而垂直式進步相對的少,往往都是一種創新思維的產生,也就是創業家的契機。

1999 所引發的矽谷掏金熱引發原因來自於 MOSAIC 瀏覽器,之後的 NESCAPE 都是造就矽谷熱潮的知名公司。網際網路的風行,讓許多家「.com」公司一夕成名,但是也隱藏許多的危機。兩千年的網際網路泡沫化就是這樣的結果,作者也建議應該要從矽谷的泡沫化學習到以下的事項:

  • 循序漸進:不要過分樂觀高估了未來獲利。
  • 保持精簡有彈性:業務範圍與擴充需要保持在最精簡的狀況,才能讓整個業務範圍能保有彈性。
  • 面對競爭求取進步:保持持續進步,而不是面對競爭就是採取商業手段來獲勝(降價,或是各種銷售策略)。
  • 專注產品而非專注銷售: 這部分跟我看的另外一本書「什麼才是經營最難的事 - 矽谷創投天王告訴你真實的管理智慧」,真正的創業家都會專注在產品本身,都會認為網際網路的通路下,需要擔心的不是銷售本身,而是產品本身。

04 競爭的迷思 / 05 後發優勢 / 06 成功不是樂透彩

商業上的競爭可以造成經濟體性的完全競爭市場,對於消費者而言是比較好的。代表面臨著比較多的選擇,有著不同價位的產品可以挑選。但是對於創業者則是不好的。競爭往往造成了許多惡性的循環。

作者打了一個比方,當初要做 Paypal 線上刷卡機制的時候。第一個提出使用手機外接刷卡機的人是 Square 的方形刷卡機,但是馬上就面臨了五六種其他業者的競爭。 半月形,圓形與三角形的讀卡機的業者 。如果因為在意對手的動作,往往會浪費了創業者的專注度。這也是為什麼許多有亞斯伯格症的創業者 容易成功,因為對於競爭對手的動作不在意,才能夠專心開發自己的產品。

「後發優勢」指的是有不少的創業的服務,一開始並沒有相關的優勢,甚至是完全沒有獲利方式的。他們就是需要到了一定的經濟規模後,才能開始談獲利。 書上舉了 PayPal 與 LinkedIn 為例子,甚至可以說公司僅兩年的獲利可能會佔了企業從開創以來的 50 % 以上的獲利。 也就是說,公司一直到了近幾年才賺錢(而且賺的非常多)。什麼樣的產業具有相關的特性:

  • 專利技術
  • 網路外部性
  • 經濟規模
  • 品牌

那麼如何打造出相關企業呢?

  • 從小生意開始壟斷:像是 Amazon 先從差別性不大,可以做網路零售業的書本販賣開始。
  • 擴大規模
  • 別搞破壞: 這邊指的是,不要造成既有市場的挑戰者。 容易被許多外來勢力打壓(類似 Uber, AirBnB) 。
  • 後來居上: 持續有耐心,等待獲利到來的一天。(類似 Amazon)

07 跟著錢走 / 08 偉大的企業都有祕密 / 09 基礎決定命運

一開始談到創投公司的獲利流程,一個好的投資案通常需要時間的累積才會有夠高的報酬,這也是為什麼許多創投公司在一開始就會倒閉的原因。許多的創投正常來說屬於『J型獲利」也就是一開始會往下,需要許多年後那些投資才會陸陸續續兌現報酬。(相反的也有可能確認失敗)。

10 組織的幫派文化 / 11 顧客不會自動上門

這邊談到一些企業文化,什麼是企業文化? 並不是大家可以待在公司不回家,可以帶狗狗上班。常常要自我思考,為什麼員工會想來你的公司,而不是其他的公司? 類似的內容與想法可以思考培養出一個企業的文化。 幫派文化跟教廷文化類似,都是由強大的創辦人影響著許多的同仁。這也是一種企業文化,企業創辦人在招募的時候都需要好好思考到相關的細節才是。

12 人類與電腦的新關係 / 13 潔淨科技與特斯拉 / 14 創業家無可取代的特質

這三個章節談到了未來的發展,潔淨科技可能帶來的未來。 最後也分享了許多創業家不同的特質。

心得:

老實說,這本書不算是很容易讀得完的書籍。可能是內容編排上,很刻意的沒有提到太多作者自身比較細的經驗部分,讓我在閱讀起來比較沒有那麼喜歡。 真的就很像是課堂書籍一樣,許多對於創業家的描述部分算是很有見解。

參考網站:

[遊戲心得][PS4] Far Cry5 極地戰嚎5 遊戲心得

(資料來源: 巴哈姆特)

很久沒來寫遊戲心得,並不是說沒有玩遊戲,而是許多遊戲都是玩到一個段落。 不然就是一個不會有結束的遊戲 (比如說:魔物獵人 MHW, MHWI, MHR ..)。 Fay Cry 系列我第一款玩的是 PS4 的極地戰嚎:野蠻紀源 (Far Cry:Primal),必須得說 Far Cry:Primal 是我喜歡的遊戲類型,除了有開放世界外,並且有技能樹可以選擇,又有野獸的寵物系統,相當的有趣。 也不小心的玩到全破,而且也讓我有了動機去買 Fay Cry5 。

不得不讚嘆 Far Cry5 的視覺處理,許多時候都覺得玩起來 PS4 的效能都被榨乾一樣。很多漂亮的山景與草原景色都襯托出蒙大拿幸福郡的美景。 關於遊戲本身有蠻多可以推薦的地方:

受歡迎的反派

drawing

不像10/10 的遊戲, Far Cry 系列的反派都相當的有個性並且受歡迎。 比如說 Far Cry 5 的就是一個幸福郡的邪教教主與他的小夥伴(兄弟姊妹)們。 雖然聽到邪教你會覺得很奇怪,但是 Far Cry 5 裡面反派卻又有自己的生存理念跟想法,卻又壞到那樣的有道理。 他們基於世界混亂的毀滅論,準備了許多的避難所,並且透過販賣毒品來擴大勢力。 然後三個兄弟又負責不同的部分,妹妹負責種植毒品,兩個弟弟一個負責獵捕好人,另外負責處罰叛徒。 每個不同的人,有著極為特殊的穿著打扮,卻又有相當特色的地方。

有點困難的瞄準系統

我個人認為他的瞄準系統有點難,就算是有開啟自動瞄準。經常還是會算得太精細而沒打到對手,打得緊張的時候就會一直死。後來也只好把難度調低(但是許多時候,還是死的不要不要的)。

開車體驗很棒

我喜歡他的開車體驗,很好玩。雖然開車跟直升機的操作方式是相反的。(有趣了吧)。 但是開車起來相當的讚,可以開個收音機來聽廣播,然後自動駕駛來看風景,是一種享受。

超級棒的支線任務

我必須得說,其實之前就有查過相關的結局內容(很讚,很值得去了解)。但是支線本身卻是常常讓我驚豔不已,比如說:

  • 蛋蛋節要去殺牛的蛋蛋?
  • 開車衝撞邪教徒的封鎖
  • 外星人的任務
  • 也有致敬之前的任務

充滿解謎狀況的災難資源箱支線任務

除了這些支線任務外,災難箱更是一個很棒的系統。 在許多地方有著為了避難時期而準備的物資。(當然還有技能點數)。

取得了相關的災難資源箱地點後,就有相當多的解謎任務,不論是

  • 遠距離射到門鎖
  • 將電源接起來
  • 找到某把鑰匙
  • 開車來當跳台

可以不解,也可以都解。(就會有更多的技能點數)。

其他小細節:

強制主線任務:

只要反抗勢力點數足夠後,直接開啟打王模式。不論你在哪?都會被抓起來開始打小王。這個有人罵,有人喜歡。 個人覺得還不錯啦。不用去找王,不過就得要知道這個模式,不然呆呆地找不到接下來幹嘛。

超難的釣魚:

釣魚不錯完,但是真的太太太太難!我放棄了。

總結

我會相當推薦這一系列遊戲,小任務的作業感很低。可以讓你放鬆的旅遊整個國度,很漂亮的景色跟優秀的支線任務。 更可以讓你喜歡上的大反派。 我應該會接下去玩 Far Cry 6。

參考

[學習心得] LINE Bot 開發者指南 詳解 - 6 其他相關功能

前言:

各位好, 我是 LINE Taiwan 資深開發技術推廣工程師 – Evan Lin。 今天這篇文章為各位詳細解釋 「 LINE Bot 開發指南」這一份投影片文件。這一份文件是來自於 Development guidelines 的投影片,考量到在台灣還沒有正式的公布與中文化。這一次跟總部共同合作準備中文版本之外,並且特定用這一系列文章加以解釋,希望可以讓更多開發者有更多的了解。 Development guidelines 文件內容很多,本份投影片也將以五篇文章的篇幅來加以解釋。本篇文章為第六篇文章,主要講解的會是關於其他相關功能所有需要注意的事項。

文章索引:

完整投影片鏈結: https://speakerdeck.com/line_developers_tw2/line-bot-developer-guideline-chinese

希望各位可以持續關注:

  1. 關於LINE Bot
  2. 使用Webhook URL接收請求時的注意事項
  3. 發送 API 請求時的注意事項
  4. LINE Login (本篇文章)
  5. LINE Login (補充)
  6. 其他相關功能(本篇文章)

本篇文章將專注在第一個段落,也就是 Page 47 ~ Page 30 的部分。

其他相關功能

本篇注意事項中,將會帶出以下的相關項目。

  • LINE URL scheme

  • LIFF (LINE Front-end Framework)
  • 權限管理
  • 貼圖的使用方法
  • 關於Emoji的發送和接收

以下開始將會逐一針對每一個頁面詳細解釋:

LINE URL scheme

經常收到許多開發者類似的詢問如下:

  • 要怎麼讓使用者直接加 OA 好友?
  • 如何直接開啟跟 OA 的聊天視窗?
  • 如何讓使用者開啟分享地點的功能?
  • 如何開啟上傳照片的選項?
  • 如何快速到開啟設置畫面?可以讓使用者更好的調整一些選項?

這些問題都是很常被開發者們詢問到,或許大家都覺得這些功能都牽扯到跟 LINE 相關的設定或是選項的時候。其實也是有提供官方的方式來讓開發者跟使用者互動的。 那麼就是 URL Scheme ,透過以下方式就可以:

  1. https://line.me/R/oaMessage/{ACCOUNT_ID}/?{TEXT_MESSAGE}

    點擊連結開啟官方帳號的聊天畫面,指定的文字訊息將出現在輸入欄內。如果該官方帳號尚未被加入好友,則聊天視窗會顯示加好友畫面。 如果要填寫的訊息包含多字節時,請使用UTF-8進行URL編碼。

    範例:https://line.me/R/oaMessage/linejpen/?%e3%81%93%e3%82%93%e3%81%ab%e3%81%a1%e3%81%af

  2. https://line.me/R/ti/p/{ACCOUNT_ID}

    點擊連結,以進入到任何官方帳號的加入好友畫面。如果從PC開啟頁面,將顯示QRCode。

    範例:https://line.me/R/ti/p/linenews

  3. https://line.me/R/msg/text/?{TEXT_MESSAGE}

    https://line.me/R/share?text={TEXT_MESSAGE}

    開啟分享畫面,分享指定文字的訊息。如果要填寫的訊息包含多字節時,請使用UTF-8進行URL編碼。

    範例:https://line.me/R/msg/text/?%e3%81%93%e3%82%93%e3%81%ab%e3%81%a1%e3%81%af

  4. https://line.me/R/nv/location/

    在與用戶聊天畫面上,將開啟分享位置資訊的畫面。 此 LINE URLscheme 不支援 1-1 和 Bot 聊天以外的形式或 LIFF Apps

參考文章:

LIFF (LINE Front-end Framework)

LIFF (LINE Frontend Framework) 除了有許多強大的功能外,更是讓網頁開發者可以快速結合許多 LINE 的功能的開發套件。尤其是 LIFF v2 可以在外部瀏覽器使用的功能跟 Share Target Picker 的相關功能,都有 蠻多相關文章跟可以使用的功能都建議大家參考一下:

參考文章:

權限管理

對於每一個 Channel (不論是 LINE Login, Messaging API 或是 LIFF) 的權限控管都是相當重要的。

設定權限

可以對於該channel進行編輯/查看/測試的權限。

  • Admin:可以執行與該channel有關的所有操作。
  • Member:可以查看該channel的名稱和圖示等基本資訊,以及統計資訊。
  • Tester:可以查看該channel的名稱。另外,可以在非公開狀態的channel上進行測試。 ※具有管理員權限的用戶,將自動成為測試人員,並且可以在終端上進行測試。

這裡有一些相關建議如下:

  • 請控管好權限,切勿隨意開給所有專案參與者 Admin 全縣。
  • 對於測試人員需求或是外部工作同仁,建議使用 Tester 。

參考文章:

貼圖的使用方法

官方帳號可以發送以下2種類型的貼圖。

  • 官方預設貼圖
  • 由企業提供,並且自己公司擁有授權的貼圖

    發送此類貼圖時,本公司需要將其貼圖設定為白名單才可進行發送。

    有關申請方法與相關遵守規範,請洽詢承辦業務人員。

關於在聊天機器人中使用貼圖的相關 API ,可以參考以下文章:

關於Emoji的發送和接收

建議使用的Emoji有以下2種: Unicode emoji和 LINE emoji。

有關詳細資訊,請參閱LINE Developers的文件。 https://developers.line.biz/en/reference/messaging-api/#text-message

可以傳送的表情符號(Emoji) 清單 Sendable LINE emoji list:

https://d.line-scdn.net/r/devcenter/sendable_line_emoji_list.pdf

這裡也提供相關的開發者說明文章給各位參考,裡面包括了如何透過程式碼來發送表情符號 (Emoji) 之外,也可以辨識使用者發送過來的表情符號,讓你的聊天機器人更有生命力:

結論:

以上就是「LINE Bot 開發指南」第六部分的補充與分享,想要知道更多內容可以查看完整投影片,或是找到其他篇的文章來了解。

想了解更多開發者的活動? 立即加入「LINE 開發者官方社群」官方帳號,就能收到第一手 Meetup 活動,或與開發者計畫有關的最新消息的推播通知。▼

「LINE 開發者官方社群」官方帳號 ID:@line_tw_dev img

[學習心得] LINE Bot 開發者指南 詳解 - 5. LINE Login (補充)

前言:

各位好, 我是 LINE Taiwan 資深開發技術推廣工程師 – Evan Lin。 今天這篇文章為各位詳細解釋 「 LINE Bot 開發指南」這一份投影片文件。這一份文件是來自於 Development guidelines 的投影片,考量到在台灣還沒有正式的公布與中文化。這一次跟總部共同合作準備中文版本之外,並且特定用這一系列文章加以解釋,希望可以讓更多開發者有更多的了解。 Development guidelines 文件內容很多,本份投影片也將以五篇文章的篇幅來加以解釋。本篇文章為第五篇文章,主要講解的會是關於 LINE Login 與開發時候需要注意的事項。

文章索引:

完整投影片鏈結: https://speakerdeck.com/line_developers_tw2/line-bot-developer-guideline-chinese

希望各位可以持續關注:

  1. 關於LINE Bot
  2. 使用Webhook URL接收請求時的注意事項
  3. 發送 API 請求時的注意事項
  4. LINE Login (本篇文章)
  5. LINE Login (補充)(本篇文章)
  6. 其他相關功能

本篇文章將專注在第一個段落,也就是 Page 47 ~ Page 30 的部分。

LINE Login (補充)

本篇注意事項中,將會帶出以下的相關項目。

  • 關於防止以 state 不法使用的對策

  • 依照不同流程 OS 進行 LINE Login 的用戶流程範例 (iOS)
  • 依照不同流程 OS 進行 LINE Login 的用戶流程範例 (Android)
  • 外部瀏覽器的登入流程(示意圖)
  • 關於轉換目標端瀏覽器的設定方法

以下開始將會逐一針對每一個頁面詳細解釋:

關於防止以 state 不法使用的對策

這邊主要是提到 state 參數的使用方式, 詳細的步驟可以參考教學部落格 如何透過 Golang 開發 OAuth2 的 PKCE – 以 LINE Login 為例 。這邊也有列出在官方文章中的使用流程說明:

img

有兩張圖來對照可以看得更清楚,由於 state 是網站(或是 App) 開發商所隨機產生出來的一串文字。可以做為檢查之用,避免 Open ID 的需求被中間人攻擊後發送奇怪的訊息。這邊也提供一些作為 state 的開發指南:

  • state 文字本身應該是沒有任何意義的,無法被其他人所猜透。
  • state 文字每一次的認證請求應該都需要不同,才能做到保護。

參考文章:

依照不同流程 OS 進行 LINE Login 的用戶流程範例 (iOS)

以下兩個是根據不同的 OS 進行 LINE Login 的時候產生的使用者流程的範例,因為 iOS 跟 Android 兩者有些許的差異,特地使用兩張投影片來解釋。首先在這張 iOS 的投影片裡面有敘述在 LINE 裡面跟外部瀏覽器(Safari, Chrome) 使用 LINE Login 的流程:

  • 應用程式內瀏覽器 (LINE)
    • 開啟 LINE App -> 同意畫面(僅第一次) -> 開啟應用程式內瀏覽器(IAP: In-App-Browser) 的網站。
  • 外部瀏覽器登入 (Safari, Chrome):
    • 自動開啟 LINE App -> 同意畫面(僅第一次) -> 開啟自動登入畫面 -> 開啟應用程式內瀏覽器(IAP: In-App-Browser) 的網站。

依照不同流程 OS 進行 LINE Login 的用戶流程範例 (Android)

可以發現 Android 開啟上跟 iOS 差別就是使用外部瀏覽器開啟網址的時候,唯一的差異就是開啟 LINE App 會有相關的詢問。以下詳細敘述如下:

  • 外部瀏覽器登入 (Safari, Chrome):
    • 詢問是否要開啟 LINE App -> 自動開啟 LINE App -> 同意畫面(僅第一次) -> 開啟自動登入畫面 -> 開啟應用程式內瀏覽器(IAP: In-App-Browser) 的網站。

外部瀏覽器的登入流程(示意圖)

最後是指在外部瀏覽器(通常是指桌機的狀況)的瀏覽行為,這裡也稍微解釋一下:

  • 登入取得使用者同意( User Consent)
  • 查看瀏覽器是否有過去登入的紀錄
  • 如果沒有登入過,會查看是否有 Universal Link (註解: 也就是可以直接開啟 App 的方式,通常在桌面系統是不會有的)。如果沒有,就會開啟網頁登入 LINE 。
  • 完成登入,繼續 Redirect 到當初 LINE Login 設定的網址。

這邊主要差別就是,使用者如果是在桌面上來透過 LINE Login 這時候可能會進入帳號密碼的輸入畫面。但是許多使用者往往都忘記當初申請 LINE 的帳號跟密碼,這時候其實也是可以透過 QR Code 來登入。

並且, LINE Login 也可以知道使用者是如何登入:

相關文件:

關於轉換目標端瀏覽器的設定方法

在使用 LINE Login 的時候,就是依照上述三頁投影片的方式來載入。 也就是 iOS 與 Android 中 App 中的 In-App-Browser 以及透過外部瀏覽器的方式來登入。但是如果有需要指定開啟某一個登入方式(比如說:一定要透過外部瀏覽器),可以參考本篇的內容:

  • 外部瀏覽器 (External Browser):
  • 在 Android 中指定使用 Chrome In-App-Browser 開啟 (Opens target URL in a Chrome custom tab ):

相關文件

結論:

以上就是「LINE Bot 開發指南」第五部分的補充與分享,想要知道更多內容可以查看完整投影片,或是找到其他篇的文章來了解。

想了解更多開發者的活動? 立即加入「LINE 開發者官方社群」官方帳號,就能收到第一手 Meetup 活動,或與開發者計畫有關的最新消息的推播通知。▼

「LINE 開發者官方社群」官方帳號 ID:@line_tw_dev img