ФорумПрограммированиеПыхнуть хотите?Готовые решения → DVelum платформа профессиональной web-разработки

DVelum платформа профессиональной web-разработки

  • sam

    Сообщения: 3 Репутация: N Группа: Кто попало

    Spritz 18 января 2013 г. 14:43




    Хотел бы поделиться информацией о необычном решении - DVelum Professional Web-Development Platform.
    Проект пока не имеет аналогов, возможно покажется интересным.

    Мы работаем над платформой профессиональной разработки на PHP + ExtJS
    DVelum представляет из себя необычную смесь CMS, Framework и IDE, призвана упростить и автоматизировать рутинные задачи разработчиков. Содержит полезный, местами уникальный набор функционала, который не оставит равнодушным профессионального разработчика.
    Дополнительный бонус - высочайшая производительность приложений, написанных на платформе.

    Платформа совершенно бесплатна, распространяется под лицензией GNU GPL v3

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

    Ресурсы:
    Официальный сайт: http://dvelum.ru
    Форум ддержки: http://forum.dvelum.net
    Группа FB: https://www.facebook.com/DVelum
    Группа VK: http://vk.com/dvelum
    Twitter: https://twitter.com/dvelum
    Статьи:
    habrahabr: http://habrahabr.ru/post/149853/
    freehabr: http://freehabr.ru/blog/php/3225.html
    и др.

    Скринкаст демонстрирующий возможности системы:
    http://www.youtube.com/watch?v=ykMJOzkD4Bg


  • Josh

    Сообщения: 2008 Репутация: N Группа: Кто попало

    Spritz 18 января 2013 г. 16:02, спустя 1 час 18 минут 36 секунд

    Видео не асилил. Моё мнение - ни о чём. Чем это отличается от скафолдинга Yii? навёртом на Ext-е?
    Возникают вопросы:
    - Нахера это заказчику?
    - Нахера это исполнителю?
    Как по мне, чтобы работать в таком, надо нехило знать всю эту систему, при чём очень хорошо документированную, в код даже смотреть страшно…
  • indeego

    Сообщения: 125 Репутация: N Группа: Кто попало

    Spritz 18 января 2013 г. 16:03, спустя 56 секунд

    Django? - Нет не слышал.
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 18 января 2013 г. 18:11, спустя 2 часа 8 минут 13 секунд

    очередной блядь-пиздец
    Сапожник без сапог
  • proga66

    Сообщения: 15 Репутация: N Группа: Кто попало

    Spritz 18 января 2013 г. 22:40, спустя 4 часа 28 минут 44 секунды

    sam, Знаете почему ваша система отстой, потому что я ее не могу развернуть, так как у нее в требованиях документ_рут, у меня все скрипты могут работать независимо от их расположения. Разве так сложно использовать dirname(__FILE__) или __DIR__?

    Что касаемо кода, заглянул в контроллеры:
    1. Толстые контроллеры;
    2. Много статики, фабрик и повторяющейся шулухи, используйте внедрение зависимостей;
    3. Много шаблонного кода, который можно вытянуть в родительский класс.

    К примеру, метод из контроллера News:

    public function indexAction()
    {

    $page = intval(Request::getInstance()->getPart(1));

    if($page < 1)
    $page = 1;

    $from = ($page-1) * $this->_config->get('num_in_list');

    $model = Model::factory('News');

    $params = array(
    'sort'=>'news_date',
    'dir'=>'DESC',
    'start'=>$from,
    'limit'=>$this->_config->get('num_in_list')
    );

    $filters = array('published'=>true);

    /*
    * Hard cache!
    */
    $data = $model->getList(
    $params,
    $filters,
    array('id','title','news_date'),
    true
    );

    $itemsCount = $model->getCount($filters,false,true);

    $pager = new Pager();
    $pager->curPage = $page;
    $pager->numLinks = 5;
    $pager->pageLinkTpl = Request::url(array($this->_router->findUrl('news') , '[page]'));
    $pager->numPages = ceil($itemsCount / $this->_config->get('num_in_list'));

    $template = new Template();
    $template->list = $data;
    $template->page = $this->_page;
    $template->pager = $pager;
    $template->router = $this->_router;


    $this->_page->text = $template->render($this->_page->getTemplatePath('news_list.php'));
    }

    Зачем в контроллере пагинатор? Зачем в контроллере шаблонизатор? Да, это понятный код, но не поддерживаемый.
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 18 января 2013 г. 23:04, спустя 24 минуты 38 секунд

    as i told, we have a piece of shit here.
    Сапожник без сапог
  • AlexanderC

    Сообщения: 270 Репутация: N Группа: Кто попало

    Spritz 19 января 2013 г. 2:14, спустя 3 часа 9 минут 19 секунд

    psr-1/2/3…. never heard about…
  • sam

    Сообщения: 3 Репутация: N Группа: Кто попало

    Spritz 19 января 2013 г. 10:28, спустя 8 часов 14 минут 2 секунды


    sam, Знаете почему ваша система отстой, потому что я ее не могу развернуть, так как у нее в требованиях документ_рут, у меня все скрипты могут работать независимо от их расположения. Разве так сложно использовать dirname(__FILE__) или __DIR__?

    Что касаемо кода, заглянул в контроллеры:
    1. Толстые контроллеры;
    2. Много статики, фабрик и повторяющейся шулухи, используйте внедрение зависимостей;
    3. Много шаблонного кода, который можно вытянуть в родительский класс.

    ….
    Зачем в контроллере пагинатор? Зачем в контроллере шаблонизатор? Да, это понятный код, но не поддерживаемый.


    Конструктивно, могу ответить по существу.

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

    Статики и фабрики, согласен это legacy лежащий годами, мы постепенно избавляемся от них
    Внедрение зависимостей активно используется, например внедрение через сеттеры в Application::init
    Шаблонный код так же стараемся выносить в базовые сущности.
    пример который вы привели - модуль новостей в демо релизе служит лишь упрощенным примером, дабы помочь пользователю разобраться с системой

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

    Ребята тут пишут ниже про psr да слышали мы про них. Это не больше чем рекомендации.
    Мы использовали Zend_Framework 1.x coding style тогда еще PSR то небыло, а уж видя то как принимаются эти псевдостандарты названные рекомендациями вообще не хочется с этим связываться.
    Несколько человек решили что они лучше знают чем сообщество и черкают свое понимание в гитхабе. Ели бы было всеобщее голосование, да можно было бы относится к этому более серьезно. Посмотрите что такое PSR 3 вы все еще серьезно относитесь к этому?

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

    За не долгий срок существования проекта получили много дельных советов от иностранных пользователей, пожеланий дальше развивать проект.
    От Русских разработчиков 80% возгласов "Что это за хуИта…. скринкаст не досмотрел доки не дочитал ничерта не понял". Такова она наша сущность задумайтесь над этим.





  • sam

    Сообщения: 3 Репутация: N Группа: Кто попало

    Spritz 19 января 2013 г. 10:35, спустя 7 минут 39 секунд

    Всем спасибо за отзывы )
  • artoodetoo

    Сообщения: 5147 Репутация: N Группа: в ухо

    Spritz 19 января 2013 г. 11:37, спустя 1 час 1 минуту 34 секунды

    sam, это просто форум такой специфический. здесь нежным не место :) здесь даже работодателей посылают нах!

    про фреймворк ничего не скажу, т.к. некогда. просто желаю вам удачи!
    ιιlllιlllι унц-унц
  • proga66

    Сообщения: 15 Репутация: N Группа: Кто попало

    Spritz 19 января 2013 г. 13:48, спустя 2 часа 10 минут 49 секунд

    sam, как реализуете возможно запускание вне документ_рут, отпишитесь в эту тему.
  • master

    Сообщения: 3244 Репутация: N Группа: Джедаи

    Spritz 19 февраля 2013 г. 17:24, спустя 31 день 3 часа 36 минут

    Зачем в контроллере пагинатор?

    с этого места можно поподробнее? куда ты предлагаешь вынести пагинатор из контроллера?
    не всё полезно, что в swap полезло
  • proga66

    Сообщения: 15 Репутация: N Группа: Кто попало

    Spritz 23 февраля 2013 г. 23:06, спустя 4 дня 5 часов 41 минуту

    с этого места можно поподробнее? куда ты предлагаешь вынести пагинатор из контроллера?

    В модель логику, в вьюху интерфейс.

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

    public function index(){
    $records = $model->collection();
    return array(
    'records' => $records
    );
    }

    с пагинатором,

    public function index($page){
    $records = $model->collection($page);
    return array(
    'records' => $records
    'paginator' => $model->getPaginator()
    );
    }
  • master

    Сообщения: 3244 Репутация: N Группа: Джедаи

    Spritz 24 февраля 2013 г. 8:17, спустя 9 часов 10 минут 33 секунды

    proga66, ок. а как ты предлагаешь в пагинатор загружать url для ссылок?
    т.е. каждая страница, на которую ссылается пагинатор, - это ссылка, и для этой ссылки нужен url. понятно что page_id прямо передаётся, но есть остальная часть ссылки типа
    /blabla/articles/?author=vasya&page=123
    либо
    /blabla/articles/vasya/123
    как видишь, формат ссылок может быть разным
    захардкодить в модели или шаблоне - бэд практис. в шаблоне ещё куда ни шло, но в модели - точно бэд практис

    ну и вообще говоря, модель ничего не должна знать о пагинаторе. модель должна только доставать данные из хранилища и сохранять обратно. а пагинатор - это отдельная сущность, которая получает
    - current_page,
    - total_pages,
    - url для ссылок (либо шаблон для sprintf, либо вовсе колбэк)
    - шаблон (потому что один и тот же пагинатор может быть совсем по-разному отрисован в html).
    не всё полезно, что в swap полезло
  • proga66

    Сообщения: 15 Репутация: N Группа: Кто попало

    Spritz 24 февраля 2013 г. 12:17, спустя 4 часа 35 секунд

    master,
    О вьюхе:
    1) Ссылки и пагинатор, всегда должны строиться во вьюхе, если ссылки будут строиться в контроллере, то это ахтунг;
    2) Вьюха должна решать, что ей надо, а что ей не надо. Как ей строить ссылки, как подключать шаблоны, все это должна решать сама вьюха, полагаясь на данные которые ей передали.
    3) Название шаблона для пагинатора, можно указать в контроллере, НО только название, а не путь до шаблона или инициализированный кусок шаблонизатора. Ни в коем случае нельзя конкретизировать тип вьюхи, для которой предназначаются эти данные.

    О модели:
    1) Ты просишь у модели список записей, тупо список записей, ты его получаешь;
    2) Ты указал модели, что хочешь получить список записей, но со смещением таким то и в таком то количестве, проще говоря ты указал состояние модели, но в ответ ты получаешь так же тупо список записей, но с маленькой помаркой, модель как то получала этот список записей и от этого у нее появились об сием действии данные, она их кинула в один из своих свойств(атрибутов). Ты опять же получаешь свой список записей, но если тебе нужен пагинатор, то ты тупо эти данные забираешь у модели с помощью контролера, через метод $model->getPaginator(), и отдаешь их вьюхе, а вьюха видя наличие этих данных радостно строит по ним пагинатор. Все хэппи энд.

    Я не понимаю, почему я на столько очевидные вещи доказываю пользователю с ником master.

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