Каждый Django-разработчик рано или поздно сталкивается с неожиданно «тяжелыми» запросами, способными превратить быстрое приложение в неповоротливого слона. Рассказываем, как с помощью django-pgactivity выследить и обезвредить такие запросы, прежде чем они создадут проблемы вашим пользователям.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Сколько раз ты избегал нового только потому, что боялся облажаться? Ошибка кажется концом света, но на деле это просто этап обучения. Сидя в зоне уверенности, ты никогда не узнаешь, насколько можешь быть сильнее, умнее, опытнее.
Please open Telegram to view this post
VIEW IN TELEGRAM
Статья объясняет, как создать приложение для автоматического анализа онлайн-встреч. Используя API BotHub (Whisper-1 + Claude 3.5 Sonnet), вы научитесь извлекать ключевые идеи, распределять задачи и генерировать отчёты в формате PDF.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Напишите функцию, которая принимает список чисел и возвращает второе наибольшее число. Если в списке меньше двух уникальных чисел, функция должна вернуть
None
.[10, 20, 4, 45, 99]
45
[5, 5, 5]
None
Решение задачи
def find_second_largest(numbers):
# Удаляем дубликаты и сортируем список в порядке убывания
unique_numbers = sorted(set(numbers), reverse=True)
# Если уникальных чисел меньше двух, возвращаем None
return unique_numbers[1] if len(unique_numbers) >= 2 else None
# Пример использования:
print(find_second_largest([10, 20, 4, 45, 99])) # Ожидаемый результат: 45
print(find_second_largest([5, 5, 5])) # Ожидаемый результат: None
Please open Telegram to view this post
VIEW IN TELEGRAM
Статья открывает цикл о кастомизации Django админки, начиная с основ. Рассматриваются ключевые шаблоны и механизм их поиска, чтобы упростить понимание структуры и облегчить работу с админкой.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Напишите функцию, которая принимает строку и возвращает список всех её подстрок. Подстрока — это непрерывная последовательность символов, содержащаяся в строке.
"abc"
['a', 'ab', 'abc', 'b', 'bc', 'c']
Решение задачи
def generate_substrings(s):
substrings = []
for i in range(len(s)):
for j in range(i + 1, len(s) + 1):
substrings.append(s[i:j])
return substrings
# Пример использования:
input_string = "abc"
result = generate_substrings(input_string)
print(result) # Ожидаемый результат: ['a', 'ab', 'abc', 'b', 'bc', 'c']
Please open Telegram to view this post
VIEW IN TELEGRAM
Статья посвящена новому free-threaded режиму в CPython 3.13, который открывает возможности параллельного выполнения потоков. Рассматриваются особенности его использования и влияние на производительность.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Frontender's notes [ru]
Supply Chain атака на npm: Shai-Hulud — угроза, которая заражает проекты
Недавняя атака на экосистему npm под названием Shai-Hulud привлекла внимание разработчиков по всему миру. Это масштабная supply chain атака, которая затронула более 500 пакетов, включая популярные библиотеки, такие как
ℹ️ Что делать разработчикам
📌 Supply chain атаки становятся всё более изощрёнными и опасными. Ранее мы переживали только за typosquatting, а теперь столкнулись с реальными «npm-червями», которые могут заразить проекты на всех уровнях. Если вы работаете с публичными пакетами, регулярный аудит зависимостей и CI/CD — теперь часть обязательной практики.
🚪 Frontender's notes
Недавняя атака на экосистему npm под названием Shai-Hulud привлекла внимание разработчиков по всему миру. Это масштабная supply chain атака, которая затронула более 500 пакетов, включая популярные библиотеки, такие как
ngx-toastr
, tinycolor
, react-jsonschema-form-extras
и пакеты от CrowdStrike
.❌ Заражённые пакеты содержат вредоносный скрипт bundle.js. Этот скрипт запускает TruffleHog для поиска секретных данных, таких как GitHub токены, NPM ключи или AWS креды, и отправляет их на внешний сервер. Дополнительно создаётся вредоносный workflow в папке .github/workflows, который будет автоматически запускаться при каждом CI-процессе. В итоге, атака действует как червь, распространяясь через каждый новый пакет, заражая downstream-проекты.
• Проверить проекты на наличие заражённых версий пакетов
• Ротировать npm-токены, GitHub PAT и облачные креды, чтобы минимизировать последствия
• Аудитировать CI/CD конфигурации для выявления подозрительных изменений
• Обновлять пакеты только из доверенных источников, избегать использования сомнительных версий
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Data Science | Machinelearning [ru]
This media is not supported in your browser
VIEW IN TELEGRAM
Генерация баз данных теперь за пару секунд 🚶♂️
Нужна база данных, но нет времени и желания на долгое проектирование? Тогда Database Build — это то, что вам нужно!
Что умеет Database Build?
Database Build — идеальный инструмент для разработчиков, тестировщиков и всех, кто работает с базами данных. Ускорьте процесс разработки и создавайте базы без усилий.
Data Science
Нужна база данных, но нет времени и желания на долгое проектирование? Тогда Database Build — это то, что вам нужно!
Что умеет Database Build?
— Мгновенная генерация базы данных: Просто напишите текстовое описание, и нейросеть преобразует его в полноценную структуру базы с таблицами, связями и диаграммами
— Фейковые данные за секунды: Нужны тестовые данные? Создайте их прямо в сервисе
— Экспорт в SQL или загрузка на сервер: Не нужно копировать и вставлять — сразу получите готовую базу в нужном формате или загрузите её на сервер
— Бесплатно: Сервис доступен без платы — можно без риска протестировать
Database Build — идеальный инструмент для разработчиков, тестировщиков и всех, кто работает с базами данных. Ускорьте процесс разработки и создавайте базы без усилий.
Data Science
Please open Telegram to view this post
VIEW IN TELEGRAM
List comprehension — это лаконичный способ создания списков в Python. С его помощью можно быстро преобразовать или отфильтровать элементы из другого итерируемого объекта, написав компактный и читаемый код.
# Создание списка квадратов чисел от 0 до 9
squares = [x**2 for x in range(10)]
print(squares) # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
# Фильтрация чётных чисел
evens = [x for x in range(10) if x % 2 == 0]
print(evens) # [0, 2, 4, 6, 8]
🗣️ List comprehension позволяет комбинировать создание и обработку списков в одну строку, что делает код более компактным и удобным для чтения. Однако его стоит использовать разумно, чтобы не усложнять логику.
Please open Telegram to view this post
VIEW IN TELEGRAM
Готов создать игру, от которой не оторвешься? Давай вместе сделаем Amazing Frogs – убийцу Тетриса на Python! Тут тебе и падающие блоки, и взрывающиеся цвета, и хитрая механика. Запасайся кофе, открывай IDE, и поехали превращать код в игровое безумие!
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Напишите скрипт, который проверяет, существует ли указанный файл, и выводит сообщение
Файл найден
или Файл не найден
.python check_file.py example.txt
Файл найден
Решение задачи
import os
import sys
if len(sys.argv) < 2:
print("Использование: python check_file.py <file_path>")
sys.exit(1)
file_path = sys.argv[1]
if os.path.isfile(file_path):
print("Файл найден")
else:
print("Файл не найден")
Please open Telegram to view this post
VIEW IN TELEGRAM
• Pygame для начинающих программистов. Статья первая
• Автоматизированное тестирование API с использованием Python. Работа с JSON и JsonPath
• Состояние производительности Python 3.13: Free-Threading
• Переосмысление концепции подсчета ссылок и полный отказ от сборщика мусора
• Не бойтесь потоков в Python, они не кусаются
Please open Telegram to view this post
VIEW IN TELEGRAM
Статья демонстрирует, как с помощью Python и библиотек Flet и FastAPI создавать кроссплатформенные приложения. Рассматриваются подходы к разработке веб, мобильных и десктопных решений без необходимости изучать другие языки.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
• Как растут data science-инженеры и что советуют синьоры, чтобы развиваться быстрее
• Как пройти стажировку бизнес- и системного аналитика и не «сгореть» в персональной преисподней
• Карьерный рост из senior: кто такой staff-инженер?
• Что лучше — оценка рекрутера или подбрасывание монетки?
• Мотивационные стили в обучении: почему вам (возможно) не нужны цели или общение с одногруппниками
Please open Telegram to view this post
VIEW IN TELEGRAM
Статья показывает, как создавать кастомные токенизаторы в SpaCy для специфических задач: от разбивки текста по уникальным правилам до обработки экзотических языков программирования. Практические примеры включены.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
🕵️♂️ Когда твоя работа зависит от Василия
Задача вроде простая, но всё стопорится, потому что «это знает только Василий, он тут со времён динозавров». Никакой документации, только магия в его голове. В итоге — пока он не ответит, ты зависаешь, а проект буксует. Звучит знакомо?
⚙️ Если так, пора разорвать этот порочный круг. Вместо бесконечных вопросов начни собирать всё в одну базу знаний — хоть в Notion, хоть на салфетках. Предложи команде попробовать парное программирование: пока Василий творит чудеса, ты уже разбираешься, как эти фокусы повторить.
Задача вроде простая, но всё стопорится, потому что «это знает только Василий, он тут со времён динозавров». Никакой документации, только магия в его голове. В итоге — пока он не ответит, ты зависаешь, а проект буксует. Звучит знакомо?
Please open Telegram to view this post
VIEW IN TELEGRAM
Статья делится 7 продвинутыми приёмами работы с pandas для оптимизации задач анализа данных. Рассматриваются, например, итерации по группам с df.groupby().iter() и другие способы упростить повторяющиеся операции.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Генераторы — это функции в Python, которые возвращают значения по одному с помощью ключевого слова
yield
, вместо полного возврата всех значений сразу. Они полезны для работы с большими объемами данных, так как сохраняют память, генерируя значения на лету.# Генератор для получения первых N чисел Фибоначчи
def fibonacci(n):
a, b = 0, 1
for _ in range(n):
yield a
a, b = b, a + b
# Используем генератор
for num in fibonacci(5):
print(num)
# Вывод: 0, 1, 1, 2, 3
🗣️ В этом примере генератор fibonacci вычисляет числа по запросу, вместо сохранения всех значений в памяти. Это делает генераторы особенно удобными для работы с потоками данных или бесконечными последовательностями.
Please open Telegram to view this post
VIEW IN TELEGRAM
В этой статье я постараюсь простым языком рассказать о последствиях, к которым может привести слепой запуск A/B-тестов без предварительного А/А-тестирования.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Напишите функцию, которая принимает строку и возвращает новую строку, в которой слова идут в обратном порядке. Слова разделены пробелами.
print(reverse_words("Hello World")) # Ожидаемый результат: "World Hello"
print(reverse_words("Python is great")) # Ожидаемый результат: "great is Python"
Решение задачи
def reverse_words(sentence):
return ' '.join(sentence.split()[::-1])
# Пример использования:
print(reverse_words("Hello World")) # Ожидаемый результат: "World Hello"
print(reverse_words("Python is great")) # Ожидаемый результат: "great is Python"
Please open Telegram to view this post
VIEW IN TELEGRAM