2020年2月

Joplin 是一个开源笔记记录和待办应用。你可以将笔记组织到笔记本中并标记它们。Joplin 还提供网络剪贴板来保存来自互联网的文章。

Joplin:开源笔记管理器

如果你喜欢 Evernote,那么你不会不太适应这个开源软件 Joplin

Joplin 是一个优秀的开源笔记应用,拥有丰富的功能。你可以记笔记、记录待办事项并且通过和 Dropbox 和 NextCloud 等云服务链接来跨设备同步笔记。同步过程通过端到端加密保护。

Joplin 还有一个 Web 剪贴板,能让你将网页另存为笔记。这个网络剪贴板可用于 Firefox 和 Chrome/Chromium 浏览器。

Joplin 可以导入 enex 格式的 Evernote 文件,这让从 Evernote 切换变得容易。

因为数据自行保存,所以你可以用 Joplin 格式或者原始格式导出所有文件。

Joplin 的功能

以下是 Joplin 的所有功能列表:

  • 将笔记保存到笔记本和子笔记本中,以便更好地组织
  • 创建待办事项清单
  • 可以标记和搜索笔记
  • 离线优先,因此即使没有互联网连接,所有数据始终在设备上可用
  • Markdown 笔记支持图片、数学符号和复选框
  • 支持附件
  • 可在桌面、移动设备和终端(CLI)使用
  • 可在 Firefox 和 Chrome 使用网页剪切板
  • 端到端加密
  • 保留笔记历史
  • 根据名称、时间等对笔记进行排序
  • 可与 Nextcloud、Dropbox、WebDAV 和 OneDrive 等各种云服务同步
  • 从 Evernote 导入文件
  • 导出 JEX 文件(Joplin 导出格式)和原始文件
  • 支持笔记、待办事项、标签和笔记本
  • 任意跳转功能
  • 支持移动设备和桌面应用通知
  • 地理位置支持
  • 支持多种语言
  • 外部编辑器支持:在 Joplin 中一键用你最喜欢的编辑器打开笔记

在 Linux 和其它平台上安装 Joplin

Joplin 是一个跨平台应用,可用于 Linux、macOS 和 Windows。在移动设备上,你可以获取 APK 文件将其安装在 Android 和基于 Android 的 ROM 上。你也可以从谷歌 Play 商店下载

在 Linux 中,你可以获取 Joplin 的 AppImage 文件,并作为可执行文件运行。你需要为下载的文件授予执行权限。

体验 Joplin

Joplin 中的笔记使用 Markdown,但你不需要了解它。编辑器的顶部面板能让你以图形方式选择项目符号、标题、图像、链接等。

虽然 Joplin 提供了许多有趣的功能,但你需要自己去尝试。例如,默认情况下未启用 Web 剪切板,我需要发现如何打开它。

你需要从桌面应用启用剪切板。在顶部菜单中,进入 “Tools->Options”。你可以在此处找到 Web 剪切板选项:

Enable Web Clipper from the desktop application first

它的 Web 剪切板不如 Evernote 的 Web 剪切板聪明,后者可以以图形方式剪辑网页文章的一部分。但是,也足够了。

这是一个在活跃开发中的开源软件,我希望它随着时间的推移得到更多的改进。

总结

如果你正在寻找一个不错的拥有 Web 剪切板的笔记应用,你可以试试 Joplin。如果你喜欢它,并将继续使用,尝试通过捐赠或改进代码和文档来帮助 Joplin 开发。我以 FOSS 的名义捐赠了 25 欧。

如果你曾经使用过 Joplin,或者仍在使用它,你对此的体验如何?如果你用的是其他笔记应用,你会切换到 Joplin 么?欢迎分享你的观点。


via: https://itsfoss.com/joplin/

作者:Abhishek Prakash 选题:lujun9972 译者:geekpi 校对:wxy

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

使用 GnuCash 管理你的个人或小型企业会计。

在过去的四年里,我一直在用 GnuCash 来管理我的个人财务,我对此非常满意。这个开源(GPL v3)项目自 1998 年首次发布以来一直成长和改进,2019 年 12 月发布的最新版本 3.8 增加了许多改进和 bug 修复。

