Задать вопрос
  • Может ли пользователь отправить ajax-запрос?

    ms-dred
    @ms-dred
    Вечно что то не то и что то не так...
    Может конечно, даже если у вас на сервере скрипта не будет, сам напишет свой и отправит.
    Защищаться от таких действий надо на стороне сервера проверки делать, копайте в сторону csrf token, он отсекет запросы с чужих доменов и прочее, но и этого недостаточно будет в вашем случае, нужно еще проверки делать, частота обращений с одной сессии, может какой то ключ кодировать и сверять на сервере. Вариантов на самом деле масса, все сугубо индивидуально и возможно какую то жесткую проверку делать не целесообразно.
    Я лично стараюсь избегать подобного, смысла нет костыли делать, когда проще ногу вылечить
    Ответ написан
    Комментировать
  • Почему letsencrypt создает новые сертификаты в новом каталоге?

    ms-dred
    @ms-dred Автор вопроса
    Вечно что то не то и что то не так...
    В общем при моей проблеме похоже решение указать в запросе название сертификата
    --cert-name domain.ru
    Тогда пишет что будет добавлен новый домен, а старые неуказанные будут удалены.
    Так что это должно работать!
    Сейчас только лимит исчерпан, и надо подождать, пишет
    An unexpected error occurred:
    There were too many requests of a given type :: Error creating new cert :: too many certificates already issued for exact set of domains: ....домены... see https://letsencrypt.org/docs/rate-limits/
    Ответ написан
    Комментировать
  • Есть ли смысл дальше учить?

    ms-dred
    @ms-dred
    Вечно что то не то и что то не так...
    Зависит от того понадобится ли JS вам в будущем, если нет, то и смысла нет, а если будете сайты делать, то хочешь не хочешь, а разбираться придется. Сегодня не один проект без JS не обходится, раньше было проще, но не сейчас, сегодня JS уже на бекенде вовсю, так что динамика его применения только расширяется, как следствие у вас просто выхода нет, если будете что либо разрабатывать для веба
    Ответ написан
    Комментировать
  • Как получить обьект из data аттрибута?

    ms-dred
    @ms-dred
    Вечно что то не то и что то не так...
    Если JSON.parse не устраивает, можно делать так
    <div class="block js-block-obj" data-info-b=10 data-info-s=1></div>
    Ответ написан
    Комментировать
  • Что делать с подключением javascript на многостраничном сайте?

    ms-dred
    @ms-dred
    Вечно что то не то и что то не так...
    Как и всегда
    document.querySelector('.reviews_next') && document.querySelector('.reviews_next').addEvent..........
    Ответ написан
    Комментировать
  • JS. Как доскролить до конца странице?

    ms-dred
    @ms-dred
    Вечно что то не то и что то не так...
    function send_message(conv,message){
        if (conv.length > 4) {
                conv = conv + "<br>";
        }
        $("#converse").html(conv +"<div class='message-box left-img' style='display:none'><div class='picture'><img src='/my2/a.png' title='user name'></div><div class='mes'><span class = 'current-msg'>" + "<span id='chat-bot'>Бот: </span><p>" + message + "</p></span></div></div>");
        $(".current-msg").delay(500).fadeIn('show', function() {
            // Анимация завершилась и можно делать все что душе угодно
            $(".current-msg").removeClass("current-msg");
            var e = document.getElementById('converse');
            e.scrollTop=e.scrollHeight
        })
    }
    Ответ написан
    5 комментариев
  • Можно ли передать яндекс метрике url при динамической загрузки контента?

    ms-dred
    @ms-dred Автор вопроса
    Вечно что то не то и что то не так...
    Комментировать
  • Как сделать затемнение блока относительно результата SQL запроса?

    ms-dred
    @ms-dred
    Вечно что то не то и что то не так...
    Видимо как то так
    .col-lg-4 {
        position: relative
    }
    .col-hide {
        position: absolute;
        background: #ddd;
        top: 0;
        left: 0;
        right: 0;
        bottom: 0;
        opacity: .3;
        z-index: 2
    }

    <div class="row">
          <?php foreach($actionArr as $action){ ?>
                <div class="col-lg-4 col-md-6 mb-4">
                    <?php if ($action['rezerved']) { ?>
                        <div class="col-hide"></div>
                    <?php } ?>
    Ответ написан
    Комментировать
  • Как сделать плавное перемещение блока?

    ms-dred
    @ms-dred
    Вечно что то не то и что то не так...
    На сколько я помню в jQuery есть animation, его и используй, тогда по идеи рывки должны исчезнуть. Если без jQuery то в цикле +1px надо делать. Или попробовать добавить в css transition, но я не знаю будет ли работать это в паре с js, надо смотреть.

    А вобще судя по тому что нужно, лучше добавлять определенный класс блоку для сдвига, а в CSS уже определить transition и тогда будет счастье
    Ответ написан
    1 комментарий
  • Утечка памяти при async/await?

    ms-dred
    @ms-dred Автор вопроса
    Вечно что то не то и что то не так...
    Нашел где была утечка, но не тут.
    Походе дело в npm sharp. Есть страницы где нужно предоставить картинку пользователю с нужным размером, по запросу скидывается все на sharp, для изменения размера изображения. Решил поставить GM для эксперимента и рост потребления памяти перестал увеличиваться.

    До этого стоял sharp на калбеках и все было в порядке, после того как переписал на async/await начались проблемы.

    Вот пример кода на sharp (async/await)
    return sharp( path.join( config.path.dir, '../', request.document.replace(/^https?:\/\//, '') ) )
            .resize( request.params.width, request.params.height )
            .toFile(request.params.file)
            .then()
            .catch(e => {
                throw new Error(e)
        })


    Версия sharp: "^0.18.4"

    Переписал на GM так
    function createFileGM(request) {
    
        return new Promise((resolve, reject) => {
    
            return gm( path.join( config.path.dir, '../', request.document.replace(/^https?:\/\//, '') ) )
                .resize(request.params.width, request.params.height, '^')
                .gravity('Center')
                .crop(request.params.width, request.params.height)
                .write(request.params.file, (e) => {
                    if(e) return reject(e)
                    return resolve()
            })
        })
    }


    Утечка пропала. Как вариант чтобы оставить sharp перепишу его на промисах и посмотрю что будет.
    Ответ написан
  • Как скрыть содержимое div в зависимости от option select?

    ms-dred
    @ms-dred
    Вечно что то не то и что то не так...
    Ответ написан
    Комментировать
  • Как убрать сообщение [object HTMLOutputElement]?

    ms-dred
    @ms-dred
    Вечно что то не то и что то не так...
    window.onclick = function onclickRadio() {
      var rezultatRadio = '';
    // Дальше все остальное
    Ответ написан
    Комментировать
  • Как по событию click запустить lightbox функцию?

    ms-dred
    @ms-dred
    Вечно что то не то и что то не так...
    Я обычно не парюсь, тупо по необходимости создаю элемент script и подгружаю библиотеку. К примеру с plupload, он по сути нужен только тогда когда кто то хочет загрузить файл, ну вот и подключаю скрипт тогда когда это необходимо.

    Решение напрашивается само, кликнул -> создал script с нужным src и выставил его перед /body, вот собственно и все и никаких релоадов и прочего не нужно
    Ответ написан
    3 комментария
  • Как задать условие по data атрибуту из файла json ??

    ms-dred
    @ms-dred
    Вечно что то не то и что то не так...
    А где сам обработчик клика по строке в таблице?
    var e = document.querySelectorAll('tr');
    Array.prototype.forEach.call(e, function(e) {
        e.addEventListener('click', n)
    });
    
    function n(e) {
        var id = e.target.getAttribute('data-id');
        $.getJSON...............
             for..........
                  if(id == data[i].id)
                       // че то делаем
       
    }
    Ответ написан
  • Поддерживаете ли вы IE8 в своих проектах?

    ms-dred
    @ms-dred
    Вечно что то не то и что то не так...
    Нет, к чему учитывать интересы пол процентной аудитории глобала? Да и думаю пользователи динозавров уже давно привыкли к корявой верстке и к частично неработающему функционалу сайтов, пусть страдают, чем больше будут страдать, тем быстрее забудем о кроссбраузерности. Я свой выбор сделал, у других может быть отличная от моей точка зрения.
    Ответ написан
    2 комментария
  • Где лучше всего расположить файлы для API?

    ms-dred
    @ms-dred
    Вечно что то не то и что то не так...
    Да как душе угодно =) В роутере же все равно ссылки можно указать любые
    У меня тоже структура приблизительно такая же
    application
        collections
        configs
        libs
        routes
            ajax
            api
        views
            Default
    bin
        cron
    index.js
    Ответ написан
    1 комментарий
  • Как правильно подключить .json файл в проект?

    ms-dred
    @ms-dred
    Вечно что то не то и что то не так...
    Не понятно что именно вам нужно
    1. Если нужно с сервера файл загружать, то на это в jQuery есть api.jquery.com/load
    2. Если нужно получить содержимое переменной во втором файле, то и мудрить нечего
    <script src="/myApp.js"></script>
    console.log(hotels)

    3. Можно и дальше продолжать до бесконечности, извращениям нет предела ))
    Ответ написан
    Комментировать
  • Как скрыть и раскрыть элемент по клику?

    ms-dred
    @ms-dred
    Вечно что то не то и что то не так...
    return (
          <button id="fast_bet_1" data-route="hide">Скрыть/Раскрыть</button>
          <div className="fast-bet" data-id="fast_bet_1">
            <div className="fast-bet__head clearfix">
              <div className="fast-bet__balance">
                {(user.money || 0).toFixed(2)}
              </div>
              <button className="fast-bet__btn-bet" onClick={this.handlePlaceBet}>
                Поставить предметы
              </button>
              <button className="fast-bet__btn-transfer" onClick={() => actions.addModal({ type: "INVENTORY", inventoryType: "STEAM" })}>
                Перевести
              </button>
              <button className="fast-bet__btn-withdraw" onClick={() => actions.addModal({ type: "INVENTORY", inventoryType: "STEAM" })}>
                Вывести
              </button>
              <button className="fast-bet__btn-deposit" onClick={() => actions.addModal({ type: "INVENTORY", inventoryType: "SITE" })}>
                Пополнить
              </button>
              <button className="fast-bet__btn-refresh" onClick={this.refreshInventory}>
                <i className={`fast-bet__refresh-icon fa fa-refresh ${!isLoaded ? "fast-bet__refresh-icon--active" : ""}`.trim()} />
              </button>
              <div className="fast-bet__info-message">
                Ваш внутренний инвентарь
              </div>
            </div>
            <div className="fast-bet__content">
              <Scrollbars
                renderView={props => <div {...props} className="fast-bet__inventory clearfix" />}
                autoHeight
                autoHeightMin={105}
                autoHeightMax={210}
              >
                {inv}
              </Scrollbars>
            </div>
          </div>
        );


    (function() {
        var e = document.querySelectorAll('[data-route="hide"]')
        Array.prototype.forEach.call(e, function(e) {
            e.getAttribute("data-init") || (e.setAttribute("data-init", "true"), e.addEventListener("click", hide))
        })
    
        function hide(e) {
            var t = document.querySelector('[data-id="'+e.target.id+'"]')
            t.style.display = t.style.display === 'block' && 'hidden' || 'block'
        }
    })()


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

    ms-dred
    @ms-dred
    Вечно что то не то и что то не так...
    Если на JS делать, то нужно чекать useragent и само поле textarea, как то так =)
    (function(){
    	var mobile = /android|iphone/.test(navigator.userAgent)
      var textarea = document.querySelector('textarea')
      textarea.onkeydown = function(e) {
      	mobile && (textarea.value = toLowerCaseFirstStr(textarea.value))
      }
    })()
    
    function toLowerCaseFirstStr(e) {
    	return e && (e[0].toLowerCase() + e.slice(1))
    }
    Ответ написан
  • Как оптимизировать сложный запрос?

    ms-dred
    @ms-dred Автор вопроса
    Вечно что то не то и что то не так...
    3 дня ломал голову, но победил только после того как задал вопрос на тостере )) Что же делает животворящий тостер....
    В общем решение, не хватало цепочки индекса
    schema.index({ owner: 1, createdAt: 1 })
    Может кому нибудь и пригодится =)
    Ответ написан