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

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

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

Сериализация сущностей с помощью декораторов на TypeScript

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

В процессе написания приложения с более-менее сложной бизнес-логикой на фронтенде возникает необходимость держать всю эту логику на слое предметной области в "толстых" моделях. Например, для работы с формой, которая отображает на пользовательский интерфейс создание или редактирование сущности с большим количеством взаимозависимых свойств. Если "размазать" обработчики изменения состояния этой сущности и входящих в неё подсущностей по слою Application, легко можно потерять целостность модели в разных actions, reducers, валидаторах. Такой код будет трудно читать, отлаживать и поддерживать.

Можно использовать паттерн Aggregate Root для единой точки входа управления моделью, тогда упростится поддержка инварианта такой сущности. Методы доступа к свойствам и методы, меняющие состояние сущности, можно вызывать из одного объекта, а сам объект будет обеспечивать целостность и валидность своих данных. Но здесь появляется ещё одна проблема: сериализация. К примеру, бывает нужно сохранить всю сущность в каком-нибудь хранилище -- localStorage, redux store. Или отправить на бэкэнд для сохранения. Или событием обновить пользовательский интерфейс, а в payload события при этом надо передать часть сущности в виде простого плоского объекта. В этих случаях нам нужна выжимка данных из сущности, которую можно будет восстановить потом при запросе из хранилища для дальнейшей работы. Это особенно актуально, если на проекте используется SSR, там данные, которые собираются для страницы на серверной стороне, должны быть сериализуемыми.

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

Pipelining & Composing: улучшаем читаемость кода. Реализация на TypeScript

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

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

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

Что почитать начинающим разработчикам: подборка книг по JavaScript

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

Привет, Хабр! Я Саша Пиманов, ведущий iOS-разработчик в МТС Диджитал. Сегодня хочу поделиться подборкой книг для кодеров, которые только начинают свой путь в ИТ-отрасли. Если у вас есть любимые книги по JS, о которых я не упомянул, пишите о них в комментариях. Возможно, заберу их в следующий пост. Ну, поехали!

Читать далее
Всего голосов 8: ↑5 и ↓3+6
Комментарии10

Современные архитектуры фронт-энда

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

image


В статье "Contemporary Front-end Architectures" рассмотрены архитектуры фронт-энда с точки зрения потоков данных в исторической ретроспективе.


Материал состоит из трех частей


  1. Теория и история
  2. Реализация
  3. Перспективы

Читать дальше →
Всего голосов 22: ↑21 и ↓1+23
Комментарии14

Первый взгляд на записи и кортежи в JavaScript

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

В этом посте мы вкратце рассмотрим предложение в стандарт ECMAScript «Record & Tuple» от Робина Рикарда и Рика Баттона. Это предложение добавляет два вида составных примитивных значений в JavaScript:


  • записи (records) — неизменяемая и сравниваемая по значению версия простых объектов;
  • кортежи (tuples) — неизменяемая и сравниваемая по значению версия массивов.

image

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

Как работает графика в видеоиграх?

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров17K
Видеоигры в 21 веке обладают впечатляющей графикой, способной перенести игрока в невероятно детализированные города, захватывающие дух места сражений, волшебные миры и захватывающую дух природу.Как же ваш компьютер берет миллиарды единиц и нулей и превращает их в реалистичную 3D-графику? Что ж, давайте разбираться.


Читать дальше →
Всего голосов 33: ↑29 и ↓4+34
Комментарии10

Как настроить аутентификацию через SMS и Flask для самых-самых ленивых пользователей

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

Привет, Хабр!

Сегодня мы по шагам расскажем, как подключить проверку пользовательских данных с помощью одноразового пароля по SMS. Для этого будем использовать платформу MTC Exolve и фреймворк Flask. Такой метод легко внедрить в свой проект и сделать работу с простыми личными кабинетами удобной и максимально ненапряжной для пользователей.

Читать далее
Всего голосов 10: ↑8 и ↓2+9
Комментарии6

