Рубрика «Lua»

Уменьшаем количество слоёв архитектуры с 5 до 2 - 1

Работая над несколькими open-source проектами, в один прекрасный день я решил упростить себе жизнь и разработал Upstream-модуль для nginx, который помог мне убрать громоздкие слои многослойной архитектуры. Это был забавный опыт, которым я хочу поделиться в этой статье. Мой код лежит в открытом доступе тут: github.com/tarantool/nginx_upstream_module. Его можно поднять с нуля или скачать Docker-образ по этой ссылке: hub.docker.com/r/tarantool/tarantool-nginx.

На повестке дня:

  • Введение и теория.
  • Как использовать эти технологии.
  • Оценка производительности.
  • Полезные ссылки.

Читать полностью »

К написанию статьи меня подтолкнула вот эта новость (+исследование) про изобретение генератора мемов учеными из Стэнфордского университета. В своей статье я попытаюсь показать, что вам не нужно быть ученым из Стэнфорда, чтобы делать с нейросетями интересные вещи. В статье я описываю, как в 2017 году мы обучили нейронную сеть на корпусе из примерно 30 000 текстов и заставили ее генерировать новые интернет-мемы и мемы (коммуникационные знаки) в социологическом смысле слова. Описан использованный нами алгоритм машинного обучения, технические и административные трудности, с которыми мы столкнулись.
Читать полностью »

И ПЕРЕДАЧА БОЖЕСТВЕННОЙ ВОЛИ СИГНАЛОВ ТОЧНОГО ВРЕМЕНИ ЧЕРЕЗ ESP8266.
ЧАСТЬ ЧЕТВЕРТАЯ

Автоматизация тибетских поющих чаш с помощью «Ардуино». Шаговый двигатель вместо монаха. Беспроводное программирование - 1

Так уж всё совпало. Сначала я увидел статью на «Гиктаймс» про шторы управляемые шаговым двигателем. Вспомнил, что такой же двигатель валяется у меня без дела второй год. Затем взгляд мой упал на поющую чашу, которая пылилась на полке уже лет пять. А затем в голову начали приходить разные умные мысли…

Нет, конечно иногда по настроению, я брал сию чашу в руки и некоторое время извлекал из нее разного рода чарующие звуки, но это было не совсем-то чего мне хотелось. А хотелось мне чем-то заниматься параллельно, а чаша пусть бы в это время звучала сама. Понятно что тысячу лет назад на это потребовался бы отдельный раб человек, лет триста назад — хитроумный заводной механизм, а сейчас… Ну, а сейчас у нас есть и шаговый двигатель и плата «Arduino ProMini» и прочая незамысловатая электроника. Осталось только немного побыдлокодить. И заодно сделать так, чтобы чаша эта тибетская заодно отбивала точное время — зря, что ли наплодили столько серверов точного времени. А с ними пусть общается ESP8266, она это умеет.
Итак…
Читать полностью »

Дополнено: хорошая дискуссия на Hacker News

Дэвид Ю на GitHub разработал интересный тест производительности для вызовов функций через разные внешние интерфейсы (Foreign Function Interfaces, FFI).

Он создал файл общего объекта (.so) с одной простой функцией C. Затем написал код для многократного вызова этой функции через каждый FFI с измерением времени.

Для C «FFI» он использовал стандартную динамическую компоновку, а не dlopen(). Это различие очень важно, так как действительно сказывается на результатах теста. Можно спорить, насколько честно такое сравнение с фактическим FFI, но всё равно его интересно измерить.

Самый удивительный результат бенчмарка — то, что FFI от LuaJIT существенно быстрее, чем C. Он примерно на 25% быстрее, чем нативный вызов C для функции общего объекта. Как смог слабо и динамически типизированный скриптовый язык обогнать в бенчмарке C? Точен ли результат?
Читать полностью »

Приложение для Tarantool — это, по сути, набор хранимых процедур, используемых как API. Данные обрабатываются на стороне хранилища, что позволяет значительно повысить производительность. Однако поддержка хранимых процедур может превратиться в кошмар.

