Webdev сохраненки
13 subscribers
137 photos
17 videos
7 files
353 links
Tips and tricks и прочие полезности из области веб-разработки, а также репосты понравившихся материалов
加入频道
Forwarded from Душный Вуй
Вот вам схема жизненного цикла страницы в Nuxt 3 которую прислал @zohan333
Forwarded from Codecademy | Программирование
Введение в Page Visibility API

Читайте статью ниже, чтобы узнать, что такое Page Visibility API, его назначение, принцип работы и область применения.

👉Читать статью

#javascript #полезное
Forwarded from Frontender's notes [ru]
​​🧑‍💻10 советов по TypeScript для продвинутых пользователей

В этой статье автор расскажет как стать более искусным и эффективным разработчиком TypeScript.

Читать...
Forwarded from Библиотека программиста | программирование, кодинг, разработка
#инфографика

CI/CD пайплайн в деталях

1️⃣ SDLC с CI/CD

🔸Жизненный цикл разработки программного обеспечения (SDLC) состоит из нескольких ключевых этапов: разработка, тестирование, деплой и cопровождение. CI/CD автоматизирует и интегрирует эти этапы, обеспечивая более быстрые и надежные выпуски. Когда код помещается в Git-репозиторий, он запускает автоматизированный процесс сборки и тестирования.

🔸Для проверки кода запускаются сквозные тестовые примеры. Если тесты пройдены, код может быть автоматически развернут в staging/production окружении. Если проблемы обнаружены, код отправляется обратно в разработку для исправления ошибок. Эта автоматизация обеспечивает быструю обратную связь с разработчиками и снижает риск ошибок в продакшене.

2️⃣ Разница между CI и CD

🔸Непрерывная интеграция (CI) автоматизирует процессы сборки, тестирования и слияния. В рамках CI запускаются тесты всякий раз, когда код фиксируется для раннего обнаружения проблем интеграции. Это поощряет частые фиксации кода и быструю обратную связь.

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

3️⃣ CI/CD пайплайн

🔸Типичный CI/CD пайплайн состоит из нескольких связанных этапов:

🗄 Разработчик фиксирует изменения кода в системе управления версиями
🗄 CI-сервер обнаруживает изменения и запускает сборку
🗄 Код компилируется и тестируется
🗄 Результаты тестирования сообщаются разработчику
🗄 В случае успеха артефакты развертываются в staging окружениях
🗄 Дальнейшее тестирование может быть проведено на стадии подготовки перед выпуском
🗄 Система CD внедряет утвержденные изменения в продакшен
Please open Telegram to view this post
VIEW IN TELEGRAM
Собрали небольшую коллекцию для фронтенд-разработчика. Отлично подойдет, если пользуетесь готовыми шаблонами:

1⃣ Templated — коллекция простых HTML/CSS шаблонов
2⃣ Zerotheme — коллекция HTML/CSS шаблонов от дизайнера #Mik
3⃣ Html5up — коллекция элегантных, адаптивных и настраиваемых HTML/CSS шаблонов
4⃣ W3layouts — инициатива Hidayath по предоставлению бесплатных адаптивных шаблонов с поддержкой WordPress
5⃣ html5xcss3 — коллекция шаблонов, разработанных с учетом совместимости с экранами разных размеров
Sharing Logic Between Components in Different React Renderers

https://www.braingu.com/blog/share-react-component-logic

#coding
#react
Forwarded from Frontender's notes [ru]
​​🧐Рефлексия в JavaScript и TypeScript: обзор основных техник. Как сгенерировать CLI-интерфейс для класса

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

Читать...
Канареечный релиз



Одна из ключевых концепций, позволяющих снизить проблемы при деплое кода это канареечный релиз. Работает он так. Новый релиз выкатывается рядом со старым, затем на него переводится какой-то очень небольшой процент пользователей. Если ошибок нет, то постепенно происходит полное перетекание пользователей и остановка старой версии кода. Что нужно чтобы реализовать такой механизм?

Zero Downtime Deploy
Подход при котором запуск новой версии кода происходит без остановки старой. С точки зрения пользователя выглядит так, что сайт не останавливается, а при очередном обновлении страницы начинает работать новая версия. Для реализации требуется правильная работа с балансировщиком нагрузки. Лучше всего такой вид деплоя автоматизирован в Kubernetes, который позволяет настроить его буквально несколькими настройками. Все остальные способы как правило более затратны и требуют либо ручных действий, либо необходимости написания автоматизации самостоятельно.

Обратная совместимость по структурам данных в базах, очередях и т.п.
Zero Downtime Deploy, а следовательно и Канареечный Релиз не может работать без изменения подходов в разработке. Например в таком случае нельзя делать изменения в базе данных без обратной совместимости, иначе будет невозможно одновременно запустить старую и новую версию кода. Совместимость нужна не постоянная, а только на ближайший релиз. Дальше можно менять или удалять то что требовалось для предыдущих релизов.

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

В итоге если новый релиз и содержит ошибки, то это коснется только небольшой части пользователей, а хорошо настроенный мониторинг и автоматизация позволят быстро переключить пользователей на старую версию кода.
useDelayedRender hook and its usage


const useDelayedRender = delay => {
const [delayed, setDelayed] = useState(true);
useEffect(() => {
const timeout = setTimeout(() => setDelayed(false), delay);
return () => clearTimeout(timeout);
}, []);
return fn => !delayed && fn();
};

const DataComponent = ({ url, fallback, fallbackDelay }) => {
const [data, setData] = useState(null);
const delayedRender = useDelayedRender(fallbackDelay);

useEffect(() => {
let unmounted = false;
fetch(url)
.then(res => res.json())
.then(data => !unmounted && setData(data))
.catch(console.error);
return () => (unmounted = true);
}, []);

return data ? <pre>JSON.stringify(data, null, 2)</pre> : delayedRender(() => fallback);
};


#coding
#react
Forwarded from На фронте - javascript, html, css
react-query vs SWR и избавимся ли мы от Redux?

Давайте сначала познакомимся с обоеми библиотеками, чтобы сравнить их и убедиться, что лучше. react-query и SWR — это две популярные библиотеки для управления состоянием данных в React-приложениях. Они обе предназначены для облегчения работы с данными, получаемыми с сервера, но имеют некоторые различия в функциональности и подходах.

https://habr.com/ru/articles/758360/

#js #react #ru

💬 Чат фронтендеров