Xiaomi представила складную плиту, которая может разогревать еду и напитки. Такой прибор легко заменит микроволновку.
У плиты несколько режимов, а столешница не нагреется, благодаря специальной изоляции. Кроме того, Mijia Foldable Food Warming Board занимает очень мало места.
Стоит девайс всего 6200 рублей. Уже бежим на маркетплейсы.
У плиты несколько режимов, а столешница не нагреется, благодаря специальной изоляции. Кроме того, Mijia Foldable Food Warming Board занимает очень мало места.
Стоит девайс всего 6200 рублей. Уже бежим на маркетплейсы.
❤3🤯3
This media is not supported in your browser
VIEW IN TELEGRAM
Нейронка сгенерила нас после тяжёлого рабочего дня. Перешлите коллегам.
❤3🔥3
30 дней Python 👩💻
Это пошаговый гайд по изучению Python в GitHub-репозитории. Несмотря на название, авторы предупреждают, что его прохождение может занять и более 100 дней (но можно всё-таки постараться уложиться в 30).
⛓ Ознакомиться: тут
Блог разраба со стажем
Это пошаговый гайд по изучению Python в GitHub-репозитории. Несмотря на название, авторы предупреждают, что его прохождение может занять и более 100 дней (но можно всё-таки постараться уложиться в 30).
⛓ Ознакомиться: тут
Блог разраба со стажем
❤21🤯8🔥3😁2👍1
Типизация в Python с использованием модуля typing
В
Зачем использовать типизацию?
1. Ясность и понятность кода: Добавление аннотаций типов помогает читателям быстро понять, какие данные ожидаются и какие типы переменных возвращаются из функций.
2. Предотвращение ошибок: Статические анализаторы кода, такие как
3. Документация кода: Подсказки типов могут служить формой документации, особенно полезной при совместной разработке. Разработчики могут быстро понимать интерфейсы функций и классов.
Пример использования типизации для переменных и функций:
Здесь
Типизация делает ваш код более структурированным, улучшает его читабельность и может служить документацией, облегчая разработку.
Блог разраба со стажем
В
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
Работаем со временем без головной боли
При работе со временем и датами у встроенных модулей есть несколько неприятных моментов:
— Их слишком много:
— В них слишком много типов:
И вот на днях я наткнулся на пакет arrow, который их решает. Во-первых, там есть все необходимое. Во-вторых, все объекты имеют один и тот же тип
Большой плюс в том, что пакет совместим с основными встроенными типами. Например, выше я преобразовал
Еще из приятных бонусов: там есть функция
Блог разраба со стажем
При работе со временем и датами у встроенных модулей есть несколько неприятных моментов:
— Их слишком много:
datetime, time, calendar, dateutil, pytz и другие; — В них слишком много типов:
date, time, datetime, tzinfo, timedelta, relativedelta и т. д. И вот на днях я наткнулся на пакет arrow, который их решает. Во-первых, там есть все необходимое. Во-вторых, все объекты имеют один и тот же тип
Arrow. Большой плюс в том, что пакет совместим с основными встроенными типами. Например, выше я преобразовал
datetime в Arrow и обратно. Еще из приятных бонусов: там есть функция
humanize, которая конвертирует время в читаемый текст. Блог разраба со стажем
🔥61❤39👍11🤯10😁2
Использование списков в качестве стеков
Стек – абстрактный тип данных, представляющий собой список элементов, организованных по принципу LIFO (last in – first out). В переводе с английского "последним пришёл – первым вышел".
Списки в Python имеют удобные встроенные методы, которых достаточно для реализации такой структуры данных. Для добавления элемента в конец стека используем метод
Программный вид стека применяется для обхода структур по типу графов и деревьев. При реализации рекурсивных функций также будет применяться стек, но в таком случае уже его аппаратный вид.
Блог разраба со стажем
Стек – абстрактный тип данных, представляющий собой список элементов, организованных по принципу LIFO (last in – first out). В переводе с английского "последним пришёл – первым вышел".
Списки в Python имеют удобные встроенные методы, которых достаточно для реализации такой структуры данных. Для добавления элемента в конец стека используем метод
append, для извлечения – pop.Программный вид стека применяется для обхода структур по типу графов и деревьев. При реализации рекурсивных функций также будет применяться стек, но в таком случае уже его аппаратный вид.
Блог разраба со стажем
❤53🤯21😁5🔥1
Добавляем классу большую функциональность
На прошлой неделе мы объясняли декоратор
Зачем использовать. Статические методы делают код более читабельным и повторно используемым. Его также удобнее использовать для импорта по сравнению с обычными функциями, поскольку функцию не нужно отдельно импортировать.
В чем же разница?
Блог разраба со стажем
На прошлой неделе мы объясняли декоратор
@classmethod, а сейчас рассмотрим @staticmethod. @staticmethod можно воспринимать как метод, который "не знает, к какому классу относится". Он просто получает переданные аргументы, без неявного первого аргумента, и его определение не изменяется через наследование. Еще раз: статические методы прикреплены к классу лишь для удобства — и не могут менять состояние ни класса, ни его экземпляра.Зачем использовать. Статические методы делают код более читабельным и повторно используемым. Его также удобнее использовать для импорта по сравнению с обычными функциями, поскольку функцию не нужно отдельно импортировать.
В чем же разница?
@classmethod используется в суперклассе для определения того, как метод должен вести себя, когда он вызывается разными дочерними классами. @staticmethod используется, когда мы хотим вернуть объект, независимо от вызываемого дочернего класса.Блог разраба со стажем
❤63🤯31😁10🔥5
Выполняем код по расписанию
Часто от программиста требуется написать код, который должен выполняться в определенный промежуток времени или по расписанию. Для решения этой проблемы существует много решений, но одно из них — это библиотека aiocron.
Она позволяет просто описать в декораторе конфигурацию расписания, согласно которому метод будет запускаться. В примере выше функция
Блог разраба со стажем
Часто от программиста требуется написать код, который должен выполняться в определенный промежуток времени или по расписанию. Для решения этой проблемы существует много решений, но одно из них — это библиотека aiocron.
Она позволяет просто описать в декораторе конфигурацию расписания, согласно которому метод будет запускаться. В примере выше функция
attime будет выполняться каджую минуту с 6 утра до 10 вечера в рабочие дни недели. Подробнее о написании своих расписаний можно почитать тут.Блог разраба со стажем
🔥39❤35👍10🤯10
Дескрипторы
Дескриптор – это атрибут объекта со “связанным поведением”, то есть такой атрибут, при доступе к которому его поведение переопределяется методом протокола дескриптора. Если хотя бы один из этих методов определен в объекте, то можно сказать, что этот метод – дескриптор.
Для того, чтобы определить свой собственный дескриптор, обычно определяют три специальных метода класса
Де После этого можно создать новый класс и в атрибут этого класса записать объект типа дескриптор.
У данного объекта будет переопределено поведение при доступе к атрибуту (
Блог разраба со стажем
Дескриптор – это атрибут объекта со “связанным поведением”, то есть такой атрибут, при доступе к которому его поведение переопределяется методом протокола дескриптора. Если хотя бы один из этих методов определен в объекте, то можно сказать, что этот метод – дескриптор.
Для того, чтобы определить свой собственный дескриптор, обычно определяют три специальных метода класса
__get__,ДескриптоиликрипторыДе После этого можно создать новый класс и в атрибут этого класса записать объект типа дескриптор.
У данного объекта будет переопределено поведение при доступе к атрибуту (
__get__), при присваивании значений (__set__) или при удалении (__delete__).Блог разраба со стажем
❤48🤯21😁9🔥4
Строим графики
Для построения графиков в Python существует библиотека Matplotlib. Это мощный инструмент для визуализации данных.
Сначала нам нужен массив с данными, которые мы хотим изобразить на графике. Это может быть, например, список или
Далее метод
Метод
Пример графика можно посмотреть здесь, а официальную документацию по Matplotlib можно почитать тут.
Блог разраба со стажем
Для построения графиков в Python существует библиотека Matplotlib. Это мощный инструмент для визуализации данных.
Сначала нам нужен массив с данными, которые мы хотим изобразить на графике. Это может быть, например, список или
numpy массив.Далее метод
plt.plot(data) принимает наши данные и строит график в виде точек с координатами из массива и обьединяет их линиями.Метод
plt.show() откроет графическое окно с изображенным графиком.Пример графика можно посмотреть здесь, а официальную документацию по Matplotlib можно почитать тут.
Блог разраба со стажем
❤78🤯37🔥25😁11👍4
FastAPI — основы backend разработки на Python
Курс нацелен на освоение базовых навыков backend разработки на фреймворке FastAPI. Вы поймете, какие технологии необходимо освоить, чтобы стать Junior backend Python разработчиком, а также изучите основы этих технологий на примере полноценного проекта — аналога приложения Тинькофф Инвестиции.
📹 Cмотреть курс: Stepik
Блог разраба со стажем
Курс нацелен на освоение базовых навыков backend разработки на фреймворке FastAPI. Вы поймете, какие технологии необходимо освоить, чтобы стать Junior backend Python разработчиком, а также изучите основы этих технологий на примере полноценного проекта — аналога приложения Тинькофф Инвестиции.
📹 Cмотреть курс: Stepik
Блог разраба со стажем
🔥61❤41👍18
⌨️ Подробный гайд по созданию микросервисов с использованием Spring Boot.
В этом учебном пособии показано как создавать микросервис с использованием Spring Boot 3, Spring Cloud и базы данных PostgreSQL.
В этом микросервисном проекте вы изучите такие важные понятия, как
⛓ Ознакомиться: тут
Блог разраба со стажем
В этом учебном пособии показано как создавать микросервис с использованием 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 — это полноценная среда разработки, оснащённая множеством полезных ИИ-инструментов, созданных специально для программистов
Одним нажатием клавиши она может дописать целый блок кода, учитывая задачу, или ответить на любой вопрос по проекту
⛓ Ознакомиться: тут
Блог разраба со стажем
CursorAI — это полноценная среда разработки, оснащённая множеством полезных ИИ-инструментов, созданных специально для программистов
Одним нажатием клавиши она может дописать целый блок кода, учитывая задачу, или ответить на любой вопрос по проекту
⛓ Ознакомиться: тут
Блог разраба со стажем
🔥18❤8👍3🤯1
Большая актуальная базу бесплатных API, которая обновляется ежедневно
Алгоритмы присваивают рейтинг каждому API на основе надежности, частоты ошибок и времени отклика
Если API перестает работать или становится платным, он теряет рейтинг и удаляется с сайта. Это полезный ресурс для студентов и разработчиков, которые ищут доступные и рабочие API
⛓ Ознакомиться: Тык
Блог разраба со стажем
Алгоритмы присваивают рейтинг каждому API на основе надежности, частоты ошибок и времени отклика
Если API перестает работать или становится платным, он теряет рейтинг и удаляется с сайта. Это полезный ресурс для студентов и разработчиков, которые ищут доступные и рабочие API
⛓ Ознакомиться: Тык
Блог разраба со стажем
❤47🔥25👍9
Курс «Уроки по GIT»
Курс по GIT начинает с основ: введения, установки и привязки ssh ключа. Далее учат создавать проект с Create React App и работать с gitignore, исключая папку idea. Обсуждается размещение проекта на GitHub через консоль и WebStorm, а также основы коммитов и их откат.
В программе также учат работать с удаленным репозиторием, клонировать, обновлять и создавать pull request. Углубленное изучение ветвлений включает их создание, слияние и разрешение конфликтов. Завершается курс созданием нескольких аккаунтов GitHub на одном компьютере.
📹 Cмотреть курс: тык
Блог разраба со стажем
Курс по GIT начинает с основ: введения, установки и привязки ssh ключа. Далее учат создавать проект с Create React App и работать с gitignore, исключая папку idea. Обсуждается размещение проекта на GitHub через консоль и WebStorm, а также основы коммитов и их откат.
В программе также учат работать с удаленным репозиторием, клонировать, обновлять и создавать pull request. Углубленное изучение ветвлений включает их создание, слияние и разрешение конфликтов. Завершается курс созданием нескольких аккаунтов GitHub на одном компьютере.
📹 Cмотреть курс: тык
Блог разраба со стажем
🔥86❤41👍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
Блог разраба со стажем
Поиграть можно прямо на сайте или установить локально с 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