Я думаю, в России достаточно населенных пунктов, где в среднем количество дней в году, когда температура колеблется вокруг нуля за цикл день-ночь, превышает "пару". Тут нужна полноценная аналитика по конкретным местам, которая ещё и количество осадков будет учитывать, амплитуду температур и т.д. и т.п.
Чаты проще TODO листов? Ну, может быть чат на каком-нибудь форуме, где можно писать текстовые сообщения в общую колонку текстовых сообщений - да. Дискорд - это махина из миллиона самых разных фич, это весьма сложное приложение с точки зрения бизнес-логики. Я не говорю, что каждый байт из js, который он скачивает, необходим, но и нельзя просто сказать, что размер бандла раздут на ровном месте.
Безусловно, это отличный старт в разработке. Довольно большой, рабочий проект, которым ещё и можно воспользоваться в жизни. Красавчик! У меня есть буквально одна придирка - мне кажется неудачной цветовая схема оценок. 2 - это неуд, но и не критическая проблема, просто одна из многих ошибок. 3 - это все ещё положительная оценка, пусть и не самая лучшая. 4 - это хорошая оценка, как ни крути. У многих учеников, особенно когда на них давят родители, и так сломано восприятие в сторону "если не 5 - это неудача". Кажется, что для двойки подошёл бы оранжевый, для тройки жёлтый, для четверки зеленый, но менее насыщенный. Оценки будут вполне различимы, но чисто психологически будут восприниматься правильней.
На самом деле, адекватного ответа не будет. Мы пришли к решению в виде tanstack query для vue. Там и в документации достаточно популярно объясняется разница между состоянием приложения и асинхронным состоянием сервера. Решение хорошее, очень много проблем решает.
Попробовал задать тот же вопрос. Он мне так же сначала неправильно ответил, но когда я сказал, что он пропустил некоторые числа, то дал правильный результат. А вот на мои дальнейшие попытки узнать, почему конкретно он сначала ответил неправильно - начал отнекивается, мол, "oversight" и "lack of attention". Когда я сказал, что такого быть не может, все же сказал, что это "programming errors and other issues". Любопытно будет, когда он научиться объяснять свои ошибки.
Слегка странно давать подобное тестовое фронтендеру (судя по стеку). В реальной жизни подобных проектов очень мало и в них не берут людей после 3 месяцев буткемпа. Да и задача достаточно трудоёмкая для тестового.
При разработке CLI возникают те же проблемы, что и при разработке GUI. React создан для решения этих проблем. И в статье неплохо показано, что подход рабочий + приведены примеры живых и достаточно сложных CLI-приложений, которые используют этот же подход. Так в чем проблема? Под UI на React "бекенд" можно хоть на Haskell писать, если проблема в этом.
1) Если написать код так, как вам хотелось бы — будет просто SyntaxError. Похожим на желаемый синтаксис будет определение именованной функции с помощью function name(arg) {}.
Это работает, т.к. вы дали функции имя, чтобы ее можно было использовать в дальнейшем. В случае с лямбда-функциями (которые в JS описываются "стрелочным" синтаксисом вроде a => a + 1) — их не просто так называют анонимными.
При объявлении они не получают имени и поэтому должны быть где-то сохранены, чтобы их можно было использовать в дальнейшем. В данном случае их сохраняют в константу. Поэтому нам нужно объявить константу так же, как обычно. Если в примере const obj = {a: 1} мы сохранили в константу obj ссылку на объект { a: 1 }, то в const func = (x, y) => x + y мы сохраняем в константу func ссылку на объект функции.
Это единый и привычный синтаксис для данного использования лямбда-функций. Мы также можем объявить лямбда-функцию прямо в аргументах некой функции. Тогда она будет сохранена в замыкании. Пример:
function onClick(elId, callback) {
if (elId == 1) {
callback()
}
}
onClick(1, () => console.log('Вызван коллбек'))
Мы объявляем анонимную функцию, не сохраняя ее в константу. Она будет доступна внутри функции onClick под именем callback.
3) У обычного js в целом нет компилятора — это интерпретируемый язык. Данный пример не несет в себе ошибке и НЕ является плохим по определению. Это плохой код только в парадигме функционального программирования, при условии, что есть возможность написать "чистую" функцию.
4) Ответ автора не совсем верен. Как вы правильно упомянули, структура данных User может быть достаточно сложна. В этом случае ...object скопирует в новый объект только поля и значения первого уровня. Если в нем будут вложенные объекты — они НЕ будут скопированы, и могут изменяться, если какой-нибудь код будет иметь к нему доступ. Пример:
let a = { c: 1 }
let b = { m: 1, a }
let d = { ...b, k: 1 }
a.c = 2
b.m = 2
console.log(d) // { m: 1, a: { c: 2 }, k: 1 }
Как видно, объект a, вложенный в b, а потом в d при изменении повлиял на d, тогда как при изменении поля m, которое находится на верхнем уровне объекта b, объект d не изменился.
Таким образом, для иммутабельности стоит использовать специальные либы, которые делают "глубокие" копии для объектов, массивов и т.д. В простом варианте это lodash с его cloneDeep или более специализированная Immutable.js
Совершенно неправильно говорить, что нововведения в vue 3 просто скопированы из реакта. Самое большое и значимое обновление, а именно, composition api, имеет за собой большое обсуждение и мотивацию, которая отражена здесь https://composition-api.vuejs.org/#summary. При этом, картинка, которую "везде предлагают", просто показывает, что при использовании этого api код, который относится к одной задаче внутри компонента, собран в одном месте. В этот момент становится понятно второе преимущество — можно переиспользовать код с помощью простых функций, не используя миксины со всеми их проблемами. И тут автор прав, что пользователи TS получают очень большие преимущества. Код в одном месте — это огромный плюс к чтению, переиспользование + TS — огромный плюс к поддержке. Большие приложения поддерживать станет гораздо проще.
Довольно странные вопросы. Зачем-то есть вопрос про marquee, который уже устарел и не рекомендуется к использованию. Вопросы про стилизацию с использованием html. Какие-то тонкости работы браузера перемешаны с максимально простыми вопросами вроде "может ли на странице быть ссылка на другую страницу". Вопрос про активную ссылку — непонятный. Я бы ответил, что это ссылка в момент клика по ней, которая соответствует псевдоклассу :active. Почему здесь активной называют hovered ссылку — неясно.
Разве перефокусировка и сужение/расширение зрачка - это не профилактика спазма аккомодации?
Я думаю, в России достаточно населенных пунктов, где в среднем количество дней в году, когда температура колеблется вокруг нуля за цикл день-ночь, превышает "пару". Тут нужна полноценная аналитика по конкретным местам, которая ещё и количество осадков будет учитывать, амплитуду температур и т.д. и т.п.
Чаты проще TODO листов? Ну, может быть чат на каком-нибудь форуме, где можно писать текстовые сообщения в общую колонку текстовых сообщений - да. Дискорд - это махина из миллиона самых разных фич, это весьма сложное приложение с точки зрения бизнес-логики. Я не говорю, что каждый байт из js, который он скачивает, необходим, но и нельзя просто сказать, что размер бандла раздут на ровном месте.
Безусловно, это отличный старт в разработке. Довольно большой, рабочий проект, которым ещё и можно воспользоваться в жизни. Красавчик! У меня есть буквально одна придирка - мне кажется неудачной цветовая схема оценок. 2 - это неуд, но и не критическая проблема, просто одна из многих ошибок. 3 - это все ещё положительная оценка, пусть и не самая лучшая. 4 - это хорошая оценка, как ни крути. У многих учеников, особенно когда на них давят родители, и так сломано восприятие в сторону "если не 5 - это неудача". Кажется, что для двойки подошёл бы оранжевый, для тройки жёлтый, для четверки зеленый, но менее насыщенный. Оценки будут вполне различимы, но чисто психологически будут восприниматься правильней.
На самом деле, адекватного ответа не будет. Мы пришли к решению в виде tanstack query для vue. Там и в документации достаточно популярно объясняется разница между состоянием приложения и асинхронным состоянием сервера. Решение хорошее, очень много проблем решает.
Попробовал задать тот же вопрос. Он мне так же сначала неправильно ответил, но когда я сказал, что он пропустил некоторые числа, то дал правильный результат.
А вот на мои дальнейшие попытки узнать, почему конкретно он сначала ответил неправильно - начал отнекивается, мол, "oversight" и "lack of attention". Когда я сказал, что такого быть не может, все же сказал, что это "programming errors and other issues".
Любопытно будет, когда он научиться объяснять свои ошибки.
Слегка странно давать подобное тестовое фронтендеру (судя по стеку). В реальной жизни подобных проектов очень мало и в них не берут людей после 3 месяцев буткемпа. Да и задача достаточно трудоёмкая для тестового.
При разработке CLI возникают те же проблемы, что и при разработке GUI. React создан для решения этих проблем. И в статье неплохо показано, что подход рабочий + приведены примеры живых и достаточно сложных CLI-приложений, которые используют этот же подход. Так в чем проблема? Под UI на React "бекенд" можно хоть на Haskell писать, если проблема в этом.
1) Если написать код так, как вам хотелось бы — будет просто SyntaxError. Похожим на желаемый синтаксис будет определение именованной функции с помощью
function name(arg) {}
.Это работает, т.к. вы дали функции имя, чтобы ее можно было использовать в дальнейшем. В случае с лямбда-функциями (которые в JS описываются "стрелочным" синтаксисом вроде
a => a + 1
) — их не просто так называют анонимными.При объявлении они не получают имени и поэтому должны быть где-то сохранены, чтобы их можно было использовать в дальнейшем. В данном случае их сохраняют в константу. Поэтому нам нужно объявить константу так же, как обычно. Если в примере
const obj = {a: 1}
мы сохранили в константуobj
ссылку на объект{ a: 1 }
, то вconst func = (x, y) => x + y
мы сохраняем в константу func ссылку на объект функции.Это единый и привычный синтаксис для данного использования лямбда-функций. Мы также можем объявить лямбда-функцию прямо в аргументах некой функции. Тогда она будет сохранена в замыкании. Пример:
Мы объявляем анонимную функцию, не сохраняя ее в константу. Она будет доступна внутри функции
onClick
под именемcallback
.3) У обычного js в целом нет компилятора — это интерпретируемый язык. Данный пример не несет в себе ошибке и НЕ является плохим по определению. Это плохой код только в парадигме функционального программирования, при условии, что есть возможность написать "чистую" функцию.
4) Ответ автора не совсем верен. Как вы правильно упомянули, структура данных User может быть достаточно сложна. В этом случае
...object
скопирует в новый объект только поля и значения первого уровня. Если в нем будут вложенные объекты — они НЕ будут скопированы, и могут изменяться, если какой-нибудь код будет иметь к нему доступ. Пример:Как видно, объект
a
, вложенный вb
, а потом вd
при изменении повлиял наd
, тогда как при изменении поляm
, которое находится на верхнем уровне объектаb
, объектd
не изменился.Таким образом, для иммутабельности стоит использовать специальные либы, которые делают "глубокие" копии для объектов, массивов и т.д. В простом варианте это lodash с его cloneDeep или более специализированная Immutable.js
Совершенно неправильно говорить, что нововведения в vue 3 просто скопированы из реакта. Самое большое и значимое обновление, а именно, composition api, имеет за собой большое обсуждение и мотивацию, которая отражена здесь https://composition-api.vuejs.org/#summary. При этом, картинка, которую "везде предлагают", просто показывает, что при использовании этого api код, который относится к одной задаче внутри компонента, собран в одном месте. В этот момент становится понятно второе преимущество — можно переиспользовать код с помощью простых функций, не используя миксины со всеми их проблемами. И тут автор прав, что пользователи TS получают очень большие преимущества. Код в одном месте — это огромный плюс к чтению, переиспользование + TS — огромный плюс к поддержке. Большие приложения поддерживать станет гораздо проще.
Довольно странные вопросы. Зачем-то есть вопрос про marquee, который уже устарел и не рекомендуется к использованию. Вопросы про стилизацию с использованием html. Какие-то тонкости работы браузера перемешаны с максимально простыми вопросами вроде "может ли на странице быть ссылка на другую страницу". Вопрос про активную ссылку — непонятный. Я бы ответил, что это ссылка в момент клика по ней, которая соответствует псевдоклассу :active. Почему здесь активной называют hovered ссылку — неясно.