Задать вопрос
  • Насколько часто по вебсокет могут не доходить меседжи до цели?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    На столько, на сколько часто этом может происходить в любом TCP соединении.
    https://ru.wikipedia.org/wiki/TCP
    Хотя протокол осуществляет проверку контрольной суммы по каждому сегменту, используемый алгоритм считается слабым [1]. В общем случае распределенным сетевым приложениям рекомендуется использовать дополнительные программные средства для гарантирования целостности передаваемой информации[2].

    Т.о. в вашем случае вам следует дополнительно реализовать свой механизм контроля доставки сообщений в рамках используемого вами протокола поверх WS или поверх самого протокола. Так же имеет смысл использовать пульс - периодический пинг клиента/сервера. Например, в случае плохой мобильной связи соединение может оборваться, но и клиент и сервер будут считать, что оно есть и пытаться отправить или ожидать данные. При этом, теоретически и согласно всем нормам уже на уровне ОС сокет должен закрыться через несколько секунд, но тут вступает в дело такой фактор как "опции создания сокета" и, особенно, "таймаут сокета" - разные разработчики могут использовать разные опции при запуске сервера/клиента и как результат в разных ОС это поведение может отличаться и сокет может зависнуть, а ОС его сама не закроет. Так что тут поможет только пульс - в WS пинг часть протокола.
    Ответ написан
    Комментировать
  • Длина payload в ethernet 802.3 кодируется всего двумя байтами. Как?

    @Zerg89
    1 байт 2^8=255
    -1_111 1111 1111 1111 - 16 бит, 2 байта
    2 байта (2^16)=2^15=-32 768..32 768 1 бит уходит под отрицательные значения
    Ps хотя это 2 байта integer
    А так как здесь отрицательные не нужны скорее всего просто 2^16=0..65 535
    Ответ написан
    Комментировать
  • Длина payload в ethernet 802.3 кодируется всего двумя байтами. Как?

    GavriKos
    @GavriKos
    когда максимальное значение которое мы можем указать двумя байтами это 255?

    255 это 1 байт.
    1111 1111 - 8 бит, 1 байт.
    А 2 байта поболе будут )
    Ответ написан
    3 комментария
  • Как расшифровать sh скрипт?

    CityCat4
    @CityCat4
    Дома с переломом ноги
    Интересно, с какого такого гардероба Вы решили, что это скрипт? Это исполняемый файл формата elf, отладлчная информация удалена. Убедиться в этом можно с помощью команд file и ldd
    Ответ написан
    Комментировать
  • Почему возникает ошибка в моем коде (баг f-строк)?

    @dim5x
    ЗИ, ИБ. Помогли? Поблагодарите. Отметьте ответом.
    Используйте версию питона >=3.12.
    До Python 3.12 обратные косые черты не допускались внутри поля замены f-строки. f-strings

    Или, если это невозможно, то так:
    things = ['Thing one','Thing two','Thing three']
    nl = '\n'
    print(f"I have a list of things:\n{nl.join(things)}")
    Ответ написан
    Комментировать
  • В чем суть логической ошибки, продемонстрированной в старинном учебнике?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    ЕСЛИ треугольник прямоугольный ТО квадрат гипотенузы равен сумме квадратов катетов
    Отсюда не следует, что
    ЕСЛИ квадрат гипотенузы равен сумме квадратов катетов ТО треугольник прямоугольный
    Правильное обратное утверждение:
    ЕСЛИ квадрат гипотенузы НЕ равен сумме квадратов катетов ТО треугольник НЕ прямоугольный

    Простейший аналог:
    ЕСЛИ животное это собака ТО у неё четыре лапы ⇏ ЕСЛИ у животного четыре лапы, ТО это собака
    ЕСЛИ животное это собака ТО у неё четыре лапы ⇒ ЕСЛИ у животного НЕ четыре лапы, ТО это НЕ собака

    Студент должен был доказать, что квадрат гипотенузы равен сумме квадратов катетов только в прямоугольных треугольниках и обосновать утверждение
    ЕСЛИ треугольник прямоугольный ТОГДА И ТОЛЬКО ТОГДА квадрат гипотенузы равен сумме квадратов катетов
    Ответ написан
    2 комментария
  • Что выбрать для хостинга сайта: 2 ядра до 5 ГГц или 6 ядер до 3.2 ГГц?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    Для конкретного сайта уже ответил Everything_is_bad: для текущей нагрузки оба сервера - это оверкилл, даже для DLE с их идиотcкими xfields в БД. Хватит и одного ядра с гигом памяти.

    Но если отвечать на сферический вопрос в вакууме "что выбрать для хостинга", то ответ освершенно очевиден: второй. Эти два сервера вообще несравнимы. И дело даже не в том, что веб сервер - это по определению параллельные запросы, а вся нагрузка приходится на БД (особенно в случае идиотской БД dle) - то есть нам количество ядер куда важнее их частоты, которая всё равно будет молотить впустую. Но там ещё и памяти больше на порядок. То есть даже если бы у второго сервера было всего два ядра, то в общем случае всё равно следовало бы выбрать его. Просто потому что основная нагрузка - это БД, а скорость БД - это память.
    Ответ написан
    3 комментария
  • Что выбрать для хостинга сайта: 2 ядра до 5 ГГц или 6 ядер до 3.2 ГГц?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Что выбрать для хостинга сайта: 2 ядра до 5 ГГц или 6 ядер до 3.2 ГГц?

    В зависимости от основного типа нагрузки:
    - IO bound - больше ядер.
    - CPU bound - больше частота.
    сайт работает на CMS DLE.

    Если это основная нагрузка, то больше ядер. А вот сколько конкретно ядер - можно вычислить в админке хостера (самый простой способ), если нагрузка на машину доходит до 100%, то пора докинуть ядер или оперативки.
    Текущая посещаемость — около 3000 уникальных пользователей в день.

    Правильнее считать не общую нагрузку, а максимальное количество запросов к серверу в секунду (max rps).
    Ответ написан
    Комментировать
  • Что выбрать для хостинга сайта: 2 ядра до 5 ГГц или 6 ядер до 3.2 ГГц?

    @RomanKu
    Поскольку, присутствует вариант конфигурации 2 ядра до 5 ГГц, то стоит рассмотреть данный вопрос в двух плоскостях: теоретической и практической. В контексте старый, но жирный и современный, но урезанный.

    В теоретической плоскости надо смотреть на характер нагрузки:
    1. Требуется ли специфичные вычисления, например AVX2 инструкции, шифрование и т.д., если да. то лучше взять современное железо, иначе же прироста в 5Ггц не будет много. В данном случае (CMS), скорее 2 вариант подойдет.
    2. Требуются ли сложные однопоточные вычисления? Например, какой-то сложный алгоритм обработки запроса, и т.д. если да, то одно производительное ядро будет лучше, чем много слабых, В данном случае (CMS), тоже, скорее 2 вариант
    3. Сколько параллельных запросов выполняется? Запрос включает в себя обработку веб сервером, бэкендом, СУБД и т.д. Если требуется обработать десятки-сотни запросов в секунду (RPS), то лучше больше слабых ядер, чем мало производительных т.к. переключение контекста тоже занимает определенное время, по моим тестам до количества ядер производительность растет практически линейно, дальше количество параллельных потоков начинает тормозить общую производительность, не сильно, но 10 потоков выполнения на 1 ядро съедает под 30% общей производительности. В вашем случае (3000 DAU) скорее всего, хватит трети 2 конфигурации, но под потенциальный рост количества пользователей лучше 2 вариант
    4. Количество обрабатываемых данных, если требуется активная работа с оперативной памятью, то 1 конфиг будет быстрее за счет более современного стандарта памяти, но 10ГБ RAM позволит хранить в памяти больший кусок базы данных, файлового кеша, и не обращаться к диску каждый раз, 2ГБ даже с быстрым процессором при сопоставимой нагрузке будет постоянно нехватать, свопиться, вычитывать данные из БД и чаще скидывать записи на диск + каждый запрос пользователя это RAM, на 3000 DAU не критично, а вот на 3000 пользователях онлайн 10ГБ оперативки будет давать стабильную производительность по БД, а вот 2ГБ начнет "колбасить" при большом количестве JOIN в запросах и большом количестве записей в таблицах. У меня были случаи, когда запросы к БД начинали обрабатываться 10 секунд вместо 50мс как раз таки за счет того, что СУБД начинала сбрасывать на диск промежуточные вычисления. На будущее, 2 вариант лучше

    Практическая составляющая:
    1. Буквально на днях вышла статья на пикабу на тему того, что хостер продает старые процессоры под видом новых (в системе виртуализации можно передать любые значения в гостевую машину), т.е. вместо 2 ядер по 5ГГц есть шанс получить 2 ядра по 3.2ГГц, да и 5ГГц в бусте тоже не факт, что можно получить если это не выделенный сервер.
    2. Для VPS в отличие от дедиков (выделенных серверов) часто есть лимит про процессору (т.к. его продают по нескольку раз - читаем теорию массового обслуживания), часто можно получить максимальную мощность в течение короткого времени (секунды - минуты), а если грузить процессор под 100% все время, то либо отключат виртуалку, либо снизят произвоодительность до 10-15-20% - если это не ваш личный сервер с известными вам характеристиками турбобуста процессора, то за несколько тысяч рублей в месяц ожидать, что ваши арендованные 2 ядра будут часами жарить на 5ГГЦ как минимум странно.

    По поводу нагрузки и масшабирования
    - На 1 пользователе отдавать страницу будет быстрее 1 вариант за счет теоретически более быстрого однопоточного режима (но, я бы сказал, что в браузере это будет условно 248 мс вместо 250-252мс, т.е. с учетом сетевых расходов, работы планировщика ОС, и т.д. конечные гигагерцы имеют не такую разницу), но учитывайте практическую часть ответа.
    - На десятках пользователей онлайн уже 2 вариант может быть немного быстрее (особенно за счет большего количества оперативной памяти)
    - На сотнях пользователей 2 вариант будет стабильней и быстрее

    Но сказать конкретно сейчас сложно т.к. надо проводить нагрузочное тестирование конкретной конфигурации железа и софта с конкретной версией ПО и конкретным набором данных, но, лично из моей практики - если это простой сайт, а не сложный IT проект с кучей серверов, то выбираем хостинг с возможностью легкой смены тарифа и начинаем с условных "2 ядря 2 гига", а потом по мере роста нагрузки добавляем ресурсы, нормальные хостинги позволяют вертикально масштабироваться (увеличением мощности, а не количества) по каждому из ресурсов (RAM, CPU, HDD) отдельно и при перезагрузке, отстающие имеют жеские тарифы (у нас не хватало места под файлы и приходилось покупать еще и CPU, т.к. каждый следующий тариф имел всего больше) и требуют не только перезагрузки, но и переноса конфигурации, соответственно даунтайм уже не минуты, а часы. Поэтому гибкие тарифы у современных хостеров рулят и масштабироваться легче. (я не говорю тут про поднятие кубера с балансировкой, автоскейлингом, грин-блю деплойментом и прочими фишками доступности 99.9999%)
    Ответ написан
    Комментировать
  • Что выбрать для хостинга сайта: 2 ядра до 5 ГГц или 6 ядер до 3.2 ГГц?

    @Everything_is_bad
    VDS-сервера
    берешь минимальный сервер, проверяешь нагрузку, без проблем апаешь на тариф выше, если текущий не вывозит. Повторять пока не достигнешь желаемый результат
    Ответ написан
    16 комментариев
  • Как сделать чтобы при закрытии VSCode не закрывался процесс в терминале?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Если всё-же сильно хочется извратиться, то есть такая утилита screen.
    Запускаете её в терминале (у вас ведь linux?), а уже в ней свою задачу.
    При повторном входе в VSCode запускаете screen -r и оказываетесь в том же сеансе.
    Причём, запустить/перехватить сеанс screen можно из любого терминала на этой машине.
    Ответ написан
    Комментировать
  • Как сделать чтобы при закрытии VSCode не закрывался процесс в терминале?

    @Everything_is_bad
    Разделить разработку и эксплуатацию. Разработка в отдельном окружение с VSCode, эксплуатация в отдельном окружении без VSCode.
    Ответ написан
    Комментировать
  • Как определить свой уровень программирования?

    Adamos
    @Adamos
    Измерение уровня программиста часами чтения учебника и решения задачек - все равно, что попытка оценить уровень посла во Франции по пройденным им курсам французского языка.
    Ответ написан
    Комментировать
  • Как определить свой уровень программирования?

    @Everything_is_bad
    твой уровень программирования "школьник 9го класса, изучающий полгода java"
    Ответ написан
    1 комментарий
  • Как определить свой уровень программирования?

    Lord_of_Rings
    @Lord_of_Rings
    Дунадан - северный странник. Злой, но очень добрый
    Если твой код иногда работает, то поздравляю - ты Junior. Если понимаешь, почему не работает, то ты уже на пути в Middle'ы. А если уже ненавидишь себя за выбор пути и задумываешься о домике на берегу реки - добро пожаловать в Senior'ы
    Ответ написан
    8 комментариев
  • При добавление элементов в вектор, при превышении capacity, это приведет к перераспределению Vec?

    fenrir1121
    @fenrir1121
    Начни с документации
    При превышении capacity адрес может измениться.
    Довольно банальная оптимизация - если впереди необходимая память свободна, расширение происходит на месте, без переноса.

    Проверить можно так
    fn main() {
        let mut vec = Vec::with_capacity(2);
        let initial_ptr = vec.as_ptr();
    
        let (new_ptr, new_capacity) = std::iter::repeat(())
            .enumerate()
            .find_map(|(i, _)| {
                vec.push(i as i32 + 3);
                (vec.as_ptr() != initial_ptr).then(|| (vec.as_ptr(), vec.capacity()))
            })
            .unwrap();
        println!("Initial ptr: {:?}", initial_ptr);
        println!("New ptr: {:?}", new_ptr);
        println!("New capacity: {}", new_capacity);
    }
    Ответ написан
    Комментировать
  • Целесообразна ли моя сборка ПК?

    @99insania99
    В 2025 году советовать отдельный ssd под винду, а hdd под все остальное - это какой-то верх безумного идиотизма. Берется терабайт ssd m2 под винду, игры, программы и все прочее. HDD оставляется действительно под файлы и бекапы. Если нужно доп место - покупаются SSD.
    Кулер выбирается под TDP проца. Как правило 5+ тепловых трубок закрывают вопрос с большинством процев.
    Сборки - атас. Курите новости про нестабильность 13-14 серии интуля
    Ответ написан
    Комментировать
  • Как восстановить коды utf8 из байтов?

    vabka
    @vabka Куратор тега Rust
    ctrl+c -> ctrl+v
    Чтобы преобразовать последовательность байтов последовательность code point-ов
    https://doc.rust-lang.org/src/core/str/validations...

    Чтобы преобразовать последовательность code point-ов в байты (вызывать в цикле)
    https://doc.rust-lang.org/src/core/char/methods.rs...

    Чтобы понять, почему всё происходит именно так - читай, что такое юникод и как он кодируется в utf8

    А теперь душнилово

    Перевёл строку в байты.
    - Я уже научился восстанавливать числа из байтов, поэтому сделал ровно тоже самое для строки и по идее я должен был бы получить коды utf8.

    На самом деле, мог ошибиться уже тут. В тексте вопроса ты не оставил объяснений, как ты получил свои числа.

    Но при попытке в онлайн конверторе utf8 -> string, непонятная строка получается:

    Онлайн конвертер ждёт байты, а не code point-ы.

    Вывод программы:
    [72, 25856, 7077888, 1811939328, 476741369856]

    И правильное тут только первое число (я тут уже пытаюсь угадать, что ты преобразуешь Hello в числа).
    Правильно будет [72, 101, 108, 108, 111]
    Делаем вывод, что преобразование строки в числа у тебя кривое.

    Ответ написан
    5 комментариев
  • Какой компилятор выбрать для указанной задачи?

    Lord_of_Rings
    @Lord_of_Rings
    Дунадан - северный странник. Злой, но очень добрый
    по крайней мере раньше, exe-шник требовал, чтобы на компьютере было установлено еще что-то (напр. та же студия такой же версии).

    установки каких-то дополнительных пакетов и сред на компьютер,
    Откуда вы это взяли? Чушь полнейшая. Максимум - несколько dll в придачу поставляется вместе с приложением, и всё (ну если вы, конечно, не программу управления полётами пишете).
    Совсем хорошо, если для этой среды не понадобится искать рабочий кряк.
    Ну уж это совсем ни в какие ворота не лезет. Какие еще кряки? Вы из 90-х что ли прилетели?

    На каком языке нравится, на таком и пишете. Где? Да где угодно. Универсальные среды - Visual Studio и Visual Studio Code. Ваш пользователь не будет о них знать и в помине, и ничего устанавливать ему не придётся
    Ответ написан
    3 комментария
  • Чем frontend разработчик занят на реальных проектах?

    @Giperoglif
    Настройка тестов, CI/CD, OLAP CUBE, оптимизация запросов к БД
    - это важно для фронтенда знать, что такое просто есть) явно вас не тем загружают.
    Ответ написан
    2 комментария