Pages

Thursday, 14 June 2007

B...y developers!

Привет, народ!

Это письмо ни о чем, просто так - крик души! В мои обязанности входит "доставка" приложений на десктопы пользователей. Я бываю просто поражен, какое количество приложений написано без оглядки на то, что обычный пользователь может не быть локальным администратором! Сколько приложений сохраняют настройки в HKLM вместо HKCU, пытаются писать временные файлы в директорию, куда приложение было установлено, как будто инстоляционная директория - мусорная свалка. Я напрасно потратил три дня, пытаясь понять, что в .msi, который я запаковал, было неправильно. Ситуация осложнялась тем, что это было Java приложение и опыта траблшутинга у меня с Java практически никакого. Сначала я грешил на себя, но после того, как приложение не заработало  и после "ручной" установки, я уже начал подозревать нехорошее. Пол дня провел, вооружившись утилитами sysinternals, чтобы понять, как работает приложение. Оказалось, что оно всего-лишь хотело писать лог-файл в корень диска C:! Конечно же, обычный пользователь этого удовольствия иметь не может и приложение вылетало с загадочной ошибкой java.null.pointer. Так и хочется встать на колени и просить кого-то там, на небесах, научить разработчиков тестировать приложения и понимать, что приложения могут быть использованы не только один компьютер-один пользователь, а один компьютер-несколько пользователей. Или даже один компьютер-несколько пользователей одновременно (терминальные сессии, например). И пользователь - это не локальный администратор! А обычный пользователь. У нас GPO, которое конфигурит дополнительные права для пользователей, чтобы приложения работали на компьютерах, занимает, наверное, целый экран. Кстати, когда меня просят запаковать что-то под  Java, мне сразу же хочется отгрызть себе ногу!!! Это еще один обман: типа написано однажды - работает везде! Фиг! Куча проблем из-за несовместимости разных версий Java. У нас есть приложение, которое требует 1.3.1 и не работает больше ни с чем. 1.3.2 - может, и работает, но поставщик его не поддерживает. Есть приложение, которое работает с 1.4.х, но не работает с 1.5.х, есть приложение, которое требует 1.5.х и не работает с 1.4.х, но бизнес требует, чтобы оба этих приложения были доступны на одних и тех же десктопах. Последнюю 1.5 недели именно этим и занимался. Я бы мог решить эту проблему кардинально: Altiris позволяет "виртуализировать" приложения, но это стоит денег, а мы все хотим быстро, чтобы работало и, главное - бесплатно! В общем, беда. Если люди - все такие, то как еще самолеты не падают с неба через одного, а машины могу ездить вообще без ремонта!? Что, где-то есть другая порода людей, про которых мы не знаем!?

Засим раскланиваюсь,

Рустам.

7 comments:

Yevhen said...

Почитал я твои пост, так сказать. Пошел колбасы покушал, чаю попил,
чтобы страсти внутри поутихли, и решил написать высказать свое мнение.По-моему, не с того конца ты начал. Проблема не в языке программирования, а в том как и кто его использует. Java - кросплатформенный язык и его в принципе не надо использовать для хранения параметров в Regestry. Можно конечно, не нужно.Кроме
того, ты сертифицированный инженер и то, что у тебя нет знаний и опыта
как устанавливать продукты, написанные в вашей же компании, скорее
минус тебе. Языков не так много: C++, C# и Java. Другое дело, что разделение труда намного эффективней чем "широкопрофильность". Но тут опять не Java виновата, а руководство.А что до совместимости, то при желании (или не желании) можно написать программу на C#, которая будет работать с .Net 1.0 и не будет с 1.1 и 2.0, или сварганить что-то на "плюсах", что будет требовать не только Win XP, но и SP1 или выше.Так что зря, товарищ, ты Java обижаешь :)

Rustam said...

Привет, Женя!
 
Ну так смысл не в том, что я Java обижаю, а в том что на нее возложили слишком много надежд. Про registry я имел в виду совсем другие приложения. Cisco CTIOS client, например. Просто Java начали "тыкать" в слишком много мест, не утруждая себя даже подумать, имеет ли это смысл делать или нет. Я как-то приводил пример о том, что у нас один наш разработчик мне выдал: "я пишу на java под windows". Лучше бы на visual basic писал!
Женя, с чего ты взял, что у меня нет знания и опыт как устанавливать продукты, написанные в нашей компании!? :) У нас пишут не так уж много, и, поверь мне, разработчики подошли ко мне на первоначальном этапе разработки продукта и я им рассказал, что надо сделать, чтобы приложение работало в нашей среде. И хоть оно и написано под IBM Java VM, тем не менее спокойно запускается и не зависит от директории установки (сначала пути были жестко прописаны), и не требует админовских прав. Проблема в других приложениях, которые бизнес покупает и не спрашивает нас, сможем ли мы это приложение сделать рабочим в нашей среде или нет. Кроме того, как только проплачены деньги, у нас сразу же пропадает сильный рычаг воздействия на разработчиков. Они на нас начинают давить, типа бизнесу надо - что хотите делайте, но сделайте это рабочим. Так что бочку я качу не на конкретный язык или еще что-то, а на то, что разработчики практически всегда не спрашивают у системных администраторов или совета, или хотя бы описания среды, где приложение должно работать.
 
Руст.

Alexandr said...

По поводу бочки, вопрос не в том что разработчик должен спрашивать, всех не спросиш, а вопрос в том что разработчик должен писать ИМЕННО кроссплатформенную фичу
да и еще один вопрос, если временный файл пишеться в корень диска С: то где на юних-линух ты найдеш такой диск?
кроме тогоразработчик ОБЯЗАН был оттестировать приложение при работе с минимальными правами, насколько я понимаю это и было сделано ;)
могу ошибаться, но по умолчанию не админ имеет права записи в корень диска (вин 2000) с ХР помоему поменялась ситуация
кстати у нас была похожая ситуация с терминальнм сервером, стоит себе такое скромное бух приложение, так вот при печати создаеться временный файл типа принт.тмп в системрут\темп и это для ВСЕХ пользователей, имя временного файла было зашито так что нельзя было создавать файл с последовательной нумерацией, вот и выходило, работает 10 человек на терминалах, если двое одновременно кинули на печать у обоих вылез ОДИН и тот же документ :)

Andrey said...

Я вот только не понял в одном из постов при чем здесь системный инженер к языкам разработки?

Mike said...

Разработчики(программисты) здесь ни при чем. Куда их QA department смотрел? Они такие вещи должны были моментально отловить. Или они тоже тестируют только в однопользовательском режиме и с админ правами?

Alexey said...

Ну, раз столько народу высказалось... :) Я согласен с тем, что индусам, которые программируют на "java под windows", и пишут временный файл с фиксированным именем в корень диска C:, надо оторвать всё, что торчит, причём сразу. И никакая java такому человеку не поможет - он будет писать говно, а другим девелоперам и админам нужно будет с этим говном работать.А насчёт java приложений, работающих исключительно под 1.3.1 - можно такое сделать, очень сложно, но можно. Проблемами обратной совместимости традиционно слегка страдает Swing - java GUI API. И то, что у тебя все java приложения - GUI, добавило тебе шансов встретиться с такими вот ляпами. Рулез джавы в смысле мультиплатформенности в том, что это до сих пор самая в мире мультиплатформенная среда разработки из всех, что существуют. И принцип write once run anywhere работает очень хорошо. Не абсолютно идеально, так как нет ничего иделаьного в мире, но очень хорошо.

Andrey said...

Ничего, скоро Microsoft всех похоронит своим проектом SilverLight ;)

Post a Comment