首页 文章 精选 留言 我的

精选列表

搜索[年终总结],共75篇文章
优秀的个人博客,低调大师

Podman Desktop 2025 年终总结

Podman Desktop 官方发布了一篇2025 年的回顾文章。在这一年里 Podman Desktop 共关闭了 1669 个问题,合并了 2814 个拉取请求,迎来了 28 位新贡献者,扩展库的活跃度也在不断提升。 一月:全新起点 以 Podman Desktop 1.16 版本开启新年。此版本新增了“实验功能”设置,让用户能看到正在开发中的功能,并直接链接社区讨论。 主要亮点: 可视化提升:Provider 从仪表盘移至状态栏,快速查看引擎状态。 智能清理:支持只清理无标签镜像,保持系统整洁。 日志搜索:直接在界面内搜索容器或 Pod 日志。 除此之外,BootC 扩展备受关注,实现了将容器转为可启动镜像的工作流。这是生态系统开始超越主应用,逐步扩展的良好开端。 春季推动(3 月-5 月) 春季发布了 1.17、1.18 和 1.19 版本,Podman Desktop 保持每月改进节奏。重点包括: Podman Engine 5.5 发布,提升了稳定性和性能。 简化镜像仓库镜像配置,新增专用命令。 优化 kind 集群体验,无需预装 kind 即可轻松启动 Kubernetes 集群。 支持切换 Kubernetes 命名空间。 可以在 Kubernetes 区域查看 Jobs。 实验性状态栏 Provider 增强,支持固定和取消固定,状态图标更易理解。 扩展目录也不断增加和更新。这一阶段展示了 Podman Desktop 在容器、Kubernetes 和 AI 开发领域的多面性。 夏季成长(7 月-8 月) 年中发布 v1.20 和 v1.21,聚焦使用体验和开发者便利。亮点: 批量启动容器,方便本地多容器堆栈。 Kubernetes 集群和用户切换更方便。 扩展搜索支持按描述搜索,不只限名称。 通知界面重新设计,更简洁统一。 可检测重复安装,帮助解决 Podman 冲突。 集成 Podman Engine 5.6。 这些更新体现了项目日益成熟,细节改进提升日常使用体验。 拓展视野(9 月) 9 月是重要的里程碑。 Podman Desktop 社区庆祝突破 300 万下载 新增 Apple Container 扩展,支持 Apple 原生容器。 这是平台扩展、稳定性提升和社区庆祝共存的难忘时刻。 秋季进展(10 月) 10 月迎来 Hacktoberfest 2025,带来新贡献者和热情。v1.22 版本推出多项用户体验优化: 新增“探索功能”仪表板区域,方便新用户了解。 支持在 macOS 和 Windows 上切换 rootless/rootful 模式。 支持直接应用 Kubernetes YAML,无需本地保存。 透明代理支持。 Windows 原生 ARM64 安装包。 改善 Wayland 显示,提升 Linux 兼容性。 此时,Podman Desktop 明显迈向跨平台、企业级工具。 平滑优化与大升级(11 月) v1.23.1 带来精细且强大的新功能: 新增网络页面,全面管理网络。 可定制仪表盘和表格,适配个人工作流。 智能搜索,支持容器、镜像、Pod 和卷的查询。 rootless/rootful 状态指示更清晰。 Podman Engine 5.7.0,包含关键安全修复。 推出团队管理配置,方便团队入门。 每台 Podman 机器自动生成 Docker 上下文。 这是一次干净稳健的发布,带来更强的底层能力。 年度最后一个版本 v1.24 以界面优化和扩展稳定性为亮点,为下一阶段发展奠定基础。展望未来,Podman Desktop 团队表示,2025 年是 Podman Desktop 的关键之年,充分展现了开源协作的力量。迈入 2026 年将期待扩展更多集成,壮大扩展生态,使 Podman Desktop 成为最易用、开放的容器和 Kubernetes 开发工具。

优秀的个人博客,低调大师

CodeIgniter 社区 2023 年终总结

随着我们步入 2024 年,我想借此机会总结过去一年 CodeIgniter 社区所取得的成果,并对所有贡献者的努力表示感谢。CodeIgniter 作为一个社区驱动的项目,每一位贡献者都在促进着我们的发展。 因为所有工作都是由志愿者完成的,所以贡献者的参与度会因他们的空余时间、工作以及其他生活琐事而有所变动。今年,@kenjis 的突出贡献让人印象深刻,他们在主要的代码仓库和论坛上的辛勤耕耘让整个项目有了质的飞跃。 以下是一些数据,以侧面展示了我们在 2023 年的活跃程度: 我们发布了 15 个核心框架版本 我们的身份验证系统 Shield 发布了 6 个测试版,并在年底前推出了 1.0 的正式版 推出了两个新的库 - Tasks 和 Queue,虽然还处于 Alpha 阶段,但正朝着第一个正式版稳步前进。他们本身是 CodeIgniter 构建出色软件所需的最后几个关键模块,所以我对他们极其期待。 我们为 Settings、Shield、Tasks 和 Queue 库新建了文档站点 如果只看我们的核心框架,我们在过去一年内取得的成果包括: 每月平均新增两名贡献者 全年共新增了 26 名新贡献者 每月平均有 11 名活跃的贡献者 新贡献者占提交者的 18% 每月平均有 203 次代码提交 平均每名提交者每月提交代码 18.45 次 提交者总数增加了 26 人(从 350 增加到 376) 平均每月合并 54 个 PR 请求 这是一份令人印象深刻的成绩单。除此之外,我们还在进行持续的翻译工作,修复了一些严重的安全漏洞,以及将代码质量管理工作做得更加精细,确保无论贡献者数量如何增长,我们都能保持高质量的代码输出。 我要向今年所有做出贡献的人表示感谢,无论是贡献代码、编写文档还是在论坛上帮助他人。正是你们让这个项目保持了活力。 那么,CodeIgniter 未来会有什么新变化呢? 我们正在开发一款全新的论坛软件,这款软件完全基于 CodeIgniter 构建。这款软件的目标是提供一种符合现代审美,而又为这个社区定制的论坛体验,展示 CodeIgniter 的可能性。它将使用 TailwindCSS、AlpineJS 和 HTMX,以提供快速、现代的用户体验。目前我们的团队还在积极开发阶段,如果你愿意加入,我们会很欢迎。 虽然我不能代表所有团队成员的观点,但是在我看来,我想尝试让 CodeIgniter 的使用更加简化。这是一个宏大主题,但我相信我们很快能就此取得一些进展。 首先,我们打算简化代码库的贡献过程,让任何有意愿的人都能从自己的电脑开始更便捷地参与进来。虽然现在还没有确定的消息可以公布,但我们希望这样,更多的开发者会愿意加入我们。 接下来,我们关注用户指南。我们在尝试不丢失任何内容的情况下,将其转换为 Markdown 格式,并取得了非常好的进展。我们希望 Markdown 语言的易用性,能让更多的贡献者参与其中。这样,我们的文档就能保持统一的格式和风格,让项目页面显得更加整齐一致。实际上,我们的库已经实现了这一点,核心框架是最后一个待处理的问题。 我还有其它的一些想法,比如关于 API 和本地化的问题,但是这需要在我完成其它项目后,看我能投入多少时间来做。 所以,我要再次感谢我们的核心团队、论坛的版主和所有为这个社区做出贡献的你们。期待今年我们能有更好的发展! 原文作者: kilishan 原文链接: https://forum.codeigniter.com/showthread.php?tid=89075

优秀的个人博客,低调大师

年终总结&新的计划

点击上方蓝字关注我,每天一见,给你力量 2020,再见 关于2020,我心中有四个关键词: 疫情 年初突如其来的疫情,打破了原本生活的节奏,也没想到会笼罩全世界整整一年,希望这个世界早点好起来吧。 科比 初三的早晨,噩耗传来,我一度不敢相信这是真的。一定是上帝想看科比打球,所以带走了他。同时,也带走了我的青春。 Mamba Out,曼巴精神永在。 掘金 今年下半年,也开始了我的写文章之路。 一开始写文章,只是因为想把知识记录下来,以简单明了的方式分享出来。但是随着越来越多的读者支持我,给我点赞,我也就有了更多想分享的欲望。 特别是在掘金平台,收获了很多朋友的点赞,鼓励,调侃,技术讨论,很开心。 明年我也会继续加油,输出更优质的文章。lv4,我来啦。 juejin2020 公众号 建立公众号的初衷是为了总结一些面试题并分享给大家,但是时间久了,我感觉这种方法并不适用于每个学习者,只能作为面试前的查缺补漏使用。所以我也想了一个新计划,稍后再细说。 在写公众号的这四个月中,也保持了工作日日更。日更确实不容易,我也是每天肝到半夜才能完成一篇文章,虽然辛苦,但是能和大家一起探讨学习新内容也是很开心的,这也是一个正向反馈的过程,就像之前我说的那样,就像每天都要完成作业,然后交给各位读者老师批改,讨论。 但是,有些文章也犯了一些错,特别是写了一些内容误区,没想到写文章也能写出bug,我的锅,我先接好了,抱歉了各位。 新的一年我会更加注意,更细节,更认真地完成每一篇文章。 同时,通过公众号,我也认识了很多Android小伙伴,有的是关注我公众号的伙伴,有的是给我支持的大神,虽然都只是网友身份,但是大家都很友好,我也很感谢你们的支持,希望明年能给你们输出更多更好的内容,共勉。 2021,你好 新的一年,我也有一些新的计划: 体系架构学习 不知道你平时有没有这样的苦恼,感觉知识点也看了不少,每个知识点也能说上一些,但是面试的时候或者平时遇到一些难题的时候,稍微转下弯,以不同方式不同角度出了难题,就感觉无从下手了。 其实这都是因为脑中没有完整的知识体系架构,没有把各个知识点的关系串联起来,或者有些知识点根本就没有学习完整。 知识体系:是无数个关联的标准知识的集合 之前咱们知识点不都是想到哪里写哪里嘛,相当于知识点是零散的,适合一些知识的查漏补缺,但是不适用于整体知识架构的搭建。 所以,我的计划就是,准备重新整理Android相关的所有知识,以一个体系化的思想去学习复习知识,串联知识,这样有助于构建和完善我们大脑中的Android体系架构,有了体系,再遇到难题,相信你也能轻易化解了。 我把这个系列叫做《体系化学习Android系列》,其实这也相当于做一个复习手册,以后也会整理到语雀等平台。 当然这个整理过程中,有时候会发一些和以前发过文章比较类似的内容,如果你看过了我也建议你再重新阅读下,因为它会是我重新整理之后的内容。 现在已经初步完成了体系脑图的第一版(见图文第二部分文章),后续文章也会根据这个脑图的分类来完成每一章节。 「理想很丰满,希望我能完成并做好」。 学习造轮子 另一个准备做的系列叫做《学习造轮子系列》。 我会拆解一些框架,不一定是大的框架,也有可能是一些小工具,自定义view类似的框架。尝试从0开始解析这些框架,跟着造下轮子。 这个过程我觉得可以学习到一些框架的精髓之处,并且自己如果能重新复写出来大体功能,那么也就掌握了对应的知识点,也是个不错的学习方法。 面试系列 嘿嘿,没想到吧,面试系列我还会写。 因为一些好的面试题能考验我们是否掌握了相关知识,可以作为我们复习的一个参照点。 加油 好了,就这样吧,再见了2020。 2021,加油,祝大家安好。 多多的事大家也都知道了,希望大家努力的同时注意身体,毕竟只有身体和知识才是自己的,其他都是浮云。 感谢大家的阅读,有一起学习的小伙伴可以关注下公众号—码上积木❤️ 每日三问知识点/面试题,积少成多。 点在看你最好看 本文分享自微信公众号 - 码上积木(Lzjimu)。如有侵权,请联系 support@oschina.cn 删除。本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

