Как стать автором
Обновить
0
0

Пользователь

Отправить сообщение

Разбираемся с FSD — самой надёжной архитектурой для фронтенда

Время на прочтение7 мин
Количество просмотров45K
image

Сегодня, когда бизнес-требования меняются, бывает сложно найти подходящую и надёжную программную архитектуру и придерживаться неё. Нужна архитектура, которая была бы гибкой, легко масштабировалась, поддерживалась, а также была бы понятна – чтобы новички могли быстро вкатываться в работу с ней.

Вот почему в этой статье мы хотим рассказать вам об архитектуре FSD (Feature-Sliced Design, дословно «послойное проектирование фич»), одной из самых современных, надёжных и спроектированной специально для фронтенд-проектов. Она подходит почти для любых бизнес-условий, позволяет решать повседневные проблемы и интуитивно понятна разработчикам-новичкам.

В данной статье мы разберём основы этого подхода и сообщим вам необходимый минимум знаний, позволяющий с ней работать. Конечно же, в конце статьи мы добавим ссылку на оригинальную документацию. Довольно слов, начнём!
Читать дальше →
Всего голосов 11: ↑11 и ↓0+11
Комментарии11

SameSite=Lax по умолчанию — уже в Chrome 80 stable (правда, пока не у всех)

Время на прочтение4 мин
Количество просмотров57K
На днях внимательная коллега (спасибо, Лена) зарепортила странный баг — сервер нормально ставил куку в браузере, но обратно она не прилетала. Днём ранее всё работало, теперь же кука выставлялась, но спустя несколько секунд магическим образом пропадала (хотя должна держаться сутки). Воспроизводилось это всего у нескольких человек в команде и только в новом Chrome 80, но у остальных в Chrome точно такой же версии всё было в порядке. В других браузерах всё работало как часы. Мистика. Начали разбираться, и спустя какое-то время в консоли Chrome заметили предупреждение для заголовка ответа, устанавливающего куки:
A cookie associated with a cross-site resource at _your_domain_ was set without the `SameSite` attribute. A future release of Chrome will only deliver cookies with cross-site requests if they are set with `SameSite=None` and `Secure`.

Начали изучать что это такое, и постепенно стало понятно, как ошибка возникла и почему проявлялась не у всех. Поскольку наш сервис должен обрабатывать запросы с разных доменов, то SameSite — как раз наш случай. Добавили SameSite=None; Secure, и проблема для нас решилась.

Почему так?

Читать дальше →
Всего голосов 11: ↑11 и ↓0+11
Комментарии7

Утечки памяти, которые не утечки

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров21K

Что случилось? Авария, ужас-ужас

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

В один прекрасный день боевое сопровождение приходит с ужасной проблемой — память в контейнерах Node.js течёт, сервисы падают с OOM каждый день, все пропало!

Да, картинка действительно удручающая. Всё время, когда есть нагрузка, память в контейнере прирастает и почти не очищается при снятии нагрузки. Все остальные метрики, которые мы собирали были в норме: event loop lag, использование CPU, active request, open handles. Прирастала только используемая память и незначительно увеличивалось время отклика сервиса.

Что-ж, выглядит как классическая утечка, надо искать источник.

Читать далее
Всего голосов 95: ↑94 и ↓1+106
Комментарии15

Прокачиваем вёрстку ARIA-атрибутами. Атрибут role

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров4.8K

В разговорах людей, интересующихся доступностью, часто можно услышать слово «Роль». Так, что это такое? Это специальная форма представления элемента для скринридера. Устанавливается она с помощью атрибута role. Сегодня поговорим о нем.


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


Давайте начнём!

Читать дальше →
Всего голосов 25: ↑24 и ↓1+36
Комментарии10

Техники безопасной парольной авторизации в Web

Время на прочтение21 мин
Количество просмотров18K

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

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

Теперь кратко о себе: Я опасно некомпетентен в криптографии. Это всё, что вы должны обо мне знать.

Обзор техник
Всего голосов 3: ↑2 и ↓1+1
Комментарии18

Модели данных для аутентификации пользователей в web-приложениях

Время на прочтение6 мин
Количество просмотров6K

Аутентификация пользователей — базовый функционал подавляющего большинства web-приложений. Этот функционал имплементирован с помощью различных языков программирования и поддерживается различными репозиториями ("хардкод", файлы, базы данных, LDAP, ...).


image


В предыдущей своей публикации я высказал смелое заблуждение "Пока же создание очередного web-приложения зачастую начинается с проектирования собственной структуры данных для аутентификации пользователей", на что мне было скинуто несколько ссылок на некоторые имплементации аутентификации (в основном — на PHP). Под катом — сравнение структур User-моделей этих имплементаций.

Читать дальше →
Всего голосов 14: ↑7 и ↓70
Комментарии6

Только консоль. Почему текстовый интерфейс настолько эффективен

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров33K

Каждый, кто привык работать в консоли, согласится — запускать команды из командной строки в большинстве случаев быстрее, чем из GUI. И выполняются они быстрее.

Почему так?

Во-первых, консоль потребляет меньше ресурсов. Поэтому быстрее реагирует на команды (меньше задержка на ввод), быстрее выполняет задачи (меньше циклов CPU). Во-вторых, запускать команды с клавиатуры можно практически вслепую, не глядя на экран, с мышечной памятью горячих клавиш и автодополнением. Ты практически сливаешься с компьютером в единое целое, когда вводишь команды одну за другой, ждёшь ответа от удалённого сервера, парсишь результаты или запускаешь скрипты с цепочками из программ, где следующая берёт результат выполнения предыдущей.
Читать дальше →
Всего голосов 57: ↑44 и ↓13+44
Комментарии107

Управление вентиляцией. Типовые алгоритмы и их реализация на wb-rules

Время на прочтение35 мин
Количество просмотров9.7K

И снова про управление вентиляцией. Сначала мы с вами собрали вентустановку с водяным нагревом воздуха. И подобрали электронику, необходимую для управления ею, из производимых Wiren Board устройств. Следующим шагом мы сделали то же самое для электрического нагрева воздуха.

Теперь пора перейти к самому вкусному — к разработке алгоритмов управления нашей вентустановкой и написанию скриптов. Дальше будет много текста не развлекательного характера, но если вы доберетесь до конца, то сможете писать скрипты управления для контроллера Wiren Board. Не обязательно для вентустановок.

Приступим
Всего голосов 16: ↑16 и ↓0+16
Комментарии15

Как мы изобрели велосипед: адаптер USB–RS485 с выходом питания 12 В и защитой

Уровень сложностиПростой
Время на прочтение12 мин
Количество просмотров16K

Можно ли сделать хорошо знакомое и массовое устройство ещё лучше? Конечно!

Расскажем о недостатках существующих адаптеров USB-RS485, поиске идеального решения и про весь процесс: от идеи до запуска серийного производства.

Читать далее
Всего голосов 76: ↑75 и ↓1+94
Комментарии66

Облачный умный дом: что нужно знать, чтобы избежать проблем

Время на прочтение11 мин
Количество просмотров21K

В обычной жизни я не только тестирую оборудование умного дома, но и очень много путешествую. Любимое хобби в поездках – трекинг, особенно в холмистой местности. Ходил я и по лестницам Непала, и по левадам Мадейры, и по козьим тропам Азорских островов. К чему это я? Многим облака кажутся милыми, белыми и пушистыми. Но когда ты поднимаешься по тропе, и тебя после определенной высоты накрывает облако, мало не покажется. Сыро, мокро, противно, а потом еще и скользко. Приходится разворачиваться и спускаться обратно, по скользкой каменистой тропе подниматься нельзя.

В индустрии информационных технологий в 2006 году появились свои облака, которые позволяют не тратиться на собственную инфраструктуру, а буквально в один клик использовать доступные сервисы, расположенные у облачного провайдера. Все очень просто: покупаешь «железку», ставишь приложение на смартфон, указываешь нужные сценарии – и все работает. Но нет ли здесь подвоха? Не станут ли облака препятствием, из-за которого придется разворачиваться и все менять? В этом мне как раз хочется разобраться вместе с читателями.

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

Читать далее
Всего голосов 15: ↑15 и ↓0+15
Комментарии22

Создание собственного корпоративного шрифта. Зачем он нужен и какой путь мы прошли

Время на прочтение4 мин
Количество просмотров2.8K

Привет, Хабр! Меня зовут Станислав Игнатьев, я начальник отдела дизайна продуктов сервисов X5 Group. Мы проектируем интерфейсы для внешних и внутренних сервисов, например: подписка «Пакет», приложение «Пятёрочка», цифровая платформа для поставщиков Dialog.X5, приложения для работы сотрудников.

Сегодня я хотел бы рассказать, как и зачем мы создавали собственный шрифт.

Читать далее
Всего голосов 7: ↑6 и ↓1+6
Комментарии7

Next Step: как перейти из продакта в Data Science

Время на прочтение9 мин
Количество просмотров2.8K

Кризисное время всегда способствует переменам, в том числе в поиске новой профессии или приобретении опыта. Вот почему мы решили запустить рубрику Next Step о сотрудниках Х5 Tech, которые смогли поменять профессию внутри компании. Михаил Неверов, директор по анализу данных Х5 Tech, специально для нашего блога на Хабре рассказал о кардинальной смене профессии – как он решился на переход из продакта в Big Data, какие сложности пришлось преодолеть, как он справился с синдромом самозванца и каково это – возглавлять и успешно управлять департаментом по анализу данных из 130+ человек.

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

Девять порочных практик React. Разбираем частые ошибки

Время на прочтение10 мин
Количество просмотров23K

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

Патрик Завадски, старший разработчик ПО в компании Northwestern Mutual, подчеркивает, что практики и привычки могут различаться от разработчика к разработчику, от команды к команде и от компании к компании. В любом случае, важно знать разные подходы к написанию кода в React — это хорошее подспорье для программиста в поисках оптимального для него решения.

Под катом — наш перевод статьи*, в которой Патрик сосредоточился на отрицательных примерах: некоторых из худших React-практик, которые он когда-либо видел (а возможно даже использовал сам). Материал призван помочь вам избежать подобных ошибок в будущем.

*Обращаем ваше внимание, что позиция автора может не всегда совпадать с мнением МойОфис.

Читать далее
Всего голосов 47: ↑46 и ↓1+47
Комментарии20

Правило 3-х часов: Сколько нужно работать в день

Время на прочтение3 мин
Количество просмотров59K

Размытое зрение, стук по клавиатуре и одно глобальное правило продуктивности.

Я был там. Слишком долго работаю над проектом. Я начинаю ошибаться. Я теряю детали. Ошибки продолжают появляться, а качество падает.

Делаю что-нибудь творческое в течение нескольких часов, и это утомительно.

Кажется, существует предел того, сколько постоянных усилий и внимания может выдержать наш мозг. На самом деле, невероятно, насколько универсальной является эта черта человеческого внимания.

Великие умы всех времен имеют нечто общее:

Читать далее
Всего голосов 72: ↑68 и ↓4+80
Комментарии89

Когда зубы гнилые в хлам — случай пациента, которому это знание обошлось в 1,5 миллиона

Время на прочтение10 мин
Количество просмотров45K

Примерно так выглядит процесс гниения во рту. Чёрная область на снимке — убыль костной ткани между двумя корнями зуба. Если с этим ничего не делать, то будет гораздо хуже. Вплоть до выпадения зубов и сепсиса.

Вообще в стоматологии нет такого понятия «гнилые зубы». Гниение — это анаэробный процесс распада белков, который протекает в условиях нехватки кислорода. Химические продукты такой реакции обычно имеют крайне интенсивный тошнотворный запах в основном за счёт образования серосодержащих летучих веществ. В самих твёрдых тканях зуба доля органического матрикса составляет примерно 1 %, чего обычно недостаточно для достижения полной анаэробной феерии ароматов. В чистом виде анаэробные поражения тканей полости рта встречаются, конечно. Например, гнилостно-некротическая ангина Людвига. Но чаще всего процесс носит смешанный характер, поэтому гниением это называть некорректно.

Сегодня будем говорить про такие вещи:

  1. Воспалительные процессы в полости рта.
  2. Что бывает, когда бактерии оказались злобными анаэробами.
  3. Что делать, если на картинках в посте вы узнали себя.

А ещё разберём случай из практики, который пациенту в итоге обошёлся в 1,5 года лечения и в 1,5 миллиона. Но всё закончилось хорошо.

Внимание! Ниже будут неприятные фотографии ротовой полости, поэтому аккуратно.
Читать дальше →
Всего голосов 50: ↑41 и ↓9+45
Комментарии103

Код ревью с учётом человеческих слабостей

Время на прочтение7 мин
Количество просмотров11K

Проверка кода (code review) — отличный инструмент для повышения качества кода, но он не учитывает один факт: отправляют и просматривают код люди, а они устают, теряют сосредоточенность, ленятся, да и просто испытывают эмоции в самые неожиданные моменты.

Поэтому хочу представить свое видение хороших и плохих практик код ревью с учётом человеческих особенностей.

Читать далее
Всего голосов 24: ↑22 и ↓2+23
Комментарии7

Понимание (всех) «модульных» форматов и инструментов JavaScript

Время на прочтение19 мин
Количество просмотров45K


Доброго времени суток, друзья!

Представляю вашему вниманию перевод статьи «Understanding (all) JavaScript module formats and tools» автора Dixin.

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

Читать дальше →
Всего голосов 18: ↑18 и ↓0+18
Комментарии6

Reactjs, Material-UI with JSS. Краткий гайд

Время на прочтение6 мин
Количество просмотров59K
Доброго времени суток, Хабр!

Итак, material-uireactJS's фрэймворк, предоставляющий готовые google решения для быстрой и довольно простой web разработки.

Material-UI достаточно крупная библиотека, где ключевой частью react компонентов и стилизации является @material-ui/core (целью ее использования должен быть немаленький проект).

Этот туториал не включает в себя продвинутое использование material-ui. Это мини мануал по стилизации компонентов.

Использовать material компоненты действительно не сложно, но есть нюансы использования стилизации. Об этом собственно и пойдет речь.

Рассмотрим следующее


  1. JSS и немного о синтаксисе;
  2. Стилизация классовых react, material компонентов;
  3. Стилизация функциональных с использованием хуков react, material компонентов;
  4. Стилизация посредством styledComponent react, material компонентов;
  5. Провайдер theme;
  6. Переопределение material компонентов;

GO под кат!

Читать дальше →
Всего голосов 5: ↑3 и ↓2+4
Комментарии3

«Знакомый моего знакомого сказал…». Разоблачаем сплетни и мифы об SSD

Время на прочтение8 мин
Количество просмотров41K
Привет, Гиктаймс! Компьютер сегодня настолько «друг человека», что о его начинке, казалось бы, всё давно известно. Только вот на деле железо постоянно подвергается нападкам из разряда «знающие люди посоветовали», «я разоблачил страшный заговор!», не говоря уже о «народной медицине» и правках операционной системы наобум. Сегодня мы проясним некоторые нюансы касательно скорости, стабильности и прогресса в твердотельных накопителях.
Читать дальше →
Всего голосов 28: ↑15 и ↓13+2
Комментарии77

Полное визуальное руководство-шпаргалка по Flexbox и Grid + туториал

Время на прочтение31 мин
Количество просмотров149K


Доброго времени суток, друзья!

Представляю вашему вниманию полное визуальное руководство-шпаргалку по всем свойствам CSS-модулей Flexbox и Grid.

Основные источники: A Complete Guide to Flexbox, A Complete Guide to Grid.

В конце статьи вас ждет небольшой туториал по созданию тренажера по Flexbox.

Без дальнейших предисловий.


Всего голосов 11: ↑7 и ↓4+6
Комментарии7

Информация

В рейтинге
Не участвует
Откуда
Россия
Зарегистрирован
Активность