Задать вопрос
  • Почему современные языки отказываются от ООП?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Они не отказываются. Скорее происходит отказ от "парадигмы" разработки. Языки стали мульти-парадигменные. Посмотрите на С++20 или Scala. Их невозможно положить в коробочку ООП или ФП. В них есть почти полный набор фич и оттуда и отсюда. И с каждым годом число фич растет и граница размывается. Нашим потомкам будет вообще непонятно где идет раздел.

    По поводу golang. Это язык ограниченной разработки. Его создавали специально чтобы порог вхождения был низкий. Фактически делали лайтовый С++ которому можно обучить школьника за 14 дней. Но с перформансом выше чем у Питона. Поэтому выражать какие-то сложные конструкции на типах там скорее всего не получится. У golang есть свой манифест. Я забыл как он называется и где он. Вобщем там довольно четко обоснованно почему такие принципы и почему такая идеология.
    Ответ написан
    1 комментарий
  • Как создать объект с регистронезависимыми ключами?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Если завернуть объект в Proxy, можно будет изменять ключи при обращениях к объекту:

    const obj = new Proxy({}, {
      get(target, key) {
        const lowerKey = key.toLowerCase();
        return target[Object.hasOwn(target, lowerKey) ? lowerKey : key];
      },
      set(target, key, val) {
        target[key.toLowerCase()] = val;
        return true;
      },
      has(target, key) {
        return key in target || key.toLowerCase() in target;
      },
      defineProperty(target, key, descriptor) {
        return Object.defineProperty(target, key.toLowerCase(), descriptor);
      },
      deleteProperty(target, key) {
        return delete target[key.toLowerCase()];
      },
      getOwnPropertyDescriptor(target, key) {
        return Object.getOwnPropertyDescriptor(target, key.toLowerCase());
      },
    });
    Ответ написан
    1 комментарий
  • Как настроить Prettier для Git?

    yarkov
    @yarkov
    Помог ответ? Отметь решением.
    Отформатировать один раз все файлы, закоммитить и придерживаться стайлгайда. Иначе зачем вам вообще prettier?
    Ответ написан
    Комментировать
  • Насколько большую роль в IT-карьере играют связи?

    Alexandroppolus
    @Alexandroppolus
    кодир
    Очень большую роль играют нейронные связи в мозгу. Чем их больше, тем лучше соображается, а в кодинге без этого никак. Остальные связи особого значения не имеют.
    Ответ написан
    4 комментария
  • TypeScript делает из JS СИ подобный язык?

    JS и так си-подобный.
    TS только даёт ему статическую типизацию.

    php не нужны расширения наподобие ts, тк у него вроде и так уже появилась опциональная статическая типизация.

    Python кстати тоже си-подобный, не смотря на то что фигурные скобки в нём заменены на отступы
    Ответ написан
    Комментировать
  • Лучшая страна для VPN?

    @Drno
    нидерланды, финляндия, германия
    Ответ написан
    Комментировать
  • Лучшая страна для VPN?

    XOR2048
    @XOR2048
    Web & Browser extension developer
    Швейцария, Финляндия, Румыния, Словакия, страны Прибалтики тоже должны хорошо отрабатывать.
    Ответ написан
    5 комментариев
  • Как можно сократить этот код?

    0xD34F
    @0xD34F Куратор тега React
    const SORT = [
      [ 'без сортировки' ],
      [ 'цена, по возрастанию',         (a, b) => a.price - b.price ],
      [ 'цена, по убыванию',            (a, b) => b.price - a.price ],
      [ 'год создания, по возрастанию', (a, b) => a.formed_in - b.formed_in ],
      [ 'год создания, по убыванию',    (a, b) => b.formed_in - a.formed_in ],
    ];

    const [ sortType, setSortType ] = useState(0);
    
    const data = useMemo(() => {
      const sortFunc = SORT[sortType][1];
      return sortFunc ? [...bands].sort(sortFunc) : bands;
    }, [ bands, sortType ]);

    <select value={sortType} onChange={e => setSortType(e.target.value)}>
      {SORT.map((n, i) => <option value={i}>{n[0]}</option>)}
    </select>
    Ответ написан
    Комментировать
  • Двойная сортировка со стрелочной функцией. Как реализовать?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    const sortByLName = (a, b) => a.last_name.localeCompare(b.last_name, 'ru');
    const sortByJobId = (a, b) => a.job_id - b.job_id;
    const sortByJobIdAndLName = (a, b) => sortByJobId(a, b) || sortByLName(a, b);
    Ответ написан
    Комментировать
  • Можно ли записать этот дженерик изящнее?

    Alexandroppolus
    @Alexandroppolus
    кодир
    type PlaceholdersFrom<
        T extends ObjectPlaceholders, K extends keyof ObjectPlaceholders
    > = T[K]
    Ответ написан
    3 комментария
  • Какие есть альтернативы онлайн кодированию на техническом интервью?

    Alexandroppolus
    @Alexandroppolus
    кодир
    можно заставить чувака найти ошибки/недостатки в коде (провести код-ревью). Для задачки - просто словесно описать алгоритм решения, это сэкономит время на дебаге.
    Ответ написан
    2 комментария
  • С чего начать в 30 лет?

    gbg
    @gbg
    Любые ответы на любые вопросы
    Фундаментальная проблема - в игрострой стоит очередь фанатов с горящими глазами. Людей, которые пишут игры, играют в игры, моддят игры, хакают игры..., начиная с возраста, когда они смогли дотянуться до клавиатуры (как ваш покорный слуга). При этом, у них столько мотивации, что они могут сами поставить себе задачу, сами нагуглить все, что нужно (Спасибо дяде Немнюгину за его учебник. Это все что нужно знать о DOS, чтобы закодить dOOm) и сами все напишут и нарисуют (работая над этим сутками. Не потому что над душей стоит босс с воплями о лишении премии, а потому что им это интересно).

    И вот теперь, Андрей, который уже устал хочет встать в очередь высоко мотивированных конкурентов и попросить себе оффер. Каковы его шансы на успех?

    В играх есть много специализаций программирования - хотите графику, придется учить одно (причем на 2d и 3d это одно будет разное), хотите игровую логику и скриптинг - это номер два, хотите системную часть и бэкенд - это будет третье.

    Для универсального развития, нужно начинать с простых фиговин вроде тетриса, арканоида, бильярда и прочего (в которых однако есть все столпы игростроя - графика + логика + системный движок, можно и добавить сеть, если подумать) и потом наращивать сложность - делать платформер или RTS.
    Ответ написан
    4 комментария
  • Когда применять arr.reduce?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Когда сочтёте нужным. Типа, подумали, и решили - здесь reduce нужен. Или не нужен. Да, подумали. Для этого у вас есть особый инструмент - голова называется.
    Ответ написан
    Комментировать
  • Почему в интерфейс не записывается тип boolean?

    bingo347
    @bingo347 Куратор тега TypeScript
    Crazy on performance...
    В TypeScript есть литеральные типы ('some string', 1, 2, 3, true, false).
    Значение константы поменять нельзя, поэтому TypeScript выводит для них литеральный тип.
    Поэтому тип q будет не boolean, а true.
    Ответ написан
    4 комментария
  • Ревью на резюме?

    Jacen11
    @Jacen11
    выполнял и выполнял хорошо, отправлял, но в ответ всегда тишина
    ну значит это было не хорошо. Я тоже так думал что хорошо сделал, запросил фидбек, мне ответили и понял что говна навернул

    так писать резюме не рекомендуют
    лучше написать что то типа "работал над таким то проектом, сделал то то и то то, стек такой то"
    вот вы написали что разрабатывали клиентские приложения. Что это вообще значит? Мало ли что вы под этим подразумеваете. Нужно конкретно писать что делали. И не в о себе, а в опыте

    еще удобнее было бы ссылку на резюме дать, а не скрин. Так менее удобно смотреть, пришлось вручную гит вбивать
    это мелочи, но в гите лучше в ридме написать описание проекта и как стартануть. https://github.com/ArturMavlidov/currencies вот тут например я что то не понял, что в ридме делает инструкция как начать разработку на реакте. Если у вас последний проект посвящен установке фреймворка, это показывает вас ну очень джуновско и неопытным.

    даже приглашения на собеседования не было ни одного
    ну это печальный факт, у всех так. У меня на сотню откликов хорошо если 5 ответов было. Хотя бы с отказами. Подкрученное резюме на самом деле не сильно улучшит картину. Это только в рекламе всем рассказывают как джунов всех расхватывают, в реальности это не так.

    Но вот зато через пару лет, все те кто меня игнорили уже сами мне в личку в телеге пишут)
    Ответ написан
    Комментировать
  • Задача на циклы в JavaScript?

    GavriKos
    @GavriKos
    Улучшать такой примитивный код да еще в отрыве от задачи - бесполезное занятие. Тем более на таком начальном уровне знаний.
    Поняли как работают циклы? Сможете применить на практике? Все, следующая задача.

    А то можно щас начать про потребление памяти при сложении строк, про var/let... Суть то задания не в этом
    Ответ написан
    3 комментария
  • Нужен ли babel, если используешь TypeScript?

    bingo347
    @bingo347 Куратор тега TypeScript
    Crazy on performance...
    Typescript compiler - это инструмент проверки типов и компиляции typescript в javascript. Так же он умеет транспайлить конструкции новых стандартов js в более старые стандарты, но это не основная задача этого инструмента, и делает он это хуже целевых инструментов, в частности его можно настроить только на конкретный стандарт.

    Babel - это инструмент для парсинга js кода в AST, обхода и модификации AST и обратной сериализации AST в js. Так же это еще и экосистема плагинов и пресетов. Плагины как правило реализуют транспиляцию одной из фич более нового стандарта в более старый. Пресеты - это просто конфигурируемый набор плагинов.
    Так же в Babel AST есть поддержка некоторых расширений js (а ts - это тоже расширение js), но включается это все флагами.

    В экосистеме babel есть preset-env нацеленный именно на транспиляцию более новых стандартов в более старые. Его особенностью является поддержка browserlist и подключения только тех плагинов, которые нужны для указанных браузеров. За счет этого получается более оптимальный js на выходе, так как многие фичи после транспайлинга работают медленнее чем нативные и занимают больше кода.

    Еще в экосистеме babel есть preset-typescript, который включает поддержку ts синтаксиса и транспиляцию ts в js. При этом, в отличии от tsc, он не делает проверку типов, а некоторые сущности может обрабатывать неправильно (как и большинство сторонних компиляторов ts, т.к. у ts нет строгой спеки и единственным источником правды является код tsc, который далек от идеального).

    Оптимальным по выходному результату (пусть и за счет времени сборки) будет вариант, когда сначала ts код обрабатывается через tsc без транспиляции в старые стандарты, а затем происходит транспиляция с помощью babel + preset-env + browserlist.
    Ответ написан
    3 комментария
  • Как переписать небольшой скрипт на чистый js?

    @n1ksON
    мидл
    Ответ написан
    Комментировать
  • Как указать типы данных в импортируемом json файле?

    bingo347
    @bingo347 Куратор тега Node.js
    Crazy on performance...
    https://www.typescriptlang.org/tsconfig#resolveJso...

    Ну или создайте рядом с db.json файл db.json.d.ts со следующим содержимым:
    declare const JSON: {
        id: number;
    }[];
    export default JSON;
    Ответ написан
    Комментировать
  • Говорят в России недостаток IT специалистов составил 1 млн, так ли это?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Да, не хватает миллиона программистов - профессионалов от мидлового уровня с опытом работы в коммерческих проектах не менее трёх лет. А начинающих, которые только хотят стать программистами, переизбыток.
    Ответ написан
    9 комментариев