Задать вопрос
  • Какие минимальные ресурсы нужны, чтобы начать аутсорсить на малый и средний бизнес СНГ и Запада?

    saboteur_kiev
    @saboteur_kiev Куратор тега Программирование
    software engineer
    "Занимался привлечением клиентов и развития отношений с ними, частично маркетингом."

    "Подскажите, какое минимальное количество людей нужно и какие у них должны быть навыки, чтобы начать вышеописанную деятельность ?"

    Извините, но какие-то взаимоисключающие параграфы.

    Чтобы начать - вы должны уметь найти и привлечь клиента, чтобы подписать договор и получить деньги.
    Все остальное нужно, чтобы удержать клиента, чтобы получить больше денег, чтобы получить больше клиентов впоследствии.
    Ответ написан
    Комментировать
  • Что означает статус SUSPENDED по окончанию почасового заказа?

    Всё же в справке понятно написано:
    For freelancers:

    We suspended your Upwork contract because your client's account was suspended. There are many possible reasons for your client’s suspension, although we won’t discuss specifics due to privacy concerns.

    Here’s what to do if your contract is suspended:
    • Stop working on the contract immediately – Do not resume work until you receive a notification from Upwork that the contract is reactivated. For hourly contracts, you’ll receive payment for any hours logged prior to the account suspension.
    • Contact your client – Get in touch with your client as soon as possible to find out when the contract will resume. If you do not get a response from your client, you can click here to ask Customer Support to contact the client on your behalf.
    Ответ написан
    Комментировать
  • Как узнать какой скрипт обрабатывает событие?

    @imhuman
    Ответ написан
    Комментировать
  • Как совершить очистку консоли средствами PHP?

    latteo
    @latteo
    system('whoami');

    Запускает отдельную скрытую консоль, выполняет в ней команду whoami, результат выполнения возвращает php.
    C "cls" - тоже самое... он успешно отрабатывает, вы просто не видите результата.

    Потому возникает вопрос, а что собственно пытаетесь сделать?
    Ответ написан
    Комментировать
  • Dell xps vs MacBook Pro?

    IonDen
    @IonDen
    JavaScript developer. IonDen.com
    В любом случае макбук, дело ведь не только в софте, но и в удобстве использования. Чего стоит только великолепный трекпад.
    Ответ написан
    Комментировать
  • Как распарсить не ассоциативный массив JSON в PHP?

    27cm
    @27cm
    TODO: Написать статус
    Ответ написан
    Комментировать
  • Как называются внутриклассовые переменные в PHP?

    Свойство, конечно же.
    Ответ написан
    Комментировать
  • Какой правильный путь при написании роутинга?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Для начала давайте разберемся с тем что такое "правильно". Правильно в контексте вопроса - это максимально гибко. В приведенных вами ссылке "роутер" влияет на то, как будет устроена вся система. То есть в них мы сначала делаем допущение "у нас будут контроллеры, модели и представление, что бы как в рельсах но по другому).

    Роутер же не должен ничегошеньки знать о контексте своего использования. Вот это будет правильно. Мы просто должы скормить ему какие-то правила маршрутизации, задающие соответствие "uri => mixed" к примеру, а так же иметь возможность скормить ему строчку что бы тот сказал кого все же вызывать.

    Все, на этом зона ответственности "роутера" заканчивается. Грубо говоря самая примитивная реализация роутера:

    // наш примитивный роутер
    function getRoute(array $rules, $uri) {
         return $rules[$uri] ?? null;
    }
    
    // использование роутера
    $action = getRoute([
        '/' => 'indexPage',
        '/about' => 'aboutPage',
        '/blog' => 'blogPage'
    ], '/about');
    
    // больше нам уже роутер не нужен
    // вызываем действие
    call_user_func($app, $action);


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

    Сами же значения карты роли роутеру играть не должны. Хотя мы можем добавить туда какие-либо дополнительные ограничения, вроде поддерживаемый HTTP метод и т.д. Но в этом плане проще сделать так:

    $rules = [
         [ 'uri' => '/blog/page{pageNumber:\d+}', 'method' => ['GET', 'HEAD'] ]
    ];


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

    Запуском же конкретных действий по найденному маршруту пусть лучше занимается другой компонент.
    Ответ написан
    5 комментариев
  • Как составить регулярное выражение для парсинга списка на HTML?

    fox_12
    @fox_12
    Расставляю биты, управляю заряженными частицами
    Откройте для себя более подходящие инструменты. Например поиск необходимых вам значений с помощью XPath
    www.w3schools.com/php/func_simplexml_xpath.asp
    https://habrahabr.ru/post/114772/
    и прочие
    Ответ написан
    Комментировать
  • Как решить проблему с checked и cheched="checked"?

    b0nn1e
    @b0nn1e
    Alcohol & Ruby on Rails
    Используйте .prop
    Ответ написан
    Комментировать
  • Какой из этих подходов в ООП лучше и как они называются?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    с самого начала у нас есть более-менее абстрактный класс


    Так не должно быть. "абстрактные" классы это способ устранения дублирования, нам больше важны интерфейсы объектов и полиморфизм. Но конкретно в рассматриваемом примере нам важна только инкапсуляция.

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

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

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

    Если мы хотим создать "пустой" объект и уже потом определить его состояние - мы выбираем второй вариант. Как правило этот способ создает много побочных эффектов если не контролировать его, да и обычно это делают не потому что так правильно а потому что подругому не умеют (типичный пример - сущности доктрины. Многие просто не представляю себе как с ними работать без сеттеров).

    Если же мы хотим создать объект но он не может быть пустым, объект должен требовать начальное значение в момент создания. Тогда мы просто передаем значение в конструктор. Без этого значения (или с неправильным) мы не сможем создать объект. К примеру если у пользователя обязательно должен быть email и пароль имеет смысл "заставлять" разработчиков явно передавать их в конструктор объекта. Это эдакая вариация.

    А теперь попробуем первый и второй подходы вместе + третий кейс с обязательными параметрами:

    class User {
         private $id;
         private $email;
         private $password;
    
         public function __construct($email, $password) 
         {
               // это ваш первый пример только без наследования, оно не нужно
               // в нашей задаче идентификатор пораждается
               // при создании объекта самим объектом, состояние по умолчанию
               $this->id = Uuid::uuid4(); 
    
               // мы требуем входящие данные что бы задать начальное состояние
               $this->email = $email;
               $this->password = $password;
         }
    
         // мутация состояния, второй вариант.
         public function changePassword($password) 
         {
                $this->password = $password;
         }
    }


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

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

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

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

    Второй вариант подразумевает, что магия может полностью задаваться извне, и Magick только кастит её, но в её "формировании" не участвует.

    Сейчас вы не решили для себя, что такое Magick. Вам нужно это сделать, и вопрос отпадёт сам собой.
    Ответ написан
    1 комментарий
  • Существует ли ресурс, на котором хорошо написано про паттерны (с примерами)?

    Vincent1
    @Vincent1
    Доступно ->
    Дизайн-патерни — просто, як двері
    designpatterns.andriybuday.com
    Ответ написан
    Комментировать
  • Что делать когда из команды уходит team lead?

    Обновляют резюме.
    А если серьёзно - какой ответ вы ожидаете? Не указан ни стек технологий, ни тип проекта...
    Проекты, автобусное число которых равняется единице, обречены на провал.
    Ответ написан
    2 комментария
  • Где взять инпут такой как у тостера?

    AloneCoder
    @AloneCoder
    [object Object]
    Это называется wysiwyg-редактор
    alex-d.github.io/Trumbowyg
    Ответ написан
    Комментировать
  • Подсветка синтаксиса Laravel в PhpStorm?

    BOOMER_74
    @BOOMER_74
    Full-Stack разработчик
    Это не ошибки, Warning. Тут дело в том, что это атрибуты (точнее методы), заданные магическим методом (__call). Т.к. эти методы не задокументированы (через @method в PHPDoc), то PhpStorm не знает о них. IDE helper тут не поможет, поэтому остается только игнорировать эти сообщения.
    Ответ написан
    4 комментария
  • Где в Москве можно получить практические навыки технической организации работы отдела разработки (приоритет на PHP)?

    flr
    @flr
    Где получить практические навыки ...?

    Как ни странно, только на практике.
    Любой опыт, которым с вами поделятся, будет в любом случае субъективным и специфичным. Надо понимать как раз принципиальные (читай теоретические) подходы. От них будут исходить уже "практические" решения в зависимости от ситуации. Процесс разработки в каждом случае может отличаться. Он обязан быть гибким, подстраиваться под изменения, решать появляющиеся проблемы и т.п.

    День открытых дверей вряд ли чем-то поможет. Вы же не посмотреть на сидящих за компьютерами людей хотите?

    В целом, могу поделиться нашим опытом (в каком-нибудь скайпе). Мы для себя по всем пунктам вопросы давно закрыли. В последнее время подумывал о том, чтобы написать статью по всем этим и подобным вопросам.
    Ответ написан
    Комментировать
  • Как вернуть состояние объекта?

    Denormalization
    @Denormalization
    $obj = new Example();
    $obj->variable = "Переменная";
    
    $anotherobj = new AnotherObj;
    $anotherobj->method($obj);


    Так, не?
    Ответ написан
    4 комментария