2019年3月

使用自托管的开源字体来定制你的网页。

字体对许多计算机用户来说可能都是很神秘的东西。举个例子,你在制作好一张很酷的传单之后,你需要将它送到某个地方去打印,结果发现,你设计的所有字体都变成了 Arial,这多半是因为打印店没用安装你设计用到的那些字体。不过,我们仍有很多方法来避免这种情况:你可以将这些使用特定字体的单词转换为路径,你也可以将它封装为 PDF,或是把开源字体封装到你的设计文件中,或者至少列出所需字体。不过,我们总会忘记一些事情,所以这仍是一个问题。

Web 上也有类似的问题。如果你对 CSS 有所了解,你可能会见过这种声明:

h1 { font-family: "Times New Roman", Times, serif; }

这是设计师正在尝试定义网站使用要用到的特定字体,如果用户没有安装 Times New Roman 这个字体,便会回落到另一个字体;如果用户也没有安装 Times 这个字体,便再次回落。它比使用图片而不是文本更好一些,但是在没有字体托管的情况下,这仍是一种棘手且不雅观的方法。不过,在早期的互联网时代,我们不得不这样做。

在线字体

在线字体的登场,把字体管理从客户端搬上了服务端。如今网页上的字体通常由服务器为客户端渲染,而不是要求浏览器从用户的系统中查找字体。谷歌和其它供应商托管了许多开源字体,网站设计师们可以很轻松的用 CSS 来引用它们。

不过,问题是,引用这些字体并不是不花费任何代价的。虽然引用它们免费,但是像谷歌这样的巨头喜欢跟踪那些引用它们资源的网站,其中就包括了字体资源。如果你不想你的网站帮谷歌记录每个人的活动,你可以自己托管在线字体。别觉得这很难,它其实是很简单的,大概流程就是上传字体到你的主机,再使用一个简单的 CSS 便可完成。这样做还有个好处,你的网站能更快地加载,因为它会在加载每个页面的时候进行更少的外部调用。

自托管在线字体

首先,你需要一个开源字体。如果你没有了解过那些令人费解的软件协议,你可能会感到很疑惑,特别是很多字体看起来都是免费的。我们中应该很少有人有字体付费意识,但是他们却在电脑上安装了一些高价的字体。不过,由于授权协议,它使得你的电脑也许带着一些 法律上不允许复制和再分发 的字体。像 Arial、Verdana、Calibri、Georgia、Impact、Lucida 和 Lucida Grande、Times 和 Times New Roman、Trebuchet、Geneva 以及其它的很多字体都是被微软、苹果和 Adobe 这种大公司所拥有的。如果你购买了一台预装了 Windows 或 macOS 的电脑,你就获得了使用这些字体的权利,但是你并没有拥有那些字体,也没有被许可上传它们至服务器(除非额外说明)。

幸运的事,开源热潮在很久以前就席卷了字体界。然后就有了许多优秀的开源字体的合集和项目,比如 The League of Moveable TypeFont Library 以及 Omnibus Type,甚至还有一些来自 GoogleAdobe 的字体。

常见的字体格式有 TTF、OTF、WOFF、EOT 等。因为 Sorts Mill Goudy 发行过 WOFF Web Open Font Format (互联网开放字体格式,Mozilla 参与了部分开发)版本,所以下文中我会用它来做例子。当然,其它字体的方法也是一样的。

假设你想在你的网站上使用 Sorts Mill Goudy 这个字体:

1、将字体文件 GoudyStM-webfont.woff 上传至你的服务器:

scp GoudyStM-webfont.woff [email protected]:~/www/fonts/

你的主机可能带有像 cPanel 这样的图形化工具,通过它们上传也是一样的。

2、在你网站的 CSS 文件中,添加 @font-face 语句,添加后应该和这个差不多:

@font-face { 
  font-family: "titlefont";
  src: url("../fonts/GoudyStM-webfont.woff"); 
}

font-family 的值是你来决定的。这是一个易于理解的名字,它用于放在使用字体名的地方。我在这里使用 “titlefont” 作为例子,是因为我希望它被用来显示标题字体。你也可以使用 “officialfont” 和 “myfont” 这样的名字。

src 值是你字体文件的路径。这是你服务器上字体的路径。在这里,我用 fonts 目录来作为示例,它和 css 在一个文件夹里。你服务器的文件结构可能和我的不一样,所以你需要调整一下这个路径。记住一点,一个点意味着工作目录,两个点则代表父目录

3、现在,你已经定义了字体的名字和目录,你可以在任何指定的 CSS 类或 ID 来调用它了。举个例子,如果你希望以 Sorts Mill Goudy 字体来渲染 <h1>,只需要在 CSS 规则中加入你自己的字体名称:

h1 { font-family: "titlefont", serif; }

现在,你已经成功地托管并使用你自己的字体了。

 title=


via: https://opensource.com/article/19/3/webfonts

作者:Seth Kenlon (Red Hat, Community Moderator) 选题:lujun9972 译者:zhs852 校对:wxy

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

读者们推荐了超过一打的他们喜欢的数据保护解决方案。

最近,我发起了一个 投票,让读者投票选出他们最喜欢的开源备份解决方案。在我们的 版主社区 上,我们提供了六个推荐的解决方案 —— Cronopete、Deja Dup、Rclone、Rdiff-backup、Restic、和 Rsync,而参与的读者也在评论区分享了一些其它的选择。并且读者提供的这 13 个其它的解决方案,(到目前为止)我们要么是没有想到,要么是没有听说过。

到目前为止,最受欢迎的推荐是 BorgBackup。它是一个带有压缩和加密特性以用具有数据去重功能的备份解决方案。它基于 BSD 许可证,支持 Linux、MacOS 和 BSD。

第二个是 UrBackup,它可以做镜像和文件的完整和增量备份;你可以保存整个分区或单个目录。它有 Windows、Linux、和 MacOS 客户端,并且采用 GNU Affero 公共许可证。

第三个是 LuckyBackup;根据其网站介绍,“它是一个易于使用、快速(只传输变化部分,而不是全部数据)、安全(在做任何数据操作之前,先检查所有需要备份的目录,以确保数据安全)、可靠和完全可定制的备份解决方案。它在 GPL 许可证下发行。

Casync 是一个可寻址内容的同步解决方案 —— 它设计用于备份、同步、存储和检索大文件系统的多个相关版本。它使用 GNU Lesser 公共许可证。

Syncthing 是用于在两台计算机之间同步文件。它基于 Mozilla 公共许可证使用,根据其网站介绍,它是安全和私密的。它可以工作于 MacOS、Windows、Linux、FreeBSD、Solaris 和 OpenBSD。

Duplicati 是一个可工作于 Windows、MacOS 和 Linux 上的、并且支持多种标准协议(比如 FTP、SSH、WebDAV 和云服务)、免费的备份解决方案。它的特性是强大的加密功能,并且它使用 GPL 许可证。

Dirvish 是一个基于磁盘的虚拟镜像备份系统,它使用 OSL-3.0 许可证。它要求必须安装有 Rsync、Perl5、SSH。

Bacula 的网站上介绍说:”它是允许系统管理员去管理备份、恢复、和跨网络的不同种类计算机上的多种数据的一套计算机程序“,它支持在 Linux、FreeBSD、Windows、MacOS、OpenBSD 和 Solaris 上运行,并且它的大部分源代码都是基于 AGPLv3 许可证的。

BackupPC 的网站上介绍说:”它是一个高性能的、企业级的、可以备份 Linux、Windows 和 MacOS 系统的 PC 和笔记本电脑上的数据到服务器磁盘上的备份解决方案“。它是基于 GPLv3 许可证的。

Amanda 是一个使用 C 和 Perl 写的备份系统,它允许系统管理员去备份整个网络中的客户端到一台服务器上的磁带、磁盘或基于云的系统。它是由马里兰大学于 1991 年开发并拥有版权,并且它有一个 BSD 式的许可证。

Back in Time 是一个为 Linux 设计的简单的备份实用程序。它提供了命令行和图形用户界面,它们都是用 Python 写的。去执行一个备份,只需要指定存储快照的位置、需要备份的文件夹,和备份频率即可。它使用的是 GPLv2 许可证。

