Обновить

Все потоки

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

Сам себе VoLTE. Запускаем сотовую сеть 4G LTE с поддержкой звонков и SMS

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

Приветствую всех!

Два года назад я уже рассказывал о том, как запустить у себя дома базовую станцию 4G LTE. Тем не менее, в той сети работал только мобильный интернет, тогда как при попытке позвонить или отправить SMS связь немедленно обрывалась.

Самое время восполнить это упущение. Сегодня мы поднимем сеть, в которой будут работать все эти функции. Заодно разберёмся, как работают звонки в LTE-сетях, как запустить такую сеть при помощи SDR и как заставить это всё работать. Как водится, будет много интересного.

Open5GS

Новости

Структуры данных на практике. Глава 1: Разрыв в производительности

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

Часть I: Основы

«В теории теория и практика одинаковы. На практике это не так». — авторство приписывается разными специалистам по computer science

Загадка

Два часа утра. Я смотрю на совершенно нелогичные данные профилирования.

В процессе работы над загрузчиком для SoC RISC-V у нас возникла проблема с производительностью. Загрузчик должен был искать конфигурации устройств в таблице: примерно пятьсот элементов, каждый с 32-битным ID устройства и указателем на данные конфигурации. Всё просто.

Мой коллега реализовал эту систему с помощью хэш-таблицы. «Поиск за O(1), — сказал он уверенно, — лучше уже некуда».

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

Я попробовал использовать очевидную оптимизацию: заменить хэш-таблицу двоичным поиском по отсортированному массиву. Двоичный поиск занимает O(log n), что теоретически хуже, чем O(1). Так написано в учебниках. Мой преподаватель алгоритмов был бы разочарован.

Но в результате загрузчик оказался на 40% быстрее.

Как O(log n) смогло победить O(1)? Что происходит?

Читать далее

Магнитные монополи: что это, существуют ли они, и где их искать?

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

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

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

Читать далее

Электровакуумный геттер, газовыделение, газопоглощение в ЭВП

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

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

Читать далее

Фитнес в VR? Добавляем свою музыку в BeatSaber

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

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

Игра Beat Saber — это впечатляющий источник домашней физической нагрузки под музыку. В этой статье разберем, как играть на треках из пользовательской библиотеки, и попытаемся создать свою карту c любимой музыкой. Спойлер: инструменты не так страшны.

Отработать салатики

Как я написал bash-скрипт и получил оффер

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

Если что, это не кликбейт. История довольно проста: в один из рабочих дней (работаю экспертом по компьютерной экспертизе) мне "на стол" попал сервер на ALT. Всё стандартно:

1) делаю чек железа, дабы исключить модули аппаратного шифрования / аппаратные токены и т.д.

2) делаю диагностику всей системы на момент первого запуска, для внесения в отчёт. Данная диагностика должна включать в себя первичную информацию о: диске; памяти; сети; базовых службах (ssh, cron и тд.) и о системе в целом.

Что было дальше

Как я работал и «зарабатывал» на фрилансе (fl.ru)

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

В этом году будет 9 лет, как я начал «работать» (в кавычках, потому, что назвать это работой в полном смысле слова как-то язык не поворачивается) фрилансером в специализации «программирование». В связи с этим, хочу поделиться своим опытом с вами и рассказать как все начиналось, почему я там, сколько зарабатывал, с какими проблемами сталкивался и как их решал. 

Читать далее

Какой Может быть UART-CLI в Микроконтроллере (или Курс Молодого Бойца)

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

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

Прежде всего CLI — это первичный лог загрузки прошивки. Инициализация микроконтроллера — это многостадийный процесс, в котором многое может пойти не по плану. Поэтому первое, что вы должны увидеть в консоли — это зеленый лог загрузки программы.

Читать далее

Гортанный праиндоевропейский, или как звучали ларингалы

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

Ларингалы – самые загадочные звуки праиндоевропейского языка, не сохранившиеся ни в одном из живых индоевропейских языков. Звуки-призраки, которых никто из ныне живущих не слышал. И звуки-атланты, на которых держатся все реконструкции праиндоевропейского. Почему учёные так уверены в их существовании? Можем ли мы хотя бы представить себе их звучание? И как их можно записать, кроме нижних индексов? Обо всём по порядку – в этой особой статье по заявкам читателей.

Читать далее

Acemagic M1A Pro+: новый мини-ПК с Ryzen AI Max+ 395. Что за зверь?

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

Сегодня мини-ПК уже не воспринимаются как слабые офисные системы. Нет, конечно, есть и такие, но вообще спектр миниатюрных компьютеров очень широк. Среди них есть модели, которые тянут игры, монтаж видео и прочие тяжелые задачи. Один из примеров — новая модель, Acemagic M1A Pro. У него процессор AMD RyzenTM AI Max+ 395, 128 ГБ оперативной памяти LPDDR5X, графика уровня RTX 4070 Mobile и аккуратный кубический корпус.

Решил о нем написать, поскольку я сам уже больше года пользуюсь предыдущей моделью, Acemagic Tank 03. Его я приобрел по случаю, просто потому, что понравился форм-фактор. Ну и, конечно, характеристики тоже вполне себе. Полноценный десктоп я тогда брать не хотел, а мини-ПК оказался идеальным компромиссом. Можно даже сказать, я стал поклонником этого модельного ряда. В общем, в статье расскажу, о своем Tank 03. Оценим, что умеет M1A Pro+ и посмотрим, чем они отличаются. Поехали!

