chukcha

3.0.0.0 или Что нас ждет

Рекомендуемые сообщения

Waha    286
27 минут назад, markimax сказал:

Да подчеркну все же преимущества шаблонизаторов

«Преимущество» шаблонизаторов только в одном
Чтобы криворукие идиоты не вставляли в tpl new Class() и т.п. вызовы которые должны быть в контроллерах :mrgreen:

Ахаах в яблочко)
А что на счет кеширования, если оно будет из коробки или почти из коробки от Даниеля, разве будет разница есть шаблонизатор или нет?

И если кеш файовый не пригоден на том или ином проекту будет может как в XenForo шаблоны переносить в БД хранить?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
markimax    1 434
37 минут назад, Waha сказал:

Ахаах в яблочко)
А что на счет кеширования, если оно будет из коробки или почти из коробки от Даниеля, разве будет разница есть шаблонизатор или нет?

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
destreser    64
В 18.04.2017 в 12:07, Waha сказал:

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

Вы зрите в корень.

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

Такое складывается впечатление, что они тут не по собственной воле что бы заработать на предоставлении услуг и товаров, а их кто-то когда-то заставил это сделать, они "отстрелялись", сделав пару шаблонов/модулей ещё под 1.5 и теперь любое продолжение работы - это каторга и бесперспективная трата времени, а тут еще и палки в колеса ставят. Вот же демон этот Даниэль, правда? Лол.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
ArtemPitov    377

@destreser все очень просто, тут люди думают не только за деньги 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
markimax    1 434
5 минут назад, ArtemPitov сказал:

@destreser все очень просто, тут люди думают не только за деньги 

Совершенно верно
Думают про экосистему opencart
Чтобы он был популярен (а будет популярен - еще больше кстати заработают разработчики)
Посмотрите на маркетплейс - да оттуда свалило очень много разработчиков хороших модулей.
Их просто достал частичный маразм Даниэля (twig это вообще имхо идиотизм)
Посмотрите какая фрагментация opencart сейчас ... не должно такого быть 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
destreser    64
4 часа назад, markimax сказал:

Думают про экосистему opencart

При всём уважении, это всё красивые слова. Я не хотел бы скатываться к провокационным вопросам, но вот серьезно, вы можете хоть приблизительно назвать скольких людей (в % от этого сообщества) красота кода и архитектуры беспокоит больше, чем потенциальная прибыль? Такие есть, я не спорю, но тут на скорости гиперзвука подлетает  второй вопрос - а сколько из них реально коммитит на гх? Тут ведь как получается - если их достаточно много, то почему бы не форкнуть и пилить своё, с блекджеком и без твига? Идей ведь масса, глаза горят, все знают "как правильно". Если же мало - то о каком влиянии на экосистему вообще может идти речь?

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

Замечу только, что у меня совсем другой взгляд на сабж и даже в использовании шаблонизатора я вижу больше плюсов, чем недостатков. А лично для себя я недостатков не вижу вообще.

Изменено пользователем destreser

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Waha    286
33 минуты назад, destreser сказал:

При всём уважении, это всё красивые слова. Я не хотел бы скатываться к провокационным вопросам, но вот серьезно, вы можете хоть приблизительно назвать скольких людей (в % от этого сообщества) красота кода и архитектуры беспокоит больше, чем потенциальная прибыль? Такие есть, я не спорю, но тут на скорости гиперзвука подлетает  второй вопрос - а сколько из них реально коммитит на гх? Тут ведь как получается - если их достаточно много, то почему бы не форкнуть и пилить своё, с блекджеком и без твига? Идей ведь масса, глаза горят, все знают "как правильно". Если же мало - то о каком влиянии на экосистему вообще может идти речь?

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

Замечу только, что у меня совсем другой взгляд на сабж и даже в использовании шаблонизатора я вижу больше плюсов, чем недостатков. А лично для себя я недостатков не вижу вообще.

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

На счет шаблонизатора, если он создает тормоза, то это явный минус. Да и ничего плохого в tpl для меня лично не было.
на счет "бери и пили" так почти все "рукастые" сайтопейсатели уже работают на своих сборках и ставят их клиентам... Идеальной платформы нету, и под каждый проект всегда будут разные решения
 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
RGB    1 004

Пока что практически ничего не знаю про twig и с чем его едят, но решил поставить 3.0 и проверить, правда ли изменилась скорость, с которой главная грузится в браузере, получилось вот так:

Скрытый текст

a44355e1fe0aabe7622d2d475b61050b.png

при том, что 2.3 цифры приятнее:

Скрытый текст

34239e8f6434cbf23e2f89c4cbdd7104.png

Но учитывая dev-версию тройки, может быть к более-менее стабильному релизу что-то улучшится

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
AWARO    550

если посмотреть развитие опенкарта и попытаться осмыслить задачу дениэля то вывод один -
***
- Мужик, хоч е*ться?
- Хочу!
- Прокалывает все шины шилом и говорит: Вот - е*сь!
***
))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
chukcha    894
1 час назад, RGB сказал:

Но учитывая dev-версию тройки, может быть к более-менее стабильному релизу что-то улучшится

Да откуда?

 

Основное время отобрал шаблонизатор

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
markimax    1 434
2 часа назад, RGB сказал:

Пока что практически ничего не знаю про twig и с чем его едят, но решил поставить 3.0 и проверить, правда ли изменилась скорость, с которой главная грузится в браузере, получилось вот так:

  Показать контент

a44355e1fe0aabe7622d2d475b61050b.png

при том, что 2.3 цифры приятнее:

  Показать контент

34239e8f6434cbf23e2f89c4cbdd7104.png

Но учитывая dev-версию тройки, может быть к более-менее стабильному релизу что-то улучшится

Да у меня почти такие же печальные результаты
Это все "работа" шаблонизатора
Я представляю сколько ресурсов уходит на парсинг регулярками twig шаблонов
Так что я думаю не стоит ждать и от релиза скорости
Лучше переключать в режим php tpl
Ох и прогнулся Даниэль перед "спонсорами" - инвесторами

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
markimax    1 434

А хотите еще "приколоться" с twig шаблонизатора ?
Смотрите какой php код генерит с тривиального шаблона twig

 

{% extends "base.html" %}

{% block title %}Серия романов о Гарри Поттере{% endblock %}

{% block content %}
<h1>Серия романов о Гарри Поттере</h1>

<div id="books">
    {% for book in books %}
    <div class="book">
        <strong>{{book.number}}</strong>. "<em>{{book.title}}"</em> - {{book.date}}
    </div>
    {% endfor %}
</div>
{% endblock %}

 

мАмА дАрАгАя :

 

Скрытый текст

<?php

/* base.html */
class __TwigTemplate_8944b57466f08564caa53a1988261ae0 extends Twig_Template
{
    public function __construct(Twig_Environment $env)
    {
        parent::__construct($env);

        $this->parent = false;

        $this->blocks = array(
            'title' => array($this, 'block_title'),
            'content' => array($this, 'block_content'),
        );
    }

    protected function doDisplay(array $context, array $blocks = array())
    {
        // line 1
        echo "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">
<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"ru\">
<head>
    <title>";
        // line 4
        $this->displayBlock('title', $context, $blocks);
        echo "</title>
    <meta http-equiv=\"Content-Type\" content=\"text/html;charset=UTF-8\"/>
</head>
<body>

<div id=\"content\">
    ";
        // line 10
        $this->displayBlock('content', $context, $blocks);
        // line 12
        echo "</div>

</body>
</html>";
    }

    // line 4
    public function block_title($context, array $blocks = array())
    {
    }

    // line 10
    public function block_content($context, array $blocks = array())
    {
        // line 11
        echo "    ";
    }

    public function getTemplateName()
    {
        return "base.html";
    }

    public function getDebugInfo()
    {
        return array (  52 => 11,  49 => 10,  44 => 4,  37 => 12,  26 => 4,  21 => 1,  63 => 14,  50 => 11,  47 => 10,  43 => 9,  38 => 6,  35 => 10,  29 => 3,);
    }
}

<?php

/* books.html */
class __TwigTemplate_b8cee45188afdb4e6ad9c60dbacb54c3 extends Twig_Template
{
    public function __construct(Twig_Environment $env)
    {
        parent::__construct($env);

        $this->parent = $this->env->loadTemplate("base.html");

        $this->blocks = array(
            'title' => array($this, 'block_title'),
            'content' => array($this, 'block_content'),
        );
    }

    protected function doGetParent(array $context)
    {
        return "base.html";
    }

    protected function doDisplay(array $context, array $blocks = array())
    {
        $this->parent->display($context, array_merge($this->blocks, $blocks));
    }

    // line 3
    public function block_title($context, array $blocks = array())
    {
        echo "Серия романов о Гарри Поттере";
    }

    // line 5
    public function block_content($context, array $blocks = array())
    {
        // line 6
        echo "<h1>Серия романов о Гарри Поттере</h1>

<div id=\"books\">
    ";
        // line 9
        $context['_parent'] = (array) $context;
        $context['_seq'] = twig_ensure_traversable((isset($context["books"]) ? $context["books"] : null));
        foreach ($context['_seq'] as $context["_key"] => $context["book"]) {
            // line 10
            echo "    <div class=\"book\">
    \t<strong>";
            // line 11
            echo twig_escape_filter($this->env, $this->getAttribute((isset($context["book"]) ? $context["book"] : null), "number"), "html", null, true);
            echo "</strong>. \"<em>";
            echo twig_escape_filter($this->env, $this->getAttribute((isset($context["book"]) ? $context["book"] : null), "title"), "html", null, true);
            echo "\"</em> - ";
            echo twig_escape_filter($this->env, $this->getAttribute((isset($context["book"]) ? $context["book"] : null), "date"), "html", null, true);
            echo "
    </div>
    ";
        }
        $_parent = $context['_parent'];
        unset($context['_seq'], $context['_iterated'], $context['_key'], $context['book'], $context['_parent'], $context['loop']);
        $context = array_merge($_parent, array_intersect_key($context, $_parent));
        // line 14
        echo "</div>
";
    }

    public function getTemplateName()
    {
        return "books.html";
    }

    public function isTraitable()
    {
        return false;
    }

    public function getDebugInfo()
    {
        return array (  63 => 14,  50 => 11,  47 => 10,  43 => 9,  38 => 6,  35 => 5,  29 => 3,);
    }
}

<?php

require_once 'lib/Twig/Autoloader.php';
Twig_Autoloader::register();

$loader = new Twig_Loader_Filesystem('templates');
$twig = new Twig_Environment($loader, array(
    'cache'       => 'compilation_cache',
    'auto_reload' => true
));

$books = array(
    array('number' => 'Книга 1', 'title' => 'Гарри Поттер и философский камень', 'date' => '30.06.1997'),
    array('number' => 'Книга 2', 'title' => 'Гарри Поттер и Тайная комната', 'date' => '2.07.1998'),
    array('number' => 'Книга 3', 'title' => 'Гарри Поттер и узник Азкабана', 'date' => '8.07.1999'),
    array('number' => 'Книга 4', 'title' => 'Гарри Поттер и Кубок огня', 'date' => '8.07.2000'),
    array('number' => 'Книга 5', 'title' => 'Гарри Поттер и Орден Феникса', 'date' => '21.07.2003'),
    array('number' => 'Книга 6', 'title' => 'Гарри Поттер и Принц-полукровка', 'date' => '16.07.2005'),
    array('number' => 'Книга 7', 'title' => 'Гарри Поттер и Дары Смерти', 'date' => '21.07.2007')
);

echo $twig->render('books.html', array('books' => $books));

 

 

 

Занавес

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
markimax    1 434

После всего "этого" мне кто то может объяснить зачем Даниэль интегрировал twig в opencart ?
Мне на ум не приходит ни одного разумного объяснения
Может я чего то не понимаю ?
Вот честно

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Skunk    84

Booz money, как говорил Никсон в Футураме ;)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
AWARO    550
8 минут назад, markimax сказал:

После всего "этого" мне кто то может объяснить зачем Даниэль интегрировал twig в opencart ?
Мне на ум не приходит ни одного разумного объяснения
Может я чего то не понимаю ?
Вот честно

Так вот же ))

Может всеё толпой к нему на форум в тему поддержки 3й версии на тролить всё это дело?))
в гит и т.д. - может остановится пока не поздно..

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
chukcha    894

Для переноса темы из одного проекта в другой, с одой системы в другую

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
AWARO    550
Только что, chukcha сказал:

Для переноса темы из одного проекта в другой, с одой системы в другую

типа портирования? один модуль, шаблон под все движки на свете? один стандарт или я не туда торможу?
 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
chukcha    894
1 минуту назад, AWARO сказал:

один стандарт

Условно -да

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
AWARO    550

короч опенкарт превращается потихоньку в //
вот не по теме опенкарт впихнутый в джумлу
https://miwisoft.com/joomla-extensions/mijoshop-joomla-shopping-cart

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
markimax    1 434

Ну я так и предполагал
Видно у кого то из спонсоров - инвесторов их магазины на twig шаблонизаторе и самописном г.. , решили перевести без потерь на opencart
Вот Даниэль и прогнулся
Но это то понятно.

Я другого не пойму - почему эти "тормоза" и [censored] по умолчанию включены в opencart 3

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
chukcha    894
7 минут назад, AWARO сказал:

вот не по теме опенкарт впихнутый в джумлу

там-то почти 100% ОС, в смысле ядра
Не знаю как там с ЧПУ, но работает же

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
AWARO    550
Только что, chukcha сказал:

там-то почти 100% ОС, в смысле ядра
Не знаю как там с ЧПУ, но работает же

работает, с него и попал сюда на форум
но тормозит жутко, джумла + ещё опенкарт через него там бардак вообще...
сео это просто название там..
по сути прост коммерческий ход и всё, как Марк заметил этот твиг тоже такой же ход.
В общем всё что от начальной версии до 2.3. делалось - примерно то же самое будет и начиная от 3й версии...
А потом потомки дениэля и оффлайн магазин запихают в онлайн и обратно)))
засунул руку в монитор и взял с полки че надо

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
RGB    1 004

Посмотрел через профайлер по запросам - в тройке добавились новые типа такого:

0.00429s	15	SELECT * FROM oc_theme WHERE store_id = '...' AND theme = '...' AND route = '...'
0.00315s	11	SELECT * FROM oc_translation WHERE store_id = '...' AND language_id = '...' AND route = '...'

в итоге главная страница после свежей установки имеет такую статистику по запросам:

Total time 0.5381 seconds | Total queries:99

А в 2.3.0.2 она была "легче" на целых 26 запросов:

Total time 0.3941 seconds | Total queries:73

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
markimax    1 434
2 часа назад, RGB сказал:

Посмотрел через профайлер по запросам - в тройке добавились новые типа такого:


0.00429s	15	SELECT * FROM oc_theme WHERE store_id = '...' AND theme = '...' AND route = '...'
0.00315s	11	SELECT * FROM oc_translation WHERE store_id = '...' AND language_id = '...' AND route = '...'

 

Лишние запросы это всего ~ 0.075 c
А вот все остальное (почти 0.3 c)  "сьел" парсинг регулярками шаблонизатор
Регулярки оооочень много жрут ресурсов, особенно когда шаблон большой, а его парсят и парсят, парсят и парсят, парсят и парсят ...
 

Скрытый текст

 


 foreach ($this->filters as $pattern => $filter) {
            $pattern = str_replace('\\*', '(.*?)', preg_quote($pattern, '#'), $count);

            if ($count) {
                if (preg_match('#^'.$pattern.'$#', $name, $matches)) {
                    array_shift($matches);
                    $filter->setArguments($matches);

                    return $filter;
                }
            }
        }

            if (0 == strlen($string) ? false : (1 == preg_match('/^./su', $string) ? false : true)) {
                throw new Twig_Error_Runtime('The string to escape is not a valid UTF-8 string.');
            }

            $string = preg_replace_callback('#[^a-zA-Z0-9,\._]#Su', '_twig_escape_js_callback', $string);

preg_match_all($this->regexes['lex_tokens_start'], $this->code, $matches, PREG_OFFSET_CAPTURE);

                if (preg_match($this->regexes['lex_block_raw'], $this->code, $match, null, $this->cursor)) {
                    $this->moveCursor($match[0]);
                    $this->lexRawData($match[1]);
                // {% line \d+ %}
                } elseif (preg_match($this->regexes['lex_block_line'], $this->code, $match, null, $this->cursor)) {
                    $this->moveCursor($match[0]);
                    $this->lineno = (int) $match[1];
                } else {
                    $this->pushToken(Twig_Token::BLOCK_START_TYPE);
                    $this->pushState(self::STATE_BLOCK);
                    $this->currentVarBlockLine = $this->lineno;
                }

 


 if (empty($this->brackets) && preg_match($this->regexes['lex_var'], $this->code, $match, null, $this->cursor)) {

...

...

...

 

И это только одна "миллионная" часть их в коде шаблонизатора
Иногда простой регуляркой (одной) сжимаешь код html (очищаешь от лишнего) на выходе и тормоз получается ... а здесь их "миллионы"

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Waha    286
14 минут назад, markimax сказал:

Лишние запросы это всего ~ 0.075 c
А вот все остальное (почти 0.3 c)  "сьел" парсинг регулярками шаблонизатор
Регулярки оооочень много жрут ресурсов, особенно когда шаблон большой, а его парсят и парсят, парсят и парсят, парсят и парсят ...
 

  Показать контент

 



 foreach ($this->filters as $pattern => $filter) {
            $pattern = str_replace('\\*', '(.*?)', preg_quote($pattern, '#'), $count);

            if ($count) {
                if (preg_match('#^'.$pattern.'$#', $name, $matches)) {
                    array_shift($matches);
                    $filter->setArguments($matches);

                    return $filter;
                }
            }
        }


            if (0 == strlen($string) ? false : (1 == preg_match('/^./su', $string) ? false : true)) {
                throw new Twig_Error_Runtime('The string to escape is not a valid UTF-8 string.');
            }

            $string = preg_replace_callback('#[^a-zA-Z0-9,\._]#Su', '_twig_escape_js_callback', $string);


preg_match_all($this->regexes['lex_tokens_start'], $this->code, $matches, PREG_OFFSET_CAPTURE);


                if (preg_match($this->regexes['lex_block_raw'], $this->code, $match, null, $this->cursor)) {
                    $this->moveCursor($match[0]);
                    $this->lexRawData($match[1]);
                // {% line \d+ %}
                } elseif (preg_match($this->regexes['lex_block_line'], $this->code, $match, null, $this->cursor)) {
                    $this->moveCursor($match[0]);
                    $this->lineno = (int) $match[1];
                } else {
                    $this->pushToken(Twig_Token::BLOCK_START_TYPE);
                    $this->pushState(self::STATE_BLOCK);
                    $this->currentVarBlockLine = $this->lineno;
                }

 



 if (empty($this->brackets) && preg_match($this->regexes['lex_var'], $this->code, $match, null, $this->cursor)) {

...

...

...

 

И это только одна "миллионная" часть их в коде шаблонизатора
Иногда простой регуляркой (одной) сжимаешь код html (очищаешь от лишнего) на выходе и тормоз получается ... а здесь их "миллионы"

 

Просто ***ный стыд... И как это Г можно было встроить в движок...!? Чем дальше копаю версию 3.0 тем больше понимаю, что направление развития платформы достаточно спорное... Скорее всего версия ocStore 3.x будет поставляться с допилом который будет полностью вырубать twig  и использовать tpl 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти


  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу