Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: c форума dle-news.
Форумы портала PHP.SU » » Юмор » c форума dle-news.

Страниц (1): [1]
 

1. Eazy-E - 03 Июня, 2012 - 08:23:38 - перейти к сообщению
Решил вчера побывать на форуме поддержки движка DLE. Зашел в ветку, посвященную разработке API для вышеуказанной CMS. Не удержался. В ходе дискуссии разработчик активно пытается указать на плюсы использования "линейного" говнокода (аля php+html+js+css+еще_что-то_там в одном файле), попутно обсирая принципы разработки приложений. Так же старается указать на плюсы архитектуры DLE, которой, надо заметить, нет в принципе. Так же немного доставил пользователь под ником a1ex:

a1ex:
Цитата:
В ДЛЕ нет ядра, и вряд ли будет. Да и смысла особого нет. Попробуй придумать для чего он нужен, а не просто писать модные слова.


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

Стоит так-же указать на тот факт, что DLE в свое время отпочковался от некогда популярного движка cute news. Люди и по сей день находят в коде DLE, вставки кода из "cute news". Говорить о том, что cute news использовал особую лицензию, и, фактически, девелопер DLE спер оттуда код - не будем, ибо это отдельная тема для холливаров. Следовательно, можно заметить, что и сам движок cute news не имел какой либо четкой архитектуры и создавался хрен-пойми-ради-чего. Зачем это нужно было нынешнему разрабу DLE? Ессно ради профита. А когда голова забита лишь мыслью о том, лишь бы побольше навариться, глаза автоматически закрываются на те факты, что движок состоит из говнокода чуть более, чем полностью. Красота, большинство модулей ставятся посредством бесконечных правок исходников cms. "Найти это на такой-то строке, и заменить вот этим". Модульность, расширяемость и масштабируемость - она именно такая, в понимании разработчика DLE. В общем, читаем.

Compton:
Цитата:
IT-Security сказал:
АПИ нужно для удобной разработки и поддержания модулей.

API (в том виде, в котором он предоставлен в DLE), не достаточно для удобной разработки и поддержки модулей. В самой системе должна быть некая архитектура для подключения модулей. Что такое идеально расширяемый код? Это код (ядро приложения), который не нужно править при подключении какого-то стороннего модуля. Насколько мне известно, в DLE с этим проблемы.

celsoft:
Цитата:
Compton сказал:
Насколько мне известно, в DLE с этим проблемы.

Какие именно у вас с этим проблемы? http://dle-news[dot]ru/extras/online[dot][dot][dot]les_include[dot]html

Compton:
celsoft, да уж... Инклудить php скрипт внутрь шаблона, это вы называете расширяемостью? Или в чем фишка, я наверно не просек. Я не знаю даже что вам посоветовать.. Почитайте на досуге, что такое проектирование, архитектура приложения.. Про паттерны проектирования почитайте, ага. MVC/HMVC - замечательная вещь (хотя в случае с DLE врядли поможет). Про модульность почитайте. Да что там говорить, если даже API для вашего движка написали сторонние разработчики. Это вам ни на что не намекает? Ммм, а с чего обычно начинается ваше общение с теми, у кого возникли проблемы с DLE?

Цитата:
Цитата
После чего у вас стала появлятся данная проблема? Возможно ставили какие то сторонние модули или модификации?

Ага, милый мой, поставил кривой модуль в систему - гуляй, не мои проблемы.
А почему криво поставил? Да потому, что, чтобы расширить функционал DLE и поставить модуль, нужно править как минимум несколько файлов. И, внимание, даже engine.php! Я так понимаю этот файл подразумевался ядром системы? Содержание вашего "ядра системы" - это вообще отдельный разговор.

Как-то не практично:

PHP:
скопировать код в буфер обмена
  1.  
  2. case "deletenews" :
  3.   include ENGINE_DIR . '/modules/deletenews.php';
  4.   break;
  5. case "comments" :
  6.   include ENGINE_DIR . '/modules/comments.php';
  7.   break;
  8.  
  9. case "stats" :
  10.   include ENGINE_DIR . '/modules/stats.php';
  11.   break;
  12.  
  13. case "addnews" :
  14.   include ENGINE_DIR . '/modules/addnews.php';
  15.   break;
  16.  


Зачем это в ядре?

PHP:
скопировать код в буфер обмена
  1.  
  2. $db->query( "DELETE FROM " . PREFIX . "_subscribe WHERE news_id='{$_GET['post_id']}' AND user_id='{$_GET['user_id']}'" );
  3. msgbox( $lang['all_info'], $lang['unsubscribe_ok']);
  4.  
  5. } else {
  6. msgbox( $lang['all_info'], $lang['unsubscribe_err']);
  7. }
  8.  


Короче, раз за разом после таких правок появляется дырки, глюки, и т.д. Ессно, скрипт начинает лагать, тупить, появляются недокументированные возможности и т.д. Недовольный клиент идет именно на форум поддержки DLE, объясняет проблему. Ессно, если проблемы возникли из-за стороннего модуля, он будет справедливо послан натрибу... Кто виноват в этом?! Клиент, который криво поставил модуль? Сторонний разработчик, который, за неимением интерфейса взаимодействия с ядром и компонентами системы, не предоставил другого варианта подключения модуля (кроме как править файлы модулей и ядра - как же это мило)? Или вы, кто не реализовал в своей разработке общепринятых архитектурных решений (заметьте, расширяемость - это основа многих CMS и фреймворков)? Ответ очевиден. Заметьте, у разработчиков считается хорошим тоном рассказать об архитектуре их проекта (к примеру, CMS boolive!). А у DLE есть архитектура? Я сомневаюсь Улыбка

А вы мне ссылку на страницу кидаете, где написано про "удобное подключение модулей". Нифига оно не удобное. За нежеланием что-то кардинально поменять в движке, вы придумали такой костыль. В идеале - скинул скрипт в папку системы и он заработал при инициализации ядра (почитайте про роутинг, контроллеры MVC, про функцию autoload в частности). В общем список продолжать можно бесконечно. Можно было все это уместить в одном предложении:
DLE создан для профита разработчика
Но у меня не было желания потроллить вас и т.д. Я просто дал вам несколько советов, покритиковал. Надеюсь вы это поймете Улыбка
Peace!

celsoft:
Цитата:
Compton сказал:
Или в чем фишка, я наверно не просек.

Скорее всего.
Цитата:
Compton сказал:
Про паттерны проектирования почитайте, ага. MVC/HMVC - замечательная вещь.

А вы прочитайте про их тормоза и большую потребность в оперативной памяти, и прочий ненужных хлам связанный с этим. Другими словами изучите вопрос досконально, а не поверхностно прочитав модные слова. Есть одна очень замечательная вешь, ни одна CMS построенная на MVC не работает быстрее DLE, и не потребляет меньше памяти и не держит большую нагрузку. При равных одинаковых функциональных возможностях сайта.
Цитата:
Compton сказал:
Ага, милый мой, поставил кривой модуль в систему - гуляй, не мои проблемы.

Цитата:
Compton сказал:
Ессно, если проблемы возникли из-за стороннего модуля, он будет справедливо послан натрибу... Кто виноват в этом?! Клиент, который криво поставил модуль? Сторонний разработчик, который, за неимением интерфейса взаимодействия с ядром и компонентами системы, не предоставил другого варианта подключения модуля (кроме как править файлы модулей и ядра - как же это мило)?

Звучит как призыв: "Дайте нам возможность писать кривые модули", чтобы наша "кривизна" не мешала работать сайту, и мы могли бы иметь профит без отладки и тестирования.
Цитата:
Compton сказал:
Я просто дал вам несколько советов, покритиковал.

Это я понимаю. Только вы не понимаете целей DLE, и его предназначения. DLE это не фреймворк, это готовый конечный продукт предназначенный для конечного пользователя. И его цели: 1. Максимально быстро работать. 2. Максимально меньше потреблять ресурсов сервера. 3. Дать максимально удобную концепцию работы с сайтом и шаблонами для конечного потребителя создающего сайт (вебмастера). А ваши советы рушат все три пунта и направлены только для писателей модулей. Не бывают правильных или неправильных советов в данном вопросе. Бывают полезные советы, а бывают бесполезные. Когда совет идет в разрез с преследуемыми целями, он просто бесполезен. Когда совет позволяет наоборот улучшить преследуемые цели, он полезен.
Цитата:
Compton сказал:
$db->query( "DELETE FROM " . PREFIX . "_subscribe WHERE news_id='{$_GET['post_id']}' AND user_id='{$_GET['user_id']}'" );

Я так понимаю это вы на предмет безопасности этот код привели? На две строчки выше глаза поднимите в коде. Или вы это написали с мыслью что под каждую GET переменную нужно вводить ненужную внутреннюю переменную.

Compton:
Цитата:
celsoft сказал:
А вы прочитайте про их тормоза и большую потребность в оперативной памяти

Причем здесь тормоза? Вы вообще понимаете, что такое паттерн проектирования (MVC в частности)? Это парадигма, стандарт проектирования.
Цитата:
celsoft сказал:
и прочий ненужных хлам связанный с этим

Нет! Нет! И еще раз нет!! Как раз таки, суть MVC в том, чтобы избежать хлама и говнокода.
Концепция MVC позволяет разделить данные, представление и обработку действий пользователя на три отдельных компонента:

Цитата:
Модель (англ. Model). Модель предоставляет знания: данные и методы работы с этими данными, реагирует на запросы, изменяя своё состояние. Не содержит информации, как эти знания можно визуализировать.
Представление, вид (англ. View). Отвечает за отображение информации (визуализацию). Часто в качестве представления выступает форма (окно) с графическими элементами.
Контроллер (англ. Controller). Обеспечивает связь между пользователем и системой: контролирует ввод данных пользователем и использует модель и представление для реализации необходимой реакции.

А вот вы кажется этого и не поняли.
И еще раз об этом:
Цитата:
celsoft сказал:
А вы прочитайте про их тормоза и большую потребность в оперативной памяти

Это уже зависит от конкретного приложения и функционала. Следовательно и методы развертывания здесь другие (отдельный сервер под кэш, отдельный под бд и т.д.). Я опять же не понял, каким образом шаблон проектирования связан с потреблением памяти.... Не понял
Цитата:
Цитата
Это я понимаю. Только вы не понимаете целей DLE, и его предназначения. DLE это фреймворк, это готовый конечный продукт предназначенный для конечного пользователя.

Бегло прочитав, я долго смеялся. И все же я очень надеюсь, что перед словом фреймворк вы пропустили "не". Окей, WP тоже конечный продукт для блога. Я конечно не говорю о том, что без использования кэширования более 1000 запросов к бд это полный писец. Но я не об этом. Разработчикам WP ничто не помешало внедрить интерфейс для подключения плагинов. Что такое плагин? Подключил в админке и все работает. В DLE есть такое? Ну вот)
Цитата:
Цитата
Звучит как призыв: "Дайте нам возможность писать кривые модули", чтобы наша "кривизна" не мешала работать сайту, и мы могли бы иметь профит без отладки и тестирования.

Неа. Это звучит как призыв к вам: "Реализуйте в своем движке мощный внутренний API и интерфейс подключения плагинов, уничтожив на корню любое желание у сторонних разработчиков писать кривые модули". Улыбка

И еще вопрос. Во имя чего вы используете ООП в разработке DLE? Потому что это модная фича PHP? Ага, фича. Она, кстати, с каждой новой версией PHP совершенствуется и расшияется. Глупо не использовать такие возможности, как наследование и полиморфизм и т.д. В вашем случае помогло бы решить проблему повторяющегося кода (кстати, это еще одна суть ООП, избегать повторяющегося кода). А вообще, все упирается в проектирование архитектуры. Сначала разрабатывается план, а потому уже по плану все делается. А не сначала код пишу, а потом думаю: а зачем я вообще это делаю? К вашему сведению, на проектирование уходит до 80% затраченного на реализацию проекта времени. Что как бы намекает.
Цитата:
Compton сказал:
$db->query( "DELETE FROM " . PREFIX . "_subscribe WHERE news_id='{$_GET['post_id']}' AND user_id='{$_GET['user_id']}'" );

Цитата:
Цитата
Я так понимаю это вы на предмет безопасности этот код привели? На две строчки выше глаза поднимите в коде. Или вы это написали с мыслью что под каждую GET переменную нужно вводить ненужную внутреннюю переменную.

Да причем здесь вообще безопасность? Вы меня не поняли. Просто такому коду в файле, который подразумевался ядром системы, просто не место. Из-за такого и получается путаница.

celsoft:
Цитата:
Compton сказал:
Это парадигма, стандарт проектирования.

Вот на этом в принципе можно закончить с вами дискуссию. Вы мыслите догмами из учебников. Стандартов не бывает. Тот кто мыслит стандартами, только и может делать стандартную работу.

Цитата:
Compton сказал:
Нет! Нет! И еще раз нет!! Как раз таки, суть MVC в том, чтобы избежать хлама и говнокода.

Я вам не про код писал, а про хлам в памяти, который нужно разворачивать PHP интерпретатору, для обработки паттернов, объектов, и прочего. Запомните одну простую вешь, то что не делаете вы, кто то или что то делает за вас, в данном случае это делает PHP интерпретатор, и он не за счет воздуха работает. Все ваше проектирование в конечном итоге приводится интерпретатором PHP к линейному коду. А как вы выразились написать "говнокод" можно и на MVC модели, для этого большого ума не нужно. Самый быстрый код, это линейный код. Использование объектов, классов и паттернов, триггеров и всего остального прочего должно быть оправдано преследуемыми целями, а не потому что кто то где то написал MVC это стандарт проектирования. Это полная чушь. Вы сейчас написали чушь, написав что MVC это стандарт, MVC оправдан для написания фреймоворков, потому как фреймворки направлены в свою очередь на программистов, чтобы они могли создавать и быстро расширять свой продукт. MVC в продукте для конечного пользователя это зло, потому как заставляет конечный продукт медленно работать, потому как в нем все настроено на расширяемость, а не на быстродействие. А вы на разные цели пытаетесь надеть один стандарт. Это неправильно.
Цитата:

Compton сказал:
Бегло прочитав, я долго смеялся. И все же я очень надеюсь, что перед словом фреймворк вы пропустили "не".

Безусловно, это опечатка. Цель предложения была что DLE именно не фреймворк.

Compton:
Цитата:
celsoft сказал:
Вот на этом в принципе можно закончить с вами дискуссию. Вы мыслите догмами из учебников. Стандартов не бывает. Тот кто мыслит стандартами, только и может делать стандартную работу.

Ну зачем же вы так? Слишком обобщаете сущность понятия "стандарт". PHP - тоже в своем роде стандарт. И тоже накладывает некие ограничения. Тем не менее, является одним из самых популярных языков программирования для web (особенно влюбленные даже дали нам возможность писать оконные приложения, но я сейчас не о грустном Улыбка ). То же самое MVC - стандарт, предъявляющий к разработчику требования реализовывать задуманное более аккуратно, практично, элегантно. Кстати, он не накладывает никаких "функциональных" ограничений. Разве это плохо? Теперь о поизводительности. Вы считаете, что код написанный по стандарту, будет работать медленнее чем ваш "линейный" код, когда в каждом файле приложения сам черт ногу сломит: здесь смесь из php - html - js и так далее. Мало того, что такой подход не обеспечит высокой скорости работы, так и простому человеку будет весьма попобольно сопровождать такой код. Обобщу: говнокод тоже весьма "стандартизирован" Ха-ха Его легко использовать, но последствия могут быть разными. Теперь попробуйте объяснить что паттерны проектирования влияют на скорость крупным компаниям, с целыми штатами разработчиков. Не, ну давайте рассуждать логически... Если бы паттерны были бы неудобны, стали бы их использовать? Ответ очевиден. И все же, важна сама архитектура приложения. Сначала думаем, а потом реализуем. А не наоборот.

Цитата:
Цитата
Использование объектов, классов и паттернов, триггеров и всего остального прочего должно быть оправдано преследуемыми целями


В вашем случае оправдано использование классов? Реальное ООП в вашей системе, я увидел только в сторонней библиотеке Minify и в визивиг редакторе TinyMCE. Более - нигде.

celsoft:
Цитата:
Compton сказал:
Если бы паттерны были бы неудобны, стали бы их использовать?

Я говорил не об удобстве, я говорил совсем о другом. Где в моем сообщении вы прочитали слово неудобно?. Вы делаете неверные выводы из того что пишу, видимо на основе того что вы их поверхностно читаете.

Цитата:
Compton сказал:
Не, ну давайте рассуждать логически...

Нет смысла. Я вам про фому, вы мне про ерему. Напишите приложение полностью идентичное функциональности DLE на MVC, а потом мы поговорим о логичности. После тестов производительности. Вы оперируете теорией, я оперирую практикой.

Цитата:
Compton сказал:
Вы считаете, что код написанный по стандарту, будет работать медленнее чем ваш "линейный" код

Я не считаю, я знаю.
Цитата:

Compton сказал:
Ответ очевиден. И все же, важна сама архитектура приложения. Сначала думаем, а потом реализуем. А не наоборот.

Опять таки архитектура приложения != MVC, архитектура может быть какой угодно, а также "думать" != MVC. Думать нужно исходя из цели, что важнее и что приоритетней. Я вам уже написал что приоритетней для DLE. Непонятно с чего вы взяли что текущая архитектура DLE это не обдуманный шаг? Это осознанный и обдуманный шаг, который не просто продуман в теории, а проверен в "боевых условиях". И который я считаю наиболее подходящим для DLE. И верность данного выбора подтверждается мировым рейтингом http://w3techs[dot]com/technologies/[dot][dot][dot]feengine/all/all и рейтингом по рунету [url]http://itrack[dot]ru/research/cmsrate/ [/url]

a1ex:
Compton

В ДЛЕ нет ядра, и вряд ли будет. Да и смысла особого нет. Попробуй придумать для чего он нужен, а не просто писать модные слова.
Однако я соглашусь что некоторые вещи мог бы celsoft и вынести в функции хотя бы. Слишком много одного и того же кода. Зачем копипастить? кинул в функцию и забыл.

WebAdequate:
Товарищ Компот так написал, как будто тут никто не знает что такое MVC и зачем оно нужно. Хотите и я Вам скажу что на создание, изменение, высвобождение объектов требуются больше ресурсов, а это время. Товарищ либо тролль, либо переигрывает.

Compton:
Цитата:
celsoft сказал:
!= MVC

Можно было и буквами написать.

Цитата:
celsoft сказал:
текущая архитектура DLE это не обдуманный шаг

Какая текущая? Которой в нет вообще? Где на сайте вашего проекта хоть слово замолвлено про архитектуру? Вы, не бось, шутите сейчас.. Да, чет возьми, откройте же код своего движка и посмотрите на него! Вы сами в нем не путаетесь? Я сомневаюсь.

Цитата:
WebAdequate сказал:
Товарищ Компот

Товарищ ВебНеАдекват, сами вы Компот! У вас, вероятно, вообще не оказалось аргументов для ответа, но как это обычно бывает, надо же вставить словцо! Весьма "остроумно" при этом было исказить мой ник. И таки нет, я не тролль. Посмотрите же, с чего начиналось это обсуждение. Я не писал конкретно про то, что MVC надо использовать везде и всегда. Я писал про архитектуру приложения, что таковая должна быть еще до того, как сам код системы будет написан. И поверьте, если бы она была, то в сети не возникало бы срачей по поводу: "поставил модуль на DLE - завалил систему ...". Ну, вы поняли. Погуглите штоле, я не знаю.

Цитата:
a1ex сказал:
В ДЛЕ нет ядра, и вряд ли будет.
Да и смысла особого нет. Попробуй придумать для чего он нужен, а не просто писать модные слова.

Товарищ, у меня нет слов.. вы вообще понимаете, что из себя представляет ядро? Вероятно, что нет, иначе бы не писали такую чепуху..

Цитата:
a1ex сказал:
Однако я соглашусь что некоторые вещи мог бы celsoft и вынести в функции хотя бы. Слишком много одного и того же кода. Зачем копипастить? кинул в функцию и забыл.

Дык, я о том же. ООП в помощь, и никаких функций.

Цитата:
celsoft сказал:
Напишите приложение полностью идентичное функциональности DLE на MVC

Зачем? CMS такого рода полно, я не буду называть конкретные движки по понятным причинам. Стоит ли говорить, что почти все популярные фреймворки используют парадигму MVC? Но я таки хочу напомнить, что суть моей критики не заключалась в повсеместном использовании какого либо стандарта, я таки говорил об архитектуре. А на каких стандартах построена сама архитектура, это уже не суть! Если она есть, то это всяко поможет в будущем. Избежать говнокода в системе и предоставить удобные возможности для масштабирования.

Цитата:
celsoft сказал:
И верность данного выбора подтверждается мировым рейтингом

Это уже отдельный разговор. Вы и сами прекрасно знаете, что большая часть сайтов на DLE - говносайты варезной тематики, созданные школотой на нуленных версиях. Без обид, это факт. А почему так? "Потому что просто! И шаблонов много!" - (типичный школьник)

 

Powered by ExBB FM 1.0 RC1