Обновить

Разработка

Сначала показывать
Период
Уровень сложности

Проксирование из коробки: сравнительный анализ HAProxy, Envoy, Nginx, Caddy и Traefik

Уровень сложностиСредний
Время на прочтение23 мин
Охват и читатели15K

Всем привет, меня зовут Стас, я техлид в Mish Product Lab.

Тема возникла не просто так: внутри команды у нас было немало споров и дискуссий о том, какой инструмент для проксирования и терминации SSL лучше использовать в различных ситуациях. Изначально все наши гипотезы были основаны больше на личных предпочтениях, чем на реальных данных. Мы долго спорили, надеясь, что истина будет где-то рядом с нашими любимыми решениями. Но в итоге пришли к выводу, что единственный способ получить действительно объективный ответ — это протестировать и сравнить различные варианты на практике.

Именно так родилась идея провести сравнительный анализ производительности HAProxy, Envoy, Nginx, Caddy и Traefik с поддержкой SSL/TLS. Мы хотели понять, какой из инструментов «из коробки» предоставляет наилучшую производительность и минимальные накладные расходы, особенно при обработке SSL-трафика, который, как известно, требует дополнительных ресурсов из-за шифрования и дешифрования.

Читать далее

Геймеры и сообщества, повлиявшие на геймдев

Время на прочтение13 мин
Охват и читатели3K

Когда речь заходит о выдающихся геймерах, все вспоминают известных киберспортсменов или блогеров, ведущих трансляции. Но часто мы забываем о целых сообществах, участники которых играют ради удовольствия, внося огромный вклад в культуру геймеров. Эта статья — своеобразная дань уважения гикам и энтузиастам, которые просто играли, но при этом оказали большое влияние на свои сообщества, стали легендами и вдохновили многих других. Под катом истории о спидранере, который запустил Doom внутри Doom внутри Mario Super World; о 14 геймерах, которые играли в Halo 2 три недели подряд, чтобы не допустить отключения серверов Xbox Live на консолях первого поколения; о разгадке структуры фермента, связанного с вирусом СПИДа, благодаря игре и многое другое.
Читать дальше →

Пишем стек TCP/IP с нуля: Ethernet, ARP, IPv4 и ICMPv4

Уровень сложностиПростой
Время на прочтение13 мин
Охват и читатели17K

Написание собственного стека TCP/IP поначалу может показаться пугающей задачей. И в самом деле, за свой тридцатилетний срок жизни TCP впитал в себя множество спецификаций. Однако базовая спецификация остаётся относительно компактной1 — из важных частей в ней можно выделить парсинг заголовков TCP, машину состояний, отслеживание перегрузок и вычисление таймаута повторной передачи.

Самые распространённые протоколы слоя 2 и слоя 3, Ethernet и IP, скромны по сравнению с сложностью TCP. В этой серии статей мы реализуем минимальный стек TCP/IP пользовательского пространства для Linux.

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

Читать далее

История S.u.S.E. Начало

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели5.2K

В 1992 году четверо студентов из немецкого городка Фюрт — Роланд Дирофф, Томас Фер, Хьюберт Мантель и Бурхард Стайнбильд — мечтали о независимости. Им хотелось идти своим путём, работать на себя и получать от этого удовольствие. В колледже ребята много работали с UNIX, а в Хельсинском университете как раз выпустили новое опенсорсное ядро Linux. В то же время Питер Макдональд создал дистрибутив Softlanding Linux System (SLS), а Патрик Волькердинг выпускал исправления для него, бесплатно распространяя их через FTP. Но везде была одна общая проблема — большинство систем UNIX и Linux поддерживали только английский язык. Тогда четверо друзей решили упростить себе и людям жизнь, занявшись локализацией SLS для немецкой аудитории.
Читать дальше →

Кто проживает на дне океана? Рассказываем о подводных линиях связи

Время на прочтение7 мин
Охват и читатели6.6K

Привет! Я Лев, специалист продуктовой поддержки в Selectel. Задумывались ли вы, как сообщение в мессенджере или видеозвонок достигают адресата за доли секунды, преодолевая тысячи километров? Наверняка. А о том, что 70% Земли покрыто водой? Думаю, тоже. Но если совместить эти факты, то выходит, что большая часть «магии» происходит именно на глубине, а подводные линии связи — это невидимые герои, соединяющие континенты. В статье немного окунемся в историю, расскажем об их основных типах и функциональных элементах, а также рассмотрим сферы применения!
Читать дальше →

Почему JWT — не панацея: разбор проблем сессий и безопасности

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели17K

JWT для сессий: удобство или головная боль?

JSON Web Token (JWT) приобрёл популярность как удобный способ аутентификации и передачи данных между клиентом и сервером. Его ценят за простоту, stateless-подход и гибкость. Однако большинство гайдов рассказывают только о плюсах, забывая о недостатках.

В этой статье мы разберём основные проблемы использования JWT для хранения пользовательских сессий и обсудим более надёжные альтернативы.

Читать далее

Разработка трёхмерного движка для Dendy/NES. Часть 1

Уровень сложностиСредний
Время на прочтение18 мин
Охват и читатели12K

В этой статье мы поговорим о разработке простого трёхмерного движка для консоли Dendy (NES/Famicom), который позволит выводить полигональные трёхмерные модели и проводить над ними базовые манипуляции (вращение, перемещение, трансформация, заливка полигонов и т. д.). В первом части мы обсудим реализацию вывода двумерных примитивов и организацию памяти в условиях ограничений NES.

Читать далее

Оживляем раритетное этажное табло от лифта

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели3.3K
Приветствую всех!
Давным-давно, когда лифты были ещё релейными, на некоторые из них ставились довольно характерного вида табло на вакуумно-люминесцентных индикаторах. Обычно таковыми являлись административные лифты, однако подобные указатели можно было встретить и в некоторых жилых домах.



И вот однажды мне стало интересно: а как вообще устроены такие табло и чем там управляется этот индикатор? Самое время это узнать. Заодно запустим такой девайс и посмотрим на начинку более поздних экземпляров.
Читать дальше →

Liberux NEXX: Linux-смартфон с 32 ГБ ОЗУ и аппаратными переключателями

Время на прочтение4 мин
Охват и читатели19K

Источник.

Ну что, линуксоиды могут быть довольны. На рынке появился (точнее, скоро появится) очередной телефон на базе Linux. Причем не просто так, а с изюминкой. Liberux NEXX – это не просто смартфон, а настоящий техно-манифест. 32 ГБ оперативки, Linux под капотом и куча фишек для параноиков. Давайте разбираться, что это за телефон и кому он вообще нужен.
Читать дальше →

Я решил, что обнаружил баг…

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели9.5K

Я работал над совершенствованием эмулятора DOS и внезапно обнаружил, что достаточно тривиальная операция работает неправильно. Когда просишь COMMAND.COM сделать следующее:

echo AB> foo.txt
echo CD>> foo.txt

то вместо ABCD в файл foo.txt записывается ABBC.

Я проверил и убедился, что fwrite() действительно передаются правильные данные, но хитрость в том, что действия COMMAND.COM не так просты, как можно подумать:

  • Открываем foo.txt
  • Записываем «AB»
  • Закрываем foo.txt
  • Открываем foo.txt
  • Выполняем поиск на один байт назад от конца файла
  • Считываем один байт
  • Записываем «CD»
  • Закрываем foo.txt

Такая сложность нужна, потому что COMMAND.COM хочет учесть случай, когда файл заканчивается символом Ctrl-Z (в нашем случае его нет): в этом случае Ctrl-Z необходимо удалить. Почему-то последовательность «поиск-чтение-запись» работала странно. Но почему?
Читать дальше →

Оптимизация кольцевого буфера для повышения пропускной способности

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели6.4K

В этой статье мы рассмотрим классический конкурентный кольцевой буфер и обсудим, как его можно оптимизировать для повышения производительности. Я покажу вам, как существенно улучшить этот показатель от 5,5 миллионов элементов в секунду до 112 миллионов элементов в секунду — и эти показатели выше, чем в реализациях Boost и Folly. Если вам требуется готовая реализация со всеми этими оптимизациями, посмотрите мою библиотеку SPSCQueue.h.

Кольцевой буфер также называется очередью «один производитель — один потребитель» (SPSC). В ней не бывает ожидания (и, соответственно, не бывает блокировок), это конкурентный примитив. Такая структура данных находит множество вариантов применения, и здесь я рассмотрю передачу сетевых пакетов между сетевым контроллером и драйверами операционной системы. Основная задача, решаемая при этом — выполнение событий ввода/вывода в относительно новом асинхронном API io_uring.

Читать далее

Как я взломал одну из самых топовых нейросетей (Claude 3.5 Sonnet) для студенческой научной статьи

Уровень сложностиСредний
Время на прочтение33 мин
Охват и читатели14K

Я — простой студент, который обучается по направлению «Информационная безопасность». Так вышло, что по программе мне нужно было написать научную статью по теме ИБ. Будучи авантюристом я выбрал тему, которая была мне ближе и интереснее... и так получилось, что в пылу энтузиазма я немного перевыполнил свой план. К сожалению, я был ограничен в объеме по написанию научной статьи, и много интересного материала пришлось вырезать или сократить. Поэтому, тут я хотел бы написать полную версию моей статьи, во всяком случаи, какой я бы хотел ее видеть.

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

Читать далее

Сколько воды в бочке?

Уровень сложностиСредний
Время на прочтение18 мин
Охват и читатели19K

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

Читать далее

Ближайшие события

Сила оттенков серого: компьютерное зрение с нуля

Уровень сложностиПростой
Время на прочтение16 мин
Охват и читатели16K

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

Мне захотелось понять, насколько далеко я смогу зайти, оставив в computer vision только самый минимум: одни лишь 8-битные изображения в градациях серого; никаких сложных структур данных, старый добрый C, немного байтовых массивов и единственный файл заголовка. В конце концов, изображение — это ведь просто прямоугольник из чисел, не так ли?

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

Читать далее

Не рейт-лимитером единым: как управлять нагрузкой в микросервисах

Уровень сложностиПростой
Время на прочтение12 мин
Охват и читатели14K

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

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

Поехали!

Семь стадий зрелости программиста: от энтузиаста до архитектора-отшельника

Уровень сложностиСложный
Время на прочтение4 мин
Охват и читатели24K

Когда-то ты спорил на форумах о том, что лучше — tabs или spaces, а теперь просто настраиваешь .editorconfig и идешь пить кофе. Этот текст — не про карьеру, не про зарплаты и не про мотивацию. Это про то, как постепенно меняется восприятие кода, ответственности и хаоса, когда годы коммитов превращают энтузиазм в инженерное спокойствие. Здесь не будет морали — только наблюдения, немного иронии и чуть-чуть боли.

Читать далее

Почему операционный усилитель — плохой компаратор

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели19K

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

Начинающие электронщики часто недоумевают, в чем разница между ОУ и компаратором. На электрических схемах их изображают почти одинаково, да и функционально иногда первым можно заменить второй.

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

Погрузиться в мир аналоговой схемотехники

Жизнь как коробка с печеньками: что скрывают cookie-баннеры

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели17K

Вы точно их видели — и не один раз. Баннеры с cookie за последние годы стали обычным делом. Разберём, что такое cookie-баннер, как он работает и почему часто мешает пользователю. Если вы маркетолог или управляете сайтом и не понимаете, зачем на нём нужен баннер с cookie — эта статья всё объяснит. Детали под катом.

Читать далее

Демобаза 2.0 для PostgreSQL

Уровень сложностиПростой
Время на прочтение14 мин
Охват и читатели14K

Можно ли смоделировать хаос пуассоновских потоков бронирований и конечный автомат состояний рейса (от «по расписанию» до «приземлился») целиком внутри PostgreSQL? Мы решили, что для создания идеальной учебной базы данных — можно. Вместо старых статичных таблиц мы построили генератор, имитирующий жизнь глобальной авиакомпании. Рассказываем, зачем это было нужно и почему старая база на 2,5 ГБ перестала справляться с задачами.

Лечу это я, лечу

Банковский спектакль KYC и AML

Уровень сложностиПростой
Время на прочтение16 мин
Охват и читатели16K

Многие люди смутно представляют, что у финансовых институтов есть обязанность соблюдать Know Your Customer (KYC) и иметь программы AML (anti-moneylaundering), но что это означает на самом деле? Рад, что вы спросили.

С ними всё… сложно и запутанно, из-за чего у многих (внутри и вне этой отрасли) сложилось ошибочное впечатление об их уровнях широты и строгости. Кроме того, они достигают своих целей не самым очевидным образом, во многих отношениях нарушая наши ожидания о том, как работают законы в целом.

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

Читать далее