Блог разраба со стажем
40.8K subscribers
467 photos
24 videos
1.26K links
Тут будет о моих разработках и историях, в который я попадаю - ваш Евгений.

Сотрудничество: clck.ru/3RF3WL
Download Telegram
Steam на очереди по блокировке? Роскомнадзор внёс в реестр запрещённых сайтов несколько страниц сообщества.

Давай, добивай.
😁3🤯1
This media is not supported in your browser
VIEW IN TELEGRAM
Россия, 2024 год, юзеры пытаются запустить заблокированные сервисы.
😁32🤯1
Убираем фон с картинки в пару кликов. Работает прямо в браузере.

Закидываете изображение, дальше всё делает ИИ. Идеально, если под рукой нет специальной программы.

Пользуемся здесь.
🔥3😁2
Быстро восстанавливаем доступ к Discord. Голосовой чат будет работать без проблем.

Всё очень просто:

• Регистрируемся и скачиваем GearUP Booster.
• Выбираем Discord и нажимаем «сменить узел».
• Готово, можно пользоваться.

Перешлите друзьям.
😁21
Xiaomi представила складную плиту, которая может разогревать еду и напитки. Такой прибор легко заменит микроволновку.

У плиты несколько режимов, а столешница не нагреется, благодаря специальной изоляции. Кроме того, Mijia Foldable Food Warming Board занимает очень мало места.

Стоит девайс всего 6200 рублей. Уже бежим на маркетплейсы.
3🤯3
This media is not supported in your browser
VIEW IN TELEGRAM
Нейронка сгенерила нас после тяжёлого рабочего дня. Перешлите коллегам.
3🔥3
Discord могут разблокировать. Команда мессенджера в курсе проблем в России и Турции. Она уже ищет решение.

Верим, надеемся, ждём.
4👍3
30 дней Python 👩‍💻

Это пошаговый гайд по изучению Python в GitHub-репозитории. Несмотря на название, авторы предупреждают, что его прохождение может занять и более 100 дней (но можно всё-таки постараться уложиться в 30).

Ознакомиться: тут

Блог разраба со стажем
21🤯8🔥3😁2👍1
Типизация в Python с использованием модуля typing

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

Зачем использовать типизацию?

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

2. Предотвращение ошибок: Статические анализаторы кода, такие как mypy, могут обнаруживать потенциальные ошибки до выполнения программы, что уменьшает количество багов.

3. Документация кода: Подсказки типов могут служить формой документации, особенно полезной при совместной разработке. Разработчики могут быстро понимать интерфейсы функций и классов.

Пример использования типизации для переменных и функций:
from typing import List, Tuple

def multiply(a: int, b: int) -> int:
return a * b

def process_list(data: List[int]) -> Tuple[int, int]:
sum_values = sum(data)
average = sum_values / len(data)
return sum_values, average

# Пример использования
result1 = multiply(5, 3)# Ожидается int
data_list = [1, 2, 3, 4, 5]
result2 = process_list(data_list)# Ожидается Tuple[int, int]


Здесь a: int и b: int указывают на типы аргументов функции, а -> int и -> Tuple[int, int] - на типы возвращаемых значений. Это помогает читателям кода лучше понимать ожидаемую структуру данных и типы переменных.

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

Блог разраба со стажем
57🔥28👍11
Работаем со временем без головной боли

При работе со временем и датами у встроенных модулей есть несколько неприятных моментов:

— Их слишком много: datetime, time, calendar, dateutil, pytz и другие;
— В них слишком много типов: date, time, datetime, tzinfo, timedelta, relativedelta и т. д.

И вот на днях я наткнулся на пакет arrow, который их решает. Во-первых, там есть все необходимое. Во-вторых, все объекты имеют один и тот же тип Arrow.

Большой плюс в том, что пакет совместим с основными встроенными типами. Например, выше я преобразовал datetime в Arrow и обратно.

Еще из приятных бонусов: там есть функция humanize, которая конвертирует время в читаемый текст.

Блог разраба со стажем
🔥6139👍11🤯10😁2
Использование списков в качестве стеков

Стек – абстрактный тип данных, представляющий собой список элементов, организованных по принципу LIFO (last in – first out). В переводе с английского "последним пришёл – первым вышел".

Списки в Python имеют удобные встроенные методы, которых достаточно для реализации такой структуры данных. Для добавления элемента в конец стека используем метод append, для извлечения – pop.

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

Блог разраба со стажем
53🤯21😁5🔥1
Добавляем классу большую функциональность

На прошлой неделе мы объясняли декоратор @classmethod, а сейчас рассмотрим @staticmethod.

@staticmethod можно воспринимать как метод, который "не знает, к какому классу относится". Он просто получает переданные аргументы, без неявного первого аргумента, и его определение не изменяется через наследование. Еще раз: статические методы прикреплены к классу лишь для удобства — и не могут менять состояние ни класса, ни его экземпляра.

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

В чем же разница?
@classmethod используется в суперклассе для определения того, как метод должен вести себя, когда он вызывается разными дочерними классами.
@staticmethod используется, когда мы хотим вернуть объект, независимо от вызываемого дочернего класса.

Блог разраба со стажем
63🤯31😁10🔥5
Выполняем код по расписанию

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

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

Блог разраба со стажем
🔥3935👍10🤯10
Дескрипторы

Дескриптор – это атрибут объекта со “связанным поведением”, то есть такой атрибут, при доступе к которому его поведение переопределяется методом протокола дескриптора. Если хотя бы один из этих методов определен в объекте, то можно сказать, что этот метод – дескриптор.

Для того, чтобы определить свой собственный дескриптор, обычно определяют три специальных метода класса __get__,Дескриптоиликрипторы

Де После этого можно создать новый класс и в атрибут этого класса записать объект типа дескриптор.

У данного объекта будет переопределено поведение при доступе к атрибуту (__get__), при присваивании значений (__set__) или при удалении (__delete__).

Блог разраба со стажем
48🤯21😁9🔥4
Строим графики

Для построения графиков в Python существует библиотека Matplotlib. Это мощный инструмент для визуализации данных.

Сначала нам нужен массив с данными, которые мы хотим изобразить на графике. Это может быть, например, список или numpy массив.

Далее метод plt.plot(data) принимает наши данные и строит график в виде точек с координатами из массива и обьединяет их линиями.

Метод plt.show() откроет графическое окно с изображенным графиком.

Пример графика можно посмотреть здесь, а официальную документацию по Matplotlib можно почитать тут.

Блог разраба со стажем
78🤯37🔥25😁11👍4
FastAPI — основы backend разработки на Python

Курс нацелен на освоение базовых навыков backend разработки на фреймворке FastAPI. Вы поймете, какие технологии необходимо освоить, чтобы стать Junior backend Python разработчиком, а также изучите основы этих технологий на примере полноценного проекта — аналога приложения Тинькофф Инвестиции.

📹 Cмотреть курс: Stepik

Блог разраба со стажем
🔥6141👍18
⌨️ Подробный гайд по созданию микросервисов с использованием Spring Boot.

В этом учебном пособии показано как создавать микросервис с использованием Spring Boot 3, Spring Cloud и базы данных PostgreSQL.

В этом микросервисном проекте вы изучите такие важные понятия, как API Gateway, Config Server, Discovery Server, и практически реализуете два реальных микросервиса - Student и School.

Ознакомиться: тут

Блог разраба со стажем
49🤯21😁11🔥3
This media is not supported in your browser
VIEW IN TELEGRAM
Найден лучший способ программировать с помощью ИИ

CursorAI — это полноценная среда разработки, оснащённая множеством полезных ИИ-инструментов, созданных специально для программистов

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

Ознакомиться: тут

Блог разраба со стажем
🔥188👍3🤯1
Большая актуальная базу бесплатных API, которая обновляется ежедневно

Алгоритмы присваивают рейтинг каждому API на основе надежности, частоты ошибок и времени отклика

Если API перестает работать или становится платным, он теряет рейтинг и удаляется с сайта. Это полезный ресурс для студентов и разработчиков, которые ищут доступные и рабочие API

Ознакомиться: Тык

Блог разраба со стажем
47🔥25👍9
Курс «Уроки по GIT»

Курс по GIT начинает с основ: введения, установки и привязки ssh ключа. Далее учат создавать проект с Create React App и работать с gitignore, исключая папку idea. Обсуждается размещение проекта на GitHub через консоль и WebStorm, а также основы коммитов и их откат.

В программе также учат работать с удаленным репозиторием, клонировать, обновлять и создавать pull request. Углубленное изучение ветвлений включает их создание, слияние и разрешение конфликтов. Завершается курс созданием нескольких аккаунтов GitHub на одном компьютере.

📹 Cмотреть курс: тык

Блог разраба со стажем
🔥8641👍16
Создаем бесконечный итератор

Функция cycle() из itertools принимает на вход итерируемый объект и создает бесконечный итератор, циклически возвращающий элементы данного объекта.

Фишка заключается в том, что когда элементы последовательности заканчиваются, итерация начинается вновь с первого элемента.

Но если вы проходитесь циклом по такому итератору, то важно предусмотреть выход из цикла, иначе он станет бесконечным (как у нас в первом случае на картинке).

Мы также можем воспользоваться islice(), который вернет итератор по подмножеству переданного объекта.

Блог разраба со стажем
51🤯24😁6🔥4