GnuCash 可在 Windows、MacOS 和 Linux 中使用。它实现了一个复式记账系统,并可以导入各种流行的开放和专有文件格式,包括 QIF、QFX、OFX、CSV 等。这使得从其他财务应用转换(包括 Quicken)而来很容易,它是为取代这些而出现的。

借助 GnuCash,你可以跟踪个人财务状况以及小型企业会计和开票。它没有集成的工资系统。根据文档,你可以在 GnuCash 中跟踪工资支出,但你必须在该软件外计算税金和扣减。

安装

要在 Linux 上安装 GnuCash:

  • 在 Red Hat、CentOS 或 Fedora 中: $ sudo dnf install gnucash
  • 在 Debian、Ubuntu 或 Pop\_OS 中: $ sudo apt install gnucash

你也可以从 Flathub 安装它,我在运行 Elementary OS 的笔记本上使用它。(本文中的所有截图都来自此次安装)。

设置

安装并启动程序后,你将看到一个欢迎屏幕,该页面提供了创建新账户集、导入 QIF 文件或打开新用户教程的选项。

 title=

个人账户

如果你选择第一个选项(正如我所做的那样),GnuCash 会打开一个页面帮你起步。它收集初始数据并设置账户首选项,例如账户类型和名称、商业数据(例如,税号)和首选货币。

 title=

GnuCash 支持个人银行账户、商业账户、汽车贷款、CD 和货币市场账户、儿童保育账户等。

例如,首先创建一个简单的支票簿。你可以输入账户的初始余额或以多种格式导入现有账户数据。

 title=

开票

GnuCash 还支持小型企业功能,包括客户、供应商和开票。要创建发票,请在 “Business -> Invoice” 中输入数据。

 title=

然后,你可以将发票打印在纸上,也可以将其导出到 PDF 并通过电子邮件发送给你的客户。

 title=

获取帮助

如果你有任何疑问,它有一个优秀的帮助,你可在菜单栏的右侧获取指导。

 title=

该项目的网站包含许多有用的信息的链接,例如 GnuCash 功能的概述。GnuCash 还提供了详细的文档,可供下载和离线阅读,它还有一个 wiki,为用户和开发人员提供了有用的信息。

你可以在项目的 GitHub 仓库中找到其他文件和文档。GnuCash 项目由志愿者驱动。如果你想参与,请查看项目的 wiki 上的 Getting involved 部分。


via: https://opensource.com/article/20/2/gnucash

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

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

入狱后,开源编程是如何提供机会的。

不到一年前,我还在圣昆廷州立监狱服刑,我是无期徒刑。

我高三的时候,我抢劫了一个人并向他开了枪。现在,我经过一段时间才意识到并承认自己做错了,这是在经历了陪审团审判并看到我的行为带来的恶果后,我知道需要改变自己,我也确实做到了。尽管我对我的行为表示懊悔,但我毕竟开枪打了一个人,并差点杀了他。做这样的事是有后果的,这是理所当然的。所以在我 18 岁的时候,我被判了终身监禁。

监狱是一个非常可怕的地方;我是不推荐你去的。但是我必须去,所以我去了。我不告诉你具体的细节,但你可以放心,这是一个没有太多动机去改变的地方,许多人在这里养成的坏习惯比他们过去在别处养成的更多。

我是幸运儿之一。当我在服刑的时候,发生了一些不同寻常的事情。我开始想象自己出狱后的的未来,虽然在这之前,我还是已经在那里度过了我整个成年生活。

现在你想想:我是黑人,只受过高中教育。我没有工作经历,如果我离开监狱,在被释放前,我还是一个被定罪的重罪犯。当每个雇主看到我的简历,都不会有“我需要雇用这个人”想法,我认为是正常的。

我不知道我的选择是什么,但我已经下定决心了。我需要做些活下去的事情,并且这和我入狱前的生活一点也不像。

Python 之路

最终,我被关在了圣昆廷州立监狱,我不知道我为何幸运地被关在那里。圣昆廷提供了几个自助和教育编程项目。这些改造机会帮助囚犯使他们拥有在获释后避免再次犯罪的技能。

