[Coursera] Decentralized Applications (Dapps) (二)

Blockchain Specialization 系列上課心得 Blockchain Basics Smart Contract Decentralized Applications (Dapps) Blockchain Platforms Decentralized Applications (Dapps): 課程鏈結: 這裡 文章鏈結: Decentralized Applications (Dapps) (一): Week 1 Decentralized Applications (Dapps) (二): Week 2 Decentralized Applications (Dapps) (三): Week 3 Decentralized Applications (Dapps) (四): Week 4 前言: 這次的第二堂課跑得比較久,並不是因為課程比較難而是因為課程內部提供的 truffle 版本跟現階段的差很多,導致其實無法再 Mac OSX 上面順利的執行,需要修改不少的地方。雖然能夠幫助我夠熟悉整個 truffle 的架構,但是也真的得花很多時間解決各種問題。 如果還是一直卡住,真的還是得考慮使用 VirtualBox 來跑 VM 比較快。 課程內容: Week2: Truffle 的介紹 Truffle 與 Remix 的差異 這次主要會用到的工具叫做 Truffle ,在使用 Truffle 之前需要分別出跟之前使用 remix 的差別: 分析問題, Smart Contract 的 prototype 需要使用 remix 。 開發,測試與部屬 dApps 需要使用 Truffle。 如何透過 Truffle 部署簡單的專案 接下來透過 Truffle要來跑一開始最簡單的範例 Ballot 流程如下: 安裝 Truffle : npm install -g truffle 初始化專案 mkdir ballot cd ballot truffle init 裡面會有幾個已經設定好的 template 包括了: migrations/1_initial_migration.js: 負責 migration script file truffle-config.js: 負責 truffle compiler 的設定檔案 增加設定檔案 truffle.js (這檔案是負責 truffle 部署的設定檔案) 增加 deployment 的相關設定 (建立一個檔案 migrations/2_deploy_contracts.js) 關於將舊的 Remix 的檔案 Migrate 到 truffle 這邊的部分就參考這篇文章。[TIL] Migrate solidity from remix to truffle (1) - Compile Test-Driven Development Smart contract 就像 hardware chip...
繼續閱讀

[TIL] Migrate solidity from remix to truffle (1) - Compile

