• Как избавиться от ошибки "Argument of type 'xxx | yyy' is not assignable to parameter of type 'never'"?

    Alexandroppolus
    @Alexandroppolus
    кодир
    Если хочется написать обобщенный код, то не надо себя сдерживать! Просто напиши обобщенный код.

    type TGen<T> = {
        parse: (s: string) => T;
        stringify: (value: T) => string;
    }
    
    function f<T>(p: TGen<T>) {
        return p.stringify(p.parse('a'));
    }
    Ответ написан
    Комментировать
  • Почему на сайтах в js коде используются непонятные однобуквенные переменные и что они значат?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Потому что для рабочей версии сайта чаще всего используют минифицированные версии файлов.
    Ответ написан
    1 комментарий
  • Как протестировать функцию в компоненте React c jest /react testing library?

    Alexandroppolus
    @Alexandroppolus
    кодир
    Если там хитрая логика, то лучше вынести в отдельную функцию и к ней наколбасить тестов через чистый jest. Эта функция должна получать все данные, с которыми работает, через параметр. Например, твой handleChangeRoadCosts сейчас берет некую data из замыкания, а надо это передавать доп. параметром. Тогда ты легко напишешь тесты.

    В самом компоненте остаётся обезжиренный вариант, не требующий тестов:
    import {myFunc} from '....';
    
    ........
    const handleChangeRoadCosts = (id: number, keyVal: string, val: string) => {
        return myFunc(id, keyVal, val, data);
    };
    Ответ написан
    4 комментария
  • Как стать начинающим программистом в текущих реалиях?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Куда легче всего пробиться в программирование?

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

    Мне вообще всё равно, куда идти в плане доходов (лишь бы на еду хватало)

    Почему тогда именно ИТ?

    поскольку знаю, что я не выдающийся человек ни в чём

    Бизнес выдающихся и не ищет в основном.

    - Теоретический опыт по книгам по Java,

    Подозреваю, что сейчас это знает каждый школьник.

    Школьники сейчас читать-то не умеют многие.

    Что вы мне посоветуете?

    Ещё раз хорошо подумать нужно ли вам именно ИТ. Во-первых, в силу хайпа сюда сейчас ломятся все подряд, соответственно прорваться на первое рабочее место очень непросто. Во-вторых, в отрасли довольно большая концентрация тех, кто программирование любит, с такими тяжело конкурировать, а чем выше будете забираться, тем чаще придётся. Есть множество работ, куда попасть легче и где хватать будет не только на еду.
    Ответ написан
    2 комментария
  • Как устроиться в начинающую компанию?

    saboteur_kiev
    @saboteur_kiev Куратор тега Карьера в IT
    software engineer
    Никак. В таких компаниях нет необходимости в сотрудниках или в MVP.
    Таким компаниям нафиг не нужен сайт (может быть пригодится группа в ФБ/телеграме).
    В таких компаниях нет денег на третьего сотрудника и вообще не выделен и не создан бюджет на айти.
    Зачем туда устраиваться?

    Вдобавок, не путайте начинающую ИТ компанию и стартап - разные вещи.

    В такую компанию нужен не сотрудник, а инвестор.
    Ответ написан
    3 комментария
  • Как писать запросы к API на стадии разработки, если backend еще нигде не хостится?

    fox_12
    @fox_12
    Расставляю биты, управляю заряженными частицами
    1) Запуск бэкенда локально через Docker для тестирования запросов и интеграции (это нормальная практика?)

    Вполне нормальная практика. А что смущает?
    Ответ написан
    Комментировать
  • Стоит ли идти на практику в компанию?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Если это официальный найм с записью в трудовой, то идти не задумываясь. Сейчас тысячи обладателей вышки месяцами дерутся за вакансии, готовые работать даже бесплатно ради получения первой записи в трудовую.
    Ответ написан
    Комментировать
  • Как убрать "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;
    Ответ написан
    Комментировать
  • Как сделать динамический тип с опциональными полями?

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

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


    playground
    Ответ написан
    Комментировать
  • Является ли опыт работы в гос. организации плохим знаком в резюме?

    Почему это должно быть каким-то негативным признаком?
    Ответ написан
    2 комментария
  • Возможно ли выполнить JavaScript код в Rust при помощи NodeJS?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    Хоть и вопрос несколько сумбурный и не совсем понятно, что автор хочет на самом деле...
    Но краткий ответ: да, возможно, но есть нюансы...

    Самый простой вариант - запускать node как отдельный процесс. Можно просто запускать на каждый чих, а можно заморочиться и организовать общение между приложением на Rust и приложением на Node.js

    Вариант поинтереснее - Node.js можно собрать как библиотеку (есть даже готовые бинарные сборки такого), линкуем с приложением на Rust. Всё живёт в одном процессе, но node будет запускать свои потоки.

    Есть и обратный последнему вариант. Можно из Rust кода собрать бинарный аддон к Node.js
    Правда тут уже JS код будет запускать код на Rust.
    https://napi.rs
    https://neon-rs.dev

    Можно пойти дальше. Если задача просто исполнять JS код из приложения на Rust, то можно слинковаться с одним из JS движков. Приколюх предоставляемых платформой Node.js здесь не будет (вроде fs или http), хотя никто не мешает реализовать это самостоятельно.
    https://crates.io/crates/v8
    https://crates.io/crates/quickjs_runtime
    Ответ написан
    3 комментария
  • Имеет ли право работодатель нанимать инвалида по зрению разработчиком на полную ставку по ТК РФ?

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

    Обязательными для работодателя являются те условия работы, которые указали медики. А для инвалида они носят только рекомендательный характер. Инвалид может отказаться от какого-либо вида, объема и формы мероприятий по реабилитации или от реализации программы в целом.

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

    PS: А что такое "длительная работа за компьютером"?
    При стандартном рабочем дне 8 часов + 1 час обед у тебя в худшем случае будет два периода работы за компьютером по 4 часа.

    Если добавить всякие дейлики и прочие встречи - как минимум один из таких периодов можно ещё на 2 поделить.

    А ведь ещё просто во время работы можно делать перерывы по несколько минут.
    Ответ написан
    4 комментария
  • Как правильно сформировать объект-результат в перегруженной функции в TypeScript?

    Alexandroppolus
    @Alexandroppolus
    кодир
    type Reserve = {
      (from: Date, to: Date, destination: string): Ticket;
      (from: Date, destination: string): Ticket
    };
      
    const reserve: Reserve = (from: Date, ...args: [toOrDest: Date, destination: string] | [destination: string]): Ticket => {
      const isOne = args.length === 1;
    
      return {
        type: isOne ? "one-way" : "two-way",
        from,
        destination: isOne ? args[0] : args[1],
        ...(isOne ? {} : {to: args[0]})
      };
    };


    На самом деле, такая запись уже даёт перегрузку функции, даже если отсюда вообще выкинуть тип Reserve. Но тогда при наведении мыши на reserve будет не совсем понятная подсказка (хотя автокомплит вполне корректный).

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

    Lynn
    @Lynn
    nginx, js, css
    Использовать Record
    interface Author {
      id: number;
      name: string;
    }
    
    const authors: Record<string, Author> = { ... }
    Ответ написан
    Комментировать
  • Как отобразить код формата dll в visual studio с китайского на английский?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Никак. Да, это все код и отображается он верно, но есть нюанс - это бинарный код, а если еще точнее, то машинный код, а именно - инструкции, которые выполняет процессор. И текстовый редактор, в котором вы открыли DLL не предназначен для отображения бинарных файлов. Текстовые редакторы для текста предназначены. И к китайскому языку он не имеет вообще никакого отношения. Учите матчасть!
    Интересующие вас игровые ресурсы могут быть запакованы кучей самых разных способов. Есть типовые решения, которые применяются часто и, которые, хорошо известны. Есть популярные игровые движки, которые тоже все давно исследованы и изучены где, что и как хранят. И есть все остальные - редкие, никому не нужные движки, самописные движки, переделанные движки, часто даже шифруют и придумывают свои форматы для хранения ресурсов для усложнения задачи обратной разработки, взлома и прочего. Извлечение игровых ресурсов из игры - это процесс обратной разработки. Вот в этом направлении вам и нужно гуглить и учиться, чтобы извлечь нужные вам ресурсы.
    Ответ написан
    Комментировать
  • Как скачать весь сайт из интернета целиком для просмотра оффлайн на Windows?

    saboteur_kiev
    @saboteur_kiev Куратор тега Windows
    software engineer
    Эффективно сохранить современные сайты почти нереально.
    Некоторые, можно частично, особенно если они не слишком сложные и в основном содержат статьи.

    Кстати, википедия занимает несколько терабайт только текста, есть сомнения что у тебя скачана вся википедия.
    Есть отдельные сайты, где можно скачать дампы википедии, читаем тут:
    https://en.wikipedia.org/wiki/Wikipedia:Database_d...

    Современные сайты, которые работают на JS функциях, практически нереально спарсить и скачать эффективно и целиком.
    Ответ написан
    3 комментария
  • Как лучше устраиваться, по ИП или ТК РФ?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    1) По ИП даже когда ты безработный нужно за год выплатить фиксированную сумму ( штук 50 вроде )
    Легко уволить, не выплатив даже увольнительные, легко уволить также со стажировки?

    49500 руб в год + ежемесячный налог.
    Фиксированные взносы вычитаются из налога по УСН, поэтому при зарплате от 830 тыс в год их можно не учитывать.

    IKStantin
    Легко уволить, не выплатив даже увольнительные, легко уволить также со стажировки?

    Только расторжение договора. Нет нужных пунктов - нет и обязательств.
    2) По ТК РФ налоги 13% а не 6, но не уволят просто так и могут выплатить напоследок если не стерпеть

    Это лично Ваш налог 13%, но работодатель за Вас платит ещё порядка 30%.

    И что по итогу лучше?

    Чтобы ип или самозанятым было выгоднее работать исполнителю, нужно, чтобы заказчик платил раза в 2-3 большем, чем работнику по ТК (я про сумму на руки). Отпуска, выходного пособия и увольнения нет, есть расторжение договора.
    Ответ написан
    5 комментариев
  • Как лучше устраиваться, по ИП или ТК РФ?

    CityCat4
    @CityCat4
    //COPY01 EXEC PGM=IEBGENER
    Конечно же по ТК :) Потому что только при устройстве по ТК есть "работник" и "работодатель". При работе с ИП ничего такого нет, есть просто контрагент. Другая модель отношений, понимаете? В отношении работника у работодателя куча ( да нет, даже КУЧА) обязанностней - от оплаты отпуска до проблем с травматизмом (не говоря уже про беременность и декрет), в отношении ИП - ничего такого нет :)

    Отношения с ИП очень простые - договор на поставку товаров или оказание услуг и соответствующие закрывающие документы.

    ВСЕ.

    Как ИП ведет свой бизнес - пофиг. Причем оплата товаров/услуг регламентируется совершенно другими законами, нежели выплата зп работнику :) Работать с ИП очень выгодно работодателю, но крайне не выгодно работнику (который ИП).
    Легко уволить, не выплатив даже увольнительные, легко уволить также со стажировки?

    Нет такого понятия. ИП не "принимают на работу" поэтому его нельзя "уволить". С ИП заключают договор. Который да, можно расторгнутьв любое время. Да, там могут быть санкции за досрочное расторжение - ну тут уж как пропишете. Договор - Ваш единственный правоустанавливающий документ.
    Ответ написан
    Комментировать
  • Знаю только Python и SQL. Нужно ли наращивать стек знаний перед попыткой смены работы?

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

    или мне в настоящее время стоит относить себя к т. н. «Разработчикам приложений» (по классификации «Хабр Карьеры»)

    То что ты описываешь - похоже на бэкендера.

    Нужны ли на рынке труда специалисты с таким стеком за такую зарплату

    Вопрос не имеет смысла, ибо он не отвечает на главный вопрос - найдёт ли конкретный соискатель себе рабочее место.
    надо заняться самообразованием, изучая, скажем связку FastAPI + Kafka + Kubernetes?

    Самообразование никогда лишним не будет.
    Ответ написан
    Комментировать
  • Как преобразовать к строке число "0xFF"?

    Alexandroppolus
    @Alexandroppolus
    кодир
    `0x${value.toString(16).toUpperCase()}`
    Ответ написан
    2 комментария