独立博客
迁移 Hexo 博客到 Google 渐进式 Web 应用(PWA)
本文讨论了渐进式网络应用(PWA)的概念及其关键技术,以及作者将 Hexo 静态博客改造成PWA的过程和结果。文章首先提出,知识更新速度快,技术人应如何适应变化。随后,介绍了 PWA 的核心技术,如 ServiceWorker、Web App Manifest 以及 Push API 和 Notification API,旨在解决传统Web应用的网络依赖和用户体验问题。ServiceWorker 通过拦截网络请求和提供离线缓存能力,实现应用的离线工作;Web App Manifest 允许应用有图标、启动页等原生应用特性;Push API 和 Notification API 提高了应用与操作系统的集成度。作者在改造 Hexo 博客时,加入了 manifest.json 文件和服务工作线程,通过使用 hexo-offline 插件简化 Service Worker 的生成。然而,实际操作中遇到了 Service Worker 导致页面加载延迟和 Web App Manifest 在 Android 设备上的支持问题,最终未能在离线状态下访问博客。尽管尝试失败,作者认为过程中的思考和学习是有价值的,并强调开发人员应具备跨语言和平台的开发能力。最后,作者对 Web 技术的未来发展持乐观态度,希望其能继续进步。
开发工具
持续集成在 Hexo 自动化部署上的实践
本文探讨了持续集成相关话题,将战略和战术比作抽象类和具体类,将面向对象设计映射到现实等级制度。重点讨论了DevOps概念,以及持续集成(CI)和持续部署(CD)在其中的关键性。详细介绍了通过Hexo和TravisCI实现自动化部署的实践,旨在提高代码质量和加速迭代过程。讨论了持续集成的概念和重要性,以及通过TravisCI配置和关联Github实现自动化构建的流程。
生活感悟
不如归去
这段文字主要描述了作者对回家与家人之间的情感纠葛和思考。作者在火车上回家的途中,回忆起与家人的关系,表达了对家人的思念和珍惜,以及对家的向往和渴望。作者感叹时间的流逝,意识到家人的年迈与等待,表达了对家人的爱和责任感。同时,作者也反思了自己对家人的陪伴和关怀,以及对成熟和人生意义的思考。整体表达了对家庭、亲情和归属感的珍视和思考。
生活感悟
秋风劲似去年时
这段文字描述了作者在连续阴雨天中的感慨和回忆,提及对过去的爱情和错过的时光的反思。他谈及对自己喜欢的女孩子的感受和变化,表达了对时间流逝和人生的深沉思考。同时,他探讨了关于成熟、感情和人生选择的思考。最后,他展示了对爱情和人生的美好幻想。
生活感悟
从 React 专利事件看开源软件许可
Payne在其博客中讨论了React专利事件引发的开源软件许可和商业化之间的平衡问题。他回顾了React专利事件的发展历程,指出了主流开源软件许可证(如GPL、BSD、MIT、MPL、Apache和LGPL)的特点。他认为React专利事件受到关注的原因在于专利许可的不对等性和对开源社区的负面影响。最终,Facebook宣布将React的开源协议修改为MIT,引发了社区的一次胜利。Payne鼓励人们在选择开源软件许可证时找到商业化和开源之间的平衡点,并强调了技术的不断变化和努力打好基础的重要性。
数据存储
Redis 缓存技术学习系列之 Lua 脚本
Payne在他的博客中分享了关于Redis中Lua脚本的学习,探讨了如何通过Redis内置的Lua解释器执行脚本,以及为什么选择脚本语言进行开发。他介绍了Redis中处理脚本的Eval系列和Script系列命令的用法,以及如何在Redis中使用Lua脚本进行交互。此外,他展示了如何通过具体案例演示Redis与Lua脚本的交互,并讨论了Lua数据结构与Redis数据结构之间的转换。最后,他分享了为什么使用Lua脚本以及在处理类型转换时的一些原则。整体而言,他强调了Lua脚本在Redis中的应用和重要性。
编程语言
基于特性(Attribute)的实体属性验证方案设计
Payne在博客中探讨了数据校验的问题,介绍了对该话题的兴趣源自最近工作需求,并分享了关于Attribute和Property的区别。他讨论了.NET中的Attribute的概念和使用方式,展示了一个数据校验方案的设计思路和实现技术要点,以及如何通过示例对实体属性进行验证。最后,他总结了特性和属性的概念差异,Attribute在.NET中的应用以及验证方案的设计思路,鼓励大家努力提高业务代码质量。
生活感悟
《大护法》:花生镇里的成人童话
《大护法》是一部反乌托邦式的成人童话电影,通过讲述花生人觉醒和反抗压迫者的故事,探讨了人类历史的永恒话题。影片中,主角“红冬瓜”(大护法)在花生镇寻找太子的过程中,逐渐揭示了统治者欧阳吉安利用恐惧和谎言来控制花生人的真相。电影中的太子、小姜、庖卯等角色分别代表了不同的人性面貌,展示了觉醒、反抗、理想与现实的冲突。导演不思凡通过独特的视角和怪诞的画风,创造了一个充满哲学思考的作品,引发观众对自我、社会和道德的反思。
编程语言
基于过滤器实现异常处理的探索
本文讨论了异常处理的概念和实践,作者分享了自己对异常处理的理解和经验,以及在项目中引入 AOP 后,从 try-catch 转向 Interceptor 的处理方式。文章首先区分了异常和错误,强调了软件工程中测试和错误处理的重要性,并提出统一的异常处理入口,避免代码中到处都是 try-catch 和日志记录的混乱。接着,文章介绍了 CheckedException 的概念,讨论了 Java 和 C# 中对异常处理的不同策略,并提出了基于过滤器的异常处理方案,通过定义异常基类和过滤器,利用 Attribute 关联异常和过滤器,达到代码解耦和增强可维护性的效果。作者通过实际案例展示了如何将异常处理代码重构为更优雅的形式,并通过多态和过滤器的概念简化异常处理流程,最后强调了程序员应追求代码设计的优雅,以适应不断变化的需求。
编程语言
异步 Lambda 表达式问题的探索
Payne在博客中讨论了.NET中异步Lambda表达式的问题,强调架构设计应由一线开发人员提炼和抽象,指出异步方法在ICommand接口中的历史遗留问题。他还探讨了异步编程中的异常处理机制,指出使用async void容易导致未处理异常终止程序。最后总结指出异步委托在IL层面无差别,建议使用Func而非Action来生成异步方法,对待async void应注意异常处理,强调处理各种异常的必要性。
数据存储
Redis 缓存技术学习系列之发布订阅
本文讨论了Redis中的发布-订阅模式,首先介绍了观察者模式及其实现,包括抽象主题、具体主题、抽象观察者和具体观察者的角色和功能。接着详细介绍了如何在C#中实现观察者模式。随后,文章引入Redis中的发布-订阅模式,解释了其概念,与观察者模式的联系以及相关的Redis命令,如PSUBSCRIBE、PUBLISH等。最后通过示例展示了Redis发布-订阅模式的实际操作过程。整体强调了设计模式的重要性以及Redis的发布-订阅模式与观察者模式的关联。
数据存储
Redis 缓存技术学习系列之事务处理
本文讨论了Redis中的事务处理技术。在数据库事务部分解释了事务概念,ACID属性以及事务处理的重要性。在Redis中,事务可以看作是一个命令队列,通过MULTI开始一个事务,然后逐条向Redis提交命令,最后通过EXEC执行事务。Redis中的事务与传统事务类似,具有原子性和一致性。文章还介绍了悲观锁和乐观锁的概念,以及Redis中的check-and-set机制。另外,文章提及了如何管理Redis的键,包括惰性删除和定期删除策略,以及一些建议如临时键和普通键的使用等。
生活感悟
时间如灰烬般遥远
在春天万物复苏的时节,作者赏花阅景,感受人群中的孤独与热闹之间的矛盾。他描述了在工作和离别中的心情,表达了对孤独和离别的感悟。在思考人际关系和自我认知时,他反思了生活中的普通和挑战,以及对自我和他人的爱与接纳。最后,他谈及了对未来的迷茫和对过往的回忆,描绘了时间流逝和人生变迁所带来的无常和孤寂。
数据存储
Redis 缓存技术学习系列之邂逅 Redis
这篇文章介绍了对传统关系型数据库的一些看法,引入了学习 Redis 缓存技术的决定。详细解释了 Redis 的定义、特点和优势,以及如何开始使用 Redis,包括编译和安装步骤。进一步介绍了 Redis 中支持的数据类型,如字符串、散列、列表、集合和有序集合,以及与键相关的命令。最后,作者强调了在学习技术时注重整体理解,留下细节问题在实际使用时查阅文档的重要性,并展望了对 Redis 的事务、脚本、发布/订阅和多语言使用的关注。
编程语言
使用 C#开发 HTTP 服务器之支持 HTTPS
本文介绍了作者在开发 HTTP 服务器系列中的第六篇文章,讨论了如何为Web服务器增加HTTPS支持。HTTPS是基于安全的HTTP协议,通过SSL加密和身份验证提供数据传输安全。讨论了苹果和Google推广HTTPS的原因,以及HTTPS协议的工作原理和区别。文章重点在于如何使用.NET中的SSL API创建和加载证书,并通过SSL对Socket通信消息进行加密。作者提到需要从CA机构购买证书,并给出了相关代码示例。文章列出了一些参考文章和配置HTTPS服务的指南。
上页
1
...
12
13
14
15
16
...
20
下页