PageSpeed - 減少無用的 CSS
說明使用 PageSpeed 或 Lighthouse 測試網頁的時候,很容易遇到這個錯誤,原因也如字面上一樣的淺顯易懂,就是 CSS 過大。可參考官方提供的如何減少無用的 CSS 建議作法。 解決方法我整理了以下幾種解決方法 壓縮 CSS 減少無用的 CSS 拆分檔案 壓縮 CSS由於有另一個檢測項目就是壓縮 CSS,所以文件沒有寫到,這邊就大概提一下。現在很多框架和工具都可以壓縮 CSS,所以也算是有效又簡單解決方案之一,就不做過多說明。 減少無用的 CSS如同字面上和官方文件所說,找出並刪除無用的 CSS。然而實務上常常會直接使用 CSS 框架,例如 Bootstrap,很容易就無法通過這項檢測。在允許的情況下,我們可以嘗試只引用需要的部分,例如原本在 SCSS 中引用 Bootstrap 可能是這樣寫: 1@import "bootstrap"; 改為依據實際情況引用需要部分 12345678910111213141516171819202122232425262728293031323334353637@import "bootstrap/f ...
非同步載入 CSS
本篇文章說明無樣式內容閃爍 FOUC(Flash of unstyled content)、渲染阻塞 (render-blocking) 的問題,以及如何非同步載入 CSS。 無樣式內容閃爍英文為 FOUC(Flash of unstyled content),這是 HTML 載入後就先顯示出來,之後 CSS 才載入進來,會看到沒有套用樣式的 HTML 畫面。而載入 CSS 可能沒有很久,看起來就像閃了一下。除了這個情況之外,現在有很多網頁也有透過 JavaScript 來載入畫面,也會有類似的問題發生。 例如一個使用 Bootstrap 的頁面放入一個按鈕 1<a class="btn btn-primary" href="https://www.google.com/">Google</a> 如果發生了 FOUC 會有一瞬間看到 當樣式載入後才會看到正確的結果 渲染阻塞為了避免上面的情況,瀏覽器使用渲染阻塞 (render-blocking) 來處理,會將一些渲染阻塞資源載入後才開始渲染畫面,而 CSS 是渲染阻塞資 ...
FTX 填寫索賠證明
本篇文章說明如何填寫 FTX 索賠證明,從 FTX 點擊[提交索賠證明]後,會跳到 Kroll 平台進行填寫,首先會看到以下畫面 點擊 [View Scheduled Claim] 會進入以下畫面,看到自己的帳戶資料。這是我完成後補的截圖,第一次進來左邊應該是 Not Started。 點擊 [Next] 進入主要的填寫畫面,最上面會有一些說明和選擇你使用是哪一個的 FTX 交易所。ftx.com 預設會自動選擇 FTX Trading Ltd. (d/b/a “FTX”) (Case No. 22-11068) ftx.us 預設會自動選擇 West Realm Shires Services Inc. (d/b/a “FTX US”) (Case No. 22-11071) 下面會列出你持有的法幣、加密貨幣和 NFT 的資產,每個章節都會問你是否有額外要列舉的,每個項目都會問你是否同意這個數字。沒有問題的話就是全部不列舉並同意數字,法幣部分: Do you agree with the Scheduled Quantity? 選 Yes D ...
使用嘉信理財投資美國債券
本篇文章分享使用嘉信理財投資美債的方法、資訊和使用經驗。 債券首頁選擇在 Trade 類別下的 Bonds 會看到以下的畫面,他會直接列出不同類別的債券和天期的利率。 時間由左至右逐漸增加,從 3 個月到 30 年以上。 債券列表例如點擊了 U.S. Treasuries 會看到下面畫面,預設用 YTM 排序,越上面利率越高 這邊列幾個重要的欄位 Coupon:利率。每年的利率,一般半年發一次利息。例如 2%,買入面額 $100 每半年會拿到 $1。頻率要看債券詳細資訊。 Maturity:到期日。 Price:價格。面額都是 $100。 Min:最少一次買多少單位。一個單位 $1,000。 YTM:到期殖利率。如果放到到期,換算每年的利率為多少。 Accrued Interest:應計利息。當債券是有利息的時候會出現這個項目,要額外多付一筆利息。這概念用個例子說明,假設每半年會有利息,但賣方持有了五個月,那買方要先付那五個月的利息,不然買了馬上就收到利息不太公平,債券不像股票有除權息。 上面的圖最左邊的 Action 欄位,下方都是 View Only,這是因為目前不在交易時段。 ...
GCP Cloud Monitoring 減少流量和費用
Cloud Monitoring 可以用來監控系統狀態,並透過它來寄出警示通知。主要用來監控硬碟容量和一些自訂狀態,於是在所有機器裝上了 Ops Agent 來監控硬碟狀態。但後來發現帳單的費用驚人,於是研究了一下他的費用和如何降低成本。 費用首先了解一下 Cloud Monitoring 定價,平常用到的只有第一個項目 Monitoring 資料,這部分前 150 MiB 是免費額度,如果能夠壓低在這之下就可以免費使用。本篇文章也是針對這項目說明。 帳單點開帳單可以找到名為 Metric Volume 的項目,這就是 Cloud Monitoring 資料的費用。 可以看到月份的前幾天沒有這項目,大概在 5 號的時候才出現,這是因為前幾天是 150 MiB 的免費額度。可以看到後面每天都花費 $4.3 左右。這是八台主機的情況。 也可以看到多少流量被計算費用 流量從監控的[設定]頁簽中,在 GCP Projects 之下,展開專案名稱,可以看到流量報告。 在 Agent Metrics 最右邊點擊[在 Metrics Exploer 中查看],可以查詢每個時間的流量狀況。 不過這裡無 ...
GCP Cloud Storage 無法下載或複製
問題使用 GCP Cloud Storage 的網頁時,想把物件複製到別的地方,結果出現錯誤無法複製您的物件。 存取遭拒 直接點下載則是出現 12ForbiddenError 403 點擊物件進查看則出現:您必須具備其他權限,才能查看這個物件的中繼資料;請要求物件擁有者授予您「storage.objects.get」權限 (例如為您的帳戶授予身分與存取權管理 (IAM) 儲存空間管理員角色)。 使用指令複製 1gsutil cp gs://backup/20230529.gz gs://archives/20230529.gz 出現錯誤 12Copying gs://backup/20230529.gz [Content-Type=application/octet-stream]...AccessDeniedException: 403 [email protected] does not have storage.objects.get access to the Google Cloud Storage object. Permission 'storage.objec ...
Xapo 使用心得
2024-04-16 更新後來要求他們暫時開啟我的帳號,讓我領完錢再關閉,花了一些時間來回溝通,最後總算是解決。 2024-03-27 更新突然被毫無理由的關閉帳號,問他們也不說為什麼,錢現在還卡在裡面出不來,後續再更新狀態,不建議使用。 簡介Xapo 是一家直布羅陀的銀行,整合了 USDC、USDT 和 BTC 加密貨幣。會使用它主要是支援 USDC / USDT 等穩定幣之外,還有美金活存 4.1% 的特色。本篇文章會介紹他的一些功能和特色。 開戶條件 有效護照 至少存入 150 USD 年滿 18 歲 入金 加密貨幣部分: Bitcoin USDC:只有 ERC20,1:1 轉為 USD。 USDT:只有 ERC20,會轉為 USD。 法幣部分: USD 美金:只能 Xapo 內轉。 EUR 歐元:使用 SEPA,會轉成 USD。 GBP 英鎊:只能從英國銀行或使用 Faster Payment System,會轉成 USD。 7/15 測試轉入 USDT,大概過了二十幾分鐘才入帳,速度有點慢,匯率為 USDT 1.00 = USD 1 ...
使用 Web3.js 解析 Custom Error
之前的文章 Solidity 智能合約 - Custom Error 中提到如何在智能合約中使用 Custom Error,這篇文章延續這個主題,說明使用 Web3.js 在 call、estimateGas 和交易失敗時,如何解析 Custom Error。這裡使用 Web3.js 4.0.1 版本,在 Arbitrum Goerli 進行測試。 範例合約首先我們先準備一個合約如下: 1234567891011121314151617181920error EmptyError();error ErrorWithArgs(address user);contract MyContract { function sendEmptyError() external { revert EmptyError(); } function callEmptyError() external pure { revert EmptyError(); } function sendErrorWithArgs() external ...
使用 Ethers.js 解析 Custom Error
上一篇文章 Solidity 智能合約 - Custom Error 中提到如何在智能合約中使用 Custom Error,這篇文章延續這個主題,說明使用 Ethers.js 在 call、estimateGas 和交易失敗時,如何解析 Custom Error。這裡使用 Ethers.js 6.5.1 版本,在 Arbitrum Goerli 進行測試。 範例合約首先我們先準備一個合約如下: 1234567891011121314151617181920error EmptyError();error ErrorWithArgs(address user);contract MyContract { function sendEmptyError() external { revert EmptyError(); } function callEmptyError() external pure { revert EmptyError(); } function sendErrorWithArgs() exter ...
Solidity 智能合約 - Custom Error
本篇文章介紹 Solidity 中的 Custom Error 用法,包含定義錯誤、用法和錯誤處理的方式。 用法Solidity v0.8.4 之後新增這個功能,能夠用自訂的錯誤來回傳錯誤原因。在之前我們一般使用以下方式丟出錯誤: 1234567require(shouldPass, "MyError");// 或是if (!shouldPass) { revert("MyError");} 使用 Custom Error 用法如下: 123456789101112// 定義自訂錯誤error MyError();contract MyContract { function test() external { // ... if (!shouldPass) { revert MyError(); } // ... }} Custom Error 也可以帶參數 1234567891011121314// 定義自訂錯誤error M ...