Обновить
512K+

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

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

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

Как сделать React приложение быстрее при помощи совместного размещения состояний

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

В статье речь идет о state colocation, то есть о совместном размещении состояний, этот термин можно было бы еще перевести как стейт колокейшн или стейт колокация.


Одной из основных причин замедления работы React приложения является его глобальное состояние (global state). Я покажу это на примере очень простого приложения, после чего приведу более близкий к реальной жизни пример.


Вот простенькое приложение в котором можно ввести имя для собаки (если окно не работает, вот ссылка):



Если вы поиграете с этим приложением то вскоре обнаружите что оно очень медленно работает. При взаимодействии с любым полем ввода возникают заметные проблемы с производительностью. В такой ситуации можно было бы использовать спасательный круг в виде React.memo и обернуть им все компоненты с медленным рендером. Но давайте попробуем решить эту проблему по другому.


Вот код этого приложения:

Полезные советы по Python, которых вы ещё не встречали. Часть 2

Время на прочтение7 мин
Охват и читатели39K
Недавно мы опубликовали перевод материала, в котором были приведены полезные советы для Python-программистов. У того материала есть продолжение, которое мы представляем вашему вниманию сегодня.


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

Йошкар-Ола, вообще, айтишный город?

Время на прочтение4 мин
Охват и читатели7K
Именно таким вопросом мы задались, встретив ребят оттуда на казанском PHP-митапе. Оказалось, всего за месяц они смогли раскачать местное сообщество — небольшое расследование со ссылками на городские чаты, активности и каналы под катом.



А если вам точно не хватало развиртуализации, приходите 1 февраля на 2-й PHP-митап от местного чата.

Работа с IPv6 в PHP

Время на прочтение6 мин
Охват и читатели8.8K
Недавно мы получили статус LIR и /29 блок IPv6. А следом возникла необходимость вести учёт назначенных подсетей. И коль скоро наш биллинг написан на PHP, пришлось немного проникнуться вопросом и осознать, что этот язык — не самый дружелюбный в плане работы с IPv6. Под катом — наше решение возникших задач по работе с адресами и диапазонами. Возможно, не самое элегантное, но поставленные задачи выполняет.

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

PHP-Дайджест № 172 (14 – 27 января 2020)

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

Свежая подборка со ссылками на новости и материалы. В выпуске: PHP 7.4.2 и другие релизы, Stringable RFC, обзор PHP 8, порция полезных инструментов, 4 ближайших митапа, видеозаписи с конференций, стримы и многое другое.

Приятного чтения!


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

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

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

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

Серфинг интернета геймпадом (Javascript)

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


Сидя за столом, вы используете мышку и клавиатуру, сидя на диване — скорей всего тачпад ноутбука или тачскрин планшета. Возможно, вы даже используете Leap Motion и управляете компьютером с помощью жестов. Как вы уже поняли, существует множество способов серфить интернет и управлять вашим компьютером. Геймпад может быть одним из них.


В этой статье я поделюсь с вами как:


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

Подключайте свой геймпад используя USB или Bluetooth и давайте начнем.

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

Концепция фильтрации моделей на примере Laravel

Время на прочтение4 мин
Охват и читатели30K
Хочу представить вашему вниманию концепцию организации фильтрации по URL-запросу. Для примера буду использовать язык PHP и фреймворк Laravel.

Концепция


Идея заключается в создании универсального класса QueryFilter для работы с фильтрами.

GET /posts?title=source&status=active

Использую данный пример, мы будем фильтровать посты (модель Post) по следующим критериям:

  • Наличие слова «source» в поле title;
  • Значение «publish» в поле status;
Читать дальше →

Реализуем визуальный эффект из фильма «Матрица»

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


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

На днях пересмотрел «Матрицу». Слушайте, до чего же классный фильм (это касается только первой части). В очередной раз обратил внимание на «падающие» строчки с иероглифами на ихних экранах (намеренно использовал слово «ихних» забавы ради). Задумался о том, как это можно реализовать… максимально простым способом (ибо лень). Вот что у меня получилось.
Читать дальше →

