Pull to refresh
0
0

Fullstack Developer

Send message

Простое объяснение алгоритмов поиска пути и A*

Reading time13 min
Views66K
image

Часть 1. Общий алгоритм поиска


Введение


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

Цель данной статьи — объяснить поиск пути в целом и A* в частности очень понятным и доступным образом, положив таким образом конец распространённому заблуждению о том, что эта тема сложна. При правильном объяснении всё достаточно просто.

Учтите, что в статье мы будем рассматривать поиск пути для игр; в отличие от более академических статей, мы опустим такие алгоритмы поиска, как поиск в глубину (Depth-First) или поиск в ширину (Breadth-First). Вместо этого мы постараемся как можно быстрее дойти от нуля до A*.
Читать дальше →
Total votes 29: ↑29 and ↓0+29
Comments11

Введение в алгоритм A*

Reading time10 min
Views181K
При разработке игр нам часто нужно находить пути из одной точки в другую. Мы не просто стремимся найти кратчайшее расстояние, нам также нужно учесть и длительность движения. Передвигайте звёздочку (начальную точку) и крестик (конечную точку), чтобы увидеть кратчайший путь. [Прим. пер.: в статьях этого автора всегда много интерактивных вставок, рекомендую сходить в оригинал статьи.]


Для поиска этого пути можно использовать алгоритм поиска по графу, который применим, если карта представляет собой граф. A* часто используется в качестве алгоритма поиска по графу. Поиск в ширину — это простейший из алгоритмов поиска по графу, поэтому давайте начнём с него и постепенно перейдём к A*.
Total votes 70: ↑69 and ↓1+68
Comments20

На корпусе вашего компьютера напряжение 110 Вольт

Reading time4 min
Views163K


— У меня ноутбук бьется током, чувствую легкое покалывание. Не знаешь в чем дело?

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

Короткий ответ: корпус вашего компьютера находится под напряжением ~110V (половина от напряжения в сети), но из-за маленькой силы тока вас не ударяет слишком сильно.

Для инженеров-электриков это банальность: по тем же причинам в домах со старой проводкой может бить током стиральная машина, когда касаешься ванны, корпус стационарного компьютера и т.д. Эта тема многократно поднималась в интернете, но до сих пор большинство людей не знает о причинах этого явления. Ситуация осложняется тем, что конструкция блока питания в европейских макбуках не позволяет избавиться от этого явления!
Total votes 129: ↑120 and ↓9+160
Comments631

Ограничение скорости обработки запросов, или как не устроить DDoS-атаку на своего клиента

Reading time10 min
Views33K

Иногда при разработке highload-продукта возникает ситуация, когда надо обработать не максимально большое количество запросов, а наоборот — ограничить количество запросов в единицу времени. В нашем случае это количество отправляемых push-уведомлений конечным пользователям. Подробнее об алгоритмах rate limiting, их плюсах и минусах — под катом.


Читать дальше →
Total votes 16: ↑16 and ↓0+16
Comments4

Как искусственный интеллект играет в «Змейку»

Reading time6 min
Views13K

Рассказываем о нейросети, которая применяет глубокое обучение и обучение с подкреплением, чтобы играть в Змейку. Код на Github, разбор ошибок, демонстрации игры искусственного интеллекта и эксперименты над ним вы найдете под катом.
Добро пожаловать!
Total votes 15: ↑15 and ↓0+15
Comments4

Думал, что добьюсь большего к своим 35

Reading time3 min
Views115K


Уже два часа дня? Ничего за сегодня не сделал. Проснулся, потянулся, видел 6 голосовых сообщений — проигнорировал, принял душ, съел 3 вафли и улегся с мыслями, что мне 35, а я так и не выучил французский. Стоп, я не был в душе, это было вчера.


Попытался купить себе новые конверсы (кроссовки), но не смог выбрать между серым и обсидиановым, оба цвета мне не нравятся. Затем я отвлекся на лайфхаки на Medium, залип там минут на 90. Мне 35! Я думал, что уже давным-давно куплю себе крутую обувь и снимусь в фильме. Мой друг Сэнджей и то снялся в инди фильме. Все время рассказывает об этом.

Читать дальше →
Total votes 133: ↑98 and ↓35+96
Comments666

Погружение в Charles Proxy

Reading time11 min
Views72K

Привет, Хабр! Меня зовут Настя, я работаю в команде тестирования мобильных приложений компании FunСorp.


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


Если повезло, то кандидат знает о необходимости проверки сетевого взаимодействия, но, за редким исключением, его знания ограничены Rewrite или Breakpoints.


Сегодня я расскажу, с какими задачами сталкиваются тестировщики мобильных приложений в FunСorp и как в этом помогает Charles Proxy.

Читать дальше →
Total votes 30: ↑30 and ↓0+30
Comments21

AngularJS 1.x – перевод курса от CodeSchool

Reading time12 min
Views75K
Данная публикация является переводом оригинального курса CoodSchool с небольшими дополнениями, которые показались мне уместными в данном контексте. Публикация рассчитана на тех, кто только начинает знакомится с Angular.

Введение


AngularJS — популярная JavaScript библиотека, предназначенная, главным образом, для создания одностраничных веб-приложений с динамически обновляемым содержимым. Библиотека была написана словацким программистом Мишкой Хевери, который, работая в Google, получил от своего шефа задание выучить JavaScript. Он решил, что лучший способ изучить язык — это создать на его основе собственный фреймворк. Angular (звучит как «Ангула» и дословно переводится как «Угловатый») использует концепцию разделения данных и их представления, известную как MVC (M — model (данные), V — view (представление), С — controller (контролер, управляющая прослойка между ними обеспечивающая логику работы приложения).
Читать дальше →
Total votes 50: ↑44 and ↓6+38
Comments20

Основы BASH. Часть 1

Reading time5 min
Views1.4M
Безусловно, все те кто общается с ОС Linux хоть раз да имели дело(во всяком случае слышали точно) с командной оболочкой BASH. Но BASH не только командная оболочка, это еще и превосходный скриптовый язык программирования.
Цель этой статьи — познакомить поближе юзеров с bash, рассказать про синтаксис, основные приемы и фишки языка, для того чтобы даже обычный пользователь смог быстренько написать простой скрипт для выполнения ежедневной(-недельной, -месячной) рутинной работы или, скажем, «на коленке» наваять скриптик для бэкапа директории.
Читать дальше →
Total votes 146: ↑135 and ↓11+124
Comments114

Клиент-серверная архитектура в картинках

Reading time10 min
Views570K


Знакомая картинка? А вы ведь постоянно сталкиваетесь с этой архитектурой — когда покупаете билет в кино онлайн, бронируете путевку на море или записываетесь к врачу.

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

Об этом я и расскажу в статье. Объясню на пальцах, с примерами и забавными картинками =) Если вы больше любите видео-формат, можно посмотреть мой ролик на youtube на ту же тему.

Содержание


Читать дальше →
Total votes 24: ↑21 and ↓3+24
Comments31

10 отличных Github репозиториев, которые должен знать каждый веб-разработчик

Reading time3 min
Views97K

Кроме огромных репозиториев с источниками для подготовки к интервью, здесь много чего интересного


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


image


А я его перевел, т.к. показалось, что пост многим будет интересен. Перевод очень вольный: я опустил нерелевантные промо-ссылки и гипер эмоциональные похвалы автора оригинала, чтобы оставить только суть. Еще, обновил цифры, чтобы информация была более актуальной к моменту публикации этого перевода. Итак, перейдем к списку.
Читать дальше →
Total votes 63: ↑56 and ↓7+62
Comments8

Человек, создавший «худшую в мире видеоигру»

Reading time7 min
Views112K

Видеоигру Говарда Скотта Уоршоу обвиняли в том, что она единолично обвалила целый многомиллиардный рынок. Но реальная история намного сложнее.

25 апреля 2014 года на свалку в Аламогордо (Нью-Мексико) приехал бульдозер, раскопавший настоящее сокровище — гору тридцатилетних видеоигр для Atari.

Пока на пустынных равнинах бушевала пылевая буря, небольшая группка отважных нердов столпилась у ограждения, чтобы исследовать находку. Они надеялись хотя бы одним глазком увидеть E.T. the Extra-Terrestrial — игру настолько плохую, что её обвинили в обрушении в 1983 году видеоигровой индустрии объёмом в 3,2 миллиарда долларов.

Для создателя игры Говарда Скотта Уоршоу это стало раскопками его прошлого.

Один из самых востребованных разработчиков игр, обладавший прикосновением Мидаса, создатель хитов остался в истории как человек, написавший E.T. — «худшую» видеоигру в истории.

Но история Уоршоу, как и история Atari — это притча о корпоративной жадности и опасности ситуации, когда количество становится важнее, чем качество.
Читать дальше →
Total votes 107: ↑106 and ↓1+138
Comments68

Почему от 3D болит голова / Часть 8 Расфокус и будущее 3D

Reading time22 min
Views19K

S3D: No pain IS gain



