looking a wood sprite in the forest

Pandoc generate pdf from markdown


Intro

始终不太习惯 word/wps 类工具编辑文本,再一次尝试用 pandoc 来生成 pdf,算是初步搞明白一点玩法,本文略过 markdown 的部分主要记录 latex 相关设定内容。

  • wkhtmltopdf 也是一个选项,但是转 HTML 再生成 pdf 就没啥挑战了额哈哈

Setup

首先完整安装 latex 包

$ brew uninstall --cask basictex
$ brew install --cask mactex

Latex template

---
title: "Your article title here"
date: 2023-02-20
fontsize: 12pt
# fc-list :lang=zh
#mainfont: "PingFang SC"
mainfont: "Sarasa Mono SC"
# monofont: "FantasqueSansM Nerd Font Mono"
monofont: "Sarasa Mono SC"
# 中文换行支持
lang: zh-CN
geometry: margin=2cm

# 设置双栏
# classoption=twocolumn
---

在 markdown 文档的最前面加入以上 metadata 简化命令参数设定,实际效果等价于

Read more ⟶

Flair-58 Espresso Maker


flair-58

https://flairespresso.com/product/flair-58/

周末浪费了2天豆子,终于折腾出比较理想的设定

  • 预热:浅烘 = 3档,中烘 = 2档,深烘 = 1档
  • 磨豆:C40 调到 8 格(浅烘豆 +=1)

奶泡机没到位,先用娃的小奶锅煮 200ml Oatly 燕麦奶,稍热就好,没有打出泡沫也就无所谓拉花了
PlanB: 微波炉加热 + 宜家 ¥9.9 手持奶泡器

我买的优化后版本默认配无底手柄 + 58mm 18g粉碗,而上半年批次的好像是 20g粉碗,底部没有凹弧线,然后分水网和冲煮头是一体的,每杯都得拆下来清理,现在只需要拆手柄洗洗粉碗和分水网就好,方便连续出杯(但是对于没有多个手柄和粉碗的初阶用户来说,重新填粉加水的操作并不连续 -.-)
群里有大佬改装了底座和支架的方案,解决下压前倾问题和使用12cm+的秤

而无底手柄安装还不太熟练,经常要弯腰低头去看小翅膀有没有卡到位,然后注水再安装压力表(顺便当预浸泡),18g豆出 36g液体,如果粉磨得过细,下压会很费劲

虽然目前 5-9bar 之间压的曲线还不太稳定,偶尔通道也不太顺滋到杯外,但是香浓的 crema 已然远超预期(其实很容易过萃,但是家属喝不出来😂)

试了下用冰的屈臣氏做 coffee soda,难喝🤢

好多想买的配件:拉花奶缸、粉锤、布粉器、鼠尾粉碗、粉饼垃圾盒

update: 2022-08-19 14:09:08

买了新的拉花缸和称,但是懒到完全不想碰牛奶,only pure coffee and water…

早晨的冲煮开始逐渐暴躁,直接磨58g粉分3次装填、下压、出液到一个杯里,再加冰块分装成两份 long black 出门,少洗两次杯子动作也更流畅~大概15-20分钟完成

Read more ⟶

剁手好物推荐


  • Insta360 GO2 拇指运动相机
  • 巷贩小酒 - 东方甄选金酒
  • Reebok royal techque 板鞋
  • ALTRA Escalante 2.5 轻量零落差跑鞋
  • SENNHEISER IE300 耳机
  • PhD 能量棒
Read more ⟶

Volvo v60


因为家庭新成员加入,所以买车的优先级提了上来。一开始考虑大尺寸6/7座suv,能装全家人短途出行,比如highlander, outlander, explorer, Pajero…后来因为今年各种新款上市,到最终提车时间有点晚,再加上城市拥堵和停车问题,回归到最初的选项也是一直种草的旅行车Volvo v60

中间还去看过Jaguar和Alfa Romeo,可惜后排空间有点小,对外型内饰非常满意,动力和操控也很可以,尤其Julie的前脸颜值太命中我了,一直对mx5这类笑脸无法抗拒…

V60在4s店试驾的豪华版,刚开始还挺不适应转向手感和油门刹车的,感觉都很沉很重。比起来以前开过的各种小钢炮和家用轿车,沉着有余灵活不够,前期不熟悉的时候操作起来都得小心翼翼。

最后订车选了致远焰影蓝运动款,因为厂家直销的关系也没讲价,就跟销售要了行车记录仪和儿童座椅。目前开两个月小一千公里的行程,大概总结些点吧

  • 外观线条比例,审美观因人而异,但是V60各处都在我的区间内
  • nappa皮座椅舒适和支撑都很到位,前排有可调的腿拖和腰撑。对豪华版的实木装饰水晶档杆其实没啥需求,氛围灯也蛮简约,没有那么夜店风。可惜选配的交车时间太长,不然座椅通风、冬季包、米色内饰都想加
  • 后排空间坐两人还行,但是中间的地台太高,不适合长途5人出行
  • 后备箱就不用夸了,狗子的航空箱一直塞在里面,出去玩很方便,去宜家就把后座放平。6月份搬家就跑了两趟,上次搬家借老王的a3可拉了56趟
  • 48v电机+autohold,起步平顺没有纯燃油车型起步轰发动机那个颤抖
  • 低转油门动力响应略有延迟,升档不算很迅速,不过相比起golf,508要好很多
  • 油耗市区日常11升百公里,跑机场高速能到6.1左右,平时一个月加一次满箱油,推荐95号
  • 方向盘虚位明显,过弯会习惯性多打一些位置,转向比hatchback车型都要重许多。前脸两侧的存在感明显,低坐姿的时候会开得谨慎,反而不会觉得屁股有什么阻碍
  • 底盘确实在开过的车里算得上优秀,过弯和滤震都很扎实。静音实属一般,风噪胎噪在后排(或者车速超过100)尤其明显,所以也就不考虑顶上行李箱
  • autopilot 模式在跑高速时非常愉悦,车道保持比我打方向顺滑多了,跟前车保持车距也很可靠,另外养成了并线前一定先打灯的习惯,否则车子会自己修正。能称为瑕疵的就是自动刹车不够线性,乘客会有明显的拉扯感甚至点头;拥堵路段还得切回手动模式,跟车距离在我这边太容易被加塞
Read more ⟶

Self Host Maddy Mail Server


maddy

Composable all-in-one mail server. https://github.com/foxcpp/maddy

准备自建系列服务替换掉 google 全家桶,先试了传统的 Postfix, Dovecot, OpenDKIM, OpenSPF, OpenDMARC 套餐,但是本人水平菜,机器配置也不高,折腾两天还没跑起来,正好看到订阅的 changelog 推荐了 maddy 1 于是搓搓手气试试这个邮局方案,以下是满足个人喜好的优点

  • 基于 golang 生态依赖少,方便打镜像
  • 验证数据存在 sqlite 里也很轻量
  • 没有 web 端,只需要 imap + thunderbird 即可
  • 配置文件相对简单

install

mkdir -p /data/maddy

# hard link caddy's crt and key to maddy
ln var/lib/caddy/.local/share/caddy/certificates/acme-v02.api.letsencrypt.org-directory/${domain}/${domain}.crt /data/maddy/${domain}.crt
ln var/lib/caddy/.local/share/caddy/certificates/acme-v02.api.letsencrypt.org-directory/${domain}/${domain}.key /data/maddy/${domain}.key


# foxcpp/maddy:v0.4.2
podman run \
  --name maddy \
  -v /data/maddy:/data \
  -p 25:25 \
  -p 143:143 \
  -p 587:587 \
  -p 993:993 \
  -p 465:465 \
  yanyaoer/maddy:master


# add user
podman run --rm -it -v /data/maddy:/data --entrypoint /bin/maddyctl yanyaoer/maddy:master creds create yanyao@mail.yadanhe.com

参考文档配置2 完后发送邮件对方可收,本地 thunderbird 接收回复邮件时有问题

Read more ⟶

Utteranc Comments


utterances - A lightweight comments widget built on GitHub issues. Use GitHub issues for blog comments, wiki pages and more!

install

  1. install utterances on your repo

  2. add the script to your template

<script src="https://utteranc.es/client.js"
        repo="[ENTER REPO HERE]"
        issue-term="pathname"
        theme="github-light"
        crossorigin="anonymous"
        async>
</script>

for exsamples https://github.com/yanyaoer/yanyaoer.github.io/commit/f2508ce7557d372f909f68ee32371f86895fd92f

done.

Read more ⟶

Zotero as personal knowledge management


Zotero 常用于科研的文献管理,由 firefox 浏览器插件发展到现在有了独立的桌面和移动客户端

  • 本身具备简易的 rss 订阅功能可以用来追踪论文的更新
  • 注册在线账户后支持导出资料库给其他同学订阅
  • 浏览器插件 zotero connectors 则类似各类笔记应用的 web clipper,方便导入各种资料。注意科学上网加载完整页面后再进行保存
  • 通过插件可以扩展出许多其他功能,比如文件同步、高级档案管理

quickstart

brew cask install zotero

这里简单用 caddy2 搭建 webdav 来同步附件,就没用高级的 zotfile

至于自带的笔记功能怎么说呢~ 已经适应不能这种风格了

add-onslink
quicklookhttps://github.com/mronkko/ZoteroQuickLook/releases
markdownhttps://addons.thunderbird.net/zh-cn/thunderbird/addon/markdown-here-xul/

subscription

将码农常用的文档工具 gitbook 转为 pdf

brew cask install calibre

sudo npm install -g gitbook-cli

gitbook install  # for gitbook plugin

git clone https://github.com/prometheus/docs.git

gitbook pdf

ps: gitbook 开源版本已经很久不维护了,可以换到 honkit fork 的版本

Read more ⟶

Rss2email


距离上次从 https://blogtrottr.com 迁移 rss 订阅到 feedly 差不多五六年了, 这会网络不可用的状况又变得严重些,干脆还是用自建服务来接收感兴趣的内容, 当然备选方案也不少:

出于复古心理顺便减少对应的 app 安装选择问题,又选择了回归 email 方式订阅更新

安装配置

rss2email 的安装到简单,参考 官方文档 直接 apt install rss2email,默认配置会发送文本邮件,修改 html-mail=True, 在我的环境里 smtp over sendgrid 很容易超配额,sendmail 基本发送不出去, 就配上 imap.google 账户自己发给自己啦~

从 feedly 导出 opml 文件然后 r2e opmlimport 完事大吉

需要注意的是,在 r2e run 的执行过程中对配置文件进行修改非常容易被覆盖 1,不要同时搞太多操作就好,

update: 2020-09-18 17:34:49

修改参数 force-from = True,默认会从 feed 里优先提取作者或者发布站点的邮箱,导致 gmail 过滤器失败

定时任务

现代 linux 发行版本(比如这里用的 ubuntu 20.04),默认不带 cronjob 服务,改为 systemd 来管理各种服务,定时任务的写法稍微麻烦了些,先用当前 user 权限来 $HOME/.config/systemd/user 写入定时任务配置

Read more ⟶

Deploy bitwarden_rs with podman


bitwarden_rs1 是个用 rust/rocket 编写的非官方 api 实现, dotnet 版本有点儿不太适合手头的部署环境

这里用比较现代的 podman2 来运行 docker 服务

podman run -d --name bitwarden -v /bw-data/:/data/:Z -e ROCKET_PORT=8080 -p 8080:8080 bitwardenrs/server:latest
podman generate systemd --name bitwarden --files
mv container-bitwarden.service /etc/systemd/system/

systemctl --user enable /etc/systemd/system/container-bitwarden.service
systemctl --user start container-bitwarden.service

然后用 nginx 或者 caddy 代理一下 8080 端口即可连接客户端

brew install bitwarden-cli  # npm install -g @bitwarden/cli
bw config server https://bw.myserver.com

update 2021-04-01 build bitwaden_rs from source

# install rust
apt install git make gcc libssl-dev pkg-config curl
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/env

# build bitwarden_rs
git clone https://github.com/dani-garcia/bitwarden_rs/
cd bitwarden_rs/
cargo build --features sqlite --release
cp target/release/bitwarden_rs /usr/local/bin/

# download bw_web_vault from https://github.com/dani-garcia/bw_web_builds/releases

edit /etc/systemd/system/bitwarden.service

Read more ⟶

Minio Storage Service


min.io 来自前 glusterFS 团队的分布式存储项目, 兼容 aws s3 / google cloud storage 接口,支持多磁盘、多节点,伸缩扩容方便, golang 编写+单执行文件部署,非常适合用 k8s 编排复制来搭建私有对象存储服务

没有生产环境的使用经验,以下仅用于业余尝鲜 六一节礼物

GNU/Linux 下载安装

wget https://dl.min.io/server/minio/release/linux-amd64/minio -O /usr/local/bin/minio
chmod +x /user/local/bin/minio

添加用户、组和配置文件

groupadd --system minio
useradd --system --gid minio --shell /usr/sbin/nologin --comment "Minio file server" minio
mkdir -p /data/minio
chown -R minio:minio /data/minio

# replace minio.service with your own config, eg. User,Group
wget https://raw.githubusercontent.com/minio/minio-service/master/linux-systemd/minio.service -O /etc/systemd/system/minio.service

配置端口和密钥

# optional. run `uuidgen` to creates AK/SK

cat <<EOF >> /tmp/minio
MINIO_VOLUMES="/data/minio/"
MINIO_OPTS="--address :9199"
MINIO_ACCESS_KEY=`uuidgen`
MINIO_SECRET_KEY=`uuidgen`

EOF

启动服务

systemctl enable minio.service
systemctl start minio.service

客户端 mc 使用说明参考官方文档好了,和 s3 命令行也没太多区别, 甚至可以用来做 gcs/s3 代理用

Read more ⟶