Утилиты от Etersoft — упрощение с помощью обобщения и не только (Виталий Липатов, OSSDEVCONF-2015)

Материал из 0x1.tv

Версия от 13:22, 22 марта 2024; StasFomin (обсуждение | вклад)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)

Аннотация

Докладчик
Виталий Липатов.jpg
Виталий Липатов

По разным причинам в арсенале компании Etersoft оказался набор инструментов, разработанных внутри: менеджер пакетов epm, архиватор erc, инструмент для ведения параллельного upstream — gitum, средство создания резервных и архивных копий eterbackup, оболочка над git — giter. В докладе будет рассказано о каждом из этих инструментов, причинах их появления и пользе от их использования.

Видео


on youtube

Посмотрели доклад? Понравился? Напишите комментарий! Не согласны? Тем более напишите.

-->

Слайды

Утилиты от Etersoft — упрощение с помощью обобщения и не только (Виталий Липатов, OSSDEVCONF-2015).pdf Утилиты от Etersoft — упрощение с помощью обобщения и не только (Виталий Липатов, OSSDEVCONF-2015).pdf Утилиты от Etersoft — упрощение с помощью обобщения и не только (Виталий Липатов, OSSDEVCONF-2015).pdf Утилиты от Etersoft — упрощение с помощью обобщения и не только (Виталий Липатов, OSSDEVCONF-2015).pdf Утилиты от Etersoft — упрощение с помощью обобщения и не только (Виталий Липатов, OSSDEVCONF-2015).pdf Утилиты от Etersoft — упрощение с помощью обобщения и не только (Виталий Липатов, OSSDEVCONF-2015).pdf Утилиты от Etersoft — упрощение с помощью обобщения и не только (Виталий Липатов, OSSDEVCONF-2015).pdf Утилиты от Etersoft — упрощение с помощью обобщения и не только (Виталий Липатов, OSSDEVCONF-2015).pdf Утилиты от Etersoft — упрощение с помощью обобщения и не только (Виталий Липатов, OSSDEVCONF-2015).pdf Утилиты от Etersoft — упрощение с помощью обобщения и не только (Виталий Липатов, OSSDEVCONF-2015).pdf Утилиты от Etersoft — упрощение с помощью обобщения и не только (Виталий Липатов, OSSDEVCONF-2015).pdf Утилиты от Etersoft — упрощение с помощью обобщения и не только (Виталий Липатов, OSSDEVCONF-2015).pdf Утилиты от Etersoft — упрощение с помощью обобщения и не только (Виталий Липатов, OSSDEVCONF-2015).pdf Утилиты от Etersoft — упрощение с помощью обобщения и не только (Виталий Липатов, OSSDEVCONF-2015).pdf Утилиты от Etersoft — упрощение с помощью обобщения и не только (Виталий Липатов, OSSDEVCONF-2015).pdf Утилиты от Etersoft — упрощение с помощью обобщения и не только (Виталий Липатов, OSSDEVCONF-2015).pdf

Расширенные тезисы

Количество инструментов для решения одной и той же задачи, а также скорость их изменения или смены не может не поражать. Для решения задачи сначала нужно заняться поиском, потом из многого выбрать подходящий или работающий инструмент, потом научиться им пользоваться. А ведь для этого нужно знать, что искать, а если часто пользуешься — запоминать, как использовать. А речь может идти о десятках, сотнях, а порой и тысячах программ.

При этом создатели инструментов обычно забывают о Unix-way: не используют совокупность инструментов для решения сложной задачи, а пишут свой велосипед, решающий все задачи сразу. И у них даже есть на это оправдания.

Возьмём к примеру простую задачу разархивирования файла. Да, расширение файла обычно подсказывает, какую программу задействовать. Её всего лишь надо установить, потом почитать справку и узнать, с каким ключом запускается разархивация. Можно попробовать пользоваться 7-zip, который поставляется с плагинами, поддерживающими некоторые форматы. А можно использовать erc. Вне зависимости от формата архива, создание и разархивирование происходит всегда одинаково, одними и теми же командами. Причём теми, к которым вы привыкли. Причём достигается это простым способом:

$ erc -h
erc — universal archive manager
Usage: erc [options] [<command>] [params]…
Commands:
  a|-a|create|pack      create archive
  e|x|-e|-x|u|-u|extract|unpack  extract files from archive
  l|-l|list             list archive contents
  t|-t|test|check       test for archive integrity

То есть программа поддерживает различные варианты параметров, один из которых точно используется в вашем привычном архиваторе.

На самом деле erc не самостоятельная программа, а оболочка над программой patool, которую разрабатывает Bastian Kleineidam, привносящая универсальную обработку параметров.

Такая же история с установкой пакетов в систему. Идея иметь один инструмент для управления пакетами на любой платформе пришла не сразу, но настойчиво стучалась в дверь. Когда ей открыли, раздалось множество голосов: зачем столько систем, нужно использовать одну, и не нужно будет изобретать ещё один пакетный менеджер; в MacOS нет пакетов, поэтому там не нужен пакетный менеджер; опять изобрели велосипед. Всё это говорило о неравнодушии к поднятой проблеме. Зато теперь можно установить пакет командой epm install или epmi (как вам удобнее), или определить принадлежность файла в системе к пакету:

$ epmqf vim
Note: vim is placed as /usr/bin/vim
 $ rpm -qf /usr/bin/vim
 `предупреждение: файл` /usr/bin/vim `не принадлежит ни одному из пакетов`
Note: /usr/bin/vim is link to /usr/bin/vim-neXtaw
 $ rpm -qf /usr/bin/vim-neXtaw
 vim-X11-neXtaw-7.3.353-alt4.1

не задумываясь, какую команду нужно применять, и какой сейчас в этой системе моден пакетный менеджер.

Последняя наша разработка на эту тему — набор утилит eterbackup, служащих для создания и обслуживания резервных и архивных копий. Там удалось применить несколько интересных наработок: начиная от журнального инкрементального дедублицирующего архиватора zpaq, создаваемого Matt Mahoney, до прореживания старых архивных копий с логарифмическим интервалом. Так же удалось найти компромисс между простотой доступа к архиву и количеством файлов в одном архиве для таких данных, как почтовые ящики или домашние каталоги: для каждого каталога, начиная с определённого уровня вложенности ведётся отдельный инкрементальный архив.

Основная суть все этих разработок, примитивных по сути и написанных на Shell — фиксирование накопленного опыта. При этом это намного больше, чем «однострочник», решающий какую-либо задачу.

Применённый подход обвязок на Shell вокруг существующих команд также сглаживает различия между версиями и позволяет при необходимости компенсировать ошибки в используемых командах.


Примечания и отзывы



Plays:30   Comments:0