PostgreSQL (произносится «Пост-Грэс-Кью-Эл») — свободная объектно-реляционная система управления базами данных (СУБД).
PostgreSQL создана на основе некоммерческой СУБД Postgres, разработанной как open-source проект в Калифорнийском университете в Беркли. К разработке Postgres, начавшейся в 1986 году, имел непосредственное отношение Майкл Стоунбрейкер, руководитель более раннего проекта Ingres, на тот момент уже приобретённого компанией Computer Associates. Название расшифровывалось как «Post Ingres», и при создании Postgres были применены многие ранние наработки.
Стоунбрейкер и его студенты разрабатывали новую СУБД в течение восьми лет с 1986 по 1994 годы. За этот период в синтаксис были введены процедуры, правила, пользовательские типы и другие компоненты. В 1995 году разработка снова разделилась: Стоунбрейкер использовал полученный опыт в создании коммерческой СУБД Illustra, продвигаемой его собственной одноимённой компанией (приобретённой впоследствии компанией Informix), а его студенты разработали новую версию Postgres — Postgres95, в которой язык запросов POSTQUEL — наследие Ingres — был заменен на SQL.
Разработка Postgres95 была выведена за пределы университета и передана команде энтузиастов. Новая СУБД получила имя, под которым она известна и развивается в текущий момент — PostgreSQL.
PostgreSQL - от теории к практике (2020 год)
Телеграм-каналы
YouTube
pgAdmin is the most popular and feature rich Open Source administration and development platform for PostgreSQL, the most advanced Open Source database in the world. pgAdmin may be used on Linux, Unix, macOS and Windows to manage PostgreSQL and EDB Advanced Server 10 and above.
DataGrip is a database management environment for developers. It is designed to query, create, and manage databases. Databases can work locally, on a server, or in the cloud. Supports MySQL, PostgreSQL, Microsoft SQL Server, Oracle, and more. If you have a JDBC driver, add it to DataGrip, connect to your DBMS, and start working.
Free multi-platform database tool for developers, database administrators, analysts and all people who need to work with databases. Supports all popular databases: MySQL, PostgreSQL, SQLite, Oracle, DB2, SQL Server, Sybase, MS Access, Teradata, Firebird, Apache Hive, Phoenix, Presto, etc.
Установка сервера СУБД (ОС Ubuntu Server Edition)
# Create the file repository configuration:
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
# Import the repository signing key:
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
# Update the package lists:
sudo apt-get update
# Install the latest version of PostgreSQL.
# If you want a specific version, use 'postgresql-12' or similar instead of 'postgresql':
sudo apt-get -y install postgresql
В СУБД PostgreSQL уровень изоляции транзакций по умолчанию READ COMMITED. Задается параметром default_transaction_isolation.
SHOW default_transaction_isolation;
Создание кластераpg_createcluster 15 standby1
Запуск кластераpg_ctlcluster 15 standby1 start
postgres@singularity:~$ pg_lsclusters
Ver Cluster Port Status Owner Data directory Log file
15 main 5432 online postgres /var/lib/postgresql/15/main /var/log/postgresql/postgresql-15-main.log
15 standby1 5433 online postgres /var/lib/postgresql/15/standby1 /var/log/postgresql/postgresql-15-standby1.log
/var/log/postgresql/postgresql-15-main.log
/var/log/postgresql/postgresql-15-standby1.log
COPY — копировать данные между файлом и таблицейpostgres=# \c zabbix
Вы подключены к базе данных "zabbix" как пользователь "postgres".
zabbix=# \! mkdir /home/postgres/backup/
zabbix=# copy users to '/home/postgres/backup/zabbix.users.text' (format text);
COPY 3
zabbix=# copy users to '/home/postgres/backup/zabbix.users.csv' (format csv);
COPY 3
zabbix=# copy users to '/home/postgres/backup/zabbix.users.bin' (format binary);
COPY 3
Список имён всех таблиц БД zabbixselect table_name from information_schema.tables
where table_catalog='zabbix' and table_schema='public'
order by 1;
Выгрузка всех таблиц БД\с zabbix
select 'copy '||schemaname||'.'||tablename||' to ''/tmp/'||schemaname||'_'||tablename||'.txt''' from pg_tables where schemaname = 'public' \gexec
pg_dump — выгрузить базу данных PostgreSQL в виде скрипта или в архивном форматеpostgres@singularity:~$ pg_dump zabbix > zabbix.sql
postgres@singularity:~$ ls -l
итого 54324
drwxrwxr-x 2 postgres postgres 4096 апр 14 05:24 backup
-rw-rw-r-- 1 postgres postgres 55616031 апр 14 06:25 zabbix.sql
Восстановление в новую БДpostgres@singularity:~$ psql
psql (14.2 (Ubuntu 14.2-1.pgdg20.04+1+b1))
postgres=# create database newdb;CREATE DATABASE
postgres@singularity:~$ psql -d newdb -f zabbix.sql
Выгрузка базы данных в специальном формате:postgres@singularity:~$ pg_dump -Fc zabbix > zabbix.dump
postgres@singularity:~$ ls -l
итого 68404
drwxrwxr-x 2 postgres postgres 4096 апр 14 05:24 backup
-rw-rw-r-- 1 postgres postgres 14415122 апр 14 06:34 zabbix.dump
-rw-rw-r-- 1 postgres postgres 55616031 апр 14 06:25 zabbix.sql
Выгрузка базы данных в формате каталога:postgres@singularity:~$ pg_dump -Fd zabbix -f dumpdir
postgres@singularity:~$ ls -l
итого 68408
drwxrwxr-x 2 postgres postgres 4096 апр 14 05:24 backup
drwx------ 2 postgres postgres 4096 апр 14 06:44 dumpdir
-rw-rw-r-- 1 postgres postgres 14415122 апр 14 06:34 zabbix.dump
-rw-rw-r-- 1 postgres postgres 55616031 апр 14 06:25 zabbix.sql
postgres@singularity:~$ du dumpdir
14708 dumpdir
Копия кластера БД
pg_dumpall — выгрузить кластер баз данных PostgreSQL в формате скриптаpostgres@singularity:~$ pg_dumpall -f main
postgres@singularity:~$ ls -l
drwxrwxr-x 2 postgres postgres 4096 апр 14 05:24 backup
drwx------ 2 postgres postgres 4096 апр 14 06:44 dumpdir
-rw-rw-r-- 1 postgres postgres 112068105 апр 14 06:55 main
Настройка репликации main, beta (вариант 1, оба кластера работают на одном хосте)
Действия на кластере main
sudo nano /etc/postgresql/14/main/postgresql.conf
listen_addresses = '<IP-адрес сервера PostgreSQL с кластером main>'
sudo -u postgres psql
CREATE ROLE replicator WITH REPLICATION PASSWORD 'пароль replicator' LOGIN;
sudo nano /etc/postgresql/14/main/pg_hba.conf
host replication replicator 127.0.0.1/32 scram-sha-256
sudo systemctl restart postgresql@14-main
SHOW data_directory;
Задать параметры в /etc/postgresql/14/main/postgresql.conf
sudo nano /etc/postgresql/14/main/postgresql.conf
wal_level = replica
wal_log_hints = on
archive_mode = on
archive_command = 'cp -i %p /var/lib/postgresql/archive/main/%f'
max_wal_senders = 100
hot_standby = on
Перезапустить кластер main
pg_ctlcluster stop 14 main
pg_ctlcluster start 14 main
sudo -u postgres pg_basebackup -h '127.0.0.1' -p 5432 -U replicator -D /var/lib/postgresql/14/beta/ -Fp -Xs -R
Здесь:
--tablespace-mapping
). Это формат по умолчанию.Когда используется формат tar, файлы журнала предзаписи сохраняются в отдельном архиве с именем pg_wal.tar
.
Это значение по умолчанию.
standby.signal
и добавить параметры конфигурации в файл postgresql.auto.conf
в целевом каталоге (или внутри архива, если используется формат tar). Это упрощает настройку ведомого сервера при восстановлении этой копии.
В файл postgresql.auto.conf
будут записаны параметры соединения и слот репликации, если его использует pg_basebackup, так что впоследствии при потоковой репликации будут использоваться те же параметры.
sudo -u postgres psql
SELECT client_addr, state FROM pg_stat_replication;
Output
client_addr | state
------------------+-----------
<<IP-адрес сервера PostgreSQL с кластером beta> | streaming
SELECT * FROM pg_stat_replication \gx
postgres@singularity:~$ psql
psql (14.3 (Ubuntu 14.3-1.pgdg20.04+1))
Введите "help", чтобы получить справку.
postgres=# SELECT * FROM pg_stat_replication \gx
-[ RECORD 1 ]----+------------------------------
pid | 300335
usesysid | 40170
usename | replicator
application_name | 14/beta
client_addr | 127.0.0.1
client_hostname |
client_port | 41576
backend_start | 2022-06-08 17:37:37.66505+00
backend_xmin |
state | streaming
sent_lsn | 16/A7EE29B0
write_lsn | 16/A7EE29B0
flush_lsn | 16/A7EE29B0
replay_lsn | 16/A7EE29B0
write_lag | 00:00:00.000256
flush_lag | 00:00:00.000545
replay_lag | 00:00:00.000592
sync_priority | 0
sync_state | async
reply_time | 2022-06-08 17:53:19.371493+00
Действия на кластере beta
sudo -u postgres pg_dropcluster 14 beta
sudo -u postgres rm -r /var/lib/postgresql/14/beta
sudo -u postgres mkdir /var/lib/postgresql/14/beta
sudo -u postgres chmod 700 /var/lib/postgresql/14/beta
su -
chown postgres:postgres /var/lib/postgresql/14/beta/*
postgres@singularity:~$ mkdir /etc/postgresql/14/beta
postgres@singularity:~$ cp /etc/postgresql/14/main/postgresql.conf /etc/postgresql/14/beta/postgresql.conf
postgres@singularity:~$ mkdir /var/lib/postgresql/archive/beta/
postgres@singularity:~$ mkdir /etc/postgresql/14/beta/conf.d
nano /etc/postgresql/14/beta/postgresql.conf
cp /etc/postgresql/14/main/pg_hba.conf /etc/postgresql/14/beta/pg_hba.conf
cp /etc/postgresql/14/main/pg_ident.conf /etc/postgresql/14/beta/pg_ident.conf
Задать параметры в /etc/postgresql/14/beta/postgresql.conf
wal_level = replica
wal_log_hints = on
archive_mode = on
archive_command = 'cp -i %p /var/lib/postgresql/archive/beta/%f'
max_wal_senders = 100
hot_standby = on
sudo -u postgres pg_createcluster 14 beta
sudo systemctl restart postgresql@14-beta
Курсы для разработчика серверной части
Источники
DEV1 Разработка серверной части приложений PostgreSQL 12. Базовый курс (postgrespro.ru)
Репозитории GitHub
MVCC - Multiversion Concurrency Control, многоверсионное управление конкурентным доступом
Источники:
Заметки к книге Рогов Е. В. Р59 PostgreSQL 15 изнутри. — М.: ДМК Пресс, 2023. — 662 с. ISBN 978-5-93700-178-8
В книге рассматривается внутреннее устройство СУБД PostgreSQL: детали реализации многоверсионности и изоляции на основе снимков данных, включая процедуру очистки неактуальных версий строк; буферный кеш и журнал предзаписи; использование блокировок различных уровней; планирование и выполнение SQL-запросов; принципы расширяемости и особенности имеющихся индексных методов доступа. Большое внимание уделяется возможностям, предоставляемым для самостоятельного изучения механизмов функционирования PostgreSQL. В настоящем издании учтены замечания читателей и исправлены опечатки, а также отражены изменения, произошедшие в версии PostgreSQL 15. Сайт книги: https://postgrespro.ru/education/books/internals. Для администраторов и программистов.
Глава 11. Режимы журнала
wal_sync_method
для Postgres Pro (исходник).Примеры выполнения.
1. student.lan (Oracle VM, xubuntu, диск ВМ на внешнем диске)
postgres@student:/etc/postgresql/12/main$ /usr/lib/postgresql/12/bin/pg_test_fsync
5 seconds per test
O_DIRECT supported on this platform for open_datasync and open_sync.
Compare file sync methods using one 8kB write:
(in wal_sync_method preference order, except fdatasync is Linux's default)
open_datasync 359,407 ops/sec 2782 usecs/op
fdatasync 372,340 ops/sec 2686 usecs/op
fsync 143,684 ops/sec 6960 usecs/op
fsync_writethrough n/a
open_sync 145,531 ops/sec 6871 usecs/op
Compare file sync methods using two 8kB writes:
(in wal_sync_method preference order, except fdatasync is Linux's default)
open_datasync 177,764 ops/sec 5625 usecs/op
fdatasync 321,705 ops/sec 3108 usecs/op
fsync 121,483 ops/sec 8232 usecs/op
fsync_writethrough n/a
open_sync 71,018 ops/sec 14081 usecs/op
Compare open_sync with different write sizes:
(This is designed to compare the cost of writing 16kB in different write
open_sync sizes.)
1 * 16kB open_sync write 125,003 ops/sec 8000 usecs/op
2 * 8kB open_sync writes 65,584 ops/sec 15248 usecs/op
4 * 4kB open_sync writes 32,748 ops/sec 30536 usecs/op
8 * 2kB open_sync writes 15,574 ops/sec 64211 usecs/op
16 * 1kB open_sync writes 7,363 ops/sec 135807 usecs/op
Test if fsync on non-write file descriptor is honored: (If the times are similar, fsync() can sync data written on a different descriptor.)
write, fsync, close 121,703 ops/sec 8217 usecs/op
write, close, fsync 129,187 ops/sec 7741 usecs/op
Non-sync'ed 8kB writes:
write 153025,891 ops/sec 7 usecs/op
2. VPS singularity.lytkins.ru (BeGet, Ubuntu 22.04.1).
postgres@singularity:~$ /usr/lib/postgresql/15/bin/pg_test_fsync
5 seconds per test
O_DIRECT supported on this platform for open_datasync and open_sync.
Compare file sync methods using one 8kB write:
(in wal_sync_method preference order, except fdatasync is Linux's default)
open_datasync 9174.853 ops/sec 109 usecs/op
fdatasync 8987.786 ops/sec 111 usecs/op
fsync 8339.495 ops/sec 120 usecs/op
fsync_writethrough n/a
open_sync 8348.133 ops/sec 120 usecs/op
Compare file sync methods using two 8kB writes:
(in wal_sync_method preference order, except fdatasync is Linux's default)
open_datasync 4622.513 ops/sec 216 usecs/op
fdatasync 8352.103 ops/sec 120 usecs/op
fsync 7935.690 ops/sec 126 usecs/op
fsync_writethrough n/a
open_sync 4478.802 ops/sec 223 usecs/op
Compare open_sync with different write sizes:
(This is designed to compare the cost of writing 16kB in different write
open_sync sizes.)
1 * 16kB open_sync write 8280.727 ops/sec 121 usecs/op
2 * 8kB open_sync writes 4340.611 ops/sec 230 usecs/op
4 * 4kB open_sync writes 2191.251 ops/sec 456 usecs/op
8 * 2kB open_sync writes 899.303 ops/sec 1112 usecs/op
16 * 1kB open_sync writes 487.776 ops/sec 2050 usecs/op
Test if fsync on non-write file descriptor is honored:
(If the times are similar, fsync() can sync data written on a different descriptor.)
write, fsync, close 8202.338 ops/sec 122 usecs/op
write, close, fsync 7979.933 ops/sec 125 usecs/op
Non-sync'ed 8kB writes:
write 1428417.859 ops/sec 1 usecs/op
14.09.2023 Вышла версия PostgreSQL 16
PostgreSQL 16 Installation on Ubuntu 22.04
Ubuntu Desktop 23.04 release roundup
Каждый новый выпуск Ubuntu Desktop поставляется с новыми функциями и функциями, позволяющими разработчикам, геймерам, создателям и мастерам. Ubuntu 23.04 не исключение. Мы, как всегда, сосредоточились на улучшении качества, производительности и удовольствия для всех наших пользователей, будь то более элегантная обработка обновлений для моментальных снимков, улучшенный пользовательский интерфейс для установки и быстрых настроек или более доступный игровой процесс. В этом выпуске также заложены некоторые стратегические основы корпоративной безопасности, поддержки и интеграции. Это включает в себя новый подход к настройке и развертыванию образа рабочего стола, а также расширенные решения для управления идентификацией. В преддверии нашего следующего выпуска LTS, Ubuntu 24.04, вы увидите, как эти истории развиваются и расширяются с течением времени, и мы рады, что вы присоединились к нам в этом путешествии! А пока давайте посмотрим, что может предложить Лунный Омар.
Новый установщик Ubuntu Desktop, безусловно, является звездой шоу в Ubuntu 23.04, обеспечивая оптимизированный и более интуитивно понятный пользовательский интерфейс, встроенный во Flutter. Мы добавили более подробные отзывы о сценариях двойной загрузки и новое слайд-шоу, которое лучше отражает нашу миссию. Наше руководство по установке Ubuntu Desktop также претерпело изменения, чтобы отразить последние изменения! Посмотрите видео ниже для сравнения старого и нового пользовательского интерфейса.
Однако самые большие изменения происходят за кулисами. Новый установщик теперь использует ту же кодовую базу Subiquity, что и Ubuntu Server. Это обеспечивает более согласованную работу между версиями и поддержку сценариев автоматической установки и облачной инициализации, которые позволяют настраивать образ при масштабном развертывании Ubuntu Desktop. Subiquity уже используется для настройки образов Ubuntu Desktop 22.04 LTS, начиная с базового ISO-образа Ubuntu Server. Это изменение значительно упростит этот сценарий развертывания. Некоторые функции, доступные в устаревшем установщике, еще не реализованы в Subiquity, а поддержка таких функций, как управляемая установка ZFS, будет включена в Ubuntu 23.10. Тем временем пользователи, которые хотят воспользоваться этой функцией, могут загрузить альтернативный ISO-образ Ubuntu Desktop 23.04, в котором используется устаревший установщик.
После завершения установки пользователи получат ряд улучшений качества жизни в интерфейсе рабочего стола. Последний GNOME занимает центральное место, но мы также воспользовались возможностью обновить шрифт Ubuntu и устранить наиболее часто запрашиваемые изменения в поведении моментального обновления. Геймеры также выиграют от улучшенной готовой настройки с новой привязкой Steam, которая теперь стала стабильной.
Ubuntu Desktop 23.04 поставляется с последней версией GNOME, в которой реализован ряд улучшений удобства использования. Основные моменты включают расширенное меню быстрых настроек с поддержкой переключения темного режима и подробных подменю Bluetooth, а также добавление миниатюр в средство выбора файлов GTK.
Одно из наших самых больших улучшений взаимодействия с пользователем заключается в том, как мы обрабатываем моментальные обновления для настольных приложений. Раньше пользователи были предупреждены о доступном обновлении через уведомление, но не могли применить его, не заходя в командную строку, Ubuntu Software или не дожидаясь автоматического обновления. Благодаря последнему обновлению snapd ожидающие обновления теперь загружаются в фоновом режиме и сразу же применяются при закрытии приложения. Обновления также можно приостановить на любое время с помощью новой функции фиксации приостановки. Вы можете прочитать больше об этой работе в последнем обновлении Firefox.
Привязка Steam переходит на стабильную версию Более 150 000 геймеров загрузили снап Steam в раннем доступе, который после тщательного тестирования теперь переведен в стабильный канал. Snap Steam объединяет ключевые зависимости для запуска как новых, так и старых игр без необходимости включать и управлять дополнительными PPA. Сюда входят 32-разрядные библиотеки и передовые драйверы Mesa для установки последних обновлений без ущерба для стабильности вашей системы. Мы продолжаем добавлять новые функции и улучшения и будем рады вашим отзывам.
Ubuntu Desktop стремится предоставить всем пользователям опыт разработки корпоративного уровня, чтобы те, кто изучает Ubuntu, могли применять эти навыки непосредственно на рабочем месте. Но предоставление разработчикам рабочего стола Ubuntu может создать проблемы для ИТ-администраторов, когда дело доходит до их интеграции с существующей экосистемой на базе Windows. Обеспечение того, чтобы Ubuntu поддерживала существующие инструменты управления устройствами и идентификацией, снижает эти накладные расходы и означает, что администраторы могут управлять парками смешанных ОС, используя одни и те же рабочие процессы.
Ubuntu Desktop 23.04 — это первый и единственный дистрибутив Linux, обеспечивающий встроенную аутентификацию пользователей с помощью Azure Active Directory (Azure AD), что позволяет пользователям планов Microsoft 365 (M365) Enterprise аутентифицировать рабочие столы Ubuntu с теми же учетными данными, которые они используют для M365 или Azure. ИТ-администраторам рекомендуется оценить функцию «aad-auth» в этом выпуске и оставить отзыв о ее переносе на текущую версию Ubuntu 22.04 LTS, которая появится позже в этом году. Чтобы узнать больше о нашей работе по интеграции проверки подлинности Azure AD с Ubuntu, посетите наш блог или посмотрите видео ниже.
Интеграция с Active Directory (AD) — одна из самых популярных корпоративных функций Ubuntu Desktop, а Ubuntu Desktop 22.04 LTS вывела интеграцию Active Directory на новый уровень с помощью ADsys, клиента, который обеспечивает полную поддержку групповой политики, повышение привилегий и удаленное выполнение сценариев. В Ubuntu 23.04 мы добавили поддержку корпоративного прокси-сервера, ограничения приложений и общих сетевых ресурсов, чтобы еще больше расширить его функциональность, прежде чем перенести их в Ubuntu 22.04 LTS и Ubuntu 20.04 LTS позже в этом году.
Microsoft Intune — это самое популярное облачное решение для унифицированного управления конечными точками (UEM) на предприятии, насчитывающее более 135 миллионов управляемых устройств по состоянию на 2021 год. комплексный кроссплатформенный инструмент для выполнения всех видов действий по управлению, от управления жизненным циклом установленных приложений до условного доступа с нулевым доверием. В конце прошлого года Microsoft объявила о поддержке Intune для Ubuntu. Массимилиано Гори подготовил новый блог и обучающее видео для тех, кто хочет начать мониторинг соответствия требованиям.
Шесть месяцев назад Microsoft и Canonical объявили о поддержке systemd в подсистеме Windows для Linux (WSL), вскоре после чего последовало обновление способа распространения WSL среди разработчиков Windows, что обеспечило паритет функций для разработчиков Windows 10 и Windows 11. Systemd — неотъемлемая часть как рабочих процессов разработчиков, так и опыта Ubuntu, что позволяет использовать как службы systemd, так и snapd. Наша миссия для Ubuntu на WSL — предоставить разработчикам Linux возможности, максимально приближенные к родным, поэтому мы рады сообщить, что в рамках этого цикла выпуска мы включили systemd в качестве параметра по умолчанию как для Ubuntu 22.04 LTS, так и основное приложение Ubuntu, доступное в магазине Microsoft. Более ранние выпуски LTS последуют их примеру в ближайшие несколько недель. Чтобы узнать больше новостей, руководств и видеороликов по Ubuntu WSL, посетите: ubuntu.com/wsl
Вкусы — неотъемлемая часть сообщества Ubuntu, которые позволяют пользователям использовать Ubuntu так, как им нравится. Разнообразие наших вкусов является отражением невероятных сообществ, которые расширяют их возможности, и Ubuntu 23.04 добавляет еще два в наш расширяющийся список: Ubuntu Cinnamon и Edubuntu.
Ubuntu Cinnamon сочетает в себе флагманский рабочий стол Cinnamon из проекта Linux Mint со стабильной и мощной базой Ubuntu. Пользователи, которым нравится настраивать свой рабочий стол, будут рады найти широкий выбор тем и апплетов для рабочего стола, метко называемых специями, для всех их потребностей в настройке рабочего пространства. Узнайте больше об этом аромате для первокурсников на ubuntucinnamon.org. Следите за Ubuntu Cinnamon в Twitter и Mastodon.
Когда-то Edubuntu была официальной версией Ubuntu, которая стремилась принести в класс свободу рабочего стола Linux и обширную библиотеку образовательного программного обеспечения с открытым исходным кодом. Почти десятилетие спустя Эми и Эрих Эйхмайер возродили Edubuntu, чтобы обеспечить быстрый, стабильный, безопасный и конфиденциальный вариант для школ, университетов и других учебных заведений. Следите за Edubuntu в Twitter и Mastodon. Вы можете прочитать больше о том, что делает эти спины уникальными, в блоге Аарона, и следите за некоторыми эпизодами Ubuntu on Air в ближайшем будущем!
Чтобы узнать больше о некоторых новых функциях, доступных в этом выпуске, присоединяйтесь к нашему предстоящему круглому столу между инженерами и командами по управлению продуктами, стоящими за Ubuntu Desktop, который состоится 4 мая. Как всегда, вы можете присоединиться к обсуждению в Ubuntu Discourse или Ubuntu Twitter. А чтобы быть в курсе последних новостей, блогов и руководств, связанных с Ubuntu Desktop, подпишитесь на нашу рассылку сбоку страницы. Спасибо за чтение и спасибо за то, что являетесь частью сообщества Ubuntu!
Сервер LunarLobster (Aeza, ЦОД Хельсинки) 2 vCPU, 4 GB vRAM, 60 GB диск - 1,8 ₽ / Час.
The desktop image allows you to try Ubuntu without changing your computer at all, and at your option to install it permanently later. This type of image is what most people will want to use. You will need at least 1024MiB of RAM to install from this image.
Choose this if you have a computer based on the AMD64 or EM64T architecture (e.g., Athlon64, Opteron, EM64T Xeon, Core 2). Choose this if you are at all unsure.
The server install image allows you to install Ubuntu permanently on a computer for use as a server. It will not install a graphical user interface.
Choose this if you have a computer based on the AMD64 or EM64T architecture (e.g., Athlon64, Opteron, EM64T Xeon, Core 2). Choose this if you are at all unsure.
How to Set the Default Gateway on Ubuntu
igorlytkin@lunarlobster:~$ uname -a
Linux lunarlobster 6.2.0-20-generic #20-Ubuntu SMP PREEMPT_DYNAMIC Thu Apr 6 07:48:48 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
igorlytkin@lunarlobster:~$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
loop0 7:0 0 73M 1 loop /snap/core22/607
loop1 7:1 0 4K 1 loop /snap/bare/5
loop2 7:2 0 12.3M 1 loop /snap/snap-store/959
loop3 7:3 0 91.7M 1 loop /snap/gtk-common-themes/1535
loop4 7:4 0 53.2M 1 loop /snap/snapd/18933
loop5 7:5 0 452K 1 loop /snap/snapd-desktop-integration/83
loop6 7:6 0 460.6M 1 loop /snap/gnome-42-2204/87
loop7 7:7 0 242.2M 1 loop /snap/firefox/2517
vda 252:0 0 30G 0 disk
├─vda1 252:1 0 1M 0 part
├─vda2 252:2 0 2G 0 part /boot
└─vda3 252:3 0 28G 0 part
└─ubuntu--vg-ubuntu--lv 253:0 0 28G 0 lvm /var/snap/firefox/common/host-hunspell
Hard skills (англ. «твердые навыки») — это набор профессиональных навыков и умений, связанных с технической стороной деятельности. Такие навыки можно продемонстрировать, они относятся к обязательным требованиям при приеме на работу, их указывают в должностных инструкциях.
Я изучаю в настоящий момент (в порядке убывания приоритетов)
Информа́тика (фр. informatique; англ. computer science) — наука о методах и процессах сбора, хранения, обработки, передачи, анализа и оценки информации с применением компьютерных технологий, обеспечивающих возможность её использования для принятия решений[1].
Информатика включает дисциплины, относящиеся к обработке информации в вычислительных машинах и вычислительных сетях: как абстрактные, вроде анализа алгоритмов, так и конкретные, например, разработка языков программирования и протоколов передачи данных.
Темами исследований в информатике являются вопросы: что можно, а что нельзя реализовать в программах и базах данных (теория вычислимости и искусственный интеллект), каким образом можно решать специфические вычислительные и информационные задачи с максимальной эффективностью (теория сложности вычислений), в каком виде следует хранить и восстанавливать информацию специфического вида (структуры и базы данных), как программы и люди должны взаимодействовать друг с другом (пользовательский интерфейс и языки программирования и представление знаний) и т. п.
Литература
Алгоритмы — это сердце и душа computer science. Без них не обойтись, они есть везде — от сетевой маршрутизации и расчетов по геномике до криптографии и машинного обучения. «Совершенный алгоритм» превратит вас в настоящего профи, который будет ставить задачи и мастерски их решать как в жизни, так и на собеседовании при приеме на работу в любую IT-компанию. В этой книге Тим Рафгарден — гуру алгоритмов — расскажет об асимптотическом анализе, нотации большое-О, алгоритмах «разделяй и властвуй», рандомизации, сортировки и отбора. Книга «Совершенный алгоритм» адресована тем, у кого уже есть опыт программирования. Вы перейдете на новый уровень, чтобы увидеть общую картину, разобраться в низкоуровневых концепциях и математических нюансах.
Познакомиться с дополнительными материалами и видеороликами автора (на английском языке) можно на сайте www.algorithmsilluminated.org.
KARATSUBA
Вход: два n-значных положительных целых числа, x и y.
Выход: произведение x × y.
Допущение: n является степенью числа 2.
if n = 1 then // базовый случай
вычислить x × y за один шаг и выдать результат
else // рекурсивный случай
a, b := первая и вторая половины x
c, d := первая и вторая половины y
вычислить p := a + b и q := c + d, используя арифметическое сложение,
рекурсивно вычислить ac := a × c, bd := b · d и pq := p × q
вычислить adbc := pq – ac − bd, используя арифметическое сложение,
вычислить 10^n × ac + 10^n/2 × adbc + bd, используя арифметическое сложение, и выдать результат.
Методология разработки алгоритмов «разделяй и властвуй» представляет собой общий подход к решению задач, который находит приложение в различных областях. Ее основная идея состоит в том, чтобы разбить вашу задачу на более мелкие подзадачи, решить подзадачи рекурсивно и, наконец, объединить решения в итоговое решение исходной задачи.
MERGESORT
Вход: массив A из n разных целых чисел.
Выход: массив с теми же самыми целыми числами, отсортированными от наименьшего до наибольшего.
// базовые случаи проигнорированы
C := рекурсивно отсортировать первую половину A
D := рекурсивно отсортировать вторую половину A
вернуть Merge (C, D)
MERGE
Вход: отсортированные массивы C и D (длиной n/2 каждый).
Выход: отсортированный массив B (длиной n).
Упрощающее допущение: n — четное.
1 i := 1
2 j := 1
3 for k := 1 to n do
4 if C[i] < D[j] then
5 B[k] := C[i] // заполнить выходной массив
6 i := i + 1 // прирастить i
7 else // D[j] < C[i]
8 B[k] := D[j]
9 j := j + 1
Оценка времени исполнения алгоритма MergeSort
Для каждого входного массива длиной n ≥ 1 алгоритм MergeSort выполняет не более 6n log2 n + 6n операций, где log2 обозначает логарифм по основанию 2.
Асимптотические обозначения (Asymptotic Notation). Суть - устранить постоянные коэффициенты и члены низших порядков.
T(n) - предел худшего времени исполнения алгоритма как функцию длины n входных данных
Определение O(n)
T(n) = О (f(n)), тогда и только тогда, когда T (n) в конечном итоге ограничена сверху постоянной, кратной функции f(n)
T(n) = О (f(n)), тогда и только тогда, когда существуют положительные константы c и n0, такие что T(n) ≤ с × f(n) для всех n ≥ n0
Алгоритм QuickSort
QUICKSORT (ВЫСОКОУРОВНЕВОЕ ОПИСАНИЕ)
Вход: массив A из n разных целых чисел.
Выход: элементы массива A отсортированы от наименьшего до наибольшего.
if n ≤ 1 then // базовый случай – уже отсортирован
return
выбрать опорный элемент p // предстоит реализовать
разделить A вокруг p // предстоит реализовать
рекурсивно отсортировать первую часть A
рекурсивно отсортировать вторую часть A
QuickSort (High-Level Description)
Input: array A of n distinct integers.
Postcondition: elements of A are sorted from smallest to largest.
if n ≤ 1 then // base case-already sorted
return
choose a pivot element p // to-be-implemented
partition A around p // to-be-implemented
recursively sort first part of A
recursively sort second part of A
QUICKSORT
Вход: массив A из n разных целых чисел, левая и правая конечные точки, ℓ, r ∈ {1, 2, …, n}.
Постусловие: элементы подмассива A[ℓ], A[ℓ + 1], …, A[r] отсортированы от наименьшего до наибольшего.
if ℓ ≥ r then // 0- или 1-элементный подмассив
return
i := ChoosePivot(A, ℓ, r) // предстоит реализовать
обменять A[ℓ] с A[i] // сделать опорный первым
j := Partition(A, ℓ, r) // j = новая опорная позиция
QuickSort(A, ℓ, j − 1) // рекурсивно вызвать с первой частью
QuickSort(A, j + 1, r) // рекурсивно вызвать со второй частью
Прочитанные книги
Книги в процессе чтения
Подборка книг по асинхронному программированию
1. Мэтью Фаулер - Asyncio и конкурентное программирование на Python / пер. с англ. А. А. Слинкина. – М.: ДМК Пресс, 2022. – 398 с.: ил. ISBN 978-5-93700-166-5
Эта книга адресована разработчикам средней и высокой квалификации, которые хотят использовать средства конкурентности в Python для повышения производительности, пропускной способности и отзывчивости приложений.
Из начальных глав читатель узнает, как работает asyncio, как написать первое реальное приложение и как использовать базовые функции asyncio API для конкурентного выполнения сопрограмм. Затем речь пойдет о практическом применении конкурентности – например, о том, как отправить несколько конкурентных вебзапросов или запросов к базе данных, как управлять потоками и процессами, строить веб-приложения и решать вопросы синхронизации. Рассматривается широкий круг применений от API на основе веба до командных приложений, так что книга будет полезной в решении многих реальных задач.
© Manning Publications, 2022
© Перевод, оформление, издание, ДМК Пресс, 2022
Подборка книг по технологии разработки программного обеспечения
Журналы и газеты
Материалы конференций
Материалы Wikipedia
Материалы АлтГТУ
Учебно-методическое пособие посвящено проектированию и реализации многопоточных и сетевых приложений. В пособии рассматриваются способы реализации параллельных алгоритмов с использованием нативных потоков операционной системы, средств OpenMP; проектирование распределенных программных систем с использованием языка UML и реализацию их на основе примитивов синхронизации. Рассматриваются объекты ядра операционной системы и внутренняя организация потоков и процессов.
Кроме этого, изучаются сетевые соединения на основе сокетов и способы реализации распределённых систем на их основе. Рассматриваются также программирование для суперкомпьютеров с использованием библиотеки MPI и для графических процессоров на основе OpenCL. Пособие отвечает новым стандартам высшего образования по направлениям подготовки 09.04.04 «Программная инженерия (уровень магистратуры)» и 09.04.01«Информатика и вычислительная техника (уровень магистратуры)». (с) АлтГТУ, 2015