2023年10月

json简介

JSON是一种轻量级的数据交换格式。 易于人阅读和编写。同时也易于机器解析和生成。 它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。 这些特性使JSON成为理想的数据交换语言。

json在线解析及格式化工具介绍

JSON格式化和JSON验证器工具帮助自动格式化JSON和验证您的JSON文本。它还提供了一个树视图,帮助导航格式化的JSON数据。

体验地址是:
https://fktool.com/json/

源码分享

<!DOCTYPE html>
<html lang="zh-CN">

<head>
    <title>JSON在线解析 | JSON在线格式化校验工具</title>
    <meta charset="utf-8" />
    <meta name="viewport"
        content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=5.0, user-scalable=yes" />
    <meta name="applicable-device" content="pc,mobile" />
    <meta name="keywords" content="json格式化, json在线解析, json校验" />
    <meta name="description"
        content="一个功能强大的在线 JSON 解析和格式化工具,提供JSON在线,json解析,json在线解析,JSON Formatter,json数组,JSON校验,格式化JSON,xml转json工具,在线json格式化工具,json格式化,json格式化工具,json字符串格式化,json在线,json在线验证,json在线校验" />

    <!-- Google -->
    <meta itemprop="name" content="json在线解析工具" />
    <meta itemprop="description" content="一个功能强大的在线 JSON 解析和格式化工具..." />
    <!-- Twitter -->
    <meta name="twitter:card" content="summary_large_image" />
    <meta name="twitter:title" content="json在线解析工具" />
    <meta name="twitter:description" content="一个功能强大的在线 JSON 解析和格式化工具..." />

    <meta name="renderer" content="webkit" />
    <meta name="apple-mobile-web-app-capable" content="yes" />
    <link rel="icon" type="image/png" href="/images/favicon_48x48.png">
    <link rel="apple-touch-icon" sizes="114x114" href="/images/favicon_114x114.png">
    <link rel="icon" href="/images/favicon.ico" type="image/x-icon" />
    <link href="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"
        type="text/css" />
    <link href="./static/style/tool.css" rel="stylesheet" type="text/css" />

</head>

