[nodejs] nvm is not compatible with the npm config “prefix” option: currently set to ….

有次重開電腦後,terminal 就一直噴以下這個錯誤 nvm is not compatible with the npm config “prefix” option: currently set to “/usr/local” Run `npm config delete prefix` or `nvm use –delete-prefix v8.8.1 –silent` to unset it. 初步看起來像是 nvm 的 PATH 跑掉了,查了一下資料,在這紀錄一下如何解決 nvm uninstall v5.7.1 && nvm install v5.7.1 通常是某個版本的 node 發生了路徑找不到或是執行上的錯誤,重裝即可重新設定。   參考資料: https://github.com/creationix/nvm/issues/1245  

Continue reading


[http] Last-Modified, If-Modified-Since, ETag 和 If-None-Match 介紹

在上一篇介紹了  http 關於 cache 的 header ,但當 cache 過期或是需要 revalidate 時又是如何運作的呢? 此篇將介紹幾個常見的 revalidate 的 http header Last-Modified, If-Modified-Since (RFC 7232) request If-Modified-Since: 上次 Last-Modifed 回傳的時間 用於做 revalidate 時,檢查檔案在指定時間後是否有被變更,若有回傳 200 及新的檔案內容,反之則回傳 304 (Not Modified) 即可。 response: Last-Modified: 檔案在伺服器最後修改的時間 在 response 帶回此檔案上次在伺服器被修改的時間,以備做 revalidate 時發送的 timestamp。 實際上的使用情境會像是以下步驟: client 發 request 與伺服器要 image.png 檔案 server 回傳 Cache-Control: max-age=86400, no-cache ,  Last-Modified: Wed, 21 Oct 2018 […]

Continue reading


[http] http header, Cache-Control, Expires 用法說明

在優化網頁速度時,常會使用 cache 的機制來減少 server 負載, client 資源等待時間。 比如 server 前面會架一台 cdn 服務, cache 一些靜態檔案…等等。 server 可能會使用 redis, 來 cache 需要做大量計算的結果,降低負載。 這篇則是要介紹有哪些 http header 可以善用在 client 端(瀏覽器)來優化網頁速度,檢查是否有成功 cache 可以參考此篇文章 Expires 最早在 http 1.0 就存在的 header, 使用方式為 Expires[date] (日期格式必須符合 RFC1123) 例如: Expires: Wed, 5 Mar 2018 11:00:00 GMT 用法為設定一個確切的日期,當 client 端時間小於 response header (Expires) 時間時,則會使用 cache. 由於 client […]

Continue reading


[chrome] 如何檢查 request 是否有正確的 cache

最近在看 web front-end cache 相關的 http header 優化,順手寫了幾個測試網頁驗證。 順便來記錄一下如何驗證 chrome 瀏覽器有成功的 cache 了 request 打開瀏覽器的 dev tool network 頁籤並重新整理網頁後可以看到所有的 request, 如下圖 從 Size 欄位可以看到此頁所有的 request size, 若是從 cache  取得的則會顯示 (from disk cache) 點開此 request 的詳細 header 中也可以看到 cache (from disak cache) , 如下圖 另外值得注意的事,當在測試 cache 時,建議不要直接以網址列輸入直接測試 例如: 想測試 https://xxx/jquery.min.js 是否成功 cache 建議使用 https://xxx/index.html 裡面的 script src 去引入 jquery.min.js 在網址列輸入 […]

Continue reading


[mysql] InnoDB: Table `mysql`.`innodb_table_stats` not found.

前陣子裝了 mysql,但似乎沒裝完整,導致執行 mysql 機器負載總是衝很高。 看了一下 mysql error.log InnoDB: Table `mysql`.`innodb_table_stats` not found. Table ‘performance_schema.session_variables’ doesn’t exist 嗯…連 show variables; 都無法執行 查了一下相關資料,用以下步驟即可解決。 強制更新 mysql mysql_upgrade -u root -p –force 重開 mysql sudo service mysql restart   參考資料: https://stackoverflow.com/questions/31967527/table-performance-schema-session-variables-doesnt-exist    

Continue reading


[nginx] 錯誤,client intended to send too large body

之前因為把機器上原本的 apache 的 web server 換成 nginx,遇到了這個錯誤  client intended to send too large body 查了一下資料發現造成的原因為 web server 接收 request body 的大小設定 apache: LimitRequestBody 預設為 0(unlimit) nginx: client_max_body_size 預設為 1m 根據以下步驟更改一下 nginx 設定,就沒問題了 vim /etc/nginx/nginx.conf sudo sercie nginx reload   參考資料: https://craftcms.stackexchange.com/questions/2328/413-request-entity-too-large-error-with-uploading-a-file

Continue reading


[vscode] experimental support for decorators is a feature that is subject to change in a future release

在 visual studio code 使用 ES7 (ECMA Sciprt7) 的 decorator 時,可能會遇到 experimental support for decorators is a feature that is subject to change in a future release的語法錯誤提示 至於 decorator 是什麼在這篇就不多加介紹(可參考這篇),不過寫過 python 的人應該會有使用過。(目前 ES7 的 decorator 只支援 class) 這是因為預設 vscode 並不支援 decorator 的語法檢查,需要手動打開支援 decorator 的語法功能。 在 project 目錄創建 tsconfig.json 新增以下內容 重新開啟 vscode,就不會出現語法錯誤提示了!   參考資料: https://ihatetomatoes.net/how-to-remove-experimentaldecorators-warning-in-vscode/  

Continue reading


[nginx] 移除不必要的預設 header,”Server” 版本

預設安裝好 nginx 會有 web server 版本資訊的 header 如下圖   為了資訊安全上面的考量,建議將 /etc/nginx/nginx.conf 的 server_tokens off; 打開 這樣就不會在 header 顯示 nginx 的版本資訊。   如果你想進一步將此 header 完全移除掉的話,可以考慮裝 nginx 的更改 header module 這樣就可以設定 more_clear_headers Server; 移除此 header。   參考資料: https://serverfault.com/questions/214242/can-i-hide-all-server-os-info https://geekflare.com/wp-content/uploads/2016/05/nginx-default-header.png

Continue reading