Задать вопрос
  • Как пушить на github чтобы не вводить каждый раз логин и пароль?

    bukinion
    @bukinion
    Некороткий мануал по SSH + GitHub & BitBucket (на Win, почти тоже и на Lin)

    Вначале надо найти ключи
    $ ls -al ~/.ssh
    # Спискок файлов в директории .ssh, если они есть
    # id_rsa.pub # Нам интересны эти два брата, точнее этот публичный код (паб)
    # id_rsa # Это для сверки с пабом


    Если их нет, то будем генерить, после чего ласково попросят пароль, он должен быть сложным, в конечном итоге вводится он будет только один раз при старте сессии.
    $ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
    # Enter file in which to save the key (/Users/you/.ssh/id_rsa): [Press enter]
    # Enter passphrase (empty for no passphrase):
    # Enter same passphrase again:


    Кстати, пароль можно и поменять:
    $ ssh-keygen -p # Введете старый, а потом новый.

    Консоль выведет следующее:
    # Your identification has been saved in /Users/you/.ssh/id_rsa.
    # Your public key has been saved in /Users/you/.ssh/id_rsa.pub.
    # The key fingerprint is:
    # 01:0f:f4:3b:ca:85:d6:17:a1:7d:f0:68:9d:f0:a2:db your_email@example.com


    Теперь надо добавить ваши ключи в ssh-агент
    Удостоверьтесь в том, что он у вас есть — запустите
    $ ssh-agent -s

    Должен быть следующий однострочный (!) вывод, номер pid будет другим, все остальное от лукавого:
    Agent pid 59566

    Если нет, то скорее всего в терминале другая оболочка, тогда:
    $ eval $(ssh-agent -s)
    Agent pid 59566


    Вот теперь можно добавить ключи в ssh-агент
    $ ssh-add ~/.ssh/id_rsa

    Далее, добавим ключи в VCS-сервисы github и bitbucket, для этого скопируйте содержимое id_rsa.pub, и вставьте в настройках своего аккаунта на VCS (например, "SSH and GPG keys" для Github). Активируем ключи.

    для github:
    $ ssh -T git@github.com

    чуть длинней, для bitbucket, вначале надо создать файл-конфиг, ~/.ssh/config, куда добавить следующие строки:
    Host bitbucket.org
    IdentityFile ~/.ssh/id_rsa # Тут приватный ключ!


    После чего запустить следующую команду:
    $ ssh -T git@bitbucket.org

    В каждом случае, если все пройдет успешно, то вы получите следующие сообщения:
    Hi #{username}! You've successfully authenticated, but GitHub does not provide shell access.


    или
    conq: logged in as tutorials.
    You can use git or hg to connect to Bitbucket. Shell access is disabled.


    К слову, что Github, что Bitbucket выдали мне в этот раз такое:
    Thу authenticity of host 'github.com (192.30.253.113)' can't be established.
    RSA key fingerprint is 12:12:12...12.
    Are you sure want to conecting (yes/no)?


    Ответил yes, консоль что-то ответила и все работает.

    Если же вы используете алиасы для хостов, то и активация должна быть через алиас:

    $ ssh -T git@alias


    Если работаете с Sourcetree (рекомендую для винды), то есть такой момент, что программа не принимает стандартный формат этих ключей и что бы работать с программой через ssh придется из полученного ключа (приватный) сгенерировать их в другом формате понятном putty. Для этого используется программа puttygen. Которая входит в поставку Sourcetree.


    Занудно, но уже финал близок, далее нам нужно настроить ~/.bashrc, которого на винде нет, именно он будет содержать инициализационные настройки для консоли и запускать ssh-агент, который будет включать ваши ключи, запоминать сессию:
    # Note: ~/.ssh/environment should not be used, as it
    #       already has a different purpose in SSH.
    
    env=~/.ssh/agent.env
    
    # Note: Don't bother checking SSH_AGENT_PID. It's not used
    #       by SSH itself, and it might even be incorrect
    #       (for example, when using agent-forwarding over SSH).
    
    agent_is_running() {
        if [ "$SSH_AUTH_SOCK" ]; then
            # ssh-add returns:
            #   0 = agent running, has keys
            #   1 = agent running, no keys
            #   2 = agent not running
            ssh-add -l >/dev/null 2>&1 || [ $? -eq 1 ]
        else
            false
        fi
    }
    
    agent_has_keys() {
        ssh-add -l >/dev/null 2>&1
    }
    
    agent_load_env() {
        . "$env" >/dev/null
    }
    
    agent_start() {
        (umask 077; ssh-agent >"$env")
        . "$env" >/dev/null
    }
    
    if ! agent_is_running; then
        agent_load_env
    fi
    
    # if your keys are not stored in ~/.ssh/id_rsa or ~/.ssh/id_dsa, you'll need
    # to paste the proper path after ssh-add
    if ! agent_is_running; then
        agent_start
        ssh-add
    elif ! agent_has_keys; then
        ssh-add
    fi
    
    unset env


    И снова не финал, скорее всего так как вы не пользовались SSH, то ваши уже существующие локальные репо будут работать по http/https, поэтому надо сменить адреса. Адреса удаленных репозиториев проверяются командой $ git remote -v. Для смены адресов git есть специальная команда: $ set-url, ввести следующее:
    $ git remote set-url origin git@github.com:USERNAME/OTHERREPOSITORY.git


    Вернуть все на Родину можно аналогично
    Ответ написан
    1 комментарий
  • Можно ли как-то выделить поселения на карте?

    NeiroNx
    @NeiroNx
    Программист
    Самое простое - ручками обрисовать полилинией.
    Ответ написан
    1 комментарий
  • Есть ли какое нибудь API с помощью которого можно получить координаты участка по кадастровому номеру?

    NeiroNx
    @NeiroNx
    Программист
    Есть pkk5.rosreestr.ru
    все до ужаса просто:
    последнее в сылке это кадастровый номер.
    https://pkk5.rosreestr.ru/api/features/1/18:8:2300...

    ответ в JSON только проекция EPSG:4326 а не привычная всем EPSG:3395

    Вот еще API https://pkk5.rosreestr.ru/arcgis/rest/services/Cad...
    Там и справка есть и много чего еще - для изучения и ковыряния

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

    Ragtime_Kitty
    @Ragtime_Kitty
    Если карта динамичная, то backdrop-filter, который, увы, работает только в сафари или вебките с флагами.

    Вот тут пара приемов чтобы его имитировать: https://iamvdo.me/en/blog/css-element-function#fak...
    А вот тут общая инфа: https://iamvdo.me/en/blog/advanced-css-filters

    Если карта статичная, то можно ее просто дублировать внутри блока и размазывать обычным фильтром. Хотя и динамичную можно скопировать, но надо будет ловить взаимодействия на карте и дублировать их внутри
    Ответ написан
    1 комментарий
  • Как сделать, чтобы фильтр не применялся к объектам на карте?

    0xD34F
    @0xD34F Куратор тега Яндекс.Карты
    .gray {
      -webkit-filter: grayscale(100%);
      -moz-filter: grayscale(100%);
      -o-filter: grayscale(100%);
      filter: grayscale(100%);
    }

    map.panes.get('ground').getElement().classList.add('gray');

    https://jsfiddle.net/8y0t6kjv/
    Ответ написан
    1 комментарий
  • Почему при уменьшении картинки с помощью css её качество теряется?

    Moskus
    @Moskus
    Если вы просто заставляете browser показать картинку меньшего размера, в действие вступают методы быстрой интерполяции, которые использует browser. Любое уменьшение не в целое число раз (например, в два или три) вызывает ситуацию, когда, например, три пикселя превращаются в два (когда вы картинку шириной в 600 пикселей показываете шириной 400). Цвета смешиваются, границы размываются.
    Предварительная генерация изображений для разных разрешений или использование векторных изображений решают эту проблему так или иначе. (Это не означает, что вы можете вставить растр в SVG и сказать, что теперь эта картинка - векторная.)
    Ответ написан
    1 комментарий
  • Почему при уменьшении картинки с помощью css её качество теряется?

    bootd
    @bootd Куратор тега CSS
    Гугли и ты откроешь врата знаний!
    В этом виноваты браузеры и алгоритмы рендеринга, ну как виноваты, просто вот так вот, это не то что бы прям вина или баги)))
    При уменьшении картинки, она уменьшается не попиксельно, а часто на доли пикселей, от чего получается размытость. Т.е. 1381px, уменьшаем и в какой-то момент картинка будет 801.1231231px что даст такой эффект.

    Так же работают и трансформации в браузере, такие как transform, когда вы при помощи translate захотите сделать блок, динамических размеров по центру например. То велик шанс, что иногда он будет размыт, т.к. смещение будет не в округлённых пикселях, а в дробный.

    Надеюсь понятно описал)))
    Ответ написан
    1 комментарий
  • Как проверить css на поддержку браузерами?

    Ответ написан
    Комментировать
  • Как правильно сверстать такой элемент?

    @DanKud
    Если устроить дефолтная граница в точку (dotted) то можно просто сделать <hr> с этим бордером:
    hr {
      border: none;
      border-top: 3px dotted #dbdbdb;
    }
    Ответ написан
    2 комментария
  • Как правильно сверстать такой элемент?

    Get-Web
    @Get-Web Куратор тега CSS
    Front-End Developer
    Flex контейнер внутри которого блок с точками занимает все свободное пространство. При этом можно ему задать любые свойства и фон:
    Ответ написан
  • Как отформатировать строку более правильно?

    VladimirAndreev
    @VladimirAndreev
    php web dev
    \substr будет получше, если нужны части строки по позиции
    Ответ написан
    1 комментарий
  • Как отформатировать строку более правильно?

    TommyV888
    @TommyV888 Куратор тега PHP
    -
    Используйте регулярные выражения:
    $str = '00000000000';
    $new_str = preg_replace('/^(.{2})(.{2})(.*)$/', '$1:$2:$3', $str);
    Ответ написан
    1 комментарий
  • Как передать параметры в событие js не изменяя контекст?

    hzzzzl
    @hzzzzl
    выглядит как-то слишком запутанно :)

    ноооо что если

    let objectCurrent = this; //Получаю объект класса вот тут для использования в обработчике
        btnArray.forEach((element) => {
          element.addEventListener('click',function(e) {
            objectCurrent.itemRemove = this.closest('.list-object__item');


    если вот это переписать как

    btnArray.forEach((element) => {
          element.addEventListener('click', (e) => {
            // и здесь кликнутый элемент будет доступен как e.target
            // а внешний this будет сохранен в objectCurrent 
            objectCurrent.itemRemove = <b>e.target</b>.closest('.list-object__item');
            let idRemove = <b> e.target</b>.getAttribute('data-id');
            let name =  <b>e.target</b>.getAttribute('data-title');


    UPD ага, в коде нельзя выделять болдом, но понятно что я имел в виду
    Ответ написан
    3 комментария
  • Как правильно сделать выборку из БД и настроить отношения в Laravel?

    AnatolTh
    @AnatolTh
    Full Stack Developer
    Странное решение вы выбрали. Не лучше ли создать поле в image_region с порядковым номером?

    UPD
    ->orderBy('image_region.id', 'asc')
    что бы получилось
    select `images`.*, `image_region`.`region_id` as `pivot_region_id`, `image_region`.`image_id` as `pivot_image_id` from `images` inner join `image_region` on `images`.`id` = `image_region`.`image_id` where `image_region`.`region_id` = 1 order by `image_region`.`id` ASC
    Ответ написан
    5 комментариев
  • Как отделить одно слово от другого?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    $text = preg_replace('/(?<!^|\s)([А-ЯЁ])/mu', " $1", $text);
    Ответ написан
    1 комментарий
  • Как отделить одно слово от другого?

    gobananas
    @gobananas
    finishhim.ru
    preg_replace('/([А-ЯЁ])/smu', " $0", 'БетонДерево')

    sandbox.onlinephpfunctions.com/code/0ec6a5805a756c...

    Ну только первый пробел поправьте...
    Ответ написан
    1 комментарий
  • Как правильно сделать ajax запрос?

    @kudis
    Bitrix developer
    Что, точно, нужно сделать:
    1. Всем чекбоксам дать один класс, например js-checkbox
    2. Присвоить каждому чекбоксу name
    3. Если name не уникальна между групп, то ввести data-атрибут с названием группы
    4. Установить период ожидания между запросами

    т.е. каждый чекбокс будет выглядеть так:
    <input class="js-checkbox" type="checkbox" id="<Уникальный ID>" name="<Название свойства>" data-type="<Название группы>" value="true" />
    <label for="<Уникальный ID чекбокса>">Лэйбл</label>

    например:
    <input class="js-checkbox" type="checkbox" id="check_atlas_concore" name="atlas_concore" data-type="ArrayCheck" value="true" />
    <label for="check_atlas_concore">Atlas Concore</label>

    тогда всё будет работать так:
    var timer = null;
    
    function pushData()
    {
        var data = {};
        var checkedBoxes = $('.js-checkbox:checked');
        var checkedBoxesQ = checkedBoxes.length;
    
        checkedBoxes.each(function(){
            var item = {};
            item[this.name] = true;
            data[$(this).data('type')] = item;
    
            if (!--checkedBoxesQ) {
                $.ajax({
                    type: 'POST',
                    url: '',
                    data: data,
                    success: function(msg) {
                    }
                });
            }
        });
    }
    
    
    $('.js-checkbox').on('change', function(){
        clearTimeout(timer);
        timer = setTimeout(pushData, 1000);
    });


    но, лучше всего обернуть весь фильтр в форму, например с id myFilter
    а в name каждого чекбокса включить название группы
    например:
    <input class="js-checkbox" type="checkbox" id="check_atlas_concore" name="ArrayCheck[atlas_concore]" value="true" />
    <label for="check_atlas_concore">Atlas Concore</label>


    тогда pushData будет выглядеть ещё лаконичнее:
    function pushData()
    {
        $.ajax({
            type: 'POST',
            url: '',
            data: $('#myFilter').serialize(),
            success: function(msg) {
            }
        });
    }
    Ответ написан
    1 комментарий
  • Почему скрипт выгрузки из Instagram долго выполняется?

    @Flying
    Время выполнения самого запроса к Instagram API вполне можно проконтролировать непосредственно, например через cURL:
    curl -v -o "https://api.instagram.com/v1/users/self/media/rece..."

    То что сам скрипт ничего не выводит, возможно говорит о том что происходит разрыв соединения по timeout'у (либо timeout самого PHP либо timeout веб-сервера). Для первого нужно смотреть значение параметра max_execution_time в php.ini (по-умолчанию 30 секунд) второй зависит от типа веб-сервера.

    Также "пустая" страница вполне возможна в случае если произошла фатальная ошибка, а вывод сообщений об ошибках выключен. Нужно посмотреть в лог ошибок PHP (который предварительно, возможно, надо включить) либо временно включить отображение ошибок через ini_set('display_errors', true);
    Ответ написан
    4 комментария
  • Как добавить в меню кол-во выбранных элементов в верстке?

    @boga-net
    Вы, как я понял, на ходу генерируете элементы. Сделайте пустые элементы над меню, например span, задайте им стили, чтобы они были вверху, через flexbox, grid, position absolute. Потом наполняйте их числом выбранных элементов через js.
    Чтобы элементы меню не уходили наверх, можно задать им align-self: flex-end. Или флекс энд прописать у их родителя,чтобы они прижимались к низу
    А почему у вас с абсолютом не получилось выровнять по центру? Задайте для before - left: 50%;, transform: translateX(-50%);
    Ответ написан
    1 комментарий
  • Почему в fancybox не появляется кнопка thumbs?

    @tyzberd
    он тянет миниатюры из тега img который должен быть в вашей ссылке.
    можно так https://codepen.io/anon/pen/wXBMwb?editors=1010
    Ответ написан
    1 комментарий