- 博客(162)
- 资源 (28)
- 收藏
- 关注
原创 Python 函数参数类型检查
对于上述情况,如果能保证开发环境是 Python >= 3.5, 那么就可以使用 mypy 执行类型检查;把类型注解写到注释中, mypy 就会识别。Python3 从 3.5 版本开始支持类型注解。当 Python3 < 3.5, 或者 Python 版本为 Python2, 不支持。这一 bool 类型的参数当作 str 类型处理。预期的是程序报错, 而不是把。
2024-09-01 12:46:42 491
原创 线性查找表的应用:用户登录注册程序
线性查找表是很简单的数据结构和算法。网站的用户登录注册时是基本的功能。本文首先给出线性查找表的基本实现,然后给出在用户登录注册的程序流程图,并将线性查找表应用到用户查询这一具体任务,并基于 Python 语言在控制台实现用户注册、登录的模拟程序。
2024-08-31 18:27:43 389
原创 成为Python砖家(6): 字典的key有什么要求?
是一个关联数组。其中的每个键,都映射到对应的值。键可以是任何具有__hash__()和__eq__()方法的对象。在 Perl 中称为 hash。上述解释来自 Python 文档 file:///Users/zz/Documents/pydoc-zh-cn/python-3.12.5-docs-html/glossary.html#term-dictionary。它不是很清晰,没有提到 hashable(可哈希性)。__hash__()
2024-08-22 23:43:04 861
原创 成为Python砖家(5): 描述器descriptor的简单理解
远远谈不上熟悉 descriptor, 仅仅是按照官方文档,把不明白的地方,尝试写了代码,来增加了对于 descriptor 的理解。class A:b = B() # b 是 descriptorclass C:d = D() # d 不是 descriptordescriptor 的类(上述代码中B),应当定义了__set__()__get__()或中的任意一个。还可以定义这几个函数统称为descriptor method, 它们有具体的参数,是:●●●●。
2024-08-22 00:19:33 990
原创 成为Python砖家(4): 装饰器decorator的简单理解
装饰器,是一个接收函数 func、定义一个 wrapper 函数来调用 func、并且执行其他的语句(用户自行定制),然后返回这个 wrapper 函数。Python 中的装饰器(decorator),是Python中一个非常强大的工具,它是一个返回函数的函数。上面提到的 timer_decorator是自定义的装饰器。装饰器,是一个接收函数 func、返回封装后的函数 wrapper 的函数。装饰器是 Python 自带的。再更具体的例子:如下的C和D类,仅仅是名字差异,功能一样。
2024-08-20 20:46:07 389
原创 成为Python砖家(3): 何时产生字节码 .pyc 文件
上一步我们看到,第一次导入 hello 模块后生成了 hello.cpython-311.pyc文件,其中 hello是模块名字。当导入模块的时候,如果被导入的模块,未曾产生过 .pyc文件, 就会生成 .pyc文件。对于自己写的 Python 模块,当它第一次被导入,就会在模块目录下生成 __pycache__目录,存放各个文件的 .pyc字节缓存文件。可以看到, 在第一次导入了 hello模块(from hello import hello)后,hello模块的目录下生成了子目录。
2024-08-19 22:43:59 359
原创 成为Python砖家(1): 在本地查询Python和Numpy文档
在 Windows 和 macOS 系统,分别部署 Python 和 NumPy 本地 HTML 格式的文档,让查询 API 不再受限与网络速度。
2024-08-18 13:25:06 428
原创 成为git砖家(10): 根据文件内容生成SHA-1
目录存放的子目录中, 有些子目录是 blob 类型的对象, 表示了文件内容。当两个文件内容一致时, git 对它们生成相同的 SHA-1。在了解 blob 类型对象的 sha-1 计算过程的前提下,基于 Python 的 hashlib 写了一个工具, 能根据文件内容算出 sha-1, 这既可以作为理解 git 对象存储的初步, 也可以作为后续自行实现一个 mini-git 的基础。
2024-07-31 01:12:53 697
原创 成为git砖家(9): git checkout <commit> <file> 的含义
命令承载了非常多的功能, 想要一次全弄懂,不太现实;这次白鱼带领大家学习。官方文档的解释很全面,但是也显得很罗嗦,我们先忽略。
2024-07-30 19:39:26 793
原创 成为git砖家(8): 使用 git log 查询范围内的 commit
再举一个极端例子:如果只想查看某个 git repo 的第一个commit: 首先用 gitk 或 git log 等任意工具查询得到第一个 commit 的 sha-1, 然后执行。的简写, 意思是从 commit2 回溯得到的 commit 集合, 减去 commit1 及其回溯得到的集合。的含义我们先前有提过,它表示“当前分支”, 或者说当前分支的最新节点。列出给定的 commit 的所有可回溯的节点,并且略掉。往前回溯,所有能被回溯的节点,都列出来。开头的节点及其所有可回溯节点。
2024-07-29 23:08:01 1230
原创 成为git砖家(7): posh-git的安装和使用
posh-git 官方是在 Pro Git 在线电子书中提到了 posh-githttps://git-scm.com/book/zh/v2/附录-A%3A-在其它环境中使用-Git-Git-在-PowerShell-中使用-Git。
2024-07-29 17:01:57 994
原创 成为git砖家(6): git restore 命令
一些经典教程中使用了git reset和来分别恢复 staging area 和 working directory 内容, 虽然git保持了兼容性,但是新版的git(>=2.23)的git status命令给出的提示,是让大家用和两个命令作为替代。
2024-07-28 23:51:54 866
原创 成为git砖家(5): 理解 HEAD
在 Pro Git 这本书中很好的解释了HEAD 的概念: 指向当前所在的分支。作为验证, 可以通过查看.git/HEAD文件内容,或命令来确认。HEAD表示当前分支的别名。当切换分支,.git/HEAD就变化了。查看.git/HEAD并不是很直观, 直观的方式是用命令, 以及这样的写法。进一步的, 使用查看短哈希更佳直观。HEAD之外,还可以使用HEAD~HEAD^的形式, 以及HEAD~n的形式。HEAD^2表示上一层节点中的第二个节点, 而HEAD~2则表示“爷爷节点”。
2024-07-28 18:43:31 1238
原创 成为git砖家(4): git status 命令简介
对于一个本地的 git 仓库, 里面的文件无非是两种状态:tracked 和 untracked。tracked 意思是被跟踪中, 是说在上一次 snapshot(快照)中已经出现了,当然它现在也可以被 stage。当你进行一次提交时, git 会生成一个新的 commit 对象,记录当前项目的完整状态(快照)。每个提交都会保存一个新的项目状态, 而不是只保存变更。也就是说, 每个文件的状态的short格式,通常由。命令, 意思是以简短的形式来表达文件的状态。来表述, PATH 是文件路径,
2024-07-28 15:30:28 666
原创 成为git砖家(3): Pro Git第一章《起步》
换言之, git 并不根据文件名字或内容索引, 如果两个文件名字或内容一致, 但是计算出的 SHA-1 不同, 那么索引也是不同的;对于同一个文件,在version1的时候 和 version2 的时候文件内容有变化, 那么 sha-1 会变化, version2 的时候会使用新的 sha-1 来索引它。如果两个文件 file1 和 file2 文件内容一致, 但是位于不同目录下,这是可能的,此时他们的 blob 对象 sha-1 相同,但是 tree 对象的 sha-1 不同。
2024-07-28 14:36:55 696
原创 成为git砖家(2): gitk 介绍
https://git-scm.com/book/zh/v2/附录-A%3A-在其它环境中使用-Git-图形界面如果你读完了本书,那就已经掌握了很多在命令行中使用 Git 的知识了。你可以用它来处理本地文件,通过网络连接到他人的仓库,以及高效地与他人协同工作。不过故事到这儿还没结束。Git 通常还会作为一个组件在更大的生态系统中使用, 而终端并不总是最佳的使用方式。现在我们来看看 Git 在其它环境中的使用, 以及其它应用(包括你的应用)是如何与 Git 协同使用的。
2024-07-27 17:43:24 1106
原创 成为git砖家(1): author 和 committer 的区别
大家好,我是白鱼。一直对 git author 和 committer 不太了解, 今天通过 cherry-pick 的例子搞清楚了区别。
2024-07-14 21:05:52 395
原创 成为CMake砖家(5): VSCode CMake Tools 插件基本使用
大家好,我是白鱼。之前提到过,白鱼的主力 编辑器/IDE 是 VSCode, 也提到过使用 CMake Language Support 搭配 dotnet 执行 CMakeLists.txt 语法高亮。对于阅读 CMakeLists.txt 脚本, 这足够了。而在 C/C++ 开发过程中, 还需要编译代码, 或者说, ”构建完整的 C/C++ 工程“。基于 CMake 的构建,包括 configure,build, run 这三个阶段。在命令行中,它们对应了不同的 cmake 命令和参数。
2024-07-14 20:04:22 1409
原创 成为CMake砖家(4): VSCode中的CMake语法高亮
大家好,我是白鱼。 工欲善其事必先利其器, VSCode 需要安装合适的插件才可以得到 CMake 语法高亮。VSCode 免费、插件丰富、文档完善, 相比于 CLion 的年费几百上千元的license真的很香。在成为CMake砖家的路上,我的主力 IDE/编辑器是 VSCode。
2024-07-14 19:39:23 530
原创 成为CMake砖家(3):Windows安装make.exe
CMake 本身是一个 meta build tool, 或者说它是派发任务到具体的 build tool 的。相比于 Ninja, 当系统内存不是很充足时, ninja 默认的多线程容易让系统卡死, make.exe 则由用户手动控制并行的线程数量, 一般不要设置太多并行数,系统就不至于卡死。此外,对于小规模工程, 如果是使用 MinGW,也可以手写 Makefile, 因此 make.exe 是推荐安装使用的~make 作为经久不衰的工具, 在 Windows 上也是可以使用的。
2024-07-14 19:29:38 347
原创 成为CMake砖家(1): 在Windows上查看CMake文档
大家好,我是白鱼。本篇博客展示在Windows系统上查看CMake本地html文档的步骤。
2024-07-14 19:17:44 179
原创 成为CMake砖家(2): macOS创建CMake本地文档的app
大家好,我是白鱼。就像ubuntu 上安装 matlab/clion/smartgit 等软件后,没提供 .desktop 文件的情况, 用户可以手动创建 xxx.desktop 文件,从而在应用中可以搜索到。在 macOS 上, 创建 /Application/CMakeDocs.app 目录,里面最关键的是 Info.plist 文件, 和 .desktop 文件作用类似。变量是我熟悉的, 但它是否被设定为了默认值, 文档里有专门的描述, 但我现在忘记了具体写法要查看文档。之前尝试过一些方案,都不理想。
2024-07-14 17:14:06 650
原创 配置 VSCode C++ 调试时, 常见错误教程
这相当于脱离了 VSCode 的 gdb 调试, gdb 那个窗口那么小, 如果要调试多个文件,我实在难以想象, 要如何切换不同的文件: 你是打算在 gdb 窗口执行一句 step into, 然后在 VSCode 里用鼠标找到对应的 C/C++ 代码的对应行吗?这确实能用, 然而这真的是玩具, 只能用于调试单个或少量文件, 实际 C/C++ 工程显然是用 CMakeLists.txt 去设定构建规则, 而不是一个个硬编码的。MinGW 充其量是一个玩具, 或者说能帮你检查你的代码是否有写的不规范的地方。
2024-07-07 13:54:14 973
原创 1.4k star 项目 CMakeTutorial 阅读和点评
这个 1.2k star 的项目 CMakeTutorial , 在提供的内容中,CUDA 和 PythonExtension 在多年之后仍有较好的实用价值, Installation、 PackageManage, FindPackage, ImportExternalProject 则是凑合使用、 但根因在于 CMake 自身的设计, 初学者可以大概看看,但应寻求更好做法。考虑到是中文写成, 易读性还是相当可以的。
2024-06-18 20:36:01 708
原创 3k star 项目 learning-cmake 点评
这个项目的例子不多, 应该是上传的比较早, 获得的 star 和内容丰富程度以及质量, 并不成比例。对于 cmake 初学者, 应该可以快速看懂每个目录的内容, 但是不建议效仿, 而是应该问问自己: 这么多糟糕的地方, 自己能看出多少,改进多少?
2024-06-17 22:21:08 593
原创 12k star 项目 cmake-examples 阅读和点评
本文对 cmake-examples 仓库中的每个子目录都做了阅读和点评, 从内容分布来看, 你也可以看到“头重脚轻”的问题了。基础内容比较多, 这是 cmake 设计理念导致的;中级、进阶内容少, 这只能说明 cmake-examples 仓库中还有待改进, 也许作者也没有很丰富的 cmake 使用体验, 那么对于稍微 senior 的 cmake 学习, 就还是另外找其他资料吧!
2024-06-17 21:42:48 630
原创 CMake Tutorial (3.30-rc3版) 练习和点评
这份教程使用的源代码是在中, 每个步骤对应一个子目录, 提供了起点代码。这份教程里的例子是逐步递进的, 也就是说每个 step 的初始代码, 都是前一个 step 的完整解决方案。
2024-06-17 00:20:53 969
原创 在WSL2的Ubuntu中安装和使用Docker/Podman
在WSL2的Ubuntu中安装和使用Docker/Podman0. 目的当网络环境良好(例如在公司,能直接访问Google等)时, Docker/Podman 安装和使用不是问题。当网络环境不佳(例如在家里),要把 WSL2 的 Ubuntu 安装好 Docker, 并顺利拉取 Docker/Podman 镜像, 并且运行的镜像实例也需要把网络问题搞定,我踩了5个坑, 记录如下。我使用 WSL2, Ubuntu22.04。1. 第一个坑:Docker Desktop 的 “诱惑”Docker 官
2024-06-10 01:14:50 1570
原创 cmake报错: /usr/bin/ld: cannot open output file .: 是一个目录
目录,里面是 CMakeFiles 子目录、 Makfile 文件等。, 不带后缀(我在Linux上), 而子目录名字也是。根目录CMakeLists.txt里,使用了。报错原因是生成的可执行文件名字是。目录,改为其他名字。换言之, 已经存在了。解决思路: 消除冲突。
2024-05-06 12:19:12 425
原创 Wezterm的安装和简单配置
希望 wezterm 的主题配色,保持和 powershell 默认配色一致,也就是 Compell 主题。目的是在频繁使用 wezterm 时,原本的根据颜色判断文件信息(尤其是WSL里的Linux下,文件和目录颜色)依然可以使用。wezterm 默认用 cmd.exe, 我是 win11,希望默认用 powershell。
2024-05-05 23:02:08 1406
原创 ubuntu使用Remmina远程连接Windows桌面
默认的画质是Poor,桌面显示为黑色,Explorer资源管理里字体模糊的快断气了的样子,好处是不卡顿。之前的方案: 安装Win10虚拟机,虚拟机里连接 VPN, 然后用 mstsc 命令连接。新方案优点:不用安装虚拟机,免除了一堆资源占用(磁盘,CPU,VPN软件不工作问题)新的方案:连接VPN后, 开启Remmina直接连接远程 Windows 桌面。Domain:如果是公司电脑,通常有一个公司的域。Protocal: 选择RDP协议即可。用户名:你的远程windows的账号。
2024-05-05 11:09:47 1484 1
原创 EasyConnect本地环境异常(Windows)
全新安装的 VMware 里的 Windows10, 打算连接公司 VPN, 访问了 https://vpn.xxx.com.cn 获取了 EasyConnect 客户端。已经更新了 Windows 到最新版,包含了 redistribution 2013/2015 的安装。尝试了兼容模式、管理员模式,重启虚拟机,重启物理电脑,都无效。
2024-05-05 09:43:02 2136
原创 ‘iostream‘ file not foundclang(pp_file_not_found)
遇到 iostream 头文件画红色波浪线的报错, 也无法跳转。最后查出来是 brew install 了 LLVM 并且(莫名其妙的)放到了 PATH 里导致的。两个环境变量, 导致 cmake 构建时候找到的是 apple clang,和 homebrew 的 clang 不能很好的配合起来。在 macOS 用 VSCode 打开 test.cpp 文件, 使用 CMake 构建, 生成了。里 PATH 中的 homebrew 的 llvm 即可。显示的 brew 安装的 clang。
2024-04-03 17:10:39 1186
原创 Andrej Karpathy 给机器学习初学者的建议
是一段大约5分钟的访谈视频的精选片段。关于对 ml 初学者的建议。给 ml 初学者一点建议?我信仰 10000 小时理论。初学者不必纠结 “做什么”,应当关注 “做了多少”。10000小时是说要刻意努力.对普通人来说, 10000小时后,就会养成习惯,很自然了。对。并且要注意,在应用10000小时理论时候, 要和自己比较, 和别人比较对你只有害处。和你的1年前比较, 我觉得这是唯一有效方法。许多初学者都有选择困难症呢, 比如纠结用哪个 IDE.对,纠结中会选错,后来会发现错误。
2024-02-29 23:30:55 758
原创 cpptrace 库介绍
又或者, 你调用了第三方库(如果 opencv),你现在遇到第三方库里的报错挂掉了(“主动挂掉”), 但你不知道你的代码在哪里挂的, 在使用二分法排查时, 如果你大概确定了是某一个函数 A() 里面调用了 opencv 挂的, 那么从 main() 函数到 A() 函数的调用堆栈, 可以通过调用。函数, 然后在你的代码中,你打算主动挂掉程序的地方, 调用。具体到 c++ 代码的用法, 你需要包含头文件,定义一个。函数打印出来, 也是有一些帮助的。
2024-02-17 01:13:44 695
原创 Imgui(3) | 基于 imgui-SFML 的 mnist 数据集查看器
把mnist数据集保存为多张.png图像、 train-label.txt 后, 编写一个 GUI 程序,查看图像和对应的标签。这是一个简陋的demo,可以扩展它来支持其他数据集的显示。处理 mnist 数据集显示单张图像和label图像文件名列表的显示点选列表item后切换显示的图像和label通过使用 SFML, 加载并显示了了图像(texture->sprite->window)。
2024-02-15 17:47:37 757
原创 自制按键显示的程序
在看一些 up 主讲解 vim/emacs 等软件的界面操作时,使用了显示按键的软件。据说蒋炎炎讲课用的是自己写的,一度以为很神奇。现在我们用 SFML 手搓一个极其简陋的 demo 版本。由于先前几篇的练习, 对 SFML 有了基本的使用经验的情况下, 对于显示按键的实现能够快速上手。主要思考点在于,怎样显示按键内容, 怎样清空内容。通过判断相邻两次按键的时间差,大于1秒就清空, 否则保持原内容。通过使用 switch case 语句,简化了 A-Z 的26个字母的判断。
2024-02-15 00:48:54 518
原创 Imgui(2) | macOS 绘制 CPU 占用率曲线
实现一个 CPU 占用率曲线绘制的程序, 并能通过按钮触发评测代码的运行;跨平台。使用到了 SFML, imgui-SFML, 以及 macOS 平台特有的 API.绘制曲线 - 以正弦函数为例获取和绘制所有 CPU 的占用率增加按钮: 在界面上开启和关闭评测程序提高绘制频率本篇使用 C++ 实现了一个简陋的 CPU 占用率界面程序, 给出了实现的关键部件, 以及一些探索过程。
2024-02-14 15:51:30 1465
原创 Imgui(1) | 基于imgui-SFML改进自由落体小球
Imgui 是一个 GUI 库, 所谓 GUI 库, 一个直观理解是, 看这个库是否提供了 button 这样的 widget, 以及 layout 的设定。图形库: 通常是基于 OpenGL 或 Vulkan 的封装,不需要提供 button 和 layout, 可以认为它们就是对于 texture 进行操控和显示。Qt 比较特殊,既能作为 GUI 库, 又能作为图形库。不过 Qt 的 license 不友好, 不推荐使用。Dear ImGui。
2024-02-14 00:13:59 1152
仿BeyondCompare的两张图像比较功能,Qt5实现的源码工程
2022-05-01
emacs-27.1-x86_64.zip
2020-10-19
cmake-3.19.0-rc1-win64-x64.zip
2020-10-18
freeglut-3.2.1-vs2017-x64.zip
2020-10-16
cmake-3.18.4-win64-x64.zip
2020-10-13
OneFlow深度学习框架源码
2020-08-17
带Python3和CUDA10支持的Caffe
2020-08-17
cuDNN8-Developer-Guide.pdf
2020-08-16
cmake-3.18.0-win64-x64.zip
2020-08-16
cmake-3.18.0-Darwin-x86_64.tar.gz
2020-08-16
vulkansdk-linux-x86_64-1.1.126.0.tar.gz
2020-08-16
diffutils-3.7.tar.xz
2020-08-16
smartgit-linux-20_1_3.tar.gz
2020-08-16
cmake-3.15.0-Linux-x86_64.tar.gz
2020-08-16
Linux下懒人安装cudnn的脚本,适合任意cudnn版本
2020-08-16
逆透视变换IPM源码
2020-08-16
imageset-viewer.py
2020-08-01
WinCodeHelper.exe
2019-10-08
带cmake支持的protobuf2.6.1源码
2018-11-19
HOG+SVM原版C++代码,略修改,编译成功
2016-07-17
pedestrian_HOG_SVM_Inria_Caltech
2016-02-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人