开源免费录屏和直播软件 - OBS Studio
OBS Studio 是一款开源、免费且功能强大的录屏与直播软件。它支持多平台(Windows、macOS、Linux),可通过场景与来源灵活配置画面,支持软件(x264)与硬件(QSV、NVENC、HEVC)编码器,满足从游戏直播到教学录制的多种需求。用户可在设置中配置直播服务、推流码、输出码率与分辨率,并通过插件扩展功能。OBS Studio 以其高度可定制、无广告、无收费的优势,成为全球主播与内容创作者的首选工具。
Mac 上的终端神器 - iTerm2
iTerm2 是 macOS 上功能强大的终端替代品,支持自定义配置、插件扩展和快捷键。通过 Homebrew 或官网下载安装后,可将其设为默认终端,并配合 oh‑my‑zsh、zsh‑syntax‑highlighting、zsh‑autosuggestions、autojump 等插件提升命令行体验。
群晖折腾记二 - 搭建Git Server
业余时间自己在做一些小项目,由于此类项目大多要求一定的保密性,此时使用类似Github这种必须开源的gitServer就不太适合了,而且家里有多台电脑,所以最好有一个代码管理工具协助管理,正好家里有一台群辉NAS,用群辉配置一个Git Server来满足这个要求。 1. 创建GitRepo目录首先,我们需要创建一个Git Server的数据存储的主共享目录,进入 控制面板 > 共享文件夹 > 新增(GitRepo)。 2. 创建gitcode用户接着,我们可以创建一个单独的git用户账户,用于代码提交,进入 控制面板 > 用户与群组 > 新增 。 其中,用户群组可以使用默认的 users ,也可以像我这样单独创建一个群组git: 分配共享文件夹权限时,将前面创建的GitRepo目录赋予读写权限: 应用程序权限可以全部允许,或者像我这样只勾选必要的权限: 3. 安装GitServer前往 套件中心 > 搜索与安装Git Server: 完成安装后,打开Git Server,勾选相应的用户权限: 4. 开启SSH进入 控制面板 &g...
群晖折腾记 - 搭建OpenWrt
最近有点怀旧,于是偷偷拿出吃灰很久的Switch,鬼使神差的打开了商城,买了这款《暗黑破坏神2》。 心情激动的启动游戏,打算去里面大杀四方。WTF!无法连接服务器?😂啥玩意还要连战网?众所周知,国区已经关停了。好在我有一台群晖NAS,正好可以安装一个OpenWrt来解决这个困扰。 1. 什么是OpenWrt?OpenWrt是三大主流路由器固件之一,本质上是是一个高度模块化、高度自动化的嵌入式Linux系统,拥有强大的网络组件和扩展性,常常被用于工控设备、电话、小型机器人、智能家居、路由器以及VOIP设备中。OpenWrt不同于其他许多用于路由器的发行版,它是一个从零开始编写的、功能齐全的、容易修改的路由器操作系统,OpenWrt支持常见路由协议,包括RIP、OSPF、OLSR、BATMAN等,适用于从小型网络、大型密集网络到无线Ad-hoc网络等各种场景。其架构如下所示: 2. OpenWrt安装NAS上安装OpenWrt有两种方法: 通过docker方式安装 通过VWM方式安装 2.1. docker方式安装在群晖的套件中心搜索docker或者containe...
如何搞定图床问题 PicGo + 腾讯云COS
本文介绍如何使用PicGo与腾讯云COS搭建图床,帮助公众号作者高效管理图片,避免手动上传和链接错误。并提供截图,解决权限和链接格式问题,适合发布图文的作者,并解决常见问题。
像玩游戏一样规划你的人生 - Notion积分打卡v1.0
本文介绍如何用 Notion 搭建“像玩游戏一样规划人生”的积分打卡系统。通过七个页面(月度跟踪、角色属性、奖励商城、任务清单、打卡记录、人生清单、习惯清单)实现任务、习惯与积分挂钩,激发持续打卡动力。
Makefile基础
Makefile基础 make 解决的是“按依赖关系增量执行命令”的问题。写 Makefile 的价值,不只是编译 C/C++,更是把项目里的重复构建动作标准化。 1. Makefile 到底在做什么一句话:声明目标、依赖和命令,让 make 决定何时执行。 基本规则: 12target: prerequisites commands 关键点: commands 前必须是 Tab,不是空格。 当依赖比目标“更新”或目标不存在时,命令会执行。 make 默认执行文件中的第一个目标。 2. 一个最小示例123456789101112app: main.o util.o gcc -o app main.o util.omain.o: main.c util.h gcc -c main.c -o main.outil.o: util.c util.h gcc -c util.c -o util.o.PHONY: cleanclean: rm -f app *.o 执行: 12make # 构建 appmake clean # 清理产物 3. 变量:避免重复1...
GMock学习笔记
1. Mock与Fake1.1. fakes(伪对象)和mock(模拟器)在测试驱动开发(TDD)社区中实际上往往意味着非常不同的东西: Fake有工作实现,但通常采取一些捷径(可能使操作更简单),这使得它们不适合生产。内存中的文件系统是一个fake的例子。 Mock是预期编程的对象,它们形成它们期望接收的调用的规范。 1.2. 使用Google Mock涉及三个基本步骤: 使用一些简单的宏描述你想要模拟的接口,他们将扩展到你的mock类的实现; 创建一些模拟对象,并使用直观的语法指定其期望和行为; 练习使用模拟对象的代码。 Google Mock会在出现任何违反期望的情况时立即处理。 在代码中有依赖,比如代码依赖ABC.cpp文件里的方法。这些方法还没有实现,这是应该是拿到了这些包含了这些方法的定义的头文件,ABC.h。 创建一个Fake程序,Fake_ABC.cpp和Fake_ABC.h. 在Fake_ABC.h里include ABC.h. 并定义新的行为Fake_action_1(), Fack_action_2(). 这些行为多数是用来帮助获取Fak...
C++ string转enum
1. 问题前阵子遇到个问题,需要传递接口的admin状态,是这么定义的: 12345enum IfaceAdminStatus{ up, down}; 然后从API上获取的接口又是string类型: 1234567891011121314151617181920struct EtherIfaces{ std::string ifaceName; std::string adminState; EtherIfaces(const std::string &ifaceName_, const std::string &adminState_): ifaceName(ifaceName_), adminState(adminState_) { } EtherIfaces() { } ~EtherIfaces() { }}; 所以需要将string转enum处理。因为是C++小白,只能去...
C++ 并发编程
自C++11标准以来,C++语言开始支持多线程模型。借助多线程模型,我们可以开发出更好的并发系统。本文以C++语言为例,讲解如何进行并发编程。并尽可能涉及C++11,C++14以及C++17中的主要内容。 1. 前言1.1. 为什么要并发编程大型的软件项目常常包含非常多的任务需要处理。例如:对于大量数据的数据流处理,或者是包含复杂GUI界面的应用程序。如果将所有的任务都以串行的方式执行,则整个系统的效率将会非常低下,应用程序的用户体验会非常的差。 另一方面,自上个世纪六七十年代英特尔创始人之一 Gordon Moore 提出 摩尔定律以来,CPU频率以每18个月翻一番的指数速度增长。但这一增长在最近的十年已经基本停滞,大家会发现曾经有过一段时间CPU的频率从3G到达4G,但在这之后就停滞不前了。因此最近的新款CPU也基本上都是3G左右的频率。相应的,CPU以更多核的形式在增长。目前的Intel i7有8核的版本,Xeon处理器达到了28核。并且,最近几年手机上使用的CPU也基本上是4核或者8核的了。 由此,掌握并发编程技术,利用多处理器来提升软件项目的性能将是软件工程师的一项...







