- 博客(30)
- 收藏
- 关注
原创 dlopen动态加载共享库出现符号未定义错误
在使用dlopen如果共享库之间存在依赖关系,可以通过LD_PRELOAD环境变量来强制预加载依赖库。如果共享库之间存在依赖关系,可以通过选项来关闭链接器的优化,强制保持这个依赖关系。如果共享库之间存在依赖关系,可以在构建共享库时显式链接它的依赖库,这样在加载共享库时,依赖库也会被加载进来。在模块化开发中,我们应该尽量使用第三种方法进行处理,将依赖关系交给模块自己去管理,而不是交给应用去处理。
2024-05-13 16:54:22
1061
原创 Emby Notifier——一个媒体通知推送服务
Emby Notifier 是 Emby Server 的媒体通知服务。它利用 Emby Server 的 webhooks 插件在添加新媒体时接收通知。然后它会格式化信息并将其发送到您的 Telegram 频道。
2024-04-30 10:10:50
2447
1
原创 关于字符串转换整数 (atoi) 的思考
文章介绍了解决LeetCode上字符串转换整数问题的两种方法:正则表达式和确定性有限状态机(DFA)。在使用正则表达式时,作者提出了一种提取有效整数字符串的正则表达式。并讨论了处理溢出的三种方法:使用`std::stoi`函数,字符串比较和乘法判断。在确定性有限状态机方法中,详细介绍了状态机的定义、事件和状态转移表,并给出了代码实现。通过对两种方法的比较,文章总结了在实际业务中的应用场景和性能差异,并强调了溢出边界判断条件的优化对简化代码的重要性。
2024-04-12 00:04:26
652
原创 Media-Download-Helper 完整部署说明
介绍了Media-Download-Helper 项目完整的部署教程,包括如何创建 Telegram Bot,如何申请 TMDB API Key,如何配置 Google Apps Script,如何部署 Downloader.py,以及如何使用 docker-compose 运行项目。
2024-03-08 16:23:53
973
原创 Media-Download-Helper 项目简介
这是一个关于Media-Download-Helper的项目介绍,它利用电报机器人、Google Apps Script和qbittorrent实现远程下载多媒体资源,并在下载完成后推送影片信息。项目依赖Python 3.11, Telegram Bot, Google Apps Script, Qbittorrent, TMDB API Token。v2.0.0版本提高了安全性和便利性,但存在轮询间隔和缓存问题。
2024-03-08 16:07:44
918
原创 Moonlight Stream 和 SteamLink 远程串流失败问题解决
文章主要讲述了如何解决远程串流失败的问题。当远程PC被锁定时,使用Moonlight Stream或SteamLink进行远程串流可能会失败。文章提出了一个解决方案,即使用Windows的`tscon`命令来注销当前的远程登录,从而解锁远程PC。这个方法需要在远程PC上创建一个`unlock.bat`文件,并以管理员身份运行。此外,文章还分享了一个链接,这个链接介绍了如何在公网环境下远程连接家里的PC。
2024-02-22 14:06:56
2382
1
原创 记一次 unRaid U盘损坏修复的过程。。。
描述了作者修复UnRaid U盘损坏的过程。作者首先发现备份失败,然后尝试了手动打包、删除Nvidia Drive插件、重新制作U盘和解决ERROR等方法。虽然系统恢复正常,但问题的根本原因仍未找到。作者对备份策略做了修改,并在最后尝试了一些额外的折腾。
2023-12-28 11:39:50
1898
原创 Git —— Commit Message 规范介绍
日常开发中,我们经常会使用到 Git 进行代码管理,而 Git 中最常用的命令就是git commit,我们通过 commit 命令将修改后的代码提交到本地仓库,然后再通过git push命令将本地仓库的代码推送到远程仓库。git 规定提交时必须要写提交信息,作为改动说明,保存在 commit 历史中,方便回溯。规范的 log 不仅有助于他人 review, 还可以有效的输出 CHANGELOG,甚至对于项目的研发质量都有很大的提升,尤其是一些长期持续迭代维护,且多版本长期并存的项目。
2023-12-26 14:41:39
2241
原创 开启 Cloudflare CDN 代理,实现 IPv4 to IPv6 转换
通过将域名托管到Cloudflare,并开启CDN代理,从而实现无 IPv6 网络环境下对纯 IPv6 源站的访问。本文将详细介绍如何将腾讯云域名托管至Cloudflare,如何开启CDN代理和有效性验证,以及如何修改DDNS配置实现基于Cloudflare的动态域名解析
2023-06-05 19:44:11
20278
5
原创 fail2ban 防止暴力破解密码
由于服务器被暴力攻击破解,并被植入了Xmrig挖矿程序,因此安装部署 fail2ban 服务用于抵御暴力工具,并封禁攻击者 IP。本文简要介绍了在 unRAID 服务器中如何安装配置 fail2ban 服务,并简单测试和展示封禁效果
2023-05-31 16:49:06
1231
原创 Git —— submodule 操作说明
如果出现子模块提交了更改记录,但是未推送到远程仓库,主模块提交了子模块引用记录的变更,并完成了推送到远程仓库的操作。由于子模块和主模块是独立的两个仓库,主模块仅仅应用了子模块的 url 和 commit id。因此当子模块推送更改后,生成新的 commit id,但是主模块对子模块的引用配置并未发生更改,因此需要在主模块中同步进行提交更改。这里存在一个较大的坑,默认检出的子模块并不属于任何分支,而是一个 “detached head” ,虽然可以提交更改,但是并没有本地分支跟踪提交的更改,这意味着。
2023-05-22 11:06:59
2136
原创 阿里云网盘媒体库海报墙加载卡顿解决办法
阿里云webdav挂载影视媒体库,但是由于阿里云API的QPS限制,导致媒体库的海报墙加载延迟,卡顿等问题,通过设置Emby媒体信息读取和存储方式,优化海报墙展示效果
2023-05-18 12:00:08
4071
2
原创 DDNS动态域名解析IPv6地址
在本文中,详细介绍了注册申请一个二级域名,并通过设置域名的 DNS 解析记录,使得可以通过域名来对内网下的windows主机进行远程访问。完全自定义的二级和三级域名,可以是具备标识意义的名称,完美解决了 IP 地址难以记忆的问题。并且通过 DDNS 服务插件完成了当 IP 地址变更时,自动更新对应域名的 DNS 解析记录,确保 IP 变更时,域名仍然能正确指向我们的终端设备。
2023-04-17 17:25:58
13040
12
原创 使用公网IPv6远程访问内网设备
IPv4公网IP一号难求的环境下,如何优雅的使用公网IPv6进行远程访问?本文将以中国移动的宽带和光猫为例,进行IPv6的设置说明,并实现通过IPv6地址和Windows系统自带的远程工具"mstsc",远程访问内网的Windows主机。
2023-03-20 11:50:38
15568
原创 一个“size_type”引发的Bug
因为std::vector::size()方法返回一个了一个无符号整型类型“size_type”的结果,所以整个运算过程都被编译器隐式转换为无符号数的运算,从而导致减法运算结果溢出和大小比较运算结果异常。
2023-02-15 15:48:02
183
原创 windows10挂载webdav
windows下挂载本地基于http的webdav服务,会出现网络错误和文件夹无效的错误。本文将介绍使windows支持http协议的webdav服务挂载的方法。
2023-01-31 15:44:31
33391
15
原创 C++ Lambda表达式
在C++11和更高版本中,Lambda表达式(通常称为Lambda)是一种在被调用的位置或作为参数传递给函数的位置定义匿名函数对象(闭包)的简便方法。Lambda通常用于封装传递给算法或异步函数的少量代码行。Lambda表达式是C++11中一个较为重要的特性,其来源于函数式编程的概念,也是现代编程语言的一个特点。下文将记录和简述Lambda表达式中的基本概念和用法。
2023-01-30 17:29:55
4640
1
原创 Linux命令简记
由于部分linux命令使用频率较低,导致遇到时常常忘记命令选项的含义和使用方法,因此在本文中记录linux命令的常用选项和具体使用方法,并对部分命令记录使用实例。当前记录:tar,grep,dd...持续更新中
2023-01-16 14:12:57
486
原创 基于Nginx实现Emby硬件转码
Emby Server是一个开源的流媒体中心软件,可以非常方便的管理和维护电影,电视剧集等媒体库,并生成强大美观的海报墙。并且全平台的客户端,使其跨设备观看变得非常便利。本教程将辅助实现Emby服务器的硬件转码等功能。
2022-12-29 15:15:58
5186
原创 Unraid系统盘制作,备份和恢复
由于Unraid OS使用硬盘阵列的形式构建存储池,能尽可能利用硬盘空间,并且可以通过创建校验盘保护数据,因此Unraid OS也不失为一个NAS系统的好选择。但是因为试用版需要在联网环境下完成授权,导致处于内网环境的NAS机器无法使用。网上虽然有大量的开心版,不过大多是通过第三方提供的一个keyMaker.exe对USB的GUID生成一个key文件,总感觉不是很安全。在爬了无数帖子后,终于在老毛子的一个论坛中找到了每个人都能轻松"转正",且安全的方法!论坛连接放在文末,近期论坛中已经释出6.11版本。
2022-12-29 11:44:19
6602
原创 Emby Server入库影片信息推送功能实现
借助python中的看门狗模块(“watchdog”)监视Emby媒体库目录,通过电报(telegram)的bot和channel,向频道订阅者推送Emby媒体库中新增影片信息,包括电影和剧集。项目源码已上传至github——docker image 上传至hub.docker.com——欢迎使用~
2022-12-28 11:26:36
1676
原创 scanf()踩内存定位记录
一、前情提要前段时间,有个临时需求,需要我提供demo给第三方用户进行测试,但是我不知道第三方用户提供的密钥明文,并且需要我去除掉我们的内部库。我觉得最简单的方法就是使用开源的openssl库,和使用scanf()让第三方用户手动输入密钥明文。我觉得scanf()对于一个刚学C语言的新手来讲应该也挺简单的,但是我却出现了第二次手动输入指定长度的字符串后,第一个字符串的第一个字符会被修篡改。本来应该立马能定位到的,但是我却折腾了挺久,所以还是决定记录一下。二、情景复现1、源码组成我们构造一个类似的源码
2021-01-06 00:36:20
284
原创 记一次gcc链接提示符号未定义错误
一、前情提要上周在使用第三方库的时候,出现链接提示符号未定义的情况。但是使用readelf查看了第三方so内部符号的属性时,可以看到实际是有定义的,但是so内部的符号与我报错的符号存在一定的差异。这就涉及到了extern "C"的作用和g++跟gcc之间对符号处理上的一些差异,拖了很久,今天完成一下这个问题的输出吧。二、符号差异1、现象我们这里简单模拟复现一下当时的情景。简单准备了一个so的源码**“func.cpp”**,包括其头文件"func.h"定义:// func.h#include &
2020-11-21 22:05:48
2651
原创 Linux下通过backtrace获取程序崩溃前堆栈信息
原文链接:http://www.ccccxy.top/coding/archives/2020/10/23/linux_backtrace_87/欢迎各位大神指导斧正!一、backtrace( )函数介绍/* Store up to SIZE return address of the current program state in ARRAY and return the exact number of values stored. */extern int backtrace (voi
2020-10-27 14:24:56
2836
原创 dlopen动态装载共享库
原文链接: http://www.ccccxy.top/coding/archives/2020/10/01/dlopen_load_shared_library_11/欢迎大神们评论指导和斧正一、基本说明显式运行时链接 (Explicit Run-time Linking),有时候也叫做运行时加载,程序自己在运行时控制加载指定的模块,即动态库,并且可以在不需要该模块时将其卸载。和普通的动态链接相比,显式运行时链接,可以使程序在需要使用到某个插件或驱动时,才将相应的模块加载进来,而不需要在一开始就将
2020-10-27 14:21:16
1610
原创 数据结构_3.1栈
数据结构(三)——(1)栈概述从数据结构看,栈是一种线性表,其特殊性在于它的基本操作是线性表的子集,是操作受限的线性表,同样的还有队列,也一样为操作受限的线性表,栈和队列都可称为限定的数据结构。但从数据类型来看,栈和队列是和线性表大不相同的两类重要的抽象数据类型。本章仅讨论栈相关内容,队列在下一章中进行探讨。一、栈的基本定义栈(stack),是限定仅在表尾进行插入和删除操作的线性表。因...
2020-04-28 01:52:02
251
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人