[教學] 打造你的 NFT 智能合約 – ERC721A

打造你的NFT 智能(慧)合約 - ERC721A

GM!前些日子在幣圈亂玩,一路從幣玩到了NFT再玩到自己動手寫合約…所以,我們就久違的來一篇關於智能(慧)合約(Smart Contract)的教學吧!

智能合約是什麼?

智能合約(私心比較喜歡稱作智慧合約),Smart Contract,是一種在區塊鏈所使用的合約,通常運作在有圖靈設計的區塊鏈中,其中最著名的就是以太鏈(Ethereum)的EVM。智能合約的存在,提供區塊鏈更多可以延伸的應用方式,例如最近比較常被聽到的 NFT 即是智能合約的應用之一。

而根據不同的區塊鏈以及 VM 設計,語法也會有所不同。其中常被使用的以太鏈較被廣泛使用的是 Solidity。

ERC721

ERC-721 是一種合約協議的代號,他是目前 NFT 的基礎協議,用作發行擁有不同代號的有限量無限量代幣(Token)。而因為他的唯一編碼方式以及使用 Metadata 來提供更多資訊的特色,因此被廣泛應用在各領域。

ERC721A

ERC-721A 是由 ERC-721 的改良,因原本使用的 ERC-721 其語法的因素,導致在鑄造(Mint)多個 NFT 時會產生大量的手續費(Gas Fee),而 ERC-721A 大幅度地減少了手續費的消耗,因此在目前的 NFT 世界被廣泛使用。

閱讀全文〈[教學] 打造你的 NFT 智能合約 – ERC721A〉

JavaScript – Singleton 設計模式

前言

在設計程式時,我們有時會希望某些程式資源是可以被重複使用,並且在不同的程式中被引用時,變數內容可以是一致的。例如說,我希望我的程式可以共用同一個 DB 物件、同一個計時排程…諸如此類的需求,這時候 Singleton 單例設計模式就派上用場了。

閱讀全文〈JavaScript – Singleton 設計模式〉

PlaidML 讓你的 Mac 也能加速 Tensorflow 機器學習!

相信很多使用 Mac 或者手上沒有 NVIDIA 顯卡的朋友在做機器學習、Tensorflow 相關的實驗時,因為沒有 GPU 的 CUDA 加速而有非常多的時間可以泡咖啡…然後常常被誤會沒做事(?),今天就來介紹 PlaidML 這個工具給各位試試啦~

而說到 GPU 運算程式設計框架,除了常聽到的,由 NIVDIA 所維護與支持的 CUDA 外,其實還有另外一個,那就是 OpenCL

OpenCL 常出現在 AMD 的顯示卡上,此外,還有 Intel、ARM 等多家廠商皆有硬體支援 OpenCL,而以 Intel 為願算核心(高階機種還有 AMD 獨顯)的 Macbook 也同樣有支援 OpenCL 技術。(編按:2020 新款 Mac 所採用的 M1 核心內建神經網路單元,速度更快)

所以如果想在沒有 CUDA 運算資源的情況下加速的話,顯而易見的,我們要來借用 OpenCL 的能力,在 Mac 上施點魔法啦~

閱讀全文〈PlaidML 讓你的 Mac 也能加速 Tensorflow 機器學習!〉

RESTful API 測試很煩,只好動手寫屬於自己的測試了

寫在最前面

嗨,大家好久不見!

距離上次發表新文章已經是好久以前了,主要是開始進入職場上班工作後,回家只想休息打遊戲,一不小心就富奸化了。不過也因為工作的因素,最近累積了不少研究記錄可以來慢慢更新上來。

API 測試

RESTful API 測試在許多後端伺服器軟體工程師是非常常見的一個開發環節,而如何驗證與測試 API 的傳呼結果則是一件令人感到煩躁的事。大部分的人應該都有使用過 Postman 這一個圖形化介面的測試工具,他其實算簡單,而且提供的功能相當多樣,幾乎覆蓋了所有 API 的測試需求。此外,這工具也有提供自動化測試工具的方式。

所以,既然有簡單的測試方式,為什麼不乾脆用他就好,還要自己來寫一個呢?

因為當測試項目多又捨不得關掉頁籤的時候,你就會知道那有多煩躁了…在數十個頁籤中翻找那個先前暫時放著的測試內容…

所以我就想說,既然要這樣翻翻找找或使用他的工具建立一套不太活化的自動測試流程的話,那乾脆就自己來寫一個吧!

