Search
Write a publication
Pull to refresh
1
0
Send message

Почему (сегодня) return 444 не всегда полезен

Reading time7 min
Views38K
В web-сервере Nginx есть замечательный код ответа 444, который «закрывает» соединение без отправки данных. Данный функционал весьма полезен при фильтрации паразитного трафика — если мы уверены, что клиент по каким-то критериям не является валидным, то нет необходимости его уведомлять, например, 403-м ответом. Эффективнее просто прекратить передачу данных, что, зачастую, позволяет существенно снизить нагрузку на сервер.

Рекомендации использовать такие ответы можно встретить повсеместно в инструкциях по блокировках переходов по ссылкам с популярных сайтов и реферального спама, защите от DDoS и т.п.

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

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

Reading time6 min
Views90K
Джулия Эванс, автор материала, перевод которого мы сегодня публикуем, решила рассказать об одном из своих любимых сетевых инструментов, который называется Wireshark. Это — мощная и сложная программа, оснащённая графическим интерфейсом, предназначенная для анализа трафика в компьютерных сетях. Джулия говорит, что на практике пользуется лишь немногими возможностями Wireshark, но они обычно оказываются очень кстати. Здесь она хочет поделиться со всеми желающими рассказом о самых полезных приёмах работы с программой и надеется, что они пригодятся не только ей, но и всем, кому приходится решать сетевые проблемы.


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

Топ-10 библиотек для React на GitHub

Reading time6 min
Views26K
Как искать хорошие инструменты для разработки веб-проектов? Один из способов поиска заключается в анализе статистики проектов из интересующей вас сферы на GitHub. Если, например, некая библиотека пользуется популярностью, то это, по меньшей мере, говорит о том, что на неё стоит взглянуть. Вполне возможно, что одна из таких библиотек окажется именно тем, что вам нужно.

image

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

Автор материала, перевод которого мы сегодня публикуем, говорит о том, что из опыта знает о важности опенсорсных проектов в деле веб-разработки. Однако, из-за того, что на GitHub присутствует очень много библиотек для React, программисты оказываются избалованы выбором. Поэтому было бы неплохо сузить рассматриваемые варианты до буквально нескольких проектов. Перед вами — обзор первой десятки самых популярных библиотек для React с GitHub, ранжированных по количеству присвоенных им звёзд.
Читать дальше →

Понимание жизненного цикла React-компонента

Reading time9 min
Views183K
React предоставляет разработчикам множество методов и «хуков», которые вызываются во время жизненного цикла компонента, они позволяют нам обновлять UI и состояние приложения. Когда необходимо использовать каждый из них, что необходимо делать и в каких методах, а от чего лучше отказаться, является ключевым моментом к пониманию как работать с React.
Читать дальше →

Становимся волшебниками в программировании. Часть 1

Reading time1 min
Views22K
Если вы давно хотели стать программистом, но не знали с чего начать, то начните с этого комикса. В нем о том, как задавать правильные вопросы, чтобы получать полезные ответы и читать исходный код.

image

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

Рефакторинг программы на Go: ускорение в 23 раза

Reading time8 min
Views35K


Привет! Меня зовут Марко, я работаю в Badoo в отделе «Платформы». У нас довольно много всего написано на Go, и зачастую это критичные к производительности системы. Именно поэтому сегодня я предлагаю вашему вниманию перевод статьи, которая мне очень понравилась и, я уверен, будет вам очень полезна. Автор пошагово показывает, как он подходил к проблемам производительности и как их решал. В том числе вы познакомитесь с богатым инструментарием, доступным в Go для такой работы. Приятного чтения!

Несколько недель назад я прочитал статью «Хороший код против плохого кода в Go», где автор шаг за шагом демонстрирует рефакторинг реального приложения, решающего реальные бизнес-задачи. Она сфокусирована на превращении «плохого кода» в «хороший код»: более идиоматичный, более понятный, полноценно использующий специфику языка Go. Но автор также заявлял о важности производительности рассматриваемого приложения. Во мне взыграло любопытство: давайте попробуем её ускорить!

Как я автоматизировал дачу на 90%

Reading time9 min
Views138K


Дачная электрика – известная проблема, отношение к ней в большинстве случаев наплевательское, если не сказать хуже. Если есть возможность подключить что-то не так и не туда — это, конечно, будет сделано.

Когда мы с женой начинали строить новую дачу вместо старой (где электрика прокладывалась многими поколениями и представляла собой жуткую мешанину из проводов и распаячных коробок), то прежде всего решили, что электрика будет грамотной, а дача – умной.
Читать дальше →

Как мы писали сетевой код мобильного PvP шутера: синхронизация игрока на клиенте

Reading time13 min
Views35K
В одной из предыдущих статей мы провели обзор технологий, которые используются на нашем новом проекте — fast paced шутере для мобильных устройств. Теперь хочу поделиться, как устроена клиентская часть сетевого кода будущей игры, с какими трудностями мы столкнулись и как их решали.


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

Спросите Итана: если масса искривляет пространство-время, как оно распрямляется обратно?

Reading time7 min
Views54K

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

Материя сообщает пространству, как искривляться, а искривлённое пространство сообщает материи, как двигаться. Это основной принцип ОТО Эйнштейна, впервые связавшей такое явление, как гравитация, с пространством-временем и относительностью. Поместите массу в любой точке Вселенной, и пространство вокруг неё отреагирует искривлением. Но если убрать массу или передвинуть её, что заставляет пространство-время «вставать на место», принимая неискривлённое положение? Такой вопрос задаёт наш читатель:
Нас учат, что масса деформирует пространство-время, а кривизна пространства-времени вокруг массы объясняет гравитацию – к примеру, объект на орбите вокруг Земли на самом деле движется по прямой, лежащей в искривлённом пространстве-времени. Допустим, это имеет смысл, но когда масса (вроде Земли) двигается через пространство-время и искривляет его, почему пространство-время не остаётся искривлённым? Какой механизм распрямляет этот участок пространства-времени, когда масса двигается дальше?

С этим вопросом связано много интересного, и ответ на самом деле может помочь вам понять, как работает гравитация.

Как работает JS: технология Shadow DOM и веб-компоненты

Reading time14 min
Views45K
[Советуем почитать] Другие 19 частей цикла
Часть 1: Обзор движка, механизмов времени выполнения, стека вызовов
Часть 2: О внутреннем устройстве V8 и оптимизации кода
Часть 3: Управление памятью, четыре вида утечек памяти и борьба с ними
Часть 4: Цикл событий, асинхронность и пять способов улучшения кода с помощью async / await
Часть 5: WebSocket и HTTP/2+SSE. Что выбрать?
Часть 6: Особенности и сфера применения WebAssembly
Часть 7: Веб-воркеры и пять сценариев их использования
Часть 8: Сервис-воркеры
Часть 9: Веб push-уведомления
Часть 10: Отслеживание изменений в DOM с помощью MutationObserver
Часть 11: Движки рендеринга веб-страниц и советы по оптимизации их производительности
Часть 12: Сетевая подсистема браузеров, оптимизация её производительности и безопасности
Часть 12: Сетевая подсистема браузеров, оптимизация её производительности и безопасности
Часть 13: Анимация средствами CSS и JavaScript
Часть 14: Как работает JS: абстрактные синтаксические деревья, парсинг и его оптимизация
Часть 15: Как работает JS: классы и наследование, транспиляция в Babel и TypeScript
Часть 16: Как работает JS: системы хранения данных
Часть 17: Как работает JS: технология Shadow DOM и веб-компоненты
Часть 18: Как работает JS: WebRTC и механизмы P2P-коммуникаций
Часть 19: Как работает JS: пользовательские элементы

Сегодня, в переводе 17 части материалов, посвящённых особенностям всего, что так или иначе связано с JavaScript, речь пойдёт о веб-компонентах и о различных стандартах, которые направлены на работу с ними. Особое внимание здесь будет уделено технологии Shadow DOM.


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

Компилятор Go: язык описания правил SSA оптимизаций

Reading time11 min
Views12K


В компиляторе gc для описания Static Single Assignment (SSA) правил оптимизаций используется специальный Лисп-подобный предметно-ориентированный язык (DSL).


Предлагаю разобрать основные элементы этого языка, его особенности и ограничения.
В качестве упражнения, добавим в Go компилятор генерацию инструкции, которую он раньше не генерировал, оптимизируя выражение a*b+c.


Это первая статья из серии про внутренности Go SSA compiler backend, поэтому помимо обзора самого DSL описания правил мы рассмотрим связанные компоненты, чтобы создать необходимую базу для нашей следующей сессии.

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

Веб-компоненты. Часть 3: html шаблоны и импорты

Reading time5 min
Views23K
Вступление

Приветствую коллеги. Данная статья является третьей и последней статьей в серии статей о веб-компонентах.Первые две статьи доступны по ссылкам:


Веб компоненты. Часть 1: Пользовательские элементы
Веб-компоненты. Часть 2: Теневой DOM

В данной статье речь пойдет о <template> элементе а также об HTML импортах.


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

Изометрия, z-индексы в мобильных играх и их оптимизация

Reading time5 min
Views6.6K

Привет, Хабр! Недавно мы вышли в релиз с нашей игрой, которую долго и упорно готовили и в процессе которой накопилось немалое количество интересных тем, которыми стоит поделиться с сообществом. Тема будет интересна далеко не только iOS и иным мобильным разработчикам, но и всем тем, кому интересно, как всякие графические вещи работают под капотом, а также всем фанатам 2D-стратегий, коим уже третее десятилетие являюсь я сам.
Читать дальше →

Новшества объектных литералов в JavaScript ES6

Reading time7 min
Views22K
Материал, перевод которого мы представляем вашему вниманию, посвящён исследованию особенностей объектных литералов в JavaScript, в частности — новшеств, которые появились в свежих версиях стандарта ECMAScript.

JavaScript обладает мощной и удобной возможностью создания объектов с использованием объектных литералов. Стандарт ES2015 (ES6) упрощает работу с объектами при создании приложений для современных браузеров (кроме IE) и для платформы Node.js.


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

go-critic: самый упрямый статический анализатор для Go

Reading time8 min
Views11K


Анонсируем новый линтер (статический анализатор) для Go, который одновременно является песочницей для прототипирования ваших задумок в мире статического анализа.


go-critic построен вокруг следующих наблюдений:


  • Лучше иметь “good enough” реализацию проверки, чем не иметь её вовсе
  • Если проверка спорная, это ещё не значит, что она не может быть полезна. Помечаем как “opinionated” и вливаем
  • Писать линтер с нуля, как правило, сложнее, чем добавлять новую проверку в существующий каркас, если сам фреймворк прост для понимания

В этом посте мы рассмотрим использование и архитектуру go-critic, некоторые реализованные в нём проверки, а также опишем основные шаги добавления своей функции-анализатора в него.

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

Спросите Итана: как быстро во Вселенной могла появиться жизнь?

Reading time7 min
Views13K

Органические молекулы находят в регионах формирования звёзд, в остатках звёзд и в межзвёздном газе, по всему Млечному Пути. В принципе, ингредиенты скалистых планет и жизни на них могли появиться в нашей Вселенной достаточно быстро, и задолго до появления Земли

История о том, как Вселенная стала такой, какой мы видим её сегодня, от Большого взрыва до огромного пространства, заполненного скоплениями, галактиками, звёздами, планетами и жизнью, объединяет нас всех. С точки зрения жителей планеты Земля, до момента появления Солнца и Земли прошло 2/3 космической истории. Однако жизнь появилась на нашем мире настолько давно, насколько мы способны заглядывать в прошлое при помощи измерений – возможно, даже 4,4 млрд лет назад. Это заставляет задуматься: не появлялась ли жизнь во Вселенной раньше нашей планеты, и в принципе, насколько давно она могла появиться? Это хочет узнать наш читатель:
Как скоро после Большого взрыва могло накопиться достаточно тяжёлых элементов для формирования планет, и, возможно, жизни?

И даже если мы ограничимся тем типом жизни, который мы считаем «похожим на наш», ответ на этот вопрос отправит нас дальше в прошлое, чем вы могли бы себе представить.

По следам meetup «Новые возможности PostgreSQL 11»

Reading time16 min
Views13K
Сегодня мы расскажем о самых главных фичах PostgreSQL 11. Почему только о них — потому что некоторые возможности нужны далеко не всем, поэтому мы остановились на самых востребованных.

Содержание



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

Code review: вы делаете это неправильно

Reading time21 min
Views71K

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

На рынке есть куча инструментов для ревью кода с готовыми сценариями использования, рекомендациями и правилами. GitHub, Phabricator, FishEye/ Crucible, GitLab, Bitbucket, Upsource — список можно долго продолжать. Мы в Badoo тоже в своё время с ними работали: в своей предыдущей статье  я рассказывал нашу историю ревью кода и о том, как мы пришли к изобретению собственного «велосипеда» — решения Codeisok.

Информации предостаточно, можно нагуглить кучу статей про ревью кода с реальными примерами, практиками, подходами, рассказывающих о том, как хорошо, как плохо, как нужно делать, а как — не нужно, что стоит учитывать, а что — нет, и т. д. В общем, тема «обсосана до косточек».

Именно поэтому другую часть айсберга можно и не заметить.
Читать дальше →

Главные игры E3 2018: Fallout 76, Metro Exodus, Doom Eternal и другие

Reading time6 min
Views36K
Нынешняя E3 — одна из самых дискуссионных. Вот и конференции уже отгремели, и все трейлеры показали, а в сообществе по-прежнему не утихают страсти. То им игры не те, то персонажи стали не такие… На игровых ресурсах разве что до драк не доходит. На «Хабре», надеюсь, будет поспокойнее. Под катом рассказ о 13 самых громких анонсах выставки.


Кадр из трейлера Assassin's Creed Odyssey

5 заблуждений о GDPR

Reading time6 min
Views11K

1. Основная цель принятия GDPR – усложнить жизнь бизнесу


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

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

Information

Rating
Does not participate
Registered
Activity