作为其中一个编程项目的一部分,2017 年我通过圣昆廷媒体项目认识了杰西卡·麦凯拉。杰西卡是编程语言 Python 的爱好者,她开始向我推荐 Python 有多棒,以及它是刚起步的人学习的完美语言。这就是故事变得比小说更精彩的地方。

感谢 @northbaypython@ShaStepter 和我重复 @pycon 的主题演讲,让他们被录制下来。我很荣幸与大家分享:

从监狱到 Pythone: https://t.co/rcumoAgZHm

大规模裁员:如果我们不雇佣被判重罪的人,谁会呢? https://t.co/fENDUFdxfX

pic.Twitter.com/kpjo8d3ul6

—杰西卡·麦凯拉(@jessicamckellar)2019 年 11 月 5 日

杰西卡向我介绍了一些 Python 视频教程,这些教程是她为一家名叫 O’Reilly Media 的公司做的,课程是在线的,如果我能接触到它们,那该有多好呀。不幸的是,在监狱里上网是不可能的。但是,我遇到了一个叫 Tim O’Reilly 的人,他最近刚来到圣昆廷。在他访问之后,Tim 从他的公司 O’Reilly Media 公司向监狱的编程班捐赠了大量内容。最终,我拿到了一款平板电脑,上面有杰西卡的 Python 教程,并学会了如何使用这些 Python 教程进行编码。

真是难以置信。背景和生活与我完全不同的陌生人把这些联系在一起,让我学会了编码。

对 Python 社区的热爱

在这之后,我开始经常和杰西卡见面,她开始告诉我关于开源社区的情况。我了解到,从根本上说,开源社区就是关于伙伴关系和协作的社区。之所以如此有效,是因为没有人被排除在外。

对我来说,一个努力寻找自己定位的人,我所看到的是一种非常基本的爱——通过合作和接受的爱,通过接触的爱,通过包容的爱。我渴望成为其中的一部分。所以我继续学习 Python,不幸的是,我无法获得更多的教程,但是我能够从开源社区收集的大量书面知识中获益。我读一切提到 Python 的东西,从平装本到晦涩难懂的杂志文章,我使用平板电脑来解决我读到的 Python 问题。

我对 Python 和编程的热情不是我的许多同龄人所共有的。除了监狱编程课上的极少数人之外,我认识的其他人都没有提到过编程;一般囚犯都不知道。我认为这是因为有过监禁经历的人无法接触编程,尤其是如果你是有色人种。

监狱外的 Python 生活

然而,在 2018 年 8 月 17 日,我得到了生命中的惊喜。时任州长的杰里·布朗将我 27 年的刑期减刑,在服刑将近 19 年后,我被释放出狱了。

但现实情况是,这也是为什么我认为编程和开源社区如此有价值。我是一名 37 岁的黑人罪犯,没有工作经历,刚刚在监狱服刑 18 年。我有犯罪史,并且现存偏见导致没有多少职业适合我。但是编程是少数例外之一。

现在,监禁后重返社会的人们迫切需要包容,但当谈及工作场所的多样性以及对多样性的需求时,你真的听不到这个群体被提及或包容。

还有什么:

1、背景调查:询问他们在你的公司是如何使用的。

2、初级角色:删除虚假的、不必要的先决条件,这些条件将排除有记录的合格人员。

3、积极拓展:与当地再就业项目合作,创建招聘渠道。

pic.twitter.com/WnzdEUTuxr

—杰西卡·麦凯拉(@jessicamckellar)2019 年 5 月 12 日

因此,我想谦卑地挑战开源社区的所有程序员和成员,让他们围绕包容和多样性展开思考。今天,我自豪地站在你们面前,代表一个大多数人都没有想到的群体——以前被监禁的人。但是我们存在,我们渴望证明我们的价值,最重要的是,我们期待被接受。当我们重返社会时,许多挑战等待着我们,我请求你们允许我们有机会展示我们的价值。欢迎我们,接受我们,最重要的是,包容我们。


via: https://opensource.com/article/20/1/prison-to-python

作者:Shadeed Sha Wallace-Stepter 选题:lujun9972 译者:heguangzhi 校对:wxy

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

在我们的 20 个使用开源提升生产力的系列的第十四篇文章中用 twin 模拟了老式的 DESQview 体验。

去年,我在 19 天里给你介绍了 19 个新(对你而言)的生产力工具。今年,我换了一种方式:使用你在使用或者还没使用的工具,构建一个使你可以在新一年更加高效的环境。

通过 twin 克服“一个屏幕,一个应用程序”的限制

还有人记得 DESQview 吗?我们在 Windows、Linux 和 MacOS 中理所当然地可以在屏幕上同时运行多个程序,而 DESQview 赋予了 DOS 同样的功能。在我运营拨号 BBS 服务的初期,DESQview 是必需的,它使我能够让 BBS 在后台运行,同时在前台进行其他操作。例如,当有人拨打电话时,我可能正在开发新功能或设置新的外部程序而不会影响他们的体验。后来,在我早期做支持工作的时候,我可以同时运行我的工作电子邮件(MHS 上的 DaVinci 电子邮件)、支持单据系统和其他 DOS 程序。这是令人吃惊的!

 title=

从那时起,运行多个控制台应用程序的功能已经发展了很多。但是 tmuxScreen 等应用仍然遵循“一个屏幕,一个应用”的显示方式。好吧,是的,tmux 具有屏幕拆分和窗格,但是不像 DESQview 那样具有将窗口“浮动”在其他窗口上的功能,就我个人而言,我怀念那个功能。

让我们来看看 twin(文本模式窗口环境)。我认为,这个相对年轻的项目是 DESQview 的精神继任者。它支持控制台和图形环境,并具有与会话脱离和重新接驳的功能。设置起来并不是那么容易,但是它可以在大多数现代操作系统上运行。

Twin 是从源代码安装的(现在是这样)。但是首先,你需要安装所需的开发库。库名称将因操作系统而异。 以下示例显示了在我的 Ubuntu 19.10 系统中的情况。一旦安装了依赖库,请从 Git 中检出 twin 源代码,并运行 ./configuremake,它们应自动检测所有内容并构建 twin:

sudo apt install libx11-dev libxpm-dev libncurses-dev zlib1g-dev libgpm-dev
git clone [email protected]:cosmos72/twin.git
cd twin
./configure
make
sudo make install

注意:如果要在 MacOS 或 BSD 上进行编译,则需要在运行 make 之前在文件 include/Tw/autoconf.hinclude/twautoconf.h 中注释掉 #define socklen_t int。这个问题应该在 twin #57 解决了。

 title=

第一次调用 twin 是一个挑战。你需要通过 --hw 参数告诉它正在使用哪种显示。例如,要启动文本模式的 twin,请输入 twin --hw=tty,TERM=linux。这里指定的 TERM 变量替代了你当前 Shell 中终端变量。要启动图形版本,运行 twin --hw=X@$DISPLAY。在 Linux 上,twin 一般都“可以正常工作”,而在 MacOS 上,Twin 基本是只能在终端上使用。

真正的乐趣是可以通过 twattachtwdisplay 命令接驳到正在运行的会话的功能。它们使你可以接驳到其他正在运行的 twin 会话。例如,在 Mac 上,我可以运行以下命令以接驳到演示机器上运行的 twin 会话:

twdisplay [email protected]:0 --hw=tty,TERM=linux

 title=

通过多做一些工作,你还可以将其用作登录外壳,以代替控制台上的 getty)。这需要 gdm 鼠标守护程序、twdm 应用程序(包括)和一些额外的配置。在使用 systemd 的系统上,首先安装并启用 gdm(如果尚未安装),然后使用 systemctl 为控制台(我使用 tty6)创建一个覆盖。这些命令必须以 root 用户身份运行;在 Ubuntu 上,它们看起来像这样:

apt install gdm
systemctl enable gdm
systemctl start gdm
systemctl edit getty@tty6

systemctl edit getty@tty6 命令将打开一个名为 override.conf 的空文件。它可以定义 systemd 服务设置以覆盖 tty6 的默认设置。将内容更新为:

[service]
ExecStart=
ExecStart=-/usr/local/sbin/twdm --hw=tty@/dev/tty6,TERM=linux
StandardInput=tty
StandardOutput=tty

现在,重新加载 systemd 并重新启动 tty6 以获得 twin 登录提示界面:

systemctl daemon-reload
systemctl restart getty@tty6

 title=

这将为登录的用户启动一个 twin 会话。我不建议在多用户系统中使用此会话,但是对于个人桌面来说,这是很酷的。并且,通过使用 twattachtwdisplay,你可以从本地 GUI 或远程桌面访问该会话。

我认为 twin 真是太酷了。它还有一些细节不够完善,但是基本功能都已经有了,并且有一些非常好的文档。另外,它也使我可以在现代操作系统上稍解对 DESQview 式的体验的渴望。我希望随着时间的推移它会有所改进,希望你和我一样喜欢它。


via: https://opensource.com/article/20/1/multiple-consoles-twin

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

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

在我们有关 Git 鲜为人知的用法系列的最后一篇文章中,了解如何使用 Git 跟踪项目中的大型多媒体文件。

Git 是专用于源代码版本控制的工具。因此,Git 很少被用于非纯文本的项目以及行业。然而,异步工作流的优点是十分诱人的,尤其是在一些日益增长的行业中,这种类型的行业把重要的计算和重要的艺术创作结合起来,这包括网页设计、视觉效果、视频游戏、出版、货币设计(是的,这是一个真实的行业)、教育……等等。还有许多行业属于这个类型。

在这个 Git 系列文章中,我们分享了六种鲜为人知的 Git 使用方法。在最后一篇文章中,我们将介绍将 Git 的优点带到管理多媒体文件的软件。

Git 管理多媒体文件的问题

众所周知,Git 用于处理非文本文件不是很好,但是这并不妨碍我们进行尝试。下面是一个使用 Git 来复制照片文件的例子:

$ du -hs
108K .
$ cp ~/photos/dandelion.tif .
$ git add dandelion.tif
$ git commit -m 'added a photo'
[master (root-commit) fa6caa7] two photos
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 dandelion.tif
$ du -hs
1.8M .

目前为止没有什么异常。增加一个 1.8MB 的照片到一个目录下,使得目录变成了 1.8 MB 的大小。所以下一步,我们尝试删除文件。

$ git rm dandelion.tif
$ git commit -m 'deleted a photo'
$ du -hs
828K .

在这里我们可以看到有些问题:删除一个已经被提交的文件,还是会使得存储库的大小扩大到原来的 8 倍(从 108K 到 828K)。我们可以测试多次来得到一个更好的平均值,但是这个简单的演示与我的经验一致。提交非文本文件,在一开始花费空间比较少,但是一个工程活跃地时间越长,人们可能对静态内容修改的会更多,更多的零碎文件会被加和到一起。当一个 Git 存储库变的越来越大,主要的成本往往是速度。拉取和推送的时间,从最初抿一口咖啡的时间到你觉得你可能断网了。

静态内容导致 Git 存储库的体积不断扩大的原因是什么呢?那些通过文本的构成的文件,允许 Git 只拉取那些修改的部分。光栅图以及音乐文件对 Git 文件而言与文本不同,你可以查看一下 .png 和 .wav 文件中的二进制数据。所以,Git 只不过是获取了全部的数据,并且创建了一个新的副本,哪怕是一张图仅仅修改了一个像素。

Git-portal

在实践中,许多多媒体项目不需要或者不想追踪媒体的历史记录。相对于文本或者代码的部分,项目的媒体部分一般有一个不同的生命周期。媒体资源一般按一个方向产生:一张图片从铅笔草稿开始,以数字绘画的形式抵达它的目的地。然后,尽管文本能够回滚到早起的版本,但是艺术制品只会一直向前发展。工程中的媒体很少被绑定到一个特定的版本。例外情况通常是反映数据集的图形,通常是可以用基于文本的格式(如 SVG)完成的表、图形或图表。

所以,在许多同时包含文本(无论是叙事散文还是代码)和媒体的工程中,Git 是一个用于文件管理的,可接受的解决方案,只要有一个在版本控制循环之外的游乐场来给艺术家游玩就行。

 title=

一个启用这个特性的简单方法是 Git-portal,这是一个通过带有 Git 钩子的 Bash 脚本,它可将静态文件从文件夹中移出 Git 的范围,并通过符号链接来取代它们。Git 提交链接文件(有时候称作别名或快捷方式),这种符号链接文件比较小,所以所有的提交都是文本文件和那些代表媒体文件的链接。因为替身文件是符号链接,所以工程还会像预期的运行,因为本地机器会处理他们,转换成“真实的”副本。当用符号链接替换出文件时,Git-portal 维护了项目的结构,因此,如果你认为 Git-portal 不适合你的项目,或者你需要构建项目的一个没有符号链接的版本(比如用于分发),则可以轻松地逆转该过程。

Git-portal 也允许通过 rsync 来远程同步静态资源,所以用户可以设置一个远程存储位置,来做为一个中心的授权源。

Git-portal 对于多媒体的工程是一个理想的解决方案。类似的多媒体工程包括视频游戏、桌面游戏、需要进行大型 3D 模型渲染和纹理的虚拟现实工程、带图以及 .odt 输出的书籍、协作型的博客站点、音乐项目,等等。艺术家在应用程序中以图层(在图形世界中)和曲目(在音乐世界中)的形式执行版本控制并不少见——因此,Git 不会向多媒体项目文件本身添加任何内容。Git 的功能可用于艺术项目的其他部分(例如散文和叙述、项目管理、字幕文件、致谢、营销副本、文档等),而结构化远程备份的功能则由艺术家使用。

安装 Git-portal

Git-portal 的 RPM 安装包位于 https://klaatu.fedorapeople.org/git-portal,可用于下载和安装。

此外,用户可以从 Git-portal 的 Gitlab 主页手动安装。这仅仅是一个 Bash 脚本以及一些 Git 钩子(也是 Bash 脚本),但是需要一个快速的构建过程来让它知道安装的位置。

$ git clone https://gitlab.com/slackermedia/git-portal.git git-portal.clone
$ cd git-portal.clone
$ ./configure
$ make
$ sudo make install

使用 Git-portal

Git-portal 与 Git 一起使用。这意味着,如同 Git 的所有大型文件扩展一样,都需要记住一些额外的步骤。但是,你仅仅需要在处理你的媒体资源的时候使用 Git-portal,所以很容易记住,除非你把大文件都当做文本文件来进行处理(对于 Git 用户很少见)。使用 Git-portal 必须做的一个安装步骤是:

$ mkdir bigproject.git
$ cd !$
$ git init
$ git-portal init

Git-portal 的 init 函数在 Git 存储库中创建了一个 _portal 文件夹并且添加到 .gitignore 文件中。

在平日里使用 Git-portal 和 Git 协同十分平滑。一个较好的例子是基于 MIDI 的音乐项目:音乐工作站产生的项目文件是基于文本的,但是 MIDI 文件是二进制数据:

$ ls -1
_portal
song.1.qtr
song.qtr
song-Track_1-1.mid
song-Track_1-3.mid
song-Track_2-1.mid
$ git add song*qtr
$ git-portal song-Track*mid
$ git add song-Track*mid

如果你查看一下 _portal 文件夹,你会发现那里有最初的 MIDI 文件。这些文件在原本的位置被替换成了指向 _portal 的链接文件,使得音乐工作站像预期一样运行。

$ ls -lG
[...] _portal/
[...] song.1.qtr
[...] song.qtr
[...] song-Track_1-1.mid -> _portal/song-Track_1-1.mid*
[...] song-Track_1-3.mid -> _portal/song-Track_1-3.mid*
[...] song-Track_2-1.mid -> _portal/song-Track_2-1.mid*

与 Git 相同,你也可以添加一个目录下的文件。

$ cp -r ~/synth-presets/yoshimi .
$ git-portal add yoshimi
Directories cannot go through the portal. Sending files instead.
$ ls -lG _portal/yoshimi
[...] yoshimi.stat -> ../_portal/yoshimi/yoshimi.stat*

删除功能也像预期一样工作,但是当从 _portal 中删除一些东西时,你应该使用 git-portal rm 而不是 git rm。使用 Git-portal 可以确保文件从 _portal 中删除:

$ ls
_portal/    song.qtr             song-Track_1-3.mid@  yoshimi/
song.1.qtr  song-Track_1-1.mid@  song-Track_2-1.mid@
$ git-portal rm song-Track_1-3.mid
rm 'song-Track_1-3.mid'
$ ls _portal/
song-Track_1-1.mid*  song-Track_2-1.mid*  yoshimi/

如果你忘记使用 Git-portal,那么你需要手动删除 _portal 下的文件:

$ git-portal rm song-Track_1-1.mid
rm 'song-Track_1-1.mid'
$ ls _portal/
song-Track_1-1.mid* song-Track_2-1.mid* yoshimi/
$ trash _portal/song-Track_1-1.mid

Git-portal 其它的唯一功能,是列出当前所有的链接并且找到里面可能已经损坏的符号链接。有时这种情况会因为项目文件夹中的文件被移动而发生:

$ mkdir foo
$ mv yoshimi foo
$ git-portal status
bigproject.git/song-Track_2-1.mid: symbolic link to _portal/song-Track_2-1.mid
bigproject.git/foo/yoshimi/yoshimi.stat: broken symbolic link to ../_portal/yoshimi/yoshimi.stat

如果你使用 Git-portal 用于私人项目并且维护自己的备份,以上就是技术方面所有你需要知道关于 Git-portal 的事情了。如果你想要添加一个协作者或者你希望 Git-portal 来像 Git 的方式来管理备份,你可以创建一个远程位置。

增加 Git-portal 远程位置

为 Git-portal 增加一个远程位置是通过 Git 已有的远程功能来实现的。Git-portal 实现了 Git 钩子(隐藏在存储库 .git 文件夹中的脚本),来寻找你的远程位置上是否存在以 _portal 开头的文件夹。如果它找到一个,它会尝试使用 rsync 来与远程位置同步文件。Git-portal 在用户进行 Git 推送以及 Git 合并的时候(或者在进行 Git 拉取的时候,实际上是进行一次获取和自动合并),都会执行此操作。

如果你仅克隆了 Git 存储库,那么你可能永远不会自己添加一个远程位置。这是一个标准的 Git 过程:

$ git remote add origin [email protected]:seth/bigproject.git
$ git remote -v
origin [email protected]:seth/bigproject.git (fetch)
origin [email protected]:seth/bigproject.git (push)

对你的主要 Git 存储库来说,origin 这个名字是一个流行的惯例,将其用于 Git 数据是有意义的。然而,你的 Git-portal 数据是分开存储的,所以你必须创建第二个远程位置来让 Git-portal 了解向哪里推送和从哪里拉取。取决于你的 Git 主机,你可能需要一个单独的服务器,因为空间有限的 Git 主机不太可能接受 GB 级的媒体资产。或者,可能你的服务器仅允许你访问你的 Git 存储库而不允许访问外部的存储文件夹:

$ git remote add _portal [email protected]:/home/seth/git/bigproject_portal
$ git remote -v
origin [email protected]:seth/bigproject.git (fetch)
origin [email protected]:seth/bigproject.git (push)
_portal [email protected]:/home/seth/git/bigproject_portal (fetch)
_portal [email protected]:/home/seth/git/bigproject_portal (push)

你可能不想为所有用户提供服务器上的个人帐户,也不必这样做。为了提供对托管资源库大文件资产的服务器的访问权限,你可以运行一个 Git 前端,比如 Gitolite 或者你可以使用 rrsync (受限的 rsync)。

现在你可以推送你的 Git 数据到你的远程 Git 存储库,并将你的 Git-portal 数据到你的远程的门户:

$ git push origin HEAD  
master destination detected
Syncing _portal content...
sending incremental file list
sent 9,305 bytes  received 18 bytes  1,695.09 bytes/sec
total size is 60,358,015  speedup is 6,474.10
Syncing _portal content to example.com:/home/seth/git/bigproject_portal

如果你已经安装了 Git-portal,并且配置了 _portal 的远程位置,你的 _portal 文件夹将会被同步,并且从服务器获取新的内容,以及在每一次推送的时候发送新的内容。尽管你不需要进行 Git 提交或者推送来和服务器同步(用户可以使用直接使用 rsync),但是我发现对于艺术性内容的改变,提交是有用的。这将会把艺术家及其数字资产集成到工作流的其余部分中,并提供有关项目进度和速度的有用元数据。

其他选择

如果 Git-portal 对你而言太过简单,还有一些用于 Git 管理大型文件的其他选择。Git 大文件存储(LFS)是一个名为 git-media 的停工项目的分支,这个分支由 GitHub 维护和支持。它需要特殊的命令(例如 git lfs track 来保护大型文件不被 Git 追踪)并且需要用户维护一个 .gitattributes 文件来更新哪些存储库中的文件被 LFS 追踪。对于大文件而言,它支持 HTTP 和 HTTPS 远程主机。所以你必须配置 LFS 服务器,才能使得用户可以通过 HTTP 而不是 SSH 或 rsync 来进行鉴权。

另一个相对 LFS 更灵活的选择是 git-annex。你可以在我的文章 管理 Git 中大二进制 blob 中了解更多(忽略其中 git-media 这个已经废弃项目的章节,因为其灵活性没有被它的继任者 Git LFS 延续下来)。Git-annex 是一个灵活且优雅的解决方案。它拥有一个细腻的系统来用于添加、删除、移动存储库中的大型文件。因为它灵活且强大,有很多新的命令和规则需要进行学习,所以建议看一下它的文档

然而,如果你的需求很简单,你可能更加喜欢整合已有技术来进行简单且明显任务的解决方案,则 Git-portal 可能是对于工作而言比较合适的工具。


via: https://opensource.com/article/19/4/manage-multimedia-files-git

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

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

NVIDIA 的 GeForce NOW 云游戏服务对于那些可能没有硬件但想使用 GeForce NOW 在最新的最好的游戏上获得尽可能好的游戏体验玩家来说是充满前景的(在线推流游戏,并可以在任何设备上玩)。

该服务仅限于一些用户(以等待列表的形式)使用。然而,他们最近宣布 GeForce NOW 面向所有人开放。但实际上并不是。

有趣的是,它并不是面向全球所有区域。而且,更糟的是 GeForce NOW 不支持 Linux

GeForce NOW 并不是向“所有人开放”

制作一个基于订阅的云服务来玩游戏的目的是消除平台依赖性。

就像你通常使用浏览器访问网站一样,你应该能够在每个平台上玩游戏。是这个概念吧?

好吧,这绝对不是火箭科学,但是 NVIDIA 仍然不支持 Linux(和 iOS)?

是因为没有人使用 Linux 吗?

我非常不同意这一点,即使这是某些不支持 Linux 的原因。如果真是这样,我不会使用 Linux 作为主要桌面操作系统来为 “It’s FOSS” 写文章。

不仅如此,如果 Linux 不值一提,你认为为何一个 Twitter 用户会提到缺少 Linux 支持?

是的,也许用户群不够大,但是在考虑将其作为基于云的服务时,不支持 Linux 显得没有意义。

从技术上讲,如果 Linux 上没有游戏,那么 Valve 就不会在 Linux 上改进 Steam Play 来帮助更多用户在 Linux 上玩纯 Windows 的游戏。

我不想说任何不正确的说法,但台式机 Linux 游戏的发展比以往任何时候都要快(即使统计上要比 Mac 和 Windows 要低)。

云游戏不应该像这样

如上所述,找到使用 Steam Play 的 Linux 玩家不难。只是你会发现 Linux 上游戏玩家的整体“市场份额”低于其他平台。

即使这是事实,云游戏也不应该依赖于特定平台。而且,考虑到 GeForce NOW 本质上是一种基于浏览器的可以玩游戏的流媒体服务,所以对于像 NVIDIA 这样的大公司来说,支持 Linux 并不困难。

来吧,Nvidia,你想要我们相信在技术上支持 Linux 有困难?或者,你只是想说不值得支持 Linux 平台?

结语

不管我为 GeForce NOW 服务发布而感到多么兴奋,当看到它根本不支持 Linux,我感到非常失望。

如果像 GeForce NOW 这样的云游戏服务在不久的将来开始支持 Linux,你可能没有理由使用 Windows 了咳嗽)。

你怎么看待这件事?在下面的评论中让我知道你的想法。


via: https://itsfoss.com/geforce-now-linux/

作者:Ankush Das 选题:lujun9972 译者:geekpi 校对:wxy

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