之前一直用 HTTP,但覺得 HTTP 很不安全,所以趁著這次升級 Sonatype Nexus 的時候,一併來實驗啟用 HTTPS。
Software entities (class, modules, functions, etc.) should be open for extension, but closed for modification. Junior programmers create simple solutions to simple problems. Senior programmers create complex solutions to complex problems. Great programmers find simple solutions to complex problems. 註1:本部落格的範例程式碼在 2015 年以前的文章中,大多是以全型空白做縮排。如需服用,請自行用文字編輯器的取代功能把全型空白取代成半型空白。
- Bertrand Meyer
- Charles Connell
註2:本部落格的內容授權請參閱部落格底部的授權宣告。
2018年9月14日 星期五
2018年9月6日 星期四
使用 Python 存取 Ethereum:透過 web3.py
想要透過 Python 存取 Ethereum,從 Ethereum 官方的 Github 中可以看到有兩種套件可以達成:web3.py [1] 和 pyethereum [2]。就我目前的理解來說,兩者的差別在於 web3.py 主要是作為外部存取 Ethereum 的客戶端,也就是說 web3.py 函式庫本身不會成為區塊鏈節點,也不會進行區塊鏈同步,而是連接一個區塊鏈上的節點,把區塊鏈當成像是外部資料庫一樣取用而已;而 pyethereum 則比較像是 geth 那樣,是用來把自己做成一個區塊鏈節點,會正常進行區塊同步,也可以作為礦工開始挖礦。
在本篇當中,因為是想要一個輕量級的客戶端來與區塊鏈互動,並不想要準備龐大的儲存空間來存放區塊鏈的資料,因此會以 web3.py 為主。
(書籤) Ethereum 的 light client protocol
在一般情況下,Ethereum 的客戶端都需要一定程度地下載區塊鏈上的資料,並在自己的本地端開始驗證、組成現在的狀態
能做的選項頂多也就是 full client 跟 fast sync 的差別。
不過在有 light Client [1] 的情況下就不同了,Light Client 的目的是避免同步 block 的需求,改為去問網路上的其他 client。
但至少到目前為止,light client 還不是一個完全準備好的協定,所以也不是所有 client 都能支援它(雖然說 geth 和 parity 都支援了)。
參考資料
2018年9月3日 星期一
2018年8月27日 星期一
2018年8月25日 星期六
2018年8月23日 星期四
Java 中的 Bit 操作
簡要地紀錄結論,看起來在想要儲存大量的 Bit 資料時,使用 BitSet 或者 boolean[] 是比較好的選擇
其中 BitSet 好像比較節省記憶體(據說每個資料都消耗 1 bit)
但如果資料量不夠大的時候(長度數百萬以內),boolean[] 的 CPU 運算速度比較快。