<body>

    <header class="hd-nav">
        <a class="navbar-icon" href="/">
            <img src="/images/icon_36x36.svg" width="32" height="32" alt="fktool在线工具网" />
            <span class="navbar-label">FKTool.com</span>
        </a>
    </header>

    <div class="main">
        <div class="left">
            <div class="row">
                <h1 style="font-size: 24px;margin: 16px 16px;color:#7952b3;">JSON在线格式化工具</h1>
            </div>
            <div class="row">
                <div class="banner">输入要解析的json文本并点击格式化按钮</div>
            </div>
            <div class="row">
                <div class="col-md-12 col10main">
                    <div class="accordion" id="accordion2">
                        <div class="accordion-group">
                            <div class="panel panel-defaul">
                                <form id="form1" class="form-horizontal" method="post">
                                    <div class="input-group mb5"><input class="form-control" type="text" id="txt_url"
                                            placeholder="输入远程Json网址" /><span class="input-group-btn"><button
                                                class="btn btn-default" type="button"
                                                id="get_remote">远程获取Json</button></span></div>
                                    <div class="form-group">
                                        <div class="col-sm-12"><textarea id="content" name="content"
                                                class="form-control" rows="14"
                                                placeholder="请输入Json,Json格式化的时候要去除所有转义,转义存在可能导致Json校验不通过"></textarea>
                                        </div>
                                    </div>
                                    <div class="form-group">
                                        <div class="col-sm-12 text-center">

                                            <input type="button" class="btn btn-success" name="validate" id="validate"
                                                value="Json格式化" />
                                            <input type="button" class="btn btn-info" onclick="jsonzip(1);"
                                                value="Json压缩">
                                            <span id="copyallcode" class="btn btn-default"
                                                data-clipboard-target="#content">复制</span>
                                            <input type="button" class="btn btn-default" onclick="content.value=''"
                                                value="清空">
                                        </div>
                                    </div>
                                    <div class="form-group">
                                        <div class="col-sm-12">
                                            <div class="alert alert-warning alert-dismissible text-left" role="alert"
                                                id="results"><span>请输入需要格式化的Json字符串</span></div>
                                        </div>
                                    </div>
                                </form>
                            </div>
                        </div>
                        <div class="alert alert-info main-desc">
                            <h2 class="f20">json在线解析及格式化工具介绍</h2>
                            <p>
                                JSON格式化和JSON验证器工具帮助自动格式化JSON和验证您的JSON文本。它还提供了一个树视图,帮助导航格式化的JSON数据。它具有如下优点:
                            </p>

                            <ul>
                                <li>
                                    它有助于通过错误消息在线验证JSON。
                                </li>
                                <li>
                                    它是唯一的JSON工具,显示图像悬停在树视图中的图像URL。
                                </li>
                                <li>
                                    它也是一个JSON美化器,支持缩进级别:2个空格,3个空格和4个空格。
                                </li>
                                <li>
                                    支持打印JSON数据。
                                </li>
                                <li>
                                    JSON文件格式化器提供了上传JSON文件和下载格式化JSON文件的功能。这个功能有助于格式化json文件。
                                </li>
                                <li>
                                    95%的API使用JSON在客户端和服务器之间传输数据。这个工具可以作为API格式化器使用。
                                </li>
                                <li>
                                    支持JSON字符串的JSON图形视图,作为JSON调试器或纠错器,可以格式化数组和对象。
                                </li>
                                <li>
                                    在浏览器的本地存储中存储最后一个JSON格式的数据。这可以用作notepad++ / Sublime / VSCode JSON美化的替代方案。
                                </li>
                                <li>
                                    这个JSON在线格式化器也可以作为JSON Lint工作。
                                </li>
                                <li>
                                    使用自动开关打开或关闭自动更新进行美化。
                                </li>
                                <li>
                                    它使用$。parseJSON和JSON。stringify美化JSON,以便于人类阅读和分析。
                                </li>
                                <li>
                                    下载JSON,一旦它被创建或修改,它可以在notepad++, Sublime,或VSCode替代打开。
                                </li>
                                <li>
                                    JSON格式检查器有助于修复缺失的引号,点击设置图标,看起来像一个螺丝刀在编辑器的左边来修复格式。
                                </li>
                            </ul>

                            <h2>JSON简介</h2>
                            <p>
                                JSON是一种轻量级的数据交换格式。 易于人阅读和编写。同时也易于机器解析和生成。 它基于JavaScript Programming Language, Standard
                                ECMA-262 3rd Edition - December 1999的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C,
                                C++, C#, Java, JavaScript, Perl, Python等)。 这些特性使JSON成为理想的数据交换语言。
                            </p>

                            <h2>与其他格式的比较</h2>
                            <h3>XML</h3>
                            <p>
                                JSON与XML最大的不同在于XML是一个完整的标记语言,而JSON不是。这使得XML在程序判读上需要比较多的功夫。主要的原因在于XML的设计理念与JSON不同。XML利用标记语言的特性提供了绝佳的延展性(如XPath),在数据存储,扩展及高级检索方面具备对JSON的优势,而JSON则由于比XML更加小巧,以及浏览器的内置快速解析支持,使得其更适用于网络数据传输领域。
                            </p>
                            <h3>YAML</h3>
                            <p>
                                在功能和语法上,JSON 都是 YAML 语言的一个子集。特别是,YAML
                                1.2规范指定“任何JSON格式的文件都是YAML格式的有效文件"。最常见的YAML解析器也能够处理JSON。版本 1.2 之前的 YAML 规范没有完全涵盖
                                JSON,主要是由于 YAML 中缺乏本机 UTF-32 支持,以及对逗号分隔空格的要求;此外,JSON 规范还包括 /* */ 样式的注释。YAML
                                最重要的区别是语法扩展集,它们在 JSON 中没有类似物:关系数据支持:在 YAML
                                文档中,可以引用以前在文件/流中找到的锚点;通过这种方式,您可以表达递归结构。支持除基元之外的可扩展数据类型,如字符串、数字、布尔值等。支持带缩进的块语法;它允许您在不使用不必要的符号的情况下描述结构化数据:各种括号、引号等。
                            </p>
                            <h3>MessagePack</h3>
                            <p>
                                MessagePack比JSON更短小,快速。
                            </p>
                            <h3>格式化工具</h3>
                            <p>
                                JSON格式取代了XML给网络传输带来了很大的便利,但是却没有了XML的一目了然,尤其是JSON数据很长的时候,会让人陷入繁琐复杂的数据节点查找中。开发者可以通过在线JSON格式化工具,来更方便的对JSON数据进行节点查找和解析。
                            </p>

                            <h2>参考资料:</h2>
                            <ul>
                                <li>
                                    <a href="https://zh.wikipedia.org/wiki/JSON">https://zh.wikipedia.org/wiki/JSON</a>
                                </li>
                                <li>
                                    <a
                                        href="https://zhuanlan.zhihu.com/p/33792109">https://zhuanlan.zhihu.com/p/33792109</a>
                                </li>
                                <li>
                                    <a href="https://www.json.org/json-zh.html">https://www.json.org/json-zh.html</a>
                                </li>
                                <li>
                                    <a href="https://developer.mozilla.org/zh-CN/docs/Learn/JavaScript/Objects/JSON">https://developer.mozilla.org/zh-CN/docs/Learn/JavaScript/Objects/JSON</a>
                                </li>
                            </ul>

                        </div>
                        <div class="accordion-group"></div>
                    </div>
                </div>
            </div>
        </div>
        <div class="right">
            <div class="search">
                <input id="keyword" />
                <div class="search-btn">搜索</div>
            </div>
            <div class="recommend">
                <div class="recommend-head">相关推荐</div>
                <div class="recommend-list">
                    <a class="recommend-list-item" href="https://ps.gitapp.cn">在线ps</a>
                    <a class="recommend-list-item" href="https://fangdai.gitapp.cn">房贷计算器</a>
                    <a class="recommend-list-item" href="https://ps.fktool.com">Online PS</a>
                    <a class="recommend-list-item" href="https://base64.fktool.com">base64解码</a>
                </div>
            </div>
        </div>
    </div>

    <script src="./static/script/jquery-1.11.3.min.js" type="text/javascript"></script>
    <script src="./static/script/bootstrap.min.js" type="text/javascript"></script>
    <script src="./static/script/tool.js" type="text/javascript"></script>
    <script src="./static/script/json/jsonformat.js" type="text/javascript"></script>
    <script type="text/javascript">setJS(["./static/script/json/jsonzip.js"]);</script>
    </div>


    <div class="copyright" id="footer">
        <div class="container">
            <div class="row">
                <div class="col-sm-12">
                    <span>
                        Copyright ©2023
                        <a href="/">
                            fktool在线工具网
                        </a>
                    </span>
                    |
                    <span>
                    </span>
                </div>
            </div>
        </div>
    </div>

    <script>
    </script>

