#ЧеКак
🤔 Для чего используется IntegerChoices?
🚩 Основные плюсы
🟠 Читаемость кода
Значения выбора имеют человекочитаемые названия, что делает код более понятным.
🟠 Поддержка валидации
Django автоматически проверяет, что значение поля соответствует одному из допустимых значений.
🟠 Удобство использования в админке
В Django admin интерфейсе выпадающий список с человекочитаемыми названиями делает работу с данными удобнее.
🚩 Пример использования
1⃣ Создание класса
2⃣ Использование
3⃣ Пример работы с моделью
👉 Новости 👉 Платформа
IntegerChoices
в Django используется для создания выбора из ограниченного набора целочисленных значений для поля модели. Это полезно, когда вам нужно ограничить допустимые значения для поля модели определенными целыми числами, и при этом иметь удобные человекочитаемые названия для этих значений.Значения выбора имеют человекочитаемые названия, что делает код более понятным.
Django автоматически проверяет, что значение поля соответствует одному из допустимых значений.
В Django admin интерфейсе выпадающий список с человекочитаемыми названиями делает работу с данными удобнее.
IntegerChoices
from django.db import models
class Status(models.IntegerChoices):
PENDING = 1, 'Pending'
APPROVED = 2, 'Approved'
REJECTED = 3, 'Rejected'
IntegerChoices
в моделиfrom django.db import models
class Application(models.Model):
status = models.IntegerField(choices=Status.choices, default=Status.PENDING)
name = models.CharField(max_length=100)
submitted_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return f"{self.name} - {self.get_status_display()}"
# Создание новой записи
app = Application.objects.create(name='John Doe')
# Проверка статуса
print(app.status) # 1
print(app.get_status_display()) # 'Pending'
# Изменение статуса
app.status = Status.APPROVED
app.save()
# Проверка обновленного статуса
print(app.status) # 2
print(app.get_status_display()) # 'Approved'
Please open Telegram to view this post
VIEW IN TELEGRAM
🤓 Какое из утверждений
верно относительно использования замыканий
(closures) в Python?
верно относительно использования замыканий
(closures) в Python?
Anonymous Quiz
30%
Замыкания должны быть объявлены с использованием ключевого слова global
5%
Замыкания могут изменять неизменяемые объекты
55%
Замыкания позволяют сохранять состояние функции между вызовами
10%
Замыкания используются только для работы с глобальными переменными
#ЛитКод
Задача: 515. Find Largest Value in Each Tree Row
Дан корень двоичного дерева, верните массив наибольших значений в каждой строке дерева (индексация с 0).
Пример:
👨💻 Алгоритм:
1⃣ Если корень дерева равен null (пустое дерево), верните пустой список. Инициализируйте список ans для хранения результатов и очередь с корнем дерева для выполнения поиска в ширину (BFS).
2⃣ Выполните BFS, пока очередь не пуста: инициализируйте currMax минимальным значением и сохраните длину очереди в currentLength. Повторите currentLength раз: удалите узел из очереди, обновите currMax, если значение узла больше. Для каждого дочернего узла, если он не равен null, добавьте его в очередь.
3⃣ Добавьте currMax в ans. Верните ans.
😊 Решение:
👉 Новости 👉 Платформа
Задача: 515. Find Largest Value in Each Tree Row
Дан корень двоичного дерева, верните массив наибольших значений в каждой строке дерева (индексация с 0).
Пример:
Input: root = [1,3,2,5,3,null,9]
Output: [1,3,9]
from collections import deque
from typing import List, Optional
class Solution:
def largestValues(self, root: Optional[TreeNode]) -> List[int]:
if not root:
return []
ans = []
queue = deque([root])
while queue:
current_length = len(queue)
curr_max = float("-inf")
for _ in range(current_length):
node = queue.popleft()
curr_max = max(curr_max, node.val)
if node.left:
queue.append(node.left)
if node.right:
queue.append(node.right)
ans.append(curr_max)
return ans
Please open Telegram to view this post
VIEW IN TELEGRAM
🤓 Какое из утверждений
верно относительно использования протокола контекстных менеджеров в
Python?
верно относительно использования протокола контекстных менеджеров в
Python?
Anonymous Quiz
13%
Контекстные менеджеры используются только для работы с файлами
61%
Контекстные менеджеры освобождают ресурсы автоматически после выхода из блока with
9%
Контекстные менеджеры нельзя создавать самостоятельно
17%
Контекстные менеджеры работают только с асинхронными операциями
#ЧеКак
🤔 Что такое Миксин?
Миксин (Mixin) – это класс, предназначенный для предоставления определённых методов для использования другими классами, без необходимости становиться родительским классом для этих классов. Главная цель миксина - реализация функциональности, которую можно легко подключить к другому классу. Миксины позволяют разработчикам использовать композицию для добавления функций в классы вместо наследования, что делает структуру кода гибче и модульнее.
👉 Новости 👉 Платформа
Миксин (Mixin) – это класс, предназначенный для предоставления определённых методов для использования другими классами, без необходимости становиться родительским классом для этих классов. Главная цель миксина - реализация функциональности, которую можно легко подключить к другому классу. Миксины позволяют разработчикам использовать композицию для добавления функций в классы вместо наследования, что делает структуру кода гибче и модульнее.
Please open Telegram to view this post
VIEW IN TELEGRAM
#ЧеКак
🤔 Какие типы HTTP запросов знаешь? В чем их отличия?
Типы: GET (получение данных), POST (отправка данных), PUT (обновление ресурса), DELETE (удаление ресурса), PATCH (частичное обновление). GET передаёт параметры в URL, а POST отправляет данные в теле запроса. PUT и DELETE изменяют состояние сервера, а PATCH обновляет только указанные части ресурса.
👉 Новости 👉 Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
🤓 Какой оператор в Python
используется для получения остатка от деления?
используется для получения остатка от деления?
Anonymous Quiz
4%
/
15%
//
81%
%
0%
^
#ЧеКак
🤔 Как работает хеш-таблица?
Это структура данных, которая хранит пары ключ-значение и использует хеш-функцию для вычисления индекса.
Хеширование: ключ преобразуется в числовое значение (хеш).
Размещение: хеш определяет индекс, куда сохраняется значение.
Коллизии: если два ключа имеют одинаковый хеш, используется метод разрешения коллизий (связанный список, открытая адресация).
Хеш-таблицы обеспечивают быстрый доступ (O(1)) к данным при правильной реализации.
👉 Новости 👉 Платформа
Это структура данных, которая хранит пары ключ-значение и использует хеш-функцию для вычисления индекса.
Хеширование: ключ преобразуется в числовое значение (хеш).
Размещение: хеш определяет индекс, куда сохраняется значение.
Коллизии: если два ключа имеют одинаковый хеш, используется метод разрешения коллизий (связанный список, открытая адресация).
Хеш-таблицы обеспечивают быстрый доступ (O(1)) к данным при правильной реализации.
Please open Telegram to view this post
VIEW IN TELEGRAM
#Вакансии
👨💻 Python Developer
Локация: Удаленно в РФ
Компания: Медиа Ком
ЗП: от 150 000 до 250 000 р.
Занятость: Полная
🚩 Обязанности
▪️Командная web-разработка;
▪️Участие в проектировании архитектуры приложений и моделей данных;
▪️Интеграция с внешними и внутренними API. Поддержка реализованного функционала;
▪️Оптимизация сервисов под высокие нагрузки;
▪️Сопровождение и документирование написанного кода;
▪️Code-review.
🚩 Требования
▪️ Уверенное владение Python (версии 3+)
▪️Опыт разработки клиент-серверных веб-приложений;
▪️Уверенное знание SQL; Git; Linux;
▪️Понимание алгоритмов и структур данных; Понимание принципов ООП.
🚩 Желательно
▪️Знание Django и Django REST Framework;
▪️Знание Flask, FastApi;
▪️Знание aiohttp, асинхронное программирование;
▪️Знание SQLAlchemy;
▪️Опыт работы с PostgreSQL, индексы и оптимизация запросов;
▪️Понимание и умение пользоваться паттернами проектирования.
🚩 Что мы предлагаем
▪️Удаленный формат работы;
▪️Работу в команде увлеченных и профессиональных людей;
▪️Решение сложных и интересных задач;
▪️График работы: 5/2 (09-18:00 МСК!);
▪️Полностью белую ЗП (отталкиваемся от ваших ожиданий);
💬 Резюме отправлять: @ElenBondareva
👉 Новости 👉 Платформа
Локация: Удаленно в РФ
Компания: Медиа Ком
ЗП: от 150 000 до 250 000 р.
Занятость: Полная
▪️Командная web-разработка;
▪️Участие в проектировании архитектуры приложений и моделей данных;
▪️Интеграция с внешними и внутренними API. Поддержка реализованного функционала;
▪️Оптимизация сервисов под высокие нагрузки;
▪️Сопровождение и документирование написанного кода;
▪️Code-review.
▪️ Уверенное владение Python (версии 3+)
▪️Опыт разработки клиент-серверных веб-приложений;
▪️Уверенное знание SQL; Git; Linux;
▪️Понимание алгоритмов и структур данных; Понимание принципов ООП.
▪️Знание Django и Django REST Framework;
▪️Знание Flask, FastApi;
▪️Знание aiohttp, асинхронное программирование;
▪️Знание SQLAlchemy;
▪️Опыт работы с PostgreSQL, индексы и оптимизация запросов;
▪️Понимание и умение пользоваться паттернами проектирования.
▪️Удаленный формат работы;
▪️Работу в команде увлеченных и профессиональных людей;
▪️Решение сложных и интересных задач;
▪️График работы: 5/2 (09-18:00 МСК!);
▪️Полностью белую ЗП (отталкиваемся от ваших ожиданий);
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Какая функция в Python используется для сортировки элементов в итерируемом объекте по ключу?
Anonymous Quiz
40%
sorted(iterable, key=function)
45%
sort(iterable, key=function)
4%
order(iterable, key=function)
11%
arrange(iterable, key=function)
#ЧеКак
🤔 Что такое шардирование?
Это метод горизонтального разделения базы данных, при котором данные распределяются между несколькими серверами (шардами).
🟠 Каждый шард содержит уникальный подмножество данных, обеспечивая масштабируемость и повышение производительности.
🟠 Используется для работы с большими объёмами данных и снижения нагрузки на один сервер.
👉 Новости 👉 Платформа
Это метод горизонтального разделения базы данных, при котором данные распределяются между несколькими серверами (шардами).
Please open Telegram to view this post
VIEW IN TELEGRAM
#ЛитКод
Задача: 621. Task Scheduler
Вам дан массив задач процессора, каждая из которых представлена буквами от A до Z, и время охлаждения, n. Каждый цикл или интервал позволяет завершить одну задачу. Задачи могут быть выполнены в любом порядке, но есть ограничение: одинаковые задачи должны быть разделены не менее чем n интервалами из-за времени охлаждения. Верните минимальное количество интервалов, необходимое для выполнения всех задач.
Пример:
👨💻 Алгоритм:
1⃣ Подсчитайте количество каждой задачи и найдите максимальное количество вхождений (maxFreq).
2⃣ Вычислите количество интервалов, необходимых для задач с maxFreq: (maxFreq - 1) * (n + 1) + countMaxFreq, где countMaxFreq - количество задач, имеющих maxFreq.
3⃣ Верните максимум между вычисленным значением и длиной массива задач, поскольку некоторые задачи могут заполнять интервал до n.
😊 Решение:
👉 Новости 👉 Платформа
Задача: 621. Task Scheduler
Вам дан массив задач процессора, каждая из которых представлена буквами от A до Z, и время охлаждения, n. Каждый цикл или интервал позволяет завершить одну задачу. Задачи могут быть выполнены в любом порядке, но есть ограничение: одинаковые задачи должны быть разделены не менее чем n интервалами из-за времени охлаждения. Верните минимальное количество интервалов, необходимое для выполнения всех задач.
Пример:
Input: tasks = ["A","A","A","B","B","B"], n = 2
Output: 8
from collections import Counter
def leastInterval(tasks, n):
task_counts = Counter(tasks)
max_freq = max(task_counts.values())
count_max_freq = list(task_counts.values()).count(max_freq)
return max(len(tasks), (max_freq - 1) * (n + 1) + count_max_freq)
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Какое исключение в Python возникает при попытке выполнить операцию, которая математически недопустима?
Anonymous Quiz
10%
ValueError
43%
MathError
16%
ArithmeticError
31%
ZeroDivisionError
#ЛитКод
Задача: 1496. Path Crossing
Дана строка path, где path[i] = 'N', 'S', 'E' или 'W', каждая из которых представляет движение на одну единицу на север, юг, восток или запад соответственно. Вы начинаете с точки (0, 0) на 2D плоскости и идете по пути, указанному в path.
Верните true, если путь пересекает сам себя в какой-либо точке, то есть если вы в какой-то момент окажетесь в месте, которое уже посещали ранее. В противном случае верните false.
Пример:
👨💻 Алгоритм:
1⃣ Инициализация переменных
Создать хэш-карту moves, которая сопоставляет символы 'N', 'S', 'E', 'W' с соответствующими значениями. Инициализировать множество visited с начальной точкой (0, 0). Установить начальные координаты x = 0 и y = 0.
2⃣ Проход по строке path
Для каждого символа c в path получить значения (dx, dy) из moves[c]. Обновить координаты: добавить dx к x и dy к y. Проверить, содержится ли текущая точка (x, y) в visited. Если да, вернуть true. Добавить текущую точку (x, y) в visited.
3⃣ Возврат результата
Если ни одна точка не пересекалась, вернуть false.
😊 Решение:
👉 Новости 👉 Платформа
Задача: 1496. Path Crossing
Дана строка path, где path[i] = 'N', 'S', 'E' или 'W', каждая из которых представляет движение на одну единицу на север, юг, восток или запад соответственно. Вы начинаете с точки (0, 0) на 2D плоскости и идете по пути, указанному в path.
Верните true, если путь пересекает сам себя в какой-либо точке, то есть если вы в какой-то момент окажетесь в месте, которое уже посещали ранее. В противном случае верните false.
Пример:
Input: path = "NESWW"
Output: true
Explanation: Notice that the path visits the origin twice.
Создать хэш-карту moves, которая сопоставляет символы 'N', 'S', 'E', 'W' с соответствующими значениями. Инициализировать множество visited с начальной точкой (0, 0). Установить начальные координаты x = 0 и y = 0.
Для каждого символа c в path получить значения (dx, dy) из moves[c]. Обновить координаты: добавить dx к x и dy к y. Проверить, содержится ли текущая точка (x, y) в visited. Если да, вернуть true. Добавить текущую точку (x, y) в visited.
Если ни одна точка не пересекалась, вернуть false.
class Solution:
def isPathCrossing(self, path: str) -> bool:
moves = {'N': (0, 1), 'S': (0, -1), 'E': (1, 0), 'W': (-1, 0)}
visited = {(0, 0)}
x = y = 0
for c in path:
dx, dy = moves[c]
x += dx
y += dy
if (x, y) in visited:
return True
visited.add((x, y))
return False
Please open Telegram to view this post
VIEW IN TELEGRAM
#ЧеКак
🤔 Чем хорош FastAPI?
🟠 Высокая производительность: использует Starlette и Pydantic, обеспечивая быстрый отклик.
🟠 Асинхронность: поддерживает async/await для обработки множества запросов одновременно.
🟠 Автогенерация документации: автоматически создаёт OpenAPI-спецификации и Swagger UI.
🟠 Удобство валидации: встроенная поддержка проверки данных.
👉 Новости 👉 Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Какой атрибут словаря в Python возвращает список кортежей, где каждый кортеж содержит пару ключ-значение?
Anonymous Quiz
17%
dict.keys()
25%
dict.values()
47%
dict.items()
11%
dict.pairs()
Разработчик Python под Linux (middle|senior)
Локация: Удаленно в РФ, весь мир (при наличии карты РФ для зп)
Компания: Ideco (Айдеко)
ЗП: от 250 000 до 400 000 р. (мидл), от 400 000 до 500 000 р. (сеньор)
Занятость: Полная
Ideco (Айдеко) аккредитованная ИТ-компания, разработчик софта в области информационной безопасности и сетевых технологий (Ideco NGFW, Ideco VPP)
Cтек технологий: Linux Fedora 35, Python 3.10 с постоянным обновлением до новой и стабильной версии, ETCD, Clickhouse, Asyncio, aiohttp.
Таски в разработке по-настоящему разные: от исправления шаблона конфига nginx до реализации приложений по обработке сетевого трафика. Придется постоянно работать на стыке бакенда и системы, поэтому знания Linux обязательны.
🚩 Обязанности:
🔵 Разрабатывать микросервисы с использованием Asyncio и AioHTTP;
🔵 Разрабатывать демоны по настройке и управлению сетью;
🔵 Писать системные утилиты в Linux;
🔵 Проектировать архитектуру системы и бэкендов;
🔵 Участвовать в code review;
🔵 Рефакторить - куда ж без этого.
🚩 Требования:
🔵 Опыт коммерческой разработки, уровень не ниже middle;
🔵 Уверенные навыки администрирования Linux;
🔵 Уверенное понимание сетевых протоколов, модели OSI, протоколов прикладного уровня (HTTP, TLS, FTP, SMB);
🔵 Опыт работы с Systemd;
🔵 Опыт работы с виртуализацией;
🔵 Опыт проектирования REST API.
🚩 От нас для тебя:
🔵 сложные, интересные проекты, минимум бюрократии
🔵 Сильная команда, постоянный обмен опытом
🔵 Понятные роли с прозрачными целями
🔵 Бонус за результативность
🔵 Внутренняя и внешняя реферальная программа
🔵 ДМС со стоматологией
🔵 Корпоративный английский
🔵 Конкурентная «белая» з/п
🔵 Возможность удаленной работы, в том числе за рубежом
🔵 Материальная помощь при важных событиях в жизни
💬 Резюме отправлять: @Drakonica
👉 Новости 👉 Платформа
Локация: Удаленно в РФ, весь мир (при наличии карты РФ для зп)
Компания: Ideco (Айдеко)
ЗП: от 250 000 до 400 000 р. (мидл), от 400 000 до 500 000 р. (сеньор)
Занятость: Полная
Ideco (Айдеко) аккредитованная ИТ-компания, разработчик софта в области информационной безопасности и сетевых технологий (Ideco NGFW, Ideco VPP)
Cтек технологий: Linux Fedora 35, Python 3.10 с постоянным обновлением до новой и стабильной версии, ETCD, Clickhouse, Asyncio, aiohttp.
Таски в разработке по-настоящему разные: от исправления шаблона конфига nginx до реализации приложений по обработке сетевого трафика. Придется постоянно работать на стыке бакенда и системы, поэтому знания Linux обязательны.
Please open Telegram to view this post
VIEW IN TELEGRAM
#ЧеКак
🤔 Для чего можно использовать Celery?
🟠 Это инструмент для выполнения задач в фоновом режиме.
🟠 Используется для отправки уведомлений, обработки данных, построения отчётов и выполнения длительных операций вне основного потока.
🟠 Поддерживает планирование задач и распределённую обработку через брокеры, такие как RabbitMQ или Redis.
👉 Новости 👉 Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Как в Python создать функцию, которая принимает произвольное количество позиционных аргументов?
Anonymous Quiz
51%
def func(*args):
21%
def func(**args):
5%
def func(*kwargs):
24%
def func(**kwargs):
#ЛитКод
Задача: 624. Maximum Distance in Arrays
Вам дано m массивов, где каждый массив отсортирован по возрастанию. Вы можете взять два целых числа из двух разных массивов (каждый массив выбирает одно) и вычислить расстояние. Мы определяем расстояние между двумя целыми числами a и b как их абсолютную разность |a - b|. Верните максимальное расстояние.
Пример:
👨💻 Алгоритм:
1⃣ Найдите минимальный элемент из всех первых элементов массивов и максимальный элемент из всех последних элементов массивов.
2⃣ Рассчитайте максимальное расстояние между минимальным и максимальным элементами.
3⃣ Верните это максимальное расстояние.
😎 Решение:
👉 Новости 👉 Платформа
Задача: 624. Maximum Distance in Arrays
Вам дано m массивов, где каждый массив отсортирован по возрастанию. Вы можете взять два целых числа из двух разных массивов (каждый массив выбирает одно) и вычислить расстояние. Мы определяем расстояние между двумя целыми числами a и b как их абсолютную разность |a - b|. Верните максимальное расстояние.
Пример:
Input: arrays = [[1,2,3],[4,5],[1,2,3]]
Output: 4
def maxDistance(arrays):
min_val = arrays[0][0]
max_val = arrays[0][-1]
max_distance = 0
for i in range(1, len(arrays)):
max_distance = max(max_distance, abs(arrays[i][-1] - min_val), abs(arrays[i][0] - max_val))
min_val = min(min_val, arrays[i][0])
max_val = max(max_val, arrays[i][-1])
return max_distance
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Какой метод используется для объединения всех элементов итерируемого объекта в одну строку?
Anonymous Quiz
15%
merge()
61%
join()
9%
concat()
15%
append()