This media is not supported in your browser
VIEW IN TELEGRAM
⌨️ Очередной шедевр вайбкодинга
За эту разработку и премию дадут.
С добрым утром 😎
За эту разработку и премию дадут.
С добрым утром 😎
✍️ Notes Desktop — интересный проект, настольное приложение для заметок в стиле Telegram Desktop.
Приложение полностью оффлайн — без серверов и телеметрии. Опциональный движок peer-to-peer синхронизации позволяет устройствам обмениваться заметками напрямую по локальной сети.
⚙️ Простая установка
python3.11 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
▶️ И запуск
./run.sh
🔐 Заметки шифруются локально, обеспечивая высокий уровень безопасности и конфиденциальности пользовательских данных.
♎️ GitHub/Инструкция
#python #soft #github
Приложение полностью оффлайн — без серверов и телеметрии. Опциональный движок peer-to-peer синхронизации позволяет устройствам обмениваться заметками напрямую по локальной сети.
⚙️ Простая установка
python3.11 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
▶️ И запуск
./run.sh
🔐 Заметки шифруются локально, обеспечивая высокий уровень безопасности и конфиденциальности пользовательских данных.
♎️ GitHub/Инструкция
#python #soft #github
⚡️ Айтишник из «VISION» скупил курсы айти школ и выложил гигабайты материалов к себе
Каждый найдет что-то по душе:
1202 ГБ — Python
1811 ГБ — Frontend
1100 ГБ — C / C++ / C#
804 ГБ — Java
411 ГБ — SQL & БД
309 ГБ — DevOps
998 ГБ — ИБ & Хакинг
773 ГБ — Kotlin / Swift
189 ГБ — PHP
201 ГБ — GoLang
170 ГБ — Rust
167 ГБ — QA / Тестирование
310 ГБ — 1C + Лицензии
495 ГБ — Машинное обучение
704 ГБ — Аналитика Данных
991 ГБ — Дизайн
Материалы в закрепе, постоянно пополняются👆🏻
Каждый найдет что-то по душе:
1202 ГБ — Python
1811 ГБ — Frontend
1100 ГБ — C / C++ / C#
804 ГБ — Java
411 ГБ — SQL & БД
309 ГБ — DevOps
998 ГБ — ИБ & Хакинг
773 ГБ — Kotlin / Swift
189 ГБ — PHP
201 ГБ — GoLang
170 ГБ — Rust
167 ГБ — QA / Тестирование
310 ГБ — 1C + Лицензии
495 ГБ — Машинное обучение
704 ГБ — Аналитика Данных
991 ГБ — Дизайн
Материалы в закрепе, постоянно пополняются👆🏻
👩💻 Можно ли вывести видео поверх всех окон на странице или даже за пределы браузера?
Псевдокласс
Как это используется:
Комбинируйте с соседними селекторами (
📣 Code Ready | #свойство
Псевдокласс
:picture-in-picture в CSS применяется к видео, которое находится в режиме «картинка в картинке». Он позволяет стилизовать элемент , когда пользователь вынес его в плавающее окно поверх других приложений или вкладок.Как это используется:
• изменение оформления видео в PiP-режиме;
• визуальная индикация активного режима воспроизведения;
• адаптация интерфейса под плавающее окно.
Комбинируйте с соседними селекторами (
~, +) и :has(), чтобы менять другие элементы интерфейса, пока видео в PiP.📣 Code Ready | #свойство
🐙 Front End Web Development Resources – полезный репозиторий с материалами для обучения фронтенду. Тут есть карта развития (roadmap) разработчика, описание инструментов и редакторов кода, ссылки на блоги, каналы и подкасты.
Сайтодел | #репозиторий #github
Сайтодел | #репозиторий #github
This media is not supported in your browser
VIEW IN TELEGRAM
💾 Search With Morphing Button – поле ввода с изменяющейся иконкой. Если убрать фокус, то иконка возвращается к изначальному состоянию.
Сайтодел | #сниппет #css
Сайтодел | #сниппет #css
🎨 Цветовая палитра макета "Chat UI Kit"
⚠️ Цвет копируется одним кликом!
Сайтодел | #палитра
HEX | RGB #EFE4C4 | rgb(239,228,196)
#C2EFE8 | rgb(194,239,232) #B4D5FC | rgb(180,213,252)⚠️ Цвет копируется одним кликом!
Сайтодел | #палитра
Прикладные нейросетевые технологии — новая магистратура факультета компьютерных наук НИУ ВШЭ, лидера рейтинга вузов по подготовке ИИ-специалистов от Альянса в сфере ИИ
Поступить можно даже без технического бэкграунда, а учиться — в удобном онлайн-формате без отрыва от работы. Программа подходит и для тех, кто хочет перейти в более прикладное и актуальное ИТ-направление.
Уже сейчас идет марафон подготовки к вступительным испытаниям, после которого вы сможете успешно поступить на программу и возможно получить скидку на обучение.
За пару занятий вы
⭐️ Составите сильное портфолио для поступления
⭐️ Изучите или вспомните математику для вступительного экзамена
⭐️ Получите готовый план поступления на одну из популярных магистратур ФКН НИУ ВШЭ
📆 Когда: 13 июля в 19:00, 18 июля в 14:00
💻 Формат: онлайн и бесплатно, для участия нужно лишь зарегистрироваться
🐭 Зарегистрироваться
Поступить можно даже без технического бэкграунда, а учиться — в удобном онлайн-формате без отрыва от работы. Программа подходит и для тех, кто хочет перейти в более прикладное и актуальное ИТ-направление.
Уже сейчас идет марафон подготовки к вступительным испытаниям, после которого вы сможете успешно поступить на программу и возможно получить скидку на обучение.
За пару занятий вы
⭐️ Составите сильное портфолио для поступления
⭐️ Изучите или вспомните математику для вступительного экзамена
⭐️ Получите готовый план поступления на одну из популярных магистратур ФКН НИУ ВШЭ
📆 Когда: 13 июля в 19:00, 18 июля в 14:00
💻 Формат: онлайн и бесплатно, для участия нужно лишь зарегистрироваться
🐭 Зарегистрироваться
😕 В России запретили вход на сайты через Google и Apple ID — закон вступил с силу, и владельцам сайтов теперь грозят штрафы до 7️⃣0️⃣0️⃣ 0️⃣0️⃣0️⃣₽ за иностранную авторизацию.
Пользователи могут входить на сайты с помощью одного из следующих методов:
💬 Российский номер мобильного телефона;
💬 Учетная запись «Госуслуг»;
💬 Единая биометрическая система;
💬 MAX и другие отечественные сервисы.
Для обычных юзеров ничего не меняется — штрафовать за аккаунты Google или Apple не будут.
Ah s..., here we go again 🌟
Пользователи могут входить на сайты с помощью одного из следующих методов:
💬 Российский номер мобильного телефона;
💬 Учетная запись «Госуслуг»;
💬 Единая биометрическая система;
💬 MAX и другие отечественные сервисы.
Для обычных юзеров ничего не меняется — штрафовать за аккаунты Google или Apple не будут.
Ah s..., here we go again 🌟
🔍Тестовое собеседование на Frontend-разработчика с ex. TeamLead в Сбер
9 июля(в четверг!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Frontend-разработчика.
Как это будет:
📂 Даниил Дмитриев, старший разработчик в R-Vision, ex. TeamLead в Сбер, будет задавать реальные вопросы и задачи разработчику-добровольцу
📂 Даниил будет комментировать каждый ответ респондента, чтобы дать понять, чего от вас ожидает собеседующий на интервью
📂 В конце можно будет задать любой вопрос Даниилу
Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Frontend-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.
Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_front_bot
Реклама.
О рекламодателе.
9 июля(в четверг!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Frontend-разработчика.
Как это будет:
📂 Даниил Дмитриев, старший разработчик в R-Vision, ex. TeamLead в Сбер, будет задавать реальные вопросы и задачи разработчику-добровольцу
📂 Даниил будет комментировать каждый ответ респондента, чтобы дать понять, чего от вас ожидает собеседующий на интервью
📂 В конце можно будет задать любой вопрос Даниилу
Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Frontend-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.
Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_front_bot
Реклама.
О рекламодателе.
This media is not supported in your browser
VIEW IN TELEGRAM
💾 Search With Morphing Button – поле ввода с изменяющейся иконкой. Если убрать фокус, то иконка возвращается к изначальному состоянию.
Сайтодел | #сниппет #css
Сайтодел | #сниппет #css
Почему innerHTML += иногда ведёт себя не так, как ожидаешь?
На первый взгляд это выглядит как самый простой способ что-то добавить в DOM — вроде бы просто дописал кусок HTML и всё. Но внутри браузер работает не так, и из-за этого появляются странные эффекты, когда вроде ничего особенного не сделал, а поведение страницы меняется.
const list = document.querySelector('.list');
list.innerHTML += `
Новый элемент
`;
По ощущениям просто добавили один
Упрощённо это примерно вот так:
list.innerHTML = list.innerHTML + `
Новый элемент
`;
И уже отсюда становится понятно, почему начинают вылезать побочные эффекты.
Допустим, у тебя есть кнопка с обработчиком:
button.addEventListener('click', () => {
console.log('click');
});
container.innerHTML += `
Новый блок
`;
После такого обновления DOM-поддерево контейнера заменяется новым. Визуально ты видишь тот же интерфейс, но старые узлы уничтожаются и создаются заново. Поэтому все обработчики событий, навешанные через
Та же история с ссылками на элементы:
const item = document.querySelector('.item');
container.innerHTML += `
Новый блок
`;
console.log(item.isConnected); // false
И это особенно хорошо видно, когда начинаешь делать такие вещи в цикле:
for (let i = 0; i < 1000; i++) {
list.innerHTML += `${i}`;
}
Каждый раз браузер берёт текущее содержимое, сериализует его, парсит заново и пересоздаёт DOM внутри контейнера. На маленьких объёмах это почти незаметно, но когда элементов становится много — начинает сильно тормозить, потому что ты постоянно пересоздаёшь одно и то же дерево.
Поэтому в реальной практике так обычно не делают и используют более прямые DOM-методы.
const li = document.createElement('li');
li.textContent = 'Новый элемент';
list.append(li);
Тут уже всё проще: создаёшь узел и просто добавляешь его в DOM, без пересборки контейнера.
Есть ещё вариант со строками, но без пересоздания всего содержимого:
list.insertAdjacentHTML(
'beforeend',
'Новый элемент'
);
Он вставляет кусок точечно в DOM, не пересоздавая существующие узлы, поэтому поведение стабильнее.
Если нужно добавить много элементов сразу, обычно используют
const fragment = document.createDocumentFragment();
for (let i = 0; i < 1000; i++) {
const li = document.createElement('li');
li.textContent = i;
fragment.appendChild(li);
}
list.appendChild(fragment);
Тут всё собирается в памяти и вставляется одной операцией, без промежуточных пересборок и перерисовок.
🔥 Коротко, суть в том, что
📣 Code Ready | #практика
На первый взгляд это выглядит как самый простой способ что-то добавить в DOM — вроде бы просто дописал кусок HTML и всё. Но внутри браузер работает не так, и из-за этого появляются странные эффекты, когда вроде ничего особенного не сделал, а поведение страницы меняется.
const list = document.querySelector('.list');
list.innerHTML += `
Новый элемент
`;
По ощущениям просто добавили один
li, но на деле браузер не дописывает HTML внутрь DOM. Он делает иначе: берёт текущее содержимое, сериализует его в строку, добавляет новый кусок и затем заново парсит HTML, пересоздавая DOM-узлы внутри контейнера.Упрощённо это примерно вот так:
list.innerHTML = list.innerHTML + `
Новый элемент
`;
И уже отсюда становится понятно, почему начинают вылезать побочные эффекты.
Допустим, у тебя есть кнопка с обработчиком:
button.addEventListener('click', () => {
console.log('click');
});
container.innerHTML += `
Новый блок
`;
После такого обновления DOM-поддерево контейнера заменяется новым. Визуально ты видишь тот же интерфейс, но старые узлы уничтожаются и создаются заново. Поэтому все обработчики событий, навешанные через
addEventListener, на этих элементах теряются.Та же история с ссылками на элементы:
const item = document.querySelector('.item');
container.innerHTML += `
Новый блок
`;
console.log(item.isConnected); // false
item остаётся в переменной, но к текущему DOM он уже не привязан. Он существует как объект, но находится вне дерева документа, потому что был заменён старый поддерево контейнера.И это особенно хорошо видно, когда начинаешь делать такие вещи в цикле:
for (let i = 0; i < 1000; i++) {
list.innerHTML += `${i}`;
}
Каждый раз браузер берёт текущее содержимое, сериализует его, парсит заново и пересоздаёт DOM внутри контейнера. На маленьких объёмах это почти незаметно, но когда элементов становится много — начинает сильно тормозить, потому что ты постоянно пересоздаёшь одно и то же дерево.
Поэтому в реальной практике так обычно не делают и используют более прямые DOM-методы.
const li = document.createElement('li');
li.textContent = 'Новый элемент';
list.append(li);
Тут уже всё проще: создаёшь узел и просто добавляешь его в DOM, без пересборки контейнера.
Есть ещё вариант со строками, но без пересоздания всего содержимого:
list.insertAdjacentHTML(
'beforeend',
'Новый элемент'
);
Он вставляет кусок точечно в DOM, не пересоздавая существующие узлы, поэтому поведение стабильнее.
Если нужно добавить много элементов сразу, обычно используют
DocumentFragment, чтобы не дёргать DOM по сто раз:const fragment = document.createDocumentFragment();
for (let i = 0; i < 1000; i++) {
const li = document.createElement('li');
li.textContent = i;
fragment.appendChild(li);
}
list.appendChild(fragment);
Тут всё собирается в памяти и вставляется одной операцией, без промежуточных пересборок и перерисовок.
🔥 Коротко, суть в том, что
innerHTML += — это не добавить элемент, как это выглядит интуитивно. Это скорее пересобери мне весь контейнер заново через HTML-строку и вставь результат. Поэтому в живых интерфейсах он иногда ведёт себя неожиданно и может неприятно влиять и на логику, и на производительность.📣 Code Ready | #практика
This media is not supported in your browser
VIEW IN TELEGRAM
— Большинство людей ненавидят пробки
— Я обожаю... 😎
С добрым утром! ☕️
— Я обожаю... 😎
С добрым утром! ☕️
✍️ Anton – адаптация традиционного рекламного шрифта без засечек для экранов цифровых устройств. Пример можно увидеть в сниппете Template Plants Animated
Сайтодел | #шрифт
Сайтодел | #шрифт
💻 Stealth-Requests — Python библиотека, которая маскирует запросы под настоящий браузер
Автоматически имитирует поведение реального браузера, маскирует TLS-отпечаток, поддерживает прокси и сразу предоставляет удобные инструменты для парсинга HTML.
⚡️ Работает почти как обычный
🛡 Маскирует запросы под Chrome или Safari, используя современные техники обхода детектирования.
🔄 Автоматически повторяет запросы при ошибках вроде 429, 503 и других временных ограничениях.
Сам извлекает:
* заголовок страницы;
* описание;
* автора;
* ссылки;
* изображения;
* email;
* HTML-таблицы;
* номера телефонов и д.р.
🧠 Может сразу преобразовать HTML в Markdown, а также вернуть готовый объект BeautifulSoup или lxml для дальнейшего парсинга.
🚀 Есть поддержка AsyncIO, прокси и сессий.
⚙️ Простая установка
pip install stealth_requests
▶️ Примеры использования
Обычный GE...
Перейти на оригинальный пост
Автоматически имитирует поведение реального браузера, маскирует TLS-отпечаток, поддерживает прокси и сразу предоставляет удобные инструменты для парсинга HTML.
⚡️ Работает почти как обычный
requests — менять код практически не нужно.🛡 Маскирует запросы под Chrome или Safari, используя современные техники обхода детектирования.
🔄 Автоматически повторяет запросы при ошибках вроде 429, 503 и других временных ограничениях.
Сам извлекает:
* заголовок страницы;
* описание;
* автора;
* ссылки;
* изображения;
* email;
* HTML-таблицы;
* номера телефонов и д.р.
🧠 Может сразу преобразовать HTML в Markdown, а также вернуть готовый объект BeautifulSoup или lxml для дальнейшего парсинга.
🚀 Есть поддержка AsyncIO, прокси и сессий.
⚙️ Простая установка
pip install stealth_requests
▶️ Примеры использования
Обычный GE...
Перейти на оригинальный пост
This media is not supported in your browser
VIEW IN TELEGRAM
💾 3D Preloader – необычный 3D-лоадер с элементами в виде подвижных столбиков. Чем выше столбик, тем ярче он окрашивается в синий цвет.
Сайтодел | #сниппет #css
Сайтодел | #сниппет #css
Сегодня работаем, но как же мы отдыхаем в выходной...
Так умеют только в IT
Кстати, в «Исходном коде» публикуем мемы, делимся опытом 9+ летней разработки и помогаем с собесами в IT
Всем хороших выходных! 💙
Заходи: https://t.me/codesrc_it
Так умеют только в IT
Кстати, в «Исходном коде» публикуем мемы, делимся опытом 9+ летней разработки и помогаем с собесами в IT
Всем хороших выходных! 💙
Заходи: https://t.me/codesrc_it
🔥 Парсим Ozon
👨💻 Ozon-parser — софт, который автоматизирует сбор данных с Ozon — прямо у тебя под рукой!
С графическим интерфейсом и Telegram-ботом. Многопоточный сбор данных о товарах и продавцах.
📦 Что умеет:
💬 Забирает до 10 000 товаров из любой категории.
💬 Получает артикулы, названия, цены.
💬 Извлекает инфу о продавцах: ИНН, рейтинг, заказы.
💬 Работает через удобный GUI или Telegram-бота.
💬 Поддерживает многопоточность (в разы быстрее!).
💬 Делает экспорт в Excel/JSON и шлёт всё тебе в телегу.
⌨️ Управление на максималках:
— /start, /status, /settings — бот принимает команды
— Настраиваешь, парсишь, смотришь результат в Excel
— Всё логируется, всё под контролем
💬 Подходит для:
— E-commerce аналитиков
— Поставщиков
— Реселлеров
— Исследователей маркетплейсов
— И просто фанатов автоматизации
🚀 Запуск в несколько кликов
⚙️ Установка:
git clone https:/...
Перейти на оригинальный пост
👨💻 Ozon-parser — софт, который автоматизирует сбор данных с Ozon — прямо у тебя под рукой!
С графическим интерфейсом и Telegram-ботом. Многопоточный сбор данных о товарах и продавцах.
📦 Что умеет:
💬 Забирает до 10 000 товаров из любой категории.
💬 Получает артикулы, названия, цены.
💬 Извлекает инфу о продавцах: ИНН, рейтинг, заказы.
💬 Работает через удобный GUI или Telegram-бота.
💬 Поддерживает многопоточность (в разы быстрее!).
💬 Делает экспорт в Excel/JSON и шлёт всё тебе в телегу.
⌨️ Управление на максималках:
— /start, /status, /settings — бот принимает команды
— Настраиваешь, парсишь, смотришь результат в Excel
— Всё логируется, всё под контролем
💬 Подходит для:
— E-commerce аналитиков
— Поставщиков
— Реселлеров
— Исследователей маркетплейсов
— И просто фанатов автоматизации
🚀 Запуск в несколько кликов
⚙️ Установка:
git clone https:/...
Перейти на оригинальный пост
🔥 Парсим Ozon
👨💻 Ozon-parser — софт, который автоматизирует сбор данных с Ozon — прямо у тебя под рукой!
👨💻 Ozon-parser — софт, который автоматизирует сбор данных с Ozon — прямо у тебя под рукой!
Как сегодня оплачивают ChatGPT, Claude, Cursor и другие зарубежные сервисы из РФ?
Через мутных ботов, ребят с Авито или сайты-прокладки. В итоге вы:
— Переплачиваете 20–30% сверху при каждой оплате.
— Отдаёте свои логины и пароли незнакомым людям.
— Рискуете получить бан аккаунта из-за чужой карты.
Картон убирает посредников. Теперь вы сами контролируете свои оплаты:
• Выпускаете виртуальную карту прямо в Telegram за 3 минуты.
• Пополняете криптой (USDT) или рублями через СБП.
• Оплачивайте любые сервисы за 5 минут.
Вы сами оплачиваете нейросети, хостинги, отели и любые подписки. Без левых комиссий. Apple Pay работает везде, где есть бесконтактная оплата.
Пополнение и вывод рублей - бесплатно. Пополнение криптой - 2%. Карта — ваша, платите сами.
Хватит кормить «помогаторов» и переплачивать за каждую подписку.
Забирайте карту здесь:
👉 Открыть Картон
👉 Открыть Картон
👉 Открыть Картон
Чтобы выпустить карту, надо перейти в канал и посмотреть закреп.
Через мутных ботов, ребят с Авито или сайты-прокладки. В итоге вы:
— Переплачиваете 20–30% сверху при каждой оплате.
— Отдаёте свои логины и пароли незнакомым людям.
— Рискуете получить бан аккаунта из-за чужой карты.
Картон убирает посредников. Теперь вы сами контролируете свои оплаты:
• Выпускаете виртуальную карту прямо в Telegram за 3 минуты.
• Пополняете криптой (USDT) или рублями через СБП.
• Оплачивайте любые сервисы за 5 минут.
Вы сами оплачиваете нейросети, хостинги, отели и любые подписки. Без левых комиссий. Apple Pay работает везде, где есть бесконтактная оплата.
Пополнение и вывод рублей - бесплатно. Пополнение криптой - 2%. Карта — ваша, платите сами.
Хватит кормить «помогаторов» и переплачивать за каждую подписку.
Забирайте карту здесь:
👉 Открыть Картон
👉 Открыть Картон
👉 Открыть Картон
Чтобы выпустить карту, надо перейти в канал и посмотреть закреп.