• Как отследить прокрутку страницы в браузере?

    если кнопка появляется в определенный момент то
    https://developer.mozilla.org/en-US/docs/Web/API/M...
    Если просто доскроливаешь до кнопки и она вылазит
    https://developer.mozilla.org/ru/docs/Web/API/Inte...
    Ответ написан
    Комментировать
  • Как отсортировать массив, имеющий текст с числами в JS?

    @GrayHorse
    const {compare} = new Intl.Collator(undefined, {
        numeric: true
    });
    const array = ["x32-Sar", "x2-Far", "x1-Tar", "x11-Har"];
    array.sort(compare); // ["x1-Tar", "x2-Far", "x11-Har", "x32-Sar"]
    Ответ написан
    Комментировать
  • Если у меня статический ip, является ли он публичным и общедоступным?

    DevMan
    @DevMan
    статический может быть серым.
    динамический может быть белым.
    такие дела.

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

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Представьте, что вам нужно изучить иностранный язык и от выбора языка зависит сколько людей в мире вы будет понимать, какое количество текстов вы сможете прочитать, сколько вакансий вам будет доступно и какого размера зарплаты вам светят. Что выберите - английский или венгерский? Так же у языка программирования. Пока на нём нет вакансий, никто не хочет его учить, а пока никто не хочет его учить, на нём нет вакансий. Вырваться из замкнутого круга можно только двумя путями - либо язык предлагает суперконкурентное преимущество программисту, либо ему выдаёт кредит доверия гигантская корпорация. Очевидно. у D не нашлось ни того, ни другого.
    Ответ написан
    24 комментария
  • Обьясните правда ли эти 2 процессоры очень разные по мощности?

    xez
    @xez
    TL Junior Roo
    Процессор - слишком сложная штука для того чтобы делать вывод о его производительности только по количеству ядер и его частоте.
    До пентиума 4, включительно, все было довольно просто: чем больше мегагерц (а потом гигагерц) - тем процессор быстрее. С тех пор прошло уже 20 лет, кстати.
    У Pentium 4EE частота была уже 3.8Ghz и стало как-то понятно, что дальнейшее ее повышение не дает такого сильного прироста к производительности, как и раньше, да и "стоит" значительно дороже. Поэтому производители начали наращивать количество ядер, увеличивать объем кеш-памяти, и, самое главное, улучшать микроархитектуру (микроархитектуру, вобщем-то, они и так всегда улучшали).

    Вот скриншот из AIDA64:
    61c039d0a31d3774198992.png

    Можно заметить, что частоты у процессоров не слишком то коррелируют с их производительностью.

    Поэтому и существуют многочисленные тесты и бенчмарки, по которым можно понять реальную производительность конкретного процессора в конкретной задаче.
    И да, видимо, i5-2500K быстрее чем Athlon II X4 650
    Ответ написан
    Комментировать
  • Где писать на Assembler-е?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    К сожалению, твой вопрос похож на "какой командой ассемблера пакман ест чертика".

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

    Для начала, подучи С/С++ до уровня, чтобы ты мог писать простые консольные программки, вроде "открыть файл, записать в него что-то", "открыть файл, прочитать с него что-то".
    Затем можешь изучить как загружается операционная система с диска, разобраться с тем что такое BIOS на самом деле (а не думать что bios это то меню, в котором можно выбрать грузиться с диска или флешки), и подумать сможешь ли ты написать собственный загрузчик операционной системы.
    Потом можно почитать/полистать хотя бы 1-2 ЛЮБЫЕ книжки по ассемблеру (и не бойся такие простые вопросы задавать гуглу). Рекомендовать тебе самое лучшее нет смысла.

    А вопросы следует задавать, когда ты уже знаешь примерно половину ответа. Тогда это будут правильные вопросы.
    Ответ написан
    1 комментарий
  • Где писать на Assembler-е?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Assembler
    Седой и строгий
    Я хочу его изучить для того , чтобы в будущем сделать свою Операционную Систему.

    ОС можно и не на ассемблере написать.

    Подскажите советы какой ассемблер подойдет: (NASM , FASM , ASM и тд)

    Любой.

    где изучить его

    В учебнике.

    в какой программе писать

    В любом текстовом редакторе.
    Ответ написан
    18 комментариев
  • Где ошибка при написании полифила для Array.prototype.flat?

    0xD34F
    @0xD34F
    То, что возвращает рекурсивный вызов, тоже в результирующий массив надо засовывать.
    Ответ написан
    Комментировать
  • Что значит префикс "х" в адресе сайта?

    AgentSmith
    @AgentSmith
    Это мой правильный ответ на твой вопрос
    Это поддомен, а не префикс.
    Или домен третьего уровня.
    Ничего он не означает, так же как и m.
    Ответ написан
    Комментировать
  • Почему не получается отписаться от события?

    Потому что removeEventListener должен вызываться с указателем на ту функцию от которой ты хочешь отписаться в качестве второго аргумента (указывать должны на один и тот же объект в памяти), а у тебя он вызывается с двумя абсолютно разными функциями (одинаковый код в функциях это не тоже самое что указатель на один и тот же объект в памяти).
    https://developer.mozilla.org/en-US/docs/Web/API/E...
    Это событие отписывается не от всех слушателей, а от одного конкретного, указатель на который ты передашь в аргумент.
    Грубо говоря, сначала регистрируешь функцию, которая будет слушателем, а потом одну и туже функцию используешь и в addEvent и в remove
    Ответ написан
    1 комментарий
  • В чём суть шутки про ноги в С/С++?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега C
    Седой и строгий
    "Выстрелить себе в ногу" - это идиома англоязычного мира, означающая причинение себе вреда необдуманными действиями. Языки C и C++ достаточно низкоуровневые языки, чтобы на них можно было делать опасные вещи. При этом первый вообще никак не контролирует действия программиста и позволяет написать любую ересь, а у второго такое количество тёмных уголков, в которых можно ересь сделать случайно, что не все знают даже спецы с десятилетиями опыта. Эти два совокупных фактора превращают программирование на Сях и Плюсах в изготовление приспособлений для стрельбы по собственным ногам.
    Ответ написан
    Комментировать
  • Адаптер USB Type C to HDMI как заставить работать монитор?

    deepblack
    @deepblack
    Тут как минимум два варианта:
    Ответ написан
    Комментировать
  • Почему js код не работает?

    YavaDev
    @YavaDev
    pageYOffset - буковка "O" должна быть большой
    Ответ написан
    5 комментариев
  • Как правильно работать с git?

    fox_12
    @fox_12
    Расставляю биты, управляю заряженными частицами
    Какие пути есть кроме написания actions на гите

    Можно еще webhook использовать.
    На клиенте при этом можно что-то вроде этого установить:
    https://github.com/adnanh/webhook чтобы выполнять деплой по событию.
    Ответ написан
    Комментировать
  • Можно ли установить Linux на разные диски?

    Adamos
    @Adamos
    У меня composer, node_modules и docker только сожрали места на корне 50гб когда я развернул проекты

    Видимо, проекты зачем-то развернуты в /var/www - в чем нет ни малейшей необходимости. У меня они вообще лежат на примонтированном в /media/ разделе терабайтного HDD.
    Программы столько не едят, и их совершенно необязательно ставить в /usr или /opt, особенно JAVA-программы типа PhpStorm, которым вообще совершенно похрен, где располагаться (у меня они, например, лежат в ~/JAVA).
    Корневому разделу, если не валить в него все подряд, а хоть немного разобраться, 75 гиг - за глаза и по уши.
    Если станет тесно - проверить, не засран ли логами /var/log и не раздулись ли до неприличия базы (их файлы тоже можно вынести из папки по умолчанию в произвольное место, элементарно).
    Ответ написан
    1 комментарий
  • Как заставить программу использовать CPU только по мере небходимости?

    hint000
    @hint000
    у админа три руки
    Как он, например, узнаёт, нажата ли кнопка? Для этого надо выполнять цикл как можно чаще
    Как вы узнаёте утром, что надо просыпаться и идти на работу или в школу? Для этого надо всю ночь смотреть на часы как можно чаще. :)
    А можно просто "сказать" будильнику (или родственникам), чтобы разбудили в нужное время. Вот так и программа доверяет операционной системе "разбудить" её, когда кто-то нажмёт на кнопку. А пока никто не нажал, программа спит и не тратит ресурсы.
    Операционная система в любом случае знает обо всех нажатиях кнопок и обо всех движениях мыши, она решает, какой программе передать эти нажатия или движения, т.е. какую программу нужно разбудить сейчас. Как только программа обработает событие, она снова уснёт, если больше нечего обрабатывать.
    Ответ написан
    Комментировать
  • Почему так работают битовые сдвиги в Java?

    Vamp
    @Vamp
    Битовый сдвиг для типа long не может превышать 63. Поэтому сдвиг 1L << 64 будет преобразован jvm в 1L << (64 & 0x3f), в результате чего получается 1L << 0 и поэтому у вас значение не изменяется.

    Вашу задачу решает сдвиг 1L << 63. Единица изначально находится на 1 позиции (позиции нумеруются справа налево) и сдвигается влево на 63 позиции. Вы получаете желаемую единицу на 64 позиции с 63 нулями позади.

    Что касается 128L << 56, то здесь всё корректно и логично. Единица находится на 8 позции и имеет 7 нулей сзади. Сдвигая её на 56 позиций, у вас получается желаемый результат - единица на 64 позиции (8 + 56) и 63 нуля позади (7 нулей + 56).
    Ответ написан
    Комментировать
  • Как определить свойство как класс, который расширяет другой класс?

    Lynn
    @Lynn
    nginx, js, css
    Ну так и укажите там RegExp. Любой класс который его расширяет туда подойдёт
    interface ChtotoTam {
       f: RegExp
    }


    https://www.typescriptlang.org/play?#code/MYGwhgzh...
    Ответ написан
    Комментировать
  • В чем проблема слэш команд?

    nowm
    @nowm
    У дискорда есть такая фишка, что на interaction нужно ответить в течение 3-х секунд. Если не успели, он начинает выдавать такую ошибку. Есть несколько вариантов:

    1. Сразу после того, как был получен interaction, нужно вызвать interaction.deferReply. Вызов deferReply даёт возможность продлить срок ответа до 15 минут. Дальше как обычно — делаете pool.query и потом interaction.reply
      await interaction.deferReply();
      // После вызова кода выше, дискорд даёт ещё 15 минут 
      // на то, чтобы отправить ответ.
      
      // [Тут какой-то ваш код, который долго работает]
      
      await interaction.reply('Информация о сервере: бла-блабла');


    2. Можно использовать механизм Follow-ups. В таком случае вы сразу что-нибудь отвечаете с помощью interaction.reply, потом делаете pool.query и потом добавляете ещё текст с помощью interaction.followUp:
      await interaction.reply('Ща, погодь, нужно в БД посмотреть...');
      // После вызова кода выше, дискорд даёт ещё 15 минут 
      // на то, чтобы отправить follow up.
      
      // [Тут какой-то ваш код, который долго работает]
      
      await interaction.followUp('Вот, нашёл: Информация о сервере: бла-блабла');
      // Код выше добавляет к ответу текст "Вот, нашёл: Информация о сервере: бла-блабла" 
      // (фраза «Ща, погодь» никуда не пропадает)


    3. Можно точно так же сразу ответить, но вместо interaction.followUp вызывать interaction.editReply. В этом случае даётся тоже 15 минут на то, чтобы вызвать editReply.
      await interaction.reply('Подождите...');
      // После вызова кода выше, дискорд даёт ещё 15 минут 
      // на то, чтобы отредактировать это сообщение
      
      // [Тут какой-то ваш код, который долго работает]
      
      await interaction.editReply('Информация о сервере: бла-блабла');
      // Код выше заменяет "Подождите.." на "Информация о сервере: бла-блабла"


    Ответ написан
    Комментировать