Доброе утро. Все, у кого сломался злюка (бот-модератор) и теперь при заходе в комментарии отправляется его меню - зайдите в диалог с ним и отправьте:
Я упустил момент и один человек этим воспользовался, немного сломав опыт использования. Меню пропадет после отправки команды. Сам убрать у Вас это не могу, т.к. это индивидуальные настройки Вашего чата.
/hide_menu
Я упустил момент и один человек этим воспользовался, немного сломав опыт использования. Меню пропадет после отправки команды. Сам убрать у Вас это не могу, т.к. это индивидуальные настройки Вашего чата.
🤯31👍7🥰5❤1
Тут каждый день в чатах пишут, что хотят начать, не знают с чего. Вот Вам самый лучший на сегодня БЕСПЛАТНЫЙ курс для "вкатки" , как это можно называть.
Он сейчас почему-то не на хайпе, ну и ладно... Значит, ссылка на плейлист:
ТЫК.
Немного инфы: CS50 (Computer Science 50) — это легендарный и очень популярный вводный курс по информатике и основам программирования, разработанный Гарвардским университетом. С 2015 года он также преподается в Йельском университете.
1. Для кого? Курс рассчитан на абсолютных новичков или тех, у кого есть минимальные начальные знания в программировании. Он является отличной отправной точкой для всех, кто интересуется компьютерными науками, независимо от их предыдущего опыта;
2. Чему учит? CS50 знакомит с фундаментальными концепциями информатики и программирования. Вы изучите:
- Базовые основы программирования (циклы, условные переходы, функции и т.д.);
- Принципы работы с командной строкой в Linux;
- Системы счисления;
- Алгоритмы и структуры данных;
- Введение в различные языки программирования, такие как C, Python, SQL, а также основы HTML, CSS и JavaScript;
- Также затрагивают основы кибербезопасности и искусственного интеллекта.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤108❤🔥16👍14🔥6🥰2
This media is not supported in your browser
VIEW IN TELEGRAM
Найден способ узнать аниме по любому кадру. Бесплатно и моментально определит сериал, эпизод и таймкод по вашему скриншоту. Распознает даже мемы.
Ссылка
PS: сайт поднялся!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤145🤣27🥰19🤷♀11👍9❤🔥6🙏2😡2
Всем хорошего вечера!
👨💻 Из того, что в видосах не показывал, добавил обрезку черных полос, но уже не захардкодил, а делаем это интеллектуально, для каждого видео индивидуально. + не только для скачанных с youtube, а и для локальных файлов. + добавил возможность наложить звук, а также регулировать громкость наложенного/родного звука видео, чтобы их можно было смешать или добавить фоновую музыку.
СКАЧАТЬ
P.S. постарался FFPEG и yt-dlp упаковать, но на своей системе корректность работы проверить не могу, ибо они у меня в PATH по умолчанию. Но вроде, должно работать.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥143❤44👍19❤🔥4😢3🥰1🌭1😡1
- Полное овладение Python (2023);
- Bogdan Stashchuk(Udemy) Полный курс по Python (2022);
- Python для хакера . Серия статей . Изучаем Python на практических примерах (2022);
- Основы математики для Data Science;
- Профессия 1с-разработчик c нуля до PRO;
- Сквозная аналитика;
- Adobe After Effects с 0 до PRO;
- Веб-аналитик с нуля до Junior;
- Fashion-скетчинг.
Кто с Украины, используем VPN, ибо все на облаке mail.ru выложено.
P.S. качество курсов по понятным причинам проверить не смог. Знаю только, что в общем доступе их нет и изначально они платные. Если у кого-то был опыт, делитесь в комментариях советами.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤147👍31🥰15❤🔥3🏆3🤨1
Давайте сравним на казуальной задаче: парсинг веб-страницы. Задача - собрать все заголовки с главной страницы Wikipedia.
На Python для этого нужно использовать только: requests, BeautifulSoup. А вот на C++ придется по-мучится с libcurl и Gumbo-parser.
Что у нас получается на Python? Буквально 7 строк. А вот, что получится для С++:
#include <iostream>
#include <string>
#include <vector>
#include <curl/curl.h>
#include <gumbo.h>
size_t write_callback(void *contents, size_t size, size_t nmemb, std::string *s) {
size_t new_length = size * nmemb;
try {
s->append((char*)contents, new_length);
} catch(std::bad_alloc &e) {
return 0;
}
return new_length;
}
void search_for_headers(GumboNode* node, std::vector<std::string>& headers) {
if (node->type != GUMBO_NODE_ELEMENT) {
return;
}
GumboTag tag = node->v.element.tag;
if (tag >= GUMBO_TAG_H1 && tag <= GUMBO_TAG_H6) {
GumboVector* children = &node->v.element.children;
for (unsigned int i = 0; i < children->length; ++i) {
GumboNode* child = static_cast<GumboNode*>(children->data[i]);
if (child->type == GUMBO_NODE_TEXT) {
headers.push_back(child->v.text.text);
}
}
}
GumboVector* children = &node->v.element.children;
for (unsigned int i = 0; i < children->length; ++i) {
search_for_headers(static_cast<GumboNode*>(children->data[i]), headers);
}
}
int main() {
CURL *curl;
CURLcode res;
std::string html_content;
curl = curl_easy_init();
if (curl) {
curl_easy_setopt(curl, CURLOPT_URL, "https://ru.wikipedia.org/wiki/Заглавная_страница");
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &html_content);
res = curl_easy_perform(curl);
if (res != CURLE_OK) {
std::cerr << "Ошибка curl_easy_perform(): " << curl_easy_strerror(res) << std::endl;
}
curl_easy_cleanup(curl);
}
if (html_content.empty()) {
std::cerr << "Не удалось загрузить HTML." << std::endl;
return 1;
}
GumboOutput* output = gumbo_parse(html_content.c_str());
std::vector<std::string> headers;
search_for_headers(output->root, headers);
std::cout << "Найденные заголовки:" << std::endl;
for (const auto& header : headers) {
std::cout << "- " << header << std::endl;
}
gumbo_destroy_output(&kGumboDefaultOptions, output);
return 0;
}
Как видите, код на C++ требует:
- ручного управления зависимостями: нужно установить и слинковать библиотеки;
- более низкоуровневой работы: вы вручную настраиваете curl, пишете callback-функцию для сохранения данных;
- явного обхода дерева: вы рекурсивно обходите DOM-дерево, построенное Gumbo;
- ручного управления памятью: вы обязаны вызвать gumbo_destroy_output, чтобы избежать утечек памяти.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍100❤39🤯6❤🔥4🔥2🥰1🌭1
На платформе доступны такие модели, как:
- GPT-4o Mini
- Gemini Flash
- DeepSeek
- Claude Haiku
- Claude Sonnet
- GPT-4.1
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥56👍20❤10🔥9⚡1🤝1
РЕПОЗИТОРИЙ | САЙТ
Chalk.ist и нужен только для того, чтобы делать из вашего скучного исходного кода потрясающие изображения.
✨ Основные возможности:
- Гибкое управление кодовыми блоками: Добавляйте, удаляйте, меняйте порядок и настраивайте языки для ваших кодовых блоков.
- Визуальные преобразования: Выделяйте важные строки, фокусируйтесь на конкретных участках или показывайте различия (добавления/удаления) в коде.
- Полная кастомизация: фон, шрифты, окно, темы, бейджи.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤54👍13🔥11❤🔥3
Тут ребята предлагают работу, я взяться не могу, но дам Вам объявление. Если знакомы с веб-автиматизацией и Selenium, Playwright - попробуйте подать им заявку (разверните, чтобы полностью прочитать вакансию. Подойдет как разовое сотрудничество так и постоянное!):
Привет! У нас открыта вакансия инженера по автоматизации на Python. Ищем того, кто готов работать с браузерной автоматизацией, прокси и ИИ. Если тебе интересно, откликайся и приходи на интервью уже сегодня. Не упусти шанс стать частью проекта!
Должность: Инженер по автоматизации на Python: браузерная автоматизация, прокси и интеграция ИИ
Формат: Удалённо (Пн-Пт, с 7:00 до 16:00 по EST)
Тип занятости: Полный рабочий день, контракт (с оплачиваемым испытательным сроком 1 месяц)
О PRAI.co
PRAI.co трансформирует сферу PR с помощью искусственного интеллекта. Наша основная платформа, PRAI Transformer помогает брендам достигать широкой видимости, формировать повестку и лидировать в цифровом пространстве.
Сейчас мы создаём инструменты следующего поколения: кастомные браузерные решения, ИИ-автоматизацию и масштабируемые системы на основе прокси. Если вы увлечены автоматизацией и хотите развиваться в быстрорастущем AI-стартапе, будем рады познакомиться.
Обязанности
Мы ищем Python-инженера среднего уровня, который поможет расширить систему браузерной автоматизации.
Вы будете решать реальные задачи: эмуляция поведения пользователей в браузере, адаптация ботов под изменения фронтенда и внедрение ИИ-компонентов в рабочие процессы.
Отличная возможность для специалиста, который хочет перейти от стандартной автоматизации к более сложным системам и ИИ-инструментам.
Основные задачи
-Написание и поддержка скриптов автоматизации с использованием Selenium или Playwright
-Эмуляция поведения реальных пользователей (движение мыши, задержки, ввод текста, скроллинг)
-Интеграция прокси-сервисов и ротация IP-адресов
-Отладка проблем, связанных с детектированием ботов и капчами
-Адаптация скриптов к изменениям во фронтенде сайтов
-Подключение автоматизации к базам данных (MongoDB, PostgreSQL) и Redis
-Внедрение лёгких ИИ-моделей или API для умной логики
-Мониторинг производительности и отчётность перед инженерной командой
Требования
-2–3 года опыта разработки на Python, включая автоматизацию
-Опыт с браузерной автоматизацией (Playwright, Selenium или Puppeteer)
-Понимание прокси, ротации IP и методов обхода детектирования
-Опыт работы с динамическими веб-сайтами (HTML, CSS, JavaScript)
-Знание Git, асинхронного Python и отладочных инструментов
-Уверенное владение английским для тех. терминов
-Готовность обучаться продвинутым методам: кастомизация браузеров, ИИ-интеграции и пр.
Преимущества
-Опыт с undetected-chromedriver, stealth-плагинами или методами обхода антиботов
-Знание Docker, Redis или систем фоновых задач (например, Celery)
-Знакомство с AI/ML-инструментами (OpenAI API, Langchain, Hugging Face)
-Базовое понимание системного дизайна и мониторинга производительности
Что мы предлагаем
-Удалённая работа с графиком по EST
-Оплачиваемый месяц на испытательном сроке с возможностью повышения ставки по итогам
-Менторство от старших инженеров, работающих с продвинутыми ИИ- и автоматизационными системами
-Работа над продуктом с глобальным охватом и реальными пользователями
-Быстрый темп, масштаб, рост и реальное влияние вашего кода
Как подать заявку
Отправьте на @olexandra_vakul :
-Краткое сообщение о вашем опыте с браузерной автоматизацией и мотивации на эту роль
-Резюме или профиль в LinkedIn
-GitHub или примеры кода (если есть)
Если вы готовы прокачать свои навыки в Python-автоматизации в реальной ИИ-среде, мы готовы работать с вами.
Откликайтесь, построим новое поколение умной автоматизации.
Please open Telegram to view this post
VIEW IN TELEGRAM
😭141❤20👍14😁7🤯6🔥3🥰3🐳3
Всем привет. В общем, после влета дрона в мой дом.... На той неделе закончил со сборкой ПК. SSD со старого (сгоревшего), который в целом выглядел ОК визуально, оказался не рабочим, 3 ячейки памяти из 4 неработоспособны, ибо обгорели. Перенести инфу, проекты и рабочий телеграм-аккаунт, с которого общался с заказчиками, я не смог, ибо диск только стартовал, а при попытке взаимодействовать с файловой системой, перезагрузка -> bios.
Сейчас я глобально в депрессии, ибо попал на много денег, т.к. квартира была моя, как и все имущество в ней. Восстанавливать мне государство ее не будет: для подачи документов на это нужно идти в военкомат, а идти в военкомат… Вы понимаете.
Я все еще помню о том, что есть заказчики, с которыми работали и я пропал внезапно. Поверьте, не по моей воле. Вам отвечать тоже возможности не было, т.к. аккаунт для рабочего общения был только на компьютере и телефоне для работы, которые я с собой в укрытие очевидно не забирал в ту ночь.
Поэтому всех, с кем работал/от кого получил средства и не дал результат, прошу отписать снова через бот(а), дам вам свой новый аккаунт. Всем сразу не отвечу, ибо опять-таки, я морально не вывезу со всеми общаться. Да, неправильно, да эгоистично. Как есть. Какие-то наработки по вашим проектам остались у меня в облаке, а для кого-то все слетело. Кидать никого не намерен, либо сделаю вам проекты, либо сделаю другие, если те актуальность потеряли, либо буду постепенно возвращать деньги.
Нужно систематизировать проблему и двигаться дальше, начинать работать, ибо сейчас моральное состояние ни к черту и опускаются руки. Ни хотел никому причинить вреда/никого обидеть.
Обещаю себе и Вам с завтрашнего дня вести этот канал, делать хотя-бы 1-2 поста в день, как и 1-2 видео в день в ТТ.
Сейчас я глобально в депрессии, ибо попал на много денег, т.к. квартира была моя, как и все имущество в ней. Восстанавливать мне государство ее не будет: для подачи документов на это нужно идти в военкомат, а идти в военкомат… Вы понимаете.
Я все еще помню о том, что есть заказчики, с которыми работали и я пропал внезапно. Поверьте, не по моей воле. Вам отвечать тоже возможности не было, т.к. аккаунт для рабочего общения был только на компьютере и телефоне для работы, которые я с собой в укрытие очевидно не забирал в ту ночь.
Поэтому всех, с кем работал/от кого получил средства и не дал результат, прошу отписать снова через бот(а), дам вам свой новый аккаунт. Всем сразу не отвечу, ибо опять-таки, я морально не вывезу со всеми общаться. Да, неправильно, да эгоистично. Как есть. Какие-то наработки по вашим проектам остались у меня в облаке, а для кого-то все слетело. Кидать никого не намерен, либо сделаю вам проекты, либо сделаю другие, если те актуальность потеряли, либо буду постепенно возвращать деньги.
Нужно систематизировать проблему и двигаться дальше, начинать работать, ибо сейчас моральное состояние ни к черту и опускаются руки. Ни хотел никому причинить вреда/никого обидеть.
Обещаю себе и Вам с завтрашнего дня вести этот канал, делать хотя-бы 1-2 поста в день, как и 1-2 видео в день в ТТ.
😢754❤104😭60😨21🤯9🤣7🔥6😱6
Кратко расскажу об альтернативах
1) SQLite
- Плюсы: Простая, быстрая, не требует отдельного сервера, встроена в Python.
- Минусы: Ограниченная поддержка многопоточности, не подходит для больших объемов данных.
🎯 Идеально для: Небольших проектов, мобильных приложений, тестирования.
2) PostgreSQL
- Плюсы: Мощная, расширяемая, поддерживает сложные запросы и большие объемы данных.
- Минусы: Требовательна к ресурсам, сложнее в настройке.
🎯 Идеально для: Крупных веб-приложений, систем аналитики, научных проектов.
3) MongoDB
- Плюсы: Гибкая схема данных, горизонтальное масштабирование, высокая скорость записи.
- Минусы: Ограниченная поддержка транзакций, не подходит для связанных данных.
🎯 Идеально для: Big Data, социальных сетей, IoT, контент-менеджмента.
4) Redis
- Плюсы: Очень быстрая (in-memory), подходит для кэширования и очередей сообщений.
- Минусы: Данные хранятся в оперативной памяти (ограниченный объем), риск потери данных при сбое.
🎯 Идеально для: Кэширования сессий пользователей, real-time аналитики, чатов.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤96👍16🔥11❤🔥3🤣1
Сегодня о классической связке, которая лежит в основе многих крутых проектов: Python и MySQL.
🤔 Как они "дружат?"
Python "общается" с базами данных MySQL с помощью специальных библиотек-коннекторов. Самые популярные — mysql-connector-python (официальный от Oracle) и PyMySQL.
1. Веб-приложения на Django & Flask: Это самая частая сфера применения. Интернет-магазины, блоги, CRM-системы, социальные сети — везде, где нужно надежно хранить данные о пользователях, товарах или постах, MySQL отлично справляется с ролью хранилища. Django и Flask имеют прекрасную интеграцию с этой СУБД.
2. Аналитика и ETL-процессы: Представьте, что вы парсите данные с сайтов. Python-скрипт собирает информацию, обрабатывает ее и аккуратно записывает в таблицы MySQL. Позже эти данные можно легко анализировать и строить отчеты.
3. Телеграм-боты: Ваш бот должен помнить пользователей, их настройки или историю сообщений? MySQL — отличный и надежный выбор для хранения этой информации.
4. Системы мониторинга: Скрипты, которые следят за состоянием серверов или приложений, могут записывать логи и метрики в базу MySQL для последующего анализа.
Python + MySQL — это надежное и масштабируемое решение для огромного спектра задач.
P.S. я вижу сообщения от ВСЕХ в боте, не нужно писать по несколько раз. Я закрываю вопрос с 2-3 людьми, потом иду дальше.
Если я начну отвечать всем и сразу - никто решение своей проблемы не получит, а я к тому, что сейчас кушаю золофт, еще пару таблеток у психиатра выпишу. До всех очередь дойдет, компенсирую работой/деньгами.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤60❤🔥10⚡5🔥3👍2🥰1🤔1💋1
What It Prints - это простая, но увлекательная игра-головоломка для программистов и всех, кто интересуется кодом. Зайти туда и "тренироваться" можно будучи адептом практически любого из востребованных сейчас языков: (JavaScript, Python, Ruby, C++ и других).
Сайт показывает вам небольшой фрагмент кода на разных языках программирования. Ваша задача — угадать, что именно этот код выведет на экран. Никаких сложных настроек, компиляторов и IDE. Только вы, код и ваша логика.
- проверить свои знания в разных языках;
- научиться быстрее читать и понимать чужой код;
- узнать новые "фишки" и особенности языков;
- просто "залипнуть" на несколько минут (или часов 😉) с пользой для ума.
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡57❤36✍8😡7👍5🔥5😴5🤔2
Парсить сайты на Selenium уже не считается практичным. Он медленней конкурентов. Единственное преимущество - это большое сообщество, которое делится опытом и поможет найти решение любой проблемы, практически. Но мой опыт показывает, что условный Playwright или DrissionPage быстрее, лучше справляются с задачами, где нужно "маскировать" автоматизацию.
Чем SeleniumBase лучше?
- простой синтаксис;
- встроенная защита от бот-детекторов;
- автоматическое управление драйверами - не нужно вручную скачивать и прописывать пути к chromedriver;
- "умные" ожидания: Скрипт не упадет, если элемент не успел прогрузиться. SeleniumBase автоматически дождется его появления перед тем, как выполнить действие. Это делает парсеры намного стабильнее.
По сути, он упрощает код и помогает обходить защиту там, где обычный Selenium уже не справляется. Вот такой вот опыт.
P.S. жду стул и микрофон, не могу пока ТТ вести, скоро фулл-комбек. Прямо сегодня утром закрыл 3-х заказчиков, сегодня отпишу еще троим. Жизнь продолжается, по чуть продолжаем работу.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍79❤30🔥14🥰3🐳3⚡2👏1🌭1
Часто встречаю проекты, от заказчиков, которые стоит доработать, или просто на GitHub, где в requirements указывается просто библиотека, без конкретной версии. И часто из-за этого у конечного пользователя не получается запустить проект. Почему так?
Дело в том, что разные версии библиотек могут иметь разный синтаксис. Например, популярный aiogram, который используют для написания асинхронных телеграм-ботов, во всех версиях 2. имеет совершенно иные методы/функции, нежели в версии 3. И даже внутри одного поколения, к примеру, aiogram 3.7 и aiogram 3.18 - есть значительные отличия. К чему это ведет? Проект написанный на какой-то конкретной, актуальной версии библиотеки, может просто не "стартовать" у пользователя уже через полгода. Для неопытного/начинающего разработчика - это беда.
То есть, мы определили, что зависимости вида:
requests
aiogram
pillow
Это нормально в момент, когда вы разрабатываете проект, знакомитесь с актуальными библиотеками и используете методы/функции, которые представлены в них. Но если вы хотите передавать/распространять/выкладывать свой код в общий доступ, рекомендую выучить команду:
pip freeze > requirements.txt
Есть и более чистый вариант через pip install pip-tools. Что нужно делать?:
1) Создайте (или активируйте) venv.
2) Установите инструмент:
pip install pip-tools
3) Напишите верхнеуровневые пакеты в requirements.in (те, которые без версий!).
4) Скомпилируйте замороженный список:
pip-compile requirements.in -o requirements.txt
- "--upgrade" - обновить всё до свежих допустимых версий
- "-P httpx" - обновить только httpx
- " --generate-hashes" - добавить SHA256-хеши для безопасности
5) После этого, выполните установку пакетов из сформированного requirements.txt:
pip-sync requirements.txt
pip-sync удалит лишние пакеты из venv и установит ровно те, что в файле.
Таким образом можно и разделять Prod и Dev инструменты, чтобы не тащить лишнее в продакшн. Создаете requirements.in - это прод зависимости и requirements-dev.in - инструменты для разработки. Типичное содержание такого файла:
-r requirements.in
pytest
ruff
mypy
То есть, включаем тесты и т.д., а также базовый requirements.in. Дальше компилируем и получаем два файла requirements.txt и requirements-dev.txt, с актуальными версиями, для разработчика и для продакшена:
pip-compile requirements.in -o requirements.txt
pip-compile requirements-dev.in -o requirements-dev.txt
pip-sync requirements.txt requirements-dev.txt
Не рекомендую, кстати, смешивать prod и dev в один файл — тяжёлые и нестабильные билды получаются...
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥57❤26👍9🔥4🐳2💯2
requirements.txt - ВСЕ ‼️
В прошлом посте мы "навели порядок" в зависимостях с помощью pip-tools. Но что, если я скажу, что современный Python предлагает еще более элегантное и комплексное решение? Ибо классический requirements.txt уже теряет свою актуальность и нужно переходить/начинать учиться более новым инструментам.
👨💻 Поговорим о pyproject.toml и почему за ним будущее. Новичкам предлагаю переключиться на него уже сейчас.
👀 В чем была проблема?
Раньше для одного проекта (я говорю о чем-то крупном, не телеграм-бот) нам нужен был целый "зоопарк" файлов:
- requirements.txt — для зависимостей;
- requirements-dev.txt — для инструментов разработки;
- setup.py — для сборки пакета;
- setup.cfg или tox.ini — для настройки линтеров и тестов (flake8, mypy);
- MANIFEST.in — чтобы указать, какие еще файлы включить в пакет.
Слишком много всего😜 . Легко запутаться и сложно поддерживать.
👨💻 Таких проблем не будет, если перейти на "единый центр управления" — pyproject.toml
pyproject.toml — это стандартизированный (PEP 518) файл, который призван стать единственным источником правды для вашего проекта. Внутри него можно описать практически всё:
- метаданные проекта: название, версия, автор, описание;
- зависимости: основные и для разработки (и любые другие группы!);
- настройки инструментов: конфигурация для ruff, pytest, mypy, black и других — всё в одном месте;
- информация о сборке: как собирать ваш проект в пакет для публикации.
Больше никакого хаоса. Один файл для управления всем.
⚙️ Инструменты нового поколения: Poetry, PDM, uv
Сам по себе pyproject.toml — это просто формат. Чтобы с ним работать, нужны современные менеджеры зависимостей. Вот тройка лидеров:
🎯 Хочу отметить, что для маленького одноразового скрипта requirements.txt все еще может быть достаточно. Но если вы пишете проект, который будет жить, развиваться и работать в команде — начните его сразу с Poetry или PDM. Вы скажете себе спасибо в будущем!
В прошлом посте мы "навели порядок" в зависимостях с помощью pip-tools. Но что, если я скажу, что современный Python предлагает еще более элегантное и комплексное решение? Ибо классический requirements.txt уже теряет свою актуальность и нужно переходить/начинать учиться более новым инструментам.
Раньше для одного проекта (я говорю о чем-то крупном, не телеграм-бот) нам нужен был целый "зоопарк" файлов:
- requirements.txt — для зависимостей;
- requirements-dev.txt — для инструментов разработки;
- setup.py — для сборки пакета;
- setup.cfg или tox.ini — для настройки линтеров и тестов (flake8, mypy);
- MANIFEST.in — чтобы указать, какие еще файлы включить в пакет.
Слишком много всего
pyproject.toml — это стандартизированный (PEP 518) файл, который призван стать единственным источником правды для вашего проекта. Внутри него можно описать практически всё:
- метаданные проекта: название, версия, автор, описание;
- зависимости: основные и для разработки (и любые другие группы!);
- настройки инструментов: конфигурация для ruff, pytest, mypy, black и других — всё в одном месте;
- информация о сборке: как собирать ваш проект в пакет для публикации.
Больше никакого хаоса. Один файл для управления всем.
Сам по себе pyproject.toml — это просто формат. Чтобы с ним работать, нужны современные менеджеры зависимостей. Вот тройка лидеров:
- Poetry: самый популярный и элегантный. Идеально подходит как для приложений, так и для библиотек. У него очень дружелюбный интерфейс и он делает всё "под ключ": создает окружение, управляет зависимостями и собирает пакет.
- PDM: невероятно мощный и гибкий менеджер, строго следующий современным стандартам Python (PEP). Не заставляет вас использовать виртуальное окружение внутри папки проекта, что многим нравится.
- uv: это не совсем менеджер, а сверхбыстрый установщик и "резолвер" зависимостей от создателя ruff. Он уже интегрируется с PDM и Poetry и, возможно, скоро станет стандартом скорости в экосистеме.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤52❤🔥14👍5🔥3🤬3👾1
1️⃣ Код без версий. Файлы «main_final_final_really.py» выглядят забавно, пока не надо откатиться на рабочий вариант. Git спасает нервы и проекты.
2️⃣ «Запустилось - значит работает». Отсутствие юнит-тестов делает рефакторинг лотереей, а баги - постоянными спутниками.
3️⃣ Копипаст без понимания. Стек-Оверфлоу (а сейчас - нейросети) решает задачу моментально, но чужой фрагмент приносит чужие же баги и дыры в безопасности.
4️⃣ Преждевременная оптимизация. Тратить часы на микро-ускорение цикла, не измерив, где реально узкое место, - самый быстрый способ потерять мотивацию.
5️⃣ Игнор читаемости. Завтра «temp2» и «x1» забудете даже вы сами. Говорящие имена и чистые функции - не украшение, а страховка.
6️⃣ Страх вопросов. Сеньоры помнят свои первые commit-ы. Чем раньше спросите, тем меньше технического долга наживёте.
7️⃣ Отсутствие системного обучения. Туториалы вдохновляют, но только книги (частный случай) и доки (всегда!) формируют фундамент и учат думать шире конкретного фреймворка.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤85🔥18🥰11👏4👍3❤🔥2💅2🐳1
Не знаешь этого – пишешь медленный и кривой код. Вот необходимый минимум:
- массивы (arrays): простая коллекция. Основа основ;
- хэш-таблицы (hash tables): 🚀 супербыстрый доступ по ключу для кэша и словарей;
- деревья (trees): для иерархии и быстрого поиска отсортированных данных;
- графы (graphs): моделируют любые связи, от соцсетей до карт дорог.
- сортировки (sorting): приводят хаос в порядок, самые нужные – QuickSort и MergeSort;
- бинарный поиск (binary search):
- обходы графов (BFS/DFS): находят кратчайший путь и исследуют все связи.
Зачем всё это? Это не просто «задачи для собесов». Да, на любом техническом интервью вас спросят про структуры данных. Но цель — не завалить вас, а проверить ваш фундамент. Понять, способны ли вы думать об эффективности (та самая O-нотация) и выбирать правильный инструмент для задачи.
1) Писать быстрый код. Разница между O(n²) и O(log n) — это разница между приложением, которое «тормозит», и приложением, которое «летает».
2) Создавать масштабируемые решения. Ваш проект выдержит нагрузку в 10, 100 или 1000 раз больше, потому что вы заложили правильную архитектуру данных.
3) Быть инженером, а не просто кодером. Вы будете принимать осознанные решения, а не наугад подбирать то, что вроде бы работает. Это основа, которая отличает профессионала от новичка.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤64❤🔥9🔥5🥰4🗿3💯1👀1
Дам Вам 10 полезных инструментов. Они все на картинке, но если хотите знать что и зачем - далее инфа. Если только начинаете учиться - обратите внимание, уделите время
- requests (http-запросы): для простой и понятной работы с API и сайтами;
- pandas (анализ данных): царь-библиотека для любых таблиц (CSV, Excel);
- pillow (изображения): режет, меняет и накладывает фильтры на картинки;
- fastapi (веб-api): молниеносное создание API с готовой документацией;
- pydantic (валидация): железобетонная проверка данных через тайп-хинты;
- loguru (логирование): красивые и полезные логи без сложной настройки;
- tqdm (прогресс-бары): добавляет шкалу загрузки в любой цикл одной строкой;
- pyautogui (автоматизация gui): управляет мышкой и клавиатурой вместо тебя;
- beautifulsoup4 (скрапинг): вытащит любые нужные данные с веб-страниц;
- schedule (планировщик): запуск функций по расписанию простым языком.
Использование этих библиотек не только ускоряет разработку. Оно делает ваш код чище, надежнее и более читаемым, так как вы опираетесь на проверенные и оптимизированные решения, созданные экспертами. Пользуйтесь.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤51🔥8😁5👍4❤🔥2💘1
На самом деле, даже при 30 часах в неделю выгорают - не только из‑за часов, но и из‑за потери контроля, смысла и несоответствия ценностей между тобой и работой.
1. "Безжалостные границы".
После 19:00 телеграм и почту слушаю только при «пожаре». В выходные - офлайн. Сон наладился, тревожность стала ниже.
2. Трекинг «утомляет».
Фиксирую, где «горелка»: дедлайн, переключение задач, изменения требований или «техностресс». Записываю в дневник и постепенно устраняю корни. Это работает против эмоционального истощения и когнитивной перегрузки.
3. Перезарядка через творчество.
Оставляю 20 % времени на пет‑проекты: микросервис на Go, утилита CLI, попытки в функционалку (например, Elm, Haskell), а не в JIRA. Это дыхание - случается кайф, возвращается драйв.
4. Движуха вне экрана.
Бег, йога, прогулки в лесу или обрезание деревьев у родственников - сброс тревожности, рост креативности. Это не спорт, это декомпресс. Я лично купил себе на новый дом набор из гантелей и штанги - то, что я люблю. И сейчас это больше про тело, а про голову.
5. Прожить "upgrade: reboot".
Когда поймал и понял, что есть выгорание - попросил отпуск, полностью пропал, выключил соцсети и уведомления. Через 6 недель вернулся с головой, мозг начал работать, приходили идеи. Иногда нужно не «кейсы закатать», а дать себе reset.
Помните, что код должен служить не тюрьмой, а инструментом для жизни. А выгорание - это не признак слабости, это кризис системной несовместимости.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥85❤33❤🔥10🤔2✍1👍1🤬1🆒1
2 года назад была только 1 модель, а теперь - вон сколько их. Теперь ChatGPT - не просто чат-бот, а универсальный цифровой ассистент для текста, аудио, картинки, кода и анализа данных. Какую выбрать модель, для каких целей?
1) GPT-4o: реал-тайм чат, текст+голос+картинка. Для всех, кто хочет гибкости: быстрая переписка, генерация идей, помощь с почтой, перевод.
2) GPT-4.5: креативные задачи, сложные тексты и сценарии, эмоциональный интеллект. Креаторы, сценаристы, исследователи - это для вас. Мне часто с темой для видео помогает.
3) o3: глубокая аналитика, стратегия, длинные цепочки рассуждений, сложные вычисления и код. Для бизнес-аналитиков, продвинутых задач.
4) o4-mini: быстрые ответы, STEM, программирование, визуальные задачи. Технари, разработчики, учёные, студенты - целевая.
5) o4-mini-high: программирование, сложная математика, технический разбор. Советую разработчикам, Data Science в частности.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤32🐳12👍7❤🔥3🤗2😁1🤬1