четверг, 24 декабря 2009 г.

Colorer 1.0.2.1

Выпустил очередную версию плагина. Теперь собран полный комплект - плагин плюс схемы.
Ну и все таки решил сделать версию под Far 1.75 . Для этого было две причины
- последняя версия полного комплекта была давно, и есть утечки памяти, которые уже поправлены в библиотеке
- целостность бранча. изменив библиотеку под pcolorer2, я сломал сборку pcolorer. т.к. и так пришлось восстанавливать мэйки, то заодно подкрутил и остальное
Создание отдельного архива для Windows 9x связано с тем, что плагин собирается с помощью Visual C++ 2008. А он не поддерживает Windows 9x. По этому плагин был собран с помощью  Visual C++ 2005

Изменения:
  1. версия для far 1.75 . Приведена к возможностям плагина под far2, кроме относительных путей
  2. в версии для far 2 исправлена небольшая ошибка чтения данных из реестра
  3. обновлены схемы (базы раскраски)
  4. изменения в языковых файлах и файлах помощи

Colorer 1.0.2.1 для Far1.75 x86 windows 9x
Colorer 1.0.2.1 для Far1.75 x86
Colorer 1.0.2.1 для Far1.75 x64
Colorer 1.0.2.1 для Far2 x86
Colorer 1.0.2.1 для Far2 x64

суббота, 5 декабря 2009 г.

Орфографический ступор

Недавно, гуляя по улице, увидел рекламный плакат одной сотовой компании. Рекламировали новый тариф, и ключевое крупное слово там было "Ноль". Увидев это, я улыбнулся, мол с ошибками пишут. Правильно ведь "Нуль". Потом появилась доля сомнения.
В общем до программировался называется. Везде Null мерещится. Конечно же правильно "Ноль".
Но и тут я оказался не прав. НаЯндексил сейчас
Как правильно? “Ноль” или “нуль”?

Слова ноль и нуль совпадают в значении, но различаются употреблением. Как правило, ноль употребляется в обиходной речи и в ряде устойчивых сочетаний, нуль - в терминологии, в научной речи. Правильными будут оба варианта написания этого слова. Например: Деление на ноль. Ноль целых. В двенадцать ноль-ноль. Ноль внимания. Ноль без палочки. Абсолютный нуль. Ниже нуля. Равно нулю. Свести к нулю (c)http://internetlesson.ru/archives/16

Век живи, век учись.

пятница, 4 декабря 2009 г.

Colorer 1.0.2

Крос-пост с http://forum.farmanager.com/viewtopic.php?f=11&t=4778

Проект вернулся к истокам. Теперь основной сайт как и прежде на SourceForge. Там же и репозитарий проекта. Я веду свой branche, и соответственно плагины, которые я буду выкладывать, собраны из него. После одобрения моих изменений, они попадут в trunc.
Так же вернулось к истоком имя плагина. Для фара его название Colorer. В разделе download головного сайта он значится под именем FarColorer, дабы не путать с основной библиотекой.

Ну а теперь собственно новая версия.
Colorer 1.0.2

Изменения:
  1. восстановлена работоспособность опции "Крест"
  2. изменено значение опции "Крест".
    [ ] Не показывать никогда
    [?] Показывать если включено в схеме
    [x] Показывать всегда
  3. поправлены языковые файлы, и файлы помощи
  4. команда clr поддерживает относительные пути
  5. некоторые мелкие баги

Замечания:
  1. 1. т.к. название вернулось на Colorer, то соответственно в реестре ключ так же Colorer, а не ColorerSe
  2. ключ реестра crossDontDraw переименован в CrossDraw, старый можно удалить
  3. пути длиннее max_path команда clr не поддерживает
  4. в архивах нет схем

Colorer 1.0.2 для Far2 x86
Colorer 1.0.2 для Far2 x64

Ну и еще, сообщество решило, что поддерживать плагин для Far 1.7 нет необходимости.

вторник, 24 ноября 2009 г.

Участие в проекте

Как оказалось, вышедший недавно первый релиз ColorerSE стал и последним. Игорь Русских, автор оригинального Colorer-take5, предложил поучаствовать в оригинальном проекте. Соответственно и все наработки вносить в хранилище на SourceForge.net .

Я согласился. Первый опыт участия в коллективном проекте, да и еще на SourceForge. Открыл себе бранч . Пока переношу туда  все, что до этого реализовал/исправил для ColorerSE. Надеюсь в ближайшее время выложить первый релиз на SourceForge. А там, кстати, можно попробовать замахнуться на поддержку еще и первой версии Far.

ну как говорится - будем посмотреть.

четверг, 19 ноября 2009 г.

Релиз ColorerSE

Сегодня официально зарелизил первую версию плагина для Far - ColorerSE 1.0.1.6.
На самом деле я уже ни раз выкладывал разные версии  плагина. Но вот только сегодня решился представить его как отдельный проект. Проделана большая работа по адаптации и исправлении исходников головного проекта к текущей версии. В этом большую роль сыграли и пользователи Far, давая рекомендации на форуме . Текущую версию можно назвать стабильной. Со времени последней правки прошло уже много времени.
Ну а главным моментом этого релиза, являются обновленные базы раскраски файлов. Собраны текущие правки с головного проекта, и замечания пользователей.

Следующий шаг - обновление баз из бранча Евгения Ефремова. Там у него много исправлений.

Страница проекта
Обсуждение на форуме

среда, 11 ноября 2009 г.

Все гениальное просто

Решил рассказать, как на своем опыте столкнулся с верностью этого высказывания.

Шел 2002 год. Первый курс университета.  В городе рассвет компьютерных клубов. Для одного из которых я написал программу, для управления и учета средств. Первая моя более менее серьёзная программа, испытываемая в таких масштабах. Но как ни странно все вроде бы работало.
Все хорошо, все замечательно. Но приходит день X . Рядовому игроку мало игр по локалке. Нужен доступ в интернет и игры по интернету. Как раз появился Warcraft 3, и битвы на Battle.net завладели умами игроков.
Начальством поставлена задача  - реализовать в программе возможность подсчета и блокировки интернет-трафика.
В тот период, программ для компьютерных клубов, которые продавались в интернете, было не так много. А уж считающих трафик - одна/две. Те что работали с трафиком, реализовали это через работу с сервером на linux. Он считал и блокировал интернет. Для меня же Linux тогда был  священной коровой. Программировать под него даже и мысли не было. Нужно было найти решение под Windows ( в тот момент Windows 98).

Поиски в интернете приводили только к одному - надо писать драйвер для Windows. На этом фоне перспектива использования Linux ,  была более радужной. Но в итоге, половину задачи удалось решить с помощью драйвера WinPCap. Он как раз таки позволял считать трафик на локальной машине. Нашлись и примеры использования его на Delphi. Использование его показало, что считает примерно правильно, не учитывая видимо некоторый служебный трафик. Но такого результата было достаточно.

Подсчет подсчетом, а блокировать трафик надо. Попалась на глаза следующая идея. Можно получить список открытых сетевых сессий, как программа netstat, а потом каждое соединение убить. Все это делать в цикле, т.к. новые соединения появлялись периодически. Был найден пример кода, и реализовано в программе. Радость была безмерной, работало, считало, блокировало... но не все блокировало. Например, в Counter-Strike можно было играть вечно. Трафик не блокировался. Оказывается UDP пакеты не блокировались моим методом. Облом был сильным. Всяко пробовал, но трафик не блокировался.

Не помню уже как мне пришла эта мысль,  решение было очень простым и действенным. Нужно было просто посмотреть как работает сеть. Чтобы попасть в интернет, пакеты должны попасть на шлюз. А если шлюза нет - нет и интернета. ЭВРИКА!!! Просто удаляем шлюз по умолчанию и интернета нет. Добавляем шлюз - интернет есть. За это отвечает команда 
route delete
и 
route add
Все работало как часы.

Казалось бы, задача реально сложная, а решается в пару строк кода. Возможно решение покажется корявым, но оно работало. Кстати, даже на современных ОС оно будет работать.

суббота, 7 ноября 2009 г.

Проблемы с SVN

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

В итоге появилась такая вот запись номером 3516 в баг-трекере Subversion. Если на русском, то суть вот в чем.
Имеем svn сервер с sasl. В нем два различных репозитария, один публичный, другой закрытый. Отличаются они записями в файле authz. Для публичного
[/]
*= r
master=rw
Для приватного  
[/]
*=
master=rw
Т.е. если ты не прошел аутентификацию , то тебе ничего нельзя.
Пробуем посмотреть лог обоих репозитариев. Для публичного он будет такой (это вывод в консоль, так что все нормально) 
r10 | sonar | 2009-03-16 09:21:53 +0300 (Mon, 16 Mar 2009) | 1 line

?\209?\131?\208?​180?\208?\176?\2​08?\187?\208?\181​?\208?\189?\209?​139 ?\208?
\191?\209?​128?\208?\190?\2​08?\181?\208?\186​?\209?\130?\209?​139 ?\208?\180?
\208?\187?\209?\143 ?\208?\188?\208?​184?\208?\179?\2​09?\128?\208?\176​?\209?
\134?\208?​184?\208?\184 ?\209?\129 ?\208?\190?\209?​135?\208?\181?\2​08?\189?
\209?\140​ ?\209?\129?\209?​130?\208?\176?\2​09?\128?\208?\190​?\208?\185 ?\208?
\178?\208?​181?\209?\128?\2​09?\129?\208?\184​?\208?\184 ?\208?\189?\208?\176 ?
\208?\189?\208?​190?\208?\178?\2​09?\131?\209?\142​.
--------------------​--------------------​--------------------​------------
r9 | sonar | 2009-03-16 09:06:05 +0300 (Mon, 16 Mar 2009) | 1 line

?\208?\161?\208?​190?\209?\133?\2​09?\128?\208?\176​?\208?\189?\208?​181?\208?
\189?\2​08?\184?\208?\181​ ?\208?\178?\208?​181?\209?\128?\2​09?\129?\208?\184​?
\208?\184 0.9
--------------------​--------------------​--------------------​------------
Тут мы видим и дату , и пользователя, и сообщение ревизии. Для приватного вывод будет следующим 
--------------------​--------------------​--------------------​------------
r10 | (no author) | (no date) | 1 line

--------------------​--------------------​--------------------​------------
r9 | (no author) | (no date) | 1 line

--------------------​--------------------​--------------------​------------
r8 | (no author) | (no date) | 1 line
Тут мы видим "ничего".

Может возникнуть мнение, что ошибка в самом хранилище. Но я объясняю на двух разных для наглядности. Тоже самое будет, если для публичного отредактировать файл authz  как у приватного. Следующий возникающий вопрос - а ты то под тем логином/паролем заходишь? Специально проверил такой командой 
svn log svn://address --username master --password pass
Результат прежний.

В итоге напрашивается такое объяснение. Команда log  не использует логин/пароль для чтения данных, а ломится на сервер под anonymous.

Будем надеяться, что исправят эту ошибку, либо укажут что я делаю не правильно. Жаль только, что аж с 27 октября к багу ни одного комментария.