Search
Write a publication
Pull to refresh
23
0
Александр Кухта @RiderSx

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

Send message

Кластер PostgreSQL высокой надежности на базе Patroni, Haproxy, Keepalived

Reading time25 min
Views134K
Привет, Хабр! Встала передо мной недавно задача: настроить максимально надежный кластер серверов PostgreSQL версии 9.6.

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

Планируя кластер я проштудировал много статей, как из основной документации к PostgreSQL, так и различных howto, в том числе с Хабра, и пробовал настроить стандартный кластер с RepMgr, эксперементировал с pgpool.

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

В итоге где-то (уже не вспомню точно где) нашел ссылку на прекрасный проект Zalando Patroni, и все заверте…
Читать дальше →

Блокчейн в 200 строк кода

Reading time4 min
Views73K
Основная концепция блокчейна довольно проста: распределенная база данных, которая поддерживает постоянно растущий список упорядоченных записей.

Однако, многоe остается непонятным, когда мы говорим о блокчейне, так же остается много проблем, которые мы пытаемся решить с его помощью. Это относится и к популярным блокчейн проектам, таким как Биткоин (Bitcoin) и Эфириума (Ethereum). Термин «блокчейн» обычно сильно привязан к концепции типа денежных переводов, смарт-контрактов или криптовалюты.

Это делает понимание блокчейна сложнее, чем есть на самом деле. Особенно исходный код. Здесь я пройдусь по супер-простой реализации блокчейна в 200 строк кода JavaScript под названием NaiveChain.

Структура блока


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

image
Хэш предыдущего блока необходимо найти в блоке для сохранения целостности цепи
Читать дальше →

Что нужно знать про арифметику с плавающей запятой

Reading time14 min
Views1M


В далекие времена, для IT-индустрии это 70-е годы прошлого века, ученые-математики (так раньше назывались программисты) сражались как Дон-Кихоты в неравном бою с компьютерами, которые тогда были размером с маленькие ветряные мельницы. Задачи ставились серьезные: поиск вражеских подлодок в океане по снимкам с орбиты, расчет баллистики ракет дальнего действия, и прочее. Для их решения компьютер должен оперировать действительными числами, которых, как известно, континуум, тогда как память конечна. Поэтому приходится отображать этот континуум на конечное множество нулей и единиц. В поисках компромисса между скоростью, размером и точностью представления ученые предложили числа с плавающей запятой (или плавающей точкой, если по-буржуйски).

Арифметика с плавающей запятой почему-то считается экзотической областью компьютерных наук, учитывая, что соответствующие типы данных присутствуют в каждом языке программирования. Я сам, если честно, никогда не придавал особого значения компьютерной арифметике, пока решая одну и ту же задачу на CPU и GPU получил разный результат. Оказалось, что в потайных углах этой области скрываются очень любопытные и странные явления: некоммутативность и неассоциативность арифметических операций, ноль со знаком, разность неравных чисел дает ноль, и прочее. Корни этого айсберга уходят глубоко в математику, а я под катом постараюсь обрисовать лишь то, что лежит на поверхности.
Читать дальше →

Разработка игр на Rust. Обзор экосистемы

Reading time6 min
Views48K

Здравствуйте! Я занимаюсь разработкой игры на Rust и хочу рассказать об этом.


Моя первая статья будет полезна тем, кто хочет начать делать игру на Rust, но не уверен, какие из пакетов (крейтов) стоит использовать и что вообще происходит в экосистеме Rust для игрового разработчика.

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

Browser Fingerprint – анонимная идентификация браузеров

Reading time14 min
Views225K


Валентин Васильев (Machinio.com)


Что же такое Browser Fingerprint? Или идентификация браузеров. Очень простая формулировка — это присвоение идентификатора браузеру. Формулировка простая, но идея очень сложная и интересная. Для чего она используется? Для чего мы хотим присвоить браузеру идентификатор?


  • Мы хотим учитывать наших пользователей. Мы хотим знать, пришел ли пользователь к нам первый раз, пришел он во второй раз или в третий. Если пользователь пришел во второй раз, мы хотим знать, на какие страницы он заходил, что он до этого делал. С анонимными пользователями это невозможно. Если у вас есть система учета записей, пользователь логинится, мы все про него знаем — мы знаем его учетную запись, его персональные данные, мы можем привязать любые действия к этому пользователю. Здесь все просто. В случае с анонимными пользователями все становится гораздо сложнее.

Разработка игр на Rust. Моя история

Reading time5 min
Views26K
image

Привет Хабр! Я занимаюсь разработкой игры на Rust. В этот раз я хочу показать немного гифок и показать всю историю игры от идеи до страницы в стиме.

Почему раст можно прочитать в начале прошлого поста. Но почему такой странный геймплей? Я же ненавижу футбол и всё что с ним связано!
История в гифках

Сага о ракетных топливах-обратная сторона медали

Reading time18 min
Views54K
image

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

Статья оканчивается вырезкой из публикации «Плата за доступ в космическое пространство».

Нейронные сети в картинках: от одного нейрона до глубоких архитектур

Reading time7 min
Views97K
Многие материалы по нейронным сетям сразу начинаются с демонстрации довольно сложных архитектур. При этом самые базовые вещи, касающиеся функций активаций, инициализации весов, выбора количества слоёв в сети и т.д. если и рассматриваются, то вскользь. Получается начинающему практику нейронных сетей приходится брать типовые конфигурации и работать с ними фактически вслепую.

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

Поддержка высоконагруженного проекта

Reading time20 min
Views16K


Евгений Потапов ( eapotapov )


Доклад будет про то, что делать с проектом после того, как мы его запустили. Вы спланировали архитектуру проекта, вы продумали, как у него будет работать инфраструктура, продумали, как будете балансировать нагрузку, наконец, его запустили. Что делать дальше? Как поддерживать, как сделать так, чтобы проект продолжал работать, и как сделать так, чтобы ничего, в конце концов, не упало?

Как работать с JIT

Reading time6 min
Views24K

enter image description here


В некоторых внутренних системах для быстрого поиска по большому битовому массиву мы в Badoo используем JIT. Это очень интересная и не самая известная тема. И, чтобы исправить такую досадную ситуацию, я перевел полезную статью Элая Бендерски о том, что такое JIT и как его использовать.

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

Правильное обнаружение проблем с помощью Zabbix

Reading time14 min
Views77K
Алексей Владышев

Алексей Владышев ( alexvl )


Меня зовут Алексей Владышев, я являюсь создателем Zabbix, и в данный момент я отвечаю за его архитектуру и roadmap.

Это вводная лекция, сначала я расскажу, что такое Zabbix, потом – как работает Zabbix с точки зрения высокоуровневой архитектуры и с точки зрения обнаружения проблем. Мы будем говорить о том, как обнаруживать проблемы применительно к Zabbix, как можно использовать Zabbix, чтобы обнаруживать проблемы.

Обзор архитектуры и подсистем деплоя и мониторинга. Как инженеры делают систему прозрачной для разработки

Reading time17 min
Views13K


Константин Никифоров ( melazyk )


Доклад будет про всякие секретные и не очень штуки, которые такая большая компания, как Mail.Ru, использует в мониторинге и для деплоя, и для управления конфигурацией.

Меня зовут Константин Никифоров, я являюсь руководителем группы системных администраторов в компании Mail.Ru. Наша группа занимается обслуживанием проектов target.my.com, рекламными системами Mail.Ru и проектом top.mail.ru. Все три наших проекта достаточно специфичные, потому что мы не обладаем никаким юзер контентом, мы в основном паразитируем на вас, как пользователях, и особенность наша заключается в том, что у нас очень большие PPS на фронтах, что не у многих проектов есть. Т.е. у таких проектов, как Одноклассники, как ВКонтакте, это понятно, потому что они просто огромные, у более мелких проектов такого нет. А мы размещаемся на всех вышеперечисленных и на всех страницах Mail.Ru, поэтому наш PPS еще больше, чем у этих проектов.

Кэширование данных в web приложениях. Использование memcached

Reading time14 min
Views24K


Юрий Краснощек (Delphi LLC, Dell)


Я немного расскажу вам про кэширование. Кэширование, в общем-то, не сильно интересно, берешь и кэшируешь, поэтому я еще расскажу про memcached, довольно интимные подробности.



Про кэширование начнем с того, что просят вас разработать фабрику по производству омнониевых торсиометров. Это стандартная задача, главное делать скучное лицо и говорить: «Ну, мы применим типовую схему для разработки фабрики».
Читать дальше →

Реверс-инжиниринг сообщений Protocol Buffers

Reading time7 min
Views11K
Под реверс-инжинирингом, в данном контексте, я понимаю восстановление исходной схемы сообщений наиболее близкие к оригиналу, используемому разработчиками. Существует несколько способов получить желаемое. Во-первых, если у нас есть доступ к клиентскому приложению, разработчики не позаботились о том чтобы скрыть отладочные символы и линковаться к LITE версии библиотеки protobuf, то получить оригинальные .proto-файлы не составит труда. Во-вторых, если же разработчики используют LITE сборку библиотеки, то это конечно усложняет жизнь реверсеру, но отнюдь не делает реверсинг бесполезным занятием: при определённой сноровке, даже в этом случае, можно восстановить .proto-файлы достаточно близкие к оригиналу.
Читать дальше →

Исключения в Windows x64. Как это работает. Часть 1

Reading time9 min
Views23K
Ранее мы обсуждали прикладное применение механизма обработки исключений вне среды Windows. Теперь мы более подробно рассмотрим, как это работает в Windows x64. Материал будет описан последовательно, начиная с самых основ. Поэтому многое может оказаться вам знакомым, и в этом случае такие моменты можно просто пропустить.
Читать дальше →

Препарируем t-SNE

Reading time10 min
Views87K
Работая над статьей «Глубокое обучение на R...», я несколько раз встречал упоминание t-SNE — загадочной техники нелинейного снижения размерности и визуализации многомерных переменных (например, здесь), был заинтригован и решил разобраться во всем в деталях. t-SNE это t-distributed stochastic neighbor embedding. Русский вариант с «внедрением соседей» в некоторой мере звучит нелепо, поэтому дальше буду использовать английский акроним.

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

История успеха «Яндекс.Почты» с PostgreSQL

Reading time13 min
Views54K


Владимир Бородин (на «Хабре» dev1ant), системный администратор группы эксплуатации систем хранения данных в «Яндекс.Почте», знакомит со сложностями миграции крупного проекта с Oracle Database на PostgreSQL. Это — расшифровка доклада с конференции HighLoad++ 2016.

Всем привет! Меня зовут Вова, сегодня я буду рассказывать про базы данных «Яндекс.Почты».

Сначала несколько фактов, которые будут иметь значение в будущем. «Яндекс.Почта» — сервис достаточно старый: он был запущен в 2000 году, и потому мы накопили много legacy. У нас — как это принято и модно говорить — вполне себе highload-сервис, больше 10 миллионов пользователей в сутки, какие-то сотни миллионов всего. В бэкенд нам прилетает более 200 тысяч запросов в секунду в пике. Мы складываем более 150 миллионов писем в сутки, прошедших проверки на спам и вирусы. Суммарный объём писем за все 16 лет — больше 20 петабайт.

О чем пойдет речь? О том, как мы перевезли метаданные из Oracle в PostgreSQL. Метаданных там не петабайты — их чуть больше трехсот терабайт. В базы влетает более 250 тысяч запросов в секунду. Надо иметь в виду, что это маленькие OLTP-запросы, по большей части чтение (80%).

Это — не первая наша попытка избавиться от Oracle. В начале нулевых была попытка переехать на MySQL, она провалилась. В 2007 или 2008 была попытка написать что-то своё, она тоже провалилась. В обоих случаях был провал не столько по технически причинам, сколько по организационным.

Как я сделал самый быстрый ресайз изображений. Часть 0

Reading time7 min
Views35K

Здравствуйте, меня зовут Саша, я написал самый быстрый ресайз изображений для современных х86 процессоров. Я так утверждаю, поскольку все остальные библиотеки, которые я сумел найти и протестировать, оказались медленнее. Я занялся этой задачей, когда работал над оптимизацией ресайза картинок на лету в Uploadcare. Мы решили открыть код и в результате появился проект Pillow-SIMD. Любой желающий с легкостью может использовать его в приложении на языке Python.


Любой код выполняется на конкретном железе и хорошей оптимизации можно добиться, только понимая его архитектуру. Всего я планирую выпустить 4 или 5 статей, в которых расскажу как применять знание архитектуры железа для оптимизации реальной задачи. Своим примером я хочу побудить вас оптимизировать другие прикладные задачи. Первые две статьи выйдут в течение недели, остальные — по мере готовности.

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

UNIX-подобные системы содержат кучу костылей. Крах «философии UNIX»

Reading time29 min
Views107K
UPD от 2017-03-04: кто-то выполнил английский перевод. Обсуждение на Hacker News.

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

Костыли в UNIX начали возникать ещё с момента появления UNIX, а это было ещё раньше появления не только Windows, но даже вроде бы Microsoft DOS (вроде бы, мне лень проверять, проверяйте сами). Если лень читать, хотя бы просмотрите все пункты, что-нибудь интересное найдёте. Это далеко не полный список, это просто те косяки, который я захотел упомянуть.
Читать дальше →

Исследование защиты ArtMoney. Часть первая

Reading time8 min
Views35K
Приветствую! Сам ArtMoney был закейгенен мной давным-давно. Я не первый раз уже пробую начать писать статью о том, как происходил кейгенинг этой программы, но, всегда где-то стопорился. На этот раз, я решил доделать все до конца! Плюс, эту статью можно считать продолжением цикла статей о крякинге для новичков.

Итак, в этой статье вы узнаете, как я писал кейген к ArtMoney (здесь будет описана версия 7.45.1).
Читать дальше →

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity