Pull to refresh
54
-1
Антон Медведев @Elfet

Программист

Send message

Мой опыт разработки программы для игры в шашки с помощью алгоритма минимакс

Reading time 17 min
Views 10K

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

Мне захотелось написать программу, которая будет играть в шашки на относительно высоком уровне. Для этого я использовал алгоритм минимакс и Unity.

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

Частые ошибки в настройках Nginx, из-за которых веб-сервер становится уязвимым

Reading time 8 min
Views 62K

Nginx — это веб-сервер, на котором работает треть всех сайтов в мире. Но если забыть или проигнорировать некоторые ошибки в настройках, можно стать отличной мишенью для злоумышленников. Detectify Crowdsource подготовил список наиболее часто встречающихся ошибок, делающих сайт уязвимым для атак.

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

Мы проанализировали почти 50 000 уникальных файлов конфигурации Nginx, загруженных с GitHub с помощью Google BigQuery. С помощью собранных данных нам удалось выяснить,  какие ошибки в конфигурациях встречаются чаще всего.

Читать далее
Total votes 68: ↑67 and ↓1 +66
Comments 23

Реализация маневрирования юнитов в играх (избегание столкновений)

Reading time 6 min
Views 16K
Задача движения юнитов в играх является одной из ключевых задач, стоящих перед разработчиками игр. От того, как двигаются игровые юниты, во многом зависит восприятие всего геймплея в целом.

Традиционно считается, что достаточно реализовать алгоритм поиска пути и дальше всё будет работать само собой.

На практике же мы имеем совсем другую ситуацию.

Алгоритмы поиска пути разобраны досконально.

Нужен поиск пути с весами? A*. Нужен поиск для большого количества юнитов? Flow Field или кластеризация.

По большому счету по поиску пути не осталось не разобранных вопросов.

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

Эти проблемы и будем сегодня решать.



Disclaimer
Данная статья не претендует на исчерпывающее решение обозначенной проблемы.
Я лишь рассказываю о том, как конкретно мне видится решение, над которым я работал. Это решение в оттюнингованном виде попало в один из зарелизенных в этом году РТС проектов, но осталось ли там на данный момент я не знаю. Комментарии и дополнения приветствуются.
Total votes 49: ↑49 and ↓0 +49
Comments 55

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

Reading time 9 min
Views 73K
Если объяснять на пальцах, термоядерный реактор — это когда в магнитном поле удерживают плазму с температурой в 150 раз выше, чем на Солнце, а в трех метрах от нее находится охлаждающий контур гигантских катушек с температурой почти абсолютный ноль по Кельвину. По факту получаем самую горячую и самую холодную точки в галактике под одним колпаком. В реакторе два изотопа водорода «сплавляются» в гелий, высвобождая нейтрон, обладающий огромной энергией. По сути, это Солнце на Земле.


ITER — международный проект по созданию опытного реактора мощностью 500 МВт, который официально перешел из стадии строительства на стадию сборки.

Виталий Красильников — наш рассказчик, работает на проекте уже семь лет.
Читать дальше →
Total votes 206: ↑203 and ↓3 +200
Comments 437

Золотое кольцо скучнейших экскурсий: как это пытаются исправить

Reading time 13 min
Views 50K
Привет! Мы сейчас всерьёз упарываемся по развитию внутреннего туризма. Обычно я пишу про эту часть работы не на Хабр, но на днях появился один крутой пример, по которому можно отследить интересное продуктовое мышление и UX-подход. В реальном мире. В общем, компания внезапно поняла, что мир изменился, старые подходы не работают, и вообще-то вокруг есть много крутых технологий. Меня позвали как эксперта всё это оценивать и тестировать раннюю альфу турпродукта, и я просто хочу показать, как рациональное мышление может повлиять на туризм.

Итак, у нас есть экскурсии по Золотому кольцу России. Для пенсионеров это желанное приключение, для молодёжи — особый подвид предельно скучного и бессмысленного занятия. «20 храмов за 3 дня», «Самые нудные экскурсоводы, сыпящие датами», «Очереди в банальных местах вроде заселения в отель» — это из отзывов. Думаю, вы и сами можете себе всё это представить.


Вот так должно выглядеть заселение в отель: без людей и анкет, чёрт побери!

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

В примере подошли немного иначе: переписали всё, что бесит, и просто начали думать, как это убрать. Подход, очень знакомый мне по рознице — это способ резко поднять уровень сервиса до небывалых высот. Давайте пройдёмся по тому, что конкретно сделали в этом примере.
Читать дальше →
Total votes 206: ↑199 and ↓7 +192
Comments 307

Музыка для ваших проектов: 12 тематических ресурсов с треками по лицензии Creative Commons

Reading time 7 min
Views 118K
Подборка пригодится разработчикам, дизайнерам, видеорежиссерам и контент-мейкерам, которые ищут музыку для своих проектов — приложений, игр или видеороликов.

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

Total votes 57: ↑56 and ↓1 +55
Comments 9

Лабиринты: классификация, генерирование, поиск решений

Reading time 44 min
Views 80K

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

Классификация лабиринтов


Лабиринты в целом (а значит, и алгоритмы для их создания) можно разбить по семи различным классификациям: размерности, гиперразмерности, топологии, тесселяции, маршрутизации, текстуре и приоритету. Лабиринт может использовать по одному элементу из каждого класса в любом сочетании.
Читать дальше →
Total votes 82: ↑82 and ↓0 +82
Comments 13

Трехмерный движок на формулах Excel для чайников

Reading time 9 min
Views 69K


В этой статье я расскажу, как мне удалось портировать алгоритм рендера трехмерных сцен на формулы Excel (без макросов).

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

Также я сделал небольшое веб-приложение, где можно потренироваться в создании формул для произвольных фигур и сгенерировать свой файл Excel.

Осторожно: 19 картинок и 3 анимации под катом.
Читать дальше →
Total votes 211: ↑209 and ↓2 +207
Comments 54

Ещё один способ определения качества воздуха на Arduino — с передачей данных в сеть

Reading time 6 min
Views 70K
Меня зовут Евгений, и я — веб разработчик. Уже есть десятки постов о различных метеостанциях на ардуино, но мне хотелось написать о том, что в 2016 году можно быстро, легко и без знания электротехники собрать полезный датчик, претендующий на IoT, который легко может работать с вашей инфраструктурой, написанной на чём угодно.
Да, я хочу в 2016 год
Total votes 21: ↑21 and ↓0 +21
Comments 99

Производительность PHP: планируем, профилируем, оптимизируем

Reading time 16 min
Views 40K


Привет, Хабр! Два года назад мы писали о том, как перешли на PHP 7.0 и сэкономили миллион долларов. На нашем профиле нагрузки новая версия оказалась в два раза более эффективной по использованию CPU: ту нагрузку, которую раньше у нас обслуживали ~600 серверов, после перехода начали обслуживать ~300. В результате на протяжении двух лет у нас был запас мощностей.

Но Badoo растёт. Количество активных пользователей постоянно увеличивается. Мы совершенствуемся и развиваем нашу функциональность, благодаря чему пользователи проводят в приложении всё больше времени. А это, в свою очередь, отражается на количестве запросов, которое за два года увеличилось в 2—2,5 раза.

Мы оказались в ситуации, когда двукратный выигрыш в производительности нивелировался более чем двукратным ростом запросов, и мы опять стали приближаться к пределам нашего кластера. В ядре PHP снова ожидаются полезные оптимизации (JIT, предзагрузка), но они запланированы только на PHP 7.4, а эта версия выйдет не раньше, чем через год. Поэтому трюк с переходом сейчас повторить не удастся — нужно оптимизировать сам код приложения.

Под катом я расскажу, как мы подходим к таким задачам, какими пользуемся инструментами, и приведу примеры оптимизаций, идей и подходов, которые мы применяем и которые помогли нам в своё время.
Читать дальше →
Total votes 105: ↑105 and ↓0 +105
Comments 58

Трагикомедия в NaN актах: как мы cделали игру на JS и выпустили ее в Steam

Reading time 13 min
Views 28K
“Эка невидаль”, — скажете вы, — “В топ-100 вашей игры нет, так что нещитово”. Тоже правда. Зато за год разработки Protolife мы поднакопили какой-никакой опыт, которым можем поделиться с потенциальными будущими игроделами. Ветераны индустрии, боюсь, ничего интересного для себя не найдут. Но, может быть, хоть повеселитесь от души.


Что за игра-то? И кто “мы”?


Мы — это команда из трех человек (GRaAL, A333, icxon), волею судеб названная Volcanic Giraffe без какого либо умысла. Работали долгое время вместе, несколько раз втроем участвовали в Ludum Dare (соревнования по написанию игр за выходные), и однажды решившие довести до релиза одну из наших поделок под названием Protolife.

Если коротко: это необычная tower defense, где надо бегать героем-курсором и выстраивать оборону из блоков против постоянно растущей красной биомассы.
Остальное под катом - осторожно, тяжелые пиксельартные картинки
Total votes 95: ↑91 and ↓4 +87
Comments 51

Статический анализ PHP-кода на примере PHPStan, Phan и Psalm

Reading time 20 min
Views 63K


Компания Badoo существует уже более 12 лет. У нас очень много PHP-кода (миллионы строк) и наверняка даже сохранились строки, написанные 12 лет назад. У нас есть код, написанный ещё во времена PHP 4 и PHP 5. Мы выкладываем код два раза в день, и каждая выкладка содержит примерно 10—20 задач. Помимо этого, программисты могут выкладывать срочные патчи — небольшие изменения. И в день таких патчей у нас набирается пара десятков. В общем, наш код меняется очень активно.

Мы постоянно ищем возможности как для ускорения разработки, так и для повышения качества кода. И вот однажды мы решили внедрить статический анализ кода. Что из этого получилось, читайте под катом.
Читать дальше →
Total votes 77: ↑76 and ↓1 +75
Comments 51

Текстовый редактор — это вам не высшая математика, тут думать надо

Reading time 17 min
Views 95K
Современные текстовые редакторы умеют не только бибикать и не давать выйти из программы. Оказывается, внутри них кипит очень сложный метаболизм. Хотите узнать, какие ухищрения предпринимаются для быстрого пересчета координат, как к тексту приделываются стили, фолдинги и софтврапы и как это всё обновляется, при чем тут функциональные структуры данных и очереди с приоритетами, а также как обманывать пользователя — добро пожаловать под кат!



В основе статьи — доклад Алексея Кудрявцева с Joker 2017. Алексей уже лет 10 пишет Intellij IDEA в JetBrains. Под катом вы найдете видео и текстовую расшифровку доклада.
Читать дальше →
Total votes 208: ↑206 and ↓2 +204
Comments 189

PostgreSQL: как и почему пухнет WAL

Reading time 4 min
Views 22K

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


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


Сегодня будем смотреть как и почему может распухать Write-Ahead Log (WAL) постгреса. Как обычно — примеры из реальной жизни в картинках.

Читать дальше →
Total votes 42: ↑42 and ↓0 +42
Comments 4

Как подготовиться к собеседованию в Google и не пройти его. Дважды

Reading time 15 min
Views 129K


Заголовок статьи звучит как epic fail, но на самом деле все не так однозначно. Да и в общем и целом эта история закончилась весьма позитивно, хоть и не в Google. Но это уже тема для другой статьи. В этой же статье я расскажу о трех вещах: каким образом проходил мой процесс подготовки, каким образом проходили интервью в Google и почему же на мой взгляд все не так однозначно, как может показаться.
Кому интересно, прошу под кат.
Total votes 178: ↑174 and ↓4 +170
Comments 457

