發表文章

目前顯示的是 1月, 2020的文章

提高程式碼品質 | 利用 Python Pre-commit 自動化檢測

圖片
為了提高之後協作專案的程式碼品質,這兩天在研究如何在 commit 前先自動檢查一些 coding style 或 syntax error, 這次會分享運用 git hooks、python 的 pre-commit framework 來自動化檢查的執行步驟:   一、安裝 Pre-commit 使用 pip 安裝: pip install pre-commit 二、撰寫 pre-commit 設定檔 可參考以下寫法,其中 hooks 的 id 可以從 此處 查找選用。 我選擇的有: 1. trailing-whitespace : 去除尾端的空白格 2. check-json:檢查所有 json 檔案格式 3. flake8 :執行 flake8 檢查 coding style 4. detect-private-key:檢查檔案中是否存在 private key 三、git commit 後即可自動檢查 設置完成後,每當執行 commit 指令,就會自動檢查所選的項目,下圖可看到通過就會呈現 Passed d ,沒通過就會出現 Failed  及錯誤訊息。 總結 透過簡單設置 pre-commit,希望在之後的協作開發專案上,能夠增加程式碼的質量,並且幫助 Code review 時不必再額外花時間檢查這些基本問題,更專注在邏輯上。 參考資料   用 pre-commit 提升程式碼品質 pre-commit [筆記] TreeHouse — Write Better Python 如果喜歡我的文章,想隨時收到最新行銷、技術分享,歡迎按 fb 粉專讚   或加入 LINE 官方帳號,接收最新文章通知

使用 docker 部署 Python Flask | 心得分享

圖片
上篇  畢業學分計算工具開發心得 | side project 的嘗試與迭代 有提到近期在做的專案,很高興不久前有找到 2 位學弟妹有興趣來往下做開發。由於他們比較少開發經驗,也促使我開始思考怎麼做能幫助他們開發更順暢。 目前想到了以下三點會優先執行: 1. 快速建置開發環境 2. 寫文件 3. 計算邏輯的模組化 這次文章想分享這次為了加速建置開發環境,研究了用 docker 來安裝 python、相關套件、以及啟動 Flask API: 一、安裝 docker 可以直接參考 docker 文件  來進行安裝,就不多贅述。  二、建立 requirements.txt 至 Flask 專案底下新增 requirements.txt 檔案,用來管理需要安裝的套件。 Flask==1.0.2 gunicorn==19.5.0 gevent==1.4.0 三、建立 Dockerfile 一樣在 Flask 專案底下新增 Dockerfile ( 不需有後綴檔名 ),稍稍說明一下他會做哪些事情: FROM python:3.6 MAINTAINER alansyue b123105@gmail.com COPY ./requirements.txt /app/requirements.txt WORKDIR /app RUN pip install -r requirements.txt COPY . /app CMD ["gunicorn", "-k", "gevent", "-b", "0.0.0.0:9000", "app:app"] 1. FROM python:3.6 :使用 python 這個 image 2. COPY ./requirements.txt /app/requirements.txt : 複製 requirements.txt 檔案 3. RUN pip install -r requirements.txt: 安裝 requirements.txt 裡面的套件 4. 最後用 gunicorn

畢業學分計算工具開發心得 | side project 的嘗試與迭代

圖片
最近用 Chrome Extension 實作了能夠計算長庚大學醫務管理學系的畢業學分工具,計算結果能夠呈現目前總學分、每個畢業門檻是否已經完成,還差哪些科目和領域未完成。 此擴充功能已經測試完畢,並且上線了,想來跟大家分享開發此工具的一些心得。 ( 很感謝長庚大學醫管三學妹 Carol 從第一版就協助參與及測試 ) 工具連結:https://reurl.cc/qDW4ay 緣起 當初為什麼會想開發此套工具呢?其實一直以來我都有在做一些 side project。只是有次與大學同學聊以前的事時,想到當初我因為誤算學分,通識課超修所以不列入畢業學分,因而差 1 學分就延畢了。我還記得那時我參加新北市電腦商業同業公會,資訊種子培訓計畫的海外參訪,在北京收到大學同學傳訊息跟我說:我差 1 學分延畢,雖然聽到想說:啊不然算了,反正那時已經找到工作了,好像也沒差。不過後來我還是有去上個體育課畢業。 想到這段荒唐的往事,於是我就想到假設每年都會要請學校一千多位學生確認自己有沒有通過畢業門檻,每個人花個 1 分鐘算好了,每年就浪費了那多人的時間,這不是交給電腦算就好了嗎? 於是我就開始構思要怎麼解決這個問題。 第一個 Prototype 照著 Lean Startup 提的 minimum viable product ( MVP ) 方法,我也不知道我的想法是不是真的有人會想用。於是我就想快速做個小成品,丟到市場上去測試。 一開始我就用了最簡單的方法,我寫了一隻爬蟲去把長庚大學醫管系、通識中心課程爬了下來,把他分類成課程名稱、學分數、類別 ( 必修、選修、通識 ),然後丟到一個頁面上讓使用者勾選,選完後用 ajax post 到後端計算,最後再把結果回傳呈現。 大致上的樣子就長這樣,一開始也就從手機版出發,用 Bootstrap 快速處理版面。然後部署到 Heroku,於是我就把他上線,拿去發在 Dcard 長庚大學版,查探大家的興趣。 網站連結 丟到 Dcard 上,收到的回應有超出我的預期,雖然沒有詳細計算,但觀察一下長庚大學版超過 30 - 40 愛心算是關注跟討論度蠻高的文章,我發佈的文章獲得 50 個愛心、8 則回應,還有收到一位學生來信希望取得原始碼做該系的開發,還有一位學生提供頁

