Как стать автором
Обновить
4

Lua *

Скриптовый язык программирования

Сначала показывать
Порог рейтинга
Уровень сложности

Обнаружение SSH-туннелей по размеру пакетов

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров17K

Иллюстрация из книги «Справочник киберсантехника»

Протокол SSH — очень мощный инструмент, который используется для удалённой консоли или передачи файлов (scp, sftp). Есть менее известная функция перенаправления портов. Такие SSH-туннели используются для пробития файрволов и хорошо скрываются от обнаружения стандартными средствами мониторинга типа Trisul, Zeek (ранее был известен как Bro), Suricata и Snort. Поэтому для их обнаружения в корпоративной сети используются другие методы.
Читать дальше →
Всего голосов 74: ↑70 и ↓4+66
Комментарии23

Новости

Как я столкнулся с Tarantool-ом: разбор подводных камней на примере микросервисного pet-проекта

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров2.6K

Привет, Хабр! Меня зовут Сергей Скубач, я работаю в VK и разрабатываю облачное хранилище WorkDisk. Мы используем Tarantool в своём продукте, так как его разрабатывают и развивают наши коллеги. Я впервые столкнулся с Tarantool именно в VK, и для более глубокого понимания решил попробовать использовать его в своём pet-проекте.

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

Читать далее
Всего голосов 28: ↑28 и ↓0+28
Комментарии0

Как создать свой мод для Cyberpunk 2077? Шерстим исходники, Lua, C++ и Python

Время на прочтение16 мин
Количество просмотров7K

Недавно мой коллега @Doctor_IT попросил помочь с его проектом — VR-жилетом, который «проецирует» ощущения урона, которые получает персонаж, на тело игрока. С моей стороны — мод, который будет отправлять данные из Cyberpunk 2077 на сам жилет.

Информации по теме моддинга мало, на русском языке материалов практически нет, а существующие статьи местами устарели — пора это исправить. Если вам интересно, как разработать свой мод для Cyberpunk 2077 и собрать VR-жилет, добро пожаловать под кат.
Читать дальше →
Всего голосов 50: ↑50 и ↓0+50
Комментарии10

Lua: маленький язык, который смог

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров42K

Lua — это, пожалуй, мой любимый "маленький язык", с низкой когнитивной нагрузкой и простотой в изучении и использовании. Он встроен во многое ПО, такое как Redis, NGINX через OpenResty и Wireshark (прим. перевод.: и многое другое). Он также используется в качестве скриптового языка в таких играх, как World of Warcraft и Roblox через Luau (прим. перевод.: и многих других). Этот пост — краткое признание в любви языку с некоторыми примерами того, почему он мне так нравится.

Читать далее
Всего голосов 36: ↑33 и ↓3+30
Комментарии70

Истории

Макросы в «МойОфис»: Расширяя возможности

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров3.2K

Не смотря на очевидные успехи импортозамещения в сфере программного обеспечения, есть ряд трудностей «переходного периода», которые существенно усложняют жизнь миллионам пользователей на необъятных просторах нашей страны. Одна из таких «головных болей» – макросы. При переходе на российские офисные пакеты, требуется переписать множество VBA-макросов для MS Office. При этом, макросам на VBA посвящено множество книг и интернет-ресурсов. А вот про макросы в отечественных «офисах» информацию, пока, приходится собирать по крупицам.

В этой статье предлагается пример разработки макроса в табличном редакторе «МойОфис Таблица». Разработчики «МойОфис» не только заложили возможности расширения базовой функциональности своего «офиса» с помощью макросов, но и снабдили пользователей толковым «Справочником макрокоманд на языке программирования Lua».

Попробуем решить тривиальную задачу сравнения двух таблиц. В «экселевском» файле Verify.xlsx 3 листа – Contract, Act, Result. В таблице Contract содержатся данные о договорных объемах работ, в Act – о фактически выполненных.

Читать далее
Всего голосов 30: ↑30 и ↓0+30
Комментарии10

Как я сделал систему мониторинга для башенного крана

Время на прочтение8 мин
Количество просмотров15K

В своей практике я встречался со множеством башенных кранов, начиная от “советских” КБ различных моделей и их модификаций, заканчивая современными кранами, в том числе Liebherr. Причем, среди последних я сейчас встречаюсь не только с новыми, а и со старичками, которые иногда старше меня)

Если с новыми кранами все более-менее хорошо (мощная система диагностики практически всех компонентов электросхемы, большой экран с отображением множества параметров, современная схемотехника с использованием ПЧ), то со старичками часто приходится повозиться. Да, релейно-контакторная схема не сложна, но годы дают знать свое.

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

Читать далее
Всего голосов 70: ↑70 и ↓0+70
Комментарии47

Встраиваем Lua в PHP через FFI

Время на прочтение24 мин
Количество просмотров4.9K

Foreign Function Interface — это перспективная альтернатива для традиционных PHP-расширений.


Сегодня мы будем разбирать FFI-библиотеку для работы с liblua5 из PHP, которая позволит исполнять скрипты на Lua из нашего приложения.


Читать дальше →
Всего голосов 43: ↑42 и ↓1+41
Комментарии11

Хранение графов в Tarantool: реальность или миф

Время на прочтение8 мин
Количество просмотров4K


Меня зовут Александр Горякин, и я работаю в отделе разработки систем для внешних заказчиков Tarantool. Очень часто мы сталкиваемся с весьма нетривиальными задачами, например с хранением графов. Расскажу об этом на примере создания системы по борьбе с мошенническими действиями для одного из заказчиков, очень крупного банка.
Читать дальше →
Всего голосов 49: ↑47 и ↓2+45
Комментарии10

CRUD 0.11.0 для Tarantool

Время на прочтение6 мин
Количество просмотров2.5K

Неделю назад вышла новая версия модуля CRUD для Tarantool. В 0.11.0 появилось множество нововведений, просьбы о которых поступали от наших пользователей. Что изменилось, как этим пользоваться и кому это может быть полезно? Расскажем обо всём.

Tarantool — это платформа in-memory вычислений с гибкой схемой данных, функциональность которой расширяется с помощью модулей. Одними из самых популярных являются vshard, предназначенный для распределённого хранения данных, и cartridge, который организует работу с кластером Tarantool. CRUD также можно считать членом этого семейства: он предназначен для написания запросов при работе с распределёнными данными. Мы в Tarantool активно используем его при разработке готовых решений и нередко упоминаем в статьях (например, здесь и здесь).

Читать далее
Всего голосов 41: ↑41 и ↓0+41
Комментарии1

Минимальная реализация Lua на Rust

Время на прочтение24 мин
Количество просмотров8.8K
После того, как вы освоите это руководство, в вашем распоряжении окажется минимальная реализация Lua (парсер, компилятор, виртуальная машина), написанная на Rust с чистого листа. Этот проект получил название Lust, его код можно найти на GitHub.

Читать дальше →
Всего голосов 37: ↑35 и ↓2+33
Комментарии11

Разработка системы аутентификации на Java+Tarantool

Время на прочтение23 мин
Количество просмотров7.3K
Системы аутентификации есть везде. Пока вы скучаете в лифте по пути с седьмого этажа на первый, можно успеть проверить баланс в приложении банка, поставить пару лайков в Instagram, а потом проверить почту. Это минимум три системы аутентификации.

Меня зовут Александр, я программист в отделе архитектуры и пресейла в Mail.ru Group. Я расскажу, как построить систему аутентификации на основе Tarantool и Java. Нам в пресейле очень часто приходится делать именно такие системы. Способов аутентификации очень много: по паролю, биометрическим данным, SMS и т.п. Для наглядности я покажу, как сделать аутентификацию по паролю.

Статья будет полезна тем, кто хочет разобраться в устройстве систем аутентификации. На доступном примере я покажу все основные части архитектуры, как они связаны между собой и как работают в целом.
Читать дальше →
Всего голосов 27: ↑27 и ↓0+27
Комментарии6

Tarantool и кодогенерация на Lua

Время на прочтение12 мин
Количество просмотров4.3K

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

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

Читать далее
Всего голосов 29: ↑29 и ↓0+29
Комментарии0

Чем Tarantool круче Redis'а для IoT-сервисов

Время на прочтение11 мин
Количество просмотров7K


Киберпанк 2077 уже наступил. Уровень развития технологий — это почти полное воплощение в реальность мечтаний писателей-фантастов. Умные устройства, «интеллектуальная» среда обитания, автоматизация ручного труда и управление техникой сквозь время и пространство. Полное торжество кибернетики, отложенного старта и дистанционного управления.

Эти «воспоминания о будущем» можно найти как у отечественных писателей, так и у зарубежных. Братья Стругацкие, Сергей Снегов, Кир Булычёв, Рей Брэдбери, Артур Кларк, Станислав Лем предсказали нам то, что мы называем Internet of Things, интернет вещей.

Технологии мотивируют бизнесменов, инженеров, изобретателей и мечтателей придумывать новые задачи и продукты. А новые продукты требуют соответствующих технологий. Этакий замкнутый круг!

Я расскажу о том, как компания Ready For Sky применила Tarantool, чтобы воплотить «воспоминания о будущем» у вас дома.
Читать дальше →
Всего голосов 39: ↑39 и ↓0+39
Комментарии17

Ближайшие события

Домашний DPI, или как бороться с провайдером его же методами

Время на прочтение16 мин
Количество просмотров238K

