• Как эффективно развивать себя как разработчика?

    aRegius
    @aRegius
    Python Enthusiast
    Вам будет гораздо легче решать большую часть стоящих перед вами задач (а другим гораздо легче вам в этом помогать), как только вы перестанете описывать их общими фразами (типа "максимально эффективно", "полноценный дев", "хорошим специалистом" и т.п.).

    Будьте конкретны:
    - "Моя цель на ближайшие 6 месяцев - вырасти до позиции XXX в текущей компании". И далее:
    - "Что мне нужно сделать для того, чтобы в течение 6 месяцев в моей компании вырасти до XXX ?"

    С этим уже можно обратиться к людям, обладающим достаточной компетенцией в помощи вам с ответом на этот вопрос: "Для того, чтобы в нашей компании стать XXX, нужно знать ЭТО и уметь ТО".

    - "Что мне нужно для того, чтобы узнать ЭТО и научиться делать ТО ?". Cоставляете план действий (разбиваете необходимые шаги на месяцы, недели, дни) с дежурными сроками (для проверки запланированного и достигнутого, внесения в связи с этим необходимых корректировок и т.п.) - и вперед.

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

    Успехов.
    Ответ написан
    Комментировать
  • Одно действие с множеством модификаций. Как организовать архитектуру?

    27cm
    @27cm
    TODO: Написать статус
    Я бы попробовал использовать паттерн Factory.
    Фабрика будет создавать форму для конкретного типа документа, в ней не должно быть дублирования кода.
    Список полей и правила их валидации для каждого типа договоров хранить в конфигурационных файлах concrete-document-type.php:
    <?php
    return [
        'elements' => [
            'name',
            'surname',
            'phone' => [
                'validators' => ['by']
            ],
            ...
        ],
        ...
    ];

    Структуру привёл условную. Фабрика должна уметь по требуемому типу договора получить нужный конфигурационный файл и по нему построить нужную форму договора.

    У вас получится 70 конфигурационных файлов. Дальше можно думать, как их максимально упростить. Например, у вас есть PhoneElement формы, использующий PhoneValidator, вы создаёте его наследника PhoneByElement с валидатором беларусского номера телефона. И конфигурационный файл превращается в:
    <?php
    return [
        'elements' => [
            'name',
            'surname',
            'phone_by',
            ...
        ],
        ...
    ];


    Или добавляете понятие локали в конфигурационный файл:
    <?php
    return [
        'country' => 'by',
        'elements' => [
            'name',
            'surname',
            'phone',
            ...
        ],
        ...
    ];
    Ответ написан
    Комментировать
  • Как дождаться данных, заполняемых асинхронно в цикле?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    https://github.com/kriskowal/q
    Используйте силу promise. Пусть ваша функция func возвращает массив обещаний, тогда можно будет сделать что-то типа
    var promises = [];
    for (var i = 0;i<10;i++) {
        promises.push(func(i));
    }
    
    Q.all(promises).then(function (results) {
        console.log(results);
    });
    Ответ написан
    1 комментарий