Новости Отчёт mj за май по работе над «непрерывной интеграцией»

Тема в разделе "Новости", создана пользователем Mr. Pickles, 25 май 2021.

  1. Mr. Pickles

    Команда форума Модератор Редактор

    Регистрация:
    11 сен 2017
    Сообщения:
    916
    Симпатии:
    244
    Уважаемое сообщество, в прошлом месяце основными направлениями моей работы (и связанными с ней курьёзами) стали:
    1. Упрощение процесса привлечения к работе новых разработчиков путем документирования способов решения общих проблем и повышения эффективности (отладки, использования IDE и разработки через тестирование)

    2. Работа над множеством мелочей, которые в противном случае могли бы стать причиной некоторых неприятностей (компиляция предупреждений, внесение изменений в CMake)

    3. Подтверждение (с течением времени) повторяющихся «зелёных сборок» для правильных PR во избежание случайных отказов. Лично с моей точки зрения, это значительно повышает уверенность в себе и снижает уровень стресса при ожидании вердикта CI. Подобный стресс у меня ассоциируется с негативными переживаниями, которые я испытываю, играя в азартные игры. В связи с этим мною было внесено ещё одно исправление (также приводится ниже).

    4. Были проведены некоторые исследования возможности размера распределённых двоичных файлов. Например, двоичные файлы Windows могли бы стать на 50% меньше.

    5. Я немного расширил свой еженедельный отчёт о состоянии Monero, воспользовавшись более сложным инструментом Clang Build Analyzer. Благодаря этому изменению стало ещё более очевидно, на что тратится большая часть времени компиляции. В связи с этим я поднял уровень ограничений сложности графа в отчёте Doxygen. В отличие от того, что было, имеется возможность создания даже самых сложных графиков для более детального изучения. А теперь приготовьтесь, возьмите вилки, ложки и соус «Наполи»!

    6. Re: 1) Заметив, что я несколько специальных веток разработчиков не были объединены, я решил, что сохраню их в форме патча в отдельном репозитории и научу разработчиков, как ими пользоваться посредством файла документации, созданного мною, поскольку сейчас, на мой скромный взгляд, решительно годные изменения улетают в мусорную форзину. Безусловно, необходимо чётко обозначить, что ни разработчики Monero, ни мейнтейнеры не несут никакой ответственности за эти исправления, которые играют роль специализированных решений. Тем не мене, работа продолжается.

    7. Было много новых запросов PR, по которым я мог предоставить свою помощь в виде рецензий, и я без колебаний комментировал/исправлял их по мере поступления.
    Также стоит упомянуть, что мой трёхмесячный период разработки подошел к концу. Мне было приятно работать с Monero, и я надеюсь, что вы сочтёте мою помощь полезной и не слишком дорогой. Что касается повышения цен на XMR, до тех пор, пока следующие 3 месяца моей работы не будут профинансированы и одобрены (если вы того пожелаете), я буду продолжать работать «бесплатно», так как я хочу чем-то отблагодарить вас за доверие, и я по-прежнему буду поддерживать свои открытые ветки и принимать участие в рецензировании. Я не буду открывать новые ветки, если только они не будут иметь какого-либо отношения к непредсказуемым прерываниям CI, за которые я чувствую ответственность. То же самое, конечно, касается и исправления любых функций, которые были представлены мною. Ещё одна причина не открывать новые ветки заключается в том, что я хочу дать другим разработчикам немного отдохнуть от моего спама, который им придётся медленно переваривать :)

    Вот традиционный список объединённых и вновь открытых веток:

    Объединённые ветки
    • CI: Ещё раз о тестировании адаптивного майнинга. Отталкиваясь от комментариев @moneromoo, я улучшил процедуру тестирования адаптивного майнинга, как только данные комментарии были получены, а также, я набрался смелости и произвёл небольшое перепроектирование исходного кода.
    • Cmake: Новый макрос – поиск всех заголовков. Как подсказывает название, макрос автоматически находит все заголовки в каталоге. Их ввод вручную весьма чреват ошибками. Важно иметь правильно определённые зависимости сборки, чтобы разработчику не приходилось давать команду очистки и начинать всё перестраивать с нуля, чтобы убедиться в наличии всех символов или в том, что все недавно изменённые встроенные заголовки были скомпилированы. Также это очень помогает при работе с IDE, которые теперь могут автоматически сохранять изменённые файлы перед компиляцией (см. пункт 1)). Дополнительное преимущество этой функции состоит в том, что всякий раз, когда какой-либо разработчик добавляет в проект новые заголовки, они автоматически добавляются в список зависимостей. По сути это уже подтверждённый рабочий отрывок кода, размещённый так, чтобы его можно было использовать во всём проекте, включая использование во внешних репозиториях.
    Недавно открытые ветки
    • Тестирование: Ускорение проведения основных тестов за счёт повторного использования переменной. Благодаря повторному использованию переменной, которая без необходимости многократно вычислялась во внутреннем цикле, было достигнуто на 10% более быстрое создание тестовых данных (около 3-7 минут, в зависимости от машины). Потребовалась некоторая переработка, которая имела положительный побочный эффект, заключавшийся в разделении большой функции со слишком большим количеством параметров и уменьшении случаев дублирования кода.
    • CMake: Путь к временному файлу Trezor. Я провёл небольшую чистку, удалив ненужный элемент, но мой PR заменил другой, более широкий с точки зрения содержания PR.
    • CI: Щадящие условия повторной попытки загрузки зависимости. В редких случаях один из источников зависимостей будет отказывать в доступе нашим автоматизированным загрузчикам. В подобных случаях может быть запрошен альтернативный URL. Если альтернативный вариант не сработает, произойдёт отказ сборки. Смягчив условия повторной попытки, я снизил вероятность того, что и первоначальный источник и альтернативный вариант одновременно не сработают.
    • CI: Минимизированные зависимости Boost. Работа выполнена в соответствии с нашей официальной документации, так что CI всегда проверяет документацию и сигналы, если есть необходимость в их изменении.
    • CMake: Включение недостающих заголовков wallet2. Благодаря недавно объединённой ветви, моему макросу monero_find_all_headers(), я смог идентифицировать и автоматически включить недостающий заголовок класса wallet2.
    • CMake: Добавление встроенных заголовков в список заголовков. Исправление недочётов с моей стороны. Во включённом списке файлов отсутствовал в файл .inl, который играет роль заголовка. Используемая в настоящее время версия, однако, не демонстрирует никакой регрессии, так как эти файлы .inl не были включены вручную.
    • Doc: Новые переменные среды майнинга в funtional_tests. Я скопировал и вставил, а также расширил информацию о новых переменных среды майнинга, начиная с кода Python, и заканчивая tests/README.md, так что человеку, который производит тестирование, не придётся копаться в коде, чтобы найти эту информацию, поскольку API тестирования должен быть общедоступным.
    Сокращение времени компиляции

    На самом деле, это пункт из моего второго предложения в CCS, которое продвигается своим медленным темпом. Но мне бы просто хотелось упомянуть здесь, что я все ещё работаю над ним с той же частотой, с которой рецензенты способны проверять мои уже открытые ветки. В этом другом CSS я опубликую немного более подробный отчёт по данному вопросу, более широко и актуальнее отражающий положение вещей, а также подкрепленный автоматически генерируемыми отчётами, которые не были доступны ранее. Я также хочу обсудить с вами, как по-справедливости распределить накопленные средства в соответствии сколько проделанной работой и той работой, которую бы можно было проделать к этому моменту, так как я не считаю, что имею право на то, чтобы забрать всю сумму, учитывая текущее отношение цены XMR/USD.

    Ветки, открытые в этой теме:
    • wallet2: Доказательство концепции (POC) абстракции. Представление wallet2 в качестве абстрактного интерфейса, как в Java/C# - только абстракции и предварительные объявления. Общее сокращение времени компиляции составило около 2,5%, но отдельные, наиболее затронутые этим файлы, продемонстрировали ускорение до 40%! Если мы продолжим двигаться в том же направлении, то достигнем гораздо большего.

    • epee: Перенос файла storages/parserse_base_utils.h в формат .cpp. Просто небольшое изменение, связанное с перемещением кода из файла .h в файл .cpp, которое пока не имеет каких-либо значимых последствий. Но я хочу, чтобы мои PR оставались компактными.
    Спасибо за внимание и вашу непрерывную поддержку!

    ---

    Источник: mj part time coding - 3 months

    Перевод:
    Mr. Pickles (@v1docq47)
    Редактирование:
    Agent LvM (@LvMi4)
    Коррекция:
    Kukima (@Kukima)
     
    #1 Mr. Pickles, 25 май 2021
    Последнее редактирование: 25 май 2021
  • О нас

    Наш сайт является одним из уникальных мест, где русскоязычное сообщество Monero может свободно общаться на темы, связанные с этой криптовалютой. Мы стараемся публиковать полезные мануалы и статьи (как собственные, так и переводы с английского) о криптовалюте Monero. Если вы хорошо владеете английским (или можете писать собственные статьи/мануалы) и хотите помочь в переводах и общем развитии Monero для русскоязычной аудитории - свяжитесь с одним из администраторов.