Pull to refresh
42
10.1
Михаил Гельвих @Mixxxxa

C++ Разработчик

Send message

Почему я отказался от разработки игр на Rust, часть 2

Level of difficultyMedium
Reading time16 min
Views3.3K

Часть 1

Обобщённые системы не приводят к интересному геймплею

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

Это сильный аргумент, на который почти нечем ответить, за исключением того, что обобщённые системы приводят к скучному геймплею. Я был довольно активен в сообществе разработчиков игр на Rust, поэтому видел множество проектов, которые создают другие; разумеется, предлагаемые ими рекомендации коррелируют с теми играми, которые они создают. Люди, которые склонны создавать красиво спроектированные системы, работающие полностью обобщённо, обычно создают не совсем игры, а симуляции того, что со временем станет игрой; в таких симуляциях геймплеем часто считается даже нечто типа «у меня есть персонаж, который может двигаться».

Читать далее
Total votes 12: ↑13 and ↓-1+14
Comments18

Шпаргалка по безопасной сборке Docker-образов

Reading time17 min
Views4.2K

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

Привет, Хабр! Меня зовут Эллада, я специалист по информационной безопасности в Selectel. Продолжаю рассказывать о безопасности в Docker. Под катом расскажу, как настроить сборку образов, обеспечить безопасность и добавить сканирование в пайплайн.
Читать дальше →
Total votes 31: ↑33 and ↓-2+35
Comments5

Хороший кроссовер и необычный сабвуфер

Level of difficultyEasy
Reading time7 min
Views3K


Привет, Хабр! Сегодня я расскажу про свою новую самоделку. Это компактная моноблочная стереоколонка с сабвуфером и 5-вольтовым питанием от USB.

Роль звукоизлучателя сабвуфера выполняет сам корпус устройства, благодаря применению вибрационного громкоговорителя.
Читать дальше →
Total votes 22: ↑29 and ↓-7+36
Comments5

Откуда Deezer знает, какая музыка нравится новым пользователям?

Level of difficultyHard
Reading time9 min
Views2.5K

Привет, Хабр! Меня зовут Данил Картушов. 👋

В этом посте я расскажу, как музыкальная платформа Deezer, используя метаданные, с первых секунд научилась рекомендовать персонализированные треки новым пользователям!

▶️ Начнем!
Total votes 7: ↑4.5 and ↓2.5+2
Comments7

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

Reading time8 min
Views9.9K

В чём принципиальное отличие джуна от мидла, а мидла от сеньора? На какие навыки поднажать, чтобы не задерживаться на одной ступеньке? Эти темы актуальны в ИТ-сообществе всегда. 

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

Читать дальше →
Total votes 21: ↑18 and ↓3+15
Comments10

regexp — большие гонки

Level of difficultyMedium
Reading time3 min
Views5.6K

Так или иначе сталкиваться с регулярными выражениями приходилось большинству разработчиков. Мое первое знакомство произошло с реализацией regex в STL std::regexp. Чаще всего регулярки используются в проверке входных данных, что-то вроде проверки корректности введенного пользователем URL, адреса IPv4, адреса IPv6, телефонного номера и при этом скорость выполнения операции regex не сильно влияет на время отклика от приложения. Но, что если вам приходится проверять сотни, тысячи или даже десятки тысяч правил и все это на постоянно меняющихся наборах входных данных в реальном времени? В этой ситуации вам не просто нужен быстрый алгоритм, вам понадобится лучший из них, вам понадобиться чемпион!

Участвовать в заезде!
Total votes 18: ↑20.5 and ↓-2.5+23
Comments26

Топ 20 стран для комфортной жизни с зарплатой 500/1000/1500 долларов

Level of difficultyEasy
Reading time3 min
Views14K

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

В связи с чем я провел анализ стран по наиболее существенным на мой взгляд критериям. Данные предоставлены за 1-й квартал 2024 года из открытого источника https://www.numbeo.com/, проанализированы 92 страны.

Читать далее
Total votes 50: ↑35 and ↓15+20
Comments162

Restricted IO в Haskell

Level of difficultyMedium
Reading time8 min
Views1.2K

В статье описывается механизм создания собственного модифицированного варианта монады IO в Haskell, с ограничениями операций ввода-вывода.

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

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

Читать далее
Total votes 12: ↑14 and ↓-2+16
Comments4

Реверс и анализ Keyzetsu Clipper

Level of difficultyMedium
Reading time9 min
Views1.2K

Недавно я увидел новость о появлении на GitHub фальшивых репозиториев, которые обманом заставляют жертв скачивать вредонос, угрожающий безопасности их криптоактивов. Вредонос называется Keyzetsu Clipper, и в тот момент мне очень захотелось узнать, как работают настоящие вирусы. До этого у меня только был опыт учатсия в разных CTF. И тут я понял, что пришло время испытать свои силы на реальном примере.

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

Читать далее
Total votes 11: ↑12.5 and ↓-1.5+14
Comments3

Этика разработчика

Reading time2 min
Views4.4K

Есть ли этика у разработчиков? Знает ли разработчик продукт, который разрабатывает? «Хороший дилер своим товаром не пользуется, иначе он превратится в собственного клиента», — гласит уличная поговорка. В IT важно знать продукт, который разрабатываешь, чтобы не пришлось перефразировать слова Сэмюэля Кольта: «Не оружие убивает, люди убивают».

Читать далее
Total votes 39: ↑32 and ↓7+25
Comments101

Сборка MS-DOS 4.0

Reading time6 min
Views20K

Совсем недавно на хабре появилась следующая новость: На GitHub опубликован исходный код MS-DOS 4.00 под лицензией MIT. Раз появились исходные коды, стало сразу интересно: а можно ли собрать эту операционную систему?
Читать дальше →
Total votes 92: ↑109.5 and ↓-17.5+127
Comments67

Атаки на Bluetooth. Часть 2. «Яблоко и синяя утка»

Reading time6 min
Views1.5K

Введение

Рады снова приветствовать тебя, дорогой читатель! В этой статье мы продолжим раскручивать тему атак на Bluetooth. В прошлой статье мы разобрали лёгкий и очевидный вид атак - это заглушка. В этих атаках нет ничего сложного.

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

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

Читать далее
Total votes 3: ↑2 and ↓1+1
Comments1

Берём ноутбук и отсекаем всё лишнее

Level of difficultyEasy
Reading time2 min
Views34K

Более 10 лет назад в голове промелькнула мысль "если из ноутбука убрать все лишнее то получится компактный системный блок". Даже набросал "бизнес-идею" в виде презентации...

Читать далее
Total votes 33: ↑32 and ↓1+31
Comments81

Право на ремонт в ЕС: компании будут чинить устройства после истечения гарантии

Reading time4 min
Views2.7K

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

Читать далее
Total votes 13: ↑18 and ↓-5+23
Comments15

Оснащение домашней мастерской. Ввод в строй лабораторных электроприборов

Level of difficultyEasy
Reading time8 min
Views7.6K

Речь идёт о деревенской мастерской и освоении в ней азов электровакуумного дела. Небольшими силами и средствами. Попутно и кроме этого здесь занимаюсь и слесарными мелочами, пайкой, вознёй с химикатами и прочим в этом духе. Увы, оснащаться приходится по случаю и не самыми лучшими вариантами приборов, чиня их, регулируя и по возможности совершенствуя. Ниже описаны такого рода работы с магнитной мешалкой, ультразвуковой мойкой и дешёвым кондиционерно-холодильниковым вакуумным (форвакуумным) насосом.
Читать дальше →
Total votes 65: ↑79.5 and ↓-14.5+94
Comments68

Как Apple на самом деле следит за вами

Level of difficultyEasy
Reading time12 min
Views31K

По счастливой случайности я оказался резидентом Евросоюза, а значит, на меня также распространяется GDPR. Он позволяет мне запросить копию информации, которая хранится обо мне у всяких разных компаний. Я решил сделать это у Apple, и был неприятно удивлен.

Apple старается собирать как можно меньше данных.

Читать далее
Total votes 133: ↑132 and ↓1+131
Comments146

Бесплатный аналог Arduino из мусорки

Level of difficultyEasy
Reading time3 min
Views27K

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

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

Читать далее
Total votes 46: ↑54.5 and ↓-8.5+63
Comments54

Нельзя предполагать, что все используют UTF-8

Level of difficultyMedium
Reading time6 min
Views16K
Как вычислять кодировку при помощи статистики

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

По крайней мере, в таком положении вещей есть, кого винить: Бога. Ведь именно он вынудил человечество говорить на разных языках из-за древнего спора о строительстве объекта недвижимости.

Однако человечество может винить себя за то, что сложности в общении испытывают компьютеры.

И одна из самых больших проблем одновременно является самой простой: компьютеры не договорились о том, как записывать буквы двоичным кодом.
Читать дальше →
Total votes 57: ↑63 and ↓-6+69
Comments87

Как Яндекс создал свою шину данных, чтобы передавать сотни гигабайт в секунду

Level of difficultyEasy
Reading time7 min
Views35K

10 лет назад сотни серверов Яндекса работали на Apache Kafka®, но в этом продукте нам нравилось далеко не всё. Наши задачи требовали единой шины для передачи всех видов данных: от биллинговых до журналов приложений. Сегодня объёмы достигли уже десятков тысяч именованных наборов сообщений.

При таком количестве данных в Apache Kafka® становилось сложно управлять правами доступа, организовывать распределённую работу нескольких команд и многое другое. Проблемы роста и отсутствие подходящего решения в открытом доступе привели к тому, что мы разработали своё решение YDB Topics и выложили его в опенсорс в составе платформы данных YDB. В этом посте расскажу о предпосылках создания продукта, нашей архитектуре передачи данных, возникающих задачах и возможностях, которые появились вместе с YDB Topics.

Читать далее
Total votes 50: ↑58.5 and ↓-8.5+67
Comments24
1
23 ...

Information

Rating
479-th
Works in
Registered
Activity

Specialization

Software Developer
Senior
C++
Python
Embedded system