Все потоки
Поиск
Написать публикацию
Обновить
1031.71

Программирование *

Искусство создания компьютерных программ

Сначала показывать
Порог рейтинга

Создать Telegram-бота и получить за это подарок от Selectel?

Да, это возможно, если вписаться в наш интерактив. Вот что нужно сделать:

  1. Создайте бота и опубликуйте репозиторий на GitHub.

  2. Пришлите ссылку на репозиторий в Telegram-канал SelectelFeedbackBot, чтобы получить бонусные рубли для панели управления.

  3. Задеплойте бота в облаке Selectel, оплатив услуги полученными баллами.

  4. Отправьте ссылку на бота в Telegram-канал SelectelFeedbackBot.

Мы будем ждать ваших сообщений до 2 марта 2025 года, после чего подведем итоги. 10 счастливчиков получат комплект мерча Selectel: картхолдер, кружку и плюшевого Тирекса 🦖

Если готового бота у вас еще нет и вы вообще таким не занимались, то у нас в Академии Selectel есть пример для вдохновения — пошаговый гайд по созданию бота для прогноза погоды. На всякий случай есть еще инструкция, как задеплоить бота на сервер (мало ли).

Полные правила конкурса доступны по ссылке. Узнать обо всем чуть подробнее можно в нашем Telegram-канале.

Теги:
Всего голосов 7: ↑7 и ↓0+8
Комментарии0

Ежемесячный дайджест: новое за январь 🌨️

🧊 Заморозили цены на облачные услуги для новых клиентов на три года. Вы можете выбрать виртуальные машины, GPU-ресурсы, объектные хранилища, базы данных и другие облачные сервисы — тарифы останутся неизменными в течение трех лет. Предложение действует до 31 марта 2025 для юрлиц и индивидуальных предпринимателей. Оставить заявку.

☁️ Открыли регистрацию на главную конференцию про облачные технологии и искусственный интеллект — GoCloud 2025. Хотите узнать про глобальные тренды в AI, пополнить список инструментов и сценариев работы в облаке, обменяться опытом с коллегами-экспертами, а также увидеть, какой простор открывают облачные и AI-технологии для ваших IT-проектов? Тогда мы ждем вас 10 апреля онлайн и офлайн в Москве в Цифровом деловом пространстве (ЦДП). Зарегистрироваться.

🚀 Запустили новую зону доступности ru.AZ-3 в облаке Cloud.ru Evolution — сейчас в ней можно размещать ресурсы IaaS-сервисов. А благодаря сетевой связности с уже существующими AZ, созданные в AZ-3 ресурсы могут обмениваться данными по сети со всеми другими вашими IaaS-ресурсами.

📺 Провели вебинары и их можно посмотреть в записи:

А также 27 февраля в 11:00 мск приглашаем на вебинар Evolution Bare Metal: как мы решили строить Bare Metal и что у нас получилось. На нем вы узнаете, как эффективно использовать выделенные серверы для разработки и тестирования, обработки больших данных, а также виртуализации и контейнеризации.

🦾 Обновили наши облачные платформы. Например, добавили новые асинхронные методы для удаления и остановки Jupyter Servers. А еще в документации платформы Cloud.ru ML Space рассказали, как собрать Docker-образ для задачи обучения на основе любого пользовательского образа. Про остальные обновления подробно рассказали в дайджесте на сайте

⚙️ Расширили возможности в облаке Cloud.ru Evolution — теперь аренда виртуальной машины с GPU NVIDIA® Tesla® V100 доступна и физическим лицам. Для этого достаточно расширить квоту через техническую поддержку.

💸 Предлагаем зарабатывать вместе с Cloud.ru: присоединяйтесь к реферальной программе, рекомендуйте наши облачные сервисы клиентам, коллегам или друзьям и получайте вознаграждение 15%. Участвовать могут не только юридические лица и ИП, но и физические лица, а также самозанятые.

До встречи в следующем выпуске!

Теги:
Всего голосов 2: ↑1 и ↓1+2
Комментарии6

Одним из серьёзных вызовов для Delphi-разработчиков сегодня является модернизация давно работающих проектов и переход на свежую версию языка и среды разработки Delphi. Габриэль Морару – опытный программист, евангелист Delphi, автор книг и блогер – обратился ко всем желающим с предложением бесплатно обновить их проект до современных стандартов в программировании, обеспечив совместимость с Delphi 11.3 и 64-битными ОС.

Что он может сделать для вас:

  • Перейти от ANSI-строк к Unicode.

  • Устранить указатели (Pointer, ^, @), применив безопасные альтернативы.

  • Заменить избыточные TStringList более эффективными структурами данных.

  • Удалить операторы goto и реструктуризовать циклы.

  • Избавиться от ненужных таймеров.

  • Избежать злоупотребления Application.ProcessMessages.

  • Сократить использование глобальных переменных.

  • Обеспечить 64-битную совместимость.

  • Добавить менеджер памяти FastMM для обнаружения утечек памяти.

  • Реализовать проверки на переполнение буфера, переполнение целочисленных значений и перезапись памяти.

  • Выделить в коде повторно используемые процедуры.

  • Разделить проект на библиотеки.

  • Сделать код читабельнее и лёгким в сопровождении.

Если в процессе многолетних доработок ваш код стал запутанным, он даже может сделать ПОЛНУЮ переделку!

Взамен на предоставленную возможность поработать с вашим проектом он хочет записать весь процесс рефакторинга и выложить на YouTube.

Если вас не пугает такая публичность, можете подробнее ознакомиться с этим предложением и записаться на рефакторинг здесь.

Теги:
Рейтинг0
Комментарии1

Регистрируйтесь на GoCloud 2025, чтобы увидеть весь масштаб облаков и AI 🦾☁️

Хотите узнать про глобальные тренды в AI, пополнить список инструментов и сценариев работы в облаке, обменяться опытом с коллегами-экспертами, а также увидеть, какой простор открывают облачные и AI-технологии для ваших IT-проектов? Тогда приходите на главную конференцию про облачные технологии и искусственный интеллект — GoCloud 2025.

Что вас ждет в этом году:

  • три трека: инфраструктура и инструменты, AI и R&D и сценарии работы в облаке;

  • 30+ спикеров из Cloud.ru и ведущих российских компаний;

  • live-демонстрации облачных платформ и нетворкинг с экспертами;

  • не только доклады: интерактивные зоны, afterparty с музыкальной программой и кастомный мерч.

Кому будет полезно

Техническим лидерам, IT-директорам, разработчикам, DevOps-инженерам, архитекторам, дата-инженерам, AI/ML-инженерам, дата-сайентистам, SRE-инженерам, системным администраторам, специалистам по информационной безопасности.

Как принять участие

Можно подключиться к онлайн-трансляции (ссылка придет зарегистрированным участникам в письме) или прийти в Цифровое деловое пространство (ЦДП) в Москве. Собираемся 10 апреля в 10:00, основную программу начинаем в 11:00. 

👉 Зарегистрироваться на GoCloud 2025

Скоро мы начнем анонсировать доклады программы — не переключайтесь! А как прошли предыдущие конференции Cloud.ru можно почитать в статьях:

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии0

Docker в каждый дом
Стрим FastAPI+Docker породил бурное обсуждение, а нужен ли докер в таком небольшом проекте. Наш ответ — обязательно! В современном мире разработки docker является такой же неотъемлемой частью разработки, как и git. Есть некоторые области без докера, например, разработка GUI, операционных систем или микроконтроллеров. Но весь backend, frontend и data science без докера вообще не живут. Давайте посмотрим, какие прямые выгоды даёт докер:

1. Всегда понятно, как запустить код. Dockerfile является однозначной инструкцией по сборке проекта. Bus-factor не мешает жить.

2. Легко включать новых людей в разработку. Инструкция в ридми сводится к docker build & docker run, что понятно даже junior-разработчикам.

3. Деплой можно производить где угодно. В пару команд можно запуститься на компе разработчика, на test или prod сервере, у заказчика на ноутбуке – и везде всё будет одинаково, нужен только сам Docker.

4. Проект одинаково себя ведёт везде. Это упрощает воспроизведение проблемы и сокращает время на багфикс.

5. Нет проблем с конфликтом зависимостей-библиотек. Вы можете на одной машине запустить проекты с условным django 3 и django 4, они никак друг другу не помешают.

6. Легко поднимать зависимости-компоненты. Для любой базы данных берётся готовый докер-образ, меняется конфиг и в одну команду запускается. С выходом на docker compose можно одной командой поднимать сборную солянку из backend, frontend, базы данных, nginx и Let's Encrypt.

7. Просто откатываться к старой версии. Версионирование докер-образов позволяет запустить новую версию, и, если что-то пошло не так, откатиться назад за десятки секунд.

8. Понятные внешние эффекты проекта. В команде docker run указаны проброшенные в контейнер каталоги и порты. Всё остальное изолированно.

В общем, со всех сторон одна польза. Минусы? Требуется изучить новый инструмент и best practices. Кажется, на этом всё. Даже дополнительных накладных расходов на виртуализацию нет. И помните – если docker вам мешает, скорее всего, вы что-то делаете неправильно.

Теги:
Всего голосов 5: ↑5 и ↓0+5
Комментарии2

Как с помощью ИИ починить любой сломанный код и заставить его работать. Теперь не нужно писать нейронке «код не работает» по 20 раз и смотреть на её мучения — достаточно этого промпта:

“Reflect on 5–7 different possible source of the problem, distill those down to 1–2 most likely sources, and the add logs to validate your assumptions before we move onto the implementing the actual code fix”.

Промпт универсальный и работает в любой нейронке и ИИ-среде — от ChatGPT до Cursor.

Теги:
Всего голосов 4: ↑3 и ↓1+3
Комментарии5

🗓 17.02.1983 - Утвepждeн cтaндapт языкa пpoгpaммиpoвaния «Ada» [вехи_истории]

Этот язык создавался для решения сложных задач в области критически важных систем – авиации, космоса, телекоммуникаций и военной техники. Он получил свое название в честь Ады Лавлейс, первой в истории женщины-программиста, которая еще в XIX веке работала над алгоритмами для аналитической машины Бэббиджа.

🗓 17.02.1983 - Утвepждeн cтaндapт языкa пpoгpaммиpoвaния «Ada»
🗓 17.02.1983 - Утвepждeн cтaндapт языкa пpoгpaммиpoвaния «Ada»

Язык Ада разрабатывался с упором на надежность, безопасность и структурированность, что сделало его востребованным в системах, где ошибки могут привести к катастрофическим последствиям. Хотя со временем его популярность снизилась, он продолжает использоваться в сфере авионики, медицины и автоматизированных промышленных систем. 

📼 ЯП применяются в том числе и для создания операционных систем, а про одну из них ролик уже на канале:
Удивительная история Android! Вы этого НЕ ЗНАЛИ
YouTube | VkVideo

Теги:
Всего голосов 2: ↑2 и ↓0+4
Комментарии2

Разработчик под ником madprops предложил способ для быстрого поиска команд в терминале

«Я очень часто обращаюсь к истории действий в shell, чтобы снова и снова запускать одни и те же команды. Пока нет эффективного способа сделать это. Я думаю, что это проблема, которую нужно решать с помощью специализированного инструмента. Я могу попробовать сделать инъекцию оболочки с помощью rofi позже. Но сейчас я придумал трюк, который помогает в работе. Добавьте значки к командам, чтобы вы могли мгновенно распознавать их по стрелкам вверх:

  • : ✅;./utils/check.sh

  • : ⚡;./scripts/tag.py

  • : 📚;./scripts/makedocs.sh

Обратите внимание на двоеточия и точки с запятой. Значки не являются частью команды, они ничего не делают. Но теперь ваше зрение очень быстро распознает нужный элемент. Вместо иконок можно использовать текст, который можно легко отфильтровать позже», — пояснил madprops.

