воскресенье, 30 декабря 2012 г.

Learn Sanskrit using ActionScript

Here is a simple and (I hope) useful tool for learning Devanagari alphabet. Basically, it is a Flash application wrote in pure ActionScript3 programming language without any visual tools or IDEs. Devanagari alphabet consists of 49 "letters". Each Devanagari letter is given with corresponding IAST transliteration symbol (sometimes with alternative variants). You can also train pronunciation: alphabet is chanted by Igor Belyaev -  prominent specialist in Sanskrit language and Indian culture.

Flash application can be found here.
And here, on GitHub, you can browse program's source code.

пятница, 30 марта 2012 г.

Sound Blaster Connect Hi-Fi USB + Linux

This will be interesting for those who want to buy an external sound card but not sure if it will work with Linux. Official ALSA site lacks this information, so I will try to fulfil it. Short answer - YES, Sound Blaster Connect Hi-Fi USB (SB1260) works with Linux, at least with Ubuntu 11 with PulseAudio server.

There are three main reasons for buying an external audio card:
  • Internal sound card of your laptop had fried
  • Your laptop lacks Line-In connector (this was the reason for me)
  • Sound quality or set or features of your internal sound card doesn't satisfy you
Here is minimal background required for further explanations: recent Linux kernels have built-in support for USB audio devices (snd-usb-audio kernel module), ALSA (Advanced Linux Sound Architecture) system is used to orchestrate all sound devices at low level. Morden Linux distributions come with audio server software, e.g. PulseAudio. PulseAudio acts as an audio dispatcher/router/manager between applications and ALSA system. It can do a lot of cool features, that would be difficult with bare ALSA.

As for playback, SB1260 started to work out-of-box: you just need to plug the card and change active output device in "Sound settings" menu (right click on the speaker icon in the tray in my distro). Line-In recording was a little more tricky. I've tried to select an active input device (in neighbour tab) and adjust record level but with no luck. The only thing I was able to record is a silence. After 3 evenings of experimenting with the %subj% I came up with a brilliant idea: use low-level alsamixer program to check & adjust recording level and ... it worked! Record level was at 0% and PulseAudio's mixer didn't change that.

I hope this will save 3 evening of your life!

UPDATE: Also I had to switch Capture Source from 'mic' to 'line-in' in alsamixer. Unfortunately doing the same thing using PulseAudio's front-end didn't help.


вторник, 24 января 2012 г.

Как сгенерировать себе случайный аватар?

Сгенерируем тысячу и выберем самый красивый:
  • mkdir /tmp/avatars/
  • for i in `seq 1 1000`; do hash=`dd if=/dev/random bs=16 count=4 2>/dev/null | md5sum | awk '{ print $1 }'`; wget -q "http://www.gravatar.com/avatar/$hash?s=128&d=identicon&r=PG" -O /tmp/avatars/$hash.png; echo "$hash"; done
  • Идём в /tmp/avatars/ и выбираем аватар. Если нужна картинка большего размера, то можно вручную сделать HTTP-запрос с этим хешем.
  • Если случайные числа в /dev/random быстро заканчиваются, то замените его на /dev/urandom

















суббота, 14 января 2012 г.

www.100слов.рф — учите язык с помощью субтитров!

Как это работает?

Допустим, вы собрались посмотреть кино на английском:
  • Заходим на www.100слов.рф
  • Скачиваем кино вместе с субтитрами либо находим их в интернете;
  • Выбираем в меню "Начать урок" и загружаем .SRT файл c субтитрами;
  • Программа найдёт 100 самых часто-используемых слов из фильма и покажет вам их перевод с помощью одного или нескольких online-словарей;
  • В конце урока вы увидите подробную статистику по фильму: сколько слов было всего, сколько было отсеяно, какой % слов покрыл данный урок и т.д.
Сайт не требует регистрации, но если вы (бесплатно) зарегистрируетесь, то в добавок к вышеперечисленному сможете:
  • Сохранять свои предпочтения, а именно - список используемых словарей, любимый словарь и количество слов в уроке;
  • Во время урока отмечать слова как "известные". Программа будет помнить, какие слова вы уже знаете и не станет показывать их вам в следующий раз;
  • Просматривать список известных слов и удалять из него те, которые вы забыли.
В данный момент сайт поддерживает только английский, но возможно вскоре появится немецкий, французский и испанский.

Что под капотом
Тестирование

Все backend-классы (парсинг и анализ субтитров) покрыты Unit-тестами. Есть тест web-интерфейса (используется модуль Test::WWW::Mechanize::Catalyst).

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

Тест умеет автоматически конфигурировать и запускать временный экземпляр Apache2/mod_perl и тестировать приложение в условиях максимально приближенных к реальным.

Весь код (за исключением автоматически сгенерированных классов) проверен при помощи perlcritic-а в режме Brutal.

Все HTML страницы проходят валидацию на XHTML 1.0 / Transitional
Все CSS файлы проходят валидацию на CSS Level 2.1

Техническое имя сайта (не IDN): ss.entropyware.info

Feedback

В настоящий момент сайт и сама идея находятся на этапе опытной эксплуатации, поэтому было бы интересно получить feedback от тех, кто любит посмотреть фильмы на английском.