</body>

</html>

与其他格式比较

  • XML
    JSON与XML最大的不同在于XML是一个完整的标记语言,而JSON不是。这使得XML在程序判读上需要比较多的功夫。主要的原因在于XML的设计理念与JSON不同。XML利用标记语言的特性提供了绝佳的延展性(如XPath),在数据存储,扩展及高级检索方面具备对JSON的优势,而JSON则由于比XML更加小巧,以及浏览器的内置快速解析支持,使得其更适用于网络数据传输领域。

  • YAML
    在功能和语法上,JSON 都是 YAML 语言的一个子集。特别是,YAML 1.2规范指定“任何JSON格式的文件都是YAML格式的有效文件"。最常见的YAML解析器也能够处理JSON。版本 1.2 之前的 YAML 规范没有完全涵盖 JSON,主要是由于 YAML 中缺乏本机 UTF-32 支持,以及对逗号分隔空格的要求;此外,JSON 规范还包括 /* */ 样式的注释。YAML 最重要的区别是语法扩展集,它们在 JSON 中没有类似物:关系数据支持:在 YAML 文档中,可以引用以前在文件/流中找到的锚点;通过这种方式,您可以表达递归结构。支持除基元之外的可扩展数据类型,如字符串、数字、布尔值等。支持带缩进的块语法;它允许您在不使用不必要的符号的情况下描述结构化数据:各种括号、引号等。

  • MessagePack
    MessagePack比JSON更短小,快速。

总结

JSON格式取代了XML给网络传输带来了很大的便利,但是却没有了XML的一目了然,尤其是JSON数据很长的时候,会让人陷入繁琐复杂的数据节点查找中。开发者可以通过在线JSON格式化工具,来更方便的对JSON数据进行节点查找和解析。

这节课中介绍了训练神经网络的第二部分,包括学习率曲线,超参数优化,模型集成,迁移学习

学习率曲线

在训练神经网络时,一个常见的思路就是刚开始迭代的时候学习率较大,然后随着迭代次数的增加,学习率逐渐下降,下面我们就来介绍几种学习率下降的方法:
img
第一种方法是我们在某些特定的迭代节点,将学习率乘以某个值比如0.1,这种方法显然又引入了更多的超参数,我们不想这样做,所以又设计了其它的下降曲线
img
比如上图的cos linear 等等 我们有时会发现保持学习率不变也是个不错的选择
实际上不同下降方法之间没有明显的对比统计,大多是根据不同领域习惯选择不同方法,比如计算机视觉用cos,大规模自然语言处理用linear等

在训练的时候,我们应该在发现验证集上准确率下降的时候就停止训练:
img

超参数优化

在训练神经网络的时候,在不同的超参数之间选择,我们常常会采用网格搜索,将不同的值排列组合,然后去训练
img
有时我们也会选择随机搜索,在设置的范围内随机选取相应的超参数的值:
img
在实际应用中往往随机搜索更好,从下图可以看出,最上面的绿色曲线表示准确率,网格搜索只能表示曲线上固定的几个值,而随机搜索引入了更多的随机性,从而可能得到更好的结果:
img

在选择超参数的过程中,我们一般有具体的流程:
img
第一步我们在什么都没有设置的情况下,可以先运行一下模型,看看损失是否正常,比如我们采用softmax函数输出c个类的得分,它的初始损失应该是log(c)
第二步我们先在几个比较小的样本集数据中训练我们的神经网络,调整网络架构,调整学习率与权重,注意不使用正则化方法,让我们的模型在小数据集上能达到100%的准确度,通过画迭代次数与loss的曲线观察,如果损失一直不下降,说明我们采用的学习率太小,如果损失突然下降到0或者损失爆炸,说明我们采用的学习率太大,并且上述两种情况都说明我们的初始化很糟糕
第三步我们根据前几步确定的结构,在此基础上使用权重衰减,采用不同的学习率,找到一个学习率,能在固定的迭代步骤内,使得损失下降幅度最大:
img
第四步我们选择第三步中的一些学习率与权重衰减,迭代几次,找出比较好的模型用于第五步,迭代更长时间,然后我们画出相关的学习曲线(损失与迭代次数的统计图,训练集与验证集在不同迭代次数上的统计图)作进一步的观察:
img

对于损失与迭代次数的统计图
img
这种在一段迭代次数内损失不下降说明我们初始化较为糟糕
img
这种出现损失平原的情况说明我们可以尝试学习率下降的方法
img
当学习率下降损失依然下降,说明我们采用的下降方法下降的太早了

对于训练集与验证集在不同迭代次数上的统计图
img
一直上升说明我们还可以训练更长时间
img
这种差异过大的曲线说明我们过拟合了,需要提升正则化强度或者引入更多数据
img
这种差异过小的曲线说明我们under fitting,需要训练更长时间,选择更复杂的模型

模型集成

模型集成常见的思路就是训练不同的模型,然后取它们结果的平均值:
img
我们也可以采用一个模型,在不同的训练时间输出不同的结果,再取平均值,采用循环学习率很有利于这种snapshot集成的方法:
img
同时我们也可以将这种思想应用于参数向量:
img

迁移学习

迁移学习是为了解决数据量不足的问题
img
先在给定的数据集上使用某种卷积网络训练图像数据,然后去除最后一层不获取预测得分,使用这个卷积网络作为特征向量提取器,冻结之前训练的层,然后再使用其它方法输出结果
比如右图2009年专门为数据集设计的神经网络
其余两个是在VGG上预训练 然后使用svm或者逻辑回归输出结果 得到的效果就比专门设计的要好

如果我们有更大的数据集,我们可以对cnn网络架构进行进一步的训练,使其能完成更多类型的工作
img
事实证明cnn网络结构的优化可以为许多下游的工作带来提升
img
上图说明了我们尝试在不同的数据集上应用cnn进行迁移学习需要进行的操作,假如数据集与imagenet相似,并且数据量较小,我们可以使用线性分类器输出结果,假如数据量较大,我们可以利用这些数据微调一些层,假如数据量较大并且与imagenet数据集不想死,我们需要在更多层上进行微调,如果数据量较小,我们就需要更多的尝试

下面两张图展现了这种迁移学习方法的广泛应用:
img
img
可以在物体检测 语言建模等方面应用

img
但是对于迁移学习也存在一些疑问,有人指出这种方法并没有比从头开始设计网络的方法好很多,小哥的建议是如果有充足的数据和算力,我们可以从头开始设计并且调整网络,大多数情况下使用预训练的网络加上微调步骤十分高效

前言

在我们日常开发工作中对接第三方开放平台,找一款封装完善且全面的SDK能够大大的简化我们的开发难度和提高工作效率。今天给大家推荐一款C#开源、功能完善的字节跳动SDK:SKIT.FlurlHttpClient.ByteDance。

项目官方介绍

可能是全网唯一的 C# 版字节跳动 SDK,封装全部已知的字节跳动 API,包含字节小程序开放平台、抖音开放平台、抖店开放平台、巨量引擎开放平台、TikTok Developer、TikTok Shop Open Platform 等模块,可跨平台,持续随官方更新。

项目特性

  • 基于 Flurl.Http,可与 IHttpClientFactory 集成。

  • 支持 .NET Framework 4.6.1+、.NET Standard 2.0+、.NET Core 2.0+、.NET 5+。

  • 支持 Windows / Linux / macOS 多平台部署。

  • 支持 System.Text.Json(默认)和 Newtonsoft.Json 两种序列化方式。

  • 强类型接口模型。

  • 全异步式编程。

  • 提供 SourceLink 调试符号文件。

  • 完整、完善、完全的字节跳动 HTTP API 封装。

项目模块

字节小程序开放平台(小程序、小游戏)、抖音开放平台、巨量引擎开放平台(头条广告)、TikTok Developer、TikTok Shop Open Platform等。

项目源码

抖音开放平台快速开始

模块功能描述

  • 基于抖音开放平台 API 封装。

  • 提供了抖音开放平台 API 所需的 AES、MD5、SHA-1、SHA-256、HMAC-SHA-256 等算法工具类。

  • 提供了生成授权链接、生成 JSBridge 签名、解析回调通知事件、解密手机号码等扩展方法。

快速入门

安装:

提示:如果你使用 Visual Studio NuGet 管理器图形化界面,请在搜索结果中勾选“    包括预发行版  
 ”。

# 通过 NuGet 安装
> Install-Package SKIT.FlurlHttpClient.ByteDance.DouyinOpen

# 通过 dotnet-tools 安装
> dotnet add package SKIT.FlurlHttpClient.ByteDance.DouyinOpen

初始化:

using SKIT.FlurlHttpClient.ByteDance.DouyinOpen;

var options = new DouyinOpenClientOptions()
{
    ClientKey = "抖音开放平台应用Key",
    ClientSecret = "抖音开放平台应用密钥"
};
var client = new DouyinOpenClient(options);

请求 & 响应:

using SKIT.FlurlHttpClient.ByteDance.DouyinOpen;
using SKIT.FlurlHttpClient.ByteDance.DouyinOpen.Models;

