🔥Яндекс Образование приглашает студентов бакалавриата и специалитета IT-направлений со всей России на бесплатный студкемп по аппаратной разработке умных устройств.
Основные моменты:
🗓 Даты: с 13 по 24 апреля
📍 Место: Москва
💡 Формат: интенсивное офлайн-обучение
В программе:
- Полный цикл разработки умного устройства: от прототипа до готового продукта.
- ML-интеграция в устройства с сохранением скорости и предсказуемости работы даже при ограниченных ресурсах.
- Современные подходы к исследованиям и разработке умных устройств.
Кто с вами будет работать?
- Специалисты Яндекса, которые создавали Алису и другие умные устройства компании.
- Преподаватели ФПМИ МФТИ, ФКН ВШЭ.
- Эксперты ШАД.
Участие бесплатное. Яндекс Образование покроет расходы на дорогу и проживание всем, кто пройдет отбор. Для участия нужно уметь работать с командной строкой и знать C++ или Java/Kotlin.
🔥 Набор открыт до 22 февраля, поэтому спешим регистрироваться по ссылке
Основные моменты:
🗓 Даты: с 13 по 24 апреля
📍 Место: Москва
💡 Формат: интенсивное офлайн-обучение
В программе:
- Полный цикл разработки умного устройства: от прототипа до готового продукта.
- ML-интеграция в устройства с сохранением скорости и предсказуемости работы даже при ограниченных ресурсах.
- Современные подходы к исследованиям и разработке умных устройств.
Кто с вами будет работать?
- Специалисты Яндекса, которые создавали Алису и другие умные устройства компании.
- Преподаватели ФПМИ МФТИ, ФКН ВШЭ.
- Эксперты ШАД.
Участие бесплатное. Яндекс Образование покроет расходы на дорогу и проживание всем, кто пройдет отбор. Для участия нужно уметь работать с командной строкой и знать C++ или Java/Kotlin.
🔥 Набор открыт до 22 февраля, поэтому спешим регистрироваться по ссылке
❤4🥴2👎1🖕1
This media is not supported in your browser
VIEW IN TELEGRAM
Ты неправильно читаешь файлы в Python, если открываешь их без контекстного менеджера и сразу грузишь всё в память.
Контекстный менеджер with гарантирует, что файл закроется даже при ошибке - без утечек дескрипторов и странных багов в проде.
Читать весь файл через .read() удобно, но на больших логах и выгрузках ты просто съедаешь память. Правильнее - идти построчно: это быстро, экономно и идеально для обработки потоков данных.
Буферизация тоже важна: можно явно задать buffering, чтобы ускорить чтение на медленных дисках или сетевых FS.
from pathlib import Path
path = Path("app.log")
with path.open("r", encoding="utf-8", buffering=1024 * 1024) as f:
for line in f:
line = line.strip()
if not line or line.startswith("#"):
continue
if "ERROR" in line:
print(line)
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍1
Ты научишься делать те, которые живут в проде.
Это не про BeautifulSoup ради галочки.
Это про системы сбора данных, которые:
• не падают от мелких правок на сайте
• собирают данные в разы быстрее
• обновляют всё сами по расписанию
• обходят ограничения и баны
• выглядят как сервис, а не хаос из файлов
Ты начнёшь видеть сайты не как страницы, а как источники данных, к которым можно подключиться.
В итоге ты сможешь:
• забирать данные для своих проектов
• автоматизировать чужую рутину
• делать инструменты для аналитики
• брать коммерческие заказы на сбор данных
Это навык, который напрямую превращается в деньги.
Не “знаю Python”, а умею добывать данные из интернета профессионально.
🎁 48 часов скидка 50% на Stepik: https://stepik.org/a/269942/
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍2👎1
This media is not supported in your browser
VIEW IN TELEGRAM
⚡️ Как находить утечки памяти в Python с помощью tracemalloc
Сохрани себе: для обнаружения утечек памяти в Python используй модуль
Сохрани себе: для обнаружения утечек памяти в Python используй модуль
tracemalloc. Этот инструмент поможет тебе быстро отследить, где происходит выделение памяти, и выявить проблемные участки кода.
import tracemalloc
def memory_leak():
a = []
for i in range(10000):
a.append('leak' * 100)
tracemalloc.start()
memory_leak()
snapshot = tracemalloc.take_snapshot()
top_stats = snapshot.statistics('lineno')
print("[Top 10 memory allocations]")
for stat in top_stats[:10]:
print(stat)
👍5
Самое смешное - код настоящий и вполне рабочий.
Даже Pixar не пишет фейковый код.
https://x.com/toystory/status/2024529641571320101?s=20
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥3❤2
This media is not supported in your browser
VIEW IN TELEGRAM
🔥 Быстрый старт HTTP API на FastAPI с валидацией данных
Сохрани себе шаблон для быстрого старта HTTP API на FastAPI с базовой валидацией данных. Используй Pydantic для определения схемы данных и автоматической генерации документации.
Сохрани себе шаблон для быстрого старта HTTP API на FastAPI с базовой валидацией данных. Используй Pydantic для определения схемы данных и автоматической генерации документации.
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class Item(BaseModel):
name: str
price: float
is_offer: bool = None
@app.post("/items/", response_model=Item)
async def create_item(item: Item):
return item
@app.get("/")
async def read_root():
return {"message": "Welcome to the FastAPI!"}
👎4😁4❤2🔥1
AI-гонка меняет правила игры
На NeurIPS 2025 вклад в топ-50 научных работ распределился почти поровну между Китаем и США — глобальное лидерство в ИИ теперь реально делят две страны.
Но самое интересное — структура исследований.
В США центр тяжести смещается из университетов в индустрию.
Корпоративные лаборатории Google DeepMind, Meta, Microsoft уже конкурируют на равных с топ-университетами вроде Stanford, MIT и CMU.
ИИ-наука становится частью продуктовой гонки, а не только академической.
В Китае картина другая — лидерство по-прежнему у академии:
Tsinghua, CAS, Peking University, SJTU, HKUST.
Сильная государственно-университетская модель продолжает давать результат.
Другие заметные игроки:
- Сингапур — NUS, NTU
- Южная Корея — KAIST
- ОАЭ — MBZUAI
- Канада — Mila
А вот Европа постепенно отстаёт.
В списке, только Oxford, EPFL, ETH Zurich и TUM.
Вывод простой:
ИИ сегодня — это уже не только наука.
Это геополитика, индустрия и борьба за экономическое лидерство.
Кто контролирует исследования — тот контролирует будущее технологий.
linkedin.com/posts/pierre-alexandre-balland-20b75b13_who-pushed-the-ai-frontier-at-neurips-2025-activity-7403119036496162817-vRPE
На NeurIPS 2025 вклад в топ-50 научных работ распределился почти поровну между Китаем и США — глобальное лидерство в ИИ теперь реально делят две страны.
Но самое интересное — структура исследований.
В США центр тяжести смещается из университетов в индустрию.
Корпоративные лаборатории Google DeepMind, Meta, Microsoft уже конкурируют на равных с топ-университетами вроде Stanford, MIT и CMU.
ИИ-наука становится частью продуктовой гонки, а не только академической.
В Китае картина другая — лидерство по-прежнему у академии:
Tsinghua, CAS, Peking University, SJTU, HKUST.
Сильная государственно-университетская модель продолжает давать результат.
Другие заметные игроки:
- Сингапур — NUS, NTU
- Южная Корея — KAIST
- ОАЭ — MBZUAI
- Канада — Mila
А вот Европа постепенно отстаёт.
В списке, только Oxford, EPFL, ETH Zurich и TUM.
Вывод простой:
ИИ сегодня — это уже не только наука.
Это геополитика, индустрия и борьба за экономическое лидерство.
Кто контролирует исследования — тот контролирует будущее технологий.
linkedin.com/posts/pierre-alexandre-balland-20b75b13_who-pushed-the-ai-frontier-at-neurips-2025-activity-7403119036496162817-vRPE
🔥4🤔3❤2👍1
This media is not supported in your browser
VIEW IN TELEGRAM
🔥 Обработка ошибок при считывании JSON в Python
Если вы сталкиваетесь с проблемами при считывании JSON в Python, убедитесь, что вы не забыли обрабатывать потенциальные исключения. Используйте блоки
Если вы сталкиваетесь с проблемами при считывании JSON в Python, убедитесь, что вы не забыли обрабатывать потенциальные исключения. Используйте блоки
try и except для отлова ошибок, таких как JSONDecodeError. Это поможет вам быстро диагностировать проблемы с форматом данных.
import json
json_data = '{"name": "John", "age": 30}' # Пример корректного JSON
try:
parsed_data = json.loads(json_data)
print(f"Name: {parsed_data['name']}, Age: {parsed_data['age']}")
except json.JSONDecodeError as e:
print(f"Ошибка разбора JSON: {e}")
except KeyError as e:
print(f"Отсутствует ключ: {e}")
except Exception as e:
print(f"Произошла ошибка: {e}")
👍6❤5
This media is not supported in your browser
VIEW IN TELEGRAM
Хочешь почувствовать настоящую магию автоматизации - дай Python управлять твоим компьютером. Скрипт может сам кликать, печатать, открывать программы и выполнять рутину вместо тебя. Это уровень, где ты начинаешь автоматизировать действия, а не просто обрабатывать данные. И именно тут люди впервые понимают, что программирование - это сила, а не теория.
import pyautogui, time
time.sleep(5)
pyautogui.write("Python рулит!", interval=0.1)
pyautogui.press("enter")
pyautogui.moveTo(500, 500, duration=1)
pyautogui.click()
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤5👎3
This media is not supported in your browser
VIEW IN TELEGRAM
🛡 Продвинутый совет по Docker, который экономит часы и нервы.
Большинство разработчиков используют Docker как «виртуалку в коробке». Продвинутый уровень начинается, когда ты начинаешь мыслить слоями, кешем и размером образа.
Главное правило - многоступенчатые сборки (multi-stage builds).
Зачем это нужно:
Ты разделяешь процесс сборки и запуска.
В одном образе у тебя компиляторы, dev-зависимости, инструменты сборки.
Во втором - только чистый рантайм и готовый артефакт.
В итоге:
- образ меньше в разы
- меньше уязвимостей
- быстрее деплой
- быстрее pull на серверах
Как правильно мыслить:
1. Build stage - всё тяжёлое
Здесь ты устанавливаешь build-essential, gcc, node, go, poetry, всё что нужно для сборки.
2. Runtime stage - только то, что нужно приложению в работе
Никаких компиляторов. Никаких dev-зависимостей.
3. Кеш слоёв - твой главный ускоритель
Файлы зависимостей копируются раньше кода. Тогда при изменении кода Docker не пересобирает всё.
4. Не запускай контейнеры от root
Создай пользователя внутри контейнера. Это реальный прирост безопасности.
5. Используй конкретные версии образов
Не python:latest, а python:3.12.2-slim. Иначе однажды всё сломается без твоего участия.
Большинство разработчиков используют Docker как «виртуалку в коробке». Продвинутый уровень начинается, когда ты начинаешь мыслить слоями, кешем и размером образа.
Главное правило - многоступенчатые сборки (multi-stage builds).
Зачем это нужно:
Ты разделяешь процесс сборки и запуска.
В одном образе у тебя компиляторы, dev-зависимости, инструменты сборки.
Во втором - только чистый рантайм и готовый артефакт.
В итоге:
- образ меньше в разы
- меньше уязвимостей
- быстрее деплой
- быстрее pull на серверах
Как правильно мыслить:
1. Build stage - всё тяжёлое
Здесь ты устанавливаешь build-essential, gcc, node, go, poetry, всё что нужно для сборки.
2. Runtime stage - только то, что нужно приложению в работе
Никаких компиляторов. Никаких dev-зависимостей.
3. Кеш слоёв - твой главный ускоритель
Файлы зависимостей копируются раньше кода. Тогда при изменении кода Docker не пересобирает всё.
4. Не запускай контейнеры от root
Создай пользователя внутри контейнера. Это реальный прирост безопасности.
5. Используй конкретные версии образов
Не python:latest, а python:3.12.2-slim. Иначе однажды всё сломается без твоего участия.
# Stage 1 - сборка
FROM python:3.12-slim AS builder
WORKDIR /app
COPY requirements.txt .
RUN pip install --prefix=/install --no-cache-dir -r requirements.txt
COPY . .
# Stage 2 - минимальный рантайм
FROM python:3.12-slim
WORKDIR /app
COPY --from=builder /install /usr/local
COPY --from=builder /app .
RUN useradd -m appuser
USER appuser
CMD ["python", "app.py"]
❤4🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
📊 ПОЧЕМУ МАЛЕНЬКИЕ ИИ-МОДЕЛИ ИНОГДА ЛУЧШЕ БОЛЬШИХ
Большие модели выглядят впечатляюще в бенчмарках, но в реальных системах часто выигрывают маленькие. Причина проста — продакшен живёт не метрикой “кто умнее”, а метриками latency, стоимости и стабильности.
Маленькая модель отвечает быстрее. Это значит меньше задержки для пользователя, меньше таймаутов и выше конверсия. Когда у тебя API, чат или рекомендационная система, каждые 100 мс влияют на поведение людей.
Она дешевле. Меньше VRAM, меньше серверов, меньше энергопотребление. Можно масштабировать горизонтально без огромных GPU-кластеров. В итоге ты платишь за инфраструктуру в разы меньше.
Она стабильнее. Большие модели чаще галлюцинируют на узких задачах, перегружаются контекстом и сложнее дебажатся. Маленькая модель, обученная под конкретную задачу, ведёт себя предсказуемее.
И самое важное — маленькие модели проще дообучать, быстрее деплоить и легче держать под контролем. Поэтому в проде часто побеждает не “самая умная”, а “самая управляемая”.
Большие модели выглядят впечатляюще в бенчмарках, но в реальных системах часто выигрывают маленькие. Причина проста — продакшен живёт не метрикой “кто умнее”, а метриками latency, стоимости и стабильности.
Маленькая модель отвечает быстрее. Это значит меньше задержки для пользователя, меньше таймаутов и выше конверсия. Когда у тебя API, чат или рекомендационная система, каждые 100 мс влияют на поведение людей.
Она дешевле. Меньше VRAM, меньше серверов, меньше энергопотребление. Можно масштабировать горизонтально без огромных GPU-кластеров. В итоге ты платишь за инфраструктуру в разы меньше.
Она стабильнее. Большие модели чаще галлюцинируют на узких задачах, перегружаются контекстом и сложнее дебажатся. Маленькая модель, обученная под конкретную задачу, ведёт себя предсказуемее.
И самое важное — маленькие модели проще дообучать, быстрее деплоить и легче держать под контролем. Поэтому в проде часто побеждает не “самая умная”, а “самая управляемая”.
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch, time
model_name = "Qwen/Qwen2.5-1.5B-Instruct" # маленькая модель
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name, torch_dtype=torch.float16, device_map="auto")
prompt = "Explain why smaller models can be better in production:"
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
start = time.time()
out = model.generate(**inputs, max_new_tokens=100)
latency = time.time() - start
print(tokenizer.decode(out[0], skip_special_tokens=True))
print(f"Latency: {latency:.2f}s")