• Почему Yii2 HttpClient не отправляет заголовки с именами в snake_case?

    @MarkLb Автор вопроса
    Название параметра должно состоять минимум из одного печатного символа (ASCII-коды от 33 до 126). Регистр символов в названиях не имеет значения. Заголовки с неизвестными именами должны игнорироваться. После названия сразу должен следовать символ двоеточия.

    Wiki

    Символы ASCII с кодом от 33 до 126в этом списке нижнего подчеркивания нет. snake_case не поддерживается.

    UPD: Всё же в данном списке — нижнее подчеркивание есть под №95:
    uJ05noY.png
    Но поделились ссылкой на документацию nginx, с разделом Missing (disappearing) HTTP Headers, который гласит: «NGINX will silently drop HTTP headers with underscores (which are perfectly valid according to the HTTP standard». И изменение snake_case мою проблему решило.
    Ответ написан
    3 комментария
  • Почему не работает "Find Usage" в PHPStorm?

    @MarkLb Автор вопроса
    "Invalidate Caches", "Repaire IDE" не помогли, даже усугубили - перестал ещё работать "Refactor => Rename".

    Попробовал отключить плагин Yii2 Support - и всё заработало: и переименование, и поиск.
    И что самое интересное - проблема началась 2 месяца назад, и примерно тогда я и установил плагин

    P.S. Сейчас вновь включил плагин, и пока всё вновь нормально работает. Возможно, проблема связана с конфликтом процедуры индексации и плагином.
    Ответ написан
    1 комментарий
  • Почему Yii2 не может внедрить зависимость, и выбрасывает NotInstantiableException?

    @MarkLb Автор вопроса
    Отбой. Догадался вызвать класс без DI, через new:
    public function __construct()
        {
            $this->buffer = new GoodsBuffer();
        }


    Получил ошибку от PHP. Забыл версию в консоли сменить:
    Exception 'ParseError' with message 'syntax error, unexpected 'array' (T_ARRAY), expecting function (T_FUNCTION) or const (T_CONST)'


    Надо было додуматься вызвать через new сразу - сэкономил бы час времени.
    Ответ написан
    Комментировать
  • Какое направление более востребовано?

    @MarkLb
    Лучше всего front-end, именно React. На край - QA Мануал/Автоматизация, но денег там меньше. Back-end ни в коем случае, максимум - Node.js. Фриланс ни в коем случае - не губите себе жизнь.

    Устроиться не проблема, после тренда на удаленку очень популярная схема:
    1. К Вам наверняка кто-то приходил в ВУЗ и предлагал работу - общайтесь с ними. Либо ищите коворкинги/IT-центры в городе(часто на этапах постройки, во всяких заброшенных заводах).
    2. Учите React на приемливом уровне Джуна.
    3. Местный HR готовит Вам "красивое" резюме, и активно ищет компании.
    4. Происходит собеседования в Зум/Скайп/др. Просто зачитываете то, что Вам пишет Синьор в месседжер.
    5. Вас продают за ~$1000-1500, берут комиссию ~20% месяц. Сидите и работаете.

    Повторить с 2(но до Миддла) до 5, когда повысите немного скилл. За последние 2 года человек ~20 устроили в городе 250k населения.
    Ответ написан
  • Как отделить where() и andWhere() condition в ActiveRecord Yii2?

    @MarkLb Автор вопроса
    Order::find()
        ->andWhere('date > UNIX_TIMESTAMP(CURDATE())')
        ->andWhere(['or', ['link' => $link], ['email' => $email]])
        ->count();


    Спасибо, Дмитрий Елисеев!
    Ответ написан
    Комментировать
  • Как решить ошибку при десерелиазиации объекта с массивом?

    @MarkLb Автор вопроса
    Решено: с помощью ArrayDenormalizer, и сеттера с PHPDoc с указанием типа данных массив объектов Products[].
    Правда, почему не сработал метод с addProduct() — остаётся вопросом.

    Десериализация:
    $encoder = [new JsonEncoder()];
            $extractor = new PropertyInfoExtractor([], [new ReflectionExtractor()]);
            $normalizer = [new ArrayDenormalizer(), new ObjectNormalizer(null, null, null, $extractor)];
            $serializer = new Serializer($normalizer, $encoder);
            /** @var $lead Lead  */
            $lead = $serializer->deserialize($data,Lead::class,'json');


    Сеттер для продуктов в классе Lead:
    /**
         * @param Product[] $products
         */
        public function setProducts(array $products)
        {
            $this->products = $products;
        }
    Ответ написан
    Комментировать
  • Как изменить параметр max_connections, когда его настройка в my.cnf игнорируется?

    @MarkLb Автор вопроса
    Определил настройку в файл: /etc/my.cnf.d/server.cnf, перезагрузил БД сервер и заработало.
    Ответ написан
    Комментировать
  • Как решить проблему сохранения файлов ImageUploadBehavior?

    @MarkLb Автор вопроса
    Загрузка в переменную Поведения делалась путем события beforeValidate(). Поскольку у меня все данные валидируются в форме и на сущность попадают уже готовые к работе - валидация была отключена, как следствие - событие не отрабатывало.
    Ответ написан
    Комментировать
  • Как админу не грубить пользователям?

    @MarkLb
    В плане всей ситуации:

    Профильные("рабочие") проблемы
    Преимущественно вопросы/проблемы у пользователей часто повторяются. Подготовьте шаблоны ответов на часто встречающиеся проблемы.
    Важно чтобы он:
    1. Был компактен, желательно оформлен как пошаговая инструкция.
    2. При возможности - имел иллюстрации.
    Совет: удобные и быстрые скриншоты

    Есть много готовых программ для скриншотов со стрелками, обводкой и текстом - так будет удобнее разъяснить пользователю что и как нажимать. Я использую старенький KISS.
    kiss_33kb.1576581886.png

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

    Непрофильные проблемы

    Желание сделать лучше квалифицированный отбор имеет смысла, но есть существенные проблемы:
    1. Старые сотрудники останутся. Если нет текучки - подобное решение только в далекой перспективе поможет.
    2. Если проблема не возникает на регулярной основе от преимущественного числа сотрудника - увеличение требований может нерационально сказаться на ЗП сотрудникам.

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

    Предложите сделать платные тренинги "неучам" после работы.
    Обоснование: у Вас будет мотивация этим заняться и таким образом компания будет работать эффективнее. Иначе выходит что из-за одного человека фактически стоит работа, при этом:
    * Крутится аренда
    * Растут расходники
    * Начисляется ЗП сотрудникам

    Таким образом, Вы только сэкономите деньги компании, а сами заработаете.
    Ответ написан
    2 комментария
  • Какие есть программы для учёта времени работы удалённого программиста?

    @MarkLb
    Могу порекомендовать ТаймДоктор. Отслеживает активность работы клавиатуры и мыши, делает скриншоты. Вручную можно удалить скриншот самостоятельно, также вручную добавить время.
    Ответ написан
    Комментировать
  • Как работают сервисы принятия СМС?

    @MarkLb
    Используются SIM-банки. Например такой.
    Ответ написан
    Комментировать
  • Влияет ли в 2018 году, покупка ссылок (на бирже) на продвижение сайта?

    @MarkLb
    Да, ссылки положительно влияют со стороны SEO. Биржи, особенно что-то вроде SAPE - не самый лучший вариант. Рекомендую смотреть в сторону линкбилдинга.
    Ответ написан
  • Как принимать платежи на сайте без ИП?

    @MarkLb
    Можете использовать агрегатор платежей FreeKassa, но там высокая комиссия.
    В плане Qiwi - используйте: https://qiwi.com/api - тут менее всего удобно, ибо нет уведомлений о новых платежах, но есть методы для проверки, так что также просто подключается.
    В плане WebMoney - можно использовать WebMoney Merchant(https://merchant.webmoney.ru/conf/default.asp), там не надо ИП, он работает с начального аттестата - получить можно за 10 минут через банковский платеж.
    В плане Яндекс.Деньги ответ выше дали, пользуюсь такими же методами.

    UPD: Qiwi добавили webhook'и, теперь можно без шаманаства с CRON получать данные.
    Ответ написан
    7 комментариев
  • Как развиваются веб стартапы в плане серверов и хранения данных?

    @MarkLb
    Зависит всё от тематики сервиса. Если это файлообменник - в первую очередь можно поработать над повторами файлов - хранить хэш файлов, к нему обращаться и не хранить повторы.

    Также можно хранить данные в Яндекс.Диск, Dropbox и тому подобное.

    Вводить лимитирование на скорость/объем.
    Ответ написан
    3 комментария
  • Стал работать по часам и обнаружил, что выходит 6 часов в день. Это нормально?

    @MarkLb
    Если Вы успеваете по срокам, к Вам нет претензий и Вы себя хорошо при этом чувствуете - к чему вообще задан этот вопрос?
    spoiler
    Похвастаться или ...?
    Ответ написан