Как стать автором
Обновить
0
0

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

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

Что такое скрытые модели Маркова

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

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

Большую популярность эта технология моделирования получила в результате успешного применения и дальнейшего развития в области автоматического распознавания речи. Исследования скрытых моделей Маркова превзошли все конкурирующие подходы, и являются доминирующей парадигмой обработки. Их способность описывать процессы или сигналы успешно изучается в течение длительного времени. Причиной этого, в частности, является и то, что технология построения искусственных нейронных сетей, редко применяется для распознавания речи и аналогичных проблем сегментации. Тем не менее, существует ряд гибридных систем состоящих из комбинации скрытых моделей Маркова и искусственных нейронных сетей, в которых используют преимущества обоих методов моделирования (см. раздел 5.8.2).
image
Читать дальше →
Всего голосов 34: ↑23 и ↓11+12
Комментарии9

Написание сложных интерфейсов с Backbone.js

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

Backbone.js это каркас для создания RIA JavaScript приложений, его автором является Jeremy Ashkenas, создатель CoffeeScript, Backbone является частью компании Document Cloud ей же «принадлежит» Underscrore.js. Backbone — очень легкая библиотека, помогающая вам создавать интерфейсы. Она может работать с любыми библиотеками, к которым вы привыкли.
Backbone это набор классов, размером менее 4Кб, которые формируют структуру вашего кода и помогают создавать качественные MVC веб-приложения.
Backbone формирует структуру тяжелых JavaScript приложений, внесением моделей с key-value подобным хранилищем и своими событиями, коллекций с богатыми API, видов (ориг. views) с декларативной обработкой событий и соединяет все это в в одно приложение, поддерживающее RESTful JSON интерфейс.

Backbone не может работать без Underscore.js. Для поддержки REST API и работы с DOM элементами в Backbone.View настоятельно рекомендуется подключить json2.js и jQuery-подобную библиотеку: jQuery или Zepto

В статье будет рассмотрена структура Backbone.js, будет поэтапно создано простое Todo приложение.
Читать дальше →
Всего голосов 108: ↑103 и ↓5+98
Комментарии47

Backbone.js для «чайников»

Время на прочтение13 мин
Количество просмотров288K
Backbone.js для чайников
Как то поздним вечерком мне пришла мысль изучить Backbone.js и привязать его к уже написанному на jQuery сервису. Сервис уже серьёзно расширился и меня достало это нагромождение обработчиков кликов, запросов и логики. Поэтому, я как усердный школьник полез в официальную документацию. Но либо я тупой, либо мой английский меня подкачал, либо то и другое вместе, но я не черта не понял. Я прочитал уже второй раз, внимательно, и для особо одарённых мест использовал google translate. Прочитал также и пример ToDo List. Всё показалось понятно, ровно до той поры пока я не стал писать. После чего я взял всё что нашел по этой библиотеке, как на английском так и переводы. Прочтя кипу документации я решил, что сейчас вроде всё понял. Я напрягся, но… Не вышел каменный цветок у мастера Данилы, т.е. вышло, но это явно был не цветок, и камень как то неправильно пах. Тогда, как прилежный ученик, я решил написать «Hello, KittyWorld» с нуля. Попутно комментируя и сохраняя шаги в hg, у меня получилось введение в backbone.js framework для таких как я, особо одарённых.
Данные 7 шагов с комментариями.
Всего голосов 113: ↑110 и ↓3+107
Комментарии51

Опыт создания Ajax-приложения

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

В начале


В данной статье речь пойдет о написании Ajax-приложения. Если говорить проще — то, о написании сайта – работающего без перезагрузок. Быстро, легко, доступно. В этой статье не будет рассматриваться код серверной стороны, будут только примеры, для лучшего понимания.
Меня давно интриговала тема написания сайта, в котором несколько компонентов (например, flash плееры) не перезагружаются с каждым переходом по ссылкам, а продолжают себе напевать песенки. И вот однажды, набравшись смелости — я начал думать насчет структуры такого вот приложения. Что в итоге получилось — читайте ниже.
Читать дальше →
Всего голосов 25: ↑15 и ↓10+5
Комментарии15

Вышел стандарт C11 (C1X)

