среда, 24 августа 2011 г.

Книга Архитектура корпоративных программных приложений(Шаблны корпоративных приложений)


Фаулер. М."Архитектура корпоративных программных приложений"("Patterns of Enterprise Application Architecture"), 2006. - 544 с.


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

суббота, 2 апреля 2011 г.

Новая книга GoF

Э. Гамма, Р. Хелм, Р. Джонсон, Дж. Влиссидес "Приемы объектно-ориентированного проектирования. Паттерны проектирования", 2010. - 366 с.

Книга "банды четырёх" -  это скорее справочник, чем книга для чтения от корки до корки. Но читать ее приходится от корки до корки, так как в описании отдельных паттернов встречаются названия новых, которые в свою очередь находятся в следующих разделах и главах. Но после полного прочтения, для закрепления материала нужно еще не раз возвращаться к описанию отдельного паттерна.
Сами паттерны предназначены для решения часто встречающихся задач, возникающих при проектировании и разработке объектно-ориентированного программного обеспечения. Правильное применение паттрена в большинстве случаев решает поставленную задачу, но не гарантирует что задача будет решена наилучшим способом. Также паттерны предназначены для упрощения внесения последующих изменений в код, в связи с новыми или изменившимися требованиями.

четверг, 17 марта 2011 г.

Ошибка expected constructor, destructor, or type conversion before ‘*’ шаблнный метод, вложенный класс

template< class T >
class DblLinkedList{
     ...
private:
     class Node{
          ...
    };
     Node* getNodeByIndex(int index);
};

...

template<class T>
DblLinkedList<T>::Node* DblLinkedList<T>::getNodeByIndex(int index){}

Компилятор выдает ошибку следующего содержания:

expected constructor, destructor, or type conversion before ‘*’

Решение:

template<class T>
typename DblLinkedList<T>::Node* DblLinkedList<T>::getNodeByIndex(int index){}

В данном случае необходимо "подсказать" компилятору что DblLinkedList::Node* это определение указателя на тип, а не ошибочное определение конструктора для класса Node

четверг, 30 сентября 2010 г.

Еще книги которые я прочитал...

Гудлиф П. "Ремесло программиста.
Практика написания хорошего кода." , 2009. – 704 с.


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

Э. Хант, Д. Томас "Программист-прагматик. Путь от подмастерья к мастеру", 2007. - 288c.

 Авторы рассматривают программирование со стороны прагматизма. В книге рассмотрен ряд советов и принципов взятых из практического опыта авторов.  По мнению авторов соблюдение данных принципов позволит улучшить профессиональные навыки и умения читателя.
Авторы предлагают такие подходы как принцип DRY(Don't Repeat Yourself), ортогональность при разработке подсистем и модулей, самокритика, постоянное обучение.

четверг, 16 сентября 2010 г.

Как востановить стандартные настройки gnome

После обновления
Ubuntu 9.10 Netbook Remix до 10.04 произошел казус в виде сменившегося рабочего стола Gnome на стол NBR. Не долго думая я полез в программу desktop-switcher чтобы вернуть все обратно, но после ее работы возникла какая-то проблема и пропала панель задач gnome-panel и не желала загружаться. 
Переустановка gnome-desktop не помогла. 

Но при входе в систему под другим пользователем все работало без проблем.

Из этого я сделал вывод что испорчены какие-то конфигурационные файлы gnome в домашнем каталоге пользователя.

В итоге помогли следующие команды:

mkdir gnome-backup
mv .gnome2 .gconf .gconfd gnome-backup/

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

пятница, 3 сентября 2010 г.

Ошибка компиляции 'undefined reference to `vtable for Class'

Вопрос:
Как исправить 'undefined reference to `vtable for Class'?
Ответ:
Реализовать для 'Class' все виртуальные методы, и не грешить на конструкторы, MOC или g++.

ИЛИ

В родительском классе объявить виртуальные методы чистыми виртуальным, то есть сделать родительский класс абстрактным.


ИЛИ

Скорее правильнее, реализовать все виртуальные функции которые не  объявлены чистыми виртуальными в родительском или объявить их таковыми.

воскресенье, 8 августа 2010 г.

Книги которые я прочитал...

 Р. Лафоре "Объектно-ориентированное программирование в C++" 928 стр.
 
Книга скорее для начального уровня, легко читается, содержит минимум сложных терминов, много примеров кода, всего понемногу и в достаточном количестве для ознакомления с новым языком, в общем золотая середина.


 С. Макконнелл "Совершенный код" 896 стр.
 
Сборник различных методик разработки программного обеспечения, основанных на многолетнем опыте и статистических исследований в данной области. При этом речь идет в отрыве от какого-либо языка или среды программирования. Большое внимание уделяется принципам написания простого для понимания и легкого в сопровождении кода. Рекомендуется для прочтения всем в независимости от возраста и профессиональных навыков.