24 декабря Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!
Если рассчитываешь получить дельный ответ, сформулируй правильно вопрос: «что я хочу получить, что я для этого делаю, что я вместо этого получаю». Если/когда самостоятельно найдёшь решение — поделись в треде, мы за тебя переживаем.
Что тут не так, подскажите плиз? 🤔 Как сделать так, чтобы он приводил к нужному типу. Если service === 'invoices' тогда тип должен быть IInvoiceAPIResponse, если websites, то наоборот. Сейчас он видит его как ResponseType<T>, условие T здесь почему-то не работает.
>>2920228 Это шаблонный фидбек, когда тебе не хотят говорить в глаза, чем ты не подошёл. Ведь так ты подкачаешься, и может быть придёшь ещё раз через полгода-год, не добавляя контору в чёрный список, особенно если отвечать будет та же клуша.
>>2920247 >>2920228 Алсо да, посмотрел статью. Я как-то тоже обосрался на собесе из-за онлайн редактора. Потому что крутится этот вебнёвый VS Code, в котором даже на линухе/виндузе часть хоткеев по дефолту отличается. Это не говоря, про то что часть хоткеев может быть кастомизированы, у чела могут стоять вим-хоткеи, он вообще может пользоваться продуктами жид-брейнза. Особенно когда за всем этим зоонаблюдает какой-то пидор. Просто пару раз делаешь не то, воротишь взад, начинаешь делать так как не привычно. + Проёбанное время, +невры.
ПОэтому когда предлагают покодить говнозадачки на условном голом yandex-cheta.notepad - вот это оптимально. Ты сразу ожидаешь, что там нихуя не работает и ты в блокноте.
>>2920195 Если передаётся в аргумент "service" строка "invoices", тогда axios ответ должен типизировать ответ API как IInvoiceAPIResponse. Если же строка "websites", тогда axios должен типизировать ответ как IWebsiteAPIResponse. Когда функцию вызываешь, всё нормально работает. Но внутри функции когда делаешь flatMap() не хочет приводиться тип.
>>2920259 Дата - это просто ответ от axios'а. Там внутри только state ("ok" или "error"), result с массивом, paging с ключом пагинации.
Ананасы, кто связывался с AWS поясните за него. Я вот его ковыряю второй день (serverless framework v3) и это самый хуёвый DX в моей жизни. Пытаюсь сделать авторизацию с DynamoDB (с jwt). Всё это кажется максимально неудобной залупой. Особенно жопа горит от yaml файла конфига, сука, я вообще не ебу какие ключи за что отвечают. Что я должен там описывать, а что не должен, какие ключи на что влияют и т.п. Почему нельзя было сделать json со схемой и описанием ключей. Вот KeySchema и AttributeDefinitions, например. Я должен прописывать для каждого столбца в моей ДБ или только для айдишника с partition key? Если для каждого столбца, то там не пропускает любой формат, кроме S|N|B, а у меня может быть и M и L. Кароче, кто работал, поясните, это я конченый далбоёб, или там действительно, не всё так радужно, как в рекламе.
>>2920353 Та в задании одно из требований >Serverless Framework or SST with CloudFormation as an IaC provider Алсо, я взял фреймворк в надежде, что там из коробки будет всё, что нужно, но потом понял, что это хуйня собачья и надо поверх накатиывать плагины и прочее.
>>2920384 Шо то хуйня шо эта хуйня. Если бы у меня был выбор между serverless и sst, я бы наверно выбрал sst. Он лично на мой вкус поприятнее. Это типа набора сниппетов cdk, чуть облегчает писанину, но остаётся тем же cdk по сути. А serverless это по сути тот же ебучий cloudformation с его ебучими ямлами. Пусть это вкусовщина, но эти ямлы и этот cloudformation настоебал. CDK в миллиард раз удобнее и лучше.
Вопрос для сеньеров помидоров. Кто-нибудь пользовался библиотекой react-virtualized для создания виртуальных списков/таблиц. Есть такой трабл, который хорошо видно прям на примере из доки для MultiGrid https://bvaughn.github.io/react-virtualized/#/components/MultiGrid Строки, зафиксированные через fixedRowCount скроллятся влево-вправо не синхронно остальной таблице. Особенно хорошо видно, если зафиксировать несколько строк. Кто-нибудь сталкивался с такой проблемой, как ее можно решить? Какие есть еще либы для виртуализации, в которых нет таких траблов?
>>2920454 Я как раз в прошлом треде бугуртил на react-window. Но твоя либа выглядит менее колхозно, мне кажется мне моё говно надо будет переделывать на react-virtualized. У меня хорошо скролится всё кроме фаерфокса опять, в нем у таблицы есть какой-то лишний пустой хвост. Закапывайте фаерфокс как в своё время ИЕ.
>>2920429 Я просто в ахуе. Создаю запись в бд (через PutCommand), а она не хавает ReturnValues: "ALL_NEW", только ALL_OLD или NONE (хотя тайпскрипт говорит что хавает всё), то есть, создав нового юзера, я не могу этим же API сразу же отдать данные об этом юзере из БД. Можно вернуть новую запись через UpdateCommand, которая, если нет записи с таким партишн ки, создаст его, но она выдаёт мне ошибку The provided key element does not match the schema. (У меня id - partition key и email GSI). Я просто в ахуе от этого. Всё через жопу, просто всё.
>>2920384 1. В aws не нужно создавать пользователя в БД, для этого есть cognito. У тебя потом не подцепится api gateway авторизация, если ты будешь велосипеды строить. 2. Получать надо через getItem, а не через updateCommand. 3. Можно получить пользователя, смотри "putItem callback". Надо было в коллбеке читать созданную запись. 4. Также можно вместо putItem делать updateItem, тогда вернётся. 5. Проще было любой orm взять типа того же electrodb и не мучаться.
>>2920504 Я задание делаю, и могу использовать только то, что они разрешили. Там авторизацию надо реализовать через кастомный ауторайзер-лямбду. >Получать надо через getItem, а не через updateCommand. Я имел ввиду, что функция создания PutItem не возвращает созданной записи, и что бы не юзать getItem после putItem, я заюзал update. >Также можно вместо putItem делать updateItem Так и делал.
Как создать через updateItem (или putItgem, похуй) элемент, в котором id - partial key, а email - GSI? Что бы email был уникальным? ConditionExpression: 'attribute_not_exists(email)', пропускает одинаковіе мейлы. Я уже ничего не понимаю.
>>2920545 Чёт ты неточно говоришь. Мне щас лень в реале проверять, но неужели PutItemCommand нет response с Item и созданным элементом? Странно. GSI нужно было создавать в SST, при создании базы данных. Там указываешь partition и sort key, и дополнительный индекс создаётся. Ты можешь написать например EmailIndex GSI, можно указать чё-то типа Email в качестве partition key и Created в качестве sort key. И там надо будет добавлять эти поля в PutItem. Строго говоря, он сам не будет проверять на уникальность. Partition key может повторяться. Уникальна может быть только сама комбинация partition key + sort key. Но если у тебя нет sort key, тогда он будет жаловаться на повторяющийся айдишник. Либо attribute_not_exists проверять.
>>2920241 >эвент эмиттер Ты 15 раз написал про него и мне уже кажется что кроме эвент-эмиттера и пропс-дриллинга в реакте вообще ничего не нужно. Т.е. грейд такой: эвент эмиттер->useContext->mobx,zustand->redux.
Поясню, в типичном приложении redux выполняет роль the-source-of-truth. Есть user и есть список друзей, когда компонент хочет отрисовать список он берет его через селектор, когда другой компонент хочет поменять это список, он вызывает dispatch. Т.е. redux становится центром всего приложения. Но зачем? 1) Тестировать не удобно (редьюсеры легко, но это не то) 2) По умолчанию не хранит не сериализумые объекты, т.к. на них не работает JSON.stringify (Map,Set, итд) 3) Подменяет старый стэйт на новый, вызывая сравнение и ререндер, что подается как плюс, хотя надежнее контролировать каждое изменение вручную Мне кажется пришло время эвент эмиттеру явить себя миру
>>2920787 Пиздос чел. Что наследуется от эвент эмиттера в жабаскрипте: 1. Все хтмл элементы. 2. socket.io 3. HTTP на ноде 4. jQuery 5. небо и аллах Этот ваш реакт сдохнет, ангуляр сдохнет, будет второе пришествие и апокалипсис, а эвент эмиттер никуда не денется. Ну какой тут явит миру. ЖС это эвент драйвен язык.
>>2920883 Во всём кроме перформанса. Только скоро завезут React Forget и тогда он ещё и по перформансу будет попускать никому не нужную китайскую подделку.
Есть таблица, в ней может быть много строк, 1000 и больше. При клике на строку таблицы показывается модалка. Вопрос - как правильно вешать обработчик этого клика? Вуе и реакт предлагают вешать на каждую строку при их рендере. Но это же 1000 обработчиков будет. Это нормально?
Можно повесить на корневой элемент и проверять на что клик, но тогда мы вываливаемся из парадигмы фреймворков, то есть императивно что-то там делаем с элементами, проверяем.
При этом важно, что обработчику клика по строке нужны данные из пропсов этой строки. Как тогда получить доступ к пропсам конкретной строки, если обработчик один на родительском элементе? Можно добавить нужные данные в какие-нибудь дата-атрибут, но это выглядит ещё хуже.
>>2920883 Так то были заснайпленные скриншоты в пик популярности айти, а тут рандомный оффер открыл отличный показатель того, как обесценилось искусство в наше время.
>>2920454 Пользовался. Ещё сам несколько раз писал и рефакторил разные реализации виртуальных списков. Так вот, все либы это набор костылей и граблей, а виртуальный списки – это действительно одна из самых сложнейших задач, а не всякие поиски путей.
https://codesandbox.io/s/react-window-with-table-elements-d861o?file=/src/index.tsx Вот типовая задача отрендерить большой список. Через пять минут встает задача отрендерить большую таблицу и мы получаем это. Почему так? Почему веб в таком говне? Потому что реактомакаки умственно отсталые долбоебы. Не смогли всей индустрией написать нормальный список за 10 лет.
>>2920150 Что тебя удивляет? data непонятно откуда берется, то что у тебя service определенного типа никак не говорит о том, что данные такого же типа.
>>2920454 Всё хуйня кроме @tanstack/react-virtual, у него нет лишнего обвеса, который только мешает, при этом есть всё чтобы сделать виртуальный список с нужным тебе UI-ем
Что делать для практики на фронте, кроме туду, калькуляторов и задрачивания алгоритмов? Не знаю что на том же жс делать - фантазии нет. Покрасить что-нибудь при нажатии на кнопку? Это же меньше одного процента от всех возможностей жс. Как применять все, большинство или хотя бы половину возможностей языка? Может есть список реальных проектов, а не "туду, калькуляторы и задрачивание алгоритмов"?
> задрачивания алгоритмов Задрачивать их нужно, но только для собесов
> какие проекты делать? Клон чего-то крупного. Спотифая, яндекс.музыки, вконтакте, двача, лайвлиба, аллаха. А апишку можно взять либо у сервиса, клон которого делаешь, либо набросать моковую
Решил наконец перевести клиентскую часть пет-проекта на ES6 модули. Вопрос - как там правильно импортировать socket.io? Вижу пояснения только для сервера, а на клиенте как сраный "io" получить из импорта?
Скинул ссылку на сайт где есть куча разных свистоперделок/фишек/формочек, по сути все что делаешь джун-фронт. >Аря, че так многа, 10 лет пилить!
>>2921439 Какие нахуй 10 лет? Полгода - максимум. Это если еще хуи пинать. И если все пиксель в пиксель. При этом ты и таблицу сделаешь, и дерево сделаешь, и попап сделаешь, и остальные 100500 штук. Да и не обязательно все делать, но уже и все так ясно.
>>2921514 Или ты типа считаешься что если ты написал <Grafik/> <Todoshka/> <Slider/> Это ты считаешь за разработку админки? Если это всё из готового собрать то за полгода можно. А в чем тогда практика для вкатуна? Если с нуля делать, на голом реакте например то десять лет запросто.
>>2921584 Собственно, на мой взгляд самое сложное - редактор. Куча нюансов. Да и хуй знает что пользователь тыкнет и в какой последовательности. А все это должно быть заранее обдуманно.
>>2921435 Разобрался сам. Точнее, проорал над тем, как оно сделано. Короче, нормального экспорта клиентского скрипта там нет, весь "экспорт" просто присваивается объекту window. Зачем огород с модулями, спрашивается. Хотя наверное по-другому универсальную либу и не сделать, из-за статической природы экспортов в ES6.
>>2921585 ну, понятно что мои "день-два" - это не время вкатуна, да и полурабочее говно будет.
я когда вкатывался и либу то иной раз не мог применить. тот же пример с календарем. пришлось в итоге либу пердолить чтобы сделать хотелку, чтобы под циферками были "тудушки". до сиг пор висит на бегете полурабочая.
>>2921584 >чуть сложнее тудушки Канвас это вообще перпендикулярно остальному джаваскрипту. Можно считать что это отдельный инженер. Всё равно что "а ну ты бекендер, МЛ это же бекенд, захуяч мне чатгтп. "
>>2921721 Джуны всегда оценивают задачу на два дня, а ебутся потом месяц. Сеньки оценивают на две недели, а ебутся три. Лиды оценивают на месяц, а делает задачу джун.
>>2921699 Чому нет? Самое сложное в нем отрисовать дни по месяцам + покрасить дни из другого месяца. Тыкнуть на день и получить валюес не так уж и сложно. А, ну хотя выбор двух дат и покраска промежутка - да, тут сложно.
>>2921578 Лул эка ты слабак. У тебя было относительно простое задание. Хардкор там начинается с апи gateway, со step functions и со glue. Ты сам запутался в трёх соснах, не знаю что тебя так озадачило.
>>2920967 >>2920405 Я знаю про перегрузку функций, сейчас привёл тип с помощью as, но это немного топорно. Думал, возможно есть более красивый вариант. Ну да ладно, на нет и суда нет. Так тоже сойдёт.
>>2921973 >Не, там всё норм, как и должно быть. Нихуя это не норм. Я нигде вчера в интернете не нашел такой хуйни чтобы унаследоваться от литерал константы.
>>2921973 Пчел, какое ты нахуй хочешь решение по своему огрызку со склеенным скриншотом? Не знаю, в типах проеблася, констреинты не расставил. > as Выкинул типизацию нахуй, поделил на ноль, гуд эффин джоб.
>>2921959 В api gateway я создал несколько роутов, и сделал кастомный авторайзер без каких-либо проблем. Проблемы с бд меня просто убили нахуй. Я с монго работал, там всё было +- норм с ньюансами, с постгрессом тоже, затупов серьёзных не было. Тут же сука, куче ошибок, апиха sdk- говнище ёбаное, классы с одинаковыми названиями есть и в @aws-sdk/client-dynamodb и в @aws-sdk/lib-dynamodb. Если что-то не то импортонул, будет ошибка, которая тебе нихуя не скажет, что не так. Дока 3 версии сдк из говна. на стаковерфлоу темы по 5-6 летней давности. Кароче, я не доволен инструментом очень сильно. Бывает такое, что используешь что-то и пригорает жопа, но в этот раз пригорело сильнее всего.
>>2922104 Там ещё про useCallback. Многие ни то, ни другое не применяют там, где это было бы прибавку в перформансе. Так что когда выпустят React Forget, такие люди получает неплохую прибавку в перформансе без каких-либо заёбов.
>>2922291 Для чего и когда это гуд, а когда не гуд? 1) let x = "test"; let y = x as unknown as number; 2) let x = JSON.parse('{"a": 1}') as {a: number;} 3) let x = {a: 1} as {a: number;}
>>2922275 Ты же понимаешь, что as кроме полутора случаев, один из которых кривая стандартная типизация стандартных функций прототипов где не инферится тип - не нужен нахуй и является дичайшим нахуй костылём?
С того что он скинул - as там нахуй не нужен. Но он изобретает велосипеды, обмотал изолентой и ебанул клей момента, потому что собрал велосипед - а запчасти то остались!
>>2906003 → >И сидеть по году без работу, попутно будучи выебанным вопросами про [] === ![] даже с годом-двумя работы? Блять, двачую, на одном собесе начали спрашивать хуету вроде typeof NaN или undefined == null или 0.1 + 0.2 !== 0.3 такое чувство что я был на презентации топ-10 ебанутых трюков в JS
>>2922360 С чем ты там ебаться собрался? Нжинкс всё за тебя делает, ты просто нужный коныиг пишешь и всё. Это как спросить "стоитли ебаться с микроволновкой ддя разогрева еды???", ну если ты дегрод и для тебя это очень сложно, то конечно стоит
че если не фронтенд? какие области в айти имеют меньше конкуренции для начинающего и хорошие перспективы? долгое время изучал всякие технологии фронта по реакту, когда начинал вообще изучать все это думал на скиле вывезу и смогу выделиться среди массы, но сейчас на все это уже смотрю не так оптимистично: действительно большое кол-во откликов на вакансиях, люди крутят опыт => рекрутерам сложнее делать отбор, вакансий мало для нубов. у меня в резюме стоит год опыта(фейк) не приглашают)))))
>>2922724 1) задудосят. нжинкс проще и бесплатней масштабировать 2) статику раздавать как следствие п 1) 3) взломают, шеллкодов в жопу напихают. некст слишком сложный и не тестированый, чтобы прямо в интернет торчать и ты туда еще говна из npm наваливаешь 4) нжинкс как реверспрокси. у тебя может быть 100500 приложений/микросервисов на одном домене
>>2922750 Ок, можешь домен проксировать в клаудфларе, но проксировать порты лучше и проще энджинксом, на клаудфларе это либо костыльно, либо за деньги.
>>2922754 Речь наверно шла об одном приложении на 80 или 443 порту. Если у тебя 100500 сервисов в интернет смотрят то естественно нужен реверспрокси
Судьба Frontend после 2025 и node jsАноним15/11/23 Срд 13:06:37#147№2922778
18 лвл, учил фронт 2 года назад, даже на реактике писал всякие проекты, даже делал свой fullstack-проект на react + node JS (именно потому что надо было, а не просто так). Потом по какой-то причине забил хуй, хотя по уровню знаний точно был на 50% джун (нет, я себя не переоцениваю). Учиться ещё 3 года на тупой бесполезной специальности. Вот сейчас решил продолжить вкат суть: что будет с фронтом после 2025 года? Заменят ли нейросеть? Будет ли избыток даже тех же миддлов на рынке фронта? А фуллстак? Будет ли актуален стек react + node JS? Пишу про ноду, потому что считаю, что чисто на одном фронте уж точно не вывезешь в дальнейшем. Так что доп. вопрос: а что по node js? Или в бэк стоит выбрать что-то другое, петухон там и тд?
>>2922778 Ищи кабана, лучший стек и все прочее, но не забывай пилить свой пет, который может стать твоим личным бизом в будущем. Нода для последнего очень даже хороша, потому что не требует много времени и экспертизы на запил фич + говнокод на жаваскрипте от чатгпт проще внедрить в проект, чем говнокод на плюсах и т.п "взрослых" языках.
>>2922778 Фуллстек всегда был хуже, это чисто для извращенцев, которым хочется за те же деньги продавать большее количество знаний. Мидлов и так избыток, слишком много лоускиллов среди них. Хотя за низкий прайс и они устраиваются. С нодой всё нормально кроме количества вакансий в постсоветском пространстве. Меня это не смущает, потому что я уже больше пяти лет работаю как раз бекендером на ноде, но для вкатывальщика будет профитнее тот же го. Нода на западе более популярна, для стартапов отлично подходит, а стартапы это почти всегда Америка.
>>2922798 Будет тяжело устроится, рекомендую дрочить базу, то есть алгоритмы и литкод, после чего на последнем курсе универа устраиваться стажёром в КОТВАСЯ. А там уже до 300кк/нс продвинешься за несколько лет не меняя место работы при желании. В тинькове, например, в последнем наборе было 12к кандидатов, из них что-то в районе 150 взяли на стажировку.
>>2922812 На стажёра берут, если нормально алгоритмы знать. Альтернатива это пиздеть в резюме и надеятся что какая-нибудь тир 3 галера тебя не спалит и возьмёт за низкий прайс красить кнопки. Лучше уж стажёром в бигтех, там и зарплата будет не сильно меньше, и опыт лучше, и строчка в резюме.
Здарова формошлепы. Мне через 3 года 40 лет, бросаю бухать и думаю чем бы заняться, есть ли смысл тыкаться в жабускрипт вашу или нахуй оно уже не надо, тем более в моем нежном возрасте, и лучше петухона ковырять как средство от деменции? Раньше сто раз пытался вкатываться, еще в универе ковырял хтмл, но дальше css не ушел. Не особо умный, вообще не усидчивый, но к сраке лет понял что лучше понемногу но систематически, чем обосраться с наскока. Мож чего посоветуете дедугану.
>>2922898 Попробуй тестировку (QA) Hr на возраст смотрят, но работу можно в любом возрасте. При всем уважении к возрасту, читай нью фаг тред и изучай направления в программировании прежде чем, куда-то тыкаться.
>>2922901 Совет хороший, жаль ни хаты в дс ни шизы. >>2922902 За компом я всю жизнь, и работаю и дома сижу, я имел в виду усидчивость в плане обучения и вката. Но я не столько о вкате а думаю просто чемто заняться полезным для мозга, но желательно конечно чтобы оно хоть как-то перспективно было, мало ли зайдет, сьебу за бугор скажу что я идентифицирую себя зумером и мне 15, пусть попробуют не взять на работу.
>>2922913 > При всем уважении к возрасту Возраст сам по себе никакого уважения не заслуживает, это я как дед официально заявляю. Qa не интересно, тут хоть какоето творчество, результат. По поводу направлений я примерно в курсе, и очень сомневаюсь что смогу в чтото серьезное, где матан и всякие страшные вещи. Честно хуй знает за столько лет так и не понял чем хочу заниматься, по фронту вроде как просто считается относительно осваиваемое, вот в факе да и от других слышал что можно за год освоить уровень ждуна, в моем случае пусть два, но это уже чтото, а учить какието джавы или сисярпы непонятно зачем и для чего, хуй знает. Тут в крайнем случае хоть за еду можно будет поработать, если вдруг без работы остаться. Хотя перегрев конечно ебейший. С другой стороны раз за столько лет даже цсс крепко не освоил, то щас то чего выебываться. Но как будто бы снова появилось желание, хуй знает.
>>2922898 Я в 30 вкатился, но ишачил для этого 2 года непрерывно. А щас пашу ещё больше, после работы на второй работе (самообучении) С полного нуля на фулстака. Питон + JS. Но Питон плоховатый вариант, потому что ну банально зайди в Пайтон тред на этой доске. Какие-то дебилы пишут тупые вопросы. И таких вкатышей миллион. А работы на Питоне мало и куча работы это всякое дерьмо где математика нужна. Но у Питона есть одно очень важное преимущество. С него можно начать, будучи дебилом с 9 классами образования. Я таким был. Я даже классы не понимал поначалу, что такое. Тупо не мог понять и всё ООП это. Какие-то инфоцыгане писали про эти чёртовы class Animal; экземпляр cat, dog класса Animal. Нихуя непонятно! И я не мог найти реальных примеров применения классов. Как меня это бесило. Что бы со мной было, если бы я вкатывался в более сложный язык? Не знаю. А вот благодаря Питону, я смог кое-чему научится и потом уже вошёл в ритм.
>>2922970 А что сложного в классе? Это типа как множество же. Бля ну ты красава анончик в любом случае. То что успехов добиваются талантливые, это пиздеж - успеха добиваются упорные. Самодисциплина, систематичность, упорство.
Нас в универе учили паскалю, и в школе немного. Там была просто тупо математика, с минимумом алгоритмов. Но поскольку у меня комп только в середине 1 курса появился, то я был страшно далек от всего этого. Я к появлению компа уже неплохо бухал и не только, сублимировал так сказать, потом в игры залипал разумеется. Да и вообще по ходу аутистом был непуганым, спасибо мамке за гиперопеку. Понимание чегото близкого к реальности началось годам к 25, но все силы были брошены на вылезаторство, сброс листвы и поиски тяночки, которая таки была найдена и так были проебаны еще 5 лет жизни, в начале 30х только освободился от этого наваждения, и уже вроде как пуксреньк, а время летит стремительно и вот уже 37. Программируйте пацаны изо всех сил, не будьте дебсом как я.
>>2922982 >А что сложного в классе? Это как спросить, а что сложного в этой вашей алгебре логики, теории множеств, ТФКП и прочем говне, в котором знакопеременный ряд даёт сумму в -1/12. А тут тебе говорят: лол, ты чё, абстракциями мыслить не можешь? Или типичный выпускник микромакромехмата, который настолько привыкает к своим абстракциям и монадам, что не может посчитать в магазине сколько ему должны сдачи дать.
Алсо соглашусь с >>2922970, примеры с котопсами - уебанские. Алсо примеры с фигурами, от которых наследуют квадратики и круги - тоже. Хоть я и вкатывался с языка со строгой статической типизацией, пропитанным ООП головного мозга.
>>2923001 Давай напишу иначе: когда человек с этим никогда не сталкивался, нужно сделать ментальную гимнастику, чтобы перестроить своё мышление и начать оперировать теми или иными сущностями.
>>2923014 С этим не спорю. У меня есть определенный бэкграунд и даже чтото читал про программирование, поэтому конечно это не то же самое что мне бы это сказали после 9 класса. Но все же мне не кажется концепция класса такой же сложной как то что ты перечислил, просто потому что это всего лишь одна концепция. Щас чекнул еще про наследование, инкапсуляцию и полиморфизм, вроде тоже понятно. А вот если надо придумать как чтото посчитать, типа алгоритм, у меня ступор нахуй. Надо было на фелософа идти, уже бы спился давно и не мучился, лол.
>>2923022 С классами всегда проблема у тех кто только начинает вкатываться в программирование. Тебе дают синтетические примеры на фигурах, собачках и кошечках. А ты должен из этого понять как адекватно выстраивать наследование или компоузить от разных интерфейсов. Наверх ещё какие-то абстрактные классы, абстрактные методы, виртуальное перегружаемое говно.
Также как в JS вкатунов постоянно ломает с понятия иммутабельности. Даже где-то в канторе ссылки/GC разъясняют на магических коробочках, которые друг на друга ссылаются.
Аналогично ломает, когда помимо референсов ещё и указатели на память появляются, а до этого человек не задавался вопросами как оно там работает и хранится. А что можно было указатель указателей сделать?
>>2922970 >Я даже классы не понимал поначалу, что такое. Тупо не мог понять и всё ООП это. Правда в том, что никто на самом деле его не понимает. Кто говорит, что понимает, только думает или делает вид, что понимает. Множество известных в Computer Science специалистов об этом писали. Просто большиство людей, даже в сфере программирования, необразованные и глупые, поэтому ООП стало популярным. https://habr.com/ru/companies/vk/articles/307168/ https://habr.com/ru/companies/ruvds/articles/428582/
>>2922970 Объектно-ориентированное программирование — чрезвычайно плохая идея, которая могла возникнуть только в Калифорнии. — Эдсгер Вибе Дейкстра
К слову, Калифорния родина содомии и прочего разврата. В Калифорнии первой в мире открытый гей занял государственный пост и пошло движение за легализацию извращений.
Какой у реакта аналог scoped slots из Vue? Гугл говорит, что render props, а в доке ректа говорят, что они устарели, используйте пользовательские хуки. А доке пользовательских хуков говорят, что внутри них используются обычные хуки. А мне не нужны обычные хуки в логике, которую я делал через scoped slots.
>>2923485 > АТД. > Формально АТД может быть определен как множество объектов, определяемое списком компонентов (операций, применимых к этим объектам, и их свойств) Ну и зачем ты пытаешься наебать дедушку? Не стыдно?
>>2924013 А как его вызывать. Допустим я передаю в дочерний элемент строку, дочерний должен её развернуть, а потом в паренте в слот запихнуть перевёрнутую строку
>>2924024 Так ее можно в паренте перевернуть, почитал про слот и нихуя не понял, ты передаешь данные из чаелда в парент, чтобы обратно их в этот же чаелд передать?
>>2924061 > Так ее можно в паренте перевернуть, почитал про слот и нихуя не понял, ты передаешь данные из чаелда в парент, чтобы обратно их в этот же чаелд передать? Да. Тоже считаю если есть какая-то логика которую тебе надо реализовать посередине парента и чайлда, её надо реализовать просто сбоку а не устраивать вот эти передачки хуй пойми откуда куда.
>>2924150 Да помню был вкатуном в мелкой галере лет 7 назад, наделал таблиц в админке на рякте табличных елементах. О гридах еще не знал. Все летало со скоростью катка по свежему асфальту...
>>2923793 Тут имеется ввиду, что абстрактный АТД это множество объектов, но мы говорим о конкретном АТД, а именно об объекте наследованном от класса. Это уже не множество, а один конкретный АТД. И под множеством подразумевается не математическое понятие множества.
>>2924610 https://react.dev/reference/react/cloneElement > Legacy React APIs >These APIs are exported from the react package, but they are not recommended for use in newly written code. See the linked individual API pages for the suggested alternatives.
Сап двощ. Есть два поля в фаербейзе startDate, endDate нужно сделать квери чтобы отфильтровать по интервалу между ними, но в фаербейзе нельзя делать такое
>>2924923 Хотя бы тем что таблицы это говно мамонта и плохо стилилизуется через css. Но в css завезли свойства для таблиц и можно любой див сделать с табличным поведением. Чем одно время успешно пользовались для создания адаптивных таблиц, до появления гридов.
>>2925010 Кому надо? Что за шиза? Для SЕО? Так таблицы чаще делают во всяких админках и CRM-ках а не на сайтах. И часто тербование чтобы было респонзив, а не горизонтальные прокрутки. Стедай такую таблицу на табличных элементах https://codepen.io/vasansr/full/PZOJXr
>>2925018 Таблица сделанная таблицей это халяль. Семантическая верстка слышал? Но ты просто новый ньюфаг и у тебя тряска от таблиц, можешь не высирать мнение полученное с помощью тряски, оно инвалид.
>>2925043 >все таблицы гридами делать Откуда ты это вывел? Я только сказал что таблицы - это говно мамонта и у них quirck проведение. Может у тебя кейс где семантика важнее, или особенности рендеринга таблиц нужны, тогда использовать таблицы. Но бля почему если я делаю компонент для реюза в CRM, которая и на мобилках будет работать, наху мне твои таблицы?
ЗЫ. Упорутся одной идеей и несут ее в ущерб бизнесу. Вот из-за такой ригидной шизы у некоторых технарей кабаны предпочитают нанимать нормисов с гуманитарным мышлением....
>>2925361 Вот ты пришел в кафе, а тебе вместо чая налили мочу по ошибке. Либо ты пьешь мочу и спасаешь повара от критики, либо стучишь и просишь переделать, поднимаешь всю кухню уши ...
>>2925554 @ ЧТО ТАКОЕ КОРОНАРНОЕ ШУНТИРОВАНИЕ @ ЭТО И ЭТО, А У ВАС ОНО ИСПОЛЬЗУЮТСЯ? @ НЕТ ПРОСТО ПРОВЕРЯЮ ЗНАНИЯ, МЫ НЕ ИСПОЛЬЗУЕМ. У НАС БОЛЕЕ СОВРЕМЕННЫЕ ТЕХНОЛОГИИ
>>2925563 Конечно. Они просто так ООП с классиками на реактовакансию спрашивают. Там окажутся либо обособленные нитакусики с высокой культурой, либо у них там легаси, которому дай бог 5 лет, а не все 8. Где не слышали про тайпскрипт и функциональные компоненты. Либо всё-таки это просто вопросы-фильтр. Выбери свой вариант.
>>2925606 Реактопараша это надстройка над ЖС. Тебя полностью вправе гонять просто по знанию ЖС. А ТС это еще больше ООП чем ЖС и там знать что такое абстрактный класс еще важнее.
>>2925659 Не нужно, а можно. Если ты хочешь оставить тип после компиляции, но не хочешь позволять, чтобы были инстансы этого "интерфейса", чтобы явно потребовать реализации некоторых методов. Явное лучше неявного. Если бы это был просто класс, то небоходимость реализации методов была бы неявной. Но можно заменить это парой класс и интерфейс с нужными методами. или класс котрый исключение бросает в методах. Только зачем такие костыли, когда тайпскрипт позволяет создать абстрактный класс c методами без имплементации.
>>2925709 Пчел, я шёл собеситься на реактомакаку. Лайвкодинг с РиАкТоВыМ приложением. Интервьювера интересовало только как побольше классов напихать, синглтоны, IoC, стратегии, билдеры, 3 столпа ООП (4, тащем-то) etc. Там ни слова не было про ангуляр и nest. А теперь объясни: нахуя? Отвечать на их перезвон я не стал.
>>2925850 Я только вчера смотрел JS код реакт приложения, от которого веело бэкендом ООП головного мозга. Чел просто на ровном месте создал фабрику, а потом переиспользовал фабрику во второй фабрике.
Нужно только ООП обезьяну найти - а дальше макака всё сделает сама.
Не совсем классическое реакт приложение для саетов, больше как пример встройки кастомного интерфейса в webview другого софта, но уже этого достаточно.
Поясните шаряшие реакт мудрецы, как это сделать? Я не совсем поехал? Есть функция onChange, её нужно дебаунисить, но если пришла новая функция старую надо отменить. И нужна стабильную ссылка на функцию чтобы реакт не ререндерил просто так. Два варианта: 1) useRef и useEffect. В эффекте кенселим старую функцию, присваиваем рефу новую. Но при этом получается что в компоненты которые уже отрендерены ушла старая ссылка. 2) useRef и useMemo. Прямо в мемо кенселим старую функцию, присваиваем рефу новую и его же возвращаем. Теперь в компонентах свежая функция.
Но оба варианты выглядят как говно. Как сделать более ИДИМАТИЧНО? Сколько вожусь с реактом, до сих пор на место не стала семантика этих примитивов. В мемо с какого то хуя нельзя получить прошлое значение (которое и так блин кешируется реактом), а эффект работает только после ререндера. И если нужно подредачить стейт на основе уже НОВЫХ пропсов, то всё равно это выносят в эффект, где обновляют стейт, в итоге получаем лишний рендер просто с нихуя. Почему реакт такое говно?
>>2925127 У меня так же, половина непонятный говнокод, кабан ставит задачи хуй пойми как, на кофейной гуще надо гадать че он хочет. А остальные сидят на митах с таким еблом будто понимают че происходит. Я потом спросил у одного че за фигня, он говорит что все тупят и не понимают, но делают ебало что все на мази.
>>2926227 Какие тесты. Там разработка уровня "Надо сделать к вечеру я обещал". Лишь бы как-то работало. Там и требований к оформлению кода нет, как и минимальный рефакторинг. Не то что тесты.
>>2925127 Ну бывают проекты таких размеров где один человек вообще не способен разобраться, там делят на зоны ответственности и каждый копошится в своей периодтчиески её расширяя. Если это не твой случай, то не ссы, втянешься.
>>2925912 Меня больше бесят персонажи которые 20 лет опыта имеют, на их горбе проехало 5 галер, но они считают себя мидлами потому что эйчарка им про софтскилы сказала.
Аноны, а вот эту вот всю хуйню из девтулз консоли можно подхватывать и в верстку ебануть? Консоль логи, ошибки нетворка, ошибки кода. Все-все. Гопота, кст, говорит, что нет - низя.
Sorry, I cannot fulfill this request as it involves dynamically capturing and displaying console messages in real-time, which is beyond the capabilities of this platform.
В свелтеките есть килерфича, для того чтобы убедить кабана использовать свелт. Можно для каждой страницы отдельно решить будет ли она на сервере чисто статически рендерится или на клиенте или будет гибридной.
>>2927148 Я был на собесе в одну контору галера, которая его юзает. При этом они требовали его обязательное знание, с чем я успешно проебался. В итоге пошел в другую контору.
Умоляю объясните какую задачу решает этот ваш React? Давненько задаюсь вопросом. Только не надо туманной ебалы про реактивность. Вот например JQuery мне вполне понятно какую проблему решало - совместимости зоопарка разных браузеров. Сейчас она немного рассосалась из-за монополизма хрома, а проблема обратной совместимости решена тем что на нее тупо положили хуй.
>>2927490 >Удобная шаблонизация Что ты вкладываешь в это? Удобнее чем тысячи шаблонизаторов до реакта? Напиши реальную проблему которую тебе помог решить React.
>>2927495 >Что ты вкладываешь в это? JSX >Удобнее чем тысячи шаблонизаторов до реакта? Именно >Напиши реальную проблему которую тебе помог решить React До него были Meteor, Ember, Backbone/Marionette, Angular 1, они выполняли похожие задачи, только работать с ними было очень неудобно и очень медленно по сравнению с реактом. Но в 2023 году у реакта куча альтернатив со схожей или даже лучшей продуктивностью и удобством разработки. Для меня главное чтобы был JSX, пока лучше него не придумали. Шаблоны ангуляра более всратые, у вью тоже. Надеюсь на взлёт Solid, он в принципе лучше реакта во всём, и перформанс превосходный, разве что маленькое комьюнити и количество библиотек. Ну или может авторы реакта оптимизируют перформанс, завезут сигналы, так было бы идеально.
Еще раз вот смотри - Мне нужно чтобы сайт работал в разных браузерах и не писать тыщу ифов (и 2000е на дворе) - я беру jQuery Мне нужно XXX - я беру React. Что можно подставить вместо XXX?
>>2927480 >проблема обратной совместимости Там это, недавно пробегал хуй, у которого флекс врапы в фаирфокси, 9 лет как висящие в фулл супорте, работали через жопу, не так как в хроме. Про какую ты блядь обратную совместимость? Обатная совместимость нужна только сафари ретроградам, которые из-за старого железа обновить браузер не могут. Потому что ОС не даёт. Лол.
>>2927505 >Мне нужно чтобы сайт работал в разных браузерах и не писать тыщу ифов (и 2000е на дворе) - я беру jQuery Какой jquery нахуй, ты ебанутый? Для поддержки старых браузеров есть куча нормальных инструментов, причем в реакт и прочие модные фреймворки они встроенные.
>>2927509 >>2927510 Почему я должен каждый день обновлять бравзер чтобы у меня что то отваливалось и лезли очередные ненужные перделки от того что дибилятам скучно и руки чешутся поиграть с очередным говнофреймворком?
Переношу бэк браузерной игры с NodeJS на фронтенд. Воткнулся в проблему, чем заменить модуль "colors" (или "chalk") на клиенте? Похоже, что эти либы раскраски консольных сообщений на браузер не рассчитаны вообще? Можно как-то импортировать и юзать chalk в на клиенте?
Предположим, есть один слайс - отвечает за установленные чекбоксы. И есть другой - отвечает за поисковый текстовый инпут.
В слайсе чекбоксов состояние - массив выбранных чекбоксов. Там есть редьюсер, который добавляет определенный чекбокс и второй редьюсер, который сбрасывает все чекбоксы (тупо инитиалстате возвращает).
В слайсе поискового импута состояние - строка. Тамошний редьсер устанавливает эту строку.
Вопрос в том, что мне\е нужно сделать так, что если устанавливается какой-то чекбокс, то инпут сбрасывается (вызывается его редьюсер с пустой строкой) и наоборот - если устанавливается текст из инпута, то все фильтры сбрасываются (вызывается его редьсер по сбрасыванию фильтров).
Кое-как смог сделать через импорт редьюсеров одного слайса в другой и использование в extraReducers. Но мне приходится дублировать логику, ибо хз как вызвать, например редьюсер сброса чекбоксов внутри extraReducers.
Да и вообще вот эти взаимные импорты из одного слайса в другой не нравятся. Как это сделать правильно?
>>2927480 Реакт это всратая попытка перейти от императивного подхода к декларативному. Ангуляр и вуе нормальная декларативность например. Нокаут первая такая либа. Зачем это надо? Чтобы не выполнять одинаковую работу по перекладыванию жисона в хтмл. Вообще в институтах преподавать бы историю развия фреймворков как отдельный предмет, а мне дебичи в /б/ все ещё доказывают что матан нужен ололо. Ещё можно это спрашивать как вопрос на собесе. Но если так делать, то все будут знать причины почему реакт такое всратое говно и использовать его не надо. И у нас была бы совсем другая индустрия.
>>2927588 > знать причины почему реакт такое всратое говно Был такой фреймворк backbone. И адский сотона добавил туда функцию render. И она считалась мной например тупо антипаттерном, потому что она медленно работала все что render сгенерит вставляется в хтмл с помощью медленной вставки innerHTML = render(), потому что надо было писать хтмл внутри джаваскрипта(привет ебучий жсх). Дебичи из Фейсбука напротив делали все через render. И чтобы это говно так не лагало сделали виртуальный дом.
Смарите, когда я указываю в package.json зависимость (например, "underscore"), я могу потом из любого файла импортировать его так: import _ from "underscore" т.е. не указывать никакой путь, только название. Так вот можно ли сделать так же с каким-то модулем не из package.json? Например, я хочу, чтобы мой модуль из "./lib/utils/somemodule.js" можно было импортировать так: import myModule from "somemodule" Этого можно добиться, не заливая модуль в npm? А можно ли этого добиться на клиенте?
>>2927579 На инпут устанавливаешь стейт чекбоксов в "ни один не отмечен", на выделение чекбокса устанавливаешь стейт инпута в "ничего не введено". Где тут взаимные импорты между редюсерами? Это обычные диспатчи из компонентов.
>>2927636 Мне кажется архитектура нужна для другого, и FSD этого не дает. Грубо говоря в приложении есть 2 компонента - предметная область (ядро) и представление данных (у нас это react). Всё что происходит в react по большому счету не важно, в хорошей архитектуре должна быть возможность заменить react на vue, svelte, angular без переписывания большей части кода, или даже перенести код на noodejs и дергать API вместо кнопок. А FSD это новое распихивание по папочкам, ну ок, можно применить.
Выбери что то одно. Говорить про архитектуру когда у тебя один глобальный объект с состоянием, который мутирует любая точка приложения... ну это как думать о том какие трусы себе надеть, зная что через минуту они будут в поносе из-за недержания. Если не нравится явный диспатч из компонента, то делай это неявно серез редукс-саги.
>>2927661 Как же меня все это заебало, анон. Я тоже был адептом чистой аритектуры и всего прочего. Но это какая-то шиза, не соответствующая реальности. В реальности лучшая стратегия, накостылить решения, срубить бабки, пока есть спрос и дальше чилить. Чужой проект превратится в говно независимо от твоего желания, а если это твой проект, то ты потеряв время и силы на архитектурную чистоту не достигнешь комерческого результата.
>>2927747 Лучший критерий это удобство добавления фич, а не создавать чистые архитектуры в ваккуме, ради переписывания с реакта на ангуляр и обратно каждый день.
>>2927749 минимум изоляции от фремворка нужен конечно, потому что фреймворк обновляется, но если вдруг в новом реате скажут что хуки деприкейтед, то тебе такое количество микролапши придется переколбашивать, что выделение из хуков бизнеслогики это просто детский сад.
>>2927749 >>2927747 Всё так гайс, это что-то вроде ментального онанизма, иногда хочется переписать старый проект и посмотреть что получится. >Лучший критерий это удобство добавления фич Да, ну я бы еще добавил тестируемость, вручную тестировать надоедает.
>>2927661 Ух как губежки вытянул, сразу видно по хуйцу истосковался
>вот в реальных ситуациях >но показывает все равно кнопкосчетчик типикал архитут
Если уложить видос в два слова - primitive obsession. На самом деле счетчик не число, а объект с максимальным/минимальным значением и всякими там сообщениями.
Ну в целом то архитектутная мысль правильная что любая сложная логика должна быть отвяазана от всего на свете и быть как бы центром системы. Проблема только в том что этой самой логики у рядового анона с гулькин хуй. А 99% кода составляют связки говнофреймворков с говнофреймворками. И сложности уровня "как сделать чтобы у меня текст пропадал в импуте когда я щелкаю по чекбоксам и наоборот" охуеть просто.
>>2927579 Тебе не нужно редьюсеры нигде трогать кроме как в экшенах, в компоненте чекбокса просто выживаешь экшен, который сбрасывает стейт инпута, и в компоненте кнопки поиска вызываешь экшен сброса чекбоксов
>>2928190 >1) Предлагаешь все железо старше 10 лет на свалку нести? Зачем? На компе с каким-нибудь кор 2 дуо нормально запускается последний хром. Не надо просто по 1000 вкладок открывать. >2) Сколько раз за 10 лет переписывал компоненты на новый нескучный синтаксис? 1.
>>2928219 Я не говорю про функцию рендер из реакта, я говорю про функцию рендер из бекбона. У нас урок истории, иди почитай что это в доку бекбона. Это рак потому что 1. медленно работает. 2. Надо писать хтмл в джаваскрипте. Первую проблему они решили а вторую нет.
>>2928241 > JSX, это другое. Это всего-лишь твоё говноедское мнение. >>2928250 > - нахуя это все нужно. Ну бекбон какую-то "архитектуру" предоставлял. На самом деле нет. MVC модно было тогда. Но это базворд ничего не значащий как делать на этих трёх буквах апп никто не знал и единого мнения нет.
>>2928267 >Ну бекбон какую-то "архитектуру" предоставлял - Хочу вэб приложуху написать, да что то никак - А в чем проблема? - Да вот бы мне кто предоставил хоть какую-нибудь архитектуру
>>2928294 Ну вот была jQuery чтобы удобно с домом, работать underscore чтобы удобно работать с данными, и бекбон который как-то через жопу их слепливает. Из jQuery в ЖС искаропки переехал querySelectorAll, промисы. Из undescore все методы пердолинга массивов.
>>2928298 Ты меня с кем то перепутал, я то все пытаюсь понять нахуя реакт вообще нужон. Похоже разве что в идейном плане - додики не способные написать хоть немного адекватный код объясняют друг другу как творить невероятную хуиту.
>>2928335 >программист сам решает что менять, Я тебя носом ткнул в мету как программист решает менять. Вот так он решает менять как на картинке написано. Render рисует ВСЮ вьюху по определению. Если ты хочешь по клику каунтер инкрементировать, то можно или сделать что-то такое $(".counter").text(this.model.get("counter")) или вызвать this.render()
>>2928344 >Render рисует ВСЮ вьюху по определению. Деб, ты умственно неполноценный? Я тебе цитату из доков кинул где написано что "по определению" render не делает нихуя.
>>2928356 >"по определению" render не делает нихуя. Не по определению а по умолчанию. И в этом случае бекбон вьюха просто подсасывается к элементу на странице, типа гидрейтит его. А функция рендер еще и нарисовать может. А если ты маньяк, то еще и перерисовываешь всю вьюху функцией рендер на каждое изменение данных. И всё это мета, совершенно обычное дело которым болеет каждый второй сайт.
>>2927588 >Реакт это всратая попытка перейти от императивного подхода к декларативному. Если копнуть нормально то окажется что различия между этими подходами высосаны из одного места, штудентик. Как и большинство терминологии в cs.
> можно это спрашивать как вопрос на собесе Так это со 100 вероятностью спрашивают же. >Зачем мы выбрали реакт? А приходится краснеть и мямлить что то там про реактивность. Я же не скажу в глаза - вы че ебанутые? Вы же выбирали его за каким то хуем, это я должен у вас спрашивать зачем.
>>2928376 Так я правильно понимаю или нет - в функции render можно изменить только то что тебе нужно вместо того того чтобы переписывать весь innerhtml. И внезапно причина которая не позволяет этого сделать ровно одна единственная - так в примере написано, а мозгов у разрабов не хватает чтобы делать как то по другому (и ты один из них).
>>2928411 Функция render запускается 1 раз в конструкторе вьюхи и вручную когда хочешь. >в функции render можно изменить только то что тебе нужно Нельзя, для этого был написан виртуал дом. Если бы можно было, то виртаул дом не был бы написан.
>>2928993 Для реализации подгрузки новых данных по скроллу с виртуализацией в React и использованием React Query, вы можете воспользоваться следующим подходом:
1. Установите необходимые библиотеки:
```bash npm install react-query ```
2. Создайте компонент, который будет отображать список данных. Например:
```jsx // ListComponent.js import React from 'react'; import { useInfiniteQuery } from 'react-query';
const fetchData = async (key, page = 0) => { // Здесь нужно реализовать логику загрузки данных с сервера. // Например, использовать fetch или axios. const response = await fetch(`/api/data?page=${page}`); return response.json(); };
const ListComponent = () => { const { data, fetchNextPage, hasNextPage, isFetchingNextPage } = useInfiniteQuery( 'data', fetchData, { getNextPageParam: (lastPage, allPages) => { // Возвращает следующую страницу данных. // Зависит от структуры данных, которую возвращает ваш сервер. return lastPage.nextPage; }, } );
3. Используйте компонент `ListComponent` в вашем приложении:
```jsx // App.js import React from 'react'; import { QueryClient, QueryClientProvider } from 'react-query'; import ListComponent from './ListComponent';
const queryClient = new QueryClient();
const App = () => { return ( <QueryClientProvider client={queryClient}> <div> <h1>Подгрузка данных по скроллу с виртуализацией</h1> <ListComponent /> </div> </QueryClientProvider> ); };
export default App; ```
В этом примере используется библиотека `react-query` для управления состоянием запросов к серверу. Компонент `ListComponent` использует хук `useInfiniteQuery` для обработки запросов по скроллу и виртуализации данных. Обратите внимание, что логика `fetchData` и структура данных могут отличаться в зависимости от вашего сервера.
>>2929074 Прошу прощения за путаницу. Если вы хотите использовать Redux Toolkit (RTK) для управления состоянием в вашем приложении React вместо React Query, вот как вы можете реализовать подгрузку данных по скроллу с виртуализацией с использованием RTK Query.
const handleScroll = () => { // Реализуйте логику определения, что пользователь прокрутил вниз и вызовите fetchNextPage // Например, используя window.scrollY, window.innerHeight и document.documentElement.scrollHeight };
4. Используйте компонент `ListComponent` в вашем приложении:
```jsx // App.js import React from 'react'; import { configureStore } from '@reduxjs/toolkit'; import { Provider } from 'react-redux'; import dataReducer from './dataSlice'; import ListComponent from './ListComponent';
const store = configureStore({ reducer: { data: dataReducer, }, });
const App = () => { return ( <Provider store={store}> <div> <h1>Подгрузка данных по скроллу с виртуализацией</h1> <ListComponent /> </div> </Provider> ); };
export default App; ```
Этот пример использует Redux Toolkit и `createAsyncThunk` для управления состоянием запросов к серверу. Логика загрузки данных и обработка скролла реализуются в соответствующих частях кода.
>>2920944 Напишешь на чистом js это "правильно"? Спорим ты просто хуевый инженер, который хочет, чтобы за него все решили и сделали другие, а твоя задача фрустрировать и кадаться говном.
>>2921231 Из того, что можно будет положить в гитхаб и получать респект - таблица в тыщей записей, для каждого роу может быть вложенность других роу, их можно перетаскивать друг в друга. Если влоб это сделать, работать будет хуево, нужна виртуализация. Просто если делать клон чего-то большого, то хуй кто смотреть будет толком, ну и просто херова туча времени на верстку. А такая таблица это минимум кода и много интересных технических моментов, я так понимаю ты только вкатываешься, поэтому будет полезным в качестве демонстрации скилов.
>>2929160 зачем мне че-то писать? зачем на чистом? шиз, блять, возьми нормальный инструмент и таких проблем не будет. еще, блять, попроси меня на паскале эту хуйню сделать, чтобы твои ряктопарашовские чувства были отомщены.
>>2929160 Конечно. Даже в этом треде на что правильное решение на реакте. Есть 2 вида правильных решений. Полностью кастомайзбл - делай чё хочешь. Или компоненты на любой случай жизни, для списка, для таблиц, для неба, для Аллаха. А вот это говнина когда вот тебе только дивы, хочешь таблицу - ебись.
Почему в Реакте ререндер происходит только, когда переменная в state получает новую ссылку? Не проще ли было бы отслеживать изменения и тогда ререндерить? Например, у меня есть массив, я меняю в нем один элемент, Реакт не вызывает ререндер, т.к у него переменная массива указывает на тот же самый массив (который я изменил). Чтобы пошел ререндер, нужно копировать массив и уже в нем менять, что тебе надо. Тогда ссылка поменяется и Реакт вызовет ререндер. Но это же неэффективно.
>>2929314 Потому что в твоём массиве может быть 1000 элементов, состояние не обязательно может измениться после вызова диспатча. Из массива убирают фильтром 3, 50, 777 элементы. Отследи эти изменения? Надо пройтись теперь на изменение состояния по всему массиву и сравнить элементы. А что делать с ключами начиная с 3-го индекса, там же элемент убрали и нумерация поменялась? Считать что изменилось всё начиная с 3-го элемента? Ведь соответствие индекс-значение нарушено.
А потом при рендере реакт ещё будет сравнивать отдельно, что поменялось в списке, где индексы обновить, где пропы.
А вложенный мемоизированный компонент вместо проверки ссылки твоего массива также должен будет проверить все элементы на изменения массива. А он ещё может и не последним в цепочке наследования оказаться.
Вы в курсе что вас заменят на питонистов. Посмотрите как питон продвигают в веб. Он выглядит более лаконично у него больше либ и самое главное там нормальная асинхронность а не говёный евент луп. Так что время учить питон.
>>2929626 >питон >там нормальная асинхронность а не говёный евент луп Кекнул в шепот. Ладно бы ты про говно спизданул, но в питоне такой же эвент залуп, который ещё и заблочить легко, если где-то синхронную функцию вызываешь внутри него, а не в отдельном треде. мимо недосинька на петухоне
>>2929782 Да а че там обсуждать? Бекендеры - дегенераты, которые в двух строчках 10 ошибок делают. Смеяться над бекендером - это как смеяться над дауном. Он не выбирал таким родиться.
Ебаный react-native, сука какое дерьмо, 3 день я ебусь с этой хуетой java.lang.UnsatisfiedLinkError: couldn’t find DSO to load: libhermes.so и ноль нахуй, нихуя блеатЬ, хермес-хуемес отключен-включен-хуечен, это просто полный пиздец. Как это КОНТРИТЬ ТО ЕБАНЫЙ РОТ? В эмуляторе ведра всё заебись, а на устройстве апшка шлет нахуй с этой ошибкой, я ебал рот
>>2929752 Для ебанько тыща элементов это охуеть как много. Хотя для дауничей которым нужно тысячу библиотек подключить чтобы сложить два плюс два - вполне возможно так и есть.
Ни одна ебаная мразь не придумала высрать клиент для пскл без зависиостей, теперь от меня требуется родить обосранный пакет buffer, который и так уже есть в модулях. Сука ну почему жсеры такие тупые
>>2930006 В данном случае, когда вы вызываете функцию `f(1)`, значение `a` передается как аргумент функции. Внутри функции есть объявление переменной `a` с ключевым словом `var`. В JavaScript переменные, объявленные с использованием `var`, поднимаются (hoisted) в начало своей области видимости, но инициализируются значением `undefined`.
Таким образом, код функции фактически будет интерпретирован примерно следующим образом:
```javascript function f(a, b) { var a; // Поднятие переменной 'a' b = () => console.log(a); // Инициализация b с функцией, которая ссылается на 'a' a = 'AAAAAAAA'; // Переопределение 'a' b(); // Вызов функции b }
f(1); ```
Когда функция `b` выполняется внутри функции `f`, она ссылается на переменную `a`, которая в этот момент равна 1 (значение, переданное при вызове функции `f`). Поэтому при вызове `b()` выводится значение 1. Переопределение переменной `a` на строку 'AAAAAAAA' не влияет на замыкание, созданное функцией `b`.
>>2930412 Проецирующий джунишка, палишься на том что как всем джунятам-даунятам тебе лишь бы блестящих говноперделок засунуть побольше, даже там где они нахуй не нужны.
>>2930438 Отрендерить 1000 элементов без виртуализации обычно плохая затея. Джун будет писать виртуализацию руками, сеньор возьмёт либу весом в несколько КБ без каких-либо блестящих свистоперделок, потому что либа для виртуализации просто выполняет всего одну функцию, виртуализацию списков.
>>2929876 НИХУЯ из этого не помогло, я блядь уже с ума схожу нахуй, что за хуйня НАХУЙ БЛЕАТЬ. Все зависимости подрублены нахуй, хермес отключал,включал, предрелиз сделал на экспо и там менял всю эту хуйню. НИ-ХУ-Я БЛЕАТЬ, это какой-то пиздец
>>2930561 Мне кажется ты не в реакте новый, а в целом в твоей голове нет такой картинки, что глубое сравнение это дорогая операция. Да ещё на каждый элемент массива. Сравни за дешёво изменения в объекте, у которого может быть произвольная вложенность, например 10? И да, копировать объект дешевле чем вставить в HTML DOM. Попутно ещё решив, нужно это обновление или нет. Знаешь ли, пересчитать лейаут страницы и перекрасить его - не дешёво, даже с учётом всех магических браузерных оптимизаций.
>>2930569 Дал тебе на клыка, псевдо элитист. Чтоб тебя лексер ночью покусал.
>>2930587 А ты прав, если у нас есть объект с большой вложенностью, то придется спускаться вниз каждый раз, чтобы проверить, не изменился ли он. А вот ссылка всегда одинакова по размеру, независимо от размера объекта.
Вот теперь кажется понял. Если поставить себя на место реакта, то все встает на свои места.
Понадобилось написать бэкенд на (node)js, чем раньше не занимался, пытаюсь выбрать фреймворк. Что есть похожее на FastAPI питона? Т.е. современный, непереусложнённый, с автоматической генерацией OpenAPI 3 доков, норм работающий с typescript.
>>2930589 Тем, что это джаваскрипт. А если это питон, который выглядит как джаваскрипт, то просто пересаживаем питоновых макак на JS и экономим тысячи долларов на переобучении, дообучении, и имплементации поддержки петона в браузере. А дальше высококультурные шизы пусть через преттиер себе отрезают скобочки, до которых могут дотянуться, и точки с запятой.
>>2930605 Ты просто тупой как пробка, как можно было не догадаться, увидев, первый раз стейт, что там внутри выполняется что-то вроде: emitOnStateChange() только тогда, когда ты сеттишь что-то новое в стейт, через хуки или в классовых компонентах и именно это тригерит ререндер, это называется dataBinding, это база, это знать надо. И именно поэтому тебе нужна set функция или поле в классе, потому что иначе некуда вставить этот самый emitOnStateChange().
>>2930628 Ну вот потому я тебя и назвал, тупым как пробка. Ведь очень не сложно догадаться, что если ты меняешь что-то внутри массива, то тебе некому триггерить emitOnStateChange(), поэтому перерендера и не происходит.
>>2930674 Вопрос был, почему создатели Рякта так решили сделать. А, ладно, я получил ответ на свой вопрос, пойду дальше читать. Алсо, чтобы два раза не вставать, посоветуйте годные туторы по рякту в духе, по примеру этого: https://react.dev/learn
>>2930628 Реакт не стартуер ререндер, если твой литерал/ссылка на объект не поменялась, но ты "попытался". Дойдёшь до секции с оптимизацией ререндеров - навалят ещё инфы.
>>2920883 >Есть вообще хоть что-то, в чем Реакт был бы лучше чем Вуе в 2023-м? Не перестаю проигрывать с эмаунта копиума, необходимого Реакто-петухам для совладания с тем фактом, что им приходится 24/7 ебаться с мемоизацией, чтобы предотвратить избыточные ререндеры, в то время как в Вуе такой проблемы просто не существует.
Также орирую с того, что для элементарной передачи данных снизу вверх реакто-петухам приходится каждый раз создавать замыкание.
Уже этих двух вещей достаточно, чтобы понять, что реакт - это не фреймворк, это по сути продвинутый аналог jQuery для работы с примитивнейшими лэйаутами.
Ах да, как-то раз принес это на реддит, так у реактопетухов началась аццкая массовая тряска с воплями "ЗАТО У НАС ПОВЕРХНОСТЬ АПИ МЕНЬШЕ!!!111ЁЁЁ". Дауны, что с них взять.
>>2930066 Лексическая область видимости, прикинь. Для функции она создается в момент определения, а не вызова. "b", инициализируясь в области видимости аргументов, именно в ней будет разрешать внешние для себя переменные. Поскольку в момент передачи там была "1" именно она и становится "a" для "b". Соответственно, если вызвать "f()" без параметров, получишь undefined.
1. Мемоизация в реакте изевая и необходимость в ней возникает крайне редко, если ты ебешься 24/7 с чем-то таким, то лучше уебывай из профессии, ну или на вью переходи хз.
2. Нахуя данные передавать снизу вверх, данные есть смысл передавать сверху вниз. А снизу вверх - файрить эвенты. Ну или поясни, что имелось в виду.
3. Реакт и не позиционируется, как фреймворк, это либа. Набор утилит для преобразования DOMa, тебе решать, что с этим набором делать. Если не тянешь, вью возможно отличный выбор, где криворуким максимально ограничили их способность делать говно.
4. Да, на реддите сидят дауны, не удивлен, что ты там сидишь.
>>2931055 Тебя уже попустил другой анон по всем пунктам, но я ещё добавлю по первому. Скорее всего в следующей версии выйдет новый компилятор, который будет делать автоматическую мемоизацию.
>>2931112 Еще бывает динамическая. Была раньше в некоторых лиспах, но больше нигде не используется. Это плюс-минус как ведет себя this (которое по неведомому недоразумению называют "контекстом" в рашкованском сегменте интернета) в js. А теперь представь что так себя ведут все переменные и как с этого будут жопы гореть - поэтому от этого давно отказались. Его объяснение кстати хуита само собой. Вот правильное объяснение >>2930439
>>2931595 >pub/sub - это не архитектура - это ее отсутствие Чел, сейчас все приложения на микросервисах так устроены, только pub/sub с маршрутизацией и гарантией доставки.
>>2931616 Т.к у тебя три альтернативы фактически при использовании микросервисов 1) Общаяя бд, в миросервисном исполнении проблемное решение 2) Распределенные транзакции, костыль 3) Ивент драйвен архитектура
>>2931616 >DDD баззворд с нулевым наполнением >>2931622 >3) Ивент драйвен архитектура На заборе тоже написано. Идея всем дружно срать в один чан - не архитектура. Но пока работает - жить можно конечно.
>>2931634 >Идея всем дружно срать в один чан - не архитектура В какой один чан? Меседж брокер (рабит, кафка) только распределением и доставкой ивентов занимается, в нем нет бизнес логики. Идея в том что
1) каждый микросервис обрабатыает свой поток событий и отдает в брокер другой поток событий 2) что не нужно заботится о согласовании данных между бд разных микросервисов 3) асинхронность обрбработки событий
Я меняю элемент в списке в реакте. Надо перерисовать список после изменения элемента. Какие бескостыльные способы есть перерисовки? Не хочется делать setList([...list]) или именно так это и надо делать?
>>2931650 >1) каждый микросервис обрабатыает свой поток событий и отдает в брокер другой поток событий Это и есть >всем дружно срать в один чан >2) что не нужно заботится о согласовании данных между бд разных микросервисов Перевод: никто не знает как устроена система и даже в принципе разобраться в ней невозможно.
>>2931696 > setList([...list]) Хотя это даже не работает ведь лист я получил через useSWR и у него никакого setState нету уже. Тогда я накостылил вот такой проп диву data-redraw={redraw} и в redraw просто случайное число отправляю. Смекал-очка.
>>2931724 А куда денешься, лол. Это будущее с горизонтальным масштабированием, с инфраструктурой как код, с чат гпт, и все это будет в облаке у провайдера бизнес решений. А программисты превратятся в интеграторов и консультантов.
>>2932000 >Предметно-ориентированное проектирование (реже проблемно-ориентированное, англ. domain-driven design, DDD) — набор принципов и схем, направленных на создание оптимальных систем объектов. Сводится к созданию программных абстракций, которые называются моделями предметных областей. В эти модели входит бизнес-логика, устанавливающая связь между реальными условиями области применения продукта и кодом. Чистейший поток базза.
>>2931616 Наличие шины данных/брокера сообщений не является обязательным атрибутом для реализации ддд в микросервисах. И микросервисы можно реализовать и без ддд и без кафок-хуяфок, и каждый микросервис может иметь свой субдомен, а всех их объединять кордомен, который может быть чем угодно, хоть отдельном сервисом, типа воркфлоу, хоть просто набором зашаренных классов/адаптеров, обёрнутых в отдельный пакет или библу.
>>2931595 >Вроде это пишется где то примерно за минуту. Если зайти в решения и скопировать первое попавшееся, да. А 2 часа для малютки, который в первый раз с такой задачей столкнулся в самый раз.
>>2932048 Когда в универе учился, нужно было перед преподом на листочек написать евент эмиттер если конечно попадётся тот билет. Как раз надо было уложиться за минуту две
>>2931993 >mutate({ ...data, name: newName }) ...data а вот это хорошо потому что мутировать это плохо понятненько? А если там миллион элементов в массиве, мне тоже всегда надо его копировать? А мутировать плохо потому что долбоеб который придумал реакт так скозал и всё.
>>2932289 Ты излил какое-то говно. Потом откуда-то вылез SWR. Никто не знает размер твоего списка. Если у тебя там 10 элементов. Ты литералли экономишь на спичках усложняя и спагетизируя логику компонента. Мы тут угадать должны, что ты там с данными делаешь? Отсылаешь ли запросы? Да в конце концов, у тебя девтулзы есть, можно посмотреть перформанс. Ты вообще в курсе про такой функционал? Он прямо в твоём браузере.
> пример Бля чел, это какой-то пиздец разбросанный на несколько уровней. Родительский компонент делает ТРИКИ-ТРИКИ, чтобы сбросить стейт вложенной управляемой формы... Это говнокод чистой воды. Я, конечно, могу представить, когда это могло бы быть полезно, относительно, но это только если ты изобретаешь ещё больше велосипедов. Когда тебе может понадобиться явный ключ на компонентах - это например, если у тебя условный рендеринг компонентов, которые fiber не может различить ввиду того, что они рендерятся в один и тот же элемент. Вот тогда нужно ключом намекнуть, что неплохо было компонент полностью перерисовать.
Короче, смотри, вот есть ОП-пост: >Если рассчитываешь получить дельный ответ, сформулируй правильно вопрос: «что я хочу получить, что я для этого делаю, что я вместо этого получаю». Если/когда самостоятельно найдёшь решение — поделись в треде, мы за тебя переживаем.
Ты пока что сюда пришёл как в бложик. Сам придумал проблему, сам решил, сам самоудовлетворился.
>>2932314 Меня бесит useState([...list]) так и надо делать потому что так Аллах велит или можно так не делать? Типа ты не видишь в ...цикл на N элементов? И считаешь что в любом случае всегда надо бездумно это писать? И это конечно же проблема конкретного моего случая, а не то что надо обсуждать в "бложике".
>>2932362 > пиши с примерами > АРРРРРЯЯЯЯЯ НЕТ ВЫ ВРЁТИ, НЕ МОЖЕТ БЫТЬ, ЧТО Я ТАКОЙ ИСКЛЮЧИТЕЛЬНЫЙ Ничего, порридж, дойдёшь до редакса, до иммера, всё будет.
>>2932285 >А если там миллион элементов в массиве И что? Если у тебя такие вопросы возникают - иди смотри как работают JS движки, что бы лишних вопросов не было.
>>2932424 Какой же ты уебон. Как ты умудряешься со всех тейков уцепиться не за ссуть™ - просто фантастика. Копируется РЕФЕРЕНС на объект, читай: ссылка на объект в памяти. Кишочки твоего объекта в массиве не копируются.
Научись сначала делать как все, потом вставляй свои костыли. Или выбери что-то помимо реакта уже сейчас.
>>2932429 Это ты вместо того чтобы сказать суть посылаешь почитать хуй знает че и серишь базвордами про биты. Какая мне нахуй разница какие там биты, чмо тупорылое. ...list - 1 цикл перебора массива. 1 цикл больше чем 0 циклов. 1 цикл менее требователен к ресурсам чем 0 циклов.
Больше пары строк кода в посте или на скриншоте ведут в ад.
Для программирования на HTML https://codesandbox.io
Для Node.js с консолькой https://repl.it/languages/nodejs
Если рассчитываешь получить дельный ответ, сформулируй правильно вопрос: «что я хочу получить, что я для этого делаю, что я вместо этого получаю». Если/когда самостоятельно найдёшь решение — поделись в треде, мы за тебя переживаем.
Документация - https://developer.mozilla.org
Руководство для вката - https://github.com/acilsd/wrk-fet#javascript