You are here

Решение проблемы

main: 
Доктор ХаусУ программистов на тему «что такое новая версия программы» есть шуточное выражение: новая версия - это когда убирают старые «глюки» и добавляют новые. Это шутка, но в каждой шутке есть доля шутки J.
 
Интернет – это свалка информации. Найти толковую, исчерпывающую и однозначную информацию тяжело. В наше меркантильное время информация – это деньги. И всё же, мне кажется, что задержка определённой информации может повредить. А её искажение – это ещё хуже.

 

Что надо для быстрой и успешной реализации проекта?
– Чёткое понимание вопроса! Ведь, правильно заданный вопрос – это уже половина ответа J.
 
Безвременье, когда ищешь какие-то ходы, решения, углубление в понимание бизнес-процессов заказчиков – может утомить, зато – это достойная гимнастика для ума. Но, часто интересной задачкой может стать и простое обновление программных инструментов (программ).

 

Это эссе о проблемках одного обновления.

 

Все программисты очень не любят писать документацию по своим программам. Это не «из вредности», часто просто не хватает времени. Но, если твой продукт используется кем-то для создания других – тут ответственность должна быть выше. Т.е., если уже пишешь документацию или ведёшь список обновлений – то там не должно быть ложной информации, противоречий и несоответствий. Старюсь этому следовать.
  
Программисты – это такие же люди, как и все. Поэтому, всем свойственно ошибаться. Даже титаны рынка ПО (не будем называть имён J), часто-густо, не сразу делают свои продукты идеальными. Да это и невозможно. Поэтому, всегда говорю своим заказчикам: «Чем раньше Вы сообщите об ошибке в программе, тем быстрее её исправлю».
 
Автор – сторонник свободного ПО (программного обеспечения). В настоящее время в разработках часто использую для работы с базой данных MySQL-сервер. В операционной системе Winows драйвера, для работы с MySQL нет. Его необходимо устанавливать отдельно. Берётся он с сайта разработчиков (так делаю сам и советую всем остальным). В настоящее время испытываю MySQL-сервер версии 5.5.9 и ODBC-драйвер к нему версии 5.1.8. Поставив данные компоненты, сразу же столкнулся с трудностями и непонятностями.
 
Оказывается, что в новых версиях, в установленных каталогах, отсутствует документация (а раньше она была!). Ладно, автор человек не ленивый – пошёл на сайт разработчика и почитал о том, как правильно настроить (благо, техническим английским – владею). И что же увидел – прямое несоответствие: то, что рекомендуется установить для работы с моим ПО – отсутствует в окне настроек… Вот и первая неприятность L.
 
Попробуем обойти, ведь есть возможность узнать, как и что называется в новой версии. При работе с драйвером есть такой параметр – называется «Option». Смотрим документацию – кодов нет (а раньше были!), появились так называемые «Флаги». Хорошо, но не плохо бы провести соответствие этих «флагов» и кодов (которые использовались ранее и используются сейчас). Ведь, эти коды никуда не делись. Странная лень разработчиков… Ну что ж, автор опять проявил смекалку и порылся в своём архиве – нашёл старые коды. Дальше, как говорится, дело техники. Проставив эти коды, увидел каким «галочкам» они соответствуют в окне настроек драйвера, и тем самым провёл прямую параллель между «флагами» и их числовыми значениями. Первая победа достигнута! Да, но странность одна осталась: рекомендация установки одной «галочки» (FLAG_FIELD_LENGTH) существует («флаг»-то есть), но на экране её нет и при успешном прохождении настроек – игнорируется… Странно… Вторая проблема L.
 
Автор человек не ленивый, методом исключений понял, что есть другой параметр, который исключает первый, и применение нужного «флага» стало необязательным. Более того, этот «флаг» вообще всегда игнорируется. Что ж, просто теперь везде этот «флаг» убираем, как неиспользуемый. Voila, вторая победа! Хотя, опять же, странная лень писателей документации. Ведь, чтобы не страдать пользователям – достаточно было написать, что данный «флаг» не используется и его заменяет другой. А в документации, где описывается, как настроить драйвер для правильной работы ПО – указать настоящий (новый). Это ведь совсем не сложно! Как говорится: «нажимай, да дуй».
 
Ладно, этап настроек «галочек» прошли. Но соединение вылетает с ошибкой, что драйвер не понимает «set names=’cp1251’»! Да, автор «мазохист» и не работает с Unicode. Дело не в этом, просто, чтобы работать с Unicode – надо обновить ранее написанное ПО, перестроить сервера клиентов и дополнительное программное обеспечение для их обслуживания. Этот вопрос длительный и неприятный. Ещё одна проблема L. Что делать?
 
Ищём ответы на сайте. К сожалению, не нашёл. Остаётся ещё одна попытка – форумы. Делаем запрос – и, о чудо, что-то находим. Ответ прост: с версии драйвера 5.1.1 – MySQL ODBC-драйвер работает с Unicode и ему всякие установки в разделе «STMT/INITSTMT» - «как зайцу – стоп-сигнал». Он их теперь не просто игнорирует, но и считает недопустимыми! Что можно было бы посоветовать разработчикам: ну напишите, что допустимо в разделе «STMT/INITSTMT» J. Вопросов сразу же будет на порядок меньше. Так же можно было бы посвятить какой-то раздел в FAQ-е вопросам языковой адаптации, ведь есть же статья, посвящённая правильной настройки работы драйвера через его окно настроек.
 
Да, автор опять же, оказался человеком не ленивым, и у него не было с этим проблем, т.к. он заранее знал, чем это может закончиться, и уже успел перестроить всем клиентам сервера на этот случай (там пишется строчка в .ini-файле). А в разделе «INITSTMT» - просто вытер свой текст… И всё заработало!

 

Уважаемые программисты! Помните, если вы что-то меняете – пишите, пожалуйста, об этом чётко и понятно, как для «чайников». Будьте проще – и люди к Вам потянутся J.

 

Карандаш.

 

Comments

Эта тема представляет ценность, узкому кругу специалистов

   Данная запись в блоге была сделана ещё в начале этого (2011) года.
Времени прошло много и описанная проблема потеряла свою актуальность.
Так что, с Вашего разрешения, я где-то через недельку
сниму эту публикацию с главной странички и помещу в архив.
 
Карандаш.

Theme by Danetsoft and Danang Probo Sayekti inspired by Maksimer