2019年5月

昨天,一名推特用户“EmacsTW”发布了一条新的推文,告诫希望使用 Emacs 的人放弃 Emacs,转用一些现代化的编辑器比如 VSCode。

一时间,技术圈炸了锅,尤其是在 Emacs 用户群体,大家议论纷纷:

  • “中出了个叛徒”
  • “什么鬼?虽然我现在 VSCode 用的也比 Emacs 多,但说 Emacs 害人有点过了”
  • “哼哼哼… VSCode 又不能煮咖啡、不能玩遊戲”
  • “哈哈哈哈太突然了。作为一个 Emacs 使用者觉得他说的很有道理,我也从来不向他人推荐 Emacs,太浪费时间了。”
  • “我司如果只看 Vim vs. Emacs 的话,Vim 完胜,但是大部分还是 VSCode……”

一个 Emacs 忠实粉丝眼中的 Emacs 背刺事件

由于笔者本人并不是 Emacs 的粉丝(Vim 更合我的口味,XD),所以我去采访了 LCTT 翻译组内的 Emacs 铁粉,我们的选题负责人 DarkSun(lujun9972),问一问他的看法。

当我问起这个背刺的事件时,DarkSun 给我的第一个反应是:

欢迎背叛,舒服就成

在我表现出了不解之后,DarkSun 又进一步详细的解释了一下他的意思:

我觉得如果只是把 Emacs 当成写代码的工具,那真的不如用 IDE 了。

我把 Emacs 当成是工具信息交流的平台,类似终端那样的东西。Emacs 插件可以看成是 UNIX 工具,它们之间可以通过文本或 lisp 对象进行交流,只不过 Emacs 可以比普通终端更方便的利用这些文本(谁让它本来就是编辑器呢)。 举个例子说,我可以用 Emacs 看 PDF 文档,然后看到不懂的单词可以用有道词典进行翻译,翻译的结果可以直接存到 Anki 里当做背单词的素材。在这个过程中,Emacs 本身起的是信息交流平台的作用,至于解释 PDF、请求有道翻译,请求 anki 添加卡片都是由第三方程序或第三方的包来实现的。

一百个人有一百零一种使用 Emacs 的方法,我想 Emacs 的这种多样性才是其魅力所在吧。

在看了他对 Emacs 的理解以后,再联想到“Emacs煮咖啡”的梗,我对他的话深以为然。

Emacs 是什么?
目前我们所熟悉和使用的 Emacs 是由自由软件领袖 Richard Matthew Stallman (RMS)于 1984 年开发的,并维护至 2008 年。

Emacs 追求大的哲学,它希望在一个编辑器中去完成所有的功能,希望用户只需要借助快捷键与无处不在的宏,就可以完成任何事情,也正因为如此,Emacs 常常被戏称为“被误以为编辑器的操作系统”,而不是一个编辑器。

新旧技术的更迭

不可否认,近年来 VSCode 的良心功能和 Sublime Text 3 的舒适好用,使得越来越多的人开始使用这些现代化的开发工具。而对于一些比较重型的语言(比如 C/C++、Java、Golang 等),会借助 IDE 来完成开发的工作。

对于 Emacs 这样一个似乎是文本编辑器但好像又不是文本编辑器的工具来说,现代化的开发工具显然更能获取年轻人的喜爱。

不过,如果可以,我更希望说 “Emacs 不是一个工具,而是代表了一种生活方式”,在 Emacs 里,你可以完成任何事情,它就好像融入你的生活一般,改变了你的生活。从这个层面来看,Emacs 无人能敌。

被钉在耻辱柱上的社群背叛者 —— azazabc123

抛开 Emacs 和 VScode 的孰优孰劣不谈,就该推特维护者本身的行为来说,这是一种非常不妥的行为,这让 Emacs TW 社群蒙羞于整个技术社群。这种公器私用毫无疑问是背叛了整个社群,作为社群对外窗口的维护者,发布一条与本社群背道而驰的内容难免会让人觉得不妥。而且,这种行为使得对于 Emacs 的背叛行为从个人行为上升到了群体行为,Emacs TW 中的其他人是否同意这样的行为,还不甚明了——但笔者对该社团的管理能力和未来的前途不报什么期望。

笔者非常不支持这种公器私用的行为,固然其可能存在一定的吐槽、任性的想法,但对于整个社群而言,这种无脑行为只会损伤社群整体的信用度,也降低了对其个人的品行评价。

英雄迟暮?

