• Как конвертировать GoogleMaps координаты в 2GIS координаты и наоборот?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Преобразует любые на входе в универсальные:
    class CompatibleBounds {
      northEast = [0, 0];
      southWest = [0, 0];
    
      constructor(bounds) {
        Object.assign(this, bounds);
      }
    
      static new(bounds) {
        return new this(bounds);
      }
    
      get south(){ return this.southWest[1] }
      get west(){ return this.southWest[0] }
      get north(){ return this.northEast[1] }
      get east(){ return this.northEast[0] }
      set south(value){ this.southWest[1] = value }
      set west(value){ this.southWest[0] = value }
      set north(value){ this.northEast[1] = value }
      set east(value){ this.northEast[0] = value }
    }
    
    const compatibleBounds = CompatibleBounds.new({
      "south": 43.106491921792255,
      "west": 76.71745650634767,
      "north": 43.4065384633472,
      "east": 77.13974349365236
    });
    // или
    const compatibleBounds = CompatibleBounds.new({
      "northEast": [
        76.92894332280319,
        43.25695003829279
      ],
      "southWest": [
        76.92825667730312,
        43.256449960663694
      ]
    });
    
    // на выходе универсальный динамический объект:
    compatibleBounds.southWest = [1, 2];
    console.log(compatibleBounds.south); // 2
    
    compatibleBounds.south = 3
    console.log(compatibleBounds.southWest); // [1, 3]

    Но если действие требуется одноразовые, то лучше руками перегнать один раз.:)
    Ответ написан
    Комментировать
  • Как найти cron задачу?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    У вас задания выполняются от root'а.
    Смотрите в /etc/crontab, /etc/cron.d/* или в sudo crontab -l
    Ответ написан
    Комментировать
  • Как на нескольких сайтах WP сделать единую базу юзеров?

    vndrussia
    @vndrussia
    Вроде разработчик,а вроде и нет
    Самый простой варинат,это переписывать сис-му авторизации или же писать свой плагин,чтобы при вводе логина/пароля на авторизацию,проверяло данные пользователей с "главной базы" и если там есть такой пользователь проводить авторизацию.

    Либо же путем указывания констант в wp-config.php
    define( 'CUSTOM_USER_TABLE', $shared_table_prefix . 'my_users' );
    define( 'CUSTOM_USER_META_TABLE', $shared_table_prefix . 'my_usermeta' );

    https://wordpress.org/documentation/article/editin...
    Данная процедура нужна для обоих сайтов + создать сами таблицы.

    Дополняю статьей:
    https://wpmag.ru/2014/wordpress-multisite/
    И плагин:
    https://en-gb.wordpress.org/plugins/external-login/
    Ответ написан
  • Как настроить интернет экваринг от ВТБ в Битрикс?

    @koder_1
    Битрикс программист
    Писать разработчикам модуля и в банк.
    Ответ написан
    Комментировать
  • VCS в квадрате. Можно ли с помощью Git контролировать состояние другого Git-репозитория?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Нет, рекурсия работать не будет. Гит увидит, что внутри каталога лежит вложенный репозиторий и проигнорирует его. А в своей базе пометит этот подкаталог как поддерево (subtree), чтобы не сломать.

    Вы пытаетесь соорудить какой-то жуткий костыль только лишь потому, что поленились изучить инструмент, в котором работаете. Поэтому для вас Git сейчас представляется как некая шайтан-машина, которой вы скармливаете команды, которые не понимаете, и в результате получаете ещё более непонятные «неожиданные результаты». Просто потратьте несколько дней, чтобы изучить азы. Не зубрите непонятные команды, а постарайтесь понять логику гита. А она — эта логика предельно проста и гениальна.

    не является сложной задачей что-либо сломать в своем проекте

    Сломать что-то в гите довольно сложно. Вам может только показаться что всё сломалось, но это лишь потому, что вы не понимаете, что делаете.

    каким-то образом снес половину коммитов

    Коммиты в гите — это неизменяемые сущности. Можно лишь создать новые «на замену», но старые не исчезают. Коммиты невозможно удалить без специальных команд очистки мусора.
    Вам показалось что коммиты исчезли, но на самом деле они все остались в репозитории, вы просто их не видите в текущей ветке. Но всё легко откатывается назад, используя журнал Reflog.

    Поэтому было бы неплохо как-либо сохранять прошлые версии Git репозитория

    Reflog это и делает, по сути. Это журнал, который хранит указатели на все состояния проекта, в которых вы когда-либо находились ранее. И эти состояния сами по себе не исчезают, так что вы всегда можете откатиться назад в любое место.

    Мой вам совет: Пройдите 16 коротких бесплатных уроков и полу́чите просветление.
    Ответ написан
    2 комментария
  • Как определить зашифрована ли строка с помощью функции openssl_encrypt или не зашифрована?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Как определить зашифрована ли строка с помощью функции openssl_encrypt или не зашифрована?

    Такого метода вобщем-то нету. Но если openssl_encrypt возвращает строку в кодировке base64 - то эта строка будет
    иметь характерный "хвостик" в виде символов равно (padding) для добивания строки кратного байтам размера.
    И все прочие символы имеют равномерное (шумящее) распределение.

    Но если я прикольнулся и изначально положил в openssl_encrypt такую подобную вышеуказанной, то тогда
    нет возможности определить была она зашифрована, или я просто прикольнулся.
    Ответ написан
    Комментировать
  • Почему при удалении куки возникает ошибка Warning: Cannot modify header information?

    delphinpro
    @delphinpro Куратор тега PHP
    frontend developer
    Ответ написан
    Комментировать
  • Чем отличается php код запускаемый cron от обычного php кода?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега PHP
    Ничем. Это, внезапно, тоже "обычный php код".
    А вот среда запуска отличается - например, в CLI режиме применяется отдельный php.ini.
    Ответ написан
    7 комментариев
  • Файл конфига php?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Очень хороший вопрос, только вы путаете файл с настройками и файл первоначальной настройки приложения.
    Вам нужны оба.
    1. файл c настройками
    Их должно быть два.
    Первый файл называется config.sample.php, он содержит только один массив, который заполняется пустыми/дефолтными значениями и может содержать не только настройки БД но и содержать другие секции:
    <?php
    return [
      'db' => [
        'hostname' => '',
        'username' => '',
        'password' => '',
        'database' => '',
      ],
    ];

    Этот файл добавляется в репозиторий.

    Второй файл называется config.php и он создается руками каждый раз при установке CMS на новом сервере. В него пишутся актуальные настройки для каждого сервера.
    Этот файл не добавляется в репозиторий (а добавляется, соответственно, в .gitignore).

    2. Файл первоначальной настройки приложения.
    В него идут команды, которые пишутся на любой странице: подключение к БД, старт сессии, всякие инклюды и прочее. Кроме того, в этом файле должен быть код
    if (!file_exists('config.php'))
     {
         $msg = 'Создайте файл config.php на основе config.sample.php и внесите в него настройки';
         throw new RuntimeException($msg);
     }


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

    И вот этот файл, назовем его init.php, уже и подключаем во все остальные файлы.

    Кстати, начиная с 8 версии РНР можно писать просто
    $conn = mysqli_connect(...$config['db']);
    В этом случае ключи массива $config['db'] будут использоваться в качестве имен параметров функции - очень удобно
    Ответ написан
    Комментировать
  • Что такое upstream в Git?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Гит — это распределенная система. Мы можем иметь много равноправных репозиториев и обмениваться информацией между ними. Тот репозиторий, в который мы сейчас коммитим, будет локальным. А другие репозитории, в которые отправляем (push) или из которых получаем (fetch), они внешние (вышестоящие, upstream, remotely)
    Часто говорят удаленные, но это не очень уместный перевод слова remote в данном контексте. Потому что появляются странные формулировки типа «удалить удаленный»

    Именем upstream ещё принято обозначать исходный репозиторий, от которого мы сделали форк на GitHub, так как имя origin уже занято и указывает на форк. Поэтому адрес исходного репозитория, при необходимости, сохраняем в переменной upstream. В данном контексте это просто традиция, и назвать ссылки на внешние репозитории мы вольны как угодно. Команда git remote лишь создаёт переменные, в которых мы храним URL внешних репозиториев, чтобы затем использовать имя переменной в командах, вместо того, чтобы писать длинный URL.
    Ответ написан
    Комментировать
  • Почему не срабатывает querySelectorAll()?

    @zkrvndm
    Софт для автоматизации
    Это вам не jQuery) Надо в цикле перебрать все элементы массива и отдельно на каждый элемент навесить обработчик. Если хотите, чтобы по волшебству обработчик на все элементы сам приклеился, используйте jQuery.
    Ответ написан
    Комментировать
  • Как обойти капчу при при парсинге на PHP?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Конструкция парсера незамысловата

    Вы действительно думали, что можно просто так прийти и 3 строчками кода спарсить ресурсы, где работают отдельные команды для того, чтобы их не парсили?

    Подскажите, пожалуйста, что можно сделать, чтобы спарсить информацию?

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

    Melkij
    @Melkij
    PostgreSQL DBA
    $_SERVER['REMOTE_ADDR']

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

    @koder_1
    Битрикс программист
    Как-то и не понятно, в чём вопрос. Если в плане дизайна сайта, то делается два разных меню, в одном категории, в другом коллекции.
    Если про организацию структуры базы данных, то заводится еще сущность коллекция (вдруг захотите в коллекции выводить описание, сео-теги, заголовки),
    и в товаре привязка к коллекции. Страница коллекции это по сути описание коллекции и список товаров, отфильтрованных по полю коллекция.
    Ответ написан
    Комментировать
  • Зачем в данной функции нужны круглые скобки?

    XanXanXan
    @XanXanXan
    Чтобы фигурные скобки воспринимались как возврат объекта, а не как тело функции.
    Ответ написан
    Комментировать
  • Какое различие между этими функциями?

    Alexandre888
    @Alexandre888
    Javascript-разработчик
    1. «Function expression» https://learn.javascript.ru/function-expressions
    2. «Function declaration» https://learn.javascript.ru/function-basics

    о различиях по первой ссылке
    Ответ написан
    Комментировать
  • Как убрать отступ у кода и оставить только сам код?

    delphinpro
    @delphinpro
    frontend developer
    Вот так взять и убрать

    ...
                <code>
    Qua in vita tantum abest ut voluptates consectentur, etiam
        curas, sollicitudines, vigilias perferunt optimaque parte
      hominis, quae in nobis divina ducenda est, ingenii et mentis
            acie fruuntur nec voluptatem requirentes nec fugientes
       laborem.
    
      Modo etiam paulum ad dexteram de via declinavi, ut ad
    Pericli sepulcrum accederem.
    </code>
    Ответ написан
    2 комментария
  • Что изучать после пайтона?

    phaggi
    @phaggi
    лужу, паяю, ЭВМы починяю
    Что изучать после трактора?
    Вождение трактора.
    Ремонт трактора.
    Навесное оборудование на трактор.
    Применение трактора в сельском, городском хозяйстве, на производстве, добыче полезных ископаемых, покорение Гималаев на тракторе, построение своего трактора, гонки на тракторах, моделирование тракторов 1:43, продажа и страхование тракторов, обучение других тракторам, написание книги о тракторах, утилизация тракторов.
    Ответ написан
    2 комментария
  • Как узнать, падал ли сайт apache2 + cloudflare?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Не знаю как и что у CloudFlare, а Apache точно логирует все обработанные запросы в файле access.log, с временной меткой и т.д. Догадайтесь, где можно посмотреть запросы в нужный момент времени...
    Ответ написан
    Комментировать
  • Как объединить ассоциативных массива по значению полей?

    profesor08
    @profesor08 Куратор тега PHP
    function merge($arr) {
    	$map = array_reduce(array_merge(...$arr), function($map, $item) {
    		$map[$item["date"]] = ($map[$item["date"]] ?? 0) + $item["qty"];
    		
    		return $map;
    	}, []);
    	
    	return array_map(function($key) use ($map) {
    		return [
    			"date" => $key,
    			"qty" => $map[$key],
    		];
    	}, array_keys($map));
    }


    Упарываться можно по разному, например смапить по ключу, а потом переформировать в нужную структуру.
    Ответ написан
    Комментировать