Задать вопрос
  • Как вызывать метод в классе, которого нет, но он есть в том, который наследует его?

    abstract class Model {
       verify() {
          const name = this.getName()
       }
    
       abstract getName(): string;
    }
    
    class User extends Model {
       private name = 'Boris'
       override getName() { return this.name; }
    }
    Ответ написан
    2 комментария
  • Не могу скачать Windows 10 в россии, как скачать?

    xotkot
    @xotkot
    ответы это убийцы вопросов
    если нужен именно оригинальный образ windows10 и нет возможности скачать с офсайта, то можно поступить по другому, узнать хешсуму нужного iso-образа и уже по этой хешсуме найти в интернете образ.
    Для последней доступной на офсайте Windows 10 Русский SHA-256 будет:
    Русский 64-bit	2A7C440C984EB018F513901E8ED96405213D237938C410C5089C0FAC7BA01898
    Русский 32-bit	7B339135C62CB06C8EB8748922659FC36FBE1DB08C2749B036C00676455A5D00

    взято с офсайта
    Windows-10-ISO.png

    сами хеши легко яндексяца и гуглятся

    после скачивания еще раз проверяем, например:
    $ sha256sum Win10_22H2_Russian_x64v1.iso 
    2a7c440c984eb018f513901e8ed96405213d237938c410c5089c0fac7ba01898  Win10_22H2_Russian_x64v1.iso
    Ответ написан
    Комментировать
  • Можно ли как либо защитить php-проект от "угона" другим наёмным программистом (фрилансером)?

    @Kostik_1993
    Web Developer
    Технически защитить монолит нельзя. Но можно юредически. Заключите настоящий договор, пропишите в нём условия о неразглашении. Опите части проекта являющиеся уникальными и конфиденциальными. Да да весь ваш код на 100% не является какой-то явной тайной. Но если есть то что является "фишкой кода" можно описать.
    Ответ написан
    5 комментариев
  • Можно ли как либо защитить php-проект от "угона" другим наёмным программистом (фрилансером)?

    @alexalexes
    Меры безопасности такие же как и в любом коммерческом банке.
    1. Разделение информационной системы предприятия на контуры по готовности релиза: продакш (к управлению допускаются только ключевые технические специалисты компании), предпродакш (к управлению допускается только помощники ключевых технических специалистов, в контуре могут испытываться как тестовые данные, так и часть боевых данных), дев-контур для разработчиков (допускаются разработчики только по узкому направлению, в контуре циркулируют только тестовые данные).
    2. Разделение информационной системы предприятия по функционалу и делегирование прав доступа от рядового разработчика к ключевому специалисту в рамках одной подсистемы. Разработчики и их руководители должны иметь только те права доступа, которые необходимы для текущей работы.
    Ответ написан
    1 комментарий
  • Почему передачу данных по USB "слышно" в наушниках?

    @WaterSmith
    Android-разработчик. Java, Kotlin
    Из-за того, что аналоговая часть схемы воспроизведения звука, не экранирована и находиться достаточно близко с разьему USB.
    Если человеку с музыкальным слухом это мешает, то нужно воспользоваться другими источниками звука. Начать можно с переключения на разьем в задней части корпуса, но, скорее всего там своих помех хватает, поэтому прийдется приобрести отдельную звуковую карту. На некоторых звуковых картах даже есть оптический аудиоразьем, у него точно не будет такой проблемы, но наушники или колонки с оптическим интерфейсом нужно поискать.
    Еще можно приобрести USB наушники, они по сути имеют свою встроенную звуковую карту, и помехи из корпуса компьютера до них не достанут.
    Ответ написан
    2 комментария
  • Почему передачу данных по USB "слышно" в наушниках?

    GavriKos
    @GavriKos
    1. Нет экранирования
    2. Нет развязки по питанию
    0. Физика
    Ответ написан
    1 комментарий
  • Как смотреть популярные видео-объяснения по CS новичку с нехваткой теории?

    например «как работает транзистор и их виды» и т.д.

    Это тема для урока физики в 10-11 классе.
    Нужно ли его конспектировать?

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

    Что это такое?

    Как новичку работать с «популярным» материалом в интересующих сферах?

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

    Adamos
    @Adamos
    Я правильно понял, если после объявления неопределенной переменной X начать объявлять или менять значения другим переменным, то X "засорится"?

    Наоборот.
    int i;
    Под переменную i выделен участок стека, лежащее в нем значение не меняется. Но в учебной программе из пары строк там, скорее всего, будет 0, и это создаст иллюзию, что все нормально. Кроме того, некоторые компиляторы в некоторых условиях инициализируют любые переменные, что еще больше запутывает ситуацию.
    int i;
    for(int n = 0; n < 10; ++n) {}

    Под переменную i выделен участок стека, лежащее в нем значение не меняется.
    Под переменную n выделен следующий участок стека, его изменение никак на i не сказывается.
    for(int n = 0; n < 10; ++n) {}
    int i;

    Под переменную n выделен участок стека, его значение к концу цикла равно 10 - и уже ненужная переменная n уничтожается, освобождая место в стеке.
    Под переменную i выделен участок стека, лежащее в нем значение не меняется. Это вполне может быть тот самый участок, который только что освободился, в нем записано 10 (С++ не выполняет ничего, что явно не указал программист - это оптимальный язык). Так что i вполне может равняться 10. Или нет.

    Подобные ситуации называются "неопределенным поведением".
    Программист на С++ обязан исключить их из своей программы.
    Ответ написан
    1 комментарий
  • Почему перемещение объявления и инициализации переменной на новую строчку кода влияет на результат работы программы?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    В этом коде есть важная ошибка. В циклах for нигде не задано начальное значение переменной i, поэтому она может иметь любое значение, её поведение неопределено. Например, она может выделиться там же, где была выделена предыдущая, поэтому i во втором цикле будет равна последнему значению в предыдущем, то есть 10, даже если в первом цикле повезло попасть на 0.

    Локальные переменные как правило выделяются в стеке, поэтому если между двумя for стоит определение ещё одной переменной, то она, вероятно, выделится на месте i. И поэтому новая переменная i попадёт в другую часть стека, где, если повезёт, будет 0.

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

    Решение простое: надо везде в циклах for указать начальное значение i, тогда всё станет нормально, и перестановка определения count перестанет создавать такие совсем не странные эффекты.
    Ответ написан
    3 комментария
  • Спалят ли HR резюме?

    1. На начальных этапах никто не звонит работодателю для уточнения данных. Не кредит же тебе на миллион одобряют)

    2. Каких проблем ты ожидаешь от кадровиков? Типа что в обход твоего руководителя уволят или зп понизят за то что ты решил "предать партию" (а на каком основании лол?)? Чтобы ты ещё быстрее от них ушёл? Или на доску позора повесят?
    Объективно худшее, что может произойти - работодатель проигнорирует тот факт, что ты решил уйти.
    А скорее всего - включится механизм удержания с предложением перехода на другой, более интересный проект, или повышение зп.

    PS: ну и ты всегда можешь сказать, что не имеешь право указывать своё место работы или контакты работодателя.
    Ответ написан
    Комментировать
  • Не работает bin/bash в крон. Как решить?

    @SunTechnik
    Да тут вариантов ошибок - куча..
    1. Файл задания cron напрямую не редактируется. Для этого есть :
    crontab -e

    2. При прямом релктировании - есть риск ошибиться с форматом. Что у Вас сейчас в файле - непонятно. На первый взгляд, это не формат данного файла

    3. Если все же файл редактировали руками, cron надо перезапустить, что бы он перечитал задание.

    4. В логе работы cron будеет видно, запускал ли он задание и коды возврата.

    5. Как Вы сами пишите, перед запуском команды надо перейти в определенный каталог. Cron об этом ниичего не знает. Команда cd долдна быть внутри скрипта.

    6. Хорошим тоном считается, если скрипт начинается со строки, определяющей тип требуемого интерпритатора.
    #! /usr/bin/bash

    7. При запуске скрипта не надо запускать интерпритатор. Достаточно указать сам скрипт и что бы он имел права исполнения..

    .......
    Ответ написан
    Комментировать
  • Почему не выводятся данные в консоль?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    как только я ввожу число литров и нажимаю энтер все сбрасывается и ничего не выводится. Код пишется в vscode, код пытаюсь запустить в самой консоли vscode. В чем может быть проблема?

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

    Может с кодом что-то не то

    С кодом всё ок.
    Ответ написан
    1 комментарий
  • Насколько эффективна REST-full архитектура?

    Во-первых не rest-full, а restful с одной l.
    При использовании REST-full запросов, на сколько я понимаю, вся информация хранится в БД и привязывается к модели @Entity

    Нет. REST-это исключительно про интерфейс, а что там под капотом - не важно.
    То есть даже видео и файлы изображений, которые загружаются на сервер, в случае с REST-full хранятся в базе данных, а не где-то в папке или на диске...

    НЕТ.
    Ответ написан
    Комментировать
  • Как защитить программу от копирования без интернета?

    wataru
    @wataru
    Разработчик на С++, экс-олимпиадник.
    Никак. Единствнный способ гарантированно защититься от нелицензионного копирования - это вынести ключевую часть функционала на сервер. Любая остальная защита - лишь усложнение реверс инжениринга и взлома. Всегда можно каленым железом вырезать любую проверку ключа из исполняемого кода.

    Активация ключа по телефону/интернету исключает лишь самый тривиальный способ "взлома" - просто копирование одной и той же лицензии по куче компьютеров без модификации исполняемых файлов.

    А так, берете какую-нибудь крипто библиотеку, выдаете сертификат, в котором подписываете своим приватным ключем "Лицензия выдана ООО рога и копыта". В программе зашит ваш публичный ключ. Программа проверяет файл лицензии, что он подписан вашим ключем. Но любой "хакер" умнее вас просто вырежет эту проверку из программы.
    Ответ написан
    4 комментария
  • Сколько раз можно перезаписывать прошивку в микроконтроллер?

    @WaterSmith
    Android-разработчик. Java, Kotlin
    Имеется, как и предел итераций записи на SSD или флеш накопитель. Только вот реально ли его достигнуть на практике - вопрос открытый.
    Скажем, первое что нагуглилось:
    Производители микроконтроллеров AVR в документации указывают что их Flash-память можно перезаписывать не менее 10000 раз, а EEPROM- 100000 раз.
    Ответ написан
    5 комментариев
  • Используют ли Rabbitmq в внешней сети?

    @rPman
    Для упрощения администрирования и защиты сервисов в рабочей сети общепринятая практика - собирать их все в локальной сети (при необходимости объединенной по интернету с помощью vpn), потому как иначе либо каждый сервис должен уметь защищаться от атак (напоминаю, шифрование не спасет от ддоса) либо в каждом участке сети настраивать фаервол.
    Ответ написан
    Комментировать
  • Является ли взаимозаменяемым опыт разработки на разных языках рамках одной платформы JVM (Java, Scala, Kotlin)?

    Jacen11
    @Jacen11
    да всем плевать сколько лет и где вы там просиживали, важны реальные знания. Есть те кто десять лет сидит и ничего толком не знают, кто то за год уже почти мидл. Учитывается главным образом как на вопросы ответите. Ну если ответы равны будут, то конечно уже посмотрят на прочее, но что то сомневаюсь что в реальном мире есть люди с одинаковыми знаниями и навыками.
    лично я устраивался без опыта на вакансиями с требованиями в несколько лет и менял стек пару раз. Один раз после трудоустройства всплыло что интервьюер забыл, что у меня нет коммерческого опыта в текущем стеке, претензий к моей работе не было
    Ответ написан
    2 комментария
  • Можно ли передать нужный тип переменной в дженерик функции?

    Aetae
    @Aetae Куратор тега TypeScript
    Тлен
    getFormattedData тоже должен быть дженерик и собсно его(дженерик) прокидывать в нижестоящие.

    Типа того:
    type Type1 = 1;
    type Type2 = 2;
    type Type3 = 3;
     
    type ContainsType<T extends UniversalType = UniversalType> = {type: T};
    
    type UniversalType = Type1 | Type2 | Type3;
    
    
    class Cls {
      async getFormattedData<T extends UniversalType>(data: ContainsType<T>): Promise<T> {
            const anyDataObject = this.validateData(data);
            const result = this.formatDataByType(anyDataObject);
            return result;
      }
    
      validateData<T extends UniversalType = UniversalType>(data: ContainsType<T>): T {
        return data.type
      }
    
      formatDataByType<T extends UniversalType = UniversalType>(data: T): T {
        return data
      }
    
    }
    const foo = await new Cls().getFormattedData({type: 2}); // 2


    Если ты явно чему-то пропиваешь тип который никак не зависит от входного дженерика:
    const anyDataObject: Type1 | Type2 | Type3 = ...
    то какбэ всё - приехали, ты сам указал, что тут именно такой тип(во всём его многообразии) и пофиг на входные данные. Ты можешь дальше сузить тип внутри метода:
    if (anyDataObject === 2) {
      // тут anyDataObject для ts считается Type2
    }
    но это уже никак не повлияет на выходной тип.

    В общем выводить типы можно только если они зависят от входных данных(которые в свою очередь получаются через дженерик), иначе откуда TS узнает, что там от чего зависит.
    Если ты заранее даже приблизительно не знаешь, что придёт на вход, то и что пойдёт на выход ты ноже не знаешь, а не знаешь ты - не знает и, тем более, TS: там просто одни произвольные данные превратились в другие без использования логики. С тем же успехом можно попытаться вывести точный тип Math.random().
    Ответ написан
    Комментировать
  • Как обойти вложенный массив объектов и вывести объекты как дерево?

    szQocks
    @szQocks
    const recursy = (item) => {
       if(item.children){
          return <Route path={item.path} element={item.element}>{item.children.map(recursy)}</Route>;
        }
        
        return <Route path={item.path} element={item.element} />;
      };
    
    
    array.map(recursy)


    С ключами сам разберешься, и убери строки за место компонентов, строки на сколько я знаю в jsx не компоненты
    Ответ написан
  • Какие ограничения есть на ip адреса для SSH?

    SSH никаких особенных ограничений на ip-адреса не накладывает.
    127.0.0.1 - это вполне допустимый адрес, к которому можно подключиться.

    Ну давай по порядку:
    1.
    • 151.248.113.78 - вроде ок
    • 127.0.0.1 - точно мимо, тк локалхост
    • 194.85.283.12 - невалидный адрес. ipv4 - это четыре 8битных числа. 283 не входит в этот диапазон
    • 192.168.15.2 - подозрительно похож на адрес в локальной сети
    • 172.16.0.92 - аналогично
    • 185.76.145.0 - подозрительно похоже на адрес подсети, но пока карандашом
    • 10.55.84.56 - что-то подозреваем

    2. Идём смотреть, какие адреса точно являются локальными
    • 151.248.113.78 - не локальный
    • 192.168.15.2 - Для использования в частных сетях. RFC 1918. Глобальная маршрутизация запрещена
    • 172.16.0.92 - Для использования в частных сетях. RFC 1918. Глобальная маршрутизация запрещена
    • 185.76.145.0 - не локальный
    • 10.55.84.56 - Для использования в частных сетях. RFC 1918. Глобальная маршрутизация запрещена

    Остаются всего два адреса:
    151.248.113.78 и 185.76.145.0
    Причём второй может оказаться невалидным, если подсеть /24
    Ответ написан
    Комментировать