Как стать автором
Обновить
@MZjrread⁠-⁠only

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

Отправить сообщение

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

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

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

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

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

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

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

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

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

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

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

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

Читать далее
Всего голосов 80: ↑79 и ↓1+106
Комментарии71

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Читать далее
Всего голосов 21: ↑13 и ↓8+18
Комментарии6

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

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

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

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

Читать далее
Всего голосов 44: ↑41 и ↓3+55
Комментарии36

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

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

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

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

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

Читать далее
Всего голосов 18: ↑8 и ↓10+3
Комментарии60

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

Время на прочтение19 мин
Количество просмотров358K
Просматривая недавно архив своих фото, я обнаружил фотографии со своей прошлой работы, которые было бы интересно посмотреть многим. Фотографии сделаны для себя мобильным телефоном Samsung Galaxy S в разное время, некоторые смазаны, но, увы — что есть и других уже не будет.

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Время на прочтение9 мин
Количество просмотров33K
В 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();
        }
    });
}

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

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

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

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

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

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

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

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

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

Водород

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

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

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

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

Читать далее
Всего голосов 229: ↑225 и ↓4+285
Комментарии206

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

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

Многие из вас слышали про мировой успех облачных компаний и таких компаний как 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.

Читать далее
Всего голосов 8: ↑6 и ↓2+5
Комментарии7

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

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


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

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

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

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

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


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

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

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

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

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

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

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

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

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

Читать далее
Всего голосов 66: ↑61 и ↓5+68
Комментарии109

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность