Archives for Февраль 2011

Scala. Pattern Matching

Продолжил работу по созданию учебных материалов по Scala. Выкладываю черновую версию одной из глав. Сопоставление по образцу (pattern matching). Начало.

XMPP (Jabber) + Smack

Недавно с товарищем начал работу над одним проектом, в котором нужно было написать программу для отправки сообщений пользователям по протоколу XMPP (т.е. через jabber). Список библиотек для работы нашли на официальном сайте xmpp.org. После серии небольших испытаний решили для интеграции с серверной частью написанной на Java использовать библиотеку Smack. Не факт, что будем использовать ее […]

Netbeans Scala Maven

Если вам приходилось работать в связке Netbeans 6.9.1 + Scala + Maven, то вы могли заметить, что компиляция происходит сильно медленнее, чем если бы вы НЕ использовали maven-scala-plugin. Дело в том, что по умолчанию компиляция запускается в режиме «компилировать все классы». Это не очень приятно, учитывая то, что Scala компилятор не очень-то быстрый. К счастью, […]

Работа с видео и аудио в Java. Xuggle

Первый раз мне пришлось столкнуться с обработкой видео на Java лет 10-12 назад. Я еще был студентом и работал над проектом, в котором мы пытались сделать видео проигрыватель в виде апплета. В те времена, для перекодирования видео мы пробовали использовать JMF (Java Media Framework). Нам нужно было сделать хитрую предварительную обработку видео, т.к. показ видео […]

Быстрый обратный корень на Java

Fast Inverse Square Root, он же Fast InvSqrt() или 0x5f3759d5 — способ вычисления обратного квадратного корня из числа = 1/sqrt(x). Изобретен еще в 90-х годах. Если верить википедии, то этот алгоритм использовался в Quake III. Главная фишка метода в использовании «магической» константы — 0x5f3759d5, с помощью которой можно получить первое приближенное значение. Затем обычным методом […]

Принцип работы FFT и Scala

Разбор алгоритма быстрого преобразования фурье (он же Fast Fourier transform, он же FFT). Целью публикации является отобразить суть алгоритма, а не создание быстрой по скорости работы реализации. Т.к. в этой программе я буду интенсивно использовать объекты вместо примитивных типов, а также рекурсию, скорость работы будет заведомо уступать многим другим реализациям FFT, которые можно сейчас найти […]