<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="/rss.xsl" type="text/xsl"?>
<rss version="2.0">
  <channel>
    <title>IT瘾开源推荐</title>
    <link>https://itindex.net/categories/开源</link>
    <description>IT社区推荐资讯 - ITIndex.net</description>
    <language>zh</language>
    <copyright>https://itindex.net/</copyright>
    <generator>https://itindex.net/</generator>
    <docs>http://backend.userland.com/rss</docs>
    <image>
      <url>https://itindex.net/images/logo.gif</url>
      <title>IT社区推荐资讯 - ITIndex.net</title>
      <link>https://itindex.net/categories/开源</link>
    </image>
    <item>
      <title>Vibe Coding 杀死开源</title>
      <link>https://itindex.net/detail/63157-vibe-coding-%E6%9D%80%E6%AD%BB</link>
      <description>生成式 AI 正在重塑软件开发。Claude Code、Cursor 和 Lovable 等 AI 辅助编程助手让用户几乎无需手动编码就能将其意图转化为可工作的应用。这种软件构建方式被称为 Vibe Coding。Vibe Coding 降低了软件开发成本，但也改变了用户与软件生态系统的互动方式。传统的软件开发模式中，开发者选择开源软件包、阅读文档，与维护者及其他用户互动。在 Vibe Coding 下，AI 智能体可以直接选择、组合和修改软件包，人类开发者可能不知道使用了哪些上游组件。这就引发了一个开源软件的可持续性问题。开源软件项目依赖于用户的参与和互动——文档访问、bug 报告、公开问答和声誉——维持维护和获取报酬。如果 AI 取代了人类用户之间的互动，那么旧的开源软件开发模式将会彻底改变，开源软件的可用性和质量将会下降。中欧大学和德国经济研究所 Bielefeld University and Kiel Institute for the World Economy 的研究人员在 arxiv 上发表研究报告认为，Vibe Coding 将会杀死开源。
 &lt;p&gt;&lt;/p&gt;
&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category />
      <guid isPermaLink="true">https://itindex.net/detail/63157-vibe-coding-%E6%9D%80%E6%AD%BB</guid>
      <pubDate>Thu, 29 Jan 2026 00:23:32 CST</pubDate>
    </item>
    <item>
      <title>DeepSeek强势回归，开源IMO金牌级数学模型</title>
      <link>https://itindex.net/detail/63093-deepseek-%E5%9B%9E%E5%BD%92-%E5%BC%80%E6%BA%90</link>
      <description>&lt;section&gt;&lt;section&gt;&lt;blockquote&gt;&lt;p&gt;突破级推理模型来了，DeepSeek 打开了自我验证的数学推理方向。&lt;/p&gt;&lt;/blockquote&gt;&lt;/section&gt;&lt;/section&gt;&lt;p&gt;The whale is back!&lt;/p&gt;&lt;p&gt;就在刚刚，DeepSeek 又悄咪咪在 Hugging Face 上传了一个新模型：DeepSeek-Math-V2。&lt;/p&gt;&lt;section&gt;&lt;img data-src="https://mmbiz.qpic.cn/sz_mmbiz_png/KmXPKA19gWicEWAd7aiad7a9TBBOqOHB1pjt4etjQibFicz5ibtv0N1ib5NQ7PjrmBWJ1PoE7yzmbiaSXX914RhP4wgjQ/640?wx_fmt=png&amp;from=appmsg#imgIndex=0" data-ratio="0.7142857142857143" data-s="300,640" data-type="png" data-w="882" type="block" data-imgfileid="503520913" data-original-style="null" data-index="2" src="https://image.jiqizhixin.com/uploads/editor/ea1371ff-43d1-49e4-8b16-7e09129b66e8/640.png" alt="图片" data-report-img-idx="0" data-fail="0" class="fr-fic fr-dib" style="width: 50%;"&gt;&lt;/section&gt;&lt;p&gt;顾名思义，这是一个数学方面的模型。它的上一个版本 &amp;mdash;&amp;mdash;DeepSeek-Math-7b 还是一年多以前发的。当时，这个模型只用 7B 参数量，就达到了 GPT-4 和 Gemini-Ultra 性能相当的水平。相关论文还首次引入了 GRPO，显著提升了数学推理能力。&lt;/p&gt;&lt;section&gt;&lt;img data-src="https://mmbiz.qpic.cn/sz_mmbiz_png/KmXPKA19gWicEWAd7aiad7a9TBBOqOHB1pJXWLN3iclvoj6udRfzgiaY1m7J4vqoRKwFUoqqbmyicx4D063GKouHrpQ/640?wx_fmt=png&amp;from=appmsg#imgIndex=1" data-ratio="0.6700680272108843" data-s="300,640" data-type="png" data-w="882" type="block" data-imgfileid="503520914" data-original-style="null" data-index="3" src="https://image.jiqizhixin.com/uploads/editor/e571750e-eec8-4376-894e-211ef3965b82/640.png" alt="图片" data-report-img-idx="1" data-fail="0" class="fr-fic fr-dib" style="width: 700%;"&gt;&lt;/section&gt;&lt;p&gt;那时隔一年半，这个基于 DeepSeek-V3.2-Exp-Base 开发的 DeepSeek-Math-V2 又带来了哪些惊喜？&lt;/p&gt;&lt;p&gt;DeepSeek 表示，它的性能优于 Gemini DeepThink，实现了 IMO 金牌级的水平。&lt;/p&gt;&lt;section&gt;&lt;img data-src="https://mmbiz.qpic.cn/sz_mmbiz_png/KmXPKA19gWicEWAd7aiad7a9TBBOqOHB1pibRT7IDyYBLnlicsKaqmZYcv6WO0SnYv1mN8un1RgjelrEdrRjyQX3Fg/640?wx_fmt=png&amp;from=appmsg#imgIndex=2" data-ratio="0.460093896713615" data-s="300,640" data-type="png" data-w="852" type="block" data-imgfileid="503520915" data-original-style="null" data-index="4" src="https://image.jiqizhixin.com/uploads/editor/9b74e23c-a431-407f-8117-c164aae1214d/640.png" alt="图片" data-report-img-idx="2" data-fail="0" class="fr-fic fr-dib" style="width: 700%;"&gt;&lt;/section&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;论文标题：DeepSeekMath-V2: Towards Self-Verifiable Mathematical Reasoning&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;模型地址：https://huggingface.co/deepseek-ai/DeepSeek-Math-V2&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;论文地址：https://github.com/deepseek-ai/DeepSeek-Math-V2/blob/main/DeepSeekMath_V2.pdf&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p data-pm-slice="0 0 []"&gt;核心作者：邵智宏、Yuxiang Luo、Chengda Lu、Z.Z. Ren&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;论文开篇，DeepSeek 就指出了当前 AI 在数学推理方面的研究局限：以正确的最终答案作为奖励，过于追求最终答案准确度。&lt;/p&gt;&lt;p&gt;这种做法虽然能让推理模型在 AIME 和 HMMT 等基准上达到更高水平，乃至达到饱和，但 DeepSeek 表示这并不能解决核心问题：正确答案并不保证推理过程正确。此外，许多数学任务（如定理证明）需要严谨的逐步推导，而不仅仅是数值答案，这使得基于最终答案的奖励方法不适用。&lt;/p&gt;&lt;p&gt;为了推动深度推理的极限，DeepSeek 认为有必要验证数学推理的全面性和严谨性。&lt;/p&gt;&lt;p&gt;他们指出：「自我验证在扩展测试时的计算规模时尤为重要，特别是对于没有已知解的开放性问题。」&lt;/p&gt;&lt;p&gt;为了实现可自我验证的数学推理，DeepSeek 研究了如何训练一个准确且可信赖的基于 LLM 的定理证明验证器。然后，他们使用该验证器作为奖励模型来训练证明生成器，并激励生成器在最终完成证明前尽可能发现并解决自身证明中的问题。&lt;/p&gt;&lt;p&gt;为了在生成器能力增强时保持生成 - 验证差距，DeepSeek 提出扩展验证计算能力，以自动标注新的难以验证的证明，从而生成训练数据进一步提升验证器性能。&lt;/p&gt;&lt;p&gt;简单来说，DeepSeek 这篇论文的核心目标不仅仅是让 AI 做对题，而是让 AI 「不仅会做，还能自己检查，甚至能诚实地承认自己哪里做错了」。&lt;/p&gt;&lt;p&gt;为了实现这一点，他们设计了一套由三个关键角色组成的系统，我们可以用一个「学生 &amp;mdash; 老师 &amp;mdash; 督导」的类比来理解：&lt;/p&gt;&lt;p&gt;首先，培养合格的「阅卷老师」（Proof Verification）。&lt;/p&gt;&lt;p&gt;过去训练 AI 数学模型，通常只看最后的答案对不对。但在高等数学证明题（如奥数）中，过程严谨比答案更重要。因此，DeepSeek 团队首先训练了一个专门的验证器（Verifier），也就是「阅卷老师」。这个老师不只是打钩打叉，而是学会了像人类专家一样把证明过程分为三档 ：&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;1 分：完美，逻辑严密。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;0.5 分：大体正确，但有小瑕疵或细节遗漏。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;0 分：有根本性的逻辑错误或严重缺失。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;不仅给分，还要写评语：模型被要求在打分前，先写一段分析，指出哪里好、哪里有问题 。&lt;/p&gt;&lt;p&gt;接下来，给老师配个「督导」（Meta-Verification）。&lt;/p&gt;&lt;p&gt;DeepSeek 发现了一个问题：阅卷老师有时候会胡乱扣分，它可能给了个低分，但指出的错误其实根本不存在（也就是产生了幻觉）。&lt;/p&gt;&lt;p&gt;为了解决这个问题，他们引入了元验证（Meta-Verification）机制，相当于给老师配了个「督导」。督导的任务不是看考卷，而是专门检查老师写的「评语」是否合理。这样可以双重确认：督导会检查老师指出的错误是否真实存在，以及扣分是否符合逻辑。效果上，通过训练模型既能当老师又能当督导，AI 评估证明的准确性和可信度大幅提升。&lt;/p&gt;&lt;p&gt;然后，培养会「自省」的学生（Proof Generation with Self-Verification）。&lt;/p&gt;&lt;p&gt;有了好的阅卷系统，接下来就是训练做题的「学生」（生成器）。这里有一个非常关键的创新：诚实奖励机制。也就是说，它不仅做题，还要自评：模型在输出解题过程后，必须马上跟上一段「自我评价」，自己给自己打分（0、0.5 或 1）。&lt;/p&gt;&lt;p&gt;它会对诚实进行奖励：&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;如果模型做错了，但它在自评中诚实地指出了自己的错误，它会得到奖励 。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;相反，如果它做错了却硬说自己是对的（盲目自信），或者试图「蒙混过关」，就会受到惩罚（得不到高奖励）。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;这样做的目的是可以迫使 AI 在输出答案前进行深度思考，试图发现并修正自己的错误，直到它认为自己真的做对了为止 。&lt;/p&gt;&lt;p&gt;最后，形成自动化闭环（Synergy）。&lt;/p&gt;&lt;p&gt;人类专家没法给成千上万道奥数题写详细的步骤评分，所以 DeepSeek 设计了一套自动化流程，让系统「左右互搏」来自我进化 ：&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;海量生成：让「学生」对同一道题生成很多种解法。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;集体投票：让「老师」对这些解法进行多次评估。如果大多数评估都认为某个解法有问题，那就判定为有问题；如果没有发现任何漏洞，才判定为正确 。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;以战养战：通过这种方式，系统自动筛选出那些很难判卷或很难做对的题目，变成新的教材，重新训练「老师」和「学生」。这样，随着「学生」解题能力变强，「老师」的眼光也越来越毒辣 。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;总之，DeepSeekMath-V2 的方法本质上是从「结果导向」转向了「过程导向」。它不依赖大量的数学题答案数据，而是通过教会 AI 如何像数学家一样严谨地审查证明过程（包括审查它自己），从而在没有人类干预的情况下，也能不断提升解决高难度数学证明题的能力 。&lt;/p&gt;&lt;p&gt;最终，他们得到了 DeepSeekMath-V2 模型，其展现出了强大的定理证明能力：在 IMO 2025 和 CMO 2024 上取得金牌级成绩，并在 Putnam 2024 中以扩展测试计算实现了接近满分的 118/120。&lt;/p&gt;&lt;section&gt;&lt;img data-src="https://mmbiz.qpic.cn/sz_mmbiz_png/KmXPKA19gWicEWAd7aiad7a9TBBOqOHB1p9SkIZIpBSC4Ff4lL9BxvMrCbn4vWlwwpH4Bibn9sOibXLhN6vQgIUzIg/640?wx_fmt=png&amp;from=appmsg#imgIndex=3" data-ratio="0.5037037037037037" data-s="300,640" data-type="png" data-w="1080" type="block" data-imgfileid="503520916" data-original-style="null" data-index="5" src="https://image.jiqizhixin.com/uploads/editor/e6c346cb-14a0-4873-9519-925a506ae1fa/640.png" alt="图片" data-report-img-idx="3" data-fail="0" class="fr-fic fr-dib" style="width: 50%;"&gt;&lt;/section&gt;&lt;p&gt;下图展示了 DeepSeekMath-V2 在 IMO-ProofBench 基准（这是 IMO Bench 的一个子集，其中包含 60 道证明题）上的表现，可以看到，在其中的 Basic 基准上，DeepSeekMath-V2 不仅远胜过其它模型，甚至达到了近 99% 的惊人高分。而在更难的 Advanced 子集上，DeepSeekMath-V2 略逊于 Gemini Deep Think (IMO Gold)。&lt;/p&gt;&lt;section&gt;&lt;img data-src="https://mmbiz.qpic.cn/sz_mmbiz_png/KmXPKA19gWicEWAd7aiad7a9TBBOqOHB1pz6Q9vicMCOKic247oeyZFCIF5JBVJWZcBoaxXNN87GVgRZWT79tiaoKGw/640?wx_fmt=png&amp;from=appmsg#imgIndex=4" data-ratio="0.25" data-s="300,640" data-type="png" data-w="1080" type="block" data-imgfileid="503520917" data-original-style="null" data-index="6" src="https://image.jiqizhixin.com/uploads/editor/2016668a-e746-43af-90e9-85b5933386ad/640.png" alt="图片" data-report-img-idx="4" data-fail="0" class="fr-fic fr-dib" style="width: 700%;"&gt;&lt;/section&gt;&lt;p&gt;DeepSeek 表示：「虽然仍有大量工作需要推进，但这些结果表明，可自我验证的数学推理是一个可行的研究方向，有望推动更强大数学 AI 系统的发展。」&lt;/p&gt;&lt;p&gt;这一自我验证的数学推理框架可以说突破了传统强化学习（RL）的限制，让模型不再依赖最终答案正确性作为唯一奖励，而是关注推理过程的严谨性。此外，DeepSeekMath-V2 中的验证器 - 生成器协同的双向改进循环带来了全面和严谨的数学推理能力，大幅减少了大模型幻觉。&lt;/p&gt;&lt;p&gt;在论文中，DeepSeek 介绍了更多技术细节，感兴趣的同学可以去仔细阅读。&lt;/p&gt;&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category />
      <guid isPermaLink="true">https://itindex.net/detail/63093-deepseek-%E5%9B%9E%E5%BD%92-%E5%BC%80%E6%BA%90</guid>
      <pubDate>Thu, 27 Nov 2025 21:19:26 CST</pubDate>
    </item>
    <item>
      <title>网罗天下：超全特殊搜索引擎合集，开启探索新视界！ - 资源 -  虫部落</title>
      <link>https://itindex.net/detail/63014-%E7%BD%97%E5%A4%A9-%E6%90%9C%E7%B4%A2%E5%BC%95%E6%93%8E-%E5%90%88%E9%9B%86</link>
      <description>&lt;table cellpadding="0" cellspacing="0"&gt;    &lt;tr&gt;      &lt;td&gt;在信息爆炸的时代，精准高效地获取所需资源是关键。今天，就给大家带来一份超全的特殊搜索引擎合集，涵盖网盘、图片、音乐、文献、动漫等海量类型，保准让你大呼过瘾，赶紧码住！        &lt;br /&gt;以下内容由知客驿站进行整理分享，更多资源尽在知客驿站：        &lt;a href="https://www.zkcee.com/" target="_blank"&gt;https://www.zkcee.com/&lt;/a&gt;        &lt;br /&gt;📁 网盘资源搜索类        &lt;br /&gt;PanSearch ：网盘资源搜索的利器，能帮你快速定位各类网盘里的宝藏资料，网址是        &lt;a href="https://www.pansearch.me" target="_blank"&gt;https://www.pansearch.me&lt;/a&gt;。        &lt;br /&gt;小云搜索 ：阿里云盘、夸克网盘、蓝奏云的资源都能搜，堪称网盘搜索神器，访问        &lt;a href="https://www.yunso.net/" target="_blank"&gt;https://www.yunso.net/&lt;/a&gt;即可体验。        &lt;br /&gt;千帆搜索 ：专注于电报（Telegram）中文资源的搜索引擎，资源超丰富，地址为        &lt;a href="https://tg.qianfan.app/" target="_blank"&gt;https://tg.qianfan.app/&lt;/a&gt;。        &lt;br /&gt;猫狸盘搜 ：阿里云盘的搜索神器，能精准找到阿里云盘里的各类文件，        &lt;a href="https://alipansou.com/" target="_blank"&gt;https://alipansou.com/&lt;/a&gt;是它的官网。        &lt;br /&gt;易搜 ：支持百度、阿里、夸克网盘的搜索引擎，功能强大，网址：        &lt;a href="https://yiso.fun/" target="_blank"&gt;https://yiso.fun/&lt;/a&gt;。        &lt;br /&gt;SOSO 云盘搜索导航 ：除了能搜索百度网盘、阿里云网盘，还能查询网盘链接提取码或密码，实用又便捷，地址：        &lt;a href="https://www.sosoyunpan.com/" target="_blank"&gt;https://www.sosoyunpan.com/&lt;/a&gt;。        &lt;br /&gt;小白盘 ：专注于网盘搜索，简单好用，网址：        &lt;a href="https://www.xiaobaipan.com/" target="_blank"&gt;https://www.xiaobaipan.com/&lt;/a&gt;。        &lt;br /&gt;茶杯狐 ：当你片荒剧荒时，来这里搜搜看，说不定就能找到想看的影视资源，        &lt;a href="https://cupfox.love/" target="_blank"&gt;https://cupfox.love/&lt;/a&gt;是它的入口。        &lt;br /&gt;学霸盘 ：百度网盘学习资料的搜索下载神器，对于学生党来说非常实用，官网是        &lt;a href="https://www.xuebapan.com/" target="_blank"&gt;https://www.xuebapan.com/&lt;/a&gt;。        &lt;br /&gt;小不点搜索 ：名副其实的正版资源搜索引擎，能一网打尽各类优质资源，地址：        &lt;a href="https://www.xiaoso.net/" target="_blank"&gt;https://www.xiaoso.net/&lt;/a&gt;。        &lt;br /&gt;咕咕云搜索 ：专为百度云、百度网盘打造的搜索引擎，帮你快速找到云端的文件，        &lt;a href="https://www.h2ero.com/" target="_blank"&gt;https://www.h2ero.com/&lt;/a&gt;可访问。        &lt;br /&gt;奈斯搜索 ：阿里云盘资源搜索网站，资源丰富多样，网址：        &lt;a href="https://www.niceso.net/" target="_blank"&gt;https://www.niceso.net/&lt;/a&gt;。        &lt;br /&gt;搜 BaiDu 盘 ：顾名思义，是百度云搜索、百度云盘资源下载的导航类搜索引擎，        &lt;a href="https://www.sobaidupan.com/" target="_blank"&gt;https://www.sobaidupan.com/&lt;/a&gt;是其链接。        &lt;br /&gt;凌风云 ：汇聚了十大网盘搜索引擎，一站式满足你的网盘搜索需求，访问        &lt;a href="https://www.lingfengyun.com/" target="_blank"&gt;https://www.lingfengyun.com/&lt;/a&gt;查看。        &lt;br /&gt;UP 云搜 ：最全的阿里云盘资源搜索神器，阿里云盘用户必收藏，官网是        &lt;a href="https://www.upyunso.com/" target="_blank"&gt;https://www.upyunso.com/&lt;/a&gt;。        &lt;br /&gt;兄弟盘 ：能搜索云盘资源，说不定能找到一些小众但实用的资料，        &lt;a href="https://xiongdipan.com/" target="_blank"&gt;https://xiongdipan.com/&lt;/a&gt;是它的地址。        &lt;br /&gt;搜搜 ：百度网盘文档的搜索引擎，对于找特定文档很有帮助，网址：        &lt;a href="https://www.xssousou.com/" target="_blank"&gt;https://www.xssousou.com/&lt;/a&gt;。        &lt;br /&gt;热盘搜 ：百度云搜索、网盘搜索的不错选择，能找到不少百度云上的热门资源，        &lt;a href="http://www.repanso.com/" target="_blank"&gt;http://www.repanso.com/&lt;/a&gt;可访问。        &lt;br /&gt;超能搜 ：百度网盘搜索神器，助力你快速定位百度网盘里的文件，        &lt;a href="https://www.chaonengsou.com/" target="_blank"&gt;https://www.chaonengsou.com/&lt;/a&gt;是链接。        &lt;br /&gt;奇乐搜 ：阿里云盘、夸克网盘的综合搜索网站，一个站点满足两种网盘的搜索需求，        &lt;a href="https://www.qileso.com/" target="_blank"&gt;https://www.qileso.com/&lt;/a&gt;是官网。        &lt;br /&gt;哎呦喂啊 ：搜歌曲和影视是它的特色，说不定能帮你找到心仪的影视作品或动听歌曲，        &lt;a href="https://www.aiyoweia.com/" target="_blank"&gt;https://www.aiyoweia.com/&lt;/a&gt;可体验。        &lt;br /&gt;短剧搜索大全 ：专门的短剧搜索平台，追短剧的小伙伴有福了，地址是        &lt;a href="https://www.kdocs.cn/l/cp1MFwlimAAm?R=L1MvMQ==" target="_blank"&gt;https://www.kdocs.cn/l/cp1MFwlimAAm?R=L1MvMQ==&lt;/a&gt;。        &lt;br /&gt;羚羊资源聚合搜索引擎 ：短剧、音乐、软件、PPT 等资源都能搜，是资源搜索的不二之选，        &lt;a href="https://files.ptger.cn/" target="_blank"&gt;https://files.ptger.cn/&lt;/a&gt;是入口。        &lt;br /&gt;网盘之家 ：收录了 43 个网盘搜索引擎，简直是网盘搜索的宝库，        &lt;a href="https://www.wowenda.com/" target="_blank"&gt;https://www.wowenda.com/&lt;/a&gt;可查看。        &lt;br /&gt;搜夸克 ：网盘搜索与网盘内容分类导航相结合，方便又实用，        &lt;a href="https://www.soquark.top/" target="_blank"&gt;https://www.soquark.top/&lt;/a&gt;是网址。        &lt;br /&gt;自由图书 ：超全面的电子书导航网站，爱读书的你不容错过，        &lt;a href="https://www.book5678.com/" target="_blank"&gt;https://www.book5678.com/&lt;/a&gt;是链接。        &lt;br /&gt;次元方舟动漫网 ：动漫爱好者的天堂，能搜索各类动漫资源，        &lt;a href="https://www.cyfz.vip/" target="_blank"&gt;https://www.cyfz.vip/&lt;/a&gt;是官网。        &lt;br /&gt;Animoe 动漫 ：不仅能直接搜索动漫，还有追剧周表导航，方便追番，        &lt;a href="https://animoe.org/" target="_blank"&gt;https://animoe.org/&lt;/a&gt;可访问。        &lt;br /&gt;狗番——高清番剧导航 ：搜索、追剧导航于一体，可在线直接看动漫，        &lt;a href="https://www.dogsfun.fun/" target="_blank"&gt;https://www.dogsfun.fun/&lt;/a&gt;是地址。        &lt;br /&gt;樱之空动漫 ：动漫在线播放网站，想看动漫即点即播，        &lt;a href="https://www.skr2.cc/" target="_blank"&gt;https://www.skr2.cc/&lt;/a&gt;是链接。        &lt;br /&gt;AGE 动漫 ：各种动漫导航，能在线观看，        &lt;a href="https://www.agedm.org/" target="_blank"&gt;https://www.agedm.org/&lt;/a&gt;是入口。        &lt;br /&gt;数据搜索 ：专搜影视，是影视爱好者的最爱，        &lt;a href="http://m.9dups.com/app/index.html?id=test" target="_blank"&gt;http://m.9dups.com/app/index.html?id=test&lt;/a&gt;可体验。        &lt;br /&gt;数据搜索 ：同样是影视搜索、网盘搜索的好帮手，        &lt;a href="http://b.kkkob.com/apps/index.html?id=test" target="_blank"&gt;http://b.kkkob.com/apps/index.html?id=test&lt;/a&gt;,        &lt;a href="http://b.kkkob.com/apps/index.html?id=2" target="_blank"&gt;http://b.kkkob.com/apps/index.html?id=2&lt;/a&gt;是其网址。        &lt;br /&gt;PanSearch ：前面已介绍，是网盘资源搜索 | 网盘搜索引擎，网址：        &lt;a href="https://www.pansearch.me" target="_blank"&gt;https://www.pansearch.me&lt;/a&gt;。        &lt;br /&gt;小云搜索 ：阿里云盘夸克网盘搜索神器，蓝奏云搜索也不在话下，        &lt;a href="https://www.yunso.net/" target="_blank"&gt;https://www.yunso.net/&lt;/a&gt;可访问。        &lt;br /&gt;千帆搜索 ：资源超丰富的电报中文搜索引擎，        &lt;a href="https://tg.qianfan.app/" target="_blank"&gt;https://tg.qianfan.app/&lt;/a&gt;是其链接。        &lt;br /&gt;猫狸盘搜 ：阿里云盘搜索神器，        &lt;a href="https://alipansou.com/" target="_blank"&gt;https://alipansou.com/&lt;/a&gt;可快速找到阿里云盘资源。        &lt;br /&gt;易搜 ：强大的网盘搜索引擎，支持百度、阿里、夸克网盘，        &lt;a href="https://yiso.fun/" target="_blank"&gt;https://yiso.fun/&lt;/a&gt;是地址。        &lt;br /&gt;SOSO 云盘搜索导航 ：百度网盘搜索、阿里云网盘搜索导航，还能查询网盘链接提取码或密码，网址：        &lt;a href="https://www.sosoyunpan.com/" target="_blank"&gt;https://www.sosoyunpan.com/&lt;/a&gt;。        &lt;br /&gt;小白盘 ：网盘搜索的简洁实用之选，        &lt;a href="https://www.xiaobaipan.com/" target="_blank"&gt;https://www.xiaobaipan.com/&lt;/a&gt;可查看。        &lt;br /&gt;📸 图片搜索类        &lt;br /&gt;        &lt;br /&gt;以下内容由知客驿站进行整理分享，更多资源尽在知客驿站：        &lt;a href="https://www.zkcee.com/" target="_blank"&gt;https://www.zkcee.com/&lt;/a&gt;        &lt;br /&gt;        &lt;br /&gt;imageSearch ：以图搜图聚合站，当你看到一张图片想查找相关信息或相似图时，它就能派上用场，        &lt;a href="https://picfind.top/" target="_blank"&gt;https://picfind.top/&lt;/a&gt;是官网。        &lt;br /&gt;HQ ICON ：从 App Store 快速获取高清应用图标的平台，对于设计、开发人员来说很有用，        &lt;a href="https://icon.yukonga.top/" target="_blank"&gt;https://icon.yukonga.top/&lt;/a&gt;可访问。        &lt;br /&gt;Vave BG ：AI 壁纸，能按照生成图片的关键词进行搜索，轻松找到心仪的壁纸，        &lt;a href="https://vavebg.com/" target="_blank"&gt;https://vavebg.com/&lt;/a&gt;是入口。        &lt;br /&gt;堆糖 ：高清图片、美图壁纸兴趣社区，搜剧照也是一绝，网址：        &lt;a href="https://www.duitang.com/" target="_blank"&gt;https://www.duitang.com/&lt;/a&gt;。        &lt;br /&gt;视觉中国 ：全球领先的视觉素材数字版权库和交易平台，海量正版图片资源等你来，        &lt;a href="http://www.vcg.com/" target="_blank"&gt;http://www.vcg.com/&lt;/a&gt;是官网。        &lt;br /&gt;标下智 ：一键搜索多家免版权图库，再也不用担心商用图片侵权，        &lt;a href="https://www.logosc.cn/so/" target="_blank"&gt;https://www.logosc.cn/so/&lt;/a&gt;可体验。        &lt;br /&gt;PPBC 中国植物图像库 ：最大的植物分类图片库，植物爱好者、研究人员的福音，        &lt;a href="https://ppbc.iplant.cn/" target="_blank"&gt;https://ppbc.iplant.cn/&lt;/a&gt;是链接。        &lt;br /&gt;Public domain vectors ：免费可商用矢量素材站点，提供 7 万张矢量图像，支持 svg、eps 等格式，        &lt;a href="https://publicdomainvectors.org/" target="_blank"&gt;https://publicdomainvectors.org/&lt;/a&gt;可查看。        &lt;br /&gt;SVG Repo ：拥有 500.000 + 开放许可的 SVG 矢量和图标，素材丰富多样，        &lt;a href="https://www.svgrepo.com/" target="_blank"&gt;https://www.svgrepo.com/&lt;/a&gt;是地址。        &lt;br /&gt;Icônes ：超级多的免费图标，且按照类别分好，支持多种格式免费下载，        &lt;a href="https://icon.ittools.cc/" target="_blank"&gt;https://icon.ittools.cc/&lt;/a&gt;可访问。        &lt;br /&gt;🎵 音乐歌曲搜索类        &lt;br /&gt;SPlayer ：可在线播放的音乐搜索引擎，歌曲资源很全，        &lt;a href="https://splayer.uncley.cc/" target="_blank"&gt;https://splayer.uncley.cc/&lt;/a&gt;是网址。        &lt;br /&gt;QQ 音速网 ：能在线播放的音乐搜索引擎，免登录、免费直接听，        &lt;a href="https://www.qqyin.com/" target="_blank"&gt;https://www.qqyin.com/&lt;/a&gt;可体验。        &lt;br /&gt;Wandhi ：多站合一音乐搜索，支持音乐在线试听、下载，        &lt;a href="https://music.wandhi.com/" target="_blank"&gt;https://music.wandhi.com/&lt;/a&gt;是入口。        &lt;br /&gt;音乐魔石 ：全网无损音乐 mp3 歌曲免费下载网站，音质控的最爱，        &lt;a href="https://yym4.com/" target="_blank"&gt;https://yym4.com/&lt;/a&gt;可访问。        &lt;br /&gt;搜狗表情包 ：虽然叫表情包搜索，但音乐搜索也有一手，        &lt;a href="https://pic.sogou.com/pic/emo/index.jsp" target="_blank"&gt;https://pic.sogou.com/pic/emo/index.jsp&lt;/a&gt;可查看。        &lt;br /&gt;FREEMP3 ：输入歌曲名称就能立即下载，方便快捷，        &lt;a href="https://g2.freemp3cloud.com/" target="_blank"&gt;https://g2.freemp3cloud.com/&lt;/a&gt;是链接。        &lt;br /&gt;Musopen ：收集了 100,000 个古典乐谱 pdf 文件，这些乐谱免费且在公共领域，可浏览乐谱，        &lt;a href="https://musopen.org/" target="_blank"&gt;https://musopen.org/&lt;/a&gt;是官网。        &lt;br /&gt;Mutopia ：提供 2000 多个免费下载 pdf 格式的乐谱，        &lt;a href="http://www.mutopiaproject.org/" target="_blank"&gt;http://www.mutopiaproject.org/&lt;/a&gt;可下载。        &lt;br /&gt;IMSLP ：国际乐谱库，是目前最大的免费乐谱下载网站，找古典音乐谱子很合适，        &lt;a href="https://imslp.org/" target="_blank"&gt;https://imslp.org/&lt;/a&gt;是地址。        &lt;br /&gt;环球钢琴网 ：提供 4 万余份钢琴谱，免费下载，还可在线播放钢琴曲、观看钢琴演奏视频，        &lt;a href="https://www.hqgq.com/" target="_blank"&gt;https://www.hqgq.com/&lt;/a&gt;是入口。        &lt;br /&gt;📚 文献与学习资源搜索类        &lt;br /&gt;好学电子课本网 ：主要是人教版，从小学到高中的各个年级、各个学科的电子课本、试卷都能搜，        &lt;a href="http://m.5haoxue.net/" target="_blank"&gt;http://m.5haoxue.net/&lt;/a&gt;是网址。        &lt;br /&gt;中国高校课件下载中心 ：综合性的教育资源交流平台，课件资源丰富，        &lt;a href="http://download.cucdc.com/" target="_blank"&gt;http://download.cucdc.com/&lt;/a&gt;可访问。        &lt;br /&gt;学术资源搜索 ：谷歌学术资源搜索，帮助你快速定位各类学术文献，        &lt;a href="https://scholar.lanfanshu.cn/" target="_blank"&gt;https://scholar.lanfanshu.cn/&lt;/a&gt;是链接。        &lt;br /&gt;MedReading ：读 SCI 文献，发高分文章查找文献和期刊最新影响因子，支持中英文，        &lt;a href="https://www.medreading.cn/pubmed_zh" target="_blank"&gt;https://www.medreading.cn/pubmed_zh&lt;/a&gt;可体验。        &lt;br /&gt;国家哲学社会科学文献中心 ：中国科技论文在线，科技期刊搜索、科技论文搜索，是国内唯一的免费全文期刊库，        &lt;a href="https://www.paper.edu.cn/journal/index.shtml" target="_blank"&gt;https://www.paper.edu.cn/journal/index.shtml&lt;/a&gt;是官网。        &lt;br /&gt;查文献神器 ：名副其实的查文献神器，        &lt;a href="http://www.4243.net/" target="_blank"&gt;http://www.4243.net/&lt;/a&gt;可助你高效查找文献。        &lt;br /&gt;学子备战墙 ：有各种初高中、考研、考公的课程视频，学习资料等，无需注册登录都能免费下载，        &lt;a href="https://www.xzbzq.com/" target="_blank"&gt;https://www.xzbzq.com/&lt;/a&gt;是地址。        &lt;br /&gt;数字素养网 ：全国中小学教师教育网址导航，是搜索教育资源的汇总网站，对于中小学教师教学资源或者家长辅导孩子很有帮助，        &lt;a href="https://szsyw.cn/jiaoshi" target="_blank"&gt;https://szsyw.cn/jiaoshi&lt;/a&gt;可查看。        &lt;br /&gt;开源精选 ：专注于收录优质开源工具的导航网站，收集完全免费且超好用的开源软件，直接提供网盘下载地址，        &lt;a href="https://www.ossnav.com/" target="_blank"&gt;https://www.ossnav.com/&lt;/a&gt;是入口。        &lt;br /&gt;中国高校外语慕课平台 ：汇聚各大高校优质外语课程，学外语的好帮手，        &lt;a href="https://moocs.unipus.cn/" target="_blank"&gt;https://moocs.unipus.cn/&lt;/a&gt;可访问。        &lt;br /&gt;🤖 AI 搜索引擎类        &lt;br /&gt;        &lt;br /&gt;以下内容由知客驿站进行整理分享，更多资源尽在知客驿站：        &lt;a href="https://www.zkcee.com/" target="_blank"&gt;https://www.zkcee.com/&lt;/a&gt;        &lt;br /&gt;        &lt;br /&gt;知乎直答 ：知乎出的 AI 搜索关键词引擎，        &lt;a href="https://zhida.zhihu.com/" target="_blank"&gt;https://zhida.zhihu.com/&lt;/a&gt;可体验。        &lt;br /&gt;天工 AI 搜索更多信息搜索 ：搜、对话、写作、文档分析、画画、做 PPT 的全能 AI 助手，        &lt;a href="https://search.tiangong.cn/" target="_blank"&gt;https://search.tiangong.cn/&lt;/a&gt;是网址。        &lt;br /&gt;360AI 搜索具有搜索 ：综合性的 AI 搜索引擎，        &lt;a href="https://www.sou.com/" target="_blank"&gt;https://www.sou.com/&lt;/a&gt;可查看。        &lt;br /&gt;秘塔 AI 搜索引擎 ：右下角有个 “生成演示文稿”，可直接把答案变成 PPT，        &lt;a href="https://metaso.cn/" target="_blank"&gt;https://metaso.cn/&lt;/a&gt;是链接。        &lt;br /&gt;Kimi ：帮你看更大的世界，        &lt;a href="https://kimi.moonshot.cn/" target="_blank"&gt;https://kimi.moonshot.cn/&lt;/a&gt;可访问。        &lt;br /&gt;Globe Explorer ：网上搜索结果自动总结，还带大纲，        &lt;a href="https://explorer.globe.engineer/" target="_blank"&gt;https://explorer.globe.engineer/&lt;/a&gt;是地址。        &lt;br /&gt;Lepton Search ：开源 AI 搜索引擎，        &lt;a href="https://search.lepton.run/" target="_blank"&gt;https://search.lepton.run/&lt;/a&gt;可体验。        &lt;br /&gt;AI 万花筒 ：专注收录各种 AI 工具的导航网站，目前收录了 1200 + AI 工具，        &lt;a href="https://www.aiwht.com/" target="_blank"&gt;https://www.aiwht.com/&lt;/a&gt;是官网。        &lt;br /&gt;映技派 ：同样专注收录各种 AI 工具的导航网站，        &lt;a href="https://www.yjpoo.com/" target="_blank"&gt;https://www.yjpoo.com/&lt;/a&gt;可查看。        &lt;br /&gt;MikuTools ：轻量的工具集合，有原神配音等有趣功能，        &lt;a href="https://tools.miku.ac/" target="_blank"&gt;https://tools.miku.ac/&lt;/a&gt;可访问。        &lt;br /&gt;IT Tools ：在线 IT 工具集合，涵盖加密、转换器、Web、图片和视频、开发、网络、数学、测量、文本和数据等类型，        &lt;a href="https://zz.ittools.cc/" target="_blank"&gt;https://zz.ittools.cc/&lt;/a&gt;是链接。        &lt;br /&gt;doyoudo ：有视频剪辑、特效合成、动画制作、音乐特效等后期制作的教程网站，还有资源导航，        &lt;a href="https://www.doyoudo.com/free" target="_blank"&gt;https://www.doyoudo.com/free&lt;/a&gt;可体验。        &lt;br /&gt;帮小忙 ：腾讯 QQ 浏览器在线工具箱平台，        &lt;a href="https://tool.browser.qq.com/" target="_blank"&gt;https://tool.browser.qq.com/&lt;/a&gt;是地址。        &lt;br /&gt;蜻蜓工具 ：好用免费的在线工具站，        &lt;a href="https://33tool.com/" target="_blank"&gt;https://33tool.com/&lt;/a&gt;是网址。        &lt;br /&gt;美图设计室 ：可按模板名称和功能搜索，智能生成海报，        &lt;a href="https://www.designkit.com/" target="_blank"&gt;https://www.designkit.com/&lt;/a&gt;是链接。        &lt;br /&gt;AI 法条查询 ：输入关键词，快速找到相关案例和法律法规，并对其关键词进行分析，        &lt;a href="https://meta.law/" target="_blank"&gt;https://meta.law/&lt;/a&gt;可体验。        &lt;br /&gt;法行宝 ：免费 AI 律师，        &lt;a href="https://cnkgraph.com/Book" target="_blank"&gt;https://cnkgraph.com/Book&lt;/a&gt;是地址。        &lt;br /&gt;聪豹・时间线 ：输入历史人物，以时间线形式呈现人物生平、事件脉络，        &lt;a href="https://www.wiseal.cn/" target="_blank"&gt;https://www.wiseal.cn/&lt;/a&gt;是官网。        &lt;br /&gt;Perplexity ：AI 搜索引擎，还新增电商功能 Perplexity，        &lt;a href="https://www.perplexity.ai/" target="_blank"&gt;https://www.perplexity.ai/&lt;/a&gt;可访问。        &lt;br /&gt;魔搭社区 ：AI 大模型搜索空间搜索，        &lt;a href="https://modelscope.cn/" target="_blank"&gt;https://modelscope.cn/&lt;/a&gt;是入口。        &lt;br /&gt;纳米搜索在线版 ：AI 搜索引擎，但搜索结果却可以播客和视频的形式呈现，创作者神器，        &lt;a href="https://n.cn/" target="_blank"&gt;https://n.cn/&lt;/a&gt;可查看。        &lt;br /&gt;纳米搜索 APP 版 ：同纳米搜索在线版，搜索结果以播客和视频呈现，        &lt;a href="https://pan.quark.cn/s/5758681e5de5" target="_blank"&gt;https://pan.quark.cn/s/5758681e5de5&lt;/a&gt;是下载链接。        &lt;br /&gt;AIGC 吧 ：AI 工具集合官网导航，国内外 AI 工具集导航大全，        &lt;a href="https://aigcba.com/" target="_blank"&gt;https://aigcba.com/&lt;/a&gt;可体验。        &lt;br /&gt;🧲 磁力搜索类        &lt;br /&gt;池里搜 ：磁力搜索，能寻找到书籍、影视等资源，        &lt;a href="https://chilisou15.xyz/" target="_blank"&gt;https://chilisou15.xyz/&lt;/a&gt;可访问。        &lt;br /&gt;磁力酷 ：磁力搜索专家，        &lt;a href="https://ciliku.net/" target="_blank"&gt;https://ciliku.net/&lt;/a&gt;是官网。        &lt;br /&gt;黑马磁力 ：资源多，人人爱上的磁力搜索引擎，        &lt;a href="https://heimaai.top" target="_blank"&gt;https://heimaai.top&lt;/a&gt;可体验。        &lt;br /&gt;小草磁力 ：专注于高清电影、电视剧、软件和番号磁力链接搜索的引擎，        &lt;a href="https://xccl85.xyz/" target="_blank"&gt;https://xccl85.xyz/&lt;/a&gt;是地址。        &lt;br /&gt;天堂磁力 ：资源丰富的磁力搜索，        &lt;a href="https://tt2.ttcl.cc/" target="_blank"&gt;https://tt2.ttcl.cc/&lt;/a&gt;可查看。        &lt;br /&gt;磁力星球 ：在线磁力搜索引擎，        &lt;a href="https://so3.xingqiu.icu/" target="_blank"&gt;https://so3.xingqiu.icu/&lt;/a&gt;是入口。        &lt;br /&gt;虫部落、快搜 ：学术搜索，数据搜索，图片检索，磁力搜索，电子书检索、开原文献、国家标准等一应俱全，        &lt;a href="https://search.chongbuluo.com/" target="_blank"&gt;https://search.chongbuluo.com/&lt;/a&gt;可访问。        &lt;br /&gt;🌐 综合搜索引擎类        &lt;br /&gt;        &lt;br /&gt;以下内容由知客驿站进行整理分享，更多资源尽在知客驿站：        &lt;a href="https://www.zkcee.com/" target="_blank"&gt;https://www.zkcee.com/&lt;/a&gt;        &lt;br /&gt;        &lt;br /&gt;百度 ：国内知名的综合搜索引擎，搜问题还会自动生成一个 AI 答案，并且可以语音播放，        &lt;a href="https://www.baidu.com/" target="_blank"&gt;https://www.baidu.com/&lt;/a&gt;是网址。        &lt;br /&gt;Yandex ：俄罗斯最大的搜索引擎，        &lt;a href="https://yandex.com/" target="_blank"&gt;https://yandex.com/&lt;/a&gt;可访问。        &lt;br /&gt;必应 ：内置 AI 功能的综合搜索引擎，        &lt;a href="https://cn.bing.com/" target="_blank"&gt;https://cn.bing.com/&lt;/a&gt;是官网。        &lt;br /&gt;MemFree ：混合 AI 搜索引擎，        &lt;a href="https://www.memfree.me/zh" target="_blank"&gt;https://www.memfree.me/zh&lt;/a&gt;可体验。        &lt;br /&gt;Google ：谷歌搜索的镜像，        &lt;a href="https://so.niostack.com/" target="_blank"&gt;https://so.niostack.com/&lt;/a&gt;可访问。        &lt;br /&gt;非凡搜索 ：F 搜的镜像，        &lt;a href="https://ffsou.com/" target="_blank"&gt;https://ffsou.com/&lt;/a&gt;是网址。        &lt;br /&gt;🎁 其他特色资源搜索类        &lt;br /&gt;古腾堡工程 ：大约有 7 万多本书籍可供免费下载，是电子书爱好者的福地，        &lt;a href="https://www.gutenberg.org/" target="_blank"&gt;https://www.gutenberg.org/&lt;/a&gt;是链接。        &lt;br /&gt;新电影导航 ：提供各种电影、漫画、动漫类的网站，        &lt;a href="https://www.xdy.me/" target="_blank"&gt;https://www.xdy.me/&lt;/a&gt;可查看。        &lt;br /&gt;电影剧本 ：互联网上最大的电影剧本资源网站，        &lt;a href="https://imsdb.com" target="_blank"&gt;https://imsdb.com&lt;/a&gt;可访问。        &lt;br /&gt;短剧狗 ：专门搜索短剧的搜索引擎，        &lt;a href="https://duanjugou.top/" target="_blank"&gt;https://duanjugou.top/&lt;/a&gt;是官网。        &lt;br /&gt;SoAli.net ：电影、电子书、网剧、音乐搜索，        &lt;a href="https://soali.net/" target="_blank"&gt;https://soali.net/&lt;/a&gt;是链接。        &lt;br /&gt;天下老照片网 ：开放专业的历史老照片图库，        &lt;a href="http://www.laozhaopian5.com/" target="_blank"&gt;http://www.laozhaopian5.com/&lt;/a&gt;可访问。        &lt;br /&gt;影印古籍搜索 ：支持诗词检索，甚至曲谱，        &lt;a href="https://sou-yun.cn/QueryPoem.aspx" target="_blank"&gt;https://sou-yun.cn/QueryPoem.aspx&lt;/a&gt;可体验。        &lt;br /&gt;英语台词社 ：54000 电影，110000 集美剧完整台词，        &lt;a href="https://www.taicishe.com/" target="_blank"&gt;https://www.taicishe.com/&lt;/a&gt;是网址。        &lt;br /&gt;数字素养网 ：全国中小学教师教育网址导航，        &lt;a href="https://www.ossnav.com/" target="_blank"&gt;https://www.ossnav.com/&lt;/a&gt;可查看。        &lt;br /&gt;oldswf ：收集了不少老的 flash 小游戏，        &lt;a href="https://oldswf.com/" target="_blank"&gt;https://oldswf.com/&lt;/a&gt;是入口。        &lt;br /&gt;网抑云音乐 ：免费听歌的网站，        &lt;a href="http://mc.alger.fun/#/" target="_blank"&gt;http://mc.alger.fun/#/&lt;/a&gt;可体验。        &lt;br /&gt;豆瓣 2024 年度电影榜单 ：豆瓣 2024 年度电影榜单搜索，        &lt;a href="https://movie.douban.com/annual/2024/" target="_blank"&gt;https://movie.douban.com/annual/2024/&lt;/a&gt;可访问。        &lt;br /&gt;xinyuan ：影视镜头搜索，        &lt;a href="http://www.movieminer.top:5301/standalone/page/225" target="_blank"&gt;http://www.movieminer.top:5301/standalone/page/225&lt;/a&gt;是链接。        &lt;br /&gt;Movieminer ：一键拉片工具，        &lt;a href="http://www.movieminer.top/" target="_blank"&gt;http://www.movieminer.top/&lt;/a&gt;可查看。        &lt;br /&gt;扣子搜索 ：智能体搜索，        &lt;a href="https://www.coze.cn/store/agent?cate_type=recommend" target="_blank"&gt;https://www.coze.cn/store/agent?cate_type=recommend&lt;/a&gt;是官网。        &lt;br /&gt;羽燕招标 ：免费搜索全国招标信息，        &lt;a href="https://yuyan888.cn/h" target="_blank"&gt;https://yuyan888.cn/h&lt;/a&gt;可访问。        &lt;br /&gt;国家哲学社会科学文献中心 ：中国科技论文在线，科技期刊搜索、科技论文搜索，        &lt;a href="https://www.paper.edu.cn/journal/index.shtml" target="_blank"&gt;https://www.paper.edu.cn/journal/index.shtml&lt;/a&gt;可查看。        &lt;br /&gt;查文献神器 ：文献搜索的利器，        &lt;a href="http://www.4243.net/" target="_blank"&gt;http://www.4243.net/&lt;/a&gt;可体验。        &lt;br /&gt;全能计算器 ：各种各样的计算器，        &lt;a href="https://www.omnicalculator.com/" target="_blank"&gt;https://www.omnicalculator.com/&lt;/a&gt;是网址。        &lt;br /&gt;淘花场 ：百度网盘资源搜索，阿里云盘搜索，网盘搜索导航，        &lt;a href="https://www.taohuachang.com/" target="_blank"&gt;https://www.taohuachang.com/&lt;/a&gt;可访问。        &lt;br /&gt;爱悦读网 ：电子书搜索，        &lt;a href="http://www.iyd.wang/" target="_blank"&gt;http://www.iyd.wang/&lt;/a&gt;是链接。        &lt;br /&gt;SeedHub ：已收录 25000 + 资源，        &lt;a href="https://www.seedhub.cc/" target="_blank"&gt;https://www.seedhub.cc/&lt;/a&gt;是入口。        &lt;br /&gt;Google 地图在线 ：谷歌地图镜像，谷歌卫星高清地图，        &lt;a href="http://www.gditu.net/" target="_blank"&gt;http://www.gditu.net/&lt;/a&gt;可查看。        &lt;br /&gt;SVG Repo ：500.000 + 开放许可的 SVG 矢量和图标，        &lt;a href="https://www.svgrepo.com/" target="_blank"&gt;https://www.svgrepo.com/&lt;/a&gt;是官网。        &lt;br /&gt;网盘共享中心——搜网盘 ：支持多种网盘的资源搜索网站，        &lt;a href="https://news.bqrdh.com/wp" target="_blank"&gt;https://news.bqrdh.com/wp&lt;/a&gt;可体验。        &lt;br /&gt;数字素养网 ：全国中小学教师教育网址导航，        &lt;a href="https://szsyw.cn/jiaoshi" target="_blank"&gt;https://szsyw.cn/jiaoshi&lt;/a&gt;可访问。        &lt;br /&gt;开源精选 ：优质开源工具导航，        &lt;a href="https://www.ossnav.com/" target="_blank"&gt;https://www.ossnav.com/&lt;/a&gt;是网址。        &lt;br /&gt;SOSO 云盘搜索导航 ：        &lt;a href="https://www.sosoyunpan.com/" target="_blank"&gt;https://www.sosoyunpan.com/&lt;/a&gt;可体验。        &lt;br /&gt;小白盘 ：网盘搜索，        &lt;a href="https://www.xiaobaipan.com/" target="_blank"&gt;https://www.xiaobaipan.com/&lt;/a&gt;是链接。        &lt;br /&gt;    &lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category />
      <guid isPermaLink="true">https://itindex.net/detail/63014-%E7%BD%97%E5%A4%A9-%E6%90%9C%E7%B4%A2%E5%BC%95%E6%93%8E-%E5%90%88%E9%9B%86</guid>
      <pubDate>Fri, 09 May 2025 14:30:23 CST</pubDate>
    </item>
    <item>
      <title>超谷歌搜索：阿里开源创新大模型搜索引擎 ZeroSearch，成本直降 80% 且能力更强</title>
      <link>https://itindex.net/detail/63013-%E8%B0%B7%E6%AD%8C%E6%90%9C%E7%B4%A2-%E9%98%BF%E9%87%8C-%E5%BC%80%E6%BA%90</link>
      <description>&lt;p&gt;IT之家 5 月 9 日消息，阿里巴巴昨日在 Github 等平台开源了 ZeroSearch 大模型搜索引擎。这是一种无需与真实搜索引擎交互即可激励大模型搜索能力的强化学习框架。&lt;/p&gt; &lt;p&gt;  &lt;img src="https://img.ithome.com/newsuploadfiles/2025/5/d999066e-d614-4bb6-84e6-f6bd0fa566eb.jpg"&gt;&lt;/img&gt;&lt;/p&gt; &lt;p&gt;ZeroSearch 主要利用了大模型在大规模预训练过程中积累的丰富知识，将其转化为一个检索模块，能够根据搜索查询生成相关内容。同时，还可以动态控制生成内容的质量，这是传统搜索引擎所不具备的特殊功能。&lt;/p&gt; &lt;p&gt;  &lt;img src="https://img.ithome.com/newsuploadfiles/2025/5/95b64ac6-7863-489a-a3c9-b604c81819df.jpg"&gt;&lt;/img&gt;&lt;/p&gt; &lt;p&gt;研究人员在 NQ、TriviaQA、PopQA、HotpotQA 等 7 大问答数据集上进行了综合评测。结果显示，一个 70 亿参数的监督微调模型使用 ZeroSearch 后，其搜索能力达到了 33.06；140 亿参数的模型则达到了 33.97，超过了谷歌搜索的 32.47。&lt;/p&gt; &lt;p&gt;  &lt;img src="https://img.ithome.com/newsuploadfiles/2025/5/5c681ba0-27cb-45b5-9750-4e208c051097.png"&gt;&lt;/img&gt;&lt;/p&gt; &lt;p&gt;研究人员通过 SerpAPI 使用谷歌搜索进行约 64,000 次搜索查询的训练，成本约为 586.70 美元（IT之家注：现汇率约合 4238 元人民币）；而在四个 A100GPU 上使用 140 亿参数的大模型进行模拟时，成本仅为70.80 美元（现汇率约合 511 元人民币），意味着成本降低了 87.93% 以上。&lt;/p&gt; &lt;p&gt;参考链接：&lt;/p&gt; &lt;ul&gt;  &lt;li&gt;   &lt;p&gt;论文地址：https://arxiv.org/abs/2505.04588&lt;/p&gt;&lt;/li&gt;  &lt;li&gt;   &lt;p&gt;开源地址：https://github.com/Alibaba-nlp/ZeroSearch&lt;/p&gt;&lt;/li&gt;  &lt;li&gt;   &lt;p&gt;抱抱脸：https://huggingface.co/collections/sunhaonlp/zerosearch-681b4ce012b9b6899832f4d0&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category />
      <guid isPermaLink="true">https://itindex.net/detail/63013-%E8%B0%B7%E6%AD%8C%E6%90%9C%E7%B4%A2-%E9%98%BF%E9%87%8C-%E5%BC%80%E6%BA%90</guid>
      <pubDate>Fri, 09 May 2025 07:14:52 CST</pubDate>
    </item>
    <item>
      <title>Google DeepMind 发布多模态轻量级开源模型 Gemma 3：性能与功能全面升级</title>
      <link>https://itindex.net/detail/62986-google-deepmind-%E6%A8%A1%E6%80%81</link>
      <description>&lt;p&gt;近日，Google DeepMind 团队推出了 Gemma 3，一款多模态轻量级开源模型，它在 Gemma 系列中引入了视觉理解、更广泛的语言覆盖和更长的上下文处理能力。本文将深入剖析 Gemma 3 的技术报告，探讨其创新之处以及对人工智能领域的潜在影响。&lt;/p&gt;



 &lt;h2&gt;一、Gemma 3 的核心特性&lt;/h2&gt;



 &lt;h3&gt;（一）多模态能力&lt;/h3&gt;



 &lt;p&gt;Gemma 3 不仅能够处理文本数据，还具备视觉理解能力。它通过定制版的 SigLIP 视觉编码器，将图像转化为模型可处理的软标记序列。为了减少图像处理的推理成本，模型将视觉嵌入压缩为固定大小的 256 个向量。此外，Gemma 3 采用了一种名为“Pan and Scan”（P&amp;amp;S）的技术，能够灵活处理不同分辨率和宽高比的图像，从而提升模型在视觉任务上的表现。&lt;/p&gt;



 &lt;h3&gt;（二）长上下文处理&lt;/h3&gt;



 &lt;p&gt;Gemma 3 的上下文长度显著提升，大多数模型版本支持至少 128K tokens 的上下文处理，而 1B 模型则支持 32K tokens。为了应对长上下文带来的内存爆炸问题，模型架构进行了优化，增加了局部注意力层与全局注意力层的比例，并缩短局部注意力层的跨度。具体而言，每 5 个局部层后跟 1 个全局层，全局层负责处理长距离依赖关系，而局部层则专注于较短范围内的信息交互。&lt;/p&gt;



 &lt;h3&gt;（三）多语言支持&lt;/h3&gt;



 &lt;p&gt;Gemma 3 在多语言能力方面也取得了显著进展。通过调整训练数据的混合比例和引入更多的多语言数据，模型能够更好地理解和生成多种语言的文本。这使得 Gemma 3 在跨语言任务中表现出色，进一步拓展了其应用场景。&lt;/p&gt;



 &lt;h2&gt;二、模型架构与训练方法&lt;/h2&gt;



 &lt;h3&gt;（一）架构设计&lt;/h3&gt;



 &lt;p&gt;Gemma 3 基于decoder-only 的 Transformer 架构，与前两代 Gemma 模型类似。但在细节上有所创新，例如采用 Grouped-Query Attention（GQA）和 RMSNorm 规范化方法。此外，模型还引入了 QK-norm 替代 Gemma 2 中的软封顶机制，以提升性能和稳定性。&lt;/p&gt;



 &lt;h3&gt;（二）训练策略&lt;/h3&gt;



 &lt;p&gt;Gemma 3 的训练过程包括预训练和指令微调两个阶段。在预训练阶段，模型使用知识蒸馏技术，从大规模数据中学习语言和视觉表示。训练数据涵盖了文本、图像以及多语言等多种类型，且经过严格的筛选和清洗，以减少有害内容和低质量数据的影响。在指令微调阶段，Gemma 3 采用了新颖的训练方法，重点关注数学、聊天、指令遵循和多语言等能力的提升。&lt;/p&gt;



 &lt;h2&gt;三、性能评估与应用前景&lt;/h2&gt;



 &lt;h3&gt;（一）性能表现&lt;/h3&gt;



 &lt;p&gt;Gemma 3 在多个基准测试中展现了卓越的性能。例如，在 LMSYS Chatbot Arena 的盲评中，Gemma-3-27B-IT 模型得分达到 1338，跻身前十名。在标准基准测试中，Gemma 3 在多语言理解、代码生成、数学推理等多个任务上均取得了优异成绩，部分指标甚至超越了更大规模的模型。&lt;/p&gt;



 &lt;h3&gt;（二）应用潜力&lt;/h3&gt;



 &lt;p&gt;凭借其多模态、长上下文和多语言等能力，Gemma 3 可广泛应用于智能助手、内容创作、教育、医疗等领域。例如，在智能助手方面，Gemma 3 能够理解用户的自然语言指令和图像输入，提供更加智能和个性化的服务。在教育领域，它可辅助教学内容生成、作业批改等工作。&lt;/p&gt;



 &lt;h2&gt;四、安全与责任&lt;/h2&gt;



 &lt;p&gt;Gemma 3 的开发团队高度重视模型的安全性和责任问题。在训练过程中，实施了严格的安全策略，对数据进行筛选和过滤，以减少有害内容的生成风险。此外，还对模型进行了碳足迹评估，并采取了相应的碳中和措施，以降低环境影响。&lt;/p&gt;



 &lt;p&gt;总之，Gemma 3 作为一款多模态轻量级开源模型，在性能和功能上实现了全面升级。它的发布为人工智能领域带来了新的机遇和挑战，有望在众多实际应用中发挥重要作用。&lt;/p&gt;



 &lt;p&gt;以下是Gemma 3技术报告英中对照版：&lt;/p&gt;



 &lt;div&gt;  &lt;a href="https://www.52nlp.cn/wp-content/uploads/2025/03/Gemma3&amp;#25216;&amp;#26415;&amp;#25253;&amp;#21578;&amp;#33521;&amp;#20013;&amp;#23545;&amp;#29031;&amp;#29256;.pdf"&gt;Gemma3技术报告英中对照版&lt;/a&gt;  &lt;a href="https://www.52nlp.cn/wp-content/uploads/2025/03/Gemma3&amp;#25216;&amp;#26415;&amp;#25253;&amp;#21578;&amp;#33521;&amp;#20013;&amp;#23545;&amp;#29031;&amp;#29256;.pdf"&gt;下载&lt;/a&gt;&lt;/div&gt;
&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>LLm 多模态 大模型 预训练模型 DeepMind</category>
      <guid isPermaLink="true">https://itindex.net/detail/62986-google-deepmind-%E6%A8%A1%E6%80%81</guid>
      <pubDate>Wed, 12 Mar 2025 20:07:38 CST</pubDate>
    </item>
    <item>
      <title>开源实时数据同步工具NiFi</title>
      <link>https://itindex.net/detail/62957-%E5%BC%80%E6%BA%90-%E5%AE%9E%E6%97%B6-%E6%95%B0%E6%8D%AE</link>
      <description>&lt;h2&gt;Apache NiFi简介&lt;/h2&gt;
 &lt;p&gt;Apache NiFi 是一个强大的数据流管理和自动化工具，旨在简化数据的采集、传输、处理和分发。它特别适合于构建和管理复杂的数据流管道，支持从各种数据源到不同目标系统的数据传输。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" height="245" src="https://www.biaodianfu.com/wp-content/uploads/2024/11/NiFi.png" width="525"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h3&gt;Apache NiFi主要功能&lt;/h3&gt;
 &lt;p&gt;Apache NiFi 是一个用于自动化数据流的强大工具，具有广泛的功能集，旨在支持从各种数据源到不同目标的复杂数据流管道。以下是 Apache NiFi 的主要功能：&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;strong&gt;数据采集与传输&lt;/strong&gt;：
   &lt;ul&gt;
    &lt;li&gt;支持从多种数据源采集数据，包括文件系统、数据库、HTTP 服务、消息队列（如 Kafka）、传感器设备等。&lt;/li&gt;
    &lt;li&gt;支持将数据传输到多种目标系统，如 HDFS、数据库、云存储服务、REST API 等。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
  &lt;li&gt;   &lt;strong&gt;数据流可视化&lt;/strong&gt;：
   &lt;ul&gt;
    &lt;li&gt;提供直观的 Web 用户界面，用户可以通过拖拽和配置处理器来设计和管理数据流。&lt;/li&gt;
    &lt;li&gt;实时显示数据流的状态和性能指标，便于监控和调试。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
  &lt;li&gt;   &lt;strong&gt;数据处理与转换&lt;/strong&gt;：
   &lt;ul&gt;
    &lt;li&gt;提供丰富的内置处理器，支持数据的解析、转换、清洗、聚合和格式化等操作。&lt;/li&gt;
    &lt;li&gt;支持复杂的数据处理逻辑，如条件路由、数据分片、合并和拆分。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
  &lt;li&gt;   &lt;strong&gt;动态路由与优先级控制&lt;/strong&gt;：
   &lt;ul&gt;
    &lt;li&gt;支持根据数据内容或属性动态路由数据到不同的处理器或目标。&lt;/li&gt;
    &lt;li&gt;允许为数据流设置优先级，以控制数据处理的顺序和速度。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
  &lt;li&gt;   &lt;strong&gt;实时流处理&lt;/strong&gt;：
   &lt;ul&gt;
    &lt;li&gt;支持实时数据流处理，能够在数据到达时立即执行处理操作。&lt;/li&gt;
    &lt;li&gt;事件驱动架构，处理器在接收到数据或触发条件时自动执行。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
  &lt;li&gt;   &lt;strong&gt;分布式架构与扩展性&lt;/strong&gt;：
   &lt;ul&gt;
    &lt;li&gt;支持多节点集群部署，可以水平扩展以处理大规模数据流。&lt;/li&gt;
    &lt;li&gt;集群中的节点通过 Apache ZooKeeper 进行协调和管理。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
  &lt;li&gt;   &lt;strong&gt;数据安全与合规&lt;/strong&gt;：
   &lt;ul&gt;
    &lt;li&gt;支持数据加密、访问控制和用户身份验证，确保数据的安全性。&lt;/li&gt;
    &lt;li&gt;提供数据审计功能，记录数据流的处理历史和用户操作。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
  &lt;li&gt;   &lt;strong&gt;错误处理与重试机制&lt;/strong&gt;：
   &lt;ul&gt;
    &lt;li&gt;自动处理数据传输和处理过程中出现的错误，支持重试和故障转移。&lt;/li&gt;
    &lt;li&gt;提供数据回退和恢复功能，确保数据的可靠性和完整性。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
  &lt;li&gt;   &lt;strong&gt;可扩展性与集成性&lt;/strong&gt;：
   &lt;ul&gt;
    &lt;li&gt;支持自定义处理器和控制器服务的开发，用户可以根据需要扩展 NiFi 的功能。&lt;/li&gt;
    &lt;li&gt;与其他大数据工具和框架（如 Apache Kafka、Hadoop、Spark）紧密集成，支持复杂的数据处理和分析工作流。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
  &lt;li&gt;   &lt;strong&gt;监控与管理&lt;/strong&gt;：
   &lt;ul&gt;
    &lt;li&gt;提供详细的日志记录和监控功能，帮助用户了解数据流的执行状态和性能指标。&lt;/li&gt;
    &lt;li&gt;支持告警和通知机制，用户可以根据特定条件设置告警，及时响应异常情况。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;Apache NiFi 的设计目标是提供一个灵活、高效且易于管理的数据流管理平台，适用于各种数据集成和处理场景。其丰富的功能集使其成为企业数据管道构建和管理的理想选择。&lt;/p&gt;
 &lt;h3&gt;Apache NiFi的优势&lt;/h3&gt;
 &lt;ul&gt;
  &lt;li&gt;灵活性：通过丰富的处理器和自定义开发能力，NiFi 可以适应各种复杂的数据处理需求。&lt;/li&gt;
  &lt;li&gt;可扩展性：支持多节点集群部署，可以水平扩展以处理大规模数据流。&lt;/li&gt;
  &lt;li&gt;可视化管理：提供直观的 Web UI，用户可以轻松设计和管理数据流，无需编写复杂的代码。&lt;/li&gt;
  &lt;li&gt;高可用性：通过故障转移和数据重试机制，确保数据流的高可用性和可靠性。&lt;/li&gt;
  &lt;li&gt;安全性：支持数据加密、访问控制和审计，确保数据的安全性和隐私保护。&lt;/li&gt;
&lt;/ul&gt;
 &lt;h2&gt;Apache NiFi的架构&lt;/h2&gt;
 &lt;p&gt;Apache NiFi 的架构设计旨在提供一个灵活、高效且可扩展的数据流管理平台。它采用模块化设计，支持分布式部署，能够处理各种规模和复杂度的数据流任务。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" height="510" src="https://www.biaodianfu.com/wp-content/uploads/2024/11/nifi-2.png" width="970"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h3&gt;核心组件&lt;/h3&gt;
 &lt;ul&gt;
  &lt;li&gt;Web UI（用户界面）：NiFi 提供了一个直观的 Web 用户界面，用于设计、监控和管理数据流。用户可以通过拖拽和配置组件来构建数据流，并实时查看数据流的状态和性能指标。&lt;/li&gt;
  &lt;li&gt;FlowFile：FlowFile 是 NiFi 中的数据单元，包含数据内容和属性。每个 FlowFile 都有唯一标识符和元数据，支持数据的高效传输和处理。&lt;/li&gt;
  &lt;li&gt;处理器（Processor）：处理器是执行特定数据处理任务的基本单元。NiFi 提供了丰富的内置处理器，用于数据采集、转换、路由和传输。用户还可以开发自定义处理器以满足特定需求。&lt;/li&gt;
  &lt;li&gt;连接（Connection）：连接用于在处理器之间传递 FlowFile。连接可以配置为使用不同的队列策略，以控制数据的流动速度和优先级。&lt;/li&gt;
  &lt;li&gt;流程组（Process Group）：流程组用于组织和管理多个处理器和连接，形成逻辑上的子流程。这有助于复杂数据流的模块化设计和维护。&lt;/li&gt;
  &lt;li&gt;控制器服务（Controller Service）：控制器服务提供共享的配置和服务，例如数据库连接池、分布式缓存等。它们可以在多个处理器之间复用，提高资源利用率。&lt;/li&gt;
  &lt;li&gt;报告任务（Reporting Task）：报告任务用于生成和发送 NiFi 系统的运行状态和指标数据，通常用于监控和告警系统。&lt;/li&gt;
&lt;/ul&gt;
 &lt;h3&gt;工作流和数据流&lt;/h3&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;strong&gt;数据采集与处理&lt;/strong&gt;：
   &lt;ul&gt;
    &lt;li&gt;数据流从输入处理器开始，输入处理器从外部数据源（如文件系统、HTTP、Kafka）获取数据并生成 FlowFile。&lt;/li&gt;
    &lt;li&gt;中间处理器对 FlowFile 进行处理，包括数据解析、转换、过滤和聚合等操作。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
  &lt;li&gt;   &lt;strong&gt;数据路由与分发&lt;/strong&gt;：
   &lt;ul&gt;
    &lt;li&gt;根据业务规则和条件，NiFi 可以将 FlowFile 路由到不同的处理器或流程组。&lt;/li&gt;
    &lt;li&gt;输出处理器将处理后的 FlowFile 发送到目标系统（如 HDFS、数据库、云存储）。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
  &lt;li&gt;   &lt;strong&gt;实时监控与管理&lt;/strong&gt;：
   &lt;ul&gt;
    &lt;li&gt;Web UI 提供实时数据流监控功能，用户可以查看处理器的性能指标、队列长度、处理速率等。&lt;/li&gt;
    &lt;li&gt;用户可以动态调整数据流的配置和参数，以优化性能和处理逻辑。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
 &lt;h3&gt;分布式架构&lt;/h3&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;strong&gt;多节点集群&lt;/strong&gt;：
   &lt;ul&gt;
    &lt;li&gt;NiFi 支持多节点集群部署，可以通过增加节点来扩展处理能力。集群中的每个节点都可以执行数据流任务。&lt;/li&gt;
    &lt;li&gt;集群节点通过 Apache ZooKeeper 进行协调和管理，以确保任务的负载均衡和高可用性。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
  &lt;li&gt;   &lt;strong&gt;高可用性与故障转移&lt;/strong&gt;：
   &lt;ul&gt;
    &lt;li&gt;NiFi 采用主从架构，集群中一个节点为主节点（Primary Node），负责调度任务和管理集群配置。&lt;/li&gt;
    &lt;li&gt;在主节点故障时，集群会自动选举新的主节点，确保数据流的持续性和可靠性。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
 &lt;h3&gt;安全性&lt;/h3&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;strong&gt;用户认证与授权&lt;/strong&gt;：
   &lt;ul&gt;
    &lt;li&gt;支持多种认证机制（如 LDAP、Kerberos），确保只有授权用户才能访问和管理 NiFi 系统。&lt;/li&gt;
    &lt;li&gt;提供细粒度的权限控制，用户可以对不同的数据流组件和操作进行授权。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
  &lt;li&gt;   &lt;strong&gt;数据加密&lt;/strong&gt;：
   &lt;ul&gt;
    &lt;li&gt;支持数据传输加密和存储加密，确保数据在传输和存储过程中的安全性。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
  &lt;li&gt;   &lt;strong&gt;审计与日志&lt;/strong&gt;：
   &lt;ul&gt;
    &lt;li&gt;提供详细的审计日志记录，记录用户操作和数据流处理历史，便于合规性检查和故障排查。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;Apache NiFi 的架构设计使其成为一个灵活、可扩展和安全的数据流管理平台，适用于各种规模和复杂度的数据集成和处理任务。其模块化设计和丰富的功能集使得用户能够高效地构建和管理复杂的数据流管道。&lt;/p&gt;
 &lt;h2&gt;Airflow、Kafka的对比&lt;/h2&gt;
 &lt;p&gt;Apache NiFi、Apache Airflow 和 Apache Kafka 都是现代数据处理和管理生态系统中的重要工具，但它们各自的设计目的和应用场景有所不同。以下是它们的详细对比：&lt;/p&gt;
 &lt;table&gt;

  &lt;tr&gt;
   &lt;td&gt;特性&lt;/td&gt;
   &lt;td&gt;Apache NiFi&lt;/td&gt;
   &lt;td&gt;Apache Airflow&lt;/td&gt;
   &lt;td&gt;Apache Kafka&lt;/td&gt;
&lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;主要用途&lt;/td&gt;
   &lt;td&gt;实时数据流管理和自动化&lt;/td&gt;
   &lt;td&gt;工作流调度和管理&lt;/td&gt;
   &lt;td&gt;消息队列和流处理&lt;/td&gt;
&lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;架构特点&lt;/td&gt;
   &lt;td&gt;可视化界面，事件驱动架构&lt;/td&gt;
   &lt;td&gt;编程接口定义工作流（DAGs），基于调度器和执行器&lt;/td&gt;
   &lt;td&gt;发布/订阅模型，分布式架构&lt;/td&gt;
&lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;数据处理&lt;/td&gt;
   &lt;td&gt;实时数据采集、转换和路由&lt;/td&gt;
   &lt;td&gt;批处理任务调度，不直接处理数据流&lt;/td&gt;
   &lt;td&gt;高吞吐量的消息传输，支持实时流处理&lt;/td&gt;
&lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;扩展性与部署&lt;/td&gt;
   &lt;td&gt;多节点集群，水平扩展&lt;/td&gt;
   &lt;td&gt;分布式调度和执行，支持多种执行器&lt;/td&gt;
   &lt;td&gt;水平扩展，通过分区和副本实现容错&lt;/td&gt;
&lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;安全性&lt;/td&gt;
   &lt;td&gt;细粒度权限控制和数据加密&lt;/td&gt;
   &lt;td&gt;用户认证和授权（RBAC）&lt;/td&gt;
   &lt;td&gt;SSL 加密、SASL 认证和 ACL 授权&lt;/td&gt;
&lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;应用场景&lt;/td&gt;
   &lt;td&gt;实时数据集成、物联网数据采集、日志管理和监控&lt;/td&gt;
   &lt;td&gt;定时数据处理任务、复杂的 ETL 管道、机器学习工作流&lt;/td&gt;
   &lt;td&gt;实时数据传输、日志收集和分析、事件驱动架构&lt;/td&gt;
&lt;/tr&gt;

&lt;/table&gt;
 &lt;p&gt;  &lt;strong&gt;对比总结&lt;/strong&gt;&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;实时 vs 批处理：
   &lt;ul&gt;
    &lt;li&gt;NiFi：适合实时数据流处理和自动化。&lt;/li&gt;
    &lt;li&gt;Airflow：适合批处理任务调度和复杂的工作流管理。&lt;/li&gt;
    &lt;li&gt;Kafka：适合高吞吐量的消息传输和实时流处理。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
  &lt;li&gt;用户界面 vs 编程接口：
   &lt;ul&gt;
    &lt;li&gt;NiFi：提供可视化界面，适合需要快速构建和管理数据流的场景。&lt;/li&gt;
    &lt;li&gt;Airflow：提供编程接口，适合需要灵活定义复杂工作流的场景。&lt;/li&gt;
    &lt;li&gt;Kafka：主要通过编程接口和命令行工具进行管理和配置。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
  &lt;li&gt;数据流管理 vs 工作流调度 vs 消息队列：
   &lt;ul&gt;
    &lt;li&gt;NiFi：专注于数据流的管理和处理。&lt;/li&gt;
    &lt;li&gt;Airflow：专注于任务调度和工作流管理。&lt;/li&gt;
    &lt;li&gt;Kafka：专注于消息队列和流处理。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;根据具体的需求和场景，企业可以选择合适的工具或组合使用这些工具来构建复杂的数据处理和管理生态系统。例如，可以使用 NiFi 进行数据采集和预处理，使用 Kafka 进行高吞吐量的消息传输，使用 Airflow 进行批处理任务的调度和管理。&lt;/p&gt;
 &lt;div&gt;

  &lt;h3&gt;相关文章:&lt;/h3&gt;  &lt;ol&gt;
   &lt;li&gt;    &lt;a href="https://www.biaodianfu.com/kafka.html" rel="bookmark" title="&amp;#20998;&amp;#24067;&amp;#24335;&amp;#28040;&amp;#24687;&amp;#31995;&amp;#32479;Kafka"&gt;分布式消息系统Kafka&lt;/a&gt;&lt;/li&gt;
   &lt;li&gt;    &lt;a href="https://www.biaodianfu.com/hive-sql-guide.html" rel="bookmark" title="Hive SQL&amp;#31995;&amp;#32479;&amp;#21270;&amp;#23398;&amp;#20064;"&gt;Hive SQL系统化学习&lt;/a&gt;&lt;/li&gt;
   &lt;li&gt;    &lt;a href="https://www.biaodianfu.com/python-schedule.html" rel="bookmark" title="Python&amp;#33258;&amp;#21160;&amp;#21270;&amp;#20043;&amp;#23450;&amp;#26102;&amp;#20219;&amp;#21153;"&gt;Python自动化之定时任务&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>器→工具 开源项目 大数据</category>
      <guid isPermaLink="true">https://itindex.net/detail/62957-%E5%BC%80%E6%BA%90-%E5%AE%9E%E6%97%B6-%E6%95%B0%E6%8D%AE</guid>
      <pubDate>Sat, 09 Nov 2024 21:04:10 CST</pubDate>
    </item>
    <item>
      <title>开源大模型Llama 3王者归来！最大底牌4000亿参数，性能直逼GPT-4</title>
      <link>https://itindex.net/detail/62921-%E5%BC%80%E6%BA%90-%E6%A8%A1%E5%9E%8B-llama</link>
      <description>&lt;p&gt;ChatGPT 拉开了大模型竞赛的序幕，Meta 似乎要后来居上了。&lt;/p&gt;&lt;p&gt;本周四，AI 领域迎来重大消息，Meta 正式发布了人们等待已久的开源大模型 Llama 3。&lt;/p&gt;&lt;p&gt;&lt;img data-imgfileid="503431385" data-ratio="1.5636363636363637" data-s="300,640" data-src="https://mmbiz.qpic.cn/sz_mmbiz_gif/KmXPKA19gW9PvzPEMQhGfSIOSSwN4yPqh1yMMh8iayRKcibrNIkjnpf3zkMxB3OnQdwhhDFhqOLSzuTwuEpUhKXQ/640?wx_fmt=gif&amp;from=appmsg" data-type="gif" data-w="275" data-original-style="" data-index="2" src="https://image.jiqizhixin.com/uploads/editor/376afc1a-4e27-465d-896f-a47af32d74ee/640.gif" alt="图片" data-fail="0" class="fr-fic fr-dib" style="width: 400px;"&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;扎克伯格在 Facebook 上发帖：Big AI news today.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;与此同时，扎克伯格宣布：基于最新的 Llama 3 模型，Meta 的 AI 助手现在已经覆盖 Instagram、WhatsApp、Facebook 等全系应用，并单独开启了网站。另外还有一个&lt;mark data-type=tech_tasks data-id=ba1ea8a1-a705-4f89-8348-ec71bae840dc&gt;图像生成&lt;/mark&gt;器，可根据自然语言提示词生成图片。&lt;/p&gt;&lt;p&gt;Meta AI 网址：https://www.meta.ai/&lt;/p&gt;&lt;p&gt;&lt;img data-imgfileid="503431386" data-ratio="0.725925925925926" data-s="300,640" data-src="https://mmbiz.qpic.cn/sz_mmbiz_jpg/KmXPKA19gW9PvzPEMQhGfSIOSSwN4yPqQiadhel7RFMuYpdicC9lavU1hkmfIG1AAwMDFW4tsR4Is2cibglzic8MSw/640?wx_fmt=jpeg&amp;from=appmsg" data-type="jpeg" data-w="1080" data-original-style="" data-index="3" src="https://image.jiqizhixin.com/uploads/editor/b0dd9f20-2a9b-41b8-8ca5-848b36d970cd/640.png" alt="图片" data-fail="0" class="fr-fic fr-dib" style="width: 700px;"&gt;&lt;/p&gt;&lt;p&gt;扎克伯格表示，Meta 提供的生成式 AI 能力在免费产品中性能是最强大的。&lt;/p&gt;&lt;p&gt;在 Facebook、Instagram、WhatsApp 和 Messenger 上，用户现在可以借助 Meta AI 进行搜索，无需在应用程序之间切换：&lt;/p&gt;&lt;p&gt;&lt;a href="https://mp.weixin.qq.com/s?__biz=MzA3MzI4MjgzMw==&amp;mid=2650915060&amp;idx=1&amp;sn=9c3ab9e18ada10478e1f1797bab1e909&amp;chksm=84e4048ab3938d9c339c4662d202df4a7f18df48a0c57aa6de95912b29e0ac5c308da6c6634f&amp;token=1540783293&amp;lang=zh_CN#rd"&gt;&lt;img src="https://image.jiqizhixin.com/uploads/editor/e5a368cb-4f2c-41ef-af7e-58e5d5d3c3b3/1713465606983.png" style="width: 700px;" class="fr-fic fr-dib"&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;当你浏览信息流的时候，还可以直接从帖子中向 Meta AI 询问更多信息：&lt;/p&gt;&lt;section&gt;&lt;span allowfullscreen="" data-cover="http%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FKmXPKA19gW9PvzPEMQhGfSIOSSwN4yPq5VUCVXr7qA56nGCFKzQR31WNfRBXDg91AL4v2HW4zoZCD4t8kuRibbg%2F0%3Fwx_fmt%3Djpeg" data-mpvid="wxv_3420383226664091651" data-ratio="1.1472222222222221" data-src="https://mp.weixin.qq.com/mp/readtemplate?t=pages/video_player_tmpl&amp;auto=0&amp;vid=wxv_3420383226664091651" data-vh="507.75" data-vidtype="2" data-vw="677" data-w="826" frameborder="0" height="520" scrolling="no" width="677"&gt;&lt;div data-key="wxv_3420383226664091651"&gt;&lt;div data-v-c4b95c15=""&gt;&lt;div data-v-054d777f="" data-v-c4b95c15=""&gt;&lt;div data-v-054d777f=""&gt;&lt;p data-v-054d777f=""&gt;&lt;a href="https://mp.weixin.qq.com/s?__biz=MzA3MzI4MjgzMw==&amp;mid=2650915060&amp;idx=1&amp;sn=9c3ab9e18ada10478e1f1797bab1e909&amp;chksm=84e4048ab3938d9c339c4662d202df4a7f18df48a0c57aa6de95912b29e0ac5c308da6c6634f&amp;token=1540783293&amp;lang=zh_CN#rd"&gt;&lt;img src="https://image.jiqizhixin.com/uploads/editor/813906df-91d1-40b8-832b-517ff50b04c2/1713465625645.png" style="width: 700px;" class="fr-fic fr-dib"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/span&gt;&lt;/section&gt;&lt;p&gt;&lt;mark data-type=tech_tasks data-id=ba1ea8a1-a705-4f89-8348-ec71bae840dc&gt;图像生成&lt;/mark&gt;器带来的玩法更加有趣，Imagine 功能带来了从文本实时创建图像。这一功能的测试版从今天开始在美国的 WhatsApp 和 Meta AI 网络体验上推出。&lt;/p&gt;&lt;p&gt;开始打字时，你会看到一个图像出现，每多输入几个字母，图像都会发生变化：&lt;br&gt;&lt;a href="https://mp.weixin.qq.com/s?__biz=MzA3MzI4MjgzMw==&amp;mid=2650915060&amp;idx=1&amp;sn=9c3ab9e18ada10478e1f1797bab1e909&amp;chksm=84e4048ab3938d9c339c4662d202df4a7f18df48a0c57aa6de95912b29e0ac5c308da6c6634f&amp;token=1540783293&amp;lang=zh_CN#rd"&gt;&lt;img src="https://image.jiqizhixin.com/uploads/editor/2b600d83-c4ed-4529-bb44-d7e4bde6ee2b/1713465644187.png" style="width: 700px;" class="fr-fic fr-dib"&gt;&lt;/a&gt;&lt;/p&gt;&lt;section&gt;&lt;span allowfullscreen="" data-cover="http%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FKmXPKA19gW9PvzPEMQhGfSIOSSwN4yPqaNAgAdrUKRvSu7v4bh36YnGODOh5VUBQV0w8daPwteicVZAm1G6pnkQ%2F0%3Fwx_fmt%3Djpeg" data-mpvid="wxv_3420384983758700546" data-ratio="1.1472222222222221" data-src="https://mp.weixin.qq.com/mp/readtemplate?t=pages/video_player_tmpl&amp;auto=0&amp;vid=wxv_3420384983758700546" data-vh="507.75" data-vidtype="2" data-vw="677" data-w="826" frameborder="0" height="520" scrolling="no" width="677"&gt;&lt;div data-key="wxv_3420384983758700546"&gt;&lt;div data-v-c4b95c15=""&gt;&lt;div data-v-054d777f="" data-v-c4b95c15=""&gt;&lt;div data-v-054d777f=""&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/span&gt;&lt;/section&gt;&lt;p&gt;Meta 表示，Llama 3 在多个关键的&lt;mark data-type=concepts data-id=308c3a45-0fee-4ec6-858e-85b15f440fc0&gt;基准&lt;/mark&gt;测试中性能优于业界先进同类模型，其在代码生成等任务上实现了全面领先，能够进行复杂的推理，可以更遵循指令，能够可视化想法并解决很多微妙的问题。&lt;/p&gt;&lt;p&gt;简而言之，Llama 3 的主要亮点包括：&lt;/p&gt;&lt;ul&gt;&lt;li&gt;基于超过 15T token 训练，相当于 Llama 2 数据集的 7 倍还多；&lt;/li&gt;&lt;li&gt;支持 8K 长文本，改进的 tokenizer 具有 128K token 的词汇量，可实现更好的性能；&lt;/li&gt;&lt;li&gt;在大量重要&lt;mark data-type=concepts data-id=308c3a45-0fee-4ec6-858e-85b15f440fc0&gt;基准&lt;/mark&gt;中均具有最先进性能；&lt;/li&gt;&lt;li&gt;新能力范畴，包括增强的推理和代码能力；&lt;/li&gt;&lt;li&gt;训练效率比 Llama 2 高 3 倍；&lt;/li&gt;&lt;li&gt;带有 Llama Guard 2、Code Shield 和 CyberSec Eval 2 的新版信任和安全工具。&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;刚刚发布的 8B 和 70B 版本 Llama 3 模型已用于 Meta AI 助手，同时也面向开发者进行了开源，包括预训练和微调版本：&lt;/p&gt;&lt;p&gt;下载链接：https://llama.meta.com/llama-downloads/&lt;/p&gt;&lt;p&gt;Github：https://github.com/meta-llama/&lt;/p&gt;&lt;p&gt;&lt;img data-imgfileid="503431388" data-ratio="1" data-s="300,640" data-src="https://mmbiz.qpic.cn/sz_mmbiz_gif/KmXPKA19gW9PvzPEMQhGfSIOSSwN4yPqTF4FfdXOXnPZtfcF35ulXZkmbYOg0cPRCbW60BxTf5s4KibexamrwVg/640?wx_fmt=gif&amp;from=appmsg" data-type="gif" data-w="600" data-original-style="width: 328px;height: 328px;" data-index="4" src="https://image.jiqizhixin.com/uploads/editor/0a592a8f-93de-4bc3-99f5-3f21933c60a2/640.gif" alt="图片" data-fail="0" class="fr-fic fr-dib" style="width: 700px;"&gt;&lt;/p&gt;&lt;p&gt;体量更大的多模态版本将在未来几个月内推出。Meta 称，目前正在开发的最大模型是 400B+ &lt;mark data-type=concepts data-id=2e982b73-88e2-41e8-a430-f7ae5a9af4bf&gt;参数&lt;/mark&gt;。&lt;/p&gt;&lt;p&gt;Meta 研究科学家 Aston Zhang 在大模型发布后表示，在 Llama 3 的研发过程中，研究团队一起应对了预训练和人类数据、预训练扩展、长上下文、后训练和评估方面的诸多挑战。这是一段艰难而又激动人心的旅程。&lt;/p&gt;&lt;p&gt;更加激动人心的内容即将到来：Meta 的研究者现在准备推出系列视频，帮助人们深入了解 Llama 3 背后的技术。此外 Llama 3 的相关研究论文也将放出。&lt;/p&gt;&lt;h3&gt;&lt;strong&gt;Llama 3，性能重回王座&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;最新发布的 8B 和 70B &lt;mark data-type=concepts data-id=2e982b73-88e2-41e8-a430-f7ae5a9af4bf&gt;参数&lt;/mark&gt;的 Llama 3 模型可以说是 Llama 2 的重大飞跃，由于预训练和后训练（Post-training）的改进，本次发布的预训练和指令微调模型是当今 8B 和 70B &lt;mark data-type=concepts data-id=2e982b73-88e2-41e8-a430-f7ae5a9af4bf&gt;参数&lt;/mark&gt;规模中的最佳模型。与此同时，后训练过程的改进大大降低了模型出错率，进一步改善了一致性，并增加了模型响应的多样性。&amp;nbsp;&lt;/p&gt;&lt;p&gt;Llama 3 将数据和规模提升到新的高度。Meta 表示，Llama 3 是在两个定制的 24K GPU 集群上、基于超过 15T token 的数据上进行了训练 &amp;mdash;&amp;mdash; 相当于 Llama 2 数据集的 7 倍还多，代码数据相当于 Llama 2 的 4 倍。从而产生了迄今为止最强大的 Llama 模型，Llama 3 支持 8K 上下文长度，是 Llama 2 容量的两倍。&lt;/p&gt;&lt;p&gt;&lt;img data-imgfileid="503431389" data-ratio="0.5824074074074074" data-s="300,640" data-src="https://mmbiz.qpic.cn/sz_mmbiz_png/KmXPKA19gW9PvzPEMQhGfSIOSSwN4yPq1dDBTXwD9FnoicjsicuSKibiczlCmgPD9eLAUoUweYQmzKAQ05uWHhAbbQ/640?wx_fmt=png&amp;from=appmsg" data-type="png" data-w="1080" data-original-style="" data-index="5" src="https://image.jiqizhixin.com/uploads/editor/76eec839-245e-467c-99b0-8c697fc2a152/640.png" alt="图片" data-fail="0" class="fr-fic fr-dib" style="width: 700px;"&gt;&lt;/p&gt;&lt;p&gt;此外，Meta 还开发了一套新的高质量人类评估数据集。该评估集包含 1800 个提示，涵盖 12 个关键用例：寻求建议、头脑风暴、分类、封闭式问答、编码、创意写作、提取、塑造角色、开放式问答、推理、重写和总结。为了防止 Llama 3 在此评估集上出现过度拟合，Meta 表示他们自己的团队也无法访问该数据集。下图显示了针对 Claude Sonnet、Mistral Medium 和 GPT-3.5 对这些类别和提示进行人工评估的汇总结果。&lt;/p&gt;&lt;p&gt;&lt;img data-galleryid="" data-imgfileid="503431391" data-ratio="0.6268518518518519" data-s="300,640" data-src="https://mmbiz.qpic.cn/sz_mmbiz_png/KmXPKA19gW9PvzPEMQhGfSIOSSwN4yPqxLOF1qbLMfHqDWqABLOicfd5jK3RcsBBukJk4icGRrPwojBYjG9X9VJQ/640?wx_fmt=png&amp;from=appmsg" data-type="png" data-w="1080" data-original-style="" data-index="6" src="https://image.jiqizhixin.com/uploads/editor/9d8d937a-0395-4b11-9b04-cd3ebee93260/640.png" alt="图片" data-fail="0" class="fr-fic fr-dib" style="width: 700px;"&gt;下图是 Llama 3 预训练模型和其他同等规模模型的比较，前者表现出 SOTA 水平。&lt;/p&gt;&lt;p&gt;&lt;img data-imgfileid="503431392" data-ratio="0.562962962962963" data-s="300,640" data-src="https://mmbiz.qpic.cn/sz_mmbiz_png/KmXPKA19gW9PvzPEMQhGfSIOSSwN4yPqlYXObzhicMldaOvaTfvfYxO8FQxjj0uUfHHXKgr2DNSqtH1sRZ0MQ4Q/640?wx_fmt=png&amp;from=appmsg" data-type="png" data-w="1080" data-original-style="" data-index="7" src="https://image.jiqizhixin.com/uploads/editor/8d254dd9-4599-411b-bcbb-8a3489439b4a/640.png" alt="图片" data-fail="0" class="fr-fic fr-dib" style="width: 700px;"&gt;&lt;/p&gt;&lt;p&gt;为了开发出出色的&lt;mark data-type=tech_tasks data-id=fee178e8-ee20-42fc-8f8f-1d41c1f34e8f&gt;语言模型&lt;/mark&gt;，Meta 认为创新、扩展和优化是非常重要的。因而在 Llama 3 的研发中 Meta 采用了这一设计理念，重点关注四个关键要素：模型架构、预训练数据、扩展预训练和指令微调。&lt;/p&gt;&lt;h3&gt;&lt;strong&gt;模型架构&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;Llama 3 选择了相对标准的纯解码器 Transformer 架构。与 Llama 2 相比，Llama 3 做了几个关键的改进，包括：&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Llama 3 使用具有 128K token 词汇表的 tokenizer，可以更有效地对语言进行编码，从而显著提高模型性能；&lt;/li&gt;&lt;li&gt;为了提高 Llama 3 模型的推理效率，研究团队在 8B 和 70B 大小的模型上采用了分组查询注意力 (GQA)；&lt;/li&gt;&lt;li&gt;在 8192 个 token 的序列上训练模型，使用掩码确保&lt;mark data-type=concepts data-id=2ad7abdc-bbaa-4a33-b3ce-53f4fa019fdd&gt;自注意力&lt;/mark&gt;不会跨越文档边界。&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;&lt;strong&gt;训练数据&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;&lt;img data-imgfileid="503431393" data-ratio="0.12777777777777777" data-s="300,640" data-src="https://mmbiz.qpic.cn/sz_mmbiz_png/KmXPKA19gW9PvzPEMQhGfSIOSSwN4yPqNSuwkrrv14SCJSlnaM06JoTWEYGZiaaqpyEuePWb5I7jbEkw7aF5S3w/640?wx_fmt=png&amp;from=appmsg" data-type="png" data-w="1080" data-original-style="" data-index="8" src="https://image.jiqizhixin.com/uploads/editor/0651addf-7535-4595-8fe0-477b41fc65e3/640.png" alt="图片" data-fail="0" class="fr-fic fr-dib" style="width: 700px;"&gt;&lt;/p&gt;&lt;p&gt;为了训练最好的&lt;mark data-type=tech_tasks data-id=fee178e8-ee20-42fc-8f8f-1d41c1f34e8f&gt;语言模型&lt;/mark&gt;，管理大型、高质量的训练数据集至关重要。Meta 在预训练数据上投入了大量成本。Llama 3 使用超过 15T 的 token 进行了预训练，这些 token 都是从公开来源收集的。总体上讲，Llama 3 的训练数据集是 Llama 2 使用的数据集的七倍多，并且包含四倍多的代码。为了为即将到来的多语言用例做好准备，超过 5% 的 Llama 3 预训练数据集由涵盖 30 多种语言的高质量非英语数据组成。但是，Llama 3 在这些语言上的性能水平预计不会与英语相同。&lt;/p&gt;&lt;p&gt;为了确保 Llama 3 接受最高质量数据的训练，研究团队开发了一系列数据过滤 pipeline，包括使用启发式过滤器（filter）、NSFW 过滤器、语义重复数据删除方法和&lt;mark data-type=tech_tasks data-id=3fe4290f-6dd3-43ed-9324-cf23aa588830&gt;文本分类&lt;/mark&gt;器来预测数据质量。&lt;/p&gt;&lt;p&gt;研究团队发现前几代 Llama 非常擅长识别高质量数据，因此 Meta 使用 Llama 2 为给 Llama 3 提供支持的文本质量分类器生成训练数据。&lt;/p&gt;&lt;p&gt;研究团队还进行了广泛的实验，以评估出在最终预训练数据集中不同来源数据的最佳混合方式，最终确保 Llama 3 在各种用例（包括日常问题、STEM、编码、历史知识等）中表现良好。&lt;/p&gt;&lt;h3&gt;&lt;strong&gt;扩展预训练&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;为了有效利用 Llama 3 模型的预训练数据，Meta 投入了大量精力来扩展预训练。&lt;/p&gt;&lt;p&gt;具体来说，Meta 为下游&lt;mark data-type=concepts data-id=308c3a45-0fee-4ec6-858e-85b15f440fc0&gt;基准&lt;/mark&gt;评估制定了一系列详细的扩展法则。这些扩展法则使 Meta 能够选择最佳的数据组合，并就如何最好地使用训练计算做出明智的决策。&lt;/p&gt;&lt;p&gt;重要的是，扩展法则使 Meta 能够在实际训练模型之前预测最大模型在关键任务上的性能（例如，在 HumanEval &lt;mark data-type=concepts data-id=308c3a45-0fee-4ec6-858e-85b15f440fc0&gt;基准&lt;/mark&gt;上评估的代码生成性能）。这有助于确保最终模型在各种用例和功能上都具有强大的性能。&lt;/p&gt;&lt;p&gt;在 Llama 3 的开发过程中，Meta 对扩展行为进行了一些新的观察。例如，虽然 8B &lt;mark data-type=concepts data-id=2e982b73-88e2-41e8-a430-f7ae5a9af4bf&gt;参数&lt;/mark&gt;模型的 Chinchilla 最佳训练计算量对应约 200B token，但 Meta 发现即使在模型接受了两个数量级以上的数据训练之后，模型性能仍在继续提高。&lt;/p&gt;&lt;p&gt;在对多达 15T token 进行训练后，8B 和 70B &lt;mark data-type=concepts data-id=2e982b73-88e2-41e8-a430-f7ae5a9af4bf&gt;参数&lt;/mark&gt;的模型都继续以对数线性的方式提升性能。较大的模型可以用较少的训练计算来匹配较小模型的性能，但较小的模型通常是首选，因为它们在推理过程中效率更高。&lt;/p&gt;&lt;p&gt;&lt;img data-imgfileid="503431394" data-ratio="0.23478260869565218" data-s="300,640" data-src="https://mmbiz.qpic.cn/sz_mmbiz_png/KmXPKA19gW9PvzPEMQhGfSIOSSwN4yPq9oJxRxjr0fYic7DYO6C7Q2Mkzjhkmg99sG8UsYelYet6micFfLVlwBfg/640?wx_fmt=png&amp;from=appmsg" data-type="png" data-w="1035" data-original-style="" data-index="9" src="https://image.jiqizhixin.com/uploads/editor/3240540c-6af8-478f-8b76-291d681c5c79/640.png" alt="图片" data-fail="0" class="fr-fic fr-dib" style="width: 700px;"&gt;&lt;/p&gt;&lt;p&gt;Meta 透露，它们使用自定义训练库、Meta 的超级集群和生产集群预训练 Llama3。微调、注释和评估在第三方&lt;mark data-type=tech_methods data-id=8a8d6b30-a68e-4d9f-a413-6e83dad9cbbd&gt;云计算&lt;/mark&gt;上进行。&lt;/p&gt;&lt;p&gt;预训练是在 H100-80GB 类型的硬件（TDP 为 700W）上累计 770 万个 GPU 小时的计算。&lt;/p&gt;&lt;p&gt;为了训练最大的 Llama 3 模型，Meta 结合了三种类型的并行化：数据并行化、模型并行化和管道并行化。&lt;/p&gt;&lt;p&gt;当同时在 16K GPU 上进行训练时，Meta 最高可实现每个 GPU 超过 400 TFLOPS 的计算利用率。Llama3 是在两个定制的 24K GPU 集群上进行了训练。为了最大限度地延长 GPU 的正常运行时间，Meta 开发了一种先进的新训练堆栈，可以自动执行错误检测、处理和维护。Meta 还极大地改进了硬件可靠性和静默数据损坏检测机制，并且开发了新的可扩展存储系统，以减少检查点和回滚的开销。&lt;/p&gt;&lt;p&gt;这些改进使总体有效训练时间超过 95%。&lt;/p&gt;&lt;p&gt;综合起来，这些改进使 Llama 3 的训练效率比 Llama 2 提高了约三倍。&lt;/p&gt;&lt;h3&gt;&lt;strong&gt;指令微调&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;为了充分释放预训练模型在聊天场景中的潜力，Meta 还对指令微调方法进行了创新。Llama 3 后训练方法用的是有监督微调（SFT）、&lt;mark data-type=tech_methods data-id=c84b6d7e-447f-4bcb-b4a5-c807d7b8a5f7&gt;拒绝采样&lt;/mark&gt;、近端策略优化（PPO）和直接策略优化（DPO）的组合。SFT 中使用的 prompt 质量以及 PPO 和 DPO 中使用的偏好排序对模型对齐有着巨大的影响。&lt;/p&gt;&lt;p&gt;此次模型质量的最大改进，来自于仔细整理数据以及对人类注释者提供的注释进行多轮质量保证。&lt;/p&gt;&lt;p&gt;通过 PPO 和 DPO 从偏好排序中学习，也极大地提高了 Llama 3 在推理和编码任务上的性能。Meta 发现，如果你向模型提出一个它难以回答的推理问题，该模型有时会产生正确的推理轨迹：模型知道如何产生正确的答案，但不知道如何选择它。对偏好排序的训练使模型能够学习如何选择正确答案。&lt;/p&gt;&lt;h3&gt;&lt;strong&gt;使用 Llama 3&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;在此版本中，Meta 提供了新的信任与安全工具，包括 Llama Guard 2 和 Cybersec Eval 2 的更新组件，并引入了 Code Shield&amp;mdash;&amp;mdash; 一种过滤大模型生成的不安全代码的防护栏。&lt;/p&gt;&lt;p&gt;Meta 还用 torchtune 开发了 Llama 3。torchtune 是新的 PyTorch 原生库，可以轻松地使用 LLM 进行创作、微调和实验。&lt;/p&gt;&lt;p&gt;torchtune 提供完全用 PyTorch 编写的内存高效且可破解的训练方法。该库与 Hugging Face、Weights &amp;amp; Biases 和 EleutherAI 等知名平台集成，甚至支持 Executorch，以便在各种移动和边缘设备上运行高效推理。&lt;/p&gt;&lt;p&gt;从快速工程到将 Llama 3 与 LangChain 结合使用，Meta 提供了全面的入门指南，指导开发者进行大规模部署。&lt;/p&gt;&lt;h3&gt;&lt;strong&gt;安全改进&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;Meta 采用了一种新的、系统级的方法来负责任地开发和部署 Llama，将 Llama 模型视为更广泛系统的一部分，让开发者掌握主导权。Llama 模型将作为系统的基础部分，由开发人员根据其独特的最终目标进行设计。&lt;/p&gt;&lt;p&gt;&lt;img data-imgfileid="503431395" data-ratio="0.39814814814814814" data-s="300,640" data-src="https://mmbiz.qpic.cn/sz_mmbiz_png/KmXPKA19gW9PvzPEMQhGfSIOSSwN4yPqNKHovjDHTNkZJROibEiaHUhyaWh3NLNh1iasBWJvAl2SCeDr4GwTH7t8g/640?wx_fmt=png&amp;from=appmsg" data-type="png" data-w="1080" data-original-style="" data-index="10" src="https://image.jiqizhixin.com/uploads/editor/99192aa7-4cea-41ad-bc1a-0bd4ab500d35/640.png" alt="图片" data-fail="0" class="fr-fic fr-dib" style="width: 700px;"&gt;&lt;/p&gt;&lt;p&gt;指令微调在确保模型安全性方面也发挥了重要作用。经过内部和外部的共同努力，Meta 对经过指令微调的模型进行了安全红队（测试）。&lt;/p&gt;&lt;p&gt;「红队」方法利用人类专家和自动化方法&lt;mark data-type=tech_tasks data-id=d8e9b7d5-cd62-415a-8a1f-03328af9b808&gt;生成对抗&lt;/mark&gt;性提示，试图诱发有问题的反应。例如，采用综合测试来评估与化学、生物、网络安全和其他风险领域有关的滥用风险。所有这些工作都是反复进行的，并用于对发布的模型进行安全微调。&lt;/p&gt;&lt;p&gt;Llama Guard 模型旨在为及时响应安全奠定基础，并可根据应用需求轻松微调以创建新的分类标准。作为起点，新版 Llama Guard 2 采用了最近公布的 MLCommons 分类标准。此外，CyberSecEval 2 在其前身的基础上进行了扩展，增加了对 LLM 允许滥用其代码解释器的倾向、攻击性网络安全能力以及对提示注入攻击的易感性的测量。最后，Meta 将推出代码盾（Code Shield），它增加了对 LLM 生成的不安全代码进行推理时过滤的支持。这可以降低不安全代码建议、代码解释器滥用预防和安全命令执行方面的风险。&lt;/p&gt;&lt;p&gt;随着生成式&lt;mark data-type=concepts data-id=2d28aa9c-942d-471d-bd96-8bfefb7144e0&gt;人工智能&lt;/mark&gt;领域的快速发展，开源将是将生态系统整合在一起并减少这些潜在危害的重要途径。&lt;/p&gt;&lt;p&gt;为此，Meta 持续更新《负责任使用指南》（RUG），该指南为负责任地使用 LLM 进行开发提供了全面指导。比如像指南中所概述的那样，所有输入和输出都应根据适合应用的内容指南进行检查和过滤。此外，许多云服务提供商都提供了用于负责任部署的内容审核 API 和其他工具，开发人员也被建议考虑使用这些选项。&lt;/p&gt;&lt;h3&gt;&lt;strong&gt;大规模部署 Llama 3&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;Llama 3 即将在所有主要平台上推出，包括云提供商、模型 API 提供商等。&lt;/p&gt;&lt;p&gt;&lt;mark data-type=concepts data-id=308c3a45-0fee-4ec6-858e-85b15f440fc0&gt;基准&lt;/mark&gt;测试表明，tokenizer 提高了 token 化效率，与 Llama 2 相比，token 生成量最多可减少 15%。此外，组查询关注（GQA）现在也被添加到了 Llama 3 8B。&lt;/p&gt;&lt;p&gt;因此，尽管与 Llama 2 7B 相比，该模型多了 1B 个&lt;mark data-type=concepts data-id=2e982b73-88e2-41e8-a430-f7ae5a9af4bf&gt;参数&lt;/mark&gt;，但 tokenizer 效率和 GQA 的改进有助于保持与 Llama 2 7B 相当的推理效率。&lt;/p&gt;&lt;p&gt;在 Llama Recipes（https://github.com/meta-llama/llama-recipes）中，介绍了有关如何利用所有这些功能的示例，其中包含所有的开放源代码，可用于从微调、部署到模型评估的所有工作。&lt;/p&gt;&lt;h3&gt;&lt;strong&gt;下一步是什么？&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;8B 和 70B 两个型号的模型，标志着 Llama 3 系列的开端，下一步还会有更多。&lt;/p&gt;&lt;p&gt;Meta 表示， 「最大的 Llama 3」&lt;mark data-type=concepts data-id=2e982b73-88e2-41e8-a430-f7ae5a9af4bf&gt;参数&lt;/mark&gt;超过 400B，虽然这些机型仍在训练中，但在接下来的几个月中也将陆续发布，新功能包括多模态、多语言对话能力、更长的上下文窗口以及更强的整体能力。&lt;/p&gt;&lt;p&gt;一旦完成 Llama 3 的训练，Meta 还将发表一篇详细的研究论文。&lt;/p&gt;&lt;p&gt;&lt;img data-imgfileid="503431396" data-ratio="0.562962962962963" data-s="300,640" data-src="https://mmbiz.qpic.cn/sz_mmbiz_png/KmXPKA19gW9PvzPEMQhGfSIOSSwN4yPqyTTyjUrVd3icq2nGHdywmHXpYFA8QJxhUibyNmbT8zWnerdLSKTbhK8A/640?wx_fmt=png&amp;from=appmsg" data-type="png" data-w="1080" data-original-style="" data-index="11" src="https://image.jiqizhixin.com/uploads/editor/ffdd6143-175b-40eb-a599-d23da2057f0b/640.png" alt="图片" data-fail="0" class="fr-fic fr-dib" style="width: 700px;"&gt;&lt;/p&gt;&lt;p&gt;Llama 3 还未到来的 400B+ 版本会有多强？它一旦发布是不是意味着开源社区就将迎来 GPT-4 级大模型？&lt;/p&gt;&lt;p&gt;&lt;img data-imgfileid="503431397" data-ratio="1.1087314662273475" data-s="300,640" data-src="https://mmbiz.qpic.cn/sz_mmbiz_png/KmXPKA19gW9PvzPEMQhGfSIOSSwN4yPqCEib9PqdpHhhLCywzHYqkicrrJ706qo0UUIGXwvq4ROics3jhpy4HlB6w/640?wx_fmt=png&amp;from=appmsg" data-type="png" data-w="607" data-original-style="" data-index="12" src="https://image.jiqizhixin.com/uploads/editor/404d2c9f-dbe7-417e-aaad-aff7925f40b7/640.png" alt="图片" data-fail="0" class="fr-fic fr-dib" style="width: 700px;"&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;Jim Fan 整理的 Llama3 400B 与 GPT-4 等模型的比分。&lt;/em&gt;&lt;/p&gt;&lt;p&gt;也许只有 OpenAI 的 GPT-5 才能压下开源模型了。&lt;/p&gt;&lt;p&gt;参考内容：&lt;/p&gt;&lt;p&gt;&lt;em&gt;https://llama.meta.com/llama3/&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;https://www.facebook.com/4/videos/377361005296904/&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;https://www.reuters.com/technology/meta-releases-early-versions-its-llama-3-ai-model-2024-04-18/&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;https://www.theverge.com/2024/4/18/24133808/meta-ai-assistant-llama-3-chatgpt-openai-rival&lt;/em&gt;&lt;/p&gt;&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category />
      <guid isPermaLink="true">https://itindex.net/detail/62921-%E5%BC%80%E6%BA%90-%E6%A8%A1%E5%9E%8B-llama</guid>
      <pubDate>Fri, 19 Apr 2024 02:44:39 CST</pubDate>
    </item>
    <item>
      <title>开源可视化报表工具：Superset</title>
      <link>https://itindex.net/detail/62903-%E5%BC%80%E6%BA%90-%E5%8F%AF%E8%A7%86%E5%8C%96-%E5%B7%A5%E5%85%B7</link>
      <description>&lt;h2&gt;Superset简介&lt;/h2&gt;
 &lt;p&gt;Superset 是一个开源的数据可视化和数据探索平台，最初由 Airbnb 开发，后来成为了 Apache 软件基金会的顶级项目。它支持各种类型的数据源，如数据库和 SQL 引擎，并提供了一个易于使用的界面来创建和共享仪表板和图表。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" height="528" src="https://www.biaodianfu.com/wp-content/uploads/2024/01/superset-1.jpg" width="780"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;主要特点包括：&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;数据可视化: Superset 提供了丰富的图表库，支持从简单的折线图和条形图到更复杂的地理信息系统 (GIS) 可视化等。&lt;/li&gt;
  &lt;li&gt;数据探索: 用户可以通过 Superset 的 SQL 编辑器执行查询，探索数据，并将结果可视化。&lt;/li&gt;
  &lt;li&gt;仪表板: 可以将多个图表组合成仪表板，为数据分析提供全面视图。&lt;/li&gt;
  &lt;li&gt;安全性和权限管理: Superset 支持细粒度的访问控制，允许管理员定义用户和角色，控制对数据和功能的访问。&lt;/li&gt;
  &lt;li&gt;易于集成: 作为一个开源工具，Superset 可以与多种数据源和其他数据工具集成。&lt;/li&gt;
  &lt;li&gt;自定义和扩展: 用户可以根据需要自定义图表和界面，并且可以开发新的可视化插件。&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;Superset 适用于数据分析师和开发人员，帮助他们快速有效地探索和可视化数据，从而做出更好的数据驱动决策。&lt;/p&gt;
 &lt;p&gt;看板示例：&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" height="447" src="https://www.biaodianfu.com/wp-content/uploads/2024/01/superset-2.jpg" width="780"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;拖拽式看板编辑器：&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" height="414" src="https://www.biaodianfu.com/wp-content/uploads/2024/01/superset-3.jpg" width="780"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;SQL编辑器：&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" height="546" src="https://www.biaodianfu.com/wp-content/uploads/2024/01/sql-lab.jpg" width="780"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h2&gt;Superset架构&lt;/h2&gt;
 &lt;p&gt;Apache Superset 是一款开源的数据可视化和数据探索平台，它的架构设计允许用户轻松地进行数据分析并创建交互式的仪表板。Superset的架构主要由以下几个核心组件构成：&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" height="464" src="https://www.biaodianfu.com/wp-content/uploads/2024/01/superset-4-1.png" width="780"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;Web服务器&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;Flask：Superset使用Flask作为其Web框架，处理HTTP请求和渲染界面。&lt;/li&gt;
  &lt;li&gt;Gunicorn：在生产环境中，通常使用Gunicorn作为WSGI HTTP服务器来运行Flask应用。&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;SQL查询引擎&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;SQLAlchemy：Superset通过SQLAlchemy与数据源进行交互，它支持多种数据库。&lt;/li&gt;
  &lt;li&gt;Pandas：在某些情况下，Superset会使用Pandas库来处理数据。&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;数据库&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;元数据数据库：存储Superset的配置信息、仪表板定义、数据源定义等。&lt;/li&gt;
  &lt;li&gt;缓存数据库：用于缓存数据，提高查询性能。Redis和Memcached是常用的选项。&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;前端&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;React &amp;amp; JavaScript：Superset的前端主要使用React框架结合JavaScript开发，用于实现用户界面的交互和动态展示。&lt;/li&gt;
  &lt;li&gt;js：图表的渲染利用了D3.js库，提供丰富的可视化选项。&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;安全性&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;认证与授权：Superset提供灵活的认证选项（如LDAP、OAuth、数据库等）和基于角色的访问控制（RBAC）。&lt;/li&gt;
  &lt;li&gt;数据安全：支持数据级别的安全控制，确保用户只能访问授权的数据。&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;扩展性&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;插件系统：Superset支持自定义插件，允许用户扩展新的可视化类型或其他功能。&lt;/li&gt;
  &lt;li&gt;API：提供REST API，支持与其他系统的集成。&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;任务调度器&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;Celery：用于执行后台任务，如异步查询和发送报告。&lt;/li&gt;
&lt;/ul&gt;
 &lt;h2&gt;Superset功能扩展&lt;/h2&gt;
 &lt;p&gt;拓展Apache Superset主要涉及添加新的可视化类型、增强现有功能、集成更多数据源等方面。&lt;/p&gt;
 &lt;p&gt;开发自定义可视化插件&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;Superset支持通过插件机制添加新的图表和可视化类型。&lt;/li&gt;
  &lt;li&gt;可以使用React和JavaScript开发新的可视化组件。&lt;/li&gt;
  &lt;li&gt;开发完成后，将插件包含在Superset的配置中，使其成为可用的可视化类型。&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;集成更多数据源&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;Superset通过SQLAlchemy与数据源进行交互，可以添加对新数据库的支持。&lt;/li&gt;
  &lt;li&gt;通过添加相应的数据库驱动和SQLAlchemy方言，可以实现新的数据库支持。&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;增强现有功能&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;对Superset的源代码进行修改，可以增强或改变现有功能。&lt;/li&gt;
  &lt;li&gt;包括改进用户界面、增加新的数据处理功能、优化性能等。&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;使用API进行集成&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;Superset提供了REST API，可以用来与其他系统集成。&lt;/li&gt;
  &lt;li&gt;例如，可以通过API自动化仪表板的创建、更新数据源等。&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;安全性和认证的定制&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;可以定制Superset的安全性和认证机制，如集成企业的单点登录（SSO）系统。&lt;/li&gt;
  &lt;li&gt;修改认证流程以支持LDAP、OAuth等。&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;使用和配置Celery任务调度器&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;使用Celery来优化和管理后台任务，如数据刷新、报告发送等。&lt;/li&gt;
  &lt;li&gt;可以定制Celery的配置以满足特定的性能和规模需求。&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;参考链接：&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;a href="https://superset.apache.org/"&gt;Welcome | Superset (apache.org)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;   &lt;a href="https://github.com/apache/superset"&gt;GitHub – apache/superset: Apache Superset is a Data Visualization and Data Exploration Platform&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;   &lt;a href="https://github.com/amancevice/docker-superset"&gt;GitHub – amancevice/docker-superset: Docker image for Airbnb’s Superset&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
 &lt;div&gt;

  &lt;h3&gt;相关文章:&lt;/h3&gt;  &lt;ol&gt;
   &lt;li&gt;    &lt;a href="https://www.biaodianfu.com/docker-jupyterhub.html" rel="bookmark" title="Docker&amp;#23433;&amp;#35013;&amp;#22810;&amp;#29992;&amp;#25143;&amp;#29256;JupyterHub"&gt;Docker安装多用户版JupyterHub&lt;/a&gt;&lt;/li&gt;
   &lt;li&gt;    &lt;a href="https://www.biaodianfu.com/hive-udf.html" rel="bookmark" title="Hive UDF&amp;#30340;&amp;#24320;&amp;#21457;&amp;#31616;&amp;#20171;"&gt;Hive UDF的开发简介&lt;/a&gt;&lt;/li&gt;
   &lt;li&gt;    &lt;a href="https://www.biaodianfu.com/microsoft-rest-api-guidelines.html" rel="bookmark" title="Microsoft REST API Guidelines&amp;#20013;&amp;#25991;&amp;#32763;&amp;#35793;"&gt;Microsoft REST API Guidelines中文翻译&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>器→工具 工具软件 BI</category>
      <guid isPermaLink="true">https://itindex.net/detail/62903-%E5%BC%80%E6%BA%90-%E5%8F%AF%E8%A7%86%E5%8C%96-%E5%B7%A5%E5%85%B7</guid>
      <pubDate>Thu, 04 Jan 2024 12:54:55 CST</pubDate>
    </item>
    <item>
      <title>Mega Crit 发布用开源引擎 Godot 开发的游戏</title>
      <link>https://itindex.net/detail/62868-mega-crit-%E5%BC%80%E6%BA%90</link>
      <description>因为最近的 Unity 引擎引入受争议的安装量收费模式事件，独立游戏发行平台 itch.io 发起了 Jump Ship Jam 游戏开发马拉松活动。卡牌类 Roguelike 游戏《杀戮尖塔（Slay the Spire）》开发商 Mega Crit 工作室在三周时间内实验使用开源引擎 Godot 开发了套牌构筑自走棋游戏《Dancing Duelists》，支持 Windows、Linux 和 Mac 三大平台。Mega Crit 称，游戏是免费的，但如果玩家觉得好玩可以考虑向 Godot 项目捐款。Godot 项目目前的每月捐款接近了 5 万欧元。
 &lt;p&gt;&lt;/p&gt;
&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category />
      <guid isPermaLink="true">https://itindex.net/detail/62868-mega-crit-%E5%BC%80%E6%BA%90</guid>
      <pubDate>Wed, 18 Oct 2023 22:11:36 CST</pubDate>
    </item>
    <item>
      <title>腾讯开源的Markdown编辑器，开箱即用、轻量简洁、易扩展</title>
      <link>https://itindex.net/detail/62810-%E8%85%BE%E8%AE%AF-%E5%BC%80%E6%BA%90-markdown</link>
      <description>&lt;p&gt;Markdown是我们开发者最为热爱的文本格式，自从爱上Markdown之后，我们的笔记、博客、留言等都希望有Markdown的支持。所以，Markdown编辑器已经是前端非常重要的一个组件了。&lt;/p&gt; &lt;p&gt;之前有推荐过一些开源的Markdown编辑器，今天继续推荐一个由腾讯开源的Markdown编辑器：  &lt;strong&gt;Cherry Markdown Editor&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;  &lt;img alt="&amp;#22270; 0" src="https://blog.didispace.com/images2/202307/tj-opensource-cherry-markdown-editor/1689270040239.png"&gt;&lt;/img&gt;  &lt;/p&gt; &lt;p&gt;这款编辑器包含我们常见的码字模式：&lt;/p&gt; &lt;ul&gt;  &lt;li&gt;双栏编辑预览模式（左侧写、右侧预览）&lt;/li&gt;  &lt;li&gt;纯预览模式&lt;/li&gt;  &lt;li&gt;极简模式（无工具栏）&lt;/li&gt;  &lt;li&gt;移动端预览模式&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;而对于语法支持上，除了支持标准Markdown语法之后，还拥有以下特性：&lt;/p&gt; &lt;ul&gt;  &lt;li&gt;图片缩放、对齐、引用&lt;/li&gt;  &lt;li&gt;根据表格内容生成图表&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;  &lt;img alt="&amp;#22270; 1" src="https://blog.didispace.com/images2/202307/tj-opensource-cherry-markdown-editor/1689270049511.png"&gt;&lt;/img&gt;  &lt;/p&gt; &lt;ul&gt;  &lt;li&gt;支持流程图、状态图、UML图常见图形需求&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;  &lt;img alt="&amp;#22270; 2" src="https://blog.didispace.com/images2/202307/tj-opensource-cherry-markdown-editor/1689270056997.png"&gt;&lt;/img&gt;  &lt;/p&gt; &lt;ul&gt;  &lt;li&gt;字体颜色、字体大小&lt;/li&gt;  &lt;li&gt;字体背景颜色、上标、下标&lt;/li&gt;  &lt;li&gt;Checklist&lt;/li&gt;  &lt;li&gt;音视频&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;基本已经可以满足大部分的文字编辑需求。&lt;/p&gt; &lt;p&gt;当然了，如果您想实现更多其他高级编辑器拥有的，诸如：数学公式等负责的语法特性功能，您也可以进一步扩展，因为  &lt;strong&gt;Cherry Markdown Editor&lt;/strong&gt;是开源的嘛！&lt;/p&gt; &lt;p&gt;最后，我们来一起看一下，这款编辑器的实际效果，具体如下图：&lt;/p&gt; &lt;p&gt;  &lt;img alt="&amp;#22270; 3" src="https://blog.didispace.com/images2/202307/tj-opensource-cherry-markdown-editor/1689270066577.png"&gt;&lt;/img&gt;  &lt;/p&gt; &lt;p&gt;目前该开源项目已经斩获了1.8K Star，放在今日好像不是太多，但实属宝藏项目，如果您正好需要，感性收入囊中吧！&lt;/p&gt; &lt;p&gt;开源地址：  &lt;a href="https://github.com/Tencent/cherry-markdown/tree/main" rel="external nofollow noopener noreferrer" target="_blank"&gt;https://github.com/Tencent/cherry-markdown/tree/main&lt;/a&gt;&lt;/p&gt; &lt;p&gt;  &lt;strong&gt;欢迎扫描下方二维码，关注公众号：TJ君，订阅每日推荐，获取更多好用效率工具！&lt;/strong&gt;&lt;/p&gt;&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>开源推荐 开源</category>
      <guid isPermaLink="true">https://itindex.net/detail/62810-%E8%85%BE%E8%AE%AF-%E5%BC%80%E6%BA%90-markdown</guid>
      <pubDate>Thu, 13 Jul 2023 17:40:04 CST</pubDate>
    </item>
    <item>
      <title>Faiss，开源的向量索引库</title>
      <link>https://itindex.net/detail/62809-faiss-%E5%BC%80%E6%BA%90-%E5%90%91%E9%87%8F</link>
      <description>&lt;p&gt;  &lt;a href="http://mp.weixin.qq.com/s?__biz=MzAwOTU4NzM5Ng==&amp;mid=2455772590&amp;idx=1&amp;sn=330698fb083368794f162fd47626637f&amp;chksm=8cc9e205bbbe6b1326f30a1e47496253eb0224282931dce075e6dac8561eaa1088c5781c04f9&amp;scene=21#wechat_redirect" target="_blank"&gt;《向量数据库，LLM生态的核心组件》&lt;/a&gt;介绍了vector index和vector databases，这篇文章介绍 Faiss，它是一个非常流行的vector index，通过这篇文章能大概理解如何应用 Faiss。&lt;/p&gt; &lt;p&gt;Faiss 是Facebook开源的一个Python包，它的目标：&lt;/p&gt; &lt;blockquote&gt;  &lt;p&gt;Faiss is a library for efficient similarity search and clustering of dense vectors. It contains algorithms that search in sets of vectors of any size, up to ones that possibly do not fit in RAM.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;意思就是进行向量的相关性搜索，同时对向量进行聚类管理，它本身是基于内存运行的。&lt;/p&gt; &lt;p&gt;环境安装：&lt;/p&gt; &lt;pre&gt;  &lt;code&gt;$ pip install faiss-cpu   &lt;br /&gt;$ pip install openai   &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;这篇文章介绍的例子是为了实现一个聚类。&lt;/p&gt; &lt;p&gt;输入如下图：&lt;/p&gt; &lt;p&gt;  &lt;img&gt;&lt;/img&gt;&lt;/p&gt; &lt;p&gt;通过训练数据，将text转换为向量，且每一个text对应（相当于向量）一个label&lt;/p&gt; &lt;p&gt;输出什么呢？根据query找出相近的两个label，如下图：&lt;/p&gt; &lt;p&gt;  &lt;img&gt;&lt;/img&gt;&lt;/p&gt; &lt;p&gt;1：数据源text，label&lt;/p&gt; &lt;pre&gt;  &lt;code&gt;data = [[&amp;apos;您的总部在哪儿?&amp;apos;, &amp;apos;位置&amp;apos;],   &lt;br /&gt;        [&amp;apos;把我的手机扔进水里&amp;apos;, &amp;apos;随机&amp;apos;],   &lt;br /&gt;        [&amp;apos;网络控制设备?&amp;apos;, &amp;apos;网络&amp;apos;],   &lt;br /&gt;        [&amp;apos;地址&amp;apos;, &amp;apos;位置&amp;apos;]]   &lt;br /&gt;df = pd.DataFrame(data, columns = [&amp;apos;text&amp;apos;, &amp;apos;category&amp;apos;])   &lt;br /&gt;text = df[&amp;apos;text&amp;apos;]   &lt;br /&gt;print(df)   &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;2：使用openai的text-embedding-ada-002模型，将text转换为向量&lt;/p&gt; &lt;pre&gt;  &lt;code&gt;dflist = text.to_list()   &lt;br /&gt;embeddings = []   &lt;br /&gt;for  dfv in dflist:   &lt;br /&gt;    embedding = openai.Embedding.create(   &lt;br /&gt;        input= dfv , model=&amp;quot;text-embedding-ada-002&amp;quot;   &lt;br /&gt;    )   &lt;br /&gt;    embedding = embedding[&amp;quot;data&amp;quot;][0][&amp;quot;embedding&amp;quot;]   &lt;br /&gt;    embeddings.append({&amp;quot;text&amp;quot;: dfv, &amp;quot;vector&amp;quot;: embedding})   &lt;br /&gt;   &lt;br /&gt;# 将向量转换为numpy数组，其shape为(4, 1536)   &lt;br /&gt;vectors = np.array([embedding[&amp;quot;vector&amp;quot;] for embedding in embeddings])   &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;3：使用FAISS 建立索引&lt;/p&gt; &lt;pre&gt;  &lt;code&gt;# 获得向量维度   &lt;br /&gt;vector_dimension = vectors.shape[1]   &lt;br /&gt;print(&amp;quot;vector_dimension&amp;quot;,vector_dimension)   &lt;br /&gt;    &lt;br /&gt;# IndexFlatIP 表示使用内积进行相似度计算，还可以选择其它索引   &lt;br /&gt;index = faiss.IndexFlatIP(vector_dimension)   &lt;br /&gt;index.add(vectors)   &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;4：构建查询向量&lt;/p&gt; &lt;pre&gt;  &lt;code&gt;search_text = &amp;apos;我的办公室在哪儿?&amp;apos;   &lt;br /&gt;   &lt;br /&gt;search_vector = openai.Embedding.create(   &lt;br /&gt;    input= search_text , model=&amp;quot;text-embedding-ada-002&amp;quot;   &lt;br /&gt;    )[&amp;quot;data&amp;quot;][0][&amp;quot;embedding&amp;quot;]   &lt;br /&gt;    &lt;br /&gt;_vector = np.array([search_vector])   &lt;br /&gt;# 将向量进行归一化，使得查询向量和索引向量在同一个空间，这样才能计算相似度   &lt;br /&gt;normalized_vector = _vector / np.linalg.norm(_vector, axis=1, keepdims=True)   &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;5：根据索引查询结果&lt;/p&gt; &lt;pre&gt;  &lt;code&gt;# ntoal 表示查询结果的数量   &lt;br /&gt;k = index.ntotal   &lt;br /&gt;k = 2    &lt;br /&gt;   &lt;br /&gt;# distances 表示距离，ann 表示索引   &lt;br /&gt;distances, ann = index.search(normalized_vector, k=k)   &lt;br /&gt;print(&amp;quot;distances&amp;quot;,distances.shape) # (1,2)   &lt;br /&gt;print(&amp;quot;ann&amp;quot;,ann.shape) #(1,2)   &lt;br /&gt;    &lt;br /&gt;results = pd.DataFrame({&amp;apos;query&amp;apos;: search_text, &amp;apos;distances&amp;apos;: distances[0], &amp;apos;ann&amp;apos;: ann[0]})   &lt;br /&gt;   &lt;br /&gt;# 将查询结果和原始数据进行合并   &lt;br /&gt;merge = pd.merge(results, df, left_on=&amp;apos;ann&amp;apos;, right_index=True)    &lt;br /&gt;print(&amp;quot;merge&amp;quot;,merge)   &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;这篇文章放弃了多年的Markdown Here Chrome插件，新排版大家感觉怎么样？&lt;/p&gt;&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>dev</category>
      <guid isPermaLink="true">https://itindex.net/detail/62809-faiss-%E5%BC%80%E6%BA%90-%E5%90%91%E9%87%8F</guid>
      <pubDate>Mon, 17 Jul 2023 00:00:00 CST</pubDate>
    </item>
    <item>
      <title>看不下去AI胡说八道，英伟达出手给大模型安了个“护栏” | 开源</title>
      <link>https://itindex.net/detail/62751-ai-%E8%8B%B1%E4%BC%9F%E8%BE%BE-%E6%A8%A1%E5%9E%8B</link>
      <description>&lt;blockquote&gt;
  &lt;p&gt;萧箫 发自 凹非寺   &lt;br /&gt;量子位 | 公众号 QbitAI&lt;/p&gt;
&lt;/blockquote&gt;
 &lt;p&gt;大模型们  &lt;strong&gt;胡说八道&lt;/strong&gt;太严重，英伟达看不下去了。&lt;/p&gt;
 &lt;p&gt;他们正式推出了一个新工具，帮助大模型说该说的话，并回避不应该触碰的话题。&lt;/p&gt;
 &lt;p&gt;这个新工具名叫“护栏技术”（NeMo Guardrails），相当于给大模型加上一堵安全围墙，既能控制它的输出、又能过滤输入它的内容。&lt;/p&gt;
 &lt;p&gt;一方面，用户诱导大模型生成攻击性代码、输出不道德内容的时候，它就会被护栏技术“束缚”，不再输出不安全的内容。&lt;/p&gt;
 &lt;p&gt;另一方面，护栏技术还能保护大模型不受用户的攻击，帮它挡住来自外界的“恶意输入”。&lt;/p&gt;
 &lt;div&gt;  &lt;img alt="&amp;#30475;&amp;#19981;&amp;#19979;&amp;#21435;AI&amp;#32993;&amp;#35828;&amp;#20843;&amp;#36947;&amp;#65292;&amp;#33521;&amp;#20255;&amp;#36798;&amp;#20986;&amp;#25163;&amp;#32473;&amp;#22823;&amp;#27169;&amp;#22411;&amp;#23433;&amp;#20102;&amp;#20010;&amp;#8220;&amp;#25252;&amp;#26639;&amp;#8221; | &amp;#24320;&amp;#28304;" src="https://www.qbitai.com/wp-content/uploads/replace/47aa4b65fcc8a7f719e8b96a0e5f0274.png"&gt;&lt;/img&gt;&lt;/div&gt;
 &lt;p&gt;现在，这个大模型护栏工具已经  &lt;strong&gt;开源&lt;/strong&gt;，一起来看看它的效果和生成方法。&lt;/p&gt;
 &lt;h1&gt;防止大模型胡言乱语的三类“护栏”&lt;/h1&gt;
 &lt;p&gt;根据英伟达介绍，目前NeMo Guardrails一共提供三种形式的护栏技术：&lt;/p&gt;
 &lt;blockquote&gt;
  &lt;p&gt;话题限定护栏（topical guardrails）、对话安全护栏（safety guardrails）和攻击防御护栏（security guardrails）。&lt;/p&gt;
&lt;/blockquote&gt;
 &lt;div&gt;  &lt;img alt="&amp;#30475;&amp;#19981;&amp;#19979;&amp;#21435;AI&amp;#32993;&amp;#35828;&amp;#20843;&amp;#36947;&amp;#65292;&amp;#33521;&amp;#20255;&amp;#36798;&amp;#20986;&amp;#25163;&amp;#32473;&amp;#22823;&amp;#27169;&amp;#22411;&amp;#23433;&amp;#20102;&amp;#20010;&amp;#8220;&amp;#25252;&amp;#26639;&amp;#8221; | &amp;#24320;&amp;#28304;" src="https://www.qbitai.com/wp-content/uploads/replace/fc2beed850cc1434fe07c7f9300b4cbc.png"&gt;&lt;/img&gt;&lt;/div&gt;
 &lt;p&gt;  &lt;strong&gt;话题限定护栏&lt;/strong&gt;，简单来说就是“防止大模型跑题”。&lt;/p&gt;
 &lt;p&gt;大模型具备更丰富的想象力，相比其他AI更容易完成创造性的代码和文字编写工作。&lt;/p&gt;
 &lt;p&gt;但对于特定场景应用如写代码、当客服而言，至少用户不希望它在解决问题时“脱离目标范围”，生成一些与需求无关的内容。&lt;/p&gt;
 &lt;p&gt;这种情况下就需要用到话题限定护栏，当大模型生成超出话题范围的文字或代码时，护栏就会将它引导回限定的功能和话题上。&lt;/p&gt;
 &lt;div&gt;  &lt;img alt="&amp;#30475;&amp;#19981;&amp;#19979;&amp;#21435;AI&amp;#32993;&amp;#35828;&amp;#20843;&amp;#36947;&amp;#65292;&amp;#33521;&amp;#20255;&amp;#36798;&amp;#20986;&amp;#25163;&amp;#32473;&amp;#22823;&amp;#27169;&amp;#22411;&amp;#23433;&amp;#20102;&amp;#20010;&amp;#8220;&amp;#25252;&amp;#26639;&amp;#8221; | &amp;#24320;&amp;#28304;" src="https://www.qbitai.com/wp-content/uploads/replace/524ea7a2ac0ce979f331259558142ca8.jpeg"&gt;&lt;/img&gt;&lt;/div&gt;
 &lt;p&gt;  &lt;strong&gt;对话安全护栏&lt;/strong&gt;，指避免大模型输出时“胡言乱语”。&lt;/p&gt;
 &lt;p&gt;胡言乱语包括两方面的情况。&lt;/p&gt;
 &lt;p&gt;一方面是大模型生成的答案中包括事实性错误，即“听起来很有道理，但其实完全不对”的东西；&lt;/p&gt;
 &lt;p&gt;另一方面是大模型生成带偏见、恶意的输出，如在用户引导下说脏话、或是生成不道德的内容。&lt;/p&gt;
 &lt;div&gt;  &lt;img alt="&amp;#30475;&amp;#19981;&amp;#19979;&amp;#21435;AI&amp;#32993;&amp;#35828;&amp;#20843;&amp;#36947;&amp;#65292;&amp;#33521;&amp;#20255;&amp;#36798;&amp;#20986;&amp;#25163;&amp;#32473;&amp;#22823;&amp;#27169;&amp;#22411;&amp;#23433;&amp;#20102;&amp;#20010;&amp;#8220;&amp;#25252;&amp;#26639;&amp;#8221; | &amp;#24320;&amp;#28304;" src="https://www.qbitai.com/wp-content/uploads/replace/84176bc6637a84d05302f7393d308ca7.jpeg"&gt;&lt;/img&gt;&lt;/div&gt;
 &lt;p&gt;  &lt;strong&gt;攻击防御护栏&lt;/strong&gt;，即防止AI平台受到来自外界的恶意攻击。&lt;/p&gt;
 &lt;p&gt;这里不仅包括诱导大模型调用外部病毒APP从而攻击它，也包括黑客主动通过网络、恶意程序等方式攻击大模型。护栏会通过各种方式防止这些攻击，避免大模型瘫痪。&lt;/p&gt;
 &lt;p&gt;所以，这样的护栏要如何打造？&lt;/p&gt;
 &lt;h1&gt;如何打造一个大模型“护栏”？&lt;/h1&gt;
 &lt;p&gt;这里我们先看看一个标准的“护栏”包含哪些要素。&lt;/p&gt;
 &lt;p&gt;具体来说，一个护栏应当包括三方面的内容，即格式规范（Canonical form）、消息（Messages）和交互流（Flows）。&lt;/p&gt;
 &lt;p&gt;首先是  &lt;strong&gt;格式规范&lt;/strong&gt;，即面对不同问题的问法时，规定大模型要输出的内容。&lt;/p&gt;
 &lt;p&gt;例如被问到“XX文章是什么”，大模型必须给出特定类型的“文章”，而非别的东西；被问到“谁发表了什么”，大模型必须给出“人名”，而非别的回答。&lt;/p&gt;
 &lt;div&gt;  &lt;img alt="&amp;#30475;&amp;#19981;&amp;#19979;&amp;#21435;AI&amp;#32993;&amp;#35828;&amp;#20843;&amp;#36947;&amp;#65292;&amp;#33521;&amp;#20255;&amp;#36798;&amp;#20986;&amp;#25163;&amp;#32473;&amp;#22823;&amp;#27169;&amp;#22411;&amp;#23433;&amp;#20102;&amp;#20010;&amp;#8220;&amp;#25252;&amp;#26639;&amp;#8221; | &amp;#24320;&amp;#28304;" src="https://www.qbitai.com/wp-content/uploads/replace/34db80da2dfa0c03c66418381cd0c0f7.png"&gt;&lt;/img&gt;&lt;/div&gt;
 &lt;p&gt;然后是  &lt;strong&gt;消息&lt;/strong&gt;定义，这里以“用户问候”话题为例，大模型可以输出这些内容：&lt;/p&gt;
 &lt;div&gt;  &lt;img alt="&amp;#30475;&amp;#19981;&amp;#19979;&amp;#21435;AI&amp;#32993;&amp;#35828;&amp;#20843;&amp;#36947;&amp;#65292;&amp;#33521;&amp;#20255;&amp;#36798;&amp;#20986;&amp;#25163;&amp;#32473;&amp;#22823;&amp;#27169;&amp;#22411;&amp;#23433;&amp;#20102;&amp;#20010;&amp;#8220;&amp;#25252;&amp;#26639;&amp;#8221; | &amp;#24320;&amp;#28304;" src="https://www.qbitai.com/wp-content/uploads/replace/46b5952040c95727d9837adb8e1a9fe0.png"&gt;&lt;/img&gt;&lt;/div&gt;
 &lt;p&gt;最后是  &lt;strong&gt;交互流&lt;/strong&gt;的定义，例如告诉大模型，怎么才是问候用户的最好方式：&lt;/p&gt;
 &lt;div&gt;  &lt;img alt="&amp;#30475;&amp;#19981;&amp;#19979;&amp;#21435;AI&amp;#32993;&amp;#35828;&amp;#20843;&amp;#36947;&amp;#65292;&amp;#33521;&amp;#20255;&amp;#36798;&amp;#20986;&amp;#25163;&amp;#32473;&amp;#22823;&amp;#27169;&amp;#22411;&amp;#23433;&amp;#20102;&amp;#20010;&amp;#8220;&amp;#25252;&amp;#26639;&amp;#8221; | &amp;#24320;&amp;#28304;" src="https://www.qbitai.com/wp-content/uploads/replace/93f7462ebff11723cfe446ac195ec71a.png"&gt;&lt;/img&gt;&lt;/div&gt;
 &lt;p&gt;一旦问候用户的机制被触发，大模型就会进入这个护栏，规规矩矩地问候用户。&lt;/p&gt;
 &lt;p&gt;具体工作流程如下：首先，将用户输入转换成某种格式规范（canonical form），据此生成对应的护栏；随后，生成行动步骤，以交互流指示大模型一步步完成对应的操作；最后，根据格式规范生成输出。&lt;/p&gt;
 &lt;div&gt;  &lt;img alt="&amp;#30475;&amp;#19981;&amp;#19979;&amp;#21435;AI&amp;#32993;&amp;#35828;&amp;#20843;&amp;#36947;&amp;#65292;&amp;#33521;&amp;#20255;&amp;#36798;&amp;#20986;&amp;#25163;&amp;#32473;&amp;#22823;&amp;#27169;&amp;#22411;&amp;#23433;&amp;#20102;&amp;#20010;&amp;#8220;&amp;#25252;&amp;#26639;&amp;#8221; | &amp;#24320;&amp;#28304;" src="https://www.qbitai.com/wp-content/uploads/replace/f8e544f89469e4f0d7ad3e28e133fe83.png"&gt;&lt;/img&gt;&lt;/div&gt;
 &lt;p&gt;类似的，我们就能给大模型定义各种各样的护栏，例如“应对用户辱骂”的护栏。&lt;/p&gt;
 &lt;p&gt;这样即使用户说出“你是个傻瓜”，大模型也能学会冷静应对：&lt;/p&gt;
 &lt;div&gt;  &lt;img alt="&amp;#30475;&amp;#19981;&amp;#19979;&amp;#21435;AI&amp;#32993;&amp;#35828;&amp;#20843;&amp;#36947;&amp;#65292;&amp;#33521;&amp;#20255;&amp;#36798;&amp;#20986;&amp;#25163;&amp;#32473;&amp;#22823;&amp;#27169;&amp;#22411;&amp;#23433;&amp;#20102;&amp;#20010;&amp;#8220;&amp;#25252;&amp;#26639;&amp;#8221; | &amp;#24320;&amp;#28304;" src="https://www.qbitai.com/wp-content/uploads/replace/3ac5301734581a6159928377f53d214e.png"&gt;&lt;/img&gt;&lt;/div&gt;
 &lt;p&gt;目前，英伟达正在将护栏技术整合进他们的AI框架NeMo中，这是个方便用户创建各种AI模型、并在英伟达GPU上加速的框架。&lt;/p&gt;
 &lt;p&gt;对“护栏”技术感兴趣的小伙伴们，可以试一试了~&lt;/p&gt;
 &lt;p&gt;开源地址：  &lt;br /&gt;
https://github.com/NVIDIA/NeMo-Guardrails&lt;/p&gt;
 &lt;p&gt;参考链接：  &lt;br /&gt;
https://www.nvidia.com/en-us/ai-data-science/generative-ai/nemo-framework/&lt;/p&gt;
&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>资讯 大模型 英伟达</category>
      <guid isPermaLink="true">https://itindex.net/detail/62751-ai-%E8%8B%B1%E4%BC%9F%E8%BE%BE-%E6%A8%A1%E5%9E%8B</guid>
      <pubDate>Wed, 03 May 2023 13:28:26 CST</pubDate>
    </item>
    <item>
      <title>免费可商用开源GPT模型问世，50G权重直接下载，性能不输GPT-3</title>
      <link>https://itindex.net/detail/62720-%E5%85%8D%E8%B4%B9-%E5%BC%80%E6%BA%90-gpt</link>
      <description>&lt;blockquote&gt;
  &lt;p&gt;萧箫 发自 凹非寺   &lt;br /&gt;量子位 | 公众号 QbitAI&lt;/p&gt;
&lt;/blockquote&gt;
 &lt;p&gt;真·开源GPT模型，终于来了。&lt;/p&gt;
 &lt;p&gt;参数量级130亿，大小比肩最近Meta开放的LLaMA-13B，但从数据集、模型权重到计算优化训练，  &lt;strong&gt;全部开源&lt;/strong&gt;。&lt;/p&gt;
 &lt;p&gt;最关键的是，  &lt;strong&gt;可商用&lt;/strong&gt;。&lt;/p&gt;
 &lt;p&gt;没错，虽然就GPT-3而言，之前DeepMind、Meta等组织陆陆续续开源过几个模型，不过基本都是半遮半掩。&lt;/p&gt;
 &lt;p&gt;尤其最接近GPT-3的Meta OPT模型，不仅权重只开放给研究者，而且不可商用：&lt;/p&gt;
 &lt;div&gt;  &lt;img src="https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/e9d0ad73ed4a4f878fd5e59669acc365~noop.image?_iz=58558&amp;from=article.pc_detail&amp;x-expires=1681028194&amp;x-signature=c7TuamxttDXnKJWQ4qlOGd2Bves%3D"&gt;&lt;/img&gt;&lt;/div&gt;
 &lt;p&gt;这意味着之前企业就算能抄作业，抄来的也没办法直接用。&lt;/p&gt;
 &lt;p&gt;现在，一家名叫Cerebras的公司开源了这一系列GPT模型，业界终于有机会追赶了。&lt;/p&gt;
 &lt;h1&gt;模型性能如何？&lt;/h1&gt;
 &lt;p&gt;Cerebras一共开源了7个GPT模型，参数量分别达到1.11亿、2.56亿、5.9亿、13亿、27亿、67亿和130亿。&lt;/p&gt;
 &lt;div&gt;  &lt;img src="https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/4c39469d09aa4cc0bec82fda43a7b333~noop.image?_iz=58558&amp;from=article.pc_detail&amp;x-expires=1681028194&amp;x-signature=LJgtA6D%2BvKWlp8KvTo7FuNss69A%3D"&gt;&lt;/img&gt;&lt;/div&gt;
 &lt;p&gt;据Cerebras公司表示，他们开放出来的模型不仅包含数据集，可用于研究也可商用，而且关键是预训练模型权重开放（从下图来看文件大小近50G）。&lt;/p&gt;
 &lt;div&gt;  &lt;img src="https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/31b3d1b9b29e4f4ca13ad66dc228b588~noop.image?_iz=58558&amp;from=article.pc_detail&amp;x-expires=1681028194&amp;x-signature=kSm5THQKKNHySDPgYzF6oCLh4RM%3D"&gt;&lt;/img&gt;&lt;/div&gt;
 &lt;p&gt;基于他们公开的预训练模型，大伙儿只需要用少量的数据对对模型进行微调，就能构建出效果不错的模型来。&lt;/p&gt;
 &lt;p&gt;除此之外，这次GPT模型的训练还额外考虑到了  &lt;strong&gt;计算优化训练&lt;/strong&gt; （Compute-Optimal Training）。&lt;/p&gt;
 &lt;p&gt;这个方法最早由DeepMind在2022年提出，名叫Chinchilla，它认为大语言模型的语料数量和模型效果之间符合一个凸曲线，因此模型参数量和训练程度成一定比例。&lt;/p&gt;
 &lt;div&gt;  &lt;img src="https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/a004489d8eca4576a2be66891c10fd70~noop.image?_iz=58558&amp;from=article.pc_detail&amp;x-expires=1681028194&amp;x-signature=nj442tHWBOsT3APLcxCGZaOKRvI%3D"&gt;&lt;/img&gt;&lt;/div&gt;
 &lt;p&gt;依据这个方法，DeepMind认为，包括GPT-3在内的超大参数LLM模型，有很多都是  &lt;strong&gt;训练不足&lt;/strong&gt;的。&lt;/p&gt;
 &lt;p&gt;基于此，Cerebras搞出了这一系列GPT模型，并将背后的流程进行了开源。&lt;/p&gt;
 &lt;p&gt;所以，Cerebras-GPT系列模型性能如何呢？&lt;/p&gt;
 &lt;p&gt;团队将Cerebras-GPT系列和LLaMA、GPT-3等模型的性能进行了对比。&lt;/p&gt;
 &lt;p&gt;这是包括GPT-3、Gopher、Chinchilla和LLaMA在内的其他GPT模型，在完成句子、问答等特定任务上表现的效果。&lt;/p&gt;
 &lt;div&gt;  &lt;img src="https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/7f98eed09c8e492a864509c8a3fd4414~noop.image?_iz=58558&amp;from=article.pc_detail&amp;x-expires=1681028194&amp;x-signature=JjfzjpzCmr6PLFqfN5NxJ9fqVB0%3D"&gt;&lt;/img&gt;&lt;/div&gt;
 &lt;p&gt;这是不同大小的Cerebras-GPT模型零次学习（0-shot）的效果：&lt;/p&gt;
 &lt;div&gt;  &lt;img src="https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/a1e99822838f4ae1b791ee0880e75973~noop.image?_iz=58558&amp;from=article.pc_detail&amp;x-expires=1681028194&amp;x-signature=hV69MxBm783gqI7rbVBESNJ%2Bdiw%3D"&gt;&lt;/img&gt;&lt;/div&gt;
 &lt;p&gt;数据对比不是特别直观，团队还将结果进行了可视化。&lt;/p&gt;
 &lt;p&gt;可以看出，在最终性能相差不大的情况下，Cerebras-GPT的  &lt;strong&gt;训练效率&lt;/strong&gt;要更高一些。&lt;/p&gt;
 &lt;div&gt;  &lt;img src="https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/d6c1e006c7dc4309bcaad7ca91461823~noop.image?_iz=58558&amp;from=article.pc_detail&amp;x-expires=1681028194&amp;x-signature=jPbOhIAUU9zwecbMs4rnxKpFKaE%3D"&gt;&lt;/img&gt;&lt;/div&gt;
 &lt;h1&gt;曾开发最大AI芯片&lt;/h1&gt;
 &lt;p&gt;其实，Cerebras的“本职”是一家AI芯片公司。&lt;/p&gt;
 &lt;p&gt;Cerebras公司由Sean Lie和Andrew Feldman等人于2016年创立。&lt;/p&gt;
 &lt;p&gt;其中，Andrew Feldman曾创建微型服务器公司SeaMicro，并以3.34亿美元的价格出售给AMD。&lt;/p&gt;
 &lt;p&gt;与其他AI芯片公司不同，Cerebras开发的芯片超大，像晶圆一样（但确实是芯片）：&lt;/p&gt;
 &lt;div&gt;  &lt;img src="https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/01737c9c6fbb49ed947ce7842d52082d~noop.image?_iz=58558&amp;from=article.pc_detail&amp;x-expires=1681028194&amp;x-signature=iVO8e%2BytTHL%2FjvY4REw1Z%2Fvmahk%3D"&gt;&lt;/img&gt;&lt;/div&gt;
 &lt;p&gt;他们当年做出来过一个名叫“晶圆级引擎”（Cerebras Wafer Scale Engine，简称WSE）的AI芯片，将逻辑运算、通讯和存储器集成到单个硅片上，一口气创下了  &lt;strong&gt;4项世界纪录&lt;/strong&gt;：&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;晶体管数量最多的运算芯片：总共包含1.2万亿个晶体管。虽然三星曾造出2万亿个晶体管的芯片，却是用于存储的eUFS。&lt;/li&gt;
  &lt;li&gt;芯片面积最大：尺寸约20厘米×23厘米，总面积46,225平方毫米。面积和一块晶圆差不多。&lt;/li&gt;
  &lt;li&gt;片上缓存最大：包含18GB的片上SRAM存储器。&lt;/li&gt;
  &lt;li&gt;运算核心最多：包含40万个处理核心。&lt;/li&gt;
&lt;/ul&gt;
 &lt;div&gt;  &lt;img src="https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/0b32a06830c54251ac03596d2ba53161~noop.image?_iz=58558&amp;from=article.pc_detail&amp;x-expires=1681028194&amp;x-signature=du3XPqbEpURwxScNFJaWiHcdLXc%3D"&gt;&lt;/img&gt;&lt;/div&gt;
 &lt;p&gt;后来这个超大WSE又升级了二代，然后团队基于WSE-2打造出了一个名叫Cerebras CS-2的AI超算。&lt;/p&gt;
 &lt;p&gt;这次的Cerebras-GPT系列模型，就是在这个Cerebras CS-2的AI超算中训练出来的。对此这家公司表示：&lt;/p&gt;
 &lt;blockquote&gt;
  &lt;p&gt;虽然训练这么大体量的模型通常需要几个月时间，但我们几周就能搞定。&lt;/p&gt;
&lt;/blockquote&gt;
 &lt;p&gt;Cerebras还表示，虽然很多硬件公司都声称训练效果能接近  &lt;strong&gt;英伟达GPU&lt;/strong&gt;的水平，但他们还没看到任何一家亲自推动开源LLM的硬件公司，这势必不利于开源LLM的发展。&lt;/p&gt;
 &lt;p&gt;这波啊，这波Cerebras格局大了（手动狗头）&lt;/p&gt;
 &lt;p&gt;模型地址：  &lt;br /&gt;
https://huggingface.co/cerebras/Cerebras-GPT-13B&lt;/p&gt;
 &lt;p&gt;参考链接：  &lt;br /&gt;
https://www.cerebras.net/blog/cerebras-gpt-a-family-of-open-compute-efficient-large-language-models/&lt;/p&gt;
&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>资讯 AI芯片 GPT-3 人工智能 开源</category>
      <guid isPermaLink="true">https://itindex.net/detail/62720-%E5%85%8D%E8%B4%B9-%E5%BC%80%E6%BA%90-gpt</guid>
      <pubDate>Sun, 02 Apr 2023 16:21:11 CST</pubDate>
    </item>
    <item>
      <title>Meta开源的ChatGPT平替到底好不好用？测试结果、加料改装方法已出炉，2天5.2k星</title>
      <link>https://itindex.net/detail/62659-meta-%E5%BC%80%E6%BA%90-chatgpt</link>
      <description>&lt;section&gt;ChatGPT 的持续爆火，早已让各大科技公司坐不住了。&lt;/section&gt;&lt;section&gt;&lt;br&gt;&lt;/section&gt;&lt;section&gt;就在刚刚过去的一周，Meta「开源」了一个新的大模型系列 &amp;mdash;&amp;mdash;&lt;a data-itemshowtype="0" data-linktype="2" href="http://mp.weixin.qq.com/s?__biz=MzA3MzI4MjgzMw==&amp;mid=2650869478&amp;idx=1&amp;sn=c06afe59ab0322e885a0f4358b9b6907&amp;chksm=84e4ca98b393438e77ff7893e43524273e396e1a0c43fae592b04acfb674ab8f64ffb2ba21ae&amp;scene=21#wechat_redirect" target="_blank"&gt;LLaMA&lt;/a&gt;（Large Language Model Meta AI），&lt;mark data-type=concepts data-id=2e982b73-88e2-41e8-a430-f7ae5a9af4bf&gt;参数&lt;/mark&gt;量从 70 亿到 650 亿不等。因为 LLaMA 比之前发布的很多大模型&lt;mark data-type=concepts data-id=2e982b73-88e2-41e8-a430-f7ae5a9af4bf&gt;参数&lt;/mark&gt;更少，但性能更好，所以一经发布让很多研究者兴奋不已。&lt;/section&gt;&lt;section&gt;&lt;br&gt;&lt;/section&gt;&lt;section&gt;例如，130 亿&lt;mark data-type=concepts data-id=2e982b73-88e2-41e8-a430-f7ae5a9af4bf&gt;参数&lt;/mark&gt;的 LLaMA 模型「在大多数&lt;mark data-type=concepts data-id=308c3a45-0fee-4ec6-858e-85b15f440fc0&gt;基准&lt;/mark&gt;上」可以胜过&lt;mark data-type=concepts data-id=2e982b73-88e2-41e8-a430-f7ae5a9af4bf&gt;参数&lt;/mark&gt;量达 1750 亿的 GPT-3，而且可以在单块 V100 GPU 上运行；而最大的 650 亿&lt;mark data-type=concepts data-id=2e982b73-88e2-41e8-a430-f7ae5a9af4bf&gt;参数&lt;/mark&gt;的 LLaMA 模型可以媲美谷歌的 Chinchilla-70B 和 PaLM-540B。&lt;/section&gt;&lt;section&gt;&lt;br&gt;&lt;/section&gt;&lt;section&gt;&lt;mark data-type=concepts data-id=2e982b73-88e2-41e8-a430-f7ae5a9af4bf&gt;参数&lt;/mark&gt;量的减少对于普通研究者和商业机构来说都是好事，但 LLaMA 真的像论文中说得那样表现那么好吗？和当前的 ChatGPT 相比，LLaMA 是否可以勉强一战？为了解答这些疑问，有些研究者已经对这一模型进行了测试。&lt;/section&gt;&lt;section&gt;&lt;br&gt;&lt;/section&gt;&lt;section&gt;还有公司已经在尝试补齐 LLaMA 短板，想看能不能通过添加 RLHF 等训练方法让 LLaMA 表现更好。&lt;/section&gt;&lt;section&gt;&lt;br&gt;&lt;/section&gt;&lt;section&gt;&lt;strong&gt;LLaMA 初步评测&lt;/strong&gt;&lt;/section&gt;&lt;section&gt;&lt;br&gt;&lt;/section&gt;&lt;section&gt;这份评测结果来自一位名叫 @Enryu 的 Medium 作者。它比较了 LLaMA 和 ChatGPT 在解释笑话、零样本分类和代码生成三个颇具挑战性的任务中的效果。相关博客文章为《Mini-post: first look at LLaMA》。&lt;/section&gt;&lt;section&gt;&lt;br&gt;&lt;/section&gt;&lt;section&gt;作者在 RTX 3090/RTX 4090 上运行 LLaMA 7B/13B 版本，在单个 A100 上运行 33B 版本。&lt;/section&gt;&lt;section&gt;&lt;br&gt;&lt;/section&gt;&lt;section&gt;需要注意的是，与 ChatGPT 不同，其他模型并不是基于指令微调，因此 prompt 的结构有所不同。&lt;/section&gt;&lt;section&gt;&lt;br&gt;&lt;/section&gt;&lt;section&gt;&lt;strong&gt;解释笑话&lt;/strong&gt;&lt;/section&gt;&lt;section&gt;&lt;br&gt;&lt;/section&gt;&lt;section&gt;这是谷歌原始 PaLM 论文中展示的一个用例：给出一个笑话，让模型来解释它为什么好笑。该任务需要将世界知识和一些基本&lt;mark data-type=concepts data-id=95a97f4b-79d2-4bbc-91ae-300f074dff9f&gt;逻辑&lt;/mark&gt;相结合。PaLM 之前的所有模型都无法做到这一点。作者从 PaLM 论文中提取了一些示例，比较了 LLaMA-7B、LLaMA-13B、LLaMA-33B 与 ChatGPT 的表现。&lt;/section&gt;&lt;section&gt;&lt;br&gt;&lt;/section&gt;&lt;section&gt;&lt;img data-ratio="0.18823529411764706" data-src="https://mmbiz.qpic.cn/mmbiz_png/KmXPKA19gWicHsGdj258fyg3aujOh9lMUnIGDVflgib8uDljkrpGenB6NYx1CuCZYV001gPBbSSicjSzZXDBprPicw/640?wx_fmt=png" data-type="png" data-w="1360" data-index="1" src="https://image.jiqizhixin.com/uploads/editor/d1ffa829-b3ba-47e4-8a26-97fb9b0296be/640.png" alt="图片" data-fail="0" class="fr-fic fr-dib" style="width: 700%;"&gt;&lt;/section&gt;&lt;section&gt;&lt;br&gt;&lt;/section&gt;&lt;section&gt;可以看到，结果很糟糕。这些模型 get 到了一些笑点，但无法真正理解，它们只是随机生成一些相关的文本流。ChatGPT 虽与 LLaMA-33B 一样表现很差（其他几个模型更差），但它遵循了不一样的策略：生成了一大堆文本，希望自己的回答至少有一部分是正确的（但大部分显然不是），是不是很像大家考试时应对问答题的策略？&lt;/section&gt;&lt;section&gt;&lt;br&gt;&lt;/section&gt;&lt;section&gt;不过，ChatGPT 起码 get 到了关于 Schmidthuber 的笑话。但总的来说，这些模型在零样本笑话解释任务上的效果与 PaLM 相差甚远（除非 PaLM 的示例是精心挑选）。&lt;/section&gt;&lt;section&gt;&lt;br&gt;&lt;/section&gt;&lt;section&gt;&lt;strong&gt;零样本分类&lt;/strong&gt;&lt;/section&gt;&lt;section&gt;&lt;br&gt;&lt;/section&gt;&lt;section&gt;作者考虑的第二项任务更具挑战性 &amp;mdash;&amp;mdash; 标题党（clickbait）分类。由于连人类也无法就什么是标题党达成一致，作者在 prompt 中为这些模型提供了一些示例（因此实际上是小样本而非零样本）。如下为 LLaMa 的 prompt：&lt;/section&gt;&lt;p&gt;&lt;img src="https://image.jiqizhixin.com/uploads/editor/0a4c0fc0-cdff-4de8-b06a-ed217c588662/1677993296430.png" style="width: 700%;" class="fr-fic fr-dib"&gt;&lt;/p&gt;&lt;section&gt;下图为 LLaMA-7B、LLaMA-13B、LLaMA-33B 与 ChatGPT 的更多示例结果。&lt;/section&gt;&lt;section&gt;&lt;img data-ratio="0.2039695945945946" data-src="https://mmbiz.qpic.cn/mmbiz_png/KmXPKA19gWicHsGdj258fyg3aujOh9lMUqXyfu7YW71wPNibR1RyfDUSrSibJHriat7jBJZ5exd7iaV5B8LrpOvSvibQ/640?wx_fmt=png" data-type="png" data-w="2368" data-index="2" src="https://image.jiqizhixin.com/uploads/editor/5be53f2c-2969-448d-8729-f01cbc1308c4/640.png" alt="图片" data-fail="0" class="fr-fic fr-dib" style="width: 700%;"&gt;&lt;/section&gt;&lt;section&gt;很明显，赢家为 LLaMA-33B，它是唯一一个能够遵循所有请求格式（yes/no）的模型，并且预测合理。ChatGPT 也还可以，但有些预测不太合理，格式也有错误。较小的模型（7B/13B）不适用于该任务。&lt;/section&gt;&lt;section&gt;&lt;br&gt;&lt;/section&gt;&lt;section&gt;&lt;strong&gt;代码生成&lt;/strong&gt;&lt;/section&gt;&lt;section&gt;&lt;br&gt;&lt;/section&gt;&lt;section&gt;虽然 LLM 擅长人文学科，但在 STEM 学科上表现糟糕。LLaMA 虽然有&lt;mark data-type=concepts data-id=308c3a45-0fee-4ec6-858e-85b15f440fc0&gt;基准&lt;/mark&gt;测试结果，但作者在代码生成领域尝试了一些特别的东西，即将人类语言零样本地转换为 SQL &lt;mark data-type=concepts data-id=bf740558-f0f7-41a8-87a0-e695a97563b3&gt;查询&lt;/mark&gt;。这并不是很实用，在现实生活中直接编写&lt;mark data-type=concepts data-id=bf740558-f0f7-41a8-87a0-e695a97563b3&gt;查询&lt;/mark&gt;会更有效率。这里只作为代码生成任务的一个示例。&lt;/section&gt;&lt;section&gt;&lt;br&gt;&lt;/section&gt;&lt;section&gt;在 prompt 中，作者提供表模式（table schema）以及想要实现的目标，要求模型给出 SQL &lt;mark data-type=concepts data-id=bf740558-f0f7-41a8-87a0-e695a97563b3&gt;查询&lt;/mark&gt;。&lt;/section&gt;&lt;section&gt;从测试结果来看，LLaMA 在一些任务上表现还不错，但在另一些任务上和 ChatGPT 还有一些差距。如果能像 ChatGPT 一样加入一些「训练秘籍」，效果会不会大幅提升？&lt;/section&gt;&lt;section&gt;&lt;br&gt;&lt;/section&gt;&lt;section&gt;&lt;strong&gt;加入 RLHF，初创公司 Nebuly AI 开源 ChatLLaMA 训练方法&lt;/strong&gt;&lt;/section&gt;&lt;section&gt;&lt;br&gt;&lt;/section&gt;&lt;section&gt;虽然 LLaMA 发布之初就得到众多研究者的青睐，但是少了 RLHF 的加持，从上述评测结果来看，还是差点意思。&lt;/section&gt;&lt;section&gt;&lt;br&gt;&lt;/section&gt;&lt;section&gt;在 LLaMA 发布三天后，初创公司 Nebuly AI 开源了 RLHF 版 LLaMA（ChatLLaMA）的训练方法。它的训练过程类似 ChatGPT，该项目允许基于预训练的 LLaMA 模型构建 ChatGPT 形式的服务。项目上线刚刚 2 天，狂揽 5.2K 星。&lt;/section&gt;&lt;section&gt;&lt;img data-ratio="0.3348104382077794" data-src="https://mmbiz.qpic.cn/mmbiz_png/KmXPKA19gWicHsGdj258fyg3aujOh9lMUv9XDtprNjG4Q7zvYcsgZAEb4qeKc3QEVVzLpLhCtp8N5eG1rnUaAWA/640?wx_fmt=png" data-type="png" data-w="2031" data-index="3" src="https://image.jiqizhixin.com/uploads/editor/98730d6a-a6cf-4ab1-8aca-66926df7f3cc/640.png" alt="图片" data-fail="0" class="fr-fic fr-dib" style="width: 700%;"&gt;&lt;/section&gt;&lt;section&gt;项目地址：https://github.com/nebuly-ai/nebullvm/tree/main/apps/accelerate/chatllama&lt;/section&gt;&lt;section&gt;&lt;br&gt;&lt;/section&gt;&lt;section&gt;ChatLLaMA 训练过程算法实现主打比 ChatGPT 训练更快、更便宜，我们可以从以下四点得到验证：&lt;/section&gt;&lt;section&gt;&lt;br&gt;&lt;/section&gt;&lt;ul&gt;&lt;li&gt;&lt;section&gt;ChatLLaMA 是一个完整的开源实现，允许用户基于预训练的 LLaMA 模型构建 ChatGPT 风格的服务；&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section&gt;与 ChatGPT 相比，LLaMA 架构更小，但训练过程和单 GPU 推理速度更快，成本更低；&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section&gt;ChatLLaMA 内置了对 DeepSpeed ZERO 的支持，以加速微调过程；&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section&gt;该库还支持所有的 LLaMA 模型架构（7B、13B、33B、65B），因此用户可以根据训练时间和推理性能偏好对模型进行微调。&lt;/section&gt;&lt;/li&gt;&lt;/ul&gt;&lt;section&gt;&lt;br&gt;&lt;/section&gt;&lt;section&gt;&lt;img data-ratio="0.5833333333333334" data-src="https://mmbiz.qpic.cn/mmbiz_png/KmXPKA19gWicHsGdj258fyg3aujOh9lMU8S8fvBic1YJbZM2icC0rC5NjuwnSmYp3mYxGIVYmSibmUibQxFDePLEcNQ/640?wx_fmt=png" data-type="png" data-w="2064" data-index="4" src="https://image.jiqizhixin.com/uploads/editor/0c51a6c5-5c8c-4a96-96ad-d80e73b841b0/640.png" alt="图片" data-fail="0" class="fr-fic fr-dib" style="width: 700%;"&gt;&lt;/section&gt;&lt;section&gt;&lt;em&gt;图源：https://openai.com/blog/chatgpt&lt;/em&gt;&lt;/section&gt;&lt;section&gt;&lt;br&gt;&lt;/section&gt;&lt;section&gt;更是有研究者表示，ChatLLaMA 比 ChatGPT 训练速度最高快 15 倍。&lt;/section&gt;&lt;section&gt;&lt;br&gt;&lt;/section&gt;&lt;section&gt;&lt;img data-ratio="1.124236252545825" data-src="https://mmbiz.qpic.cn/mmbiz_png/KmXPKA19gWicHsGdj258fyg3aujOh9lMUISTVibUUwicJ4xvgfGeWoCczIOiaAhV7wQaW9MO8PeL02YzSVYoW9yTqA/640?wx_fmt=png" data-type="png" data-w="982" data-index="5" src="https://image.jiqizhixin.com/uploads/editor/daa743a3-bc2f-49e3-a7b3-a3036dd7ea3d/640.png" alt="图片" data-fail="0" class="fr-fic fr-dib" style="width: 700%;"&gt;&lt;/section&gt;&lt;section&gt;&lt;br&gt;&lt;/section&gt;&lt;section&gt;不过有人对这一说法提出质疑，认为该项目没有给出准确的衡量标准。&lt;/section&gt;&lt;section&gt;&lt;br&gt;&lt;/section&gt;&lt;section&gt;&lt;img data-ratio="0.1782312925170068" data-src="https://mmbiz.qpic.cn/mmbiz_png/KmXPKA19gWicHsGdj258fyg3aujOh9lMUdGrcg6u8SZBxAoCyjCl7Rh4SS3Y6ib9OO3JcrRso35lJWVdwnCLEKdg/640?wx_fmt=png" data-type="png" data-w="735" data-index="6" src="https://image.jiqizhixin.com/uploads/editor/e37f35b4-5a06-4b0b-aebb-a54f03fdb8ff/640.png" alt="图片" data-fail="0" class="fr-fic fr-dib" style="width: 700%;"&gt;&lt;/section&gt;&lt;section&gt;项目刚刚上线 2 天，还处于早期阶段，用户可以通过以下添加项进一步扩展：&lt;/section&gt;&lt;section&gt;&lt;br&gt;&lt;/section&gt;&lt;ul&gt;&lt;li&gt;&lt;section&gt;带有微调&lt;mark data-type=concepts data-id=149a12cf-10c2-4555-9899-cc6dee319ef5&gt;权重&lt;/mark&gt;的 Checkpoint；&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section&gt;用于快速推理的优化技术；&lt;/section&gt;&lt;/li&gt;&lt;li&gt;&lt;section&gt;支持将模型打包到有效的部署框架中。&lt;/section&gt;&lt;/li&gt;&lt;/ul&gt;&lt;section&gt;&lt;br&gt;&lt;/section&gt;&lt;section&gt;Nebuly AI 希望更多人加入进来，创造更高效和开放的 ChatGPT 类助手。&lt;/section&gt;&lt;section&gt;&lt;br&gt;&lt;/section&gt;&lt;section&gt;该如何使用呢？首先是使用 pip 安装软件包：&lt;/section&gt;&lt;p&gt;&lt;img src="https://image.jiqizhixin.com/uploads/editor/b6fff319-4932-4b9d-966f-914ac9433f5b/1677993339601.png" style="width: 65.14%;" class="fr-fic fr-dib"&gt;&lt;/p&gt;&lt;p&gt;然后是克隆 LLaMA 模型：&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;img src="https://image.jiqizhixin.com/uploads/editor/23adaf09-e7fb-4b05-8f1a-aa9a513da6ed/1677993356917.png" style="width: 700%;" class="fr-fic fr-dib"&gt;&lt;/p&gt;&lt;section&gt;一切准备就绪后，就可以运行了，项目中介绍了 ChatLLaMA 7B 的训练示例，感兴趣的小伙伴可以查看原项目。&lt;/section&gt;&lt;section&gt;&lt;br&gt;&lt;/section&gt;&lt;section&gt;&lt;em&gt;参考链接：&lt;/em&gt;&lt;/section&gt;&lt;section&gt;&lt;em&gt;https://www.linkedin.com/posts/activity-7035964259431763970-YdMK/&lt;/em&gt;&lt;/section&gt;&lt;section&gt;&lt;em&gt;https://medium.com/@enryu9000/mini-post-first-look-at-llama-4403517d41a1&lt;/em&gt;&lt;/section&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category />
      <guid isPermaLink="true">https://itindex.net/detail/62659-meta-%E5%BC%80%E6%BA%90-chatgpt</guid>
      <pubDate>Sun, 05 Mar 2023 13:17:00 CST</pubDate>
    </item>
    <item>
      <title>开源API越权漏洞检测系统推荐：IDOR_detect_tool</title>
      <link>https://itindex.net/detail/62653-%E5%BC%80%E6%BA%90-api-%E6%BC%8F%E6%B4%9E</link>
      <description>&lt;p&gt;相信大部分读者跟我一样，每天都在写各种API为Web应用提供数据支持，那么您是否有想过您的API是否足够安全呢？&lt;/p&gt; &lt;p&gt;Web应用的安全是网络安全中不可忽视的关键方面。我们必须确保其Web应用与后台通信的安全，以防止数据泄露，因为这可能导致重大的财务损失和声誉受损。&lt;/p&gt; &lt;p&gt;  &lt;img alt="&amp;#22270; 1" src="https://blog.didispace.com/images2/202303/tj-idor-detect-tool/1677777642530.png"&gt;&lt;/img&gt;  &lt;/p&gt; &lt;p&gt;而在Web应用的安全问题中，最常见的漏洞之一是不安全的直接对象引用，简称：IDOR。即：当应用程序允许用户访问他们不应该访问的资源时，就会发生IDOR漏洞。比如：SaaS软件的用户A访问到了用户B的数据，这样的漏洞是灾难性的，因为用户将不再信任您提供的服务。&lt;/p&gt; &lt;p&gt;那么如何方便、快捷的检测IDOR漏洞呢？今天就给大家推荐一个好用的开源工具：IDOR_detect_tool&lt;/p&gt; &lt;h2&gt;  &lt;a href="https://blog.didispace.com/#&amp;#20351;&amp;#29992;&amp;#31616;&amp;#21333;" title="&amp;#20351;&amp;#29992;&amp;#31616;&amp;#21333;"&gt;&lt;/a&gt;使用简单&lt;/h2&gt; &lt;ul&gt;  &lt;li&gt;从 GitHub 存储库下载工具&lt;/li&gt;  &lt;li&gt;准备好目标系统的A、B两账号，根据系统的鉴权逻辑（Cookie、header、参数等）将A账号信息配置config/config.yml，之后登录B账号&lt;/li&gt;  &lt;li&gt;使用B账号访问，脚本会自动替换鉴权信息并重放，根据响应结果判断是否存在越权漏洞&lt;/li&gt;  &lt;li&gt;生成报表，每次有新漏洞都会自动添加到report/result.html中，通过浏览器打开&lt;/li&gt;  &lt;li&gt;点击具体条目可以展开/折叠对应的请求和响应&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;如果您刚好在做这个内容，不妨看看这个开源项目！&lt;/p&gt; &lt;p&gt;  &lt;strong&gt;开源地址：   &lt;a href="https://github.com/y1nglamore/IDOR_detect_tool" rel="external nofollow noopener noreferrer" target="_blank"&gt;https://github.com/y1nglamore/IDOR_detect_tool&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;  &lt;strong&gt;欢迎扫描下方二维码，关注公众号：TJ君，订阅每日推荐，获取更多好用效率工具！&lt;/strong&gt;&lt;/p&gt;&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>开源推荐 开源</category>
      <guid isPermaLink="true">https://itindex.net/detail/62653-%E5%BC%80%E6%BA%90-api-%E6%BC%8F%E6%B4%9E</guid>
      <pubDate>Fri, 03 Mar 2023 01:19:23 CST</pubDate>
    </item>
    <item>
      <title>一个NASA、Google都在用的开源CMS：wagtail</title>
      <link>https://itindex.net/detail/62652-nasa-google-%E5%BC%80%E6%BA%90</link>
      <description>&lt;p&gt;说起开源CMS，你会想到哪些呢？WordPress？DoraCMS？joomla？&lt;/p&gt; &lt;p&gt;今天再给大家推荐一个非常好用的开源CMS：  &lt;strong&gt;wagtail&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;  &lt;img alt="&amp;#22270;&amp;#29255; 1" src="https://blog.didispace.com/images2/202303/tj-wagtail/1677777787874.png"&gt;&lt;/img&gt;  &lt;br /&gt;图片&lt;/p&gt; &lt;p&gt;如果您正在选型的话，可以了解一下Wagtail的特点：&lt;/p&gt; &lt;ul&gt;  &lt;li&gt;基于Django构建，具有出色的文档管理功能和友好的用户界面。&lt;/li&gt;  &lt;li&gt;提供了一个灵活且易于使用的页面编辑器，支持多种类型的内容块，包括文本、图像、视频和HTML代码。&lt;/li&gt;  &lt;li&gt;具有出色的SEO功能，包括友好的URL和元标记管理。&lt;/li&gt;  &lt;li&gt;支持多语言网站，并提供了一个易于使用的翻译界面。&lt;/li&gt;  &lt;li&gt;完全开源的CMS，拥有强大的社区支持和活跃的开发人员社区。&lt;/li&gt;  &lt;li&gt;内容审核和版本控制：wagtail支持审核和审批工作流程，以确保您的内容在发布之前经过审核和批准。&lt;/li&gt;  &lt;li&gt;网站搜索：wagtail提供了一个易于使用的搜索框架，支持全文搜索和过滤器。&lt;/li&gt;  &lt;li&gt;云存储支持：wagtail支持多种云存储服务，包括Amazon S3和Google Cloud Storage，以帮助您管理和存储大量的媒体文件。&lt;/li&gt;  &lt;li&gt;定制化：wagtail提供了一个灵活的插件系统，使您可以轻松地添加自定义功能和扩展。&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;wagtail的忠实用户中还有NASA、OXFAM、NHS、Google等知名公司&lt;/p&gt; &lt;p&gt;  &lt;img alt="&amp;#22270;&amp;#29255; 1" src="https://blog.didispace.com/images2/202303/tj-wagtail/1677777781489.png"&gt;&lt;/img&gt;  &lt;br /&gt;图片&lt;/p&gt; &lt;p&gt;目前wagtail在GitHub上拥有14.3k的Star，可见其用户与生态是非常庞大的。&lt;/p&gt; &lt;p&gt;总之，wagtail的功能非常强大且灵活，适用于各种不同类型的网站，包括博客、新闻网站、企业门户等。如果您是一位开发人员或具有一定的技术知识，那么wagtail绝对是一个值得考虑的选择。&lt;/p&gt; &lt;ul&gt;  &lt;li&gt;官方网站：   &lt;a href="https://wagtail.org/" rel="external nofollow noopener noreferrer" target="_blank"&gt;https://wagtail.org/&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;开源地址：   &lt;a href="https://github.com/wagtail/wagtail" rel="external nofollow noopener noreferrer" target="_blank"&gt;https://github.com/wagtail/wagtail&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;  &lt;strong&gt;欢迎扫描下方二维码，关注公众号：TJ君，订阅每日推荐，获取更多好用效率工具！&lt;/strong&gt;&lt;/p&gt;&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>开源推荐 开源</category>
      <guid isPermaLink="true">https://itindex.net/detail/62652-nasa-google-%E5%BC%80%E6%BA%90</guid>
      <pubDate>Fri, 03 Mar 2023 01:22:14 CST</pubDate>
    </item>
    <item>
      <title>12款开源的低代码开发平台</title>
      <link>https://itindex.net/detail/62599-%E5%BC%80%E6%BA%90-%E4%BB%A3%E7%A0%81-%E5%BC%80%E5%8F%91</link>
      <description>&lt;div&gt;  &lt;br /&gt;  &lt;p&gt;      &lt;strong&gt;1、Appsmith 构建和自托管内部应用程序&lt;/strong&gt;&lt;/p&gt;    &lt;img&gt;&lt;/img&gt;许可证：Apache-2.0
开发语言：Java、JavaScript、TypeScript
官网：https://www.appsmith.com/Appsmith 是一个用于构建管理面板、内部工具和仪表板的低代码项目。与超过 15 个数据库和任何 API 集成。构建你需要的一切，速度提高 10 倍。允许你拖放组件来构建仪表板、使用 JavaScript 对象编写逻辑并连接到任何 API、数据库或 GraphQL 源。    &lt;img&gt;&lt;/img&gt;项目地址：https://www.oschina.net/p/appsmith &lt;/div&gt; &lt;div&gt; &lt;/div&gt; &lt;div&gt;  &lt;strong&gt;2、&lt;/strong&gt;    &lt;strong&gt;BudiBase 构建内部工具的开源低代码平台&lt;/strong&gt;    &lt;img&gt;&lt;/img&gt;许可证：GPLv3
开发语言：JavaScript、TypeScript
官网：https://budibase.com/Budibase 是一个开源的低代码平台，帮助 IT 专业人士在几分钟内在自己的基础架构上构建、自动化和交付内部工具。它专注于为开发人员提供工具，以加快一个平台内的开发、部署和集成过程。    &lt;img&gt;&lt;/img&gt;项目地址：https://www.oschina.net/p/budibase &lt;/div&gt; &lt;div&gt;  &lt;br /&gt;&lt;/div&gt; &lt;div&gt;   &lt;strong&gt;3、&lt;/strong&gt;    &lt;strong&gt;Baserow 开源 Airtable 替代品&lt;/strong&gt;    &lt;img&gt;&lt;/img&gt;    &lt;p&gt;许可证：MIT
开发语言：Python
官网：https://baserow.io/&lt;/p&gt;    &lt;p&gt;Baserow 是一个 Airtable 的开源替代品，是一个开源的在线表格应用，其单元格支持各种各样的数据类型。用户可以使用这个无代码的平台来创建一个数据库，而无需任何开发技能。&lt;/p&gt;    &lt;p&gt;Baserow 是一种用于动态创建、管理数据库和构建数据库应用程序的迷人工具。它具有确保高生产力和可用性的功能。&lt;/p&gt;    &lt;p&gt;因为 Baserow 是一个模块化系统，它提供了一个完整的 REST-API 无头系统，所以它吸引了移动开发人员的注意，将其用作他们应用程序的后端。&lt;/p&gt;    &lt;img&gt;&lt;/img&gt;项目地址：https://www.oschina.net/p/baserow &lt;/div&gt; &lt;div&gt;  &lt;br /&gt;&lt;/div&gt; &lt;div&gt;    &lt;strong&gt;4、&lt;/strong&gt;    &lt;strong&gt;CUBA-Platform 企业级应用开发平台&lt;/strong&gt;    &lt;img&gt;&lt;/img&gt;许可证：Apache-2.0
开发语言：Java
官网：https://www.jmix.cn/CUBA 平台是一个面向企业的开源快速应用开发系统。它带有数十种工具作为 IDE、应用程序构建工作室、CLI 命令行界面和可靠的可扩展基础设施。CUBA 平台有一个丰富的插件系统，其中包含一个 BPM（业务流程管理）附加组件，需要花费一些时间来构建和安装。    &lt;img&gt;&lt;/img&gt;项目地址：https://www.oschina.net/p/cuba-platform &lt;/div&gt; &lt;div&gt;  &lt;br /&gt;&lt;/div&gt; &lt;div&gt;    &lt;strong&gt;5、&lt;/strong&gt;    &lt;strong&gt;Digdag 多云工作流引擎&lt;/strong&gt;    &lt;img&gt;&lt;/img&gt;许可证：Apache-2.0
开发语言：Java、JavaScript、Python
官网：https://www.digdag.io/Digdag 是一个简单的工具，帮助你建立、运行、安排和监控复杂的任务管道。它可以处理依赖性问题，使任务串联或并行运行。Digdag 取代了 cron，促进了 IT 运营自动化，协调了数据工程任务，协调了机器学习管道，等等。Digdag 旨在实现易于部署、多云设置和模块化的结构来构建和扩展业务应用。拥有一系列企业功能，包括丰富的管理面板、多语言支持、错误处理、配置工具和版本控制工具。该解决方案采用 Java 和 Node.js 开发，支持 AWS、私有云、IBM 云和 Digital Ocean。项目地址：https://www.oschina.net/p/digdag &lt;/div&gt; &lt;div&gt;  &lt;br /&gt;&lt;/div&gt; &lt;div&gt;    &lt;strong&gt;6、&lt;/strong&gt;    &lt;strong&gt;Jeecg-Boot 基于代码生成器的 J2EE 开发平台&lt;/strong&gt;    &lt;img&gt;&lt;/img&gt;许可证：Apache-2.0
开发语言：Java、JavaScript
官网：http://www.jeecg.com/JeecgBoot是一款基于BPM的低代码平台！前后端分离架构 SpringBoot 2.x，SpringCloud，Ant Design&amp;amp;Vue，Mybatis-plus，Shiro，JWT，支持微服务。强大的代码生成器让前后端代码一键生成，实现低代码开发。JeecgBoot引领新低代码开发模式 OnlineCoding-&amp;gt; 代码生成器-&amp;gt; 手工MERGE， 帮助Java项目解决70%的重复工作，让开发更多关注业务，既能快速提高效率，节省研发成本，同时又不失灵活性。一系列低代码能力：Online表单、Online报表、Online图表、表单设计、流程设计、报表设计、大屏设计 等等...项目地址：https://www.oschina.net/p/jeecg-boot &lt;/div&gt; &lt;div&gt;  &lt;br /&gt;&lt;/div&gt; &lt;div&gt;    &lt;strong&gt;7、&lt;/strong&gt;    &lt;strong&gt;JEPaaS 低代码快速开发平台&lt;/strong&gt;    &lt;img&gt;&lt;/img&gt;许可证：AGPL
开发语言：Java
官网：https://www.jepaas.com/JEPaaS 是一款国内实用型低代码快速开发平台，11 年技术沉淀，百余人开发团队不断维护升级，是国内中大型企业信息化御用平台。可视化的开发环境，低代码拖拽式配置开发，操作极其简单，可以大幅度帮助企业缩减人力和时间成本。支持工作流、IM 即时通讯、bi 图表报表、APP 开发、对接微信、钉钉…… 是国内老牌靠谱开发平台。    &lt;br /&gt;    &lt;img&gt;&lt;/img&gt;项目地址：https://www.oschina.net/p/jepaas &lt;/div&gt; &lt;div&gt;  &lt;br /&gt;&lt;/div&gt; &lt;div&gt;    &lt;strong&gt;8、&lt;/strong&gt;    &lt;strong&gt;Metabase 公司团队数据分析工具&lt;/strong&gt;    &lt;img&gt;&lt;/img&gt;许可证：AGPL
开发语言：Clojure、JavaScript、TypeScript
官网：https://www.metabase.com/Metabase 是一个简单、开源的方式，通过给公司成员提问，从得到的数据中进行分析、学习。Metabase 是一个无代码和低代码的开源 (Libre) 项目，它消除了从数据库中获取有洞察力的数据的所有麻烦。它不需要处理 SQL 代码甚至不需要知道任何 SQL 就可以完成很多工作。Metabase 是一个开源的面向数据的可定制仪表板，支持广泛的数据库后端，如 MongoDB、MySQL、PostgreSQL、SQL Server、Oracle 等。它提供了一个用于管理数据库记录、操作数据、操作记录的可视化方法、支持连接、多重聚合、高级过滤和全文搜索的层。它是在几分钟内为企业创建具有高生产力和可用性的高效数据库就绪仪表板的终极解决方案。    &lt;br /&gt;    &lt;img&gt;&lt;/img&gt;项目地址：https://www.oschina.net/p/metabase &lt;/div&gt; &lt;div&gt;  &lt;br /&gt;&lt;/div&gt; &lt;div&gt;    &lt;strong&gt;9、&lt;/strong&gt;    &lt;strong&gt;OpenXava Java 快速 Web 开发套件&lt;/strong&gt;许可证：LGPL
开发语言：Java
官网：https://www.openxava.org/OpenXava 是一个低代码应用程序构建平台，主要关注生产力、简单性和可用性。作为一个使用 Java 技术构建的跨平台系统，它运行在 Linux 和 Windows 服务器上。它可能看起来像一个遗留系统（stated 2005），但它仍然是许多企业的首选。OpenXava 确保了高生产力、较短的功能学习曲线、大量的企业功能以及完整的移动和平板电脑响应式布局。OpenXava 是一个免费的开源社区版，但企业可以购买不同的额外功能版本。    &lt;img&gt;&lt;/img&gt;项目地址：https://www.oschina.net/p/openxava &lt;/div&gt; &lt;div&gt;  &lt;br /&gt;&lt;/div&gt; &lt;div&gt;    &lt;strong&gt;10、&lt;/strong&gt;    &lt;strong&gt;Saltcorn 无代码数据库管理器 Web 应用程序&lt;/strong&gt;    &lt;img&gt;&lt;/img&gt;许可证：MIT
开发语言：Python、JavaScript
官网：https://saltcorn.com/Saltcorn 是一个无代码数据库管理器 Web 应用程序。它是一个完整的端到端解决方案，适用于你的应用程序的前端、后端和数据库，它以直观的点选、拖放用户界面管理你的应用程序生命周期的构建和托管阶段。它配备了一个引人注目的仪表板、丰富的生态系统和视图构建器以及可主题化的界面。几乎没有编码经验的用户可以在几分钟内构建一个丰富的交互式数据库应用程序。公司也可以使用它来创建日常使用的工具并即时重新塑造它们。Saltcorn 有一个令人印象深刻的示例应用程序列表，其中包括：博客、地址簿、项目管理系统、问题跟踪器、wiki、团队管理等。    &lt;img&gt;&lt;/img&gt;项目地址：https://www.oschina.net/p/saltcorn &lt;/div&gt; &lt;div&gt;  &lt;br /&gt;&lt;/div&gt; &lt;div&gt;    &lt;strong&gt;11、&lt;/strong&gt;    &lt;strong&gt;Skyve 业务软件构建平台&lt;/strong&gt;    &lt;img&gt;&lt;/img&gt;许可证：LGPL
开发语言：Java、JavaScript、TypeScript
官网：https://skyve.org/Skyve 是一个开源的业务软件构建平台。它支持无代码和低代码的快速应用开发。支持不同的数据库引擎：MySQL、SQL 服务器和 H2 数据库引擎。其开发人员目前正在努力支持 PostgreSQL 和 Oracle。Skyve 提供了丰富的 API 集，以及低代码开发应用构建向导。项目地址：https://www.oschina.net/p/skyve &lt;/div&gt; &lt;div&gt;  &lt;br /&gt;&lt;/div&gt; &lt;div&gt;    &lt;strong&gt;12、&lt;/strong&gt;    &lt;strong&gt;ToolJet 低代码框架&lt;/strong&gt;    &lt;img&gt;&lt;/img&gt;许可证：GPL-3.0
开发语言：JavaScript、TypeScript
官网：https://www.tooljet.com/ToolJet 是一个开源的低代码框架，无需工程团队付出太多努力即可快速构建和部署内部工具。你可以连接到你的数据源，例如数据库（如 PostgreSQL、MongoDB、Elasticsearch 等）、API 端点（ToolJet 支持导入 OpenAPI 规范和 OAuth2 授权）和外部服务（如 Stripe、Slack、Google Sheets、Airtable）并使用预先构建的 UI 小部件来构建内部工具。    &lt;img&gt;&lt;/img&gt;项目地址：https://www.oschina.net/p/tooljet    &lt;hr&gt;&lt;/hr&gt;    &lt;br /&gt;本文所述软件已收录至 Awesome 软件集锦：https://www.oschina.net/project/awesome?columnId=40    &lt;p&gt;      &lt;br /&gt;&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;       &lt;a href="https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzA4OTI5NjUwOA==&amp;action=getalbum&amp;album_id=2461349039221817346#wechat_redirect" target="_blank"&gt;往期查看&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;      &lt;br /&gt;往期推荐&lt;/p&gt;    &lt;br /&gt;    &lt;p&gt;      &lt;br /&gt;&lt;/p&gt;    &lt;h1&gt;      &lt;a href="http://mp.weixin.qq.com/s?__biz=MjM5NzM0MjcyMQ==&amp;mid=2650171362&amp;idx=1&amp;sn=a57e4f548fe35368c1717050f42f3ebb&amp;chksm=bed9bc8c89ae359aee9ea69d0bc7cac81e97e65cf3c627e0fa0b6996bfcb8de93b5d6c217914&amp;scene=21#wechat_redirect" target="_blank"&gt;macOS占比超Linux&lt;/a&gt;      &lt;br /&gt;&lt;/h1&gt;    &lt;h1&gt;      &lt;a href="http://mp.weixin.qq.com/s?__biz=MjM5NzM0MjcyMQ==&amp;mid=2650171320&amp;idx=1&amp;sn=94ccf5e5f01c538f7255682dea76a5d4&amp;chksm=bed9bcd689ae35c0039908534b80b6caad8b07c1603c57f4a397fee0b599c4cf75db8818249e&amp;scene=21#wechat_redirect" target="_blank"&gt;Shopify开发团队放弃Ruby，改用Node重写CLI工具&lt;/a&gt;&lt;/h1&gt;    &lt;a href="http://mp.weixin.qq.com/s?__biz=MjM5NzM0MjcyMQ==&amp;mid=2650171349&amp;idx=1&amp;sn=62ad28a2bce4f5f3a0c1a7fa2d44f250&amp;chksm=bed9bcbb89ae35addd93c1ecba6562d523a39fd10cf128bdbefaa9a472ffa25c488bd99d88fc&amp;scene=21#wechat_redirect" target="_blank"&gt;庆祝40周年，CHM公开Apple Lisa源代码&lt;/a&gt;    &lt;p&gt;      &lt;br /&gt;&lt;/p&gt;    &lt;hr&gt;&lt;/hr&gt;    &lt;br /&gt;    &lt;p&gt;这里有最新开源资讯、软件更新、技术干货等内容&lt;/p&gt;    &lt;p&gt;点这里 ↓↓↓ 记得 关注✔ 标星⭐ 哦&lt;/p&gt;    &lt;p&gt;      &lt;br /&gt;&lt;/p&gt;    &lt;p&gt;&lt;/p&gt;&lt;/div&gt;
    &lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category />
      <guid isPermaLink="true">https://itindex.net/detail/62599-%E5%BC%80%E6%BA%90-%E4%BB%A3%E7%A0%81-%E5%BC%80%E5%8F%91</guid>
      <pubDate>Mon, 30 Jan 2023 09:13:37 CST</pubDate>
    </item>
    <item>
      <title>够快！爆火的ChatGPT等价开源项目来了，网友：我担心跑不起来</title>
      <link>https://itindex.net/detail/62569-chatgpt-%E5%BC%80%E6%BA%90-%E9%A1%B9%E7%9B%AE</link>
      <description>&lt;blockquote data-author-name="" data-content-utf8-length="134" data-source-title="" data-type="2" data-url=""&gt;&lt;section&gt;&lt;section&gt;感兴趣的小伙伴不妨一试。&lt;/section&gt;&lt;/section&gt;&lt;/blockquote&gt;&lt;section&gt;最近一段时间，由 OpenAI 开发的 AI &lt;mark data-type=tech_tasks data-id=b0ce5f76-6a3f-4248-8447-6215a4e416e2&gt;聊天机器人&lt;/mark&gt;程序 ChatGPT 横扫各大 AI 社区，大家对它的热情只增不减，不断挖掘其潜力。&lt;/section&gt;&lt;section&gt;&lt;br&gt;&lt;/section&gt;&lt;section&gt;有些研究者坐不住了，开始琢磨怎样才能开发个等同于 ChatGPT 的开源软件。还没有行动的小伙伴这次参考示例来了，下面我们将要介绍的这个项目（PaLM + RLHF）就实现了这样的功能。&lt;/section&gt;&lt;p&gt;&lt;img data-ratio="0.37890625" data-s="300,640" data-src="https://mmbiz.qpic.cn/mmbiz_png/KmXPKA19gW9JLVTWMa7GblvydgOCQIJypTufT8RBsCTVdzY6ZeibwJtia7DOlF40B0F3ibibz2RvYTVUJSIg1nkadQ/640?wx_fmt=png" data-type="png" data-w="1280" data-index="1" data-origin-display="" alt="图片" src="https://image.jiqizhixin.com/uploads/editor/063d6b52-a856-4669-8ab2-53034ed0982c/640.png" data-fail="0" class="fr-fic fr-dib" style="width: 700%;"&gt;&lt;/p&gt;&lt;section&gt;项目地址：https://github.com/lucidrains/PaLM-rlhf-pytorch&lt;/section&gt;&lt;section&gt;&lt;br&gt;&lt;/section&gt;&lt;section&gt;该项目是在 PaLM 架构之上实施 RLHF（人类反馈&lt;mark data-type=tech_methods data-id=ee1a8f69-3170-4ddf-b2b6-47d91c844425&gt;强化学习&lt;/mark&gt;）。基本上等同于 ChatGPT，区别是使用了 PaLM。PaLM 是在谷歌的通用 AI 架构「Pathways」上训练而成的具有 5400 亿&lt;mark data-type=concepts data-id=2e982b73-88e2-41e8-a430-f7ae5a9af4bf&gt;参数&lt;/mark&gt;的大型&lt;mark data-type=tech_tasks data-id=fee178e8-ee20-42fc-8f8f-1d41c1f34e8f&gt;语言模型&lt;/mark&gt;。而 RLHF，是 ChatGPT 在 GPT 3.5 系列模型的基础上，引入「人工标注数据 + &lt;mark data-type=tech_methods data-id=ee1a8f69-3170-4ddf-b2b6-47d91c844425&gt;强化学习&lt;/mark&gt;」（RLHF）来不断微调预训练&lt;mark data-type=tech_tasks data-id=fee178e8-ee20-42fc-8f8f-1d41c1f34e8f&gt;语言模型&lt;/mark&gt;，旨在让大型&lt;mark data-type=tech_tasks data-id=fee178e8-ee20-42fc-8f8f-1d41c1f34e8f&gt;语言模型&lt;/mark&gt;（LLM）学会理解人类的命令，并学会根据给定的 prompt 给出最优的答案。&lt;/section&gt;&lt;section&gt;&lt;br&gt;&lt;/section&gt;&lt;section&gt;想要了解 RLHF 更多内容，可以参考：https://huggingface.co/blog/rlhf&lt;/section&gt;&lt;section&gt;&lt;br&gt;&lt;/section&gt;&lt;section&gt;正如网友所说的：「在 AI 领域中，每有一次专项突破，开发者们很快就会复现出一个开源版本。」&lt;/section&gt;&lt;p&gt;&lt;img data-ratio="0.21711131554737811" data-s="300,640" data-src="https://mmbiz.qpic.cn/mmbiz_png/KmXPKA19gW9JLVTWMa7GblvydgOCQIJy0EnEZUgialdNINYXODlw68sDUy1cibpxksBHAyZUdjibvc4vmMVc9Zf6g/640?wx_fmt=png" data-type="png" data-w="1087" data-index="2" data-origin-display="" alt="图片" src="https://image.jiqizhixin.com/uploads/editor/76d48fe7-f66e-430c-a4e6-7f3f2e5ae01f/640.png" data-fail="0" class="fr-fic fr-dib" style="width: 700%;"&gt;&lt;/p&gt;&lt;section&gt;&lt;br&gt;&lt;/section&gt;&lt;p&gt;不过该项目目前只包含训练架构和代码，没有预先训练好的&lt;mark data-type=concepts data-id=149a12cf-10c2-4555-9899-cc6dee319ef5&gt;权重&lt;/mark&gt;。在使用说明上，文档也显示必须先要训练 PaLM。&lt;/p&gt;&lt;section&gt;&lt;img data-ratio="0.32600157109190886" data-s="300,640" data-src="https://mmbiz.qpic.cn/mmbiz_png/KmXPKA19gW9JLVTWMa7GblvydgOCQIJytI6D8Q8vHeQCDia1d2ECZVCAiaZFlhf5awOiaH9AqKFGX0WvJNOsErmLQ/640?wx_fmt=png" data-type="png" data-w="1273" data-index="3" data-origin-display="" alt="图片" src="https://image.jiqizhixin.com/uploads/editor/f3055613-21a1-4cf6-9880-51141ce069b5/640.png" data-fail="0" class="fr-fic fr-dib" style="width: 700%;"&gt;&lt;/section&gt;&lt;section&gt;对此也有网友表示担心，表示：这不是一个开箱即用的项目，还只是一个架构，就像 shell 一样，需要昂贵的开销才能训练完成，没有机构能够像谷歌那样训练 PaLM。&lt;/section&gt;&lt;p&gt;&lt;img data-ratio="0.29011194029850745" data-s="300,640" data-src="https://mmbiz.qpic.cn/mmbiz_png/KmXPKA19gW9JLVTWMa7GblvydgOCQIJymibTnPLyHYwlINaAVMdNUwjEVIjiaicN0p51dnvhgZXqctgbYuACqGCHg/640?wx_fmt=png" data-type="png" data-w="1072" data-index="4" data-origin-display="" alt="图片" src="https://image.jiqizhixin.com/uploads/editor/7f5fb897-af4a-4de0-9849-e9e6ab111d9f/640.png" data-fail="0" class="fr-fic fr-dib" style="width: 700%;"&gt;&lt;/p&gt;&lt;section&gt;还有网友表示：「没有预训练&lt;mark data-type=concepts data-id=149a12cf-10c2-4555-9899-cc6dee319ef5&gt;权重&lt;/mark&gt;是非常糟糕的，官方至少需要释放 50% 的稀疏&lt;mark data-type=concepts data-id=149a12cf-10c2-4555-9899-cc6dee319ef5&gt;权重&lt;/mark&gt;，剩下的让开发者自己训练，才是最好的选择。」&lt;/section&gt;&lt;p&gt;&lt;img data-ratio="0.24747010119595217" data-s="300,640" data-src="https://mmbiz.qpic.cn/mmbiz_png/KmXPKA19gW9JLVTWMa7GblvydgOCQIJyUW2UP1ExulYBgzzlHgymTVnXNyXQhoyEDh4ziae8ELibQQDgeU7XJ80Q/640?wx_fmt=png" data-type="png" data-w="1087" data-index="5" data-origin-display="" alt="图片" src="https://image.jiqizhixin.com/uploads/editor/d78c2670-919c-4246-8e94-f83bc8e9deb3/640.png" data-fail="0" class="fr-fic fr-dib" style="width: 700%;"&gt;&lt;/p&gt;&lt;section&gt;不过也有网友表示自己会去尝试：&lt;/section&gt;&lt;p&gt;&lt;img data-ratio="0.1993704092339979" data-s="300,640" data-src="https://mmbiz.qpic.cn/mmbiz_png/KmXPKA19gW9JLVTWMa7GblvydgOCQIJypcoFhZD1xyxBRxJicWrJCgajDhjMVkKdSFmS2LTpweBkNbibujoP1CTQ/640?wx_fmt=png" data-type="png" data-w="953" data-index="6" data-origin-display="" alt="图片" src="https://image.jiqizhixin.com/uploads/editor/33d63b2c-e1b8-4cea-b68f-7bdbc1b003ff/640.png" data-fail="0" class="fr-fic fr-dib" style="width: 700%;"&gt;&lt;/p&gt;&lt;section&gt;下面我们来看看这个项目是如何运行的。&lt;/section&gt;&lt;section&gt;&lt;br&gt;&lt;/section&gt;&lt;section&gt;&lt;strong&gt;安装&lt;/strong&gt;&lt;/section&gt;&lt;section&gt;&lt;pre data-lang="shell"&gt;&lt;code&gt;$ pip install palm-rlhf-pytorch&lt;/code&gt;&lt;/pre&gt;&lt;/section&gt;&lt;section&gt;&lt;strong&gt;用法&lt;/strong&gt;&lt;/section&gt;&lt;section&gt;&lt;br&gt;&lt;/section&gt;&lt;section&gt;首先训练 PaLM，就像任何其他自回归 transformer 一样。&lt;/section&gt;&lt;section&gt;&lt;p&gt;&lt;img src="https://image.jiqizhixin.com/uploads/editor/2ea103a5-b56f-4248-9dbe-31fe8750c059/1672301729161.png" style="width: 700%;" class="fr-fic fr-dib"&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;接着使用精选的人类反馈来训练奖励模型。在原始论文中，在没有出现&lt;mark data-type=concepts data-id=af836eef-be90-4143-a022-46fae3904f0e&gt;过拟合&lt;/mark&gt;的情况下，无法从预训练 transformer 中获得微调的奖励模型。项目作者则提供了使用 LoRA 进行微调的选项。&lt;/section&gt;&lt;section&gt;&lt;pre&gt;&lt;code&gt;import torch
from palm_rlhf_pytorch import PaLM, RewardModel
palm = PaLM(
    num_tokens = 20000,
    dim = 512,
    depth = 12,
    causal = False
)
reward_model = RewardModel(
    palm,
    num_binned_output = 5 # say rating from 1 to 5
).cuda()
# mock data
seq = torch.randint(0, 20000, (1, 1024)).cuda()prompt_mask = torch.zeros(1, 1024).bool().cuda() # which part of the sequence is prompt, which part is response
labels = torch.randint(0, 5, (1,)).cuda()
# train
loss = reward_model(seq, prompt_mask = prompt_mask, labels = labels)loss.backward()
# after much training
reward = reward_model(seq, prompt_mask = prompt_mask)
&lt;/code&gt;&lt;/pre&gt;&lt;/section&gt;&lt;p&gt;最后将 transformer 和奖励模型传递给 RLHFTrainer。&lt;/p&gt;&lt;pre&gt;&lt;code&gt;import torch
from palm_rlhf_pytorch import PaLM, RewardModel, RLHFTrainer
# load your pretrained palm
palm = PaLM(
    num_tokens = 20000,
    dim = 512,
    depth = 12
).cuda()
palm.load(&amp;#39;./path/to/pretrained/palm.pt&amp;#39;)
# load your pretrained reward model
reward_model = RewardModel(
    palm,
    num_binned_output = 5
).cuda()
reward_model.load(&amp;#39;./path/to/pretrained/reward_model.pt&amp;#39;)
# ready your list of prompts for reinforcement learning
prompts = torch.randint(0, 256, (50000, 512)).cuda() # 50k prompts
# pass it all to the trainer and train
trainer = RLHFTrainer(
    palm = palm,
    reward_model = reward_model,
    prompt_token_ids = prompts
)
trainer.train(num_episodes = 50000)
# then, if it succeeded...
# generate say 10 samples and use the reward model to return the best one
answer = trainer.generate(2048, prompt = prompts[0], num_samples = 10) # (&amp;lt;= 2048,)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;更多细节内容请参阅原项目。&lt;/p&gt;&lt;section&gt;&lt;em&gt;参考链接：https://twitter.com/rasbt/status/1608133663937495041&lt;/em&gt;&lt;/section&gt;&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category />
      <guid isPermaLink="true">https://itindex.net/detail/62569-chatgpt-%E5%BC%80%E6%BA%90-%E9%A1%B9%E7%9B%AE</guid>
      <pubDate>Thu, 29 Dec 2022 16:22:12 CST</pubDate>
    </item>
    <item>
      <title>如何轻松做数据治理？开源技术栈告诉你答案</title>
      <link>https://itindex.net/detail/62561-%E6%95%B0%E6%8D%AE-%E6%B2%BB%E7%90%86-%E5%BC%80%E6%BA%90</link>
      <description>&lt;div&gt;  &lt;p&gt;   &lt;img alt="data-lineage" height="293" src="https://nebula-website-cn.oss-cn-hangzhou.aliyuncs.com/nebula-blog/data-lineage/0.png" width="690"&gt;&lt;/img&gt;&lt;/p&gt;  &lt;p&gt;搭建一套数据治理体系耗时耗力，但或许我们没有必要从头开始搞自己的数据血缘项目。本文分享如何用开源、现代的 DataOps、ETL、Dashboard、元数据、数据血缘管理系统构建大数据治理基础设施。&lt;/p&gt;  &lt;h2&gt;   &lt;a href="https://itindex.net/relian#h-1" name="h-1"&gt;&lt;/a&gt;元数据治理系统&lt;/h2&gt;  &lt;p&gt;   &lt;strong&gt;元数据治理&lt;/strong&gt;系统是一个提供了所有数据在哪、格式化方式、生成、转换、依赖、呈现和所属的   &lt;strong&gt;一站式视图&lt;/strong&gt;。&lt;/p&gt;  &lt;p&gt;元数据治理系统是所有数据仓库、数据库、表、仪表板、ETL 作业等的   &lt;strong&gt;目录接口&lt;/strong&gt;（catalog），有了它，我们就不用在群里喊“大家好，我可以更改这个表的 schema 吗？”、 “请问谁知道我如何找到 table-view-foo-bar 的原始数据？”…一个成熟的数据治理方案中的元数据治理系统，对数据团队来说非常必要。&lt;/p&gt;  &lt;p&gt;而   &lt;strong&gt;数据血缘&lt;/strong&gt;则是元数据治理系统众多需要管理的元数据之一，例如，某些 Dashboard 是某一个 Table View 的下游，而这个 Table View 又是从另外两个上游表 JOIN 而来。显然，应该清晰地掌握、管理这些信息，去构建一个可信、可控的系统和数据质量控制体系。&lt;/p&gt;  &lt;h2&gt;   &lt;a href="https://itindex.net/relian#h-2" name="h-2"&gt;&lt;/a&gt;数据治理的可行方案&lt;/h2&gt;  &lt;h3&gt;   &lt;a href="https://itindex.net/relian#h-3" name="h-3"&gt;&lt;/a&gt;数据治理方案设计&lt;/h3&gt;  &lt;p&gt;元数据和数据血缘本质上非常适合采用图数据建模、图数据库。因为数据治理涉及的典型查询便是面向图关系的查询，像“查找指定组件（即表）的所有 n 度（深度）的数据血缘”就是图查询语句   &lt;code&gt;FIND ALL PATH&lt;/code&gt;跑起来的事。从日常大家在   &lt;a href="http://c.nxw.so/aMIsW"&gt;论坛&lt;/a&gt;、微信群里讨论的查询和图建模来看，NebulaGraph 社区很多人在从零开始搭建数据血缘系统，而这些工作看起来大多是在重复造轮子，而且还是不容易造的轮子。&lt;/p&gt;  &lt;p&gt;既然如此，前人种树后人乘凉，这里我决定搭建一个完备、端到端（不只有元数据管理）的数据系统，供大家参考解决数据血缘、数据治理问题。这个套数据系统会采用市面上优秀的开源项目，而图数据库这块还是采用大家的老朋友——NebulaGraph。希望对大家能有所启发，在此基础之上拥有一个相对完善的图模型，以及设计精巧、开箱即用的元数据治理系统。&lt;/p&gt;  &lt;p&gt;下面，来看看元数据治理系统的轮子都需要哪些功能组件：&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;元数据抽取    &lt;ul&gt;     &lt;li&gt;这部分需要从不同的数据栈拉/推数据，像是从数据库、数仓、Dashboard，甚至是 ETL Pipeline 和应用、服务中搞数据。&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;   &lt;li&gt;元数据存储    &lt;ul&gt;     &lt;li&gt;可以存在数据库、图数据库里，甚至存成超大的 JSON manifest 文件都行&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;   &lt;li&gt;元数据目录接口系统 Catalog    &lt;ul&gt;     &lt;li&gt;提供 API / GUI 来读写元数据和数据血缘系统&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;p&gt;下图是整个方案的简单示意图：&lt;/p&gt;  &lt;p&gt;其中，上面的虚线框是元数据的来源与导入、下面的虚线框是元数据的存储与展示、发现。&lt;/p&gt;  &lt;p&gt;   &lt;img alt="diagram-of-ref-project" height="499" src="https://nebula-website-cn.oss-cn-hangzhou.aliyuncs.com/nebula-blog/data-lineage/1.svg" width="315"&gt;&lt;/img&gt;&lt;/p&gt;  &lt;h3&gt;   &lt;a href="https://itindex.net/relian#h-4" name="h-4"&gt;&lt;/a&gt;开源技术栈&lt;/h3&gt;  &lt;p&gt;下面，介绍下数据治理系统的每个部分。&lt;/p&gt;  &lt;h4&gt;   &lt;a href="https://itindex.net/relian#h-5" name="h-5"&gt;&lt;/a&gt;数据库和数仓&lt;/h4&gt;  &lt;p&gt;为了处理和使用原始和中间数据，这里一定涉及至少一个数据库或者数仓。它可以是 Hive、Apache Delta、TiDB、Cassandra、MySQL 或 Postgres。&lt;/p&gt;  &lt;p&gt;在这个参考项目中，我们选一个简单、流行的 Postgres。&lt;/p&gt;  &lt;p&gt;✓ 数据仓库：Postgres&lt;/p&gt;  &lt;h4&gt;   &lt;a href="https://itindex.net/relian#dataops-6" name="dataops-6"&gt;&lt;/a&gt;数据运维 DataOps&lt;/h4&gt;  &lt;p&gt;我们应该有某种 DataOps 的方案，让 Pipeline 和环境具有可重复性、可测试性和版本控制性。&lt;/p&gt;  &lt;p&gt;在这里，我们使用了 GitLab 创建的   &lt;a href="https://gitlab.com/meltano/meltano"&gt;Meltano&lt;/a&gt;。&lt;/p&gt;  &lt;p&gt;Meltano 是一个 just-work 的 DataOps 平台，它可以用巧妙且优雅的方式将   &lt;a href="https://singer.io/"&gt;Singer&lt;/a&gt;作为 EL 和   &lt;a href="https://getdbt.com/"&gt;dbt&lt;/a&gt;作为 T 连接起来。此外，它还连接到其他一些 dataInfra 实用程序，例如 Apache Superset 和 Apache Airflow 等。&lt;/p&gt;  &lt;p&gt;至此，我们又纳入了一个成员：&lt;/p&gt;  &lt;p&gt;✓ GitOps：Meltano   &lt;a href="https://gitlab.com/meltano/meltano"&gt;https://gitlab.com/meltano/meltano&lt;/a&gt;&lt;/p&gt;  &lt;h4&gt;   &lt;a href="https://itindex.net/relian#etl-7" name="etl-7"&gt;&lt;/a&gt;ETL 工具&lt;/h4&gt;  &lt;p&gt;上面我们提到过组合   &lt;a href="https://singer.io/"&gt;Singer&lt;/a&gt;与 Meltano 将来自许多不同数据源的数据 E（提取）和 L（加载）数据目标，并使用   &lt;a href="https://getdbt.com/"&gt;dbt&lt;/a&gt;作为 Transform 的平台。于是我们得到：&lt;/p&gt;  &lt;p&gt;✓ EL：Singer   &lt;br /&gt;✓ T: dbt&lt;/p&gt;  &lt;h4&gt;   &lt;a href="https://itindex.net/relian#h-8" name="h-8"&gt;&lt;/a&gt;数据可视化&lt;/h4&gt;  &lt;p&gt;在数据之上创建 Dashboard、图表和表格得到数据的洞察是很符合直觉的，类似大数据之上的 Excel 图标功能。&lt;/p&gt;  &lt;p&gt;   &lt;img alt="" height="414" src="https://nebula-website-cn.oss-cn-hangzhou.aliyuncs.com/nebula-blog/data-lineage/2.png" width="690"&gt;&lt;/img&gt;&lt;/p&gt;  &lt;p&gt;   &lt;a href="https://superset.apache.org/"&gt;Apache Superset&lt;/a&gt;是我很喜欢的开源数据可视化项目，我准备用它来作为被治理管理的目标之一。同时，还会利用它实现可视化功能来完成元数据洞察。于是，&lt;/p&gt;  &lt;p&gt;✓ Dashboard：Apache Superset&lt;/p&gt;  &lt;h4&gt;   &lt;a href="https://itindex.net/relian#dag-job-orchestration-9" name="dag-job-orchestration-9"&gt;&lt;/a&gt;任务编排（DAG Job Orchestration）&lt;/h4&gt;  &lt;p&gt;在大多数情况下，我们的 DataOps 作业、任务会演变成需要编排系统的规模，我们可以用   &lt;a href="https://airflow.apache.org/"&gt;Apache Airflow&lt;/a&gt;来负责这一块。&lt;/p&gt;  &lt;p&gt;✓ DAG：Apache Airflow   &lt;a href="https://airflow.apache.org/"&gt;https://airflow.apache.org/&lt;/a&gt;&lt;/p&gt;  &lt;h4&gt;   &lt;a href="https://itindex.net/relian#h-10" name="h-10"&gt;&lt;/a&gt;元数据治理&lt;/h4&gt;  &lt;p&gt;随着越来越多的组件和数据被引入数据基础设施，在数据库、表、数据建模（schema）、Dashboard、DAG（编排系统中的有向无环图）、应用与服务的各个生命周期阶段中都将存着海量的元数据，需要对它们的管理员和团队进行协同管理、连接和发现。&lt;/p&gt;  &lt;p&gt;   &lt;a href="https://www.amundsen.io/amundsen/"&gt;Linux Foundation Amundsen&lt;/a&gt;是解决该问题的最佳项目之一。 Amundsen 用图数据库为事实源（single source of truth）以加速多跳查询，Elasticsearch 为全文搜索引擎。它在顺滑地处理所有元数据及其血缘之余，还提供了优雅的 UI 和 API。 Amundsen 支持多种图数据库为后端，这里咱们用   &lt;a href="https://nebula-graph.com.cn"&gt;NebulaGraph&lt;/a&gt;。&lt;/p&gt;  &lt;p&gt;   &lt;img alt="" height="499" src="https://nebula-website-cn.oss-cn-hangzhou.aliyuncs.com/nebula-blog/data-lineage/3.png" width="581"&gt;&lt;/img&gt;&lt;/p&gt;  &lt;p&gt;现在的技术栈：&lt;/p&gt;  &lt;p&gt;✓ 数据发现：Linux Foundation Amundsen   &lt;br /&gt;✓ 全文搜索：Elasticsearch   &lt;br /&gt;✓ 图数据库：NebulaGraph&lt;/p&gt;  &lt;p&gt;好的，所有组件都齐正了，开始组装它们吧。&lt;/p&gt;  &lt;h2&gt;   &lt;a href="https://itindex.net/relian#h-11" name="h-11"&gt;&lt;/a&gt;环境搭建与各组件初识&lt;/h2&gt;  &lt;p&gt;本次实践的项目方案已开源，你可以访问   &lt;a href="https://github.com/wey-gu/data-lineage-ref-solution"&gt;https://github.com/wey-gu/data-lineage-ref-solution&lt;/a&gt;来获得对应的代码。&lt;/p&gt;  &lt;p&gt;整个实践过程，我遵循了尽量干净、鼓励共建的原则。项目预设在一个 unix-like 系统上运行，且联网和装有 Docker-Compose。&lt;/p&gt;  &lt;p&gt;这里，我将在 Ubuntu 20.04 LTS X86_64 上运行它，当然在其他发行版或 Linux 版本上应该也没有问题。&lt;/p&gt;  &lt;h3&gt;   &lt;a href="https://itindex.net/relian#h-12" name="h-12"&gt;&lt;/a&gt;运行一个数仓、数据库&lt;/h3&gt;  &lt;p&gt;首先，安装 Postgres 作为我们的数仓。&lt;/p&gt;  &lt;p&gt;这个单行命令会创建一个使用 Docker 在后台运行的 Postgres，进程关闭之后容器不会残留而是被清理掉（因为参数   &lt;code&gt;--rm&lt;/code&gt;）。&lt;/p&gt;  &lt;pre&gt;   &lt;code&gt;docker run --rm --name postgres \
    -e POSTGRES_PASSWORD=lineage_ref \
    -e POSTGRES_USER=lineage_ref \
    -e POSTGRES_DB=warehouse -d \
    -p 5432:5432 postgres&lt;/code&gt;&lt;/pre&gt;  &lt;p&gt;我们可以用 Postgres CLI 或 GUI 客户端来验证命令是否执行成功。&lt;/p&gt;  &lt;h3&gt;   &lt;a href="https://itindex.net/relian#dataops-13" name="dataops-13"&gt;&lt;/a&gt;DataOps 工具链部署&lt;/h3&gt;  &lt;p&gt;接下来，安装有机结合了 Singer 和 dbt 的 Meltano。&lt;/p&gt;  &lt;p&gt;Meltano 帮助我们管理 ETL 工具（作为插件）及其所有配置和 pipeline。这些元信息位于 Meltano 配置及其系统数据库中，其中配置是基于文件的（可以使用 GitOps 管理），它的默认系统数据库是 SQLite。&lt;/p&gt;  &lt;h4&gt;   &lt;a href="https://itindex.net/relian#meltano-14" name="meltano-14"&gt;&lt;/a&gt;安装 Meltano&lt;/h4&gt;  &lt;p&gt;使用 Meltano 的工作流是启动一个“meltano 项目”并开始将 E、L 和 T 添加到配置文件中。Meltano 项目的启动只需要一个 CLI 命令   &lt;code&gt;meltano init yourprojectname&lt;/code&gt;。不过，在那之前，先用 Python 的包管理器 pip 或者 Docker 镜像安装 Meltano，像我示范的这样：&lt;/p&gt;  &lt;p&gt;在 Python 虚拟环境中使用 pip 安装 Meltano：&lt;/p&gt;  &lt;pre&gt;   &lt;code&gt;mkdir .venv
# example in a debian flavor Linux distro
sudo apt-get install python3-dev python3-pip python3-venv python3-wheel -y
python3 -m venv .venv/meltano
source .venv/meltano/bin/activate
python3 -m pip install wheel
python3 -m pip install meltano

# init a project
mkdir meltano_projects &amp;amp;&amp;amp; cd meltano_projects
# replace &amp;lt;yourprojectname&amp;gt; with your own one
touch .env
meltano init &amp;lt;yourprojectname&amp;gt;&lt;/code&gt;&lt;/pre&gt;  &lt;p&gt;或者，用 Docker 容器安装 Meltano：&lt;/p&gt;  &lt;pre&gt;   &lt;code&gt;docker pull meltano/meltano:latest
docker run --rm meltano/meltano --version

# init a project
mkdir meltano_projects &amp;amp;&amp;amp; cd meltano_projects

# replace &amp;lt;yourprojectname&amp;gt; with your own one
touch .env
docker run --rm -v &amp;quot;$(pwd)&amp;quot;:/projects \
             -w /projects --env-file .env \
             meltano/meltano init &amp;lt;yourprojectname&amp;gt;&lt;/code&gt;&lt;/pre&gt;  &lt;p&gt;除了知晓   &lt;code&gt;meltano init&lt;/code&gt;之外，最好掌握 Meltano 部分命令，例如   &lt;code&gt;meltano etl&lt;/code&gt;表示 ETL 的执行，   &lt;code&gt;meltano invoke &amp;lt;plugin&amp;gt;&lt;/code&gt;来调用插件命令。详细可以参考它的速查表   &lt;a href="https://docs.meltano.com/reference/command-line-interface"&gt;https://docs.meltano.com/reference/command-line-interface&lt;/a&gt;。&lt;/p&gt;  &lt;h4&gt;   &lt;a href="https://itindex.net/relian#meltano-gui-15" name="meltano-gui-15"&gt;&lt;/a&gt;Meltano GUI 界面&lt;/h4&gt;  &lt;p&gt;Meltano 自带一个基于 Web 的 UI，执行   &lt;code&gt;ui&lt;/code&gt;子命令就能启动它：&lt;/p&gt;  &lt;pre&gt;   &lt;code&gt;meltano ui&lt;/code&gt;&lt;/pre&gt;  &lt;p&gt;它默认会跑在   &lt;code&gt;http://localhost:5000&lt;/code&gt;上。&lt;/p&gt;  &lt;p&gt;针对 Docker 的运行环境，在暴露 5000 端口的情况下运行容器即可。由于容器的默认命令已经是   &lt;code&gt;meltano ui&lt;/code&gt;，所以   &lt;code&gt;run&lt;/code&gt;的命令只需：&lt;/p&gt;  &lt;pre&gt;   &lt;code&gt;docker run -v &amp;quot;$(pwd)&amp;quot;:/project \
             -w /project \
             -p 5000:5000 \
             meltano/meltano&lt;/code&gt;&lt;/pre&gt;  &lt;h4&gt;   &lt;a href="https://itindex.net/relian#meltano-16" name="meltano-16"&gt;&lt;/a&gt;Meltano 项目示例&lt;/h4&gt;  &lt;p&gt;GitHub 用户   &lt;a href="https://github.com/pnadolny13"&gt;Pat Nadolny&lt;/a&gt;在开源项目   &lt;a href="https://github.com/pnadolny13/meltano_example_implementations/tree/main/meltano_projects/"&gt;singer_dbt_jaffle&lt;/a&gt;中做了很好的示例。他采用 dbt 的 Meltano 示例数据集，利用 Airflow   &lt;a href="https://github.com/pnadolny13/meltano_example_implementations/tree/main/meltano_projects/dbt_orchestration"&gt;编排 ETL 任务&lt;/a&gt;。&lt;/p&gt;  &lt;p&gt;不只这样，他还有利用 Superset 的例子，见   &lt;a href="https://github.com/pnadolny13/meltano_example_implementations/tree/main/meltano_projects/jaffle_superset"&gt;jaffle_superset&lt;/a&gt;。&lt;/p&gt;  &lt;p&gt;前人种树我们来吃果，按照 Pat Nadolny 的实践，我们可以这样地运行数据管道（pipeline）：&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;    &lt;a href="https://hub.meltano.com/taps/csv"&gt;tap-CSV&lt;/a&gt;（Singer）从 CSV 文件中提取数据&lt;/li&gt;   &lt;li&gt;    &lt;a href="https://hub.meltano.com/targets/postgres"&gt;target-postgres&lt;/a&gt;（Singer） 将数据加载到 Postgres&lt;/li&gt;   &lt;li&gt;    &lt;a href="https://hub.meltano.com/transformers/dbt"&gt;dbt&lt;/a&gt;将数据转换为聚合表或视图&lt;/li&gt;&lt;/ul&gt;  &lt;p&gt;注意，上面我们已经启动了 Postgres，可以跳过容器启动 Postgres 这步。&lt;/p&gt;  &lt;p&gt;操作过程是：&lt;/p&gt;  &lt;pre&gt;   &lt;code&gt;git clone https://github.com/pnadolny13/meltano_example_implementations.git
cd meltano_example_implementations/meltano_projects/singer_dbt_jaffle/

meltano install
touch .env
echo PG_PASSWORD=&amp;quot;lineage_ref&amp;quot; &amp;gt;&amp;gt; .env
echo PG_USERNAME=&amp;quot;lineage_ref&amp;quot; &amp;gt;&amp;gt; .env

# Extract and Load(with Singer)
meltano run tap-csv target-postgres

# Trasnform(with dbt)
meltano run dbt:run

# Generate dbt docs
meltano invoke dbt docs generate

# Serve generated dbt docs
meltano invoke dbt docs to serve

# Then visit http://localhost:8080&lt;/code&gt;&lt;/pre&gt;  &lt;p&gt;现在，我们可以连接到 Postgres 来查看加载和转换后的数据预览。如下所示，截图来自 VS Code 的 SQLTool。&lt;/p&gt;  &lt;p&gt;payments 表里长这样子：&lt;/p&gt;  &lt;p&gt;   &lt;img alt="" height="481" src="https://nebula-website-cn.oss-cn-hangzhou.aliyuncs.com/nebula-blog/data-lineage/4.png" width="690"&gt;&lt;/img&gt;&lt;/p&gt;  &lt;h3&gt;   &lt;a href="https://itindex.net/relian#bi-dashboard-17" name="bi-dashboard-17"&gt;&lt;/a&gt;搭一个 BI Dashboard 系统&lt;/h3&gt;  &lt;p&gt;现在，我们的数据仓库有数据了。接下来，可以试着用下这些数据。&lt;/p&gt;  &lt;p&gt;像仪表盘 Dashbaord 这样的 BI 工具能帮我们从数据中获得有用的洞察。使用可视化工具 Apache Superset 可以很容易地创建和管理这些基于数据源的 Dashboard 和各式各样的图表。&lt;/p&gt;  &lt;p&gt;本章的重点不在于 Apache Superset 本身，所以，咱们还是复用 Pat Nadolny 的   &lt;a href="https://github.com/pnadolny13/meltano_example_implementations/tree/main/meltano_projects/jaffle_superset"&gt;jaffle_superset&lt;/a&gt;例子。&lt;/p&gt;  &lt;h4&gt;   &lt;a href="https://itindex.net/relian#bootstrap-meltano-superset-18" name="bootstrap-meltano-superset-18"&gt;&lt;/a&gt;Bootstrap Meltano 和 Superset&lt;/h4&gt;  &lt;p&gt;创建一个安装了 Meltano 的 Python VENV：&lt;/p&gt;  &lt;pre&gt;   &lt;code&gt;mkdir .venv
python3 -m venv .venv/meltano
source .venv/meltano/bin/activate
python3 -m pip install wheel
python3 -m pip install meltano&lt;/code&gt;&lt;/pre&gt;  &lt;p&gt;参考 Pat 的小抄，做一些细微的调整：&lt;/p&gt;  &lt;p&gt;克隆 repo，进入   &lt;code&gt;jaffle_superset&lt;/code&gt;项目：&lt;/p&gt;  &lt;pre&gt;   &lt;code&gt;git clone https://github.com/pnadolny13/meltano_example_implementations.git
cd meltano_example_implementations/meltano_projects/jaffle_superset/&lt;/code&gt;&lt;/pre&gt;  &lt;p&gt;修改 meltano 配置文件，让 Superset 连接到我们创建的 Postgres：&lt;/p&gt;  &lt;pre&gt;   &lt;code&gt;vim meltano_projects/jaffle_superset/meltano.yml&lt;/code&gt;&lt;/pre&gt;  &lt;p&gt;这里，我将主机名更改为“10.1.1.111”，这是我当前主机的 IP。如果你是 Windows 或者 macOS 上的 Docker Desktop，这里不要修改主机名，否则就要和我一样手动改成实际地址：&lt;/p&gt;  &lt;pre&gt;   &lt;code&gt;--- a/meltano_projects/jaffle_superset/meltano.yml
+++ b/meltano_projects/jaffle_superset/meltano.yml
@@ -71,7 +71,7 @@ plugins:
               A list of database driver dependencies can be found here https://superset.apache.org/docs/databases/installing-database-drivers
     config:
       database_name: my_postgres
-      sqlalchemy_uri: postgresql+psycopg2://${PG_USERNAME}:${PG_PASSWORD}@host.docker.internal:${PG_PORT}/${PG_DATABASE}
+      sqlalchemy_uri: postgresql+psycopg2://${PG_USERNAME}:${PG_PASSWORD}@10.1.1.168:${PG_PORT}/${PG_DATABASE}
       tables:
       - model.my_meltano_project.customers
       - model.my_meltano_project.orders&lt;/code&gt;&lt;/pre&gt;  &lt;p&gt;添加 Postgres 登录的信息到   &lt;code&gt;.env&lt;/code&gt;文件：&lt;/p&gt;  &lt;pre&gt;   &lt;code&gt;echo PG_USERNAME=lineage_ref &amp;gt;&amp;gt; .env
echo PG_PASSWORD=lineage_ref &amp;gt;&amp;gt; .env&lt;/code&gt;&lt;/pre&gt;  &lt;p&gt;安装 Meltano 项目，运行 ETL 任务：&lt;/p&gt;  &lt;pre&gt;   &lt;code&gt;meltano install
meltano run tap-csv target-postgres dbt:run&lt;/code&gt;&lt;/pre&gt;  &lt;p&gt;调用、启动 Superset，这里注意   &lt;code&gt;ui&lt;/code&gt;不是 meltano 的内部命令，而是一个配置进去的自定义行为（user-defined action）：&lt;/p&gt;  &lt;pre&gt;   &lt;code&gt;meltano invoke superset:ui&lt;/code&gt;&lt;/pre&gt;  &lt;p&gt;在另一个命令行终端执行自定义的命令   &lt;code&gt;load_datasources&lt;/code&gt;：&lt;/p&gt;  &lt;pre&gt;   &lt;code&gt;meltano invoke superset:load_datasources&lt;/code&gt;&lt;/pre&gt;  &lt;p&gt;通过浏览器访问   &lt;code&gt;http://localhost:8088/&lt;/code&gt;就是 Superset 的图形界面了：&lt;/p&gt;  &lt;p&gt;   &lt;img alt="" height="486" src="https://nebula-website-cn.oss-cn-hangzhou.aliyuncs.com/nebula-blog/data-lineage/5.png" width="690"&gt;&lt;/img&gt;&lt;/p&gt;  &lt;h4&gt;   &lt;a href="https://itindex.net/relian#dashboard-19" name="dashboard-19"&gt;&lt;/a&gt;创建一个 Dashboard&lt;/h4&gt;  &lt;p&gt;现在，我们站在 Meltano、Postgres 的肩膀上，用 ETL 数据建一个 Dashboard 吧：&lt;/p&gt;  &lt;p&gt;点击   &lt;code&gt;+ DASHBOARD&lt;/code&gt;，填写仪表盘名称，再先后点击   &lt;code&gt;SAVE&lt;/code&gt;和   &lt;code&gt;+ CREATE A NEW CHART&lt;/code&gt;：&lt;/p&gt;  &lt;p&gt;   &lt;img alt="" height="486" src="https://nebula-website-cn.oss-cn-hangzhou.aliyuncs.com/nebula-blog/data-lineage/6.png" width="690"&gt;&lt;/img&gt;&lt;/p&gt;  &lt;p&gt;在新图表（Create a new chart）视图中，选择图表类型和数据集。在这里，我选择了   &lt;code&gt;orders&lt;/code&gt;表作为数据源和   &lt;code&gt;Pie Chart&lt;/code&gt;图表类型：&lt;/p&gt;  &lt;p&gt;   &lt;img alt="" height="500" src="https://nebula-website-cn.oss-cn-hangzhou.aliyuncs.com/nebula-blog/data-lineage/7.png" width="652"&gt;&lt;/img&gt;&lt;/p&gt;  &lt;p&gt;点击   &lt;code&gt;CREATE NEW CHART&lt;/code&gt;后，在图表定义视图中选择 “status” 的 “Query” 为 “DIMENSIONS”，“COUNT(amount)” 为 “METRIC”。至此，咱们就可以看到每个订单状态分布的饼图了。&lt;/p&gt;  &lt;p&gt;   &lt;img alt="" height="500" src="https://nebula-website-cn.oss-cn-hangzhou.aliyuncs.com/nebula-blog/data-lineage/8.png" width="652"&gt;&lt;/img&gt;&lt;/p&gt;  &lt;p&gt;点击   &lt;code&gt;SAVE&lt;/code&gt;，系统会询问应该将此图表添加到哪个 Dashboard。选择后，单击   &lt;code&gt;SAVE &amp;amp; GO TO DASHBOARD&lt;/code&gt;。&lt;/p&gt;  &lt;p&gt;   &lt;img alt="" height="500" src="https://nebula-website-cn.oss-cn-hangzhou.aliyuncs.com/nebula-blog/data-lineage/9.png" width="652"&gt;&lt;/img&gt;&lt;/p&gt;  &lt;p&gt;在 Dashboard 中，我们可以看到所有的图表。这不，你可以看到我额外添加的、用来显示客户订单数量分布的图表：&lt;/p&gt;  &lt;p&gt;   &lt;img alt="" height="493" src="https://nebula-website-cn.oss-cn-hangzhou.aliyuncs.com/nebula-blog/data-lineage/10.png" width="690"&gt;&lt;/img&gt;&lt;/p&gt;  &lt;p&gt;点   &lt;code&gt;···&lt;/code&gt;能看到刷新率设置、下载渲染图等其他的功能。&lt;/p&gt;  &lt;p&gt;   &lt;img alt="" height="493" src="https://nebula-website-cn.oss-cn-hangzhou.aliyuncs.com/nebula-blog/data-lineage/11.png" width="690"&gt;&lt;/img&gt;&lt;/p&gt;  &lt;p&gt;现在，我们有一个简单但典型的 HomeLAB 数据技术栈了，并且所有东西都是开源的！&lt;/p&gt;  &lt;p&gt;想象一下，我们在 CSV 中有 100 个数据集，在数据仓库中有 200 个表，并且有几个数据工程师在运行不同的项目，这些项目使用、生成不同的应用与服务、Dashbaord 和数据库。当有人想要查找、发现或者修改其中的一些表、数据集、Dashbaord 和管道，在沟通和工程方面可能都是非常不好管理的。&lt;/p&gt;  &lt;p&gt;上面我们提到，这个示例项目的   &lt;strong&gt;主要功能是元数据发现系统&lt;/strong&gt;。&lt;/p&gt;  &lt;h3&gt;   &lt;a href="https://itindex.net/relian#h-20" name="h-20"&gt;&lt;/a&gt;元数据发现系统&lt;/h3&gt;  &lt;p&gt;现在，需要我们部署一个带有 NebulaGraph 和 Elasticsearch 的 Amundsen。有了 Amundsen，我们可以在一个地方发现和管理整个数据栈中的所有元数据。&lt;/p&gt;  &lt;p&gt;Amundsen 主要有两个部分组成：&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;元数据导入 Metadata Ingestion    &lt;ul&gt;     &lt;li&gt;      &lt;a href="https://www.amundsen.io/amundsen/databuilder/"&gt;Amundsen Databuilder&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;   &lt;li&gt;元数据目录服务 Metadata Catalog    &lt;ul&gt;     &lt;li&gt;      &lt;a href="https://www.amundsen.io/amundsen/frontend/"&gt;Amundsen Frontend Service&lt;/a&gt;&lt;/li&gt;     &lt;li&gt;      &lt;a href="https://www.amundsen.io/amundsen/metadata/"&gt;Amundsen Metadata Service&lt;/a&gt;&lt;/li&gt;     &lt;li&gt;      &lt;a href="https://www.amundsen.io/amundsen/search/"&gt;Amundsen Search Service&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;p&gt;它的工作原理是：利用   &lt;code&gt;Databuilder&lt;/code&gt;提取不同数据源的元数据，并将元数据持久化到   &lt;code&gt;Metadata Service&lt;/code&gt;和   &lt;code&gt;Search Service&lt;/code&gt;中，用户从   &lt;code&gt;Frontend Service&lt;/code&gt;或   &lt;code&gt;Metadata Service&lt;/code&gt;的 API 获取数据。&lt;/p&gt;  &lt;h4&gt;   &lt;a href="https://itindex.net/relian#amundsen-21" name="amundsen-21"&gt;&lt;/a&gt;部署 Amundsen&lt;/h4&gt;  &lt;h5&gt;   &lt;a href="https://itindex.net/relian#metadata-service-22" name="metadata-service-22"&gt;&lt;/a&gt;元数据服务 Metadata Service&lt;/h5&gt;  &lt;p&gt;我们用 docker-compose 部署一个 Amundsen 集群。由于 Amundsen 对 NebulaGraph 后端的支持   &lt;a href="https://github.com/amundsen-io/amundsen/pull/1817"&gt;pr#1817&lt;/a&gt;尚未合并，还不能用官方的代码。这里，先用我的 fork 版本。&lt;/p&gt;  &lt;p&gt;先克隆包含所有子模块的 repo：&lt;/p&gt;  &lt;pre&gt;   &lt;code&gt;git clone -b amundsen_nebula_graph --recursive git@github.com:wey-gu/amundsen.git
cd amundsen&lt;/code&gt;&lt;/pre&gt;  &lt;p&gt;启动所有目录服务 catalog services 及其后端存储：&lt;/p&gt;  &lt;pre&gt;   &lt;code&gt;docker-compose -f docker-amundsen-nebula.yml up&lt;/code&gt;&lt;/pre&gt;  &lt;p&gt;由于这个 docker-compose 文件是供开发人员试玩、调试 Amundsen 用的，而不是给生产部署准备的，它在启动的时候会从代码库构建镜像，第一次跑的时候启动会慢一些。&lt;/p&gt;  &lt;p&gt;部署好了之后，我们使用 Databuilder 将一些示例、虚构的数据加载存储里。&lt;/p&gt;  &lt;h5&gt;   &lt;a href="https://itindex.net/relian#databuilder-23" name="databuilder-23"&gt;&lt;/a&gt;抓取元数据 Databuilder&lt;/h5&gt;  &lt;p&gt;Amundsen Databuilder 就像 Meltano 系统一样，只不过是用在元数据的上的 ETL ，它把元数据加载到   &lt;code&gt;Metadata Service&lt;/code&gt;和   &lt;code&gt;Search Service&lt;/code&gt;的后端存储：NebulaGraph 和 Elasticsearch 里。这里的 Databuilder 只是一个 Python 模块，所有的元数据 ETL 作业可以作为脚本运行，也可以用 Apache Airflow 等 DAG 平台进行编排。&lt;/p&gt;  &lt;p&gt;安装   &lt;a href="https://github.com/amundsen-io/amundsen/tree/main/databuilder"&gt;Amundsen Databuilder&lt;/a&gt;：&lt;/p&gt;  &lt;pre&gt;   &lt;code&gt;cd databuilder
python3 -m venv .venv
source .venv/bin/activate
python3 -m pip install wheel
python3 -m pip install -r requirements.txt
python3 setup.py install&lt;/code&gt;&lt;/pre&gt;  &lt;p&gt;调用这个示例数据构建器 ETL 脚本来把示例的虚拟数据导进去。&lt;/p&gt;  &lt;pre&gt;   &lt;code&gt;python3 example/scripts/sample_data_loader_nebula.py&lt;/code&gt;&lt;/pre&gt;  &lt;h5&gt;   &lt;a href="https://itindex.net/relian#amundsen-24" name="amundsen-24"&gt;&lt;/a&gt;验证一下 Amundsen&lt;/h5&gt;  &lt;p&gt;在访问 Amundsen 之前，我们需要创建一个测试用户：&lt;/p&gt;  &lt;pre&gt;   &lt;code&gt;# run a container with curl attached to amundsenfrontend
docker run -it --rm --net container:amundsenfrontend nicolaka/netshoot

# Create a user with id test_user_id
curl -X PUT -v http://amundsenmetadata:5002/user \
    -H &amp;quot;Content-Type: application/json&amp;quot; \
    --data \
    &amp;apos;{&amp;quot;user_id&amp;quot;:&amp;quot;test_user_id&amp;quot;,&amp;quot;first_name&amp;quot;:&amp;quot;test&amp;quot;,&amp;quot;last_name&amp;quot;:&amp;quot;user&amp;quot;, &amp;quot;email&amp;quot;:&amp;quot;test_user_id@mail.com&amp;quot;}&amp;apos;

exit&lt;/code&gt;&lt;/pre&gt;  &lt;p&gt;然后我们可以在   &lt;code&gt;http://localhost:5000&lt;/code&gt;查看 UI 并尝试搜索   &lt;code&gt;test&lt;/code&gt;，它应该会返回一些结果。&lt;/p&gt;  &lt;p&gt;   &lt;img alt="" height="306" src="https://nebula-website-cn.oss-cn-hangzhou.aliyuncs.com/nebula-blog/data-lineage/12.png" width="690"&gt;&lt;/img&gt;&lt;/p&gt;  &lt;p&gt;然后，可以单击并浏览在   &lt;code&gt;sample_data_loader_nebula.py&lt;/code&gt;期间加载到 Amundsen 的那些示例元数据。&lt;/p&gt;  &lt;p&gt;此外，我们还可以通过 NebulaGraph Studio 的地址   &lt;code&gt;http://localhost:7001&lt;/code&gt;访问 NebulaGraph 里的这些数据。&lt;/p&gt;  &lt;p&gt;下图显示了有关 Amundsen 组件的更多详细信息：&lt;/p&gt;  &lt;pre&gt;   &lt;code&gt;┌────────────────────────┐ ┌────────────────────────────────────────┐
       │ Frontend:5000          │ │ Metadata Sources                       │
       ├────────────────────────┤ │ ┌────────┐ ┌─────────┐ ┌─────────────┐ │
       │ Metaservice:5001       │ │ │        │ │         │ │             │ │
       │ ┌──────────────┐       │ │ │ Foo DB │ │ Bar App │ │ X Dashboard │ │
  ┌────┼─┤ Nebula Proxy │       │ │ │        │ │         │ │             │ │
  │    │ └──────────────┘       │ │ │        │ │         │ │             │ │
  │    ├────────────────────────┤ │ └────────┘ └─────┬───┘ └─────────────┘ │
┌─┼────┤ Search searvice:5002   │ │                  │                     │
│ │    └────────────────────────┘ └──────────────────┼─────────────────────┘
│ │    ┌─────────────────────────────────────────────┼───────────────────────┐
│ │    │                                             │                       │
│ │    │ Databuilder     ┌───────────────────────────┘                       │
│ │    │                 │                                                   │
│ │    │ ┌───────────────▼────────────────┐ ┌──────────────────────────────┐ │
│ │ ┌──┼─► Extractor of Sources           ├─► nebula_search_data_extractor │ │
│ │ │  │ └───────────────┬────────────────┘ └──────────────┬───────────────┘ │
│ │ │  │ ┌───────────────▼────────────────┐ ┌──────────────▼───────────────┐ │
│ │ │  │ │ Loader filesystem_csv_nebula   │ │ Loader Elastic FS loader     │ │
│ │ │  │ └───────────────┬────────────────┘ └──────────────┬───────────────┘ │
│ │ │  │ ┌───────────────▼────────────────┐ ┌──────────────▼───────────────┐ │
│ │ │  │ │ Publisher nebula_csv_publisher │ │ Publisher Elasticsearch      │ │
│ │ │  │ └───────────────┬────────────────┘ └──────────────┬───────────────┘ │
│ │ │  └─────────────────┼─────────────────────────────────┼─────────────────┘
│ │ └────────────────┐   │                                 │
│ │    ┌─────────────┼───►─────────────────────────┐ ┌─────▼─────┐
│ │    │ NebulaGraph │   │                         │ │           │
│ └────┼─────┬───────┴───┼───────────┐     ┌─────┐ │ │           │
│      │     │           │           │     │MetaD│ │ │           │
│      │ ┌───▼──┐    ┌───▼──┐    ┌───▼──┐  └─────┘ │ │           │
│ ┌────┼─►GraphD│    │GraphD│    │GraphD│          │ │           │
│ │    │ └──────┘    └──────┘    └──────┘  ┌─────┐ │ │           │
│ │    │ :9669                             │MetaD│ │ │  Elastic  │
│ │    │ ┌────────┐ ┌────────┐ ┌────────┐  └─────┘ │ │  Search   │
│ │    │ │        │ │        │ │        │          │ │  Cluster  │
│ │    │ │StorageD│ │StorageD│ │StorageD│  ┌─────┐ │ │  :9200    │
│ │    │ │        │ │        │ │        │  │MetaD│ │ │           │
│ │    │ └────────┘ └────────┘ └────────┘  └─────┘ │ │           │
│ │    ├───────────────────────────────────────────┤ │           │
│ └────┤ Nebula Studio:7001                        │ │           │
│      └───────────────────────────────────────────┘ └─────▲─────┘
└──────────────────────────────────────────────────────────┘&lt;/code&gt;&lt;/pre&gt;  &lt;h2&gt;   &lt;a href="https://itindex.net/relian#h-25" name="h-25"&gt;&lt;/a&gt;穿针引线：元数据发现&lt;/h2&gt;  &lt;p&gt;设置好基本环境后，让我们把所有东西穿起来。还记得我们有 ELT 一些数据到 PostgreSQL 吗？&lt;/p&gt;  &lt;p&gt;   &lt;img alt="" height="481" src="https://nebula-website-cn.oss-cn-hangzhou.aliyuncs.com/nebula-blog/data-lineage/13.png" width="690"&gt;&lt;/img&gt;&lt;/p&gt;  &lt;p&gt;那么，我们如何让 Amundsen 发现这些数据和 ETL 的元数据呢？&lt;/p&gt;  &lt;h3&gt;   &lt;a href="https://itindex.net/relian#postgres-26" name="postgres-26"&gt;&lt;/a&gt;提取 Postgres 元数据&lt;/h3&gt;  &lt;p&gt;我们从数据源开始：首先是 Postgres。&lt;/p&gt;  &lt;p&gt;我们为 Python3 安装 Postgres 客户端：&lt;/p&gt;  &lt;pre&gt;   &lt;code&gt;sudo apt-get install libpq-dev
pip3 install Psycopg2&lt;/code&gt;&lt;/pre&gt;  &lt;h4&gt;   &lt;a href="https://itindex.net/relian#postgres-etl-27" name="postgres-etl-27"&gt;&lt;/a&gt;执行 Postgres 元数据 ETL&lt;/h4&gt;  &lt;p&gt;运行一个脚本来解析 Postgres 元数据：&lt;/p&gt;  &lt;pre&gt;   &lt;code&gt;export CREDENTIALS_POSTGRES_USER=lineage_ref
export CREDENTIALS_POSTGRES_PASSWORD=lineage_ref
export CREDENTIALS_POSTGRES_DATABASE=warehouse

python3 example/scripts/sample_postgres_loader_nebula.py&lt;/code&gt;&lt;/pre&gt;  &lt;p&gt;我们看看把 Postgres 元数据加载到 NebulaGraph 的示例脚本的代码，非常简单直接：&lt;/p&gt;  &lt;pre&gt;   &lt;code&gt;# part 1: PostgresMetadata --&amp;gt; CSV --&amp;gt; NebulaGraph
job = DefaultJob(
      conf=job_config,
      task=DefaultTask(
          extractor=PostgresMetadataExtractor(),
          loader=FsNebulaCSVLoader()),
      publisher=NebulaCsvPublisher())

...
# part 2: Metadata stored in NebulaGraph --&amp;gt; Elasticsearch
extractor = NebulaSearchDataExtractor()
task = SearchMetadatatoElasticasearchTask(extractor=extractor)

job = DefaultJob(conf=job_config, task=task)&lt;/code&gt;&lt;/pre&gt;  &lt;p&gt;第一个工作路径是：   &lt;code&gt;PostgresMetadata --&amp;gt; CSV --&amp;gt; NebulaGraph&lt;/code&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;    &lt;code&gt;PostgresMetadataExtractor&lt;/code&gt;用于从 Postgres 中提取元数据，可以参考文档    &lt;a href="https://www.amundsen.io/amundsen/databuilder/#postgresmetadataextractor"&gt;https://www.amundsen.io/amundsen/databuilder/#postgresmetadataextractor&lt;/a&gt;。&lt;/li&gt;   &lt;li&gt;    &lt;code&gt;FsNebulaCSVLoader&lt;/code&gt;用于将提取的数据转为 CSV 文件&lt;/li&gt;   &lt;li&gt;    &lt;code&gt;NebulaCsvPublisher&lt;/code&gt;用于将元数据以 CSV 格式发布到 NebulaGraph&lt;/li&gt;&lt;/ul&gt;  &lt;p&gt;第二个工作路径是：   &lt;code&gt;Metadata stored in NebulaGraph --&amp;gt; Elasticsearch&lt;/code&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;    &lt;code&gt;NebulaSearchDataExtractor&lt;/code&gt;用于获取存储在 NebulaGraph 中的元数据&lt;/li&gt;   &lt;li&gt;    &lt;code&gt;SearchMetadatatoElasticasearchTask&lt;/code&gt;用于使 Elasticsearch 对元数据进行索引。&lt;/li&gt;&lt;/ul&gt;  &lt;p&gt;请注意，在生产环境中，我们可以在脚本中或使用 Apache Airflow 等编排平台触发这些作业。&lt;/p&gt;  &lt;h4&gt;   &lt;a href="https://itindex.net/relian#postgres-28" name="postgres-28"&gt;&lt;/a&gt;验证 Postgres 中元数据的获取&lt;/h4&gt;  &lt;p&gt;搜索   &lt;code&gt;payments&lt;/code&gt;或者直接访问   &lt;code&gt;http://localhost:5000/table_detail/warehouse/postgres/public/payments&lt;/code&gt;，你可以看到我们 Postgres 的元数据，比如：&lt;/p&gt;  &lt;p&gt;   &lt;img alt="" height="346" src="https://nebula-website-cn.oss-cn-hangzhou.aliyuncs.com/nebula-blog/data-lineage/14.png" width="690"&gt;&lt;/img&gt;&lt;/p&gt;  &lt;p&gt;像上面的屏幕截图一样，我们可以轻松完成元数据管理操作，如：添加标签、所有者和描述。&lt;/p&gt;  &lt;h3&gt;   &lt;a href="https://itindex.net/relian#dbt-29" name="dbt-29"&gt;&lt;/a&gt;提取 dbt 元数据&lt;/h3&gt;  &lt;p&gt;其实，我们也可以从   &lt;a href="https://www.getdbt.com/"&gt;dbt&lt;/a&gt;本身提取元数据。&lt;/p&gt;  &lt;p&gt;Amundsen   &lt;a href="https://www.amundsen.io/amundsen/databuilder/#dbtextractor"&gt;DbtExtractor&lt;/a&gt;会解析   &lt;code&gt;catalog.json&lt;/code&gt;或   &lt;code&gt;manifest.json&lt;/code&gt;文件并将元数据加载到 Amundsen 存储，这里当然指的是 NebulaGraph 和 Elasticsearch。&lt;/p&gt;  &lt;p&gt;在上面的 Meltano 章节中，我们已经使用   &lt;code&gt;meltano invoke dbt docs generate&lt;/code&gt;生成了这个文件：&lt;/p&gt;  &lt;pre&gt;   &lt;code&gt;14:23:15  Done.
14:23:15  Building catalog
14:23:15  Catalog written to /home/ubuntu/ref-data-lineage/meltano_example_implementations/meltano_projects/singer_dbt_jaffle/.meltano/transformers/dbt/target/catalog.json&lt;/code&gt;&lt;/pre&gt;  &lt;h4&gt;   &lt;a href="https://itindex.net/relian#dbt-etl-30" name="dbt-etl-30"&gt;&lt;/a&gt;dbt 元数据 ETL 的执行&lt;/h4&gt;  &lt;p&gt;我们试着解析示例 dbt 文件中的元数据吧：&lt;/p&gt;  &lt;pre&gt;   &lt;code&gt;$ ls -l example/sample_data/dbt/
total 184
-rw-rw-r-- 1 w w   5320 May 15 07:17 catalog.json
-rw-rw-r-- 1 w w 177163 May 15 07:17 manifest.json&lt;/code&gt;&lt;/pre&gt;  &lt;p&gt;我写的这个示例的加载例子如下：&lt;/p&gt;  &lt;pre&gt;   &lt;code&gt;python3 example/scripts/sample_dbt_loader_nebula.py&lt;/code&gt;&lt;/pre&gt;  &lt;p&gt;其中主要的代码如下：&lt;/p&gt;  &lt;pre&gt;   &lt;code&gt;# part 1: dbt manifest --&amp;gt; CSV --&amp;gt; NebulaGraph
job = DefaultJob(
      conf=job_config,
      task=DefaultTask(
          extractor=DbtExtractor(),
          loader=FsNebulaCSVLoader()),
      publisher=NebulaCsvPublisher())

...
# part 2: Metadata stored in NebulaGraph --&amp;gt; Elasticsearch
extractor = NebulaSearchDataExtractor()
task = SearchMetadatatoElasticasearchTask(extractor=extractor)

job = DefaultJob(conf=job_config, task=task)&lt;/code&gt;&lt;/pre&gt;  &lt;p&gt;它和 Postgres 元数据 ETL 的唯一区别是   &lt;code&gt;extractor=DbtExtractor()&lt;/code&gt;，它带有以下配置以获取有关 dbt 项目的以下信息：&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;数据库名称&lt;/li&gt;   &lt;li&gt;目录_json&lt;/li&gt;   &lt;li&gt;manifest_json&lt;/li&gt;&lt;/ul&gt;  &lt;pre&gt;   &lt;code&gt;job_config = ConfigFactory.from_dict({
  &amp;apos;extractor.dbt.database_name&amp;apos;: database_name,
  &amp;apos;extractor.dbt.catalog_json&amp;apos;: catalog_file_loc,  # File
  &amp;apos;extractor.dbt.manifest_json&amp;apos;: json.dumps(manifest_data),  # JSON Dumped objecy
  &amp;apos;extractor.dbt.source_url&amp;apos;: source_url})&lt;/code&gt;&lt;/pre&gt;  &lt;h4&gt;   &lt;a href="https://itindex.net/relian#dbt-31" name="dbt-31"&gt;&lt;/a&gt;验证 dbt 抓取结果&lt;/h4&gt;  &lt;p&gt;搜索   &lt;code&gt;dbt_demo&lt;/code&gt;或者直接访问   &lt;code&gt;http://localhost:5000/table_detail/dbt_demo/snowflake/public/raw_inventory_value&lt;/code&gt;，可以看到&lt;/p&gt;  &lt;p&gt;   &lt;img alt="" height="341" src="https://nebula-website-cn.oss-cn-hangzhou.aliyuncs.com/nebula-blog/data-lineage/15.png" width="690"&gt;&lt;/img&gt;&lt;/p&gt;  &lt;p&gt;这里给一个小提示，其实，我们可以选择启用 DEBUG log 级别去看已发送到 Elasticsearch 和 NebulaGraph 的内容。&lt;/p&gt;  &lt;pre&gt;   &lt;code&gt;- logging.basicConfig(level=logging.INFO)
+ logging.basicConfig(level=logging.DEBUG)&lt;/code&gt;&lt;/pre&gt;  &lt;p&gt;或者，在 NebulaGraph Studio 中探索导入的数据：&lt;/p&gt;  &lt;p&gt;先点击   &lt;code&gt;Start with Vertices&lt;/code&gt;，并填写顶点 vid：   &lt;code&gt;snowflake://dbt_demo.public/fact_warehouse_inventory&lt;/code&gt;&lt;/p&gt;  &lt;p&gt;   &lt;img alt="" height="348" src="https://nebula-website-cn.oss-cn-hangzhou.aliyuncs.com/nebula-blog/data-lineage/16.png" width="690"&gt;&lt;/img&gt;&lt;/p&gt;  &lt;p&gt;我们可以看到顶点显示为粉红色的点。再让我们修改下   &lt;code&gt;Expand&lt;/code&gt;/ ”拓展“选项：&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;方向：双向&lt;/li&gt;   &lt;li&gt;步数：单向、三步&lt;/li&gt;&lt;/ul&gt;  &lt;p&gt;   &lt;img alt="" height="351" src="https://nebula-website-cn.oss-cn-hangzhou.aliyuncs.com/nebula-blog/data-lineage/17.png" width="690"&gt;&lt;/img&gt;&lt;/p&gt;  &lt;p&gt;并双击顶点（点），它将双向拓展 3 步：&lt;/p&gt;  &lt;p&gt;   &lt;img alt="" height="349" src="https://nebula-website-cn.oss-cn-hangzhou.aliyuncs.com/nebula-blog/data-lineage/18.png" width="690"&gt;&lt;/img&gt;&lt;/p&gt;  &lt;p&gt;像截图展示的那般，在可视化之后的图数据库中，这些元数据可以很容易被查看、分析，并从中获得洞察。&lt;/p&gt;  &lt;p&gt;而且，我们在 NebulaGraph Studio 中看到的同 Amundsen 元数据服务的数据模型相呼应：&lt;/p&gt;  &lt;p&gt;   &lt;img alt="" height="415" src="https://nebula-website-cn.oss-cn-hangzhou.aliyuncs.com/nebula-blog/data-lineage/19.png" width="690"&gt;&lt;/img&gt;&lt;/p&gt;  &lt;p&gt;最后，请记住我们曾利用 dbt 来转换 Meltano 中的一些数据，并且清单文件路径是   &lt;code&gt;.meltano/transformers/dbt/target/catalog.json&lt;/code&gt;，你可以尝试创建一个数据构建器作业来导入它。&lt;/p&gt;  &lt;h3&gt;   &lt;a href="https://itindex.net/relian#superset-32" name="superset-32"&gt;&lt;/a&gt;提取 Superset 中的元数据&lt;/h3&gt;  &lt;p&gt;Amundsen 的 Superset Extractor 可以获取&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Dashboard 元数据抽取，见    &lt;a href="https://www.amundsen.io/amundsen/databuilder/databuilder/extractor/dashboard/apache_superset/apache_superset_metadata_extractor.py"&gt;apache_superset_metadata_extractor.py&lt;/a&gt;&lt;/li&gt;   &lt;li&gt;图表元数据抽取，见    &lt;a href="https://www.amundsen.io/amundsen/databuilder/databuilder/extractor/dashboard/apache_superset/apache_superset_chart_extractor.py"&gt;apache_superset_chart_extractor.py&lt;/a&gt;&lt;/li&gt;   &lt;li&gt;Superset 元素与数据源（表）的关系抽取，见    &lt;a href="https://www.amundsen.io/amundsen/databuilder/databuilder/extractor/dashboard/apache_superset/apache_superset_table_extractor.py"&gt;apache_superset_table_extractor.py&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;p&gt;来，现在试试提取之前创建的 Superset Dashboard 的元数据。&lt;/p&gt;  &lt;h4&gt;   &lt;a href="https://itindex.net/relian#superset-etl-33" name="superset-etl-33"&gt;&lt;/a&gt;Superset 元数据 ETL 的执行&lt;/h4&gt;  &lt;p&gt;下边执行的示例 Superset 提取脚本可以获取数据并将元数据加载到 NebulaGraph 和 Elasticsearch 中。&lt;/p&gt;  &lt;pre&gt;   &lt;code&gt;python3 sample_superset_data_loader_nebula.py&lt;/code&gt;&lt;/pre&gt;  &lt;p&gt;如果我们将日志记录级别设置为   &lt;code&gt;DEBUG&lt;/code&gt;，我们实际上可以看到这些中间的过程日志：&lt;/p&gt;  &lt;pre&gt;   &lt;code&gt;# fetching metadata from superset
DEBUG:urllib3.connectionpool:http://localhost:8088 &amp;quot;POST /api/v1/security/login HTTP/1.1&amp;quot; 200 280
INFO:databuilder.task.task:Running a task
DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): localhost:8088
DEBUG:urllib3.connectionpool:http://localhost:8088 &amp;quot;GET /api/v1/dashboard?q=(page_size:20,page:0,order_direction:desc) HTTP/1.1&amp;quot; 308 374
DEBUG:urllib3.connectionpool:http://localhost:8088 &amp;quot;GET /api/v1/dashboard/?q=(page_size:20,page:0,order_direction:desc) HTTP/1.1&amp;quot; 200 1058
...

# insert Dashboard

DEBUG:databuilder.publisher.nebula_csv_publisher:Query: INSERT VERTEX `Dashboard` (`dashboard_url`, `name`, published_tag, publisher_last_updated_epoch_ms) VALUES  &amp;quot;superset_dashboard://my_cluster.1/3&amp;quot;:(&amp;quot;http://localhost:8088/superset/dashboard/3/&amp;quot;,&amp;quot;my_dashboard&amp;quot;,&amp;quot;unique_tag&amp;quot;,timestamp());
...

# insert a DASHBOARD_WITH_TABLE relationship/edge

INFO:databuilder.publisher.nebula_csv_publisher:Importing data in edge files: [&amp;apos;/tmp/amundsen/dashboard/relationships/Dashboard_Table_DASHBOARD_WITH_TABLE.csv&amp;apos;]
DEBUG:databuilder.publisher.nebula_csv_publisher:Query:
INSERT edge `DASHBOARD_WITH_TABLE` (`END_LABEL`, `START_LABEL`, published_tag, publisher_last_updated_epoch_ms) VALUES &amp;quot;superset_dashboard://my_cluster.1/3&amp;quot;-&amp;gt;&amp;quot;postgresql+psycopg2://my_cluster.warehouse/orders&amp;quot;:(&amp;quot;Table&amp;quot;,&amp;quot;Dashboard&amp;quot;,&amp;quot;unique_tag&amp;quot;, timestamp()), &amp;quot;superset_dashboard://my_cluster.1/3&amp;quot;-&amp;gt;&amp;quot;postgresql+psycopg2://my_cluster.warehouse/customers&amp;quot;:(&amp;quot;Table&amp;quot;,&amp;quot;Dashboard&amp;quot;,&amp;quot;unique_tag&amp;quot;, timestamp());&lt;/code&gt;&lt;/pre&gt;  &lt;h4&gt;   &lt;a href="https://itindex.net/relian#superset-dashboard-34" name="superset-dashboard-34"&gt;&lt;/a&gt;验证 Superset Dashboard 元数据&lt;/h4&gt;  &lt;p&gt;通过在 Amundsen 中搜索它，我们现在可以获得 Dashboard 信息。&lt;/p&gt;  &lt;p&gt;我们也可以从 NebulaGraph Studio 进行验证。&lt;/p&gt;  &lt;p&gt;   &lt;img alt="" height="401" src="https://nebula-website-cn.oss-cn-hangzhou.aliyuncs.com/nebula-blog/data-lineage/20.png" width="690"&gt;&lt;/img&gt;&lt;/p&gt;  &lt;p&gt;注：可以参阅 Dashboard 抓取指南中的 Amundsen Dashboard 图建模：&lt;/p&gt;  &lt;p&gt;   &lt;img alt="" height="466" src="https://nebula-website-cn.oss-cn-hangzhou.aliyuncs.com/nebula-blog/data-lineage/21.png" width="690"&gt;&lt;/img&gt;&lt;/p&gt;  &lt;h3&gt;   &lt;a href="https://itindex.net/relian#superset-35" name="superset-35"&gt;&lt;/a&gt;用 Superset 预览数据&lt;/h3&gt;  &lt;p&gt;Superset 可以用来预览表格数据，文档可以参考   &lt;a href="https://www.amundsen.io/amundsen/frontend/docs/configuration/#preview-client"&gt;https://www.amundsen.io/amundsen/frontend/docs/configuration/#preview-client&lt;/a&gt;，其中   &lt;code&gt;/superset/sql_json/&lt;/code&gt;的 API 被   &lt;code&gt;Amundsen Frontend Service&lt;/code&gt;调用，取得预览信息。&lt;/p&gt;  &lt;p&gt;   &lt;img alt="" height="486" src="https://nebula-website-cn.oss-cn-hangzhou.aliyuncs.com/nebula-blog/data-lineage/22.png" width="690"&gt;&lt;/img&gt;&lt;/p&gt;  &lt;h3&gt;   &lt;a href="https://itindex.net/relian#h-36" name="h-36"&gt;&lt;/a&gt;开启数据血缘信息&lt;/h3&gt;  &lt;p&gt;默认情况下，数据血缘是关闭的，我们可以通过以下方式启用它：&lt;/p&gt;  &lt;p&gt;第一步，   &lt;code&gt;cd&lt;/code&gt;到 Amundsen 代码仓库下，这也是我们运行   &lt;code&gt;docker-compose -f docker-amundsen-nebula.yml up&lt;/code&gt;命令的地方：&lt;/p&gt;  &lt;pre&gt;   &lt;code&gt;cd amundsen&lt;/code&gt;&lt;/pre&gt;  &lt;p&gt;第二步，修改 frontend 下的 TypeScript 配置&lt;/p&gt;  &lt;pre&gt;   &lt;code&gt;--- a/frontend/amundsen_application/static/js/config/config-default.ts
+++ b/frontend/amundsen_application/static/js/config/config-default.ts
   tableLineage: {
-    inAppListEnabled: false,
-    inAppPageEnabled: false,
+    inAppListEnabled: true,
+    inAppPageEnabled: true,
     externalEnabled: false,
     iconPath: &amp;apos;PATH_TO_ICON&amp;apos;,
     isBeta: false,&lt;/code&gt;&lt;/pre&gt;  &lt;p&gt;第三步，重新构建 Docker 镜像，其中将重建前端图像。&lt;/p&gt;  &lt;pre&gt;   &lt;code&gt;docker-compose -f docker-amundsen-nebula.yml build&lt;/code&gt;&lt;/pre&gt;  &lt;p&gt;第四步，重新运行   &lt;code&gt;up -d&lt;/code&gt;以确保前端用新的配置：&lt;/p&gt;  &lt;pre&gt;   &lt;code&gt;docker-compose -f docker-amundsen-nebula.yml up -d&lt;/code&gt;&lt;/pre&gt;  &lt;p&gt;结果大概长这样子：&lt;/p&gt;  &lt;pre&gt;   &lt;code&gt;$ docker-compose -f docker-amundsen-nebula.yml up -d
...
Recreating amundsenfrontend           ... done&lt;/code&gt;&lt;/pre&gt;  &lt;p&gt;之后，我们可以访问   &lt;code&gt;http://localhost:5000/lineage/table/gold/hive/test_schema/test_table1&lt;/code&gt;看到   &lt;code&gt;Lineage （beta）&lt;/code&gt;血缘按钮已经显示出来了：&lt;/p&gt;  &lt;p&gt;   &lt;img alt="" height="395" src="https://nebula-website-cn.oss-cn-hangzhou.aliyuncs.com/nebula-blog/data-lineage/23.png" width="690"&gt;&lt;/img&gt;&lt;/p&gt;  &lt;p&gt;我们可以点击   &lt;code&gt;Downstream&lt;/code&gt;查看该表的下游资源：&lt;/p&gt;  &lt;p&gt;   &lt;img alt="" height="395" src="https://nebula-website-cn.oss-cn-hangzhou.aliyuncs.com/nebula-blog/data-lineage/24.png" width="690"&gt;&lt;/img&gt;&lt;/p&gt;  &lt;p&gt;或者点击血缘按钮查看血缘的图表式：&lt;/p&gt;  &lt;p&gt;   &lt;img alt="" height="395" src="https://nebula-website-cn.oss-cn-hangzhou.aliyuncs.com/nebula-blog/data-lineage/25.png" width="690"&gt;&lt;/img&gt;&lt;/p&gt;  &lt;p&gt;也有用于血缘查询的 API。&lt;/p&gt;  &lt;p&gt;下面这个例子中，我们用 cURL 调用下这个 API：&lt;/p&gt;  &lt;pre&gt;   &lt;code&gt;docker run -it --rm --net container:amundsenfrontend nicolaka/netshoot

curl &amp;quot;http://amundsenmetadata:5002/table/snowflake://dbt_demo.public/raw_inventory_value/lineage?depth=3&amp;amp;direction=both&amp;quot;&lt;/code&gt;&lt;/pre&gt;  &lt;p&gt;上面的 API 调用是查询上游和下游方向的 linage，表   &lt;code&gt;snowflake://dbt_demo.public/raw_inventory_value&lt;/code&gt;的深度为 3。&lt;/p&gt;  &lt;p&gt;结果应该是这样的：&lt;/p&gt;  &lt;pre&gt;   &lt;code&gt;{
    &amp;quot;depth&amp;quot;: 3,
    &amp;quot;downstream_entities&amp;quot;: [
        {
            &amp;quot;level&amp;quot;: 2,
            &amp;quot;usage&amp;quot;: 0,
            &amp;quot;key&amp;quot;: &amp;quot;snowflake://dbt_demo.public/fact_daily_expenses&amp;quot;,
            &amp;quot;parent&amp;quot;: &amp;quot;snowflake://dbt_demo.public/fact_warehouse_inventory&amp;quot;,
            &amp;quot;badges&amp;quot;: [],
            &amp;quot;source&amp;quot;: &amp;quot;snowflake&amp;quot;
        },
        {
            &amp;quot;level&amp;quot;: 1,
            &amp;quot;usage&amp;quot;: 0,
            &amp;quot;key&amp;quot;: &amp;quot;snowflake://dbt_demo.public/fact_warehouse_inventory&amp;quot;,
            &amp;quot;parent&amp;quot;: &amp;quot;snowflake://dbt_demo.public/raw_inventory_value&amp;quot;,
            &amp;quot;badges&amp;quot;: [],
            &amp;quot;source&amp;quot;: &amp;quot;snowflake&amp;quot;
        }
    ],
    &amp;quot;key&amp;quot;: &amp;quot;snowflake://dbt_demo.public/raw_inventory_value&amp;quot;,
    &amp;quot;direction&amp;quot;: &amp;quot;both&amp;quot;,
    &amp;quot;upstream_entities&amp;quot;: []
}&lt;/code&gt;&lt;/pre&gt;  &lt;p&gt;实际上，这个血缘数据就是在我们的   &lt;a href="https://github.com/amundsen-io/amundsen/blob/main/databuilder/databuilder/extractor/dbt_extractor.py"&gt;dbtExtractor&lt;/a&gt;执行期间提取和加载的，其中   &lt;code&gt;extractor .dbt.{DbtExtractor.EXTRACT_LINEAGE}&lt;/code&gt;默认为   &lt;code&gt;true&lt;/code&gt;，因此，创建了血缘元数据并将其加载到了 Amundsen。&lt;/p&gt;  &lt;h4&gt;   &lt;a href="https://itindex.net/relian#nebulagraph-37" name="nebulagraph-37"&gt;&lt;/a&gt;在 NebulaGraph 中洞察血缘&lt;/h4&gt;  &lt;p&gt;使用图数据库作为元数据存储的两个优点是：&lt;/p&gt;  &lt;p&gt;   &lt;strong&gt;图查询本身是一个灵活的 DSL for lineage API&lt;/strong&gt;，例如，这个查询帮助我们执行 Amundsen 元数据 API 的等价的查询：&lt;/p&gt;  &lt;pre&gt;   &lt;code&gt;MATCH p=(t:`Table`) -[:`HAS_UPSTREAM`|:`HAS_DOWNSTREAM` *1..3]-&amp;gt;(x)
WHERE id(t) == &amp;quot;snowflake://dbt_demo.public/raw_inventory_value&amp;quot; RETURN p&lt;/code&gt;&lt;/pre&gt;  &lt;p&gt;来，在 NebulaGraph Studio 或者 Explorer 的控制台中查询下：&lt;/p&gt;  &lt;p&gt;   &lt;img alt="" height="401" src="https://nebula-website-cn.oss-cn-hangzhou.aliyuncs.com/nebula-blog/data-lineage/26.png" width="690"&gt;&lt;/img&gt;&lt;/p&gt;  &lt;p&gt;​渲染下这个结果：&lt;/p&gt;  &lt;p&gt;   &lt;img alt="" height="401" src="https://nebula-website-cn.oss-cn-hangzhou.aliyuncs.com/nebula-blog/data-lineage/27.png" width="690"&gt;&lt;/img&gt;&lt;/p&gt;  &lt;h4&gt;   &lt;a href="https://itindex.net/relian#h-38" name="h-38"&gt;&lt;/a&gt;提取数据血缘&lt;/h4&gt;  &lt;p&gt;这些血缘信息是需要我们明确指定、获取的，获取的方式可以是自己写 Extractor，也可以是用已有的方式。比如：dbt 的 Extractor 和 Open Lineage 项目的 Amundsen Extractor。&lt;/p&gt;  &lt;h5&gt;   &lt;a href="https://itindex.net/relian#dbt-39" name="dbt-39"&gt;&lt;/a&gt;通过 dbt&lt;/h5&gt;  &lt;p&gt;这个在刚才已经展示过了，dbt 的 Extractor 会从表级别获取血缘同其他 dbt 中产生的元数据信息一起被拿到。&lt;/p&gt;  &lt;h5&gt;   &lt;a href="https://itindex.net/relian#open-lineage-40" name="open-lineage-40"&gt;&lt;/a&gt;通过 Open Lineage&lt;/h5&gt;  &lt;p&gt;Amundsen 中的另一个开箱即用的血缘 Extractor 是   &lt;a href="https://www.amundsen.io/amundsen/databuilder/#openlineagetablelineageextractor"&gt;OpenLineageTableLineageExtractor&lt;/a&gt;。&lt;/p&gt;  &lt;p&gt;   &lt;a href="https://openlineage.io/"&gt;Open Lineage&lt;/a&gt;是一个开放的框架，可以将不同来源的血统数据收集到一个地方，它可以将血统信息输出为 JSON 文件，参见文档   &lt;a href="https://www.amundsen.io/amundsen/databuilder/#openlineagetablelineageextractor"&gt;https://www.amundsen.io/amundsen/databuilder/#openlineagetablelineageextractor&lt;/a&gt;。&lt;/p&gt;  &lt;p&gt;下边是它的 Amundsen Databuilder 例子：&lt;/p&gt;  &lt;pre&gt;   &lt;code&gt;dict_config = {
    # ...
    f&amp;apos;extractor.openlineage_tablelineage.{OpenLineageTableLineageExtractor.CLUSTER_NAME}&amp;apos;: &amp;apos;datalab&amp;apos;,
    f&amp;apos;extractor.openlineage_tablelineage.{OpenLineageTableLineageExtractor.OL_DATASET_NAMESPACE_OVERRIDE}&amp;apos;: &amp;apos;hive_table&amp;apos;,
    f&amp;apos;extractor.openlineage_tablelineage.{OpenLineageTableLineageExtractor.TABLE_LINEAGE_FILE_LOCATION}&amp;apos;: &amp;apos;input_dir/openlineage_nd.json&amp;apos;,
}
...

task = DefaultTask(
    extractor=OpenLineageTableLineageExtractor(),
    loader=FsNebulaCSVLoader())&lt;/code&gt;&lt;/pre&gt;  &lt;h2&gt;   &lt;a href="https://itindex.net/relian#h-41" name="h-41"&gt;&lt;/a&gt;回顾&lt;/h2&gt;  &lt;p&gt;整套元数据治理/发现的方案思路如下：&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;将整个数据技术栈中的组件作为元数据源（从任何数据库、数仓，到 dbt、Airflow、Openlineage、Superset 等各级项目）&lt;/li&gt;   &lt;li&gt;使用 Databuilder（作为脚本或 DAG）运行元数据 ETL，以使用 NebulaGraph 和 Elasticsearch 存储和索引&lt;/li&gt;   &lt;li&gt;从前端 UI（使用 Superset 预览）或 API 去使用、消费、管理和发现元数据&lt;/li&gt;   &lt;li&gt;通过查询和 UI 对 NebulaGraph，我们可以获得更多的可能性、灵活性和数据、血缘的洞察&lt;/li&gt;&lt;/ul&gt;  &lt;p&gt;   &lt;img alt="" height="499" src="https://nebula-website-cn.oss-cn-hangzhou.aliyuncs.com/nebula-blog/data-lineage/1.svg" width="315"&gt;&lt;/img&gt;&lt;/p&gt;  &lt;h3&gt;   &lt;a href="https://itindex.net/relian#h-42" name="h-42"&gt;&lt;/a&gt;涉及到的开源&lt;/h3&gt;  &lt;p&gt;此参考项目中使用的所有项目都按字典顺序在下面列出。&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Amundsen&lt;/li&gt;   &lt;li&gt;Apache Airflow&lt;/li&gt;   &lt;li&gt;Apache Superset&lt;/li&gt;   &lt;li&gt;dbt&lt;/li&gt;   &lt;li&gt;Elasticsearch&lt;/li&gt;   &lt;li&gt;meltano&lt;/li&gt;   &lt;li&gt;NebulaGraph&lt;/li&gt;   &lt;li&gt;Open Lineage&lt;/li&gt;   &lt;li&gt;Singer&lt;/li&gt;&lt;/ul&gt;  &lt;hr&gt;&lt;/hr&gt;  &lt;p&gt;   &lt;strong&gt;谢谢你读完本文&lt;/strong&gt;(///▽///)&lt;/p&gt;  &lt;p&gt;如果你对本文感兴趣，现在可以用用 NebulaGraph Cloud 来搭建自己的数据治理系统哟，快来节省大量的部署安装时间来搞定业务吧~ Nebula Graph 阿里云计算巢现 30 天免费使用中，   &lt;a href="http://c.nxw.so/6P6BU"&gt;点击链接&lt;/a&gt;来用用图数据库吧~&lt;/p&gt;  &lt;p&gt;想看源码的小伙伴可以前往 GitHub 阅读、使用、(^з^)-☆ star 它 →   &lt;a href="http://c.nxw.so/8yTlk"&gt;GitHub&lt;/a&gt;；和其他的 NebulaGraph 用户一起交流图数据库技术和应用技能，留下   &lt;a href="http://c.nxw.so/9jvQN"&gt;「你的名片」&lt;/a&gt;一起玩耍呢~&lt;/p&gt;&lt;/div&gt;&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>dev</category>
      <guid isPermaLink="true">https://itindex.net/detail/62561-%E6%95%B0%E6%8D%AE-%E6%B2%BB%E7%90%86-%E5%BC%80%E6%BA%90</guid>
      <pubDate>Wed, 28 Dec 2022 00:00:00 CST</pubDate>
    </item>
    <item>
      <title>推荐20个开源的不错前端低代码项目</title>
      <link>https://itindex.net/detail/62508-%E5%BC%80%E6%BA%90-%E5%89%8D%E7%AB%AF-%E4%BB%A3%E7%A0%81</link>
      <description>&lt;p&gt;近几年，在技术领域低代码是比较热门的话题，比如阿里云推出了易搭，通过简单的拖拽、配置，即可完成业务应用的搭建，腾讯云则是推出了微搭，通过行业化模板、拖放式组件和可视化配置快速构建多端应用。&lt;/p&gt; &lt;p&gt;低代码是基于可视化和模型驱动理念，结合云原生与多端体验技术，它能够在多数业务场景下实现大幅度的提效降本，为专业开发者提供了一种全新的高生产力开发范式。下面就来分享几个值得学习和使用的低代码开源项目，更深入地了解什么是低代码。&lt;/p&gt; &lt;h1&gt;1，Appsmith&lt;/h1&gt; &lt;p&gt;Appsmith 是一款开源低代码框架，主要用于构建管理面板、内部工具和仪表板等，允许拖放 UI 组件来构建页面，通过连接到任何 API、数据库或 GraphQL 源，并使用 JavaScript 语言编写逻辑，可以在短时间内创建内部应用程序。  &lt;br /&gt;   &lt;img alt="&amp;#22312;&amp;#36825;&amp;#37324;&amp;#25554;&amp;#20837;&amp;#22270;&amp;#29255;&amp;#25551;&amp;#36848;" src="https://segmentfault.com/img/remote/1460000042810462" title="&amp;#22312;&amp;#36825;&amp;#37324;&amp;#25554;&amp;#20837;&amp;#22270;&amp;#29255;&amp;#25551;&amp;#36848;"&gt;&lt;/img&gt;&lt;/p&gt; &lt;p&gt;项目链接：  &lt;a href="https://github.com/appsmithorg/appsmith" rel="nofollow noreferrer"&gt;https://github.com/appsmithor...&lt;/a&gt;&lt;/p&gt; &lt;h1&gt;2，LowCodeEngine&lt;/h1&gt; &lt;p&gt;LowCodeEngine 由阿里巴巴钉钉宜搭团队开发的低代码框架，基于阿里云的云基础设施和钉钉的企业数字化操作系统。使用者只需要基于低代码引擎便可以快速定制符合自己业务需求的低代码平台。同时LowCodeEngine还提供了很多的基础组件，可以帮助开发者快速的构建业务页面。  &lt;br /&gt;  &lt;img alt="&amp;#22312;&amp;#36825;&amp;#37324;&amp;#25554;&amp;#20837;&amp;#22270;&amp;#29255;&amp;#25551;&amp;#36848;" src="https://segmentfault.com/img/remote/1460000042810463" title="&amp;#22312;&amp;#36825;&amp;#37324;&amp;#25554;&amp;#20837;&amp;#22270;&amp;#29255;&amp;#25551;&amp;#36848;"&gt;&lt;/img&gt;&lt;/p&gt; &lt;p&gt;项目链接：  &lt;a href="https://github.com/alibaba/lowcode-demo" rel="nofollow noreferrer"&gt;https://github.com/alibaba/lo...&lt;/a&gt;&lt;/p&gt; &lt;h1&gt;3，Amis&lt;/h1&gt; &lt;p&gt;Amis 是百度开源的一款前端低代码框架，通过 JSON 配置就能生成各种后台页面，包括数据获取、表单提交及验证等功能，同时，Amis内置 100+ 种 UI 组件，能够满足各种页面组件展现的需求，极大减少开发成本，甚至可以不需要了解前端。&lt;/p&gt; &lt;p&gt;amis 在百度内部得到了广泛使用，在 4 年多的时间里创建了 3w 多页面，从内容审核到机器管理，从数据分析到模型训练，amis 满足了各种各样的页面需求。我们可以  &lt;a href="https://github.com/baidu/amis" rel="nofollow noreferrer"&gt;下载源码&lt;/a&gt;，然后使用如下的命令来体验。&lt;/p&gt; &lt;pre&gt;  &lt;code&gt;# 安装项目 npm 依赖，在 node 12 下会有报错但不影响正常使用。
npm i --legacy-peer-deps
# 启动项目，等编译结束后通过 http://127.0.0.1:8888/examples/pages/simple 访问。
npm start&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;  &lt;img alt="&amp;#22312;&amp;#36825;&amp;#37324;&amp;#25554;&amp;#20837;&amp;#22270;&amp;#29255;&amp;#25551;&amp;#36848;" src="https://segmentfault.com/img/remote/1460000042810464" title="&amp;#22312;&amp;#36825;&amp;#37324;&amp;#25554;&amp;#20837;&amp;#22270;&amp;#29255;&amp;#25551;&amp;#36848;"&gt;&lt;/img&gt;&lt;/p&gt; &lt;p&gt;项目链接：  &lt;a href="https://github.com/baidu/amis" rel="nofollow noreferrer"&gt;https://github.com/baidu/amis&lt;/a&gt;&lt;/p&gt; &lt;h1&gt;4，tmagic-editor&lt;/h1&gt; &lt;p&gt;tmagic-editor是一款由腾讯技术中心出品的一款开源低代码框架，能够实现零代码/低代码生成页面 ， 可以快速搭建可视化页面生产平台，让非技术人员可以通过拖拽和配置，自助生成H5页面、PC页面、TV页面，大大降低页面生产成本 。&lt;/p&gt; &lt;p&gt;  &lt;img alt="&amp;#22312;&amp;#36825;&amp;#37324;&amp;#25554;&amp;#20837;&amp;#22270;&amp;#29255;&amp;#25551;&amp;#36848;" src="https://segmentfault.com/img/remote/1460000042810510" title="&amp;#22312;&amp;#36825;&amp;#37324;&amp;#25554;&amp;#20837;&amp;#22270;&amp;#29255;&amp;#25551;&amp;#36848;"&gt;&lt;/img&gt;&lt;/p&gt; &lt;p&gt;项目链接：  &lt;a href="https://gitee.com/webapp_qsr/tmagic-editor" rel="nofollow noreferrer"&gt;https://gitee.com/webapp_qsr/...&lt;/a&gt;&lt;/p&gt; &lt;h1&gt;5，dooring-electron-lowcode&lt;/h1&gt; &lt;p&gt;dooring-electron-lowcode是一款功能强大，专业可靠的可视化页面配置解决方案，致力于提供一套简单方便、专业可靠、无限可能的H5落地页最佳实践。技术栈以react和typescript为主， 后台采用nodejs开发, electron作为桌面端基础方案。&lt;/p&gt; &lt;p&gt;  &lt;img alt="&amp;#22312;&amp;#36825;&amp;#37324;&amp;#25554;&amp;#20837;&amp;#22270;&amp;#29255;&amp;#25551;&amp;#36848;" src="https://segmentfault.com/img/remote/1460000042810466" title="&amp;#22312;&amp;#36825;&amp;#37324;&amp;#25554;&amp;#20837;&amp;#22270;&amp;#29255;&amp;#25551;&amp;#36848;"&gt;&lt;/img&gt;&lt;/p&gt; &lt;p&gt;和它一样的还有H5-Dooring，H5-Dooring是一款功能强大、专业可靠的H5可视化页面配置解决方案，致力于提供一套简单方便、专业可靠、无限可能的H5落地页最佳实践。技术栈以 React 和 TypeScript 为主，后台采用nodejs开发。除了 H5 版，还提供了 PC 版。&lt;/p&gt; &lt;p&gt;  &lt;img alt="&amp;#22312;&amp;#36825;&amp;#37324;&amp;#25554;&amp;#20837;&amp;#22270;&amp;#29255;&amp;#25551;&amp;#36848;" src="https://segmentfault.com/img/remote/1460000042810511" title="&amp;#22312;&amp;#36825;&amp;#37324;&amp;#25554;&amp;#20837;&amp;#22270;&amp;#29255;&amp;#25551;&amp;#36848;"&gt;&lt;/img&gt;&lt;/p&gt; &lt;h1&gt;6，vite-vue3-lowcode&lt;/h1&gt; &lt;p&gt;vite-vue3-lowcode 是一款基于Vite2.x + Vue3.x + TypeScript技术框架的的H5 低代码平台。目前只是一个简单的模板，支持数据配置的导入和导出，配置的修改和删除操作，用到的技术有sandbox 中执行自定义逻辑、monaco-editor 自定义代码补全、vue3 createRenderer 自定义渲染器等。  &lt;br /&gt;  &lt;img alt="&amp;#22312;&amp;#36825;&amp;#37324;&amp;#25554;&amp;#20837;&amp;#22270;&amp;#29255;&amp;#25551;&amp;#36848;" src="https://segmentfault.com/img/remote/1460000042810468" title="&amp;#22312;&amp;#36825;&amp;#37324;&amp;#25554;&amp;#20837;&amp;#22270;&amp;#29255;&amp;#25551;&amp;#36848;"&gt;&lt;/img&gt;&lt;/p&gt; &lt;h1&gt;7，shida&lt;/h1&gt; &lt;p&gt;shida是一个视频可视化搭建项目，开发者可以通过拖拽就可以快速地生产一个短视频，使用方式就像易企秀或百度 H5 等 h5 低代码平台一样。shida的后端视频合成部分是基于  &lt;a href="https://github.com/tnfe/FFCreator" rel="nofollow noreferrer"&gt;FFCreator&lt;/a&gt;进行开发的，FFCreator 是一个基于 node.js 的轻量、灵活的短视频加工库，只需要添加几张图片或视频片段再加一段背景音乐，就可以快速生成一个很酷的视频短片。&lt;/p&gt; &lt;p&gt;  &lt;img alt="&amp;#22312;&amp;#36825;&amp;#37324;&amp;#25554;&amp;#20837;&amp;#22270;&amp;#29255;&amp;#25551;&amp;#36848;" src="https://segmentfault.com/img/remote/1460000042810469" title="&amp;#22312;&amp;#36825;&amp;#37324;&amp;#25554;&amp;#20837;&amp;#22270;&amp;#29255;&amp;#25551;&amp;#36848;"&gt;&lt;/img&gt;&lt;/p&gt; &lt;p&gt;项目链接：  &lt;a href="https://github.com/tnfe/shida" rel="nofollow noreferrer"&gt;https://github.com/tnfe/shida&lt;/a&gt;&lt;/p&gt; &lt;h1&gt;8，quark-h5&lt;/h1&gt; &lt;p&gt;quark-h5是一个使用Vue + Koa的前端低代码框架，和大多数的前端低代码框架一样，采用的是编辑器生成页面JSON数据，服务端负责存取JSON数据，渲染时从服务端取数据JSON交给前端模板处理。&lt;/p&gt; &lt;p&gt;  &lt;img alt="&amp;#22312;&amp;#36825;&amp;#37324;&amp;#25554;&amp;#20837;&amp;#22270;&amp;#29255;&amp;#25551;&amp;#36848;" src="https://segmentfault.com/img/remote/1460000042810470" title="&amp;#22312;&amp;#36825;&amp;#37324;&amp;#25554;&amp;#20837;&amp;#22270;&amp;#29255;&amp;#25551;&amp;#36848;"&gt;&lt;/img&gt;&lt;/p&gt; &lt;p&gt;项目链接：  &lt;a href="https://github.com/huangwei9527/quark-h5" rel="nofollow noreferrer"&gt;https://github.com/huangwei95...&lt;/a&gt;&lt;/p&gt; &lt;h1&gt;9，gods-pen&lt;/h1&gt; &lt;p&gt;码良是一个在线生成 H5 页面并提供页面管理和页面编辑的平台，用于快速制作 H5 页面。用户无需掌握复杂的编程技术，通过简单拖拽、少量配置即可制作精美的页面，可用于营销场景下的页面制作。同时，也为开发者提供了完备的编程接入能力，通过脚本和组件的形式获得强大的组件行为和交互控制能力。&lt;/p&gt; &lt;p&gt;  &lt;img alt="&amp;#22312;&amp;#36825;&amp;#37324;&amp;#25554;&amp;#20837;&amp;#22270;&amp;#29255;&amp;#25551;&amp;#36848;" src="https://segmentfault.com/img/remote/1460000042810471" title="&amp;#22312;&amp;#36825;&amp;#37324;&amp;#25554;&amp;#20837;&amp;#22270;&amp;#29255;&amp;#25551;&amp;#36848;"&gt;&lt;/img&gt;&lt;/p&gt; &lt;p&gt;项目链接：  &lt;a href="https://github.com/ymm-tech/gods-pen" rel="nofollow noreferrer"&gt;https://github.com/ymm-tech/g...&lt;/a&gt;&lt;/p&gt; &lt;h1&gt;10，luban-h5&lt;/h1&gt; &lt;p&gt;鲁班H5是基于Vue2.0开发的支持拖拽方式来快速生成页面的低代码平台，功能基本类似于易企秀、Maka、百度等H5平台。  &lt;br /&gt;  &lt;img alt="&amp;#22312;&amp;#36825;&amp;#37324;&amp;#25554;&amp;#20837;&amp;#22270;&amp;#29255;&amp;#25551;&amp;#36848;" src="https://segmentfault.com/img/remote/1460000042810472" title="&amp;#22312;&amp;#36825;&amp;#37324;&amp;#25554;&amp;#20837;&amp;#22270;&amp;#29255;&amp;#25551;&amp;#36848;"&gt;&lt;/img&gt;&lt;/p&gt; &lt;p&gt;项目链接：  &lt;a href="https://github.com/ly525/luban-h5" rel="nofollow noreferrer"&gt;https://github.com/ly525/luba...&lt;/a&gt;&lt;/p&gt; &lt;h1&gt;11，mometa&lt;/h1&gt; &lt;p&gt;mometa 并不是传统主流的低代码平台（如 amis），mometa 是面向研发、代码可视设计编辑平台，更像是 dreamweaver、gui的可视编辑 工具。借助它，我们可以获得所见即所得的可视编辑开发体验。&lt;/p&gt; &lt;p&gt;  &lt;img alt="&amp;#22312;&amp;#36825;&amp;#37324;&amp;#25554;&amp;#20837;&amp;#22270;&amp;#29255;&amp;#25551;&amp;#36848;" src="https://segmentfault.com/img/remote/1460000042810473" title="&amp;#22312;&amp;#36825;&amp;#37324;&amp;#25554;&amp;#20837;&amp;#22270;&amp;#29255;&amp;#25551;&amp;#36848;"&gt;&lt;/img&gt;&lt;/p&gt; &lt;p&gt;项目链接：  &lt;a href="https://github.com/imcuttle/mometa" rel="nofollow noreferrer"&gt;https://github.com/imcuttle/m...&lt;/a&gt;&lt;/p&gt; &lt;h1&gt;12，h5-factory&lt;/h1&gt; &lt;p&gt;h5-factory是专题页面可视化编辑工具，可以通过拖拽来设计页面，并且指出一键生成html文件。  &lt;br /&gt;  &lt;img alt="&amp;#22312;&amp;#36825;&amp;#37324;&amp;#25554;&amp;#20837;&amp;#22270;&amp;#29255;&amp;#25551;&amp;#36848;" src="https://segmentfault.com/img/remote/1460000042810474" title="&amp;#22312;&amp;#36825;&amp;#37324;&amp;#25554;&amp;#20837;&amp;#22270;&amp;#29255;&amp;#25551;&amp;#36848;"&gt;&lt;/img&gt;&lt;/p&gt; &lt;p&gt;项目链接：  &lt;a href="https://github.com/xuhaiqing/h5-factory" rel="nofollow noreferrer"&gt;https://github.com/xuhaiqing/...&lt;/a&gt;&lt;/p&gt; &lt;h1&gt;13，steedos-platform&lt;/h1&gt; &lt;p&gt;steedos-platform是 Salesforce 低代码平台的开源替代方案，使用可视化工具进行模型设计, 页面设计, 流程设计, 报表设计，只需点击鼠标，就能快速创建应用程序，实现敏捷开发的新高度。在技术实现细节上，steedos-platform使用元数据定义对象，字段，配置，代码，逻辑和页面布局，并基于这些元数据自动生成系统的数据结构以及Steedos应用程序的用户界面和自动化逻辑。&lt;/p&gt; &lt;p&gt;  &lt;img alt="&amp;#22312;&amp;#36825;&amp;#37324;&amp;#25554;&amp;#20837;&amp;#22270;&amp;#29255;&amp;#25551;&amp;#36848;" src="https://segmentfault.com/img/remote/1460000042810475" title="&amp;#22312;&amp;#36825;&amp;#37324;&amp;#25554;&amp;#20837;&amp;#22270;&amp;#29255;&amp;#25551;&amp;#36848;"&gt;&lt;/img&gt;&lt;/p&gt; &lt;p&gt;不过，steedos-platform是一整套的低代码解决方案，如果需要单独开发或者部署需要同时具备前后端架构的能力。&lt;/p&gt; &lt;p&gt;项目链接：  &lt;a href="https://github.com/steedos/steedos-platform/" rel="nofollow noreferrer"&gt;https://github.com/steedos/st...&lt;/a&gt;&lt;/p&gt; &lt;h1&gt;14，lz-h5-edit&lt;/h1&gt; &lt;p&gt;lz-h5-edit是一个H5低代码编辑平台，支持拖拽、缩放、旋转、动画、撤销、重做、组合元素等方式来创建H5页面。&lt;/p&gt; &lt;p&gt;  &lt;img alt="&amp;#22312;&amp;#36825;&amp;#37324;&amp;#25554;&amp;#20837;&amp;#22270;&amp;#29255;&amp;#25551;&amp;#36848;" src="https://segmentfault.com/img/remote/1460000042810476" title="&amp;#22312;&amp;#36825;&amp;#37324;&amp;#25554;&amp;#20837;&amp;#22270;&amp;#29255;&amp;#25551;&amp;#36848;"&gt;&lt;/img&gt;&lt;/p&gt; &lt;p&gt;项目链接：  &lt;a href="https://github.com/lzuntalented/lz-h5-edit" rel="nofollow noreferrer"&gt;https://github.com/lzuntalent...&lt;/a&gt;&lt;/p&gt; &lt;h1&gt;15，tefact&lt;/h1&gt; &lt;p&gt;星搭开源无代码编辑器，使用图形化界面生成 网站、H5和表单，无需任何代码即可生成应用程序。&lt;/p&gt; &lt;p&gt;  &lt;img alt="&amp;#22312;&amp;#36825;&amp;#37324;&amp;#25554;&amp;#20837;&amp;#22270;&amp;#29255;&amp;#25551;&amp;#36848;" src="https://segmentfault.com/img/remote/1460000042810477" title="&amp;#22312;&amp;#36825;&amp;#37324;&amp;#25554;&amp;#20837;&amp;#22270;&amp;#29255;&amp;#25551;&amp;#36848;"&gt;&lt;/img&gt;&lt;/p&gt; &lt;p&gt;项目链接：  &lt;a href="https://github.com/staringos/tefact/" rel="nofollow noreferrer"&gt;https://github.com/staringos/...&lt;/a&gt;&lt;/p&gt; &lt;h1&gt;16，fast-poster&lt;/h1&gt; &lt;p&gt;fast-poster是一款使用Python+Vue开发的通用海报生成器，可以用来快速的生成海报。使用时知需要经过三步即可生成所需要的海报：启动服务 &amp;gt; 编辑海报 &amp;gt; 生成代码。&lt;/p&gt; &lt;p&gt;  &lt;img alt="&amp;#22312;&amp;#36825;&amp;#37324;&amp;#25554;&amp;#20837;&amp;#22270;&amp;#29255;&amp;#25551;&amp;#36848;" src="https://segmentfault.com/img/remote/1460000042810512" title="&amp;#22312;&amp;#36825;&amp;#37324;&amp;#25554;&amp;#20837;&amp;#22270;&amp;#29255;&amp;#25551;&amp;#36848;"&gt;&lt;/img&gt;&lt;/p&gt; &lt;p&gt;项目链接：  &lt;a href="https://gitee.com/vitojc/fast-poster" rel="nofollow noreferrer"&gt;https://gitee.com/vitojc/fast...&lt;/a&gt;&lt;/p&gt; &lt;h1&gt;17，openDataV&lt;/h1&gt; &lt;p&gt;OpenDataV 是一款基于Vue3 + vite + TypeScript开发前端可视化低代码平台。支持拖拽式、可视化、低代码数据可视化开发，你可以用它自由的拼接成各种炫酷的大屏，同时支持接入开发者自己开发的组件接入平台。&lt;/p&gt; &lt;p&gt;  &lt;img alt="&amp;#22312;&amp;#36825;&amp;#37324;&amp;#25554;&amp;#20837;&amp;#22270;&amp;#29255;&amp;#25551;&amp;#36848;" src="https://segmentfault.com/img/remote/1460000042810479" title="&amp;#22312;&amp;#36825;&amp;#37324;&amp;#25554;&amp;#20837;&amp;#22270;&amp;#29255;&amp;#25551;&amp;#36848;"&gt;&lt;/img&gt;&lt;/p&gt; &lt;p&gt;项目链接：  &lt;a href="https://github.com/AnsGoo/openDataV" rel="nofollow noreferrer"&gt;https://github.com/AnsGoo/ope...&lt;/a&gt;&lt;/p&gt; &lt;h1&gt;18，mall-cook&lt;/h1&gt; &lt;p&gt;Mall-Cook 是一个基于 vue 开发的可视化商城搭建平台，包括多页面可视化构建、Json Schema 生成器（可视化搭建物料控制面板），实现组件流水线式标准接入平台。最新版本使用 uni-app 重构物料、模板项目，支持生成 H5、小程序多端商城。&lt;/p&gt; &lt;p&gt;  &lt;img alt="&amp;#22312;&amp;#36825;&amp;#37324;&amp;#25554;&amp;#20837;&amp;#22270;&amp;#29255;&amp;#25551;&amp;#36848;" src="https://segmentfault.com/img/remote/1460000042810480" title="&amp;#22312;&amp;#36825;&amp;#37324;&amp;#25554;&amp;#20837;&amp;#22270;&amp;#29255;&amp;#25551;&amp;#36848;"&gt;&lt;/img&gt;&lt;/p&gt; &lt;p&gt;![]()项目链接：  &lt;a href="https://github.com/wangyuan389/mall-cook" rel="nofollow noreferrer"&gt;https://github.com/wangyuan38...&lt;/a&gt;&lt;/p&gt; &lt;h1&gt;19，form-generator&lt;/h1&gt; &lt;p&gt;form-generator是一个基于Element UI表单设计及代码生成器，可将生成的代码直接运行在基于Element的vue项目中，也可导出JSON表单，使用配套的解析器将JSON解析成真实的表单。&lt;/p&gt; &lt;p&gt;  &lt;img alt="&amp;#22312;&amp;#36825;&amp;#37324;&amp;#25554;&amp;#20837;&amp;#22270;&amp;#29255;&amp;#25551;&amp;#36848;" src="https://segmentfault.com/img/remote/1460000042810481" title="&amp;#22312;&amp;#36825;&amp;#37324;&amp;#25554;&amp;#20837;&amp;#22270;&amp;#29255;&amp;#25551;&amp;#36848;"&gt;&lt;/img&gt;&lt;/p&gt; &lt;p&gt;项目链接：  &lt;a href="https://github.com/JakHuang/form-generator" rel="nofollow noreferrer"&gt;https://github.com/JakHuang/f...&lt;/a&gt;&lt;/p&gt; &lt;h1&gt;20，vjdesign&lt;/h1&gt; &lt;p&gt;vjdesign是一款支持任何 vue 项目中的组件，不需要二次开发就可以定义支持的组件以及组件的属性，并且对组件的属性和数据的关系以及表单的交互行为也可以通过设计器配置实现。&lt;/p&gt; &lt;p&gt;  &lt;img alt="&amp;#22312;&amp;#36825;&amp;#37324;&amp;#25554;&amp;#20837;&amp;#22270;&amp;#29255;&amp;#25551;&amp;#36848;" src="https://segmentfault.com/img/remote/1460000042810482" title="&amp;#22312;&amp;#36825;&amp;#37324;&amp;#25554;&amp;#20837;&amp;#22270;&amp;#29255;&amp;#25551;&amp;#36848;"&gt;&lt;/img&gt;&lt;/p&gt; &lt;p&gt;项目链接：  &lt;a href="https://github.com/fyl080801/vjdesign" rel="nofollow noreferrer"&gt;https://github.com/fyl080801/...&lt;/a&gt;&lt;/p&gt; &lt;p&gt;除了上面部分开源的低代码平台外，还有很多是不开源的，具体参考下面的链接：  &lt;a href="https://github.com/taowen/awesome-lowcode" rel="nofollow noreferrer"&gt;https://github.com/taowen/awe...&lt;/a&gt;。&lt;/p&gt;&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>前端</category>
      <guid isPermaLink="true">https://itindex.net/detail/62508-%E5%BC%80%E6%BA%90-%E5%89%8D%E7%AB%AF-%E4%BB%A3%E7%A0%81</guid>
      <pubDate>Tue, 15 Nov 2022 09:18:45 CST</pubDate>
    </item>
    <item>
      <title>Envoy Gateway 首个正式开源版本介绍</title>
      <link>https://itindex.net/detail/62465-envoy-gateway-%E5%BC%80%E6%BA%90</link>
      <description>&lt;p&gt;今年五月 Envoy 社区宣布成立一个新的项目   &lt;a href="https://github.com/envoyproxy/gateway" rel="noopener" target="_blank" title="Envoy Gateway"&gt;Envoy Gateway&lt;/a&gt;
，经过五个月时间的开发，今天它的首个开源版本   &lt;a href="https://gateway.envoyproxy.io/releases/v0.2.html" rel="noopener" target="_blank" title="v0.2 &amp;#21457;&amp;#24067;"&gt;v0.2 发布&lt;/a&gt;
，本文将为你介绍什么是 Envoy Gateway，它的架构、快速入门和使用指南。&lt;/p&gt;
 &lt;h2&gt;什么是 Envoy Gateway？&lt;/h2&gt;
 &lt;p&gt;Envoy Gateway 是一个用于管理 Envoy Proxy 的开源项目，可单独使用或作为 Kubernetes 中应用的网关。它通过了 Gateway API 核心一致性测试，使用   &lt;a href="https://gateway-api.sigs.k8s.io/" rel="noopener" target="_blank" title="Gateway API"&gt;Gateway API&lt;/a&gt;
 作为其唯一的配置语言来管理 Envoy 代理，支持   &lt;code&gt;GatewayClass&lt;/code&gt;、Gateway、  &lt;code&gt;HTTPRoute&lt;/code&gt; 和   &lt;code&gt;TLSRoute&lt;/code&gt; 资源。&lt;/p&gt;
 &lt;p&gt;Envoy Gateway 的目标是降低用户采用 Envoy 作为 API 网关的障碍，以吸引更多用户采用 Envoy。它通过入口和 L4/L7 流量路由，表达式、可扩展、面向角色的 API 设计，使其成为供应商建立 API 网关增值产品的基础。&lt;/p&gt;
 &lt;p&gt;Envoy Gateway 的核心优势是轻量级、开放、可动态编程，尤其是为后端增加了安全功能，这些优势使得它很适合作为后端 API 网关。&lt;/p&gt;
 &lt;h2&gt;架构&lt;/h2&gt;
 &lt;p&gt;下图展示的是 Envoy Gateway 的架构，图中的阴影部分表示是 Envoy Gateway。你可以通过静态和动态两种方式来配置它，其中的 Provider 是针对不同的供应商开发的。&lt;/p&gt;
 &lt;p&gt;
  
  
  
  
    
      &lt;img alt="image" src="https://jimmysong.io/blog/envoy-gateway-release/envoy-gateway-arch.svg"&gt;&lt;/img&gt;
    
  
  Envoy Gateway 架构图

&lt;/p&gt;
 &lt;p&gt;该架构图基于 Envoy Gateway v0.2 版本绘制，并参考了   &lt;a href="https://gateway.envoyproxy.io/design/system-design.html#architecture" rel="noopener" target="_blank" title="Envoy Gateway &amp;#25991;&amp;#26723;"&gt;Envoy Gateway 文档&lt;/a&gt;
。&lt;/p&gt;
 &lt;h2&gt;配置流程&lt;/h2&gt;
 &lt;p&gt;下面是配置 Envoy Gateway 的流程：&lt;/p&gt;
 &lt;ol&gt;
  &lt;li&gt;你可以通过配置文件为其 Provider 提供静态配置（目前仅支持 Kubernetes 和文件方式，将来有可能支持更多不同平台供应商），在 Envoy Gateway 启动后，你还可以通过 Kubernetes 动态配置 Provider；&lt;/li&gt;
  &lt;li&gt;这些配置会被 Provider 中的资源监视器看到后应用到 Envoy Gateway 的资源转义器上；&lt;/li&gt;
  &lt;li&gt;资源转义器将配置分别转义为针对不同 Provider 开发的基础设施管理器的中间表示（Infra IR）和 xDS 中间表示（xDS IR）；&lt;/li&gt;
  &lt;li&gt;两种中间表示（IR）分别应用到其对应的基础设施管理器和 xDS 转义上；&lt;/li&gt;
  &lt;li&gt;基础设施通过增删改查（CRDU）Kubernetes Deployment、Service 等资源来运行 Envoy，xDS 管理器通过将 xDS 协议配置 xDS Server 的方式配置 Envoy 代理；&lt;/li&gt;
  &lt;li&gt;对于 Envoy 代理的流量请求将应用以上配置并转发到对应的后端；&lt;/li&gt;
&lt;/ol&gt;
 &lt;p&gt;以上就是对 Envoy Gateway 配置的流程，关于 Envoy 代理设计的更多细节请参考   &lt;a href="https://gateway.envoyproxy.io/design/system-design.html" rel="noopener" target="_blank" title="Envoy Gateway &amp;#25991;&amp;#26723;"&gt;Envoy Gateway 文档&lt;/a&gt;
&lt;/p&gt;
 &lt;h2&gt;快速开始&lt;/h2&gt;
 &lt;p&gt;下面我们将在 Kubernetes 集群中安装 Envoy Gateway 并部署一个测试网站来看看它是否可以正常运行。&lt;/p&gt;
 &lt;h3&gt;前提&lt;/h3&gt;
 &lt;p&gt;在使用 Envoy Gateway 前，请注意它的兼容性问题，参考  &lt;a href="https://gateway.envoyproxy.io/intro/compatibility.html" rel="noopener" target="_blank" title="&amp;#20860;&amp;#23481;&amp;#24615;&amp;#30697;&amp;#38453;"&gt;兼容性矩阵&lt;/a&gt;
。&lt;/p&gt;
 &lt;table&gt;

  &lt;tr&gt;
   &lt;th&gt;Envoy Gateway 版本&lt;/th&gt;
   &lt;th&gt;Envoy 代理版本&lt;/th&gt;
   &lt;th&gt;Gateway API 版本&lt;/th&gt;
   &lt;th&gt;Kubernetes 最低版本&lt;/th&gt;
&lt;/tr&gt;


  &lt;tr&gt;
   &lt;td&gt;v0.2.0&lt;/td&gt;
   &lt;td&gt;    &lt;strong&gt;v1.23 - 最新&lt;/strong&gt;&lt;/td&gt;
   &lt;td&gt;    &lt;strong&gt;v0.5.1&lt;/strong&gt;&lt;/td&gt;
   &lt;td&gt;v1.24&lt;/td&gt;
&lt;/tr&gt;

&lt;/table&gt;
 &lt;h3&gt;安装&lt;/h3&gt;
 &lt;p&gt;因为在 Kubernetes 集群中 Gateway API 不是默认安装的，因此你需要手动安装 Gateway CRD。执行下面的命令安装 Gateway CRD 和 Envoy Gateway：&lt;/p&gt;
 &lt;div&gt;  &lt;pre&gt;   &lt;code&gt;kubectl apply -f https://github.com/envoyproxy/gateway/releases/download/v0.2.0/install.yaml
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt; &lt;p&gt;该命令将为你创建   &lt;code&gt;envoy-gateway-system&lt;/code&gt;、  &lt;code&gt;gateway-system&lt;/code&gt; 两个命令空间，同时创了一系列 CRD。还有一些 Envoy Gateway 运行所需要的 ConfigMap、服务账户、RBAC、角色等。&lt;/p&gt;
 &lt;h3&gt;测试&lt;/h3&gt;
 &lt;p&gt;执行下面的命令安装 GatewayClass、Gateway、HTTPRoute 和示例应用程序：&lt;/p&gt;
 &lt;pre&gt;  &lt;code&gt;kubectl apply -f https://github.com/envoyproxy/gateway/releases/download/v0.2.0/quickstart.yaml
&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;端口转发到 Envoy 服务：&lt;/p&gt;
 &lt;div&gt;  &lt;pre&gt;   &lt;code&gt;kubectl -n envoy-gateway-system port-forward service/${ENVOY_SERVICE} 8888:8080 &amp;amp;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt; &lt;p&gt;通过 Envoy 代理 curl 示例应用程序：&lt;/p&gt;
 &lt;div&gt;  &lt;pre&gt;   &lt;code&gt;curl --verbose --header &amp;quot;Host: www.example.com&amp;quot; http://localhost:8888/get
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt; &lt;p&gt;你将看到如下输出：&lt;/p&gt;
 &lt;pre&gt;  &lt;code&gt;*   Trying 127.0.0.1:8888...
* Connected to localhost (127.0.0.1) port 8888 (#0)
&amp;gt; GET /get HTTP/1.1
&amp;gt; Host: www.example.com
&amp;gt; User-Agent: curl/7.79.1
&amp;gt; Accept: */*
&amp;gt;
* Mark bundle as not supporting multiuse
&amp;lt; HTTP/1.1 200 OK
&amp;lt; content-type: application/json
&amp;lt; x-content-type-options: nosniff
&amp;lt; date: Sat, 22 Oct 2022 07:10:34 GMT
&amp;lt; content-length: 513
&amp;lt; x-envoy-upstream-service-time: 22
&amp;lt; server: envoy
&amp;lt; x-envoy-decorator-operation: backend.default.svc.cluster.local:3000/*
&amp;lt;
{
 &amp;quot;path&amp;quot;: &amp;quot;/get&amp;quot;,
 &amp;quot;host&amp;quot;: &amp;quot;www.example.com&amp;quot;,
 &amp;quot;method&amp;quot;: &amp;quot;GET&amp;quot;,
 &amp;quot;proto&amp;quot;: &amp;quot;HTTP/1.1&amp;quot;,
 &amp;quot;headers&amp;quot;: {
  &amp;quot;Accept&amp;quot;: [
   &amp;quot;*/*&amp;quot;
  ],
  &amp;quot;User-Agent&amp;quot;: [
   &amp;quot;curl/7.79.1&amp;quot;
  //内容省略...
 },
 &amp;quot;namespace&amp;quot;: &amp;quot;default&amp;quot;,
 &amp;quot;ingress&amp;quot;: &amp;quot;&amp;quot;,
 &amp;quot;service&amp;quot;: &amp;quot;&amp;quot;,
 &amp;quot;pod&amp;quot;: &amp;quot;backend-764c65b4dd-lp6jw&amp;quot;
* Connection #0 to host localhost left intact
}
&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;如果你看到以上输出就证明你的 Envoy Gateway 安装成功并可正常运行。&lt;/p&gt;
 &lt;p&gt;如果你的 Kubernetes 集群部署在云上，可以使用云负载均衡器的 IP 地址来访问测试：&lt;/p&gt;
 &lt;div&gt;  &lt;pre&gt;   &lt;code&gt;export GATEWAY_HOST=$(kubectl get svc/${ENVOY_SERVICE} -n envoy-gateway-system -o jsonpath=&amp;apos;{.status.loadBalancer.ingress[0].ip}&amp;apos;)
curl --verbose --header &amp;quot;Host: www.example.com&amp;quot; http://$GATEWAY_HOST:8080/get
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt; &lt;p&gt;笔者使用的 GKE，运行上面的命令，  &lt;code&gt;GATEWAY_HOST&lt;/code&gt; 环境变量的值几位负载均衡器的 IP 地址，最后同样可以类似上文的   &lt;code&gt;curl&lt;/code&gt; 输出。&lt;/p&gt;
 &lt;h2&gt;Envoy Gateway 中使用的 CRD 简介&lt;/h2&gt;
 &lt;p&gt;上文说到安装 Envoy Gateway 的时候创建了一系列 CRD，在此我们将简要介绍一下这些 CRD：&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;code&gt;envoyproxies.config.gateway.envoyproxy.io&lt;/code&gt;：Envoy Proxy API 的 Schema。&lt;/li&gt;
  &lt;li&gt;   &lt;code&gt;gatewayclasses.gateway.networking.k8s.io&lt;/code&gt;：GatewayClass 描述了用户可用于创建 Gateway 资源的一类 Gateways。建议将该资源作为 Gateway 的模板。这意味着一个 Gateway 是基于创建时 GatewayClass 的状态，对 GatewayClass 或相关参数的改变不会向下传播到现有的 Gateway。这项建议的目的是限制 GatewayClass 或相关参数的变化的爆炸半径。如果实现者选择将 GatewayClass 的变化传播给现有 Gateway，实现者必须清楚地记录这一点。每当一个或多个 Gateway 使用一个 GatewayClass 时，实现必须在相关的 GatewayClass 上添加    &lt;code&gt;gateway-exists-finalizer.gateway.networking.k8s.io&lt;/code&gt; finalizer。这可以确保与 Gateway 相关的 GatewayClass 在使用中不会被删除。GatewayClass 是一个集群级的资源。&lt;/li&gt;
  &lt;li&gt;   &lt;code&gt;gateways.gateway.networking.k8s.io&lt;/code&gt;：Gateway 通过将 Listener 与一组 IP 地址绑定，代表了一个服务流量处理基础设施的实例。&lt;/li&gt;
  &lt;li&gt;   &lt;code&gt;httproutes.gateway.networking.k8s.io&lt;/code&gt;： HTTPRoute 提供了一种路由 HTTP 请求的方法。这包括通过主机名、路径、标头或查询参数来匹配请求的能力。过滤器可以用来指定额外的处理步骤。后端指定匹配的请求应该被路由到哪里。&lt;/li&gt;
  &lt;li&gt;   &lt;code&gt;referencegrants.gateway.networking.k8s.io&lt;/code&gt;：   &lt;code&gt;ReferenceGrant&lt;/code&gt; 标识了其他命名空间中的资源种类，这些资源被信任为引用与策略相同的名称空间中的指定资源种类。 每个    &lt;code&gt;ReferenceGrant&lt;/code&gt; 都可以用来代表一个独特的信任关系。额外的引用授权可以用来添加到它们所定义的命名空间的入站引用的信任源集合中。Gateway API 中的所有跨命名空间引用（除了跨命名空间的 Gateway-route 附件）都需要一个    &lt;code&gt;ReferenceGrant&lt;/code&gt;。&lt;/li&gt;
  &lt;li&gt;   &lt;code&gt;referencepolicies.gateway.networking.k8s.io&lt;/code&gt;：该资源已被重新命名为ReferenceGrant，且将在 Gateway API v0.6.0 中被删除，而采用相同的 ReferenceGrant 资源。&lt;/li&gt;
  &lt;li&gt;   &lt;code&gt;tcproutes.gateway.networking.k8s.io&lt;/code&gt;：TCPRoute 提供了一种路由 TCP 请求的方法。当与 Gateway 监听器结合使用时，它可以用来将监听器指定的端口上的连接转发到 TCPRoute 指定的一组后端。&lt;/li&gt;
  &lt;li&gt;   &lt;code&gt;tlsroutes.gateway.networking.k8s.io&lt;/code&gt;：TLSRoute 资源与 TCPRoute 类似，但可以配置为与 TLS 特定的元数据相匹配。这使得为特定的 TLS 监听器匹配数据流时有更大的灵活性。如果你需要将流量转发到一个 TLS 监听器的单一目标，你可以选择同时使用 TCPRoute 和 TLS 监听器。&lt;/li&gt;
  &lt;li&gt;   &lt;code&gt;udproutes.gateway.networking.k8s.io&lt;/code&gt;：UDPRoute 提供了一种路由 UDP 流量的方法。当与网关监听器结合使用时，它可以用来将监听器指定的端口上的流量转发到 UDPRoute 指定的一组后端。&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;关于这些 CRD 的具体用法以及 Envoy Gateway 的用户指南，将在以后的文章中分享。&lt;/p&gt;
 &lt;h2&gt;参考&lt;/h2&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;a href="https://lib.jimmysong.io/blog/introducing-envoy-gateway/" rel="noopener" target="_blank" title="&amp;#24320;&amp;#28304;&amp;#39033;&amp;#30446; Envoy Gateway &amp;#31616;&amp;#20171; - lib.jimmysong.io"&gt;开源项目 Envoy Gateway 简介 - lib.jimmysong.io&lt;/a&gt;
&lt;/li&gt;
  &lt;li&gt;   &lt;a href="https://lib.jimmysong.io/blog/the-gateway-to-a-new-frontier/" rel="noopener" target="_blank" title="Envoy API Gateway&amp;#8212;&amp;#8212; &amp;#25512;&amp;#21160;&amp;#32593;&amp;#20851;&amp;#30340;&amp;#36827;&amp;#19968;&amp;#27493;&amp;#21457;&amp;#23637; - lib.jimmysong.io"&gt;Envoy API Gateway—— 推动网关的进一步发展 - lib.jimmysong.io&lt;/a&gt;
&lt;/li&gt;
  &lt;li&gt;   &lt;a href="https://gateway.envoyproxy.io/" rel="noopener" target="_blank" title="Envoy Gateway &amp;#23448;&amp;#26041;&amp;#32593;&amp;#31449; - gateway.envoyproxy.io"&gt;Envoy Gateway 官方网站 - gateway.envoyproxy.io&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

      &lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category />
      <guid isPermaLink="true">https://itindex.net/detail/62465-envoy-gateway-%E5%BC%80%E6%BA%90</guid>
      <pubDate>Fri, 21 Oct 2022 10:18:40 CST</pubDate>
    </item>
    <item>
      <title>Meta开源JavaScript内存泄漏监测工具MemLab</title>
      <link>https://itindex.net/detail/62431-meta-%E5%BC%80%E6%BA%90-javascript</link>
      <description>&lt;h1&gt;一、MemLab简介&lt;/h1&gt;
 &lt;p&gt;上周，Facebook母公司Meta 宣布了开源 MemLab，一个基于 Chromium 的浏览器的 JavaScript 应用程序内存泄漏监测工具。同时，Facebook 技术团队指出：“应用程序的性能和功能正确性问题通常会被用户立即留意到。然而内存泄漏却不一样，它不容易被立即察觉，但它每次都会吃掉一大块内存，使得整个网络会话的响应变得非常慢。”&lt;/p&gt;
 &lt;p&gt;为了帮助开发人员解决这个问题，Meta 构建了MemLab，它可以自动进行内存泄漏检测并更容易找到泄漏的根本原因。据官方公告称，Meta 内部使用它成功地控制了不可持续的内存增长，并识别了产品和基础设施中的内存泄漏和内存优化机会。目前，Meta 已经在 GitHub 上开源了 MemLab。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="image.png" src="https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/313eb4b7b54646729f524cba974bba76~tplv-k3u1fbpfcp-watermark.image?"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;Facebook在 2020 年被重新设计为单页应用程序 (SPA)，该应用程序的大部分渲染和导航使用客户端 JavaScript。而 Meta 的大多数其他流行网络应用程序都使用了类似的架构来构建，包括 Instagram 和 Workplace。&lt;/p&gt;
 &lt;p&gt;&lt;/p&gt;
 &lt;p&gt;虽然这种架构使其能够提供更快的用户交互、更好的开发人员体验和更像应用程序的感觉，但在客户端维护 Web 应用程序状态会使有效管理客户端内存变得更加复杂。且内存泄漏的后果在单页应用程序（SPA）中更为严重，因为用户可能会在较长时间内持续与页面交互，而 MemLab 就是专为这种场景设计的。&lt;/p&gt;
 &lt;p&gt;在许多情况下，JavaScript 可能会泄漏内存。比如，Facebook 工程师 Liang Gong 和 Glenn Conner 就在公告中谈到，当你向 Chrome 控制台发送一个对象时，Chrome 会对其进行隐藏引用，以防止它被收集。另外，auth0 工程师 Sebastian Peyrott 也曾谈到，其他可能出现泄漏或未绑定内存增长的情况则与意外使用全局变量、忘记计时器或回调以及 DOM 外引用有关。&lt;/p&gt;
 &lt;p&gt;虽然 Chrome 开发者工具提供了检查 JavaScript 代码的内存行为的基本手段，比如时间线视图和配置文件视图，但这并不直接，也不能自动化。相反，MemLab 则可以很容易地集成到 CI/CD 管道中，Gong 和 Conner 介绍道。&lt;/p&gt;
 &lt;h1&gt;二、工作原理&lt;/h1&gt;
 &lt;p&gt;MemLab 的工作原理是通过预定义的测试场景运行 headless 浏览器并对 JavaScript heap snapshots 进行差异分析来发现内存泄漏。要达到这一目的，需要经过如下几步：&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;导航到页面并返回；&lt;/li&gt;
  &lt;li&gt;查找未释放的对象；&lt;/li&gt;
  &lt;li&gt;显示泄露追踪结果。&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;据悉，MemLab 使用了一个名为“Puppeteer”的 Node.js 库。它可以控制 Google Chrome 或其它基于 Chromium 内核打造的浏览器，且默认情况下以 headless 模式运行（方便命令行交互）。&lt;/p&gt;
 &lt;p&gt;Facebook 工程师解释称，MemLab 的工作方式就是导航到一个页面、然后离开。正常情况下，可预计该页面分配的大部分内存也将被释放。但若没有被释放，则意味其存在极高的内存泄露可能性。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="image.png" src="https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/ac9e8c69dfaa46159bbd708057629eeb~tplv-k3u1fbpfcp-watermark.image?"&gt;&lt;/img&gt;
 
我们知道，React 使用存储在树结构中、被称作 Fibers 的对象，来表示内存中的浏览器文档对象模型（DOM）。据该团队所述，这可能是存在“巨大内存泄露”的一个主要原因。拥有强连接图的缺点很是显著，若有任何外部引用指向图的任何部分，就无法对整个图开展垃圾回收。&lt;/p&gt;
 &lt;p&gt;对于浏览器内存泄漏检测，MemLab 需要开发人员提供的唯一输入是一个测试场景文件，该文件定义了如何通过 overriding Puppeteer API 和 CSS 选择器的三个回调来与网页进行交互。MemLab 会自动对 JavaScript heap 进行差异化处理，完善内存泄漏，并对结果进行汇总。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="MemLab-figure-2-FINAL.gif" src="https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/23c3fb7b966f4962a8b714443a1009a4~tplv-k3u1fbpfcp-watermark.image?"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;MemLab 的另一特性，就是提供了 JavaScript 堆的图形视图、启用了用于检查堆快照的 API 。这意味着开发者能够编写开展内存断言的测试，例如声明某个对象将不再存在于内存中。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="image.png" src="https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/d36a6ba054a54b2d89063576a4fe1a87~tplv-k3u1fbpfcp-watermark.image?"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;此外还有一个用于查找重复字符串实例的工具，在某个案例中，团队发现字符串占用了 70% 的堆、且其中半数至少有一个重复的实例。包括 Chrome、Edge、Firefox 在内的浏览器，都有附带内存检查工具。但正如以为开发者在 Hacker News 上吐槽的那样，这些开发工具难以在调试过程中揪出内存泄露的问题。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="image.png" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/2964251ed4bf4e80ac212fd7e8f41a06~tplv-k3u1fbpfcp-watermark.image?"&gt;&lt;/img&gt;
最后，MemLab 的另一项强大功能，就是可以在测试期间作为命令过程的一部分而运行。这意味着如果代码中引入了严重的泄露，开发者们也能够在投入生产环境前加以捕获。&lt;/p&gt;
 &lt;p&gt;除了内存泄漏检测之外，MemLab还包括一组用于查找内存优化机会的内置CLI命令和api，并提供如下的功能：&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;堆内容分解&lt;/li&gt;
  &lt;li&gt;监测单个对象的内存使用情况&lt;/li&gt;
  &lt;li&gt;查找重复的字符串实例&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;比如，监测浏览内存泄漏部分UI。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="image.png" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/c4384bd59c304abb96b1fcd27f92c7e3~tplv-k3u1fbpfcp-watermark.image?"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;跟踪UI内存泄漏的整个链路。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="image.png" src="https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/df39db4945bf47109ddffc4c6e03e8f2~tplv-k3u1fbpfcp-watermark.image?"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h1&gt;三、基本使用&lt;/h1&gt;
 &lt;h2&gt;3.1 安装与使用&lt;/h2&gt;
 &lt;p&gt;首先，需要全局安装MemLab插件，安装的命令如下：&lt;/p&gt;
 &lt;pre&gt;  &lt;code&gt;npm install -g memlab
&lt;/code&gt;&lt;/pre&gt;
 &lt;p&gt;例如下面是找到谷歌Maps中的内存泄漏的例子，我妈可以创建一个场景文件来定义如何与谷歌Maps进行交互，比如将其命名为test-google-maps.js。&lt;/p&gt;
 &lt;pre&gt;  &lt;code&gt;function url() {
  return &amp;apos;https://www.google.com/maps/@37.386427,-122.0428214,11z&amp;apos;;
}


async function action(page) {
  await page.click(&amp;apos;button[aria-label=&amp;quot;Hotels&amp;quot;]&amp;apos;);
}


async function back(page) {
  await page.click(&amp;apos;[aria-label=&amp;quot;Clear search&amp;quot;]&amp;apos;);
}


module.exports = {action, back, url};
&lt;/code&gt;&lt;/pre&gt;
 &lt;p&gt;现在使用下面的命令运行上面的js代码, 当memlab与web页面进行交互时就会运行内置的泄漏检测器检测内存泄漏。&lt;/p&gt;
 &lt;pre&gt;  &lt;code&gt;memlab run --scenario test-google-maps.js
&lt;/code&gt;&lt;/pre&gt;
 &lt;p&gt;执行结束之后，Memlab就会打印内存泄漏结果，显示每个泄漏对象集群的一个代表性保留跟踪。&lt;/p&gt;
 &lt;pre&gt;  &lt;code&gt;MemLab found 46 leak(s)
--Similar leaks in this run: 4--
--Retained size of leaked objects: 8.3MB--
[Window] (native) @35847 [8.3MB]
  --20 (element)---&amp;gt;  [InternalNode] (native) @130981728 [8.3MB]
  --8 (element)---&amp;gt;  [InternalNode] (native) @130980288 [8.3MB]
  --1 (element)---&amp;gt;  [EventListener] (native) @131009888 [8.3MB]
  --1 (element)---&amp;gt;  [V8EventListener] (native) @224808192 [8.3MB]
  --1 (element)---&amp;gt;  [eventHandler] (closure) @168079 [8.3MB]
  --context (internal)---&amp;gt;  [&amp;lt;function scope&amp;gt;] (object) @181905 [8.3MB]
  --bigArray (variable)---&amp;gt;  [Array] (object) @182925 [8.3MB]
  --elements (internal)---&amp;gt;  [(object elements)] (array) @182929 [8.3MB]
...
&lt;/code&gt;&lt;/pre&gt;
 &lt;p&gt;接着，我们就可以通过这些捕获的跟踪信息定位到里面的方法。&lt;/p&gt;
 &lt;p&gt;当然，我没也可以使用Memlab查看基于从Chromium、Hermes、memlab或任何node.js或electronic .js程序中获取的单个JavaScript堆快照检测到的内存问题。&lt;/p&gt;
 &lt;pre&gt;  &lt;code&gt;memlab view-heap --snapshot &amp;lt;PATH TO .heapsnapshot FILE&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
 &lt;p&gt;然后，我没可以使用对象的id，比如node-id @28173来精确定位特定的堆对象。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="image.png" src="https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/e795fdc3752e4984b70dc9cd7e0bbd67~tplv-k3u1fbpfcp-watermark.image?"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;当然，Memlab也支持自定义的检漏器，自定义检漏器时需要在场景文件中添加一个  &lt;a href="https://facebookincubator.github.io/memlab/docs/api/interfaces/core_src.IScenario/#-optional-beforeleakfilter-initleakfiltercallback"&gt;filterLeak文档&lt;/a&gt;。对于目标交互分配的每个未释放的堆对象(节点)将调用filterLeak。&lt;/p&gt;
 &lt;pre&gt;  &lt;code&gt;function filterLeak(node, heap) {
  // ... your leak detector logic
  // return true to mark the node as a memory leak
};
&lt;/code&gt;&lt;/pre&gt;
 &lt;p&gt;heap是最终JavaScript堆快照的图形表示。&lt;/p&gt;
 &lt;h2&gt;3.2 堆分析与研究&lt;/h2&gt;
 &lt;p&gt;除了检测内存泄露意外，Memlab还提供了很多其他有用的命令，比如查看某个对象在运行的交互过程中的整个链路。&lt;/p&gt;
 &lt;pre&gt;  &lt;code&gt;memlab analyze unbound-object
&lt;/code&gt;&lt;/pre&gt;
 &lt;p&gt;获取V8/hermes .heapsnapshot文件。&lt;/p&gt;
 &lt;pre&gt;  &lt;code&gt;memlab analyze unbound-object --snapshot-dir &amp;lt;DIR_OF_SNAPSHOT_FILES&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
 &lt;p&gt;使用memlab analyze查看所有内置内存分析。&lt;/p&gt;
 &lt;pre&gt;  &lt;code&gt;memlab trace --node-id &amp;lt;HEAP_OBJECT_ID&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
 &lt;h2&gt;3.3 Memlab API&lt;/h2&gt;
 &lt;p&gt;Memlab的npm包支持在浏览器中启动端到端运行并检测内存泄漏。&lt;/p&gt;
 &lt;pre&gt;  &lt;code&gt;const memlab = require(&amp;apos;memlab&amp;apos;);


const scenario = {
    url: () =&amp;gt; &amp;apos;https://www.google.com/maps/@37.386427,-122.0428214,11z&amp;apos;,
    action: async (page) =&amp;gt; await page.click(&amp;apos;button[aria-label=&amp;quot;Hotels&amp;quot;]&amp;apos;),
    back: async (page) =&amp;gt; await page.click(&amp;apos;[aria-label=&amp;quot;Clear search&amp;quot;]&amp;apos;),
}
memlab.run({scenario});
&lt;/code&gt;&lt;/pre&gt;
 &lt;p&gt;&lt;/p&gt;
 &lt;h2&gt;3.4 内存断言&lt;/h2&gt;
 &lt;p&gt;Memlab支持在Node.js程序中进行Jest测试，也可以使用图视图API来获得其自身状态的堆图视图，执行自内存检查，并编写各种内存断言。&lt;/p&gt;
 &lt;pre&gt;  &lt;code&gt;import type {IHeapSnapshot} from &amp;apos;@memlab/core&amp;apos;;
import {config, takeNodeMinimalHeap, tagObject} from &amp;apos;@memlab/core&amp;apos;;
test(&amp;apos;memory test&amp;apos;, async () =&amp;gt; {
  config.muteConsole = true;
  const o1 = {};
  let o2 = {};
  tagObject(o1, &amp;apos;memlab-mark-1&amp;apos;);
  tagObject(o2, &amp;apos;memlab-mark-2&amp;apos;);
  o2 = null;
  const heap: IHeapSnapshot = await takeNodeMinimalHeap();
   //断言函数
  expect(heap.hasObjectWithTag(&amp;apos;memlab-mark-1&amp;apos;)).toBe(true);
  //断言函数
  expect(heap.hasObjectWithTag(&amp;apos;memlab-mark-2&amp;apos;)).toBe(false);
}, 30000);
&lt;/code&gt;&lt;/pre&gt;
 &lt;p&gt;&lt;/p&gt;
 &lt;p&gt;附件：  &lt;a href="https://github.com/facebookincubator/memlab"&gt;https://github.com/facebookincubator/memlab&lt;/a&gt;&lt;/p&gt;
&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category />
      <guid isPermaLink="true">https://itindex.net/detail/62431-meta-%E5%BC%80%E6%BA%90-javascript</guid>
      <pubDate>Thu, 22 Sep 2022 11:26:54 CST</pubDate>
    </item>
    <item>
      <title>“当你不再是程序员，很多事会脱离掌控”—— 对话全球最大独立开源公司SUSE CTO</title>
      <link>https://itindex.net/detail/62388-%E7%A8%8B%E5%BA%8F%E5%91%98-%E8%84%B1%E7%A6%BB-%E5%AF%B9%E8%AF%9D</link>
      <description>&lt;div&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;【CSDN 编者按】作为全球企业级开源解决方案领导者SUSE的CTO，Brent Schroeder见证了一波又一波技术潮流赋能企业创新发展，为企业注入新活力。同时，他也感受到技术革新给企业的商业策略、运营方式和IT基础设施所带来的冲击。他认为，在如今开源和云原生大潮来临的时代，企业需要做好新一轮乘风破浪的准备。&lt;/p&gt;作者 | 宋林飞          &lt;br /&gt;出品 |《    &lt;a href="https://mp.weixin.qq.com/s?__biz=MjM5MjAwODM4MA==&amp;mid=2650923479&amp;idx=1&amp;sn=1e12b0ec83bf373b3f10dabc6cf64f94"&gt;新程序员》&lt;/a&gt;编辑部    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;1992年，三名来自德国的数学系学生和一名刚毕业不久的软件工程师共同成立了一个UNIX服务小组，这也是SUSE的雏形。两年后，SUSE发布了其首个Linux发行版—SUSE Linux1.0。此后，SUSE与IBM、SAP等头部科技企业逐渐达成合作，并巩固了自身在企业级Linux解决方案供应商中的地位。经过三十年的发展，SUSE已然成为了头部开源技术供应商之一，除了原有的企业级Linux产品外，它还向客户提供Kubernetes管理平台和边缘解决方案，利用团队专业的开源技术帮助企业用户实现业务增长。&lt;/p&gt;    &lt;p&gt;作为SUSE的CTO，Brent Schroeder在概括自己的日常工作时说道：“我现在做的事和我作为学生、程序员时本质上没有区别，都是在解决问题，变化的是所解决问题的深度和广度。”他表示，现在往往需要跳出这个时代，预判十至二十年后的技术发展趋势，从而提前布局SUSE的产品和研发方向，在未来持续地为用户提供适应时代的解决方案。在从事技术行业的几十年中，Brent Schroeder见证了互联网兴起、大数据时代，再到如今的开源、云原生发展壮大，一波又一波的技术浪潮不断冲击着企业的商业策略、运营方式。在新技术，新思潮带来的变革中，企业唯有在人才、技术、基础设施等方面提前做好准备，才能更好地抓住机遇，应对不断变化的外部环境。除了技术方面的思考，为SUSE团队提供必要的支持也是他管理工作的核心。回想他从程序员向管理层的转型经历，Brent Schroeder坦诚地说：“当你不再是执行者时，很多事都脱离了你的掌控，这令人沮丧。”他认为软技能的培养对想要从事管理工作的技术人尤为重要。&lt;/p&gt;    &lt;p&gt;在本期《      &lt;a href="https://mp.weixin.qq.com/s?__biz=MjM5MjAwODM4MA==&amp;mid=2650923479&amp;idx=1&amp;sn=1e12b0ec83bf373b3f10dabc6cf64f94"&gt;新程序员 004&lt;/a&gt;》的采访中，Brent Schroeder就程序员向管理层转型所遇到的挑战及企业该如何应对新技术潮流的冲击分享了他的观点。以下是本次访谈的详细内容。&lt;/p&gt;    &lt;p&gt;&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;学生时期与代码邂逅&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;      &lt;br /&gt;&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;邹欣：20世纪80年代，你在美国爱荷华州立大学攻读计算机和工商管理双学位，那时计算机科学还不像现在这么火热，是什么引起了你对编程的兴趣并决定学习这个专业，直到成为一名技术专家？&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;Brent Schroeder：&lt;/strong&gt;决定修双学位是因为我那时就感受到了技术赋能商业运作的潜力。我与编程的渊源可以追溯到高中时的编程课，我在Apple II上开发了一个课表管理程序，帮我在排课表时省去了很多麻烦。尽管最初只是用程序实现一些简单的功能，但在那个纸质文件盛行的年代，编程对效率的提升作用深深吸引了我。&lt;/p&gt;    &lt;p&gt;在后来的职业生涯中，我致力于探究解决问题的方式，这个习惯也一直驱动着我。作为一名技术专家，我从事的工作可以概括为理解企业在业务中遇到的挑战，并使用技术方式帮助他们解决那些被认为太困难、太昂贵或太耗时的问题，这是非常令人兴奋的。&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;邹欣：大学期间你印象最深刻的一个人或一件事是什么？&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;Brent Schroeder：&lt;/strong&gt;老实说，选出一件事或一个人还是挺难的，因为实在太多了。美国爱荷华州立大学的计算机科学专业非常有竞争力，历史悠久。第一台数字电子计算机—ABC计算机（Atanasoff-Berry Computer）就是在爱荷华州立大学诞生的。但至今我时常会想起一位离散逻辑学的教授在开学第一天对我们的“挑衅”：“向你右边及左边的同学作自我介绍，因为到期中考试的时候，你们之中将有一个不会再出现在这儿了（因为课程很难）。”&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;邹欣：你提及，在大学期间你就感受到了技术赋能商业的潜力，那时你是否为自己作出了清晰的职业规划？&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;Brent Schroeder：&lt;/strong&gt;在我二十多岁时，其实没有长远的规划和目标，只是单纯地享受解决问题的过程和学习新技术。直到进入职场十年后我才开始规划自己的职业蓝图。我最初给自己定下的目标是成为一名技术部门经理，后来慢慢地开始承担管理责任、熟悉CTO的角色，这对我很有吸引力。&lt;/p&gt;    &lt;p&gt;      &lt;br /&gt;&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;SUSE CTO的“岗位描述”&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;      &lt;br /&gt;&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;邹欣：从一名学生，到程序员，再到技术专家、CTO，这一路你的思考方式和对技术的理解一定在不停变化，能否与我们分享在不同阶段它们是如何变化的？&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;Brent Schroeder：&lt;/strong&gt;从学生到进入职场至今，我所做的事本质上都是解决问题。但变化的是所解决问题的深度、广度和时效。&lt;/p&gt;    &lt;p&gt;当我还是一个程序员时，我关注的是赶紧把代码写好，与客户对接，思考如何满足他们实时的业务需求，多数时间需要我解决的问题都是具象的。我的产出看得见、摸得到，在短期内就可以生效并能马上得到客户反馈。&lt;/p&gt;    &lt;p&gt;当我进入管理层后，大部分精力都花在了打破团队隔阂，解决他们的问题。比如给团队提供合适的工具，帮助他们提升培养能力，定位团队中的问题，使他们更好地协同等，所处理的事物越来越多样，我需要去平衡自己可用的时间，并且产出不会在短期有直观效果的成果。&lt;/p&gt;    &lt;p&gt;成为CTO之后，我思考问题的眼界和层次有了天翻地覆的变化，需要以超前于现有技术环境一代甚至两代的视野来分析整个技术生态的发展趋势。包括预判哪些技术会出现、哪些会成功、哪些不会向预期的方向发展。并以此为依据，结合目前客户和行业所面临的挑战，使用适当的技术组合来帮助他们提前布局，实现商业目标。&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;邹欣：的确，当作为一位程序员时，你只需要解决具象的问题，产出马上就能被看到。但当你进入管理层，级别越高，你做的事影响越深远，同时也需要更长的时间才能见效。在适应这种变化的过程中你可曾遇到过挑战？&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;Brent Schroeder：&lt;/strong&gt;无论是我自己，还是在帮助其他人从程序员向管理层转型的过程中，我发现最大的挑战是“你不再是执行者”。因为在之前的职业生涯中我们已经习惯参与到项目的具体事宜中，通过自己的产出来推进项目的进程。如此，项目成功与否、质量如何，对我来说完全可控。&lt;/p&gt;    &lt;p&gt;当你进入管理层之后一切都变了。规划好方向后，剩下的工作需要依靠团队来完成，我能做的只是给他们权限和支持，不能再切实地控制项目走向。尤其是当项目进展不顺利时，这会使人非常沮丧，你会忍不住地想深入细节，自己动手完成一些工作。但你必须摒弃这种想法，如果你把时间花在项目执行层面，就没时间做你的本职工作，为团队成员提供必要的支持。&lt;/p&gt;    &lt;p&gt;所以，在角色的过渡中，个人心理建设很重要。需要认清自己的动力是马上得到别人的认可，还是从更宏观、长远的角度来推动事情的发展。&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;邹欣：许多学生和年轻技术人都认为只要掌握了过硬的技术，自己就无所不能。但当他们慢慢深入职场，参与到更大的团队中，开始参与管理工作时，除了技术能力外，软实力也开始变得重要。你对此有何见解？你认为想要自己的职业生涯能更好地发展，哪些软实力是不可或缺的？&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;Brent Schroeder：&lt;/strong&gt;我认为对于技术人而言，技术实力固然重要，但真正将开发者、管理者和CTO区分开的正是软实力。有很多开发者尽管资历很深，但他们还是宁愿留在一线，因为他们认为软实力的提升对他们是很大的挑战。&lt;/p&gt;    &lt;p&gt;对于未来想要参与管理的技术人而言，与人交往的能力往往比技术实力更重要。比如，你所带领的团队中有表现较好的成员，这时你就需要思考如何在工作上给他们挑战从而帮助他们更好地成长，如何通过奖励机制激励他们，如何使他们发挥带头作用从而使整个团队得到提升。同时，你的团队中也会有表现欠佳的成员，你需要给他们适当的引导、培训，鼓励他们，通过管理手段改善他们的表现，使其成为团队的贡献者而不是团队的“拖油瓶”。此外，你的团队可能还需要与其他团队合作，你需要说服他们和你一起为了共同的目标努力。&lt;/p&gt;    &lt;p&gt;这些都是作为管理者每天都会遇到的挑战，想要克服这些困难，人际交往能力是不可或缺的。不幸的是，这种能力是从课本上学不到的，只能通过不断地实践来培养。&lt;/p&gt;    &lt;p&gt;      &lt;br /&gt;&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;开源与软件的强强联合&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;      &lt;br /&gt;&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;邹欣：前面提到，你初学编程时使用的是闭源的Apple II，但如今的学生学习时刚接触的大多是开源系统。对于这种变化，你怎么看？&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;Brent Schroeder：&lt;/strong&gt;我认为这种变化是令人兴奋的。虽然Apple II不是现在意义上的开源系统，但我们也有对其进行修改的权限。记得当时我和几个同学在学校机房的电脑上恶作剧，在命令行中动手脚，这样别人在执行这些命令时系统就会给出奇奇怪怪的反馈，至今想起这些我依然感到非常有趣。如今的学生能够看到底层代码并自由地对其进行修改，这能使编程的学习充满乐趣。&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;邹欣：在如今的科技产业中，许多企业都在使用开源协作来驱动创新。你认为开源为什么能成为推动科技创新的主要实践？&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;Brent Schroeder：&lt;/strong&gt;开源能推动创新是因为它激发了工程师们与同行合作的热情，从而把世界上最优秀的工程师们聚集在一起，通过开放协作的方式共同攻克业内难题。&lt;/p&gt;    &lt;p&gt;开源社区是多元化的，这体现在社区成员拥有不同的背景、经验，来自不同的环境。将这些多元化的经验、特点综合在一起，所产生的能力要远远超过公司内部一群身处“与世隔绝”环境中的程序员。通过这种大规模合作，多元化的社区，开源软件才能实现快速的迭代和创新。&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;邹欣：假如一个项目的参与者越多，项目中的Bug就越容易被发现和修复，质量也会变得越来越好，这无可厚非。但对于企业级开源软件来说，因为它们在企业运作中扮演重要角色，很多企业对于如此开放的软件难免会不信任。那么，该如何解决这些企业用户的担忧？&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;Brent Schroeder：&lt;/strong&gt;不可否认的是，我们这些沉浸在开源中的人常常会忽视外行人对开源软件的误解。我上周参加了一个金融行业的专题讨论，很多出席的行业人士都表示了他们对引入开源软件的担忧。&lt;/p&gt;    &lt;p&gt;我认为要做好企业级开源解决方案，除了促进开放协作，同时也要关注软件的可控性和社区治理机制来确保产品的质量和安全性，这些是企业用户最关切的。尽管在开源协作中社区的多元性和活跃度非常重要，但开源项目必须要向着既定的方向发展，这就需要社区治理能力，保证社区内的成员都向着同一目标贡献。有许多开源项目都是由于缺乏共同的方向，导致了开发过程中不必要的复杂性和优先级冲突因而越做越差。&lt;/p&gt;    &lt;p&gt;因此，要解决企业用户的担忧，可以从以下方面着手：&lt;/p&gt;    &lt;ul&gt;      &lt;li&gt;        &lt;p&gt;确认项目目标，使社区成员保持同步。&lt;/p&gt;&lt;/li&gt;      &lt;li&gt;        &lt;p&gt;从开发流程上重视软件的完整度和安全性，手段包括严格的代码审查机制、测试制度，并保证每一次上线都经过此流程。&lt;/p&gt;&lt;/li&gt;      &lt;li&gt;        &lt;p&gt;如果开发中使用到了外部软件，需注意外部软件是否存在漏洞和安全问题。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;    &lt;p&gt;假如开源开发严格按照完善的流程执行，所产出软件的安全性、可控性会超过闭源软件，因为它从设计到落地得到了无数社区精英的关注。你可以想象假如在闭源公司中要雇佣这么多人来审查代码和进行安全测试成本会有多高！&lt;/p&gt;    &lt;p&gt;      &lt;br /&gt;&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;云原生浪潮下的科技公司&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;      &lt;br /&gt;&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;邹欣：除了开源之外，云原生在近几年也异常火热。自云原生概念被首次提出以来，大家对云原生的定义仿佛一直在变化。我们该如何理解这种定义的变化？基于现在的环境和你的理解，你如何定义云原生?&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;Brent Schroeder：&lt;/strong&gt;虽然云原生在迅速发展，但我不认为它定义的本质在改变，变化的是在定义范围内我们能实现什么。行业对云原生最初的描述中提及了许多概念，包括DevOps、微服务、敏捷开发、持续交付、公司文化和流程，更多的是过程和结果，而不是特定技术。这代表云原生所使用的技术可以不断发展、变化，以构建可伸缩、有弹性、持续迭代、在云上可靠的应用程序。&lt;/p&gt;    &lt;p&gt;在早期，大家还在讨论什么类型的应用与云原生更匹配，但随着云原生产出了越来越多的价值，如今人们希望将它应用到更多的场景中，所以必须开拓新的技术手段。&lt;/p&gt;    &lt;p&gt;我对云原生的定义非常简单—它是流程和技术的结合，让企业可以构建和快速迭代应用，使应用具有动态伸缩的能力，赋予基础设施更高的容错率，并可移植到所需的业务领域以满足业务需求—这意味着它可以运行在公有云、私有数据中心中，或广泛分布在各种边缘节点上。&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;邹欣：云原生如今已成为实现企业数字化转型的技术趋势。在引入云原生之前企业应该有何准备？企业该如何拥抱云原生趋势？&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;Brent Schroeder：&lt;/strong&gt;云原生会对企业的技术、人才、商业战略等方面带来冲击，如果企业不做好周全的准备，云原生技术引入会对企业产生负面影响。&lt;/p&gt;    &lt;p&gt;引入云原生技术从企业购买云服务开始，因为云原生不会在一夜之间发生。它需要企业加大对IT部门和业务部门所需人员，以及必要技术的投资。&lt;/p&gt;    &lt;p&gt;人才方面，从IT运营团队、平台架构师到开发人员，他们必须经过适当的培训，学习云原生开发所需技能。人才投资会大大提高成功的概率和效率。&lt;/p&gt;    &lt;p&gt;企业和员工必须熟悉云原生架构下的开发流程，采用以CI/CD开发和交付方法为核心的DevOps文化。&lt;/p&gt;    &lt;p&gt;选择合适的技术。容器、Kubernetes、基础设施，通过自动化代码来管理权限管控或安全策略，都是云原生技术概念。&lt;/p&gt;    &lt;p&gt;总的来说，企业拥抱云原生首要考虑的应该是思想、策略和人才培养，最后才是技术。虽然大多数云原生基础设施的技术都是开源的，但我们强烈鼓励企业与技术提供商加强合作，借助技术提供商的丰富经验来协助技术引入和项目的生命周期管理。&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;邹欣：云原生技术正在渗透传统行业，在未来十年，哪些行业受到的云原生影响最大？云原生将如何改变它们?&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;Brent Schroeder：&lt;/strong&gt;我认为所有行业都会受到云原生的冲击。如今，每个行业的公司都在变成技术公司。无论是零售、制造、金融、运输、医疗，甚至是政府服务，都面临着向客户提供多样化服务和新功能的挑战。企业必须能够更快地作出反应，来支持多样化的需求，应对变化—而云原生方法和技术可以实现这一点。&lt;/p&gt;    &lt;p&gt;前段时间，我与一家石油公司就边缘计算技术进行了沟通，我惊讶地发现他们也将自己定位成一家科技公司。他们认为云原生技术可以提升内部系统对石油基础设施的监控能力，提升其解决和预判问题的效率，使企业运作更平稳、可靠。&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;邹欣：对于云原生时代的开发者来说，他们必须具备哪些技能才能满足行业的需求?&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;Brent Schroeder：&lt;/strong&gt;我认为开发者必须掌握云原生相关的方法论，包括DevOps、CI/CD、微服务等。技术行业的发展目标是尽可能从业务开发中抽象出底层技术，这使得业务开发人员能专注于业务交付，而不是IT基础设施。但对于底层架构工程师来说，他们有更多需要掌握的技能，包括容器、Kubernetes等。&lt;/p&gt;    &lt;p&gt;      &lt;br /&gt;&lt;/p&gt;    &lt;p&gt;      &lt;img&gt;&lt;/img&gt;&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;SUSE成功的“秘诀”&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;      &lt;br /&gt;&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;邹欣：SUSE的研发团队目前主要关注哪些研究领域?&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;Brent Schroeder：&lt;/strong&gt;SUSE是创新、可靠、安全的企业级开源解决方案的全球领导者，超过60%的财富500强企业依赖SUSE来驱动他们的业务。我们专注于企业级Linux、Kubernetes管理平台和边缘解决方案的研发，并与社区合作，使我们的客户能在各个领域创新。&lt;/p&gt;    &lt;p&gt;简化和扩展云原生应用是我们研发的重点领域，因为企业对它的需求日渐紧迫。时至今日，云原生开发需要很多专业技能和新技术。为了让更多的企业享受云原生的红利，SUSE专注于简化容器、Kubernetes、边缘计算等企业级解决方案。这些解决方案将在2022年及以后走向企业，帮助他们实现应用程序升级和数据集成。&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;邹欣：Kubernetes正在成为“一切”的平台，SUSE如何帮助用户更好地融入这个技术潮流？&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;Brent Schroeder：&lt;/strong&gt;我想扩展一下此观点—Kubernetes和Linux正在成为一切的平台，Linux作为企业基础设施和操作环境，而Kubernetes被用来编配平台，它们相互配合。SUSE的产品正在为客户提供完整的企业级解决方案。首先，我们有可适配企业用户几乎所有基础设施的企业级Linux操作系统——SUSE Linux Enterprise。然后基于Kubernetes的企业容器管理平台SUSE Rancher—它是业内可扩展性最高、最开放的Kubernetes平台，帮助用户管理分布在多个数据中心、多个云和边缘结点的集群，部署混合和多云架构以解决业务痛点问题。最后，为提升开发人员的生产力和灵活性，SUSE提供Rancher Desktop和SLE BCI(基于容器镜像)。&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;邹欣：“如何从开源中赚钱”仍然是中国所有开源创业公司所面临的主要问题之一，SUSE有什么经验或建议可以分享?&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;Brent Schroeder：&lt;/strong&gt;开源是SUSE的核心，它推动我们与客户合作创新。开源技术的源代码面向所有人开放，因此开源商业化的业务模型是要向客户提供代码之外的增量价值。&lt;/p&gt;    &lt;p&gt;SUSE通过提供大量开源项目的发行版来传递这种价值。这使得客户不必成为开源项目的专家，也能专注自身的业务，将人力主要投入在服务客户层面而不用担心基础设施。&lt;/p&gt;    &lt;p&gt;这种业务方式的挑战是客户认为他们可以自己构建和支持这些开源项目。这无可厚非，如果有足够的时间和资源，很多企业都可以这样做。但是，我总是会反问考虑这种模式的潜在客户：“你们的业务目标是什么?既然引入开源是为了支持业务或服务客户，为什么不允许专业的开源供应商来为你们部署开源基础设施？”&lt;/p&gt;    &lt;p&gt;      &lt;strong&gt;— 推荐阅读 —&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;《      &lt;a href="https://mp.weixin.qq.com/s?__biz=MjM5MjAwODM4MA==&amp;mid=2650923479&amp;idx=1&amp;sn=1e12b0ec83bf373b3f10dabc6cf64f94"&gt;新程序员001-004&lt;/a&gt;》已全面上市&lt;/p&gt;    &lt;p&gt;   &lt;br /&gt;&lt;/p&gt;&lt;/div&gt;
    &lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category />
      <guid isPermaLink="true">https://itindex.net/detail/62388-%E7%A8%8B%E5%BA%8F%E5%91%98-%E8%84%B1%E7%A6%BB-%E5%AF%B9%E8%AF%9D</guid>
      <pubDate>Mon, 29 Aug 2022 07:36:07 CST</pubDate>
    </item>
    <item>
      <title>梦工厂动画的 MoonRay 将开源</title>
      <link>https://itindex.net/detail/62353-%E6%A2%A6%E5%B7%A5%E5%8E%82-%E5%8A%A8%E7%94%BB-moonray</link>
      <description>在 SIGGRAPH 国际图像学年会上，梦工厂动画 &lt;a href="https://www.awn.com/news/dreamworks-animation-release-moonray-open-source"&gt;宣布&lt;/a&gt;其私有渲染器 MoonRay 将在年内开源。 MoonRay 是梦工厂内部开发的蒙特卡洛路径追踪器，被用于制作《驯龙高手3（How to Train Your Dragon: The Hidden World）》、《疯狂原始人2（The Croods: A New Age）》、《坏蛋联盟》和即将在年底上映的《穿靴子的猫2（Puss in Boots: The Last Wish）》。MoonRay 使用的基于云端的分布式计算框架 Arras 也将包含在开源代码库中。源代码将采用 Apache 2.0 许可证，未来的更新将通过  &lt;a href="https://openmoonray.org/" rel="external noopener noreferrer" target="_blank"&gt;OpenMoonRay.org&lt;/a&gt; 网站公布。&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category />
      <guid isPermaLink="true">https://itindex.net/detail/62353-%E6%A2%A6%E5%B7%A5%E5%8E%82-%E5%8A%A8%E7%94%BB-moonray</guid>
      <pubDate>Sat, 06 Aug 2022 15:25:13 CST</pubDate>
    </item>
    <item>
      <title>基于 eBPF 的开源项目 eCapture 介绍：无需 CA 证书抓 https 网络明文通讯</title>
      <link>https://itindex.net/detail/62301-ebpf-%E5%BC%80%E6%BA%90-%E9%A1%B9%E7%9B%AE</link>
      <description>&lt;p&gt;  &lt;img&gt;&lt;/img&gt;&lt;/p&gt; &lt;h1&gt;eCapture 介绍&lt;/h1&gt; &lt;p&gt;eCapture 是一款基于 eBPF 技术实现的用户态数据捕获工具。不需要 CA 证书，即可捕获 https/tls 的通讯明文。  &lt;img&gt;&lt;/img&gt;&lt;/p&gt; &lt;p&gt;项目在 2022 年 3 月中旬创建，一经发布，广受大家喜爱，至今不到两周已经 1200 多个 Star。&lt;/p&gt; &lt;img&gt;&lt;/img&gt; &lt;h2&gt;作用&lt;/h2&gt; &lt;ol&gt;  &lt;li&gt;不需要 CA 证书，即可捕获 HTTPS/TLS 通信数据的明文。&lt;/li&gt;  &lt;li&gt;在 bash 审计场景，可以捕获 bash 命令。&lt;/li&gt;  &lt;li&gt;数据库审计场景，可以捕获 mysqld/mariadDB 的 SQL 查询。&lt;/li&gt;&lt;/ol&gt; &lt;h2&gt;官网&lt;/h2&gt; &lt;p&gt;代码仓库见：https://github.com/ehids/ecapture ，也可以关注微信公众号「榫卯江湖」获取最新动态。&lt;/p&gt; &lt;h1&gt;产品架构&lt;/h1&gt; &lt;p&gt;eCapture 系统用户态程序使用 Golang 语言开发，具有良好的系统兼容性，无依赖快速部署，更适合云原生场景。内核态代码使用 C 编写，使用 clang/llvm 编译，生产 bpf 字节码后，采用   &lt;code&gt;go-bindata&lt;/code&gt; 转化为 golang 语法文件，之后采用   &lt;code&gt;ehids/ebpfmanager&lt;/code&gt; 类库，调用 bpf syscall 进行加载、HOOK、map 读取。golang 编译后，无其他任何依赖即可运行，兼容 linux kernel 4.18 以上所有版本。&lt;/p&gt; &lt;img&gt;&lt;/img&gt; &lt;h2&gt;eBPF 加载机制&lt;/h2&gt; &lt;p&gt;关于 eBPF 详细加载机制，可到 https://ebpf.io/ 查阅相关原理。&lt;/p&gt; &lt;img&gt;&lt;/img&gt; &lt;h2&gt;实现原理&lt;/h2&gt; &lt;p&gt;如工作原理的图所示，在用户态的加密解密函数中下钩子。tcpdump (libpcap) 是在数据包接收到，XDP 处理后，进行   &lt;code&gt;clone packet&lt;/code&gt;，进行包的复制，发送给用户态进程。二者工作的所在层不一样。&lt;/p&gt; &lt;h1&gt;功能介绍&lt;/h1&gt; &lt;p&gt;eCapture 有三个模块&lt;/p&gt; &lt;ol&gt;  &lt;li&gt;tls/ssl 明文数据捕获&lt;/li&gt;  &lt;li&gt;bash 命令审计&lt;/li&gt;  &lt;li&gt;mysqld 数据库审计&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;第一个功能适用于基于 tls/ssl 解密需求的运维监控、故障排查、抽样分析场景。&lt;/p&gt; &lt;p&gt;第二个功能适用于安全领域的 bash 入侵发现场景，这里只是简单的功能，可以在此基础上增加其他功能。&lt;/p&gt; &lt;p&gt;第三个功能适用于数据库审计场景，尤其是做数据安全、数据防泄漏，甚至入侵检测等。同样，可以在此基础上扩充其他功能。&lt;/p&gt; &lt;img&gt;&lt;/img&gt; &lt;p&gt;查看其使用说明，如下&lt;/p&gt; &lt;pre&gt;  &lt;code&gt;cfc4n@vm-desktop:~/ehids/ecapture$ ./bin/ecapture   &lt;br /&gt;NAME:   &lt;br /&gt; ecapture - capture text SSL content without CA cert by ebpf hook.   &lt;br /&gt;   &lt;br /&gt;USAGE:   &lt;br /&gt; ecapture [flags]   &lt;br /&gt;   &lt;br /&gt;VERSION:   &lt;br /&gt; 0.1.5-20220325-47edbed   &lt;br /&gt;   &lt;br /&gt;COMMANDS:   &lt;br /&gt; bash  capture bash command   &lt;br /&gt; help  Help about any command   &lt;br /&gt; mysqld56 capture sql queries from mysqld &amp;gt;5.6 .   &lt;br /&gt; tls  alias name:openssl , use to capture tls/ssl text content without CA cert.   &lt;br /&gt;   &lt;br /&gt;DESCRIPTION:   &lt;br /&gt; ecapture是一款无需安装CA证书，即可抓去HTTPS、TLS等明文数据包的工具。   &lt;br /&gt; 也可以捕获bash的命令，适用于安全审计场景。包括mysqld的数据库审计等。   &lt;br /&gt; 仓库地址: https://github.com/ehids/ecapture   &lt;br /&gt;   &lt;br /&gt;OPTIONS:   &lt;br /&gt;      --debug[=false] enable debug logging   &lt;br /&gt;  -h, --help[=false] help for ecapture   &lt;br /&gt;      --hex[=false] print byte strings as hex encoded strings   &lt;br /&gt;  -p, --pid=0  if target_pid is 0 then we target all pids   &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;其中，有四个全局参数，分别是&lt;/p&gt; &lt;ul&gt;  &lt;li&gt;--debug ， 用于启动调试日志&lt;/li&gt;  &lt;li&gt;--help  ， 查看帮助&lt;/li&gt;  &lt;li&gt;--hex ，按照 hex 模式打印字符，用于查看不可见字符&lt;/li&gt;  &lt;li&gt;--pid ，用于针对特定进程进行数据捕获&lt;/li&gt;&lt;/ul&gt; &lt;h2&gt;HOOK 机制&lt;/h2&gt; &lt;p&gt;eCapture 采用 eBPF uprobe 相关函数进行 HOOK，故需要目标用户态函数信息，包含函数符号表 (symbol table)，函数偏移地址 (offset)。在大部分 linux 发行版中，使用的二进制可执行文件 (ELF) 都是包含符号表的；少部分发行版，会去掉 ELF 中的符号表。那么针对这种场景，就需要用户自行定位目标函数所在 ELF/SO 中的偏移地址，通过工具的参数来指定。&lt;/p&gt; &lt;p&gt;对于 ELF 文件，可以将目标类库静态编译到自身，也可以通过动态链接库的方式引用。那么对于这两种形式，eCapture 根据不同场景进行自动查找。若查找不到，用户可以通过命令行参数指定。&lt;/p&gt; &lt;p&gt;故 eCapture 支持   &lt;code&gt;HOOK ELF&lt;/code&gt;，以及   &lt;code&gt;HOOK SO&lt;/code&gt; 两种模式。会自动分析 ELF 文件，读取  &lt;code&gt;.dynamic&lt;/code&gt; 和  &lt;code&gt;.dynsym&lt;/code&gt; 等段信息，查找相关链接库名以及函数名、偏移地址。&lt;/p&gt; &lt;p&gt;查找原理如下图：&lt;/p&gt; &lt;img&gt;&lt;/img&gt; &lt;h2&gt;tls/ssl&lt;/h2&gt; &lt;p&gt;  &lt;code&gt;ecapture tls&lt;/code&gt; 命令用于启动 tls/ssl 模块，支持了三类 tls/ssl 加密类库，分别是&lt;/p&gt; &lt;ul&gt;  &lt;li&gt;openssl ，动态链接库名字为    &lt;code&gt;libssl.so&lt;/code&gt;&lt;/li&gt;  &lt;li&gt;gnutls ，动态链接库名字为    &lt;code&gt;libgnutls.so&lt;/code&gt;&lt;/li&gt;  &lt;li&gt;nss/nspr ，动态链接库名字为    &lt;code&gt;libnspr4.so&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt; &lt;img&gt;&lt;/img&gt; &lt;p&gt;在不同的 linux 发行版中，因为各种原因，会选择不同的类库。比如   &lt;code&gt;wget&lt;/code&gt; 程序，在 ubuntu 跟 centos 中就会使用不同的类库。有的是   &lt;code&gt;openssl&lt;/code&gt;，有的是   &lt;code&gt;gnutls&lt;/code&gt;，甚至两个库都引入了。&lt;/p&gt; &lt;p&gt;具体情况，你可以使用   &lt;code&gt;ldd $ELF_PATH | grep -E &amp;quot;tls|ssl|nspr|nss&amp;quot;&lt;/code&gt; 来查看一个 ELF 文件使用类库情况。&lt;/p&gt; &lt;pre&gt;  &lt;code&gt;cfc4n@vm-desktop:~$ ldd `which wget` |grep -E &amp;quot;tls|ssl|nspr|nss&amp;quot;   &lt;br /&gt; libssl.so.1.1 =&amp;gt; /lib/x86_64-linux-gnu/libssl.so.1.1 (0x00007f50699f6000)   &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;对于 firefox、chrome 这种进程，需要在程序启动后才能看到 tls 类库依赖情况，那么，你可以使用   &lt;code&gt;sudo pldd $PID | grep -E &amp;quot;tls|ssl|nspr|nss&amp;quot;&lt;/code&gt; 来查看&lt;/p&gt; &lt;pre&gt;  &lt;code&gt;cfc4n@vm-desktop:~$ ps -ef|grep firefox   &lt;br /&gt;cfc4n       6846    1432 45 17:50 ?        00:00:04 /usr/lib/firefox/firefox -new-window   &lt;br /&gt;cfc4n@vm-desktop:~$ sudo pldd 6846 |grep -E &amp;quot;tls|ssl|nspr|nss&amp;quot;   &lt;br /&gt;/usr/lib/firefox/libnspr4.so   &lt;br /&gt;/usr/lib/firefox/libnssutil3.so   &lt;br /&gt;/usr/lib/firefox/libnss3.so   &lt;br /&gt;/usr/lib/firefox/libssl3.so   &lt;br /&gt;/lib/x86_64-linux-gnu/libnss_files.so.2   &lt;br /&gt;/lib/x86_64-linux-gnu/libnss_mdns4_minimal.so.2   &lt;br /&gt;/lib/x86_64-linux-gnu/libnss_dns.so.2   &lt;br /&gt;/usr/lib/firefox/libnssckbi.so   &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;eCapture 的 tls 模块命令行参数如下，用户可以使用默认配置外，也可以根据自己环境自行指定。&lt;/p&gt; &lt;pre&gt;  &lt;code&gt;OPTIONS:   &lt;br /&gt;      --curl=&amp;quot;&amp;quot;  curl or wget file path, use to dectet openssl.so path, default:/usr/bin/curl   &lt;br /&gt;      --firefox=&amp;quot;&amp;quot; firefox file path, default: /usr/lib/firefox/firefox.   &lt;br /&gt;      --gnutls=&amp;quot;&amp;quot; libgnutls.so file path, will automatically find it from curl default.   &lt;br /&gt;  -h, --help[=false] help for tls   &lt;br /&gt;      --libssl=&amp;quot;&amp;quot; libssl.so file path, will automatically find it from curl default.   &lt;br /&gt;      --nspr=&amp;quot;&amp;quot;  libnspr44.so file path, will automatically find it from curl default.   &lt;br /&gt;      --wget=&amp;quot;&amp;quot;  wget file path, default: /usr/bin/wget.   &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;同时，使用方法也比较简单，  &lt;code&gt;./ecapture tls --hex&lt;/code&gt; 命令即可。&lt;/p&gt; &lt;img&gt;&lt;/img&gt; &lt;p&gt;在 linux 上，firefox 程序中，有很多通讯都使用了   &lt;code&gt;/usr/lib/firefox/libnspr4.so&lt;/code&gt;，但实际上业务请求是可以通过   &lt;code&gt;Socket Thread&lt;/code&gt; 进程来发送的。可以通过这个特点来过滤，对于 chrome 程序，相信细心的你，也能搞定。&lt;/p&gt; &lt;img&gt;&lt;/img&gt; &lt;h2&gt;bash&lt;/h2&gt; &lt;p&gt;笔者在安全部门工作，接到过 bash 审计需求，其实现方法无非是修改系统类库、使用内核模块等技术实现，对系统稳定性有一定风险。基于 eBPF 技术实现，可以避开这些问题。这里的 bash 命令的监控，是作为 eBPF 技术在安全审计场景中的一个探索。&lt;/p&gt; &lt;p&gt;eCapture 在实现时首先查找 ENV 的 $SHELL 值，作为 bash 的二进制文件路径进行 HOOK。对于 bash 加载了   &lt;code&gt;libreadline.so&lt;/code&gt; 的场景，也会自动分析，进行符号表查找、offset 定位，再进行 HOOK。&lt;/p&gt; &lt;p&gt;bash 模块的参数有三个，用户可以自定义   &lt;code&gt;bash&lt;/code&gt;、  &lt;code&gt;readlineso&lt;/code&gt; 的路径。&lt;/p&gt; &lt;pre&gt;  &lt;code&gt;OPTIONS:   &lt;br /&gt;      --bash=&amp;quot;&amp;quot;  $SHELL file path, eg: /bin/bash , will automatically find it from $ENV default.   &lt;br /&gt;  -h, --help[=false] help for bash   &lt;br /&gt;      --readlineso=&amp;quot;&amp;quot; readline.so file path, will automatically find it from $BASH_PATH default.   &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt; &lt;img&gt;&lt;/img&gt; &lt;h2&gt;mysql/mariadb&lt;/h2&gt; &lt;p&gt;与 bash 模块一样，也是作为数据库审计的一个探索。笔者环境为 ubuntu 12.04，mysqld 也因为协议关系，使用了衍生的   &lt;code&gt;MariadDB&lt;/code&gt;，用户也可以根据自己实际场景，使用命令行参数进行指定。&lt;/p&gt; &lt;p&gt;mysqld 模块，核心原理是 HOOK 了   &lt;code&gt;dispatch_command&lt;/code&gt; 函数，&lt;/p&gt; &lt;ul&gt;  &lt;li&gt;第一个参数为 CMD 类型，值为 COM_QUERY 时，为查询场景，即审计需求的查询类型。&lt;/li&gt;  &lt;li&gt;第二个参数是 THD 的结构体，在这里我们用不到。&lt;/li&gt;  &lt;li&gt;第三个是查询的 SQL 语句&lt;/li&gt;  &lt;li&gt;第四个参数是 SQL 语句的长度，&lt;/li&gt;&lt;/ul&gt; &lt;pre&gt;  &lt;code&gt;// https://github.com/MariaDB/server/blob/b5852ffbeebc3000982988383daeefb0549e058a/sql/sql_parse.h#L112   &lt;br /&gt;dispatch_command_return dispatch_command(enum enum_server_command command, THD *thd,   &lt;br /&gt;   char* packet, uint packet_length, bool blocking = true);   &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;mysqld 审计模块参数如下:&lt;/p&gt; &lt;pre&gt;  &lt;code&gt;OPTIONS:   &lt;br /&gt;  -f, --funcname=&amp;quot;&amp;quot;   function name to hook   &lt;br /&gt;  -h, --help[=false]   help for mysqld56   &lt;br /&gt;  -m, --mysqld=&amp;quot;/usr/sbin/mariadbd&amp;quot; mysqld binary file path, use to hook   &lt;br /&gt;      --offset=0   0x710410   &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt; &lt;p&gt;其中，  &lt;code&gt;--mysqld&lt;/code&gt; 是用来指定 mysqld 的路径。mysqld 二进制程序符号表里虽然有   &lt;code&gt;dispatch_command&lt;/code&gt; 信息，但   &lt;code&gt;dispatch_command&lt;/code&gt; 这个函数名每次编译都是变化的，故不能写死。&lt;/p&gt; &lt;p&gt;eCapture 的查找方式是读取 mysqld 二进制的  &lt;code&gt;.dynamic&lt;/code&gt; 段信息，正则语法   &lt;code&gt;\w+dispatch_command\w+&lt;/code&gt; 去匹配所有符号信息，找到其函数名、偏移地址，再使用。&lt;/p&gt; &lt;p&gt;你也可以通过 objdump 命令来查找，再通过命令行参数自行指定 funcname。&lt;/p&gt; &lt;blockquote&gt;  &lt;p&gt;mariadbd version : 10.5.13-MariaDB-0ubuntu0.21.04.1 objdump -T /usr/sbin/mariadbd |grep dispatch_command 0000000000710410 g    DF .text 0000000000002f35  Base        _Z16dispatch_command19enum_server_commandP3THDPcjbb&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;即 offset 为 0x710410，函数名为  &lt;code&gt;_Z16dispatch_command19enum_server_commandP3THDPcjbb&lt;/code&gt;。&lt;/p&gt; &lt;img&gt;&lt;/img&gt; &lt;h2&gt;使用&lt;/h2&gt; &lt;h3&gt;下载二进制包&lt;/h3&gt; &lt;p&gt;eCapture 发布在 https://github.com/ehids/ecapture/releases ，目前最新版为   &lt;code&gt;eCapture v0.1.5&lt;/code&gt;。&lt;/p&gt; &lt;p&gt;可在 linux kernel 4.18 以上版本运行。&lt;/p&gt; &lt;p&gt;  &lt;strong&gt;二进制包地址：&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;https://github.com/ehids/ecapture/releases/download/v0.1.5/ecapture_v0.1.5.zip&lt;/p&gt; &lt;p&gt;  &lt;strong&gt;国内加速地址：&lt;/strong&gt;https://github.do/https://github.com/ehids/ecapture/releases/download/v0.1.5/ecapture_v0.1.5.zip&lt;/p&gt; &lt;h3&gt;自行编译&lt;/h3&gt; &lt;p&gt;代码仓库在 https://github.com/ehids/ecapture ，你可以自行修改源码编译。&lt;/p&gt;&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>dev</category>
      <guid isPermaLink="true">https://itindex.net/detail/62301-ebpf-%E5%BC%80%E6%BA%90-%E9%A1%B9%E7%9B%AE</guid>
      <pubDate>Sun, 12 Jun 2022 00:00:00 CST</pubDate>
    </item>
    <item>
      <title>解放双手！推荐一款阿里开源的低代码工具，YYDS！</title>
      <link>https://itindex.net/detail/62221-%E8%A7%A3%E6%94%BE-%E5%8F%8C%E6%89%8B-%E9%98%BF%E9%87%8C</link>
      <description>&lt;blockquote&gt;
  &lt;p&gt;之前分享过一些低代码相关的文章，发现大家还是比较感兴趣的。之前在我印象中低代码就是通过图形化界面来生成代码而已，其实真正的低代码不仅要负责生成代码，还要负责代码的维护，把它当做一站式开发平台也不为过！最近体验了一把阿里开源的低代码工具   &lt;code&gt;LowCodeEngine&lt;/code&gt;，确实是一款面向企业级的低代码解决方案，推荐给大家！&lt;/p&gt;
&lt;/blockquote&gt;
 &lt;p&gt;SpringBoot实战电商项目mall（50k+star）地址：  &lt;a href="https://github.com/macrozheng/mall"&gt;https://github.com/macrozheng/mall&lt;/a&gt;&lt;/p&gt;
 &lt;h2&gt;LowCodeEngine简介&lt;/h2&gt;
 &lt;p&gt;LowCodeEngine是阿里开源的一套面向扩展设计的企业级低代码技术体系，目前在在Github上已有  &lt;code&gt;4.7K+Star&lt;/code&gt;。这个项目大概是今年2月中旬开源的，两个月不到收获这么多Star，确实非常厉害！&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/a4507e7c0e5341618f46bfb3247ca81e~tplv-k3u1fbpfcp-zoom-1.image"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;LowCodeEngine主要具有如下特性：&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;提炼自企业级低代码平台的低代码引擎，奉行高度可扩展、最小内核、最强生态的设计理念；&lt;/li&gt;
  &lt;li&gt;部署简单，基本上就是开箱即用，拥有完善的物料体系、功能强大的设置器、丰富的插件等；&lt;/li&gt;
  &lt;li&gt;可视化编辑器具有完善的工具链，支持物料体系、设置器、插件等生态元素；&lt;/li&gt;
  &lt;li&gt;强大的扩展能力，已支撑近 100 个各种垂直类低代码平台；&lt;/li&gt;
  &lt;li&gt;使用 TypeScript 开发，能生成基于React的前端代码。&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;下面是LowCodeEngine使用过程中的一张效果图，功能还是很强大的！&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/395487c1d87d46a585f571809cffbb0c~tplv-k3u1fbpfcp-zoom-1.image"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h2&gt;搭建低代码平台&lt;/h2&gt;
 &lt;blockquote&gt;
  &lt;p&gt;接下来我们将使用LowCodeEngine搭建一个低代码开发平台，仅需5分钟，可以说是开箱即用！&lt;/p&gt;
&lt;/blockquote&gt;
 &lt;ul&gt;
  &lt;li&gt;首先我们需要想下载LowCodeEngine编辑器的示例代码，下载地址：https://github.com/alibaba/lowcode-demo&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;  &lt;img alt="" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/726b28ca9ac44bba8b705177d8fdaae5~tplv-k3u1fbpfcp-zoom-1.image"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;下载成功后解压到指定目录，安装此项目需要使用   &lt;code&gt;Node.js&lt;/code&gt;和   &lt;code&gt;npm&lt;/code&gt;，确保已经安装完毕，由于依赖中有些   &lt;code&gt;npm源&lt;/code&gt;无法访问，这里推荐使用   &lt;code&gt;cnpm&lt;/code&gt;来安装，先使用如下命令安装   &lt;code&gt;cnpm&lt;/code&gt;；&lt;/li&gt;
&lt;/ul&gt;
 &lt;pre&gt;  &lt;code&gt;npm install -g cnpm --registry=https://registry.npmmirror.com
&lt;/code&gt;&lt;/pre&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;code&gt;cnpm&lt;/code&gt;安装成功后，进入解压目录使用如下命令安装依赖；&lt;/li&gt;
&lt;/ul&gt;
 &lt;pre&gt;  &lt;code&gt;cnpm install
&lt;/code&gt;&lt;/pre&gt;
 &lt;ul&gt;
  &lt;li&gt;依赖安装完成后，使用   &lt;code&gt;npm start&lt;/code&gt;命令启动项目；&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;  &lt;img alt="" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/2280aa7b3c3f4edcaf2233685247dd97~tplv-k3u1fbpfcp-zoom-1.image"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;项目运行成功后将运行在   &lt;code&gt;5556&lt;/code&gt;端口上，访问地址：http://localhost:5556&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;  &lt;img alt="" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/0798142be6c04aed915639e9fcb47dac~tplv-k3u1fbpfcp-zoom-1.image"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h2&gt;使用低代码平台&lt;/h2&gt;
 &lt;blockquote&gt;
  &lt;p&gt;之前在我的开源项目   &lt;a href="https://github.com/macrozheng/mall"&gt;mall&lt;/a&gt;中有个品牌管理功能，接下来我们将使用LowCodeEngine来实现下它，看看低代码开发有何神奇之处！&lt;/p&gt;
&lt;/blockquote&gt;
 &lt;h3&gt;目标效果&lt;/h3&gt;
 &lt;p&gt;  &lt;a href="https://github.com/macrozheng/mall"&gt;mall&lt;/a&gt;项目中的品牌管理功能效果如下，这里使用低代码简单实现下品牌列表功能。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/9658706f0687495b8b792fcf89e3d479~tplv-k3u1fbpfcp-zoom-1.image"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h3&gt;组件库&lt;/h3&gt;
 &lt;ul&gt;
  &lt;li&gt;首先我们从   &lt;code&gt;组件库&lt;/code&gt;中选择   &lt;code&gt;查询筛选&lt;/code&gt;组件，通过拖拽的形式插入编辑区中；&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;  &lt;img alt="" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/cc7cf823122347c2afb98ad157587969~tplv-k3u1fbpfcp-zoom-1.image"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;然后选中   &lt;code&gt;查询筛选&lt;/code&gt;组件，通过右侧的   &lt;code&gt;设置器&lt;/code&gt;进行设置；&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;  &lt;img alt="" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/ecb607544b734ddc84768fa8e5aa7554~tplv-k3u1fbpfcp-zoom-1.image"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;可以点击组件左侧的   &lt;code&gt;编辑&lt;/code&gt;按钮对组件进行详细设置，比如说组件外观和输入提示等；&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;  &lt;img alt="" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/5b7c3b2076f6432a857be74f4cc6e80c~tplv-k3u1fbpfcp-zoom-1.image"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;接下来再拖拽一个   &lt;code&gt;高级表格&lt;/code&gt;组件到编辑器中去；&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;  &lt;img alt="" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/8b2d76505b9e422f832ac67e975a38bf~tplv-k3u1fbpfcp-zoom-1.image"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;同样选中   &lt;code&gt;高级表格&lt;/code&gt;组件可以对表格进行设置，我们可以通过   &lt;code&gt;数据列&lt;/code&gt;来设置需要显示的数据。&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;  &lt;img alt="" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/aa154000d7774627afe1f425c8327460~tplv-k3u1fbpfcp-zoom-1.image"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h3&gt;数据源&lt;/h3&gt;
 &lt;ul&gt;
  &lt;li&gt;由于表格中的数据需要访问接口来获取，这里我们可以通过   &lt;code&gt;数据源&lt;/code&gt;功能来实现，这里我们调用演示环境的API，填入请求参数即可，值得注意的是由于数据列表在   &lt;code&gt;data.list&lt;/code&gt;属性中，我们需要定制下请求成功的处理函数；&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;  &lt;img alt="" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/ab57510b8425473ba2acf35fad3c0f6d~tplv-k3u1fbpfcp-zoom-1.image"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;接下来选中   &lt;code&gt;高级表格&lt;/code&gt;组件，修改   &lt;code&gt;表格数据源&lt;/code&gt;，选择   &lt;code&gt;表达式输入&lt;/code&gt;，填入我们之前设置的   &lt;code&gt;数据源ID&lt;/code&gt;即可；&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;  &lt;img alt="" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/c5296f7705cc416a89d0e3fcf3a98619~tplv-k3u1fbpfcp-zoom-1.image"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;然后修改   &lt;code&gt;数据列&lt;/code&gt;信息，将每个数据列   &lt;code&gt;数据字段&lt;/code&gt;修改为JSON数据中对应的属性即可。&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;  &lt;img alt="" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/86930bccc6a841f29f7913402f3375eb~tplv-k3u1fbpfcp-zoom-1.image"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h3&gt;预览及出码&lt;/h3&gt;
 &lt;ul&gt;
  &lt;li&gt;如果想查看搭建的页面效果的话，点击右上角的   &lt;code&gt;预览&lt;/code&gt;按钮即可；&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;  &lt;img alt="" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/ae9f4798adf44b4e87a9ee79e1b78ca6~tplv-k3u1fbpfcp-zoom-1.image"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;下面是由低代码生成的页面预览效果；&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;  &lt;img alt="" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/42036e947d08407eaadcb42d27bd7223~tplv-k3u1fbpfcp-zoom-1.image"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;如果你想获取工具生成的代码的话，点击右上角的   &lt;code&gt;出码&lt;/code&gt;按钮即可，支持直接下载。&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;  &lt;img alt="" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/77bba50e86ef407689b0d9d370309744~tplv-k3u1fbpfcp-zoom-1.image"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h3&gt;其他功能&lt;/h3&gt;
 &lt;ul&gt;
  &lt;li&gt;如果你想自定义一些函数的话，可以通过   &lt;code&gt;源码面板&lt;/code&gt;进行自定义；&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;  &lt;img alt="" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/eb2dcb6bbcb646a2962391fd40e558a1~tplv-k3u1fbpfcp-zoom-1.image"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;通过   &lt;code&gt;大纲视图&lt;/code&gt;我们可以查看整个界面的结构。&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;  &lt;img alt="" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/4814e3fae13140c098a429cba71b04a9~tplv-k3u1fbpfcp-zoom-1.image"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h2&gt;总结&lt;/h2&gt;
 &lt;p&gt;今天体验了一把阿里开源的低代码开发工具，功能确实很强大。但是低代码并不意味着可以不写代码了，想用好低代码工具还得熟悉工具生成的代码。LowCodeEngine目前仅支持生成React的前端代码，所以想要实现更为复杂的业务系统，还得熟悉React。如果有小伙伴想更深入了解低代码的概念，推荐看下这篇文章  &lt;a href="https://mp.weixin.qq.com/s/MI6MrUKKydtnSdO4xq6jwA"&gt;《阿里低代码引擎和生态建设实战及思考》&lt;/a&gt; 。&lt;/p&gt;
 &lt;h2&gt;参考资料&lt;/h2&gt;
 &lt;ul&gt;
  &lt;li&gt;项目地址：https://github.com/alibaba/lowcode-engine&lt;/li&gt;
  &lt;li&gt;项目官网：https://lowcode-engine.cn/&lt;/li&gt;
  &lt;li&gt;操作指南：https://www.yuque.com/lce/usage&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category />
      <guid isPermaLink="true">https://itindex.net/detail/62221-%E8%A7%A3%E6%94%BE-%E5%8F%8C%E6%89%8B-%E9%98%BF%E9%87%8C</guid>
      <pubDate>Tue, 19 Apr 2022 01:31:26 CST</pubDate>
    </item>
    <item>
      <title>Vercel 与 Next.js：开源全明星团队背后的商业逻辑 - 掘金</title>
      <link>https://itindex.net/detail/62201-vercel-next-js</link>
      <description>&lt;div&gt;  &lt;div&gt;   &lt;div&gt;    &lt;h2&gt;引子&lt;/h2&gt;
    &lt;p&gt;Vercel 是由 Guillermo Rauch 创立的云服务公司，以拥有数个知名开源项目为大众所知，随着 2021 年在融资、招聘、产品等方面的高调亮相，Vercel 的商业逻辑也愈发清晰。&lt;/p&gt;
    &lt;h2&gt;背景故事：后端渲染时代&lt;/h2&gt;
    &lt;p&gt;现代前端框架的代表之一 React 于 2013 年开源，与同期其他前端框架一起推动前后端分离的开发模式直至现在。&lt;/p&gt;
    &lt;p&gt;而在现代前端框架被广泛采纳之前，绝大部分网站采用的是后端渲染的方式输出前端页面。&lt;/p&gt;
    &lt;p&gt;以一个典型的新闻网站为例，当新闻编辑在后台（例如一个 CMS）提交一篇文章，文章对应的内容首先会保存在数据库中。让读者访问这篇文章的 URL 时，后端程序会读取数据库中的内容，并传入前端模板中，渲染得到最终的 HTML 结果后返回给浏览器。&lt;/p&gt;
    &lt;p&gt;不过这样的方式在性能上较为浪费的，因为文章内容发布之后极少需要修改，但数以万计的读者每次打开文章页面都会产生数据库查询与后端渲染的重复开销。一个非常自然的解决方法就是将后端渲染的 HTML 缓存，而这份缓存作为静态内容也更容易推送至 CDN，实现全国甚至全球加速。即使文章内容需要修改，这套方案也可以通过重新生成再更新 CDN 的方式轻松应对。&lt;/p&gt;
    &lt;p&gt;由于实现简单、效果出众，这样的架构被广泛应用于各类内容相对静态的网站中。&lt;/p&gt;
    &lt;h2&gt;背景故事：Guillermo Rauch&lt;/h2&gt;
    &lt;p&gt;Vercel 的当家开源项目 Next.js 并不是 Guillermo 的第一个开源项目，Guillermo 另外两个被广泛使用的早期开源项目是 Node.js 的 websocket 框架 socket.io 和 MongoDB 客户端 mongoose，由此可见他在创立 Vercel 之前就已经有相当深的 Node.js 后端开发功力。&lt;/p&gt;
    &lt;p&gt;而他同时也是传奇开源项目 Mootools 的开发者之一。以现如今的角度看 Mootools 的代码没有太多惊奇之处，并且在同时期的竞争中也没能战胜 jQuery。但在这个项目的开发者列表中却聚集了一众知名开发者，其中不少人后来都加入 Facebook 参与 React 等前端项目的开发，包括 React 团队的灵魂人物 Sebastian Markbåge 和测试工具 jest 的创造者 Christoph Nakazawa 等。不难看出 Guillermo 当时对于前端框架也有深入的研究，并且周边有一群未来 React 社区的核心玩家。&lt;/p&gt;
    &lt;h2&gt;Zeit now：极简主义的部署体验&lt;/h2&gt;
    &lt;p&gt;2015 年 Guillermo 创立了名为 Zeit 的公司，并在 2020 年改名为现在更为大家所熟知的 Vercel。2016 年 Zeit 推出了核心产品 now，帮助开发者轻松将应用部署到云端，拉开了 Vercel 商业化进程的帷幕。&lt;/p&gt;
    &lt;p&gt;与我们在背景故事中提到的后端渲染架构相比，Guillermo 当时找到了两个明显的痛点：&lt;/p&gt;
    &lt;ol&gt;
     &lt;li&gt;
      &lt;p&gt;这套架构虽然设计并不复杂，但在实际实施时却困难重重，往往需要云上部署经验丰富的 devops 帮助落地，而这也被认为是中大型公司的专利，小公司与个人开发者缺少对应的人力。&lt;/p&gt;
&lt;/li&gt;
     &lt;li&gt;
      &lt;p&gt;公有云服务众多且逻辑复杂，普通开发者想学习并达成最佳实践，所耗费的时间甚至高于开发应用本身。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
    &lt;p&gt;以此为出发点，now 诞生了。now 本身并没有开发复杂的云上基础设施，而是帮用户将应用部署到 AWS 等公有云上。结合 Guillermo 过往丰富的 web 应用开发经验，他将域名配置、DNS 解析、SSL 证书、CDN 缓存等一系列工作封装到了产品内部，让用户真正做到一键部署应用，并享受最佳实践带来的性能优势。&lt;/p&gt;
    &lt;p&gt;对极简主义的追求贯穿了 Zeit 的产品定义与视觉设计，黑白相间的优雅界面成为了他们最早的名片。&lt;/p&gt;
    &lt;p&gt;这一阶段 Zeit 基于 now 的商业逻辑已经清晰：通过简化公有云部署节省用户人力，通过生产环境最佳实践提升应用表现。前者不难理解，用户节省的人力成本可以转换为付费的意愿，后者则是 Zeit/Vercel 持续至今的思路：用户最愿意为生产环境付费以提升稳定性与性能。&lt;/p&gt;
    &lt;p&gt;而这一模式的难点则是用户如何产生粘性而不是转向成本更低的公有云或者其他定位相同的部署平台。Guillermo 的答案是从自己精通的 Node.js 与前端技术出发，以开源的方式切入市场。&lt;/p&gt;
    &lt;h2&gt;Next.js：前后端分离后的产物&lt;/h2&gt;
    &lt;p&gt;随着现代前端框架的流行，越来越多 web 开发从后端渲染转向前后端分离的开发模式。后端服务不再负责渲染视图，而是以 API 的方式提供数据供不同形态的客户端使用，而原本渲染视图的工作则转移到了前端。&lt;/p&gt;
    &lt;p&gt;这一方式降低了前后端之间的耦合度、将渲染负载转移到客户端、更容易同时支持桌面端和移动端网站、前端能够开发更复杂的客户端交互，因此迅速地流行开来。&lt;/p&gt;
    &lt;p&gt;但是架构的改变也带来了新的问题。分离之后，后端返回的 HTML 很可能只包含了极少数视图，而绝大部分的视图都是在前端通过框架动态渲染，数据也是通过 API 异步加载。这一变化带来的最典型问题就是 SEO 失效，绝大多数搜索引擎都是通过后端返回的 HTML 内容进行索引，但在前后端分离之后搜索引擎读取到的信息非常有限，也就影响了网站的 SEO 效果。&lt;/p&gt;
    &lt;p&gt;这一问题使得大量依赖 SEO 的网站没法使用现代前端框架，框架开发者们也将这一问题作为头等大事开始解决。但是以 SSR 为代表的框架后端渲染方案在设计初期通常都存在不易上手、性能差的问题，时至今日也没能形成标准化的方案。&lt;/p&gt;
    &lt;p&gt;2016 年，Guillermo 看到了这一问题背后的机会，创造了 Next.js，一个开源的 React 上层框架。在之后的几年中，Next.js 持续发力 SSR、SSG、JAM stack 等方向，但万变不离其宗，解决的都是现代前端框架如何后端渲染的问题。同时凭借着对开源社区的深度理解与持续运营，Next.js 也成为了 React 和 Node.js 领域极受欢迎的项目。&lt;/p&gt;
    &lt;p&gt;Next.js 在开源社区的成果给 Zeit 带来了新的商业机会。大量开发者开始因为 Next.js 与 Zeit 产生粘性，而使用 Next.JS 之后部署会比普通的静态页面更为复杂，为此 Zeit now 适时地深度集成 Next.js，让使用 Next.js 的开发者与项目成为 Zeit now 平台中的一等公民。&lt;/p&gt;
    &lt;p&gt;同样地，背靠 Zeit now 可获得的极简部署体验与生产级别保障，也让 Next.js 与同类开源产品相比有了独特的优势，进一步壮大了 Next.js。&lt;/p&gt;
    &lt;h2&gt;Vercel：开源全明星团队之上的产品矩阵&lt;/h2&gt;
    &lt;p&gt;随着 Next.js 与 Zeit now 的相辅相成，2020 年 4 月 Zeit 改名为 Vercel 并完成 2100 万美元的 A 轮融资，正式启航。&lt;/p&gt;
    &lt;p&gt;自那之后，Vercel 陆续完成了 B、C、D 轮融资，总融资额达到 3.13 亿美元，与接连不断地融资同样引入瞩目的是 Vercel 在招聘上的成果。&lt;/p&gt;
    &lt;p&gt;目前 Next.js 的 lead developer Tim Neutkens 就是从社区中走入 Vercel 的。最初 Tim 以开源的方式参与 Next.js，并开发了 Next.js 生态中的重要项目 mdx。2017 年，他作为第一个 Next.js 全职研发正式加入 Vercel。&lt;/p&gt;
    &lt;p&gt;Tim 并不是 Vercel 内部培养的唯一开源明星。国人工程师 Shu Ding 在 Vercel 身兼研发和设计的工作，同时他也主导开发了 React 社区中热门的开源数据请求工具 SWR，在功能上 SWR 也进一步提升了 Next.js 中的开发体验。&lt;/p&gt;
    &lt;p&gt;从他们二人身上可以看到 Vercel 内部的工程师与开源文化之深，以及运营推广能力之强。&lt;/p&gt;
    &lt;p&gt;除了内部培养，Vercel 更让大家津津乐道的是他们从知名开源项目中挖掘人才的能力。&lt;/p&gt;
    &lt;p&gt;2019 年，Vercel 从 React 的官方脚手架项目 create-react-app 中招聘了核心维护中 Joe Haddad，自那之后的几年时间里 Next.js 的脚手架易用性显著提升。这次引援中 Vercel 的招聘策略显得十分清晰，作为面向开发者提供服务的商业公司，从开发者重度依赖的开源项目中挖掘人才可以有效提升产品竞争力，还能增加自己在开源社区中的话语权。&lt;/p&gt;
    &lt;p&gt;2021 年起的一系列招聘动作更是如此。&lt;/p&gt;
    &lt;p&gt;Next.js 为了实现后端渲染，重度使用了 JS 生态中的打包构建工具 webpack。为了增强对 webpack 的理解与话语权，Vercel 招聘了 webpack 的创造者 Tobias Koppers。&lt;/p&gt;
    &lt;p&gt;由于 JS 需要处理复杂的浏览器兼容性问题，绝大部分项目都使用了 babel 作为编译工具解决这一问题。Vercel 没有选择从 babel 社区中招聘，而是将橄榄枝抛给了 SWC 的作者 Donny。SWC 是一个使用 rust 开发的 babel 替代品，并且有高达数十倍的性能优势。Next.js 的最新版本中也全面使用 SWC 替代 babel。&lt;/p&gt;
    &lt;p&gt;之后，Vercel 直接收购了 monorepo 构建工具 Turborepo 并将其开源，项目创始人 Jared Palmer 也被招入麾下，Jared 同时也是知名开源项目 Formik、TSDX 的作者。Vercel 平台上每天都在进行不计其数的构建与编译，SWC 与 Turborepo 这样的高性能工具如果能够被广泛使用，将为 Vercel 自身节省大量公有云支出。&lt;/p&gt;
    &lt;p&gt;仅仅使用 Next.js 吸引开发者使用 Vercel 平台还不足够，Vercel 将目光投向了其他前端框架。在支持了市面上绝大多数框架的构建与部署之后，Vercel 宣布招聘 Svelte 框架的作者 Rich Harris，想必之后 Svelte 也会像 Next.js 一样在 Vercel 平台上获得最精致的集成体验。&lt;/p&gt;
    &lt;p&gt;在大家被 Vercel 接连不断的重磅招聘吸引之时，2021 年底他们又宣布了全年最后一个大新闻，React 核心团队的灵魂人物 Sebastian Markbåge 也将加入 Vercel。作为 构建在 React 之上的框架，Next.js 的未来与 React 的演进息息相关。尤其是在 React 团队提出 server component 的概念之后，Next.js 的后端渲染与官方方案是否能够有机结合，都离不开 Sebastian 的技术视野以及在 React 项目中的话语权。&lt;/p&gt;
    &lt;p&gt;随着开源全明星团队的建成，Vercel 从构建工具、编译器到开发框架的产品矩阵也更加完整。与通常认知里开源会带来商业风险不同的是，Vercel 通过在一众核心开源项目中招聘核心成员、获得话语权，反而成为了开发者无法绕开的开源依赖，开发者们对开源项目的粘性帮助 Vercel 进一步构建了商业上的护城河。&lt;/p&gt;
    &lt;h2&gt;预测：Vercel 的未来与挑战&lt;/h2&gt;
    &lt;p&gt;梳理清楚 Vercel 的团队组建与产品演进思路之后，我们不妨大胆预测它未来的行动以及需要面对的挑战。&lt;/p&gt;
    &lt;p&gt;首先延续招聘 Svelte 作者的方式，每与一个前端框架建立深度合作，就能够获取一批新的潜在用户。未来 Vercel 极有可能从 VueJS core team 中进行招聘，也有可能从 Vue.js 生态中的 Next.js 替代品 Nuxt 着手，甚至整体收购 Nuxt 团队。&lt;/p&gt;
    &lt;p&gt;其次深度集成 webpack 是否是正确的选择，也是 Next.js 需要面对的问题。在切换至 swc 提升性能之时，Vercel 团队曾表示会继续使用 webpack，不考虑 vite 等新的构建方案。但从社区问答中我们还是看到了大量 webpack 相关的问题，也有开发者抱怨 webpack 的复杂配置让 Next.js 的使用体验不及预期。&lt;/p&gt;
    &lt;p&gt;最后则是与其余厂商之间的竞争。同类厂商如 Netlify 不必多说，一定会在产品与技术上持续对 Vercel 产生压力，而 Vercel 背后所使用的 AWS、Cloudflare 等巨头也将带来巨大的挑战。AWS 拥有功能强大的 Amplify，Cloudflare 的 Pages 与 Workers 服务也在获得更多的客户，而他们在价格与集成度上的优势也许是 Vercel 无法逾越的屏障。&lt;/p&gt;
    &lt;p&gt;不过无论如何，Guillermo 与 Vercel 已经足够神奇，也在开源与商业化的结合方式上给大家带来了新的思路。&lt;/p&gt;&lt;/div&gt;   &lt;br /&gt;作者：aryu   &lt;br /&gt;链接：https://juejin.cn/post/7057333396359348255   &lt;br /&gt;来源：稀土掘金   &lt;br /&gt;著作权归作者所有。商业转载请联系作者获得授权，非商业转载请注明出处。&lt;/div&gt;&lt;/div&gt;
    &lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category />
      <guid isPermaLink="true">https://itindex.net/detail/62201-vercel-next-js</guid>
      <pubDate>Mon, 11 Apr 2022 15:59:42 CST</pubDate>
    </item>
    <item>
      <title>一个宝藏级微服务开源项目，是真的牛批！</title>
      <link>https://itindex.net/detail/62166-%E5%BE%AE%E6%9C%8D%E5%8A%A1-%E5%BC%80%E6%BA%90-%E9%A1%B9%E7%9B%AE</link>
      <description>&lt;blockquote&gt;
  &lt;p&gt;前几天有粉丝留言，正在学习微服务，想让我推荐一个微服务学习项目。这次我拿出了压箱底的收藏了，一个宝藏级微服务开源项目，炸裂！&lt;/p&gt;
&lt;/blockquote&gt;
 &lt;h2&gt;前言&lt;/h2&gt;
 &lt;p&gt;zheng项目不仅仅是一个开发架构，而是努力打造一套从   &lt;strong&gt;前端模板&lt;/strong&gt; -   &lt;strong&gt;基础框架&lt;/strong&gt; -   &lt;strong&gt;分布式架构&lt;/strong&gt; -   &lt;strong&gt;开源项目&lt;/strong&gt; -   &lt;strong&gt;持续集成&lt;/strong&gt; -   &lt;strong&gt;自动化部署&lt;/strong&gt; -   &lt;strong&gt;系统监测&lt;/strong&gt; -   &lt;strong&gt;无缝升级&lt;/strong&gt; 的全方位J2EE企业级开发解决方案。&lt;/p&gt;
 &lt;h2&gt;项目介绍&lt;/h2&gt;
 &lt;p&gt;基于Spring+SpringMVC+Mybatis分布式敏捷开发系统架构，提供整套公共微服务服务模块：内容管理、支付中心、用户管理（包括第三方）、微信平台、存储系统、配置中心、日志分析、任务和通知等，支持服务治理、监控和追踪，努力为中小型企业打造全方位J2EE企业级开发解决方案。推荐整理好的100期Java开源项目：  &lt;a href="https://mp.weixin.qq.com/s/o4aNOgjlcAYkKjn-gSQh6A"&gt;视频教程+源码笔记&lt;/a&gt;&lt;/p&gt;
 &lt;h3&gt;组织结构&lt;/h3&gt;
 &lt;pre&gt;  &lt;code&gt;zheng
├── zheng-common -- SSM框架公共模块
├── zheng-admin -- 后台管理模板
├── zheng-ui -- 前台thymeleaf模板[端口:1000]
├── zheng-config -- 配置中心[端口:1001]
├── zheng-upms -- 用户权限管理系统
|    ├── zheng-upms-common -- upms系统公共模块
|    ├── zheng-upms-dao -- 代码生成模块，无需开发
|    ├── zheng-upms-client -- 集成upms依赖包，提供单点认证、授权、统一会话管理
|    ├── zheng-upms-rpc-api -- rpc接口包
|    ├── zheng-upms-rpc-service -- rpc服务提供者
|    └── zheng-upms-server -- 用户权限系统及SSO服务端[端口:1111]
├── zheng-cms -- 内容管理系统
|    ├── zheng-cms-common -- cms系统公共模块
|    ├── zheng-cms-dao -- 代码生成模块，无需开发
|    ├── zheng-cms-rpc-api -- rpc接口包
|    ├── zheng-cms-rpc-service -- rpc服务提供者
|    ├── zheng-cms-search -- 搜索服务[端口:2221]
|    ├── zheng-cms-admin -- 后台管理[端口:2222]
|    ├── zheng-cms-job -- 消息队列、任务调度等[端口:2223]
|    └── zheng-cms-web -- 网站前台[端口:2224]
├── zheng-pay -- 支付系统
|    ├── zheng-pay-common -- pay系统公共模块
|    ├── zheng-pay-dao -- 代码生成模块，无需开发
|    ├── zheng-pay-rpc-api -- rpc接口包
|    ├── zheng-pay-rpc-service -- rpc服务提供者
|    ├── zheng-pay-sdk -- 开发工具包
|    ├── zheng-pay-admin -- 后台管理[端口:3331]
|    └── zheng-pay-web -- 演示示例[端口:3332]
├── zheng-ucenter -- 用户系统(包括第三方登录)
|    ├── zheng-ucenter-common -- ucenter系统公共模块
|    ├── zheng-ucenter-dao -- 代码生成模块，无需开发
|    ├── zheng-ucenter-rpc-api -- rpc接口包
|    ├── zheng-ucenter-rpc-service -- rpc服务提供者
|    └── zheng-ucenter-web -- 网站前台[端口:4441]
├── zheng-wechat -- 微信系统
|    ├── zheng-wechat-mp -- 微信公众号管理系统
|    |    ├── zheng-wechat-mp-dao -- 代码生成模块，无需开发
|    |    ├── zheng-wechat-mp-service -- 业务逻辑
|    |    └── zheng-wechat-mp-admin -- 后台管理[端口:5551]
|    └── zheng-ucenter-app -- 微信小程序后台
├── zheng-api -- API接口总线系统
|    ├── zheng-api-common -- api系统公共模块
|    ├── zheng-api-rpc-api -- rpc接口包
|    ├── zheng-api-rpc-service -- rpc服务提供者
|    └── zheng-api-server -- api系统服务端[端口:6666]
├── zheng-oss -- 对象存储系统
|    ├── zheng-oss-sdk -- 开发工具包
|    ├── zheng-oss-web -- 前台接口[端口:7771]
|    └── zheng-oss-admin -- 后台管理[端口:7772]
├── zheng-message -- 实时通知系统
|    ├── zheng-message-sdk -- 开发工具包
|    ├── zheng-message-server -- 服务端[端口:8881,SocketIO端口:8882]
|    └── zheng-message-client -- 客户端
├── zheng-shop -- 电子商务系统
└── zheng-demo -- 示例模块(包含一些示例代码等)
     ├── zheng-demo-rpc-api -- rpc接口包
     ├── zheng-demo-rpc-service -- rpc服务提供者
     └── zheng-demo-web -- 演示示例[端口:9999]
&lt;/code&gt;&lt;/pre&gt;
 &lt;h3&gt;架构图&lt;/h3&gt;
 &lt;p&gt;  &lt;img alt="" src="https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/8003e543d29b4e3fac54510dbf1ee140~tplv-k3u1fbpfcp-watermark.image?"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h4&gt;模块依赖&lt;/h4&gt;
 &lt;p&gt;  &lt;img alt="" src="https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/fdcbeb746e4d4a36a03e35385383ea41~tplv-k3u1fbpfcp-watermark.image?"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h2&gt;环境搭建&lt;/h2&gt;
 &lt;h3&gt;开发工具:&lt;/h3&gt;
 &lt;ul&gt;
  &lt;li&gt;MySql: 数据库&lt;/li&gt;
  &lt;li&gt;jetty: 开发服务器&lt;/li&gt;
  &lt;li&gt;Tomcat: 应用服务器&lt;/li&gt;
  &lt;li&gt;SVN|Git: 版本管理&lt;/li&gt;
  &lt;li&gt;Nginx: 反向代理服务器&lt;/li&gt;
  &lt;li&gt;Varnish: HTTP加速器&lt;/li&gt;
  &lt;li&gt;IntelliJ IDEA: 开发IDE&lt;/li&gt;
  &lt;li&gt;PowerDesigner: 建模工具&lt;/li&gt;
  &lt;li&gt;Navicat for MySQL: 数据库客户端&lt;/li&gt;
&lt;/ul&gt;
 &lt;h3&gt;开发环境&lt;/h3&gt;
 &lt;ul&gt;
  &lt;li&gt;Jdk7+&lt;/li&gt;
  &lt;li&gt;Mysql5.5+&lt;/li&gt;
  &lt;li&gt;Redis&lt;/li&gt;
  &lt;li&gt;Zookeeper&lt;/li&gt;
  &lt;li&gt;ActiveMQ&lt;/li&gt;
  &lt;li&gt;Dubbo-admin&lt;/li&gt;
  &lt;li&gt;Dubbo-monitor&lt;/li&gt;
&lt;/ul&gt;
 &lt;h2&gt;演示地址&lt;/h2&gt;
 &lt;p&gt;演示地址：http://upms.zhangshuzheng.cn/  &lt;sup&gt;[1]&lt;/sup&gt;&lt;/p&gt;
 &lt;h3&gt;预览图&lt;/h3&gt;
 &lt;p&gt;  &lt;img alt="" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/82477ed68481452dbf8e6d8fa98cd906~tplv-k3u1fbpfcp-zoom-1.image"&gt;&lt;/img&gt;
  &lt;img alt="" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/ff030ba65ca64167b5389b2fba2ec68e~tplv-k3u1fbpfcp-zoom-1.image"&gt;&lt;/img&gt;
  &lt;img alt="" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/2e18c2353a0243fab0a6be6c7860d0c0~tplv-k3u1fbpfcp-zoom-1.image"&gt;&lt;/img&gt;
  &lt;img alt="" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/322b63d815034dc2981ff6fc74e4cce1~tplv-k3u1fbpfcp-zoom-1.image"&gt;&lt;/img&gt;
  &lt;img alt="" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/55dca2c0c3de4f02a32b16ca48d5a152~tplv-k3u1fbpfcp-zoom-1.image"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h3&gt;数据模型&lt;/h3&gt;
 &lt;p&gt;  &lt;img alt="" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/f001f6bcd60c4303b69a8d6cfbea2ca6~tplv-k3u1fbpfcp-zoom-1.image"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h3&gt;拓扑图&lt;/h3&gt;
 &lt;p&gt;  &lt;img alt="" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/5cfe949339a34adfbfb6c0497284087d~tplv-k3u1fbpfcp-zoom-1.image"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h2&gt;项目地址&lt;/h2&gt;
 &lt;p&gt;码云：https : //gitee.com/shuzheng/zheng&lt;/p&gt;
&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category />
      <guid isPermaLink="true">https://itindex.net/detail/62166-%E5%BE%AE%E6%9C%8D%E5%8A%A1-%E5%BC%80%E6%BA%90-%E9%A1%B9%E7%9B%AE</guid>
      <pubDate>Fri, 25 Mar 2022 07:53:40 CST</pubDate>
    </item>
    <item>
      <title>12 个适合做外包项目的开源后台管理系统</title>
      <link>https://itindex.net/detail/62151-%E5%A4%96%E5%8C%85-%E9%A1%B9%E7%9B%AE-%E5%BC%80%E6%BA%90</link>
      <description>&lt;blockquote&gt;
  &lt;p&gt;来源：toutiao.com/i6865688485706072580&lt;/p&gt;
&lt;/blockquote&gt;
 &lt;pre&gt;  &lt;code&gt;1. D2admin
&lt;/code&gt;&lt;/pre&gt;
 &lt;p&gt;开源地址：https://github.com/d2-projects/d2-admin&lt;/p&gt;
 &lt;p&gt;文档地址：https://d2.pub/zh/doc/d2-admin/&lt;/p&gt;
 &lt;p&gt;效果预览：https://d2.pub/d2-admin/preview/#/index&lt;/p&gt;
 &lt;p&gt;开源协议：MIT&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/410569d0872c42ab892a63f8f957acdc~tplv-k3u1fbpfcp-zoom-1.image"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h1&gt;  &lt;strong&gt;2. vue-element-admin&lt;/strong&gt;&lt;/h1&gt;
 &lt;p&gt;开源地址：https://github.com/PanJiaChen/vue-element-admin&lt;/p&gt;
 &lt;p&gt;文档地址：https://panjiachen.github.io/vue-element-admin-site/zh/&lt;/p&gt;
 &lt;p&gt;效果预览：https://d2.pub/d2-admin/preview/#/index&lt;/p&gt;
 &lt;p&gt;开源协议：MIT&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/361bc24cca7a4b538f24359189c93c50~tplv-k3u1fbpfcp-zoom-1.image"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h1&gt;  &lt;strong&gt;3. JEECG-BOOT&lt;/strong&gt;&lt;/h1&gt;
 &lt;p&gt;开源地址：https://github.com/zhangdaiscott/jeecg-boot&lt;/p&gt;
 &lt;p&gt;文档地址：https://panjiachen.github.io/vue-element-admin-site/zh/&lt;/p&gt;
 &lt;p&gt;效果预览：http://boot.jeecg.com/&lt;/p&gt;
 &lt;p&gt;开源协议：Apache-2.0 License&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/e9e9f3ab913b4622829cc9369aeb5186~tplv-k3u1fbpfcp-zoom-1.image"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h1&gt;  &lt;strong&gt;4. GIN-VUE-ADMIN&lt;/strong&gt;&lt;/h1&gt;
 &lt;p&gt;开源地址：https://github.com/flipped-aurora/gin-vue-admin&lt;/p&gt;
 &lt;p&gt;文档地址：https://www.gin-vue-admin.com/&lt;/p&gt;
 &lt;p&gt;效果预览：http://demo.gin-vue-admin.com/#/layout/dashboard&lt;/p&gt;
 &lt;p&gt;开源协议：Apache-2.0 License&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/01993954b3bd4b5cabc742bfd16719b8~tplv-k3u1fbpfcp-zoom-1.image"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h1&gt;  &lt;strong&gt;5. vue-admin-beautiful&lt;/strong&gt;&lt;/h1&gt;
 &lt;p&gt;开源地址：https://github.com/chuzhixin/vue-admin-beautiful&lt;/p&gt;
 &lt;p&gt;文档地址：https://www.gin-vue-admin.com/&lt;/p&gt;
 &lt;p&gt;效果预览：http://beautiful.panm.cn/&lt;/p&gt;
 &lt;p&gt;开源协议：MPL-2.0 License&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/41f5ced692fe4cd283be0b378befac6b~tplv-k3u1fbpfcp-zoom-1.image"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h1&gt;  &lt;strong&gt;6. Dcat-admin&lt;/strong&gt;&lt;/h1&gt;
 &lt;p&gt;开源地址：https://github.com/jqhph/dcat-admin&lt;/p&gt;
 &lt;p&gt;文档地址：http://www.dcatadmin.com/&lt;/p&gt;
 &lt;p&gt;效果预览：http://103.39.211.179:8080/admin&lt;/p&gt;
 &lt;p&gt;开源协议：MIT License&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/f7bfb4c9d57e42639a11dcfefdd8a219~tplv-k3u1fbpfcp-zoom-1.image"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h1&gt;  &lt;strong&gt;7. RuoYi&lt;/strong&gt;&lt;/h1&gt;
 &lt;p&gt;开源地址：https://gitee.com/y_project/RuoYi&lt;/p&gt;
 &lt;p&gt;文档地址：https://doc.ruoyi.vip/&lt;/p&gt;
 &lt;p&gt;效果预览：https://vue.ruoyi.vip/index&lt;/p&gt;
 &lt;p&gt;开源协议：MIT License&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/65301503399f47b9bd9d7de7513316e9~tplv-k3u1fbpfcp-zoom-1.image"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h1&gt;  &lt;strong&gt;8. renren-fast-vue&lt;/strong&gt;&lt;/h1&gt;
 &lt;p&gt;开源地址：https://gitee.com/renrenio/renren-fast-vue&lt;/p&gt;
 &lt;p&gt;文档地址：https://www.renren.io/guide&lt;/p&gt;
 &lt;p&gt;效果预览：http://demo.open.renren.io/renren-fast/#/home&lt;/p&gt;
 &lt;p&gt;开源协议：MIT License&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/f8b1f391ee724333b47de1dca96ae94e~tplv-k3u1fbpfcp-zoom-1.image"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h1&gt;  &lt;strong&gt;9. ant-design-pro&lt;/strong&gt;&lt;/h1&gt;
 &lt;p&gt;开源地址：https://github.com/ant-design/ant-design-pro&lt;/p&gt;
 &lt;p&gt;文档地址：https://pro.ant.design/index-cn/&lt;/p&gt;
 &lt;p&gt;效果预览：https://pro.ant.design/&lt;/p&gt;
 &lt;p&gt;开源协议：MIT License&lt;/p&gt;
 &lt;h1&gt;  &lt;strong&gt;10. iview-admin&lt;/strong&gt;&lt;/h1&gt;
 &lt;p&gt;开源地址：https://github.com/iview/iview-admin&lt;/p&gt;
 &lt;p&gt;文档地址：https://lison16.github.io/iview-admin-doc/&lt;/p&gt;
 &lt;p&gt;效果预览：https://admin.iviewui.com/home&lt;/p&gt;
 &lt;p&gt;开源协议：MIT License&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/888d80634c4f4b61842584a1e4b672c4~tplv-k3u1fbpfcp-zoom-1.image"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h1&gt;  &lt;strong&gt;11. material-dashboard&lt;/strong&gt;&lt;/h1&gt;
 &lt;p&gt;开源地址：https://github.com/creativetimofficial/material-dashboard#demo&lt;/p&gt;
 &lt;p&gt;文档地址：https://demos.creative-tim.com/material-dashboard/docs/2.1/getting-started/introduction.html&lt;/p&gt;
 &lt;p&gt;效果预览：https://demos.creative-tim.com/material-dashboard/examples/dashboard.html&lt;/p&gt;
 &lt;p&gt;开源协议：MIT License&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/1457fb74d22b495781a9eeef4fc49471~tplv-k3u1fbpfcp-zoom-1.image"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h1&gt;  &lt;strong&gt;12.EAdmin&lt;/strong&gt;&lt;/h1&gt;
 &lt;p&gt;开源地址：https://github.com/suruibuas/eadmin&lt;/p&gt;
 &lt;p&gt;文档地址：http://doc.eadmin.com.cn/&lt;/p&gt;
 &lt;p&gt;效果预览：http://www.eadmin.com.cn/&lt;/p&gt;
 &lt;p&gt;开源协议：无&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/08ffee825a924a319fbdb5cdf63e88e7~tplv-k3u1fbpfcp-zoom-1.image"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;暂时整理这么几个后面遇到更好的再整理，如果大家有好的也欢迎评论区下面推荐&lt;/p&gt;
&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category />
      <guid isPermaLink="true">https://itindex.net/detail/62151-%E5%A4%96%E5%8C%85-%E9%A1%B9%E7%9B%AE-%E5%BC%80%E6%BA%90</guid>
      <pubDate>Sun, 20 Feb 2022 02:10:41 CST</pubDate>
    </item>
    <item>
      <title>Calibre 5.36 发布，功能强大的开源电子书工具</title>
      <link>https://itindex.net/detail/62086-calibre-%E5%8A%9F%E8%83%BD-%E5%BC%80%E6%BA%90</link>
      <description>&lt;div&gt;
                                                                                              &lt;p&gt;Calibre 开源项目是 Calibre 官方出的电子书管理工具。它可以查看，转换，编辑和分类所有主流格式的电子书。Calibre 是个跨平台软件，可以在 Linux、Windows 和 macOS 上运行。&lt;/p&gt; 
  &lt;p&gt;Calibre 5.36.0 正式发布，此次更新内容如下：&lt;/p&gt; 
  &lt;h3&gt;新功能&lt;/h3&gt; 
  &lt;ul&gt; 
    &lt;li&gt;编辑元数据对话框：允许通过「首选项-&amp;gt;外观-&amp;gt;编辑」元数据来控制哪些自定义列出现在这个对话框中。&lt;/li&gt; 
    &lt;li&gt;编辑元数据对话框：允许在 &amp;quot;All on 1 tab&amp;quot; 模式下手动调整对话框的各个部分的大小。&lt;/li&gt; 
    &lt;li&gt;编辑书籍：拼写检查，更新捆绑的英语和西班牙语词典&lt;/li&gt; 
    &lt;li&gt;BibTeX 目录：支持自定义列等标签&lt;/li&gt; 
&lt;/ul&gt; 
  &lt;h3&gt;错误修正&lt;/h3&gt; 
  &lt;ul&gt; 
    &lt;li&gt;Amazon 元数据下载：修复评论中的段落被合并的问题&lt;/li&gt; 
    &lt;li&gt;Amazon.de 元数据下载：修复某些书籍的出版日期和系列信息没有被获取的问题&lt;/li&gt; 
    &lt;li&gt;邮件发送：修复通过 Hotmail 发送电子邮件从本周开始无法工作的问题，因为微软改变了 SMTP 服务器的名称&lt;/li&gt; 
    &lt;li&gt;不要删除波兰语标题的文章&lt;/li&gt; 
    &lt;li&gt;电子书查看器：当使用朗读时，在暂停或停止朗读前不会自动查找高亮显示的单词&lt;/li&gt; 
    &lt;li&gt;电子书阅览器：修复打印时 Ctrl+p 快捷键不起作用的问题&lt;/li&gt; 
    &lt;li&gt;查看特定格式且文件丢失时显示错误&lt;/li&gt; 
    &lt;li&gt;编辑书籍：修复以非字开头/结尾的类的重命名不工作的问题&lt;/li&gt; 
    &lt;li&gt;编辑书籍：预览面板：修复在 macOS 上行末的连字符被呈现为方框的问题&lt;/li&gt; 
    &lt;li&gt;修复在图像缩小到适合大小时，修剪图像对话框中显示的不正确的选择尺寸&lt;/li&gt; 
    &lt;li&gt;编辑书籍：修复从另一个编辑器实例粘贴文件时，如果已存在相同名称的文件，则导致失败的问题。&lt;/li&gt; 
&lt;/ul&gt; 
  &lt;p&gt;更多详情可查看：   &lt;a href="https://www.oschina.net/action/GoToLink?url=https%3A%2F%2Fcalibre-ebook.com%2Fwhats-new" target="_blank"&gt;https://calibre-ebook.com/whats-new&lt;/a&gt;&lt;/p&gt;
                                        &lt;/div&gt;
                                    &lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category />
      <guid isPermaLink="true">https://itindex.net/detail/62086-calibre-%E5%8A%9F%E8%83%BD-%E5%BC%80%E6%BA%90</guid>
      <pubDate>Sun, 06 Feb 2022 09:45:55 CST</pubDate>
    </item>
  </channel>
</rss>

