Здрасте!

Очередная суицидальная статья от меня на тему Битрикс, надеюсь в этот раз хабраобщество будет более снисходительно, т.к. здесь все по факту, с кодом, схемками, никакого холивара и все по-честному.

В статье я рассмотрю альтернативу BitrixFramework, которая призвана облегчить жизнь разработчика и как-нибудь повлиять на развитие CMS Битрикс в нужном направлении.

Акция для хейтеров: если напишите комментарий с нормальной критикой и по теме + к карме лично отправлю ;-). Вот вам Вольфыча для затравки, все интересное внутри…



Для начала расставим все точки над ‘i’


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

  1. «У Битрикс миллион строк говнокода» — да, бесспорно. Вся проблема заключается в том, что Битрикс поддерживает обратную совместимость (якобы обновив версию 12.0 до 16.5 все будет нормально работать). Зачем они это делают я не знаю (мне кажется никто не знает). Если же говорить про исходники стандартных компонентов (2К строк кода для вывода элементов инфоблока – в порядке вещей), то здесь ребята решили облегчить работу конечным юзерам и предусмотрели все что можно было предусмотреть (и то не факт), при чем все полностью это очень редко когда нужно. Ну и в догонку, на недавнем семинаре разработчик Битрикс сообщил свое отношение к PSR: «Ну что этот PSR, читал я его, собрались какие-то ребята и написали какую-то фигню» (не точная цитата). Так что код будет пахнуть всегда.
  2. «У Битрикс ужасная структура» — не совсем. Битрикс основан на файлах, и понимание MVC отличается от общепринятого, а для многих «не MVC» = «ужас-ужас какая структура». Так что это весьма спорный и спорный вопрос. И с Битриксовой структурой можно жить.
  3. «BitrixFramework никогда не будет развиваться» — это уже мое мнение и вот почему: с каждым релизом Битрикс дорабатывает только модуль «Магазин», делают какие-то правки, но все они направлены на магазин. На остальное им откровенно наплевать. Развитие BF начнется, когда они откажутся от обратной совместимости и начнут заниматься не только модулем «Магазин».

Знакомьтесь, Juggernaut!


Наверняка многие знакомы с этим персонажем (из Marvel, не из Dota), которого «невозможно остановить». Слегка пафосное название, на самом деле отражает суть данного проекта: абсолютно безразлично как развивается Битрикс, какие новшества он вводит и что он делает, все равно библиотека будет жить и процветать.

Bitrix нацелен на пользователей. Juggernaut нацелен на разработчиков.

Зачем это надо?


Потому что это надо! Все на самом деле очень логично:
  • Битрикс разрабатывают новое ядро (good), но документировать вообще не хотят (bad);
  • Битрикс разрабатывают новый функционал (good), но только для магазина (bad);
  • Битрикс разрабатывают новые компоненты (good), но от их кода кровь из глаз (bad);
  • Битрикс запатентовали «новую» технологию «Композитный сайт» (bad).


Битрикс нужно было с версии 14 просто закончить поддержку старого ядра и сделать основной упор на новом, но нет, «заботятся о клиентах». Бред. Это тоже самое если бы Yii2 поддерживал и обратно совмещал Yii1.

Раз Битрикс никакие подвижки не делает, то их будет делать сообщество (вместо того чтобы ныть, писать в сервис «Идея», и как-то выкручивать используя стандартные компоненты).

Поругали Bitrix, теперь можно приступить и к обзору Juggernaut. Далее начнется обзор составляющих частей библиотеки и краткое описание их использования.

Компоненты


Компоненты – это кирпичи из которых строиться сайт на Битрикс. Компоненты условно разделены на 2 категории: виджеты и роутеры (в нотации Битрикс: «обычный» и «комплексный»).

Виджет


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

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


По порядку:
  • init — инициализирует начальные данные. Преобразует входные параметры ($arParams) в свойства класса;
  • onBefore — проводит проверку возможности проведения действия;
  • isCachedTemplate — флаг, определяющий есть ли кешированная копия. Если есть — выводит данные кеша, если нет — формирует их (в коде это выглядит несколько иначе, на схеме указано так для простоты);
  • initResult — формирует данные для представления ($arResult);
  • run — функция непосредственного исполнения виджета. В ней определяется что необходимо сделать с данными ($arResult);
  • onBeforeRender — проводит проверку возможности вывода шаблона и выполняет какие либо преобразования (аналог result_modifier.php, хотя можно и им пользоваться);
  • render — непосредственный вывод шаблона компонента;
  • onAfter — выполнение действия после отработки виджета (аналог component_epilog.php).


Чаще всего достаточно переопределить метод initResult и накидать шаблон компонента.

Ниже представлен пример класса компонента (class.php), который выводит список элементов инфоблока. На вход он получает массив параметров ($params), которые используются для фильтра и сортировки данных.

Код
<?php
namespace Widget\Iblock\Element\List_;

use Jugger\Db\Orm\Ib\IblockElement;
use Jugger\Component\WidgetComponent;

class Component extends WidgetComponent
{
    /*
     * при выполнения метода 'init', 
     * все переменные из $arParams присваиваются существующим свойствам класса компонента,
     * в данном случае: $this->params = $arParams['params']
     */
    public $params = [];
    /*
     * по умолчанию, кеширование компонентов отключено
     * в данном методе, мы его включаем
     */
    protected function init() {
        parent::init();
        $this->isCachingTemplate = true;
    }
    /*
     * инициализируются элементы для отображения
     */
    protected function initResult() {
        $this->arResult['elements'] = IblockElement::getList($this->params);
    }
}


Роутер


Задача роутера – это сбор виджетов воедино. Роутер — представляет из себя контроллер, который на основе запроса пользователя (REQUEST_URI), вызывает соответствующее действие. Действие может быть либо страницей с информацией (в том числе виджетами), либо содержать какую-либо логику.

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


По порядку:
  • init — инициализирует начальные данные. Преобразует входные параметры ($arParams) в свойства класса;
  • initUrlManager — заполняет UrlManager данные маршрутов (aliases). Это действие необходимо для выполнения маршрутизации по действием и дальнейшей генерацией URL адресов;
  • parseRequest — производится разбор запроса UrlManager и определяется какое действие запрошено пользователем;
  • existBeforeAction — проверка наличия персонального обработчика onBefore. Если есть действие 'index' и есть метод 'onBeforeIndex', то будет вызван именно он, иначе будет вызван общий 'onBefore';
  • onBefore — проводит проверку возможности проведения действия;
  • run — функция непосредственного исполнения компонентв. В ней определяется что необходимо сделать с данными ($arResult);
  • existMethodAction — проверка на наличие обработчика действия. Если запрошено действие 'index' и есть метод 'actionIndex', то будет вызван этот метод, иначе роутер попытается вывести представление с именем 'index';
  • onBeforeRender — проводит проверку возможности вывода шаблона и выполняет какие либо преобразования (в параметрах передается имя действия, поэтому можно настроить персональную проверку);
  • render — непосредственный вывод шаблона компонента;
  • onAfter — выполнение действия после отработки виджета (аналог component_epilog.php). Работает аналогично с методом 'onBefore': если для действия 'index' существует метод 'onAfterIndex', то будет вызван он, иначе общий 'onAfter'.


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

Код
<?php
namespace Widget\Iblock\Element\Catalog;

use Jugger\Db\Orm\Ib\IblockElement;
use Jugger\Db\Orm\Ib\IblockSection;
use Jugger\Component\RouteComponent;

class Component extends RouteComponent
{
    /*
     * ID инфоблока, который отображается
     */
    public $iblockId;
    /*
     * Маршруты действий, в которые будут транслироваться адреса и по которым будер производиться маршрутизация
     * по умолчанию, маршруты беруться из параметров компонента из свойства 'aliases'
     */
    protected function getAliases() {
        return [
            "sectionList" =>    "index.php",
            "elementList" =>    "#SECTION_CODE#/",
            "elementView" =>    "#SECTION_CODE#/#ELEMENT_CODE#/"
        ];
    }
    /*
     * Если инфоблок не указан, то выходим
     */
    protected function onBefore($action) {
        if (!$this->iblockId) {
            throw new \Exception("Не указан 'iblockId' ". get_called_class());
        }
        return parent::onBefore($action);
    }
    /*
     * Получаем раздел по его символьному коду
     */
    protected function getSection($sectionCode) {
        return IblockSection::getRow([
            "filter" => [
                "IBLOCK_ID" => $this->iblockId,
                "CODE" => $sectionCode
            ],
        ]);
    }
    /**
     * Список разделов инфоблока
     */
    public function actionSectionList() {
        $sectionList = IblockSection::getListByField(
            "=IBLOCK_ID",
            $this->iblockId,
            [
                "order" => ["SORT" => "ASC"]
            ]
        );
        $this->arResult['sectionList'] = $sectionList;
        $this->render('list');
    }
    /**
     * Список элементов указанного раздела
     * Параметр $sectionCode содержит данные из URL
     */
    public function actionElementList($sectionCode) {
        $section = $this->getSection($sectionCode);
        if (!$section) {
            $this->error404();
        }
        //
        $this->arResult['section'] = $section;
        $this->arResult['elementList'] = $section->getElements();
        $this->render('section');
    }
    /**
     * Отображение карточки товара
     * Параметры передаются в том же порядке, в каком они указаны в методе 'aliases'
     */
    public function actionElementView($sectionCode, $elementCode) {
        $section = $this->getSection($sectionCode);
        if (!$section) {
            $this->error404();
        }
        //
        $element = IblockElement::getRow([
            "filter" => [
                "IBLOCK_ID" => $this->iblockId,
                "IBLOCK_SECTION_ID" => $section->ID,
                "CODE" => $elementCode,
            ],
        ]);
        if (!$element) {
            $this->error404();
        }
        $this->arResult['element'] = $element;
        $this->arResult['section'] = $section;
        $this->render('view');
    }
}



