Задать вопрос
  • Как склонировать ветку на свой домашний компьютер через ssh если локальная разработка проводилась на другом компьютере?

    karabanov
    @karabanov
    Системный администратор
    Сгенерируй SSH ключ на домашнем компьютере ssh -t ed25519
    Добавь публичную часть ключа в свой аккаунт на GitHub
    После этого сможешь клонировать.

    К каждого устройства должен быть свой ключ. Приватный ключ не должен покидать устройство на котором он был сгенерирован.
    Ответ написан
    1 комментарий
  • Могут ли p2p сети работать, если все пользователи имеют серые IP?

    @rPman
    Вообще без каких либо опор с белыми ip.
    тогда не смогут
    tcpip требует чтобы кто то к кому то по ip адресу подключился

    но возможна ситуация когда с однократно с помощью белого ip клиент подключился к другому клиенту, который открыл порты на роутере с помощью upnp, запомнил всех таких клиентов и передал весь их список (id_client:ip:port) всем клиентам.

    Если оперативно передавать информацию об изменениях ip адресов клиентов (такие клиенты все еще помнят адреса других и при смене своего адреса тут же сообщают об этом другим) то это облако клиентов сможет существовать в принципе без сигнального сервера (точнее сигнальными серверами могут являться другие клиенты)

    Если клиент на долго отключится от этой сети, может получиться что все другие клиенты сменят ip адрес и ему некуда будет подключаться, но чем больше клиентов в сети тем больше шансов что появится клиент с постоянным ip адресом.

    p.s. udp подключение позволяет подключиться к чужому подключению без наличия на роутере поддержки upnp
    Ответ написан
    Комментировать
  • Клиент присылает 100500 правок, при этом проект завершен на 99%. Как быть?

    DevMan
    @DevMan
    правки бывают двух типов:
    1. исправление косяков.
    2. дополнительные фичи/изменение уже реализованных.

    1 делается бесплатно и как можно быстрее.
    2 делается за отдельные деньги. или не делается вообще и работа с клиентом прекращается.

    есть ещё 3: дать клиенту скидобан на конкретно оговоренный объем дополнительных работ.

    это из основного. есть ещё методы, но они уже для постоянных клиентов.
    Ответ написан
    1 комментарий
  • Как создать ветку -@#%=]! в git?

    Lynn
    @Lynn
    nginx, js, css
    Ну развлекайтесь

    $ git update-ref 'refs/heads/-@have-fun!' @^{commit}
    $ git switch -- '-@have-fun!'
    Switched to branch '-@have-fun!'
    $ git branch -v
    * -@have-fun! 734a4af Docker
      master      734a4af Docker
    Ответ написан
    Комментировать
  • Как добавить чужую ветку в проекте?

    @schepetkov
    remotes/origin/develop означает, что ветка есть в удалённом репозитории.
    Достаточно просто переключиться на ветку:
    git checkout develop
    Если ветка есть локально - гит переключится на неё, если её нет локально, но она есть в удалённом репозитории - гит её скачает и переключится на неё (и ветка появится локально). Если ветки нет ни локально, ни удалённо - будет ошибка.
    Ответ написан
    Комментировать
  • Алгоритм эффективного размещения?

    wataru
    @wataru Куратор тега Алгоритмы
    Разработчик на С++, экс-олимпиадник.
    *offtopic* Лет 15 назад делал такое для записывания анимешных сериалов на CD-диски, только там было сложнее, потому что сериалы можно разбивать по нескольким дискам и записывать можно толко сериалы целиком. Эх... было время. Сейчас эти 300 дисков даже и прочитать-то нечем. И исходники пропали лет 10 назад =(.

    Как вам уже написали - эта задача о мульти-рюкзаке. Простого и эффективного решения у нее нет.

    Однако, на практике, скорее всего, вам не нужно оптимальное решение - нужна лишь его некоторая аппроксимация. Посмотрите задачу о рюкзаке. Там есть очень простое динамическое программирование с параметрами вида "можно ли используя файлы с 1 по i-ый заполнить ровно k (мега|кило)байт"

    Потом сморите в конце массива для всех файлов - это оптимальные заполнения одной флешки.

    Удалите файлы определенные на эту флешку из рассмотрения и повторяйте процесс.

    Можно навесить сверху полный перебор с отсечениями. Из массива ДП идля задачи о рюкзаке можно случайным образом получить несколько хороших заполнений.

    Потом в переборе пробуйте разные варианты, запускайтесь рекурсивно. Какой-то ответ будет найден моментально. Выходите из перебора, если текущее количество флешек/общее свободное место/сумма квадратов свободных мест превысило оптимальное найденное пока что.

    Для ускорения можно округлить размеры файлов до мегабайта. Чем меньше разрешение - тем быстрее будет работать ДП. Еще можно отдавать предпочтение большим файлам в начале.

    Альтернативно - составьте задачу целочисленного линейного программирование (integer linear programming) и натравите на нее какой-то из солверов. Они сейчас очень продвинутые. Правда тут уж как повезет. Может на вашей задаче вы ответа так и не дождетесь. В качестве переменных берите, что такой-то файл относится к такой-то флешке. Сумма по каждому файлу - ровно один. По каждой флешке сумма размеров файлов * на переменные <= размер флешки. Сумма свободных мест - минимизируется.

    Возможно, можно составить квадратичную целевую функцию, я не знаю, что сейчас солверы умеют. Гуглите quadratic integer programming solver.

    Если хотите минимизировать количество флешек, то можно завести еще переменные - занята ли флешка. Уравнения тут - эта переменная >= всех индикаторынх переменных для всех файлов для этой флешки. Целевая функция - сумма всех переменных занятости флешек.
    Ответ написан
    Комментировать
  • Что прочитать для исчерпывающего понимания работы сети?

    vvpoloskin
    @vvpoloskin Куратор тега Компьютерные сети
    Инженер связи
    Вот Подборка на любой уровень. Я начинал с Таненбаума.
    Ответ написан
    Комментировать
  • Как сделать функцию, которая выполнится только один раз?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Пусть функция перезаписывает себя пустой функцией:

    function one() {
      console.log('AAAAAAAAAA');
      one = () => {};
    }

    Или, можно как декоратор это дело оформить:

    function once(f) {
      let called = false;
    
      return function() {
        if (!called) {
          called = true;
          return f.apply(this, arguments);
        }
      };
    }
    
    const one = once(function() {
      console.log('AAAAAAAAAA');
    });
    Ответ написан
    Комментировать
  • Есть ли достойная альтернатива MacBook Pron 2012?

    @Ruma7a
    Pron такая штука, индивидуальная, нельзя просто так взять и посоветовать альтернативу :)

    А почему бы этому мощному ноуту не быть скажем, Dell'ом?

    Взгляните на серию XPS или более игривые Alienware
    Ответ написан
    3 комментария
  • Можно ли починить клавиатуру ноутбука?

    Ремонту подлежат, но это долго и геморно. Разбираете полностью до прозрачных пленок на которых дорожки. Смотрите какие не работают и там ищите/вызваниваете обрыв. Если не работают несколько смежных то ищите общею дорогу. Далее берете контактол (автомобилисты должны знать что это) и проводите ровный и тонкий слой. Через 10-20 мин контакт будет нормальным, полное высыхание за сутки. Не один десяток клавиатур восстанавливал данным способом.
    Ответ написан
    Комментировать
  • Десятимерный массив из строки (JS)

    iStyx
    @iStyx
    Just proof of concept:

    <?php
    
    $str = "ЭНИ-601[2к[10Вт;20Вт];4к[10Вт;20Вт;30Вт];8к[70Вт;80Вт]];";
    
    $str = preg_replace("#([а-яА-Я\d\-]+)#u","\"\$1\"",$str);
    $str = str_replace(array("[","]"),array(":{","}"),$str);
    $str = preg_replace("#\{([^{};]+?(;[^}]+?)*?)\}#u","[\$1]",$str);
    $str = str_replace(";",",",$str);
    $str = '{'.substr($str,0,-1).'}';
    
    print_r(json_decode($str,true));
    echo PHP_EOL;
    
    


    Array
    (
        [ЭНИ-601] => Array
            (
                [2к] => Array
                    (
                        [0] => 10Вт
                        [1] => 20Вт
                    )
    
                [4к] => Array
                    (
                        [0] => 10Вт
                        [1] => 20Вт
                        [2] => 30Вт
                    )
    
                [8к] => Array
                    (
                        [0] => 70Вт
                        [1] => 80Вт
                    )
    
            )
    )
    
    Ответ написан
    2 комментария
  • Несколько вопросов о свойствах TCP протокола

    @SkyKos
    По первому вопросу — в заголовке TCP нет флага, сигнализирующего о фрагментации пакета (в отличие от IP), а также есть чексумма, которая не будет валидной в случае, если пакет принят не полностью. Фрагментацией пакетов занимается уровень IP.
    Ответ написан
    Комментировать