Timeshift 是一个 Linux 上的备份实用程序,它类似于 Windows 上的系统恢复和 MacOS 上的时间胶囊。它的 GitHub 仓库上介绍说:“Timeshift 通过定期递增的文件系统快照来保护你的系统。这些快照可以在日后用于数据恢复,以撤销某些对文件系统的修改。”

Kup 是一个能够帮助用户备份它们的文件到 USB 驱动器上的备份解决方案,但它也可以用于执行网络备份。它的 GitHub 仓库上介绍说:”当插入你的外部硬盘时,Kup 将自动启动并复制你的最新的修改。“

感谢大家在我们的投票中分享你们喜爱的开源备份解决方案!如果还有其它的、没有提到的开源备份解决方案,请在下面的评论区分享它们。


via: https://opensource.com/article/19/3/backup-solutions

作者:Don Watkins 选题:lujun9972 译者:qhwdw 校对:wxy

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

以下是开源世界没有做到的一些工具。

每年年初似乎都有疯狂的冲动想提高工作效率。新年的决心,渴望开启新的一年,当然,“抛弃旧的,拥抱新的”的态度促成了这一切。通常这时的建议严重偏向闭源和专有软件,但事实上并不用这样。

保持高效一部分是接受失败。我是 Howard Tayler 的第 70 条座右铭的支持者:“失败不是一种选择,它是一定的。可以选择的是是否让失败成为你做的最后一件事。”在这个系列中我想谈的很多事情都没有找到好的答案。

关于我的 19 个新的(或对你而言新的)帮助你在 2019 年更高效的工具的最终版,我想到了一些我想要,但是有没有找到的。我希望读者你能够帮我找到下面这些项目的好的方案。如果你发现了,请在下面的留言中分享。

日历

如果开源世界有一件事缺乏,那就是日历。我尝试过的日历程序和电子邮件程序的数量一样多。共享日历基本上有三个很好的选择:EvolutionThunderbird 中的 Lightning 附加组件KOrganizer。我尝试过的所有其他应用 (包括 OrageOsmo 以及几乎所有 Org 模式附加组件) 似乎只能可靠地支持对远程日历的只读访问。如果共享日历使用 Google 日历Microsoft Exchange 作为服务器,那么前三个是唯一易于配置的选择(即便如此,通常还需要其他附加组件)。

Linux 内核的系统

我喜欢 Chrome OS 的简单性和轻量需求。我有几款 Chromebook,包括谷歌的最新型号。我发现它不会分散注意力、重量轻、易于使用。通过添加 Android 应用和 Linux 容器,几乎可以在任何地方轻松高效工作。

我想把它安装到我一些闲置的笔记本上,但除非我对 Chromium OS 进行全面编译,否则很难有相同的体验。像 Bliss OSPhoenix OSAndroid-x86 这样的桌面 Android 项目快要完成了,我正在关注它们的未来。

客户服务

对于大大小小的公司来说,客户服务是一件大事。现在,随着近来对 DevOps 的关注,有必要使用工具来弥补差距。我工作的几乎每家公司都使用 JiraGitHubGitLab 来报告代码问题,但这些工具都不是很擅长于客户支持工单(除非付出大量的工作)。虽然围绕客户支持工单和问题设计了许多应用,但大多数(如果不是全部)应用都是与其他系统不兼容的孤岛(同样除非付出了大量的工作)。

我的愿望是有一个开源解决方案,它能让客户、支持人员和开发人员一起工作,而无需笨重的代码将多个系统粘合在一起。

轮到你了

我相信这个系列中我错过了很多选择。我经常尝试新的应用,希望它们能帮助我提高工作效率。我鼓励每个人都这样做,因为当谈到使用开源工具提高工作效率时,总会有新的选择。如果你有喜欢的开源生产力应用没有进入本系列,请务必在评论中分享它们。


via: https://opensource.com/article/19/1/productivity-tool-wish-list

作者:Kevin Sonney 选题:lujun9972 译者:geekpi 校对:wxy

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

这是我们的《树莓派入门指南》系列的第五篇文章,它探索了帮助孩子们学习编程的一些资源。

无数的学校、图书馆和家庭已经证明,树莓派是让孩子们接触编程的最好方式。在本系列的前四篇文章中,你已经学习了如何去购买安装、和配置一个树莓派。在第五篇文章中,我们将分享一些帮助孩子们使用树莓派编程的入门级资源。

Scratch

Scratch 是让孩子们了解编程基本概念(比如变量、布尔逻辑、循环等等)的一个很好的方式。你在 Raspbian 中就可以找到它,并且在互联网上你可以找到非常多的有关 Scratch 的文章和教程,包括在 Opensource.com 上的 今天的 Scratch 是不是像“上世纪八十年代教孩子学 LOGO 编程”?

Code.org

Code.org 是另一个非常好的教孩子学编程的在线资源。这个组织的使命是让更多的人通过课程、教程和流行的一小时学编程来接触编程。许多学校(包括我五年级的儿子就读的学校)都使用它,让更多的孩子学习编程和计算机科学的概念。

阅读

读书是学习编程的另一个很好的方式。学习如何编程并不需要你会说英语,当然,如果你会英语的话,学习起来将更容易,因为大多数的编程语言都是使用英文关键字去描述命令的。如果你的英语很好,能够轻松地阅读接下来的这个树莓派系列文章,那么你就完全有能力去阅读有关编程的书籍、论坛和其它的出版物。我推荐一本由 Jason Biggs 写的书: 儿童学 Python:非常有趣的 Python 编程入门

Raspberry Jam

另一个让你的孩子进入编程世界的好方法是在聚会中让他与其他人互动。树莓派基金会赞助了一个称为 Raspberry Jams 的活动,让世界各地的孩子和成人共同参与在树莓派上学习。如果你所在的地区没有 Raspberry Jam,基金会有一个指南和其它资源帮你启动一个 Raspberry Jam。

游戏

最后一个(是本文的最后一个,当然还有其它的方式),Minecraft 有一个树莓派版本。 我的世界 Minecraft 已经从一个多玩家的、类似于”数字乐高“这样的游戏,成长为一个任何人都能使用 Python 和其它编程语言去构建我自己的虚拟世界。更多内容查看 Minecraft Pi 入门Minecraft 一小时入门教程

你还有教孩子用树莓派学编程的珍藏资源吗?请在下面的评论区共享出来吧。


via: https://opensource.com/article/19/3/teach-kids-program-raspberry-pi

作者:Anderson Silva 选题:lujun9972 译者:qhwdw 校对:wxy

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

Logoly.Pro 是一个在线的 PornHub 风格 Logo 生成工具,可以帮助你快速生成类似 PornHub 风格的 Logo。

目前项目已经上线:https://logoly.pro/代码也已开源:https://github.com/bestony/logoly

欢迎各位前来试用 && 求 Star !


昨晚,我花了 5 个小时,在肝一个项目,如今,让它成功上线,我便向大家介绍一下它。

突发的灵感

我自己平时经常要做一些业余项目,在做业余项目的时候,就涉及到了要做 Logo ,但是作为一个没有设计感的程序员,在做 Logo 时总是会做出一些很丑的 Logo ,于是痛定思痛,想想有没有什么有用的工具可以帮助我生成好看的 Logo。对于我来说,也不需要太过复杂,能够满足我自己的要求就行。

那么这就要求这个 Logo 有一些特点

  1. 设计简单:很多带吉祥物的 Logo 就不适合我了,因为要去准备吉祥物的图片。
  2. 辨识度高:单纯的简单并没有太多的用处, Logo 需要让用户能够记住

经过一番筛选,PornHub 的 Logo 进入到我的视线。

设计产品

在开发之前,我先进行了产品方面的考虑,看看我需要做哪些功能,哪些不做,最终得到了这样一个清单:

要做的项目

  1. 项目使用 Vue 开发,因为可以快速上线
  2. 项目使用 Netlify 部署,这样就可以使用自己的域名,并使用 SSL,速度还要比 Github Pages 快一些。
  3. 项目应当支持自定义文字,这个是最基础的功能需求,必须要做的。
  4. 项目应当支持自定义颜色,毕竟可能有其他的方面,需要类似风格,但是不同的颜色的 Logo
  5. 项目应当支持自定义文字大小,毕竟我导出的是 PNG,如果不能自定义大小,大家可能会很困扰。
  6. 项目应当加入 Google Analytics,加入统计,就知道有多少人用过我的项目了,也是一种成就感。
  7. 项目应当加入我的个人信息,用来给我自己推广,顺便刷一波脸。
  8. 社会化分享,应当有个方便的分享方法,这样才能够更好的帮助项目在前期成长。

不做的项目

  1. 自定义字体:原汁原味的 PH 风格,怎能瞎改字体呢?
  2. 导出 JPG: 有了透明背景的 PNG,不透明的 JPG 的需求就没那么大了。

后续迭代实现的

  1. 其他简单的 Logo:比如 Youtube.

设计布局

在完成了产品的功能,我又进行了布局的设计,这次我用的是 Adobe XD,最近很喜欢用这个工具来设计产品的界面,非常的方便。最终设计完成的版本如下:

设计完成后,就要开始准备开始编码了。

找库

一开始,我考虑使用一些 UI 框架,不过,由于一开始没有引入 UI 框架,快写完了才发现基本不需要组件库,干脆将错就错,这样用了。

在完成了基本的界面后,就是涉及到的一些库的使用了,这里要感谢前端生态圈的繁荣,我从 PicasCarbon 的源码里找到了我想要用的库。

  • dom-to-image:将 Dom 元素转换成为图片,以备下载。
  • file-save:在 Vue 组件里调用系统的下载接口,下载图片

其他我用到的库还有

  • v-tooltips:用户提醒,之前用的 Vue-Tour,但是跳跃感太强了,所以弃用了。
  • vue-analytics:Vue 下的 Google Analytics 工具,可以很方便的调用 GA 进行统计。

上线

在完成了开发后,将代码上传到 Github,准备部署。

在前面提到,我考虑用 Netlify 进行部署,这里非常方便,在 Netlify 上直接创建项目,选择你的项目,然后填入命令即可。

并配置一下域名,将自己的域名设置为主域名:

稍等一会,就会自动为你的域名签注 Let’s Encrypt 的证书。

最后

关于这个项目的故事,我已经说完了所有我能想到的了,接下来,就是你的提问时间了,欢迎你针对项目对我提问,无论是产品、设计、编码,都可以~

希望大家能够给这个项目一个 Star: https://github.com/bestony/logoly

昨天我们已经在我们的网站中写过如何在 Linux 中修改主机名的文章。今天,我们将向你展示使用不同的方法来修改主机名。你可以从中选取最适合你的方法。

使用 systemd 的系统自带一个名为 hostnamectl 的好用工具,它可以使我们能够轻易地管理系统的主机名。

当你使用这个原生命令时,它可以立刻改变主机名而无需重启来生效。

但假如你通过手动修改某个配置文件来更改主机名,那么就可能需要经过重启来生效。

在这篇文章中,我们将展示在使用 systemd 的系统中改变主机名的 4 种方法。

hostnamectl 命令允许在 Linux 中设置三类主机名,它们的细节如下:

  • 静态: 这是静态主机名,由系统管理员添加。
  • 瞬时/动态: 这个由 DHCP 或者 DNS 服务器在运行时赋予。
  • 易读形式: 它可以由系统管理员赋予。这个是自由形式的主机名,以一种易读形式来表示服务器,例如 “JBOSS UAT Server” 这样的名字。

这些都可以使用下面 4 种方法来设置。

  • hostnamectl 命令:控制系统主机名。
  • nmcli 命令:是一个控制 NetworkManager 的命令行工具。
  • nmtui 命令:是一个控制 NetworkManager 的文本用户界面。
  • /etc/hostname 文件:这个文件中包含系统的静态主机名。

方法 1:在 Linux 中使用 hostnamectl 来改变主机名

hostnamectl 可被用来查询和改变系统的主机名,以及相关设定。只需运行 hostnamectl 便可以查看系统的主机名了。

$ hostnamectl

或者使用下面的命令:

$ hostnamectl status
   Static hostname: daygeek-Y700
         Icon name: computer-laptop
           Chassis: laptop
        Machine ID: 31bdeb7b83230a2025d43547368d75bc
           Boot ID: 267f264c448f000ea5aed47263c6de7f
  Operating System: Manjaro Linux
            Kernel: Linux 4.19.20-1-MANJARO
      Architecture: x86-64

假如你想改变主机名,可以使用下面的命令格式:

语法格式:

$ hostnamectl set-hostname [YOUR NEW HOSTNAME]

使用下面的命令来使用 hostnamectl 更改主机名。在这个例子中,我将把主机名从 daygeek-Y700 改为 magi-laptop

$ hostnamectl set-hostname magi-laptop

你可以使用下面的命令来查看更新后的主机名。

$ hostnamectl
   Static hostname: magi-laptop
         Icon name: computer-laptop
           Chassis: laptop
        Machine ID: 31bdeb7b83230a2025d43547368d75bc
           Boot ID: 267f264c448f000ea5aed47263c6de7f
  Operating System: Manjaro Linux
            Kernel: Linux 4.19.20-1-MANJARO
      Architecture: x86-64

方法 2:在 Linux 中使用 nmcli 命令来更改主机名

nmcli 是一个命令行工具,旨在控制 NetworkManager 并报告网络状态。

nmcli 被用来创建、展示、编辑、删除、激活和注销网络连接,同时还可以用来控制和展示网络设备的状态。另外,它也允许我们更改主机名。

使用下面的命令来利用 nmcli 查看当前的主机名。

$ nmcli general hostname
daygeek-Y700

语法格式:

$ nmcli general hostname [YOUR NEW HOSTNAME]

使用下面的命令来借助 nmcli 命令可以更改主机名。在这个例子中,我将把主机名从 daygeek-Y700 变成 magi-laptop

$ nmcli general hostname magi-laptop

它可以在不重启下设备的情况下生效,但为了安全目的,只需要重启 systemd-hostnamed 服务来使得更改生效。

$ sudo systemctl restart systemd-hostnamed

再次运行相同的 nmcli 命令来检查更改后的主机名。

$ nmcli general hostname
magi-laptop

方法 3:在 Linux 中使用 nmtui 来更改主机名

nmtui 是一个基于 curses 库的 TUI 应用,被用来和 NetworkManager 交互。当启动 nmtui 后,如果没有指定 nmtui 的第一个命令行参数,它将提醒用户选择执行某项活动。

在终端中运行下面的命令来开启文本用户界面。

$ nmtui

使用向下箭头按键来选择 “Set system hostname” 这个选项,然后敲击回车键。

下面的截图展示的是原来的主机名。

我们需要做的就是删除原来的主机名,再输入新的主机名,然后选中 “OK” 敲击回车确认就可以了。

然后它将在屏幕中向你展示更新后的主机名,再次选中 “OK” 敲击回车确认就完成更改了。

最后,选中 “Quit” 按钮来从 nmtui 终端界面离开。

它可以在不重启设备的情况下生效,但为了安全目的,需要重启 systemd-hostnamed 服务来使得更改生效。

$ sudo systemctl restart systemd-hostnamed

你可以运行下面的命令来查看更新后的主机名。

$ hostnamectl
   Static hostname: daygeek-Y700
         Icon name: computer-laptop
           Chassis: laptop
        Machine ID: 31bdeb7b83230a2025d43547368d75bc
           Boot ID: 267f264c448f000ea5aed47263c6de7f
  Operating System: Manjaro Linux
            Kernel: Linux 4.19.20-1-MANJARO
      Architecture: x86-64

方法 4:在 Linux 中使用 /etc/hostname 来更改主机名

除了上面的方法外,我们还可以通过修改 /etc/hostname 文件来达到修改主机名的目的。但这个方法需要服务器重启才能生效。

使用下面的命令来检查 /etc/hostname 文件以查看当前的主机名:

$ cat /etc/hostname
daygeek-Y700

要改变主机名,只需覆写这个文件就行了,因为这个文件只包含主机名这一项内容。

$ sudo echo "magi-daygeek" > /etc/hostname

$ cat /etc/hostname
magi-daygeek

然后使用下面的命令重启系统:

$ sudo init 6

最后查看 /etc/hostname 文件的内容来验证主机名是否被更改了。

$ cat /etc/hostname
magi-daygeek

via: https://www.2daygeek.com/four-methods-to-change-the-hostname-in-linux/

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

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