Саморегистрируемся для самовыгула самособаки в условиях самоизоляции

Решил протестировать информационную систему Нижнего Новгорода для тех, кто "хочет выйти на улицу" — цитата с сайта правительства Нижегородской области. Я не знаю, на основании каких федеральных и региональных законов требуется получение qr-кода для прогулки с псом, какой правовой статус имеет qr-код, поэтому эти вопросы предлагаю оставить за кадром. Если тут есть законники — напишите свой пост, мне, как и многим, было бы интересно прочитать разъяснение. Я же сосредоточусь на технической составляющей.

Читать дальше →
Саморегистрируемся для самовыгула самособаки в условиях самоизоляции
Source: habrahabr

[Из песочницы] Discord как корпоративный мессенджер и не только

Хочу рассказать про использование мессенджера Discord как основного средства коммуникации в команде. Опыт может быть полезен другим командам, использующим бесплатные мессенджеры, а также всем, кто ищет пути повышения эффективности использования мессенджеров.

Discord – программа странная и выдающаяся одновременно. Почему? Хотя бы потому, что про способы работы в Discord получилась целая статья.


Читать дальше →
[Из песочницы] Discord как корпоративный мессенджер и не только
Source: habrahabr

[Перевод] Как привести в порядок историю ваших коммитов в Git

Публикуем перевод статьи, которую мы нашли на hackernoon.com. Ее автор, Thiago Miranda, пишет о том, как сделать работу с Git более удобной и эффективной.

Читать дальше →
[Перевод] Как привести в порядок историю ваших коммитов в Git
Source: habrahabr

Чиним сериализацию объектов в Kotlin раз и навсегда

Недавно я наткнулся на статью о проблеме c Java-сериализацией объектов в Kotlin. Автор предложил решать её добавлением метода readResolve к каждому объекту, который наследуется от java.io.Serializable.

Этот способ выглядит абсолютно правильным, однако его поддержка может оказаться слишком проблематичной. С учетом того, что в нашем проекте эта проблема возникала только при использовании объектов внутри Bundle, мы решили использовать проверку через is для каждой ветки when-выражений в случае sealed классов.

Тем не менее, размышляя об этом, я никак не мог понять, почему Kotlin не генерирует readResolve в компиляторе, поддерживая singleton-свойства объектов. Мне казалось, что это работа для инструментов, а не для человека. Но раз Kotlin не добавляет эту функцию сам, мы можем ему помочь! Этим мы сейчас и займёмся.

Читать дальше →
Чиним сериализацию объектов в Kotlin раз и навсегда
Source: habrahabr

VPS как лекарство от скуки на карантине

Когда ты постоянно работаешь на удалёнке, работа постепенно занимает весь объём свободного времени. И это карма, от которой сложно избавиться. Однако, когда ты работал-работал в офисе и вдруг вынужденно (как все мы) сел дома, неожиданно обнаруживается масса свободного времени, которое совершенно не в ущерб текущим задачам компании. После пары дней упоительного обжорства перед монитором с сериалом становится адски скучно и хочется уже чем-то пошевелить. Мозгами, например. Раз так, нужно использовать новый свободный интервал для того, чтобы не просто посмотреть фильмы и нарастить пару килограмм на талии, а для того чтобы исполнить какие-то свои мечты и чаяния. Как, например, насчёт настройки умного дома, создания сайта о своём хобби, новых знаний в разработке и администрировании? Время нужно инвестировать грамотно. Ну а технологии — вам в помощь.


Во всех квартирах России (и мира): комп, еда, кровать, все вместе

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

А нужен ли VPS на карантине, чем он может помочь? Мы сделали небольшую ретроспективу нашего опыта и нашли несколько наиболее интересных способов использовать VPS во время вынужденной изоляции. И знаете, это значительно расширяет узкий мир наших рабоче-домашних ПК.
Читать дальше →
VPS как лекарство от скуки на карантине
Source: habrahabr

[Перевод] Использование современных графических форматов в веб-проектах

Эдди Османи, в статье «Цена JavaScript в 2018 году», озвучил одну ценную мысль: время, необходимое на обработку скрипта размером 200 Кб, и на обработку изображения, имеющего такой же размер, серьёзно различается. Дело в том, что при обработке кода браузеру нужно проделать более масштабную работу, чем при подготовке к использованию изображений. Вот что об этом говорится в статье:

JPEG-изображение нужно декодировать, растеризовать и вывести на экран. А JS-бандл надо, если рассматривать это упрощённо, загрузить, распарсить, скомпилировать, выполнить. На самом же деле движку приходится решать и другие задачи в процессе обработки JS-кода. В целом, стоит учитывать, что на обработку JavaScript-кода, размеры которого, в байтах, сопоставимы с размерами других материалов, тратится гораздо больше системных ресурсов.

Эти слова были написаны в 2018 году, но они до сих пор более чем справедливы. Правда, учитывая текущую обстановку, высказанная здесь мысль сегодня воспринимается немного иначе.


Читать дальше →
[Перевод] Использование современных графических форматов в веб-проектах
Source: habrahabr

[Перевод] 5 практических рекомендаций по использованию React-хуков в продакшне

Автор статьи, перевод которой мы сегодня публикуем, говорит, что в компании commercetools приняли на вооружение хуки React в начале 2019 года — в момент их появления в React 16.8.0. С тех пор программисты компании постоянно перерабатывают свой код, переводя его на хуки. Хуки React позволяют, не используя классы, работать с состоянием компонентов и пользоваться другими возможностями React. Используя хуки, можно, работая с функциональными компонентами, «подключаться» к событиям жизненного цикла компонентов и реагировать на изменения их состояния.


Читать дальше →
[Перевод] 5 практических рекомендаций по использованию React-хуков в продакшне
Source: habrahabr

Как надо исправлять утечки маршрутов

Стоит оговориться, что нижеследующая история во многом уникальна.

И вот как она начиналась. В течение примерно одного часа, начиная с 19.28 UTC вчера, 1 апреля 2020 года, крупнейший российский интернет-провайдер — Ростелеком (AS12389) — начал анонсировать сетевые префиксы крупнейших игроков интернета: Akamai, Cloudflare, Hetzner, Digital Ocean, Amazon AWS и других известных имен. До того момента как проблема была решена пути между крупнейшими облачными провайдерами планеты были нарушены — Интернет «моргнул».

Данная утечка маршрута вполне успешно распространялась через провайдера Rascom (AS20764), откуда через Cogent (AS174) и, спустя еще несколько минут, через Level3 (AS3356) распространилась по всему миру. Утечка была настолько серьезной, что почти все Tier-1 операторы были задеты аномалией.

Выглядело это так:

image

Добавляя снизу:

image
Читать дальше →
Как надо исправлять утечки маршрутов
Source: habrahabr

Как мы использовали айтрекер для количественного эксперимента

Привет, Хабр. На связи UX-лаборатория Авито. Сегодня хотим рассказать об опыте использования айтрекера для проведения количественного эксперимента. Серьёзных инсайтов и уроков не обещаем, просто поделимся своими мыслями.

Расскажем, что вышло из идеи эксперимента, с какими проблемами мы столкнулись в процессе, как их решали и какие выводы сделали. Статья будет полезна исследователям и компаниям, в распоряжении которых есть айтрекер.

Читать дальше →
Как мы использовали айтрекер для количественного эксперимента
Source: habrahabr

Практика обновления версий PostgreSQL. Андрей Сальников

Предлагаю ознакомиться с расшифровкой доклада 2018 года Андрея Сальникова "Практика обновления версий PostgreSQL"

В большинстве своем, системные администраторы и ДБА бояться как огня делать мажорные обновления версий баз данных (RDBMS), особенно если эта база данных в эксплуатации и имеет достаточно высокую нагрузку. Главной причиной тому некоторый даунтайм базы данных, который всегда подразумевается при планировании таких работ.

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

В Data Egret мы накопили огромный опыт проведения мажорных апгрейдов PostgreSQL в проектах, где нет права на ошибку. Я поделюсь своим опытом и расскажу о следующих шагах процесса: как правильно подготовиться к upgrade-у PostgreSQL? что необходимо сделать на этапе подготовки? как запланировать последовательность действий на сам upgrade? как провести процедуру upgrade-а успешно, без возврата на предыдущую версию бд? как минимизировать или вообще избежать простоя всей системы во время upgrade-а? какие действия необходимо выполнить после успешного upgrade-а PostgreSQL? Я также расскажу про две наиболее популярные процедуры апгрейда PostgreSQL — pg_upgrade и pg_dump/pg_restore, плюсы и минусы каждого из методов и расскажу про все типичные проблемы на всех этапах этой процедуры, и как их избежать.

Доклад будет интересен как новичкам так и тем ДБА которые уже давно работают с PostgreSQL, но хотят побольше узнать о том как правильно планировать и проводить upgrade максимально безболезненно.

Читать дальше →
Практика обновления версий PostgreSQL. Андрей Сальников
Source: habrahabr