Oberon space
General Category => Общий раздел => Тема начата: valexey от Декабрь 17, 2011, 05:07:22 pm
-
Вот предположим есть какой-то модуьл в ББ а может быть даже целая подсистема. Время от времени выходят новые версии, где исправлены некоторые ошибки, убраны несовместимости по форматам и протоколам и так далее. Без обновления пользователю будет реально плохо - может просто все перестать работать.
Внимание вопрос - как в ББ провернуть автообновление модуля или подсистемы? То есть оно должно вытянуть откуда-то из сети (локальной или глобальной) новую версию и. скажем, при следующем запуске ББ загрузить уже новую версию (ну или динамически модуль старый выгрузить, новый загрузить). Для этого есть какие-то готовые средства?
Понятно что эта функциональность должна быть на уровне каркаса, потому что сам процесс обновления системозависим - напримаер в Висте/Win7, если программа поставлена как надо, то есть в потроха Program Files, то у нее нет прав на запись в каталог установки. Нужно у системы испросить разрешение на получение прав суперпользователя. система спросит разрешения у пользователя и уж тогда-а...
-
Готовых средств в общедоступном дистрибутиве нет.
Если ББ запустить с особым ключиком, то рабочая папка будет там, куда указывает ключик. А в рабочей папке все модули, которые как хочешь, так и обновляй. Если разработчик приложения ответственно подошёл к своей работе, то в приложении будет кнопочка "поискать обновления".
-
Готовых средств в общедоступном дистрибутиве нет.
Если ББ запустить с особым ключиком, то рабочая папка будет там, куда указывает ключик. А в рабочей папке все модули, которые как хочешь, так и обновляй. Если разработчик приложения ответственно подошёл к своей работе, то в приложении будет кнопочка "поискать обновления".
Ситуация такова, что нельзя заставить пользователя ставить ББ тем образом, каким нам удобно - у него уже стоит ББ и он привык каким-то образом его запускать. Подсистема/модуль реализует лишь часть функционала который пользователь использует в ББ.
PS. А что за ключик? И не будет ли эта директория временной?
-
Если разработчик приложения ответственно подошёл к своей работе, то в приложении будет кнопочка "поискать обновления".
На самом деле в ряде случаев такая кнопочка суть архаизм и вредна - обновления должны полностью автоматически искаться и устанавливаться.
-
Ситуация такова, что нельзя заставить пользователя ставить ББ тем образом, каким нам удобно - у него уже стоит ББ и он привык каким-то образом его запускать. Подсистема/модуль реализует лишь часть функционала который пользователь использует в ББ.
PS. А что за ключик? И не будет ли эта директория временной?
Переставлять ничего не надо.
Директория не временная с точки зрения винды. То есть, будет существовать, пока пользователь сознательно её не удалит.
Нужно ему только прислать директорию с минимально допустимым набором подсистем (включая модули с программой). В директории будет ярлык на ББ. В ярлыке будет прописана команда
"C:\Program Files\BlackBox Component Builder 1.6\BlackBox.exe" /Use "D:\Work"Ну и рабочую директорию в ярлыке ту же, что и в ключике указать надо.
-
На самом деле в ряде случаев такая кнопочка суть архаизм и вредна - обновления должны полностью автоматически искаться и устанавливаться.
Ну, в маке от неё пока не отказались. Понимаю, что, допустим, при запуске программа проверит доступность обновлений, но сама скачивать и ставить... Так и отгрести можно от пользователя через интерфейс антивируса или фаервола.
-
В ББ версии 1.6 не utf-8. Так, на всякий случай говорю.
-
В ББ версии 1.6 не utf-8. Так, на всякий случай говорю.
Ну, ББ суть виндовозное поделие, следовательно там какой-нибудь ucs-16, то есть по 16 бит на символ вне завиимости от его природы. Точнее поскольку это юникод виндовый, то там на самом деле совсем древняя версия ucs16 скорее всего.
Но вопрос был в другом - есть ли в ББ либы/модули для работы с UTF8 ? То есть для парсинга, валидации и конвертации в другие кодировки/представления. В тот же ucs-16 например. Например в D есть в стандартной либе модуль std.utf, где все это есть.
-
Да, и понятное дело, что UTF8 внутри программы нафиг не нужен. Ибо операция индексации у UTF8 строки занимает O(n). Внутри программы для обработки текст лучше хранить в чем-то имеющем фиксированный размер символа. Например в ucs-32.
-
На самом деле в ряде случаев такая кнопочка суть архаизм и вредна - обновления должны полностью автоматически искаться и устанавливаться.
Ну, в маке от неё пока не отказались. Понимаю, что, допустим, при запуске программа проверит доступность обновлений, но сама скачивать и ставить... Так и отгрести можно от пользователя через интерфейс антивируса или фаервола.
По сути отказались. То есть я каждый день пользуюсь маком и не помню где эта кнопка вообще есть. Оно апдейты проверяет само. И предлагает поставить (понятное дело, ведь для этого нужны права суперпользователя). При этом часть приложений само следит за обновлениями и некоторые, вроде хрома, молча обновляются (им суперпользователь не нужен). И это не раздажает и проблем не вызывает.
Более того - повальное увлечение веб-приложениями по большей части обусловленно именно тем, что у таких приложений by design нет проблем с обновлетями - у пользователя всегда актуальная версия, что сильно все упрощает. В частности не нужно поддерживать и заботиться о совместимости с миллионом старых версий. Следовательно код становится чище и с меньшим числом костылей. Разработка дешевле. Даже если ради такого клиент приходится писать на таком уг как js.
-
А за ключик спабо.
Вообще такое ощущение. что ББ нужна подсистема для апдейтов подсистем.
-
По сути отказались. То есть я каждый день пользуюсь маком и не помню где эта кнопка вообще есть. Оно апдейты проверяет само. И предлагает поставить (понятное дело, ведь для этого нужны права суперпользователя). При этом часть приложений само следит за обновлениями и некоторые, вроде хрома, молча обновляются (им суперпользователь не нужен). И это не раздажает и проблем не вызывает.
Так хром-то не эпл писал...
Ну не знаю, может, на нашем буке кто-то это отключил, но пока я сам на яблоко вверху не нажму и не выберу получение обновлений, то я и не узнаю что уже скоро год как новый xcode вышел, которому для инсталляции нужны два гига обновлений с версии 10.6.6 на 10.6.8.
-
В частности не нужно поддерживать и заботиться о совместимости с миллионом старых версий.
Миллионом старых версий браузеров? : )
-
Вообще такое ощущение. что ББ нужна подсистема для апдейтов подсистем.
С одной стороны, она определённо не помешает. По крайней мере, в части уведомлений о новых обновлениях. С другой стороны - подсистемы не являются конечными приложениями. Если твой линух обновит автоматом glibc без твоего ведома, то такая веселуха начнётся...
-
В частности не нужно поддерживать и заботиться о совместимости с миллионом старых версий.
Миллионом старых версий браузеров? : )
Старых версий клиентов.
А вот что бы и о версии платформы не заботиться, гугл и стал разрабатывать свой браузер, который обновляется молча.
-
Вообще такое ощущение. что ББ нужна подсистема для апдейтов подсистем.
С одной стороны, она определённо не помешает. По крайней мере, в части уведомлений о новых обновлениях. С другой стороны - подсистемы не являются конечными приложениями. Если твой линух обновит автоматом glibc без твоего ведома, то такая веселуха начнётся...
А какая? Когда я говорю линуху обновиться, я не провяю что там будет обновляться обычно. И все работает.
Но есть конечно нюанс - если у нас обновляется не лист графа модулей, и даже не отдельая ветка его целиком, а где-то что-то по середине, тогда ахтунг. По крайней мере без системы разруливания зависимостей. А это уже достаточно мутно и сложно.
Поэтому подситема обновлений пока должна лишь позволять молча или не очень, обновлять ветки (кластер?) нашего ациклического графа сплошняком. По сути это и есть обновление конечно пользовательского приложения в рамках ББ.
Возможно обновление целой подсистемы целиком если о нее никто не зависит/не импортируем ее модулей.
-
А какая?
А как раз такая, что из середины цепочки что-нибудь обновится. И всё. Причём, мы же на комп не одно приложение обычно ставим. На одно приложение пришло обновление. Комьюнити подсуетилось и быстро сделало адаптацию под новую библиотеку. А другое комьюнити пока не особо чешется, или приложение здоровое, и не так просто его перенести.
К чему я это? А на одном компе стоят оба приложения : ). Обновили мы приложение от расторопных разработчиков (с библиотекой), а второе приложение и сложилось. Или при обновлении смотрим зависимости библиотеки, и видим, что одно приложение не адаптировано пока. И не сообщаем об обновлениях пользователю. А то второе приложение и не обновится никогда, потому что разработчик уже полгода как нашёл себе что-то поинтересней.
-
Поэтому есть две модели обновлений - первая это линукс репозитории. Весь репозиторий в любой момент времени консистентен и обновления тоже. Актуальность и консистентность поддерживается силами не разработчиков а контрибьютеров рерозитория (иногда это разработчики этих приложений, но чаще нет). Это все трудозатратно, это требует умной автоматической системы отслеживания зависимостей. Из плюсов - удобство пользователя, экономия как ОЗУ, так и место на винте. Оперативное устранеие дыр у всех разом.
И второй путь - все свое ношу с собой. В частности это в макос распространено. Все несистемные библиотеки (например Qt) каждое приложениение таскает с собой и обновляет их самостоятельно и всем скопом. Из плюсов - просоота. Ненапряжность поддержки. Удобство пользователя. Возможность ставить это все куда угодно. Из минусов - жручесть до памяти и диска. Несогласованность в закрытии дыр.
Я бы хотел в ББ видеть что-то среднее и более близкое ко второму. Но для этого надо понять что такое приложение для конечного пользователя в рамках ББ. И может ли оно там вообще существовать. Потому, что идеалогия "все есть система" ставит жирный крест на втором подходе и заставляет выбирать много более сложный первый подход. И с точки зрения программирования, и с точки зрения администрирования.
Либо все это сваливается на пользователя (что сейчас и имеем).
-
Но для этого надо понять что такое приложение для конечного пользователя в рамках ББ. И может ли оно там вообще существовать. Потому, что идеалогия "все есть система" ставит жирный крест на втором подходе и заставляет выбирать много более сложный первый подход. И с точки зрения программирования, и с точки зрения администрирования.
Нет там приложений. Есть команды. Я с платформой Оберон-Церес не знаком, но мне кажется, что предполагалась одна команда разработчиков, которая все приложения для системы и делает. По сути, так оно и было, поскольку платформа использовалась преимущественно в универе. А значит, было кому следить за синхронизацией.
Касаемо же наших реалий, то установленный ББ на компе один. Как заставить его работать с другой папкой с помощью ключа я показал. То есть, грубо говоря, если закрыть глаза на пару вещей, то похоже на то, что в маке.
-
Это скорее похоже на использование нескольких виртуалок с системой :-) В общем, попробую оценить степень геморроя каждого способа на своей шкуре.