Pull to refresh
19
0.2
Send message

@nickname235342, можно еще покапаться в коде Django.

Там можно подключать собственные модули через конфиг "'ENGINE': 'path.to.custom.backend.NoSQLDatabaseWrapper'
https://reintech.io/blog/writing-custom-database-backends-in-django-tutorial

Настройки тоже динамические.
Когда вы запускаете сервер, то в рантайме выбирается реальный файл с настройками, а доступен он будет через from django.conf import settings. Не совсем планин, но есть сходство. https://docs.djangoproject.com/en/5.0/topics/settings/#using-settings-in-python-code

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

Если этот код из примера непонятен, я уже не знаю, как написать проще:


В коде нет действия. Что делают сами функции понятно, а вот зачем они здесь нет.

# Demo 0 Не информативно, напишите например Демо плагина который печатает текст на консоль

# start function Не далайте так пожалуйста, те кто читают этот файл знают что def start это # start function . Это дублирование информации. Напишете что эта функция будет вызванна при инициализации плагина.

def run_hello(core,params): Я бы переименовал в _run_hello , нижнее подчёркивание это конвенция для внутренних функци, в данном примере эта функция не важна.


Мой комментарий был про пример в документации.
main.init_plugins() что здесь должно прозойти? Просто распишите, что в папке найдутся файлы и они выполнятся и вы увидете "Hello, world!" .

Да, до библиотеки это не дотягивает. В проекте жётские требования про полное отсутствие внешних зависимостей, поэтому нет смысла выносить в библиотеку.

Как вы её пропихнули в проекты вообще без тестов, особенно слияние конфигов?

Из примера не понятно как работать.

Вот вызвал я main.init_plugins()
и что дальше произойдёт? Вызовется какой-то удалённый код и всё, или я смогу получить объект и его как-то использовать?



Лет десять назад был в Индии на заправке. 4 работника заправляли одну машину.

У меня для вас сюрприз, в среднем по миру так и есть (43 процента сельского населения). При этом страны с высоким уровнем городского населения, просто завозят себе работников из стран с низким.

В своё время делал механизм плагинов для упрощения разработки.

Описание и плагины
https://github.com/freeorion/freeorion/tree/master/default/python/handlers

Загрузчик плагинов
https://github.com/freeorion/freeorion/blob/367dbe1ef3d3237f7c621a824b49e8e4e0a991f0/default/python/common/handlers.py#L10

Декоратор для точки входа
https://github.com/freeorion/freeorion/blob/367dbe1ef3d3237f7c621a824b49e8e4e0a991f0/default/python/common/listeners.py#L37

В итоге выжил только плагин который по модулю существующему только в рантайме (C++ binding) создаёт файл с питоновскими скелетам (.pyi). Скелеты позволяют иметь автоподстановку в IDE.

Нарушено много правил хорошего кода (pep-8)


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

то учитывайте все эти факторы при написании кода.

Я бы еще добавил один момент, это безопастность. Вы ставляете плагин внутрь своего приложения и даёте ему доступ ко всей памяти. Чужой код так может быть выполнять опасно.

Что только не напишешь чтобы продать своё личное наставничество.

Попробую объяснить нашу систему, хотя сам не до конца всё понимаю и не часто использую.

Если кратко то это виртуальная монорепа.

Поддерживаются несколько языков (С#, Java, Python, Javascript/Typescript)

Для быстрой разработки было принято решение не указывать версии зависимостей внутри приложения. Вы собираете приложение с самой свежей версией внутренних зависимостей.

Чтобы это работало придуман собственный инструментарий (на базе gradle).

Вы создаёте workspace и туда клонируете свои репозитории. Когда вы собираете проект, то если зависимость склонирована, то она тоже будет собрана из исходников , а если нет то скачается версия с билд системы. В момент создания актуальный build_id прописывается в папку с репозиториями.

Есть команда refresh которая подтянет мастер в репозитории и пропишет последний build_id

Для хотфиксов процесс такой-же как для разработки, только вместо gradle init используется gradle hotfix <build_id>.

Переделать на git worktree наверно можно, но это требует ресурсов.

водитель трамвая не перевезет больше людей

Шанс возникновения ДТП у водителя который не отдохнул выше.

Да и землекоп, за 4 дня 4 дневки может и выкопает больше кубов, чем за 4 дня 5 дневки, но уж явно меньше чем за 5 дней 5 дневки

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

Процесс копания выгляди линейным, но на деле таковым не является. Там тоже есть свой вид выгорания.

Любой хороший бизнес знает, что если заставлять оборудование работать на износ - оно сломается


Хороший это в смысле прибыльный?

Использовал, выбросил, новых нанял, тоже бизнес стратегия.

Так что максимум - шестидневка. Тогда - да. Пострадают и втянутся. Тем более, что раньше так и работали и не жужжали.

А потом коварные капиталисты укоротили рабочий день.

Жужали и еще как. Просто их затыкали.

Почeму уровень сложности статьи средний?

Открыл статью. Долистал до ссылки на репозиторий. Открыл файл с тестами. Не нашёл ни одного теста. До уровня библиотеки это не дотягивает.

обычно людям дают самим мёржить ветки в мастер

У нас компания имеет требования по безопастности, любой код который идёт в прод, должен быть посмотрен вторым человеком.

А еще когда мерджи напримую запрещены и есть CI, то не придётся чинить тесты за того парня.

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

Если такое происходит часто, особенно в маленькой команде, то стоит подумать над процессами. Частые переключения до добра не доводят.

В JetBrains иде есть локальная история, много раз меня спасала.

Один из долгих этапов сборки может быть скачивание всех зависимостей.

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

Только ситуация с хотфиксами требует создания "копиии" резитория. У нас сложный процесс на этот счёт и мы делаем всё в новой папке. Правда мы используем не git clone, а самописный инструмент.

В платных версиях по такому же принципу команды прописанные в конфигурации (package.json/scripts) можно зупаскать.

1
23 ...

Information

Rating
2,158-th
Registered
Activity