StackEdit 美化
StackEdit 美化
终于完成了一直惦记的美化。虽有瑕疵,仍完成了目标。
Overview
先上图。
美化
Stylish 存在隐私问题,平替 Stylus (forked from Stylish). 对前缀 https://stackedit_io 应用如下样式[1]。
123456789101112131415161718192021222324a { text-decoration: none;}code { font-family: "JetBrainsMono Nerd Font","Roboto Mono","Lucida Sans Typewriter","Lucida Console","monaco","Courrier,monospace","楷体" !important;}code * { font-family: "JetBrai ...
Streamlit 入门
Streamlit 可视化
API 整理
文件上传
st.file_uploader
区别于文件接口,该 API 返回的是字节字符串,即 b'???' 形式。这导致无法直接处理。
解决方案是在 Parser 类中加一层转换,同时进行乱码处理
1file = io.TextIOWrapper(raw_file, encoding='utf-8', errors='ignore')
此时就可以使用 file.readlines() 等常用 API 进行处理了。
按钮
st.button(name)
点击事件可通过 if 触发
12if st.button(): ...
复选框
st.checkbox
下拉框
st.selectbox
下拉框 (多选)
st.multiselect
e.g. 将表格首列条目作为备选列表
12df = pandas.read_excel()channels = st.multiselect(MSG, df[df.columns[0]].tolist(), ["first_elem"])
...
Typora 美化
Typora 配置
修改 ~/AppData/Roaming/Typora/themes/github.css
12345678910111213141516171819202122232425262728293031/* 在 themes/ 下放置图片目录 */:root { --side-bar-bg-color: #fafafa; --control-text-color: #777;+ background-image: url(./image/backgrounds/your_bg.jpg);+ background-size: cover;+ opacity: 0.81;}/* 所有 font-family 中添加 'Times New Roman','宋体' */html {- font-size: 14px;+ font-size: 18px;}a { color: #4183C4;+ text-decoration: none;}h1, ...
记一次反向代理路径问题
记一次反向代理路径问题
Desc
由于实验在云端环境进行,启动 Gradio 后需通过端口转发访问。初此启动发现 css 不能加载,按钮事件也有问题。F12 检查 Network 发现两个 404:
Name
Request URL
info
https://<forward-ip-port>/info
theme.css
https://<forward-ip-port>/theme.css
观察其他 url 发现,完整的代理路径为 https://<forward-ip-port>/codeserver-forward/<ID>/proxy/<proxy>/,其后才是 /info、/theme.css 等。正是这多出的一段路径导致请求失败。
其中,css 问题容易解决,修改网页 HTML,将 theme.css 的 <link> 标签替换正确 url 即可。检查控制台报错,未能请求 info 数据则是按钮事件失效的元凶。继续根据输出定位,知 info 由 index.js 请求:
1 ...
VitePress 初体验
VitePress 试用
一直希望部署一个与 MyNote 匹配的静态 CMS,应该至少满足以下需求
能够自动生成目录结构
支持隐藏文章
[Optional] 目录导航应该是易用的,最好能提供类似一般文件管理器的层次和缩进
偶然发现 VitePress,记录试用过程。
运行
首先说明一下,VitePress 按照官方教程启动 Demo 并不困难,但是仅仅是一面打印了文本的白屏。笔者图省事,把目光放向了 VitePress 教程本身,其同样采用了 VitePress 主题并已经过完整配置,遂克隆其仓库。以下记录启动过程。
使用 nvm[1] 进行 Node.js 版本管理。先安装了最新的 Node.js 和 pnpm,启动 VitePress 数个报错。首先在 tsconfig 禁用严格检查 "strict": false,后参考仓库 CI 文件,降低版本[2]如下。
Node.js v16.20.2
pnpm v7.0.0
根据 Node.js 和 pnpm 版本对应关系,指定版本 @7.0.0 安装。部署命令和本地 build 命令稍有不同。
1234 ...
Zotero 使用心得
Zotero
个人 Zotero 配置介绍,包括自建 WebDAV 和同步工具。
工具
Zotero 6
chfs
SyncTrayzor
Get Started
关于 Zotero
在 23 年 10 月开始使用 Zotero,彼时版本为 Zotero 6. 动笔写这篇文章时已经有了 Zotero 7,由于不想测试插件兼容性,仍介绍 Zotero 6.
Win10-ARM64. 如果是 ARM 芯片,则安装 Zotero 5 吧,win32 实测在 WoW64 上运行正常,Zotero 6 的大部分插件也能运行。
插件列表
中文插件社区 ☞
Addons
Jasminum
Markdown Here
Storage Scanner for Zotero
Zotero Better Notes
Zotero PDF Translate
Zotero Theme
ZotFile
Zotero updateifs
Zotero Citation Counts Manager ( 有 Bug )
DOI Manager ( 疑似寄了 )
Sci-Hub Plugin fo ...
常用命令(一)
Written with StackEdit.
Common
查询一个文件夹及其子文件夹下的所有文件中是否包含某个字符串
1Get-ChildItem -Path "." -Recurse | Select-String -Pattern ""
查询当前目录中的文件总数
1(Get-Childitem -Path . -File | Measure-Object).Count
端口查询 PID
1netstat -ano | findstr "<port_ID>"
PID 查询进程
1tasklist | findstr "<PID>"
开启 / 关闭 ipv6 临时地址 ( 需重启网卡 )[1]
1netsh interface ipv6 set privacy state=[disable | enable]
打印 CPU 占用最高的 10 进程 ( ? )
1Get-Process | Sort-Object -Property CPU -Descending | Sel ...
DAXCTL 库简介
daxctl
NUMA Mode
Memory Mode,DCPMM 不体现 non-Volatile 特性。
AppDirect Mode,DCPMM 占用独立物理地址空间,并拥有 DAX 特性。
OS Supports: PMem-Aware File System DAX & Memory-Mapping DAX
System RAM: Organised as non-CPU NUMA Node
System-RAM mode 下,NVDIMM 可以按照更细粒度组织[1],这种灵活性是硬件管理方案所不能赋予的。
e.g., 通过操作页表来实现“页粒度”的混合。具体的操作上,有两种方式:
在用户态,通过 move_pages() 迁移页;
在内核态,触发 page fault 绑定页。
方法一最大的优势在于可以用户态实现,但是缺点也很明显,首先如何及时地得知哪些页可以迁移了 ( 未映射的页不能迁移 ),其次迁移会引入额外性能开销,最后有些页不能迁移。方法二的优势就是方法一的缺点。
混合内存虚拟设备 ↩︎
LevelDB Getting Started
LevelDB
Repo
Build
LevelDB 编译及 Demo | Maple.Link
LevelDB 使用示例 - 张小凯的博客
源码阅读
考虑使用 Understand.
LevelDB 源码剖析 - 知乎
SF-Zhou’s Blog
leveldb 源码分析 | CppGuide 社区
LabelMe 数据标注工具
数据集标注 LabelMe
Install Labelme using Pip | Labelme Docs
Setup
12conda create -name labelme python=3.12 (查 labelme docs)pip3 install --upgrade labelme
Usage
1labelme