• Кому отдать предпочтение iMac или Windows PC?

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

    Хотелось бы видеть замеры температуры для начала, при нагрузке и стресс тесте. например от OCCT или аида64
    Ответ написан
    6 комментариев
  • Кем можно пойти работать со знанием языка С,ассемблера,хорошей математикой?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Если отбросить нюансы, то никуда. С и ассемблер - это инструменты системщиков и железячников, на которых очень низкий спрос, а значит вакансия появляется раз в несколько лет. Да и за ту будут бороться опытные программисты. Математика же большинстве компаний вообще пофиг. И опять же, где она нужна, туда обычно нанимают опытных. Учите что-нибудь прикладное, на прикладников спрос большой, если сможете выделиться из толпы других желающих, сможете устроиться.
    Ответ написан
    2 комментария
  • Как в typescript объединить ключи, и если появляются повторы, то сделать объединение типов?

    Alexandroppolus
    @Alexandroppolus
    кодир
    Запилил такой вариант.

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

    Решение влоб: сначала находим все пути до простых значений, потом по множеству этих путей собираем объект.
    Ответ написан
    3 комментария
  • Стоит ли работать в тех поддержке?

    xez
    @xez
    TL Junior Roo
    Существует такое деление: разработка и эксплуатация.
    Разработка - это разработка, собственно, а так же системная аналитика, тестирование, продуктовая разработка.
    Эксплуатация - это системное администрирование, поддержка, хелп-деск и т.д.
    И в эксплуатации и в разработке есть развитие.
    Например, в эксплуатации можно устроиться «поднимать трубку», за тем на вторую-третью линии, оттуда в сисадмины/дба/сети/безопасность/девопс куда уж занесет ну и менеджмент конечно.
    В разработке растут по грейдам, а там либо в менеджеры, либо в архитекторы/евангелисты.

    В каждой области есть своя большая экспертиза и своя специфика.
    Редкий разработчик на экспертном уровне разбирается в сетях, например, ну и редкий сетевой администратор умеет в код энтерпрайз уровня.

    На ваш вопрос ответ такой: вам нужно самостоятельно определиться что вам интереснее, чем вам хочется заниматься. Если душа лежит в разработку - нужно как можно раньше именно ей и заниматься. Рост экспертизы в эксплуатации даст вам минимальное преимущество в дальнейшем трудоустройстве.
    Если же нравится «в эксплуатацию» - тоже классно; продолжайте карьерный путь, наращивайте экспертизу.
    Ответ написан
    3 комментария
  • Стоит ли использовать lodash сейчас?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Я так понимаю все что предлагает лодаш уже реализовано нативно

    Не понимаете.
    Ответ написан
    Комментировать
  • Как типизировать массив объектов, чтобы поля содержали суммарно ВСЕ значения 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.
    Ну и наконец любая вариация этих типов допускает пустой массив, из которого тип элементов определить невозможно.
    Ответ написан
    Комментировать