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

BigQuery SQL String Split

相信大家對 split 都不陌生,這可說是程式設計師最常用的十個函式之一,在 BigQuery 也有 split,但因為是 SQL 的關係用法和一般程式語言不太一樣,此外 BigQuery 又分成 Standard SQL 和 Legacy SQL,而這兩種版本雖然都有 split,但使用方式更是截然不同。

閱讀全文《BigQuery SQL String Split

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 – 內框線