Время на прочтение1 мин
Количество просмотров24K
19 декабря 2011 года международная организация по стандартизации ISO обьявила о выходе стандарта C — ISO/IEC 9899:2011 (ранее неофициально известного как C1X).

Основные изменения по сравнению с C99:
  • Выравнивание данных
  • Спецификатор функции _Noreturn
  • Выражения, не зависящие от типа (Type-generic expressions) с использованием ключевого слова _Generic
  • Поддержка многопоточности
  • Улучшенная поддержка Unicode
  • Функция gets, была признана устаревшей и заменена на gets_s
  • Статические утверждения(Assertions)
  • Функция quick_exit
  • Макросы для создания комплексных чисел


Частичная поддержка функций нового стандарта имеется в компиляторах GCC и Clang.

Подробнее (англ)

UPD:
Финальной версии стандарта, привычно, нет в свободном доступе, но можно скачать последний черновик
Всего голосов 48: ↑44 и ↓4+40
Комментарии28

Создаем новогоднюю открытку при помощи CSS3

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


Всё ближе долгожданные новогодние и рождественские праздники и самое время подготовить подарки и поздравления. А как известно, самый лучший подарок — это подарок сделанный своими руками. :) Поэтому сегодня мы создадим новогоднюю анимированную открытку при помощи CSS3. Создание такой открытки займет у вас всего лишь несколько минут, так как для него мы будем использовать только несколько фоновых картинок и CSS3 анимацию.
Читать дальше →
Всего голосов 58: ↑49 и ↓9+40
Комментарии43

Как поймать «поток», и как сделать так, чтобы он не сорвался

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

Вступление


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

Читать дальше →
Всего голосов 223: ↑212 и ↓11+201
Комментарии130

Объекты Java

Время на прочтение4 мин
Количество просмотров43K
Под впечатлениями от habrahabr.ru/blogs/java/134102.

Недавно мне приходилось немного поковыряться внутри JVM. Довольно интересный опыт. Текст в вышеупомянутом топике не совсем сходится с моим опытом, но я не считаю себя обладателем абсолютной истины. Ниже я поделюсь с читателями небольшой частью моих экспериментов, которые касаются непосредственно объектов Java.
Читать дальше →
Всего голосов 68: ↑51 и ↓17+34
Комментарии24

«Тикающие» часы с будильником на микроконтроллере Atmega48

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

Описание


Данные часы с будильником основаны на микросхеме часов реального времени, что позволяет им работать от резервного источника питания при отсутствии основного. Заданное время будильника и режим работы хранится в энергонезависимой памяти микроконтроллера. Режим отображения — 24 часовой. Содержат имитацию «тикания» Индикация времени и режимов работы осуществляется посредством светодиодных индикаторов.
Читать дальше →
Всего голосов 33: ↑26 и ↓7+19
Комментарии49

Глобальное обновление инструментария

Время на прочтение1 мин
Количество просмотров1.2K
ICS
Буквально на днях Google обновил все основные инструменты разработки под платформу Android:

  • Android SDK
  • ADT плагин для Eclipse
  • NDK
  • Платформа Android 4.0.3

Читать дальше →
Всего голосов 25: ↑24 и ↓1+23
Комментарии27

Моки и стабы

Время на прочтение8 мин
Количество просмотров108K
Существует категория классов, которые тестировать весьма просто. Если класс зависит только от примитивных типов данных и не имеет никаких связей с другими бизнес-сущностями, то достаточно создать экземпляр этого класса, «пнуть» его некоторым образом путем изменения свойства или вызова метода и проверить ожидаемое состояние.

Это самый простой и эффективный способ тестирования, и любой толковый дизайн отталкивается от подобных классов, которые являются «строительными блоками» нижнего уровня, на основе которых затем уже строятся более сложные абстракции. Но количество классов, которые живут в такой «изоляции» не много по своей природе. Даже если мы по нормальному выделили всю логику по работе с базой данных (или сервисом) в отдельный класс (или набор классов), то рано или поздно появится кто-то, кто эти классы будет использовать для получения более высокоуровневого поведения и этого «кого-то» тоже нужно будет тестировать.

Но для начала давайте рассмотрим более типичный случай, когда логика по работе с базой данных или внешним сервисом, а также логика обработки этих данных сосредоточена в одном месте.
Читать дальше →
Всего голосов 43: ↑38 и ↓5+33
Комментарии14

