
В этой заметке мы продолжим создавать мультиплеерный пинг понг на rust.
Программист
Данный код не является оптимизированным или идеализированным, он очень простой и будет понятен новичкам(кем я и являюсь), потому надеюсь на понимание). Ну и еще это приложение было создано скорей смеха ради.
Rust и gRPC. Все это вкупе с простым игровым движком. Небольшой туториал по разработке мультиплеерной игры.
И еще раз о передатчиках и приемниках 433 МГц. Попробуем как можно проще и дешевле подключить их к ATMEGA8, добиться дальности более 2 км и сделать крипто-защищенную беспроводную сеть-шлюз к 1-Wire сетям сенсоров DS18S20. Для этого привлечем оверсэмплинг, ортогональные сигналы и помощь MATLAB Simulink.
Появилась цель предоставить пользователям изолированную среду для выполнения задач в сегменте локальной сети. Поднимать гипервизор для виртуализации машин и выделять каждому пользователю ВМ — это слишком расточительный подход, требующий определенных ресурсов. С увеличением числа виртуальных машин, разница в расходах ресурсов становится очевидной.
Контейнеризация — эффективный способ виртуализации на уровне ядра ОС. В системах контейнеризации гипервизора нет, но есть Container Engine, который создаёт контейнеры и управляет ими. В качестве движка контейнеризации мы будем использовать Podman.
Почему не Docker?
Основная причина — это запуск системы инициализации systemd в контейнерах, чтобы пользователи могли подключаться по SSH и устанавливать необходимые службы обычным способом, как в случае с виртуальными машинами. Podman знает, что надо делать, чтобы systemd нормально работал в контейнере. Также поговорим о том, как пробросить контейнер в локальную сеть.
Большинство традиционных сетей контейнеров обрабатываются мостами bridge, преобразованием сетевых адресов (NAT) или путем привязки к сети хоста. Если вы хотите, чтобы ваши контейнеры выглядели как физические хосты в вашей сети и каждый с уникальным MAC-адресом, то самый простой способ — это использовать плагины macvlan и dhcp, которые поставляются с пакетом containernetworking-plugins.
Собственно идея написать эту статью как памятку себе любимому, ну может ещё кому пригодится пришла в голову год назад, после того как убил немало времени на это нехитрое занятие. Недавно оказалось, что проблема актуальна по сей день. Почему-то ни один из найденных вариантов сам по себе не помогает и данная статься является результатом обработки всей найденной информации. При решении вопроса, больше всего бесило - возьмите мой проект и будет вам счастье, а проекта там уже и нет... Такой подход я плохо переношу, поэтому и сам делать так не буду.
Всё ниже описанное является следствием моего личного опыта, и ни на какую истинность не претендует. Все советы рассчитаны не людей только решившихся на переход с AVR на STM32
Вопросы типа почему Linux, VSCode и прочее, думаю, освещения не требуют. Считаю, что все заинтересованные в вопросе, на эти мелочи давно нашли СВОЙ ответ. Однако отмечу, в Винде всё это тоже работает, проверено, и проекты спокойно переживают миграцию между машинами.
Пожалуй начнём!
Пишем бота в гугл скриптах на JavaScript. Этот пост - проба пера и статья для начинающих свой путь в гугл скриптах или телеграм ботах. Есть много идей для будущих постов и интересных примеров использования инструментов гугла, в том числе реальных кейсов от заказчиков. Цель поста: получить обратную связь для понимания интересно ли читателю погрузиться в тему глубже.
В мире программирования существуют технологии, must have для каждого разработчика, к числу которых относится и Docker. Подразумевается, что это просто, как таблица умножения, и известно всем. О том, зачем в 2021 году в 100500й раз заводить разговор про докер — статья Сергея Кушнарева, руководителя отдела разработки ZeBrains.
С одной стороны — про него все знают. С другой — если тебя устраивают небольшие веб-проекты, особенно на какой-то конкретной CMS, то докер очень часто оказывается тем самым «первым лишним», и все сводится к инструкции «возьми готовый докер-файл, запусти в терминале docker run и будет тебе счастье». А когда понимаешь, что этого уже недостаточно — натыкаешься на статьи, написанные по тому же принципу «скачайте-запустите-получите». Кому этого мало — читайте дальше.
Добыча биткоинов в Китае упала почти до нуля после недавних репрессий со стороны государства. Это уже оказало огромное влияние на весь рынок, в том числе (особенно) на Россию. Изменения касаются не только энтузиастов, в последний месяц их чувствуют все, даже бабушки из Иркутска.
Современные прокси-серверы имеют исчерпывающий функционал для контроля и мониторинга трафика — хорошее решение для офисов и государственных учреждений, в которых нужно огородить работников от нежелательных ресурсов, а также предоставлять доступ в интернет с дополнительной авторизацией и различной пропускной способностью канала для разных пользователей.
Какой бы сценарий использования прокси у вас ни был, использовать шлюз по умолчанию в большинстве случаев удобнее. Хотя бы потому, что некоторые приложения не умеют работать через прокси.
Нейросети отчасти будто подрывают традиционную теорию машинного обучения, которая сильно опирается на идеи теории вероятности и статистики. В чём же заключается загадка их успеха?
Исследователи показывают, что сети с бесконечным числом нейронов математически эквивалентны более простым моделям машинного обучения — ядерным методам. Поразительные результаты можно объяснить, если эта эквивалентность простирается дальше «идеальных» нейронных сетей. Подробности рассказываем к старту нашего флагманского курса по Data Science.
По данным Росстта в среднем житель России имеет доход 35 700 ₽ в месяц. Эта цифра мало что говорит о благосостоянии населения. Если взять двух человек — одного с доходом 70 000 ₽ и 1400 ₽, их средний ежемесячный доход будет равен ровно 35 700 ₽. Чтобы лучше продемонстрировать распределение доходов, я смастерил калькулятор, который позволяет посчитать количество людей с заданным диапазоном дохода и наглядно продемонстрировать их вклад в общий уровень доходов.
В этом посте я расскажу как от довольно скупых данных, которые доступны на сайте Росстата сгенерировать датасет для подробной инфографики.
Начать свою статью хочу с известных многим слов:
«Что нам стоит, дом построить?
нарисуем, будем жить,
и уж, точно, непременно,
в нём не будем мы тужить.»
Что нам стоит собрать усилитель с ДСП обработкой сигнала, да еще с красивым веб интерфейсом и различными другими интерфейсами управления? Легко? На практике это оказывается достаточно сложная задача.
Для опытных разработчиков данная статья не раскроет ничего нового, т.к. в ней не раскрываются никакие тонкие особенности или методики разработки. Это скорее обзор процесса проектирования конкретного электронного устройства конкретным разработчиком. В первую очередь он будет интересен людям, которые немного занимались радиоэлектроникой и собирали какие-то конструкции, а сейчас подошли к этапу, когда хочется основательно заняться разработкой. Этой статьей я хочу показать, что разработка сложного устройства может быть выполнена небольшой командой из четырех-пяти человек, но и трудностей на этом пути очень много. Я не буду описывать как процесс разработки выглядит классически. Я просто представляю свой скромный взгляд на проделанную работу.
ВАЖНО: это мой личный взгляд на разработку, он не обязательно будет совпадать с вашим мнением. А возможно наоборот, я озвучу некоторые мысли, которые вам кажутся родными, но это просто совпадение. Мой взгляд может не совпадать с классическими подходами к разработке оборудования. Но он имеет место быть, так как подтвержден успешным запуском в производство некоторого количества оборудования.
Если интересно - добро пожаловать.
Язык программирования Rust упрощает разработку более безопасного программного обеспечения. Что ещё предстоит делать?
Сегодня я хотел бы поделиться своим опытом проектирования ракеты типа «Батут-М» с управлением вектора тяги (thrust vector control), все детали будем печатать на 3D принтере, а в качестве микроконтроллера использовать Arduino Nano BLE.
Во многих языках есть специальный механихм для кодогенерации - макросы. Иногда из реализуют на отдельном достаточно примитивном языке, основанном на простой подстановке текста (препроцессоры PL/I и C, m4), но даже в таком варианте удается делать интересные и полезные вещи. Другой популярный вариант - макросы реализуются на том же языке, что и программа, в которой они используются. Такой подход ведет свое начало из Lisp (удобный тем, что формат программ и данных там одинаков), активно применяется в Julia, OCaml(camlp4/5), Scala, Haskell, Rust, а наибольшего развития получил в Nemerle, где макрос может может запускаться как до, так и после проверки и вывода типов, и в последнем варианте иметь доступ к типам.
При этом макросах все возможности языка не нужны, скажем высокая эффективность и безопасность Rust пользы здесь не принесут и могут только затруднить разработку.