/* 以获取用户信息接口为例 */
var request = new OAuthUserInfoRequest()
{
    AccessToken = "抖音开放平台的AccessToken",
    OpenId = "用户唯一标识"
};
var response = await client.ExecuteOAuthUserInfoAsync(request);
if (response.IsSuccessful())
{
    Console.WriteLine("昵称:" + response.Data.Nickname);
    Console.WriteLine("头像:" + response.Data.AvatarUrl);
}
else
{
    Console.WriteLine("错误代码:" + response.Extra?.ErrorCode);
    Console.WriteLine("错误描述:" + response.Extra?.ErrorDescription);
}

项目源码地址

  更多项目实用功能和特性欢迎前往项目开源地址查看

兴趣是最好的老师,
HelloGitHub
让你对编程感兴趣!

简介

HelloGitHub
分享 GitHub 上有趣、入门级的开源项目。

https://github.com/521xueweihan/HelloGitHub

这里有实战项目、入门教程、黑科技、开源书籍、大厂开源项目等,涵盖多种编程语言 Python、Java、Go、C/C++、Swift...让你在短时间内感受到开源的魅力,对编程产生兴趣!


以下为本期内容|每个月
28
号更新

C 项目

1、
barrier
:一套键盘鼠标控制多台电脑的工具。该项目通过模拟 KVM 切换器功能,实现多台电脑、不同操作系统,共享一套键盘鼠标,让工作流程更加高效。它安装简单使用方便,无需复杂的配置,支持自定义热键、多种操作系统、可视化操作界面等功能。来自
@loongmonkey
的分享

2、
clumsy
:让 Windows 网络变差的工具。该项目是基于 WinDivert 实现的手动控制 Windows 网络情况的工具,它无需安装下载即用,可用于模拟网络延迟、节流、丢包等。

3、
vlc
:自由、免费、跨平台的视频播放器。这是一款可播放几乎所有音视频格式的文件和各种流媒体协议的播放器,它完全免费、没有广告,无需额外安装编解码器,支持播放文件、光盘、摄像头和流媒体的内容,可运行在 Windows、Linux、macOS、Android 和 iOS 等平台。来自
@Xuefeng Xu
的分享

C# 项目

4、
Borderless-Gaming
:通用的游戏全屏工具。一款专门为游戏开发的窗口优化工具,能够将原本不支持全屏的游戏全屏化。它界面简洁、使用方便,支持一键全屏和恢复,适用于 Windows 系统。

5、
Dependencies
:查看 DLL 依赖关系的工具。DLL 文件即动态链接库文件是一种共享库文件,Windows 系统上的可执行文件(.exe) 一般包含多个 .dll 后缀的文件。该项目是 Windows 上查看 DLL 文件依赖树的工具,能够帮助解决因依赖缺失,导致运行 .exe 程序失败的问题。来自
@孤胆枪手
的分享

6、
WinMemoryCleaner
:一款实用的 Windows 内存清理工具。它采用 C# 编写、仅 200+KB 大小、界面清爽,可设置自动清理内存的间隔时间和阈值,支持进程白名单、多国语言、热键、开机启动等功能。来自
@猎隼丶止戈reNo7
的分享

C++ 项目

7、
KeyDB
:多线程版的 Redis。该项目是由 Snapchat 开源的支持多线程的 Redis,它具有高性能、更高的吞吐量、完全兼容 Redis 协议等特点。有了多线程就可以放心大胆地执行 KEYS 和 SCAN 命令,不用再担心阻塞 Redis 了。

8、
MuseScore
:一款免费开源的写谱工具。这是一款用 C++ 编写的创建和编辑乐谱的桌面工具,它拥有精美的界面、中文语言和丰富的功能,重点是免费畅用无限制。支持为包括钢琴、吉他等 500 多种乐器编曲,适用于 Windows、Linux 和 macOS 系统。

9、
rpcs3
:流畅运行 PS3 游戏的开源模拟器。该项目是用 C++ 写的 PlayStation 3(PS3) 模拟器,安装后使用默认配置,就能较为流畅地运行多种 PS3 主机上的游戏,适用于 Windows、Linux、macOS 和 FreeBSD 操作系统。

10、
tiled
:一款强大的 2D 游戏关卡编辑工具。该项目是一款完全由社区驱动、功能强大、容易上手的 2D 游戏场景编辑器,它能够帮助开发者快速制作 2D 游戏地图和设计关卡,支持灵活的对象图层、自由放置图像、对齐像素、图块动画和碰撞编辑器等功能。

Go 项目

11、
groupcache
:Go 写的轻量级分布式缓存库。该项目是由 Golang 官方开源的库,它实现了一个无需部署的分布式缓存。支持当查询未命中缓存时仅一个进程填充缓存(防穿透和雪崩)、热点数据自动扩展等功能,但不支持更新和删除数据(LRU 控制内存),所以仅适用于某些特定场景。

12、
kopia
:好用的跨平台备份工具。适用于 Windows、Linux 和 macOS 的备份/还原工具,它能够将指定的文件和目录加密压缩后生成快照,然后上传到远程服务器或云存储,实现远程备份数据的功能,开箱即用支持命令行和 GUI 两种使用方式。

13、
photoprism
:带 AI 功能的开源私人云相册。该项目是用 Go 语言写的在线私人相册,它稳定、部署方便,支持浏览/备份图片、按地点/时间线浏览照片、移动端自动备份照片,以及人脸识别、图片自动分类等功能,可用来搭建私人相册管理你的照片。来自
@鸿宇Hov
的分享

14、
zlsgo
:简单易用的 Golang 工具库。该项目把 HTTP 服务、日志、热重启、验证器、编码等十几种开发中经常写的功能,封装成了一个库,拿来即用提高开发效率。来自
@神经蛙9dyXx
的分享

  func main() {

      // 需要验证的数据
      data := "我是需要验证的数据,我的作用是做用户名"
      // 开始验证数据,不能为空,必须包含字母
      name, err := zvalid.Text(data, "用户名").Required().HasNumber().HasLetter().String()
      if err != nil {
          zlog.Debug("验证失败", err)
      }

      data = "我是需要验证的数据,我的作用是做用户名,我有字母 A"
      name, err = zvalid.Text(data, "用户名").Required().HasLetter().String()
      zlog.Debug("用户名是:", name)

      // 初始化一个对象,并绑定需要验证的字符串
      // zvalid.New().Verifi("username","用户名").String()
  }

Java 项目

15、
minum
:极简的 Java Web 框架。该项目是作者手撸的 Java Web 框架,它简约、零依赖、具有良好的性能,内置数据库、Web 服务器、模版引擎、日志等功能。如果你是一个 Java 新手,而且经常在各大 Web 框架中“迷失方向”,那你可以通过这个项目,快速上手 Web 开发并理清头绪。

package org.example.myproject;

import com.renomad.minum.web.*;
                                                                                                                       
public class Main {

    public static void main(String[] args) {
        // Start the system
        FullSystem fs = FullSystem.initialize();

        // Register some endpoints
        fs.getWebFramework().registerPath(
                RequestLine.Method.GET,
                "",
                request -> Response.htmlOk("<p>Hi there world!</p>"));

        fs.block();
    }
}

16、
WePush
:专注批量推送的小工具。该项目是用 Java 写的批量推送桌面工具,支持自定义消息、预览消息、批量导入用户、多账号管理、定时推送等功能,目前已支持公众号模板消息、企业微信、微信客服、短信、邮件等消息类型。来自
@周波
的分享

JavaScript 项目

17、
auto-animate
:一个即插即用的过渡动画库。该项目可以为你的 Web 应用添加平滑的过渡效果,它上手简单无需修改现有代码,动画会在子元素被添加、移除或移动时自动触发,适用于 React、Solid、Vue、Svelte 和 JavaScript 应用。来自
@Uyloal
的分享

18、
html-to-image
:将 HTML 网页转化成图片的库。该项目可以将任意 DOM 节点,转换成 SVG、PNG、JPEG 等多种格式的图像,可直接在 React 和原生 JavaScript 代码中使用。来自
@鸿宇Hov
的分享

var node = document.getElementById('my-node');

htmlToImage.toPng(node)
  .then(function (dataUrl) {
    var img = new Image();
    img.src = dataUrl;
    document.body.appendChild(img);
  })
  .catch(function (error) {
    console.error('oops, something went wrong!', error);
  });

19、
lx-music-desktop
:一款免费、没广告的音乐软件。洛雪音乐助手桌面版是基于 Electron + Vue 开发的音乐搜索工具,需要自己配置音乐源,支持在 Windows、macOS、Linux、Android 平台上运行。

20、
threejs-tetris-react
:3D 俄罗斯方块。该项目是采用 Three.js + React + TypeScript 构建的 3D 俄罗斯方块游戏。

21、
workout-lol
:制定你的肌肉训练计划。该项目是采用 NextJS 写的小型 Web 应用,可以帮你更好地健身。用户上来需要选择锻炼器材、指定身体部位,随后网站就会给出动作指导视频和文字描述。来自
@鸿宇Hov
的分享

Objective-C 项目

22、
Sequel-Ace
:适用于 macOS 的 MySQL 数据库管理工具。因为 Mac 上的老牌数据库管理工具 Sequel Pro 停止更新,所以就有了 Sequel-Ace。它免费、开源、持续更新,支持 Intel 和苹果芯片,适用于 macOS 10.13 及以上系统。

Python 项目

23、
codespell
:一条命令找出代码中的拼写错误。该项目主要用于检查文件中常见单词的拼写错误,对于变量名极少产生误报,支持指定目录、文件后缀、修改建议、忽略文件等功能。来自
@Xuefeng Xu
的分享

codespell some_file some_dir/ *.ext  # 检查目录下 ext 后缀文件
codespell -w, --write-changes  # 显示修改建议

24、
pwntools
:知名的 CTF 框架和漏洞利用开发库。该项目是用 Python 编写的 CTF 框架,开箱即用地提供了远程连接、网络、汇编/反汇编、ELF 模块、生成 shellcode 等功能,让 CTF 选手可以专注于编写 EXP(利用漏洞的攻击逻辑)。

from pwn import *
context(arch = 'i386', os = 'linux')

r = remote('exploitme.example.com', 31337)
# 这里写漏洞利用逻辑
r.send(asm(shellcraft.sh()))
r.interactive()

