Jekyll 添加字数统计
2024-01-07 tech jekyll 1 mins 231 字
挺实用的小东西,我也加在我blog上了。
字数统计
{{ content | strip_html | strip_newlines | size }}
阅读速度
{{ content | strip_html | strip_newlines | size | divided_by:350 | round}}
挺实用的小东西,我也加在我blog上了。
{{ content | strip_html | strip_newlines | size }}
{{ content | strip_html | strip_newlines | size | divided_by:350 | round}}
以前一直把 /
路径的文件扔在根目录,看着觉得很别扭。稍微查了下资料,可以使用 集合(Collections) 的方式处理。
集合(Collection)用于定义一种新的文档类型,它既可以像页面和文章那样工作,也可以拥有它们特有的属性和命名空间,可以用来记录各种解决方案、团队成员、或是某次会议记录等场景。
_config.yml
我取了名字叫 public
,可以取任意的名字(不和Jekyll的冲突即可)。
我设置了 permalink
为 /:path
,意思是扔到 /
路径中,相当于之前放置在根目录的效果。
collections:
public:
output: true
permalink: /:path
_public
文件夹名字和刚才 _config.yml
中声明的一样。将文件夹全部拖进去,就可以了。
需要注意的是,不能把 index.html 文件也拖进去,否则 pagnation 的插件回报错。
我加了 jekyll-archives 插件重写了blog的一些页面逻辑。稍微记录一下。
官方地址: https://github.com/jekyll/jekyll-archives
gem 'jekyll-archives'
在 _config.yml
中增加:
plugins:
- jekyll-archives
更多配置参考 https://github.com/jekyll/jekyll-archives/blob/master/docs/configuration.md
以下是我的配置(我的layout文件是 tags.html):
# Build settings
plugins:
- jekyll-paginate
- jekyll-archives
jekyll-archives:
enabled:
- tags
- categories
- year
layouts:
tag: tags
category: category
year: year
permalinks:
tag: '/tags/:name.html'
category: '/:name/'
year: '/archives/:year.html'
安装
bundle install
基于以前的文章《使用新版本的 jekyll,加快编译速度》,我重build了镜像。你可以直接使用我的镜像:
docker pull kelvinblood/jekyll:v4.2.2
这里简述我的构建过程。官方原始的镜像在这,我用了 v4.2.2。
# File: Dockerfile
FROM jekyll/jekyll:4.2.2
MAINTAINER admin@kelu.org
# Install Gems
RUN gem install \
jekyll-archives
我build成了这个名字:
# File: build.sh
docker build -t kelvinblood/jekyll:v4.2.2 .
修改docker-compose.yml
:
# File: docker-compose.yml
version: '3.2'
services:
blog:
image: kelvinblood/jekyll:v4.2.2
command: jekyll s
network_mode: bridge
container_name: blog
restart: "no"
volumes:
- ./:/srv/jekyll
environment:
JEKYLL_UID: 1000
JEKYLL_GID: 1000
JEKYLL_ENV: production
老电脑,发挥一下预热。
但是直接使用 brew install 或者 去官网下载都不OK了。因为苹果官方已经放弃支持 10.15 catalina 了,上下游也不支持了。
除了 docker desktop,也有第三方的 docker 软件,比如 lima, orbstack,也是不支持Mac老系统,😮💨。
根据 stackoverflow: Install docker on macos catalina 的提示,直接下载老版本的docker desktop即可:
我下载了 x86 的做个备份。
安装后可以用.
近期在处理苹果开发账号相关的事情,包括添加团队成员、创建使用证书、编译打包、真机测试安装、提交审核上架等。
目前是公司内部团队进行开发,账号类型为公司账号,添加一个团队成员协同开发。
苹果开发者账号下的团队成员有三种角色:
官方帮助:https://developer.apple.com/cn/help/account/manage-your-team/invite-team-members/
邀请
注意要选择可以访问 访问证书、标识符和描述文件
,不过 云端管理的分发证书
这个看情况。
真是一波三折血泪史。
起因是要装 chromedriver,先看了官方的地址:https://chromedriver.chromium.org/downloads
怎么回事,不能装最新的,只能装114版本?
看样子 homebrew 的版本没有114的,还是用老一点的chrome版本,才能和官方稳定的 chromedriver 搭配干活。
brew info --cask google-chrome
brew install --cask google-chrome@114
完了,homebrew没有这个版本。网上乱七八糟的不放心,还是找比较像官方的:
下载下来发现用不了,无法运行。
算了,直接源码编译:https://chromium.googlesource.com/chromium/src/+refs
我用了114版本:https://chromium.googlesource.com/chromium/src/+/refs/tags/114.0.5735.346
放弃,怎么可能自己编译?!
又认真看了下,120和对应的chromedriver,这不是有吗?https://googlechromelabs.github.io/chrome-for-testing/
下载好了还是无法运行,心累了。
死马当活马医吧,用 homebrew 把 chrome 和 chromedriver 都装完:
brew install --cask google-chrome
brew install --cask chromedriver
试着跑一下 selenium-server 看:
没问题。用代码跑看也是OK的。
升级 chrome的话使用这个命令:
brew upgrade --cask google-chrome
brew upgrade --cask chromedriver
chrome信息:
brew info google-chrome
写了个简单的动态加载另一个python文件的方法,适合debug。
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.action_chains import ActionChains
import time
import os
import subprocess
import random
import importlib
USERNAME=""
PASSWORD=""
WEBSITE="http://abc.com"
driver = webdriver.Chrome()
module_name = "oaread"
oaread_module = importlib.import_module(module_name)
def main():
global WEBSITE
global driver
driver.get(WEBSITE)
print('Enter ' + driver.title)
# time.sleep(random.randint(4,9))
username_xpath = '//input[contains(@id,"userName")]'
password_xpath = '//input[contains(@id,"password")]'
login_button_xpath = '//*[@id="main"]/table/tbody/tr/td/div[2]/div/login-tab/div/div[2]/div[2]/div[1]'
try:
username_elem = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.XPATH, username_xpath))
)
# 输入用户名
username_elem.send_keys(USERNAME)
# print(username_elem.get_attribute('outerHTML'))
# 等待密码输入框可见
password_elem = WebDriverWait(driver, 10).until(
EC.visibility_of_element_located((By.XPATH, password_xpath))
)
# 输入密码
password_elem.send_keys(PASSWORD)
# print(password_elem.get_attribute('outerHTML'))
# 添加等待时间,模拟人为操作的速度
time.sleep(1)
# 等待登录按钮可见
login_button_elem = WebDriverWait(driver, 10).until(
EC.visibility_of_element_located((By.XPATH, login_button_xpath))
)
# 点击登录按钮
login_button_elem.click()
step_enter_oaread(driver)
except Exception as e:
print(e)
# step_oa_read(driver)
monitor_and_execute(module_name+".py", driver)
def get_file_modification_time(file_path):
"""
获取文件的修改时间
"""
return os.path.getmtime(file_path)
def monitor_and_execute(script_path, driver):
"""
监控文件是否有更新,如果有更新则执行脚本
"""
last_modification_time = get_file_modification_time(script_path)
while True:
current_modification_time = get_file_modification_time(script_path)
if current_modification_time > last_modification_time:
print("File has been updated. Executing the script.")
last_modification_time = current_modification_time
importlib.reload(oaread_module)
try:
oaread_module.my_run(driver)
except Exception as e:
print("执行出错,不管了")
print(e)
print("sleep 1")
time.sleep(1)
def step_oa_read(driver):
errCount = 10
while errCount > 0:
try:
oaread_module.step_first_item(driver)
time.sleep(random.randint(2,4))
oaread_module.step_item_replay(driver)
except Exception as e:
errCount -= 1
print(e)
print("执行出错,不管了")
time.sleep(random.randint(10,20))
time.sleep(random.randint(1,2))
oaread_module.my_first_window(driver)
def step_enter_oaread(driver):
driver.get('http://abc.com)
if __name__=="__main__":
errCount = 10
while errCount > 0:
errCount -= 1
main()
brew install nginx
配置文件
/opt/homebrew/etc/nginx/nginx.conf
配置设置和常用的nginx是一样的。默认的目录和文件:
brew info nginx
虽然 homebrew 已经安装nginx成功了。但是 nginx
并未被正确安装到Homebrew的默认目录,
brew services 可能无法找到正确的安装路径而报错。
brew services reload nginx
brew services start nginx
brew services stop nginx
对于本地的一些临时目录里的图片,如果按照正常的nginx请求,是进不来的。这里就要对404的请求做二次改正,这里是我最终的配置:
主要思路是
/category/2024/01/10/
的路径段,并将其从 URI 中去掉。root $new_root;
将新的 root
路径设置为 /Users/kelu/Workspace/blog/_posts
,try_files $uri =404;
尝试访问文件。这样,对于 Typora 等 markdown 工具,自动将图片以相对目录的方式保存下来,也可以展示在 网站上。
root /Users/kelu/Workspace/blog/_site;
index index.html;
location / {
try_files $uri $uri/ @fallback;
}
location @fallback {
# 设置新的root路径
set $new_root /Users/kelu/Workspace/blog/_posts;
# 使用正则表达式捕获组提取除了特定字符串之外的路径
rewrite ^/([^/]+/[^/]+/[^/]+/[^/]+)/(.*)$ /$2 break;
# 尝试访问新的root路径
root $new_root;
try_files $uri =404;
}