mirror of
https://github.com/LCTT/TranslateProject.git
synced 2025-02-03 23:40:14 +08:00
Merge remote-tracking branch 'LCTT/master'
This commit is contained in:
commit
6306f523cf
85
published/20200108 How to setup multiple monitors in sway.md
Normal file
85
published/20200108 How to setup multiple monitors in sway.md
Normal file
@ -0,0 +1,85 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: (wxy)
|
||||
[#]: reviewer: (wxy)
|
||||
[#]: publisher: (wxy)
|
||||
[#]: url: (https://linux.cn/article-11809-1.html)
|
||||
[#]: subject: (How to setup multiple monitors in sway)
|
||||
[#]: via: (https://fedoramagazine.org/how-to-setup-multiple-monitors-in-sway/)
|
||||
[#]: author: (arte219 https://fedoramagazine.org/author/arte219/)
|
||||
|
||||
如何在 Sway 中设置多个显示器
|
||||
======
|
||||
|
||||
![][1]
|
||||
|
||||
Sway 是一种平铺式 Wayland 合成器,具有与 [i3 X11 窗口管理器][2]相同的功能、外观和工作流程。由于 Sway 使用 Wayland 而不是 X11,因此就不能一如既往地使用设置 X11 的工具。这包括 `xrandr` 之类的工具,这些工具在 X11 窗口管理器或桌面中用于设置显示器。这就是为什么必须通过编辑 Sway 配置文件来设置显示器的原因,这就是本文的目的。
|
||||
|
||||
### 获取你的显示器 ID
|
||||
|
||||
首先,你必须获得 Sway 用来指代显示器的名称。你可以通过运行以下命令进行操作:
|
||||
|
||||
```
|
||||
$ swaymsg -t get_outputs
|
||||
```
|
||||
|
||||
你将获得所有显示器的相关信息,每个显示器都用空行分隔。
|
||||
|
||||
你必须查看每个部分的第一行,以及 `Output` 之后的内容。例如,当你看到 `Output DVI-D-1 'Philips Consumer Electronics Company'` 之类的行时,则该输出 ID 为 `DVI-D-1`。注意这些 ID 及其所属的物理监视器。
|
||||
|
||||
### 编辑配置文件
|
||||
|
||||
如果你之前没有编辑过 Sway 配置文件,则必须通过运行以下命令将其复制到主目录中:
|
||||
|
||||
```
|
||||
cp -r /etc/sway/config ~/.config/sway/config
|
||||
```
|
||||
|
||||
现在,默认配置文件位于 `~/.config/sway` 中,名为 `config`。你可以使用任何文本编辑器进行编辑。
|
||||
|
||||
现在你需要做一点数学。想象有一个网格,其原点在左上角。X 和 Y 坐标的单位是像素。Y 轴反转。这意味着,例如,如果你从原点开始,向右移动 100 像素,向下移动 80 像素,则坐标将为 `(100, 80)`。
|
||||
|
||||
你必须计算最终显示在此网格上的位置。显示器的位置由左上方的像素指定。例如,如果我们要使用名称为“HDMI1”且分辨率为 1920×1080 的显示器,并在其右侧使用名称为 “eDP1” 且分辨率为 1600×900 的笔记本电脑显示器,则必须在配置文件中键入 :
|
||||
|
||||
```
|
||||
output HDMI1 pos 0 0
|
||||
output eDP1 pos 1920 0
|
||||
```
|
||||
|
||||
你还可以使用 `res` 选项手动指定分辨率:
|
||||
|
||||
```
|
||||
output HDMI1 pos 0 0 res 1920x1080
|
||||
output eDP1 pos 1920 0 res 1600x900
|
||||
```
|
||||
|
||||
### 将工作空间绑定到显示器上
|
||||
|
||||
与多个监视器一起使用 Sway 在工作区管理中可能会有些棘手。幸运的是,你可以将工作区绑定到特定的显示器上,因此你可以轻松地切换到该显示器并更有效地使用它。只需通过配置文件中的 `workspace` 命令即可完成。例如,如果要绑定工作区 1 和 2 到显示器 “DVI-D-1”,绑定工作区 8 和 9 到显示器 “HDMI-A-1”,则可以使用以下方法:
|
||||
|
||||
```
|
||||
workspace 1 output DVI-D-1
|
||||
workspace 2 output DVI-D-1
|
||||
```
|
||||
|
||||
```
|
||||
workspace 8 output HDMI-A-1
|
||||
workspace 9 output HDMI-A-1
|
||||
```
|
||||
|
||||
就是这样。这就在 Sway 中多显示器设置的基础知识。可以在 <https://github.com/swaywm/sway/wiki#Wiki#Multihead> 中找到更详细的指南。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://fedoramagazine.org/how-to-setup-multiple-monitors-in-sway/
|
||||
|
||||
作者:[arte219][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[wxy](https://github.com/wxy)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://fedoramagazine.org/author/arte219/
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://fedoramagazine.org/wp-content/uploads/2020/01/sway-multiple-monitors-816x345.png
|
||||
[2]: https://fedoramagazine.org/getting-started-i3-window-manager/
|
@ -1,16 +1,18 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: (geekpi)
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: reviewer: (wxy)
|
||||
[#]: publisher: (wxy)
|
||||
[#]: url: (https://linux.cn/article-11807-1.html)
|
||||
[#]: subject: (Organize your email with Notmuch)
|
||||
[#]: via: (https://opensource.com/article/20/1/organize-email-notmuch)
|
||||
[#]: author: (Kevin Sonney https://opensource.com/users/ksonney)
|
||||
|
||||
使用 Notmuch 组织你的邮件
|
||||
======
|
||||
Notmuch 索引、标记和排序电子邮件。在我们的 20 个使用开源提升生产力的系列的第四篇文章中了解该如何使用。
|
||||
![Filing cabinet for organization][1]
|
||||
|
||||
> Notmuch 可以索引、标记和排序电子邮件。在我们的 20 个使用开源提升生产力的系列的第四篇文章中了解该如何使用它。
|
||||
|
||||
![](https://img.linux.net.cn/data/attachment/album/202001/22/112231xg5dgv6f6g5a1iv1.jpg)
|
||||
|
||||
去年,我在 19 天里给你介绍了 19 个新(对你而言)的生产力工具。今年,我换了一种方式:使用你在使用或者还没使用的工具,构建一个使你可以在新一年更加高效的环境。
|
||||
|
||||
@ -26,12 +28,11 @@ Notmuch 索引、标记和排序电子邮件。在我们的 20 个使用开源
|
||||
|
||||
![Notmuch's first run][7]
|
||||
|
||||
Notmuch 首次运行时,它将询问你一些问题,并在家目录中创建 **.notmuch-config** 文件。接下来,运行 **notmuch new** 来索引并标记所有邮件。你可以使用 **notmuch search tag:new** 进行验证,它会找到所有带有 “new” 标签的消息。这可能会有很多邮件,因为 Notmuch 使用 “new” 标签来指示新邮件,因此你需要对其进行清理。
|
||||
Notmuch 首次运行时,它将询问你一些问题,并在家目录中创建 `.notmuch-config` 文件。接下来,运行 `notmuch new` 来索引并标记所有邮件。你可以使用 `notmuch search tag:new` 进行验证,它会找到所有带有 `new` 标签的消息。这可能会有很多邮件,因为 Notmuch 使用 `new` 标签来指示新邮件,因此你需要对其进行清理。
|
||||
|
||||
运行 **notmuch search tag:unread** 来查找未读消息,这会减少很多邮件。要从你已阅读的消息中删除 “new” 标签,请运行 **notmuch tag -new not tag:unread**,它将搜索所有没有 “unread” 标签的消息,并从其中删除 “new” 标签。现在,当你运行 **notmuch search tag:new**时,它将仅显示未读邮件。
|
||||
|
||||
但是,批量标记消息可能更有用,因为在每次运行时手动更新标记可能非常繁琐。**\--batch** 命令行选项告诉 Notmuch 读取多行命令并执行它们。还有一个 **\--input=filename** 选项,该选项从文件中读取命令并应用它们。我有一个名为 **tagmail.notmuch** 的文件,用于给”新“邮件添加标签;它看起来像这样:
|
||||
运行 `notmuch search tag:unread` 来查找未读消息,这会减少很多邮件。要从你已阅读的消息中删除 `new` 标签,请运行 `notmuch tag -new not tag:unread`,它将搜索所有没有 `unread` 标签的消息,并从其中删除 `new` 标签。现在,当你运行 `notmuch search tag:new` 时,它将仅显示未读邮件。
|
||||
|
||||
但是,批量标记消息可能更有用,因为在每次运行时手动更新标记可能非常繁琐。`--batch` 命令行选项告诉 Notmuch 读取多行命令并执行它们。还有一个 `--input=filename` 选项,该选项从文件中读取命令并应用它们。我有一个名为 `tagmail.notmuch` 的文件,用于给“新”邮件添加标签;它看起来像这样:
|
||||
|
||||
```
|
||||
# Manage sent, spam, and trash folders
|
||||
@ -49,9 +50,9 @@ Notmuch 首次运行时,它将询问你一些问题,并在家目录中创建
|
||||
-new tag:new
|
||||
```
|
||||
|
||||
我可以在运行 **notmuch new** 后运行 **notmuch tag --input=tagmail.notmuch** 批量处理我的邮件,之后我也可以搜索这些标签。
|
||||
我可以在运行 `notmuch new` 后运行 `notmuch tag --input=tagmail.notmuch` 批量处理我的邮件,之后我也可以搜索这些标签。
|
||||
|
||||
Notmuch 还支持 pre-new 和 post-new 钩子。这些脚本存放在 **Maildir/.notmuch/hooks** 中,它们定义了在使用 **notmuch new** 索引新邮件之前(pre-new)和之后(post-new)要做的操作。在昨天的文章中,我谈到了使用 [OfflineIMAP][8] 同步来自 IMAP 服务器的邮件。从 “pre-new” 钩子运行它非常容易:
|
||||
Notmuch 还支持 `pre-new` 和 `post-new` 钩子。这些脚本存放在 `Maildir/.notmuch/hooks` 中,它们定义了在使用 `notmuch new` 索引新邮件之前(`pre-new`)和之后(`post-new`)要做的操作。在昨天的文章中,我谈到了使用 [OfflineIMAP][8] 同步来自 IMAP 服务器的邮件。从 `pre-new` 钩子运行它非常容易:
|
||||
|
||||
|
||||
```
|
||||
@ -63,8 +64,7 @@ notmuch tag -new tag:new
|
||||
offlineimap -a LocalSync -u quiet
|
||||
```
|
||||
|
||||
你还可以使用可以操作 Notmuch 数据库的 Python 应用 [afew][9],来为你标记_邮件列表_和_垃圾邮件_。你可以用类似的方法在 post-new 钩子中使用 afew:
|
||||
|
||||
你还可以使用可以操作 Notmuch 数据库的 Python 应用 [afew][9],来为你标记*邮件列表*和*垃圾邮件*。你可以用类似的方法在 `post-new` 钩子中使用 `afew`:
|
||||
|
||||
```
|
||||
#!/bin/bash
|
||||
@ -75,7 +75,7 @@ notmuch tag --input=~/tagmail.notmuch
|
||||
afew -t -n
|
||||
```
|
||||
|
||||
我建议你在使用 afew 标记邮件时,不要使用 **[ListMailsFilter]**,因为某些邮件处理程序会在邮件中添加模糊或者完全的垃圾列表中的标头(我说的是你 Google)。
|
||||
我建议你在使用 `afew` 标记邮件时,不要使用 `[ListMailsFilter]`,因为某些邮件处理程序会在邮件中添加模糊或者彻头彻尾是垃圾的列表标头(我说的就是你 Google)。
|
||||
|
||||
![alot email client][10]
|
||||
|
||||
@ -90,14 +90,14 @@ via: https://opensource.com/article/20/1/organize-email-notmuch
|
||||
作者:[Kevin Sonney][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://opensource.com/users/ksonney
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/files_documents_organize_letter.png?itok=GTtiiabr (Filing cabinet for organization)
|
||||
[2]: https://opensource.com/article/20/1/sync-email-offlineimap
|
||||
[2]: https://linux.cn/article-11804-1.html
|
||||
[3]: https://opensource.com/sites/default/files/uploads/productivity_4-1.png (Notmuch)
|
||||
[4]: https://en.wikipedia.org/wiki/Maildir
|
||||
[5]: https://notmuchmail.org/
|
@ -0,0 +1,86 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: ( )
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (Beyond Moore's Law: Neuromorphic computing?)
|
||||
[#]: via: (https://www.networkworld.com/article/3514692/beyond-moores-law-neuromorphic-computing.html)
|
||||
[#]: author: (Patrick Nelson https://www.networkworld.com/author/Patrick-Nelson/)
|
||||
|
||||
Beyond Moore's Law: Neuromorphic computing?
|
||||
======
|
||||
Some researchers think brain-copying architectures should replace traditional computing. One group explains how that might work.
|
||||
4x-image / Getty Images
|
||||
|
||||
With the conceivable exhaustion of [Moore’s Law][1] – that the number of transistors on a microchip doubles every two years – the search is on for new paths that lead to reliable incremental processing gains over time.
|
||||
|
||||
One possibility is that machines inspired by how the brain works could take over, fundamentally shifting computing to a revolutionary new tier, according to an explainer study released this month by Applied Physics Reviews.
|
||||
|
||||
[[Get regularly scheduled insights by signing up for Network World newsletters.]][2]
|
||||
|
||||
“Today’s state-of-the-art computers process roughly as many instructions per second as an insect brain,” say [the paper’s][3] authors Jack Kendall, of Rain Neuromorphics, and Suhas Kumar, of Hewlett Packard Labs. The two write that processor architecture must now be completely re-thought if Moore’s law is to be perpetuated, and that replicating the “natural processing system of a [human] brain” is the way forward.
|
||||
|
||||
[][4]
|
||||
|
||||
BrandPost Sponsored by HPE
|
||||
|
||||
[Take the Intelligent Route with Consumption-Based Storage][4]
|
||||
|
||||
Combine the agility and economics of HPE storage with HPE GreenLake and run your IT department with efficiency.
|
||||
|
||||
Deep neural networks (DNNs) should be the foundation, the group believes. A DNN is basically dynamic deep learning where layers pull high- and low-level detail features (edges and shapes, for example) from data. Kendall and Kumar explain that a human brain, which DNN copies, can sort through massive datasets and generally identify data better than a traditional computer, so therefore it should be the starting point.
|
||||
|
||||
This kind of thing is being attempted already. Existing artificial intelligence (AI) is a stab at getting computers to learn like a human brain. Much like the brain, AI engines learn from patterns in data. Algorithms are combined with processing power, and rewards are dished out when the machine gets it right.
|
||||
|
||||
A brain-inspired neuromorphic computer, however, would take computing a step further, the team believes. Neuromorphic computing mimics neuro-biological architectures in a kind of hybrid digital-analog circuit, in a way like a body does biologically.
|
||||
|
||||
The group says that they think there are 10 basics that need to be gotten right to get to this next level:
|
||||
|
||||
**Parellelism** – Similar to how a brain works rapidly, numerous mathematical operations must be made to occur simultaneously. It’s an extension of what we see now in graphical processing units (GPUs) where large scale graphics are created using concurrent calculations called matrix multiplications.
|
||||
|
||||
**In-memory computing** – It wastes resources to fetch data from remote places, and human brains, indeed, don’t do that; they store information in the same synapses that perform the thought. The introduction of electronic processing semiconductors that combine memory – [Memristors –][5] could help here. (I wrote a few weeks ago about [progress being made combining transistors with storage][6]. That combo could have similar resource advantages.)
|
||||
|
||||
**Analog computing** – Numbers are analog, not digital, the authors point out. Most real-world numbers aren’t zeros and ones, so, for efficiency, any new computing architecture needs to accept that concept, adapt and handle the inherent precision problems that result.
|
||||
|
||||
**Plasticity** – Real-time tuning needs to take place to account for things changing.
|
||||
|
||||
**Probabilistic computing** – The authors suggest computers should get less precise, just like the human brain. Coming up with certain degrees of probability is faster than precise calculation, and it requires less information.
|
||||
|
||||
**Scalability** – The depth of the network allows for complexity. By introducing more layers, one gains more scaling.
|
||||
|
||||
**Sparsity** – Large-scale networks, including neural computers, can’t connect every node, just as not all neurons are connected to each other in the brain. It’s a redundancy that wastes resources. Hub-and-spoke topology works better and allows for better scaling. The same should happen in the next computers, the researchers say.
|
||||
|
||||
**Learning (credit assignment)** – The adjustment of synaptic weights (the strength and amount of influence synapses have) needs attention related to new information presented.
|
||||
|
||||
**Causality** – The relationship between cause and effect in a result has to be addressed. Causal interference is a problem, and machine learning generally has had problems with getting this bit right.
|
||||
|
||||
**Nonlinearity** – The brain isn’t linear like a computer is. “The brain operates at the edge of chaos to produce the most optimal learning and computation,” the team says. The next computer architecture needs to encompass that brain-like nonlinearity, but also operate within linearity, like today’s electronics.
|
||||
|
||||
“Our present hardware is not able to keep up,” Kendall and Kumar say in their paper, which also looks at materials. “The future of computing will not be about cramming more components on a chip but in rethinking processor architecture,” which should be neuromorphic.
|
||||
|
||||
**Now see** [10 of the world's fastest supercomputers][7]
|
||||
|
||||
Join the Network World communities on [Facebook][8] and [LinkedIn][9] to comment on topics that are top of mind.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://www.networkworld.com/article/3514692/beyond-moores-law-neuromorphic-computing.html
|
||||
|
||||
作者:[Patrick Nelson][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[译者ID](https://github.com/译者ID)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://www.networkworld.com/author/Patrick-Nelson/
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://www.networkworld.com/article/3189051/its-time-to-dump-moores-law-to-advance-computing-researcher-says.html
|
||||
[2]: https://www.networkworld.com/newsletters/signup.html
|
||||
[3]: https://aip.scitation.org/doi/10.1063/1.5129306
|
||||
[4]: https://www.networkworld.com/article/3440100/take-the-intelligent-route-with-consumption-based-storage.html?utm_source=IDG&utm_medium=promotions&utm_campaign=HPE21620&utm_content=sidebar ( Take the Intelligent Route with Consumption-Based Storage)
|
||||
[5]: https://www.networkworld.com/article/2931818/brain-uploads-coming-as-pcs-get-more-powerful.html
|
||||
[6]: https://www.networkworld.com/article/3510638/researchers-aim-to-build-transistors-that-can-compute-and-store-information-in-one-component.html
|
||||
[7]: https://www.networkworld.com/article/3236875/embargo-10-of-the-worlds-fastest-supercomputers.html
|
||||
[8]: https://www.facebook.com/NetworkWorld/
|
||||
[9]: https://www.linkedin.com/company/network-world
|
@ -0,0 +1,93 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: ( )
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (Never enough: Working openly with anxiety)
|
||||
[#]: via: (https://opensource.com/open-organization/20/1/leading-openly-anxiety)
|
||||
[#]: author: (Sam Knuth https://opensource.com/users/samfw)
|
||||
|
||||
Never enough: Working openly with anxiety
|
||||
======
|
||||
Open organizations reward initiative. For leaders with anxiety, that may
|
||||
fuel some exhausting patterns.
|
||||
![A graph of a wave.][1]
|
||||
|
||||
_Editor's note: This article is part of a series on working with mental health conditions. It details the author's personal experiences and is not meant to convey professional medical advice or guidance._
|
||||
|
||||
Something in [a recent podcast interview][2] with food writer Melissa Clark caught my ear. Asked if she was a "productive person,'' Clark replied by saying: "I am an anxious person. I have a lot of anxiety, and my way of coping with it is to be very, very busy […]. That's how I deal with the world. I [pause] _do_."
|
||||
|
||||
Clark's point resonated with me, because I live with multiple mental health conditions that have a fundamental impact on how I approach my work. And I believe they've played a role in the career success I've experienced.
|
||||
|
||||
I have [generalized anxiety disorder][3] and [obsessive-compulsive disorder][4] (OCD). Both of these conditions have had serious impacts on my life. Some of those impacts have been disruptive. At the same time, some have contributed positively to my success and my development as a leader in a growing organization.
|
||||
|
||||
I've spent most of my career in an organization built on openness and transparency, and yet I have rarely spoken about my mental health and how it might impact my work. In sharing these stories now, I hope to help reduce the [stigma of mental health at work][5] and connect with others who may be experiencing similar or related situations. Given the prevalence of [mental illness globally][6], chances are good that if you don't experience a mental health condition first hand, then you're likely working on a daily basis with someone who does.
|
||||
|
||||
Learning about how mental illness manifests at work may help you navigate relationships with others as well as your own challenges. As a leader in an open organization, I feel compelled to share my experiences in the hope that they are useful to others. Working openly has specific implications for me—and, I suspect, for others with similar mental health conditions—which I'll detail in this series.
|
||||
|
||||
### How it started
|
||||
|
||||
My anxiety and OCD started shortly after I graduated from college and was living in New York City (though I could probably trace their histories further, this was the moment when they became apparent). The wave of confidence I rode during the dot com boom was crushed in the bubble-bursting crash in March of 2001. The memory of coming into work, being called into an all hands meeting (the first we'd ever had at my small company), and being told that as of today there was no money to make payroll, is etched into my mind.
|
||||
|
||||
My girlfriend and I had just moved into a $2100-per-month apartment. Fear of not being able to pay the rent, or being otherwise swallowed up by the city, resulted in a general sense of unease and nervousness in my gut, combined with very real symptoms of OCD.
|
||||
|
||||
For example, while walking to work at a temp job I took after my company folded, I would wonder if I had remembered to lock the apartment door. I would retrace the steps of my morning routine in my mind, trying to find that moment when I turned the key. If I couldn't specifically remember, the sense of unease and worry in my gut would build to the point that I couldn't think about anything else. Frequently, I would turn around, rush back home, and double check that the door was locked. When I did so, I would have to do something memorable, like repeat a phrase out loud, so that I could mark the moment in my memory. Then, back on the way to work, I would again wonder if I had locked the door, and I could say "Yes, and when you did it, you said out loud 'It's Tuesday morning and I'm locking the door!'"
|
||||
|
||||
I've spent most of my career in an organization built on openness and transparency, and yet I have rarely spoken about my mental health and how it might impact my work.
|
||||
|
||||
### So, how does this translate to an advantage at work?
|
||||
|
||||
One of the primary factors contributing to success at my company is an ability to take initiative. Much work needs to be done, and we're in an environment of continual growth and change—which means it's not always clear _what_ needs to be done or _who_ should be doing it. That creates the opportunity for people to observe a need then step up to fill it. This is true in many open organizations, where everyone, regardless of job title or level, is encouraged to step forward.
|
||||
|
||||
Living with anxiety, I continually feel like I need to be doing something, or worry that I'm not doing enough. This motivates me to seek opportunities for contributing. In other words, the anxiety makes me proactive. Being "proactive" or a "self starter" is something you'll find in the "qualifications" section of many job postings!
|
||||
|
||||
I'm very fortunate to have built my career at a successful company, where continual growth creates financial incentives. One of my largest anxieties is about money—the fear of not having enough of it. Being in a leadership role at a quickly growing, profitable company exponentially multiplies what I call the anxiety performance loop (see Figure 1). A high quarterly bonus or other financial reward for a job well done is an invitation to do more, to raise the bar higher, to double down on the behaviors that seem to provide positive outcomes at work. Quarter after quarter after quarter.
|
||||
|
||||
![][7]
|
||||
|
||||
You can observe in all this a virtuous cycle: Opportunities I find at work satisfy my mental needs, and as a result I experience success and rewards. And this, on the face of it, is true.
|
||||
|
||||
So, what's the problem?
|
||||
|
||||
The anxiety-driven performance loop presents two challenges: it never ends, and it is based on a negative emotional state (fear and worry).
|
||||
|
||||
Perhaps the best phrase to illustrate this would be "What have you done for me lately?" In my mental landscape, this is what everyone is thinking about me all the time. No matter what I achieve, no matter what reward or recognition I receive, I imagine that within minutes the person acknowledging my achievement is thinking, "Now, why are you still sitting there? Get out and go do some more!"
|
||||
|
||||
People are not, of course, really thinking this. But my mind can locate enough truth in it to justify a quick return to the fear of not doing enough, which restarts the cycle.
|
||||
|
||||
The anxiety-driven performance loop presents two challenges: it never ends, and it is based on a negative emotional state (fear and worry).
|
||||
|
||||
We live in a world of short attention spans, high expectations, and significant competitive pressures. All of these are real challenges that fuel the idea that after each accomplishment we need to raise the bar higher and keep going. Having anxiety causes me to internalize these pressures, which triggers the "looping" effect.
|
||||
|
||||
The result is that both my company and my career benefit. Mentally, though, I get exhausted.
|
||||
|
||||
I have developed a few coping mechanisms to help me maintain balance:
|
||||
|
||||
* **Mediation.** After I was first diagnosed with my conditions almost 20 years ago, I saw a therapist. After a round of sessions, the therapist referred me to a mediation center, which opened up a new world of thought for me. I've recently been working to reinvigorate my daily practice.
|
||||
* **Exercise.** I'm a bit compulsive about exercise. I make time every single day for at least one hour of exercise (for me it's walking, cross country skiing, or running).
|
||||
* **Self awareness, reality checks, and reminders.** Anxiety and OCD can lead to a distorted view of reality. I may overstate stakes, read too much into other people's motivations, or imagine consequences that are just not realistic. Reminding myself of the _true_ worst case scenario (which usually isn't that bad), realizing that other people have more important things to worry about than me, or reminding myself that this is "just a job" can all help bring me back to a realistic perspective. I also have a few other people who can help with this.
|
||||
|
||||
|
||||
|
||||
So far I've focused primarily on the performance-enhancing aspects of anxiety. In future articles, I'll discuss some of its performance-reducing aspects, as well as the impact my condition has on my colleagues.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/open-organization/20/1/leading-openly-anxiety
|
||||
|
||||
作者:[Sam Knuth][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[译者ID](https://github.com/译者ID)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://opensource.com/users/samfw
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/LIFE_wavegraph.png?itok=z4pXCf_c (A graph of a wave.)
|
||||
[2]: http://www.third-story.com/listen/melissaclark
|
||||
[3]: https://www.mayoclinic.org/diseases-conditions/generalized-anxiety-disorder/symptoms-causes/syc-20360803
|
||||
[4]: https://www.mayoclinic.org/diseases-conditions/obsessive-compulsive-disorder/symptoms-causes/syc-20354432
|
||||
[5]: https://www.bloomberg.com/news/articles/2019-11-13/mental-health-is-still-a-don-t-ask-don-t-tell-subject-at-work
|
||||
[6]: https://ourworldindata.org/mental-health
|
||||
[7]: https://opensource.com/sites/default/files/images/open-org/anxiety_performance_loop.png
|
@ -0,0 +1,67 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: ( )
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (What you need to know about System76's open source firmware project)
|
||||
[#]: via: (https://opensource.com/article/20/1/system76-open-source-firmware)
|
||||
[#]: author: (Don Watkins https://opensource.com/users/don-watkins)
|
||||
|
||||
What you need to know about System76's open source firmware project
|
||||
======
|
||||
This Q&A with System76 principal engineer Jeremy Soller discusses the
|
||||
company's project for an open source embedded controller.
|
||||
![Person using a laptop][1]
|
||||
|
||||
When you power on your computer, there’s a lot more going on than you might think. One of the most important elements involved is the embedded controller (EC). This is what is responsible for providing abstractions for the battery, charging system, keyboard, touchpad, suspend/resume, and thermal control, among others. These controllers are typically proprietary and usually run proprietary firmware.
|
||||
|
||||
System76 is about to change that paradigm. Recently, the company adopted [coreboot][2] for their Galago Pro and Darter Pro laptop models. Now they intend to extend the open source approach to the EC. There is a project associated with Chrome OS devices called [Chromium EC][3] that is open source; however, it is only available for Chromebooks and specific EC chips. System76 wanted to supply their customers with an open source embedded controller firmware, too.
|
||||
|
||||
They had to start from scratch with a project that can compile for the EC architecture they have in their laptops, the [Intel 8051][4]. Their project for an [open source EC][5], the System76 EC, is a GPLv3-licensed embedded controller firmware for System76 laptops. It is designed to be portable to boards using several 8-bit microcontrollers. This project has grown to the point where it is now possible to boot a System76 Galago Pro and have the battery, keyboard, touchpad, suspend/resume, and thermal control mentioned earlier.
|
||||
|
||||
Eager to learn more, I emailed [Jeremy Soller][6], who is Principal Engineer at System76, for a deeper dive. Below are some highlights from our conversation.
|
||||
|
||||
### Q: What is the importance of the Intel 8051? Do all laptops use that chipset?
|
||||
|
||||
A: The embedded controller in our laptops, the ITE IT8587E, uses the Intel 8051 instruction set. Not all laptops use this instruction set, but many do. This is important because we need a toolchain that can compile firmware for the 8051 instruction set, as well as firmware that is written for that toolchain.
|
||||
|
||||
### Q: What is involved in writing open code to utilize the Intel 8051?
|
||||
|
||||
A: Mostly we have to define the registers for utilizing hardware on the embedded controller. There are protocols like SMBus and PECI that are implemented in hardware and need drivers for them. These drivers often have to be written for each embedded controller to abstract its hardware, so there is a common interface. Our EC firmware has abstractions for some Arduinos as well as the EC in our laptops, so we can write firmware that is portable.
|
||||
|
||||
### Q: Google developed an open EC. Why not fork that project?
|
||||
|
||||
A: Our initial concept was to utilize Chromium EC for our open EC firmware, but this was not possible. After discussions with members of the team at Google working on it, it became clear that the firmware was not capable of being ported to 8-bit microcontrollers like the 8051 used in our EC, or the AVR used in many Arduinos. It was mostly targeted to ARM microcontrollers. We mutually concluded that it was better to start a new project targeting 8-bit microcontrollers, which is a new codebase that is GPLv3, as opposed to the BSD license used by Chromium EC.
|
||||
|
||||
### Q: How significant is it that System76 is open sourcing the code?
|
||||
|
||||
A: The only other x86_64 laptops with open source EC firmware are certain Chromebooks using Chromium EC. However, these laptops have poor support for full desktop Linux distributions such as Ubuntu. We are providing users of our laptops with significant capabilities to view and modify the behavior of the laptop to their needs, all while running a full desktop operating system. When it is paired with our open system firmware, there is very little that a user cannot do with one of these laptops.
|
||||
|
||||
### Q: What implications does open code have for firmware and other developers?
|
||||
|
||||
A: I strongly believe that open EC firmware will be just as important for hardware customization as open system firmware. The user can adjust keyboard mappings, change fan curves, modify battery charging settings, and more. The most exciting thing about this is that I cannot predict all that is possible with this change. Many of the components in the system are tied to the EC firmware. Having the ability to change the EC and system firmware means these components could potentially be modified in a large number of different, unpredictable ways.
|
||||
|
||||
### Q: What is really important about developing software for this EC, and what sets it apart?
|
||||
|
||||
A: Something particularly important is that the EC we are using is the IT8587E, and its instruction set architecture is Intel 8051. Chromium EC cannot be compiled for the 8051, due to being targeted toward 32-bit microcontrollers. Our project aims to support the ubiquitous 8-bit microcontrollers from many vendors, as well as Arduino’s for easy prototyping. In addition, this unifies the work we were doing on [Thelio Io][7] with the work we have done on laptop firmware.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/20/1/system76-open-source-firmware
|
||||
|
||||
作者:[Don Watkins][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[译者ID](https://github.com/译者ID)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://opensource.com/users/don-watkins
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/laptop_screen_desk_work_chat_text.png?itok=UXqIDRDD (Person using a laptop)
|
||||
[2]: https://opensource.com/article/19/11/coreboot-system76-laptops
|
||||
[3]: https://chromium.googlesource.com/chromiumos/platform/ec/+/master/README.md
|
||||
[4]: https://en.wikipedia.org/wiki/Intel_MCS-51
|
||||
[5]: https://github.com/system76/ec
|
||||
[6]: https://www.linkedin.com/in/jeremy-soller-0475a117/
|
||||
[7]: https://opensource.com/article/18/11/system76-thelio-desktop-computer
|
@ -1,5 +1,5 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: ( )
|
||||
[#]: translator: (wxy)
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
|
@ -1,85 +0,0 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: ( )
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (How to setup multiple monitors in sway)
|
||||
[#]: via: (https://fedoramagazine.org/how-to-setup-multiple-monitors-in-sway/)
|
||||
[#]: author: (arte219 https://fedoramagazine.org/author/arte219/)
|
||||
|
||||
How to setup multiple monitors in sway
|
||||
======
|
||||
|
||||
![][1]
|
||||
|
||||
Sway is a tiling Wayland compositor which has mostly the same features, look and workflow as the [i3 X11 window manager][2]. Because Sway uses Wayland instead of X11, the tools to setup X11 don’t always work in sway. This includes tools like _xrandr_, which are used in X11 window managers or desktops to setup monitors. This is why monitors have to be setup by editing the sway config file, and that’s what this article is about.
|
||||
|
||||
## **Getting your monitor ID’s**
|
||||
|
||||
First, you have to get the names sway uses to refer to your monitors. You can do this by running:
|
||||
|
||||
```
|
||||
$ swaymsg -t get_outputs
|
||||
```
|
||||
|
||||
You will get information about all of your monitors, every monitor separated by an empty line.
|
||||
|
||||
You have to look for the first line of every section, and for what’s after “Output”. For example, when you see a line like “_Output DVI-D-1 ‘Philips Consumer Electronics Company’_”, the output ID is “DVI-D-1”. Note these ID’s and which physical monitors they belong to.
|
||||
|
||||
## **Editing the config file**
|
||||
|
||||
If you haven’t edited the Sway config file before, you have to copy it to your home directory by running this command:
|
||||
|
||||
```
|
||||
cp -r /etc/sway/config ~/.config/sway/config
|
||||
```
|
||||
|
||||
Now the default config file is located in _~/.config/sway_ and called “config”. You can edit it using any text editor.
|
||||
|
||||
Now you have to do a little bit of math. Imagine a grid with the origin in the top left corner. The units of the X and Y coordinates are pixels. The Y axis is inverted. This means that if you, for example, start at the origin and you move 100 pixels to the right and 80 pixels down, your coordinates will be (100, 80).
|
||||
|
||||
You have to calculate where your displays are going to end up on this grid. The locations of the displays are specified with the top left pixel. For example, if we want to have a monitor with name HDMI1 and a resolution of 1920×1080, and to the right of it a laptop monitor with name eDP1 and a resolution of 1600×900, you have to type this in your config file:
|
||||
|
||||
```
|
||||
output HDMI1 pos 0 0
|
||||
output eDP1 pos 1920 0
|
||||
```
|
||||
|
||||
You can also specify the resolutions manually by using the _res_ option:
|
||||
|
||||
```
|
||||
output HDMI1 pos 0 0 res 1920x1080
|
||||
output eDP1 pos 1920 0 res 1600x900
|
||||
```
|
||||
|
||||
## **Binding workspaces to monitors**
|
||||
|
||||
Using sway with multiple monitors can be a little bit tricky with workspace management. Luckily, you can bind workspaces to a specific monitor, so you can easily switch to that monitor and use your displays more efficiently. This can simply be done by the workspace command in your config file. For example, if you want to bind workspace 1 and 2 to monitor DVI-D-1 and workspace 8 and 9 to monitor HDMI-A-1, you can do that by using:
|
||||
|
||||
```
|
||||
workspace 1 output DVI-D-1
|
||||
workspace 2 output DVI-D-1
|
||||
```
|
||||
|
||||
```
|
||||
workspace 8 output HDMI-A-1
|
||||
workspace 9 output HDMI-A-1
|
||||
```
|
||||
|
||||
That’s it! These are the basics of multi monitor setup in sway. A more detailed guide can be found at <https://github.com/swaywm/sway/wiki#Multihead>.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://fedoramagazine.org/how-to-setup-multiple-monitors-in-sway/
|
||||
|
||||
作者:[arte219][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[译者ID](https://github.com/译者ID)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://fedoramagazine.org/author/arte219/
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://fedoramagazine.org/wp-content/uploads/2020/01/sway-multiple-monitors-816x345.png
|
||||
[2]: https://fedoramagazine.org/getting-started-i3-window-manager/
|
@ -1,5 +1,5 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: ( )
|
||||
[#]: translator: (geekpi)
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
|
@ -1,77 +0,0 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: (geekpi)
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (Keep a journal of your activities with this Python program)
|
||||
[#]: via: (https://opensource.com/article/20/1/python-journal)
|
||||
[#]: author: (Kevin Sonney https://opensource.com/users/ksonney)
|
||||
|
||||
Keep a journal of your activities with this Python program
|
||||
======
|
||||
Jrnl creates a searchable, timestamped, exportable, and (if you want)
|
||||
encrypted log of your daily activities. Learn more in the eighth in our
|
||||
series on 20 ways to be more productive with open source in 2020.
|
||||
![Writing in a notebook][1]
|
||||
|
||||
Last year, I brought you 19 days of new (to you) productivity tools for 2019. This year, I'm taking a different approach: building an environment that will allow you to be more productive in the new year, using tools you may or may not already be using.
|
||||
|
||||
### Journaling with jrnl
|
||||
|
||||
At my workplace, many of us post an "end of day" status to Slack before we leave for the day. With a lot of projects going on and a global team, it is a pretty good way to share what you got done, what isn't done, and what you need help with. But some days are so busy, so hectic that I can't remember what I did. And this is where journaling comes in.
|
||||
|
||||
![jrnl][2]
|
||||
|
||||
It's pretty easy to keep a text editor open and just add a line when you do something. But it can be challenging to go back and figure out when you make a particular note or pull out related lines quickly and easily. Fortunately, [jrnl][3] is here to help.
|
||||
|
||||
Jrnl allows you to enter a quick entry from your command line, search past entries, and export to rich text formats like HTML and Markdown. You can have multiple journals, meaning you can keep your work entries separated from private ones. It stores entries as plain text, so even if jrnl stops working, you have your data.
|
||||
|
||||
Since jrnl is a Python program, the easiest way to install it is with **pip3 install jrnl**; this will make sure you get the latest and greatest version. On its first run, it will ask some questions, and then you are good to go.
|
||||
|
||||
![jrnl's first run][4]
|
||||
|
||||
Now, whenever you need to make a note or log work, simply type **jrnl <some text>,** and it will be logged with a timestamp to the default file. You can search for entries on a specific date with **jrnl -on YYYY-MM-DD**, entries since a date with **jrnl -from YYYY-MM-DD**, and entries up to a specific date with **jrnl -to YYYY-MM-DD**. Search terms can be combined with the **-and** parameter, allowing for searches like **jrnl -from 2019-01-01 -and -to 2019-12-31**.
|
||||
|
||||
You can also edit entries in the journal with the **\--edit** command-line flag. Before you do, set up your default editor for entries by editing the file **~/.config/jrnl/jrnl.yaml**. This is also where you can specify what files to use for journals, what special character to use for tags, and a few other options. Right now, the important thing is to set the editor. I use Vim, and jrnl's documentation has some [helpful hints][5] for using other editors like VSCode and Sublime Text.
|
||||
|
||||
![Example jrnl config file][6]
|
||||
|
||||
Jrnl can also encrypt journal files. By setting the global **encrypt** variable, you'll tell jrnl to encrypt all the journals you have defined. Encryption can also be set per file by adding **encrypt: true** to the definition in the configuration file.
|
||||
|
||||
|
||||
```
|
||||
journals:
|
||||
default: ~/journals/journal.txt
|
||||
work: ~/journals/work.txt
|
||||
private:
|
||||
journal: ~/journals/private.txt
|
||||
encrypt: true
|
||||
```
|
||||
|
||||
If a journal isn't already encrypted, you will be prompted for the password on any actions for that journal. The journal file will be stored encrypted on disk and safe from prying eyes. [The jrnl documentation][7] has a lot more information on how it works, what ciphers it uses, and so on.
|
||||
|
||||
![Encrypted jrnl file][8]
|
||||
|
||||
Journaling helps me remember what I did when and find it later when I need it.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/20/1/python-journal
|
||||
|
||||
作者:[Kevin Sonney][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[译者ID](https://github.com/译者ID)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://opensource.com/users/ksonney
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/notebook-writing-pen.jpg?itok=uA3dCfu_ (Writing in a notebook)
|
||||
[2]: https://opensource.com/sites/default/files/uploads/productivity_8-1.png (jrnl)
|
||||
[3]: https://jrnl.sh/
|
||||
[4]: https://opensource.com/sites/default/files/uploads/productivity_8-2.png (jrnl's first run)
|
||||
[5]: https://jrnl.sh/recipes/#external-editors
|
||||
[6]: https://opensource.com/sites/default/files/uploads/productivity_8-3.png (Example jrnl config file)
|
||||
[7]: https://jrnl.sh/encryption/
|
||||
[8]: https://opensource.com/sites/default/files/uploads/productivity_8-4.png (Encrypted jrnl file)
|
@ -0,0 +1,496 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: ( )
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (13 of the best React JavaScript frameworks)
|
||||
[#]: via: (https://opensource.com/article/20/1/react-javascript-frameworks)
|
||||
[#]: author: (Amit Dua https://opensource.com/users/amitdua)
|
||||
|
||||
13 of the best React JavaScript frameworks
|
||||
======
|
||||
If you're using React.js or React Native to create user interfaces, try
|
||||
these frameworks.
|
||||
![Javascript code close-up with neon graphic overlay][1]
|
||||
|
||||
React.js and React Native are popular open source platforms for developing user interfaces (UIs); both rank well for desirability and use in StackOverflow's 2019 Developer Survey. React.js was developed by Facebook in 2011 as a JavaScript library to address the need for cross-platform, dynamic, and high-performing UIs, while React Native, which Facebook released in 2015, is used for building native applications using JavaScript.
|
||||
|
||||
The following are 13 of the best React JavaScript frameworks; all are open source—the first 11 (like React) are licensed under the MIT license and the latter two are licensed under Apache 2.0.
|
||||
|
||||
### 1\. Create React App
|
||||
|
||||
This command-line interface from Facebook developers is a must-have for every React Native project. The reason is that the [Create React App][2] is easy to use and prevents you from having to manually set up and configure your app, thereby saving you a lot of time and effort. With just a simple command, everything will be ready for you to create a React native project easily. You can use it to build a catalog and files, and the framework also includes tools to build, test, and launch your application.
|
||||
|
||||
|
||||
```
|
||||
# Install package
|
||||
$ npm install -g create-react-native-web-app
|
||||
|
||||
# Run create-react-native-web-app <project-directory>
|
||||
$ create-react-native-web-app myApp
|
||||
|
||||
# cd into your <project-directory>
|
||||
$ cd myApp
|
||||
|
||||
# Run Web/Ios/Android development
|
||||
# Web
|
||||
$ npm run web
|
||||
|
||||
# IOS (simulator)
|
||||
$ npm run ios
|
||||
|
||||
# Android (connected device)
|
||||
$ npm run android
|
||||
```
|
||||
|
||||
#### Why opt for Create React App
|
||||
|
||||
1. Top-notch tool developed with a configure bundle, transpiler, and test runner
|
||||
2. No configuration and no extra files at the app structure
|
||||
3. Fixed Development stack
|
||||
4. Effective Fast developing tool
|
||||
|
||||
|
||||
|
||||
### 2\. Material Kit React
|
||||
|
||||
Inspired by Google's Material Design system, [Material Kit React][3] can be an excellent choice for building React UI components. The best thing about this library is that it offers a lot of components that are built to fit together and look incredible. There are over 1,000 fully coded components, and each one comes with separate layers organized in folders. This means you have thousands of options to choose from. There are several example pages as well, in case you want to get inspiration or share an idea or concept with someone.
|
||||
|
||||
#### Installing the Material Kit
|
||||
|
||||
|
||||
```
|
||||
` $ npm install @material-ui/core`
|
||||
```
|
||||
|
||||
#### Implementation
|
||||
|
||||
|
||||
```
|
||||
import React from 'react';
|
||||
import Button from '@material-ui/core/Button';
|
||||
|
||||
const App = () => (
|
||||
<Button variant="contained" color="primary">
|
||||
Hello World
|
||||
</Button>
|
||||
);
|
||||
```
|
||||
|
||||
The Material-UI component work without any additional setup, and do not pollute the global scope.
|
||||
|
||||
#### Advantage
|
||||
|
||||
The React component supports easier and faster web development. With it, you can build your own design system, or start with Material Design.
|
||||
|
||||
### 3\. Shards React
|
||||
|
||||
This modern React UI kit has been built from scratch to achieve fast performance. It has a modern design system that lets you customize things the way you want. You can even download the source files to customize things at the code level. Also, the SCSS syntax used for styling enhances the development experience.
|
||||
|
||||
[Shards React][4] is based on Shards and uses React Datepicker, React Popper (a positioning engine), and noUISlider. It also supports incredible Material Design icons. There are some pre-made versions to help you gain some inspiration and get started.
|
||||
|
||||
#### Installation Shards with Yarn or NPM
|
||||
|
||||
|
||||
```
|
||||
# Yarn
|
||||
yarn add shards-react
|
||||
|
||||
# NPM
|
||||
npm i shards-react
|
||||
```
|
||||
|
||||
#### Advantages
|
||||
|
||||
1. Shards is lightweight having a small footprint and weighting ~13kb minified and gzipped
|
||||
2. Shards is responsive by default being able to adapt and reflow its layout to any screen size
|
||||
3. Shards is well documented so you can start building beautiful interfaces as soon as possible
|
||||
|
||||
|
||||
|
||||
### 4\. Styled Components
|
||||
|
||||
This efficient CSS tool helps build small, reusable components that are responsible for an app's visual interface. With traditional CSS, you can accidentally overwrite the selectors used in other places on the website, but [Styled Components][5] can help you completely avoid this problem by using a CSS syntax directly inside your components.
|
||||
|
||||
#### Installation
|
||||
|
||||
|
||||
```
|
||||
`npm install --save styled-components`
|
||||
```
|
||||
|
||||
#### Implementation
|
||||
|
||||
|
||||
```
|
||||
const Button = styled.button`
|
||||
background: background_type;
|
||||
border-radius: radius_value;
|
||||
border: abc;
|
||||
color: name_of_color;
|
||||
Margin: margin_value;
|
||||
padding: value;
|
||||
```
|
||||
|
||||
#### Advantage
|
||||
|
||||
1. Make components more readable
|
||||
2. Components rely on JavaScript for their style
|
||||
3. Build custom components with CSS
|
||||
4. Inline styling
|
||||
5. Convert component even the custom component to a styled component by simply invoking styled()
|
||||
|
||||
|
||||
|
||||
### 5\. Redux
|
||||
|
||||
[Redux][6] is a state-management solution for JavaScript applications. While it is mostly used for React.js, you can also use it for other React-like frameworks.
|
||||
|
||||
#### Installation
|
||||
|
||||
|
||||
```
|
||||
sudo npm install redux
|
||||
sudo npm install react-redux
|
||||
```
|
||||
|
||||
#### Implementation
|
||||
|
||||
|
||||
```
|
||||
import { createStore } from "redux";
|
||||
import rotateReducer from "reducers/rotateReducer";
|
||||
|
||||
function configureStore(state = { rotating: value}) {
|
||||
return createStore(rotateReducer,state);
|
||||
}
|
||||
|
||||
export default configureStore;
|
||||
```
|
||||
|
||||
#### Advantage
|
||||
|
||||
1. Predictable state update helps in defining the data flow of the application
|
||||
2. Logic easier to test and time-travel debugging with reducer functions
|
||||
3. Centralizing the state
|
||||
|
||||
|
||||
|
||||
### 6\. React Virtualized
|
||||
|
||||
This React Native JavaScript framework helps in large-list and tabular-data rendering. Using [React Virtualized][7], you can restrict the number of requests and Document Object Model (DOM) elements, thus enhancing the performance of React apps.
|
||||
|
||||
#### Installation
|
||||
|
||||
|
||||
```
|
||||
`npm install react-virtualized`
|
||||
```
|
||||
|
||||
#### Implementation
|
||||
|
||||
|
||||
```
|
||||
import 'react-virtualized/styles.css'
|
||||
import { Column, Table } from 'react-virtualized'
|
||||
import AutoSizer from 'react-virtualized/dist/commonjs/AutoSizer'
|
||||
import List from 'react-virtualized/dist/commonjs/List'
|
||||
{
|
||||
alias: {
|
||||
'react-virtualized/List': 'react-virtualized/dist/es/List',
|
||||
},
|
||||
...rest
|
||||
}
|
||||
```
|
||||
|
||||
#### Advantages
|
||||
|
||||
1. Display a large amount of data efficiently
|
||||
2. Rendering a huge data set
|
||||
3. Implements virtual rendering with a set of components
|
||||
|
||||
|
||||
|
||||
### 7\. React DnD
|
||||
|
||||
[ReactDnD][8] is responsible for the creation of complex drag-and-drop interfaces. There are dozens of drag-and-drop libraries, but React DnD stands out because it is built on top of modern HTML5's drag-and-drop API, making the process of creating interfaces easy.
|
||||
|
||||
#### Installation
|
||||
|
||||
|
||||
```
|
||||
`npm install react-dnd-preview`
|
||||
```
|
||||
|
||||
#### Implementation
|
||||
|
||||
|
||||
```
|
||||
import Preview from 'react-dnd-preview';
|
||||
|
||||
const generatePreview = ({itemType, item, style}) => {
|
||||
return <div class="item-list" style={style}>{itemType}</div>;
|
||||
};
|
||||
|
||||
class App extends React.Component {
|
||||
...
|
||||
|
||||
render() {
|
||||
return (
|
||||
<DndProvider backend={MyBackend}>
|
||||
<ItemList />
|
||||
<Preview generator={generatePreview} />
|
||||
// or
|
||||
<Preview>{generatePreview}</Preview>
|
||||
</DndProvider>
|
||||
);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
#### Advantages
|
||||
|
||||
1. Beautiful and natural movement of items bouquet
|
||||
2. Powerful keyboard and screen reader support wheelchair
|
||||
3. Extremely performant
|
||||
4. Clean and powerful api
|
||||
5. Plays extremely well with standard browser interactions
|
||||
6. Unopinionated styling
|
||||
7. No creation of additional wrapper dom nodes
|
||||
|
||||
|
||||
|
||||
### 8\. React Bootstrap
|
||||
|
||||
This UI Kit library replaces Bootstrap's JavaScript with React, giving you more control over the functions of each component. Because each component is built to be easily accessible, [React Bootstrap][9] can be beneficial for frontend framework building. There are thousands of bootstrap themes to choose from.
|
||||
|
||||
#### Installation
|
||||
|
||||
|
||||
```
|
||||
`npm install react-bootstrap bootstrap`
|
||||
```
|
||||
|
||||
#### Implementation
|
||||
|
||||
|
||||
```
|
||||
import 'bootstrap/dist/css/bootstrap.min.css';
|
||||
import React from 'react';
|
||||
import ReactDOM from 'react-dom';
|
||||
import './index.css';
|
||||
import App from './App';
|
||||
import registerServiceWorker from './registerServiceWorker';
|
||||
|
||||
ReactDOM.render(<App />, document.getElementById('root'));
|
||||
registerServiceWorker();
|
||||
```
|
||||
|
||||
#### Advantages
|
||||
|
||||
1. Can easily import required code/component
|
||||
2. Saves typing and bugs by compressing the Bootstrap
|
||||
3. Reduces typing efforts and conflicts by compressing the Bootstrap
|
||||
4. It is easy to use
|
||||
5. It encapsulates in elements
|
||||
|
||||
|
||||
|
||||
### 9\. React Suite
|
||||
|
||||
[React Suite][10] is another efficient React.js framework that contains a wide range of component libraries for enterprise system products. It supports all major browsers and platforms, making it suitable for just about any system. It also supports server-side rendering.
|
||||
|
||||
#### Installation
|
||||
|
||||
|
||||
```
|
||||
`npm i rsuite --save`
|
||||
```
|
||||
|
||||
#### Implementation
|
||||
|
||||
|
||||
```
|
||||
import { Button } from 'rsuite';
|
||||
import 'rsuite/styles/less/index.less';
|
||||
ReactDOM.render(<Button>Button</Button>, mountNode);
|
||||
```
|
||||
|
||||
#### Advantages
|
||||
|
||||
1. Easily manage the application easily by the help of global accessing features
|
||||
2. Redux library centralizes the state management
|
||||
3. Redux is flexible with all the UI layers and has a large ecosystem
|
||||
4. Redux reduces this complexity and provides global accessibility
|
||||
|
||||
|
||||
|
||||
### 10\. PrimeReact
|
||||
|
||||
The best thing about [PrimeReact][11] is that it provides components that cover almost all of a UI's basic requirements, such as input options, menus, data presentations, messages, etc. The framework also pays close attention to the mobile experience, thus helping you design touch-optimized elements.
|
||||
|
||||
#### Installation
|
||||
|
||||
|
||||
```
|
||||
npm install primereact --save
|
||||
npm install primeicons --save
|
||||
```
|
||||
|
||||
#### Implementation
|
||||
|
||||
|
||||
```
|
||||
import {Dialog} from 'primereact/dialog';
|
||||
import {Accordion,AccordionTab} from 'primereact/accordion';
|
||||
dependencies: {
|
||||
"react": "^16.0.0",
|
||||
"react-dom": "^16.0.0",
|
||||
"react-transition-group": "^2.2.1",
|
||||
"classnames": "^2.2.5",
|
||||
"primeicons": "^2.0.0"
|
||||
}
|
||||
```
|
||||
|
||||
#### Advantages
|
||||
|
||||
1. Simplicity and Performance
|
||||
2. Ease of Use
|
||||
3. Spring Applications
|
||||
4. Create rich user interfaces
|
||||
5. Usability and simplicity
|
||||
|
||||
|
||||
|
||||
### 11\. React Router
|
||||
|
||||
[React Router][12] is quite popular in the React Native developer community because it is very easy to start working with. All you need is Git and the npm package manager installed on your PC, a basic knowledge of React, and a willingness to learn. There is nothing too complicated.
|
||||
|
||||
#### Installation
|
||||
|
||||
|
||||
```
|
||||
`$ npm install --save react-router`
|
||||
```
|
||||
|
||||
#### Implementation
|
||||
|
||||
|
||||
```
|
||||
import { Router, Route, Switch } from "react-router";
|
||||
|
||||
// using CommonJS modules
|
||||
var Router = require("react-router").Router;
|
||||
var Route = require("react-router").Route;
|
||||
var Switch = require("react-router").Switch;
|
||||
```
|
||||
|
||||
#### Advantages
|
||||
|
||||
1. Dynamic route matching
|
||||
2. CSS transitions on views when navigating
|
||||
3. Standardized app structure and behavior
|
||||
|
||||
|
||||
|
||||
### 12\. Grommet
|
||||
|
||||
[Grommet][13] is used for creating responsive and accessible mobile-first web apps. The best thing about this Apache 2.0-licensed JavaScript framework is that it offers accessibility, modularity, responsiveness, and theming in one small package. Perhaps this is one of the major reasons it is widely used by companies like Netflix, GE, Uber, and Boeing.
|
||||
|
||||
#### Installation for yarn and npm
|
||||
|
||||
|
||||
```
|
||||
` $ npm install grommet styled-components --save`
|
||||
```
|
||||
|
||||
#### Implementation
|
||||
|
||||
|
||||
```
|
||||
"grommet-controls/chartjs": {
|
||||
"transform": "grommet-controls/es6/chartjs/${member}",
|
||||
"preventFullImport": true,
|
||||
"skipDefaultConversion": true
|
||||
```
|
||||
|
||||
#### Advantages
|
||||
|
||||
1. Create one toolkit as a packaged deal
|
||||
2. Take the open-door policy to the extreme
|
||||
3. Restructuring can help influence an established org
|
||||
|
||||
|
||||
|
||||
### 13\. Onsen UI
|
||||
|
||||
[Onsen UI][14] is another mobile app development framework that uses HTML5 and JavaScript and offers integration with Angular, Vue, and React. It is licensed under Apache 2.0.
|
||||
|
||||
Onsen offers tabs, a side menu, stack navigation, and other components. The best thing about the framework is that all of its components have iOS and Android Material Design support along with automatic styling, which changes the app's appearance depending on the platform.
|
||||
|
||||
#### Installation
|
||||
|
||||
|
||||
```
|
||||
`npm install onsenui`
|
||||
```
|
||||
|
||||
#### Implementation
|
||||
|
||||
|
||||
```
|
||||
(function() {
|
||||
'use strict';
|
||||
var module = angular.module('app', ['onsen']);
|
||||
|
||||
module.controller('AppController', function($scope) {
|
||||
// more to come here
|
||||
});
|
||||
|
||||
})();
|
||||
```
|
||||
|
||||
#### Advantages
|
||||
|
||||
1. Onsen UI is built on free and open-source code
|
||||
2. Doesn't force any type of DRM on apps developed with it
|
||||
3. Compiles JavaScript and HTML5 code
|
||||
4. Offers end users the native experience
|
||||
|
||||
|
||||
|
||||
* * *
|
||||
|
||||
What are your favorite React JavaScript frameworks? Please share them in the comments.
|
||||
|
||||
Learn more about React Native, a framework for building native apps using React and JavaScript.
|
||||
|
||||
Whether you are new to JavaScript or an experienced JavaScript developer, using libraries and...
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/20/1/react-javascript-frameworks
|
||||
|
||||
作者:[Amit Dua][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[译者ID](https://github.com/译者ID)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://opensource.com/users/amitdua
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/code_javascript.jpg?itok=60evKmGl (Javascript code close-up with neon graphic overlay)
|
||||
[2]: https://github.com/facebook/create-react-app
|
||||
[3]: https://github.com/creativetimofficial/material-kit-react
|
||||
[4]: https://github.com/DesignRevision/shards-react
|
||||
[5]: https://github.com/styled-components/styled-components
|
||||
[6]: https://github.com/reduxjs/redux
|
||||
[7]: https://github.com/bvaughn/react-virtualized
|
||||
[8]: https://github.com/react-dnd/react-dnd/
|
||||
[9]: https://github.com/react-bootstrap/react-bootstrap
|
||||
[10]: https://github.com/rsuite/rsuite
|
||||
[11]: https://github.com/primefaces/primereact
|
||||
[12]: https://github.com/ReactTraining/react-router
|
||||
[13]: https://github.com/grommet/grommet
|
||||
[14]: https://github.com/OnsenUI/OnsenUI
|
63
sources/tech/20200121 Read Reddit from the Linux terminal.md
Normal file
63
sources/tech/20200121 Read Reddit from the Linux terminal.md
Normal file
@ -0,0 +1,63 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: ( )
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (Read Reddit from the Linux terminal)
|
||||
[#]: via: (https://opensource.com/article/20/1/open-source-reddit-client)
|
||||
[#]: author: (Kevin Sonney https://opensource.com/users/ksonney)
|
||||
|
||||
Read Reddit from the Linux terminal
|
||||
======
|
||||
Take brief mental breaks from your work with Reddit client Tuir in the
|
||||
eleventh in our series on 20 ways to be more productive with open source
|
||||
in 2020.
|
||||
![Digital creative of a browser on the internet][1]
|
||||
|
||||
Last year, I brought you 19 days of new (to you) productivity tools for 2019. This year, I'm taking a different approach: building an environment that will allow you to be more productive in the new year, using tools you may or may not already be using.
|
||||
|
||||
### Read Reddit with Tuir
|
||||
|
||||
Taking short breaks is essential in staying productive. One of the places I like to go when taking a break is [Reddit][2], which can be a great resource if you want it to be. I find all kinds of articles there about DevOps, productivity, Emacs, chickens, and some ChromeOS projects I play with. These discussions can be valuable. I also follow a couple of subreddits that are just pictures of animals because I like pictures of animals (and not just chickens), and sometimes after a long work session, what I really need are kitten pictures.
|
||||
|
||||
![/r/emacs in Tuir][3]
|
||||
|
||||
When I'm reading Reddit (and not just looking at pictures of baby animals), I use [Tuir][4], which stands for Terminal UI for Reddit. Tuir is a feature-complete Reddit client and can be run on any system that runs Python. Installation is done through the pip Python installer and is exceptionally painless.
|
||||
|
||||
On its first run, Tuir will take you to the default article list on Reddit. The top and bottom of the screen have bars that list different commands. The top bar shows your location on Reddit, and the second line shows the commands filtered by the Reddit "Hot/New/Controversial/etc." categories. Filtering is invoked by pressing the number next to the filter you want to use.
|
||||
|
||||
![Filtering by Reddit's "top" category][5]
|
||||
|
||||
You can navigate through the list with the arrow keys, or with the **j**, **k**, **h**, and **l** keys, the same ones you use for Vi/Vim. The bottom bar has commands for navigating the app. If you want to jump to another subreddit, simply hit the **/** key to open a prompt and type the name of the subreddit you want to interact with.
|
||||
|
||||
![Logging in][6]
|
||||
|
||||
Some things aren't accessible unless you are logged in. Tuir will prompt you if you try to do something that requires logging in, like posting a new article (**c**) or up/down voting (**a** and **z**, respectively). To log in, press the **u** key. This will launch a browser to log in via OAuth2, and Tuir will save the token. Afterward, your username should appear in the top-right of the screen.
|
||||
|
||||
Tuir can also launch your browser to view images, load links, and so on. With a little tuning, it can even show images on the terminal (although I didn't manage to get that to work properly).
|
||||
|
||||
Overall, I'm pretty happy with Tuir for quickly catching up on Reddit when I need a break.
|
||||
|
||||
Tuir is one of two forks of the now-defunct [RTV][7]. The other is [TTRV][8], which isn't available via pip (yet) but has the same features. I'm looking forward to seeing how they differentiate themselves over time.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/20/1/open-source-reddit-client
|
||||
|
||||
作者:[Kevin Sonney][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[译者ID](https://github.com/译者ID)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://opensource.com/users/ksonney
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/browser_web_internet_website.png?itok=g5B_Bw62 (Digital creative of a browser on the internet)
|
||||
[2]: https://www.reddit.com/
|
||||
[3]: https://opensource.com/sites/default/files/uploads/productivity_11-1.png (/r/emacs in Tuir)
|
||||
[4]: https://gitlab.com/ajak/tuir
|
||||
[5]: https://opensource.com/sites/default/files/uploads/productivity_11-2.png (Filtering by Reddit's "top" category)
|
||||
[6]: https://opensource.com/sites/default/files/uploads/productivity_11-3.png (Logging in)
|
||||
[7]: https://github.com/michael-lazar/rtv
|
||||
[8]: https://github.com/tildeclub/ttrv
|
@ -0,0 +1,75 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: (geekpi)
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (Keep a journal of your activities with this Python program)
|
||||
[#]: via: (https://opensource.com/article/20/1/python-journal)
|
||||
[#]: author: (Kevin Sonney https://opensource.com/users/ksonney)
|
||||
|
||||
使用这个 Python 程序记录你的活动
|
||||
======
|
||||
Jrnl 可以创建可搜索、带时间戳、可导出、加密的(如果需要)的日常活动日志。在我们的 20 个使用开源提升生产力的系列的第八篇文章中了解更多。
|
||||
![Writing in a notebook][1]
|
||||
|
||||
去年,我在 19 天里给你介绍了 19 个新(对你而言)的生产力工具。今年,我换了一种方式:使用你在使用或者还没使用的工具,构建一个使你可以在新一年更加高效的环境。
|
||||
|
||||
### 使用 jrnl 记录日志
|
||||
|
||||
在我的公司,许多人会在下班之前发送一个“一天结束”的状态。在有着许多项目和全球化的团队里,这是一个分享你已完成、未完成以及你需要哪些帮助的一个很好的方式。但有时候我太忙了,以至于我忘了做了什么。这时候就需要记录日志了。
|
||||
|
||||
![jrnl][2]
|
||||
|
||||
打开一个文本编辑器并在你做一些事的时候添加一行很容易。但是在需要找出你在什么时候做的笔记,或者要快速提取相关的行时会有挑战。幸运的是,[jrnl][3] 可以提供帮助,。
|
||||
|
||||
Jrnl 能让你在命令行中快速输入条目、搜索过去的条目并导出为 HTML 和 Markdown 等富文本格式。你可以有多个日志,这意味着你可以将工作条目与私有条目分开。它将条目存储为纯文本,因此即使 jrnl 停止工作,数据也不会丢失。
|
||||
|
||||
由于 jrnl 是一个 Python 程序,最简单的安装方法是使用 **pip3 install jrnl**。这将确保你获得最新和最好的版本。第一次运行它会询问一些问题,接下来就能正常使用。
|
||||
|
||||
![jrnl's first run][4]
|
||||
|
||||
现在,每当你需要做笔记或记录日志时,只需输入 **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 的[有用提示][5]
|
||||
|
||||
![Example jrnl config file][6]
|
||||
|
||||
Jrnl 还可以加密日志文件。通过设置全局 **encrypt** 变量,你将告诉 jrnl 加密你定义的所有日志。还可在配置文件中的每个文件中设置 **encrypt: true** 来加密文件。
|
||||
|
||||
|
||||
```
|
||||
journals:
|
||||
default: ~/journals/journal.txt
|
||||
work: ~/journals/work.txt
|
||||
private:
|
||||
journal: ~/journals/private.txt
|
||||
encrypt: true
|
||||
```
|
||||
|
||||
如果日志尚未加密,系统将提示你输入对它任何操作的密码。日志文件将加密保存在磁盘上,并免受窥探。[jrnl 文档][7] 中包含其工作原理、使用哪些加密方式等的更多信息。
|
||||
|
||||
![Encrypted jrnl file][8]
|
||||
|
||||
日志记录帮助我记住什么时候做了什么事,并在我需要的时候能够找到它。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/20/1/python-journal
|
||||
|
||||
作者:[Kevin Sonney][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://opensource.com/users/ksonney
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/notebook-writing-pen.jpg?itok=uA3dCfu_ (Writing in a notebook)
|
||||
[2]: https://opensource.com/sites/default/files/uploads/productivity_8-1.png (jrnl)
|
||||
[3]: https://jrnl.sh/
|
||||
[4]: https://opensource.com/sites/default/files/uploads/productivity_8-2.png (jrnl's first run)
|
||||
[5]: https://jrnl.sh/recipes/#external-editors
|
||||
[6]: https://opensource.com/sites/default/files/uploads/productivity_8-3.png (Example jrnl config file)
|
||||
[7]: https://jrnl.sh/encryption/
|
||||
[8]: https://opensource.com/sites/default/files/uploads/productivity_8-4.png (Encrypted jrnl file)
|
Loading…
Reference in New Issue
Block a user