Опа, тут бывший сеньор одного из IT-отделов Яндекса Игорь Никитин выкатил целый канал про Python — и это лучшее, что есть в рунете по теме.
Качественные гайды. Советы от известных прогеров. Тематические мемасы. Короче, ничего лишнего.
Хватит душить питона, учись его кодить: https://telegram.me/+TdJokxIz7K5lOTQ6 🐍
Качественные гайды. Советы от известных прогеров. Тематические мемасы. Короче, ничего лишнего.
Хватит душить питона, учись его кодить: https://telegram.me/+TdJokxIz7K5lOTQ6 🐍
IT мероприятия 🤘
Всё самое интересное для карьеры в IT: митапы, хакатоны, конференции, стажировки и обучение.
Подписывайся 🤘
1. Москва
2. Санкт-Петербург
3. Для стажеров и студентов
Всё самое интересное для карьеры в IT: митапы, хакатоны, конференции, стажировки и обучение.
Подписывайся 🤘
1. Москва
2. Санкт-Петербург
3. Для стажеров и студентов
Node.replaceWith() — замена DOM-элемента без пересборки HTML!
Когда нужно заменить элемент на странице, часто используют
Если вы работаете с динамическими интерфейсами, где есть состояние элементов и обработчики событий, такие детали становятся важными. Например:
const oldElement = document.querySelector('.message');
oldElement.outerHTML = `
Saved
`;
Выглядит просто: старый элемент заменили новым. Но браузер получает строку HTML, разбирает её и создаёт новый DOM-узел. Старый элемент исчезает из DOM, а на его месте появляется другой объект.
Если где-то была сохранена ссылка на старый элемент или на нём были обработчики событий, они не перейдут автоматически. Для браузера это уже другой DOM-объект.
Для замены конкретного узла есть более подходящий метод:
const oldElement = document.querySelector('.message');
const newElement = document.createElement('div');
newElement.textContent = 'Saved';
oldElement.replaceWith(newElement);
Это удобно, когда вокруг элемента есть другая разметка, которую не нужно трогать. Например:
const button = document.querySelector('.button');
const loader = document.createElement('span');
loader.textContent = 'Loading...';
button.replaceWith(loader);
Меняется только
Разница хорошо заметна, если сравнить с
const container = document.querySelector('.container');
container.innerHTML = `
New content
`;
Здесь браузер заново создаёт содержимое контейнера из строки. Даже если часть элементов выглядит так же, это могут быть уже новые DOM-объекты. Например:
const input = document.querySelector('.search');
input.value = 'frontend';
container.innerHTML += `
New block
`;
Если
Именно поэтому
const title = document.querySelector('.title');
const newTitle = document.createElement('h2');
newTitle.textContent = 'New title';
title.replaceWith(newTitle);
Это удобно, когда один элемент интерфейса переходит в другое состояние: загрузка заменяется результатом, временный блок заменяется данными с сервера или один компонент меняется на другой.
Но важно учитывать: новый элемент не наследует обработчики старого. Например:
const button = document.querySelector('.button');
button.addEventListener('click', handleClick);
const newButton = document.createElement('button');
button.replaceWith(newButton);
После замены новый
Если нужно сохранить поведение, обработчик нужно добавить заново:
newButton.addEventListener('click', handleClick);
Также
element.replaceWith(title, text, button);
Браузер удалит старый элемент и вставит переданные узлы на его место. Причём это могут быть не только элементы, но и текстовые узлы:
element.replaceWith('Hello');
🔥 Подведем итог:
📣 Code Ready | #практика
Когда нужно заменить элемент на странице, часто используют
innerHTML, outerHTML или удаляют старый узел, а потом создают новый. В небольших интерфейсах разницы почти не видно, но внутри браузера это разные операции.Если вы работаете с динамическими интерфейсами, где есть состояние элементов и обработчики событий, такие детали становятся важными. Например:
const oldElement = document.querySelector('.message');
oldElement.outerHTML = `
Saved
`;
Выглядит просто: старый элемент заменили новым. Но браузер получает строку HTML, разбирает её и создаёт новый DOM-узел. Старый элемент исчезает из DOM, а на его месте появляется другой объект.
Если где-то была сохранена ссылка на старый элемент или на нём были обработчики событий, они не перейдут автоматически. Для браузера это уже другой DOM-объект.
Для замены конкретного узла есть более подходящий метод:
const oldElement = document.querySelector('.message');
const newElement = document.createElement('div');
newElement.textContent = 'Saved';
oldElement.replaceWith(newElement);
replaceWith() работает непосредственно с DOM-узлами. Браузеру не нужно заново парсить HTML-строку — он получает готовый элемент и заменяет только нужное место в DOM-дереве.Это удобно, когда вокруг элемента есть другая разметка, которую не нужно трогать. Например:
const button = document.querySelector('.button');
const loader = document.createElement('span');
loader.textContent = 'Loading...';
button.replaceWith(loader);
Меняется только
button. Родительский элемент, соседние узлы и остальная структура страницы остаются без изменений.Разница хорошо заметна, если сравнить с
innerHTML. Например:const container = document.querySelector('.container');
container.innerHTML = `
New content
`;
Здесь браузер заново создаёт содержимое контейнера из строки. Даже если часть элементов выглядит так же, это могут быть уже новые DOM-объекты. Например:
const input = document.querySelector('.search');
input.value = 'frontend';
container.innerHTML += `
New block
`;
Если
input находится внутри container, старый элемент будет пересоздан вместе с содержимым. Можно потерять значение поля, обработчики событий и ссылки на старые DOM-объекты.Именно поэтому
innerHTML += часто становится причиной багов. replaceWith() такого поведения не создаёт, потому что меняет только указанный узел. Например:const title = document.querySelector('.title');
const newTitle = document.createElement('h2');
newTitle.textContent = 'New title';
title.replaceWith(newTitle);
Это удобно, когда один элемент интерфейса переходит в другое состояние: загрузка заменяется результатом, временный блок заменяется данными с сервера или один компонент меняется на другой.
Но важно учитывать: новый элемент не наследует обработчики старого. Например:
const button = document.querySelector('.button');
button.addEventListener('click', handleClick);
const newButton = document.createElement('button');
button.replaceWith(newButton);
После замены новый
button будет другим объектом, поэтому старый обработчик к нему не относится.Если нужно сохранить поведение, обработчик нужно добавить заново:
newButton.addEventListener('click', handleClick);
Также
replaceWith() может принимать несколько узлов:element.replaceWith(title, text, button);
Браузер удалит старый элемент и вставит переданные узлы на его место. Причём это могут быть не только элементы, но и текстовые узлы:
element.replaceWith('Hello');
🔥 Подведем итог:
replaceWith() удобен для точечной замены DOM-элементов без повторного парсинга HTML и пересоздания всей окружающей структуры. В отличие от innerHTML, он работает напрямую с узлами и даёт больше контроля над изменениями DOM.📣 Code Ready | #практика
🖥 DesignCode UI – дизайн-система для создания мобильных приложений. Она включает в себя полупрозрачные скругленные карточки и элементы с разноцветными градиентами.
Сайтодел | #макет #figma
Сайтодел | #макет #figma
⚡️ FOOTRUE — мега полезный сайт с более чем 300 сервисами для работы, учебы и отдыха в одном месте.
Надо быстро обработать PDF, сгенерировать пароль, отредактировать текст или поработать с кодом? Не нужно искать отдельные сервисы.
Footrue объединяет множество бесплатных онлайн-инструментов в одном интерфейсе.
Что умеет?
💬 Предлагает полезные инструменты для работы с кодом.
💬 Помогает с финансовыми расчетами и другими повседневными задачами.
💬 Форматирует, очищает и анализирует текст.
💬 Склеивает, разделяет, сжимает и конвертирует PDF.
💬 Генерирует QR-коды, надежные пароли и случайные данные.
💬 Обрезает, объединяет видео и много ещё чего интересного.
💥 Добавляем в закладки! Один сайт — десятки полезных сервисов на каждый день.
😳 Лайф | 📲 Зеркало Max
#soft
Надо быстро обработать PDF, сгенерировать пароль, отредактировать текст или поработать с кодом? Не нужно искать отдельные сервисы.
Footrue объединяет множество бесплатных онлайн-инструментов в одном интерфейсе.
Что умеет?
💬 Предлагает полезные инструменты для работы с кодом.
💬 Помогает с финансовыми расчетами и другими повседневными задачами.
💬 Форматирует, очищает и анализирует текст.
💬 Склеивает, разделяет, сжимает и конвертирует PDF.
💬 Генерирует QR-коды, надежные пароли и случайные данные.
💬 Обрезает, объединяет видео и много ещё чего интересного.
💥 Добавляем в закладки! Один сайт — десятки полезных сервисов на каждый день.
😳 Лайф | 📲 Зеркало Max
#soft
🎨 Цветовая палитра макета "Beauty And Skincare Landing Page"
⚠️ Цвет копируется одним кликом!
Сайтодел | #палитра
HEX | RGB #D1E3E3 | rgb(209,227,227)
#93CCDF | rgb(147,204,223) #2B6477 | rgb(43,100,119)⚠️ Цвет копируется одним кликом!
Сайтодел | #палитра
💀 Нейронка Claude попыталась списать с карты пользователя более $16 миллионов долларов.
Anthropic позже признала сбой. Банк тем временем заподозрил работягу в подозрительных операциях.
Хорошо они хоть кредиты пока не научились брать 🤨
С добрым утром! ☕️
Anthropic позже признала сбой. Банк тем временем заподозрил работягу в подозрительных операциях.
Хорошо они хоть кредиты пока не научились брать 🤨
С добрым утром! ☕️
👩💻 Отображаем математические формулы с помощью тега !
Тег используется для встраивания математических выражений на веб-страницу с помощью языка MathML. Он позволяет отображать дроби, степени, корни, индексы, матрицы и другие математические конструкции без изображений.
Кроме глобальных атрибутов, поддерживает:
Все теги MathML чувствительны к регистру: используйте строго строчные (, а не ). Для лучшего внешнего вида можно подключать стили к формуле, но аккуратно, некоторые свойства не работают
📣 Code Ready | #атрибут
Тег используется для встраивания математических выражений на веб-страницу с помощью языка MathML. Он позволяет отображать дроби, степени, корни, индексы, матрицы и другие математические конструкции без изображений.
Кроме глобальных атрибутов, поддерживает:
• display="inline" — формула отображается внутри строки (по умолчанию).
• display="block" — формула выводится отдельным блочным элементом.
• alttext — альтернативное текстовое описание формулы.
Все теги MathML чувствительны к регистру: используйте строго строчные (, а не ). Для лучшего внешнего вида можно подключать стили к формуле, но аккуратно, некоторые свойства не работают
📣 Code Ready | #атрибут
⚡️ HunyuanOCR — это не обычный OCR, который путает буквы и плачет от плохого качества.
Распознаёт текст на фото, сканах и даже кривых телефонных снимках с точностью, что ставит Google Vision в неловкое положение.
Что умеет:
📸 Считывает текст на любых изображениях — документы, фото, меню, вывески, рукописные заметки.
🧠 Мощная модель от Tencent — понимает структуру, расположение блоков, выделяет зоны текста.
🌚 Работает даже на плохих фото — шум, тени, наклон, бликующий экран — распознаёт всё.
😰 Есть Python-интерфейс — можно встроить в бота, сервис или свою автоматизацию.
🗂 Разбирает сложные макеты — таблицы, колонки, многостраничные файлы.
🆓 Полностью бесплатно и open-source.
▶️ Пример использования:
from vllm import LLM, SamplingParams
from PIL import Image
from transformers import AutoProcessor
def clean_repeated_substrings(text):
"""Clean repeated substrings in text"""
n = len(text)
if n<8000:
return text
for length in range(2, n // 10 + 1):
candidate =...
Перейти на оригинальный пост
Распознаёт текст на фото, сканах и даже кривых телефонных снимках с точностью, что ставит Google Vision в неловкое положение.
Что умеет:
📸 Считывает текст на любых изображениях — документы, фото, меню, вывески, рукописные заметки.
🧠 Мощная модель от Tencent — понимает структуру, расположение блоков, выделяет зоны текста.
🌚 Работает даже на плохих фото — шум, тени, наклон, бликующий экран — распознаёт всё.
😰 Есть Python-интерфейс — можно встроить в бота, сервис или свою автоматизацию.
🗂 Разбирает сложные макеты — таблицы, колонки, многостраничные файлы.
🆓 Полностью бесплатно и open-source.
▶️ Пример использования:
from vllm import LLM, SamplingParams
from PIL import Image
from transformers import AutoProcessor
def clean_repeated_substrings(text):
"""Clean repeated substrings in text"""
n = len(text)
if n<8000:
return text
for length in range(2, n // 10 + 1):
candidate =...
Перейти на оригинальный пост
В 2015 году 88% айтишников на острове были киприотами, а к 2024-му – только 50%. При этом 42% позиций заняли граждане НЕ из ЕС...)
Почему русскоязычные выбирают Кипр для релокации?
🔝Налоги. Режим IP-box – эффективная ставка на доход от интеллектуальной собственности около 3%. Одна из самых низких в Европе.
🔝Живая экосистема. В индексе StartupBlink-2026 Кипр поднялся на 34-е место и третий год подряд растёт быстрее всех в ЕС. По геймдеву – в топ-16 мира.
🔝Работа под боком. Wargaming, Playrix, My.Games, Exness, eToro уже на Кипре. Команды релоцируются и ищут людей – менять компанию можно, не уезжая с острова.
🔝Паспорт ЕС за 4-5 лет. Для высококвалифицированных специалистов действует ускоренная натурализация.
А ещё – море в пяти минутах от офиса, безопасность, английский и русский в ходу. Для тех, кто решил заякориться на Кипре, на этом канале есть каталог топ-проектов в Лимассоле для IT-специалистов. А также разборы районов, цен, свежая аналитика и многое другое.
👉 Подписывайтесь
Почему русскоязычные выбирают Кипр для релокации?
🔝Налоги. Режим IP-box – эффективная ставка на доход от интеллектуальной собственности около 3%. Одна из самых низких в Европе.
🔝Живая экосистема. В индексе StartupBlink-2026 Кипр поднялся на 34-е место и третий год подряд растёт быстрее всех в ЕС. По геймдеву – в топ-16 мира.
🔝Работа под боком. Wargaming, Playrix, My.Games, Exness, eToro уже на Кипре. Команды релоцируются и ищут людей – менять компанию можно, не уезжая с острова.
🔝Паспорт ЕС за 4-5 лет. Для высококвалифицированных специалистов действует ускоренная натурализация.
А ещё – море в пяти минутах от офиса, безопасность, английский и русский в ходу. Для тех, кто решил заякориться на Кипре, на этом канале есть каталог топ-проектов в Лимассоле для IT-специалистов. А также разборы районов, цен, свежая аналитика и многое другое.
👉 Подписывайтесь
CSS-вычисления теперь работают с auto и max-content!
Многие знают
Например, так написать нельзя:
.panel {
width: calc(max-content + 2rem);
}
Такое значение считается невалидным.
Для этого появился
.panel {
width: calc-size(max-content, size + 2rem);
}
Теперь браузер сначала вычисляет
Это работает и с другими размерами, зависящими от содержимого.
.panel {
height: calc-size(auto, size + 1rem);
}
Полезно, когда элемент должен сохранить естественный размер содержимого, но при этом стать немного больше без JS.
🔥
📣 Code Ready | #совет
Многие знают
calc(), но он не умеет вычислять auto, max-content, fit-content и min-content.Например, так написать нельзя:
.panel {
width: calc(max-content + 2rem);
}
Такое значение считается невалидным.
Для этого появился
calc-size()..panel {
width: calc-size(max-content, size + 2rem);
}
Теперь браузер сначала вычисляет
max-content, а затем прибавляет к нему 2rem.Это работает и с другими размерами, зависящими от содержимого.
.panel {
height: calc-size(auto, size + 1rem);
}
Полезно, когда элемент должен сохранить естественный размер содержимого, но при этом стать немного больше без JS.
🔥
calc-size() позволяет выполнять вычисления с auto, max-content и fit-content — то, чего обычный calc() делать не умеет.📣 Code Ready | #совет
This media is not supported in your browser
VIEW IN TELEGRAM
📰 RSS Дайджест | 17 июля 2026
За прошедшие сутки собрал 29 материалов из 7 RSS-лент:
───
🤖 AI / LLMs
• Kimi K3 — главная тема! Китайская модель обошла Claude Fable и GPT-5.6 Sol в arena.ai, заняла 3-е место на ArtificialAnalysis
• Веса Kimi K3 выйдут 27 июля
• Дискуссия: "Anthropic and OpenAI не имеют секретного соуса"
• Open-weight модели приближаются к frontier
🔧 Tech
• LM Studio Bionic — AI-агент для open models
• Pydantic: "Human-in-the-Loop устарел"
• Microsoft Comic Chat стал open source
• GrapheneOS рекомендуют для жертв домашнего насилия
📰 Новости
• Waymo: San Francisco ужесточает правила после инцидента
• SpaceX прервал запуск Starship V3
• Coca-Cola: ransomware атаковала Fairlife
• Roblox запустил AI-генерацию игр в мобильном приложении
• Google Vids позволяет создавать видео с собой
🐍 Python
• Релизы Relatorio 1.0.0 и GooCalendar 1.0.0 в Tryton
───
📊 Источники: Hacker News, LocalLLaMA, TechCrunch, Planet Python
За прошедшие сутки собрал 29 материалов из 7 RSS-лент:
───
🤖 AI / LLMs
• Kimi K3 — главная тема! Китайская модель обошла Claude Fable и GPT-5.6 Sol в arena.ai, заняла 3-е место на ArtificialAnalysis
• Веса Kimi K3 выйдут 27 июля
• Дискуссия: "Anthropic and OpenAI не имеют секретного соуса"
• Open-weight модели приближаются к frontier
🔧 Tech
• LM Studio Bionic — AI-агент для open models
• Pydantic: "Human-in-the-Loop устарел"
• Microsoft Comic Chat стал open source
• GrapheneOS рекомендуют для жертв домашнего насилия
📰 Новости
• Waymo: San Francisco ужесточает правила после инцидента
• SpaceX прервал запуск Starship V3
• Coca-Cola: ransomware атаковала Fairlife
• Roblox запустил AI-генерацию игр в мобильном приложении
• Google Vids позволяет создавать видео с собой
🐍 Python
• Релизы Relatorio 1.0.0 и GooCalendar 1.0.0 в Tryton
───
📊 Источники: Hacker News, LocalLLaMA, TechCrunch, Planet Python
Arena AI: The Official AI Ranking & LLM Leaderboard
Chat, compare, vote for the world's best AI models. Join the community shaping the public leaderboard for LLMs, image, and code models through real-world evaluation.
This media is not supported in your browser
VIEW IN TELEGRAM
🤔 HTML5Book — большой учебник по HTML, CSS и JavaScript!
На сайте собрана большая база материалов по веб-разработке: подробные уроки по HTML5, CSS3, JavaScript и jQuery, а также удобные справочники
На сайте собрана большая база материалов по веб-разработке: подробные уроки по HTML5, CSS3, JavaScript и jQuery, а также удобные справочники
😰 5 AI-проектов, которые ты можешь собрать за выходные на Python
💬 Голосовой AI-ассистент (Whisper + GPT) – ассистент, который понимает речь и отвечает голосом.
💬 Чат-бот для документов (LangChain
💬 Голосовой AI-ассистент (Whisper + GPT) – ассистент, который понимает речь и отвечает голосом.
💬 Чат-бот для документов (LangChain
This media is not supported in your browser
VIEW IN TELEGRAM