• Как связать ветки git?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    А чтобы связать ветки используется такая команда
    git branch --set-upstream-to=<внешний-репозиторий>/<внешняя-ветка> <локальная-ветка>

    ---------
    Но ты всё усложняешь. Если зачем-то вручную создал ветку, то и связь настроить придётся руками. Из вопроса не до конца понятно, что конкретно ты сделал. Предположу что ты клонировал на сервер свой репозиторий.
    git clone <URL>
    Такая команда автоматически создаст remote с именем origin в которой будет храниться URL вышестоящего репозитория, распакует главную ветку origin/main в локальную ветку main и сразу создаст связь между ними.

    Ты хочешь распаковать какую-то другую ветку и делаешь это сложным путем?
    git branch feature # создать пустую ветку с именем feature
    git switch feature # переключиться в эту новую ветку
    # но свежесозданная ветка не связана ни с какой внешней, поэтому следующей командой
    # придётся указать откуда и что скачивать
    git pull origin feature # влить внешнюю ветку origin/feature в текущую локальную ветку
    # но проще ветки сначала связать
    git  branch --set-upstream-to=origin/feature feature
    # и тогда заработает простой pull
    git pull

    Но тебе всё это не нужно на самом деле!
    Достаточно после клонирования просто написать
    git switch origin/feature

    Одна строчка сделает всё вышеперечисленное. Создаст локально ветку с таким же именем, распакует в неё содержимое внешней ветки и создаст связь между локальной и внешней веткой.
    Если потом, находясь в этой ветке, выполнишь короткую команду git pull, то увидишь что всё связано и скачивается откуда надо.

    И даже можно сделать ещё проще. Уже во время клонирования сразу распаковать нужную ветку.
    git clone --branch feature <URL>
    Ответ написан
    1 комментарий
  • Как при минимальных затратах мониторить наличие электричества на удаленном объекте (даче)?

    @TheBigBear
    СтарОдмины мы
    Смотря какая модель Микротика
    Многие из них умеют мониторить напряжение Здесь я давал ответ как я мониторю свои с отсылкой алярма на почту
    Дополню ответ
    Решения через интернет не совсем надёжные. Пропадет электричество во всем поселке в том числе и на интернет-оборудовании - Вы и не узнаете от этом

    Самое простое решение - простейшая GSM сигнализация будет отсылать СМСкой уведомления, в том числе и о пропадании электропитания. Заодно защита дачи, датчики движения и стекол
    Например ginzzu HS-K02BL у меня на одном объекте уже лет 8 работает
    Ответ написан
    3 комментария
  • Как при минимальных затратах мониторить наличие электричества на удаленном объекте (даче)?

    @beerchaser
    Для мониторинга использовал SNR-ERD-2.3. На микротике настроить опрос по SNMP и отсылку сообщения на почту при пропадании напряжения.
    Ответ написан
    1 комментарий
  • Возможен ли доступ к данным APC Back-UPS через программный модуль UPS для роутеров Mikrotik?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    возможен, если поддерживает )))))

    с конкретным железом разбирайся сам - вообще USB там для мониторинга , реализован ли полноценный Смарт и можно ли перепрошить - отдельная тема
    Ответ написан
    3 комментария
  • Будет ли ИБП работать в случае нагрузки меньше той минимальной, что указано в его спецификации?

    anthtml
    @anthtml
    Системный администратор программист радиолюбитель
    Тысячник для одного роутера - это из пушки по воробьям. Для роутера хватит и 300.
    А в идеале, если там будет только роутер, то брать не ИБП а ББП (блок бесперебойного питания) от сигнализации - они какраз рассчитаны на долгую жизнь от батареи, тогда как ИБП на "корректно завершить работу компа"

    Касательно вопроса - работать сможет, но это не расчетный режим, т.е. могут быть проблемы со стабилизацией тока/напряжения. Либо может самоотключаться, т.к. некоторые ИБП завершают свою работу при выключении питаемого оборудования.
    Ответ написан
    9 комментариев
  • Как взять из многомерного массива значение, имея ключи этого значения в другом массиве или строке?

    Bariss2013
    @Bariss2013
    Норм поцык!
    Могу предложить вот такое решение на основе рекурсии.
    /**
     * Получает из многомерного массива элемент по ключу в виде строки,
     * где каждый уровень вложенности отделен точкой, если такой элемент не будет найден,
     * то вернет значение по умолчанию
     *
     * @param $array - многомерный ассоциативный массив
     * @param $key - ключ, формата xxx.xxx.xx. Например: db.mysql.host
     * @param null $default
     *
     * @return mixed|null
     */
    function arrayGet(array $array, string $key, $default = null)
    {
        if (!empty($key)) {
            //разбиваем вложенность ключей на массив
            $levels = explode('.', $key);
            //получаем текущий уровень
            $currentLevel = array_shift($levels);
            //если текущий ключ существует
            if (array_key_exists($currentLevel, $array)) {
                //если значение текущего ключа является массивом, проверяем этот массив
                if (is_array($array[$currentLevel])) {
                    //рекурсивный вызов с перезаписанными аргументами
                    return arrayGet($array[$currentLevel], implode('.', $levels), $default);
                }
    
                //возвращаем значение по ключу, если оно скалярное
                return $array[$currentLevel];
            }
        }
    
        //возвращаем значение по умолчанию
        return $default;
    }
    Ответ написан
    1 комментарий
  • Почему Ansible при копировании папок, внутри которых еще папки, дает последним “пустые” права?

    @MurDzod
    Пока не разобрался почему, но запись вида
    mode: 0644
    не работает, как описано в документации.
    Второй вариант работает: '644'
    Ответ написан
    Комментировать
  • Есть ли готовые компоненты для Symfony (но можно и без привязки к нему), способные делать то, что делает Doctrine через рефлексию?

    Maksclub
    @Maksclub Куратор тега PHP
    maksfedorov.ru
    Прямой ответ на вопрос:

    1. Symfony Normalizer в составе Symfony Serializer
    https://symfony.com/doc/current/serializer/normali...
    А именно PropertyNormalizer:
    Symfony includes the following normalizers:
    ...
    PropertyNormalizer to normalize PHP object using PHP reflection.


    2. Zend Hydrator
    Дока: https://docs.zendframework.com/zend-hydrator/
    Код: https://github.com/zendframework/zend-hydrator

    Именно как Доктрина через рекфлексию, то это ReflectionHydrator
    Но в пакете есть и ряд других, не через рефлексию

    Например свежая Cycle ORM юзает именно этот пакет

    ..................................

    получили по API ответ от некоего сервиса, содержащий поля и их значения некоего объекта "Документ", и после на основании некоего конфига мы создаем новый инстанс класса Document, с заполненными свойствами нужными нам значениями. Свойства приватные
    Создавать через конструктор не вариант по своим причинам.

    А вот если прислушаться к вашей задаче, то что мешает создавать через фабричный метод (именованный конструктор)?
    Ответ написан
    1 комментарий
  • Как заставить PhpStorm воспринимать JsonException как выбрасываемое json_decode исключение?

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

    создайте в проекте файл .phpstorm.meta.php и поместите в него
    следующий код:
    <?php
    
    /**
     * (PHP 5 &gt;= 5.2.0, PECL json &gt;= 1.2.0)<br/>
     * Returns the JSON representation of a value
     *
     * @link https://php.net/manual/en/function.json-encode.php
     *
     * @param mixed $value   <p>
     *                       The <i>value</i> being encoded. Can be any type except
     *                       a resource.
     *                       </p>
     *                       <p>
     *                       All string data must be UTF-8 encoded.
     *                       </p>
     *                       <p>PHP implements a superset of
     *                       JSON - it will also encode and decode scalar types and <b>NULL</b>. The JSON standard
     *                       only supports these values when they are nested inside an array or an object.
     *                       </p>
     * @param int   $options [optional] <p>
     *                       Bitmask consisting of <b>JSON_HEX_QUOT</b>,
     *                       <b>JSON_HEX_TAG</b>,
     *                       <b>JSON_HEX_AMP</b>,
     *                       <b>JSON_HEX_APOS</b>,
     *                       <b>JSON_NUMERIC_CHECK</b>,
     *                       <b>JSON_PRETTY_PRINT</b>,
     *                       <b>JSON_UNESCAPED_SLASHES</b>,
     *                       <b>JSON_FORCE_OBJECT</b>,
     *                       <b>JSON_UNESCAPED_UNICODE</b>.
     *                       <b>JSON_THROW_ON_ERROR</b> The behaviour of these
     *                       constants is described on
     *                       the JSON constants page.
     *                       </p>
     * @param int   $depth   [optional] <p>
     *                       Set the maximum depth. Must be greater than zero.
     *                       </p>
     *
     * @throws JsonException
     * @return string|false a JSON encoded string on success or <b>FALSE</b> on failure.
     */
    function json_encode( $value, $options = 0, $depth = 512 ) {}
    
    /**
     * (PHP 5 &gt;= 5.2.0, PECL json &gt;= 1.2.0)<br/>
     * Decodes a JSON string
     *
     * @link https://php.net/manual/en/function.json-decode.php
     *
     * @param string $json    <p>
     *                        The <i>json</i> string being decoded.
     *                        </p>
     *                        <p>
     *                        This function only works with UTF-8 encoded strings.
     *                        </p>
     *                        <p>PHP implements a superset of
     *                        JSON - it will also encode and decode scalar types and <b>NULL</b>. The JSON standard
     *                        only supports these values when they are nested inside an array or an object.
     *                        </p>
     * @param bool   $assoc   [optional] <p>
     *                        When <b>TRUE</b>, returned objects will be converted into
     *                        associative arrays.
     *                        </p>
     * @param int    $depth   [optional] <p>
     *                        User specified recursion depth.
     *                        </p>
     * @param int    $options [optional] <p>
     *                        Bitmask of JSON decode options. Currently only
     *                        <b>JSON_BIGINT_AS_STRING</b>
     *                        is supported (default is to cast large integers as floats)
     *
     * <b>JSON_THROW_ON_ERROR</b> when passed this flag, the error behaviour of these functions is changed. The global error state is left untouched, and if an error occurs that would otherwise set it, these functions instead throw a JsonException
     * </p>
     *
     * @throws JsonException
     * @return mixed the value encoded in <i>json</i> in appropriate
     * PHP type. Values true, false and
     * null (case-insensitive) are returned as <b>TRUE</b>, <b>FALSE</b>
     * and <b>NULL</b> respectively. <b>NULL</b> is returned if the
     * <i>json</i> cannot be decoded or if the encoded
     * data is deeper than the recursion limit.
     */
    function json_decode( $json, $assoc = false, $depth = 512, $options = 0 ) {}
    результат:
    5dc3166be08d0938887803.png
    Ответ написан
    5 комментариев
  • PHPUnit: можно ли одновременно замокапить и класс, и интерфейс?

    Maksclub
    @Maksclub Куратор тега PHP
    maksfedorov.ru
    Не надо плодить классы. Воспользуйтесь тогда анонимным классом (для таких задач их и придумали) прямо в коде:
    new class implement YourInterface {
        // тут методы, которые интерфейс содержит
        // тут методы, которые вы будете вызывать
    }
    Ответ написан
    8 комментариев
  • PHPUnit: можно ли одновременно замокапить и класс, и интерфейс?

    @vldud
    Вроде бы не решается.

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

    petermzg
    @petermzg
    Самый лучший программист
    Фотообои с работающими людьми и воспроизведение записи клацанья клавиш. ))
    Ответ написан
    1 комментарий
  • Какой инструмент для совместного онлайн-проектирования баз данных выбрать команде из 3 человек?

    @comsomolec
    Можете рассмотреть dbdesign
    Если у вас один проект думаю подойдет
    Ответ написан
    Комментировать
  • Какой инструмент для совместного онлайн-проектирования баз данных выбрать команде из 3 человек?

    customtema
    @customtema
    arint.ru
    Возможно, покажется, что этот совет не по теме.

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

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

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

    А инструмент - бумага и фломастеры.
    Ответ написан
    2 комментария
  • Как поменять язык Woocomerce?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    По идее Woocommerce использует wp_lang и загружает нужный вам язык.
    Добавьте в wp-config.php
    define ('WPLANG', 'ru_RU');
    Также можете проверить директорию languages - plugins на наличие языковый файлов (po & mo). Будет называться примерно так: woocommerce-ru_RU.po woocommerce-ru_RU.mo
    Если что обновите вукомерц
    Ответ написан
    Комментировать
  • Как обернуть выделенный текст в кавычки в PhpStorm?

    @EugenCherniy
    File -> Settings -> Editor -> SmartKeys
    Включить Surround selection on typing quote oe brace
    Ответ написан
    1 комментарий
  • Скачать ватсап с официального сайта для виндовс 7?

    ipswitch
    @ipswitch
    IT-инженер
    Под Windows 7 прекрасно работает версия для Windows 8.

    Только учтите, что это не отдельное приложение по типу Telegram, а кривой недо-браузер. Можно вообще ничего не качать, а сделать ярлык для сайта https://web.whatsapp.com/
    Выглядит и работает одинаково!
    Ответ написан
    Комментировать
  • Взял первый заказ на UpWORK от индуса. Как разрулить проблемы?

    kumaxim
    @kumaxim
    Web-программист
    Поздравляю Вас с первым полученным опытом! У меня когда-то нечто похожее было.

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

    Конечно, это плохо, конечно, если ты взялся за работу ее надо довести до конца во что бы то ни стало, конечно, нужно удовлетворить клиента, однако, нужно понимать когда клиент тебе садится на шею и не позволять это.
    В целом ситуация такая, что ребята из Индии в качестве заказчиков хотят слишком много. Плюс таких заказов - из довольно легко взять, на них можно набить себе первый рейтинг, набрать историю работ. Я когда только начинал работал именно с такими заказами. Из 13 первых 4 я отменил из-за неадекватности. JSS колыхался от 97% до 69%. Потом, набрав историю работ, нашел нормальных ребят из западной европы, выровнял JSS до 94%, получил Top Rated.

    Отмечу, что Upwork подсвечивает любые емайлы вообще. Просто ставь галочку "игнорировать следующие 30 дней" и не парься об этом. Кстати, с номерами телефонов, помоему, тоже самое.

    Верификация или подтвержение профиля процедура стандартная. Когда я ее проходил, мне оператор кинул ссылку на видео-чат, я открыл ее. Я смотрел на какого-то Ахмена прямиком из Индии, а он смотрел на меня. Это продолжалось секунд 30. Потом, поняв что у кого-то из нас проблемы со звуком, он мне в чате задал пару вопросов, после чего мой профиль был разблокирован.
    Ответ написан
    Комментировать
  • Взял первый заказ на UpWORK от индуса. Как разрулить проблемы?

    coderisimo
    @coderisimo
    Я в подобных случаях поступал несколько иначе. Возможно это выглядит странно, но я не спешил открывать проект. Я писал заявку, затем предлагал ознакомиться с фронтом работ и даже пробовал что-то , без открытия работы на апворке. Заказ -фикс, так что вы в любом случае получите оговоренную сумму, но получите возможность оценить масштаб катастрофы )))) и в случае чего не ввязываться.
    Впрочем, данный подход не застраховал меня от похожей ситуации... )))) Увы. ))
    Ответ написан
    6 комментариев