Утилиты от Etersoft — упрощение с помощью обобщения и не только (Виталий Липатов, OSSDEVCONF-2015) — различия между версиями
Материал из 0x1.tv
StasFomin (обсуждение | вклад) |
StasFomin (обсуждение | вклад) |
||
<!-- <blockquote>[©]</blockquote> --> * http://wiki.etersoft.ru/Utils {{fblink|1662247740694907}} {{vklink|77}} <references/> [[Category:OSSDEVCONF-2015]] [[Category:Open-source projects]] <!-- topub --> {{stats|disqus_comments=0|refresh_time=2020-01-09T16:24:3122T20:10:58.671901868188|vimeo_comments=0|vimeo_plays=29|youtube_plays=0}} |
Версия 17:11, 22 января 2020
Аннотация
- Докладчик
- Виталий Липатов
По разным причинам в арсенале компании Etersoft оказался набор инструментов, разработанных внутри: менеджер пакетов epm, архиватор erc, инструмент для ведения параллельного upstream — gitum, средство создания резервных и архивных копий eterbackup, оболочка над git — giter. В докладе будет рассказано о каждом из этих инструментов, причинах их появления и пользе от их использования.
Видео
Слайды
Расширенные тезисы
Количество инструментов для решения одной и той же задачи, а также скорость их изменения или смены не может не поражать. Для решения задачи сначала нужно заняться поиском, потом из многого выбрать подходящий или работающий инструмент, потом научиться им пользоваться. А ведь для этого нужно знать, что искать, а если часто пользуешься — запоминать, как использовать. А речь может идти о десятках, сотнях, а порой и тысячах программ.
При этом создатели инструментов обычно забывают о 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:29
Comments:0