标签 python 下的文章

微软推出 Pylance,改善 VS Code 中的 Python 体验

微软宣布推出一种新的 Python 语言服务器,名为 Pylance,其可利用语言服务器协议与 VS Code 进行通信。Pylance 现在作为 Visual Studio Marketplace 的扩展提供。一些关键功能包括有:类型信息、自动导入、类型检查诊断和多根工作区支持。

来源:开源中国

拍一拍:VS Code 真好用……慢慢地,微软推出的开源产品会越来越好用,心情复杂……

维基百科新项目 Abstract Wikipedia 推动跨语言内容发展

这是该基金会 7 年来展开的第一个新项目。这个新想法,即允许投稿者使用抽象符号创建内容,然后通过一款名为 Wikilambda 的工具托管一组函数并将其翻译成不同的自然语言,无论用户说的是哪种语言都能更好地平衡内容。在其看来,该项目不需要在自然语言生成或词汇知识表达方面取得了重大突破。

来源:cnBeta.COM

拍一拍:确实目前还是英文维基百科内容最丰富详实,这个项目如果能够成功的话,会对各个语言版本的发展起到很大的推动作用。不过,中文维基百科的落后,不完全是语言问题,你知道的……

Ubuntu 19.10 将于本月结束生命周期

官方建议迁移至 Ubuntu 20.04,从 Ubuntu 19.10 升级到 20.04 版本也非常方便。今年 4 月发布的 Ubuntu 20.04 是一个长期支持版本,将提供长达 5 年的支持,直至 2025 年。

来源:开源中国

拍一拍:Ubuntu 的 STS 类似于 Fedora 的快递迭代,LTS 则类似于 CentOS,但是每逢遇到 STS 版本,我基本上都不想去用。

openSUSE Leap 15.2 发布

新版最引人注目的是整合了 AI 和机器学习库,其中包括 Tensorflow、PyTorch、ONNX、Grafana 和 Prometheus。openSUSE Leap 15.2 还加入了实时核心去管理微处理器的时序。

来源:solidot

拍一拍:这些增加的部分不错。

第二次 LibreOffice 7.0 Bug 猎杀会即将开始

文档基金会正在努力准备 LibreOffice 的下一次重大更新,随着发布日期的临近,LibreOffice QA 团队将于 2020 年 7 月 6 日(星期一)组织 LibreOffice 7.0 的第二次 Bug 猎杀会。LibreOffice 7.0 预计将在 8 月初推出。

来源:softpedia

拍一拍:Bug 们会瑟瑟发抖吗?会吗?

选择的这些工具将简化你的 Python 环境,以实现顺畅和一致的开发实践。

Python 是一门出色的通用编程语言,经常作为第一门编程语言来教授。二十年来,我为它撰写了很多本书,而它仍然是我的首选语言。虽然通常来说这门语言是简洁明了的,但是(正如 xkcd 讽刺的),从来没有人说过配置 Python 环境也是一样的简单。

 title=

一个复杂的Python环境。 xkcd

在日常生活中有很多使用 Python 的方法。我将解释我是如何使用这些 Python 生态系统工具的。但坦诚的说,我仍在寻找更好的替代品。

使用 pyenv 来管理 Python 版本

我发现在机器上运行一个特定版本的 Python 的最好方法是使用 pyenv。这个软件可以在 Linux、Mac OS X 和 WSL2 上工作:这是我通常关心的三个 “类 UNIX” 环境。

安装 pyenv 本身有时会有点棘手。一种方法是使用专用的 pyenv 安装程序,它使用 curl | bash 方法来进行(详见其说明)。

如果你是在 Mac 上(或者你运行 Homebrew 的其他系统),你可以按照这里的说明来安装和使用 pyenv

按照说明安装和设置了 pyenv 之后,你可以使用 pyenv global 来设置一个 “默认的” Python 版本。一般来说,你会选择你的 “首选” 版本。这通常是最新的稳定版本,但如果有其他考虑因素也可能做出不同的选择。

使用 virtualenvwrapper 让虚拟环境更简单

使用 pyenv 安装 Python 的一个好处是,你所有后继安装的 Python 解释器环境都是你自己的,而不是操作系统层面的。

虽然在 Python 本身内部安装东西通常不是最好的选择,但有一个例外:在上面选择的 “首选” Python 中,安装并配置 virtualenvwrapper。这样你就可以瞬间创建和切换到虚拟环境。

我在这篇文章中具体介绍了如何安装和使用 virtualenvwrapper

这里我推荐一个独特的工作流程:你可以制作一个可以大量重复运行的虚拟环境,用来做 运行器 runner 。在这个环境中,可以安装你最喜欢的运行器 —— 也就是你会经常用来运行其他软件的软件。就目前而言,我的首选是 tox

使用 tox 作为 Python 运行器

tox 是一个很好的工具,可以让你的 Python 测试自动化。在每个 Python 环境中,我都会创建一个 tox.ini 文件。无论我使用什么系统做持续集成,都可以运行它,我可以用上面文章中描述的 virtualenvwrapperworkon 语法在本地运行同样的东西:

$ workon runner
$ tox

这个工作流程之所以重要,是因为我要在多个版本的 Python 和多个版本的依赖库中测试我的代码。这意味着在 tox 运行器中会有多个环境。一些会尝试在最新的依赖关系中运行,一些会尝试在冻结的依赖关系中运行(接下来会有更多的介绍),我也可能会用 pip-compile 在本地生成这些环境。

附注:我目前正在研究使用 nox 作为 tox 的替代品。原因超出了本文的范畴,但值得一试。

使用 pip-compile 进行 Python 依赖性管理

Python 是一种动态编程语言,这意味着它在每次执行代码时都会加载其依赖关系。能否确切了解每个依赖项的具体运行版本可能意味着是平稳运行代码还是意外崩溃。这意味着我们必须考虑依赖管理工具。

对于每个新项目,我都会包含一个 requirements.in 文件,(通常)只有以下内容:

.

是的,没错。只有一个点的单行。我在 setup.py 文件中记录了 “宽松” 的依赖关系,比如 Twisted>=17.5。这与 Twisted==18.1 这样的确切依赖关系形成了鲜明对比,后者在需要一个特性或错误修复时,难以升级到新版本的库。

. 的意思是 “当前目录”,它使用当前目录下的 setup.py 作为依赖关系的来源。

这意味着使用 pip-compile requirements.in > requirements.txt 会创建一个冻结的依赖文件。你可以在 virtualenvwrapper 创建的虚拟环境中或者 tox.ini 中使用这个依赖文件。

有时,也可以从 requirements-dev.in(内容:.[dev])生成 requirements-dev.txt,或从 requirements-test.in(内容:.[test])生成 requirements-test.txt

我正在研究在这个流程中是否应该用 dephell 代替 pip-compiledephell 工具有许多有趣的功能,比如使用异步 HTTP 请求来下载依赖项。

结论

Python 的功能既强大又赏心悦目。为了编写这些代码,我依靠了一个对我来说很有效的特定工具链。工具 pyenvvirtualenvwrappertoxpip-compile 都是独立的。但是,它们各有各的作用,没有重叠,它们一起打造了一个强大的 Python 工作流。


via: https://opensource.com/article/20/6/python-tools

作者:Moshe Zadka 选题:lujun9972 译者:wxy 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

介绍一种更时尚的 Python 绘图库。

Python 有很多可以将数据可视化的库。其中一个互动性较强的库是 Pygal,我认为这个库适合喜欢漂亮事物的人。它可以生成用户可以与之交互的漂亮的 SVG(可缩放矢量图形)文件。SVG 是交互式图形的标准格式,仅使用几行 Python 就可以带来丰富的用户体验。

使用 Pygal 进行时尚的 Python 绘图

在本文中,我们要重新创建多柱状图,用来表示 1966 年至 2020 年英国大选的结果:

 title=

在继续之前,请注意你可能需要调整 Python 环境以使此代码运行,包括:

  • 运行最新版本的 Python(LinuxMacWindows 的说明)
  • 确认你运行的是与这些库兼容的 Python 版本

数据可在线获得,并可使用 pandas 导入:

import pandas as pd
df = pd.read_csv('https://anvil.works/blog/img/plotting-in-python/uk-election-results.csv')

现在我们可以继续进行了。。数据如下所示:

        year  conservative  labour  liberal  others
0       1966           253     364       12       1
1       1970           330     287        6       7
2   Feb 1974           297     301       14      18
..       ...           ...     ...      ...     ...
12      2015           330     232        8      80
13      2017           317     262       12      59
14      2019           365     202       11      72

在 Pygal 中进行绘制会以一种易于阅读的方式显示。首先,我们以一种简化柱状图定义的方式定义样式对象。然后我们将自定义样式以及其他元数据传递给 Bar 对象:

import pygal
from pygal.style import Style

custom_style = Style(
    colors=('#0343df', '#e50000', '#ffff14', '#929591'),
    font_family='Roboto,Helvetica,Arial,sans-serif',
    background='transparent',
    label_font_size=14,
)

c = pygal.Bar(
    title="UK Election Results",
    style=custom_style,
    y_title='Seats',
    width=1200,
    x_label_rotation=270,
)

然后,我们将数据添加到 Bar 对象中:

c.add('Conservative', df['conservative'])
c.add('Labour', df['labour'])
c.add('Liberal', df['liberal'])
c.add('Others', df['others'])

c.x_labels = df['year']

最后,我们将图另存为 SVG 文件:

c.render_to_file('pygal.svg')

结果是一个交互式 SVG 图,你可以在此 gif 中看到:

 title=

精美简单,并且效果漂亮。

总结

Python 中的某些绘图工具需要非常详细地构建每个对象,而 Pygal 从一开始就为你提供这些。如果你手边有数据并且想做一个干净、漂亮、简单的交互式图表,请尝试一下 Pygal。


via: https://opensource.com/article/20/6/pygal-python

作者:Shaun Taylor-Morgan 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

安装 Python,启动 IDE,然后你就可以在 Windows 系统下进行编程了。

你是否想学习编程呢?可以从 Python 开始,它因为简洁的语法和面向对象的特性而非常受欢迎,是最常见的编程语言之一。而且 Python 是一门解释型语言,这意味着你无需知道如何把 Python 代码编译为机器语言 —— Python 会帮你做到这一点,从而使你能够在编写代码的同时立即进行测试。

但是你也不能仅仅因为 Python 学习起来简单而低估了它强大的潜能,无论是在电影工作室、视频游戏工作室,还是在金融机构、IT 机构、制造业,都有 Python 的身影,甚至很多业余爱好者、艺术家、教师和许多其他人都使用 Python。

另一方面,Python 也是一门严肃的编程语言,学习它需要付出和实践。还有,你什么都不需要马上做,就几乎可以在任何计算机平台上安装并尝试使用 Python ,因此,如果你使用的是 Windows 操作系统,那本文正适合你。

如果你使用的是开源的 Linux 操作系统,那你可以 在 Linux 上安装尝试使用 Python

如何获取 Python

你可以从 Python 官方网站 上去下载 Python。在 Python 官方网站下载页,可以将鼠标悬停在 “Downloads” 按钮上,待菜单展开后,再将鼠标悬停在 “Windows” 选项,最后点击按钮就可以下载最新版的 Python 了。

 title=

或者你也可以直接点击 “Downloads” 按钮,然后在下载页中选择特定的版本去下载。

安装 Python

下载好安装包后,直接打开就可以启动安装程序了。

安装时,选择默认的安装路径比较好,最重要的是要将 Python 添加到搜索路径中,否则 Python 应用程序不知道它该从哪里找到 Python 必须的运行时环境;默认认安装时并没有选中这一项,需要手动勾选安装窗口的 “Add Python 3.7 to Path” ,然后点击继续。

 title=

由于 Windows 需要经过你的批准才会允许安装非微软官方发行的应用程序,因此你必须要在弹出 “User Account Control”(UAC) 系统提示窗口的时候 点击 “Yes” 来继续完成安装。

 title=

这时候你就需要耐心等待,系统会自动将 Python 软件包分发到合适的位置,等待过后,也就意味着你已经成功的安装了 Python ,你就可以愉快的与 Python 玩耍了!

安装一个 IDE

虽然说你仅需要一个文本编辑器,就可以开始编写 Python 代码了,但是我依然建议你使用 IDE(集成开发环境)来进行开发,这样开发起来就会变得方便很多。IDE 会将文本编辑器和一些好用的 Python 功能集成到一起,使用起来非常友好。你可以考虑选择 IDLE 3 或者 NINJA-IDE 来作为你的 IDE。

IDLE 3

Python 自带一款 IDE,名字叫 IDLE。虽然你可以使用任何文本编辑器编写 Python 代码,但 IDE 通常会提供 Notepad++ 之类的纯文本编辑器所没有的代码高亮、语法检测等功能,甚至在 IDE 里可以直接通过鼠标点击 “Run” 按钮就能快速运行 Python 代码。

想要启动 IDLE ,可以点击 Windows 的 “开始” (或者 “Windows”)按钮,然后输入 python 来进行搜索。这时候可能会搜索到多个选项,选择 IDLE 启动就好了。

 title=

