Search
Write a publication
Pull to refresh
2
0
Садовников Антон Петрович @Siddthartha

Developer

Send message

Альтернатива Arduino от Texas Instruments за $4.30

Reading time2 min
Views77K
Как известно, конкуренция среди производителей микроконтроллеров весьма высока. Каждый старается завлечь потребителей низкой ценой и расширенным функционалом своих камней.

Компания Texas Instruments, для продвижения в массы своих контроллеров MSP430, предлагает дешевую ($4.30) отладочную плату LaunchPad (MSP-EXP430G2). Внешне она напоминает Arduino, но, естественно, с ней не совместима. В комплекте с платой щедрые техасцы кладут сразу два своих микроконтроллера серии Value Line в DIP-корпусах: msp430g2553 и msp430g2452.

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

Мел-кепстральные коэффициенты (MFCC) и распознавание речи

Reading time4 min
Views90K
Недавно я наткнулся на интересную статью, опубликованную rgen3, в которой описан DTW-алгоритм распознавания речи. В общих чертах, это сравнение речевых последовательностей с применением динамического программирования.

Заинтересовавшись темой, я попробовал применить этот алгоритм на практике, но на этом пути меня поджидало некоторое количество граблей. Прежде всего, что именно нужно сравнивать? Непосредственно звуковые сигналы во временной области — долго и не очень эффективно. Спектрограммы — уже быстрее, но не намного эффективнее. Поиски наиболее рационального представления привели меня к MFCC или Мел-частотным кепстральным коэффициентам, которые часто используются в качестве характеристики речевых сигналов. Здесь я попытаюсь объяснить, что они из себя представляют.
Читать дальше →

По колено в PDF. PHP парсер с плюшками

Reading time9 min
Views12K
Так получилось, что с месяц назад передо мной выросла совершенно неожиданная задача: сконвертировать PDF в html по имеющемуся шаблону. В том числе необходимо было разбивать все на страницы и выделять в них параграфы. Да и много еще чего. И все бы ничего, и обошелся бы я какой-нибудь левой библиотечкой, но кое-какие специфичные штучки-финтеплюшки, так необходимые мне, в библиотеках не нашлись. И это было печально…
Читать дальше →

Mailcheck.js — проверка емейла на опечатки

Reading time1 min
Views3.8K

jQuery плагин Mailcheck (github) — клиентсайд проверка емейла на опечатки по заранее определённму списку (к примеру, наиболее популярных почтовых сервисов).

Демка | сорсы демки (jsfiddle)


По заявлению (en) авторов (Kicksend), сей плагин увеличил кол-во подтверждений емейла при регистрации на 50%.

Под катом инструкция для кириллических доменов и алгоритмическая задачка

Метод Виолы-Джонса (Viola-Jones) как основа для распознавания лиц

Reading time15 min
Views186K
Хотя метод был разработан и представлен в 2001 году Полом Виолой и Майклом Джонсом [1, 2], он до сих пор на момент написания моего поста является основополагающим для поиска объектов на изображении в реальном времени [2]. По следам топика хабраюзера Indalo о данном методе, я попытался сам написать программу, которая распознает эмоцию на моём лице, но, к сожалению, не увидел на Хабре недостающей теории и описания работы некоторых алгоритмов, кроме указания их названий. Я решил собрать всё воедино, в одном месте. Сразу скажу, что свою программу успешно написал по данным алгоритмам. Как получилось рассказать о них ниже, решать Вам, уважаемые Хабрачитатели!
Добро пожаловать под кат!

Почти линейное увеличение производительности bzip2 на многопроцессорных системах

Reading time2 min
Views18K
В Linux часто используется сжатие с помощью gzip и bzip2. Они оба обеспечивают хорошую плотность сжатия, и удобны в использовании. При этом bzip2 сжимает большинство файлов эффективнее — но, с другой стороны, работает медленнее, чем более традиционные gzip или zip.

Но можно получить эффективность bzip2, при этом существенно увеличив скорость. Речь идёт об утилите pbzip2 — Parallel BZIP2. В обычном случае при использовании bzip2 задействуется только одно процессорное ядро, в то время как на современных системах их может быть 2, 4, или, например, 8.

Pbzip2 может использовать сразу несколько процессорных ядер, что приводит, по заявлению авторов, к почти линейному увеличению производительности. Сжатые файлы, которые создаёт pbzip2, полностью совместимы с bzip2 1.0.2 и более новыми версиями bzip2 (также есть утилита pigz, которая, в свою очередь, является многопоточной реализацией gzip — спасибо altexxx).

Ниже результат тестирования скорости сжатия участка SQL-файла размером 1000M (dd if=dump.sql of=testfile bs=1M count=1000) на компьютере с двумя процессорами Intel Xeon E5520 (4 ядра, 8 потоков, тактовая частота 2,26 ГГц):

Результаты тестирования

Как видно из результатов тестирования, pbzip2, работающий в 4 потока, приблизительно в 3,6 раз быстрее, чем bzip2, работающий в один поток — что действительно является почти линейным увеличением производительности.

При этом pbzip2, работающий в 16 потоков, оказался медленнее, чем pbzip2, использующий 4 потока — вероятно, из-за скорости выполнения операций ввода/вывода. Также смотрите дополнительные тесты в комментариях (спасибо tristan и bliznezz) — в том числе, с использованием tmpfs-раздела в оперативной памяти.

Используется pbzip2 примерно так же, как и просто bzip2, но есть некоторые дополнительные функции, например вывод прогресса выполнения операции в процентах.

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

Создание плагина для WordPress — Видеоуроки

Reading time1 min
Views64K
Видеоуроки по созданию плагина для WordPress

Приветствую вас, уважаемый хабрачеловек!

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

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

Из видеокурса вы узанаете:
  • С чего начать разработку плагина.
  • Что такое хуки, экшены и фильтры.
  • Как сделать страницу настроек плагина в админке блога.
  • Принципы программирования на PHP функционала плагина.


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

ИИ на пяльцах: 5 полезных приемов

Reading time4 min
Views5.5K

Вашему вниманию представляю свой вольный перевод, обещанный г-ном Takezo в его комменте о будущем ИИ в GameDev.

Введение


Прикольно наблюдать за внутриигровой визуализацией, особенно если ты сам ее и создал! Однако, в погоне за этим ярким впечатлением легко забыть, что не нужно визуализировать все подряд.
Ниже вы найдете видео туториал по визуализации геймплея и ИИ, записанный в секретной исследовательской лаборатории AiGameDev.
Читать дальше →

Сохранение flash-video из кэша браузера

Reading time2 min
Views26K
Представьте себе, вот открыли вы в браузере с десяток порно видео-роликов, они тем временем успели скачаться и вдруг оказалось, что браузер нужно закрывать. Что делать?

Сохранить все открытые в данный момент в браузере flv-видеоролики в отдельную директорию можно вот таким простым однострочным скриптом.

copy-cached-flv.sh


#!/bin/bash
 
lsof -n +L1 | grep /tmp/Flash | \
    awk '{line = "/proc/" $2 "/fd/" $4; sub("[^0-9]*$","",line); print line}' | \
    xargs -I '{}' cp -v '{}' -t "$@" --backup=t


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

Фоторама

Reading time4 min
Views55K


Около полугода назад я написал простой джейкверный плагин для галерей на сайтах. Назвал его Фоторамой и выложил в интернет. По клику кроссфейдом показывалась следующая фотография, клик с шифтом мотал назад — вот и всё.

За эти месяцы Фоторама повзрослела, обзавелась сайтом с логотипом и, думаю, теперь можно написать о ней на Хабре.
Читать дальше →

TradingView – онлайн платформа технического анализа на HTML5 и социальная сеть для трейдеров. Стартуем

Reading time3 min
Views81K
Совсем коротко