Когда-то давно в далекой галактике Geektimes был опубликован цикл статей о том, почему 3D-фильмы так сложно снимать без головной боли у зрителей. Как это часто бывает, цикл безвременно оборвался из-за недостатка времени у автора. При том, что тонны материалов остались лежать (иногда даже аккуратно подобранные).

В декабре этого года исполнится 10 лет волне съемок 3D-фильмов, поднятой триумфальным успехом фильма «Аватар»‎, впервые в истории собравшего более $2 миллиардов в прокате. С тех пор, по мнению журналистов, «3D умер»‎. По факту это, конечно, не так. По сравнению с ситуацией 13-летней давности количество фильмов, выпускаемых в 3D, выросло на порядок, а количество залов, где можно показывать 3D, выросло в 400 раз (!) и продолжает быстро расти с CAGR порядка 12–14%. Всем бы технологиям такую «смерть»‎. Тем не менее проблемы у 3D-фильмов, очевидно, есть. И мы уже много лет занимаемся их анализом и исправлением.

Хотелось бы понять, что с этими фильмами происходит. Почему «3D мертв»‎, а кинотеатры с 3D активно строят? 

Один уважаемый российский стереограф неоднократно публично называл нас патологоанатомами за то, как мы детально разбирали проблемы фильмов. Звучит обидно, особенно учитывая, что у нас активно разрабатываются и средства «реанимации»‎. С другой стороны еще Авиценна, помнится, говаривал пациентам: «Существуют я, ты и болезнь. Чью сторону ты примешь, тот и победит»‎. Поэтому не будем идти против мудрости веков. Если пациент сказал в морг, значит в морг! Медицина тут бессильна.


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


Кому интересно, добро пожаловать под кат
Total votes 56: ↑56 and ↓0+56
Comments63

Кто он — убийца JavaScript?

Reading time8 min
Views60K
Некоторые языки программирования — это языки, которые любят разработчики. Некоторые языки программирования лишь терпят. Для многих программистов JavaScript попадает в последнюю категорию, являясь языком, который нужно понимать каждому, кто пишет клиентские части веб-проектов, но таким, который никто не обязан любить.

Десять лет назад очевидно было то, что JavaScript имеет все шансы, так сказать, править миром. За эту честь сражались и другие платформы — такие, как Java, Flash и Silverlight. Всем этим трём платформам нужны, для работы в браузерах, специальные плагины. Все три меняют HTML-подход к формированию интерфейсов на что-то другое. Это позволило им уйти далеко вперёд от JavaScript в плане возможностей. Например — они умели проигрывать видео, выводить анимацию, рисовать что-то на экране. Всё это другие платформы поддерживали задолго до появления стандартного тега <video>, механизмов CSS-анимации и HTML-элемента canvas. Но всё это стало причиной их краха. Так, когда в мире начался бум мобильного интернета, и когда это было учтено в HTML, другие платформы оказались не у дел.



Ирония есть и в том, что происходит сейчас. В то самое время, когда JavaScript царствует в мире веб-разработки, появился один проект, вроде бы не особенно масштабный, который, когда-нибудь в будущем, способен стать убийцей JavaScript. То, о чём мы тут говорим, началось с экспериментальной технологии asm.js. Как это может выглядеть? Прежде чем ответить на этот вопрос — давайте немного притормозим и поговорим о современном положении дел.
Читать дальше →
Total votes 75: ↑59 and ↓16+43
Comments288

REST API Best Practices

Reading time7 min
Views426K
Привет, Хабр! Представляю вашему вниманию перевод статьи "REST API Best Practices" автора Krishna Srinivasan.

REST становится общим подходом для представления сервисов окружающему миру. Причина его популярности заключается в его простоте, легкости использования, доступе через HTTP и другие. Существует неправильное представление о том, что все данные, доступные через сеть, считаются REST, но это не так. В этой статье я собираюсь объяснить вам некоторые best practices, которые вы должны всегда помнить при реализации собственного REST приложения. Я бы хотел услышать ваш опыт в REST приложениях, поэтому если вы знаете best practies, которые не упомянуты в этой статье, пожалуйста, поделитесь с нами в комментариях.

Disclamer: все best practies основаны на моем личном опыте. Если вы имеете другое мнение, не стесняйтесь отправлять его мне на email, и мы обсудим его.

Здесь представлен список best practices, которые будут обсуждаться в этой статье:

1. Конечные точки в URL – имя существительное, не глагол
2. Множественное число
3. Документация
4. Версия вашего приложения
5. Пагинация
6. Использование SSL
7. HTTP методы
8. Эффективное использование кодов ответов HTTP
Читать далее
Total votes 55: ↑48 and ↓7+41
Comments195