fx — алтернатива jq для обработки JSON из командной строки

Reading time 2 min
Views 8.8K


jq — самая популярная утилита для обработки JSON из командной строки, написана на C и имеет свой собственный синтаксис для работы с JSON.


Однако, обрабатывать JSON в командной строке не нужно очень часто, а когда потребность возникает, приходится мучиться с незнакомым языком программирования.


Так и появилась идея написать fx с простым и понятным синтаксисом, который никогда не забудешь. А какой язык программирования знают все? Правильно — JavaScript.

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

Зарплаты ИТ-специалистов на конец 2017 года: отчёт сервиса зарплат «Моего круга»

Reading time 3 min
Views 235K


Представляем первый отчет сервиса зарплат «Моего круга». Мы запустили сервис в конце ноября 2017 с целью регулярного мониторинга зарплат в ИТ-индустрии. Зарплаты оставляют сами специалисты, мы их собираем и предоставляем в агрегированной и анонимной форме всем в открытый доступ.

В течение декабря мы собрали порядка 7500 зарплат, и сегодня можем показать, как выглядели зарплаты на конец 2017 года. Пройдём по всем основным ИТ-специальностям и более глубоко разберём зарплаты разработчиков программного обеспечения. Посмотрим, как различаются зарплаты в этой сфере деятельности по городам, квалификациям и языкам программирования. В заключение, покажем зарплаты десяти компаний, по которым пользователи оставили достаточно данных.

Будет много диаграмм, все они подготовлены с помощью сервиса plot.ly. В публикации диаграммы будут картинками, при желании можно посмотреть на них в интерактивном режиме. Более детальную информацию по зарплатам любой желающий может получить непосредственно на сервисе зарплат «Моего круга», поигравшись с его фильтром.
Читать дальше →
Total votes 155: ↑153 and ↓2 +151
Comments 93

Превращаем докладчиков в спикеров #2: разбор выступления Артема Данилова, Авито

Reading time 8 min
Views 9.8K
Мы начинаем профессиональный «разбор полетов» выступлений с HighLoad++, который поможет многим будущим и нынешним спикерам поучиться на чужих примерах. В прошлой публикации я рассказывал о том, что именно я буду делать и зачем все это нужно. Завершать каждый материал будет небольшой рассказ о важности какого-то определенного параметра в выступлении.



Первым под прицел попал Артем Данилов из Авито и его доклад про хранилище данных. В конце же вас ждет экскурс про дикцию.
Итак, поехали
Total votes 44: ↑41 and ↓3 +38
Comments 20

Переходим с Disqus на комментарии Github

Reading time 5 min
Views 42K
Какое-то время я хотел убрать комментарии из своего блога; в основном, потому что здесь вообще мало комментариев, да и не хочется возиться с лишними «тормозами» от Disqus. Посмотрев на время загрузки Disqus, я был потрясён тем, что приходится терпеть посетителям сайта по моей вине (кроме тех, кто использует блокировщики вроде Privacy Badger и uBlock Origin.

Эта статья заточена под Hugo, но код легко адаптируется для любого сайта.

Что не так с Disqus?


Вот как выглядит типичный журнал запросов с включенным Disqus.


А вот лог после отключения Disqus.


ЧЕГО!?
Читать дальше →
Total votes 114: ↑112 and ↓2 +110
Comments 73

Свайная суперсила

Reading time 6 min
Views 41K
Более 600 тысяч тонн на площади фундамента в 5700 квадратных метров… Вряд ли вы найдете в мире аналоги параметров петербургского «Лахта центра». Держать супертолл и супертяж помогают сваи. Непростые. Они не опираются, они – висят.

image

Стало не по себе? Не спешите обходить участок строительства по радиусу в 500 метров. Разберемся, как можно получить надёжную опору от того, что находится в «висячем» положении.
Читать дальше →
Total votes 110: ↑105 and ↓5 +100
Comments 194

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity