From 506f08712ecc96eb861fe16ceed7f3e2681ccdd9 Mon Sep 17 00:00:00 2001 From: Morisun029 <54652937+Morisun029@users.noreply.github.com> Date: Mon, 10 Feb 2020 20:37:04 +0800 Subject: [PATCH 01/18] 'translated' --- ...00206 3 ways to use PostgreSQL commands.md | 230 ------------------ ...00206 3 ways to use PostgreSQL commands.md | 228 +++++++++++++++++ 2 files changed, 228 insertions(+), 230 deletions(-) delete mode 100644 sources/tech/20200206 3 ways to use PostgreSQL commands.md create mode 100644 translated/tech/20200206 3 ways to use PostgreSQL commands.md diff --git a/sources/tech/20200206 3 ways to use PostgreSQL commands.md b/sources/tech/20200206 3 ways to use PostgreSQL commands.md deleted file mode 100644 index 9cfedc8506..0000000000 --- a/sources/tech/20200206 3 ways to use PostgreSQL commands.md +++ /dev/null @@ -1,230 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (3 ways to use PostgreSQL commands) -[#]: via: (https://opensource.com/article/20/2/postgresql-commands) -[#]: author: (Greg Pittman https://opensource.com/users/greg-p) - -3 ways to use PostgreSQL commands -====== -Whether you need something simple, like a shopping list, or complex, -like a color swatch generator, PostgreSQL commands make it easy. -![Team checklist and to dos][1] - -In _[Getting started with PostgreSQL][2]_, I explained how to install, set up, and begin using the open source database software. But there's a lot more you can do with commands in [PostgreSQL][3]. - -For example, I use Postgres to keep track of my grocery shopping list. I do most of the grocery shopping in our home, and the bulk of it happens once a week. I go to several places to buy the things on my list because each store offers a particular selection or quality or maybe a better price. Initially, I made an HTML form page to manage my shopping list, but it couldn't save my entries. So, I had to wait to make my list all at once, and by then I usually forgot some items we need or I want. - -Instead, with PostgreSQL, I can enter bits when I think of them as the week goes on and print out the whole thing right before I go shopping. Here's how you can do that, too. - -### Create a simple shopping list - -First, enter the database with the **psql **command, then create a table for your list with: - - -``` -`Create table groc (item varchar(20), comment varchar(10));` -``` - -Type commands like the following to add items to your list: - - -``` -insert into groc values ('milk', 'K'); -insert into groc values ('bananas', 'KW'); -``` - -There are two pieces of information (separated by a comma) inside the parentheses: the item you want to buy and letters indicating where you want to buy it and whether it's something you usually buy every week (W). - -Since **psql** has a history, you can press the Up arrow and edit the data between the parentheses instead of having to type the whole line for each item. - -After entering a handful of items, check what you've entered with: - - -``` -Select * from groc order by comment; - -      item      | comment -\----------------+--------- - ground coffee  | H - butter         | K - chips          | K - steak          | K - milk           | K - bananas        | KW - raisin bran    | KW - raclette       | L - goat cheese    | L - onion          | P - oranges        | P - potatoes       | P - spinach        | PW - broccoli       | PW - asparagus      | PW - cucumber       | PW - sugarsnap peas | PW - salmon         | S -(18 rows) -``` - -This command orders the results by the _comment_ column so that the items are grouped by where you buy them to make it easier to shop. - -By using a W to indicate your weekly purchases, you can keep your weekly items on the list when you clear out the table to prepare for the next week's list. To so that, enter: - - -``` -`delete from groc where comment not like '%W';` -``` - -Notice that in PostgreSQL, **%** is the wildcard character (instead of an asterisk). So, to save typing, you might type: - - -``` -`delete from groc where item like 'goat%';` -``` - -You can't use **item = 'goat%'**; it won't work. - -When you're ready to shop, output your list to print it or send it to your phone with: - - -``` -\o groclist.txt -select * from groc order by comment; -\o -``` - -The last command, **\o**, with nothing afterward, resets the output to the command line. Otherwise, all output will continue to go to the groc file you created. - -### Analyze complex tables - -This item-by-item entry may be okay for short tables, but what about really big ones? A couple of years ago, I was helping the team at [FreieFarbe.de][4] to create a swatchbook of the free colors (freieFarbe means "free colors" in German) from its HLC color palette, where virtually any imaginable print color can be specified by its hue, luminosity (brightness), and chroma (saturation). The result was the [HLC Color Atlas][5], and here's how we did it. - -The team sent me files with color specifications so I could write Python scripts that would work with Scribus to generate the swatchbooks of color patches easily. One example started like: - - -``` -HLC, C, M, Y, K -H010_L15_C010, 0.5, 49.1, 0.1, 84.5 -H010_L15_C020, 0.0, 79.7, 15.1, 78.9 -H010_L25_C010, 6.1, 38.3, 0.0, 72.5 -H010_L25_C020, 0.0, 61.8, 10.6, 67.9 -H010_L25_C030, 0.0, 79.5, 18.5, 62.7 -H010_L25_C040, 0.4, 94.2, 17.3, 56.5 -H010_L25_C050, 0.0, 100.0, 15.1, 50.6 -H010_L35_C010, 6.1, 32.1, 0.0, 61.8 -H010_L35_C020, 0.0, 51.7, 8.4, 57.5 -H010_L35_C030, 0.0, 68.5, 17.1, 52.5 -H010_L35_C040, 0.0, 81.2, 22.0, 46.2 -H010_L35_C050, 0.0, 91.9, 20.4, 39.3 -H010_L35_C060, 0.1, 100.0, 17.3, 31.5 -H010_L45_C010, 4.3, 27.4, 0.1, 51.3 -``` - -This is slightly modified from the original, which separated the data with tabs. I transformed it into a CSV (comma-separated value) file, which I prefer to use with Python. (CSV files are also very useful because they can be imported easily into a spreadsheet program.) - -In each line, the first item is the color name, and it's followed by its C, M, Y, and K color values. The file consisted of 1,793 colors, and I wanted a way to analyze the information to get a sense of the range of values. This is where PostgreSQL comes into play. I did not want to enter all of this data manually—I don't think I could without errors (and headaches). Fortunately, PostgreSQL has a command for this. - -My first step was to create the database with: - - -``` -`Create table hlc_cmyk (color varchar(40), c decimal, m decimal, y decimal, k decimal);` -``` - -Then I brought in the data with: - - -``` -`\copy  hlc_cmyk from '/home/gregp/HLC_Atlas_CMYK_SampleData.csv' with (header, format CSV);` -``` - -The backslash at the beginning is there because using the plain **copy** command is restricted to root and the Postgres superuser. In the parentheses, **header** means the first line contains headings and should be ignored, and **CSV** means the file format is CSV. Note that parentheses are not required around the color name in this method. - -If the operation is successful, I see a message that says **COPY NNNN**, where the N's refer to the number of rows inserted into the table. - -Finally, I can query the table with: - - -``` -select * from hlc_cmyk; - -     color     |   c   |   m   |   y   |  k   -\---------------+-------+-------+-------+------ - H010_L15_C010 |   0.5 |  49.1 |   0.1 | 84.5 - H010_L15_C020 |   0.0 |  79.7 |  15.1 | 78.9 - H010_L25_C010 |   6.1 |  38.3 |   0.0 | 72.5 - H010_L25_C020 |   0.0 |  61.8 |  10.6 | 67.9 - H010_L25_C030 |   0.0 |  79.5 |  18.5 | 62.7 - H010_L25_C040 |   0.4 |  94.2 |  17.3 | 56.5 - H010_L25_C050 |   0.0 | 100.0 |  15.1 | 50.6 - H010_L35_C010 |   6.1 |  32.1 |   0.0 | 61.8 - H010_L35_C020 |   0.0 |  51.7 |   8.4 | 57.5 - H010_L35_C030 |   0.0 |  68.5 |  17.1 | 52.5 -``` - -It goes on like this for all 1,793 rows of data. In retrospect, I can't say that this query was absolutely necessary for the HLC and Scribus task, but it allayed some of my anxieties about the project. - -To generate the HLC Color Atlas, I automated creating the color charts with Scribus for the 13,000+ colors in those pages of color swatches. - -I could have used the **copy** command to output my data: - - -``` -`\copy hlc_cmyk to '/home/gregp/hlc_cmyk_backup.csv' with (header, format CSV);` -``` - -I also could restrict the output according to certain values with a **where** clause. - -For example, the following command will only send the table values for the hues that begin with H10. - - -``` -`\copy hlc_cmyk to '/home/gregp/hlc_cmyk_backup.csv' with (header, format CSV) where color like 'H10%';` -``` - -### Back up or transfer a database or table - -The final command I will mention here is **pg_dump**, which is used to back up a PostgreSQL database and runs outside of the **psql** console. For example: - - -``` -pg_dump gregp -t hlc_cmyk > hlc.out -pg_dump gregp > dball.out -``` - -The first line exports the **hlc_cmyk** table along with its structure. The second line dumps all the tables inside the **gregp** database. This is very useful for backing up or transferring a database or tables.  - -To transfer a database or table to another computer, first, create a database on the other computer (see my "[getting started][2]" article for details), then do the reverse process: - - -``` -`psql -d gregp -f dball.out` -``` - -This creates all the tables and enters the data in one step. - -### Conclusion - -In this article, we have seen how to use the **WHERE** parameter to restrict operations, along with the use of the PostgreSQL wildcard character **%**. We've also seen how to load a large amount of data into a table, then output some or all of the table data to a file, or even your entire database with all its individual tables. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/2/postgresql-commands - -作者:[Greg Pittman][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/greg-p -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/todo_checklist_team_metrics_report.png?itok=oB5uQbzf (Team checklist and to dos) -[2]: https://opensource.com/article/19/11/getting-started-postgresql -[3]: https://www.postgresql.org/ -[4]: http://freiefarbe.de -[5]: https://www.freiefarbe.de/en/thema-farbe/hlc-colour-atlas/ diff --git a/translated/tech/20200206 3 ways to use PostgreSQL commands.md b/translated/tech/20200206 3 ways to use PostgreSQL commands.md new file mode 100644 index 0000000000..da2671cc2f --- /dev/null +++ b/translated/tech/20200206 3 ways to use PostgreSQL commands.md @@ -0,0 +1,228 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (3 ways to use PostgreSQL commands) +[#]: via: (https://opensource.com/article/20/2/postgresql-commands) +[#]: author: (Greg Pittman https://opensource.com/users/greg-p) + +3种使用 PostgreSQL 命令的方式 +====== +无论你需要的东西简单(如一个购物清单)亦或复杂(如色卡生成器) + PostgreSQL 命令都能使它变得容易起来。 + +![Team checklist and to dos][1] + +在 _[PostgreSQL 入门][2]_ 一文中, 我解释了如何安装,设置和开始使用开源数据库软件。然而,使用 [PostgreSQL][3] 中的命令可以做更多事情。 + +例如,我使用 Postgres 来跟踪我杂货店的购物清单。我杂货店里的大多数购物是在家里进行的,其中每周进行一次大批量的采购。我去几个不同的地方购买清单上的东西,因为每家商店都提供特定的选择或质量,亦或更好的价格。最初,我制作了一个HTML表单页面来管理我的购物清单,但这样无法保存我的输入内容。因此,在想到要购买的物品时我必须要马上列出清单,因为到采购时我常常会忘记一些我需要或想要的东西。 + +相反,使用 PostgreSQL,当我想到需要的物品时,我可以随时输入,并在购物前打印出来。你也可以这样做。 + + +### 创建一个简单的购物清单 + + +首先,数据库中输入**psql ** 命令,然后用下面的命令创建一个表: +``` +`Create table groc (item varchar(20), comment varchar(10));` +``` + +输入如下命令在清单中加入商品: + +``` +insert into groc values ('milk', 'K'); +insert into groc values ('bananas', 'KW'); +``` + +括号中有两个信息(逗号隔开):前面是你需要买的东西,后面字母代表你要购买的地点以及哪些东西是你每周通常都要买的(W)。 + +因为 **psql** 有历史记录,你可以按向上键在括号内编辑信息,而无需输入商品的整行信息。 + +在输入一小部分商品后,输入下面命令来检查前面的输入内容。 + +``` +Select * from groc order by comment; + + item | comment +\----------------+--------- + ground coffee | H + butter | K + chips | K + steak | K + milk | K + bananas | KW + raisin bran | KW + raclette | L + goat cheese | L + onion | P + oranges | P + potatoes | P + spinach | PW + broccoli | PW + asparagus | PW + cucumber | PW + sugarsnap peas | PW + salmon | S +(18 rows) +``` + +此命令按_comment_ 列对结果进行排序,以便按购买地点对商品进行分组,从而是你的购物更加方便。 + +使用W来指明你每周要买的东西,当你要清除表单为下周的列表做准备时,你可以将每周的商品保留在购物清单上。输入: + +``` +`delete from groc where comment not like '%W';` +``` + +注意,在 PostgreSQL 中 **%** 表示通配符(而非星号)。所以,要保存输入内容,需要输入: + +``` +`delete from groc where item like 'goat%';` +``` + +不能使用**item = 'goat%'**,这样没用。 + + +在购物时,用以下命令输出清单并打印出来发送到你的手机: + +``` +\o groclist.txt +select * from groc order by comment; +\o +``` + +最后一个命令**\o*,重置输出到命令行。否则,所有的输出会继续输出到你创建的杂货店购物文件中。 + +### 分析复杂的表 + +This item-by-item entry may be okay for short tables, but what about really big ones? A couple of years ago, I was helping the team at [FreieFarbe.de][4] to create a swatchbook of the free colors (freieFarbe means "free colors" in German) from its HLC color palette, where virtually any imaginable print color can be specified by its hue, luminosity (brightness), and chroma (saturation). The result was the [HLC Color Atlas][5], and here's how we did it. + +逐个输入对于数据量小的表来说没有问题,但是对于数据量大的表呢?几年前,我帮团队从 HLC 调色板中创建一个自由色的色样册。事实上,任何能想象到的打印色都可按色调、亮度、浓度(饱和度)来规定。最终结果是[HLC Color Atlas][5],下面是我们如何实现的。 + +该团队向我发送了具有颜色规范的文件,因此我可以编写可与 Scribus 配合使用的 Python 脚本,以轻松生成色样册。一个例子像这样开始: + + +``` +HLC, C, M, Y, K +H010_L15_C010, 0.5, 49.1, 0.1, 84.5 +H010_L15_C020, 0.0, 79.7, 15.1, 78.9 +H010_L25_C010, 6.1, 38.3, 0.0, 72.5 +H010_L25_C020, 0.0, 61.8, 10.6, 67.9 +H010_L25_C030, 0.0, 79.5, 18.5, 62.7 +H010_L25_C040, 0.4, 94.2, 17.3, 56.5 +H010_L25_C050, 0.0, 100.0, 15.1, 50.6 +H010_L35_C010, 6.1, 32.1, 0.0, 61.8 +H010_L35_C020, 0.0, 51.7, 8.4, 57.5 +H010_L35_C030, 0.0, 68.5, 17.1, 52.5 +H010_L35_C040, 0.0, 81.2, 22.0, 46.2 +H010_L35_C050, 0.0, 91.9, 20.4, 39.3 +H010_L35_C060, 0.1, 100.0, 17.3, 31.5 +H010_L45_C010, 4.3, 27.4, 0.1, 51.3 +``` + +这与原文件相比,稍有修改,将数据用制表符分隔。我将其转换成 CSV 格式(逗号分割值),我更喜欢其与 Python 一起使用(CSV 文也很有用因为它可轻松导入到电子表格程序中)。 + +在每一行中,第一项是颜色名称,其后是其 C,M,Y 和 K 颜色值。 该文件包含1,793种颜色,我想要一种分析信息的方法,以了解这些值的范围。 这就是 PostgreSQL 发挥作用的地方。 我不想手动输入所有数据-我认为输入过程中我不可能不出错。 幸运的是,PostgreSQL 为此提供了一个命令。 + +首先用以下命令创建数据库: + +``` +`Create table hlc_cmyk (color varchar(40), c decimal, m decimal, y decimal, k decimal);` +``` + +然后通过以下命令引入数据: + + +``` +`\copy hlc_cmyk from '/home/gregp/HLC_Atlas_CMYK_SampleData.csv' with (header, format CSV);` +``` + + +开头有反斜杠,是因为使用纯**copy** 命令仅限于 root 用户和 Postgres 的超级用户。 在括号中,**header** 表示第一行包含标题,应忽略,**CSV** 表示文件格式为 CSV。 请注意,在此方法中,颜色名称周围不需要括号。 + +如果操作成功,会看到 **COPY NNNN**,其中 N 表示插入到表中的行号。 + +最后,可以用下列命令查询: + +``` +select * from hlc_cmyk; + + color | c | m | y | k +\---------------+-------+-------+-------+------ + H010_L15_C010 | 0.5 | 49.1 | 0.1 | 84.5 + H010_L15_C020 | 0.0 | 79.7 | 15.1 | 78.9 + H010_L25_C010 | 6.1 | 38.3 | 0.0 | 72.5 + H010_L25_C020 | 0.0 | 61.8 | 10.6 | 67.9 + H010_L25_C030 | 0.0 | 79.5 | 18.5 | 62.7 + H010_L25_C040 | 0.4 | 94.2 | 17.3 | 56.5 + H010_L25_C050 | 0.0 | 100.0 | 15.1 | 50.6 + H010_L35_C010 | 6.1 | 32.1 | 0.0 | 61.8 + H010_L35_C020 | 0.0 | 51.7 | 8.4 | 57.5 + H010_L35_C030 | 0.0 | 68.5 | 17.1 | 52.5 +``` + + +所有1,793行数据都是这样的。 回想起来,我不能说此查询对于HLC和Scribus任务是绝对必要的,但是它减轻了我对该项目的一些担忧。 + +为了生成 HLC 色谱,我使用 Scribus 为色板页面中的13,000多种颜色自动创建了颜色图表。 + +我可以使用 **copy** 命令输出数据: + +``` +`\copy hlc_cmyk to '/home/gregp/hlc_cmyk_backup.csv' with (header, format CSV);` +``` + + +我还可以使用 ** where ** 子句根据某些值来限制输出。 + +例如,以下命令将仅发送以 H10 开头的色调值。 + + +``` +`\copy hlc_cmyk to '/home/gregp/hlc_cmyk_backup.csv' with (header, format CSV) where color like 'H10%';` +``` + +### 备份或传输数据库或表 + +我在此要提到的最后一个命令是**pg_dump**,它用于备份 PostgreSQL 数据库,并在 **psql** 控制台之外运行。 例如: + +``` +pg_dump gregp -t hlc_cmyk > hlc.out +pg_dump gregp > dball.out +``` + +第一行是导出 **hlc_cmyk** 表及其结构。第二行将转储 **gregp** 数据库中的所有表。 这对于备份或传输数据库或表非常有用。 + + +要将数据库或表转到另一台电脑( 查看"[ PostgreSQL 入门][2]" 那篇文章获取详细信息),首先在要转入的电脑上创建一个数据库,然后执行相反的操作。 + +``` +`psql -d gregp -f dball.out` +``` + +一步创建所有表并输入数据。 + +### 总结 + +在本文中,我们了解了如何使用 **WHERE** 参数限制操作,以及如何使用 PostgreSQL 通配符 **%**。 我们还了解了如何将大批量数据加载到表中,然后将部分或全部表数据输出到文件,甚至是将整个数据库及其所有单个表输出。 + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/20/2/postgresql-commands + +作者:[Greg Pittman][a] +选题:[lujun9972][b] +译者:[Morisun029](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/greg-p +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/todo_checklist_team_metrics_report.png?itok=oB5uQbzf (Team checklist and to dos) +[2]: https://opensource.com/article/19/11/getting-started-postgresql +[3]: https://www.postgresql.org/ +[4]: http://freiefarbe.de +[5]: https://www.freiefarbe.de/en/thema-farbe/hlc-colour-atlas/ From 9092eb263e85ae9884ad0ef5ae8d055480fb7656 Mon Sep 17 00:00:00 2001 From: Morisun029 <54652937+Morisun029@users.noreply.github.com> Date: Mon, 10 Feb 2020 20:46:16 +0800 Subject: [PATCH 02/18] fix issue --- translated/tech/20200206 3 ways to use PostgreSQL commands.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translated/tech/20200206 3 ways to use PostgreSQL commands.md b/translated/tech/20200206 3 ways to use PostgreSQL commands.md index da2671cc2f..9f5890f370 100644 --- a/translated/tech/20200206 3 ways to use PostgreSQL commands.md +++ b/translated/tech/20200206 3 ways to use PostgreSQL commands.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (Morisun029) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From 52b3dedc4a1df1d6a7fae17b23769902f5ddacfa Mon Sep 17 00:00:00 2001 From: Morisun029 <54652937+Morisun029@users.noreply.github.com> Date: Mon, 10 Feb 2020 21:10:29 +0800 Subject: [PATCH 03/18] Revert "Merge remote-tracking branch 'upstream/master'" This reverts commit 6ad0e2257601265a0fd0f80d665590a0a6d8666a, reversing changes made to 9092eb263e85ae9884ad0ef5ae8d055480fb7656. --- ...-CD resources to set you up for success.md | 57 --------- ... vs. proprietary- What-s the difference.md | 72 ----------- ...190407 Manage multimedia files with Git.md | 2 +- ...ra to your Android phone with GSConnect.md | 118 ++++++++++++++++++ ...ith This Single Command -Beginner-s Tip.md | 114 ----------------- ...-CD resources to set you up for success.md | 64 ++++++++++ ...in one place with this open source tool.md | 27 ++-- ...ra to your Android phone with GSConnect.md | 118 ------------------ 8 files changed, 196 insertions(+), 376 deletions(-) delete mode 100644 published/20191227 Top CI-CD resources to set you up for success.md delete mode 100644 sources/talk/20200209 Open source vs. proprietary- What-s the difference.md create mode 100644 sources/tech/20200207 Connect Fedora to your Android phone with GSConnect.md delete mode 100644 sources/tech/20200210 Install All Essential Media Codecs in Ubuntu With This Single Command -Beginner-s Tip.md create mode 100644 translated/tech/20191227 Top CI-CD resources to set you up for success.md rename {published => translated/tech}/20200122 Get your RSS feeds and podcasts in one place with this open source tool.md (66%) delete mode 100644 translated/tech/20200207 Connect Fedora to your Android phone with GSConnect.md diff --git a/published/20191227 Top CI-CD resources to set you up for success.md b/published/20191227 Top CI-CD resources to set you up for success.md deleted file mode 100644 index a19cea5720..0000000000 --- a/published/20191227 Top CI-CD resources to set you up for success.md +++ /dev/null @@ -1,57 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (Morisun029) -[#]: reviewer: (wxy) -[#]: publisher: (wxy) -[#]: url: (https://linux.cn/article-11875-1.html) -[#]: subject: (Top CI/CD resources to set you up for success) -[#]: via: (https://opensource.com/article/19/12/cicd-resources) -[#]: author: (Jessica Cherry https://opensource.com/users/jrepka) - -顶级 CI / CD 资源,助你成功 -====== - -> 随着企业期望实现无缝、灵活和可扩展的部署,持续集成和持续部署成为 2019 年的关键主题。 - -![Plumbing tubes in many directions][1] - -对于 CI/CD 和 DevOps 来说,2019 年是非常棒的一年。Opensource.com 的作者分享了他们专注于无缝、灵活和可扩展部署时是如何朝着敏捷和 scrum 方向发展的。以下是我们 2019 年发布的 CI/CD 文章中的一些重要文章。 - -### 学习和提高你的 CI/CD 技能 - -我们最喜欢的一些文章集中在 CI/CD 的实操经验上,并涵盖了许多方面。通常以 [Jenkins][2] 管道开始,Bryant Son 的文章《[用 Jenkins 构建 CI/CD 管道][3]》将为你提供足够的经验,以开始构建你的第一个管道。Daniel Oh 在《[用 DevOps 管道进行自动验收测试][4]》一文中,提供了有关验收测试的重要信息,包括可用于自行测试的各种 CI/CD 应用程序。我写的《[安全扫描 DevOps 管道][5]》非常简短,其中简要介绍了如何使用 Jenkins 平台在管道中设置安全性。 - -### 交付工作流程 - -正如 Jithin Emmanuel 在《[Screwdriver:一个用于持续交付的可扩展构建平台][6]》中分享的,在学习如何使用和提高你的 CI/CD 技能方面,工作流程很重要,特别是当涉及到管道时。Emily Burns 在《[为什么 Spinnaker 对 CI/CD 很重要][7]》中解释了灵活地使用 CI/CD 工作流程准确构建所需内容的原因。Willy-Peter Schaub 还盛赞了为所有产品创建统一管道的想法,以便《[在一个 CI/CD 管道中一致地构建每个产品][8]》。这些文章将让你很好地了解在团队成员加入工作流程后会发生什么情况。 - -### CI/CD 如何影响企业 - -2019 年也是认识到 CI/CD 的业务影响以及它是如何影响日常运营的一年。Agnieszka Gancarczyk 分享了 Red Hat 《[小型 Scrum vs. 大型 Scrum][9]》的调查结果, 包括受访者对 Scrum、敏捷运动及对团队的影响的不同看法。Will Kelly 的《[持续部署如何影响整个组织][10]》,也提及了开放式沟通的重要性。Daniel Oh 也在《[DevOps 团队必备的 3 种指标仪表板][11]》中强调了指标和可观测性的重要性。最后是 Ann Marie Fred 的精彩文章《[不在生产环境中测试?要在生产环境中测试!][12]》详细说明了在验收测试前在生产环境中测试的重要性。 - -感谢许多贡献者在 2019 年与 Opensource 的读者分享他们的见解,我期望在 2020 年里从他们那里了解更多有关 CI/CD 发展的信息。 - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/19/12/cicd-resources - -作者:[Jessica Cherry][a] -选题:[lujun9972][b] -译者:[Morisun029](https://github.com/Morisun029) -校对:[wxy](https://github.com/wxy) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/jrepka -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/plumbing_pipes_tutorial_how_behind_scenes.png?itok=F2Z8OJV1 (Plumbing tubes in many directions) -[2]: https://jenkins.io/ -[3]: https://linux.cn/article-11546-1.html -[4]: https://opensource.com/article/19/4/devops-pipeline-acceptance-testing -[5]: https://opensource.com/article/19/7/security-scanning-your-devops-pipeline -[6]: https://opensource.com/article/19/3/screwdriver-cicd -[7]: https://opensource.com/article/19/8/why-spinnaker-matters-cicd -[8]: https://opensource.com/article/19/7/cicd-pipeline-rule-them-all -[9]: https://opensource.com/article/19/3/small-scale-scrum-vs-large-scale-scrum -[10]: https://opensource.com/article/19/7/organizational-impact-continuous-deployment -[11]: https://linux.cn/article-11183-1.html -[12]: https://opensource.com/article/19/5/dont-test-production diff --git a/sources/talk/20200209 Open source vs. proprietary- What-s the difference.md b/sources/talk/20200209 Open source vs. proprietary- What-s the difference.md deleted file mode 100644 index 2c6b6fce0b..0000000000 --- a/sources/talk/20200209 Open source vs. proprietary- What-s the difference.md +++ /dev/null @@ -1,72 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Open source vs. proprietary: What's the difference?) -[#]: via: (https://opensource.com/article/20/2/open-source-vs-proprietary) -[#]: author: (Seth Kenlon https://opensource.com/users/seth) - -Open source vs. proprietary: What's the difference? -====== -Need four good reasons to tell your friends to use open source? Here's -how to make your case. -![Doodles of the word open][1] - -There's a lot to be learned from open source projects. After all, managing hundreds of disparate, asynchronous commits and bugs doesn't happen by accident. Someone or something has to coordinate releases, and keep all the code and project roadmaps organized. It's a lot like life. You have lots of tasks demanding your attention, and you have to tend to each in turn. To ensure everything gets done before its deadline, you try to stay organized and focused. - -Fortunately, there are [applications out there][2] designed to help with that sort of thing, and many apply just as well to real life as they do to software. - -Here are some reasons for choosing [open tools][3] when improving personal or project-based organization. - -### Data ownership - -It's rarely profitable for proprietary tools to provide you with [data][4] dumps. Some products, usually after a long battle with their users (and sometimes a lawsuit), provide ways to extract your data from them. But the real issue isn't whether a company lets you extract data; it's the fact that the capability to get to your data isn't guaranteed in the first place. It's your data, and when it's literally what you do each day, it is, in a way, your life. Nobody should have primary access to that but you, so why should you have to petition a company for a copy? - -Using an open source tool ensures you have priority access to your own activities. When you need a copy of something, you already have it. When you need to export it from one application to another, you have complete control of how the data is exchanged. If you need to export your schedule from a calendar into your kanban board, you can manipulate and process the data to fit. You don't have to wait for functionality to be added to the app, because you own the data, the database, and the app. - -### Working for yourself - -When you use open source tools, you often end up improving them, sometimes whether you know it or not. You may not (or you may!) download the source and hack on code, but you probably fall into a way of using the tool that works best for you. You optimize your interaction with the tool. The unique way you interact with your tooling creates a kind of meta-tool: you haven't changed the software, but you've adapted it and yourself in ways that the project author and a dozen other users never imagined. Everyone does this with whatever software they rely upon, and it's why sitting at someone else's computer to use a familiar software (or even just looking over someone's shoulder) often feels foreign, like you're using a different version of the application than you're used to. - -When you do this with proprietary software, you're either contributing to someone else's marketplace for free, or you're adjusting your own behavior based on forces outside your own control. When you optimize an open source tool, both the software and the interaction belong to you. - -### The right to not upgrade - -Tools change. It's the way of things. - -Change can be frustrating, but it can be crippling when a service changes so severely that it breaks your workflow. A proprietary service has and maintains every right to change its product, and you explicitly accept this by using the product. If your favorite accounting software or scheduling web app changes its interface or its output options, you usually have no recourse but to adapt or stop using the service. Proprietary services reserve the right to remove features, arbitrarily and without warning, and it's not uncommon for companies to start out with an open API and strong compatibility with open source, only to drop these conveniences once its customer base has reached critical mass. - -Open source changes, too. Changes in open source can be frustrating, too, and it can even drive users to alternative open source solutions. The difference is that when open source changes, you still own the unchanged code base. More importantly, lots of other people do too, and if there's enough desire for it, the project can be forked. There are several famous examples of this, but admittedly there are just as many examples where the demand was _not_ great enough, and users essentially had to adapt. - -Even so, users are never truly forced to do anything in open source. If you want to hack together an old version of your mission-critical service on an old distro running ancient libraries in a virtual machine, you can do that because you own the code. When a proprietary service changes, you have no choice but to follow. - -With open source, you can choose to forge your own path when necessary or follow the developers when convenient. - -### Open for collaboration - -Proprietary services can affect others in ways you may not realize. Closed source tools are accidentally insidious. If you use a proprietary product to manage your schedule or your recipes or your library, or you use a proprietary font in your graphic design or website, then the moment you need to coordinate with someone else, you are essentially forcing them to sign up for the same proprietary service because proprietary services usually require accounts. Of course, the same is sometimes true for an open source solution, but it's not common for open source products to collect and sell user data the way proprietary vendors do, so the stakes aren't quite the same. - -### Independence - -Ultimately, the open source advantage is one of independence for you and for those you want to collaborate with. Not everyone uses open source, and even if everyone did not everyone would use the exact same tool or the same assets, so there will always be some negotiation when sharing data. However, by keeping your data and projects open, you enable everyone (your future self included) to contribute. - -What steps do you take to ensure your work is open and accessible? Tell us in the comments! - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/2/open-source-vs-proprietary - -作者:[Seth Kenlon][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/seth -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/EDUCATION_doodles.png?itok=W_0DOMM4 (Doodles of the word open) -[2]: https://opensource.com/article/20/1/open-source-productivity-tools -[3]: https://opensource.com/tags/tools -[4]: https://opensource.com/tags/analytics-and-metrics diff --git a/sources/tech/20190407 Manage multimedia files with Git.md b/sources/tech/20190407 Manage multimedia files with Git.md index 888191344c..340c356aa9 100644 --- a/sources/tech/20190407 Manage multimedia files with Git.md +++ b/sources/tech/20190407 Manage multimedia files with Git.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: (svtter) +[#]: translator: ( ) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) diff --git a/sources/tech/20200207 Connect Fedora to your Android phone with GSConnect.md b/sources/tech/20200207 Connect Fedora to your Android phone with GSConnect.md new file mode 100644 index 0000000000..528289f3b0 --- /dev/null +++ b/sources/tech/20200207 Connect Fedora to your Android phone with GSConnect.md @@ -0,0 +1,118 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Connect Fedora to your Android phone with GSConnect) +[#]: via: (https://fedoramagazine.org/connect-fedora-to-your-android-phone-with-gsconnect/) +[#]: author: (Lokesh Krishna https://fedoramagazine.org/author/lowkeyskywalker/) + +Connect Fedora to your Android phone with GSConnect +====== + +![][1] + +Both Apple and Microsoft offer varying levels of integration of their desktop offerings with your mobile devices. Fedora offers a similar if not greater degree of integration with **GSConnect**. It lets you pair your Android phone with your Fedora desktop and opens up a lot of possibilities. Keep reading to discover more about what it is and how it works. + +### What is GSConnect? + +GSConnect is an implementation of the KDE Connect project tailored for the GNOME desktop. KDE Connect makes it possible for your devices to communicate with each other. However, installing it on Fedora’s default GNOME desktop requires pulling in a large number of KDE dependencies. + +GSConnect is a complete implementation of KDE Connect, but in the form of a GNOME shell extension. Once installed, GSConnect lets you do the following and a lot more: + + * Receive phone notifications on your desktop and reply to messages + * Use your phone as a remote control for your desktop + * Share files and links between devices + * Check your phone’s battery level from the desktop + * Ring your phone to help find it + + + +### Setting up the GSConnect extension + +Setting up GSConnect requires installing two components: the GSConnect extension on your desktop and the KDE Connect app on your Android device. + +First, install the GSConnect extension from the GNOME Shell extensions website: [GSConnect][2]. (Fedora Magazine has a handy article on [How to install a GNOME Shell extension][3] to help you with this step.) + +The KDE Connect app is available on Google’s [Play Store][4]. It’s also available on the FOSS Android apps repository, [F-Droid][5]. + +Once you have installed both these components, you can pair your two devices. Installing the extension makes it show up in your system menu as _Mobile Devices_. Clicking on it displays a drop down menu, from which you can access _Mobile Settings_. + +![][6] + +Here’s where you can view your paired devices and manage the features offered by GSConnect. Once you are on this screen, launch the app on your Android device. + +You can initiate pairing from either device, but here you’ll be connecting to your desktop from the Android device. Simply hit refresh on the app, and as long as both devices are on the same wireless network, your desktop shows up in your Android device. You can now send a pair request to the desktop. Accept the pair request on your desktop to complete the pairing. + +![][7] + +### Using GSConnect + +Once paired, you’ll need to grant permissions on your Android device to make use of the many features available on GSConnect. Click on the paired device in the list of devices to see all available functions and enable or disable them according to your preferences. + +![][8] + +Remember that you’ll also need to grant corresponding permissions in the Android app to be able to use these functions. Depending upon the features you’ve enabled and the permissions you’ve granted, you can now access your mobile contacts on your desktop, get notified of messages and reply to them, and even sync the desktop and Android device clipboards. + +### Integration with Files and your web browsers + +GSConnect allows you to directly send files to your Android device from your desktop file explorer’s context menu. + +On Fedora’s default GNOME desktop, you will need to install the _nautilus-python_ package in order to make your paired devices show up in the context menu. Installing this is as straightforward as running the following command from your preferred terminal: + +``` +$ sudo dnf install nautilus-python +``` + +Once done, the _Send to Mobile Device_ entry appears in the context menu of the Files app. + +![][9] + +Similarly, install the corresponding WebExtension for your browser, be it [Firefox][10] or [Chrome][11], to send links to your Android device. You have the option to send the link to launch directly in your browser or to deliver it as SMS. + +### Running Commands + +GSConnect lets you define commands which you can then run on your desktop, from your remote device. This allows you to do things such as take a screenshot of your desktop, or lock and unlock your desktop from your Android device, remotely. + +![][12] + +To make use of this feature, you can use standard shell commands and the CLI exposed by GSConnect. Documentation on this is provided in the project’s GitHub repository: _CLI Scripting_. + +The [KDE UserBase Wiki][13] has a list of example commands. These examples cover controlling the brightness and volume on your desktop, locking the mouse and keyboard, and even changing the desktop theme. Some of the commands are specific for KDE Plasma, and modifications are necessary to make it run on the GNOME desktop. + +### Explore and have fun + +GSConnect makes it possible to enjoy a great degree of convenience and comfort. Dive into the preferences to see all that you can do and get creative with the commands function. Feel free to share all the possibilities this utility unlocked in your workflow in the comments below. + +* * * + +_Photo by [Pathum Danthanarayana][14] on [Unsplash][15]._ + +-------------------------------------------------------------------------------- + +via: https://fedoramagazine.org/connect-fedora-to-your-android-phone-with-gsconnect/ + +作者:[Lokesh Krishna][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/lowkeyskywalker/ +[b]: https://github.com/lujun9972 +[1]: https://fedoramagazine.org/wp-content/uploads/2019/12/gsconnect-816x345.jpg +[2]: https://extensions.gnome.org/extension/1319/gsconnect/ +[3]: https://fedoramagazine.org/install-gnome-shell-extension/ +[4]: https://play.google.com/store/apps/details?id=org.kde.kdeconnect_tp +[5]: https://f-droid.org/en/packages/org.kde.kdeconnect_tp/ +[6]: https://fedoramagazine.org/wp-content/uploads/2020/01/within-the-menu-1024x576.png +[7]: https://fedoramagazine.org/wp-content/uploads/2020/01/pair-request-1024x576.png +[8]: https://fedoramagazine.org/wp-content/uploads/2020/01/permissions-1024x576.png +[9]: https://fedoramagazine.org/wp-content/uploads/2020/01/send-to-mobile-2-1024x576.png +[10]: https://addons.mozilla.org/en-US/firefox/addon/gsconnect/ +[11]: https://chrome.google.com/webstore/detail/gsconnect/jfnifeihccihocjbfcfhicmmgpjicaec +[12]: https://fedoramagazine.org/wp-content/uploads/2020/01/commands-1024x576.png +[13]: https://userbase.kde.org/KDE_Connect/Tutorials/Useful_commands +[14]: https://unsplash.com/@pathum_danthanarayana?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText +[15]: https://unsplash.com/s/photos/android?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText diff --git a/sources/tech/20200210 Install All Essential Media Codecs in Ubuntu With This Single Command -Beginner-s Tip.md b/sources/tech/20200210 Install All Essential Media Codecs in Ubuntu With This Single Command -Beginner-s Tip.md deleted file mode 100644 index 1b985e738f..0000000000 --- a/sources/tech/20200210 Install All Essential Media Codecs in Ubuntu With This Single Command -Beginner-s Tip.md +++ /dev/null @@ -1,114 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Install All Essential Media Codecs in Ubuntu With This Single Command [Beginner’s Tip]) -[#]: via: (https://itsfoss.com/install-media-codecs-ubuntu/) -[#]: author: (Abhishek Prakash https://itsfoss.com/author/abhishek/) - -Install All Essential Media Codecs in Ubuntu With This Single Command [Beginner’s Tip] -====== - -If you have just installed Ubuntu or some other [Ubuntu flavors][1] like Kubuntu, Lubuntu etc, you’ll notice that your system doesn’t play some audio or video file. - -For video files, you can [install VLC on Ubuntu][2]. [VLC][3] one of the [best video players for Linux][4] and can play almost any video file format. But you’ll still have troubles with audio media files and flash player. - -The good thing is that [Ubuntu][5] provides a single package to install all the essential media codecs: ubuntu-restricted-extras. - -![][6] - -### What is Ubuntu Restricted Extras? - -The ubuntu-restricted-extras is a software package that consists various essential software like flash plugin, [unrar][7], [gstreamer][8], mp4, codecs for [Chromium browser in Ubuntu][9] etc. - -Since these software are not open source and some of them involve software patents, Ubuntu doesn’t install them by default. You’ll have to use multiverse repository, the software repository specifically created by Ubuntu to provide non-open source software to its users. - -Please read this article to [learn more about various Ubuntu repositories][10]. - -### How to install Ubuntu Restricted Extras? - -I find it surprising that the software center doesn’t list Ubuntu Restricted Extras. In any case, you can install the package using command line and it’s very simple. - -Open a terminal by searching for it in the menu or using the [terminal keyboard shortcut Ctrl+Alt+T][11]. - -Since ubuntu-restrcited-extras package is available in the multiverse repository, you should verify that the multiverse repository is enabled on your system: - -``` -sudo add-apt-repository multiverse -``` - -And then you can install it in Ubuntu default edition using this command: - -``` -sudo apt install ubuntu-restricted-extras -``` - -When you enter the command, you’ll be asked to enter your password. When _**you type the password, nothing is displayed on the screen**_. That’s normal. Type your password and press enter. - -It will show a huge list of packages to be installed. Press enter to confirm your selection when it asks. - -You’ll also encounter an [EULA][12] (End User License Agreement) screen like this: - -![Press Tab key to select OK and press Enter key][13] - -It could be overwhelming to navigate this screen but don’t worry. Just press tab and it will highlight the options. When the correct options are highlighted, press enter to confirm your selection. - -![Press Tab key to highlight Yes and press Enter key][14] - -Once the process finishes, you should be able to play MP3 and other media formats thanks to newly installed media codecs. - -##### Installing restricted extra package on Kubuntu, Lubuntu, Xubuntu - -Do keep in mind that Kubuntu, Lubuntu and Xubuntu has this package available with their own respective names. They should have just used the same name but they don’t unfortunately. - -On Kubuntu, use this command: - -``` -sudo apt install kubuntu-restricted-extras -``` - -On Lubuntu, use: - -``` -sudo apt install lubuntu-restricted-extras -``` - -On Xubuntu, you should use: - -``` -sudo apt install xubuntu-restricted-extras -``` - -I always recommend getting ubuntu-restricted-extras as one of the [essential things to do after installing Ubuntu][15]. It’s good to have a single command to install multiple codecs in Ubuntu. - -I hope you like this quick tip in the Ubuntu beginner series. I’ll share more such tips in the future. - --------------------------------------------------------------------------------- - -via: https://itsfoss.com/install-media-codecs-ubuntu/ - -作者:[Abhishek Prakash][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://itsfoss.com/author/abhishek/ -[b]: https://github.com/lujun9972 -[1]: https://itsfoss.com/which-ubuntu-install/ -[2]: https://itsfoss.com/install-latest-vlc/ -[3]: https://www.videolan.org/index.html -[4]: https://itsfoss.com/video-players-linux/ -[5]: https://ubuntu.com/ -[6]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/02/Media_Codecs_in_Ubuntu.png?ssl=1 -[7]: https://itsfoss.com/use-rar-ubuntu-linux/ -[8]: https://gstreamer.freedesktop.org/ -[9]: https://itsfoss.com/install-chromium-ubuntu/ -[10]: https://itsfoss.com/ubuntu-repositories/ -[11]: https://itsfoss.com/ubuntu-shortcuts/ -[12]: https://en.wikipedia.org/wiki/End-user_license_agreement -[13]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/02/installing_ubuntu_restricted_extras.jpg?ssl=1 -[14]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/02/installing_ubuntu_restricted_extras_1.jpg?ssl=1 -[15]: https://itsfoss.com/things-to-do-after-installing-ubuntu-18-04/ diff --git a/translated/tech/20191227 Top CI-CD resources to set you up for success.md b/translated/tech/20191227 Top CI-CD resources to set you up for success.md new file mode 100644 index 0000000000..102e53d153 --- /dev/null +++ b/translated/tech/20191227 Top CI-CD resources to set you up for success.md @@ -0,0 +1,64 @@ +[#]: collector: (lujun9972) +[#]: translator: (Morisun029) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Top CI/CD resources to set you up for success) +[#]: via: (https://opensource.com/article/19/12/cicd-resources) +[#]: author: (Jessica Cherry https://opensource.com/users/jrepka) + +顶级 CI / CD 资源,助您成功 +====== +随着企业期望实现无缝,灵活和可扩展的部署,持续集成和持续部署成为2019年的关键主题。 +![Plumbing tubes in many directions][1] + +对于 CI / CD 和 DevOps 来说,2019年是非常棒的一年。 Opensource 公司的作者分享了他们专注于无缝,灵活和可扩展部署时是如何朝着敏捷方向发展的。以下是我们2019年发布的 CI / CD 文章中的一些重要主题。 + +### 学习和提高您的 CI / CD 技能 + + +我们最喜欢的一些文章集中在 CI / CD 的实操经验上,并涵盖了许多方面。通常以[Jenkins][2]管道开始,布莱恩特的文章[用 Jenkins 构建 CI/CD 管道][4]将为您提供足够的经验,以开始构建您的第一个管道。丹尼尔在 [用DevOps 管道进行自动验收测试][4]一文中,提供了有关验收测试的重要信息,包括可用于独立测试的各种 CI / CD 应用程序。我写的[安全扫描DevOps 管道][5]非常简短,其中的关键点是关于如何使用 Jenkins 平台在管道中设置安全性的教程。 + +### 交付工作流程 + + +威利•彼得•绍布赞扬为所有产品创建统一流水线的想法,以使[每种产品在一个CI / CD 流水线中持续建立起来,以管控所有产品][8]。这些文章将使您更好地了解团队成员加入工作流流程后会发生什么。 + +### CI / CD 如何影响企业 + + +2019年也是认识到 CI / CD 的业务影响以及它如何影响日常运营的一年。 + + + +Agnieszka Gancarczyk 分享了Red Hat[小型Scrum vs.大型Scrum][9] 的调查结果, 包括受访者对srums, + +敏捷运动及其对团队的影响的不同看法。威尔安•凯丽 的[持续部署如何影响企业][10], 包括开放式沟通的重要性,丹尼尔也强调了[DevOps 团队在3 种类型的指表板][11]中指标和可观测性的重要性。最后是安•玛丽•弗雷德的精彩文章: [不要在生产环境中测试?在生产环境中测试!][12] 详细说明了验收测试前在生产环境中测试的重要性。 + +感谢许多贡献者在2019年与 Opensource 的读者分享他们的见解,我期望在2020年里从他们那里了解更多有关 CI / CD 发展的信息。 + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/19/12/cicd-resources + +作者:[Jessica Cherry][a] +选题:[lujun9972][b] +译者:[Morisun029](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/jrepka +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/plumbing_pipes_tutorial_how_behind_scenes.png?itok=F2Z8OJV1 (Plumbing tubes in many directions) +[2]: https://jenkins.io/ +[3]: https://opensource.com/article/19/9/intro-building-cicd-pipelines-jenkins +[4]: https://opensource.com/article/19/4/devops-pipeline-acceptance-testing +[5]: https://opensource.com/article/19/7/security-scanning-your-devops-pipeline +[6]: https://opensource.com/article/19/3/screwdriver-cicd +[7]: https://opensource.com/article/19/8/why-spinnaker-matters-cicd +[8]: https://opensource.com/article/19/7/cicd-pipeline-rule-them-all +[9]: https://opensource.com/article/19/3/small-scale-scrum-vs-large-scale-scrum +[10]: https://opensource.com/article/19/7/organizational-impact-continuous-deployment +[11]: https://opensource.com/article/19/7/dashboards-devops-teams +[12]: https://opensource.com/article/19/5/dont-test-production diff --git a/published/20200122 Get your RSS feeds and podcasts in one place with this open source tool.md b/translated/tech/20200122 Get your RSS feeds and podcasts in one place with this open source tool.md similarity index 66% rename from published/20200122 Get your RSS feeds and podcasts in one place with this open source tool.md rename to translated/tech/20200122 Get your RSS feeds and podcasts in one place with this open source tool.md index ec53804d3a..e4b2282535 100644 --- a/published/20200122 Get your RSS feeds and podcasts in one place with this open source tool.md +++ b/translated/tech/20200122 Get your RSS feeds and podcasts in one place with this open source tool.md @@ -1,36 +1,35 @@ [#]: collector: (lujun9972) [#]: translator: (geekpi) -[#]: reviewer: (wxy) -[#]: publisher: (wxy) -[#]: url: (https://linux.cn/article-11876-1.html) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) [#]: subject: (Get your RSS feeds and podcasts in one place with this open source tool) [#]: via: (https://opensource.com/article/20/1/open-source-rss-feed-reader) [#]: author: (Kevin Sonney https://opensource.com/users/ksonney) -使用此开源工具在一起收取你的 RSS 订阅源和播客 +使用此开源工具将你的RSS 订阅源和播客放在一起 ====== - -> 在我们的 20 个使用开源提升生产力的系列的第十二篇文章中使用 Newsboat 收取你的新闻 RSS 源和播客。 - -![](https://img.linux.net.cn/data/attachment/album/202002/10/162526wv5jdl0m12sw10md.jpg) +在我们的 20 个使用开源提升生产力的系列的第十二篇文章中使用 Newsboat 跟上你的新闻 RSS 源和播客。 +![Ship captain sailing the Kubernetes seas][1] 去年,我在 19 天里给你介绍了 19 个新(对你而言)的生产力工具。今年,我换了一种方式:使用你在使用或者还没使用的工具,构建一个使你可以在新一年更加高效的环境。 ### 使用 Newsboat 访问你的 RSS 源和播客 -RSS 新闻源是了解各个网站最新消息的非常方便的方法。除了 Opensource.com,我还会关注 [SysAdvent][2] sysadmin 年度工具,还有一些我最喜欢的作者以及一些网络漫画。RSS 阅读器可以让我“批处理”阅读内容,因此,我每天不会在不同的网站上花费很多时间。 +RSS 新闻源是了解各个网站最新消息的非常方便的方法。除了 Opensource.com,我还会关注 [SysAdvent][2] 年度 sysadmin 工具,还有一些我最喜欢的作者以及一些网络漫画。RSS 阅读器可以让我“批处理”阅读内容,因此,我每天不会在不同的网站上花费很多时间。 ![Newsboat][3] [Newsboat][4] 是一个基于终端的 RSS 订阅源阅读器,外观感觉很像电子邮件程序 [Mutt][5]。它使阅读新闻变得容易,并有许多不错的功能。 -安装 Newsboat 非常容易,因为它包含在大多数发行版(以及 MacOS 上的 Homebrew)中。安装后,只需在 `~/.newsboat/urls` 中添加订阅源。如果你是从其他阅读器迁移而来,并有导出的 OPML 文件,那么可以使用以下方式导入: +安装 Newsboat 非常容易,因为它包含在大多数发行版(以及 MacOS 上的 Homebrew)中。安装后,只需在 **~/.newsboat/urls** 中添加订阅源。如果你是从其他阅读器迁移而来,并有导出的 OPML 文件,那么可以使用以下方式导入: + ``` -newsboat -i +`newsboat -i ` ``` -添加订阅源后,Newsboat 的界面非常熟悉,特别是如果你使用过 Mutt。你可以使用箭头键上下滚动,使用 `r` 检查某个源中是否有新项目,使用 `R` 检查所有源中是否有新项目,按回车打开订阅源,并选择要阅读的文章。 +添加订阅源后,Newsboat 的界面非常熟悉,特别是如果你使用过 Mutt。你可以使用箭头键上下滚动,使用 **r** 检查某个源中是否有新项目,使用 **R** 检查所有源中是否有新项目,按**回车**打开订阅源,并选择要阅读的文章。 ![Newsboat article list][6] @@ -40,7 +39,7 @@ newsboat -i #### 播客 -Newsboat 还通过 Podboat 提供了[播客支持][10],Podboat 是一个附带的应用,它可帮助下载和排队播客节目。在 Newsboat 中查看播客源时,按下 `e` 将节目添加到你的下载队列中。所有信息将保存在 `~/.newsboat` 目录中的队列文件中。Podboat 读取此队列并将节目下载到本地磁盘。你可以在 Podboat 的用户界面(外观和行为类似于 Newsboat)执行此操作,也可以使用 `podboat -a` 让 Podboat 下载所有内容。作为播客人和播客听众,我认为这*真的*很方便。 +Newsboat 还通过 Podboat 提供了[播客支持][10],podboat 是一个附带的应用,它可帮助下载和排队播客节目。在 Newsboat 中查看播客源时,按下 **e** 将节目添加到你的下载队列中。所有信息将保存在 **~/.newsboat** 目录中的队列文件中。Podboat 读取此队列并将节目下载到本地磁盘。你可以在 Podboat 的用户界面(外观和行为类似于 Newsboat)执行此操作,也可以使用 ** podboat -a ** 让 Podboat 下载所有内容。作为播客人和播客听众,我认为这_真的_很方便。 ![Podboat][11] @@ -53,7 +52,7 @@ via: https://opensource.com/article/20/1/open-source-rss-feed-reader 作者:[Kevin Sonney][a] 选题:[lujun9972][b] 译者:[geekpi](https://github.com/geekpi) -校对:[wxy](https://github.com/wxy) +校对:[校对者ID](https://github.com/校对者ID) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 diff --git a/translated/tech/20200207 Connect Fedora to your Android phone with GSConnect.md b/translated/tech/20200207 Connect Fedora to your Android phone with GSConnect.md deleted file mode 100644 index 524e72fce0..0000000000 --- a/translated/tech/20200207 Connect Fedora to your Android phone with GSConnect.md +++ /dev/null @@ -1,118 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (chai-yuan) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Connect Fedora to your Android phone with GSConnect) -[#]: via: (https://fedoramagazine.org/connect-fedora-to-your-android-phone-with-gsconnect/) -[#]: author: (Lokesh Krishna https://fedoramagazine.org/author/lowkeyskywalker/) - -使用GSConnect将Android手机连接到Fedora系统 -====== - -![][1] - -苹果和微软公司都提供了集成好的与移动设备交互的应用。Fedora提供了类似的工具——**GSConnect**。它可以让你将你的安卓手机和你的Fedora桌面配对并使用。读下去,来了解更多关于它是什么以及它是如何工作的信息。 - -### GSConnect是什么? - -GSConnect是基于KDE Connect项目而为GNOME桌面定制的程序。KDE Connect使你的设备相互之间能够进行通信。但是,在Fedora的默认GNOME桌面上安装它需要安装大量的KDE依赖。 - -GSConnect基于KDE Connect实现,作为GNOME shell的拓展应用。一旦安装,GSConnect允许您执行以下操作: - - * 在电脑上接收电话通知并回复信息 - * 用手机操纵你的桌面 - * 在不同设备之间分享文件与链接 - * 在电脑上查看手机电量 - * 让手机响铃以便你能找到它 - - - -### 设置GSConnect扩展 - -设置GSConnect需要安装两款软件:电脑上的GSConnect扩展和Android设备上的KDE Connect应用。 - -首先,从GNOME Shell扩展网站[GSConnect][2]安装GSConnect扩展。(Fedora Magazine有一篇关于[如何安装GNOMEShell扩展名][3]的文章,可以帮助你完成这一步。) - -KDE Connect应用程序可以在Google的[Play Store][4]上找到。它也可以在FOSS Android应用程序库[F-Droid][5]上找到。 - -一旦安装了这两个组件,就可以配对两个设备。安装扩展后再系统菜单中显示“移动设备(Mobile Devices)”。单击它会出现一个下拉菜单,你可以从中访问“移动设置(Mobile Settings)”。 - -![][6] - -在这里,你可以用GSConnect查看并管理配对的设备。进入此界面后,需要在Android设备上启动应用程序。 - -配对的初始化可以再任意一台设备上进行,在这里我们从Android设备连接到电脑。点击应用程序上的刷新(refresh),只要两个设备都在同一个无线网络环境中,你的Android设备便可以搜索到你的电脑。现在可以向桌面发送配对请求,并在桌面上接受配对请求以完成配对。 - -![][7] - -### 使用 GSConnect - -配对后,你将需要授予对Android设备的权限,才能使用GSConnect上提供的许多功能。单击设备列表中的配对设备,便可以查看所有可用功能,并根据你的偏好和需要启用或禁用它们。 - -![][8] - -请记住,你还需要在Android应用程序中授予相应的权限才能使用这些功能。启用权限后,你现在可以访问桌面上的移动联系人,获得消息通知并回复消息,甚至同步桌面和Android设备剪贴板。 - -### 集成在文件系统与浏览器上 - -GSConnect允许你直接从桌面文件资源管理器向Android设备发送文件。 - -在Fedora的默认GNOME桌面上,你需要安装_nautilus-python_依赖包,以便在菜单中显示配对的设备。安装它只需要再终端中输入: - -``` -$ sudo dnf install nautilus-python -``` - -完成后,将在“文件(Files)”的菜单中显示“发送到移动设备(Send to Mobile Device)”选项。 - -![][9] - -同样,为你的浏览器安装相应的WebExtension,无论是[Firefox][10]还是[Chrome][11]浏览器,都可以将链接发送到你的Android设备。你可以选择直接在浏览器中发送要启动的链接,或将其作为短信息发送。 - -### 运行命令 - -GSConnect允许你定义命令,然后可以从远程设备在电脑上运行这些命令。这使得你可以远程截屏,或者从你的Android设备锁定和解锁你的桌面。 - -![][12] - -要使用此功能,可以使用标准shell命令和GSConnect公开的CLI。项目的GitHub存储库中提供了有关此操作的文档: _CLI Scripting_。 - -[KDE UserBase Wiki][13]有一个命令示例列表。这些例子包括控制桌面的亮度和音量,锁定鼠标和键盘,甚至更改桌面主题。其中一些命令是针对KDE Plasma设计的,需要进行修改才能在GNOME桌面上运行。 - -### 探索并享受乐趣 - -GSConnect使我们能够享受到极大的便利和舒适。深入研究首选项,查看你可以做的所有事情,灵活的使用这些命令功能。并在下面的评论中自由分享你解锁的新方式。 - -* * * - -_Photo by [Pathum Danthanarayana][14] on [Unsplash][15]._ - --------------------------------------------------------------------------------- - -via: https://fedoramagazine.org/connect-fedora-to-your-android-phone-with-gsconnect/ - -作者:[Lokesh Krishna][a] -选题:[lujun9972][b] -译者:[chai-yuan](https://github.com/chai-yuan) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://fedoramagazine.org/author/lowkeyskywalker/ -[b]: https://github.com/lujun9972 -[1]: https://fedoramagazine.org/wp-content/uploads/2019/12/gsconnect-816x345.jpg -[2]: https://extensions.gnome.org/extension/1319/gsconnect/ -[3]: https://fedoramagazine.org/install-gnome-shell-extension/ -[4]: https://play.google.com/store/apps/details?id=org.kde.kdeconnect_tp -[5]: https://f-droid.org/en/packages/org.kde.kdeconnect_tp/ -[6]: https://fedoramagazine.org/wp-content/uploads/2020/01/within-the-menu-1024x576.png -[7]: https://fedoramagazine.org/wp-content/uploads/2020/01/pair-request-1024x576.png -[8]: https://fedoramagazine.org/wp-content/uploads/2020/01/permissions-1024x576.png -[9]: https://fedoramagazine.org/wp-content/uploads/2020/01/send-to-mobile-2-1024x576.png -[10]: https://addons.mozilla.org/en-US/firefox/addon/gsconnect/ -[11]: https://chrome.google.com/webstore/detail/gsconnect/jfnifeihccihocjbfcfhicmmgpjicaec -[12]: https://fedoramagazine.org/wp-content/uploads/2020/01/commands-1024x576.png -[13]: https://userbase.kde.org/KDE_Connect/Tutorials/Useful_commands -[14]: https://unsplash.com/@pathum_danthanarayana?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText -[15]: https://unsplash.com/s/photos/android?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText From 2276a0a8b9ba6a1300c7b686693f2f0bdb557b5f Mon Sep 17 00:00:00 2001 From: Morisun029 <54652937+Morisun029@users.noreply.github.com> Date: Mon, 10 Feb 2020 21:10:35 +0800 Subject: [PATCH 04/18] Revert "fix issue" This reverts commit 9092eb263e85ae9884ad0ef5ae8d055480fb7656. --- translated/tech/20200206 3 ways to use PostgreSQL commands.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translated/tech/20200206 3 ways to use PostgreSQL commands.md b/translated/tech/20200206 3 ways to use PostgreSQL commands.md index 9f5890f370..da2671cc2f 100644 --- a/translated/tech/20200206 3 ways to use PostgreSQL commands.md +++ b/translated/tech/20200206 3 ways to use PostgreSQL commands.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: (Morisun029) +[#]: translator: ( ) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) From 413a702072905f7f2ad639ef6790d2e0d8a98549 Mon Sep 17 00:00:00 2001 From: Morisun029 <54652937+Morisun029@users.noreply.github.com> Date: Mon, 10 Feb 2020 21:10:43 +0800 Subject: [PATCH 05/18] Revert "delete useless file" This reverts commit ed1de25914c69afe5effe7c51d3db59415cd2632, reversing changes made to 506f08712ecc96eb861fe16ceed7f3e2681ccdd9. --- ...00206 3 ways to use PostgreSQL commands.md | 230 ------------------ 1 file changed, 230 deletions(-) delete mode 100644 sources/tech/20200206 3 ways to use PostgreSQL commands.md diff --git a/sources/tech/20200206 3 ways to use PostgreSQL commands.md b/sources/tech/20200206 3 ways to use PostgreSQL commands.md deleted file mode 100644 index 645baf65e0..0000000000 --- a/sources/tech/20200206 3 ways to use PostgreSQL commands.md +++ /dev/null @@ -1,230 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (Morisun029) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (3 ways to use PostgreSQL commands) -[#]: via: (https://opensource.com/article/20/2/postgresql-commands) -[#]: author: (Greg Pittman https://opensource.com/users/greg-p) - -3 ways to use PostgreSQL commands -====== -Whether you need something simple, like a shopping list, or complex, -like a color swatch generator, PostgreSQL commands make it easy. -![Team checklist and to dos][1] - -In _[Getting started with PostgreSQL][2]_, I explained how to install, set up, and begin using the open source database software. But there's a lot more you can do with commands in [PostgreSQL][3]. - -For example, I use Postgres to keep track of my grocery shopping list. I do most of the grocery shopping in our home, and the bulk of it happens once a week. I go to several places to buy the things on my list because each store offers a particular selection or quality or maybe a better price. Initially, I made an HTML form page to manage my shopping list, but it couldn't save my entries. So, I had to wait to make my list all at once, and by then I usually forgot some items we need or I want. - -Instead, with PostgreSQL, I can enter bits when I think of them as the week goes on and print out the whole thing right before I go shopping. Here's how you can do that, too. - -### Create a simple shopping list - -First, enter the database with the **psql **command, then create a table for your list with: - - -``` -`Create table groc (item varchar(20), comment varchar(10));` -``` - -Type commands like the following to add items to your list: - - -``` -insert into groc values ('milk', 'K'); -insert into groc values ('bananas', 'KW'); -``` - -There are two pieces of information (separated by a comma) inside the parentheses: the item you want to buy and letters indicating where you want to buy it and whether it's something you usually buy every week (W). - -Since **psql** has a history, you can press the Up arrow and edit the data between the parentheses instead of having to type the whole line for each item. - -After entering a handful of items, check what you've entered with: - - -``` -Select * from groc order by comment; - -      item      | comment -\----------------+--------- - ground coffee  | H - butter         | K - chips          | K - steak          | K - milk           | K - bananas        | KW - raisin bran    | KW - raclette       | L - goat cheese    | L - onion          | P - oranges        | P - potatoes       | P - spinach        | PW - broccoli       | PW - asparagus      | PW - cucumber       | PW - sugarsnap peas | PW - salmon         | S -(18 rows) -``` - -This command orders the results by the _comment_ column so that the items are grouped by where you buy them to make it easier to shop. - -By using a W to indicate your weekly purchases, you can keep your weekly items on the list when you clear out the table to prepare for the next week's list. To so that, enter: - - -``` -`delete from groc where comment not like '%W';` -``` - -Notice that in PostgreSQL, **%** is the wildcard character (instead of an asterisk). So, to save typing, you might type: - - -``` -`delete from groc where item like 'goat%';` -``` - -You can't use **item = 'goat%'**; it won't work. - -When you're ready to shop, output your list to print it or send it to your phone with: - - -``` -\o groclist.txt -select * from groc order by comment; -\o -``` - -The last command, **\o**, with nothing afterward, resets the output to the command line. Otherwise, all output will continue to go to the groc file you created. - -### Analyze complex tables - -This item-by-item entry may be okay for short tables, but what about really big ones? A couple of years ago, I was helping the team at [FreieFarbe.de][4] to create a swatchbook of the free colors (freieFarbe means "free colors" in German) from its HLC color palette, where virtually any imaginable print color can be specified by its hue, luminosity (brightness), and chroma (saturation). The result was the [HLC Color Atlas][5], and here's how we did it. - -The team sent me files with color specifications so I could write Python scripts that would work with Scribus to generate the swatchbooks of color patches easily. One example started like: - - -``` -HLC, C, M, Y, K -H010_L15_C010, 0.5, 49.1, 0.1, 84.5 -H010_L15_C020, 0.0, 79.7, 15.1, 78.9 -H010_L25_C010, 6.1, 38.3, 0.0, 72.5 -H010_L25_C020, 0.0, 61.8, 10.6, 67.9 -H010_L25_C030, 0.0, 79.5, 18.5, 62.7 -H010_L25_C040, 0.4, 94.2, 17.3, 56.5 -H010_L25_C050, 0.0, 100.0, 15.1, 50.6 -H010_L35_C010, 6.1, 32.1, 0.0, 61.8 -H010_L35_C020, 0.0, 51.7, 8.4, 57.5 -H010_L35_C030, 0.0, 68.5, 17.1, 52.5 -H010_L35_C040, 0.0, 81.2, 22.0, 46.2 -H010_L35_C050, 0.0, 91.9, 20.4, 39.3 -H010_L35_C060, 0.1, 100.0, 17.3, 31.5 -H010_L45_C010, 4.3, 27.4, 0.1, 51.3 -``` - -This is slightly modified from the original, which separated the data with tabs. I transformed it into a CSV (comma-separated value) file, which I prefer to use with Python. (CSV files are also very useful because they can be imported easily into a spreadsheet program.) - -In each line, the first item is the color name, and it's followed by its C, M, Y, and K color values. The file consisted of 1,793 colors, and I wanted a way to analyze the information to get a sense of the range of values. This is where PostgreSQL comes into play. I did not want to enter all of this data manually—I don't think I could without errors (and headaches). Fortunately, PostgreSQL has a command for this. - -My first step was to create the database with: - - -``` -`Create table hlc_cmyk (color varchar(40), c decimal, m decimal, y decimal, k decimal);` -``` - -Then I brought in the data with: - - -``` -`\copy  hlc_cmyk from '/home/gregp/HLC_Atlas_CMYK_SampleData.csv' with (header, format CSV);` -``` - -The backslash at the beginning is there because using the plain **copy** command is restricted to root and the Postgres superuser. In the parentheses, **header** means the first line contains headings and should be ignored, and **CSV** means the file format is CSV. Note that parentheses are not required around the color name in this method. - -If the operation is successful, I see a message that says **COPY NNNN**, where the N's refer to the number of rows inserted into the table. - -Finally, I can query the table with: - - -``` -select * from hlc_cmyk; - -     color     |   c   |   m   |   y   |  k   -\---------------+-------+-------+-------+------ - H010_L15_C010 |   0.5 |  49.1 |   0.1 | 84.5 - H010_L15_C020 |   0.0 |  79.7 |  15.1 | 78.9 - H010_L25_C010 |   6.1 |  38.3 |   0.0 | 72.5 - H010_L25_C020 |   0.0 |  61.8 |  10.6 | 67.9 - H010_L25_C030 |   0.0 |  79.5 |  18.5 | 62.7 - H010_L25_C040 |   0.4 |  94.2 |  17.3 | 56.5 - H010_L25_C050 |   0.0 | 100.0 |  15.1 | 50.6 - H010_L35_C010 |   6.1 |  32.1 |   0.0 | 61.8 - H010_L35_C020 |   0.0 |  51.7 |   8.4 | 57.5 - H010_L35_C030 |   0.0 |  68.5 |  17.1 | 52.5 -``` - -It goes on like this for all 1,793 rows of data. In retrospect, I can't say that this query was absolutely necessary for the HLC and Scribus task, but it allayed some of my anxieties about the project. - -To generate the HLC Color Atlas, I automated creating the color charts with Scribus for the 13,000+ colors in those pages of color swatches. - -I could have used the **copy** command to output my data: - - -``` -`\copy hlc_cmyk to '/home/gregp/hlc_cmyk_backup.csv' with (header, format CSV);` -``` - -I also could restrict the output according to certain values with a **where** clause. - -For example, the following command will only send the table values for the hues that begin with H10. - - -``` -`\copy hlc_cmyk to '/home/gregp/hlc_cmyk_backup.csv' with (header, format CSV) where color like 'H10%';` -``` - -### Back up or transfer a database or table - -The final command I will mention here is **pg_dump**, which is used to back up a PostgreSQL database and runs outside of the **psql** console. For example: - - -``` -pg_dump gregp -t hlc_cmyk > hlc.out -pg_dump gregp > dball.out -``` - -The first line exports the **hlc_cmyk** table along with its structure. The second line dumps all the tables inside the **gregp** database. This is very useful for backing up or transferring a database or tables.  - -To transfer a database or table to another computer, first, create a database on the other computer (see my "[getting started][2]" article for details), then do the reverse process: - - -``` -`psql -d gregp -f dball.out` -``` - -This creates all the tables and enters the data in one step. - -### Conclusion - -In this article, we have seen how to use the **WHERE** parameter to restrict operations, along with the use of the PostgreSQL wildcard character **%**. We've also seen how to load a large amount of data into a table, then output some or all of the table data to a file, or even your entire database with all its individual tables. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/2/postgresql-commands - -作者:[Greg Pittman][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/greg-p -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/todo_checklist_team_metrics_report.png?itok=oB5uQbzf (Team checklist and to dos) -[2]: https://opensource.com/article/19/11/getting-started-postgresql -[3]: https://www.postgresql.org/ -[4]: http://freiefarbe.de -[5]: https://www.freiefarbe.de/en/thema-farbe/hlc-colour-atlas/ From 0a01ac59d4370799b9fdb086dbef0e84fa22ea7c Mon Sep 17 00:00:00 2001 From: Morisun029 <54652937+Morisun029@users.noreply.github.com> Date: Mon, 10 Feb 2020 21:13:24 +0800 Subject: [PATCH 06/18] Revert "'translated'" This reverts commit 506f08712ecc96eb861fe16ceed7f3e2681ccdd9. --- ...00206 3 ways to use PostgreSQL commands.md | 230 ++++++++++++++++++ ...00206 3 ways to use PostgreSQL commands.md | 228 ----------------- 2 files changed, 230 insertions(+), 228 deletions(-) create mode 100644 sources/tech/20200206 3 ways to use PostgreSQL commands.md delete mode 100644 translated/tech/20200206 3 ways to use PostgreSQL commands.md diff --git a/sources/tech/20200206 3 ways to use PostgreSQL commands.md b/sources/tech/20200206 3 ways to use PostgreSQL commands.md new file mode 100644 index 0000000000..9cfedc8506 --- /dev/null +++ b/sources/tech/20200206 3 ways to use PostgreSQL commands.md @@ -0,0 +1,230 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (3 ways to use PostgreSQL commands) +[#]: via: (https://opensource.com/article/20/2/postgresql-commands) +[#]: author: (Greg Pittman https://opensource.com/users/greg-p) + +3 ways to use PostgreSQL commands +====== +Whether you need something simple, like a shopping list, or complex, +like a color swatch generator, PostgreSQL commands make it easy. +![Team checklist and to dos][1] + +In _[Getting started with PostgreSQL][2]_, I explained how to install, set up, and begin using the open source database software. But there's a lot more you can do with commands in [PostgreSQL][3]. + +For example, I use Postgres to keep track of my grocery shopping list. I do most of the grocery shopping in our home, and the bulk of it happens once a week. I go to several places to buy the things on my list because each store offers a particular selection or quality or maybe a better price. Initially, I made an HTML form page to manage my shopping list, but it couldn't save my entries. So, I had to wait to make my list all at once, and by then I usually forgot some items we need or I want. + +Instead, with PostgreSQL, I can enter bits when I think of them as the week goes on and print out the whole thing right before I go shopping. Here's how you can do that, too. + +### Create a simple shopping list + +First, enter the database with the **psql **command, then create a table for your list with: + + +``` +`Create table groc (item varchar(20), comment varchar(10));` +``` + +Type commands like the following to add items to your list: + + +``` +insert into groc values ('milk', 'K'); +insert into groc values ('bananas', 'KW'); +``` + +There are two pieces of information (separated by a comma) inside the parentheses: the item you want to buy and letters indicating where you want to buy it and whether it's something you usually buy every week (W). + +Since **psql** has a history, you can press the Up arrow and edit the data between the parentheses instead of having to type the whole line for each item. + +After entering a handful of items, check what you've entered with: + + +``` +Select * from groc order by comment; + +      item      | comment +\----------------+--------- + ground coffee  | H + butter         | K + chips          | K + steak          | K + milk           | K + bananas        | KW + raisin bran    | KW + raclette       | L + goat cheese    | L + onion          | P + oranges        | P + potatoes       | P + spinach        | PW + broccoli       | PW + asparagus      | PW + cucumber       | PW + sugarsnap peas | PW + salmon         | S +(18 rows) +``` + +This command orders the results by the _comment_ column so that the items are grouped by where you buy them to make it easier to shop. + +By using a W to indicate your weekly purchases, you can keep your weekly items on the list when you clear out the table to prepare for the next week's list. To so that, enter: + + +``` +`delete from groc where comment not like '%W';` +``` + +Notice that in PostgreSQL, **%** is the wildcard character (instead of an asterisk). So, to save typing, you might type: + + +``` +`delete from groc where item like 'goat%';` +``` + +You can't use **item = 'goat%'**; it won't work. + +When you're ready to shop, output your list to print it or send it to your phone with: + + +``` +\o groclist.txt +select * from groc order by comment; +\o +``` + +The last command, **\o**, with nothing afterward, resets the output to the command line. Otherwise, all output will continue to go to the groc file you created. + +### Analyze complex tables + +This item-by-item entry may be okay for short tables, but what about really big ones? A couple of years ago, I was helping the team at [FreieFarbe.de][4] to create a swatchbook of the free colors (freieFarbe means "free colors" in German) from its HLC color palette, where virtually any imaginable print color can be specified by its hue, luminosity (brightness), and chroma (saturation). The result was the [HLC Color Atlas][5], and here's how we did it. + +The team sent me files with color specifications so I could write Python scripts that would work with Scribus to generate the swatchbooks of color patches easily. One example started like: + + +``` +HLC, C, M, Y, K +H010_L15_C010, 0.5, 49.1, 0.1, 84.5 +H010_L15_C020, 0.0, 79.7, 15.1, 78.9 +H010_L25_C010, 6.1, 38.3, 0.0, 72.5 +H010_L25_C020, 0.0, 61.8, 10.6, 67.9 +H010_L25_C030, 0.0, 79.5, 18.5, 62.7 +H010_L25_C040, 0.4, 94.2, 17.3, 56.5 +H010_L25_C050, 0.0, 100.0, 15.1, 50.6 +H010_L35_C010, 6.1, 32.1, 0.0, 61.8 +H010_L35_C020, 0.0, 51.7, 8.4, 57.5 +H010_L35_C030, 0.0, 68.5, 17.1, 52.5 +H010_L35_C040, 0.0, 81.2, 22.0, 46.2 +H010_L35_C050, 0.0, 91.9, 20.4, 39.3 +H010_L35_C060, 0.1, 100.0, 17.3, 31.5 +H010_L45_C010, 4.3, 27.4, 0.1, 51.3 +``` + +This is slightly modified from the original, which separated the data with tabs. I transformed it into a CSV (comma-separated value) file, which I prefer to use with Python. (CSV files are also very useful because they can be imported easily into a spreadsheet program.) + +In each line, the first item is the color name, and it's followed by its C, M, Y, and K color values. The file consisted of 1,793 colors, and I wanted a way to analyze the information to get a sense of the range of values. This is where PostgreSQL comes into play. I did not want to enter all of this data manually—I don't think I could without errors (and headaches). Fortunately, PostgreSQL has a command for this. + +My first step was to create the database with: + + +``` +`Create table hlc_cmyk (color varchar(40), c decimal, m decimal, y decimal, k decimal);` +``` + +Then I brought in the data with: + + +``` +`\copy  hlc_cmyk from '/home/gregp/HLC_Atlas_CMYK_SampleData.csv' with (header, format CSV);` +``` + +The backslash at the beginning is there because using the plain **copy** command is restricted to root and the Postgres superuser. In the parentheses, **header** means the first line contains headings and should be ignored, and **CSV** means the file format is CSV. Note that parentheses are not required around the color name in this method. + +If the operation is successful, I see a message that says **COPY NNNN**, where the N's refer to the number of rows inserted into the table. + +Finally, I can query the table with: + + +``` +select * from hlc_cmyk; + +     color     |   c   |   m   |   y   |  k   +\---------------+-------+-------+-------+------ + H010_L15_C010 |   0.5 |  49.1 |   0.1 | 84.5 + H010_L15_C020 |   0.0 |  79.7 |  15.1 | 78.9 + H010_L25_C010 |   6.1 |  38.3 |   0.0 | 72.5 + H010_L25_C020 |   0.0 |  61.8 |  10.6 | 67.9 + H010_L25_C030 |   0.0 |  79.5 |  18.5 | 62.7 + H010_L25_C040 |   0.4 |  94.2 |  17.3 | 56.5 + H010_L25_C050 |   0.0 | 100.0 |  15.1 | 50.6 + H010_L35_C010 |   6.1 |  32.1 |   0.0 | 61.8 + H010_L35_C020 |   0.0 |  51.7 |   8.4 | 57.5 + H010_L35_C030 |   0.0 |  68.5 |  17.1 | 52.5 +``` + +It goes on like this for all 1,793 rows of data. In retrospect, I can't say that this query was absolutely necessary for the HLC and Scribus task, but it allayed some of my anxieties about the project. + +To generate the HLC Color Atlas, I automated creating the color charts with Scribus for the 13,000+ colors in those pages of color swatches. + +I could have used the **copy** command to output my data: + + +``` +`\copy hlc_cmyk to '/home/gregp/hlc_cmyk_backup.csv' with (header, format CSV);` +``` + +I also could restrict the output according to certain values with a **where** clause. + +For example, the following command will only send the table values for the hues that begin with H10. + + +``` +`\copy hlc_cmyk to '/home/gregp/hlc_cmyk_backup.csv' with (header, format CSV) where color like 'H10%';` +``` + +### Back up or transfer a database or table + +The final command I will mention here is **pg_dump**, which is used to back up a PostgreSQL database and runs outside of the **psql** console. For example: + + +``` +pg_dump gregp -t hlc_cmyk > hlc.out +pg_dump gregp > dball.out +``` + +The first line exports the **hlc_cmyk** table along with its structure. The second line dumps all the tables inside the **gregp** database. This is very useful for backing up or transferring a database or tables.  + +To transfer a database or table to another computer, first, create a database on the other computer (see my "[getting started][2]" article for details), then do the reverse process: + + +``` +`psql -d gregp -f dball.out` +``` + +This creates all the tables and enters the data in one step. + +### Conclusion + +In this article, we have seen how to use the **WHERE** parameter to restrict operations, along with the use of the PostgreSQL wildcard character **%**. We've also seen how to load a large amount of data into a table, then output some or all of the table data to a file, or even your entire database with all its individual tables. + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/20/2/postgresql-commands + +作者:[Greg Pittman][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/greg-p +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/todo_checklist_team_metrics_report.png?itok=oB5uQbzf (Team checklist and to dos) +[2]: https://opensource.com/article/19/11/getting-started-postgresql +[3]: https://www.postgresql.org/ +[4]: http://freiefarbe.de +[5]: https://www.freiefarbe.de/en/thema-farbe/hlc-colour-atlas/ diff --git a/translated/tech/20200206 3 ways to use PostgreSQL commands.md b/translated/tech/20200206 3 ways to use PostgreSQL commands.md deleted file mode 100644 index da2671cc2f..0000000000 --- a/translated/tech/20200206 3 ways to use PostgreSQL commands.md +++ /dev/null @@ -1,228 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (3 ways to use PostgreSQL commands) -[#]: via: (https://opensource.com/article/20/2/postgresql-commands) -[#]: author: (Greg Pittman https://opensource.com/users/greg-p) - -3种使用 PostgreSQL 命令的方式 -====== -无论你需要的东西简单(如一个购物清单)亦或复杂(如色卡生成器) - PostgreSQL 命令都能使它变得容易起来。 - -![Team checklist and to dos][1] - -在 _[PostgreSQL 入门][2]_ 一文中, 我解释了如何安装,设置和开始使用开源数据库软件。然而,使用 [PostgreSQL][3] 中的命令可以做更多事情。 - -例如,我使用 Postgres 来跟踪我杂货店的购物清单。我杂货店里的大多数购物是在家里进行的,其中每周进行一次大批量的采购。我去几个不同的地方购买清单上的东西,因为每家商店都提供特定的选择或质量,亦或更好的价格。最初,我制作了一个HTML表单页面来管理我的购物清单,但这样无法保存我的输入内容。因此,在想到要购买的物品时我必须要马上列出清单,因为到采购时我常常会忘记一些我需要或想要的东西。 - -相反,使用 PostgreSQL,当我想到需要的物品时,我可以随时输入,并在购物前打印出来。你也可以这样做。 - - -### 创建一个简单的购物清单 - - -首先,数据库中输入**psql ** 命令,然后用下面的命令创建一个表: -``` -`Create table groc (item varchar(20), comment varchar(10));` -``` - -输入如下命令在清单中加入商品: - -``` -insert into groc values ('milk', 'K'); -insert into groc values ('bananas', 'KW'); -``` - -括号中有两个信息(逗号隔开):前面是你需要买的东西,后面字母代表你要购买的地点以及哪些东西是你每周通常都要买的(W)。 - -因为 **psql** 有历史记录,你可以按向上键在括号内编辑信息,而无需输入商品的整行信息。 - -在输入一小部分商品后,输入下面命令来检查前面的输入内容。 - -``` -Select * from groc order by comment; - - item | comment -\----------------+--------- - ground coffee | H - butter | K - chips | K - steak | K - milk | K - bananas | KW - raisin bran | KW - raclette | L - goat cheese | L - onion | P - oranges | P - potatoes | P - spinach | PW - broccoli | PW - asparagus | PW - cucumber | PW - sugarsnap peas | PW - salmon | S -(18 rows) -``` - -此命令按_comment_ 列对结果进行排序,以便按购买地点对商品进行分组,从而是你的购物更加方便。 - -使用W来指明你每周要买的东西,当你要清除表单为下周的列表做准备时,你可以将每周的商品保留在购物清单上。输入: - -``` -`delete from groc where comment not like '%W';` -``` - -注意,在 PostgreSQL 中 **%** 表示通配符(而非星号)。所以,要保存输入内容,需要输入: - -``` -`delete from groc where item like 'goat%';` -``` - -不能使用**item = 'goat%'**,这样没用。 - - -在购物时,用以下命令输出清单并打印出来发送到你的手机: - -``` -\o groclist.txt -select * from groc order by comment; -\o -``` - -最后一个命令**\o*,重置输出到命令行。否则,所有的输出会继续输出到你创建的杂货店购物文件中。 - -### 分析复杂的表 - -This item-by-item entry may be okay for short tables, but what about really big ones? A couple of years ago, I was helping the team at [FreieFarbe.de][4] to create a swatchbook of the free colors (freieFarbe means "free colors" in German) from its HLC color palette, where virtually any imaginable print color can be specified by its hue, luminosity (brightness), and chroma (saturation). The result was the [HLC Color Atlas][5], and here's how we did it. - -逐个输入对于数据量小的表来说没有问题,但是对于数据量大的表呢?几年前,我帮团队从 HLC 调色板中创建一个自由色的色样册。事实上,任何能想象到的打印色都可按色调、亮度、浓度(饱和度)来规定。最终结果是[HLC Color Atlas][5],下面是我们如何实现的。 - -该团队向我发送了具有颜色规范的文件,因此我可以编写可与 Scribus 配合使用的 Python 脚本,以轻松生成色样册。一个例子像这样开始: - - -``` -HLC, C, M, Y, K -H010_L15_C010, 0.5, 49.1, 0.1, 84.5 -H010_L15_C020, 0.0, 79.7, 15.1, 78.9 -H010_L25_C010, 6.1, 38.3, 0.0, 72.5 -H010_L25_C020, 0.0, 61.8, 10.6, 67.9 -H010_L25_C030, 0.0, 79.5, 18.5, 62.7 -H010_L25_C040, 0.4, 94.2, 17.3, 56.5 -H010_L25_C050, 0.0, 100.0, 15.1, 50.6 -H010_L35_C010, 6.1, 32.1, 0.0, 61.8 -H010_L35_C020, 0.0, 51.7, 8.4, 57.5 -H010_L35_C030, 0.0, 68.5, 17.1, 52.5 -H010_L35_C040, 0.0, 81.2, 22.0, 46.2 -H010_L35_C050, 0.0, 91.9, 20.4, 39.3 -H010_L35_C060, 0.1, 100.0, 17.3, 31.5 -H010_L45_C010, 4.3, 27.4, 0.1, 51.3 -``` - -这与原文件相比,稍有修改,将数据用制表符分隔。我将其转换成 CSV 格式(逗号分割值),我更喜欢其与 Python 一起使用(CSV 文也很有用因为它可轻松导入到电子表格程序中)。 - -在每一行中,第一项是颜色名称,其后是其 C,M,Y 和 K 颜色值。 该文件包含1,793种颜色,我想要一种分析信息的方法,以了解这些值的范围。 这就是 PostgreSQL 发挥作用的地方。 我不想手动输入所有数据-我认为输入过程中我不可能不出错。 幸运的是,PostgreSQL 为此提供了一个命令。 - -首先用以下命令创建数据库: - -``` -`Create table hlc_cmyk (color varchar(40), c decimal, m decimal, y decimal, k decimal);` -``` - -然后通过以下命令引入数据: - - -``` -`\copy hlc_cmyk from '/home/gregp/HLC_Atlas_CMYK_SampleData.csv' with (header, format CSV);` -``` - - -开头有反斜杠,是因为使用纯**copy** 命令仅限于 root 用户和 Postgres 的超级用户。 在括号中,**header** 表示第一行包含标题,应忽略,**CSV** 表示文件格式为 CSV。 请注意,在此方法中,颜色名称周围不需要括号。 - -如果操作成功,会看到 **COPY NNNN**,其中 N 表示插入到表中的行号。 - -最后,可以用下列命令查询: - -``` -select * from hlc_cmyk; - - color | c | m | y | k -\---------------+-------+-------+-------+------ - H010_L15_C010 | 0.5 | 49.1 | 0.1 | 84.5 - H010_L15_C020 | 0.0 | 79.7 | 15.1 | 78.9 - H010_L25_C010 | 6.1 | 38.3 | 0.0 | 72.5 - H010_L25_C020 | 0.0 | 61.8 | 10.6 | 67.9 - H010_L25_C030 | 0.0 | 79.5 | 18.5 | 62.7 - H010_L25_C040 | 0.4 | 94.2 | 17.3 | 56.5 - H010_L25_C050 | 0.0 | 100.0 | 15.1 | 50.6 - H010_L35_C010 | 6.1 | 32.1 | 0.0 | 61.8 - H010_L35_C020 | 0.0 | 51.7 | 8.4 | 57.5 - H010_L35_C030 | 0.0 | 68.5 | 17.1 | 52.5 -``` - - -所有1,793行数据都是这样的。 回想起来,我不能说此查询对于HLC和Scribus任务是绝对必要的,但是它减轻了我对该项目的一些担忧。 - -为了生成 HLC 色谱,我使用 Scribus 为色板页面中的13,000多种颜色自动创建了颜色图表。 - -我可以使用 **copy** 命令输出数据: - -``` -`\copy hlc_cmyk to '/home/gregp/hlc_cmyk_backup.csv' with (header, format CSV);` -``` - - -我还可以使用 ** where ** 子句根据某些值来限制输出。 - -例如,以下命令将仅发送以 H10 开头的色调值。 - - -``` -`\copy hlc_cmyk to '/home/gregp/hlc_cmyk_backup.csv' with (header, format CSV) where color like 'H10%';` -``` - -### 备份或传输数据库或表 - -我在此要提到的最后一个命令是**pg_dump**,它用于备份 PostgreSQL 数据库,并在 **psql** 控制台之外运行。 例如: - -``` -pg_dump gregp -t hlc_cmyk > hlc.out -pg_dump gregp > dball.out -``` - -第一行是导出 **hlc_cmyk** 表及其结构。第二行将转储 **gregp** 数据库中的所有表。 这对于备份或传输数据库或表非常有用。 - - -要将数据库或表转到另一台电脑( 查看"[ PostgreSQL 入门][2]" 那篇文章获取详细信息),首先在要转入的电脑上创建一个数据库,然后执行相反的操作。 - -``` -`psql -d gregp -f dball.out` -``` - -一步创建所有表并输入数据。 - -### 总结 - -在本文中,我们了解了如何使用 **WHERE** 参数限制操作,以及如何使用 PostgreSQL 通配符 **%**。 我们还了解了如何将大批量数据加载到表中,然后将部分或全部表数据输出到文件,甚至是将整个数据库及其所有单个表输出。 - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/2/postgresql-commands - -作者:[Greg Pittman][a] -选题:[lujun9972][b] -译者:[Morisun029](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/greg-p -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/todo_checklist_team_metrics_report.png?itok=oB5uQbzf (Team checklist and to dos) -[2]: https://opensource.com/article/19/11/getting-started-postgresql -[3]: https://www.postgresql.org/ -[4]: http://freiefarbe.de -[5]: https://www.freiefarbe.de/en/thema-farbe/hlc-colour-atlas/ From df896d92db0cdd57aafff9ac16d6317b276d3ab3 Mon Sep 17 00:00:00 2001 From: Morisun029 <54652937+Morisun029@users.noreply.github.com> Date: Mon, 10 Feb 2020 21:15:38 +0800 Subject: [PATCH 07/18] translated --- ...00206 3 ways to use PostgreSQL commands.md | 228 ++++++++++++++++++ 1 file changed, 228 insertions(+) create mode 100644 translated/tech/20200206 3 ways to use PostgreSQL commands.md diff --git a/translated/tech/20200206 3 ways to use PostgreSQL commands.md b/translated/tech/20200206 3 ways to use PostgreSQL commands.md new file mode 100644 index 0000000000..9f5890f370 --- /dev/null +++ b/translated/tech/20200206 3 ways to use PostgreSQL commands.md @@ -0,0 +1,228 @@ +[#]: collector: (lujun9972) +[#]: translator: (Morisun029) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (3 ways to use PostgreSQL commands) +[#]: via: (https://opensource.com/article/20/2/postgresql-commands) +[#]: author: (Greg Pittman https://opensource.com/users/greg-p) + +3种使用 PostgreSQL 命令的方式 +====== +无论你需要的东西简单(如一个购物清单)亦或复杂(如色卡生成器) + PostgreSQL 命令都能使它变得容易起来。 + +![Team checklist and to dos][1] + +在 _[PostgreSQL 入门][2]_ 一文中, 我解释了如何安装,设置和开始使用开源数据库软件。然而,使用 [PostgreSQL][3] 中的命令可以做更多事情。 + +例如,我使用 Postgres 来跟踪我杂货店的购物清单。我杂货店里的大多数购物是在家里进行的,其中每周进行一次大批量的采购。我去几个不同的地方购买清单上的东西,因为每家商店都提供特定的选择或质量,亦或更好的价格。最初,我制作了一个HTML表单页面来管理我的购物清单,但这样无法保存我的输入内容。因此,在想到要购买的物品时我必须要马上列出清单,因为到采购时我常常会忘记一些我需要或想要的东西。 + +相反,使用 PostgreSQL,当我想到需要的物品时,我可以随时输入,并在购物前打印出来。你也可以这样做。 + + +### 创建一个简单的购物清单 + + +首先,数据库中输入**psql ** 命令,然后用下面的命令创建一个表: +``` +`Create table groc (item varchar(20), comment varchar(10));` +``` + +输入如下命令在清单中加入商品: + +``` +insert into groc values ('milk', 'K'); +insert into groc values ('bananas', 'KW'); +``` + +括号中有两个信息(逗号隔开):前面是你需要买的东西,后面字母代表你要购买的地点以及哪些东西是你每周通常都要买的(W)。 + +因为 **psql** 有历史记录,你可以按向上键在括号内编辑信息,而无需输入商品的整行信息。 + +在输入一小部分商品后,输入下面命令来检查前面的输入内容。 + +``` +Select * from groc order by comment; + + item | comment +\----------------+--------- + ground coffee | H + butter | K + chips | K + steak | K + milk | K + bananas | KW + raisin bran | KW + raclette | L + goat cheese | L + onion | P + oranges | P + potatoes | P + spinach | PW + broccoli | PW + asparagus | PW + cucumber | PW + sugarsnap peas | PW + salmon | S +(18 rows) +``` + +此命令按_comment_ 列对结果进行排序,以便按购买地点对商品进行分组,从而是你的购物更加方便。 + +使用W来指明你每周要买的东西,当你要清除表单为下周的列表做准备时,你可以将每周的商品保留在购物清单上。输入: + +``` +`delete from groc where comment not like '%W';` +``` + +注意,在 PostgreSQL 中 **%** 表示通配符(而非星号)。所以,要保存输入内容,需要输入: + +``` +`delete from groc where item like 'goat%';` +``` + +不能使用**item = 'goat%'**,这样没用。 + + +在购物时,用以下命令输出清单并打印出来发送到你的手机: + +``` +\o groclist.txt +select * from groc order by comment; +\o +``` + +最后一个命令**\o*,重置输出到命令行。否则,所有的输出会继续输出到你创建的杂货店购物文件中。 + +### 分析复杂的表 + +This item-by-item entry may be okay for short tables, but what about really big ones? A couple of years ago, I was helping the team at [FreieFarbe.de][4] to create a swatchbook of the free colors (freieFarbe means "free colors" in German) from its HLC color palette, where virtually any imaginable print color can be specified by its hue, luminosity (brightness), and chroma (saturation). The result was the [HLC Color Atlas][5], and here's how we did it. + +逐个输入对于数据量小的表来说没有问题,但是对于数据量大的表呢?几年前,我帮团队从 HLC 调色板中创建一个自由色的色样册。事实上,任何能想象到的打印色都可按色调、亮度、浓度(饱和度)来规定。最终结果是[HLC Color Atlas][5],下面是我们如何实现的。 + +该团队向我发送了具有颜色规范的文件,因此我可以编写可与 Scribus 配合使用的 Python 脚本,以轻松生成色样册。一个例子像这样开始: + + +``` +HLC, C, M, Y, K +H010_L15_C010, 0.5, 49.1, 0.1, 84.5 +H010_L15_C020, 0.0, 79.7, 15.1, 78.9 +H010_L25_C010, 6.1, 38.3, 0.0, 72.5 +H010_L25_C020, 0.0, 61.8, 10.6, 67.9 +H010_L25_C030, 0.0, 79.5, 18.5, 62.7 +H010_L25_C040, 0.4, 94.2, 17.3, 56.5 +H010_L25_C050, 0.0, 100.0, 15.1, 50.6 +H010_L35_C010, 6.1, 32.1, 0.0, 61.8 +H010_L35_C020, 0.0, 51.7, 8.4, 57.5 +H010_L35_C030, 0.0, 68.5, 17.1, 52.5 +H010_L35_C040, 0.0, 81.2, 22.0, 46.2 +H010_L35_C050, 0.0, 91.9, 20.4, 39.3 +H010_L35_C060, 0.1, 100.0, 17.3, 31.5 +H010_L45_C010, 4.3, 27.4, 0.1, 51.3 +``` + +这与原文件相比,稍有修改,将数据用制表符分隔。我将其转换成 CSV 格式(逗号分割值),我更喜欢其与 Python 一起使用(CSV 文也很有用因为它可轻松导入到电子表格程序中)。 + +在每一行中,第一项是颜色名称,其后是其 C,M,Y 和 K 颜色值。 该文件包含1,793种颜色,我想要一种分析信息的方法,以了解这些值的范围。 这就是 PostgreSQL 发挥作用的地方。 我不想手动输入所有数据-我认为输入过程中我不可能不出错。 幸运的是,PostgreSQL 为此提供了一个命令。 + +首先用以下命令创建数据库: + +``` +`Create table hlc_cmyk (color varchar(40), c decimal, m decimal, y decimal, k decimal);` +``` + +然后通过以下命令引入数据: + + +``` +`\copy hlc_cmyk from '/home/gregp/HLC_Atlas_CMYK_SampleData.csv' with (header, format CSV);` +``` + + +开头有反斜杠,是因为使用纯**copy** 命令仅限于 root 用户和 Postgres 的超级用户。 在括号中,**header** 表示第一行包含标题,应忽略,**CSV** 表示文件格式为 CSV。 请注意,在此方法中,颜色名称周围不需要括号。 + +如果操作成功,会看到 **COPY NNNN**,其中 N 表示插入到表中的行号。 + +最后,可以用下列命令查询: + +``` +select * from hlc_cmyk; + + color | c | m | y | k +\---------------+-------+-------+-------+------ + H010_L15_C010 | 0.5 | 49.1 | 0.1 | 84.5 + H010_L15_C020 | 0.0 | 79.7 | 15.1 | 78.9 + H010_L25_C010 | 6.1 | 38.3 | 0.0 | 72.5 + H010_L25_C020 | 0.0 | 61.8 | 10.6 | 67.9 + H010_L25_C030 | 0.0 | 79.5 | 18.5 | 62.7 + H010_L25_C040 | 0.4 | 94.2 | 17.3 | 56.5 + H010_L25_C050 | 0.0 | 100.0 | 15.1 | 50.6 + H010_L35_C010 | 6.1 | 32.1 | 0.0 | 61.8 + H010_L35_C020 | 0.0 | 51.7 | 8.4 | 57.5 + H010_L35_C030 | 0.0 | 68.5 | 17.1 | 52.5 +``` + + +所有1,793行数据都是这样的。 回想起来,我不能说此查询对于HLC和Scribus任务是绝对必要的,但是它减轻了我对该项目的一些担忧。 + +为了生成 HLC 色谱,我使用 Scribus 为色板页面中的13,000多种颜色自动创建了颜色图表。 + +我可以使用 **copy** 命令输出数据: + +``` +`\copy hlc_cmyk to '/home/gregp/hlc_cmyk_backup.csv' with (header, format CSV);` +``` + + +我还可以使用 ** where ** 子句根据某些值来限制输出。 + +例如,以下命令将仅发送以 H10 开头的色调值。 + + +``` +`\copy hlc_cmyk to '/home/gregp/hlc_cmyk_backup.csv' with (header, format CSV) where color like 'H10%';` +``` + +### 备份或传输数据库或表 + +我在此要提到的最后一个命令是**pg_dump**,它用于备份 PostgreSQL 数据库,并在 **psql** 控制台之外运行。 例如: + +``` +pg_dump gregp -t hlc_cmyk > hlc.out +pg_dump gregp > dball.out +``` + +第一行是导出 **hlc_cmyk** 表及其结构。第二行将转储 **gregp** 数据库中的所有表。 这对于备份或传输数据库或表非常有用。 + + +要将数据库或表转到另一台电脑( 查看"[ PostgreSQL 入门][2]" 那篇文章获取详细信息),首先在要转入的电脑上创建一个数据库,然后执行相反的操作。 + +``` +`psql -d gregp -f dball.out` +``` + +一步创建所有表并输入数据。 + +### 总结 + +在本文中,我们了解了如何使用 **WHERE** 参数限制操作,以及如何使用 PostgreSQL 通配符 **%**。 我们还了解了如何将大批量数据加载到表中,然后将部分或全部表数据输出到文件,甚至是将整个数据库及其所有单个表输出。 + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/20/2/postgresql-commands + +作者:[Greg Pittman][a] +选题:[lujun9972][b] +译者:[Morisun029](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/greg-p +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/todo_checklist_team_metrics_report.png?itok=oB5uQbzf (Team checklist and to dos) +[2]: https://opensource.com/article/19/11/getting-started-postgresql +[3]: https://www.postgresql.org/ +[4]: http://freiefarbe.de +[5]: https://www.freiefarbe.de/en/thema-farbe/hlc-colour-atlas/ From d3ce29bb98f1c69517f4c13c72af02bab659ec39 Mon Sep 17 00:00:00 2001 From: Morisun029 <54652937+Morisun029@users.noreply.github.com> Date: Mon, 10 Feb 2020 21:18:02 +0800 Subject: [PATCH 08/18] translated --- ...00206 3 ways to use PostgreSQL commands.md | 230 ------------------ 1 file changed, 230 deletions(-) delete mode 100644 sources/tech/20200206 3 ways to use PostgreSQL commands.md diff --git a/sources/tech/20200206 3 ways to use PostgreSQL commands.md b/sources/tech/20200206 3 ways to use PostgreSQL commands.md deleted file mode 100644 index 9cfedc8506..0000000000 --- a/sources/tech/20200206 3 ways to use PostgreSQL commands.md +++ /dev/null @@ -1,230 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (3 ways to use PostgreSQL commands) -[#]: via: (https://opensource.com/article/20/2/postgresql-commands) -[#]: author: (Greg Pittman https://opensource.com/users/greg-p) - -3 ways to use PostgreSQL commands -====== -Whether you need something simple, like a shopping list, or complex, -like a color swatch generator, PostgreSQL commands make it easy. -![Team checklist and to dos][1] - -In _[Getting started with PostgreSQL][2]_, I explained how to install, set up, and begin using the open source database software. But there's a lot more you can do with commands in [PostgreSQL][3]. - -For example, I use Postgres to keep track of my grocery shopping list. I do most of the grocery shopping in our home, and the bulk of it happens once a week. I go to several places to buy the things on my list because each store offers a particular selection or quality or maybe a better price. Initially, I made an HTML form page to manage my shopping list, but it couldn't save my entries. So, I had to wait to make my list all at once, and by then I usually forgot some items we need or I want. - -Instead, with PostgreSQL, I can enter bits when I think of them as the week goes on and print out the whole thing right before I go shopping. Here's how you can do that, too. - -### Create a simple shopping list - -First, enter the database with the **psql **command, then create a table for your list with: - - -``` -`Create table groc (item varchar(20), comment varchar(10));` -``` - -Type commands like the following to add items to your list: - - -``` -insert into groc values ('milk', 'K'); -insert into groc values ('bananas', 'KW'); -``` - -There are two pieces of information (separated by a comma) inside the parentheses: the item you want to buy and letters indicating where you want to buy it and whether it's something you usually buy every week (W). - -Since **psql** has a history, you can press the Up arrow and edit the data between the parentheses instead of having to type the whole line for each item. - -After entering a handful of items, check what you've entered with: - - -``` -Select * from groc order by comment; - -      item      | comment -\----------------+--------- - ground coffee  | H - butter         | K - chips          | K - steak          | K - milk           | K - bananas        | KW - raisin bran    | KW - raclette       | L - goat cheese    | L - onion          | P - oranges        | P - potatoes       | P - spinach        | PW - broccoli       | PW - asparagus      | PW - cucumber       | PW - sugarsnap peas | PW - salmon         | S -(18 rows) -``` - -This command orders the results by the _comment_ column so that the items are grouped by where you buy them to make it easier to shop. - -By using a W to indicate your weekly purchases, you can keep your weekly items on the list when you clear out the table to prepare for the next week's list. To so that, enter: - - -``` -`delete from groc where comment not like '%W';` -``` - -Notice that in PostgreSQL, **%** is the wildcard character (instead of an asterisk). So, to save typing, you might type: - - -``` -`delete from groc where item like 'goat%';` -``` - -You can't use **item = 'goat%'**; it won't work. - -When you're ready to shop, output your list to print it or send it to your phone with: - - -``` -\o groclist.txt -select * from groc order by comment; -\o -``` - -The last command, **\o**, with nothing afterward, resets the output to the command line. Otherwise, all output will continue to go to the groc file you created. - -### Analyze complex tables - -This item-by-item entry may be okay for short tables, but what about really big ones? A couple of years ago, I was helping the team at [FreieFarbe.de][4] to create a swatchbook of the free colors (freieFarbe means "free colors" in German) from its HLC color palette, where virtually any imaginable print color can be specified by its hue, luminosity (brightness), and chroma (saturation). The result was the [HLC Color Atlas][5], and here's how we did it. - -The team sent me files with color specifications so I could write Python scripts that would work with Scribus to generate the swatchbooks of color patches easily. One example started like: - - -``` -HLC, C, M, Y, K -H010_L15_C010, 0.5, 49.1, 0.1, 84.5 -H010_L15_C020, 0.0, 79.7, 15.1, 78.9 -H010_L25_C010, 6.1, 38.3, 0.0, 72.5 -H010_L25_C020, 0.0, 61.8, 10.6, 67.9 -H010_L25_C030, 0.0, 79.5, 18.5, 62.7 -H010_L25_C040, 0.4, 94.2, 17.3, 56.5 -H010_L25_C050, 0.0, 100.0, 15.1, 50.6 -H010_L35_C010, 6.1, 32.1, 0.0, 61.8 -H010_L35_C020, 0.0, 51.7, 8.4, 57.5 -H010_L35_C030, 0.0, 68.5, 17.1, 52.5 -H010_L35_C040, 0.0, 81.2, 22.0, 46.2 -H010_L35_C050, 0.0, 91.9, 20.4, 39.3 -H010_L35_C060, 0.1, 100.0, 17.3, 31.5 -H010_L45_C010, 4.3, 27.4, 0.1, 51.3 -``` - -This is slightly modified from the original, which separated the data with tabs. I transformed it into a CSV (comma-separated value) file, which I prefer to use with Python. (CSV files are also very useful because they can be imported easily into a spreadsheet program.) - -In each line, the first item is the color name, and it's followed by its C, M, Y, and K color values. The file consisted of 1,793 colors, and I wanted a way to analyze the information to get a sense of the range of values. This is where PostgreSQL comes into play. I did not want to enter all of this data manually—I don't think I could without errors (and headaches). Fortunately, PostgreSQL has a command for this. - -My first step was to create the database with: - - -``` -`Create table hlc_cmyk (color varchar(40), c decimal, m decimal, y decimal, k decimal);` -``` - -Then I brought in the data with: - - -``` -`\copy  hlc_cmyk from '/home/gregp/HLC_Atlas_CMYK_SampleData.csv' with (header, format CSV);` -``` - -The backslash at the beginning is there because using the plain **copy** command is restricted to root and the Postgres superuser. In the parentheses, **header** means the first line contains headings and should be ignored, and **CSV** means the file format is CSV. Note that parentheses are not required around the color name in this method. - -If the operation is successful, I see a message that says **COPY NNNN**, where the N's refer to the number of rows inserted into the table. - -Finally, I can query the table with: - - -``` -select * from hlc_cmyk; - -     color     |   c   |   m   |   y   |  k   -\---------------+-------+-------+-------+------ - H010_L15_C010 |   0.5 |  49.1 |   0.1 | 84.5 - H010_L15_C020 |   0.0 |  79.7 |  15.1 | 78.9 - H010_L25_C010 |   6.1 |  38.3 |   0.0 | 72.5 - H010_L25_C020 |   0.0 |  61.8 |  10.6 | 67.9 - H010_L25_C030 |   0.0 |  79.5 |  18.5 | 62.7 - H010_L25_C040 |   0.4 |  94.2 |  17.3 | 56.5 - H010_L25_C050 |   0.0 | 100.0 |  15.1 | 50.6 - H010_L35_C010 |   6.1 |  32.1 |   0.0 | 61.8 - H010_L35_C020 |   0.0 |  51.7 |   8.4 | 57.5 - H010_L35_C030 |   0.0 |  68.5 |  17.1 | 52.5 -``` - -It goes on like this for all 1,793 rows of data. In retrospect, I can't say that this query was absolutely necessary for the HLC and Scribus task, but it allayed some of my anxieties about the project. - -To generate the HLC Color Atlas, I automated creating the color charts with Scribus for the 13,000+ colors in those pages of color swatches. - -I could have used the **copy** command to output my data: - - -``` -`\copy hlc_cmyk to '/home/gregp/hlc_cmyk_backup.csv' with (header, format CSV);` -``` - -I also could restrict the output according to certain values with a **where** clause. - -For example, the following command will only send the table values for the hues that begin with H10. - - -``` -`\copy hlc_cmyk to '/home/gregp/hlc_cmyk_backup.csv' with (header, format CSV) where color like 'H10%';` -``` - -### Back up or transfer a database or table - -The final command I will mention here is **pg_dump**, which is used to back up a PostgreSQL database and runs outside of the **psql** console. For example: - - -``` -pg_dump gregp -t hlc_cmyk > hlc.out -pg_dump gregp > dball.out -``` - -The first line exports the **hlc_cmyk** table along with its structure. The second line dumps all the tables inside the **gregp** database. This is very useful for backing up or transferring a database or tables.  - -To transfer a database or table to another computer, first, create a database on the other computer (see my "[getting started][2]" article for details), then do the reverse process: - - -``` -`psql -d gregp -f dball.out` -``` - -This creates all the tables and enters the data in one step. - -### Conclusion - -In this article, we have seen how to use the **WHERE** parameter to restrict operations, along with the use of the PostgreSQL wildcard character **%**. We've also seen how to load a large amount of data into a table, then output some or all of the table data to a file, or even your entire database with all its individual tables. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/2/postgresql-commands - -作者:[Greg Pittman][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/greg-p -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/todo_checklist_team_metrics_report.png?itok=oB5uQbzf (Team checklist and to dos) -[2]: https://opensource.com/article/19/11/getting-started-postgresql -[3]: https://www.postgresql.org/ -[4]: http://freiefarbe.de -[5]: https://www.freiefarbe.de/en/thema-farbe/hlc-colour-atlas/ From 675b2df362764774c4e7bae104a9fbd1bc542ebf Mon Sep 17 00:00:00 2001 From: Morisun029 <54652937+Morisun029@users.noreply.github.com> Date: Mon, 10 Feb 2020 21:24:34 +0800 Subject: [PATCH 09/18] fix issue --- ...ra to your Android phone with GSConnect.md | 118 ------------------ ...-CD resources to set you up for success.md | 64 ---------- 2 files changed, 182 deletions(-) delete mode 100644 sources/tech/20200207 Connect Fedora to your Android phone with GSConnect.md delete mode 100644 translated/tech/20191227 Top CI-CD resources to set you up for success.md diff --git a/sources/tech/20200207 Connect Fedora to your Android phone with GSConnect.md b/sources/tech/20200207 Connect Fedora to your Android phone with GSConnect.md deleted file mode 100644 index 528289f3b0..0000000000 --- a/sources/tech/20200207 Connect Fedora to your Android phone with GSConnect.md +++ /dev/null @@ -1,118 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Connect Fedora to your Android phone with GSConnect) -[#]: via: (https://fedoramagazine.org/connect-fedora-to-your-android-phone-with-gsconnect/) -[#]: author: (Lokesh Krishna https://fedoramagazine.org/author/lowkeyskywalker/) - -Connect Fedora to your Android phone with GSConnect -====== - -![][1] - -Both Apple and Microsoft offer varying levels of integration of their desktop offerings with your mobile devices. Fedora offers a similar if not greater degree of integration with **GSConnect**. It lets you pair your Android phone with your Fedora desktop and opens up a lot of possibilities. Keep reading to discover more about what it is and how it works. - -### What is GSConnect? - -GSConnect is an implementation of the KDE Connect project tailored for the GNOME desktop. KDE Connect makes it possible for your devices to communicate with each other. However, installing it on Fedora’s default GNOME desktop requires pulling in a large number of KDE dependencies. - -GSConnect is a complete implementation of KDE Connect, but in the form of a GNOME shell extension. Once installed, GSConnect lets you do the following and a lot more: - - * Receive phone notifications on your desktop and reply to messages - * Use your phone as a remote control for your desktop - * Share files and links between devices - * Check your phone’s battery level from the desktop - * Ring your phone to help find it - - - -### Setting up the GSConnect extension - -Setting up GSConnect requires installing two components: the GSConnect extension on your desktop and the KDE Connect app on your Android device. - -First, install the GSConnect extension from the GNOME Shell extensions website: [GSConnect][2]. (Fedora Magazine has a handy article on [How to install a GNOME Shell extension][3] to help you with this step.) - -The KDE Connect app is available on Google’s [Play Store][4]. It’s also available on the FOSS Android apps repository, [F-Droid][5]. - -Once you have installed both these components, you can pair your two devices. Installing the extension makes it show up in your system menu as _Mobile Devices_. Clicking on it displays a drop down menu, from which you can access _Mobile Settings_. - -![][6] - -Here’s where you can view your paired devices and manage the features offered by GSConnect. Once you are on this screen, launch the app on your Android device. - -You can initiate pairing from either device, but here you’ll be connecting to your desktop from the Android device. Simply hit refresh on the app, and as long as both devices are on the same wireless network, your desktop shows up in your Android device. You can now send a pair request to the desktop. Accept the pair request on your desktop to complete the pairing. - -![][7] - -### Using GSConnect - -Once paired, you’ll need to grant permissions on your Android device to make use of the many features available on GSConnect. Click on the paired device in the list of devices to see all available functions and enable or disable them according to your preferences. - -![][8] - -Remember that you’ll also need to grant corresponding permissions in the Android app to be able to use these functions. Depending upon the features you’ve enabled and the permissions you’ve granted, you can now access your mobile contacts on your desktop, get notified of messages and reply to them, and even sync the desktop and Android device clipboards. - -### Integration with Files and your web browsers - -GSConnect allows you to directly send files to your Android device from your desktop file explorer’s context menu. - -On Fedora’s default GNOME desktop, you will need to install the _nautilus-python_ package in order to make your paired devices show up in the context menu. Installing this is as straightforward as running the following command from your preferred terminal: - -``` -$ sudo dnf install nautilus-python -``` - -Once done, the _Send to Mobile Device_ entry appears in the context menu of the Files app. - -![][9] - -Similarly, install the corresponding WebExtension for your browser, be it [Firefox][10] or [Chrome][11], to send links to your Android device. You have the option to send the link to launch directly in your browser or to deliver it as SMS. - -### Running Commands - -GSConnect lets you define commands which you can then run on your desktop, from your remote device. This allows you to do things such as take a screenshot of your desktop, or lock and unlock your desktop from your Android device, remotely. - -![][12] - -To make use of this feature, you can use standard shell commands and the CLI exposed by GSConnect. Documentation on this is provided in the project’s GitHub repository: _CLI Scripting_. - -The [KDE UserBase Wiki][13] has a list of example commands. These examples cover controlling the brightness and volume on your desktop, locking the mouse and keyboard, and even changing the desktop theme. Some of the commands are specific for KDE Plasma, and modifications are necessary to make it run on the GNOME desktop. - -### Explore and have fun - -GSConnect makes it possible to enjoy a great degree of convenience and comfort. Dive into the preferences to see all that you can do and get creative with the commands function. Feel free to share all the possibilities this utility unlocked in your workflow in the comments below. - -* * * - -_Photo by [Pathum Danthanarayana][14] on [Unsplash][15]._ - --------------------------------------------------------------------------------- - -via: https://fedoramagazine.org/connect-fedora-to-your-android-phone-with-gsconnect/ - -作者:[Lokesh Krishna][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/lowkeyskywalker/ -[b]: https://github.com/lujun9972 -[1]: https://fedoramagazine.org/wp-content/uploads/2019/12/gsconnect-816x345.jpg -[2]: https://extensions.gnome.org/extension/1319/gsconnect/ -[3]: https://fedoramagazine.org/install-gnome-shell-extension/ -[4]: https://play.google.com/store/apps/details?id=org.kde.kdeconnect_tp -[5]: https://f-droid.org/en/packages/org.kde.kdeconnect_tp/ -[6]: https://fedoramagazine.org/wp-content/uploads/2020/01/within-the-menu-1024x576.png -[7]: https://fedoramagazine.org/wp-content/uploads/2020/01/pair-request-1024x576.png -[8]: https://fedoramagazine.org/wp-content/uploads/2020/01/permissions-1024x576.png -[9]: https://fedoramagazine.org/wp-content/uploads/2020/01/send-to-mobile-2-1024x576.png -[10]: https://addons.mozilla.org/en-US/firefox/addon/gsconnect/ -[11]: https://chrome.google.com/webstore/detail/gsconnect/jfnifeihccihocjbfcfhicmmgpjicaec -[12]: https://fedoramagazine.org/wp-content/uploads/2020/01/commands-1024x576.png -[13]: https://userbase.kde.org/KDE_Connect/Tutorials/Useful_commands -[14]: https://unsplash.com/@pathum_danthanarayana?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText -[15]: https://unsplash.com/s/photos/android?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText diff --git a/translated/tech/20191227 Top CI-CD resources to set you up for success.md b/translated/tech/20191227 Top CI-CD resources to set you up for success.md deleted file mode 100644 index 102e53d153..0000000000 --- a/translated/tech/20191227 Top CI-CD resources to set you up for success.md +++ /dev/null @@ -1,64 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (Morisun029) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Top CI/CD resources to set you up for success) -[#]: via: (https://opensource.com/article/19/12/cicd-resources) -[#]: author: (Jessica Cherry https://opensource.com/users/jrepka) - -顶级 CI / CD 资源,助您成功 -====== -随着企业期望实现无缝,灵活和可扩展的部署,持续集成和持续部署成为2019年的关键主题。 -![Plumbing tubes in many directions][1] - -对于 CI / CD 和 DevOps 来说,2019年是非常棒的一年。 Opensource 公司的作者分享了他们专注于无缝,灵活和可扩展部署时是如何朝着敏捷方向发展的。以下是我们2019年发布的 CI / CD 文章中的一些重要主题。 - -### 学习和提高您的 CI / CD 技能 - - -我们最喜欢的一些文章集中在 CI / CD 的实操经验上,并涵盖了许多方面。通常以[Jenkins][2]管道开始,布莱恩特的文章[用 Jenkins 构建 CI/CD 管道][4]将为您提供足够的经验,以开始构建您的第一个管道。丹尼尔在 [用DevOps 管道进行自动验收测试][4]一文中,提供了有关验收测试的重要信息,包括可用于独立测试的各种 CI / CD 应用程序。我写的[安全扫描DevOps 管道][5]非常简短,其中的关键点是关于如何使用 Jenkins 平台在管道中设置安全性的教程。 - -### 交付工作流程 - - -威利•彼得•绍布赞扬为所有产品创建统一流水线的想法,以使[每种产品在一个CI / CD 流水线中持续建立起来,以管控所有产品][8]。这些文章将使您更好地了解团队成员加入工作流流程后会发生什么。 - -### CI / CD 如何影响企业 - - -2019年也是认识到 CI / CD 的业务影响以及它如何影响日常运营的一年。 - - - -Agnieszka Gancarczyk 分享了Red Hat[小型Scrum vs.大型Scrum][9] 的调查结果, 包括受访者对srums, - -敏捷运动及其对团队的影响的不同看法。威尔安•凯丽 的[持续部署如何影响企业][10], 包括开放式沟通的重要性,丹尼尔也强调了[DevOps 团队在3 种类型的指表板][11]中指标和可观测性的重要性。最后是安•玛丽•弗雷德的精彩文章: [不要在生产环境中测试?在生产环境中测试!][12] 详细说明了验收测试前在生产环境中测试的重要性。 - -感谢许多贡献者在2019年与 Opensource 的读者分享他们的见解,我期望在2020年里从他们那里了解更多有关 CI / CD 发展的信息。 - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/19/12/cicd-resources - -作者:[Jessica Cherry][a] -选题:[lujun9972][b] -译者:[Morisun029](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/jrepka -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/plumbing_pipes_tutorial_how_behind_scenes.png?itok=F2Z8OJV1 (Plumbing tubes in many directions) -[2]: https://jenkins.io/ -[3]: https://opensource.com/article/19/9/intro-building-cicd-pipelines-jenkins -[4]: https://opensource.com/article/19/4/devops-pipeline-acceptance-testing -[5]: https://opensource.com/article/19/7/security-scanning-your-devops-pipeline -[6]: https://opensource.com/article/19/3/screwdriver-cicd -[7]: https://opensource.com/article/19/8/why-spinnaker-matters-cicd -[8]: https://opensource.com/article/19/7/cicd-pipeline-rule-them-all -[9]: https://opensource.com/article/19/3/small-scale-scrum-vs-large-scale-scrum -[10]: https://opensource.com/article/19/7/organizational-impact-continuous-deployment -[11]: https://opensource.com/article/19/7/dashboards-devops-teams -[12]: https://opensource.com/article/19/5/dont-test-production From 0ebf287464937336c5033cd5afc66a0c35518a22 Mon Sep 17 00:00:00 2001 From: Morisun029 <54652937+Morisun029@users.noreply.github.com> Date: Tue, 11 Feb 2020 15:24:34 +0800 Subject: [PATCH 10/18] delete file --- ...00206 3 ways to use PostgreSQL commands.md | 228 ------------------ 1 file changed, 228 deletions(-) delete mode 100644 translated/tech/20200206 3 ways to use PostgreSQL commands.md diff --git a/translated/tech/20200206 3 ways to use PostgreSQL commands.md b/translated/tech/20200206 3 ways to use PostgreSQL commands.md deleted file mode 100644 index 9f5890f370..0000000000 --- a/translated/tech/20200206 3 ways to use PostgreSQL commands.md +++ /dev/null @@ -1,228 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (Morisun029) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (3 ways to use PostgreSQL commands) -[#]: via: (https://opensource.com/article/20/2/postgresql-commands) -[#]: author: (Greg Pittman https://opensource.com/users/greg-p) - -3种使用 PostgreSQL 命令的方式 -====== -无论你需要的东西简单(如一个购物清单)亦或复杂(如色卡生成器) - PostgreSQL 命令都能使它变得容易起来。 - -![Team checklist and to dos][1] - -在 _[PostgreSQL 入门][2]_ 一文中, 我解释了如何安装,设置和开始使用开源数据库软件。然而,使用 [PostgreSQL][3] 中的命令可以做更多事情。 - -例如,我使用 Postgres 来跟踪我杂货店的购物清单。我杂货店里的大多数购物是在家里进行的,其中每周进行一次大批量的采购。我去几个不同的地方购买清单上的东西,因为每家商店都提供特定的选择或质量,亦或更好的价格。最初,我制作了一个HTML表单页面来管理我的购物清单,但这样无法保存我的输入内容。因此,在想到要购买的物品时我必须要马上列出清单,因为到采购时我常常会忘记一些我需要或想要的东西。 - -相反,使用 PostgreSQL,当我想到需要的物品时,我可以随时输入,并在购物前打印出来。你也可以这样做。 - - -### 创建一个简单的购物清单 - - -首先,数据库中输入**psql ** 命令,然后用下面的命令创建一个表: -``` -`Create table groc (item varchar(20), comment varchar(10));` -``` - -输入如下命令在清单中加入商品: - -``` -insert into groc values ('milk', 'K'); -insert into groc values ('bananas', 'KW'); -``` - -括号中有两个信息(逗号隔开):前面是你需要买的东西,后面字母代表你要购买的地点以及哪些东西是你每周通常都要买的(W)。 - -因为 **psql** 有历史记录,你可以按向上键在括号内编辑信息,而无需输入商品的整行信息。 - -在输入一小部分商品后,输入下面命令来检查前面的输入内容。 - -``` -Select * from groc order by comment; - - item | comment -\----------------+--------- - ground coffee | H - butter | K - chips | K - steak | K - milk | K - bananas | KW - raisin bran | KW - raclette | L - goat cheese | L - onion | P - oranges | P - potatoes | P - spinach | PW - broccoli | PW - asparagus | PW - cucumber | PW - sugarsnap peas | PW - salmon | S -(18 rows) -``` - -此命令按_comment_ 列对结果进行排序,以便按购买地点对商品进行分组,从而是你的购物更加方便。 - -使用W来指明你每周要买的东西,当你要清除表单为下周的列表做准备时,你可以将每周的商品保留在购物清单上。输入: - -``` -`delete from groc where comment not like '%W';` -``` - -注意,在 PostgreSQL 中 **%** 表示通配符(而非星号)。所以,要保存输入内容,需要输入: - -``` -`delete from groc where item like 'goat%';` -``` - -不能使用**item = 'goat%'**,这样没用。 - - -在购物时,用以下命令输出清单并打印出来发送到你的手机: - -``` -\o groclist.txt -select * from groc order by comment; -\o -``` - -最后一个命令**\o*,重置输出到命令行。否则,所有的输出会继续输出到你创建的杂货店购物文件中。 - -### 分析复杂的表 - -This item-by-item entry may be okay for short tables, but what about really big ones? A couple of years ago, I was helping the team at [FreieFarbe.de][4] to create a swatchbook of the free colors (freieFarbe means "free colors" in German) from its HLC color palette, where virtually any imaginable print color can be specified by its hue, luminosity (brightness), and chroma (saturation). The result was the [HLC Color Atlas][5], and here's how we did it. - -逐个输入对于数据量小的表来说没有问题,但是对于数据量大的表呢?几年前,我帮团队从 HLC 调色板中创建一个自由色的色样册。事实上,任何能想象到的打印色都可按色调、亮度、浓度(饱和度)来规定。最终结果是[HLC Color Atlas][5],下面是我们如何实现的。 - -该团队向我发送了具有颜色规范的文件,因此我可以编写可与 Scribus 配合使用的 Python 脚本,以轻松生成色样册。一个例子像这样开始: - - -``` -HLC, C, M, Y, K -H010_L15_C010, 0.5, 49.1, 0.1, 84.5 -H010_L15_C020, 0.0, 79.7, 15.1, 78.9 -H010_L25_C010, 6.1, 38.3, 0.0, 72.5 -H010_L25_C020, 0.0, 61.8, 10.6, 67.9 -H010_L25_C030, 0.0, 79.5, 18.5, 62.7 -H010_L25_C040, 0.4, 94.2, 17.3, 56.5 -H010_L25_C050, 0.0, 100.0, 15.1, 50.6 -H010_L35_C010, 6.1, 32.1, 0.0, 61.8 -H010_L35_C020, 0.0, 51.7, 8.4, 57.5 -H010_L35_C030, 0.0, 68.5, 17.1, 52.5 -H010_L35_C040, 0.0, 81.2, 22.0, 46.2 -H010_L35_C050, 0.0, 91.9, 20.4, 39.3 -H010_L35_C060, 0.1, 100.0, 17.3, 31.5 -H010_L45_C010, 4.3, 27.4, 0.1, 51.3 -``` - -这与原文件相比,稍有修改,将数据用制表符分隔。我将其转换成 CSV 格式(逗号分割值),我更喜欢其与 Python 一起使用(CSV 文也很有用因为它可轻松导入到电子表格程序中)。 - -在每一行中,第一项是颜色名称,其后是其 C,M,Y 和 K 颜色值。 该文件包含1,793种颜色,我想要一种分析信息的方法,以了解这些值的范围。 这就是 PostgreSQL 发挥作用的地方。 我不想手动输入所有数据-我认为输入过程中我不可能不出错。 幸运的是,PostgreSQL 为此提供了一个命令。 - -首先用以下命令创建数据库: - -``` -`Create table hlc_cmyk (color varchar(40), c decimal, m decimal, y decimal, k decimal);` -``` - -然后通过以下命令引入数据: - - -``` -`\copy hlc_cmyk from '/home/gregp/HLC_Atlas_CMYK_SampleData.csv' with (header, format CSV);` -``` - - -开头有反斜杠,是因为使用纯**copy** 命令仅限于 root 用户和 Postgres 的超级用户。 在括号中,**header** 表示第一行包含标题,应忽略,**CSV** 表示文件格式为 CSV。 请注意,在此方法中,颜色名称周围不需要括号。 - -如果操作成功,会看到 **COPY NNNN**,其中 N 表示插入到表中的行号。 - -最后,可以用下列命令查询: - -``` -select * from hlc_cmyk; - - color | c | m | y | k -\---------------+-------+-------+-------+------ - H010_L15_C010 | 0.5 | 49.1 | 0.1 | 84.5 - H010_L15_C020 | 0.0 | 79.7 | 15.1 | 78.9 - H010_L25_C010 | 6.1 | 38.3 | 0.0 | 72.5 - H010_L25_C020 | 0.0 | 61.8 | 10.6 | 67.9 - H010_L25_C030 | 0.0 | 79.5 | 18.5 | 62.7 - H010_L25_C040 | 0.4 | 94.2 | 17.3 | 56.5 - H010_L25_C050 | 0.0 | 100.0 | 15.1 | 50.6 - H010_L35_C010 | 6.1 | 32.1 | 0.0 | 61.8 - H010_L35_C020 | 0.0 | 51.7 | 8.4 | 57.5 - H010_L35_C030 | 0.0 | 68.5 | 17.1 | 52.5 -``` - - -所有1,793行数据都是这样的。 回想起来,我不能说此查询对于HLC和Scribus任务是绝对必要的,但是它减轻了我对该项目的一些担忧。 - -为了生成 HLC 色谱,我使用 Scribus 为色板页面中的13,000多种颜色自动创建了颜色图表。 - -我可以使用 **copy** 命令输出数据: - -``` -`\copy hlc_cmyk to '/home/gregp/hlc_cmyk_backup.csv' with (header, format CSV);` -``` - - -我还可以使用 ** where ** 子句根据某些值来限制输出。 - -例如,以下命令将仅发送以 H10 开头的色调值。 - - -``` -`\copy hlc_cmyk to '/home/gregp/hlc_cmyk_backup.csv' with (header, format CSV) where color like 'H10%';` -``` - -### 备份或传输数据库或表 - -我在此要提到的最后一个命令是**pg_dump**,它用于备份 PostgreSQL 数据库,并在 **psql** 控制台之外运行。 例如: - -``` -pg_dump gregp -t hlc_cmyk > hlc.out -pg_dump gregp > dball.out -``` - -第一行是导出 **hlc_cmyk** 表及其结构。第二行将转储 **gregp** 数据库中的所有表。 这对于备份或传输数据库或表非常有用。 - - -要将数据库或表转到另一台电脑( 查看"[ PostgreSQL 入门][2]" 那篇文章获取详细信息),首先在要转入的电脑上创建一个数据库,然后执行相反的操作。 - -``` -`psql -d gregp -f dball.out` -``` - -一步创建所有表并输入数据。 - -### 总结 - -在本文中,我们了解了如何使用 **WHERE** 参数限制操作,以及如何使用 PostgreSQL 通配符 **%**。 我们还了解了如何将大批量数据加载到表中,然后将部分或全部表数据输出到文件,甚至是将整个数据库及其所有单个表输出。 - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/2/postgresql-commands - -作者:[Greg Pittman][a] -选题:[lujun9972][b] -译者:[Morisun029](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/greg-p -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/todo_checklist_team_metrics_report.png?itok=oB5uQbzf (Team checklist and to dos) -[2]: https://opensource.com/article/19/11/getting-started-postgresql -[3]: https://www.postgresql.org/ -[4]: http://freiefarbe.de -[5]: https://www.freiefarbe.de/en/thema-farbe/hlc-colour-atlas/ From a51d14f2583c7f53044dcbeb4a49742edaa5cb45 Mon Sep 17 00:00:00 2001 From: Morisun029 <54652937+Morisun029@users.noreply.github.com> Date: Wed, 12 Feb 2020 21:55:30 +0800 Subject: [PATCH 11/18] Revert "fix issue" This reverts commit 675b2df362764774c4e7bae104a9fbd1bc542ebf. --- ...ra to your Android phone with GSConnect.md | 118 ++++++++++++++++++ ...-CD resources to set you up for success.md | 64 ++++++++++ 2 files changed, 182 insertions(+) create mode 100644 sources/tech/20200207 Connect Fedora to your Android phone with GSConnect.md create mode 100644 translated/tech/20191227 Top CI-CD resources to set you up for success.md diff --git a/sources/tech/20200207 Connect Fedora to your Android phone with GSConnect.md b/sources/tech/20200207 Connect Fedora to your Android phone with GSConnect.md new file mode 100644 index 0000000000..528289f3b0 --- /dev/null +++ b/sources/tech/20200207 Connect Fedora to your Android phone with GSConnect.md @@ -0,0 +1,118 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Connect Fedora to your Android phone with GSConnect) +[#]: via: (https://fedoramagazine.org/connect-fedora-to-your-android-phone-with-gsconnect/) +[#]: author: (Lokesh Krishna https://fedoramagazine.org/author/lowkeyskywalker/) + +Connect Fedora to your Android phone with GSConnect +====== + +![][1] + +Both Apple and Microsoft offer varying levels of integration of their desktop offerings with your mobile devices. Fedora offers a similar if not greater degree of integration with **GSConnect**. It lets you pair your Android phone with your Fedora desktop and opens up a lot of possibilities. Keep reading to discover more about what it is and how it works. + +### What is GSConnect? + +GSConnect is an implementation of the KDE Connect project tailored for the GNOME desktop. KDE Connect makes it possible for your devices to communicate with each other. However, installing it on Fedora’s default GNOME desktop requires pulling in a large number of KDE dependencies. + +GSConnect is a complete implementation of KDE Connect, but in the form of a GNOME shell extension. Once installed, GSConnect lets you do the following and a lot more: + + * Receive phone notifications on your desktop and reply to messages + * Use your phone as a remote control for your desktop + * Share files and links between devices + * Check your phone’s battery level from the desktop + * Ring your phone to help find it + + + +### Setting up the GSConnect extension + +Setting up GSConnect requires installing two components: the GSConnect extension on your desktop and the KDE Connect app on your Android device. + +First, install the GSConnect extension from the GNOME Shell extensions website: [GSConnect][2]. (Fedora Magazine has a handy article on [How to install a GNOME Shell extension][3] to help you with this step.) + +The KDE Connect app is available on Google’s [Play Store][4]. It’s also available on the FOSS Android apps repository, [F-Droid][5]. + +Once you have installed both these components, you can pair your two devices. Installing the extension makes it show up in your system menu as _Mobile Devices_. Clicking on it displays a drop down menu, from which you can access _Mobile Settings_. + +![][6] + +Here’s where you can view your paired devices and manage the features offered by GSConnect. Once you are on this screen, launch the app on your Android device. + +You can initiate pairing from either device, but here you’ll be connecting to your desktop from the Android device. Simply hit refresh on the app, and as long as both devices are on the same wireless network, your desktop shows up in your Android device. You can now send a pair request to the desktop. Accept the pair request on your desktop to complete the pairing. + +![][7] + +### Using GSConnect + +Once paired, you’ll need to grant permissions on your Android device to make use of the many features available on GSConnect. Click on the paired device in the list of devices to see all available functions and enable or disable them according to your preferences. + +![][8] + +Remember that you’ll also need to grant corresponding permissions in the Android app to be able to use these functions. Depending upon the features you’ve enabled and the permissions you’ve granted, you can now access your mobile contacts on your desktop, get notified of messages and reply to them, and even sync the desktop and Android device clipboards. + +### Integration with Files and your web browsers + +GSConnect allows you to directly send files to your Android device from your desktop file explorer’s context menu. + +On Fedora’s default GNOME desktop, you will need to install the _nautilus-python_ package in order to make your paired devices show up in the context menu. Installing this is as straightforward as running the following command from your preferred terminal: + +``` +$ sudo dnf install nautilus-python +``` + +Once done, the _Send to Mobile Device_ entry appears in the context menu of the Files app. + +![][9] + +Similarly, install the corresponding WebExtension for your browser, be it [Firefox][10] or [Chrome][11], to send links to your Android device. You have the option to send the link to launch directly in your browser or to deliver it as SMS. + +### Running Commands + +GSConnect lets you define commands which you can then run on your desktop, from your remote device. This allows you to do things such as take a screenshot of your desktop, or lock and unlock your desktop from your Android device, remotely. + +![][12] + +To make use of this feature, you can use standard shell commands and the CLI exposed by GSConnect. Documentation on this is provided in the project’s GitHub repository: _CLI Scripting_. + +The [KDE UserBase Wiki][13] has a list of example commands. These examples cover controlling the brightness and volume on your desktop, locking the mouse and keyboard, and even changing the desktop theme. Some of the commands are specific for KDE Plasma, and modifications are necessary to make it run on the GNOME desktop. + +### Explore and have fun + +GSConnect makes it possible to enjoy a great degree of convenience and comfort. Dive into the preferences to see all that you can do and get creative with the commands function. Feel free to share all the possibilities this utility unlocked in your workflow in the comments below. + +* * * + +_Photo by [Pathum Danthanarayana][14] on [Unsplash][15]._ + +-------------------------------------------------------------------------------- + +via: https://fedoramagazine.org/connect-fedora-to-your-android-phone-with-gsconnect/ + +作者:[Lokesh Krishna][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/lowkeyskywalker/ +[b]: https://github.com/lujun9972 +[1]: https://fedoramagazine.org/wp-content/uploads/2019/12/gsconnect-816x345.jpg +[2]: https://extensions.gnome.org/extension/1319/gsconnect/ +[3]: https://fedoramagazine.org/install-gnome-shell-extension/ +[4]: https://play.google.com/store/apps/details?id=org.kde.kdeconnect_tp +[5]: https://f-droid.org/en/packages/org.kde.kdeconnect_tp/ +[6]: https://fedoramagazine.org/wp-content/uploads/2020/01/within-the-menu-1024x576.png +[7]: https://fedoramagazine.org/wp-content/uploads/2020/01/pair-request-1024x576.png +[8]: https://fedoramagazine.org/wp-content/uploads/2020/01/permissions-1024x576.png +[9]: https://fedoramagazine.org/wp-content/uploads/2020/01/send-to-mobile-2-1024x576.png +[10]: https://addons.mozilla.org/en-US/firefox/addon/gsconnect/ +[11]: https://chrome.google.com/webstore/detail/gsconnect/jfnifeihccihocjbfcfhicmmgpjicaec +[12]: https://fedoramagazine.org/wp-content/uploads/2020/01/commands-1024x576.png +[13]: https://userbase.kde.org/KDE_Connect/Tutorials/Useful_commands +[14]: https://unsplash.com/@pathum_danthanarayana?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText +[15]: https://unsplash.com/s/photos/android?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText diff --git a/translated/tech/20191227 Top CI-CD resources to set you up for success.md b/translated/tech/20191227 Top CI-CD resources to set you up for success.md new file mode 100644 index 0000000000..102e53d153 --- /dev/null +++ b/translated/tech/20191227 Top CI-CD resources to set you up for success.md @@ -0,0 +1,64 @@ +[#]: collector: (lujun9972) +[#]: translator: (Morisun029) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Top CI/CD resources to set you up for success) +[#]: via: (https://opensource.com/article/19/12/cicd-resources) +[#]: author: (Jessica Cherry https://opensource.com/users/jrepka) + +顶级 CI / CD 资源,助您成功 +====== +随着企业期望实现无缝,灵活和可扩展的部署,持续集成和持续部署成为2019年的关键主题。 +![Plumbing tubes in many directions][1] + +对于 CI / CD 和 DevOps 来说,2019年是非常棒的一年。 Opensource 公司的作者分享了他们专注于无缝,灵活和可扩展部署时是如何朝着敏捷方向发展的。以下是我们2019年发布的 CI / CD 文章中的一些重要主题。 + +### 学习和提高您的 CI / CD 技能 + + +我们最喜欢的一些文章集中在 CI / CD 的实操经验上,并涵盖了许多方面。通常以[Jenkins][2]管道开始,布莱恩特的文章[用 Jenkins 构建 CI/CD 管道][4]将为您提供足够的经验,以开始构建您的第一个管道。丹尼尔在 [用DevOps 管道进行自动验收测试][4]一文中,提供了有关验收测试的重要信息,包括可用于独立测试的各种 CI / CD 应用程序。我写的[安全扫描DevOps 管道][5]非常简短,其中的关键点是关于如何使用 Jenkins 平台在管道中设置安全性的教程。 + +### 交付工作流程 + + +威利•彼得•绍布赞扬为所有产品创建统一流水线的想法,以使[每种产品在一个CI / CD 流水线中持续建立起来,以管控所有产品][8]。这些文章将使您更好地了解团队成员加入工作流流程后会发生什么。 + +### CI / CD 如何影响企业 + + +2019年也是认识到 CI / CD 的业务影响以及它如何影响日常运营的一年。 + + + +Agnieszka Gancarczyk 分享了Red Hat[小型Scrum vs.大型Scrum][9] 的调查结果, 包括受访者对srums, + +敏捷运动及其对团队的影响的不同看法。威尔安•凯丽 的[持续部署如何影响企业][10], 包括开放式沟通的重要性,丹尼尔也强调了[DevOps 团队在3 种类型的指表板][11]中指标和可观测性的重要性。最后是安•玛丽•弗雷德的精彩文章: [不要在生产环境中测试?在生产环境中测试!][12] 详细说明了验收测试前在生产环境中测试的重要性。 + +感谢许多贡献者在2019年与 Opensource 的读者分享他们的见解,我期望在2020年里从他们那里了解更多有关 CI / CD 发展的信息。 + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/19/12/cicd-resources + +作者:[Jessica Cherry][a] +选题:[lujun9972][b] +译者:[Morisun029](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/jrepka +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/plumbing_pipes_tutorial_how_behind_scenes.png?itok=F2Z8OJV1 (Plumbing tubes in many directions) +[2]: https://jenkins.io/ +[3]: https://opensource.com/article/19/9/intro-building-cicd-pipelines-jenkins +[4]: https://opensource.com/article/19/4/devops-pipeline-acceptance-testing +[5]: https://opensource.com/article/19/7/security-scanning-your-devops-pipeline +[6]: https://opensource.com/article/19/3/screwdriver-cicd +[7]: https://opensource.com/article/19/8/why-spinnaker-matters-cicd +[8]: https://opensource.com/article/19/7/cicd-pipeline-rule-them-all +[9]: https://opensource.com/article/19/3/small-scale-scrum-vs-large-scale-scrum +[10]: https://opensource.com/article/19/7/organizational-impact-continuous-deployment +[11]: https://opensource.com/article/19/7/dashboards-devops-teams +[12]: https://opensource.com/article/19/5/dont-test-production From 0f4bbc87a8d8a5c5bf03de758dd7eb8793ae8d44 Mon Sep 17 00:00:00 2001 From: Morisun029 <54652937+Morisun029@users.noreply.github.com> Date: Wed, 12 Feb 2020 22:41:10 +0800 Subject: [PATCH 12/18] translated --- ...00206 3 ways to use PostgreSQL commands.md | 228 ++++++++++++++++++ 1 file changed, 228 insertions(+) create mode 100644 translated/tech/20200206 3 ways to use PostgreSQL commands.md diff --git a/translated/tech/20200206 3 ways to use PostgreSQL commands.md b/translated/tech/20200206 3 ways to use PostgreSQL commands.md new file mode 100644 index 0000000000..9f5890f370 --- /dev/null +++ b/translated/tech/20200206 3 ways to use PostgreSQL commands.md @@ -0,0 +1,228 @@ +[#]: collector: (lujun9972) +[#]: translator: (Morisun029) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (3 ways to use PostgreSQL commands) +[#]: via: (https://opensource.com/article/20/2/postgresql-commands) +[#]: author: (Greg Pittman https://opensource.com/users/greg-p) + +3种使用 PostgreSQL 命令的方式 +====== +无论你需要的东西简单(如一个购物清单)亦或复杂(如色卡生成器) + PostgreSQL 命令都能使它变得容易起来。 + +![Team checklist and to dos][1] + +在 _[PostgreSQL 入门][2]_ 一文中, 我解释了如何安装,设置和开始使用开源数据库软件。然而,使用 [PostgreSQL][3] 中的命令可以做更多事情。 + +例如,我使用 Postgres 来跟踪我杂货店的购物清单。我杂货店里的大多数购物是在家里进行的,其中每周进行一次大批量的采购。我去几个不同的地方购买清单上的东西,因为每家商店都提供特定的选择或质量,亦或更好的价格。最初,我制作了一个HTML表单页面来管理我的购物清单,但这样无法保存我的输入内容。因此,在想到要购买的物品时我必须要马上列出清单,因为到采购时我常常会忘记一些我需要或想要的东西。 + +相反,使用 PostgreSQL,当我想到需要的物品时,我可以随时输入,并在购物前打印出来。你也可以这样做。 + + +### 创建一个简单的购物清单 + + +首先,数据库中输入**psql ** 命令,然后用下面的命令创建一个表: +``` +`Create table groc (item varchar(20), comment varchar(10));` +``` + +输入如下命令在清单中加入商品: + +``` +insert into groc values ('milk', 'K'); +insert into groc values ('bananas', 'KW'); +``` + +括号中有两个信息(逗号隔开):前面是你需要买的东西,后面字母代表你要购买的地点以及哪些东西是你每周通常都要买的(W)。 + +因为 **psql** 有历史记录,你可以按向上键在括号内编辑信息,而无需输入商品的整行信息。 + +在输入一小部分商品后,输入下面命令来检查前面的输入内容。 + +``` +Select * from groc order by comment; + + item | comment +\----------------+--------- + ground coffee | H + butter | K + chips | K + steak | K + milk | K + bananas | KW + raisin bran | KW + raclette | L + goat cheese | L + onion | P + oranges | P + potatoes | P + spinach | PW + broccoli | PW + asparagus | PW + cucumber | PW + sugarsnap peas | PW + salmon | S +(18 rows) +``` + +此命令按_comment_ 列对结果进行排序,以便按购买地点对商品进行分组,从而是你的购物更加方便。 + +使用W来指明你每周要买的东西,当你要清除表单为下周的列表做准备时,你可以将每周的商品保留在购物清单上。输入: + +``` +`delete from groc where comment not like '%W';` +``` + +注意,在 PostgreSQL 中 **%** 表示通配符(而非星号)。所以,要保存输入内容,需要输入: + +``` +`delete from groc where item like 'goat%';` +``` + +不能使用**item = 'goat%'**,这样没用。 + + +在购物时,用以下命令输出清单并打印出来发送到你的手机: + +``` +\o groclist.txt +select * from groc order by comment; +\o +``` + +最后一个命令**\o*,重置输出到命令行。否则,所有的输出会继续输出到你创建的杂货店购物文件中。 + +### 分析复杂的表 + +This item-by-item entry may be okay for short tables, but what about really big ones? A couple of years ago, I was helping the team at [FreieFarbe.de][4] to create a swatchbook of the free colors (freieFarbe means "free colors" in German) from its HLC color palette, where virtually any imaginable print color can be specified by its hue, luminosity (brightness), and chroma (saturation). The result was the [HLC Color Atlas][5], and here's how we did it. + +逐个输入对于数据量小的表来说没有问题,但是对于数据量大的表呢?几年前,我帮团队从 HLC 调色板中创建一个自由色的色样册。事实上,任何能想象到的打印色都可按色调、亮度、浓度(饱和度)来规定。最终结果是[HLC Color Atlas][5],下面是我们如何实现的。 + +该团队向我发送了具有颜色规范的文件,因此我可以编写可与 Scribus 配合使用的 Python 脚本,以轻松生成色样册。一个例子像这样开始: + + +``` +HLC, C, M, Y, K +H010_L15_C010, 0.5, 49.1, 0.1, 84.5 +H010_L15_C020, 0.0, 79.7, 15.1, 78.9 +H010_L25_C010, 6.1, 38.3, 0.0, 72.5 +H010_L25_C020, 0.0, 61.8, 10.6, 67.9 +H010_L25_C030, 0.0, 79.5, 18.5, 62.7 +H010_L25_C040, 0.4, 94.2, 17.3, 56.5 +H010_L25_C050, 0.0, 100.0, 15.1, 50.6 +H010_L35_C010, 6.1, 32.1, 0.0, 61.8 +H010_L35_C020, 0.0, 51.7, 8.4, 57.5 +H010_L35_C030, 0.0, 68.5, 17.1, 52.5 +H010_L35_C040, 0.0, 81.2, 22.0, 46.2 +H010_L35_C050, 0.0, 91.9, 20.4, 39.3 +H010_L35_C060, 0.1, 100.0, 17.3, 31.5 +H010_L45_C010, 4.3, 27.4, 0.1, 51.3 +``` + +这与原文件相比,稍有修改,将数据用制表符分隔。我将其转换成 CSV 格式(逗号分割值),我更喜欢其与 Python 一起使用(CSV 文也很有用因为它可轻松导入到电子表格程序中)。 + +在每一行中,第一项是颜色名称,其后是其 C,M,Y 和 K 颜色值。 该文件包含1,793种颜色,我想要一种分析信息的方法,以了解这些值的范围。 这就是 PostgreSQL 发挥作用的地方。 我不想手动输入所有数据-我认为输入过程中我不可能不出错。 幸运的是,PostgreSQL 为此提供了一个命令。 + +首先用以下命令创建数据库: + +``` +`Create table hlc_cmyk (color varchar(40), c decimal, m decimal, y decimal, k decimal);` +``` + +然后通过以下命令引入数据: + + +``` +`\copy hlc_cmyk from '/home/gregp/HLC_Atlas_CMYK_SampleData.csv' with (header, format CSV);` +``` + + +开头有反斜杠,是因为使用纯**copy** 命令仅限于 root 用户和 Postgres 的超级用户。 在括号中,**header** 表示第一行包含标题,应忽略,**CSV** 表示文件格式为 CSV。 请注意,在此方法中,颜色名称周围不需要括号。 + +如果操作成功,会看到 **COPY NNNN**,其中 N 表示插入到表中的行号。 + +最后,可以用下列命令查询: + +``` +select * from hlc_cmyk; + + color | c | m | y | k +\---------------+-------+-------+-------+------ + H010_L15_C010 | 0.5 | 49.1 | 0.1 | 84.5 + H010_L15_C020 | 0.0 | 79.7 | 15.1 | 78.9 + H010_L25_C010 | 6.1 | 38.3 | 0.0 | 72.5 + H010_L25_C020 | 0.0 | 61.8 | 10.6 | 67.9 + H010_L25_C030 | 0.0 | 79.5 | 18.5 | 62.7 + H010_L25_C040 | 0.4 | 94.2 | 17.3 | 56.5 + H010_L25_C050 | 0.0 | 100.0 | 15.1 | 50.6 + H010_L35_C010 | 6.1 | 32.1 | 0.0 | 61.8 + H010_L35_C020 | 0.0 | 51.7 | 8.4 | 57.5 + H010_L35_C030 | 0.0 | 68.5 | 17.1 | 52.5 +``` + + +所有1,793行数据都是这样的。 回想起来,我不能说此查询对于HLC和Scribus任务是绝对必要的,但是它减轻了我对该项目的一些担忧。 + +为了生成 HLC 色谱,我使用 Scribus 为色板页面中的13,000多种颜色自动创建了颜色图表。 + +我可以使用 **copy** 命令输出数据: + +``` +`\copy hlc_cmyk to '/home/gregp/hlc_cmyk_backup.csv' with (header, format CSV);` +``` + + +我还可以使用 ** where ** 子句根据某些值来限制输出。 + +例如,以下命令将仅发送以 H10 开头的色调值。 + + +``` +`\copy hlc_cmyk to '/home/gregp/hlc_cmyk_backup.csv' with (header, format CSV) where color like 'H10%';` +``` + +### 备份或传输数据库或表 + +我在此要提到的最后一个命令是**pg_dump**,它用于备份 PostgreSQL 数据库,并在 **psql** 控制台之外运行。 例如: + +``` +pg_dump gregp -t hlc_cmyk > hlc.out +pg_dump gregp > dball.out +``` + +第一行是导出 **hlc_cmyk** 表及其结构。第二行将转储 **gregp** 数据库中的所有表。 这对于备份或传输数据库或表非常有用。 + + +要将数据库或表转到另一台电脑( 查看"[ PostgreSQL 入门][2]" 那篇文章获取详细信息),首先在要转入的电脑上创建一个数据库,然后执行相反的操作。 + +``` +`psql -d gregp -f dball.out` +``` + +一步创建所有表并输入数据。 + +### 总结 + +在本文中,我们了解了如何使用 **WHERE** 参数限制操作,以及如何使用 PostgreSQL 通配符 **%**。 我们还了解了如何将大批量数据加载到表中,然后将部分或全部表数据输出到文件,甚至是将整个数据库及其所有单个表输出。 + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/20/2/postgresql-commands + +作者:[Greg Pittman][a] +选题:[lujun9972][b] +译者:[Morisun029](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/greg-p +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/todo_checklist_team_metrics_report.png?itok=oB5uQbzf (Team checklist and to dos) +[2]: https://opensource.com/article/19/11/getting-started-postgresql +[3]: https://www.postgresql.org/ +[4]: http://freiefarbe.de +[5]: https://www.freiefarbe.de/en/thema-farbe/hlc-colour-atlas/ From 04893309f20faf46cd75addfe2d8f573d098415a Mon Sep 17 00:00:00 2001 From: Morisun029 <54652937+Morisun029@users.noreply.github.com> Date: Wed, 12 Feb 2020 23:13:56 +0800 Subject: [PATCH 13/18] delete useless --- ...190407 Manage multimedia files with Git.md | 247 ------------------ ...ra to your Android phone with GSConnect.md | 118 --------- ...-CD resources to set you up for success.md | 64 ----- ...in one place with this open source tool.md | 71 ----- 4 files changed, 500 deletions(-) delete mode 100644 sources/tech/20190407 Manage multimedia files with Git.md delete mode 100644 sources/tech/20200207 Connect Fedora to your Android phone with GSConnect.md delete mode 100644 translated/tech/20191227 Top CI-CD resources to set you up for success.md delete mode 100644 translated/tech/20200122 Get your RSS feeds and podcasts in one place with this open source tool.md diff --git a/sources/tech/20190407 Manage multimedia files with Git.md b/sources/tech/20190407 Manage multimedia files with Git.md deleted file mode 100644 index 340c356aa9..0000000000 --- a/sources/tech/20190407 Manage multimedia files with Git.md +++ /dev/null @@ -1,247 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Manage multimedia files with Git) -[#]: via: (https://opensource.com/article/19/4/manage-multimedia-files-git) -[#]: author: (Seth Kenlon https://opensource.com/users/seth) - -Manage multimedia files with Git -====== -Learn how to use Git to track large multimedia files in your projects in -the final article in our series on little-known uses of Git. -![video editing dashboard][1] - -Git is very specifically designed for source code version control, so it's rarely embraced by projects and industries that don't primarily work in plaintext. However, the advantages of an asynchronous workflow are appealing, especially in the ever-growing number of industries that combine serious computing with seriously artistic ventures, including web design, visual effects, video games, publishing, currency design (yes, that's a real industry), education… the list goes on and on. - -In this series leading up to Git's 14th anniversary, we've shared six little-known ways to use Git. In this final article, we'll look at software that brings the advantages of Git to managing multimedia files. - -### The problem with managing multimedia files with Git - -It seems to be common knowledge that Git doesn't work well with non-text files, but it never hurts to challenge assumptions. Here's an example of copying a photo file using 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 . -``` - -Nothing unusual so far; adding a 1.8MB photo to a directory results in a directory 1.8MB in size. So, let's try removing the file: - - -``` -$ git rm dandelion.tif -$ git commit -m 'deleted a photo' -$ du -hs -828K . -``` - -You can see the problem here: Removing a large file after it's been committed increases a repository's size roughly eight times its original, barren state (from 108K to 828K). You can perform tests to get a better average, but this simple demonstration is consistent with my experience. The cost of committing files that aren't text-based is minimal at first, but the longer a project stays active, the more changes people make to static content, and the more those fractions start to add up. When a Git repository becomes very large, the major cost is usually speed. The time to perform pulls and pushes goes from being how long it takes to take a sip of coffee to how long it takes to wonder if your computer got kicked off the network. - -The reason static content causes Git to grow in size is that formats based on text allow Git to pull out just the parts that have changed. Raster images and music files make as much sense to Git as they would to you if you looked at the binary data contained in a .png or .wav file. So Git just takes all the data and makes a new copy of it, even if only one pixel changes from one photo to the next. - -### Git-portal - -In practice, many multimedia projects don't need or want to track the media's history. The media part of a project tends to have a different lifecycle than the text or code part of a project. Media assets generally progress in one direction: a picture starts as a pencil sketch, proceeds toward its destination as a digital painting, and, even if the text is rolled back to an earlier version, the art continues its forward progress. It's rare for media to be bound to a specific version of a project. The exceptions are usually graphics that reflect datasets—usually tables or graphs or charts—that can be done in text-based formats such as SVG. - -So, on many projects that involve both media and text (whether it's narrative prose or code), Git is an acceptable solution to file management, as long as there's a playground outside the version control cycle for artists to play in. - -![Graphic showing relationship between art assets and Git][2] - -A simple way to enable that is [Git-portal][3], a Bash script armed with Git hooks that moves your asset files to a directory outside Git's purview and replaces them with symlinks. Git commits the symlinks (sometimes called aliases or shortcuts), which are trivially small, so all you commit are your text files and whatever symlinks represent your media assets. Because the replacement files are symlinks, your project continues to function as expected because your local machine follows the symlinks to their "real" counterparts. Git-portal maintains a project's directory structure when it swaps out a file with a symlink, so it's easy to reverse the process, should you decide that Git-portal isn't right for your project or you need to build a version of your project without symlinks (for distribution, for instance). - -Git-portal also allows remote synchronization of assets over rsync, so you can set up a remote storage location as a centralized source of authority. - -Git-portal is ideal for multimedia projects, including video game and tabletop game design, virtual reality projects with big 3D model renders and textures, [books][4] with graphics and .odt exports, collaborative [blog websites][5], music projects, and much more. It's not uncommon for an artist to perform versioning in their application—in the form of layers (in the graphics world) and tracks (in the music world)—so Git adds nothing to multimedia project files themselves. The power of Git is leveraged for other parts of artistic projects (prose and narrative, project management, subtitle files, credits, marketing copy, documentation, and so on), and the power of structured remote backups is leveraged by the artists. - -#### Install Git-portal - -There are RPM packages for Git-portal located at , which you can download and install. - -Alternately, you can install Git-portal manually from its home on GitLab. It's just a Bash script and some Git hooks (which are also Bash scripts), but it requires a quick build process so that it knows where to install itself: - - -``` -$ git clone git-portal.clone -$ cd git-portal.clone -$ ./configure -$ make -$ sudo make install -``` - -#### Use Git-portal - -Git-portal is used alongside Git. This means, as with all large-file extensions to Git, there are some added steps to remember. But you only need Git-portal when dealing with your media assets, so it's pretty easy to remember unless you've acclimated yourself to treating large files the same as text files (which is rare for Git users). There's one setup step you must do to use Git-portal in a project: - - -``` -$ mkdir bigproject.git -$ cd !$ -$ git init -$ git-portal init -``` - -Git-portal's **init** function creates a **_portal** directory in your Git repository and adds it to your .gitignore file. - -Using Git-portal in a daily routine integrates smoothly with Git. A good example is a MIDI-based music project: the project files produced by the music workstation are text-based, but the MIDI files are binary data: - - -``` -$ 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 -``` - -If you look into the **_portal** directory, you'll find the original MIDI files. The files in their place are symlinks to **_portal** , which keeps the music workstation working as expected: - - -``` -$ 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* -``` - -As with Git, you can also add a directory of files: - - -``` -$ 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* -``` - -Removal works as expected, but when removing something in **_portal** , you should use **git-portal rm** instead of **git rm**. Using Git-portal ensures that the file is removed from **_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/ -``` - -If you forget to use Git-portal, then you have to remove the portal file manually: - - -``` -$ 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's only other function is to list all current symlinks and find any that may have become broken, which can sometimes happen if files move around in a project directory: - - -``` -$ 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 -``` - -If you're using Git-portal for a personal project and maintaining your own backups, this is technically all you need to know about Git-portal. If you want to add in collaborators or you want Git-portal to manage backups the way (more or less) Git does, you can a remote. - -#### Add Git-portal remotes - -Adding a remote location for Git-portal is done through Git's existing remote function. Git-portal implements Git hooks, scripts hidden in your repository's .git directory, to look at your remotes for any that begin with **_portal**. If it finds one, it attempts to **rsync** to the remote location and synchronize files. Git-portal performs this action anytime you do a Git push or a Git merge (or pull, which is really just a fetch and an automatic merge). - -If you've only cloned Git repositories, then you may never have added a remote yourself. It's a standard Git procedure: - - -``` -$ git remote add origin [git@gitdawg.com][6]:seth/bigproject.git -$ git remote -v -origin [git@gitdawg.com][6]:seth/bigproject.git (fetch) -origin [git@gitdawg.com][6]:seth/bigproject.git (push) -``` - -The name **origin** is a popular convention for your main Git repository, so it makes sense to use it for your Git data. Your Git-portal data, however, is stored separately, so you must create a second remote to tell Git-portal where to push to and pull from. Depending on your Git host, you may need a separate server because gigabytes of media assets are unlikely to be accepted by a Git host with limited space. Or maybe you're on a server that permits you to access only your Git repository and not external storage directories: - - -``` -$ git remote add _portal [seth@example.com][7]:/home/seth/git/bigproject_portal -$ git remote -v -origin [git@gitdawg.com][6]:seth/bigproject.git (fetch) -origin [git@gitdawg.com][6]:seth/bigproject.git (push) -_portal [seth@example.com][7]:/home/seth/git/bigproject_portal (fetch) -_portal [seth@example.com][7]:/home/seth/git/bigproject_portal (push) -``` - -You may not want to give all of your users individual accounts on your server, and you don't have to. To provide access to the server hosting a repository's large file assets, you can run a Git frontend like **[Gitolite][8]** , or you can use **rrsync** (i.e., restricted rsync). - -Now you can push your Git data to your remote Git repository and your Git-portal data to your remote 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 -``` - -If you have Git-portal installed and a **_portal** remote configured, your **_portal** directory will be synchronized, getting new content from the server and sending fresh content with every push. While you don't have to do a Git commit and push to sync with the server (a user could just use rsync directly), I find it useful to require commits for artistic changes. It integrates artists and their digital assets into the rest of the workflow, and it provides useful metadata about project progress and velocity. - -### Other options - -If Git-portal is too simple for you, there are other options for managing large files with Git. [Git Large File Storage][9] (LFS) is a fork of a defunct project called git-media and is maintained and supported by GitHub. It requires special commands (like **git lfs track** to protect large files from being tracked by Git) and requires the user to manage a .gitattributes file to update which files in the repository are tracked by LFS. It supports _only_ HTTP and HTTPS remotes for large files, so your LFS server must be configured so users can authenticate over HTTP rather than SSH or rsync. - -A more flexible option than LFS is [git-annex][10], which you can learn more about in my article about [managing binary blobs in Git][11] (ignore the parts about the deprecated git-media, as its former flexibility doesn't apply to its successor, Git LFS). Git-annex is a flexible and elegant solution with a detailed system for adding, removing, and moving large files within a repository. Because it's flexible and powerful, there are lots of new commands and rules to learn, so take a look at its [documentation][12]. - -If, however, your needs are simple and you like a solution that utilizes existing technology to do simple and obvious tasks, Git-portal might be the tool for the job. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/19/4/manage-multimedia-files-git - -作者:[Seth Kenlon (Red Hat, Community Moderator)][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/seth -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/video_editing_folder_music_wave_play.png?itok=-J9rs-My (video editing dashboard) -[2]: https://opensource.com/sites/default/files/uploads/git-velocity.jpg (Graphic showing relationship between art assets and Git) -[3]: http://gitlab.com/slackermedia/git-portal.git -[4]: https://www.apress.com/gp/book/9781484241691 -[5]: http://mixedsignals.ml -[6]: mailto:git@gitdawg.com -[7]: mailto:seth@example.com -[8]: https://opensource.com/article/19/4/file-sharing-git -[9]: https://git-lfs.github.com/ -[10]: https://git-annex.branchable.com/ -[11]: https://opensource.com/life/16/8/how-manage-binary-blobs-git-part-7 -[12]: https://git-annex.branchable.com/walkthrough/ diff --git a/sources/tech/20200207 Connect Fedora to your Android phone with GSConnect.md b/sources/tech/20200207 Connect Fedora to your Android phone with GSConnect.md deleted file mode 100644 index 528289f3b0..0000000000 --- a/sources/tech/20200207 Connect Fedora to your Android phone with GSConnect.md +++ /dev/null @@ -1,118 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Connect Fedora to your Android phone with GSConnect) -[#]: via: (https://fedoramagazine.org/connect-fedora-to-your-android-phone-with-gsconnect/) -[#]: author: (Lokesh Krishna https://fedoramagazine.org/author/lowkeyskywalker/) - -Connect Fedora to your Android phone with GSConnect -====== - -![][1] - -Both Apple and Microsoft offer varying levels of integration of their desktop offerings with your mobile devices. Fedora offers a similar if not greater degree of integration with **GSConnect**. It lets you pair your Android phone with your Fedora desktop and opens up a lot of possibilities. Keep reading to discover more about what it is and how it works. - -### What is GSConnect? - -GSConnect is an implementation of the KDE Connect project tailored for the GNOME desktop. KDE Connect makes it possible for your devices to communicate with each other. However, installing it on Fedora’s default GNOME desktop requires pulling in a large number of KDE dependencies. - -GSConnect is a complete implementation of KDE Connect, but in the form of a GNOME shell extension. Once installed, GSConnect lets you do the following and a lot more: - - * Receive phone notifications on your desktop and reply to messages - * Use your phone as a remote control for your desktop - * Share files and links between devices - * Check your phone’s battery level from the desktop - * Ring your phone to help find it - - - -### Setting up the GSConnect extension - -Setting up GSConnect requires installing two components: the GSConnect extension on your desktop and the KDE Connect app on your Android device. - -First, install the GSConnect extension from the GNOME Shell extensions website: [GSConnect][2]. (Fedora Magazine has a handy article on [How to install a GNOME Shell extension][3] to help you with this step.) - -The KDE Connect app is available on Google’s [Play Store][4]. It’s also available on the FOSS Android apps repository, [F-Droid][5]. - -Once you have installed both these components, you can pair your two devices. Installing the extension makes it show up in your system menu as _Mobile Devices_. Clicking on it displays a drop down menu, from which you can access _Mobile Settings_. - -![][6] - -Here’s where you can view your paired devices and manage the features offered by GSConnect. Once you are on this screen, launch the app on your Android device. - -You can initiate pairing from either device, but here you’ll be connecting to your desktop from the Android device. Simply hit refresh on the app, and as long as both devices are on the same wireless network, your desktop shows up in your Android device. You can now send a pair request to the desktop. Accept the pair request on your desktop to complete the pairing. - -![][7] - -### Using GSConnect - -Once paired, you’ll need to grant permissions on your Android device to make use of the many features available on GSConnect. Click on the paired device in the list of devices to see all available functions and enable or disable them according to your preferences. - -![][8] - -Remember that you’ll also need to grant corresponding permissions in the Android app to be able to use these functions. Depending upon the features you’ve enabled and the permissions you’ve granted, you can now access your mobile contacts on your desktop, get notified of messages and reply to them, and even sync the desktop and Android device clipboards. - -### Integration with Files and your web browsers - -GSConnect allows you to directly send files to your Android device from your desktop file explorer’s context menu. - -On Fedora’s default GNOME desktop, you will need to install the _nautilus-python_ package in order to make your paired devices show up in the context menu. Installing this is as straightforward as running the following command from your preferred terminal: - -``` -$ sudo dnf install nautilus-python -``` - -Once done, the _Send to Mobile Device_ entry appears in the context menu of the Files app. - -![][9] - -Similarly, install the corresponding WebExtension for your browser, be it [Firefox][10] or [Chrome][11], to send links to your Android device. You have the option to send the link to launch directly in your browser or to deliver it as SMS. - -### Running Commands - -GSConnect lets you define commands which you can then run on your desktop, from your remote device. This allows you to do things such as take a screenshot of your desktop, or lock and unlock your desktop from your Android device, remotely. - -![][12] - -To make use of this feature, you can use standard shell commands and the CLI exposed by GSConnect. Documentation on this is provided in the project’s GitHub repository: _CLI Scripting_. - -The [KDE UserBase Wiki][13] has a list of example commands. These examples cover controlling the brightness and volume on your desktop, locking the mouse and keyboard, and even changing the desktop theme. Some of the commands are specific for KDE Plasma, and modifications are necessary to make it run on the GNOME desktop. - -### Explore and have fun - -GSConnect makes it possible to enjoy a great degree of convenience and comfort. Dive into the preferences to see all that you can do and get creative with the commands function. Feel free to share all the possibilities this utility unlocked in your workflow in the comments below. - -* * * - -_Photo by [Pathum Danthanarayana][14] on [Unsplash][15]._ - --------------------------------------------------------------------------------- - -via: https://fedoramagazine.org/connect-fedora-to-your-android-phone-with-gsconnect/ - -作者:[Lokesh Krishna][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/lowkeyskywalker/ -[b]: https://github.com/lujun9972 -[1]: https://fedoramagazine.org/wp-content/uploads/2019/12/gsconnect-816x345.jpg -[2]: https://extensions.gnome.org/extension/1319/gsconnect/ -[3]: https://fedoramagazine.org/install-gnome-shell-extension/ -[4]: https://play.google.com/store/apps/details?id=org.kde.kdeconnect_tp -[5]: https://f-droid.org/en/packages/org.kde.kdeconnect_tp/ -[6]: https://fedoramagazine.org/wp-content/uploads/2020/01/within-the-menu-1024x576.png -[7]: https://fedoramagazine.org/wp-content/uploads/2020/01/pair-request-1024x576.png -[8]: https://fedoramagazine.org/wp-content/uploads/2020/01/permissions-1024x576.png -[9]: https://fedoramagazine.org/wp-content/uploads/2020/01/send-to-mobile-2-1024x576.png -[10]: https://addons.mozilla.org/en-US/firefox/addon/gsconnect/ -[11]: https://chrome.google.com/webstore/detail/gsconnect/jfnifeihccihocjbfcfhicmmgpjicaec -[12]: https://fedoramagazine.org/wp-content/uploads/2020/01/commands-1024x576.png -[13]: https://userbase.kde.org/KDE_Connect/Tutorials/Useful_commands -[14]: https://unsplash.com/@pathum_danthanarayana?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText -[15]: https://unsplash.com/s/photos/android?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText diff --git a/translated/tech/20191227 Top CI-CD resources to set you up for success.md b/translated/tech/20191227 Top CI-CD resources to set you up for success.md deleted file mode 100644 index 102e53d153..0000000000 --- a/translated/tech/20191227 Top CI-CD resources to set you up for success.md +++ /dev/null @@ -1,64 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (Morisun029) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Top CI/CD resources to set you up for success) -[#]: via: (https://opensource.com/article/19/12/cicd-resources) -[#]: author: (Jessica Cherry https://opensource.com/users/jrepka) - -顶级 CI / CD 资源,助您成功 -====== -随着企业期望实现无缝,灵活和可扩展的部署,持续集成和持续部署成为2019年的关键主题。 -![Plumbing tubes in many directions][1] - -对于 CI / CD 和 DevOps 来说,2019年是非常棒的一年。 Opensource 公司的作者分享了他们专注于无缝,灵活和可扩展部署时是如何朝着敏捷方向发展的。以下是我们2019年发布的 CI / CD 文章中的一些重要主题。 - -### 学习和提高您的 CI / CD 技能 - - -我们最喜欢的一些文章集中在 CI / CD 的实操经验上,并涵盖了许多方面。通常以[Jenkins][2]管道开始,布莱恩特的文章[用 Jenkins 构建 CI/CD 管道][4]将为您提供足够的经验,以开始构建您的第一个管道。丹尼尔在 [用DevOps 管道进行自动验收测试][4]一文中,提供了有关验收测试的重要信息,包括可用于独立测试的各种 CI / CD 应用程序。我写的[安全扫描DevOps 管道][5]非常简短,其中的关键点是关于如何使用 Jenkins 平台在管道中设置安全性的教程。 - -### 交付工作流程 - - -威利•彼得•绍布赞扬为所有产品创建统一流水线的想法,以使[每种产品在一个CI / CD 流水线中持续建立起来,以管控所有产品][8]。这些文章将使您更好地了解团队成员加入工作流流程后会发生什么。 - -### CI / CD 如何影响企业 - - -2019年也是认识到 CI / CD 的业务影响以及它如何影响日常运营的一年。 - - - -Agnieszka Gancarczyk 分享了Red Hat[小型Scrum vs.大型Scrum][9] 的调查结果, 包括受访者对srums, - -敏捷运动及其对团队的影响的不同看法。威尔安•凯丽 的[持续部署如何影响企业][10], 包括开放式沟通的重要性,丹尼尔也强调了[DevOps 团队在3 种类型的指表板][11]中指标和可观测性的重要性。最后是安•玛丽•弗雷德的精彩文章: [不要在生产环境中测试?在生产环境中测试!][12] 详细说明了验收测试前在生产环境中测试的重要性。 - -感谢许多贡献者在2019年与 Opensource 的读者分享他们的见解,我期望在2020年里从他们那里了解更多有关 CI / CD 发展的信息。 - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/19/12/cicd-resources - -作者:[Jessica Cherry][a] -选题:[lujun9972][b] -译者:[Morisun029](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/jrepka -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/plumbing_pipes_tutorial_how_behind_scenes.png?itok=F2Z8OJV1 (Plumbing tubes in many directions) -[2]: https://jenkins.io/ -[3]: https://opensource.com/article/19/9/intro-building-cicd-pipelines-jenkins -[4]: https://opensource.com/article/19/4/devops-pipeline-acceptance-testing -[5]: https://opensource.com/article/19/7/security-scanning-your-devops-pipeline -[6]: https://opensource.com/article/19/3/screwdriver-cicd -[7]: https://opensource.com/article/19/8/why-spinnaker-matters-cicd -[8]: https://opensource.com/article/19/7/cicd-pipeline-rule-them-all -[9]: https://opensource.com/article/19/3/small-scale-scrum-vs-large-scale-scrum -[10]: https://opensource.com/article/19/7/organizational-impact-continuous-deployment -[11]: https://opensource.com/article/19/7/dashboards-devops-teams -[12]: https://opensource.com/article/19/5/dont-test-production diff --git a/translated/tech/20200122 Get your RSS feeds and podcasts in one place with this open source tool.md b/translated/tech/20200122 Get your RSS feeds and podcasts in one place with this open source tool.md deleted file mode 100644 index e4b2282535..0000000000 --- a/translated/tech/20200122 Get your RSS feeds and podcasts in one place with this open source tool.md +++ /dev/null @@ -1,71 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (geekpi) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Get your RSS feeds and podcasts in one place with this open source tool) -[#]: via: (https://opensource.com/article/20/1/open-source-rss-feed-reader) -[#]: author: (Kevin Sonney https://opensource.com/users/ksonney) - -使用此开源工具将你的RSS 订阅源和播客放在一起 -====== -在我们的 20 个使用开源提升生产力的系列的第十二篇文章中使用 Newsboat 跟上你的新闻 RSS 源和播客。 -![Ship captain sailing the Kubernetes seas][1] - -去年,我在 19 天里给你介绍了 19 个新(对你而言)的生产力工具。今年,我换了一种方式:使用你在使用或者还没使用的工具,构建一个使你可以在新一年更加高效的环境。 - -### 使用 Newsboat 访问你的 RSS 源和播客 - -RSS 新闻源是了解各个网站最新消息的非常方便的方法。除了 Opensource.com,我还会关注 [SysAdvent][2] 年度 sysadmin 工具,还有一些我最喜欢的作者以及一些网络漫画。RSS 阅读器可以让我“批处理”阅读内容,因此,我每天不会在不同的网站上花费很多时间。 - -![Newsboat][3] - -[Newsboat][4] 是一个基于终端的 RSS 订阅源阅读器,外观感觉很像电子邮件程序 [Mutt][5]。它使阅读新闻变得容易,并有许多不错的功能。 - -安装 Newsboat 非常容易,因为它包含在大多数发行版(以及 MacOS 上的 Homebrew)中。安装后,只需在 **~/.newsboat/urls** 中添加订阅源。如果你是从其他阅读器迁移而来,并有导出的 OPML 文件,那么可以使用以下方式导入: - - -``` -`newsboat -i ` -``` - -添加订阅源后,Newsboat 的界面非常熟悉,特别是如果你使用过 Mutt。你可以使用箭头键上下滚动,使用 **r** 检查某个源中是否有新项目,使用 **R** 检查所有源中是否有新项目,按**回车**打开订阅源,并选择要阅读的文章。 - -![Newsboat article list][6] - -但是,你不仅限于本地 URL 列表。Newsboat 还是 [Tiny Tiny RSS][7]、ownCloud 和 Nextcloud News 等新闻阅读服务以及一些 Google Reader 后续产品的客户端。[Newsboat 的文档][8]中涵盖了有关此的详细信息以及其他许多配置选项。 - -![Reading an article in Newsboat][9] - -#### 播客 - -Newsboat 还通过 Podboat 提供了[播客支持][10],podboat 是一个附带的应用,它可帮助下载和排队播客节目。在 Newsboat 中查看播客源时,按下 **e** 将节目添加到你的下载队列中。所有信息将保存在 **~/.newsboat** 目录中的队列文件中。Podboat 读取此队列并将节目下载到本地磁盘。你可以在 Podboat 的用户界面(外观和行为类似于 Newsboat)执行此操作,也可以使用 ** podboat -a ** 让 Podboat 下载所有内容。作为播客人和播客听众,我认为这_真的_很方便。 - -![Podboat][11] - -总体而言,Newsboat 有一些非常好的功能,并且是一些基于 Web 或桌面应用的不错的轻量级替代方案。 - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/1/open-source-rss-feed-reader - -作者:[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/ship_captain_devops_kubernetes_steer.png?itok=LAHfIpek (Ship captain sailing the Kubernetes seas) -[2]: https://sysadvent.blogspot.com/ -[3]: https://opensource.com/sites/default/files/uploads/productivity_12-1.png (Newsboat) -[4]: https://newsboat.org -[5]: http://mutt.org/ -[6]: https://opensource.com/sites/default/files/uploads/productivity_12-2.png (Newsboat article list) -[7]: https://tt-rss.org/ -[8]: https://newsboat.org/releases/2.18/docs/newsboat.html -[9]: https://opensource.com/sites/default/files/uploads/productivity_12-3.png (Reading an article in Newsboat) -[10]: https://newsboat.org/releases/2.18/docs/newsboat.html#_podcast_support -[11]: https://opensource.com/sites/default/files/uploads/productivity_12-4.png (Podboat) From 8c0e4f16699a3d8ca56646b5fe50a6c602c98c08 Mon Sep 17 00:00:00 2001 From: Morisun029 <54652937+Morisun029@users.noreply.github.com> Date: Thu, 13 Feb 2020 00:03:08 +0800 Subject: [PATCH 14/18] add file --- ...-CD resources to set you up for success.md | 57 +++++++++ ...in one place with this open source tool.md | 72 +++++++++++ ... vs. proprietary- What-s the difference.md | 72 +++++++++++ ...ra to your Android phone with GSConnect.md | 118 ++++++++++++++++++ 4 files changed, 319 insertions(+) create mode 100644 sources/tech/20191227 Top CI-CD resources to set you up for success.md create mode 100644 sources/tech/20200122 Get your RSS feeds and podcasts in one place with this open source tool.md create mode 100644 sources/tech/20200209 Open source vs. proprietary- What-s the difference.md create mode 100644 translated/tech/20200207 Connect Fedora to your Android phone with GSConnect.md diff --git a/sources/tech/20191227 Top CI-CD resources to set you up for success.md b/sources/tech/20191227 Top CI-CD resources to set you up for success.md new file mode 100644 index 0000000000..7c4d0db4db --- /dev/null +++ b/sources/tech/20191227 Top CI-CD resources to set you up for success.md @@ -0,0 +1,57 @@ +[#]: collector: (lujun9972) +[#]: translator: (Morisun029) +[#]: reviewer: (wxy) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-11875-1.html) +[#]: subject: (Top CI/CD resources to set you up for success) +[#]: via: (https://opensource.com/article/19/12/cicd-resources) +[#]: author: (Jessica Cherry https://opensource.com/users/jrepka) + +顶级 CI / CD 资源,助你成功 +====== + +> 随着企业期望实现无缝、灵活和可扩展的部署,持续集成和持续部署成为 2019 年的关键主题。 + +![Plumbing tubes in many directions][1] + +对于 CI/CD 和 DevOps 来说,2019 年是非常棒的一年。Opensource.com 的作者分享了他们专注于无缝、灵活和可扩展部署时是如何朝着敏捷和 scrum 方向发展的。以下是我们 2019 年发布的 CI/CD 文章中的一些重要文章。 + +### 学习和提高你的 CI/CD 技能 + +我们最喜欢的一些文章集中在 CI/CD 的实操经验上,并涵盖了许多方面。通常以 [Jenkins][2] 管道开始,Bryant Son 的文章《[用 Jenkins 构建 CI/CD 管道][3]》将为你提供足够的经验,以开始构建你的第一个管道。Daniel Oh 在《[用 DevOps 管道进行自动验收测试][4]》一文中,提供了有关验收测试的重要信息,包括可用于自行测试的各种 CI/CD 应用程序。我写的《[安全扫描 DevOps 管道][5]》非常简短,其中简要介绍了如何使用 Jenkins 平台在管道中设置安全性。 + +### 交付工作流程 + +正如 Jithin Emmanuel 在《[Screwdriver:一个用于持续交付的可扩展构建平台][6]》中分享的,在学习如何使用和提高你的 CI/CD 技能方面,工作流程很重要,特别是当涉及到管道时。Emily Burns 在《[为什么 Spinnaker 对 CI/CD 很重要][7]》中解释了灵活地使用 CI/CD 工作流程准确构建所需内容的原因。Willy-Peter Schaub 还盛赞了为所有产品创建统一管道的想法,以便《[在一个 CI/CD 管道中一致地构建每个产品][8]》。这些文章将让你很好地了解在团队成员加入工作流程后会发生什么情况。 + +### CI/CD 如何影响企业 + +2019 年也是认识到 CI/CD 的业务影响以及它是如何影响日常运营的一年。Agnieszka Gancarczyk 分享了 Red Hat 《[小型 Scrum vs. 大型 Scrum][9]》的调查结果, 包括受访者对 Scrum、敏捷运动及对团队的影响的不同看法。Will Kelly 的《[持续部署如何影响整个组织][10]》,也提及了开放式沟通的重要性。Daniel Oh 也在《[DevOps 团队必备的 3 种指标仪表板][11]》中强调了指标和可观测性的重要性。最后是 Ann Marie Fred 的精彩文章《[不在生产环境中测试?要在生产环境中测试!][12]》详细说明了在验收测试前在生产环境中测试的重要性。 + +感谢许多贡献者在 2019 年与 Opensource 的读者分享他们的见解,我期望在 2020 年里从他们那里了解更多有关 CI/CD 发展的信息。 + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/19/12/cicd-resources + +作者:[Jessica Cherry][a] +选题:[lujun9972][b] +译者:[Morisun029](https://github.com/Morisun029) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/jrepka +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/plumbing_pipes_tutorial_how_behind_scenes.png?itok=F2Z8OJV1 (Plumbing tubes in many directions) +[2]: https://jenkins.io/ +[3]: https://linux.cn/article-11546-1.html +[4]: https://opensource.com/article/19/4/devops-pipeline-acceptance-testing +[5]: https://opensource.com/article/19/7/security-scanning-your-devops-pipeline +[6]: https://opensource.com/article/19/3/screwdriver-cicd +[7]: https://opensource.com/article/19/8/why-spinnaker-matters-cicd +[8]: https://opensource.com/article/19/7/cicd-pipeline-rule-them-all +[9]: https://opensource.com/article/19/3/small-scale-scrum-vs-large-scale-scrum +[10]: https://opensource.com/article/19/7/organizational-impact-continuous-deployment +[11]: https://linux.cn/article-11183-1.html +[12]: https://opensource.com/article/19/5/dont-test-production \ No newline at end of file diff --git a/sources/tech/20200122 Get your RSS feeds and podcasts in one place with this open source tool.md b/sources/tech/20200122 Get your RSS feeds and podcasts in one place with this open source tool.md new file mode 100644 index 0000000000..7ff7ca5e30 --- /dev/null +++ b/sources/tech/20200122 Get your RSS feeds and podcasts in one place with this open source tool.md @@ -0,0 +1,72 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Open source vs. proprietary: What's the difference?) +[#]: via: (https://opensource.com/article/20/2/open-source-vs-proprietary) +[#]: author: (Seth Kenlon https://opensource.com/users/seth) + +Open source vs. proprietary: What's the difference? +====== +Need four good reasons to tell your friends to use open source? Here's +how to make your case. +![Doodles of the word open][1] + +There's a lot to be learned from open source projects. After all, managing hundreds of disparate, asynchronous commits and bugs doesn't happen by accident. Someone or something has to coordinate releases, and keep all the code and project roadmaps organized. It's a lot like life. You have lots of tasks demanding your attention, and you have to tend to each in turn. To ensure everything gets done before its deadline, you try to stay organized and focused. + +Fortunately, there are [applications out there][2] designed to help with that sort of thing, and many apply just as well to real life as they do to software. + +Here are some reasons for choosing [open tools][3] when improving personal or project-based organization. + +### Data ownership + +It's rarely profitable for proprietary tools to provide you with [data][4] dumps. Some products, usually after a long battle with their users (and sometimes a lawsuit), provide ways to extract your data from them. But the real issue isn't whether a company lets you extract data; it's the fact that the capability to get to your data isn't guaranteed in the first place. It's your data, and when it's literally what you do each day, it is, in a way, your life. Nobody should have primary access to that but you, so why should you have to petition a company for a copy? + +Using an open source tool ensures you have priority access to your own activities. When you need a copy of something, you already have it. When you need to export it from one application to another, you have complete control of how the data is exchanged. If you need to export your schedule from a calendar into your kanban board, you can manipulate and process the data to fit. You don't have to wait for functionality to be added to the app, because you own the data, the database, and the app. + +### Working for yourself + +When you use open source tools, you often end up improving them, sometimes whether you know it or not. You may not (or you may!) download the source and hack on code, but you probably fall into a way of using the tool that works best for you. You optimize your interaction with the tool. The unique way you interact with your tooling creates a kind of meta-tool: you haven't changed the software, but you've adapted it and yourself in ways that the project author and a dozen other users never imagined. Everyone does this with whatever software they rely upon, and it's why sitting at someone else's computer to use a familiar software (or even just looking over someone's shoulder) often feels foreign, like you're using a different version of the application than you're used to. + +When you do this with proprietary software, you're either contributing to someone else's marketplace for free, or you're adjusting your own behavior based on forces outside your own control. When you optimize an open source tool, both the software and the interaction belong to you. + +### The right to not upgrade + +Tools change. It's the way of things. + +Change can be frustrating, but it can be crippling when a service changes so severely that it breaks your workflow. A proprietary service has and maintains every right to change its product, and you explicitly accept this by using the product. If your favorite accounting software or scheduling web app changes its interface or its output options, you usually have no recourse but to adapt or stop using the service. Proprietary services reserve the right to remove features, arbitrarily and without warning, and it's not uncommon for companies to start out with an open API and strong compatibility with open source, only to drop these conveniences once its customer base has reached critical mass. + +Open source changes, too. Changes in open source can be frustrating, too, and it can even drive users to alternative open source solutions. The difference is that when open source changes, you still own the unchanged code base. More importantly, lots of other people do too, and if there's enough desire for it, the project can be forked. There are several famous examples of this, but admittedly there are just as many examples where the demand was _not_ great enough, and users essentially had to adapt. + +Even so, users are never truly forced to do anything in open source. If you want to hack together an old version of your mission-critical service on an old distro running ancient libraries in a virtual machine, you can do that because you own the code. When a proprietary service changes, you have no choice but to follow. + +With open source, you can choose to forge your own path when necessary or follow the developers when convenient. + +### Open for collaboration + +Proprietary services can affect others in ways you may not realize. Closed source tools are accidentally insidious. If you use a proprietary product to manage your schedule or your recipes or your library, or you use a proprietary font in your graphic design or website, then the moment you need to coordinate with someone else, you are essentially forcing them to sign up for the same proprietary service because proprietary services usually require accounts. Of course, the same is sometimes true for an open source solution, but it's not common for open source products to collect and sell user data the way proprietary vendors do, so the stakes aren't quite the same. + +### Independence + +Ultimately, the open source advantage is one of independence for you and for those you want to collaborate with. Not everyone uses open source, and even if everyone did not everyone would use the exact same tool or the same assets, so there will always be some negotiation when sharing data. However, by keeping your data and projects open, you enable everyone (your future self included) to contribute. + +What steps do you take to ensure your work is open and accessible? Tell us in the comments! + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/20/2/open-source-vs-proprietary + +作者:[Seth Kenlon][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/seth +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/EDUCATION_doodles.png?itok=W_0DOMM4 (Doodles of the word open) +[2]: https://opensource.com/article/20/1/open-source-productivity-tools +[3]: https://opensource.com/tags/tools +[4]: https://opensource.com/tags/analytics-and-metrics \ No newline at end of file diff --git a/sources/tech/20200209 Open source vs. proprietary- What-s the difference.md b/sources/tech/20200209 Open source vs. proprietary- What-s the difference.md new file mode 100644 index 0000000000..7ff7ca5e30 --- /dev/null +++ b/sources/tech/20200209 Open source vs. proprietary- What-s the difference.md @@ -0,0 +1,72 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Open source vs. proprietary: What's the difference?) +[#]: via: (https://opensource.com/article/20/2/open-source-vs-proprietary) +[#]: author: (Seth Kenlon https://opensource.com/users/seth) + +Open source vs. proprietary: What's the difference? +====== +Need four good reasons to tell your friends to use open source? Here's +how to make your case. +![Doodles of the word open][1] + +There's a lot to be learned from open source projects. After all, managing hundreds of disparate, asynchronous commits and bugs doesn't happen by accident. Someone or something has to coordinate releases, and keep all the code and project roadmaps organized. It's a lot like life. You have lots of tasks demanding your attention, and you have to tend to each in turn. To ensure everything gets done before its deadline, you try to stay organized and focused. + +Fortunately, there are [applications out there][2] designed to help with that sort of thing, and many apply just as well to real life as they do to software. + +Here are some reasons for choosing [open tools][3] when improving personal or project-based organization. + +### Data ownership + +It's rarely profitable for proprietary tools to provide you with [data][4] dumps. Some products, usually after a long battle with their users (and sometimes a lawsuit), provide ways to extract your data from them. But the real issue isn't whether a company lets you extract data; it's the fact that the capability to get to your data isn't guaranteed in the first place. It's your data, and when it's literally what you do each day, it is, in a way, your life. Nobody should have primary access to that but you, so why should you have to petition a company for a copy? + +Using an open source tool ensures you have priority access to your own activities. When you need a copy of something, you already have it. When you need to export it from one application to another, you have complete control of how the data is exchanged. If you need to export your schedule from a calendar into your kanban board, you can manipulate and process the data to fit. You don't have to wait for functionality to be added to the app, because you own the data, the database, and the app. + +### Working for yourself + +When you use open source tools, you often end up improving them, sometimes whether you know it or not. You may not (or you may!) download the source and hack on code, but you probably fall into a way of using the tool that works best for you. You optimize your interaction with the tool. The unique way you interact with your tooling creates a kind of meta-tool: you haven't changed the software, but you've adapted it and yourself in ways that the project author and a dozen other users never imagined. Everyone does this with whatever software they rely upon, and it's why sitting at someone else's computer to use a familiar software (or even just looking over someone's shoulder) often feels foreign, like you're using a different version of the application than you're used to. + +When you do this with proprietary software, you're either contributing to someone else's marketplace for free, or you're adjusting your own behavior based on forces outside your own control. When you optimize an open source tool, both the software and the interaction belong to you. + +### The right to not upgrade + +Tools change. It's the way of things. + +Change can be frustrating, but it can be crippling when a service changes so severely that it breaks your workflow. A proprietary service has and maintains every right to change its product, and you explicitly accept this by using the product. If your favorite accounting software or scheduling web app changes its interface or its output options, you usually have no recourse but to adapt or stop using the service. Proprietary services reserve the right to remove features, arbitrarily and without warning, and it's not uncommon for companies to start out with an open API and strong compatibility with open source, only to drop these conveniences once its customer base has reached critical mass. + +Open source changes, too. Changes in open source can be frustrating, too, and it can even drive users to alternative open source solutions. The difference is that when open source changes, you still own the unchanged code base. More importantly, lots of other people do too, and if there's enough desire for it, the project can be forked. There are several famous examples of this, but admittedly there are just as many examples where the demand was _not_ great enough, and users essentially had to adapt. + +Even so, users are never truly forced to do anything in open source. If you want to hack together an old version of your mission-critical service on an old distro running ancient libraries in a virtual machine, you can do that because you own the code. When a proprietary service changes, you have no choice but to follow. + +With open source, you can choose to forge your own path when necessary or follow the developers when convenient. + +### Open for collaboration + +Proprietary services can affect others in ways you may not realize. Closed source tools are accidentally insidious. If you use a proprietary product to manage your schedule or your recipes or your library, or you use a proprietary font in your graphic design or website, then the moment you need to coordinate with someone else, you are essentially forcing them to sign up for the same proprietary service because proprietary services usually require accounts. Of course, the same is sometimes true for an open source solution, but it's not common for open source products to collect and sell user data the way proprietary vendors do, so the stakes aren't quite the same. + +### Independence + +Ultimately, the open source advantage is one of independence for you and for those you want to collaborate with. Not everyone uses open source, and even if everyone did not everyone would use the exact same tool or the same assets, so there will always be some negotiation when sharing data. However, by keeping your data and projects open, you enable everyone (your future self included) to contribute. + +What steps do you take to ensure your work is open and accessible? Tell us in the comments! + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/20/2/open-source-vs-proprietary + +作者:[Seth Kenlon][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/seth +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/EDUCATION_doodles.png?itok=W_0DOMM4 (Doodles of the word open) +[2]: https://opensource.com/article/20/1/open-source-productivity-tools +[3]: https://opensource.com/tags/tools +[4]: https://opensource.com/tags/analytics-and-metrics \ No newline at end of file diff --git a/translated/tech/20200207 Connect Fedora to your Android phone with GSConnect.md b/translated/tech/20200207 Connect Fedora to your Android phone with GSConnect.md new file mode 100644 index 0000000000..c044d2c305 --- /dev/null +++ b/translated/tech/20200207 Connect Fedora to your Android phone with GSConnect.md @@ -0,0 +1,118 @@ +[#]: collector: (lujun9972) +[#]: translator: (chai-yuan) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Connect Fedora to your Android phone with GSConnect) +[#]: via: (https://fedoramagazine.org/connect-fedora-to-your-android-phone-with-gsconnect/) +[#]: author: (Lokesh Krishna https://fedoramagazine.org/author/lowkeyskywalker/) + +使用GSConnect将Android手机连接到Fedora系统 +====== + +![][1] + +苹果和微软公司都提供了集成好的与移动设备交互的应用。Fedora提供了类似的工具——**GSConnect**。它可以让你将你的安卓手机和你的Fedora桌面配对并使用。读下去,来了解更多关于它是什么以及它是如何工作的信息。 + +### GSConnect是什么? + +GSConnect是基于KDE Connect项目而为GNOME桌面定制的程序。KDE Connect使你的设备相互之间能够进行通信。但是,在Fedora的默认GNOME桌面上安装它需要安装大量的KDE依赖。 + +GSConnect基于KDE Connect实现,作为GNOME shell的拓展应用。一旦安装,GSConnect允许您执行以下操作: + + * 在电脑上接收电话通知并回复信息 + * 用手机操纵你的桌面 + * 在不同设备之间分享文件与链接 + * 在电脑上查看手机电量 + * 让手机响铃以便你能找到它 + + + +### 设置GSConnect扩展 + +设置GSConnect需要安装两款软件:电脑上的GSConnect扩展和Android设备上的KDE Connect应用。 + +首先,从GNOME Shell扩展网站[GSConnect][2]安装GSConnect扩展。(Fedora Magazine有一篇关于[如何安装GNOMEShell扩展名][3]的文章,可以帮助你完成这一步。) + +KDE Connect应用程序可以在Google的[Play Store][4]上找到。它也可以在FOSS Android应用程序库[F-Droid][5]上找到。 + +一旦安装了这两个组件,就可以配对两个设备。安装扩展后再系统菜单中显示“移动设备(Mobile Devices)”。单击它会出现一个下拉菜单,你可以从中访问“移动设置(Mobile Settings)”。 + +![][6] + +在这里,你可以用GSConnect查看并管理配对的设备。进入此界面后,需要在Android设备上启动应用程序。 + +配对的初始化可以再任意一台设备上进行,在这里我们从Android设备连接到电脑。点击应用程序上的刷新(refresh),只要两个设备都在同一个无线网络环境中,你的Android设备便可以搜索到你的电脑。现在可以向桌面发送配对请求,并在桌面上接受配对请求以完成配对。 + +![][7] + +### 使用 GSConnect + +配对后,你将需要授予对Android设备的权限,才能使用GSConnect上提供的许多功能。单击设备列表中的配对设备,便可以查看所有可用功能,并根据你的偏好和需要启用或禁用它们。 + +![][8] + +请记住,你还需要在Android应用程序中授予相应的权限才能使用这些功能。启用权限后,你现在可以访问桌面上的移动联系人,获得消息通知并回复消息,甚至同步桌面和Android设备剪贴板。 + +### 集成在文件系统与浏览器上 + +GSConnect允许你直接从桌面文件资源管理器向Android设备发送文件。 + +在Fedora的默认GNOME桌面上,你需要安装_nautilus-python_依赖包,以便在菜单中显示配对的设备。安装它只需要再终端中输入: + +``` +$ sudo dnf install nautilus-python +``` + +完成后,将在“文件(Files)”的菜单中显示“发送到移动设备(Send to Mobile Device)”选项。 + +![][9] + +同样,为你的浏览器安装相应的WebExtension,无论是[Firefox][10]还是[Chrome][11]浏览器,都可以将链接发送到你的Android设备。你可以选择直接在浏览器中发送要启动的链接,或将其作为短信息发送。 + +### 运行命令 + +GSConnect允许你定义命令,然后可以从远程设备在电脑上运行这些命令。这使得你可以远程截屏,或者从你的Android设备锁定和解锁你的桌面。 + +![][12] + +要使用此功能,可以使用标准shell命令和GSConnect公开的CLI。项目的GitHub存储库中提供了有关此操作的文档: _CLI Scripting_。 + +[KDE UserBase Wiki][13]有一个命令示例列表。这些例子包括控制桌面的亮度和音量,锁定鼠标和键盘,甚至更改桌面主题。其中一些命令是针对KDE Plasma设计的,需要进行修改才能在GNOME桌面上运行。 + +### 探索并享受乐趣 + +GSConnect使我们能够享受到极大的便利和舒适。深入研究首选项,查看你可以做的所有事情,灵活的使用这些命令功能。并在下面的评论中自由分享你解锁的新方式。 + +* * * + +_Photo by [Pathum Danthanarayana][14] on [Unsplash][15]._ + +-------------------------------------------------------------------------------- + +via: https://fedoramagazine.org/connect-fedora-to-your-android-phone-with-gsconnect/ + +作者:[Lokesh Krishna][a] +选题:[lujun9972][b] +译者:[chai-yuan](https://github.com/chai-yuan) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://fedoramagazine.org/author/lowkeyskywalker/ +[b]: https://github.com/lujun9972 +[1]: https://fedoramagazine.org/wp-content/uploads/2019/12/gsconnect-816x345.jpg +[2]: https://extensions.gnome.org/extension/1319/gsconnect/ +[3]: https://fedoramagazine.org/install-gnome-shell-extension/ +[4]: https://play.google.com/store/apps/details?id=org.kde.kdeconnect_tp +[5]: https://f-droid.org/en/packages/org.kde.kdeconnect_tp/ +[6]: https://fedoramagazine.org/wp-content/uploads/2020/01/within-the-menu-1024x576.png +[7]: https://fedoramagazine.org/wp-content/uploads/2020/01/pair-request-1024x576.png +[8]: https://fedoramagazine.org/wp-content/uploads/2020/01/permissions-1024x576.png +[9]: https://fedoramagazine.org/wp-content/uploads/2020/01/send-to-mobile-2-1024x576.png +[10]: https://addons.mozilla.org/en-US/firefox/addon/gsconnect/ +[11]: https://chrome.google.com/webstore/detail/gsconnect/jfnifeihccihocjbfcfhicmmgpjicaec +[12]: https://fedoramagazine.org/wp-content/uploads/2020/01/commands-1024x576.png +[13]: https://userbase.kde.org/KDE_Connect/Tutorials/Useful_commands +[14]: https://unsplash.com/@pathum_danthanarayana?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText +[15]: https://unsplash.com/s/photos/android?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText \ No newline at end of file From e97024fc175b0aa3be187f6c53d60d8af0d17b93 Mon Sep 17 00:00:00 2001 From: Morisun029 <54652937+Morisun029@users.noreply.github.com> Date: Sat, 15 Feb 2020 18:44:21 +0800 Subject: [PATCH 15/18] fix issue --- ...wered by Ceph, and more industry trends.md | 66 ++ ...sma 5.18 LTS Released With New Features.md | 121 ++++ ... vs. proprietary- What-s the difference.md | 4 +- .../20200214 Linux is our love language.md | 83 +++ ...Background Story of AppImage -Interview.md | 128 ++++ ...-CD resources to set you up for success.md | 57 -- ...in one place with this open source tool.md | 72 -- ...ith this open source window environment.md | 115 --- ...Give an old MacBook new life with Linux.md | 81 --- ...00206 3 ways to use PostgreSQL commands.md | 230 ++++++ ...rd- Why Linux Users Going Crazy Over it.md | 2 +- ...ith This Single Command -Beginner-s Tip.md | 114 --- ... for the YaCy open source search engine.md | 100 --- ... Modern Looking Open Source XMPP Client.md | 2 +- ... the life of your SSD drive with fstrim.md | 161 ++++ ...o Change the Default Terminal in Ubuntu.md | 86 --- ... to use byobu to multiplex SSH sessions.md | 86 +++ ...tificates with the ssl-on-demand script.md | 685 ++++++++++++++++++ ...store a single-core computer with Linux.md | 270 +++++++ ... PHP Development on Fedora with Eclipse.md | 89 +++ ...190407 Manage multimedia files with Git.md | 246 ------- ...t I learned going from prison to Python.md | 102 --- ...Give an old MacBook new life with Linux.md | 83 +++ .../20200205 Getting started with GnuCash.md | 96 --- ...00206 3 ways to use PostgreSQL commands.md | 228 ------ ...ra to your Android phone with GSConnect.md | 2 +- ...e GeForce NOW Shamelessly Ignores Linux.md | 82 --- ...ith This Single Command -Beginner-s Tip.md | 114 +++ ... for the YaCy open source search engine.md | 99 +++ ...o Change the Default Terminal in Ubuntu.md | 86 +++ 30 files changed, 2306 insertions(+), 1384 deletions(-) create mode 100644 sources/news/20200211 Building a Linux desktop, CERN powered by Ceph, and more industry trends.md create mode 100644 sources/news/20200213 KDE Plasma 5.18 LTS Released With New Features.md rename sources/{tech => talk}/20200209 Open source vs. proprietary- What-s the difference.md (98%) create mode 100644 sources/talk/20200214 Linux is our love language.md create mode 100644 sources/talk/20200215 The Background Story of AppImage -Interview.md delete mode 100644 sources/tech/20191227 Top CI-CD resources to set you up for success.md delete mode 100644 sources/tech/20200122 Get your RSS feeds and podcasts in one place with this open source tool.md delete mode 100644 sources/tech/20200124 Run multiple consoles at once with this open source window environment.md delete mode 100644 sources/tech/20200203 Give an old MacBook new life with Linux.md create mode 100644 sources/tech/20200206 3 ways to use PostgreSQL commands.md delete mode 100644 sources/tech/20200210 Install All Essential Media Codecs in Ubuntu With This Single Command -Beginner-s Tip.md delete mode 100644 sources/tech/20200210 Top hacks for the YaCy open source search engine.md create mode 100644 sources/tech/20200212 Extend the life of your SSD drive with fstrim.md delete mode 100644 sources/tech/20200212 How to Change the Default Terminal in Ubuntu.md create mode 100644 sources/tech/20200212 How to use byobu to multiplex SSH sessions.md create mode 100644 sources/tech/20200212 Manage your SSL certificates with the ssl-on-demand script.md create mode 100644 sources/tech/20200214 How to restore a single-core computer with Linux.md create mode 100644 sources/tech/20200214 PHP Development on Fedora with Eclipse.md delete mode 100644 translated/tech/20190407 Manage multimedia files with Git.md delete mode 100644 translated/tech/20200112 What I learned going from prison to Python.md create mode 100644 translated/tech/20200203 Give an old MacBook new life with Linux.md delete mode 100644 translated/tech/20200205 Getting started with GnuCash.md delete mode 100644 translated/tech/20200206 3 ways to use PostgreSQL commands.md delete mode 100644 translated/tech/20200207 NVIDIA-s Cloud Gaming Service GeForce NOW Shamelessly Ignores Linux.md create mode 100644 translated/tech/20200210 Install All Essential Media Codecs in Ubuntu With This Single Command -Beginner-s Tip.md create mode 100644 translated/tech/20200210 Top hacks for the YaCy open source search engine.md create mode 100644 translated/tech/20200212 How to Change the Default Terminal in Ubuntu.md diff --git a/sources/news/20200211 Building a Linux desktop, CERN powered by Ceph, and more industry trends.md b/sources/news/20200211 Building a Linux desktop, CERN powered by Ceph, and more industry trends.md new file mode 100644 index 0000000000..424f69bcc2 --- /dev/null +++ b/sources/news/20200211 Building a Linux desktop, CERN powered by Ceph, and more industry trends.md @@ -0,0 +1,66 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Building a Linux desktop, CERN powered by Ceph, and more industry trends) +[#]: via: (https://opensource.com/article/20/2/linux-desktop-cern-more-industry-trends) +[#]: author: (Tim Hildred https://opensource.com/users/thildred) + +Building a Linux desktop, CERN powered by Ceph, and more industry trends +====== +A weekly look at open source community and industry trends. +![Person standing in front of a giant computer screen with numbers, data][1] + +As part of my role as a senior product marketing manager at an enterprise software company with an open source development model, I publish a regular update about open source community, market, and industry trends for product marketers, managers, and other influencers. Here are five of my and their favorite articles from that update. + +## [Building a Linux desktop for cloud-native development][2] + +> This post covers the building of my Linux Desktop PC for Cloud Native Development. I'll be covering everything from parts, to peripherals, to CLIs, to SaaS software with as many links and snippets as I can manage. I hope that you enjoy reading about my experience, learn something, and possibly go on to build your own Linux Desktop. + +**The impact**: I hope the irony is not lost on anyone that step 1, when doing cloud-native software development, is to install Linux on a physical computer. + +## [Enabling CERN’s particle physics research with open source][3] + +> Ceph is an open-source software-defined storage platform. While it’s not often in the spotlight, it’s working hard behind the scenes, playing a crucial role in enabling ambitious, world-renowned projects such as CERN’s particle physics research, Immunity Bio’s cancer research, The Human Brain Project, MeerKat radio telescope, and more. These ventures are propelling the collective understanding of our planet and the human race beyond imaginable realms, and the outcomes will forever change how we perceive our existence and potential.  + +**The impact**: It is not often that you get to see a straight line drawn between storage and the perception of human existence. Thanks for that, CERN! + +## [2020 cloud predictions][4] + +> "Serverless" as a concept provides a simplified developer experience that will become a platform feature. More platform-as-a-service providers will incorporate serverless traits into the daily activities developers perform when building cloud-native applications, becoming the default computing paradigm for the cloud. + +**The impact:** All of the trends in the predictions in this post are basically about maturation as ideas like serverless, edge computing, DevOps, and other cloud-adjacent buzz words move from the early adopters into the early majority phase of the adoption curve. + +## [End-of-life announcement for CoreOS Container Linux][5] + +> As we've [previously announced][6], [Fedora CoreOS][7] is the official successor to CoreOS Container Linux. Fedora CoreOS is a [new Fedora Edition][8] built specifically for running containerized workloads securely and at scale. It combines the provisioning tools and automatic update model of Container Linux with the packaging technology, OCI support, and SELinux security of Atomic Host. For more on the Fedora CoreOS philosophy, goals, and design, see the [announcement of the preview release][9] and the [Fedora CoreOS documentation][10]. + +**The impact**: Milestones like this are often bittersweet for both creators and users. The CoreOS team built something that their community loved to use, which is something to be celebrated. Hopefully, that community can find a [new home][11] in the wider [Fedora ecosystem][8]. + +_I hope you enjoyed this list and come back next week for more open source community, market, and industry trends._ + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/20/2/linux-desktop-cern-more-industry-trends + +作者:[Tim Hildred][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/thildred +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/data_metrics_analytics_desktop_laptop.png?itok=9QXd7AUr (Person standing in front of a giant computer screen with numbers, data) +[2]: https://blog.alexellis.io/building-a-linux-desktop-for-cloud-native-development/ +[3]: https://insidehpc.com/2020/02/how-ceph-powers-exciting-research-with-open-source/ +[4]: https://www.devopsdigest.com/2020-cloud-predictions-2 +[5]: https://coreos.com/os/eol/ +[6]: https://groups.google.com/d/msg/coreos-user/zgqkG88DS3U/PFP9yrKbAgAJ +[7]: https://getfedora.org/coreos/ +[8]: https://fedoramagazine.org/fedora-coreos-out-of-preview/ +[9]: https://fedoramagazine.org/introducing-fedora-coreos/ +[10]: https://docs.fedoraproject.org/en-US/fedora-coreos/ +[11]: https://getfedora.org/en/coreos/ diff --git a/sources/news/20200213 KDE Plasma 5.18 LTS Released With New Features.md b/sources/news/20200213 KDE Plasma 5.18 LTS Released With New Features.md new file mode 100644 index 0000000000..8100290280 --- /dev/null +++ b/sources/news/20200213 KDE Plasma 5.18 LTS Released With New Features.md @@ -0,0 +1,121 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (KDE Plasma 5.18 LTS Released With New Features) +[#]: via: (https://itsfoss.com/kde-plasma-5-18-release/) +[#]: author: (Ankush Das https://itsfoss.com/author/ankush/) + +KDE Plasma 5.18 LTS Released With New Features +====== + +[KDE plasma][1] desktop is undoubtedly one of the most impressive [Linux desktop environments][2] available out there right now. + +Now, with the latest release, the KDE Plasma desktop just got more awesome! + +KDE Plasma 5.18 marks itself as an LTS (Long Term Support) release i.e it will be maintained by the KDE contributors for the next 2 years while the regular versions are maintained for just 4 months. + +![KDE Plasma 5.18 on KDE Neon][3] + +So, if you want more stability on your KDE-powered Linux system, it would be a good idea to upgrade to KDE’s Plasma 5.18 LTS release. + +### KDE Plasma 5.18 LTS Features + +Here are the main new features added in this release: + +#### Emoji Selector + +![Emoji Selector in KDE][4] + +Normally, you would Google an emoji to copy it to your clipboard or simply use the good-old emoticons to express yourself. + +Now, with the latest update, you get an emoji selector in Plasma Desktop. You can simply find it by searching for it in the application launcher or by just pressing (Windows key/Meta/Super Key) + . (**period/dot)**. + +The shortcut should come in handy when you need to use an emoji while sending an email or any other sort of messages. + +#### Global Edit Mode + +![Global Edit Mode][5] + +You probably would have used the old desktop toolbox on the top-right corner of the screen in the Plasma desktop, but the new release gets rid of that and instead – provides you with a global edit mode when you right-click on the desktop and click on “**Customize Layout**“. + +#### Night Color Control + +![Night Color Control][6] + +Now, you can easily toggle the night color mode right from the system tray. In addition to that, you can even choose to set a keyboard shortcut for both night color and the do not disturb mode. + +#### Privacy Improvements For User Feedback + +![Improved Privacy][7] + +It is worth noting that KDE Plasma lets you control the user feedback information that you share with them. + +You can either choose to disable sharing any information at all or control the level of information you share (basic, intermediate, and detailed). + +#### Global Themes + +![Themes][8] + +You can either choose from the default global themes available or download community-crafted themes to set up on your system. + +#### UI Improvements + +There are several subtle improvements and changes. For instance, the look and feel of the notifications have improved. + +You can also notice a couple of differences in the software center (Discover) to help you easily install apps. + +Not just limited to that, but you also get the ability to mute the volume of a window from the taskbar (just like you normally do on your browser’s tab). Similarly, there are a couple of changes here and there to improve the KDE Plasma experience. + +#### Other Changes + +In addition to the visual changes and customization ability, the performance of KDE Plasma has improved when coupled with a graphics hardware. + +To know more about the changes, you can refer the [official announcement post][9] for KDE Plasma 5.18 LTS. + +[Subscribe to our YouTube channel for more Linux videos][10] + +### How To Get KDE Plasma 5.18 LTS? + +If you are using a rolling release distribution like Arch Linux, you might have got it with the system updates. If you haven’t performed an update yet, simply check for updates from the system settings. + +If you are using Kubuntu, you can add the Kubuntu backports PPA to update the Plasma desktop with the following commands: + +``` +sudo add-apt-repository ppa:kubuntu-ppa/backports +sudo apt update && sudo apt full-upgrade +``` + +If you do not have KDE as your desktop environment, you can refer our article on [how to install KDE on Ubuntu][11] to get started. + +**Wrapping Up** + +KDE Plasma 5.18 may not involve a whole lot of changes – but being an LTS release, the key new features seem helpful and should come in handy to improve the Plasma desktop experience for everyone. + +What do you think about the latest Plasma desktop release? Feel free to let me know your thoughts in the comments below. + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/kde-plasma-5-18-release/ + +作者:[Ankush Das][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://itsfoss.com/author/ankush/ +[b]: https://github.com/lujun9972 +[1]: https://kde.org/plasma-desktop/ +[2]: https://itsfoss.com/best-linux-desktop-environments/ +[3]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/02/kde-plasma-5-18-info.jpg?ssl=1 +[4]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/02/kde-plasma-emoji-pick.jpg?ssl=1 +[5]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/02/kde-plasma-global-editor.jpg?ssl=1 +[6]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/02/kde-plasma-night-color.jpg?ssl=1 +[7]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/02/user-feedback-kde-plasma.png?ssl=1 +[8]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/02/kde-plasma-global-themes.jpg?ssl=1 +[9]: https://kde.org/announcements/plasma-5.18.0.php +[10]: https://www.youtube.com/c/itsfoss?sub_confirmation=1 +[11]: https://itsfoss.com/install-kde-on-ubuntu/ diff --git a/sources/tech/20200209 Open source vs. proprietary- What-s the difference.md b/sources/talk/20200209 Open source vs. proprietary- What-s the difference.md similarity index 98% rename from sources/tech/20200209 Open source vs. proprietary- What-s the difference.md rename to sources/talk/20200209 Open source vs. proprietary- What-s the difference.md index 7ff7ca5e30..2c6b6fce0b 100644 --- a/sources/tech/20200209 Open source vs. proprietary- What-s the difference.md +++ b/sources/talk/20200209 Open source vs. proprietary- What-s the difference.md @@ -37,7 +37,7 @@ Tools change. It's the way of things. Change can be frustrating, but it can be crippling when a service changes so severely that it breaks your workflow. A proprietary service has and maintains every right to change its product, and you explicitly accept this by using the product. If your favorite accounting software or scheduling web app changes its interface or its output options, you usually have no recourse but to adapt or stop using the service. Proprietary services reserve the right to remove features, arbitrarily and without warning, and it's not uncommon for companies to start out with an open API and strong compatibility with open source, only to drop these conveniences once its customer base has reached critical mass. -Open source changes, too. Changes in open source can be frustrating, too, and it can even drive users to alternative open source solutions. The difference is that when open source changes, you still own the unchanged code base. More importantly, lots of other people do too, and if there's enough desire for it, the project can be forked. There are several famous examples of this, but admittedly there are just as many examples where the demand was _not_ great enough, and users essentially had to adapt. +Open source changes, too. Changes in open source can be frustrating, too, and it can even drive users to alternative open source solutions. The difference is that when open source changes, you still own the unchanged code base. More importantly, lots of other people do too, and if there's enough desire for it, the project can be forked. There are several famous examples of this, but admittedly there are just as many examples where the demand was _not_ great enough, and users essentially had to adapt. Even so, users are never truly forced to do anything in open source. If you want to hack together an old version of your mission-critical service on an old distro running ancient libraries in a virtual machine, you can do that because you own the code. When a proprietary service changes, you have no choice but to follow. @@ -69,4 +69,4 @@ via: https://opensource.com/article/20/2/open-source-vs-proprietary [1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/EDUCATION_doodles.png?itok=W_0DOMM4 (Doodles of the word open) [2]: https://opensource.com/article/20/1/open-source-productivity-tools [3]: https://opensource.com/tags/tools -[4]: https://opensource.com/tags/analytics-and-metrics \ No newline at end of file +[4]: https://opensource.com/tags/analytics-and-metrics diff --git a/sources/talk/20200214 Linux is our love language.md b/sources/talk/20200214 Linux is our love language.md new file mode 100644 index 0000000000..397ddee4d3 --- /dev/null +++ b/sources/talk/20200214 Linux is our love language.md @@ -0,0 +1,83 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Linux is our love language) +[#]: via: (https://opensource.com/article/20/2/linux-love-language) +[#]: author: (Christopher Cherry https://opensource.com/users/chcherry) + +Linux is our love language +====== +When a wife teaches a husband some new tech skills, they both learn a +lot more than they expect. +![Red heart with text "you are not alone"][1] + +2019 was a year of learning in the Cherry household. I am a senior software engineer who set out to learn new skills and, along the way, I taught my husband, Chris. By teaching him some of the things I learned and asking him to work through my technology walkthrough articles, I helped Chris learn new skills that enabled him to pivot his career deeper into the technology field. And I learned new ways to make my walkthroughs and training materials more accessible for readers to digest. + +In this article, we talk about what we learned individually and from each other, then we explore what it means for their future. + +### Questions for the student + +**Jess:** Chris, what made you want to learn more about my field? + +**Chris:** It was primarily to further my career. Being in network engineering has shown me that being an expert only on networks is not as valuable as it once was, and I have to know a little bit of everything. Since the network is often blamed for outages or application challenges these days, I wanted to understand more from a developer's perspective on writing applications so I could see how they depend on the network as a resource. + +**Jess:** What did I teach you first, and what did you learn from it? + +**Chris:** It all started with installing Linux for the first time, then adding [Ansible][2]. Each Linux distribution I worked with was easy enough to install, as long as the hardware was compatible, but compatibility wasn't always clear. That meant sometimes I learned first-hand how to troubleshoot Linux within the first five minutes of running an installation (and I liked it). Ansible gave me a reason to learn Linux package managers to install the software. Once it was installed, I quickly learned how package management handles dependencies as I looked at the files that yum installed, so Ansible, which is written in Python, can run on my system. From there, I started to install all kinds of applications with Ansible. + +**Jessica:** Do you like the way I taught you? + +**Chris:** We had our struggles at first, until we ironed out how I like to learn and how you should present the best way for me to learn. In the beginning, it was hard to follow what you meant. For instance, when you said things like "a Docker container," I had no reference to what you were talking about. Early on, the response was, "well, it's a container," which meant nothing to me at the time. Once I got you to explain it in more detail, it became a lot more fun to learn. + +**Jess:** To be fair, this was a big lesson for me as well. I hadn't trained anyone with less knowledge on this technology than me before you, so you helped me realize that I needed to be clearer with my explanations. Thanks for that. + +How did you feel about testing my articles, the ones where I had you run through the steps? + +**Chris:** Personally, I thought it would be easy, and boy, was I wrong. One of the main things I learned from these, like your [introduction to Vagrant][3], was how each Linux distribution varies more than I realized. The operating system (OS) changes how you set it up, the requirements to run, and the specific commands. It seems like a lot more variability than there is with the network gear I've worked on. So I started to pay a lot more attention to the instructions and whether they were written for my OS or another one (and how difficult it can be to know sometimes). I seemed to break a lot of things along the way. + +**Jess:** I break stuff all day, so different paths for different problems are daily occurrences for me. + +### Questions for the teacher + +**Chris:** Jess, would you change anything with the way you taught me so far? + +**Jess:** I'd have liked to make you read more, as I do. Learning new technology has me churning through books. I read a book and a half, if not two books, a week, and that's with spending one hour in the morning and one hour before bed every day. I also pick one project to run through for two weeks for about an hour a day to reinforce the book skills. And that's in addition to the tech articles I read for the first hour of my day while taking in an immense amount of coffee. When I think about your goal to grow your career, I think books are an important element alongside the great blog posts and articles we talk about. I feel my reading regiment has kept me up to speed, and if you did the same, you would catch up to me pretty quickly. + +**Chris:** So did the student teach the teacher in any way? + +**Jess:** I learned a great deal about being patient from you. For instance, after walking through an installation of Ansible, I asked what you wanted to do next. Your first answer was, "I don't know," which was hard for me because I want you to learn what you want to learn. So I changed my approach, and now we talk more about what you want to achieve before walking through installing anything. When we moved on to the Vagrant article we worked on together, I created it with an end goal in mind, so we had something to achieve right away. + +This actually made a massive change in how I do training at work. Now I ask more questions on how people learn and work hand-in-hand more often than I did before. I am more likely to sit and go through and make sure someone understands what I'm saying and what we're doing. I wasn't really before. + +### What we learned together + +As a couple, we both grew from collaborating on technology over the last year. + +**Chris:** I'm blown away at how much I learned. Over the course of a year, I understand new operating systems, how to use an API, web application deployment with Ansible, and standing up virtual machines with Vagrant. I also learned how documentation makes life better, so it's worth the time it takes to write some. In this field of work, however, behavior isn't always documented, so I've learned to be ready to work through tough issues and document how I fix them. + +**Jess:** Beyond what I learned from teaching you, I've focused on learning a good deal about Kubernetes in cloud environments. That includes deployment strategies, the complexity of the Kubernetes API, building my own containers, and securing these environments. I've also saved time to dabble: toying around with serverless code, AI models, Python, and graphically displaying heat maps. It's been a good year. + +What's next for us? It's yet to be seen, but I can assure you that we're going to share it here on Opensource.com. + +**Who did you mentor in 2019, or who are you mentoring in 2020? Tell us about it in the comments.** + +I can see the brightness of curiosity in my six year old niece Shuchi's eyes when she explores a... + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/20/2/linux-love-language + +作者:[Christopher Cherry][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/chcherry +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/red-love-heart-alone-stone-path.jpg?itok=O3q1nEVz (Red heart with text "you are not alone") +[2]: https://opensource.com/resources/what-ansible +[3]: https://opensource.com/resources/vagrant diff --git a/sources/talk/20200215 The Background Story of AppImage -Interview.md b/sources/talk/20200215 The Background Story of AppImage -Interview.md new file mode 100644 index 0000000000..d3e95a1a0f --- /dev/null +++ b/sources/talk/20200215 The Background Story of AppImage -Interview.md @@ -0,0 +1,128 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (The Background Story of AppImage [Interview]) +[#]: via: (https://itsfoss.com/appimage-interview/) +[#]: author: (Abhishek Prakash https://itsfoss.com/author/abhishek/) + +The Background Story of AppImage [Interview] +====== + +As a Linux user, you might have come across [AppImages][1]. This is a portable packaging format that allows you to run an application on any Linux distribution. + +[Using AppImage][2] is really simple. You just need to give it execute permission and double click to run it, like the .exe files in Windows. This solves a major problem in Linux as different kind of distributions have different kind of packaging formats. You cannot [install .deb files][3] (of Debian/Ubuntu) on [Fedora][4] and vice versa. + +We talked to Simon, the developer of AppImage, about how and why he created this project. Read some of the interesting background story and insights Simon shares about AppImage. + +### Interacting with Simon Peter, the creator of AppImage + +![][5] + +_**It’s FOSS: Few people know about the person behind AppImage. How about sharing a little background information about yourself?**_ + +**Simon:** Hi, I’m Simon Peter, based near Frankfurt in Germany. My background is in Economics and Business Administration, but I’ve always been a tinkerer and hacker in my free time, and been working in tech ever since I graduated. + +AppImage, though, is strictly a hobby which I enjoy working on in my spare time. I do a lot of my AppImage work while I’m on a train going from here to there. Somehow I seem to be on the move all the time. Professionally, I work in the product management of a large telecommunications company. + +_**It’s FOSS: Why did you create AppImage?**_ + +**Simon:** The first computer I could get my hands on was a [Macintosh][6] in the late 80s. For me, this is the benchmark when it comes to simplicity and usability. When I started to experiment with Linux on the desktop, I always wished it was as elegant and simple to operate and gave me as much flexibility as the early Macs. + +When I tried Linux for the first time in the late 90s, I had to go through a cumbersome process formatting and partitioning hard disks, installing stuff – it took a lot of time and was really cumbersome. A couple of years later, I tried out a Linux Live CD-ROM. It was a complete game changer. You popped in the CD, booted the computer, and everything just worked, right out of the box. No installation, no configuration. The system was always in factory-new state whenever you rebooted the machine. Exactly how I liked it. + +There was only one downside: You could not install additional applications on a read-only CD. Packages always insisted on writing in /usr, where the Live CD was not writeable. Thus, I asked myself: Why can’t I just put applications wherever I want, like on a USB drive or a network share, as I am used from the Mac? How cool would it be if every application was just one single file that I could put wherever I want? And thus the idea for AppImage was born (back then under the name of “klik”). + +Turns out that over time Live systems have become more capable, but I still like the simplicity and freedom that comes with the “one app = one file” idea. For example, I want to be in control of where stuff resides on my hard disks. I want to decide what to update or not to update and when. For most tasks I need a stable, rarely-changing operating system with the latest applications. To this day all I ever run are Live systems, because the operating system “just works” out of the box without any installation or configuration on my side, and every time I reboot the machine I have a “factory new”, known-good state. + +_**It’s FOSS: What challenges did you face in the past and what challenges are you facing right now?**_ + +**Simon:** People told me that the idea was nuts, and I had no clue how “things are done on Linux”. Just about when I was beginning to give in, I came across a video of [Linus Torvalds][7] of all people who I noticed was complaining about many of the same things that I always had felt were too complicated when it came to distributing applications for Linux. While I was watching his rant, I also noticed, hey, AppImage actually solves many of those issues. Some time later, Linus came across AppImage, and he apparently liked the idea. That made me think, maybe it’s not that stupid an idea as people had made me believe all the time up to that point. + +Today, people tend to mention AppImage as “one of the new package formats” together with [Snap][8] and [Flatpak][9]. I think that’s comparing apples to oranges. Not only is AppImage not “new” (it’s been around since well over a decade by now), but also it has very different objectives and design principles than the other systems. AppImage is all about single-file application bundles that can be “managed” by nothing else than a web browser and a file manager. It’s meant for “mere morals”, end users, not system administrators. It needs no package manager, it needs no root rights, it needs nothing to be installed on the system. It gives complete freedom to application developers and users. + +_**It’s FOSS: AppImage is a “universal packaging system” and there you compete with Snap (backed by Ubuntu) and Flatpak (backed by Fedora). How do you plan to ‘fight’ against these big corporates?**_ + +**Simon:** See? That’s what I mean. AppImage plays in an entirely different playing field. + +AppImage wants to be what exe files or PortableApps are for Windows and what apps inside dmg files are on the Mac – but better. + +Besides, Snap (backed by [Canonical][10]) does not work out-of-the-box on Fedora, and Flatpak (backed by [Red Hat][11]) does not work out-of-the-box on Ubuntu. AppImages can run on either system, and many more, without the need to install anything. + +_**It’s FOSS: How do you see the adoption of AppImage? Are you happy with its growth?**_ + +**Simon:** As of early 2020, there are now around 1,000 official AppImages made by the respective application authors that are passing my compatibility tests and can run on the oldest still-supported Ubuntu LTS release, and hundreds more are being worked on as we speak. “Household name” applications like Inkscape, Kdenlive, KDevelop, LibreOffice, PrusaSlicer, Scribus, Slic3r, Ultimaker Cura (too many to name them all) are being distributed in AppImage format. This makes me very happy and I am always excited when I read about a new version being released on Twitter, and then am able to download and run the AppImage instantly, without having to wait for my Linux distribution to carry that new version, and without having to throw away the old (known-good) version just because I want to try out the new (bleeding edge) one. + +The adoption of AppImage is especially strong for nightly and continuous builds. This is because the “one app = one file” concept of AppImage lends itself especially well to try-out software, where you keep multiple versions around for testing purposes, and never have to install anything into the running system. Worst thing that can happen with AppImage is that an application does not launch. In that case, file a bug, delete the file, done. Worst thing that can happen with distribution packages: complete system breakage… + +_**It’s FOSS: One major issue with AppImage is that not all the developers provide an easy way of updating the AppImage versions. Any suggestions for handling it?**_ + +**Simon:** AppImage has this concept of “binary delta updates”. Think of it as “diff for applications”. A new version of an application comes out, you download only the parts that have changed, and apply them to the old version. As a result, you get both the old and the new version and can keep them in parallel until you have determined that you don’t need the old version any longer, and throw it away. + +In general, I don’t want to enforce anything with AppImage. Application authors are at liberty to control the whole experience. Up to now, application authors have to do some setup work to make AppImages with this update capability. That being said, I am convinced that if we make it easy enough for developers to get working binary delta updates “for free”, then many will offer them. To this end, I am currently working on a new set of tools written in Go that will set up updates almost automatically, and I hope this will significantly increase the percentage of AppImages that come with this capability. + +_**It’s FOSS: [Nitrux][12] is one of the rare distributions that relies heavily on AppImage. Or there any other such distributions? What can be done make AppImage more popular?**_ + +**Simon:** Linux distributions traditionally have thought of themselves as more than just the base operating system itself – they also wanted to control application distribution. Now, as Apple and Microsoft are trying to get more control over application distribution on their desktop platforms, the trend is slowly reversing in Linux land where people are slowly beginning to understand that distributions could be much more polished if they focused on the base operating system and left the packaging of applications to the application authors. + +To make AppImage more popular, I think users and application authors should continue to spread the word that upstream-provided AppImages are in many cases working better than distribution packages. With AppImage, you get a software stack where the application author had a chance to cherry-pick which versions of libraries work together, test and tune both functionality and performance. Who is surprised that the result tends to work better than a “random” combination of whatever versions happened to be in a Linux distribution at a certain, random point in time when a distribution release was put together? + +[Desktop environments][13] could greatly increase usability, not only for AppImages, but also for any other kind of “side-loaded” applications that are not being installed. Just see how a desktop environments handles double-clicking on an executable file that is missing the executable bit. Some are doing a great job in this regard, like [Deepin Linux][14]. Stuff tends to “just work” there as it should. + +Finally, I am currently working on a new set of tools written in Go which I hope will greatly simplify, and make yet more enjoyable, the production and consumption of AppImages. My goal here is to make things less complex for users, remove the need for configuration, make things “just work”, like on the early Macintoshes. Are there any Go developers out here interested to join the effort? + +_**It’s FOSS: I can see there is a website that lists available AppImage applications. Do you have plans to integrate it with other software managers on Linux or create a software manager for AppImage?**_ + +**Simon:** [appimage.github.io][15] lists AppImages that have passed my compatibility tests on the oldest still-supported Ubuntu LTS release. Projects creating app stores or software managers are free to use this data. Myself, I am not much interested in those things as I always download AppImages right from the respective project’s download pages. My typical AppImage discovery goes like this: + + 1. Read on Twitter that PrusaSlicer has this cool new feature + 2. Go to the PrusaSlicer GitHub project and read the release notes there + 3. While there, download the AppImage and have it running a few seconds later + + + +So for me personally, I have no need for app centers and app stores, but if people like them, they are free to put AppImages in there. I just never felt the need… + +_**It’s FOSS: What plans do you have for AppImage in future (new features that you plan to add)?**_ + +**Simon:** Simplify things even more, remove configuration options, make things “just work”. Reduce the number of GitHub projects needed to get the core AppImage experience for producing and consuming AppImages, including aspects like binary delta updates, sandboxing, etc. Improve usability. + +_**It’s FOSS: Does AppImage project makes money? What kind of support (if any) do you seek from the end users?**_ + +**Simon:** No, AppImage makes no money whatsoever. + +I’ll just request the readers to spread the word. Tell your favorite application’s authors that you’d like to see an AppImage, and why. + +* * * + +Team It’s FOSS congratulates Simon for his hard work. Please feel free to convey any message and queries to him in the comment section. + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/appimage-interview/ + +作者:[Abhishek Prakash][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://itsfoss.com/author/abhishek/ +[b]: https://github.com/lujun9972 +[1]: https://appimage.org/ +[2]: https://itsfoss.com/use-appimage-linux/ +[3]: https://itsfoss.com/install-deb-files-ubuntu/ +[4]: https://getfedora.org/ +[5]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/02/appimage_simon_interview.jpg?ssl=1 +[6]: https://en.wikipedia.org/wiki/Macintosh +[7]: https://itsfoss.com/linus-torvalds-facts/ +[8]: https://itsfoss.com/install-snap-linux/ +[9]: https://flatpak.org/ +[10]: https://canonical.com/ +[11]: https://www.redhat.com/en +[12]: https://itsfoss.com/nitrux-linux-overview/ +[13]: https://itsfoss.com/best-linux-desktop-environments/ +[14]: https://www.deepin.org/en/ +[15]: https://appimage.github.io/ diff --git a/sources/tech/20191227 Top CI-CD resources to set you up for success.md b/sources/tech/20191227 Top CI-CD resources to set you up for success.md deleted file mode 100644 index 7c4d0db4db..0000000000 --- a/sources/tech/20191227 Top CI-CD resources to set you up for success.md +++ /dev/null @@ -1,57 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (Morisun029) -[#]: reviewer: (wxy) -[#]: publisher: (wxy) -[#]: url: (https://linux.cn/article-11875-1.html) -[#]: subject: (Top CI/CD resources to set you up for success) -[#]: via: (https://opensource.com/article/19/12/cicd-resources) -[#]: author: (Jessica Cherry https://opensource.com/users/jrepka) - -顶级 CI / CD 资源,助你成功 -====== - -> 随着企业期望实现无缝、灵活和可扩展的部署,持续集成和持续部署成为 2019 年的关键主题。 - -![Plumbing tubes in many directions][1] - -对于 CI/CD 和 DevOps 来说,2019 年是非常棒的一年。Opensource.com 的作者分享了他们专注于无缝、灵活和可扩展部署时是如何朝着敏捷和 scrum 方向发展的。以下是我们 2019 年发布的 CI/CD 文章中的一些重要文章。 - -### 学习和提高你的 CI/CD 技能 - -我们最喜欢的一些文章集中在 CI/CD 的实操经验上,并涵盖了许多方面。通常以 [Jenkins][2] 管道开始,Bryant Son 的文章《[用 Jenkins 构建 CI/CD 管道][3]》将为你提供足够的经验,以开始构建你的第一个管道。Daniel Oh 在《[用 DevOps 管道进行自动验收测试][4]》一文中,提供了有关验收测试的重要信息,包括可用于自行测试的各种 CI/CD 应用程序。我写的《[安全扫描 DevOps 管道][5]》非常简短,其中简要介绍了如何使用 Jenkins 平台在管道中设置安全性。 - -### 交付工作流程 - -正如 Jithin Emmanuel 在《[Screwdriver:一个用于持续交付的可扩展构建平台][6]》中分享的,在学习如何使用和提高你的 CI/CD 技能方面,工作流程很重要,特别是当涉及到管道时。Emily Burns 在《[为什么 Spinnaker 对 CI/CD 很重要][7]》中解释了灵活地使用 CI/CD 工作流程准确构建所需内容的原因。Willy-Peter Schaub 还盛赞了为所有产品创建统一管道的想法,以便《[在一个 CI/CD 管道中一致地构建每个产品][8]》。这些文章将让你很好地了解在团队成员加入工作流程后会发生什么情况。 - -### CI/CD 如何影响企业 - -2019 年也是认识到 CI/CD 的业务影响以及它是如何影响日常运营的一年。Agnieszka Gancarczyk 分享了 Red Hat 《[小型 Scrum vs. 大型 Scrum][9]》的调查结果, 包括受访者对 Scrum、敏捷运动及对团队的影响的不同看法。Will Kelly 的《[持续部署如何影响整个组织][10]》,也提及了开放式沟通的重要性。Daniel Oh 也在《[DevOps 团队必备的 3 种指标仪表板][11]》中强调了指标和可观测性的重要性。最后是 Ann Marie Fred 的精彩文章《[不在生产环境中测试?要在生产环境中测试!][12]》详细说明了在验收测试前在生产环境中测试的重要性。 - -感谢许多贡献者在 2019 年与 Opensource 的读者分享他们的见解,我期望在 2020 年里从他们那里了解更多有关 CI/CD 发展的信息。 - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/19/12/cicd-resources - -作者:[Jessica Cherry][a] -选题:[lujun9972][b] -译者:[Morisun029](https://github.com/Morisun029) -校对:[wxy](https://github.com/wxy) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/jrepka -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/plumbing_pipes_tutorial_how_behind_scenes.png?itok=F2Z8OJV1 (Plumbing tubes in many directions) -[2]: https://jenkins.io/ -[3]: https://linux.cn/article-11546-1.html -[4]: https://opensource.com/article/19/4/devops-pipeline-acceptance-testing -[5]: https://opensource.com/article/19/7/security-scanning-your-devops-pipeline -[6]: https://opensource.com/article/19/3/screwdriver-cicd -[7]: https://opensource.com/article/19/8/why-spinnaker-matters-cicd -[8]: https://opensource.com/article/19/7/cicd-pipeline-rule-them-all -[9]: https://opensource.com/article/19/3/small-scale-scrum-vs-large-scale-scrum -[10]: https://opensource.com/article/19/7/organizational-impact-continuous-deployment -[11]: https://linux.cn/article-11183-1.html -[12]: https://opensource.com/article/19/5/dont-test-production \ No newline at end of file diff --git a/sources/tech/20200122 Get your RSS feeds and podcasts in one place with this open source tool.md b/sources/tech/20200122 Get your RSS feeds and podcasts in one place with this open source tool.md deleted file mode 100644 index 7ff7ca5e30..0000000000 --- a/sources/tech/20200122 Get your RSS feeds and podcasts in one place with this open source tool.md +++ /dev/null @@ -1,72 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Open source vs. proprietary: What's the difference?) -[#]: via: (https://opensource.com/article/20/2/open-source-vs-proprietary) -[#]: author: (Seth Kenlon https://opensource.com/users/seth) - -Open source vs. proprietary: What's the difference? -====== -Need four good reasons to tell your friends to use open source? Here's -how to make your case. -![Doodles of the word open][1] - -There's a lot to be learned from open source projects. After all, managing hundreds of disparate, asynchronous commits and bugs doesn't happen by accident. Someone or something has to coordinate releases, and keep all the code and project roadmaps organized. It's a lot like life. You have lots of tasks demanding your attention, and you have to tend to each in turn. To ensure everything gets done before its deadline, you try to stay organized and focused. - -Fortunately, there are [applications out there][2] designed to help with that sort of thing, and many apply just as well to real life as they do to software. - -Here are some reasons for choosing [open tools][3] when improving personal or project-based organization. - -### Data ownership - -It's rarely profitable for proprietary tools to provide you with [data][4] dumps. Some products, usually after a long battle with their users (and sometimes a lawsuit), provide ways to extract your data from them. But the real issue isn't whether a company lets you extract data; it's the fact that the capability to get to your data isn't guaranteed in the first place. It's your data, and when it's literally what you do each day, it is, in a way, your life. Nobody should have primary access to that but you, so why should you have to petition a company for a copy? - -Using an open source tool ensures you have priority access to your own activities. When you need a copy of something, you already have it. When you need to export it from one application to another, you have complete control of how the data is exchanged. If you need to export your schedule from a calendar into your kanban board, you can manipulate and process the data to fit. You don't have to wait for functionality to be added to the app, because you own the data, the database, and the app. - -### Working for yourself - -When you use open source tools, you often end up improving them, sometimes whether you know it or not. You may not (or you may!) download the source and hack on code, but you probably fall into a way of using the tool that works best for you. You optimize your interaction with the tool. The unique way you interact with your tooling creates a kind of meta-tool: you haven't changed the software, but you've adapted it and yourself in ways that the project author and a dozen other users never imagined. Everyone does this with whatever software they rely upon, and it's why sitting at someone else's computer to use a familiar software (or even just looking over someone's shoulder) often feels foreign, like you're using a different version of the application than you're used to. - -When you do this with proprietary software, you're either contributing to someone else's marketplace for free, or you're adjusting your own behavior based on forces outside your own control. When you optimize an open source tool, both the software and the interaction belong to you. - -### The right to not upgrade - -Tools change. It's the way of things. - -Change can be frustrating, but it can be crippling when a service changes so severely that it breaks your workflow. A proprietary service has and maintains every right to change its product, and you explicitly accept this by using the product. If your favorite accounting software or scheduling web app changes its interface or its output options, you usually have no recourse but to adapt or stop using the service. Proprietary services reserve the right to remove features, arbitrarily and without warning, and it's not uncommon for companies to start out with an open API and strong compatibility with open source, only to drop these conveniences once its customer base has reached critical mass. - -Open source changes, too. Changes in open source can be frustrating, too, and it can even drive users to alternative open source solutions. The difference is that when open source changes, you still own the unchanged code base. More importantly, lots of other people do too, and if there's enough desire for it, the project can be forked. There are several famous examples of this, but admittedly there are just as many examples where the demand was _not_ great enough, and users essentially had to adapt. - -Even so, users are never truly forced to do anything in open source. If you want to hack together an old version of your mission-critical service on an old distro running ancient libraries in a virtual machine, you can do that because you own the code. When a proprietary service changes, you have no choice but to follow. - -With open source, you can choose to forge your own path when necessary or follow the developers when convenient. - -### Open for collaboration - -Proprietary services can affect others in ways you may not realize. Closed source tools are accidentally insidious. If you use a proprietary product to manage your schedule or your recipes or your library, or you use a proprietary font in your graphic design or website, then the moment you need to coordinate with someone else, you are essentially forcing them to sign up for the same proprietary service because proprietary services usually require accounts. Of course, the same is sometimes true for an open source solution, but it's not common for open source products to collect and sell user data the way proprietary vendors do, so the stakes aren't quite the same. - -### Independence - -Ultimately, the open source advantage is one of independence for you and for those you want to collaborate with. Not everyone uses open source, and even if everyone did not everyone would use the exact same tool or the same assets, so there will always be some negotiation when sharing data. However, by keeping your data and projects open, you enable everyone (your future self included) to contribute. - -What steps do you take to ensure your work is open and accessible? Tell us in the comments! - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/2/open-source-vs-proprietary - -作者:[Seth Kenlon][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/seth -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/EDUCATION_doodles.png?itok=W_0DOMM4 (Doodles of the word open) -[2]: https://opensource.com/article/20/1/open-source-productivity-tools -[3]: https://opensource.com/tags/tools -[4]: https://opensource.com/tags/analytics-and-metrics \ No newline at end of file diff --git a/sources/tech/20200124 Run multiple consoles at once with this open source window environment.md b/sources/tech/20200124 Run multiple consoles at once with this open source window environment.md deleted file mode 100644 index 97c2849b60..0000000000 --- a/sources/tech/20200124 Run multiple consoles at once with this open source window environment.md +++ /dev/null @@ -1,115 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: ( ) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Run multiple consoles at once with this open source window environment) -[#]: via: (https://opensource.com/article/20/1/multiple-consoles-twin) -[#]: author: (Kevin Sonney https://opensource.com/users/ksonney) - -Run multiple consoles at once with this open source window environment -====== -Simulate the old-school DESQview experience with twin in the fourteenth -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. - -### Overcome "one screen, one app" limits with twin - -Who remembers [DESQview][2]? It allowed for things in DOS we take for granted now in Windows, Linux, and MacOS—namely the ability to run and have multiple programs running onscreen at once. In my early days running a dial-up BBS, DESQview was a necessity—it enabled me to have the BBS running in the background while doing other things in the foreground. For example, I could be working on new features or setting up new external programs while someone was dialed in without impacting their experience. Later, in my early days in support, I could have my work email ([DaVinci email on MHS][3]), the support ticket system, and other DOS programs running all at once. It was amazing! - -![twin][4] - -Running multiple console applications has come a long way since then. But applications like [tmux][5] and [Screen][6] still follow the "one screen, one app" kind of display. OK, yes, tmux has screen splitting and panes, but not like DESQview, with the ability to "float" windows over others, and I, for one, miss that. - -Enter [twin][7], the text-mode window environment. This relatively young project is, in my opinion, a spiritual successor to DESQview. It supports console and graphical environments, as well as the ability to detach from and reattach to sessions. It's not as easy to set up as some things, but it will run on most modern operating systems. - -Twin is installed from source (for now). But first, you need to install the required development libraries. The library names will vary by operating system. The following example shows it for my Ubuntu 19.10 installation. Once the libraries are installed, check out the twin source from Git and run **./configure** and **make**, which should auto-detect everything and build twin: - - -``` -sudo apt install libx11-dev libxpm-dev libncurses-dev zlib1g-dev libgpm-dev -git clone [git@github.com][8]:cosmos72/twin.git -cd twin -./configure -make -sudo make install -``` - -Note: If you are compiling this on MacOS or BSD, you will need to comment out **#define socklen_t int** in the files **include/Tw/autoconf.h** and **include/twautoconf.h** before running **make**. This should be addressed by [twin issue number 57][9]. - -![twin text mode][10] - -Invoking twin for the first time can be a bit of a challenge. You need to tell it what kind of display it is using with the **\--hw** parameter. For example, to launch a text-mode version of twin, you would enter **twin --hw=tty,TERM=linux**. The **TERM** variable specifies an override to the current terminal variable in your shell. To launch a graphical version, run **twin --hw=X@$DISPLAY**. On Linux, twin mostly "just works," and on MacOS, it mostly only works in terminals. - -The _real_ fun comes with the ability to attach to running sessions with the **twattach** and **twdisplay** commands. They allow you to attach to a running twin session somewhere else. For example, on my Mac, I can run the following command to connect to the twin session running on my demo box: - - -``` -`twdisplay --twin@20days2020.local:0 --hw=tty,TERM=linux` -``` - -![remote twin session][11] - -With some extra work, you can also use it as a login shell in place of [getty][12] on consoles. This requires the gdm mouse daemon, the twdm application (included), and a little extra configuration. On systems that use systemd, start by installing and enabling gdm (if it isn't already installed). Then use systemctl to create an override for a console (I used tty6). The commands must be run as the root user; on Ubuntu, they look something like this: - - -``` -apt install gdm -systemctl enable gdm -systemctl start gdm -systemctl edit getty@tty6 -``` - -The **systemctl edit getty@tty6** command will open an empty file named **override.conf**. This defines systemd service settings to override the default for console 6. Update the contents to: - - -``` -[service] -ExecStart= -ExecStart=-/usr/local/sbin/twdm --hw=tty@/dev/tty6,TERM=linux -StandardInput=tty -StandardOutput=tty -``` - -Now, reload systemd and restart tty6 to get a twin login prompt: - - -``` -systemctl daemon-reload -systemctl restart getty@tty6 -``` - -![twin][13] - -This will launch a twin session for the user who logs in. I do not recommend this for a multi-user system, but it is pretty cool for a personal desktop. And, by using **twattach** and **twdisplay**, you can access that session from the local GUI or remote desktops. - -I think twin is pretty darn cool. It has some rough edges, but the basic functionality is there, and it has some pretty good documentation. Also, it scratches the itch I have for a DESQview-like experience on modern operating systems. I look forward to improvements over time, and I hope you like it as much as I do. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/1/multiple-consoles-twin - -作者:[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://en.wikipedia.org/wiki/DESQview -[3]: https://en.wikipedia.org/wiki/Message_Handling_System -[4]: https://opensource.com/sites/default/files/uploads/productivity_14-1.png (twin) -[5]: https://github.com/tmux/tmux/wiki -[6]: https://www.gnu.org/software/screen/ -[7]: https://github.com/cosmos72/twin -[8]: mailto:git@github.com -[9]: https://github.com/cosmos72/twin/issues/57 -[10]: https://opensource.com/sites/default/files/uploads/productivity_14-2.png (twin text mode) -[11]: https://opensource.com/sites/default/files/uploads/productivity_14-3.png (remote twin session) -[12]: https://en.wikipedia.org/wiki/Getty_(Unix) -[13]: https://opensource.com/sites/default/files/uploads/productivity_14-4.png (twin) diff --git a/sources/tech/20200203 Give an old MacBook new life with Linux.md b/sources/tech/20200203 Give an old MacBook new life with Linux.md deleted file mode 100644 index 99bddf8fab..0000000000 --- a/sources/tech/20200203 Give an old MacBook new life with Linux.md +++ /dev/null @@ -1,81 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (qianmingtian) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Give an old MacBook new life with Linux) -[#]: via: (https://opensource.com/article/20/2/macbook-linux-elementary) -[#]: author: (Don Watkins https://opensource.com/users/don-watkins) - -Give an old MacBook new life with Linux -====== -Elementary OS's latest release, Hera, is an impressive platform for -resurrecting an outdated MacBook. -![Coffee and laptop][1] - -When I installed Apple's [MacOS Mojave][2], it slowed my formerly reliable MacBook Air to a crawl. My computer, released in 2015, has 4GB RAM, an i5 processor, and a Broadcom 4360 wireless card, but Mojave proved too much for my daily driver—it made working with [GnuCash][3] impossible, and it whetted my appetite to return to Linux. I am glad I did, but I felt bad that I had this perfectly good MacBook lying around unused. - -I tried several Linux distributions on my MacBook Air, but there was always a gotcha. Sometimes it was the wireless card; another time, it was a lack of support for the touchpad. After reading some good reviews, I decided to try [Elementary OS][4] 5.0 (Juno). I [made a boot drive][5] with my USB creator and inserted it into the MacBook Air. I got to a live desktop, and the operating system recognized my Broadcom wireless chipset—I thought this just might work! - -I liked what I saw in Elementary OS; its [Pantheon][6] desktop is really great, and its look and feel are familiar to Apple users—it has a dock at the bottom of the display and icons that lead to useful applications. I liked the preview of what I could expect, so I decided to install it—and then my wireless disappeared. That was disappointing. I really liked Elementary OS, but no wireless is a non-starter. - -Fast-forward to December 2019, when I heard a review on the [Linux4Everyone][7] podcast about Elementary's latest release, v.5.1 (Hera) bringing a MacBook back to life. So, I decided to try again with Hera. I downloaded the ISO, created the bootable drive, plugged it in, and this time the operating system recognized my wireless card. I was in business! - -![MacBook Air with Hera][8] - -I was overjoyed that my very light, yet powerful MacBook Air was getting a new life with Linux. I have been exploring Elementary OS in greater detail, and I can tell you that I am impressed. - -### Elementary OS's features - -According to [Elementary's blog][9], "The newly redesigned login and lock screen greeter looks sharper, works better, and fixes many reported issues with the previous greeter including focus issues, HiDPI issues, and better localization. The new design in Hera was in response to user feedback from Juno, and enables some nice new features." - -"Nice new features" in an understatement—Elementary OS easily has one of the best-designed Linux user interfaces I have ever seen. A System Settings icon is on the dock by default; it is easy to change the settings, and soon I had the system configured to my liking. I need larger text sizes than the defaults, and the Universal Access controls are easy to use and allow me to set large text and high contrast. I can also adjust the dock with larger icons and other options. - -![Elementary OS's Settings screen][10] - -Pressing the Mac's Command key brings up a list of keyboard shortcuts, which is very helpful to new users. - -![Elementary OS's Keyboard shortcuts][11] - -Elementary OS ships with the [Epiphany][12] web browser, which I find quite easy to use. It's a bit different than Chrome, Chromium, or Firefox, but it is more than adequate. - -For security-conscious users (as we should all be), Elementary OS's Security and Privacy settings provide multiple options, including a firewall, history, locking, automatic deletion of temporary and trash files, and an on/off switch for location services. - -![Elementary OS's Privacy and Security screen][13] - -### More on Elementary OS - -Elementary OS was originally released in 2011, and its latest version, Hera, was released on December 3, 2019. [Cassidy James Blaede][14], Elementary's co-founder and CXO, is the operating system's UX architect. Cassidy loves to design and build useful, usable, and delightful digital products using open technologies. - -Elementary OS has excellent user [documentation][15], and its code (licensed under GPL 3.0) is available on [GitHub][16]. Elementary OS encourages involvement in the project, so be sure to reach out and [join the community][17]. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/2/macbook-linux-elementary - -作者:[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/coffee_cafe_brew_laptop_desktop.jpg?itok=G-n1o1-o (Coffee and laptop) -[2]: https://en.wikipedia.org/wiki/MacOS_Mojave -[3]: https://www.gnucash.org/ -[4]: https://elementary.io/ -[5]: https://opensource.com/life/14/10/test-drive-linux-nothing-flash-drive -[6]: https://opensource.com/article/19/12/pantheon-linux-desktop -[7]: https://www.linux4everyone.com/20-macbook-pro-elementary-os -[8]: https://opensource.com/sites/default/files/uploads/macbookair_hera.png (MacBook Air with Hera) -[9]: https://blog.elementary.io/introducing-elementary-os-5-1-hera/ -[10]: https://opensource.com/sites/default/files/uploads/elementaryos_settings.png (Elementary OS's Settings screen) -[11]: https://opensource.com/sites/default/files/uploads/elementaryos_keyboardshortcuts.png (Elementary OS's Keyboard shortcuts) -[12]: https://en.wikipedia.org/wiki/GNOME_Web -[13]: https://opensource.com/sites/default/files/uploads/elementaryos_privacy-security.png (Elementary OS's Privacy and Security screen) -[14]: https://github.com/cassidyjames -[15]: https://elementary.io/docs/learning-the-basics#learning-the-basics -[16]: https://github.com/elementary -[17]: https://elementary.io/get-involved diff --git a/sources/tech/20200206 3 ways to use PostgreSQL commands.md b/sources/tech/20200206 3 ways to use PostgreSQL commands.md new file mode 100644 index 0000000000..645baf65e0 --- /dev/null +++ b/sources/tech/20200206 3 ways to use PostgreSQL commands.md @@ -0,0 +1,230 @@ +[#]: collector: (lujun9972) +[#]: translator: (Morisun029) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (3 ways to use PostgreSQL commands) +[#]: via: (https://opensource.com/article/20/2/postgresql-commands) +[#]: author: (Greg Pittman https://opensource.com/users/greg-p) + +3 ways to use PostgreSQL commands +====== +Whether you need something simple, like a shopping list, or complex, +like a color swatch generator, PostgreSQL commands make it easy. +![Team checklist and to dos][1] + +In _[Getting started with PostgreSQL][2]_, I explained how to install, set up, and begin using the open source database software. But there's a lot more you can do with commands in [PostgreSQL][3]. + +For example, I use Postgres to keep track of my grocery shopping list. I do most of the grocery shopping in our home, and the bulk of it happens once a week. I go to several places to buy the things on my list because each store offers a particular selection or quality or maybe a better price. Initially, I made an HTML form page to manage my shopping list, but it couldn't save my entries. So, I had to wait to make my list all at once, and by then I usually forgot some items we need or I want. + +Instead, with PostgreSQL, I can enter bits when I think of them as the week goes on and print out the whole thing right before I go shopping. Here's how you can do that, too. + +### Create a simple shopping list + +First, enter the database with the **psql **command, then create a table for your list with: + + +``` +`Create table groc (item varchar(20), comment varchar(10));` +``` + +Type commands like the following to add items to your list: + + +``` +insert into groc values ('milk', 'K'); +insert into groc values ('bananas', 'KW'); +``` + +There are two pieces of information (separated by a comma) inside the parentheses: the item you want to buy and letters indicating where you want to buy it and whether it's something you usually buy every week (W). + +Since **psql** has a history, you can press the Up arrow and edit the data between the parentheses instead of having to type the whole line for each item. + +After entering a handful of items, check what you've entered with: + + +``` +Select * from groc order by comment; + +      item      | comment +\----------------+--------- + ground coffee  | H + butter         | K + chips          | K + steak          | K + milk           | K + bananas        | KW + raisin bran    | KW + raclette       | L + goat cheese    | L + onion          | P + oranges        | P + potatoes       | P + spinach        | PW + broccoli       | PW + asparagus      | PW + cucumber       | PW + sugarsnap peas | PW + salmon         | S +(18 rows) +``` + +This command orders the results by the _comment_ column so that the items are grouped by where you buy them to make it easier to shop. + +By using a W to indicate your weekly purchases, you can keep your weekly items on the list when you clear out the table to prepare for the next week's list. To so that, enter: + + +``` +`delete from groc where comment not like '%W';` +``` + +Notice that in PostgreSQL, **%** is the wildcard character (instead of an asterisk). So, to save typing, you might type: + + +``` +`delete from groc where item like 'goat%';` +``` + +You can't use **item = 'goat%'**; it won't work. + +When you're ready to shop, output your list to print it or send it to your phone with: + + +``` +\o groclist.txt +select * from groc order by comment; +\o +``` + +The last command, **\o**, with nothing afterward, resets the output to the command line. Otherwise, all output will continue to go to the groc file you created. + +### Analyze complex tables + +This item-by-item entry may be okay for short tables, but what about really big ones? A couple of years ago, I was helping the team at [FreieFarbe.de][4] to create a swatchbook of the free colors (freieFarbe means "free colors" in German) from its HLC color palette, where virtually any imaginable print color can be specified by its hue, luminosity (brightness), and chroma (saturation). The result was the [HLC Color Atlas][5], and here's how we did it. + +The team sent me files with color specifications so I could write Python scripts that would work with Scribus to generate the swatchbooks of color patches easily. One example started like: + + +``` +HLC, C, M, Y, K +H010_L15_C010, 0.5, 49.1, 0.1, 84.5 +H010_L15_C020, 0.0, 79.7, 15.1, 78.9 +H010_L25_C010, 6.1, 38.3, 0.0, 72.5 +H010_L25_C020, 0.0, 61.8, 10.6, 67.9 +H010_L25_C030, 0.0, 79.5, 18.5, 62.7 +H010_L25_C040, 0.4, 94.2, 17.3, 56.5 +H010_L25_C050, 0.0, 100.0, 15.1, 50.6 +H010_L35_C010, 6.1, 32.1, 0.0, 61.8 +H010_L35_C020, 0.0, 51.7, 8.4, 57.5 +H010_L35_C030, 0.0, 68.5, 17.1, 52.5 +H010_L35_C040, 0.0, 81.2, 22.0, 46.2 +H010_L35_C050, 0.0, 91.9, 20.4, 39.3 +H010_L35_C060, 0.1, 100.0, 17.3, 31.5 +H010_L45_C010, 4.3, 27.4, 0.1, 51.3 +``` + +This is slightly modified from the original, which separated the data with tabs. I transformed it into a CSV (comma-separated value) file, which I prefer to use with Python. (CSV files are also very useful because they can be imported easily into a spreadsheet program.) + +In each line, the first item is the color name, and it's followed by its C, M, Y, and K color values. The file consisted of 1,793 colors, and I wanted a way to analyze the information to get a sense of the range of values. This is where PostgreSQL comes into play. I did not want to enter all of this data manually—I don't think I could without errors (and headaches). Fortunately, PostgreSQL has a command for this. + +My first step was to create the database with: + + +``` +`Create table hlc_cmyk (color varchar(40), c decimal, m decimal, y decimal, k decimal);` +``` + +Then I brought in the data with: + + +``` +`\copy  hlc_cmyk from '/home/gregp/HLC_Atlas_CMYK_SampleData.csv' with (header, format CSV);` +``` + +The backslash at the beginning is there because using the plain **copy** command is restricted to root and the Postgres superuser. In the parentheses, **header** means the first line contains headings and should be ignored, and **CSV** means the file format is CSV. Note that parentheses are not required around the color name in this method. + +If the operation is successful, I see a message that says **COPY NNNN**, where the N's refer to the number of rows inserted into the table. + +Finally, I can query the table with: + + +``` +select * from hlc_cmyk; + +     color     |   c   |   m   |   y   |  k   +\---------------+-------+-------+-------+------ + H010_L15_C010 |   0.5 |  49.1 |   0.1 | 84.5 + H010_L15_C020 |   0.0 |  79.7 |  15.1 | 78.9 + H010_L25_C010 |   6.1 |  38.3 |   0.0 | 72.5 + H010_L25_C020 |   0.0 |  61.8 |  10.6 | 67.9 + H010_L25_C030 |   0.0 |  79.5 |  18.5 | 62.7 + H010_L25_C040 |   0.4 |  94.2 |  17.3 | 56.5 + H010_L25_C050 |   0.0 | 100.0 |  15.1 | 50.6 + H010_L35_C010 |   6.1 |  32.1 |   0.0 | 61.8 + H010_L35_C020 |   0.0 |  51.7 |   8.4 | 57.5 + H010_L35_C030 |   0.0 |  68.5 |  17.1 | 52.5 +``` + +It goes on like this for all 1,793 rows of data. In retrospect, I can't say that this query was absolutely necessary for the HLC and Scribus task, but it allayed some of my anxieties about the project. + +To generate the HLC Color Atlas, I automated creating the color charts with Scribus for the 13,000+ colors in those pages of color swatches. + +I could have used the **copy** command to output my data: + + +``` +`\copy hlc_cmyk to '/home/gregp/hlc_cmyk_backup.csv' with (header, format CSV);` +``` + +I also could restrict the output according to certain values with a **where** clause. + +For example, the following command will only send the table values for the hues that begin with H10. + + +``` +`\copy hlc_cmyk to '/home/gregp/hlc_cmyk_backup.csv' with (header, format CSV) where color like 'H10%';` +``` + +### Back up or transfer a database or table + +The final command I will mention here is **pg_dump**, which is used to back up a PostgreSQL database and runs outside of the **psql** console. For example: + + +``` +pg_dump gregp -t hlc_cmyk > hlc.out +pg_dump gregp > dball.out +``` + +The first line exports the **hlc_cmyk** table along with its structure. The second line dumps all the tables inside the **gregp** database. This is very useful for backing up or transferring a database or tables.  + +To transfer a database or table to another computer, first, create a database on the other computer (see my "[getting started][2]" article for details), then do the reverse process: + + +``` +`psql -d gregp -f dball.out` +``` + +This creates all the tables and enters the data in one step. + +### Conclusion + +In this article, we have seen how to use the **WHERE** parameter to restrict operations, along with the use of the PostgreSQL wildcard character **%**. We've also seen how to load a large amount of data into a table, then output some or all of the table data to a file, or even your entire database with all its individual tables. + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/20/2/postgresql-commands + +作者:[Greg Pittman][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/greg-p +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/todo_checklist_team_metrics_report.png?itok=oB5uQbzf (Team checklist and to dos) +[2]: https://opensource.com/article/19/11/getting-started-postgresql +[3]: https://www.postgresql.org/ +[4]: http://freiefarbe.de +[5]: https://www.freiefarbe.de/en/thema-farbe/hlc-colour-atlas/ diff --git a/sources/tech/20200207 What is WireGuard- Why Linux Users Going Crazy Over it.md b/sources/tech/20200207 What is WireGuard- Why Linux Users Going Crazy Over it.md index f80298dbb7..42da66203b 100644 --- a/sources/tech/20200207 What is WireGuard- Why Linux Users Going Crazy Over it.md +++ b/sources/tech/20200207 What is WireGuard- Why Linux Users Going Crazy Over it.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (geekpi) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) diff --git a/sources/tech/20200210 Install All Essential Media Codecs in Ubuntu With This Single Command -Beginner-s Tip.md b/sources/tech/20200210 Install All Essential Media Codecs in Ubuntu With This Single Command -Beginner-s Tip.md deleted file mode 100644 index ecbe1dabe3..0000000000 --- a/sources/tech/20200210 Install All Essential Media Codecs in Ubuntu With This Single Command -Beginner-s Tip.md +++ /dev/null @@ -1,114 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (geekpi) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Install All Essential Media Codecs in Ubuntu With This Single Command [Beginner’s Tip]) -[#]: via: (https://itsfoss.com/install-media-codecs-ubuntu/) -[#]: author: (Abhishek Prakash https://itsfoss.com/author/abhishek/) - -Install All Essential Media Codecs in Ubuntu With This Single Command [Beginner’s Tip] -====== - -If you have just installed Ubuntu or some other [Ubuntu flavors][1] like Kubuntu, Lubuntu etc, you’ll notice that your system doesn’t play some audio or video file. - -For video files, you can [install VLC on Ubuntu][2]. [VLC][3] one of the [best video players for Linux][4] and can play almost any video file format. But you’ll still have troubles with audio media files and flash player. - -The good thing is that [Ubuntu][5] provides a single package to install all the essential media codecs: ubuntu-restricted-extras. - -![][6] - -### What is Ubuntu Restricted Extras? - -The ubuntu-restricted-extras is a software package that consists various essential software like flash plugin, [unrar][7], [gstreamer][8], mp4, codecs for [Chromium browser in Ubuntu][9] etc. - -Since these software are not open source and some of them involve software patents, Ubuntu doesn’t install them by default. You’ll have to use multiverse repository, the software repository specifically created by Ubuntu to provide non-open source software to its users. - -Please read this article to [learn more about various Ubuntu repositories][10]. - -### How to install Ubuntu Restricted Extras? - -I find it surprising that the software center doesn’t list Ubuntu Restricted Extras. In any case, you can install the package using command line and it’s very simple. - -Open a terminal by searching for it in the menu or using the [terminal keyboard shortcut Ctrl+Alt+T][11]. - -Since ubuntu-restrcited-extras package is available in the multiverse repository, you should verify that the multiverse repository is enabled on your system: - -``` -sudo add-apt-repository multiverse -``` - -And then you can install it in Ubuntu default edition using this command: - -``` -sudo apt install ubuntu-restricted-extras -``` - -When you enter the command, you’ll be asked to enter your password. When _**you type the password, nothing is displayed on the screen**_. That’s normal. Type your password and press enter. - -It will show a huge list of packages to be installed. Press enter to confirm your selection when it asks. - -You’ll also encounter an [EULA][12] (End User License Agreement) screen like this: - -![Press Tab key to select OK and press Enter key][13] - -It could be overwhelming to navigate this screen but don’t worry. Just press tab and it will highlight the options. When the correct options are highlighted, press enter to confirm your selection. - -![Press Tab key to highlight Yes and press Enter key][14] - -Once the process finishes, you should be able to play MP3 and other media formats thanks to newly installed media codecs. - -##### Installing restricted extra package on Kubuntu, Lubuntu, Xubuntu - -Do keep in mind that Kubuntu, Lubuntu and Xubuntu has this package available with their own respective names. They should have just used the same name but they don’t unfortunately. - -On Kubuntu, use this command: - -``` -sudo apt install kubuntu-restricted-extras -``` - -On Lubuntu, use: - -``` -sudo apt install lubuntu-restricted-extras -``` - -On Xubuntu, you should use: - -``` -sudo apt install xubuntu-restricted-extras -``` - -I always recommend getting ubuntu-restricted-extras as one of the [essential things to do after installing Ubuntu][15]. It’s good to have a single command to install multiple codecs in Ubuntu. - -I hope you like this quick tip in the Ubuntu beginner series. I’ll share more such tips in the future. - --------------------------------------------------------------------------------- - -via: https://itsfoss.com/install-media-codecs-ubuntu/ - -作者:[Abhishek Prakash][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://itsfoss.com/author/abhishek/ -[b]: https://github.com/lujun9972 -[1]: https://itsfoss.com/which-ubuntu-install/ -[2]: https://itsfoss.com/install-latest-vlc/ -[3]: https://www.videolan.org/index.html -[4]: https://itsfoss.com/video-players-linux/ -[5]: https://ubuntu.com/ -[6]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/02/Media_Codecs_in_Ubuntu.png?ssl=1 -[7]: https://itsfoss.com/use-rar-ubuntu-linux/ -[8]: https://gstreamer.freedesktop.org/ -[9]: https://itsfoss.com/install-chromium-ubuntu/ -[10]: https://itsfoss.com/ubuntu-repositories/ -[11]: https://itsfoss.com/ubuntu-shortcuts/ -[12]: https://en.wikipedia.org/wiki/End-user_license_agreement -[13]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/02/installing_ubuntu_restricted_extras.jpg?ssl=1 -[14]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/02/installing_ubuntu_restricted_extras_1.jpg?ssl=1 -[15]: https://itsfoss.com/things-to-do-after-installing-ubuntu-18-04/ diff --git a/sources/tech/20200210 Top hacks for the YaCy open source search engine.md b/sources/tech/20200210 Top hacks for the YaCy open source search engine.md deleted file mode 100644 index 7b559e9c5e..0000000000 --- a/sources/tech/20200210 Top hacks for the YaCy open source search engine.md +++ /dev/null @@ -1,100 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (HankChow) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Top hacks for the YaCy open source search engine) -[#]: via: (https://opensource.com/article/20/2/yacy-search-engine-hacks) -[#]: author: (Seth Kenlon https://opensource.com/users/seth) - -Top hacks for the YaCy open source search engine -====== -Rather than adapting to someone else's vision, customize you search -engine for the internet you want with YaCY. -![Browser of things][1] - -In my article about [getting started with YaCy][2], I explained how to install and start using the [YaCy][3] peer-to-peer search engine. One of the most exciting things about YaCy, however, is the fact that it's a local client. Each user owns and operates a node in a globally distributed search engine infrastructure, which means each user is in full control of how they navigate and experience the World Wide Web. - -For instance, Google used to provide the URL google.com/linux as a shortcut to filter searches for Linux-related topics. It was a small feature that many people found useful, but [topical shortcuts were dropped][4] in 2011.  - -YaCy makes it possible to customize your search experience. - -### Customize YaCy - -Once you've installed YaCy, navigate to your search page at **localhost:8090**. To customize your search engine, click the **Administration** button in the top-right corner (it may be concealed in a menu icon on small screens). - -The admin panel allows you to configure how YaCy uses your system resources and how it interacts with other YaCy clients. - -![YaCy profile selector][5] - -For instance, to configure an alternative port and set RAM and disk usage, use the **First steps** menu in the sidebar. To monitor YaCy activity, use the **Monitoring** panel. Most features are discoverable by clicking through the panels, but here are some of my favorites. - -### Search appliance - -Several companies have offered [intranet search appliances][6], but with YaCy, you can implement it for free. Whether you want to search through your own data or to implement a search system for local file shares at your business, you can choose to run YaCy as an internal indexer for files accessible over HTTP, FTP, and SMB (Samba). People in your local network can use your personalized instance of YaCy to find shared files, and none of the data is shared with users outside your network. - -### Network configuration - -YaCy favors isolation and privacy by default. You can adjust how you connect to the peer-to-peer network in the **Network Configuration** panel, which is revealed by clicking the link located at the top of the **Use Case & Account** configuration screen. - -![YaCy network configuration][7] - -### Crawl a site - -Peer-to-peer indexing is user-driven. There's no mega-corporation initiating searches on every accessible page on the internet, so a site isn't indexed until someone deliberately crawls it with YaCy. - -The YaCy client provides two options to help you help crawl the web: you can perform a manual crawl, and you can make YaCy available for suggested crawls. - -![YaCy advanced crawler][8] - -#### Start a manual crawling job - -A manual crawl is when you enter the URL of a site you want to index and start a YaCy crawl job. To do this, click the **Advanced Crawler** link in the **Production** sidebar. Enter one or more URLs, then scroll to the bottom of the page and enable the **Do remote indexing** option. This enables your client to broadcast the URLs it is indexing, so clients that have opted to accept requests can help you perform the crawl. - -To start the crawl, click the **Start New Crawl Job** button at the bottom of the page. I use this method to index sites I use frequently or find useful. - -Once the crawl job starts, YaCy indexes the URLs you enter and stores the index on your local machine. As long as you are running in senior mode (meaning your firewall permits incoming and outgoing traffic on port 8090), your index is available to YaCy users all over the globe. - -#### Join in on a crawl - -While some very dedicated YaCy senior users may crawl the internet compulsively, there are a _lot_ of sites out there in the world. It might seem impossible to match the resources of popular spiders and bots, but because YaCy has so many users, they can band together as a community to index more of the internet than any one user could do alone. If you activate YaCy to broadcast requests for site crawls, participating clients can work together to crawl sites you might not otherwise think to crawl manually. - -To configure your client to accept jobs from others, click the **Advanced Crawler** link in the left sidebar menu. In the **Advanced Crawler** panel, click the **Remote Crawling** link under the **Network Harvesting** heading at the top of the page. Enable remote crawls by placing a tick in the checkbox next to the **Load** setting. - -![YaCy remote crawling][9] - -### YaCy monitoring and more - -YaCy is a surprisingly robust search engine, providing you with the opportunity to theme and refine your experience in nearly any way you could want. You can monitor the activity of your YaCy client in the **Monitoring** panel, so you can get an idea of how many people are benefiting from the work of the YaCy community and also see what kind of activity it's generating for your computer and network. - -![YaCy monitoring screen][10] - -### Search engines make a difference - -The more time you spend with the Administration screen, the more fun it becomes to ponder how the search engine you use can change your perspective. Your experience of the internet is shaped by the results you get back for even the simplest of queries. You might notice, in fact, how different one person's "internet" is from another person's when you talk to computer users from a different industry. For some people, the web is littered with ads and promoted searches and suffers from the tunnel vision of learned responses to queries. For instance, if someone consistently searches for answers about X, most commercial search engines will give weight to query responses that concern X. That's a useful feature on the one hand, but it occludes answers that require Y, even though that might be the better solution for a specific task. - -As in real life, stepping outside a manufactured view of the world can be healthy and enlightening. Try YaCy, and see what you discover. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/2/yacy-search-engine-hacks - -作者:[Seth Kenlon][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/seth -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/browser_desktop_website_checklist_metrics.png?itok=OKKbl1UR (Browser of things) -[2]: https://opensource.com/article/20/2/open-source-search-engine -[3]: https://yacy.net/ -[4]: https://www.linuxquestions.org/questions/linux-news-59/is-there-no-more-linux-google-884306/ -[5]: https://opensource.com/sites/default/files/uploads/yacy-profiles.jpg (YaCy profile selector) -[6]: https://en.wikipedia.org/wiki/Vivisimo -[7]: https://opensource.com/sites/default/files/uploads/yacy-network-config.jpg (YaCy network configuration) -[8]: https://opensource.com/sites/default/files/uploads/yacy-advanced-crawler.jpg (YaCy advanced crawler) -[9]: https://opensource.com/sites/default/files/uploads/yacy-remote-crawl-accept.jpg (YaCy remote crawling) -[10]: https://opensource.com/sites/default/files/uploads/yacy-monitor.jpg (YaCy monitoring screen) diff --git a/sources/tech/20200211 Dino is a Modern Looking Open Source XMPP Client.md b/sources/tech/20200211 Dino is a Modern Looking Open Source XMPP Client.md index 78135c9f9b..8d8ad04a69 100644 --- a/sources/tech/20200211 Dino is a Modern Looking Open Source XMPP Client.md +++ b/sources/tech/20200211 Dino is a Modern Looking Open Source XMPP Client.md @@ -1,5 +1,5 @@ [#]: collector: (lujun9972) -[#]: translator: ( ) +[#]: translator: (geekpi) [#]: reviewer: ( ) [#]: publisher: ( ) [#]: url: ( ) diff --git a/sources/tech/20200212 Extend the life of your SSD drive with fstrim.md b/sources/tech/20200212 Extend the life of your SSD drive with fstrim.md new file mode 100644 index 0000000000..c8108d68c9 --- /dev/null +++ b/sources/tech/20200212 Extend the life of your SSD drive with fstrim.md @@ -0,0 +1,161 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Extend the life of your SSD drive with fstrim) +[#]: via: (https://opensource.com/article/20/2/trim-solid-state-storage-linux) +[#]: author: (Alan Formy-Duval https://opensource.com/users/alanfdoss) + +Extend the life of your SSD drive with fstrim +====== +A new systemd service to make your life easier. +![Linux keys on the keyboard for a desktop computer][1] + +Over the past decade, solid-state drives (SSD) have brought about a new way of managing storage. SSDs have benefits like silent and cooler operation and a faster interface spec, compared to their elder spinning ancestors. Of course, new technology brings with it new methods of maintenance and management. SSDs have a feature called TRIM. This is essentially a method for reclaiming unused blocks on the device, which may have been previously written, but no longer contain valid data and therefore, can be returned to the general storage pool for reuse. Opensource.com’s Don Watkins first wrote about TRIM in his 2017 article ["Solid-state drives in Linux: Enabling TRIM for SSDs."][2] + +If you have been using this feature on your Linux system, then you are probably familiar with the two methods described below. + +### The old ways + +#### Discard + +I initially enabled this with the discard option to the mount command. The configuration is placed into the **/etc/fstab** file for each file system. + + +``` +# cat /etc/fstab +UUID=3453g54-6628-2346-8123435f  /home  xfs  defaults,discard   0 0 +``` + +The discard option enables automatic online TRIM. There has recently been debate on whether this is the best method due to possible negative performance impacts. Using this option causes a TRIM to be initiated every time new data is written to the drive. This may introduce additional activity that interferes with storage performance. + +#### Cron + +I removed the discard option from the **fstab** file. Then I created a cron job to call the command on a scheduled basis. + + +``` +# crontab -l +@midnight /usr/bin/trim +``` + +This is the method I used most recently on my Ubuntu Linux systems until I learned about another way. + +### A new TRIM service + +I recently discovered that a systemd service for TRIM exists. Fedora [introduced][3] this into their distribution in version 30, and, although it is not enabled by default in versions 30 and 31, it is planned to be in version 32. If you’re working on Fedora Workstation 31 and you want to begin using this feature, you can enable it very easily. I’ll also show you how to test it below. This service is not unique to Fedora. The existence and status will depend on an individual distribution basis. + +#### Test + +I like to test first, to better understand what is happening behind the scenes. I do this by opening a terminal and issuing the command that the service is configured to call. + + +``` +`/usr/sbin/fstrim --fstab --verbose --quiet` +``` + +The **–help** argument to **fstrim** will describe these and other arguments. + + +``` +$ sudo /usr/sbin/fstrim --help + +Usage: + fstrim [options] <mount point> + +Discard unused blocks on a mounted filesystem. + +Options: + -a, --all           trim all supported mounted filesystems + -A, --fstab         trim all supported mounted filesystems from /etc/fstab + -o, --offset <num>  the offset in bytes to start discarding from + -l, --length <num>  the number of bytes to discard + -m, --minimum <num> the minimum extent length to discard + -v, --verbose       print number of discarded bytes +     --quiet         suppress error messages + -n, --dry-run       does everything, but trim + + -h, --help          display this help + -V, --version       display version +``` + +So, now I can see that the systemd service is configured to run the trim on all supported mounted filesystems in my **/etc/fstab** file **–fstab** and print the number of discarded bytes **–verbose** but suppress any error messages that might occur **–quiet**. Knowing these options is helpful for testing. For instance, I can start with the safest one, which is the dry run. I’ll also leave off the quiet argument so I can determine if any errors will occur with my drive setup. + + +``` +`$ sudo /usr/sbin/fstrim --fstab --verbose --dry-run` +``` + +This will simply show what the **fstrim** command will do based on the file systems that it finds configured in your **/etc/fstab** file. + + +``` +`$ sudo /usr/sbin/fstrim --fstab --verbose` +``` + +This will now send the TRIM operation to the drive and report on the number of discarded bytes from each file system. Below is an example after my recent fresh install of Fedora on a new NVME SSD. + + +``` +/home: 291.5 GiB (313011310592 bytes) trimmed on /dev/mapper/wkst-home +/boot/efi: 579.2 MiB (607301632 bytes) trimmed on /dev/nvme0n1p1 +/boot: 787.5 MiB (825778176 bytes) trimmed on /dev/nvme0n1p2 +/: 60.7 GiB (65154805760 bytes) trimmed on /dev/mapper/wkst-root +``` + +#### Enable + +Fedora Linux implements systemd timer service, scheduled to run on a weekly basis. To check the existence and current status, run **systemctl status**. + + +``` +`$ sudo systemctl status fstrim.timer` +``` + +Now, enable the service. + + +``` +`$ sudo systemctl enable fstrim.timer` +``` + +#### Verify + +Then you can verify that the timer is enabled by listing all of the timers. + + +``` +`$ sudo systemctl list-timers --all` +``` + +The following line referring to the **fstrim.timer** will appear. Notice that the timer actually activates **fstrim.service**. This is from where the actual **fstrim** is called. The time-related fields show **n/a** because the service has just been enabled and has not run yet. + + +``` +NEXT   LEFT    LAST   PASSED   UNIT           ACTIVATES +n/a    n/a     n/a    n/a      fstrim.timer   fstrim.service +``` + +### Conclusion + +This service seems like the best way to run TRIM on your drives. It is much simpler than having to create your own crontab entry to call the **fstrim** command. It is also safer not having to edit the **fstab** file. It has been interesting to watch the evolution of solid-state storage technology and nice to know that it appears Linux is moving toward a standard and safe way to implement it. + +In this article, learn how solid state drives differ from traditional hard drives and what it means... + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/20/2/trim-solid-state-storage-linux + +作者:[Alan Formy-Duval][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/alanfdoss +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/linux_keyboard_desktop.png?itok=I2nGw78_ (Linux keys on the keyboard for a desktop computer) +[2]: https://opensource.com/article/17/1/solid-state-drives-linux-enabling-trim-ssds +[3]: https://fedoraproject.org/wiki/Changes/EnableFSTrimTimer (Fedora Project WIKI: Changes/EnableFSTrimTimer) diff --git a/sources/tech/20200212 How to Change the Default Terminal in Ubuntu.md b/sources/tech/20200212 How to Change the Default Terminal in Ubuntu.md deleted file mode 100644 index 7460bf669f..0000000000 --- a/sources/tech/20200212 How to Change the Default Terminal in Ubuntu.md +++ /dev/null @@ -1,86 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (geekpi) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (How to Change the Default Terminal in Ubuntu) -[#]: via: (https://itsfoss.com/change-default-terminal-ubuntu/) -[#]: author: (Abhishek Prakash https://itsfoss.com/author/abhishek/) - -How to Change the Default Terminal in Ubuntu -====== - -Terminal is a crucial part of any Linux system. It allows you to access your Linux systems through a shell. There are several terminal applications (technically called terminal emulators) on Linux. - -Most of the [desktop environments][1] have their own implementation of the terminal. It may look different and may have different keyboard shortcuts. - -For example, [Guake Terminal][2] is extremely useful for power users and provides several features you might not get in your distribution’s terminal by default. - -You can install other terminals on your system and use it as default that opens up with the usual [keyboard shortcut of Ctrl+Alt+T][3]. - -Now the question comes, how do you change the default terminal in Ubuntu. It doesn’t follow the standard way of [changing default applications in Ubuntu][4] then how to do it? - -### Change the default terminal in Ubuntu - -![][5] - -On Debian-based distributions, there is a handy command line utility called [update-alternatives][6] that allows you to handle the default applications. - -You can use it to change the default command line text editor, terminal and more. To do that, run the following command: - -``` -sudo update-alternatives --config x-terminal-emulator -``` - -It will show all the terminal emulators present on your system that can be used as default. The current default terminal is marked with the asterisk. - -``` -[email protected]:~$ sudo update-alternatives --config x-terminal-emulator -There are 2 choices for the alternative x-terminal-emulator (providing /usr/bin/x-terminal-emulator). - - Selection Path Priority Status ------------------------------------------------------------- - 0 /usr/bin/gnome-terminal.wrapper 40 auto mode - 1 /usr/bin/gnome-terminal.wrapper 40 manual mode -* 2 /usr/bin/st 15 manual mode - -Press to keep the current choice[*], or type selection number: -``` - -All you have to do is to enter the selection number. In my case, I want to use the GNOME terminal instead of the one from [Regolith desktop][7]. - -``` -Press to keep the current choice[*], or type selection number: 1 -update-alternatives: using /usr/bin/gnome-terminal.wrapper to provide /usr/bin/x-terminal-emulator (x-terminal-emulator) in manual mode -``` - -##### Auto mode vs manual mode - -You might have noticed the auto mode and manual mode in the output of update-alternatives command. - -If you choose auto mode, your system may automatically decide on the default application as the packages are installed or removed. The decision is influenced by the priority number (as seen in the output of the command in the previous section). - -Suppose you have 5 terminal emulators installed on your system and you delete the default one. Now, your system will check which of the emulators are in auto mode. If there are more than one, it will choose the one with the highest priority as the default emulator. - -I hope you find this quick little tip useful. Your questions and suggestions are always welcome. - --------------------------------------------------------------------------------- - -via: https://itsfoss.com/change-default-terminal-ubuntu/ - -作者:[Abhishek Prakash][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://itsfoss.com/author/abhishek/ -[b]: https://github.com/lujun9972 -[1]: https://itsfoss.com/best-linux-desktop-environments/ -[2]: http://guake-project.org/ -[3]: https://itsfoss.com/ubuntu-shortcuts/ -[4]: https://itsfoss.com/change-default-applications-ubuntu/ -[5]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/02/switch_default_terminal_ubuntu.png?ssl=1 -[6]: https://manpages.ubuntu.com/manpages/trusty/man8/update-alternatives.8.html -[7]: https://itsfoss.com/regolith-linux-desktop/ diff --git a/sources/tech/20200212 How to use byobu to multiplex SSH sessions.md b/sources/tech/20200212 How to use byobu to multiplex SSH sessions.md new file mode 100644 index 0000000000..bd36764af1 --- /dev/null +++ b/sources/tech/20200212 How to use byobu to multiplex SSH sessions.md @@ -0,0 +1,86 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (How to use byobu to multiplex SSH sessions) +[#]: via: (https://opensource.com/article/20/2/byobu-ssh) +[#]: author: (Ben Nuttall https://opensource.com/users/bennuttall) + +How to use byobu to multiplex SSH sessions +====== +Byobu allows you to maintain multiple terminal windows, connect via SSH, +disconnect, reconnect, and share access, all while keeping the session +alive. +![Person drinking a hat drink at the computer][1] + +[Byobu][2] is a text-based window manager and terminal multiplexer. It's similar to [GNU Screen][3] but more modern and more intuitive. It also works on most Linux, BSD, and Mac distributions. + +Byobu allows you to maintain multiple terminal windows, connect via SSH (secure shell), disconnect, reconnect, and even let other people access it, all while keeping the session alive. + +For example, if you are SSH'd into a Raspberry Pi or server and run (for example) **sudo apt update && sudo apt upgrade**—and lose your internet connection while it is running, your command will be lost to the void. However, if you start a byobu session first, it will continue running and, when you reconnect, you will find it's been running happily without your eyes on it. + +![The byobu logo is a fun play on screens.][4] + +Byobu is named for a Japanese term for decorative, multi-panel screens that serve as folding room dividers, which I think is quite fitting. + +To install byobu on Debian/Raspbian/Ubuntu: + +**sudo apt install byobu** + +Then enable it: + +**byobu-enable** + +Now drop out of your SSH session and log back in—you'll land in a byobu session. Run a command like **sudo apt update** and close the window (or enter the escape sequence ([**Enter**+**~**+**.**][5]) and log back in. You'll see the update running just as you left it. + +There are a _lot_ of features I don't use regularly or at all. The most common ones I use are: + + * **F2** – New window + * **F3/F4** – Navigate between windows + * **Ctrl**+**F2** – Split pane vertically + * **Shift**+**F2** – Split pane horizontally + * **Shift**+**Left arrow/Shift**+**Right arrow** – Navigate between splits + * **Shift**+**F11** – Zoom in (or out) on a split + + + +You can learn more by watching this video: + +### How we're using byobu + +Byobu has been great for the maintenance of [piwheels][6], the convenient, pre-compiled Python packages for Raspberry Pi. We have a horizontal split showing the piwheels monitor in the top half and the syslog entries scrolled in real time on the bottom half. Then, if we want to do something else, we switch to another window. It's particularly handy when we're investigating something collaboratively, as I can see what my colleague Dave types (and correct his typos) while we chat in IRC. + +I have byobu enabled on my home and work servers, so when I log into either machine, everything is as I left it—multiple jobs running, a window left in a particular directory, running a process as another user, that kind of thing. + +![byobu screenshot][7] + +Byobu is handy for development on Raspberry Pis, too. You can launch it on the desktop, run a command, then SSH in and attach yourself to the session where that command is running. Just note that enabling byobu won't change what the terminal launcher does. Just run **byobu** to launch it. + +* * * + +_This article originally appeared on Ben Nuttall's [Tooling blog][8] and is reused with permission._ + +Enter the black raspberry. Rubus occidentalis . It's an ominous name for an ominous fruit: the... + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/20/2/byobu-ssh + +作者:[Ben Nuttall][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/bennuttall +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/coffee_tea_laptop_computer_work_desk.png?itok=D5yMx_Dr (Person drinking a hat drink at the computer) +[2]: https://byobu.org/ +[3]: http://www.gnu.org/software/screen/ +[4]: https://opensource.com/sites/default/files/uploads/byobu.png (byobu screen) +[5]: https://www.google.com/search?client=ubuntu&channel=fs&q=Enter-tilde-dot&ie=utf-8&oe=utf-8 +[6]: https://opensource.com/article/20/1/piwheels +[7]: https://opensource.com/sites/default/files/uploads/byobu-screenshot.png (byobu screenshot) +[8]: https://tooling.bennuttall.com/byobu/ diff --git a/sources/tech/20200212 Manage your SSL certificates with the ssl-on-demand script.md b/sources/tech/20200212 Manage your SSL certificates with the ssl-on-demand script.md new file mode 100644 index 0000000000..e4be89e4f5 --- /dev/null +++ b/sources/tech/20200212 Manage your SSL certificates with the ssl-on-demand script.md @@ -0,0 +1,685 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Manage your SSL certificates with the ssl-on-demand script) +[#]: via: (https://opensource.com/article/20/2/ssl-demand) +[#]: author: (Abhishek Tamrakar https://opensource.com/users/tamrakar) + +Manage your SSL certificates with the ssl-on-demand script +====== +Keep track of certificate expirations to prevent problems with the +ssl-on-demand script. +![Lock][1] + +It happens all the time, to the largest of companies. An important certificate doesn't get renewed, and services become inaccessible. It happened to Microsoft Teams in early February 2020, awkwardly timed just after the launch of a major television campaign promoting it as a [Slack competitor][2]. Embarrassing as that may be, it's sure to happen to someone else in the future. + +On the modern web, expired [certificates][3] can create major problems for websites, ranging from unhappy users who can't connect to a site to security threats from bad actors who take advantage of the failure to renew a certificate. + +[Ssl-on-demand][4] is a set of SSL scripts to help site owners manage certificates. It is used for on-demand certificate generation and validation and it can create certificate signing requests ([CSRs][5]) and predict the expiration of existing certificates. + +### Automate SSL expiry checks + + +``` + USAGE: SSLexpiryPredictions.sh -[cdewh] + +  DESCRIPTION: This script predicts the expiring SSL certificates based on the end date. + +  OPTIONS: + +  -c|   sets the value for configuration file which has server:port or host:port details. +        +  -d|   sets the value of directory containing the certificate files in crt or pem format. + +  -e|   sets the value of certificate extention, e.g crt, pem, cert. +        crt: default [to be used with -d, if certificate file extention is other than .crt] + +  -w|   sets the value for writing the script output to a file. + +  -h|   prints this help and exit. +``` + +**Examples:** + +To create a file with a list of all servers and their port numbers to make an SSL handshake, use: + + +``` +cat > servers.list +         server1:port1 +         server2:port2 +         server3:port3 +        (ctrl+d) +        +$ ./SSLexpiryPredictions.sh -c server.list +``` + +Run the script by providing the certificate location and extension (in case it is not .crt): + + +``` +`$ ./SSLexpiryPredictions.sh -d /path/to/certificates/dir -e pem` +``` + +### Automate CSR and private key creation + + +``` +Usage:  genSSLcsr.sh [options] -[cdmshx] +  [-c (common name)] +  [-d (domain name)] +  [-s (SSL certificate subject)] +  [-p (password)] +  [-m (email address)] *(Experimental) +  [-r (remove pasphrase) default:true] +  [-h (help)] +  [-x (optional)] + +[OPTIONS] +  -c|   Sets the value for common name. +        A valid common name is something that ends with 'xyz.com' + +  -d|   Sets the domain name. + +  -s|   Sets the subject to be applied to the certificates. +        '/C=country/ST=state/L=locality/O=organization/OU=organizationalunit/emailAddress=email' + +  -p|   Sets the password for private key. + +  -r|   Sets the value of remove passphrase. +        true:[default] passphrase will be removed from key. +        false: passphrase will not be removed and key wont get printed. + +  -m|   Sets the mailing capability to the script. +        (Experimental at this time and requires a lot of work) + +  -x|   Creates the certificate request and key but do not print on screen. +        To be used when script is used just to create the key and CSR with no need +        + to generate the certficate on the go. + +  -h|   Displays the usage. No further functions are performed. + +  Example: genSSLcsr.sh -c mywebsite.xyz.com -m [myemail@mydomain.com][6] +``` + +### The scripts + +#### 1. SSLexpiryPredictions.sh + + +``` +#!/bin/bash +############################################## +# +#       PURPOSE: The script to predict expiring SSL certificates. +# +#       AUTHOR: 'Abhishek.Tamrakar' +# +#       VERSION: 0.0.1 +# +#       COMPANY: Self +# +#       EMAIL: [abhishek.tamrakar08@gmail.com][7] +# +#       GENERATED: on 2018-05-20 +# +#       LICENSE: Copyright (C) 2018 Abhishek Tamrakar +# +#  Licensed under the Apache License, Version 2.0 (the "License"); +#  you may not use this file except in compliance with the License. +#  You may obtain a copy of the License at +# +#       +# +#   Unless required by applicable law or agreed to in writing, software +#   distributed under the License is distributed on an "AS IS" BASIS, +#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +#   See the License for the specific language governing permissions and +#   limitations under the License. +############################################## + +#your Variables go here +script=${0##/} +exitcode='' +WRITEFILE=0 +CONFIG=0 +DIR=0 +# functions here +usage() +{ +cat <<EOF + +  USAGE: $script -[cdewh]" + +  DESCRIPTION: This script predicts the expiring SSL certificates based on the end date. + +  OPTIONS: + +  -c|   sets the value for configuration file which has server:port or host:port details. + +  -d|   sets the value of directory containing the certificate files in crt or pem format. + +  -e|   sets the value of certificate extention, e.g crt, pem, cert. +        crt: default + +  -w|   sets the value for writing the script output to a file. + +  -h|   prints this help and exit. + +EOF +exit 1 +} +# print info messages +info() +{ +  printf '\n%s: %6s\n' "INFO" "$@" +} +# print error messages +error() +{ +  printf '\n%s: %6s\n' "ERROR" "$@" +  exit 1 +} +# print warning messages +warn() +{ +  printf '\n%s: %6s\n' "WARN" "$@" +} +# get expiry for the certificates +getExpiry() +{ +  local expdate=$1 +  local certname=$2 +  today=$(date +%s) +  timetoexpire=$(( ($expdate - $today)/(60*60*24) )) + +  expcerts=( ${expcerts[@]} "${certname}:$timetoexpire" ) +} + +# print all expiry that was found, typically if there is any. +printExpiry() +{ +  local args=$# +  i=0 +  if [[ $args -ne 0 ]]; then +    #statements +    printf '%s\n' "---------------------------------------------" +    printf '%s\n' "List of expiring SSL certificates" +    printf '%s\n' "---------------------------------------------" +    printf '%s\n' "$@"  | \ +      sort -t':' -g -k2 | \ +      column -s: -t     | \ +      awk '{printf "%d.\t%s\n", NR, $0}' +    printf '%s\n' "---------------------------------------------" +  fi +} + +# calculate the end date for the certificates first, finally to compare and predict when they are going to expire. +calcEndDate() +{ +  sslcmd=$(which openssl) +  if [[ x$sslcmd = x ]]; then +    #statements +    error "$sslcmd command not found!" +  fi +  # when cert dir is given +  if [[ $DIR -eq 1 ]]; then +    #statements +    checkcertexists=$(ls -A $TARGETDIR| egrep "*.$EXT$") +    if [[ -z ${checkcertexists} ]]; then +      #statements +      error "no certificate files at $TARGETDIR with extention $EXT" +    fi +    for file in $TARGETDIR/*.${EXT:-crt} +    do +      expdate=$($sslcmd x509 -in $file -noout -enddate) +      expepoch=$(date -d "${expdate##*=}" +%s) +      certificatename=${file##*/} +      getExpiry $expepoch ${certificatename%.*} +    done +  elif [[ $CONFIG -eq 1 ]]; then +    #statements +    while read line +    do +      if echo "$line" | \ +      egrep -q '^[a-zA-Z0-9.]+:[0-9]+|^[a-zA-Z0-9]+_.*:[0-9]+'; +      then +        expdate=$(echo | \ +        openssl s_client -connect $line 2>/dev/null | \ +        openssl x509 -noout -enddate 2>/dev/null); +        if [[ $expdate = '' ]]; then +          #statements +          warn "[error:0906D06C] Cannot fetch certificates for $line" +        else +          expepoch=$(date -d "${expdate##*=}" +%s); +          certificatename=${line%:*}; +          getExpiry $expepoch ${certificatename}; +        fi +      else +        warn "[format error] $line is not in required format!" +      fi +    done < $CONFIGFILE +  fi +} +# your script goes here +while getopts ":c:d:w:e:h" options +do +case $options in +c ) +  CONFIG=1 +  CONFIGFILE="$OPTARG" +  if [[ ! -e $CONFIGFILE ]] || [[ ! -s $CONFIGFILE ]]; then +    #statements +    error "$CONFIGFILE does not exist or empty!" +  fi +        ;; +e ) +  EXT="$OPTARG" +  case $EXT in +    crt|pem|cert ) +    info "Extention check complete." +    ;; +    * ) +    error "invalid certificate extention $EXT!" +    ;; +  esac +  ;; +d ) +  DIR=1 +  TARGETDIR="$OPTARG" +  [ $TARGETDIR = '' ] && error "$TARGETDIR empty variable!" +  ;; +w ) +  WRITEFILE=1 +  OUTFILE="$OPTARG" +  ;; +h ) +        usage +        ;; +\? ) +        usage +        ;; +: ) +        fatal "Argument required !!! see \'-h\' for help" +        ;; +esac +done +shift $(($OPTIND - 1)) +# +calcEndDate +#finally print the list +if [[ $WRITEFILE -eq 0 ]]; then +  #statements +  printExpiry ${expcerts[@]} +else +  printExpiry ${expcerts[@]} > $OUTFILE +fi +``` + +#### 2. genSSLcsr.sh + + +``` +#!/bin/bash - +#=============================================================================== +# +#          FILE: genSSLcsr.sh +# +#         USAGE: ./genSSLcsr.sh [options] +# +#   DESCRIPTION: ++++version 1.0.2 +#               Fixed few bugs from previous script +#               +Removing passphrase after CSR generation +#               Extended use of functions +#               Checks for valid common name +#               ++++1.0.3 +#               Fixed line breaks +#               Work directory to be created at the start +#               Used getopts for better code arrangements +#   ++++1.0.4 +#     Added mail feature (experimental at this time and needs +#     a mail server running locally.) +#     Added domain input and certificate subject inputs +# +#       OPTIONS: --- +#  REQUIREMENTS: openssl, mailx +#          BUGS: --- +#         NOTES: --- +#        AUTHOR: Abhishek Tamrakar (), [abhishek.tamrakar08@gmail.com][7] +#  ORGANIZATION: Self +#       CREATED: 6/24/2016 +#      REVISION: 4 +# COPYRIGHT AND +#       LICENSE: Copyright (C) 2016 Abhishek Tamrakar +# +#  Licensed under the Apache License, Version 2.0 (the "License"); +#  you may not use this file except in compliance with the License. +#  You may obtain a copy of the License at +# +#       +# +#   Unless required by applicable law or agreed to in writing, software +#   distributed under the License is distributed on an "AS IS" BASIS, +#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +#   See the License for the specific language governing permissions and +#   limitations under the License. +#=============================================================================== + +#variables ges here +#set basename to scriptname +SCRIPT=${0##*/} + +#set flags +TFOUND=0 +CFOUND=0 +MFOUND=0 +XFOUND=0 +SFOUND=0 +logdir=/var/log +# edit these below values to replace with yours +homedir='' +yourdomain='' +country=IN +state=Maharashtra +locality=Pune +organization="your_organization" +organizationalunit="your_organizational_unit" +email=your_email@your_domain +password=your_ssl_password +# OS is declared and will be used in its next version +OS=$(egrep -io 'Redhat|centos|fedora|ubuntu' /etc/issue) + +### function declarations ### + +info() +{ +  printf '\n%s\t%s\t' "INFO" "$@" +} + +#exit on error with a custom error message +#the extra function was removed and replaced withonly one. +#using FAILED\n\e<message> is a way but not necessarily required. +# + +fatal() +{ + printf '\n%s\t%s\n' "ERROR" "$@" + exit 1 +} + +checkperms() +{ +if [[ -z ${homedir} ]]; then +homedir=$(pwd) +fi +if [[ -w ${homedir} ]]; then +info "Permissions acquired for ${SCRIPT} on ${homedir}." +else +fatal "InSufficient permissions to run the ${SCRIPT}." +fi +} + +checkDomain() +{ +info "Initializing Domain ${cn} check ? " +if [[ ! -z ${yourdomain} ]]; then +workdir=${homedir}/${yourdomain} +echo -e "${cn}"|grep -E -i -q "${yourdomain}$" && echo -n "[OK]" || fatal "InValid domain in ${cn}" +else +workdir=${homedir}/${cn#*.} +echo -n "[NULL]" +info "WARNING: No domain declared to check." +confirmUserAction +fi +}       # end function checkDomain + +usage() +{ +cat << EOF + +Usage:  $SCRIPT [options] -[cdmshx] +  [-c (common name)] +  [-d (domain name)] +  [-s (SSL certificate subject)] +  [-p (password)] +  [-m (email address)] *(Experimental) +  [-r (remove pasphrase) default:true] +  [-h (help)] +  [-x (optional)] + +[OPTIONS] +  -c|   Sets the value for common name. +        A valid common name is something that ends with 'xyz.com' + +  -d|   Sets the domain name. + +  -s|   Sets the subject to be applied to the certificates. +        '/C=country/ST=state/L=locality/O=organization/OU=organizationalunit/emailAddress=email' + +  -p|   Sets the password for private key. + +  -r|   Sets the value of remove passphrase. +        true:[default] passphrase will be removed from key. +        false: passphrase will not be removed and key wont get printed. + +  -m|   Sets the mailing capability to the script. +        (Experimental at this time and requires a lot of work) + +  -x|   Creates the certificate request and key but do not print on screen. +        To be used when script is used just to create the key and CSR with no need +        + to generate the certficate on the go. + +  -h|   Displays the usage. No further functions are performed. + +  Example: $SCRIPT -c mywebsite.xyz.com -m [myemail@mydomain.com][6] + +EOF +exit 1 +}       # end usage + +confirmUserAction() { +while true; do +read -p "Do you wish to continue? ans: " yn +case $yn in +[Yy]* ) info "Initiating the process"; +break;; +[Nn]* ) exit 1;; +* ) info "Please answer yes or no.";; +esac +done +}       # end function confirmUserAction + +parseSubject() +{ +  local subject="$1" +  parsedsubject=$(echo $subject|sed 's/\// /g;s/^ //g') +  for i in ${parsedsubject}; do +      case ${i%=*} in +        'C' ) +        country=${i##*=} +        ;; +        'ST' ) +        state=${i##*=} +        ;; +        'L' ) +        locality=${i##*=} +        ;; +        'O' ) +        organization=${i##*=} +        ;; +        'OU' ) +        organizationalunit=${i##*=} +        ;; +        'emailAddress' ) +        email=${i##*=} +      ;; +    esac +  done +} + +sendMail() +{ + mailcmd=$(which mailx) + if [[ x"$mailcmd" = "x" ]]; then +   fatal "Cannot send email! please install mailutils for linux" + else +   echo "SSL CSR attached." | $mailcmd -s "SSL certificate request" \ +   -t $email $ccemail -A ${workdir}/${cn}.csr \ +   && info "mail sent" \ +   || fatal "error in sending mail." + fi +} + +genCSRfile() +{ +info "Creating signed key request for ${cn}" +#Generate a key +openssl genrsa -des3 -passout pass:$password -out ${workdir}/${cn}.key 4096 -noout 2>/dev/null && echo -n "[DONE]" || fatal "unable to generate key" + +#Create the request +info "Creating Certificate request for ${cn}" +openssl req -new -key ${workdir}/${cn}.key -passin pass:$password -sha1 -nodes \ +        -subj "/C=$country/ST=$state/L=$locality/O=$organization/OU=$organizationalunit/CN=$cn/emailAddress=$email" \ +        -out ${workdir}/${cn}.csr && echo -n "[DONE]" || fatal "unable to create request" + +if [[ "${REMOVEPASSPHRASE:-true}" = 'true' ]]; then +  #statements +  #Remove passphrase from the key. Comment the line out to keep the passphrase +  info "Removing passphrase from ${cn}.key" +  openssl rsa -in ${workdir}/${cn}.key \ +  -passin pass:$password \ +  -out ${workdir}/${cn}.insecure 2>/dev/null \ +  && echo -n "[DONE]" || fatal "unable to remove passphrase" +  #swap the filenames +  info "Swapping the ${cn}.key to secure" +  mv ${workdir}/${cn}.key ${workdir}/${cn}.secure \ +  && echo -n "[DONE]" || fatal "unable to perfom move" +  info "Swapping insecure key to ${cn}.key" +  mv ${workdir}/${cn}.insecure ${workdir}/${cn}.key \ +  && echo -n "[DONE]" || fatal "unable to perform move" +else +  info "Flag '-r' is set, passphrase will not be removed." +fi +} + +printCSR() +{ +if [[ -e ${workdir}/${cn}.csr ]] && [[ -e ${workdir}/${cn}.key ]] +then +echo -e "\n\n----------------------------CSR-----------------------------" +cat ${workdir}/${cn}.csr +echo -e "\n----------------------------KEY-----------------------------" +cat ${workdir}/${cn}.key +echo -e "------------------------------------------------------------\n" +else +fatal "CSR or KEY generation failed !!" +fi +} + +### END Functions ### + +#Check the number of arguments. If none are passed, print help and exit. +NUMARGS=$# +if [ $NUMARGS -eq 0 ]; then +fatal "$NUMARGS Arguments provided !!!! See usage with '-h'" +fi + +#Organisational details + +while getopts ":c:d:sⓂ️p:rhx" atype +do +case $atype in +c ) +        CFOUND=1 +        cn="$OPTARG" +        ;; +d ) +  yourdomain="$OPTARG" +  ;; +s ) +  SFOUND=1 +  subj="$OPTARG" +  ;; +p ) +  password="$OPTARG" +  ;; +r ) +  REMOVEPASSPHRASE='false' +  ;; +m ) +  MFOUND=1 +  ccemail="$OPTARG" +  ;; +x ) +        XFOUND=1 +  ;; +h ) +        usage +        ;; +\? ) +        usage +        ;; +: ) +        fatal "Argument required !!! see \'-h\' for help" +        ;; +esac +done +shift $(($OPTIND - 1)) + +#### END CASE #### START MAIN #### + +if [ $CFOUND -eq 1 ] +then +# take current dir as homedir by default. +checkperms ${homedir} +checkDomain + +  if [[ ! -d ${workdir} ]] +  then +    mkdir ${workdir:-${cn#*.}} 2>/dev/null && info "${workdir} created." +  else +    info "${workdir} exists." +  fi # end workdir check +  parseSubject "$subj" +  genCSRfile +  if [ $XFOUND -eq 0 ] +  then +    sleep 2 +    printCSR +  fi    # end x check +  if [[ $MFOUND -eq 1 ]]; then +    sendMail +  fi +else +        fatal "Nothing to do!" +fi      # end common name check + +##### END MAIN ##### +``` + +* * * + +_This was originally published as the README in [ssl-on-demand's GitHub repository][4] and is reused with permission._ + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/20/2/ssl-demand + +作者:[Abhishek Tamrakar][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/tamrakar +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/security-lock-password.jpg?itok=KJMdkKum (Lock) +[2]: https://opensource.com/alternatives/slack +[3]: https://opensource.com/article/19/1/what-certificate +[4]: https://github.com/abhiTamrakar/ssl-on-demand +[5]: https://en.wikipedia.org/wiki/Certificate_signing_request +[6]: mailto:myemail@mydomain.com +[7]: mailto:abhishek.tamrakar08@gmail.com diff --git a/sources/tech/20200214 How to restore a single-core computer with Linux.md b/sources/tech/20200214 How to restore a single-core computer with Linux.md new file mode 100644 index 0000000000..a88a2c157d --- /dev/null +++ b/sources/tech/20200214 How to restore a single-core computer with Linux.md @@ -0,0 +1,270 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (How to restore a single-core computer with Linux) +[#]: via: (https://opensource.com/article/20/2/restore-old-computer-linux) +[#]: author: (Howard Fosdick https://opensource.com/users/howtech) + +How to restore a single-core computer with Linux +====== +Let's have some geeky fun refurbishing your prehistoric Pentium with +Linux and open source. +![Two animated computers waving one missing an arm][1] + +In a [previous article][2], I explained how I refurbish old dual-core computers ranging from roughly five to 15 years old. Properly restored, these machines can host a fully capable lightweight Linux distribution like [Mint/Xfce][3], [Xubuntu][4], or [Lubuntu][5] and perform everyday tasks. But what if you have a really old computer gathering dust in your attic or basement? Like a Pentium 4 desktop or Pentium M laptop? Yikes! Can you even do anything with a relic like that? + +### Why restore a relic? + +For starters, you might learn a bit about hardware and open source software by refurbishing it. And you could have some fun along the way. Whether you can make much use of it depends on your expectations. + +A single-core computer can perform well for a specific purpose. For example, my friend created a dandy retro gaming box (like I describe below) that runs hundreds of Linux and old Windows and DOS games. His kids love it! + +Another friend uses his Pentium 4 for running design spreadsheets in his workshop. He finds it convenient to have a dedicated machine tucked into a corner of his shop. He likes that he doesn't have to worry about heat or dust ruining an expensive modern computer. + +My romance author acquaintance employs her Pentium M as a "novelist's workstation" lodged in her cozy attic hideaway. The laptop functions as her private word processor. + +I've used old computers to teach beginners how to build and repair hardware. Old equipment makes the best testbed because it's expendable. If someone makes a mistake and fries a board, it doesn't much matter. (Contrast this to how you would feel if you wrecked your main computer!) + +The web suggests many [other potential uses][6] for old Pentiums: security cam monitors, network-attached storage (NAS) servers, [SETI][7] boxes, torrent servers, anonymous [Tails][8] servers, Bitcoin miners, programming workstations, thin clients, terminal emulators, routers, file servers, and more. To me, many of these applications sound more like fun projects than practical uses for single-core computers. That doesn't mean they aren't worth your while; it's just that you want to be clear-eyed about any project you take on. + +By current standards, P-4s and Ms are terribly [weak processors][9]. For example, using them for web surfing is problematic because webpage size and programming complexity have [grown exponentially][10]. And the open web is closing—increasingly, sites won't allow you access unless you let them run all those ads that can overwhelm old processors. (I'll discuss web surfing performance tricks later in this article.) Another shortcoming of old computers is their energy consumption. Better electricity-to-performance ratios often make newer computers more sensible. This especially true when a [tablet or smartphone][11] can fulfill your needs. + +Nevertheless, you can still have fun and learn a lot by tinkering with an old P-4 or M. They're great educational tools, they're expendable, and they can be useful in dedicated roles. Best of all, you can get them for free. I'll tell you how. + +Still reading? Okay, let's have some geeky fun refurbishing your prehistoric Pentium. + +### Understand hardware evolution + +As a quick level-set, here are the common names for the P-4 and M class processors and their rough dates of manufacture: + +**Desktops (2000-2008)** + + * Pentium 4 + * Pentium 4 HT (Hyper-Threading) + * Pentium 4 EE (Extreme Edition) + + + +**Desktops (2005-2008)** + + * Pentium D (early dual-core) + + + +**Mobile (2002-2008)** + + * Pentium M + * Pentium 4-M + * Mobile Pentium 4 + * Mobile Pentium 4 HT + + + +Sources: Wikipedia (for the [P-4][12], [P-M][13], and [processor][14] lists), [CPU World,][15] [Revolvy][16]. + +Machines hosting these processors typically use either DDR2 or DDR memory. Dual-core processors entered the market in 2005 and displaced single-core CPUs within a few years. I'll assume you have some version of what's in the above table. Or you might have an equivalent [AMD][17] or [Celeron][18] processor from the same era. + +The big draw of this old hardware is that you can get it for free. People consider it junk. They'll be only too glad to give you their castoffs. If you don't have a machine on hand, just ask your friends or family. Or drop by the local recycling center. Unless they have strict rules, they'll be happy to give you this old equipment. You can even advertise on [Craigslist][19], [Freecycle,][20] or [other reuse websites][21]. + +**A quick tip:** Grab more than one machine. With old hardware, you often need to cannibalize parts from several computers to build one good working one. + +### Prepare the hardware + +Before you can use your old computer, you must refurbish it. The steps to fixing it up are: + + 1. Clean it + 2. Identify what hardware you have + 3. Verify the hardware works + + + +Start by opening up the box and cleaning out the dirt. Dust causes the heat that kills electronics. A can of compressed air helps. + +Always keep yourself grounded when touching things so that you don't harm the electronics. And don't rub anything with a cleaning rag! Even a shock you can't feel can damage computer circuitry. + +While you've got the box open, learn everything you can about your hardware. Write it all down, so you remember it later: + + * Count the open memory slots, if any. Is the RAM DDR or DDR2 (or something else)? + * Read the hard drive label to learn its capacity and age. (It'll probably be an old IDE drive. You can identify IDE drives by their wide connector ribbons.) + * Check the optical drive label to see what kinds of discs it reads and/or writes, at what speed, and to what standard(s). + * Note other peripherals, add-in cards, or anything unusual. + + + +Close and boot the machine into its boot-time [BIOS][22] panels. [This list][23] tells you what program function (PF) key to press to access those startup panels for your specific computer. Now you can complete your hardware identification by rounding out the details on your processor, memory, video memory, and more. + +### Verify the hardware + +Once you know what you've got, verify that it all works. Test: + + * Memory + * Disk + * Motherboard + * Peripherals (optical drive, USB ports, sound, etc.) + + + +Run any diagnostic tests in the computer's boot or BIOS panels. Free resource kits like [Hiren's BootCD][24] or the [Ultimate Boot CD][25] can round out your testing with any diagnostics your boot panels lack. These kits offer dozens of testing programs: all are free, but not all are open source. You can boot them off a live USB or DVD so that you don't have to install anything on the computer. + +Be sure to run the "extended" or long tests for the memory and disk drive. Run tests overnight if you have to. Do this job right! If you miss a problem now, it could cause you big headaches later. + +If you find a problem, refer to my _[Quick guide to fixing hardware][26]_ to solve common issues. + +### Essential hardware upgrades + +You'll want to make two key hardware upgrades. First, increase memory to the computer's maximum. (You can find the maximum for your computer with a quick web search for its specs.) The practical minimum to run many lightweight Linux distros is 1GB RAM; 2GB or more is ideal. While the maximum allowable memory varies by the machine, the great majority of these computers will upgrade to at least 2GB. + +Second—if the desktop doesn't already have one—add a video card. This offloads graphics processing from the motherboard to the video card and increases the computer's video memory. Bumping up the VRAM from 32 or 64MB to 256GB or more greatly increases the range of applications an old computer can run. Especially if you want to run games. + +Be sure the video card fits your computer's [video slot][27] (AGP, PCI, or PCI-Express) and has the right [cable connector][28] (VGA or DVI). You can issue a couple of [Linux line commands][29] to see how much VRAM your system has, or look in the BIOS boot panels. + +These two simple upgrade hacks—increasing memory and video power—take a marginal machine and make it _way_ more functional. Your goal is to build the most powerful P-4 or M ever. That way, you can squeeze the most performance from this aging design. + +The good news is that with the old computers we're talking about, you can get any parts you need for free. Just cannibalize them from other discarded PC's. + +### Select the software + +Choosing the right software for a P-4 or M is critical. [Don't][30] use an [unsupported][31] Windows version just because it's already on the PC; malware might plague you if you do. A fresh install is mandatory. + +Open source software is the way to go. [Many][32] Linux [distributions][33] are specifically designed for older computers. And with Linux, you can install, move, copy, and clone the operating system and its apps at will. This makes your job easier: You won't run into activation or licensing issues, and it's all free. + +Which distribution should you pick? Assuming you have at least 2GB of memory, start your search by trying a _lightweight distribution_—these feature resource-stingy [desktop environments][34]. Xfce or LXQt are excellent desktop environment choices. Products that [consume more resources][35] or produce fancier graphics—like Unity, GNOME, KDE, MATE, and Cinnamon—won't perform well. + +The lightweight Linux distros I've enjoyed success with are Mint/Xfce, Xubuntu, and Lubuntu. The first two use Xfce while Lubuntu employs LXQt. You can find [many other][36] excellent candidate distros beyond these three choices that I can vouch for. + +Be sure to download the 32-bit versions of the operating systems; 64-bit versions don't make much sense unless a computer has at least 4GB of memory. + +The lightweight Linux distros I've cited offer friendly menus and feature huge software repositories backed by active forums. They'll enable your old computer to do everything it's capable of. However, they won't run on every computer from the P-4 era. If one of these products runs on your computer and you like it, great! You've found your distro. + +If your computer doesn't perform well with these selections, won't boot, or you have less than 2GB of memory, try an _ultralight distribution_. Ultralights reduce resource use by replacing desktop environments with [window managers][37] like Fluxbox, FLWM, IceWM, JWM, or Openbox. Window managers use fewer resources than desktop environments. The trade-off is that they're less flexible. As an example, you may have to dip into code to alter your desktop or taskbar icons. + +My go-to ultralight distro is [Puppy Linux][38]. It comes in several variants that run well on Pentium 4's and M's with only 1GB of memory. Puppy's big draw is that it has versions designed specifically for older computers. This means you'll avoid the hassles you might run into with other distros. For example, Puppy versions run on old CPUs that don't support features like PAE or SSE3. They'll even help you run an older kernel or obsolete bootstrap program if your hardware requires it. + +And Puppy runs _fast_ on limited-resource computers! It optimizes performance by loading the operating system entirely into memory to avoid slow disk access. It bundles a full range of apps that have been carefully selected to use minimal hardware resources. + +Puppy is also user-friendly. Even a naive end user can use its simple menus and attractive desktop. But be advised—it takes expertise to install and configure the product. You might have to spend some time on Puppy's [forum][39] to get oriented. The forum is especially useful because many who post there work with old computers. + +A fun alternative to Puppy is [Tiny Core][40] Linux. With Tiny Core, you install only the software components you want. So you build up your environment from the absolute minimum. This takes time but results in a lean, mean system. Tiny Core is perfect for creating a dedicated server. It's a great learning tool, too, so check out its [free eBook][41]. + +If you want a quick, no-hassles install, you might try [antiX][42]. It's Debian-based, offers a selection of lightweight interfaces, and runs well on machines with only a gigabyte of memory. I've had excellent results installing antiX on a variety of old PCs. + +_**Caution:**_ Many distros casually claim that they run on "old computers" when they really mean that they run on _limited-resource computers_. There's a big difference. Old computers sometimes do not support all the CPU features required by newer operating systems. Avoid problems by selecting a Linux proven to run on your hardware. + +Don't know if a distro will run on your box? Save yourself some time by posting a message on the distro's forum and asking for responses from folks using hardware like yours. You should receive some success stories. If nobody can say they've done what you're trying to do, I'd avoid that product. + +### How to use your refurbished computer + +Will you be happy using your restored PC? It depends on what you expect. + +People who use aging systems learn to leverage minimal resources. For example, they run resource-stingy programs like GNOME Office in place of LibreOffice. They forgo CPU-intense programs like emulators, graphics-heavy apps, video processing, and virtual machine hosting. They focus on one task at a time and don't expect much concurrency. And they know how to manage machine resources proactively. + +Old hardware can perform well in dedicated situations. Earlier, I mentioned my friends who use their old computers for design spreadsheets and as a writer's workbench. And I wrote this article on my personal retro box—a Dell GX280 desktop with a Pentium 4 at 3.2GHz, with 2GB DDR-2 RAM and two 40GB IDE disks, dual-booting Puppy and antiX. + +#### Create a retro game box + +You can also create a fantastic retro game box. First, install an appropriate distro. Then install [Wine][43], a program designed to run Windows software on Linux. Now you'll be able to run nearly all your old Windows XP, ME/98/95, and 3.1 games. [DOSBox][44] supports tons more [free DOS games][45]. And Linux offers over a thousand more. + +I've enjoyed nostalgic fun on a P-4 running antiX and all the old games I remember from years ago. Just be sure you've maxed out system memory and added a good video card for the best results. + +#### Access the web + +The big challenge with old computers is web surfing. [This study][46] claims that average website size has increased 100% over a three-year period, while [this article][47] tells how bloated news sites have become. Videos, animation, images, trackers, ad requests—they all make websites slower than just a few years ago. + +Worse, websites increasingly refuse you access unless you allow them to run their ads. This is a problem because the ads can overwhelm old CPUs. In fact, for most websites, the resources required to run ads and trackers are _way_ greater than that required for the actual website content. + +Here are the performance tricks you need to know if you web surf with an older computer: + + * Run the fastest, lightest browser possible. Chrome, Firefox, and Opera are probably the top mainstream offerings. + * Try alternative [minimalist browsers][48] to see if they can meet your needs: [Dillo][49], [NetSurf][50], [Dooble][51], [Lynx][52], [Links][53], or others. + * Actively manage your browser. + * Don't open many browser tabs. + * Manually start and stop processing in specific tabs. + * Block ads and trackers: + * Offload this chore to your virtual private network (VPN) if at all possible. + * Otherwise, use a browser extension. + * Don't slow down your browser by installing add-ons or extensions beyond the minimum required. + * Disable autoplay for videos and Flash. + * Toggle JavaScript off and on. + * Ensure the browser renders text before graphics. + * Don't run background tasks while web surfing. + * Manually clear cookies to avoid page-access limits on some websites. + * Linux means you don't have to run real-time anti-malware (which consumes a CPU core on many Windows PCs). + + + +Employing some of these tricks, I happily use refurbished dual-core computers for all my web surfing. But with today's internet, I find single-core processors inadequate for anything beyond the occasional web lookup. In other words, they're acceptable for _web access_ but insufficient for _web surfing_. That's just my opinion. Yours may vary depending on your expectations and the nature of your web activity. + +### Enjoy free educational fun + +However you use your refurbished P-4 or M, you'll know a lot more about computer hardware and open source software than when you started. It won't cost you a penny, and you'll have some fun along the way! + +Please share your own refurbishing experiences in the comments. + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/20/2/restore-old-computer-linux + +作者:[Howard Fosdick][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/howtech +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/rh_003499_01_other11x_cc.png?itok=I_kCDYj0 (Two animated computers waving one missing an arm) +[2]: http://opensource.com/article/19/7/how-make-old-computer-useful-again +[3]: http://linuxmint.com/ +[4]: https://xubuntu.org/ +[5]: http://lubuntu.me/ +[6]: http://www.google.com/search?q=uses+for+a+pentium+IV +[7]: https://en.wikipedia.org/wiki/Search_for_extraterrestrial_intelligence +[8]: https://en.wikipedia.org/wiki/Tails_(operating_system) +[9]: http://www.cpubenchmark.net/low_end_cpus.html +[10]: http://www.digitaltrends.com/web/internet-is-getting-slower/ +[11]: https://www.forbes.com/sites/christopherhelman/2013/09/07/how-much-energy-does-your-iphone-and-other-devices-use-and-what-to-do-about-it/#ba4918e2f702 +[12]: https://en.wikipedia.org/wiki/Pentium_4 +[13]: https://en.wikipedia.org/wiki/Pentium_M +[14]: https://en.wikipedia.org/wiki/List_of_Intel_Pentium_4_microprocessors +[15]: http://www.cpu-world.com/CPUs/Pentium_4/index.html +[16]: https://www.revolvy.com/page/List-of-Intel-Pentium-4-microprocessors?cr=1 +[17]: https://en.wikipedia.org/wiki/List_of_AMD_microprocessors +[18]: https://en.wikipedia.org/wiki/Celeron +[19]: https://www.craigslist.org/about/sites +[20]: https://www.freecycle.org/ +[21]: https://alternativeto.net/software/freecycle/ +[22]: http://en.wikipedia.org/wiki/BIOS +[23]: http://www.disk-image.com/faq-bootmenu.htm +[24]: http://www.hirensbootcd.org/download/ +[25]: http://www.ultimatebootcd.com/ +[26]: http://www.rexxinfo.org/Quick_Guide/Quick_Guide_To_Fixing_Computer_Hardware +[27]: http://www.playtool.com/pages/vidslots/slots.html +[28]: https://silentpc.com/articles/video-connectors +[29]: https://www.cyberciti.biz/faq/howto-find-linux-vga-video-card-ram/ +[30]: https://fusetg.com/dangers-running-unsupported-operating-system/ +[31]: http://home.bt.com/tech-gadgets/computing/windows-7/windows-7-support-end-11364081315419 +[32]: https://itsfoss.com/lightweight-linux-beginners/ +[33]: https://fossbytes.com/best-lightweight-linux-distros/ +[34]: https://en.wikipedia.org/wiki/Desktop_environment +[35]: http://www.phoronix.com/scan.php?page=article&item=ubu-1704-desktops&num=3 +[36]: https://www.google.com/search?ei=TfIoXtG5OYmytAbl04z4Cw&q=best+lightweight+linux+distros+for+old+computers&oq=best+lightweight+linux+distros+for+old&gs_l=psy-ab.1.0.0i22i30l8j0i333.6806.8527..10541...2.2..0.159.1119.2j8......0....1..gws-wiz.......0i71j0.a6LTmaIXan0 +[37]: https://en.wikipedia.org/wiki/X_window_manager +[38]: http://puppylinux.com/ +[39]: http://murga-linux.com/puppy/ +[40]: http://tinycorelinux.net/ +[41]: http://tinycorelinux.net/book.html +[42]: http://antixlinux.com/ +[43]: https://www.winehq.org/ +[44]: https://en.wikipedia.org/wiki/DOSBox +[45]: https://www.dosgamesarchive.com/ +[46]: https://www.digitaltrends.com/web/internet-is-getting-slower/ +[47]: https://www.forbes.com/sites/kalevleetaru/2016/02/06/why-the-web-is-so-slow-and-what-it-tells-us-about-the-future-of-online-journalism/#34475c2072f4 +[48]: http://en.wikipedia.org/wiki/Comparison_of_lightweight_web_browsers +[49]: http://www.dillo.org/ +[50]: http://www.netsurf-browser.org/ +[51]: http://textbrowser.github.io/dooble/ +[52]: http://lynx.browser.org/ +[53]: http://en.wikipedia.org/wiki/Links_%28web_browser%29 diff --git a/sources/tech/20200214 PHP Development on Fedora with Eclipse.md b/sources/tech/20200214 PHP Development on Fedora with Eclipse.md new file mode 100644 index 0000000000..a682381686 --- /dev/null +++ b/sources/tech/20200214 PHP Development on Fedora with Eclipse.md @@ -0,0 +1,89 @@ +[#]: collector: (lujun9972) +[#]: translator: ( ) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (PHP Development on Fedora with Eclipse) +[#]: via: (https://fedoramagazine.org/php-development-on-fedora-with-eclipse/) +[#]: author: (Mehdi Haghgoo https://fedoramagazine.org/author/powergame/) + +PHP Development on Fedora with Eclipse +====== + +![][1] + +[Eclipse][2] is a full-featured free and open source IDE developed by the Eclipse Foundation. It has been around since 2001. You can write anything from C/C++ and Java to PHP, Python, HTML, JavaScript, Kotlin, and more in this IDE. + +### Installation + +The software is available from Fedora’s official repository. To install it, invoke: + +``` +sudo dnf install eclipse +``` + +This will install the base IDE and Eclipse platform, which enables you to develop Java applications. In order to add PHP development support to the IDE, run this command: + +``` +sudo dnf install eclipse-pdt +``` + +This will install PHP development tools like PHP project wizard, PHP server configurations, composer support, etc. + +### Features + +This IDE has many features that make PHP development easier. For example, it has a comprehensive project wizard (where you can configure many options for your new projects). It also has built-in features like composer support, debugging support, a browser,a terminal, and more. + +### Sample project + +Now that the IDE is installed, let’s create a simple PHP project. Go to _File →New → Project_. From the resulting dialog, select _PHP project_. Enter a name for your project. There are some other options you might want to change, like changing the project’s default location, enabling JavaScript, and changing PHP version. See the following screenshot. + +![Create A New PHP Project in Eclipse][3] + +You can click the _Finish_ button to create the project or press _Next_ to configure other options like adding include and build paths. You don’t need to change those in most cases. + +Once the project is created, right click on the project folder and select _New → PHP File_ to add a new PHP file to the project. For this tutorial I named it _index.php_, the conventionally-recognized default file in every PHP project. + +![][4] + +Then add the your code to the new file. + +![Demo PHP code][5] + +In the example above, I used CSS, JavaScript, and PHP tags on the same page mainly to show that the IDE is capable of supporting all of them together. + +Once your page is ready, you can see the result output by moving the file to your web server document root or by creating a development PHP server in the project directory. + +Thanks to the built-in terminal in Eclipse, we can launch a PHP development server right from within the IDE. Simply click the terminal icon on the toolbar (![Terminal Icon][6]) and click _OK_. In the new terminal, change to the project directory and run the following command: + +``` +php -S localhost:8080 -t . index.php +``` + +![Terminal output][7] + +Now, open a browser and head over to . If everything has been done correctly per instructions and your code is error-free, you will see the output of your PHP script in the browser. + +![PHP output in Fedora][8] + +-------------------------------------------------------------------------------- + +via: https://fedoramagazine.org/php-development-on-fedora-with-eclipse/ + +作者:[Mehdi Haghgoo][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/powergame/ +[b]: https://github.com/lujun9972 +[1]: https://fedoramagazine.org/wp-content/uploads/2020/02/php-eclipse-816x346.png +[2]: https://projects.eclipse.org/projects/eclipse +[3]: https://fedoramagazine.org/wp-content/uploads/2020/02/Screenshot-from-2020-02-07-01-58-39.png +[4]: https://fedoramagazine.org/wp-content/uploads/2020/02/Screenshot-from-2020-02-07-02-02-05-1024x576.png +[5]: https://fedoramagazine.org/wp-content/uploads/2020/02/code-1024x916.png +[6]: https://fedoramagazine.org/wp-content/uploads/2020/02/Screenshot-from-2020-02-07-03-50-05.png +[7]: https://fedoramagazine.org/wp-content/uploads/2020/02/terminal-1024x239.png +[8]: https://fedoramagazine.org/wp-content/uploads/2020/02/output.png diff --git a/translated/tech/20190407 Manage multimedia files with Git.md b/translated/tech/20190407 Manage multimedia files with Git.md deleted file mode 100644 index e0f8372d14..0000000000 --- a/translated/tech/20190407 Manage multimedia files with Git.md +++ /dev/null @@ -1,246 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (svtter) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Manage multimedia files with Git) -[#]: via: (https://opensource.com/article/19/4/manage-multimedia-files-git) -[#]: author: (Seth Kenlon https://opensource.com/users/seth) - - -通过 Git 来管理多媒体文件 -====== - -学习如何使用 Git 来追踪项目中的大型多媒体文件。 -在系列中的最后一篇文章中描述了如何使用 Git。 - -![video editing dashboard][1] - -Git 是专用于源代码版本控制的工具。因此,Git 很少被用于非纯文本的项目以及行业。然而,异步工作流的优点是十分诱人的,尤其是在一些日益增长的行业中,这种类型的行业把重要的计算和重要的艺术冒险结合起来。其中,包括网页设计、视觉效果、视频游戏、出版、货币设计(是的,这是一个真实的行业),教育 ... 等等。还有许多行业属于这个类型。 - -在这个系列正要谈到 Git 14周年纪念日之际,我们分享了六个少为人知的方式来使用 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 是一个用于文件管理的,可接受的解决方案,只要有一个在版本控制循环之外的游乐场来给艺术家游玩。 - -![Graphic showing relationship between art assets and Git][2] - -一个简单的方法来启用这个特性是 [Git-portal][3],一个通过武装 Git hooks 的 Bash 脚本,它将静态文件从文件夹中移出 Git 的范围,通过链接来取代。Git 提交链接文件(有时候称作快捷方式),这种链接文件比较小,所以所有的提交都是文本文件和那些代表媒体文件的链接。替身文件是链接,所以工程还会像预期的运行,因为本地机器会处理他们,转换成“真的”。当链接文件发生变动时,Git-portal 维护了一个项目的结构,因此逆转这个过程很简单。用户需要考虑的,仅仅是 Git-portal 是否适用于工程,或者需要构建一个没有链接的工程版本(例如需要分发的时候)。 - -Git-portal 也允许通过 rsync 来远程同步静态资源,所以用户可以设置一个远程存储位置,来做为一个中心的授权源。 - -Git-portal 对于多媒体的工程是一个理想的解决方案。类似的多媒体工程包括视频游戏,桌面游戏,需要进行大型3D模型渲染和纹理的虚拟现实工程,[带图的书籍][4]以及 .odt 输出,协作型的[博客站点][5],音乐项目,等等。艺术家在应用程序中以图层(在图形世界中)和曲目(在音乐世界中)的形式执行版本控制并不少见——因此,Git 不会向多媒体项目文件本身添加任何内容。Git 的功能可用于艺术项目的其他部分(例如散文和叙述、项目管理、字幕文件、信贷、营销副本、文档等),而结构化远程备份的功能则由艺术家使用。 - -#### 安装 Git-portal - -Git-portal 的RPM 安装包位于 ,可用于下载和安装。 - -此外,用户可以从 Git-portal 的 Gitlab 主页手动安装。这仅仅是一个 Bash 脚本以及一些 Git hooks(也是 Bash 脚本),但是需要一个快速的构建过程来让它知道安装的位置。 - - -``` -$ git clone 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 remotes - -为 Git-portal 增加一个远程位置是通过 Git 已经存在的功能来实现的。Git-portal 实现了 Git hooks,隐藏在仓库 .git 文件夹中的脚本,来寻找你的远程主机上是否存在以 **_portal** 开头的文件夹。如果它找到一个,它会尝试使用 **rsync** 来与远程位置同步文件。Git-portal 在用户进行 Git push 以及 Git 合并的时候(或者在进行 git pull的时候,实际上是进行一次 fetch 和自动合并)会处理这项任务。 - -如果你近克隆了 Git 仓库,那么你可能永远不会自己添加一个 remote。这是一个标准的 Git 过程: - -``` -$ git remote add origin [git@gitdawg.com][6]:seth/bigproject.git -$ git remote -v -origin [git@gitdawg.com][6]:seth/bigproject.git (fetch) -origin [git@gitdawg.com][6]:seth/bigproject.git (push) -``` - -**origin** 这个名字对你的主要 Git 仓库是一个流行的惯例,为 Git 数据使用它是有意义的。然而,你的 Git-portal 数据是分开存储的,所以你必须创建第二个远程机器来让 Git-portal 了解向哪里 push 和从哪里 pull。取决于你的 Git 主机。你可能需要一个分离的服务器,因为媒体资源可能有GB的大小,使得一个 Git 主机由于空间限制无法承担。或者,可能你的服务器仅允许你访问你的 Git 仓库而不允许一个额外的存储文件夹: - -``` -$ git remote add _portal [seth@example.com][7]:/home/seth/git/bigproject_portal -$ git remote -v -origin [git@gitdawg.com][6]:seth/bigproject.git (fetch) -origin [git@gitdawg.com][6]:seth/bigproject.git (push) -_portal [seth@example.com][7]:/home/seth/git/bigproject_portal (fetch) -_portal [seth@example.com][7]:/home/seth/git/bigproject_portal (push) -``` - -你可能不想把你的所有私人账户放在你的服务器上,而且你不需要这样做。为了提供服务器上仓库的大文件资源权限,你可以运行一个 Git 前端,比如 **[Gitolite][8]** 或者你可以使用 **rrsync** (restricted rsync)。 - -现在你可以推送你的 Git 数据到你的远程 Git 仓库和你的 Git-portal 数据到你的远程 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** 文件夹将会被同步,并且从服务器获取新的内容,以及在每一次 push 的时候发送新的内容。但是,你不需要进行 Git commit 或者 push 来和服务器同步(用户可以使用直接使用 rsync),我发现对于艺术性内容的改变,提交是有用的。这将会把艺术家及其数字资源集成到工作流的其余部分中,并提供有关项目进度和速度的有用元数据。 - -### 其他选项 - -如果 Git-portal 对你而言太过简单,还有一些其他的选择用于 Git 管理大型文件。[Git Large File Storage][9] (LFS) 是一个失效项目的分支,称作 git-media。这个分支由 Github 维护和支持。它需要特殊的命令(例如 **git lfs track** 来保护大型文件不被 Git 追踪)并且需要用户维护一个 .gitattributes 文件来更新哪些仓库中的文件被 LFS 追踪。对于大文件而言,它 _仅_ 支持 HTTP 和 HTTPS 主机。所以你的 LFS 服务器必须进行配置,才能使得用户可以通过 HTTP 而不是 SSH 或 rsync 来进行鉴权。 - -另一个相对 LFS 更灵活的选项是 [git-annex][10]。你可以在我的文章 [managing binary blobs in Git][11] (忽略 git-media 这个已经废弃的项目,它的继任者 Git LFS 没有将它延续下来)中了解更多。Git-annex 是一个灵活且优雅的解决方案。它拥有一个细腻的系统来用于添加,删除,移动仓库中的大型文件。因为它灵活且强大,有很多新的命令和规则需要进行学习,所以建议看一下它的 [文档][12]。 - -然而,如果你的需求很简单,你可能更加喜欢整合已有技术来进行简单且明显任务的解决方案,Git-portal 可能是对于工作而言比较合适的工具。 - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/19/4/manage-multimedia-files-git - -作者:[Seth Kenlon (Red Hat, Community Moderator)][a] -选题:[lujun9972][b] -译者:[svtter](https://github.com/svtter) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/seth -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/video_editing_folder_music_wave_play.png?itok=-J9rs-My (video editing dashboard) -[2]: https://opensource.com/sites/default/files/uploads/git-velocity.jpg (Graphic showing relationship between art assets and Git) -[3]: http://gitlab.com/slackermedia/git-portal.git -[4]: https://www.apress.com/gp/book/9781484241691 -[5]: http://mixedsignals.ml -[6]: mailto:git@gitdawg.com -[7]: mailto:seth@example.com -[8]: https://opensource.com/article/19/4/file-sharing-git -[9]: https://git-lfs.github.com/ -[10]: https://git-annex.branchable.com/ -[11]: https://opensource.com/life/16/8/how-manage-binary-blobs-git-part-7 -[12]: https://git-annex.branchable.com/walkthrough/ diff --git a/translated/tech/20200112 What I learned going from prison to Python.md b/translated/tech/20200112 What I learned going from prison to Python.md deleted file mode 100644 index 83f78c55aa..0000000000 --- a/translated/tech/20200112 What I learned going from prison to Python.md +++ /dev/null @@ -1,102 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (heguangzhi) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (What I learned going from prison to Python) -[#]: via: (https://opensource.com/article/20/1/prison-to-python) -[#]: author: (Shadeed "Sha" Wallace-Stepter https://opensource.com/users/shastepter) - -我在监狱从 Python 中学到了什么 -====== - -开源编程是如何在入监狱中提供机会的![书架上的编程书籍][1] - -不到一年前,我还在圣昆廷州立监狱服刑,我是无期徒刑。 - -我高三的时候,我抢劫了一个人并向他开了枪。现在,我经过一段时间才意识到并承认自己做错了,这是在经历了陪审团审判并看到我的行为带来的恶果后,我知道需要改变自己,我也确实做到了。尽管我对我的行为表示懊悔,但我毕竟开枪打了一个人,并差点杀了他。做这样的事是有后果的,这是理所当然的。所以在我18岁的时候,我被判了终身监禁。 - -监狱是一个非常可怕的地方;我是也不向你推荐的。但是我必须去,所以我去了。我不告诉你具体的细节,但你可以放心,这是一个不可能有太多想法的的地方,许多人在这里养成的坏习惯比他们过去在别处养成的更多。 - -我是幸运儿。当我在服刑的时候,发生了一些不同的事情。我开始想象自己出狱后的的未来,虽然在这之前,我还是已经度过了我所有的成年生活。 - -现在你想想:我是黑人,只受过高中教育。我没有工作经历,如果我离开监狱,在被释放前,我还是一个被定罪的重罪犯。当每个雇主看到我的简历,都不会有“我需要雇用这个人” -想法,我认为是正常的。 - -我不知道我的选择是什么,但我已经下定决心了。我需要做些活下去的事情,并且这和我入狱前的生活一点也不像。 - -### Python 之路 - -最终,我被关在了圣昆廷州立监狱,我不知道我在那里有多幸运。圣昆廷提供了几个自助教育编程项目。这些[改造机会][2]帮助囚犯使他们拥有在获释后避免再次犯罪的技能。 - -作为其中一个编程项目的一部分,2017年我通过圣昆廷媒体项目认识了[杰西卡·麦凯拉]。杰西卡是编程语言[Pythone][4]的爱好者,她开始向我推荐 Python 有多棒,以及它是刚起步的人学习的完美语言。这就是故事变得比小说更精彩的地方。 - - -> 感谢[@northbaypython][5]让[@ShaStepter][6]和我重复[@pycon][7]的主题演讲,让他们被录制下来。我很荣幸与大家分享: -> -> 从监狱到 Pythone: https://t.co/rcumoAgZHm -> -> 大规模裁员:如果我们不雇佣被判重罪的人,谁会呢? https://t.co/fENDUFdxfX [pic.Twitter.com/kpjo8d3ul6][8] -> -> —杰西卡·麦凯拉(@ jessicamckellar)[2019年11月5日][9] - -杰西卡告诉我一些 Python 视频教程,这些教程是她为一家名叫[O’Reilly Media][10]的公司做的,课程是在线的,如果我能接触到它们,那该有多好呀。不幸的是,在监狱里上网是不可能的。但是,我遇到了一个叫 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\. 积极拓展:与当地再就业项目合作,创建招聘渠道。[11] -> -> —杰西卡·麦凯拉(@ jessicamckellar)[2019年5月12日][12] -  - -因此,我想谦卑地挑战开源社区的所有程序员和成员,让他们围绕包容和多样性展开思考。今天,我自豪地站在你们面前,代表一个大多数人都没有想到的群体——以前被监禁的人。但是我们存在,我们渴望证明我们的价值,最重要的是,我们期待被接受。当我们重返社会时,许多挑战等待着我们,我请求你们允许我们有机会展示我们的价值。欢迎我们,接受我们,最重要的是,包容我们。 - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/1/prison-to-python - -作者:[Shadeed "Sha" Wallace-Stepter][a] -选题:[lujun9972][b] -译者:[heguangzhi](https://github.com/heguangzhi) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/shastepter -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/books_programming_languages.jpg?itok=KJcdnXM2 (Programming books on a shelf) -[2]: https://www.dailycal.org/2019/02/27/san-quentin-rehabilitation-programs-offer-inmates-education-a-voice/ -[3]: https://twitter.com/jessicamckellar?lang=en -[4]: https://www.python.org/ -[5]: https://twitter.com/northbaypython?ref_src=twsrc%5Etfw -[6]: https://twitter.com/ShaStepter?ref_src=twsrc%5Etfw -[7]: https://twitter.com/pycon?ref_src=twsrc%5Etfw -[8]: https://t.co/Kpjo8d3ul6 -[9]: https://twitter.com/jessicamckellar/status/1191601209917837312?ref_src=twsrc%5Etfw -[10]: http://shop.oreilly.com/product/110000448.do -[11]: https://t.co/WnzdEUTuxr -[12]: https://twitter.com/jessicamckellar/status/1127640222504636416?ref_src=twsrc%5Etfw diff --git a/translated/tech/20200203 Give an old MacBook new life with Linux.md b/translated/tech/20200203 Give an old MacBook new life with Linux.md new file mode 100644 index 0000000000..043a5ce7fc --- /dev/null +++ b/translated/tech/20200203 Give an old MacBook new life with Linux.md @@ -0,0 +1,83 @@ +[#]: collector: (lujun9972) +[#]: translator: (qianmingtian) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Give an old MacBook new life with Linux) +[#]: via: (https://opensource.com/article/20/2/macbook-linux-elementary) +[#]: author: (Don Watkins https://opensource.com/users/don-watkins) + +用 Linux 给旧 MacBook 以新生 +====== + +Elementary OS 的最新版本 Hera 是一个令人印象深刻的平台,它让过时的 MacBook 得以重生。 + +![Coffee and laptop][1] + +当我安装苹果的 [MacOS Mojave][2] 时,它使我以前可靠的 MacBook Air 运行变慢了。我的计算机于 2015 年发布,具有 4 GB 内存, i5 处理器和 Broadcom 4360 无线卡,但是 Mojava 提供的日常驱动程序使 [GnuCash][3] 不可用,这激起了我重返 Linux 的欲望。我很高兴能做到这一点,但是我感到非常遗憾的是,我的这台 MacBook 被闲置了。 + +我在 MacBook Air 上尝试了几种 Linux 发行版,但总是会有陷阱。有时是无线网卡;还有一次,它缺少对触摸板的支持。看了一些不错的评论后,我决定尝试 [Elementary OS][4] 5.0(Juno)。我用 USB [制作了启动盘][5],并将其插入 MacBook Air 。我来到了一个实时桌面,并且操作系统识别了我的 Broadcom 无线芯片组-我认为这可能已经正常工作了! + +我喜欢在 Elementary OS 中看到的内容。它的 [Pantheon][6] 桌面真的很棒,并且其外观和使用起来的感觉对 Apple 用户来说很熟悉-它的显示屏底部有一个底座,并带有可引导常用应用程序的图标。我喜欢我之前期待的预览,所以我决定安装它,然后我的无线设备消失了。真的很令人失望。我真的很喜欢 Elementary OS ,但是没有无线是不行的。 + +时间快进到 2019 年 12 月,当我在 [Linux4Everyone][7] 播客上听到有关 Elementary 最新版本 v.5.1(Hera) 使MacBook复活的评论时,我决定用 Hera 再试一次。我下载了 ISO ,创建了可启动驱动器,将其插入电脑,这次操作系统识别了我的无线网卡。我可以在上面工作了。 + +![MacBook Air with Hera][8] + +我非常高兴我轻巧又功能强大的 MacBook Air 通过 Linux 焕然一新。我一直在更详细地研究 Elementary OS ,我可以告诉你我印象深刻的东西。 + +### Elementary OS 的功能 + +根据 [Elementary 的博客][9],“新设计的登录和锁定屏幕问候语看起来更清晰,效果更好,并且修复了以前问候语中报告的许多问题,包括焦点问题, HiDPI 问题和更好的本地化。 Hera 的新设计是为了响应来自 Juno 的用户反馈,并启用了一些不错的新功能。” + +轻描淡写的“不错的新功能” — Elementary OS 拥有我见过的最佳设计的 Linux 用户界面之一。默认情况下,系统上的“系统设置”图标位于扩展坞上。更改设置很容易,很快我就按照自己的喜好配置了系统。我需要的文字大小比默认值大,辅助功能要易于使用并且允许我设置大文字和高对比度。我还可以使用较大的图标和其他选项来调整底座。 + +![Elementary OS 的设置界面][10] + +按下 Mac 的 Command 键将弹出一个键盘快捷键列表,这对新用户非常有帮助。 + +![Elementary OS' 的键盘快捷键][11] + +Elementary OS 附带的 [Epiphany][12] Web 浏览器,我发现它非常易于使用。 它与 Chrome , Chromium 或 Firefox 略有不同,但它已经绰绰有余。 + +对于注重安全的用户(我们应该都是), Elementary OS 的安全和隐私设置提供了多个选项,包括防火墙,历史记录,锁定,临时和垃圾文件的自动删除以及用于位置服务开/关的开关。 + +![Elementary OS 的隐私与安全][13] + +### 有关 Elementray OS 的更多信息 + +Elementary OS 最初于 2011 年发布,其最新版本 Hera 于 2019 年 12 月 3 日发布。 Elementary 的联合创始人兼 CXO 的 [Cassidy James Blaede][14] 是操作系统的 UX 架构师。 Cassidy 喜欢使用开放技术来设计和构建有用,可用和令人愉悦的数字产品。 + +Elementary OS 具有出色的用户[文档][15],其代码(在 GPL 3.0 下许可)可在 [GitHub][16] 上获得。 Elementary OS 鼓励参与该项目,因此请务必伸出援手并[加入社区][17]。 + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/20/2/macbook-linux-elementary + +作者:[Don Watkins][a] +选题:[lujun9972][b] +译者:[qianmingtian][c] +校对:[校对者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 +[c]: https://github.com/qianmingtian +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/coffee_cafe_brew_laptop_desktop.jpg?itok=G-n1o1-o (Coffee and laptop) +[2]: https://en.wikipedia.org/wiki/MacOS_Mojave +[3]: https://www.gnucash.org/ +[4]: https://elementary.io/ +[5]: https://opensource.com/life/14/10/test-drive-linux-nothing-flash-drive +[6]: https://opensource.com/article/19/12/pantheon-linux-desktop +[7]: https://www.linux4everyone.com/20-macbook-pro-elementary-os +[8]: https://opensource.com/sites/default/files/uploads/macbookair_hera.png (MacBook Air with Hera) +[9]: https://blog.elementary.io/introducing-elementary-os-5-1-hera/ +[10]: https://opensource.com/sites/default/files/uploads/elementaryos_settings.png (Elementary OS's Settings screen) +[11]: https://opensource.com/sites/default/files/uploads/elementaryos_keyboardshortcuts.png (Elementary OS's Keyboard shortcuts) +[12]: https://en.wikipedia.org/wiki/GNOME_Web +[13]: https://opensource.com/sites/default/files/uploads/elementaryos_privacy-security.png (Elementary OS's Privacy and Security screen) +[14]: https://github.com/cassidyjames +[15]: https://elementary.io/docs/learning-the-basics#learning-the-basics +[16]: https://github.com/elementary +[17]: https://elementary.io/get-involved diff --git a/translated/tech/20200205 Getting started with GnuCash.md b/translated/tech/20200205 Getting started with GnuCash.md deleted file mode 100644 index 69ef66261d..0000000000 --- a/translated/tech/20200205 Getting started with GnuCash.md +++ /dev/null @@ -1,96 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (geekpi) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (Getting started with GnuCash) -[#]: via: (https://opensource.com/article/20/2/gnucash) -[#]: author: (Don Watkins https://opensource.com/users/don-watkins) - -开始使用 GnuCash -====== -使用 GnuCash 管理你的个人或小型企业会计。 -![A dollar sign in a network][1] - -在过去的四年里,我一直在用 [GnuCash][2] 来管理我的个人财务,我对此非常满意。这个开源 (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][3] 安装它,我在运行 Elementary OS 的笔记本上使用它。(本文中的所有截图都来自此次安装)。 - -### 设置 - -安装并启动程序后,你将看到一个欢迎屏幕,该页面提供了创建新账户集、导入 QIF 文件或打开新用户教程的选项。 - -![GnuCash Welcome screen][4] - -#### 个人账户 - -如果你选择第一个选项(正如我所做的那样),GnuCash 会打开一个页面给你向导。它收集初始数据并设置账户首选项,例如账户类型和名称、商业数据(例如,税号)和首选货币。 - -![GnuCash new account setup][5] - -GnuCash 支持个人银行账户、商业账户、汽车贷款、CD 和货币市场账户、儿童保育账户等。 - -例如,首先创建一个简单的支票簿。你可以输入账户的初始余额或以多种格式导入现有账户数据。 - -![GnuCash import data][6] - -#### 开票 - -GnuCash 还支持小型企业功能,包括客户、供应商和开票。要创建发票,请在 **Business ->Invoice** 中输入数据。 - -![GnuCash create invoice][7] - -然后,你可以将发票打印在纸上,也可以将其导出到 PDF 并通过电子邮件发送给你的客户。 - -![GnuCash invoice][8] - -### 获取帮助 - -如果你有任何疑问,它有一个优秀的帮助,你可在菜单栏的右侧获取指导。 - -![GnuCash help][9] - -项目的网站包含许多有用的信息的链接,例如 GnuCash [功能][10]的概述。GnuCash 还提供了[详细的文档][11],可供下载和离线阅读,它还有一个 [wiki][12],为用户和开发人员提供了有用的信息。 - -你可以在项目的 [GitHub][13] 仓库中找到其他文件和文档。GnuCash 项目由志愿者驱动。如果你想参与,请查看项目的 wiki 上的 [Getting involved][14] 部分。 - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/2/gnucash - -作者:[Don Watkins][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/don-watkins -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/osdc_whitehurst_money.png?itok=ls-SOzM0 (A dollar sign in a network) -[2]: https://www.gnucash.org/ -[3]: https://flathub.org/apps/details/org.gnucash.GnuCash -[4]: https://opensource.com/sites/default/files/images/gnucash_welcome.png (GnuCash Welcome screen) -[5]: https://opensource.com/sites/default/files/uploads/gnucash_newaccountsetup.png (GnuCash new account setup) -[6]: https://opensource.com/sites/default/files/uploads/gnucash_importdata.png (GnuCash import data) -[7]: https://opensource.com/sites/default/files/uploads/gnucash_enter-invoice.png (GnuCash create invoice) -[8]: https://opensource.com/sites/default/files/uploads/gnucash_invoice.png (GnuCash invoice) -[9]: https://opensource.com/sites/default/files/uploads/gnucash_help.png (GnuCash help) -[10]: https://www.gnucash.org/features.phtml -[11]: https://www.gnucash.org/docs/v3/C/gnucash-help.pdf -[12]: https://wiki.gnucash.org/wiki/GnuCash -[13]: https://github.com/Gnucash -[14]: https://wiki.gnucash.org/wiki/GnuCash#Getting_involved_in_the_GnuCash_project diff --git a/translated/tech/20200206 3 ways to use PostgreSQL commands.md b/translated/tech/20200206 3 ways to use PostgreSQL commands.md deleted file mode 100644 index 9f5890f370..0000000000 --- a/translated/tech/20200206 3 ways to use PostgreSQL commands.md +++ /dev/null @@ -1,228 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (Morisun029) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (3 ways to use PostgreSQL commands) -[#]: via: (https://opensource.com/article/20/2/postgresql-commands) -[#]: author: (Greg Pittman https://opensource.com/users/greg-p) - -3种使用 PostgreSQL 命令的方式 -====== -无论你需要的东西简单(如一个购物清单)亦或复杂(如色卡生成器) - PostgreSQL 命令都能使它变得容易起来。 - -![Team checklist and to dos][1] - -在 _[PostgreSQL 入门][2]_ 一文中, 我解释了如何安装,设置和开始使用开源数据库软件。然而,使用 [PostgreSQL][3] 中的命令可以做更多事情。 - -例如,我使用 Postgres 来跟踪我杂货店的购物清单。我杂货店里的大多数购物是在家里进行的,其中每周进行一次大批量的采购。我去几个不同的地方购买清单上的东西,因为每家商店都提供特定的选择或质量,亦或更好的价格。最初,我制作了一个HTML表单页面来管理我的购物清单,但这样无法保存我的输入内容。因此,在想到要购买的物品时我必须要马上列出清单,因为到采购时我常常会忘记一些我需要或想要的东西。 - -相反,使用 PostgreSQL,当我想到需要的物品时,我可以随时输入,并在购物前打印出来。你也可以这样做。 - - -### 创建一个简单的购物清单 - - -首先,数据库中输入**psql ** 命令,然后用下面的命令创建一个表: -``` -`Create table groc (item varchar(20), comment varchar(10));` -``` - -输入如下命令在清单中加入商品: - -``` -insert into groc values ('milk', 'K'); -insert into groc values ('bananas', 'KW'); -``` - -括号中有两个信息(逗号隔开):前面是你需要买的东西,后面字母代表你要购买的地点以及哪些东西是你每周通常都要买的(W)。 - -因为 **psql** 有历史记录,你可以按向上键在括号内编辑信息,而无需输入商品的整行信息。 - -在输入一小部分商品后,输入下面命令来检查前面的输入内容。 - -``` -Select * from groc order by comment; - - item | comment -\----------------+--------- - ground coffee | H - butter | K - chips | K - steak | K - milk | K - bananas | KW - raisin bran | KW - raclette | L - goat cheese | L - onion | P - oranges | P - potatoes | P - spinach | PW - broccoli | PW - asparagus | PW - cucumber | PW - sugarsnap peas | PW - salmon | S -(18 rows) -``` - -此命令按_comment_ 列对结果进行排序,以便按购买地点对商品进行分组,从而是你的购物更加方便。 - -使用W来指明你每周要买的东西,当你要清除表单为下周的列表做准备时,你可以将每周的商品保留在购物清单上。输入: - -``` -`delete from groc where comment not like '%W';` -``` - -注意,在 PostgreSQL 中 **%** 表示通配符(而非星号)。所以,要保存输入内容,需要输入: - -``` -`delete from groc where item like 'goat%';` -``` - -不能使用**item = 'goat%'**,这样没用。 - - -在购物时,用以下命令输出清单并打印出来发送到你的手机: - -``` -\o groclist.txt -select * from groc order by comment; -\o -``` - -最后一个命令**\o*,重置输出到命令行。否则,所有的输出会继续输出到你创建的杂货店购物文件中。 - -### 分析复杂的表 - -This item-by-item entry may be okay for short tables, but what about really big ones? A couple of years ago, I was helping the team at [FreieFarbe.de][4] to create a swatchbook of the free colors (freieFarbe means "free colors" in German) from its HLC color palette, where virtually any imaginable print color can be specified by its hue, luminosity (brightness), and chroma (saturation). The result was the [HLC Color Atlas][5], and here's how we did it. - -逐个输入对于数据量小的表来说没有问题,但是对于数据量大的表呢?几年前,我帮团队从 HLC 调色板中创建一个自由色的色样册。事实上,任何能想象到的打印色都可按色调、亮度、浓度(饱和度)来规定。最终结果是[HLC Color Atlas][5],下面是我们如何实现的。 - -该团队向我发送了具有颜色规范的文件,因此我可以编写可与 Scribus 配合使用的 Python 脚本,以轻松生成色样册。一个例子像这样开始: - - -``` -HLC, C, M, Y, K -H010_L15_C010, 0.5, 49.1, 0.1, 84.5 -H010_L15_C020, 0.0, 79.7, 15.1, 78.9 -H010_L25_C010, 6.1, 38.3, 0.0, 72.5 -H010_L25_C020, 0.0, 61.8, 10.6, 67.9 -H010_L25_C030, 0.0, 79.5, 18.5, 62.7 -H010_L25_C040, 0.4, 94.2, 17.3, 56.5 -H010_L25_C050, 0.0, 100.0, 15.1, 50.6 -H010_L35_C010, 6.1, 32.1, 0.0, 61.8 -H010_L35_C020, 0.0, 51.7, 8.4, 57.5 -H010_L35_C030, 0.0, 68.5, 17.1, 52.5 -H010_L35_C040, 0.0, 81.2, 22.0, 46.2 -H010_L35_C050, 0.0, 91.9, 20.4, 39.3 -H010_L35_C060, 0.1, 100.0, 17.3, 31.5 -H010_L45_C010, 4.3, 27.4, 0.1, 51.3 -``` - -这与原文件相比,稍有修改,将数据用制表符分隔。我将其转换成 CSV 格式(逗号分割值),我更喜欢其与 Python 一起使用(CSV 文也很有用因为它可轻松导入到电子表格程序中)。 - -在每一行中,第一项是颜色名称,其后是其 C,M,Y 和 K 颜色值。 该文件包含1,793种颜色,我想要一种分析信息的方法,以了解这些值的范围。 这就是 PostgreSQL 发挥作用的地方。 我不想手动输入所有数据-我认为输入过程中我不可能不出错。 幸运的是,PostgreSQL 为此提供了一个命令。 - -首先用以下命令创建数据库: - -``` -`Create table hlc_cmyk (color varchar(40), c decimal, m decimal, y decimal, k decimal);` -``` - -然后通过以下命令引入数据: - - -``` -`\copy hlc_cmyk from '/home/gregp/HLC_Atlas_CMYK_SampleData.csv' with (header, format CSV);` -``` - - -开头有反斜杠,是因为使用纯**copy** 命令仅限于 root 用户和 Postgres 的超级用户。 在括号中,**header** 表示第一行包含标题,应忽略,**CSV** 表示文件格式为 CSV。 请注意,在此方法中,颜色名称周围不需要括号。 - -如果操作成功,会看到 **COPY NNNN**,其中 N 表示插入到表中的行号。 - -最后,可以用下列命令查询: - -``` -select * from hlc_cmyk; - - color | c | m | y | k -\---------------+-------+-------+-------+------ - H010_L15_C010 | 0.5 | 49.1 | 0.1 | 84.5 - H010_L15_C020 | 0.0 | 79.7 | 15.1 | 78.9 - H010_L25_C010 | 6.1 | 38.3 | 0.0 | 72.5 - H010_L25_C020 | 0.0 | 61.8 | 10.6 | 67.9 - H010_L25_C030 | 0.0 | 79.5 | 18.5 | 62.7 - H010_L25_C040 | 0.4 | 94.2 | 17.3 | 56.5 - H010_L25_C050 | 0.0 | 100.0 | 15.1 | 50.6 - H010_L35_C010 | 6.1 | 32.1 | 0.0 | 61.8 - H010_L35_C020 | 0.0 | 51.7 | 8.4 | 57.5 - H010_L35_C030 | 0.0 | 68.5 | 17.1 | 52.5 -``` - - -所有1,793行数据都是这样的。 回想起来,我不能说此查询对于HLC和Scribus任务是绝对必要的,但是它减轻了我对该项目的一些担忧。 - -为了生成 HLC 色谱,我使用 Scribus 为色板页面中的13,000多种颜色自动创建了颜色图表。 - -我可以使用 **copy** 命令输出数据: - -``` -`\copy hlc_cmyk to '/home/gregp/hlc_cmyk_backup.csv' with (header, format CSV);` -``` - - -我还可以使用 ** where ** 子句根据某些值来限制输出。 - -例如,以下命令将仅发送以 H10 开头的色调值。 - - -``` -`\copy hlc_cmyk to '/home/gregp/hlc_cmyk_backup.csv' with (header, format CSV) where color like 'H10%';` -``` - -### 备份或传输数据库或表 - -我在此要提到的最后一个命令是**pg_dump**,它用于备份 PostgreSQL 数据库,并在 **psql** 控制台之外运行。 例如: - -``` -pg_dump gregp -t hlc_cmyk > hlc.out -pg_dump gregp > dball.out -``` - -第一行是导出 **hlc_cmyk** 表及其结构。第二行将转储 **gregp** 数据库中的所有表。 这对于备份或传输数据库或表非常有用。 - - -要将数据库或表转到另一台电脑( 查看"[ PostgreSQL 入门][2]" 那篇文章获取详细信息),首先在要转入的电脑上创建一个数据库,然后执行相反的操作。 - -``` -`psql -d gregp -f dball.out` -``` - -一步创建所有表并输入数据。 - -### 总结 - -在本文中,我们了解了如何使用 **WHERE** 参数限制操作,以及如何使用 PostgreSQL 通配符 **%**。 我们还了解了如何将大批量数据加载到表中,然后将部分或全部表数据输出到文件,甚至是将整个数据库及其所有单个表输出。 - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/2/postgresql-commands - -作者:[Greg Pittman][a] -选题:[lujun9972][b] -译者:[Morisun029](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]: https://opensource.com/users/greg-p -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/todo_checklist_team_metrics_report.png?itok=oB5uQbzf (Team checklist and to dos) -[2]: https://opensource.com/article/19/11/getting-started-postgresql -[3]: https://www.postgresql.org/ -[4]: http://freiefarbe.de -[5]: https://www.freiefarbe.de/en/thema-farbe/hlc-colour-atlas/ diff --git a/translated/tech/20200207 Connect Fedora to your Android phone with GSConnect.md b/translated/tech/20200207 Connect Fedora to your Android phone with GSConnect.md index c044d2c305..524e72fce0 100644 --- a/translated/tech/20200207 Connect Fedora to your Android phone with GSConnect.md +++ b/translated/tech/20200207 Connect Fedora to your Android phone with GSConnect.md @@ -115,4 +115,4 @@ via: https://fedoramagazine.org/connect-fedora-to-your-android-phone-with-gsconn [12]: https://fedoramagazine.org/wp-content/uploads/2020/01/commands-1024x576.png [13]: https://userbase.kde.org/KDE_Connect/Tutorials/Useful_commands [14]: https://unsplash.com/@pathum_danthanarayana?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText -[15]: https://unsplash.com/s/photos/android?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText \ No newline at end of file +[15]: https://unsplash.com/s/photos/android?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText diff --git a/translated/tech/20200207 NVIDIA-s Cloud Gaming Service GeForce NOW Shamelessly Ignores Linux.md b/translated/tech/20200207 NVIDIA-s Cloud Gaming Service GeForce NOW Shamelessly Ignores Linux.md deleted file mode 100644 index 0d08f5f51f..0000000000 --- a/translated/tech/20200207 NVIDIA-s Cloud Gaming Service GeForce NOW Shamelessly Ignores Linux.md +++ /dev/null @@ -1,82 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (geekpi) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (NVIDIA’s Cloud Gaming Service GeForce NOW Shamelessly Ignores Linux) -[#]: via: (https://itsfoss.com/geforce-now-linux/) -[#]: author: (Ankush Das https://itsfoss.com/author/ankush/) - -NVIDIA 的云游戏服务 GeForce NOW 无耻地忽略了Linux -====== - -NVIDIA的 [GeForce NOW][1] 云游戏服务对于那些可能没有硬件但想使用 GeForce NOW 在最新的最好的游戏上获得尽可能好的游戏体验玩家来说是充满前景的(在线推流游戏,并在任何设备上玩)。 - -该服务仅限于一些用户(以等待列表的形式)使用。然而,他们最近宣布 [GeForce NOW 面向所有人开放][2]。但实际上并不是。 - -有趣的是,它**并不是面向全球所有区域**。而且,更糟的是 **GeForce NOW 不支持 Linux**。 - -![][3] - -### GeForce NOW 并不是向“所有人开放” - -制作一个基于订阅的云服务来玩游戏的目的是消除平台依赖性。 - -就像你通常使用浏览器访问网站一样,你应该能够在每个平台上玩游戏。是这个概念吧? - -![][4] - -好吧,这绝对不是火箭科学,但是 NVIDIA 仍然不支持 Linux(和iOS)? - -### 是因为没有人使用 Linux 吗? - -我非常不同意这一点,即使这是某些不支持 Linux 的原因。如果真是这样,我不会在使用 Linux 作为主要桌面操作系统时为 “It’s FOSS” 写文章。 - -不仅如此,如果 Linux 不值一提,你认为为何一个 Twitter 用户会提到缺少 Linux 支持? - -![][5] - -是的,也许用户群不够大,但是在考虑将其作为基于云的服务时,**不支持 Linux** 显得没有意义。 - -从技术上讲,如果 Linux 上没有游戏,那么 **Valve** 就不会在 Linux 上改进 [Steam Play][6] 来帮助更多用户在 Linux 上玩纯 Windows 的游戏。 - -我不想说不正确的说法,但台式机 Linux 游戏的发展比以往任何时候都要快(即使统计上要比 Mac 和 Windows 要低)。 - -### 云游戏不应该像这样 - -![][7] - -如上所述,找到使用 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][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://itsfoss.com/author/ankush/ -[b]: https://github.com/lujun9972 -[1]: https://www.nvidia.com/en-us/geforce-now/ -[2]: https://blogs.nvidia.com/blog/2020/02/04/geforce-now-pc-gaming/ -[3]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/02/nvidia-geforce-now-linux.jpg?ssl=1 -[4]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/02/nvidia-geforce-now.png?ssl=1 -[5]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/02/geforce-now-twitter-1.jpg?ssl=1 -[6]: https://itsfoss.com/steam-play/ -[7]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/02/ge-force-now.jpg?ssl=1 diff --git a/translated/tech/20200210 Install All Essential Media Codecs in Ubuntu With This Single Command -Beginner-s Tip.md b/translated/tech/20200210 Install All Essential Media Codecs in Ubuntu With This Single Command -Beginner-s Tip.md new file mode 100644 index 0000000000..048c0493ab --- /dev/null +++ b/translated/tech/20200210 Install All Essential Media Codecs in Ubuntu With This Single Command -Beginner-s Tip.md @@ -0,0 +1,114 @@ +[#]: collector: (lujun9972) +[#]: translator: (geekpi) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Install All Essential Media Codecs in Ubuntu With This Single Command [Beginner’s Tip]) +[#]: via: (https://itsfoss.com/install-media-codecs-ubuntu/) +[#]: author: (Abhishek Prakash https://itsfoss.com/author/abhishek/) + +使用此单条命令在 Ubuntu 中安装所有基本媒体编解码器(初学者技巧) +====== + +如果你刚刚安装了 Ubuntu 或其他 [Ubuntu 特色版本][1] 如 Kubuntu、Lubuntu 等,你会注意到系统无法播放某些音频或视频文件。 + +对于视频文件,你可以[在 Ubuntu 上安装 VLC][2]。 [VLC][3] 是 [Linux 上的最佳视频播放器][4]之一,它几乎可以播放任何视频文件格式。但你仍然会遇到无法播放音频和 flash 的麻烦。 + +好消息是 [Ubuntu][5] 提供了一个软件包来安装所有基本的媒体编解码器:ubuntu-restricted-extras。 + +![][6] + +### 什么是 Ubuntu Restricted Extras? + +ubuntu-restricted-extras 是一个包含各种基本软件,如 Flash 插件、[unrar][7]、[gstreamer][8]、mp4、[Ubuntu 中的 Chromium 浏览器][9]的编解码器等的软件包。 + +由于这些软件不是开源软件,并且其中一些涉及软件专利,因此 Ubuntu 默认情况下不会安装它们。你必须使用 multiverse 仓库,它是 Ubuntu 专门为用户提供非开源软件而创建的仓库。 + +请阅读本文以[了解有关各种 Ubuntu 仓库的更多信息][10]。 + +### 如何安装 Ubuntu Restricted Extras? + +令我惊讶的是,我发现软件中心未列出 Ubuntu Restricted Extras。不管怎样,你都可以使用命令行安装该软件包,这非常简单。 + +在菜单中搜索或使用[终端键盘快捷键 Ctrl+Alt+T][11] 打开终端。 + +由于 ubuntu-restrcited-extras 软件包在 multiverse 仓库中,因此你应验证系统上已启用 multiverse 仓库: + +``` +sudo add-apt-repository multiverse +``` + +然后你可以使用以下命令安装: + +``` +sudo apt install ubuntu-restricted-extras +``` + +输入回车后,你会被要求输入密码,_**当你输入密码时,屏幕不会有显示**_。这是正常的。输入你的密码并回车。 + +它将显示大量要安装的包。按回车确认选择。 + +你会看到 [EULA][12](最终用户许可协议),如下所示: + +![Press Tab key to select OK and press Enter key][13] + +浏览此页面可能会很麻烦,但是请放心。只需按 Tab 键,它将高亮选项。当高亮在正确的选项上,按下回车确认你的选择。 + +![Press Tab key to highlight Yes and press Enter key][14] + +安装完成后,由于新安装的媒体编解码器,你应该可以播放 MP3 和其他媒体格式了。 + +##### 在 Kubuntu、Lubuntu、Xubuntu 上安装受限制的额外软件包 + +请记住,Kubuntu、Lubuntu 和 Xubuntu 都有此软件包,并有各自的名称。它们本应使用相同的名字,但不幸的是并不是。 + +在 Kubuntu 上,使用以下命令: + +``` +sudo apt install kubuntu-restricted-extras +``` + +在 Lubuntu 上,使用: + +``` +sudo apt install lubuntu-restricted-extras +``` + +在 Xubuntu 上,你应该使用: + +``` +sudo apt install xubuntu-restricted-extras +``` + +我一直建议将 ubuntu-restricted-extras 作为[安装 Ubuntu 后要做的基本事情][15]之一。只需一个命令即可在 Ubuntu 中安装多个编解码器。 + +希望你喜欢 Ubuntu 初学者系列中这一技巧。以后,我将分享更多此类技巧。 + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/install-media-codecs-ubuntu/ + +作者:[Abhishek Prakash][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://itsfoss.com/author/abhishek/ +[b]: https://github.com/lujun9972 +[1]: https://itsfoss.com/which-ubuntu-install/ +[2]: https://itsfoss.com/install-latest-vlc/ +[3]: https://www.videolan.org/index.html +[4]: https://itsfoss.com/video-players-linux/ +[5]: https://ubuntu.com/ +[6]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/02/Media_Codecs_in_Ubuntu.png?ssl=1 +[7]: https://itsfoss.com/use-rar-ubuntu-linux/ +[8]: https://gstreamer.freedesktop.org/ +[9]: https://itsfoss.com/install-chromium-ubuntu/ +[10]: https://itsfoss.com/ubuntu-repositories/ +[11]: https://itsfoss.com/ubuntu-shortcuts/ +[12]: https://en.wikipedia.org/wiki/End-user_license_agreement +[13]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/02/installing_ubuntu_restricted_extras.jpg?ssl=1 +[14]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/02/installing_ubuntu_restricted_extras_1.jpg?ssl=1 +[15]: https://itsfoss.com/things-to-do-after-installing-ubuntu-18-04/ diff --git a/translated/tech/20200210 Top hacks for the YaCy open source search engine.md b/translated/tech/20200210 Top hacks for the YaCy open source search engine.md new file mode 100644 index 0000000000..54c4b2f869 --- /dev/null +++ b/translated/tech/20200210 Top hacks for the YaCy open source search engine.md @@ -0,0 +1,99 @@ +[#]: collector: (lujun9972) +[#]: translator: (HankChow) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (Top hacks for the YaCy open source search engine) +[#]: via: (https://opensource.com/article/20/2/yacy-search-engine-hacks) +[#]: author: (Seth Kenlon https://opensource.com/users/seth) + +使用开源搜索引擎 YaCy 的技巧 +====== +> 不想再受制于各种版本的搜索引擎?使用 YaCy 自定义一款吧。 +![Browser of things][1] + +在我以前介绍 [YaCy 入门][2]的文章中讲述过 [YaCy][3] 这个点对点peer-to-peer式的搜索引擎是如何安装和使用的。YaCy 最大的一个特点就是可以在本地部署,全球范围内的每一个 YaCy 用户都是构成整个分布式搜索引擎架构的其中一个节点,因此每个用户都可以掌控自己的互联网搜索体验。 + +Google 曾经提供过 `google.com/linux` 这样的简便方式以便快速筛选出和 Linux 相关的搜索内容,这个功能受到了很多人的青睐,但 Google 最终还是在 2011 年的时候把它[下线][4]了。 + +而 YaCy 则让自定义搜索引擎变得可能。 + +### 自定义 YaCy + +YaCy 安装好之后,只需要访问 `localhost:8090` 就可以使用了。要开始自定义搜索引擎,只需要点击右上角的“管理Administration”按钮,如果没有找到,需要点击菜单图标打开菜单。 + +你可以在管理面板中配置 YaCy 对系统资源的使用策略,以及如何跟其它的 YaCy 客户端进行交互。 + +![YaCy profile selector][5] + +例如,点击侧栏中的“初步First steps”按钮可以配置备用端口,以及设置 YaCy 对内存和硬盘的使用量;而“监控Monitoring”面板则可以监控 YaCy 的运行状况。大多数功能都只需要在面板上点击几下就可以完成了,例如以下几个常用的功能。 + +### 搜索应用 + +目前市面上也有不少公司推出了[内网搜索应用][6],而 YaCy 的优势是免费使用。对于能够通过 HTTP、FTP、Samba 等协议访问的文件,YaCy 都可以进行索引,因此无论是作为私人的文件搜索还是企业内部的本地共享文件搜索,YaCy 都可以实现。它可以让内部网络中的用户使用自定义配置的 YaCy 查找共享文件,于此同时保持对内部网络以外的用户不可见。 + +### 网络配置 + +YaCy 在默认情况下就对隐私隔离有比较好的支持。点击“用例与账号Use Case & Account”页面顶部的“网络配置Network Configuration”链接,即可进入网络配置面板设置点对点网络。 + +![YaCy network configuration][7] + +### 爬取站点 + +YaCy 点对点的分布式运作方式决定了它对页面的爬取是由用户驱动的。任何一个公司的爬虫都不可能完全访问到整个互联网上的所有页面,对于 YaCy 来说也是这样,一个站点只有在被用户指定爬取的前提下,才会被 YaCy 爬取并进入索引。 + +YaCy 客户端提供了两种爬取页面的方式:一是自定义爬虫,二是使用 YaCy 推荐的爬虫。 + +![YaCy advanced crawler][8] + +#### 自定义爬虫任务 + +自定义爬虫是指由用户输入指定的网站 URL 并启动 YaCy 的爬虫任务。只需要点击“高级爬虫Advanced Crawler”并输入计划爬取的 URL,然后选择页面底部的“进行远程索引Do Remote indexing”选项,这个选项会让客户端将上面输入的 URL 向互联网广播,接收到广播的其它远程客户端就会开始爬取这些 URL 所指向的页面。 + +点击页面底部的“开始新爬虫任务Start New Crawl Job”按钮就可以开始进行爬取了,我就是这样对一些常用和有用站点进行爬取和索引的。 + +爬虫任务启动之后,YaCy 会将这些 URL 对应的页面在本地生成和存储索引。在高级模式下,也就是本地计算机允许 8090 端口流量进出时,全网的 YaCy 用户都可以使用到这一份索引。 + +#### 加入爬虫任务 + +尽管 YaCy 用户已经在互联网上爬取了很多页面,但对于全网浩如烟海的页面而言也只是沧海一粟。单个用户所拥有的资源远不及很多大公司的网络爬虫,但大量 YaCy 用户如果联合起来成为一个社区,能产生的力量就大得多了。只要开启了 YaCy 的爬虫请求广播功能,就可以让其它客户端参与进来爬取更多页面。 + +只需要在“高级爬虫Advanced Crawler”面板中点击页面顶部的“远程爬取Remote Crawling”,勾选“加载Load”复选框,就可以让你的客户端接受其它人发来的爬虫任务请求了。 + +![YaCy remote crawling][9] + +### YaCy 监控相关 + +YaCy 除了作为一个非常强大的搜索引擎,还提供了很丰富的用户体验。你可以在“监控Monitor”面板中监控 YaCy 客户端的网络运行状况,甚至还可以了解到有多少人从 YaCy 社区中获取到了自己所需要的东西。 + +![YaCy monitoring screen][10] + +### 搜索引擎发挥了作用 + +你使用 YaCy 的时间越长,就越会思考搜索引擎如何改变自己的视野,因为你对互联网的体验很大一部分来自于你在搜索引擎中一次次简单查询的结果。实际上,当你和不同行业的人交流时,可能会注意到每个人对“互联网”的理解都有所不同。有些人会认为,互联网的搜索引擎中充斥着各种广告和推广,同时也仅仅能从搜索结果中获取到有限的信息。例如,假设有人不断搜索关于关键词 X 的内容,那么大部分商业搜索引擎都会在搜索结果中提高关键词 X 的权重,但与此同时,另一个关键词 Y 的权重则会相对降低,从而让关键词 Y 被淹没在搜索结果当中。 + +就像在现实生活中一样,走出舒适圈会让你看到一个更广阔的世界。尝试使用 YaCy,看看你会不会有所收获。 + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/20/2/yacy-search-engine-hacks + +作者:[Seth Kenlon][a] +选题:[lujun9972][b] +译者:[HankChow](https://github.com/HankChow) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/seth +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/browser_desktop_website_checklist_metrics.png?itok=OKKbl1UR (Browser of things) +[2]: https://opensource.com/article/20/2/open-source-search-engine +[3]: https://yacy.net/ +[4]: https://www.linuxquestions.org/questions/linux-news-59/is-there-no-more-linux-google-884306/ +[5]: https://opensource.com/sites/default/files/uploads/yacy-profiles.jpg (YaCy profile selector) +[6]: https://en.wikipedia.org/wiki/Vivisimo +[7]: https://opensource.com/sites/default/files/uploads/yacy-network-config.jpg (YaCy network configuration) +[8]: https://opensource.com/sites/default/files/uploads/yacy-advanced-crawler.jpg (YaCy advanced crawler) +[9]: https://opensource.com/sites/default/files/uploads/yacy-remote-crawl-accept.jpg (YaCy remote crawling) +[10]: https://opensource.com/sites/default/files/uploads/yacy-monitor.jpg (YaCy monitoring screen) diff --git a/translated/tech/20200212 How to Change the Default Terminal in Ubuntu.md b/translated/tech/20200212 How to Change the Default Terminal in Ubuntu.md new file mode 100644 index 0000000000..f47ff7832d --- /dev/null +++ b/translated/tech/20200212 How to Change the Default Terminal in Ubuntu.md @@ -0,0 +1,86 @@ +[#]: collector: (lujun9972) +[#]: translator: (geekpi) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (How to Change the Default Terminal in Ubuntu) +[#]: via: (https://itsfoss.com/change-default-terminal-ubuntu/) +[#]: author: (Abhishek Prakash https://itsfoss.com/author/abhishek/) + +如何在 Ubuntu 中更改默认终端 +====== + +终端是 Linux 系统的关键部分。它能让你通过 shell 访问 Linux 系统。Linux 上有多个终端应用(技术上称为终端仿真器)。 + +大多数[桌面环境][1]都有自己的终端实现。它们的外观可能有所不同,并且可能有不同的快捷键。 + +例如,[Guake 终端][2]对高级用户非常有用,它提供了一些可能无法在发行版默认终端中使用的功能。 + +你可以在系统上安装其他终端,并将其设为默认,并能通过[快捷键 Ctrl+Alt+T][3] 打开。 + +现在的问题来了,如何在 Ubuntu 中更改默认终端。它没有遵循[更改 Ubuntu 中的默认应用][4]的标准方式,要怎么做? + +### 更改 Ubuntu 中的默认终端 + +![][5] + +在基于 Debian 的发行版中,有一个方便的命令行程序,称为 [update-alternatives][6],可用于处理默认应用。 + +你可以使用它来更改默认的命令行文本编辑器、终端等。为此,请运行以下命令: + +``` +sudo update-alternatives --config x-terminal-emulator +``` + +它将显示系统上存在的所有可作为默认值的终端仿真器。当前的默认终端标有星号。 + +``` +[email protected]:~$ sudo update-alternatives --config x-terminal-emulator +There are 2 choices for the alternative x-terminal-emulator (providing /usr/bin/x-terminal-emulator). + + Selection Path Priority Status +------------------------------------------------------------ + 0 /usr/bin/gnome-terminal.wrapper 40 auto mode + 1 /usr/bin/gnome-terminal.wrapper 40 manual mode +* 2 /usr/bin/st 15 manual mode + +Press to keep the current choice[*], or type selection number: +``` + +你要做的就是输入选择编号。对我而言,我想使用 GNOME 终端,而不是来自 [Regolith 桌面][7]的终端。 + +``` +Press to keep the current choice[*], or type selection number: 1 +update-alternatives: using /usr/bin/gnome-terminal.wrapper to provide /usr/bin/x-terminal-emulator (x-terminal-emulator) in manual mode +``` + +##### 自动模式 vs 手动模式 + +你可能已经在 update-alternatives 命令的输出中注意到了自动模式和手动模式。 + +如果选择自动模式,那么在安装或删除软件包时,系统可能会自动决定默认应用。该决定受优先级数字的影响(如上一节中的命令输出所示)。 + +假设你的系统上安装了 5 个终端仿真器,并删除了默认的仿真器。现在,你的系统将检查哪些仿真器处于自动模式。如果有多个,它将​​选择优先级最高的一个作为默认仿真器。 + +我希望你觉得这个小技巧有用。随时欢迎提出问题和建议。 + +-------------------------------------------------------------------------------- + +via: https://itsfoss.com/change-default-terminal-ubuntu/ + +作者:[Abhishek Prakash][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://itsfoss.com/author/abhishek/ +[b]: https://github.com/lujun9972 +[1]: https://itsfoss.com/best-linux-desktop-environments/ +[2]: http://guake-project.org/ +[3]: https://itsfoss.com/ubuntu-shortcuts/ +[4]: https://itsfoss.com/change-default-applications-ubuntu/ +[5]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/02/switch_default_terminal_ubuntu.png?ssl=1 +[6]: https://manpages.ubuntu.com/manpages/trusty/man8/update-alternatives.8.html +[7]: https://itsfoss.com/regolith-linux-desktop/ From 493ecc3f7314370764d795d10a7c1af13d8da984 Mon Sep 17 00:00:00 2001 From: Morisun029 <54652937+Morisun029@users.noreply.github.com> Date: Sat, 15 Feb 2020 18:45:13 +0800 Subject: [PATCH 16/18] fix issue --- ...00206 3 ways to use PostgreSQL commands.md | 228 ++++++++++++++++++ 1 file changed, 228 insertions(+) create mode 100644 translated/tech/20200206 3 ways to use PostgreSQL commands.md diff --git a/translated/tech/20200206 3 ways to use PostgreSQL commands.md b/translated/tech/20200206 3 ways to use PostgreSQL commands.md new file mode 100644 index 0000000000..9f5890f370 --- /dev/null +++ b/translated/tech/20200206 3 ways to use PostgreSQL commands.md @@ -0,0 +1,228 @@ +[#]: collector: (lujun9972) +[#]: translator: (Morisun029) +[#]: reviewer: ( ) +[#]: publisher: ( ) +[#]: url: ( ) +[#]: subject: (3 ways to use PostgreSQL commands) +[#]: via: (https://opensource.com/article/20/2/postgresql-commands) +[#]: author: (Greg Pittman https://opensource.com/users/greg-p) + +3种使用 PostgreSQL 命令的方式 +====== +无论你需要的东西简单(如一个购物清单)亦或复杂(如色卡生成器) + PostgreSQL 命令都能使它变得容易起来。 + +![Team checklist and to dos][1] + +在 _[PostgreSQL 入门][2]_ 一文中, 我解释了如何安装,设置和开始使用开源数据库软件。然而,使用 [PostgreSQL][3] 中的命令可以做更多事情。 + +例如,我使用 Postgres 来跟踪我杂货店的购物清单。我杂货店里的大多数购物是在家里进行的,其中每周进行一次大批量的采购。我去几个不同的地方购买清单上的东西,因为每家商店都提供特定的选择或质量,亦或更好的价格。最初,我制作了一个HTML表单页面来管理我的购物清单,但这样无法保存我的输入内容。因此,在想到要购买的物品时我必须要马上列出清单,因为到采购时我常常会忘记一些我需要或想要的东西。 + +相反,使用 PostgreSQL,当我想到需要的物品时,我可以随时输入,并在购物前打印出来。你也可以这样做。 + + +### 创建一个简单的购物清单 + + +首先,数据库中输入**psql ** 命令,然后用下面的命令创建一个表: +``` +`Create table groc (item varchar(20), comment varchar(10));` +``` + +输入如下命令在清单中加入商品: + +``` +insert into groc values ('milk', 'K'); +insert into groc values ('bananas', 'KW'); +``` + +括号中有两个信息(逗号隔开):前面是你需要买的东西,后面字母代表你要购买的地点以及哪些东西是你每周通常都要买的(W)。 + +因为 **psql** 有历史记录,你可以按向上键在括号内编辑信息,而无需输入商品的整行信息。 + +在输入一小部分商品后,输入下面命令来检查前面的输入内容。 + +``` +Select * from groc order by comment; + + item | comment +\----------------+--------- + ground coffee | H + butter | K + chips | K + steak | K + milk | K + bananas | KW + raisin bran | KW + raclette | L + goat cheese | L + onion | P + oranges | P + potatoes | P + spinach | PW + broccoli | PW + asparagus | PW + cucumber | PW + sugarsnap peas | PW + salmon | S +(18 rows) +``` + +此命令按_comment_ 列对结果进行排序,以便按购买地点对商品进行分组,从而是你的购物更加方便。 + +使用W来指明你每周要买的东西,当你要清除表单为下周的列表做准备时,你可以将每周的商品保留在购物清单上。输入: + +``` +`delete from groc where comment not like '%W';` +``` + +注意,在 PostgreSQL 中 **%** 表示通配符(而非星号)。所以,要保存输入内容,需要输入: + +``` +`delete from groc where item like 'goat%';` +``` + +不能使用**item = 'goat%'**,这样没用。 + + +在购物时,用以下命令输出清单并打印出来发送到你的手机: + +``` +\o groclist.txt +select * from groc order by comment; +\o +``` + +最后一个命令**\o*,重置输出到命令行。否则,所有的输出会继续输出到你创建的杂货店购物文件中。 + +### 分析复杂的表 + +This item-by-item entry may be okay for short tables, but what about really big ones? A couple of years ago, I was helping the team at [FreieFarbe.de][4] to create a swatchbook of the free colors (freieFarbe means "free colors" in German) from its HLC color palette, where virtually any imaginable print color can be specified by its hue, luminosity (brightness), and chroma (saturation). The result was the [HLC Color Atlas][5], and here's how we did it. + +逐个输入对于数据量小的表来说没有问题,但是对于数据量大的表呢?几年前,我帮团队从 HLC 调色板中创建一个自由色的色样册。事实上,任何能想象到的打印色都可按色调、亮度、浓度(饱和度)来规定。最终结果是[HLC Color Atlas][5],下面是我们如何实现的。 + +该团队向我发送了具有颜色规范的文件,因此我可以编写可与 Scribus 配合使用的 Python 脚本,以轻松生成色样册。一个例子像这样开始: + + +``` +HLC, C, M, Y, K +H010_L15_C010, 0.5, 49.1, 0.1, 84.5 +H010_L15_C020, 0.0, 79.7, 15.1, 78.9 +H010_L25_C010, 6.1, 38.3, 0.0, 72.5 +H010_L25_C020, 0.0, 61.8, 10.6, 67.9 +H010_L25_C030, 0.0, 79.5, 18.5, 62.7 +H010_L25_C040, 0.4, 94.2, 17.3, 56.5 +H010_L25_C050, 0.0, 100.0, 15.1, 50.6 +H010_L35_C010, 6.1, 32.1, 0.0, 61.8 +H010_L35_C020, 0.0, 51.7, 8.4, 57.5 +H010_L35_C030, 0.0, 68.5, 17.1, 52.5 +H010_L35_C040, 0.0, 81.2, 22.0, 46.2 +H010_L35_C050, 0.0, 91.9, 20.4, 39.3 +H010_L35_C060, 0.1, 100.0, 17.3, 31.5 +H010_L45_C010, 4.3, 27.4, 0.1, 51.3 +``` + +这与原文件相比,稍有修改,将数据用制表符分隔。我将其转换成 CSV 格式(逗号分割值),我更喜欢其与 Python 一起使用(CSV 文也很有用因为它可轻松导入到电子表格程序中)。 + +在每一行中,第一项是颜色名称,其后是其 C,M,Y 和 K 颜色值。 该文件包含1,793种颜色,我想要一种分析信息的方法,以了解这些值的范围。 这就是 PostgreSQL 发挥作用的地方。 我不想手动输入所有数据-我认为输入过程中我不可能不出错。 幸运的是,PostgreSQL 为此提供了一个命令。 + +首先用以下命令创建数据库: + +``` +`Create table hlc_cmyk (color varchar(40), c decimal, m decimal, y decimal, k decimal);` +``` + +然后通过以下命令引入数据: + + +``` +`\copy hlc_cmyk from '/home/gregp/HLC_Atlas_CMYK_SampleData.csv' with (header, format CSV);` +``` + + +开头有反斜杠,是因为使用纯**copy** 命令仅限于 root 用户和 Postgres 的超级用户。 在括号中,**header** 表示第一行包含标题,应忽略,**CSV** 表示文件格式为 CSV。 请注意,在此方法中,颜色名称周围不需要括号。 + +如果操作成功,会看到 **COPY NNNN**,其中 N 表示插入到表中的行号。 + +最后,可以用下列命令查询: + +``` +select * from hlc_cmyk; + + color | c | m | y | k +\---------------+-------+-------+-------+------ + H010_L15_C010 | 0.5 | 49.1 | 0.1 | 84.5 + H010_L15_C020 | 0.0 | 79.7 | 15.1 | 78.9 + H010_L25_C010 | 6.1 | 38.3 | 0.0 | 72.5 + H010_L25_C020 | 0.0 | 61.8 | 10.6 | 67.9 + H010_L25_C030 | 0.0 | 79.5 | 18.5 | 62.7 + H010_L25_C040 | 0.4 | 94.2 | 17.3 | 56.5 + H010_L25_C050 | 0.0 | 100.0 | 15.1 | 50.6 + H010_L35_C010 | 6.1 | 32.1 | 0.0 | 61.8 + H010_L35_C020 | 0.0 | 51.7 | 8.4 | 57.5 + H010_L35_C030 | 0.0 | 68.5 | 17.1 | 52.5 +``` + + +所有1,793行数据都是这样的。 回想起来,我不能说此查询对于HLC和Scribus任务是绝对必要的,但是它减轻了我对该项目的一些担忧。 + +为了生成 HLC 色谱,我使用 Scribus 为色板页面中的13,000多种颜色自动创建了颜色图表。 + +我可以使用 **copy** 命令输出数据: + +``` +`\copy hlc_cmyk to '/home/gregp/hlc_cmyk_backup.csv' with (header, format CSV);` +``` + + +我还可以使用 ** where ** 子句根据某些值来限制输出。 + +例如,以下命令将仅发送以 H10 开头的色调值。 + + +``` +`\copy hlc_cmyk to '/home/gregp/hlc_cmyk_backup.csv' with (header, format CSV) where color like 'H10%';` +``` + +### 备份或传输数据库或表 + +我在此要提到的最后一个命令是**pg_dump**,它用于备份 PostgreSQL 数据库,并在 **psql** 控制台之外运行。 例如: + +``` +pg_dump gregp -t hlc_cmyk > hlc.out +pg_dump gregp > dball.out +``` + +第一行是导出 **hlc_cmyk** 表及其结构。第二行将转储 **gregp** 数据库中的所有表。 这对于备份或传输数据库或表非常有用。 + + +要将数据库或表转到另一台电脑( 查看"[ PostgreSQL 入门][2]" 那篇文章获取详细信息),首先在要转入的电脑上创建一个数据库,然后执行相反的操作。 + +``` +`psql -d gregp -f dball.out` +``` + +一步创建所有表并输入数据。 + +### 总结 + +在本文中,我们了解了如何使用 **WHERE** 参数限制操作,以及如何使用 PostgreSQL 通配符 **%**。 我们还了解了如何将大批量数据加载到表中,然后将部分或全部表数据输出到文件,甚至是将整个数据库及其所有单个表输出。 + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/20/2/postgresql-commands + +作者:[Greg Pittman][a] +选题:[lujun9972][b] +译者:[Morisun029](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/greg-p +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/todo_checklist_team_metrics_report.png?itok=oB5uQbzf (Team checklist and to dos) +[2]: https://opensource.com/article/19/11/getting-started-postgresql +[3]: https://www.postgresql.org/ +[4]: http://freiefarbe.de +[5]: https://www.freiefarbe.de/en/thema-farbe/hlc-colour-atlas/ From 2f095f2d0363d73620a275592762e5ceff759b57 Mon Sep 17 00:00:00 2001 From: Morisun029 <54652937+Morisun029@users.noreply.github.com> Date: Sat, 15 Feb 2020 18:50:01 +0800 Subject: [PATCH 17/18] update --- ...190407 Manage multimedia files with Git.md | 236 ++++++++++++++++++ ...-CD resources to set you up for success.md | 57 +++++ ...t I learned going from prison to Python.md | 104 ++++++++ ...in one place with this open source tool.md | 72 ++++++ ...ith this open source window environment.md | 111 ++++++++ .../20200205 Getting started with GnuCash.md | 96 +++++++ ...e GeForce NOW Shamelessly Ignores Linux.md | 82 ++++++ 7 files changed, 758 insertions(+) create mode 100644 published/20190407 Manage multimedia files with Git.md create mode 100644 published/20191227 Top CI-CD resources to set you up for success.md create mode 100644 published/20200112 What I learned going from prison to Python.md create mode 100644 published/20200122 Get your RSS feeds and podcasts in one place with this open source tool.md create mode 100644 published/20200124 Run multiple consoles at once with this open source window environment.md create mode 100644 published/20200205 Getting started with GnuCash.md create mode 100644 published/20200207 NVIDIA-s Cloud Gaming Service GeForce NOW Shamelessly Ignores Linux.md diff --git a/published/20190407 Manage multimedia files with Git.md b/published/20190407 Manage multimedia files with Git.md new file mode 100644 index 0000000000..befd819d4f --- /dev/null +++ b/published/20190407 Manage multimedia files with Git.md @@ -0,0 +1,236 @@ +[#]: collector: (lujun9972) +[#]: translator: (svtter) +[#]: reviewer: (wxy) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-11889-1.html) +[#]: subject: (Manage multimedia files with Git) +[#]: via: (https://opensource.com/article/19/4/manage-multimedia-files-git) +[#]: author: (Seth Kenlon https://opensource.com/users/seth) + + +通过 Git 来管理多媒体文件 +====== + +> 在我们有关 Git 鲜为人知的用法系列的最后一篇文章中,了解如何使用 Git 跟踪项目中的大型多媒体文件。 + +![](https://img.linux.net.cn/data/attachment/album/202002/13/235436mhub12qhxzmbw11p.png) + +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 是一个用于文件管理的,可接受的解决方案,只要有一个在版本控制循环之外的游乐场来给艺术家游玩就行。 + +![Graphic showing relationship between art assets and Git][2] + +一个启用这个特性的简单方法是 [Git-portal][3],这是一个通过带有 Git 钩子的 Bash 脚本,它可将静态文件从文件夹中移出 Git 的范围,并通过符号链接来取代它们。Git 提交链接文件(有时候称作别名或快捷方式),这种符号链接文件比较小,所以所有的提交都是文本文件和那些代表媒体文件的链接。因为替身文件是符号链接,所以工程还会像预期的运行,因为本地机器会处理他们,转换成“真实的”副本。当用符号链接替换出文件时,Git-portal 维护了项目的结构,因此,如果你认为 Git-portal 不适合你的项目,或者你需要构建项目的一个没有符号链接的版本(比如用于分发),则可以轻松地逆转该过程。 + +Git-portal 也允许通过 `rsync` 来远程同步静态资源,所以用户可以设置一个远程存储位置,来做为一个中心的授权源。 + +Git-portal 对于多媒体的工程是一个理想的解决方案。类似的多媒体工程包括视频游戏、桌面游戏、需要进行大型 3D 模型渲染和纹理的虚拟现实工程、[带图][4]以及 .odt 输出的书籍、协作型的[博客站点][5]、音乐项目,等等。艺术家在应用程序中以图层(在图形世界中)和曲目(在音乐世界中)的形式执行版本控制并不少见——因此,Git 不会向多媒体项目文件本身添加任何内容。Git 的功能可用于艺术项目的其他部分(例如散文和叙述、项目管理、字幕文件、致谢、营销副本、文档等),而结构化远程备份的功能则由艺术家使用。 + +#### 安装 Git-portal + +Git-portal 的 RPM 安装包位于 ,可用于下载和安装。 + +此外,用户可以从 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 git@gitdawg.com:seth/bigproject.git +$ git remote -v +origin git@gitdawg.com:seth/bigproject.git (fetch) +origin git@gitdawg.com:seth/bigproject.git (push) +``` + +对你的主要 Git 存储库来说,`origin` 这个名字是一个流行的惯例,将其用于 Git 数据是有意义的。然而,你的 Git-portal 数据是分开存储的,所以你必须创建第二个远程位置来让 Git-portal 了解向哪里推送和从哪里拉取。取决于你的 Git 主机,你可能需要一个单独的服务器,因为空间有限的 Git 主机不太可能接受 GB 级的媒体资产。或者,可能你的服务器仅允许你访问你的 Git 存储库而不允许访问外部的存储文件夹: + +``` +$ git remote add _portal seth@example.com:/home/seth/git/bigproject_portal +$ git remote -v +origin git@gitdawg.com:seth/bigproject.git (fetch) +origin git@gitdawg.com:seth/bigproject.git (push) +_portal seth@example.com:/home/seth/git/bigproject_portal (fetch) +_portal seth@example.com:/home/seth/git/bigproject_portal (push) +``` + +你可能不想为所有用户提供服务器上的个人帐户,也不必这样做。为了提供对托管资源库大文件资产的服务器的访问权限,你可以运行一个 Git 前端,比如 [Gitolite][8] 或者你可以使用 `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 大文件存储][9](LFS)是一个名为 git-media 的停工项目的分支,这个分支由 GitHub 维护和支持。它需要特殊的命令(例如 `git lfs track` 来保护大型文件不被 Git 追踪)并且需要用户维护一个 `.gitattributes` 文件来更新哪些存储库中的文件被 LFS 追踪。对于大文件而言,它**仅**支持 HTTP 和 HTTPS 远程主机。所以你必须配置 LFS 服务器,才能使得用户可以通过 HTTP 而不是 SSH 或 `rsync` 来进行鉴权。 + +另一个相对 LFS 更灵活的选择是 [git-annex][10]。你可以在我的文章 [管理 Git 中大二进制 blob][11] 中了解更多(忽略其中 git-media 这个已经废弃项目的章节,因为其灵活性没有被它的继任者 Git LFS 延续下来)。Git-annex 是一个灵活且优雅的解决方案。它拥有一个细腻的系统来用于添加、删除、移动存储库中的大型文件。因为它灵活且强大,有很多新的命令和规则需要进行学习,所以建议看一下它的[文档][12]。 + +然而,如果你的需求很简单,你可能更加喜欢整合已有技术来进行简单且明显任务的解决方案,则 Git-portal 可能是对于工作而言比较合适的工具。 + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/19/4/manage-multimedia-files-git + +作者:[Seth Kenlon][a] +选题:[lujun9972][b] +译者:[svtter](https://github.com/svtter) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/seth +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/video_editing_folder_music_wave_play.png?itok=-J9rs-My (video editing dashboard) +[2]: https://opensource.com/sites/default/files/uploads/git-velocity.jpg (Graphic showing relationship between art assets and Git) +[3]: http://gitlab.com/slackermedia/git-portal.git +[4]: https://www.apress.com/gp/book/9781484241691 +[5]: http://mixedsignals.ml +[6]: mailto:git@gitdawg.com +[7]: mailto:seth@example.com +[8]: https://opensource.com/article/19/4/file-sharing-git +[9]: https://git-lfs.github.com/ +[10]: https://git-annex.branchable.com/ +[11]: https://opensource.com/life/16/8/how-manage-binary-blobs-git-part-7 +[12]: https://git-annex.branchable.com/walkthrough/ diff --git a/published/20191227 Top CI-CD resources to set you up for success.md b/published/20191227 Top CI-CD resources to set you up for success.md new file mode 100644 index 0000000000..a19cea5720 --- /dev/null +++ b/published/20191227 Top CI-CD resources to set you up for success.md @@ -0,0 +1,57 @@ +[#]: collector: (lujun9972) +[#]: translator: (Morisun029) +[#]: reviewer: (wxy) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-11875-1.html) +[#]: subject: (Top CI/CD resources to set you up for success) +[#]: via: (https://opensource.com/article/19/12/cicd-resources) +[#]: author: (Jessica Cherry https://opensource.com/users/jrepka) + +顶级 CI / CD 资源,助你成功 +====== + +> 随着企业期望实现无缝、灵活和可扩展的部署,持续集成和持续部署成为 2019 年的关键主题。 + +![Plumbing tubes in many directions][1] + +对于 CI/CD 和 DevOps 来说,2019 年是非常棒的一年。Opensource.com 的作者分享了他们专注于无缝、灵活和可扩展部署时是如何朝着敏捷和 scrum 方向发展的。以下是我们 2019 年发布的 CI/CD 文章中的一些重要文章。 + +### 学习和提高你的 CI/CD 技能 + +我们最喜欢的一些文章集中在 CI/CD 的实操经验上,并涵盖了许多方面。通常以 [Jenkins][2] 管道开始,Bryant Son 的文章《[用 Jenkins 构建 CI/CD 管道][3]》将为你提供足够的经验,以开始构建你的第一个管道。Daniel Oh 在《[用 DevOps 管道进行自动验收测试][4]》一文中,提供了有关验收测试的重要信息,包括可用于自行测试的各种 CI/CD 应用程序。我写的《[安全扫描 DevOps 管道][5]》非常简短,其中简要介绍了如何使用 Jenkins 平台在管道中设置安全性。 + +### 交付工作流程 + +正如 Jithin Emmanuel 在《[Screwdriver:一个用于持续交付的可扩展构建平台][6]》中分享的,在学习如何使用和提高你的 CI/CD 技能方面,工作流程很重要,特别是当涉及到管道时。Emily Burns 在《[为什么 Spinnaker 对 CI/CD 很重要][7]》中解释了灵活地使用 CI/CD 工作流程准确构建所需内容的原因。Willy-Peter Schaub 还盛赞了为所有产品创建统一管道的想法,以便《[在一个 CI/CD 管道中一致地构建每个产品][8]》。这些文章将让你很好地了解在团队成员加入工作流程后会发生什么情况。 + +### CI/CD 如何影响企业 + +2019 年也是认识到 CI/CD 的业务影响以及它是如何影响日常运营的一年。Agnieszka Gancarczyk 分享了 Red Hat 《[小型 Scrum vs. 大型 Scrum][9]》的调查结果, 包括受访者对 Scrum、敏捷运动及对团队的影响的不同看法。Will Kelly 的《[持续部署如何影响整个组织][10]》,也提及了开放式沟通的重要性。Daniel Oh 也在《[DevOps 团队必备的 3 种指标仪表板][11]》中强调了指标和可观测性的重要性。最后是 Ann Marie Fred 的精彩文章《[不在生产环境中测试?要在生产环境中测试!][12]》详细说明了在验收测试前在生产环境中测试的重要性。 + +感谢许多贡献者在 2019 年与 Opensource 的读者分享他们的见解,我期望在 2020 年里从他们那里了解更多有关 CI/CD 发展的信息。 + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/19/12/cicd-resources + +作者:[Jessica Cherry][a] +选题:[lujun9972][b] +译者:[Morisun029](https://github.com/Morisun029) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/jrepka +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/plumbing_pipes_tutorial_how_behind_scenes.png?itok=F2Z8OJV1 (Plumbing tubes in many directions) +[2]: https://jenkins.io/ +[3]: https://linux.cn/article-11546-1.html +[4]: https://opensource.com/article/19/4/devops-pipeline-acceptance-testing +[5]: https://opensource.com/article/19/7/security-scanning-your-devops-pipeline +[6]: https://opensource.com/article/19/3/screwdriver-cicd +[7]: https://opensource.com/article/19/8/why-spinnaker-matters-cicd +[8]: https://opensource.com/article/19/7/cicd-pipeline-rule-them-all +[9]: https://opensource.com/article/19/3/small-scale-scrum-vs-large-scale-scrum +[10]: https://opensource.com/article/19/7/organizational-impact-continuous-deployment +[11]: https://linux.cn/article-11183-1.html +[12]: https://opensource.com/article/19/5/dont-test-production diff --git a/published/20200112 What I learned going from prison to Python.md b/published/20200112 What I learned going from prison to Python.md new file mode 100644 index 0000000000..283212f4b4 --- /dev/null +++ b/published/20200112 What I learned going from prison to Python.md @@ -0,0 +1,104 @@ +[#]: collector: (lujun9972) +[#]: translator: (heguangzhi) +[#]: reviewer: (wxy) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-11893-1.html) +[#]: subject: (What I learned going from prison to Python) +[#]: via: (https://opensource.com/article/20/1/prison-to-python) +[#]: author: (Shadeed "Sha" Wallace-Stepter https://opensource.com/users/shastepter) + +从监狱到 Python +====== + +> 入狱后,开源编程是如何提供机会的。 + +![书架上的编程书籍][1] + +不到一年前,我还在圣昆廷州立监狱服刑,我是无期徒刑。 + +我高三的时候,我抢劫了一个人并向他开了枪。现在,我经过一段时间才意识到并承认自己做错了,这是在经历了陪审团审判并看到我的行为带来的恶果后,我知道需要改变自己,我也确实做到了。尽管我对我的行为表示懊悔,但我毕竟开枪打了一个人,并差点杀了他。做这样的事是有后果的,这是理所当然的。所以在我 18 岁的时候,我被判了终身监禁。 + +监狱是一个非常可怕的地方;我是不推荐你去的。但是我必须去,所以我去了。我不告诉你具体的细节,但你可以放心,这是一个没有太多动机去改变的地方,许多人在这里养成的坏习惯比他们过去在别处养成的更多。 + +我是幸运儿之一。当我在服刑的时候,发生了一些不同寻常的事情。我开始想象自己出狱后的的未来,虽然在这之前,我还是已经在那里度过了我整个成年生活。 + +现在你想想:我是黑人,只受过高中教育。我没有工作经历,如果我离开监狱,在被释放前,我还是一个被定罪的重罪犯。当每个雇主看到我的简历,都不会有“我需要雇用这个人”想法,我认为是正常的。 + +我不知道我的选择是什么,但我已经下定决心了。我需要做些活下去的事情,并且这和我入狱前的生活一点也不像。 + +### Python 之路 + +最终,我被关在了圣昆廷州立监狱,我不知道我为何幸运地被关在那里。圣昆廷提供了几个自助和教育编程项目。这些[改造机会][2]帮助囚犯使他们拥有在获释后避免再次犯罪的技能。 + +作为其中一个编程项目的一部分,2017 年我通过圣昆廷媒体项目认识了[杰西卡·麦凯拉][3]。杰西卡是编程语言 [Python][4] 的爱好者,她开始向我推荐 Python 有多棒,以及它是刚起步的人学习的完美语言。这就是故事变得比小说更精彩的地方。 + +> 感谢 [@northbaypython][5] 让 [@ShaStepter][6] 和我重复 [@pycon][7] 的主题演讲,让他们被录制下来。我很荣幸与大家分享: +> +> 从监狱到 Pythone: https://t.co/rcumoAgZHm +> +> 大规模裁员:如果我们不雇佣被判重罪的人,谁会呢? https://t.co/fENDUFdxfX +> +> [pic.Twitter.com/kpjo8d3ul6][8] +> +> —杰西卡·麦凯拉(@jessicamckellar)[2019 年 11 月 5 日][9] + +杰西卡向我介绍了一些 Python 视频教程,这些教程是她为一家名叫 [O’Reilly Media][10] 的公司做的,课程是在线的,如果我能接触到它们,那该有多好呀。不幸的是,在监狱里上网是不可能的。但是,我遇到了一个叫 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][11] +> +> —杰西卡·麦凯拉(@jessicamckellar)[2019 年 5 月 12 日][12] +  + +因此,我想谦卑地挑战开源社区的所有程序员和成员,让他们围绕包容和多样性展开思考。今天,我自豪地站在你们面前,代表一个大多数人都没有想到的群体——以前被监禁的人。但是我们存在,我们渴望证明我们的价值,最重要的是,我们期待被接受。当我们重返社会时,许多挑战等待着我们,我请求你们允许我们有机会展示我们的价值。欢迎我们,接受我们,最重要的是,包容我们。 + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/20/1/prison-to-python + +作者:[Shadeed "Sha" Wallace-Stepter][a] +选题:[lujun9972][b] +译者:[heguangzhi](https://github.com/heguangzhi) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://opensource.com/users/shastepter +[b]: https://github.com/lujun9972 +[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/books_programming_languages.jpg?itok=KJcdnXM2 (Programming books on a shelf) +[2]: https://www.dailycal.org/2019/02/27/san-quentin-rehabilitation-programs-offer-inmates-education-a-voice/ +[3]: https://twitter.com/jessicamckellar?lang=en +[4]: https://www.python.org/ +[5]: https://twitter.com/northbaypython?ref_src=twsrc%5Etfw +[6]: https://twitter.com/ShaStepter?ref_src=twsrc%5Etfw +[7]: https://twitter.com/pycon?ref_src=twsrc%5Etfw +[8]: https://t.co/Kpjo8d3ul6 +[9]: https://twitter.com/jessicamckellar/status/1191601209917837312?ref_src=twsrc%5Etfw +[10]: http://shop.oreilly.com/product/110000448.do +[11]: https://t.co/WnzdEUTuxr +[12]: https://twitter.com/jessicamckellar/status/1127640222504636416?ref_src=twsrc%5Etfw diff --git a/published/20200122 Get your RSS feeds and podcasts in one place with this open source tool.md b/published/20200122 Get your RSS feeds and podcasts in one place with this open source tool.md new file mode 100644 index 0000000000..ec53804d3a --- /dev/null +++ b/published/20200122 Get your RSS feeds and podcasts in one place with this open source tool.md @@ -0,0 +1,72 @@ +[#]: collector: (lujun9972) +[#]: translator: (geekpi) +[#]: reviewer: (wxy) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-11876-1.html) +[#]: subject: (Get your RSS feeds and podcasts in one place with this open source tool) +[#]: via: (https://opensource.com/article/20/1/open-source-rss-feed-reader) +[#]: author: (Kevin Sonney https://opensource.com/users/ksonney) + +使用此开源工具在一起收取你的 RSS 订阅源和播客 +====== + +> 在我们的 20 个使用开源提升生产力的系列的第十二篇文章中使用 Newsboat 收取你的新闻 RSS 源和播客。 + +![](https://img.linux.net.cn/data/attachment/album/202002/10/162526wv5jdl0m12sw10md.jpg) + +去年,我在 19 天里给你介绍了 19 个新(对你而言)的生产力工具。今年,我换了一种方式:使用你在使用或者还没使用的工具,构建一个使你可以在新一年更加高效的环境。 + +### 使用 Newsboat 访问你的 RSS 源和播客 + +RSS 新闻源是了解各个网站最新消息的非常方便的方法。除了 Opensource.com,我还会关注 [SysAdvent][2] sysadmin 年度工具,还有一些我最喜欢的作者以及一些网络漫画。RSS 阅读器可以让我“批处理”阅读内容,因此,我每天不会在不同的网站上花费很多时间。 + +![Newsboat][3] + +[Newsboat][4] 是一个基于终端的 RSS 订阅源阅读器,外观感觉很像电子邮件程序 [Mutt][5]。它使阅读新闻变得容易,并有许多不错的功能。 + +安装 Newsboat 非常容易,因为它包含在大多数发行版(以及 MacOS 上的 Homebrew)中。安装后,只需在 `~/.newsboat/urls` 中添加订阅源。如果你是从其他阅读器迁移而来,并有导出的 OPML 文件,那么可以使用以下方式导入: + +``` +newsboat -i +``` + +添加订阅源后,Newsboat 的界面非常熟悉,特别是如果你使用过 Mutt。你可以使用箭头键上下滚动,使用 `r` 检查某个源中是否有新项目,使用 `R` 检查所有源中是否有新项目,按回车打开订阅源,并选择要阅读的文章。 + +![Newsboat article list][6] + +但是,你不仅限于本地 URL 列表。Newsboat 还是 [Tiny Tiny RSS][7]、ownCloud 和 Nextcloud News 等新闻阅读服务以及一些 Google Reader 后续产品的客户端。[Newsboat 的文档][8]中涵盖了有关此的详细信息以及其他许多配置选项。 + +![Reading an article in Newsboat][9] + +#### 播客 + +Newsboat 还通过 Podboat 提供了[播客支持][10],Podboat 是一个附带的应用,它可帮助下载和排队播客节目。在 Newsboat 中查看播客源时,按下 `e` 将节目添加到你的下载队列中。所有信息将保存在 `~/.newsboat` 目录中的队列文件中。Podboat 读取此队列并将节目下载到本地磁盘。你可以在 Podboat 的用户界面(外观和行为类似于 Newsboat)执行此操作,也可以使用 `podboat -a` 让 Podboat 下载所有内容。作为播客人和播客听众,我认为这*真的*很方便。 + +![Podboat][11] + +总体而言,Newsboat 有一些非常好的功能,并且是一些基于 Web 或桌面应用的不错的轻量级替代方案。 + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/20/1/open-source-rss-feed-reader + +作者:[Kevin Sonney][a] +选题:[lujun9972][b] +译者:[geekpi](https://github.com/geekpi) +校对:[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/ship_captain_devops_kubernetes_steer.png?itok=LAHfIpek (Ship captain sailing the Kubernetes seas) +[2]: https://sysadvent.blogspot.com/ +[3]: https://opensource.com/sites/default/files/uploads/productivity_12-1.png (Newsboat) +[4]: https://newsboat.org +[5]: http://mutt.org/ +[6]: https://opensource.com/sites/default/files/uploads/productivity_12-2.png (Newsboat article list) +[7]: https://tt-rss.org/ +[8]: https://newsboat.org/releases/2.18/docs/newsboat.html +[9]: https://opensource.com/sites/default/files/uploads/productivity_12-3.png (Reading an article in Newsboat) +[10]: https://newsboat.org/releases/2.18/docs/newsboat.html#_podcast_support +[11]: https://opensource.com/sites/default/files/uploads/productivity_12-4.png (Podboat) diff --git a/published/20200124 Run multiple consoles at once with this open source window environment.md b/published/20200124 Run multiple consoles at once with this open source window environment.md new file mode 100644 index 0000000000..33593eb788 --- /dev/null +++ b/published/20200124 Run multiple consoles at once with this open source window environment.md @@ -0,0 +1,111 @@ +[#]: collector: (lujun9972) +[#]: translator: (wxy) +[#]: reviewer: (wxy) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-11892-1.html) +[#]: subject: (Run multiple consoles at once with this open source window environment) +[#]: via: (https://opensource.com/article/20/1/multiple-consoles-twin) +[#]: author: (Kevin Sonney https://opensource.com/users/ksonney) + +使用开源窗口环境 twin 一次运行多个控制台 +====== + +> 在我们的 20 个使用开源提升生产力的系列的第十四篇文章中用 twin 模拟了老式的 DESQview 体验。 + +![](https://img.linux.net.cn/data/attachment/album/202002/14/193658tlbyft0lbu44f0s3.jpg) + +去年,我在 19 天里给你介绍了 19 个新(对你而言)的生产力工具。今年,我换了一种方式:使用你在使用或者还没使用的工具,构建一个使你可以在新一年更加高效的环境。 + +### 通过 twin 克服“一个屏幕,一个应用程序”的限制 + +还有人记得 [DESQview][2] 吗?我们在 Windows、Linux 和 MacOS 中理所当然地可以在屏幕上同时运行多个程序,而 DESQview 赋予了 DOS 同样的功能。在我运营拨号 BBS 服务的初期,DESQview 是必需的,它使我能够让 BBS 在后台运行,同时在前台进行其他操作。例如,当有人拨打电话时,我可能正在开发新功能或设置新的外部程序而不会影响他们的体验。后来,在我早期做支持工作的时候,我可以同时运行我的工作电子邮件([MHS 上的 DaVinci 电子邮件][3])、支持单据系统和其他 DOS 程序。这是令人吃惊的! + +![twin][4] + +从那时起,运行多个控制台应用程序的功能已经发展了很多。但是 [tmux][5] 和 [Screen][6] 等应用仍然遵循“一个屏幕,一个应用”的显示方式。好吧,是的,tmux 具有屏幕拆分和窗格,但是不像 DESQview 那样具有将窗口“浮动”在其他窗口上的功能,就我个人而言,我怀念那个功能。 + +让我们来看看 [twin][7](文本模式窗口环境)。我认为,这个相对年轻的项目是 DESQview 的精神继任者。它支持控制台和图形环境,并具有与会话脱离和重新接驳的功能。设置起来并不是那么容易,但是它可以在大多数现代操作系统上运行。 + +Twin 是从源代码安装的(现在是这样)。但是首先,你需要安装所需的开发库。库名称将因操作系统而异。 以下示例显示了在我的 Ubuntu 19.10 系统中的情况。一旦安装了依赖库,请从 Git 中检出 twin 源代码,并运行 `./configure` 和 `make`,它们应自动检测所有内容并构建 twin: + +``` +sudo apt install libx11-dev libxpm-dev libncurses-dev zlib1g-dev libgpm-dev +git clone git@github.com:cosmos72/twin.git +cd twin +./configure +make +sudo make install +``` + +注意:如果要在 MacOS 或 BSD 上进行编译,则需要在运行 `make` 之前在文件 `include/Tw/autoconf.h` 和 `include/twautoconf.h` 中注释掉 `#define socklen_t int`。这个问题应该在 [twin #57][9] 解决了。 + +![twin text mode][10] + +第一次调用 twin 是一个挑战。你需要通过 `--hw` 参数告诉它正在使用哪种显示。例如,要启动文本模式的 twin,请输入 `twin --hw=tty,TERM=linux`。这里指定的 `TERM` 变量替代了你当前 Shell 中终端变量。要启动图形版本,运行 `twin --hw=X@$DISPLAY`。在 Linux 上,twin 一般都“可以正常工作”,而在 MacOS 上,Twin 基本是只能在终端上使用。 + +*真正*的乐趣是可以通过 `twattach` 和 `twdisplay` 命令接驳到正在运行的会话的功能。它们使你可以接驳到其他正在运行的 twin 会话。例如,在 Mac 上,我可以运行以下命令以接驳到演示机器上运行的 twin 会话: + +``` +twdisplay --twin@20days2020.local:0 --hw=tty,TERM=linux +``` + +![remote twin session][11] + +通过多做一些工作,你还可以将其用作登录外壳,以代替控制台上的 [getty][12]。这需要 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 +``` + +![twin][13] + +这将为登录的用户启动一个 twin 会话。我不建议在多用户系统中使用此会话,但是对于个人桌面来说,这是很酷的。并且,通过使用 `twattach` 和 `twdisplay`,你可以从本地 GUI 或远程桌面访问该会话。 + +我认为 twin 真是太酷了。它还有一些细节不够完善,但是基本功能都已经有了,并且有一些非常好的文档。另外,它也使我可以在现代操作系统上稍解对 DESQview 式的体验的渴望。我希望随着时间的推移它会有所改进,希望你和我一样喜欢它。 + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/20/1/multiple-consoles-twin + +作者:[Kevin Sonney][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://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://en.wikipedia.org/wiki/DESQview +[3]: https://en.wikipedia.org/wiki/Message_Handling_System +[4]: https://opensource.com/sites/default/files/uploads/productivity_14-1.png (twin) +[5]: https://github.com/tmux/tmux/wiki +[6]: https://www.gnu.org/software/screen/ +[7]: https://github.com/cosmos72/twin +[8]: mailto:git@github.com +[9]: https://github.com/cosmos72/twin/issues/57 +[10]: https://opensource.com/sites/default/files/uploads/productivity_14-2.png (twin text mode) +[11]: https://opensource.com/sites/default/files/uploads/productivity_14-3.png (remote twin session) +[12]: https://en.wikipedia.org/wiki/Getty_(Unix) +[13]: https://opensource.com/sites/default/files/uploads/productivity_14-4.png (twin) diff --git a/published/20200205 Getting started with GnuCash.md b/published/20200205 Getting started with GnuCash.md new file mode 100644 index 0000000000..00dc0465c5 --- /dev/null +++ b/published/20200205 Getting started with GnuCash.md @@ -0,0 +1,96 @@ +[#]: collector: (lujun9972) +[#]: translator: (geekpi) +[#]: reviewer: (wxy) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-11895-1.html) +[#]: subject: (Getting started with GnuCash) +[#]: via: (https://opensource.com/article/20/2/gnucash) +[#]: author: (Don Watkins https://opensource.com/users/don-watkins) + +开始使用 GnuCash +====== + +> 使用 GnuCash 管理你的个人或小型企业会计。 + +![](https://img.linux.net.cn/data/attachment/album/202002/15/124236wz5e0z5vq7571qby.jpg) + +在过去的四年里,我一直在用 [GnuCash][2] 来管理我的个人财务,我对此非常满意。这个开源(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][3] 安装它,我在运行 Elementary OS 的笔记本上使用它。(本文中的所有截图都来自此次安装)。 + +### 设置 + +安装并启动程序后,你将看到一个欢迎屏幕,该页面提供了创建新账户集、导入 QIF 文件或打开新用户教程的选项。 + +![GnuCash Welcome screen][4] + +#### 个人账户 + +如果你选择第一个选项(正如我所做的那样),GnuCash 会打开一个页面帮你起步。它收集初始数据并设置账户首选项,例如账户类型和名称、商业数据(例如,税号)和首选货币。 + +![GnuCash new account setup][5] + +GnuCash 支持个人银行账户、商业账户、汽车贷款、CD 和货币市场账户、儿童保育账户等。 + +例如,首先创建一个简单的支票簿。你可以输入账户的初始余额或以多种格式导入现有账户数据。 + +![GnuCash import data][6] + +#### 开票 + +GnuCash 还支持小型企业功能,包括客户、供应商和开票。要创建发票,请在 “Business -> Invoice” 中输入数据。 + +![GnuCash create invoice][7] + +然后,你可以将发票打印在纸上,也可以将其导出到 PDF 并通过电子邮件发送给你的客户。 + +![GnuCash invoice][8] + +### 获取帮助 + +如果你有任何疑问,它有一个优秀的帮助,你可在菜单栏的右侧获取指导。 + +![GnuCash help][9] + +该项目的网站包含许多有用的信息的链接,例如 GnuCash [功能][10]的概述。GnuCash 还提供了[详细的文档][11],可供下载和离线阅读,它还有一个 [wiki][12],为用户和开发人员提供了有用的信息。 + +你可以在项目的 [GitHub][13] 仓库中找到其他文件和文档。GnuCash 项目由志愿者驱动。如果你想参与,请查看项目的 wiki 上的 [Getting involved][14] 部分。 + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/20/2/gnucash + +作者:[Don Watkins][a] +选题:[lujun9972][b] +译者:[geekpi](https://github.com/geekpi) +校对:[wxy](https://github.com/wxy) + +本文由 [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/osdc_whitehurst_money.png?itok=ls-SOzM0 (A dollar sign in a network) +[2]: https://www.gnucash.org/ +[3]: https://flathub.org/apps/details/org.gnucash.GnuCash +[4]: https://opensource.com/sites/default/files/images/gnucash_welcome.png (GnuCash Welcome screen) +[5]: https://opensource.com/sites/default/files/uploads/gnucash_newaccountsetup.png (GnuCash new account setup) +[6]: https://opensource.com/sites/default/files/uploads/gnucash_importdata.png (GnuCash import data) +[7]: https://opensource.com/sites/default/files/uploads/gnucash_enter-invoice.png (GnuCash create invoice) +[8]: https://opensource.com/sites/default/files/uploads/gnucash_invoice.png (GnuCash invoice) +[9]: https://opensource.com/sites/default/files/uploads/gnucash_help.png (GnuCash help) +[10]: https://www.gnucash.org/features.phtml +[11]: https://www.gnucash.org/docs/v3/C/gnucash-help.pdf +[12]: https://wiki.gnucash.org/wiki/GnuCash +[13]: https://github.com/Gnucash +[14]: https://wiki.gnucash.org/wiki/GnuCash#Getting_involved_in_the_GnuCash_project diff --git a/published/20200207 NVIDIA-s Cloud Gaming Service GeForce NOW Shamelessly Ignores Linux.md b/published/20200207 NVIDIA-s Cloud Gaming Service GeForce NOW Shamelessly Ignores Linux.md new file mode 100644 index 0000000000..4a6e9f660f --- /dev/null +++ b/published/20200207 NVIDIA-s Cloud Gaming Service GeForce NOW Shamelessly Ignores Linux.md @@ -0,0 +1,82 @@ +[#]: collector: (lujun9972) +[#]: translator: (geekpi) +[#]: reviewer: (wxy) +[#]: publisher: (wxy) +[#]: url: (https://linux.cn/article-11888-1.html) +[#]: subject: (NVIDIA’s Cloud Gaming Service GeForce NOW Shamelessly Ignores Linux) +[#]: via: (https://itsfoss.com/geforce-now-linux/) +[#]: author: (Ankush Das https://itsfoss.com/author/ankush/) + +NVIDIA 的云游戏服务 GeForce NOW 无耻地忽略了Linux +====== + +NVIDIA 的 [GeForce NOW][1] 云游戏服务对于那些可能没有硬件但想使用 GeForce NOW 在最新的最好的游戏上获得尽可能好的游戏体验玩家来说是充满前景的(在线推流游戏,并可以在任何设备上玩)。 + +该服务仅限于一些用户(以等待列表的形式)使用。然而,他们最近宣布 [GeForce NOW 面向所有人开放][2]。但实际上并不是。 + +有趣的是,它**并不是面向全球所有区域**。而且,更糟的是 **GeForce NOW 不支持 Linux**。 + +![][3] + +### GeForce NOW 并不是向“所有人开放” + +制作一个基于订阅的云服务来玩游戏的目的是消除平台依赖性。 + +就像你通常使用浏览器访问网站一样,你应该能够在每个平台上玩游戏。是这个概念吧? + +![][4] + +好吧,这绝对不是火箭科学,但是 NVIDIA 仍然不支持 Linux(和 iOS)? + +### 是因为没有人使用 Linux 吗? + +我非常不同意这一点,即使这是某些不支持 Linux 的原因。如果真是这样,我不会使用 Linux 作为主要桌面操作系统来为 “It’s FOSS” 写文章。 + +不仅如此,如果 Linux 不值一提,你认为为何一个 Twitter 用户会提到缺少 Linux 支持? + +![][5] + +是的,也许用户群不够大,但是在考虑将其作为基于云的服务时,**不支持 Linux** 显得没有意义。 + +从技术上讲,如果 Linux 上没有游戏,那么 **Valve** 就不会在 Linux 上改进 [Steam Play][6] 来帮助更多用户在 Linux 上玩纯 Windows 的游戏。 + +我不想说任何不正确的说法,但台式机 Linux 游戏的发展比以往任何时候都要快(即使统计上要比 Mac 和 Windows 要低)。 + +### 云游戏不应该像这样 + +![][7] + +如上所述,找到使用 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][a] +选题:[lujun9972][b] +译者:[geekpi](https://github.com/geekpi) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]: https://itsfoss.com/author/ankush/ +[b]: https://github.com/lujun9972 +[1]: https://www.nvidia.com/en-us/geforce-now/ +[2]: https://blogs.nvidia.com/blog/2020/02/04/geforce-now-pc-gaming/ +[3]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/02/nvidia-geforce-now-linux.jpg?ssl=1 +[4]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/02/nvidia-geforce-now.png?ssl=1 +[5]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/02/geforce-now-twitter-1.jpg?ssl=1 +[6]: https://itsfoss.com/steam-play/ +[7]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/02/ge-force-now.jpg?ssl=1 From f6a9197056699c4be1bdcd8041485a66cf47f350 Mon Sep 17 00:00:00 2001 From: Morisun029 <54652937+Morisun029@users.noreply.github.com> Date: Sat, 15 Feb 2020 18:54:27 +0800 Subject: [PATCH 18/18] update --- ...00206 3 ways to use PostgreSQL commands.md | 230 ------------------ 1 file changed, 230 deletions(-) delete mode 100644 sources/tech/20200206 3 ways to use PostgreSQL commands.md diff --git a/sources/tech/20200206 3 ways to use PostgreSQL commands.md b/sources/tech/20200206 3 ways to use PostgreSQL commands.md deleted file mode 100644 index 645baf65e0..0000000000 --- a/sources/tech/20200206 3 ways to use PostgreSQL commands.md +++ /dev/null @@ -1,230 +0,0 @@ -[#]: collector: (lujun9972) -[#]: translator: (Morisun029) -[#]: reviewer: ( ) -[#]: publisher: ( ) -[#]: url: ( ) -[#]: subject: (3 ways to use PostgreSQL commands) -[#]: via: (https://opensource.com/article/20/2/postgresql-commands) -[#]: author: (Greg Pittman https://opensource.com/users/greg-p) - -3 ways to use PostgreSQL commands -====== -Whether you need something simple, like a shopping list, or complex, -like a color swatch generator, PostgreSQL commands make it easy. -![Team checklist and to dos][1] - -In _[Getting started with PostgreSQL][2]_, I explained how to install, set up, and begin using the open source database software. But there's a lot more you can do with commands in [PostgreSQL][3]. - -For example, I use Postgres to keep track of my grocery shopping list. I do most of the grocery shopping in our home, and the bulk of it happens once a week. I go to several places to buy the things on my list because each store offers a particular selection or quality or maybe a better price. Initially, I made an HTML form page to manage my shopping list, but it couldn't save my entries. So, I had to wait to make my list all at once, and by then I usually forgot some items we need or I want. - -Instead, with PostgreSQL, I can enter bits when I think of them as the week goes on and print out the whole thing right before I go shopping. Here's how you can do that, too. - -### Create a simple shopping list - -First, enter the database with the **psql **command, then create a table for your list with: - - -``` -`Create table groc (item varchar(20), comment varchar(10));` -``` - -Type commands like the following to add items to your list: - - -``` -insert into groc values ('milk', 'K'); -insert into groc values ('bananas', 'KW'); -``` - -There are two pieces of information (separated by a comma) inside the parentheses: the item you want to buy and letters indicating where you want to buy it and whether it's something you usually buy every week (W). - -Since **psql** has a history, you can press the Up arrow and edit the data between the parentheses instead of having to type the whole line for each item. - -After entering a handful of items, check what you've entered with: - - -``` -Select * from groc order by comment; - -      item      | comment -\----------------+--------- - ground coffee  | H - butter         | K - chips          | K - steak          | K - milk           | K - bananas        | KW - raisin bran    | KW - raclette       | L - goat cheese    | L - onion          | P - oranges        | P - potatoes       | P - spinach        | PW - broccoli       | PW - asparagus      | PW - cucumber       | PW - sugarsnap peas | PW - salmon         | S -(18 rows) -``` - -This command orders the results by the _comment_ column so that the items are grouped by where you buy them to make it easier to shop. - -By using a W to indicate your weekly purchases, you can keep your weekly items on the list when you clear out the table to prepare for the next week's list. To so that, enter: - - -``` -`delete from groc where comment not like '%W';` -``` - -Notice that in PostgreSQL, **%** is the wildcard character (instead of an asterisk). So, to save typing, you might type: - - -``` -`delete from groc where item like 'goat%';` -``` - -You can't use **item = 'goat%'**; it won't work. - -When you're ready to shop, output your list to print it or send it to your phone with: - - -``` -\o groclist.txt -select * from groc order by comment; -\o -``` - -The last command, **\o**, with nothing afterward, resets the output to the command line. Otherwise, all output will continue to go to the groc file you created. - -### Analyze complex tables - -This item-by-item entry may be okay for short tables, but what about really big ones? A couple of years ago, I was helping the team at [FreieFarbe.de][4] to create a swatchbook of the free colors (freieFarbe means "free colors" in German) from its HLC color palette, where virtually any imaginable print color can be specified by its hue, luminosity (brightness), and chroma (saturation). The result was the [HLC Color Atlas][5], and here's how we did it. - -The team sent me files with color specifications so I could write Python scripts that would work with Scribus to generate the swatchbooks of color patches easily. One example started like: - - -``` -HLC, C, M, Y, K -H010_L15_C010, 0.5, 49.1, 0.1, 84.5 -H010_L15_C020, 0.0, 79.7, 15.1, 78.9 -H010_L25_C010, 6.1, 38.3, 0.0, 72.5 -H010_L25_C020, 0.0, 61.8, 10.6, 67.9 -H010_L25_C030, 0.0, 79.5, 18.5, 62.7 -H010_L25_C040, 0.4, 94.2, 17.3, 56.5 -H010_L25_C050, 0.0, 100.0, 15.1, 50.6 -H010_L35_C010, 6.1, 32.1, 0.0, 61.8 -H010_L35_C020, 0.0, 51.7, 8.4, 57.5 -H010_L35_C030, 0.0, 68.5, 17.1, 52.5 -H010_L35_C040, 0.0, 81.2, 22.0, 46.2 -H010_L35_C050, 0.0, 91.9, 20.4, 39.3 -H010_L35_C060, 0.1, 100.0, 17.3, 31.5 -H010_L45_C010, 4.3, 27.4, 0.1, 51.3 -``` - -This is slightly modified from the original, which separated the data with tabs. I transformed it into a CSV (comma-separated value) file, which I prefer to use with Python. (CSV files are also very useful because they can be imported easily into a spreadsheet program.) - -In each line, the first item is the color name, and it's followed by its C, M, Y, and K color values. The file consisted of 1,793 colors, and I wanted a way to analyze the information to get a sense of the range of values. This is where PostgreSQL comes into play. I did not want to enter all of this data manually—I don't think I could without errors (and headaches). Fortunately, PostgreSQL has a command for this. - -My first step was to create the database with: - - -``` -`Create table hlc_cmyk (color varchar(40), c decimal, m decimal, y decimal, k decimal);` -``` - -Then I brought in the data with: - - -``` -`\copy  hlc_cmyk from '/home/gregp/HLC_Atlas_CMYK_SampleData.csv' with (header, format CSV);` -``` - -The backslash at the beginning is there because using the plain **copy** command is restricted to root and the Postgres superuser. In the parentheses, **header** means the first line contains headings and should be ignored, and **CSV** means the file format is CSV. Note that parentheses are not required around the color name in this method. - -If the operation is successful, I see a message that says **COPY NNNN**, where the N's refer to the number of rows inserted into the table. - -Finally, I can query the table with: - - -``` -select * from hlc_cmyk; - -     color     |   c   |   m   |   y   |  k   -\---------------+-------+-------+-------+------ - H010_L15_C010 |   0.5 |  49.1 |   0.1 | 84.5 - H010_L15_C020 |   0.0 |  79.7 |  15.1 | 78.9 - H010_L25_C010 |   6.1 |  38.3 |   0.0 | 72.5 - H010_L25_C020 |   0.0 |  61.8 |  10.6 | 67.9 - H010_L25_C030 |   0.0 |  79.5 |  18.5 | 62.7 - H010_L25_C040 |   0.4 |  94.2 |  17.3 | 56.5 - H010_L25_C050 |   0.0 | 100.0 |  15.1 | 50.6 - H010_L35_C010 |   6.1 |  32.1 |   0.0 | 61.8 - H010_L35_C020 |   0.0 |  51.7 |   8.4 | 57.5 - H010_L35_C030 |   0.0 |  68.5 |  17.1 | 52.5 -``` - -It goes on like this for all 1,793 rows of data. In retrospect, I can't say that this query was absolutely necessary for the HLC and Scribus task, but it allayed some of my anxieties about the project. - -To generate the HLC Color Atlas, I automated creating the color charts with Scribus for the 13,000+ colors in those pages of color swatches. - -I could have used the **copy** command to output my data: - - -``` -`\copy hlc_cmyk to '/home/gregp/hlc_cmyk_backup.csv' with (header, format CSV);` -``` - -I also could restrict the output according to certain values with a **where** clause. - -For example, the following command will only send the table values for the hues that begin with H10. - - -``` -`\copy hlc_cmyk to '/home/gregp/hlc_cmyk_backup.csv' with (header, format CSV) where color like 'H10%';` -``` - -### Back up or transfer a database or table - -The final command I will mention here is **pg_dump**, which is used to back up a PostgreSQL database and runs outside of the **psql** console. For example: - - -``` -pg_dump gregp -t hlc_cmyk > hlc.out -pg_dump gregp > dball.out -``` - -The first line exports the **hlc_cmyk** table along with its structure. The second line dumps all the tables inside the **gregp** database. This is very useful for backing up or transferring a database or tables.  - -To transfer a database or table to another computer, first, create a database on the other computer (see my "[getting started][2]" article for details), then do the reverse process: - - -``` -`psql -d gregp -f dball.out` -``` - -This creates all the tables and enters the data in one step. - -### Conclusion - -In this article, we have seen how to use the **WHERE** parameter to restrict operations, along with the use of the PostgreSQL wildcard character **%**. We've also seen how to load a large amount of data into a table, then output some or all of the table data to a file, or even your entire database with all its individual tables. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/20/2/postgresql-commands - -作者:[Greg Pittman][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/greg-p -[b]: https://github.com/lujun9972 -[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/todo_checklist_team_metrics_report.png?itok=oB5uQbzf (Team checklist and to dos) -[2]: https://opensource.com/article/19/11/getting-started-postgresql -[3]: https://www.postgresql.org/ -[4]: http://freiefarbe.de -[5]: https://www.freiefarbe.de/en/thema-farbe/hlc-colour-atlas/