• Почему в стейт попадает предыдущее состояние? Как правильно его обновлять?

    @HealSpirit
    sort() сохраняет ссылку на старый массив. toSorted() возвращает новую ссылку на массив. Только новая ссылка позволяет понять реакту, что надо ререндерить компонент.
    Использовать надо toSorted() или
    setAllTODOS([...sortedTodos]);
    setAllTODOS((prevTodos) => [...sortedTodos]);
    Ответ написан
    2 комментария
  • Что такое культура программирования?

    xez
    @xez
    TL Junior Roo
    Почти то же самое, что культура коммуникации.
    - Следование код-стайлу. Адекватный нейминг.
    - Умение писать выразительный, понятный код. Без лапши, без убер-методов на миллион строк, без олимпиадных трюков (если нет такой необходимости); код, в котором можно будет легко разобраться.
    - Любовь к тестам. Понимание почему и зачем тесты писать и почему и зачем не писать.
    - Следование общепринятым инженерным практикам. В Гите не пушить без реквеста в мастер, не ребейсить без необходимости, подписывать комиты, описывать реквесты. В бд предпочитать миграции и не лазить в прод трясущимися, грязными ручонками. Релизы согласовывать, к стейджам относится уважительно. В очереди не срать. Рута избегать.
    - Скилл в декомпозиции и оценке. Умение прогнозировать разработку, умение давать обещания и умение их выполнять.
    - Отсутствие магического мышления. Понимание причино-следственных связей. Знание что такое логи и что такое метрики.
    - и т.д..
    Ответ написан
    Комментировать
  • Нужно ли в head помещать все типы шрифтов для preload?

    Lynn
    @Lynn
    nginx, js, css
    Не нужно и не имеет никакого смысла. Даже скорее сделает хуже.

    Все браузеры которые понимают rel="preload" поддерживают woff2.
    Т.е. добавив в предзагрузку woff ты заставишь их скачать ненужный файл.
    А те браузеры которым нужен именно woff всё равно не поддерживают предзагрузку.
    Ответ написан
    Комментировать
  • Почему после деплоя strapi бекэнда на render, сервер возвращает 403 ForbiddenError?

    yarkov
    @yarkov
    Помог ответ? Отметь решением.
    Потому что локально вы в админке дали разрешение на доступ к коллекции
    Ответ написан
    2 комментария
  • Как завышать цену?

    @Stalinko Куратор тега Фриланс
    PHP'шник и фрилансер до мозга костей
    В дополнение к остальным ответам:
    Можно разбить задачу на подзадачи, где первая задача будет - выяснить все непонятные моменты, чтобы дать более точную оценку всей работе.
    Ответ написан
    Комментировать
  • Как завышать цену?

    @vitaly_il1
    DevOps Consulting
    Во-первых, тэг неправильный - вместо него надо "фриланс" или что-то подобное.

    По сути - я вижу два варианта:
    1) дать самую пессимистичную оценку
    2) разбить задачу на два этапа - а) тесты, иссследование и проч., после которого будет оценка, и б) основной проект

    Все это при условии что задача на 100% выполнима.
    Ответ написан
    Комментировать
  • Для чего добавляется окончание View в название компонента?

    Aetae
    @Aetae Куратор тега Vue.js
    Тлен
    В vue не должно быть "одноименных" компонентов, чтоб случайно не перекрыть какой-нить новый html6 тег, вот и придумывают всякое:)

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

    Это не является какой-то утверждённой системой, например во многих случаях используется система: Layout - для подобных шаблонов, Page - для конкретных вложенных страниц.

    В целом vue ничего в этом плане не оговаривает, потому каждый делает как ему приятнее или как оговаривает конкретный фреймворк.
    Ответ написан
    2 комментария
  • Актуальны ли технологии AJAX и JQUERY при нынешних веб реалиях?

    ThunderCat
    @ThunderCat Куратор тега JavaScript
    {PHP, MySql, HTML, JS, CSS} developer
    jquery - такой себе жс для ленивых, много длинных функций объединенных в удобные обертки, естественно найдется как много сторонников jquery (например есть куча готовых жс скриптов использующих как движок jquery), так и много поборников "чистого арийского" кода (только ванилла, только хардкор!). На самом деле все зависит от задачи, уровня владения и философии разработчика. Как таковая библиотека не особо устарела и много где используется, использовать ли ее лично вам - вопрос вкуса и убеждений. Подробнее обсуждалось тут.

    что касается AJAX - скорее всего вы не совсем понимаете в чем суть, так как это не какая-то библиотека или фреймворк, а метод взаимодействия между клиентом и сервером, по протоколу http(s), позволяющий отправлять запросы без необходимости перезагружать страницу, но из контекста страницы (читать про XMLHttpRequest), и является неотъемлемой частью веб апи и устареет еще очень не скоро. Как некая альтернатива ему может выступать сокет соединение, но обычно области применения этих технологий разные, как и задачи, которые они выполняют.
    Ответ написан
    9 комментариев
  • В 40 лет планирую поменять сферу деятельности с 1С на Android? Сколько на старте смогу зарабатывать?

    @nikbrik
    Нахожусь почти в идентичной ситуации. 33 года, образование высшее, работаю в 1С 9 лет, перехожу в Андроид, есть жена и ребенок, жена не работает. +Ипотека.
    Учусь уже год, недавно начал пробовать ходить на собеседования.
    Моё ИМХО:
    - Твой опыт в 1С не релевантный в "большой" разработке, от слова совсем. Причем не только по мнению работодателя, это так и есть. Алгоритмы и структуры данных - не знаешь. ООП - не знаешь. Функциональное программирование - не знаешь. Архитектурные паттерны, шаблоны, принципы SOLID и метапринципы - не только не знаешь, но и не понимаешь, нужно будет много практиковаться, чтобы понять. TDD - не знаешь (хотя может быть тебе и повезло работать на проектах, где пытались использовать BDD, но в 1С это все равно немного не то). Git - не знаешь. Многопоточность и клиент-серверное взаимодействие - только думаешь, что знаешь. Устройство ОС и другие базовые вещи computer science - уже давно выветрились из головы. Даже банально английский - не знаешь. Все современные подходы и инструменты - не знаешь.
    - Java и Kotlin - сейчас это одно целое, ты должен знать оба, без вариантов. Начинай с любого. Во flutter еще надо будет выучить Dart. В принципе все очень похоже (но не на 1С)
    - 1000$ на старте - это очень хороший вариант, чтобы свитчнуться, если предложат - бери не глядя. Многие будут предлагать меньше.
    - Твой возраст не имеет значения, если ты им не кичишься. Для них ты 18-летний постаревший джун без опыта и веди себя соответствующе.
    - Кроссстек (ios + android) никому не нужны. Но во flutter опыт нативной разработки (там или там) считается плюсом. Jetbrains также разрабатывает kmm, может в будущем взлетит, туда из андроид попасть легче.
    - Учиться придется 2 часа в день по ночам. Или рано утром. Если ездишь на работу на машине - пересядь на общественный транспорт, будет дополнительное время читать и смотреть. Также придется учиться в туалете, в обеденный перерыв, если не можешь уснуть вечером, вместо фильмов/сериалов/игр и т.д. Год минимум (нужно же минимум 1000$, правильно?)
    - Роадмэпов полно, ищи. Также нужно будет иметь несколько вылизанных пет-проектов.
    - Неплохой вариант - найти стажировку где-то параллельно с основной работой. Запасись корвалолом.
    - Вся информация есть бесплатно на https://developer.android.com/
    Ответ написан
    6 комментариев
  • Почему проходит тест с разными значениями?

    bingo347
    @bingo347 Куратор тега TypeScript
    Crazy on performance...
    Во-первых, убрать try-catch из метода
    Во-вторых
    function getPrivateMethod(methodName: string, settings: ISettings) {
      const modelProto = Model.prototype as any;
      const instance = Object.create(modelProto);
      return () => modelProto[methodName].call(instance, settings);
    }
    Ответ написан
    5 комментариев
  • Почему проходит тест с разными значениями?

    Fragster
    @Fragster
    помогло? отметь решением!
    Потому что функция не бросает исключение, а сама его перехватывает.
    Нужно удалить try-catch обертку.
    Ответ написан
  • Почему при вводе нуля выполняется else, но при этом выполняется преобразование из условия if?

    Fragster
    @Fragster
    помогло? отметь решением!
    Первую часть надо заменить на
    let num = Number(prompt('введите число:', 0));
    if (!isNan(num ))

    а сейчас там присваивание вместо сравнения
    Ответ написан
    Комментировать
  • Почему при вводе нуля выполняется else, но при этом выполняется преобразование из условия if?

    VlasenkoFedor
    @VlasenkoFedor
    Программист: php, js, go
    if ( num = Number(num) ){}
    здесь идет присвание где результат num =0
    услвие if(0) ложно, проваливаемся в else
    Ответ написан
    Комментировать
  • Какая есть бесплатная альтернатива Adobe Photoshop для верстальщика?

    HunteR-VRX
    @HunteR-VRX
    Помешанный на развитии
    Здравствуйте.

    1. Figma
    2. Avocode

    Обе программы существуют как для стационарной установки на ОС, так и в рамках облачного использования
    Ответ написан
    2 комментария