前端视频播放技术概览
前端视频播放技术概览 2023年下半年,探讨了视频播放技术中的HTML5、RTMP、RTSP、HLS、FLV、WebRTC等内容。介绍了各种视频播放协议的特点和应用,以及搭建流媒体服务器的示例。探讨了Flash的消亡对视频播放领域的影响,以及前端技术的发展趋势。最后展望了未来的WebRTC技术在实时音视频通信方面的应用前景。文章内容涵盖了技术发展历史、实践应用和未来展望等方面,是一篇综合性的前端视频播放技术概览。
温故而知新,再话 Python 动态导入
温故而知新,再话 Python 动态导入 本文回顾了 Python 中的动态导入机制,并通过作者开发基于 ChatGPT 的人工智能管家 Jarvis 的实践,探讨了如何利用动态导入实现插件化和按需加载模块。作者介绍了使用 importlib 模块和 __import__ 函数来动态导入模块的方法,并通过示例代码展示了如何根据不同条件导入不同的模块,以及如何通过动态导入解决环境差异带来的问题。文章还提到了作者对使用 virtualenv 管理 Python 版本和开发环境的体验。
后 GPT 时代,NLP 不存在了?
后 GPT 时代,NLP 不存在了? 在讨论中,提到了以 ChatGPT 为代表的大型语言模型对自然语言处理(NLP)领域的冲击,以及以 Rasa 为代表的传统NLP解决方案。对于“NLP已死”和“NLP不存在了”的观点,作者认为这代表了通用智能和专业智能两种人工智能方向。作者分享了在开发人工智能管家“贾维斯”过程中遇到的意图识别问题,并通过两种方法进行解决。最终强调了在机遇与挑战并存的时代中,选择合适的技术和平衡通用和专业智能的重要性。
视频是不能 P 的系列:使用 Milvus 实现海量人脸快速检索
视频是不能 P 的系列:使用 Milvus 实现海量人脸快速检索 本文探讨了如何利用 Milvus 向量数据库实现海量人脸数据的快速检索。作者首先回顾了人脸识别项目中遇到的挑战,包括性能下降和快速判断人脸是否在样本库中的问题。随后,文章介绍了向量化的概念以及 Milvus 的核心功能——相似度检索。通过详细的步骤和代码示例,展示了如何安装 Milvus、创建集合、插入数据、创建索引以及执行相似度搜索。此外,文章还讨论了 Milvus 在人脸识别上的应用,包括提取人脸特征、写入向量数据库以及查询最相似的人脸。最后,作者对使用向量数据库进行人脸识别的尝试和探索进行了总结,指出尽管向量数据库可能无法完全避免循环结构的宿命,但在样本数目不大的情况下,其优势并不显著,但仍然是值得尝试的方案。
GDI+下字体大小自适应方案初探
GDI+下字体大小自适应方案初探 在讨论中提到,人类在面对未知领域时会自然地分为不同派别,如降临派、拯救派和幸存派,同时探讨了人类对于机器取代工作的担忧以及人工智能与数学之间的关系。在具体技术上,介绍了通过GDI+绘制圆形和椭圆形印章的方法,以及基于宽高和周长动态调整字体大小实现字体自适应方案。文章通过数学知识的运用展示了对于确定性的追求和对复杂世界的探索,强调了科学与技术在带来便利的同时也展现了人类对确定性的渴望。
小爱音箱集成 ChatGPT 的不完全教程
小爱音箱集成 ChatGPT 的不完全教程 本文是关于如何将 ChatGPT 集成到小爱音箱中的不完全教程。文章首先介绍了智能家居的基础概念,包括 WIFI、ZigBee 和 BLE 等通信协议,以及智能家居平台的选择。接着,作者分享了如何使用 MiService 和 python-miio 库来控制米家设备,并通过编程获取小爱音箱的控制指令。文章还详细介绍了接入 ChatGPT 的方法,包括安装 openai 包和设置 API 密钥。最后,作者提出了两种集成 ChatGPT 和小爱音箱的思路:一种是通过获取对话记录并用 ChatGPT 回答问题,另一种是通过蓝牙直接连接音箱。文章以对未来 AI 发展的思考作为结尾。
关于 Docker 容器配置信息的渐进式思考
关于 Docker 容器配置信息的渐进式思考 作为一名软件工程师,作者经常使用各种配置文件如 YAML、Markdown、Dockerfile 等进行工作。作者认为程序员追求配置的动态灵活性是天经地义的事,却发现在 DevOps 理念流行后,程序员们常常要像运维一样处理各种配置文件,这使得编程工作变得繁琐。在探讨容器、配置文件和环境变量时,作者通过回顾不同阶段的实践,分享了对配置管理的思考。起初,作者通过Dockerfile将配置文件复制到容器中,但很快意识到不同环境需要不同的配置。随后尝试使用环境变量来实现动态配置,并使用工具`envsubst`来注入环境变量到配置文件中。然而这种方法需要重新构建镜像,作者随后采用将配置更新脚本放入`CMD` 或 `ENTRYPOINT` 指令中,以便通过重启容器来更新配置。尽管运维同事更倾向于使用 `sed` 命令,但这种方法增加了维护成本。作者提到了配置文件挂载到主机的方法,这使得修改主机上的配置文件可以即时更新容器内的配置。Docker Swarm 提供了一种管理配置文件的机制,而 Kubernetes 则使用 ConfigMap 来管理容器内的配置。作者认为容器内的配置管理应让配置与容器分离,即使动态生效而不是固化在容器中。文章最后,作者提出配置管理的关键在于找到变化与不变之间的平衡,反映出技术选择往往不是选择题而是填空题。作者幽默地以古代钱币的外圆内方比喻自己的技术态度,认为一心只想搞技术的想法真实且不做作,并欢迎大家在评论区交流想法。
在 Docker 容器内集成 Crontab 定时任务
在 Docker 容器内集成 Crontab 定时任务 本文介绍了在Linux中使用Crontab执行定时任务的基础知识,包括Crontab文件的格式和示例,以及如何通过编写脚本和设置Crontab定时任务来解决Kerberos票据过期的问题。作者还分享了在Docker容器内集成Crontab定时任务的方法,包括如何编辑Crontab文件、查看定时任务日志、处理环境变量等技巧。最后,提供了相关链接供进一步学习参考。
为你的服务器集成 LDAP 认证
为你的服务器集成 LDAP 认证 这篇文章介绍了作者在企业级应用项目中接触到的面向企业和用户的项目区别,重点讨论了为什么需要 LDAP 认证以及如何在 Nginx 和 Apache 服务器上集成LDAP认证。在具体操作中,展示了如何在 Nginx 中安装nginx-auth-ldap 模块以及在 Apach e中使用 mod-authnz-ldap 模块实现 LDAP 认证,并简要介绍了在后端实现 Basic 认证的流程。文章最后总结了 Nginx 和 Apache 在 LDAP 认证方面的不同之处,并对企业级应用的认证方案提出了讨论。
视频是不能 P 的系列:使用 Dlib 实现人脸识别
视频是不能 P 的系列:使用 Dlib 实现人脸识别 本文介绍了使用 Dlib 库实现人脸识别的方法。通过 Dlib 的 compute_face_descriptor() 方法,将人脸转化为 128 维向量,再利用支持向量机(SVM)进行模型训练,以识别不同人物。文章详细记录了从人脸检测到特征值计算,再到模型训练和识别的整个流程,并通过实验显示,该方法的识别率达到了 94.58%,是一种相对可靠的人脸识别方案。此外,还探讨了使用 SVM 优化识别效率的可能性以及 OpenCV 的 LBPH 方法的局限性。
.NET 进程内队列 Channel 的入门与应用
.NET 进程内队列 Channel 的入门与应用 近期,博主为FakeRPC项目增加了WebSocket协议支持,利用全双工通信特性在一个连接中发送多条数据。考虑WebSocket协议是为了验证JSON-RPC的可行性,并为后续支持TCP/IP协议铺路。在实现FakeRPC过程中使用了.NET中的Channel数据结构来实现消息转发。Channel是.NET Core 3.0后推出的集合类型,主要应用于生产者-消费者模型。通过示例展示了Channel的应用,以及在FakeRPC中如何利用WebSocket协议实现双向通信。介绍了Channel的特性和在数据流处理中的应用,展示了其在性能方面的优势。通过实例展示了利用Channel实现数据流模式的过程。总结指出,过去的经历会影响认知,但持续学习新技术是必要的。
使用 Fody 实现 .NET 的静态编织
使用 Fody 实现 .NET 的静态编织 本文介绍了在项目中使用 `OnMethodBoundaryAspect` 基类记录方法日志的经历,以及澄清了之前对项目使用的是 PostSharp 的误解。讨论了面向切面编程(AOP)中的静态编织和动态代理,以及在.NET中使用Fody进行静态编织的实践。展示了使用Fody插件实现静态织入功能的过程,包括编写插件、修改IL代码等细节。通过自定义插件HelloWorld.Fody展示了静态编织的原理和效果。最后总结了静态编织的重要性以及通过IL代码操作插件的实现方式。整体内容涵盖了AOP、Fody插件、IL代码修改等方面的知识。
.NET Core + ELK 搭建可视化日志分析平台(下)
.NET Core + ELK 搭建可视化日志分析平台(下) 本文介绍了从 Logstash 到 Filebeat 到 Fluentd 的日志收集工具演进过程,重点讨论了各工具的特点、优缺点以及配置方法。详细说明了 Filebeat 的轻量级特性及配置方式,以及 Fluentd 和 Fluent-Bit 之间的对比和使用方法。同时介绍了 Tail 模式和 Forward 模式下的日志收集策略,以及配置文件示例和实际操作步骤。文章通过讲述作者的个人思考和体验,总结了日志收集工具的选择和使用建议。
视频是不能 P 的系列:OpenCV 和 Dlib 实现表情包
视频是不能 P 的系列:OpenCV 和 Dlib 实现表情包 2020 年底,博主开启了一个关于视频不能 P 的系列,探讨了视频/图像处理思路,涉及 OpenCV、Dlib 和表情包等。Dlib 通过 68 个特征点定位人脸五官,实现人脸检测和识别,提供更多探索可能。文章介绍了使用 Dlib的人脸特征点绘制和抠取,生成表情包的过程,包括创建掩膜、裁切图片、阈值处理等。最终,将人脸与熊猫人合成为表情包。文章总结了 Dlib 的应用,探讨了处理图像的有趣过程,展示了程序员的浪漫之处。
不得不说的 ASP.NET Core 集成测试
不得不说的 ASP.NET Core 集成测试 这篇文章讨论了ASP.NET Core集成测试的重要性,从单元测试和Mock的角度出发,探讨了在现实软件世界中“万物皆可模拟”的理想与挑战。介绍了使用Moq进行模拟测试的方法,并引出了集成测试的必要性和TestServer的作用。详细讨论了如何使用TestServer进行API、中间件、HttpContext和gRPC的测试,并介绍了通过WebApplicationFactory实现更优雅集成测试的方法,结合xUnit的IClassFixture解决测试类中共享数据的初始化和销毁问题。最后分享了作者对写作计划和技术实践的心得体会。