• Чем отличается тег section от article?

    gr1mm3r
    @gr1mm3r
    50% ответа в правильном вопросе. Остальное мануал.
    Раньше почти все разделы верстались на дивах. Но в HTML5 добавили сразу два новых тега для разметки разделов:
    <section> — смысловой или логический раздел документа;
    <article> — самостоятельный и независимый раздел документа.
    Чтобы не было путаницы, разберём где и когда использовать разные контейнеры:
    <div> — контейнер общего назначения, не обязательно смысловой. Дивы используются для разметки мелких блоков, создания сетки и декоративных эффектов.
    <section> — более крупный логический контейнер, объединяющий содержание по смыслу. Например, блок «О компании», список товаров, раздел личной информации в профиле и так далее.
    <article> — самостоятельный, цельный и независимый раздел документа. Этот раздел можно в неизменном виде использовать в различных местах, в том числе и на других сайтах. Примеры: статья, пост в блоге, сообщение на форуме и так далее.
    Новые структурные теги HTML5
    Ответ написан
  • Как сохранить в mysql интервал "от N до бесконечности"?

    tsklab
    @tsklab
    Здесь отвечаю на вопросы.
    В базах данных отсутствие значения обозначается как NULL.
    WHERE ( Val >= ValFrom ) AND (( Val <= ValTo ) OR ( ValTo IS NULL ))
    Ответ написан
  • Как закрыть XMLHttpRequest от общего доступа?

    IDONTSUDO
    @IDONTSUDO
    ЧСВ программистов идет в комплекте с первой IDE.
    Можно ли как-то сделать так, чтобы никто другой не мог повторить эти запросы и получить мои данные в json-формате?
    Используй механизмы ссесий. По типу Cookies/JWT.
    P.S. советовал бы JWT отличная лекция Ильи Климова на эту тему.

    Может настройками nginx сделать так, чтобы эти XMLHttpRequest запросы нельзя было выполнить напрямую? Чтобы нельзя было адресу XMLHttpRequest получить данные.
    nginx это сервер который просто проксирует контент
    Ответ написан
  • Как закрыть XMLHttpRequest от общего доступа?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    В дополнение к Сергей Соколов могу подсказать следующий этап: защита от кражи сессии. Это делается путем нумерации запросов. То есть каждый запрос передается число, которое на 1 больше предыдущего. Так что даже если кто-то украдет сессию и сможет ее использовать, у пользователя она протухнет и вы сможете показать ему ошибки рассинхронизации. И уже сам пользователь начнет искать злоумышленника.

    Хотя если сам пользователь является злоумышленником, причем умным и упёртым, то понадобится дальше наращивать защиту. Но это уже война снаряда и брони, а она, как известно, вечная, и выигрывает тот, у кого больше ресурсов и терпения.
    Ответ написан
  • Как закрыть XMLHttpRequest от общего доступа?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Использовать одноразовый сессионный ключ, чтобы форсить сценарий:
    «сначала запроси страницу, и только потом — json-данные».
    При генерации страницы, на сервере создаётся ключ, который записывается в сессию (на сервере) и в код страницы.
    При запросе данных из страницы, с запросом отправляется и этот ключ, где сравнивается с записанным в сессию. Только при совпадении отдаются данные, а ключ удаляется из сессии.

    Чтобы не передавать данные в открытом виде, можно их дополнительно упаковать-зашифровать. См. JSON Web Tokens. Но это чисто декоративно, т.к. всё, что оказывается в итоге в открытом виде в браузере клиента – считай, утекло.
    Ответ написан
  • Сортировка таблицы методом sort на чистом JavaScript или js-библиотека?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Лучше использовать sort(). Это нативная, а потому быстрая, функция. Своя функция, если опустить время на создание массива, будет на порядок медленнее.

    Таким образом, всё упирается в копирование данных. И здесь могу посоветовать только одно: данные должны быть уже в переменных JS на момент загрузки страницы. Конечно, в самой таблице - тоже, на случай отсутствия JS у пользователя. И каждая сортировка просто формирует таблицу заново.

    Ещё вариант, сделать массив непосредственно из DOM-элементов, как-то так (пример):
    [...document.querySelectorAll('tr')]
    А после применения sort(), можно с помощью insert'ов сделать новую таблицу или даже пушить в существующую. Здесь плюс в том, что вы не меняете оформление и формат таблицы. То есть если другой программист (или вы в будущем) добавит новый столбец, то код, вероятно, не сломается.

    К слову, если у вас 100-500 элементов, а на странице редко бывает больше 500, то сортировать можно как угодно, пользователь не заметит разницы.
    Ответ написан
  • Есть ли готовое решение по работе с данными в таблице на странице на JS?

    keslo
    @keslo Автор вопроса
    Спасибо всем! Нашел простейшее и универсальное решение:

    <script type="text/javascript">
        function filter2 (phrase, _id){
            var words = phrase.value.toLowerCase().split(" "); 
            var table = document.getElementById(_id); 
            for (var r = 1; r < table.rows.length; r++){ 
                var cellsV = table.rows[r].cells[0].innerHTML.replace(/<[^>]+>/g,""); //указать первый столбец
                var displayStyle = 'none';
                for (var i = 0; i < words.length; i++) {
                if (cellsV.toLowerCase().indexOf(words[i])>=0)
                    displayStyle = ''; 
                else {
                    displayStyle = 'none'; 
                    break;
                }
                }
            table.rows[r].style.display = displayStyle; 
            }
        }
      </script>
    <h4>Введите наименование запчасти для фильтрации каталога:</h4>
    <input name="filt" onkeyup="filter2(this, 'sf')" style="width:350px;" type="text" />


    Может кому пригодиться!
    Ответ написан
  • Как работают сервисы перевода денег с карты на карту?

    @m0nym
    1) Сервис заключает договор с тем, кто предоставит платежный шлюз. И вносит предоплату. Например, 1 млн. рублей.
    2) После этого сервис по API имеет право распоряжаться упомянутым миллионом (минус комиссия платежного шлюза). То есть может указывать платежному шлюзу куда нужно положить деньги на какую карту. Пока не закончился предоплаченный миллион.
    3) Чтобы не делать это за свой счет, чтобы получать деньги от пользователей, нужен все тот же договор с тем, кто предоставит шлюз. Но уже шлюз для получения денег. С этим проще - можно подключить себя как обычный интернет-магазин.
    4) Через какое то время, обычно на другой день, реже через 3 дня - деньги полученные тобою в шлюзе, переводятся на банковский счет.

    Шлюзы на прием денег и шлюзы на отправку денег - могут быть разными, у разных фирм взятыми. Более того, ты можешь для части платежей использовать один шлюз, а для части платежей другой, а для части платежей третий.

    Но как минимум один нужен.
    Ответ написан
  • Как правильно составить breadcrumbs по data-vocabulary.org?

    gzhegow
    @gzhegow
    Думал, стану умнее, когда адаптируюсь, но нет
    Если ты используешь словарь data-vocabulary, то вот так:
    <ul>
      <li id="breadcrumb-0" itemref="breadcrumb-1" itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb">
        <a href="/" itemprop="url">
          <span itemprop="title">Главная</span>
        </a>
      </li>
      <li> &gt; </li>
      <li id="breadcrumb-1" itemref="breadcrumb-2" itemprop="child" itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb">
        <a href="/tires/" itemprop="url">
          <span itemprop="title">Легковые шины</span>
        </a>
      </li>
      <li> &gt; </li>
      <li id="breadcrumb-2" itemref="breadcrumb-3" itemprop="child" itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb">
        <a href="/tires/kama/" itemprop="url">
          <span itemprop="title">КАМА</span>
        </a>
      </li>
      <li> &gt; </li>
      <li id="breadcrumb-3" itemref="breadcrumb-4" itemprop="child" itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb">
        <a href="/tires/kama/kama_234/" itemprop="url">
          <span itemprop="title">Кама-234</span>
        </a>
      </li>
      <li> &gt; </li>
      <li id="breadcrumb-4" itemprop="child" itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb">
        <span itemprop="title">195/65R15 91 H, Россия КАМА Кама-234</span>
        <link href="/tires/kama/kama_234/195_65_15_91_H_ops_9744/" itemprop="url">
      </li>
    </ul>


    Еще их можно разметить через ld+json (по schema.org), через верстку (по schema.org) и через тот же data-vocabulary, но вместо child-ов использовать вполне обыкновенную вложенность каждой следующей хлебушки в другую

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

    @Fixid
    В подвале googleSpeed можно выкачать все ресурсы сайта в одном архиве уже оптимизированные гуглом
    Ответ написан
  • Как создать поиска по сайту используя геолакацию, где юзер использует радиус поиска?

    ruFelix
    @ruFelix
    Предсказание будущего по руке, таро, кофе.
    На маленьких радиусах можно использовать евклидову геометрию.
    На больших через формулу, описанную например тут ru.scribd.com/doc/2569355/Geo-Distance-Search-with...

    Что бы всё не тормозило используйте геоиндекдсы в БД они специально для этого придуманы.

    Ну и надо понимать, что поиск в окружности от координат города смысл имеет не всегда, например Волгоград длиной 60 км, а шириной максимум 5 км.
    Ответ написан
  • Что выбрать: ставить или не ставить слэш на конце URL?

    @pazitiffcheg
    Для тех, кто утверждает, что слеш в конце url нужно ставить и что веб-сервер очень напрягается, если слеш не поставить, прошу выложить кусок кода из apache или nginx отвечающий за реализацию данного алгоритма - это же opensource проекты, всё в свободном доступе.
    Поисковикам же совершенно всё равно, по какому адресу обрабатывать страничку, главное чтоб небыло задвоения, поэтому в правилах веб-сервера делаем 301 редирект на какой либо из вариантов.
    Поисковики не панацея интернета, и как заметил уважаемый IlVin IlVin
    "В www.ietf.org/rfc/rfc1738.txt этот вопрос не регламентирован."
    Поисковики пишут универсальные алгоритмы для того чтобы их поиск был качественен, но они не распоряжаются, как должен работать тот или иной веб сервер. Есть запрос по url и есть ответ - всё просто.
    Сам я терпеть не могу, когда попадается сайт со слешами на конце особенно г..сайтах. Сайту и так плохо, так еще какой то не компетентный СЕОшник еще больше его запорол.....

    Люди, не перебарщивайте и не втирайте про слеш на конце, он там вообще не нужен, т.к. в url нет понятия "Директория" - это не файловая система. URL - это адрес, состоящий из символов, слеш определяет структуру адреса, только и всего.
    Ответ написан
  • Выбор города на сайте?

    @egorinsk
    Вы делаете неправильно. Во-первых, идеология Web подразумевает, что у разного контента разные адреса, а показывать людям по одному УРЛ разные вещи в зависимости от города — неверно. У каждой страницу должен быть свой, уникальный, адрес.

    Теперь представьте себе пользователя. Он зашел в Qooqle, набрал «купить мопед москва» и видит: «Продам мопед, недорого, Москва», кликает по ссылке — а вы ему вместо мопеда показываете объявления из его города Замкадовска (где максимум можно купить подержанный велосипед). Это неправильно. Мы же делаем сайт для людей, а не для СЕО, верно?

    По этой же причине нельзя показывать разный контент ботам и людям. Потому что человек, который попадает на сайт из поиска, рассчитывает увидеть то же самое, что он видел в поиске. За нарушение этого правила поисковики могут понижать рейтинг сайта и убирать страницы из выдачи, и это правильно.

    Надо сделать отдельные папки или домены для разных городов: saint-peterburg.objava.ru/list например. Или objava.ru/saint-peterburg/list. Если юзер из одного города зашел на домен другого города — можно показать ему в шапке предложение перейти на домен его города, но не навязывать и не заставлять переходить. Может, я еду в какой-то город и хочу посмотреть объявления оттуда.

    Что же касается главного домена — objava.ru — то можно показать на нем карту России или список городов (нормальными ссылками, без яваскрипта и прочей дряни), и например, ярко выделить в нем город пользователя и предложить перейти. Например, как это сделано на главной сайта avito.ru. Человек перейдет в свой город, а робот обойдет все.

    А вот за показ разного контента для разных IP по одному УРЛ и за редирект, не спрашивая желания пользователя, я считаю, сайты надо банить (что иногда и происходит). Нам не нужен колхозный интернет. Давайте все делать в соответствии со стандартами, руководствами по юзабилити и лучшими практиками, а не пытаться обхитрить поисковые системы и пользователей.
    Ответ написан
  • Что выбрать: ставить или не ставить слэш на конце URL?

    MTonly
    @MTonly
    Веб-разработчик с 2002 года
    Ставить. Только так можно обеспечить единообразные URL-адреса вне зависимости от того, как именно они реализуются: серверным движком или просто index-файлом в физической папке.

    И желательно делать редирект с адреса без слэша на адрес на канонический адрес со слэшом.
    Ответ написан