1
0
Fork 0
This commit is contained in:
Digital Studium 2023-05-08 18:46:26 +03:00
parent 2389983607
commit c2f72e6cce
7 changed files with 865 additions and 135 deletions

1
.gitignore vendored
View File

@ -1 +1,2 @@
.hugo_build.lock .hugo_build.lock
/venv/

View File

@ -0,0 +1,68 @@
---
title: "BASH: arrays and hashmaps"
category: bash-lifehacks
filename: bash-arrays-and-hashmaps
date: 2023-05-07T13:35:26.956Z
---
Sometimes there is a need to use in BASH such structures as lists (also known as arrays) and dictionaries (also known as hashmaps and associative arrays). In this post there are some samples how to work with them.
<!--more-->
## 1. Arrays
Array creation in bash can be done this way:
```shell
sample_array=(foo bar bazz)
```
In order to add single or multiple new elements to the end of array, you should use this syntax:
```shell
sample_array+=(six seven)
```
In order to get elements on the list in a cycle, you should use this syntax:
```shell
for i in ${sample_array[@]}
do
echo $i
done
```
Here is an example how to get element by its index:
```shell
echo ${sample_array[0]}
echo ${sample_array[3]}
# 0, 3 etc. - elements' indexes
```
Array slicing:
```shell
sliced_array=${sample_array[@]:1} # will get all elements of a sample_array, starting with 1st
another_sliced_array=${sample_array[@]:1:5} # will get sample_array elements since 1st to 5th
```
## 2. Hashmaps
To create hashmap in bash use this syntax:
```shell
declare -A sample_hashmap=([one]=one [two]=two [three]=three [four]=four [five]=five)
```
This will add new key "foo" with value "bar":
```shell
sample_hashmap[foo]=bar
```
Cycle:
```shell
for key in ${sample_hashmap[@]}
do
echo ${sample_hashmap[$key]}
done
```

View File

@ -0,0 +1,69 @@
---
title: "BASH: массивы и ассоциативные массивы"
category: bash-lifehacks
filename: bash-arrays-and-hashmaps
date: 2023-05-07T13:35:26.956Z
---
Иногда возникает необходимость использовать в bash такие структуры данных, как списки (они же массивы) и ассоциативные массивы (он же хэш-таблицы). В данной статье приведены примеры того, как с ними работать.
<!--more-->
## 1. Массивы
создание массива в bash делается просто:
```shell
sample_array=(foo bar bazz)
```
Чтобы добавить один или несколько новых элементов в конец массива, нужно использовать такой синтаксис:
```shell
sample_array+=(six seven)
```
Чтобы пройти по массиву циклом, нужно использовать такой синтаксис:
```shell
for i in ${sample_array[@]}
do
echo $i
done
```
Чтобы получить элемент по индексу, используется такая конструкция:
```shell
echo ${sample_array[0]}
echo ${sample_array[3]}
# 0, 3 и т. п. - индексы элементов массива
```
Чтобы обрезать массив, используется такая конструкция:
```shell
sliced_array=${sample_array[@]:1} # выведет все элементы sample_array, начиная с 1-го
another_sliced_array=${sample_array[@]:1:5} # выведет элементы sample_array с 1-го по 5-й
```
## 2. Ассоциативные массивы
создание ассоциативного массива в bash делается так:
```shell
declare -A sample_hashmap=([one]=one [two]=two [three]=three [four]=four [five]=five)
```
Добавление новых элементов:
```shell
sample_hashmap[foo]=bar
```
Обход в цикле:
```shell
for key in ${sample_hashmap[@]}
do
echo ${sample_hashmap[$key]}
done
```

View File

@ -1,129 +0,0 @@
---
title: "Linux: Как расширить логический том LVM"
category: linux-lifehacks
filename: how-to-extend-lvm-volume-on-linux
date: 2022-05-15
---
### Ситуация 1: новый диск
#### Первый шаг: создание физического тома
После того, как вы присоединили диск к физическому серверу или к виртуальной машине, вам нужно набрать команду:
```bash
sudo fdisk -l
```
<!--more-->
Это нужно, чтобы убедиться, что диск распознан операционной системой, а также чтобы идентифицировать имя диска. Вывод команды будет примерно такой:
```plaintext
Disk /dev/vdc: 5 GiB, 5368709120 bytes, 10485760 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
```
После того, как вы идентифицировали имя диска (в нашем случае это `/dev/vdc`), вы можете создать физический том с помощью команды:
```bash
sudo pvcreate /dev/vdc
```
Вы увидите такой вывод:
```plaintext
kostya@ubuntu-21-04:~$ sudo pvcreate /dev/vdc
Physical volume "/dev/vdc" successfully created.
kostya@ubuntu-21-04:~$
```
#### Второй шаг: расширение группы томов
Чтобы увидеть список доступных групп томов, воспользуйтесь командой:
```shell
vgdisplay
```
Теперь можно расширить группу томов. Делается это такой командой:
```bash
sudo vgextend {vg-name} {pv-name}
```
В нашем случае это будет:
```bash
sudo vgextend vg-example /dev/vdc
```
Вы увидите такой вывод:
```plaintext
kostya@ubuntu-21-04:~$ sudo vgextend vg-example /dev/vdc
Physical volume "/dev/vdc" successfully created.
Volume group "vg-example" successfully extended
kostya@ubuntu-21-04:~$
```
#### Третий шаг: расширение логического тома
Расширение логического тома делается такой командой:
```bash
sudo lvextend --size +{size} {vg-name/lv-name}
```
В нашем случае это будет:
```bash
sudo lvextend --size +2G vg-example/lv-example
```
Вы увидите такой вывод:
```plaintext
kostya@ubuntu-21-04:~$ sudo lvextend --size +2G vg-example/lv-example
Size of logical volume vg-example/lv-example changed from 5.00 GiB (1280 extents) to 7.00 GiB (1792 extents).
Logical volume vg-example/lv-example successfully resized.
kostya@ubuntu-21-04:~$
```
Если же вы хотите, чтобы логичекий том использовал всё свободное место в группе томов, то наберите
команду:
```bash
sudo lvextend --extents +100%FREE vg-example/lv-example
```
#### Четвёртый шаг: расширение файловой системы
Если у вас файловая система `xfs`, то расширение делается такой командой:
```bash
sudo xfs_growfs /dev/{vg-name}/{lv-name}
```
В нашем случае это будет:
```bash
sudo xfs_growfs /dev/vg-example/lv-example
```
В случае с файловой системой ext4 замените команду `xfs_growfs` на `resize2fs`
### Ситуация 2: если изменился размер существующего диска
Иногда может измениться размер существующего диска, например, в случае с виртуальной машиной. В таком случае, первый шаг будет отличаться, второй шаг выполняться не будет, а остальные шаги будут такими же, как в ситуации с новым диском, описанной выше. На первом шаге нужно будет не создать физический том, а расширить существующий. Делается это такой командой:
```bash
sudo pvresize /dev/DISKNAME
```
Например,
```bash
sudo pvresize /dev/vdc
```

View File

@ -3,9 +3,8 @@ backend:
local_backend: true local_backend: true
# These lines should *not* be indented media_folder: "static/images" # Media files will be stored in the repo under static/images
media_folder: "static/images" # Media files will be stored in the repo under static/images/uploads public_folder: "/images" # The src attribute for uploaded media will begin with /images
public_folder: "/images" # The src attribute for uploaded media will begin with /images/uploads
i18n: i18n:
structure: multiple_folders structure: multiple_folders
@ -23,7 +22,6 @@ collections:
view_groups: view_groups:
- label: Year - label: Year
field: date field: date
# groups items based on the value matched by the pattern
pattern: \d{4} pattern: \d{4}
- label: Category - label: Category
field: category field: category
@ -35,7 +33,7 @@ collections:
- label: "Category" - label: "Category"
name: "category" name: "category"
widget: "select" widget: "select"
options: ["/", "linux-lifehacks", "nginx-lifehacks", "python-lifehacks", "ubuntu-lifehacks"] options: ["/", "linux-lifehacks", "nginx-lifehacks", "python-lifehacks", "ubuntu-lifehacks", "bash-lifehacks"]
i18n: duplicate i18n: duplicate
- label: Filename - label: Filename
name: filename name: filename

View File

@ -8,6 +8,6 @@
</head> </head>
<body> <body>
<!-- Include the script that builds the page and powers Decap CMS --> <!-- Include the script that builds the page and powers Decap CMS -->
<script src="https://unpkg.com/netlify-cms@^2.0.0/dist/netlify-cms.js"></script> <script src="netlify-cms.js"></script>
</body> </body>
</html> </html>

723
static/admin/netlify-cms.js Normal file

File diff suppressed because one or more lines are too long