TradingView.com – это социальная сеть для трейдеров, в основе которой лежит онлайн платформа технического анализа. Клиентская часть (чартинг или графики) реализована на HTML5 и это первый в мире инструмент для трейдеров такого уровня функциональности.

image

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

Пишем онлайн игру на NodeJS, Express и Socket.IO

Reading time18 min
Views44K

Привет %habraname%!





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


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

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

Но сейчас я чувствую в себе силы чтобы уже написать полноценный обучающий и не унылый материал от новичка до реального работающего приложения. Это будет не просто приложение, а онлайн игра с использованием самых популярных инструментов Express и Socket.IO, да-да, мультиплеер, который сможет сделать любой средне-статистический js разработчик.

О том, что такое Express и Socket.IO уже писали много где, поэтому описывать ещё раз я не буду, уделив больше внимания процессу разработки.

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

И так, решено! Начинаю делать крестики-нолики.
Читать дальше →

Как на самом деле работает mod_rewrite. Пособие для продолжающих

Reading time17 min
Views281K
image
Эта статья выросла из идеи продвинутого обучения наших сотрудников технической поддержки работе с mod_rewrite. Практика показала, что после изучения имеющихся в большом количестве учебников на русском языке саппортам хорошо дается решение шаблонных задач, но вот самостоятельное составление правил происходит методом проб и большого количества ошибок. Проблема заключается в том, что для хорошего понимания работы mod_rewrite требуется изучение оригинальной англоязычной документации, после чего — либо дополнительные разъяснения, либо часы экспериментов с RewriteLog.

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

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

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

Почему так происходит?
Читать дальше →

Simile TimeLine — библиотека для отображения событий на шкале времени

Reading time3 min
Views5.1K
Время идет вперед. Годы летят, только успевай считать уж сколько прошло их с тех пор как в школу пошел, как поступил в институт, как женился да дети родились. А ведь помимо своей жизни есть еще много вещей которые изменяются, развиваются, появляются и исчезают с течением времени.

Так вот интересным инструментом для наглядного представления событий и периодов на шкале времени является Simile TimeLine.

Далее я расскажу, что сподвигло меня использовать данный инструмент, и в чем я нахожу его использование крайне удобным. В моем описании будет немного про Астериск, колл-центры и, собственно, javascript-библиотеку Simile TimeLine.
Читать дальше →

How to по деревьям на jQuery

Reading time5 min
Views7.3K
Часто встречаются задачи, в которых требуется отобразить древовидную структуру взаимосвязей каких-либо сущностей. Например, навигация по файловой системе, меню сайта или содержание учебника.
image
Самым простым вариантом отобразить древовидную структуру в HTML являются списки. Но нас интересуют деревья, обладающие динамическими свойствами. Без javascript тут не обойтись. Так как решение нужно обычно быстро, то использование jQuery позволяет создавать динамические деревья, экономя прилично времени на кодинге. Чтобы сэкономить себе еще кучу времени идем на поисковик и ищем подходящее решение. В целом часто на этом дело создание дерева на сайте и ограничивается, но бывают ситуации, когда дерево подходит, но не имеет какой-то маленькой фишки и тут уже ни чего не остается, кроме как модифицировать имеющиеся дерево.
Читать дальше →

cssHooks — расширяем множество CSS свойств

Reading time5 min
Views3.3K
В этой статье я расскажу об объекте jQuery.cssHooks, который по умолчанию содержится в jQuery. Расширение этого объекта позволяет добавлять новые свойства или значения, прописываемые в методе .css(), которые изначально не поддерживаются теми или иными браузерами. Возможно, для многих наличие CSS хуков не является новостью, но для меня это стало небольшим открытием.
Для тех, кому лень дальше читать, привожу основную мысль. Допустим, вы хотите в jQuery добавить CSS свойство chuck-norris:
$.cssHooks.chuckNorris = {
	get: function(elem) {
		//проводим манипуляции с узлом elem, получаем value
		return value;
	},
	set: function(elem, value) {
		//проводим манипуляции с узлом elem, устанавливаем value
	}
}

