Компонент ''Система патчей''

 
Идея стоит выделки?
Для голосования необходима регистрация на сайте
Всего голосов: 29
Дата окончания опроса: 03-07-2014
Опрос закончен.
Посетитель
small user social cms
Медаль
Сообщений: 375
Вступление
Идея
Внешний вид компонента
Внешний вид ручного создания патча
Основная логика компонента
Логика применения патча
Автоматическая система аварийного восстановления
Продвинутая система поиска повторяющегося кода
Пример стандарта на текстовый patch-файл
Редактировалось: 5 раз (Последний: 3 июня 2014 в 11:03)
Обожаю вторую ветку! Взрыв мозга!
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 1885
Не хочу показаться невежливым, просто хочу сделать небольшое дополнение.

Английское hook (читается "хук") переводится как "ловушка". Хуки широко применяются в iCMS как точка подключения плагина, который этот хук перехватывает и изменяет. Синоним этого термина - эвент ( англ. "event" - событие) широко применяется Fuze в описании плагинов. Подробнее об этом можно прочесть в этой статье.

Вы пишите, полагаю, о хаках (англ "hack" - рубить, кромсать, курочить). Этот термин подразумевает внесение изменения в код движка. Изменение вносятся в файлы iCMS с целью получения дополнительного функционала. Хаки применяются тогда, когда дополнительный функционал не удается оформить в виде хука и соответствующего ему плагина - например, если изменению подвергается не отдельная переменная или массив, а значительный фрагмент исходного текста.

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

Ни в коем случае не отвергая идею ТС, предлагаю сразу определиться с терминологией, поскольку произношение обоих терминов схожи по произношению, но предполагают они совершенно разные действия программиста.

Спасибо за идею. До сих пор я все написанные мной по заказу хаки подробно описывал в небольшом текстовом файлике, который оставлял в корне сайта - на тот случай, если апгрейд будет делать другой человек. Прочитав мой файлик, он сразу определится, какие файлы движка ему надо смерживать.
NOP
Посетитель
small user social cms
Медаль
Сообщений: 375
Спасибо за поправку. Мне самому при написании все эти "хуки" поднадоели. Для меня юниксойда - всетаки привычней слово patch. И приятней на слух да и правильней это. Писалось вечером, поэтому перепутал хак с хуком. Извените. Счас поправлю текст. А модераторов, если им не сложно, исправить тему на Компонент "Система патчей" (убрать "хуков")
Редактировалось: 1 раз (Последний: 3 июня 2014 в 10:58)
Обожаю вторую ветку! Взрыв мозга!
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 1080
В движке форума SMF все дополнения устанавливаются заменой куска кода на другой или дописыванием нужного кода за какой либо строкой. Движок просит лишь один раз настроить доступ по фтп и далее сам открывает нужный файл, ищет заданную строку со значениями и либо заменяет, либо дописывает за/перед ней. Теоретически нечто подобное вроде бы планируется в двойке? Во всяком случае доступ по фтп для обновления двойка уже запрашивает.

Можно такую систему применить и здесь. Тогда можно в компоненте вбивать в каком файле какую строку заменить на что и уже после обновления компонент будет эти изменения воспроизводит. Единственная проблема, это когда такая строка по которой будет вестись поиск будет не совпадать с эталонной ( будет изменена при обновлении), но это решается ручным корректированием.
я cделал тиц 20 за 300р в месяц / 15$ в день ничего не делая / почему контекст лучше тизеров
Посетитель
small user social cms
Медаль
Сообщений: 375
picaboo:
Во всяком случае доступ по фтп для обновления двойка уже запрашивает.
Именно эта возможность в двойке и окончательно "добила" меня на написание данной темы.
Хотя есть и другая идея, но тут нужно полное согласие и помощь разработчиков.
В двойке есть возможность "схолпывать" файлы стилей и явовских модулей.
Почему бы не использовать данную возможность?
Предположим после применения патча - патченный файл формируется в определенной папке на сервере, в той же папке cache, хотя правильней всетаки было бы в свою папку - например patchs. И тогда система при обнаружении там патченного файла - брала бы его а, не оригинальный.
Но мне показалось это слишком замороченно и опять таки необходимы правки в самой системе для использования данной возможности.
А при использовании обычного копирования файла в *.original все это на много упрощается. Компонент перестает быть зависим от системы, при большом желании народ думаю её сможет и под 1.x переделать.
Поэтому лучше использовать возможности модуля PHP (ftp) и использовать его по принципу организации обновления в двойке.
Обожаю вторую ветку! Взрыв мозга!
Посетитель
small user social cms
Медаль
Сообщений: 375
picaboo:
Единственная проблема, это когда такая строка по которой будет вестись поиск будет не совпадать с эталонной ( будет изменена при обновлении), но это решается ручным корректированием.
Я об этом моменте писал. При наличии сигнального флага применен/ошибка патча - можно видеть какие патчи применились без проблем, а с какими нужно поработать и подкоректировать.
Обожаю вторую ветку! Взрыв мозга!
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 1080
ну там так и работает. когда двиг сам не может поменять строку, он выводит окно где пишет что он должен сделать и в какой строке и почему не получилось. руками сам эту правку делаешь и все.

