• Какие можно посмотреть курсы/уроки по практике на rust?

    vabka
    @vabka Куратор тега Rust
    Оставлю шутки, про "выучил раст" в стороне и пойду по порядку, тем более что судя по недавним вопросам - заявление крайне смелое.

    0. По хорошему стоит подтянуть математику, тк она помогает абстрактно мыслить, а без этого в разработке будет крайне тяжело. (Опять же по соседним вопросам - математика не дотягивает даже до 9 класса мбоу сош).
    В принципе на этом моменте тебе больше не нужно будет задавать подобные вопросы.

    1. Проверь, что ты действительно прочитал хотябы растбук и понял его.

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

    3. Найди библиотеки, фреймворки для этого. Читай документацию, смотри примеры, делай какой-нибудь личный проект для практики. Сделай до завершённого состояния.

    4. На этом шаге можно уже смело пытаться заработать в п2

    Всё очень абстрактно, тк сильно зависит от того, что ты сам хочешь.
    В принципе за пару лет вполне реально управиться.

    PS: в последнее время мне нравятся видосы decrusting ... от чела https://youtube.com/@jonhoo?si=9VbtXlH4dgdCrwQ-
    Три часа непрерывного разбора всех абстракций какой-то библиотеки
    Ответ написан
    Комментировать
  • Насколько безопасно использовать GoodbyeDPI?

    Думаю, тут лучше всего процитировать автора

    Я бы не стал устанавливать GoodbyeDPI на серьёзную машину, на которой множество конфиденциальных данных, особенно на рабочий компьютер/ноутбук с доступом в корпоративную сеть. Причин несколько:

    Я не профессиональный программист вообще и на C в частности;
    • Код использует UB и математику с указателями, потому что в C иначе не получается — куча пространства для ошибок;
    • Программа не проходила аудита кода даже моими глазами;
    • Драйвер WinDivert не проходил аудита кода и периодически вызывает несовместимости с другими драйверами с BSOD'ами (даже если ошибка не непосредственно в WinDivert).
    • Программа была написана по приколу, чтобы потренироваться в фильтрации пакетов на Windows. Я не пользуюсь Windows чёртову дюжину лет. Иными словами, я очень нерегулярно сам использую GoodbyeDPI.

    Что может произойти?
    • В программе найдут уязвимость, связанную с обработкой данных в пакете, с переполнением буфера, с возможностью эксплуатации на стороне сервера ⇒ вам прогрузят код с привилегиями SYSTEM, украдут все данные и заразят компьютер.
    • В драйвере WinDivert найдут аналогичную уязвимость ⇒ вам прогрузят код с привилегиями ядра, украдут все данные и заразят компьютер потенциально так, что антивирусы не обнаружат заражение.

    Это всё применимо к совершенно любой программе в целом, но к GoodbyeDPI в этом плане стоит относиться особенно настороженно, т.к. и сама программа, и драйвер запущены с максимальными привилегиями, а код и того, и другого написан любителями.
    До сих пор периодически пишут об ошибках запуска на необновленных Windows 7 c MS17-010, на таких системах потенциальные проблемы от GoodbyeDPI вообще не имеют никакого значения — вас куда быстрее проэксплуатируют через другой десяток уязвимостей :D

    ValdikSS
    https://ru.stackoverflow.com/questions/1589764/Без...
    Ответ написан
    3 комментария
  • Почему данные не реактивны?

    Aetae
    @Aetae Куратор тега Vue.js
    Тлен
    В vue 2 добавленые после создания ключи объектов не реактивы из-за технических ограничений. (Раньше это большими буквами в доках писалось).
    Надо использовать this.$set \ Vue.set при добавлении нового ключа.

    В твоём случае можно переделать так:
    const templates = reactive(keyBy(templatesArr, 'id'))
    for (let templateId in templates) {
      const devices = devicesArr.filter(device => device.templateId === templateId)
      Vue.set(templates[templateId], 'devices', devices);
      Vue.set(templates[templateId], 'settings', {});
    }
    
    // либо просто так:
    const templates = keyBy(templatesArr, 'id');
    for (let templateId in templates) {
      const devices = devicesArr.filter(device => device.templateId === templateId)
      Object.assign(templates[templateId], { devices }, {settings: {}})
    }
    reactive(templates);


    P.S. не помню чтоб в vue 2 было reactive, вместо него был Vue.observable. Но может добавили, хз, лень смотреть.:)
    Ответ написан
    Комментировать
  • Почему else игнорирует существование if?

    Maksim_64
    @Maksim_64
    Data Analyst
    Проблема в типах данных cofe и flor - строки, а должны быть int.
    cofe = int(input('Сколько вы хотите кофе?: '))
    flor = int(input('Введите на каком вы этаже:'))

    Исключения не выходит из-за логического and if cofe in [1, 2, 3] and flor >= 100: он оценивает первое условие как False и не переходит ко второму.
    Ответ написан
    1 комментарий
  • Как раздельно инициализировать структуру?

    vabka
    @vabka Куратор тега Rust
    Тебе ссылка через & не подойдёт тут.
    Используй Arc и Weak.
    Либо делай window тоже как ссылку на окно, которое создано в main.
    Ответ написан
    3 комментария
  • Как правильно составить регулярное выражение для проверки доменного имени?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Почему строка $arr[] = 'si$te.com'; определяется как доменное имя?

    Потому что te.com определяется как доменное имя, а условие, что попадать под маску должна полная строка у вас не наложено. Ну и, на самом деле, национальные домены первого уровня в punycode могут содержать цифры.
    - $reg   = '#[a-z0-9]+[_-]?[a-z0-9]+\.[a-z]{2,}#';
    + $reg   = '#^(?:[a-z0-9][a-z0-9-_]*\.)+(?:[a-z]{2,}|xn--[a-z0-9]{4,})$#i';
    Ответ написан
    5 комментариев
  • Как убрать "Property does not exist on type" в рекурсивном интерфейсе?

    Aetae
    @Aetae Куратор тега TypeScript
    Тлен
    На каждом уровне проверять, что значение не string и не number. Иначе никак, ты сам задал такой тип, и ts не даст тебе совершить ошибку.

    Если у тебя только 2 уровня, то не надо рекурсии:
    interface CSS {
        [k: string]: {
            [k: string]: string | number 
        }
    }


    Если ты хочешь сузить тип при создании констатны, можно сделать так:
    const css = {
        default: {
            color: '#676767',
            border: '1px solid',
            border_color: '#C4C4C4',
            border_radius: '110px',
    
            padding: '16px 21px',
        }
    } satisfies CSS;
    Ответ написан
    Комментировать
  • Почему рекомендуется использовать private а не просто ставить везде Public?

    GavriKos
    @GavriKos Куратор тега Unity
    Почему рекоменудется носить трусы? Чтобы жопа была в безопасности.

    Вот тут прибилзительно то же самое. Чтобы программисту не надо было думать как поведет себя код, если ВДРУГ кто то снаружи изменит то, что менять не надо вообще.
    Когда вы делаете переменную публичной - вы тем самым говорите "эту переменную можно менять, я все предусмотрел, все будет ок. Это интерфейс взаимодействия - пользуйтесь". Но ведь далеко не для всех переменных класса НАДО предусматривать такое - зачем же делать лишнюю работу - ставим private и все, манипулируем переменной только изнутри, ЗНАЯ все варианты ее изменения.
    Ответ написан
    7 комментариев
  • В чём смысл равного ограничения времени для разных ЯП в спортивном//олимпиадном программировании?

    wataru
    @wataru
    Разработчик на С++, экс-олимпиадник.
    Смысл в том, что итак работает. Редко когда можно TLющееся решение переписать на другом языке программирования, и оно пройдет. Ибо все правильные решения различаются на десяки процентов, максимум, в разы. Неправильные же отсатют от правильных в десятки и сотни раз. По крайней мере на соревнованиях высокого уровня. А потом, ну просто лень составителям придумывать ограничения для всех языков программирования. А, поскольку оно итак работает, то никто этим не заморачивается. Многие системы тестирования даже не поддерживают разные ограничения под разные языки, и никто эту фичу не запиливает, потому что она никому и не нужна особо.
    Ответ написан
    Комментировать
  • В чём смысл равного ограничения времени для разных ЯП в спортивном//олимпиадном программировании?

    mayton2019
    @mayton2019
    Bigdata Engineer
    В олимпиаде ЯП не очень важен. Обычно задание подгоняется под удачный выбор
    алгоритма.
    И если повезло - то и Python и С++ укладываются в нормальное
    время. А если студент использовал комбинаторный алгоритм то здесь не поможет и
    Ассемблер с GPU.
    Ответ написан
    Комментировать
  • В чём смысл равного ограничения времени для разных ЯП в спортивном//олимпиадном программировании?

    Времени и памяти даётся с большим запасом, оптимальное решение даже на самом медленном из доступных языков даже близко к выдаваемым лимитам не приблизится.
    Ответ написан
    Комментировать
  • Как добавить изображение, которое будет отображаться при публикации ссылки на сайт в Discord?

    Fragster
    @Fragster
    помогло? отметь решением!
    Нужно добавить следующие меты:
    property="og:type" content="article"
    property="og:image" content=...
    property="og:image:width" content=...
    property="og:image:height" content=...
    name="twitter:image" content=...
    name="twitter:card" content="summary_large_image"
    Ответ написан
    3 комментария
  • Как добавить изображение, которое будет отображаться при публикации ссылки на сайт в Discord?

    yarkov
    @yarkov Куратор тега JavaScript
    Помог ответ? Отметь решением.
    но оно оказалось маленьким

    А размер вы в метатегах указать не забыли?
    Ответ написан
    2 комментария
  • Как написать терминал на Assembler?

    Daemon23RUS
    @Daemon23RUS
    Секундочку, а неужели Вы еще в своей ОС не написали часть отвечающую за ввод-вывод ?
    Просто к интерпретатору команд надо подходить уже с имеющимся вводом выводом. Я так думаю, что после реализации оного, и вопросов будет меньше, а те что останутся будут более конкретны.
    Ответ написан
    Комментировать
  • Как написать терминал на Assembler?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Изучите прерывания биос.

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

    TosterModerator
    @TosterModerator Куратор тега Тостер
    Модератор Хабр Q&A
    Комментарии необходимы для того, чтобы пользователи могли уточнять недостающую информацию и выражать свое мнение о вопросах. Нередко комментарии оказываются гораздо полезнее ответов. Было бы предельно странно, если бы разработчики Q&A-сервиса дали авторам вопросов возможность блокировать комментарии.
    Ответ написан
    1 комментарий
  • Почему функция-конструктор срабатывает без `new`, хотя, согласно документации, не должна?

    sfi0zy
    @sfi0zy Куратор тега JavaScript
    Creative frontend developer
    У вас примеры с new и без new не эквивалентны. Вы просто посмотрите, что там на самом деле находится в получаемых переменных:

    function Foo(arg) {
        this.bar = function() {
            return arg;
        };
    
        return this.bar();
    }
    
    const notfoo = Foo('not foo');
    console.log(notfoo); // "not foo", т.е. notfoo - это не новый Foo, это строка текста.
    console.log(notfoo.bar); // undefined, что логично, у стандартной строки никакого bar нет.
    
    const foo = new Foo('foo');
    console.log(foo); // [object Object], т.е. вот это - настоящий новый Foo.
    console.log(foo.bar); // function() { ... }, и метод bar в нем есть.
    console.log(foo.bar()); // "foo"
    Ответ написан
    5 комментариев
  • Как сделать динамический тип с опциональными полями?

    Alexandroppolus
    @Alexandroppolus
    кодир
    можно через infer:

    type Schemas<P extends keyof paths> = paths[P]['post'] extends {requestBody: infer R} ? R : never;


    playground
    Ответ написан
    Комментировать
  • Как в библиотеке пометить макрос, как unstable?

    vabka
    @vabka Куратор тега Rust
    Мне кажется, прямо в названии отражать, что он unstable не обязательно, ибо стабилизация существует только в рамках стандартной библиотеки - просто дай ему другое название и закрой за feature, которую можно включить только на nightly.

    Когда фичу стабилизируют - добавишь в новой версии deprecated с указанием на старый макрос, а потом, в следующей мажорной версии, удалишь окончательно.
    Ответ написан
    1 комментарий
  • Возврат структуры со ссылкой на значение и значением?

    vabka
    @vabka Куратор тега Rust
    У тебя там self referential struct, так что придётся при помощи NonNull указателей сделать и запретить перемещение структуры при помощи PhantomPin.
    Лайфтайма наподобие 'self нету
    Ответ написан
    2 комментария