Archie 的斜槓記錄 2019-10

這個月 Archie 的斜槓記錄又來啦!

AdSense

少少的 US$1.41

file

Bitfinex

這個月的年利率大約都落在 7 - 10 % 之間,不過最近因為習近平的一句話,有幾天上漲到 15 % 左右,但沒過多久就回歸到 9 % 的位置

file

所以這個月每日的利息走勢圖如下,多半時間是低於一塊美金的:
file

而這個月的收益為

file

台股獲利

這個月買賣股票加上屁偉(我弟弟)抽中上海商銀直接賣掉的分紅,一共獲利 $10,760 元。

總收入

美金持續下滑到 30.54 左右,所以 Bitfinex 那邊依然是被匯差吃死死⋯⋯😭

  • AdSense US$1.41 -> $43 元
  • Bitfinex US$24.68 -> $754.47 元
  • 台股獲利 $$10,759 元

這個月的斜槓收入為
$$11551.45 / 50,000 = 23.10%

[||||______ 23% __________]

目前看起來 AdSense 那一塊真的太少了😂需要好好思考一下怎麼增加那一部分的收益🤔️
而 11 月還會領到元大高股息 0056 的現金股利,希望台股獲利可以穩定👌

Archie 的斜槓記錄 2019-09

這個月 Archie 的斜槓記錄又來啦!

AdSense

廣告部分,九月份上架了兩個 App;
一個是 iOS 13+ 的匯率計算機、一個是 Flip clock,而流量都還是十分低的狀態,不過金額比上個月多了 US$ 1.2,來到了 US$ 2.53 。

file

Bitfinex

而九月份的放貸收入為 US$ 30.33,受到了虛擬貨幣價格走低的影響,這部分是比上個月來得少的,少了 US$ 1.35。

file

台股獲利

這個月領了合作金庫的股利 4,653 元,以及買賣其他股票小賺了 985 元。

總收入

加上目前美金匯率也降到了 31,使得總獲利其實沒什麼成長。

  • AdSense US$ 2.53 ➡️ $78.43
  • Bitfinex US$ 30.33 ➡️ $940.23
  • 台股獲利 $5,548
  • 額外收入 $1,500

這個月斜槓收入為 $8,066.55

8,066.55 / 50,000 = 16.1331 %

[|||_______ 16% __________]

不過十月份印象中沒有股利可領,下一篇大概會少上許多吧😭

雙 NP:中華電信➡️台灣大哥大➡️中華電信 v2

繼上次雙 NP 之後,合約又來到了即將到期的時候,而今日因昨晚發燒請了病假,中午狀況好轉後便順道處理了合約的問題。

這次打算申辦的是

file

每月費用大約如下
699 - 7,000 / 30 = 466 元

大地遊戲開始

2019-09-27 12:56 中華電信

由於我的合約到期日為 10/03,故要先到中華電信進行提前解約並繳納提前解約終端設備補貼款(我的部分是 106 元)

2019-09-27 13:01 台灣大哥大直營門市

告知從中華電信攜碼轉預付卡,而將於 2019/9/28 開通台灣大哥大門號(可以接電話、沒網路)

2019-09-27 13:10 地標網通

帶著前面的收據和申請書來申請,而中華電信的合約內容比較多,所以簽署了比較多份文件。
將於 2019/9/29 恢復成中華電信門號🎉

全部在羅東跑完大概半小時內可以處理完畢,再來就是等各家電信開通服務即可!

其他方案可以到地標網通查詢,或是其他通訊行做詢問。

如何更改模擬器上的狀態列

這篇就來談談我是如何更改模擬器上的狀態列🎤

在 Xcode 11 Beta 3 以前,我是使用 SimulatorStatusMagic
而今天要弄截圖的時候發現,原來在 Xcode 11 Beta 4 之後,有內建的使用方法!

我喜歡讓 App store previews 上的時間顯示我自己的生日🎂算是一個小巧思(但沒人想知道)

而現在可以透過內建的指令來完成這件事,其中你可以使用下列這些

xcrun simctl status_bar

file

像是更改目前開著的模擬器時間:

xcrun simctl status_bar booted override --time "02:01"

成果圖:
file

而若是你的 Xcode 版本是 6 - 10 的話,就繼續使用 SimulatorStatusMagic 吧👌

Archie 的斜槓記錄 2019-08

這篇是什麼?

這篇文章的內容並不會圍繞 iOS 或是 Swift 等,而是投資理財的部分,其中並不會有什麼教學或是分析,單純只是我這個月的損益總結而已。

2019 年 8 月份總結

Adsense

其實我一直沒有在看這方面的收入,不過看來要加把勁在廣告上才是💪
大多數都是從一、兩個我沒有在維護的 App 來的⋯⋯
九月份會開始掛上網站的廣告和看能不能在 iOS 13 正式版上線的時候,
將一個由 SwiftUI + Combine 所編寫的 side project 弄上架💦

file

Bitfinex

我有在 Bitfinex 搭配 Coinlend 進行放貸,並在 8/9 加碼了 $ 50,000 元進去
八月份的報表大概如下
file
共獲利了 USD $ 31.68

台股股利

這個月領了三次股利,共計 $ 1,596 元

八月份總收入

  • Adsense USD $ 1.33
  • Bitfinex USD $ 31.68
  • 台股股利 $ 1,596 元

共計 $ 2,629.87 元

斜槓率

這是我自己給的定義,簡單來說就是當每個月的額外收入達 $ 50,000 元;
每年額外收入達 $ 600,000 元時,就是可以辭去正職工作的時候(不知道要到什麼時候⋯⋯)

2,629.87 / 50,000 = 5.25974 %

[|_________ 5% __________]

再繼續努力,九月底再來記錄吧!

Get ETH balance and tokens balance

前言

最近都在處理區塊鏈相關的問題,其中一個就是怎麼直接透過節點(****.infura.io)來取得 ETH 和其他 ERC-20 的地址餘額(balance)。

JSON RPC

ETH 節點所使用的 request body 是依照 JSON RPC 的方式,也就是我們所使用的 request path 都是相同的,像是主要的 https://mainnet.infura.io ;不同的是,我們可以透過不同的 body 內容來區別不同的需求。

基本的 body 格式

    "jsonrpc": "2.0",
    "method": "method name",
    "params": [],
    "id": 1
}

取得 ETH 餘額

取得 ETH 餘額的方式較為單純,節點有提供一個 method 是 eth_getBalance,使用起來如下

{
    "jsonrpc": "2.0",
    "method": "eth_getBalance",
    "params": ["你的 ETH 地址", "latest"],
    "id": 1
}

其中這邊的 latest 意思是指向最新的那個區塊取資料的意思;
我們便可以得到 response:

{
    "id":1,
    "jsonrpc": "2.0",
    "result": "0x0234c8a3397aab58" // 158972490234375000
}

其中注意到一點是,result 所回應的是你這個地址有幾聰的 hex 字串,所以當我們取得的時候得注意一下。

ERC-20 的餘額

而 ERC-20 的餘額就沒有上述那麼直覺的取得方式了,我們需要透過別的 method 來完成這個動作。
這邊我們只是需要取得餘額,而沒有更新合約的狀態,所以使用 eth_call 這個 method。

{
    "jsonrpc": "2.0",
    "method": "eth_getBalance",
    "params": [
    {
        "to": "Token 的 contract address",
        "data": "data"
    },
    "latest"
    ],
    "id": 1
}

這邊的重點便是 data 的部分,它的組成為
0x + 8 bits + 64 bits
其中 8 bits 是由 function signature hash 的結果取前 8 bits;
我們這邊所使用的 function 名稱是 balanceOf(address),去做 Keccak-256(SHA-3)hash 可以得到
70a08231b98ef4ca268c9cc3f6b4590e4bfec28280db06bb5d45e689f2a360be
而前 8 bits 便是 70a08231
後 64 bits 則是所要查詢的 ETH 地址,
000000000000000000000000 + 要查詢的地址 40 bits
所以組成起來的 data 欄位就會是:
0x70a08231000000000000000000000000 + ETH 地址
這樣就可以取得相對應的 token 餘額了。

BIP-39 Mnemonic validate

前言

最近處理了一些加密貨幣的問題,其中一個是助記詞的驗證,這邊將會解釋助記詞的生成和驗證方式。

生成助記詞

首先我們這邊所介紹的是助記詞生成方式,先建立一個 128 bytes 的隨機序列,也就是隨機產生 16 個 UInt8 的序列;
主要有分成 128、160、192、224、256 bits(每 32 bits 做為一個區間),而下列會以 128 bits 作為流程解釋。

對隨機序列加密(SHA256)

我們對剛剛所產生的序列做 SHA256 加密,便會得到由 32 個 UInt8 所組成的 Array。

Checksum

用來驗證助記詞是否正確的方式是透過 Checksum 來辨別,而 Checksum 的 size 為序列的長度 / 區間,如我們這邊所提及的 128 / 32 = 4;
意思便是剛剛所加密完的序列,我們取前面 4 bytes 的數值當作 checksum。

產生助記詞

而剛剛的隨機序列(128 bits)加上 4 bits 的 checksum 組成 132 bits,接著我們每 11 bits 作為一個分隔,也就可以得到 132 / 11 = 12 個數字。
而每 11 bits 作為一個分隔的意思也意味著數字的區間落在 0 - 2047 之間,也就是為什麼 12 字的助記詞所支援的單字庫數量為 2048。
接著就到詞庫裏頭撿取相對應 index 的字詞來組成助記詞。

驗證助記詞

驗證的方式就是將上述的流程反過來做,我們先講助記詞轉成詞庫的 index 順序;
接著看最後 4 bits 的內容,也就是這組助記詞的 checksum。
而前 128 bits 以 8 bits 作分隔,接著以 SHA256 加密,判斷前 4 bits 是否和剛剛提及的 checksum 相符。

Change login shells without chsh

前言

最近心血來潮更新了 brew,其中我正在使用的 shells - zsh 也一併更新了,才發現當初在從 bash 轉到 zsh 的時候有指定到版號的部分⋯也就是長得像這樣

/usr/local/bin/zsh-5.6.1

zsh 一更新之後,我的 iterm2 便很合理地打不開,因為找不到 login 的 shells;
當初我是在 bash 裡頭使用 chsh 來變更

chsh -s $(which zsh)

如今打不開 iterm2 該如何更改呢?

使用者與群組

首先先到 使用者與群組

並先解鎖來得到更改的權限

就可以按住 control 並點擊使用者,就會出現 進階選項 可以選擇

最後就可以在 登入 shell 那欄更改即可!

AWS EC2 with WordPress

前言

Vultr

這個網站原本是在 Vultr 上開一台機器,每個月大概的費用為 USD $6 - 7 元之間,並利用 Certbot 自動更新 SSL 憑證。但後來發現不太會維護那台機器,時常因為記憶體造成資料庫錯誤,每隔兩三天就得去手動重新啟動來解決問題,乾脆就搬家到 WordPress.com 的服務。

WordPress.com

WordPress.com 的好處就是全部幫你處理好好的,然後我使用的是個人版的方案;NT$ 130 / 月,便有提供轉址的功能和一年份免費的網域。不過由於我自己是向 PChome 買 Archie.tw,所以主要是為了轉過去而付費。

但使用服務和自己開一台機器的差異性就在於彈性,像是安裝外掛便被放在商務版的功能之中,而費用為 NT$ 799 / 月。

這樣一用也用了一段時間,直到近期註冊了 AWS 的服務,便決定搬移到 AWS 上。

AWS

在 AWS 上新註冊的用戶可以擁有一年的免費方案,而這個網站目前使用到幾個 AWS 服務分別為

  • EC2
  • Load Balancer
  • Certificate Manager
  • Route 53

這邊來介紹我的流程:

Key Pairs

首先我們先到 EC2 的頁面選擇 NETWORK & SECURITY ➡️ Key Pairs 來建立一組 Key pair,用於之後連接到 EC2 instance

EC2

透過 AWS Markeyplace 開一台新的 instance,使用 WordPress Certified by Bitnami 搭配 t2.micro 的免費方案;而之後若有收費的時候,約為 USD$ 0.012 / 小時,也就是一個月 USD$ 8.64 / 月。
一路照著步驟走,若你本身沒有其他服務要規劃的話,後續的動作都不需要做任何調整,就可以開好一台裡頭已經安裝好 WordPress 的 EC2 了。

這時候你就可以使用那台 EC2 的 Public IP 來開啟你的 WordPress 了!

使用者

在網址的最後加上 /admin 可以開啟管理後台,預設的使用者名稱為 user,而密碼的部分可以透過 EC2 Actions ➡️ Instance Settings ➡️ Get System Log 來查看,裡頭會有標註出密碼的欄位。

綁定個人網域

我們需要透過 Route 53 來處理個人網域的綁定動作,並使用 Load Balancer 和 Certicate Manager 來處理 HTTPS 的連線。

首先先到 Route 53 的 Hosted zones 建立一個 Hosted Zone 備著,其中你會需要將 NS 帶入到購買網域的管理頁面去設定,並進行 Certificate Manager 建立 SSL certificate。

建立憑證的時候,會需要將 CHAME 帶入到 Route 53 裡頭,再來建立一個 Load Balancer 來取得 DNS name,這時候再填入到 Route 53 裡頭便完成了 AWS 這部分的建構。

最後還需要使用最前面所建立的 Key pair 連線到 instance 上,來開啟 HTTPS 的功能。

Bitnami WordPress 詳細的 SSL 圖文教學

⚠️ 幾個需要注意的地方

  • Key Pairs 需要建立在 EC2 instance 之前,且弄丟了你就無法連回去那台 instance 了
  • Route 53、Certificate Manager CHAME 那些設定是需要一些時間轉移的
  • Route 53 和 Load Balancer 是需要收費的功能

整體費用的部分我一個月收再來更新這網站一共得支出多少在 AWS 上,處理完這個之後就可以來補上前陣子的 iOS 心得了!

POSTMAN - Pre-request script

POSTMAN 除了可以發送 request 到 server 之外,也有提供 pre-request script 的功能,讓我們可以撰寫 script 來進行一連串的測試。
舉個例子,我們有三支 API,邏輯為 名稱(Request body)【Response body】:

  • 登入(帳號、密碼)【Token】
  • 取得使用者的消費紀錄列表(Token)【Array<Receipt ID>】
  • 取得單筆消費紀錄(Receipt ID)【Receipt】

在沒有撰寫 pre-request 之前若要取得 Receipt 的話,我們得要先呼叫 登入,接著手動複製 Token 到 取得使用者的消費紀錄列表 的 request body 裡頭,然後再複製⋯⋯(你們應該懂)
這邊就來教教如何先寫好 script,之後只要按最後你想得到的那支 API 就行了!

let account = 'account'
let password = 'password'
let index = 0
pm.sendRequest({
    url: 'https://Archie.tw/login?account=' + account + '&password=' + password,
    method: 'get'
}, function(err, response) {
    let token = response.json().token;
    pm.sendRequest({
        url: 'https://Archie.tw/getReceiptList?token=' + token,
        method: 'get'
    }, function(err, response) {
        pm.environment.set("receiptIdentifier", response.receiptIdentifier);
    });
});

接著在 Params / Body 那邊就可以使用剛剛所定義的環境變數({{receiptIdentifier}})了!
然後請不要真的打範例的 url,是不會有東西回給你的(真的)。

Bitnami