前提 最近在上Coursera 的 Blockchain Specialization 系列的課程 Decentralized Applications (Dapps),裡面提到使用 Truffle 。 由於課程裡面使用的 Truffle 版本比較舊(目前是 0.5.1,課程內是 0.4.0? ) ,本來想打算使用 VM 的方式來跑,但是發現現在的筆電跑 VM 有點悲情。 只好硬著頭皮來直接去修改相關的代碼,想想相關的修改應該也可以變成一系列的文章。 就來試試看吧!! 內容分享 Truffle 的介紹 Truffle 與 Remix 的差異 這次主要會用到的工具叫做 Truffle ,在使用 Truffle 之前需要分別出跟之前使用 remix 的差別: 分析問題, Smart Contract 的 prototype 需要使用 remix 。 開發,測試與部屬 dApps 需要使用 Truffle。 如何透過 Truffle 部署簡單的專案 接下來透過 Truffle要來跑一開始最簡單的範例 Ballot 流程如下: 安裝 Truffle : npm install -g truffle 初始化專案 mkdir ballot cd ballot truffle init 裡面會有幾個已經設定好的 template 包括了: migrations/1_initial_migration.js: 負責 migration script file truffle-config.js: 負責 truffle compiler 的設定檔案 增加設定檔案 truffle.js (這檔案是負責 truffle 部署的設定檔案) 增加 deployment 的相關設定 (建立一個檔案 migrations/2_deploy_contracts.js) 將之前的範例 Ballot.sol migration 過來 這一段是 (Smart Contract ) 課程中搬過來的第一個範例程式 ballot.sol ,大家也可以直接參考以下的部分。 檔案記得要建立在 contracts/ballot.sol 下面,接下來會講解如何做正確的 migration 。 試著編譯 truffle truffle compile 結果發現了一些錯誤,就來開始解決問題吧。 Compiling your contracts... =========================== Error: CompileError: ParsedContract.sol:43:39: ParserError: The state mutability modifier "constant" was removed in version 0.5.0. Use "view" or "pure" instead. function winningProposal() public constant returns (uint8 _winningProposal) { ^------^ ####先試著降 Solidity Compiler...
繼續閱讀

[好書分享] 鋼鐵人馬斯克(全新增訂版)

(圖片參考 讀墨 ) 從特斯拉到太空探索,大夢想家如何創造驚奇的未來 Elon Musk : Tesla, SpaceX, and the Quest for a Fantastic Future 原文作者:Ashlee Vance 譯者:陳麗玉 買書推薦網址: http://moo.im/a/DHKPQX 前言: 現代的鋼鐵人 - 馬斯克,不僅僅被視為是狂人之外。更是讓推動電動車的特斯拉與新創火箭科技 SpaceX 兩個令人驚豔的黑科技公司的執行長與董事。這本書應該蠻久以前就想要買來看。前一段時間一次買了三四本,斷斷續續的下來總算把這本書看完。 最近持續要規定自己減少每天手機的利用時間,除了上班不得不用之外。應該在家裡都是要持續拿著我的 Readmoo 好好的閱讀書籍。 內容簡介: 最近的幾篇傳記不論是貝佐斯傳到現在這的本 馬斯克傳記,其實都算是從記者的角度來撰寫的文章,而不是本人或是完整授權的傳記書籍。這類的書籍脈絡都還算容易了解,從一開始的媒體寵兒的角度來切入馬斯克,開始帶入成就他被稱為矽谷鋼鐵人傳奇的起頭。 馬斯克從小出生是在一個南非的富裕家庭,但是從小的馬斯克因為經常陷入深沈的思考模式,也就是無視於周遭的人的聲音整個陷入自我的思考模式,由於這樣的原因讓馬斯克從小經常被欺負。 但是這些都無法掩飾他異於常人的思考邏輯,搭配著他喜好讀書(並且獨得相當快速)的習性。讓馬斯克很容易地了解並且有著良好的基礎。 出社會之後馬斯克更展現了他的才能從第一次創業透過網頁黃頁的 Zip2 ,並且從兩個人的公司打造自己的第一個企業。後來被康柏併購之後,馬斯克也得到了他人生的第一桶金。 接下來就像大家耳熟能詳的創業模式,他們創立了 X.com 並且與 Paypal 競爭了一段時間之後就併購了 Paypal 。但是這個時候馬斯克也被迫交出了執行者的職位。被迫離開執行位子之後, X.Com 將名字改為 Paypal ,之後就像大家熟知的一樣,接下來 ebay 花了十五億美金買了 Paypal 。馬斯克有了他的第二桶金,有點像是賈伯斯離開蘋果一樣,這時候的馬斯克將他的眼光放到了小時候的夢想 — 火星旅遊。 接下來讀故事就是大家較熟悉馬斯克同時兼顧了人類兩個夢想的科技公司,火箭科技的 SpaceX 與電動車產業的 Tesla 。這邊幫作者賣個關子好了,其實這一段轉折還蠻有趣的。 馬斯克之所以被人稱為現在的鋼鐵人,出了有錢之外,就是他驚人的執行力。他可以很快的學習一件事情,然後跟工程師辯論為何不該這麼做。某種程度也是一種缺點就是他很愛跟工程師說,「我來做你的事情跟兩家公司的執行長」但是恐怖的是,他會這麼做而且做得很好。 心得: 這本書主要是由記者角度來寫,裡面有許多的歷史事件的紀錄。由於沒有太多本人的資料,可能沒有夾帶著個人情緒的元素。·會覺得馬斯克真的像是機器人一樣,優秀而不帶著個人情感。 但是這本書也提到了,他的家庭生活與他對於第一個孩子夭折所帶來的痛苦。 這本書有許多有趣的歷史,更可以了解這些令人感到傳奇的執行長們的人生。像是賈伯斯,貝佐斯一樣,馬斯克一樣有著高超的學習能力與暴躁挑惕的個性。或許,這些也是這些傳奇執行者們的樣板一樣。 最後,相當推薦大家來看這本書。很多有趣的故事會讓你愛不釋手。
繼續閱讀

LINE 開發社群計畫: TWJUG#201904@LINE

前提 大家好我是 LINE 台灣的 Technical Evangelist - Evan Lin 。「開發社群計畫」是今年一個開發者關係與技術推廣部門一個重點,將在今年一整年中,在台灣舉辦對內的技術交流、教育訓練,對外的社群聚會、校園演講、開發者徵才日與開發者大會等各式各樣超過30場的活動。我們希望創造更多技術分享與跨國串連的機會,同時,持續招募優秀的人才加入LINE台灣的開發工程團隊。 四月第一場社群活動邀請到 TWJUG (Taiwan Javsa User Group) 社群到 LINE 來舉辦。也請到 LINE Pay 的 Webber Su 來分享,除了讓更多人能夠了解 LINE Pay 工作經常用到的工具外,也希望能夠引發一些討論甚至可以互相交流。 Where is the ghost in the ghost island? Explore by Java and Mongo/ LINE Pay - Webber Su 投影片 首先上場的是 LINE Pay 的同仁 Webber Su 所帶來的透過開放資料集的一個案例分享。在 LINE Pay 的開發經驗上其實會遇到大量資料的處理與分析,但是由於許多的客戶資料都是屬於機密資料無法公開,所以透過開放資料集的案例來分享 LINE Pay 團隊日常遇到的相關問題。 透過開發資料將全台灣的事故資料匯入資料庫中,並且透過 LINE Pay Merchant Map 的部分的相關技術可以幫我們找出比較容易發生事故的問題區段。 在開始處理資料的之前,講者也分享了他會用到的相關開發工具如下: 以下稍微介紹每個工具的功能與相關作用: 資料的分析: Spring Web , Spark 與 MongoDB 。 資料批次處理: Spring batch 與 MongoDB 。 網站的後台系統: Node.js , Loopback 與 MongoDB 。 前台顯示部份: Vue.js 與 D3.js 。 這些開發工具也是 LINE Pay 團隊在開發上經常使用。除了開源專案工具之外, LINE Pay 也首次分享了 LINE Pay Merchant Map 的功能: LINE Pay Merchant Map 提供了地圖話資訊的條列與搜尋。包括了: List: 條列式的列表。 Nearby: 透過地圖是覺化的列出。 Search: 甚至透過關鍵字的搜尋方式。 在文字資料的搜尋上,究竟要使用 Elasticsearch 或是 MongoDB 作為文字搜尋呢?這裡講者也分享了當初在內部開發系統上,是透過哪些的評量方式來決定的。 由於許多效能的測試與評量上最後決定是 Elasticsearch 。而在地點鄰近搜尋 (Nearby) 上最後則是決定使用 MongoDB。 這個 Ghost Island 的架構其實也將 LINE Pay 開發團隊許多用到的工具分享給大家。裡面包括了資料該如何處理,該如何有效地處理與資料的讀取跟儲存? 這邊講者也分享了一些經驗談,就像是這個案例一樣,對於資料的處理上要有許多小地方要好好處理。如果是開放資料的時候,對於資料的處理要更加小心。資料可能有誤,資料可能有缺甚至資料可能是空的。所以可能將資料多儲存在其他地方也是一個可以變通的方式。這樣可以避免在資料清洗的時候造成程序的錯誤。後端針對文字搜尋與鄰近地圖搜尋則是透過兩個不同的儲存工具( Mongo 與 Elasticsearch )來處理資料。 而且講者也分享了在各個階段可能會踩到的雷(指的是遇到的問題)。不論是剛剛 Batch Spring process ,Spark 資料的處理上還是 Cargo 的部分。 整個主題雖然是使用開放資料的事故來做講解,但是不論是整個流程用到的相關開發工具還是可能會遇到的問題。講者也都分享出來 LINE...
繼續閱讀

[研討會心得] 2019/03/29 LINE Developer Meetup 7

前提 嶄新一年的第一場開發者小聚,特地離開大台北地區,將在新竹的清華大學舉辦 ; 更請到 LINE台灣的許多開發團隊來跟開發者們分享在LINE的開發流程與經驗。 不僅僅有 Developer Relations 的本年度的活動規劃分享,更有來自日本的團隊來解釋什麼是 LINE Private Cloud 。當然不會少的有本地產品開發團隊來跟大家見面與分享,除了有 LINE NOW 與 LINE TODAY 的團隊之外,更有 iOS 與 Android 的開發團隊。機會實屬難得,也很開心能夠跟新竹的開發者一起來討論與交流。 2019 年開發者關係與技術推廣部年度計畫分享 / 資深開發技術推廣工程師 Evan Lin 投影片 首先登場要介紹的部分就是由我所分享的 2019 年度開發者關係與技術推廣部門( Developer Relations )的年度計畫,大家也可以參考這一篇文章的介紹。 這一段介紹主要先講解身為開發者對於 OA 2.0 需要知道的部份。自從 OA 2.0 方案公佈之後其實開發者們都很擔心,不知道會不會有任何變革的部分。在這裡首先分享兩個鏈結給各位。(OA 2.0 全面升級,OA 2.0 FAQ ),這兩篇文章其實能解決大多數開發者的疑慮,如果還是有不清處的部分。可以看看投影片內的整理。 Developer Trial 會如何改變? 會轉移到 “低用量” 不限制好友數,發訊超過 500 則會無法發送 (不會收費)。 這樣的改變對於只是想測試功能的開發者是相當貼心的,不用擔心不小心寫錯 Push Message 被收費之外。更可以使用到人數更多低用量方案。 再來就是要介紹 Developer Relations 本年度的一些計畫與每個月的行程給開發者們。其中最重要的計畫就是「LINE 開發社群計畫 」,詳情請看新聞稿。我們將在今年一整年中,在台灣舉辦對內的技術交流、教育訓練,對外的社群聚會、校園演講、開發者徵才日與開發者大會等各式各樣超過30場的活動。我們希望創造更多技術分享與跨國串連的機會,同時,持續招募優秀的人才加入LINE台灣的開發工程團隊。 「 LINE 開發社群計畫 」 裡面除了親近開發者社群之外, LINE 也積極在各個開發者盛會中參與,不論是各種大大小小的研討會或是一些社群的 meetup 。都是透過參與社群來使得開發者更能夠了解 LINE 開發的過程與製造更多技術交流的機會。其中也分享 LINE 內部的開發者活動,包括了「技術寫作訓練日」或是內部的其他訓練與 Workshop 。 這個 Session 的最後要跟大家分享就是 LINE 年度開發者招募大會 “LINE Developers Recruitment Day” 即日起也展開,歡迎各位開發高手來報名,一起打造 WoW 使用者體驗的產品。 Developer Relations 相關職缺: Technical Evangelist Technical Writer How We build Kubernetes service by Rancher in LINE / LINE 東京 Verda Team, 李飛翔 投影片 來自東京 Verda Team 的李飛翔也跟大家分享 LINE 是如何透過 Rancher 來打造 LINE 自己的 KaaS (Kubernetes As A Service) 。本文一開始先介紹了 Rancher 的一些功能與 Rancher 2.0 的目前狀況,也會介紹我們如何使用 Rancher 來打造 KaaS 。 LINE 如何透過 Rancher 打造 KaaS API Server: 首先左方可以看到,有一個...
繼續閱讀

[Coursera] Decentralized Applications (Dapps) (一)

Blockchain Specialization 系列上課心得 Blockchain Basics Smart Contract Decentralized Applications (Dapps) Blockchain Platforms Decentralized Applications (Dapps): 課程鏈結: 這裡 文章鏈結: Decentralized Applications (Dapps) (一): Week 1 Decentralized Applications (Dapps) (二): Week 2 Decentralized Applications (Dapps) (三): Week 3 Decentralized Applications (Dapps) (四): Week 4 前言: 剛忙完本年度公司第一次的 Meetup ,其實每天都忙著在寫文章,感覺逐漸邁進量產化技術部落格作家邁進。不過還是得要花點自己的時間好好把該讀的課程讀完,畢竟也已經付錢了。所以回過頭來還是得每天努力地啃, Blockchain Specialization 系列的課程。第三期開始感覺更加多的作業與實作著部分,應該也會變得輕鬆一點吧(咦?)。 課程內容: Week1: Dapp 架構圖 Ethereum 相關環境安裝 sudo apt-get install software-properties-common sudo add-apt-repository -y ppa:ethereum/ethereum sudo apt-get update sudo apt-get install ethereum 參考: https://github.com/ethereum/go-ethereum/wiki/Installation-Instructions-for-Ubuntu GETH 相關初始化指令 geth --datadir ../eth_node account new geth --datadir ../eth_node init genesis.json genesis.json 範例如下: { "config": { "chainId": 88888, "homesteadBlock": 0, "eip155Block": 0, "eip158Block": 0 }, "coinbase" : "0x0000000000000000000000000000000000000000", "difficulty" : "0x1", "extraData" : "0x00", "gasLimit" : "0xfffffffffffffff", "nonce" : "0x0000000000000042", "timestamp" : "0x00", "alloc" :{ "account-address": {"balance": "0xffffffffffffffffffffffff"} } } 參考: https://medium.com/infrageth/practical-steps-for-go-ethereum-setup-27b8d64903fc 名詞解釋: enode: 用來給其他節點連接到 bootnode 之後,透過 P2P 方式來跑 blockchain operation。也可以當成是 ethereum 世界裡面的 URI 。 Definition of Dapp: A Dapp, or decentralized application, solves a problem that...
繼續閱讀