2017年12月

我刚写了一篇关于 Jupyter Notebooks 的文章,它是一个有趣的交互式写 Python 代码的方式。这让我想起我最近学习了 Glitch,这个我同样喜爱!我构建了一个小的程序来用于关闭转发 twitter。因此有了这篇文章!

Glitch 是一个简单的构建 Javascript web 程序的方式(javascript 后端、javascript 前端)。

关于 glitch 有趣的地方有:

  1. 你在他们的网站输入 Javascript 代码
  2. 只要输入了任何代码,它会自动用你的新代码重载你的网站。你甚至不必保存!它会自动保存。

所以这就像 Heroku,但更神奇!像这样的编码(你输入代码,代码立即在公共网络上运行)对我而言感觉很有趣

这有点像用 ssh 登录服务器,编辑服务器上的 PHP/HTML 代码,它立即就可用了,而这也是我所喜爱的方式。虽然现在我们有了“更好的部署实践”,而不是“编辑代码,让它立即出现在互联网上”,但我们并不是在谈论严肃的开发实践,而是在讨论编写微型程序的乐趣。

Glitch 有很棒的示例应用程序

Glitch 似乎是学习编程的好方式!

比如,这有一个太空侵略者游戏(由 Mary Rose Cook 编写):https://space-invaders.glitch.me/。我喜欢的是我只需要点击几下。

  1. 点击 “remix this”
  2. 开始编辑代码使箱子变成橘色而不是黑色
  3. 制作我自己太空侵略者游戏!我的在这:http://julias-space-invaders.glitch.me/。(我只做了很小的更改使其变成橘色,没什么神奇的)

他们有大量的示例程序,你可以从中启动 - 例如机器人游戏等等。

实际有用的非常好的程序:tweetstorms

我学习 Glitch 的方式是从这个程序开始的:https://tweetstorms.glitch.me/,它会向你展示给定用户的推特云。

比如,你可以在 https://tweetstorms.glitch.me/sarahmei 看到 @sarahmei 的推特云(她发布了很多好的 tweetstorm!)。

我的 Glitch 程序: 关闭转推

当我了解到 Glitch 的时候,我想关闭在 Twitter 上关注的所有人的转推(我知道可以在 Tweetdeck 中做这件事),而且手动做这件事是一件很痛苦的事 - 我一次只能设置一个人。所以我写了一个 Glitch 程序来为我做!

我喜欢我不必设置一个本地开发环境,我可以直接开始输入然后开始!

Glitch 只支持 Javascript,我不是非常了解 Javascript(我之前从没写过一个 Node 程序),所以代码不是很好。但是编写它很愉快 - 能够输入并立即看到我的代码运行是令人愉快的。这是我的项目:https://turn-off-retweets.glitch.me/

就是这些!

使用 Glitch 感觉真的很有趣和民主。通常情况下,如果我想 fork 某人的 Web 项目,并做出更改,我不会这样做 - 我必须 fork,找一个托管,设置本地开发环境或者 Heroku 或其他,安装依赖项等。我认为像安装 node.js 依赖关系这样的任务在过去很有趣,就像“我正在学习新东西很酷”,但现在我觉得它们很乏味。

所以我喜欢只需点击 “remix this!” 并立即在互联网上能有我的版本。


via: https://jvns.ca/blog/2017/11/13/glitch--write-small-web-projects-easily/

作者:Julia Evans 译者:geekpi 校对:wxy

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

Ubuntu Unity Remix 将支持九个月。

Canonical 在七年之后突然决定抛弃它的 Unity 用户界面影响了许多 Ubuntu 用户,现在看起来有人试图把它从死亡中带回来,成为官方 分支 spin

长期 Ubuntu 成员 Dale Beaudoin 上周在官方的 Ubuntu 论坛上进行了一项调查来了解社区意向,看看他们是否对随同明年的 Ubuntu 18.04 LTS(Bionic Beaver)一起发布的 Ubuntu Unity Remix 感兴趣,它将支持 9 个月或 5 年。

有 30 人进行了投票,其中 67% 的人选择了所谓的 Ubuntu Unity Remix 的 LTS(长期支持)版本,33% 的人投票支持 9 个月的支持版本。看起来这个即将到来的 Ubuntu Unity Spin 看起来会成为官方特色版本,而这意味着开发它的承诺。

