Задать вопрос
  • Как в Intersection Observer узнать, что элемент пропал из поля зрения?

    VK_31
    @VK_31
    Постоянно учусь
    !entry.isIntersecting - пропал
    entry.isIntersecting - появился
    Ответ написан
    Комментировать
  • Как примерно выглядит async-await код, если его написать на промисах?

    sanchezzzhak
    @sanchezzzhak
    Ля ля ля...
    да правильно.

    await можно вызвать только внутри async блока.
    когда мы используем await отлов ошибки всегда нужно делать в try { ... } catch (e) {}.
    любой метод который возвращает промис можно использовать await внутри блока async
    и того вы можете комбинировать устаревший код с новым.

    (async () => {
    
    async function fetchData1(url) {
       try { 
        let response =  await fetch(url);   // promise
         return await response.json();      // promise
      } catch(e) {
         return null;
      }
    }
    
    // на промисах  это выглядело бы так, вам все равно нужно вернуть обьект промиса, если вам важно вернуть результат.
    
    function fetchData2(url) {
       return new Promise((resolve,reject) => {
           fetch(url).then(res => res).then (res => res.json()).then((result) => {
             resolve(result);  // говорим что наш промис достиг успеха,
          }).carch(e => {
              resolve(null);  // так как мы повторяем логику try catch  мы используем пустой ответ. вместо reject(e);
          })
       })
    }
    
    const promises = [
        fetchData1('/last-news'),       
        fetchData2('/last-comments'),  
        fetchData2('/popular-news'),
    ];
    // (после объявления массива методы уже будут выполнятся, лучше делать через promises.push(...) )
    // .. куча логики
    // приказываем ожидать если не все выполнялось.
    const result = await Promise.all(promises);
    console.log({result});    
    
    // или так 
    Promise.all(promises).then( results => {
        console.log({result});    
    })
    
    // a так если мы хотим последовательно и лапшой promise hell
    fetchData1('/last-news').then(resultNetws => {
            fetchData2('/last-comments').then(lastComments => {
                 fetchData2('/popular-news'').then(popularNews => {
               
                  })
           })
    });
    
    // рекомендую прочитать про статичные методы у обьекта Promise.all итд.
    
    
    })());
    Ответ написан
    1 комментарий
  • Как сделать так что бы приложение нельзя было свернуть и использовать функции планшета?

    @pfg21
    ex-турист
    гуглить android kiosk mode ??
    прописать свое приложение как лаунчер ?? нажатие на центральную кнопку делает вызов лаунчера.
    Ответ написан
    Комментировать
  • Как открыть новую вкладку браузера через клик по push-уведомлению, если сайт уже открыт?

    @romant094
    Frontend-developer
    Проблема заключается в том, что clients.openWindow(url); не открывает новую вкладку, если вкладка с таким URL уже открыта. Вместо этого он просто переходит на существующую вкладку с этим URL.

    Для открытия новой вкладки даже в случае, если сайт уже открыт в браузере, вам нужно использовать window.open(url, '_blank');. Вот как это можно сделать в вашем коде:
    self.addEventListener('notificationclick', function(event) {
        event.notification.close()
        const url = event.notification.data.url
        if (url) {
            window.open(url, '_blank');
        }
    }, false);
    Ответ написан
    Комментировать
  • Почему в https не используется асимметричное шифрование?

    Используется только во время хендшейка, чтобы обменяться ключами и проверить подлинность.
    Данные не шифруются, тк асимметричное шифрование медленное из-за сложной математики.
    Ответ написан
    Комментировать
  • Почему в https не используется асимметричное шифрование?

    @Everything_is_bad
    Поискав в интернете
    обычно там же рядом пишут причину, "дорогая" это операций на больших объемах данных, так что в процессе контакта, создают сессионный симметричный ключ (который в этом процессе сложно как-то перехватить) и дальше уже им с меньшими затратами можно шифровать
    https://ru.wikipedia.org/wiki/%D0%A1%D0%B5%D0%B0%D...
    Ответ написан
    Комментировать
  • В каком виде, хранятся записи в БД, подобные постам в соц.сетях?

    Stalker_RED
    @Stalker_RED
    что-то по лучше, чем MySQL
    а что получше - феррари, карьерный самосвал или метро?
    Феррари вроде как быстрее, но не может перевезти 500 тонн за один рейс. Карьерный самосвал перевезти может, но расход горючки сумасшедший. А у метро фича - гоняет без пробок, но только там, где рельсы заранее проложили.

    Все хорошо у MySQL с ресурсами.
    У вас сейчас нет соцсети с миллионами юзеров, поэтому вам не нужна никакая навороченная сверхпроизводительная архитектура и бигдата.
    Когда упретесь в производительность вы сперва подкрутите настройки того-же мускула, потом распараллелите, потом часть данных вынесете в какой-нибудь редис, и только когда и этого будет мало, вот тогда вы задумаетесь о смене основной БД.
    К этому времени вы уже будете иметь представления какие у вас посты, сколько их, где у вас в архитектуре узкие места, и будете неплохо представлять какие есть альтернативы.
    Альтернативы конечно и сейчас есть, но они вам не нужны в данный момент - больше мороки с ними, чем пользы. Ну выберете вы сейчас метро, например, будете инвестировать скиллы и время в рельсы, а в тоге окажется что вам нужно не метро и не самоствалы, а больше подошли бы нефтеналивные танкеры. Вы заранее не можете предсказать что и как у вас будет устроено.

    Целиком в БД сохраняют с тегами HTML, или Объектом JSON

    Начать можете с подхода "храним в том виде в котором пришло с клиента, перед показом чистим".
    Это позволит на лету подправлять тот функционал что перед показом, и заплатите вы за это только некоторым количеством процессорной нагрузки.
    Когда он окончательно утвердится, можно перейти на "чистим пред сохраннением в БД", что сэкономит ту самую нагрузку (очистка ровно один раз), но сразу упадет гибкость, так как данные, которые вы удалили при чистке уже не восстановить.

    Тяжелые медиа, типа видеороликов, вы довольно скоро вынесете в отдельное хранилище, как только заметите что у вас этих одинаковых роликов тысячи, и неплохо бы к ним дедупликацию прикрутить.
    А как хранить эмоджи - практически не важно.
    Ответ написан
    Комментировать
  • Как пересчитать среднее арифметическое?

    Если вам известно предыдущее значение среднего арифмитического M и количество значений N, то пересчитать среднее арифмитическое при добавлении элемента x можно по формуле:

    M’ = (M*N + x) / (N + 1)
    Ответ написан
    1 комментарий
  • Как обрезать слишком длинный текст при выводе?

    0xD34F
    @0xD34F Куратор тега Vue.js
    data: () => ({
      maxlen: 10,
      items: [
        'hello, world!!',
        'fuck the world',
        'fuck everything',
        '1234567890',
        'Lorem ipsum dolor sit amet, consectetur adipiscing elit,',
       ],
    }),
    methods: {
      short1: (str, maxlen) => str.length <= maxlen ? str : str.slice(0, maxlen) + '...',
      short2: (str, maxlen) => str.substring(0, maxlen) + (str.charAt(maxlen) && '...'),
      short3: (str, maxlen) => str.replace(RegExp(`(.{${maxlen}}).+`), '$1...'),
      short4: (str, maxlen) => str.replace(RegExp(`(?<=.{${maxlen}}).+`), '...'),
    },

    <input type="range" min="1" max="20" v-model="maxlen">
    <span>{{ maxlen }}</span>
    
    <div v-for="n in items">
      <div v-text="short1(n, maxlen)"></div>
      <div v-html="short2(n, maxlen)"></div>
      <div :text-content.prop="short3(n, maxlen)"></div>
      <div>{{ short4(n, maxlen) }}</div>
    </div>

    https://jsfiddle.net/dxm0gsnf/
    Ответ написан
    Комментировать
  • Как убрать полосу прокрутки в textarea?

    SlavaMaxwell
    @SlavaMaxwell
    Frontend разработчик
    Ну вообще плохая практика скрывать скроллбар от пользователя, при его физическом наличии, и чтобы он не был такой жирный, попроси дизайнера нарисовать кастомный скролл, а ты потом его стилизуешь
    Ответ написан
    1 комментарий
  • Библиотека для работы с изображениями?

    @garbagecollected
    Все перечисленные задачи выполняет ImageMagick.
    Для анимации дополнительно будет полезен ffmpeg.
    Есть порт на Java: Jmagick, im4java, ffmpeg-java, xuggler (еще очень полезен код отсюда humble-video).
    Кстати говоря, im4java - это клиент imagemagick через CLI API. Он выглядит заброшенным, но полностью рабочий. В CLI у imagemagick всё стабильно, за многие годы так ничего не поменялось.
    Ответ написан
    6 комментариев
  • Как обновлять данные, без запросов в бд?

    мне нужно обновлять данные, которые были измененные в бд, но не хочу обращаться данными к бд
    не хочешь не обращайся дело хозяйское. Все эти базы данных для слабаков, раньше их вообще не было и нормально в космос летали. Даже на Луну слетали на ПО без всякиз баз данных. Храни и обрабатывай прямо в своём приложении. Я почему так говорю, сталкивался с такими решениями.
    Ответ написан
    1 комментарий
  • Как мне получить глобус который на сайте??

    @neolizee
    Они в своём блоге пишут как они сделали визуализацию этой планеты. Перейти по ссылке
    Смотрите в сторону Three JS.
    На сайте такие примеры есть.
    Ответ написан
    Комментировать
  • Можете объяснить асинхронность в JS?

    AgentSmith
    @AgentSmith
    Это мой правильный ответ на твой вопрос
    Да, всё верно. Операции попадают в Event Loop и оттуда они берутся на обработку.
    Здесь можно более подробно почитать https://blog.sessionstack.com/how-javascript-works...
    Ответ написан
    Комментировать
  • Какой-то скрипт или расширение подменяет или добавляет в код веб-приложения слова, что это может быть?

    @Fisher21 Автор вопроса
    Коллеги, всем спасибо за участие, все оказалось прозаичнее - баловались расширения для перевода страниц, причем и гугл и яндекс. Отключив расширение, проблема сразу пропадала.

    В качестве бонуса, прилагаю еще один пример такого перевода, сотрудники не могли до конца пройти тест и рабочий день был сорван из-за таких вот замен, в оригинале должно быть "вести учет микротравм"

    62df8c40c9101951269103.png
    Ответ написан
    2 комментария
  • Как сделать изменение цвета текста при скролле?

    RAX7
    @RAX7
    Ответ написан
    Комментировать
  • Как это сверстать, очень сложный дизайн карточки?

    AntonLitvinenko
    @AntonLitvinenko
    HTML coder
    Когдато в старину такие вещи делали так:
    бралось картинка в png и резалась на части, так чтобы сложные элменты были на местах, а между ними тоже кусок картинки в 1 пиксель, который тянется в зависимости от количества контента
    Ответ написан
    Комментировать
  • Fatal error: Call to a member function fetch() on a non-object in?

    @v__V__v
    Разработчик
    Суть фатальной ошибки вам сообщает php, английским по белому)
    Смысл написанного - вы пытаетесь вызвать функцию-член класса у чего-то, что не является объектом. Посмотрите, что у вас возвращает $mUsers->message_count() в этих случаях, и тогда все станет ясно. Как-то так, например:
    $this->check=$mUsers->message_count();
    if(is_object($this->check))$this->check=$this->check->fetch();
    else{
      var_dump($this->check);
      die;
    }
    Ответ написан
    Комментировать
  • Как отсортировать элемены в массиве в моём случае?

    @Jacome
    $arr = [['09:00', '10:00','11:00'], [1, 2,3]];
    $count = count($arr[0]);
    $arrNew = [];
    for ($i = 0; $i < $count; $i++) {
    $arrNew[$i] = [0 => $arr[0][$i], 1 => $arr[1][$i]];
    }
    var_dump($arrNew);
    Ответ написан
    Комментировать
  • Как оптимизировать фото на сайте?

    Да, проблема не в Webp и не в lazyload (хотя они лишними не будут), а в том, что нельзя грузить большие картинки в сетке в мелком масштабе, логика должна быть другая: изначально подгружаются и отображаются мелкие картинки (типа 370х280 px) - а при клике уже загружается большая фотка полноразмерная.
    В wordpress это делается в два клика, ну а тут видимо придется вручную нашлепать мелких превьюшек.
    Ответ написан
    Комментировать