Самопал…

На работе по долгу службы частенько приходится сталкиваться с программами написанными на коленке. Сейчас попробую объяснить, что я подразумеваю под этой фразой. Например, какая-нибудь небольшая фирма, или не большой областной банк, или гос.учреждение хотят предоставлять доступ к своим услугам с помощь программного комплекса и ЭВМ (в народе комп) и, либо не имеют лишних средств на разработку такого комплекса, либо просто нет в штате программистов, находят программистов, либо среди своих знакомых, либо за тридевять земель в далёком Энске. Я прекрасно понимаю, что кто-то таким образом учиться программировать, кто-то пытается заработать лишнюю копеечку, у кого-то совершенно другие мотивы. Не суть важно, а важно то, как пишите свой код и какие продукты вы используете. Итак, на работе у меня есть три специфичные программы (установлены на трёх разных компьютерах), которые написаны совершенно разными людьми, живущих в разных городах нашей большой страны и никак друг с другом не пересекаются (по понятным причинам названия программ я не буду упоминать).

Не знаю как в других фирмах, но у нас процедура установки вот таких навязанных «левых» программ проста: узнаём на какой ОС работает, минимальные системные требования, и, как правило, софтозависимость. На все компьютеры с лицензионной виндой мы устанавливаем ОпенОфис, это так, на заметку. На паре компьютеров (у начальников) установлен MS Office 2007 (2003-ий уже давно перестали продавать).

Программа №1.
Узнаём, что для работы необходима Windows XP со вторым сервис-паком (на Windows 2000 работает, но бывает подтормаживает), нужен интернет, т.к. базы и само ПО обновляет с удалённого сервера. Что же, вроде бы не плохо, за актуальностью базы следить не надо, да и сама программка умеет обновляться. Устанавливать саму программу к нам приехал представитель той фирмы (типа, всё секретно, там логины, пароли и прочая чушь). Мне ещё проще, стоишь рядом и смотришь что делает ентот представитель. Вот скажите мне, зачем после установки программы, которая нужна для, например, составления отчётов, ведения учёта и т.п., обязательно перегружать компьютер?

Хорошо, компьютер перегрузили, запустили программу, ввели секретные логины-пароли, соединились с сервером, закачали свежие базы (как-будто их нельзя было сразу принести на флешке). А дальше… А дальше начинается самое интересное. После закачки представитель фирмы говорит, что сейчас минут 30-40 (это на Core2Duo E6400 с 1GB оперативы) будут базы перепаковываться и индексироваться. Одним словом, крайне важная операция, иначе программа работать не будет. Отлично, есть время покурить и выпить кофе, ушёл. Прихожу через 15 минут, посмотреть на процесс индексирования, а он даже и не начинался. Этот представитель уже третий раз запускает индексирование и всякий раз получает окно с ошибкой типа «в программном модуле таком-то возникла ошибка» (текст почти один в один). А вот какая ошибка и из-за чего она возникла автор программы как-то не удосужился сообщить (писать в отладочный лог-файл, у виндо-программеров видимо не принято).

Представитель тем временем, бормоча под нос, что «вот раньше-то всё было нормально» пытается что-то сделать с индексированием, но всё без толку. На моё едкое замечание, что «типа вы в собственной программе разобраться не можете, ну свяжитесь с вашими программистами», получил не менее едкое «программист живёт чёрт знает где и у него сейчас глубокая ночь, и вообще связи с ним практически нет». Короче, как оказалось, что для нормальной работы этой программе необходим установленный MS Office Access! Сами понимаете, что у нас продукты от MS не лежат в неограниченном количестве, временно поставили пиратку, и программа действительно заработала. После моего вопроса, «а больше никаких продуктов MS программа не потребует?», получив утвердительный ответ, оформили заявку на покупку этого дурацкого MS Office Access 2007 (цена вопроса 6-7 тыс. рублей), которым толком никто не умеет пользоваться.

Лицензионный MS Access в скором времени пришёл и пиратка была удалена, и тут возникла ещё одна проблема (программа уже работала несколько месяцев). Не составляются какие-то там отчёты, раньше они были не нужны, а вот теперь стали требовать. Сам отчёт формируется, но никуда не сохраняется и не выводится, и нет никаких ошибок. Путём долгих разговоров с представителем той фирмы, удалось выяснить, что для составления этого отчёта на компьютере должен быть обязательно установлен, внимание, MS Office Excel!!! Пришлось покупать ещё одну коробку за те же деньги, но уже с Экселем.

