Перейти к содержанию
Официальный форум поддержки Simpla

Почему симпла не подходит для крупных проектов


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

какой Noxter... Что вы пишите... 

 

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

 

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

Изменено пользователем DaVinci
Ссылка на сообщение
Поделиться на другие сайты
  • Ответов 80
  • Дата создания
  • Последний ответ

Лучшие авторы в теме

Лучшие авторы в теме

В конце концов давайте вместе писать, я готов вам помочь, а быть может вы мне что то подскажите. Давайте разберемся - подходит ли сипла для масштабных проектов вместе!

 

Вот такой вот эксперимент, можем сделать трансляцию в ютуб, может кому то будет полезно посмотреть на "живую разработку".

 

Я думаю получиться очень полезный материал

Изменено пользователем DaVinci
Ссылка на сообщение
Поделиться на другие сайты

или вы только "Поговорить" мастер? Вашим клиентам, серьезным и не очень от мала до велика и даже те кого вы многочисленно оскорбляли своим "интеллектом" с удовольствием посмотрят на то тот ли вы за кого себя выдаете.

Изменено пользователем DaVinci
Ссылка на сообщение
Поделиться на другие сайты

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

 

или просто воспользуйтесь моим советом - просто, тихо, проходите мимо

Изменено пользователем DaVinci
Ссылка на сообщение
Поделиться на другие сайты

===================================

 

возьмем сиплу в миниатюре

 

<?php

// ------- data -------

$tables = [
    'pages' => [
        '/' => 'main page',
        'contact' => 'contact page',
        '404' => 'not found page'
    ],
    'logs' => []
];

// ------- api -------

$database = function($table, array $val = null) use (&$tables) {
    if( !$val ) {
        return $tables[$table];
    }
    $tables[$table] = array_merge($tables[$table], $val);
    return $tables;
};

$design = function($data) {
    return 'HEADER - ' . $data . ' - FOOTER';
};

// ------- view -------

$View = function() {
    return [
        'currency' => null,
        'currencies' => null,
        'user' => null,
        'group' => null,
    ];
};

$pageView = function($url = null) use ($View, $database, $design) {
    if( !empty($database('pages')[$url]) ) {
        return $database('pages')[$url];
    }
    return false;
};

$blogView = function($url = null) use ($View, $database, $design) {
    // ...
};

$productsView = function($url = null) use ($View, $database, $design) {
    // ...
};

$contactView = function($url = null) use ($View, $database, $design) {
    // ...
};

$cartView = function($url = null) use ($View, $database, $design) {
    // ...
};

// -------

$views = [
    'page'     => $pageView,
    'blog'     => $blogView,
    'products' => $productsView,
    'contact'  => $contactView,
    'cart'     => $cartView,
];

$indexView = function($request) use ($views, $design) {
    if( ($content = $views['page']($request['page_url'])) !== false ) {
        return $design($content);
    }
    return false;
};

// ------- index -------

session_start();

$request = [
    'page_url' => null,
    'module' => null
];

$time_start = microtime(true);

if(($res = $indexView($request)) !== false)  {
    print $res;
}  else  {
    $request['page_url'] = '404';
    print $indexView($request);
}

print ' - '. (microtime(true) - $time_start);

 

 

попробуем получить ответ json. очевидно что бы мы не выбросили с контроллера ответ оборачивается в $design. о том что бы в контролере установить заголовки реч даже не идет, нет объекта под это для того что бы перехватить его выше. Приходится обрывать дальнейшее исполнение кода. Если сейчас набросать тут логику по работе с заголовками и типом ответа то код существенно усложниться.

 

Нужен инструмент который исправит это положение))

Изменено пользователем DaVinci
Ссылка на сообщение
Поделиться на другие сайты

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

 

Чтобы давать ответ, надо иметь вопрос ТОЧНЫЙ.

 

Вы требуете от меня слишком много, ибо путаетесь уже в постановке вопроса.

Вопрос в #5 Вы поставили так:

В#5. BlogView метод, fetch_blog, вернуть результат в виде JSON.

А теперь Вы хотите

В#22. что бы приложение возвращало результат в виде json

 

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

 

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

 

Если В#5, то у меня на стандартной Simpla простая вставка из #17 приводит к тому, что fetch_blog возвращает значение '[8,5]', что представляет собой строку в формате JSON. Все как и пребовалось в В#5. Что Вам непонятно в таком простом вопросе, для меня загадка...

Изменено пользователем phukortsin
Ссылка на сообщение
Поделиться на другие сайты

теперь добавляем логер

 

<?php

// ------- data -------

$tables = [
    'pages' => [
        '/' => 'main page',
        'contact' => 'contact page',
        '404' => 'not found page'
    ],
    'logs' => []
];

// ------- api -------

$database = function($table, array $val = null) use (&$tables) {
    if( !$val ) {
        return $tables[$table];
    }
    $tables[$table] = array_merge($tables[$table], $val);
    return $tables;
};

$design = function($data) {
    return 'HEADER - ' . $data . ' - FOOTER';
};

// ------- view -------

$View = function() {
    return [
        'currency' => null,
        'currencies' => null,
        'user' => null,
        'group' => null,
    ];
};

$pageView = function($url = null) use ($View, $database, $design) {
    if( !empty($database('pages')[$url]) ) {
        return $database('pages')[$url];
    }
    return false;
};

$blogView = function($url = null) use ($View, $database, $design) {
    // ...
};

$productsView = function($url = null) use ($View, $database, $design) {
    // ...
};

$contactView = function($url = null) use ($View, $database, $design) {
    // ...
};

$cartView = function($url = null) use ($View, $database, $design) {
    // ...
};

// -------

$views = [
    'page'     => $pageView,
    'blog'     => $blogView,
    'products' => $productsView,
    'contact'  => $contactView,
    'cart'     => $cartView,
];

$indexView = function($request) use ($views, $design) {
    if( ($content = $views['page']($request['page_url'])) !== false ) {
        return $design($content);
    }
    return false;
};

// ------- logger -------

$logger = function ($add) use ($database) {
    return $database('logs', [$add]);
};

// ------- index -------

session_start();

$request = [
    'page_url' => null,
    'module' => null
];

$time_start = microtime(true);
$logger('start - ' .$time_start);

if(($res = $indexView($request)) !== false)  {
    print $res;
}  else  {
    $request['page_url'] = '404';
    print $indexView($request);
}

$logger('end - ' .(microtime(true) - $time_start));
print_r($database('logs'));

 

 

и понимаем что оборвать работу в контроллере у нас теперь нет возможности

Изменено пользователем DaVinci
Ссылка на сообщение
Поделиться на другие сайты

По мимо того что мы теперь не можем выбросить клиенту к примеру ответ json можно обратить внимание на

 

$time_start = microtime(true);
$logger('start - ' .$time_start);

if(($res = $indexView($request)) !== false)  {
    print $res;
}  else  {
    $request['page_url'] = '404';
    print $indexView($request);
}

$logger('end - ' .(microtime(true) - $time_start));

 

что тут не так? то что мы обратились к logger сверху а результат записали снизу. Что будет если таких инструментов будет множество? Точка входа обрастет логикой. Плохо...

 

Но что если теперь этот же логер необходимо запустить для проверки времени выполнения ТОЛЬКО контроллера  - идти и вставлять логер в View? А что если он нужен только в конкретных контроллерах, методах, а что если помимо лорега там понадобиться что то еще? Наши View обрастут логикой которая по факту не относиться к сути их предназначения.

 

Что делать? Чаще всего ничего не делают. Закрывают глаза и тупо пишут всю логику по всему приложению, хаотично. Такое приложение только на выброс. Контроллеры становятся очень большими (толстыми) и именно такие проэкты называют "масштабными" - ну просто много кода потому для многих это масштаб   :)

 

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

Изменено пользователем DaVinci
Ссылка на сообщение
Поделиться на другие сайты

