Logiase Blog

Logiase Blog

Thoughts, stories and ideas.

C++

现代C++开发的小Tips

现代C++应该注意的地方,与C和传统C++不同,现代C++标准中添加了许多额外的关键字或者函数来帮助构建更加安全高效的应用。 我们应该停止使用以前的方法,多使用这类新特性。 会持续更新) #define宏定义变量 不要再使用#define来定义一个变量,使用constexpr。 // 不太行.jpg #define MAX_SIZE (100) // 好.jpg class Consts { public: static constexpr int MAX_SIZE = 100; } 使用传统宏定义有着许多问题,比如,宏定义的变量没有类型,宏定义所做的内容仅仅是简单的文字替换,如果不控制使用范围,通常会造成难以溯源的奇怪错误。 而使用constexpr,编译器可以捕捉到类型错误,并且该错误可溯源。 使用前置定义代替#include 使用前置定义来代替#include可以显著的提升编译速度 // bad #include "MyClass.h" // good class MyClass;
2 min read
VPS

使用WireGuard进行内网穿透

由于学校的服务器(指实验室服务器)因为FRP被大量破解密码用于挖矿,所以学校封禁了FRP流量,在检测到FRP流量半小时后就会RESET掉。没有FRP,我们该如何从公网访问我们在校内的服务呢? 我的解决方案是WireGuard。 WireGuard简介 WireGuard是一个非常简单的VPN,并且已经被并入Linux内核(after 5.6),被视为下一代VPN协议。 同时WireGuard相比其他常见VPN协议有着更高的性能。 > 数据来自WireGuard官网 WireGuard安装 对于大部分发行版来说,WireGuard都可以使用其自带的包管理器进行安装。 WireGuard配置 WireGuard的配置十分简单,这也是它相对于其他传统VPN的优势,其实你直接使用默认配置都可以运行。 以我的需求为例,我在寝室有一台NAS,只能在学校中使用,如果我想从公网访问,我需要建立一个隧道,WireGuard就是这样的一个隧道。 首先生成两份密钥(两个公钥,两个私钥),分别命名nas和cloud,nas为我的寝室服务器,cloud为
2 min read
C++

用shiboken生成python的C++模块

一次实践,踩了 Windows 上的许多坑。 为什么要用 Shiboken ? 因为项目中使用了 PySide ,为了统一性,C++ binding 也同样使用 Shiboken。 现存 Shiboken 资料极其稀少,在搜集了各种开源项目和 StackOverflow 后,终于摸通了 Shiboken 用法,至少能在 Windows 下正常使用了(换到 Unix 下肯定也不会有这么多坑)。 > 如果你要使用 PySide6 Shiboken6 仅需更改版本号即可 Steps 0. Preparation 你需要安装相应 Python 库, Shiboken2 与 shiboken2_generator,其中 Shiboken2 可以通过正常方式使用 pip 安装,但 [shiboken2_generator]
3 min read