Pull to refresh
6
0
Мурад Минтуев @murad1974

Ведущий инженер

Send message

Обзор методов множественного доступа в беспроводной связи. Часть 1. Как разделить спектр: Частотно-временное разделение

Reading time18 min
Views19K

В настоящее время происходит бурное развитие технологий беспроводной связи: новые поколения сотовой связи (5G, 6G), интернет вещей, спутниковая связь и т.д. Одна из ключевых задач, стоящих перед разработчиками новых систем связи – обслуживание одной радиосистемой как можно большего числа абонентов, т.е. задача эффективной организации множественного доступа. Традиционные технологии временного (TDMA), частотного (FDMA) или кодового (CDMA) разделения пользователей уже не способны удовлетворить возрастающие потребности современного мира, поэтому перед разработчиками стоит острая необходимость в разработке новых, более эффективных и ёмких методов множественного доступа к радиоэфиру. Этой статьёй запускается целая серия, поэтому следите за обновлениями нашего блога. В этой серии статей я попытаюсь дать подробный обзор методов множественного доступа, как широко используемых на данный момент, так и новых, находящихся на стадии теоретической или практической разработки.

В первой части мы рассмотрим технологии множественного доступа, использующие разделение абонентов по времени, по частоте или комбинированное частотно-временное разделение – начиная от традиционных TDMA и FDMA и заканчивая перспективными модификациями OFDM, а также технологиями SEFDM и OTFS.

Читать далее
Total votes 15: ↑15 and ↓0+15
Comments10

Приложение для iOS и Android на Kotlin + Flutter UI

Reading time5 min
Views39K
image

Вступление


Всем привет. Какое-то время назад, я решил делать свой проект для Android и iOS одновременно. Естественно, встал вопрос о выборе технологий. Пару недель присматривался к популярным стекам и выбрал Kotlin/Native. Поскольку я являюсь Android-разработчиком, то с Kotlin знаком давно, а со Swift особого опыта не было и хотелось получить большую часть кода общего для обеих платформ. Следовательно, сразу встал вопрос, а как писать UI для iOS. Быстрый взгляд на рынок подсказал, что есть Flutter, который позволяет писать UI для двух платформ одновременно. Собственно, так и началась эта история.

В статье описан опыт сборки Flutter в качестве UI и Kotlin для основной логики. Важно: под катом много картинок и инструкция, как собрать проект
Читать дальше →
Total votes 14: ↑14 and ↓0+14
Comments21

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

Reading time4 min
Views15K

Когда появились первые новости о том, что восходящая звезда Реге-Жан Пейдж уходит из сериала «Бриджертоны» после первого же сезона, в первую минуту я был потрясен и огорчен. У меня в голове не укладывалось, как так вышло, что Netflix и герцог Гастингс не сумели прийти хоть к какому-то соглашению. Но потом пришло осознание: да ведь я в течение всей своей карьеры только и смотрю, как талантливые программисты уходят из компаний на более хлебные места после до обидного короткого периода работы. И сам не без греха – не отработав даже двух лет, покинул прекрасную команду ради должности технического директора в компании Ethena.

Если оставить в стороне личный опыт, мне кажется, эта общая закономерность проистекает из проблем с организацией, а не недостатков конкретных людей. При найме сотрудников компании вынуждены соперничать друг с другом за самых способных на открытом рынке. Между тем, внутреннюю модель оплаты труда они умышленно делают непрозрачной и распределяют информацию неравномерно, чтобы как можно меньше повышать ставки нанятым работникам и удерживать нижнюю границу зарплат неизменной.
Читать дальше →
Total votes 16: ↑12 and ↓4+12
Comments19

Построение отказоустойчивой системы Embedded Linux на базе модуля Mars ZX3 фирмы Enclustra

Reading time5 min
Views5.6K
В связи с загруженностью специалистов, несколько лет назад мы вынуждены были отдать одну разработку контрагентам. Разработка велась на модуле Mars ZX3 фирмы Enclustra, в котором используется SOC ARM+FPGA Zynq-7020. Для сборки Linux использовался BSP от Enclustra (bsp-xilinx), который был немного модифицирован.

В процессе тестирования разработанного программного обеспечения, мы сразу же столкнулись с отказами ПО при выключении питания. При анализе, обнаружилось, что команды конфигурирования, отправляемые на устройство по сети, записывались в файлы, которые, при сбое питания, иногда оказывались пустыми или отсутствовали совсем. Это вынудило нас пересмотреть идеологию построения переданной нам сборки Linux. Сам процесс построения системы хорошо описан на сайте изготовителя модуля, поэтому не буду на нем останавливаться. Опишу только то, что позволило решить стоящую перед нами задачу повышения надежности и предотвращения отказов.
Читать дальше →
Total votes 6: ↑4 and ↓2+6
Comments5

Трансляция кода с C# на C++: работа портера

Reading time31 min
Views12K

Привет, Хабр. Некоторое время назад я рассказывал о том, как нам удалось наладить ежемесячный выпуск релизов для платформы C++ (Windows и Linux) продуктов, исходный код которых получается автоматической трансляцией кода оригинальных продуктов, написанных на C#. Также я писал о том, как мы заставили такой транспилированный код выполняться в рамках нативного C++ без сборки мусора.

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

Читать далее
Total votes 11: ↑11 and ↓0+11
Comments21

std::atomic. Модель памяти C++ в примерах

Reading time11 min
Views118K