Может. Но не сегодня.

Сегодня мы рассмотрим вопросы обеспечения качества приложения. В частности, поговорим о тестировании, разберемся, как запуститься в production, как использовать коннекторы, а также поговорим о тонкостях миграции схемы данных.

Приложения для Tarantool. Часть 3. Тестирование и запуск - 1

Читать полностью »

«Лаппландцы» и HTTP - 1

Это не про настоящих лапландцев (с одной 'п'). Это про сервер приложений для микросервисов LAppS.

Если интересно то прошу под кат.

Читать полностью »

image

Предыстория

20-го декабря прошлого года я ушёл в отпуск, на целых 2 недели. Чем заняться в отпуске? Правильно, — кодом. Кодом, которым некогда заниматься в рабочее время. Последние несколько лет мне кодить приходилось очень мало. Руки стосковались. Какой код пишут в отпуске? Не знаю как вы, а я пишу велосипеды. Зачем? Причин может быть много, но основная, — мне интересно. Я люблю C++ и Lua. Я ещё и bash и awk люблю. Не закидывайте камнями, это личное, так получилось. JavaScript я не очень люблю (хотя последние 2 года если что-то и кодил то на JS), и это тоже личное.

Читать полностью »

В этой статье вас ждёт продолжение описания устройства спецэффектов для игр под NES (первая часть здесь). На этот раз будет меньше теории и больше картинок-примеров.

Устройство спецэффектов для игр под NES. Часть 2 - 1

Мы рассмотрим группы эффектов, созданные с помощью переключения позиции скролла видеопроцессора, а также пару эффектов, полученных переключением состояния видеопроцессора.
Читать полностью »

image

Оглавление

Оглавление

  • Статья 1
    • Часть 1. Игровой цикл
    • Часть 2. Библиотеки
    • Часть 3. Комнаты и области
    • Часть 4. Упражнения
  • Статья 2
    • Часть 5. Основы игры
    • Часть 6. Основы класса Player
  • Статья 3
    • Часть 7. Параметры и атаки игрока
    • Часть 8. Враги
  • Статья 4
    • Часть 9. Режиссёр и игровой цикл
    • Часть 10. Практики написания кода
    • Часть 11. Пассивные навыки
  • Статья 5
    • Часть 12. Другие пассивные навыки
  • Статья 6
    • Часть 13. Дерево навыков
  • Статья 7
    • Часть 14. Консоль
    • Часть 15. Финал

Часть 14: Консоль

Введение

В этой части мы разберём комнату Console. Консоль реализовать гораздо проще, чем всё остальное, потому что в итоге она сводится к выводу на экран текста. Вот, как это выглядит:

GIF

Создание игры на Lua и LÖVE — 7 - 2

Комната Console будет состоять из трёх разных типов объектов: строк, строк ввода и модулей. Строки — это просто обычные цветные строки текста, отображаемые на экране. Например, в показанном выше примере ":: running BYTEPATH..." будет являться строкой. С точки зрения структуры данных это будет просто таблица, хранящая позицию строки, её текст и цвета.
Читать полностью »

Существует несколько серий статей про программирование под NES, одна из них уже даже переведена на русский язык на хабре. Однако ни одна из них не заходит дальше обзора базовых возможностей консоли – рассматривается общая архитектура консоли, основы ассемблера, вкратце рассказывается, как выводить спрайты на экран, упоминается что-то о музыке и мапперах, и цикл заканчивается.

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

Поэтому перед тем, как запрограммировать что-нибудь, предстоит разобраться с тем, как устроены те или иные эффекты для NES, и статья будет посвящена тому, как это сделать. Существует множество статей из разряда «Игры, выжавшие из NES максимум», попробуем разобраться в том, как сделаны все основные эффекты в этих играх, а также создадим инструменты, которыми можно найти другие игры, не менее технологичные по эффектам.Читать полностью »