четверг, 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 стр.
 
Сборник различных методик разработки программного обеспечения, основанных на многолетнем опыте и статистических исследований в данной области. При этом речь идет в отрыве от какого-либо языка или среды программирования. Большое внимание уделяется принципам написания простого для понимания и легкого в сопровождении кода. Рекомендуется для прочтения всем в независимости от возраста и профессиональных навыков.

воскресенье, 2 мая 2010 г.

Artistic Style - утилита для автоматического форматирования исходного кода

Навеяно книгой "Совершенный код" С. Макконнелл

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

Моему стилю подходит следующая строка:

astyle --style=java --indent=tab *.cpp *.h

Данная строка быстро добавляется в Makefile и легко используется в дальнейшем.

Официальный сайт
http://astyle.sourceforge.net/

суббота, 1 мая 2010 г.

BASH скрипт для создания HTML-файла с подсвеченными исходными кодами

 1 #!/bin/bash
 2 
 3 OUTDIR="out_source/"
 4 OUT="out_source.html"
 5 
 6 mkdir "$OUTDIR"
 7 
 8 echo -e "<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n</head>\n<body>\n" > "$OUT"
 9 
10 for f in $( ls -r | grep '.*\.\(cpp\|h\)$' )
11  do
12  echo ${f%.*}_${f#*.}
13  code2html -l cc -H -n $f ${f%.*}_${f#*.}.html 
14  echo -e '<p><b>'$f'</b>\n' >> "$OUT"
15  echo -e '<pre>\n' >> "$OUT"
16  cat ${f%.*}_${f#*.}.html >> "$OUT"
17  echo -e '</pre>\n' >> "$OUT"
18  mv ${f%.*}_${f#*.}.html "$OUTDIR"
19  done
20 
21 echo -e "</body>\n</html>\n" >> "$OUT"
22 
23 mv "$OUT" "$OUTDIR"

Используется утилита code2html.
Создается папка out_source/ с файлом out_source.html в котором содержаться подсвеченные исходные коды файлов *.cpp *.h находящихся в текущей директории.

суббота, 13 марта 2010 г.

Direct Connect & Linux

LinuxDC++
Клиент для сетей Direct Connect предназначенный для ОС Linux основанный на клиенте DC++.
По своей сути  является портированным для Linux клиентом DC++ для Windows. Интерфейс GTK+.
Больше недостатков чем достоинств:
  • нет поддержки скачивания файлов с нескольких пользователей(существует сборка 2.0.0-alfa-0.705 поддерживающая мульти-скачивание);
  • нет поддержки передачи magnet-ссылок из внешних приложений(Например из браузера);
  • медлителен, я бы даже сказал что очень-очень медлителен;
Официальный сайт проекта:

FreeDC++
DC++ клиент основан на исходном коде LinuxDC++.
Из достоинств: 
  • поддержка мульти-скачивания, хотя и кривая, потому что в этом режиме клиент из тормоза превращается в еще более жуткого тормоза, что работа с программой становиться мучением;
  • поддержка передачи magnet-ссылок из других приложений. 
Официальный сайт проекта: 

Valknut
Открытый кросс-платформенный клиент файлообменной сети Direct Connect. Интерфейс Qt 3, Qt 4.
Из достоинств:
  • поддержка мульти-скачивания;
  • не столь медлителен как LinuxDC++;
  • поддержка множества языков;
  • кросс-платформенный(поддержка Linux, FreeBSD, Mac OS X, OS/2).
Из недостатков:
  • в стандартной версии нет поддержки передачи magnet-ссылок из других приложений(есть отдельная сборка для включения данного режима). 
Официальный сайт проекта:


EiskaltDC
Проект ответвление Valknut.
Отличия:
  • Множество готовых пакетов для различных дистрибутивов Linux;
  • В стандартной версии есть поддержка получения magnet-ссылок от других приложений.
Есть инструкция для настройки браузеров Opera и Firefox на передачу magnet-ссылок Valknut/Eiskalt 

Официальный сайт проекта:

воскресенье, 7 марта 2010 г.

Screencast #1 Утилита Make и ее использование

Утилита Make и ее использование
Скринкаст на rpod

Рассмотрены следующие темы:

  • Проблемы которые решает make для написания больших проектов
  • Формат Makefile
  • Зависимости
  • Правила
  • Макросы
  • Множественные цели
  • Встроенные правила
  • Альтернативный вариант использования make


Литература по теме:
  1. Мэтью Н., Стоунс Р. "Основы программирования в Linux. 4-е издание", 2009
  2. http://ru.wikipedia.org/wiki/M…

воскресенье, 21 февраля 2010 г.

Скринкаст #0

Скринкаст #0 Пилотный... на rpod.ru


Рассмотрены программы:
- recordMyDesktop
- XVidCap
- FFmpeg

воскресенье, 14 февраля 2010 г.

Больше читать, думать, меньше смотреть телевизор и серфить интернет

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

Технология - это не цель а лишь средство для ее достижения

Технология лишь средство.
Сначала проектирование, затем выбор технологии.
Как пример это выбор языка программирования.
Язык должен выбираться под задачу, а не задача подстраиваться под конкретный язык.
  • C - скорость, но низкоуровневое программирование на гране прямой работы с памятью, чистый процедурный подход;
  • C++ - не лишен свойств и достоинств C, но может оперировать абстракциями объектов реального мира, объектно-ориентированный подход с примесью процедурного.
  • Java - предназначен для решения разнообразных задач, и поэтому уступает предыдущим в скорости и не предоставляет низкоуровневых функций как С/C++, но зато освобождает программиста от возникновения возможных ошибок при работе с памятью и указателями. Чистый объектно-ориентированный подход. 
Лучше разбираться в диаграммах и схемах, чем в куче не понятно как работающего кода и кучи технологий перемешанных в винегрет.

понедельник, 4 января 2010 г.

Плачевное положение с Flash


Я считаю что на сегодняшний день cамая медленная мультимедийная технология, которая повсеместно используется во многих веб проектах - это технология Flash.
Главный недостаток этой технологии - большая нагрузка на процессор. При воспроизведении  сложной flash-анимации на маломощных системах, производительность этих систем из-за нагрузки на процессор моментально падает, что приводит к либо к неверным результатам работы самого flash приложения, либо зависанию компьютера в целом.
Поэтому данная мультимедиа технология не выходит за рамки рекламы, интерактивных приложений или мини-игр.
В интернете существует множество популярных сервисов использующих данную технологию.
Существует множество реализаций воспроизведения flash, но основным  продуктом является Adobe Flash Player, который распространяется в виде бесплатного плагина к популярным веб-браузерам.
С недавних пор я задался вопросом, а существуют ли альтернативы воспроизведения flash контента, которые возможно избавлены от проблем медлительности технологии в целом.
Мои поиски привели к 2-м альтернативным проектам GNU.

Gnash (слово образовано от GNU и Flash) — проект, нацеленный на создание свободного плеера и плагина для браузера для формата Adobe Flash и замену несвободных программ в нише, занимаемой сейчас Adobe Flash Player.

swfdec (произносится «суиф дек») — свободный проигрыватель файлов формата Adobe Flash; распространяется под лицензией GNU LGPL.

Я опробовал оба плагина для firefox, и оба плагина не порадовали ни в чем. Ни в плане производительности ни в плане правильности отображения информации они уступают проприентарному плагину от Adobe. Gnash не смог отобразить плеер youtube и потоковое видео на моей системе, а swfdec отобразил плеер но уже в другом виде, не похожем на обычный, ну да ладно, но проигрывание видео ввело мой компьютер и firefox в жуткий ступор.
Конечно я ожидал большего от этих проектов, но видимо данные проекты не могут тягаться с закрытой технологией от Adobe.

Есть ли надежда и будущее у этой технологии? Я считаю до тех пор  пока сама корпорация Adobe не предпримет мер по улучшению и оптимизации технологии, все останется в том же виде в каком оно есть на сегодняшний момент. Но наверняка adobe не выгодно улучшать технологию, а выгодно ее поддерживать и добавлять новые возможности поверх старого медленно работающего механизма. Этот путь развития я считаю не продуктивным и тупиковым, по тому что он в конечном счете приведет к появлению более новой и продвинутой технологии и умиранию flash.

воскресенье, 3 января 2010 г.

Книги которые стоит почитать


Сегодня выбрал 4 книги которые на данный момент я хочу прочитать ну или взять на заметку.

1. Лафоре Р. "Объектно-ориентированное программирование в С++", 2004
Данная книга заинтересовала меня так как это большая и толстая книга по С++, много материала по синтаксису, есть теория по проектированию ООП.
2. Мэтью Н., Стоунс Р. "Основы программирования в Linux. 4-е издание", 2009
Эта книга заинтересовала потому, что я хочу поближе познакомиться с программированием в Linux, в ней есть много теории по работе данной системы и ее устройстве, проектирования GUI в Qt, GTK+, и даже ncurses. Да и год издания 2009 тоже порадовал, актуальная информация.
3. Секунов Н.Ю. "Программирование на C++ в Linux", 2004
Книга по разработки приложений C++ на QT в KDevelop. Стоит просмотреть хотя бы ради представления.

4. Шлее М. "QT Профессиональное программирование на C++", 2007

Книга заинтересовала из-за того что в ней довольно широко описана разработка кросплатформенных приложений на QT, да и вообще концепция независимости программы от платформы это одно из направлений которое хочется изучить, универсальные программы и универсальный язык программирования C++ это приоритеты для моего изучения на сегодня. 
Все книги отсканированны в pdf и djvu и их легко найти на просторах интернета.