23 авг. 2011 г.

Программируем STM32VLDiscovery в Linux'е и только в Linux'е!

Подобно многим любителям садистски потыкать раскаленным паяльником в нежные внутренности электронных девайсов я не избежал увлечения микроконтроллерами серии STM32 от STMicroelectronics, за их небольшую цену прозванные "убийцами" 8/16-битных микроконтроллеров, таких как AVR.
Поскольку основной операционной системой на моем компьютере является Линукс, а альтернативных операционных систем на нем нет и не предвидится, то встал вполне естественный вопрос - чем собирать программы под STM32 и чем их прошивать в имеющуюся у меня STM32VLDiscovery? Иначе говоря передо мной встал вопрос инструментального обеспечения.
Большинство руководств, найденных мною в Интернете, либо советовали перезагружаться в Windows, либо использовать утилиту stm32flash, которая прошивает кристалл при помощи встроенного bootloader'а через UART. При всем при этом, в некоторых руководствах еще и предлагалось немного пошаманить с состоянием выводов BOOT0 и BOOT1 или использовать такие громоздкие среды разработки как Eclipse.
Мне все вышеперечисленное показалось крайне неприемлемым и я стал искать свой способ работы с STM32VLDiscovery под Linux'ом. Результаты моих изысканий приведены далее, под катом.

14 авг. 2011 г.

Простенький клиент для Jamendo на Clojure

В рамках осваивания Clojure, который олицетворяет для меня не только новый язык, но и новую парадигму программирования, я написал простейший клиент для Jamendo - интернет-сообщества музыкантов, использующих свободные лицензии. Это моя первая программа на Clojure.
Клиент имеет относительно скромные возможности. Он умеет выполнять поиск альбомов в Jamendo по ключевому слову, выводить список песен в выбранном альмобе, а также URL'ы потоков с этими песнями. Клиент полностью консольный, интерфейса у него в принципе нет - вся работа с ним осуществляется через ключи командной строки. Обусловлено это тем, что клиент планируется использовать в различных shell-скриптах.
Как уже думаю некоторые догадались, музыку он воспроизводить не умеет - я решил, что не стоит плодить сущности и наращивать сложность программы. Пусть музыку воспроизводит MPlayer или любая подобная программа, которая получит список URL'ов с песнями через какой-нибудь xargs или из файла, куда они были записаны моим клиентом.

Поскольку это моя первая программа на Clojure, буду рад разнообразным замечаниям по ее коду.

Ссылка на проект на GitHub'е: https://github.com/h0rr0rrdrag0n/jamendo-CLient

8 авг. 2011 г.

Простой и быстрый способ начать использовать SLIME и Emacs для разработки приложений на Clojure

В качестве IDE для Clojure я, в свое время, пытался использовать NetBeans и Eclipse. Но к сожалению (а может и к счастью), отношения у меня не сложились ни с той, ни с другой IDE. NetBeans, по моим меркам, слишком долго запускался. Для не столь уж и редких для меня ситуаций, когда хочется/нужно подправить лишь пару строчек в коде, он не подходил. Конечно, можно было использовать какой-нибудь Notepad++ для подобных целей, но мне хотелось работать в единой среде, а не прыгать между текстовыми редакторами и IDE. Помимо всего прочего, к этому прибавлялся еще и не слишком быстрый интерфейс, что выводило меня из себя. Кроме того в новый NetBeans не устанавливался плагин, обеспечивающий работу с Clojure, из-за несовместимости версий.
У Eclipse были те же проблемы со скоростью работы, к которым еще и прибавлялся интерфейс, не блещущий минималистичностью из коробки.
Из-за вышеперечисленных недостатков я вернулся к Emacs'у - как никак у него была и минималистичность, и не тормозящий интерфейс, и новые нескучные обои и прочие радости жизни.
На настройку редактора под Clojure я затратил увы немалое количество времени, в основном из-за этапа по прикручиванию SLIME к Emacs'у - в мануалах рекомендовалось ставить кучу какого-то софта, в большинстве случаев устаревшего, поскольку авторы руководств предлагали использовать ELPA.
В конце концов, не без помощи @Ryukzak'а, у меня получилось узреть работающий SLIME для Clojure, процесс получения которого я и собираюсь описать - вдруг кому-нибудь понадобится.