原文作者:medium.com/@jonasfj
发布时间:2021年10月15日
谷歌代码之夏(GSoC)是一个全球性项目,专注于将学生开发者带入开源软件开发。学生们在谷歌的赞助下,在暑假期间与一个指导性的开源组织合作进行为期10周的编程项目。在过去的16年中,有超过16000名学生参加了谷歌夏季代码活动。
2021年是Dart组织第二次作为指导组织参加谷歌夏季代码活动。在我们3月份征集学生提案后,我们收到了来自世界各地学生的92个项目提案,我们很高兴地接受了其中的3个项目。今天,我们很高兴地分享我们的成果,正如参与这些项目的学生所描述的。
基于Cronet的Dart HTTP客户端
作者:Soumyadip Mondal cronet包是一个用于Dart原生平台的HTTP包,由Chromium的网络引擎支持。
你可能会问 "为什么要添加一个HTTP包?"因为Dart在dart:io中已经有了HTTP支持。原因之一是package:cronet可以使用QUIC/HTTP3协议,这是社区强烈要求的功能。除此之外,package:cronet在很多情况下都比dart:io快。
Cronet的Dart绑定让我们可以轻松地使用它的功能,例如:套接字的可重用性、强大的缓存和压缩算法、请求优先级和更可靠的网络连接。各种谷歌产品--包括YouTube、Chrome、谷歌地图、谷歌照片和谷歌应用程序--已经依赖Cronet库来满足其网络需求。通过package:cronet,你可以使用类似于dart:io的API访问Cronet库,在你现有的Dart/Flutter应用中几乎不需要修改代码。
查看github.com/google/cron… ,了解基准、例子以及与dart:io的比较。也可以查看这篇关于package:cronet的博文,了解技术概述和对我们所面临的挑战的讨论。
Flutter桌面工具
作者:Abdullah Deshmukh
在Flutter 2的桌面支持测试版发布后,我们需要一个样本应用来演示如何编写一个可以在Windows、macOS和Linux上运行的Flutter应用。我在这个样本上做了工作,以Flutter提示工具的形式,帮助你管理Flutter项目的提示规则。该应用的源代码显示了你可能会实现基本的桌面应用技术,如读写文件、实现响应式布局、使用持久化存储,甚至是如何处理YAML文件。同时,该样本可能被用来测试Flutter应用程序在各种桌面应用程序商店的分发情况。
更多细节,请访问GSoC '21:为Flutter创建一个桌面样本。
Flutter提示工具
用于pub.dev的许可检测
作者:Bharat Biradar
在pub.dev上发布的软件包会根据各种指标进行评估,比如它是否遵循Dart文件惯例,是否有CHANGELOG文件等。这种分析是由pana(Package ANAlysis for Dart)完成的。Pana还负责检测发布软件包的许可证标识符。
到目前为止,pub.dev上显示的许可证名称是通过简单的正则表达式启发式确定的,它们只支持对少数许可证的检测,准确性很差。这个项目的任务是为pana创建一个许可证检测器,以检测SPDX许可证,符合SPDX匹配指南。
为pana建立的许可证检测器使用了与v2_licenseclassifier相同的方法,并进行了修改以更好地满足我们的要求。
给定一个软件包的LICENSE文件,pana使用三个步骤来检测SPDX许可证标识符。
1.从SPDX语料库中消除明显的不匹配。将文本分割成标记(基本上是单词),检查LICENSE文件与已知许可证相比是否有足够数量的标记(至少50%),并消除所有不满足标准的已知许可证。这一步使pana能够迅速排除大量的许可证,以便在第2步进行更昂贵的计算。
-
在未知许可证和剩余的SPDX许可证中找到匹配的子字符串。对于剩余的已知许可证,找到未知文本中与已知许可证文本相匹配的子字符串。我们寻找子串,因为未知文本可能包含多个许可证。在识别匹配的子串时,我们忽略了标记少于
threshold * number_of_tokens_in_known_license的序列,因为这种序列没有足够的标记密度来构成匹配。如果对于一个给定的已知许可证来说,没有找到具有足够令牌密度的子串,那么我们就知道它不是一个匹配的。 -
确定置信度分数。这一步对找到的子串估计一个置信度分数(在[0,1]之间)。首先,使用levenshtain word diff将子串与发现它的SPDX语料库许可证进行比较。然后,如果按以下方法计算的置信度高于设定的阈值,则认为许可证是匹配的。
我们希望这能给你一些关于许可证检测过程的想法。如果你想玩许可证检测器,你可以在pana资源库中找到它。
衷心感谢所有申请参加谷歌2021年夏季代码项目的人,感谢今年完成项目的学生,以及帮助使这个夏季代码项目出色的导师。如果你有兴趣听到更多关于Dart在谷歌夏季代码中的情况,请查看我们2020年的帖子。