понедельник, 31 августа 2009 г.

ООП и я

На каждом шагу звучат эти три буквы  ООП. Причем так же часто, как  на заборе пишут другое слово из трех букв. А уж с выходом новых версий delphi только и слышишь про генерики и подобное. Вроде и в университете проходили ООП, и кой какую литературу из нетленки по этой теме читал. Но вот не вижу я места где применить его. Не, ну конечно delphi и окна построенно на классах, пользуюсь этим. Но чтобы что то свое сделать, какой-нибудь маленький классик замутить - неа. То ли задачи у меня на работе мелкие, недостойные классов, то ли я все таки не понимаю нафиг оно надо. А может не дорос я?

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

четверг, 20 августа 2009 г.

Баг Оперы и TineMCE 3.2.4 в WordPress

Пока писал предыдущий пост заметил следующую багу. Если в окне редактора в начале строки стоят пробелы или табы, то при сохранении поста эти символы в начале строк удаляются. Воспроизводится в Opera 9.64 и 10 beta 3 . В IE8 все отлично.
Думал запостить в багрепорт TineMCE , но у них на тестовой странице с TineMCE 3.2.5 из под оперы все нормально работает. То ли они это исправили (явно в ченджлоге не видно), толи это бага WordPress. Но блин я вчера из-за этого убил 4 часа времени. Проверил предыдущие свои посты, там тоже самое  - форматирование сбивается.

среда, 19 августа 2009 г.

Скелет службы (service) на Visual C++

Потребовалось мне написать службу, он же сервис, для Windows. Как показали поиски в интернете, самой используемой статьёй по этой теме оказалась Beginner's introductory guide to writing, installing, starting, stopping NT services аж 2001 года. В ней приводится скелет простой работующей службы. Этот скелет я встретил в нескольких широкоиспользуемых opensource программах, например FileZilla . Код рабочий, но есть в нем несколько моментов, которые не устраивают.

1. Управление службой идет из сторонних программ. Т.е. чтобы запустить или остановить службу, нужна дополнительная утилита.
2. Нет вывода произошедших ошибок.
3. Некоторые, найденые пользователями, ошибки. Ну даже не ошибки. Один момент проявился с выходом Windows XP. Другой момент - вызов своего потока до отправки команды "я работаю" проявляется редко. И то не понятно почему. Так что в мсдн появилась рекомендация поменять порядок вызова.
4. Во многих источниках, в том числе и в мсдн, приведен следующий код запуска программы ( не дословно, но по смылсу одинаков)
void __cdecl _tmain(int argc, TCHAR *argv[])
{
// If command-line parameter is "install", install the service.
// Otherwise, the service is probably being started by the SCM.

  if( lstrcmpi( argv[1], TEXT("install")) == 0 )
  {
    SvcInstall();
    return;
  }

// TO_DO: Add any additional services for the process to this table.
  SERVICE_TABLE_ENTRY DispatchTable[] =
  {
    { SVCNAME, (LPSERVICE_MAIN_FUNCTION) SvcMain },
    { NULL, NULL }
  };

// This call returns when the service has stopped.
// The process should simply terminate when the call returns.

  if (!StartServiceCtrlDispatcher( DispatchTable ))
  {
    SvcReportEvent(TEXT("StartServiceCtrlDispatcher"));
  }
}
Суть в том, что в мсдн не отображено, или плохо отображено, что служба должна стартовать только через service control manager. Т.е. если вы запустите этот код из консоли, то служба не запустится. Код ошибки ERROR_FAILED_SERVICE_CONTROLLER_CONNECT. Этот момент у меня вызвал продолжительные поиски. Я не мог понять почему у меня служба не запускается. Как показал поиск в  интернете я не одинок. Службу нужно запускать либо через консоль администрирования либо в своей программе через функцию StartService. А вышепреведенный код расчитан, что программа будет запускаться через service control manager.

В итоге я поправил код. Что мы имеем:
  • программа обрабатывает команды -[start|stop|install|uninstall]
  • для стандартных часто встречающихся ошибок выводит понятное сообщение в консоль, для остальных - только код ошибки
  • выводится подсказка по параметрам программы
  • исправлены ошибки пункта 3

Кстати, в консоль выводятся только ошибки, возникающие при выполнении команд [start|stop|install|uninstall]. Т.к. они и подаются большей частью из консоли. В идеале, для остальных случаев, еще бы крикрутить функцию для записи ошибок (событий) в системный журнал. Но это, думаю, будет позже.

Работоспособность проверял на Windows XP и Windows 2003. В идеале проверить бы еще на Windows 2000, Vista, 2008 и 7. Исходник на VC++ 2008 service.zip. Тут только модуль, без файлов проекта.

понедельник, 17 августа 2009 г.

Зацепило

Прочитал на днях две цитаты. Зацепили ...

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

Вот ведь. Я ж взрослею  :lol: . Со мной такое бывает раз в неделю. Ну коммент мой конечно не опровеграет все остальные, но вносит какую то ясность. И вот пишишь  его пишишь, а потом раз и удалил.
А еще бесит, что иногда тоже развернешь пост на форуе свой, распишишь. А после твоего поста тишина. Вообще никто ничего не пишит, ни мне в ответ, ни дальше в тему. И происходит это на разных ресурсах. Тут напрашивается вывод, что я тормоз , пишу в темах когдак ним пропадает интерес у народа.

Вторая цитата

Hаpодная пpимета: Если пpогpаммист в pабочее вpемя игpает, значит — либо у него мало pаботы и большая заpплата, либо у него много pаботы и маленькая заpплата. (C) взято с http://pankratov.org.ua/it/dev-play

актуальна она что то в кризис. В общем зацепило, задело.

вторник, 11 августа 2009 г.

Дела, заботы и маленький праздник

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

Сделал к своему небольшому празднику, сегодня кстати мне четверть века исполнилось, подарок. Именной домен и почту. Открою маленькую тайну - зовут меня Добрунов Алексей. Ну и почта соответственно aleksey щенок dobrunov . Мелочь вроде, а приятно. Еще родне в этом домене почту сделать для приличия надо. Почту как и dobrih.net перенес с хостинга  на gmail. И управлять удобнее, и ограничений почти нет, и работает быстрее. В общем одни плюсы.

Ну и само собой блог. Настало время обновится. И вордпресс дорос до следующей стабильной версии, да и тема оформления меня честно говоря запарила. уж очень тяжелая и некрасивая. Пришлось пожертвовать удачным по-моему логотипом, и перейти на другую тему. Лучше выглядит, ни такая громоздкая. Заодно решил уйти от плагина wp-synhighlight, о котором упоминал ранее. Долго он не обновлялся, и не работали нужные вещи. Перешел на  CodeColorer . То что меня раздражало в предыдущем тут было нормально. Вчера правда получил письмо от автора wp-synhighlight, о том что он поправил многие вещи что просили. Просит протестировать поглядеть. Блин вот ведь сейчас делема то.
Кстати, во время настройки выяснился один факт - wordpress не очень хорошо работает с списками (нумерованный или маркированный). При форматировании может добавить лишний закрывающий тег. Вот описание проблемы.
Поставил еще антиспам плагин WP Captcha Free. Счас в радостном недоумении. Спама вообще не стало. Раньше в день  по 20 сообщений было. Akismet отметал из, но они были. А счас вообще тишина.

А в остальном вроде все постарому. Машина так же мозги и руки мои мучает. Достало блин. Раньше терпимее к ней был. А сейчас желание ходить пешком все больше проявляется. Порой мечтаешь  о велосипеде. На работу на велосипеде, обратно также. По делам на нем же. Так ведь блин, работа в 40 км от дома, погода не айс. Да и с ним бывают проблемы.

Недавно решил отвлечься от всего, почитал новую книгу Лукъяненко - Недотепа. Как оказалось - сказка.  Наверное для детей своих писал. В целом не плохо, для сказки. Для 6-9 летних детей. Но взрослым читать наверное не надо. Найти бы чего то типо "Звезды Холодные игрушки" или "Линия Грез". А уж если бы что то похожее на "Лабиринт отражений" ну просто шикарно бы было. Хотя сам понимаю, что написать что то похожее на лабиринты врятли получится.Получится, но будет не то. Не ново, похоже на все эти онлайн игры. Кстати, отличнейшая пародия на ситуацию вокруг онлайн игр показали в Южном парке ( South Park) еще аж в 2004 году.  Серия из разряда  "я уржался".