Dagaz: Забегая вперёд

Автор: admin от 8-06-2017, 15:40, посмотрело: 280

Dagaz: Забегая вперёд Сто тринадцать раз в секунду оно тянется, и достает все дальше. Если бы пришло подтверждение, сигнал — оно могло бы остановиться, и оно не останавливается. Оно тянется и находит всё новые способы. Оно импровизирует, оно изучает. Оно не сознает, что делает…

Джеймс Кори «Пожар Сиболы»


Вообще говоря, «сильный» игровой AI не является моим приоритетом. Глупо соревноваться со специализированными игровыми движками, занимаясь универсальным и имея лишь однопоточный javascript, встроенный в браузер, в качестве вычислительного ресурса. Кроме того, есть целый ряд игр, в которых потребности в сложном AI просто не возникает. Вот здесь, например, весь AI сводится к поиску кратчайшего пути, а в этой игре с задачей прекрасно справляется рандом. Увы, такие игры скорее исключение чем правило. Гораздо чаще, приходится изрядно потрудиться, чтобы программа делала ходы, которые не казались бы попросту идиотскими.

Категория: Программирование / Веб-разработка

 

Генерируем произвольные последовательности на выводах платы Raspberry Pi

Автор: admin от 8-06-2017, 01:05, посмотрело: 543

Генерируем произвольные последовательности на выводах платы Raspberry Pi

Автор: Николай Хабаров, Embedded Expert DataArt, евангелист технологий умного дома.

В этой статье я расскажу, как написать обычное user space-приложение на Python для современного ARM-процессора с ОС Linux для генерирования сложных последовательностей импульсов на выводах платы. Суть идеи — использовать DMA-модуль процессора для копирования из предварительно подготовленного буфера в памяти в GPIO с высокой точностью по времени.

Когда речь заходит о необходимости сгенерировать сложную последовательность импульсов, например, для шаговых двигателей, обычно используют старые добрые простенькие микроконтроллеры с установленной специальной операционной системой реального времени или вообще без операционной системы. Реализация при этом, в лучшем случае, написана на C++. Сейчас процессоры шагнули далеко вперед и имеют массу преимуществ: производительность, возможность использования операционной системы Linux со всей инфраструктурой и ПО, а также высокоуровневых языков программирования, таких как Python. И все же современные микроконтроллеры для генерирования сложных последовательностей на выводах GPIO, как правило, не используют.

Я реализовал генерацию импульсов для управления шаговыми двигателями проекта PyCNC — проекта контроллера машин с ЧПУ, станков, 3D-принтеров, полностью написанного на Python и запускаемого на современном ARM-процессоре на плате Raspberry Pi.

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

Категория: Веб-разработка / Linux

 

Иное применение блокчейнов: Смарт-контракты

Автор: admin от 6-06-2017, 18:40, посмотрело: 2 287

В одном из наших первых постов мы рассказывали, что блокчейн представляет собой децентрализованную систему, работа которой поддерживается множеством компьютеров, объединенных в сеть. Блокчейн, хотя и обладает определенного рода недостатками (ограниченной скоростью работы, по сравнению с централизованными базами данных, а также высоким энергопотреблением — в случае блокчейнов на основе доказательства работы), все равно остается безопасным и надежным решением. Поэтому к этой технологии присматриваются разного рода финансовые институты, банки и даже гиганты IT-индустрии (IBM, Cisco и Intel).

В 1994 году криптограф Ник Сабо (Nick Szabo) предложил использовать компьютеры и криптографию для автоматического выполнения и аудита контрактов. Позднее это привело к появлению так называемых умных контрактов, или просто смарт-контрактов. Такие контракты оформляются в виде кода, а затем сохраняются в системе, где за их выполнением следит сеть компьютеров, управляющая блокчейном. О них мы и поговорим в нашем сегодняшнем материале.

Иное применение блокчейнов: Смарт-контракты

Категория: Программирование / Веб-разработка

 

Как не дать алгоритму продать банк

Автор: admin от 6-06-2017, 18:05, посмотрело: 346

