计算机实验室之树莓派:课程 4 OK04
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201902/10/234202zj838rljquf9zy52.jpg">Media</a>OK04 课程在 OK03 的基础上进行构建,它教你如何使用定时器让 OK 或 ACT LED 灯按精确的时间间隔来闪烁。假设你已经有了 <a href="https://linux.cn/article-10519-1.html">课程 3:OK03</a> 的操作系统,我们将以它为基础来构建。1、一个新设备定时器是树莓派保持时间的唯一方法。大多数计算机都有一个电池供电的时钟,这样当计算机关机后仍然能保持时间。到目前为止,我们仅看了树莓派硬件的一小部分,即 GPIO 控制器。我只是简单地告诉你做什么,然后它会发生什么事情。现在,我们继续看定时器,并继续带你去了解它的工作原理。和 GPIO 控制器一样,定时器也有地址。在本案例中,定时器的基地址在 2000300016。阅读手册我们可以找到下面的表:表 1.1 GPIO 控制器寄存器地址大小 / 字节名字描述读或写200030004Control / Status用于控制和清除定时器通道比较器匹配的寄存器RW200030048Counter按 1 MHz 的频率递增的计数器R2000300C4Compare 00 号比较器寄存器RW200030104Compare 11 号比较器寄存器RW200030144Compare 22 号比较器寄存器RW200030184Compare 33 号比较器寄存器RW<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201902/10/234424z0ded7vccy4zz8y2.png">Flowchart of the system timer's operation</a>这个表只告诉我们一部分内容,在手册中描述了更多的字段。手册上解释说,定时器本质上是按每微秒将计数器递增 1 的方式来运行。每次它是这样做的,它将计数器的低 32 位(4 字节)与 4 个比较器寄存器进行比较,如果匹配&…
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201902/10/234202zj838rljquf9zy52.jpg">Media</a>OK04 课程在 OK03 的基础上进行构建,它教你如何使用定时器让 OK 或 ACT LED 灯按精确的时间间隔来闪烁。假设你已经有了 <a href="https://linux.cn/article-10519-1.html">课程 3:OK03</a> 的操作系统,我们将以它为基础来构建。1、一个新设备定时器是树莓派保持时间的唯一方法。大多数计算机都有一个电池供电的时钟,这样当计算机关机后仍然能保持时间。到目前为止,我们仅看了树莓派硬件的一小部分,即 GPIO 控制器。我只是简单地告诉你做什么,然后它会发生什么事情。现在,我们继续看定时器,并继续带你去了解它的工作原理。和 GPIO 控制器一样,定时器也有地址。在本案例中,定时器的基地址在 2000300016。阅读手册我们可以找到下面的表:表 1.1 GPIO 控制器寄存器地址大小 / 字节名字描述读或写200030004Control / Status用于控制和清除定时器通道比较器匹配的寄存器RW200030048Counter按 1 MHz 的频率递增的计数器R2000300C4Compare 00 号比较器寄存器RW200030104Compare 11 号比较器寄存器RW200030144Compare 22 号比较器寄存器RW200030184Compare 33 号比较器寄存器RW<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201902/10/234424z0ded7vccy4zz8y2.png">Flowchart of the system timer's operation</a>这个表只告诉我们一部分内容,在手册中描述了更多的字段。手册上解释说,定时器本质上是按每微秒将计数器递增 1 的方式来运行。每次它是这样做的,它将计数器的低 32 位(4 字节)与 4 个比较器寄存器进行比较,如果匹配&…
将 Python 结合到数学教育中
身兼教师、开发者、作家数职的 Peter Farrell 来讲述为什么使用 Python 来讲数学课会比传统方法更加好。Media
via https://linux.cn/article-10527-1.html
身兼教师、开发者、作家数职的 Peter Farrell 来讲述为什么使用 Python 来讲数学课会比传统方法更加好。Media
via https://linux.cn/article-10527-1.html
将 Python 结合到数学教育中
身兼教师、开发者、作家数职的 Peter Farrell 来讲述为什么使用 Python 来讲数学课会比传统方法更加好。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201902/11/151256px4rqt4maadgft2a.png">Media</a>数学课一直都是很讨厌的一件事情,尤其对于在传统教学方法上吃过苦头的人(例如我)来说。传统教学方法强调的是死记硬背和理论知识,这种形式与学生们的现实世界似乎相去甚远。<a href="https://twitter.com/hackingmath">Peter Farrell</a> 作为一位 Python 开发者和数学教师,发现学生在数学课程中遇到了困难,于是决定尝试使用 Python 来帮助介绍数学概念。Peter 的灵感来源于 Logo 语言之父 <a href="https://en.wikipedia.org/wiki/Seymour_Papert">Seymour Papert</a>,他的 Logo 语言现在还存在于 Python 的 <a href="https://en.wikipedia.org/wiki/Turtle_graphics">Turtle 模块</a>中。Logo 语言中的海龟形象让 Peter 喜欢上了 Python,并且进一步将 Python 应用到数学教学中。Peter 在他的新书《<a href="https://nostarch.com/mathadventures">Python 数学奇遇记</a>Math Adventures with Python》中分享了他的方法:“图文并茂地指导如何用代码探索数学”。因此我最近对他进行了一次采访,向他了解更多这方面的情况。<strong>Don Watkins(LCTT 译注:本文作者):</strong> 你的教学背景是什么?<strong>Peter Farrell:</strong> 我曾经当过八年的数学老师,之后又做了十年的数学私教。我还在当老师的时候,就阅读过 Papert 的 《<a href="https://en.wikipedia.org/wiki/Mindstorms_(book)">头脑风暴</a>Mindstorms》并从中受到了启发,将 Logo 语言和海龟引入到了我所有的数学课上。<strong>DW:</strong> 你为什么开始使用 Python 呢?<strong>PF:</strong> 在我当家教的时候…
身兼教师、开发者、作家数职的 Peter Farrell 来讲述为什么使用 Python 来讲数学课会比传统方法更加好。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201902/11/151256px4rqt4maadgft2a.png">Media</a>数学课一直都是很讨厌的一件事情,尤其对于在传统教学方法上吃过苦头的人(例如我)来说。传统教学方法强调的是死记硬背和理论知识,这种形式与学生们的现实世界似乎相去甚远。<a href="https://twitter.com/hackingmath">Peter Farrell</a> 作为一位 Python 开发者和数学教师,发现学生在数学课程中遇到了困难,于是决定尝试使用 Python 来帮助介绍数学概念。Peter 的灵感来源于 Logo 语言之父 <a href="https://en.wikipedia.org/wiki/Seymour_Papert">Seymour Papert</a>,他的 Logo 语言现在还存在于 Python 的 <a href="https://en.wikipedia.org/wiki/Turtle_graphics">Turtle 模块</a>中。Logo 语言中的海龟形象让 Peter 喜欢上了 Python,并且进一步将 Python 应用到数学教学中。Peter 在他的新书《<a href="https://nostarch.com/mathadventures">Python 数学奇遇记</a>Math Adventures with Python》中分享了他的方法:“图文并茂地指导如何用代码探索数学”。因此我最近对他进行了一次采访,向他了解更多这方面的情况。<strong>Don Watkins(LCTT 译注:本文作者):</strong> 你的教学背景是什么?<strong>Peter Farrell:</strong> 我曾经当过八年的数学老师,之后又做了十年的数学私教。我还在当老师的时候,就阅读过 Papert 的 《<a href="https://en.wikipedia.org/wiki/Mindstorms_(book)">头脑风暴</a>Mindstorms》并从中受到了启发,将 Logo 语言和海龟引入到了我所有的数学课上。<strong>DW:</strong> 你为什么开始使用 Python 呢?<strong>PF:</strong> 在我当家教的时候…
推荐一款社区驱动的 Linux 命令速查小程序
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201902/12/114740l7q5zq0l79b3qq9k.jpg">Media</a>学习和使用 Linux 时,你是否觉得 Linux 命令的 man 手册过于冗长,不能及时告诉你所需要的命令该怎么写?其实,遇到这种苦恼的不是你一个人,往往在你突然想不起某个命令参数时,你需要的就是一个简单的命令提示。所以,针对这种情况,有人开发出了 <code>info</code> 命令来补充丰富的命令案例,也有人觉得 man 手册实在太长了,开发出了 <code>tldr</code> (太长不看)命令来提供更简洁的最常用命令用法。就如我们之前<a href="https://linux.cn/article-10355-1.html">介绍</a>过的,<code>tldr</code> 有很多客户端,支持命令行、Web、iOS、安卓等等。经过一个春节的开发,在“编码使我快乐”的 Bestony 同学的努力下,我们基于 tldr 的数据推出了一款小程序版的 tldr,并且考虑到现有 tldr 数据以英文为主,还提供了由社区驱动的开放式翻译模式来改进内容。下面我来介绍一下。Linux 命令速查小程序请用微信识别如下小程序码,找到小程序 “Linux” ——没错,这个名字就是这么直指人心 <a href="https://dn-linuxcn.qbox.me/static/image/smiley/default/biggrin.gif">Media</a>,你也可以在本公众号的菜单中找到它。此外,以后我们也会在推送的文章中,对出现的 Linux 命令直接链接其这个小程序。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201902/12/114758bm05oquu813rmwrq.jpg">Media</a><em>扫描或长按识别</em>首页就是一个简洁的输入框,显然,输入你要查找的命令就行。目前我们已经收录了 TLDR 数据库中&…
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201902/12/114740l7q5zq0l79b3qq9k.jpg">Media</a>学习和使用 Linux 时,你是否觉得 Linux 命令的 man 手册过于冗长,不能及时告诉你所需要的命令该怎么写?其实,遇到这种苦恼的不是你一个人,往往在你突然想不起某个命令参数时,你需要的就是一个简单的命令提示。所以,针对这种情况,有人开发出了 <code>info</code> 命令来补充丰富的命令案例,也有人觉得 man 手册实在太长了,开发出了 <code>tldr</code> (太长不看)命令来提供更简洁的最常用命令用法。就如我们之前<a href="https://linux.cn/article-10355-1.html">介绍</a>过的,<code>tldr</code> 有很多客户端,支持命令行、Web、iOS、安卓等等。经过一个春节的开发,在“编码使我快乐”的 Bestony 同学的努力下,我们基于 tldr 的数据推出了一款小程序版的 tldr,并且考虑到现有 tldr 数据以英文为主,还提供了由社区驱动的开放式翻译模式来改进内容。下面我来介绍一下。Linux 命令速查小程序请用微信识别如下小程序码,找到小程序 “Linux” ——没错,这个名字就是这么直指人心 <a href="https://dn-linuxcn.qbox.me/static/image/smiley/default/biggrin.gif">Media</a>,你也可以在本公众号的菜单中找到它。此外,以后我们也会在推送的文章中,对出现的 Linux 命令直接链接其这个小程序。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201902/12/114758bm05oquu813rmwrq.jpg">Media</a><em>扫描或长按识别</em>首页就是一个简洁的输入框,显然,输入你要查找的命令就行。目前我们已经收录了 TLDR 数据库中&…
Bash 中尖括号的更多用法
在这篇文章,我们继续来深入探讨尖括号的更多其它用法。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201902/12/115848wemcebuym6mlsuwm.png">Media</a>在<a href="https://linux.cn/article-10502-1.html">上一篇文章</a>当中,我们介绍了尖括号(<>)以及它们的一些用法。在这篇文章,我们继续来深入探讨尖括号的更多其它用法。通过使用 <,可以实现“欺骗”的效果,让其它命令认为某个命令的输出是一个文件。例如,在进行备份文件的时候不确定备份是否完整,就需要去确认某个目录是否已经包含从原目录中复制过去的所有文件。你可以试一下这样操作:<pre class="prettyprint linenums">diff <(ls /original/dir/) <(ls /backup/dir/)</pre><a href="https://linux.die.net/man/1/diff">diff</a> 命令是一个逐行比较两个文件之间差异的工具。在上面的例子中,就使用了 < 让 diff 认为两个 ls 命令输出的结果都是文件,从而能够比较它们之间的差异。要注意,在 < 和 (...) 之间是没有空格的。我尝试在我的图片目录和它的备份目录执行上面的命令,输出的是以下结果:<pre class="prettyprint linenums">diff <(ls /My/Pictures/) <(ls /My/backup/Pictures/) 5d4 < Dv7bIIeUUAAD1Fc.jpg:large.jpg</pre>输出结果中的 < 表示 Dv7bIIeUUAAD1Fc.jpg:large.jpg 这个文件存在于左边的目录(/My/Pictures)但不存在于右边的目录(/My/backup/Pictures)中。也就是说,在备份过程中可能发生了问题,导致这个文件没有被成功备份。如果 diff 没有显示出任何输出结果,就表明两个目录中的文件是一致的。看到这里你可能会想到,既然可以通过 < 将一些命令行的输出内容作为一ߑ…
在这篇文章,我们继续来深入探讨尖括号的更多其它用法。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201902/12/115848wemcebuym6mlsuwm.png">Media</a>在<a href="https://linux.cn/article-10502-1.html">上一篇文章</a>当中,我们介绍了尖括号(<>)以及它们的一些用法。在这篇文章,我们继续来深入探讨尖括号的更多其它用法。通过使用 <,可以实现“欺骗”的效果,让其它命令认为某个命令的输出是一个文件。例如,在进行备份文件的时候不确定备份是否完整,就需要去确认某个目录是否已经包含从原目录中复制过去的所有文件。你可以试一下这样操作:<pre class="prettyprint linenums">diff <(ls /original/dir/) <(ls /backup/dir/)</pre><a href="https://linux.die.net/man/1/diff">diff</a> 命令是一个逐行比较两个文件之间差异的工具。在上面的例子中,就使用了 < 让 diff 认为两个 ls 命令输出的结果都是文件,从而能够比较它们之间的差异。要注意,在 < 和 (...) 之间是没有空格的。我尝试在我的图片目录和它的备份目录执行上面的命令,输出的是以下结果:<pre class="prettyprint linenums">diff <(ls /My/Pictures/) <(ls /My/backup/Pictures/) 5d4 < Dv7bIIeUUAAD1Fc.jpg:large.jpg</pre>输出结果中的 < 表示 Dv7bIIeUUAAD1Fc.jpg:large.jpg 这个文件存在于左边的目录(/My/Pictures)但不存在于右边的目录(/My/backup/Pictures)中。也就是说,在备份过程中可能发生了问题,导致这个文件没有被成功备份。如果 diff 没有显示出任何输出结果,就表明两个目录中的文件是一致的。看到这里你可能会想到,既然可以通过 < 将一些命令行的输出内容作为一ߑ…
计算机实验室之树莓派:课程 5 OK05
OK05 课程构建于课程 OK04 的基础,使用它来闪烁摩尔斯电码的 SOS 序列Media
via https://linux.cn/article-10530-1.html
OK05 课程构建于课程 OK04 的基础,使用它来闪烁摩尔斯电码的 SOS 序列Media
via https://linux.cn/article-10530-1.html
计算机实验室之树莓派:课程 5 OK05
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201902/12/122809f73x8z1xl73xhhm7.jpg">Media</a>OK05 课程构建于课程 OK04 的基础,使用它来闪烁摩尔斯电码的 SOS 序列(...---...)。这里假设你已经有了 <a href="https://linux.cn/article-10526-1.html">课程 4:OK04</a> 操作系统的代码作为基础。1、数据到目前为止,我们与操作系统有关的所有内容提供的都是指令。然而有时候,指令只是完成了一半的工作。我们的操作系统可能还需要数据。一些早期的操作系统确实只允许特定文件中的特定类型的数据,但是这通常被认为限制太多了。现代方法确实可以使程序变得复杂的多。通常,数据就是些很重要的值。你可能接受过培训,认为数据就是某种类型的,比如,文本文件包含文本,图像文件包含图片,等等。说实话,这只是你的想法而已。计算机上的全部数据都是二进制数字,重要的是我们选择用什么来解释这些数据。在这个例子中,我们会用一个闪灯序列作为数据保存下来。在 main.s 结束处复制下面的代码:<pre class="prettyprint linenums">.section .data %定义 .data 段.align 2 %对齐pattern: %定义整形变量.int 0b11111111101010100010001000101010</pre>.align num 确保下一行代码的地址是 2num 的整数倍。.int val 输出数值 val。要区分数据和代码,我们将数据都放在 .data 区域。我已经将该区域包含在操作系统的内存布局图。我选择将数据放到代码后面。将我们的指令和数据分开保存的原因是,如果最后我们在自己的操作系&…
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201902/12/122809f73x8z1xl73xhhm7.jpg">Media</a>OK05 课程构建于课程 OK04 的基础,使用它来闪烁摩尔斯电码的 SOS 序列(...---...)。这里假设你已经有了 <a href="https://linux.cn/article-10526-1.html">课程 4:OK04</a> 操作系统的代码作为基础。1、数据到目前为止,我们与操作系统有关的所有内容提供的都是指令。然而有时候,指令只是完成了一半的工作。我们的操作系统可能还需要数据。一些早期的操作系统确实只允许特定文件中的特定类型的数据,但是这通常被认为限制太多了。现代方法确实可以使程序变得复杂的多。通常,数据就是些很重要的值。你可能接受过培训,认为数据就是某种类型的,比如,文本文件包含文本,图像文件包含图片,等等。说实话,这只是你的想法而已。计算机上的全部数据都是二进制数字,重要的是我们选择用什么来解释这些数据。在这个例子中,我们会用一个闪灯序列作为数据保存下来。在 main.s 结束处复制下面的代码:<pre class="prettyprint linenums">.section .data %定义 .data 段.align 2 %对齐pattern: %定义整形变量.int 0b11111111101010100010001000101010</pre>.align num 确保下一行代码的地址是 2num 的整数倍。.int val 输出数值 val。要区分数据和代码,我们将数据都放在 .data 区域。我已经将该区域包含在操作系统的内存布局图。我选择将数据放到代码后面。将我们的指令和数据分开保存的原因是,如果最后我们在自己的操作系&…
在 Linux 命令行使用 more 查看文本文件
文本文件和 Linux 一直是携手并进的。或者说看起来如此。那你又是依靠哪些让你使用起来很舒服的工具来查看这些文本文件的呢?Media
via https://linux.cn/article-10531-1.html
文本文件和 Linux 一直是携手并进的。或者说看起来如此。那你又是依靠哪些让你使用起来很舒服的工具来查看这些文本文件的呢?Media
via https://linux.cn/article-10531-1.html
在 Linux 命令行使用 more 查看文本文件
文本文件和 Linux 一直是携手并进的。或者说看起来如此。那你又是依靠哪些让你使用起来很舒服的工具来查看这些文本文件的呢?<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201902/12/200602ci4sw6jj5r6vvo7j.jpg">Media</a>Linux 下有很多实用工具可以让你在终端界面查看文本文件。其中一个就是 <a href="https://en.wikipedia.org/wiki/More_(command)">more</a>。more 跟我之前另一篇文章里写到的工具 —— <a href="https://opensource.com/article/18/4/using-less-view-text-files-command-line">less</a> 很相似。它们之间的主要不同点在于 more 只允许你向前查看文件。尽管它能提供的功能看起来很有限,不过它依旧有很多有用的特性值得你去了解。下面让我们来快速浏览一下 more 可以做什么,以及如何使用它吧。基础使用假设你现在想在终端查看一个文本文件。只需打开一个终端,进入对应的目录,然后输入以下命令:<pre class="prettyprint linenums">$ more <filename></pre>例如,<pre class="prettyprint linenums">$ more jekyll-article.md</pre><a href="https://dn-linuxcn.qbox.me/data/attachment/album/201902/12/200605qhljjl1t0yfavy44.png">Media</a>使用空格键可以向下翻页,输入 q 可以退出。如果你想在这个文件中搜索一些文本,输入 / 字符并在其后加上你想要查找的文字。例如你要查看的字段是 “terminal”,只需输入:<pre class="prettyprint linenums">/terminal</pre><a href="https://dn-linuxcn.qbox.me/data/attachment/album/201902/12/200609pu62gjq2j928j7h7.png">Media</a>搜索的内容是区分大小写的,所以输入 /terminal 跟 /Terminal 会出现不同的结果。和其他实用工具组合使用你可以通过管道将其他命令行工具得到的文本传输到 more。你问为什么这样做?因为有时这些工具获取的文…
文本文件和 Linux 一直是携手并进的。或者说看起来如此。那你又是依靠哪些让你使用起来很舒服的工具来查看这些文本文件的呢?<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201902/12/200602ci4sw6jj5r6vvo7j.jpg">Media</a>Linux 下有很多实用工具可以让你在终端界面查看文本文件。其中一个就是 <a href="https://en.wikipedia.org/wiki/More_(command)">more</a>。more 跟我之前另一篇文章里写到的工具 —— <a href="https://opensource.com/article/18/4/using-less-view-text-files-command-line">less</a> 很相似。它们之间的主要不同点在于 more 只允许你向前查看文件。尽管它能提供的功能看起来很有限,不过它依旧有很多有用的特性值得你去了解。下面让我们来快速浏览一下 more 可以做什么,以及如何使用它吧。基础使用假设你现在想在终端查看一个文本文件。只需打开一个终端,进入对应的目录,然后输入以下命令:<pre class="prettyprint linenums">$ more <filename></pre>例如,<pre class="prettyprint linenums">$ more jekyll-article.md</pre><a href="https://dn-linuxcn.qbox.me/data/attachment/album/201902/12/200605qhljjl1t0yfavy44.png">Media</a>使用空格键可以向下翻页,输入 q 可以退出。如果你想在这个文件中搜索一些文本,输入 / 字符并在其后加上你想要查找的文字。例如你要查看的字段是 “terminal”,只需输入:<pre class="prettyprint linenums">/terminal</pre><a href="https://dn-linuxcn.qbox.me/data/attachment/album/201902/12/200609pu62gjq2j928j7h7.png">Media</a>搜索的内容是区分大小写的,所以输入 /terminal 跟 /Terminal 会出现不同的结果。和其他实用工具组合使用你可以通过管道将其他命令行工具得到的文本传输到 more。你问为什么这样做?因为有时这些工具获取的文…
PyGame Zero: 无需模板的游戏开发
在你的游戏开发过程中有了 PyGame Zero,和枯燥的模板说再见吧。Media
via https://linux.cn/article-10532-1.html
在你的游戏开发过程中有了 PyGame Zero,和枯燥的模板说再见吧。Media
via https://linux.cn/article-10532-1.html
PyGame Zero: 无需模板的游戏开发
在你的游戏开发过程中有了 PyGame Zero,和枯燥的模板说再见吧。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201902/12/225929m2fnq02x2yvyyhiq.png">Media</a>Python 是一个很好的入门级编程语言。并且,游戏是一个很好的入门项目:它们是可视化的,自驱动的,并且可以很愉快的与朋友和家人分享。虽然,绝大多数的 Python 写就的库,比如 <a href="https://www.pygame.org/news">PyGame</a> ,会让初学者因为忘记微小的细节很容易导致什么都没渲染而感到困扰。在理解所有部分的作用之前,他们会将其中的许多部分都视为“无意识的模板文件”——需要复制和粘贴到程序中才能使其工作的神奇段落。<a href="https://pygame-zero.readthedocs.io/en/stable/">PyGame Zero</a> 试图通过在 PyGame 上放置一个抽象层来弥合这一差距,因此它字面上并不需要模板。我们在说的“字面”,就是在指字面。这是一个合格的 PyGame Zero 文件:<pre class="prettyprint linenums"># This comment is here for clarity reasons</pre>我们可以将它放在一个 game.py 文件里,并运行:<pre class="prettyprint linenums">$ pgzrun game.py</pre>这将会展示一个窗口,并运行一个可以通过关闭窗口或按下 CTRL-C 中断的游戏循环。遗憾的是,这将是一场无聊的游戏。什么都没发生。为了让它更有趣一点,我们可以画一个不同的背景:<pre class="prettyprint linenums">def draw(): screen.fill((255, 0, 0))</pre>这将会把背景色从黑色换为红色。但是这仍是一个很无聊的游戏,什么都没发生。我们可以让它变的更有意思一点:<pre class="prettyprint linenums">colors = [0, 0, 0]def draw(): screen.fill(tuple(colors))def update(): colors[0] = (colors[0] + 1) % 256</pre>这将会让窗口从黑色开&#…
在你的游戏开发过程中有了 PyGame Zero,和枯燥的模板说再见吧。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201902/12/225929m2fnq02x2yvyyhiq.png">Media</a>Python 是一个很好的入门级编程语言。并且,游戏是一个很好的入门项目:它们是可视化的,自驱动的,并且可以很愉快的与朋友和家人分享。虽然,绝大多数的 Python 写就的库,比如 <a href="https://www.pygame.org/news">PyGame</a> ,会让初学者因为忘记微小的细节很容易导致什么都没渲染而感到困扰。在理解所有部分的作用之前,他们会将其中的许多部分都视为“无意识的模板文件”——需要复制和粘贴到程序中才能使其工作的神奇段落。<a href="https://pygame-zero.readthedocs.io/en/stable/">PyGame Zero</a> 试图通过在 PyGame 上放置一个抽象层来弥合这一差距,因此它字面上并不需要模板。我们在说的“字面”,就是在指字面。这是一个合格的 PyGame Zero 文件:<pre class="prettyprint linenums"># This comment is here for clarity reasons</pre>我们可以将它放在一个 game.py 文件里,并运行:<pre class="prettyprint linenums">$ pgzrun game.py</pre>这将会展示一个窗口,并运行一个可以通过关闭窗口或按下 CTRL-C 中断的游戏循环。遗憾的是,这将是一场无聊的游戏。什么都没发生。为了让它更有趣一点,我们可以画一个不同的背景:<pre class="prettyprint linenums">def draw(): screen.fill((255, 0, 0))</pre>这将会把背景色从黑色换为红色。但是这仍是一个很无聊的游戏,什么都没发生。我们可以让它变的更有意思一点:<pre class="prettyprint linenums">colors = [0, 0, 0]def draw(): screen.fill(tuple(colors))def update(): colors[0] = (colors[0] + 1) % 256</pre>这将会让窗口从黑色开&#…
DNS 和根证书
关于 DNS 和根证书你需要了解的内容。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201902/13/130526ey8rimkhhqoht6or.jpg">Media</a>由于最近发生的一些事件,我们(Privacy Today 组织)感到有必要写一篇关于此事的短文。它适用于所有读者,因此它将保持简单 —— 技术细节可能会在稍后的文章发布。什么是 DNS,为什么它与你有关?DNS 的意思是域名系统Domain Name System,你每天都会接触到它。每当你的 Web 浏览器或任何其他应用程序连接到互联网时,它就很可能会使用域名。简单来说,域名就是你键入的地址:例如 <a href="https://duckduckgo.com">duckduckgo.com</a>。你的计算机需要知道它所导向的地方,会向 DNS 解析器寻求帮助。而它将返回类似 <a href="http://176.34.155.23">176.34.155.23</a> 这样的 IP —— 这就是连接时所需要知道的公开网络地址。 此过程称为 DNS 查找。这对你的隐私、安全以及你的自由都有一定的影响:隐私由于你要求解析器获取域名的 IP,因此它会确切地知道你正在访问哪些站点,并且由于“物联网”(通常缩写为 IoT),甚至它还知道你在家中使用的是哪个设备。安全你可以相信解析器返回的 IP 是正确的。有一些检查措施可以确保如此,在正常情况下这一般不是问题。但这些可能措施会被破坏,这就是写作本文的原因。如果返回的 IP 不正确,你可能会被欺骗引向了恶意的第三方 —— 甚至你都不会注意到任何差异。在这种情况下,你的隐私会受到更大的危害,因为不仅会ඪ…
关于 DNS 和根证书你需要了解的内容。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201902/13/130526ey8rimkhhqoht6or.jpg">Media</a>由于最近发生的一些事件,我们(Privacy Today 组织)感到有必要写一篇关于此事的短文。它适用于所有读者,因此它将保持简单 —— 技术细节可能会在稍后的文章发布。什么是 DNS,为什么它与你有关?DNS 的意思是域名系统Domain Name System,你每天都会接触到它。每当你的 Web 浏览器或任何其他应用程序连接到互联网时,它就很可能会使用域名。简单来说,域名就是你键入的地址:例如 <a href="https://duckduckgo.com">duckduckgo.com</a>。你的计算机需要知道它所导向的地方,会向 DNS 解析器寻求帮助。而它将返回类似 <a href="http://176.34.155.23">176.34.155.23</a> 这样的 IP —— 这就是连接时所需要知道的公开网络地址。 此过程称为 DNS 查找。这对你的隐私、安全以及你的自由都有一定的影响:隐私由于你要求解析器获取域名的 IP,因此它会确切地知道你正在访问哪些站点,并且由于“物联网”(通常缩写为 IoT),甚至它还知道你在家中使用的是哪个设备。安全你可以相信解析器返回的 IP 是正确的。有一些检查措施可以确保如此,在正常情况下这一般不是问题。但这些可能措施会被破坏,这就是写作本文的原因。如果返回的 IP 不正确,你可能会被欺骗引向了恶意的第三方 —— 甚至你都不会注意到任何差异。在这种情况下,你的隐私会受到更大的危害,因为不仅会ඪ…
5 个用于开发工作的 Linux 发行版
这五个发行版用于开发工作将不会让你失望。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201902/13/231359c5z9gw9vszdfz5gz.jpg">Media</a>Linux 上最受欢迎的任务之一肯定是开发。理由很充分:业务依赖于 Linux。没有 Linux,技术根本无法满足当今不断发展的世界的需求。因此,开发人员不断努力改善他们的工作环境。而进行此类改善的一种方法就是拥有合适的平台。值得庆幸的是,这就是 Linux,所以你总是有很多选择。但有时候,太多的选择本身就是一个问题。哪种发行版适合你的开发需求?当然,这取决于你正在开发的工作,但某些发行版更适合作为你的工作任务的基础。我将重点介绍我认为 2019 年最适合开发人员的五个发行版。Ubuntu无需赘言。虽然 Linux Mint 的忠实用户无疑是一个非常忠诚的群体(这是有充分的理由的,他们选择的发行版很棒),但 Ubuntu Linux 在这里更被认可。为什么?因为有像 <a href="https://aws.amazon.com/">AWS</a> 这样的云服务商存在,Ubuntu 成了部署最多的服务器操作系统之一。这意味着在 Ubuntu 桌面发行版上进行开发可以更轻松地转换为 Ubuntu Server。而且因为 Ubuntu 使得开发、使用和部署容器非常容易,所以你想要使用这个平台是完全合理的。而 Ubuntu 与其包含的 Snap 软件包相结合,使得这个 Canonical(Ubuntu 发行版背后的公司)的操作系统如虎添翼。但这不仅是你可以用 Ubuntu 做什么,而是你可以轻松做到。几乎对于所有…
这五个发行版用于开发工作将不会让你失望。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201902/13/231359c5z9gw9vszdfz5gz.jpg">Media</a>Linux 上最受欢迎的任务之一肯定是开发。理由很充分:业务依赖于 Linux。没有 Linux,技术根本无法满足当今不断发展的世界的需求。因此,开发人员不断努力改善他们的工作环境。而进行此类改善的一种方法就是拥有合适的平台。值得庆幸的是,这就是 Linux,所以你总是有很多选择。但有时候,太多的选择本身就是一个问题。哪种发行版适合你的开发需求?当然,这取决于你正在开发的工作,但某些发行版更适合作为你的工作任务的基础。我将重点介绍我认为 2019 年最适合开发人员的五个发行版。Ubuntu无需赘言。虽然 Linux Mint 的忠实用户无疑是一个非常忠诚的群体(这是有充分的理由的,他们选择的发行版很棒),但 Ubuntu Linux 在这里更被认可。为什么?因为有像 <a href="https://aws.amazon.com/">AWS</a> 这样的云服务商存在,Ubuntu 成了部署最多的服务器操作系统之一。这意味着在 Ubuntu 桌面发行版上进行开发可以更轻松地转换为 Ubuntu Server。而且因为 Ubuntu 使得开发、使用和部署容器非常容易,所以你想要使用这个平台是完全合理的。而 Ubuntu 与其包含的 Snap 软件包相结合,使得这个 Canonical(Ubuntu 发行版背后的公司)的操作系统如虎添翼。但这不仅是你可以用 Ubuntu 做什么,而是你可以轻松做到。几乎对于所有…
开始使用 Sandstorm 吧,一个开源 Web 应用平台
了解 Sandstorm,这是我们在开源工具系列中的第三篇,它将在 2019 年提高你的工作效率。Media
via https://linux.cn/article-10535-1.html
了解 Sandstorm,这是我们在开源工具系列中的第三篇,它将在 2019 年提高你的工作效率。Media
via https://linux.cn/article-10535-1.html
开始使用 Sandstorm 吧,一个开源 Web 应用平台
了解 Sandstorm,这是我们在开源工具系列中的第三篇,它将在 2019 年提高你的工作效率。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201902/13/232928h12p655pgucpj411.jpg">Media</a>每年年初似乎都有疯狂的冲动想提高工作效率。新年的决心,渴望开启新的一年,当然,“抛弃旧的,拥抱新的”的态度促成了这一切。通常这时的建议严重偏向闭源和专有软件,但事实上并不用这样。这是我挑选出的 19 个新的(或者对你而言新的)开源工具中的第三个工具来帮助你在 2019 年更有效率。Sandstorm保持高效不仅仅需要待办事项以及让事情有组织。通常它需要一组工具以使工作流程顺利进行。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201902/13/232836wzmm5nzpz2jorm2l.png">Media</a><a href="https://sandstorm.io/">Sandstorm</a> 是打包的开源应用集合,它们都可从一个 Web 界面访问,也可在中央控制台进行管理。你可以自己托管或使用 <a href="https://oasis.sandstorm.io">Sandstorm Oasis</a> 服务。它按用户收费。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201902/13/232845k660zyzjupa6arvk.png">Media</a>Sandstorm 有一个市场,在这里可以轻松安装应用。应用包括效率类、财务、笔记、任务跟踪、聊天、游戏等等。你还可以按照<a href="https://docs.sandstorm.io/en/latest/developing/">开发人员文档</a>中的应用打包指南打包自己的应用并上传它们。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201902/13/232852yexaaizz5k5ev9e2.png">Media</a>安装后,用户可以创建 <a href="https://sandstorm.io/how-it-works">grain</a> - 容器化后的应用数据实例。默认情况下,grain 是私有的,它可以与其他 Sandstorm 用户共享。这意味着它们默认是安全的ᦁ…
了解 Sandstorm,这是我们在开源工具系列中的第三篇,它将在 2019 年提高你的工作效率。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201902/13/232928h12p655pgucpj411.jpg">Media</a>每年年初似乎都有疯狂的冲动想提高工作效率。新年的决心,渴望开启新的一年,当然,“抛弃旧的,拥抱新的”的态度促成了这一切。通常这时的建议严重偏向闭源和专有软件,但事实上并不用这样。这是我挑选出的 19 个新的(或者对你而言新的)开源工具中的第三个工具来帮助你在 2019 年更有效率。Sandstorm保持高效不仅仅需要待办事项以及让事情有组织。通常它需要一组工具以使工作流程顺利进行。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201902/13/232836wzmm5nzpz2jorm2l.png">Media</a><a href="https://sandstorm.io/">Sandstorm</a> 是打包的开源应用集合,它们都可从一个 Web 界面访问,也可在中央控制台进行管理。你可以自己托管或使用 <a href="https://oasis.sandstorm.io">Sandstorm Oasis</a> 服务。它按用户收费。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201902/13/232845k660zyzjupa6arvk.png">Media</a>Sandstorm 有一个市场,在这里可以轻松安装应用。应用包括效率类、财务、笔记、任务跟踪、聊天、游戏等等。你还可以按照<a href="https://docs.sandstorm.io/en/latest/developing/">开发人员文档</a>中的应用打包指南打包自己的应用并上传它们。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201902/13/232852yexaaizz5k5ev9e2.png">Media</a>安装后,用户可以创建 <a href="https://sandstorm.io/how-it-works">grain</a> - 容器化后的应用数据实例。默认情况下,grain 是私有的,它可以与其他 Sandstorm 用户共享。这意味着它们默认是安全的ᦁ…
3 个简单实用的 GNOME Shell 扩展
这三个扩展为你的桌面提供了更多的行为,可以完成你可能每天都会做的简单任务。Media
via https://linux.cn/article-10536-1.html
这三个扩展为你的桌面提供了更多的行为,可以完成你可能每天都会做的简单任务。Media
via https://linux.cn/article-10536-1.html
3 个简单实用的 GNOME Shell 扩展
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201902/13/234738ugdr1h1zg1zyrzia.png">Media</a>Fedora 工作站的默认桌面 GNOME Shell,因其极简、整洁的用户界面而闻名,并深受许多用户的喜爱。它还以可使用扩展添加到 stock 界面的能力而闻名。在本文中,我们将介绍 GNOME Shell 的 3 个简单且有用的扩展。这三个扩展为你的桌面提供了更多的行为,可以完成你可能每天都会做的简单任务。安装扩展程序安装 GNOME Shell 扩展的最快捷、最简单的方法是使用“软件”应用。有关详细信息,请查看 Magazine <a href="https://fedoramagazine.org/install-extensions-via-software-application/">以前的文章</a>:<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201902/13/234739guapco7aop2d8p5w.jpg">Media</a>可移动驱动器菜单<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201902/13/234739opzjotgnczehjen9.jpg">Media</a><em>Fedora 29 中的 Removable Drive Menu 扩展</em>首先是 <a href="https://extensions.gnome.org/extension/7/removable-drive-menu/">Removable Drive Menu</a> 扩展。如果你的计算机中有可移动驱动器,它是一个可在系统托盘中添加一个 widget 的简单工具。它可以使你轻松打开可移动驱动器中的文件,或者快速方便地弹出驱动器以安全移除设备。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201902/13/234740ziqit8j2jiyygy23.png">Media</a><em>软件应用中的 Removable Drive Menu</em>扩展之扩展<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201902/13/234741l5syuzzz5ztuu2h5.jpg">Media</a>如果你一直在安装和尝试新扩展,那么 <a href="https://extensions.gnome.org/extension/1036/extensions/">Extensions</a> 扩展非常有用。它提供了所有已安装扩展的列表,允许你启用或禁用它们。此外,如果该扩展有设置,那么可以快速打开每个扩展的设置对话框。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201902/13/234741nbodtbggvxtszibm.png">Media</a><em>软件中的 Extensions 扩展</em>无用的时钟…
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201902/13/234738ugdr1h1zg1zyrzia.png">Media</a>Fedora 工作站的默认桌面 GNOME Shell,因其极简、整洁的用户界面而闻名,并深受许多用户的喜爱。它还以可使用扩展添加到 stock 界面的能力而闻名。在本文中,我们将介绍 GNOME Shell 的 3 个简单且有用的扩展。这三个扩展为你的桌面提供了更多的行为,可以完成你可能每天都会做的简单任务。安装扩展程序安装 GNOME Shell 扩展的最快捷、最简单的方法是使用“软件”应用。有关详细信息,请查看 Magazine <a href="https://fedoramagazine.org/install-extensions-via-software-application/">以前的文章</a>:<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201902/13/234739guapco7aop2d8p5w.jpg">Media</a>可移动驱动器菜单<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201902/13/234739opzjotgnczehjen9.jpg">Media</a><em>Fedora 29 中的 Removable Drive Menu 扩展</em>首先是 <a href="https://extensions.gnome.org/extension/7/removable-drive-menu/">Removable Drive Menu</a> 扩展。如果你的计算机中有可移动驱动器,它是一个可在系统托盘中添加一个 widget 的简单工具。它可以使你轻松打开可移动驱动器中的文件,或者快速方便地弹出驱动器以安全移除设备。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201902/13/234740ziqit8j2jiyygy23.png">Media</a><em>软件应用中的 Removable Drive Menu</em>扩展之扩展<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201902/13/234741l5syuzzz5ztuu2h5.jpg">Media</a>如果你一直在安装和尝试新扩展,那么 <a href="https://extensions.gnome.org/extension/1036/extensions/">Extensions</a> 扩展非常有用。它提供了所有已安装扩展的列表,允许你启用或禁用它们。此外,如果该扩展有设置,那么可以快速打开每个扩展的设置对话框。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201902/13/234741nbodtbggvxtszibm.png">Media</a><em>软件中的 Extensions 扩展</em>无用的时钟…