Последнее время я не программирую, а рaзгpебаю зaвалы которые оставили до меня покoления программистов. Чтобы внести минимальное декоративное изменение требуется исправить несколько модулей и потратить несопоставимую по сложности работу по выискиванию всех мест, в которые надо внести изменения.
Дело в том, что тем методы, которые допустимы в примерах, олимпиадах и лабах по программированию, совершенно неприемлемы при создании крупных и долгоживущих прикладных программ.
Предлагаю в этой теме публиковать примеры, как не надо программировать на Delphi, что бы потом не было мучительно больно от встречи с теми, кто исправлял твой код.
Всего в теме 421 сообщение
Добавить свое сообщение
Отслеживать это обсуждение 
№ 401 18-03-2010 01:26 |  |
Ответ на »сообщение 400« (Geo)
___________________________
>>> на той же флешке лежит папочка с Word.exe
Вот-вот.
Если бы ещё производители флешек совместили некоторые их них с ключами с уникальными ID
- это был бы замечательный прорыв в распространении софта.
Уникальные ID в массовом производстве не проблема - например регистраторы iButton.
№ 400 18-03-2010 00:37 |  |
Ответ на »сообщение 395« (Александр Алексеев)
___________________________
>>> Напротив, часто просят оригинальный диск, потому что насквозь почиканая пиратка не запускается (или даже не устанавливается) из-за недоустановленной зависимости.
>>> (т.н. "сборки" - это другой вопрос)
Частично согласен, так как сам всегда среди пираток предпочитал полные копии дистрибутивов, а не катрированные нашими "умниками" версии. И вовсе не из-за недоустановленных зависимостей. А либо из-за корявой русефекации (в те времена когда не было мультиязычной поддержки), так как мне с нормальной английской версией работать проще, чем с корявой русской. Либо из-за того, что некий надмозг решил, что вот эта фича является ненужной. А мне она очень даже нужна.
Но, видимо, имеет смысл сказать несколько слов и про "другой вопрос".
В свое время была очень популярна одна сборка Quake Arena. Я уже не помню точно цифры, но разница с оригиналом на порядок и никакой установки. Копируешь к себе папку с файлами и запускаешь EXE. Весь функционал, необходимый для самой игры (собственно то, ради чего конечному пользователю и нужна эта программа), в этой сборке присутствует.
Сейчас вот слышал (сам пока не видел), что есть версии MS Office, так сказать, partable: на той же флешке лежит папочка с Word.exe, который и запускается. Возможно, при этом мы теряем что-то. Какие-нибудь автообновления (которые я и так отключаю), что-нибудь с хелпом, с библиотеками клипартов или еще что-то (не видел, строю гипотезы). Тут основные причины популярности, конечно же, не в "удобстве установки", но все же основной функционал (ради которого собственно и используется программа) сохраняется.
№ 399 17-03-2010 10:41 |  |
Да, но не очень понятно, зачем ему это делать. Если он может запустить программу в режиме админа - так пускай всегда так делает.
В любом случае, это не хуже альтернативы ("программа не работает вообще").
Приведу небольшой пример. Стояла себе софтина и работала. Потом пришёл новый сисадмин и решил изменить структуру пользователей на компе. Хорошо ещё, если он представляет себе, что такое виртуализация. А если нет - где он будет искать данные? По-моему, это тоже весьма неприятное занятие.
№ 398 17-03-2010 07:24 |  |
>>> Проблема в том, что если вдруг программа окажется запущенной в режиме администратора или даже из-под другого пользователя, юзер будет удивлён - а куда пропали данные?
Да, но не очень понятно, зачем ему это делать. Если он может запустить программу в режиме админа - так пускай всегда так делает.
В любом случае, это не хуже альтернативы ("программа не работает вообще").
№ 397 17-03-2010 06:02 |  |
№ 396 17-03-2010 03:55 |  |
Бонус-возможность: если вы запускаете старую программу не под (ограниченной) учёткой админа, то (сюрприз) она будет работать. Потому что тут вмешивается виртуализация, которая перенаправляет ввод-вывод для защищённых мест в альтернативное хранилище. Чем не рай земной?
Проблема в том, что если вдруг программа окажется запущенной в режиме администратора или даже из-под другого пользователя, юзер будет удивлён - а куда пропали данные?
№ 395 17-03-2010 01:10 |  |
>>> А что мы имеем в сухом остатке: из двух зол выбрали обе, перестали работать и криворукие и пряморукие.
Это, мягко говоря, не так. Все старые программы, которые работали только под админом - точно так же продолжают работать под админом. Они как <b>НЕ</b> работали под ограниченной учёткой, так и не работают сейчас.
Философский вопрос: если программа никогда и не работала, является ли багом то, что она не работает сегодня?
Бонус-возможность: если вы запускаете старую программу не под (ограниченной) учёткой админа, то (сюрприз) она будет работать. Потому что тут вмешивается виртуализация, которая перенаправляет ввод-вывод для защищённых мест в альтернативное хранилище. Чем не рай земной?
>>> Тем, что в ini нет необходимости хранить информацию о версии и о его местоположении.
Да, зато меняется местоположение ini-файла. А если нет - то информация будет внутри ini-файла - точно так же, как с реестром.
Так что либо мы имеем те же самые проблемы, либо вместо "ой, тут надо Search&Replace сделать", будет "ой, тут надо в какое-то другое место скопировать с заменой - не ошибиться бы".
>>> Надо сначала удалить всю ветку в regedit (не дай бог не ту), потом запустить соответствующий файл.
Кто мешает в reg-файл вставить:
[-HKEY_CURRENT_USER\Software\CodeGear\BDS\6.0\Editor\Highlight\Assembler]
?
>>> Не понял данного пассажа.
Аналогия. Если вы пишете программу для себя и/или корпоративный софт - вы вправе делать как угодно и требовать что угодно. Почему? Потому что никто, кроме вас, её использовать не будет. Можете делать установку распаковкой, можете писать в C:\Windows - это нормально, ничего противозаконного тут нет.
Однако. Если вы пишете коробочный софт, который будет использоваться ещё кем-то, все эти действия выше - однозначное <b>НЕТ</b>, которое (если вы их реализуете) приведёт только к тому, что некий/значительный процент пользователей/клиентов просто удалит программу. Почему? Потому что их машина - это не ваша машина. Поэтому делать надо не так, как <b>вам</b> удобно, а как общепринято, как диктуется правилами.
Например, мне <b>неудобно</b> устанавливать программы распаковкой. Потому что вместо запуска проги и щелчка по экспресс установке или далее/далее/далее, я вынужден открыть папку с архивом, открыть архив, найти и открыть Program Files, распаковать, потом ещё создать ярлыки и настроить ассоциации... А удалять её? Блин, да я с ума сойду скорее - а лучше найду нормальную прогу, которая не парит мне мозг.
Окей, вам неудобно установщиком, мне неудобно архивом, так почему же предпочесть надо установку установщиком? Потому что это общепринятый вариант, что означает, что большинство пользователей с ним знакому и так или иначе он их устраивает. Практически все пользователи смогут установить программу с установщиком, и не слишком большой процент - прогу в архиве.
>>> Поэтому, в частности, пользуются популярностью те пиратские дистрибутивы, в которых такой вот программный продукт с наворченным инсталлятором подвергается доработке, а потом архивируется. Сбросил архив на винт, распаковал и пользуйся.
Эммм... пиратские дистрибутивы пользуются популярностью по <b>другим</b> причинам. Напротив, часто просят оригинальный диск, потому что насквозь почиканая пиратка не запускается (или даже не устанавливается) из-за недоустановленной зависимости.
(т.н. "сборки" - это другой вопрос)
>>> Ну и на фига мне (пользователю) это надо?
Наверное, чтобы программа вообще работала бы после установки (не факт, что будет после распаковки).
Чтобы файлы программы открывались бы в ней, а не выводили бы окно "я не знаю, что это за чёрт". И т.п.
>>> узнать как меня зовут (мне то это на хрена?), показать мне рекламу (бр-р-р-р), узнать, что у меня стоит нужная версия DirectX (я отвечаю, стоит; можно не проверять), создать ярлыки на рабочем столе и в Start-меню (которые я потом удаляю и/или переношу туда, где мне это удобнее).
Это просто плохой дистрибутив, который не очень-то следует правилам.
№ 394 16-03-2010 23:09 |  |
Ответ на »сообщение 393« (Игорь Шевченко)
___________________________
>>> Я предпочитаю оставаться на позиции, что в разных случаях настройки имеют полное право храниться и обрабатываться разными способами, в зависимости от задачи
Удивительно, но я тоже с самого начала говорю (ну, или пытаюсь говорить) то же самое.
Ну, и ладно. Зато поговорили :)
№ 393 16-03-2010 14:52 |  |
Ответ на »сообщение 392« (Geo)
___________________________
У меня возникает ощущение, что идет спор ради спора :) Я предпочитаю оставаться на позиции, что в разных случаях настройки имеют полное право храниться и обрабатываться разными способами, в зависимости от задачи. Единого со всех сторон кошерного способа не существует. Если у вас есть что возразить против этой позиции - милости прошу. А разговоры насчет ассирийцев, БЭСМ-6 (кстати, начинал с нее, если что), это к способу работы с настройками относится крайне отдаленно, не находите ? :)
С наилучшими,
№ 392 16-03-2010 13:59 |  |
Ответ на »сообщение 387« (Игорь Шевченко)
___________________________
>>> Я про то же - не лучше бы усилия направить на полезную функциональность в программе
Тэк-с... Настройки не нужны. Ладно. Интерфейс тоже не нужен. Алгоритмы новые не нужны. Похоже, пора поговорить о том, что такое "полезная функциональность". Пока получается, что пойдем на БЭСМ-6 и будем с перфокарт вводить данные для решения очередной системы диффуров (благо, алгоритмов там реализовано предостаточно). Этим исчерпывается полезная функциональность, которая может быть реализована на компьютере?
Чем отличается WinWord от Лексикона? В первую очередь, WYSIWYG. Это очень удобно. Но это интерфейс, который не нужен. Проверка орфографии и грамматики очень помогает при подготовке текстов (хотя и не заменяет грамотность ;-)). Данные механизмы -- это алгоритмы быстрой проверки слов и способы хранения словарей, которые тоже не нужны.
>>> чем разрабатывать/отлаживать/тестировать дополнительный код по работе с бинарными настройками
А настройки бывают только портянками на полтора мегабайта? А если у меня все настройки хранятся в записи (record) специального типа (причем, чтроки -- только Short String), то механизм сохранения/загрузки тоже потребует сложной разработки/отладки/тестирования?
>>> Например, традиция Unix по возможности рекомендует хранить и обмениваться данными в текстовом формате по одной простой причине - для обработки текста написана, отлажена и отдокументирована тонна программ, включая глаза.exe :)
А древние ассирийцы предпочитали тексты на глиняных табличках, а не на компьютерах. Все то же самое, но надежность хранения данных просто потрясающая. Никакое резервное копирование не сравнится.
Затем... Пусть я живу в доме, где кроме меня все остальные -- врачи. Они на работе надевают белый халат. Я работаю автослесарем. Я тоже должен надевать на работу белый халат? Может быть, все же будем отталкиваться от того "как лучше" (в данном конкретном случае), а не от того "как принято" (в том или ином сообществе).
Далее... У меня такое ощущение, что тема постоянно скатывается к рассмотрению серверов. Да, там удобнее хранить настройки в виде текста, а GUI является выпендрежом. Да, там может возникнуть потребность в обмене конфигурационными файлами с другими людьми. Но если я пишу программу, работающую с пользователем в интерактивном режиме (причем в процессе работы пользователь имеет возможность частичной кастомизации), то почему он должен для сохранения своих настроек обязательно править какой-то файл? Вот я поставил в Бате сортировать пришедшие письма по дате поступления (кликнув по заголовку соответствующего столбца) и у меня теперь всегда письма сортируются по дате. А оказывается правильно было бы, если бы я вышел из программы, открыл текстовый файл настроек и прописал бы там строчку, отвечающую за изменение порядка сортировки, так что ли? Я против.
Ответ на »сообщение 388« (Сергей Перовский)
___________________________
>>> Но как быть с "персональным компьютером коллективного пользования"?
Я никогда не даю конкретных советов, пригодных для любой жизненной ситуации. Поэтому вариант хранения настроек рядом с EXE рассматривается только в том случае, когда это имеет смысл. Например, кроме гигантских программных комплексов на компьютерах еще присутствуют мелкие утилитки. Зачастую, предназначенные только для одного человека.
>>> Кроме того, в заботе о безопасности, модификация файлов в "program files" ограничена
Про это я уже писал в »сообщение 380« в самом конце.
Ответ на »сообщение 389« (Александр Алексеев)
___________________________
>>> Угу, а кое-кому было бы удобнее иметь прямой доступ к аппаратуре (и зачем вообще эта ОС мне палки в колёса вставляет?!). Играть по правилам - всегда тяжелее, но это не значит, что так не нужно делать.
Не понял данного пассажа. Причем тут прямой доступ к аппаратуре?! Нужен прямой доступ, берем другую ОС, которая это позволяет. И вообще, я привел высказывание с точки зрения пользователя. Что делает инсталляция? Она копирует файлы с дистрибутивного диска на жесткий диск компьютера (возможно, с распаковкой). Причем выполняет это дело очень медленно (потому что попутно делает еще кучу дел). Ну и на фига мне (пользователю) это надо? Мне было бы намного удобнее, если бы я скопировал файл на винт и распаковал бы архивы (если они есть). Это было бы намного быстрее. Но нет... Дистрибутив должен еще расспросить меня, что ставить, а что нет (я сам распакую то, что надо), узнать как меня зовут (мне то это на хрена?), показать мне рекламу (бр-р-р-р), узнать, что у меня стоит нужная версия DirectX (я отвечаю, стоит; можно не проверять), создать ярлыки на рабочем столе и в Start-меню (которые я потом удаляю и/или переношу туда, где мне это удобнее). Ну, и так далее... Поэтому, в частности, пользуются популярностью те пиратские дистрибутивы, в которых такой вот программный продукт с наворченным инсталлятором подвергается доработке, а потом архивируется. Сбросил архив на винт, распаковал и пользуйся. Не понравилось, стер. Значит это иногда возможно. Значит разработчики всей этой мутотени разрабатывают весь этот геморрой вовсе не для удобства пользователей (ну, или не для всех пользователей).
Добавить свое сообщение
Отслеживать это обсуждение 
Дополнительная навигация: |
|