Oberon space

General Category => Общий раздел => Тема начата: valexey от Декабрь 17, 2011, 05:07:22 pm

Название: BlackBox module update.
Отправлено: valexey от Декабрь 17, 2011, 05:07:22 pm
Вот предположим есть какой-то модуьл в ББ а может быть даже целая подсистема. Время от времени выходят новые версии, где исправлены некоторые ошибки, убраны несовместимости по форматам и протоколам и так далее. Без обновления пользователю будет реально плохо - может просто все перестать работать.

Внимание вопрос - как в ББ провернуть автообновление модуля или подсистемы? То есть оно должно вытянуть откуда-то из сети (локальной или глобальной) новую версию и. скажем, при следующем запуске ББ загрузить уже новую версию (ну или динамически модуль старый выгрузить, новый загрузить). Для этого есть какие-то готовые средства?

Понятно что эта функциональность должна быть на уровне каркаса, потому что сам процесс обновления системозависим - напримаер в Висте/Win7, если программа поставлена как надо, то есть в потроха Program Files, то у нее нет прав на запись в каталог установки. Нужно у системы испросить разрешение на получение прав суперпользователя. система спросит разрешения у пользователя и уж тогда-а...
Название: Re: BlackBox module update.
Отправлено: Valery Solovey от Декабрь 17, 2011, 05:13:39 pm
Готовых средств в общедоступном дистрибутиве нет.

Если ББ запустить с особым ключиком, то рабочая папка будет там, куда указывает ключик. А в рабочей папке все модули, которые как хочешь, так и обновляй. Если разработчик приложения ответственно подошёл к своей работе, то в приложении будет кнопочка "поискать обновления".
Название: Re: BlackBox module update.
Отправлено: valexey от Декабрь 17, 2011, 05:17:17 pm
Готовых средств в общедоступном дистрибутиве нет.

Если ББ запустить с особым ключиком, то рабочая папка будет там, куда указывает ключик. А в рабочей папке все модули, которые как хочешь, так и обновляй. Если разработчик приложения ответственно подошёл к своей работе, то в приложении будет кнопочка "поискать обновления".

Ситуация такова, что нельзя заставить пользователя ставить ББ тем образом, каким нам удобно - у него уже стоит ББ и он привык каким-то образом его запускать. Подсистема/модуль реализует лишь часть функционала который пользователь использует в ББ.

PS. А что за ключик? И не будет ли эта директория временной?
Название: Re: BlackBox module update.
Отправлено: valexey от Декабрь 17, 2011, 05:45:46 pm
Если разработчик приложения ответственно подошёл к своей работе, то в приложении будет кнопочка "поискать обновления".
На самом деле в ряде случаев такая кнопочка суть архаизм и вредна - обновления должны полностью автоматически искаться и устанавливаться.
Название: Re: BlackBox module update.
Отправлено: Valery Solovey от Декабрь 17, 2011, 06:24:59 pm
Ситуация такова, что нельзя заставить пользователя ставить ББ тем образом, каким нам удобно - у него уже стоит ББ и он привык каким-то образом его запускать. Подсистема/модуль реализует лишь часть функционала который пользователь использует в ББ.

PS. А что за ключик? И не будет ли эта директория временной?
Переставлять ничего не надо.
Директория не временная с точки зрения винды. То есть, будет существовать, пока пользователь сознательно её не удалит.

Нужно ему только прислать директорию с минимально допустимым набором подсистем (включая модули с программой). В директории будет ярлык на ББ. В ярлыке будет прописана команда
"C:\Program Files\BlackBox Component Builder 1.6\BlackBox.exe" /Use "D:\Work"Ну и рабочую директорию в ярлыке ту же, что и в ключике указать надо.
Название: Re: BlackBox module update.
Отправлено: Valery Solovey от Декабрь 17, 2011, 06:27:40 pm
На самом деле в ряде случаев такая кнопочка суть архаизм и вредна - обновления должны полностью автоматически искаться и устанавливаться.
Ну, в маке от неё пока не отказались. Понимаю, что, допустим, при запуске программа проверит доступность обновлений, но сама скачивать и ставить... Так и отгрести можно от пользователя через интерфейс антивируса или фаервола.
Название: Re: BlackBox module update.
Отправлено: Valery Solovey от Декабрь 17, 2011, 06:28:28 pm
В ББ версии 1.6 не utf-8. Так, на всякий случай говорю.
Название: Re: BlackBox module update.
Отправлено: valexey от Декабрь 17, 2011, 08:01:36 pm
В ББ версии 1.6 не utf-8. Так, на всякий случай говорю.

Ну, ББ суть виндовозное поделие, следовательно там какой-нибудь ucs-16, то есть по 16 бит на символ вне завиимости от его природы. Точнее поскольку это юникод виндовый, то там на самом деле совсем древняя версия ucs16 скорее всего.

Но вопрос был в другом - есть ли в ББ либы/модули для работы с UTF8 ? То есть для парсинга, валидации и конвертации в другие кодировки/представления. В тот же ucs-16 например. Например в D есть в стандартной либе модуль std.utf, где все это есть.
Название: Re: BlackBox module update.
Отправлено: valexey от Декабрь 17, 2011, 08:04:57 pm
Да, и понятное дело, что UTF8 внутри программы нафиг не нужен. Ибо операция индексации у UTF8 строки занимает O(n). Внутри программы для обработки текст лучше хранить в чем-то имеющем фиксированный размер символа. Например в ucs-32.
Название: Re: BlackBox module update.
Отправлено: valexey от Декабрь 17, 2011, 08:32:35 pm
На самом деле в ряде случаев такая кнопочка суть архаизм и вредна - обновления должны полностью автоматически искаться и устанавливаться.
Ну, в маке от неё пока не отказались. Понимаю, что, допустим, при запуске программа проверит доступность обновлений, но сама скачивать и ставить... Так и отгрести можно от пользователя через интерфейс антивируса или фаервола.
По сути отказались. То есть я каждый день пользуюсь маком и не помню где эта кнопка вообще есть. Оно апдейты проверяет само. И предлагает поставить (понятное дело, ведь для этого нужны права суперпользователя). При этом часть приложений само следит за обновлениями и некоторые, вроде хрома, молча обновляются (им суперпользователь не нужен). И это не раздажает и проблем не вызывает.

Более того - повальное увлечение веб-приложениями по большей части обусловленно именно тем, что у таких приложений by design нет проблем с обновлетями - у пользователя всегда актуальная версия, что сильно все упрощает. В частности не нужно поддерживать и заботиться о совместимости с миллионом старых версий. Следовательно код становится чище и с меньшим числом костылей. Разработка дешевле. Даже если ради такого клиент приходится писать на таком уг как js.
Название: Re: BlackBox module update.
Отправлено: valexey от Декабрь 17, 2011, 08:36:23 pm
А за ключик спабо.

Вообще такое ощущение. что ББ нужна подсистема для апдейтов подсистем.
Название: Re: BlackBox module update.
Отправлено: Valery Solovey от Декабрь 17, 2011, 08:49:50 pm
По сути отказались. То есть я каждый день пользуюсь маком и не помню где эта кнопка вообще есть. Оно апдейты проверяет само. И предлагает поставить (понятное дело, ведь для этого нужны права суперпользователя). При этом часть приложений само следит за обновлениями и некоторые, вроде хрома, молча обновляются (им суперпользователь не нужен). И это не раздажает и проблем не вызывает.
Так хром-то не эпл писал...

Ну не знаю, может, на нашем буке кто-то это отключил, но пока я сам на яблоко вверху не нажму и не выберу получение обновлений, то я и не узнаю что уже скоро год как новый xcode вышел, которому для инсталляции нужны два гига обновлений  с версии 10.6.6 на 10.6.8.
Название: Re: BlackBox module update.
Отправлено: Valery Solovey от Декабрь 17, 2011, 08:51:03 pm
В частности не нужно поддерживать и заботиться о совместимости с миллионом старых версий.
Миллионом старых версий браузеров? : )
Название: Re: BlackBox module update.
Отправлено: Valery Solovey от Декабрь 17, 2011, 08:57:18 pm
Вообще такое ощущение. что ББ нужна подсистема для апдейтов подсистем.
С одной стороны, она определённо не помешает. По крайней мере, в части уведомлений о новых обновлениях. С другой стороны - подсистемы не являются конечными приложениями. Если твой линух обновит автоматом glibc без твоего ведома, то такая веселуха начнётся...
Название: Re: BlackBox module update.
Отправлено: valexey от Декабрь 17, 2011, 08:59:18 pm
В частности не нужно поддерживать и заботиться о совместимости с миллионом старых версий.
Миллионом старых версий браузеров? : )

Старых версий клиентов.
А вот что бы и о версии платформы не заботиться, гугл и стал разрабатывать свой браузер, который обновляется молча.
Название: Re: BlackBox module update.
Отправлено: valexey от Декабрь 17, 2011, 09:08:12 pm
Вообще такое ощущение. что ББ нужна подсистема для апдейтов подсистем.
С одной стороны, она определённо не помешает. По крайней мере, в части уведомлений о новых обновлениях. С другой стороны - подсистемы не являются конечными приложениями. Если твой линух обновит автоматом glibc без твоего ведома, то такая веселуха начнётся...
А какая? Когда я говорю линуху обновиться, я не провяю что там будет обновляться обычно. И все работает.

Но есть конечно нюанс - если у нас обновляется не лист графа модулей, и даже не отдельая ветка его целиком, а где-то что-то по середине, тогда ахтунг. По крайней мере без системы разруливания зависимостей. А это уже достаточно мутно и сложно.

Поэтому подситема обновлений пока должна лишь позволять молча или не очень, обновлять ветки (кластер?) нашего ациклического графа сплошняком. По сути это и есть обновление конечно пользовательского приложения в рамках ББ.

Возможно обновление целой подсистемы целиком если о нее никто не зависит/не импортируем ее модулей.
Название: Re: BlackBox module update.
Отправлено: Valery Solovey от Декабрь 17, 2011, 09:52:56 pm
А какая?
А как раз такая, что из середины цепочки что-нибудь обновится. И всё. Причём, мы же на комп не одно приложение обычно ставим. На одно приложение пришло обновление. Комьюнити подсуетилось и быстро сделало адаптацию под новую библиотеку. А другое комьюнити пока не особо чешется, или приложение здоровое, и не так просто его перенести.
К чему я это? А на одном компе стоят оба приложения : ). Обновили мы приложение от расторопных разработчиков (с библиотекой), а второе приложение и сложилось. Или при обновлении смотрим зависимости библиотеки, и видим, что одно приложение не адаптировано пока. И не сообщаем об обновлениях пользователю. А то второе приложение и не обновится никогда, потому что разработчик уже полгода как нашёл себе что-то поинтересней.
Название: Re: BlackBox module update.
Отправлено: valexey от Декабрь 17, 2011, 10:07:06 pm
Поэтому есть две модели обновлений - первая это линукс репозитории. Весь репозиторий в любой момент времени консистентен и обновления тоже. Актуальность и консистентность поддерживается силами не разработчиков а контрибьютеров рерозитория (иногда это разработчики этих приложений, но чаще нет). Это все трудозатратно, это требует умной автоматической системы отслеживания зависимостей. Из плюсов - удобство пользователя, экономия как ОЗУ, так и место на винте. Оперативное устранеие дыр у всех разом.

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

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

Либо все это сваливается на пользователя (что сейчас и имеем).
Название: Re: BlackBox module update.
Отправлено: Valery Solovey от Декабрь 17, 2011, 10:30:59 pm
Но для этого надо понять что такое приложение для конечного пользователя в рамках ББ. И может ли оно там вообще существовать. Потому, что идеалогия "все есть система" ставит жирный крест на втором подходе и заставляет выбирать много более сложный первый подход. И с точки зрения программирования, и с точки зрения администрирования.
Нет там приложений. Есть команды. Я с платформой Оберон-Церес не знаком, но мне кажется, что предполагалась одна команда разработчиков, которая все приложения для системы и делает. По сути, так оно и было, поскольку платформа использовалась преимущественно в универе. А значит, было кому следить за синхронизацией.

Касаемо же наших реалий, то установленный ББ на компе один. Как заставить его работать с другой папкой с помощью ключа я показал. То есть, грубо говоря, если закрыть глаза на пару вещей, то похоже на то, что в маке.
Название: Re: BlackBox module update.
Отправлено: valexey от Декабрь 17, 2011, 10:41:07 pm
Это скорее похоже на использование нескольких виртуалок с системой :-) В общем, попробую оценить степень геморроя каждого способа на своей шкуре.