Битва CLIs: почему мы отказались от Angular CLI в пользу Nx
В статье узнаем, почему разработчики Тинькофф Бизнес используют Nx для всех Angular-проектов, какие проблемы это решает и чем этот подход лучше Angular CLI.
👉 @sWebDev
В статье узнаем, почему разработчики Тинькофф Бизнес используют Nx для всех Angular-проектов, какие проблемы это решает и чем этот подход лучше Angular CLI.
👉 @sWebDev
👍4
  This media is not supported in your browser
    VIEW IN TELEGRAM
  Splitting.js
Инструмент для создания креативного текстового контента на веб-страницах. Splitting.js разбивает текст на мелкие фрагменты и применяет к ним различные стили и анимации, что позволяет создавать текстовые эффекты. Библиотека поддерживает различные типы разделения текста: по буквам, словам, строкам, а также предоставляет множество настроек для управления внешним видом и анимациями текста.
👉 @sWebDev
Инструмент для создания креативного текстового контента на веб-страницах. Splitting.js разбивает текст на мелкие фрагменты и применяет к ним различные стили и анимации, что позволяет создавать текстовые эффекты. Библиотека поддерживает различные типы разделения текста: по буквам, словам, строкам, а также предоставляет множество настроек для управления внешним видом и анимациями текста.
👉 @sWebDev
👍5
  Media is too big
    VIEW IN TELEGRAM
  Personal Space — Generative Design/Animation!
Анимированная сцена, реализованная с применением библиотеки Anime.js.
👉 @sWebDev
Анимированная сцена, реализованная с применением библиотеки Anime.js.
👉 @sWebDev
👍3
  Как защититься от XSS атак в React?
Межсайтовый скриптинг (XSS) представляет распространенную угрозу безопасности веб-приложений. Как защитить свое React приложение от данной уязвимости?
👉 @sWebDev
Межсайтовый скриптинг (XSS) представляет распространенную угрозу безопасности веб-приложений. Как защитить свое React приложение от данной уязвимости?
👉 @sWebDev
👍3
  Как защитить React от XSS атак?
  Anonymous Quiz
    24%
    Использовать dangerouslySetInnerHTML для рендеринга текста.
      
    34%
    Использовать JSX и вставлять текст как дочерние элементы.
      
    42%
    Использовать только встроенные функции React для экранирования текста.
      
    👍4
  Media is too big
    VIEW IN TELEGRAM
  Horizontal Scroll Gallery
Галерея c горизонтальным скроллом, выполненная при помощи Less и библиотеки Babel.js
👉 @sWebDev
Галерея c горизонтальным скроллом, выполненная при помощи Less и библиотеки Babel.js
👉 @sWebDev
👍7🔥1🤔1
  Защита от внедрения компонентов в React
Если есть компонент, который динамически импортирует и рендерит другой компонент на основе свойства, то есть шанс передачи вредоносного имени компонента в качестве свойства и его импортирования.
Хороший способ обезопасить себя - это ограничить количество компонентов, которые можно динамически импортировать и рендерить. Импортируя только тот, чье имя есть в списке:
👉 @sWebDev
Если есть компонент, который динамически импортирует и рендерит другой компонент на основе свойства, то есть шанс передачи вредоносного имени компонента в качестве свойства и его импортирования.
Хороший способ обезопасить себя - это ограничить количество компонентов, которые можно динамически импортировать и рендерить. Импортируя только тот, чье имя есть в списке:
   const COMPONENTS = {
   Home: () => import('./Home'),
   Profile: () => import('./Profile'),
   // ...
   };
   function DynamicComponent({ componentName }) {
   const [Component, setComponent] = useState(null);
   useEffect(() => {
   const loadComponent = COMPONENTS[componentName];
   if (loadComponent) {
   loadComponent()
   .then(setComponent)
   .catch(console.error);
   }
   }, [componentName]);
   return Component ? <Component /> : null;
   }👉 @sWebDev
👍9
  Сервис для обнаружения типа устройства пользователя на TypeScript и Vue 3
Туториал для разработки собственного сервиса, способного определять способ взаимодействия с веб-приложением (touchscreen, мышка), ориентацию экрана (горизонтальная, вертикальная), тип устройства (desktop, tab, phone).
👉 @sWebDev
Туториал для разработки собственного сервиса, способного определять способ взаимодействия с веб-приложением (touchscreen, мышка), ориентацию экрана (горизонтальная, вертикальная), тип устройства (desktop, tab, phone).
👉 @sWebDev
👍2
  Fitty
Fitty - небольшая библиотека для автоматической подгонки размера текста под размер его контейнера. Она помогает автоматически масштабировать текст, чтобы он полностью вписывался в заданный блок, сохраняя при этом читаемость.
👉 @sWebDev
Fitty - небольшая библиотека для автоматической подгонки размера текста под размер его контейнера. Она помогает автоматически масштабировать текст, чтобы он полностью вписывался в заданный блок, сохраняя при этом читаемость.
👉 @sWebDev
👍5
  🔥Тест по React JS от OTUS🔥
— Ответьте на 19 вопросов и проверьте, насколько хорошо вы знаете язык. Сможете сдать — пройдёте на продвинутый онлайн-курс по React.js со скидкой!
🚀ПРОЙТИ ТЕСТ ОНЛАЙН-КУРСА ПО REACT.JS https://otus.pw/H0pAg/
Курс доступен в рассрочку.
🎁Пройдете успешно тест, получите доступ к открытым урокам курса.
Нативная интеграция. Информация о продукте www.otus.ru
— Ответьте на 19 вопросов и проверьте, насколько хорошо вы знаете язык. Сможете сдать — пройдёте на продвинутый онлайн-курс по React.js со скидкой!
🚀ПРОЙТИ ТЕСТ ОНЛАЙН-КУРСА ПО REACT.JS https://otus.pw/H0pAg/
Курс доступен в рассрочку.
🎁Пройдете успешно тест, получите доступ к открытым урокам курса.
Нативная интеграция. Информация о продукте www.otus.ru
👍2
  Как использовать Axios с Vue.js
Рассмотрим интеграцию библиотеки Axios во Vue.js для управления HTTP-запросами. Руководство предоставляет простой, но краткий синтаксис Axios для выполнения GET и POST запросов, а также обработку ошибок. Объяснения и примеры понятны, что облегчает понимание даже для новичков. Статья подчеркивает преимущества Axios, такие как поддержка отмены запросов. Однако, некоторые дополнительные примеры и сценарии использования могли бы обогатить материал.
👉 @sWebDev
Рассмотрим интеграцию библиотеки Axios во Vue.js для управления HTTP-запросами. Руководство предоставляет простой, но краткий синтаксис Axios для выполнения GET и POST запросов, а также обработку ошибок. Объяснения и примеры понятны, что облегчает понимание даже для новичков. Статья подчеркивает преимущества Axios, такие как поддержка отмены запросов. Однако, некоторые дополнительные примеры и сценарии использования могли бы обогатить материал.
👉 @sWebDev
👍5
  Shave.js
JS библиотека для обрезки текста в блоках с фиксированными размерами. Если у вас есть ограничение по высоте или ширине элемента и текст не помещается полностью, Shave.js автоматически обрежет его и добавит многоточие в конец. Библиотека легка в использовании, поддерживает анимацию и обрабатывает изменение размеров окна браузера.
👉 @sWebDev
JS библиотека для обрезки текста в блоках с фиксированными размерами. Если у вас есть ограничение по высоте или ширине элемента и текст не помещается полностью, Shave.js автоматически обрежет его и добавит многоточие в конец. Библиотека легка в использовании, поддерживает анимацию и обрабатывает изменение размеров окна браузера.
👉 @sWebDev
👍7
  Какой вариант защиты от уязвимости IDOR применен в коде?
Недавно мы рассказывали об уязвимости Insecure Direct Object References (IDOR) и рассматривали один из вариантов защиты:
Что это за вариант?
👉 @sWebDev
Недавно мы рассказывали об уязвимости Insecure Direct Object References (IDOR) и рассматривали один из вариантов защиты:
    UserDetails() {
     const [user, setUser] = useState(null);
     useEffect(() => {
       fetch('/api/user', {
         headers: {
          Authorization: `Bearer ${localStorage.getItem('token')}`
         }
       })
         .then(response => response.json())
         .then(setUser);
     }, []);
     // Рендер деталей пользователя...
  }
 Что это за вариант?
👉 @sWebDev
👍4
  Какой вариант защиты от уязвимости Insecure Direct Object References (IDOR) применен в данном коде?
  Anonymous Quiz
    36%
    Использование локального хранилища для хранения данных пользователя.
      
    11%
    Шифрование данных перед их передачей на сервер.
      
    37%
    Проверка идентификатора пользователя перед отправкой запроса на сервер.
      
    16%
    Использование множественных уровней авторизации для доступа к данным.
      
    👍4👎2
  Angular - Обработка ошибок 101
Руководство по обработке ошибок в Angular приложениях. Рассмотрим базовые методы обработки ошибок, такие как использование оператора
👉 @sWebDev
Руководство по обработке ошибок в Angular приложениях. Рассмотрим базовые методы обработки ошибок, такие как использование оператора
catchError и создание специализированных сервисов для обработки ошибок. Статья также описывает, как настроить глобальный обработчик ошибок. Автор уделяет внимание важности уведомления пользователей об ошибках и предоставляет примеры кода для наглядности.👉 @sWebDev
🔥2
  Защита от открытых редиректов React
Открытые редиректы возникают, когда приложение включает в целевой URL пользовательский ввод без предварительной проверки. Это может обмануть пользователей и привести к краже данных.
Для защиты мы можем проверять URL перенаправления перед его использованием. Один из способов сделать это - поддерживать список разрешенных URL:
👉 @sWebDev
Открытые редиректы возникают, когда приложение включает в целевой URL пользовательский ввод без предварительной проверки. Это может обмануть пользователей и привести к краже данных.
Для защиты мы можем проверять URL перенаправления перед его использованием. Один из способов сделать это - поддерживать список разрешенных URL:
const ALLOWED_REDIRECTS = ['/home', '/profile', /* ... */];
function Login() {
const [redirectTo, setRedirectTo] = useState('');
const login = async () => {
// Предположим, что эта функция выполняет вход пользователя...
await loginUser();
if (ALLOWED_REDIRECTS.includes(redirectTo)) {
window.location.href = redirectTo;
}
};
// Отрисовываем форму входа...
}
👉 @sWebDev
👍3
  Media is too big
    VIEW IN TELEGRAM
  3D Globe Three.js with location pointer
Анимированный глобус, выполненный на CSS и библиотеке Three.js.
👉 @sWebDev
Анимированный глобус, выполненный на CSS и библиотеке Three.js.
👉 @sWebDev
👍4