Pull to refresh
@MZjrread⁠-⁠only

User

Send message

Проектирование непредсказуемого интеллекта в играх. Часть 2 — интеллект толпы

Reading time9 min
Views13K

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

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

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

Читать далее
Total votes 23: ↑23 and ↓0+23
Comments5

Книга «Глубокое обучение с подкреплением: теория и практика на языке Python»

Reading time9 min
Views6.6K
image Привет, Хаброжители! Глубокое обучение с подкреплением (глубокое RL) сочетает в себе два подхода к машинному обучению. В ходе такого обучения виртуальные агенты учатся решать последовательные задачи о принятии решений. За последнее десятилетие было много неординарных достижений в этой области — от однопользовательских и многопользовательских игр, таких как го и видеоигры Atari и Dota 2, до робототехники. Эта книга — введение в глубокое обучение с подкреплением, уникально комбинирующее теорию и практику. Авторы начинают повествование с базовых сведений, затем подробно объясняют теорию алгоритмов глубокого RL, демонстрируют их реализации на примере программной библиотеки SLM Lab и напоследок описывают практические аспекты использования глубокого RL. Руководство идеально подойдет как для студентов, изучающих компьютерные науки, так и для разработчиков программного обеспечения, которые знакомы с основными принципами машинного обучения и знают Python.
Читать дальше →
Total votes 3: ↑3 and ↓0+3
Comments1

Запускаем мелкосерийное производство электроники. Личный опыт

Reading time6 min
Views44K

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

Чтобы статья получилась максимально практичной в ней будут приводиться ссылки на поставщиков оборудования, которое используется нами. Не сочтите за рекламу.

Читать далее
Total votes 80: ↑79 and ↓1+106
Comments71

Тестируем быстродействие трех библиотек Python

Reading time3 min
Views8.7K

Передо мной стояла задача выбрать библиотеку для расчета на Python, использующего операции над матрицами. Я выбрал и протестировал несколько вариантов, как использующих видеокарту (GPU), так и работающие только на процессоре.

Использовал три библиотеки: Numpy, Pytorch и Numba.

Читать далее
Total votes 14: ↑12 and ↓2+14
Comments1

Война или мир: используем MATLAB и Python вместе

Reading time8 min
Views13K

Если вы студент, работаете в академической сфере или на производстве, вы, вероятно, сталкивались с ситуациями, когда вам нужно было объединить работу с более чем одного языка программирования. Это обычное дело в инженерных и научных приложениях, особенно когда они связаны с несколькими командами и нуждаются в общем оборудовании. В этом материале хочу поделиться некоторыми полезными советами, которые помогут эффективно использовать MATLAB и Python вместе.

Читать далее
Total votes 5: ↑5 and ↓0+5
Comments2

Как я написал алгоритм сортировки, который быстрее std::sort. Часть 1

Reading time14 min
Views22K

Прим. Wunder Fund: ну, вы наверное, и сами догадываетесь, как мы любим быстрые алгоритмы и оптимизации. Если вы тоже такое любите — вы знаете, что делать)

В наши дни сказать, что изобрёл алгоритм сортировки, который на 30% быстрее того, что считают эталонным, это значит — сделать довольно смелое заявление. Я, к сожалению, вынужден сделать ещё более смелое заявление. Дело в том, что я создал алгоритм сортировки, который, для многих вариантов входных данных, вдвое быстрее std::sort. И, за исключением сортировки специально созданных входных последовательностей, на которых алгоритм упирается в свой худший случай, он всегда быстрее std::sort. (А когда появляются данные, приводящие к худшему случаю алгоритма, я эту ситуацию детектирую и автоматически перехожу на std::sort).

Почему я сказал: «…к сожалению, вынужден…»? Вероятно из-за того, что мне, скорее всего, предстоит нелёгкое дело убеждения читателя в том, что я действительно увеличил скорость сортировки в два раза. Поэтому материал, который я начинаю писать, вполне может получиться достаточно длинным. Но весь мой код открыт — это значит, что вы можете попробовать мои наработки на данных, характерных для вашей сферы деятельности. Поэтому я могу убедить вас в достоинствах моего алгоритма с помощью массы аргументов и результатов измерений. А ещё вы можете просто попробовать алгоритм самостоятельно.

Учитывая то, о чём я писал в моём прошлом материале, это, конечно, вариант поразрядной сортировки (radix sort). То есть — его временная сложность ниже, чем O(n log n). Вот два основных направления, по которым я усовершенствовал базовый алгоритм:

Читать далее
Total votes 21: ↑13 and ↓8+18
Comments6

Я написал более быстрый алгоритм сортировки

Reading time34 min
Views45K

Может показаться откровенной наглостью в наши дни утверждать, что Вы изобрели алгоритм сортировки, который на 30% быстрее, чем лучший существующий. Увы, я должен сделать гораздо более наглое заявление: я написал алгоритм сортировки, который в два раза быстрее, чем std :: sort для многих входных данных. И за исключением случаев, когда я специально конструирую воспроизведение нахудших для него ситуаций, алгоритм никогда не бывает медленнее, чем std :: sort (и даже когда попадаются эти худшие случаи, они обнаруживаются и происходит автоматический возврат к std :: sort).

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

Читать далее
Total votes 44: ↑41 and ↓3+55
Comments36

Девиации и разветвление личности: как лечить?

Reading time18 min
Views5.8K

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

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

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

Читать далее
Total votes 18: ↑8 and ↓10+3
Comments60

Замена чипсета на материнской плате

Reading time19 min
Views357K
Просматривая недавно архив своих фото, я обнаружил фотографии со своей прошлой работы, которые было бы интересно посмотреть многим. Фотографии сделаны для себя мобильным телефоном Samsung Galaxy S в разное время, некоторые смазаны, но, увы — что есть и других уже не будет.

Прежде чем увлечься разработкой под Android, я пару лет ремонтировал компьютеры и ноутбуки. Ниже я рассказу об одной из сложнейшей операции по ремонту матплат и видеокарт — замене чипсета, далее «чип». А в конце статьи немного о том, почему ноутбуки ломаются. Думаю, что стоит предупредить — «не пытайтесь повторить это дома».
Читать дальше →
Total votes 152: ↑148 and ↓4+144
Comments133

Пошаговый запуск программы в Linux x86, или как добраться до main()?

Reading time18 min
Views24K


Статья предназначена для тех, кто хочет понять процесс загрузки программ в Linux. В частности, здесь пойдет речь о динамической загрузке файлов ELF x86. На основе изложенной информации вы сможете лучше понять, как устранять проблемы, возникающие в программе еще до запуска main.
Читать дальше →
Total votes 39: ↑38 and ↓1+58
Comments10

CoroOS: концепт операционной системы для микроконтролеров на корутинах С++20

Reading time18 min
Views11K

Здравствуйте! Меня зовут Александр, и я работаю программистом микроконтроллеров.

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

И ваш автор не исключение.

Как по мне - дело не то чтобы запредельно сложное, сколько кропотливое. Если у вас, как и у меня, увлечение и(или) карьера крутится вокруг Arm Cortex-M серии, то вооружаемся стволами (раз, два и три) и выдвигаемся за Джеффом. Но, написав и запустив ядро своей "best of the best" оси около года назад, я вскоре забросил разработку, ибо как я ни креативил, вместо Сокола Тысячелетия у меня получался крепенький, но банальный и скучный велосипед.

А ведь хотелось оригинальности и бесстыдного выпендрёжа.

И тут в 20-й стандарт плюсов завезли корутины.

Читать далее
Total votes 24: ↑21 and ↓3+28
Comments28

Корутины в C++20 — что это и как с ними работать

Reading time20 min
Views34K

Прим. Wunder Fund: В статье описаны базовые подходы к работе с корутинами в 20м стандарте С++, на паре практических примеров разобраны шаблоны классов для промисов и фьючеров. По нашему скромному мнению, можно было бы реализовать и поизящнее. Приходите к нам работать, если имеете сильные мнения о корутинах хе-хе.

Возникает такое ощущение, что тема реализации корутин в C++20 окутана серьёзной неопределённостью. Полагаю, это так из-за того, что в проекте технической спецификации C++20 сказано, что работа над механизмами корутин всё ещё ведётся, в результате в данный момент нельзя ожидать полной поддержки этих механизмов компиляторами и стандартной библиотекой.Множество проблем, вероятно, возникает из-за отсутствия официальной документации по работе с корутинами. Нам дали синтаксическую поддержку корутин в C++ (co_yield и co_return), но не всё то, что я счёл бы признаками их полной библиотечной поддержки. В стандартной библиотеке имеются хуки и базовый функционал поддержки корутин, но нам приходится самостоятельно встраивать всё это в наши собственные классы. Я ожидаю, что полная поддержка корутин-генераторов появится в C++23.

Если вы — Python- или C#-разработчик и ожидаете увидеть в C++ простую механику работы с корутинами, то вас ждёт разочарование, так как фреймворк общего назначения C++20 недоработан. Учитывая это, можно отметить, что в интернете имеется множество публикаций, в состав кода, обсуждаемого в которых, входит шаблонный класс, поддерживающий корутины-генераторы. В этом материале вы найдёте шаблон корутины, применимый на практике, а также примеры кода. Всё это предваряется общими сведениями о корутинах.

Читать далее
Total votes 26: ↑26 and ↓0+26
Comments11

Готовимся к С++20. Coroutines TS на реальном примере

Reading time9 min
Views33K
В C++20 вот-вот появится возможность работать с корутинами из коробки. Нам в Яндекс.Такси эта тема близка и интересна (под собственные нужды мы разрабатываем асинхронный фреймворк). Поэтому сегодня мы на реальном примере покажем читателям Хабра, как можно работать с C++ stackless корутинами.

В качестве примера возьмём что-то простое: без работы с асинхронными сетевыми интерфейсами, асинхронными таймерами, состоящее из одной функции. Например, попробуем осознать и переписать вот такую «лапшу» из колбеков:


void FuncToDealWith() {
    InCurrentThread();

    writerQueue.PushTask([=]() {
        InWriterThread1();

        const auto finally = [=]() {
            InWriterThread2();
            ShutdownAll();
        };

        if (NeedNetwork()) {
            networkQueue.PushTask([=](){
                auto v = InNetworkThread();
                if (v) {
                    UIQueue.PushTask([=](){
                        InUIThread();
                        writerQueue.PushTask(finally);
                    });
                } else {
                    writerQueue.PushTask(finally);
                }
            });
        } else {
            finally();
        }
    });
}

Читать дальше →
Total votes 32: ↑31 and ↓1+30
Comments61

Хроника спортивного недосыпа. Субъективный опыт и bedtime procrastination

Reading time8 min
Views11K

Привет, Хабр!

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

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

Прокрастинация в ущерб сну — это давно замеченная вредная привычка, которая попала в поле зрения медиков около 2014 года. Специалисты из Утрехтского университета, впервые формализовавшие эту проблему, характеризуют ее как отказ от отхода ко сну, когда на это нет видимых причин. После 2014 года эта вредная привычка все чаще трактуется как медицинское и поведенческое расстройство, но по-настоящему остро проблема сонной прокрастинации встала после локдауна 2020 года. Отход ко сну, как и режим работы, тесно связан с режимом дня, а именно в период вынужденного карантина режим дня оказался критически подорван у людей, не привыкших к удаленке.

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

Читать далее
Total votes 32: ↑29 and ↓3+34
Comments16

Водород

Reading time14 min
Views53K

По революционным праздникам в СССР проводились торжественные демонстрации. Для взрослых участие нередко было обязательным. Ну а детям -- им, что ни праздник, всё в радость. Торжественная обстановка, можно помаршировать со взрослыми в стройных колоннах, покричать "ура", поразмахивать красными флажками и надувными шариками...

Шарики. Кажется, именно с них-то всё и началось.

Согласно советским открыткам, демонстрация должна была выглядеть как-то так:

Читать далее
Total votes 229: ↑225 and ↓4+285
Comments206

Введение в Облачные Вычисления для Всех от Инженера Microsoft, Ex-Amazon

Reading time10 min
Views11K

Многие из вас слышали про мировой успех облачных компаний и таких компаний как Amazon Web Services, Microsoft Azure и Google Cloud Platform. Сейчас мы видим, как отечественное облако активно развивается – Яндекс Облака, Mail.ru облако и Сбербанк тоже работает в этом направлении.

Лично у меня нет опыта работы с отечественным облаками и пока они еще достаточно молодые, но, я очень надеюсь, что они справятся с задачей и у нас появятся конкурентно способные облачные провайдеры.

Сам я занимаюсь задачами аналитики и инжиниринга данных, то есть работаю с buzz words – Big Data, Data Platform, Lakehouse, Data Lake, Data Science, Machine Learning (ML), AI и т. п., в крупных международных компаниях – Amazon, Microsoft, Xbox.  Про все эти дела я уже 3 года успешно пишу в своем телеграмм канале Инжиниринг Данных, где уже больше 10 тысяч подписчиков.

Я работаю с облаками с 2014 года, с 2016 по 2020 в Амазоне (почти 5 лет), где принимал участие в знаменитом проекте Rolling Stone по миграции on-premise инфраструктуры для аналитики в облако AWS.

Читать далее
Total votes 8: ↑6 and ↓2+5
Comments7

Vulkan. Руководство разработчика. Пул дескрипторов и сеты дескрипторов

Reading time9 min
Views3.1K


Всем привет! Для тех, кто со мной не знаком, я — технический переводчик в IT-компании CG Tribe в Ижевске. Я занимаюсь переводом руководства Vulkan Tutorial на русский язык и выкладываю переводы на Хабр.

Я остановилась на разделе Uniform buffers и сегодня хочу поделиться переводом заключительной статьи раздела, которая называется Descriptor pool and sets.

Содержание
Читать дальше →
Total votes 3: ↑3 and ↓0+3
Comments1

Распознаём позу прямо в браузере в реальном времени

Reading time9 min
Views7.1K


Сегодня показываем и рассказываем, как прямо в браузере при помощи ИИ распознать сложную позу человека. Это пригодится, например, в разработке приложений для физических упражнений. Ранее с этой задачей не справлялись даже лучшие детекторы. За подробностями приглащаем под кат, пока у нас начинается флагманский курс Data Science.
Читать дальше →
Total votes 8: ↑7 and ↓1+6
Comments3

Простой шутер от третьего лица на Unreal Engine. Часть 1

Reading time7 min
Views21K

Эта статья писалась для новичков Unreal Engine, если вы профи, то вам будет скучно. Для нормального прочтения, осмысления и понимания происходящего ниже необходимо знать что такое переменная и их основные типы, что такое метод, булеву логику и самые базовые принципы программирования. Спасибо. Приступим.

Читать далее
Total votes 29: ↑29 and ↓0+29
Comments6

Микросервисы. Не всё то золото, что хайп

Reading time7 min
Views31K

Привет, меня зовут Владимир Кустиков, я — архитектор решений в e-Legion. И сегодня я хотел бы рассказать вам про микросервисы.

Наверное, я где-то неправ. А возможно, что у меня просто подгорело. Но в какой-то момент после запроса рассказать о том, в каких проектах я успешно применял микросервисы, мое терпение лопнуло. Ни в каких, понятно?! И это мой персональный повод для гордости. Если вам вдруг стало интересно, что еще может рассказать этот странный безумец с пылающим взором, то у меня есть хорошая новость — ниже о микросервисах будет адаптированный под хаброформат рассказ с картинками. А если нет — смело закрывайте эту статью.

Читать далее
Total votes 66: ↑61 and ↓5+68
Comments109

Information

Rating
Does not participate
Registered
Activity