понедельник, 1 марта 2010 г.

Как начать использовать C++, Qt4, MinGW и NetBeans для программирования

Иногда случается так что приходится возвращаться в технологиям, которыми не пользовался уже давно. Так случилось и в этот раз. Было предложено реанимировать проект на Qt. С тех времен когда я программировал на С++ с использованием Qt3 прошло несколько лет. Многие вещи забылись или вовсе перестали существовать, а многое изменилось до неузнаваемости.

Вопросы возникли сразу и не отличались от вопросов, которые задают новички программирования. А именно какие библиотеки взять, где взять, как использовать, какую среду разработки применять и т.д. Для разработки текущих проектов я использую NetBeans6.8, по этому очень хотелось остаться именно в этой среде. Реанимируемый проект разрабатывался с использованием какой-то версии Qt4 и компилировался MinGW. И так, цель статьи описать телодвижения по подготовке рабочего инструментария для работы в этих условиях дабы не забыть что и как если придется устанавливать все заново.

1. Качаем и ставим необходимые библиотеки и прочий инструментарий

Что нам понадобится:
  1. Библиотека Qt4
  2. Компилятор MinGW
  3. MSYS
  4. NetBeans
Разберем что где взять и для чего.
Qt. Это кросссплатформенный фреймфорк для разработки приложений с графическим пользовательским интерфейсом. По-Русски это библиотеки графических контролов(и не только), используя которые, программу можно компилировать под разные операционные системы. Изначально это были просто библиотеки, сейчас разрослись до фреймворка и владеет им Nokia. Есть версия для бесплатного использования под лицензией LGPL и есть коммерческая версия. Здесь речь пойдет о бесплатной версии. И так. Идем на сайт Qt. Переходим в раздел скачивания бесплатной версии (Загрузки -> LGPL). Видим множество ресурсов для загрузки.  Можно скачать отдельно библиотеку(Qt:Framework Only), а можно SDK. Там же можно скачать прочие полезные приложения, утилиты и библиотеки, но речь не о них. С поправкой на вашу операционную систему качаем SDK, т.к. это тот минимальный набор "для счастья". Если есть желание, то можно все качать по отдельности. В SDK входит: a) Qt4 включая Qt Designer-визуальный редактор формочек, b)компилятор MinGW, с) Qt Creator IDE - редактор и отладчик исходного кода.
Качаем, инсталлируем. Путь для установки можно выбрать любой. После установки можете запускать Qt Creator IDE(...\bin\qtcreator.exe) и ударно программировать. Qt Creator - редактор как редактор, практически все что необходимо умеет, описывать не стану, достаточно внешнего вида.

Компилятор MinGW. Один из компиляторов для С++. отдельно про него почитать и скачать его можно на официальном сайте. Там же есть система интерпретации консольных команд MSYS.
MSYS.( "Minimal SYStem") Представляет собой систему интерпретатора командной строки Bourne Shell. Предложена в качестве альтернативы Майкрософта cmd.exe, предоставляет среду командной строки общего назначения. Без нее никак при использовании NetBeans. Идем сюда, читаем, качаем. Или просто качаем последнюю версию 1.0.11 на момент написания статьи. Инсталлируем. Внимание! При установки открывается консольное окно(о ужас) в котором что-то написано по-англицки. Читаем, жмем "y", когда попросит ввести путь к библиотеке Qt, то вводим путь установки Qt на этапе, когда вы ставили SDK(без bin, просто путь к Qt, к примеру "<куда поставили SDK>\qt"). Если путь правильный, то все пройдет удачно и в конце выведется веселая фраза об отсутствии make.exe.
NetBeans. Если еще не установлен, то заходим на страницу скачки NetBeans. Качаем, ставим, указываем при установке что хотим писать код С++. Если же у вас уже давно стоит NetBeans, но без плагина С++, то запустите инсталяшку и доставте необходимую галочку.

Теперь все готово чотбы запустить NetBeans, поднастроить его и приступить наконец-то к работе.

2. Настройка NetBeans.

Стартуем нашу любимую среду. Заходим "Tools -> Options". Выбираем закладочку "С++". Нужно создать новый Tools Collection в списке слева. Нажимаем "Add...". В Base Directory указываем директорию "bin", где стоит наш компилятор MinGW, который установился совместно с SDK в самом начале(<куда поставили SDK>\mingw\bin). Выберите в Tool Collection Family требуемый компилятор, в нашем случае это MinGW. Жмем ОК и видим что создался нужный итем в коллекциях и NetBeans подтянул все требуемые пути для компилятора. Но поле Make Command осталось пустое. Этот make используем из MSYS. Укажите make.exe, который лежит в bin там где у вас стоит MSYS(<куда поставили MSYS>\msys\1.0\bin\make.exe).
Вот примерно и все. На картинке можете посмотреть как примерно это должно выглядеть.

3. Добавление путей в операционную систему

Для того, чтобы Windows(в моем случае) видела требуемые библиотеки для запуска готовых приложений, а NetBeans смог запускать Qt Designer(<куда поставили SDK>\qt\bin\designer.exe) для редактирования визуальных форм, нужно в переменных среды в системную переменную Path прописать путь к папке bin в Qt(<куда поставили SDK>\qt\bin\).

4. Программирование

Теперь можно приступить к тому, ради чего все это затевалось. Тут все стандартно. В NetBeans заходим "File -> New Project... -> (C++ / QtApplication)".

четверг, 28 января 2010 г.

Определение отсутствия ошибок в программном продукте

Определение первое. Для тех кто обладает аналитическим мышлением.

Будем считать что косяки искоренены если в пределах погрешности их существования не найдется ни одной точки соприкосновения косяков с кривой поведения конечных юзеров.

Определение вторе. Для тех кто оперирует логическими категориями.

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

Определение третье. Для тех кто предпочитает абстрактные модели.

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

вторник, 22 сентября 2009 г.

Русские буквы в файлах *.property

Вот встала проблема. Русский текст из файла property считывался кракозябрами.Google выдал следующие:

Русские буквы в файлах properties
Для чтения файлов properties используются методы загрузки ресурсов, которые работают специфичным образом. Собственно для чтения используется метод Properties.load, который не использует file.encoding (там в исходниках жёстко указана кодировка ISO-8859-1), поэтому единственный способ указать русские буквы — использовать формат \uXXXX и утилиту native2ascii.
Метод Properties.save работает по разному в версиях JDK 1.1 и 1.2. В версиях 1.1 он просто отбрасывал старший байт, поэтому правильно работал только с англицкими буквами. В 1.2 делается обратное преобразование в \uXXXX, так что он работает зеркально к методу load.
Если файлы properties у вас загружаются не как ресурсы, а как обычные файлы конфигурации, и вас не устраивает такое поведение — выход один, написать собственный загрузчик.
Русские буквы и не только

 Не сильно отчаявшись, появилось решение. Используем inputStreamReader:

            final Properties settings = new Properties();
            FileInputStream in = null;
            InputStreamReader inR = null;
            try {
                in = new FileInputStream("config/welcome.properties");
                inR = new InputStreamReader(in, "UTF-8");
            } catch (UnsupportedEncodingException ex) {
                ...
            } catch (FileNotFoundException ex) {
                ...
            }
            try {
                settings.load(inR);
            } catch (IOException ex) {
                ...
            }