Пользователь пока ничего не рассказал о себе

Наибольший вклад в теги

Все теги (19)

Лучшие ответы пользователя

Все ответы (10)
  • Почему в браузере автоматически появляются отступы с боковых сторон?

    @sidorchik
    Браузер по умолчанию задаёт отступ странице: цсс-свойство margin для хтмл-тега body.

    Чтобы убрать ненужный отступ, считается плохой практикой писать следующий цсс:
    * {
        margin: 0;
        padding: 0;
    }

    Причина — добавляет ненужного кода элементам. У большинства и так нулевые дефолтные отступы, а у других (например, заголовков, списков) обычно задаются свои.

    Опытные ребята обнуляют отступы и другие стили c помощью reset.css или normalize.css. Минусы такого похода:
    1. Не делается ничего из того, что хочет ваш дизайнер.
    2. Половина описанных элементов не используется.
    3. Повышается сложность чтения и объём байтиков: браузер добавляет стили по умолчанию, рисет всё обнуляет, вы добавляете своё. В инспекторе — портянка зачёркнутых свойств.
    4. Неуниверсально. Если захотите использовать блоки повторно, на другом проекте всё сломается. Чтобы починить, нужно будет искать старый рисет.


    Яндекс советует не использовать селекторы на звёздочку, не сбрасывать стили, а писать универсальные блоки. Ваш случай:
    .page {
        margin: 0;
    }

    <body class="page">

    Источник
    Ответ написан
    1 комментарий
  • Как узнать ближайшую станцию метро к определённому адресу?

    @sidorchik Автор вопроса
    $address = 'ул. Габричевского, 8';
    echo findMetro($address); // Щукинская
    
    function findMetro($address) {
        // Определение координат заданного адреса
        $address = str_replace(' ', '%20', $address);
        $contentGeocoder = file_get_contents("https://maps.googleapis.com/maps/api/geocode/json?key=QWERTY1234&address=Москва,%20$address"); // ключ получил на console.developers.google.com/apis
        $jsonGeocoder = json_decode($contentGeocoder, true);
        $latitudeFrom = $jsonGeocoder["results"][0]["geometry"]["location"]["lat"];
        $longitudeFrom = $jsonGeocoder["results"][0]["geometry"]["location"]["lng"];
    
        // Подключение к базе данных с таблицей метро
        include '../php/db_connection.php';
        $link = mysqli_connect($host, $user, $password, $database) or die("Не удалось подключиться к базе данных");
    
        // Определение ближайшего метро путём перебора
        $min = 10000000;
        for($metroI = 1; $metroI <= 250; $metroI++) {
            // Запрос на выборку для определения координат и названия станции метро
            $result = mysqli_query($link, "SELECT name, latitude, longitude FROM metro WHERE id = $metroI");
            $row = mysqli_fetch_assoc($result);
    
            // Вычисление расстояния между заданным адресом и станцией метро по формуле Хаверсина
            $latFrom = deg2rad($latitudeFrom);
            $lonFrom = deg2rad($longitudeFrom);
            $latTo = deg2rad($row[latitude]);
            $lonTo = deg2rad($row[longitude]);
            $latDelta = $latTo - $latFrom;
            $lonDelta = $lonTo - $lonFrom;
            $angle = 2 * asin(sqrt(pow(sin($latDelta / 2), 2) + cos($latFrom) * cos($latTo) * pow(sin($lonDelta / 2), 2)));
            $distance = $angle * 6371000;
    
            // Если расстояние до станции метро меньше, чем минимальное найденное,— назначаем его минимальным, запоминаем название
            if($distance < $min) {
                $min = $distance;
                $closestMetro = $row[name];
            }
        }
        return $closestMetro;
    }

    Таблица БД с метро: название станции, координаты по широте, долготе
    Ответ написан
    Комментировать
  • Целочисленное деление в PHP?

    @sidorchik Автор вопроса
    Обобщу ответы. Есть два варианта целочисленного деления в PHP:
    floor($a / $b)
    или
    (int)($a / $b)

    Эти приёмы — стандартные: работают в любой версии.

    Всем спасибо!
    Ответ написан
    1 комментарий

Лучшие вопросы пользователя

Все вопросы (59)