Search
Write a publication
Pull to refresh
3
0

Разработчик(в основном на С#)

Send message

Бот для аркады. Часть №2: подключаем OpenCV

Reading time12 min
Views42K

Введение

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

Для обработки изображений возьмем широкораспространенную библиотеку OpenCV. Она неродная (unmanaged) для .net, поэтому подключим ее через wrapper OpenCvSharp.

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


Затрагиваемые темы: выбор библиотеки для обработки изображений, выбор wrapper-а для работы с OpenCV, основные функции OpenCV, выделение движущихся объектов, цветовая модель HSV.


Читать дальше →

BitTorrent Tracker на C#

Reading time6 min
Views26K
Долгое время я искал в сети пример простейшего tracker-а на C#, но, к сожалению, мои поиски успехом не увенчались. Поэтому я решил попробовать себя в написании tracker-а на C#, а получив более-менее рабочую версию — поделиться опытом ее создания со всеми. А заодно и получить как можно больше советов по ее усовершенствованию.

Но давайте начнем с начала…
Читать дальше →

Выбор платформозависимой библиотеки в runtime

Reading time4 min
Views9K
Суть вопроса

В большинстве случаев .NET-приложения являются платформонезависимыми. Мы ожидаем, что наше приложение будет одинаково выполняться как в 32-хразрядной ОС, так и 64-хразрядной.

Так обычно и происходит до тех пор, пока нам не понадобится использовать внешние платформозависимые библиотеки, например неуправляемые. Если такая библиотека существует в вариантах и для x86, и для x64, то это может принести нам определенную головную боль. Будем исходить из того, что ограничивать наше приложение, например, только 32-хразрядным процессом не в наших правилах.

Возможно, нам придется поддерживать вдвое больше конфигураций проекта. В этом случае при отладке придется переключать конфигурации, ведь разработческий веб-сервер Cassini существует только в x86 варианте, а ReSharper может запускать тесты и в 64-хразрядном процессе. Кроме того, придется выпускать два дистрибутива и предоставлять пользователю при скачивании с сайта ох какой нелегкий выбор. Поэтому разумным решением выглядит выбор подходящей для работы библиотеки уже в runtime в зависимости от того, в каком процессе (32-х или 64-хразрядном) код выполняется. При этом сами проекты остаются AnyCPU.

В нашем приложении необходимо подключаться к к Oracle Database, для чего используются библиотеки Oracle Instant Client и Oracle Data Provider for .NET.
Читать дальше →

HOLO — The Music Amalgamation System

Reading time9 min
Views22K
HOLO — приставка от греческого ὅλος, «весь».
Введение

Не без волнения рад представить вашему вниманию свою разработку, позволяющую объединять музыкальную библиотеку в единое целое с целью поиска «похожей» музыки.
Ещё несколько лет назад, на пике самостоятельного изучения MATLAB, мне захотелось создать программу, которая позволяла бы по заданному образцу музыки находить другие композиции «в том же духе». Куча уважительных причин заставляли откладывать реализацию всё дальше и дальше, но в какой-то момент дело сдвинулось с мёртвой точки. В результате, слегка изменив основу для разработки, первая версия программы была сделана.
Длинная статья

Создание минидампов в проектах на C# 4.0, разрабатываемых в VS 2010

Reading time4 min
Views11K
Для создания минидампов в управляемой среде используются возможности библиотеки DbgHelp.dll. Рассмотрим применение ее функционала на примере готового проекта на WinForms.

Читать дальше →

Визуализация музыки в XXI веке: от Animusic до музыкальной шкатулки

Reading time3 min
Views18K
Музыкальный автомат-шарикоподъёмник «Млечный путь»
Шведский музыкант-изобретатель создал инженерное произведение искусства, музыкальный автомат-оркестр, подобный сцене Pipe Dream из визуализации Animusic.

Компьютерные музыкальные визуализации видел каждый — летающие геометрические фигуры в музыкальных плеерах или танцующие трёхмерные девушки-вокалоиды. Подобные визуализации реагируют лишь на интенсивность звуковых частот и слабо раскрывают суть играющей музыки.

Визуализаторы из Анимьюзик (Animusic; по-русски: живая музыка) в начале 2000-х поступили иначе — они нарисовали для каждой из мелодии выразительные «механические пианино», трёхмерные сцены, где на схематичных инструментах играют механические пальцы, и связали движения сцены с воспроизведением MIDI-файла, содержащего мелодию для этих инструментов.

Продолжение с видео

Как я сделал LED-панель для мониторинга серверов, а заодно и цветомузыку для вечеринок

Reading time4 min
Views19K


Занимаюсь администрированием серверов и поддержкой веб-сервисов в качестве фрилансера. С ростом количества «подопечных» на простой мониторинг начало требоваться неприлично много времени. Захотелось сделать для себя полноценную информационную панель. Что из этого получилось читайте под катом.
Читать дальше →

Левитрон на Arduino

Reading time2 min
Views96K
Добрый вечер! В этой публикации я расскажу о своей маленькой самоделке, задумал которую я достаточно давно.

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

Естественно, захотел собрать себе такую игрушку, но, поискав в интернете, к своему удивлению обнаружил(по крайней мере на тот момент), что большинство схем были исключительно аналоговыми. Так как в аналоговой технике я понимаю мало, решил «изобрести» левитрон заново. Для экспериментов под рукой оказался Arduino Uno. Заказал в Китае линейный датчик Холла (что такое эффект Холла), а именно UGN3503UA, насобирал некоторое количество старых трансформаторов для намотки пробных катушек и приступил к экспериментам.

Вот что из этого получилось:


Читать дальше →

Упаковка, компрессия и защита сборок

Reading time7 min
Views11K
последняя редакция статьи доступна на сайте makeloft.xyz

Материалы этой статьи описывают механизмы компоновки, компрессии, динамической загрузки, а также пути элементарной защиты .NET-сборок стандартными средствами среды разработки Visual Studio. Однако, возможно, нижесказанное будет в некоторой степени справедливо и для других программных платформ.

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

Но, обладая определёнными знаниями, можно выполнить весь процесс самостоятельно с полным контролем на каждом шаге и возможностью отладки уже упакованных сборок…

image
Читать дальше →

Расширенные инструкции процессора в .NET или «C# Intrinsics»

Reading time6 min
Views17K
В шахматных программах широко используются «битовые доски» (битборды 1, 2) для представления фигур на доске. А так же и для других игр на той же доске 8×8, и даже для карточных игр. С битбордами часто проводят различные операции, например, найти первый установленный бит или посчитать количество установленных битов. Для этих операций придумано много «хитрых» алгоритмов, а на современных процессорах некоторые из этих операций доступны в расширенном наборе инструкций. Например, popcnt, доступный в SSE4.2 ABM. Также есть пара инструкций bsf/bsr, которые доступны уже давно, но из JIT-компилятора к ним нет никакого доступа.
Конечно, всё серьёзные шахматные программы пишут на C++, но для прототипирования каких-нибудь алгоритмов хочется использовать C#, потому что я с ним лучше знаком и у меня меньше шансов выстрелить себе в ногу. Но производительность тоже не хочется терять просто так, в C/C++ интересующие нас инструкции доступны так называемые встроенные функции. Я попробовал сделать подобное решение и для C#.
Читать далее

Организация backup-сервера. Linux, ZFS и rsync

Reading time5 min
Views66K
TL;DR:
Статья о настройке бекапа линуксовых серверов. В качестве хранилища используется раздел ZFS с включенными дедубликацией и компрессией. Ежедневно делаются снапшоты, которые сохраняются в течение недели (7 штук). Ежемесячные снапшоты хранятся в течение года (еще 12 штук). В качестве транспорта выступает rsync: на сервере он запущен демоном, на клиентах он запускается из crontab.
Читать дальше →

Отладка NDK и JNI под Android

Reading time2 min
Views17K
В данной статье речь пойдет об отладке кода под Android.
За последнее время произошло много подвижек в этом направление. Появился Android Studio, google добавило поддержку отладки нативного кода в eclipse.
Если необходимо отладить только Java, то Android Studio покроет ваши потребности полностью.
Если необходима отладка с++ или Java кода то ADT Bundle со встроенным Eclipse опять же поможет решить вашу проблему.
Если вкратце
  • Дать понять Eclipse что проект содержит нативную часть(Add native support)
  • Убедиться что в команде сборки стоит NDK_DEBUG=1
  • Нажать Debug as Android Native Application

на некоторых девайсах реобходимо еще и поставить в манифесте debuggable в true
Но если необходимо отлаживать jni код, где попеременно работают c++ и Java функции, то вам этот способ не подойдет, потому-что в зависимости от выбранного способа отладки(Android Native Application, Android Application) работает отладка либо с++ либо java кода.
О том как отлаживать смешанный код пойдет речь далее в статье.
Читать дальше →

Взрывы в Box2D

Reading time4 min
Views23K
Мой телеграм канал: https://t.me/winc0de.
В этой статье мы рассмотрим несколько видов взрывов в физическом движке Box2D.
Симуляция взрыва сводится к нахождению тел, которые находятся в радиусе действия взрывной волны и применении силы к ним, чтобы отбросить их от центра взрыва.

Мы расмотрим три вида взрывов разной сложности:
  • Нахождение тел в радиусе взрыва
  • Raycast – нахождения тел в радиусе лучей
  • Частицы – распространение многих маленьких тел от эпицентра взрыва

Читать дальше →

HDR vs LDR, реализация HDR Rendering

Reading time8 min
Views89K


Как я и обещал – публикую вторую статью о некоторых моментах разработки игр в трех измерениях. Сегодня расскажу об одной технике, которая используется почти любом проекте ААА-класса. Имя ей — HDR Rendering. Если интересно — добро пожаловать под хабракат.
Читать дальше →

Локализация приложений для китайского рынка

Reading time5 min
Views41K
Собственно, ни для кого не секрет, что рынок КНР (а еще и Гонконга и Тайваня) — мечта для любого игропроизводителя. Учитывая азарт китайцев, их внушаемость и распространенность мобильных телефонов среди населения (а также количество абонентов), удачный вход на китайский рынок может принести огромную прибыль.

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


Читать дальше →

Lua API++

Reading time19 min
Views22K
Здравствуйте, коллеги.
Хочу познакомить вас с моим небольшим проектом, который, надеюсь, сможет пригодиться и вам.

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

Не могу сказать, что я недоволен Lua API: это отличный набор функций, удобный и простой в использовании. Интеграция языка в своё приложение и добавление собственных расширений не вызвали трудностей, никаких «подводных камней» тоже не возникло. Но всё же при использовании этого API, ориентированного на Си, меня не оставляла мысль, что этот процесс мог бы быть и поудобнее. Первая попытка сделать удобную объектно-ориентированную обёртку потерпела неудачу: имеющимися средствами мне не удалось создать что-то заслуживающее существования, всё выходило чересчур громоздко и неочевидно.

А потом появился C++11, который снял все мешавшие мне препятствия (точнее говоря — добавил то, чего не хватало), и головоломка постепенно начала складываться. Второй заход оказался удачным, и в результате я сумел создать достаточно легковесную библиотеку-обёртку с естественным синтаксисом большинства операций. Эта библиотека, которую я назвал Lua API++, призвана служить удобной заменой для Lua API. Этой статья, написанная по мотивам моего выступления на Lua Workshop, поможет познакомиться с основными понятиями Lua API++ и предоставляемыми ей возможностями.
Читать дальше →

Запускаем .NET MicroFramework на STM32F4Discovery (перевод)

Reading time4 min
Views35K
image
Несколько месяцев назад STMicroelectronics бесплатно раздавали отладочную плату STM32F4 Discovery. Я стал одним из тех, кому повезло получить ее бесплатно. Последний семестр я использовал плату для моего проекта (realtime и embedded OS) с применением Keil. У меня так-же есть отладочная плата Netduino, которая является моим фаворитом среди моих отладочных плат потому что я могу использовать Visual Studio и C#. Я знаю об ограничениях управляемого кода, связанных с расходами ресурсов на CLR, но моя программа не является программой реального времени. В последнюю неделю я случайно наткнулся на сайт netmf4stm32.codeplex.com и был приятно удивлен тем, что .NET MicroFramework был портирован на отладочные платы STM32F4. Так почему-бы не попробовать? Одновременно я описывал весь процесс, разбавляя текст скриншотами. Источником этой работы стал пост netmf4stm32.codeplex.com/discussions/400293. Благодарю LouisCPro и членов netmf4stm32.codeplex.com/team/view. Все это отняло у меня не более 2 часов (включая установку Visual C# Express 2010). Начнем…
Читать дальше →

Установка Asp.Net на Linux (nginx+mono+xsp)

Reading time7 min
Views40K
В этой статье я покажу, как настроить простую связку nginx + Asp.Net. Под простой надо понимать, что какие-то специфические особенности проектов, разграничение прав пользователей, высокие нагрузки и т.п. нужно настраивать отдельно (особенно это касается Asp.Net). Статья написана по просьбе хабраюзера mace.

В свое время озадачившись проблемой хостинга маленьких Asp.Net-проектов я осознал одну простую вещь: покупать лицензию на Windows Server, а потом и арендовывать достаточно мощный выделенный/виртуальный сервер для каких-то домашних поделок/экспериментов — крайне неразумно. Решение как-то сразу всплыло в моей лысой голове: есть же Mono! Непродолжительный поиск по mono-project.com вывел на FAQ об Asp.Net. Фактически, документация показала мне три возможных варианта:
Читать дальше →

Поднимаем SOC: ARM + FPGA

Reading time14 min
Views109K


На днях ко мне в руки попала EBV SoCrates Evaluation Board. В двух словах — это плата с SoC от фирмы Altera, на борту которой есть двухъядерный ARM и FPGA Cyclone V.

ARM и FPGA на одном чипе — это должно быть очень интересно! Но для начала всё это добро нужно «поднять».
Об этом процессе я и поведаю в данной статье.

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

А в качестве маленького бонуса измерим пропускную способность между CPU и FPGA.
Добро пожаловать

Очередная «умная» розетка своими руками. Часть 1

Reading time3 min
Views186K
Да, да, да. Еще одна. Понимаю, всем надоело. Но очень уж хотелось сделать самому, свою собственную «умную» розетку, с лото и курсистками. Встраиваемую (в доме — скрытая проводка). С управлением через WiFi (локально) и Интернет (глобально). С получением текущего статуса (в перспективе — с информацией о потреблении). С подключением нескольких розеток в одном блоке (до четырех). С датчиками температуры, освещенности и присутствия. С видеокамерой, в конце концов!

Первая часть — просто проверяем общую работоспособность схемы. По сути — некий аналог WeMo Switch, только встраиваемый в стандартный подрозетник и потому не привязанный к какому-то определенному дизайну (чтобы вписаться в любой уже существующий интерьер).

Итак, чего хочется? Хочется управлять независимо каждой из четырех розеток (у меня дома в одной из комнат розетки объединены в блоки по два двухрозеточных модуля вплотную друг к другу, в двух стандартных пластиковых подрозетниках соответственно). К одному из таких блоков подключены все агрегаты (освещение, насос фильтра, нагреватель, компрессор) аквариума с красивым парчовым сомиком, вот ими и будем управлять. Сомик вот такой, если что (картинка для привлечения внимания):

image
Читать дальше →

Information

Rating
4,540-th
Registered
Activity