TGINSIGHT CHAT
Python Заметки
@pythonotes
EducationИнтересные заметки и обучающие материалы по Python Контакт: @paulwinex ⚠️ Рекламу на канале не делаю!⚠️ Хештеги для поиска: #tricks #libs #pep #basic #regex #qt #django #2to3 #source #offtop
Неодамнешни објави
Страница 9 од 32 · 384 објави
Објавено 12 јан.
Сделал простой скрипт для управления температурой кулера Raspberry Pi. - Зачем? Их же полно готовых! Даже дефолтные инструменты есть. Хотелось сделать этот велосипед по-своему 😁 ▫️Пороговых температур две: Одна контролирует момент включения, другая выключения. Например, выше 80 - включаем. Остыл до 50 - выключаем. ▫️ Значения пороговых температур заипсывается в специальном файле и считывается каждый раз при проверке темературы без рестарта сервиса. Исходники и схема. https://github.com/paulwinex/rpi_fan_control ЗЫ. В схеме присуствует сопротивление. Это требуется только если нужно уменьшить скорость вращения кулера. Мой на полных оборотах сильно гудит, пришлось поставить. #sources#rpi
Објавено 5 јан.
Как не передавать аргумент в функцию если она его не ждёт? Как-то раз я делал модуль с функциями, которые вызывались как фоновые задачи. В основном они принимали чёткий список позиционных аргументов. И вот, в разгар разработки, пришла новая фича - в каждую такую функцию теперь передаётся Lock-объект. Он позволяет сделать выполнение этой функции синхронным на разных воркерах (как и положено любому локеру). Но вот проблема, в новых функциях, где нужен локер, я его, конечно же, принимаю как аргумент. Но в старых функциях он не предусмотрен. Часто функции вообще без аргументов. Какие варианты решения? ▫️ Добавить во всех функциях в аргументы **kwargs. Это решит все проблемы. Строго говоря, это надо было сделать сразу. Теперь таски не будут падать из-за неизвестного аргумента. И теперь следует не забывать добавлять **kwargs в новых функциях. Но что, если нет возможности изменять код? Тогда... ▫️Проверить, может ли функция принять аргумент с определённым именем. И если не может то не передавать. Это можно сделать с помощью стандартной функции inspect.signature from inspect import signature def func(x, y, z=True): pass sig = signature(func) print(sig) # <Signature (x, y, z=True)> print(sig.parameters) mappingproxy(OrderedDict([('x', <Parameter "x">), ('y', <Parameter "y">), ('z', <Parameter "z=True">)])) Теперь можно проверить, ожидает ли функция параметр с определённым именем print('lock' in sig.parameters) # False Финальный псевдокод from tasks import my_task, LockClass from inspect import signature task_kwargs = {} lock = LockClass() if 'lock' in signature(my_task).parameters: task_kwargs['lock'] = lock my_task(**task_kwargs) Конечно же, наличие этого имени не гарантирует что функция ожидает именно этот тип. Но это уже нюансы реализации 😼 #tricks
Hashtags
Објавено 1 јан.
С Новым Годом! 🎁🎉😱
Објавено 3 дек.
Всех 3D художников поздравляю c проф праздником 3Dекабря❕ 💥🫖⭐️🎨🎁🪄🎉🎥 #offtop
Hashtags
Објавено 24 окт.
Релиз Python 3.11 В прямом эфире ▶️https://www.youtube.com/watch?v=PGZPSWZSkJI ▶️ Подробности по релизу https://docs.python.org/3.11/whatsnew/3.11.html
Објавено 23 сеп.
Я нашел самый быстрый способ поднять свой независимый и бесплатный VPN Сразу оговорка, платить придётся только за хостинг. 1️⃣ Покупаем сервер где-то на просторах интернета. Конечно же сервер должен находиться за пределами страны. Например я закупился на https://eurohoster.org/ (не реклама). Проверяйте лимиты по трафику, в идеале - без ограничений. 2️⃣ Ставим docker sudo apt install docker.io Если удобней с DockerCompose то ставим и его sudo apt install docker-compose 3️⃣ Ставим WG-EASY Самый простой способ поднять сервис WireGuard c WebUI это проект wg-easy Код и документация здесь https://github.com/weejewel/wg-easy Запускаем контейнер: https://github.com/weejewel/wg-easy#2-run-wireguard-easy Для тех кто с DockerCompose, забираем файл здесь: https://gist.github.com/paulwinex/be87f79687b96786098ec8fa6a8e251c В обоих случаях потребуется поменять две переменные: WG_HOST - внешний статичный IP вашего сервера PASSWORD - придумайте пароль для WEB UI Остальные параметры указаны ниже на странице github https://github.com/weejewel/wg-easy#options 4️⃣ Ставим клиента Все доступные клиенты здесь https://www.wireguard.com/install/ Есть возможность добавить клиента в Network Manager для управления подключением через UI. Установка зависит от вашей системы, ищите мануалы в сети, их много. https://github.com/max-moser/network-manager-wireguard Скрипт установки для RasperryPi https://gist.github.com/paulwinex/c2c4090f19dbe8bd1253c5744f3f06e1 ЗЫ. Конечно же это не "самый простой" и далеко не единственный способ. А просто тот, который использую я сам. #offtop#linux
Објавено 9 авг.
Приветствую подписчиков. Я даже несколько удивлён как это вы еще не разбежались 😻)) Многие мне пишут в личку с вопросом "Где брать курсы если сайт закрылся?". Отвечаю — сайт не закрылся❗️ Ввиду некоторой обстановки 💣⚔️🚓💥 мой хостинг (Украинский кстати) немножко "закончился". Мой хороший знакомый, админ данного хостинга, включил мой сервер на пару часов и я скачал все данные. После чего создал новый сервер в Европе и поднял там сайт. На данный момент я закончил настройку и теперь сайт снова доступен. А так же добавил домен COM, для тех у кого RU блокируют. Теперь сайт доступен по адресам: https://cgninjas.ru/ https://cgninjas.com/ (возможно на com почта не будет работать) Также просят выложить всё на Youtube или на Torrent. Да я не против, только исходники у меня пропали вместе с HDD, так что надо потратить немало времени чтобы скачать, систематизировать и залить. Если вдруг выкрою недельку на это, то обязательно сделаю))) ▫️Погодите, а что с каналом? он тоже всё? Нет, ввиду всё тех же событий 💥 потух творческий запал, и мотивация пропала... Но идеи есть, заготовки тем тоже. Возможно, я жду хороших новостей. Обязательно продолжу серию заметок... надеюсь скоро. А до тех пор я не хочу вас раздражать глупой рекламой глупых каналов (которые запрудили телеграм и предложения которой приходят регулярно) а лучше просто помолчу. "Благодарим за понимание ©" ЗЫ. Не пишите пжлст в личку, есть чат для этого ➡️CGNinjasChat #offtop
Hashtags
Објавено 29 апр.
Репозитори на почитать для расширения кругозора. ▫️ Большой ликбез по экосистеме Python https://github.com/brunocampos01/understanding-the-python-ecosystem ▫️Подборка самых популярных полезностей для веб разработчиков https://github.com/ml-tooling/best-of-web-python ▫️Подборка библиотек для тех кто уважает типизацию в Python https://github.com/typeddjango/awesome-python-typing #basic#libs
Објавено 11 апр.
Блокировки, они повсюду... Ох как надоела эта тенденция. Наша IT индустрия буквально стреляет себе в ногу силами определённых личностей и их мнений о том как для нас будет лучше. Как бы там ни было, сейчас все советуют экстренно качать и переносить свои видосы с YouTube на отечественные аналоги. Да, можно использовать оконные софты со всеми удобствами (VLC или Youtube Video Downloader), но мы лучше покодим😉 Я набросал небольшой скрипт для скачивания плейлиста с YouTobe в один клик. Из зависимостей только модуль pytube. ▫️ Для скачивания выбирается максимально доступный размер видео файла. ▫️ Если файл уже существует то скачивания не будет. Удобно для апдейта обновлений. ▫️ Скрипт качает всё из плейлиста с помощью класса pytube.Playlist. Если хотите скачать канал, то просто замените класс на pytube.Channel from pytube import Channel PLAYLIST_URL = 'https://www.youtube.com/channel/XXXXXXXXX' playlist = Channel(PLAYLIST_URL) Забираем здесь ➡️ #source
Hashtags
Објавено 23 мар.
Celery это крутой инструмент для очереди задач web-вашего приложения на Python. Но его монополию всё больше притесняет другая библиотека - dramatiq. По словам автора, эта библиотека лишена всех проблем Celery If you’ve ever had to use Celery in anger, Dramatiq could be the tool for you. Обычно далее я пишу примеры как можно быстро опробовать библиотеку. Но кода там прилично, поэтому я сделал репозиторий с примером приложения на Flask. Что реализовано в этом приложении: ▫️Засетаплен dramatiq совместо с Flask с помощью flask-dramatiq ▫️Отправка простых фоновых задач ▫️Отправка периодических cron-задач по расписанию с помощью periodiq ▫️Отмена запущенных задач с помощью dramatiq_abort ▫️Задача с отложенной проверкой результата ▫️Всё закатано в Docker, поэтому заводится с полпинка В качестве брокера используется Redis. Он стартует быстрей чем RabbitMQ и dramatiq_abort пока что поддерживает только его. Шаблонов нет, фронт максимально глуп и минималистичен. 🌎 Код смотрим здесь https://github.com/paulwinex/flamatiq Также стоит посмотреть: dramatiq_dashboard django_dramatiq #libs
Hashtags
Објавено 14 мар.
Раньше на курсах была проверка домашних заданий и фитбек. Теперь, по понятным причинам, я не смогу это поддерживать в том же объёме. Чтобы вам не учится в сферическом вакууме, я сделал для вас площадку для общения. А точней две! Там вы сможете помогать друг другу, ведь старые студенты тоже подтянутся, за что я буду им очень благодарен. Я тоже буду отвечать на ваши вопросы по возможности. Основная площадка: ➡️Discord Сервер Запасной вариант: ➡️Telegram Чат 👍 Вход свободный, все чаты открыты. 🤬 Никакой политики и токсичности! Только по делу! 💣 Нарушителей банить буду резко и с размаху! 📌@pythonotes #offtop
Hashtags
Објавено 14 мар.
Помогая окружающим, лучше всего делать то, что умеешь делать лучше всего! Поэтому я решил сделать все свои курсы бесплатными и выложить в открытый доступ❗️ Был период в моей жизни, когда эти курсы помогли мне выжить. Теперь, я надеюсь, они помогут кому-то еще. Спасибо всем, кто покупал мои курсы, даже если потом не смотрел 😁 Навыки программирования нынче оцениваются достаточно высоко, это шанс найти работу с зарплатой повыше, попросить повышения или просто улучшить свою продуктивность с помощью кодинга! Так что пользуйтесь 😉 Сразу скажу, курсы не свежие, записанны в 2014-2015 гг. Некоторая информация устарела но примерно на ±90% всё еще актуально. Какие курсы доступны: ▫️Advanced Python Scripting Это компиляция из 3х курсов начального, среднего и высокого уровня сложности. С нуля до создания собственных десктоп-приложений. ▫️ Python for Maya Курс для Python-разработчиков в Maya. Да, Autodesk ушел от нас, но скорее всего, вернётся) ▫️ Python for Nuke Курс для Python-разработчиков в Nuke. ▫️Python for Houdini Курс для Python-разработчиков в Houdini. Самый отстающий в актуальности курс, так как Houdini развивается и меняется очень стремительно и кардинально. Тем не менее, 80-90% курса актуальна. ▫️Houdini Fundamentals Курс поможет познакомиться с крутым софтом для 3D графики — SideFX Houdini. Записан на версии 16. Рассчитан на нулевой уровень подготовки. На этот раз курс не про Python, только про сам софт. Все Python-курсы записаны с Python2, вам потребуется изучить особенности перехода на версию Python3, о чем я не раз говорил на своём канале. Ищите по хэштегу #2to3 💬 Остальные подробности в комментах Переходите на сайт школы и выбирайте курс: ➡️ https://cgninjas.ru/⬅️ 📌@pythonotes #offtop