Hexo個人部落格架站紀錄 - 評論系統與SEO
這次意外發現原來hexo可以支援雙留言系統,覺得有趣便在原本的Utterances以外加多加使用Gitalk另外也重新設定了Google Search Console(不過現在似乎網址審查比過去還要再花更多時間)
評論系統 - Gitalk, UtterancesButterfly的主題中預設可以介接多種不同的評論系統包括Disqus/Disqusjs/Livere/Gitalk/Valine/Waline/Utterances等這邊使用GitTalk來串接,畢竟Hexo的靜態Blog是建在Github上,串連上穩定性也會高很多壞處就是登入評論系統必須要有GitHub帳號,似乎也有一些關於所需權限過高的疑慮存在而Utterances也是一種基於GitHub Issue的評論系統,導入也是非常簡易的。
Enable Comments找到./themes/_config.yml中的comments block在use的部分選擇Gitalk以及Utterances(Butterfly可以使用雙評論系統
可以選擇是否要新建一個re ...
Hexo個人部落格架站紀錄 - 主題、內容
之前使用的主題是NexT,於是想這次想試試看不同的主題
Butterfly主題客製化404 Pagetheme/_config.yaml自定 404 頁面
1234error_404: enable: true subtitle: 'Page Not Found' background: <img_url>
開啟上方Nav Bar可依需求取消註解:
12345678910menu: Home: / || fas fa-home Archives: /archives/ || fas fa-archive Tags: /tags/ || fas fa-tags Categories: /categories/ || fas fa-folder-open # List||fas fa-list: # Music: /music/ || fas fa-music # Movie: /movies/ || fas fa-video Link: /link/ || fas fa-link About: /about/ || fas ...
Hexo個人部落格架站紀錄 - 開始專案
由於當初備份沒有做好,所以我把整包hexo blog的檔案都弄了不過也趁此機會再重新整理了一下筆記再加上也很久沒有更新,也算是一種契機吧
環境
安裝Node.js,安裝完成後可以確認目前使用的node版本: node -v
安裝Hexo: npm install hexo-cli -g
開始一個專案
初始化hexo init <project_name>產生出來的資料結構:
_config.yml: 網站配置檔,可修改各種配置。例如:網站標題、網址、主題名稱等等
package.json: 專案中需要的所有模組
scaffolds: 布局模板
themes: 用來存放主題的資料夾
source: 用來存放原始檔案的地方,如圖片、Markdown等
更換主題hexo官方主題:https://hexo.io/themes/之前用的是Next的模板,這次想換換不同的模板這次使用很多人推薦的Butterfly:
安裝主題:npm i hexo-theme-butterfly
在_config.yaml裡更改主題:
1theme: butterfly
部署到GitHub
安 ...
JAVA搞不清楚系列 - Spring Boot Multi Module Porject
第一次碰到Multi Module其實應該是在做gRPC的專案的時候,後來才又重新認真研究了一下。Spring Boot的Multi Module 可以幫助專案規劃分module,重複使用POM,以免引入變得過於龐大,且不用每次都構建整個專案,並且使得針對某個模組的特殊控制更為方便。
Gitlab連結https://gitlab.com/jam68ty/spring-boot-multi-modules-semgrep
流程總覽
建立一個母moudule以及兩個子module
重構專案結構、產生jar檔
母module引入子moudule
寫一些測試的Service, Controller
此時應該要可以透過母module去控管整個專案共同需要的POM,而個別子module需要的dependency則在該module中引入即可
實作詳解
利用Maven Quickstart Archetype建立一個Parent Module
1mvn archetype:generate -DarchetypeGroupId=org.apache.maven.archetypes -Darchet ...
Line Chat Bot 聊天機器人 - 用Flex Message包裝來自Google Map API 的訊息
Flex Message是Line提供給開發者更靈活的顯示訊息的工具這也是我最喜歡的一部分可以把訊息做成自己喜歡的樣子
但是要用Flex Message沒有想像中的簡單尤其是陷入各種少一個大括號一個小括號的問題又或者是Python的縮排問題時真的非常無解、會解非常久~所以誠心建議大家使用好的外掛來幫助開發(但我沒有試到一個我喜歡的,如果有人有推薦的VSCode外掛可以分享一下嗎)
建立Flex Message
用Flex Message Simulator建立一個範本並產生JSON
建立function用來處理一些放入變數的問題,並迴圈產生多個FlexMessage
12345678910111213141516171819202122232425262728def flex_result(restaurant_detail): result_len = len(restaurant_detail) print("搜尋結果:" + str(result_len)) if(result_len>=10): random_ind ...
Line Chat Bot 聊天機器人 - 機器人睡著了?使用Scheduler把他叫醒吧!
由於使用免費的Heroku,所以機器人的server在經過30分鐘的閒置後就會睡著,要喚醒的話會需要一些時間,因此可以建立定期排程的script來讓他執行、保持清醒。
要達到這樣的效果可以用兩種做法
使用APScheduler
使用Heroku Scheduler
APScheduler
安裝套件 pip install apscheduler
建立一個叫做clock.py的檔案,將這個檔案放在專案的根目錄下
123456789101112131415from apscheduler.schedulers.blocking import BlockingSchedulerimport urllib.requestsched = BlockingScheduler()@sched.scheduled_job('cron', day_of_week='mon-fri', minute='*/20')def scheduled_job(): url = "https://hungrylinebot.heroku ...
Line Chat Bot 聊天機器人 - 使用Richmenu
Rich menu是Line官方帳號中常用到的功能可以快速幫助使用者了解到官方帳號提供了哪些功能這邊記錄了如何從無到有自己製作一個Rich menu
建立Richmenu
先準備好圖片,尺寸部分的話通常是2500*1686,我是使用Power Point來製作的
下載Line Bot Designer: https://developers.line.biz/en/services/bot-designer/
打開後可以建立圖文選單,直接在圖片上拖曳選擇定位
完成後可以看到右下角工具為我們產生的JSON,將他複製下來
使用API上傳Menu,這邊使用Postman來幫助我們完成上傳Rich menu
(1) 建立Rich menu
POST https://api.line.me/v2/bot/richmenu
Authorization的部分選擇Bearer Token,填入chatbot的Channel Access Token
另外body的部分選擇raw並貼上剛剛複製的JSON檔
最後應該會回傳一個richmMenuId,會長的向下面這樣,將他記下來:
123 ...
Line Chat Bot 聊天機器人 - 部署到Heroku上
由於電腦隨時可能關機,所以我們需要一台sever隨時開著通常會需要去購買網域但是身為一個免費仔,免費的東西不拿來用不行這邊就用了Heroku這個PaaS,開發者可自行在Heroku平台開發和佈署各種網站
先下載Heroku
安裝Git
安裝Gunicorn: pip install gunicorn
進入資料夾下執行:
12345//登入herokuheroku login//在Heroku上建立APPheroku create <app-name>heroku config:set DISABLE_COLLECTSTATIC=1
💡 如果有使用到**selenium**的功能,需要照著這篇文章的做法做:**[Heroku 中使用selenium 設定方法](https://aishuafei.com/heroku-selenium/)\*\*
接著就可以看到建立的APP
接著對Line Bot的專案進行修改
(1) 在專案最外層新增一個Procfile檔案
1web: gunicorn mylinebot.wsgi
(2) 使用指令pip freeze &g ...
Line Chat Bot 聊天機器人 - 前置作業
聊天機器人一直存在我的生活周遭常常想著哪天我也自己來玩一個看看所以就在空閒的時候做了一個用來尋找附近美食的機器人順便開了一個系列紀錄一下的過程
P.S.範例截的圖是另外一個做失敗的機器人但我又不想重新截圖,所以就用著了,但做法都是一樣的只是機器人名字不一樣而已
前置作業開發環境與工具
Python (Anaconda)
VS Code
Ngork
Line方面設定先到Line developer註冊 → Create Provider → 建立Messaging API
💡 在Basic Settings裡有Channel secret,在Messaging API settings裡有Channel access token
建立步驟Anaconda Env建議可以使用虛擬環境以保持套件的乾淨
123conda create --name=django-env python=3.6.6 #建立環境conda activate django-env #啟動環境conda deactivate #關閉環境
Django
安裝套件
1234pip install djangopi ...
JAVA搞不清楚系列 - POJO, PO, DTO, DAO, BO, VO
大二之後再也沒碰過Java,許多觀念也都已經忘光光開始工作後這些東西通通回來找我了如此看來還有許多我搞不清楚的東西呢這篇記錄了一些在Java專案中必須知道的基本知識
POJO (Plain Old Java Object)POJO就是一個Java物件只包含自己的屬性(private)和提取或儲存這些屬性的method(get、set),而其他的Object也是以POJO為基準開始延伸。
PO (Persistent Object) = Entity資料庫的table所對應的java物件,通常與使用hibernate相關。除了get, set沒有其他方法
Spring Boot JAP有一個套件叫做Lombok,可以替我們省去寫getter and setter的功夫,只需要加上Annotation @Getter @Setter 即可可參考:https://ithelp.ithome.com.tw/articles/10238653
DTO (Data Transfer Object)用來傳輸的物件,只會把需要被傳輸出去的資料包裝起來
DAO (Data Access O ...