• Как типизировать массив объектов, чтобы поля содержали суммарно ВСЕ значения enum?

    Alexandroppolus
    @Alexandroppolus
    кодир
    Вариант, допускающий повторы: ссылка

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

    VoidVolker
    @VoidVolker Куратор тега JavaScript
    Dark side eye. А у нас печеньки! А у вас?
    типа, антипаттерн...

    но это все равно вызов метода в конструкторе, что не приветствуется.

    Бред. Вот кем не приветствуется - вот он пускай и не приветствует и тихо миро плавает в своем болотце. Спокойно вызывайте приватный инициализатор в конструкторе - это как раз нормально. Конструктор - это и есть инициализатор объекта. Он даже называется "конструктор" - сборщик объекта. Его для этого и придумали. Выносить часть инициализации из инициализатора - на самом неделе не самая умная идея. А вот разбить инициализацию на разные логические части и разнести в разные методы - как раз таки очень даже хорошая практика. Декомпозиция, небольшие и простые функции/процедуры и все такое прочее.
    Ответ написан
    2 комментария
  • Как лучше загрузить сайт на React на GitHub для доказательства, что он действительно на React?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    этот вопрос у меня относится к удобству чтения кода и просмотра сайта другими пользователями, чтобы они удостоверились в разработке на React.

    В репу заливается весь проект, исключая зависимости, так, чтобы можно было скопировать проект себе на локалку, поставить зависимости и:
    - Запустить в режиме разработки одной командой.
    - Собрать проект одной командой.
    - Выполнить тесты одной командой.

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

    Слепой не увидит ничего, в остальном - все чекается на раз-два.

    Рекомендую изучить крупные репы и обратить внимание на то, что там в рамках одной репы имеются исходники (src), сборки разных видов (dist/build), опубликованы все необходимые команды так, чтобы даже не зрячая обезьянка могла скопировать и выполнить эту команду, чтобы получить желаемый результат.
    Ответ написан
    1 комментарий
  • Повысится ли производительность системы при увеличении DDR5 6000 МГЦ с 64ГБ до 128ГБ при связке с i7-14700K?

    @rPman
    Единственная ситуация, из-за которой увеличение объема RAM (при условии что ее уже достаточно) может как то сказаться на производительности - это многоканальный режим (не серверные материнки обычно умеют только двухканальный, но вангую скоро на десктопы придут три и четыре), когда оперативная памяти подключается парами и при совпадении кучи условий (совпадающие тайминги и частоты, совпадающие типы памяти, чаще всего нужно даже одного и того же производителя и даже одинаковая партия, не зря такие планки памяти продают сразу набором - протестированным для работы в многоканальном режиме).

    Синтетические тесты дадут увеличение производительности до 2-ух крат (точнее от количества каналов) - недостижимый идеал в реальных задачах, мало того даже те реальные задачи где будет прирост производительности это там где активно используется память, например архиваторы (бонус 3-10%) 3d-игры с большим объемом текстур или сложной физикой... в остальных случаях этот прирост даже вооруженным взглядом будет не заметен.

    Самая большая проблема, что при добавлении планок памяти от 2 до 4 можно даже уменьшить производительность, например уже работающий многоканальный режим перестанет работать или к примеру не заведется высокоскоростной профиль памяти (у меня такое случилось, добавление двух планок памяти не давало запуститься профилю 18cl3400Mhz, причем это даже не память виновата а материнская плата)
    Ответ написан
    2 комментария
  • Почему объект выдает ошибку Type 'any' is not assignable to type 'never'. при попытке добавить значение свойству?

    Alexandroppolus
    @Alexandroppolus
    кодир
    присвоение можно запихнуть в функцию-генерик, тогда не будет ругаться:

    // ----- общий код с генериками ---------------
    type Parsers<T extends object> = Omit<{
    	[K in keyof T]: (str: string) => T[K];
    }, 'id'>;
    
    function setValue<T extends object>(obj: T, key: Exclude<keyof T, 'id'>, value: string, parsers: Parsers<T>): void {
    	obj[key] = parsers[key](value); // магия
    }
    
    // ----- конкретный кейс ---------------------
    interface Todo {
        id: number;
        name: string;
        text: string;
        complete: boolean;
        num: number;
    }
    
    type List = 'name' | 'text' | 'complete' | 'num';
    
    let list: List[] = ['name', 'text', 'complete', 'num']
    
    const parsers: Parsers<Todo> = {
        complete: s => s === 'true',
        name: s => s,
        text: s => s,
        num: s => +s
    };
    
    const data: Todo = {
        id: 1,
        name: '',
        text: '',
        complete: false,
        num: 0,
    }
    
    for(let input of list) {
        setValue(data, input, formData[input].value, parsers);
    }


    здесь конвертации из строки во что-нибудь вынесены в отдельный конфиг parsers. Функция setValue принимает его как параметр, и достает из него необходимый парсер по ключу. По каким именно причинам TS не ругается на строку внутри setValue, сказать трудно. Видимо, из-за неопределенности параметра Т, не к чему придраться )
    Ответ написан
  • Влияет ли наличие сведений о прохождении лечения у психотерапевта на отказ в офере?

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

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

    Если твоё состояние важно для выполнения работы, то работодатель перед трудоустройством просто отправит тебя на медкомиссию за справкой и никакая мифическая СБ с доступами туда, куда доступа быть не должно, тут даже не понадобится.
    IT не относится к профессиям, где необходима подобная справка от врача. (В отличие от транспорта, армии или полиции, например)

    А о том, что служба безопасности видит/не видит и по каким критериям они могут тебе отказать - ходит больше легенд, чем правды.
    Если верить всему, что об СБ тут пишут, то в крупных компаниях сейчас бы никто не работал.

    На практике СБ смотрит на:
    1. твои долги в ССП (особенно по штрафам, тк у штрафов есть источник)
    2. наличие банкротства. Как минимум банкроту запрещено работать на руководящей должности (в банке аж 10 лет после получения статуса)
    3. вероятность наличия конфликта интересов (если тебя, например, собеседовал твой бывший коллега или вообще твоим новым начальником будет твой родственник и не только)
    4. Твоя кредитная история, но только если ты подпишешь разрешение на доступ к ней.
    5. Отзывы предыдущих работодателей и коллег
    6. Судимости. В первую очередь уголовным. На госслужбу с непогашенной судимостью в принципе нельзя. + А некоторые виды организаций нельзя устраиваться, если у тебя есть судимость по определённым статьям.
    7. Твои соцсети. Просто не пиши в своих соцсетях лишнего.

    На многие виды проверок необходимо твоё письменное согласие, если эта информация не лежит в открытом доступе.
    Чем выше и "рискованнее" твоя должность, тем более тщательная проверка будет и тем более серьёзно будут учитываться все факторы риска.

    На практике я не слышал, чтобы разработчиков как-то очень тщательно проверяли.

    Допустим если я пройду курс лечения у психотерапевта, консультации + антидепрессанты

    Если это вопрос "проходить или не проходить, чтобы не загубить карьеру", то ответ очевиден: обязательно иди и лечись, если тебя что-то беспокоит.

    Если решишь "не губить карьеру в госучреждении" (велика потеря), то:
    В лучшем случае - будешь потом тут задавать вопросы о том, как избавиться от слежки.
    В худшем - больше никакие вопросы не будешь задавать в принципе.

    Если это вопрос о том, стоит ли говорить работодателю о своём здоровье - ответ тоже очевидный: никогда не говори работодателю о каких-либо диагнозах. Ему это знать не обязательно.
    Ответ написан
    7 комментариев
  • Какие примеры кода показывать работадателю, если ты под NDA?

    vabka
    @vabka
    Токсичный шарпист
    Никакие и не показывать.
    Если бы мне кандидат показал код, который под NDA, то я бы сразу его вычеркнул из кандидатов, тк такой работник и бесплатно не нужен, который при увольнении с радостью сольёт твой код.

    Все адекватные интервьюеры прекрасно понимают, что у кандидата тоже есть своя личная жизнь и далеко не у всех программирование является хобби, которым ты с радостью будешь заниматься и в свободное время.
    Ответ написан
    2 комментария
  • Какие примеры кода показывать работадателю, если ты под NDA?

    xez
    @xez
    TL Junior Roo
    всем нужны примера кода, понятно почему

    Мне не понятно.
    Ни разу не собеседованиях у меня примеры кода не спрашивали.
    Я сам на собеседованиях ни разу примеры кода не спрашивал; я прошу рассказать о предыдущем проекте чисто с технической точки зрения, бизнес логика мне не интересна и на собеседовании не нужна.
    Ответ написан
    2 комментария
  • Почему типизация видит в переменной undefined?

    Alexandroppolus
    @Alexandroppolus
    кодир
    Классический пример, когда не нужна связка useState+useEffect

    У тебя функция setFullNewsData вызывается только внутри useEffect. То есть "стейт" fullNewsData - никакой не стейт, а производное значение от квери-параметра seo. Соответственно его надо просто вычислять, скорее всего, с хуком useMemo. Впрочем, undefined при этом никуда не денется, но он совершенно по делу - неизвестно, что может быть в квери-параметре.

    так что предложение проверять fullNewsData остается актуальным.
    Ответ написан
    Комментировать
  • Является ли это корректной записью?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега JavaScript
    Не является. Массив используется на хранения списка значений, в нём нет никаких "имён".
    Значения с "именами" можно хранить либо в объекте, либо в специальном типе Map.

    Но при этом, если речь про значения примитивных типов, то при их добавлении в объект или Map теряется связь с изначальной переменной, откуда значение было взято.

    let a = 3;
    let b = 15;
    
    let one = {};
    
    one.a = a;
    one.b = b;
    
    a = 42;
    
    console.log(one.a, one.b); // 3, 15
    console.log(a, b); // 42, 15


    let a = 3;
    let b = 15;
    
    let two = new Map();
    
    two.set('a', a);
    two.set('b', b);
    
    a = 42;
    
    console.log(two.get('a'), two.get('b')); // 3, 15
    console.log(a, b); // 42, 15
    Ответ написан
    Комментировать
  • Как импортировать данные из .docx файла в JavaScript логику?

    Vindicar
    @Vindicar
    RTFM!
    Технически, DOCX можно прочитать - это ZIP архив, в котором лежат XMLки. Библиотека для чтения ZIP архивов под JS (в т.ч. браузерный) есть.
    Но реально проще будет использовать расширенную поиск-замену в Word, чтобы заменить красный цвет на уникальный символ или комбинацию символов перед текстом. Комбинация ^& означает "искомый текст", т.е. приведённый ниже пример вставляет знак процента перед текстом, написанным красным цветом.
    659eee532a796683149306.png
    А потом уже вставить в веб-страницу текст без форматирования и разбирать его.
    Ответ написан
    Комментировать
  • Суммa элeментoв пoд чeтными индeксaми?

    Alexandroppolus
    @Alexandroppolus
    кодир
    проверка на четность в этой задаче явно лишняя

    let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
    
    let sum = 0;
    
    for (let i = 0; i < arr.length; i += 2) {
        sum += arr[i];
    }
    
    console.log(sum);
    Ответ написан
    4 комментария
  • На сколько Java отличается в обозначении типизации от C# для понятия TS?

    xez
    @xez Куратор тега Java
    TL Junior Roo
    Странная идея вообще учить язык А или Б для того чтобы понять язык В.
    Учите TS чтобы понимать TS, учите C# чтобы понимать C#.
    Ответ написан
    Комментировать
  • Когда вписывать технологию в свой стек?

    paran0id
    @paran0id
    Умный, но ленивый
    Когда готов ответить на вопросы по ней на техническом собеседовании.
    Ответ написан
    Комментировать
  • Как проверить что массив из Foo или Bar?

    bingo347
    @bingo347 Куратор тега TypeScript
    Crazy on performance...
    Для начала, в TS структурная типизация, что значит что типы определяются по содержимому а не по объявлению как в номинальной.
    Под тип пустого интерфейса подходит всё кроме null и undefined. И как правильно отметил WbICHA в комментариях, данные интерфейсы полностью эквивалентны.

    Допустим, что Foo и Bar всё же содержат в своем описании какие-либо поля, и это разные типы. Тогда тип (Foo|Bar)[] позволит передать в себя массив, каждый элемент которого может быть как Foo так и Bar. Проверить тип всех элементов можно лишь пройдя итерацией весь массив.
    Если хотим, чтоб все элементы массива были одного типа, только Foo или только Bar, то нужно принимать такой аргумент Foo[] | Bar[], в этом случае достаточно проверки элемента с индексом 0.
    Ну и наконец любая вариация этих типов допускает пустой массив, из которого тип элементов определить невозможно.
    Ответ написан
    Комментировать
  • Как попасть в IT в 15 лет?

    vabka
    @vabka
    Токсичный шарпист
    И я бы хотел уже начать работать.

    Забудь эту идею - раньше 18 лет никаких шансов устроиться на работу и даже стажировку у тебя нет.
    Любая попытка фриланса у тебя отнимет самый ценный ресурс - время

    Учусь в 9 классе, планирую после него уйти в колледж.

    Если тебя родители из дома не выгоняют, то лучше доучись до 11 класса и поступи в университет - так у тебя будет гораздо более сильная база, будет легче выбирать/менять направление, и работу искать будет сильно легче.

    Вышку через 11й класс получить быстрее, чем через колледж (если я не затупил)
    Ответ написан
    6 комментариев
  • Как работать с точными числами в js, decamal?

    VoidVolker
    @VoidVolker Куратор тега JavaScript
    Dark side eye. А у нас печеньки! А у вас?
    по типу как в питоне встроенный тип decimal. ничего толкового не нашел

    Значит плохо искали! Ибо в первых же нескольких строчках гугла есть decimal.js - что конкретно в нем не устроило? Есть еще куча других библиотек с поддержкой типа decimal. Чем они не устроили?
    умножение на 100 и деление. округление все это не подходит

    Что значит "не подходит"? У вас там итоговые суммы выходят за пределы диапазона Number.MIN_SAFE_INTEGER - Number.MAX_SAFE_INTEGER? Работа с финансами в целочисленном формате - вполне нормальная и традиционная практика.
    Ответ написан
    3 комментария
  • Как вычленить из текста ФИО на python, при том что конкретных шаблонов нет?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    В общем случае эта задача не решается на 100% по определению.
    Вы говорите, что вокруг фамилий у вас произвольный текст, а это значит, что среди этого текста попадаются слова, которые чем-то похожи на ФИО, но не ФИО, или имя отчество, без фамилии, или что-то вроде "светкин василёк Игоревич". Можно это считать таким экзотическим ФИО, или отчество тут просто отдельно стоит и искать его не надо?
    В любом случае схема решения примерно такая. Если у вас есть знаки препинания, то можно разбить по ним фрагменты текста, ФИО не разделяется знаками препинания (кроме дефиса), но дефис отличается от тире пробелами по бокам.
    Далее у вас есть цепочки слов. Если в цепочке N слов, то в ней, можно сказать, N-2 кандидата на ФИО.
    Каждая трока-кандидат на ФИО может быть проклассифицирована по ряду признаков, свидетельствующих в пользу того, является ли эта тройка ФИО. Осталось только определить набор признаков и веса этих признаков. Каждый признак определяет два показателя: 1) насколько этот признак добавляет шансов тройке быть ФИО; 2) на сколько несовпадение по этому признаку отнимает шансов быть ФИО. Показатели определяются от нуля до 1 и перемножаются. Подбор признаков и их показателей будет настройкой вашего классификатора.
    Тут дальше можно двигаться разными путями.
    Часть детектов вы сможете надёжно определять по окончанию отчества.
    Часть признаков у вас будут словарными словами, которые, по вашему, не могут быть именем и\или фамилией.
    На этом этапе уже будет довольно хорошая детекция. Вопрос что вам важнее, отсутствие false positive, или отсутствие false negative.
    Так же по-разному может повезти с входными данными. Если у вас много "ловушек" в виде разбросанных по тексту бесхозных отчеств, если у вас много очень странных имён... в общем тут вам никто не выдаст идеальное решение. При отсутствии четкого ТЗ результатом будет расплывчатое ХЗ.
    В целом обычно на настройку таких классификаторов под текст на первое время сажают людей. У нас сейчас есть ChatGPT и ему, думаю, вполне можно скидывать наборы имён, чтобы он вычеркивал те, которые вряд ли именами являются. Если вы приняли, что какое-то слово не может являться именем, или фамилией, то такое решение хорошо бы кэшировать, а затем для консистентности придерживаться аналогичного в других случаях.

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

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Если стоит задача именно зарабатывать, то единственный сейчас для студента выход - это партайм в общепите, торговле или доставке. Работу по специальности найти практически невозможно. Редких счастливчиков с выдающимися качествами возьмут на бесплатную стажировку.
    Ответ написан
    2 комментария
  • Спалят ли HR резюме?

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

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

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