Обсуждение исходных кодов проекта


  • Программа-оболочка DriverPack Solution имеет открытый исходный код, ознакомится с которым можно по адресу http://code.google.com/p/driverpacksolution/ - сервис Google Code. Некоторым пользователям, как например мне, интересно разобраться в алгоритме работы программы, быть в курсе последних изменений, понимать суть внесённых исправлений и доработок - но это не всегда удаётся. Причина - скудные пояснения со стороны разработчиков в виде комментариев .

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

    До 17 марта 2012 разработкой программы преимущественно занимался пользователь ArtXgroup - автор проекта, а с сентября за дело взялся BadPointer0, оставляя за собой "грязный" код. Этот пользователь "любит" вносить изменения добавлением/удалением "пробелов" или "табуляции" в разных частях кода, менять местами строки, что запутывает при просмотре кода в режиме сравнения.

    BadPointer0 своими правками ввёл несколько новых переменных в config.js, предназначения которых хотелось бы узнать: ignore_markers, hidebloatware, ver_strict? Также непонятен переработанный им алгоритм определения версии ОС и разрядности в файле autorun.hta, который не работает должным образом (очень часто предлагаются к установке драйвера из драйверпаков другой разрядности и версии).

    Я прошу автора проекта, Артура Кузякова, тщательным образом проверить изменения внесённые BadPointer0 в период с 9 сентября по 28 ноября (r258-r273), возможно там лежит причина ошибки наблюдаемой в последнем релизе r301.



  • Если у тебя есть легковоспроизводимая проблема, то я советую воспользоваться моей инструкцией по SVN чтобы определить когда именно появилась проблема.
    http://code.google.com/p/driverpacksolution/wiki/SVNbasics

    Мои недавние изменения связаны с алгоритмом подбора драйверов и вряд ли связаны с со скриптовыми ошибками у разных пользователей.

    К сведению. Изначально прогу разработал ArtX. Я подключился к проекту 27 июля 2009 года(именно я поместил первую ревизию на Google Code). Моя наибольшая активность пришлась на 2009 и 2010 год, но у меня с тех пор мало времени. В основном я занимался алгоритмом определения драйверов. В последнее время я вношу изменения только при жесткой необходимости, например, добавить поддержку Windows 8.

    ignore_markers. Маркеры сделаны чтобы позволить автору драйверпаков вручную задать степень совместимости драйверов.

    hidebloatware позволяет одной настройкой сразу отключить все лишнее. ArtX предпочитает в своей сборке добавлять яндкесбар, DrvUpdate, замену логотипа OEM в "Мой компьютер" и т.д. Для удобства сборки SamDrivers, все это отключается одной настройкой.

    Насчет форматирования пробельных символов. В вышеуказанной инструкции я указывал о важности этого, но это не я кто нарушал форматирование. В любом случае кроме неудобства при просмотре на Google Code это не сказывается на то как код работает. Кроме того подобные изменения программы сравнения(WinMerge) могут скрывать.

    Начиная с R277 начал менять интерфейс и каждый раз это происходит довольно болезненно поскольку на разных версиях Windows и Internet Explorer программа работает по разному и возникают всевозможные скриптовые ошибки. В частности поддержка Internet Explorer 6 была изначально сломана, но ArtX починил ее к R301. Но не исключено что остались проблемы на других конфигурациях. Также проблема может быть из-за скриптового кода, который программа подгружает из интернета(это под контролем ArtX) и это затрагивает все ревизии, поэтому следует попробовать запустить прогу без доступа к интернету.



  • Если у тебя есть легковоспроизводимая проблема, то я советую воспользоваться моей инструкцией по SVN чтобы определить когда именно появилась проблема.
    

    Прочитал, но я предпочитаю программу RapidSVN, используя чтобы выкачать проект на диск. Сравнение провожу средствами Total Commander или смотрю изменения прямо в браузере на странице исходных кодов.

    hidebloatware позволяет одной настройкой сразу отключить все лишнее. ArtX предпочитает в своей сборке добавлять яндкесбар, DrvUpdate, замену логотипа OEM в "Мой компьютер" и т.д. Для удобства сборки SamDrivers, все это отключается одной настройкой.
    

    В файле config.js введена переменная hidebloatware, а также bloatware, которая является её инверсией. Зачем раздувать код двумя переменными если можно обойтись одной?

    Причём hidebloatware скрывает чекбоксы выбора, но там остаётся всё включено (DrvUpdate, OEM, GetCPUtemp). SamLab по твоему пути не пошел, он отключил ненужные значения, а чекбоксы оставил по-прежнему скрытыми. Да и зачем туда же скрывать GetCPUtemp?

    В файле Autorun.hta чекбоксы скрываются сразу двумя способами (наверно для надёжности?): {1} через div id=bloat (строки 177, 983) {2} чекбоксы поимённо (строки 979-982)

    Насчет форматирования пробельных символов. В вышеуказанной инструкции я указывал о важности этого, но это не я кто нарушал форматирование. В любом случае кроме неудобства при просмотре на Google Code это не сказывается на то как код работает. Кроме того подобные изменения программы сравнения(WinMerge) могут скрывать.
    

    Это понятно, что пробелы в коде на работу не влияют, но зачем тогда их трогать? ArtX когда вносит правки не исправляет при этом сотню неправильно поставленных пробелов или табуляций.

    Начиная с R277 начал менять интерфейс и каждый раз это происходит довольно болезненно поскольку на разных версиях Windows и Internet Explorer программа работает по разному и возникают всевозможные скриптовые ошибки...
    

    Твои изменения были сделаны в промежутке R258-R273.



  • В файле config.js введена переменная hidebloatware, а также bloatware, которая является её инверсией. Зачем раздувать код двумя переменными если можно обойтись одной?
    

    Я ввел 2 переменные так тогда легче читать чем когда имеется двойное отрицание, ведь для отключения некоторых фичей нужно установить true, а для других false.

    
    Причём hidebloatware скрывает чекбоксы выбора, но там остаётся всё включено (DrvUpdate, OEM, GetCPUtemp).
    

    Нет это отключает их:
    if(bloatware)getCPUtemp=DrvUpdater=OEMInstall=false

    Это понятно, что пробелы в коде на работу не влияют, но зачем тогда их трогать? ArtX когда вносит правки не исправляет при этом сотню неправильно поставленных пробелов или табуляций.
    

    Кроме меня и ArtX еще кто-то рабоатал с исходником. Я не обратил внимание когда пробельные символы были подменены. Лучше сразу привести все к одному виду чем оставить когда в некоторых строках используются пробелы, а других табуляции. В любом случае это не так важно. Единственное что это осложняет работу команды blame.

    
    Твои изменения были сделаны в промежутке R258-R273.
    
    

    Да. Ты изначально упомянал о какой-то ошибке. Что это за ошибка и в какой именно ревизии она появилась впервые?



  • Да. Ты изначально упомянал о какой-то ошибке. Что это за ошибка и в какой именно ревизии она появилась впервые?
    

    В последнем релизе (R301) ошибка при запуске, не знаю когда появилась - пару месяцев не следил за проектом. На форуме Самлаба про неё писали, там и скрины есть.



  • Можешь показать этот скрин?

    Если ты умеешь пользоваться SVN, то должен знать что SVN клиент позволяет откатить на более раннюю ревизию и посмотреть была ли ошибка там.

    Чтобы не проверять все ревизии можно использовать метод половинных интервалов.
    Ты знаешь что ошибка появилась в интервале от R200 до R300.

    Привер сеанса поиска сбойной ревизии:
    R250, ошибка (200-249)
    R225, ошибка (200-225)
    R212, исправно (значит ошибка появилась 213-225)
    R219
    и т.д.




  • Windows XP Professional SP3 rus
    Internet Explorer 8
    Отследил, ошибка появилась на релизе 296, но в предыдущих релизах тоже были ошибки, но другие, которые могли перекрывать эту ошибку. В файле Autorun.hta открывающих фигурных скобок на одну больше - искал где забыли поставить или где стоит лишняя, но не нашел.



  • Это значительно сужает область, где может быть ошибка. У меня тоже Windows XP, IE8 но проблема не проявляется.

    Можно попробовать начать с R295 и затем попробовать следующее, проверяя после каждого изменения:

    1. Обновить файл notice.js до R296.
    2. Обновить файл style.css до R296.
    3. Перенести строку <script src="tools\modules\bootstrap\js\bootstrap.min.js"></script> как в R296.
    4. Применить остальные изменения.


  • Подожди.

    Ты сказал и до R295 тоже были ошибки. Можешь найти первую ревзию без ошибок. R276 должна быть совсем без ошибок, и если это так то искать нужно после нее.



  • Нашел в файле Autorun.hta непарную фигурную скобку { - строка 1764. Но она закомментированна, так что её удаление выравнивает количество { }, но данная ошибка по-прежнему остаётся.



  • Лучше попробуй найти первую ревизию где появлись скриптовые ошибки.



  • Последний релиз на котором у меня оболочка запускается без ошибок - R287. Начиная с R288 - вылазят ошибки в момент запуска.

    Проверил на тестовом ноутбуке: на Windows 7 Ult x32 SP1 последний релиз R301 запускается вообще без ошибок.

    Вероятно стремление прикрутить какие-то фичи по 7-8 поломало нормальную работу под ХР.



  • Нужно искать проблему в R288.

    По-видимому придется постепенно применять изменения из R288 к R287(как я предлагал к другим ревизиям выше), пока не выянится какое именно изменение приводит к ошибке.



  • В какой кодировке должны быть написаны скрипты *.js ? В ANSI или в UTF-8 ? А то, смотрю тут в папке "modules" - большинство в ANSI, но попадаются и в UTF-8 (например, startpack.js). Это существенно?



  • В свое время я избавился от всех не ANSI символов во всех файлах кроме файлов в tools\language, которые были сохранены в формате UTF-8, причем BOM был обязателен, так как иначе возникали ошибки в IE6.

    Не знаю было ли что-то нарушено с тех пор.



  • Обнаружил небольшой баг: если в папку "Drivers" поместить драйвера рассортировав их по под-папкам (так как это было раньше), то оболочка пишет что мы используем Lite-версию и драйверпаки не обнаружены.



  • Нашел ошибку, как я и говорил она впервые появилась в R288. Итак, файл tools\modules\diagnostics\system.js

    начиная со строки 7 всё должно быть в одну строчку, с пробелом перед и после }
    Вот так:

    addDiagAlert('services',services_alert,'important',function () {WhShell.Run('control.exe /name Microsoft.WindowsUpdate',0,false); } );

    Там табуляцию надо поубирать, ведь табуляция это не пробел! и внутри функций играет роль что стоит.



  • Там табуляции только в начале всех строк где допустимы любые пробельные символы. Пробел или табуляция имели бы значение только внутри между кавычек(строковых констант).
    Так что я все равно не понял что именно ты исправил.

    Однако, ArtX добавил русскоязычный комментарий, что может вызывать проблемы в IE6.

    В любом случае. Применив это исправление к более новым ревизиям теперь нет никаких ошибок?



  • Да, ошибок больше нет. Там перед } должен быть пробел. Я всё в одну строку сделал и комментарий убрал.



  • Akmv, спасибо! Проблема была только из комментария... Сегодня залью новую ревизию и сделаю обновление в Конфигураторе.

    BadPointer, про русские комменты я помню, к релизу всё исправлю, а вот про UTF8 с BOM - забыл. Я по привычке использую без BOM.


21
Сообщения
6425
Просмотры
Войдите чтобы оставить сообщение

Внутренняя ошибка.

Упс! Похоже, что-то пошло не так!