Lua за 15 минут

Reading time1 min
Views328K
image

Для всех, кто хотел разобраться с Lua (скриптовый язык для разработки игр и не только, список), но никак не находил времени, Tyler Neylon приготовил небольшой подарок:

http://tylerneylon.com/a/learn-lua/

Посвящается всем, кто предпочитает один большой список из говорящих самих за себя сниппетов кода (с небольшими комментариями к 95% case'ов) длинным мануалам с огромной иерархией. Очень удобно для тех, кто уже умеет программировать и просто хотел бы разобраться с новым для себя языком. Весь «мега-сниппет» на английском, но примеры несложно читаются.

P.S. А для всего остального есть Hyperpolyglot.
Total votes 75: ↑71 and ↓4+67
Comments49

Основы Linux от основателя Gentoo. Часть 1 (2/4): Управление файлами и директориями

Reading time7 min
Views115K
Продолжение перевода первой части руководства. Начало тут.

В данном отрывке рассмотрены команды работы с файловой системой и файлами, такие как ls, mkdir, touch, mv, cp, затронуто использование echo и cat. Рассказано про иноды файловой системы.
Читать дальше →
Total votes 92: ↑78 and ↓14+64
Comments44

Основы Linux от основателя Gentoo. Часть 1 (1/4): BASH, основы навигации

Reading time6 min
Views245K

Предисловие


Об этом руководстве


Добро пожаловать в первую из четырех частей обучающего руководства по основам Linux, разработанного чтобы подготовить вас к сдаче экзамена Linux Professional Institute 101. В нем вы познакомитесь с bash (стандартной оболочкой командного интерпретатора в Linux), узнаете о большинстве возможностей таких стандартных команд Linux, как ls, cp и mv, разберетесь в инодах, жестких и символьных ссылках, и многом другом. К концу этого руководства у вас сформируется некий фундамент знаний, и вы будете готовы к изучению основ администрирования Linux. К концу всего курса (8 частей), у вас будет достаточно навыков, чтобы стать системным администратором Linux и пройти сертификацию LPIC Level 1 от Linux Professional Institute, если конечно захотите.



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


Читать дальше →
Total votes 150: ↑130 and ↓20+110
Comments50

Экономия на спичках или восстановление данных из скрежещущего HDD Seagate ST3000NC002-1DY166

Reading time9 min
Views35K
Медицинские учреждения с государственной формой собственности постоянно испытывают недостаток финансирования из бюджета. Поэтому план закупок дорогостоящего медицинского оборудования составляется таким образом, чтобы исключить все возможные дополнительные расходы. Но в погоне за экономией из вида упускаются вполне очевидные любому системному администратору вещи.

Так случилось в одной из больниц, где рентгеновский кабинет оснащен современным оборудованием, и стоимость одного только рентгеновского аппарата превышала 100 000$. Важный момент, что при реконструкции кабинета в расчет бралась только закупка непосредственно самого оборудования. Всякие «излишества» в виде ПК врача-рентгенолога и реализации системы хранения данных пациентов в этот расчет не вошли, и больнице было предложено за собственные средства приобретать все остальное, что необходимо для работы кабинета.


рис. 1

Собственных средств больницы хватило лишь на приобретение ПК для врача-рентгенолога с единственным жестким диском Seagate Constellation CS ST3000NC002-1DY166 емкостью 3 Тб. Первоначально планировалось это использовать как временное решение, а далее, когда появятся «свободные деньги», реализовать планы по созданию системы резервного копирования.

Но планам не суждено было сбыться. Денег больнице по-прежнему катастрофически не хватало, и была масса более приоритетных задач. В итоге, временное решение стало постоянным. Шли дни, на жестком диске накапливались данные пациентов, причем в некоторых случаях от этих данных могла зависеть человеческая жизнь.
Читать дальше →
Total votes 59: ↑58 and ↓1+57
Comments95

Усатый стрелок из двадцати трёх полигонов

Reading time20 min
Views30K

А давайте отвлечёмся немного и напишем игру в google play? И не такую огромную и неподъёмную фигню, про которую я обычно пишу статьи, а что-нибудь простое и милое сердцу?


На самом деле, всё очень просто: я наконец-то зарегистрировал аккаунт разработчика и очень хочу его опробовать. На момент написания этих строк у меня нет ни одного написанного класса и ни одного нарисованного пикселя. По сути, эта статья — самый настоящий devlog.

Total votes 87: ↑86 and ↓1+85
Comments26
1

Information

Rating
Does not participate
Location
Кривой Рог, Днепропетровская обл., Украина
Date of birth
Registered
Activity