如果在 “开始” 菜单中没有搜到,你也可以在 “开始” 菜单输入 cmd (或同时按下键盘 win + R 键) 来启动 Windows 命令提示符,然后输入下面命令来启动 IDLE :

C:\Windows\py.exe

如果还是无法启动的话,可是试着重新安装 Python ,安装时记得务必要在安装向导中选中 “Add Python to PATH”。详细说明,可以参考 Python 官方文档

Ninja-IDE

如果你已经有一些编程经验,而且你觉得 IDLE 对你来说有些简陋的话,你也可以试试 Ninja-IDE。 Ninja-IDE 是一款非常出色的 Python IDE,它具有代码高亮功能,并且它会自动帮你检测诸如拼写错误、引号或括号缺失以及其他语法错误。而且它还可以显示行号(调试的时候会非常有用)、缩进标记甚至可以直接通过点击 “Run” 按钮来运行你的代码。

 title=

如果要安装 Ninja-IDE ,你可以访问 Ninja-IDE 的官网 下载 Windows 安装程序 。步骤跟安装 Python 大同小异:下载安装包、允许 Windows 安装非微软官方的应用程序,然后等待完成安装即可。

Ninja-IDE 安装完成后,双击 Windows 桌面或开始菜单下的 Ninja-IDE 就可以启动了。

告诉 Python 怎么做

关键字能让 Python 知道你想要做什么。在 IDLE 或者 Ninja-IDE ,打开 “文件” 菜单,创建一个新文件。

在 Ninja-IDE 中,不要创建一个新项目,而是单独创建一个新文件就可以了。

在你用 IDLE 或者 Ninja-IDE 新建的文件中,输入以下代码:

print("Hello world.")
  • 如果你使用的是 IDLE ,请点击 “运行” 菜单,选择 “运行模块” 选项来运行你的程序。
  • 如果你使用的是 Ninja ,请单击左侧按钮栏中的 “运行文件” 按钮。

 title=

任何时间当你想要执行代码,IDE 都会提示你先保存当前正在处理的文件,然后再继续。

print 关键字会告诉 Python 打印出你在括号和引号中输入的所有文本。

但是别高兴地太早,Python 的核心库也就只能访问 printhelp 之类的基本关键字、函数等。

如果想要使用更多的关键字和函数,你就需要使用 import 关键字去加载它们。好了,先在你的 IDLE 或者 Ninja 中新建一个文件,命名为 pen.py

警告:不要把你新建的文件命名为 turtle.py ,因为 turtle.py 是包含了你要控制的 turtle 程序的文件名称,使用 turtle.py 作为文件名会让 Python 感到困惑,因为它以为你想要引入你自己的文件。

在你新建的文件中输入一下代码,并运行:

import turtle

Turtle 是一个用起来非常有意思的模块. 把这段代码添加到你的文件内:

turtle.begin_fill()
turtle.forward(100)
turtle.left(90)
turtle.forward(100)
turtle.left(90)
turtle.forward(100)
turtle.left(90)
turtle.forward(100)
turtle.end_fill()

来看看你可以使用 turtle 模块来绘制出哪些图案。

想要清空 turtle 绘制的区域的话,你可以使用 turtle.clear() 函数。那你知道 turtle.color("blue") 是用来做什么的吗?

我们来试一下更复杂点的程序:

import turtle as t
import time

t.color("blue")
t.begin_fill()

counter = 0

while counter < 4:
    t.forward(100)
    t.left(90)
    counter = counter+1

t.end_fill()
time.sleep(2)

给你个挑战,试试修改代码,让它得到下图所示的结果:

 title=

当你完成这段代码后,你就可以继续学习更多有意思的模块了。这个 入门级骰子游戏 就是个不错的开始。

保持 Pythonic

Python 是一门非常有趣的语言,它的模块几乎能实现所有你想要实现的功能。正如你所看到的,Python 入门很容易,只要你对自己有耐心,很快就会发现自己在理解和编写 Python 时能像写汉字一样流畅。你可以多阅读关于 Python 的文章,试着自己编写一些小片段,然后看看 Python 会执行出什么结果。如果想要把 Python 真正融合到你实际工作中,你可以试试 Linux ,Linux 具有在本地可编写脚本的功能,而其他系统却没有。

祝你好运,记得保持 Pythonic。


via: https://opensource.com/article/19/8/how-install-python-windows

作者:Seth Kenlon 选题:lujun9972 译者:LiuWenlong 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

在 Bokeh 中绘图比其他一些绘图库要复杂一些,但付出额外的努力是有回报的。

在这一系列文章中,我通过在每个 Python 绘图库中制作相同的多条形绘图,来研究不同 Python 绘图库的特性。这次我重点介绍的是 Bokeh(读作 “BOE-kay”)。

Bokeh 中的绘图比其它一些绘图库要复杂一些,但付出的额外努力是有回报的。Bokeh 的设计既允许你在 Web 上创建自己的交互式绘图,又能让你详细控制交互性如何工作。我将通过给我在这个系列中一直使用的多条形图添加工具提示来展示这一点。它绘制了 1966 年到 2020 年之间英国选举结果的数据。

 title=

绘图的放大视图(©2019 年 Anvil

制作多条形图

在我们继续之前,请注意你可能需要调整你的 Python 环境来让这段代码运行,包括以下:

  • 运行最新版本的 Python (在 LinuxMacWindows 上的说明)
  • 确认你运行的 Python 版本能与这些库一起工作。

数据可在线获得,可以用 Pandas 导入。

import pandas as pd
df = pd.read_csv('https://anvil.works/blog/img/plotting-in-python/uk-election-results.csv')

现在我们可以继续进行了。

为了做出多条形图,你需要对你的数据进行一下调整。

原始数据是这样的:

>> print(long)
        year         party  seats
0       1966  Conservative    253
1       1970  Conservative    330
2   Feb 1974  Conservative    297
3   Oct 1974  Conservative    277
4       1979  Conservative    339
..       ...           ...    ...
103     2005        Others     30
104     2010        Others     29
105     2015        Others     80
106     2017        Others     59
107     2019        Others     72

[60 rows x 3 columns]

你可以把数据看成是每一个可能的 (year, party) 组合的一系列 seats 值。这正是 Bokeh 处理的方式。你需要做一个 (year, party) 元组的列表:

# 得到每种可能的 (year, party) 组合的元组
x = [(str(r[1]['year']), r[1]['party']) for r in df.iterrows()]
   
# This comes out as [('1922', 'Conservative'), ('1923', 'Conservative'), ... ('2019', 'Others')]

这些将是 x 值。y 值就是席位(seats)。

y = df['seats']

现在你的数据看起来应该像这样:

x                               y
('1966', 'Conservative')        253
('1970', 'Conservative')        330
('Feb 1974', 'Conservative')    297
('Oct 1974', 'Conservative')    277
('1979', 'Conservative')        339
 ...      ...                   ...
('2005', 'Others')              30
('2010', 'Others')              29
('2015', 'Others')              80
('2017', 'Others')              59
('2019', 'Others')              72

Bokeh 需要你将数据封装在它提供的一些对象中,这样它就能给你提供交互功能。将你的 xy 数据结构封装在一个 ColumnDataSource 对象中。

    from bokeh.models import ColumnDataSource

    source = ColumnDataSource(data={'x': x, 'y': y})

然后构造一个 Figure 对象,并传入你用 FactorRange 对象封装的 x 数据。

    from bokeh.plotting import figure
    from bokeh.models import FactorRange
   
    p = figure(x_range=FactorRange(*x), width=2000, title="Election results")

你需要让 Bokeh 创建一个颜色表,这是一个特殊的 DataSpec 字典,它根据你给它的颜色映射生成。在这种情况下,颜色表是一个简单的党派名称和一个十六进制值之间的映射。

    from bokeh.transform import factor_cmap

    cmap = {
        'Conservative': '#0343df',
        'Labour': '#e50000',
        'Liberal': '#ffff14',
        'Others': '#929591',
    }
    fill_color = factor_cmap('x', palette=list(cmap.values()), factors=list(cmap.keys()), start=1, end=2)

现在你可以创建条形图了:

    p.vbar(x='x', top='y', width=0.9, source=source, fill_color=fill_color, line_color=fill_color)

Bokeh 图表上数据的可视化形式被称为“ 字形 glyphs ”,因此你已经创建了一组条形字形。

调整图表的细节,让它看起来像你想要的样子。

    p.y_range.start = 0
    p.x_range.range_padding = 0.1
    p.yaxis.axis_label = 'Seats'
    p.xaxis.major_label_orientation = 1
    p.xgrid.grid_line_color = None

最后,告诉 Bokeh 你现在想看你的绘图:

   from bokeh.io import show

   show(p)

这将绘图写入一个 HTML 文件,并在默认的 Web 浏览器中打开它。如下结果:

 title=

Bokeh 中的多条形绘图(©2019年Anvil

它已经有了一些互动功能,比如盒子缩放。

 title=

Bokeh 内置的盒子缩放(©2019Anvil

但 Bokeh 的厉害之处在于你可以添加自己的交互性。在下一节中,我们通过在条形图中添加工具提示来探索这个问题。

给条形图添加工具提示

要在条形图上添加工具提示,你只需要创建一个 HoverTool 对象并将其添加到你的绘图中。

    h = HoverTool(tooltips=[
        ('Seats', '@y'),
        ('(Year, Party)', '(@x)')
    ])
    p.add_tools(h)

参数定义了哪些数据会显示在工具提示上。变量 @y@x 是指你传入 ColumnDataSource 的变量。你还可以使用一些其他的值。例如,光标在图上的位置由 $x$y 给出(与 @x@y 没有关系)。

下面是结果:

 title=

选举图,现在带有工具提示(© 2019 Anvil

借助 Bokeh 的 HTML 输出,将绘图嵌入到 Web 应用中时,你可以获得完整的交互体验。你可以在这里把这个例子复制为 Anvil 应用(注:Anvil 需要注册才能使用)。

现在,你可以看到付出额外努力在 Bokeh 中将所有数据封装在 ColumnDataSource 等对象的原因了。作为回报,你可以相对轻松地添加交互性。

回归简单:Altair

Bokeh 是四大最流行的绘图库之一,本系列将研究它们各自的特别之处

我也在研究几个因其有趣的方法而脱颖而出的库。接下来,我将看看 Altair,它的声明式 API 意味着它可以做出非常复杂的绘图,而不会让你头疼。


via: https://opensource.com/article/20/5/bokeh-python

作者:Shaun Taylor-Morgan 选题:lujun9972 译者:wxy 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Python 和 Go 成为年度最受欢迎的黑客工具榜首

网络安全公司 Imperva Cloud WAF 对数据进行聚类分析后,他们得到了如下结论:按工具来分类,Python 依旧是大多数黑客的首选武器,紧接着是使用量增长迅速的 Go 语言;再其次是 WinHttp 库,该库主要由 Windows 上运行的 .net 和 CPP 使用;Shell 工具(如 cURL、wget 等)也榜上有名。

来源:开源中国

硬核老王点评:所以,Python 语言是个好语言。

黑客冒充 SpaceX 频道诈骗 两天获利价值 150 万美元的比特币

黑客劫持了三个 YouTube 频道,冒充 Elon Musk 的 SpaceX 频道进行比特币诈骗。被黑客劫持的频道现在都是马斯克接受采访或参加 SpaceX 会议的直播录像,并宣传一些骗局,要求人们发送少量比特币以获得双倍的回报。
现已收到 29 笔比特币交易,总额为 4.08 BTC。

来源:雷锋网

硬核老王点评:总是有人愿意交这些智商税。

BellSoft 与 VMware 合作改进 OpenJDK

Snyk 于 2020 年进行的一项调查显示,只有 34% 的 Java 用户使用 Oracle JDK,而有 53% 的用户选择使用 OpenJDK。与上一年相比,OpenJDK 增长了 36%。有 80% 的 Oracle JDK 用户正在考虑其他支持选项。OpenJDK 的主要贡献者 BellSoft 将提供其主要产品 Liberica JDK 以及对 VMware Tanzu 的全面服务支持。主要的改进领域是增强对 ARM 处理器的支持,并针对云部署和微服务架构优化 Java。

来源:开源中国

硬核老王点评:开放胜过专有的一大胜利。

.NET 5.0 不再内置 WinRT 支持,可精简六万行代码

关于.NET 中不再内置 WinRT 支持,微软提供的原因如下:1.WinRT 互操作性从 .NET runtime 中剥离后开发和改进;2.能够让 WinRT 的互操作性和 iOS 和 Android 等其他操作系统一样。3.可以利用很多其他的 .NET 功能(AOT,C# 特性,IL 链接);4.简化了 .NET runtime 的代码库。在取消内置 WinRT 支持之后,开发者能够使用 C#/WinRT 工具链来替代内置的 WinRT 支持。

来源:cnBeta.COM

硬核老王点评:确实 .NET 太臃肿了。