Похоже на спор "Почему на базе Митсубиси Лансер плохо делать КАМАЗ". 

 

Эта спортивная машина предназначена для быстрой и комфортной езды. Если нужно ещё быстрее, можно поменять двигатель, прикрутить впрыск нитро и т.п. Если нужно больше груза перевозить, можно пожертвовать красотой и прицепить сзади прицеп. Хоть это и не совсем правильно, но возможно в разумных пределах. Вы же пытаетесь доказать почему из Лансера плохо делать КАМАЗ.  С разумной аргументацией, типа "там маленький диаметр дисков, а если ставить больший, то нужно переделывать место под диски, а если это делать, то нужно менять раму автомобиля и т.п."  Но просто не нужно делать из Лансера КАМАЗ.  

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

Похоже на спор "Почему на базе Митсубиси Лансер плохо делать КАМАЗ".

 

Эта спортивная машина предназначена для быстрой и комфортной езды. Если нужно ещё быстрее, можно поменять двигатель, прикрутить впрыск нитро и т.п. Если нужно больше груза перевозить, можно пожертвовать красотой и прицепить сзади прицеп. Хоть это и не совсем правильно, но возможно в разумных пределах. Вы же пытаетесь доказать почему из Лансера плохо делать КАМАЗ. С разумной аргументацией, типа "там маленький диаметр дисков, а если ставить больший, то нужно переделывать место под диски, а если это делать, то нужно менять раму автомобиля и т.п." Но просто не нужно делать из Лансера КАМАЗ.

Ну если говорить Простым языком то да - Симпла не подходит для крупных проектов. И спора тут нет, все очевидно. Проблема то в том что находятся умельцы которые пытаются это сделать а их заказчики платят за это деньги. Не зная о том что им продают не ланцер а камаз «перекрашенный» Изменено пользователем DaVinci
Ссылка на сообщение
Поделиться на другие сайты

Pudohom, как вы считаете на базе slim Фреймворк (который проще симплы то будет) можно делать и КАМАЗы и лансеры?

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

Ну если говорить на таком примитивном уровне то да - Симпла не подходит для крупных проектов. И спора тут нет, все очевидно

 

Спора тут действительно, одна болтовня. Чтобы спорить, надо сначала с предметом определиться, как минимум что считать крупным проектом и какие требования к нему выдвигаются.

 

А то, что сейчас написано, например, про logger, насколько я понимаю, готовыми средствами Simpla решается довольно легко и просто. И возврат с разными Content-type - совсем не сложно организовать простенькими изменениями в Simpla...

 

DaVinci, если будете спрашивать, как именно, то получите встречный вопрос по постановке задачи со всеми деталями. А поскольку, по опыту наших дискуссий, точно вопрос Вы вряд ли сможете поставить, наверняка потребуются уточнения, которые Вас будут нервировать. Так что считаю нужным посоветовать Вам не затевать бесполезную дискуссию (разве что захотите все тонкости своих требований обяснять, что маловероятно).

 

А вообще ТС любит все усложнять. Вот в теме

http://forum.simplacms.ru/topic/13643-simpla-namespace/?p=106907

он простейший вопрос по Simpla с очевидным простым решением оценил как сложнейшую работу на недели.

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

Спора тут действительно, одна болтовня. Чтобы спорить, надо сначала с предметом определиться, как минимум что считать крупным проектом и какие требования к нему выдвигаются.

 

А то, что сейчас написано, например, про logger, насколько я понимаю, готовыми средствами Simpla решается довольно легко и просто. И возврат с разными Content-type - совсем не сложно организовать простенькими изменениями в Simpla...

 

DaVinci, если будете спрашивать, как именно, то получите встречный вопрос по постановке задачи со всеми деталями. А поскольку, по опыту наших дискуссий, точно вопрос Вы вряд ли сможете поставить, наверняка потребуются уточнения, которые Вас будут нервировать. Так что считаю нужным посоветовать Вам не затевать бесполезную дискуссию (разве что захотите все тонкости своих требований обяснять, что маловероятно).

 