解決無法在 Heroku 持續儲存靜態資料問題 | 使用 Redis 記憶體資料庫

圖片
前陣子幫朋友做了一個職缺自動通知的機器人,主要是用 Python 至指定頁面爬取職缺資訊,接著比對已經排取過的資料做排除,最後透過 LINE Notify API 來發送推播通知。 我把 Python script 部署在 Heroku 上,並透過 schedule 的 add-on 來定期執行。爬取過的資料原本我是打算用靜態檔來儲存,整理成 json 格式另存。 But ...... 我發現每次執行程式後,完全沒有將資料儲存起來。後來查官方文件才知道, Heroku 的虛擬機 ( dyno ) 是 臨時硬碟 ( Ephemeral Disk ),文件中也有提到: Heroku has an “ephemeral” hard drive, this means that you can write files to disk, but those files will not persist after the application is restarted. 於是,就打算嘗試將資料存到 Redis,Heroku 有提供免費的 Redis 資料庫服務  ( 有 25 MB ),不過這次是申請使用 Redis Labs  ( 免費試用方案提供 30 MB )。 以下分享申請步驟及如何實作: 一、申請 Redis Labs 至 Redis Labs 官網,留下 Email 點選 START FREE 首頁輸入信箱 輸入完後,會請你至信箱收取認證信 送出完成畫面 至信箱點選啟動按鈕 啟動信件 填寫姓名後點選 Continue  二、設置 Redis 資料庫 先選擇完左上方的雲端服務後,點選左下角基本方案 -> 30 MB 免費方案。 此步驟是填寫要註冊的名稱。 接著是創建資料庫,填寫資料庫名稱後,記得把連線密碼記下來。最後按 Activate。 成功啟用!記得把 Endpoint 資料庫主機位置跟 port 也記下來唷! 三、可以開始來寫程式囉 import redis module 後,把 host 設定剛剛記下來的資料庫主機位置, port 設定為主機位置後的阜號。password 也是設定上方步

New Ideas 12 月數據分享 | 使用 Google Data Studio 做數據視覺呈現

圖片
12 月針對部落格做了 2 項嘗試: 在每篇文章底下加上社群連結的 CTA ( facebook 粉專、LINE 官方帳號 ),主要是希望將 TA 留在自有社群,可以再次觸及吸引回訪流量。但目前成效不佳。粉專上個月新增讚數約 4 人, LINE 官方帳號也僅有 5 人加入。 這次可以看到前兩名的文章,是 Google Analytics 搭配 Google Sheet,客製化數據報表且能自動化更新 、 精準追蹤有效曝光數!利用GTM設定「元素可見度」事件追蹤 ,這兩篇我有特別轉貼到 PTT 的 marketing 版,幾乎每天都能帶來 11 - 20 流量。 接下來想做的項目是: 再多嘗試數據分析工具文章,多投放到不同討論區。 雖然 LINE 官方帳號還沒什麼人,但我想把一些自動化流程建好,不然現階段每次都要花上 3 - 5 分鐘。 以下是 12 月的數據,與大家分享。  如果喜歡我的文章,想隨時收到最新行銷、技術分享,歡迎按 fb 粉專讚   或加入 LINE 官方帳號,即時接收最新文章通知

填問卷即可拿獎勵 | Google 意見回饋獎勵 APP 使用分享

圖片
大約是在 12 月初的時候,我收到一則推播,點開發現是 Google 推出的意見回饋獎勵 APP,好奇點擊填寫了一份只有 4 題的問題,沒想到就拿到 NT$ 10 的 Google Play 回饋金。 截至目前為止我填寫了 8 份問卷,總共獲得了 NT$ 97 ,回饋金可以拿來兌換 Google Play中所有的APP、圖書或電影,實測也能成功支付手遊內購。 目前填寫過的問卷類型有品牌印象、購物習慣以及社群平台使用狀況,題數都落在 3 - 5 題間,填答時間幾乎不超過 30 秒,可以看到獲得的獎勵金落在 NT$ 8 - NT$ 18 之間。 問卷是不定期推出,但目前看起來約 2 天左右就有收到。 有興趣的朋友可以到 Google Play 商店  下載試試! 獎勵紀錄 如果喜歡我的文章,想隨時收到最新行銷、技術分享,歡迎按 fb 粉專讚   或加入 LINE 官方帳號,即時接收最新文章通知