Автозагрузка классов


По данному вопросу много говорить не буду, потому что и так ясно что это очень нужная вещь, просто опишу все работает.

Как реализовано в Juggernaut:

В папке «lib» вы должны соблюдать следующую структуру: имена файлов классов, идентичны именам пространства имен, не включая расширение и верхнего пространства имен. Например, классу «Iblock\Property\Table» будет соответствовать файл «…/modules/Iblock/lib/Property/Table.php».

Вызывать «includeModule» больше не нужно, т.к. при необходимости все классы подгрузятся автоматически из нужных директорий.
Если директория модуля отличается от названия пространства имен, или в любой другой ситуации, можно вручную задать соответствие пространства имен и директории:

// класс "Jugger\D7\Iblock" доступен по адресу "./lib/D7/Iblock.php" – по умолчанию так и работает 
\Jugger\Psr\Psr4\Autoloader::addNamespace('Jugger', __DIR__.'/lib');

// класс "Jugger\D7\Iblock" доступен по адресу "./classes/Iblock.php"
\Jugger\Psr\Psr4\Autoloader::addNamespace('Jugger\D7', __DIR__.'/classes'); 


У Битрикс тоже реализована автозагрузка, но формирует она путь несколько иначе:

Класс «Olof\Catalog\Tools\File» транслируется как «/Olof.Catalog/lib/Tools/File.php».

Если Вам нужен класс «Olof\Catalog» — то извините, руками указывайте его наличие (см.ниже). Директория модуля у Вас должна быть именно с разделителем «.» иначе гуляйте лесом. При чем директория «olof.catalog.iblock» — является некорректной.

Господа из Битрикс на самом деле сделали нормальную штуку: позаботились об указании вендора в имени модуля, но я считаю это лишнее условие именования директории.

Автозагрузка неявно реагирует на классы вида «ElementTable» удаляя постфикс, транслируя их в файлы «element.php». Собственно, из-за этого, вы не можете создать класс с именем Table.

Также загрузить классы из модулей, которые в данный момент не подключены (includeModule) – нельзя.

Рассмотрим пример работы Битриксового варианта: имеем модуль «olof.iblock» и соответствующий файл include.php:

namespace Olof\Iblock;

use Bitrix\Main\Loader;

// подключаем модуль
Loader::includeModule("Olof.Iblock");

// переопределяем стандартное поведение для класса Api
Loader::registerAutoLoadClasses("Olof.Iblock", [
    "\Olof\Classes\Api" => ". /modules/Olof.Iblock/classes/api.php",
]);

// Примеры доступа к классам:
// Olof\Iblock\Element  -> ./modules/Olof.Iblock/lib/Element.php
// Olof\Classes\Api     -> ./modules/Olof.Iblock/classes/api.php
// Olof\Classes\Help    -> ./modules/Olof.Classes/lib/Help.php


Слишком много неявностей и условий на мой взгляд. Да и никто не знает, какую глупость Битрикс завтра придумают. А придумать им стоит указание директории для префикса пространства имен (как в PSR-4) и тогда будет круто. А пока есть Juggernaut ;-)

ActiveRecord


Для удобства работы с сущностями, а в частности с инфоблоками, реализован шаблон ActiveRecord. На данный момент AR базируется (по факту является надстройкой) на битриксовых DataMapper’ах, в дальнейшем планируется полный перенос на независимый ORM / DAO.

Ниже представлен пример работы с инфоблоками через AR, охвачены практически все, имеющиеся на данный момент, методы.

Код
use Jugger\Db\Orm\Ib\Iblock;
use Jugger\Db\Orm\Ib\IblockSection;
use Jugger\Db\Orm\Ib\IblockElement;

/*
 * Получаем инфоблок
 */
$iblock = Iblock::getByPrimary(1);
$iblock = Iblock::getRowByField("=ID", 1);
$iblock = Iblock::getRow([
    "filter" => [
        "=ID" => 1,
    ],
]);
$iblock = new Iblock($iblock);
/**
 * Доступ к полям таблицы, возможен как к свойствам класса
 */
$iblock->NAME;
$iblock->IBLOCK_TYPE_ID;
/**
 * Дочерние элементы и разделы
 */
$iblock->getElements();
$iblock->getSections();
/*
 * Получить разделы инфоблока
 */
$sectionList = $iblock->getSections();
$sectionList = $iblock->getSections([
    "order" => [
        "NAME" => "ASC",
    ],
]);
$sectionList = IblockSection::getListByField("=IBLOCK_ID", $iblock->ID);
$sectionList = IblockSection::getList([
    "filter" => [
        "=IBLOCK_ID" => $iblock->ID,
    ],
]);
/*
 * Получить дочерние разделы
 */
$section = new IblockSection($sectionList->fetch());
$section->getChilds();  // получить детей 1-ого уровня вложенности
$section->getChilds(2); // получить детей до 2-ого уровня вложенности (вернется массив, в порядке вложенности потомков)
$section->getChilds(0); // получить всех детей
$section->getIblock();  // родительский инфоблок
/*
 * Работа с элементами
 */
$elementList = $section->getElements();
while($element = $elementList->fetch()) {
    /*
     * Массив преобразуется в AR без дополнительного запроса к базе
     */
    $element = new IblockElement($element);
    $element->getProperties(); // свойства элемента
    /*
     * Работа со свойствами
     */
    $elementProperty = $element->getProperty(1);
    /*
     * значение свойства (оба вызова равносильны)
     */
    $value = $elementProperty->VALUE;
    $value = $elementProperty->getValue();
    /*
     * при получении значения любым из способов выше,
     * значение автоматически приводится к типу свойства одним из методов ниже
     */
    $elementProperty->getValueRaw();  // значение без преобразования
    $elementProperty->getValueEnum(); // IblockPropertyEnum - значение элемента списка (L)
    $elementProperty->getValueFile(); // CFile::GetFileArray
    $elementProperty->getValueHtml(); // (string) HTML код
    $elementProperty->getValueElement(); // IblockElement - связный элемент (E)
    $elementProperty->getValueSection(); // IblockSection - связный раздел (G)
    $elementProperty->getValueNumber();  // (float) или (int) в зависимости от значения
    /*
     * Получить объект свойства
     */
    $property = $elementProperty->getMeta();
    $property->NAME;
    $property->HINT;
}



Методы: getPrimary, getRow, getRowByField, getList, getListByField — идентичны для всех ActiveRecord.

Функционал AR на данный момент достаточно беден (например, нет перекрестного поиска по таблицам), но т. к. они являются оберткой над стандартными функциями, в методах «getList» и «getRow» можно использовать Битриксовые плюшки. После создания / заимствования нормального DAO, этот момент будет допилен.

Hermitage


Сильной стороной Битрикс, и я думаю многие согласятся, является его пользовательский интерфейс a.k.a. «Эрмитаж». Он очень удобен и гибок.

Ниже представлен пример работы с Эрмитажем:

Код
use Jugger\Db\Orm\Ib\IblockSection;
use Jugger\Db\Orm\Ib\IblockElement;
use Jugger\Ui\Hermitage;
use Jugger\Ui\Hermitage\Icon;
use Jugger\Context\UrlManager\Iblock;

/* @var $this CBitrixComponentTemplate */
/* @var $component CBitrixComponent */

/*
 * Добавление кнопок "редактировать" и "удалить" для элементов и разделов
 */
$element = IblockSection::getByPrimary(1);
Hermitage::addButtonEditIblockElement($this, $element);
Hermitage::addButtonDeleteIblockElement($this, $element);

$section = IblockSection::getByPrimary(1);
Hermitage::addButtonEditIblockSection($this, $section);
Hermitage::addButtonDeleteIblockSection($this, $section);
/*
 * Добавление кнопок в тулбар компонента
 */
Hermitage::addButton(
    $component,
    Iblock::getElementCreateUrl(1),
    "Добавить элемент",
    [
        "ICON" => Icon::TOOLBAR_CREATE,
    ]
);
/*
 * Добавление кнопок в верхнюю панель
 */
Hermitage::addPanelButton("#", "Надпись", [
    "ICON" => Icon::PANEL_TRANSLATE,
]);



Так похвалил и так мало написал)) На самом деле этого достаточно для взаимодействия с пользователем. Очень много нужно реализовать касаемо административного интерфейса, но это уже не Эрмитаж, и это все в планах.

Безопасность


В Битрикс на сколько я знаю (а в данном вопросе, скрывать не буду, я особо не ковырялся), с безопасностью сайта (именно в коде) вообще грустно (только защита от SI). В будущем данный раздел будет содержать в себе инструменты для защиты от различных атак и вредоносных действий (XSS, генерация случайных данных, различные крипто-функции, валидация форм, работа с паролями, …). На данный момент реализован только инструментарий для защиты от CSRF:

use Jugger\Security\Csrf;

/*
 * "автоматический" режим
 */
if (Csrf::validateTokenByPost()) {
    // ok
}
else {
    // error
}
echo Csrf::printInput();

/*
 * "ручной" режим
 */
$nameField = "csrf";
$token = Bitrix\Main\Context::getCurrent()->getRequest()->getPost($nameField);

if (Csrf::validateToken($token)) {
    // ok
}
else {
    // error
}

$token = Csrf::createToken();
echo "<input type='hidden' name='{$nameField}' value='{$token}'>";


После каждой проверки (удачно или неудачной) – токен из сессии удаляется, таким образом проверить токен можно только один раз.

UrlManager


Маршрутизация в Битрикс, не сказал бы что на высоте, поэтому и эта область затронута в Juggernaut. Данный класс позволяет динамически создавать и использовать URL маршруты (используется в компонентах-роутерах).

Рассмотрим пример парсинга и генерирования URL:

Код
use Jugger\Context\UrlManager;

/*
 * Установка базового URL и маршрутов
 */
UrlManager::setBaseUrl("/catalog");
UrlManager::addAlias("sectionList", "index.php");
UrlManager::addAlias("elementList", "#SECTION_CODE#/");
UrlManager::addAlias("elementView", "#SECTION_CODE#/#ELEMENT_CODE#/");
/*
 * Получаем запрашиваемый 'alias' на основе запроса
 * Например, для запроса '/catalog/section1/element1/' будет получен маршрут 'elementView'
 */
$alias = UrlManager::parseRequest();
/*
 * Аналог используя старые фукнции (хотя по сути UrlManager тоже их использует, просто это сокрыто в недрах)
 */
$folder404 = "/catalog";
$arUrlTemplates = [
    "sectionList" => "index.php",
    "elementList" => "#SECTION_CODE#/",
    "elementView" => "#SECTION_CODE#/#ELEMENT_CODE#/",
];
$arVariables = []; // UrlManager::$params
CComponentEngine::parseComponentPath($folder404, $arUrlTemplates, $arVariables);
/*
 * Добавляем параметры маршрутов в систему
 */
UrlManager::addParams([
    "param1" => "value1",
    "param2" => "value2",
]);
/*
 * Получаем сгенерированый URL.
 * Параметры указанные в данном методе будут использоваться локально.
 * После выполнения метода параметр "ELEMENT_CODE" - не будет доступен
 */
UrlManager::addParam("SECTION_CODE", "section1");
$url = UrlManager::build("elementView", [
    "ELEMENT_CODE" => "element1",
]);
// $url: /catalog/section1/element1/



В дальнейшем планируется также подвязаться и к urlRewrite.php.

События


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

use Jugger\Helper\Event;

/*
 * добавление обработчика
 */
Event::on("имя события", function(){
    // обработчик
});
Event::on("имя события", "\ClassName::MethodName", "moduleName");
/*
 * удаление обработчиков
 */
Event::off("имя события");
Event::off("имя события", 3); // удалить 4-ий по счету (с нуля) обработчик
/*
 * Вызов события
 */
Event::trigger("имя события");
/*
 * Вызов события с указанием сендера (вызывателя)
 */
Event::trigger("имя события", $this);


Что дальше?


Планы на ближайшее будущее:
  • нормальный QueryBuilder
  • нормальное кеширование
  • нормальный AssetsManager
  • набор компонентов для создания и работы с административным интерфейсом
  • нормальная маршрутизация (завязанная на HttpException)


Заключение


Много чего задумано, много чего не сделано. Библиотека развивается по мере моей необходимости, поэтому очень зависит от текущих заказов (которое очень часто однотипны) и свободного времени.

Как я уже сказал вначале, проект будет развиваться несмотря ни на что, от количества ее авторов и заинтересованных лиц зависит лишь скорость развития. Так что выбор только за вами:
  • ныть, ждать и подстраиваться под Bitrix (а развитие BitrixFramework явно не в приоритете);
  • взять все в свои руки и помочь в развитии Juggernaut.

Помочь может каждый желающий филантроп (а иначе никак), для этого нужно:
  • поделиться идеей
  • рефакторить то что есть
  • сделать что-нибудь своими ручками

Проект лежит на GitHub, так что править, добавлять, комментировать и спрашивать может любой желающий.

Спасибо за внимание! Конструктивная критика очень даже приветствуется :-)

P.S. комментарии типа «да на фиг Битрикс» огромная просьба не писать. Я в курсе какое у людей отношение к этой системе, и данный проект как раз направлен на ее облагораживание. Поэтому если вы считаете что «лучше и проще сделать проект на любом фреймворке» — то я это знаю и очень рад за вас, поэтому оставьте свое мнение при себе. Спасибо!

Репозиторий: github.com/irpsv/juggernaut.bitrix_release
Маркетплейс: скоро будет
Поделиться с друзьями
-->

Комментарии (85)


  1. gpaw
    22.06.2016 12:41

    ох. спасибо за статью — из неё узнал о патенте Битрикса. раскопал описание, ужаснулся. www.findpatent.ru/patent/257/2571577.html
    я правильно понимаю — шаблонизатор отделяет статику от динамики, дальше — вусмерть прокешированная статика отдалась клиенту, а затем идёт лейзилоад-подтягивание динамически сгенерированных блоков?


    1. rpsv
      22.06.2016 12:43

      Спасибо за ссылку на патент)))
      Примерно так, никто наверняка не знает как эта магия работает…
      Мне кажется они больше убили время на составление патента, чем на создание этого велосипеда.


      1. gpaw
        22.06.2016 12:48
        +2

        пожалуйста, самому было интересно найти и ужаснуться.

        по сути, они ведь запатентовали велосипед. данная практика выглядит совершенно пугающе.


    1. aktuba
      22.06.2016 13:27

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


      1. gpaw
        22.06.2016 13:38

        вот насколько я понял — да. вытащу небольшую «простыню» оттуда, дабы не искать по всему тексту.

        кусок текста под ярким названием ''раскрытие изобретения''
        — при первом обращении оборудования пользователя к веб-странице, размещенной на веб-сервере:

        — выполнение веб-сервером программного кода веб-страницы, в том числе имеющихся на ней динамических частей, с формированием html-кода веб-страницы, включающего html-код статической части и html-код динамических частей;

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

        — обнаружение веб-сервером в html-коде веб-страницы, полученном на этапе формирования html-кода, кода, относящегося к динамическим частям;

        — замена веб-сервером в html-коде веб-страницы указанного кода, относящегося к динамическим частям, на JS-скрипт, содержащий предписание на получение актуального кода этих динамических частей с веб-сервера, с формированием композитного кода и сохранение этого композитного кода в запоминающем устройстве;

        — при втором и последующих обращениях оборудования пользователя к веб-странице:

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

        — прием веб-сервером от браузера запроса на актуальные данные для динамических частей, направляемого браузером путем следования предписанию, содержащемуся в JS-скрипте композитного кода;

        — выполнение веб-сервером программного кода динамических частей с получением актуального html-кода, соответствующего этим частям;

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


  1. gangstarcj
    22.06.2016 13:45
    -3

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


    1. rpsv
      22.06.2016 13:52

      То что нормально реализовано — не будет переписываться.
      Не берут на работу в Битрикс, так выкручиваюсь ;-)
      Нет, не боимся что поддерживать станет трудно, идея как раз таки в том, чтобы минимально использовать Битрикс. А с учетом их мании обратной совместимости, сомневаюсь что возникнет такая проблема


  1. Evgeny42
    22.06.2016 14:16
    -2

    А у вас вообще есть опыт работы с современными фреймворками? Symfony, Yii, Laravel, Phalcon и т.д.? Что-то на них реализовали?


    1. rpsv
      22.06.2016 14:26
      -1

      И в чем суть вопроса? Умею ли я программировать? На GitHub смотрите…


      1. Evgeny42
        22.06.2016 14:31
        +1

        Просто интересно узнать пользовались ли вы нормальными инструментами.

        Ссылку то на гитхаб можно? Нашел :)


  1. Crank
    22.06.2016 14:23

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


    1. rpsv
      22.06.2016 14:26
      -1

      Нет, не совсем. Оберткой для D7 является только Event, некоторые хелперы и ActiveRecord (ни фиговой такой оберткой), которая в дальнейшем будет переписана.


  1. Delphinum
    22.06.2016 15:48

    Сильной стороной Битрикс, и я думаю многие согласятся, является его пользовательский интерфейс a.k.a. «Эрмитаж».

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


    1. rpsv
      22.06.2016 15:55
      -1

      Я имел ввиду не в плане структуры и коддинга, а в плане юзабилити.


      1. Delphinum
        22.06.2016 15:59

        А разве юзер от сборки экрана через View Builder получает какие то особые плюшки? Помоему это решение уровня разработчика, а не пользователя.


  1. Delphinum
    22.06.2016 15:58
    +1

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

    Если первое, то почему просто не рефакторить сам BitrixFramework? Это невозможно?
    Если второе, то почему не используется имеющийся, популярный и проверенный фреймворк и, самое главное, какой в этом смысл? Bitrix используется не из за его разработчико-ориентированности, а благодаря маркетингу. Бороться с этим не реально.


    1. rpsv
      22.06.2016 16:58
      -1

      Это первое, но не совсем. Juggernaut — это аналог BitrixFramework. Рефакторить BF нет смысла, потому что в некоторых моментах у него проблемы с архитектурой, а не кодом. И по факту Juggernaut содержит нужную архитектуру и нужный код.


      1. Delphinum
        22.06.2016 17:03
        +1

        Ну так рефакторинг это есть, в том числе, изменение архитектуры.

        В общем я вас понял, спасибо.


  1. Delphinum
    22.06.2016 16:05

    А у Bitrix их реализация ActiveRecord (которая на деле RowGateway с натяжкой) так и называется — ORM?


    1. MetaDone
      22.06.2016 16:15

      если загуглить «d7 orm» то выдаст ссылочку.
      Там написано что да, это «ORM»


      1. Delphinum
        22.06.2016 16:18

        Ну чтоб загуглить такое нужно знавать про D7, а я маленько далек от этого.
        Ну в общем то да, похоже на DM. Благодарю за ссылку.


  1. kotomyava
    22.06.2016 23:43
    -1

    В статье, в секции «Зачем это надо?» не описано самое главное — а зачем вам битрикс-то в принципе. Это не предложение от него избавится — это просто попытка понять.

    Если вы чувствуете, что в состоянии сделать собственный фреймворк, соответственно, наверняка и воспользоваться чем-то хорошим готовым, то зачем вам какая-то связь/совместимость/etc с битриксом? Каков кейс использования вашего фреймворка вами, или кем-либо ещё?


    1. Delphinum
      23.06.2016 00:28
      +2

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


      1. CodeKeeper
        23.06.2016 12:47

        Достаточно просто не работать с такими заказчиками, которые за разработчиков решают на чем строить систему. Например можно начать работать не на СНГ, где про битрикс вообще не знают и работают с нормальными продуктами.


        1. maxpsyhos
          23.06.2016 13:05
          +1

          И будут требовать Drupal.


          1. CodeKeeper
            23.06.2016 13:11

            Да бред это все. За 8 лет работы было три клиента у которых были жесткие условия, делать на Symfony или Zend, и то это были люди которые сами работают в IT сфере. Остальные или уже было готово или оставляли выбор за разработчиком.


        1. Delphinum
          23.06.2016 15:15
          +1

          Конечно, у нас в IT же одни профессионалы да гуру, способные ставить условия заказчику. Как там дела у пони? Приветы передавайте.


          1. CodeKeeper
            23.06.2016 15:20

            Не знаю как у Вас в IT, а у нас — заказчику интересен результат. Да и о битриксе за пределами СНГ и не слышали. Благо хватает нормальных платформ и технологий.

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


            1. Delphinum
              23.06.2016 15:25

              Не знаю как у Вас в IT, а у нас — заказчику интересен результат

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

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


              1. CodeKeeper
                23.06.2016 15:54

                Я говорил про исполнителей в сфере IT, а не про заказчиков. Внимательнее будьте, пожалуйста.

                А я про нормальных заказчиков.

                А где народу работать предложите? Может у Вас найдется место для тысяч начинающих разработчиков?

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


                1. Delphinum
                  23.06.2016 15:58

                  А я про нормальных заказчиков.

                  Отвечаете мне переводя тему ( Не надо так.
                  Ну, а для тех кто не хочет этого делать, приходится работать с битриксом(и другими не очень приятными технологиями) и с не совсем адекватными заказчиками

                  И таких крайне много. Потому снимайте ваши очки, обнимите пони на прощание и возвращайтесь в наш, не идеальный мир. Да и еще переставайте предлагать глупости вроде — достаточно просто не работать с такими заказчиками. В нашем, не идеальном мире, все не так устроено.


                  1. CodeKeeper
                    23.06.2016 16:08

                    Уважаемый о чем спор? Я привел достаточно аргументов в пользу того что работая на запад и не работая на СНГ, можно спокойно уйти от работы с битриксом, джумлой и прочей ересью. вы же мне пока не привели ни одного доказательства почему это не так. Вот например, кто мешает выучить Magento и спокойно идти брать по $5/h — $8/h как для начинающего, потому что специалистов по Magento реально мало? Или кто мешает найти фирму работающую на запад и пишущих решения на Symfony/Zend/Laravel/Yii/Phalcon/etc?

                    Жду конкретики, а не отписок в стиле

                    снимайте ваши очки, обнимите пони


                    1. Delphinum
                      23.06.2016 16:32

                      Уважаемый о чем спор?

                      О реалиях рынка.
                      Я привел достаточно аргументов в пользу того что работая на запад и не работая на СНГ, можно спокойно уйти от работы с битриксом, джумлой и прочей ересью

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

                      Реальный мир мешает. Вы можете уйти с вашей текущей работы, на которую вас с трудом взяли, ибо вы без опыта или в вашей деревне работы в сфере IT не так уж и много, и начать изучение Magento/Symfony/Zend/etc, а через год тупо не устроится по этому направлению. Что после предложите делать?

                      Достаточно конкретно? )


                      1. CodeKeeper
                        23.06.2016 16:43

                        О реалиях рынка.

                        Я пока ни одной конкретной реалии не увидел от Вас

                        Ни один из приведенных вами аргументов не переживет столкновение с реальным миром.

                        Аргументы? Примеры?

                        Много вы знаете новичков, которые работают на запад?

                        24 за этот год. Трое на upwork, 1 на Magento, остальные в компаниях на Symfony и Zend. Опять же, берем статистику любой компании которая работает на запад и смотрим статистику по набору персонала.

                        Вы можете уйти с вашей текущей работы, на которую вас с трудом взяли, ибо вы без опыта или в вашей деревне работы в сфере IT не так уж и много, и начать изучение Magento/Symfony/Zend/etc, а через год тупо не устроится по этому направлению.

                        Хорошо, погорим о конкретном примере. Никто не мешает изучать вышеперечисленные технологии работая на текущей работе, а изучив их можно спокойно идти на западный фриланс(при условии, что человек не смог устроится в фирму). А еще можно получить сертификаты по данным технологиям и тогда вообще с руками оторвут. И изучив то, что перечислено выше и при этом «не устроится по этому направлению», звучит очень фантастически. Было бы желания.

                        Достаточно конкретно? )


                        Высосано из пальца и разбавлено фантазией.


                        1. Delphinum
                          23.06.2016 16:56

                          Я пока ни одной конкретной реалии не увидел от Вас

                          Так не от меня надо видеть, от рынка.
                          Аргументы? Примеры?

                          Дальше все будет )
                          24 за этот год

                          Давайте без цифр, ок? ) Я знаю 100500 новичков, которые не работают. Тему можно крыть? Думаю нельзя )
                          Никто не мешает изучать вышеперечисленные технологии работая на текущей работе, а изучив их можно спокойно идти на западный фриланс

                          Совершенно так, но такими темпами джуниор начнет превращаться в не джуниора, а как он уйдет, его место займет другой джуниор.
                          И изучив то, что перечислено выше и при этом «не устроится по этому направлению», звучит очень фантастически. Было бы желания

                          Вот вам абстрактный пример: я живу в деревне и прекрасно изучил ZF2, но в деревне такого не требуется, потому я еду в Москву в поисках новой жизни, но там меня на работу не берут, ибо нет опыта, или берут на 20к, которые мне придется отдавать на съем клоповника в Нерезиновой. Через месяц все мои сбережения (коих в деревне у меня накопилось не так уж и много) заканчиваются, и дабы не помереть с голоду, пока я ищу работу, я устраиваюсь официантом/уборщиком/водителем/охраником/грузчиков, свободного времени все меньше, изучать все самые современные, модные, молодежные направления становится все сложнее, отсутствие работы по IT постепенно переводит меня из ранга практика, в ранг теоретика.

                          Судя по вашим ответам, вы никогда с подобной ситуацией не сталкивались, либо в вас еще бурлит максимализм и «море по колено». Это так?


                          1. CodeKeeper
                            23.06.2016 17:18

                            Так не от меня надо видеть, от рынка.

                            Пруф?

                            Дальше все будет

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

                            Давайте без цифр, ок? ) Я знаю 100500 новичков, которые не работают. Тему можно крыть? Думаю нельзя )

                            Нет почему же, давайте с цифрами. Больше конкретики.

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


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

                            Вот вам абстрактный пример: я живу в деревне и прекрасно изучил ZF2, но в деревне такого не требуется, потому я еду в Москву в поисках новой жизни, но там меня на работу не берут, ибо нет опыта, или берут на 20к, которые мне придется отдавать на съем клоповника в Нерезиновой. Через месяц все мои сбережения (коих в деревне у меня накопилось не так уж и много) заканчиваются, и дабы не помереть с голоду, пока я ищу работу, я устраиваюсь официантом/уборщиком/водителем/охраником/грузчиков, свободного времени все меньше, изучать все самые современные, модные, молодежные направления становится все сложнее, отсутствие работы по IT постепенно переводит меня из ранга практика, в ранг теоретика.


                            Ок. Я привел решение проблемы. Раз был изучен ZF2 то значит и имеется интернет. Для набора портфолио работа делается на западном фрилансе и параллельно можно отправлять резюме в интересующую компанию и проходить собеседование удалено. И если уже и придется куда-то ехать, то уже на конкретную должность(а не в пустоту, на авось) и иногда крупные компании предоставляют жилье. Вот я опять привел один из способов решения проблемы.

                            Судя по вашим ответам, вы никогда с подобной ситуацией не сталкивались, либо в вас еще бурлит максимализм и «море по колено». Это так?


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


                            1. Delphinum
                              23.06.2016 17:30

                              Нет почему же, давайте с цифрами. Больше конкретики

                              Аа, тобишь вас такая конкретика интересует )) Ок, давайте.
                              Пруф?

                              Есть у меня 92 друга, которые очень хорошо учились, изучали новые технологии в IT, фреймворки, языки, не могут сейчас найти работу по специальности. Что не так с нашим идеальным миром?
                              И даже на то что я отвечу ниже, никак не тянет на полноценный пример, а лишь рассказывает субъективное мнение.

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

                              Эти слова не имеют отношения к нашему диалогу, я не буду на них никак отвечать.
                              Для набора портфолио работа делается на западном фрилансе и параллельно можно отправлять резюме в интересующую компанию и проходить собеседование удалено

                              Нельзя, нет опыта работы, не берут.
                              то уже на конкретную должность

                              Я приехал в пустоту «на авось» и нашел работу в питере, а удаленно найти не мог, ибо был далеко.
                              Вот я опять привел один из способов решения проблемы

                              Который не работает, ибо у меня есть 94 друга…
                              Просто я не ною

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

                              Еще вам два примера:
                              1. Есть фрилансеры, которые активно демпингуют цены на IT рынке, что не дает утонуть таким решениям, как битрикс. У этих фрилансеров есть заказчики, которые (возможно), были введены в заблуждение этими фрилансерами и теперь должны (некоторое время) жить с неудачным IT решением. Заказчики хорошие, но вот так получилось. Что вы предлагаете, топить таких заказчиков?
                              2. Я работаю с замечательным начальством и прекрасными клиентами, но не так давно нам пришлось переносить данные одного из наших клиентов с битрикса в нашу систему (клиент открыл глаза на архитектуру битрикса). Пришлось повозиться в помоях. Вы бы в этом случае отказали начальству и клиенту?


                              1. CodeKeeper
                                23.06.2016 17:47
                                -1

                                Есть у меня 92 друга, которые очень хорошо учились, изучали новые технологии в IT, фреймворки, языки, не могут сейчас найти работу по специальности. Что не так с нашим идеальным миром?


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

                                Эти слова не имеют отношения к нашему диалогу, я не буду на них никак отвечать.


                                Эти слова имеют прямое отношение к диалогу, хоть и отвечать на них не нужно.

                                Нельзя, нет опыта работы, не берут.


                                А фриланс уже не считается за опыт?

                                а удаленно найти не мог, ибо был далеко.далеко.

                                Это вообще как связанно? Я боюсь у нас разные понимания «поиска работы удаленно»

                                Который не работает, ибо у меня есть 94 друга…

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

                                Дело не в нытье.

                                Только в нем

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

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

                                1. Есть фрилансеры, которые активно демпингуют цены на IT рынке, что не дает утонуть таким решениям, как битрикс. У этих фрилансеров есть заказчики, которые (возможно), были введены в заблуждение этими фрилансерами и теперь должны (некоторое время) жить с неудачным IT решением. Заказчики хорошие, но вот так получилось. Что вы предлагаете, топить таких заказчиков?

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

                                2. Я работаю с замечательным начальством и прекрасными клиентами, но не так давно нам пришлось переносить данные одного из наших клиентов с битрикса в нашу систему (клиент открыл глаза на архитектуру битрикса). Пришлось повозиться в помоях. Вы бы в этом случае отказали начальству и клиенту?

                                «Перенести данные» и «разрабатывать на битриксе» немного разные понятие. Если только перенести данные, то нет, не отказал бы. Если бы сказали работать с битриксом — отказал бы.


                                1. Delphinum
                                  23.06.2016 17:59

                                  Значит не тому учились или не там искали

                                  Или значит что мир не такой идеальный как вы о нем думаете )
                                  А фриланс уже не считается за опыт?

                                  Фриланс бывает 2х видов:
                                  1. Нужно написать CMS за 200 рублей.
                                  2. Настоящие проекты.
                                  Первый не считается за опыт, второй требует опыта.
                                  Это вообще как связанно? Я боюсь у нас разные понимания «поиска работы удаленно»

                                  Связано на прямую. Вы же предлагаете сначала найти работу, а уже потом переезжать в другой город, дабы не получилось «на авось». Но не берут на работу в другом городе, ибо на то есть некоторые причины, в том числе многие работодатели не хотят нанимать удаленно джуниоров. Привет неидеальный мир )
                                  Только в нем

                                  Когда начнем кидаться какашками? ))
                                  Все зависит только от человека

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

                                  Да, у вас нет опыта в поиске работы, сейчас я в этом убедился ))
                                  «Перенести данные» и «разрабатывать на битриксе» немного разные понятие. Если только перенести данные, то нет, не отказал бы. Если бы сказали работать с битриксом — отказал бы

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


                                  1. CodeKeeper
                                    23.06.2016 18:11

                                    Или значит что мир не такой идеальный как вы о нем думаете )

                                    Я не считаю мир идеальным. так то это Ваши домыслы.

                                    1. Нужно написать CMS за 200 рублей.
                                    2. Настоящие проекты.
                                    Первый не считается за опыт, второй требует опыта.

                                    Кэп? Т.е. считается за опыт работы. еще и портфолио будет.

                                    Связано на прямую. Вы же предлагаете сначала найти работу, а уже потом переезжать в другой город, дабы не получилось «на авось». Но не берут на работу в другом городе, ибо на то есть некоторые причины, в том числе многие работодатели не хотят нанимать удаленно джуниоров. Привет неидеальный мир )


                                    Ок, чисто по придирке к словам. Т.е. есть часть которая готова собеседовать удаленно и в случае успеха приглашать на работу. При чем такой поиск работы работает для всех, кто хочет найти работу в другом городе, но не хочет ехать наобум.

                                    Я все больше и больше сомневаюсь, что у вас есть хоть какой то опыт в поиске работы. Ответьте честно, будучи джуниором вы в течении первой недели нашли работу и работали на ней года 2-3?

                                    Мы теперь за меня погорим. Ок хорошо говорим за меня. Нашел работу на второй неделе поисков, взяли в небольшую компанию которая работала с европой. Проработал там 1,5 года и переменили в другу. Еще вопросы?

                                    Да, у вас нет опыта в поиске работы, сейчас я в этом убедился ))

                                    На основании своих домыслов? Или на основании расхождения мнений? Или в «Вашем мире» отказаться от геморойного заказчика и сэкономить кучу нервов и денег — из ряда вон выходящего?

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

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


                                    1. Delphinum
                                      23.06.2016 18:19
                                      +1

                                      Я не считаю мир идеальным

                                      Ну к счастью хоть мир для вас перестал быть идеальным.
                                      Кэп? Т.е. считается за опыт работы. еще и портфолио будет

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

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

                                      Ясень ваш опыт поиска работы ) Ну собственно я и не сомневался.
                                      На основании своих домыслов?

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

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

                                      И это у меня домыслы? )) Вот вам база, сколько вам понадобится времени? )


                                      1. CodeKeeper
                                        23.06.2016 18:32

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

                                        Я даже не представляю как объяснить человеку, который не понимает, что любая работа на фрилансе(в рамках специализации), является опытом. А так же, на фрилансе есть тестирование, которое позволяет заказчику понять на каком уровне исполнитель знает ту или иную технологию, а еще есть сертификация, которая тоже позволяет брать работу которая «требует опыта».

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

                                        Еще раз обращаю внимание на Ваши же слова, что «Не для всех» и все же есть те кто так делает. А так же схема Фриланс — параллельно поиск работы — работает.

                                        Ясень ваш опыт поиска работы ) Ну собственно я и не сомневался. Да нет, вы сами это сказали в своем ответе чуть повыше.

                                        Это уже смахивает на троллинг.

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

                                        «Я не могу — никто не может» — смело заявления, н оя бы на Вашем месте не рисковал говорить так за всех джуниоров. А еще есть те кто себя ценит, и те кто позволяет собой помыкать и это уже относиться ко всем сферам деятельности.

                                        И это у меня домыслы? )) Вот вам база, сколько вам понадобится времени? )

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


                                        1. Delphinum
                                          23.06.2016 18:41

                                          любая работа на фрилансе(в рамках специализации), является опытом

                                          Вы возьмете на работу человека, который 4 года фрилансил CMSки за 500 рублей?
                                          на фрилансе есть тестирование… еще есть сертификация

                                          Помнится закончил ВУЗ, прошел тестирование на фрилансе, получил сертификат и пошел для европы программы писать. Эхх, были времена ))
                                          все же есть те кто так делает

                                          Так я не спорю.
                                          Это уже смахивает на троллинг

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

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

                                          У вас только вот это и доступ к API, вы бы отказались от такого заказа? Он слишком сложен для вас?
                                          И заодно можно сразу огласить конкретную задачу

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

                                          Базу перенести нужно.


                                          1. CodeKeeper
                                            23.06.2016 18:48

                                            Вы возьмете на работу человека, который 4 года фрилансил CMSки за 500 рублей?

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

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

                                            Сарказм это хорошо, но никак не опровергает того что я написал.

                                            Ура, мы сошлись на том, что есть джуниоры, которые не могут так смело себя вести )

                                            А я и не помню, что я где-то это отрицал.

                                            У вас только вот это и доступ к API, вы бы отказались от такого заказа? Он слишком сложен для вас? Я уже огласил, нужно перенести базу.Базу перенести нужно.


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


                                            1. Delphinum
                                              23.06.2016 18:58

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

                                              Вы занимались наймом сотрудников?
                                              Сарказм это хорошо, но никак не опровергает того что я написал

                                              Ну в вашем мире конечно не опровергает.
                                              А я и не помню, что я где-то это отрицал

                                              Ну так вы предлагаете всем ставить условия заказчикам.
                                              Базу чего?

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

                                              Заказчик проверит и скажет, все ли корректно.
                                              Куда конкретно нужно перенести?

                                              В другую CRM.
                                              В каком виде?

                                              В смысле? В нормальном виде, чтоб ничего не потерялось по дороге.


                                              1. CodeKeeper
                                                23.06.2016 19:18

                                                Вы занимались наймом сотрудников?

                                                В найме сотрудников обычно участвует не один человек.

                                                Ну в вашем мире конечно не опровергает.

                                                Опять троллинг?

                                                Ну так вы предлагаете всем ставить условия заказчикам.

                                                Опять домыслы. Я предлагаю не работать с геморойными заказчиками.

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


                                                Постановка задачи не точная, размытая и не полная. Чтобы дать корректную оценку мне нужно понимать с каким объемом данных нужно работать, какие кейсы нужно покрыть, в каком виде будет осуществляться перенос(в файл с видом и потом импорт в другую систему, используя API другой системы или например напрямую в базу) и с какой системой предстоит работать(что за другая СRM). поскольку постановка задачи была в таком виде то и оценка будет в таком же. От 3-х дней.


                                                1. Delphinum
                                                  23.06.2016 19:25

                                                  В найме сотрудников обычно участвует не один человек

                                                  Вы были одним из тех людей, кто занимался наймом сотрудников?
                                                  Опять троллинг?

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

                                                  Ну судя по вашим ответам, нужно поставить условие заказчику и отказаться от него, если он с этими условиями не соглашается. Разве нет?
                                                  От 3-х дней

                                                  Тобишь вы возьметесь за такую работу?


                                                  1. CodeKeeper
                                                    23.06.2016 19:39

                                                    Вы были одним из тех людей, кто занимался наймом сотрудников?

                                                    Не просто занимался, а еще и собеседовал.

                                                    Ну судя по вашим ответам, нужно поставить условие заказчику и отказаться от него, если он с этими условиями не соглашается. Разве нет?

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

                                                    Тобишь вы возьметесь за такую работу?

                                                    Ответ на этот вопрос я написал ранее.


                                                    1. Delphinum
                                                      23.06.2016 19:45

                                                      Не просто занимался, а еще и собеседовал

                                                      Вы собеседовали джуниоров?
                                                      Нужно меньше строить всяких домыслов

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

                                                      Ну да ладно, это частое явление на хабре )
                                                      Ответ на этот вопрос я написал ранее

                                                      Видимо написать «Ответ на этот вопрос я написал ранее» вам проще, чем «Да» или «Нет» ) Чтож, вам счастливого дня. На этом наш диалог можно заканчивать.


                                                      1. CodeKeeper
                                                        23.06.2016 19:50

                                                        Вы собеседовали джуниоров?

                                                        Да

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

                                                        Ну да ладно, это частое явление на хабре )


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

                                                        Видимо написать «Ответ на этот вопрос я написал ранее» вам проще, чем «Да» или «Нет» ) Чтож, вам счастливого дня. На этом наш диалог можно заканчивать.

                                                        Видимо Вы осознал что больше нечем поживиться и решили ретироваться. Правильное решени. И Вам хорошего дня.


                                    1. michael_vostrikov
                                      23.06.2016 19:14

                                      Человек правильно вам говорит. Если вы с этим не сталкивались, это не значит, что этого нет.

                                      Т.е. есть часть которая готова собеседовать удаленно и в случае успеха приглашать на работу.

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

                                      Нашел работу на второй неделе поисков, взяли в небольшую компанию которая работала с европой. Проработал там 1,5 года

                                      Вот вы и признались, что у вас нет опыта в поиске работы. Вы искали работу всего 2 недели, а в следующий раз вы были уже не джуниор.

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

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


                                      1. CodeKeeper
                                        23.06.2016 19:34

                                        Человек правильно вам говорит. Если вы с этим не сталкивались, это не значит, что этого нет.


                                        Нет чего?

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

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

                                        Вот вы и признались, что у вас нет опыта в поиске работы. Вы искали работу всего 2 недели, а в следующий раз вы были уже не джуниор.

                                        И что? 2 недели не поиск? Или всю жизнь быть джуном и постоянно нужно искать работу и выполнять самые каловые поручения за еду? Хотя если так, то да. Все будет печально и будут рассказы про «реалии рынка» и «пони»

                                        а в следующий раз вы были уже не джуниор.

                                        Можно три года проработать с ZF/Symfony, а потом взяться за мадженту и первое время не понимать как сделать ту или иную задачу, которая на фреймверке давалась легко. И стать джуниорам при работе с маджентой. Случаи не единичный.



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


                                        Опять абстрактная постановка задачи. От трех дней. А сколько по вашему? Мне интересно послушать. А какими инструментами пользовались при переносе данных из одной базы в другую? А с какими трудностями предстоит столкнуться? Мне интересно послушать про ваш опыт переноса данных.


                                        1. michael_vostrikov
                                          23.06.2016 20:38

                                          Нет чего?

                                          Очевидно, того, о чем он говорит, и по поводу чего вы ему возражаете. Конкретно — что бывают ситуации, когда нет возможности отказаться от работы с неприятным кодом. Именно для того, чтобы были средства, чтобы «продолжать мониторить крупные компании».

                                          И что? 2 недели не поиск?

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

                                          Я привел пример как можно переехать в другой город работая на фрилансе.

                                          Я вам тоже приведу пример. У меня только через 2 недели появилось первое согласие на отклик. И за следующие 2 недели тоже всего 2 штуки. Потому что я джуниор, у меня нет портфолио и положительных откликов. Я заработал 30 баксов, а прошел месяц, и за квартиру надо платить. А так да, теоретически переехать можно, потом когда-нибудь.

                                          А сколько по вашему?

                                          Нисколько, речь не об этом. Вы сказали «не думаю что сильно много». Я предложил вам не гадать, а попробовать. Также вы сказали, что «Перенести данные» и «Разрабатывать на битриксе» немного разные понятия. Это не так, и чтобы разобраться, как правильно перенести данные, вам надо разобраться в логике работы битрикса, то есть какое-то время с ним поработать. Это не означает, что надо обязательно писать новый код, но надо разобраться в старом. В общем-то, это справедливо для любой сложной системы, но весь вопрос в коэффициентах.


                                          1. Delphinum
                                            23.06.2016 20:42

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

                                            Меня еще из за национальности не брали )


                                          1. CodeKeeper
                                            23.06.2016 21:02

                                            Я не буду отвечать на всю простыню. Надоело писать одно и тоже.

                                            Нисколько, речь не об этом. Вы сказали «не думаю что сильно много». Я предложил вам не гадать, а попробовать. Также вы сказали, что «Перенести данные» и «Разрабатывать на битриксе» немного разные понятия. Это не так, и чтобы разобраться, как правильно перенести данные, вам надо разобраться в логике работы битрикса, то есть какое-то время с ним поработать. Это не означает, что надо обязательно писать новый код, но надо разобраться в старом. В общем-то, это справедливо для любой сложной системы, но весь вопрос в коэффициентах.


                                            B так. Задача перенести данный с одной абстрактной системы А в другую системы Б имея только дамп базы. Возьмем пример продуктов. Допустим у продуктов должна быть цена, артикул, атрибуты, количество, картинки, и статус. И так захожу на сайт и беру первый попавшийся продукт, нахожу его по артикулу, смотрю связи таблицы нахожу остальные данные, пишу SQL запрос который вытащит все необходимое мне поля, и допустим запишу в csv файл для дальнейшего импорта. Теперь внимание вопрос. Зачем нужно лезть в код?


                                            1. michael_vostrikov
                                              23.06.2016 21:44

                                              Видимо, вам очень нравится теоретизировать. Мне теперь тоже начинает казаться, что вы живете в стране розовых пони. Потому что EAV, и основных таблиц у вас всего 2 — iblock_element и iblock_element_property. В них, кроме товаров, могут храниться еще и новости, например. К ним сбоку приделывается catalog_price, и поверх всего этого навешивается система скидок. Чтобы понять, в каком порядке и по какому условию надо джойнить iblock_element_property с iblock_element_property, надо залезть в код.

                                              Мир шире, чем вам кажется.


                                              1. CodeKeeper
                                                23.06.2016 22:28

                                                Видимо, вам очень нравится теоретизировать. Мне теперь тоже начинает казаться, что вы живете в стране розовых пони. Потому что EAV, и основных таблиц у вас всего 2 — iblock_element и iblock_element_property. В них, кроме товаров, могут храниться еще и новости, например. К ним сбоку приделывается catalog_price, и поверх всего этого навешивается система скидок. Чтобы понять, в каком порядке и по какому условию надо джойнить iblock_element_property с iblock_element_property, надо залезть в код.


                                                Ну не Вам мне, как человеку который очень долго работает с Magento, рассказывать про EAV. Еще раз, я привел вполне конкретный пример(кстати из реальной задачи), с вполне конкретными данными. Я вижу все таблицы и связи между ними. Зачем мне лезть в код, если все связи, индексы и таблицы, а так же данные для сравнения у меня на виду? И это кстати, один из способов переноса данных.

                                                могут храниться еще и новости, например

                                                Как это мне мешает получить нужные мне данные по продукту?

                                                Мир шире, чем вам кажется.

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

                                                P.S. Я вот кстати знаю в каком случае придется лезть в код. Интересно догадаетесь ли Вы, что это за место и что делать если нет доступа к данной логике.


                                                1. michael_vostrikov
                                                  24.06.2016 05:29

                                                  Я вижу все таблицы и связи между ними. Зачем мне лезть в код, если все связи

                                                  Нет там связей, ни одного foreign key во всем дампе. Со связями конечно все проще, никто и не спорит.

                                                  что чтобы понять как спарсить данные с БД обязательно нужно лезть в код движка

                                                  Речь шла об одном конкретном продукте.

                                                  Интересно догадаетесь ли Вы

                                                  Нет желания играть в телепатию, извините.


                                                  1. CodeKeeper
                                                    24.06.2016 08:21

                                                    Нет там связей, ни одного foreign key во всем дампе. Со связями конечно все проще, никто и не спорит.
                                                    Речь шла об одном конкретном продукте.

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

                                                    Нет желания играть в телепатию, извините.

                                                    Но как же так? Вы же так яро пытаетесь доказать, что я заблуждаюсь давая оптимистичные оценки. Это видно по данным фразам:

                                                    Посмотрите, сколько у вас уйдет времени и других ресурсов.

                                                    и
                                                    Вы сказали «не думаю что сильно много». Я предложил вам не гадать, а попробовать.


                                                    А сами оказывается не компетентны в вопросе?


      1. kotomyava
        26.06.2016 13:08

        Полно заказчиков, с не промытыми маркетологами битрикса мозгами. Не сошёлся на нём свет клином. Зачем плеваться-то? =)


        1. Delphinum
          26.06.2016 16:52

          Гляньте вакансии IT сферы в небольших городах. Больше половины там 1С Предприятие и Битрикс.


          1. kotomyava
            26.06.2016 19:03

            Не работайте в странных конторках в небольших городах — вам там не только подсунут битрикс, так ещё и платить будут смешные деньги.
            Работайте удалённо. Сейчас в этом нет не только ничего сложного, но и необычного даже.

            А не хотите — так плачьте, и грызите битрикс, что уж тут.


            1. Delphinum
              26.06.2016 19:55

              Работайте удалённо

              Уже писал выше на что делится удаленная работа. Для новичка это далеко не выход. В большинстве случаев во фрилансе новички будут работать именно за еду (CMS за 500 рублей).
              А не хотите — так плачьте, и грызите битрикс, что уж тут

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


              1. kotomyava
                28.06.2016 11:17

                Зачастую, это будут, всё же, большие деньги, чем в мелкой студии в глубинке. К тому же, если это будет фриланс, будет выбор, что делать, и с кем работать. Ну и удалённая работа, это не только фриланс — можно работать в такой же студии, но работающей на более вкусных клиентов, чем упомянутые конторы в маленьких городах, соответственно, за другие несколько деньги.

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


                1. Delphinum
                  28.06.2016 15:38

                  Зачастую, это будут, всё же, большие деньги, чем в мелкой студии в глубинке

                  Вы это по своему опыту или есть какая то статистика? Мой опыт говорит, что клиенты, заказывающие CMS за 500 рублей во фрилансе потом еще года два будут трепать мозг с правками/переделками и попробуй не помочь, засрут всю репутацию. Так что нет, в мелкой студии в глубинке ты просто делаешь свою работу, а во фрилансе еще и ответственность за нее несешь. Все же мелкая студия повыгоднее и поспокойнее будет.
                  можно работать в такой же студии, но работающей на более вкусных клиентов

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

                  Понимаете, очень часто работа с битриксом сводится к двум вещам:
                  1. Прочитать документацию и сделать как планировалось разработчиками самого битрикса
                  2. Прочитать документацию, понять что сделать как нужно не получится и изобрести велосипед
                  Первый вариант довольно простой и распространенный, он не требует особых умственных усилий и я не считаю его чем то плохим, это стандартная разработка. Второй вариант похуже, но это не частое являение, да и не настолько все плохо, чтоб бояться его как огня. Другими словами — да, битрикс разрабатывался с неудачной архитектурой, но 2-3 года разработки на нем не убьют вам мозг.


                  1. kotomyava
                    29.06.2016 10:49

                    По опыту. Причём, когда я начинал фрилансить, с этим было всё куда сложнее — рынок подобных услуг был у нас практически не развит.
                    По поводу вашего возражения, могу сказать только одно — клиента и работу, в случае фриланса, вы выбираете сами, и хвататься за первое же предложение вас никто не заставляет. Надо уважать себя, и работать с адекватными людьми за адекватные деньги. Ну и работать, конечно, надо хорошо — через некоторое время это позволит не искать заказы, они будут сами вас находить.
                    Естественно, работать на кого-то, и заниматься только кодом проще, и возможно, спокойнее, но и менее выгодно — ваша работа кормит не только вас, но и ещё много народу, и в небольшой студии этот оверхед особенно заметен…

                    Мозг не убьют, если не остановиться на этом, и заниматься самообразованием. Вероятно, часть навыков по дебагу, даже в последствии пригодится. Но большая часть времени, потраченного на освоение битрикса, всё же уйдёт впустую. А время это тот ресурс, который восполнить не получится.
                    Лучше уж какой-нибудь вордпресс освоить, хотя бы из соображений того, что он очень распространён, потенциально может принести куда больше денег. И не ограничен только нашим внутренним рынком, что очень важно.


                    1. Delphinum
                      29.06.2016 13:52

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

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

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


                      1. kotomyava
                        29.06.2016 15:32

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

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

                        Естественно, начинать нужно с небольших задач, получить их даже новичку довольно просто. А дальше будет уже и какой-нибудь рейтинг на биржах и заказчики, которые вернутся если вы хорошо работали. Это довольно быстро всё нарабатывается.

                        По поводу будущего битрикса — он что мог уже всё скушал. И поможет ему только полная переделка с нуля. Маркетинг там и так делает всё что может, и работает и за себя и за разработчиков.
                        Ну и наконец, наш рынок веб разработки, относительно мал и беден, и концентрироваться на нём не сильно-то разумно. А вордпресс, тот же, популярен и у нас, и там, где ценник на работу разработчика несколько адекватнее…


                        1. Delphinum
                          30.06.2016 00:37

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

                          А кто то спорит?
                          Естественно, начинать нужно с небольших задач, получить их даже новичку довольно просто

                          На фрилансах не так уж много небольших задач, которые можно поручить новичку. Как правило это либо целые проекты, либо сайты-визитки или дописульки под битрикск/друпал/джумлу/вордпресс.
                          По поводу будущего битрикса — он что мог уже всё скушал

                          Я не специалист в битриксе, но считаю что ему еще есть куда меняться и это будет сделано.


                          1. kotomyava
                            30.06.2016 01:34

                            либо сайты-визитки или дописульки под битрикск/друпал/джумлу/вордпресс

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


                            1. Delphinum
                              30.06.2016 01:55

                              Так я о том и говорю, что начинать с какого нить битрикса — это нормально. Мне выше пытались доказать, что новички должны начинать с европейского рынка, писать на ZF2/Symphony и работать только с идеальными заказчиками.


                              1. kotomyava
                                30.06.2016 12:33

                                Так всё правильно кроме, возможно, ZF2/Symphony как стартовой точки. Впрочем, очень хорошо иметь такие знания на старте работы, а не учиться в процессе. Небольшие задачи по этой тематике тоже бывают, хоть их и меньше.

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

                                Заказчиков и проекты необходимо тщательно выбирать.

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


                                1. Delphinum
                                  30.06.2016 15:12

                                  Вы рассуждайете с точки зрения «новичка — робота», который посидел пару лет, поизучал и пошел работать на европейский рынок с полученными «знаниями». Я же говорю о том, что в реальном мире так не работает. Таких «новичков — роботов» не существует, а даже если бы существовали, ими бы никто на европейском рынке не заинтересовался.


                                  1. kotomyava
                                    30.06.2016 21:43

                                    При чём тут роботы?
                                    Вы под новичком понимаете того, кто прошёл какой-нибудь курс «html css php mysql за час» и решил, что он стал програмистом, или действительно начинающего разработчика?

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

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

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


                                    1. Delphinum
                                      30.06.2016 21:45

                                      Я говорю о новичках, которые новички. Люди без опыта работы, либо с минимальным опытом. Разработчики с опытом работы, которым нормальные заказчики, а тем более заказчики с европейского рынка доверяют задачи как то слабо укладываются у меня в понятие — новичек.


                                      1. kotomyava
                                        30.06.2016 23:13

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

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

                                        По поводу того, кому доверяют работу — индусам после того самого «html css php mysql за час», хорошо по шаблону написавшим ковер, и то перепадают заказы. Ну, правда, длится это не долго обычно. =)
                                        Т.е. вы сильно переоцениваете требования к исполнителям на мелких проектах.

                                        Просто попробуйте — даже с нуля что-то простое получить весьма не много времени занимает.


                                        1. Delphinum
                                          30.06.2016 23:18

                                          Выше вы почему-то пишите о знаниях, теперь об опыте работы

                                          Одно от другого неотделимо.
                                          Опыт работы не нужен

                                          Оу, опять пони полезли из страны фантазий. Давно во фрилансе перестали смотреть на опыт?
                                          Т.е. вы сильно переоцениваете требования к исполнителям на мелких проектах

                                          Мелкие проекты это «CMS за 500 рублей»? Я о таких проектах уже сказал выше.
                                          Просто попробуйте — даже с нуля что-то простое получить весьма не много времени занимает

                                          Да я уже напробовался в свое время, спасибо.


                                          1. kotomyava
                                            01.07.2016 00:49

                                            Вообще говоря, это совершенно разные понятия. И то и другое может существовать отдельно.
                                            Вот вам пару примеров:

                                            Студент ещё не работавший негде, и иногда, довольно неплохо обученный. У него нет опыта, и есть знания. И он вполне сможет работать, даже самостоятельно. Особенно если начнёт с простого.

                                            Бывает горе исполнитель(не называть же это разработчиком), который тупо гуглит решения, уповая на то, что кто-то такое делал до него и поделился решением. Иногда даже что-то получается. У него есть опыт работы, нет знаний.

                                            Давно во фрилансе перестали смотреть на опыт?

                                            А вы как-то можете оценить реальный опыт фрилансера как заказчик? На самом деле, практически всегда не сможете. Можно оценить, в лучшем случае, сколько проектов он успешно сделал на данной конкретной бирже, или ещё хуже — каков его рейтинг, который строится, часто, по весьма странным принципам. Многие заказчики, кстати, это хорошо понимают.

                                            Мелкие проекты, это любые доделки по готовым сайтам, простенькие сайты, например и.т.п.
                                            Это вполне нормальная работа для старта, не слишком ответственная, позволяющая получить хорошие отзывы/рейтинг/etc., при хорошем исполнении. А т.к. делается такая работа довольно быстро, и получить за короткое время их можно немало. Собственно и доход не такой печальный выходит — каждый такой проект конечно не принесёт, конечно, больших денег, но и времени много не отнимет.
                                            При чём тут какие-то мифические «CMS за 500 рублей»? Вы выбираете, на какой проект откликаться. Если видите такой — да пройдите же мимо.

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

                                            Впрочем, что я распинаюсь перед человеком, у которого при отсутствии аргументов пони так и норовят вылезти…


                                            1. Delphinum
                                              01.07.2016 01:07

                                              Впрочем, что я распинаюсь перед человеком, у которого при отсутствии аргументов пони так и норовят вылезти…

                                              Дальше продолжать диалог не вижу смысла. Счастливо фрилансить )


  1. maxpsyhos
    23.06.2016 04:33

    якобы обновив версию 12.0 до 16.5 все будет нормально работать


    Я лично обновлялся с 10-й до 14-й. Единственная проблема в том, что до 12-й версии нужен PHP <= 5.3, а для свежих версий PHP >= 5.3, поэтому пришлось искать машину с РОВНО нужной версией PHP. Так что если не говнокодить и использовать API как рекомендовано, от всё 100% совместимо.


    1. rpsv
      23.06.2016 07:10

      Битрикс клепает эти версии, а по факту меняется малая часть. Как по мне: если меняется ведущая цифра версии, то это должно быть нечто глобальное, а не обновление одного модуля и пару фиксов. Посмотрим что 1 июля скажут, но думаю вряд ли там будет нечто грандиозное…
      Все это к тому, что не было бы нужды заботиться об обратной совместимости, если бы они начали с какой нибудь версии активно поддерживать только новое ядро, а старое по столько по скольку. Ну об этом я уже писал :-)


  1. JhaoDa
    24.06.2016 16:37

    PSR-2 не любите, да?


    1. rpsv
      24.06.2016 18:56

      Как-то так сложилось))) Да и на самом деле я только пару моментов не соблюдаю, так что все норм.


  1. SerafimArts
    24.06.2016 20:57
    +1

    А где composer и зачем своя реализация psr4?


    В целом — это в разы лучше того, что пишут под битрикс и вордпресс, на голову прям выше. Молодец! Правда до уровня кода опенсорс фреймворков (Symfony, Laravel) очень далеко, есть куда стремиться =)


    1. rpsv
      24.06.2016 21:00

      Спасибо!
      Composer в ближайшем будущем добавлю.
      По поводу PSR: там по сути только одна доработка, чтобы по умолчанию поиск проходил в директориях модулей.