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

Сотрудничество: clck.ru/3RF3WL
Download Telegram
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
This media is not supported in your browser
VIEW IN TELEGRAM
Cегодня играем в Oh My God Git — это веселая и увлекательная игра с открытым исходным кодом, которая с помощью карточек объясняет логику работы GIT и помогает освоить его на практике.

Поиграть можно прямо на сайте или установить локально с GitHub

Блог разраба со стажем
48🔥24👍11
Сортировка списков по ключу

У списков есть метод sort(), который сортирует элементы. Также есть аргумент reverse, с помощью которого можно отсортировать в обратном порядке при значении True.

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

В коде на картинке у нас есть список из словарей, которые содержать описания машин. И в качестве мы отсортировали список по годам их выпуска, то есть по ключу 'year'.

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

Блог разраба со стажем
61🤯30😁8🔥4
Шпаргалка по сложности алгоритмов

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

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

Блог разраба со стажем
82🤯37😁9🔥5
This media is not supported in your browser
VIEW IN TELEGRAM
👻 Поступил весьма информативный материал по основам алгоритмов.

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

🎆 Данный ресурс интерактивный и включает секции с галочками. Среди тем: методы проектирования алгоритмов, решение реальных программных задач, последовательные алгоритмы и многое другое.

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

Блог разраба со стажем
54🤯30😁8🔥4