Задать вопрос
  • Как убрать повторяющиеся слэши в .htaccess?

    @ShamblerR
    Дааю сразу все поскольку в свое время задолбало для каждого проекта делать все заново, по этому сейчас просто вставляю кусок и все.
    ############################################################################
    #### Cтандартный .htaccess для проектов студии Клондайк, версия 2.3     ####
    ############################################################################
    RewriteEngine On
       #  Директива включает редиректы.
    RewriteBase / 
       # Без директивы (.*) = /$1 будет /var/wwww/site/web/$1  с директивой  = /$1
    Options +FollowSymLinks
       # Разрешает переход по символическим ссылкам.
    
    ############################################################################
    #### Перенаправляем протокол https на http                              ####
    ############################################################################
    RewriteCond %{HTTPS} on
       # Проверяем наличие https в URL.
    RewriteRule ^.*$ http://%{SERVER_NAME}%{REQUEST_URI}
       # Перенаправляем протокол на http.
    
    ############################################################################
    #### Выбор основного зеркала (или с www или без www)                    ####
    ############################################################################
       # 1. Редирект с www на без www. (раскоментировать директивы пункта 1)
    #RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
       # Проверяем, содержит ли домен www (в начале URL).
    #RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
       # Перенаправляем URL на домен без www.
    ####
       # 2. Редирект без www на www. (раскоментировать директивы пункта 2)
    #RewriteCond %{HTTP_HOST} !^www\.(.*) [NC]
       # Проверяем, не содержит ли домен www (в начале URL).
    #RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
       # Перенаправляем URL на домен c www.
    
    ############################################################################
    #### Убираем повторяющиеся слеши (/) в URL                              ####
    ############################################################################
    RewriteCond %{REQUEST_URI} ^(.*)/{2,}(.*)$
       # Проверяем, повторяется ли слеш (//) более двух раз.
    RewriteRule . %1/%2 [R=301,L]
       # Исключаем все лишние слеши.
    
    ############################################################################
    #### Убираем слеши в конце URL для статических файлов (содержит точку)  ####
    ############################################################################
    RewriteCond %{REQUEST_URI} \..+$  
       # Если файл содержит точку.
    RewriteCond %{REQUEST_FILENAME} !-d   
       # И это не директория.
    RewriteCond %{REQUEST_FILENAME} -f
       # Является файлом.
    RewriteCond %{REQUEST_URI} ^(.+)/$      
       # И в конце URL есть слеш.
    RewriteRule ^(.+)/$ /$1 [R=301,L]     
       # Исключить слеш.
    
    ############################################################################
    #### Добавляем слеш(/), если его нет, и это не файл.                    ####
    ############################################################################
    RewriteCond %{REQUEST_URI} !(.*)/$
       # Если слеша в конце нет.
    RewriteCond %{REQUEST_FILENAME} !-f
       # Не является файлом.
    RewriteCond %{REQUEST_URI} !\..+$
       # В URL нет точки (файл).
    RewriteRule ^(.*)$ $1/ [L,R=301]
       # Добавляем слеш в конце.
    
    ############################################################################
    #### Убираем index.php, если он есть в конце URL                        ####
    ############################################################################
    RewriteCond %{REQUEST_METHOD} =GET
       # Выявляем GET запрос в URL (не POST).
    RewriteCond %{REQUEST_URI} ^(.*)/index\.php$
       # URL cодержит index.php в конце.
    RewriteRule ^(.*)$ %1/ [R=301,L]
       # Удалить index.php из URL.
    
    ############################################################################
    #### Конец общей части, далее следует собственные директивы .htaccess   ####
    ############################################################################
    Ответ написан
    5 комментариев
  • Что лучше использовать для фоновых заданий в Bitrix24 - Push and Pull или RabbitMQ?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    На этот вопрос неполучиться дать достоверный ответ, так как он зависит от большого числа переменных которые мы не знаем.
    Что за скрипт? Как быстро отвечает API? В каком окружении (apache, php-fpm) это развернуто?.

    Общий подход "на коленке" говорит - ни то и ни другое.
    Вы можете использовать штатные бизнес-процессы, просто первым действием должно быть "Пауза" хотя бы на 1 секунду, таким образом это прекратит выполнение бизнес-процесса в моменте и отправит его выполнение в агента, который в свою очередь выполнится либо на кроне либо ни хите после выполнения основного действия.
    Еще можно создавать backgroundJob, который запустит бизнес-процесс, вместо запуска напрямую, но здесь уже начинаются нюансы с обработкой ошибок.
    Ответ написан
    1 комментарий
  • Как реализовать очередь заданий на PHP?

    alekciy
    @alekciy
    Вёбных дел мастер
    Преложенные выше серверы очередей хорошо, но есть минус. Для данной задача оно избыточно. Как минимум придется раскуриться настройкой сервера и как с ним взаимодействовать.

    Предложенная схема с базой неплохая, но в ней потенциально заложена повторная проверка если п.2 запускается в несколько копий. Поэтому более правильный вариант это использовать Redis. У меня так: Как сделать «фоновый» парсинг?

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

    @v_prom
    лучше, будет, если php будет эти данные отдавать какой-то проге, которая будет это делать в много потоков (можно написать на c++ или python), а потом отдавать результат на страницу через ajax.
    Ответ написан
    Комментировать
  • В какой контейнер ставить сертификат Lent`Encrypt в NGINX-front или NGINX-backend?

    SignFinder
    @SignFinder
    Wintel\Unix Engineer\DevOps
    Во первых для вашего определения того, что вы называете "фронт" есть официальный термин - реверс прокси.
    И конечно же сертификаты должны быть на нем.
    Ответ написан
    Комментировать
  • В какой контейнер ставить сертификат Lent`Encrypt в NGINX-front или NGINX-backend?

    ky0
    @ky0 Куратор тега Nginx
    Миллиардер, филантроп, патологический лгун
    Можно делать по-разному, но задумайтесь сразу, как эти сертификаты будут обновляться (очевидно, нужен отдельный контейнер с certbot'ом) и как nginx будет узнавать, что ему нужно сделать релоад после обновления.
    Ответ написан
  • Тайм трекер для удалёнщиков?

    maxaus
    @maxaus
    Вошёл вайти и пока не вышел
    Когда-то работал на проекте, где Hubstaff был обязательным ( https://hubstaff.com ), потом периодически использовал Toptal Tracker ( https://www.toptal.com/tracker/ ), когда для себя было надо посчитать, сколько времени потратил на какие-то задачи.
    Ответ написан
    Комментировать
  • Как развернуть REST API на 1С-Битрикс?

    cyber-jet
    @cyber-jet
    Мой вариант реализации для собственного модуля. История мутная, слишком много вопросов, слишком мало ответов, документации для этого модуля в БУС до сих пор нет, лишь вот эти несколько абзацев, на предмет как можно пробросить свои контроллеры в REST Битрикс, удобно иметь схожие методы и схемы данных для SPA и приложения. Добавил в описание контроллера нужное, в адресной строке перешел к нужному методу и словил так-же wrong_authorization. Ни где нет описания как создавать токены непосредственно в БУС. Единственная зацепка, статья интерволги, и пример от MaxKozlov, с одной лишь разницей, другой путь к странице, не в /local/.., потому что это служебная папка для разработки, и не нужно ни чего добавлять в urlrewrite.php, так как в настройках модуля уже есть SEF_MODE = Y и массив шаблонов ссылок SEF_URL_TEMPLATES, только нужно сохранить код страницы в визуальном редакторе Битрикс(это важно), и нужные записи в urlrewrite.php пропишутся автоматом. После чего получилось создать входящий токен, но моего модуля в правах не было, выбрал iblock, в таблице базы данных с правами доступа к rest ручками переправил на название своего модуля, и всё заработал.

    Переходим по ссылке:
    https://сайт/rest/1/токен/имя:модуля.api.имякласса.метод
    ..и наслаждаемся результатом.

    имя:модуля.api - defaultNamespace, указанный в контроллере - докумантация.

    PS: Для понимания, то-же самое у меня получает SPA через интерфейс ajax
    https://сайт/bitrix/services/main/ajax.php?action=имя:модуля.имякласса.метод
    но там другая структура выполнения и вэб авторизация.
    Ответ написан
    Комментировать
  • Как развернуть REST API на 1С-Битрикс?

    @mishaSL
    Обратите внимание, чтобы Ваш SCOPE появился в списке прав доступа при создании входящего вебхука нужно сбросить кеш на сайте
    Ответ написан
    Комментировать
  • Как выбрать из таблицы нужный раут REST API?

    @rPman
    Это таблица роутов, вызывается на каждый запрос, настоятельно рекомендую продумать способ ее кеширования на бакэнде, отслеживая изменения в базе (если cgi то запрос на дату последнего изменения, если приложение-как-веб-сервер то через ивенты).

    Я бы однократно (на каждое изменение списка роутов в базе) формировал бы php скрипт или лучше единое регулярное выражение (скорость на порядки будет выше), который бы давал ответ, какой это именно роут (просто собрать все строки через | и каждому дать имя по его id)
    Ответ написан
    1 комментарий
  • Почему не активен деплой в PHPStorm?

    Decadal
    @Decadal
    Вам нужно настроить Mapping.
    Откройте настройки сервера для деплоя, выберите вкладку Mappings и введите \ (ну или путь к вашему проекту) в поле 'Deployment path on server'.
    Ответ написан
    Комментировать
  • Выбор ноутбука для ubuntu?

    xez
    @xez
    TL Junior Roo
    Нюанс один: поддержка сетевой карты / Wi-Fi.
    Обязательно уточняйте чипсет сетевого адаптера до покупки. На некоторые модели реалтека ужасно кривые дрова, либо их вообще нет.
    С остальным железом проблем возникнуть не должно.
    Ответ написан
    5 комментариев
  • Стоит ли мне поработать php-разработчиком, а потом набравшись опыта перейти на java?

    @Dementor
    программист, архитектор, аналитик
    Стоит ли мне работать php-разработчиком, а потом набравшись опыта перейти на java, будет ли опыт релевантным, не придется ли начинать все заново с понижением зарплаты?

    1) про качество вашего опыта - почитайте про навыки, которые можно получить за три года
    2) опыт не будет релевантным. Как я понял, теоретическая база у вас уже есть и вопрос только в практике. Для php и java рабочий опыт сильно отличен, даже если вы выберете узкую область бэкенда для веб-проектов. Как минимум, все знание библиотек и фреймворков умножается на ноль.
    3) понижение зарплаты в любом случае будет - если сегодня в вашем городе для java есть только джуновские вакансии с джуновской зарплатой, то почему вы думаете, что через год-два ситуация изменится?

    Если нужны деньги и опыт, то рекомендую фрилансерство. Даже если сильно напортачите и вместо денег получите плохие отзывы, то всегда можно сделать новый чистый профиль или сменить биржу - опыт у вас никто не отнимет и новые заказы сделаете быстрее и качественнее.
    Ответ написан
  • Стоит ли мне поработать php-разработчиком, а потом набравшись опыта перейти на java?

    402d
    @402d
    начинал с бейсика на УКНЦ в 1988
    Java какая ?
    Под Энтерпрайз или мобильную разработку ?
    Большой корреляции между пыхом и яво андроида не вижу.
    Php по сути линеен. Реквест прехуки роутер контролёр (модель) вьюшка постхуки.

    Мобильная разработка - это событийное мышление. Если такая ситуация наступила делай это. Ну и постоянно иметь в виду, вот это на главном потоке, а для этого используется фоновый поток и надо описать, что там дальше делать после его завершения.

    Опять же Котлин идёт на замену Яве.

    А классическая Ява для Бека или систем большого бизнеса по моему очень узкая ниша.

    ЗЫ ещё совсем разные допзнания между пхп и Явой. Веб технологии, оси , апач,муська. Против системных сдк платформы
    Ответ написан
    1 комментарий
  • Почему не запускаются VM на VirtualBox?

    leha_gorbunov
    @leha_gorbunov
    Программист
    Систему ты обновлял. Может не вчера, но перегрузился после обновления и все перестало работать.

    Удаляй шестую версию VirtualBox и устанавливай седьмую
    (на всякий случай бэкап сделай где у тебя виртуалки хранятся)

    sudo apt-get purge virtualbox* 
    sudo apt-get autoremove


    Скачивай седьмую версию https://www.virtualbox.org/wiki/Linux_Downloads
    Устанавливай и все работает.

    Мне вчера помогло.
    Ответ написан
    3 комментария
  • Как быстро изучить C#?

    @tukreb
    Быстро изучить просто.
    Придумывайте любой проект и начинаете его делать.
    И самое главное, вы должны делать это самостоятельно, без всяких тостеров.
    Книги вам помогут любые где есть просто базовые знания, а вот всякие ютуб каналы особо не помогут, может только чуть разобраться в фреймворках, но всё равно документация рулит.
    Если хотите создавать игры, то копайте движок Unity и его документацию.

    Сам процесс простой.
    1. Пишите как знаете проект, главное чтобы заработало как планируете, на сам код не обращайте особого внимания.
    2. Начинаете переписывать проект с полученным опытом из 1 пункта с использование новых знаний из прочтения книг по всяким архитектурам и паттернам.
    3. Повторяете в цикле первые 2 пункта до 11 класса каждый день тратя по 4 часа минимум.

    Весь ваш прогресс заносите через git на гитхаб, пригодится, когда будете искать работу.
    Ответ написан
  • Динамическое создание классов (PHP)?

    65536
    @65536
    Рекомендую пересмотреть архитектуру того, что вы делаете. Она должна базироваться на штатных возможностях языка, а не на мутных костылях
    Ответ написан
    Комментировать
  • Динамическое создание классов (PHP)?

    Roosso
    @Roosso
    Нетипичный программист
    Я бы везде префикс использовал.

    Вместо этого:
    $class = is_numeric(substr(trim($class), 0, 1)) ? ('_' . $class) : $class;

    Это:
    $class = "My_".$class;

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

    @aol-nnov
    git fetch origin
    git checkout -b <название ветки> origin/<название ветки>


    документация тут: https://git-scm.com/book/en/v2
    Ответ написан
    Комментировать
  • Как стянуть ветку из удаленного репозитория?

    Krasnodar_etc
    @Krasnodar_etc
    fundraiseup
    Почему не получается?
    Только после checkout надо pull сделать
    Ответ написан
    1 комментарий