Dale Beaudoin 表示:“最近的一项民意调查显示,2/3 的人支持 Ubuntu Unity 成为 LTS 发行版,我们应该按照它成为 LTS 和官方特色版的更新周期去努力。我们将尝试使用当前默认的 Ubuntu Bionic Beaver 18.04 的每日构建版本作为平台,每周或每 10 天发布一次更新的 ISO。”

Ubuntu Unity 是否会卷土重来?

正常情况下,最后一个带有 Unity 的 Ubuntu 版本应该是 Ubuntu 17.04(Zesty Zapus),它将在 2018 年 1 月终止支持。当前流行操作系统的稳定版本 Ubuntu 17.10(Artful Artful),是今年早些时候 Canonical CEO 宣布之后第一个默认使用 GNOME 桌面环境的版本,Unity 将不再开发。

然而,Canonical 仍然在官方软件仓库提供 Unity 桌面环境,所以如果有人想要安装它,只需点击一下即可。但坏消息是,它们支持到 2018 年 4 月发布 Ubuntu 18.04 LTS(Bionic Beaver)之前,所以 Ubuntu Unity Remix 的开发者们将不得不在独立的仓库中继续支持。

另一方面,我们不相信 Canonical 会改变主意,接受这个 Ubuntu Unity Spin 成为官方的特色版,这意味着他们不会继续开发 Unity,现在只有一小部分人可以做这个开发。最有可能的是,如果对 Ubuntu Unity Remix 的兴趣没有很快消失,那么,这可能会是一个由怀旧社区支持的非官方版本。

问题是,你会对 Ubuntu Unity Spin 感兴趣么,官方或者非官方?


via: http://news.softpedia.com/news/someone-tries-to-bring-back-ubuntu-s-unity-from-the-dead-as-an-unofficial-spin-518778.shtml

作者:Marius Nestor 译者:geekpi 校对:wxy

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

 title=

在这篇文章中和 Carla Schroder 一起探索 Linux 中的一些鲜为人知的强大工具。

本文是一篇关于一些有趣但鲜为人知的工具 termsaverpvcalendar 的文章。termsaver 是一个终端 ASCII 屏保,pv 能够测量数据吞吐量并模拟输入。Debian 的 calendar 拥有许多不同的日历,并且你还可以制定你自己的日历。

终端屏保

难道只有图形桌面能够拥有有趣的屏保吗?现在,你可以通过安装 termsaver 来享受 ASCII 屏保,比如 matrix(LCTT 译注:电影《黑客帝国》中出现的黑客屏保)、时钟、星球大战以及两个 不太安全 not-safe-for-work (NSFW)的屏保。 NSFW 屏保还有很多。

termsaver 可以从 Debian/Ubuntu 的包管理器中直接下载安装,如果你使用别的不包含该软件包的发行版比如 CentOS,那么你可以从 termsaver.brunobraga.net 下载,然后按照安装指导进行安装。

运行 termsaver -h 来查看一系列屏保:

 randtxt        displays word in random places on screen
 starwars       runs the asciimation Star Wars movie
 urlfetcher     displays url contents with typing animation
 quotes4all     displays recent quotes from quotes4all.net
 rssfeed        displays rss feed information
 matrix         displays a matrix movie alike screensaver
 clock          displays a digital clock on screen
 rfc            randomly displays RFC contents
 jokes4all      displays recent jokes from jokes4all.net (NSFW)
 asciiartfarts  displays ascii images from asciiartfarts.com (NSFW)
 programmer     displays source code in typing animation
 sysmon         displays a graphical system monitor

 title=

图片 1: 星球大战屏保。

你可以通过运行命令 termsaver [屏保名] 来使用屏保,比如 termsaver matrix ,然后按 Ctrl+c 停止。你也可以通过运行 termsaver [屏保名] -h 命令来获取关于某一个特定屏保的信息。图片 1 来自 startwars 屏保,它运行的是古老但受人喜爱的 Asciimation Wars

那些不太安全(NSFW)的屏保通过在线获取资源的方式运行,我并不喜欢它们,但好消息是,由于 termsaver 是一些 Python 脚本文件,因此,你可以很容易的利用它们连接到任何你想要的 RSS 资源。

pv

pv 命令是一个非常有趣的小工具但却很实用。它的用途是监测数据复制的过程,比如,当你运行 rsync 命令或创建一个 tar 归档的时候。当你不带任何选项运行 pv 命令时,默认参数为:

  • -p :进程
  • -t :时间,到当前总运行时间
  • -e :预计完成时间,这往往是不准确的,因为 pv 通常不知道需要移动的数据的大小
  • -r :速率计数器,或吞吐量
  • -b :字节计数器

一次 rsync 传输看起来像这样:

$ rsync -av /home/carla/ /media/carla/backup/ | pv 
sending incremental file list
[...]
103GiB 0:02:48 [ 615MiB/s] [  <=>

创建一个 tar 归档,就像下面这个例子:

$ tar -czf - /file/path| (pv  > backup.tgz)
 885MiB 0:00:30 [28.6MiB/s] [  <=>

pv 能够监测进程,因此也可以监测 Web 浏览器的最大活动,令人惊讶的是,它产生了如此多的活动:

$ pv -d  3095                                                                                                             
  58:/home/carla/.pki/nssdb/key4.db:    0 B 0:00:33 
  [   0 B/s] [<=>                                                                           ] 
  78:/home/carla/.config/chromium/Default/Visited Links:  
  256KiB 0:00:33 [   0 B/s] [<=>                                                      ] 
  ] 
  85:/home/carla/.con...romium/Default/data_reduction_proxy_leveldb/LOG:  
  298 B 0:00:33 [   0 B/s] [<=>                                       ] 

在网上,我偶然发现一个使用 pv 最有趣的方式:使用 pv 来回显输入的内容:

$ echo "typing random stuff to pipe through pv" | pv -qL 8
typing random stuff to pipe through pv

普通的 echo 命令会瞬间打印一整行内容。通过管道传给 pv 之后能够让内容像是重新输入一样的显示出来。我不知道这是否有实际的价值,但是我非常喜欢它。-L 选项控制回显的速度,即多少字节每秒。

pv 是一个非常古老且非常有趣的命令,这么多年以来,它拥有了许多的选项,包括有趣的格式化选项,多种输出选项,以及传输速度修改器。你可以通过 man pv 来查看所有的选项。

/usr/bin/calendar

通过浏览 /usr/bin 目录以及其他命令目录和阅读 man 手册,你能够学到很多东西。在 Debian/Ubuntu 上的 /usr/bin/calendar 是 BSD 日历的一个变种,但它漏掉了月亮历和太阳历。它保留了多个日历包括 calendar.computer, calendar.discordian, calendar.music 以及 calendar.lotr。在我的系统上,man 手册列出了 /usr/bin/calendar 里存在的不同日历。下面这个例子展示了指环王日历接下来的 60 天:

$ calendar -f /usr/share/calendar/calendar.lotr  -A 60
Apr 17  An unexpected party
Apr 23  Crowning of King Ellesar
May 19  Arwen leaves Lorian to wed King Ellesar
Jun 11  Sauron attacks Osgilliath

这些日历是纯文本文件,因此,你可以轻松的创建你自己的日历。最简单的方式就是复制已经存在的日历文件的格式。你可以通过 man calendar 命令来查看创建个人日历文件的更详细的指导。

又一次很快走到了尽头。你可以花费一些时间来浏览你的文件系统,挖掘更多有趣的命令。

你可以通过来自 Linux 基金会和 edx 的免费课程 "Introduction to Linux" 来学习更过关于 Linux 的知识

(题图:CC Zero Pixabay)


via: https://www.linux.com/learn/intro-to-linux/2017/4/more-unknown-linux-commands

作者:CARLA SCHRODER 译者:ucasFL 校对:wxy

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

上个月,我们用依赖关系图让你更容易跟踪你代码依赖的的项目,它目前支持 Javascript 和 Ruby。如今,超过 75% 的 GitHub 项目有依赖,我们正在帮助你做更多的事情,而不只是关注那些重要的项目。在启用依赖关系图后,当我们检测到你的依赖中有漏洞时会通知你,并给出来自 Github 社区中的已知修复。

Security Alerts & Suggested Fix

如何开始使用安全警报

无论你的项目时私有还是公有的,安全警报都会为团队中的正确人员提供重要的漏洞信息。

启用你的依赖图:

公开仓库将自动启用依赖关系图和安全警报。对于私人仓库,你需要在仓库设置中添加安全警报,或者在 “Insights” 选项卡中允许访问仓库的 “依赖关系图” 部分。

设置通知选项:

启用依赖关系图后,管理员将默认收到安全警报。管理员还可以在依赖关系图设置中将团队或个人添加为安全警报的收件人。

警报响应:

当我们通知你潜在的漏洞时,我们将突出显示我们建议更新的任何依赖关系。如果存在已知的安全版本,我们将通过机器学习和公开数据选择一个,并将其包含在我们的建议中。

漏洞覆盖率

CVE ID国家漏洞数据库公开披露的漏洞)的漏洞将包含在安全警报中。但是,并非所有漏洞都有 CVE ID,甚至许多公开披露的漏洞也没有。随着安全数据的增长,我们将继续更好地识别漏洞。如需更多帮助来管理安全问题,请查看我们的 GitHub Marketplace 中的安全合作伙伴

这是使用世界上最大的开源数据集的下一步,可以帮助你保持代码安全并做到最好。依赖关系图和安全警报目前支持 JavaScript 和 Ruby,并将在 2018 年提供 Python 支持。


via: https://github.com/blog/2470-introducing-security-alerts-on-github

作者:mijuhan 译者:geekpi 校对:wxy

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

Vagrant 是一个用来创建和管理虚拟机环境的工具,常用于建设开发环境。 它在 Docker、VirtualBox、Hyper-V、Vmware、AWS 等技术的基础上构建了一个易于使用且易于复制、重建的环境。

Vagrant Boxes 简化了软件配置部分的工作,并且完全解决了软件开发项目中经常遇到的“它能在我机器上工作”的问题,从而提高开发效率。

在本文中,我们会在 Linux 机器上学习使用 VirtualBox 来配置 Vagrant Boxes。

前置条件

Vagrant 是基于虚拟化环境运行的,这里我们使用 VirtualBox 来提供虚拟化环境。 关于如何安装 VirutalBox 我们在“在 Linux 上安装 VirtualBox” 中有详细描述,请阅读该文并安装 VirtualBox。

安装好 VirtualBox 后,下一步就是配置 Vagrant 了。

安装

VirtualBox 准备好后,我们来安装最新的 vagrant 包。 在写本文的时刻, Vagrant 的最新版本为 2.0.0。 使用下面命令下载最新的 rpm 文件:

$ wget https://releases.hashicorp.com/vagrant/2.0.0/vagrant_2.0.0_x86_64.rpm

然后安装这个包:

$ sudo yum install vagrant_2.0.0_x86_64.rpm

如果是 Ubuntu,用下面这个命令来下载最新的 vagrant 包:

$ wget https://releases.hashicorp.com/vagrant/2.0.0/vagrant_2.0.0_x86_64.deb

然后安装它,

$ sudo dpkg -i vagrant_2.0.0_x86_64.deb

安装结束后,就该进入配置环节了。

配置

首先,我们需要创建一个目录给 vagrant 来安装我们需要的操作系统,

$ mkdir /home/dan
$ cd /home/dan/vagrant

注意: 推荐在你的用户主目录下创建 vagrant,否则你可能会遇到本地用户相关的权限问题。

现在执行下面命令来安装操作系统,比如 CentOS:

$ sudo vagrant init centos/7

如果要安装 Ubuntu 则运行:

$ sudo vagrant init ubuntu/trusty64

vagrant boxes

这还会在存放 vagrant OS 的目录中创建一个叫做 Vagrantfile 的配置文件。它包含了一些关于操作系统、私有 IP 网络、转发端口、主机名等信息。 若我们需要创建一个新的操作系统, 也可以编辑这个问题。

一旦我们用 vagrant 创建/修改了操作系统,我们可以用下面命令启动它:

$ sudo vagrant up

这可能要花一些时间,因为这条命令要构建操作系统,它需要从网络上下载所需的文件。 因此根据互联网的速度, 这个过程可能会比较耗时。

vagrant boxes

这个过程完成后,你就可以使用下面这些命令来管理 vagrant 实例了。

启动 vagrant 服务器:

$ sudo vagrant up

关闭服务器:

$ sudo vagrant halt

完全删除服务器:

$ sudo vagrant destroy

使用 ssh 访问服务器:

$ sudo vagrant ssh

我们可以从 Vagrant Box 的启动过程中得到 ssh 的详细信息(参见上面的截屏)。

如果想看创建的 vagrant OS,可以打开 VirtualBox,然后你就能在 VirtualBox 创建的虚拟机中找到它了。 如果在 VirtualBox 中没有找到, 使用 sudo 权限打开 virtualbox, 然后应该就能看到了。

vagrant boxes

注意:Vagrant 官方网站上可以下载预先配置好的 Vagrant OS。

这就是本文的内容了。如有疑问请在下方留言,我们会尽快回复。


via: http://linuxtechlab.com/creating-vagrant-virtual-boxes-virtualbox/

作者:Shusain 译者:lujun9972 校对:wxy

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

如果你经常使用 Linux,你应该遇到这个术语“ 僵尸进程 Zombie Processes ”。 那么什么是僵尸进程? 它们是怎么产生的? 它们是否对系统有害? 我要怎样杀掉这些进程? 下面将会回答这些问题。

什么是僵尸进程?

我们都知道进程的工作原理。我们启动一个程序,开始我们的任务,然后等任务结束了,我们就停止这个进程。 进程停止后, 该进程就会从进程表中移除。

你可以通过 System-Monitor 查看当前进程。

但是,有时候有些程序即使执行完了也依然留在进程表中。

那么,这些完成了生命周期但却依然留在进程表中的进程,我们称之为 “僵尸进程”。

它们是如何产生的?

当你运行一个程序时,它会产生一个父进程以及很多子进程。 所有这些子进程都会消耗内核分配给它们的内存和 CPU 资源。

这些子进程完成执行后会发送一个 Exit 信号然后死掉。这个 Exit 信号需要被父进程所读取。父进程需要随后调用 wait 命令来读取子进程的退出状态,并将子进程从进程表中移除。

若父进程正确第读取了子进程的 Exit 信号,则子进程会从进程表中删掉。

但若父进程未能读取到子进程的 Exit 信号,则这个子进程虽然完成执行处于死亡的状态,但也不会从进程表中删掉。

僵尸进程对系统有害吗?

不会。由于僵尸进程并不做任何事情, 不会使用任何资源也不会影响其它进程, 因此存在僵尸进程也没什么坏处。 不过由于进程表中的退出状态以及其它一些进程信息也是存储在内存中的,因此存在太多僵尸进程有时也会是一些问题。

你可以想象成这样:

“你是一家建筑公司的老板。你每天根据工人们的工作量来支付工资。 有一个工人每天来到施工现场,就坐在那里, 你不用付钱, 他也不做任何工作。 他只是每天都来然后呆坐在那,仅此而已!”

这个工人就是僵尸进程的一个活生生的例子。但是, 如果你有很多僵尸工人, 你的建设工地就会很拥堵从而让那些正常的工人难以工作。

那么如何找出僵尸进程呢?

打开终端并输入下面命令:

ps aux | grep Z

会列出进程表中所有僵尸进程的详细内容。

如何杀掉僵尸进程?

正常情况下我们可以用 SIGKILL 信号来杀死进程,但是僵尸进程已经死了, 你不能杀死已经死掉的东西。 因此你需要输入的命令应该是

kill -s SIGCHLD pid

将这里的 pid 替换成父进程的进程 id,这样父进程就会删除所有以及完成并死掉的子进程了。

你可以把它想象成:

"你在道路中间发现一具尸体,于是你联系了死者的家属,随后他们就会将尸体带离道路了。"

不过许多程序写的不是那么好,无法删掉这些子僵尸(否则你一开始也见不到这些僵尸了)。 因此确保删除子僵尸的唯一方法就是杀掉它们的父进程。


via: http://www.linuxandubuntu.com/home/what-are-zombie-processes-and-how-to-find-kill-zombie-processes

作者:linuxandubuntu 译者:lujun9972 校对:wxy

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