诞生于 1984 年的 Emacs,迄今已经走过了 35 个年头。Emacs 从曾经的风头正劲,到如今已经略显包罗庞杂。不过,虽然经过了这么多年发展,Emacs 已经足够好用,但依然在坚持不断地更新。在刚刚过去的四月份,Emacs 发布了它的 26.2 版本。

Emacs 依然好用,但时代已经变了,对于如今的 Hacker 们,工具不是最重要的,工具所产生的价值要更加重要。在这种观念下,学习成本极高的 Emacs 难免不受欢迎,简单易用易上手的 VSCode、Sublime 就成为了必然的选择。

但无论如何,虽然我们欢迎新技术,也拥抱新变化,但是该推特维护者的这种让社区蒙羞的行为,依然让我们非常遗憾,表以谴责。

你应该意识到你的默认网关是你的路由器的 IP 地址。一般这是在安装过程中由操作系统自动检测的,如果没有,你可能需要改变它。如果你的系统不能 ping 自身,那么很可能是一个网关问题,你必须修复它。在网络中,当你有多个网络适配器或路由器时,这种情况可能会发生。

网关是一个扮演着入口点角色的路由器,可以从一个网络传递网络数据到另一个网络。

下面是一些可能帮助你收集到与该话题相似的一些信息。

这可以通过下面的四个命令完成。

  • route 命令:被用来显示和操作 IP 路由表。
  • ip 命令:类似于 ifconfig,常用于设置静态 IP 地址、路由 & 默认网关,等等。
  • netstat 命令:是一个命令行工具,用来显示网络连接相关的信息(包括入站和出站的),例如路由表、伪装连接、多播成员和网络接口。
  • routel 命令:被用来以好看的输出格式列出路由。

1)在 Linux 中如何使用 route 命令检查默认的网关或者路由 IP 地址?

route 命令被用来显示和操作 IP 路由表。

它主要用于通过一个已经配置的接口给特定的主机或者网络设置静态的路由。

当使用 add 或者 del 选项时,route 修改路由表。没有这些选项,route 显示路由表的当前内容。

# route
或
# route -n

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         www.routerlogin 0.0.0.0         UG    600    0        0 wlp8s0
192.168.1.0     0.0.0.0         255.255.255.0   U     600    0        0 wlp8s0

2)如何在 Linux 中使用 ip 命令检查默认网关或者路由 IP 地址?

IP 命令 类似于 ifconfig,常用于配置静态 IP 地址、路由 & 默认网关,等等。

ifconfig 命令因为多年没有维护而被遗弃了,即使它仍然在大多数 Linux 发行版上可获得。

ifconfig 命令已经被 ip 命令替代了,ip 命令是非常强大的,只要一个命令就能执行几个网络管理任务。

ip 命令工具附带在 iproute2 包中。在主要的 Linux 发行版中都默认预装了 iproute2 。

如果没有,你可以在你的终端中在包管理器的帮助下通过指定 iproute2 来安装它。

# ip r
或
# ip route
或
# ip route show

default via 192.168.1.1 dev wlp8s0 proto dhcp metric 600
192.168.1.0/24 dev wlp8s0 proto kernel scope link src 192.168.1.6 metric 600

3)如何在 Linux 中使用 netstat 命令检查默认网关或者路由 IP 地址?

netstat 代表 Network Statistics,是一个用来显示网络连接相关的信息(包括入站和出站)的命令行工具,例如路由表、伪装连接,多播成员和网络接口。

它列出所有的 tcp、udp 套接字连接和 unix 套接字连接。

它在网络中被用来诊断网络问题并判断网络中的流量总量来作为性能测量指标。

# netstat -r

Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
default         www.routerlogin 0.0.0.0         UG        0 0          0 wlp8s0
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 wlp8s0

4)如何在 Linux 中使用 routel 命令检查默认网关或者路由 IP 地址?

它用来以好看的输出格式列出路由信息。这些程序是一系列你可以用来替代 iproute2 的帮助脚本(routelroutef)。

routel 脚本以一种被认为更容易解释并且等价于 route 输出列表的格式来输出路由信息。

如果 routef 脚本不加任何参数,将仅仅简单的将路由表清空。小心!这意味着删除所有的路由,让你的网络不再可用。

# routel
         target            gateway          source    proto    scope    dev tbl
        default        192.168.1.1                     dhcp          wlp8s0
   192.168.1.0/ 24                     192.168.1.6   kernel     link wlp8s0
      127.0.0.0          broadcast       127.0.0.1   kernel     link     lo local
     127.0.0.0/ 8            local       127.0.0.1   kernel     host     lo local
      127.0.0.1              local       127.0.0.1   kernel     host     lo local
127.255.255.255          broadcast       127.0.0.1   kernel     link     lo local
    192.168.1.0          broadcast     192.168.1.6   kernel     link wlp8s0 local
    192.168.1.6              local     192.168.1.6   kernel     host wlp8s0 local
  192.168.1.255          broadcast     192.168.1.6   kernel     link wlp8s0 local
            ::1                                      kernel              lo
        fe80::/ 64                                   kernel          wlp8s0
            ::1              local                   kernel              lo local
fe80::ad00:2f7e:d882:5add              local                   kernel          wlp8s0 local
        ff00::/ 8                                                    wlp8s0 local

如果你只想打印默认的网关那么使用下面的格式。

# routel | grep default
        default        192.168.1.1                     dhcp          wlp8s0

via: https://www.2daygeek.com/check-find-default-gateway-or-router-ip-address-in-linux/

作者:Magesh Maruthamuthu 选题:lujun9972 译者:warmfrog 校对:wxy

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

Apache 基金会(ASF)正式宣布,该基金会已经将其旗下的 350 多个项目、多达 2 亿行的代码从内部的 Git 基础设施迁移至 GitHub。

作为全球最大的开源基金会,ASF 拥有 730 名个人 ASF 成员 Member 和超过 7000 名的 Apache 代码 提交者 Commiter ,在其 20 年的历史当中,已经通过 300 万个代码提交累计贡献了多达 10 亿行的代码。

Apache 项目最初在 ASF 基础设施中提供了两种版本控制服务:Apache Subversion 和 Git。而多年来,越来越多的项目及其社区希望在 GitHub 上看到他们的源代码。但是由于这些代码在 GitHub 只是只读的镜像,因此在这些代码存储库上只能使用有限的 GitHub 工具。

“2016 年,基金会开始将 GitHub 的代码存储库和工具与我们自己的服务集成在一起。这使得部分选定的项目能够使用 GitHub 的优秀工具,”ASF 基础设施管理员 Greg Stein 说。 “随着时间的推移,我们改进、调试并巩固了这种集成。在 2018 年末,我们要求所有项目从我们内部的 git 服务转移到 GitHub 提供的服务。这种转变会将 GitHub 所有的工具带到我们的项目中,而我们在我们的基础设施上维护一个备用镜像。”

GitHub CEO Nat Friedman 表示:“我们很自豪能让开源社区这么长期的成员转移到 GitHub。……无论是与个人开源维护者和贡献者,还是与一些世界上最大的开源基金会(如 Apache)合作,GitHub 的使命是通过支持开源社区,满足他们的独特需求和帮助开源来成为所有开发人员的家,让项目茁壮成长。”

在 2019 年 2 月,迁移到 GitHub 的工作已经完成,ASF 自己的 git 服务退役。

“我们将继续试验和扩展 GitHub,以根据我们自己的需求和要求为我们的社区提供服务,”Stein 补充道。 “基金会已经开始与 GitHub 管理层密切合作,探索实现这一目标的方法,以及将来可能实现的目标。”

补充:Apache 基金会的项目并未“迁移”至 GitHub,而是做了个双主镜像

经过多位 Apache 基金会的贡献者解释,这则消息存在一定的误读,特此做个澄清。

据 Apache 基金会官方的解释,之前,Apache 基金会“有两个不同的 git 服务:gitbox 和 git-wip-us,后者是自 2010 年以来一直可用的最初的 git 服务”,而通常会在 GitHub 上建立一个只读镜像。

随着 Apache 基金会旗下各个项目表示出对利用 GitHub 基础设施服务的兴趣,从 2016 年中期,Apache 基金会建立了 gitbox,以使项目能够正常使用 GitHub 服务。gitbox 提供的是一种双主镜像的仓库,即使用者可以在 GitHub 上进行提交、处理 PR 和工单等,也可以采用 Apache 内部账户进行相同的操作——而无论在任何一端的操作都是双向同步的。

到了 2018 年,基金会决定将所有使用 git 服务项目都迁移至 gitbox,使之可以利用 GitHub 生态的更多工具,并将 git-wip-us 服务废弃。这个工作已于 2019 年 2 月完成。

所以,现在的状态是:Apache 基金会旗下采用 git 作为版本仓库的项目,都迁移至 gitbox 了。这些项目既可以使用 GitHub 的基础设施和工具,也可以使用 Apache 基金会账户在 gitbox 上进行相同的操作。因此,这就是“通过集成了 GitHub 而扩展了 Apache 基金会的基础设施”(原新闻标题)。

感谢 Apache 基金会的贡献者“吴晟@skywalking”、“刘天栋Ted.开源社”和华为的姜宁提供的信息。