Читать далее

Сколько нужно парадигм, чтобы вкрутить лампочку?

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

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

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

Я список парадигм прочёл до середины

Как взломать систему банка с помощью газового баллончика и выключенного принтера

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

802.1x и двери по картам — это должно быть надёжно. Пентестер зашёл в банк ночью, «обманул» ИК-датчик баллончиком, стал принтером в сети и нашёл заполненные чеки. Это не теория. Это отчёт по реальному тесту на проникновение.

Читать далее

Как обрабатывать 5 млн изменяющихся форм в минуту с SLI 99.99%

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

Всем привет! Меня зовут Кирилл Грищук, я Tech Lead в команде Инфомодели в Авито. Мы занимаемся тем, что обрабатываем формы от пользователей: от 5 млн до 15 млн форм в минуту, а это более 150 тысяч в секунду. 

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

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

Читать далее

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

Зима — время беспрецедентно увеличить мохнатость: электрофлокирование

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

Пигмалион

Человек — существо во многом беззащитное и открытое всем неблагоприятным факторам окружающей среды.  

И даже то малое, что было ему бережно дано самой природой — надёжный и тёплый шерстяной покров — было безжалостно уничтожено беспощадной эволюцией. :-D 

Впереди зима, и, за неимением самого главного, людям приходится ютиться в каменных пещерах, называемых домами, и одеваться в такую несвойственную им одежду… 

Но что можно поделать, чтобы повернуть историю вспять и покрыть мехом, хотя бы то некоторое, с чем нам приходится иметь дело ежедневно и вновь ощутить, как и в прежние времена, тёплое прикосновение ласковой шерсти, к своей обнажённой коже? 

Выход есть и его возможности, бесспорно, весьма широки: электрофлокирование!

Читать далее

Верстаем сложный прогрессбар в 2026 году

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

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

Современный CSS позволяет собрать сложный, гибкий и красивый круговой прогрессбар буквально на одном div и на одном CSS-свойстве. И всё это — с отличной браузерной поддержкой.

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

Читать далее

Полный путь пакета в Linux: от Ethernet-кадра до Kubernetes CNI

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

Сетевую часть Linux обычно «настраивают», но редко понимают. Добавляют iptables-правило, включают NAT, правят sysctl — и если трафик пошёл, считается, что задача решена. Проблемы начинаются ровно в тот момент, когда он не идёт, а поведение системы перестаёт быть очевидным. В Linux нет магии. Есть IP-пакет, его заголовки и строго определённый путь внутри ядра: маршрутизация, netfilter, conntrack, NAT, TCP/UDP стек. Если не понимать этот путь целиком, firewall выглядит как чёрный ящик, NAT — как случайный набор правил, а Kubernetes CNI — как нечто «особенное», существующее отдельно от обычной сети.

Читать далее

Нас окружают «невозможные» кубики Рубика

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

Подавляющее большинство изображений кубика Рубика — в иллюстрациях, принтах на одежде, мультфильмах, компьютерной графике и особенно в генерациях нейросетей — воспроизводят неправильные кубики. Чаще всего это невозможные в реальности комбинации цветов, реже к некорректным цветовым схемам добавляются нарушения геометрии и структуры кубика. Разгоняем эту тему в статье.

Крутить далее...

Тестирую ChatGPT, Claude, DeepSeek, Grok и ещё 5 нейросетей на реальном запросе: кто поможет активировать Windows?

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

Друзья, всем привет! Сегодня у меня для вас необычный эксперимент - тестирование нейросетей в боевых условиях. Какая нейросеть поможет активировать Windows, а кто откажется сразу?

Читать далее

ChatGPT 5.2 Pro vs Claude Opus 4.5 vs Gemini 3 Pro: битва титанов в программировании

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

Доброго времени суток, «Хабр»!

На дворе 2026 год, когда люди применяют нейросети в разных сферах своей жизни: от помощи в обучении до решения достаточно сложных задач.

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

Сегодня мы сравним ChatGPT 5.2 Pro, Claude Opus 4.5 и Gemini 3 Pro в области программирования. Мне не интересно оценивать лишь написание программ под конкретные задачи, поэтому модели попробуют выявить ошибки в готовых вариантах решений. Принимайте стратегически удобное положение, ну а я приступаю к сравнению.

Читать далее

Если ты делаешь книгу в LaTeX, то ты обязательно должен знать эти фишки. часть 3/4

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

Меня зовут Виталий и я пишу уже который год самую большую книгу по математике для 4 11 классов, а так же автор поста (рекомендую почитать) о ней. Пишу я ее в LaTeX и считаю, что современный учебник не должен быть черно-белым, а так же должен быть удобен для использования и учеником и учителем. Здесь я собрал базовые фишки, которые я использую (что-то чаще, что-то реже). Надеюсь, вы найдете что-нибудь полезное для себя:)

Постараюсь все подробно описать, но не гарантирую идеального кода. Компиляция в основном с помощью pdflatex, но есть места, где требуется lualatex. Для себя я сделал около 35 стилевых файлов для использования в преамбуле, но тут я написал полный код чтобы в каждом случае можно было запустить "из коробки".

Первая часть тут, вторая часть тут

Читать далее