Как стать автором
Обновить
-1
machina ex deus @novoxudonoser read⁠-⁠only

Пользователь

Отправить сообщение

Концепции распределенной архитектуры, с которыми я познакомился при построении крупной системы платежей

Время на прочтение 12 мин
Количество просмотров 34K
Я присоединился к Uber два года назад в качестве мобильного разработчика, имеющего некоторый опыт разработки бекенда. Здесь я занимался разработкой функционала платежей в приложении — и по ходу дела переписал само приложение. После чего я перешёл в менеджмент разработчиков и возглавил саму команду. Благодаря этому я смог гораздо ближе познакомиться с бэкендом, поскольку моя команда несёт ответственность за многие системы нашего бэкенда, позволяющие осуществлять платежи.

До моей работы в Uber у меня не было опыта работы с распределёнными системами. Я получил традиционное образование в Computer Science, после чего с десяток лет занимался full-stack разработкой. Поэтому, пусть я и мог рисовать различные диаграммы и рассуждать о компромиссах (tradeoffs) в системах, к тому моменту я недостаточно хорошо понимал и воспринимал концепции распределённости — такие, например, как согласованность (consistency), доступность (availability) или идемпотентность (idempotency).

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

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

Итак, давайте приступим к нашему погружению в SLA, согласованность, долговечность данных, сохранность сообщений, идемпотентность и некоторые другие вещи, которые мне потребовалось выучить на своей новой работе.
Читать дальше →
Всего голосов 24: ↑22 и ↓2 +20
Комментарии 2

Заблуждения об автоматическом тестировании

Время на прочтение 4 мин
Количество просмотров 10K

Здравствуйте, меня зовут Дмитрий Карловский и это продолжение традиционной рубрики "Почему мы так не любим писать тесты?". Короткий ответ: потому, что получаемые от них бонусы не перевешивают затрачиваемых усилий. Если это так, значит мы делаем что-то не правильно. Давайте разберёмся что же могло пойти не так..


Картинка для привлечения внимания


Данная заметка выросла из главы "Заблуждения" лонгрида "Концепции автоматического тестирования", посредством дополнения новыми заблужениями и аргументами.

Читать дальше →
Всего голосов 23: ↑16 и ↓7 +9
Комментарии 11

POWA-like мониторинг PostgreSQL с помощью Prometheus

Время на прочтение 5 мин
Количество просмотров 27K

Предыстория


Для сбора и удобного просмотра данных о том, как работает PostgreSQL (общая производительность сервера, самые медленные запросы, самые частые запросы) мы долгое время использовали отличную утилиту POWA. Однако, это решение было далеко не идеальным и нам удалось найти более удачный вариант, к тому же полностью интегрированный с нашей основной системой мониторинга.

Читать дальше →
Всего голосов 12: ↑12 и ↓0 +12
Комментарии 12

Двенадцать советов по повышению безопасности Linux

Время на прочтение 8 мин
Количество просмотров 53K
imageМы живём в опасное время: едва ли не каждый день обнаруживаются новые уязвимости, на их основе создают эксплойты, под ударом может оказаться и обычный домашний компьютер на Linux, и сервер, от которого зависит огромная организация.

Возможно, вы уделяете внимание безопасности и периодически обновляете систему, но обычно этого недостаточно. Поэтому сегодня мы поделимся двенадцатью советами по повышению безопасности Linux-систем на примере CentOS 7.
Читать дальше →
Всего голосов 43: ↑36 и ↓7 +29
Комментарии 84

Выжимаем все соки из Chromium на Linux

Время на прочтение 7 мин
Количество просмотров 130K
В этой статье рассмотрим, как выжать все соки из Хромиума и максимально ускорить его или другой браузер на его движке (Chromium, Google Chrome, Opera, Vivaldi, Яндекс и др.). За счет включения многих экспериментальных возможностей по вынесу вычислений с процессора на видеокарту и включения использования находящихся в разработке программных алгоритмов. За счет этого наш любимый хромиум станет работать быстрее, может перестать тормозить или моргать экраном.

Поехали!
Читать дальше →
Всего голосов 27: ↑27 и ↓0 +27
Комментарии 30

Часть 1. Где хранить данные децентрализованным приложениям на блокчейне?

Время на прочтение 5 мин
Количество просмотров 39K
Сейчас наблюдается бум блокчейн проектов. Некоторые блокчейны настолько мощные, что являются платформой для написания приложений. Приложения автоматически получаются децентрализованными, устойчивыми к цензуре и блокировке. Но действительно ли всё так хорошо и просто? В данной статье мы постараемся посмотреть на блокчейн как платформу для приложений, сняв розовые очки.
Читать дальше →
Всего голосов 20: ↑19 и ↓1 +18
Комментарии 14

Выключаем Intel ME 11, используя недокументированный режим

Время на прочтение 11 мин
Количество просмотров 78K


В ходе исследования внутренней архитектуры Intel Management Engine (ME) 11-й версии был обнаружен механизм, отключающий эту технологию после инициализации оборудования и запуска основного процессора. О том, как мы нашли этот недокументированный режим, и о его связи с государственной программой построения доверительной платформы High Assurance Platform (HAP) мы расскажем в этой статье.

Авторы предупреждают, что использование данных знаний на практике может повлечь за собой повреждение вычислительной техники, и не несут за это никакой ответственности, а также не гарантируют работоспособность или неработоспособность чего-либо и не рекомендуют экспериментировать без наличия SPI-программатора.
Читать дальше →
Всего голосов 84: ↑83 и ↓1 +82
Комментарии 90

Как выковать процесс самому. Опыт компании 2ГИС

Время на прочтение 10 мин
Количество просмотров 11K
Михаил Вязанкин

Михаил Вязанкин ( mihey911 )


Я расскажу вам историю про одну перегруженную команду.

У нас была команда, не очень большая, 20 человек высококвалифицированных специалистов — разработчиков, тестировщиков, DevOps. У этой перегруженной команды была дюжина заказчиков, в основном, внутренних. Эта дюжина заказчиков постоянно дралась за приоритеты. Для команды это большой стресс, напряженность, команде не понятно, что будет дальше — каждый день может какая-то новая бизнес-задача прилететь. В таких условиях Scrum, который два года у них работал и к которому они привыкли, начал ломаться, commitment (то, что они обещали сделать на спринт) они сделать уже не могли, потому что прибегал кто-то очень важный и хотел что-то очень ценное. А ценное — это деньги, их делать надо.

И команда от этого устала, и готова была меняться. Это важное условие.
Читать дальше →
Всего голосов 24: ↑22 и ↓2 +20
Комментарии 9

Взлом Wi-Fi

Время на прочтение 7 мин
Количество просмотров 329K

Взлом маршрутизаторов WPA/WPA2 Wi-Fi с помощью Airodump-ng и Aircrack-ng/Hashcat


Это краткое пошаговое руководство, которое демонстрирует способ взлома сетей Wi-Fi, защищённых слабыми паролями. Оно не исчерпывающее, но этой информации должно хватить, чтобы вы протестировали свою собственную сетевую безопасность или взломали кого-нибудь поблизости. Изложенная ниже атака полностью пассивна (только прослушивание, ничего не транслируется с вашего компьютера) и о ней невозможно узнать, если вы только реально не воспользуетесь паролем, который взломали. Необязательную активную атаку с деаутентификацией можно применить для ускорения разведывательного процесса. Она описана в конце статьи.
Читать дальше →
Всего голосов 77: ↑64 и ↓13 +51
Комментарии 51

Стоимость недвижимости на тепловых картах

Время на прочтение 8 мин
Количество просмотров 54K

В статье рассказано о процессе создания тепловой карты цен по продаже недвижимости для Москвы и Санкт-Петербурга.


Тепловая карта цен Москвы


Меня зовут Дмитрий, я программист из Санкт-Петербурга и у меня есть хобби — это портал по недвижимости которым я занимаюсь в свободное от работы время вот уже почти 5 лет. Сайт авторский, и это дает достаточный уровень свободы для экспериментирования и реализации любых идей на нем. И одной из давних идей было создание тепловой карты цен.

Читать дальше →
Всего голосов 126: ↑124 и ↓2 +122
Комментарии 78

Про Гауди — разработчика из девятнадцатого века, добившегося всего, чего может добиться разработчик

Время на прочтение 8 мин
Количество просмотров 100K
Вот что строил испанский архитектор Антонио Гауди:



Его здания описывают как «бионические дома», некоторые говорят о «летящей пластичной материи». За морем восторгов художников и дизайнеров, как мне показалось, упущена некоторая невероятная рационализация и прагматичность. Гауди был в первую очередь отличным разработчиком, математиком и геометром. Но чтобы объяснить это, сначала я покажу другую картинку:


Это два крепления. Первое производится серийно — оно просто в проектировании, просто в изготовлении, дёшево и невероятно уродливо. Второе красивое, и требует на 25% меньше материала для того, чтобы выдержать тот же вес (то есть — куда прочнее). Только его трудно рассчитать, оно будет дороже в серии — и придётся подумать.

Примерно то же самое делал Гауди. Ему пришлось обойтись без математического аппарата и современных материалов. И ещё действовать в рамках строго ограниченного бюджета. Он, фактически, заложил новые принципы всего от фасада до последней дверной ручки, создал шедевры оптимизации — в общем смёл все стереотипы как сухие листья, создал с нуля теорию и воплотил её. В девятнадцатом веке всё то, что он делал, было просто диким. Некоторые даже считали его сумасшедшим.
Читать дальше →
Всего голосов 228: ↑225 и ↓3 +222
Комментарии 136

Тюнинг сетевого стека Linux для ленивых

Время на прочтение 5 мин
Количество просмотров 90K

Сетевой стек Linux по умолчанию замечательно работает на десктопах. На серверах с нагрузкой чуть выше средней уже приходится разбираться как всё нужно правильно настраивать. На моей текущей работе этим приходится заниматься едва ли не в промышленных масштабах, так что без автоматизации никуда – объяснять каждому коллеге что и как устроено долго, а заставлять людей читать ≈300 страниц английского текста, перемешанного с кодом на C… Можно и нужно, но результаты будут не через час и не через день. Поэтому я попробовал накидать набор утилит для тюнинга сетевого стека и руководство по их использованию, не уходящее в специфические детали определённых задач, которое при этом остаётся достаточно компактным для того, чтобы его можно было прочитать меньше чем за час и вынести из него хоть какую-то пользу.

Читать дальше →
Всего голосов 94: ↑94 и ↓0 +94
Комментарии 45

Автоэнкодеры в Keras, Часть 2: Manifold learning и скрытые (latent) переменные

Время на прочтение 11 мин
Количество просмотров 26K

Содержание






Для того, чтобы лучше понимать, как работают автоэнкодеры, а также чтобы в последствии генерировать из кодов что-то новое, стоит разобраться в том, что такое коды и как их можно интерпретировать.
Читать дальше →
Всего голосов 32: ↑32 и ↓0 +32
Комментарии 5

Виртуальные твари и места их обитания: прошлое и настоящее TTY в Linux

Время на прочтение 14 мин
Количество просмотров 64K
Ubuntu интегрирована в Windows 10 Redstone, Visual Studio 2017 обзавелась поддержкой разработки под Linux – даже Microsoft сдает позиции в пользу растущего числа сторонников Торвальдса, а ты всё еще не знаешь тайны виртуального терминала в современных дистрибутивах?

Хочешь исправить этот пробел и открываешь исходный код? TTY, MASTER, SLAVE, N_TTY, VT, PTS, PTMX… Нагромождение понятий, виртуальных устройств и беспорядочная магия? Всё это складывается в довольно логичную картину, если вспомнить, с чего всё началось…
Читать дальше →
Всего голосов 59: ↑56 и ↓3 +53
Комментарии 27

Возможности PostgreSQL для тех, кто перешел с MySQL

Время на прочтение 9 мин
Количество просмотров 49K

Крутой varanio буквально на прошлой неделе прочитал на DevConf забойный доклад для всех кто пересел на Посгрес с MySQL, но до сих пор не использует новую базу данных в полной мере. По мотивам выступления родилась эта публикация.


Мы рады сообщить, что подготовка к PG Day'17 Russia идет полным ходом! Мы опубликовали полное расписание предстоящего мероприятия. Приглашаем всех желающих прийти и похоливарить с Антоном лично



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


Почему вообще возникла идея такого доклада? Дело в том, что PostgreSQL сейчас явно хайповая технология, и многие переходят на эту СУБД. Иногда — по объективным причинам, иногда — просто потому что это модно.


Но сплошь и рядом складывается такая ситуация, когда какой-нибудь условный программист Вася вчера писал на MySQL, а сегодня вдруг начал писать на Посгресе. Как он будет писать? Да в целом также, как и раньше, используя лишь самый минимальный набор возможностей новой базы. Практика показывает, что проходят годы, прежде чем СУБД начинает использоваться более менее полноценно.

Читать дальше →
Всего голосов 59: ↑58 и ↓1 +57
Комментарии 139

Как посчитать всё на свете одним SQL-запросом. Оконные функции PostgreSQL

Время на прочтение 5 мин
Количество просмотров 555K

Я с удивлением обнаружил, что многие разработчики, даже давно использующие postgresql, не понимают оконные функции, считая их какой-то особой магией для избранных. Ну или в лучшем случае «копипастят» со StackOverflow выражения типа «row_number() OVER ()», не вдаваясь в детали. А ведь оконные функции — полезнейший функционал PostgreSQL.
Попробую по-простому объяснить, как можно их использовать.


Читать дальше →
Всего голосов 75: ↑73 и ↓2 +71
Комментарии 54

Понимание критического пути рендеринга

Время на прочтение 5 мин
Количество просмотров 64K

Браузеру предстоит пройти много шагов, прежде чем HTML-ответ от сервера будет преобразован в пиксели на экране. Последовательность этих шагов, необходимая для первого отображения страницы, называется «Критический путь рендеринга» (ориг. Critical Rendering Path).


Читать дальше →
Всего голосов 22: ↑21 и ↓1 +20
Комментарии 11

What the flask?

Время на прочтение 4 мин
Количество просмотров 54K

kdpv
Вообще-то, это картинка от wtforms, но у меня гимп почему-то не запускается.


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


Однажды, меня спросили: что плохого во flask? Тогда меня полностью устраивал этот милый фреймворк. Поработав с ним какое-то время, я написал все, что думаю, в рабочий слак, на что мне ответили: "Мурад, будь добрее". Вообще, я добрый и пушистый, но wtf?!

Читать дальше →
Всего голосов 51: ↑39 и ↓12 +27
Комментарии 66

Внедрение Docker для небольшого проекта в Production, часть 2

Время на прочтение 6 мин
Количество просмотров 17K
image

Часть 1

В первой части мы подготовили нашу операционную систему для использования Docker контейнеров.

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

sudo passwd core
Читать дальше →
Всего голосов 15: ↑15 и ↓0 +15
Комментарии 9

Ещё немного про телефоны Xiaomi и борьбу с ними. Updated

Время на прочтение 11 мин
Количество просмотров 362K
image

Честно признаться, у меня не было планов писать и публиковать эту статью, но, после того, как за два месяца увидел в ближнем кругу коллег 5 штук свежеприобретённых телефонов от Xiaomi, и недавнюю статью на Geektimes, рекламирующую управление умным домом от Xiaomi, ко мне пришла совесть и, сцуко, потребовала поделиться знанием с остальными.
Читать дальше →
Всего голосов 90: ↑85 и ↓5 +80
Комментарии 308

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность