Pull to refresh
44
0.5
Филипп @bak

Пользователь

Send message

Разрешение на полет дрона в 2022-м

Reading time 5 min
Views 116K

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

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

Читать далее
Total votes 45: ↑45 and ↓0 +45
Comments 51

Как устроен балансировщик команд в World of Tanks Blitz

Reading time 9 min
Views 54K


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

У танков есть следующие важные для матчмейкинга параметры:

  • Уровень. В зависимости от уровня, у танков меняются различные характеристики (например, скорость, бронепробитие). На 1-ом уровне — самые слабые танки, на 10-ом — самые сильные.
  • Тип. В WoT Blitz существует 4 типа танков: лёгкий, средний, тяжёлый и ПТ-САУ (противотанковые самоходные артиллерийские установки)

Самая простая реализация матчмейкера — закидывание игроков в команды случайным образом. Но в данном случае у игроков на низких уровнях не будет никаких шансов нанести хоть какой-то урон, и играть станет неинтересно.
Читать дальше →
Total votes 24: ↑22 and ↓2 +20
Comments 31

Исправляем опечатки с учётом контекста

Reading time 10 min
Views 25K

Недавно мне понадобилась библиотека для исправления опечаток. Большинство открытых спелл-чекеров (к примеру hunspell) не учитывают контекст, а без него сложно получить хорошую точность. Я взял за основу спеллчекер Питера Норвига, прикрутил к нему языковую модель (на базе N-грамм), ускорил его (используя подход SymSpell), поборол сильное потребление памяти (через bloom filter и perfect hash) а затем оформил всё это в виде библиотеки на C++ со swig биндингами для других языков.

Читать дальше →
Total votes 23: ↑21 and ↓2 +19
Comments 2

Python: строим распределенную систему c PySyncObj

Reading time 5 min
Views 16K
Представьте, что у вас есть класс:
class MyCounter(object):
    def __init__(self):
        self.__counter = 0
    def incCounter(self):
        self.__counter += 1
    def getCounter(self):
        return self.__counter

И вы хотите сделать его распределённым. Просто наследуете его от SyncObj (передав ему список серверов, с которыми нужно синхронизироваться) и отмечаете декоратором @replicated все методы, которые изменяют внутреннее состояние класса:
class MyCounter(SyncObj):
    def __init__(self):
        super(MyCounter, self).__init__('serverA:4321', ['serverB:4321', 'serverC:4321'])
        self.__counter = 0
    @replicated
    def incCounter(self):
        self.__counter += 1
    def getCounter(self):
        return self.__counter

PySyncObj автоматически обеспечит репликацию вашего класса между серверами, отказоустойчивость (всё будет работать до тех пор, пока живо больше половины серверов), а также (при необходимости) асинхронный дамп содержимого на диск.
На базе PySyncObj можно строить различные распределенные системы, например распределенный мьютекс, децентрализованные базы данных, биллинговые системы и другие подобные штуки. Все те, где на первом месте стоит надёжность и отказоустойчивость.
Читать дальше →
Total votes 28: ↑28 and ↓0 +28
Comments 24

Скриншотим игры — the hard way

Reading time 6 min
Views 39K
Ну что такого сложного может быть в создании скриншота? Казалось бы — позови функцию, любезно предоставленную операционкой и получи готовую картинку. Наверняка многие из вас делали это не один раз, и, тем не менее, нельзя просто так взять и заскриншотить полноэкранное directx или opengl приложение. А точнее — можно, но в результате вы получите не скриншот этого приложения, а залитый черным прямоугольник.
Читать дальше →
Total votes 46: ↑45 and ↓1 +44
Comments 22

Молнии

Reading time 4 min
Views 41K


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

По крайней мере, таков план.

Но как же именно вам, как разработчику игры, отрендерить такой эффект?
Читать дальше →
Total votes 99: ↑97 and ↓2 +95
Comments 22

Boids — простой алгоритм перемещения групп юнитов

Reading time 3 min
Views 31K
Во время разработки клона одной игрушки мне понадобилось перемещать группы юнитов от одной планеты к другой. Первое что пришло в голову — заспавнить юниты один за другим и двигать их по прямой. Но это выглядело не очень весело, кроме того — нужно было как-то обходить планеты. После беглого ознакомления с алгоритмами группового перемещения я решил попробовать Boids. В итоге получилось такое:



Под катом описание алгоритма с примерами кода.

Читать дальше →
Total votes 63: ↑60 and ↓3 +57
Comments 23

Сервис шаринга скриншотов и кода

Reading time 5 min
Views 10K
Многие из вас наверняка слышали про сервисы, позволяющие делится скриншотами одним нажатием кнопки. Общая концепция следующая: жмёшь хоткей, выделяешь область экрана, в буфер обмена получаешь ссылку на скриншот, который автоматически загружается на какой-то хостинг. Так же многие из вас наверняка пользовались другими сервисами — позволяющими опубликовать фрагмент исходного кода и получить ссылку на страничку, отображающую этот исходник с подсветкой синтаксиса.

Мы объединили две эти идеи и сделали проект, обладающий следующими фичами:

  • Публикация скриншотов и исходников по нажатию хоткея
  • Open Source — можете форкнуть / поднять на своём сервере / добавить новые фичи
  • Прямая ссылка на изображения, отсутствие рекламы
  • Кроссплатформенность
  • Устойчивость к высоким нагрузкам (хостимся в облаке)

Читать дальше →
Total votes 44: ↑30 and ↓14 +16
Comments 56

Как мы делали плагин для kate

Reading time 3 min
Views 3.8K
В данной статье описан процесс написания плагина для kate под названием Neznaju. Плагин предназначен для совместного редактирования текста через сеть. Используя этот плагин вы можете создать сервер, или подключиться к созданному кем-то серверу и совместно редактировать какой-то текст. Плагин максимально простой. На данный момент он поддерживает подключение нескольких клиентов, а также редактирование объёмных файлов (т. к. передаётся только информация об изменениях в документе).
Читать дальше →
Total votes 36: ↑34 and ↓2 +32
Comments 25

Детектор попадания мячика с использованием OpenCV

Reading time 3 min
Views 21K


Недавно мне довелось поучаствовать в одном интересном проекте. Моя сестра учится на дизайнера в БВШД, и им дали задание сделать проект на тему Street Interactive. Идея была выбрана довольно простая. На экране демонстрируется анимация движущегося медведя, всем желающим предлагается попасть в него из рогатки импровизированным снежком. Результат продемонстрирован на видео, кому интересна техническая реализация, добро пожаловать под кат.
Читать дальше →
Total votes 63: ↑57 and ↓6 +51
Comments 9

Минималистичная программа в формате ELF

Reading time 6 min
Views 22K
Вдохновившись статьёй Привет из свободного от libc мира, я так же решил проделать нечто подобное. Чтобы не заниматься этим бесцельно, я решил поставить перед собой следующую задачу. Сделать программу, выводящую какую-нибудь простую строку, вроде «ELF, hello!». Разобраться с тем, как именно она будет представлена в исполняемом файле. Ну и попутно, постараться уложиться в 100 байт.
Читать дальше →
Total votes 110: ↑109 and ↓1 +108
Comments 49

Information

Rating
1,611-th
Date of birth
Registered
Activity