想象一下：有人伤了你的心，而你想要的是心无旁骛地在日记中写下你的感受。你明白这种感受吗？没有吗？我也不知道。我没有心碎过（或者也许我心碎了，但我不想告诉你）。但我还是想向你展示一个奇妙的极简的开源的记事应用来保存日记。这个方便的小程序是 Jrnl，它可以让你在终端中直接创建、搜索和查看日记条目。用 Jrnl 创建新的笔记就像下面一样简单：jrnl yesterday: I read an amazing article on It’s FOSS. I learn about a minimalist app called Jrnl, I should try it. 看起来很简单，不是吗？关键字 “yesterday” 在这里是一个触发器，它把你的笔记保存到昨天的日期。记住，它被称为 Jrnl（日记）是有原因的。它的主要目的是保存日记。如果你喜欢把你的想法写成日记，或者只是想尝试一下，让我分享一下安装和使用的一些细节。在你的 Linux 系统上安装和使用 JnrlJrnl 可以用 pipx 或 Homebrew 包管理器安装。我在测试中使用了 Homebrew，所以我将列出这些步骤。首先获取 Homebrew：/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" 这就好了！如果你需要更多的信息，我们有一个关于 在 Linux 上安装 Homebrew 的详细教程。当你安装了 Homebrew 包管理器后，用它来安装 Jrnl：brew install jrnl 安装后，只要初始化 jrnl 并开始写你的随机想法。你还记得本文开头的第一个例子吗？让我们再来看看它吧！jrnl yesterday: I read an amazing article in It’s FOSS. I learn about a minimalist app called Jrnl, I should try it. 在这一行中，我用命令 jrnl 在一个时间戳旁启动程序，在这个例子中是 yesterday。我写了一个冒号 :，表示我将开始写一些东西，在第一个句子标记 .?!:（在这里是句号 .）之前包含的所有内容将是标题。最后，这个句号旁边的所有内容将被视为文件的主体。目前，Jnrl 有两种模式：撰写和查看；前面的步骤用于撰写条目，但如果你想查看，例如，之前写过的条目，语法也很简单，你只需输入下一行。jrnl -on yesterday 认为有人可能会阅读你的日记和想法？你也可以对你的条目进行加密。这就好了！ 当然，Jrnl 还有很多功能，你可以通过下面这行轻松找到：jrnl --help 你也可以参考 其官方网站 上的文档。记住，在这样的一个开源项目中，文档是你最好的朋友。享受它吧！总结当然，Jrnl 并不适合所有人。大多数命令行工具都不适合。但如果你在终端中生活和呼吸，并喜欢记录你的想法，它就适合你。请不要忘记在评论中与我们分享你的个人经验，或者更好的是，如果你想让更多的人了解这个项目，你可以在各个社区和论坛上分享这个帖子。via: https://itsfoss.com/jrnl/作者：Marco Carmona 选题：lujun9972 译者：geekpi 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
写日记有着悠久的历史。这里有三个开源工具，可以帮助你写日记变得更轻松。在前几年，这个年度系列涵盖了单个的应用。今年，我们除了关注 2021 年的策略外，还将关注一体化解决方案。欢迎来到 2021 年 21 天生产力的第十天。在我的小学时代，商业互联网还没有出现，老师经常会给我们班级布置一个让我们写日记的作业。有时会针对一些特定的内容，例如特定格式的虫子列表和说明，或者是公民课的每周新闻摘要。几个世纪以来，人们一直在写日记。它们是一种方便的信息保存方式。它们有很多形式，比如意大利的 Zibaldone、备忘录，或者记录今天做了什么的事件日记。（Kevin Sonney, CC BY-SA 4.0）为什么我们要写某种日记呢？第一个原因是为了让我们不至于把所有的事情都记在脑子里。我们中没有多少人有 遗觉记忆 Eidetic memory ，维护运行日记或一组笔记可以让我们更容易地参考我们之前做的一些事情。日记也更容易分享，因为它们可以在聊天、邮件中复制/粘贴。正如 Robert Boyce 的名言：“知识就是力量。知识共享使力量倍增。”知识的共享是开源的一个内在组成部分。今天的日记 （Kevin Sonney, CC BY-SA 4.0）在写事件日记的时候，有一个很关键的点就是要快速、简单、方便。最简单的方法是打开文档，添加一行当前日期和备注，然后保存。有几个程序或附加软件可以让这一切变得更简单。GNote 的 Note of the Day 插件会自动创建一个以日期为标题的笔记，可以用来保存当天的内容。Emacs Org 模式有一个热键组合，可以“捕捉”事物并将其放入文档中。结合 org-journal 附加组件，这将在文档中创建当天的条目。Kontact 的 KNotes 组件会自动将日期和时间添加到新笔记中。查找笔记 （Kevin Sonney, CC BY-SA 4.0）写日记或记录事情是一种方便的方法，可以记录做了什么和怎么做的。它的作用不仅仅是“我做了什么”，它还可以包括阅读的书籍、吃过的食物、去过的地方，以及一大堆对未来有用的信息。via: https://opensource.com/article/21/1/open-source-journal作者：Kevin Sonney 选题：lujun9972 译者：geekpi 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
用 Jupyter 和 Python 在你的日常写作背后实现一些自动化。有些人会遵循传统，制定一年的计划。不过，一年的时间很长，所以我以季节性的主题或轨迹来规划。每个季度，我都会坐下来，看看即将到来的三个月的季节，并决定在这段时间里我将努力做什么。对于我最新的主题，我决定要每天写一篇日记。我喜欢有明确的承诺，所以我承诺每天写 5 分钟。我也喜欢有可观察的承诺，哪怕只是对我而言，所以我把我的记录放在 Git 里。我决定在写日记的过程中实现一些自动化，于是我使用了我最喜欢的自动化工具：Jupyter。Jupyter 有一个有趣的功能 ipywidgets，这是一套用于 Jupyter Notebooks、JupyterLab 和 IPython 内核的交互式 HTML 组件。如果你想跟着本文的代码走，请注意，让你的 JupyterLab 实例支持组件可能有点复杂，请按照这些说明来进行设置。导入 ipywidgets 模块首先，你需要导入一堆东西，比如 ipywidgets 和 Twisted。Twisted 模块可以用来创建一个异步时间计数器：import twisted.internet.asyncioreactor twisted.internet.asyncioreactor.install() from twisted.internet import reactor, task import ipywidgets, datetime, subprocess, functools, os 设置定时条目用 Twisted 实现时间计数器是利用了 task.LoopingCall。然而，结束循环调用的唯一方法是用一个异常。倒计时时钟总会停止，所以你需要一个自定义的异常来指示“一切正常；计数器结束”：class DoneError(Exception): pass 现在你已经写好了异常，你可以写定时器了。第一步是创建一个 ipywidgets.Label 的文本标签组件。循环使用 divmod 计算出分和秒，然后设置标签的文本值：def time_out_counter(reactor): label = ipywidgets.Label("Time left: 5:00") current_seconds = datetime.timedelta(minutes=5).total_seconds() def decrement(count): nonlocal current_seconds current_seconds -= count time_left = datetime.timedelta(seconds=max(current_seconds, 0)) minutes, left = divmod(time_left, minute) seconds = int(left.total_seconds()) label.value = f"Time left: {minutes}:{seconds:02}" if current_seconds < 0: raise DoneError("finished") minute = datetime.timedelta(minutes=1) call = task.LoopingCall.withCount(decrement) call.reactor = reactor d = call.start(1) d.addErrback(lambda f: f.trap(DoneError)) return d, label 从 Jupyter 组件中保存文本下一步是写一些东西，将你输入的文字保存到一个文件中，并提交到 Git。另外，由于你要写 5 分钟的日记，你需要一个能给你提供写字区域的组件（滚动肯定是可以的，但一次能看到更多的文字就更好了）。这就用到了组件 Textarea，这是一个你可以书写的文本字段，而 Output 则是用来给出反馈的。这一点很重要，因为 git push 可能会花点时间或失败，这取决于网络。如果备份失败，用反馈提醒用户很重要：def editor(fname): textarea = ipywidgets.Textarea(continuous_update=False) textarea.rows = 20 output = ipywidgets.Output() runner = functools.partial(subprocess.run, capture_output=True, text=True, check=True) def save(_ignored): with output: with open(fname, "w") as fpout: fpout.write(textarea.value) print("Sending...", end='') try: runner(["git", "add", fname]) runner(["git", "commit", "-m", f"updated {fname}"]) runner(["git", "push"]) except subprocess.CalledProcessError as exc: print("Could not send") print(exc.stdout) print(exc.stderr) else: print("Done") textarea.observe(save, names="value") return textarea, output, save continuous_update=False 是为了避免每个字符都保存一遍并发送至 Git。相反，只要脱离输入焦点，它就会保存。这个函数也返回 save 函数，所以可以明确地调用它。创建一个布局最后，你可以使用 ipywidgets.VBox 把这些东西放在一起。这是一个包含一些组件并垂直显示的东西。还有一些其他的方法来排列组件，但这足够简单：def journal(): date = str(datetime.date.today()) title = f"Log: Startdate {date}" filename = os.path.join(f"{date}.txt") d, clock = time_out_counter(reactor) textarea, output, save = editor(filename) box = ipywidgets.VBox([ ipywidgets.Label(title), textarea, clock, output ]) d.addCallback(save) return box biu！你已经定义了一个写日记的函数了，所以是时候试试了。journal() 你现在可以写 5 分钟了！via: https://opensource.com/article/20/11/daily-journal-jupyter作者：Moshe Zadka 选题：lujun9972 译者：wxy 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
jrnl 可以创建可搜索、带时间戳、可导出、加密的（如果需要）的日常活动日志。在我们的 20 个使用开源提升生产力的系列的第八篇文章中了解更多。去年，我在 19 天里给你介绍了 19 个新（对你而言）的生产力工具。今年，我换了一种方式：使用你在使用或者还没使用的工具，构建一个使你可以在新一年更加高效的环境。使用 jrnl 记录日志在我的公司，许多人会在下班之前在 Slack 上发送一个“一天结束”的状态。在有着许多项目和全球化的团队里，这是一个分享你已完成、未完成以及你需要哪些帮助的一个很好的方式。但有时候我太忙了，以至于我忘了做了什么。这时候就需要记录日志了。打开一个文本编辑器并在你做一些事的时候添加一行很容易。但是在需要找出你在什么时候做的笔记，或者要快速提取相关的行时会有挑战。幸运的是，jrnl 可以提供帮助。jrnl 能让你在命令行中快速输入条目、搜索过去的条目并导出为 HTML 和 Markdown 等富文本格式。你可以有多个日志，这意味着你可以将工作条目与私有条目分开。它将条目存储为纯文本，因此即使 jrnl 停止工作，数据也不会丢失。由于 jrnl 是一个 Python 程序，最简单的安装方法是使用 pip3 install jrnl。这将确保你获得最新和最好的版本。第一次运行它会询问一些问题，接下来就能正常使用。现在，每当你需要做笔记或记录日志时，只需输入 jrnl <some text>，它将带有时间戳的记录保存到默认文件中。你可以使用 jrnl -on YYYY-MM-DD 搜索特定日期条目，jrnl -from YYYY-MM-DD 搜索在那日期之后的条目，以及用 jrnl -to YYYY-MM-DD 搜索到那日期的条目。搜索词可以与 -and 参数结合使用，允许像 jrnl -from 2019-01-01 -and -to 2019-12-31 这类搜索。你还可以使用 --edit 标志编辑日志中的条目。开始之前，通过编辑文件 ~/.config/jrnl/jrnl.yaml 来设置默认编辑器。你还可以指定日志使用什么文件、用于标签的特殊字符以及一些其他选项。现在，重要的是设置编辑器。我使用 Vim，jrnl 的文档中有一些使用其他编辑器如 VSCode 和 Sublime Text 的有用提示。jrnl 还可以加密日志文件。通过设置全局 encrypt 变量，你将告诉 jrnl 加密你定义的所有日志。还可在配置文件中的针对文件设置 encrypt: true 来加密文件。journals: default: ~/journals/journal.txt work: ~/journals/work.txt private: journal: ~/journals/private.txt encrypt: true如果日志尚未加密，系统将提示你输入在对它进行任何操作的密码。日志文件将加密保存在磁盘上，以免受窥探。jrnl 文档 中包含其工作原理、使用哪些加密方式等的更多信息。日志记录帮助我记住什么时候做了什么事，并在我需要的时候能够找到它。via: https://opensource.com/article/20/1/python-journal作者：Kevin Sonney 选题：lujun9972 译者：geekpi 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
用轻量、灵活的数字日记工具来记录你的活动。保持记日记的习惯，即使是不定期地记，也可以带来很多好处。这不仅是治疗和宣泄，而且还可以很好地记录你所在的位置以及你去过的地方。它可以帮助你展示你在生活中的进步，并提醒你自己做对了什么，做错了什么。无论你记日记的原因是什么，都有多种方法可以做到这一点。你可以使用传统的笔和纸，也可以使用基于 Web 的程序，或者你可以使用简单的文本文件。另一种选择是使用专门的日记程序。Linux 桌面有几种非常灵活且非常有用的日记工具。我们来看看其中的三个。RedNotebook在这里描述的三个日记程序中，RedNotebook 是最灵活的。大部分灵活性来自其模板。这些模板可让你记录个人想法或会议记录、计划旅程或记录电话。你还可以编辑现有模板或创建自己的模板。你可以使用与 Markdown 非常相似的标记语言来记录日记。你还可以在日记中添加标签，以便于查找。只需在程序的左窗格中单击或输入标记，右窗格中将显示相应日记的列表。最重要的是，你可以将全部、部分或仅一个日记导出为纯文本、HTML、LaTeX 或 PDF。在执行此操作之前，你可以通过单击工具栏上的“预览”按钮了解日志在 PDF 或 HTML 中的显示情况。总的来说，RedNotebook 是一款易于使用且灵活的程序。它需要习惯，但一旦你这样做，它是一个有用的工具。LifeographLifeograph 与 RedNotebook 有相似的外观和感觉。它没有那么多功能，但 Lifeograph 也够了。该程序通过保持简单和整洁性来简化记日记这件事。你有一个很大的区域可以记录，你可以为日记添加一些基本格式。这包括通常的粗体和斜体，以及箭头和高亮显示。你可以在日记中添加标签，以便更好地组织和查找它们。Lifeograph 有一个我觉得特别有用的功能。首先，你可以创建多个日记 - 例如，工作日记和个人日记。其次是密码保护你的日记的能力。虽然该网站声称 Lifeograph 使用“真正的加密”，但没有关于它的详细信息。尽管如此，设置密码仍然会阻止大多数窥探者。Almanah DiaryAlmanah Diary 是另一种非常简单的日记工具。但不要因为它缺乏功能就丢掉它。虽简单，但足够。有多简单？它差不多只是一个包含了日记输入和日历的区域而已。你可以做更多的事情 —— 比如添加一些基本格式（粗体、斜体和下划线）并将文本转换为超链接。Almanah 还允许你加密日记。虽然有一个可以将纯文本文件导入该程序的功能，但我无法使其正常工作。尽管如此，如果你喜欢一个简单，能够快速记日记的软件，那么 Almanah 日记值得一看。命令行怎么样？如果你不想用 GUI 则可以不必用。命令行是保存日记的绝佳选择。我尝试过并且喜欢的是 jrnl。或者你可以使用此方案，它使用命令行别名格式化并将日记保存到文本文件中。你有喜欢的日记程序吗？请留下评论，随意分享。via: https://opensource.com/article/18/6/linux-journaling-applications作者：Scott Nesbitt 选题：lujun9972 译者：geekpi 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出