
В 2020 году умирал мой бизнес – фитнес-студия. Мы не могли работать в коронавирус, абонементов продали, а оказать услугу не могли. Копились долги, и тогда у меня родилась дочка. В общем, сильно были нужны деньги.
User
В 2020 году умирал мой бизнес – фитнес-студия. Мы не могли работать в коронавирус, абонементов продали, а оказать услугу не могли. Копились долги, и тогда у меня родилась дочка. В общем, сильно были нужны деньги.
В данной статье хочу поделиться собственным опытом по настройке всем хорошо известных технологий для маршрутизации трафика до всяких разных ресурсов. Тут не будет подробного описания принципов их работы, на просторах Хабра есть масса статей на эту тематику. Я черпал вдохновение именно оттуда, от себя лично добавить ничего не могу.
Сегодня же хочется сосредоточиться больше на практической реализации с добавлением некоторых фич, которые помогут немного упростить процесс деплоя и переноса сервера, распространения конфигурации на клиенты, минимизируя ручной труд.
Небольшой дисклеймер: В статье нет настройки клиентов под Linux и Android, ибо не пользуюсь. Вот здесь есть хорошие примеры, да и подписка, о которой я расскажу, здорово унифицирует этот процесс. Да и для iOS ограничусь лишь самым базовым.
Лично я познакомился с новым поколением прокси‑серверов из материалов многоуважаемого пользователя MiraclePtr. Например, эта статья послужит отличной иллюстрацией, что такое XTLS и Shadowsocks, о которых пойдет речь ниже.
Привет! На связи Геннадий «Крэйл» Круглов из команды, которая разрабатывает аппаратную часть Яндекс Станций. С кем-то из читателей Хабра мы уже могли познакомиться в рамках мероприятий Я.Железа, где делимся опытом разработки устройств.
Последние несколько лет мы с командой вынашивали идею публичного рассказа об устройстве отдельной взятой части наших умных колонок — кнопки Mute. Эта тема вызывает живой интерес, поскольку напрямую касается приватности. Мы часто говорили о том, что Mute отключает микрофоны физически, но как именно это происходит — не рассказывали. В итоге вопросы копились, но руки, как это обычно бывает, до статьи не доходили. Пожалуй, вернём сегодня этот должок.
В этом посте мы расскажем о нашем основном решении для кнопки Mute. Вы увидите, что у процессора устройства нет физической возможности управлять питанием микрофонов, а значит, обойти кнопку программным способом невозможно. Мы опубликуем схемы и расскажем, как они работают. Сначала на языке, который поймут коллеги-инженеры. В конце — резюмируем простыми словами для всех. Надеюсь, будет интересно и полезно.
Сегодня разберёмся, как сделать видеозвонки — ту самую фичу, без которой сложно представить современное общение в 2025 году, на примере реализации мессенджера.
Для этого мы познакомимся с WebRTC — технологией, которая позволяет приложениям устанавливать прямое соединение друг с другом для обмена аудио, видео и другими данными. Это мощный, но местами капризный инструмент, который требует понимания архитектуры, сигналинга и сетевых нюансов вроде NAT и ICE.
17.04.2025, Сара Коллинз, University of Cambridge
Астрономы обнаружили самые многообещающие признаки возможного существования биосигнатуры за пределами Солнечной системы, хотя они по-прежнему проявляют осторожность.
О полезных функциях и процессе установки GrapheneOS - одной из самых безопасных мобильных операционных систем.
Всем привет, меня зовут Стас, я техлид в Mish Product Lab.
Тема возникла не просто так: внутри команды у нас было немало споров и дискуссий о том, какой инструмент для проксирования и терминации SSL лучше использовать в различных ситуациях. Изначально все наши гипотезы были основаны больше на личных предпочтениях, чем на реальных данных. Мы долго спорили, надеясь, что истина будет где-то рядом с нашими любимыми решениями. Но в итоге пришли к выводу, что единственный способ получить действительно объективный ответ — это протестировать и сравнить различные варианты на практике.
Именно так родилась идея провести сравнительный анализ производительности HAProxy, Envoy, Nginx, Caddy и Traefik с поддержкой SSL/TLS. Мы хотели понять, какой из инструментов «из коробки» предоставляет наилучшую производительность и минимальные накладные расходы, особенно при обработке SSL-трафика, который, как известно, требует дополнительных ресурсов из-за шифрования и дешифрования.
С появлением LLM люди разделились на три лагеря: тех, кто верит в повышение КПД при помощи автодополнения и тех, кто относится к хайпу крайне скептически. Третий лагерь — это сами LLM, они же тоже что-то там про себя думают, наверное.
За долгие годы работы с кодом я привык слышать от среднего уровня разработчиков (и от тех, кто выбрал языки, которым требуется бесконечная генерация бойлерплейта): «Продуктивность программиста напрямую зависит от IDE». При том, что я всегда производил в несколько раз больше самого сложного в компании кода, используя vim
с минимумом плагинов. Подсветка синтаксиса мне помогает, тут (как, впрочем, и почти везде) я с Пайком не согласен. Автодополнение — уже нет, я его иногда включаю «еще раз попробовать, вдруг это со мной что-то не так», и когда читаю курсы — но в основном мне мешают выскакивающие окошки: отвлекают, распыляют внимание, наталкивают на ложный путь.
Enum — одна из самых популярных фич Rust. Тип enum
может иметь одно из значений в заданном множестве вариантов.
/// Foo имеет значение или 32-битного integer, или символа.
enum Foo {
Int(u32),
Char(char),
}
Значениями типа Foo
могут быть или integer (например, вариант Foo::Int(3)
с полезной нагрузкой 3
), или символы (например, вариант Foo::Char('A')
с полезной нагрузкой 'A'
). struct можно считать AND-комбинациями их полей, а enum
— OR-комбинациями их вариантов.
Этот пост посвящён удивительной оптимизации, выполняемой компилятором Rust с представлением в памяти значений enum
, чтобы они занимали меньше места в памяти (спойлер: это не нишевая оптимизация). В общем случае, уменьшение размера значений может привести к ускорению программ, потому что значения передаются в регистрах CPU и в одну линию кэша CPU умещается больше значений.
Мы делаем корпуса для электроники и эта история про один из наших кейсов — устройство для эпиляции. Когда заказчик выпускал его, он хотел выделиться качеством на фоне китайских аналогов. Электронщики спроектировали плату, мы испытали прототип и выбрали проверенную российскую фабрику. Но на этапе серийного производства возникла проблема: клавиатура начала вздуваться и отклеиваться.
Расскажу, что пошло не так, как мы пытались решить проблему и почему в итоге перенесли производство корпуса в Китай.
Пополнение среди ультрабюджетных девбордов: FPGA - "отладка" за 201 р.
Самая дешёвая "оценочная плата" с ПЛИС Xilinx Spartan-6 на AliExpress обойдётся в ровно 3000р. На Авито и майнерских "Купи-Продайках" - в 10 раз дешевле. С более "жирным камнем". Никакого подвоха, всё честно.
Уже 8 лет я — бэкенд-разработчик. Последние три года работаю в продуктовой компании, где до недавнего времени все ценили мой подход к работе: архитектура, чистый код и продуманная система всегда стояли на первом месте. Если что-то делали, то делали хорошо, чтобы потом не переделывать.
Должен ли программист понимать бизнес‑задачи своего нанимателя или заказчика? Стоит ли браться за любую работу, лишь бы платили? Ждёт ли программиста карьерный рост в ответ на принятие на себя не специфичных для разработки, но нужных бизнесу задач? На примере полностью выдуманной истории я решил поделиться своим опытом с читателями Habr.
Все совпадения с деятельностью тех или иных физических или юридических лиц, именами, датами, местами — полностью случайны.
В итоге за 7 лет я успел открыть и логистическую компанию, где в хороший месяц, 10 логистов приносили 13 млн ₽ прибыли, и транспортную компанию, с парком в 10 фур, которые приносили 1,7 млн ₽ в хороший месяц.
Во многих уголках мира, где искусственный интеллект стал реальностью, существует мнение, что к моменту окончания школы моими детьми мы будем существовать в условиях роскошного, полностью автоматизированного космического коммунизма. Автоматизация затронет не только отдельные задачи, но и целые профессии – как существующие, так и те, о которых мы только можем помыслить. «Целые дата-центры, заполненные нобелевскими лауреатами» – так выразился Дарио Амодей, один из основателей Anthropic.
Ребята зарелизили новую крупную фичу, и, как по мне, это самая крупная механика с момента выхода dev containers, так как это показывает, насколько всё-таки AI всё глубже интегрируется в разработку.
Docker Model Runner - фактически инструментарий для запуска моделей локально, и это буквально полный конкурент для Ollama, но, будем объективны, пока что ещё очень сырой.
«Вспоминаю, как в 7-м классе ничего не понимал, когда мы начинали разбирать тригонометрию. С учителем мы не смогли найти общий язык, поэтому к 8–9-му классу я был уверен, что никогда не буду заниматься математикой, а уж тем более сидеть по несколько часов в день, утыкаясь в учебники Беклемишева или Кожевникова и параллельно просматривая лекции Физтеха…»
Всем привет! Идею этой статьи я вынашивал довольно долго, пока не набрался опыта в том, что сейчас стало моей каждодневной практикой. Надеюсь, мой опыт поможет кому-то из вас комфортнее и эффективнее подойти к изучению математики (а может, и других наук). Предлагаю познакомиться:
Меня зовут Ренат, мне 23 года, я родился в Москве, окончил обычную школу и вплоть до 19 лет не понимал, чем хочу заниматься — что называется «что меня драйвит». Сейчас живу на Кипре, работаю тут аналитиком, продолжаю параллельно учиться в России и скоро заканчиваю там университет.
За последние несколько лет я успел поработать аналитиком в Ozon, затем продуктовым аналитиком в Тинькофф (ныне Т-банк), перешёл в лондонский стартап, а сейчас тружусь над проектами в сфере Trust & Safety. И вот в один прекрасный день я решился «серьёзно ботать математику»: уже несколько месяцев уделяю 10–15 часов в неделю задачам, лекциям и подготовке к поступлению в магистратуру (решая вступительные от МГУ, ВШЭ, МФТИ). Именно об этом пути — как я ищу мотивацию, борюсь с прокрастинацией и стараюсь не выгореть — я и хочу вам рассказать.
Конкурентность (concurrency) в программировании позволяет разным частям программы работать независимо, эффективно переключаясь между задачами. Хотя конкурентность сама по себе не всегда означает повышение производительности, она помогает лучше организовать выполнение задач и использовать системные ресурсы более эффективно. Конкурентность особенно важна для современных приложений, таких как сетевые сервисы или программы, работающие с множеством пользовательских запросов, где требуется управление большим количеством задач в условиях ограниченных ресурсов.
Go предлагает удобный и эффективный подход к реализации конкурентности, который отличается от подходов, используемых в других языках программирования. В основе этого подхода лежат горутины — легковесные потоки выполнения, которые позволяют запускать задачи с минимальными затратами ресурсов, — и каналы , обеспечивающие безопасный обмен данными между горутинами.
В этом материале мы рассмотрим, как Go помогает решать задачи конкурентности, объясним разницу между конкурентностью и параллелизмом (конкурентность — это способность структурировать задачи для их выполнения в переключаемом режиме, а параллелизм — это одновременное выполнение задач на нескольких процессорах), а также покажем, почему использование горутин и каналов делает приложения более производительными и масштабируемыми за счет эффективного управления ресурсами и минимизации блокировок.