Quantcast
Channel: Blog E
Viewing all 537 articles
Browse latest View live

[TIL][Golang] 如何抓取 Youtube 影片的相關資訊,與使用 Go 下載 Youtube 影片

$
0
0

前言:

這個專案是之前在開發 Project 52所開發出來的,原因是看到一些解析 youtube 影片資訊的內容。透過 Golang 的 channel 跟 goroutine 可以很快速的開發出來一個小工具。 專案完成後,其實也沒有特別維護他。想不到卻受到大家的喜愛,Star 數也破了兩百。

由於 Youtube 其實對於資料格式也有修改(截至 2019/12/10 當下) ,這裡也針對目前的資訊來探討如何透過 Golang 來抓取相關資訊,並且取得影片標題,作者姓名,甚至是取得下載鏈結的方式。

專案: 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

這邊提供幾個簡單的操作方式,目前該套件只支援 mov (mpeg4) 的格式,如果需要另外轉檔 (mkv) 則需要透過 FFMPEG 跟其它套件的幫忙。這邊會放在之後支援的部分(issue #20) ,當然也歡迎各位的貢獻一起來幫忙。

抓取 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 的資料,需要透過以下的處理方式。

首先,你需要處理一下錯誤訊息。由於許多的影片本身只有 MKV 的格式,或是禁止下載分享,如此一來在取得相關資訊的時候則會發生錯誤的 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 或是直接轉換的方式。

下載影片:

最後~來講解一下所有的影片格式搜尋方式,還有如何找到最高解析度的影片。

首先影片的資訊都在 streamMap, ok := data["url_encoded_fmt_stream_map"]透過以下的切割方式可以把所有的 stream format 分割出來。

streamsList := strings.Split(streamMap[0], ",")

而裡面可以透過 streamQry["quality"]來讀取資訊,透過以上的範例可以了解,通常第一個 stream 也就是解析度最高的影片。 而他的下載鏈結就在 streamQry["url"]裡面就可以取得。

透過 Parse stream list 之後,找到最高解析度的影片,也就可以開始下載影片了。

注意:

  1. 並非所有影片都可以下載,如果不提供分享的影片則無法下載。
  2. 如果原本來源不是 MPEG4 的 mov 影片,無法順利下載,需要 transcode 。

結論:

原本是使用者的建議,希望如果在抓取 MPEG4 的時候可以預設使用影片的標題,而不一定要抓取檔案的一定要輸入檔名。 這樣的追下去才發現資料格式有修改,在此也分享給各位如何搜尋相關的資料。

是說~~好久沒寫扣了。真的心血來潮又是寫到天快亮。 orz

Reference:


[研討會心得] 20191211 Chatbots Taichung #5 at 台中夢森林

$
0
0

前言

大家好,我是 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 使用上的問題與建議,歡迎大家在社群提問與討論。

更多相關內容:

如何打造一個好的機器人開發框架 / C.T.Lin

投影片

來自資拓資訊的 CT ,跟大家分享聊天機器人開發框架 Bottender的開發經歷。 整個內容相當有趣,敘述著當初公司接到案子要開發聊天機器人的那一刻,就想要打造給自己用的聊天機器人框架,透過支援的平台增加,與功能的增加,也開始想要把開發框架開源出來給社群的夥伴一起使用,一起來打造更好的平台生態。

整個內容隨著時間軸來了解 Bottender框架是如何建立與逐漸成長的過程,也有討論到隨著每個平台不同的架構與支援功能在開發一個框架的時候應該要如何應對。 最後 Bottender也在日前正式的宣布 1.0,歡迎大家來關注並且了解這開源聊天機器人開發框架。

更多相關內容:

閃電秀

三個講者之後,接下來就是介紹這個社群最有魅力的部分就是閃電秀。所有的閃電秀可以參考這篇共筆文章 https://beta.hackfoldr.org/chatbot/,由於都是五分鐘的閃電秀,主要內容快速用條列介紹給各位:

  • 能使用變數的訊息推送小工具 / 戴均民
    • Slide
    • LINE 訊息推送工具
    • 簡介:
    • 為了解決發送報名成功(或是抽獎成功)的個人客製化訊息的工具,可以解決發送報名成功訊息的工具,並且是支援 FLEX Message ,裡面還可以帶參數參考到 Google Sheet 裡面的變數。
  • 叩叩蛋—敲開你的心 / 徐弘欣、葉昭甫(與其他組員)
    • Slide , 影片
    • 簡介:
      • 很有趣的專案,透過機器學習的方式來幫大家打開社交的困難點。讓大家更願意用「真心」的方式來聊天與交友,打破語言尷尬的困難點。還結合寵物養成系統,很期待正式上線的時間。
  • 伸手拍共享筆記 / 許賀凱、劉羽筑、劉曛綺
    • 簡介:
      • 第三組一樣是來自於逢甲大學的朋友,裡面有提到這次會有兩組來社群分享是透過老師的推薦。而這個組想要解決的問題就是共筆的問題,在參與社群活動或是上課的時候,或多或少都會做一些心得整理。但是什麼樣能夠有效的整理成一篇文章讓大家相互學習分享呢? 就是透過照片的相似程度來做判別來讓筆記能夠集合在一起。

活動小結

這是我第一次到台中參加開發者社群的分享,遇到了許多有創意與熱情的開發者。讓我驚訝的是逢甲大學的學生畢業專題完成度竟然如此的高,希望能有更多有熱情的開發者能加入聊天機器人的開發生態,更希望大家會喜歡在 LINE 平台的開發,有問題歡迎在社群詢問與討論。

社群分享永遠是讓創意激盪的最佳方式,而 Chatbots Meetup 是一個很熱情與充滿創造力的社群組織。也希望有更多有創意的開發者願意加入 LINE Chatbot 的開發行列,更希望能熱情的參與社群的活動與一起來分享。

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

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

關於「LINE開發社群計畫」

LINE今年年初在台灣啟動「LINE開發社群計畫」,將長期投入人力與資源在台灣舉辦對內對外、線上線下的開發者社群聚會、徵才日、開發者大會等,預計全年將舉辦30場以上的活動。歡迎讀者們能夠持續回來察看最新的狀況。詳情請看 2019 年LINE 開發社群計畫活動時程表 (持續更新)https://engineering.linecorp.com/zh-hant/blog/line-taiwan-developer-relations-2019-plan/)

[LINE TAIWAN TECHPULSE 2019] 活動安排幕後秘辛

$
0
0

前言

大家好,我是 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,並且有許多次的社群活動邀請到 LINE 台灣產品與工程團隊的開發夥伴來分享。 這些活動之中,也能感受到開發者們對於 LINE 的工程團隊其實充滿著好奇心,想要了解更多,不論是產品服務的架構,還是使用到的相關技術,或是團隊需要的相關技能。

所以我們這次也特定請到工程團隊們製作相關的服務架構或是團隊組成的相關展示架,並且歡迎大家來展示架攤位這裡直接跟工程團隊討論。

這次一共有十個展示架,其中有五個是產品團隊如下:

  • LINE SPOT
  • LINE MUSIC
  • LINE Travel
  • LINE Shopping
  • LINE Today

另外有五個是工程團隊與組織:

  • LINE Bank
  • LINE QA team
  • LINE Data Dev team
  • LINE UIT team
  • LINE Client team

希望這參與的朋友都當初都有好好的來了解每個團隊,並且也透過跟工程團隊的互動可以有更多的理解。

##相片牆(PhotoWall): 一起留下美好的回憶

「參與研討會最重要的不一定是議程本身,而是一起參與的開發者」

參與過一些的研討會,我總是這樣的鼓勵著同行友人或是同事們。因為不少的議程都會有投影片釋出,你都有機會可以在事後了解更多,但是研討會參與者也是最吸引人的地方。想想看由於 TECHPULSE 的原因,你是不是跟著某些同事一起來參加? 是不是遇到很久沒有見的朋友? 還是認識了第一次見面但是一樣從事 LINE Chatbot 的朋友?

相片牆是一個讓大家可以拍照留念的地方,一起來跟夥伴們一起拍照。 透過在官方帳號裡面的 Image Map 裡面的選項,會直接打開你的相機,讓你拍下照片後直接分享在「LINE 貼文串」之中。該照片就會被我們挑出來在大的相片牆上面投射出來。

活動當中,許多的參與者拉著好久不見得朋友一起來拍照。一起留下許多美好的回憶。

贈品與相關限量物品: 讓工程師更潮

這次的贈品也精心設計,特別找了一個帥氣的小背包讓每個工程師都可以帶去參加各種社群活動。讓各位的帥氣再也不是非主流。

並且下午三點多的餐點時間,主辦單位們也推出了限量(活動限定)特製的 TECHPULSE 啤酒讓每一位參與這可以心靈饗宴之外,也能夠與朋友盡情的享用啤酒。

LINE Developer Meetup #10:獨特招募場次

活動網址: https://linegroup.kktix.cc/events/20191204-10

每次的開發者小聚( LINE Developer Meetup ) 經常都會有一個狀況是許多的開發者包圍著 LINE 的工作團隊,想要了解開發團隊裡面所使用的工具,工作狀況,或是面臨的問題。這也是因為許多外部的開發者其實對於參與著 LINE 的工作團隊有著極大的興趣。 所以這次活動裡面,我們舉行了第二次的招募說明會,內容參考了 「2019 LINE Taiwan Developers Recruitment Day」

這場活動採分開討論與清場,讓每一個參與者可以去深入瞭解自己有興趣的工作團隊內容,並且可以面對面的跟可能是參與的面試主管們討論。

投影片集錦:

Talks 投影片集錦:

最後,大家對於今年的 LINE TECHPULSE 2019 是否意猶未盡?

快來看看相關的投影片,溫習一下許多嶄新的功能吧。

以下先分享主要 Talk 的部分:

  1. Keynote by Marco Chen:

https://speakerdeck.com/line_developers_tw/line-techpulse-2019-keynote

  1. LINE Platform API Update by Evan Lin

https://speakerdeck.com/line_developers_tw/techpulse-2019-line-platform-api-update

  1. AutoML in Clova Chatbot Builder Framework by Jaewon Lee / Penny Su

https://speakerdeck.com/line_developers_tw/automl-in-clova-chatbot-builder-framework

  1. How LINE Does Enterprise Security by Beist

https://speakerdeck.com/line_developers_tw/how-line-does-enterprise-security

  1. Timeline Post Recommender System by Jihong Lee

https://speakerdeck.com/line_developers_tw/timeline-post-recommender-system

  1. Protostar Program Introduction by Kevin Chen

https://speakerdeck.com/line_developers_tw/techpulse-2019-protostar-program-introduction

  1. LINE Pay - New Features of LINE Pay by Webber Su / Sabrina Lee

https://speakerdeck.com/line_developers_tw/line-pay-new-features-of-line-pay

  1. LINE SPOT and How We Build It by Julian Shen

https://speakerdeck.com/line_developers_tw/techpulse-2019-line-spot-and-how-we-build-it

更多資訊: https://techpulse.line.me/

閃電秀 (Lightning Talks) 投影片集錦:

閃電秀 (Lightning Talk) 一直以來都是技術研討會最精彩的部分之一。

不光是可以在很多的時間內聽到許多有趣的分享,更可以聽到許多精闢的技術分享與摘要。

這次要分享的就是 LINE TECHPULSE 2019 的閃電秀的部分,本次閃電秀分成三大主題,相關投影片依序如下:

  1. Lightning Talk - Data Pipeline and Data Processing
    1. https://speakerdeck.com/line_developers_tw/efficient-integrating-data-from-multiple-data-providers Efficient Integrating Data
 from Multiple Data Providers By Yumei Chen
    2. https://speakerdeck.com/line_developers_tw/how-machine-learning-helps-line-fact-checker How Machine Learning helps LINE Fact Checker BY Jim Horng
    3. https://speakerdeck.com/line_developers_tw/techpulse-2019-go-ing-graphql-in-line-spot-api-gateway-for-microservices Go-ing GraphQL in LINE SPOT API Gateway for Microservices BY Denny Tsai
  2. Lightning Talk - Data Science and Analytics
    1. https://speakerdeck.com/line_developers_tw/utilizing-embeddings-in-learning-to-rank-for-search Utilizing Embeddings In Learning To Rank For Search BY Shawn Tsai
    2. https://speakerdeck.com/line_developers_tw/analysis-of-line-music-in-taiwan Analysis of LINE MUSIC in Taiwan By Liwen Liao
    3. https://speakerdeck.com/line_developers_tw/toward-intelligent-music-service Toward Intelligent Music Service By Johnson Wu
  3. Lightning Talk - Client and Automation
    1. https://speakerdeck.com/line_developers_tw/flutter-for-app-development Fast UI/UX Prototyping W/ Flutter For App Development By Daniel Kao
    2. https://speakerdeck.com/line_developers_tw/how-fcu-speeds-up-to-line-shopping-monitor-workload How FCU speeds up to LINE Shopping monitor workload? By Winter Hung
    3. https://speakerdeck.com/line_developers_tw/speed-up-ios-development-with-lldb-code-injection-and-framework-live-preview Speed up iOS Development with LLDB Code Injection and Framework Live Preview By JJ Lin

新星計畫新創團隊投影片集錦:

本屆 TECHPUSLE 也邀請到運用 LINE 平台打造應用的10家新創團隊,命題都非常實用有趣,可分為生活助手、娛樂、教育,與金融科技相關的應用。

相關投影片如下:

  1. 牙醫小幫手: https://drive.google.com/drive/folders/1CK9dab7zB5axMhazZFQtC56Xge30g2Td?usp=sharing
  2. 記帳雞: https://drive.google.com/drive/folders/1JQlCL4nweC2N99w8wefiMMbqph7P-A0u
  3. 看牙小鬧鐘: https://drive.google.com/open?id=1vB0sVXQFLlGQV_SE7x4k0ipl0DYld5AH
  4. 途你: https://drive.google.com/file/d/1CfLK9pw0WzpRk2fER-oCdjZg0Z7jaol7/view?usp=sharing
  5. 肚肚: https://drive.google.com/file/d/1mBO3arUREexmj6HY8gXO3VN4Nzyahhvh/view?usp=sharing
  6. 通勤學: https://drive.google.com/file/d/1msujCVxmRLTCHS1de-oqyUC1ayGX1kg4/view?usp=sharing
  7. Montaggio: https://drive.google.com/drive/folders/1fUT5_7hcetzn0lYeLQnkxyHfK6yIm0za
  8. Tiki Poki: https://drive.google.com/file/d/1ORFz7uejO0iyuSQUV8Hge3NvyFQEF5qg/view?usp=sharing
  9. Dr. LINE: https://drive.google.com/file/d/1DOgHmkJuSJlOE_0dhpE4-C-0SFHdvB7f/view?usp=sharing
  10. 優活家: https://drive.google.com/file/d/1Vs7USy78NfkK_A5SfZkm3tOjKYodoNkg/view?usp=sharing

活動小結

本次年度開發者大會與以往的活動內容有許多的不同,因為主辦單位們希望可以讓開發者們與工程團隊有更多的互動。也希望開發者們能有更好的研討會參與體驗,更多的收穫與更多的互動。 畢竟研討會最重要的不是台上的講者,而是每一位參與的開發者。

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

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

關於「LINE開發社群計畫」

LINE今年年初在台灣啟動「LINE開發社群計畫」,將長期投入人力與資源在台灣舉辦對內對外、線上線下的開發者社群聚會、徵才日、開發者大會等,預計全年將舉辦30場以上的活動。歡迎讀者們能夠持續回來察看最新的狀況。詳情請看 2019 年LINE 開發社群計畫活動時程表 (持續更新)https://engineering.linecorp.com/zh-hant/blog/line-taiwan-developer-relations-2019-plan/)

[TIL][Golang] Golang 社群 FAQ (1) - Type Assertion

$
0
0

前言:

平常在臉書社群或是 Slack channel (https://t.me/golangtw) 都會聽到一些常問的問題,決定把它整理一下,變成這篇文章,也希望讓更多人經過搜尋來了解與得到解答。 由於經常詢問的問題還不少,這算是一個系列的整理,希望能透過整理成文章的方式給予大家比較深入的了解。

第一篇首先是 Type Assertion ,希望大家在型別轉換上能夠更了解。

相關系列文章整理:

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", f.Type.Kind())
			if f.Tag != "" {
				fmt.Println(strings.Repeat("\t", depth+2), "Tag is", f.Tag)
				fmt.Println(strings.Repeat("\t", depth+2), "tag1 is", f.Tag.Get("tag1"), "tag2 is", f.Tag.Get("tag2"))
			}
		}
	}
}

這個範例,根據不同型別 (array, channel, map ) 則繼續往裡面去解析,如果是 struct 就印出相關結構。

但是值得注意的是,如果需要真正把資料型態轉成該型態的話。還是得透過 type assertion 比較安全。不然透過 reflect.Value取值得方式來做轉換,預設都是會 panic 。

結論:

如果只支援某些型態的處理,在轉換型別的處理上建議直接使用 type assertion就可以輕鬆完成。如果想要處理更多型態的方式(slice, struct) 的處理跟轉型,可能就得透過 reflect來慢慢處理。

也希望整理的相關資料能夠幫助大家。

Reference:

[好書分享] OKR:做最重要的事

$
0
0

OKR:做最重要的事 (Measure What Matters: How Google, Bono, and the Gates : Foundation Rock the World with OKRs)

作者: 約翰.杜爾  
原文作者: John Doerr  
譯者: 許瑞宋  
出版社:天下文化 
出版日期:2019/01/30 
語言:繁體中文 
ISBN: 9789864796335 

買書推薦網址:http://moo.im/a/24kwJL

前言:

OKR 這個名詞或許曾經在什麼地方有聽說過,但是到底 OKR 是為何產生的? 究竟 OKR 跟日常經常聽到的 KPI 又有什麼不同? 為什麼 Google 跟 Intel 會選擇使用 OKR 而不是我們常見的 KPI ? 辦完了年度開發者盛會 LINE TAIWAN TECHPULSE ,除了活動的收尾活動之外,接下來就是得要開始訂定明年度的計畫,要如何有效地訂定一個「可量化」,「有挑戰性」,「並且能夠符合團隊主要目標」?

於是我挑選了這本書來看,看完之後真的相當的推薦每一個管理專案的人員都應該看看這本書。

內容簡介:

這是杜爾最成功的投資,他在科技界興起了新的管理方法,造就世界級的執行力。

什麼是OKR?目標與關鍵結果(OKR,Objectives and Key Results),前者代表你想達成「什麼」,後者則是你該「如何」達成。

OKR有4大超能力:
#1:專注投入優先要務
#2:契合與連結,造就團隊合作
#3:追蹤當責
#4:激發潛能,成就突破

OKR帶領Google從40人的新創公司,成長為超過7萬員工的科技巨擘,市值高達7000億美元。

簡介來自讀墨: http://moo.im/a/24kwJL

這本書一開始就開宗明義地解釋了 OKR 是 Google 裡面主要作為主要評量每一個團隊目標與工作事項的主要工具。 OKR (Object Key Result) 其中拆開來解釋:

OKR 帶來的改善

(Object): 「目標」就是我們想達成的事,不多也不少。目標必然是重要、具體和行動導向的,最好還能激勵人心。目標設計和運用得當,可以防範模糊不清的思想,以及執行時的含混摸魚。

(Key Result):「關鍵結果」界定目標的標準,並且監控我們「如何」達成。有效的關鍵結果不僅明確,而且有時限,是進取但又可行的。

接下來這本書就開始透過許多公司使用 OKR 所帶來的轉變過程,其中包括了:

  • Intel
  • Remind
  • MyFitnessPal
  • Google Chrome
  • Youtube

雖然每一個案例沒有提到詳細 OKR 的執行方式與細節,但是可以了解到以上的這些公司或是產品透過 OKR 所帶來的快速反應與強大的力量。並且推進著團隊裡面的人往更加有進取性的目標而前進。

細究 OKR 的細節與精神

OKR已經使形式上的年度目標變得毫無必要,我們需要一種工具,可以徹底革新過時的績效管理系統。簡而言之,工作的新世界需要一種新的人力資源模式。這種取代年度績效考核的系統,就是持續性績效管理,執行工具是CFR,如下所列: CFR (Conversation, Feedback, Recognition) 三者所組成,是一種相當有時效性,反饋性與進步性的改善工具。

如果 OKR 讓每一個目標變得積極與可衡量性, CFR 讓團隊績效考量上變得經常性地溝通 (C),並且適時的透過反饋 (F) 來讓每個工作往著正軌運行,並且透過誇獎 (R) 讓增強團隊成員對於正確執行的效果。

年度考量是許多公司的噩夢,由於發生的區段相當的長(一年做兩次或是一次)使得許多主管都無法詳細記錄下來評量的方式,往往透過依稀的記憶來填寫著相當戎長的文書報告,來做與薪資相關的績效評量。 並且績效考量都會跟著薪資掛勾,讓許多高績效的人才往往厭惡做績效評量而得到低下的評分,善於做報告的人往往可以拿到高校評量。 讓整個績效考核制度變得相當的失敗,並且往往就是流失人才的主因。

接下來的章節討論著如何透過 OKR 來取代年度績效的評量。分享了 Adobe 的案例,也分享了 Zuma Pizza 的故事,透過這些故事可以清楚讓人暸解。 透過 ORK 的精神可以讓績效評量變得能更精確,更實際並且更能反映每一個員工的努力程度。

心得:

這本書的整個編排讓我相當的驚艷,其實從第一頁到最後一頁,作者都沒有清清楚楚的寫明該如何做 OKR ,但是透過許多案例的分享,讀起來其實可以從心裡面去了解 OKR 的許多真理,比如說「目標的制定」,應該要由上而下,應該要遵循著整個組織的使命與最重要的目標來訂定。在訂定目標的時候也一定要與每一個成員坦承與公開的討論,讓整個團隊的目標能夠依照這個來展開成每個小部門的目標,來規劃出每一個成員的「關鍵結果」。

並且第二個章節也討論了績效評量與 OKR 跟 CFR 的差異,透過經常性地討論,反饋與誇張。讓許多績效評量變得更加有效過,讓成員在完成每一個工作之後馬上地得到誇獎,每一個值得討論的時候迅速的反饋。如此一來就能回歸績效評量的核心宗旨,希望每一個成員能夠持續不斷努力,讓組織逐漸地向前進步(並且是快速的)。

這本書相當建議大家好好閱讀,不論你是不是有從事專案管理或是人員組織管理的相關工作.都應該好好的了解整本書的精髓,讓你的組織能夠向上提升。

[TIL][Golang] Golang 社群 FAQ (2) - Struct Tags

$
0
0

前言:

平常在臉書社群或是 Slack channel (https://t.me/golangtw) 都會聽到一些常問的問題,決定把它整理一下,變成這篇文章,也希望讓更多人經過搜尋來了解與得到解答。 由於經常詢問的問題還不少,這算是一個系列的整理,希望能透過整理成文章的方式給予大家比較深入的了解。

第二篇是 Struct Tags ,希望大家在處理 XML 與 JSON 資料上面,能夠更了解。

相關系列文章整理:

Struct Tags:

請問一下,像這種直接在 struct 成員宣告後面放字串的,是什麼語法啊?
type Person struct {
        Name       string    `form:"name"`
        Address    string    `form:"address"`
}
我在官方文件中找不到

這個叫做 struct tagsGo Wiki: Well known struct tags,通常是用在 JSON 資料格式定義的時候。 以下拿一個簡單的範例來舉例:

package main

import "fmt"

type User struct {
    Name string `example:"name"`
}

func (u *User) String() string {
    return fmt.Sprintf("Hi! My name is %s", u.Name)
}

func main() {
    u := &User{
        Name: "Sammy",
    }

    fmt.Println(u)
}

(範例來自:How To Use Struct Tags in Go)

https://golang.org/pkg/reflect/ func (StructTag) 那邊有一些範例。

其實 Golang 本身提供不少種類的 Struct Tags , JSON, XML, bson 都算是比較常見的格式。

https://github.com/golang/go/issues/23637

Reference:

[好書分享]頂尖人士這樣面對壓力

$
0
0

頂尖人士這樣面對壓力 - 活用行為科學消除工作與人際難題
(行動科学を使ったストレスを消す技術)
作者: 石田淳  
譯者: 莊雅琇  
出版社:天下文化 
出版日期:2019/08/30 

買書推薦網址:http://moo.im/a/2dhilM

前言:

常常有人說能做事的人,往往不一定是好的主管。而這本書就是敘述這個狀況,書名雖然看起來很斷水流大師兄,但是裡面札札實實是管理的書籍。算是對於管理層面不錯的書籍,當初就是看到內容簡介就忍不住買了下來(電子版)。

內容簡介:

日本行為科學第一人石田淳表示:「能改變人的,不是模稜兩可的話語和概念,而是具體的行動。想要提高成果、消除工作壓力,只需增加有助於展現成果的行動!」例如:

・對同事常常忍不住發火,不是告訴自己要心胸開闊,而是要記錄你的憤怒履歷,從中找出固定模式即可預防。

・對突如其來的工作感到焦躁、煩悶、不安,不是要自己樂觀面對,而是要坦然接受它的存在,擬定行動步驟。

・對合不來的人感到不耐與壓力時,不是努力改善雙方契合度,而是要聚焦行動,直接列出一個月要和對方聯繫的次數和時間表。

・對管不動、叫不動的部屬感到憤怒時,不是只指出對方毛病,而是要提供改善的具體建議。

長年研究行動科學的作者石田淳認為,要減少壓力和焦慮最有效的方法不是改變「心」,而是改變「行動」,因為練心不是人人都做得到,而改變行為不用堅強的意志力,只要按部就班,就能立即看見成效。

簡介來自讀墨:http://moo.im/a/2dhilM

首先先來解決所謂的壓力感(也就是讓許多人感受到焦躁的感受),先清楚地來分析分析焦躁的成因與不可避性,所以焦躁的壓力感的產生是必然的,只好想一些方式來分散焦躁的壓力感。

接下來書上建議了一些方式來避免掉焦躁感,不論是離開當場,深呼吸,透過拍打桌子來分散注意力。並且透過自我讚美與記錄下來一些美好的事物來避免自己不段的在焦躁感受中掙扎。

接下來就來講解有工作能力的人經常遇到的問題:變成主管後就相當的暴躁。 暴躁的原因不外如下: 「為什麼他會問這種問題?」「為什麼他沒有那樣自己處理的能力?」「為什麼這件事情感受不到他的熱忱?」

類似的問題可能都出現在許多有能力的人剛變成管理階層的人的時候,而這一系列的疑問也是造就一些有能力的工作者焦躁的原因。 接下來也是這本書想要解釋的,首先對於合不來的同仁(或是夥伴)我們要關注的並不是他這個人的態度,而是關注到他的產出與行動,而不要關注整體的契合度。因為不同的人有著不同的處理方式,無法要求每個夥伴都能依照你的要求來完成你的指令。(依照著你心目中的速度與熱忱),那麼我們就應該要看成果能不能夠完成,針對成果來評論。

接下來需要對「熱忱」有著明確的定義,這也讓我思考到一個朋友給予的建議「當一個人對於事物有 responsibility (責任心),的時候他部會去問什麼該做,什麼不該做?」需要跟你的夥伴不斷地強調著你對於「熱忱」的定義,讓他能夠充分的了解。

對於提升夥伴的工作能力部分,這本書也給予四個面向的建議:

  • 對於進度報告給予獎賞(誇獎)
  • 認真的聆聽進度報告
  • 收到壞消息,不要責備夥伴
  • 具體指示進度報告的內容

針對這四個方向,進一步地讓夥伴能夠了解進度報告是重要的,並且也鼓勵夥伴的進度報告。

最後一個部分就是針對一些能力強的員工晉升主管後最容易犯的一些錯誤:

  • 把夥伴丟到第一線
  • 針對夥伴的「特性」怒罵
  • 「不守信用」跟「濫用職權」
  • 偏心
  • 對夥伴貼標籤
  • 處處比較
  • 忍不住打斷夥伴說話

以上就是這本書的內容摘要整理。

心得:

現在當主管跟以前當主管不一樣,記得經常聽到主管們這樣的討論事情。以前自己如何被訓練,如何被要求的狀況現在似乎也無法直接對員工來要求。 現在的員工需要更多的鼓勵,更多的耐心與更多的指導。

更不能因為自己能嚴以律己就也同樣的嚴以律人,畢竟許多的員工是需要更多的時間與方式來慢慢適應許多事情的變化。

這本書籍透過能力強的員工晉升主管之後容易有的心態作為出發點,經常有些話語能夠打到人心,也道出有能力的員工晉升主管職之後往往有許多壓力是來自與員工而不是原本工作的挑戰。相當值得深思與學習。

[2019 Review] 2019 回顧 (跟工作無直接關係部分)

$
0
0

趁著手邊剛好在寫半年度團隊報告,也跟風來一下 2019 個人回顧。 先條列一下跟工作沒有直接關係的部分,工作部分會另外寫一篇。

2019 回顧 (跟工作無直接關係部分)

  1. 年度演講 16 場 https://github.com/kkdai/slides/ (日本全英文一場,持續努力)
  2. 年度文章 58 篇 http://www.evanlin.com/archive/
  3. 讀了 12 本書(含電子書) http://www.evanlin.com/categories/#%E6%9B%B8%E6%B5%B7%E8%A3%A1%E7%9A%84%E6%BC%AB%E9%81%8A-ref
  4. Google Golang GDE https://developers.google.com/community/experts/directory/profile/profile-evan_lin\
  5. Github new 2 repositories, 71 commits. https://github.com/kkdai?tab=overview&from=2019-01-01&to=2019-12-31
  6. 遊戲成就: DQ11S, MHW蒼藍星. (玩好少…)
  7. 健身總數: 5032 分鐘 (83H)
  8. 女兒健康成長到四歲半 (惜福)

2020 展望

  1. 身體精壯一點,家人健健康康。
  2. 保持樂觀的心態,跟更多的人學習。
  3. 技術持續精進,書籍能閱讀越多。

[LINE DevRel] LINE Taiwan Developer Relations 2019 回顧與 2019 開發社群計畫報告 (part 1)

$
0
0

前言

大家好,我是 LINE Taiwan Developer Relations 團隊的 - Evan Lin。 經過了一年多來的 LINE Developer Relations 的努力,想要在這篇文章裡面稍微整理一下整個團隊做了哪一些的事情,也希望為了「LINE 開發社群計劃」做年度報告。

根據原先 LINE Developer Relations 所寫的介紹文章 (Introducing Developer Relations team)裡面很清楚地定義了這個團隊的主要目標如下:

  • External Evangelism:鼓勵開發者使用 LINE 的平台,API與SDK 來開發出具有魅力與有趣的應用服務。 (Encouraging people to make attractive and interesting services using the APIs and the SDK by LINE)
  • Internal Evangelism:透過一些方式使得工程師們自我成長與磨練自己 (Doing whatever our engineers feel difficult to do themselves in making improvements at work)
  • Technical Branding and Hiring:讓更多人了解身為 LINER(LINE 員工的自稱) 有許多有趣與令人興奮的事情。 (Letting people know how fun and exciting it is for engineers to work at LINE)

以下的文章將會分成這三個部分來依序說明,也希望能讓更多的開發者跟著我們一起回顧 2019 開發者關係與技術推廣部有哪些有趣的成果。

External Evangelism:鼓勵開發者使用 LINE 的平台,API 與SDK 來開發出具有魅力與有趣的應用服務

首先先介紹的是關於平台推廣的部分,今年的平台推廣主要有兩個重要的管道。一個就是開發者官方社群 OA (@line_tw_dev) 另外一個就是 LINE 開發者小聚

LINE 開發者小聚

今年一共舉辦過四場的 LINE 開發者小聚的活動,並且還有一場 LINE Things 的推廣與介紹活動。幾場活動主要推廣了 LIFF 與 LINE Things ,不論是透過 LAE 與官方的技術文件都希望能讓更多的開發者來了解 LINE 平台相關的開發資源。

相關鏈結:

Chatbot Meetup 的持續支持

Chatbot Taiwan Meetup 是一個相當活力的社團,也是 LINE 希望能夠持續支持的在地開源技術社群。不論是每一個月的分享與邀請 LINE API Expert 的協助。 LINE 希望 chatbot 社群能夠逐漸地擴大,並且希望更多的開發者能夠加入開發 chatbot 的行列。

很開心的,今年社群也在台中開啟了第一個分部。並且很榮幸能在台中去分享 TECHPULSE 2019 RECAP 。讓中部的開發者能夠一起了解 LINE 平台開發的第一手消息。

相關鏈結:

LINE Chatbot 對話機器人設計大賽

今年也很開心參與了由 LINE 新星計畫的團隊還有台北商業所舉辦的 2019 LINE Chatbot 對話機器人設計大賽很開心地看到許多有能力的比賽隊伍與相當多有創意的競賽題目。也希望未來 LINE Chatbot 的開發者能有更多的舞台來展現自己的成果。

相關鏈結:

LINE Developer Document 支援繁體中文化

以往在許多的校園演講與公開場合討論的時候,不少的學生都會表示希望官方的 LINE Developer Document 能夠有繁體中文的支援。讓許多學生閱讀起來能夠更加的輕鬆,也能夠讓更多非技術相關背景的人能夠更快速地了解 LINE Bot 開發的世界。 目前已經完成了 Messsaging API 介紹的部分,與新聞的繁體中文化支援,未來期待能帶給開發者更多的中文資源。

相關鏈結:

LINE 開發者官方帳號新功能上線

關於平台技術推廣的最後,很開心的跟各位分享一個好消息。「LINE 開發者官方社群 OA」( 加入好友: https://lin.ee/s5RsZHo ) ,已經有了新功能上線。可以讓許多開發者來直接透過跟官方賬戶 Q&A 的方式來直接搜尋到許多人經常詢問的問題。 更可以讓開發者可以知道最新的 LINE 開發社群計畫的最新活動。

關於更多的操作方式與流程歡迎參考官方部落格: LINE 開發者官方社群小幫手 – 操作體驗篇

相關鏈結:

小結

本篇文章僅先針對 “External Evangelism”來做相關的成果紀錄,接下來將有另外兩篇文章來說明。對內的開發者關係與技術品牌與招募的相關成果。歡迎大家持續關注。

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

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

關於「LINE開發社群計畫」

LINE今年年初在台灣啟動「LINE開發社群計畫」,將長期投入人力與資源在台灣舉辦對內對外、線上線下的開發者社群聚會、徵才日、開發者大會等,預計全年將舉辦30場以上的活動。歡迎讀者們能夠持續回來察看最新的狀況。詳情請看 2019 年LINE 開發社群計畫活動時程表 (持續更新)https://engineering.linecorp.com/zh-hant/blog/line-taiwan-developer-relations-2019-plan/)

[好書分享] 崩壞國文:長安水邊多魯蛇?唐代文學與它們的作者

$
0
0

崩壞國文:長安水邊多魯蛇?唐代文學與它們的作者
作者: 謝金魚  
插畫: 燕王WF  
出版社:圓神出版 
出版日期:2017/11/01 
ISBN: 9789861336367 

買書推薦網址:http://moo.im/a/1szKQS

前言:

小時候因為很愛打電動,被家人強迫必須要讀完唐詩三百首的一首才能打電動。一開始的五言絕句還算簡單,到後期的樂府的實在朗誦到很辛苦。 看到這本書裡面有許多耳熟能詳的唐代詩人故事,就好奇真正的唐代詩人究竟是如何能夠想出那麼優美的詩句? 這本書生動的筆觸與有趣的文字將會讓你一讀就忍不住想把它都念完。

最近實在蠻愛念這一系列有趣的休閒書籍,除了本身對於詩詞與歷史故事的喜愛之外。這些作者都能透過生動而有趣的敘事方式來讓讀者更有興趣的了解這些國文與歷史故事。真的是看到一本就買一本。 XDDD

內容簡介:

我們從小在國文課本上看到的一代文壇宗師、傑出的詩人、宰相、書法家,他們若不是道貌岸然,就是憂國懷鄉,似乎生來就負有崇高的使命,連他們的挫折失意,都是為了更長遠的理想所做出的犧牲或伏筆。

但,真的是如此嗎?

事實上───
有一種留名青史,叫古人的廢文玻璃心

唐代的名人宗師跟你想的差很大!
他們除了有才,生活上或酸、或魯、或廢、或憨,
比我們也好不到哪裡去!

簡介來自讀墨:http://moo.im/a/1szKQS

這本書透過相當有趣的書名「長安水邊多魯蛇?」來讓你顛覆對於這些詩詞大師的刻板印象。在這邊開始列出相關的一些詩人:

  • 韓愈的生猛海鮮宴
  • 柳宗元的檳榔
  • 白居易的廢文人生
  • 元稹的酒

先列出前面四個章節就能了解到作者的筆觸下似乎把心目中的唐代大詩人,全部都變成了魯蛇。 柳宗元由於被放逐到南部地方,於是就愛上當地的貴族食物(檳榔),細節在書裡面都有詳細敘述,這一些的敘述除了相當的有趣之外,還相當的有學習價值。

心得:

能夠再次的品味每一個詩詞後面原來是有那麼多的歷史背景,讓這些詩詞也馬上得活在我的腦海裡。真的相當有趣的章節編排。

並且最後一些章節還有談到安祿山與史思明的故事,更是讓我心中有一段老是被不起來的唐代歷史又活化在我面前。並且知道了安祿山的種族歷史故事之後,也就能充分了解「安史之亂」的緣由。

相當推薦大家來看看這一本書,相信腦海中的生硬的詩詞與歷史故事都會變成有血有肉的真實人物。

[好書分享] 五星級溝通術,你的成功巨浪

$
0
0

五星級溝通術,你的成功巨浪
Five Stars : The Communication Secrets to Get From Good to Great
   
作者: 卡曼.蓋洛  
原文作者: Carmine Gallo  
譯者: 葉妍伶  
出版社:先覺出版 
出版日期:2018/10/01 

買書推薦網址:http://moo.im/a/lmwCEX

前言:

(2020 第二本書)

這一本其實是跟著「跟TED 學表達,讓世界記住你」一起購買的,因為作者就是同一位。而這一本是比較新的,不過因為先把其他兩本先看完而這一本也花得比較久的時間來慢慢品味。 最近有把這一本拿回來繼續看,發現有不少的東西其實可以繼續的學習與加強在前一本裡面的許多概念。整本書閱讀起來更加的有深度與實用。

內容簡介:

★《跟TED 學表達,讓世界記住你》暢銷作者卡曼‧蓋洛驚艷新作!★
當科技威脅著要取代無數工作與技能,
「說服力」將是你站穩這一波浪潮的關鍵優勢。

AI讓你「知道」,偉大溝通者卻能讓你「感動」,說服你起身而行。
光有好點子已經不夠,五星級的溝通技巧,
才是決定你能否獲得升遷、激發團隊、不被取代的量尺。

發揮口才並不是在操控人心,不學習溝通說服術才可恥!

簡介來自讀墨:http://moo.im/a/lmwCEX

「構想」指的是透過有條理,組織化的方式來將你想要表達,想要傳遞的資訊加以整理過。利用故事化,敘事化的方式來有效地傳遞給需要的。

第一部 為什麼優秀的溝通者無可取代?

內容章節的鋪成上,首先先讓人了解優秀的溝通者的重要性。頂尖的科學家,經濟學家,歷史學家與企業領導者都在這個相信「構想」是相當重要的。早在兩千三百年前亞里斯多德主張人類是語言的動物,而「修辭」──也就是說服的能力──既是一門科學也是一門藝術。

第二部 向高手們看齊

透過一些高手們來學習如何有效地組織你的想法:

科學家 - 尼爾 德葛拉斯 泰森,每個月收到兩百場演講邀請,卻只講四場。透過比較酷的內容來宣傳科學的有趣之處。「如果足球是太陽在五十碼線上面,地球在十五碼線上,那麼冥王星就在四分之一英里以外,別再想啦」。透過有趣的比喻來讓科學常識更容易被人了解。

接下來在其他的案例中也舉出了創業家,專業人士的許多案例來表示:「説服力」不僅僅能夠幫助你表達意見給對方,更是讓你在公司內,在企業上的重要兵器。

第三部 從A晉升A+的五星級溝通術

這邊的內容也是從「跟TED 學表達,讓世界記住你」的內容開始延伸,講述著講故事能力的重要,並且透過「感情訴求」,「故事結構」來提升你說故事的能力。

心得:

這一本書透過循序漸進的方式來講解「溝通的重要」,「怎麼樣是一個好的溝通?」,並且也建構出一個「好的溝通的公式」,最後應該「透過故事來取得彼此的同理心」,最後也不斷地強調一個好的故事該如何的建構與該如何鋪成出一個好的故事。

一個好的故事的重點在於重點清楚,詞彙簡單,透過比喻的方式來被人們所接受與吸收。這樣的話語就像是金恩博士不斷修整的演講稿,「I have a dream … 」, 也像是林肯總統在上台前不斷地將演講稿修改,希望的就是能透過簡單的詞彙,來讓聽眾更容易記住,更容易理解,更容易吸收。

這是一本很建議多讀兩三次的書籍,並且也建議每隔一段時間就要回過頭來再讀一次。裡面講的方法與建議真的不少~只要能吸收一兩個項目就會是一個很棒的演講者。但是要真正融會貫通,就需要時間來淬煉。

[LINE DevRel] LINE Taiwan Developer Relations 2019 回顧與 2019 開發社群計畫報告 (part 2)

$
0
0

前言

大家好,我是 LINE Taiwan Developer Relations 團隊的 - Evan Lin。 經過了一年多來的 LINE Developer Relations 的努力,想要在這篇文章裡面稍微整理一下整個團隊做了哪一些的事情,也希望為了「LINE 開發社群計劃」做年度報告。

根據原先 LINE Developer Relations 所寫的介紹文章 (Introducing Developer Relations team)裡面很清楚地定義了這個團隊的主要目標如下:

  • External Evangelism:鼓勵開發者使用 LINE 的平台,API與SDK 來開發出具有魅力與有趣的應用服務。 (Encouraging people to make attractive and interesting services using the APIs and the SDK by LINE)
  • Internal Evangelism:透過一些方式使得工程師們自我成長與磨練自己 (Doing whatever our engineers feel difficult to do themselves in making improvements at work)
  • Technical Branding and Hiring:讓更多人了解身為 LINER(LINE 員工的自稱) 有許多有趣與令人興奮的事情。 (Letting people know how fun and exciting it is for engineers to work at LINE)

文章列表:

上一篇文章,已經明確的定義了 External Evangelism,接下來將更進一步的解釋 Internal EvangelismTechnical Branding and Hiring

Internal Evangelism:透過一些方式使得工程師們自我成長與磨練自己

首先這個部分大部分都是內部的分享與一些讓 LINER(在 LINE 裡面,內部員工都被稱為是 LINER ) ,能夠有更多自我成長的機會,並且透過許多的分享讓彼此能夠更了解,在合作上也能夠更加的順暢。

技術寫作日 Technical Writing Day

身為開發者對於文件的寫作總是有許多困難的地方,不論是不知道該如何撰寫之外就是經常不確定如何撰寫讓使用者能夠淺顯易懂的文件。開發者經常認為程式碼能夠表達許多事情,而無法有效的將讀者或是使用者需要的資訊寫在文件上。 在開發者部落格寫作上,開發者們經常不知道該如何安排他們的文章內容,順序與如何有效地表達。

技術寫作日其實是一個由 LINE 技術文件作家 (Technical Writer) 團隊所籌畫的一系列活動,希望就是能夠增進台灣技術人員的文件表達能力,更多的部分可以參考相關文章:

相關文章

到日本總部的員工在職訓練 (On-Job-Training)

LINE 非常重視員工訓練,不惜投入大量的成本和人力,為開發人員提供高規格的訓練。也因此,LINE Taiwan 每年數度帶領新進的開發人員,前往日本總部接受 OJT 新人在職訓練。訓練課程從多元面向切入,培養開發人員所需具備的思維與技能。這些訓練不只幫助特定開發者熟悉技術,更讓開發者了解其他部門的工作內容、使用的工具,以及容易遇到的挑戰。透過了解不同團隊的工作模式,開發人員在進行跨團隊合作時,就更能站在對方的角度思考,讓溝通更加順暢。

去年一共舉辦過三次的 On-Job-Training 主要的目的除了希望新進同仁們能夠了解更多公司所有的基礎建設與相關的部門技術之外,由於在 LINE 的開發工作需要許多的時候跟日本與韓國的同仁一同討論,協同開發,所以大家能夠互相見面了解也是相當的重要的。 並且 OJT 的規模也逐漸擴大,現在也會開始加入泰國,印尼與越南的相關開發同仁一起進行的 Global On-Job-Training 。

相關文章

發揮內部創意點子 LINE 內部的 AI 產品與服務黑客松 - LINE Attitude

就在 2019/09 東京舉辦的 LINE Conference CEO 曾經說過 「 LINE 是一家 AI 的公司 」,這個主軸也表達了接下來 LINE 希望就是每一位同仁能夠透過 AI 的協助來讓服務的開發與產品的交付更加的有效率,讓使用者能夠更便利。 也是因為如此, LINE 其實也有許多相關的 AI 開發團隊並且內部更有上千位的相關工作人員開發者 AI 服務。

像是 LINE 開發者官方社群也於近期加入了新的功能(官方社群小幫手) ,還有「LINE 客服小幫手」都是 LINE 透過總部所開發的相關 AI 服務功能所產生出來的產品。 而令人關注的 LINE Brain更是將所有的 AI 產品服務包裝成讓使用者或是企業用戶能夠更容易導入的產品。

透過這次的內部競賽,希望能讓 LINE 內部開發者能夠更了解相關 AI 服務的應用方式,並且也期許這樣的競賽能開發出令人驚豔的產品或是服務。

相關文章:

小結

本篇文章接下來針對內部開發者來做相關的成果紀錄,接下來將有另外文章來說明。技術品牌與招募的相關成果。歡迎大家持續關注。

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

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

關於「LINE開發社群計畫」

LINE今年年初在台灣啟動「LINE開發社群計畫」,將長期投入人力與資源在台灣舉辦對內對外、線上線下的開發者社群聚會、徵才日、開發者大會等,預計全年將舉辦30場以上的活動。歡迎讀者們能夠持續回來察看最新的狀況。詳情請看 2019 年LINE 開發社群計畫活動時程表 (持續更新)https://engineering.linecorp.com/zh-hant/blog/line-taiwan-developer-relations-2019-plan/)

[LINE DevRel] LINE Taiwan Developer Relations 2019 回顧與 2019 開發社群計畫報告 (part 3: Technical Branding and Hiring)

$
0
0

前言

大家好,我是 LINE Taiwan Developer Relations 團隊的 - Evan Lin。 經過了一年多來的 LINE Developer Relations 的努力,想要在這篇文章裡面稍微整理一下整個團隊做了哪一些的事情,也希望為了「LINE 開發社群計劃」做年度報告。

根據原先 LINE Developer Relations 所寫的介紹文章 (Introducing Developer Relations team)裡面很清楚地定義了這個團隊的主要目標如下:

  • External Evangelism:鼓勵開發者使用 LINE 的平台,API與SDK 來開發出具有魅力與有趣的應用服務。 (Encouraging people to make attractive and interesting services using the APIs and the SDK by LINE)
  • Internal Evangelism:透過一些方式使得工程師們自我成長與磨練自己 (Doing whatever our engineers feel difficult to do themselves in making improvements at work)
  • Technical Branding and Hiring:讓更多人了解身為 LINER(LINE 員工的自稱) 有許多有趣與令人興奮的事情。 (Letting people know how fun and exciting it is for engineers to work at LINE)

上一篇文章,已經明確的定義了 External Evangelism,接下來將更進一步的解釋 Technical Branding and Hiring

文章列表:

Technical Branding and Hiring: 讓更多人了解身為 LINER(LINE 員工的自稱) 有許多有趣與令人興奮的事情。

LINE 作為一個技術為本的科技公司,許多的底層架構與服務都需要開發人員。但是 LINE 的科技品牌知名度是一個需要持續努力的方向,所以 Developer Relations 還有一個重要的工作就是要讓更多的開發者能夠了解 LINE Taiwan 擁有相當多的開發人員,並且這裡有許多有趣的職缺需要各方好手的加入。

社群活動協辦邀請 (Community Meetup)

今年開始 LINE 台灣不僅僅自己舉辦社群活動,更歡迎各個技術社群來 LINE 台灣 辦公室舉辦社群聚會。 除了希望跟社群多多交流之外,也會提供 LINE 內部開發者跟大家分享相關的開發經驗。 身為開發者的讀者是否知道其實 LINE 內部也有積極參與 Test CornerTWJUGChatbots, 與 Golang TW社群之外, LINE 在開發上更有使用 iOS, Android, Kotlin , Functional Programming, Kubernetes,Rancher,機器學習與資料處理相關的技術? 歡迎各個社群一起來申請與交流。

一年下來一共在 LINE 辦公室舉辦了 15 場的開源技術社群的聚會,並且與許多的社群一起合作,並且讓許多社群能夠了解到原來 LINE 也是有相關的開發技術工程師,並且每一位同仁都具有開放的態度與樂意分享。

在此也感謝以下的社群熱情參與,並且期待 2020 能有更多的技術社群一同協辦相關的社群活動。

相關文章:

也歡迎參考以下的文章來了解更多精彩的社群活動內容:

LINE 年度開發人員招募大會 LINE Developer Recruitment Day

LINE Taiwan Developers Recruitment Day 是一個針對開發者的公開招募活動。邀請通過線上初試的優秀好手前來參加面試,此外也規劃了一整天的產品與服務介紹,歡迎受邀面試的開發者一起來了解。

透過這次的活動也能讓更多的開發者除了了解 LINE 台灣有相當多的開發職缺等待各方好手的加入。

相關文章

技術研討會 (COSCUP, DataCon, JCConf, JSDC)

對於技術研討會部分,今年的 LINE Developer Relations 部門也參與了 COSCUPDataConJCConfJSDC。 也首次在 COSCUP給一個 keynote 來分享關於所有 LINE 的開源專案 (LINE Open Up),並且在這幾個擺設攤位讓 LINE 台灣的工程師與大家交流與討論。

我們也發現每一場的交流,每一場的互動除了可以感受到 LINER 分享的熱情,更可以感受到每一個開發者對於 LINE 服務的喜愛與好奇。 大家對於這個每天都在使用的服務技術架構內容都想要一探究竟,四場的研討會也感受到工程們交流的熱情。

相關文章:

全球性的 AI Hackathon - NAVER x LINE AI-Rush

去年於日本東京舉辦的 LINE DEVELOPER DAY 2018 會中,LINE 技術長朴懿彬以「Next LINE」定調 LINE 在技術上的發展願景,其中人工智慧、區塊鏈,與金融科技三大領域的相關技術,將扮演舉足輕重的角色,並以兩大關鍵字「串連(Connect)」與「互惠生態圈(Mutually Beneficial Ecosystem)」點出實現「Next LINE」所帶來的具體價值,讓 LINE 的服務持續進化。

為了探索 AI 的更多可能,並為 AI 開發社群提供一個切磋交流的平台,LINE 將首次與南韓市占第一的搜尋引擎 NAVER 聯手舉辦以人工智慧為主題的跨國黑客松「AI RUSH 2019」。

透過這次的共同舉辦活動,很開心的台灣也有四個隊伍進入決賽。在南韓的春川的 NAVER Connect One 場地舉辦最後的總決賽。 決賽過程可以感受到大家的熱情參與,最後雖然台灣代表隊們沒有獲得冠軍,卻也透過交流與來自日本與韓國的參賽者打成一片,大家成為 AI 學習路途上的戰友。

相關文章

南韓,日本與台灣的資訊安全社群 - BECKS

一直以來,資訊安全都是 LINE 最重視的環節之一,除了積極推動各項資安強化策略,更從今年 (2019) 開始,定期於韓國、日本、台灣三地聯合舉辦 BECKS.IO– Security Meetup,邀請各國資安研究者參加,讓全球各區域的資安研究者,透過這個聚會進行更多交流。

2019 年一共舉辦了五場的 BECKS 聚會,也期許有更多的參與者可以加入我們。

相關文章:

LINE 台灣年度開發者盛事 - LINE TECHPULSE 2019

LINE TAIWAN TECHPULSE 2019 為第四屆台灣開發者大會, 介紹 AI 人工智慧、資訊安全、測試自動化、敏捷開發、新創團隊案例等各領域的最新趨勢,更邀請多位海外演講嘉賓,包含國際知名資安專家李丞鎮 (Beist)、NAVER Clova AI Chatbot AutoML 專家李在元 (Jaewon Lee)、 LINE Timeline Post 推薦系統負責人李知洪 (Jihong Lee),以及眾多科技領域專家,回歸開發者本質,以實務觀點探究產品開發,分享 LINE 開放平台資源及創新應用。

除了精彩議程之外,主辦單位也設置攤位,讓與會者能和議程講者 (Ask LINER)、LINE 資安團隊所經營的資安社群 (BECKS.IO)、LINE PROTOSTAR (LINE 新星計畫) 成員、LINE Pay 團隊、LINE API Expert,甚至是來自 LINE 日本總部的開發人員當面交流。同時,現場另有 10 組 LINE 開發團隊及 LINE Bank 精心準備的 poster,由 LINERs 透過問答形式,以專業、熱情的態度介紹 LINE 台灣產品與服務。

相關文章:

小結

這是 LINE Developer Relations 2019 成果整理的最後一篇文章,感謝各位的觀賞。

開發者關係 ( Developer Relations ) 從來都不是一條輕鬆的路,開發者由於自身對於技術交流的渴望,即便再辛苦上完一天的班之後,仍然願意利用下班過後的空閒時間來參加技術社群認識更多的同好,砥礪彼此的技術。 所以身為開發者關係與技術推廣部 (Developer Relations) 的工作人員更需要有熱情來籌畫有深度,有內涵讓每一個辛苦開發者能夠收穫滿滿的活動來讓大家開心的交流。

2019 年過去了,你有參加過幾場 LINE Developer Relations 所舉辦的活動呢? 讓我們 2020 年再相見。

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

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

關於「LINE開發社群計畫」

LINE今年年初在台灣啟動「LINE開發社群計畫」,將長期投入人力與資源在台灣舉辦對內對外、線上線下的開發者社群聚會、徵才日、開發者大會等,預計全年將舉辦30場以上的活動。歡迎讀者們能夠持續回來察看最新的狀況。詳情請看 2019 年LINE 開發社群計畫活動時程表 (持續更新)https://engineering.linecorp.com/zh-hant/blog/line-taiwan-developer-relations-2019-plan/)

[TIL][Golang] 使用 jQuery 來解析需要 cookies 的網頁內容

$
0
0

前言:

就在農曆的除夕夜因為家裡的電視壞了好幾天,所以開始看自己的 Github 專案。想說來弄弄 Go modules ,結果發現這個專案已經不能用了。

iloveptt是我有一個專門在爬 PTT 版面的小專案 ,最近拿起來用的時候忽然發現不能用了。 經過追查之下發現原本透過 GoJQuery 的功能套件忽然無法找尋到正確到資訊。 這一篇文章就是記錄著該如何尋找,還有該如何解決問題。

相關專案:

  • 我愛批踢踢 A PTT Crawler and Photo downloader which written in Golang: https://github.com/kkdai/iloveptt
  • Golang: A photo download package for gomobile in Golang: https://github.com/kkdai/photomgr

問題發生了

原本要解析目錄的 jQuery 卻忽然無法成功,但是很確定找尋資料是正確的,也另外透過瀏覽器來查詢過網頁原始碼,沒有發現有相關的變更。

這個時候首先需要把資料全部印出來,透過的方式可以先將所有資料的˙html 列出來,看看 jQuery 所得到的資料有什麼不同。 可以透過 doc.Find("*").Each(func(i int, s *goquery.Selection) {的方式,並且使用 s.Html()來列印出目前搜尋到的真正結果問題在哪裡。

原來是網頁有使用者同意條款

這時候會發現這邊出現的 HTML 原始碼部分跟你在瀏覽器看到的不同,原來是 PTT 有顯示使用者同意條款,必須要使用者同意相關內容為 18歲以上的內容。

而能夠正常讀取網頁的內容是因為你的瀏覽狀況有 cookies 。

而檢查 cookie 的方式可以透過 Chome Developer Console 透過 Networking 來尋找 Request Cookies 來查看是否有 Cookies 。

參考相關文章: https://bryannotes.blogspot.com/2015/07/python-crawler.html

那要回過頭來思考透過 github.com/PuerkitoBio/goquery 套件能不能夠加入 cookies ? 首先來查看一下文件好了。 https://godoc.org/github.com/PuerkitoBio/goquery#NewDocument 你會發現他有以下的方式。

其中 NewDocumentFromResponse可以使用,我們就要開始思考如何透過 net/http來取得具有 cookies 內容的資訊呢?

https://siongui.github.io/2018/03/03/go-http-request-with-cookie/ 這邊文章給了一個不錯的範例。

最後修改方式

參考以上的修改方式,我們需要將程式碼修改如下,才能夠正常的運行。

最後附上相關 issue number: https://github.com/kkdai/photomgr/issues/6

結論:

jQuery 很方便的可以直接透過 selector 來操作一些網頁上的資料,但是有時候透過 app browser 去抓取的資訊可能跟自己開瀏覽器的不同。 在除錯的流程上可能需要更加的小心才不會讓自己陷入找不到真正問題的所在而盲目猜測。

本篇文章希望能讓想透過 jQuery 寫 Golang 爬蟲的人一些點子,也可以幫助大家了解相關知識。

Reference:

  • Related issue https://github.com/kkdai/photomgr/issues/6
  • https://bryannotes.blogspot.com/2015/07/python-crawler.html
  • https://dometi.com.tw/blog/jquery-teach/
  • https://siongui.github.io/2018/03/03/go-http-request-with-cookie/

[研討會心得] 2020/01/15 Chatbots 16 at Dcard

$
0
0

前言

大家好,我是 LINE Taiwan 的 Technical Evangelist - Evan Lin。這次很開心受到 chatbot 社群的邀請,參加了 “Chatbot meetup 聊天機器人小小聚 16 @ Dcard” 的聚會活動,並且分享 LINE API 更新與個人開發的心得。在此也跟各位分享本次參與的心得,並且也希望透過社群分享的力量能夠讓聊天機器人的開發動能更加的盛大。

  • 社群 Chatbots Meetup: https://chatbots.kktix.cc/
  • 本次活動網頁: 活動網址
  • 本次活動的共筆紀錄: https://hackmd.io/@chatbot-tw/meetups-016

由於 Chatbots Meetup 本身屬於社群自主性的活動,裡面也有許多社群朋友所贊助的閃電秀。裡面的所有內容也是相當的難得與有趣。也希望能夠透過本篇文章讓大家稍微了解 Chatbots Meetup 社群閃電秀的魅力。

這次場地感謝 Dcard贊助在 Dcard的 14 樓辦公室,有一個專門提供給技術社群分享的空間。相當的不錯,也希望有更多的社群來這裡分享。

LINE Platform Update 202001 / 資深開發技術推廣工程師 Evan Lin

投影片

本次的分享主要是跟大家分享一下近期平台的相關更新,希望能讓大家第一時間的收到最新的相關消息。

iOS 9.19.0 之後 scanCode 與 BLE 相關功能暫時關閉

在去年十一月的時候就有做過相關的宣傳,但是 iOS LINE 9.19.0 一直到了 2020/01/06 才正式上線。所以在這裡也要跟開發者們再三勸說,因為 iOS LINE 新的版本 App 由於技術問題將 scanCode()與 BLE 相關功能都暫時移除掉,所以也建議開發者們在撰寫相關的技術的時候需要做相關的 error handing ,才能確保不論是在 iOS 還是在 Android 都能有完美的使用者體驗。

相關鏈結:

透過 Messaging API 的 LINE 官方帳號,將於用戶資料下方顯示開發者註冊的 provider 名稱

為了讓使用者更清楚辨別官方帳號的正確性,Provider 名稱預計在 2020/01/16要顯示在 Messaging API 的官方帳號上。 請確認您所開發的聊天機器人的 Provider 名稱。

相關鏈結:

LINE Developer Relations 2019 Update / 資深開發技術推廣工程師 Evan Lin

第二部分帶來了 LINE Developer Relations 2019 相關貢獻的整理, 2019 年在 LINE 是一個開發者社群的一年。並且在 2019 年初在台灣啟動「LINE開發社群計畫」,將長期投入人力與資源在台灣舉辦對內對外、線上線下的開發者社群聚會、徵才日、開發者大會等,預計全年將舉辦30場以上的活動。更有更多部分可以參考這篇文章

相關鏈結:

The Best Practice Of LIFF / 郭佳甯(etrex)

投影片

投影片

相關介紹文章

由 LAE (LINE API Expert) 郭佳甯所帶來的分享,則是針對 2019 十月所更新的 LIFF 2.0 的相關新功能在實戰上面需要注意的地方做一些整理:

  • LIFF 應用面
  • LIFF 1.0 介紹
  • LIFF 2.0 介紹
  • LIFF 1.0 跟 2.0 差異
  • Live Demo

抓幾個重要的章節在這裡跟大家分享:

關於 LIFF 的應用

大型表單的填寫

透過 LIFF 可以在聊天機器人中協助使用者做大型表單的填寫,使用者可以不需要離開(透過 LIFF 開啟 50% 或是 80% 顯示方式)來讓使用者可以快速,有效,並經精確的填寫大型表單,並寫在填寫完的時候可以直接帶入 LINE 的使用者帳號。

協助用戶發送特殊訊息

一般來說使用者(指的是非 Chatbot)是無法發送 Flex Message 的,但是透過 liff.sendMessages()就可以幫使用者將資訊整理成 Flex Message 來分享給使用者的好友。

群組內私密訊息傳遞

群組內經常有人想要做出個別私聊的功能,透過 LIFF 就可以很輕鬆的開發出個別聊天的功能。讓聊天可以公開跟個人聊天分開來。

應用可以是: 在群組聊天裡面做桌遊,結果在群組內公佈出來,但是桌遊過程可以透過 LIFF 來相互溝通。

第三方服務綁定

可以透過 LIFF 來輕鬆的綁定其他的服務,因為 LIFF 頁面裡面帶有使用者 LINE 資訊,可以輕鬆綁定相關功能。

QRCode 掃描

可以透過 LIFF 2.0 功能的掃描 QRCode 來開啟相機掃描 QRCode (請注意: iOS 在 9.19.0 之後已經暫停此功能, Android 目前維持不變)。

LIFF 1.0 跟 LIFF 2.0 混搭

最後講者也分享一個相當有用的表格,就是透過混搭的方式讓 LIFF 1.0 跟 2.0 的混用會如何?

可以參考這個表格:

表格網址: https://docs.google.com/spreadsheets/d/1pfTUvDLSVFxLq4z_NYq7xgHXEafeZICztw2mSuKPY-4/edit?usp=sharing

閃電秀

三個講者之後,接下來就是介紹這個社群最有魅力的部分就是閃電秀。所有的閃電秀可以參考這篇共筆文章 https://beta.hackfoldr.org/chatbot/,由於都是五分鐘的閃電秀,主要內容快速用條列介紹給各位:

  • 詞庫小妍,不限領域的LINE閒聊機器人 / 馬偉雲
    • 簡介:
    • 講者為中研院的詞庫相關研究的負責人,跟大家分享中研院開發的不限領域閒聊的聊天機器人 - 詞庫小妍。
  • 家用電話的語音AI / Teeker
    • 投影片
    • 簡介:
      • 透過家用電話就可以提供語音 AI 的服務? 不需要網路軟體的協助? 蠻有趣的一個展示。
  • LINE Chatbot 區塊鍊民調 / Dairan
    • Github
    • 投影片
    • 簡介:
      • 透過 LINE 來實現不會被人串改,不會被有意灌票的機制? 透過區塊鏈民調的方式可以來呈現。
  • 運用深度學習打造一個聊天機器人 / Ed
    • 投影片
    • 簡介:
      • 謎因怪獸是一個透過 ptt 鄉民聊天詞庫打造的深度學習聊天機器人,歡迎大家來玩玩看。
  • Flex Message 的封裝與可能性 / C.T.Lin
    • Github
    • 簡介:
      • 分享一個透過 FLEX 的封裝流程來討論是否可以加入在開發通用聊天機器人套件中來封裝? 因為 FLEX Message 是 LINE 特有的功能,但是要如何讓開發套件可以整合呢? 這是一門學問。

活動小結

社群分享永遠是讓創意激盪的最佳方式,而 Chatbots Meetup 是一個很熱情與充滿創造力的社群組織。也希望有更多有創意的開發者願意加入 LINE Chatbot 的開發行列,更希望能熱情的參與社群的活動與一起來分享。

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

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

關於「LINE開發社群計畫」

LINE今年年初在台灣啟動「LINE開發社群計畫」,將長期投入人力與資源在台灣舉辦對內對外、線上線下的開發者社群聚會、徵才日、開發者大會等,預計全年將舉辦30場以上的活動。歡迎讀者們能夠持續回來察看最新的狀況。詳情請看 2019 年LINE 開發社群計畫活動時程表 (持續更新)https://engineering.linecorp.com/zh-hant/blog/line-taiwan-developer-relations-2019-plan/)


[好書分享] 騰訊傳 - 中國互聯網公司進化論

$
0
0
騰訊傳 - 中國互聯網公司進化論
作者: 吳曉波  出版社:天下文化 
出版日期:2017/07/04 
語言:繁體中文 

買書推薦網址:http://moo.im/a/28EIKW

前言:

[2020 所閱讀的第三本書]

十個億的用戶,全球前十大企業,到底是如何透過 QQ 來達到這樣的帝國?

騰訊一直都是我很想要了解的公司,也是因為日本同事貼了這本的日文版,才讓我知道有這樣的一本傳記書。 雖然目前服務的公司 ( LINE ) 其實某種程度就是追隨著騰訊的成長路線來走。 但是仔細的去摸索與思考之後,你就會發現。其實騰訊是成長路途是一條全球互聯網公司的典範。 而這本書從創始人馬化騰從學校畢業後開始講起,除了將當時中國大陸的網路環境敘述得相當清楚之外。 也能夠透過這本書來瞭解從 1995 之後大陸互聯網企業彼此如何競爭與成長的過程。

內容簡介:

從QQ到Wechat 不到20年的時間 騰訊成為十億用戶的世界級公司

為什麼技術出身、羞澀文靜的馬化騰

能帶領騰訊超越搜狐、百度等勁敵,

打造出中國市值最高的公司和全球前十大企業?


.騰訊的成功,是必然、還是偶然?
.馬化騰如何贏得一次次商戰,成為眾人眼中的「全民公敵」?
.華人科技公司,會走出不同於美國的生存之道嗎?
這三個問題的答案,將指向你我的未來

揭開中國第一大網路公司騰訊成功崛起的祕密!

簡介來自讀墨:http://moo.im/a/28EIKW

創業

整本書算是相當清楚,有條理的紀錄了騰訊的成長過程。從中國的第一批互聯網人開始談起,講述著一開始騰訊也不是一創業就一帆風順,反而也有走錯路,做錯方向,並且走得狼狽的第一段歲月。

不過由於 ICQ 的崛起,那時候做了 OICQ (OpenICQ) 到了後來的 QQ ,才有了爆炸性的互用成長。

並且透過與網路咖啡興盛的年代,並持著快速迭代的方式不斷的改善著使用者體驗的方式。抓緊著第一批大量網路用戶大多為網路咖啡的使用者。開發者離線訊息,線上通訊錄,並且也有虛擬角色 (Avatar) 的機制來讓每一位在網際網路的用戶能夠找到自己的空間。 就獲得了爆炸性的成長,並且取得上市。

出擊

但是騰訊能擠身全球前十大互聯網公司(事實上也是前十大科技公司),絕對不僅僅只是靠 QQ 一個軟體起家。騰訊採取的方式就是多頭進擊(多開戰線)的方式,靠著 QQ 來開發類似臉書的 「QQ空間」,也有類似於掏寶的電商平台,並且也有面臨來自於中國其他互聯網公司的圍攻,甚至大家也都知道一開始最強勢的 IM 平台其實是微軟的 MSN ,本書也有詳細的分析為何最後在中國微軟的˙ MSN 會敗下陣來。

後來臉書開放了平台讓許多廠商進駐,開發出許多有趣的遊戲,也就是大家熟悉的「開心農場」。那麼在中國其實那時候透過 「QQ空間」的開放平台也讓許多類似開心農場的遊戲能夠大紅,並且帶動了整個平台的用戶生態與獲利。也開始了騰訊遊戲的開端,到了後來並且開發許多賣座的網路線上遊戲,也併購了許多全球知名的遊戲公司。

最後的強大轉型就是透過廣告收入的產業改善,來讓廣告主能夠知道該如何有效地投放廣告,即時監測廣告的收看方式。並且透過使用者資料的分析與精準投放來擺脫原來 QQ 的用戶有著三低的印象。讓廣告轉身一變成為騰訊的另外一個金雞母。

巨頭

第三部分的騰訊,已經是中國互聯網的巨頭。並且掌握著許多賺錢的事業線。在中國如果要成立新創公司,就準備好答案是 - 如果騰訊要跟你做一樣的東西? 你打算怎麼應戰?

騰訊一直以來並不是市場的開創者,反而他們是屬於保守的後發者。但是卻是不斷優化,快速迭代,最短時間內讓使用者馬上愛上服務,進而取得市場上的領先角度。

這個都得歸功於馬化騰這位騰訊裡面最強大的產品經理,對於用戶體驗的挑惕與體認。能讓產品快速的更新,不段的朝向使用者喜愛的方向前進。 騰訊有那麼多的戰線,但是馬化騰都會每天去玩玩看新的產品線,並且給予完整的修改建議。讓全部事業體的方向是朝向使用者的體驗至上來開發。

而「微信」的出現,更是移動通訊上的新突破。原本在桌機版與網頁版的 QQ 大成功之後,騰訊本來就想要開發好的移動通訊相關通訊體驗軟體。 但是無奈 QQ 的移動版本並沒有在第一個時間成功,反而是崇尚著極簡風的陳小龍帶著新的提案找了馬化騰,獲得了允許之後便開發出了現在的「微信」,另一個超過好幾個億的用戶體驗。

而「微信」的成功也體驗了,就算是靠 QQ 起家的騰訊。也可以再靠新的通訊軟體的方式再度大鳴大放。於是相關的遊戲,電影,甚至是漫畫,動畫或是書籍的產業,都有看到騰訊的進攻。秉持著 「連接一切」與「互聯網+」變成了世界級的公司。

心得:

就如同我一開始提到的,看著騰訊的成長過程。就會了解到 LINE 目前許多的路途都是正確的。因為從事著互聯網擁有著大量互用的公司。 就是需要透過多角化經營來讓使用者能夠更方便,更便利的取得自己需要的事物。

就如同騰訊的「連接一切」與「互聯網+」,而 LINE 也是有著 「 Closing the distance 」,到了今年的「 Create WoW for the world 」。都能夠了解到,多角化經營並不會有力量分散的疑慮,而後發者並不會一定都是趨於劣勢的。

如何透過產品的快速迭代,真正的找到使用者喜愛的,需要的與想要的功能才是重點。 如同馬化騰依舊每天會花時間來當著一般的使用者來把玩公司的產品。 每一位開發者,員工應該要喜愛,熟悉,並且實際使用自己開發的功能。才能讓你的使用者也愛上你開發的產品與服務。

[心得] FOSDEM 2020 - Advanced debugging techniques of Go code

$
0
0

前提

日前 2020/02/01 ~ 02/02 (FOSDEM: Free and Open source Software Developers’ European Meeting ) 也就是歐洲最大的開源開發者大會(可以解釋成歐洲版本的 COSCUP 嗎?) 裡面有一個專門的 Go DevRoom ,所有的投影片跟影片都有公開出來。 歡迎大家來裡面挖寶!!

投影片與影片鏈結: https://fosdem.org/2020/schedule/track/go/

Advanced debugging techniques of Go code / Andrii Soldatenko

除了 “The state of Go” 這種 keynote 類型的主題之外,第一個讓我想要了解的就是這篇。在 Golang 上面的進階除錯技巧部分。 裡面提到的 debugging skill 主要是透過 https://github.com/go-delve/delve 所提供的相關技巧。相關的技巧包括了:

  • 如何 attach by delve
  • 如何設定 conditional breakpoint
  • 如何透過 delve 來跑 unit test ,就是透過 delve 來跑 test function
    • 我個人很愛用這個,也很常使用。
  • 甚至可以使用 Goland 裡面的 eval 來快速查詢相關數值

最後介紹的技巧就是透過 delve 來 remote debugging docker container ,透過了 docker port expose 將 web app 的 port 轉給 delve (e.g. port 40000) 使用。然後就可以透過 port 40000 來 attach delve debugger 。

最後當然你也會好奇,這些不是 GDB 就可以了嗎?但是其實 GDB 有一些小問題:

  • GDB MacOSX 需要 codesign
  • 如果再 MacOSX 10.13 使用 GDB 舊的版本 8.0.1 才能正常 attach Go app
  • 由於 Golang 在 MacOSX 上面有使用 compress dwarf這樣會使得 debugging info 無法正確在 GDB 上面顯示出來。 需要再 compiler 的時候加上以下參數。 go build -ldflags=-compressdwarf=false -gcflags=all才能讓 GDB 看到 symbol

這一場 talk 真的滿實用的,很推薦大家聽聽。

[研討會心得] QCon - The Why Of Go

$
0
0

前提

為什麼要學 Go(lang)? Go 有很多缺點說: 沒有 Generic,error handling 很麻煩, Dependency Management .. 種種問題經常被討論。 但是,各位有沒有想過 Go 帶來的優點會是什麼? 當初我們喜歡上 Go(lang) 又是什麼?

Carmen Andoh 在 2017 的 QCon 的這篇演講非常的棒,當時的他還在 Travis CI 任職。這篇演講包含了許多的語言層面的整理與效能評比的數據分析。 最近一次我遇到她是在 Golang Meetup Organizers 聚會上,他代表 Google Go 團隊一起跟大家討論著 Go 十週年慶祝活動的討論。

歡迎各位好好閱讀這篇:

https://www.infoq.com/presentations/go-concurrency-gc/

QCon2017: Carmen Andoh - The Why of Go

網址

講者一開始先就語言層面敘述了程式語言的開發演進,每個語言都有人認為可以演進的部分,所以有著不同語言的演進過程。 到了 2009 年 Go 語言的發展也是如此,一開始 Go 語言經常被抱怨的項目如下:

(參考網址: https://github.com/ksimka/go-is-not-good)

  • 缺少語法糖: 相較於其他語言, Golang 並不存在語法糖。

  • No generics (沒有泛型) : 這就不解釋了

  • error handling:

    • 被抱怨的就是會寫太多的
    err := foo()
    if err != nil {
        ......
    }
    
  • No macros or templates

更多部分可以看這篇 https://github.com/ksimka/go-is-not-good

這一頁提到了,現今的環境已經跟三十年前不同了,需要有更適合的程式語言,並且專注解決以下的相關文題:

  • Multicore processor: 多處理器執行緒
  • Networked systems: 網路相關處理系統
  • Massive computation clusters: 大型運算的執行叢集。
  • Web programming model: 網頁程式的模型。

這邊列出了 Go 對於 21 世紀需要的部分所增強的部分,這也是這一篇演講最希望專注的幾個特點。

  • Concurrency: 指的是 goroutine 與 channel
  • Distributed Systems: 對於分散式系統中,需要的 cross compile 。很適合在分散式系統裡面作為 micro-service 部署之用。
  • Garbage Collection:這邊就不解釋了。
  • Code Readibility:

最後這張截圖~來自於 Dave Cheney 在研討會裡面的一句話,個人相當喜歡這句話。 裡面是說「工程師應該是被雇用來解決商業上的問題,而不是再試著維護某些人的程式碼」。

但是經常我們會聽到「通靈工程師」(代表由於交接,或是文件的不足,造就維護人家的程式碼就像是需要通靈一樣)的説法,這些都是 code readibility 的問題。

由於 Golang 本身沒有複雜的「語言糖」,對於代碼的維護上也能夠相對的簡單許多。

這篇演講相當不錯,很適合大家好好專研一下。

Refer:

[心得] Strange Loop 2019 - Networking and Go: An Engineer's Journey

$
0
0

前提

聽 Podcast 是我一個培養聽力跟學習的管道之一,而 Software Engineering Daily更是我相當喜愛的 Podcast 頻道。 這一次我聽到一個蠻有趣的議題,就是「Go Networking with Sneha Inguva」,內容就是來自 Digital Ocean 的工程師來分享為何 Digital Ocean 要透過 Golang 來打造他們 Networking Team 網路相關的工具。

而這一篇文章主要是以 Sneha Inguva 在 Stange Loop 這個研討會的錄影內容為主,而 Software Engineering Daily 的 Podcast為輔。 希望能幫大家整理一下相關的內容。

影片鏈結: https://www.youtube.com/watch?v=XqKvgzXCoXc

Podcast 相關內容: Go Networking with Sneha Inguva

“Networking and Go: An Engineer’s Journey” by Sneha Inguva

介紹主要分成幾個主軸,作為說明為何 Digital Ocean 使用 Golang 作為 Networking programming 的程式語言。

When to use Go

這裡講者總結了一些 Golang 的優點,這邊不詳細介紹了。

  • Concurrency
  • Server-side
  • Great for CLI tools
  • Easy-To Fuzz-test
  • Easy to write REST/RPC services

上圖解釋了 Digital Ocean 如何 golang 來打造相關的工具。

The network stack

這邊介紹 OSI 的七層架構跟 TCP/IP 的五層架構。這邊就不詳述基本常識的部分。

延伸閱讀:

Networking primitives

接下來就開始介紹如何用 Golang 來打造一些網路原生的工具。

先以 Layer 7 的 Load Balancer 來介紹:

  • Use HTTP protocol.
  • Accept client-side connections.
  • Pass client-side request to one of backends.
  • Return server-response back to client.

介紹到套件:

  • net/http

這邊算是蠻基礎的,也就是透過讀取 HTTP request connections 內容後,去後方找一台 backend (這邊有挑選的方式,或是更多細節可以實作) 連接,也就是透過發送另外一個 HTTP request 得到回覆後,將結果回傳給 client side。

這邊可以看到收到 http.request 之後,馬上透過亂數挑選出 backend ,然後將需求往後端來傳送。

接下來講解,如何開發 Layer 4 的 Load Balancer:

下一個階段,就開始開發一個 Layer 4 也就是 TCP 的 Load Balancer: (並且是支援 streaming socket)

  • Use TCP protocol
  • Accept client-side connection
  • Open backend connection
  • One gorutine to shuttle packet from client-side to backend.
  • Another one gorutine to shuttle from backend to client-side.

因為 TCP 需要有 SYN, SYN/ACK 跟 ACK 三個階段,所以需要透過兩個 gorutine 來持續服務完成整個流程的資料傳遞。

介紹到套件:

  • net

這邊 listen 部分要改用 net.Listen()這樣才能收到 TCP packet 。

這邊就是開啟往 backend 的連線。

這邊將兩端的 connection 拆分成兩個 gorutine :

  • client –> backend
  • Backend –> client

這一個部分則是一簡單地將資料從一端複製到另外一端。

打造 DHCP Server

從 Layer7 到 Layer4 之後,講者接下來分享如何透過 Golang 來開發 DHCP 上面的相關應用。當然大家也都是知道 DHCP (Dynamic Host Configuration Protocol) 其實是架構在 Layer7 上面的,但是講者分享一個可能會需要使用到 Layer2 API 的部分,就是他們需要檢查發訊息的 MAC Address 是否就是登記的資訊是同一個人。

介紹到套件:

  • syscall
  • os
  • golang.org/x/sys/unix
  • github.com/mdlayher/raw https://github.com/mdlayher/raw

這幾個套件主要用來:

  • unix套件用來解析 Socket 用來讀取 IP address。
  • raw用來 ListenPacket ,可以針對 IPv4 或是 IPv16 。講者解釋主要都是先使用 IPV4 的部分。
  • syscall作為系統 Error Code 偵測。

這一段就是講者提到透過 dhcp4 套件來將請求的來源 MAC Address 跟需要 binding 的 MAC Address 做比對。確認請求的人跟他的內容一致,才會發送 IP 給他。

總結

講者主要分享自己在 Digital Ocean 工作上使用 Golang 的經驗,並且也舉了一些例子希望讓聽眾能了解, Golang 除了能做系統小工具之外,要做比較複雜(或使底層)的網路操作其實也是可以的,並且效率也都是游刃有餘。這一篇演講相當的有趣,因為除了了解了 Golang 也可以做一些底層網路操作外,講者也很清楚的做了一些基本的科普,讓聽眾可以從沒有太深入的網路架構概念到瞭解能透過 Golang 開發一些小工具。

[好書分享] 被討厭的勇氣:自我啟發之父「阿德勒」的教導

$
0
0
被討厭的勇氣:自我啟發之父「阿德勒」的教導
原文: 嫌われる勇気 : 自己啓発の源流「アドラー」の教え
作者: 岸見一郎、古賀史健  
譯者: 葉小燕  
ISBN: 9789861371955

買書推薦網址:http://moo.im/a/biuGKR

前言:

這本書大概算是一本相當知名的書籍,也一直出現在我的推薦清單裡面。其實這一本也看了很久,每每看一個章節都需要不少的時間去反芻裡面的內容,思考許多不同層面的問題。 經常裡面有一些對話,都會讓人掉入過往的時空情境而不斷的思考與反省。

即便我現在的工作職責可能是最不怕被人討厭的(?),但是我之前在工作的時候其實相當的在意人家的看法。所以一直常常聽到人家跟我講過這本書。 但是卻一直沒有想讀完的勇氣(怕被討厭?),所以也一直無法分享。去年買來之後,間斷地看了這本書,時而讓我開心,時而讓我心有戚戚焉。

如果你很怕被同事(朋友)討厭,很怕講錯話被人輕視,很怕問錯問題? 或許你也該來看看這本書。

內容簡介:

為什麼人們一直無法改變?
為什麼自卑感總是揮之不去?
為什麼我們總是活在別人的期待之下?
為什麼現在無法真實感受到幸福?
或許是因為,我們缺少了被別人討厭的勇氣!

一名憤世嫉俗的年輕人來到哲學家的小屋。
當他聽聞哲學家主張「世界無比單純,人人都能幸福」,便決心前來推翻這種謬論。
這個世界明明複雜混亂,哪裡單純了?
如果幸福真的這麼容易,為什麼他還會過得這麼痛苦?

他們開始了你來我往的思考與論辯。
年輕人原以為哲學家不過是昧於現實的昏庸老頭,
但是一夜又一夜過去後,年輕人反而陷入沉思:這世界到底是什麼樣子?
「所謂的自由,就是被別人討厭。」哲學家說。
怎麼會這樣?怎麼會有人想被別人討厭?
想得到真正的自由,又為什麼非得被別人討厭不可呢?
這個世界,究竟是單純,還是複雜?人,到底能不能得到幸福?……

問題不在於「世界」是什麼樣子,而在於「你」是什麼樣子。

簡介來自讀墨:http://moo.im/a/biuGKR

本書的內容主要透過兩個人的對談,一個是年紀很大的長者「哲學家」跟一個由於環境變化開始自我懷疑的「年輕人」。

兩個人一來一往的對談,從傾聽著「年輕人」的煩惱開始。慢慢的到不同深度與方向的人生哲理的對談。主軸都是圍繞著「阿德勒的心理學」。

了解心理創傷

一開始年輕人相當的沮喪,他遇到了「哲學家」而「哲學家」首先也先跟他分析了心理創傷是如何造成的,心理創傷究竟是誰造成的? 心理創傷往往都是都是有某種「目的性」所造成的習慣。孩子的心理創傷是因為渴望著父母注意的習慣。 阿德勒心理學就堅決的反對心理創傷的存在。

不甘現況

許多人都經常為了現況而煩惱,經常的怨天尤人。「年輕人」有著一樣的疑問,而「哲學家」也很有智慧的回答他,有許多人的不安現況都是自己選擇的,自己造成的。 不安於現在的環境,卻又選擇「不去改變」。不安現況的不幸狀態很多時候只是對於自我的憤怒所造成的。

人際關係

接下來討論的就是許多人都有的困擾:「人際關係」。「哲學家」說人際關係是無法避免的困擾,只要你不是孤零零的生活在宇宙中,人就一定會有「人際關係」的困擾。對於自我認定的困擾,其實也是「害怕別人對自我的觀感」所造成的,許多時候的問題,其實都自己所帶來的困擾罷了。 害怕被人討厭,害怕被人排斥,很多時候也是對於自我的懷疑所造成的。

活在當下與舞動人生

人生不是目的論,像是有許多小漣漪的線性才是。會有不段的新事件產生,所以產生了許多的人生的高潮與低潮的交錯。讓每個人都無法以目的性來評論你的人生。重要的是享受當下,每一步慢慢地踏出像是舞蹈一樣的享受著你的人生才是。

心得:

現在終於把這一本書看完,「被討厭的勇氣」講解的裡面與想法或許你我的知道。 但是能夠真正的打動內心深處的又有多少人呢?哲學心裡書籍大概就是如此吧,道理可能被你所知道,但是你卻從來無法同意的。透過這一本書裡面的對談,語言中的激盪,呼應著過往的情境。也或許你才能「稍微」的感受到作者希望你能夠感同身受的一些想法。

把幾個章節的重點打出來很快,但是許多的對談內容其實會衝擊著你的想法,打動到你的內心。 雖然是敘事般的對談,卻能夠透過許多的對話內容讓你深刻的記憶著。像是從底層呼叫出你的記憶般。

很推薦大家看一下這一本書籍,但是又不推薦一口氣把它閱讀完。或許慢慢地閱讀,仔細地品嘗每一個段落,每一個對談想要表達的意境。或許才能體會作者想要表達的道理。

如此一來才能夠真正的把這本書的意境吸收起來。

Viewing all 537 articles
Browse latest View live