优秀的个人博客,低调大师

大数据全体系年终总结

到年底了,想着总结下所有知识点好了~今年应用的知识点还是很多的~ Hadoop生态圈: 1、文件存储当然是选择Hadoop的分布式文件系统HDFS,当然因为硬件的告诉发展,已经出现了内存分布式系统Tachyon,不论是Hadoop的MapReduce,Spark的内存计算、hive的MapReuduce分布式查询等等都可以集成在上面,然后通过定时器再写入HDFS,以保证计算的效率,但是毕竟还没有完全成熟。 2、那么HDFS的文件存储类型为SequenceFile,那么为什么用SequenceFile呢,因为SequenceFile文件是Hadoop用来存储二进制形式的key-value对而设计的一种平面文件,能够加速MapReduce文件的读写。但是有个问题,SequenceFile文件并不保证其存储的key-value数据是按照key的某个顺序呢存储的,同时不支持append操作。 当然,如果选择Spark的话,文件存储格式首选为列式存储parquet,因为一个Parquet文件是由一个header以及一个或多个block块组成,以一个footer结尾。header中只包含一个4个字节的数字PAR1用来识别整个Parquet文件格式。文件中所有的metadata都存在于footer中。footer中的metadata包含了格式的版本信息,schema信息、key-value paris以及所有block中的metadata信息。footer中最后两个字段为一个以4个字节长度的footer的metadata,以及同header中包含的一样的PAR1。不像sequence files以及Avro数据格式文件的header以及sync markers是用来分割blocks。Parquet格式文件不需要sync markers,因此block的边界存储与footer的meatada中,查询效率非常快。 3、zookeeper的作用帮助Yarn实现HA机制,它的主要作用是: (1)创建锁节点,创建成功的ResourceManager节点会变成Active节点,其他的切换为StandBy. (2)主备切换,当Active的ResourceManager节点出现异常或挂掉时,在zookeeper上创建的临时节点也会被删除,standy的ResourceManager节点检测到该节点发生变化时,会重新发起竞争,直到产生一个Active节点。(这里会有个脑裂问题,后续说明),那么zookeeper的参数包含在zoo.cfg中(具体参考本博客中的zookeeper配置) 4、 Yarn组件:这个可就大了,运行在独立的节点上的 ResourceManager和NodeManager一起组成了yarn的核心,构建了整个资源管理平台。ResourceManager提供应用程序的调度, 每个应用程序由一个ApplicationMaster管理,以 Container的形式请求每个任务的计算资源。 Container由ResourceMangaer调度,由每个节点的 NodeManager上进行本地的管理。 所有MapReduce以及Spark的Job都是提交给Yarn进行资源申请。(具体参考博客Hadoop on Yarn各组件详细原理),那么权限与资源控制主要依赖于Yarn的标签机制,可以控制比如Spark作业在Spark的资源队列,Hadoop作业在Hadoop的资源队列。 5、 Hive组件:Hive的ETL主要用于数据的清洗与结构化,可从每日将传统数据库中导出的文件,创建一个Web工程用来读入文件,使用JDBC的方式连接HiveServer2,进行数据的结构化处理。这里有一些加快效率但是会占用更多资源的参数,比如set hive.exec.parallel=true,该参数会让那些存在并发job的sql运行的更快,但同时消耗更多的资源,或者set hive.exec.parallel.thread.number,加大并行度,但会占用更多的map和reduce的资源。 6、 Hbase组件:HBase的服务器体系结构遵从简单的主从服务器架构,它 由HRegion服务器(HRegion Service)群和HBase Master服务器(HBase Master Server)构成。Hbase Master服务器负责管理所有的HRegion服务器,而Hbase中所有的服务器是 通过Zookeeper来进行协调,并处理HBase服务器运行期间可能遇到的错误的。那么从应用上来说,hbase使用的场景更适用于,例如流处理中的日志记录的单条记录追加,或是单条结果的查询,但对于需要表关联的操作,hbase就变得力不从心了,当然可以集成于hive,但查询效率嘛。。。 Hbase最重要的是rowkey的设计,怎样预分区能够让数据均匀散列在各个节点。同时,要注意的是使用hbase过滤器的话,依旧会scan全表。 7、 Hue组件:主要是前台的查询,它支持很多可视化的展示啊,sql查询啊。方便一般的数据分析人员使用。 8、 Ambari组件:各个组件都可以集成于它,属于一个统一的监控软件,包括安装部署,参数调整都可以在Ambari界面完成。 Spark的生态圈组件: 我们选用的是集成于Hadoop的spark on Yarn模式: 下面一一介绍Spark On Yarn的各组件: 1、 SparkSql组件:从Spark 1.0版本起,Spark开始支持Spark SQL,它最主要的用途之一就是能够直接从Spark平台上面获取数据。并且Spark SQL提供比较流行的 Parquet列式存储格式以及从 Hive表中直接读取数据的支持。 之后,Spark SQL还增加了对JSON等其他格式的支持。到了Spark 1.3 版本Spark还可以使用SQL的方式进行DataFrames的操作。我们通过JDBC的方式通过前台业务逻辑执行相关sql的增删改查,通过远程连接linux对文件进行导入处理,使项目能够初步支持Spark平台,现如今已支持Spark2.0.2版本。 它拥有自己的sql解析引擎 Catalyst,提供了提供了解析(一个非常简单的用Scala语言编写的SQL解析器)、 执行(Spark Planner,生成基于RDD的物理计划)和 绑定(数据完全存放于内存中)。使用ThriftServer连接后台SparkSQL,它是一个 JDBC/ODBC接口,通过配置 Hive-site.xml,就可以使前台用JDBC/ODBC连接ThriftServer来访问SparkSQL的数据。ThriftServer通过 调用hive元数据信息找到表或 文件信息在hdfs上的具体位置,并通过Spark的RDD实现了hive的接口。加快前台的查询或者限制后台ETL数据清洗时所占用的资源与内存数量。 2、 SparkStreaming组件:SparkStreaming 接收实时输入数据流并将它们 按批次划分,然后交给Spark引擎处理 生成按照批次划分的结果流。SparkStreaming提供了表示 连续数据流的、 高度抽象的被称为离散流的 Dstream,可以使用 kafka、Flume和Kiness这些数据源的输入数据流创建 Dstream,也可以在其他Dstream上使用map、reduce、join、window等操作创建Dsteram。Dstream本质上呢,是 表示RDD的序列。 那么它的适用场景在于准实时的日志分析,或数据接入处理。 3、 SparkR: 我表示。。没用过~~~~啊哈哈哈~(后续学习) 4、 SparkML:包含用于机器学习或数据分析的算法包。在Spark后台批处理代码中,或SparkStreaming中都可以集成,用于更多的数据分析。(后续学习) 总结: 整个Hadoop生态圈与Spark生态圈的批处理应用流程就可以整理出来了: 1、首先由每日从传统数据库中导出的数据文件,由Spark后台处理代码进行数据的处理,或由用Java编写的前台代码连接thrift进行数据的结构化。 2、通过Spark连接mysql数据表,进行后台数据处理生成各平台需要的数据类型与种类导入Hbase、Redis或生成Hive表等等。 3、由数据分析人员运用R或ive或SparkR、ML进行数据分析。 4、sparkStreaming通过接受kafka的数据,进行数据处理或分析,也可以通过监听HDFS文件目录来进行数据的定时处理。 实时项目组件: 实时项目呢,主要包含的组件有Storm、Redis、Kafka、Jetty、Netty,keepalive,nignx等。(图木有画哈哈),那么下来一一进行说明。 1、 Redis: Redis包括集群模式、哨兵模式、由Twemproxy实现的代理模式。主要服务于实时系统的数据加载,并且将大部分系统配置信息都存入Redis,,走全内存可以使每条消息的延迟降低。因为Redis没有分布式锁,可以使用setnx标志位来实现分布式锁的功能。 2、 jetty:轻量级的servlet,可部署多份,每份里面接入网管发送的数据,数据的存储可存储与BlockingQueue中,由多个线程拉取数据,进行数据的预处理。 3、 ngnix与 keepalive:keepalive的作用主要用于设置虚拟IP,ngnix进行消息的负载均衡,发送至各服务器的jetty。 4、 kafka:Kafka is a distributed,partitioned,replicated commit logservice。它提供了类似于JMS的特性,但是在设计实现上完全不同,此外它并不是JMS规范的实现。 kafka对消息保存时根据Topic进行归类,发送消息者成为Producer,消息接受者成为Consumer,此外kafka集群有多个kafka实例组成, 每个实例(server)成为broker。无论是kafka集群,还是producer和consumer都依赖于zookeeper来保证系统可用性集群保存一些meta信息。 一个Topic可以认为是 一类消息,每个topic将被分成 多个partition(区),每个partition在存储层面是 append log文件。任何发布到此partition的消息都会被直接 追加到log文件的尾部,每条消息在文件中的位置称为 offset(偏移量),offset为一个long型数字,它是唯一标记一条消息。它唯一的标记一条消息。kafka并没有提供其他额外的索引机制来存储offset,因为在 kafka中几乎不允许对消息进行“随机读写”。 kafka和JMS(Java Message Service)实现(activeMQ)不同的是:即使消息被消费,消息仍然不会被立即删除.日志文件将会 根据broker中的配置要求, 保留一定的时间之后删除;比如log文件保留2天,那么两天后,文件会被清除,无论其中的消息是否被消费.kafka通过这种简单的手段,来释放磁盘空间,以及 减少消息消费之后对文件内容改动的磁盘IO开支. 那么继续我们的流程,又Jetty接入的消息,发送至不同的kafka主题,供下面storm进行消费。 5、 Storm:主要的编程概念: spout、 blot和 topology,我们需要根据数据的并发量来决定启动多少个worker和calc,首先由Spout进行消息的接入,进行数据预处理与加载,刚才我们说了,走全内存,直接走Redis,但是如果Redis挂掉了怎么办呢,那么就备选用hbase~blot中实现主要的业务逻辑,消息的封装啊。 这里需要注意的是,我们不要把所有类型的事件都写入一个topo,那么消息延迟的概率会很大,对于不同的事件进行不同消息的封装处理。 总结: 对于整个实时项目需要注意的就是数据的封装与解析,怎样提高效率,怎样能够让各个模块儿解耦,走全内存、日志收集及问题等等。 辅助组件: 1、 Ansible:ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了 批量系统配置、 批量程序部署、 批量运行命令等功能。 2、 ganglia:Ganglia是UC Berkeley发起的一个开源集群监视项目,设计 用于测量数以千计的节点。Ganglia的核心包含 gmond、 gmetad以及 一个Web前端。主要是用 来监控系统性能,如:cpu 、mem、硬盘利用率, I/O负载、网络流量情况等,通过曲线很容易见到每个节点的工作状态,对合理调整、分配系统资源,提高系统整体性能起到重要作用。

优秀的个人博客,低调大师

2013年微信年终总结

微信在2012年的异军突起,颠覆了大部分的移动互联网产品,改变了大部分企业对移动互联网的认知,破坏了原本相对平衡的移动互联网格局,让几大巨头真正感觉到了危机。 时隔一年,微信已经坐拥近7亿用户,海外市场也在今年8月突破1亿大关,在中国几乎所有的智能手机上都安装了微信,月活跃用户数更是接近3亿。可以这样说,中国的微信用户就等于中国的移动互联网用户,微信是除移动硬件终端以外真正意义上的入口级平台。 微信的迭代 微信4.5版 2013年的第一次大版本更新,伴随着一曲崔健的《一无所有》,熊熊大火预示着旧PC互联网世界将被燃尽,世界将会是新的。 这个版本推出了一系列新功能:多人实时语音聊天、摇一摇搜歌、群二维码、聊天记录搜索、聊天记录备份、语音提醒、多张照片发送、语音撤销发送、加好友验证消息回复、地理位置导航等 一般来说微信主推的功能通常不会火,实时语音聊天、摇一摇搜歌以及语音提醒这些功能估计到现在还有不少用户不会玩。但这不妨碍微信在用户体验上继续做到极致,这个版本有很多细节改变还是非常棒的。 另外从这个版本开始微信旗下一个名叫“模式识别中心”的团队渐渐浮出水面,语音识别只是他们其中一个研究方向,4.5版的语音识别度并不高,与行业领先者距离还很远,但已经让业界惊艳不已。 微信5.0版 这 应该是一个经过腾讯内部反复争论,跳票无数次最终推出的版本,因为它承载的东西太多了,微信终于开启了商业化大门,上线了游戏中心和微信支付;用户需要更 轻更好的使用体验,公众号要弱化营销强调服务,所以公众号分为被折叠的订阅号和每月只能群发一次的服务号;微信加强扫一扫功能,除了扫二维码以外还能扫条 码、图片、街景、文字等,力推O2O闭环的打造,同时也带来更多想象空间。 “你 打飞机了没”,可能是5.0上线后最流行的一句话,但可能很少人知道这个游戏只是微信团队里一个码农花了一周多时间捣鼓出来的,而张小龙把它当作5.0的 封面除了宣告微信游戏中心上线之外,还有一种猜测是说,微信已经成为移动互联网入口,飞机大战经过微信一推就成为世界上玩家最多的单机游戏。事实也证明了 依托微信强大的社交关系,所有的微信游戏都成为了下载排行的NO.1,活跃度也非常高,并且也带来了可观的收入。 由 于微信5.0的打飞机实在太火,由于微信5.0横扫一切的想象空间太大,公众账号被折叠这件事的影响反而被弱化了,事实上经过一段时间的运营结果表明,真 正有价值的内容依旧能够脱颖而出得到广泛传播获得用户的喜爱,而企业也逐渐意识到服务才是核心生产力,微信开发受到追捧。唯一的后遗症就是朋友圈营销开始 泛滥,成为继微信公众号群发骚扰后又一重灾区。 另外在5.0内测版曾经有过的摇一摇搜视频功能在正式版中没有上线,其原因应该与技术无关,而可能是和腾讯视频战略布局有关,还有可能是为给腾讯微视让道。 微信5.1版 2013年最后一个小版本更新,带给用户的利好是微信群的基础人数限制终于提高到了100人,如同5.1的封面所说“你的同学到齐了吗?”。 5.1版上线后在群权限上出现过BUG,出现过千人群,老贼我也不幸被拉进去过,一个晚上收到2000多条消息…被微信修正后现在的群人数上限将只能由群主来提高,其他人即便有高权限在超过基础群人数后也无法往群里拉人。 微信支付进一步得到强化,“生活,进入微信支付时代”这句话真不是口号,而是腾讯在移动互联网重要战略之一,也是微信商业化的重要手段之一,因此在我的银行卡里有了充值、电影票、精选商品、Q币充值、AA收款等支付应用,同时线下的推广布局也是紧锣密鼓。 这个版本里有几个细节的改变不知道有多少朋友留心了,一是在聊天输入框中的草稿未发会有提示,二是你回复信息后聊天表会自动跳到最前面,三是聊天列表右上角的魔术棒里扫一扫又回来了。 微信的危机 2013年微信的发展其实并非一帆风顺,春节过后有关微信这类OTT通讯产品过度占用正常信令通道,运营商要开始收取信道占用费的谣言就沸沸扬扬,甚至演变成微信要向用户收费,对微信曾经有过一些不好的影响,而事实上微信是免费在提供给用户服务的。 但 随着微信与广东联通的破冰合作共同推出“联通沃信卡”,一切谣言都止步于8月广州那个具有历史意义的发布会,事实上谁心里都清楚微信不会抢基础运营商的饭 碗,运营商反而可以通过一些微信增值服务捆绑获取新用户和得到新收益,单就“联通沃信卡”捆绑的150人群权限来说,就让不少微信发烧友是趋之若鹜,纷纷 托人抢购。 虽然老贼我一直认为“颠覆微信的绝对不可能是微信”,但易信和来往等移动IM产品还是相继问世,虽然对微信目前还构不成威胁,但依然不容小视,特别是来往,一方面依托强大的淘宝用户基础强推,一方面在宣传推广上直接与微信交锋,连马老板都亲自上阵了。 不过这些对于用户来说都是好事,一方面一个行业有竞争者能够更好的促进领先者继续在产品上努力创新,一方面也避免一家垄断后可能产生的不利影响。 当然危机除了外面还有内部的,如何处理腾讯内部产品竞争与合作是老贼我去年那篇《微信这一年,改变世界》结尾处提到要解决的问题,2013年初一篇《腾讯是用生命山寨腾讯》直指腾讯新版QQ抄袭微信,而事实上两者无论是用户群还是发展方向完全两回事,真心高级黑。 微信真正的危机是如何在保证平台健康发展情况下,既让其他部门产品能够搭个顺风车,又能不损害用户体验,还要兼顾围绕微信开放平台生存的第三方利益,这种平衡一旦掌握不好,对于微信对于腾讯来说产生严重后果。 微信的生态 说实话,微信这一年在对用户这个层面增加的功能其实并不多,大部分微信用户常用的还是语音和文字聊天、朋友圈分享和微信群,公众账号的订阅取决于兴趣爱好和现实需要,当然产品体验肯定是越来越好。 外界所看到的重,实际上是微信在公众平台和开放生态建设上的重,今年官方先后多次对微信公众平台进行大规模的改版,新接口新模块新规则层出不穷。 新申请账号开始根据行业分类了,公众号分订阅号服务号了,认证分微信认证和微博认证了,自定义菜单和九大高级接口不是服务号就不能用,连我这个微信达人有时候都觉得微信公众平台快成大型网络游戏了,要玩转它必须得有本牛逼的攻略秘籍和一颗强大的心(开个玩笑)。 虽然微信公众平台变得越来越复杂,越来越繁琐,但这一方面是为了让企业更好的开发出一些应用给客服提供服务,另一方面也是为了驱逐劣币保证微信公众平台尽可能的健康发展。 同时微信官方在今年也是频频走出来现身说法,7月和11月两次召开了大规模的公众平台沟通大会,每月还定期举办线下沙龙邀请各个行业的公众号优秀案例来分享经验,这些说白了还是希望更多的企业更多的开发者能够参与微信生态的建设。 至于困扰很多人的平台不够开放问题,也已经随着微信最近一次的全面接口开放得到了解决,包括微信支付接口也将拥抱更多的企业和商家,未来所有的微信开发方不管是腾讯内部还是第三方,应该都会站在同一个起跑线上,这点我相信张小龙,他是一个有互联网精神的人。 也 许还有不少人会说风铃这些腾讯推出的平台如何去竞争,其实我在今年年初就已经说过,微信公众平台的开发必须是深挖垂直行业痛点,从业务到模式到运营全面解 决,仅仅依靠微网站这类没有太高技术门槛的基础类产品就想去参与竞争,即便没有腾讯推出,这个市场也已经是红海一片了。 2013年,微信公众账号已经突破200万,还在以每天8000个的速度增长,而随着微信支付的开放和普及,随着大量优质应用产品的出现,随着传统企业通过微信大批转型到线上,微信的生态将会是一片繁荣的景象。 2012年,微信破坏的是移动互联网格局,2013年,微信建立的是开放平台规则,那么2014年,微信将通过一个个公众账号一家家线下企业打造移动互联网的大生态环境,让再小的个体也有自己的品牌!

优秀的个人博客,低调大师

1Panel 开源面板 2025 年终总结

2025年,1Panel开源面板项目全力迎接挑战,也收获了自我成长。在这一年,1Panel项目发布了V2大版本,GitHub Star数量突破30,000个,我们也迎来了第100个版本的发布。1Panel项目完成了技术架构的升级,并且在开源社区的驱动下扎实迭代,持续优化产品功能和用户体验。 时至岁末,我们用真实的数据回顾1Panel项目在2025年走过的成长之路,同时向所有用户和贡献者表达衷心的感谢。 一、1Panel的2025成绩单 2025年,1Panel项目在GitHub代码托管平台的数据表现稳中有增。1Panel开源项目组通过Issue、Pull Request和版本发布等方式与社区用户保持高频互动。 ■ 全年处理Issue:超过1,850个 2025年,1Panel开源项目组在GitHub平台上共处理了超过1,850个Issue。这些Issue来自用户真实的体验与反馈,覆盖了安装部署、升级回滚、应用商店、容器管理、网站与数据库、安全策略、备份恢复等场景。这些基于真实使用场景的Issue为项目组提供了非常多的技术优化与产品设计思路,让1Panel向着“新一代Linux服务器管家”的目标不断靠近。 ■ 全年合并Pull Request:超过1,690个 2025年,1Panel开源项目组共合并了超过1,690个Pull Request。这些Pull Request不仅来自于项目组成员,更多的则来自于广大社区用户,内容包括功能增强、问题修复、性能优化以及文档完善等。感谢提交Pull Request的社区用户,您们的贡献推动了1Panel项目全方位的进步。 ■ 全年发布版本:28个 2025年,1Panel共发布了28个版本。最重要的版本是2025年6月10日发布的1Panel V2版本,全面支持多机统一管理。一年来,1Panel开源项目组始终保持稳定的版本发布节奏,在推进功能演进的同时,也更加关注升级安全、兼容性和回滚能力,希望让用户在每一次升级时都能够安心地部署和使用1Panel。 二、1Panel的2025里程碑 自2023年3月发布第一个版本以来,1Panel项目在用户的陪伴下迎来了一个又一个里程碑。这些里程碑既是1Panel项目不断成长的印记,也是广大社区用户对1Panel项目的认可与信任。 ■ GitHub Star数累计突破32,600个 截至2025年12月30日,1Panel项目的GitHub Star数已经突破32,600个。 ■ 累计下载量突破200万次 截至2025年12月30日,1Panel项目累计下载量突破200万次。这意味着越来越多的用户已经将1Panel部署到自己的Linux服务器中,1Panel正在进入用户的开发、测试和生产等环境中。 ■ 应用商店开源软件累计下载次数突破530万次 截至2025年12月30日,1Panel应用商店中开源软件的累计下载次数已经突破530万次。1Panel应用商店已经成为开源软件的有效分发渠道,是许多用户日常建站、部署服务和管理应用的重要入口。 三、致谢名单 截至2025年12月30日,已经有超过680位贡献者通过提交Issue、Pull Request、参与讨论、完善文档、协助测试等方式,参与到了1Panel项目的建设中来。1Panel项目的蓬勃发展离不开广大社区用户的贡献和支持,正是因为有了来自社区用户的反馈、贡献与协作,1Panel才能持续迭代和演进。1Panel开源项目贡献者名单请参见:https://www.lxware.cn/1panel-contributors#/all。 四、1Panel的2026展望 进入2026年,1Panel开源项目组会继续围绕稳定性、易用性和真实运维场景适配等主题打磨产品,优化用户体验,让1Panel成为更稳定、更好用的新一代Linux服务器管家。新的一年里,1Panel期待继续与您携手,共同打造更加高效、安全、智能的Linux运维新体验。

优秀的个人博客,低调大师

React Native跨平台开发2017 年终总结

