Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

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


chukcha

Recommended Posts

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

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

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

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

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

Надіслати
Поділитися на інших сайтах

37 минут назад, Waha сказал:

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

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

Надіслати
Поділитися на інших сайтах

В 18.04.2017 в 12:07, Waha сказал:

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

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

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

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

Надіслати
Поділитися на інших сайтах


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

  • +1 1
Надіслати
Поділитися на інших сайтах

5 минут назад, ArtemPitov сказал:

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

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

  • +1 1
Надіслати
Поділитися на інших сайтах

4 часа назад, markimax сказал:

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

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

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

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

Змінено користувачем destreser
  • +1 1
Надіслати
Поділитися на інших сайтах


33 минуты назад, destreser сказал:

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

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

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

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

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

  • +1 1
Надіслати
Поділитися на інших сайтах

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

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

a44355e1fe0aabe7622d2d475b61050b.png

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

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

34239e8f6434cbf23e2f89c4cbdd7104.png

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

Надіслати
Поділитися на інших сайтах

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

  • +1 2
Надіслати
Поділитися на інших сайтах


1 час назад, RGB сказал:

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

Да откуда?

 

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

  • +1 1
Надіслати
Поділитися на інших сайтах

2 часа назад, RGB сказал:

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

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

a44355e1fe0aabe7622d2d475b61050b.png

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

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

34239e8f6434cbf23e2f89c4cbdd7104.png

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

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

  • +1 1
Надіслати
Поділитися на інших сайтах

А хотите еще "приколоться" с 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));

 

 

 

Занавес

  • +1 1
Надіслати
Поділитися на інших сайтах

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

Надіслати
Поділитися на інших сайтах

8 минут назад, markimax сказал:

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

Так вот же ))

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

  • +1 1
Надіслати
Поділитися на інших сайтах


Только что, chukcha сказал:

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

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

Надіслати
Поділитися на інших сайтах


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

Надіслати
Поділитися на інших сайтах


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

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

  • +1 1
Надіслати
Поділитися на інших сайтах

7 минут назад, AWARO сказал:

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

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

  • +1 2
Надіслати
Поділитися на інших сайтах

Только что, chukcha сказал:

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

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

Надіслати
Поділитися на інших сайтах


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

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

 

  • +1 1
Надіслати
Поділитися на інших сайтах

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 (очищаешь от лишнего) на выходе и тормоз получается ... а здесь их "миллионы"

Надіслати
Поділитися на інших сайтах

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 

  • +1 1
Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.