А вообще ТС любит все усложнять. Вот в теме

http://forum.simplacms.ru/topic/13643-simpla-namespace/?p=106907

он простейший вопрос по Simpla с очевидным простым решением оценил как сложнейшую работу на недели.

 

 

пишите свою мысль на php - если что то не сложно сделать просто сделайте и покажите. В вашей болтовне сложно разобрать что вы пытаетесь донести. 

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

пишите свою мысль на php - если что то не сложно сделать просто сделайте и покажите. В вашей болтовне сложно разобрать что вы пытаетесь донести. 

 

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

 

Если Вам сложно разобрать мои сообщения, просто игнорируйте их (или вообще не читайте). Они в основном предназначены не Вам...

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

Корс, быть может вы все же продемонстрируете как вы все упрощаете. Реализуйте, ну хотя бы частично следующую задачу 

 

- нужно получить с блога ответ json с соответствующим заголовком

- ответ должен быть записан в логе - код ответа, время выполнения 

- логируем два метода - BlogView->fetch_post() и BlogView->fetch_blog

- если метод BlogView->fetch_post() ответил с кодом 404 отправляем администратору уведомление

- очень важно - в классах View ничего менять нельзя (ну за исключением тех не сложных правок для кода и типа ответа о которых вы говорили)

 

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



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

 

Если Вам сложно разобрать мои сообщения, просто игнорируйте их (или вообще не читайте). Они в основном предназначены не Вам...

 

я понимаю что не мне, вашим доверчивым заказчикам которые считают вас разработчиком. Вы пишите конечно на русском, хотелось бы аргументацию в виде кода так разговор станет предметным. Умников много, не разберешь со слов умеет ли чего или просто трепаться любит

Изменено пользователем DaVinci
Ссылка на сообщение
Поделиться на другие сайты

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

 

если что то будет не так сделаем рефакторинг, обычное дело... не переживайте...

Изменено пользователем DaVinci
Ссылка на сообщение
Поделиться на другие сайты

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

Изменено пользователем DaVinci
Ссылка на сообщение
Поделиться на другие сайты

... все же не верно я назвал тему обсуждения, надо было 

 

Почему Корс не подходит для крупных проектов

 

тут пока уточнишь все чего надо сделать, как и почему что до кода дело просто не дойдет, потому да, симпла тут вовсе не причем.

Изменено пользователем DaVinci
Ссылка на сообщение
Поделиться на другие сайты

я понимаю что не мне, вашим доверчивым заказчикам которые считают вас разработчиком.

 

Вы правы, именно им.

 

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

 

Здесь в теме я уже давались Вам ответы в #6, #17, #31 в виде кода, Вы среагировать по существу не пожелали.

 

Умников много, не разберешь со слов умеет ли чего или просто трепаться любит

 

Полностью согласен с этой Вашей мыслью.

 

Корс, быть может вы все же продемонстрируете как вы все упрощаете. Реализуйте, ну хотя бы частично следующую задачу

 

Задачи надо решать по одной, а не перескакивать а одного на другое.

Здесь в теме я уже дал в #6, #17, #31 свое решение поставленной Вами в #5 задачи. В ответ получил "Неправильно. А что именно неправильно, не скажу". Это могу расценивать либо как детское упрямство либо как откровенное издевательство.

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

 

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

Вы правы, именно им.

 

 

Здесь в теме я уже давались Вам ответы в #6, #17, #31 в виде кода, Вы среагировать по существу не пожелали.

 

 

Полностью согласен с этой Вашей мыслью.

 

 

Задачи надо решать по одной, а не перескакивать а одного на другое.

Здесь в теме я уже дал в #6, #17, #31 свое решение поставленной Вами в #5 задачи. В ответ получил "Неправильно. А что именно неправильно, не скажу". Это могу расценивать либо как детское упрямство либо как откровенное издевательство.

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

 

 

по поставленной задачи у вас все? Не вооруженным взглядом видно что нет ни строчки php. 

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

