31 дек. 2011 г.

CUnit - фреймворк для юнит-тестирования программ на C

Наконец-то я получил все зачеты и автоматы и могу не тратить некоторую часть своего времени на официальную учебную деятельность, а весь день заниматься тем, что мне интересно.

Когда я писал на Clojure, мне очень нравилась встроенная в него в система для проведения юнит-тестирования. До этого я не пользовался юнит-тестами и идея писать некоторые функции, которые проверяют работоспособность моего кода на некотором наборе входных значений, а также, по совместительству, являются готовыми примерами использования, мне весьма приглянулась.
Юнит-тестированием для кода, написанного на Си, я еще ни разу не занимался и не знал что там принято использовать. Задав вопрос в своем G+ я получил совет попробовать CUnit - http://cunit.sourceforge.net. О моем небольшом опыте использования этого фреймворка для юнит-тестирования и пойдет речь в моем сегодняшнем посте...

15 нояб. 2011 г.

Как сделать статический IP-адрес вместо динамического для сетевого интерфейса в Oracle Solaris 11?

Эта небольшая заметка посвящена тому, как дать сетевому интерфейсу на сервере с Oracle Solaris 11 статический IP-адрес вместо динамического, выдаваемого DHCP-сервером. Естественно, автор не претендует на верность последовательности команд - он просто так делал и у него все заработало...

Преамбула. При установке "солярки" была выбрана первоначальная настройка сетевых интерфейсов по DHCP, с мыслью: "нужный статический IP-шник зададим потом - это же так же просто как и в линуксе, зато сеть будет прямо сейчас работать без лишнего геморроя".
Потом, автор сделал
ifconfig net1 unplumb
ifconfig net1 192.168.1.7 netmask 255.255.255.0
 
и ВНЕЗАПНО обломался:
setifaddr: Operation not ...что-то там...
Попробовал ipadm - тоже не работает! Причем последовательность команд для смены IP-адреса бралась с Oracl'овского сайта, так что ошибка крайне маловероятна.

Настройка авторизации по ключу в SSH для Oracle Solaris 11

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

Итак, преамбула. У нас есть сервер с Oracle Solaris 11, названный, например, d3, на котором крутится sshd. И есть рабочий компьютер или ноутбук, на котором есть ssh клиент и владелец которого хочет авторизовываться на сервере по ssh без ввода пароля - по ключу.

29 окт. 2011 г.

HackSpace

Сейчас, у нас в Петербург проводится мероприятие для людей, любящих потыкать раскаленным паяльником в нежные внутренности электронных девайсов - XakСпейс.
Завтра, я буду там позориться выступать с мастер-классом по травлению печатных плат, вместе с metalvasen'ом.

Все будет в в корпусе ИТМО на Биржевой (их там два, смотрите не перепутайте), аудитория 103, в 14.00.

25 окт. 2011 г.

Как использовать мощь приложений UNIX'а, чтобы быстрее оформить лабораторную?

У меня в магистратуре есть один предмет, под названием "Теоретическая информатика", который вернее было бы назвать "Математические методы, применяемые при цифровой обработке сигналов".
В отчетах  по лабораторным этого предмета непременно должны содержаться результаты моделирования изучаемого фильтра сигнала при различных параметрах входного сигнала - то есть куча табличек и графиков. Раньше, я делал все это в Google Docs и у меня уходило много времени на вбивание данных в табличку и щелканье по менюшкам и кнопочкам, чтобы получить графики весьма низкого качества. Кроме того, сам Google Docs добавлял работы, поскольку он не умел копировать данные из своего табличного редактора в текстовый редактор.
Помучившись с оформлением одного отчета, я решил забить на клятый WYSIWYG и вернуться к истокам LaTeX'у и gnuplot'у. Что из этого вышло - читайте дальше.

14 окт. 2011 г.

Умер Деннис Ритчи :-(

Сегодня мне стало известно, что умер один из величайших людей нашего времени Деннис Ритчи, создавший две величайшие технологии, перевернувшие наш мир. Без него наше настоящее определенно было бы совершенно другим, явно не таким, какое оно сейчас.
Деннис Ритчи является создателем языка программирования C, который за счет своей простоты и некоторой приближенности к ассемблеру полюбился тогдашним хакерам. Подавляющее большинство программ, которые сейчас существуют, имеют либо имели в своей основе код, написанный на языке Си.
Данный язык до сих пор имеет самое широчайшее применение в деле написания системного ПО и ядер операционных систем - например, ядро Linux'а написано исключительно на Си. Также, этот язык применяется при написании программ для микроконтроллеров. Можно сказать, что для микроконтроллеров пишут лишь на нем одном и альтернатив, конкурирующих с Си, пока-что не предвидится... Если у вас есть какая-нибудь встраиваемая железяка - роутер, телефон или же промышленный контроллер для станка - то можете быть уверены, что язык программирования Си оставил в ней свой след.
Также, Деннис Ритчи является ключевым разработчиком операционной системы UNIX, чья простота и элегантность перешагнула сквозь десятилетия. Даже сейчас, через 40 лет, идеи, заложенные в эту операционную систему, живы - они в каждой Unix-like операционной системе - в Linux'е, *BSD, Solaris'е и так далее. Везде - в операционной системе вашего домашнего роутера, вашего Android-телефона, в операционных системах серверов, на которых крутится гугл - везде вы найдете следы UNIX.

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

1 окт. 2011 г.

Выставка "Мехатроника и Робототехника" в ЛенЭкспо - продолжение

Честно говоря, просыпаться каждый раз в 6 утра, чтобы успеть на выставку, не особо приятно и интересно - мозг все еще спит и все действия выполняются медленно и на автопилоте. Потом, в течении дня, накапливается сонливость и раздражительность, под конец приходишь домой и тупо засыпаешь - не остается ни времени ни желания на свое хобби и даже на то, чтобы банально помыть пол.
Впрочем, от желания заснуть в метро я нашел свое лекарство - достаточно стоять и читать Фридриха Ницше.
Сколько ни читаю его, все удивляюсь насколько мои мысли совпадают с его мыслями, хотя нас разделяет целый век...
Любовь и справедливость. Почему так чрезмерно ценят любовь в ущерб справедливости и говорят о ней прекраснейшие вещи, как будто она есть нечто гораздо более высокое, чем последняя? Разве она не явно глупее последней? - Конечно, но именно потому она и гораздо более приятна для всех. Она глупа и обладает богатым рогом изобилия; из него она раздает свои блага всякому, даже если он их не заслуживает и даже если он и не благодарен за них.
На свете существует множество полезных для души и для тела занятий, вещей и явлений, которые являются более постоянными и более разумными, чем такая изменчивая сущность, как любовь человека к человеку. Одним  из таких занятий является, например, робототехника. Что может быть прекраснее, чем дарить жизнь (которая при ближнем рассмотрении оказывается, увы, лишь подобием, но зато каким совершенным подобием (!), жизни) изначально мертвому переплетению проводов, печатных плат и электродвигателей?!

29 сент. 2011 г.

Выставка "Мехатроника и Робототехника" в ЛенЭкспо - день первый

Первый день выставки был сумбурным и даже отчасти безумным. Для участников выставки все началось с 9:30 - мы расставляли оборудование, проверяли, работает ли оно еще и так далее. На нашем ВТшном стенде были представлены: робо-рука, каркас будущего квадрокоптера и выбранный нами движок для квадрокоптера с контроллером и надетым винтом.

27 сент. 2011 г.

"Инсайдерские" фотографии с организующейся выставки "Мехатроника и робототехника" в ЛенЭкспо

В рамках международного инновационного форума и форума "Российский промышленник" завтра стартует выставка "Мехатроника и Робототехника" при поддержке моей альма матер - Национального Исследовательского Университета Информационных Технологий Механики и Оптики.
Выставка будет проводиться в ЛенЭкспо, в павильонах 7, 8 и 8а до субботы, с 10 утра до, вроде бы, 6 вечера.
Поскольку моя кафедра непременно участвует в этой выставке, я побывал в павильоне, где будет стенд ИТМО (павильон 8а, если кто надумает прийти; я там буду завтра с 9.30 до 11.30 и full-time все остальные дни) и сделал много "инсайдерских" фотографий чужих стендов. Кому интересно - читайте далее...

15 сент. 2011 г.

Делаем двухслойные печатные платы дома

Возможно, читатели моего блога спросят: "Зачем еще одна статья про изготовление двухслойных печатных плат, когда интернет ими практически полностью завален?". Отвечаю - для достижения приемлемого результата мне пришлось компилировать советы из многих статей и я хочу описать свой оригинальный опыт здесь - может быть он кому-нибудь пригодится. Также я пишу для себя, на случай если я забуду тот или иной этап "технологического процесса".

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, процесс получения которого я и собираюсь описать - вдруг кому-нибудь понадобится.

23 июн. 2011 г.

Создание системы автоматической генерации HDL-кода


Сегодня утром я защитил диплом, нет не от захватчиков, а перед ГАКом. Защитил на отлично, теперь у меня научная степень бакалавра!
Тема диплома вынесена в название поста и касается системы "кремниевой компиляции" предложенной товарищем Рюкзаком в своем блоге.
В двух словах об этой системе. Разрабатываемая нашей студенческой научной группой система высокоуровневого синтеза облегчает для разработчика создание новых СнК, обеспечивающих реальное время. Ему (разработчику) достаточно лишь описать желаемое поведение системы на языке высокого уровня и на выходе он получает готовую железку, а точнее ее HDL-описание.

20 апр. 2011 г.

Кончилась одна эпоха, началась другая...

Мой конфиг vim'а - http://goo.gl/CW6iN
Мой конфиг xmonad'а - http://goo.gl/gr8Oi

Пользуйтесь, копируйте, изменяйте и распространяйте! Мне они больше не нужны.

11 апр. 2011 г.

Org-mode - вся твоя жизнь в plain-text формате!

Сегодня я собираюсь написать об одном расширении Emacs'а, которое способно изменить ваш распорядок жизни раз и навсегда.
Эта небольшая программа, написанная на EmacsLisp'е, называется org-mode. Она создана, чтобы сделать человеческую жизнь организованной, чтобы не растрачивать зря драгоценные секунды и минуты...
Вы вольны использовать org-mode в качестве ежедневника, TODO-листа, планировщика проектов или для обычных заметок. Существуют уникумы, которые используют org-mode как табличный редактор, но сейчас я не планирую описывать как это делается.

19 мар. 2011 г.

Управление своим временем


Этот пост будет несколько необычным - он не будет посвящен встраиваемым системам, линуксу, а также винтовкам, ножам и прочим штукам.
Он будет посвящен тому, как я планирую свое время, что я для этого применяю и какую выгоду получаю от этого.
Сравнивая свою производительность до и после я могу сказать только одно - она повысилась как минимум на порядок, я стал успевать делать гораздо больше разных полезных вещей, чем раньше.
Возможно, мой опыт окажется кому-нибудь полезен.

13 мар. 2011 г.

Огромные изменения в разработке ядра компонентов "умного дома"

На днях я поговорил со своим научным руководителем о своих "достижениях" по "умному дому". Результатом разговора стало понимание того, что все, что я делал и придумывал раньше - ошибочно и не подлежит использованию в реальном проекте.

10 мар. 2011 г.

Разрабатываем ядро для компонентов исполнительного уровня "умного дома"-3

Импульсный преобразователь на МС34063х
Потерпев неудачу с ATtiny2313 (по причине отсутствия поддержки нужного мне режима работы SPI) я решил использовать что-нибудь столь же недорогое и простое - например восьмую ATmeg'у.
К сожалению, все оказалось не столь просто и радужно, как казалось в самом начале.

24 февр. 2011 г.

xv6 - учебная операционная система для курса 6.828 в MIT

В MIT'шном курсе "Разработка операционных систем" (Operating System Engineering) используется простая, учебная операционная система, названная xv6. На нее я наткнулся, читая пост "Примеры хорошого кода" в блоге "Программирование — это просто!".
Когда-то давно, на заре становления данного курса (тогда он был еще экспериментальным) студенты работали сразу с двумя операционными системами. Первая ОСь - Unix V6 Кернигана и Томпсона, использовалась на лекциях и была написана на каком-то диалекте языка C, существовавшем еще до издания Керниганом и Ритчи  своей книги, посвященной языку программирования C. Вдобавок ко всему прочему, этот Unix V6 работал на устаревшем оборудовании - PDP-11.
Была и вторая операционная система - Jos, которую студенты разрабатывали сами, дабы постичь премудрости курса. Система была на основе экзоядра и писалась под Intel x86.
Нет ничего хорошего в том, что студенты изучают две различные архитектуры одновременно, на курсе, отнюдь не посвященном архитектурам вычислительных систем и преподаватели решили написать xv6 - операционную систему, основанную на V6, но тем не менее написанную на C и работающую на x86 процессорах.

23 янв. 2011 г.

Разрабатываем ядро для компонентов исполнительного уровня "умного дома"-2


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

16 янв. 2011 г.

Разводим печатные платы топором


Сегодня я расскажу о том, как использовать САПР Eagle в связке с топологическим трассировщиком печатных плат TopoR. Для обеих программ доступны Freeware и Lite версии, допускающие бесплатное и законное их использование.

13 янв. 2011 г.

CMSIS - code less, create more!

Столкнувшись с необходимостью написать кое-что под имеющийся у меня в наличии чип LPC1768 (на плате LPCXpresso), я приуныл - видимо снова придется читать огроменный даташит, вручную инициализировать кучу периферии и так далее.
Но оказалось, что все мои опасения были беспочвенны, ведь существует готовая библиотека, решающая эти и многие другие проблемы, например проблему отсутствия драйверов к периферии ядра микроконтроллера (USB, I2C, SPI и все остальное). Эта библиотека называется CMSIS - Cortex Microcontroller Software Interface Standard. Она стандартизирована и, как правило, производитель сам пишет свою версию этой библиотеки для производимого им микроконтроллера. Микроконтроллер, естественно, должен принадлежать к семейству Cortex'ов.