Учебный курс по разработке для Android от Google

Время на прочтение1 мин
Количество просмотров8.3K
image
Желая привлечь еще больше разработчиков, в Google приняли решение организовать самостоятельно специальную программу для обучения программированию под свою мобильную платформу.

Обучающая программа носит название Android Training и уже доступна желающим. Надо сказать, что диапазон тем программы весьма разный: начиная от азов, таких как работа с Layout — затем рассматриваются такие темы как работа с аудио, фото, оптимизация работы батареи — заканчивая вопросами монетизации приложения. Статьи, конечно, сопровождаются инфографикой и примерами кода, а сам ресурс, как обещает команда Android Team, будет развиваться и дополняться.

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

Пост-анонс можно посмотреть здесь.

[Android Training]
Всего голосов 111: ↑104 и ↓7+97
Комментарии14

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

Время на прочтение2 мин
Количество просмотров18K
В 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, но есть некоторые дополнительные функции, например вывод прогресса выполнения операции в процентах.

Читать дальше →
Всего голосов 58: ↑51 и ↓7+44
Комментарии17

Невероятные приключения с Microsoft.Practices.Unity

Время на прочтение3 мин
Количество просмотров5.8K
Речь пойдет не о возможностях и вкусностях использования АОП, а об одном личном случае использования Unity в своем проекте.

Немного предыстории


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

Собственно история


И вот, в один прекрасный момент, после применения очередного обновления. У далекого клиента в г. Омск стали наблюдаться странные «тормоза» при запуске нашего приложения. Программа висела примерно 30-40 секунд, потом успешно запускалась и в дальнейшем работала с привычным для нас быстродействием.
Хм… Стал смотреть код.
Читать дальше →
Всего голосов 58: ↑45 и ↓13+32
Комментарии8

Как делалось iPhone-приложение для ServerClub

Время на прочтение5 мин
Количество просмотров1.8K
В преддверии осени я завершил разработку iPhone-приложения для хостинга ServerClub.com. Теперь выдалась свободная минутка, и мне хотелось бы воспользоваться ею, чтобы поделиться с Хабрасообществом некоторыми усвоенными в ходе проекта уроками, а также поведать о «граблях», которые встретились на пути.

Итак, началось все с того, что в HQ компании ServerClub.com, предоставляющей в аренду серверы и сопутствующий сервис, родилась идея дополнить веб-сайт мультиплатформенным мобильным клиентом, который предоставлял бы пользователям доступ к их серверам, данным по трафику, датчикам, тикетам, финансам, счетам на оплату, а также позволял бы заказывать серверы прямо из приложения. Вообщем, задумали они повторить весь функционал веб-клиента, переосмыслив и упаковав его в мобильное приложение. Сразу было понятно, что работы предстоит немало, но все же, как это часто бывает, оптимизм переборол разум, и я оценил работу в 1 календарный месяц, по прошествии которого я рассчитывал опубликовать приложение в App Store. Вот только в ходе разработки, согласования и уточнений каждая крупная фича «обросла» еще и мелкими нюансами, на реализацию и полировку которых ушло дополнительное время. Кроме того, неожиданные сюрпризы преподнесли ревьюверы, но обо всем по порядку.
Читать дальше →
Всего голосов 25: ↑25 и ↓0+25
Комментарии10

Как уменьшить вероятность ошибки на этапе написания кода. Заметка N4

Время на прочтение9 мин
Количество просмотров1.7K
PVS-Studio vs Firefox
Это уже четвертая заметка, где я хочу поделиться полезными наблюдениями о паттернах ошибок и том, как можно с ними бороться. В этот раз я затрону такую тему, как обработка редких и аварийных ситуаций в программах. Рассматривая множество программ, я пришел к выводу, что код обработки ошибок в Си/Си++ программах — одно из самых ненадежных мест.
К чему приводят такие дефекты? Программа, вместо того, чтобы выдать сообщение «файл X не найден», падает и заставляет пользователя гадать, что он не так делает. Программа для работы с базой данных выводит невразумительное сообщение, вместо того, чтобы сообщить, что неверно заполнено одно из полей. Попробуем сразиться с этой разновидностью ошибок, которые досаждают нашим пользователям.
Читать дальше →
Всего голосов 70: ↑57 и ↓13+44
Комментарии35