25、
python-holidays
:处理假期的 Python 库。该项目支持动态生成国家/地区和省份公布的法定节假日,可以快速地判断指定日期是否为节假日。

from datetime import date
import holidays

cn_holidays = holidays.CN()
date(2021, 10, 1) in cn_holidays  # True
date(2023, 10, 8) in cn_holidays  # False
date(2024, 2, 9) in cn_holidays  # True 我看了下源码还未更新 2024 年的假期

26、
Qexo
:漂亮的 Hexo 静态博客编辑器。该项目是基于 Django 的 Hexo 静态博客管理后台,支持文章管理、多种图床、自动更新、友情链接、站点统计等功能。

27、
tacticalrmm
:一个远程监控和管理 PC 的工具。该项目是采用 Django+Vue.js 构建的 IT 管理平台,支持类似 TeamViewer 的远程桌面控制、远程执行命令和脚本、上传和下载文件、警报等功能。

Rust 项目

28、
helix
:一款 Rust 写的终端文本编辑器。受 Kakoune 和 Neovim 启发的编辑器,它开箱即用、智能、对新手更加友好,支持类似 Vim 的编辑模式、tree-sitter(高亮更加快速)、LSP 等功能。

29、
mini-redis
:Rust 写的迷你 Redis。该项目是用 Tokio 构建的 Redis,仅实现了 PING、GET、SET、PUBLISH 等命令。可作为 Tokio 的练手项目,不可用于生产环境。

use tokio::net::TcpListener;
use tokio::io::{AsyncReadExt, AsyncWriteExt};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let listener = TcpListener::bind("127.0.0.1:8080").await?;

    loop {
        let (mut socket, _) = listener.accept().await?;

        tokio::spawn(async move {
            let mut buf = [0; 1024];

            // In a loop, read data from the socket and write the data back.
            loop {
                let n = match socket.read(&mut buf).await {
                    // socket closed
                    Ok(n) if n == 0 => return,
                    Ok(n) => n,
                    Err(e) => {
                        eprintln!("failed to read from socket; err = {:?}", e);
                        return;
                    }
                };

                // Write the data back
                if let Err(e) = socket.write_all(&buf[0..n]).await {
                    eprintln!("failed to write to socket; err = {:?}", e);
                    return;
                }
            }
        });
    }
}

30、
rust-blog
:面向 Rust 初学者的博客。这里的文章可以帮助 Rust 初学者更好地掌握 Rust 语言,包括给新手学习 Rust 的建议、Rust 标准库讲解等内容。

Swift 项目

31、
Delta
:iOS 上的多合一经典游戏模拟器。这是一款无需越狱、适用于 iOS 设备的游戏模拟器,支持 NES、GBA、Nintendo 64 等游戏。

其它

32、
AnuPpuccin
:一款精美的 Obsidian 主题。这款 Obsidian 主题支持各种调色板、内置主流配色方案、彩虹文件夹、自定义背景等功能。

33、
fluentui-system-icons
:微软开源的图标集合。这是一套微软 Fluent UI 设计风格的图标,它丰富、精致、统一。

34、
leetcode
:全面的 Leetcode 算法解题指南。该项目包含 LeetCode、《剑指 Offer》、《程序员面试金典》等题目的相关题解,题解有 Java、Python、C++、Go、TypeScript、Rust 等多种编程语言实现。来自
@Libin YANG
的分享

35、
Smart_Plant
:自制智能植物监控设备。这是一款可直接插入土壤的环境监控设备,支持测量土壤湿度、温度和光照,项目仅包含电路板,需自行组装电子墨水屏、太阳能电池板等。

36、
TNT-Weekly
:TNT 前端周刊。该项目是由腾讯新闻前端团队(TNT)发起的周刊,每周会发布国内外前端领域最新的优秀文章和行业动态。

37、
try
:在命令执行前先试一试。该项目可以让你在命令真正执行前,查看命令执行结果,需要注意的是它并不是一个完全独立的空间(sandbox),因为所有的网络请求都是被允许的。

开源书籍

38、
latex-cookbook
:《LaTeX 论文写作教程》。该书是教你如何用 LaTeX 写论文,内容涵盖了 LaTeX 基础、文本编辑、公式、图表设计、文献引用等方面。

39、
Startup-CTO-Handbook
:《初创公司 CTO 手册》。这是一本写给初创公司首席技术官的书,内容涵盖技术团队管理、招聘和面试、技术架构等方面。作者先后担任过多家创业公司的 CTO 和 CEO,还曾在腾讯做过驻点企业家(EIR)。

机器学习

40、
deepface
:轻量级人脸识别和分析库。该项目是 Python 写的人脸识别和面部属性分析框架,可根据人脸图像智能识别年龄、性别、情绪等信息。

41、
DeepLearningSystem
:AI 系统 & 深度学习教程。该项目主要是关于人工智能、深度学习系统设计的教程,内容涵盖 AI 基础知识和概述、AI 芯片、AI 编译器原理、AI 框架核心技术等方面。

42、
guidance
:微软开源的 LLM 提示编程语言。该项目是微软开源的编写 prompt 的模版语言,用于编写复杂、可复用、易于管理的 prompt,支持 GPT-4、LLaMa 等多种大语言模型。

最后

感谢无私分​享开源项目的小伙伴们,欢迎更多的开源爱好者来 HelloGitHub 自荐/推荐开源项目。如果你发现了 GitHub 上有趣的项目,就
点击这里
分享给大家伙吧!

以上就是本期的所有内容了,往期内容
点击阅读

雷达图(Radar Chart),也被称为蛛网图或星型图,是一种用于可视化多个变量之间关系的图表形式。
雷达图是一种显示多变量数据的图形方法。通常从同一中心点开始等角度间隔地射出三个以上的轴,每个轴代表一个定量变量,各轴上的点依次连接成线或几何图形。

雷达图可以用来在变量间进行对比,或者查看变量中有没有异常值。
雷达图中每个轴的相对位置和角度通常是无信息的。每个变量都具有自己的轴,彼此间的距离相等,所有轴都有相同的刻度。
在将数据映射到这些轴上时,需要注意预先对数值进行标准化处理,保证各个轴之间的数值比例能够做同级别的比较。

1. 主要元素

雷达图的主要元素包括:

  1. 坐标轴:每个变量对应一个射线或轴线,从中心点向外延伸。射线的长度或角度表示该变量的值大小或比例。
  2. 数据点:在每个射线上,根据变量的值确定相应的数据点或标记点的位置。
  3. 雷达链:连接各个数据点或标记点形成的多边形或区域,用于表示多个变量之间的关系。
  4. 区域范围:雷达链所连接的区域,面积大小代表各个数据综合的结果。

2. 适用的场景

雷达图适用的分析场景包括:

  • 比较综合表现
    :比较多个实体(如产品、团队、个人等)在多个指标上的表现,帮助决策者了解它们之间的差异和相对优劣。
  • 评估绩效和目标
    :帮助评估绩效和目标达成情况,从而指导后续决策和改进措施。
  • 变量之间的关系趋势
    :直观地发现多个变量之间的关系和趋势,例如某个变量的增长是否会导致其他变量的变化。
  • 强调优势和劣势
    :凸显实体在某些指标上的优势和劣势,有助于决策者更好地了解实体的特点和优势所在。

3. 不适用的场景

雷达图不适用的分析场景有:

  • 无序数据
    :如果数据是无序的,无法明确确定各个变量之间的相对位置和关系,雷达图的效果会大打折扣。
  • 数据缺失
    :如果某些变量的数据缺失或不完整,将导致雷达图无法准确地展示各个变量之间的关系和差异。
  • 多个并行路径
    :当存在多个并行路径时,例如多个团队或产品之间的比较,雷达图可能无法清晰地展示它们之间的差异和相对优劣。

4. 分析实战

本次通过雷达图来分析下王者荣耀KPL联盟几位选手的比赛数据。

4.1. 数据来源

数据来自王者荣耀官网(2023年春季赛数据),整理好的数据可以从下面下载:
https://databook.top/wzry/2023-spring

使用其中的文件:
player-2023春季赛.csv

fp = "d:/share/data/player-2023春季赛.csv"

df = pd.read_csv(fp)
df

4.2. 数据清理

选手的数据一共有
125
条,本来想
按胜率选择最高
的4位选手,发现胜率高的选手很多只参加了1,2场比赛。
所以选择
参加比赛最多

6位
选手来分析。

data = df.sort_values("比赛场次", ascending=False)
data = data.iloc[:6]
data

选择每位选手下列
5个属性
来绘制雷达图:

  1. 经济占比
  2. 伤害占比
  3. 承伤占比
  4. 推塔占比
  5. 参团率
filter_cols = ["选手", "经济占比", "伤害占比", "承伤占比", "推塔占比", "参团率"]
data = data.loc[:, filter_cols]
data

image.png

将百分比数据转为数值类型:

for col in filter_cols[1:]:
    data[col] = data[col].str.replace("%", "", regex=False)
    data[col] = data[col].astype("float")

data

image.png

4.3. 分析结果可视化

绘制
6位
选手的雷达图:

N = 5 # 雷达图属性个数
angles = np.linspace(0, 2 * np.pi, N, endpoint=False)
angles = np.concatenate((angles, [angles[0]]))

fig = plt.figure(figsize=[10, 6])
for i in range(len(data)):
    values = data.iloc[i, 1:].tolist()
    values.append(values[0])

    position = "23" + str(i + 1)
    ax = fig.add_subplot(int(position), polar=True)
    ax.plot(angles, values, "o-")
    ax.fill(angles, values, alpha=0.4)
    ax.set_thetagrids(angles[:-1] * 180 / np.pi,
                      data.columns[1:].tolist())
    ax.set_title(data.iloc[i, 0], color="b")
    ax.set_ylim(0, 100)

plt.subplots_adjust(hspace=0.5)

image.png

参赛最多的6位选手,5位都是
佛山DRG
的队员,说明他们的首发阵容很稳定。
5个属性
连接起来的
面积
,看起来还是
射手

打野
的比较大,
C位
果然还是得看这两个位置。