Метка «Программирование» - 42

Не так давно я загорелся идеей написать свою MIDI-клавиатуру. Позже к ней был прикручен гитарный гриф, она научилась распознавать аккорды и воспроизводить мелодии. Собственно об этом и будет этот пост.
Если вам интересно как программно воспроизводить звук через MIDI-синтезаторы, алгоритм распознавания гитарных аккордов, или же вы просто любите играть на гитаре или клавишных инструментах прошу под кат.
Читать полностью »

Возможно это стресс от моего текущего проекта, и то, что я здесь написал всего лишь крик моей души. Но, увы наболело.
Просто я заметил что некоторые разработчики (на мой взгляд, их очень большое количество) любят злоупотреблять SQL-сервером.
Возможно это из-за того что написать сложный sql-запрос все-таки проще чем грамотно спроектировать систему, которая будет организовывать гармоничное взаимодействие между объектами, и будет это делать быстро.
Читать полностью »

На самом деле правильнее было бы назвать «машинное зрение», но так я думаю понятнее будет, если кто не знает то это не охранное видеонаблюдение, а распознавание или измерение чего либо c помощью камер. Существует много задач и областей, где компьютерное зрение было бы очень востребовано и могло бы использоваться повсеместно, но на практике оно используется очень редко.

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

Задача вычисления площади может показаться довольно сложной. Если подходить строго математически, то да, например, посчитать площадь квадрата или прямоугольника очень просто умножаем длину на ширину и готово, если треугольника чуть сложнее, а вот других криволинейных фигур может быть очень сложно.
Мой алгоритм подсчета площади настолько прост, что его можно реализовать без всяких библиотек и т.п. буквально в десять строк кода, по сути это простейший детектор движения только с калибровкой камеры. Камера жестко фиксируется над местом, куда подается продукция, делается снимок фона (без продукции), например, белый стол, цвета пикселей загоняются в массив. Далее на стол подается или ложится образец, например какая-то коробка. Далее делается второй снимок с коробкой, цвета второго кадра пишутся в другой массив и затем сравниваются значения цветов, количество отличающихся пикселей суммируется. Затем этот образец измеряется рулеткой, вводится в программу его площадь и вычисляется площадь одного пикселя, т.е. площадь делится на число пикселей. Вот и вся калибровка. Далее достаточно подавать любую продукцию, любого размера и формы, определятся число изменившихся пикселей, и умножается на площадь одного пикселя, найденного при калибровке, надеюсь все понятно. Причем продукция может двигаться, например, на конвейере, площадь будет измеряться правильно, нужно только захват Читать полностью »

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

Статья предназначена для демонстрации самой идеи как вообще реализовать многозадачность практически на любом языке программирования.
Так сказать Proof of concept.
Как говорится всё новое это хорошо забытое старое.
Читать полностью »

Я рад приветствовать вас, дорогие читатели.

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

Скажу сразу — я не задаюсь целью мотивировать или призывать к каким-либо правилам эффективной работы, т.к. все слишком индивидуально, чтобы давать подобные советы, но я постараюсь обратить ваше внимание на некоторые, на мой взгляд, интересные детали, лежащие в основе принципов проектирования, которые заметил и осмыслил на собственном опыте. Отмечу также, что статья будет актуальна не только IT-шникам, но и абсолютно всем категориям читателей.
Читать полностью »

Одна из неприятных проблем — при внесении даже простых изменений приходится править код в нескольких местах. Например, если в класс добавляется поле данных, его нужно добавить в объявление класса, инициализировать в конструкторе(ах), а если переопределены операторы копирования или сравнения — то и в них тоже. Это отнимает время и приводит к ошибкам, если забыть про одно из мест (особенно неприятно забыть инициализировать, такие ошибки могут жить годами, и вызывать неожиданные, трудновоспроизводимые проблемы).
Читать полностью »

image
У нас в гостях mobile software engineer компании «Yota» Максим Великанов. Затронули тему кроссплатформенной разработки. Опыт сервиса Yota Play. Какие существуют подходы в разработке подобных приложений и какой путь выбрать. Говорим про релиз Windows 8 и про что, что хорошего и не очень будет в новом Office 2013. Опыт работы на OS X. Ужосы остен глазами нового пользователя и крутизна встроенного сервера в php 5.4.

В выпуске:

  • Особенности национальной кроссплатформенной разработки.
  • Релиз Windows 8. Ждем 26 октября. Microsoft показала новый Office 2013.
  • Встроенный в php 5.4 веб-сервер и личный опыт переезда на OS X.

Слушать в Itunes
слушать на podfm
скачать файл(68.0 Мб)
Читать полностью »

Язык C++ для всех пользовательских классов и структур генерирует по умолчанию копирующий конструктор и копирующий оператор присваивания. Тем самым для важного ряда случаев программист освобождается от написания указанных функций вручную. Например, операторы по умолчанию хорошо работают для структур, которые содержат данные. При этом данные могут храниться как в простых типах, так и в сложных контейнерах, таких как std::vector или std::string.

В свете этого удобно было бы иметь и операторы сравнения структур == и != по умолчанию, однако компилятор C++, в соответствии со стандартом, не генерирует их.
Читать полностью »

Данный пост навеян статьей "Я, пользователь!", которая вызвала много споров, и была весьма прохладно встречена сообществом. Обсуждение в комментариях показало, что мысль, которую Автор высказал довольно жестко и агрессивно, была воспринята как призыв вернуться к ветряным мельницам. Однако, на мой взгляд, проблема затронутая автором, гораздо глубже.
Читать полностью »

Предлагаю вам сыграть в одну игру. Давайте на минуту поплюем на фитилек вашего IQ и погрузимся во тьму воображения. Смотрите зорче! Представьте, что случился какой-то перестык во времени и вас отбросило на десятилетия назад. У вас в голове нехилая база знаний: фреймворки, библиотеки,… Вы уже не хрен собачий, а — программист, разработчик, ДИВЕЛОПЕР, вершина пирамиды цивилизации! За ваши знания готовы платить несметные сокровища! Причем все правители мира! Вы настоящее явление, полубог, путь к истинному просветлению! И вот все собрались и ждут от вас откровений, готовы внимать знаниям, учиться и так далее. На вас смотрят тысячи глаз. Весь мир замер вокруг в ожидании чуда, в предвкушении света. А теперь внимание!
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js