Pull to refresh
38
0
Dmitry Minsky @DMinsky

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

Send message

Ansible для людей: автоматизировал и выдохнул

Level of difficultyMedium
Reading time8 min
Views18K

Одна команда — и сервер настроен. Я больше не лезу вручную и не повторяю одно и то же десятки раз. Внутри рассказано о том, как Ansible помогает автоматизировать задачи, от настроек до деплоя.

Читать далее

Вы не там ищете свободу воли, мистер Сапольски

Level of difficultyEasy
Reading time9 min
Views12K


Своего рода консенсусом среди части учёных, в первую очередь — в нейронауках, стало мнение, что свободы воли не существует. Можно сказать, что они образуют целую научную школу в рамках биологической науки и антропологии, а лицом её является, безусловно, нейробиолог Роберт Сапольски, автор таких книг как ​​«Всё решено: Жизнь без свободы воли» и «Биология добра и зла: Как наука объясняет наши поступки».

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

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

И тем не менее, я начал читать «Всё решено: Жизнь без свободы воли» именно потому, что был с Сапольски не согласен.
Читать дальше →

Как оптимизировать PostgreSQL и не лишиться сна: разбор для разработчиков

Level of difficultyMedium
Reading time12 min
Views17K

Когда вы разворачиваете веб-приложение, чаще всего у вас веб-сервер, бэкенд, база данных и авторизация оказываются на одном сервере. Первые пользователи, обычно тестировщики и менеджер, счастливы — все летает. Но потом приложение выходит в продакшн и начинается боль. Запросы тормозят и отвечают по пять секунд, CPU не загружен даже на треть, веб-сервер швыряет 504 Gateway Timeout и т. д. И вот вы сидите ночью и чините прод, потому что PostgreSQL — не просто «табличка с данными», а сложный инструмент с кэшем, индексами, буферами и планировщиком запросов.

Привет, Хабр! Меня зовут Александр Гришин, я руководитель по развитию продуктов хранения данных в Selectel и отвечаю за облачные баз данных и объектное S3 хранилище. В работе я часто сталкиваюсь с вопросами о производительности PostgreSQL, поэтому собрал практические советы для разработчиков, инженеров и архитекторов облачной инфраструктуры. В статье рассмотрим, как правильно использовать индексы, анализировать планы выполнения запросов и избегать типичных ошибок при проектировании схемы. Погнали!
Читать дальше →

Разработка DIY компьютера на базе FPGA

Reading time12 min
Views15K

Желание поиграть в проектирование собственного процессора обычно приводит к покупке платы с FPGA. Но мне захотелось сделать шаг дальше и начать не с Verilog-а, а с паяльника.

Это статья о том, как я занялся разработкой электроники, не имея почти никакого опыта в этой сфере. Цель - сделать устройство с FPGA на котором можно загрузить Linux, подключить экран и клавиатуру, а потом прямо там писать и компилировать код.

Зачем это нужно? Это хобби. Практической ценности не имеет. Просто я так развлекаюсь. А сейчас у меня, к моему собственному удивлению, все задуманное получилось, и я хочу показать и похвастаться.

Читать далее

Мы наш, мы новый SDL3 построим или вперед в прошлое

Level of difficultyEasy
Reading time11 min
Views3.4K

Приветствую, Хабравчане!

В данной статье, хочу вам рассказать о своём проекте по реализации SDL3 для старых систем. Конечно, я не ограничиваюсь только Windows 95, разработку веду по современным ПК. Главная причина, это конечно фан и любовь к старому железу, которое ещё многое умеет.

Читать далее

Любителям x86-64 assembler посвящается: DIY волокна в C++

Level of difficultyHard
Reading time26 min
Views14K

Нас ждёт мозговыносящая смесь 64/32-битного ассемблера и старого-доброго C++. Мы сделаем собственную реализацию... Волокон (fibers) без вызова Win API и звонков в службу спасения.

Читать далее

Резервное копирование PostgreSQL по-взрослому

Level of difficultyMedium
Reading time7 min
Views20K
image

Базы данных — замечательный инструмент, без которого сложно представить современное приложение. И как бы сильно я ни любил использовать БД, я просто ненавижу писать SQL-запросы. Поэтому однажды задался вопросом, кто мог бы делать это за меня, при этом несильно теряя в качестве. И, конечно же, на ум пришёл мой AI-друг. Тогда остаётся одна проблема, как скормить ему мою БД. Тут на помощь приходит резервное копирование! Выполнив все необходимые задачи, я решил углубиться в тему и поделиться с Хабром, какие вообще есть виды и, конечно, сравнить их между собой.
Читать дальше →