Для написания эффективных и корректных многопоточных приложений очень важно знать какие существуют механизмы синхронизации памяти между потоками исполнения, какие гарантии предоставляют элементы многопоточного программирования, такие как мьютекс, join потока и другие. Особенно это касается модели памяти C++, которая была создана сложной таковой, чтобы обеспечивать оптимальный многопоточный код под множество архитектур процессоров. Кстати, язык программирования Rust, будучи построенным на LLVM, использует модель памяти такую же, как в C++. Поэтому материал в этой статье будет полезен программистам на обоих языках. Но все примеры будут на языке C++. Я буду рассказывать про std::atomic, std::memory_order и на каких трех слонах стоят атомики.

Читать далее
Total votes 52: ↑52 and ↓0+52
Comments39

Как превратить скрипт на Python в «настоящую» программу при помощи Docker

Reading time4 min
Views67K
Никого не интересует, умеете ли вы разворачивать связанный список — всем нужно, чтобы можно было легко запускать ваши программы на их машине. Это становится возможным благодаря Docker.


Для кого предназначена эта статья?


Вам когда-нибудь передавали код или программу, дерево зависимостей которой напоминает запутанную монтажную плату?


Как выглядит управление зависимостями

Без проблем, я уверен, что разработчик любезно предоставил вам скрипт установки, чтобы всё работало. Итак, вы запускаете его скрипт, и сразу же видите в оболочке кучу сообщений логов ошибок. «У меня на машине всё работало», — обычно так отвечает разработчик, когда вы обращаетесь к нему за помощью.

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

В частности, мы рассмотрим скрипты, которые должны работать как фоновый процесс.
Читать дальше →
Total votes 37: ↑27 and ↓10+27
Comments40

Простой Telegram-бот для получения информации через MQTT

Reading time3 min
Views14K

Этот бот был разработан для просмотра информации, находящейся на mqtt сервере внутри локальной сети. Он может работать на одном компьютере с mqtt сервером (в том числе на Raspberry PI или подобном) или отдельно. Задача удалённого управления не ставилась, только предоставление доступа к данным.

Читать далее
Total votes 8: ↑6 and ↓2+4
Comments8

Кунг-фу стиля Linux: великая сила make

Reading time8 min
Views24K
Со временем Linux (точнее — операционная система, которую обычно называют «Linux», представляющая собой ядро Linux и GNU-инструменты) стала гораздо сложнее, чем Unix — ОС, стоящая у истоков Linux. Это, конечно, неизбежно. Но это означает, что тем, кто пользуется Linux уже давно, нужно было постепенно расширять свои знания и навыки, осваивая новые возможности. А вот на тех, кто начинает работу в Linux в наши дни, сваливается необходимость освоить систему, так сказать, за один присест. Эту ситуацию хорошо иллюстрирует пример того, как в Linux обычно осуществляется сборка программ. Практически во всех проектах используется make — утилита, которая, запуская процессы компиляции кода, пытается делать только то, что нужно. Это было особенно важно в те времена, когда компьютеру с процессором, работающим на частоте в 100 МГц, и с медленным жёстким диском, нужно было потратить целый день на то, чтобы собрать какой-нибудь серьёзный проект. Программа make, судя по всему, устроена очень просто. Но сегодня у того, кто почитает типичный файл Makefile, может закружиться голова. А во многих проектах используются дополнительные абстракции, которые ещё сильнее всё запутывают.



В этом материале я хочу продемонстрировать вам то, насколько простым может быть файл Makefile. Если вы способны создать простой Makefile, это значит, что вы сможете найти гораздо больше способов применения утилиты make, чем может показаться на первый взгляд. Примеры, которые я буду тут показывать, основаны на языке C, но дело тут не в самом языке, а в его распространённости и широкой известности. С помощью make можно, средствами командной строки Linux, собрать практически всё что угодно.
Читать дальше →
Total votes 37: ↑28 and ↓9+32
Comments20

Памятка пользователям ssh

Reading time13 min
Views1.5M
abstract: В статье описаны продвинутые функций OpenSSH, которые позволяют сильно упростить жизнь системным администраторам и программистам, которые не боятся шелла. В отличие от большинства руководств, которые кроме ключей и -L/D/R опций ничего не описывают, я попытался собрать все интересные фичи и удобства, которые с собой несёт ssh.

Предупреждение: пост очень объёмный, но для удобства использования я решил не резать его на части.

Оглавление:
  • управление ключами
  • копирование файлов через ssh
  • Проброс потоков ввода/вывода
  • Монтирование удалённой FS через ssh
  • Удалённое исполнение кода
  • Алиасы и опции для подключений в .ssh/config
  • Опции по-умолчанию
  • Проброс X-сервера
  • ssh в качестве socks-proxy
  • Проброс портов — прямой и обратный
  • Реверс-сокс-прокси
  • туннелирование L2/L3 трафика
  • Проброс агента авторизации
  • Туннелирование ssh через ssh сквозь недоверенный сервер (с большой вероятностью вы этого не знаете)
Читать дальше →
Total votes 360: ↑352 and ↓8+344
Comments148

Введение в ELF-файлы в Linux: понимание и анализ

Reading time11 min
Views99K
Есть в мире вещи, которые мы принимаем как нечто само собой разумеющееся, хотя они являются истинными шедеврами. Одними из таких вещей являются утилиты Linux, такие, как ls и ps. Хотя они обычно воспринимаются как простые, это оказывается далеко не так, если мы заглянем внутрь. И таким же оказывается ELF, Executable and Linkable Format. Формат файлов, который используется повсеместно, но мало кто его понимает. Это краткое руководство поможет вам достичь понимания.



Прочтя это руководство, вы изучите:

  • Зачем нужен формат ELF и для каких типов файлов он используется
  • Структуру файла ELF и детали его формата
  • Как читать и анализировать бинарное содержимое файла ELF
  • Какие инструменты используются для анализа бинарных файлов
Читать дальше →
Total votes 34: ↑30 and ↓4+33
Comments15

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity