Go 编程语言的简单介绍
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201902/09/000738div64l4tidkdv6vj.png">Media</a>(以下内容是我的硕士论文的摘录,几乎是整个 2.1 章节,向具有 CS 背景的人快速介绍 Go)Go 是一门用于并发编程的命令式编程语言,它主要由创造者 Google 进行开发,最初主要由 Robert Griesemer、Rob Pike 和 Ken Thompson 开发。这门语言的设计起始于 2007 年,并在 2009 年推出最初版本;而第一个稳定版本是 2012 年发布的 1.0 版本。<a href="#fn1">1</a>Go 有 C 风格的语法(没有预处理器)、垃圾回收机制,而且类似它在贝尔实验室里被开发出来的前辈们:Newsqueak(Rob Pike)、Alef(Phil Winterbottom)和 Inferno(Pike、Ritchie 等人),使用所谓的 Go 协程goroutines和信道channels(一种基于 Hoare 的“通信顺序进程”理论的协程)提供内建的并发支持。<a href="#fn2">2</a>Go 程序以包的形式组织。包本质是一个包含 Go 文件的文件夹。包内的所有文件共享相同的命名空间,而包内的符号有两种可见性:以大写字母开头的符号对于其他包是可见,而其他符号则是该包私有的:<pre class="prettyprint linenums">func PublicFunction() { fmt.Println("Hello world")}func privateFunction() { fmt.Println("Hello package")}</pre>类型Go 有一个相当简单的类型系统:没有子类型(但有类型转换),没有泛型,没有多态函数,只有一些基本的类型:基本类型:int、int64、int8、uint、float32、float64 等structinterface:一组方法的集合map[K, V]:一个从键类型到值类型的映射[number]Type:一些 Type 类型的元素组成的数组[]Type:某种类型的切片(具有长度和功能的数组的指针)chan Type:一个线&#…
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201902/09/000738div64l4tidkdv6vj.png">Media</a>(以下内容是我的硕士论文的摘录,几乎是整个 2.1 章节,向具有 CS 背景的人快速介绍 Go)Go 是一门用于并发编程的命令式编程语言,它主要由创造者 Google 进行开发,最初主要由 Robert Griesemer、Rob Pike 和 Ken Thompson 开发。这门语言的设计起始于 2007 年,并在 2009 年推出最初版本;而第一个稳定版本是 2012 年发布的 1.0 版本。<a href="#fn1">1</a>Go 有 C 风格的语法(没有预处理器)、垃圾回收机制,而且类似它在贝尔实验室里被开发出来的前辈们:Newsqueak(Rob Pike)、Alef(Phil Winterbottom)和 Inferno(Pike、Ritchie 等人),使用所谓的 Go 协程goroutines和信道channels(一种基于 Hoare 的“通信顺序进程”理论的协程)提供内建的并发支持。<a href="#fn2">2</a>Go 程序以包的形式组织。包本质是一个包含 Go 文件的文件夹。包内的所有文件共享相同的命名空间,而包内的符号有两种可见性:以大写字母开头的符号对于其他包是可见,而其他符号则是该包私有的:<pre class="prettyprint linenums">func PublicFunction() { fmt.Println("Hello world")}func privateFunction() { fmt.Println("Hello package")}</pre>类型Go 有一个相当简单的类型系统:没有子类型(但有类型转换),没有泛型,没有多态函数,只有一些基本的类型:基本类型:int、int64、int8、uint、float32、float64 等structinterface:一组方法的集合map[K, V]:一个从键类型到值类型的映射[number]Type:一些 Type 类型的元素组成的数组[]Type:某种类型的切片(具有长度和功能的数组的指针)chan Type:一个线&#…
Python Web 应用程序 Tornado 框架简介
在比较 Python 框架的系列文章的第三部分中,我们来了解 Tornado,它是为处理异步进程而构建的。Media
via https://linux.cn/article-10522-1.html
在比较 Python 框架的系列文章的第三部分中,我们来了解 Tornado,它是为处理异步进程而构建的。Media
via https://linux.cn/article-10522-1.html
Python Web 应用程序 Tornado 框架简介
在比较 Python 框架的系列文章的第三部分中,我们来了解 Tornado,它是为处理异步进程而构建的。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201902/09/180056b6yyzfwvvaanavrw.jpg">Media</a>在这个由四部分组成的系列文章的前两篇中,我们介绍了 <a href="https://opensource.com/article/18/5/pyramid-framework">Pyramid</a> 和 <a href="https://opensource.com/article/18/4/flask">Flask</a> Web 框架。我们已经构建了两次相同的应用程序,看到了一个完整的 DIY 框架和包含了更多功能的框架之间的异同。现在让我们来看看另一个稍微不同的选择:<a href="https://tornado.readthedocs.io/en/stable/">Tornado 框架</a>。Tornado 在很大程度上与 Flask 一样简单,但有一个主要区别:Tornado 是专门为处理异步进程而构建的。在我们本系列所构建的应用程序中,这种特殊的酱料(LCTT 译注:这里意思是 Tornado 的异步功能)在我们构建的 app 中并不是非常有用,但我们将看到在哪里可以使用它,以及它在更一般的情况下是如何工作的。让我们继续前两篇文章中模式,首先从处理设置和配置开始。Tornado 启动和配置如果你一直关注这个系列,那么第一步应该对你来说习以为常。<pre class="prettyprint linenums">$ mkdir tornado_todo$ cd tornado_todo$ pipenv install --python 3.6$ pipenv shell(tornado-someHash) $ pipenv install tornado</pre>创建一个 setup.py 文件来安装我们的应用程序相关的东西:<pre class="prettyprint linenums">(tornado-someHash) $ touch setup.py# setup.pyfrom setuptools import setup, find_packagesrequires = [ 'tornado', 'tornado-sqlalchemy', 'psycopg2',]setup( name='tornado_todo', version='0.0', description='A To-Do List built with Tornado', author='<Your name>', author_email='<Your email>', keywords='web tornado', packages=find_packages(), install_requires=requires, entry_points={ 'console_scripts': [ 'serve_app = todo:main', ], },)</pre>因为 Tornado 不需要任何外部配置,所以我们可以直接编写 Python É…
在比较 Python 框架的系列文章的第三部分中,我们来了解 Tornado,它是为处理异步进程而构建的。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201902/09/180056b6yyzfwvvaanavrw.jpg">Media</a>在这个由四部分组成的系列文章的前两篇中,我们介绍了 <a href="https://opensource.com/article/18/5/pyramid-framework">Pyramid</a> 和 <a href="https://opensource.com/article/18/4/flask">Flask</a> Web 框架。我们已经构建了两次相同的应用程序,看到了一个完整的 DIY 框架和包含了更多功能的框架之间的异同。现在让我们来看看另一个稍微不同的选择:<a href="https://tornado.readthedocs.io/en/stable/">Tornado 框架</a>。Tornado 在很大程度上与 Flask 一样简单,但有一个主要区别:Tornado 是专门为处理异步进程而构建的。在我们本系列所构建的应用程序中,这种特殊的酱料(LCTT 译注:这里意思是 Tornado 的异步功能)在我们构建的 app 中并不是非常有用,但我们将看到在哪里可以使用它,以及它在更一般的情况下是如何工作的。让我们继续前两篇文章中模式,首先从处理设置和配置开始。Tornado 启动和配置如果你一直关注这个系列,那么第一步应该对你来说习以为常。<pre class="prettyprint linenums">$ mkdir tornado_todo$ cd tornado_todo$ pipenv install --python 3.6$ pipenv shell(tornado-someHash) $ pipenv install tornado</pre>创建一个 setup.py 文件来安装我们的应用程序相关的东西:<pre class="prettyprint linenums">(tornado-someHash) $ touch setup.py# setup.pyfrom setuptools import setup, find_packagesrequires = [ 'tornado', 'tornado-sqlalchemy', 'psycopg2',]setup( name='tornado_todo', version='0.0', description='A To-Do List built with Tornado', author='<Your name>', author_email='<Your email>', keywords='web tornado', packages=find_packages(), install_requires=requires, entry_points={ 'console_scripts': [ 'serve_app = todo:main', ], },)</pre>因为 Tornado 不需要任何外部配置,所以我们可以直接编写 Python É…
Linux 上最好的五款音乐播放器
Jack Wallen 盘点他最爱的五款 Linux 音乐播放器。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201902/09/232031rtjn0tiwwjxjjjgg.jpg">Media</a>不管你做什么,你都有时会来一点背景音乐。不管你是开发、运维或是一个典型的电脑用户,享受美妙的音乐都可能是你在电脑上最想做的事情之一。同时随着即将到来的假期,你可能收到一些能让你买几首新歌的礼物卡。如果你所选的音乐是数字形式(我的恰好是唱片形式)而且你的平台是 Linux 的话,你会想要一个好的图形用户界面播放器来享受音乐。幸运的是,Linux 不缺好的数字音乐播放器。事实上,Linux 上有不少播放器,大部分是开源并且可以免费获得的。让我们看看其中的几款,看哪个能满足你的需要。Clementine我想从我用来许多年的默认选项的播放器开始。<a href="https://www.clementine-player.org/">Clementine</a> 可能是最好的平衡了易用性与灵活性的播放器。Clementine 是新停摆的 <a href="https://en.wikipedia.org/wiki/Amarok_(software)">Amarok</a> 音乐播放器的复刻,但它不仅限于 Linux; Clementine 在 Mac OS 和 Windows 平台上也可以获得。它的一系列特性十分惊艳,包括:內建的均衡器可定制的界面(将现在的专辑封面显示成背景,见图一)播放本地音乐或者从 Spotify、Last.fm 等播放音乐便于库导航的侧边栏內建的音频转码(转成 MP3、OGG、Flac 等)通过 <a href="https://play.google.com/store/apps/details?id=de.qspool.clementineremote">安卓应用</a> 远程控制便利的搜索功能选项卡式播放列表简单创建常规和智能化的播放&#…
Jack Wallen 盘点他最爱的五款 Linux 音乐播放器。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201902/09/232031rtjn0tiwwjxjjjgg.jpg">Media</a>不管你做什么,你都有时会来一点背景音乐。不管你是开发、运维或是一个典型的电脑用户,享受美妙的音乐都可能是你在电脑上最想做的事情之一。同时随着即将到来的假期,你可能收到一些能让你买几首新歌的礼物卡。如果你所选的音乐是数字形式(我的恰好是唱片形式)而且你的平台是 Linux 的话,你会想要一个好的图形用户界面播放器来享受音乐。幸运的是,Linux 不缺好的数字音乐播放器。事实上,Linux 上有不少播放器,大部分是开源并且可以免费获得的。让我们看看其中的几款,看哪个能满足你的需要。Clementine我想从我用来许多年的默认选项的播放器开始。<a href="https://www.clementine-player.org/">Clementine</a> 可能是最好的平衡了易用性与灵活性的播放器。Clementine 是新停摆的 <a href="https://en.wikipedia.org/wiki/Amarok_(software)">Amarok</a> 音乐播放器的复刻,但它不仅限于 Linux; Clementine 在 Mac OS 和 Windows 平台上也可以获得。它的一系列特性十分惊艳,包括:內建的均衡器可定制的界面(将现在的专辑封面显示成背景,见图一)播放本地音乐或者从 Spotify、Last.fm 等播放音乐便于库导航的侧边栏內建的音频转码(转成 MP3、OGG、Flac 等)通过 <a href="https://play.google.com/store/apps/details?id=de.qspool.clementineremote">安卓应用</a> 远程控制便利的搜索功能选项卡式播放列表简单创建常规和智能化的播放&#…
极客漫画:增强现实(AR) 2.0
增强现实技术(Augmented Reality),简称 AR,是一种实时地计算摄影机影像的位置及角度并加上相应图像、视频、3D 模型的技术,这种技术的目标是在屏幕上把虚拟世界套在现实世界并进行互动。Media
via https://linux.cn/article-10524-1.html
增强现实技术(Augmented Reality),简称 AR,是一种实时地计算摄影机影像的位置及角度并加上相应图像、视频、3D 模型的技术,这种技术的目标是在屏幕上把虚拟世界套在现实世界并进行互动。Media
via https://linux.cn/article-10524-1.html
极客漫画:增强现实(AR) 2.0
Media最近这几年我们一直听到虚拟现实(VR)和增强现实(AR),可很多人并不了解它们是什么。增强现实技术Augmented Reality,简称 AR,是一种实时地计算摄影机影像的位置及角度并加上相应图像、视频、3D 模型的技术,这种技术的目标是在屏幕上把虚拟世界套在现实世界并进行互动。这种技术可以让你将现实世界和虚拟世界结合起来,从而创造非常有趣的互动效果。可是,有一天 AR 里面的小鬼们真的出来了!via: http://turnoff.us/geek/augmented-reality-2/作者:Daniel Stori 译者 & 点评:wxy 校对 & 合成:wxy本文由 LCTT 原创编译,Linux中国 荣誉推出Media
via https://linux.cn/article-10524-1.html?utm_source=rss&utm_medium=rss
Media最近这几年我们一直听到虚拟现实(VR)和增强现实(AR),可很多人并不了解它们是什么。增强现实技术Augmented Reality,简称 AR,是一种实时地计算摄影机影像的位置及角度并加上相应图像、视频、3D 模型的技术,这种技术的目标是在屏幕上把虚拟世界套在现实世界并进行互动。这种技术可以让你将现实世界和虚拟世界结合起来,从而创造非常有趣的互动效果。可是,有一天 AR 里面的小鬼们真的出来了!via: http://turnoff.us/geek/augmented-reality-2/作者:Daniel Stori 译者 & 点评:wxy 校对 & 合成:wxy本文由 LCTT 原创编译,Linux中国 荣誉推出Media
via https://linux.cn/article-10524-1.html?utm_source=rss&utm_medium=rss
开始使用 eDEX-UI 吧,一款受《电子世界争霸战》影响的终端程序
使用 eDEX-UI 让你的工作更有趣,这是我们开源工具系列中的第 15 个工具,它将使你在 2019 年更高效。Media
via https://linux.cn/article-10525-1.html
使用 eDEX-UI 让你的工作更有趣,这是我们开源工具系列中的第 15 个工具,它将使你在 2019 年更高效。Media
via https://linux.cn/article-10525-1.html
开始使用 eDEX-UI 吧,一款受《电子世界争霸战》影响的终端程序
使用 eDEX-UI 让你的工作更有趣,这是我们开源工具系列中的第 15 个工具,它将使你在 2019 年更高效。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201902/10/222740fe2q0dh50999c024.jpg">Media</a>每年年初似乎都有疯狂的冲动想提高工作效率。新年的决心,渴望开启新的一年,当然,“抛弃旧的,拥抱新的”的态度促成了这一切。通常这时的建议严重偏向闭源和专有软件,但事实上并不用这样。这是我挑选出的 19 个新的(或者对你而言新的)开源工具中的第 15 个工具来帮助你在 2019 年更有效率。eDEX-UI当<a href="https://en.wikipedia.org/wiki/Tron">《电子世界争霸战》</a>上映时我才 11 岁。我不能否认,尽管这部电影充满幻想,但它对我后来的职业选择产生了影响。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201902/10/222822wb2kc18kkkckoeod.png">Media</a><a href="https://github.com/GitSquared/edex-ui">eDEX-UI</a> 是一款专为平板电脑和台式机设计的跨平台终端程序,它的用户界面受到《电子世界争霸战》的启发。它在选项卡式界面中有五个终端,因此可以轻松地在任务之间切换,以及显示有用的系统信息。在启动时,eDEX-UI 会启动一系列的东西,其中包含它所基于的 ElectronJS 系统的信息。启动后,eDEX-UI 会显示系统信息、文件浏览器、键盘(用于平板电脑)和主终端选项卡。其他四个选项卡(被标记为 EMPTY)没有加载任何内容,并且当你单击它时将启动一个 shell。eDEX-UI 中的默认 shell 是 Bash(如果在 Windows 上,则可…
使用 eDEX-UI 让你的工作更有趣,这是我们开源工具系列中的第 15 个工具,它将使你在 2019 年更高效。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201902/10/222740fe2q0dh50999c024.jpg">Media</a>每年年初似乎都有疯狂的冲动想提高工作效率。新年的决心,渴望开启新的一年,当然,“抛弃旧的,拥抱新的”的态度促成了这一切。通常这时的建议严重偏向闭源和专有软件,但事实上并不用这样。这是我挑选出的 19 个新的(或者对你而言新的)开源工具中的第 15 个工具来帮助你在 2019 年更有效率。eDEX-UI当<a href="https://en.wikipedia.org/wiki/Tron">《电子世界争霸战》</a>上映时我才 11 岁。我不能否认,尽管这部电影充满幻想,但它对我后来的职业选择产生了影响。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201902/10/222822wb2kc18kkkckoeod.png">Media</a><a href="https://github.com/GitSquared/edex-ui">eDEX-UI</a> 是一款专为平板电脑和台式机设计的跨平台终端程序,它的用户界面受到《电子世界争霸战》的启发。它在选项卡式界面中有五个终端,因此可以轻松地在任务之间切换,以及显示有用的系统信息。在启动时,eDEX-UI 会启动一系列的东西,其中包含它所基于的 ElectronJS 系统的信息。启动后,eDEX-UI 会显示系统信息、文件浏览器、键盘(用于平板电脑)和主终端选项卡。其他四个选项卡(被标记为 EMPTY)没有加载任何内容,并且当你单击它时将启动一个 shell。eDEX-UI 中的默认 shell 是 Bash(如果在 Windows 上,则可…
计算机实验室之树莓派:课程 4 OK04
OK04 课程在 OK03 的基础上进行构建,它教你如何使用定时器让 OK 或 ACT LED 灯按精确的时间间隔来闪烁。Media
via https://linux.cn/article-10526-1.html
OK04 课程在 OK03 的基础上进行构建,它教你如何使用定时器让 OK 或 ACT LED 灯按精确的时间间隔来闪烁。Media
via https://linux.cn/article-10526-1.html
计算机实验室之树莓派:课程 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