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

    iam_not_a_robot
    @iam_not_a_robot
    1. Строго говоря в фирме может быть несколько проектов, тогда директор по маркетингу выше в иерархии, т.к. он по идее управляет маркетингом не только проектов но и самой компании.
    2. Это называется матричная структура управления у маркетолога в отделе маркетинга выходит 2 руководителя - один директор по маркетингу, другой руководитель проекта. На схеме ниже Функциональный руководитель 1 - директор по маркетингу. Руководитель процесса 1 - руководитель проекта. А исполнитель 11 - это маркетолог.
    e6eec8d9d3144b8d9c0c5987faa91a99.gif
    Руководителю проекта в этом случае правильно либо давать указания руководителю маркетингового отдела (а тот распределит их внутри своего отдела) либо давать указания напрямую маркетологу но опять же согласованные с руководителем отдела маркетинга.
    Ответ написан
    Комментировать
  • Для чего нужны при создании экземпляра класса скобки?

    muhammad_97
    @muhammad_97
    PHP-разработчик
    Скобки можно опустить, если в конструктор ничего не передается.
    Ответ написан
    2 комментария
  • Для чего нужны при создании экземпляра класса скобки?

    @eskrano
    передача аргументов в конструктор класса.
    Ответ написан
    Комментировать
  • Могу ли я сделать приложение для мобильного устройства, которое будет загружаться как сайт?

    mannaro
    @mannaro
    Умею профессионально гуглить
    Да, конечно. Почитай про Cordova и Phonegap. Сами используем, все норм пока.
    Ответ написан
    8 комментариев
  • Как правильно форкать проект для основы своего?

    @FoxInSox
    Инструкция по единственно правильному методу:
    1. Нажмите кнопку Fork:63c3075b9f6d4bd7ada8406ea62cd9e5.png
    2. Вы успешно и правильно сделали форк проекта. Конец инструкции.
    Ответ написан
    Комментировать
  • Посещаемость сайта измеряется в днях или месяцах?

    @vertas52
    в сутках.
    Ответ написан
    Комментировать
  • Посещаемость сайта измеряется в днях или месяцах?

    saboteur_kiev
    @saboteur_kiev Куратор тега Компьютерные сети
    software engineer
    А есть и так и так. Чаще считают в сутки.
    Ответ написан
    Комментировать
  • Объясните простыми словами как работает Redux?

    У вас есть одно большое дерево, в котором хранится все состояние (state) приложения - это хранилище (store).
    Также у вас есть набор редьюсеров (которые скомбинированы в один общий rootReducer) - это функции, который принимают текущее состояние и действие и возвращают новое состояние:
    function someReducer(state = initialState, action) {
      // обычно выглядит как switch 
      // action - простой js-объект
      //              и обязательно имеет строковое поле type
      switch(action.type) {
        // обрабатываем действие с типом SOME_ACTION_NAME
        case 'SOME_ACTION_NAME':
          // берем какие-то данные из экшена и возвращаем новое состояние
          // при этом менять sate нельзя!
          // state.someProperty = action.newStateData <--- НЕТ!
          return { ...state, action.newStateData };
        // Если мы не обрабатываем действие - просто возвращаем старое состояние
        default:
          return state;
      }
    }


    Также есть экшен креаторы (actionCreators) - это функции, которые возвращают действие. затем это действие вещается в хранилище (диспатчится). Типичный пример:
    function someActionCreator(someArg) {
      return {
        type: 'SOME_ACTION_NAME',
        newStateData: someArg + 5, // <-- разная логика
      };
    }


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

    Если мы хотим получить доступ к состоянию в экшен креаторе - воспользуемся thunkMiddleware:
    import thunkMiddleware from 'redux-thunk';
    
    function createStore(initialState) {
      const reducer = combineReducers(reducers);
      const finalCreateStore = applyMiddleware(
        thunkMiddleware // <-- добавляем middleware
      )(defaultCreateStore);
      return finalCreateStore(reducer, initialState);
    }


    Теперь мы можем делать так:
    function someActionCreator(someArg) {
      return (dispatch, getState) => { // <-- возвращаем фукнцию, а не объект!
        const someState = getState().reducerName;
        return {
          type: 'SOME_ACTION_NAME',
          newStateData: someArg + someState, 
        };
      };
    }


    В общем схема выглядит так:

    actionCreator --action--> dispatch --action--> middleware --action--> store --action--> reducer --> newState


    Затем мы берем из react-redux метод connect, который подключает Ваш умный компонент к хранилищу:
    import { connect } from 'react-redux';
    import { bindActionCreators } from 'redux';
    
    class MyComponent extends Component {
      static propTypes = {
        someProp: PropTypes.string.isRequired,
        someFunc: PropTypes.func.isRequired,
      };
    }
    
    // Тут мы берем из глобального состояния необходимую нам часть
    // В ownProps - свойства компонента. Тут могут быть например свойства от роутера
    function mapStateToProps(state, ownProps) {
      return {
        someProp: state.someReducer,
      };
    }
    
    function mapActionsToProps(dispatch) {
      return bindActionCreators ({ // <-- биндим все на disptach для удобства
        someFunc: (someArg) => someActionCreator(someArg + 1),
      }, dispatch);
    }
    
    export default connect(
      mapStateToProps,
      mapActionsToProps
    )(MyComponent);
    Ответ написан
    3 комментария
  • Behat или Codeception и почему?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Behat не совсем для тестирования, Codeception исключительно для тестирования.

    Если ваша команда записывает требования в терминах Given-When-Then и загоняется по BDD, то выбор очевиден - Behat. Есть еще команды которые заставляют писать функциональные тесты своих тестировщиков и для этого используют gherkin-сценарии. Если вам надо просто покрыть все функциональными тестами то Codeception (или любой другой фреймворк, я вот peridot использую для этих целей).
    Ответ написан
    Комментировать
  • Имеет ли смысл для каждого поддомена создавать поддомен api для rest приложений?

    Если это совсем разные API, работающие с разными данными и пишут их разные люди, то имеет смысл разделить. Иначе - нет.
    Ответ написан
    Комментировать
  • Какие плагины Gulp вы используете для front-end?

    Serj-One
    @Serj-One
    i'm sexy and i know it
    Кусок моего галпфайла. Что-то снабдил комментами.
    var connect      = require('browser-sync'); // livereload
    var sass         = require('gulp-sass'); // Кому что, я использую SCSS
    var csscomb      = require('gulp-csscomb'); // Обязательно!
    var cssmin       = require('gulp-cssmin');
    var imageop      = require('gulp-image-optimization'); // Лучшая альтернатива gulp-imagemin
    var concat       = require('gulp-concat');
    var uglify       = require('gulp-uglify');
    var plumber      = require('gulp-plumber'); // Не позволяет плагину умереть молча
    var autoprefixer = require('gulp-autoprefixer');
    var ngrok        = require('ngrok'); // Пробрасываем локальному серверу путь наружу для для заказчика
    var spritesmith  = require('gulp.spritesmith'); // Спрайты
    var notify       = require('gulp-notify'); // Уведомления
    var merge        = require('merge-stream'); // Деление таска на разные потоки

    Конечно, есть много полезного и кроме этого. Но сам верстаю в WebStorm, в котором огромное количество плюшек реализованы куда удобней, чем в галп-плагинах.
    Ответ написан
    8 комментариев
  • Как не заплыть жиром, работая удаленно программистом?

    opium
    @opium
    Просто люблю качественно работать
    Уникальных методов не существует, много зарабатывая вы можете себе позволить полезную и вкусную еду и ежедневный поход в спортзал ну или как альтернатива три четыре секса в день с молодкой в разных позициях почти как спортзал..
    Ответ написан
    7 комментариев
  • Может ли класс наследовать магический метод родителя __toString()?

    DevMan
    @DevMan
    может - ideone.com/TYhTAv
    чесслово, быстре было самому проверить чем вопрос сюда писать.
    Ответ написан
    3 комментария
  • Как избавиться от ошибки GET [ссылка] net::ERR_ADDRESS_UNREACHABLE в www-embed-player.js?

    iradesign
    @iradesign
    учусь фронт-энду
    У меня такая же проблема с ERR_ADDRESS_UNREACHABLE в www-embed-player.js. Так никто и не написал, что делать.
    Ответ написан
    1 комментарий
  • Если одной группе пользователей доступна страница, которая недоступна другой, то какой редирект надо делать для второй группы?

    AlexXYZ
    @AlexXYZ
    O Keep Clear O
    По-моему разница между 301 и 302 важна для поисковиков, но если приходится редиректить пользователя, то обычно делаю через 302. При редиректе есть одна тонкость - если она случается при использовании Ajax, то клиент 302 не заметит, пока не "упрется" в последнюю страницу в цепочке редиректов.
    Ответ написан
    Комментировать
  • Нормальные ли это цены за час работы?

    printf
    @printf
    Ем детей.
    Приличный девелопер даже на постоянной работе получает от $30 в час. В консалтинге / фрилансе все зависит от премиума, который исполнитель хочет получить.

    Как бы это не юниорские расценки, но вполне уместные.

    UPD. перечитал пост, увидел «программиста на Битриксе». Гоните этого школьника в шею, унижайте его.
    Ответ написан
    2 комментария
  • Нужно ли использовать unisender, mailchimp и так далее? Или хватит обычной почты?

    solomakin
    @solomakin
    Head of online marketing
    Цель любой рассылки - повышение лояльности, возвращение давно не покупавшего клиента, дополнительные предложения о скидках и возможностях купить у вас что-то.
    Если проще - вам нужно заработать, используя контакты, которые вам оставили по какой-то причине.
    Движение же человека в этом случае выглядит примерно так:
    Получил письмо -> открыл письмо -> кликнул по ссылке в письме -> прочитал информацию на сайте -> выполнил целевое действие (или оплатил, в зависимости от того, что вы хотите).
    Чтобы не делать лишней работы и не терять лояльных клиентов, вам нужно понимать, интересна ли им ваша рассылка и ваши предложения в принципе.
    Чтобы понимание строилось на статистике, вам нужно проводить анализ раскрываемости (open rate), кликабельности рассылки (click rate), конверсию писем в целевые действия.
    Если вы не будете считать эти показатели, возникает большой риск "сжечь базу" - потерять лояльность ваших подписчиков.
    Делая рассылку "на коленке", вы не получите данных ни по "open rate", ни по кликабельности, а будете просто пулять письма в вакуум.
    Рассылочные сервисы же предоставляют возможность отслеживать эти показатели и влиять на них таким образом, чтобы рассылки приносили доход.
    Поэтому я считаю, что использование рассылочных сервисов опционально для любого размера подписной базы.
    Если вы знаете статистику по своим действиям, вы можете влиять на каждый этап от открытия письма до покупки, тем самым увеличивая свои доходы.
    Мы использовали сервисы Mailchimp и GetResponse - рассылали купоны по внутренним акциям и информацию о мероприятиях, пользовались самыми дешевыми платными пакетами. При этом окупаемость e-mail маркетинга порядка 10000%, что является самым высоким показателем среди всех наших каналов привлечения трафика.
    Ответ написан
    5 комментариев
  • Как Вы называете свои таблицы и поля в БД? CamelCase, camelCase, camel_case.....?

    restyler
    @restyler
    основная проблема у under_score стиля (на примере yii2 ActiveRecord) лично для меня в том, что получается мешанина - динамические атрибуты у классов - camelCase, а атрибуты из БД - under_score. Если в своем коде можно это запомнить и объяснить себе некой логикой (если вижу under_score - значит атрибут прямиком из базы прилетел,а cameCase - это динамический атрибут генерируемый php методами) то для пользователей API вашего сервиса (если у вас есть API, конечно) вы никак не объясните такую подозрительную разницу в именовании атрибутов объекта - и при генерации справки для вашего API вам будет стыдно. Что же делать? Видимо, страдать от camelCase в названии колонок в бд (лично я считаю их менее читабельными, чем _) - но деваться некуда, против PSR не попрешь.
    Ответ написан
    Комментировать
  • Отрицательный отзыв = крест на фрилансе?

    kumaxim
    @kumaxim
    Web-программист
    Первое - если есть шанс обжаловать(плохо ТЗ поставлено, предупреждал человека, тот не послушал и т.д. Вообще много к чему можно придраться...), значит надо обжаловать. Заплати арбитру биржы, вынеси дело на разбирательство.
    Второе - если обжаловать бессмысленно, т.е. там твой железный косяк, попробуй все же договориться с клиентом. Первое что приходит на ум - компенсируй ему убытки, если сумма не заоблачная.
    Третье - если у Вас во взаимоотношениях идет резкий негатив и Вы не хотите более иметь ничего общего - оставь коммент-отписку типа "Сотрудничество не сложилось, свою вину не признаю". Не распыляйся сильно рассказом какой плохой этот человек заказчик, что он ТЗ ставить не умеет и вообще в башке у него одна извилина... Все это лишнее. Просто одно предложение, 5-6 слов. Все.
    Ответ написан
    Комментировать