• Как закруглить углы фона контейнера?

    Get-Web
    @Get-Web Куратор тега CSS
    Front-End Developer
    Как вариант:

    Ответ написан
    Комментировать
  • Анимация кометы по орбите, как реализовать?

    webinar
    @webinar
    Учим yii: https://youtu.be/-WRMlGHLgRg
    Проще и лучше - svg:
    https://codepen.io/dinks/pen/ECbpG
    https://codepen.io/semenchenko/pen/BwGOKo
    https://codepen.io/Scott-Hutcheson/pen/oeJRWP?q=sv...
    https://codepen.io/diogocera/pen/YyYPZB
    Из минусов - не полная поддержка в edge, но обещают исправить
    how it made: https://css-tricks.com/guide-svg-animations-smil/#...
    Ответ написан
    Комментировать
  • Анимация кометы по орбите, как реализовать?

    Stalker_RED
    @Stalker_RED
    Ответ написан
    Комментировать
  • Почему google analytics тормозит сайт?

    @bedolazhka
    Индусы со времён динозавров делают так:
    <?php if (!isset($_SERVER['HTTP_USER_AGENT']) || stripos($_SERVER['HTTP_USER_AGENT'], 'Сюда прописать имя юзерагента google page speed') === false): ?>
    // сюда код аналитики
    <?php endif; ?>


    увидели 100 из 100? Теперь удалите костыль и перестаньте заниматься тупыми замерами, раз гугл не посчитал нужным сообщить своему замерщику время кеширования своей же аналитики :)
    Ответ написан
    Комментировать
  • Как создать свою доменную зону?

    vabka
    @vabka
    Токсичный шарпист
    Если устроит вариант, что оно будет работать только в сети предприятия - просто нужно поднять свой DNS-сервер в этой сети и настроить устройства в этой сети чтобы они обращались к этому серверу.
    Ответ написан
    4 комментария
  • Как изменить текст цвета в зависимости от фона?

    Psychosynthesis
    @Psychosynthesis
    Fullstack developer and radio engineer
    Погуглите в сторону css-свойства:
    mix-blend-mode

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

    dv1zhok
    @dv1zhok Автор вопроса
    Freelancer
    Решил с помощью методов и коллбэков fullpage.js.:

    Отлавливаем событие onLeave, как одну из опций, в нем условие:
    onLeave: function(origin, destination, direction){
    	if (origin.index == 2 && direction =='down') {
    		fullpage_api.setAutoScrolling(false);
    	} else {
    		fullpage_api.setAutoScrolling(true);
    	}
    }

    Получается следующее: Если долистали до 3 слайда и идвижение скролла вниз, методом setAutoScrolling(false) отключаем поэкранный скролл и ставим пролистывание страницы как обычно. Иначе - наоборот.

    UPD: Т.к. многие пишут в ЛС по поводу решения, добавляю еще 1 вариант, который в итоге я использовал:
    new fullpage('#fullpage', {
      licenseKey: 'OPEN-SOURCE-GPLV3-LICENSE',
      scrollBar: true,
      fitToSection: true,
      fitToSectionDelay: 300,
      verticalCentered: true,
      normalScrollElements: '.main-container' //Контейнер с обычным скроллом
    });
    Ответ написан
    1 комментарий
  • Как вычислить виновника из-за которого отваливается интернет с какой-то периодичностью в маленькой сети?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Такого рода проблемы все и всегда решаются однотипно.
    1. Необходимо сформулировать критерии наличия проблемы.
    Как именно пропадает интернет, насколько часто, как надолго. Это нужно для диагностики. поиска причины и определения ушла ли проблема после принятия каких либо мер.
    2. Делить проблему на части и проверять части по отдельности.
    Самый эффективный способ делить - это пополам. Отсекаем часть сети и проверяем наличие проблемы в обеих частях (если есть возможность) или в одной из частей.
    3. Когда найден минимальный проблемный участок, который уже нельзя или бессмысленно делить - заменяем его.
    4. Помним, что чаще всего сложные проблемы - это композиция нескольких более простых. которые по отдельности могут не проявляться. В вашем случае может быть проблема, связанная с нагрузкой на роутер, например, которую создает один из услов из-за плохого контакта обжима и большого объёма биттых пакетов. Устранив одну из причин, вы, может быть, сделаете проявления проблемы реже, но не устраните её полностью. К примеру, если замените ротуер, битые пакеты будут всё равно будут нагружать вашу сеть и портить ее производительность, но это будет не так очевидно. Переобжав коннектор вы избавитесь от части нагрузки, но еслив ваш ротуер работал на переделе, то лишний вафай-клиент или тяжелый видос в сети сможет его снова нагрузить до критического снижения производительности.

    Итак, пробежимся по перечисленным пунктам сначала.
    1. Критерии. Поиск критериев - это часть решения. Обычно в этом случае нуно сорать необходимую статистику. Есть куча софта, который это умеет делать, но пинг есть всегда под рукой.
    Для этой тулзы есть две полезных опции: ключ для бесконечного пинга и размер пакета.
    В разных ОС эти ключи немного разные, поэтому ищите их отдельно, у меня нет винды под рукой, поэтому не стану на этом заострять.
    Скаж лишь, что пинговать лучше большими пакетами, жалетально превышающими размер TTL, прописанный в роутере. Тогда такой пинг будет реже проскакивать в периоды хорошей связи, то есть выловит больше пролблем.
    Пинговать нужно в отдельных окнах сразу несколько хостов:
    - ya.ru - этот хост всегда отвечает на пинги и выявит проблемы с DNS
    - 8.8.8.8 - это гугловый DNS-сервер, тоже всегда отвечает на пинги, покажет, что связь с инетом есть даже если DNS, прописанныйна компе не правильно работает.
    - 192.168.0.1 - или какой там IP у вашего роутера. Нужно. чтбы отделить проблемы с инетом от проблем с внутренней связностью до роутера
    - 192.168.0.x - ip одного из компов в сети. Я обычно пингую несколько компов, доступных через баксимальное число потенциально проблемных узлов - ethernet-розеток, свичей, вайфай-соединений... Этот пинг поможет понять где проблема, во внутрисетевой связности или в последней миле.

    Учтите, что проблемы часто бывают комбинированные и каждое сочетание симптомов будет свидетельствовать о раных проблемах.
    Да, тревожным принаком может служить не только пропадание пакетов, но и скачки в длительности их возврата, особенно если такие длительности достигают 500мс и выше. Но и скачки от 3мс до 250мс тоже будут свидетельствовать о каких-то проблемах.

    Запускать пинг на всех компах лучше одновременно и на некоторое время. Например минут на 20. Потом по статистике будет видно сколько где пакетов пропало.

    2. Если критерии наличия проблемы позволяют, то можно попробовать отрубать части сети и смотреть наличие проблемы. Это я в том смысле, что если проблема происходит в среднем раз в пару-тройку часов, то отрубать на многие часы части сети при диагностикем ожет быть неприемлемым.
    Редкеи пробемы дольше отлавливать. Но напоминаю, что критерии можно детализировать, ведь если пакеты у вас пропадат относительно редко, то скачки времени их возврата могут случаться чаще и подсвечивать проблему. Также можно сделать рамер пакета близким к максимальному, это должно тоже в некоторых случаях участить проявление проблемы.
    Иногда не мешает нагрузить сеть комированием по локалке большого файла. В линуксе можнно с помощью утилиты tc послать большой поток рандомных байт на любой сокет..
    3. Плавающие проблемы случаются из-за плохого обжима, перебитого жверью кабеля, перегрызенного UTP в плинтусе, из-за умиращих конденсаторов в блоке питания роутера (БП может не выдавать необходимого при нагрузках тока, но вольтметром такая неисправность не будет различима без нагрузки). Вообще старые (да и не только) роутеры могут страдать поплывшими электролитическими конденсаторами не только в блоках питания.
    Хорошо, когда можно подменить роутер.
    4. ну с четвертым пунктом ничего не пососветуешь, только разделать и тестировать все по отедльности и в разных сочетания и да поможет нам ктулху.

    А для тех, кто дочитал этот опус до конйа - интересная задачка. Что пингуют эти команды, как и почему?
    ping 1.1
    ping 2130706433

    Тех, кто знает, попрошу не спойлерить=)
    Пусть для кого-то будет сюрпризом этот дивный мир=)

    UPD. Простите за адское количество опечаток в тексте. Писал в спешке и с непривычной клавиатуры. Исправлю всё попозже. Не ожидал, что многим ответ придётся по душе. Вроде ж накапитанил как мог.
    Ответ написан
    5 комментариев
  • Как Кинопоиск делает черный квадрат в захвате экрана?

    DMGarikk
    @DMGarikk
    Lead Software Developer
    Тут прям все теории заговора придумали с DRM (хотя доля истины в этом тоже есть)

    но никому не приходило в голову что видео в некоторых форматах через оверлей отображается, который не попадает в скриншоты и в захват экрана тупо потому что через отдельный механизм видеоподсистемы компа на экране отображается? (и не для целей drm, а просто потому что так устроено)
    Я такие удивленные вопросы еще лет 15 на форумах читал, когда drm-ом еще и не пахло (массово), а mpeg-ускорители уже во всех практически видеокартах были

    в линуксе это работает в т.ч. потому что там видеоподсистема по другому работает и велика вероятность что ускорение видео тупо не функционирует
    Ответ написан
    Комментировать
  • SVG Анимация, как установить z-index?

    RAX7
    @RAX7
    В svg нет z-index, как и многих других свойств, потому что это css свойства. Элементы рисуюся в том порядке, в котором они находятся в DOM.
    Как сделать тень смотри тут:
    https://developer.mozilla.org/en-US/docs/Web/SVG/E...
    https://www.w3schools.com/graphics/svg_feoffset.asp
    Ответ написан
    Комментировать
  • Как создать HTML элемент с нестандартными атрибутами с помощью JS?

    black1277
    @black1277
    Вольный стрелок
    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>Title</title>
    </head>
    <body>
    
    <script>
      const url = "//assets.pinterest.com/js/pinit.js"
      const newScript = document.createElement("script")
      newScript.setAttribute("async", "true")
      newScript.setAttribute("defer", "true")
      newScript.dataset.pinHover = "true"
      newScript.dataset.pinTall = "true"
      document.head.appendChild(newScript)
      newScript.src = url
    </script>
    </body>
    </html>

    А в чем сложность была?
    Ответ написан
    Комментировать
  • Как убрать крашнутые картинки?

    @GrayHorse
    Используй onerror у img элемента.

    <img src="not-loading-image.jpg" onerror="this.remove();">
    <img src="https://hsto.org/webt/62/a8/df/62a8df7d29053796257182.png" onload="console.log(this);">
    Ответ написан
    1 комментарий
  • Как сделать круговое расположение букв в словах?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Библиотека CircleType (демо)
    Ответ написан
    Комментировать
  • Какие есть толковые курсы по Android разработке на Kotlin?

    @kimstik
    Когда начинал учиться искал хорошую онлайн школу, но отзывы у всех были мягко говоря не очень. В итоге нашел репетитора (middle dev) на profi.ru, через год после начала обучения устроился с уровнем jun+.
    Я бы лично посоветовал бы найти человека который уже работает по специальности которую ты хочешь и перенимать его опыт, естественно не бесплатно.
    Ответ написан
    Комментировать
  • Как обновлять данные без перезагрузки страницы?

    @zkrvndm
    Софт для автоматизации
    Пример функции для выборочного обновления контента:
    async function elementUpdate(selector) {
    	try {
    		var html = await (await fetch(location.href)).text();
    		var newdoc = new DOMParser().parseFromString(html, 'text/html');
    		document.querySelector(selector).outerHTML = newdoc.querySelector(selector).outerHTML;
    		console.log('Элемент '+selector+' был успешно обновлен');
    		return true;
    	} catch(err) {
    		console.log('При обновлении элемента '+selector+' произошла ошибка:');
    		console.error(err);
    		return false;
    	}
    }

    Вызывайте функцию elementUpdate() передав внутрь него CSS-селектор того элемента, который вы хотите обновить.

    Например, если хотите обновить div-блок который имеет класс test, то достаточно выполнить:
    elementUpdate('.test');

    Если хотите выполнять обновление каждую секунду, можно использовать цикл:
    // Запускаем функцию autoUpdate по готовности страницы:
    
    document.addEventListener('DOMContentLoaded', autoUpdate);
    
    // Функция для запуска цикла:
    
    async function autoUpdate() {
    	
    	// Бесконечный цикл:
    	
    	while (true) {
    		
    		// Обновляем блок .test:
    		await elementUpdate('.test');
    		
    		// Выжидаем 1000 миллисекунд перед повторением цикла:
    		await new Promise(function(s) { setTimeout(s, 1000); });
    		
    	}
    	
    }
    
    // Функция для обновления контента:
    
    async function elementUpdate(selector) {
    	try {
    		var html = await (await fetch(location.href)).text();
    		var newdoc = new DOMParser().parseFromString(html, 'text/html');
    		document.querySelector(selector).outerHTML = newdoc.querySelector(selector).outerHTML;
    		console.log('Элемент '+selector+' был успешно обновлен.');
    		return true;
    	} catch(err) {
    		console.error('При обновлении элемента '+selector+' произошла ошибка:', err);
    		return false;
    	}
    }
    Ответ написан
    2 комментария
  • Как сделать динамическое обновление контекта, запрашиваемого через JSON?

    Keenest
    @Keenest
    Решил с помощью setTimeout и рекурсии функции, которая делает getJSON.

    Рекурсия-то там зачем?..

    Интересует как осуществить это правильней? И как похожие вещи сделаны в том же ВКонтакте (получение сообщений, комментарии), GMail и так далее?

    Как правильно уже сказали, лучше через websocket.
    Вот например была статья хорошая: habrahabr.ru/post/127525/
    Ответ написан
    Комментировать
  • Как правильно вставлять большие изображения на страницу?

    @bubn0ff
    it-шник
    img {
        max-width: 100%;
        height: auto;
        object-fit: cover;
    }
    Ответ написан
    Комментировать