• Как в typeScript проверить значения на undefined в объекте?

    Используйте asserts (описание в release notes 3.7):
    function assertNotPartial<T>(entry: Partial<T>): asserts entry is Required<T> {
      if (Object.values(entry).every((value) => value !== undefined)) {
        return;
      }
    
      throw Error('YOUR ERROR MESSAGE');
    }

    и тогда используете следующим образом:
    assertNotPartial(videoInfo);
    
    console.log(videoInfo); // Тут не будет в типе undefined'ов
    Ответ написан
    4 комментария
  • Что означает запись в скобках сразу после инициализации?

    Maksim_64
    @Maksim_64
    Data Analyst
    Действительно, все очень просто.
    namedtuple - это функция которая возвращает объект класса namedtuple, который является подсклассом встроенного tuple. Где первый параметр, это имя типа данных. Второй это параметры.
    from collections import namedtuple
    Point = namedtuple("Point", ['x','y'])
    point = Point(2,4)
    print(point)

    Теперь представим есть некий словарь и просто перепишем в одну строчку, с распаковкой параметров '*'.
    d = {
        'x':2,
        'y':4
    }
    
    print(namedtuple('Point',d.keys())(*d.values()))

    d.keys() это коллекция ключей строк, как в пошаговом примере, *d.values() это распакованная последовательность значений.
    Ответ написан
    Комментировать
  • Как инициализировать переменную раньше функции в Python?

    Maksim_64
    @Maksim_64
    Data Analyst
    Что то ты с кодом ты напутал. Список может быть изменен из функции. Внутри функции python работает следующим образом.
    1. Первым делом python смотрит есть ли ключевое слово global

    2. Вторым есть ли ключевое слово nonlocal

    3. Третьим в параметрах, если там имя есть то переменная становится локальной.

    4. Если переменная упоминалась (но не было определена) то python смотрит на нелокальную область видимости.

    5. Если переменная упоминалась (но не было определена) и не найдено в нелокальной области видимости то смотрит в модуле

    6. Если и там не нашел то в встроенных пример max,min и т.д.

    a = 1
    b = 2
    c = 3
    
    def func():
        print(a,b,c)
    
    if __name__ == "__main__":
        func()
    Работает, как ожидается, а теперь маленькое изменение
    a = 1
    b = 2
    c = 3
    
    def func():
        print(a,b,c)
        c = 100
        print(c)
    
    if __name__ == "__main__":
        func()
    И все ошибка даже print(a,b,c) не выполнится. Потому что с находится в локальной области видимости функции python ее находит и также он находит ее упоминание (print(a,b,c)) до ее определения.

    def func():
        global c
        print(a,b,c)
        c = 100
        print(c)
    
    if __name__ == "__main__":
        func()


    Вся это проблема актуальна только для НЕ мутабельных типов например
    a = [0]
    b = [0]
    c = [0]
    
    def func():
        print(a,b,c)
        c.append(100) 
        print(c)
    
    if __name__ == "__main__":
        func()

    Все работает как и ожидается. Ну и пару слов об использовании global. Я персонально не сторонник утверждения никогда не используй global Но безусловно данная конструкция актуальна для не локальной области видимости то есть вот так.
    def func():
        total = 0
        def inner():
            nonlocal total
            total +=1
            return total
        return inner
    
    
    if __name__ == "__main__":
        add = func()
        print(add())
        print(add())
        print(add())
    Если убрать ключевое слово nonlocal то мы получим ошибку.
    Ответ написан
    Комментировать
  • Подойдут ди друг другу кабель 6 категории и компьютерная розетка категории 5е?

    flapflapjack
    @flapflapjack
    на треть я прав
    Конечно да) кабель высшей категории уж точно подойдет розетке и разъёму, относящихся к категории ниже
    Ответ написан
    6 комментариев
  • Чем чреват отказ давать своё согласие на обработку персональных данных?

    freeExec
    @freeExec
    Участник OpenStreetMap
    Что-то ты смешал всё в кучу, и согласие для работы в белую и утечки с продажами - в чёрную.
    Если рассмотреть действительно законодательство, а не непонятные заявления на сайтах, то к каждому согласию прилагается кому, зачем и для чего ты его даёшь. Без этой информации твой вопрос уходит в спортлото.
    Ответ написан
    Комментировать
  • Как добавить систему аккаунтов в Linux Kernel?

    Bermut
    @Bermut
    Жертва домашней лаборатории
    Признать честно, когда я собирал свой образ, я натыкался на такую ошибку, но непомню как ее решил, насколько помню, просто полностью перекачал рут, но самый удобный вариант сборки своего образа - использования rootfs, созданный через deboostrap/pacstrap, там тебе будет и ядро, и все файловое окружение, может только чутка напильником поработать чтобы удалить ненужные файлы, но это самый простой и лучший вариант.
    Ответ написан
    1 комментарий
  • Как добавить систему аккаунтов в Linux Kernel?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    Авторизация в линукс идет через модуль pam
    в /etc/pam.d и должны быть конфиги какие библиотеки вы используете. Локальных юзеров (/etc/passwd) или ldap или active directory или что-то еще подключили.
    Ответ написан
    2 комментария
  • Кому отдать предпочтение iMac или Windows PC?

    CityCat4
    @CityCat4
    //COPY01 EXEC PGM=IEBGENER
    Ну, для начала убери разгон. Полностью. Разгоняют компы те, кто понимает, что делает (те, кто не понимает, но разгоняет - получают обычно вот это :) )
    Снеси винду и ставь с честного образа от M$ - никаких сборок от Васянов!

    Для начала запусти тачку с биосом и дай ей немного постоять - понаблюдай за температурой. Возможно кривая сборка или дефект железа.

    У меня тачка раза в три наверное хуже - Z590 GAMING X/32G RAM/i9-11900K - труба открывается мгновенно. Здесь определенно косяк сборки или проблема с железом.
    Ответ написан
    3 комментария
  • Кому отдать предпочтение iMac или Windows PC?

    @Drno
    У тебя не в железе проблема, в а прокладке между рулём и сиденьем.
    Поставь нормальную винду, поднастрой её немного.
    настрой железо
    всё будет летать.
    я хз как у тебя это может лагать, разве что там дикие перегревы или кривой биос

    Хотелось бы видеть замеры температуры для начала, при нагрузке и стресс тесте. например от OCCT или аида64
    Ответ написан
    6 комментариев
  • Почему у функций нет имени возвращаемого?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Откуда я должен узнать что возвращает printf()?


    man 3 printf
    Ответ написан
    2 комментария
  • Как сделать графический интерфейс для своей ОС на rust?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Начать можешь с этого туториала - https://os.phil-opp.com/vga-text-mode/
    В нем реализуется простой текстовый интерфейс, но как пример этого достаточно: объясняются основные концепции как буфер видео памяти, представление букв и т.д.
    Ответ написан
    Комментировать
  • Как привязать домашнюю папку к пользователю?

    usermod -d /home/B A
    Ответ написан
    Комментировать
  • Как работают рекурсии?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    В данном случае происходит примерно следующее:
    x=1
      print(1) <- if ветка и рекурсия
      x=2
        print(2) <- if ветка и рекурсия
        x=3
          print(3) <- if ветка и рекурсия
          x=4 
          print(4) <- мимо if - работает вторая часть функции
        print(3)
      print(2)
    print(1)

    Т.е., сначала в функции отрабатывает ветвь за if три раза, а потом вторая ветвь четыре раза в обратном порядке.
    Если заменить рекурсию на саму функцию, то в данном случае получится следующий код (упрощенно):

    def func(x1): # функция #1
        if x1 < 4:
            print(x1) # 1
    
            x2 = x1 + 1 # функция #2
            if x2 < 4:
                print(x2) # 2
    
                x3 = x2 + 1 # функция #3
                if x3 < 4:
                    print(x3) # 3
    
                    x4 = x3 + 1 # функция #4
                    print(x4) # 4 
    
                print(x3) # 3, функция #3 - конец
            print(x2) # 2, функция #2 - конец
        print(x1) # 1, функция #1 - конец
    Ответ написан
    3 комментария
  • Как сделать коммуникацию front-end и back-end в реальном времени?

    pickHabr
    @pickHabr
    Костыльных дел мастер
    Попробуй покопать в эту сторону (запрос js stream data from backend)

    https://developer.mozilla.org/en-US/docs/Web/API/S...
    https://dev.to/bsorrentino/how-to-stream-data-over...
    Ответ написан
    Комментировать
  • Как создать свой образ Linux для размноживания на других АРМ?

    Adamos
    @Adamos
    чтобы не делать такую процедуру вновь

    Достаточно записать эту "процедуру" командами в preseed и на следующей подготовленной машинке просто запускать установку системы, скормив ей этот preseed-файл. Через полчаса без всяких вопросов к администратору система будет готова, причем со свежими пакетами.
    Если это требуется проделывать чаще раза в месяц - тогда лучше все-таки освоить оркестрацию, тот же Ansible.
    Ответ написан
    Комментировать
  • Почему не получается объединить коммиты?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Вы сами процитировали причину:

    Нельзя начать пересборку ветки (cannot rebase), пока есть незакоммиченные изменения в рабочем каталоге (You have unstaged changes).

    Гит будет пересоздавать заново коммиты, а для этого нужен свободный рабочий каталог, в который распаковываются промежуточные состояния проекта.

    Поэтому гит предлагает закоммитить или спрятать несохраненное (Please commit or stash them)

    Команда git stash по факту тоже создает коммит, но он не привязан ни к какой ветке и рабочий каталог становится чистым. Затем вы делаете свои нехорошие дела и восстанавливаете stash обратно в рабочий каталог.
    Ответ написан
    Комментировать
  • [ВОПРОС РЕШЕН] Как сделать так чтобы можно было выбирать загружаемую систему?

    @rPman
    За загрузку linux обычно отвечает grub (можно и без него, например uefi умеет, но не советую новичкам туда лезть).
    В зависимости от выбранного типа загрузки в bios - legacy mbr или efi, настройки соответственно разнятся.

    1. в mbr режиме на диске должен быть записан загрузчик (он размещается в dos разделах, в бут секторе и последующих за ним секторах, в gpt разделах для загрузчика выделяют соответствующий раздел 1мб. biosboot)
    2. в efi режиме загрузчик записывается в efi boot раздел, можно использовать тот же раздел что и у windows (тогда загрузкой будет он заведовать, не рекомендую новичкам) либо создать второй efoboot раздел на втором диске, и при загрузке выбирать в биосе второй диск как загрузочный
    Это я написал к тому, чтобы в зависимости от типа загрузки, на втором диске должны быть соответствующие разделы (biosboot или efiboot)

    В обоих случаях все за пользователя делает grub-install /dev/sdX где sdX имя диска (sda - первый, sdb - второй,... советую внимательно проверять, потому как порядок может отличаться от того что в windows). Но для этого нужно загрузиться в linux, если же загрузка прооисходит с livrcd/liveusb загрузочного носителя, то тогда команда будет grub-install /dev/sdX --root-directory=/mnt где /mnt это каталог, в который необходимо смонтировать вручную установленный на втором диске linux (если к примеру там два раздела / и /boot то их нужно смонтировать соответственно в /mnt/ и /mnt/boot). grub автоматически найдет efi раздел и смонтирует его, мало того он автоматически найдет windows и добавит его в grub menu чтобы из linux загрузчика можно было бы загрузить windows... Если возникнет путаница и grub найдет виндовый efi, то можно смонтировать его вручную перед запуском grub-setup
    Ответ написан
    2 комментария
  • [ВОПРОС РЕШЕН] Как сделать так чтобы можно было выбирать загружаемую систему?

    smorman
    @smorman
    When In Rome do as The Romans do...
    В каком режиме устанавливал?
    MBR или GPT (UEFI)?
    Ответ написан
    1 комментарий
  • Компания предлагает большу зп и торопит с выбором - это плохо или нет?

    @Drno
    Это с учетом kpi ? Или прям в окоад всё?
    Потому что если кпи, то очень похоже Вы этих денег не увидите
    Ответ написан
  • Компания предлагает большу зп и торопит с выбором - это плохо или нет?

    Получил оффер от одной компании (банка) с неожиданно большой суммой, чуть ли не x2 от запрошенной

    Вероятно ты просто запросил сильно ниже рынка / стандартной ставки.
    Что за банк?
    Что за должность?

    Например, все этапы собеседований HR пыталась ставить близко друг к другу.

    А зачем растягивать?

    Просто дело в том, что помимо этой компании я ещё параллельно собеседуюсь в пару других, и там до оффера пока не дошло дело. Не хочется упустить шанс попасть в них из-за этой сомнительной вакансии) Если есть опытные работоискатели, подскажите, пожалуйта)

    Спроси у рекрутера, к чему такая срочность ответа и проинформируй, что ждёшь ответы и от других работодателей.
    Вполне возможно, что они просто боятся, что ты уйдёшь в другую компанию, когда на твой найм уже много часов было потрачено.
    Ответ написан
    Комментировать