从2016年开始关注React Native到现在,React Native的每一个版本发布我都会关注一下,虽然最近将重心转移到区块链开发上,这一年里,我还出版了一本《React Native移动开发实战》的书。在过去的一年中React Native经历了十几次的版本迭代,版本也从从v0.40升级到v0.52,总体来说,版本迭代没以前那么频繁,组件也越来越丰富,稳定性也越来越好了,下面就一些新组件,新API进行相关的总结。 React Native年度功能 首先,借用网络上的一张图,一个使用Xmind绘制的React Native功能的图,该图简单明了的介绍了React Native在2017年的一些变化。 其发布的版本即频率如下图:可以看到,在这一年中,React Native更新的内容如下:仅针对 Android: 新特性 218 个、修复 bug 79 个 ;仅针对 iOS: 新特性 286 个、修复 bug 96 个; 双平台通用: 新特性 608 个、修复 bug 157 个、重大变更 35 个。 如果用图形表示,则如下图所示: 版本更新详解 如果要总结下每个版本更新的内容,可以看下面的介绍。 0.42 iOS:不再支持 Xcode7.x 编译,升级为 Xcode8.x; Android:移除 RecyclerViewBackedScrollView 组件 通用:WebView 组件新增 injectJavaScript 方法; 通用:为组件的部分属性添加百分比支持; 通用: init 项目时可以添加模板。 0.43 通用:FlatList 正式发布; 通用:样式支持 alignContent 属性; 通用:init 项目时的模板可以自定义了。 0.44 通用:不再支持通过 @provides NameOfModule 导入模块; 通用:将 Navigator 组件标记为过期; iOS:移除 MapViewIOS 组件,建议使用 Airbnb 的 react-native-maps。 0.45 通用:添加支持通过 CameraRoll 组件访问视频。 0.46 通用:引入 ImageBackground 组件。 0.47 Android: link 命令支持关联 Kotlin 模块; Android:为 AndroidViewPager 添加 peekEnabled 属性。 0.48 iOS:移除 AdSupportIOS 组件。 0.49 通用:将 index.ios.js 与 index.android.js 合并为 index.js; 通用:TextInput 组件添加 autoGrow 属性。 0.51 通用: 组件中不再支持嵌套组件; 通用:添加 SwipeableFlatList 组件(实验性); Android:添加对 Android 8.0 的支持。 0.51 通用:padding,margin,border 等属性支持 RTL 布局方式; 更新内容 新增组件 在这一年里,React Native一个新增了8个组件。大家可以从中文文档获得更多的介绍信息。 CheckBox:一个用在React Native上的复选框组件,(目前仅支持Android,未来会支持iOS) ImageBackground:背景图片组件,它是一个容器组件,支持包含其他组件 VirtualizedList:FlatList和 SectionList 的底层实现。 FlatList:基于VirtualizedList的高性能简单列表组件。 SwipeableFlatList:一个带滑动显示更多菜单的FlatList组件; SectionList:基于VirtualizedList的高性能分组(section)列表组件。 MaskedViewIOS:可以为组件添加一个透明的遮罩; SafeAreaView:用于包裹其他View,它会自动应用填充布局中不足的一部分,但不包括navigation bars, tab bars, toolbars等视图。 新增API函数 AccessibilityInfo:一个用于判断屏幕阅读器是否处于激活状态的API。 DeviceInfo:一个类专门提供屏幕尺寸,字体缩放等信息的API。 BackHandler:监听设备上的后退按钮事件(Android、Apple TV)。 findNodeHandle:用于获取组件的本地节点句柄的API。 TVEventHandler: 一个用于接受Apple TV远程事件(如遥控器的事件)的API。 YellowBox:通过这个API可以屏蔽指定的警告。 其他新增 ViewPropTypes:View 中的 propTypes 被移到 ViewPropTypes中,使用时需要单独导包。 takeSnapshot:将 takeSnapshot 方法从 UIManager 移动到ReactNative。 废弃组件及API 随着React Native版本的更新,React Native废弃了一些过时的API和组件。 BackAndroid:使用功能更丰富的BackHandler代替; Navigator:使用react-navigation代替; ListView:使用FlatList代替; MapView:使用react-native-maps代替此地图组件; RecyclerViewBackedScrollView:现在直接通过ScrollView即可解决滚动冲突; AdSupportIOS:使用react-native-deprecated-modules或react-native-idfa代替; NavigationExperimental:使用react-navigation代替;

优秀的个人博客,低调大师

开源之旅,.NET 流行框架 Furion 2023 年终总结

一年又一年,已是物是人非 开源之旅,曲折而又意义非凡。 回想三年前,我初次迈出 Furion 开源项目的步伐,面对着一片质疑和嘲笑的声音。虽然这些声音刺痛了我的内心,但我并没有放弃。我选择专注于用户需求,持之以恒地改进代码质量和文档。艰辛与困难并没有打败我,相反,它们让我变得更坚定,更成熟。 开源世界从来不是一个人的舞台,它需要众多开发者和用户的支持和参与。我深知,无论我怎样努力和完善我的项目,总会有人不喜欢,不认同。然而,这并不是我成长的障碍,反而是我成长的催化剂。我逐渐明白,不追求所有人的赞同,而是专注于为那些真正认可和喜欢我的工作的人提供更好的服务,才是更重要的。 在这段开源之路上,我亦流连于困境和挫折中。磨难并不使人成长,但它们教会了我成熟和坚韧。我深知,每个人都会有自己的独特感受和看法,只有接受这个事实,并用成熟的心态去面对,才能不断发展自己,走向更高的成就。 同时,我对国内开源人的不易有着深切的感受。在商业导向的社会中,选择投身开源事业需要巨大的勇气和决心。开源项目的作者们需要面对各种挑战和批评,但正是因为他们对开源事业的执着,社区才得以繁荣。我向每一位国内的开源爱好者致以崇高的敬意,你们是开源事业中不可或缺的一环。 回首三周年的开源项目,我的内心充满了感慨。这段经历锤炼了我的意志和技术能力,让我从一个技术懵懂的新手成长为一个在领域中有所建树的人。虽然这个过程中并非一帆风顺,但我感激每一个困难和挑战,它们让我更加坚定地走在开源之路上。 最后,我要衷心感谢所有支持和鼓励我的人。感谢那些相信我能够创造出有价值的开源项目的人,感谢那些给予我反馈和建议的人。同时,我也要向所有国内开源人表达我的敬意和感激之情。正因为有你们的努力和奉献,才有了开源事业的繁荣和进步。 愿每一个开源爱好者都能坚守初心,用心对待用户需求,不断提升自己的技术水平。我们的开源项目不仅仅是一个代码库,更是我们对技术和自由精神的执着追求。相信自己,相信开源的力量,让我们继续前行,创造出更美好的明天! 开源 Furion 本是 ⌈无心之举⌋,未成想它成为我人生 ⌈志心之源⌋ 避不开的话题:开源与商业 自身价值 在面对外界的评价和期待时,我要保持内心的宁静和坚定。我的价值和能力不应该被别人的意见所影响,而应该建立在我对自己的自信和对用户需求的关注之上。通过坚持初衷和不断进步,我相信我可以为用户创造出更优秀的产品和服务。 知不足而奋进,望远山而前行。感谢一路同行 市场选择 Furion 于 2020 年 09 月 01 日开源,在质疑和不被看好的环境中逐渐成长起来。与其说它的流行归结于自身的努力,不如说是市场的选择。 任何东西都有其生命周期,适者生存。如果它哪天不 “适” 了,自然会消失;如果它一直 “适” 着,也就会一直存在着。主要还是看它的特性有没有持续生命力。如果大家一直反馈,一直使用,那么它也将一直维护,一直更新,一直存在。 开源商业 开源很困难,盈利也很困难,将开源与盈利结合更是难上加难。这个难题不在于技术,而在于思维的转变。困难的不是坚持,而是放下那种深藏心底的帮助他人并受到感激的情感。 很多开源项目之所以未能实现商业化,主要原因是创作者对自己产品的价值持怀疑态度,他们质疑别人是否真的愿意为自己的产品付费。同时,他们在为自己的产品收费时会感到羞愧和愧疚。这也是许多开源项目无法实现商业化的主要原因。 孔子虽满怀救国救民的良策,但深知天道不可违、人力有限,故一生颠簸坎坷。若想成就一番大事,不仅需要实力和经济支持,还要有不被现实所裹挟的决心。我们必须时刻保持警惕,不断磨砺自己,才能迎接未来的挑战。 世俗的成功给人自由,你可以不屠龙,但是不能不磨剑。 命运之门 网络中流行的一句热词是"命运的齿轮开始转动",它源于日本动漫《命运石之门》。这句话传达了我们每一次的选择都有可能引发巨大的命运变化,从而导致完全不同的人生轨迹。 此刻,命运的齿轮再次缓慢地转动...... 发展事记 2020 年​ 2020 年 06 月 22 日,Fur在 Gitee 平台创建空仓库25de190。 2020 年 09 月 01 日,Fur正式写下第一行代码。 2020 年 10 月 01 日,Fur获得 Gitee 最有价值开源项目GVP证书。 2020 年 10 月 22 日,Fur在 Gitee 平台获得 1000 stars. 2020 年 11 月 11 日,Fur单身节当天发布了1.0.0正式版。 2020 年 11 月 18 日,Fur改名为Furion。a24acd497011ef 2020 年 11 月 23 日,FurionLogo 由之前的奶牛更换为袋鼠。 2020 年 12 月 22 日,Furion在 Gitee 平台获得 2000 stars。 2021 年​ 2021 年 03 月 01 日,Furion捐赠项目到dotNET China组织。 2021 年 03 月 05 日,Furion在 Gitee 平台获得 3000 stars。 2021 年 04 月 01 日,Furion所在群dotNET China突破 5000 人。 2021 年 04 月 06 日,Furion在 Gitee 平台获得 4000 stars。 2021 年 04 月 19 日,Furion正式发布2.0.0版本,并支持控制台应用开发。 2021 年 04 月 29 日,Furion所在群dotNET China突破 6000 人。 2021 年 05 月 13 日,Furion在 Gitee 平台获得 5000 stars。 2021 年 06 月 01 日,Furion所在群dotNET China突破 7000 人。 2021 年 06 月 22 日,Furion在 Gitee 平台获得 6000 stars。 2021 年 07 月 04 日,Furion登顶 Gitee 平台C#语言板块第一名。 2021 年 07 月 16 日,Furion采用百小僧头像作为Logo。 2021 年 07 月 20 日,Furion将Apache 2.0开源协议修改为MulanPSL-2.0(木兰宽松许可证) 2021 年 07 月 27 日,Furion正式支持全平台、.NET全平台项目开发。 2021 年 08 月 11 日,Furion加入木兰开源社区重点孵化。 2021 年 08 月 21 日,Furion在NuGet平台突破100万下载量。 2021 年 08 月 30 日,Furion在 Gitee 平台获得 7000 stars。 2021 年 09 月 01 日,Furion诞生一周年。 2021 年 11 月 09 日,Furion正式发布3.0.0版本,全新的.NET6架构。 2021 年 11 月 22 日,Furion迎来了第一个赞助商。 2022 年​ 2022 年 05 月 20 日,Furion在 Gitee 平台获得 8000 Stars。 2022 年 05 月 28 日,Furion在NuGet平台突破200万下载量。 2022 年 06 月 18 日,Furion有了自己的入口函数Serve.Run()和错误页。 2022 年 06 月 20 日,Furion项目贡献者突破 200 人。 2022 年 07 月 25 日,Furion正式发布4.0.0版本,彻底实现大一统(.NET5-.NET N)都可以升级。 2022 年 08 月 01 日,Furion将MulanPSL-2.0开源协议修改为MIT。 2022 年 08 月 18 日,Furion在NuGet平台突破300万下载量。 2022 年 09 月 01 日,Furion诞生两周年。 2022 年 09 月 18 日,Furion解散QQ群,回归最初的开源协作模式,了解更多。 2022 年 10 月 29 日,Furion在NuGet平台突破400万下载量。 2022 年 11 月 08 日,Furion正式适配.NET7架构。 2022 年 11 月 24 日,Furion发布了全新的分布式定时任务模块Sundial。 2022 年 12 月 07 日,Furion在NuGet平台突破500万下载量。 2022 年 12 月 29 日,Furion获得开源云联盟优秀开源项目奖项:查看获奖。 2023 年​ 2023 年 02 月 04 日,Furion获得《2022 年中国开源年度报告》Gitee指数Top 10项目:查看报告。 2023 年 02 月 06 日,Furion在NuGet平台突破600万下载量。 2023 年 03 月 15 日,Furion在NuGet平台突破700万下载量。 2023 年 04 月 18 日,Furion在 Gitee 平台获得 9000 Stars。 2023 年 04 月 18 日,Furion在NuGet平台突破800万下载量。 2023 年 06 月 07 日,Furion正式开通微信公众号Furion。 2023 年 06 月 08 日,Furion成功购买下furion.net域名:查看官宣。 2023 年 06 月 14 日,Furion在NuGet平台突破900万下载量。 2023 年 08 月 22 日,Furion在NuGet平台突破1000万下载量。 2023 年 09 月 01 日,Furion诞生三周年。 2023 年 09 月 05 日,Furion申请从木兰开源社区毕业。 2023 年 10 月 19 日,Furion在NuGet平台突破1100万下载量。 2023 年 11 月 03 日,Furion推出官方VIP服务。 2023 年 11 月 15 日,Furion正式适配.NET8架构。 2023 年 11 月 17 日,Furion通过⌈中国电子技术标准化研究院⌋成熟度评估。 2023 年 11 月 26 日,Furion推出文档付费浏览服务。 2023 年 12 月 13 日,Furion上线新官网furion.net。 2023 年 12 月 19 日,Furion在NuGet平台突破1200万下载量。 2023 年 12 月 28 日,Furion在 Gitee 平台获得 10000 Stars。 2024 年​ 2024 年 ?? 月 ?? 日,Furion正式发布5.0.0版本,一次彻底的革新。

优秀的个人博客,低调大师

把时间沉淀下来 | Kagol 的 2022 年终总结

现代管理学之父德鲁克在其经典著作《卓有成效的管理者》中对时间有一段精妙的论述,其要点如下: 时间是一项限制因素,任何生产程序的产出量,都会受到最稀有资源的制约,而时间就是其中最稀有的资源。 时间也是最特殊的一项资源,资金可以筹集,人力也总可以雇到,只有时间是我们租不到、借不到,也买不到,更不能以其他手段来获得的。 时间的供给,丝毫没有弹性,不管时间的需求有多大,供给绝不可能增加。 时间稍纵即逝,根本无法贮存,时间永远是最短缺的。 时间也完全没有替代品,我们可以增加知识,也可以增加人力,但没有任何东西可以替代已失去的时间。 做任何事情都少不了时间,时间是必须具备的一个条件,任何工作都是在时间中进行的,都需要耗用时间。 1 如何将时间沉淀下来 虽然时间是无形的,看不见、摸不着,也无法贮存,但却可以通过有形的东西沉淀下来。 当你花时间写完一篇文章,时间就沉淀到文字中 当你录制了一个有趣的视频,时间就沉淀到视频里 当你花了一整天的时间整理房间,时间就沉淀到你每天的起居环境里 当你去健身房撸铁,时间就沉淀到每一块结实的肌肉里 当你种了一盆花,时间就沉淀到绽放的每一朵鲜花中 如果你创建了一个开源项目,时间就: 沉淀到你写的每一行代码里 沉淀到你为项目编写的每一篇文档里 沉淀到你提交或解决的每条 Issue / PR 里 沉淀到你的每一次代码检视意见和讨论里(图1) 沉淀到你组织的每一次会议中(图2) 沉淀到你与社区成员的每一次互动中 图1:代码检视 图2:开源社区会议 2 开源:将时间沉淀到代码里 2022年大部分时间都投入到了 Vue DevUI 开源项目的建设中,并于今年9月1日发布了1.0版本。 2.1 过程 从过程上来看,我个人的贡献主要如下: 贡献5000多行代码(除去 pnpm-lock.yaml 等无效代码提交) 提交200多个PR 报告90多个Issue 提出200多条代码检视意见 发布40多个版本 撰写8篇推广文章 组织10多场线上沟通会 参加1场线下开源会议分享 图3:Commits 图4:PR Vue DevUI 推广文章: 👍:点赞<br> 🔖:阅读 295👍34526🔖 Vue DevUI 1.0 正式发布 173👍33991🔖 Vue DevUI:100多位贡献者持续530多天,写了近60000行代码,这个新鲜出炉的 Vue3 组件库你不想尝试下吗? 42👍10162🔖 20行代码,给你的项目增加 DevUI 主题切换能力 25👍1612🔖 探索开源社区开发模式:vue-devui 组件库 1.0 版本公开测试 10👍987🔖 请收下这份《Vue DevUI 公开测试参考指南》 11👍889🔖 DevUI 开源社区 Issue / PR 周报第2期:本周迎来贡献的超级大爆发,共10位贡献者提交26个PR 9👍1028🔖 DevUI 开源社区 Issue / PR 周报第1期 8👍1094🔖 如何在1分钟之内创建一个符合规范的DevUI组件 2.2 成果 从结果上来看,通过积极的社区运营: 增加35位贡献者 增加476颗Star 增加1057个PR 增加223个Issue 微信社群增加150多名成员 掘金增加800多关注者 掘金增加近30万阅读 掘金增加2465个点赞 图5:Star trends 图6:GitHub card 图7:掘金数据 以下是我个人2022年的 GitHub 贡献图: 图8:Contributions 以下是我在中国开源年会现场的分享: 图9:Kagol 在中国开源年会现场的分享 2.3 社区 > 代码 Vue DevUI 取得的小小成绩主要依赖于社区的朋友们,我只是起到一个将大家团结在一起的角色,通过 Vue DevUI 这个开源项目,我认识了很多社区的优秀开发者,并跟他们建立了很好的关系。 我觉得这应该就是开源社区应有的样子: 一群来自全国各地(甚至全球各地)的开发者,因为有着同样的兴趣和志向聚集在一起,一起开发一个有价值的开源项目,大家真诚地相互交流、分享和协作,一起集思广益解决问题,一起享受成功的喜悦,也一起分担失败的痛苦。 以前我觉得自己做的开源项目一定要要有很多 Star,要有很多下载量,这样才有意义、才有价值,现在我觉得做开源本身就是意义,通过做开源项目收获的友谊、获得的成长,这本身就是价值。 旅行并不是达到目的地才是旅行,从你出门的那一刻起,风景就已经出现! 图10:Contributors 3 写作:将时间沉淀到文字中 除了做开源项目可以将时间沉淀下来,写文章也可以。 写技术文章是一个很好的自我总结和自我展示的方式,我很喜欢写作,当初有机会负责开源运营,可能也是领导看我写作能力还可以,当时在自己的个人公众号(Kagol)上发布了几篇解析 Quill 原理的文章。 今年写的技术文章比较少,技术文章写了10篇,推广文章写了10多篇,开源运营的文章也写了3篇(以前没怎么写过,现在慢慢积累了一些开源社区运营的经验,所以慢慢地也会给大家进行分享)。 技术文章主要写了一个迷你的组件设计系列,给大家分享了我自己的组件设计观: 72👍6297🔖 前端开发的积木理论——像搭积木一样做前端开发 49👍3934🔖 用积木理论设计一个灵活好用的Carousel走马灯组件 13👍2706🔖 CarouseIndicator 组件应用:0行JS代码实现好看的手风琴式折叠卡片效果 21👍2003🔖 用积木理论设计的Carousel组件都有哪些有趣的玩法? 另外也写了几篇零散的文章: 11👍1560🔖 从 CDK Tree 源码学习如何开发一个UI无关的 Tree 组件 288👍23484🔖 前端Vuer,请收下这份《Vue3中使用JSX简明语法》 81👍4043🔖 前端Vuer,请给你的项目加上 ESLint 19👍1711🔖 DEVUI蓝掘金主题上线啦🎉 还有三篇分享我对开源运营的一些思考: 20👍1314🔖 DevUI 开源经验:从启动开源项目到运营开源社区 8👍3083🔖 从0到1开始运营你的开源项目——华为云DevUI成长经验分享 28👍1325🔖 运营一个开源社区究竟意味着什么? 有三篇发在我个人的掘金账号(因为是刚刚开始运营的个人掘金账号,数据非常惨淡就不贴出来),大家多多支持下我的个人掘金账号呀,后续我也会持续分享一些前端和开源方面的经验。 React DevUI 18.0 正式发布🎉 好慌,我代码没了!不会是变基变出问题了吧? 老板:你为什么要选择 Vue? 写作方面今年做得不够,明年加油吧! 除了我自己写的文章,DevUI团队账号中有不少是社区朋友们的投稿,非常感谢朋友们对DevUI和我的大力支持,尤其是ErKeLost同学,给我们投稿了三篇高质量技术文章,以下是他们的投稿文章: 58👍1381🔖 手把手教你开发一个快速、高性能、高质量压缩图片的 Vite 插件 - ErKeLost 249👍11787🔖 🚀Turborepo:发布当月就激增 3.8k Star,这款超神的新兴 Monorepo 方案,你不打算尝试下吗? - ErKeLost 53👍2655🔖 Ripple:这个广受好评的水波纹组件,你不打算了解下怎么实现的吗? - ErKeLost 31👍3053🔖 骨架屏优化——细粒度模式的实现 - ivestszheng 47👍3406🔖 手把手教你实现 Tree 组件搜索过滤功能,干货满满! - daviForevel 另外也要感谢我们团队成员的大力支持,特别是汤汤Tang和rhlin同学,以下是他们的投稿文章: 25👍2157🔖 Angular依赖注入模式的应用和玩法案例 - rhlin 92👍5695🔖 如何使用 Monaco Editor 做一个在线的网页代码编辑器 - 汤汤Tang 15👍1413🔖 Angular PWA 渐进式 Web 应用 - 汤汤Tang 16👍1156🔖 TypeScript AST (抽象语法树) 结合 Angular Schematics 的应用 - 汤汤Tang 4 2023 年展望:将时间沉淀到自己的热爱里 2023年我依然会将主要精力投入开源和写作上,另外也会尝试: 运营自己的个人公众号(欢迎关注我:Kagol)和掘金账号,分享自己在前端和开源两个方向上的经验,欢迎大家关注我 参加一些内外部的分享,锻炼自己的演讲能力,增加个人影响力 尝试写一本掘金小册(惭愧,2021年立的 flag 到现在还没实现) 最后给大家推荐一部非常治愈的纪录片:《人生果实》。 --- END --- 我是 Kagol,如果你喜欢我的文章,可以给我点个赞,关注我的公众号Kagol,一起交流前端技术、一起做开源!

优秀的个人博客,低调大师

2016智能家居产业年终总结:场景上镜之年

2016年别了,2017年来了。 年度交捧之际,业界照例推出智能家居各种盘点,不过均以产品或者事件梳理总结,依然欠缺基于工程创新、商业落地而对智能家居所作的年度盘点。 如果对2016年智能家居作一高浓缩陈述,那么这可归结为场景上镜之年——智能家居呈现大跨度、大尺度、大面积的泛场景落地轨迹;如果对2016年智能家居作一扫描性标注,那么则可挑选一组标签词——泛场景落地、泛交互体验、泛工程创新、泛融合演进。 轻单品走向飙速期 经历了2014、2015连续两年各种智能单品的预览、众筹、首发和内测,2016年,主打不同功能、面向不同场景和针对不同用户的智能单品几乎全面开花,无所不见。 不过,智能单品之间各自的“人品”则是大相径庭,2015年曾经大热的智能穿戴单品到了2016年普遍沦为鸡肋,不受待见,全年度缺乏人气单品,更没有品类突破;智能健康单品呈现平稳增长势态,既没有大热之势,也没有受人冷淡。 比较可喜的是,面向C端用户的智能家居单品,由于即买即用或者即插即用,免于安装调试,它们大多进入零售路径上的飙速期。基本上说,品类覆盖智能插座、智能灯泡、甲醛监测仪、一氧化氮监测仪、家务类智能机器人、智能摄像机、智能空净器、智能温控器、智能音箱等,普遍基于住宅(客厅、宿舍、出租房、酒店客房)某个微场景或者轻场景使用。 一些电商平台统计监测显示,这一年,智能家居单品实现了超过5倍的增长。比如海尔卫玺智能马桶盖、长虹智能电视CHiQ2.0、COCO智能插线板、iRobot智能扫地机器人、Origins空气质量检测仪、Amzon Echo等表现一度十分抢眼。 重场景站上成长期 在公众印象中,智能家居跟“哥”一样是个传说,一直仅限应用于少量别墅、酒店等场景,这指的是1997年发端的智能家居——基于布线安装、与互联网隔绝的家庭自动化。 不过,2013年前后重新开步的智能家居跌跌撞撞两三年之后终于在2016年走向它成长史上第一个分水岭——智能家居首次大面积、大规模进入别墅大宅、普通住宅等核心场景,开始向办公室、酒店、医院、学校、工厂、店铺、超市等周边场景落地扩散,以场景联动、场景交互和场景服务为标志的智能家居产品及其系统从既往的无处安放站上“重”场景中央。 一个统计显示,TOP100地产开发商100%开启了新盘项目的智能化窗口,50%以上地产开发商其中不低于30%的新盘项目实施了智能化升级。鉴于智能家居落地别墅大宅、普通住宅、办公室、酒店等“重”场景,定制化方案中的系统配置大都在智能主机、门锁、照明、安防、监控、门窗、环境监测、地暖新风、影音控制、家电控制等智能设备子系统作了增减。 比较遗憾的是,被贴上传统标签的智能家居设备厂商普遍失意,依然没能站上成长期窗口,不过,欧瑞博多场景方案、杜亚子系统方案、海尔大家电方案等悄然上镜,意外走红。 体验转入泛交互期 令人费解的是,公众一直不曾评判过往与互联网隔绝但以家庭自动化为目标的上一代智能家居,不过对于从移动互联网时代走来的新一代智能家居倒是一直不乏吐槽甚至质疑,智能设备被扣上“伪”智能帽子,手机App操作被指多此一举。实际上,针对2013—2015年期间出品的智能家居,公众在人机交互的吐槽可能无懈可击,业界经常无言以对。 不过,到了2016年,用户对智能家居单个设备、场景系统的操作或者控制事实上转入泛交互时代——手机App主要以远程操作入口而普遍保留,智能场景面板、智能魔镜、智能随意贴、智能遥控器、智能门锁、智能音箱、智能机器人等则以近场操作入口开始上位。 从这一年开始,手机App已不再是智能家居主流的人机交互入口及其交互方式,更不是唯一的人机交互入口及其交互方式,甚至说,70%以上的智能家居设备支持手机App以外的人机交互方式,几乎100%的智能家居厂商转向支持多种人机交互体验的新品开发。比如,谷歌发布的Home智能音箱、欧瑞博推出的MixPad智能场景面板、海尔推出的智能魔镜等代表了智能家居少交互、轻交互的人机泛交互趋势。 智能化挺进加速期 除了智能家居产品及其在场景上的变化之外,来自产业链上的变化更为明显——除了安防、监控等“家居”自身智能进化外,照明、门锁、门窗、家电、家具、家纺设备(产品)智能化升级进入加速期。 这一年,100%的家电品类和70%以上的照明、门锁、门窗品类,其新品研发都走出了智能化升级轨迹,超过50%的传统家电仅作为销售走量的保留品线,功能性家电已从新品研发清单上大面积退出;家具(床垫、沙发、茶几、桌椅等)的智能化升级从早些年的个案尝试进入了主流厂商较为高频的转型尝试;家纺产品的智能化升级,或者从场景使用上起步,或者从新品研发上开局,主流厂商均已完成布局并有落地进展。 这一年,泛家居和泛家电智能化加速升级,来自于一批被称为智能化引擎和物联网+的方案公司的推动和助力。比如,以汉威电子、拓邦股份为代表的硬件模组方案、以Ayla为代表的物联网云方案、以欧瑞博为代表的硬件模块和智能云一体化方案、以硬蛋为代表的开发者供应链方案、以华为、高通为代表的全连接技术方案。 大物联迈入试水期 与此同时,基于蜂窝技术的窄带物联网(NB-IoT、LORA)开始试点,正在展现智能设备的场景互联从基于蜂窝技术的宽带互联网可能切换到窄带物联网的可能前景。 这一年,华为率先完成了基于3GPP标准协议的NB-Io端到端系统功能及性能验证。 中国移动立马尝试,启动了无锡新吴区鸿山物联网建设,为鸿山小镇搭建了NB-IoT物联网商用专网,实现鸿山小镇NB-IoT网络全覆盖。 物联网(NB-IoT、LORA)暂不会影响智能家居设备及其系统在住宅、办公、酒店、零售店铺、学校医院等场景端的智能互联预期。 本文转自d1net(转载)

优秀的个人博客,低调大师

把时间沉淀到自己的热爱里 | Kagol 的 2022 年终总结

现代管理学之父德鲁克在其经典著作《卓有成效的管理者》中对时间有一段精妙的论述,其要点如下: 时间是一项限制因素,任何生产程序的产出量,都会受到最稀有资源的制约,而时间就是其中最稀有的资源。 时间也是最特殊的一项资源,资金可以筹集,人力也总可以雇到,只有时间是我们租不到、借不到,也买不到,更不能以其他手段来获得的。 时间的供给,丝毫没有弹性,不管时间的需求有多大,供给绝不可能增加。 时间稍纵即逝,根本无法贮存,时间永远是最短缺的。 时间也完全没有替代品,我们可以增加知识,也可以增加人力,但没有任何东西可以替代已失去的时间。 做任何事情都少不了时间,时间是必须具备的一个条件,任何工作都是在时间中进行的,都需要耗用时间。 1 如何将时间沉淀下来 虽然时间是无形的,看不见、摸不着,也无法贮存,但却可以通过有形的东西沉淀下来。 当你花时间写完一篇文章,时间就沉淀到文字中 当你录制了一个有趣的视频,时间就沉淀到视频里 当你花了一整天的时间整理房间,时间就沉淀到你每天的起居环境里 当你去健身房撸铁,时间就沉淀到每一块结实的肌肉里 当你种了一盆花,时间就沉淀到绽放的每一朵鲜花中 如果你创建了一个开源项目,时间就: 沉淀到你写的每一行代码里 沉淀到你为项目编写的每一篇文档里 沉淀到你提交或解决的每条 Issue / PR 里 沉淀到你的每一次代码检视意见和讨论里(图1) 沉淀到你组织的每一次会议中(图2) 沉淀到你与社区成员的每一次互动中 图1:代码检视 图2:开源社区会议 2 开源:将时间沉淀到代码里 2022年大部分时间都投入到了 Vue DevUI 开源项目的建设中,并于今年9月1日发布了1.0版本。 2.1 过程 从过程上来看,我个人的贡献主要如下: 贡献5000多行代码(除去 pnpm-lock.yaml 等无效代码提交) 提交200多个PR 报告90多个Issue 提出200多条代码检视意见 发布40多个版本 撰写8篇推广文章 组织10多场线上沟通会 参加1场线下开源会议分享 图3:Commits 图4:PR Vue DevUI 推广文章: 👍:点赞<br> 🔖:阅读 295👍34526🔖 Vue DevUI 1.0 正式发布 173👍33991🔖 Vue DevUI:100多位贡献者持续530多天,写了近60000行代码,这个新鲜出炉的 Vue3 组件库你不想尝试下吗? 42👍10162🔖 20行代码,给你的项目增加 DevUI 主题切换能力 25👍1612🔖 探索开源社区开发模式:vue-devui 组件库 1.0 版本公开测试 10👍987🔖 请收下这份《Vue DevUI 公开测试参考指南》 11👍889🔖 DevUI 开源社区 Issue / PR 周报第2期:本周迎来贡献的超级大爆发,共10位贡献者提交26个PR 9👍1028🔖 DevUI 开源社区 Issue / PR 周报第1期 8👍1094🔖 如何在1分钟之内创建一个符合规范的DevUI组件 2.2 成果 从结果上来看,通过积极的社区运营: 增加35位贡献者 增加476颗Star 增加1057个PR 增加223个Issue 微信社群增加150多名成员 掘金增加800多关注者 掘金增加近30万阅读 掘金增加2465个点赞 图5:Star trends 图6:GitHub card 图7:掘金数据 以下是我个人2022年的 GitHub 贡献图: 图8:Contributions 以下是我在中国开源年会现场的分享: 图9:Kagol 在中国开源年会现场的分享 2.3 社区 > 代码 Vue DevUI 取得的小小成绩主要依赖于社区的朋友们,我只是起到一个将大家团结在一起的角色,通过 Vue DevUI 这个开源项目,我认识了很多社区的优秀开发者,并跟他们建立了很好的关系。 我觉得这应该就是开源社区应有的样子: 一群来自全国各地(甚至全球各地)的开发者,因为有着同样的兴趣和志向聚集在一起,一起开发一个有价值的开源项目,大家真诚地相互交流、分享和协作,一起集思广益解决问题,一起享受成功的喜悦,也一起分担失败的痛苦。 以前我觉得自己做的开源项目一定要要有很多 Star,要有很多下载量,这样才有意义、才有价值,现在我觉得做开源本身就是意义,通过做开源项目收获的友谊、获得的成长,这本身就是价值。 旅行并不是达到目的地才是旅行,从你出门的那一刻起,风景就已经出现! 图10:Contributors 3 写作:将时间沉淀到文字中 除了做开源项目可以将时间沉淀下来,写文章也可以。 写技术文章是一个很好的自我总结和自我展示的方式,我很喜欢写作,当初有机会负责开源运营,可能也是领导看我写作能力还可以,当时在自己的个人公众号(Kagol)上发布了几篇解析 Quill 原理的文章。 今年写的技术文章比较少,技术文章写了10篇,推广文章写了10多篇,开源运营的文章也写了3篇(以前没怎么写过,现在慢慢积累了一些开源社区运营的经验,所以慢慢地也会给大家进行分享)。 技术文章主要写了一个迷你的组件设计系列,给大家分享了我自己的组件设计观: 72👍6297🔖 前端开发的积木理论——像搭积木一样做前端开发 49👍3934🔖 用积木理论设计一个灵活好用的Carousel走马灯组件 13👍2706🔖 CarouseIndicator 组件应用:0行JS代码实现好看的手风琴式折叠卡片效果 21👍2003🔖 用积木理论设计的Carousel组件都有哪些有趣的玩法? 另外也写了几篇零散的文章: 11👍1560🔖 从 CDK Tree 源码学习如何开发一个UI无关的 Tree 组件 288👍23484🔖 前端Vuer,请收下这份《Vue3中使用JSX简明语法》 81👍4043🔖 前端Vuer,请给你的项目加上 ESLint 19👍1711🔖 DEVUI蓝掘金主题上线啦🎉 还有三篇分享我对开源运营的一些思考: 20👍1314🔖 DevUI 开源经验:从启动开源项目到运营开源社区 8👍3083🔖 从0到1开始运营你的开源项目——华为云DevUI成长经验分享 28👍1325🔖 运营一个开源社区究竟意味着什么? 有三篇发在我个人的掘金账号(因为是刚刚开始运营的个人掘金账号,数据非常惨淡就不贴出来),大家多多支持下我的个人掘金账号呀,后续我也会持续分享一些前端和开源方面的经验。 React DevUI 18.0 正式发布🎉 好慌,我代码没了!不会是变基变出问题了吧? 老板:你为什么要选择 Vue? 写作方面今年做得不够,明年加油吧! 除了我自己写的文章,DevUI团队账号中有不少是社区朋友们的投稿,非常感谢朋友们对DevUI和我的大力支持,尤其是ErKeLost同学,给我们投稿了三篇高质量技术文章,以下是他们的投稿文章: 58👍1381🔖 手把手教你开发一个快速、高性能、高质量压缩图片的 Vite 插件 - ErKeLost 249👍11787🔖 🚀Turborepo:发布当月就激增 3.8k Star,这款超神的新兴 Monorepo 方案,你不打算尝试下吗? - ErKeLost 53👍2655🔖 Ripple:这个广受好评的水波纹组件,你不打算了解下怎么实现的吗? - ErKeLost 31👍3053🔖 骨架屏优化——细粒度模式的实现 - ivestszheng 47👍3406🔖 手把手教你实现 Tree 组件搜索过滤功能,干货满满! - daviForevel 另外也要感谢我们团队成员的大力支持,特别是汤汤Tang和rhlin同学,以下是他们的投稿文章: 25👍2157🔖 Angular依赖注入模式的应用和玩法案例 - rhlin 92👍5695🔖 如何使用 Monaco Editor 做一个在线的网页代码编辑器 - 汤汤Tang 15👍1413🔖 Angular PWA 渐进式 Web 应用 - 汤汤Tang 16👍1156🔖 TypeScript AST (抽象语法树) 结合 Angular Schematics 的应用 - 汤汤Tang 4 2023 年展望:将时间沉淀到自己的热爱里 2023年我依然会将主要精力投入开源和写作上,另外也会尝试: 运营自己的个人公众号(欢迎关注我:Kagol)和掘金账号,分享自己在前端和开源两个方向上的经验,欢迎大家关注我 参加一些内外部的分享,锻炼自己的演讲能力,增加个人影响力 尝试写一本掘金小册(惭愧,2021年立的 flag 到现在还没实现) 最后给大家推荐一部非常治愈的纪录片:《人生果实》。 --- END --- 我是 Kagol,如果你喜欢我的文章,可以给我点个赞,关注我的公众号Kagol,一起交流前端技术、一起做开源!

优秀的个人博客,低调大师

超 200K Star 的 Dromara 开源社区的年终总结,请查收!

过去一年大家见证了 Dromara 开源社区的飞速发展,社区的进步离不开社区成员们的,社区下开源项目贡献者们的辛勤劳动贡献和触达用户们,开源爱好者们的大力支持,对此我们感激不尽。 接下来我们看看社区这 2023 一年的成长吧! 新增捐赠孵化 20+ 非常棒的开源项目,目前社区下的总项目数量超 50 个。 社区下孵化项目 HertzBeat, Dynamic-Tp, Easy-Es 发展迅速,成功毕业成为社区顶级开源项目。云原生大数据平台 CloudEon 成为被评为 Gitee GVP (Gitee最具价值开源), 目前 Dromara 社区下的 GVP 项目数量已达到 16 个。社区下开源实时监控 HertzBeat 被CNCF全景图收录。 在 Gitee 和 Github 平台上,Dromara 社区项目总共获得超 200K star 小星星🌟,和 数不清的 Fork Watch次数(偷懒了😂)。 2023年这一年社区下开源项目在 Github 平台上新增 2万 颗小星星,PR数量1000+,Issues数量1400+ 社区下开源项目作为课题项目成功参与中科院的OSPP开源之夏和计算机学会的GLCC编程夏令营活动,申请的同学们热情很高,最终中选的同学在导师的指导下顺利完成课题项目并结项。祝贺他们㊗️。 5月Dromara参展全球开源技术峰会GOTC,社区小伙伴的在上海线下面基成功,+薅了很多羊毛。 7月Dromara参加华为云开发者大会,社区小伙伴们又东莞线下面基一波,三位小伙伴做了Dromara与华为云开源主题分享,收获满满。 10月Dromara参加了COSCon'23 中国开源年会,社区小伙伴们又成都线下面基一波,我们准备的小礼品很受欢迎,社区小伙伴做了关于社区项目的主题分享。 12月Dromara参加了2023开放原子开发者大会,虽然没有面基成功(下次一定),但是社区大佬明哥在会上给开源同行们分享介绍了我们社区,收获满满+1。 关于荣誉 荣获中国开源创新大赛优秀奖, 2023年度最受关注喜爱的开源组织和最活跃组织之一, 掘金2023年度人气团队等。 还有更多事件在2023年的Dromara发生。。。就先列举到这里了 社区下项目团队在2023年也发布了无数个版本,维护者上万人的开源社群,回答并帮助解决了数不清的用户问题,安装量,下载量,被引用量都是以万的单位计数。这一切此时此刻依然正在发生。 2023已然结束,期待2024更加美好! 船新官网: https://dromara.org/Github: https://github.com/dromaraGitee: https://gitee.com/dromara

优秀的个人博客,低调大师

服务网格 ASM 年终总结:最终用户如何使用服务网格?

作者:叶剑宏 背景 阿里云服务网格 ASM 于 2020 年 2 月公测,近 2 年的时间,已有大量用户采用其作为生产应用的服务治理平台。阿里云服务网格 ASM 基于开源 Istio 构建。同时,Istio 仍然年轻,2021 年我们看到 Istio 不少新的进展,eBPF、Multi-buffer、Proxyless 等,每一次 Istio 的变化都牵动人们的神经——是时候采用服务网格了吗? 本文不打算回顾 Istio 或是阿里云服务网格 ASM 的变化或趋势,我们来聊一聊阿里云 ASM 服务网格,它的最终用户是如何使用服务网格的。 为什么采用服务网格 服务网格的理念是将服务治理能力下沉到基础设施,让业务更加专注于业务逻辑。我们可以很轻松地举出服务网格带来的服务治理能力,比如流量管理、可观测性、服务安全通信、策略增强如限流和访问控制等。但是,最终用户真的需要这些功能吗?Istio 的这些能力真的满足生产要求吗?为了一两个功能引入服务网格是否值得大费周章? 比如说流量管理,最受关注的是 Traffic Splitting,常用于灰度发布或者 A/B 测试。Istio 的功能设计非常简洁,但是默认无法实现全链路流量管理。如果没有在所有微服务拓扑节点里透传自定义的 Header 或标签,具有关联性的服务流量切割则完全不可能。 比如是安全能力,采用传统手段进行大量微服务 TLS 认证几乎是 Impossible Mission,而 Envoy 提供的 mTLS 加密则非常轻松地完成了服务间加密通信,或者说零信任安全。但是,用户是否真的关心服务间安全,毕竟这些微服务大多运行在云上的一个 VPC 的一个 Kubernetes 集群里。 比如可观测性,Istio 将 Metrics、Logging、Tracing 统一起来,可以很方便地获取微服务拓扑结构,快速地定位微服务问题。但是,Sidecar 无法深入进程级别,相关的 Metrics 和 Tracing 相比经典的 APM 软件实在相形见绌,无法真正有效地定位代码级别问题。 最后策略增强比如限流能力,Istio 提供 Global Rate Limit 和 Local Rate Limit 限流能力,确实是大量面向 C 端用户应用的强需求。但是它真的能满足复杂的生产应用限流降级需求吗? 真正的生产环境各式各样,服务网格在落地过程中又会遭遇各种各样的挑战。最终用户最关心的服务网格的能力是什么,在落地过程中又有怎么的实践经验? 用户主要采用服务网格什么能力? 我先暂时不回答上面提出的疑问。我们来看看阿里云服务网格 ASM 用户主要使用服务网格的哪些能力,我相信读者会形成自己的答案。 流量管理 首先当然是流量管理,这是 Istio 最显著地提升应用发布幸福感的能力。阿里云服务网格 ASM 大部分的用户出于流量管理的需求选择了 ASM 服务网格。而流量管理主要应用在灰度发布或 A/B 测试。最常见的应用场景如下: 上图的灰度流量切换发生在 Ingress 网关上,服务内部在各自的 Namespace 里闭环,方案简单有效。缺点是每次灰度需要在灰度的 Namespace 里部署全量微服务。另外一种朴素的想法是希望实现全链路灰度发布,我有时候喜欢称之为 Dark Release。什么是全链路灰度发布?如下图所示: 可以任意地灰度其中的一个或多个服务而不需要高成本地部署全量微服务。基于社区 Istio 的 Header-based traffic routing,可以实现全链路灰度发布,前提是在全链的每一个服务中,开发透传规定的自定义 Header。 这种方式显得稍费工夫,每个服务都需要侵入式的修改,落地过程中往往只有新的项目和应用能在一开始便如此设计。有没有替代方案?阿里云服务网格 ASM 提供了一种基于 Tracing 的全链路灰度发布方案。原理并不复杂,既然全链微服务需要有一个 header 或标签将服务请求关联性串联起来,traceid 显然是个现成的“连接器”。 这跟自定义 header 透传相比似乎有点显得“换汤不换药”,Tracing 接入一样需要代码侵入。但 Tracing 有开源的标准,实现 Tracing 的同时赋能了全链路流量管理能力,这是开源标准的力量。另外,如果是 Java 应用,阿里云 ARMS 提供了无代码浸入的 Tracing 接入能力,与 阿里云服务网格 ASM 配合即可实现完全无代码修改的全链路灰度发布。 我们再回到落地场景,ASM 用户里常常是中小规模的企业或应用能够建立完整的 Tracing 跟踪,反而是大公司应用众多,Tracing 链路断得稀碎,实在让人头疼。好在关联服务的灰度往往发生在“局部”内,局部内的服务链路完整已经可以满足灰度的要求。 南北流量管理 我们在上面讨论的主要还是东西向流量管理,而南北向流量管理是一个具有更丰富生态的领域。Solo 公司在这一领域的 Gloo Edge 和 Gloo Portal 堪称楷模,国内也有不少的基于 Envoy 或面向 Mesh 的 API 网关。Istio-ingressgateway 与 Lagacy API Gateway 有什么区别和联系?社区有非常多的讨论,我个人的观点是,原子能力上没有明显差别,只是面向的操作界面不同和目前生态不同。 有些用户采用阿里云服务网格ASM的原因其实并不是需要服务治理,而是借用 Istio-ingressgateway 的增强能力。Istio 的 Gateway、VirtualService 和 DestinationRule 定义显然比 Kubernetes Ingress 模型更加清晰,分层明确,再加上 Envoy 强大的扩展能力,Envoy 和 Istio-ingressgateway 在网关选型中逐渐受到青睐。举个简单的例子—— gRPC 负载均衡,Envoy/Istio 轻而易举实现,很多用户的 Istio 选型则由此出发。例如对 AI Serving 推理服务场景,服务链路不长,Sidecar 带来的延迟几可忽略。 Istio/Envoy 在网关上的扩展目前大多基于 Lua 或者 WASM,通过 Envoyfilter 可以实现非常多的自定义能力扩展。落地挑战也非常简单直接,用户说,臣妾不会写 Lua,更不会写 WASM 啊。云厂商说没关系,我来写啊,根据场景的扩展的东西写多了,就可以放在一块做个插件市场,按需选择。从今年的用户视角来看,WASM 知道的颇多,但应用起来仍然比较复杂。 举一个常见的应用场景——入口流量打标,或者流量染色。根据入口流量的特征,比如来源的私网或互联网、登录用户信息等进行流量打标。打标后的再进行流量分流或灰度发布。 还有一个场景值得补充,Egress 流量控制,不少对应用安全要求高的用户采用 Istio Egress 网关来控制应用七层可访问的范围。Network Policy 三四层易做,七层控制可考虑采用服务网格。 多语言服务治理 我们上面聊了一通 Istio 流量管理,似乎问题已经基本解决。但是人们经常忽略了一个潜藏的前提 —— 流量管理能力生效是需要服务采用 Kubernetes 服务发现的,或者说,服务间调用需要带上 Host 的 Header 或访问 Kubernetes clusterIP。现实世界中,ACK 上运行着大量采用注册中心作为服务发现的微服务应用,并且存在多语言。我们发现多语言越来越普遍,而这往往是业务快速发展的结果。为了快速满足需求,不同项目不同团队选择了不同的语言开发,服务治理需求随后才提上日程。这些微服务可能是采用 ZK、Eureka、Nacos 的 Dubbo 或 Spring Cloud 微服务,或者是采用 Consul、ETCD 和 Nacos 的 Go、C++ 、Python 和 PHP 微服务应用。这些服务从注册中心获取实例 Pod IP 列表,通过 Envoy是成为 PassthroughCluster,直接绕过了 Envoy filter chain,流量管理和其他 Istio 能力则无从谈起。 于是,Istio 从诞生之日起许诺的多语言无侵入微服务治理在现实世界中落地之路中布满荆棘。不同注册中心的微服务和注册到 Kubernetes 和 Pilot 的微服务如何能愉快地玩耍? 一个简单朴素的方案是,把注册中心拆掉,采用 Kubernetes CoreDNS 服务发现,全面用 Service Mesh。ASM 用户中采用这种方案的常常是新开发的应用或者老应用重构、服务链路较短的应用。但非常多的应用如果采用这种方案,将要考虑开发的侵入修改,应用的平滑迁移等挑战,在实际推行中会面临较多的阻碍。 应该保留原来的应用架构还是面向 Kubernetes 设计?向左走,向右走?It’s a Question。 对于需要保留注册中心的场景,阿里云设计了 2 个方案:服务发现同步和服务发现拦截。 什么是服务发现同步?既然问题根源在同时存在 Nacos/Consul 注册中心和 Pilot 注册,那就把它们互相同步一下就好了嘛,Nacos/Consul 通过 MCP over xDS 同步到 Pilot,让 Mesh 侧服务能发现左侧的服务。如果左侧的服务希望以保持原来的方式访问 Mesh 服务,再增加同步组件将 Pilot 注册信息同步到 Nacos。这个方案稍显复杂,好处是尽量保持原有的架构和开发方式。结合阿里云 MSE 可以实现对 Java 侧微服务的服务治理。 我们再来看另外一个方案——服务注册拦截,或者称之为全 Mesh 方案。 原理非常简单,将如 Nacos 的返回注册实例 IP 信息由 Sidecar 拦截篡改为 Kubernetes clusterIP,使得 Envoy filter 链重新生效。或者可以总结为 “Keep it, But ignore it”。全 Mesh 方案好处也显而易见,通过统一的 Mesh 技术栈(包括数据面和控制面)管理所有的微服务,方案清晰,对开发无感。 目前这 2 个方案都在阿里云用户中获得了落地实践,到底哪一个更适合你的应用,可能就得具体分析了。 服务安全 提到 Istio 提供的安全能力,首先便是 mTLS 证书加密。Istio 默认 Permissive 策略下,同一个网格内的所有服务都自动获得 mTLS 加密能力(有些用户似乎没有意识到已经默认开启了)。国内用户几乎不太关注这项能力,但 ASM 海外用户对 mTLS 却是强需求。一位海外用户的理解是,一个 Istio 或 Kubernetes 集群的节点可能分布在云上多个 AZ 中,而公有云的 AZ 分布在不同机房中,跨机房流量就可能暴露在非云的管理者里而被嗅探到,同时也可能面临来自机房管理者和运维人员的窃取风险。海外用户普便更重视安全,这也算是中外的“文化”差异了。 另外一个被较多用户提及的是自定义外部授权。Istio 默认支持的认证授权比较简单,比如基于 sourceIP、JWT 等,更复杂的授权则通过 Istio 的自定义外部授权能力进行扩展支持。入口网关处的认证授权容易理解,Mesh 范围内任意服务的授权这项复杂的工程在 Istio 的条件下轻松简化了很多。 多集群服务网格 Istio 原生支持多 Kubernetes 集群,阿里云服务网格 ASM 产品在多集群上做了简化接入。为什么采用多集群?从目前 ASM 用户来看,主要是 2 种:一是多个业务中台的统一 Mesh 管理,业务中台分别部署在不同的 Kubernetes 集群,相对来说比较独立,业务中台之间存在直接相互调用。通过 Mesh 能进行跨业务中台的服务治理;其二是跨 AZ 或 Region 的双集群应用容灾。通过 Istio 的 Locality Load Balancing 可以实现跨 AZ 或 Region 的容灾切换。 可观测性 可观测性指涉监控,当然可观测性在云原生语境下含义更加丰富,更强调提前感知和主动干预。Istio 对可观测性的增强主要在提供了丰富的协议层 metrics 和服务 sidecar 日志。举个例子,circuit breaking,有用户会觉得网格的 sidecar 是个黑盒,里面发生了什么也不太清楚,但其实 Envoy 对熔断过程都透出了清晰的指标。不过我们发现大量用户对 Istio 和 ASM 提供的丰富的 metrics 感知不多,也经常没有很好地利用起来。这可能是用户 Istio 采用阶段或功能优先级导致的,更可能的原因是作为云厂商没有把产品可观测性做好。我们仍需努力。 另外,Mesh 在应用层面统一了 Metrics、Logging 和 Tracing,越来越多用户采用 Grafana 接入这 3 类数据源进行统一的可观测性分析。 策略增强 策略增强部分我们主要来看看限流能力。社区 Istio 提供 Global Rate Limit 和 Local Rate Limit,Global Rate Limit 需要提供统一的 Rate Limit Server,Local Rate Limit 则通过 EnvoyFilter 下发到 Sidecar 本地配置。Global Rate Limit 的问题在于依赖集中式限流服务,并在每一个服务 Sidecar 拦截过程中引入新的延迟,而 Local Rate Limit 则缺乏全局判断,并且配置 EnvoyFilter 不便。我们认为 EnvoyFilter 在生产环境的引入是应该非常谨慎的,Envoy 版本更新很容易造成不兼容。 阿里云服务网格 ASM 基于 Envoy filter 机制集成了 sentinel filter,sentinel 本是阿里巴巴开源的限流熔断项目,如今被集成到 Envoy 中,提供了更加丰富且面向生产的性能和策略增强。支持流控,排队等待,熔断,降级,自适应过载保护,热点流控和可观测能力。 服务网格生产实践 从生产化应用来看,Envoy 和 Pilot 的性能都不错,在中小规模场景(1000 pod)下问题不大。中大规模(1000 pod 以上)则对相应配置细节需要做相应的优化。可观测性的接入,Envoy Sidecar logging 对性能消耗不大,metrics 开启在大规模下可能引发 Sidecar 内存升高,tracing 采样率在生产环境中需要有一定控制。 大规模下的 xDS 配置加载需要有一定的手段控制,开源有一些方案,ASM 也提供了基于访问日志分析自动推荐的 Sidecar 配置方案,使对应工作负载上的 Sidecar 将仅关注与自己有调用依赖关系的服务信息。 在 Istio 的一些功能性配置上,也有一些需要注意的内容,比如重试策略的 timeout 和 backoff delay 的关系,以及惊群效应的避免。 另外一些需要注意的是 Istio-ingressgateway 在高并发场景下的专有部署和配置优化,Sidecar 的优雅上线和下线等。这里就不再细述。 服务网格的未来? 阿里云服务网格 ASM 作为托管服务网格的先行者,已经收获了大量的用户落地,这些用户更加坚定了我们做这个产品的信心。服务网格不再是成堆的 buzzword,而是真真实实的生产化应用,处理一个又一个的琐碎的技术问题。回到本质,服务网格还是要解决业务问题。 服务网格社区在蓬勃发展,ASM 产品仍有需要完善的地方,但它已经在市场验证中获得了前行的力量。服务网格的史诗故事才刚刚开始。 点击​​此处​​,即可查看阿里云服务网格 ASM 产品详情!

优秀的个人博客,低调大师

一个5年Java程序员的年终总结,献给还在迷茫中的你

我越来越担心我作为一个Java程序员的未来。 恍然间,发现自己在这个行业里已经摸爬滚打了五年了,原以为自己就凭已有的项目经验和工作经历怎么着也应该算得上是一个业内比较资历的人士了,但是今年在换工作的过程中却遭到了重大的挫折。详细过程我就不再叙述,在此,只想给大家说一说被拒绝的原因,看看大家有没有相似的经历,和类似的感悟。面试官对我的答复大致是这样的,我们不需要熟练工,我们需要在某领域拥有超过常人的积累认知,和拥有整套完整思维模式和优秀认知事物能力的人…他很诚恳地告诉我,你还年轻,真的应该好好地静下心来,深入地研究一些东西,自己写一些东西,而不是这也用过,那也知道,但是多半都是局限于仅仅见过,会用,却从来没有认真思考过其代码背后蕴含的思想,更少有人研究过源码,进而体会大师们在某些问题的解决上秉承的思想和思维的风格。个人感觉,这也算是国内大部分程序员最让人悲哀的地方了,当然这也与外界浮躁氛围的蔓延不无关系。不了解这一行的人总觉得程序员都是代码民工,如果自己也认为自己是敲代码的机器的话,我诚恳地建议您尽早转行吧,也许我这么说会得罪伤害一些同行,毕竟转行对任何一个人来说都是有相当的风险和挑战的。不过这绝对应该是善意的忠告。相反,我强烈地认为,程序员应该是最有活力和最有思想的一个群体,只要你不肯让自己浮于表面,更重要的是,必须勤于思考。如果你认可我这句的话,就请您继续往下看看我的感慨,否则,那就希望您好好利用好自己的时间做您最需要做的事吧。 由于面试中被问到Spring,MyBatis的时候,让面试官问得人仰马翻,哑口无言,所以回来之后洗心革面,下决心要把Spring,MyBatis好好研究个明白,再也无法容忍自己只知其一不知其二了。 清醒的认识自己 我一直担惊受怕,过去,可能是因为我年轻,但现在,我已经不是那么年轻了,我仍然发现有很多事情让我害怕。 当年纪越来越大后,我开始变得不能加班。我开始用更多的时间和家人在一起,而不是坐在计算机前(尽管这样,她们仍是抱怨)。我在本地教育委员会社区里提供一些帮助,还组织开源兴趣小组参加活动。 我在思考,为什么以前会把如此多的时间全部用在编程上。大量的编程。那是我渴望深入研究一个类库,一个框架或一门技术。 现在的技术的学习曲线的增加,让我的忍耐性越来越低。各种新技术,因为新奇让人兴奋,但最终变成一场场争论。我越来越无法忍受这些充满市场宣传气息的喧嚣。我对技术看重的是稳定,清晰。 据不完全统计,截至目前(2017.07)为止,中国Java程序员的数量已经超过了100万。而且,随着IT培训业的持续发展和大量的应届毕业生进入社会,Java程序员面临的竞争压力越来越大。那么,作为一名Java程序员,怎样努力才能快速成长为一名高级的程序员或者架构师,或者说一名优秀的高级工程师或架构师应该有怎样的技术知识体系,这不仅是一个刚刚踏入职场的初级程序员,也是工作三五年之后开始迷茫的老程序员,都必须要面对和想明白的问题。为了帮助大家少走弯路,我总结出一个Java程序员的工作2-5年成长路线图。 工作一到五年的程序员朋友面对目前的技术无从下手,感到很迷茫可以加群744677563,里面有阿里Java高级大牛直播讲解知识点,分享知识,课程内容都是各位老师多年工作经验的梳理和总结,带着大家全面、科学地建立自己的技术体系和技术认知!

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册