• Как отрубить NAT на роутере?

    Jump
    @Jump
    Системный администратор со стажем.
    Провайдер не обязан вам выдавать белый IP.
    Раньше выдавал, сейчас перевел на серые.
    Если не устраивает - обращайтесь к провайдеру и покупайте белый статический IP. Как правило это стоит в районе от 50 до 200рублей в месяц.
    Если провайдер не выдает белый адрес - меняйте провайдера.
    Ответ написан
  • Как отрубить NAT на роутере?

    @Drno
    Пиздит провайдер. Вас убрали за нат.
    Купите услугу внешнего IP и не всё будет по «правильному»
    Ответ написан
    Комментировать
  • Как сделать чтобы после logina оставаться залогиненым на любых вкладках?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Во-первых, хранить в куках email для подтверждения авторизованности пользователя - глупо. Обычно там хранят какой-нибудь уникальный MD5, который ещё и в базе залогиненных пользователей хранится. А так можно взять известный email известного пользователя, засунуть его в cookie - и вуаля, я авторизован под этим пользователем.

    Во-вторых, cookie можно выставлять с самого сервера во время AJAX-запроса, и это будет правильнее. Нельзя такой функционал делегировать JS, который виден и выполняется на стороне пользователя.

    P.S. В области безопасности игнорирование устоявшихся стандартов и изобретение своих хитрозакрученных "велосипедов" может очень больно спустить на землю.
    Ответ написан
    3 комментария
  • Как после отправки данных запретить возвращение на старую?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Сделайте возврат просто бессмысленным. Например одноразовым ключём. Первое посещение странички - ключ есть, всё делается стандартно, а стирается. Повторное обращение с этим же ключём приводит к ошибке, потому что он уже стёрт.

    Всё остальное - это элегантная попытка прятаться за шваброй.
    Ответ написан
    Комментировать
  • Как после отправки данных запретить возвращение на старую?

    mdn

    There is no way to clear the session history or to disable the back/forward navigation from unprivileged code.


    Разве что открыть ссылку в новой вкладке, а текущую закрыть)
    Ответ написан
    Комментировать
  • Почему http сервер через net медленнее чем через http?

    Lynn
    @Lynn
    nginx, js, css
    Потому что http держит соединения, а в net вы уничтожаете сокет после каждого запроса.
    Ответ написан
    Комментировать
  • Какие еще преимущества SSD кроме скорости?

    Jump
    @Jump Куратор тега Твердотельные накопители
    Системный администратор со стажем.
    Какие еще преимущества SSD кроме скорости?
    Преимущество у SSD одно - скорость записи и чтения мелкими блоками. Как правило речь идет о блоках размером 4к.
    Скорость хорошего HDD не более 1мегабайта в секунду.
    Скорость среднестатистического SSD колеблется в районе от 15-60мегабайт в секунду.
    Современная работа на компьютере это куча потоков записи чтения. Обычный HDD не справляется - и компьютер тормозит.

    Это если речь идет о диске под систему, бд, горячие данные.
    А если вы не планируете на него ставить ОС, а использовать диск для хранения архива фотографий например, то HDD лучше - ибо за ту же цену больший объем.
    Ответ написан
    Комментировать
  • Какая из двух программ врёт?

    ky0
    @ky0
    Миллиардер, филантроп, патологический лгун
    Щуп проверенного градусника, засунутый к процессору вас рассудит.
    Ответ написан
    1 комментарий
  • Как сделать документацию к коду?

    @kn0ckn0ck
    Продюсер
    Есть две крайности, которых лучше избегать:
    1. красивая и исчерпывающая документация требует колоссальных ресурсов на поддержку
    2. сложно воспринимаемый код, без малейших подсказок с чего все начинается и чем заканчивается

    Стандартные решения:
    1. самодокументируемый код, составленный так, что читающий может понять что для чего и в какой последовательности работает.
    2. описание интерфейсов (назначение метода, тип/суть параметров и т.п.) в форме комментов в коде.
    3. автоматическая документация (генерится из комментариев) - эффективно, только если сам код закрыт.
    4. модульные тесты, фиксирующие требования к коду и демонстрирующие его использование.
    5. описание высокоуровневого дизайна (High Level Design, HLD), описывающий какие элементы существуют, их взаимосвязь друг с другом и основные сценарии взаимодействия.

    Работающая документация - это компромисс из этих практик, релевантный конкретной ситуации.

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

    strangerintheq
    @strangerintheq
    z = z*z + с
    все побитовые операции в js приводят сначала число к целому

    https://learn.javascript.ru/bitwise-operators

    Побитовые операторы работают следующим образом:

    1. Операнды преобразуются в 32-битные целые числа, представленные последовательностью битов. Дробная часть, если она есть, отбрасывается.
    2. Для бинарных операторов – каждый бит в первом операнде рассматривается вместе с соответствующим битом второго операнда: первый бит с первым, второй со вторым и т.п. Оператор применяется к каждой паре бит, давая соответствующий бит результата.
    3. Получившаяся в результате последовательность бит интерпретируется как обычное число.
    Ответ написан
    2 комментария
  • Второй HDD перестал отвечать на запросы системы, как отформатировать?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Если информация на HDD действительно важна, то несите его специалисту для восстановления, но это очень дорого.
    Если не важна, то выбрасывайте и ставьте новый.
    Ответ написан
    1 комментарий
  • Как поменять значение (true/false) переменной при клике?

    Ответ написан
    Комментировать
  • А как выглядит Ваш файл hosts?

    @pfg21
    ex-турист
    ну а погуглить по слову unchecky не судьба ??
    https://habr.com/ru/post/203660/
    все норм, в хост навпихованы затычки от всякого хрени.
    Ответ написан
    3 комментария
  • А как выглядит Ваш файл hosts?

    john36allTa
    @john36allTa
    alien glow of a dirty mind
    0.0.0.0 указавыет в этом случае на то, что доменное имя, записанное справа от него, не достижимо. Этот адрес нужен для того, чтобы запретить запросы к удаленному хосту по fqdn
    Ответ написан
    1 комментарий
  • Как можно упростить код со множеством if?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Если лишние свойства в объекте не поломают работу, можно так:
    const opts = this.selectedOptions;
    const data = {
      count: optionCount || 0, // значения по умолчанию
      name : optionName  || '',
      info : optionChars || '',
      price: optionPrice || '',
      value: optionValue || '',
    }
    switch (type) {
      case 'p':
      case 'c':
      case 'm':
      case 'radio':
      case 'button':
        opts[type] = data;
        break;
      case 'disk':
        opts[type + t.diskNumber] = data;
        break;
      case 'checkbox':
        opts[type][`check${data.checkId}`] = data;
    }
    Ответ написан
    Комментировать
  • Как добавить репозиторий новой убунты в старую?

    Если нужны файлы разработки для nodejs то в ubuntu 18.04 этот пакет называется по другому - nodejs-dev.

    По описанию nodejs-dev в ubuntu-18.04 тоже самое что libnode-dev в ubuntu-19.04

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

    Не работает потому, что и 6 и 2 — по две. Из-за этого неопределённость среди них.
    С неравными количествами этого не возникает:
    >>> frequency_sort([4, 6, 2, 2, 6, 4, 2, 4, 4])
    [4, 4, 4, 4, 2, 2, 2, 6, 6]

    spoiler

    Починить можно добавив само значение к ключу сортировки:
    def frequency_sort(items):
        return sorted(items, key=lambda v: (items.count(v), v), reverse = True)

    Ответ написан
    5 комментариев
  • Как работает оператор +?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    В js оператор + перегружен. Можно представить, что под капотом он вызывает функцию от двух аргументов (левого и правого операнда), примерно такую:
    function add(left, right) {
      const typeLeft = typeof left;
      const typeRight = typeof right;
      if(typeLeft === 'string') {
        return left.concat(right);
      }
      if(typeRight === 'string') {
        return right.concat(left);
      }
      if(canConvertToNumber(left, typeLeft) && canConvertToNumber(right, typeRight)) {
        return Number(left) + Number(right); // тут уже не перегруженный вариант + иначе будет бесконечная рекурсия
      }
      if(typeLeft === 'bigint' && typeRight === 'bigint') {
        return left + right; // опять не перегруженный вариант
      }
      if(
        (typeLeft === 'bigint' && canConvertToNumber(right, typeRight))
        || (typeRight === 'bigint' && canConvertToNumber(left, typeLeft))
      ) {
        // если предыдущий if не прошел, а проходит этот
        // то мы складываем bigint с не bigint, а так нельзя
        throw new TypeError('Cannot mix BigInt and other types, use explicit conversions');
      }
      // во всех остальных случаях приводим к строке:
      return String(left).concat(right);
    }
    
    function canConvertToNumber(item, type) {
      return item === null || type === 'number' || type === 'boolean' || type === 'undefined';
    }
    Ответ написан
    Комментировать
  • Как работает оператор +?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    + является особенным оператором, исключением, отличающимся от других математических операторов.
    Почти все математические операторы выполняют численное преобразование. Исключение составляет +.
    Если одно из слагаемых является строкой, тогда и все остальные приводятся к строкам.

    Тогда они конкатенируются (присоединяются) друг к другу:

    alert( 1 + '2' ); // '12' (строка справа)
    alert( '1' + 2 ); // '12' (строка слева)
    Подробнее: https://learn.javascript.ru/type-conversions

    Для сравнения:
    '42' / 2 // 21
    '42' - 2 // 40
    '42' * 2 // 84
    '42' + 2 // "422"   ¯\_(ツ)_/¯
    
    1 + 2 + 3 + 4 + 5 // 15
    1 + 2 + 3 + '4' + 5 // "645"
    + работает слева-направо. Поэтому 1+2+3 всё ещё число, а дальше '4' заставляет переключиться на строки.
    Ответ написан
    Комментировать