Долгое время я терпел ограничения РосКомНадзора и соответствующие действия провайдеров по различным ограничениям доступа к сайтам - но с определённого момента устал, и начал думать как бы сделать так, чтобы было и удобно, и быстро, и при этом с минимумом заморочек после настройки... Хочу оговориться, что цель анонимизации не ставилась.

Вообще, эта проблема имеет несколько решений... Но я решил бороться с провайдером их же методом.

...При помощи NGINX!
Всего голосов 246: ↑245 и ↓1+244
Комментарии187

Синхронная репликация в Tarantool

Время на прочтение35 мин
Количество просмотров6.7K


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

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

Задача реализации синхронной репликации стояла перед командой разработчиков Tarantool долгие годы, к ней было совершено несколько подходов. И вот теперь в релизе 2.6 Tarantool обзавёлся синхронной репликацией и выборами лидера на базе алгоритма Raft.
Читать дальше →
Всего голосов 38: ↑38 и ↓0+38
Комментарии3

Мониторинг Tarantool: логи, метрики и их обработка

Время на прочтение18 мин
Количество просмотров9.4K

Tarantool — это платформа in-memory вычислений с гибкой схемой данных. На её основе можно создать распределённое хранилище, веб-сервер, высоконагруженное приложение или, в конце концов, сервис, включающий в себя всё вышеперечисленное. Но какой бы ни была ваша промышленная задача, однажды настанет момент, когда её решение придётся мониторить. В этой статье я хочу дать обзор существующих средств для мониторинга приложения на базе Tarantool и пройтись по основным кейсам работы с ними.


Мониторинг Tarantool


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

Читать дальше →
Всего голосов 45: ↑43 и ↓2+41
Комментарии0

Расчет перцентилей для мониторинга высоконагруженных систем

Время на прочтение5 мин
Количество просмотров11K


Привет, меня зовут Игорь, и я разработчик решений на Tarantool в Mail.ru Group. Я работаю над витринами маркетинга в реальном времени для Мегафона. При мониторинге часто требуется использовать перцентили. Они позволяют понять, как система работает бóльшую часть времени, в отличие от усреднения значений, которое сильно подвержено влиянию выбросов. Если 9 из 10 запросов выполняются за 1 секунду, а один за 10 секунд, то среднее будет 1,9 секунды, а 50-перцентиль — 1 секунда. Это лишь один пример того, что среднее значение не подходит для мониторинга. Возникает необходимость считать перцентили, для этого мы добавили в tarantool/metrics Summary-коллектор.

Читать дальше →
Всего голосов 30: ↑30 и ↓0+30
Комментарии9

Как я решил сделать игру, вдохновившись Heroes of Might and Magic, и потерял деньги (часть 3)

Время на прочтение8 мин
Количество просмотров21K

Данная история состоит из трёх частей, т.к. я выпустил три игры:

●     Beasts Battle

●     Necromancer Returns

●     Magicians Legacy

 

В прошлых частях я рассказал, как я пришел к разработке гексагональной пошаговой игры Beasts Battle и как не отбились мои расходы на игру Necromancer Returns.

Здесь можно почитать первую и вторую статьи. 

 

Фальстарт

В феврале 2018 года вышла игра Necromancer Returns, которая не оправдала мои ожидания по продажам, и я ушел в депрессию. Но в апреле 2018 года у меня возникла мысль сделать следующую игру на основе этого движка, только чтобы вся графика была уже нарисована в 3D и отрендерена под 2D в изометрии. Мысль была такая: “по-быстрому” придумать новый мир, нарисовать его, запихнуть новых юнитов — и готово. Я списался с художником, который подключился в конце разработки Necromancer Returns и стал для меня основным. Он полностью перерисовал весь интерфейс для мобильной версии Necromancer Returns, а потом мы обновили и версию в Steam. 

Читать далее
Всего голосов 50: ↑46 и ↓4+42
Комментарии38

Тестируем играючи: мастер-мастер репликация в Tarantool

Время на прочтение10 мин
Количество просмотров3.6K


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


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

Всего голосов 37: ↑36 и ↓1+35
Комментарии32

Как я решил сделать игру, вдохновившись Heroes of Might and Magic, и потерял деньги (часть 1, 2)

Время на прочтение12 мин
Количество просмотров65K
Данная история будет состоять из трёх частей, т.к. я выпустил три игры:

  • Beasts Battle
  • Necromancer Returns
  • Magicians Legacy

Часть‌ ‌1


Для тех кто предпочитает смотреть, а не читать, я подготовил видео этой статьи.


В каждом выпуске будут цифры по каждой игре, какой бюджет и доход принесли игры…

Сразу скажу, я – фанат серии Heroes of Might and Magic и King's Bounty. Играл почти во все части и аддоны, за исключением седьмой части, т.к. время идет, жизнь меняется и на игры времени не осталось.
Всего голосов 139: ↑138 и ↓1+137
Комментарии108