Теги:
Всего голосов 3: ↑3 и ↓0+3
Комментарии4

Готовим валентинку в Python:

1. Заходим сюда;

2. Копируем и вставляем код:

print('\n'.join
 ([''.join
   ([('Name'[(x-y)%4 ]
     if((x*0.05)**2+(y*0.1)**2-1)
      **3-(x*0.05)**2*(y*0.1)
       **3<=0 else ' ')
        for x in range(-30,30)])
         for y in range(15,-15,-1)]))

Замените Name на название\имя, а число в конце этой же строки — на количество букв в этом слове;

3. Жмём Run.

Теги:
Всего голосов 6: ↑6 и ↓0+6
Комментарии3

Расширенные алерты в Amvera Cloud

Сегодня мы выпускаем функционал расширенных алертов.

Теперь каждый наш пользователь сможет получать уведомления в специальный бот, если:

  1. Проект ушел в ошибку.

  2. Произошло превышение ОЗУ или ЦПУ выше заданного порога

  3. Сработала Liveness или Readiness проба.

  4. Произошла ошибка сборки или запуска проекта.

  5. Встретилась заданная фраза в логе.

Amvera Cloud — это облако для простого деплоя приложений через git push. Встроенный CI/CD, бэкапы и мониторинг позволяют развернуть проект тремя командами в IDE и не думать о настойке инфраструктуры. Amvera проще, чем использование VPS или Kubernetes-кластера.

Теги:
Рейтинг0
Комментарии0

Почему Go — выбор крупных IT-компаний? Узнайте в нашем новом подкасте 🎧

В нем Владимир Балун, основатель Балун.Курсы, пообщался с командой Cloud.ru про тренды в программировании, опыт перехода на Go и подготовку к алгоритмическим собеседованиям.

А еще:

  • как глобальные изменения в отрасли влияют на требования к разработчикам;

  • почему Go стал одним из основных языков для веб-разработки и высоконагруженных приложений;

  • как AI и автоматизация формируют будущее простых задач, таких как верстка.

👉 Посмотреть подкаст также можно на YouTube.

Теги:
Всего голосов 2: ↑1 и ↓1+2
Комментарии0

15 правил вайб-программироания от Cursor:

  • начинайте с шаблона — используй готовые репозитории с GitHub для старта.

  • используйте режим агента — для создания, редактирования и управления файлами с помощью команд на естественном языке.

  • используйте Perplexity — для поиска дизайнов и API из интернета, получения инструкций и примеров кода.

  • создавайте новые чаты в Composer — для каждой отдельной задачи, держи чаты короткими.

  • запускайте локально, тестируй часто — находи ошибки на ранних этапах.

  • итерируйте и дорабатывайте — не стремитесь к идеалу сразу, улучшай проект постепенно.

  • используйте голосовой ввод — например, Whispr Flow для быстрого ввода текста.

  • клонируйте и форкайте с умом — берите готовые репозитории, адаптируйте их под себя

  • копируйте ошибки и вставляйте в Composer — часто агент сразу предложит решение.

  • не забывайте, что можно восстановить старые чаты — сохраняйте работу, чтобы при необходимости вернуться к предыдущей версии.

  • храните данные в переменных среды — не прописывайте API-ключи в коде напрямую.

  • чаще коммитите в GitHub — регулярно фиксируйте прогресс.

  • разворачивайте проект рано — например, через Vercel, чтобы вовремя выявлять проблемы.

  • сохраняйте лучшие промпты — чтобы в будущем использовать их снова.

  • наслаждайся процессом – кодьте, экспериментируйте, учитесь и получайте удовольствие.

Ранее Сооснователь компании OpenAI, экс-директор по ИИ и бывший глава отдела разработки автопилота Tesla Андрей Карпаты сообщил, что занялся вайб-программированием и ему это нравится.

«Есть новый вид программирования, который я называю вайб‑программированием (vibe coding), где вы полностью отдаётесь вибрациям, принимаете экспоненты и забываете, что код вообще существует. Это возможно, потому что большие языковые модели (LLM, например, Cursor Composer w Sonnet) становятся слишком хороши. Также я просто общаюсь с Composer с SuperWhisper, поэтому я почти не касаюсь клавиатуры. Я прошу о самых глупых вещах, таких как „уменьшить отступ на боковой панели вдвое“, потому что мне слишком лениво, чтобы найти его. Я всегда „Принимаю всё“ (Accept All), я больше не читаю diffs. Когда я получаю сообщения об ошибках, я просто копирую и вставляю их без комментариев, обычно это исправляет ситуацию. Код выходит за рамки моего обычного понимания, мне приходится действительно читать его некоторое время. Иногда LLM не могут исправить ошибку, поэтому я просто обхожу её или прошу вносить случайные изменения, пока она не исчезнет. Это не так уж плохо для одноразовых проектов на выходные, но все равно довольно забавно. Я создаю проект или веб‑приложение, но это не совсем программирование — я просто вижу что‑то, говорю что‑то, запускаю что‑то и копирую, вставляю что‑то, и это в основном работает», 

рассказал Карпаты.

Теги:
Рейтинг0
Комментарии3

Должен же тимлид смотреть Merge Request (Pull Request)? 

Если задать такой вопрос, то большинство людей ответят утвердительно, поскольку это кажется максимально очевидной обязанностью любого тимлида, чтобы:

  • контролировать качество кода программистов команды;

  • следить за соблюдением принятых стандартов;

  • управлять рисками кодовой базы команды;

  • обучать участников команды через ревью их кода;

  • держать руку на пульсе того, чем занимаются участники команды. 

Однако что делать, если у вас кросс-функциональная команда, состоящая из двух бэкендеров, пары фронтендов, QA и аналитика? Нужно ли вам просматривать все их MR? Сможете ли вы адекватно оценить код на PHP, код на React + TypeScript и автотесты на Python? Очевидно, что нет. 

Для разрешения данной ситуации вы можете:

Забить на код-ревью систем, которые не считаете критическими для успеха проекта. Возможно, никто не расстроится, если автотестер будет писать код так, как посчитает нужным.

Попросить разработчиков проводить код-ревью друг у друга. Однако всё довольно быстро превратится в формальные проверки, когда одобрения ставятся просто ради галочки.

Попросить самого опытного разработчика функциональной команды (например, техлида всех фронтендов) просматривать ревью вашего фронта, чтобы всё было хорошо. Но это быстро превращается в узкое место, когда ваши MR ждут ревью неделями, замедляя все релизы.

 Как поступить?

Предварительное согласование решений. Мало кому нравится читать чужой код, но многие любят обсуждать правильные подходы. Если члену команды предстоит сложная задача, попросите его описать своё решение и предложите остальным её обсудить. Это станет одновременно и публичной документацией, и предварительным ревью выбранного подхода.

Максимально возможное покрытие фитнес-функциями (автоматические форматтеры, автотестеры, анализаторы кода). Согласуйте с техлидами внедрение в проект автоматических анализаторов и добавьте их в пайплайны репозитория. Ни один MR не пойдёт на ревью до тех пор, пока не будет соответствовать установленным стандартам. Так вы сэкономите массу времени.

Автоматическое распределение код-ревью среди всех участников функции (все фронтенды, все бэкенды), вне зависимости от проекта, с фиксацией лица, поставившего одобрение. Автоматически напомните человеку, что он превысил установленные компанией сроки на проведение ревью.

То есть программисты из других команд могут не разбираться в вашем домене, но они способны проверить, что код не делает ничего лишнего и корректно функционирует в рамках проекта (при нагрузке, сущностях, подходах). А факт рандомности ревьювера и фиксации апрува, не позволит им проводить ревью формально.

Приемочные тесты и регрессионное тестирование при релизах. QA-специалисты проверяют задачи на готовность и удостоверяются, что решение соответствует требованиям, а при выпуске на продакшн проводится автоматизированное тестирование, чтобы убедиться, что система нормально справляется с последним добавлением функционала.

В итоге, если тимлид вместе с техническими лидерами выстроит жёсткую систему доставки инкремента на продакшн, ему самому не обязательно просматривать каждый MR своей команды. Исключение составляют лишь те случаи, когда «душа просит».

P.s. Рекомендую: Эволюционная архитектура - автоматизированное управление программным обеспечением - Нил Форд`

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии1

Ближайшие события

Запланируйте, какие вебинары посетите в феврале 📅

Регистрируйтесь на бесплатные вебинары, чтобы узнать больше про работу с сервисами платформы Cloud․ru Evolution:

А еще на каждом вебинаре будет сессия вопросов и ответов, на которой вы сможете задать экспертам любые интересующие вопросы по теме.

Присоединяйтесь!

Теги:
Рейтинг0
Комментарии0

База по JavaScript

Если вы только начинаете (или хотите начать) изучать JavaScript, то для вас есть подборка обучающих материалов. Все они доступны бесплатно. Регистрироваться, оставлять контактные данные или оформлять подписку тоже не нужно.

Если вы новичок, после прочтения материалов можете попробовать решить задачу про JavaScript-функцию (чур, не подглядывать в решение).

Теги:
Всего голосов 2: ↑2 и ↓0+2
Комментарии0

Новые фичи JS, о которых стоит знать

Если долго использовать какой-то инструмент, мозг вырабатывает паттерны: мы повторяем одни и те же решения, не всегда задумываясь, что появились новые, более удобные способы. Так происходит и с JavaScript.

JS развивается каждый год, но многие продолжают писать код, как привыкли, не используя свежие возможности языка. Я стараюсь бороться с этим и внедрять новшества в свою повседневную работу и недавно пошел посмотреть что там нового подвезли в ECMAScript 2024 (ES15). А там оказалось довольно много интересного.

Например, новые методы массивов. Раньше методы вроде .sort() и .reverse() изменяли исходный массив, что могло привести к неожиданным багам.

const arr = [4,1,6,5]
const sortedArr = arr.sort()
console.log(sortedArr) //[1,4,5,6]
console.log(arr) // [1,4,5,6] оригинал также изменился

В ECMAScript2024 (ES15) были добавлены новые методы, которые позволяют работать с копиями массивов не трогая оригинал без дополнительного кода:

const nums = [1, 2, 3];
const reversedNums = nums.toReversed();
console.log(reversedNums); // [3, 2, 1]
console.log(nums); // [1, 2, 3] оригинал не изменился

Точно так же работают новые методы .toSorted() и .toSpliced(). Они делают код более предсказуемым и чистым.

Также, я с огромным восхищением прочитал про Temporal - новый объект для работы с датами и временем. Например, меня всегда поражало , что в Date месяцы индексируются с 0 (январь – это 0), а вот дни месяца начинаются с 1. Temporal фиксит эти проблемы и теперь можно:
✅ Создавать объекты только с датой или только со временем
✅ Удобно складывать и вычитать даты
✅ Работать с часовыми поясами без боли
В общем делать все, для чего мы раньше тащили в проекты всякие moment и day.js.

К огромному сожалению Temporal пока не поддерживается в браузерах, но когда выйдет – работа с датами в JS станет в разы удобнее.

Если вам интересны такие обновления подписывайтесь на мой Telegram-канал!

🔗 t.me/+qbK9ZPuAocI2MWUy

Там делюсь продакшн-опытом,новостями из мира веб-разработки и разбираю реальные кейсы. Подписывайтесь! 🚀

Теги:
Всего голосов 5: ↑3 и ↓2+2
Комментарии2

База для изучения одного из популярнейших языков программирования Python. С новыми знаниями вы сможете вкатиться в ИИ, веб-разработку, создание приложений и даже в геймдев.

Курсы и задачи:

Интерактивные платформы:

Видеоуроки:

Книги:

Бонус: в Steam вышла игра Joy of Programming — Software Engineering Simulator от разработчика на Python.

Теги:
Всего голосов 4: ↑4 и ↓0+4
Комментарии1

Осваиваем 23 самых популярных языка программирования с нуля. Учебная база содержит практические курсы для начинающих разработчиков, которые хотят изучить новые ЯП, включая всю необходимую теоретическую часть с разделами по ООП и асинхронным программированием. На каждый урок есть практические задачи — читаем теорию и тут же оттачиваем навыки. Авторы проекта показали самые востребованные связки языков программирования и фреймворков. 

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии0

flushSync в React – костыль или спасение?

Вчера впервые попробовал flushSyncб который подвезли в React еще в 18 версии.
Классное решение для определенных моментов! Выглядит так, будто React выдал нам костыль, но сразу предупредил: пользоваться с осторожностью.

❓ Почему это вообще нужно? (Для тех, кто не совсем в теме)
В React изменения в useState или в useEffect выглядят синхронными, но на самом деле они асинхронны.

Простой пример:

...

const [count, setCount] = useState(0);

console.log(count); // 0

setCount(1); console.log(count); // Всё ещё 0! 😲

...

Кажется, что setCount(1) сразу меняет count, но на самом деле новое значение попадёт в консоль только при следующем ререндере.

То же самое в useEffect:

...

useEffect(() => { console.log("Эффект сработал!"); }, [count]);

setCount(1); console.log("А это после setCount");

...

Лог "А это после setCount" появится в консоли раньше, чем "Эффект сработал!", потому что useEffect выполняется уже после рендера.

Как flushSync меняет поведение?

Обычно React группирует обновления (batching) и откладывает ререндер до конца текущего цикла. flushSync ломает это поведение и заставляет React сразу выполнить ререндер.

function Example() { 
    const [count, setCount] = React.useState(0); 
    const ref = React.useRef(null);
    const handleClick = () => { 
        flushSync(() => setCount(count + 1)); 
        console.log("Высота элемента:", 
            ref.current?.offsetHeight); 
        };

    return (<button onClick={handleClick}>
        Добавить  {count}
    </button>); 
} 

Что тут происходит?
Без flushSync React подождал бы до конца текущего вызова и только потом обновил DOM.
С flushSync обновление происходит немедленно, и console.log видит уже новый DOM.

React нас предупреждает
В документации прямо сказано:

"flushSync – это низкоуровневый API. Используйте его только тогда, когда вам действительно нужно измерить DOM сразу после обновления состояния."

Когда не стоит использовать flushSync?
Если можно обойтись обычными useEffect или useLayoutEffect.
Если batching работает нормально и не мешает.
Если нет необходимости немедленного ререндера (иначе можно уронить производительность).

Итог
flushSync – мощный инструмент, но использовать его нужно осознанно. Он нужен в случаях, когда важно немедленно обновить стейт и тут же прочитать DOM (например, для анимаций).

Если понравился пост присоединяйтесь к моему каналу в Telegram по ссылке https://t.me/+qbK9ZPuAocI2MWUy.
Там я делюсь своим опытом и пишу материалы которые будут полезны как новичкам, так и матерым разработчикам.

Теги:
Рейтинг0
Комментарии0

Как эффектно ворваться в mob-программирование? Узнай из выступления нашего бэкенд-лида! 

В прошлом году Витя Михайлов, Backend lead Garage Eight, выступил на конференции TechLead 2024 с докладом про mob programming. Он рассказал про пользу этого подхода к разработке, а также трудности его внедрения. А еще поделился приемами, которые помогут вовлечь в этот процесс команду, справиться с «болячками» и сделать mob-программирование частью ежедневной работы.

Если не смог побывать на мероприятии, то самое время смотреть запись ;-)
> YouTube
> VK

Кстати, у Вити есть свой ламповый канал, где он разгоняет про бэкенд, менеджмент и процессы разработки. Заглядывай почитать! 

Теги:
Всего голосов 3: ↑0 и ↓3-3
Комментарии0

Вклад авторов