Вы видите копию треда, сохраненную 7 ноября 2022 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Больше пары строк кода в посте или на скриншоте ведут в ад.
Для программирования на HTML https://codesandbox.io
Для Node.js с консолькой https://repl.it/languages/nodejs
Если рассчитываешь получить дельный ответ, сформулируй правильно вопрос: «что я хочу получить, что я для этого делаю, что я вместо этого получаю». Если/когда самостоятельно найдёшь решение — поделись в треде, мы за тебя переживаем.
Документация - https://developer.mozilla.org
Руководство для вката - https://github.com/acilsd/wrk-fet#javascript
Лудший!
Сап, аноны что почитать по современной вёрстке? Чтобы кратко и как надо. Сам я ни разу не верстальщик, но готовлюсь к собесу и там 100% будут вопросы по тому как НАДО делать. Мне хотя бы по верхам пройтись...
Я обычно гуглю, копирую и правлю уже под свои нужды.
Но знаний в вёрстке у меня 0, и допустим пояснить что хуйняА круче и современней хуйниБ, потому что... я не смогу.
С этого выпал.
Нашел сам, полезная штука, рикамендую посмотреть. хотя я всё это знал, но забыл чёт, потому что нинужно было
>>2430683 →
>>2430663 →
Выставь :root { display: none }
А внутри медиазапросов пропиши @media (...) {
:root { display: unset }
}
Использую css модули, подключал через простое className=style.govno у каждого элемента. Сам проблемы не видел, мне доложил первый человек зашедший на моё поделие.
Рантайм есть у любого бандлера. Даже у бабеля есть свой рантайм.
Ну да. Из этого делаем вывод, что добавление TS в проект добавляет лишнюю нагрузку на движок.
{userRole === 'seller' && <>...</>}
по всему компоненту формы? И что почитать на эту тему? Желательно для даунов, чтобы с практическими примерами и на пальцах. А то я реакт вроде знаю, но как разбивать на компоненты/хуки я в душе не ебу, т.к. проект у меня написан еще большими нубами чем я и мне тупо не у кого учиться.
Добавление любого скрипта добавляет лишнюю нагрузку на движок. Без бандлера один хуй будешь костылить решение, когда два модуля используют разные модульные системы, с такой же нагрузкой в рантайме.
Почему ты просто не создашь себе отдельные компоненты для разных типов юзера? Так декомпозиция будет правильнее, плюс с помощью Suspense ты сможешь уменьшить бандл. Так как seller не может быть buyer (условно), то зачем ему скачивать компонеты которые ему не нужны? Если у тебя слишком много связной логики или ты упарываешься по codestyle, то можешь сделать компонент Form и с помощью Object.assign() сделать компонент Form.Seller и Form.Buyer где у тебя будет использоваться соответствующий UI
А событие onload срабатывает после медиазапросов? Тогда бы можно было бы повесить слой заливки поверх страницы и убирать по полной загрузке.
> бы можно было бы повесить слой заливки поверх страницы и убирать по полной загрузке.
Ох охуенно юзеру будет втыкать в белый экран пока все до единого картинки не загрузятся.
>Почему ты просто не создашь себе отдельные компоненты для разных типов юзера?
Потому что там много одинаковых полей и будет повторение кода. Пробовал уже, и про твою декомпозицию и бандлы знаю, не переживай. У меня более абстрактный вопрос, на самом деле.
При этом хотелось бы использовать одно и то же имя для скаченных файлов. Как можно дождаться загрузки первой фото перед скачиванием второй? Сейчас я на finish в callback модифицирую фотку и отправляю запрос с ней, но, как видите, скачивание новой начинается до загрузки самой первой.
При этом, если сохраняю все фотки с разными именами, то все норм отрабатывает.
У меня голова гудит, поэтому краем глаза глянув на код, могу сказать, что тебе надо промисифайнуть функцию загрузки фотки и через for await let запускать
Зачем разбираться в callback hell, если можно этого не делать
Пути 2: отдельные компоненты навернешь говна от принципа DRY и конструкция switch-case. В конструкцию switch-case закидываешь правила, которые потом биндишь ка компоненты формы. Если у тебя Vue — возвращай со свича объект и бинди через v-bind.
Подозреваю, что ты эту функцию пихнул в цикл for/forEach. Если колбек синхронный - функция на скрине должна возвращать, который резолвится резолвить после строки, где ты вызываешь колбек
Чтобы только в Телеге общаться, а не голосом говорить?
В данный момент React учу.
Хуякт. На западе этапов собеса больше, никто на тих чатиться не будет. + ангельский будут требовать, ибо на хую вертели тебя с твоими месседжами, а на митинги будь добр явиться и отчитаться. + русня на западе +- равна монголам в давние времена времена — дикарь, и не более того. Прочувствуешь все прелести культуры отмены.
Пили пет-проджекты, сделай лэндинг с формой ближайшей цирюльне, запили еще пару петов (не делай ебланские копии соц-сетей и парсер гитхаба), держи гитхаб открытым и оставляй адекватное описание к коммитам. Параллельно отзывайся на вакансии хх и тому подобных ресурсов.
Разговаривать нужно будет много, закладывать за уши еще больше.
Тру хикка? Начнешь рвать волосы на жопе. Прикидываешься? Может быть добьешься успехов, если вместо двачевания займешься делом. Ты нахуй не всрался ни там, ни тут. Либо начнешь шевелить извилинами сам, либо будешь дрочить в треде «мы вам перезвоним» дальше.
Успехов.
Мимо-крок запрыгнул в поезд в январе
Ебать маняфантазии, ты хотя бы здесь попробуй найти работу, полгода хотя бы поработать. Я думаю, у тебя после первого грумминга/планирования ответы сами на эти вопросы появятся. А если не появятся, тогда уже приходи, поговорим.
tl;dr: Нет. Если ты не охуенно-незаменимый, то дважды нет.
Примерно так и делал, кстати (если я правильно понял о чем ты). Только не через switch case, а просто делал независимые от роли юзера пропсы-параметры в компоненте, куда родительский компонент (враппер то есть) уже передавал тот или иной набор пропсов в зависимости от роли юзера. Вот так и изобретаю велосипед, постигаю азы декоуплинга путем проб и ошибок.
Пихай своё поделие в кодпен, а то ещё окажется, что тебе абсолютное позиционировани и не нужно.
Дохуя пихать придется. Картина в целом такая. Если можно обойтись без абсолютного позиционирования, то я хотел бы знать как. Релативное не подходит, оно смещает блок.
Очевидно, что у тебя родительский блок этого болтается. Вот его и фикси.
https://codepen.io/Jumpy_Bunny/pen/qBYEdLz
Но в реакте, то тут без редукса никак? Для контекста слишком много ререндеров будет на каждый пук.
Условно я хочу сделать компонент <Form>, принимающий все пропсы <form>, но под капотом перекидывающий часть из них в форму в хранилище форм, а часть - вешать на див основного компонента. Как такая координация реализуется в реакте?
1) Выпиливай к хуям блокирующие existsSync и mkdirSync, за такое обоссывают.
2) На 18+ ноде пора использовать более удобный fetch
3) `${dir}${filename}` - используй path.join, в остальных случаях твое ебало будет обоссано.
Тебе надо промисифицровать твою функцию:
downloadImage() {
return new Promise((res, rej) => {
//тут пишешь свое говно, по завершению делаешь res();
//по ошибке rej(error);
})
}
Потом используя await проходишься по списку файлов, например:
for (const name of names) {
await downloadFile(name);
}
>>54215
>for await let
Вкатун, плиз.
>Но в реакте, то тут без редукса никак?
Для начала открой документацию редакса и посмотри на пикрелейтед.
>Для контекста слишком много ререндеров будет на каждый пук.
А в редаксе их магическим образом не появится, да?
>Условно я хочу сделать компонент <Form>, принимающий все пропсы <form>, но под капотом перекидывающий часть из них в форму в хранилище форм, а часть - вешать на див основного компонента. Как такая координация реализуется в реакте?
npm i react-hook-form
Эту базу надо в оппост добавить.
function doubleNegative(a, b) {
return [
a - b,
parseInt(a) - parseInt(b),
];
}
console.info(1 - 3); // -2
console.info(doubleNegative(1, -3)); // [ 4, 4 ] где [-2, -2], блиать?
>Для начала открой документацию редакса и посмотри на пикрелейтед.
А теперь перечитай пост, потому что я ничего не говорил про хранение состояния форм в редуксе. Для реализации моей идеи мне нужно хранить как минимум id потенциальной формы и поднабор пропсов формы, типа `action`, `method`, и собирать из этого <form> в хранилище. С колбэками сложнее, так как нужно ещё и onSubmit() вешать на элемент формы в хранилище, и значит передавать его в экшон, что редуксу не по нраву.
>А в редаксе их магическим образом не появится, да?
Конечно не появится, так как можно пропердоливать селекторы так, что только определённые компоненты будут ререндериться, вместо всех потомков контекста. Учитывая разметку, то реактовский контекст в моём случае должен сидеть в руте реактовского рендера, а значит будет ререндерить всю страницу при любом изменении форм. Учитывая, что я заморачиваюсь с этим, чтобы создавать формы различной вложенности, то количество этих ререндеров будет только увеличиваться с усложнением логики.
>npm i react-hook-form
И зачем ты это говно порекомендовал? Логику хранилища форм один хуй придётся реализовывать отдельно, плюс ещё надо будет передавать в пропсы инпутов всякое нерилейтед хукоговно, чтобы это вообще работало.
>я ничего не говорил про хранение состояния форм в редуксе
Хранение значения формы на момент её сабмита - все еще form state.
>Для реализации моей идеи мне нужно хранить как минимум id потенциальной формы и поднабор пропсов формы, типа `action`, `method`, и собирать из этого <form> в хранилище.
Ты какую-то оверинжиниринг хуету городишь. Тебе надо всего-то обернуть твою форму в контекст, на момент сабмита сохранить данные в твой контекст, потом перейти на вторую страницу или что ты там хочешь. На все это уйдет 1 рендер и 2 в 17 версии и ниже.
>Конечно не появится, так как можно пропердоливать селекторы так, что только определённые компоненты будут ререндериться, вместо всех потомков контекста.
Ты определись, для начала, что ты и куда будешь пердолить. У тебя в любом случае при наличии селектеров будет ререндеринг на каждое изменение поля, на которое указывает твой селектор.
> надо будет передавать в пропсы инпутов всякое нерилейтед хукоговно, чтобы это вообще работало.
То ли дело твой вариант с контекстом, который будет ререндерить все древо формы каждый раз или вариантс редухом, где совсем нет бойлерплейта в виде диспатча и экшена в каждом компоненте поля.
>Хранение значения формы на момент её сабмита - все еще form state.
Передача пропсов в форму - тоже состояние формы? Совсем запизделся.
>Ты какую-то оверинжиниринг хуету городишь. Тебе надо всего-то обернуть твою форму в контекст, на момент сабмита сохранить данные в твой контекст, потом перейти на вторую страницу или что ты там хочешь. На все это уйдет 1 рендер и 2 в 17 версии и ниже.
То есть ты даже не понимаешь, о чём я говорю. Открой блять на кодпен ещё раз и, если не вдупляешь, поменяй все .form на form.form и посмотри на финальную разметку.
>Ты определись, для начала, что ты и куда будешь пердолить. У тебя в любом случае при наличии селектеров будет ререндеринг на каждое изменение поля, на которое указывает твой селектор.
Наркоман, формы - бесконтрольные.
>То ли дело твой вариант с контекстом, который будет ререндерить все древо формы каждый раз или вариантс редухом, где совсем нет бойлерплейта в виде диспатча и экшена в каждом компоненте поля.
Но хукоговно не решает проблемы, которую надо решить. Ты совсем уже одебилился с реактомакакинга, пиздуй читать референсы всех элементов, связанных с формами, до просветления.
ебать ор
Аноны, покидайте плез годных материалов по JS, Вью и Реакту (последнее необязательно).
То есть по-твоему 1 - (-3) это -2, а не 4?
>Передача пропсов в форму - тоже состояние формы?
Ты буквально сам пишешь, что это состояние, потому что ты потом его в редуххочешь запихнуть.
>То есть ты даже не понимаешь, о чём я говорю. Открой блять на кодпен ещё раз и, если не вдупляешь, поменяй все .form на form.form и посмотри на финальную разметку.
Я как раз вдупляю, это ты хуйню какбу-то несешь. Ок, допустим что вместо перехода на следующую страницу будем считать переход к следующей форме/сабмиту родительской формы. Так ваше величество будет удовлетворено?
>формы - бесконтрольные
При этом ты сам подразумеваешь контрольные, потому что:
>Для контекста слишком много ререндеров будет на каждый пук
> хукоговно не решает проблемы, которую надо решить
>хукоговно вместе с контекстом буквально на 100% решает твою проблему. Даже без хукоговна чистый контекст твою проблему решит, но ты решил копротивояться
https://jsfiddle.net/malf/3pmagu04/
>Ты буквально сам пишешь, что это состояние, потому что ты потом его в редуххочешь запихнуть.
В редух/контекст придётся пихать потому что мне нужно обновлять компоненты в двух разных местах, у которых общий предок - рут рендера: при маунте компонента создавать элемент формы в хранилище и при дизмаунте убирать его. Сколько там миллионов инпутов в этом компоненте - однохуйственно и имеет значение только во время вызова onSubmit(), да и то основная процедурка - итерация по HTMLFormElement.elements.
>Я как раз вдупляю, это ты хуйню какбу-то несешь.
Нихуя не вдупляешь.
>Ок, допустим что вместо перехода на следующую страницу будем считать переход к следующей форме/сабмиту родительской формы. Так ваше величество будет удовлетворено?
Ой бля, переходы - только одна из фич. Представь двачекапчу, но только это форма внутри формы поста, которая которая делает запрос для капчи и вставляет нужное значение в инпут основной формы. Основная форма даже не должна знать, что один из инпутов получил значение из другой формы. И чтобы это было семантичненко, без всяких болтающихя инпутов. И для всего этого только нужно написать 2 onSubmit() колбэка вместо вереницы onClick(), onKeyDown(), onKeyUp(), всяких императивных телодвижений с менеджментом состояний и перекидыванием пропсов для хукоговна.
Надеюсь хоть значение знаешь, почему на дваче капча не реализована вложенными формами?
>хукоговно вместе с контекстом буквально на 100% решает твою проблему. Даже без хукоговна чистый контекст твою проблему решит, но ты решил копротивояться
Рякт хук форм внезапно будет создавать отдельные формы в непонятных пердях со своими айдишниками?
Я еще не дошел до фреймворков. Это по твоему не я напортачил, а язык или что-то еще?
Помогите отловить утечку памяти на бекенде node.js
Есть бекенд, дёргаю ручку, память утекает.
Профайлер (chrome inspect) не показывает в какой именно функции проблема. Вижу, что GC молотит как не в себя, но где именно?
Как найти проблемную функцию, которая отжирает?
Современный фронт разраб чего? Обычных конвеерных сайтов? Если так то просто учишь синтаксис жс и идёшь пердолить реакт/преакт/свелте/солид/вуе не думая, конечно почитай лернжс и что там ещё.
Для всего остального нужно почитать всякие алгоритмы, книжечки по алгоритмам, курсы алгоритмов и базовые книжки по компухтер ссаенс.
Достаточно документации и подробного разъяснения ивент-залупу
Ну как минимум очевидный способ комментить куски кода, пока не пропадёт утечка. Хотя я бы на твоём месте учился пользоваться девтулзами, скорее проблема в этом.
let callbacksArray = [];
for (let i < 0; i < любое произвольное n; i++)
{
callbacksArray.add( () => setTimeout( () => чтота делает хз, случайная задержка) );
}
Нужна функция, аля waitAll(callbacksArray, () => чтота сделать после выполнения всего callbacksArray). Есть ли какое-то красивое готовое решение без изобретения велосипеда?
Promise.all
Все stable и experimental модули кроме (относительно) низкоуровневых сетевых, например, datagram, dns, https и подобные. Ну и всякое говно, которое никто не использует в виде c++ модулей, wasm модулей и подобного тебе тоже знать не обязательно.
https://jsfiddle.net/6qb30w5f/
Планирую соскочить с Ангуляра на Рякт + сопутствующее.
Плюсы, минусы?
Подскажите актуальный Рякт стек в 2022, пожалуйста.
Растягивать левую колонку до максимума и не ебать мозг.
Даж не знаю как загуглить. В общем, вот делаю я сайтик, с вью и дрф. Ну и вот как мне нужно обрабатывать ошибки, которые с сервера могут приходить? Типа есть какая-то методика там? Просто их столько всяких разных может быть и я даж не понимаю, как подступиться к этой задаче. На некоторые мне приходит типа "field_name": "error message", это понятно, можно перебрать там их и показать у соответствующего поля например, но если че-то другое там, то приходит "non_field_errors": "error message" и типа че с этим делать? Мне прям сравнивать месседж и показывать нормальное сообщение для пользователя? Это норм так делать? Прост я даже не знаю, какие там все ошибки бывают. Как это предусмотреть? Или надо как-то с сервера по-другому ошибки посылать?
передавай с сервера структуру
{"data": data, "error": error}
если сервер отвечает успешно - это будет
{"data": data, "error": null}
если ошибка -
{"data": null, "error": error}
структуру error можешь ипользовать например такую
{"code": 123, "msg": "тут что хочешь"}
ну и признаком ошибки будет наличие поля error
Ну так это мне че весь рест фреймворк переписывать чтоб он ответы посылал как мне надо? Ну и в принципе вроде оно примерно так и работает. Типа в аксиос когда успешный запрос, то он в response.data, а когда ошибка, то в error. И статус коды тоже там всякие разные делает. Прост я для аутентификации и авторизации ещё другую библиотеку использую, она тоже там шлет всякие штуки, которые хрен пойми какие бывают.
Ну это разве не в статусе указано? Типа если 400, то плохой реквест, а если че-то там на сервере, то 500.
У тебя сервак не додумался ошибки запросов в общий интерфейс оформить?
Селектор .class:hover ~ .class:not(:hover) выделяет только элементы идущие после того, на который наведён курсор. Как фиксить?
>Плюсы, минусы?
По зарплате просядешь.
На ангуляре тебе по 500-600к платят, на рякте 150-200 в среднем
Из неочевидного - редакс тулкит и аполло
>Рякт + мобx или редукс
Эт рисовалка и стор
А чем ряктомакаки закрывают
а) диай
б) гарды интерцепторы
в) рутинг
г) хттпкдлиент ?
>>56972
Все проекты на ангуляре - древнее легаси, на котором держится серьёзный бизнес. За легаси переплачиваюь
>Все проекты на ангуляре - древнее легаси, на котором держится серьёзный бизнес. За легаси переплачиваюь
У меня в жизни было 50*50 легаси и новых проектов на ангуляре.
Вообще не вижу вакансий на ангуляре не то что за 500, а хотяб за 350
Пик анрилейтед
Диай это ООП-шиза, так что в современном реакте не нужна.
То же самое и с прочей поебенью, которую ООП-шизики вытворяют с методами. Если тебе надо поменять поведение фунции - пиши враппер/декоратор для неё и экспортируй результат.
>о же самое и с прочей поебенью, которую ООП-шизики вытворяют с методами.
В мобХ вы же всю дорогу контейнеры состояний наследуете, и вот это вот всё?
>Диай это ООП-шиза
А как вы там сервисы то применяете, я не врубаю
>В мобХ вы же всю дорогу контейнеры состояний наследуете, и вот это вот всё?
Мобх - для неосиляторов редукса.
>А как вы там сервисы то применяете, я не врубаю
Какие сервисы, наркоман?
>Какие сервисы, наркоман?
Папа твой наркоман. За языком следи, свинособака.
Если ты не знаешь, что такое сервис, то, тупая скотина, что ты делаешь в профессии?
Бля я смотрю видос по несту с сиквалазером
constructor( @InjectModel(User) userRepo: typeof User)
Всё понимаю, кроме почему typeof
Ну и дрисня же.
Fronten'то боги
@
гордые адэпты Жаба скрипит
@
мудрецы поисковых систем
@
где умные дяди ртом чтоб видэво было рассказывают как кодить Жаба Скрипит, а то я последние школьные годы на паскале грабил корованы
порекомендуйте бесплатные курсы для маслят
Что ты фиксить собрался, додик?
>а) диай что?
>б) гарды интерцепторы что?
>axios
Вкатун, спок. Иди курс купи лучше поновее чем то говно, которое ты купил.
C курсом наебал, но его можно надыбать на торрентах
Получается ты почти миддл. Сможешь пояснить необходимость аксиоса в современном веб-приложении?
>Все проекты на жеквере - древнее легаси, на котором держится серьёзный бизнес. За легаси переплачиваюь
Это жс. Точнее, жс это имплементация ес.
>>57260 (Del)
Ответ на твой вопрос находится буквально на первой ссылке в гугле по запросу ecmascript.
>Нихуя не понятно чем он отличается от обычного С за исключением того, что код на ес интерпретируется а не конпелируется?
Троллинг тупостью пошел.
>Нихуя не понятно чем отличается python от обычного C за исключением того, что код на ес интерпретируется а не конпелируется
Да, мальчик, сходи поплачь
Не знал что в консоли браузера теперь поддерживается Typescript и оператор typeof из него же.
Вкатун, не позорься.
Чет ты перетолстил
Тем что в первом случае ты делаешь user типа User, а во-втором того же типа, что и User.
Это как coffeescript, только лучше
Это такой хитрый способ сказать жабаскрипт, не говоря торговую марку оракла.
Обычно говорят что это спецификация, а вот жабаскрипт — конкретный язык, но это какая-то хуйня, вон у C тоже стандарт есть, но он называется стандарт C, а не ПИЗДАскрипт, не смотря на то что вот на C то как раз можно писать код под конкретный компутер.
разница в том что typeof Class это function
потому,что все классы в JS это функции
Но совершенно непонятно нахуя писать так, какой практический смысл?
Объясните, почему когда я делаю поиск по html странице:
let phrase = document.querySelector('.phrase');
мой Span с классом phrase:
<span class="phrase">example text</span>
не помещается в переменную и выводится через консоль (null).
Очевидно же потому что ты обосрался с таймингом запуска скрипта и он у тебя проводит поиск перед парсингом ДОМа.
атрибут defer добавь твоему скрипту, если ты его вниз <body> засунешь - я тебе ебало сломаю.
3) он начнет загружаться только когда уже весь документ загрузился, с defer он начнет загружаться сразу и запустится когда весь остальной документ готов.
Страница не распарсится до тех пор, пока всё реактоговно внизу не проинтерпретируется. Это может замедлить первый рендер на порядки, так как этот парсинг будет все скрипты со всеми сайдэффектами обрабатывать посреди парсинга ДОМа.
Здрасьте, платиновый вопрос - как зафокусить инпут после disable="false" на чистом js'e? Перелопатил уже больше 5 страниц стаковерфлоу и 2 гугла и ничего не нашел.
>disable="false"
аттрибутошизик, сначала ты делаешь так:
input.disabled = false;
потом так:
input.focus()
typeof класса возвращает сигнатуру конструктора этого класса. Хуй знает, как тайпскрипт обрабатывает символы, прогнанные через манядекораторы. В крайних случаях это или конструктор Model после обработки декоратором Table или просто конструктор Model.
>как тайпскрипт обрабатывает символы, прогнанные через манядекораторы
Тащемта, никак. И у любителей навернуть ооп-говнеца люто с этого пригорает.
типа
items?.length > 0 && <List>
или
const List = (items) => {
if (items?.length === 0) return null
}
Разметку за пределами ретурна возвращать следует только если тебе это пиздец как надо и на компоненты не разбить. То есть не в 99% случаев. Та же логика с множественными ретурнами.
Канонично выглядит так:
return (<>
!items.length ? <NoItems/> : items.map((item) => (...))
</>)
faq в шапке актуальный?
Дебилоид, перечитай цепочку, а конкретно на фрагмент, где typeof Cat используется.
>нет SSR
Нету волшебного пакета, который бы прикручивал SSR на любой серверный стэк без добавления промежуточного нодовского сервера. А добавлять продакшен сервер для клиентской репы - то ещё говноедство.
>нет асинхронного стейт-менеджера
Редукс это что?
>нет babel
Ого говножор пожаловал. Ты в курсе, что объединяя тайпскрипт с бабелем ты прогоняешь весь код через 2 трансформации? Это говно будет люто тормозить на кодовой базе сложнее хелловорлда, плюс сурс мапы проебутся.
>нет линтеров
Это конечно обосрамс, но прикручивать преттиер+еслинт к тайпскриптоской кодовой базе - та ещё ёбля. А если ещё захочется прекоммит хуков, то вообще анал-карнавал с конфигами начинается.
Так, я здесь, чтобы пофиксить мои косяки, так что без агрессии и по делу:
1) Хороший совет, спасибо;
2) redux-thunk? Или что тут можно придумать?
3) Тоже хороший совет. Я так понимаю, он нужен для скорости билда приложения?
4) Уже слез с линтеров
Я понял но не понял как отдебажить
Я хочу физически увидеть что будет typeof CLass в рамках TS
>А добавлять продакшен сервер для клиентской репы - то ещё говноедство.
Говноедство - заставлять юзеров терять время, когда ты одним конфигом условного некста и ремикса и дешманским сервером решишь эту проблема.
>Редукс это что?
Синхронный стейт манагер с запредельнейшим количеством бойлдерплейта. Асинхронные запросы через useEffect хуярить будешь? Я тебя понял.
>Ты в курсе, что объединяя тайпскрипт с бабелем ты прогоняешь весь код через 2 трансформации?
> Это говно будет люто тормозить на кодовой базе сложнее хелловорлда
У меня проект - 300к строк, ребилд в --watch режиме с бабелем менее секунды. Ебало?
А ты в курсе, что у бабеля свой транспилятор типоскрипта?
>сурс мапы проебутся
У меня ни разу не проебалывались. Ты видимо хуйни какой-то написал в конфиге, вот и терпишь теперь.
>прикручивать преттиер+еслинт к тайпскриптоской кодовой базе - та ещё ёбля
Обоснуй
>>57763
>redux-thunk? Или что тут можно придумать?
Как вариант, но лучше useSWR. react-query или RTK query
>Я так понимаю, он нужен для скорости билда приложения?
Нет, он наоборот замедляет сборку, но не критично (см. выше). Он нужен для того, что бы собирать билд под старые браузеры без постоянного долбления в caniuse что бы удостоверится, что целевой браузер потянет условный String.prototype.replaceAll
>>57765
Хорошо
>>57777
>typeof CLass
Отвалилось. Пробуй let myVariable: typeof Class; и наведись на myVariable, редактор тебе покажет подробно что за сигнатура.
>RTK query
Так я его и юзаю, он просто в тулките
>Он нужен для того, что бы собирать билд под старые браузеры без постоянного долбления в caniuse что бы удостоверится, что целевой браузер потянет условный String.prototype.replaceAll
Ладно, прикручу бабель
Ну, по факту разъебка, конечно, но вот к примеру SSR решается переходом на NEST, а это дополнительная ёбка с изучением нового фреймворка, причем не самого функционального, как я понял. Редакс мне очень зашел, не хотелось бы с него слезать, вот правда, когда я его прикрутил и поставил стор с одним редьюсером, время билда увеличилось вдвое... Там реально так насрано? И как это отражается на весе бандлового скрипта? А даже если перекатываться, то куда? На mobx?
И последнее: я понимаю, линтеры нужны, чтобы макаки карпеющие над одним проектом высерали каки одной формы, но у иеня стек под пет-проект. Нахой мне линтер без негатива
Аноны, помогите разобраться с парселом. Мне надо для каждого файла получается билдить парсел? а если бы там было 20 html'ok? (в моём случае это ejs), то что мне 20 раз команду надо было писать npm run build index.html ???
> решается переходом на NEST
На next
>а это дополнительная ёбка с изучением нового фреймворка
Охуеть ебка, вот файл /pages/index.tsx, соответствует маршруту /. В нем ты пишешь getServerSideProps, - эта функция будет запущена на ноде и то, что она вернет потом прилетит в виде пропса в твой компонент, через жсон. Вот тебе и весь некст.
>Редакс мне очень зашел, не хотелось бы с него слезать, вот правда, когда я его прикрутил и поставил стор с одним редьюсером, время билда увеличилось вдвое
Зачем тебе с него слезать?
>Там реально так насрано
нет
>И как это отражается на весе бандлового скрипта?
Сам как думаешь?
>А даже если перекатываться, то куда? На mobx?
Нахуя тебе куда-то перекатываться? В чем проблема редакса? Я тебе про асинхронный стейт менеджмент писал.
>Нахой мне линтер
Что бы показать хрюшам и собеседующему какой ты пиздатый.
>>57806
Все правильно. Не слушай местных вкатунов, которые за свою жизнь видели только jsx и вуешный шаблонизатор.
Если не секрет, почему перекатываешься?
>>нет асинхронного стейт-менеджера
А что, бывают синхронные стейт-манагеры? Это как вообще? Что там, все остальные соединения остальных клиентов в ОЧЕРЕДЬ хуярят что ли и не завершаются пока идёт обработка первого?
Наверное я слишком асинхронщиной обдвачевался что забыл как работать синхронно.
>Что нужно знать бекэндеру?
Сорян что включаю душного, но...
Надо уметь кодить. Редко какой фронтэндер это умеет.
Мимо фулстак
Ну фронт так-то тоже не простое занятие. Просто в бэке нужно ещё разбираться с бд и http, потом эндпоинты на похуях одним стандартом делаешь и всё
По сравнению с бэком детские игры. Непростого только то, что это зоопарк технологий и базвордов, а главное, огромное комунити макак которые не умеют в профессию. ПОэтому порой даже решения от именитых контор типа ПраймФейсес или Телерик это какой то мраный пиздец и костыль на костыле.
Поэтому для тебя на самом деле нет ответа типа "фреймворкнейм" или "языкнейм" потому, что бэкэндер должен прежде всего понимать в абстракциях, структурах данных, в паттерна решения задач. А на дотнете ты это хуяришь или на котлине не суть важно, это уже просто знание конкретного инструментария.
НУ ежели ты слаще хуя тайпскрипта ничего не видал, то для сарта наверни Nest
Пиздатый ангуляр-стайл фреймворк со своим CLI, а главное, на уровне этого самого фреймворка дикует макаке (т.е. тебе) хорошую архитектуру приложения.
ПОпутно совершенно точно нужно подтянуть какой-то диалект SQL, основы реляционных бд и основы noSqlBd
Для обоих двух типов в Nest есть пездатая ORM которую само собой тоже надо знать.
Для скуля рекомендую навернуть бесплатный posgres для носкуля не рекомендую, но предётся навернуть mongodb
Парадигму писания бекенда когда "база данных сначала" не рекомендую, ты ведь фронт макакен. А вот "сначала данные" это норм для старта(наверняка норм на первые несколько лет работы)
Ну в моей картине мира крестоблядь не человек Но прошу прощения, что не разглядел сквозь призму своего высокомерия.
Когда 15 лет в профессии, и повидал всякого, сам понимаешь...
О, двухсоткошиз, опять таблетки забыл принять?
>потому что надо быстроблядь в релиз фичу отправить, а не этот ваш рефакторинх устраивать
Не пробовал пояснить манагеру, чтобы тот в свою очередь пояснил заказчику, что рефакторинг - это блять НАДО ДЕЛАТЬ? Или у вас настолько парашная галера, что даже обратной связи от разрабов нет?
И тяжело было с реакта на ноду переходить?
Мне вот интересно насколько сложно переходить с реакта на ноду (и вообще бэкенд). Такое ощущение, что таких перешедших до жопы, но я нигде не вижу каких-то историй на эту тему.
Сложность в бэкенде как таковом. Фронтенд это всё-таки не совсем программирование.
Как я писал выше, обыяно люди которые могут только в рякт не умеют в программирование вообще. Диагноз удлённо про тебя стаить не буду. Но типовой ряктокодер это год два три фронта на рякет плюс может гдето чтото слышал про бэк.
Работа бэкэндера это придумывать логику, абстракции, управлять потоками данных и метаданных, думать на года вперед кто будет твое говно поддерживать и развивать.
Т.е. это работа творкца, проектировщика (порой очень скучная и нудная, кстати говоря).
Бэкэнд это то самое красноглазое погромирование, а не npm i YobaKnopka
Поэтому, отвечая на твой вопрос "что сложного" - всё сложно. Весь бэк сложнее сам по себе. И дело не в том, какие пакеты и либы ты знаешь, а в том, как твой мозгнатренился думатью
Мимо фулстак, который перекатывается в фулл веб, тому що заебало.
Кстати отдельно замечу, что чисто по зп не вижу никаких поводов катиться обратнов бэк. Вот если есть иные мотивы, то норм.
Не хорошо или плохо, а не нужно совмещать тайпскрипт и бабель. Бабель швободней и каштомней, но и настраивать его на обработку тайпскриптовских файлов - отдельный квест.
>>57781
>Говноедство - заставлять юзеров терять время, когда ты одним конфигом условного некста и ремикса и дешманским сервером решишь эту проблема.
Причём здесь пользователь? Я говорю про серверный стэк. Если ты тянешь серверное говно в клиентскую репу, то ты должен ещё будешь настраивать дополнительный сервер, чтобы он работал как ожидается в стеке. А это уже за пределы шаблонной рякторепы выходит.
>Синхронный стейт манагер с запредельнейшим количеством бойлдерплейта. Асинхронные запросы через useEffect хуярить будешь? Я тебя понял.
О да, запускать экшоны в useEffect() это пиздец как сложно, надо говнолибу поставить для этого.
>У меня проект - 300к строк, ребилд в --watch режиме с бабелем менее секунды. Ебало?
Что сказать-то хотел? Если менее секунды, ты значит норм весь код транспилировать два раза? В билде разница будет намного больше, плюс в рантайме будет одновременно говно от тайпскрипта и бабеля.
>А ты в курсе, что у бабеля свой транспилятор типоскрипта?
Ага, который по своим правилам работает и типы при билде не проверяет. Так что тебе один хуй билдить нужно будет в тайпскрипте и надеяться, что бабель там в проде не натранспилирует непонятного говна.
>У меня ни разу не проебалывались. Ты видимо хуйни какой-то написал в конфиге, вот и терпишь теперь.
Долбоёб, который собирает тайпскрипт бабелем, что-то там за неправильные конфиги затирает.
>>57801
А то! Любишь серверные шаблоны - люби и жрать говно.
>>57811
>На next
На проде - проприетарное облачное говно. Единственный универсальный юзкейс для него - статичный экспорт. Но даже для него нужно конфиг нжинкса отдельно пердолить.
> Охуеть ебка, вот файл /pages/index.tsx, соответствует маршруту /. В нем ты пишешь getServerSideProps, - эта функция будет запущена на ноде и то, что она вернет потом прилетит в виде пропса в твой компонент, через жсон. Вот тебе и весь некст.
Ты забыл сказать, что getServerSideProps() не из воздуха берёт данные, для этого должен быть уже отдельный бэкенд запущен и БД. Если нет ни того, ни другого, то придётся тащить всё это говно в репу некста и правильно организовывать, чтобы контекст нодовских говнопакетов не протекал в клиентский бандл. Ну а за рекомендацию сразу начинать с getServerSideProps() в ебаной клиентской репе надо пиздить палками.
>>57821
Да он про ебалу типа useSWR говорит. Вот только по дефолту такие говнолибы дрочат сервер по кд, что не для всех эндпоинтов оптимально. И тогда начинается каштомизация с бойлерплейтом прямо в компоненте и юзЭффектами. Только в отличии от редуха нет никаких рекомендаций по структурировании этого говна.
Не хорошо или плохо, а не нужно совмещать тайпскрипт и бабель. Бабель швободней и каштомней, но и настраивать его на обработку тайпскриптовских файлов - отдельный квест.
>>57781
>Говноедство - заставлять юзеров терять время, когда ты одним конфигом условного некста и ремикса и дешманским сервером решишь эту проблема.
Причём здесь пользователь? Я говорю про серверный стэк. Если ты тянешь серверное говно в клиентскую репу, то ты должен ещё будешь настраивать дополнительный сервер, чтобы он работал как ожидается в стеке. А это уже за пределы шаблонной рякторепы выходит.
>Синхронный стейт манагер с запредельнейшим количеством бойлдерплейта. Асинхронные запросы через useEffect хуярить будешь? Я тебя понял.
О да, запускать экшоны в useEffect() это пиздец как сложно, надо говнолибу поставить для этого.
>У меня проект - 300к строк, ребилд в --watch режиме с бабелем менее секунды. Ебало?
Что сказать-то хотел? Если менее секунды, ты значит норм весь код транспилировать два раза? В билде разница будет намного больше, плюс в рантайме будет одновременно говно от тайпскрипта и бабеля.
>А ты в курсе, что у бабеля свой транспилятор типоскрипта?
Ага, который по своим правилам работает и типы при билде не проверяет. Так что тебе один хуй билдить нужно будет в тайпскрипте и надеяться, что бабель там в проде не натранспилирует непонятного говна.
>У меня ни разу не проебалывались. Ты видимо хуйни какой-то написал в конфиге, вот и терпишь теперь.
Долбоёб, который собирает тайпскрипт бабелем, что-то там за неправильные конфиги затирает.
>>57801
А то! Любишь серверные шаблоны - люби и жрать говно.
>>57811
>На next
На проде - проприетарное облачное говно. Единственный универсальный юзкейс для него - статичный экспорт. Но даже для него нужно конфиг нжинкса отдельно пердолить.
> Охуеть ебка, вот файл /pages/index.tsx, соответствует маршруту /. В нем ты пишешь getServerSideProps, - эта функция будет запущена на ноде и то, что она вернет потом прилетит в виде пропса в твой компонент, через жсон. Вот тебе и весь некст.
Ты забыл сказать, что getServerSideProps() не из воздуха берёт данные, для этого должен быть уже отдельный бэкенд запущен и БД. Если нет ни того, ни другого, то придётся тащить всё это говно в репу некста и правильно организовывать, чтобы контекст нодовских говнопакетов не протекал в клиентский бандл. Ну а за рекомендацию сразу начинать с getServerSideProps() в ебаной клиентской репе надо пиздить палками.
>>57821
Да он про ебалу типа useSWR говорит. Вот только по дефолту такие говнолибы дрочат сервер по кд, что не для всех эндпоинтов оптимально. И тогда начинается каштомизация с бойлерплейтом прямо в компоненте и юзЭффектами. Только в отличии от редуха нет никаких рекомендаций по структурировании этого говна.
>Да он про ебалу типа useSWR говорит. Вот только по дефолту такие говнолибы дрочат сервер по кд, что не для всех эндпоинтов оптимально. И тогда начинается каштомизация с бойлерплейтом прямо в компоненте и юзЭффектами.
Нихуя не понял, звучит это как какая-то дикая хуйня которую лучше не использовать никогда, а то приложению настанет быстрая неподдерживаемая пизда и следующая итерация разработки будет переписывания с нуля.
Речь идёт, макакен, про описание предметной области формальным языком.
Если для тебя потолок бекенда это рест для магазина ёбнуть, то я понимаю твою иронию. Однако, в большом мире кровавого энтерпрайза, бекенд, как правило, несколько сложнее чем корм для кошек в корзину пихать.
Делаешь ты бэк на нестом, дотнетом, или , прости господи, на уровне базы данных, это дело в целом десятое.
> Тебя буквально проводят ручками от nest new до готового продукта
Именно поэтому я рекомендую нест для вкатунов из реакта. В несте как раз всё прекрасно документировано и прозрачно.
Я тебе, сука, русским языком пишу, что сложно это грамотно описать предметную область
>проприетарное облачное говно.
Жду пруфы
>Ты забыл сказать, что getServerSideProps() не из воздуха берёт данные, для этого должен быть уже отдельный бэкенд запущен и БД.
В этом и суть, что он уже есть на любом проекте. До внедрения некста у тебя данные из воздуха брались?
>чтобы контекст нодовских говнопакетов не протекал в клиентский бандл
Ниразу не было таких проблем. Ну если ты долбоеб и пытаешься ORM пнуть или файл записать из useEffect, а потом тратишь хуеву тучу времени на дебаггинг, то это не проблема некста.
>Вот только по дефолту такие говнолибы дрочат сервер по кд
как раз суть этих либ - дрочнуть сервер один раз и сохранить данные на N(где N>=0) времени, если они понадобиться в этом же или другом компоненте, при необходимости поменять их не дроча сервер повторно.
>И тогда начинается каштомизация с бойлерплейтом прямо в компоненте и юзЭффектами
То ли дело редух и его полное отсутствие бойлерплейта, дааа...
Аноны, есть URL c джейсонплейсхолдера, я через fetch получаю json. Как вывести только первых 10 записей через slice? А то у меня по нажатию кнопочки выводит либо по айди, либо сразу все.
И как правильно а Templates данные этого файла забайндить с проемами джейсонины из код?
То есть, забайндить, чтобы получить доступ ко всем полям в элементах этого файла из урл
Спс, попробуем
import image from "../images/image.jpg", а сразу <img src="/images/image.jpg"/>. У меня настроен file loader, но картинки все равно не грузит. Как в ваших проектах реализован бандл картинок вебпаком?
Есть регулярное выражение /(?=[\S])\W/, как заставить его выбирать кроме спецаильных символов еще и нижнее подчеркивание("_")?
(?=\S)[\W_]
File loader для этих целей давно не юзаается. Картинки грузятся через ассеты. Читай актуальную доку, а не видосики с ютуба годовалой давности.
Сап. Где можно посмотреть вопросы с собесов по теории с ответами? Дайте годных ресурсов, плиз
>this
>!.
Вот где-то тут проблема. Если ты описываешь это все в функции data у компонента, то это действительно функция у которой нет доступа к компоненту через this. Наведи на него и глянь, что там.
Алсо, отличные советы на швабре, пахнуло мэилру ответами с экспертами, набивающими рейтинг бессмысленными постами.
>Если ты описываешь это все в функции data у компонента, то это действительно функция у которой нет доступа к компоненту через this
И как же тогда быть, как обращаться к пропу?
Делать так: (this.adDetails as unknown as IAdDetails)?.showButtons?
>И как же тогда быть, как обращаться к пропу?
Из дата - никак, это должна быть функция, не зависимая от пропсов. У тебя по факту это свойство зависит от пропа, поэтому надо делать компутед свойство, возможно с сеттером, если нужно менять его. Или оставить в дата нулл и инициализировать в created/mounted. Или композишн апи.
>Делать так: (this.adDetails as unknown as IAdDetails)?.showButtons?
Оно просто не будет работать, компонента еще не существует на момент вызова дата.
>и инициализировать в created/mounted
Алсо, если выберешь этот вариант, то изменение пропа на входе не будет вызывать перерасчет твоего свойства внутри компонента - эти хуки уже были вызваны. Если это нежелательное поведение, то тогда или вотч на проп вешать, или все же одуматься и сделать компутед.
>Это ты мне пытаешься доказать что работая бэкомакакой на несте нужно какую-то там архитектуру продумывать, потоки данных, метадату. Каким-то там охуенным проектировщиком нужно быть.
Ок ,ок. Тебе не нужно, шлёпай формочки для сайтов по продаже дилдаков за свои ссаные 175 до налогов дальше.
В конце концнов чем больше вас таким, теб больше кеша поднимают люди с головой.
Просто резюмеха или типа портфолио? Рот ебал хрюш которые придумывают дохуища названий одной хуйне
Программисты всем нужны, что устраивают на работу без всей этай ебалы
Микросервис для создания thumbnail-ов из картинок
Ну как очистка лимфы по Болотову, знаешь...
>>58217 (Del)
Откуда эта хуита взялась?
Видел это на легаси-проекте из 2015го, где были вары и вот эти self=this в начале ф-ции
>>58297
>Речь идёт про Nest.js
Как вкатиться в backend на TS?
Вот я три года пишу бекенды в разных проектах, но на JS.
Страшно? Ну, я всё тестами обкладываю, что там не выстрелить в ногу.
Ну так вот, смотрю я любые вакансии на бекендера и везде требуют TS, ещё и опционально nestjs на бекенде. Как вкатиться?
Я на golang уже вкатился на полшишки, а nestjs всё так и не опробывал
Это сложно
Этому термину миллиард лет уже
Там только какой-то ооп кал про я-не-могу-поверить-что-это-не-жаба.
Theo - ping․gg
>react
>3 537 вакансий
А говорили, что айти схлопывается и работы нет. Неужели напиздели?
Nest это не фронтенд.
Было 5500 в начале года и куча вакансий для вкатышей
Ты тредом промахнулся, жиробас.
Сколько Nest было до февраля, кто помнет?
Ряктомакакен уже читать разучился.
Что это за хуета уровня хаудихо?
let currentZalupa = undefined;
while (true) {
currentZalupa = await getNextZalupa()
if (!currentZalupa) {
await sleep(30000);
continue;
}
await processZalupa(currentZalupa)
currentZalupa = undefined
}
Но как прикрутить возможность вручную запускать/останавливать этот процесс?
>Откуда эта хуита взялась?
Из питона наверное. Хуй знает. Программесты хотели этим что-то сказать. Наверное.
>Как вкатиться?
>Я на golang уже вкатился на полшишки, а nestjs всё так и не опробывал
Читаешь нест, вкатываешься, хуле тут сложного. Погугли какие-нибудь курсы по этой хуйне.
Дело не в курсах или доках.
Я писал пет недельку.
Везде требуют КОММЕРЧЕСКИЙ опыт, которого нет
Бля, чел, на реакте редаксе и анте ты бэк не напишешь, а на нест напишешь, ты нахуя это вообще сравниваешь.
Ебашь ещё петы, статьи и вот это всё, потом говори что работал полгода над проектом в команде, нормально будет. Джуном точно возьмут.
Ты можешь положить болт на половину требований, а то и больше. Их всегда с горкой пишут.
Ничего не понятно у тебя. Тебе надо как-то организовать очередь.
Потом делаешь функцию-задачу, в неё передаёшь очередь
async function zalupListener(getNextZalup) {
while (true) {
let currentZalup = await getNextZalup();
if (currentZalup == 'EXIT') {
break;
}
}
а стартуешь просто
zalupListener()
без await
Так у тебя функция запустится где-то в фоне и будет работать, пока ты в очередь не поместишь команду 'EXIT'
Но тебе надо саму очередь реализовать.
}
Зумеры-смузехлёбы, не читавшие даже Кантора
Это нужно для того, чтобы когда в в коллбэках хотите использовать this того класса, где вы его определяете, self это замыкание со значением this. Иначе (см ниже) this будет указывать на класс, который этот коллбэк вызвал.
Это было актуально, когда использовали колбэки вида
function() {}
а вот колбэки вида
() => {}
ведут себя иначе и там эти трюки уже не требуются. Корочеу Кантора это есть и не только у него.
> Тебе надо как-то организовать очередь.
Очередь уже реализована, getNextZalupa() возвращает следующий элемент очереди, если он есть. Проблема в том, как пробегать по этой очереди на фоне и желательно с низким приоритетом. Я почитал, и по ходу дела await пихает вызов как микротаску, что не айс, так как обработчик залуп может заблочить колбэки эндпоинтов, пока не зарезолвит залупу.
> а стартуешь просто zalupListener() без await
Разве такие вызовы не вызывают проблем с "висячими" контекстами вызова?
>Так у тебя функция запустится где-то в фоне и будет работать, пока ты в очередь не поместишь команду 'EXIT'
Но как реализовывать start/stop/resume/pause посреди обработки залупы из любого места в коде в таком случае?
Алсо, есть какой-нибудь менее заёбный способ организовать SSR без лишних фреймворков?
event loop обрабатывает все эти таймауты
>Рот ебал хрюш которые придумывают дохуища названий
Curriculum vitae, или сокр. CV (от лат. Curriculum vitæ, в переводе — «ход жизни» или жизнеописание)
Я родился в провинции Лангедок в 1668-м году. Мой род, хотя ныне и обедневший, принадлежит к одним из самых славных и древних семейств королевства. Мой отец граф де Бриссак сражался в Голландии в полку г-на Лаваля и был ранен копьем при осаде Монферрата, на стенах которого он первым водрузил королевское знамя. До 17 лет я жил в родовом замке, где, благодаря заботам моей матушки баронессы де Монжу, был прилично воспитан и получил изрядное образование. Ныне, расставшись со своими дорогими родителями, дабы послужить отечеству на поле брани, прошу зачислить меня в роту черных гвардейцев его величества
>а на бэке ноды тишь да гладь и стабильность
Просто приходят к тому, что не надо делать бэк на ноде. Вышло из моды. Поэтому и стандартов нет.
реакт в рахе нинужон, учите вью
джс в рахе почти нинужон, учите пыху
sql в рахе нинужон, учите 1с битрикс
ВСЁ.
Сиквель всегда будет нужен, не пизди. Таблички с данными это основа любого бузинеса. Как его может хуйня заменить, для которой этот сиквель и нужен.
Дал тебе по жопке! Достаточно было поставить плагин на вскод code runner. Но всё равно спасибо.
Учиться перебирать движок. Прибыльнее айти
Что нравится, все равно все крахом идет, программирование будет хобби.
Ну не трясись реактомакака, подумаешь индусы за миску пагпага готовы 10 лендингов в час делать.
Фреймворки годы не сильно друг от друга отличается. После экспресса фастивай понятен, достаточно день привыкнуть может. А попробуй с реакта сразу на ангуляр прыгнуть.
Теперь с ноды перепиливают на облачные технологии.
То ли дело китайцы с вуем.
Нит. Большинство задач от кобанчика сводится к джоинам и агрегатным функциям, с чем монга справляется намного хуже. Мога хороша только чтобы сохранять данные и отдавать в том же виде в котором они сохранены, а не для аналитики.
Аноны, не нашел треда по верстке, спрошу здесь.
Прохожу курс на codeacademy, и там в последнем пункте доп задание типо сделать футер что бы тоже скролился. Так вот, я сам додумался добавить:
position: fixed;
width: 100%;
z-index: 1;
но футер куда то исчез и не появлялся. Я сразу начал себя чувствовать тупым и начала пропадать мотивация продолжать учиться (так как до этого все понимал с первого раза). Вопрос почему надо было добавить bottom: 0 что бы футер появился? Почему недостаточно z-index 1, ведь именно он отвечает за наложение слоев.
Алсо как перестать чувствовать себя тупым?
Хуй знает, по-моему этот элемент идет сразу после всего твоего контента по дефолту. А так как фиксед - не влияет на разметку, то есть высота контента не расширяется под него. Вот он и висит там внизу, пока не укажешь ему положение относительно вьюпорта.
>Хуя говна пожрал, лол
Отношение вакансий реактомартышек к вьюпетушне на ххру говорит само за себя.
Щас бы жрать говно и подстраиваться под рыночек.
Да я читал, но пропустил пунктик про final position. Кстати если я допустим там укажу right or left то почему то футер пропадает, но если указать top, то он перекрывает шапку. Почему нельзя сделать что бы блок с футером переместился налево или вправо?
Хм, я бы взял тот что по элитнее, т.е самый дорогой.
Почему даун? Я накупил курсов с настоящей 90% скидкой и стал настоящим сеньором. Ты так тоже можешь, главное скорее купи курс!
Объясните мне, почему все так смотрят эти видеокурсы. Я понимаю когда у какой-то технологии дока говно, или тема очень обширная, но почему все так любят смотреть видео и переписывать код вместо чтения доки рякта и написания своих компонентов? Какой профит от курсов?
>почему все так любят смотреть видео и переписывать код вместо чтения доки рякта и написания своих компонентов
Потому что в доке ряхта и написании своих компонентов нет заветных словосочетаний "Только сегодня, скидка 90%, стань сениором после просмотра курса"
Дока реакта кстати бесполезная хуитка что для вкатунов, что для опытных ряктомакак. Большая часть изучения рякта состоит из гугления "как сделать хуитанейм в реакте" и отличие вкатуна от опытного заключается только в том, что опытный точнее сформулирует определение хуитанейм и соответственно меньше времени потратит на отсев нерелейтед результатов.
Чёт проиграл с екомерса на страйпе и фаербейзе. Запилил такой огромный магазин, а как страйп и фаербейз твои аккаунты пидорнут, то не сможешь ни денег со счёта снять, ни даже дамп своей БД сделать (и это ещё непонятно, что фаербейз будет делать с БД).
>страйп и фаербейз твои аккаунты пидорнут
Для не-правых американцев такой вариант на уровне фантастики.
В некоторых мобильных браузерах есть анимация растяжения страницы по достяжению предела прокрутки вверх. Из-за этого, особенно если включена навигация жестами, скачет панель навигации, прибитая к низу страницы через display: absolute; bottom: 0. Как починить?
Банальный пример, элементы с
note__color
note__color
note__color note__color--active
note__color
Нужно каждый раз контекстуально переставлять --active. Добавить нет проблем через target. Но как удалить не используя getElementsByClassName?
???
const [active, setActive] = useState(false);
<div className={"note__color" + active ? " note_color--active" : ""}>
Если у тебя активным должна быть только одна - присваиваешь каждой заметке индекс и хранишь индекс активной в useState.
>Кста, а есть какие-то более человеческие способы записи опциональных классов, чтоб не писать пробелы перед новым?
clsx
Нужно 4, а не 0.
Как исправить? Объясните, почему неправильно обсчитывает.
function getLargestExpressionResultOfTwo(a, b) {
const result = a + b;
if (a - b > result) {
const result = a - b;
}
return result;
}
Либо ты скачиваешь ебалу в виде clsx, classnames и аналоги, которая будет замедлять твое прилоежние, либо хуяришь пробелы. Если еще шизовариант - использовать styled или emotion.
Мышкой кликни по result который после ретурна и он тебе подскажет, откуда берёт значение.
Я тебе уже кидал ссылку на урок для 6 класса школы, перечитай еще раз:
https://skysmart.ru/articles/mathematic/modul-chisla
Спс анон, Mui вроде неолохо смотрится, но анимаций не хватает всё таки. Vuesax ещё как подходит, лучшая библиотека что я видел by far, на каждом компоненте такие анимации сочные, боюсь предстваить как долго такое пилить самому... но блин стрёмно брать из-за того что не поддерживается больше
Там же if. Чтобы в result вернуло и вывело большую сумму.
Нужно вернуть просто большую сумму.
const getLargestExpressionResultOfTwo = (a, b) => Math.abs(a) + Math.abs(b)
Алсо вместо const используй let, если изменяешь переменную, либо оборачивай в else{...}
Алсо алсо getLargestExpressionResultOfTwo(-2, 2)
Посоветуйте качественный опенсорсный реакт-проект. Хочу понять насколько я говнокодер.
1) У тебя на каждом ререндере будет создаваться новый объект, используй функцию как аргумент в useState
2) Зачем тебе реакт, если ты императивно хранишь состояние в DOM? Создай новый компонент note, сделай ему проп color, сделай ему clickHandler формата ()=>setColor('white')
>>62149
Охуенный совет, давай он объект будет раскладывать, потом складывать, что бы получилась еще большая ебанина чем у него сейчас.
>>61959
ok google javascript модуль числа
Потом, зачем тебе объект со всеми цветами, если у тебя активен только один? В чем проблем хранить только активный?
const [color, setColor] = useState('white');
<NoteColorPicker value={color} onChange={clr => setColor(clr)} />
попробуй { image.src }
Сам ты не одумаешься, поэтому:
const colors = ["white", "purple"];
function NoteColorPicker({value, onChange}) {
return colors.map(clr => {
return <div key={clr} onClick={()=>onChange(clr)} className={`note note-${clr} ${value === clr ? 'note--active' : ''}`} />
})
}
Конечно, а то вдруг антона бабкина на работу возьмут?
нет но правилом хорошего тона является её наличие
Земля пухом, братишка.
Ты до сих пор не понимаешь разницу между попенсорсом и для чего делается реакт. На гитхабе найдёшь только вкатунские и никому не нужные проектики
Дальше уже зависит от нужд проекта. Тут нет никакой магии, в игнор ты добавляешь файлы, который не должны чекаться в репу.
Речь идёт о вставки js в страницу браузера. Инициализировал через let, через prompt нужно ввести значение. Но при сложении 1+1 выходит 11.
Логично, что значение в переменной считается за строковой тип. Для заранее введенных значений рекомендуют писать n в конце числа. А как с prompt быть? Понятно, что как-то конвертировать, но как?
да-да, просто плохо искал
for (i = 1; i <= N; i = i + step) {
console.log(i);
}
}
Что не так?
Отсчёт с единицы - check.
Ограничение числом N - check.
Увеличение значения на шаг - check.
Не объявил, ясно.
Спасибо огромное
После вкатун-тредов в /b/ и пропаганды вката в ИТ на пынявидении тут люди не знают что такое модуль и не могут прочитать статью с описанием темы 6 класса(!), а ты про ряды еще удивляешься.
Такая же, как и у линукса заменить шиндошс.
>тут люди не знают что такое модуль
Учитывая боль, с которой идёт перекат на ESM у нодопакетов, большинство разработчиков (да и сам язык) - тоже.
Что ты высрал - хуй его знает, какое оно отношение имеет к пониманию значения слова модуль - тоже. В контексте жопаскрипта CJS модуль - это модуль, ESM модуль - это тоже модуль, UMD модуль - тоже модуль.
Модуль это независимый фрагмент твоего кода.
>Скоуп функции
>Объект
Ну да,, вполне могут быть. Почему нет?
У тебя ошибка в формуле. Не (n+1), a (n+k), где n = начальное число и k = конечное. неужели так сложно было это сразу написать и сэкономить время и силы мне и себе? Я час потратил на то, чтобы всё вспомнить и разобраться.
>У тебя
Не у меня.
>неужели так сложно было это сразу написать и сэкономить время и силы мне и себе
Неужели так сложно было загуглить и открыть результат по первой ссылке? Зачем ты тратишь наше время?
> Я час потратил на то, чтобы всё вспомнить и разобраться.
Молодец. Теперь осваивай программу 7, 8 и 9 классов, возможно с твоими темпами до 2024 успеешь, потом можешь пытаться закатываться во фронт.
>вспомнить
>(n + k)k/2
3 + 4 + 5 = 12
5(3 + 5)/2 = 20
k + k+1 + ... +n = (n + 1)n/2 - k(k - 1)/2
Учебник математики за гаражами скурил? Не надо запоминать. Надо уметь выводить простые формулы.
Просто умножать надо на количество чисел. Ты совсем не ту формулу дал.
>Неужели так сложно было загуглить и открыть результат по первой ссылке? Зачем ты тратишь наше время?
Я не помнил как это называется, чтобы гуглить.
>Молодец. Теперь осваивай программу 7, 8 и 9 классов, возможно с твоими темпами до 2024 успеешь, потом можешь пытаться закатываться во фронт.
Какой в этом смысл? Все вычисления в программировании ведутся абсолютно другими логическими операциями, математические символы и присваивания значений только сбивают с толку. Всё решается не нахождением формул из математики, которые нужно вставлять в код, а использованием выражений, которые будут вместо формулы прогонять через алгоритмы данные и выводить то же значение. То есть по сути учиться думать надо через костыли языка программирования заново.
>>62735
>k + k+1 + ... +n = (n + 1)n/2 - k(k - 1)/2
Каким образом выводится n + 1 и k - 1?
>return <div key={clr} onClick={()=>onChange(clr)} className={`note note-${clr} ${value === clr ? 'note--active' : ''}`} />
это не будет работать, мэп отрисует только доступные элементы, неактивных просто не будет. Поэтому должны быть объекты со всеми цветами и состояниями.
Прочитал про lazy inittialization, ну типа в моем случае вроде смысла в этом нет.
>>62266
Стоит ли для такой мелкой фигни создавать новый компонент внутри которого будет примерно такая же логика?
> Ты совсем не ту формулу дал.
Я тебе еще раз напишу: я тебе никаких формул не давал.
>Я не помнил как это называется, чтобы гуглить.
>По какой математической формуле считается сумма последовательности
>пикрелейтед
Иди шорты постирай.
>Какой в этом смысл?
Для тебя, очевидно, никакого.
>Все вычисления в программировании ведутся абсолютно другими логическими операциями
Уважаемый "эксперт программирования", я бы рекомендовал вам для начала вкатится на стажёрскую позицию за 20к, перед тем как делать такие выводы.
>мэп отрисует только доступные элементы
Ну значит сделай объекты, в чем проблема?
const colors = [{color: "red", active: true}]
>Стоит ли для такой мелкой фигни создавать новый компонент внутри которого будет примерно такая же логика?
Надо делить на компоненты и писать тест для каждого компонента. Тестить огромный компонент в 1к строк будет значительно сложнее чем покрыть тестами 10 компонентов по 100 строк.
frame.delete()
>Как удалить картинку из фрейма ?
https://developer.mozilla.org/ru/docs/Web/API/Element/remove
>очистить фрейм от всех компонентов
document.documentElement.textContent = ""
Никто ничего серьёзного на рякте писать в попенсорс не будет
Попенсорс в 99% это бекендовые штуки
"Failed to compile.
Invalid configuration object. Webpack has been initialized using a configuration object that does not match the API schema."
Что за хуйня и как решить проблему?
>Что за хуйня
Тебе написали человеческим языком:
>Invalid configuration object. Webpack has been initialized using a configuration object that does not match the API schema."
> как решить проблему
Очевидно, написать корректный конфиг. Читать не умеешь?
мне кажется, что ты нихуя не гуглил, а сразу побежал срать итт, потому что в гугле все есть
Какой конфиг писать блять, я создал проект командой "npx create-react-app" и решил его запустить. Какой конфиг и где его создавать? Ебучая залупа блять
>я создал проект командой "npx create-react-app"
В этом твоя ошибка, выкинь его нахуй.
>Какой конфиг и где его создавать
Мне за тебя погуглить? webpack config for beginners
>я создал проект командой "npx create-react-app"
>В этом твоя ошибка, выкинь его нахуй.
А что не так с ним? Расскажи.
>webpack config for beginners
Пойду разбираться, спасибо.
>А что не так с ним? Расскажи.
1) Он кривой
2) Он медленный
3) Он тащит вместе с собой 500мб (!!!) модулей формата isString просто для того, что бы создать несколько файлов
4) Кастомизация на уровне нуля
>>63204
>Создал этот файл, все равно та же ошибка вылезает.
Тебе сказали не создать файл, а написать корректный конфиг. Разницу чуешь?
ладно, мне тебя жалко стало: npm create vite@latest
>не создать файл, а написать корректный конфиг
Не чую, конфига то нет. Я на самом деле по видосу начал делать и тут ошибка эта вылезла, попробую исправить.
>Я на самом деле по видосу начал делать и тут ошибка эта вылезла
Это был первый звоночек, что ты что-то делаешь не так.
Второй звоночек - я тебе явно указал, что CRA это гной болото чмо пидор, не прикасайся к нему вообще. Аналогично вуй-cli.
Я понял что vite лучше для создания проекта, спасибо. Но почему учить реакт по видосам - ошибка? Я как новичок теряюсь в нем, а по видеоурокам хоть как-то опыт получаешь и немного начинаешь понимать.
Хорошо, как тогда учить реакт?
>Но почему учить реакт по видосам - ошибка?
Ты еще не понял? Потому что 99% видосов это говно. 1% не говно, но его еще поискать надо.
>Хорошо, как тогда учить реакт?
Практика, багфиксинг и оптимизация чужого кода (возьми любое ишью и попробуй исправить), создание новых фич
Я тебя услышал, анон.
Не пригодится
Переписать-то я перепишу, но почему так-то она не работает???
Задача: дан массив точек (массивов (на скрине)), вычислить две самые близкие и вернуть массив с координатами этих двух точек.
Написал дополнительно функцию, которая вычисляет дистанцию, отдельно она норм работает с тем же массивом, а внутри ошибку выдаёт.
Да, я в курсе, что есть другой алгоритм решения этой задачи.
Да, я его и поправил, заработало сразу хорошо, все тесты проходят, кроме производительности.
Но я понятия не имею, что тут оптимизировать.
Наверное, нужен другой алгоритм.
Идемпотентные методы:
GET,
OPTIONS,
HEAD,
PUT,
DELETE.
Я так понял это свойство, при котором повторный запрос даёт тот же результат, что и первый. Тогда вопрос, почему здесь нету POST? Он же тоже даст тот же результат, как и какой-нибудь DELETE только добавит, а не удалит?
Тогда какие методы не идемпотенты
Положить яблоко в свой карман это идемпотентный метод? Ты один раз яблоко положил, другой раз. У тебя все еще одно яблоко в кармане?
Вот делаю я поиск на сайте. На вью. Как я его сделал значит. В главном компоненте у меня серчбар с кнопкой. Когда нажимается кнопка, то делается роутер пуш на вью поиска с параметром в запросе. Ну пикрил в ообщем. А во вью поиска уже в mounted у меня функции, которые берут этот квери и делают запросы на сервер.
Ну так вот, оно работает, если я делаю поиск откуда-то, кроме самой страницы поска. А если я пытаюсь сдлеать поиск, находясь уже на странице поиска, то урл меняется, но функции заново не триггерятся. Как я понимаю маунтед не срабатывает в таком случае. Как это пофиксить? Это какой-то другой хук надо использовать или вообще такой способ реализации хуйня?
Ну у меня будет 2 яблока, если я правильно понимаю пост запрос, он будет добавлять эти самые яблоки.
А насчёт делита, было у меня 2 яблока, 2 раза использую будет 0, но он тоже идемпотентный
Сделал отдельный компонент для колор-пикера.
setCurrentColor из провайдера, чтобы он был доступен выше
Хотя аналогия не очень из-за игры слов PUT POST PATCH
PUT - разместить реcурс по определенному адресу
PATCH - изменить реcурс по определенному адресу
POST - создать реcурс по определенному адресу
Ну и говнокод, пиздец просто. Тебе сказали, выкинь нахуй твои classListы и пиши на реакте. Если ты так хочешь императивно писать - пишешь команду npm remove react react-dom, потом npm install jquery и пишешь на jquery.
А я понял, типа мы создаём новую сущность или изменяем её этими методами.
Не пытайся натягивать аналогии на глобус. Если у тебя ресурс по адресу
/products/dildo/134 то ты удаляешь продукт типа дилдо, а не дилдаки со склада
Повторный пост запрос создаст ещё одно яблоко, то есть сделает уже как бы другую операцию. Идемпотентный, значит что запрос каждый раз будет выдавать одинаковый результат. Типа как гет запрос.
понял да
как тогда мне выставить нужные классы, ебаная ты мудила, учись давать полезные ответы, либо просто будешь нахуй ходить как сейчас
Я тебе отвечал, мудак ты ебаный. Обработчик выкинь с враппера и навешивай на каждый цвет, таким образом что <div key={color} className="..." onClick={()=>setColor(color)} />
Охуеть вкатуны борзые пошли, ты им пишешь как надо, он делает не как надо еще и агрится.
Я кстати хуй клал на идемпотентность PUT. Наверно тут подразумевается ручка типа PUT /zalupa/:id, вот только проблема в том, что при добавлении сущности клиент не может знать идентификатор новой сущности, так как он генерируется сервером после её создания.
>вот только проблема в том, что при добавлении сущности клиент не может знать идентификатор новой сущности
Может если его запросить, например POST'ом
Бля. А разве put это не обновить целиком, а patch дополнить существующее. Тогда че они оба не идемпотентны
Джуниорка Снежанна покрасила волосы в зеленый цвет, потом снова покрасила в зеленый - это patch
Арсен окрыл в компании должность программиста-грузчика, потом снова открыл - это put
В вебстудиях запрашивают постом и удаляют гетом. В остальное нинужна!
> для долбоёбов всё равно кроме get, post, put, delete ничего не существует
У меня на всех проектах все захуячено через POST и GET, и всем похуй, никаких проблем с этим нет.
Не говнокод нихуя, просто это очевидно быстрее и легче, а само действие определяется по первому названию метода(который в жопаскрипте), например, getPage, createPage, changePage и т.п.
Давай, расскажи, что PUT это "класть" и создать новый объект
Мамкин курсовод, реальных проектов не нюхавший
>Как он его запросит, когда идентификатор будет доступен только после успешной транзакции, т.е. создания сущности?
Запрашиваешь временный идентификтор => бэкенд создает строку в базе данных, хаполняет её нуллами => возвращает идентификатор
Потом юзер постит информацию в строку с этим идентификатором.
Ну и крон поставить на 24часа, что бы он выпиливал идентификаторы, которые не были заполнены за последние сутки.
>>63576 (Del)
>@Post
>@Put
Не стоит экстраполировать опыт неста на весь бэкенд, есть куча легаси проектов, где ты просто так не можешь запилить метод, потому что надо перепилить половину миддл вар и хуеву тучу чего еще.
бд возвращает id, при инсерте (мускуль точно), а если нет, то можно в одной транзакции прочитать текущее значение последовательности. А если у тебя юиды то ты можешь генерировать их до записи в бд
другой антон
RETURNING, чел.
>Давай, расскажи, что PUT это "класть" и создать новый объект
Лучше ты расскажи, в чём принципиальное отличие обновления поля через PUT от обновления поля через PATCH.
>Мамкин курсовод, реальных проектов не нюхавший
Ну то что ты наговнокодил удаление через геты на реальных проектах и так понятно, только твой говнокод никакого отношения к теме не имеет.
>>63585
>Запрашиваешь временный идентификтор => бэкенд создает строку в базе данных, хаполняет её нуллами => возвращает идентификатор
Охуенный дизайн бд - постоянно насиловать индексы, таблицы и даже саму операционную систему, чтобы реализовать маняметод с расплывчатой формулировкой.
Собственно в этом и проблема этих маняметодов. Если с гетом (эквивалент операции чтения) и постом (ебись как хочешь) всё понятно, то идемпотентность для маняметодов ты будешь реализовывать ручками и эта реализация будет тонким слоем размазана по всему стэку и всем его слоям, начиная от клиентского скрипта и заканчивая дизайном бд.
>>63587
>бд возвращает id, при инсерте (мускуль точно)
Проблема в том, что возвращать его нет смысла при провальной транзакции.
>А если у тебя юиды то ты можешь генерировать их до записи в бд
Юиды как основные ключи нужны только если ты балуешься всякими децентрализованными сетями, тащить их для решения проблемы, вызванной методом на эндпоинте - оверкил.
Конкретизируй.
Потому что жс строили наново на куске говна, которым он изначально был, а в бидоне гвидон трясется над совместимостью пиздец и придумывает сто контекстов для существующий кейвордов, лишь бы не вводить новые.
И это ты ещё перл не видел, где решения из 80-х будут работать в большинстве.
Как в нынешних условиях оплатить codeacademy?
ссылка
Прослезился. Верните мне мой тэг <font>, а не этот ваш цсс пидорский
Кстати, я подумал, а как сделать так, чтобы ячейки были всегда квадратными, чтобы высота менялась а зависимости от ширины контейнера? Не важно, там на таблицах или флексбоксах? Но чтобы без JS, конечно.
Сейчас появилось свойство в CSS 'aspect ratio', но его поддержали недавно, в 2021 году. Все браузеры в 2021 году поддержку добавили, с разницей в несколько месяцев.
А до этого были только извращения с разными трюками.
В смысле
Потому что ты ни разу не видел бэкенд на ноде, вкатунец.
Может это ты со своего вротенда долбился через реверс-проксю, за которой кластер не видать было?
всё я уже отрендерил меню 2 раз и скрыл меню, оставил только саб меню что и нужно было
потому что на ноде пишут микросервисы, и скейлинг идет не через ноду а через кубер или чтото подобное
потому что комуникация между нодами такого "клатстера" неудобная
по факту это обертка над несколькими нод процесами
а в докере больше 1 процесса не стоит делать
Как спросил так и ответил. Принцип GIGO знаешь
Так почему Live Server скачали 25 миллионов, а Live Preview всего 700к?
Вопрос дебильный, но прошу отнестись серьёзно.
Ты так говоришь, чтобы меня обидеть.
Язык-то может и знаешь на уровне джуна, но это все равно что синтетические тесты железа, главное же как он показывает себя в рабочих и игровых задачах, так и ты, знаешь синтаксис, методы и прочее, но на работе этим надо на практике пользоваться
Но на собесах разве не дают задачки типа этих?
Принципы архитектуры микросервиса
Чё несешь?
Есть много способов поднять "ваб-сарвар" в Vs code, но все используют настоящий браузер
Джуны знают язык и все фишки наизусть и отлично пишут код.
Со знанием одних только задачек ты никому нахер не нужен в 2022м
Это то что можно вызывать больше одного раза и не бояться, что эти несколько вызовов повлияют на какой-то стейт.
Вызываешь DELETE несколько раз - значит у тебя что-то удалиться только один раз и последующие вызовы просто вернут ответ, что сущность удалена.
Можно и POST сделать таким, например, постишь JSON с одинаковыми параметрами и тебе возвращается одинаковый объект. Ой, но где же ты объебался? Правильно, ты объебался там где начал использовать POST как PUT.
По сумме арифметической прогрессии с основанием 1 и шагом 1
Ой блять, да заебал ты со своим этим тоном дебильным. Иди нахуй. Ты никому не нужен в 2022
Как минимум надо уметь гуглить.
Нет, раз ты не прошел элементарный тест.
В России нет работы на ноде
>Не выёбывайся, я умею гуглить решение для задачи.
Твоя задача на сегодня: узнать чем занимаются nodejs разработчики
Не благодари
>чем занимаются nodejs разработчики
Уезжают в Армению/Грузию и там работают за 3 тысячи долларов в серую
>Душнила, спок.
Ты сам себе противоречишь: то умеешь гуглить, то не умеешь. Как ты это сам для себя объясняешь?
Запрещённые технологии в обычной конторе, кто остался в РФ
Все, кто использовал TS - уехали в Армению и Грузию
>>65075 (Del)
Спок, теоретик
Давно ли обновили весь код и все интерпретаторы до последней версии? У php очень длинный легаси хваст, который тянется потому что много сайтов написаны на старых версиях зрз
В какой-то отдельно взятой компании - безусловно, но существует огромное легаси-пространство, говорю же. Но я тебя услышал, да. Можно не продолжать
>безусловно, но существует огромное легаси-пространство
По твоей логике и в JS сейчас до сих пор все на var пишут
Ты немного не уловил смысл мною сказанного. Суть в том, что браузеры обновляются помимо моего и твоего желания и если мы хотим, чтобы наше с тобой приложение работало, нужно писать уже по-новому. Когда у тебя интерпретатор пхп развернут на сервере, ты его контролируешь сам и можешь не обновлять, так как любое обновление потребует денежных затрат и если все и так работает, ты просто будешь пользоваться его старой версией.
Вообще, легаси интерпретаторы на бекенде - это классика
Прочитай ошибку, которую этот код выкинул.
Прочитай ошибку, которую этот код выкинул.
Создание нового поста - это POST запрос
Ебать гавно.
readFile это async операция.
Потом ты id сразу прибавляешь, которого там ещё и нет
Код читаться стал и запускаться
Работает
Откуда мы знаем что у тебя там за async/await?
Версия ноды старая
потому что он там не работает, еблан тупорылый. Иди читай главу про промисы в канторе и доку к модулю fs и fs/promises в ноде. Вкатун.
Вот весь код, у меня работает
Не ругается, ты код правильнее копируй
Ты знал на что шёл, когда устанавливал ORM
Документацию читал?
Странно, я нашёл и прикрепил
Так ещё раз жмакни, он пересохранит.
А ты не собираешься схему менять?
Сколько месяцев курсы проходишь?
А аргументы у тебя какие-то есть? Мы в проекте потратили неделю чтобы на yarn переехать и был целый пост в чатике рабочем почему это лучше. Какие твои аргументы?
>так а чем yarn лучше?
Так я же не поспорить хотел, а просто твою точку зрения узнать, лол
Если работа с монорепо - это единственный плюс, который ты смог выдать, то довольно странно получается, так как yarn тоже это умеет
Но давай по пунктам:
1. yarn быстрее так как умеет в параллельную установку пакетов
2. Они оба имеют lock файлы, но вроде как ярн более консистентен (тут я аргументировать не смогу, это то что у нас написали в чате, а я не копал так глубоко)
3. Еще из плюсов есть возможность автоматической проверки лицензий в yarn
Да, еще у yarn есть .yarnrc файл, куда можно явно указать версию, которая будет использоваться. Но может быть у npm такая же возможность имеется
>yarn быстрее так как умеет в параллельную установку пакетов
Ебало курсовых вкатунов представили, у который локальное развёртывание проектов по фэтапе вместо npm-ci ?!
Это инструмент, который ты выбираешь под свои нужды, не более
Начинать можно, но отказов будет много при любом раскладе.
Ты понимаешь, что сколотить скворченик и построить кремль - это задачи занимающее разное время, имеющие разную сложность, и разню стоимость?
Если ты это не понимаешь, то ты тупой.
Если ты это понимаешь, но все равно задаешь такоей вопрос - то ты опять тупой.
Так сколько занимает?
Тут 9 раз повторяется вот эта конструкция с небольшими изменениями - начало и пределы счётчиков увеличиваются на 3
for (let i = 0; i < 3; i++) {
for (let k = 3; k < 6; k++) {
cubes[arrCounter].push(board[k]);
}
}
arrCounter++;
,наверное можно сделать ещё 1 уровень вложенности цикла и сократить запись с 9 до 3 повторений, а потом ещё один цикл и будет совсем коротко, но не могу сообразить как подойти к этому.
https://codepen.io/pivpivpiv/pen/QWrpoNQ?editors=1112
Не пойму даже, нужно ли начинать "изнутри" или "снаружи" этой конструкции.
Сама задача, если нужно https://www.codewars.com/kata/529bf0e9bdf7657179000008
>страничку
какую, размер, сложность, количество блоков, виджетов, анимаций, много ли на жс делать
>адаптивно
насколько адаптивно и насколько сильно меняется интерфейс
>чужую вёрстку
какую, с ui фреймворком, с css-фреймворком, на бутстрапе, на scss с 4 уровнями вложенности, с бэмом и шоб твоя верстка тоже была бэм, если есть a11y, нужно ли добавлять свое с тем же a11y
>баги
какие, с размерами, выпаданиями элементов, глитчами в анимациях
>Browsers and how do they work
Надеюсь там указывают на какую глубину копать. На эту тему можно книгу в 1000 страниц написать, и все равно не все вместится.
Потому что невежды. Нельзя без сравнения чего-то конкретного вот такие тезисы кидать. Пусть покажут не русские курсы и уже тогда по факту пояснят в чем плюсы и в чем минусы
Сказал твой батя, когда мать хотела записаться на курсы по воспитанию детей.
Кража токенов
У меня в каждом компоненте имеется один и тот же проп с одинаковым дефолтным значением. Можно ли как-нибудь уменьшить дублирование кода?
Ты задал вопрос на уровне: нахуй птице крылья?
Потому что без рефреша теряется суть токена, если безопасность не важна так не используй совсем
>Этого не слушай, вместо одной строчки с пропом добавишь одну строчку с декоратором
Ты забыл сказать всю ебанину с экстендом и вызовом супера в конструкторе.
Определение каких-то общих свойств в родительском классе - это классика программирования. Определение их через декоратор - костыль
Как ты этот декоратор в будущем расширять будешь расширять? Для новых свойств будешь добавлять новые декораторы или все в один скидывать будешь? А если понадобится логику общую добавить, тоже в декоратор ее?
>Определение каких-то общих свойств в родительском классе - это классика программирования.
В интерфейсе абстрактного класса ты хотел сказать? Абстрактный класс, а потом и конкретный класс, уже идут потом.
>Определение их через декоратор - костыль
То ли дело писать export class ZalupaProps extends BaseProps { super() ... } в каждом ебаном компоненте. Программирование настоящего свидетеля не менее настоящего ООП. А уж как в жсе реализуют тру ООП инкостыляцию так и вообще пушка.
>Как ты этот декоратор в будущем расширять будешь расширять?
Пошла классическая мантра про расширяемость. Особенно комично выглядит, когда другие сектанты (тоже свидетели не менее настоящего ООП) твердят, что наследование вредит раширяемости.
>Для новых свойств будешь добавлять новые декораторы или все в один скидывать будешь?
Ты их и так скидываешь в один мегаобъект через цепочки super().
>А если понадобится логику общую добавить, тоже в декоратор ее?
Как ты собрался в пропсах логику общую через наследование реализовывать, наркоман? В них не должно быть логики изначально, так как пропсы - всего-лишь аргумент к функции рендера.
На стэк похуй, главное идея и люди будут играть даже в говнину на уровне дварф фортрес или той игрушки про вампира которая на электроне писалась.
а как ты в односвязном списке от ребенка к родителю обратишься?
>В интерфейсе абстрактного класса ты хотел сказать?
Зависит от нужды. Может в абстрактном, а может и не в абстрактном. Это уже детали реализации
>То ли дело писать export class ZalupaProps extends BaseProps { super() ... } в каждом ебаном компоненте
Общепринятый подход > костыль
>super()
Если конструктора нет, то не придется писать
>Программирование настоящего свидетеля не менее настоящего ООП
Какие претензии к ооп? Это всего лишь инструмент, не более
> А уж как в жсе реализуют тру ООП инкостыляцию так и вообще пушка
Какие-то претензии к прототипному наследованию?
>Пошла классическая мантра про расширяемость. Особенно комично выглядит, когда другие сектанты (тоже свидетели не менее настоящего ООП) твердят, что наследование вредит раширяемости.
Ты что-то по делу скажешь или будешь просто в отрицание продолжать впадать?
>Ты их и так скидываешь в один мегаобъект через цепочки super()
Потому что это удобно и читаемо
>super() x2
Уже пояснил выше
>Как ты собрался в пропсах логику общую через наследование реализовывать, наркоман? В них не должно быть логики изначально, так как пропсы - всего-лишь аргумент к функции рендера.
Логика не в пропсах, а логика работы с этими пропсами
>В интерфейсе абстрактного класса ты хотел сказать?
Зависит от нужды. Может в абстрактном, а может и не в абстрактном. Это уже детали реализации
>То ли дело писать export class ZalupaProps extends BaseProps { super() ... } в каждом ебаном компоненте
Общепринятый подход > костыль
>super()
Если конструктора нет, то не придется писать
>Программирование настоящего свидетеля не менее настоящего ООП
Какие претензии к ооп? Это всего лишь инструмент, не более
> А уж как в жсе реализуют тру ООП инкостыляцию так и вообще пушка
Какие-то претензии к прототипному наследованию?
>Пошла классическая мантра про расширяемость. Особенно комично выглядит, когда другие сектанты (тоже свидетели не менее настоящего ООП) твердят, что наследование вредит раширяемости.
Ты что-то по делу скажешь или будешь просто в отрицание продолжать впадать?
>Ты их и так скидываешь в один мегаобъект через цепочки super()
Потому что это удобно и читаемо
>super() x2
Уже пояснил выше
>Как ты собрался в пропсах логику общую через наследование реализовывать, наркоман? В них не должно быть логики изначально, так как пропсы - всего-лишь аргумент к функции рендера.
Логика не в пропсах, а логика работы с этими пропсами
Появляется уведомления, что недостаточно разрешений, но я уже разрешил всё, что только можно.
Картинка для привлечения внимания, не судите строго
>Если устраиваться 2 года назад, то необязательно.
Сказали твоей матери, когда она пыталась устроиться уборщицей в супермаркет и спросила нужно ли среднее образование.
Права на папку проверь
sudo chmod -R 777
Чмо это твой батя.
статик конструктора редко, но не хватает, на остальное похуй так как все уже давно на тайпскрипте пишут.
ну не знаю насчёт курсов но ты погугли инфу на русском и потом на англ и сравни
На всю ширину страницы?
Min-width: 500 задаёт минимальную планку ширины. Но блок может растягиваться. T
Если ты не трогал свойства flex-grow или flex, они по умолчанию равны 1 и блок будет на всю ширину родительского блока растягиваться.
width: 500 должен быть всегда 500.
>Предвкушаете?
Я когда в 2019 начал вкатываться, это уже было в хроме, на тот момент 6х версии у меня на работе. Что предвкушать то?
Нахуя тебе из потомка обращаться к предку, шизик? Гугли паттерн event emitter
import defaultPropValue from 'something'
И как же? Это как бы ряхт, а не вуй, тут такое не сделаешь, и это никому не надо.
там выходит за границу страницы с overflow: scroll
480x320, 0:18
Анончики, есть какая-нибдь годная статья для создания ботов?
Пытался гуглить, но постоянно выпадает "Создание бота для телеграм" илч что-то подобное.
Хочу попробовать сделать ботов, которые будут делать определенные вещи, например, зарегаться на сайте и отправить сообщение или проголосовать, что-то вроде.
>определенные вещи
Ну их просто и гугли. Если это отправка сообщения, то просто гугли как его отправлять удобным для тебя образом
Не благодари
Фиксишь одно, вылезает другое.
Так это не ts говно, а код написанный твоей командой
Так ты начал бы с курсов по JS, судя по всему, ты даже не джун
@
ФИКСИШЬ ОДНО
@
НЕ ЗНАЕШЬ ГДЕ КАКАЯ ХУИТКА СЛОМАЛАСЬ
@
РЯЯЯ ПУК СЕРЕНЬК МИНУС ДВА ДНЯ
TS
@
ФИКСИШЬ ОДНО
@
ТРАНСПИЛЯТОР ТЫЧЕТ ЕБАЛОМ ГДЕ ТЫ НЕПРАВ
@
ХОРОШО
Причем тут сокращенная запись конструктора из тайпскрипта, шизик? Речь про свойства класса шла.
>синтаксис с решёткой тебя устраивает
Причем тут решетка и ключевое слово private из тупоскрипта? Это разные веши и работают они по разному.
Потому что там пережеванная инфа с английских курсов/книг в лучшем случае.
Выбор любого уважающего себя программиста - использовать typeScript
Сандбокс скинь.
Когда байтоёбы-сишники пишут на JS
Никак. Выбрось это говно скорее.
на html book вроде неплохой самоучитель но там 4 версия
Тогда уже на w3schools иди.
https://hastebin.com/noqijibati.typescript
doka.guide
Метод navigate НЕ поддерживает юнион из типов
To | number | Partial<Path> | undefined
Он поддерживает только
'(to: To, options?: NavigateOptions | undefined): void'
и
'(delta: number): void'
Требуют написать перегрузку методов или идти нахуй
Ну он сидел тут выебовался своим знанием петухона, потом обосрался и в картчайшие сроки после этого свалил
Для того что бы функция запроса не менялась при каждом ререндер, а менялась только при изменении query.
> в чем тогда их разница
Вкатун, учись заходить на сайт google.com и вбивать в единственное поле свой запрос. По твоему вопросу там буквально вся первая страница результатов состоит из ответов.
>по стандартам переменные объявляют let
По каким стандартам, шиз? Как тебе тимлид скажет определять - так и будешь
Изучать другой язык, который различается с теми которые я знаю = вкатун.
Я лишь спросил почему в том же учебнике по разному объясняют, разница лишь во. Времени
>Изучать другой язык, который различается с теми которые я знаю = вкатун.
Шизик, ты идешь на двач, высираешь тут пост, вместо того что бы ввести в гугл "js var vs let" и получить ответ по первой ссылке. Количество языков, которые ты знаешь тут никакой роли не играет.
>Я лишь спросил почему в том же учебнике по разному объясняют, разница лишь во. Времени
Самое смешное - в учебнике на learnjavascript есть ответ на твой вопрос. Буквально.
Вкатун.
Разница в области видимости. Let лучше тем, что он удобнее и интуитивно понятнее.
Открой раздел ПЕРЕМЕННЫЕ на сайте, который ты сам написал и прочитай.
У тебя какая-то детская травма, связанная с вкатунами? Они тебя изнасиловали за школой и теперь ты их боишься?
Вкатун, успокойся. Иди лучше свой учебник перечитай, который сам же и скинул. А если, как ты говоришь, уже знаешь язык - то приступай сразу к прочтению спецификации ecmascript
Успокоиться нужно тебе. И перепроверить пространство под кроватью и в шкафу на наличие вкатунов.
Да, спс я понял. Просто говорю же читал старую версию где про let ни слова, зато про 32 битные операторы целая глава
Чел, успокойся уже. Обосрался и не загуглил, с кем не бывает? Умолкни и иди дальше по своим делам.
Ну не плачь, пару лет почитаешь курсы по вкату и обязательно станешь профессионалом!
Вы че пьяные или че, зачем вы за других людей на все подряд отвечаете, так ещё и сретесь. Я задал вопрос, получил ответ, отьлагодарил и ушёл, нахуя такое разводить? Идите в б
Так ты отличие var от let узнал? Зачем в тред продолжаешь срать, маленький? Иди в /b/ или /po/ посри, там такое любят.
Актуально только если у тебя на проекте настроен SSR и нужно дрочиться с SEO.
Наоборот же чистый код с декораторами, бесконечными наследованиями и динамическими строчными референсами.
Мне надо пропустить его через мою функцию, которая вернёт более короткий массив.
Этот результат опять пропустить через эту же функцию и получить ещё более короткий.
И так далее, до тех пор пока при пропускании его через эту функцию, длина массива не изменится.
Вот когда вернётся массив той же длины, мне надо остановиться.
Нихера не пойму как это сделать. Куда эти массивы сохранять блин.
Срал я в твой рот. Кровать и шкаф проверил?
Нихуя не пойму, там во всех примерах известна глубина рекурсии или её можно вычислить на основании каких-то внешних данных.
А мне надо сравнивать результат текущего вызова с предыдущим. Их надо куда-то поочерёдно записывать.
Два варианта:
1. Делать мемо-декоратор, который будет запоминать нужное тебе значение и дёргать твою функцию в зависимости от изменения этого значения.
2. Сверять длину исходного массива-аргумента с результатом. Если у тебя там какой-нибудь фильтр или мап, то в его коллбеке можно брать исходный массив.
Можете плиз объясниить что происходит в данном коде? В частности зачем там используется as и <>?
Может мне ещё говно ложкой жрать предложишь?
Да, плюс еще OpenGraph.
Хорошо. Вот щас много людей в украине и россии могилизируется, срыночек освободится, и я вкачусь без проблем
на самом деле пиздец
const hui = (fn, arr) => arr.length > (arr = fn(arr)).length ? hui(fn, arr) : arr
В мирное время работодатели просто должны вести учет военнообязанных, а сейчас просто человек с членом это как раньше молодая девка 22 лет, которая "обязательно забеременеет и уйдет в декрет"
Мобилизовали уже всех?
Присвой нужной строке id и сделай ссылку на эту страницу дополнительно с хэшем в виде добавленного id
Ясен хуй у тебя не работает, на хероку локалхоста нет. Ставь ссылку продакшн сервер для начала.
Видимо плохо объяснил. В общем я перевёл все процессы на process.env.REACT_APP_API_URL. Само приложение запускается и нормально работает с хероки. Не коннектится только лишь вебсокет
Mixed Content: The page at '---' was loaded over HTTPS, but attempted to connect to the insecure WebSocket endpoint '---'. This request has been blocked; this endpoint must be available over WSS.
Так с переменными никакой проблемы и не было. Я же изначально написал, что в бэке проблема и надо на wss протокол перекинуть. В общем забей
У тянок будет больше зп теперь, лол.
База.
А как же Слик Слайдер?
>Кто как учит и запоминает?
Нихуя не учил, все само запомнилось
>Конспекты?
Нахуй надо. Лучше практикуйся больше.
>у вас память как у Шелдона Купера?
Да
Хз, просто откладывается что-то и все. А если не откладывается, как минимум понятно как погуглить именно в тот момент, когда это пригодится на практике.
Path: The router API breaks down the entire URL into individual fragments. The path property could correspond to a combination of these fragments. It is mainly used to identify the angular component that should be instantiated and loaded in the parent's router outlet.
Просто читаешь как художку, если что-то интересует, то тестишь. Потом просто если натыкаешься на необходимость в чем-то, то вспоминаешь "я что-то такое видел", выясняешь что именно ты там видел.
Я начал изучать тайпскрипт и мне стало плохо, я потерял мотивацию к изучению программирования, это просто пиздец. Смотрю на эту навешанную хуйню и я вообще ничего не понимаю что происходит
Пиздец да что он хочет от меня, я не понимаю.
Как в этом говне разобраться?
Так у тебя же полное ООП говноедство, так что заслужил.
Контекст/редукс.
Нормальный асинхронный стейт менеджер напиши или подключи. useSWR/react-query/rtk-query и прочее говно.
To-do list.
Объясните вкатуну.
Просто с бэком прикольно, работаешь с данными и системой, можешь опускаться на уровни по-ниже, к железу и микроконтроллерам
Убрал useEffect, добавленный на автомате, и все стало норм.
Ну давай разберем тобой написанное
>А в чем сила фронтенд разработчика
>кроме как вёрстка сайтов?
1. Ты зачем-то подменяешь программиста и его навыки верстальщиком. Ну да ладно
2. Фронтенд - это платформа для исполнения написанного тобой приложения. То есть написать можно все что угодно, даже собственную ОС, если упороться и все это будет работать в браузере
>Просто с бэком прикольно, работаешь с данными и системой
Как будто на фронтенде ты работаешь не с данными, лол
У тебя какое-то странное представление о программировании и фронте в частности. Ну и нет почему-то представления о программисте как об архитекторе в общем смысле. Фронт ты или бек или еще хуй знает кто, ты можешь переключаться между платформами, языками программирования и даже Аллахом и никто тебя не осудит, наоборот будут только больше уважать
А если будешь жить как обывала, который за рамки системы выйти не может и есть стал бакенд программистом, то там и умрешь. И никто тебя не вспомнит
>Просто с бэком прикольно, работаешь с данными и системой, можешь опускаться на уровни по-ниже, к железу и микроконтроллерам
Хорошая шутка, особенно в контексте мультиплатформенной многоязычной веб-разработки.
Контекс уже был упомянут, ну и когда у тебя часть данных из запроса в потомке нужны родителю - поднятие не такая плохая мысль.
на тестовых заданиях предлагают пользоваться библиотекой prop-types чтоб описывать типы
я хочу сразу на тайпскрипте учится, начиная с простого описывая пропсы и т.д. норм затея или хуйня?
И как вообще добавить тайпскрипт в проект ? нихуя не выходит
>норм затея или хуйня?
Норм
>И как вообще добавить тайпскрипт в проект ? нихуя не выходит
Добавляешь лоадер в вебпак, добавляешь tsconfig и переписываешь свое говно на ТС
>Добавляешь лоадер в вебпак, добавляешь tsconfig и переписываешь свое говно на ТС
надо добавить эту либу https://www.npmjs.com/package/ts-loader, потом typescript init, переименовать jsx в tsx и будет работать?
Можешь просто создать новый проект
>npx create-react-app my-app --template typescript
или если так хочешь добавить в уже существующий https://create-react-app.dev/docs/adding-typescript/
>как вообще добавить тайпскрипт в проект
>создать новый проект
чел...
>create-react-app
Мы вам перезвоним.
>>72390
Не надо использовать CRA, тебя на собесе сразу развернут нахуй если его увидят. Если у тебя меньше 100iq или ты по какой-то причине не можэешь самостоятельно настроить webpack/vite/etc то просто используй vite с готовыми пресетами.
https://vitejs.dev/guide/#scaffolding-your-first-vite-project
Ты на приколе? Тебя на работе никто не будет заставлять настраивать вебпак, тем более если ты <=мидл, и на собесах почти никогда о таком не спрашивают
>тебя на собесе сразу развернут нахуй если его увидят
Ну и ебанутые, если ищут разраба на реакте и он будет писать на реакте. Человек обычно максимально быстро осваивает то, что критически важно, а не отвлекается на мишуру.
> if ([]) {1} else {0}
> 1
> if ([] == true) {1} else {0}
> 0
if ("") {1} else {0}
> 0
[] это истинноватое значение.
== преобразует булеан к числу, true приводится к 1, [] при приведении к числу приводится к 0.
"" это ложноватое значение.
obj = { flag: true }
Убедил, выделю половину затрачиваемого времени на вебпак, надеюсь, 2 месяцев хватит на освоение столько сложной технологии.
Не помогает. Я подозреваю, что проблема в шаблоне. Потому что встречались шаблоны, в которых просто нужный размер шрифта выставляешь нужные паддинги контейнеру и всё встаёт.
>Базовые знания сборщика
>выделю половину затрачиваемого времени на вебпак, надеюсь, 2 месяцев хватит на освоение столько сложной технологии.
Чел, ты бухой там?
Вполне себе оправдание, так как пердолинг реакта на вебпаке с нуля та ещё ёбля. Особенно если не знаешь ни того, ни другого. Главное пили своё говно на CRA в приватной репе.
>>72638
Сам по себе вебпук не сложен, на самом сайте вебпака есть максимум вкатунский гайд к нему где тебя за ручку водят. Сложность появлется в организации лоадеров, а точнее их зависимостей и кода вокруг них.
>у вкатуси проект уровня "нажми кнопку - покажу картинку"
>ряяя, какое cra, давай с нуля пердоль вебпак
Пчел, cra для таких случаев и сделали, чтобы на петпроекте гонять. Предложи ещё вкатуну в линукс, который терминал вчера открыл собрать свою первую генту, иначе не тру, медленно и несчитово.
>на собесах почти никогда о таком не спрашивают
Я только мидлов про такое и спрашиваю. Большинство джунов знает на уровне
>ну у нас на проекте был, но я его не трогал
а сеньеров спрашивать такое смысла нет уже.
>>72621
Всё правильно, вот джун и должен у себя на проекте разбирать, что у него там в вебпаке и как написанно. Чтобы реакт учить - вебпак не нужен.
вкатун
>advanced js
>прототипов/асинхронности
Это лет 5 назад advanced было. Потом у вкатуна спрашиваешь, что такое await, а он мнется, как восьмиклассница на первом свидании. Можешь оставить в покое прототипы, но промисы и асинхронность - это вещи, которые нужны каждый день.
>тайпскрипты/редаксы(я даже не понимаю что это и зачем)
Ну ты хоть разберись зачем.
>доучится до норм фронта джуна и проходить собесы 24/7 чтобы получить заветный оффер, или просто стать рабом на галере
До войнушки это всегда был вариант 1, доучиться и ходить на собесы. После войнушки я даже не могу спрогнозировать, что там с рынком.
Нестрогое равенство там в одном примере из трех.
Как изучить реакт, если немного знаю во вью? Чтобы не с нуля, а на примерах в чем разница, ну вы поняли
Допустим есть функция transformObj(obj: Record<string, unknown>, types: Record<string, "string" | "number" | "object">): Record<keyof typeof types, unknown> , которая создаёт объект с ключами types, но значениями, трансформированными из таких же ключей в obj по правилам дискриминатора значения в types.
Где-то там в глубинах функции, значения types обрабатываются свитчкейсом по такой логике:
"string" -> string | undefined
"number" -> number | undefined
"object" -> Record<string, unknown> | undefined
То есть при входном типе types на выходе получается объект одного типа. Как это выразить в тайпскрипте, чтобы выражение const transformedObj = transformObj(
{ key1: "001", key2: 30, key3: { 1: 0 } },
{ key1: "number", key2: "string", key3: "object" }
)
приводилось к { key2: number | undefined, key2: string | undefined, key3: Record<string, unknown> | undefined } ?
открыть доку и прочитать
Я уверен в наличии как минимум трех десятков статей на эту тему, где один и тот же компонент сравнивают
ну или какие-то еще идеи есть для пересечения событий?
Нихуя не понял что ты хочешь сделать. Попробуй опсать свое говно по иснтрукции из оппоста:
>Если рассчитываешь получить дельный ответ, сформулируй правильно вопрос: «что я хочу получить, что я для этого делаю, что я вместо этого получаю»
Из того, что я понял, тебе надо иметь 4 вида подсветки на каждую ячейку календаря:
Не выбрано, вабран А, выбран Б, выбраны А и Б. Если так то используй css
типа как на картинке это как изначально, если я на 2-3-4-5 любую из этих направляю, чтобы она становилась поверх (то бишь 6 число стало бы серым)
>типа как на картинке это как изначально
Ты для начала объясни, что у тебя на картинке. Я вижу 31 число в виде календаря. Что ты подразумеваешь под изначально?
>я на 2-3-4-5 любую из этих направляю
Что такое "этих"? Что ты подразумеваешь под "направлю"?
> чтобы она становилась поверх
Кто она? Что значит поверх? Визуально стала больше? Перекрыла собой все остальное? Нарисуй в пэинте или карандашом что ты хочешь, нихуя не понял.
Учись выражать свои мысли.
Самое простое и очевидное - это дженерики
Далее идет способ с описанием нескольких типов и перечисление их через |
Вы видите копию треда, сохраненную 7 ноября 2022 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.