summaryrefslogtreecommitdiffhomepage
path: root/ru-ru
diff options
context:
space:
mode:
Diffstat (limited to 'ru-ru')
-rw-r--r--ru-ru/c++-ru.html.markdown2
-rw-r--r--ru-ru/c-ru.html.markdown2
-rw-r--r--ru-ru/clojure-ru.html.markdown2
-rw-r--r--ru-ru/common-lisp-ru.html.markdown7
-rw-r--r--ru-ru/go-ru.html.markdown10
-rw-r--r--ru-ru/haskell-ru.html.markdown2
-rw-r--r--ru-ru/nim-ru.html.markdown2
-rw-r--r--ru-ru/python-ru.html.markdown1
-rw-r--r--ru-ru/qt-ru.html.markdown2
-rw-r--r--ru-ru/rust-ru.html.markdown2
-rw-r--r--ru-ru/zfs-ru.html.markdown406
11 files changed, 422 insertions, 16 deletions
diff --git a/ru-ru/c++-ru.html.markdown b/ru-ru/c++-ru.html.markdown
index 787d31e8..43e9e6a3 100644
--- a/ru-ru/c++-ru.html.markdown
+++ b/ru-ru/c++-ru.html.markdown
@@ -1,5 +1,5 @@
---
-language: c++
+language: C++
filename: learncpp-ru.cpp
contributors:
- ["Steven Basart", "http://github.com/xksteven"]
diff --git a/ru-ru/c-ru.html.markdown b/ru-ru/c-ru.html.markdown
index 2d06a2d0..a146a76b 100644
--- a/ru-ru/c-ru.html.markdown
+++ b/ru-ru/c-ru.html.markdown
@@ -1,5 +1,5 @@
---
-language: c
+language: C
filename: learnc-ru.c
contributors:
- ["Adam Bard", "http://adambard.com/"]
diff --git a/ru-ru/clojure-ru.html.markdown b/ru-ru/clojure-ru.html.markdown
index 19233d23..66986fa0 100644
--- a/ru-ru/clojure-ru.html.markdown
+++ b/ru-ru/clojure-ru.html.markdown
@@ -421,7 +421,7 @@ Clojuredocs.org — сайт документации языка с пример
[http://clojuredocs.org/quickref/Clojure%20Core](http://clojuredocs.org/quickref/Clojure%20Core)
4Clojure — отличный способ закрепить навыки программирования на clojure, решая задачи вместе с коллегами со всего мира:
-[http://www.4clojure.com/](http://www.4clojure.com/)
+[https://4clojure.oxal.org/](https://4clojure.oxal.org/)
Clojure-doc.org (да, именно) неплохой перечень статей для начинающих:
[http://clojure-doc.org/](http://clojure-doc.org/)
diff --git a/ru-ru/common-lisp-ru.html.markdown b/ru-ru/common-lisp-ru.html.markdown
index d5f9bf0e..0490ee30 100644
--- a/ru-ru/common-lisp-ru.html.markdown
+++ b/ru-ru/common-lisp-ru.html.markdown
@@ -14,7 +14,8 @@ Common Lisp - мультипарадигменный язык программи
спектра задач.
Его частенько называют программируемым языком программирования.
-Идеальная отправная точка - книга [Common Lisp на практике (перевод)](http://lisper.ru/pcl/).
+Идеальная отправная точка - книга
+[Common Lisp на практике (перевод)](https://github.com/pcl-ru/pcl-ru/releases/download/v1.1/pcl-ru.pdf).
Ещё одна популярная книга [Land of Lisp](http://landoflisp.com/).
И одна из последних книг [Common Lisp Recipes](http://weitz.de/cl-recipes/) вобрала в себя лучшие
архитектурные решения на основе опыта коммерческой работки автора.
@@ -674,7 +675,7 @@ nil ; ложь; а ещё пустой список () тож
## Для чтения
На русском
-- [Practical Common Lisp](http://www.gigamonkeys.com/book/)
+- [Practical Common Lisp](https://github.com/pcl-ru/pcl-ru/releases/download/v1.1/pcl-ru.pdf)
На английском
- [Practical Common Lisp](http://www.gigamonkeys.com/book/)
@@ -685,7 +686,7 @@ nil ; ложь; а ещё пустой список () тож
На русском
-- [Lisper.ru](http://lisper.ru/)
+- [Сообщество в Telegram](https://t.me/lisp_forever)
На английском
diff --git a/ru-ru/go-ru.html.markdown b/ru-ru/go-ru.html.markdown
index 37592258..22249a6e 100644
--- a/ru-ru/go-ru.html.markdown
+++ b/ru-ru/go-ru.html.markdown
@@ -29,7 +29,7 @@ Go - это язык общего назначения, целью которо
комментарий */
// Ключевое слово package присутствует в начале каждого файла.
-// Main это специальное имя, обозначающее исполняемый файл, нежели библиотеку.
+// main это специальное имя, обозначающее исполняемый файл, нежели библиотеку.
package main
// Import предназначен для указания зависимостей этого файла.
@@ -82,7 +82,7 @@ func learnTypes() {
// Символ не из ASCII. Исходный код Go в кодировке UTF-8.
g := 'Σ' // тип rune, это алиас для типа int32, содержит символ юникода.
- f := 3.14195 // float64, 64-х битное число с плавающей точкой (IEEE-754).
+ f := 3.14159 // float64, 64-х битное число с плавающей точкой (IEEE-754).
c := 3 + 4i // complex128, внутри себя содержит два float64.
// Синтаксис var с инициализациями.
@@ -334,12 +334,12 @@ func requestServer() {
## Что дальше
-Основа всех основ в Go это [официальный веб сайт](http://golang.org/).
+Основа всех основ в Go это [официальный веб сайт](https://go.dev/).
Там можно пройти туториал, поиграться с интерактивной средой Go и почитать
объёмную документацию.
Для живого ознакомления рекомендуется почитать исходные коды [стандартной
-библиотеки Go](http://golang.org/src/pkg/). Отлично задокументированная, она
+библиотеки Go](https://go.dev/src/). Отлично задокументированная, она
является лучшим источником для чтения и понимания Go, его стиля и идиом. Либо
-можно, кликнув на имени функции в [документации](http://golang.org/pkg/),
+можно, кликнув на имени функции в [документации](https://go.dev/pkg/),
перейти к ее исходным кодам.
diff --git a/ru-ru/haskell-ru.html.markdown b/ru-ru/haskell-ru.html.markdown
index a090ab65..aada30c1 100644
--- a/ru-ru/haskell-ru.html.markdown
+++ b/ru-ru/haskell-ru.html.markdown
@@ -172,7 +172,7 @@ fib x
первое определение, к образцу которого
"подойдет" набор аргументов -}
fib 1 = 1
-fib 2 = 2
+fib 2 = 1
fib x = fib (x - 1) + fib (x - 2)
-- Pattern matching для кортежей выглядит так
diff --git a/ru-ru/nim-ru.html.markdown b/ru-ru/nim-ru.html.markdown
index 0e08f1bf..09784792 100644
--- a/ru-ru/nim-ru.html.markdown
+++ b/ru-ru/nim-ru.html.markdown
@@ -3,7 +3,7 @@ language: Nim
filename: learnNim-ru.nim
contributors:
- ["Jason J. Ayala P.", "http://JasonAyala.com"]
- - ["Dennis Felsing", "http://felsin9.de/nnis/"]
+ - ["Dennis Felsing", "https://dennis.felsing.org"]
translators:
- ["Nomadic", "https://github.com/n0madic"]
- ["dvska", "https://github.com/dvska"]
diff --git a/ru-ru/python-ru.html.markdown b/ru-ru/python-ru.html.markdown
index e0e53b9c..e088593e 100644
--- a/ru-ru/python-ru.html.markdown
+++ b/ru-ru/python-ru.html.markdown
@@ -353,7 +353,6 @@ empty_set = set()
# Да, оно выглядит примерно как словарь. Ну извините, так уж вышло.
filled_set = {1, 2, 2, 3, 4} # => {1, 2, 3, 4}
-# Similar to keys of a dictionary, elements of a set have to be immutable.
# Как и ключи словаря, элементы множества должны быть неизменяемыми.
invalid_set = {[1], 1} # => Выбрасывает ошибку TypeError: unhashable type: 'list'
valid_set = {(1,), 1}
diff --git a/ru-ru/qt-ru.html.markdown b/ru-ru/qt-ru.html.markdown
index bf49d840..15e2c775 100644
--- a/ru-ru/qt-ru.html.markdown
+++ b/ru-ru/qt-ru.html.markdown
@@ -1,7 +1,7 @@
---
category: tool
tool: Qt Framework
-language: c++
+language: C++
filename: learnqt-ru.cpp
contributors:
- ["Aleksey Kholovchuk", "https://github.com/vortexxx192"]
diff --git a/ru-ru/rust-ru.html.markdown b/ru-ru/rust-ru.html.markdown
index d46d301c..a568ac37 100644
--- a/ru-ru/rust-ru.html.markdown
+++ b/ru-ru/rust-ru.html.markdown
@@ -1,5 +1,5 @@
---
-language: rust
+language: Rust
filename: learnrust-ru.rs
contributors:
diff --git a/ru-ru/zfs-ru.html.markdown b/ru-ru/zfs-ru.html.markdown
new file mode 100644
index 00000000..46a3fbb5
--- /dev/null
+++ b/ru-ru/zfs-ru.html.markdown
@@ -0,0 +1,406 @@
+---
+category: tool
+tool: zfs
+contributors:
+ - ["sarlalian", "http://github.com/sarlalian"]
+ - ["A1EF", "https://github.com/A1EF"]
+filename: LearnZfs-ru.txt
+translators:
+ - ["A1EF", "https://github.com/A1EF"]
+lang: ru-ru
+---
+
+
+[ZFS](http://open-zfs.org/wiki/Main_Page)
+представляет собой переосмысление системы хранения данных, комбинирующее в едином инструменте
+традиционные файловые системы и системы управления томами. ZFS обладает некоторой специфичной
+терминологией, которая отличает её от более традиционных систем хранения данных, однако имеет
+отличный набор возможностей, акцентированных на удобстве использования системными администраторами.
+
+
+## Концепции ZFS
+
+### Виртуальные устройства
+
+Виртуальное устройство (VDEV) подобно устройству RAID, представляемого RAID-контроллером.
+Есть несколько типов виртуальных устройств (VDEV), которые предлагают различные преимущества,
+включая отказоустойчивость и скорость доступа. В основном виртуальные устройства (VDEV)
+предоставляют лучшую отказоустойчивость и безопасность, нежели RAID-контроллеры. Не рекомендуется
+использовать установку RAID с ZFS, поскольку ZFS рассчитывает непосредственно управлять дисками.
+
+Типы виртуальных устройств (VDEV)
+
+* mirror (поддерживается n-кратное зеркалирование)
+* raidz
+ * raidz1 (1-диск четности, аналог RAID 5)
+ * raidz2 (2-диска четности, аналог RAID 6)
+ * raidz3 (3-диска четности, нет имеет аналогичного RAID-массива)
+* disk
+* file (не рекомендовано для промышленного применения из-за добавления нежелательного промежуточного слоя иной файловой системы)
+
+Ваши данные распределяются среди всех виртуальных устройств (VDEV), представленных в пуле хранения,
+так что увеличив число виртуальных устройств (VDEV), вы увеличите количество IOPS.
+
+### Пулы хранения
+
+ZFS использует пулы хранения как абстракцию над нижним уровнем провайдера хранения (VDEV), позволяя вам отделить видимые пользователю
+файловые системы от физического их размещения.
+
+### ZFS датасеты
+
+ZFS датасеты подобны традиционным файловым системам, но имеют гораздо больше возможностей, обеспечивающих обилие преимуществ ZFS.
+Датасеты поддерживают [Copy on Write](https://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BF%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BF%D1%80%D0%B8_%D0%B7%D0%B0%D0%BF%D0%B8%D1%81%D0%B8), снапшоты, квоты, сжатие и дедубликацию.
+
+
+### Ограничения
+
+Один каталог может содержать до 2^48 файлов, каждый до 16 эксабайт. Один пул хранения может содержать до 256 зеттабайт (2^78) данных
+и может быть распределён по 2^64 устройствам. А один хост может иметь 2^64 пула хранения. Лимиты огромны.
+
+
+## Команды
+
+### Пулы хранения
+
+Действия:
+
+* Просмотр
+* Статус
+* Удаление
+* Получение/установка свойств
+
+Просмотр пулов
+
+```bash
+# Создание пула типа raidz
+$ zpool create zroot raidz1 gpt/zfs0 gpt/zfs1 gpt/zfs2
+
+# Просмотр пулов
+$ zpool list
+NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
+zroot 141G 106G 35.2G - 43% 75% 1.00x ONLINE -
+
+# Просмотр детализованной информации о конкретном пуле
+$ zpool list -v zroot
+NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
+zroot 141G 106G 35.2G - 43% 75% 1.00x ONLINE -
+ gptid/c92a5ccf-a5bb-11e4-a77d-001b2172c655 141G 106G 35.2G - 43% 75%
+```
+
+Статус пулов
+
+```bash
+# Получение информации о статусе пулов
+$ zpool status
+ pool: zroot
+ state: ONLINE
+ scan: scrub repaired 0 in 2h51m with 0 errors on Thu Oct 1 07:08:31 2015
+config:
+
+ NAME STATE READ WRITE CKSUM
+ zroot ONLINE 0 0 0
+ gptid/c92a5ccf-a5bb-11e4-a77d-001b2172c655 ONLINE 0 0 0
+
+errors: No known data errors
+
+# Скрабинг пула для исправления любых ошибок
+$ zpool scrub zroot
+$ zpool status -v zroot
+ pool: zroot
+ state: ONLINE
+ scan: scrub in progress since Thu Oct 15 16:59:14 2015
+ 39.1M scanned out of 106G at 1.45M/s, 20h47m to go
+ 0 repaired, 0.04% done
+config:
+
+ NAME STATE READ WRITE CKSUM
+ zroot ONLINE 0 0 0
+ gptid/c92a5ccf-a5bb-11e4-a77d-001b2172c655 ONLINE 0 0 0
+
+errors: No known data errors
+```
+
+Свойства пулов
+
+```bash
+
+# Получение свойств пула, свойства могут быть заданы пользователем или системой.
+$ zpool get all zroot
+NAME PROPERTY VALUE SOURCE
+zroot size 141G -
+zroot capacity 75% -
+zroot altroot - default
+zroot health ONLINE -
+...
+
+# Установка значения свойства пула
+$ zpool set comment="Storage of mah stuff" zroot
+$ zpool get comment
+NAME PROPERTY VALUE SOURCE
+tank comment - default
+zroot comment Storage of mah stuff local
+```
+
+Удаление пула
+
+```bash
+$ zpool destroy test
+```
+
+
+### Датасеты
+
+Действия:
+
+* Создание
+* Просмотр
+* Переименование
+* Удаление
+* Получение/установка свойств
+
+Создание датасетов
+
+```bash
+# Создание датасета
+$ zfs create zroot/root/data
+$ mount | grep data
+zroot/root/data on /data (zfs, local, nfsv4acls)
+
+# Создание дочернего датасета
+$ zfs create zroot/root/data/stuff
+$ mount | grep data
+zroot/root/data on /data (zfs, local, nfsv4acls)
+zroot/root/data/stuff on /data/stuff (zfs, local, nfsv4acls)
+
+
+# Создание тома
+$ zfs create -V zroot/win_vm
+$ zfs list zroot/win_vm
+NAME USED AVAIL REFER MOUNTPOINT
+zroot/win_vm 4.13G 17.9G 64K -
+```
+
+Просмотр датасетов
+
+```bash
+# Просмотр всех датасетов
+$ zfs list
+NAME USED AVAIL REFER MOUNTPOINT
+zroot 106G 30.8G 144K none
+zroot/ROOT 18.5G 30.8G 144K none
+zroot/ROOT/10.1 8K 30.8G 9.63G /
+zroot/ROOT/default 18.5G 30.8G 11.2G /
+zroot/backup 5.23G 30.8G 144K none
+zroot/home 288K 30.8G 144K none
+...
+
+# Просмотр конкретного датасета
+$ zfs list zroot/home
+NAME USED AVAIL REFER MOUNTPOINT
+zroot/home 288K 30.8G 144K none
+
+# Просмотр снапшотов
+$ zfs list -t snapshot
+zroot@daily-2015-10-15 0 - 144K -
+zroot/ROOT@daily-2015-10-15 0 - 144K -
+zroot/ROOT/default@daily-2015-10-15 0 - 24.2G -
+zroot/tmp@daily-2015-10-15 124K - 708M -
+zroot/usr@daily-2015-10-15 0 - 144K -
+zroot/home@daily-2015-10-15 0 - 11.9G -
+zroot/var@daily-2015-10-15 704K - 1.42G -
+zroot/var/log@daily-2015-10-15 192K - 828K -
+zroot/var/tmp@daily-2015-10-15 0 - 152K -
+```
+
+Переименование датасетов
+
+```bash
+$ zfs rename zroot/root/home zroot/root/old_home
+$ zfs rename zroot/root/new_home zroot/root/home
+```
+
+Удаление датасета
+
+```bash
+# Датасеты не могут быть удалены, если у них имеются какие-то снапшоты
+$ zfs destroy zroot/root/home
+```
+
+Получение / установка свойств датасета
+
+```bash
+# Получение всех свойств
+$ zfs get all zroot/usr/home
+NAME PROPERTY VALUE SOURCE
+zroot/home type filesystem -
+zroot/home creation Mon Oct 20 14:44 2014 -
+zroot/home used 11.9G -
+zroot/home available 94.1G -
+zroot/home referenced 11.9G -
+zroot/home mounted yes -
+...
+
+# Получения свойства для датасета
+$ zfs get compression zroot/usr/home
+NAME PROPERTY VALUE SOURCE
+zroot/home compression off default
+
+# Установка значения свойства на датасете
+$ zfs set compression=lz4 zroot/lamb
+
+# Получение значений выбранных свойств всех датасетов
+$ zfs list -o name,quota,reservation
+NAME QUOTA RESERV
+zroot none none
+zroot/ROOT none none
+zroot/ROOT/default none none
+zroot/tmp none none
+zroot/usr none none
+zroot/home none none
+zroot/var none none
+...
+```
+
+
+### Снапшоты
+
+ZFS снапшоты -- одна из очень важных особенностей zfs
+
+* Место, которое они занимают, равно разнице данных между файловой системой и её снапшотом
+* Время создания занимает считанные секунды
+* Восстановление настолько быстро, насколько позволяет вам запись данных
+* Они очень просты в автоматизации
+
+Действия:
+
+* Создание
+* Удаление
+* Переименование
+* Получение доступа к снапшотам
+* Отправка / Получение
+* Клонирование
+
+
+Создание снапшотов
+
+```bash
+# Создание снапшота единственного датасета
+zfs snapshot zroot/home/sarlalian@now
+
+# Создание снапшота для родительского и дочерних датасетов
+$ zfs snapshot -r zroot/home@now
+$ zfs list -t snapshot
+NAME USED AVAIL REFER MOUNTPOINT
+zroot/home@now 0 - 26K -
+zroot/home/sarlalian@now 0 - 259M -
+zroot/home/alice@now 0 - 156M -
+zroot/home/bob@now 0 - 156M -
+...
+```
+
+Удаление снапшотов
+
+```bash
+# Как удалить снапшот
+$ zfs destroy zroot/home/sarlalian@now
+
+# Удаление снапшота в родительском и дочерних датасетах
+$ zfs destroy -r zroot/home/sarlalian@now
+
+```
+
+Переименование снапшотов
+
+```bash
+# Переименование снапшота
+$ zfs rename zroot/home/sarlalian@now zroot/home/sarlalian@today
+$ zfs rename zroot/home/sarlalian@now today
+
+$ zfs rename -r zroot/home@now @yesterday
+```
+
+Получение доступа к спапшотам
+
+```bash
+# CD в каталог снапшота
+$ cd /home/.zfs/snapshot/
+```
+
+Отправка и получение
+
+```bash
+# Сохранение снапшота в файл
+$ zfs send zroot/home/sarlalian@now | gzip > backup_file.gz
+
+# Отправка снапшота в другой датасет
+$ zfs send zroot/home/sarlalian@now | zfs recv backups/home/sarlalian
+
+# Отправка снапшота на удаленный хост
+$ zfs send zroot/home/sarlalian@now | ssh root@backup_server 'zfs recv zroot/home/sarlalian'
+
+# Отправка полного датасета со снапшотами на новый хост
+$ zfs send -v -R zroot/home@now | ssh root@backup_server 'zfs recv zroot/home'
+```
+
+Клонирование снапшотов
+
+```bash
+# Клонирование снапшота
+$ zfs clone zroot/home/sarlalian@now zroot/home/sarlalian_new
+
+# Повышение клона, чтобы он больше не зависел от снапшота
+$ zfs promote zroot/home/sarlalian_new
+```
+
+### Собираем всё вместе
+
+Нижеследующий скрипт использует FreeBSD, jails и ZFS для автоматизации
+подготовки чистой копии стейджинговой базы mysql с живой реплики слейв-ноды.
+
+```bash
+#!/bin/sh
+
+echo "==== Остановка стейджингового сервера баз данных ===="
+jail -r staging
+
+echo "==== Очистка существующих стейджингового сервера и снапшота ===="
+zfs destroy -r zroot/jails/staging
+zfs destroy zroot/jails/slave@staging
+
+echo "==== Фиксация базы на слейве ===="
+echo "FLUSH TABLES WITH READ LOCK;" | /usr/local/bin/mysql -u root -pmyrootpassword -h slave
+
+echo "==== Сохранение снапшота файлов базы слейва как zroot/jails/slave@staging ===="
+zfs snapshot zroot/jails/slave@staging
+
+echo "==== Запуск слейв-ноды сервера баз данных ===="
+jail -c slave
+
+echo "==== Клонирование снапшота слейва на стейджинговый сервер ===="
+zfs clone zroot/jails/slave@staging zroot/jails/staging
+
+echo "==== Установка конфига стейджингово mysql ===="
+mv /jails/staging/usr/local/etc/my.cnf /jails/staging/usr/local/etc/my.cnf.slave
+cp /jails/staging/usr/local/etc/my.cnf.staging /jails/staging/usr/local/etc/my.cnf
+
+echo "==== Настройка стейджингового файла rc.conf ===="
+mv /jails/staging/etc/rc.conf.local /jails/staging/etc/rc.conf.slave
+mv /jails/staging/etc/rc.conf.staging /jails/staging/etc/rc.conf.local
+
+echo "==== Запуск стейджингово сервера баз данных ===="
+jail -c staging
+
+echo "==== Отключение синхронизации стейджинговой базы с мастером ===="
+echo "STOP SLAVE;" | /usr/local/bin/mysql -u root -pmyrootpassword -h staging
+echo "RESET SLAVE;" | /usr/local/bin/mysql -u root -pmyrootpassword -h staging
+```
+
+
+### Почитать дополнительно
+
+* [BSDNow's Crash Course on ZFS](http://www.bsdnow.tv/tutorials/zfs)
+* [FreeBSD Handbook on ZFS](https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/zfs.html)
+* [BSDNow's Crash Course on ZFS](http://www.bsdnow.tv/tutorials/zfs)
+* [Oracle's Tuning Guide](http://www.oracle.com/technetwork/articles/servers-storage-admin/sto-recommended-zfs-settings-1951715.html)
+* [OpenZFS Tuning Guide](http://open-zfs.org/wiki/Performance_tuning)
+* [FreeBSD ZFS Tuning Guide](https://wiki.freebsd.org/ZFSTuningGuide)