Программа №2
Как всегда выяснили что необходимо для работы — только «виндоус» или W2K или XP. Надо отдать должное, программа отлично работает как в одной, так и в другой ОС. Вроде бы небольшая банковская программа должна быть изначально солидной и всем своим видом показывать, что за неё деньги заплачены не зря и банк этот надёжный. Однако нет, кустарщину с головой выдаёт иконка Дельфи в левом верхнем углу программы (я когда-то давно-давно программировал на Дельфи). Программа была установлена довольно давно и столь долго она нормально работала. В какой-то момент компьютер был заменён на более мощный. Все программы были бережно перенесены с одной машины на другую. Пользователь проверил, мол да, все программы отлично работают (проверялись только основные функции). Как это всегда бывает неожиданно и очень срочно понадобилось сделать какой-то там отчёт, который делают раз в год.

Программа отчёт создаёт нормально (это видно по статусной строке), но вот выводить его на экран, а уж тем более печатать отказывается. Зато пользователю показывают небольшое окошко с ошибкой, которая гласит, что « в таком-то модуле программы случилась неприятность с кодом ошибки». Звоню в этот банк, говорю о своей проблеме, на том конце девушка убеждает меня, что я не прав и нажимаю не на те кнопки, но их программа отлично работает. А вот после того, как я им на мыло отправил скриншоты с их программой и ошибкой, сильно задумались. Даже начали предлагать какие-то варианты устранения это проблемы, но ни один из них так и не сработал. Потом девушка эта сказала мне, что они будут сильно-сильно думать и пытаться воссоздать у себя на компьютере подобную ошибку, т.к. они не могут понять в чём проблема.

Ага, им надо думать, а мне надо кровь из носа, но чтобы отчёт до вечера был распечатан и положен на стол начальника. Самое странное, что на старой машине всё работало отлично. Начал сравнивать, вся разница в компьютерах была в ОС (W2k и XP), и в наличии MS Office на одной и его отсутствии на другом. А дальше всё просто, был быстро поставлен MS Office Word с пиратского диска (а что делать?) и проверена работоспособность программы. Как можно и предположить, отчёт создался, отобразился и распечатался. Сразу заказал коробку с MS Office 2007 Стандарт (вдруг этой программе ещё чего-нибудь из MS понадобиться). Позвонил в тех поддержку и поинтересовался, а «что для работы программы обязательно нужен MS Word?» На том конце провода удивлённо спросили, а что у вас его нет? Конечно нет, его же надо покупать, он денег стоит, а для работы с 99% документов вполне хватает и OpenOffice. Радует то, что там пообещали в ближайшем будущем отказаться от этой привязки к Ворду.

MS Office куплен и установлен, программа работает, изменили они или нет, не знаю, т.к. не удалять же лицензионный продукт ради проверки, да и времени нет на сомнительные эксперименты.

Программа №3
Продолжительное время использовалась ДОС-версия этой программы. Разработчику ПО не раз уже говорили, что на дворе 21 век, а вы всё ещё выпускаете и поддерживаете ДОС-версию своей программы. С ней периодически возникают проблемы, то не печатает на сетевой принтер, то вместо русских букв закорючки, то памяти не хватает. В конце концов они приехали устанавливать новую программу под Windows XP. Требования к железу были следующие (хочу заметить, что это простая рабочая станция пользователя): процессор не ниже 3-х GHz, оперативы не менее 1024 MB, жёсткий диск не менее 80 GB. На мой вопрос, «это что у вас сетевая версия программы», ответили, что «нет обыкновенная версия на десктоп». Одним словом были посланы с такими требованиями, получили рекомендации как-то оптимизировать своё ПО, под менее «навороченные» компьютеры, ведь согласитесь, что иметь такую машину рядовому сотруднику, который работает с документами, да парой сетевых программ, да ещё и наращивать мощности с выходном каждой новой версией, как-то накладно будет выходить.

Ладно, кое-как программу установили, однако отчёты не формируются и не печатаются. Представитель фирмы долго голову ломал, что может быть, пока до него не дошло, что на компьютере вместо MS Office установлен OpenOffice. А для нормального функционирования этой программы обязательно надо иметь установленный MS Excel. Этот дядя от меня также услышал много «лестного» в адрес своей компании, но всё же пришлось заказывать очередную коробку с MS Office Excel 2007.

В один прекрасный день эта программа перестала запускаться. Выскакивает окошко, что возникла ошибка, память чего-то там и вообще работать не будут. Сообщили разработчикам, они сразу спросили про установленный MS Office Excel и… не переустанавливали мы программу. Получив на первое утвердительное да, а на второе не менее утвердительное нет, прислали своего специалиста. Этот «специалист» приезжал к нам целую неделю пытаясь решить проблему. Чего он там только не делал, но всё равно получал ошибку и не рабочую программу. Проблема была решена банальным образом (видать исчерпав все возможности), отключили антивирус Avast Professional и программа заработала. Хочу заметить, что Avast мы официально покупали на организацию с необходимым количеством лицензий, и после очередного обновления, Avast стал определять эту программу как вредоносную. Я не знаю как там программисты разработчика пишут свой код, но я ещё ни разу не видел, чтобы антивирус нормальную и легальную программу определял как троян и т.п.

Резюме
Господа программисты, уважайте свой труд и уважайте пользователей, которые пользуются вашим продуктом. Если уж используете в своих разработках сторонние библиотеки, так указываете в описании своего продукта без чего ваша программа работать не будет, если эти библиотеки нельзя распространять в составе других. Если уж и выскочила ошибка, связанная с работой стороннего модуля, то ссылайте не внутреннюю ошибку своего модуля, а на не хватку той или иной сторонней библиотеки. В конце концов, ведь ещё на стадии первого запуска программы можно же определить какое необходимое ПО установлено, а какое нет? Можно, я знаю. Соответственно, нет такого ПО, программа и не будет устанавливаться, зачем нам устанавливать заведомо не рабочую программу?

Ну, а тем, кто продвигает и распространяет подобные продукты, могу посоветовать в стоимость вашей программы, ещё и дописывать возможную стоимость дополнительного ПО, без которого эта программа работать не будет. Так будет честнее, ну а мы лишний раз подумаем, а стоит ли связываться с вами и вашей «чудо-программой».

P.S. Не думайте, что у таких фирм, как 1С, всё работает отлично. Фиг там, не все, но некоторые отчёты создаются только при наличии установленного MS Office Excel. Просто настолько уже наболело и достало такое отношение к пользователям, что…

Самопал…: 22 комментария

  1. Есть такое. Напрямую с такими программами пока не сталкивался, но слышал от своего приятеля, которые винды админит.

  2. Да-с, три хита от любителей ms office 🙂

    > а что у вас его нет?

    Вот эта реакция мне нравится. У людей нет представления о существовании каких-то альтернатив, продукция ms воспринимается как стандарт de facto.

    s/Сражу/Сразу

  3. Dr.AKULAvich

    Очепятку исправил, спасибо.

    .

    Тут скорее не альтернатива, а просто все привыкли что у всех стоит пиратка. 🙂

  4. Имхо, к MSOffice'у привязываются просто потому, что у него есть легко прикручиваемый OLE Automation, куча примеров, документация к API прямо в самом оффисе и не нужно никаких рантаймов для работы с ним. Я вот работаю в локализации игр и тоже этим грешу, хотя у нас на работе MSOffice есть везде, и пока нет смысла копать в сторону OOo

    А ещё есть штука под названием UniOffice (wiki.etersoft.ru/UniOffice) — хотя там вроде только эксель, я какое-то время назад исходники глянул и оно мне не подошло (гоняю для скорости данные в виде xml, а оно этого тогда не поддерживало, не знаю как сейчас). Если где-то привязка к экселю — может быть вам подойдёт...

  5. Вот-вот...

    А я занимаюсь написанием подобной программы на delphi 🙂

    Хочется перейти на OpenOffice и руководитель дал согласие, но нет времени.

    Багов в программе куча. Ее нельзя распространять вне нашей организации, но приходят какие-то покупатели и покупают! А мы продаем, конечно, деньги лишние не помешают 🙂

  6. Про самопальный софт у меня тоже назрело... Буду заметку писать.

    А вот про Аваст у меня вопрос — сколько стоит версия на предприятие и как она по ощущениям?

  7. >сколько стоит версия на предприятие

    Зависит от количества лицензий avast.ru/buy.htm продление будет выходить дешевле.

    .

    >как она по ощущениям?

    В общих чертах, не советую, а так сам смотри. 🙂

    Почему-то только версия PRO непонятным образом подвешивает всю систему (разные по железу компы), хотя в Хоум Эдишн такого нет, в частности вешает Эксплорер. Бывает пропускает вирусы, хотя обновляется каждый день. Создаёт слишком большой траффик без централизованного локального сервера.

    .

    Сейчас ждём, когда закончится срок действия лицензии и будет, скорее всего переход на другой. Пока присматриваемся к Доктору Вебу.

  8. pktfag

    Вы так ничего и не поняли. 🙁

    Вы кидаетесь из одной крайности в другую. А не проще написать свою систему вывода на печать, чем зависеть от библиотек сторонних программ?

  9. Alexey

    Вы понимаете, что с таким подходом Вашу фирму могут легко затаскать по судам? Это же бред получается, для родной игры на английском языке MS Office не нужен, а для локализованной русской игры — нужен!!! На обложке игры где-нибудь упоминание о необходимости в установленом MS Word есть?

  10. MadDog

    Вы меня не поняли, офис нужен не для игры, а для внутренних утилит (которые я пишу), которые нужны для их локализации (например, чтобы вставить свежий текст в игру, напрямую из эксельника). У нас весь оборот текстовых материалов происходит через эксельники, логично что через оле с ними работать гораздо быстрее и удобнее чем руками/ещё как-то. Забавность тут получается в том, что у меня дома, например, ни офиса ни экселя нет, получается довольно забавная зависимость, что я своими же утилитами могу пользоваться только на работе. 🙂 Ну и соответственно, если давать эти утилиты каким-нибудь фрилансерам — тоже вопрос, есть ли у них MS Office...

  11. Значит Аваст вычёркиваем. Я себе на пробу поставил ДрВеба бесплатного.

    Как-то он не вдохновляет.

    А вот от KIS 7 остались вполне приятные впечатления.

  12. Alexey

    А-а-а, действительно не понял. 🙂 Ну в данном случае, мне нечем Вам возразить. У нас на работе тоже есть самописные программы, которые работают только в наших условиях, но мы их не распространяем.

    .

    StraNNicK

    Жень, а чем не понравился ДрВеб? Просто Каспер у нас стоит в бюджетном подразделении (навязанный сверху), хоть всё и централизовано (на клиентах только небольшой модуль), но бывает такие тормоза на новых машинках...

    .

    Лицензия на Аваст у нас заканчивается только весной, так что ещё есть время сравнить и по тестить. 🙂

  13. MadDog

    Я понял, что, если для печати из одной программы требуется еще одна программа — это плохо. Но, если это программа платная, то печать из данной программы — еще хуже. Если будет печать из свободной программы, то это уже лучше.

    Много кода придется переделывать, если печатать из своей программы

    Придется писать эмулятор, переделывающий вызовы к Excel'ю в вызовы внутренние.

    Вы мне подали идею, спасибо, а то привык работать только с Excel'ем, и не вижу другого решения проблемы с лицензиями кроме OpenOffice'а.

  14. pktfag

    Вы бросаетесь из одной крайности в другую. Если Вы будете использовать библиотеки OpenOffice'а, то Вы невольно заставите устанавливать своих пользователей этот самый OpenOffice. А если у человека уже стоит MS Office, вполне лицензионный. Не думаю, что такой человек будет выкачивать 150 мегабайт только для того, чтобы иметь возможность печати из Вашей программы. ИМХО, он просто не будет ей пользоваться.

    🙂

  15. MadDog

    Какие крайности? Ведь поддержка MS Office останется на таком же уровне.

    Добавится поддержка OpenOffice'а и, вероятно, внутренней системы печати за счет эмуляции.

    Так что человеку, у которого стоит MS Office, не нужно ставить OpenOffice.

    Ну, это все мысли вслух, может эмуляция не совсем хорошее решение.

  16. К тому же, на всех наших рабочих местах мы уже поставили OpenOffice, и MS Excel (для нашей программы используется MS Excel).

    А наши покупатели тоже, в основном, уже перешли на OpenOffice, только для нашей программы ставят MS Excel.

  17. >Ведь поддержка MS Office останется на таком же уровне.

    А-а-а, тогда понятно, просто я подумал, что Вы напрочь решили отказаться от использования библиотек MS.

  18. MadDog

    Крайности крайностями, но чем-то печатать всё-таки надо, и никакая эмуляция тут не поможет. Чтобы что-то напечатать, это надо сначала отрастеризовать: отформатировать абзацы и т.д. и т.п. Тут об одну реализацию форматирования простого текста через Uniscribe можно будет убиться, а если нужно что-то серьёзнее — получится, что мы как-минимум рендерер какого-то текстового процессора реализуем. А из стандартного я лично ничего кроме RichEdit контрола в обычной винде не знаю, да и вряд ли его возможностей все хватает, так что он отпадает.

    Хотя, вообще-то, есть ещё WPF (Windows Presentation Foundation), там форматирование текста и всего вообще во всём приложении очень гибкое, и все эти возможности можно использовать в том числе и при печати. Хотя я не знаю есть ли в мире программы на WPF которые бы нормально могли имитировать Look'n'Feel стандартной винды, особенно на WinXP — уж слишком всё заблюренное, а чуть что, так вообще «теряет фокусировку» на несколько секунд. 🙁

  19. Сейчас на MS Excel, задача вывода в ячейку [Row, Col] делается так

    Sheet.Cells[Row, Col].Value:='Тариф';

    Sheet объект класса TExcelApplication. Пишем эмулирующий класс, например, TCalcApplication, в котором та же задача вывода в ячейку [Row, Col] решается тремя способами:

    case Type of

    1:

    Sheet.Cells[Row, Col].Value := 'Тариф';

    2:

    OOSheet.Cells[Col, Row].Value := 'Тариф';

    3:

    внутренний способ

    А внутренний способ — это какой-нибудь Quick Report, встроенный в delphi.

    Это все обрисовано слишком упрощенно, но для понимания смысла, который я вкладываю в понятие эмуляции, думаю, хватит.

    И не надо никакой растеризации придумывать, пользуемся только средствами, которые еще до нас придумали.

  20. 2MadDog:

    «Я не знаю как там программисты разработчика пишут свой код, но я ещё ни разу не видел, чтобы антивирус нормальную и легальную программу определял как троян и т.п.»

    Как разработчик скажу — дело это не редкое, особенно если используется навесная защита. В этом случае срочно писать письма антивирусным компаниям (иногда на это уходит много времени) и они выпускают обновленные базы.

    2Alexey:

    Научитесь формировать html или что то подобное. Далее используйте дефольтный браузер.

  21. У нас на предприятии, попросили подумать над проблемой перехода на лицензионный софт, было это в 2006 году...

    У меня весь вывод шел в MS-Excel

    Соответственно «подумав», Я добавил к своей программе вывод в OpenOffice

    ... постепенно... сразу не осилить было

    1) Сначала весь вывод в Excel выделил в отдельный модуль (класс), для любого действия! и все переменные туда -же. Ну тут мне помогло то, что модуль для работы с Excel у меня и так был, просто в программе кое где была непосредственные вызовы ...

    ...после того как месяц програмка поработала...

    2) Добавил анологичные методы по выводу в OpenOffice, и сделал в настройках выбор в куда выводить... соответственно ... пользователь один раз меняет настройку вывода.

    3) Долго «тупил» только в одном месте, незнал как в OpenOffice выводить в фоне, а потом показывать на экране! оказалось что это невозможно (OpenOffice 2.xx версии), значиться, сделал так, вывод в фоне во временный файл, закрытие OpenOffice, и запуск-открытие этого файла...

    потом програмка время от времени- подчищает эти временные файлы...

    4) Пользователи были недовольны, руководство наоборот... но... вобщем руководителям отделов и выше, был закуплен лицинзионный MS-Office...

    остальные... как хотите...

    главная проблема была в том... (о мелачах нибуду)... что при открытии документа MS в OpenOffice, «сезжало» форматирование... если же, документ подправить в OpenOffice и сохранить то потом и в MS все также выглядело...

    5) Администратары у нас кое где уже поставили OpenOffice 3.xx ... проблем нет, все работает...

    конечно тут надо учесть, что у меня небыло какогото сложного вывода в Excel...

    все!

  22. С антивирусниками, пару раз проблемы были,

    у нас корпоративный Dr Web

    1) есть у меня такая маленькая программка, из командной строки послать по почте сообщение для администратора, используется в скриптах бака-па...

    ну и как-то антивирусник вдруг стал её удалять...

    помогло следующие, в исходнике программы поменял местами текст двух функций... перекомпилил и все...

    2) есть такая у меня программка, по именованному pipe по сити соединяется с сер-верной частью, естественно ради Impersonate ! и тут вдруг DrWeb стал namepipe прогонять через себя, при-чем баз impersonate, соответственно сервер уже не видит пользователя...

    все это было очень неожиданно... админ летал по всей конторе... удалял DrWeb...

    потом написали письмо... там подсказали ... что то нужно было подправить в настройках Dr Web, в общем ад-мин сам справился.

Обсуждение закрыто.