Микробраузеры повсюду. Но что мы о них знаем?

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

Рис. 1. Превью одной и той же страницы в iMessage (слева), Hangouts и WhatsApp (справа)

Если упомянуть любой URL в твите, на Slack-канале, в Telegram или WhatsApp — ссылка развернётся в превью. Оно даёт примерное представление, как выглядит настоящая веб-страница.

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

Вот основные факты о микробраузерах, которые должен знать каждый веб-разработчик.
Читать дальше →

6 рекомендаций по разработке безопасных Go-приложений

Время на прочтение9 мин
Охват и читатели16K
В последние годы Golang распространяется всё шире и шире. Успешные проекты, вроде Docker, Kubernetes и Terraform, сделали огромные ставки на этот язык программирования. Go стал стандартом де-факто в области создания инструментов командной строки. А если говорить о безопасности, то оказывается, что в этой сфере у Go всё в полнейшем порядке. А именно, с 2002 года в реестре CVE имеется запись лишь об одной уязвимости Golang.

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



Автор статьи, перевод которой мы сегодня публикуем, сформулировал, на основе данных OWASP, 6 рекомендаций по разработке безопасных приложений на Go.
Читать дальше →

Prettier в крупных проектах: тратим 20 минут на настройку, забываем о форматировании навсегда

Время на прочтение3 мин
Охват и читатели47K
Разработчики часто не могут договориться о форматировании кода, и типичный рабочий день для многих начинает выглядеть так: кофе, кодинг, всё мирно и хорошо, — а потом, бац, и наступает код-ревью, на котором выясняется, что ты где-то поставил скобочки не так или не перенес что-то на новую строчку.



Год назад одна из команд в Skyeng сталкивалась с такими холиварами почти на каждом ревью. Но затем человек, у которого больше всех болело, сказал: «Теперь живем на Prettier'e, согласны?» За следующие месяцы ребята ни разу не поднимали вопрос о форматировании, а теперь эта штука стоит на всем монорепозитории фронтенда — и его использует каждая команда, которая туда заезжает.
Читать дальше →

Разговоры про PostgreSQL. Интервью с Алексеем Лесовским в подкасте «Цинковый прод». Часть первая

Время на прочтение13 мин
Охват и читатели5.2K
Недавно мы пригласили в эфир "Цинкового прода" Алексея Лесовского из компании Data Egret. Разговор получился интересный и познавательный, поэтому предлагаю вашему вниманию расшифровку этого выпуска. Из-за внушительного объема пришлось разбить текст на части. Если лень ждать продолжения — можно просто послушать аудиоверсию здесь.

Всем привет, это сороковой выпуск подкаста "Цинковый прод", и с нами в студии постоянные ведущие Антон Околелов, Никита Васильченко и Грицак Олег.


Антон: Итак, у нас сегодня гость, Алексей Лесовский. Лёша, представься пожалуйста, кто ты, чем занимаешься и так далее.

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

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

Вся выдача Google теперь выглядит как реклама

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

После редизайна органическая выдача Google (внизу) практически неотличима от рекламных объявлений

Начиная с 13 января 2020 года компания Google начала выкатывать новый дизайн поисковой выдачи для десктопов. Он практически стирает грань между органическими результатами поиска и рекламными объявлениями сверху.

Теперь единственное, что отличает рекламные ссылки от нормальных — это маленький чёрно-белый значок "Ad". Значок отформатирован так, чтобы совпадать по размеру с новыми фавиконами в результатах поиска.

Парочка приемов работы с iframe

Время на прочтение5 мин
Охват и читатели20K
Доброго времени суток, друзья!

Задача


Сделать нечто похожее на Dashboard на Codepen.

Результат должен быть примерно следующим:


Возможное решение


Разметка одной секции может выглядеть так:
<section>
    <h3>Title</h3>
    <div class="viewport">
        <iframe src="index.html" seamless scrolling="no"></iframe>
    </div>
    <div class="buttons">
        <button onclick="window.open('index.html', '_blank')" title="fullscreen">demo</button>
        <button onclick="document.location='code.7z'" title="download">code</button>
    </div>
</section>
Читать дальше →

Современный курс по Node.js в 2020

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


Дорогие товарищи инженеры, сообщество Метархия представляет вашему вниманию современный курс по Node.js, который включает глубокий разбор всех возможностей и аспектов платформы. Основной упор делается на то, как создавать надежные высоконагруженные сервера приложений и API без привязки к конкретному фреймворку и даже протоколу, т.е. абстрагировать бизнес-логику в отдельный слой. К лекциям прикреплено множество примеров кода, демонстрирующих гибкую структуру приложений и архитектурные приемы, в том числе работу с СУБД через слой доступа к данным, создание интерактивных приложений на вебсокетах, обеспечение безопасности, Graceful shutdown, межпроцессовое взаимодействие, предотвращение утечек памяти, масштабирование и кластеризацию при помощи процессов и потоков. На текущий момент в курсе 38 лекций (около 35 и ½ часов видео), 37 репозиториев с примерами кода, 4 PDF со слайдами. Перед основной частью курса по Node.js нужно сначала освоить хоть частично курс по асинхронному программированию.

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

Moscow JS Meetup в Райффайзенбанке: сохраняйте трансляцию

Время на прочтение2 мин
Охват и читатели1.8K
Присоединяйтесь к трансляции Moscow JS Meetup 30 января: будем отвечать на вопрос, что такое «чистый код», найдем максимум багов за минимум времени, пройдем путь к разработке расширяемых интерфейсов и узнаем про способы перформанса Webpack и Babel. Планы — огонь!

Подключайтесь в 19:30!


6 уроков, извлечённых из опыта оптимизации производительности Node.js-сервиса

Время на прочтение6 мин
Охват и читатели6.9K
В компании Klarna прилагают большие усилия к тому, чтобы помочь разработчикам в создании высококачественных и безопасных сервисов. Один из инструментов, который предназначен для разработчиков, представляет собой платформу для выполнения A/B-тестов. Важнейшим компонентом этой системы является множество процессов, которые, для каждого поступающего запроса, принимают решение о том, к какой разновидности тестов (A или B) направить запрос. Это, в свою очередь, определяет то, каким цветом вывести кнопку, какой макет показать пользователю, или даже то, какой пакет сторонней разработки использовать. Эти решения оказывают непосредственное воздействие на впечатления пользователей.



В Klarna используют платформу Node.js. Статья, перевод которой мы публикуем сегодня, посвящена тем урокам, которые специалистам компании удалось извлечь из опыта оптимизации производительности своего сервиса.
Читать дальше →

Чистый код для TypeScript — Часть 2

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

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


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

Как использовать Инверсию Управления в JavaScript и в Reactjs для упрощения работы с кодом

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

Как использовать Инверсию Управления в JavaScript и в Reactjs для упрощения работы с кодом


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


Если вы уже писали код который используется больше чем в одном месте, то вам знакома такая ситуация:


  1. Вы создаете многократно используемый фрагмент кода (это может быть функция, React компонент, React хук и тд) и делитесь им (для совместной работы или публикуя в опенсорс).
  2. Кто-то обращается к вам с просьбой добавить новый функционал. Ваш код не поддерживает предложенный функционал, но мог бы, если бы вы сделали небольшое изменение.
  3. Вы добавляете новый аргумент/проп/опцию в свой код и в связанную с ним логику для поддержания работы этого нового функционала.
  4. Повторите стадии 2 и 3 несколько раз (или много-много раз).
  5. Теперь ваш повторно используемый код тяжело использовать и поддерживать.

Что именно делает код кошмаром для использования и поддержки? Есть несколько аспектов, которые могут сделать ваш код проблемным:

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