• Как сделать пропуск символа в регулярном выражении?

    0xD34F
    @0xD34F Куратор тега Регулярные выражения
    Получить цифры, между которыми есть точка, склеить их в одну строку:

    preg_match('~(\d+)\D*\.\D*(\d+)~', $str, $match);
    $result = implode('.', array_slice($match, 1));

    Или, сначала вырезать из строки лишнее, затем получить нужное:

    preg_match('~\d{2}\.\d{1,2}~', preg_replace('~[^\d.]~', '', $str), $match);
    $result = $match[0];
    Ответ написан
    2 комментария
  • Как настроить автоматическую подкачку коммитов?

    @dimuska139
    Backend developer
    Судя по тегу "gitlab", тебе надо на сервер установить gitlab-runner, настроить его, а в GitLab в настройках проекта его включить для проекта. В корне репозитория положить файл .gitlab-ci.yml с примерно таким содержанием:
    stages:
      - deploy
    
    deploy:
      stage: deploy
      environment:
        name: master
      script:
      - cd /app
      - git reset --hard
      - git pull origin master
      - source ./env/bin/activate
      - pip install -r ./requirements.txt
      - python3 manage.py migrate
      - python3 manage.py collectstatic --noinput
      - sudo supervisorctl restart ololo.backend
      - python3 manage.py clearcache
      - python3 manage.py warmcache
      only:
      - master
      tags:
      - linux
      - shell

    Тогда, при попадании коммита в master, раннер на сервере будет "узнавать" об этом и выполнять команды, описанные в секции script.
    Мой пример не совсем production-ready, так сказать, потому что состоит из одного шага - deploy. Если по-хорошему делать, то перед ним, как минимум, должен быть шаг запуска тестов, без успешного прохождения которых шаг deploy выполняться не будет. Это дает хоть какую-то гарантию, что код, попавший в master, будет работать на сервере. Имей это в виду)
    Ответ написан
    6 комментариев
  • Как настроить автоматическую подкачку коммитов?

    @askhat
    Git Hooks https://git-scm.com/book/en/v2/Customizing-Git-Git...

    Хуки бывают клиентскими и серверными. Могут выполняться до и после практически любого действия с репозиторием. Вам, скорее всего, нужен хук post receive.

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

    coderisimo
    @coderisimo
    Есть такая штука ХУКИ
    Есть собственные плюшки для подобного на bitbucket. Суть похожа, они легко настраиваются и работают
    Ответ написан
    Комментировать
  • Что происходит при слиянии веток (git merge)?

    Decadal
    @Decadal
    Представьте, что у вас два грузовика. Сначала они были одинаково пусты, потом вы загрузили в один грузовик пару мешков с песком, а в другой - мешок с углем.
    Условно первый грузовик - master, второй - dev.
    git checkout master
    git merge dev


    Теперь в master у нас мешки с песком и мешок с углем
    А в dev, как и прежде, только мешок с углем.

    Так что у вас не только те папки, которые в development, но и те, которые были в master.

    Если вы пушили ветку development, то при clone она тоже должна была стянуться, просто на данный момент git смотрит на master. Напишите git status чтобы проверить, в какой вы ветке, и переключитесь на нужную.
    Если ветки development нет, сначала вам предстоит её запушить.

    В случае, если в двух ветках разные файлы (не противоречащие друг другу), то merge просто размещает их все вместе, как будто вы скопировали файлы из одной ветки в другую.
    Но если в двух ветках в файлах с одинаковыми именами разное содержимое, выполняется auto-merging, т.е. попытка автоматически объединить два содержимых в одно. Эта операция успешна, например, если вы в одной из веток просто добавили в конец файла ещё одну строку, а в другой ветке не трогали файл вовсе.
    Если содержимое менялось и в той и в другой ветке, происходит конфликт. Git вставляет в место спорного контента что-то вроде
    <<<<HEAD 
    один контент
    <<< commit1111
    другой контент 
    <<<end

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

    @hatman
    Работаю в компании, где порядка 50 сотрудников удаленщики. Учет времени идет по Jira - время ставит сам программист. Учет идет так:

    Приходит готовая таска
    Идет код ревью
    Ревьювер чекает адекватность оценки времени
    Если есть вопросы, то уточняется, в чем была сложность

    За 3 года уволили только одного разраба, который "попал в пустыню печали и скорби", и просто две недели ничего не делал.
    __

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

    animhotep
    @animhotep
    function come(elem) {
    	var docViewTop = $(window).scrollTop(),
    		docViewBottom = docViewTop + $(window).height(),
    		elemTop = $(elem).offset().top,
    		elemBottom = elemTop + $(elem).height();
    
    	return ((elemBottom <= docViewBottom) && (elemTop >= docViewTop));
    }

    юзать так
    if (come("#section2")) {
        ...
    }

    сработает когда блок польностью появится
    Ответ написан
    3 комментария
  • Настройка Visual Studio Code?

    tomnolane
    @tomnolane
    профессиональный разработчик
    самые основные:
    Auto Close Tag - авто закрытие тегов
    Auto Rename Tag - переименование парных тегов
    Beautify - разжатие кода (из minify в стандартный вид)
    highlight-mathing-tag - подсвечивание парных тегов (нужно настроить в конфиге, чтобы поярче было)
    html snippets - сниппеты как в сублайме
    insert <br> tag - вставка тега новой строки через шифт+enter
    PHP Debug - деббагер для php (нужно настраивать)
    Debugger for Chrome - JS дебаггер
    vscode-icons - иконки для VSC
    minify - сжатие кода
    css auto prefix - автопрефиксы
    Insert Numbers - полезное расширения для вставки чисел определенного формата во множество мест с инкрементом
    ================
    ещё некоторые, которые я добавил и пользуюсь:
    apache Conf (для подсветки .htaccess)
    AutoFileName - дополнение пути (например для "requere" в node.js)
    Bookmarks - делать закладки в коде
    Bracket Pair Colorizer - подсвечивать парные скобки (квадратные, фигурные, прямоугольные, круглые) очень удобно
    gitignore - добавляет .gitignore файл под проект (node.js, docker, yii2, laravel и т.д.)
    GitLens — Git supercharged - показывает гит-коммиты в коде (и автора коммита, удобно в командной разработке)
    HTML Class Suggestions
    Live Server - открывает браузер, где в режиме "онлайн" видишь изменения в html
    Markdown Preview Enhanced - тоже самое, что и Live Server, но только для страниц с markdown разметкой
    Material Icon Theme - для красоты VSC)
    Monokai Dark Soda - моя любимая тема разработки
    MySQL Syntax - для подсветки синтаксиса sql
    PHP Intellisense -
    Quick gitignore - добавляет файл/директорию в gitgnore
    Regex Previewer - помогает в регуляркой
    SQL Server (mssql) - для работы с sql server
    SVG Viewer - просматривать SVG картинки
    Todo Tree - делать заметки, удобно
    Remote FS - для удаленного подключения по FTP (удобно, если несколько серверов), пример конфига:
    { 
        "remotefs.remote": {"site": {
            "scheme": "ftp",
            "host": "1************01",
            "username": "ad**********ain",
            "password": "Lv************xF",
            "rootPath": "/"
          },
          "site2": {
            "scheme": "ftp",
            "host": "17**********1",
            "username": "a*****************m",
            "password": "************O",
            "rootPath": "/"
          },
          "moy-yandex": {
            "scheme": "ftp",
            "host": "a***********u",
            "username": "a***************mone",
            "password": "1***************W",
            "rootPath": "/"
          }
      }


    UPD
    Есть ещё хорошее приложение: Gremlins. Он подсвечивает невидимые символы в коде. Но его нужно немного "допилить", чтобы показывал невидимый символ юникод u+feff (образуется часто, когда кодировка страницы UTF-8 with BOM)
    собственной как допилить я сам же описываю в своем вопросе: тут

    что касается сннипетов для php: бывает такое, что они не срабатывают и тут две причины: пользователь достаточно быстро жмет TAB (VSC не успевает ещё понять, что пользователь закончил ввод) и когда достаточно долго работаешь в VSC без перезагрузки последнего.

    ИМХО: рано или поздно эта проблема решиться. VSC стремительно развивается и такая проблема будет решена (до этого чтобы быстрее было - лучше написать сюда об этом)
    Согласен с Artem , с тем, что Brackets имеет некоторые вещи лучше и оптимизированнее, чем VSC, и я для Front-end чаще работаю в Brackets (в большей части из-за возможности видеть online изменения тут же в браузере). Но главный минус Brackets от VSC - при большой кол-во плагинов он очень-очень тупит, также мне не нравится работа Brackets-ftp.
    Послесловие:
    VSC ещё учится и становится лучше. Рано или поздно он обгонит и Sublime, Atom и другие IDE - это вопрос времени, потому что: 1) он open source 2) финансирует и ведет разработку Microsoft 3) бесплатен!!! и последнее камень в огород всем крупным IDE
    Ответ написан
    2 комментария
  • Не выполняется cron задача?

    @sasa_mi
    Немного интересуюсь ИТ
    А проблема может быть в простом, перевод строки должен быть в файле crontab после задачи.
    Всего лишь перевод на новую строку, понимаете?
    Сегодня опять напоролся на старую детскую проблему, долго думал :) пусть это останется тут, в следующий раз когда опять забуду, найду тут:)
    Ответ написан
    Комментировать
  • Как сверстать схему?

    Использовать псевдоэлементы . Или написать генератор на javascript ( к примеру используя react). еще есть вариант все это нарисовать на svg используя javascript. А про адаптив можно забыть. Или перестраивать это все под определённые разрешения или скрывать.
    Ответ написан
    Комментировать
  • Как уменьшить время выборки bitrix через GetList?

    winer
    @winer
    занимаюсь разработкой сайтов на 1c-bitrix
    Можно сделать в 2 запроса.
    1) получаем ID категорий в которых есть не нужные нам подписки
    2) Делаем запрос категорий исключая полученные в 1

    \Bitrix\Main\Loader::includeModule("iblock");
    $donateList = array(2698, 2699, 2700, 2705, 37155, 41371);
    
    $IBLOCK_ID = 7;
    $arSelect = Array("IBLOCK_SECTION_ID");
    $arFilter = Array(
        "IBLOCK_ID" => $IBLOCK_ID,
        "ACTIVE" => "Y",
        "PROPERTY_TYPE" => $donateList
    );
    
    $res = CIBlockElement::GetList(array("IBLOCK_SECTION_ID" => "ASC"), $arFilter, ["IBLOCK_SECTION_ID"], false, $arSelect);
    $blackListSections = [];
    while ($arItem = $res->Fetch()) {
        $blackListSections[] = $arItem["IBLOCK_SECTION_ID"];
    }
    
    $users_group = \CIBlockSection::GetList(
        array(),
        array(
            "IBLOCK_ID" => $IBLOCK_ID,
            "!ID" => $blackListSections
        ),
        false,
        array("ID")
    );
    //и т.д.
    Ответ написан
    Комментировать
  • Как в wp работает ajax?

    xakplant
    @xakplant
    Автор сайта xakplant.ru
    Для начала рекомендую вам мою статью. Там описано как вывести пост в модальном окне. Это немного не то, но поможет разобраться с ajax в wp. Вот ссылка .

    Далее. В начале статьи я описываю как работать с WP_query
    Вы будите изменять массив агрументов для него, чтобы получить ещё новости по событию.
    Примерно вы будете передавать массив
    $args = array(
    'post_type' => 'post',
    'offset'=> '' // отступ, сколько постов пропустить при запросе из базы 
    'posts_per_page'=> 10 // количество постов
    );


    Скорее всего вы просто будите менять offset. Если изначально не указать posts_per_page то количество постов будет такое как в настройках wp

    Про js.
    Рекомендую вот такую статью для того чтобы понять как на чистом js написать ajax для wordpress

    Ну так вот. Чтобы запоминать состояние прокрутки предлагаю вам устанавливать hash адреса
    window.location.hash = 2 // страница 2 например

    Когда пользователь будет попадать на страницу проверяйте hash и в зависимости от него отдавайте ему нужные записи. (Так можно пользователь будет грузить меньше данных и сможет переходить обратно если перешёл на статью)
    А при событии на которое повешена подгрузка записей изменяйте hash и делайте AJAX-запрос
    Ответ написан
    2 комментария
  • Какой путь изучения программирования выбрать?

    @akamap
    Подумай ещё раз, а оно тебе надо? Сам перешёл в разработчики после 30, но я в ИТ со школы..
    Коммерческая разработка - это не фан, а в большинстве случаев - рутина, дедлайны и пр. т.п. Не стоит идти в отрасль, если представления об этой профессии чересчур романтизированы (под воздействием фильмов, статей, рекламы), т.е. в ожиданиях: красивый код, большие деньги, успех. Разочарование придёт очень быстро, как в одном стихотворении: Ты увидишь, что Цель - далека и пуста, А Дорога - пребудет всегда.. Я часто вижу это разочарование на лицах вайтишников, которые к нам приходят на стажировку. Будь к этому готов. А по технической части вопроса - смотри рынок.. Удачи!
    Ответ написан
    4 комментария
  • Зачем изучать несколько языков программирования(c++, java)?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Во-первых, гипотеза лингвистической относительности утверждает, что чем больше языков знаешь, тем гибче и богаче твой логический аппарат. По своему опыту могу сказать, что это правда. Например изучение Lisp'ов существенно расширило мои возможности в других языках. Но мой опыт и мнение не так авторитетны, как авторов всемирно известного бестселлера "Программист-прагматик" - Эндрю Ханта и Дэвида Томаса, которые пишут: «Изучайте по крайней мере один новый язык ежегодно. Разные языки решают одни и те же проблемы разными способами. Изучив несколько разных подходов, вы сможете расширить свой кругозор и не погрязнуть в рутине.»

    Во-вторых, рано или поздно профессиональный рост java-программиста, например, неизбежно приводит его к необходимости глубоко понимать работу компилятора и виртуальной машины, а это невозможно без знания C++, на котором они написаны.

    В-третьих, java-программист свободно лазающий за ответами в исходники JVM, способный дебажить сборщик мусора, писать JNI-библиотеки и использовать Compiler API для метапрограммирования имеет больше предложений работы и более выгодные условия.
    Ответ написан
    4 комментария
  • Будет ли норм если много засунуть в массив?

    @ofigenn
    В вебворкере чанками получаешь и пишешь в индексДБ) и поменьше джейсона, бро)
    Ответ написан
    Комментировать
  • Будет ли норм если много засунуть в массив?

    alex-1917
    @alex-1917
    Если ответ помог, отметь решением
    планшеты и смартфоны начнут виснуть, а владельцы планшетов и владельцы смартфонов будут желать разработчику сайта гореть в аду...
    Ответ написан
    Комментировать
  • Как решить проблему с отображением слайдера Slick?

    @PerfectLab
    Попробуйте инициализировать слайдер после клика на таб:
    $(".slider").slick('reinit');
    Ответ написан
    8 комментариев