视频是不能 P 的系列:使用 Dlib 实现人脸识别
视频是不能 P 的系列:使用 Dlib 实现人脸识别 本文介绍了使用 Dlib 库实现人脸识别的方法。通过 Dlib 的 compute_face_descriptor() 方法,将人脸转化为 128 维向量,再利用支持向量机(SVM)进行模型训练,以识别不同人物。文章详细记录了从人脸检测到特征值计算,再到模型训练和识别的整个流程,并通过实验显示,该方法的识别率达到了 94.58%,是一种相对可靠的人脸识别方案。此外,还探讨了使用 SVM 优化识别效率的可能性以及 OpenCV 的 LBPH 方法的局限性。
浅议分布式链路追踪与日志的整合
浅议分布式链路追踪与日志的整合 最近阅读了一篇关于分布式链路追踪和日志系统整合的文章,主要介绍了在.NET中利用Activity、ActivitySource和ActivityListener等API实现分布式追踪的方法。这些API可以被视为微软对OpenTelemetry规范的实现,其中每个Activity对应一个Span。文章还介绍了如何利用自定义TraceId和NLog.DiagnosticSource等工具实现将TraceId渲染到日志中,以实现更好的日志查询和分析。最后,作者分享了如何利用OpenTelemetry SDK自动采集HttpClient和ASP.NET Core的诊断信息,并探讨了分布式追踪与日志整合的实践方法。文章以深入浅出的方式介绍了相关概念和技术,提供了有关链路追踪和日志系统整合的有益见解。
关于 Git 大文件上传这件小事
关于 Git 大文件上传这件小事 在这篇文章中,作者分享了在使用Git时遇到的大文件上传问题以及如何应对。作者提到了Git LFS扩展的使用方法,包括安装、追踪文件和提交大文件的步骤。此外,文章还介绍了在提交大文件后如何处理历史记录中的大文件以及通过git filter-branch命令重写提交历史的方法。最后,作者总结了文章的主要内容,强调了对Git LFS和大文件处理的重要性,以及在解决问题过程中可能遇到的挑战。
.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 模式下的日志收集策略,以及配置文件示例和实际操作步骤。文章通过讲述作者的个人思考和体验,总结了日志收集工具的选择和使用建议。
聊一聊前端图片懒加载背后的故事
聊一聊前端图片懒加载背后的故事 博主通过采取一系列优化措施,成功将博客的首屏渲染时间从2.0 秒缩短到了 1.7秒。这些措施包括使用 CDN 加速、压缩图片、生成缩略图和采用懒加载技术。文章主要介绍了前端图片懒加载技术,解释了其概念、目的和实现方式。懒加载是一种通过延迟加载来优化网页性能的方法,尤其适用于图片较多的网页。文中介绍了三种实现懒加载的策略:监听滚动事件、使用 IntersectionObserver API 和利用浏览器原生的 `loading='lazy'` 属性。通过比较这三种方法的优缺点,作者推荐结合使用前两种方法以更精确地控制懒加载的细节。文章最后强调了懒加载在前端性能优化中的重要性,并提供了示例代码供读者参考。
杂感·七月寄望
杂感·七月寄望 本文通过多个主题探讨了生活中的矛盾和情感。首先以桃花潭无桃花比喻人们对事物不切实际的期待,并通过汪伦与李白的故事强调真诚的价值。接着,作者表达了对刺杀事件的震惊,并通过《金色梦乡》一书探讨了牺牲少数人的问题,以及在危机时刻的个人自救。文章还讨论了人类情感的建立,以及作者对亲密关系的思考,通过播客和网络互动反思创作自由和性别角色。最后,文章指出人们在不同角色和年龄阶段面临的双重标准,以及对平衡的追求,强调世界的质感和动态平衡的重要性。
支持外部链接跳转的 Vue Router 扩展实现
支持外部链接跳转的 Vue Router 扩展实现 Vue Router 是 Vue 中重要的插件,特别在单页面应用中起着关键作用。随着页面概念逐渐消失,路由根据URL确定显示内容。文章介绍了处理内部和外部链接的问题,提出了在 Vue Router 基础上实现外部链接跳转的扩展思路。通过自定义组件 MyRouterLink,区分内部和外部链接并支持传递URL参数,解决了 Vue Router 不支持外部链接的问题。讨论了如何给出站链接携带令牌信息,通过指令或组件内部处理统一附加参数。最终强调了在项目中统一使用规范化组件的重要性。
视频是不能 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解决测试类中共享数据的初始化和销毁问题。最后分享了作者对写作计划和技术实践的心得体会。
再议 DDD 视角下的 EFCore 与 领域事件
再议 DDD 视角下的 EFCore 与 领域事件 在这篇文章中,作者分享了在工作中使用事件/消息驱动业务的经历和思考。作者回顾了过去在实现数据库审计、数据同步等问题时的经历,并逐步接触了领域驱动设计(DDD)中的领域事件概念。文章重点讨论了如何通过在实体类中添加领域事件属性,并在DbContext的SaveChanges方法中分发事件来实现延迟执行消息发布的方案。作者还探讨了使用EntityFramework的SaveChanges Events特性和拦截器来处理领域事件的方法。最后,作者分享了对软件开发和业务模式的反思,以及对DDD在当前业务中的适用性的疑问。文章涵盖了事件驱动业务模式、DDD理念、数据库审计、消息队列等内容,展现了作者在技术实践和思考中的成长与思考。
Vue.js 前端项目容器化部署实践极简教程
Vue.js 前端项目容器化部署实践极简教程 本文介绍了在「微雨燕双飞」的一天中,作者接到朋友询问前端容器化部署问题的电话。作者分享了使用 Docker 容器化部署前端项目的实践教程,以 Vue.js 为例。通过编写 Dockerfile 实现多阶段构建,包括使用 node.js 构建前端项目和部署到 Nginx 静态文件服务器等步骤。另外,还提及了 Nginx 的配置以及使用 OpenSSL 创建证书的过程。最后,作者鼓励读者根据教程进一步完善部署,并展望了未来将撰写关于 ASP.NET Core 测试的文章。
再见,人间四月天
再见,人间四月天 在这个文本中,作者描述了从外面回家的经历,感受到夜晚的氛围和市井生活的变化。他提到因疫情未能回家过五一假期,对家庭和放假的看法,以及与人的相遇带来的微妙体验。作者思考着对小孩、生活状态和回忆的态度,以及随着年龄增长对过往的理解。最后,他分享了对时尚、生活哲学和未来的思考。整体内容涵盖了家庭、生活体验、人际关系和个人成长等方面的感悟。
Python 图像风格化迁移助力画家梦想
Python 图像风格化迁移助力画家梦想 这篇文章探讨了风格化迁移的概念,并以图像风格化迁移为例进行讨论。文章提及了人人都是食神、产品经理、艺术家的观点,引出了图像风格化迁移的背景和意义。详细介绍了风格化迁移的定义、实现原理以及算法支撑,包括神经网络在图像风格化迁移中的应用。最后,作者分享了自定义模型训练的尝试和结果,并通过图像展示了传统水墨画风格迁移的效果。文章结尾以对艺术与技术的思考和对创作的热情做出总结。