2019年9月

如果你正在寻找一个简单、直观的界面,让你可以播放流媒体,可以尝试一下 GNOME 的 Internet Radio 插件。

网络广播是收听世界各地电台节目的好方法。和许多开发人员一样,我喜欢在编写代码时打开电台。你可以使用 MPlayermpv 等终端媒体播放器收听网络广播,我就是这样通过 Linux 命令行收听广播的。但是,如果你喜欢使用图形用户界面 (GUI),你可以尝试一下 GNOME Internet Radio,这是一个用于 GNOME 桌面的漂亮插件。你可以在包管理器中找到它。

 title=

使用图形桌面操作系统收听网络广播通常需要启动一个应用程序,比如 AudaciousRhythmbox。它们有很好的界面,很多选项,以及很酷的音频可视化工具。但如果你只想要一个简单、直观的界面播放你的流媒体,GNOME Internet Radio 就是你的选择。

安装之后,工具栏中会出现一个小图标,你可以在其中进行所有配置和管理。

 title=

我做的第一件事是进入设置菜单。我启用了以下两个选项:显示标题通知和显示音量调整。

 title=

GNOME Internet Radio 包含一些预置的电台,并且很容易添加其他电台。只需点击(“+”)符号即可。你需要输入一个频道名称,它可以是你喜欢的任何内容(包括电台名称)和电台地址。例如,我喜欢听 Synthetic FM。我输入名称(Synthetic FM),以及流地址(https://mediaserv38.live-streams.nl:2199/tunein/syntheticfm.pls)。

然后单击流旁边的星号将其添加到菜单中。

不管你听什么音乐,不管你选择什么类型,很明显,程序员需要他们的音乐!GNOME Internet Radio 插件使你可以轻松地让你排好喜爱的网络电台。


via: https://opensource.com/article/19/6/gnome-internet-radio

作者:Alan Formy-Duval 选题:lujun9972 译者:lujun9972 校对:wxy

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

使 Linux 变得丰富多彩(或单色)。

你可以使用特殊的 ANSI 编码设置为 Linux 终端添加颜色,可以在终端命令或配置文件中动态添加,也可以在终端仿真器中使用现成的主题。无论哪种方式,你都可以黑色屏幕上找回怀旧的绿色或琥珀色文本。本文演示了如何使 Linux 变得丰富多彩(或单色)的方法。

终端的功能特性

现代系统的终端的颜色配置通常默认至少是 xterm-256color,但如果你尝试为终端添加颜色但未成功,则应检查你的 TERM 设置。

从历史上看,Unix 终端从字面上讲是:用户可以输入命令的共享计算机系统上实际的物理端点(终点)。它们专指通常用于远程发出命令的电传打字机(这也是我们今天在 Linux 中仍然使用 /dev/tty 设备的原因)。终端内置了 CRT 显示器,因此用户可以坐在办公室的终端上直接与大型机进行交互。CRT 显示器价格昂贵 —— 无论是制造还是使用控制;比担心抗锯齿和现代计算机专家理所当然认为的漂亮信息,让计算机吐出原始 ASCII 文本更容易。然而,即使在那时,技术的发展也很快,很快人们就会发现,随着新的视频显示终端的设计,他们需要新的功能特性来提供可选功能。

例如,1978 年发布的花哨的新 VT100 支持 ANSI 颜色,因此如果用户将终端类型识别为 vt100,则计算机可以提供彩色输出,而基本串行设备可能没有这样的选项。同样的原则适用于今天,它是由 TERM 环境变量设定的。你可以使用 echo 检查你的 TERM 定义:

$ echo $TERM
xterm-256color

过时的(但在一些系统上仍然为了向后兼容而维护)/etc/termcap 文件定义了终端和打印机的功能特性。现代的版本是 terminfo,位于 /etc/usr/share 中,具体取决于你的发行版。 这些文件列出了不同类型终端中可用的功能特性,其中许多都是由历史上的硬件定义的,如 vt100 到 vt220 的定义,以及 xterm 和 Xfce 等现代软件仿真器。大多数软件并不关心你使用的终端类型; 在极少数情况下,登录到检查兼容功能的服务器时,你可能会收到有关错误的终端类型的警告或错误。如果你的终端设置为功能特性很少的配置文件,但你知道你所使用的仿真器能够支持更多功能特性,那么你可以通过定义 TERM 环境变量来更改你的设置。你可以通过在 ~/.bashrc 配置文件中导出 TERM 变量来完成此操作:

export TERM=xterm-256color

保存文件并重新载入设置:

$ source ~/.bashrc

ANSI 颜色代码

现代终端继承了用于“元”特征的 ANSI 转义序列。这些是特殊的字符序列,终端将其解释为操作而不是字符。例如,此序列将清除屏幕,直到下一个提示符:

$ printf '\033[2J'

它不会清除你的历史信息;它只是清除终端仿真器中的屏幕,因此它是一个安全且具有示范性的 ANSI 转义序列。

ANSI 还具有设置终端颜色的序列。例如,键入此代码会将后续文本更改为绿色:

$ printf '\033[32m'

只要你对相同的计算机使用同一个颜色,就可以使用颜色来帮助你记住你登录的系统。例如,如果你经常通过 SSH 连接到服务器,则可以将服务器的提示符设置为绿色,以帮助你一目了然地将其与本地的提示符区分开来。 要设置绿色提示符,请在提示符前使用 ANSI 代码设置为绿色,并使用代表正常默认颜色的代码结束:

export PS1=`printf "\033[32m$ \033[39m"`

前景色和背景色

你不仅可以设置文本的颜色。使用 ANSI 代码,你还可以控制文本的背景颜色以及做一些基本的样式。

例如,使用 \033[4m,你可以为文本加上下划线,或者使用 \033[5m 你可以将其设置为闪烁的文本。起初这可能看起来很愚蠢,因为你可能不会将你的终端设置为所有文本带有下划线并整天闪烁, 但它对某些功能很有用。例如,你可以将 shell 脚本生成的紧急错误设置为闪烁(作为对用户的警报),或者你可以为 URL 添加下划线。

作为参考,以下是前景色和背景色的代码。前景色在 30 范围内,而背景色在 40 范围内:

颜色前景色背景色
黑色\033[30m\033[40m
红色\033[31m\033[41m
绿色\033[32m\033[42m
橙色\033[33m\033[43m
蓝色\033[34m\033[44m
品红\033[35m\033[45m
青色\033[36m\033[46m
浅灰\033[37m\033[47m
回退到发行版默认值\033[39m\033[49m

还有一些可用于背景的其他颜色:

颜色背景色
深灰\033[100m
浅红\033[101m
浅绿\033[102m
黄色\033[103m
浅蓝\033[104m
浅紫\033[105m
蓝绿\033[106m
白色\033[107m

持久设置

在终端会话中设置颜色只是暂时的,相对无条件的。有时效果会持续几行;这是因为这种设置颜色的方法依赖于 printf 语句来设置一种模式,该模式仅持续到其他设置覆盖它。

终端仿真器通常获取使用哪种颜色的指令的方式来自于 LS_COLORS 环境变量的设置,该设置又由 dircolors 的设置填充。你可以使用 echo 语句查看当前设置:

$ echo $LS_COLORS
rs=0:di=38;5;33:ln=38;5;51:mh=00:pi=40;
38;5;11:so=38;5;13:do=38;5;5:bd=48;5;
232;38;5;11:cd=48;5;232;38;5;3:or=48;
5;232;38;5;9:mi=01;05;37;41:su=48;5;
196;38;5;15:sg=48;5;11;38;5;16:ca=48;5;
196;38;5;226:tw=48;5;10;38;5;16:ow=48;5;
[...]

或者你可以直接使用 dircolors

$ dircolors --print-database
[...]
# image formats
.jpg 01;35
.jpeg 01;35
.mjpg 01;35
.mjpeg 01;35
.gif 01;35
.bmp 01;35
.pbm 01;35
.tif 01;35
.tiff 01;35
[...]

这看起来很神秘。文件类型后面的第一个数字是属性代码,它有六种选择:

  • 00 无
  • 01 粗体
  • 04 下划线
  • 05 闪烁
  • 07 反白
  • 08 暗色

下一个数字是简化形式的颜色代码。你可以通过获取 ANSI 代码的最后一个数字来获取颜色代码(绿色前景为 32,绿色背景为 42;红色为 31 或 41,依此类推)。

你的发行版可能全局设置了 LS_COLORS,因此系统上的所有用户都会继承相同的颜色。如果你想要一组自定义的颜色,可以使用 dircolors。首先,生成颜色设置的本地副本:

$ dircolors --print-database > ~/.dircolors

根据需要编辑本地列表。如果你对自己的选择感到满意,请保存文件。你的颜色设置只是一个数据库,不能由 ls 直接使用,但你可以使用 dircolors 获取可用于设置 LS_COLORS 的 shellcode:

$ dircolors --bourne-shell ~/.dircolors
LS_COLORS='rs=0:di=01;34:ln=01;36:mh=00:
pi=40;33:so=01;35:do=01;35:bd=40;33;01:
cd=40;33;01:or=40;31;01:mi=00:su=37;41:
sg=30;43:ca=30;41:tw=30;42:ow=34;
[...]
export LS_COLORS

将输出复制并粘贴到 ~/.bashrc 文件中并重新加载。或者,你可以将该输出直接转储到 .bashrc 文件中并重新加载。

$ dircolors --bourne-shell ~/.dircolors >> ~/.bashrc
$ source ~/.bashrc

你也可以在启动时使 Bash 解析 .dircolors 而不是手动进行转换。实际上,你可能不会经常改变颜色,所以这可能过于激进,但如果你打算改变你的配色方案,这是一个选择。在 .bashrc 文件中,添加以下规则:

[[ -e $HOME/.dircolors ]] && eval "`dircolors --sh $HOME/.dircolors`"

如果你的主目录中有 .dircolors 文件,Bash 会在启动时对其进行评估并相应地设置 LS_COLORS

颜色

在终端中使用颜色是一种可以为你自己提供特定信息的快速视觉参考的简单方法。但是,你可能不希望过于依赖它们。毕竟,颜色不是通用的,所以如果其他人使用你的系统,他们可能不会像你那样看懂颜色代表的含义。此外,如果你使用各种工具与计算机进行交互,你可能还会发现某些终端或远程连接无法提供你期望的颜色(或根本不提供颜色)。

除了上述警示之外,颜色在某些工作流程中可能很有用且很有趣,因此创建一个 .dircolor 数据库并根据你的想法对其进行自定义吧。


via: https://opensource.com/article/19/9/linux-terminal-colors

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

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

外加一些提高浏览器效率的技巧。

 title=

这里有一个别有用心的问题:你通常一次打开多少个浏览器标签页?你是否有多个窗口,每个窗口都有多个标签页?或者你是一个极简主义者,一次只打开两个标签页。另一种选择是将一个 20 个标签页的浏览器窗口移动到另一个屏幕上去,这样在处理特定任务时它就不会碍事了。你的处理方法在工作、个人和移动浏览器之间有什么不同吗?你的浏览器策略是否与你的工作习惯有关?

4 个提高浏览器效率的技巧

  1. 了解浏览器快捷键以节省单击。无论你使用 Firefox 还是 Chrome,都有很多快捷键可以让你方便地执行包括切换标签页在内的某些功能。例如,Chrome 可以很方便地打开一个空白的谷歌文档。使用快捷键 Ctrl + t 打开一个新标签页,然后键入 doc.new 即可。电子表格、幻灯片和表单也可以这样做。
  2. 用书签文件夹组织最频繁的任务。当开始一项特定的任务时,只需打开文件夹中的所有书签 (Ctrl + 点击),就可以快速地从列表中勾选它。
  3. 使用正确的浏览器扩展。成千上万的浏览器扩展都声称可以提高工作效率。在安装之前,确定你不是仅仅在屏幕上添加更多的干扰而已。
  4. 使用计时器减少看屏幕的时间。无论你使用的是老式的 egg 定时器还是花哨的浏览器扩展,都没有关系。为了防止眼睛疲劳,执行 20/20/20 规则。每隔 20 分钟,离开屏幕 20 秒,看看 20 英尺以外的东西。

参加我们的投票来分享你一次打开多少个浏览器标签。请务必在评论中告诉我们你最喜欢的浏览器技巧。

生产力有两个组成部分——做正确的事情和高效地做那些事情……


via: https://opensource.com/article/19/6/how-many-browser-tabs

作者:Lauren Pritchett 选题:lujun9972 译者:lujun9972 校对:wxy

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

有时当你需要移动一个文件时,mv 命令似乎不是最佳选项,那么你会如何做呢?

不起眼的 mv 命令是在你见过的每个 POSIX 系统中都能找到的有用工具之一。它的作用是明确定义的,并且做得很好:将文件从文件系统中的一个位置移动到另一个位置。但是 Linux 非常灵活,还有其他移动文件的办法。使用不同的工具可以完美匹配一些特殊用例,这算一个小优势。

在远离 mv 之前,先看看这个命令的默认结果。首先,创建一个目录并生成一些权限为 777 的文件:

$ mkdir example
$ touch example/{foo,bar,baz}
$ for i in example/*; do ls /bin > "${i}"; done
$ chmod 777 example/*

你可能不会这么认为,但是文件在一个文件系统中作为条目存在,称为索引节点(通常称为 inode),你可以使用 ls 命令及其 --inode 选项查看一个文件占用的 inode:

$ ls --inode example/foo
7476868 example/foo

作为测试,将文件从示例目录移动到当前目录,然后查看文件的属性:

$ mv example/foo .
$ ls -l -G -g --inode
7476868 -rwxrwxrwx. 1 29545 Aug  2 07:28 foo

如你所见,原始文件及权限已经被“移动”,但它的 inode 没有变化。

这就是 mv 工具用来移动的方式:保持 inode 不变(除非文件被移动到不同的文件系统),并保留其所有权和权限。

其他工具提供了不同的选项。

复制和删除

在某些系统上,移动操作是真的在做移动:比特从文件系统中的某个位置删除并重新分配给另一个位置。这种行为在很大程度上已经失宠。现在,移动操作要么是属性重新分配(inode 现在指向文件组织中的不同位置),要么是复制和删除操作的组合。这种设计的哲学意图是确保在移动失败时,文件不会碎片化。

mv 不同,cp 命令会在文件系统中创建一个全新的数据对象,它有一个新的 inode 位置,并取决于 umask。你可以使用 cprm(如果有的话,或者 trash —— LCTT 译注:它是一个命令行回收站工具)命令来模仿 mv 命令。

$ cp example/foo .
$ ls -l -G -g --inode
7476869 -rwxrwxr-x. 29545 Aug  2 11:58 foo
$ trash example/foo

示例中的新 foo 文件获得了 755 权限,因为此处的 umask 明确排除了写入权限。

$ umask
0002

有关 umask 的更多信息,阅读 Alex Juarez 这篇关于文件权限的文章。

查看和删除

与复制和删除类似,使用 cat(或 tac)命令在创建“移动”文件时分配不同的权限。假设当前目录中是一个没有 foo 的新测试环境:

$ cat example/foo > foo
$ ls -l -G -g --inode
7476869 -rw-rw-r--. 29545 Aug 8 12:21 foo
$ trash example/foo

这次,创建了一个没有事先设置权限的新文件,所以文件最终权限完全取决于 umask 设置,它不会阻止用户和组的权限位(无论 umask 是什么,都不会为新文件授予可执行权限),但它会阻止其他人的写入(值为 2)。所以结果是一个权限是 664 的文件。

Rsync

rsync 命令是一个强大的多功能工具,用于在主机和文件系统位置之间发送文件。此命令有许多可用选项,包括使其目标镜像成为源。

你可以使用带有 --remove-source-files 选项的 rsync 复制,然后删除文件,并可以带上你选择执行同步的任何其他选项(常见的通用选项是 --archive):

$ rsync --archive --remove-source-files example/foo .
$ ls example
bar  baz
$ ls -lGgi
7476870 -rwxrwxrwx. 1 seth users 29545 Aug 8 12:23 foo

在这里,你可以看到保留了文件权限和所有权,只是更新了时间戳,并删除了源文件。

警告:不要将此选项与 --delete 混淆,后者会从目标目录中删除(源目录中不存在的)文件。误用 --delete 会清除很多数据,建议你不要使用此选项,除非是在测试环境中。

你可以覆盖其中一些默认值,更改权限和修改设置:

$ rsync --chmod=666 --times \
    --remove-source-files example/foo .
$ ls example
bar  baz
$ ls -lGgi
7476871 -rw-rw-r--. 1 seth users 29545 Aug 8 12:55 foo

这里,目标的 umask 会生效,因此 --chmod=666 选项会产生一个权限为 644 的文件。

好处不仅仅是权限,与简单的 mv 命令相比,rsync 命令有很多有用的选项(其中最重要的是 --exclude 选项,这样你可以在一个大型移动操作中排除某些项目),这使它成为一个更强大的工具。例如,要在移动文件集合时排除所有备份文件:

$ rsync --chmod=666 --times \
    --exclude '*~' \
    --remove-source-files example/foo .

使用 install 设置权限

install 命令是一个专门面向开发人员的复制命令,主要是作为软件编译安装例程的一部分调用。它并不为用户所知(我经常想知道为什么它有这么一个直观的名字,而剩下的包管理器却只能使用缩写和昵称),但是 install 实际上是一种将文件放在你想要地方的有用方法。

install 命令有很多选项,包括 --backup--compare 命令(以避免更新文件的新副本)。

cpcat 命令不同,但与 mv 完全相同,install 命令可以在复制文件的同时而保留其时间戳:

$ install --preserve-timestamp example/foo .
$ ls -l -G -g --inode
7476869 -rwxr-xr-x. 1 29545 Aug  2 07:28 foo
$ trash example/foo

在这里,文件被复制到一个新的 inode,但它的 mtime(修改时间)没有改变。但权限被设置为 install 的默认值 755

你可以使用 install 来设置文件的权限,所有者和组:

$ install --preserve-timestamp \
    --owner=skenlon \
    --group=dialout \
    --mode=666 example/foo .
$ ls -li
7476869 -rw-rw-rw-. 1 skenlon dialout 29545 Aug  2 07:28 foo
$ trash example/foo

移动、复制和删除

文件包含数据,而真正重要的文件包含你的数据。学会聪明地管理它们是很重要的,现在你有了确保以你想要的方式来处理数据的工具包。

你是否有不同的数据管理方式?在评论中告诉我们你的想法。


via: https://opensource.com/article/19/8/moving-files-linux-without-mv

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

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

像源代码一样对待时间并在 Git 的帮助下维护你的日历。

Git 是一个少有的能将如此多的现代计算封装到一个程序之中的应用程序,它可以用作许多其他应用程序的计算引擎。虽然它以跟踪软件开发中的源代码更改而闻名,但它还有许多其他用途,可以让你的生活更轻松、更有条理。在这个 Git 系列中,我们将分享七种鲜为人知的使用 Git 的方法。

今天,我们将使用 Git 来跟踪你的日历。

使用 Git 跟踪你的日程安排

如果时间本身只是可以管理和版本控制的源代码呢?虽然证明或反驳这种理论可能超出了本文的范围,但在 Git 的帮助下,你可以将时间视为源代码并管理你的日程安排。

日历的卫冕冠军是 CalDAV 协议,它支撑了如 NextCloud 这样的流行的开源及闭源的日历应用程序。CalDAV 没什么问题(评论者,请注意),但它并不适合所有人,除此之外,它还有一种不同于单一文化的鼓舞人心的东西。

因为我对大量使用 GUI 的 CalDAV 客户端没有兴趣(如果你正在寻找一个好的终端 CalDAV 查看器,请参阅 khal),我开始研究基于文本的替代方案。基于文本的日历具有在明文中工作的所有常见好处。它很轻巧,非常便携,只要它结构化,就很容易解析和美化(无论美丽对你意味着什么)。

最重要的是,它正是 Git 旨在管理的内容。

Org 模式不是一种可怕的方式

如果你没有对你的明文添加结构,它很快就会陷入一种天马行空般的混乱,变成恶魔才能懂的符号。幸运的是,有一种用于日历的标记语法,它包含在令人尊敬的生产力 Emacs 模式 —— Org 模式 中(承认吧,你其实一直想开始使用它)。

许多人没有意识到 Org 模式的惊人之处在于你不需要知道甚至不需要使用 Emacs来利用 Org 模式建立的约定。如果你使用 Emacs,你会得到许多很棒的功能,但是如果 Emacs 对你来说太难了,那么你可以实现一个基于 Git 的 Org 模式的日历系统,而不需要安装 Emacs。

关于 Org 模式你唯一需要知道的部分是它的语法。Org 模式的语法维护成本低、直观。使用 Org 模式而不是 GUI 日历应用程序进行日历记录的最大区别在于工作流程:你可以创建一个任务列表,然后每天分配一个任务,而不是转到日历并查找要安排任务的日期。

组织模式中的列表使用星号(*)作为项目符号。这是我的游戏任务列表:

* Gaming
** Build Stardrifter character
** Read Stardrifter rules
** Stardrifter playtest

** Blue Planet @ Mike's

** Run Rappan Athuk
*** Purchase hard copy
*** Skim Rappan Athuk
*** Build Rappan Athuk maps in maptool
*** Sort Rappan Athuk tokens

如果你熟悉 CommonMark 或 Markdown,你会注意到,Org 模式不是使用空格来创建子任务,而是更明确地使用了其它项目符号。无论你的使用背景和列表是什么,这都是一种构建列表的直观且简单的方法,它显然与 Emacs 没有内在联系(尽管使用 Emacs 为你提供了快捷方式,因此你可以快速地重新排列列表)。

要将列表转换为日历中的计划任务或事件,请返回并添加关键字 SCHEDULED 和(可选):CATEGORY:

* Gaming
:CATEGORY: Game
** Build Stardrifter character
SCHEDULED: <2019-03-22 18:00-19:00>
** Read Stardrifter rules
SCHEDULED: <2019-03-22 19:00-21:00>
** Stardrifter playtest
SCHEDULED: <2019-03-25 0900-1300>
** Blue Planet @ Mike's
SCHEDULED: <2019-03-18 18:00-23:00 +1w>

and so on...

SCHEDULED 关键字将该条目标记为你希望收到通知的事件,并且可选的 :CATEGORY: 关键字是一个可供你自己使用的任意标记系统(在 Emacs 中,你可以根据类别对条目使用颜色代码)。

对于重复事件,你可以使用符号(如+1w)创建每周事件或 +2w 以进行每两周一次的事件,依此类推。

所有可用于 Org 模式的花哨标记都记录于文档,所以不要犹豫,找到更多技巧来让它满足你的需求。

放进 Git

如果没有 Git,你的 Org 模式的日程安排只不过是本地计算机上的文件。这是 21 世纪,所以你至少需要可以在手机上使用你的日历,即便不是在你所有的个人电脑上。你可以使用 Git 为自己和他人发布日历。

首先,为 .org 文件创建一个目录。我将我的存储在 ~/cal 中。

$ mkdir ~/cal

转到你的目录并使其成为 Git 存储库:

$ cd cal
$ git init

.org 文件移动到你本地的 Git 存储库。在实践中,我为每个类别维护一个 .org 文件。

$ mv ~/*.org ~/cal
$ ls
Game.org Meal.org Seth.org Work.org

暂存并提交你的文件:

$ git add *.org
$ git commit -m 'cal init'

创建一个 Git 远程源

要在任何地方提供日历,你必须在互联网上拥有 Git 存储库。你的日历是纯文本,因此任何 Git 存储库都可以。你可以将日历放在 GitLab 或任何其他公共 Git 托管服务(甚至是专有服务)上,只要你的主机允许,你甚至可以将该存储库标记为私有库。如果你不想将日历发布到你无法控制的服务器,则可以自行托管 Git 存储库,或者为单个用户使用裸存储库,或者使用 GitoliteGitea 等前端服务。

为了简单起见,我将假设一个自托管的 Git 裸存储库。你可以使用 Git 命令在任何具有 SSH 访问权限的服务器上创建一个远程裸存储库:

$ ssh -p 22122 [[email protected]][14]
[remote]$ mkdir cal.git
[remote]$ cd cal.git
[remote]$ git init --bare
[remote]$ exit

这个裸存储库可以作为你日历在互联网上的家。

将其设置为本地 Git 存储库(在你的计算机上,而不是你的服务器上)的远程源:

$ git remote add origin [email protected]:/home/seth/cal.git

然后推送你的日历到该服务器:

$ git push -u origin HEAD

将你的日历放在 Git 存储库中,就可以在任何运行 Git 的设备上使用它。这意味着你可以对计划进行更新和更改,并将更改推送到上游,以便在任何地方进行更新。

我使用这种方法使我的日历在我的工作笔记本电脑和家庭工作站之间保持同步。由于我每天大部分时间都在使用 Emacs,因此能够在 Emacs 中查看和编辑我的日历是一个很大的便利。对于大多数使用移动设备的人来说也是如此,因此下一步是在移动设备上设置 Org 模式的日历系统。

移动设备上的 Git

由于你的日历数据是纯文本的,严格来说,你可以在任何可以读取文本文件的设备上“使用”它。这是这个系统之美的一部分;你永远不会缺少原始数据。但是,要按照你希望的现代日历的工作方式将日历集成到移动设备上,你需要两个组件:移动设备上的 Git 客户端和 Org 模式查看器。

移动设备上的 Git 客户端

MGit 是 Android 上的优秀 Git 客户端。同样,iOS 也有 Git 客户端。

一旦安装了 MGit(或类似的 Git 客户端),你必须克隆日历存储库,以便在你的手机上有副本。要从移动设备访问服务器,必须设置 SSH 密钥进行身份验证。MGit 可以为你生成和存储密钥,你必须将其添加到服务器的 ~/.ssh/authorized_keys 文件或托管的 Git 的帐户设置中的 SSH 密钥中。

你必须手动执行此操作。MGit 没有登录你的服务器或托管的 Git 帐户的界面。如果你不这样做,你的移动设备将无法访问你的服务器以访问你的日历数据。

我是通过将我在 MGit 中生成的密钥文件通过 KDE Connect 复制到我的笔记本电脑来实现的(但你可以通过蓝牙、SD 卡读卡器或 USB 电缆进行相同操作,具体取决于你访问手机上的数据的首选方法)。 我用这个命令将密钥(一个名为 calkey 的文件)复制到我的服务器:

$ cat calkey | ssh [email protected] "cat >> /home/seth/.ssh/authorized_keys"

你可能有不同的方法,但如果你曾经将服务器设置为无密码登录,这是完全相同的过程。如果你使用的是 GitLab 等托管的 Git 服务,则必须将密钥文件的内容复制并粘贴到用户帐户的 SSH 密钥面板中。

 title=

完成后,你的移动设备可以向你的服务器授权,但仍需要知道在哪里查找你的日历数据。不同的应用程序可能使用不同的表示法,但 MGit 使用普通的旧式 Git-over-SSH。这意味着如果你使用的是非标准 SSH 端口,则必须指定要使用的 SSH 端口:

$ git clone ssh://[email protected]:22122//home/seth/git/cal.git

 title=

如果你使用其他应用程序,它可能会使用不同的语法,允许你在特殊字段中提供端口,或删除 ssh:// 前缀。如果遇到问题,请参阅应用程序文档。

将存储库克隆到手机。

 title=

很少有 Git 应用程序设置为自动更新存储库。有一些应用程序可以用来自动拉取,或者你可以设置 Git 钩子来推送服务器的更新 —— 但我不会在这里讨论这些。目前,在对日历进行更新后,请务必在 MGit 中手动提取新更改(或者如果在手机上更改了事件,请将更改推送到服务器)。

 title=

移动设备上的日历

有一些应用程序可以为移动设备上的 Org 模式提供前端。Orgzly 是一个很棒的开源 Android 应用程序,它为 Org 模式的从 Agenda 模式到 TODO 列表的大多数功能提供了一个界面。安装并启动它。

从主菜单中,选择“设置同步存储库”,然后选择包含日历文件的目录(即,从服务器克隆的 Git 存储库)。

给 Orgzly 一点时间来导入数据,然后使用 Orgzly 的汉堡包菜单选择日程视图。

 title=

在 Orgzly 的“设置提醒”菜单中,你可以选择在手机上触发通知的事件类型。你可以获得 SCHEDULED 任务,DEADLINE 任务或任何分配了事件时间的任何通知。如果你将手机用作任务管理器,那么你将永远不会错过 Org 模式和 Orgzly 的活动。

 title=

Orgzly 不仅仅是一个解析器。你可以编辑和更新事件,甚至标记事件为 DONE

 title=

专为你而设计

关于使用 Org 模式和 Git 的重要一点是,这两个应用程序都非常灵活,并且你可以自定义它们的工作方式和内容,以便它们能够适应你的需求。如果本文中的内容是对你如何组织生活或管理每周时间表的冒犯,但你喜欢此提案提供的其他部分,那么请丢弃你不喜欢的部分。如果需要,你可以在 Emacs 中使用 Org 模式,或者你可以将其用作日历标记。你可以将手机设置为在一天结束时从计算机上拉取 Git 数据,而不是从互联网上的服务器上,或者你可以将计算机配置为在手机插入时同步日历,或者你可以每天管理它,就像你把你工作日所需的所有东西都装到你的手机上一样。这取决于你,而这是关于 Git、Org 模式和开源的最重要的事情。


via: https://opensource.com/article/19/4/calendar-git

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

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

计算机辅助设计 (CAD) 是很多工程流程的必不可少的部分。CAD 用于建筑、汽车零部件设计、航天飞机研究、航空、桥梁施工、室内设计,甚至服装和珠宝设计等专业领域。

在 Linux 上并不原生支持一些专业级 CAD 软件,如 SolidWorks 和 Autodesk AutoCAD。因此,今天,我们将看看排名靠前的 Linux 上可用的 CAD 软件。预知详情,请看下文。

Linux 可用的最好的 CAD 软件

CAD Software for Linux

在我们查看这份 Linux 的 CAD 软件列表前,你应该记住一件事,在这里不是所有的应用程序都是开源软件。我们也将包含一些非自由和开源软件的 CAD 软件来帮助普通的 Linux 用户。

我们为基于 Ubuntu 的 Linux 发行版提供了安装操作指南。对于其它发行版,你可以检查相应的网站来了解安装程序步骤。

该列表没有任何特殊顺序。在第一顺位的 CAD 应用程序不能认为比在第三顺位的好,以此类推。

1、FreeCAD

对于 3D 建模,FreeCAD 是一个极好的选择,它是自由 (免费和自由) 和开源软件。FreeCAD 坚持以构建机械工程和产品设计为目标。FreeCAD 是多平台的,可用于 Windows、Mac OS X+ 以及 Linux。

freecad

尽管 FreeCAD 已经是很多 Linux 用户的选择,应该注意到,FreeCAD 仍然是 0.17 版本,因此,不适用于重要的部署。但是最近开发加速了。

FreeCAD 并不专注于 direct-2D 绘图和真实形状的动画,但是它对机械工程相关的设计极好。FreeCAD 的 0.15 版本在 Ubuntu 存储库中可用。你可以通过运行下面的命令安装。

sudo apt install freecad

为获取新的每日构建(目前 0.17),打开一个终端(ctrl+alt+t),并逐个运行下面的命令。

sudo add-apt-repository ppa:freecad-maintainers/freecad-daily
sudo apt update
sudo apt install freecad-daily

2、LibreCAD

LibreCAD 是一个自由开源的、2D CAD 解决方案。一般来说,CAD 是一个资源密集型任务,如果你有一个相当普通的硬件,那么我建议你使用 LibreCAD ,因为它在资源使用方面真的轻量化。LibreCAD 是几何图形结构方面的一个极好的候选者。

librecad

作为一个 2D 工具,LibreCAD 是好的,但是它不能在 3D 模型和渲染上工作。它有时可能不稳定,但是,它有一个可靠的自动保存,它不会让你的工作浪费。

你可以通过运行下面的命令安装 LibreCAD。

sudo apt install librecad

3、OpenSCAD

OpenSCAD 是一个自由的 3D CAD 软件。OpenSCAD 非常轻量和灵活。OpenSCAD 不是交互式的。你需要‘编程’模型,OpenSCAD 来解释这些代码来渲染一个可视化模型。在某种意义上说,它是一个编译器。你不能直接绘制模型,而是描述模型。

openscad

OpenSCAD 是这个列表上最复杂的工具,但是,一旦你了解它,它将提供一个令人愉快的工作经历。

你可以使用下面的命令来安装 OpenSCAD。

sudo apt-get install openscad

4、BRL-CAD

BRL-CAD 是最老的 CAD 工具之一。它也深受 Linux/UNIX 用户喜爱,因为它与模块化和自由的 *nix 哲学相一致。

BRL-CAD rendering by Sean

BRL-CAD 始于 1979 年,并且,它仍然在积极开发。现在,BRL-CAD 不是 AutoCAD,但是对于像热穿透和弹道穿透等等的运输研究仍然是一个极好的选择。BRL-CAD 构成 CSG 的基础,而不是边界表示。在选择 BRL-CAD 时,你可能需要记住这一点。你可以从它的官方网站下载 BRL-CAD 。

5、DraftSight (非开源)

如果你习惯在 AutoCAD 上作业。那么,DraftSight 将是完美的替代。

DraftSight 是一个在 Linux 上可用的极好的 CAD 工具。它有相当类似于 AutoCAD 的工作流,这使得迁移更容易。它甚至提供一种类似的外观和感觉。DrafSight 也兼容 AutoCAD 的 .dwg 文件格式。 但是,DrafSight 是一个 2D CAD 软件。截至当前,它不支持 3D CAD 。

draftsight

尽管 DrafSight 是一款起价 149 美元的商业软件。在 DraftSight 网站上可获得一个免费版本。你可以下载 .deb 软件包,并在基于 Ubuntu 的发行版上安装它。为了开始使用 DraftSight ,你需要使用你的电子邮件 ID 来注册你的免费版本。

荣誉提名

  • 随着云计算技术的巨大发展,像 OnShape 的云 CAD 解决方案已经变得日渐流行。
  • SolveSpace 是另一个值得一提的开源软件项目。它支持 3D 模型。
  • 西门子 NX 是一个在 Windows、Mac OS 及 Linux 上可用的工业级 CAD 解决方案,但是它贵得离谱,所以,在这个列表中被忽略。
  • 接下来,你有 LeoCAD,它是一个 CAD 软件,在软件中你使用乐高积木来构建东西。你使用这些信息做些什么取决于你。

我对 Linux 上的 CAD 的看法

尽管在 Linux 上游戏变得流行,我总是告诉我的铁杆游戏朋友坚持使用 Windows。类似地,如果你是一名在你是课程中使用 CAD 的工科学生,我建议你使用学校规定的软件 (AutoCAD、SolidEdge、Catia),这些软件通常只在 Windows 上运行。

对于高级专业人士来说,当我们讨论行业标准时,这些工具根本达不到标准。

对于想在 WINE 中运行 AutoCAD 的那些人来说,尽管一些较旧版本的 AutoCAD 可以安装在 WINE 上,它们根本不执行工作,小故障和崩溃严重损害这些体验。

话虽如此,我高度尊重上述列表中软件的开发者的工作。他们丰富了 FOSS 世界。很高兴看到像 FreeCAD 一样的软件在近些年中加速开发速度。

好了,今天到此为止。使用下面的评论区与我们分享你的想法,不用忘记分享这篇文章。谢谢。


via: https://itsfoss.com/cad-software-linux/

作者:Aquil Roshan 选题:lujun9972 译者:robsean 校对:wxy

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