Why Python No Output With Tee

最近用 Python 寫了個 Slack Bot,因為偷懶所以我把 log 訊息直接 print 出來後用 tee 指令存到檔案裡,這樣就可以同時在 console 看到運作的資訊,又能將這些資訊保留到檔案裡,不過在用 Python print() 搭配 tee 時我卻發現我指定的 log File 常常沒有內容,或是該出現的訊息很晚才出現,研究後才知道原來 Python 的 print 函式會判斷輸出的環境,如果是輸出到 Shell 的話會立刻輸出,但如果不是輸出到 Shell 則會先存在 Buffer,等緩衝區滿了再一次輸出,當你把 Python 搭配 tee 使用時就會遇到緩衝區的問題,導致預期的輸出沒有及時出現在螢幕和檔案中。

繼續閱讀 Why Python No Output With Tee

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

當 GitLab 誤刪資料庫,我們該如何管好 rm 指令?

不小心把根目錄刪除這種慘劇,我們從小都當笑話聽,但可千萬別以為這只是個笑話! 光小弟自己就看過無數朋友的電腦發生這種慘劇,而今天 GitLab (類似 Github 的服務)的工程師也親身示範了 rm -rf 指令的莫大威力…… 他們把 Production Server 的 Database 砍掉了…… 過去一直覺得這種慘劇不會發生在自己身上,但現在連 GitLab 這種有上萬人在用的服務,都因為大意而發生這種事情,也讓我研究了一下該如何避免,這邊就來聊聊我們該如何把 rm 指令管好吧!

繼續閱讀 當 GitLab 誤刪資料庫,我們該如何管好 rm 指令?

Generate Large File on Linux/macOS

有時候為了測試網路速度、硬碟讀寫,或是程式的運作效能等等,我們會需要產生指定大小的檔案作為測試之用,這時大家肯定腦海都浮現出 dd 這傢伙對吧! 但使用 dd 產生檔案時,是否覺得很慢呢? 此外你知道除了 dd 之外,還有 truncate、fallocate 這兩個傢伙可以使用嗎? 這邊會簡單說明如果要產生大檔案,你有哪些方法可以使用、如何使用,以及他們之間的差異。要特別注意,這邊產生的檔案其內容都是無意義的。

繼續閱讀 Generate Large File on Linux/macOS

如何在 Terminal 計算指令執行的時間?

你有想過幫你在 Terminal 執行的指令計算執行時間嗎? 前陣子因為工作上的需求,用各種指令兜了一個檔案分類工具出來,但因為對效能有嚴格的要求,需要在指定時間內完成,所以查到 time 這個好用的指令可以幫我們計算指令的執行時間。

繼續閱讀 如何在 Terminal 計算指令執行的時間?

手動編譯、安裝PHP Extension (Linux)

如果要幫PHP安裝Extension的話要怎麼做呢?很多人都會回答Pecl,這的確是一個很方便的安裝Extension的方式,不過如果你的Server上面沒有Pecl怎麼辦呢? 然後又因為某些原因不能安裝Pecl,這時候你就只好手動去編譯、安裝囉~ 而這篇文章也就是要教大家如何手動編譯PHP Extension在Linux上面

繼續閱讀 手動編譯、安裝PHP Extension (Linux)

Mongodb 文件式的NoSQL系統 & Windows、Linux安裝教學

前一陣子因為Ben大的指導,所以踏進了我一直很有興趣可是都沒有實際常試過的NoSQL世界,而我接觸到的第一個NoSQL System(也是目前唯一會的)就是Mongodb,原本看了很多介紹NoSQL的文章,我還以為NoSQL跟一般的SQL差很多,實際接觸Mongodb之後才發現其實兩者很像,只是在原理上有點不同,還有效能更好,不過鄉對應的,有些SQL可以做到的事情,NoSQL就不能達到,這部份就要看大家的取捨、需求,NoSQL的部份不是這篇文章要講的,這篇文章要講的是介紹Mongodb還有教大家怎麼安裝在Windows上面

繼續閱讀 Mongodb 文件式的NoSQL系統 & Windows、Linux安裝教學

如何在Linux裡面手動安裝Python並且避免yum不能運作的問題

之前曾經寫過一個程式可以自動備份Linux裡的重要資料並且上傳到Google Storage,當時用的語言是Python 2.7,但是Linux裡面內建的Python是2.4,而且就算你用yum去進行升級,最高也只會到2.4,這時候你如果想要安裝更新版的Python就只能自行編譯了,下面將用Python 3.2進行教學

繼續閱讀 如何在Linux裡面手動安裝Python並且避免yum不能運作的問題