- нужно получить с блога ответ json с соответствующим заголовком

- ответ должен быть записан в логе - код ответа, время выполнения 

- логируем два метода - BlogView->fetch_post() и BlogView->fetch_blog

- если метод BlogView->fetch_post() ответил с кодом 404 отправляем администратору уведомление

- очень важно - в классах View ничего менять нельзя (ну за исключением тех не сложных правок для кода и типа ответа о которых вы говорили)

 

если представить возможную реализацию, их может быть множество, можно однозначно сказать - да, для того что бы вернуть клиенту ответ в виде json необходимо сделать незначительные правки для того что бы ответ не оборачивался в design, возможно отдать массив или обьект, назовем его response в котором будет код ответа и содержание ответа. Тут все понятно.

 

Но важно - логика которая обработает данный запрос появится в точке входа, при поставленной задаче это неизбежно, ответ всплывет именно туда. она уже там существует, чего в прицепе быть не должно https://github.com/pikusov/Simpla/blob/9fefafa38dc739b4348b4a2940cba8bc8e4363ed/index.php#L30 мы определяем всего 2 типа true код 200 и false код 404. 

 

Помимо логики обработки запроса там появится еще одна неприятность

 

мы понимает что BlogView->fetch_post() и BlogView->fetch_blog надо обернуть в логер. Тут будет два варианта - логер с условиями или условие которые определяет в какой логер отправить ответ, но для того что бы создать два разных логера нам прийдется поколдовать ведь все объекты которые создает Simpla являются singleton и создать два разных объекта у нас нет возможности, условия вообщем не избежны. Но логика будет написана в точке входа для этих двух методов и это будет не 2 строчки кода. 

 

В последствии, если (когда) появится аналогичная задача то точка входа уже не будет такой простой как говорит Корс.

Изменено пользователем DaVinci
Ссылка на сообщение
Поделиться на другие сайты

Кстати есть еще одна мелочь https://github.com/pikusov/Simpla/blob/9fefafa38dc739b4348b4a2940cba8bc8e4363ed/index.php#L74 для ответов json или xml это лишнее)) надо ставить условие и тут

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

- нужно получить с блога ответ json с соответствующим заголовком

- ответ должен быть записан в логе - код ответа, время выполнения 

- логируем два метода - BlogView->fetch_post() и BlogView->fetch_blog

- если метод BlogView->fetch_post() ответил с кодом 404 отправляем администратору уведомление

- очень важно - в классах View ничего менять нельзя (ну за исключением тех не сложных правок для кода и типа ответа о которых вы говорили)

 

Для большей убедительности добавим еще одно условие

 

Допустим с метода BlogView->fetch_post() мы хотим сделать переадресацию, к примеру адрес поменялся или еще чего то там случилось, без разницы, суть в том что бы переадресовать клиента на новый адрес и при этом что бы логер сработал, логика которого не находиться в данном методе, в нем нет ничего что бы сообщать лагеру что либо...

 

само собой тут многие скажут - ты все усложняешь. пиши все что тебе надо в контроллере и не парься))

Изменено пользователем DaVinci
Ссылка на сообщение
Поделиться на другие сайты

по поставленной задачи у вас все? Не вооруженным взглядом видно что нет ни строчки php. 

 

Это Вы так издеваться продолжаете?

Или в самом деле в упор не видите в #6 и в  #17 PHP-код c решением Вашей задачи ?

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

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

 

- нужно получить с блога ответ json с соответствующим заголовком
- ответ должен быть записан в логе - код ответа, время выполнения 
- логируем два метода - BlogView->fetch_post() и BlogView->fetch_blog
- если метод BlogView->fetch_post() ответил с кодом 404 отправляем администратору уведомление
- с любых контроллеров нужно иметь возможность переадресовать клиента на указанный адрес но логер должен записать результат запроса
- очень важно - в классах View ничего менять нельзя (ну за исключением тех не сложных правок для кода и типа ответа о которых говорил Корс но никто их не видел)

 

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

Изменено пользователем DaVinci
Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...