четверг, 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 году.  Серия из разряда  "я уржался".

четверг, 9 июля 2009 г.

Админы инструкции не читают

Вот ведь правду говорят - админы не читают инструкций. Даже своих же.

Потребовалось установить связку Redmine по анологии моей инстукции . И что вы думаете , даже глядя краем глаза в неё, я наделал столько ошибок. Пока разбирался в чем дело, заглядывал в интсукцию, и видел там прямой ответ. Всего то надо было внимательней читать.

А потом мы жалуемся, что пользователи не умеют читать инструкции :-D

Заодно обновил немного интсрукцию.

понедельник, 6 июля 2009 г.

Colorer 06.07.09

Новая версия Colorer

Теперь Colorer при отключении убирает за собой . Т.е. такой ситуации не будет (не должно быть)
Открываем файл в редакторе. Вызываем Colorer (Colorer-take5). Отключаем Colorer ( Configure -> снимаем галку с colorer enabled). Текущая страница остаётся раскрашенной. Переходим к следующей - одноцветная, возвращаемся к первой странице - всё равно цветная. В меню Colorer есть только пункт Configure. Не работает в обоих ветках Фара.
colorer06.07.09

Far жив или мои новые приключения

Какое то время назад обнаружил для себя, что Far еще жив. Мало того что жив, дак и еще и интенсивно развивается.
Сделаны были два основных шага  - это переход на юникод и open source. Новая ветка сменила нумерацию - Far 2. Эти изменения повлекли некоторые проблемы - старые плагины, которые работали на версии 1.7, перестали работать на новой версии. А их разработчики "пропали без вести". У некоторых благо остались исходники.

И вот тут то загорелся я идеей - а почему бы не помочь far-сообществу в разработке плагинов? Появляется большая возможность вспомнить и поднатаскать себя в знании с++, на коем в основном и ведется разработка.

Мужик сказал - мужик сделал. :-) Жертвой был выбран плагин Colorer Игоря Русских. Плагин для раскраски синтаксиса в редакторе. Судя по форуму,  плагин широко используемый. Но к сожалению, автор уже не уделяет плагину должного внимания. А проблем в  плагине хватало.  Хотя бы взять не возможность работы в новых версиях Far.

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

Текущая рабочая версия colorer05.07.09. Она содержит часть исправлений, которых нет еще в главном репозитарии.