Задать вопрос
  • Тормоза браузера из-за стилей, решение?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    Для начала для нас важно осознать, что у разных фильтров разная вычислительная сложность. Они не все "плохие". Алгоритмы для brightness, grayscale, hue-rotate и других манипуляций с цветом выполняются за O(1) для каждого пикселя. Т.е. нагрузка на железо растет линейно в зависимости от площади элемента на экране. Это не так страшно. А вот фильтры размытия, blur или drop-shadow, имеют сложность где-то в районе O(R^2). Там есть разные варианты оптимизаций, но в среднем мы говорим именно о квадратичной зависимости от радиуса размытия. И это для каждого пикселя. Именно отсюда мы имеем сильные тормоза при попытке что-то большое размыть на пол экрана. Дохлые видеокарты телефонов и ноутбуков не вывозят. Браузеры не умеют такие вещи переиспользовать, так что это переразмытие происходит снова и снова, и мы имеем что имеем.

    При этом фильтры в CSS, в SVG - это все грубо говоря высокоуровневые обертки над одними и теми же универсальными алгоритмами рендеринга. Мы можем в рамках WebGL написать свои шейдеры, которые будут делать то же самое. Обертки разные, но алгоритмы одинаковые. Поэтому замена одной технологии на другую ничего особо не даст в плане производительности. В вопросах оптимизаций нам нужно не по-тупому менять инструменты-обертки, а смотреть в конечные алгоритмы, которые будут задействованы на странице в реальном времени, и по возможности рассчитывать все заранее и переиспользовать.

    В контексте верстки тут есть полтора варианта, что можно сделать. Можно рассчитывать такие вычислительно-сложные штуки еще при разработке и загружать в страницу сразу в виде картинок или видео. Это не идеальный вариант, пропорции получаются фиксированные, но иногда подходит. Есть вариант рассчитывать такие штуки в фоне на WebGL. Т.е. мы грузим интерфейс, смотрим какого там все размера получается, и один раз в фоновом режиме генерируем картинки нужного размера и потом плавно показываем. Такой вариант частенько встречается в рекламно-конкурсных проектах, когда за прелоадером в начале скрывается в том числе и такая генеративная история. Тут мы получаем гибкость в плане размеров и хорошую производительность сайта в целом, потому что все операции проходят только один раз, а дальше у нас все переиспользуется в виде обычных картинок. Каких-то принципиально других вариантов у нас пока нет. Только дизайн менять.
    Ответ написан
    3 комментария
  • Видит ли провайдер к какому порту сервера я подключаюсь при использовании протокола SSH?

    CityCat4
    @CityCat4 Куратор тега VPN
    Дома с переломом ноги
    Может и увидит и что из этого? Провайдеру насрать на твой трафик, вся нужная инфа уже сама слилась в СОРМ. А если надо - придут, вежливо ввынесут дверь и спросят :)
    Ответ написан
    Комментировать
  • Где и как сдать сервер в аренду?

    @Everything_is_bad
    Забить, непонятно от кого, непонятно с каким SLA, такое нужно будет только спамерам, т.е ты сам себе найдешь приключений
    Ответ написан
    1 комментарий
  • Трансляция видеострима из единого игрового мира?

    @Drno
    Так же по сути работает и облачный гейминг... тут Вы просто делаете еще одну сложность и опускаетесь на уровень ниже
    Ответ написан
    Комментировать
  • Какие технологии использовать для создания веб-сайта на go?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Чаще всего такие задачи реализуются не на Go.
    Ответ написан
    Комментировать
  • Как настроить смену порта SSH, чтобы успешно подключаться при его смене?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Во-первых, начало сессии с портом :1234 говорит о том, что не к :2222 вы подключались.

    Во-вторых, после смены порта с 22 на 1234 вы правило проброса 2222->22 не меняли? А ведь должно было стать 1234->1234...

    И в-третьих, что за служба ssh.service? Есть же посконно-дефолтное sshd.service.
    Ответ написан
    7 комментариев
  • На чем построить базу IP-адресов?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    sqlite сразу идёт мимо, он плохо подходит для многопользовательской работы. В остальном - что лучше знаете, на том и пишите.
    Ответ написан
  • На чем построить базу IP-адресов?

    @Everything_is_bad
    Это можно написать на любом современном веб стеке.
    Ответ написан
    1 комментарий
  • Сколько конкретно битов в одной секции озу?

    anthtml
    @anthtml
    Системный администратор программист радиолюбитель
    8 чёрных секций

    Это непосредственно чипы памяти, раз 8, значит каждый по 2Гб, или 16Гбит, если хотите разобраться в них подробнее то OK Google "%маркировка чипа% datasheet" и там о нем будет все подробно расписано на несколько сотен листов
    Ответ написан
    5 комментариев
  • Как установить программу с github в Ubuntu при помощи терминала?

    @q2digger
    никого не трогаю, починяю примус
    Открыть гитхаб проекта и сразу найти там ссылку на страницу с инструкцией по установке и запуску.
    https://prismlauncher.org/download/linux/
    Ответ написан
    Комментировать
  • Как посчитать сумму ячеек в строках таблицы на JS?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега JavaScript
    1. Получаем все нужные td, используя querySelectorAll.
    2. Получаем для каждой ячейки значение (видимо, из инпута?).
    3. Приводим значение к числу.
    4. Прибавляем получившееся число к сумме.


    Какой конкретно из этих элементарных пунктов вызывает у вас сложности? В чём эти сложности заключаются? Какой код у вас получился на данный момент?
    Ответ написан
    6 комментариев
  • Можно ли "по быстрому" собрать телефон?

    Может стоит для начала какие-то ардуино попробовать или что-то похожее?

    Это будет легче всего, но это будет далеко от современных телефонов.

    Я бы взял какой-нибудь одноплатник типа raspberry
    Ответ написан
    3 комментария
  • Как записать это выражение?

    wataru
    @wataru Куратор тега Математика
    Разработчик на С++, экс-олимпиадник.
    Да, нижние индексы - это обозначение системы счисления. Так, 110 в двочиной - это 6 в десятичной, или вот то разложение по степеням двойки.
    Ответ написан
  • Как записать это выражение?

    @Mercury13
    Программист на «си с крестами» и не только
    Добавлю от себя: десятичная система счисления справа не имеет смысла: нет такого понятия, как десятичный плюс. Слева — двоичная система счисления, справа — РОДНАЯ, в которой мы проводим расчёты, будь это двоичная, десятичная, фибоначчиева или просто чёрточки на песке.

    Перед нами самое обычное определение позиционной системы счисления. Слева индекс имеет смысл (мы указываем основание), справа не имеет (мы работаем в «родной» для нас системе).

    UPD. Мы, конечно, можем написать: (123 + 456)10, что значит: все числа в скобках в десятичной системе. Только в вашем примере в скобках нет ни многозначных чисел, ни сверхдесятичных систем счисления (B16=11), чтобы это имело какой-то смысл. Цифра два — она и в Африке два: мы договорились, что она значит || независимо от системы счисления. Если, конечно, не делать из неё многозначные числа.

    Да, на языке программирования вы записали правильно, хотя чаще на компьютерах используется схема Горнера:

    ((1) * 2 + 1) * 2 + 0

    Во многих языках есть запись 0b110.
    Ответ написан
    7 комментариев
  • Каким алгоритмом воспользоваться для поиска вхождений диапазона чисел в другой диапазон?

    @KarlJohnson
    Задачу не совсем понял. Но вот как понял
    const testArray = [[25, 40], [18, 18], [18, 60], [19, 47]];
    
    for (let i = 0; i < testArray.length; i++) {
        for (let j = 0; j < testArray.length; j++) {
            if (i === j)
                continue;
            if (testArray[i][0] >= testArray[j][0] && testArray[i][1] <= testArray[j][1])
                console.log(`[[${testArray[i]}], [${testArray[j]}]]`);
        }
    }


    Ответ:
    [[25,40], [18,60]]
    [[25,40], [19,47]]
    [[18,18], [18,60]]
    [[19,47], [18,60]]
    Ответ написан
    1 комментарий
  • Как написать прикладной протокол?

    @MarkusD
    все время мелю чепуху :)
    Первое что стоит понять: модель OSI не является строгой и не ограничивает разработчиков своими рамками.
    Например, верно, стек TCP/IP задает самостоятельную модель. Делается это через отождествление групп уровней OSI на уровни TCP/IP.

    Этап следующий. 4-й уровень модели TCP/IP эквивалентен группе из 5-7 уровней OSI. Что это означает.
    Базируясь на некотором транспортном протоколе 4-го уровня OSI, тебе потребуется поднять 5-й, 6-й и 7й уровни самостоятельно.

    На 7-м уровне у тебя должен быть прикладной код, с которым клиент твоего протокола будет общаться через DTO/VO.
    На 6-м уровне должна обеспечиваться трансляция данных между DTO/VO 7-го уровня и JSON для передачи по сети.
    На 5-м уровне нужно обеспечить гарантию сессии через проверку и внедрение в трафик маркера сессии, т.е. того самого ABC.

    Разведи свой код на такие уровни и тебе все станет ясно.
    Ответ написан
    1 комментарий
  • Как передать объект стилей из константы в StyleSheet.create?

    Elaryks
    @Elaryks
    Можно попробовать как-то так:

    const styles: StyleSheet.NamedStyles<any> = {
        button: {
            position: 'absolute',
        },
    }
    
    export const scaledStyles = StyleSheet.create(styles);


    Или так:

    const styles = {
        button: {
            position: 'absolute',
        },
    }
    
    export const scaledStyles = StyleSheet.create<any>(styles);
    Ответ написан
    1 комментарий
  • Как лучше переписать условие?

    Elaryks
    @Elaryks
    export const Footer = (props?: IFooterProps) => {
      return (
        <View style={styles.container}>
          {props?.button ? (
            <>
              <RNHoleView style={styles.background} holes={[hole]}>
                <View style={styles.maskBorder}></View>
              </RNHoleView>
              {props.button}
            </>
          ) : (
            <View style={styles.background}></View>
          )}
        </View>
      );
    };
    Ответ написан
    Комментировать
  • Как лучше переписать условие?

    @null_object
    export const Footer = (props?: IFooterProps) => {
        return (
            <View style={styles.container}>
                {props && props.button ? (
                  <>
                     <RNHoleView style={styles.background} holes={[hole]}>
                          <View style={styles.maskBorder}></View>
                      </RNHoleView>
                      {props.button}
                   </>
                ) : (
                  <View style={styles.background}></View>
                )}
            </View>
        );
    };
    Ответ написан
    3 комментария
  • Как масштабировать число с идеальной точностью?

    vaut
    @vaut
    Предлагаю решить уравнение
    11*x=13
    И почитать что такое рациональные числа.
    Ответ написан
    2 комментария