mirror of
https://github.com/LCTT/TranslateProject.git
synced 2025-01-31 23:30:11 +08:00
Merge remote-tracking branch 'LCTT/master'
This commit is contained in:
commit
ada13d44f3
@ -0,0 +1,106 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: ( )
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (5 ways organizations can lean into failure and transform it into success)
|
||||
[#]: via: (https://opensource.com/article/20/10/organizations-can-lean-failure)
|
||||
[#]: author: (Dawn Parzych https://opensource.com/users/dawnparzych)
|
||||
|
||||
5 ways organizations can lean into failure and transform it into success
|
||||
======
|
||||
Removing the fear of failure fosters innovation and open-mindedness,
|
||||
turning mistakes into opportunities for growth and improvement.
|
||||
![failure sign at a party, celebrating failure][1]
|
||||
|
||||
> "If failure is not an option, then neither is success."—Seth Godin
|
||||
|
||||
Success is something we all strive toward, but the road to success has twists and turns, which are also known as our failures. But instead of giving up when things don't go my way, I have learned to look at failures as learning opportunities. In fact, I now proudly admit that I'm a failure:
|
||||
|
||||
* I failed my driving test the first time I took it.
|
||||
* I have not gotten every job I've ever applied or interviewed for.
|
||||
* Most of the articles I've written have not gone viral.
|
||||
|
||||
|
||||
|
||||
As software engineers, our industry may be competitive, but we need to remove the stigma associated with failing. One way of doing that is to talk about our failures. The more we hear and talk about failures, the more acceptable it becomes. We need to think about failures as learning opportunities, not a time to shame and ridicule others (or ourselves).
|
||||
|
||||
When we have failed, or think we have made a mistake, most of us get that pit in the bottom of our stomach, and the negative self-talk can kick in almost instantly. This reaction occurs because there are often consequences for mistakes, which can impact us personally as well as the organizations we work for.
|
||||
|
||||
Let's consider a hypothetical example: A software engineer submits a pull request for a new feature. It gets merged and released to production. Something goes wrong, and the application begins throwing errors. Customers can't log in. Sadly this isn't the first time this has happened. Some customers are fed up with the application breaking and have canceled their contracts. The CTO is furious. They want to know who is responsible for this feature being released. The team is understaffed because several team members have left the company, and those that remain are [burned out][2]. The incident takes way longer than usual to be resolved, and everyone is grumpy at the end.
|
||||
|
||||
This worst-case scenario doesn't mean we should always play it safe and not take risks. We need to balance the risks with the rewards when making technical decisions at work and with the open source projects we work on. I like to visualize success and failure as two opposite banks of a river, connected by a bridge. That bridge is built out of knowledge, learning, and understanding. Failure is when we grow, but only if we're learning from those failures and have a good mixture of success sprinkled in.
|
||||
|
||||
### What is needed to accept failure?
|
||||
|
||||
Embracing failure from a personal and organizational point of view doesn't happen overnight. It takes both time and the right culture. Start with one of the five areas outlined below.
|
||||
|
||||
#### Have a growth mindset
|
||||
|
||||
In the book _Growth_, Carol Dweck describes two types of mindsets: growth and fixed. A person with a fixed mindset believes in innate capabilities—you're either born with it, or you're not. Failure represents a limit on one's abilities.
|
||||
|
||||
A person with a growth mindset believes that individual effort and attitude determine one's abilities and that they can learn and improve as long as they put in the effort. Failure represents an opportunity to grow.
|
||||
|
||||
To encourage growth means to encourage failure. But saying "it's OK to fail" is not the same as creating a culture where it honestly is OK to fail. That requires psychological safety and a blameless culture.
|
||||
|
||||
#### Create a blameless culture
|
||||
|
||||
A blameless culture focuses on _where_ a system or a process failed, not on _who_ is responsible. If you spend time after an incident looking for and attributing root cause to human error, you are assigning blame. Instead, look for how things can be improved. What broke? How did it break? How can you prevent it in the future?
|
||||
|
||||
![Image of swampy area with overlaid quote reading "If a junior engineer asks where outages come from, I think a cute thing to tell them is 'The server is crying.' And if they ask why the server is crying, another cute thing to tell them is 'probably becaus][3]
|
||||
|
||||
Published with permission from Joshua Zimmerman (@TheJewberwocky)
|
||||
|
||||
#### Foster psychological safety
|
||||
|
||||
A blameless culture cannot exist without psychological safety. Psychological safety is the ability to show up to work without fear; you feel included in the whole, that it is safe to learn, safe to contribute, and safe to challenge the status quo without fear of consequences. Employees need to feel empowered to speak up if they see processes that need to be improved if they are concerned with security or lack of security procedures in place. They need to feel they won't be blamed for taking a risk where the end result wasn't quite what was expected.
|
||||
|
||||
One way to create a blameless culture and provide psychological safety is to eliminate the word "why" from your vocabulary. Why is used quite frequently—there are problem-solving techniques called ["The "5 Whys."][4] The problem with "why" is it is subtly coded instead as "explain yourself." Having to answer "why" questions put people on the defensive, and they spend time focusing on what the "right" answer is instead of answering honestly. Instead, switch to using "what" or "how" questions. "How" and "what" questions promote concrete action.
|
||||
|
||||
Consider the difference in these questions:
|
||||
|
||||
* Why did last night's release cause a series of exceptions?
|
||||
vs.
|
||||
* How were the exceptions triggered?
|
||||
|
||||
|
||||
|
||||
> "Recently, I was asked if I was going to fire an employee who made a mistake that cost the company $600,000. 'No,' I replied, 'I just spent $600,000 training him. Why would I want somebody else to hire his experience?'"— Thomas J. Watson, Chairman & CEO of IBM, 1914-1956
|
||||
|
||||
#### Remember the importance of play
|
||||
|
||||
The final aspect of embracing failure is to make time to play. Play shapes our brains and fosters empathy. From a young age, we learn to play games, play on a sports team, play on our own, etc. Chances are you didn't always play on an undefeated sports team or win every single game you've ever played, but practice helped you get better over time no matter what. These experiences teach us to be comfortable with failure and to take it in stride with growth and improvement.
|
||||
|
||||
#### Experimentation leads to learning
|
||||
|
||||
Now that you're ready to embrace failure in your DevOps or engineering practices, where do you start? One of the first processes to look at is the build process. As you most likely know, builds can sometimes result in failures. Changing your build process to include [progressive delivery][5] techniques helps you release features in a controlled manner as opposed to a big bang. Using ring deployments or a canary launch, you can see how a feature performs for a small group of users. If there is a failure, the blast radius has been minimized.
|
||||
|
||||
Another process that can help you learn about your applications and systems is experimentation. Experiments provide a number of learning opportunities, and they don't always go as expected. Some failures can turn into wild successes; for example—[Post-it Notes][6]. Experiments allow us to test a hypothesis and learn new things. Experimenting with software can look like running an A/B test to see which look and feel leads to greater engagement or collecting page load time metrics to see if adding pagination to search results negatively impacts performance.
|
||||
|
||||
A popular type of experimentation is to run a chaos day or game day. With a game day, you purposely cause a system or application to fail. This combines the notion of play, failure, and learning. During this controlled experiment, you learn how your system behaves during failure scenarios. The knowledge gained during game days can be used to put safety measures in place or define processes for what to do when a specific failure occurs.
|
||||
|
||||
### Lean into failure
|
||||
|
||||
Failure can be scary; it is seen as a negative and something we want to avoid. I call on you to change your perspective on this. If you're not failing, you're not learning.
|
||||
|
||||
I challenge you to normalize failure and help reduce the stigma by sharing a failure of yours. Share your failures in the comments below or tag me on social media.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/20/10/organizations-can-lean-failure
|
||||
|
||||
作者:[Dawn Parzych][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/dawnparzych
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/fail_failure_celebrate.png?itok=LbvDAEZF (failure sign at a party, celebrating failure)
|
||||
[2]: https://opensource.com/article/19/11/burnout-open-source-communities
|
||||
[3]: https://opensource.com/sites/default/files/uploads/quote-failure-opensource_0.png
|
||||
[4]: https://en.wikipedia.org/wiki/Five_whys
|
||||
[5]: https://launchdarkly.com/blog/all-the-canaries-lived-its-time-to-adopt-progressive-delivery/
|
||||
[6]: https://www.ideatovalue.com/insp/nickskillicorn/2017/04/true-story-post-notes-almost-failed/
|
235
sources/tech/20201009 My open source video game for Open Jam.md
Normal file
235
sources/tech/20201009 My open source video game for Open Jam.md
Normal file
@ -0,0 +1,235 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: ( )
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (My open source video game for Open Jam)
|
||||
[#]: via: (https://opensource.com/article/20/10/open-source-game)
|
||||
[#]: author: (Klaatu https://opensource.com/users/klaatu)
|
||||
|
||||
My open source video game for Open Jam
|
||||
======
|
||||
Step through a game programmed for Open Jam 2020 to get tips for your
|
||||
own design.
|
||||
![Gaming with penguin pawns][1]
|
||||
|
||||
This year, I joined in on the [Open Jam][2], a "game jam" in which programmers around the world dedicate a weekend to create open source games. The jam is essentially an excuse to spend a weekend coding, and the majority of the games that come out of the challenge are small distractions rather than something you're likely to play for hours on end. But they're fun, diverse, and open source, and that's a pretty good feature list for a game.
|
||||
|
||||
The game I submitted is [Unveil][3], a calming puzzle game in which the player must first discover the goal, and then work to achieve it with the greatest number of points. Because part of the game is the discovery process, I won't reveal any more about the gameplay than that.
|
||||
|
||||
![Unveil game][4]
|
||||
|
||||
(Klaatu, [CC BY-SA 4.0][5])
|
||||
|
||||
The whole game is only 338 lines, written in [Python][6] using the [Pygame][6] module. It's, of course, open source, and part of it may serve as a good introduction to a few programming concepts that used to confound me (two-dimensional arrays being the most significant). For simple game design, a two-dimensional array is very useful because so many enduring games are built on them. You can probably think of several, although if you don't know what a two-dimensional array is, you may not realize it.
|
||||
|
||||
### Arrays in gaming
|
||||
|
||||
An array is a collection of data. An array can be listed across a page or an X-axis (in mathematical terms). For instance:
|
||||
|
||||
|
||||
```
|
||||
`artichoke, lettuce, carrot, aubergine, potato`
|
||||
```
|
||||
|
||||
An array may also be represented as a list or a Y-axis:
|
||||
|
||||
|
||||
```
|
||||
artichoke
|
||||
lettuce
|
||||
carrot
|
||||
aubergine
|
||||
potato
|
||||
```
|
||||
|
||||
This is a one-dimensional array. A two-dimensional array extends on both the X-axis and Y-axis.
|
||||
|
||||
Here's a common two-dimensional array seen in the world of board games:
|
||||
|
||||
![Chess][7]
|
||||
|
||||
(Klaatu, [CC BY-SA 4.0][5])
|
||||
|
||||
Yes, two-dimensional arrays are used as the board for chess, draughts, noughts and crosses (also called tic-tac-toe), [RPG battle maps][8], [minesweeper][9], Carcassonne, Forbidden Island, and in slightly modified forms, games like Monopoly and even [Ur][10] (literally the oldest game we know of).
|
||||
|
||||
If you can comfortably create a two-dimensional array, you have a great start at programming any number of games.
|
||||
|
||||
### Creating tiles in Pygame
|
||||
|
||||
If you're not familiar with Python, you should take some time to review this [Python (and Pygame) introductory series][11]. If you feel confident enough to translate code to other libraries, though, there's nothing specific to Pygame in the "important" parts of this code (the array constructor), so you can use any library or language.
|
||||
|
||||
For simplicity, I'll call the individual squares in the game board array _tiles_. To construct a two-dimensional array, or game board as the case may be, you must have tiles. In object-oriented programming, you consider each component as a unique object based upon a template (or _class_, in programming terminology). So, before creating the game board, you must first create the infrastructure for the board's building blocks: tiles.
|
||||
|
||||
First, set up a simple Pygame project, creating a display (your window into the game world), a group to represent the game board, and a few standard variables:
|
||||
|
||||
|
||||
```
|
||||
import pygame
|
||||
|
||||
pygame.init()
|
||||
game_world = pygame.display.set_mode((960, 720))
|
||||
game_board = pygame.sprite.Group()
|
||||
|
||||
running = True
|
||||
black = (0, 0, 0)
|
||||
white = (255, 255, 255)
|
||||
red = (245, 22, 22)
|
||||
world_x = 960
|
||||
world_y = 720
|
||||
```
|
||||
|
||||
Next, create a `Tile` class to establish the template from which each tile gets cast. The first function initializes a new tile when one is created and gives it the necessary basic fields: width, height, an image (actually, I just filled it with the color white), and whether or not it's active. In this case, I use `is_pressed`, as if the tile is a button, because that's what it'll look like when the code is finished: when the user clicks a tile, it changes color as if it were a button being lit up. For other purposes, this state needn't be visible. In chess, for example, you might instead have a field to represent whether a tile is occupied and, if so, by what kind of chess piece.
|
||||
|
||||
|
||||
```
|
||||
class Tile(pygame.sprite.Sprite):
|
||||
def __init__(self, x, y, w, h, c):
|
||||
pygame.sprite.Sprite.__init__(self)
|
||||
self.image = pygame.Surface((w, h))
|
||||
self.image.fill(c)
|
||||
self.rect = self.image.get_rect()
|
||||
self.rect.x = x
|
||||
self.rect.y = y
|
||||
self.is_pressed = False
|
||||
```
|
||||
|
||||
The second function is an update function. Specifically, it checks whether a tile has been clicked by the user. This requires mouse coordinates, which you'll get later in the code during the event loop.
|
||||
|
||||
For this demonstration, I'll make this function fill the tile with the color red when it's in the `is_pressed` state and back to white otherwise:
|
||||
|
||||
|
||||
```
|
||||
def was_clicked(self, mouse):
|
||||
if self.rect.collidepoint(mouse) and not self.is_pressed:
|
||||
self.image.fill(red)
|
||||
self.is_pressed = True
|
||||
elif self.rect.collidepoint(mouse) and self.is_pressed:
|
||||
self.image.fill(white)
|
||||
self.is_pressed = False
|
||||
else:
|
||||
return False
|
||||
```
|
||||
|
||||
### Main loop
|
||||
|
||||
This demo's main loop is simple. It checks for two kinds of input: a quit signal and a mouse down (click) event. When it detects a mouse click, it calls the `was_clicked` function to react (filling it with red or white, depending on its current state).
|
||||
|
||||
Finally, the screen fills with black, the game board state is updated, and the screen is redrawn:
|
||||
|
||||
|
||||
```
|
||||
"""
|
||||
holding place for game board construction
|
||||
"""
|
||||
|
||||
while running:
|
||||
for event in pygame.event.get():
|
||||
if event.type == pygame.QUIT:
|
||||
running = False
|
||||
|
||||
elif event.type == pygame.MOUSEBUTTONDOWN:
|
||||
for hitbox in game_board:
|
||||
hitbox.was_clicked(event.pos)
|
||||
|
||||
game_world.fill(black)
|
||||
game_board.update()
|
||||
game_board.draw(game_world)
|
||||
pygame.display.update()
|
||||
|
||||
pygame.quit()
|
||||
```
|
||||
|
||||
### Board construction
|
||||
|
||||
To build a two-dimensional array, you must first decide how many tiles you want in both directions. I'll use eight for this example because that's how a chessboard is constructed, but you could use fewer or more. You could even accept arguments at launch to define the array's size depending on options, such as `--row` and `--column:`
|
||||
|
||||
|
||||
```
|
||||
rows = 8
|
||||
columns = 8
|
||||
```
|
||||
|
||||
Because you don't know the size of the board, you must calculate the width of the rows and columns based on the size of your display. I also include one pixel of padding between each tile, because, without a gap, it looks like one big block of color:
|
||||
|
||||
|
||||
```
|
||||
column_width = world_x / columns
|
||||
row_height = world_y / rows
|
||||
pad = 1
|
||||
```
|
||||
|
||||
Laying out tiles across the display is simple. Of course, this isn't the goal, as it only draws along the X-axis, but it's a good start:
|
||||
|
||||
|
||||
```
|
||||
j = 0
|
||||
|
||||
while j < rows:
|
||||
tile = Tile(j * column_width, row_height, column_width - pad, row_height - pad, white)
|
||||
game_board.add(tile)
|
||||
j += 1
|
||||
```
|
||||
|
||||
The idea is that the variable `j` starts at 0, so the first tile is placed from 0 to `column_width`, less the value of the padding. Then the variable `j` is incremented to 1, so the next tile is placed at 1 times the value of `column_width`, and so on.
|
||||
|
||||
You can run that code to see the partial success it renders. What this solution obviously lacks is any awareness of further rows.
|
||||
|
||||
Use a second counter variable to track rows:
|
||||
|
||||
|
||||
```
|
||||
j = 0
|
||||
k = 0
|
||||
|
||||
while j < rows:
|
||||
while k < columns:
|
||||
tile = Tile(k * column_width, j * row_height, column_width - pad, row_height - pad, white)
|
||||
game_board.add(tile)
|
||||
k += 1
|
||||
j += 1
|
||||
k = 0
|
||||
```
|
||||
|
||||
In this code block, which achieves the desired result, each tile is positioned in a space determined by the current value of either `j` or `k`.
|
||||
|
||||
The `k` variable is incremented within its loop so that each tile is progressively placed along the X-axis.
|
||||
|
||||
The `j` variable is incremented outside the nested loop so that everything gets moved down one row.
|
||||
|
||||
The `k` variable is then set to 0 so that when the inner loop starts again, everything is shunted back to the far left of the screen.
|
||||
|
||||
![2D array][12]
|
||||
|
||||
(Klaatu, [CC BY-SA 4.0][5])
|
||||
|
||||
### Easy arrays
|
||||
|
||||
Creating a grid can seem mathematically and syntactically intensive, but with this example plus a little bit of thought about what result you want, you can generate them at will. The only thing left for you to do now is to create a game around it. That's what I did, and you're welcome to play it by downloading it from its home on [Itch.io][3] or from its source repository on [git.nixnet.xyz][13]. Enjoy!
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/20/10/open-source-game
|
||||
|
||||
作者:[Klaatu][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/klaatu
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/gaming_grid_penguin.png?itok=7Fv83mHR (Gaming with penguin pawns)
|
||||
[2]: http://openjam.io
|
||||
[3]: https://notklaatu.itch.io/unveil
|
||||
[4]: https://opensource.com/sites/default/files/uploads/unveil-2.jpg (Unveil game)
|
||||
[5]: https://creativecommons.org/licenses/by-sa/4.0/
|
||||
[6]: https://www.python.org/
|
||||
[7]: https://opensource.com/sites/default/files/uploads/chess.jpg (Chess)
|
||||
[8]: https://opensource.com/article/18/5/maptool
|
||||
[9]: https://opensource.com/article/19/9/advanced-bash-building-minesweeper
|
||||
[10]: https://otagomuseum.nz/athome/the-royal-game-of-ur
|
||||
[11]: https://opensource.com/article/17/10/python-101
|
||||
[12]: https://opensource.com/sites/default/files/uploads/2darray.jpg (2D array)
|
||||
[13]: https://git.nixnet.xyz/klaatu/unveil
|
@ -0,0 +1,134 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: ( )
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (6 Essential Things To Do After Installing Manjaro Linux)
|
||||
[#]: via: (https://itsfoss.com/things-to-do-after-installing-manjaro/)
|
||||
[#]: author: (Dimitrios Savvopoulos https://itsfoss.com/author/dimitrios/)
|
||||
|
||||
6 Essential Things To Do After Installing Manjaro Linux
|
||||
======
|
||||
|
||||
So, you just did a [fresh installation of Manjaro Linux][1]. Now what?
|
||||
|
||||
Here are a few essential post installation steps I recommend you to follow.
|
||||
|
||||
Quite honestly, these are the things I prefer to do after installing Manjaro. Yours could differ depending on your need.
|
||||
|
||||
### Recommended Things To Do After Installing Manjaro Linux
|
||||
|
||||
![][2]
|
||||
|
||||
I am using Manjaro Xfce edition but the steps are applicable to other desktop variants of [Manjaro][3] as well.
|
||||
|
||||
#### 1\. Set the fastest mirror
|
||||
|
||||
Before even updating your system, I suggest to sort out your mirror list first. When refreshing the Manjaro system and downloading software from repositories, an optimized mirror list can have noticeable performance impact to the system.
|
||||
|
||||
Open the Terminal emulator and type the following command:
|
||||
|
||||
```
|
||||
sudo pacman-mirrors --fasttrack
|
||||
```
|
||||
|
||||
![][4]
|
||||
|
||||
#### 2\. Update your system
|
||||
|
||||
Keeping your system up-to-date reduces the chances of security vulnerabilities. Refreshing your system repository is also a recommended thing to do before installing new software.
|
||||
|
||||
You can [update your Manjaro system][5] by running the following command.
|
||||
|
||||
```
|
||||
sudo pacman -Syu
|
||||
```
|
||||
|
||||
![][6]
|
||||
|
||||
#### 3\. Enable AUR, Snap or Flatpak support
|
||||
|
||||
[Arch User Repository (AUR)][7] is one of the main reasons that a user chooses an [Arch-based system][8]. It gives you access to a huge number of additional software.
|
||||
|
||||
Optionally, you can also enable support for [Snaps][9] and [Flatpaks][10] directly from Pamac GUI package manager.
|
||||
|
||||
![][11]
|
||||
|
||||
#### 4\. Enable TRIM (SSD only)
|
||||
|
||||
If your root partition has been installed on SSD, enabling [TRIM][12] is one thing you need to do after installing Manjaro. TRIM helps to clean blocks in your SSD and extend the lifespan of your SSD.
|
||||
|
||||
To enable TRIM on Manjaro, run the following command in a terminal:
|
||||
|
||||
```
|
||||
sudo systemctl enable fstrim.timer
|
||||
```
|
||||
|
||||
![][13]
|
||||
|
||||
#### 5\. Installing a kernel of your choice (advanced users)
|
||||
|
||||
One of the topics that I covered in my [Manjaro Linux review][14], is how easily you can switch kernels through a graphical interface.
|
||||
|
||||
Do you prefer to use the command line? You can list the installed kernel(s) on your system and install a kernel using your terminal.
|
||||
|
||||
To list the installed kernels:
|
||||
|
||||
```
|
||||
mhwd-kernel -li
|
||||
```
|
||||
|
||||
**To install a new kernel** (the latest to date 5.8 kernel for example)**:**
|
||||
|
||||
```
|
||||
sudo mhwd-kernel -i linux58
|
||||
```
|
||||
|
||||
![][15]
|
||||
|
||||
#### 6\. Install Microsoft true type fonts (if you need it)
|
||||
|
||||
I have to often edit the work documents on my personal computer and hence I need the Microsoft fonts like Times New Roman or Arial.
|
||||
|
||||
If you also need to use Microsoft fonts, you can access the [package][16] from [AUR][7]. If you want to use the command line for AUR packages, you can install an [AUR helper][17].
|
||||
|
||||
![][18]
|
||||
|
||||
#### Conclusion
|
||||
|
||||
[Manjaro is a great distribution][19] if you want to use the benefits of Arch Linux on a pre-configured, desktop optimized distribution. Though it comes pre-configured with many essentials, there are a few steps that cannot be done in advance, as everyone has a different setup and different needs.
|
||||
|
||||
Please let us know in the comments below, which step apart from the already mentioned is the essential for you.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://itsfoss.com/things-to-do-after-installing-manjaro/
|
||||
|
||||
作者:[Dimitrios Savvopoulos][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/dimitrios/
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://itsfoss.com/install-manjaro-linux/
|
||||
[2]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/10/things-to-do-after-installing-manjaro.jpg?resize=800%2C450&ssl=1
|
||||
[3]: https://manjaro.org
|
||||
[4]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/08/manjaro-fasttrack.png?resize=800%2C600&ssl=1
|
||||
[5]: https://itsfoss.com/update-arch-linux/
|
||||
[6]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/03/sudo-pacman-Syu.png?resize=800%2C504&ssl=1
|
||||
[7]: https://itsfoss.com/aur-arch-linux/
|
||||
[8]: https://itsfoss.com/arch-based-linux-distros/
|
||||
[9]: https://itsfoss.com/use-snap-packages-ubuntu-16-04/
|
||||
[10]: https://itsfoss.com/flatpak-guide/
|
||||
[11]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/08/pamac-2.png?resize=800%2C600&ssl=1
|
||||
[12]: https://en.wikipedia.org/wiki/Trim_(computing)
|
||||
[13]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/08/fstrim.timer_.png?resize=800%2C600&ssl=1
|
||||
[14]: https://itsfoss.com/manjaro-linux-review/
|
||||
[15]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/08/manjaro-cli-kernels.png?resize=800%2C600&ssl=1
|
||||
[16]: https://aur.archlinux.org/packages/ttf-ms-fonts
|
||||
[17]: https://itsfoss.com/best-aur-helpers/
|
||||
[18]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/08/ttf-ms-fonts.png?resize=800%2C600&ssl=1
|
||||
[19]: https://itsfoss.com/why-use-manjaro-linux/
|
Loading…
Reference in New Issue
Block a user