Ускоряем OpenMP в Visual C++ 2010

Время на прочтение5 мин
Количество просмотров8.5K
Одним из популярных и дешёвых средств реализации многопоточных вычислений на языке C++ является OpenMP.

Достоинства технологии очевидны: простота; малые, и легко отключаемые изменения в коде; поддержка от авторов самых популярных компиляторов:
  • Visual C++
  • GCC 4.2
  • Intel C++ Compiler
Проверка боем проходит успешно, и вот распараллеленный код проникает в самые укромные уголки проекта, бьёт все рекорды производительности, выдавая шикарную статистику, подтверждающую успешность релиза.

Проходит пара лет, вы успешно мигрируете на Visual Studio 2010,… и обнаруживаете себя сидящим в луже. Если вчера обработка большого массива данных на машинах с многоядерными процессорами проходила за считанные секунды, то сегодня наличие любого фонового приложения, занимающего собственными вычислениями одно или несколько ядер, практически вешает приложение.

Почему так происходит, и как с этим бороться?

Читать дальше →
Всего голосов 30: ↑26 и ↓4+22
Комментарии8

MongoDB: Запросы

Время на прочтение4 мин
Количество просмотров239K
Хоть и некоторые писали относительно моего предыдущего топика MongoDB: Создание, обновление и удаление документов, что это пересказ офф. документации, я с этим не полностью согласен. Мне показалось, что информация в нём оказалось кому-то полезной, поэтому выкладываю продолжение.

Find — аналог SELECT в MySQL. Используется для выборки документов из MongoDB. Возвращает массив документов в виде коллекции, если документов нет — пустую коллекцию. Пример:

> db.users.find();

Вернёт всех пользователей из коллекции.

> db.users.find( { age: 27 } );

Вернёт всех пользователей, у которых возраст равен 27.
Читать дальше →
Всего голосов 70: ↑48 и ↓22+26
Комментарии38

CSS3. Работа с тенями. Часть 2

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

Продолжаем погружаться в искусство владения тенями в новых модулях CSS3. Прошлый раз мы рассматривали работу с box-shadow, сегодня мы перейдем к text-shadow.

Напомню, что оба правила, хотя и описаны в разных модулях, работают практически идентичным образом, поэтому, если вы уже знакомы с box-shadow по первой части, в этой, второй, части вы увидите много знакомого. И, прежде, чем переходить непосредственно к примерам, давайте сразу разберемся, какие есть различия, чтобы не останавливаться на них далее.
Читать дальше →
Всего голосов 47: ↑40 и ↓7+33
Комментарии12

Написание программы для простейшей синхронизации файлов по FTP для Android с помощью SL4A + Python

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

Введение


В данной статье рассматривается процесс написания программ при помощи SL4A на примере программы для синхронизации файлов по протоколу FTP на языке Python в операционной системе Ubuntu. Показаны настройка операционной системы для разработки SL4A-приложений, написание самого приложения, распространение приложения с помощью баркодов и упаковка приложения в .apk-файл.

Немного слов о том, что такое SL4A и с чем его едят


Проект SL4A (Scripting Layer for Android), появившийся на свет благодаря Деймону Кохлеру (Damon Kohler) и предоставляемыми Google'ом 20% свободного рабочего времени, дает возможность программировать под платформу Android на различных интерпретируемых языках программирования (на данный момент это Python, Perl, JRuby, Lua, BeanShell, JavaScript, Tcl и Shell).
На хабре уже писалось про SL4A. Например, здесь рассказывалось о том, как написать приложение на Python для проверки кармы на хабре, а здесь с помощью Lua создавался скрипт, отключающий коммуникации телефона на ночь.

SL4A хорошо подходит для обучения программированию, для написания прототипов программ, для решения задач автоматизации действий на платформе Android. Большие серьёзные программы на SL4A не пишутся, но для создания мини-программ он подходит хорошо. Проверить карму на хабре, отправить смс жене, чтобы попросить начать разогревать ужин за пару километров до дома; разбудить в электричке при приближении к нужной станции или даже управлять настоящей ракетой — все это может быть реализовано при помощи SL4A c минимальным количеством кода и затраченного времени.
Читать дальше →
Всего голосов 30: ↑28 и ↓2+26
Комментарии9

Информация

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