По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Сериализация – это процесс, в котором одна служба берет структуру данных, такую как словарь в Python, упаковывает ее и передает другой службе для чтения. Это максимально простое определение. Представьте, что мне нужно отправить кому-то сообщение. Итак, я записываю текст на уже собранный пазл. Далее я разбираю части пазла, добавляю несколько инструкций о том, как его собрать, и отправляю его. Затем получатель сообщения, получив кусочки головоломки, собирает их вместе. И теперь у него есть мое сообщение. Техническое определение этого понятия немного интереснее. А именно, сериализация – это процесс преобразования объекта данных в поток байтов и сохранения состояния объекта для хранения на диске или передачи по сети. Это сокращает необходимый размер хранилища и упрощает передачу информации по сети. Маршалинг и сериализация – в чем разница? Здесь на ум может прийти понятие маршалинга (Marshalling). Маршалинг – это процесс преобразования представления объекта в памяти в форму, подходящую для передачи. Хотя маршалинг и сериализация в общих чертах похожи, между ними все-таки есть принципиальная разница. Например, при создании программы в Golang для считывания JSON данных в структуру данных Golang вы можете использовать маршалинг для преобразования пары «ключ-значение» JSON в пару «ключ-значение» Golang. Разница в том, что маршалинг используется для преобразования данных. А сериализация, напротив, отправляет или сохраняет данные в потоке байтов и повторно собирает их в исходную форму. Оба процесса вроде бы выполняют процесс сериализации, но с разными намерениями. Вы можете увидеть структуру, которую я создал для взаимодействия с данными Twitter, ниже, как пример процесса маршалинга в действии. В Golang вы можете вставлять подсказки, называемые тегами, легко преобразовывая этот объект в данные JSON с помощью встроенной службы маршалинга Golang. Что такое Endianness? Я также хотел бы немного затронуть тему порядка следования байтов. Endianness – это термин, который используется для описания порядка байтов в памяти. Представьте, что память – это блок, в котором хранятся биты данных. Чтобы сериализация работала, поток байтов должен передавать типы данных независимо от изменения порядка следования байтов из одной системы в другую. Здесь вы можете увидеть большие различия и не очень. Очень важно, чтобы порядок следования байтов из одной системы в другую совпадал или каким-либо образом преобразовывался, поскольку не все системы упорядочивают свои биты одинаково. Little endian (от младшего к старшему) и big endian (от старшего к младшему) Варианты использования сериализации Наш вариант использования в полной мере использует все функции сериализации. Мы планируем получить некоторую информацию от сканируемого оборудования, упаковать эту информацию в поток байтов и отправить ее по сети в другую службу, которая восстановит данные. Процесс обратной сериализации и восстановления данных в исходную форму называется десериализацией. Есть и другие варианты использования сериализации. Например, REST API или протоколы обмена сообщениями, такие как AMQP, могут использовать сериализацию для сжатия и отправки данных. AMQP – это протокол обмена сообщениями, в котором вы отправляете сообщение брокеру AMQP, а служба-получатель «прослушивает» этого брокера в поисках сообщения. Серверные специалисты должны быть хорошо с этим знакомы, так как это часто используется для отправки данных туда и обратно в распределенных системах. Многие языки программирования включают возможность легкого развертывания некоторой сериализации. Так что это языково-независимая тема. Пример сериализации Приведем краткий пример. Код, приведенный ниже, использует библиотеку kombu для отправки сообщений через AMQP. Мы используем ее для отправки сообщений из одного программного пакета в другой по сети. Данный код предназначен для службы, отправляющей сообщение брокеру AMQP: Обратите внимание на метод publish. Мы передаем метод сериализации в качестве аргумента, чтобы библиотека понимала, как сериализовать данные, которые мы передаем. Сообщение с данными преобразуется в поток байтов, который, если на него посмотреть, выглядит просто как длинная строка букв и цифр. И мы отправляем сообщение. Соответствующая служба будет использовать тот же метод сериализации для восстановления данных в их исходное состояние. Это важная функция, поскольку мы создаем набор инструментов, которые должны иметь возможность отправлять сообщения друг другу, чтобы все работало. Форматы данных сериализации В основном я использую JSON для сериализации, когда этого требует задача. Но тем не менее, вы можете использовать и другие варианты. У JSON много издержек, но для меня он идеален, потому что он читабелен. Вы также можете использовать Protobuf, YAML или XML. Это лишь некоторые из возможных. Заключение Сериализация становится необходимостью, когда вы строите свои каналы связи. Полезно знать о таком понятии, чтобы чувствовать себя уверенно при подходе к любому инструменту, который вы используете, с соответствующими базовыми знаниями.
img
Итак, у нас загрузилось ядро операционной системы. Далее отрабатывают системы инициализации операционной системы. Три варианта: SysV, systemd, Upstart. Init в стиле SysV Init в стиле SysV данная процедура инициализации, самая старая она более классический Unix вариант инициализации операционной системы. Для того, чтобы понять, как происходит инициализация необходимо понять, что такое режимы загрузки (они же runlevel), разобраться как между ними переключатся, рассмотреть работу со службами. Обычно есть 7 уровней выполнения по умолчанию: Выключение Однопользовательский режим (чаще всего используется для отладки и настройки операционной системы) DebianUbuntu по умолчанию RedHatSuse по умолчанию текстовый режим. WildCard (программируемый режим, можно сюда поставить любой) RedHatSuse GUI (Graphical User Interface) Перезагрузка. Но существуют операционные системы, где 10 уровней по умолчанию. Конечно речь идет о самых распространенных ядрах и сборках *nix образных операционных системах. Для дальнейших пояснений, как работает инициализация в стиле sysV нам необходим операционная система CentOS 5.4 или ниже, потому что в более новых операционных системах данный процесс давно уже заменен. Отроем файл настроек текстовым редактором vi или любым другим удобным для вас. Мы можем увидеть содержание файла. Те самые уровни о которых шла речь выше. Плюс прописан уровень используемые при загрузке по умолчанию. Строчка id:3:initdefault: Мы данный параметр можем отредактировать и например сказать, чтобы операционная система загружалась по умолчанию в Single Mode например. Если мы посмотрим далее файл, мы можем увидеть настройку, которая описывает действия нажатия клавиш Ctrl+alt-delete. А также наглядно прописано, что запуск определенного уровня - это запуск определённого скрипта. Все скрипты запускаются из папки /etc/rc.d/ Все дальнейшие варианты инициализации растут, вот из этого варианта. И этой процедуры инициализации. Перейдем в директорию, где лежат все скрипты инициализации и выполняются данные скрипты при старте системы. В данной папке куча скриптов, которые запускают определенные службы, например, ssh запускает демона ssh для подключения клиентом по 22 порту. Т.е здесь куча служб и запускаются они этими скриптами. Если мы например хотим остановить какую нибудь службу то набираем ./rsync stop , ну и соответственно ./rsync start для запуска данной службы. Аналогично мы можем управлять через команду service, например: service rsync restart . Поднимемся на уровень выше cd .. Найдем все файлы, которые начинаются с rc. Для этого набираем: ls -l | grep rc. В результате мы увидим несколько скриптов. Посмотрим rc3.d . А для этого перейдем в эту директорию. В ней можно увидеть кучу скриптов. В вариации Ubuntu современной и затем в вариации CentOS 5.4 Те скрипты, которые начинаются с буквы K, эти скрипты при старте убивают сервис, те скрипты, которые имеют первой букву S запускают сервис. Ну и соответственно порядковый номер исполнения скрипта в очереди. Для каждого runlevel свой набор скриптов. Основные команды Init управление инициализацией с помощью нее можно перемещаться между runlevel. Telinit управление процессом init , в старых дистрибутива использовалась именно эта команда. Wall вывод сообщения пользователям системы Halt - выключение компьютера Reboot перезагрузка компьютера Shutdown - запланированное выключение Service service_name start|stop|reload|restart Для того, чтобы перемещаться по уровням загрузки, нам необходимо понять на каком уровне мы находимся сейчас. Набираем runlevel . Соответственно, если мы хотим переключится telinit 1 отрабатывают скипты мы попадаем в однопользовательский режим 1. Для того, чтобы послать сообщение все пользователям на данной машине необходимо набрать с соблюдением регистра wall "Abrakadabra". У всех пользователей появится данное сообщение на экране. Для выключения сейчас компьютера можно использовать shutdown h now. Init в стиле Systemd Init в стиле Systemd более современная система инициализации операционной системы Linux. Необходимым элементом работы системы systemd , являются Unit. Unit- это модуль которыми оперирует systemd: .service службы .mount точки монтирования .device устройства .socket сокеты Если при работе в консоли мы не указывает расширение юнита, то в принципе system может догадаться в каком случае, что используется. В операционной системе существуют 2 папки в которых хранятся Unit: /usr/lib/systemd директория с Units по умолчанию, в которой создаются units при установке какого либо программного обеспечения. /etc/systemd директория с управляемыми Units. Тут лежат те Unit которыми может управлять админ, добавлять , редактировать. Посмотрим, что находится в данных директориях переходим в /usr/lib/system Нам интересны 2 директории system и user. Содержимое папки system выглядит вот так. В данной директории лежат все необходимые Units для системы в директории user для пользователя. Картинка будет примерно аналогичная. Директория /etc/systemd. Тут точно также есть две папки system и user, а также конфигурационные фалы. Данные конфигурационные файлы и отвечают за настройку systemd. Это те файлы которые пришли на замену /etc/inittab, предыдущей версии инициализации операционной системы. Файлы юнитов в директориях system и user мы можем редактировать для каких-то своих целей и даже писать targets. Далее мы можем посмотреть запущенные Units. Для этого мы можем выполнить systemctl команду, она отвечает за все действия с systemd. Для примера команда systemctl list-units нам выведет все запущенные Units, сокеты ,устройства ,точки монтирования. Можно посмотреть юниты, которые не стартанули systemd failed. А также мы можем управлять юнитами systemctl status|start|stop|restart crond. Так же Systemd работает с Target (целями). Есть target которые работают так же как runlevel в классической процедуре инициализации, они не пронумерованы в отличии от runlevel у них есть конкретные имена. В табличке можно посмотреть какие target соотносятся с какими runlevel. Их этих target может быть несколько, потому что target бывают не только загрузочные. Данная система использования target обратно совместимая с системой инициализации. Для переключения мы можем использовать команду telinit. Сами по себе target есть некая группировка юнитов, последовательность вызова юнитов. Это может быть target последовательного вызова нескольких служб и ниже стоящий target. Текущий уровень мы можем посмотреть командой runlevel. По умолчанию это будет 3. Далее мы можем написать systemctl list-units --type=target И можно увидеть, что находимся на 3-м уровне также т.к target соответствует. Так же мы можем переключатся между runlevel командой telinit. Например, для перехода в однопользовательский режим telinit 1. А так же мы можем использовать через синтаксис systemctl isolate reboot.target. Для того чтобы поставить какой-то загрузочный target по умолчанию, необходимо отредактировать загрузчик, вставить параметры ядра, которые будут запускаться. Или сделать проще командой systemctl set-default f multi-user.target (использование например 3 runlevel по умолчанию). Одной из особенностей system является интересная система журналирования journald. Демон журналов. Эта система уникальна тем, что собирает информацию из разных источников событий и привязывает их к конкретным юнитам и сервисам. Благодаря этому мы можем всю диагностическую информацию просматривать в одном месте. Соответственно находить неисправности и их устранять. Работает следующим образом: Journalctl f - показывает события по мере их возникновения. Journalctl n 10 вывод последних 10 событий Инициализация Init в стиле Инициализация Init в стиле upstart это система инициализации, в том стиле которая задумывалась для Ubuntu, и заменила процедуру инициализации, которая пришла из Unix стандартную init процедуру. Процедура инициализации upstart контролирует инициализацию демонов и служб в течении загрузки системы и их остановку если у нас система выключается или нужно переключится в другой режим. Основное отличие от классической процедуры инициализации в том, что задачи и службы останавливаются по событиям и сами события могут генерироваться задачами и службами, могут приняты быть от любого процесса системы. Могут быть службы перезапущены в автоматическом режиме если они вдруг были завершены в аварийном режиме. Еще одно отличие в том, что у данного режима инициализации есть задачи (tasks). Основными понятиями являются службы и задачи. Основное отличие службы от задачи в том, что служба перезапускается если была аварийно завершена, а задача нет. Процесс инициализации системы по upstart берет конфигурацию из файлов каталога /etc/init каталог файлов-заданий (jobs). Каждый файл отвечает за запуск каждого задания или службы и должен заканчиваться с расширением .conf . Уровни инициализации остались те же самые. Определение и переключение между уровнями выполняются теми же командами, описанными выше. Изменился файл, в котором мы описываем runlevel запуска по умолчанию. И для управления upstart используется утилита initctl. Как мы видим в каталоге /etc/init находятся конфигурационные файлы Jobs. Каждый отвечает за запуск отдельной службы. Смотрим файл конфигурации простейшего файрвола операционной системы cat ufw.conf Как мы видим ufw стартует при условии, описанном start on, выключается на определенных runlevel. Файл конфигурации с runlevel по умолчанию находится в файле cat /etc/init/rc-sysinit.conf Управляются службы простыми командами status ufw start ufw stop ufw. В данной статье мы рассмотрели различные вариации инициализации. Думаю, информация будет очень полезной.
img
Во всем мире умные города являются неотъемлемой частью устойчивого развитие общества. Основные концепции системы "Умный город": Контроль дорожного движения; Управление муниципальным транспортом; Управление общественным транспортом; Управление парковками. Умные города гарантируют, что их граждане доберутся от точки "А" до точки "Б" максимально безопасно и эффективно. Для достижения этой цели муниципалитеты обращаются к разработке IoT (Internet of Things) и внедрению интеллектуальных транспортных решений. Интеллектуальные дорожные решения используют различные типы датчиков, а также извлекают данные GPS из смартфонов водителей для определения количества, местоположения и скорости транспортных средств. В то же время интеллектуальные светофоры, подключенные к облачной платформе управления, позволяют отслеживать время работы "зеленого света" и автоматически изменять огни в зависимости от текущей дорожной ситуации для предотвращения заторов на дороге. Примеры концепций системы "Умного города": Смарт-паркинг С помощью GPS-данных система автоматически определяет, заняты ли места для парковки или доступны, и создают карту парковки в режиме реального времени. Когда ближайшее парковочное место становится бесплатным, водители получают уведомление и используют карту на своем телефоне, чтобы найти место для парковки быстрее и проще, а не заниматься поиском парковочного места вслепую. Служебные программы Умные города позволяют гражданам экономить деньги, предоставляя им больше контроля над своими домашними коммунальными услугами. IoT обеспечивает различные подходы к использованию интеллектуальных утилит: Смарт-счетчики и выставление счетов; Выявление моделей потребления; Удаленный мониторинг. Искусственный интеллект Искусственный интеллект становится ведущим драйвером в цифровой трансформации экономики и социальной жизни. Социальная организация производства и предоставления услуг меняются. Рутинные операции выполняются роботами. Решения принимаются на основе искусственного интеллекта. С помощью него можно предотвратить управленческие ошибки и облегчить принятие решений во всех сферах городского хозяйства и управления. Преобладание цифровых документов над бумажными Реализация этой концепции позволяет городу в полной мере использовать все преимущества цифровых технологий: Оказание государственных услуг более прозрачное; Оптимизация административных процедур; Наиболее эффективное использование ресурсов. Промышленность Реализация проектов по комплексному онлайн-мониторингу промышленных объектов. Благодаря данной системе, можно контролировать состояние системы, управлять ей, а также получать статистику. Транспорт Данные от датчиков IoT могут помочь выявить закономерности того, как граждане используют транспорт. Чтобы провести более сложный анализ, интеллектуальные решения для общественного транспорта могут объединить несколько источников, таких как продажа билетов и информация о движении. Благодаря реализации данного направления можно осуществлять мониторинг транспортной инфраструктуры и мониторинг транспортных средств. Современные решения способны существенно повысить эффективность грузоперевозок, а также оптимизировать работу железнодорожных путей и дорожного покрытия, следя за температурой и влажностью. Известные уязвимости представленных систем В настоящее время происходит рост технологических возможностей, а также рост разнообразия различных электронных устройств и оборудования, используемых в автоматизированных системах управления, всё это ведет к повышению количества уязвимостей к данным системам. В добавок ко всему, процесс введения в эксплуатацию различных решений не дает стопроцентной гарантии того, что не будут допущены различные ошибки в глобальном проектировании. Это создает вероятность появления дополнительных архитектурных уязвимостей. Злоумышленники могут воспользоваться известными проблемами с безопасностью компонентов жизнеобеспечения в системах автоматизации и предпринять попытку реализации атаки. Такие действия злоумышленников могут прервать нормальную работу такого масштабного объекта, как, например, аэропорт, повлечь за собой вывод из нормальной работы системы жизнеобеспечения, блокируя систему безопасности. И, будучи незамеченными вовремя, способны привести к непоправимым последствиям. Большинство систем не защищено от попыток внедрения. Обычно все решения в области защиты систем реализуются на уровне межсетевого экрана. Но в случае с попытками атаки на столь критичные системы этого оказывается недостаточно. Роль информационной безопасности для экосистем Информационная безопасность связана с внедрением защитных мер от реализации угрозы несанкционированного доступа, что является частью управления информационными рисками и включает предотвращение или уменьшение вероятности несанкционированного доступа. Основной задачей информационной безопасности является защита конфиденциальности, целостности и доступности информации, поддержание продуктивности организации часто является важным фактором. Это привело к тому, что отрасль информационной безопасности предложила рекомендации, политики информационной безопасности и отраслевые стандарты в отношении паролей, антивирусного программного обеспечения, брандмауэров, программного обеспечения для шифрования, юридической ответственности и обеспечения безопасности, чтобы поделиться передовым опытом. Информационная безопасность достигается через структурированный процесс управления рисками, который: Определяет информацию, связанные активы и угрозы, уязвимости и последствия несанкционированного доступа; Оценивает риски; Принимает решения о том, как решать или рассматривать риски, т. е. избегать, смягчать, делиться или принимать; Отслеживает действия и вносит коррективы для решения любых новых проблем, изменений или улучшений. Типы протоколов для системы управления "Умным городом" Протоколы и стандарты связи при организации Интернета вещей можно в широком смысле разделить на две отдельные категории. Сетевые Протоколы Интернета Вещей Сетевые протоколы Интернета вещей используются для подключения устройств по сети. Это набор коммуникационных протоколов, обычно используемых через Интернет. При использовании сетевых протоколов Интернета вещей допускается сквозная передача данных в пределах сети. Рассмотрим различные сетевые протоколы: NBIoT (Narrowband Internet of Things) Узкополосный IoT или NB-IoT это стандарт беспроводной связи для Интернета вещей (IoT). NB-IoT относится к категории сетевых стандартов и протоколов маломощных глобальных сетей (LPWAN low power wide area network), позволяющих подключать устройства, которым требуются небольшие объемы данных, низкая пропускная способность и длительное время автономной работы. LoRaWan (Long Range Wide Area Network) глобальная сеть дальнего радиуса действия Это протокол для работы устройств дальнего действия с низким энергопотреблением, который обеспечивает обнаружение сигнала ниже уровня шума. LoRaWan подключает аккумуляторные устройства по беспроводной сети к интернету, как в частных, так и в глобальных сетях. Этот коммуникационный протокол в основном используется умными городами, где есть миллионы устройств, которые функционируют с малой вычислительной мощностью. Интеллектуальное уличное освещение это практический пример использования протокола LoRaWan IoT. Уличные фонари могут быть подключены к шлюзу LoRa с помощью этого протокола. Шлюз, в свою очередь, подключается к облачному приложению, которое автоматически управляет интенсивностью лампочек на основе окружающего освещения, что помогает снизить потребление энергии в дневное время. Bluetooth Bluetooth один из наиболее широко используемых протоколов для связи на короткие расстояния. Это стандартный протокол IoT для беспроводной передачи данных. Этот протокол связи является безопасным и идеально подходит для передачи данных на короткие расстояния, малой мощности, низкой стоимости и беспроводной связи между электронными устройствами. BLE (Bluetooth Low Energy) это низкоэнергетическая версия протокола Bluetooth, которая снижает энергопотребление и играет важную роль в подключении устройств Интернета вещей. ZigBee ZigBee это протокол Интернета вещей, что позволяет смарт-объекты, чтобы работать вместе. Он широко используется в домашней автоматизации. Более известный для промышленных установок, ZigBee используется с приложениями, которые поддерживают низкоскоростную передачу данных на короткие расстояния. Уличное освещение и электрические счетчики в городских районах, которые обеспечивают низкое энергопотребление, используют коммуникационный протокол ZigBee. Он также используется с системами безопасности и в умных домах и городах. Протоколы передачи данных Интернета Вещей Протоколы передачи данных IoT используются для подключения маломощных устройств Интернета вещей. Эти протоколы обеспечивают связь точка-точка с аппаратным обеспечением на стороне пользователя без какого-либо подключения к интернету. Подключение в протоколах передачи данных IoT осуществляется через проводную или сотовую сеть. К протоколам передачи данных Интернета вещей относятся: MQTT (Message Queuing Telemetry Transport) телеметрический транспорт очереди сообщений Один из наиболее предпочтительных протоколов для устройств Интернета вещей, MQTT собирает данные с различных электронных устройств и поддерживает удаленный мониторинг устройств. Это протокол подписки/публикации, который работает по протоколу TCP, что означает, что он поддерживает событийный обмен сообщениями через беспроводные сети. CoAP (Constrained Application Protocol) CoAP это протокол интернет-утилиты для функционально ограниченных гаджетов. Используя этот протокол, клиент может отправить запрос на сервер, а сервер может отправить ответ обратно клиенту по протоколу HTTP. Для облегченной реализации он использует протокол UDP (User Datagram Protocol) и сокращает использование пространства. AMQP (Advanced Message Queuing Protocol) расширенный протокол очереди сообщений AMQP это протокол уровня программного обеспечения для ориентированной на сообщения среды промежуточного программного обеспечения, обеспечивающий маршрутизацию и постановку в очередь. Он используется для надежного соединения точка-точка и поддерживает безопасный обмен данными между подключенными устройствами и облаком. AMQP состоит из трех отдельных компонентов, а именно: обмена, очереди сообщений и привязки. Все эти три компонента обеспечивают безопасный и успешный обмен сообщениями и их хранение. Это также помогает установить связь одного сообщения с другим. Протокол AMQP в основном используется в банковской отрасли. Всякий раз, когда сообщение отправляется сервером, протокол отслеживает сообщение до тех пор, пока каждое сообщение не будет доставлено предполагаемым пользователям/адресатам без сбоев. M2M (Machine-to-Machine) протокол связи между машинами Это открытый отраслевой протокол, созданный для обеспечения удаленного управления приложениями устройств Интернета вещей. Коммуникационные протоколы М2М являются экономически эффективными и используют общедоступные сети. Он создает среду, в которой две машины взаимодействуют и обмениваются данными. Этот протокол поддерживает самоконтроль машин и позволяет системам адаптироваться к изменяющимся условиям окружающей среды. Коммуникационные протоколы M2M используются для интеллектуальных домов, автоматизированной аутентификации транспортных средств, торговых автоматов и банкоматов. XMPP (eXtensible Messaging and Presence Protocol) расширяемый протокол обмена сообщениями и информацией о присутствии XMPP имеет уникальный дизайн. Он использует механизм для обмена сообщениями в режиме реального времени. XMPP является гибким и может легко интегрироваться с изменениями. XMPP работает как индикатор присутствия, показывающий состояние доступности серверов или устройств, передающих или принимающих сообщения. Помимо приложений для обмена мгновенными сообщениями, таких как Google Talk и WhatsApp, XMPP также используется в онлайн-играх, новостных сайтах и голосовом стандарте (VoIP). Протоколы Интернета вещей предлагают защищенную среду для обмена данными. Очень важно изучить потенциал таких протоколов и стандартов, так как они создают безопасную среду. Используя эти протоколы, локальные шлюзы и другие подключенные устройства могут взаимодействовать и обмениваться данными с облаком.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59