Обновить
256K+

Веб-разработка *

Делаем веб лучше

327,72
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Аутентификация в .NET Core gRpc с помощью JWT

Время на прочтение6 мин
Охват и читатели16K
В этой статье я расскажу об особенностях аутентификации API в gRpc сервисах с помощью JWT. Я предполагаю, что вы знакомы с JWT и заголовками HTTP, с их использованием в .NET Core WebAPI, поэтому не буду обсуждать эти детали. Когда я пытался реализовать аутентификацию в gRpc, я столкнулся с тем, что большинство примеров написаны с использованием консольных приложений. Это слишком далеко от реальности, в которой, на мой взгляд, живут разработчики. Например, я не хочу создавать канал каждый раз, когда я хочу вызвать метод сервиса. Еще я не хочу заботиться об отправке токена и пользовательской информации с каждым запросом. Вместо этого я хочу иметь инфраструктурный уровень, который будет заботиться обо всём этом за меня. Если эта тема вам интересна, то под катом будет больше. Все примеры в статье справедливы для .NET Core 3.1.
Читать дальше →

Я перехожу на JavaScript

Время на прочтение9 мин
Охват и читатели62K
После того, как я 5 лет писал на Go, я решил, что мне пора двигаться дальше. Go хорошо послужил мне. Вероятно, это был лучший язык, которым я мог бы пользоваться столько времени, но теперь настал момент оставить Go.

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



Мне не хотелось бы писать материал о том, почему я перешёл с Go на JavaScript, перечисляя минусы Go. Я полагаю, что подобные материалы оторваны от жизни и приносят читателям очень мало пользы. Поэтому я написал материал о том, что мне нравится в JavaScript, о том, что подвигло меня на переход.
Читать дальше →

Современное SEO: AMP-истории

Время на прочтение8 мин
Охват и читатели8.1K
AMP истории

Да, вот такой гибридный, русско-английский заголовок получился… Поэтому давайте сразу кое-что проясним. Итак, если SEO широко известный (в узких кругах) термин, то AMP — ещё не столь. Accelerated Mobile Pages был анонсирован Google в 2015 г. (см. статью в Википедии), как инструмент, позволяющий быстро просматривать веб-страницы на мобильных телефонах. Со временем AMP превратился в фреймворк, позволяющий создавать страницы для любых сайтов (не только для мобильных устройств), и расширил свою «номенклатуру»: собственно сайты (AMP Websites), истории (AMP Stories; тема этой статьи), рекламные блоки (AMP Ads), и электронные письма (AMP email). За всем этим, как было сказано выше, стоит Google, и если вас интересует продвижение сайтов в этой поисковой машине — полезно будет отнестись к теме AMP с должным вниманием. Но давайте сначала посмотрим как выглядят эти самые AMP-истории (UPD: с 1 мая 2020 AMP Stories переименованы в Web Stories, поэтому теперь по-русски их лучше называть Веб-истории), затем решим нужны ли они нам, и, если окажется, что нужны — рассмотрим как это сделать.
Читать дальше →

Экосистема Low-Code решений

Время на прочтение8 мин
Охват и читатели25K
image

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

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

Человек-маркировщик вместо тестировщика? Стоит ли изучать Selenium в 2020?

Время на прочтение12 мин
Охват и читатели12K


Продолжение интервью «Кому еще нужен Selenium? Использует ли кто BDD в 2020? Машинное обучение в Selenium»

В диалоге участвовали:

  • Всеволод Брекелов и Дарья Манухина(программный комитет конференции Heisenbug);
  • Анна Чернышова, разработчик библиотеки Akita и нового инструмента Healenium;
  • Иван Крутов, разработчик Selenoid.

В конце статьи можно узнать вывод, которым делятся Иван и Анна, а именно ответ на вопрос: «Стоит ли изучать Selenium или выбрать что-то другое?». Помимо этого нам удалось поговорить про:

  • Человека-маркировщика и узнать, кто он такой;
  • Ценных сотрудников в компаниях;
  • Инструментарий тестировщика;
  • Инфраструктуру для Selenium тестов;
  • Конкурентов Selenium.
Продолжить беседу

Портирование API на TypeScript как способ решения проблем

Время на прочтение6 мин
Охват и читатели4.7K
React-фронтенд Execute Program перевели с JavaScript на TypeScript. А бэкенд, написанный на Ruby, трогать не стали. Однако проблемы, связанные с этим бэкендом, заставили разработчиков проекта задуматься о переходе с Ruby на TypeScript. Перевод материала, который мы сегодня публикуем, посвящён рассказу о портировании бэкенда Execute Program с Ruby на TypeScript, и о том, какие проблемы это помогло решить.



Пользуясь Ruby-бэкендом, мы иногда забывали о том, что некое свойство API хранит массив строк, а не простую строку. Иногда мы меняли фрагмент API, обращения к которому выполнялись в разных местах, но забывали обновить код в одном из этих мест. Это — обычные проблемы динамического языка, характерные для любой системы, код которой покрыт тестами не на 100%. (Такое, хотя и реже, происходит и в случае полного покрытия кода тестами.)

В то же время, эти проблемы исчезли из фронтенда с тех пор, как мы перевели его на TypeScript. У меня больше опыта в серверном программировании, чем в клиентском, но, несмотря на это, я допускал больше ошибок при работе с бэкендом, а не с фронтендом. Всё это указывало на то, что бэкенд тоже стоит перевести на TypeScript.
Читать дальше →

Продвинутый TypeScript

Время на прочтение12 мин
Охват и читатели29K
Фридайвинг — ныряние на глубину без акваланга. Ныряльщик ощущает на себе закон Архимеда: он вытесняет некоторый объём воды, который выталкивает его обратно. Поэтому первые несколько метров даются тяжелее всего, но потом сила давления толщи воды над тобой начинает помогать двигаться глубже. Этот процесс напоминает изучение и погружение в системы типов TypeScript — по мере погружения становится немного легче. Но надо не забыть вовремя вынырнуть.


Фотография с сайта One Ocean One Breath.

Михаил Башуров (saitonakamura) — Senior Frontend Engineer в компании WiseBits, фанат TypeScript и фридайвер-любитель. Аналогии изучения TypeScript и ныряния на глубину не случайны. Михаил расскажет, что такое discriminated unions, как использовать вывод типов, зачем нужна номинальная совместимость и брендирование. Задержите дыхание и погружайтесь.

Стрим для тестировщиков и не только

Время на прочтение1 мин
Охват и читатели4.5K
Представляем вам новый формат шоу, который похож на запись подкаста или интервью, но с возможностью позвонить ведущим и задать свой вопрос. В эту пятницу, 1 мая, мы с Артемом Ерошенко поговорим о тестировании и ответим на вопросы зрителей.



Под катом — все детали и ссылка на регистрацию.
Читать дальше →

Открытая конференция PHP Russia Online

Время на прочтение5 мин
Охват и читатели4.3K
На единственной конференции по PHP в России должно было быть 22 доклада от разработчиков инструментов, которыми мы все пользуемся, и множество камерных событий. Больше половины наших спикеров должны были прилететь из разных стран, поэтому угроза переноса или отмены нависла над нами еще до официальных российских постановлений. А после всё пошло не так…

Но мы не отчаиваемся и планируем провести большую оффлайн-конференцию 14 сентября в Москве, а чтобы PHP-сообщество не скучало до осени, 13 мая пройдет онлайн-конференция PHP Russia Online и, благодаря поддержке компании Badoo, она стала бесплатной.



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

Для опытных разработчиков PHP Russia Online даст возможность услышать выступления и задать вопросы лидерам PHP-сообщества — всегда же лучше получать информацию из первых рук. А для тех, кто уже добился первых успехов в PHP-разработке, но еще не дорос до уровня middle, — заряд вдохновения и ориентиры, на что обращать внимание, куда развиваться.
Читать дальше →

Цена JavaScript-фреймворков

Время на прочтение13 мин
Охват и читатели18K
Нет более быстрого способа замедлить сайт (такой вот каламбур), чем использовать на нём кучу JavaScript-кода. При использовании JavaScript приходится расплачиваться за это производительностью проектов не менее чем четыре раза. Вот чем JavaScript-код сайта нагружает системы пользователей:

  • Загрузка файла по сети.
  • Парсинг и компиляция распакованного исходного кода после загрузки.
  • Выполнение JavaScript-кода.
  • Потребление памяти.

Эта комбинация оказывается очень дорогой.



А мы включаем в состав своих проектов всё больше и больше JS-кода. По мере того, как организации движутся в сторону сайтов, работающих на базе фреймворков и библиотек вроде React, Vue и прочих, мы делаем основной функционал сайтов очень сильно зависящим от JavaScript.

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

Выяснить это мне помог проект HTTP Archive.
Читать дальше →

Как уменьшить размер бандла — стратегия однобуквенных классов в css-modules

Время на прочтение2 мин
Охват и читатели3.8K
Улучшаем компрессию бандлов на 40% от размера файла, путём замены стандартного хеширования на однобуквенный префикс + хеш пути файла.
Читать дальше →

Реализуем интересный эффект с помощью Anime.js

Время на прочтение3 мин
Охват и читатели9.1K


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

В этой статье, как следует из названия, мы займемся реализацией одного занимательного эффекта с использованием одной любопытной библиотеки (anime.js). Я не буду петь дифирамбы этой библиотеке, но тем, кто плотно занимается анимацией, определенно стоит обратить на нее внимание. Простой интерфейс + отличная документация, что еще нужно для творчества?

По материалам этой замечательной статьи.

Автор указанной статьи назвал свой эффект «Анимация следа из частиц» (Particle Trail Animation).



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

Во-первых, сделаем частицы разноцветными. Потому что один цвет — это скучно.

Во-вторых, анимация будет запускаться по клику. Потому что бесконечная анимация раздражает.

В-третьих, привяжем центр анимации (спирали) к месту клика. Потому что пользовательский опыт прежде всего.

Мы не будем использовать холст (canvas). Анимироваться будет множество маленьких блоков (div).

Итак, поехали (как сказал Гагарин, отправляясь в космос).

Использование OAuth и API VK в Go

Время на прочтение3 мин
Охват и читатели15K
Сегодняшняя статья будет посвящена разработке программы на Go, использующей API vk.com для авторизации и загрузки данных о пользователе.

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

Ближайшие события

Эффективность Brotli в реальном мире

Время на прочтение13 мин
Охват и читатели29K
Одним из наиболее фундаментальных правил разработки быстрых веб-сайтов является оптимизация их ресурсов. Если речь идёт о текстовых ресурсах — о коде, написанном на HTML, CSS и JavaScript, это значит, что мы говорим о сжатии данных.



Стандартом де-факто в деле сжатия текстовых ресурсов в веб является метод Gzip. А именно, около 80% сжатых ресурсов, получаемых при загрузках сайтов, сжаты с использованием Gzip. Для сжатия оставшихся 20% ресурсов используется гораздо более новый алгоритм — Brotli.
Читать дальше →

Гибкая разметка без медиа-запросов: функции min(), max(), clamp()

Время на прочтение9 мин
Охват и читатели15K

Перевод «Flexible layouts without media queries» Dannie Vinther



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

Кому еще нужен Selenium? Использует ли кто BDD в 2020? Машинное обучение в Selenium

Время на прочтение15 мин
Охват и читатели13K
Каждый раз, когда натыкаюсь на новую статью про то, как использовать BDD-подход и как он улучшает жизнь разработки, тестирования и менеджмента — я хватаюсь за лицо. (А сейчас не знаю как быть. Не хватаюсь за лицо, а просто грущу). Впрочем, такие же ощущения могут вызывать задачи по написанию Selenium тестов. Захотелось поговорить об этом с теми, кто сталкивается с Selenium тестами и разрабатывает различные инструменты для удобной работы с ними.

image

Мы (Всеволод Брекелов и Дарья Манухина, программный комитет конференции Heisenbug) пообщались с Анной Чернышовой, разработчиком библиотеки Akita и нового инструмента Healenium (ее доклад про BDD), и Иваном Крутовым, разработчиком Selenoid. Иван занимается инфраструктурой для Selenium тестов не первый год (Один из его мастер классов). Обсудили:

  • BDD подход в 2020;
  • Selenium и его развитие;
  • Карьерный рост;
  • Машинное обучение и Selenium.

Поучаствовать в беседе

Как искать баги на фронтенде: 4 основных этапа

Время на прочтение7 мин
Охват и читатели18K

В этой статье я рассмотрю вопрос выявления и обработки ошибок, возникающих на фронтенде (браузер или web-view).

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

Дайджест свежих материалов из мира фронтенда за последнюю неделю №412 (20 — 26 апреля 2020)

Время на прочтение3 мин
Охват и читатели10K
Предлагаем вашему вниманию подборку с ссылками на новые материалы из области фронтенда и около него.

Читать дальше →

Новая лицензия для приложений в Open Source Initiative — разбираемся, почему ей довольны не все

Время на прочтение3 мин
Охват и читатели2.7K
Лицензию назвали Cryptographic Autonomy License. Процесс одобрения был долгим и сопровождался жаркими дискуссиями внутри OSI. Часть сотрудников посчитала, что лицензия нарушает принципы открытого программного обеспечения. Из-за разногласий организацию даже покинул её сооснователь Брюс Перенс. Разбираемся, что к чему в этой в ситуации.

Что еще у нас есть на Хабре: материалы об истории DNS, регулировании ИТ и сетевом железе.

Читать дальше →

[ В закладки ] CSS: использование внутренних и внешних отступов

Время на прочтение18 мин
Охват и читатели113K
Если несколько элементов веб-страницы расположены близко друг к другу, то у пользователей возникает такое ощущение, что у этих элементов есть что-то общее. Группировка элементов помогает пользователю понять их взаимосвязь благодаря оценке расстояния между ними. Если бы все элементы были бы расположены на одинаковом расстоянии друг от друга, пользователю сложно было бы, просматривая страницу, узнать о том, какие из них связаны друг с другом, а какие — нет.


Эта статья посвящена всему, что нужно знать о настройке расстояний между элементами и о настройке внутренних пространств элементов. В частности, речь пойдёт о том, в каких ситуациях стоит использовать внутренние отступы (padding), а в каких — внешние (margin).
Читать дальше →