閱讀全文〈RESTful API 測試很煩,只好動手寫屬於自己的測試了〉

Node.js 與 Socket.io – 即時聊天室實作:資料庫

經過前兩篇()文章,我們的聊天室現在有了一個可以記憶的小腦袋,不過進過Demo的人大概都會有個疑惑:「說好的紀錄呢?怎麼都是空白的?」

這是因為 Heroku 免費方案會把閒置的伺服器程式切入休眠狀態,當有外部請求時才會重新啟動(這也是為什麼Demo頁面偶爾啟動會很慢的原因),而我們的記憶體資料也會在此時被重置成像新的一樣。

所以,我們不能把資料單單存在記憶體中,我們現在要來把資料放到「資」、「料」、「庫」!

閱讀全文〈Node.js 與 Socket.io – 即時聊天室實作:資料庫〉

老闆!來一個能支援 Socket.io 的 NGINX Reverse Proxy Server 吧!

NGINX 是一個現在相當多人使用的 HTTP 伺服器程式,他能做的事情非常的多,而且重點在於它效率更快更好。但今天這篇文章並不是要來介紹 NGINX 有多好,而是要來帶大家設定 NGINX 的反向代理(Reverse proxy)伺服器,讓你其他不是單純 HTTP 的網站程式(如Node.js)也能夠利用到 NGINX 的眾多好處。

閱讀全文〈老闆!來一個能支援 Socket.io 的 NGINX Reverse Proxy Server 吧!〉

Node.js 與 Socket.io – 即時聊天室實作(二)

在上一篇Node.js 與 Socket.io – 即時聊天室文章,我就假設你看過了也做完了,我們有了一個「超級無敵簡單」的聊天室,但那實在是太簡單了、太陽春了。

身為一個聊天室,它沒有前人的紀錄,也沒有每人專屬的名稱,喔對,還不會紀錄名稱!這真是太令人失望的聊天室,實在是太失望,完全就只是個拿來作為教學用的超級無敵簡單版本。作者到底做了什麼鬼東西啊!

喔等等,作者好像就是我。

好吧,為了盡棄前嫌,我決定來改良改良,增加一些新功能。

閱讀全文〈Node.js 與 Socket.io – 即時聊天室實作(二)〉

Node.js 與 Socket.io – 即時聊天室實作

許久沒有寫文章了(你好像常這樣說欸!),今天要來稍微講講專門用來實作即時通訊的 Node.js 模組 – Socket.io。

Socket.io 其實是一個完整實作 Websocket 的函式庫,他提供更簡單的方式讓開發者可以方便的使用 Websocket 這樣的通訊技術來實作許多應用。

我將以實作一個簡易聊天室作為範例來介紹這一個模組。

閱讀全文〈Node.js 與 Socket.io – 即時聊天室實作〉

Commander,教你如何用 Node.js 開發 CLI 工具!

身為一位 CLI(Command Line Interface, CLI) 控,自幹開發用的輔助工具時當然也要自幹一個屬於自己的 CLI 工具啊!不然怎麼對得起那個常駐在下方的 Terminal 呢?不過自幹工具不是本篇重點,今天是要來跟大家講講 Commander 這一個 Node 模組。

Commander 是一個專門解析啟動程式時所輸入的參數的模組。以我們最常輸入的 npm install 這個指令為例子來說明,npm 是指程式名稱,install則是指要程式執行的動作,這個就是所謂的參數,以 C 語言來說的話大概就是 argv 這個放在 main 括號中的東西了。

閱讀全文〈Commander,教你如何用 Node.js 開發 CLI 工具!〉

GT Pack – 私藏的 Webpack 整合簡化模組。

嗨,大家好久不見。

筆者最近正朝著萬能的全端開發者邁進,而最近遇到了一個棘手的問題,就是使用 Webpack 時的各種麻煩事,所以我與我的好夥伴好朋友 Single Zero 就一起弄了這一個整合包模組,讓我們只要一些基本的設定後,什麼 ES6、Less、樣版引擎啥的都能快速搞定,而且支援在不同需求中的不同設定,然後只需要在專案根目錄下一次 webpack 指令便能根據各自的設定完成打包。

雖然比起全自由的wepback.config.js有些許限制,但個人覺得夠用了 XD

而且因為有了這個模組,我們考試都考100分就不需要再手動安裝和設定一堆有的沒的,設定到腦神經衰落還不會動。

閱讀全文〈GT Pack – 私藏的 Webpack 整合簡化模組。〉