發表文章

精選文章

2021 年 1 月熱門電子書推薦 | 精選書籍推薦

圖片
2021 年1 月推薦書籍:一起來閱讀增進知識吧,挑戰看看這個月能看幾本!或是有其他推薦書籍也歡迎分享~ 全身激痛點地圖 (電子書) 出版日期:2020/04/21 作者:侯鐘堡 推薦指數:⭐⭐⭐⭐ 失眠的年代:即刻救援你的睡眠,不睡這個殺手就在你身邊 (電子書) 出版日期:2020/12/16 作者:許承翰,高紅敏 推薦指數:⭐⭐⭐⭐ 病從排寒解2 排寒實踐與突破:20年臨床實證,突破排寒盲點,防治疫毒流感的中醫養命方略! (電子書) 出版日期:2020/12/05 作者:李璧如 推薦指數:⭐⭐⭐⭐ 身體的立體結構網絡:一個結構治療科醫師的筆記 (電子書) 出版日期:2020/11/01 作者:林兩傳 推薦指數:⭐⭐⭐⭐ 1個月-7kg 奇蹟蛋白質減重法 (電子書) 出版日期:2020/12/29 作者:土田隆 推薦指數:⭐⭐⭐⭐ 人類使用說明書 (電子書) 出版日期:2020/11/26 作者:卡蜜拉‧彭 推薦指數:⭐⭐⭐⭐ 0負擔天文課:輕薄短小的109堂課,變身一日太空人 (電子書) 出版日期:2020/11/16 作者:侯東政 推薦指數:⭐⭐⭐⭐⭐ 我們為何吃太多?全新的食慾科學與現代節食迷思 (電子書) 出版日期:2020/12/30 作者:安德魯‧詹金森 推薦指數:⭐⭐⭐⭐ 只有一半的真相:為什麼科學看不到全貌? (電子書) 出版日期:2020/11/30 作者:布拉斯藍德 推薦指數:⭐⭐⭐⭐⭐ ...

上班一定要看(誤) | fb-messenger-cli 專案使用分享

圖片
今天在 GitHub 上發現一個很有趣的專案,叫做 fb-messenger-cli ,可以在 terminal 上操作 facebook messenger,看起來很像在工作,又能偷偷跟朋友聊天 ( 誤 )。 這個專案是用 Node.js,看了一下似乎是用 Puppeteer 來實現登入 messenger 及傳送訊息。 跟大家分享怎麼使用吧: 一、 如何安裝 首先要下載 Node,先至  官網  下載,安裝完後可以在 terminal 輸入 node -v 檢查是否有安裝成功。 接下來用 terminal 輸入 git clone https://github.com/Alex-Rose/fb-messenger-cli.git,將專案下載下來。 下載完後,用 terminal 至專案目錄下,使用 npm install 指令,下載所需套件。 二、 如何使用 在 terminal 輸入指令 node cli.js 或 fb-messenger-cli,就會執行程式,請你輸入帳號密碼登入。 成功登入後會出現最近聊過天的朋友列表,可輸入最左邊的編號,即可進入聊天室 打完字輸入 Enter 後就可以送出囉,不過要刷新訊息可以透過 /r 指令來強制更新最新訊息。 其他指令可以透過 -h 來查看,目前操作起來覺得體驗還算滿好的,真佩服作者。如果覺得很棒記得給他一個 star 。 如果喜歡我的文章,想隨時收到最新行銷、技術分享,歡迎按 fb 粉專讚   或加入 LINE 官方帳號,接收最新文章通知

Puppeteer 使用 FileChooser 無法上傳檔案 | 開發經驗分享

圖片
最近工作上接到新的任務是利用 Puppeteer 來自動化操作網頁,之前雖然有用過 Python 搭配 Selenium 的經驗,但 Puppeteer 是要用 Node.js 寫,完全沒寫過 Node.js 啊!! 今天想跟大家分享開發中遇到的小問題,是關於模擬點擊上傳照片,因為操作的網頁並沒有提供 API,故只好做個機器人來替代人工操作。 簡單介紹一下流程 : 第一步是點擊「 上傳照片 」 接著會跳出此視窗,要再點擊「 選擇檔案 」 最後就會跳出檔案選擇器來上傳檔案 遇到的問題 針對此需求,Puppeteer 可以透過使用 FileChooser、uploadFile 這兩個 API 解決,不過很神奇的是,當我實作時卻完全無法使用,會在使用 waitForFileChooser 時 timeout。 試了很多方法,後來還去查了是不是可以用拖拉檔案 ( drag and drop )、或是跳出檔案選擇器時,模擬鍵盤點選 "\",會彈出 「 前往資料夾 」,再想辦法輸入檔案路徑,雖然沒有成功就是了。 如何解決 後來找到這個 issue ,五天前有人猜想是不是 Chromium 版本是 80 + 時,waitForFileChooser 會失效。 我查了一下我的 Puppeteer 版本是 2.0.0,當使用 npm install 後會自動下載 Chromium,目前版本確實是 80,我嘗試將版本改為 1.9.0,重新執行後發現可以使用了。看其來確實是在新版時 waitForFileChooser 會失效。 如果喜歡我的文章,想隨時收到最新行銷、技術分享,歡迎按 fb 粉專讚   或加入 LINE 官方帳號,接收最新文章通知

2020 年 2 月熱門電子書推薦 | 精選書籍推薦

圖片
2020 年2 月推薦書籍:一起來閱讀增進知識吧,挑戰看看這個月能看幾本!或是有其他推薦書籍也歡迎分享~ 二十一【電子書獨家‧陶晶瑩親聲朗讀】 (電子書) 出版日期:2019/12/05 作者:陶晶瑩 推薦指數:⭐⭐⭐⭐ 彼岸之嫁 (電子書) 出版日期:2020/01/10 作者:朱洋熹 推薦指數:⭐⭐⭐⭐ 我還是會繼續釀梅子酒 (電子書) 出版日期:2020/01/03 作者:張西 推薦指數:⭐⭐⭐⭐⭐ 歲月靜好:蔣勳 日常功課 (電子書) 出版日期:2019/12/27 作者:蔣勳 推薦指數:⭐⭐⭐⭐ 少爺(卷壹~卷肆)~魔影魅靈之十二 前世篇 (電子書) 出版日期:2019/12/13 作者:黑潔明 推薦指數:⭐⭐⭐⭐ 用最正確的科學觀點1人健身:破除90%錯誤觀念的最強自主訓練手冊 (電子書) 出版日期:2020/01/08 作者:庵野拓將 推薦指數:⭐⭐⭐⭐⭐ 晚餐改喝瘦肚湯,2週瘦3.6公斤 (電子書) 出版日期:2019/12/26 作者:藤井香江 推薦指數:⭐⭐⭐⭐ 元氣東京 吳婕安寫真書 數位精華版(含影音) (電子書) 出版日期:2019/12/17 作者:吳婕安(元元),林千翔 推薦指數:⭐⭐⭐⭐ 地表最強告解室 (電子書) 出版日期:2020/01/17 作者:Cherng,地表最強敗犬 推薦指數:⭐⭐⭐⭐⭐ 一日一角落,每天15分鐘,...

提高程式碼品質 | 利用 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 設定為主機位置後的阜號。pa...