IDE

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "编译当前目录",
"type": "shell",
"command": "coolc",
"args": [
"${fileDirname}/*.cl", "-o", "${fileDirname}/${fileBasenameNoExtension}.s"
],
"problemMatcher": [],
"group": {
"kind": "build",
"isDefault": true
}
},
{
"label": "spim 运行",
"type": "shell",
"command": "spim",
"args": [
"${fileDirname}/${fileBasenameNoExtension}.s"
],
"problemMatcher": [],
"group": {
"kind": "test",
"isDefault": true
}
}
]
}

1 Clion 1.1 linux 有两种 linux 远程方式,包含编译的 Full remote mode 和仅调试 Remote debug 模式 - Full 模式涉及编译因此要写 CMakeLists.txt - Full 模式要在 Deployment 选择 mounted folder,否则每次都要用 SFTP 上传源码,要配置 Folder 和 Mappings - cmake 设置选项 -v -- -j 3 打印具体的编译命令 - Debug 模式只需要添加一个配置,指定执行文件的目录,设置 Path mappings。用 Remote GDB Server 或 Remote Debug 都可以 1.1.1 相关问题 - clangd 内存占用过多,限制成 500MB,Clion clangd, how to limit memory usage - ...

阅读更多

linux软件编译、安装、运行

1
2
3
4
5
6
7
8
9
10
11
12
13
# gcc 包含文件查询路径
echo | gcc -E -Wp,-v -
# 加 -Wl,--verbose 来看使用库的路径信息
gcc -o test main.o -ltest -L. -Wl,--verbose
# 查看 so 名字
readelf -a -W elffile | grep SONAME
# 查看可执行文件需要的 so
readelf -a -W elffile | grep NEEDED
# 查看符号 https://stackoverflow.com/questions/34732/how-do-i-list-the-symbols-in-a-so-file
objdump -t Lib1.o
nm -g yourLib.so
# 查看 man 文档
man -l tcpdump.1

1 编译 参考 https://askubuntu.com/questions/466651/how-do-i-use-the-latest-gcc-on-ubuntu 1.1 静态链接 libc - 不推荐链接 glibc (如 getaddrinfo)。用 alpine 的 musl,pull 官方 docker 后安装 这些 - 启动 docker 映射本地的源码,在 docker 中编译 - 用 -pthread 而非 -lpthread,区别 - gcc 链接时使用 -static。一个复杂的 例子 - 编译后 strip 程序 1.2 交叉编译 对于 rpath 和 sysroot 可参考 Building and cross-compile tutorial Ubuntu实现树莓派交叉编译(也解释了 build host target) 交叉编译器 ...

阅读更多

电子书处理

1 制作书 1.1 从网页爬取 - request + BeautifulSoup + Chrome(或 ChromeHtmlToPdf),selenium 也可生成 PDF - 建议用 puppeteer,见 如何将网络教程 (tutorial) 转成 PDF - 批量删除 PDF 最后一页 1.2 扫描纸质书 参考 asset 中《DIY版简易零边距扫描仪之玻璃夹子方案》 1.2.1 用到的工具 下次试试室内灯光,之前的侧光对于不那么白的纸太暗了 - 玻璃板,超白玻璃 8mm 厚,300 X 250,不要印 3C 标志 - 俯拍架,不用带补光灯 - 蓝牙遥控器 - ComicEnhancerPro_chn 文件处理 - ABBYY FineReader + Foxit 高级 PDF,PDF 制作和 OCR - FreePic2Pdf 书签制作 1.2.2 拍摄 ...

阅读更多

代码分析

1 Call graph 分析函数调用关系图 (call graph) 的几种方法 1.1 静态 1.1.1 Doxygen + Graphviz + Htmlhelp (windows) - 使用 Doxygen + Graphviz + Htmlhelp,Doxygen 配置,再加上下面两图,不要选生成 Chinese,否则 chm 文件乱码 - 生成前将不用的第三方库代码移走 - Doxygen error: failed to run html help compiler on index.hhp 报错似乎不影响 1.1.2 SciTools Understand (windows) C/C++ 项目参考, Buildspy - For gcc/g++ Users - 对于 openssl,一处非常奇怪的宏定义字符串导致编译不过问题, ...

阅读更多

office

表格快速添加多个新行,鼠标放在表格外的换行位置,回车添加新行,按 F4 多次重复添加

将表格选中行下移,Alt + Shift + 下

词典软件

词典设置

1 GoldenDict - 需要 linux 版翻译时使用 GoldenDict - 参考 github GoldenDict 手册 下载64bit QT5 压缩版本 - 新建 portable 变成便携版,生成的 index 子文件中为词典索引 - 将指向 Dictionary 文件夹的快捷方式放入 content,除了欧路专用格式,其它与欧路共用。调整词典顺序 - 虽然可以添加欧路和有道在线词典,但查词会变慢,因此不添加且将维基百科也禁用 - 新建配置文件调整字体和大小,调整搜索框大小,选择显示哪些面板,关闭不可用的屏幕取词相关功能 - 修改设置如下,关闭“双击翻译”,查询结果中继续取词通过弹窗的方式,不使用跳转。基本不使用多标签功能。风格调整为白色背景。 - 设置 AHK 脚本自启动实现双击查词 - 阅读帮助文档中的快捷键实现高效查词 2 欧路词典 - 有生词多终端同 ...

阅读更多

编译工具

1
cmake -B build -G "MinGW Makefiles" -D CMAKE_MAKE_PROGRAM="D:/soft/mingw64/bin/mingw32-make.exe"

- 跟我一起写Makefile - 《嵌入式 Linux C 语言程序设计》,make 1 CMake - 推荐 out of source builds,输出不混在一起,git 工具好管理,可以创建多个 build,如 debug/release。build 与 source 同一等级,不在 source 内部 - 在多个平台测试以避免写出平台相关的 cmake - 选择编译器和 Generator,两者不同搭配可有不同的 build 目录,只需指定一次 - 生成和编译始终在源码根目录 - 调试 CMake - target 可以是虚拟的 - 变量都是字符串类型,值有空格要加引号,多个值用分号连起来。未定义的变量是空字符串。${} 可以嵌套引用,可作为变量名 - unset(myVar) / set(myVar) 用来 unset 变量 - ENV{varNam ...

阅读更多

音视频学习与娱乐

1 应对禁止录屏 - 添加虚拟显示器,将视频传送给另一端后,用另一端的软件录屏 - HDMI 欺骗器 - spacedesk - 视频采集卡 - 用 QQ 远程协助、远程桌面、虚拟机也是这个思路,即绕过软件层面的检测 - 也可找没被检测到的录屏软件 - 保险起见,每天录屏时间不要超过一个合理时间,如 8h - Potplayer 录屏没声音时,打开 - 设备设置 - 摄像头 - 音频录制设备 - 数字音频接口。视频 –> 录制视频(ALT + C),保持默认MPEG-4编码,勾选开启高质量视频压缩,然后把播放器静音,最小化 2 视频笔记 - 用 media extended 插件 - 配合 Templater 和 QuickAdd 实现 自动移动光标到末尾 - timestamp offset 设为 5,避免添加晚了 - 目前版本不支持(v3 支持) ...

阅读更多

自建 RSS

1
2
3
注意第一個是 (文章列表+文章) 的緩存,就算你不斷 F5 ,只要是在這個時間內都不會請求源站
比如說第一次請求到甲站的文章列表有ABC三篇文章, 這時緩存裡記著甲站有ABC及ABC的內容, 只要沒過期你怎樣F5就不會再請求甲站, 都只是緩存返回甲站有ABC
過期後(5分鐘)再一次請求甲站, 發現甲站的文章列表有BCD, 由於CACHE_CONTENT_EXPIRE(1小時)沒過期, 緩存裡有ABC文章自身的內容, 就不會重複請求BC文章, 只會請求D文

1 RSSHub - docker 部署,参考,docker run -d --name rsshub -p 1200:1200 -e CACHE_EXPIRE=30 diygod/rsshub - 注意 cache_expire 为 30s,则 30s 以后 RSS 客户端再去请求就会从源站拉取内容 - CACHE_EXPIRE 和 CACHE_CONTENT_EXPIRE 的区别解释,来源 tg 群 2 miniflux - Docker Compose 部署,参考1、参考2 - 注意 POLLING_FREQUENCY 为刷新频率 1min,这里大于 RSSHub 的 cache_expire 保证每分钟都会触发 RSSHub 的重新查询,即不使用缓存 - ADMIN_USERNAME 和 ADMIN_PASSWORD 设置用户密码 - po ...

阅读更多