$(el).css(‘chuck-norris’, Infinity);
//или $(el).css({‘chuck-norris’: Infinity});
alert($(el).css(‘chuck-norris’)); //Infinity


Далее будет подробно описана «модификация» свойства background-color для поддержки rgba в старых версиях IE и добавление нового, несуществующего в спецификации свойства background-alpha для удобной установки прозрачности фонового цвета. В IE прозрачность цвета будет реализована с помощью использования свойства filter, добавляя элементу градиент, состоящий из двух одинаковых цветов.
Читать дальше →

Поиск гамильтонова пути с помощью мембранной системы за полиномиальное время

Reading time9 min
Views6.1K
Составление алгоритмов в рамках той или иной классической алгоритмической модели (машины Тьюринга и Поста, нормальные алгоритмы Маркова, счетчиковые машины Минского и т.д.) смело можно относить к ненормальному программированию в силу исключительной минимальности выразительных средств этих моделей. Не исключением из данного правила является и такая относительно новая алгоритмическая модель, как мембранные системы или P-системы, придуманная румынским ученым Георгием Пауном чуть более десяти лет назад. Целью этого нововведения было исследование вычислительных возможностей клеткоподобных структур (имеются в виду биологические клетки), а вообще вся эта деятельность была инспирирована знаменитым опытом Адлемана по решению задачи о поиске Гамильтонова пути с помощью ДНК-вычислений. Как это ни странно, но данный топик посвящен как раз решению (к сожалению, виртуальному) той же самой задачи, но уже с помощью простейшей мембранной системы. Итак, под катом читатель найдет 1) краткое описание того, что такое мембранные системы; 2) как «программировать» такое «железо»; 3) мембранный алгоритм решения задачи о гамильтоновом пути, обладающий полиномиальным временем выполнения.
Читать дальше →

2d на Unity3d

Reading time14 min
Views220K
В свое время, в начале разработки двухмерной игры на Unity3d, мне пришлось перерыть кучу документации, сайтов, проштудировать answers.unity3d.com и forum.unity3d.com на тему: как сделать 2d-игру на этом 3d-движке. Самыми первыми вопросами были: как правильно настроить камеру, как сделать 2d-спрайт так, чтобы он отображал текстуру «пиксель в пиксель». На то время уже существовал SpriteManager (далее – SM) и даже SM2 с его мощной поддержкой редактора. Судьба сложилась так, что я не мог его тогда купить, да и пробной версии не было. В итоге, мне пришлось самому написать несколько полезных скриптов для реализации 2d на Unity3d. О том, как это сделать, пойдет речь в этой статье.

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

Знак рубля на сайте: экспресс-метод

Reading time2 min
Views105K
Знак рубля

Задача


Без лишней головной боли начать использовать знак рубля на сайте.

Идея


В свободно распространяемых (в том числе для использования в вебе) шрифтах PT Sans и PT Serif среди символов есть и знак рубля. Если использовать эти шрифты на сайте, то для решения задачи можно обойтись без лишнего html-кода, css-бубнов, векторной графики и прочих джедайских извращений.

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

Концепт группировки типов в C++

Reading time2 min
Views3K
В статье описан способ группировки типов в языке C++, реализованный через шаблонный класс IGroup. Приём группировки типов даёт возможность указать несколько типов для объекта. Например, можно указать два интерфейса объекта.

Вообще этот приём мог быть языковой конструкцией, но таковой конструкции ни в одном ЯП не встречал (в комментариях мне уже разъяснили что почём и про Generics и про Boost и даже про STL, спасибо за обсуждение). Потому было интересно попытаться реализовать его на C++.

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

Information

Rating
Does not participate
Location
Луганск, Луганская обл., Украина
Date of birth
Registered
Activity

Specialization

Specialist
Lead
From 10,800 $
PHP
OOP
Docker
Rust
Linux
Asynchronous programming
MQTT
Geoinformation systems
Machine learning
Computer Science