• Какой объем знаний и навыков нужно для того чтобы стать middle Rust разработчиком?

    vabka
    @vabka
    Токсичный шарпист
    Сейчас редко нанимают чистых растаманов, тк язык молодой.
    Обычно нанимают тех, кто переходит с других, более традиционных языков.
    Так что тебе сначала надо стать мидлом/сеньором в C++/Java/C#/C а потом дотянуть знания раста, чтобы уметь на нём решать задачи, аналогичные тем, которые ты решаешь с основным языком.

    Ну и соответствующий коммерческий опыт ~5 лет.
    Учитывай ещё и специфику Rust-проектов: это что-то новое, что требует безопасности и эффективности, где нельзя/нежелательно/невозможно использовать "Традиционные" языки.
    Так что и уровень ответственности и требуемых знаний будет выше, чем на аналогичную, например Java-позицию.
    Ответ написан
    1 комментарий
  • Можно ли вызвать ошибку времени компиляции в макросе?

    vabka
    @vabka
    Токсичный шарпист
    Ну if ты не можешь туда впихнуть, но ты можешь сделать что-то типа
    macro_rules! macro {
     (5) => {compile_error! ("5 is unacceptable")}
    }

    https://doc.rust-lang.org/std/macro.compile_error.html

    Делать какие-то сложные проверки с условиями ты в декларативных макросах не можешь.
    Например ты не можешь вычислить значение выражения. И не можешь убедиться, что это значение константное.
    Так что иногда придётся делать динамические проверки, добавляя всякие if-ы и assert-ы
    Ответ написан
    Комментировать
  • Как вывести тип с исключением значений?

    WblCHA
    @WblCHA
    type Keys = 'line' | 'abzac' | 'text'
    
    type IEX = Record<string, string>
    
    type AntiKey = IEX & Partial<Record<Keys, never>>
    // or
    type AntiKey = IEX & { [Key in Keys]?: never }
    
    // валидное значение
    let znac: AntiKey = {
      oneline: 'anytext',
      otherline: 'othertext'
    }
    // невалидное
    let er: AntiKey = {
      text: 'no',
      other: 'txt'
    }
    Ответ написан
    Комментировать
  • Как защитить сайт от непорядочных заказчиков?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    «пакостливые решения» плохой вариант. Когда из двоих кто-то жульничает — не будьте им : )

    Работа должна делаться наилучшим образом, как вы умеете.
    Оплата, выполнение обязательств — регулируются договором и законами.

    Ваша задача минимизировать свои риски. Для этого бить работу на чёткие этапы, фиксировать выполнение и оплату каждого, прежде, чем приступать к следующему. Хотелки клиента — каждую документировать и включать в «следующий релиз». Срочно-ой-помираю! хотелки — по предоплате. Раз «помирает» – оплатит. Или не было.
    Ответ написан
    2 комментария
  • Детали работы NodeJS?

    Alexandroppolus
    @Alexandroppolus
    кодир
    Во многих источниках говорится о том, что NodeJS не подходит для сложных вычислений, ведь он однопоточный

    Либо это очень старые источники, либо их авторы мудаки. Многопоточность в ноде есть с 10 версии.
    Ответ написан
    Комментировать
  • Как правильно использовать for in в typescript?

    interface IMain {
    	user: string;
    	val1: number;
    	val2: number;
    	val3: number;
    }
    
    type IShort = Partial<Omit<IMain, 'user'>>;
    
    function sum(a: IMain, b: IShort) {
    	const keys = Object.keys(b) as (keyof IShort)[];
    	for (const key of keys) {
    		b[key] = a[key] - (b[key] ?? 0);
    	}
    	
    	return b;
    }
    Ответ написан
    Комментировать
  • Как написать десктопное приложение на javascript?

    ThunderCat
    @ThunderCat Куратор тега JavaScript
    {PHP, MySql, HTML, JS, CSS} developer
    4 комментария
  • Существуют ли компании, где нет перерывов в работе?

    Natebash
    @Natebash
    React, Vue, Angular, Navite JS, Python / Node JS
    Похоже на описание концлагеря) Сейчас большинство айтишных компаний практикуют удаленную работу, тем самым снижая финансовую нагрузку(условие наличия большого офиса, снеков, и прочего). У адекватной компании - вы закрываете таски - вы молодец, когда вы их закрываете - ваше дело. У нас условие - 4 часа пересечения общего времени с командой. К примеру я встаю в 5, в 6 уже на работе, в 2 заканчиваю работать. Далее "свободное время"

    Ищите компанию где не будет такого идиотизма)
    Ответ написан
    1 комментарий
  • Существуют ли компании, где нет перерывов в работе?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    В нормальных компаниях не следят с секундомером за работой сотрудников. Если от вас ждут нажимания кнопок 40 часов в неделю, а не выдачу запланированного объёма продуктов/решений, то надо бежать.
    Ответ написан
    1 комментарий
  • Будет ли ИБП работать в случае нагрузки меньше той минимальной, что указано в его спецификации?

    anthtml
    @anthtml
    Системный администратор программист радиолюбитель
    Тысячник для одного роутера - это из пушки по воробьям. Для роутера хватит и 300.
    А в идеале, если там будет только роутер, то брать не ИБП а ББП (блок бесперебойного питания) от сигнализации - они какраз рассчитаны на долгую жизнь от батареи, тогда как ИБП на "корректно завершить работу компа"

    Касательно вопроса - работать сможет, но это не расчетный режим, т.е. могут быть проблемы со стабилизацией тока/напряжения. Либо может самоотключаться, т.к. некоторые ИБП завершают свою работу при выключении питаемого оборудования.
    Ответ написан
    9 комментариев
  • Домашний хостинг?

    vabka
    @vabka
    Токсичный шарпист
    1. Да, можно.
    2. Ту, которая точно стабильно работает с твоим ПО и которую ты умеешь администрировать.
    3. Зависит от твоего провайдера.
    Обычно это сводится к покупке статичного белого IP и проброс портов на твоём домашнем маршрутизаторе (инструкций достаточно)

    Но для надёжности лучше всё-таки воспользоваться услугами colocation, а не размещать сервер в квартире.
    Ответ написан
    Комментировать
  • Как исправить ошибку TypeScript?

    @wonderingpeanut
    Когда в джаваскрипте появился такой интересный синтаксис?))
    if (0 < something && something < 90) {
      doSomething();
    }


    upd. технически это будет работать, но совсем не так, как ты думаешь.
    Сначала выполнится выражение 0 < windDeg, результат этого выражения будет boolean. Потом булевое значение сравнивается с числом. Отсюда ошибка.
    Ответ написан
    1 комментарий
  • Делегаты, зачем?

    MSerhio
    @MSerhio
    Вхожу в IT
    Делегат позволяет ослабить связность кода, а рассматривать их стоит вместе с событиями.
    Я объясню на примере игростроя.
    Популярный в сети пример: во врага попала пуля. Должно случиться сразу много вещей - нужно снять здоровье врага, выяснить, не погиб ли он, проиграть анимацию, уничтожить пулю, начислить очки игроку и еще что-то.
    Если мы будем всё это вызывать напрямую, то быстро запутаемся и ошибемся. А когда будем переделывать, сломаем всё окончательно.
    Вот тут нас выручат делегаты и события. Мы определим событие, которое срабатывает (вызывает свой делегат) в момент попадания пули. И соответственно, определим делегат для этого события.
    Теперь каждый метод, которому это событие интересно, может подписаться на его делегат (внести себя в список вызываемых делегатом методов - их может быть больше одного).
    И теперь мы можем переделывать что угодно. Главное, не забывать подписываться и отписываться.
    Делегат, это как автолавка в деревне: приезжает и сигналит. Кому надо - выходит. При этом ни автолавке ни покупателям не интересно, что происходит у каждой из сторон в отдельности.
    Ответ написан
    Комментировать
  • Как отправлять fetch запросы рекурсионно (или, возможно, через цикл)?

    Судя по описанию, обычного цикла должно хватить

    // Массив для получаемых объектов
    const result = [];
    // Переменная для следующего URL (изначально содержит первый адрес)
    let previousURL = "http://site.com/";
    
    
    // Цикл
    for (let i = 0; i < 10; i++) {
      // Получение данных
      const response = await fetch(previousURL);
      const data = await response.json();
    
      // Добавление полученных данных в общий массив
      result.push(data);
    
      // Обновление переменной со следующим URL
      previousURL = data.previousURL;
    }
    
    // Демонстрация получивлегося массива
    console.log( result )
    Ответ написан
    1 комментарий
  • Замена MongoDB?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Отличный повод избавиться от этого нелепого недоразумения и начать использовать нормальную БД.
    Если речь идёт о базе данных, то выбор огромный: mysql, postgres, sqlite, sql-server, oracle
    Можно выбрать себе СУБД по вкусу, спланировать структуру БД вместо той оргии с гетерами, которая применяется в Монге и начать пользоваться.
    Если речь идет об in-memory key-value storage то выбор поменьше, о тоже есть - redis или подзабытый уже нынче мемкеш.
    Ответ написан
    Комментировать
  • Задачка на циклы в JavaScript?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    const chars = [' ', '#'];
    const size = 8;
    str = '';
    for (let i = 0; i < size; i++) {
      for (let j = 0; j < size; j++) {
        str += chars[(i + j) % 2];
      }
      str += '\n';
    }
    console.log(str);
    Ответ написан
    7 комментариев
  • Стоит ли использовать Eslint вместе Prettier для typescript?

    vabka
    @vabka
    Токсичный шарпист
    Лично я не вижу смысла их совмещать.
    Гораздо проще настроить только eslint.
    Tslint вообще устарел
    Ответ написан
    9 комментариев
  • Как переписать небольшой скрипт на чистый js?

    @n1ksON
    мидл
    Ответ написан
    Комментировать
  • Нарушает ли переопределение конструктора принцип подстановки Лисков в частных случаях?

    @Akela_wolf
    Extreme Programmer
    Нет, не нарушает. Принцип подстановки Лисков говорит о том, что клиент не должен видеть разницы между базовым объектом (в вашем случае интерфейсом) и его потомком. То есть потомки должны соблюдать контракт, определенный предком (могут делать его строже, но не слабее)

    Конструктор не является частью интерфейса, поэтому переопределение конструктора никак принцип подстановки Лисков нарушать не будет.
    Ответ написан
    3 комментария
  • На что обратить внимание на сервере после взлома?

    CityCat4
    @CityCat4
    //COPY01 EXEC PGM=IEBGENER
    Сделать бэкап для форензики, потом уничтожение машины (это же виртуалка?) чтобы винт удалился, создание новой и развертывание бэкапа.
    Если бэкапа нет - ну ССЗБ.
    Существует множество мест, куда можно что-то вписать - все зависит от квалификации и целей атакующего.
    Ответ написан
    4 комментария