🎮 Awesome Python Games — репозиторий с готовыми играми на Python.
Можно запускать, изучать и использовать как источник идей для собственных проектов. Отличный способ прокачать Python через практику, а не скучную теорию.
Внутри:
🟢 классические аркады и головоломки;
💣 платформеры, стратегии и логические игры;
👨💻 проекты на Pygame, Tkinter, CodeSkulptor и других инструментах;
🖥 примеры объектно-ориентированного программирования;
🔥 работу с анимацией, событиями, физикой, графикой и игровыми циклами;
🧠 идеи, которые можно доработать и превратить в собственную игру.
👇 Готовый код в репозитории.
#python #soft #code
Можно запускать, изучать и использовать как источник идей для собственных проектов. Отличный способ прокачать Python через практику, а не скучную теорию.
Внутри:
🟢 классические аркады и головоломки;
💣 платформеры, стратегии и логические игры;
👨💻 проекты на Pygame, Tkinter, CodeSkulptor и других инструментах;
🖥 примеры объектно-ориентированного программирования;
🔥 работу с анимацией, событиями, физикой, графикой и игровыми циклами;
🧠 идеи, которые можно доработать и превратить в собственную игру.
👇 Готовый код в репозитории.
#python #soft #code
🔴 Тестовое собеседование с ТимЛидом Frontend-разработки в этот четверг
6 августа(в четверг!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Frontend-разработчика.
Как это будет:
📂 Алексей Романов, Teamlead в Underhood.dev с опытом 6+ лет, будет задавать реальные вопросы и задачи разработчику-добровольцу
📂 Алексей будет комментировать каждый ответ респондента, чтобы дать понять, чего от вас ожидает собеседующий на интервью
📂 В конце можно будет задать любой вопрос Алексею
Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Frontend-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.
Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_front_bot
Реклама.
О рекламодателе.
6 августа(в четверг!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Frontend-разработчика.
Как это будет:
📂 Алексей Романов, Teamlead в Underhood.dev с опытом 6+ лет, будет задавать реальные вопросы и задачи разработчику-добровольцу
📂 Алексей будет комментировать каждый ответ респондента, чтобы дать понять, чего от вас ожидает собеседующий на интервью
📂 В конце можно будет задать любой вопрос Алексею
Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Frontend-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.
Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_front_bot
Реклама.
О рекламодателе.
👩💻 Создаём списки терминов с помощью <dl>, <dt> и <dd>!
Эти три тега используются для создания списков описаний, где каждому термину соответствует его определение или пояснение.
Каждый тег выполняет свою роль:
• <dl> — контейнер для всего списка.
• <dt> — термин или название.
• <dd> — описание или значение термина.
Использование этих тегов делает разметку более семантичной и помогает браузерам, поисковым системам и вспомогательным технологиям правильно интерпретировать содержимое.
📣 Code Ready | #атрибут
Эти три тега используются для создания списков описаний, где каждому термину соответствует его определение или пояснение.
Каждый тег выполняет свою роль:
• <dl> — контейнер для всего списка.
• <dt> — термин или название.
• <dd> — описание или значение термина.
Использование этих тегов делает разметку более семантичной и помогает браузерам, поисковым системам и вспомогательным технологиям правильно интерпретировать содержимое.
📣 Code Ready | #атрибут
🐙 Appwrite – бэкенд-сервер с открытым исходным кодом. Платформа позволяет хранить данные приложения и использовать аутентификацию, а также предоставляет удобное API.
Сайтодел | #репозиторий #github
Сайтодел | #репозиторий #github
🔴 Завтра тестовое собеседование на Middle Python с разработчиком из Авито
Уже завтра вечером в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Python-разработчика.
Как это будет:
📂 Даня, старший разработчик в Авито, будет задавать реальные вопросы и задачи разработчику-добровольцу
📂 Даня будет комментировать каждый ответ респондента, чтобы дать понять чего от вас ожидает собеседующий на интервью
📂 В конце можно будет задать любой вопрос Дане
Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Python-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.
Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_py_bot
Реклама.
О рекламодателе.
Уже завтра вечером в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Python-разработчика.
Как это будет:
📂 Даня, старший разработчик в Авито, будет задавать реальные вопросы и задачи разработчику-добровольцу
📂 Даня будет комментировать каждый ответ респондента, чтобы дать понять чего от вас ожидает собеседующий на интервью
📂 В конце можно будет задать любой вопрос Дане
Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Python-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.
Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_py_bot
Реклама.
О рекламодателе.
Element.replaceChildren() — полная замена содержимого элемента через DOM API!
Для полной замены содержимого элемента часто сначала очищают контейнер, а затем добавляют новые узлы либо используют
Для этой задачи DOM API предоставляет специализированный метод
Очистить элемент можно одним вызовом:
const list = document.querySelector('.list');
list.replaceChildren();
Метод удаляет все дочерние узлы элемента независимо от их типа. Одновременно можно передать новое содержимое, которое заменит существующее:
const list = document.querySelector('.list');
const item = document.createElement('li');
item.textContent = 'JavaScript';
list.replaceChildren(item);
После вызова прежние дочерние узлы будут удалены, а переданный элемент станет единственным дочерним узлом контейнера. Метод принимает любое количество DOM-узлов:
const container = document.querySelector('.container');
const title = document.createElement('h2');
title.textContent = 'Статьи';
const description = document.createElement('p');
description.textContent = 'Последние публикации';
container.replaceChildren(title, description);
Также можно передавать строки:
container.replaceChildren('Загрузка...');
Они автоматически преобразуются в текстовые узлы. Если передать существующий DOM-узел, он будет не скопирован, а перемещён:
const card = document.querySelector('.card');
const sidebar = document.querySelector('.sidebar');
sidebar.replaceChildren(card);
Это соответствует общей модели DOM: один узел не может одновременно находиться в нескольких местах дерева. В отличие от
container.replaceChildren('<strong>Text</strong>');
В контейнер будет добавлен обычный текст:
<strong>Text</strong>
Если требуется вставить HTML-разметку, можно использовать
🔥
📣 Code Ready | #практика
Для полной замены содержимого элемента часто сначала очищают контейнер, а затем добавляют новые узлы либо используют
innerHTML.Для этой задачи DOM API предоставляет специализированный метод
replaceChildren().Очистить элемент можно одним вызовом:
const list = document.querySelector('.list');
list.replaceChildren();
Метод удаляет все дочерние узлы элемента независимо от их типа. Одновременно можно передать новое содержимое, которое заменит существующее:
const list = document.querySelector('.list');
const item = document.createElement('li');
item.textContent = 'JavaScript';
list.replaceChildren(item);
После вызова прежние дочерние узлы будут удалены, а переданный элемент станет единственным дочерним узлом контейнера. Метод принимает любое количество DOM-узлов:
const container = document.querySelector('.container');
const title = document.createElement('h2');
title.textContent = 'Статьи';
const description = document.createElement('p');
description.textContent = 'Последние публикации';
container.replaceChildren(title, description);
Также можно передавать строки:
container.replaceChildren('Загрузка...');
Они автоматически преобразуются в текстовые узлы. Если передать существующий DOM-узел, он будет не скопирован, а перемещён:
const card = document.querySelector('.card');
const sidebar = document.querySelector('.sidebar');
sidebar.replaceChildren(card);
Это соответствует общей модели DOM: один узел не может одновременно находиться в нескольких местах дерева. В отличие от
innerHTML, метод не разбирает переданные строки как HTML-разметку:container.replaceChildren('<strong>Text</strong>');
В контейнер будет добавлен обычный текст:
<strong>Text</strong>
Если требуется вставить HTML-разметку, можно использовать
innerHTML или insertAdjacentHTML(), но только для доверенной либо предварительно санитизированной разметки. Более безопасный вариант — сформировать необходимое дерево DOM-узлов программно.🔥
replaceChildren() определён в DOM Standard и позволяет заменить всё содержимое одним вызовом. Это делает намерение кода более явным и избавляет от необходимости отдельно очищать контейнер перед добавлением новых узлов.📣 Code Ready | #практика
📚 RSS Daily Digest – 5 августа 2026
Только что проверил подписки. Вот интересные новости, появившиеся за последние 24 ч.
Hacker News
• Eight Myths on Software Engineering and GenAI – https://queue.acm.org/detail.cfm?id=3807963
• Stateless MCP has recaptured my interest – https://simonwillison.net/2026/Jul/31/stateless-mcp/
• Pi’s Minimalism Is Its Advantage – https://earendil.com/posts/pi-autoresearch-and-databricks/
• The Golden Age of British Ice Cream – https://www.vittlesmagazine.com/p/the-golden-age-of-british-ice-cream
• Mistral’s Shieldstral: 3B open‑weights model for multimodal moderation – https://mistral.ai/news/shieldstral/
• Why is it all in the kernel? – https://lawrencecpaulson.github.io//2026/07/30/Collatz.html
• IP and DNS Leaks in WebKit Affecting Proxy Browsers and iCloud Private Relay – https://mysk.blog/2026/08/04/webkit-proxy-icloud-private-relay-ip-leak/
• Zigbee vs. Matter over Thread: Understanding IoT Protocol Performance in Practice – https://arxiv.org/abs/2603.04221
• Rio‑vt and librio: Rio’s terminal engine, now embeddable – https://rioterm.com/blog/2026/07/27/rio-vt-and-librio
• The sale of Electronic Arts has been finalized – https://www.bbc.com/news/articles/cjejyl34345o
───
Если нужны детали, фильтры по темам или иной формат — дайте знать!
Только что проверил подписки. Вот интересные новости, появившиеся за последние 24 ч.
Hacker News
• Eight Myths on Software Engineering and GenAI – https://queue.acm.org/detail.cfm?id=3807963
• Stateless MCP has recaptured my interest – https://simonwillison.net/2026/Jul/31/stateless-mcp/
• Pi’s Minimalism Is Its Advantage – https://earendil.com/posts/pi-autoresearch-and-databricks/
• The Golden Age of British Ice Cream – https://www.vittlesmagazine.com/p/the-golden-age-of-british-ice-cream
• Mistral’s Shieldstral: 3B open‑weights model for multimodal moderation – https://mistral.ai/news/shieldstral/
• Why is it all in the kernel? – https://lawrencecpaulson.github.io//2026/07/30/Collatz.html
• IP and DNS Leaks in WebKit Affecting Proxy Browsers and iCloud Private Relay – https://mysk.blog/2026/08/04/webkit-proxy-icloud-private-relay-ip-leak/
• Zigbee vs. Matter over Thread: Understanding IoT Protocol Performance in Practice – https://arxiv.org/abs/2603.04221
• Rio‑vt and librio: Rio’s terminal engine, now embeddable – https://rioterm.com/blog/2026/07/27/rio-vt-and-librio
• The sale of Electronic Arts has been finalized – https://www.bbc.com/news/articles/cjejyl34345o
───
Если нужны детали, фильтры по темам или иной формат — дайте знать!
Simon Willison’s Weblog
Stateless MCP has recaptured my interest (and inspired mcp-explorer and datasette-mcp)
Tuesday was Stateless MCP day—the rollout of MCP 2.0, or the 2026-07-28 Model Context Protocol specification to use the more formal but less memorable name. This is the most significant …
💾 Password Generator – генератор надежных длинных паролей со специальными символами. Каждый вариант можно скопировать нажатием на иконку.
Сайтодел | #сниппет #css
Сайтодел | #сниппет #css
🎨 Цветовая палитра макета "Performance Driven Gym"
⚠️ Цвет копируется одним кликом!
Сайтодел | #палитра
HEX | RGB #E9ECFF | rgb(233, 236, 255)#808CFD | rgb(128, 140, 253)#3C3E4C | rgb(60, 62, 76)⚠️ Цвет копируется одним кликом!
Сайтодел | #палитра
👨💻 Сохраняем ещё один полезный ресурс для разработчиков
Нашли @Hanza_chat - IT-комьюнити, где можно не только читать очередную подборку инструментов, но и нормально пообщаться с другими разработчиками.
А для больших разборов у ребят есть отдельный Hanza.io - форум с разделами.
Чат: @Hanza_chat
Форум: Hanza.io
Нашли @Hanza_chat - IT-комьюнити, где можно не только читать очередную подборку инструментов, но и нормально пообщаться с другими разработчиками.
А для больших разборов у ребят есть отдельный Hanza.io - форум с разделами.
Чат: @Hanza_chat
Форум: Hanza.io
👩💻 Можно ли одной строкой сбросить все CSS-свойства элемента?
Свойство
Основные значения:
• initial — сбрасывает свойства к значениям по умолчанию;
• inherit — наследует все свойства от родителя;
• unset — сочетает initial и inherit в зависимости от свойства;
• revert — возвращает стили, заданные браузером или пользовательскими стилями.
📣 Code Ready | #свойство
Свойство
all позволяет одновременно сбросить или переопределить почти все CSS-свойства элемента. Это удобно, когда нужно убрать влияние внешних стилей и начать оформление с чистого листа.Основные значения:
• initial — сбрасывает свойства к значениям по умолчанию;
• inherit — наследует все свойства от родителя;
• unset — сочетает initial и inherit в зависимости от свойства;
• revert — возвращает стили, заданные браузером или пользовательскими стилями.
all часто используют при создании собственных компонентов, кнопок и виджетов, чтобы быстро избавиться от нежелательных стилей без перечисления каждого свойства отдельно.📣 Code Ready | #свойство
✍️ Digital 7 Mono – ретро-шрифт с прямоугольными формами, созданный в стиле старых дисплеев. Пример можно увидеть в сниппете Metal Gear Radar States
Сайтодел | #шрифт
Сайтодел | #шрифт
🎨 Цветовая палитра макета "Social Factory"
⚠️ Цвет копируется одним кликом!
Сайтодел | #палитра
HEX | RGB #FEFBF6 | rgb(254, 251, 246)#FE0000 | rgb(254, 0, 0)#5C1B15 | rgb(92, 27, 21)⚠️ Цвет копируется одним кликом!
Сайтодел | #палитра
💾 Made With CSS – анимированное кольцо с текстом. Так как оно вращается против часовой стрелки, слова легко считываются справа налево.
Сайтодел | #сниппет #css
Сайтодел | #сниппет #css
URL.canParse() — нативная проверка URL без try...catch!
При работе с пользовательскими данными часто требуется проверить, может ли строка быть разобрана как URL. Распространённый подход — использовать конструктор
try {
new URL(value);
} catch {
console.log('Не удалось разобрать URL');
}
Современный Web API предоставляет более удобный способ — статический метод
URL.canParse('https://example.com');
// true
URL.canParse('not-a-url');
// false
Для относительных адресов необходимо передать базовый URL:
URL.canParse('/users/1', 'https://example.com');
// true
Без базового URL такой вызов вернёт
Если нужен только результат проверки,
const url = URL.parse(value);
if (url) {
console.log(url.hostname);
}
const input = document.querySelector('input');
if (!URL.canParse(input.value)) {
input.setCustomValidity('Введите абсолютный URL');
} else {
input.setCustomValidity('');
}
Если приложение допускает относительные адреса, передайте
Например, URL с протоколом
const url = URL.parse(value);
if (url?.protocol === 'https:') {
// дальнейшая обработка
}
Перед выполнением запроса удобно сразу получить объект
const url = URL.parse(apiUrl, document.baseURI);
if (!url || !['http:', 'https:'].includes(url.protocol)) {
throw new Error('Недопустимый адрес API');
}
await fetch(url);
🔥
📣 Code Ready | #практика
При работе с пользовательскими данными часто требуется проверить, может ли строка быть разобрана как URL. Распространённый подход — использовать конструктор
URL внутри try...catch, поскольку при некорректной строке он выбрасывает исключение:try {
new URL(value);
} catch {
console.log('Не удалось разобрать URL');
}
Современный Web API предоставляет более удобный способ — статический метод
URL.canParse(). Он проверяет, может ли строка быть разобрана по алгоритму URL Standard, и возвращает true или false без использования try...catch:URL.canParse('https://example.com');
// true
URL.canParse('not-a-url');
// false
Для относительных адресов необходимо передать базовый URL:
URL.canParse('/users/1', 'https://example.com');
// true
Без базового URL такой вызов вернёт
false, поскольку относительный адрес невозможно разрешить без контекста.Если нужен только результат проверки,
URL.canParse() — оптимальный выбор. Если после проверки требуется объект URL, удобнее сразу использовать URL.parse(), чтобы не выполнять разбор дважды:const url = URL.parse(value);
if (url) {
console.log(url.hostname);
}
URL.parse() возвращает объект URL при успешном разборе и null при ошибке. Например, для проверки пользовательского ввода:const input = document.querySelector('input');
if (!URL.canParse(input.value)) {
input.setCustomValidity('Введите абсолютный URL');
} else {
input.setCustomValidity('');
}
Если приложение допускает относительные адреса, передайте
document.baseURI вторым аргументом. Важно понимать, что URL.canParse() проверяет только возможность разбора строки. Метод не проверяет существование ресурса, доступность сервера, допустимость протокола для приложения или безопасность адреса. Например, URL с протоколом
javascript: или data: может успешно пройти проверку. Если приложение принимает только HTTPS, протокол необходимо проверить отдельно:const url = URL.parse(value);
if (url?.protocol === 'https:') {
// дальнейшая обработка
}
Перед выполнением запроса удобно сразу получить объект
URL:const url = URL.parse(apiUrl, document.baseURI);
if (!url || !['http:', 'https:'].includes(url.protocol)) {
throw new Error('Недопустимый адрес API');
}
await fetch(url);
document.baseURI учитывает базовый адрес документа, включая значение элемента <base>. Проверка протокола также не защищает от SSRF, поэтому на сервере необходима дополнительная валидация адресов.🔥
URL.canParse() подходит для случаев, когда нужна только проверка возможности разбора URL, а URL.parse() — когда требуется сразу получить объект URL. При использовании этих методов в проектах с поддержкой старых браузеров и устаревших WebView следует учитывать совместимость.📣 Code Ready | #практика
🔴В 2025 году Россияне заработали 5,3 млрд рублей на арбитраже криптовалют
По данным Минфин 32% граждан покинули своё место работы, поскольку в среднем уже в первый месяц тут можно зарабатывать от 140 000 рублей, а через 2-3 месяца с легкостью выйти на семизначные числа.
Самое смешное, что лишь 8% россиян что-то слышали об этой профессии, хотя все инструкции бесплатно лежат на канале Арбитраж Криптовалют
Там объясняют, как имея телефон и доступ в интернет, заработать свои первые $2000. Причём разжёвывают так доступно, что поймёт даже ребенок. Кстати, на канале сегодня вышла новая рабочая связка!
Быстрее вступайте, пока это бесплатно — https://t.me/+U-f4ZwrEo-pmZGYy
По данным Минфин 32% граждан покинули своё место работы, поскольку в среднем уже в первый месяц тут можно зарабатывать от 140 000 рублей, а через 2-3 месяца с легкостью выйти на семизначные числа.
Самое смешное, что лишь 8% россиян что-то слышали об этой профессии, хотя все инструкции бесплатно лежат на канале Арбитраж Криптовалют
Там объясняют, как имея телефон и доступ в интернет, заработать свои первые $2000. Причём разжёвывают так доступно, что поймёт даже ребенок. Кстати, на канале сегодня вышла новая рабочая связка!
Быстрее вступайте, пока это бесплатно — https://t.me/+U-f4ZwrEo-pmZGYy
🖥 Weather Glitch App – необычный дизайн мобильного приложения для погоды. Его основа – произвольные линии из текста и иконок, геометрические фигуры и цветные блики.
Сайтодел | #макет #figma
Сайтодел | #макет #figma
💾 Card Swipe Carousel – стопка карточек, которые нужно перетаскивать вправо и влево. От простого нажатия карточка остается на месте.
Сайтодел | #сниппет #css
Сайтодел | #сниппет #css