
Функция :where()
помогает писать меньше кода, применять стили ко всему списку и снимает головную боль при использовании CSS reset. В статье разберёмся, как это работает, и посмотрим на примеры использования.
User
Функция :where()
помогает писать меньше кода, применять стили ко всему списку и снимает головную боль при использовании CSS reset. В статье разберёмся, как это работает, и посмотрим на примеры использования.
Меня зовут Николай, я Frontend-разработчик IT-компании Relog. Хочу рассказать о самых распространённых ошибках в вёрстке современных проектов.
Дело в том, что лишь малая часть современных фронтендеров обращает внимание на работу с HTML и CSS, предпочитая готовые решения, вроде UI-библиотек и систем сеток. Но эти решения неидеальные и приходится дописывать обёртки вокруг них, видоизменять код, переписывать стили и совершать прочие действия для соответствия требованиям проекта. Тут-то и начинаются проблемы: вёрстка местами становится избыточной, стили переназначются через important и с каждым релизом проект всё сложней поддерживать. Я уже не говорю об удобстве использования и доступности. Об этом думают вообще в последнюю очередь.
В этой статье я расскажу лишь о небольшой части проблем, которые можно достаточно быстро решить, не прибегая к радикальному переписыванию больших частей проекта.
В настоящее время, как некоторые из вас могли заметить, достаточно часто происходят различные события меняющие уклад жизни, например эпидемия covid-19 или какие либо иные исторические события, которое могут побудить вас перейти на режим работы, которым мы назовём для удобства "полная удалёнка".
Данный режим предполагает возможность работать из любой точки планеты или хотя бы такой точки, которую некие исторические события, которые побудят вас к смене способа работы, затрагивают в минимальной степени и в этой статье мы разберём набор минимальных действий, который потребуется для того, чтобы на него перейти.
Привет!
Я Даша, психолог, немедицинский терапевт и People Care Manager в Prequel. По долгу службы и по причине собственного интереса изучаю то, с какими переживаниями и трудностями сталкивается современный человек в окружающей нас реальности.
В последнее время я часто слышу от знакомых, коллег, ровесников и собственных клиентов заявления о противоречивых отношениях с вечерним временем для отдыха и отхода ко сну. «И я жду, когда все это кончится, чтобы уже наконец-то спокойно в телефоне посидеть, пока никто не отвлекает»; «до победного вчера в интернете сидел, хотелось с удовольствием спать пораньше, но тогда это бред вообще: поспал, проснулся, на работу, поспал, проснулся…»; «я лучше фильм гляну перед сном, хоть какое-то разнообразие»
Не так давно в психологических статьях и публикациях начал использоваться термин, описывающий такие ситуации. Это новый тип всем нам знакомой прокрастинации, авторски названный «мстительной» или «из мести». На мой взгляд, таким названием подчеркнут ее разрушительный характер. Хочется «урвать» у кого-то или чего-то неопределенного кусочек свободного времени на развлечения, мнимый отдых — но жертвовать в итоге приходится собственным сном и бодростью на следующий день.
Сценарий мстительной прокрастинации: даже если вы очень вымотаны после загруженного дня, но еще полночи жертвуете на листание лент соцсетей, организм, полностью готовый ко сну, и тело, уже принявшее горизонтальное положение, ждут, когда вы вы закончите. Расслабление фиксируется только мысленно, в то время как общее состояние организма не меняется, нет ощущения успокоения. Вам кажется, что вы отдыхаете, хотя на самом деле вы все равно тратите энергию, без задней мысли жертвуете сном, чтобы «хотя бы ночью заняться чем-то для себя».
Недавно мы рассказали о трех онлайн-секвенсорах, которые помогут написать трек для домашнего проекта. Сегодня поговорим о браузерной драм-машине для творчества в свободное время — The Infinite Drum Machine.
В мире происходят страшные события, и фондовый рынок в каком-то смысле является их отражением. В этой статье я объясняю некоторые происходящие сейчас на рынке явления — возможно, эта информация поможет вам избежать убытков от продажи активов по несправедливой цене.
На протяжении всей жизни мне приходится экономить вычислительные и сетевые ресурсы: сначала были компьютеры с 300 кГц (кило — не гига!) и 32 Кбайт RAM, интернет по dial-up. Потом я решал олимпиадные задачки. Теперь имею дело с терабайтами трафика и 50 млрд событий в сутки. И хотя современные телефоны в 1 000 раз мощнее любого оборудования двадцатилетней давности, я до сих пор оптимизирую. Думал даже, что это со мной что-то не так. Но потом понял, что все постоянно что-нибудь оптимизируют.
Эта статья в меньшей степени о том, почему нужно бороться за производительность, и в большей о том, на что сейчас стоит заменить устаревший стек из JPEG, JSON, gzip и TCP — и как это сделать.
Спойлер: у нас есть решение и мы его не только показываем — ссылки на open source в конце статьи.
В новый год всегда хочется чего-то нового. А даже если не хочется, то сознание, ещё не остывшее от работы, всё равно само возьмёт и подкинет какую-нибудь офигительную идею. И если в прошлом году накануне праздников я генерил нейросетью панельные дома, то в этом году меня занесло в совершенно неожиданную комбинацию технологий — NFT, модульные синтезаторы и javascript. Казалось бы, какая между ними связь? Обо всём понемногу читайте под катом.
Дисклеймер: я рассматриваю NFT не как способ заработка, а как способ обмена некоторыми приколюхами за некоторые ништяки, причём и те и другие существуют и имеют ценность только внутри отдельно взятой криптоплатформы. Все пересчёты на фиатные деньги нерепрезентативны и не несут смысла :)
Привет, друзья!
На досуге разработал шаблон Node.js-сервера
для аутентификации/авторизации, которым хочу с вами поделиться. Надеюсь, кому-нибудь пригодится.
Обратите внимание: шаблон — это всего лишь хорошая отправная точка, с которой можно начать разработку собственного сервиса. Он не предназначен для использования в продакшне как есть, поскольку настройки, определяющие гибкость его архитектуры и уровень его безопасности, зависят от потребностей конкретного приложения и должны быть реализованы вручную.
Также обратите внимание, что в коде имеется несколько console.log
для облегчения процесса разработки приложения. В продакшне они не нужны. В производственном режиме также не следует возвращать столь информативные message
.
Если возможностей, реализованных в шаблоне, окажется недостаточно, вот парочка более продвинутых инструментов:
oidc-client
— разработчик отказался от дальнейшей поддержки, новый мейнтейнер пока не нашелсяoidc-provider
— рекомендация моих более опытных коллегЕсли вас интересует полноценная платформа для аутентификации/авторизации "из коробки", рассмотрите возможность использования Auth0
.
Сервер реализован с помощью Express.js
В качестве базы данных используется MongoDB Atlas
Мы часто рассказываем об олдскульных синтезаторах и устройствах аудиозаписи. Например, мы говорили о траутониуме, телеграфоне и терменвоксе.
Сегодня продолжим тему, но обсудим новинки, которые проектируют наши современники. Это — орган из подручных материалов, электромагнитная арфа и «синестетическая машина». Под катом — немного о каждом из инструментов.
Это работа является логическим продолжением моего первого подробного текста для сообщества об актуальных подходах к верстке Как верстать веб-интерфейсы быстро, качественно и интересно. Но, если в первом трактате, внимание уделялось, прежде всего, стилю кода, его качеству и эффектным современным возможностям различных препроцессоров и фреймворков, что демонстрировалось на некоторых конкретных специфических задачах, теперь хочется сфокусироваться на архитектурных или даже организационных аспектах веб-производства. Если вы не читали мой первый текст, но собираетесь при этом прочесть этот — не поленитесь перейти по ссылке и пробежать глазами самые последние разделы каждой из двух частей первого пособия: «Готовые решения» и «Песочницы». Этот текст начинает прямо с этих мест и развивает именно эти идеи: и о пагубности применения раскрученных-популярных «на все готовых» UI-«дизайн-систем»-фреймворков для создания кастомизированных веб-морд любой сложности и, о, по сути, полезности использования хотя бы минимального документирования и явных соглашений при разработке веб-GUI на фронтенде. Но я не стану тратить время, доказывая, что «ни в коем случае нельзя использовать Vuetify или AntDesign» для создания крупных UI-систем с полностью кастомным оформлением. Вам не нужно прикручивать себе огромный геморрой непроницаемый слой плохо кастомизируемого готового GUI для того чтобы написать кнопку или поле ввода! Если вам нужен датапикер — найдите и допилите что-нибудь под себя. Это понимание может только прийти или так и не придти с годами тяжелого опыта, когда вы будете постоянно тратить непростительно много своего времени на то, чтобы написать очевидно отвратительный CSS — «кряки с !important`ами поверх стилей библиотеки», выдумывать чудные костыли на javascript чтобы изменить дефолтное поведение виджетов на кастомное и хитрое-нестандартное затребованное вашими дизайнерами... И при этом ваши шаблоны, стили и js-обвязки будут превращаться во все менее читаемые запутанные нагромождения разнообразно оформленного кода, с различным подходом к наименованию и прочими бедами… Этот текст и написанный для него проект призваны наглядно показать «а как надо?».
Какие атаки на клиентскую часть веб-ресурсов вы знаете? XSS, CSRF, HTTP Response Splitting, Clickjacking, CSHM, атаки на CORS, следствия других ошибок программистов? В среднем разработчик вспоминает не половину, и даже не треть. Разнообразие атак зависит только от фантазии и любопытства злоумышленников, и все они созданы, чтобы навредить вашим клиентам, а значит — и вам.
Татьяна Новикова — ex-пентестер с опытом в безопасности около четырех лет, а ныне Application Security Engineer. В команде ЦАРКА (Центр анализа и расследования кибератак) она занималась пентестом — полной проверкой веб-ресурсов на безопасность. В том числе команда работала с white-box, то есть с исходными кодами, и разбирала безопасность не только бэкенда, но и фронтенда. Сейчас Татьяна перешла в Beeline Казахстан и занимается обеспечением процессов безопасной разработки.
На основе своего опыта она выступила на конференции Frontend Conf Live 2020. В одной статье, конечно, невозможно покрыть все уязвимости и потенциальные опасности, поэтому сегодня будет самое актуальное и страшное из доклада — то, что может нанести максимальный ущерб.