кстати очень удобно. так не только плагины работающие на эвентах можно исползовать, но и полноценные хаки без правки кучи кода в ручную
я cделал тиц 20 за 300р в месяц / 15$ в день ничего не делая / почему контекст лучше тизеров
Посетитель
small user social cms
Медаль
Сообщений: 375
Грустно. :(
Обожаю вторую ветку! Взрыв мозга!
Посетитель
small user social cms
МедальАвторитет форумаПочетный донор проектаПочетный донор проекта
Сообщений: 2160
По-моему в опенкарте нечто подобное реализовано...
Идеи для разработчиков, Сервис автопостинга в соцсети
SSD-VPS от 5€ с администрированием!
Посетитель
small user social cms
МедальКубок зрительских симпатий
Сообщений: 555
Скорпион, система не должна дорабатываться хаками. Для этого есть контроллеры и хуки. Если их не хватает - значит надо обновлять версию "из коробки" так, чтобы хватало. А вы хотите компонент/контроллер, который будет считать "костыли" вместо того, чтобы доработать ядро..

Конечно, он имеет право на существование, но я считаю что разумнее перераспределить время на его разработку в сторону доведения "коробки icms 2" до нужного вида. Например, если вас не устраивает виджет контента (меня вот не устраивает) - я просто делаю новый виджет с нужным функционалом, а старый не трогаю - это касается и всего остального функционала.
оптимизирую помаленьку
Посетитель
no avatar
МедальАвторитет форума
Сообщений: 2566
вот если бы новые доработки (хуки, котроллеры) также устанавливались через админку, не через фтп и встраивание нового кода
Надежный быстрый хостинг
Посетитель
small user social cms
Медаль
Сообщений: 375
SJen, так то оно может быть и так, но писать новый контролер для того чтобы поменять пару строк в коде.......хм.....думаю это тоже не особо верное решение.
Обожаю вторую ветку! Взрыв мозга!
Посетитель
small user social cms
МедальКубок зрительских симпатий
Сообщений: 555
yury:
вот если бы новые доработки (хуки, котроллеры) также устанавливались через админку, не через фтп и встраивание нового кода
Так они так и ставятся) В админке грузится инсталятор (архив со всеми файлами) и в админке же все ставится как надо - со всеми запросами и тд. R2 в блогах выкладывал видео про создание такого инсталятора.

SJen, так то оно может быть и так, но писать новый контролер для того чтобы поменять пару строк в коде
Идея в том, чтобы не менять пару строк в коде, а писать свой контролер расширяющий возможности уже существующего через систему хуков (или "плагинов" в терминах первой ветки).
оптимизирую помаленьку
Посетитель
small user social cms
Медаль
Сообщений: 375
В связи с тем что местных Гуру сабж не заинтересовал, да и "бюджет" на создания компонента который я могу выделить из семейного бюджета слишком мал, чтобы делать заказ его у спецов - буду пробовать кодить сам (с моим ломанным английским facepalm ).
Если конечно уважаемая администрация не будет против неизбежного флейма по данному вопросу в данной теме.
Принимается любая помощь и советы в написании данного дополнения.
Только пожалуйста, давайте все язвительные замечания , по типу "какой нафиг из тебя программист" и т.д будете оставлять при себе.
Да - в PHP я нуб. Но как говорится - учиться не когда не поздно. Поэтому, когда будет появляться свободная минутка, буду пробовать свои силы в этом нелегком деле и вести тут типа отчета.
Обожаю вторую ветку! Взрыв мозга!
Посетитель
small user social cms
Медаль
Сообщений: 375
Возможно я начал не с того, c чего следовало бы начать, но так уж получилось что начал я с написания "функции замены кода".
Итог этой "головоломки" - тут.
Пока отложу выстраданный код и хочу заняться созданием необходимых баз данных в mysql
Обожаю вторую ветку! Взрыв мозга!
В начало страницы
Предыдущая темаСледующая тема Перейти на форум:
Быстрый ответ
Чтобы писать на форуме, зарегистрируйтесь или авторизуйтесь.