• Первое знакомство с AssemblyScript

    • Translation
    Поддержка технологии WebAssembly (Wasm) появилась в браузерах относительно недавно. Но эта технология вполне может серьёзно расширить возможности веба, сделав его платформой, способной поддерживать такие приложения, которые обычно воспринимаются как настольные.

    Освоение WebAssembly может оказаться непростым делом для веб-разработчиков. Однако ситуацию способен улучшить компилятор AssemblyScript.


    Автор статьи, перевод которой мы сегодня публикуем, предлагает сначала поговорить о том, почему WebAssembly — это весьма многообещающая технология, а потом — взглянуть на то, как AssemblyScript может помочь в раскрытии потенциала Wasm.
    Читать дальше →
    • +29
    • 12.7k
    • 6
  • Загрузчик с шифрованием для STM32

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

    В процессе работы ставились следующие задачи:

    • Обеспечить обновление прошивки пользователем устройства с SD-карты.
    • Обеспечить контроль целостности прошивки и исключить запись некорректной прошивки в память контроллера.
    • Обеспечить шифрование прошивки для исключения клонирования устройства.

    Код писался в Keil uVision с использованием библиотек stdperiph, fatFS и tinyAES. Подопытным микроконтроллером был STM32F103VET6, но код может быть легко адаптирован под другой контроллер STM. Контроль целостности обеспечивается алгоритмом CRC32, контрольная сумма расположена в последних 4 байтах файла с прошивкой.

    В статье не описано создание проекта, подключение библиотек, инициализация периферии и прочие тривиальные этапы.
    Читать дальше →
  • Пишем собственный воксельный движок

    • Translation
    image

    Примечание: полный исходный код этого проекта выложен здесь: [source].

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

    После выпуска первоначального концепта Task-Bot [перевод на Хабре] я почувствовал, что меня ограничивает двухмерное пространство, в котором я работал. Казалось, что оно сдерживает возможности емерджентного поведения ботов.

    Предыдущие неудачные попытки изучения современного OpenGL поставили передо мной мысленный барьер, но в конце июля я каким-то образом наконец пробил его. Сегодня, в конце октября, у меня уже достаточно уверенное понимание концепций, поэтому я выпустил собственный простой воксельный движок, который будет средой для жизни и процветания моих Task-Bots.

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

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

    Так как движок уже довольно сильно продвинулся вперёд и я снова перехожу к программированию ботов, я решил написать пост о движке, его функциях и реализации, чтобы в будущем сосредоточиться на более высокоуровневых задачах.
    Читать дальше →
    • +23
    • 12.8k
    • 8
  • Очередные странности в алгоритмах ГОСТ Кузнечик и Стрибог

      Привет, %username%!

      Криптографические алгоритмы в России не проходят через открытые конкурсы, их просто спускают нам свыше. И рано или поздно это сильно нам аукнется. Эта статья об очередном исследовании наших ГОСТов.

      Читать дальше →
    • TCP против UDP или будущее сетевых протоколов

        Перед каждым сервисом, генерирующим хотя бы 1 Мбит/сек трафика в интернете возникает вопрос: «Как? по TCP или по UDP?» В прикладных областях, в том числе и платформах доставки уже сложились предпочтения и традиции принятия подобных решений.

        По идее, если бы, к примеру, однажды один ленивый разработчик не попробовал развернуть свой ML на Python (потому что только его и знал), мир скорее всего никогда не проникся бы такой любовью к презренному «супер-джава-кодерами» языку. А сегодня слабости этого языка в прошлом контексте применения безоговорочно обеспечивают ему первенство в развертывании и запуске многочисленных майнерских А/Б.

        Сравнивать можно многое: ARM с Intel, iOS и Android, а Mortal Kombat с Injustice. И нарваться на космический холивар, поэтому вернемся к теме доставки огромных объемов разноформатного контента.

        Десять лет назад все были абсолютно уверены, UDP — это что-то про негарантированную доставку. Если нужен надежный протокол — это TCP. И вопреки традициям в этой статье мы будем сравнивать такие, кажущиеся несравнимыми вещи, как TCP и UDP.


        Осторожно, под катом 99 иллюстраций и схем и все важные.
        Читать дальше →
      • Team Lead на удаленке: как я путешествовал с семьей и работал из Греции и Вьетнама



          Всем привет, меня зовут Александр Буланов, я разработчик и Team Lead в компании Django Stars. Я люблю свою работу, а еще я люблю ездить по миру, исследовать новые страны и вместо одного и того же пейзажа за окном видеть разные.

          Совмещая работу и путешествия, я побывал уже в трех странах: Германия, Греция и Вьетнам. Ездил не сам, а с семьей — женой и двумя детьми (сейчас им 3 и 6 лет). Конечно же, поначалу я сомневался, а получится ли совмещать и работу, и активное получение новых впечатлений, но очень быстро втянулся и собираюсь продолжать в том же духе.
          Читать далее
        • Обзор облачных сервисов для разработки бэкенда мобильных приложений

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

            Подобные сервисы называются Mobile Backend-as-a-Service (MBaaS). Процессы создания бэкенда с их помощью упрощены, по сравнению с разработкой «вручную». Это экономия на найме отдельного backend-разработчика. А тот факт, что провайдер MBaaS берет на себя все вопросы, связанные со стабильностью серверов, балансировкой нагрузки, масштабируемостью и прочими инфраструктурами сложностями, придает уверенности в качестве полученного результата и является основным преимуществом таких сервисов.

            В этой статье рассмотрим несколько крупных и зарекомендовавших себя сервисов: Microsoft Azure, AWS Amplify, Google Firebase, Kumulos.


            Читать дальше →
            • +11
            • 6.4k
            • 3
          • Протокол MQTT: концептуальное погружение

            • Translation
            Протокол Message Queuing Telemetry Transport (MQTT) используется в течение многих лет, но сейчас он особенно актуален благодаря взрывному росту IoT: и потребительские, и промышленные устройства внедряют распределённые сети и граничные вычисления (edge computing), а устройства с постоянной трансляцией данных становятся частью повседневной жизни.

            Это означает, что лёгкие, открытые и доступные протоколы со временем станут ещё важнее. В этой статье приводится концептуальное погружение в MQTT: как он работает, как используется сейчас и как будет использоваться в будущем.
            Читать дальше →
            • +21
            • 49.5k
            • 8
          • Дискретная математика для WMS: алгоритм сжатия товаров в ячейках (часть 1)



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

              Если вам интересны приложения математики в бизнесе и вы не боитесь жестких тождественных преобразований формул на уровне 5-го класса, то доброго пожаловать под кат!

              Статья будет полезна тем, кто внедряет WMS-системы, работает в отрасли складской или производственной логистики, а также программистам, которые интересуются приложениями математики в бизнесе и оптимизацией процессов на предприятии.

              Читать дальше →
            • Запускаем дисплей на STM32 через LTDC… на регистрах

                Приветствую! Недавно для проекта потребовалось запустить дисплей, который имел интерфейс LVDS. Для реализации задачи был выбран контроллер STM32F746, т.к. я с ним уже достаточно много работал и у него есть модуль LTDC, который позволяет работать напрямую с дисплеем без контроллера. В данном случае контроллер реализован уже внутри микроконтроллера. Так же не последним доводом было то, что на данном камне есть отладка STM32F746-Disco, которая у меня была под рукой, а значит я мог начинать работу над проектом не дожидаясь пока ко мне приедет плата, компоненты и прочее.

                Сегодня я расскажу как запустить модуль LTDC, работая с регистрами (CMSIS). HAL и прочие библиотеки не люблю и не использую по религиозным убеждениям, но в этом и интерес. Вы увидите, что поднимать сложную периферию на регистрах так же просто, как и обычный SPI. Интересно? Тогда поехали!


                Читать дальше →
              • Заряжаем АА, ААА и другое цилиндрическое и аккумуляторное

                  На ныне покойном Geektimes есть (или был) блог Gearbest и он был (или есть) уныл. Их маркетологи зачем-то раз за разом втюхивают одни и те же телефоны и планшеты, тогда как на сайте (впрочем, как и на Ali) есть куча других отличных товаров для гиков. Поэтому, можно я поделюсь своими маленькими китайскими открытиями?



                  У меня есть дети. Дети = выброшенные батарейки. Т.е. там есть еще промежуточные звенья типа больших роботов, мечей, орущих робокошек, которые катаются по дому и мерцают как мечта эпилептика и так далее. Но все приводит к одному — выброшенным батарейкам.

                  Благодаря Алексею Надежину мы уже знаем, что лучшими по соотношению цена/емкость являются либо батарейки Ikea и Ашан, либо GP Super. Тем, собственно и жили.
                  UPD: в комментариях указали, что Алексей провел новое исследование. С учетом обновления цен до текущих, получается, что лучше выглядят батарейки Pairdeer и Lexman из Леруа Мерлен. Ну и опять же Ашан.
                  Однако, вывалив в специальный контейнер очередную порцию дохлых батареек и испытав на себе полуночный плач ярославны о том, что любимая кукла не работает, пришел к простому выводу — пора переходить на аккумуляторы. Причем, если будут аккумуляторы, неплохо бы их как-то еще и заряжать. Полез гуглить простые зарядки и тут мне открылся “о дивный новый мир”.
                  Читать дальше →
                • Самодельные диммеры для систем домашней автоматики

                  Привет всем! Эта статья про то, как собрать и применить диммеры для управления освещением. Схемы самые простые. Предназначены для сети 220 вольт переменного тока, управление — аналоговый сигнал 0-5 вольт (ардуино) или 0-3.3 вольта (esp8266).
                  Читать дальше →
                • Мелкосерийное производство электроники в Китае, личный опыт непрофессионала

                  • Tutorial
                  Занимаясь электроникой «для души» и не претендуя на лавры «профессионала» и «специалиста» тем не менее иногда удается создать что-то интересное не только для себя, но и для других. И тут неизбежно встает вопрос об изготовлении мелкой серии. Про заказ печатных плат уже много раз писали, многие пробовали и, в принципе, тут все более менее понятно, что и как. Первая партия запаяна, прошита и отдана счастливым владельцам, все хорошо. Внезапно выясняется, что нужно сделать еще пару десятков плат, а времени сидеть по вечерам с пинцетом и феном особенно и нет, да и глаза жалко. Настал момент сделать следующий шаг — попробовать сервис PCBA (PCB Assembly).

                  image
                  Читать дальше →
                • Планарный трансформатор: технология, расчеты, стоимость

                    Не так давно ко мне обратилась одна компания, которой необходимо было разработать линейку LED-драйверов. Название компании и ТТХ драйверов называть не буду, NDA не подписывал, но этика есть этика. Вроде бы обычный заказ на драйвер, каких десяток за год набирается, но было два взаимоисключающих требования: стоимость и габариты.

                    Задача с точки зрения схемотехники простая, но вот с точки зрения производства и конструирования оказалась очень интересной. И так — требовалось изготовить сетевой драйвер для LED с корректором коэффициента мощности (мощность около 100 Вт), который стоил был в пределах 3$ на серии и имел габариты по высоте не более 11 мм! Многие скажут: «А в чем проблема сделать дешманский драйвер?», вот только дешманский не прокатит, т.к. еще одно требование — возможно давать без опасений 5 лет гарантии. И вот тут начинается самое интересное.

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

                    Если вам интересно между чем и чем делался выбор, на каких аргументах он основывался и как удалось получить стоимость трансформатора меньше 0.5$, то приглашаю вас в подкат. Ну и для улучшения «аппетита» прилагаю вам фото готового трансформатора:


                    Читать дальше →
                  • Приёмы геймдизайна: перемешивание

                    • Translation
                    Во множестве популярных игр используются статичные, то есть неизменные карты. Например, огромный мир Skyrim одинаков для всех игроков. Все строения, подземелья, люди, монстры и предметы всегда находятся в одном месте. У популярности таких статичных карт есть своя причина: создатели могут подгонять контент для обеспечения целостного игрового процесса на протяжении всей игры.


                    Каждый предмет в Skyrim (в том числе эта бесполезная чаша рядом со ступеньками) находится в одинаковом месте для всех игроков.

                    Но если карты не меняются, игрок может изучить и запомнить их. А запомнив то, что срабатывало в предыдущем прохождении, вы можете просто повторять те же действия в следующих. Со временем все сложные стратегические решения, принимаемые в игре, разрушаются и превращаются в головоломку с запоминанием. По этой причине у игр со статичными картами часто возникает проблема реиграбельности.
                    Читать дальше →
                  • Революция в радиотехнике? RF-ARM-FPGA SoC


                      Компания Xilinx тихо и без лишней помпы анонсировала продукт, который может полностью изменить облик и процесс разработки современных радиоприемников и передатчиков. Это маленькая микросхема, которая объединяет 90% вопросов обработки и формирования радиосигналов:

                      • программируемая логика (FPGA),
                      • процессоры для обработки сигналов и пользовательских приложений (два ARM’а),
                      • до восьми 12-разрядных АЦП с частотой дискретизации до 4 ГГц (!),
                      • до восьми 14-разрядных ЦАП с верхней частотой до 6.4 ГГц (!).

                      Кажется мы входим в эпоху, когда архитектура трансивера становится такой же универсальной, как архитектура современного ПК. Make SW, not HW!
                      Читать дальше →
                    • Монитор качества воздуха в помещении

                        image

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

                        Для этого в первую очередь надо видеть и понимать, что нас окружает? Каким воздухом мы дышем? Нам уже стали привычны термометры, барометры, приборы показывающие влажность. Но эти приборы ничего нам не говорят о качестве окружающего воздуха. А значит мы будем слушать советы, которые не всегда верны, руководствоваться слухами, не зная наверняка, правильно ли мы поступаем.

                        Один из таких мифов – что в городах отвратительный воздух, грязный и ядовитый. И вместо кислорода сплошные выхлопы от автомобилей. Мы воспринимаем это как данность, и не пытаемся исправить ситуацию, даже там, где способны это сделать, в собственном доме, или офисе. Даже те, у кого есть маленькие дети, или проблемы с аллергией, прикладывают свои усилия в слепую, не контролируя результатов.

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

                        Но этого недостаточно. Нужен прибор которым вы могли-бы непосредственно померять качество воздуха в вашем доме. Что бы Вам было понятно и очевидно чем Вы дышите. Как температура на градуснике.
                        Читать дальше →
                      • Почему нельзя отправлять UDP-пакеты через браузер?

                        • Translation

                        Введение


                        В 2017 году большинство популярных веб-игр типа agar.io использует для передачи данных WebSockets через TCP. Если бы в браузерах был встроенный UDP-аналог WebSockets, то это бы сильно улучшило работу с сетями в этих играх.

                        Вводная информация


                        Работа веб-браузеров основана на протоколе HTTP (протоколе запросов и ответов без сохранения состояния). Первоначально он был предназначен для обслуживания статичных веб-страниц. HTTP работает поверх TCP, низкоуровневого протокола, гарантирующего надёжную доставку и правильный порядок передаваемых по Интернету данных.

                        Всё это отлично работало многие годы, но недавно веб-сайты стали более интерактивными и перестали отвечать парадигме «запрос-ответ» протокола HTTP. Для решения этой проблемы изобретены современные веб-протоколы, такие как WebSockets, WebRTC, HTTP 2.0 и QUIC, имеющие потенциал значительного улучшения интерактивности сети.

                        К сожалению, новый комплект стандартов веб-разработки не отвечает потребностям многопользовательских игр или слишком сложен в реализации.

                        Это вызывает разочарование у разработчиков игр, ведь они просто хотят иметь возможность отправлять и принимать UDP-пакеты через браузер.
                        Читать дальше →
                      • Список команд чата Skype

                          ...Skype — это дьявольски хитрая программа, написанная бесспорно талантливыми людьми...Крис Касперски

                          Доброго времени суток!

                          Skype сейчас я встречаю чаще на компьютерах чем другие IM клиенты, мне он практически заменил icq, вся рабочая переписка ведется в skype, но речь пойдет не о том, что лучше или популярней. Часто бывает так, что участвуешь сразу в нескольких чатах где количество участников превышает 10, что собственно и приводит к тому, что на рабочем столе и в трее постоянно обновляется количество новых сообщений, а также уведомления в виде всплывающих сообщений, а теперь представьте что у вас 3 окна чата с друзьями, 1 с вашим боссом, другой с девушкой — все это в сумме начинает запутывать, отвлекать и порой раздражать. Хотелось бы расставить приоритеты…

                          Раньше я чаще всего настраивал «политику» уведомлений только через глобальные настройки программы
                          Случилось так, что я узнал, что в каждом окне чата skype возможно использование команд, например /alertsoff отключит уведомления для конкретного окна чата, соответственно /alertson включит их обратно.
                          Поискав немного я наткнулся на некое how-to, оказывается у skype чата довольно много текстовых команд, подобие IRC команд. Далее я постарался попробовать все возможные из них на двух имеющихся у меня платформах, как оказалось не все и не везде работает… Прошу под кат.

                          Читать дальше →