
Lua *
Скриптовый язык программирования
Встраиваем Lua интерпретатор в проект для микроконтроллера (stm32)

В достаточно крупных приложениях немалую часть проекта составляет бизнес-логика. Эту часть программы удобно отлаживать на компьютере, после чего встраивать в состав проекта для микроконтроллера, ожидая, что эта часть будет выполняться в точности так, как было задумано без какой-либо отладки (идеальный случай).
Так как большинство программ для микроконтроллеров пишется на С/C++, то для этих целей обычно используют абстрактные классы, предоставляющие интерфейсы к низкоуровневым сущностям (в случае, если проект пишется только с использованием C, то зачастую используются структуры указателей на функции). Данный подход предоставляет требуемый уровень абстракции над железом, однако чреват надобностью в постоянной повторной компиляции проекта с последующим программированием энергонезависимой памяти микроконтроллера бинарным файлом прошивки большого объема.
Однако есть и другой путь — использование скриптового языка, позволяющего производить отладку бизнес-логики в реальном времени на самом устройстве или загружать сценарии работы прямо с внешней памяти, не включая данного кода в состав прошивки микроконтроллера.
В качестве скриптового языка я выбрал Lua.
Lua in Moscow 2019: интервью с Роберто Иерусалимским

Некоторое время назад наш московский офис посетил Роберто Иерусалимский, автор языка Lua. Мы взяли у него интервью, в ходе которого задали и вопросы от читателей Хабра. Наконец-то мы можем поделиться с вами всей записью разговора.
Высокоуровневая репликация в СУБД Tarantool

Feel the power! (...aka enjoy the performance)
Все перечисленное делает Tarantool привлекательной платформой для создания высоконагруженных приложений, работающих с БД. В таких приложениях часто возникает необходимость репликации данных.
Гармония скриптов внутри Android приложения

Думаю, многие читатели хаба по android-разработке слышали, что Java позволяет в рантайме через ClassLoader модифицировать dex уже установленного приложения. С помощью этого можно в рантайме подгружать скомпилированный код и использовать его. Но Google к таким махинациям относится, мягко говоря, не слишком лояльно и банит уличённые в подобном приложения.
Однако есть альтернативные способы загрузки и выполнения скриптов на мобильном устройстве. За подробностями под кат!
Бенчмаркинг Емели
Основная задумка
Про бенчмаркинг приложений, движков и различных программных систем писано множество книг, статей и туториалов.
Вот что выдает нам старушка Википедия на сей счет:
Тест производительности, бенчмарк (англ. benchmark) — контрольная задача, необходимая для определения сравнительных характеристик производительности компьютерной системы.
Но что, если мы подойдем к вопросу бенчмаркинга игровых движков немного с другого боку? Все игровые движки и SDK для разработки игр (да и не только) часто рекламируют себя как очень интуитивные и легко усваиваемые инструменты. Нам продается простота в освоении, потрясающая кривая обучения и входа, демонстрируются легковесные и красивые примеры, где один экран кода будучи запущенным творит какую-то чудную магию. Так вот, готовясь к грядущему мероприятию Ludum Dare, я в очередной раз решил оглядеться и посмотреть, что предлагает "рыночек" простому Емеле — тому, кто в геймдеве без году неделя. То есть одна из групп людей той самой ЦА, которой продаются эти самые потрясающие качества лёгкой усваиваемости движка.

Хватит качать и хранить нули

"Нуль-блоками" я называю блоки (части файла), заполненные нулевыми байтами. Можно заранее посчитать их хеши и не запрашивать эти блоки у источников, а сразу помечать их уже загруженными.
Нуль-блоки не надо хранить на диске. Благодаря sparse флагу, операционная система просто помечает этот участок файла как заполненный нулями и не хранит эти нули на диске.

Также, показывая что участки скачиваемого файла заполнены нулями, можно мотивировать пользователя отказаться от скачивания и распространения битого файла. В моей версии Shareaza эти участки помечаются красной полосой сверху на полосе прогресса загрузки файла.
Откуда берутся нуль-блоки в файле
- Раздающий не дождался полного скачивания и проверки файла и выложил неполный(partial) файл.
- Результат повреждения сектора диска раздающего.
Это те варианты, которые пришли в голову.
Почему эти файлы продолжают распространяться
- Видео/аудио файл может иметь нуль-блок в середине и спокойно воспроизводится, просто перескакивая то место, где попался нуль-блок. Тем самым он может казаться целым.
- Образ диска также может иметь нуль-блоки в разных местах и это проявит себя только при попытке чтения файлов из этих блоков.
Задай вопрос автору языка Lua

В это воскресенье в офисе Mail.ru Group прошла конференция Lua in Moscow 2019. Приглашённой звездой был Роберто Иерусалимский, один из создателей языка Lua, ведущий архитектор и автор обучающих материалов. Под его чутким руководством язык развивается с далёкого 1993 года, так что Роберто можно назвать одним из столпов Lua-сообщества. Он уже трижды выступал у нас: Lua Workshop 2014, Митап в Mail.ru 2016, Lua in Moscow 2017.
И в этом году Роберто не улетел домой сразу после конференции, а придёт к нам в гости 6 марта по приглашению команды Tarantool. Мы хотим задать Роберто волнующие нас вопросы и приглашаем «виртуально» к нам присоединиться. Пишите в комментариях, что вы хотели бы спросить у патриарха о текущем состоянии Lua и о перспективах развития языка. Самые интересные вопросы мы включим в интервью.
А чтобы не было дублирований, под катом вы найдёте список вопросов, которые мы подготовили от себя.
Программа конференции Lua in Moscow 2019

Как мы сообщали в предыдущем анонсе, 3 марта (воскресенье) в офисе Mail.ru Group пройдёт третья международная конференция Lua in Moscow 2019.
Конференция Lua in Moscow 2019

В первое воскресенье марта в офисе Mail.ru Group пройдёт третья международная конференция Lua in Moscow 2019. Вас ждут выступления автора языка Роберто Иерусалимского и лучших зарубежных и отечественных экспертов по Lua и LuaJIT.
Lua — уникальный язык программирования, который используется далеко не только в индустрии компьютерных игр, но и как встроенный язык расширений в таких инструментах web-программирования, как Redis, nginx, Tarantool, OpenResty. Lua также применяется для анализа больших данных и научных вычислений, используется во многих роутерах, принтерах и других подобных устройствах.
Даже если вы ещё не пишете на Lua, приходите! Наверняка эта конференция откроет вам глаза на что-то новое и интересное!
Ещё один простой процессор на verilog
В статье описан очередной примитивный процессор и ассемблер для него.
Вместо обычных RISC/СISC, процессор не обладает набором инструкций как таковым, есть только единственная инструкция копирования.
Подобные процессоры есть у Maxim серия MAXQ.
История о том, что не надо делать во время разработки
Я как разработчик вступил в проект в 2015-2016 точно не помню, но он работал 2-3 года ранее. Проект был очень популярен в своей сфере, а именно игровых серверов. Как странно не звучало, но проекты по игровым серверам ведутся и по сей день, недавно вакансии видел и чуток поработал в одной команде. Поскольку игровые сервера строятся на уже созданной игре, следовательно для разработки используется скриптовый язык который встроен в движок игры.
Мы разрабатываем почти с нуля проект на Garry’s Mod (Gmod), важно подметить, что на момент написания статьи Гарри создает уже новый проект S&Box на движке Unreal Engine. Мы же до сих пор сидим на Source.
Который вообще не подходит для нашей тематики сервера.

Ближайшие события
Релиз XMPP (Jabber) сервера Prosody 0.11.0
Представлен первый релиз 0.11-ой стабильной ветки XMPP сервера Prosody с исправлениями более чем 2000 ошибок.
Основные изменения
Наиболее значительные улучшения коснулись модулей MUC и pubsub.
Вместе эти компоненты реализуют два из самых обширных расширений XEP стандарта XMPP, которые в настоящее время предоставляет протокол. Хотя предыдущие версии уже довольно давно поддерживали MUC и pubsub, оба они довольно сложны, и после первоначальной реализации стало понятно, что необходимо провести обновление и рефакторинг кода, чтобы увеличить покрытие требуемой XEP функциональности, улучшить структуру кода и масштабируемость решений.
Также было осуществлено много других изменений, улучшений, исправлений ошибок, и проведено работ над производительностью, которые вошли в этот выпуск.
Встраиваемые языки: почему Lua?

«Lock-free, or not lock-free, that is the question» или «Здоровый сон хуже горькой редьки»
На написание данной статьи меня подвигли комментарии к статье "Как правильно и неправильно спать".
Речь в данной статье пойдёт о разработке многопоточных приложений, применимости lock-free к некоторым кейсам возникшим в процессе работы над LAppS, о функции nanosleep и насилии над планировщиком задач.
NB: Всё обсуждаемое касается разработки на C++ под Linux, но может быть применимо ко всем POSIX.1-2008 совместимым системaм (с оглядкой на конкретную реализацию).Вобщем всё довольно сумбурно, надеюсь ход мысли в изложении будет понятен. Если интересно то прошу под кат.
DNS over TLS — Шифруем наши DNS запросы с помощью Stunnel и Lua
DNS (англ. Domain Name System — система доменных имён) — компьютерная распределённая система для получения информации о доменах.
TLS (англ. transport layer security — Протокол защиты транспортного уровня) — обеспечивает защищённую передачу данных между Интернет узлами.
После новости "Google Public DNS тихо включили поддержку DNS over TLS" я решил попробовать его. У меня есть Stunnel который создаст шифрованный TCP туннель. Но программы обычно общаются с DNS по UDP протоколу. Поэтому нам нужен прокси который будет пересылать UDP пакеты в TCP поток и обратно. Мы напишем его на Lua.
Вся разница между TCP и UDP DNS пакетами:
4.2.2. TCP usage
Messages sent over TCP connections use server port 53 (decimal). The message is prefixed with a two byte length field which gives the message length, excluding the two byte length field. This length field allows the low-level processing to assemble a complete message before beginning to parse it.
RFC1035: DOMAIN NAMES — IMPLEMENTATION AND SPECIFICATION
То есть делаем туда:
- берём пакет из UDP
- добавляем к нему в начале пару байт в которых указан размер этого пакета
- отправляем в TCP канал
И в обратную сторону:
- читаем из TCP пару байт тем самым получаем размер пакета
- читаем пакет из TCP
- отправляем его получателю по UDP
Генерация трафика в юзерспейсе

Генерация трафика посредством MoonGen + DPDK + Lua в представлении художника
Нейтрализация DDoS-атак в реальных условиях требует предварительных тестирования и проверки различных техник. Сетевое оборудование и ПО должно быть протестировано в искусственных условиях близких к реальным — с интенсивными потоками трафика, имитирующего атаки. Без таких экспериментов крайне затруднительно получить достоверную информацию о специфических особенностях и ограничениях, имеющихся у любого сложного инструмента.
В данном материале мы раскроем некоторые методы генерации трафика, используемые в Qrator Labs.
ПРЕДУПРЕЖДЕНИЕ
Мы настойчиво рекомендуем читателю не пытаться использовать упомянутые инструменты для атак на объекты реальной инфраструктуры. Организация DoS-атак преследуется по закону и может вести к суровому наказанию. Qrator Labs проводит все тесты в изолированном лабораторном окружении.
Corona SDK аномалия библиотеки json
Corona SDK точный таймер
В статье будет решаться следующая задача: Сделать приложение которое будет показывать время прошедшее с момента включения приложения с его обновлением 1 раз в секунду.
Вклад авторов
Evengard 244.0lenkis 222.0Greenolor 179.0AterCattus 171.6Rosik 164.0relevance_17 143.0Sertik13 141.0RussDragon 115.0gerold103 113.0codesign 113.0

