понедельник, 26 марта 2012 г.

FarColorer 1.0.3.10



Colorer 1.0.3.10 для Far 3

Изменения
  1. Плагин адаптирован под Far3 build 2573 API
  2. Выводим название текущего региона, а не родительского в меню "Данные региона"
Изменения схем
New:
- UniVision Basic (Pete Howell)
- markdown (Roman Kuzmin)
- squirrel
Fixed:
- matlab - try/catch support
- postscript - add keyword
- fix error in csharp, markdown, pl1, ubasic
- c-win32.ent - add keyword, constants
- c.hrc - printf format string


среда, 14 марта 2012 г.

FarColorer 1.0.3.9 и обновление схем


Colorer 1.0.3.9 для Far 3

Изменения
  1. В меню добавлен пункт вывода имени региона и схемы под курсором
  2. Исправлено: после смены цветового стиля не происходило обновление экрана
  3. Реализован вызов плагина из макросов по callplugin 
Изменения схем
New:
- SHPAML (Eric Gustavson https://github.com/occulens/shpaml-colorer)
- Less Css (lazyeugene)
- SilverStripe (lazyeugene)
Fixed:
- Far MacroLib
- Far.hrc - new in Far3
- Html - pair tags, conditional comments (IE) , new tags and etc. (lazyeugene)
- CSS - new keywords (lazyeugene)
- ASP - insertions in the scipt tags (lazyeugene)
- php - new keywords, json, OAuth; function name and constants case insensitive (lazyeugene)

Измененные схемы так же можно скачать отдельно по ссылке hrc-update.2012-03-15.7z

воскресенье, 8 января 2012 г.

Утечки памяти и невозможность управлять памятью

Очень часто C++ упрекают в том, что в нем сложно управлять памятью. Постоянно программисты забывают освобождать указатели. Из-за этого падают программы, или в лучшем случае съедают много памяти. Сам часто делаю такие ошибки, благо современный инструментарий позволяет находить такие ошибки. Но самое главное, ты сам можешь управлять памятью. Хочешь - выделил, хочешь удалил. Свобода выбора.
Другое дело встроенные в ПО языки программирования. Например Oracle PL/SQL.
Последние пару месяцев довелось проводить нагрузочное тестирование продукта, работающего на Oracle 10g. Куча тестов, снятие трейсов, анализ трейсов. Рекомендации по оптимизации, патчи. Вроде все нормально. Но как обычно, пришел он. Писец. Процессы на базе данных съели всю память, PGA вырос до максимума, база встала. Налицо серьезная утечка памяти.
Первая мысль - сейчас возьмем какой-нибудь инструмент для oracle и найдем, что течет. Ха, нет такого. DBA говорят, что есть вроде тузла, но плохо документирована, и они её сами не знают. Поиск в гугле по возможному поиску утечек памяти говорит только об оном - снять дамп памяти с процесса и провести анализ. Что этот анализ даст не очень понятно.
Вторая мысль - у нас ведь есть код. Будем в нем искать. Но что может течь в pl/sql ? встроенные типы number, varchar ? более сложные структуры ? в pl/sql нет понятия деструктора. Присвоил переменной значение, попользовался, забыл. Oracle сам подчищает. Максимум для массивов можно и нужно вызывать удаление всех элементов. Плюс в некоторых пакетах, работающих с clob и xml, нужно вызывать методы очистки. Хотя по умолчанию, время жизни у них в пределах функции.
Поиск по коду, комментирование кусков кода и т.п. в итоге указало на массив с переменными типа xmltype. Но все было корректно с точки зрения кода. Печальный вывод - бага oracle.  Oracle сам управляет памятью, мы ничего не можем вручную удалить (кроме массива). При присвоениях переменным результата работы функции мы не знаем, что будет сделано с памятью - будет копирование, или присвоение указателя на кусок памяти. Мы отданы на милость Oracle и его баги.
Для подтверждения лезем на металинк и ищем похожие ошибки. И оказываемся не одинокими. Куча ошибок с утечкой памяти в xmltype. Патчи? не, вы обновитесь на 11g (задача не тривиальная, и требующая проверки всего кода на совместимость), там скорее всего нормально. А если нет, мы вам выпустим патч на 11g. И сплошь попытки найти ошибки в коде заявителей. К нашей радости, мы нашли обходной путь для очистки памяти.

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

FarColorer 1.0.3.7 и обновление схем



Как и обещал ранее, добавил совместимость с windows 2000 SP4. Вот одна из статей, где описано что нужно сделать в коде для компиляции в VC++ 2010 программ для windows 2000. Более интересный вариант от far group у меня поначалу не завелся, поэтому отказался от него.

Colorer 1.0.3.7 для Far 2
Colorer 1.0.3.7 для Far 3

Изменения
  1. совместимость с windows 2000 sp4 
Изменения схем
New:
- Go (Mikhail Kupchik)
- Far MacroLib (Max Rusov)
Fixed:
- NowDoc in PHP
- regexp
- C++ function outline
- far.hrc - new in Far3
- vbasic and vbscript - fix outline
- lua (Aidar, darkmist )
- cobol.hrc: updated keywords list, removed import, color all keywords the same, allow string in single or double quotes (Pavel Pleva)
- cobolfr.hrc: updated keywords list, removed import, color all keywords the same (Pavel Pleva)
- pl1.hrc: added preprocessor comments, removed import, and other (Pavel Pleva)

Измененные схемы так же можно скачать отдельно по ссылке hrc-update.2012-01-08.7z

среда, 4 января 2012 г.

Небольшое достижение

Вот такой подарок получил на новый год на месте работы.
P.S.  это не конкурс красоты -)

вторник, 27 декабря 2011 г.

FarColorer 1.0.3.6

По просьбам пользователей, версию для Far 2 не забрасываю. Буду исправлять ошибки. Остальные плюшки только в версии под Far 3.

Colorer 1.0.3.6 для Far 2

Изменения для Far 2

  1. исправлен ввод символов _ и ~ в outline
  2. при указании своего catalog.xml проверка наличия rgb стилей проверяется только при включенном режиме TrueMod
  3. при смене типа файла не очищались списки функций и ошибок.
  4. если в сохраненных настройках установлен отсутствующий на момент загрузки цветовой стиль, то вначале пытаемся загрузить стиль по умолчанию (default), затем первый в списке.
  5. ошибки при работе с меню выбора типа файла
  6. переменные окружения в путях до hrc файлов
  7. разные мелкие ошибки и оптимизации
Colorer 1.0.3.6 для Far 3

Изменения для Far 3
  1. исправлен ввод символов _ и ~ в outline
  2. при указании своего catalog.xml проверка наличия rgb стилей проверяется только при включенном режиме TrueMod
В следующей версии заставлю плагин работать под Win 2000. Надо только добраться до тестовой зоны. Решение у Far Team уже есть.

воскресенье, 25 декабря 2011 г.

FarColorer 1.0.3.5 для Far3

К выходу первых публичных сборок Far 3 адаптированная версия плагина.
Colorer 1.0.3.5 для Far 3

Изменения
  1. Плагин адаптирован под Far3 build 2328 API
  2. Настройки сохраняются и читаются через Far API
  3. Плагин именуется FarColorer
  4. ошибки при работе с меню выбора типа файла
  5. работа с TrueMod Far3
  6. переменные окружения в путях до hrc файлов
  7. "крест" работает на темных схемах и в TrueMod
  8. на отображение "креста" не влияет присутствие символа табуляции.
  9. при отображении в редакторе символов пробела/табуляции им задавался разный цвет
  10. если в сохраненных настройках установлен отсутсвующий на момент загрузки цветовой стиль, то вначале пытаемся загрузить стиль поумолчани (default), атем первый в списке.
  11. при смене типа файла не очищались списки функций и ошибок.