December
17th,
2019
前言: 平常在臉書社群或是 Slack channel (https://t.me/golangtw) 都會聽到一些常問的問題,決定把它整理一下,變成這篇文章,也希望讓更多人經過搜尋來了解與得到解答。 由於經常詢問的問題還不少,這算是一個系列的整理,希望能透過整理成文章的方式給予大家比較深入的了解。 第一篇首先是 Type Assertion ,希望大家在型別轉換上能夠更了解。 相關系列文章整理: Type Assertion (本篇) Struct Tags Type Assertion: 範例程式碼: https://play.golang.org/p/Ya8tVYmdpko 不好意思 想請問這一段 resp, ok := datum.(*module.Response) 那個ok是代表甚麼意思啊 是代表datum這個interface可以成功轉成Request 這個struct的意思嗎? 這種用法叫做 Type Assertion (Go Tour 有相關說明),主要是用來做轉型判斷。透過 Type Assertion 主要的好處可以確認是否可以正確的轉型成功。 當然 reflect 也可以轉換數值,但是比較適合使用在當你拿到一個參數卻不知道當初是使用哪一種資料型態。才透過 reflect 套件來取得型態與取得數值內容。 簡單一點的例子而言: func parseInterfceToString(in interface{}) string { if val, ok := in.(string); ok { return val } return "" } 上面的例子,因為已經確定只支援 string 的解析方式,所以可以直接使用 type assertion 的方式來轉址。 但是很多時候,如果希望能夠支援多種型態,並且能夠正確的讀取數值的話,又該如何做呢? func createQuery(q interface{}) { t := reflect.TypeOf(q) v := reflect.ValueOf(q) fmt.Println("Type ", t) fmt.Println("Value ", v) } 這是一個相當簡單的 reflect 範例,可以讓妳得知輸入進來的資料型別與實際資料。 直接透過 reflect.Type.Kind() 來取得型別做處理的範例可以參考以下: func examiner(t reflect.Type, depth int) { fmt.Println(strings.Repeat("\t", depth), "Type is", t.Name(), "and kind is", t.Kind()) switch t.Kind() { case reflect.Array, reflect.Chan, reflect.Map, reflect.Ptr, reflect.Slice: fmt.Println(strings.Repeat("\t", depth+1), "Contained type:") examiner(t.Elem(), depth+1) case reflect.Struct: for i := 0; i < t.NumField(); i++ { f := t.Field(i) fmt.Println(strings.Repeat("\t", depth+1), "Field", i+1, "name is", f.Name, "type is", f.Type.Name(), "and kind is",...
繼續閱讀
December
13th,
2019
前言 大家好,我是 LINE Developer Relations 團隊的資深開發技術推廣工程師 - Evan Lin 。主要的工作項目就是平台技術推廣與技術品牌的建立與溝通。 LINE TAIWAN TECHPULSE 2019 已經在 2019/12/04 在和平籃球館舉辦了,不知道今年各位有沒有參與到這一場精心安排的盛會。 這一篇文章,分享一下身為幕後工作人員在活動裡面想要傳遞的訊息,本篇文章將會專注在主場議程以外的相關訊息,也就是開發者相關的交流區域。希望大家都有觀察到工作人員們的初衷,跟著本篇文章再來體驗這一場知識與社群的饗宴。 回歸初衷,從開發者的本質出發 開發者在參與研討會的時候,最想要的究竟是什麼? 就是跟人互動, 而 Closing the distance 一直都是 LINE 的宗旨之一,也是本次活動最大的設計目標。 於是本次的活動回歸了開發者社群的本質,參與研討會最想要做的但是由於一些外在條件而無法實現的夢想,大致上條列如下: 講者們都好強喔,好希望能在台下跟講者互動跟交流,想聽聽他們對於其他部分的意見討論與問題交流。 LINE 的強大開發平台上面有哪些社群組織? 裡面該如何加入呢? 什麼是 LAE (LINE API Expert) 這些大大又是哪裡來的? 可以跟他們交流問問題嗎? LINE Pay 該如何申請測試帳號? 該如何分析問題呢? LINE 的新星計畫又是什麼? 可以跟那些參與的新創團隊聊聊嗎? 聽說 LINE 資安做得相當好,那有資安社群可以參加嗎? 每次看到 LINE 的工程師在各大研討會的分享都好棒,有沒有機會可以跟他們近距離討論呢? 有沒有機會能夠透過參與研討會認識更多的同好? 或是跟同行友人又更多拍照的機會? 這些的問題從去年活動舉辦之後,就有陸陸續續收到來賓們與社群朋友們的意見。 工作團隊仔細思考之後,推出了已開發者為本的活動主軸。 互動攤位: 讓你了解大神的機會 首先問了讓每個參與的人都有機會可以跟講者們面對面討論的機會,主辦單位這次提供了互動攤位。並且有五大主題攤位: Ask LINER: 讓你跟講者,來自日本的 LINE 工程師面對面的交流與討論。台上聽不懂的,台下讓你問。 面板上面還清清楚楚地有著所有講者會待在攤位的時間,千萬不要錯過跟講者面對面的機會。 並且在中午時段還有來自於日本 Developer Relations 團隊的 Shoko Sato 與 Tachibana Sho 來分享日本 Developer Relations 的活動與一些有趣的日本服務。 LINE Pay: 行動支付已經是一大風潮,想要透過 LINE 官方帳號來創業的夥伴們,都希望可以快速的了解如何串接 LINE Pay ,這個攤位給你一個面對面的討論機會。 BECKS.io 社群攤位: 由 LINE 韓國同仁,亞洲傳奇資安大神 Beist 所組織的跨公司的資安社群 BECKS.io 這次也帶著相關資訊在此次的研討會之中擺攤。 其實 BECKS 今年在台灣也舉辦了五次的社群聚會,如果對資訊安全有興趣的朋友,可以追蹤社群活動首頁: https://becks.kktix.cc/ LAE (LINE API Expert) 互動攤位: LAE (LINE API Expert) 自從在 2018 Q1 宣佈以來,台灣目前也有九位 LAE (可以去以下網址查詢所有的 LAE )。 經常大家都是遠遠地知道有這些 LAE 的存在,卻一直苦無機會能跟他們面對面的交流。 所以這次趁著 LINE TECHPULSE 的機會,也邀請了 LAE 一起來共襄盛舉。 LINE PROTOSTAR 互動攤位: 本屆 TECHPUSLE 也邀請到運用 LINE 平台打造應用的10家新創團隊,命題都非常實用有趣,可分為生活助手、娛樂、教育,與金融科技相關的應用。 這邊可以讓各位去一個一個了解每一個新創團隊如何透過 LINE 平台與聊天機器人來發展自己的事業,並且如何透過一些 Messaging API 來讓自己的相關事業能更加活躍。 展示架(Poster) : 跟 LINE 台灣服務工程師討論架構 此外,今年一共舉辦了四次的 LINE Developer Meetup ,並且有許多次的社群活動邀請到...
繼續閱讀
December
11th,
2019
前言 大家好,我是 LINE Taiwan 的 Technical Evangelist - Evan Lin。這次很開心受到 chatbot 社群台中分部的邀請,參加了 “中部人的 Chatbots Meetup 聊天機器人小小聚 #5 @ 台中夢森林” 的聚會活動,並且分享 LINE API 更新與個人開發的心得。在此也跟各位分享本次參與的心得,並且也希望透過社群分享的力量能夠讓聊天機器人的開發動能更加的盛大。 社群 Chatbots Meetup: https://chatbots.kktix.cc/ 本次活動網頁: 活動網址 本次活動的共筆紀錄: https://hackmd.io/MA3uyLKtTn24KUx1iBWSzQ?both 由於 Chatbots Meetup 本身屬於社群自主性的活動,裡面也有許多社群朋友所贊助的閃電秀。裡面的所有內容也是相當的難得與有趣。也希望能夠透過本篇文章讓大家稍微了解 Chatbots Meetup 社群閃電秀的魅力。 以下分享一下個人在這場活動參與的心得,想要了解更多也歡迎去查看社群共筆紀錄。 https://hackmd.io/MA3uyLKtTn24KUx1iBWSzQ?both TECHPULSE RECAP and LINE API Update 201912 / 資深開發技術推廣工程師 Evan Lin TECHPULSE 投影片 LINE API Update 201912 LINE 開發者官方社群 OA 大升級: 就在 12/04 的 LINE TECHPULSE 2019 的大會上,來自韓國的 Jaewon 跟台灣工程師 Penny 有跟大家介紹 Clova Chatbot builder ,並且我們也跟大家想分享了,其實現在開始在 LINE 開發者官方社群 (ID: line_tw_dev) 也已經將 Clova Chatbot builder 整合進來,希望能讓每一位開發者都能夠清楚了解 LINE 平台的開發相關資料該如何尋找,也歡迎大家看看這一篇介紹文章 - LINE 開發者官方社群小幫手 – 操作體驗篇。 部分 LIFF 功能暫停使用 如同之前新聞 「部分 LIFF 功能暫停使用」所述,有一些 LIFF 的功能在即將上架的 iOS 9.19.0 之後就會暫停使用。在這個聚會上也跟大家公布一下,也請開發者們等待更近一步的消息公佈。 相關還有更多的新聞,也歡迎大家到投影片裡面查看。 至於 LINE TECHPULSE 2019 的投影片內容部分,也歡迎大家到投影片裡面查看,如果有任何 LIFF 使用上的問題與建議,歡迎大家在社群提問與討論。 更多相關內容: LINE 開發者官方社群小幫手 – 操作體驗篇 部分 LIFF 功能暫停使用 如何打造一個好的機器人開發框架 / C.T.Lin 投影片 來自資拓資訊的 CT ,跟大家分享聊天機器人開發框架 Bottender 的開發經歷。 整個內容相當有趣,敘述著當初公司接到案子要開發聊天機器人的那一刻,就想要打造給自己用的聊天機器人框架,透過支援的平台增加,與功能的增加,也開始想要把開發框架開源出來給社群的夥伴一起使用,一起來打造更好的平台生態。 整個內容隨著時間軸來了解 Bottender 框架是如何建立與逐漸成長的過程,也有討論到隨著每個平台不同的架構與支援功能在開發一個框架的時候應該要如何應對。 最後 Bottender 也在日前正式的宣布 1.0 ,歡迎大家來關注並且了解這開源聊天機器人開發框架。 更多相關內容: Bottender Bottender 1.0 官方部落格 閃電秀 三個講者之後,接下來就是介紹這個社群最有魅力的部分就是閃電秀。所有的閃電秀可以參考這篇共筆文章 https://beta.hackfoldr.org/chatbot/ ,由於都是五分鐘的閃電秀,主要內容快速用條列介紹給各位: 能使用變數的訊息推送小工具 / 戴均民...
繼續閱讀
December
9th,
2019
前言: 這個專案是之前在開發 Project 52 所開發出來的,原因是看到一些解析 youtube 影片資訊的內容。透過 Golang 的 channel 跟 goroutine 可以很快速的開發出來一個小工具。 專案完成後,其實也沒有特別維護他。想不到卻受到大家的喜愛,Star 數也破了兩百。 由於 Youtube 其實對於資料格式也有修改(截至 2019/12/10 當下) ,這裡也針對目前的資訊來探討如何透過 Golang 來抓取相關資訊,並且取得影片標題,作者姓名,甚至是取得下載鏈結的方式。 (更新: 2020/06/02 ) 由於 YouTube 又再一次更新了影片網址的取得方式,個人也認爲相當適合分享。在此整理一下相關更新部分在同一篇文章中。 開源專案: github.com/kkdai/youtube 投影片: Github: https://github.com/kkdai/youtube 直接下載使用: - go install github.com/kkdai/youtube/youtubedr 用法1: (另存檔名為 Campaign Diary.mp4) youtubedr -o "Campaign Diary".mp4 https://www.youtube.com/watch\?v\=XbNghLqsVwU 用法2: (不指定檔名,而使用影片標題) youtubedr https://www.youtube.com/watch\?v\=XbNghLqsVwU 抓取 Youtube 影片資訊 取得 Youtube 影片 ID 與取得資訊: 舉個例子 Rob Pike 在 dotGo 2015 裡面的一個很棒的 talk - Simplicity is Complicated ,該影片的位置如下: https://www.youtube.com/watch?v=rFejpH_tAHM 這邊簡單的簡介一下,在 Youtube 每一則影片都有一個 ID,這個影片的 ID 則為 rFejpH_tAHM。 如果需要取得影片的相關資訊,則需要呼叫 https://youtube.com/get_video_info?video_id={YOUR_VIDEO_ID} 來取得,也就是如果要取得這部影片的資訊需要鏈結到 https://youtube.com/get_video_info?video_id=rFejpH_tAHM 取得資訊與相關處理程式碼: 接下來依序討論如何尋找影片 title 與資料。首先來詳細查看剛剛取得的相關資料。 因為取得下來的是 URK-encoded query string 的資料,需要透過以下的處理方式。 首先,你需要處理一下錯誤訊息。由於許多的影片是禁止下載分享,如此一來在取得相關資訊的時候則會發生錯誤的 status ,這裡需要處理一下。 取得影片標題與影片作者資訊: 這裡得說一下,其實大多數的資料有修改過。跟網路上可以找得到的資訊不同。所以後來花了很多的時間重新搜尋相關資訊,並且整理與轉換。 透過上述的 parseVideoInfo 轉換後可以取的 url.Values 也就是變數名稱的 answer。 處理上可以參考下列的方式,由於發現 ``answer[“player_response”]` 裡面有 Map 結構的資料格式,於是透過以下的方式可以取得相關資訊。 這邊有些比較少見的用法,稍微解釋一下。 if err := json.Unmarshal([]byte(playResponse[0]), &personMap); err != nil { panic(err) } 這個透過 JSON unmarshal 的方式來將JSON string 轉換成 map 。 轉換成 map 之後就可以尋找與取值,這裡可以使用 videoDetails 。 至於讀者可能會好奇這些資料格式是如何知道的,並且知道資料所在的位置。 這也是不斷地透過 iteration 來尋找才找到的。 取得 map 資料取出後,由於資料預設格式都會是 interface{} 如果要轉換成 string 輸出的話。可以透過 type assertion 或是直接轉換的方式。 下載影片:...
繼續閱讀
November
22nd,
2019
刷新未來: 橫衝直撞: Uber刷新市值、3年成長20倍,卻成為全球麻煩製造機背後的教訓(Wild Ride)
作者: 亞當.藍辛斯基
原文作者: Adam Lashinsky
譯者: 謝儀霏
出版社:天下雜誌出版
出版日期:2018/10/01
語言:繁體中文
ISBN: 9789863983590
買書推薦網址:http://moo.im/a/68osHU
前言:
這一系列的書其實是「雙十一: 讀墨三本七五折」 買的,緊接著在「刷新未來」之後。 不過這本書的內容也相當有趣,也是很讓我閱讀起來欲罷不能。 身為科技宅宅,對於 Uber 除了是他的服務之外,就是他的許多開源專案。不論是 zap 專案,或是機器學習平台 Horovod ,都是令我相當喜愛的開源專案。
但是 Uber 在讀者們的心目中是如何地位? 是一個高科技的公司? 是一個具有爭議性的公司? 是一個在許多區域都挑戰當地法律的公司?
這本書將會由前執行長- 卡蘭尼克的創業過程來敘述,讓讀者能夠了解到卡蘭尼克創業過程外,更可以了解 Uber 得成長過程。
內容簡介:
它讓你用手機「一鍵叫車」、掀起全球零工經濟浪潮;
飆進311個城市,全球使用次數突破100億次
卻也挑戰法令,造成個資外洩、司機抗爭……
Uber讓人又愛又恨,凸顯多少矽谷新創不為人知的面貌?
在全球,Uber平均每天完成1,500萬趟搭車服務,活躍司機超過300萬人;
在台灣,你可以用Uber Eats訂餐,在家也能吃到排隊美食。
即使你沒用過它,但你一定聽過它、罵過它。
內容簡介來自「讀墨」:http://moo.im/a/68osHU
整本書主要圍繞著備受爭議的前執行長 - 卡蘭尼克的故事,一開始從他下台前發生的相關事情開始敘述 Uber 。一個具有一些技術的科技領先公司接連爆出許多新聞。 性騷擾,不遵守法令,偷安裝各種追蹤軟體。 導致卡蘭尼克必須下台的故事,也帶到了想要進攻大陸卻因為法令與競爭者滴滴出行的競爭下,必須要考量另外的出路來讓公司保持競爭力。
接下來鏡頭一轉到了卡蘭尼克的大學時候,開始從頭敘述他是創業的。透過其他人的閑置電腦資源分享檔案與歌曲而開始賺錢創業 Scour ,但是卻因為遇到暗藏心機的金主而導致第一個創業失敗。 接下來透過相關技術他又創立了 Red Swoosh 這次他不積極找資金擴張,反而慢慢地做。 即使做到剩下兩個員工也不斷努力,最後總算被併購之後反而當起來創業顧問。
在雲遊四海的創業顧問生涯,他找到了 Uber 的啟蒙時期。並且加入了 Uber 積極地打造 Uber 的生意,進而成為現在的產業龍頭。
最後一個章節則是展望未來, Uber 如果真的會出現敵人將會是什麼? 不是 Lyft ,不是 Grab ,而將會是自動駕駛汽車。所以 Uber也跟 Tesla 較勁要發展自動駕駛的技術。相當有趣的一本書。
心得:
Uber 的傳奇故事,其實在許多的科技新聞都會提。但是總是對前執行長的著墨可能不夠,無法了解為什麼他們會有這一些取巧與冷酷的做法。但是透過這一本書可以深入的了解前執行長卡蘭尼克的故事。
並且可以了解創業應該注意的事情,也能夠更了解一個成功的企業除了市場的敏銳度之外。該如何讓服務快速迭代的推廣到每一個城市也是很令人欽佩的。
Uber 對於這個有所謂的教戰手冊,清楚地傳授業務推廣單位能夠在一個嶄新的城市中要如何開始新的 Uber 的事業群推廣。也是因為類似的準備才能讓 Uber 在全球擴張的速度令人咋舌。
如果你是一個具有創業精神的人,推薦你看這一本書。如何果你是一個科技人,也推薦你看看這本書,對於創業能夠有更深一層的了解。
繼續閱讀
November
16th,
2019
刷新未來: 重新想像AI+HI智能革命下的商業與變革
HIT REFRESH : The Quest to Rediscover Microsoft's Soul and Imagine a Better Future for Everyone
作者: 薩帝亞.納德拉
原文作者: Satya Nadella
譯者: 謝儀霏
出版社:天下雜誌出版
出版日期:2018/01/03
語言:繁體中文
ISBN: 9789863983095
買書推薦網址:http://moo.im/a/6ilwLW
前言:
這一系列的書其實是「雙十一: 讀墨三本七五折」 買的, (宅宅的雙十一就是這麼~平淡且枯燥乏味)但是這本真的太有趣了,於是這幾天就讀完了。 加上裡面有一句讓我注意到的話語 「夏天,25歲的我加入微軟,我是Windows NT的技術傳教士(evangelist)」。
也就是因為這一句話,就讓我認真的把這一本書看完了。 對我來說,這本書的寫作方式很像是透過 Developer Relations 的口吻來闡述著身為微軟新任 CEO 對於公司的看法與對於未來的展望。
內容簡介:
AI超速普及,人類不會被取代的獨有價值是什麼?
雲端之後,下一波關鍵科技是什麼?什麼樣的企業,將主導未來?如何帶領變革?
科技加速顛覆,成功不會長青,未來沒有藍圖。
最大的挑戰不是未知,而是我們是否能更開放的思辨、持續刷新,就能重新啟動、開展未來!
內容簡介來自「讀墨」:http://moo.im/a/6ilwLW
整本書的開頭透過被選拔為微軟新任執行長的過程,帶到作者的從印度的成長歷史到微軟近幾年的困境。 就像一部傳記電影般的開頭,讓人會很想認真的看下去。 接下來一幕又緩緩地回到作者剛加入微軟的時光,那時候跟 Bill Gates 和 Steve Ballmer 的會面與學習到的精神,是如何讓作者在往後二十多年的微軟生涯來面對不同的挑戰。
接下來的故事也是敘述著作者在微軟的許多歷程,就像是一本小小的微軟歷史一樣。一開始是最受歡迎的 Windows NT 與客戶相關的部門,後來到了一個新的產品事業部,也就是微軟的雲端事業部門(後來讓大家熟知的 Azure )。透過在新部門的戰戰兢兢的嘗試,挑選出正確的路途來讓業績成長,最後終於被提拔為微軟的新任執行長。
也是因為作者的工作歷程的原因,讓他有著相當正面的思考想法。清晰的判斷也讓近幾年的微軟脫胎換骨,努力結合許多以往的競爭對手,讓微軟的平台到處發光。 也透過擁抱開源來讓微軟的雲事業不是僅僅在於 Windows 系統的架構雲,更是以人工智慧與為客戶導向為主的雲端服務系統。
最後一個階段,就是作者分享他對於近幾年幾個科技趨勢的看法分享。從科技信任,人工智慧到自由化貿易的面向上分享不少個人的意見。
心得:
這本書籍的寫作方式如同我一開始提到的,是透過 Developer Relations 的方式來寫。也就是這本書原來就是可以拿來對外宣傳微軟已經脫胎,邁向未來之外。也是可以給微軟員工作為堅定信心,持續努力開創未來的一本書籍。
內容的說明上,個人相當建議想要了解該如何做一企業科技品牌再造的人要好好閱讀。也因為像我說的文章的鋪成其實是很用心地透過類似電影分鏡的方式來排列,讓閱讀的人會被吸引住的忍不住看完。 不過對於微軟的歷史上面也相當詳細的交接不少階段的成長過程,對於許多學生與科技業的從業人員都可以透過這本書籍來當作是微軟近幾年的成長歷史書籍來看。
如果你不認識微軟新的執行長 - Satya Nadella 這本書相當建議你可以好好閱讀。
繼續閱讀