bash: warning: setlocale: LC_ALL: cannot change locale

用 SSH 登入遠端伺服器時,看到「-bash: warning: setlocale: LC_ALL: cannot change locale」的錯誤訊息嗎? 會遇到它是因為 SSH 連線上遠端主機時,會自動將本機的 LC_* 變數(locale)傳送一份到遠端主機,如果伺服器上不支援你指定的語系,就會出現「-bash: warning: setlocale: LC_ALL: cannot change locale」錯誤啦!

閱讀全文 bash: warning: setlocale: LC_ALL: cannot change locale

Python 3 在 Windows 命令提示字元輸出時遇到 CP950 錯誤

今天在教學弟妹寫程式時,用 Python 印出一段中文字到命令提示字元,卻遇到「UnicodeEncodeError: ‘cp950’ codec can’t encode character」這個錯誤,嘗試了各種方法都無法解決,最後爬了文章才搞懂是怎麼回事。

看到這段錯誤,有經驗的開發者直覺就會認定是字串裡面有特殊字元,立馬給它加上 ignore 參數卻沒有效果,我遇到的情況檢查後發現是一個日文字,但眾所皆知 Python 3 預設使用 Unicode 字串,不應該會有無法輸出的問題才對,又不是萬惡的 Big5…

閱讀全文 Python 3 在 Windows 命令提示字元輸出時遇到 CP950 錯誤

解決 HTML Anchor 內文被選單遮住的問題

HTML 的 Anchor 錨點功能十分方便,當網頁過長時可以透過 Anchor 讓訪客快速的移到指定段落,這樣的手法在許多技術文件、部落格都有出現,如果你看到類似 https://coder.tw/?p=123#section1 的網址就是應用 HTML Anchor 的特性,這樣的特性雖然方便卻也帶來一些問題,最常見因為網頁最上方有浮動選單,當訪客點擊 Anchor 連結進到網頁後,雖然瀏覽器有自動捲到指定章節,但卻有部分文字被選單遮住,我始終很煩惱這問題,今天恰好在閱讀 Facebook 技術文件時發現他們的解法蠻不錯的。

閱讀全文 解決 HTML Anchor 內文被選單遮住的問題

Google Analytics Exception Tracking

其實在 Google Analytics 有隱藏版例外追蹤的功能,透過 Google Analytics 搜集網站前後端(或 App)的例外訊息後加以分析,以我這次的應用場景舉例,當使用者填寫表單並送出後,我會驗證使用者填寫的資訊是否有錯誤,如果有忘記填某個欄位,就會將錯誤訊息送回 GA,之後到 GA 檢視錯誤訊息的出現次數,某種程度上可以猜測是否介面設計不好導致使用者漏了該欄位。

閱讀全文 Google Analytics Exception Tracking

分享到臉書的網址總是不如預期的呈現嗎? 來看看該如何幫網站做好 Facebook 優化吧!

相信對每位站長而言,Facebook 都已成為和 Google 同樣重要的流量來源,過去我們為了搜尋引擎做了許多 SEO 優化,但你知道嗎? 其實 Facebook 也有推出一份《網站與行動應用程式的分享最佳作法》闡述該如何調整網頁,讓你的網頁被使用者分享到 Facebook 時可以用最佳的方式呈現,在這篇文章中會分享我在個人部落格所做的嘗試。

閱讀全文 分享到臉書的網址總是不如預期的呈現嗎? 來看看該如何幫網站做好 Facebook 優化吧!

How to Prevent JS Input onFocus Event Fire After Page onFocus

最近的工作是在網站中置入 Google Analytics 的使用者事件追蹤程式碼,我透過 HTML Event 的做法將程式碼掛在 Input 上面,只要使用者點擊特定的欄位、按鈕就會發送一筆記錄到 Google Analytics,這樣的做法沒有什麼問題,但我發現當使用者點擊 Input 欄位後如果切換到其他網頁(Chrome Tabs),當使用者在切換回我的頁面(Page onFocus)時,Input onFocus 事件卻被自動觸發了!

閱讀全文 How to Prevent JS Input onFocus Event Fire After Page onFocus

Visual Studio Code – 貼上程式碼後自動整理縮排

從 Sublime Text 切換到 Visual Studio Code ( 以下簡稱 VS Code ) 的開發者想必都很懷念「Paste and Indent」的功能吧! 寫程式時不可免的需要複製貼上程式碼,貼上後縮排往往會亂掉,必須要手動在整理一次,而在 Sublime Text 有提供所謂的 Paste and Indent 功能可以讓你貼上的程式碼自動符合當前檔案的縮排方式,而 VS Code 也有類似功能,但原理不太一樣且需要到設定檔上開啟。

閱讀全文 Visual Studio Code – 貼上程式碼後自動整理縮排

JavaScript 判斷變數是否等於 NaN

在 JavaScript 實在有太多奇怪的眉眉角角了,今天因為把字串轉數字用到 parseFloat,如果進去的參數無法轉成數字則會回應 NaN (Not a Number),我就寫了如下語法來判斷:

var score = parseFloat(prompt("Score:"));

if(score === NaN) {
    console.log("Not a Number");
} else {
    console.log(score);
}

這段程式碼乍看之下理所當然,就像 undefined、null 一樣可以直接相等運算,誰知道完全不如預期。

閱讀全文 JavaScript 判斷變數是否等於 NaN

怕訪客複製你的文章嗎? 讓 JS 自動加上提醒文字或禁用複製!

在許多內容網站,都會有所謂的「複製時自動加上原文網址」機制,例如魔境歌詞網、知乎等等,更有的網站直接禁止使用者複製文字,要達到這些功能不困難,只需要幾行簡單的 JavaScript 語法,但需要思考網站是否真的需要加入這樣的功能,當正常訪客複製並轉貼文字到 Facebook,對網站真的造成損害了嗎? 此外如果真的要防止訪客複製文字,光憑著這些防君子不防小人的手法,到底是保護了利益還是讓網站變得更難使用?

閱讀全文 怕訪客複製你的文章嗎? 讓 JS 自動加上提醒文字或禁用複製!

返校 Detention 第四章 斷掉的教室通過方法

在返校最終章的第一關,和靈魂碎片對話後可以交換身份,並需要穿過斷掉的教室抵達另一道門,這關不得不說真的有難度,如果你也跟我一樣卡關了,那就一塊來看看究竟該如何破關吧!

閱讀全文 返校 Detention 第四章 斷掉的教室通過方法