Привет, Хабр! Наша команда в Москве занимается разработкой внутренней алгоритмической торговой платформы. Сегодня нам бы хотелось рассказать о механизмах, которые мы добавляем в нашу архитектуру для защиты от возможных сбоев.

Категория: Программирование / Веб-разработка

 

Поиск по дереву методом Монте-Карло и крестики-нолики

Автор: admin от 2-06-2017, 20:45, посмотрело: 610

Так вышло, что для получение автомата по программированию бедным первокурам задали одну интересную задачу: написать программу, которая ищет по дереву методом Монте-Карло.

Категория: Программирование

 

Сравнение Эльбрус-4С и Эльбрус-8С в нескольких задачах машинного зрения

Автор: admin от 31-05-2017, 18:55, посмотрело: 626

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


Сравнение Эльбрус-4С и Эльбрус-8С в нескольких задачах машинного зрения

Эльбрус-8С — новый 8-ядерный процессор МЦСТ с VLIW-архитектурой. Мы тестировали инженерный образец с частотой 1.3 ГГц. Возможно, в серийном выпуске она еще возрастет.

Категория: Программирование

 

Russian Code Cup — по следам отборочного раунда

Автор: admin от 26-05-2017, 21:05, посмотрело: 421

Russian Code Cup — по следам отборочного раунда


14 мая прошёл отборочный раунд Russian Code Cup 2017. По традиции выкладываем разбор задач и подводим итоги.


A. Маленькие числа
B. Новая клавиатура
C. Складывание фигуры
D. Остроугольные треугольники
E. Объединение массивов
F. Два поддерева


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

Категория: Программирование

 

Russian Code Cup — по следам отборочного раунда

Автор: admin от 26-05-2017, 21:05, посмотрело: 421

Russian Code Cup — по следам отборочного раунда


14 мая прошёл отборочный раунд Russian Code Cup 2017. По традиции выкладываем разбор задач и подводим итоги.


A. Маленькие числа
B. Новая клавиатура
C. Складывание фигуры
D. Остроугольные треугольники
E. Объединение массивов
F. Два поддерева


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

Категория: Программирование

 

Разработка шахматной программы

Автор: admin от 26-05-2017, 12:55, посмотрело: 558

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

Категория: Программирование / Веб-разработка

 

Эксперименты с malloc и нейронными сетями

Автор: admin от 26-05-2017, 12:30, посмотрело: 343

Эксперименты с malloc и нейронными сетями

Больше года назад, когда я работал антиспамщиком в Mail.Ru Group, на меня накатило, и я написал про эксперименты с malloc. В то время я в свое удовольствие помогал проводить семинары по АКОСу на ФИВТе МФТИ, и шла тема про аллокацию памяти. Тема большая и очень интересная, при этом охватывает как низкий уровень ядра, так и вполне себе алгоритмоемкие структуры. Во всех учебниках написано, что одна из основных проблем динамического распределения памяти — это ее непредсказуемость. Как говорится, знал бы прикуп — жил бы в Сочи. Если бы оракул заранее рассказал весь план по которому будет выделяться и освобождаться память, то можно было составить оптимальную стратегию, минимизирующую фрагментацию кучи, пиковое потребление памяти и т.д. Отсюда пошла возня с ручными аллокаторами. В процессе раздумий я натолкнулся на отсутствие инструментов логирования malloc() и free(). Пришлось их написать! Как раз про это была статья (а ещe я изучал macOS). Были запланированы две части, однако жизнь круто повернулась и стало не до malloc(). Итак, пора восстановить справедливость и реализовать обещанное: ударить глубоким обучением по предсказанию работы с кучей.


Внутри:



  • Совершенствуем libtracemalloc, перехватчик malloc().

  • Строим LSTM на Keras — глубокую рекуррентную сеть.

  • Обучаем модель на примере работы реального приложения (vcmi/vcmi — а вы думали, причем здесь Heroes III?).

  • Удивляемся неожиданно хорошим результатам.

  • Фантазируем про практическое применение технологии.

  • Исходники.


Интересно? Добро пожаловать под кат.

Категория: Программирование / Системное администрирование