В августе 2020 года к нам обратился клиент с кэшем из заблокированных документов QText из середины 90-х, пароль для которых он утерял. QText — это редактор из времён DOS, использовавшийся для обработки иврита и английского текста. Написан он на Pascal и был выпущен где-то за 15 лет до того, как мы с @Elisha занялись обратной разработкой. В этой статье мы опишем весь процесс анализа тех зашифрованных документов и выполним реверс-инжиниринг программы DOS. Надеюсь, нам удастся раскрыть некот…
Всем привет, меня зовут Стас, я техлид в Mish Product Lab.Тема возникла не просто так: внутри команды у нас было немало споров и дискуссий о том, какой инструмент для проксирования и терминации SSL лучше использовать в различных ситуациях. Изначально все наши гипотезы были основаны больше на личных предпочтениях, чем на реальных данных. Мы долго спорили, надеясь, что истина будет где-то рядом с нашими любимыми решениями. Но в итоге пришли к выводу, что единственный способ получить действительно…
Мне 47 лет. Я программирую больше половины своей жизни. Я пережил DOS, взлёт Delphi, появление .NET, рождение Web 2.0 и взрыв популярности JavaScript. Я писал на C++, Assembler, C#, JS, Angular, React, работал с Oracle, PostgreSQL, IIS, Apache, Kafka, Docker и даже участвовал в реверс-инжиниринге ПО. У меня в багаже — не только строки кода, но и понимание архитектуры, оптимизации, безопасности. Я разрабатывал приложения от идеи до внедрения. И, да, я помню времена, когда IDE запускалась с диске…
Кому лень читать статью целиком, можете сразу переходить к последней главе.В этой статье я хочу поделиться своим мнением, которое мне кажется очевидным, но почему-то все игнорируют возможность такого сценария.Если вы нанимаете, и готовы рассмотреть хорошего Junior+/Middle Python Backend, напишите мне в Telegram. Я учу людей программировать, а не просто проходить собеседования. Даже если прямо сейчас у вас нет вакансии, в будущем у вас появится потребность в хорошем Junior+, который готов к само…
Всем привет! Сегодня хочется поговорить про механизм распространения контекста трассировки в OpenTelemetry. Разберем, как он работает, и посмотрим простой пример на Go. Всё — коротко и по делу!Меня зовут Носорев Константин, я backend-разработчик в Яндекс Пей, автор канала "Константин про IT" и просто любознательный инженер.OpenTelemetry уже давно стал стандартом для построения системы наблюдаемости (observability) в микросервисной архитектуре. Начнем с небольшого ликбеза, чтобы проще во…
Всем привет! Я уже писал статью о различных способах, которые мне приходилось использовать для чтения логов, и к какому решению в итоге пришел. Хотя прошло не так много времени, с тех пор приложение не переставало развиваться. Узнав о том, что на Хабре проходит сезон Open source, мне показалось это отличным поводом подчеркнуть, что именно стало причиной для создания данного инструмента, а также рассказать немного подробнее про основные и новые функции.Почему терминальный интерфейс?На сегодняшни…
Как реализовать подходы Mutex и lock-free и какой из них выбрать для решения вашей задачи? Как «подружиться» с пакетами unsafe и использовать их для эффективной разработки? И наконец, что ждет инженеров в релизе 1.24? На эти и другие вопросы ответили Go-разработчики из YADRO, AvitoTech и Yandex, а мы принесли вам записи и презентации их обсуждений. Из докладов вы узнаете о работе с критической секцией и подводных камнях unsafe. А после просмотра дискуссии поймете, какие фичи из нового релиза сд…
Давайте подробнее рассмотрим преимущества каждого из этих языков, чтобы вы могли сделать оптимальный выбор для своего следующего проекта по веб-скрейпингу. Python: Simple and Powerful Python — один из самых популярных языков для веб-скрейпинга, и не зря. Он прост в изучении и использовании, что делает его отличным выбором для новичков. Синтаксис чист и читабелен, что позволяет разработчикам писать эффективный код с минимальными усилиями. Python также оснащён обширной коллекцией библиотек, уп…
ВведениеХеш-таблица(мапа) — одна из самых популярных структур данных, потому что поиск по ключу происходит за O(1). Причем ключ может быть любым любым типом, элементы которого можно сравнивать (Comparable Trait).Я столкнулся с тем, что мапа не такая быстрая по бенчмаркам на языке GO, хотя теоретическая сложность алгоритма О(1).Давайте рассмотрим следующую задачу и способы ее решения.ЗадачаУ людей есть какие-то национальности, и национальностей может быть несколько у одного человека. Определить …