Code snippets или небольшие заметки автоматизаторов. Давайте накопим базу знаний!

Некоторое время назад я и другие автоматизаторы начали показывать небольшие куски кода и описывать решения c которыми мы сталкиваемся каждый день ( [Заметка] Как уменшить уровень логирования для SudsLibrary библиотеки с помощью Python в Robot Framework? спасибо @TIT, @dzhariy, @DmitriyZverev за поддержку, очень ценю).

Все выглядит хорошо, и мы двигаемся плавно и стабильно, но я хочу чтобы это было мейнстрим, т.е. чтобы мы больше думали об обмене знаний и значительно больше делились полезной информацией, а не обсуждали только свои точечные проблемы. Таким образом мы значительно быстрее будем узнавать новые фишки, паттерны, смотреть как автоматизируют другие люди, с какими проблемами сталкиваются и как решают их, возможно просто и красиво, а иногда сложно и тяжело. Это все опыт и мы все вместе сможем получать этот опыт значительно быстрее и в концентрированном виде.

Цель

Насытить at.info аккумулированным проверенным опытом в виде небольших статей и кусков кода, которые мы разрабатываем каждый день. Я хочу создать движение, которое поможет нам всем черпать новую информацию. А ты готов быть активным автоматизатором?!

Наш опыт в наших руках. Присоединяйтесь, зовите знакомых, которые могут что-то описать, и агитируйте других автоматизаторов. Движению быть!

Чем делиться?

  • Небольшие решения частых проблемы
  • Костыли, затычки и воркараунды, которые помогают сделать ежедневную работу проще
  • Написанный код, неидеальный, но который может пригодиться другим автоматизаторам
  • Мысли вслух, теории и модели построения кода и автоматизации
  • Паттерны создания кода и автоматизации от простых до сложных
  • Инсайты, озарения, правила, как делать автоматизацию хорошо
  • Описание типичных проблем, которые вы встречаете, возможно из проекта, который вам достался. Чем это чревато и с чем столкнулись.
  • и т.д. я думаю ход мыслей понятен, в общем, все с чем мы работаем каждый день

Объем не имеет значение, то ли это будет 3 абзаца текста или это будет кусок вставленного кода с 3мя предложениями. Т.е. если у вас есть небольшой кусок кода или небольшая хорошая мысль, не стоит держать ее только у себя! Делимся, получаем обратную реакцию и развиваемся вместе.

Как это может выглядеть?

Написать большую и хорошую статью сложно и это требует времени. Мир неидеален. Давайте адаптироваться, так чтобы нам было удобно. Для того чтобы поделиться информацией, вам не нужны недели подготовок и кучу бессонных ночей, чтобы подготовить идеальную статью или код. Все что нам нужно уже есть под рукой. Рецепт обмена знаниями\информации предельно простой в несколько шагов:

  1. Логинимся на сайт
  2. Создаем обычную тему с информативным названием и контентом (внимание используется markdown, используйте читлист для того, чтобы посмотреть команды Markdown Cheatsheet · adam-p/markdown-here Wiki · GitHub)
  3. Бурно обсуждаем все в комментариях.

Но все же, как это может выглядеть? Да как сделаете так и будет, можно например посмотреть уже написанные статьи и заметки в базе знаний база знаний - automated-testing.info, но в общем это может быть так

Пример 1: Просто кусок кода и небольшое описание

Название: Как написать универсальную функцию создания рандомной строки под своих нужды на Python?
Тело: При разработке новой библиотеки для RobotFramework написал удобный метод создания универсальной строки по заданному паттерну.

class _StringDataGeneration(object):

    def __init__(self):
        self._overall_pattern = re.compile(
            r'((?:[dcw]{1}(?!\*\d+))|(?:[dcw]{1}(?:\*\d+))|[\D\W\S])')
        self._expression_pattern = re.compile(r'[dcw]{1}(?:\*\d+)')

        self.SUPPORTED_CHARS = {
            'c': self._generate_chars,
            'd': self._generate_numbers,
            'w': self._generate_chars_and_numbers,
        }

    def get_random_string_by_pattern(self, format):
        """Generate random string by pattern:
        Examples:
        | ${string} | Get Random String By Pattern | ddd*10d-c*2ccc-d*2-cc*2-w-w*5ww | """
        groups = self._overall_pattern.findall(format)
        return "".join(map(self._replace, groups))

    def _replace(self, pattern):
        if self._expression_pattern.search(pattern):
            parsed_expression = pattern.split('*')
            return self.SUPPORTED_CHARS[parsed_expression[0]](int(parsed_expression[1]))
        elif pattern in self.SUPPORTED_CHARS.keys():
            return self.SUPPORTED_CHARS[pattern]()
        else:
            return pattern
...

Пример 2: Пошаговая инструкция

Пример 3: Небольшая статья с деталями


Ну что сделаем обмен знаний лучшее и качественнее, тем самым повышая свою экспертизу в области автоматизации? Комментарии, предложения, инициатива, проактивность и самостоятельность приветствуется! А в замен я буду поощрять инициативных. Начну с этого Наклейка at.info на ваш ноутбук! Становимся at.info superstar

Оформлять статьи именно в разделе “База знаний”?

В общем да, но если кто создаст в другой категории не проблема. Есть я, есть другие модераторы, так что перенесем куда нужно. Главное, чтобы появился сам контент, а даже если кто-то ошибиться с категорией, ну не велика проблема.

Эта тема прилеплена. Она будет всегда отображаться первой в списке тем своей категории, пока не будет отлеплена модератором, или сброшена вниз, когда каждый пользователь нажмет кнопку «Отлепить»

А в чем отличие от других постов на сайте?

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

Отличие не в теге или категории, а в том чтобы появилось больше информативных и полезных статей и заметок по автоматизации. Т.е. чтобы больше участников сообщества делилось опытом и наработками. А внешний вид, теги, категории, это все второстепенное.

Сейчас важно сформировать движение активных участников, которые не просто потребляют информацию или решают свои проблемы, а создают вектор развития автоматизации через публикацию своего опыта.