Способы организации CSS-кода

Время на прочтение8 мин
Количество просмотров205K
Разработчик Бен Фрейн (Ben Frain) однажды заметил: «Писать CSS-код легко. Масшабировать и поддерживать его — нет».

К счастью, на просторах интернета можно найти множество решений этой проблемы. В данной статье рассмотрены основные киты структуры CSS-кода, а также интересные рыбы/млекопитающие поменьше.

Статья служит лишь памяткой или кратким справочником — для подробного ознакомления с методологиями настоятельно рекомендуется изучать оригинальную документацию.

Итак, начнем.
Читать дальше →
Всего голосов 44: ↑42 и ↓2+40
Комментарии61

Логирование во фронтенд-приложениях. Опыт Звука

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

Логирование во фронтенд-приложениях. Опыт Звука 

Всем привет! На связи Роман Савельев, фронтенд-разработчик в команде Звука. В этой статье я хочу поделиться опытом и рассказать, как мы с командой прошли путь от хаоса до выстроенной инфраструктуры и унифицировали работу с логами в собственных веб-сервисах. Я расскажу, с какими проблемами мы столкнулись, как их решали и какие вывели в best practices. 

Кстати, в best practices даны ответы на вопросы «зачем», «как» и «что» логировать.

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

Замыкания в JavaScript для начинающих

Время на прочтение8 мин
Количество просмотров92K
Замыкания — это одна из фундаментальных концепций JavaScript, вызывающая сложности у многих новичков, знать и понимать которую должен каждый JS-программист. Хорошо разобравшись с замыканиями, вы сможете писать более качественный, эффективный и чистый код. А это, в свою очередь, будет способствовать вашему профессиональному росту.

Материал, перевод которого мы публикуем сегодня, посвящён рассказу о внутренних механизмах замыканий и о том, как они работают в JavaScript-программах.

Читать дальше →
Всего голосов 29: ↑25 и ↓4+21
Комментарии54

Обзор способов и протоколов аутентификации в веб-приложениях

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


Я расскажу о применении различных способов аутентификации для веб-приложений, включая аутентификацию по паролю, по сертификатам, по одноразовым паролям, по ключам доступа и по токенам. Коснусь технологии единого входа (Single Sign-On), рассмотрю различные стандарты и протоколы аутентификации.

Перед тем, как перейти к техническим деталям, давайте немного освежим терминологию.

  • Идентификация — это заявление о том, кем вы являетесь. В зависимости от ситуации, это может быть имя, адрес электронной почты, номер учетной записи, итд.
  • Аутентификация — предоставление доказательств, что вы на самом деле есть тот, кем идентифицировались (от слова “authentic” — истинный, подлинный).
  • Авторизация — проверка, что вам разрешен доступ к запрашиваемому ресурсу.


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

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

Однако в современных системах существуют и более сложные схемы аутентификации и авторизации, о которых я расскажу далее. Но начнем с простого и понятного.
Читать дальше →
Всего голосов 48: ↑48 и ↓0+48
Комментарии20

Что такое RxJS и почему о нём полезно знать

Время на прочтение7 мин
Количество просмотров133K
В этом материале мы поделимся с вами переводом интервью с руководителем проекта RxJS 5+, инженером Google Беном Лешем.

В огромном мире фронтенд-разработки существует множество интересных инструментов. Я стремлюсь найти правильный подход к изучению практических вещей, поэтому я решила пообщаться с одним из самых ярких представителей RxJS-сообщества, Беном Лешем. Мне хотелось побольше узнать о RxJS, и о том, почему мне, начинающему разработчику, стоит вложить время в изучение реактивного программирования. Кроме того, мне хотелось понять — зачем применять RxJS в моих проектах. Бен рассказал мне о том, как использовать RxJS и поделился советами, касающимися изучения этой технологии.


Читать дальше →
Всего голосов 23: ↑19 и ↓4+15
Комментарии8

Не изобретайте велосипед! Или наборы утилит для Vue и React приложений

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

Многие разработчики, когда дело заходит о стандартном веб функционале, например: хранение boolean значений, отлавливания нажатия клавиш или создания stepper, часто идут гуглить как сделать ту или иную функцию и чаще находят способ с реализацией функционала с полного нуля.

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

Введение в Docker и Kubernetes: основы контейнерных технологий

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

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

Читать далее
Всего голосов 15: ↑12 и ↓3+10
Комментарии16

Запросы двойной надежности

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

Отправляем запрос на 20 000 000 евро, на перестановку 900 ордеров на бирже. Что может пойти не так? 

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

Задача была такова – реализовать массовое управления биржевыми ордерами, причём не только в рамках одной биржи, а в целом по всей планете. И чтобы оно точно отработало. 

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

Читать далее
Всего голосов 22: ↑19 и ↓3+21
Комментарии18

Парк сидячего периода. Путешествие в удивительный мир малого таза

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

Если мы что-то и знаем о курильщиках, так это то, что пугать их вредом курения трудно, а главное — бессмысленно. Самые красноречивые картинки на сигаретных пачках в лучшем случае оставят курильщика равнодушным. В худшем — он немедленно зажжёт ещё одну сигарету, чтобы снять стресс.

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

Читать далее
Всего голосов 46: ↑37 и ↓9+54
Комментарии51

Четыре принципа разработки ПО, которым я научился на горьком опыте

Время на прочтение4 мин
Количество просмотров23K
Недавно я спроектировал и написал огромный сервис, и в прошлом месяце (наконец-то) состоялся его запуск. В процессе проектирования и имплементации я обнаружил, что ряд закономерностей, которые я приведу ниже, раз за разом всплывает в самых разных сценариях.

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

Хотелось бы отметить здесь одну вещь: разумеется, для каждого из принципов есть свое место и время. Как и во всех прочих случаях, важно учитывать нюансы. Я склонен держаться этих заключений в общем случае, по той причине что, как я вижу по опыту инспекции кода и документации, люди часто принимают противоположный образ действия как вариант по умолчанию.
Читать дальше →
Всего голосов 47: ↑45 и ↓2+54
Комментарии55

Делаем вентилятор умным или как улучшить микроклимат в ванной комнате с помощью домашней автоматизации

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


Привет, Хабр!

Наверное, многие из вас понимают, что одним из ключевых моментов при эксплуатации ванной комнаты является поддержание оптимального микроклимата, поскольку избыточная влажность создает идеальную среду для развития плесени и грибка на любых пористых поверхностях, будь-то штукатурка или межшовное пространство кафеля. Для нормализации уровня влажности, в первую очередь необходимо обеспечить нормальную вентиляцию, как правило, данная задача решается установкой вытяжного вентилятора. Вместе с тем, для обеспечения эффективности, немаловажно автоматизировать процесс работы вытяжной вентиляции. В данной статье я хочу поделиться своим опытом реализации «домашней» автоматизации для решения этого вопроса. Впереди DIY и много картинок, присоединяйтесь!
Читать дальше →
Всего голосов 50: ↑49 и ↓1+59
Комментарии85

Методы формализации требований: Use Case vs User Story

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

Сегодня мы рассмотрим методы формализации требований: Use Case и User Story. В статье рассмотрим оба метода, сравним их преимущества и недостатки. А также рассмотрим, когда и при каких ситуациях использовать каждый из методов.

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

Микросервисы в представлении среднего разработчика, и как всё на самом деле

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

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

Когда спрашиваю у людей на собесах, или когда в команде решаем, как клепать очередной проект, такое порой слышу, что становится страшновато. Мне кажется, лет через 5 все компании будут обитать в мультивселенной безумия из “микросервисов”, которую они себе радостно построили, уходя от этих ваших страшных “монолитов”.

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

погрузиться в микросервисы
Всего голосов 236: ↑232 и ↓4+260
Комментарии207
1
23 ...

Информация

В рейтинге
5 491-й
Зарегистрирован
Активность