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

Google Drive on macOS 預設簡體中文的解決方法

把 Google Drive 安裝到 macOS 後,猜測可能是程式的 Bug,明明我是正體中文的語系設定,但 Google Drive 卻顯示簡體中文,看著真的很不習慣,研究後找到解法分享給大家。

只要打開 Terminal 輸入以下指令,在將 Google Drive 重開即可變成正體中文:

defaults write com.google.GoogleDrive AppleLanguages '("zh-TW")'

BigQuery Federate Google Sheet Table Occur Access Denied Error

BigQuery 可以讓你把資料表和 Google Drive 的 Google Sheet 連結在一起,當 Google Sheet 有修改時資料表會立刻跟著修改,在使用這種 Federate Table 時有些人可能會遇到 Access Denied 的問題,當你在 WebUI 上查詢時沒有問題,但如果用 Command Lin Tool 的 bq 來查詢,會出現以下錯誤訊息:

Access Denied: BigQuery
BigQuery: No OAuth token with Google Drive scope was found

繼續閱讀 BigQuery Federate Google Sheet Table Occur Access Denied Error

如何用 Excel 快速計算不同級距的數量

在做數據分析時,總不免會將數據區分成不同級聚以便觀察,例如將學生分類成 80-100 分、60-80 分或不及格的,並計算在不同群內的學生人數以便進行分析,這時候 Excel( Google Sheets ) 的 FREQUENCY 函式就能幫上大忙啦!

繼續閱讀 如何用 Excel 快速計算不同級距的數量

BigQuery SQL Get First or Last Day of Month From Specify Date

In BigQuery, If you want get first day from a Date (or timestamp, datetime type) , for example, type “2017-05-24” and get “2017-05-01”, you can call UTC_USEC_TO_MONTH function in Legacy SQL, or DATE_TRUNC() in Standard SQL, In fact, BigQuery have a series function do these thing, Get First day, hour, week…..etc from a Date.

繼續閱讀 BigQuery SQL Get First or Last Day of Month From Specify Date

BigQuery SQL Get Random N Row Sampling

在做資料分析時,從資料裡面取隨機 N 列(抽樣)是很常見的需求,可能是抽樣觀察資料正確性,也可能是抽樣去作模型避免資料太多跑不動,其實在資料庫內用 SQL 進行抽樣十分簡單,以下就用 BigQuery Standard SQL 進行示範,Legacy SQL 的作法相同。

繼續閱讀 BigQuery SQL Get Random N Row Sampling

HTML 強制超連結下載檔案

現在的瀏覽器都很聰明,當網頁超連結的內容是純文字檔、PDF、CSS File 時,瀏覽器會很聰明的在瀏覽器預覽而不是下載,但有時候我們希望使用者直接下載而不是在瀏覽器檢視,例如之前到 jQuery 的官網下載 jquery.js 時,都會變成預覽,需要按右鍵另存新檔,但其實我的目的很明確是要下載檔案而不是檢視呀!

繼續閱讀 HTML 強制超連結下載檔案

CSS Inner Border – 內框線

這次在設計個人入口頁時因為想做出內框線(Inner Border)的效果,學到一種很聰明的寫法,提到 CSS Inner Border,直覺肯定是想到用 padding 或 margin 把盒子撐大,但其實這樣是行不通的,當你把盒子撐大時,框線也會跟著移動,無法做出內框線的樣式。

繼續閱讀 CSS Inner Border – 內框線