![](https://webcf.waybackmachine.org/web/20220422104206im_/https://habrastorage.org/getpro/habr/upload_files/78d/d49/fb6/78dd49fb6584884d9f4060927cc820d7.gif)
![](http://webcf.waybackmachine.org/web/20220422104206im_/https://habrastorage.org/getpro/habr/hub/2a2/ac7/3dd/2a2ac73dd5cddc6e05b47a3d502b4c0d.png)
Разработка веб-сайтов *
Делаем веб лучше
Новости
Flutter: Почему использует язык Dart
![](https://webcf.waybackmachine.org/web/20220422104206im_/https://habrastorage.org/getpro/habr/upload_files/33e/022/33a/33e02233aeaa0151e3c12c2b93c31244.png)
Почему Flutter использует язык Dart? Основные преимущества языка Dart.
Сложность: Новичок.
Многие лингвисты считают, что естественный язык, на котором говорит человек, влияет на то, как он думает. Применяется ли та же концепция к компьютерным языкам? Программисты, работающие с разными языками программирования, часто предлагают совершенно разные решения проблем. В качестве более радикального примера, ученые-компьютерщики убрали оператор goto, чтобы поощрять более структурированные программы (не совсем тоже самое, что тоталитарные лидеры в романе "1984", удаляющие еретические слова из естественного языка, чтобы устранить мыслепреступления, но вы поняли идею).
Какое это имеет отношение к Flutter и Dart? На самом деле совсем немного. Ранняя команда Flutter оценила более дюжины языков и выбрала Dart, потому что он соответствовал тому, как они создавали пользовательские интерфейсы.
Dart — главная причина, по которой разработчики любят Flutter.
Joomla-дайджест за 1-й квартал 2022 года
![](https://webcf.waybackmachine.org/web/20220422104206im_/https://habrastorage.org/getpro/habr/upload_files/e3a/7e6/674/e3a7e667400e3d65ab94b3554d662c07.jpg)
На самом деле чуть больше 😍. Все главные новости из мира Joomla с момента выхода предыдущего дайджеста 30 ноября 2021 года в одной статье. Традиционно наш дайджест обозревает новости, расширения, шаблоны и статьи из мира Joomla. Прошлый выпуск вы можете прочитать здесь.
Путь покупателя интернет-магазина (Customer Journey) с использованием УФМТП
![](https://webcf.waybackmachine.org/web/20220422104206im_/https://habrastorage.org/getpro/habr/upload_files/638/6d6/753/6386d6753f0a514f9195cb7f494eae51.png)
Недавно у меня вышла статья под названием «Универсальная функциональная модель торгового предприятия в нотации IDEF0». И одно из пожеланий читателей было пояснить подробнее, как я лично пользуюсь этой моделью и как вообще ее можно применять на практике. В этой статье я выполню просьбу читателей. И на примере взаимодействия покупателей с интернет-магазином продемонстрирую практическое применение этой модели.
Здесь мы будем говорить именно о покупателе интернет-магазина, а не о потенциальном покупателе или посетителе. С точки зрения функциональной модели, это разделение я вообще не использую. Покупатель – это человек, который приходит в магазин, изучает информацию и, в конце концов, совершает покупку.
Регистрозависимые ли ключи в JSON
![](https://webcf.waybackmachine.org/web/20220422104206im_/https://habrastorage.org/getpro/habr/upload_files/cd3/8d3/b9f/cd38d3b9f1bbb1fdb119d4ceaadc56d5.png)
Конечно, да, скажете вы. Но не было бы этой статьи, если бы не было вопроса.
Так же эта статья будет вам полезна, если вы используете эквайринг от Тинькофф.
Немного предыстории. Какое-то время назад на одном из своих проектов я поменял онлайн-эквайринг на Тинькофф и уже после отладки начали всплывать странные ошибки с оплатой: хэш-подпись запроса считалась неверно. Причем, только на реальных платежах, что еще больше омрачало ситуацию.
Проблема оказалась в поле Data json-объекта, который приходит от банка в нотификации платежа. В одних случаях оно приходит как Data, а в других DATA (в верхнем регистре).
О проблеме я сообщил в поддержку Тинькофф и тут началось интересное. Поддержка утверждает, что регистр ключей в JSON не играет никакой роли. Давайте это проверим.
Зачем использовать materialize и dematerialize операторы и что такое Notification в RxJS?
![](https://webcf.waybackmachine.org/web/20220422104206im_/https://habrastorage.org/getpro/habr/upload_files/fec/173/3b6/fec1733b619f743e0b7c4e1147dcb392.jpg)
Вы когда-нибудь встречали такие операторы, как materialize и dematerialize в RxJS? А что насчет класса Notification? Вероятно, многие слышали, но не до конца представляли, где их можно применить на практике.
В этой статье я расскажу, что делают эти операторы и приведу несколько примеров, которые в будущем вам могут пригодиться.
Materialize
Для начала вспомним, какие типы значений может эмитить объект типа Observable: это next, error и complete. Если вы не помните, что это значит, здесь можно почитать.
Соответственно и про observer, набор коллбэков (onNext, onError, onComplete), тоже советую вспомнить.
Вот что говорится в документации о materialize операторе: «A function that returns an Observable that emits Notification objects that wrap the original emissions from the source Observable with metadata».
«Идеальный процесс работы» UX/UI Дизайнера
![](https://webcf.waybackmachine.org/web/20220422104206im_/https://habrastorage.org/getpro/habr/upload_files/72c/290/012/72c29001263eec24854a6c203d2df9ee.jpeg)
Итак, вообще для чего нужна последовательность в проектировании? Я бы привела аналогию с замешиванием теста. Есть много нюансов, которые нужно делать последовательно, не перемешивая процессы, иначе тесто получится не пригодным для наших самых красивых и вкусных синабонов. С этапами работы все так же. Ты не можешь отрисовать дизайн, а потом искать пользователей. Твоя работа окажется бесполезной и не удовлетворит конечного потребителя. Здесь я расскажу про каждый этап и какие лучше применять исследования, фреймворки и методологии.
Flutter: Что нового в версии 2.10
![](https://webcf.waybackmachine.org/web/20220422104206im_/https://habrastorage.org/getpro/habr/upload_files/635/a94/fd4/635a94fd433bb4c67a1357e72addc741.png)
Что нового в версии 2.10? Основные нововведения.
Сложность: Новичок.
Релиз Flutter версии 2.10 состоялся 03.02.2022 и в рамках этого релиза было объявлено о нескольких интересных вещах, включая большое обновление поддержки Flutter для Windows, несколько значительных улучшений производительности, новую поддержку значков и цветов в фреймворке, а также некоторые улучшения инструментов. Кроме того, было произведено удаление канала разработки, сокращение поддержки старых версий iOS и небольшое количество критических изменений о которых вы узнаете в статье. Приступим!
Объяснение микрофронтендов
![](https://webcf.waybackmachine.org/web/20220422104206im_/https://habrastorage.org/getpro/habr/upload_files/c89/c93/86c/c89c9386ceedc68f2008a73dcaa58ca5.jpg)
Я написал данный пост, так как чувствую, что Микрофронтенды это стало не просто модное слово, они уже начали распространятся на большие проекты.
Микрофронтенды могут быть следующей важной вехой в фронтенд разработке.
Давайте я вам расскажу почему!
Производительность фронтенда: большое приложение на реактивном SSR-топливе
![](https://webcf.waybackmachine.org/web/20220422104206im_/https://habrastorage.org/getpro/habr/upload_files/069/c4e/4c9/069c4e4c9556e900592bbbe7ab733549.jpg)
Каждый день сайтом SuperJob пользуется более миллиона людей. Как построить архитектуру фронта, чтобы приложение загружалось быстро и при этом выполняло требования поисковой оптимизации? Как мы можем это измерить?
Значительно повысить производительность можно при помощи серверного рендеринга, но какая будет цена у такой оптимизации? Какой инструмент выбрать — готовую библиотеку или собственное решение? Какие ограничения в дальнейшем могут быть вызваны выбором того или иного подхода?
На все эти вопросы ответил frontend-разработчик Виталий Старов на конференции FrontendConf 2021. Он рассказал о серверном рендеринге на примере приложения SuperJob. Читайте под катом, как SuperJob пришли к своей реализации серверного рендеринга, узнав по пути много интересного. Узнаете, когда хорош SSR и как он работает, из чего он устроен, чем может быть полезен и кому.
Свой Composer без баннеров
Короткий мануал их 7 шагов о том, как собрать из официальных исходников свой Composer без политических лозунгов авторов или просто внести свои изменения и подписать валидной сигнатурой.
Всё о веб-анимациях в 2022
![](https://webcf.waybackmachine.org/web/20220422104206im_/https://habrastorage.org/getpro/habr/upload_files/8c6/150/f34/8c6150f3409570f646d5778f2fdcfeab.gif)
Анимация — это переход элемента от одного состояния к другому. Пользователям нравится, когда на сайте что-то вращается, появляются новые элементы или происходит что-то неожиданное. Если на сайте много таких «вау-эффектов», он может стать вирусным или получить какую-нибудь премию, например, Awwwards.
Чаще всего дизайнер отрисовывает анимацию в специальной программе, например, After Effects, и присылает верстальщику видео, по которому нужно повторить анимацию. А вот как реализовать эту идею — решать разработчику. Он может использовать три вида анимаций: CSS-анимации, SVG-анимации или JavaScript-анимации.
Давайте разберёмся, что представляет собой каждый из видов, а ещё как создать и оптимизировать простую анимацию своими руками. И осторожно, под катом много гифок и видео.
Анимация на КПДВ: Дилан Баунманн, codepen.
Фантастические веб-уязвимости и где они обитают
![](https://webcf.waybackmachine.org/web/20220422104206im_/https://habrastorage.org/getpro/habr/upload_files/4a8/5eb/78c/4a85eb78ceb1bf60ba530b4516d4b708.png)
Мы часто слышим в новостях фразы «Хакеры атаковали», «Хакеры взломали», «Хакеры украли» и подобные. Как сообщают legaljobs, хакеры проводят 1 атаку в вебе каждые 32 секунды. По прогнозам cybercrime magazine, ущерб от киберпреступлений к 2025 году составит $10,5 трлн против $3 трлн в 2015 году. Но почему у них получается произвести атаку, как это происходит и кто же они такие, “эти хацкеры”?
Рассмотрим пять основных уязвимостей клиентской части веб-приложений, которые входят или входили до недавнего времени в список OWASP. Постараемся максимально простым языком и с примерами показать, как они работают, из-за чего возникают, а также поделимся инструментами и рекомендациями, как обезопасить себя, пользователя и свой продукт от возможного взлома. Кроме этого, расскажем, какими знаниями, по нашему мнению, должен обладать frontend-разработчик, чтобы не попасть впросак.
Статья предназначена как frontend-разработчикам, которые хотят познакомиться с основными видами уязвимостей на клиенте и методами защиты от них, владельцам продуктов, которые заботятся о безопасности своих пользователей, так и тем, кто искал повод «никогда больше не быть онлайн».
История одного CRUD'а
В 2015 году, когда я пришёл на своё текущее место работы, мне было непривычно от необыкновенной свободы действий. Буквально, на новом месте можно было проявить весь творческий потенциал как DevOps-евангелиста. Мне нравилось выстраивать процессы, автоматизировать рутину, делать разработку удобной. Больше всего я люблю оптимизации, а больше всего ненавижу - рутину.
Эта история одной боли и попытке не просто "принять обезболивающее", а реально излечить её. Поэтому готовьтесь переварить лонгрид.
Как сделать sportsbook
Я некоторое время разрабатывал спортсбуки, а также их врагов (парсеры, сканеры, боты для ставок) и решил поделиться опытом.
Данная статья не затрагивает нравственные аспекты данного вида бизнеса, а выполняет исключительно информационную роль.
Спортсбуки должны использоваться только легально.
Меню Joomla 3 в админке Joomla 4
![](https://webcf.waybackmachine.org/web/20220422104206im_/https://habrastorage.org/getpro/habr/upload_files/4e0/a62/69f/4e0a6269f175ab0083a43d3951657835.jpg)
Многим ещё не привычна структура меню в админке Joomla 4 и поэтому появился модуль Phoca Top Menu Module. Однако, того же результата можно добиться штатными средствами и сделать структуру меню панели администратора как у Joomla 3, она становится почти такая же. Да и в принципе, к построению админки можно относиться так же, как и к шаблону сайта для фронта.
Нужно зайти в Система - Модули панели управления - Admin menu. В нём есть "Тип предустановки" меню. Включаем "Альтернативное главное меню".
Как упростить работу с базами данных в Node.js с помощью Objection.js
![](https://webcf.waybackmachine.org/web/20220422104206im_/https://habrastorage.org/getpro/habr/upload_files/f0a/fc9/ee3/f0afc9ee3f9e5317bde2c17908cc0f8d.jpg)
Objection.js — минималистичная ORM-библиотека для Node.js, которая сильно упрощает взаимодействие с базами данных и не перегружена дополнительными функциями, как Sequelize или TypeORM. Разбираемся, в чем ее специфика и как строить запросы с ее помощью.
Недавно я увидел на StackOverflow историю разработчика, который столкнулся с проблемой использования ORM . Этот кейс натолкнул меня на мысль написать статью о альтернативе Sequelize — Objection.js, библиотеке, которая решает множество проблем ORM.
Руководство по Supabase. Часть 2
![](https://webcf.waybackmachine.org/web/20220422104206im_/https://habrastorage.org/webt/pw/hr/ps/pwhrpsl3_b_b80p3rzkdgc5yu_c.jpeg)
Привет, друзья!
В этом цикле из 2 статей я хочу рассказать вам о Supabase — открытой (open source), т.е. бесплатной альтернативе Firebase. В первой статье мы рассмотрели теорию, в этой — разработаем полноценное social app
с аутентификацией, базой данных, хранилищем файлов и обработкой изменения данных в режиме реального времени.
Репозиторий с исходным кодом проекта.
Если вам это интересно, прошу под кат.
Legal design и договор о сайте
![](https://webcf.waybackmachine.org/web/20220422104206im_/https://habrastorage.org/getpro/habr/upload_files/5dc/f44/9dc/5dcf449dc1f5bcc02351282718f7bacd.png)
Дизайн-мышление - модный тренд, который за время пандемии добрался и до юристов. Если законы все еще пишут крючковатым языком, то юристы, занятые в частном секторе (B2B, судебные юристы и т.д.), стремятся сделать документы не только выигрышными, но и понятными.
Ознакомьтесь с подходами дизайн-мышления к договору и шаблоном задизайненного договора. Что такое legal design? только буллиты, картинки и комиксы с договором? или же нечто большее, нужное или даже необходимое?