Notion Mail 初见

初见 不知道什么时候申请的 Notion Mail Waitlist 通过了。据官方介绍,有重点邮件标记、重复插入文字片段、AI 整理邮件功能。 登陆后是入下的界面,布局和 Notion 基本是一模一样了。编辑器和 Notion 相似,通过 / 可以唤起命令,包括格式(Heading)和插入 snippets(预定义的文字片段)。 和 Gmail 的结合做的挺好,在 Gmail 里可用的发件人在 Notion Mail 里都可用。左侧 Labels 里是 Gmail 里已有的标签。 右上角有一个 Auto Label 功能。点开后可以输入关键词。 输入关键词后 AI 会自动帮你搜索所有的邮件,抽出相关的邮件生成一个新的标签。不过它只会归类最近的十几封邮件,更远的不会自动归类了。 Notion Mail 中新生成的标签会在左侧边栏单独占位,和 Notion 中的 Page 一样,可以更换 emoji。这个新添加的标签在 Gmail 里也可以看到。 自动标出重点邮件的功能因为 Inbox 现在没几封邮件还没法测试。 总结 界面和 Notion 很像,做的很好看。和 Gmail 的整合也做的不错。 但是没有 AI draft 的功能,Gmail 里的 AI draft 实在是太方便了,而且还免费。 仅有目前的功能很难说服我放弃 Gmail 迁移到 Notion Mail。 ...

March 13, 2025

部署 Wallos 管理订阅并添加 https 访问

Wallos 是一个开源的、自部署的订阅管理软件。 https://github.com/ellite/Wallos 部署 Wallos 需要有一台公网服务器,如果想要https访问还需要有一个域名。 Docker 安装方法参考官网文档:https://docs.docker.com/engine/install/ 部署 Wallos 新建一个文件夹存放 Wallos 配置文件。 mkdir Wallos cd Wallos 新建 docker compose 文件 vim docker-compose.yaml 按i进入输入模式,粘贴如下内容: services: wallos: container_name: wallos image: bellamy/wallos:latest ports: - "8282:80/tcp" environment: TZ: 'Asia/Shanghai' # Volumes store your data between container upgrades volumes: - './db:/var/www/html/db' - './logos:/var/www/html/images/uploads/logos' restart: unless-stopped 输入完成后按Esc返回命令模式,输入:wq保存并退出文件。 运行: docker compose up -d 之后应该就可以通过ip:8282端口的形式访问了。但是这样只能用http访问,还是不安全。 添加https访问 添加https之前需要有一个域名,比如example.com,并将域名DNS解析指向服务器ip。 安装certbot: sudo apt install certbot 安装完成后为域名申请证书(将example.com替换成你自己的域名): certbot certonly --standalone --email yourmail@mail.com -d example.com 安装 nginx : sudo apt install nginx 编辑 nginx 配置文件/etc/nginx/nginx.conf(将example.com替换成你自己的域名): ...

March 12, 2025

Typst 相关资源

Typst是一个Latex的替代品,相比Latex的最大优势是简洁快速。比较适合一些输出pdf的写作场景,如一些作业、文档和slides。 以下一些最近使用过程中有用的资源,涉及文档、CV模版、Slides模版格式转换。 文档 Typst Documents 中文文档 中文用户指南 CV 模版 个人比较喜欢的CV模版。 Typst CV Template Slides 模版 Typst Slides Template 我个人比较喜欢的一套Slides模版,只需要在文档的开头加上一段内容就能讲一个文档转换成PPT,样式也比较美观,如果内容过长还支持自动分页,比之前使用的Marp(Markdown 转PPT)好用一些。 #import "@preview/slydst:0.1.0": * // <https://github.com/glambrechts/slydst> #show: slides.with( title: "title", // Required subtitle: none, date: none, authors: (), layout: "small", ratio: 16/9, title-color: none, ) Typst to markdown Typst自己定义了一套公式语法,与传统的Latex公式语法不兼容,但是使用Pandoc能够将Typst公式转换为Latex公式,还可以同时将文档排版转换成Markdown或Latex,参考: pandoc 文档 pandoc -f typst -t latex main.typ -o main.tex pandoc -f typst -t markdown main.typ -o main.md 字体 Typst默认的英文字体是Linux Libertine,我很喜欢这套字体。但是中文默认是黑体,想要设置为宋体可以使用字体选择的fallback机制,在文档中使用如下命令: #set text(font: ("Linux Libertine", "Songti SC")) ...

January 23, 2025

使用 honkit 将 Markdown 文件转换成 pdf/epub 电子书

起因 在 Github 上有许多电子书是以 Markdown 文件形式编写的,它们通常是由若干个文件夹包括若干个 md 文件构成的。这种 Repo 可以使用 GitBook 构建成网页,可供在线浏览。我想将这些文件转换成 epub 格式并导入到自己的阅读器中阅读,以便更方便地管理注释。 在网页上查询后发现 gitbook 有命令行版本,可以生成 html/pdf/epub。下载之后发现初始化的时候会报错: Installing GitBook 3.2.3/opt/homebrew/lib/node_modules/gitbook-cli/node_modules/npm/node_modules/graceful-fs/polyfills.js:287 if (cb) cb.apply(this, arguments) ^TypeError: cb.apply is not a function at /opt/homebrew/lib/node_modules/gitbook-cli/node_modules/npm/node_modules/graceful-fs/polyfills.js:287:18 at FSReqCallback.oncomplete (node:fs:192:5)Node.js v19.7.0 查了一下报错,发现是 gitbook 命令行的依赖版本太老了,而且 gitbook 命令行已经不再开发更新。在 Stack Overflow 上发现有人推荐了 honkit,一个 gitbook 的 fork。 流程 安装 honkit 在使用 honkit 之前,需要先安装 Node.js。 安装 honkit: npm init --yes$ npm install honkit --save-dev 安装 Calibre 下载 Calibre 并安装。 Windows 下需要将 Calibre 安装路径添加到环境变量。 Mac 下需要使用如下命令: ...

January 23, 2025

使用 ImageMagick 批量压缩图片

MacOS 安装: brew install imagemagick 命令行: magick input.png -quality 50% output.png Bash 脚本: #!/bin/bash # Check if ImageMagick is installed if ! command -v magick &> /dev/null then echo "ImageMagick is not installed. Please install it and try again." exit 1 fi # Loop through all jpg files in the current directory for file in *.JPG do if [ -f "$file" ]; then # Compress the image magick "$file" -quality 85% "compressed_$file" echo "Compressed: $file -> compressed_$file" fi done echo "Compression complete!"

January 23, 2025

使用 ImageMagick 批量裁剪图片白边

MacOS 安装: brew install imagemagick 命令行使用: magick convert 1.png -trim 1.png Python 批量裁剪脚本: import os for filename in os.listdir("./"): if filename.endswith(".png"): # run trim command os.system(f"magick convert {filename} -trim {filename}")

January 23, 2025

创建 Electron 应用并使用 Github Action 构建全平台应用

Electron 本地构建只能构建当前系统的程序,可以使用 Github Action 自动构建全平台的程序。这里记录一下流程。 安装 create-electron-app npm install -g create-electron-app 创建项目 create-electron-app myproject cd myproject 安装依赖 npm install --save-dev @electron-forge/publisher-github 创建好的项目文件夹内有 forge.config.js,在其中添加 publishers 设置: publishers: [ { name: '@electron-forge/publisher-github', config: { repository: { owner: '<github username>', name: '<github repo>', }, draft: true, }, }, ], 添加 Github Action 设置 .github/workflows/build.yml name: Build/release on: push jobs: release: runs-on: ${{ matrix.os }} strategy: matrix: os: [macos-latest, ubuntu-latest, windows-latest] steps: - name: Check out Git repository uses: actions/checkout@v1 - name: Install Node.js, NPM and Yarn uses: actions/setup-node@v1 with: node-version: 16 - name: Build/release Electron app uses: wenwuwu/action-electron-forge@v1.4.0 with: package_root: "." # GitHub token, automatically provided to the action # (No need to define this secret in the repo settings) github_token: ${{ secrets.github_token }} # If the commit is tagged with a version (e.g. "v1.0.0"), # release the app after building release: ${{ startsWith(github.ref, 'refs/tags/v') }} 如果想要创建新的release,需要在commit中带上tag。 ...

January 23, 2025

将 GitHub ssh 端口改为 443

有些代理的 22 端口被阻断了,无法用在 GitHub ssh 上,可以修改 GitHub ssh 端口为 443,以绕过限制: Host github.com Hostname ssh.github.com Port 443 User git IdentityFile ~/.ssh/id_rsa # 你的私钥路径,如果与默认的不同请进行修改 修改完成后测试连接: ssh -T git@github.com

January 23, 2025