Покоряем сетевой стек Linux: декапсулируем пакеты с помощью eBPF на скорости 6Mpps+

Reading time15 min
Views14K

Когда переход на VXLAN в облачных сетях грозил нарушить работу системы анализа трафика, нам нужно было найти решение, позволяющее сохранить точный сбор статистики при экстремальных нагрузках и измененной структуре заголовков пакетов. Я — Александр Шишебаров, старший разработчик в команде сетевых функций облака Selectel. Разрабатываю все, что связано с сетью: балансировщики, виртуальные роутеры, сети, глобальный роутер и так далее.

В этой статье рассказываю о том, как мы использовали eBPF для перехвата и декапсуляции VXLAN-пакетов прямо в ядре, обеспечив корректный сбор статистики без значительных изменений в архитектуре системы. Разберем, какие требования привели нас к этому решению, как его внедряли и каких результатов удалось достичь. Также расскажу, что такое eBPF, как работает технология, как начать с ней работать и на каких этапах сетевого стека Linux можно перехватывать пакеты с ее помощью. Подробности под катом!
Читать дальше →

Пара вещей, которые должен знать игровой программист

Level of difficultyEasy
Reading time5 min
Views15K

В std::move никто никуда не двигается

В undefined behavior поведение вполне себе определено, просто крашит игру

В GameObject нет ни игры ни объекта, а только баги и куча антипаттернов

Memory leak detector сам протекает

В PhysicsEngine физики столько же, сколько в сказке про Колобка

Из 8 часов работы 6 уходят на попытку собрать билд после мержа со стейблом.

В ProfileMode тормозит всё кроме профайлера

В retrospective meeting обсуждают, почему всё плохо, но оставляют как есть.

В debug билде багов меньше чем в релизном и выше фпс

По мотивам шипнутых проектов...

Как пустой S3 бакет может вас обанкротить

Level of difficultyEasy
Reading time4 min
Views42K

Представьте, что вы создали пустую, приватную корзину (их ещё называют «бакетами» — от «bucket») AWS S3 в выбранном вами регионе. Каким будет счёт за услуги AWS на следующее утро?

Несколько недель назад я начал работу над прототипом системы индексирования документов для моего клиента. Я создал одну корзину S3 в регионе eu-west-1 и загрузил туда несколько файлов для тестирования. Через два дня я проверил мою страницу выставления счетов AWS, заглянув туда, преимущественно, для того, чтобы проверить, что то, чем я занимаюсь, нормально укладывается в лимиты бесплатного тарифного плана. Но, судя по тому, что я там увидел, ни о какой нормальности речи не шло. Мой счёт превышал $1300, а в консоли выставления счетов были видны сто миллионов PUT-запросов к корзине S3, выполненных всего за один день!

Читать далее

Сборка проектов Си и Си++: от простого к сложному. Часть I. Библиотеки

Level of difficultyMedium
Reading time12 min
Views25K

Каждый раз, в течение многих лет, собирая пилотную версию мизерного проекта или простой утилиты, мне кажется, что уж в этот раз точно обойдусь обычным скриптом для сборки, и никакие сборщики проекта мне не понадобятся. Но суровая реальность приводит меня в чувство уже в течение первых нескольких минут работы. Сначала оказывается, что до невозможности простая программка нуждается в JSON-парсере, HTTP-запросах CURL и прочих библиотеках. А по мере возбуждения хотелок эти все зависимости нарастают как снежный ком. И все мечты быстро скомпилировать страничку кода встречают на каждом шаге всё новые и новые проблемы.

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

PyMyFlySpy: отслеживание полёта по бортовым данным

Level of difficultyMedium
Reading time6 min
Views7.7K

«Где мы, папа», — спросил меня 5-летний сын.

«Мы приземлимся примерно через час», — ответил я.

«Да нет, я имею в виду, где мы? Мы ещё не пролетаем Италию?»

Точно ответить я не мог. Это был недолгий перелёт по низкому тарифу без удобств в виде встроенных в подголовники кресел экранов. Тогда я огляделся по сторонам и заметил наклейку с призывом подключиться к WiFi-сети самолёта. Должно сработать. Думаю, что сайт вроде FlightRadar ответит на вопрос моего сынишки с точностью до нескольких метров.

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

Неочевидные для начинающих тонкости Postgres

Level of difficultyMedium
Reading time15 min
Views47K

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

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

За исключением… Postgres.

Не потому, что официальная документация несовершенна (она прекрасна!), просто её очень много. Если распечатать её как стандартный PDF на бумаге формата Letter, то получится 3206 страниц (для текущей версии 17)1. Разработчик-джун вряд ли сможет сесть и прочитать её с начала до конца.

1. Если печатать на бумаге A4, то получится 3024 страницы; наверно, это ещё один аргумент в пользу стандарта.

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

Надеюсь, это упростит процесс освоения для читателей моей статьи.

Стоит отметить, что многое из описанного может быть применимо и к другим системам управления базами данных (СУБД) SQL и вообще к базам данных в целом, но я слабо знакома с ними, так что не буду утверждать с уверенностью.
Читать дальше →

Изучаем RISC-V с платой Sipeed M1S

Level of difficultyEasy
Reading time22 min
Views8.7K

Наконец-то появилось время и желание пощупать и опробовать в деле давно купленную отладку от Sipeed на базе RISC-V SoC BL808. Попутно я решил собрать материал по теме и поделиться с читателями своим опытом использования этого SoC в разных сценариях. Помимо обзора отладки и SoC я подробно расскажу, что предоставляет производитель для энтузиастов, состав SDK,  как собрать Linux-ядро, примеры ее использования. Всем кому интересна данная тема — добро пожаловать под кат! =)

Читать далее

Как настраивать сети: определения, типовые схемы, особенности

Level of difficultyMedium
Reading time9 min
Views17K


Здравствуйте. Меня зовут Гордиенко Андрей, я ведущий специалист в отделе поддержки облачных услуг в Selectel. Работаю в компании более пяти лет и накопил немалый опыт учета запросов клиентов как выделенных серверов, так и облачных услуг. В прошлом продолжительное время занимал должность сетевого инженера, добился определенных успехов, а теперь хочу поделиться знаниями с сообществом.

Мы подготовили материал, состоящий из трех частей. Цель трилогии — помочь всем, кому необходимо разбираться в особенностях сетей, в том, как их использовать для выстраивания новой инфраструктуры или улучшения существующей. В основе — накопленные знания при обработке клиентских запросов.
Читать дальше →

Глобально оптимальный, восьмой и наиболее быстрый вид интерпретаторов байткода

Level of difficultyHard
Reading time15 min
Views12K

Совершать невозможное и раздавать пинки здравому смыслу — в этом и состоит жизнь членов Гуррен-Дана! (C) Камина

Эта статья вступает в техническую полемику со статьей 2015 года за авторством Atakua, подходы из которой я и атакую. Atakua исследует 7 видов интерпретаторов байткода, но делает это без уважения - быстрейшей оказывается двоичная трансляция, которая, по сути, уже не интерпретатор байткода, а форма Ahead-Of-Time компилятора. Эта двоичная трансляция транслирует байткод в машинный код, представляющий собой цепочку вызовов скомпилированных сервисных процедур. Тех самых, что в интерпретаторе байткода отвечают за выполнение каждого опкода.

Но Atakua не выжал из интерпретаторов байткода всю скорость которая возможна. Так что эта статья - туториал: как написать интерпретатор байткода, который может обгонять JIT/AOT-компиляцию по скорости. Интересно? Читайте дальше!

Бенчмарк прилагается. Будет немного хардкора и ни одной сгенерированной нейросетью картинки!

Читать далее

Семь видов интерпретаторов виртуальной машины. В поисках самого быстрого

Reading time35 min
Views35K
Все проблемы в области Computer Science могут быть решены введением дополнительного уровня косвенности. За исключением одной: слишком большого числа уровней косвенности.
All problems in computer science can be solved by another level of indirection, except for the problem of too many layers of indirection.

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

Быстрее пули: как найти счастье с PostgreSQL

Level of difficultyEasy
Reading time24 min
Views16K

В этой статье мы расскажем о том, как эффективно реализовать полнотекстовый поиск с помощью PostgreSQL. Узнайте, как улучшить скорость и точность поиска по текстовым данным, используя такие инструменты, как tsvector, tsquery и индексы GIN, и как эти возможности могут значительно повысить производительность вашего приложения.

Читать далее

Разложение (проституирование) инженерной деятельности как ключевая причина краха советской системы

Level of difficultyEasy
Reading time18 min
Views65K

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

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

И наконец,  мемом начала примерно 2010 года стала на просторах интернета запись какого-то реального технического совещания, закончившегося воплями - «...Проср*ли все полимеры !!..»

Откуда все это?  Анекдоты рассказываются, вопли стихают… а далее  следует пустота и молчание..Есть некоторое табу молчания на углубление в  «механику» из шкурных интересов, которые создают проблемы и реинкарнируют их снова, снова и снова. 

Читать далее

Почему слишком быстрые мыши могут ломать FPS в играх

Level of difficultyEasy
Reading time8 min
Views23K

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

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

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

Читать далее

Information

Rating
Does not participate
Registered
Activity