Если рассчитываешь получить дельный ответ, сформулируй правильно вопрос: «что я хочу получить, что я для этого делаю, что я вместо этого получаю». Если/когда самостоятельно найдёшь решение — поделись в треде, мы за тебя переживаем.
Позволь мне рассказать историю о зарождении легенды, которая началась 3000 лет назад. В то время я был там - залетный свидетель этого знаменательного события.
В один прекрасный день, один вкатыш задался вопросом, который мучил его уже долгое время - как в одну цифру вставить строку или функцию? Он обращался к совету, но никто не мог ему помочь, потому что по умолчанию, если присвоить цифре какое-то значение, то это значение будет присутствовать у всех цифр.
Собрались различные эксперты и начали обсуждать возможные варианты и способы решения этой проблемы. Но никакое предложение не приносило результатов, и совет стал отчаянно пытаться угодить вкатышу.
И тут, как из ниоткуда, на совет явился древний маг. Все замерли в ожидании, не зная, что ожидать от него. Растерянный совет переглядывался и пошел ко дну в безнадежных попытках решить задачу.
Но древний маг начал писать на черной доске непростительный код, который вызывал у всех присутствующих благоговейный трепет. Это был код, который никто не должен был видеть, и о котором не смели говорить.
Совет объявил, что подобный код никогда ранее не звучал в этом треде и не должен. Вскоре после этого маг покинул помещение, и вкатыша больше никто не видел.
Однако, со временем по всему интернету начали ходить слухи о древнем маге, который иногда посещает треды и карает тех, кто не знает сути, тех, кто не жаждет знания. И так появилась легенда.
Вместо контекста/стейта в Реакте использую экспортированный объект. Ну то есть, просто export {}, а потом, где надо, его импортирую и беру оттуда значения. Так же в объекте есть методы, которыми манипулирую значения. Реактивность мне в этом случае не нужна. Какие подводные?
>>2756609 В моём понимании глобальный объект - это типа реквест манагер, в нём просто определены допустим возможные реквесты и декораторы реквестов, как функции. А синглтоном может быть например тредпул какой нить, или текстур манагер, т. е. что-то что держит хендлы на внешние ресурсы какие нить. Ну может консенсус действительно в том что синглтон это глорифаед глобал обжект, уже извините за мой ингришь
>>2756611 Проёбанный комментарий, но больше инстансов у тебя точно не станет, да. Если речь про мусорный if (this.instance) { this.instance = new ZalupaManager(); } и конструирование в рантайме - то да, простите пожалуйста.
>>2756619 Как верно заметил перфоратор выше, синглтона может не быть до востребования. Обращаешся ты к нему условно через ZalupaManager.instance или ZalupaManager.getInstance(), которые обычно статичные, и того один инстанс на класс.
>>2756626 >больше инстансов у тебя точно не станет, да Если я напишу >const zM = new ZalupaManager(); >export default zM; То иснтансов может быть больше одного? Мне кажется, что ты имеешь в виду export default new class {...}
>>2756626 >Как верно заметил перфоратор выше, синглтона может не быть до востребования. Обращаешся ты к нему условно через ZalupaManager.instance или ZalupaManager.getInstance(), которые обычно статичные, и того один инстанс на класс.
Да, это тоже, короче синглтон это глобальный объект создание которого ты явно испирируешь, один хуй я веб макака и не представляю где такое может пригодиться, разве что гейдев велосипедный
>>2756640 А в том варианте как у меня будет выполнятся больше одного раза что ли? Он в любом случае зарезолвится в {__default: new ZalupaManager}, что в первом, что во втором случае.
>>2756658 Смотри пик 2 пик 4, при обоих вариантах импорта, переменной и явного указания new Class в дефолте - объект сконструируется на импорт один раз. Далее покложится в кэш, последующие импорты будут дёргать инициализированный залупенежер из кэша, без повторных конструирований.
>>2756662 Я тебе об этом и говорю. Ты же изначально АЖ целый коммент поставил, мол создавать инстанс на импорте. Я тебе вопрос задал: что, если создавать инстанс не на импорте? >// create instance on import
Если не дойоб, и реализация синглтона, с созданием инстанса если его нет при обращении, pls refer >>2756626 >Как верно заметил перфоратор выше, синглтона может не быть до востребования. Обращаешся ты к нему условно через ZalupaManager.instance или ZalupaManager.getInstance(), которые обычно статичные, и того один инстанс на класс.
>>2756785 А что не так? Соевые дегенераты насмотрятся ваших ютабов, где говорят что Next.js на пару с реактом теперь бэкенд фреймворки и хуярят свои стартапы. Да там и похуй на самом деле, главное спихнуть первому попавшему покупателю и можно новый стартап пилить.
>>2756793 ВАЙ ДАРАХОЙ, ВОТ ТЕБЕ APP ROUTER, ДЕЛАЙ SELECT НА СЕРВИРИ, ХТМЛ ОТДАВАЙ ЖЫСКРИПТОМ ДОГОНЯЙ ВАЙ ВАЙ, ДАРАХОЙ, А ВОТ ЕЩЁ И ПОСТГРЯ В ОБЛАКЕ ЛЮБИМЫЙ НАШ, НЕ ЗАБУДЬ ПОБЕДИТЬ НА ФУНКЦИИ И ОБЛАЧКО ЗАЛИТЬ
а вообще на собесах гоняют по спецификаций языка? Ну там всякие обычные и экзотические объекты, слоты и проч, какие то хардкорные аспекты? Я не представляю где это знание может пригодиться кроме как если хочешь свой яп запилить.
>>2756801 Я всё жду уже 2 года, как начал менять места, когда начнут что-то спрашивать кроме одной и той же шаблонной хуйни с промисами, зысом, иногда ещё могут и про статические методы промиса спросить, охуеть, не помню даже когда про генераторы последний раз спрашивали, хорошо если не пояснять за хойстинг вары леты консты, пару раз спрашивали про... фриз и сил, без погружения в дескрипторы, а ебать, ФУНКЦИИ ПРОТОТИПА АРРАЙ, НАЗОВИ, ПЕРЕЧИСЛИ. Ну ёбаный стыд. Ну вроде должен был этот этап пройти давно, а в итоге с чего вкатился, к тому через 2 года вернулся. Уровень ёбки иначе не ощущается. Иногда могут задачек разве что подкинуть или ссаный лайвкодинг провести, до которого просят сделать окололиткодную задачку, к которой нет тестов - пиши сам (про это думай сам, в задании не сказано, но ты же хочешь убедиться в работе?). В итоге делаешь ТЕСТ (кек, да, мне не жалко своё время), дальше отсасываешь на лайвкодинге с элементарной хуйнёй из-за невров (чуть не отвалилась трансляция/звук пропал/да хуй его знает, атмосферное давление высокое), потому что толи долго делал задание, толи что-то не понравилось в реализации, толи вилка высокая. На всё отвечаешь из теоретических вопросов - тебе даже в лицо не напишут, почему ты не подошёл.
>>2756821 Ебало моё можете даже имаджинировать, когда интервьювер даёт задачку, делаешь неявные преобразование из-за параолимпийского духа, спрашивает ЧТО ЭТО ЗА ХУЙНЯ И КАК ОНО РАБОТАЕТ...
>>2756821 я вот щас спецификацию ковыряю, раньше мне она чёто сложноватой казалась, щас норм идёт, наверно общей инфы нахватался и теперь технические подробности легче даются. Но бля, я даже не представляю, зачем в теории это знать надо, кроме кабинетной выдрочки на собесах. Но походу никто этого не знает кроме гуру которые разрабатывают движки и фичи языка, ибо просто нинужно.
>>2756829 Ну есть не только фреймворки. Есть всё ещё ванилла. Это либо прикладное применение в ноде, либо условно, решения для браузера. Одно время мониторил, мелькало несколько вакансий на антифродовое решение. Там надо знать как браузер(ы) робят, баги, уязвимости. Или всякие тулзы пилить со знанием devtools протокола.
Скажите мне, нахуя? Ну вот просто нахуя? Вам, блять, так сложно файл.css сделать что ли? Вы ебанутые? Вы нахуя кссесы, блять, тащите в жс? Это что-то на уровне инлайн стилей, ну пиздец.
>>2756884 >так сложно файл.css сделать что ли? Вы ебанутые? Вы нахуя кссесы, блять, тащите в жс? Это что-то на уровне инлайн стилей, ну пиздец. Еще один вкатун порвался от изоляции стилей! Спешите видеть!
>>2756785 А на чём? Фронт в любом случае на жс, мобильный апп для стартапа тоже очень часто на реакт нейтиве делается, бек на ноде тоже очень часто в стартапах в США используют
>>2756918 Хабы больного шизофазией, которого на этом пикабу даже не минуснули. Перечислил буквально всё кроме JS и TS > экспертное мнение по синтаксису жабаскрипта
>>2756924 паттерн матчинг краткий синтаксис для "вернуть копию объекта с одним изменённым свойством", неиронично чтобы конструкция вида a == b == c возвращала true если значения равны попарно (да, я дебил) чтобы последний элемент массива можно было получить без уродливых конструкций switch-case как выражение более приятный и краткий синтаксис для перебора и манипуляции с символами юникода
>>2756952 >a == b == c Я вот сейчас прикинул, а где оно работает так?
>паттерн матчинг Люто двачую, поскорей бы.
>чтобы последний элемент массива можно было получить без уродливых конструкций Буквально array.at(-1), но есть нюанс. Это геттер, чтобы модифицировать элемент придётся всё ещё хуевертить.
>более приятный и краткий синтаксис для перебора и манипуляции с символами юникода 👀
Оркестраторы процессов на месте? Вызываю патченый бинарник курла через spawn для обхода клаудфлера, может есть какие подводные? Потому что пока работает как часы, аж непривычно
>>2756924 когда-то хотелось написать const a, b = func1(), func2(), а так то ли только с варами можно было, то ли вообще нельзя
ещё в котлине прикольное было что иф работает как экспрешшин const a = if ('') {return 0} else if ([]) {return 1} else {return -1} Выглядят получше кажется чем то же самое на тернариках вложженных/let'е с переопределением/switch true
>>2756924 Обсёрваблы хочу. Но оно вообще в stage 1 сдохло. Ну или потоки или сигналы/слоты хотя-бы. Короче что-нибудь чтобы EventEmitter/EventTarget можно было закопать и типизировать события наконец в ТС. Деструкторы, апи чтобы пинать GC. И какого-нибудь сахара для вот этой истории: https://blog.logrocket.com/async-await-is-the-wrong-abstraction/
>>2756952 >краткий синтаксис для "вернуть копию объекта с одним изменённым свойством", structuredClone же завезли. А дальше тыкай уже обычным foo.bar.baz = ...
>>2757024 То ты хуйню какую-то пытаешься сделать, функции не клонируются вообще никак. Могли бы там конечно предусмотреть маппер вместо исключения чтобы я мог обмазаться своей логикой по функциям и дом нодам.
>>2757022 >Они одинаковые же Нет. EventEmitter это нодовское api и он может эмиттить всё что угодно в неограниченном количестве. EventTarget - стандарт и эмитит только инстансы Event через EventTarget.prototype.dispatchEvent
>>2756981 Мне недавно в Зиге понравилось что вообще всё экспрешен (кроме объявлений функций, лол) И всякие break возвращают из цикла какое-то значение например или у return есть типа noreturn, значащий что в этот экспрешен мы не вернёмся, но все равно можно использовать если ты в какой-то момент обнаруживаешь что функция должна вернуть ошибку например.
>>2757122 >Многопоточность В жс уже есть полноценная многопоточность с мьютексами уже неебическое количество времени во всех браузерах и движках, вот только всем на неё похуй ибо задач нет.
>>2757343 Ето пиздец на самом деле, который потенциально мог бы быть решён оптимизирующим компилятором, и не равно тому что он хочет. Лишние аллокации, цикломемо траты.
Когда сохраняешь видос с ютаба можно в диалоговом окне сохранения удалить вот эту часть "y2mate.com -"? Чтоб из темперманки скрипт это делал, или фиг JS пустят такое сделать?
>>2757347 >>2757345 я не знаю, ребят, вы там какой-то хай перфоманс пишите, откуда такая запара по поводу одиночной аллокации в коде, который будет выполнен один раз? Да я и сам такими бреднями, страдал, for-циклы использовал вместо forEach (потом кстати оказалось, что forEach наборот, лучше оптимизирован).
В том же шарпее с LINQ получилось бы гораздо эффективнее. Собственно, как и наваять подобный запрос в SQL. В динамикохуйне на каждый чих аллокации и циклы. А потом у нас страницы не откликаются, жрут по гигу, а программисты макаки - пидоры. В JS за функциональщину надо платить.
forEach - даже в случае закоса под фкнкуионаленько как правило не используют, в пользу for of
>>2757365 >forEach - даже в случае закоса под фкнкуионаленько как правило не используют, в пользу for of Еще один шизофреник. Сегодня в дурке день открытых дверей?
>>2757373 >Я видел такое, что вам, людям, и не снилось... Аллокации и циклы, пылающий от их оптимизации компилятор; закосы под функционаленько, императивную архитектуру... Все эти мгновения затеряются во времени, как слёзы в дожде. Время... умирать
Анансы, а какого ваше отношение в JS/TS девам макакам, в отрыве от фронтальных фреймворков? И ноды. Условно, тулзы какие для бравзера, или что-нибудь подобное.
>>2757618 >девам Тухлодырые не нужны. >в отрыве от фронтальных фреймворков Негативное. Скриптовые языки созданы для максимально быстрого решения задач, а не проведения R&D с высиранием своих новых фреймворков заместо уже существующих.
>>2757628 Нии, речь не о фреймворках. А именно о тулзах. Например вы работаете в компании предоставляющей услуги телефонии. Пилите плагин для бровзера / плагин под стор какой-то CRM. Именно в отрыве от ангуляро свелто реактов с crample литами интегрированными с wasm собранным на флаттере.
>>2757287 >>2757328 worker_threads модуль? Это не такая многопоточность, как в голанге. Нода одно ядро процессора жрёт по дефолту, ограничение оперативной памяти 1Гб по дефолту, тред пул сайз livuv = 4. Это не green threads/lightweight threads/fibers. В голанге просто пишешь go перед функцией и он спокойно наспавнит тебе хоть миллион горутин, у каждой стек сайз всего 2 килобайта изначально, если не ошибаюсь, и обмен сообщениями удобно устроен через каналы.
>>2757646 >Например вы работаете в компании предоставляющей услуги телефонии. Ну и зачем нам пилить свой астериск на жопасрипте? >плагин для бровзера Ничем не отличается от обычного формошлепства. >плагин под стор какой-то CRM. Что это за "плагин под стор"? Вроде нормальные люди называют такие вещи базами данных и не пилят их на жопасрипте по понятным причинам.
>>2757646 >Ну и зачем нам пилить свой астериск на жопасрипте? webrtc, астериски, по возможности, идут нахуй с инфры. Всякие янусы-анусы в качестве сигнальных серверов. Даже если со стороны своих астерисков смотреть своё решение для интеграции в сторонние системы. Шобы не плотить за лицензии. >Ничем не отличается от обычного формошлепства. Пон >Что это за "плагин под стор"? Стор плагинов CRM_NAME, либо браузерный экстеншон.
>>2757659 Так вот и я об этом спрашиваю, насколько зашкварно, если в резюме будет место работы JS макакеном без фрейморвка, после опыта с фреймворками?
>>2757776 >единица нигде не обьявлена на пике буквально 1+, ты жопой смотришь? >как она сохраняется как литерал в коде, очевидно же по скрину >как передается шиз, где тут что передается? Иди галоперидола наверни.
>>2757781 в кате надо посчитать через сколько итераций мы получим палиндром из цифр, если в функцию передать 88 то 0 итераций, если 87, то 87 + 78 = 165 165 + 561 = 726 726 + 627 = 1353 1353 + 3531 = 4884 - palindrome
>>2758087 я где-то год назад верстку заказывал, мне парень с серьезным ебалом все на пуге сделал, лол. адепты всегда найдутся. на том же жиквери и сейчас новые проекты пишут.
Фабрика или класс
Аноним07/07/23 Птн 23:53:23№2758187167
Что лучше использовать, фабрики или классы? Я только вкатываюсь, так что сильно не душните, пожалуйста.
>>2758087 >его труп проплывёт мимо нас как было с Дартом Труп уже уплыл. Его главной фичей было наличие нативных web api. Как только они появились у ноды, дено перестал выделятся чем-либо кроме отсутствия багов.
>>2757935 Это бесполезно и при воркерах и при передаче апи, никакого смысла клонировать их нет Джава и сишарп позволяют клонировать функции прямо как участки памяти и передавать по апи в виде бинарника, жс так не может.
>>2758387 Уже получше, но замыкание это все равно не сохранит. Только чистые функции, и то ограниченно. Придется писать костыль который все зависимости складывает в строку.
>>2758384 >клонировать функции прямо как участки памяти и передавать по апи в виде бинарника Ну допустим, ты склонил функцию/метод и передал его в воркер. Как тогда должноработать замыкание? Сохранять ссылки на оригинал? А если случится race condition?
>>2758543 >никаким целям не служит Буквально одна единственная цель - быстро верстать шаблоны, которые затем подхватит пыхадебил/реактомакака/вьюдодик/ангулярошиз и добавит интерактивности. И он с этой целью справляется очень даже хорошо, в отличии от ванильного HTML и прочих JSX
>>2758547 Имеет смысл только пыходебилу подхватить, потому что смузи фронтенду придётся всю эту каловую массу нативного html /pug говна на компоненты разбить, от этого времени больше тратится.
>>2758755 Чёт я доёба вообще не понимаю. Чья это проблема, пыходебила? Реактмакаки? Они с пропами не разберутся? JSX как-то не так выглядит после генерации HTML?
>>2756924 Рантайм типизация, чтоб ебейшая прям, чтобы чихнуть не мог без типов, каждый пердеж, каждая строчка обмазана типами. Я в рот ебал всё, что не типизировано, просто идите нахуй. Если бы не TS, то уже сменил бы язык наверное. Еще хотелось бы, чтобы рякт был полноценным фреймворком, но ладно там к нему RTK есть более-менее приличный, но все равно все пишут от балды просто как придется, по настроению
>>2758372 Киллерфич ещё хватает: тайпскрипт и фаервол в ноде никогда не появятся скорее всего. Пакетный менеджер хоть и уебанский, но зато полностью децентрализованный, это тоже может ещё выстрелить.
>>2759024 Это N̴̫̬̹̽ů̷̪͓̿̾͂́̆͠m̸̟̩̬̩̣̿͝b̴̛̮̬̝̘̹̂̋̍̀̔é̴̼̯̱̤̭̇̉͘͝r̷̞͓̗̀̉̀.̶̧̈́̀p̸͚̖̺̣͈̠̝̻̓̔r̶̹̭͇̪͗͑̀̔̅͒̅͝o̸̺̱̺͎͆̍́̊̏̈́̾̒ͅt̶̪̪̯͙̀̕̕ô̷̫̬̲̦̭̭̘̆͗̒͐̈̀͆t̴̨͍̖̮̒̃̔͑́͊ỵ̶̢̛̳̳̜̫̀́́̉̒͂p̵̡̖͙̗͉͆̏͛͛̕͘͜ͅe̸̛̺̣͓̞͇̖̓͛͋͗͛̑͜.̴͍̗̬̘͙̱̦͖̾̄͊͂̃̈́̈́͘_̴̛̝̬͙̺̤̫̓̓̄̆̀̋_̷̡͗̄͑̃͝p̷̡̹͖̫̺̪̥̓̊̏̏ṟ̵͎͉̓̌̅͂̌o̴͚͗͛̕̕͠͠t̶̛̜͖̮͛̉̏̈́͘o̷̡̳̓̆̄̌_̴̦̗͎̟̤͙̱̄̌̈̀̚͝_̶̤̠͙̹͓̓̒̑̐͗̓̒ ̶̺̊̐̋̂, зеленый.
>>2759084 Ты из какого треда к нам залетел? Вообще ортогонально посту ответил. ТС есть в дено. Фаервол в нём тоже есть. Пакетного менеджера в дено как раз нет как такового, де факто дено – децентрализированый пакетный менеджер на HTTP стеке.
>>2759260 >Тс легко подключается к ноде Тс не подключается к ноде НИКАК. >>2759331 >ТС есть в дено Покажи, где там ТС. Именно ТС, а не установка tsc в пачке с самим бинарником дено. >Фаервол Значение знаешь?
>децентрализированый >вынуждает хардкодить определенный эндпоинт для установки is-odd И не поспоришь даже.
TS не может быть жсом. Жиес скриптовый язык с реплом. Если сделать его тсом то получится пыха с проверкой типов в рантайме. С TS-ом есть фаза компиляции, а исполнение в динамической среде. Ничего менят не надо, все и так уже оптимизированно по самое небалуйся.
>>2759435 Покажи как ты к ноде тс подключишь, олух. Я прекрасно понимаю, что ты нодой можешь скомпилить тс в жс, но речь идёт именно про подключение к ноде.
>>2759534 Явно. Просадка в производительности будет, или время на первый запуск для транспиляции. Ну и проверки типов в режиме реального времени не будет.
>>2759547 >проверки типов в режиме реального времени Ебанутый проверкатиповшиз, любой интерпретатор с самой слабой типизацией проверяет типы в режиме реального времени.
>>2759547 Проверки типов не будет. Проверкой может заниматься ts, котрый в режиме статического анализатора в иде работает. Транспиляции всего проета не будет. Будет транспиляция во время выполнения. Это просто как бы ты код обернул в дополитеные функции. Для разработки не ощутимо. Зато не нужно компилятором прогонять целиком проект перед запуском тестов хуестов. Для прода уже подрубаешь ts
>>2759576 А зачем? Иде же не нужно выполнять код. Только ast построить чтобы проверить типы А код тестов на ts запускается нодой с бабелем, зато не тормозит как ts-node
>>2756491 (OP) Вот я смотрю видосы про историю реакта и не могу понять, а в чем идея перерендера всего DOM отличается от того, как работал фронтэнд до реакта. Тем более, что они как сами говорят вроде как все не перерисовывают, это некоторая условность. Есть где то более-менее емкое объяснение этого? Можно начиная с того, как в браузерах работает рендеринг DOM. Я из гуи хорошо понимаю только как immediate mode работает, в вузике писал простой 3д рендерер. Почитал бегло ваш гайд для вката, но ничего с акцентом на это не нашел. Мне не для вката правда, просто интересно, так то я дата сатанист.
>>2759683 Долбить DOM API новыми элементами нихуя не дешёво и запускает рефлоу/репенинт. Либо много одинаковых костылей костылить из проекта в проект. > Есть где то более-менее емкое объяснение этого? Можно начиная с того, как в браузерах работает рендеринг DOM. Работа браузера, как парсит страницу, что в какой последовательности натягивает, DOM, CSSOM, reflow, repaint.
Виртуальный дом в реакте должен был решить проблему с дёрганьём дорого браузерного API, подёргать которое в некоторых случаях уже само по себе запускает reflow/repaint, путём создания JS модели дом дерева и сверки состояния приложения с этой моделью, для точечного обновления нод по необходимости
> так то я дата сатанист. Ждём от тебя датаплотов на вью под хардбасс
>>2759683 1) HTML жвижок браузера и js жвижок это независимые вещи 2) DOM это структура внутри HTML движка 3) Жс фрейморки строят структуру данных в JS соответствующую DOM дереву. Это называют Virtual DOM 4) Манипулировать VDOM сильно легче чем DOM 5) Жс фреймворки имеют медтод, который вычисляет разницу между текущим состоянием DOM и результирующим (после изменения состояния модели). С помощью этого метода обновляются только те части DOM, что должны были изменится.
PS Есть фреймворки без VDOM, но они все рано вычисляют, то что должно обновится механизмом changes detection
>>2759689 >>2759693 Так уже намного понятней, спасибо. Так основная разница в том, что в Реакте VDOM есть, а все что до Реакта в основном дергало DOM напрямую?
>>2759697 Можно пихать дополнительные проверки, бить по руками на ревью за вызовы типо element.style.height = "height + 10"px, так как это будет запускать пересчёт каркаса страницы с последующей перекраской. Создавать нужные элементы через document.createElement(...), навешивании всех атрибутов, креплеии влолженных элементов, и только потом крепить в HTML DOM то что получилось. И прочие практики. Как ты мог заметить, уже слишком много ручной еботни, которую удобно завернули в фреймворки.
>>2759683 В ванилла жс есть по сути микропатчинг дома - ручками манипулируем DOM, обновляем только то что надо обновить, но определяем мы это самостоятельно. Это довольно геморно, к тому же есть данные которые остаются неизменными, или имеют различные паттерны изменения, и всё равно иногда приходится для простоты перерисовать весь DOM шаблона или значительную его часть. Реакт и ко. дали нам виртуальную модель DOM, и взяли на себя ответственность определять какая его часть изменилась. Для этого они поддерживают облегчённую виртуальную структуру VDOM, которой по идее быстрее манипулировать. Затем уже появились новые фреймворки которые как прежде микропатчат DOM, но на автомате отслеживают изменения - свелт, солид итд. Они не имеют VDOM, что делает их экономичнее в плане памяти. Почему сразу не сделали так? Хз если честно.
У меня установлены types/node глобально, но TS видит только локальные тайпы из node_modules. Можно как-то сделать, чтобы глобальные видел? (У меня несложный скрипт на Ноде, не хочу для него всякие отдельные package.json/node_modules и т.д.)
>>2759770 >>2759814 Есть только один нюанс, если ты не создаёшь для REPL скрипта package.json - забудь про импорты. Используй cjs require'ы. Если хочешь обработку импортов в скрипте ноды а-ля node zalupa.js - создавай package.json с "type": "module"
Хочу перекатиться на другую работу с повышением зп, но как же лень пробегаться по списку вопросов на собесах, повспоминать, что я там забыл, причем помимо веббекграунда есть еще опыт в 3D дизайне и threejs. На текущей работе могу вообще нихуя не делать весь день, работать по 2-3 часа, писать код на отъебись, но это тоже деградация и скука и хочется больше ДЕНЯК. Как взять себя за жеппу и перекатиться?
>>2759937 крепись, братан, сам в похожей ситуации, на текущей РАБотке деградирую уже много месяцев, новый проект не дают, а чтобы перекатиться нужно себя поувереннее в плане базы и технологий чувствовать.
>>2760004 Не знаю братан, у меня нода стоит через nvm, типы глобально закидывать - моветон. При необходимости добавляют в devDependency. В VS Code уже есть поддержка TS из коробки. ~/.nvm/versions/node/v20.0.0/lib/node_modules$ ls corepack eslint npm prettier serve
>Хотя импорты без тайпскрипта нормально работают. Запусти.
Если я хочу вкатится в JS,я обязан знать HTML+CSS? и если да,то на каком уровне(из опыта - делал всратые сайты в детстве), сейчас немного знаю плюсы(с уника).
>>2760030 Ищи стажировки. Ищи компании которые имеют инфру на ноде, и у которых есть стажировки. На ХХ этих стажировок не будет. Разрабатывай анус литкодом. Он тебе понадобится на 146%. За остальными требованиями... Ну это же жыэс лол, сайтики делоть, базовые знания HTML + CSS ещё никому не вредили.
>>2760015 Ничего не ломается. Все работает. Виндовслахта +15. Не раскачиваем лодку.
У нас весь софт рабочий. Есть все аналоги. Игоры не нужны. Да и все игоры уже портируют.
Если что-то сломалось сами виноваты. Линукс не причем. Читайте документацию чтобы чинить свои ошибки. Чините Линукс который вы испортили своими руками.
>>2760051 >Ничего не ломается. Если не трогать >Все работает. Возможно. >Виндовслахта +15. Windows 11 Open Beta Test >Не раскачиваем лодку. Я - Титаник
>У нас весь софт рабочий. Ловишь документ, который анально костылился таким образом, что нормально открывается и печатается только дестопным офисом под виндой, не отображается корректно даже в веб версии, не говоря про аналогичные эксперименты под никсами и либрой >Есть все аналоги. Мы всё ещё про анальных адептов, или тех кто понимает, для чего ему ОС? >Игоры не нужны. Не игорал больше двух лет по причине ноугеймз, буду ждать переиздание скайрима >Да и все игоры уже портируют. Каждый раз проигрываю с мантр любителей поебаться с вайном, протоном и лутрисом. Нужно только конфиг покрутить, чтобы оптимизировать фпсы и получить на 10% фпс меньше.
>Если что-то сломалось сами виноваты. Да, скорее всего ето так. * install -y xD >Линукс не причем. xD >Читайте документацию чтобы чинить свои ошибки. Хорошо, когда она хотя бы есть >Чините Линукс который вы испортили своими руками. Как же бывает поздно, когда уже поздно. Но лучше крутить какой-нибудь админ гайд.
>>2760051 Линукс != Я. Так что мимо. Сижу работаю на линухе 15 лет. Пережил всякое говно, вроде переезда на системд. Зато я знаю интрумент, а не визжу что нет автоматического подтирателя задницы.
>>2760078 Да. Все мы ходим вокруг да около одной идеи длительное время, пока полностью не разочаруемся. Так устроен мозг. Пока есть доминантный очаг возбуждения, ты пишешь пет. Потом возбуждение угасает, ты бросаешь. Но опыт остается. В следующий раз когда мозг получит дозу нейромедиаторов, он зажгется примерно в той же области коры.
>>2756491 (OP) решил вкатится, сижу третий день смотрю гайды и словил тилта с этим ксс. вчера полчаса не мог понять почему стили не применяются. оказалось создал лист ксс в другой папке и ссылка не работала. потом два гайда по позиционированию посмотрел все равно не получается сделать то что я хочу. в инете много инфы по элементам но мизерно мало по атрибутам. знания какие то поверхностные. японимаю что еслия упорюсь и буду сидетья рано или поздно пойму как пользоваться блочной системой, но какой какой ценой, энергии я трачу горазо больше чем даже в алгебре и английском где у меня уже какие то скиллы имеются. потом сама работа фронэндера в 2к23 какое то говно. желающих ворваться туда толпы, стажеров толпы. вакансии на фронтэнд смотрят по 20 дебилов одновременно. я не понимаю нахуя я туда лезу. сама работа фронтэндера это мрак. предстоит только слегка что то там чинить редактировать. ты не дизайнер а правщик готового. ты ничего не создаешь. почему я обязательно должен пройти через фронэнд чистилище чтобы стать программисстом? наконец пока я сижу дрочу разметочный код который даже не программирование. есть нейросети которые уже пишут код. и за время которое я убью на вкатывание они уже проникнут в каждую компанию сокращая штат таких дебилов как я. меня постоянно тянут на дно мысли что надо учиться упарвлять нейросетями быстрей и полезней чем та хуйня что дрочу я. но браться за понимание нейросетей мне совершенно точно рано. я лох в айти. короче я хуй знает кому я это пишу, просто хотел выговорится.
>>2756491 (OP) Пацаны, заебался постигать азы питона, принимайте пополнение. Сейчас поковыряю штиэмейли с жабаскриптом, потом уже вернусь к петухону, от лёгкого к сложному, так сказать.
>>2760383 всё таки работка за зарплату развращает человека. Я могу пинать хуи сколько угодно, симулировать бурную деятельность, закрывать по 2 таски в день, и мне всё равно будут платить. А хули нам работягам...
>>2760386 >развращает человека Так причем тут человек, если сама суть наменого труда не очень хорошо ложится на умственный труд? По хорошему программист должен получать какой-то небольшой постоянный уровень за то, что находится онлайн в течении дня (что бы в случае критических инцидентов быстро починить), а остальное - за закрытие тикетов в жире в размере N рублей * количество стори поинтов.
>>2760651 Практически каждая вакансия, где фуллстек, аля React+nodejs/php/c#/java - на выходе меньше чем за чистый фронт на React без этой вот гомоебли. Думойте.
>>2760655 На нодежс вообще бывают какие-нить сложные задачи? В моём понимании если за фулстяк дают меньше чем за чистый рякт это значит что работа сама по себе дновая, выгружать жсоны по кд и править вёрстку
>>2760684 > если за фулстяк дают меньше чем за чистый рякт это значит что работа сама по себе дновая То это значит, что микрокабанчику нужен мастер на все руки и он оптимизирует расходы.
>>2760700 Спасибо инфоцыганам и воннаби миддлам не джуниорам, которые задемпинговали всё что можно и почти уничтожили джунов как лычку на рынке вакансий. Теперь миддл вместо джуна. С той разницей, что миддл знает свою цену на рынке и в его вакансии на том же ХХ вилки не будет. Про анальные чаты и прочие сурсы я не говорю сейчас. Кабан кабаныч выслушивая в очередной раз от хрюши про 600 откликов за 2 дня знает что делает, скручивая зарплатную вилку куда ему надо. И с количеством желающих остаётся только запастись терпением, нужным количеством роллов монетки и искать самого шарящего за миску риса. Как и какие-то уебоны, которые на ХХ развесили объявлений на фронта по разным регионам за 70-140 лол. > strong junior $350-1200 1200 ждуну, да норм. Не вижу проблемы. В моём бадишопе миддлам давали меньше, перераспределяя оплату их труда на забенченных каличей и интерн/джунов, готовящихся к залёту. У таких ждунов стартовая была как раз в районе 30к. Но речь не уровень продуктовых компаний/нормальных галер
>>2760735 >>2760745 Но это всё лирика, лучше объясните мне, я могу как-то достать референс лексического контекста, чтобы закостылить свой bind/call/apply без использования нативных bind/call/apply? Подразумевая, что на нерасширяемый объект я не могу повесить новое поле и вызвать функцию с него? Потому что тот же самый bind/call/apply кладёт хуй даже на зафриженный объект, и позволяет явную передачу контекста.
>>2760988 Новый перспективный веб-фреймворк Cample.js. Реактивность без VDOM
На сегодняшний момент (версия 3.0.1), фреймворк является активно поддерживаемым в разработке нового функционала. Есть поддержка работы с данными, которые благодаря реактивности без виртуального DOM отображаются крайне быстро:
Тесты быстродействия фреймворка(js-framework-benchmark) Тесты быстродействия фреймворка (js-framework-benchmark) Это не самый быстрый результат из всех, которые существуют на данный момент среди фреймворков. Но, поэтому речь идёт о перспективности.
К примеру, у Vue скорость создания 1000 строк составляет 42 секунды, а у Svelte 48.4 секунды (на момент написания статьи).
Конечно, эти фреймворки во много раз превосходят Cample.js по функционалу и сравнение недостаточно полное. Но, в данном сравнении берётся лишь такой пункт как скорость.
Сама разработка фреймворка началась около года назад. Тогда, была выбрана модель создания компонентов через экземпляры классов. То-есть, компоненты создаются следующим путём:
const component = new Component("new-component", `<div class="component"> {{component_text}} </div>`) На мой взгляд, данная структура является удобной и достаточно практичной. Чтобы не писать постоянно большие конструкции из new Component, была введена также функция, с которой компоненты обрабатываются таким-же образом, но при этом сам код существенно уменьшается.
const newComponent = component("new-component", `<div class="component"> {{component_text}} </div>`) Также, была выбрана модель обработки данных через функцию, возвращающую объект с данными. Сами данные отображаются в HTML template благодаря интерполяции строк.
const newComponent = component("new-component", `<div class="component"> {{component_text}} </div>`), { data: () => { return { component_text: "Text", }; }, }) Эта конструкция позволяет обрабатывать данные гораздо лучше, чем если бы просто передавался объект.
Также, для изменения данных используются функции, которые передаются через свойство script. Сами функции объявляются в объекте functions.
const newComponent = component("new-component", `<div class="component" id="el"> {{component_text}} </div>`), { data: () => { return { component_text: "Text", }; }, script: [ ({ elements, functions }) => { const setText = (e) => { functions?.setText((data) => { return "NewText"; }); }; elements?.el?.addEventListener("click", setText); }, { start: "afterLoad", el: [{ el: "#el" }], }, ], functions: { setText: "component_text", }, }) Также, у фреймворка присутствует объект each, который повторяет HTML разметку в зависимости от данных.
const newEach = each("new-each", ()=>["val"], "<div>{{data}}</div>", { valueName:"data" } ); Все эти компоненты обрабатываются через экземпляр объекта Cample следующим способом.
cample("#example", { trimHTML: true, }).render( ` <div class="example_page"> {{newComponent}} {{newEach}} </div> `, { newComponent, newEach } ); Конечно, большинство функций, которые необходимы сегодня для создания prod сайта пока не поддерживаются, но работа над фреймворком идёт.
Фреймворк также довольно неплох тем, что основан на реактивности без виртуального DOM, которая в теории может быть гораздо быстрее, чем реализация через виртуальный DOM.
Если у вас есть мнение по данному фреймворку, будет очень интересно почитать о нём в комментариях! Спасибо большое за прочтение статьи.
>>2761051 Чел, мне вообще похуй на чем писать. На чем будут больше платить, и будет больше возможностей для работы, на том и буду писать, сечешь? Хоть на jQuery, хоть на 1C, хоть на бересте блядь. Я срал на весь этот кодинг, мне нужны только деньги
>>2756614 интересно почему ангуляр для чедов, если как раз это фреймворк который диктует больше, чем гибкий реакт, который мы можем как истинные чеды вертеть на хую
>>2761051 Вот так я себе и представляю каждый раз критиков реакта, просто лоботомиты с параличем мозга, которые взамен популярного, адекватного, с большим сообществом и кодовой базой реакта приносят какое-то говно на лопате, причем лопата перемотана синей изолентой, а говно, если уж совсем сильно пахнет, предлагают завернуть в платочек. Просто ссал и срал вам на головы, ебанные дегенераты, идите в пизду
>>2761161 Двачую. В реакт в 19 или 20 версии добавят компилятор, которые будет автоматически добавлять useCallback, useMemo и memo, тогда реакт будет ебать по перформансу всех
>>2761051 Ну и нахуй это говно нужно когда для вебкомпонентов есть няшный, задокументированный, с большим сообществом, легко интегрируем с реактом, разрабатываемый большой корпорацией lit?
>>2761174 Ну это в теории. Я больше спросил какие задачи реально на работах дают, если задачи того же порядка что обычно на "труъ" языках типа сисярпе, жавы, го (ёба микросервисы, гигамегасложная и важная логика типа финтеха, крипты итд итд) то пиздец конечно.
>>2761158 потому что база - она одна. база - едина.
каждый раз когда базовичок пишет код, из под его рук текут реки базового кода, он переглядывается с другим ангуляргосподином и между ними невидимая базовая связь, они пишут один код, в одном стиле и даже если они наймут нового базовичка, он сразу пойме: "Это база", и начнет писать код пропитанной базой код.
в то же время: сойбои и омежки "вертят" код как им вздумается, а потом код вертит ими. а новый омежка залетев в команду будет пукать и хрюкать спрашивая "а как оно работает", "а как оно влияет".
>>2761200 У меня возникла спонтанная мысль на фоне зарплатных обсуждений. Хочу биндить контекст без экзотических объектов из нативных бинд/калаплаев, даже к нерасширяемым объектам, как бинд. Меня посетила лишь одна гениальная идея, но попробовать получится позже.
>>2761158 Ангуляр является одним из самых популярных и мощных фреймворков для разработки веб-приложений. Он предоставляет полный набор инструментов и функциональности для создания сложных и масштабируемых приложений. Вот несколько причин, почему ангуляр считается базой:
1. Мощная архитектура: Ангуляр использует компонентную архитектуру, которая позволяет разделить приложение на независимые компоненты. Это упрощает разработку, тестирование и поддержку кода.
2. Обширная документация: Ангуляр имеет обширную документацию и активное сообщество разработчиков. Это позволяет быстро находить ответы на вопросы и решать проблемы.
3. Инструменты разработки: Ангуляр поставляется с мощными инструментами разработки, такими как Angular CLI, который упрощает создание проектов, генерацию компонентов и управление зависимостями.
4. Поддержка от Google: Ангуляр разрабатывается и поддерживается командой Google. Это гарантирует стабильность, безопасность и постоянное развитие фреймворка.
Теперь давайте поговорим о React и Vue. Хотя это также популярные фреймворки, у них есть свои особенности, которые могут сделать их менее подходящими для разработчиков.
1. Обучение и опыт: Если команда разработчиков уже имеет опыт работы с ангуляром, им может быть проще продолжить использовать его, чем изучать новый фреймворк.
2. Масштабируемость и сложность: Ангуляр предлагает более строгую структуру и больше инструментов для управления сложными проектами. Если проект требует высокой масштабируемости или имеет сложные требования, ангуляр может быть более подходящим выбором.
3. Компания и сообщество: Некоторые компании могут предпочитать использовать фреймворк, который имеет большую поддержку от крупных компаний, таких как Google. Это может дать им больше уверенности в стабильности и будущем развитии фреймворка.
>>2761223 Да я в курсе, видел в исходниках. Но факт того, что они из обещанного еще для 17 ряхта не риализовали ровным счетом ничего (разве что suspense) отрицать нельзя.
>>2761231 вот да, они же там какой-то офскрин рендеринг ещё обещали, батчинг хуятчинг, теперь вообще ёба конпелятор обещают. Пиздеть умеют короче. Но где это всё? Ещё года 2 а то и 3 выкатывать будут
А кто нить использовал все эти продвинутые фишки жс вроде дескрипторов свойств, Object.freeze, seal, тот же Proxy и прочее? От меня ожидается что я это всё знаю, но где я могу это всё применять, если я не разрабатываю свои библиотеки?
>>2761289 Люди перестали изучать возможности, а учат ограничения. Почти все программисты современности обладают магическим мышлением и мало того, что понятия не имею как устроены вещи и инструменты которыми они пользуются. Они даже не интересуются этим.
Вместо того, чтобы изучить феномен графитации и законов по которым она работает, люди пытаются запоминать список предметов, которые точно упадут на землю, если их подросить вверх.
То же самое в программирование. То же самое в жс. То же самое в любом языке или сфере.
Может кто-то даже наконец поймет, что в жс нет никаких переменных, и на самом деле все они - это свойства объектов с условным классом Scope. И что эти объект выстроены в цепочку наслеования. И внезапно заметит, что с подобным пониманием у него больше не возникнет сложности с пониманием того, ка кработают контексты вызовв в жс, как работает ранее статическое и позднее динамическое связывание.
Ну, а кто-то быть может погрузиться еще глубже и узнает о вещах, вроде того, что код some(123) = 456
валидный жс-код, и почему именно.
Наконец, когда хоть кто-то, кого мои увлекательные примеры нестандартных приемов заинтересовали, перестанет заниматься тупым заучиванием правил, а перейдет к изучению принципов из которых эти правила можно вывести - мир станет лучше.
А в реальной работе, о которой ты говоришь во всяком случае, это не применяется в том виде, в которм ты может быть подразумеваешь. Ты не встретишь чтобы кто-то расширял проксей примитив в продакшн корпоративном коде. Но можешь встретить чтобы это было использовано в тестировании. А понимание принципов того, почему это работает, может понадобится например для написания нативных модулей для движков, биндингов к чему-лио и пробросом этого в жс рантаймы.
Ты должен обладать пытливым умом, любопытством и эрудицей. А не стремлением к тому, чтобы вписать себе резюме строчку знания определенной технологии, которую ты на самом деле не знаешь.
Либо ты любишь свое дело. Либо ты будешь выебан по самые гланды, выгоришь и будешь страдать, прозябая в невежестве, так никогда и не поняв, почему у тебя не получается стать мастером своего дела.
>>2761295 Я знаю это в теории, на собесе могу пересказать как ёбаный студент наизусть. Нюанс в том что я не работал с этой хренью ни разу, за пределами обучения.
>>2761293 >Scope Откуда эта хрень вообще взялась? В спецификации не нашёл никакого Scope, Scope Chaining и подобной мути. Зато в хроме через console.dir для функции можно вывести какой-то [[Scopes]] . Это чё такое?
>>2761305 Посмотри, банально, хотя бы что есть. Лучше забыть как оно работает/что точно делает и что принимает, чем не знать, что такой функционал вообще есть, а потом экстренно покидать корабль. Что-то полезное, на твой взгляд, можно вообще выписать, чтобы зафиксировать в памяти. Ещё лучше - попракать. Если область применения нужна, сейчас вообще проблем нет - можно спросить гугл или гопоту. Вторая даже шаблонный пример накинет защеку. Хоть на это её хватает.
>>2761315 >>2761315 В тексте выражается мнение, что в JavaScript не существует переменных, а все переменные на самом деле являются свойствами объектов с условным классом Scope. Также указывается, что эти объекты строятся в цепочку наследования.
Далее утверждается, что если человек осознает это понимание, то ему будет легче понять, как работают контексты вызова в JavaScript, а также статическое и динамическое связывание.
Это высказывание отражает особенности работы JavaScript и его концепцию области видимости (scope). В JavaScript переменные создаются с помощью ключевого слова var или let и являются свойствами объекта с определенной областью видимости. Область видимости может быть глобальной или локальной, и переменные могут быть доступны только внутри своей области видимости.
Также в JavaScript существует механизм цепочки областей видимости, который называется цепочкой областей видимости (scope chain). При поиске значения переменной JavaScript сначала ищет ее в текущей области видимости, а затем во внешних областях видимости по цепочке.
Контекст вызова в JavaScript определяет значение ключевого слова this внутри функции. Контекст вызова может быть установлен явно с помощью методов call(), apply() или bind(), или он может быть определен неявно в зависимости от контекста вызова функции.
Статическое связывание в JavaScript означает, что связывание переменных с их значениями происходит во время компиляции программы. Динамическое связывание, с другой стороны, означает, что связывание переменных происходит во время выполнения программы.
Понимание этих концепций помогает разработчикам лучше понять, как работает JavaScript и как использовать его возможности для разработки приложений.
>>2761346 При использовании чата гопоты интернет может стать менее приятным и безопасным местом. Чаты гопоты могут быть заполнены оскорблениями, нецензурной лексикой и негативным поведением. Это может создавать неприятную атмосферу и приводить к конфликтам между пользователями. К счастью, существуют другие платформы и сообщества, где люди могут общаться более вежливо и конструктивно.
Сап, двач. Помоги мне понять реакт ибо я заебался. Работал я работу на крупном энтерпрайзе с кучей легаси на knockout.js и вот меня в жопу ужалило выучить что-то новое. Выбор пал на реакт, почитал, пописал, сделал на нем даже один маленький проектик, но в процессе изучения меня выморозило по полной Практика на нем для меня похожа на старую игру и вылезающими из дырок сусликов и молотком где ты забиваешь одного суслика, а из другой дырки появляется новый Для примера могу привести задачу, очень простую, нужно сделать список с пагинацией, фильтрами и чтением/записью query string - а для того чтобы манагеры могли удобно копипастить друг другу ссылки Список я сделал, пагинацию прикрутил, пробросил api, но с пробросом параметров в строку запроса я поел говна В императивном нокауте подобная фигня решается на раз - два, при инициализации компонента ты читаешь строку, парсишь ее, забрасываешь значения в обсервабл откуда их подхватывают поля формы, а при изменении этих полей берешь и подставляешь строку в зад, как это делать с реактом я так до сих пор не могу понять Окей, подзадача 1 - вытащить парамы и засунуть их в стейт, отвечающий за значение инпутов фильтров. Казалось бы официальная дока говорит нам что нужно вызывть useEffect с пустым массивом зависимостей и тогда это отработает только один раз при создании компонента как мне и нужно, но вот проблема, если сделать так то линтер начинает ругаться на то что отсутствует зависимость от searchParams из react-router-dom, который я использую для получения параметров. Хорошо, а как тогда? Я не хочу чтобы состояние строки отслеживалось в процессе жизни компонента, но если я засуну searchParams в зависимости то произойдет именно это. Ладно решил я, хочет линтер зависимость пока поставлю, даст бог не полезет боль Но боль полезла и полезла она при обратной передаче параметров в строку. Строка ставится через тот же useSearchParams, useEffect отслеживает изменение стейта и передает этот стейт в строку поиска. Как только я закодил эту часть я получил циркулярку выевшую всю память выделенную под вкладку. Я понял механизм, изменение читает юзэффект из п.1, обновляет стейт, юзэффект стейта обновляет строку, изменение читает юзэффект из п.1 и так по новой, но ссссуууука Где я не догоняю и как сделать правильно? Попробовал переделать тот же функционал на ангуляре с внятными классами и жизненным циклом компонента - управился за пол часа, а с реактом я бьюсь как обезьяны держащая пучок проводов и не понимающая в какую дырку их воткнуть Проблему можно даже обобщить, потому что я не в первый раз сталкиваюсь с тем, что мне нужно что-бы в useEffect что-то делалось с чем-то, но я блядь не хочу что-бы это "чем-то" отслеживалось в реалтайме. Как такое решается? Или это тот случай когда нужно использовать классовые компоненты без ебли с useWhatever и всем вот этим реактивом? Как в общем случае решаются подобные проблемы? Есть конечно всякие хаки типа объявить какой нибудь useRef с флагом и взводить его при первом проходе, но неужели это подход самого популярного фреймворка в вебе?) Я как будто что-то концептуально не догоняю и бьюсь об стену, не хочется дропать и уходить в тот же ангуляр, мне очень нравится богатый выбор либ под реакт и синтаксис jsx, но мне вот просто некомфортно постоянно продираться через зависимости переменных друг от друга и неявные вызовы коллбэков, а главное от ощущения что я бы тот же функционал сделал на порядок быстрее и качественнее если бы мне дали нормальные классы с нормальными методами и нормальным жизненным циклом компонента. Что рекомендуете почитать/поделать? Хочется втянуться, но пока не получается, и это вызывает подобные крики души PS: знаю про классовый подход в реакте и мне понравилось писать на классах, но почему-то все знакомые фронты говорят что классы фу и устаревший шлак, надо обязательно писать на функциональных
>>2761551 > пробросом параметров в строку запроса я поел говна Используй готовый роутер, для вката в реактодебилы пойдет. Дальше свой велосипед уже сможешь написать. >useEffect отслеживает изменение стейта и передает этот стейт в строку поиска. В чем траблс просто изменение строки поиска сразу писать в урл? В компоненте где инпутЖ <input onChange={e => setSearchParams((old) => ({...old, query: e.currentTarget.value}))} /> Потом компонент, где у тебя запрашиваются данные ты как раз и делаешь: useEffect(()=>getData(seachParams), [searchParams]) Получается, что при любом изменении search параметров у тебя будет сделан новый запрос. На будущее сможешь прикрутить дебаунс еще.
>>2761516 Не много, но не слишком мало. Ниже среднего. На западе вот побольше. А так всё равно джава и сишарп популярнее для бекенда. Но вообще зачем смотреть вакансии в какой-то мухосрани, когда можно искать удалёнку по всей РФ + Беларуси и Казахстану. Мне как нодобекендеру вакансий всегда хватало, в РФ достаточно крупных компаний пишут бекенд на ноде.
>>2761551 В роутере есть хук useSearchParams, он считывает квери и позволяет манипулировать. Если после первого рендера нужно ещё дополнительно изменить, то вместо нового значения ты передаёшь функцию, она принимает старое значение и возвращает новое. Так не будет никакой зависимости в эффекте и соотв. ререндера. Но вообще эта тема с эффектами и зависимостями очень геморная, настолько что есть библиотеки с эффектами типа useUpdateEffect (эффект только при обновлении указанных зависимостей, но не при первом рендере) , useMount (при первом рендере) и т. д. специально чтобы заткнуть статический анализ.
Ещё иногда пользуются эффектами как обзёрверами с массивом зависимостей-обзёрваблов, имея в виду более гранулярную реакцию не на каждое изменение, а в произвольный момент. Потом городят доп. условия чтобы отфильтровать лишние срабатывания эффекта. Вообще какого хрена в реакте нет полноценных обзрваблов?
>>2761587 >есть библиотеки с эффектами типа useUpdateEffect (эффект только при обновлении указанных зависимостей, но не при первом рендере) , useMount (при первом рендере) и т. д. специально чтобы заткнуть статический анализ Ох ебать фронтомакаки тупые... Вместо одного коммента eslint-ignore готовы накачать ебейшее количество либ...
>>2761589 Ну бля один хуй шо то шо это хуйня, предупреждения они же не просто так, просто трушная семантика эффектов, как её задумывали не ложится на многие кейсы, и приходится такие костыли городить.
>>2761587 >что есть библиотеки с эффектами типа useUpdateEffect (эффект только при обновлении указанных зависимостей, но не при первом рендере) , useMount (при первом рендере) и т. д. специально чтобы заткнуть статический анализ. ёбаный стыд
>>2761592 >>2761591 Один вообще делается пустым массивом зависимостей с через useLayoutEffect, в другой ещё нужно положить реф, чтобы на первый рендер не сработал. Второй можно просто вынести отдельно, если надо. Зачем что-то тащить ради 5 строк кода?
>>2761591 Пример: сервис, полученный из di контейнера, загружает данные. По идее в зависимостях эффекта, который загружает данные мы должны добавить ссылку на сервис. А если например сервис изменится, нам что, заново загружать данные? Скорее всего нет, поэтому мы либо ебём статический анализ в сраку, либо полагаемся на то что сервис не изменится, либо же в эффекте раньше выходим из функции по условию. Все три варианта говно так или иначе.
>>2761594 Чел, поинт не в том что это обязательно из библиотеки тащить. Это 3 строчки буквально, понятно что только ради них библиотеку не качают. В довесок там ещё дохрена полезных штук. Мой поинт изначально был в том что эффекты часто хакают и костылят для нужного поведения.
>>2761600 Ну саспенс и абстракции вроде react query не сразу появились, долгое время нормой было в эффектах делать запросы, да и щас тоже так делают. И для такого рода хрени эффекты не подходят и наверно даже не задумывались.
>>2761605 >долгое время нормой было в эффектах делать запросы Никогда это не было нормой. Разве что в помойных галерах, которые к битриксу прикручивают реакт. >не сразу появились Уже 3 года как. >react query Это тут причем?
>>2761834 да это внатуре тип людей которых говнокурсы принимают и штопают из них хуй пойми кого. Вчерашние петровичи-водоносы, физруки, выпускники дальневосточного горного университета кафедры узбекских песен и плясок и тд
>>2761851 Нет, это ты суешь везде SSR, я тебе конкретно говорю, что вот у меня есть веб app, который я хочу чтобы загрузился и работал на клиенте. Мне не нужна там ни индексация ни SEO, ни семантика. При необходимости просто докидываю данные. Проблемы?
>>2761855 Я тебе уже сказал неоднократно: высокая производительность, аксессабилити, семантика нужна ВСЕМ. То, что её много где нет значит только то, что приоритет реализации вышеуказанных фич ниже других задач.
>>2761825 Я для того и спросил совета, чтобы мне ответили хотя бы в двух словах что не так, но ты видимо тут сидишь ради простого срача. Потому пошел нахуй, пес, не пиши мне больше :)
>>2761860 Да куда блядь там твой гибридный SSR всем нужен, который по сети гоняет не только данные, но и разметку с компонентами? Я не говорю даже, про layout, который останется, хорошо. Часть страницы тянется целиком. Мне нужны бесшовные переходы без подгрузок в любой раздел, единственное что допускается - загрузка данных. И даже не как это сделано в next с его линками, когда он начинает фетчить контент ссылки на hover.
>>2761852 Забей на шизика, сср это кринж для всяких дешбордов, при желании можно прикрутить но точно не нужно. У людей вкладка может не закрываться неделями, а мы тут дрочимся ради первого запроса. Графики хуй ты на сервере отрендеришь если не захардкоженная ширина, остаются только таблицы и формы. Те самые формы, в которые можно начать писать а потом при гидрации потерять весь инпут. У тебя может быть ебанутый лейаут, который зависит от дименшенов, да что угодно. Вопрос ради чего это всё?
>>2761860 >высокая производительность Ты же в курсе что нода может в строку дольше рендерить чем клиент получит чанк от статического сервера? Или мы про визуальную производительность?
>>2761870 >Мне нужны бесшовные переходы без подгрузок в любой раздел, единственное что допускается - загрузка данных. Ну нужны, как это с SSR связано? >>2761872 >Ты же в курсе что нода может в строку дольше рендерить чем клиент получит чанк от статического сервера? Или мы про визуальную производительность? А то, что нода уже с мезозоя как раз чанками рендерит ты не в курсе? >А причем тут SSR? Как пример привел
>>2761954 Next это и есть голый реакт с небольшими доплнениями в виде собственного конфига под вебпак и парочкой компонентов. Если ты хорошо знаешь реакт, то вкат в некст у тебя займет всего пару дней.
>>2761979 Да. Не забывай еще что в первому случае на твоем пике на старнцие нет нихуя кроме статического контента, а во втором у тебя полноценное приложение с интерактивностью и анальными зондами
>>2761979 На каждом проекте свои требования по метрикам. Будет ли это страничка банка, где лютый дроч на SEO/accessibility и микро-макро оптимизации, или увешанный намертво дешбордами личный кабинет, хуйни_нейм, где важно сделать быстрые переходы между разделами с минимальным обменом данных после после загрузки приложения - зависит от целей. Можно отдать статику (SSG)/срендерить страничку на лету (классический SSR)/отдать статику HTML+CSS для первого рендера ебаному роботу и потом гидрировать (гибридный SSR - отдать статику, + гидрация для получения интерактивной страницы как в CSR). У каждого подхода будет переклон в ту или иную метрику web vitals. Третий подход, гибридный - попытка взять лучшее из обоих миров. За это, с тем же next'ом, ты платишь рантаймом, который занимается этой хуйнёй с менеджментом что грузить за тебя.
>>2761983 У этого представление об SSR как о гибридном SSR состоящего из отдачи спрекомпиленной статики для быстрого TTFB и первичного рендера + последующая гидрация
>>2761984 > кококодерастам много платят > КОКО НАШИ WPФОРМОЧКИ НЕ РАБОТАЮТ НА ВИНДЕ, НАШЕ QT ОТВАЛИЛОСЬ НА НИКСАХ, НАШЕ ЧТО-ТО НА МАКОСИ > КОКО НАТИВЩИКИ АНДРОЙДЩИКИ > КОКО НАТИВЩИКИ ГЕЙОСНИКИ > КОКО ВЕБ ОТДЕЛЬНО @ в продукте каждой команды свои уникальные баги
>>2761995 Кабанчики хотят залезть в трусы своим клиетам, поэтому от нативных мобилых приложений ты никуда не денешься. Есть промежуточный вариант. Сделать нативное приложение под мобилку, но внутри вебвью отбражать сайт на реакте.
>>2762009 Шоб не ебать мозги реактнативом. Большинство задач сделают фронты и беки, а уже меньшее количество задач можно на фрилансе нанять макаку по мобилкам. Экономия.
Пограмеры, такая задача есть, выгружать из вайлдберриз отчеты по апи в гугл таблицы, есть у кого готовый код или таблица? Дальше уже сам пошаманю, просто с нуля написать не хватит знаний
>>2762043 К сожалению, я не могу предоставить вам готовый код или таблицу для выгрузки отчетов из wld в Google Таблицы через API. Однако, я могу поделиться общим подходом к этой задаче.
1. Начните с создания проекта в Google Cloud Console и включите для него API Google Sheets. 2. Создайте учетные данные для доступа к API Google Sheets и скачайте файл JSON с ключами доступа. 3. Установите необходимые библиотеки Python, такие как google-auth, google-auth-oauthlib и google-auth-httplib2. 4. Используйте библиотеку requests или аналогичные для выполнения запросов к API wld и получения отчетов. 5. Используйте библиотеку gspread для работы с Google Таблицами через API. 6. Авторизуйтесь с помощью учетных данных Google Sheets и откройте нужную таблицу. 7. Прочитайте данные из отчета wld и запишите их в таблицу Google Sheets.
Вот пример кода на Python, который может помочь вам начать:
python import requests import gspread from google.oauth2.service_account import Credentials
# Авторизация в Google Sheets credentials = Credentials.from_service_account_file('path/to/credentials.json') client = gspread.authorize(credentials) spreadsheet = client.open('Название таблицы')
# Запись данных в Google Sheets worksheet = spreadsheet.sheet1 worksheet.clear() worksheet.append_rows(report_data)
Обратите внимание, что вам нужно будет заменить 'path/to/credentials.json' на путь к вашему файлу JSON с ключами доступа, а 'Название таблицы' на название вашей таблицы Google Sheets.
Это только базовый пример, и вам может потребоваться настроить код в соответствии с требованиями wld API и вашими потребностями.
>>2762073 ну так от трех лет же. я, псевдомидл тоже попал на вакуху, на год больше требующую. да и не все 200к получают.
вон, аноны из б как-то делись зпхами, были мидлы с 100к, даже пруфали налоги. сидит себе анон уже пятый год с одной зпхой и в хуй не дует. ему в кайф. не все жаждут быть наносеками.
>>2762081 Да, в OpenAI GPT-3 было встроено API для взаимодействия с чат-ботами. Вы можете использовать API для создания и развертывания своего собственного чат-бота на основе модели GPT-3. Однако, учтите, что использование API GPT-3 может потребовать определенных знаний программирования и работы с API.
>>2762091 >API GPT-3 может потребовать определенных знаний программирования и работы с API. И ДЕНЕГ СУКА! ХУЛИ ТЫ НЕ ГОВОРИШЬ, ЧТО ЭТО ПЛАТНО, ЗАЛУПА ТЫ ЖЕЛЕЗНАЯ?
>>2762102 Приношу извинения за отсутствие уточнения в предыдущем ответе. Да, использование API GPT-3 является платным. Цены и подробности о тарифах можно найти на официальном сайте OpenAI.
>>2762088 >вон, аноны из б как-то делись зпхами, были мидлы с 100к, Я таких видел. Но я не хочу дружную весёлую галеру с офисом. Практика показала, что галера в случае проблем на проекте со стороны заказчика и его процессов, если тебя не хотят снимать оттуда, нихуя не помогает и становится пятым колесом. А так вполне может встретить реальную глыбу, которая на вопрос а зачем ты устроился и в офис ходишь? отвечают, что это потому что дома сидеть заебало. А потом релоцируются по сочному оферу до хирургической операции.
Опять-таки, ты не знаешь, почему там такой ценник формируется. Специалиста не ценят, а ему и норм, или же покрывают за счёт специалиста операционные расходы бодишопа, на длительные бенчи и прочую залупу.
аноны кто мидл/сунуёр, в ваши обязанности входит менторство джунов? Выступление на конференциях? Я честно признаюсь что не люблю и не умею общаться с людьми, но кажется что чтобы двигаться дальше нужно в этой залупе участвовать
Анчоусы, привет. Подскажите плиз хороший бенчмарк со сравнением CSR, SSR, SSG и что там еще бывает. В идеале, чтобы были 1 или несколько страниц и варианты создания их во всех патернах и с таблицей размеров бандлов, где и какая скорость улучшается, все плюсы и минусы и т.д. Пик-нейчакэ
>>2761832 >>2761840 У меня вообще 9 классов образования и больше ничего в резюме не указано. На собесе говорю, что я учился в каком-то пту, названия не помню, диплом оттуда есть, но не забирал, мне отвечают ЛАДНО и дальше просто идет обычный собес, на работу берут
Я вот боюсь искать себе работу на 150-200к, потому что кажется, что придеться очень много радобать, отчитываться за каждую минуту, делать всё с первого раза и все такое. Сейчас вот на галере сижу за 95к, но зато особо никто не достает, могу работать по 3-4 часа и капчевать оставшееся время. Насколько загружены работой те, у кого зп около 200к? Скажите как у вас день проходит
>>2762165 >отчитываться за каждую минуту Как получится, от процессов и членов команды >делать всё с первого раза и все такое Подразумеваются некоторые навыки и знания, да > Сейчас вот на галере сижу за 95к Подумой ещё раз, как устроены процессы на галере. Возможно тебя продают за условные 160, а ты сосёшь хуй > могу работать по 3-4 часа и капчевать оставшееся время Ты можешь хоть в очечелло долбиться, пока не надо мышкой двигать даже на созвонах, главное чтобы таски по расписанию > Насколько загружены работой те, у кого зп около 200к Навыки + знания => быстрее и проще закрывать таски ???????????
Да по поводу смены. в 90% случаев произойдёт замена галеры на галеру. Просто закончишь работой на условный сбер/прочие сберы аутстафом с другой галеры.
>>2762182 > вышка горная > вышка позорная > вышка идентичная натуральной IT вышки > > > неокоченная профильная и нет > > 9 классов Тащемта, у меня со специальности старпёры выжили практически всю группу, своим непринятием и нескрываемой неприязнью к новому/современному (почему препода ебёт, что в свободное время студенты осваивают современные языки и стек?) которое выливалось в чморение на экзаменах и приёме лабок. Кто хотел, а это 60% группы, все попали в кодинг. Будь то мобилки, фронт или бек
>>2762212 Речь про образование шла. Ты реально подумал, что у меня в резюме указано: 9 классов образования
>>2762192 У меня еще более забавная ситуация. Я сначала пошел учиться в более-менее приличное училище в своем городе, по специальности связанной с кодингом, ушел оттуда после первого года. Еще там была 1 чел, который ушел через полгода. Ближе к выпуску мою (бывшую) группу объединили с другой группой, т.е. изначально выборка была больше 40 человек. В итоге кодерами стали только я и тот чел, который через пол года ушел. Встретился недавно со своим другом, с которым в первый год обучения дружил, он мне все и рассказал. Там кто-то вполне успешным стал по другим направлениям, но вот именно кодером, получается, не стал никто из них
Уже на двух собесах с хрюхами называя ожидаемый уровень ЗП в 180к получал вопрос типа "Это уже белыми, после вычета, да?". Вот и думаю, это я так продешевил? Или сейчас все воннабимидлы просят 250к? реактодебил 3 года
>>2762263 Сейм, некоторые сливаются после озвучивания ожиданий. Это норма. Тем более сейчас. Хотя, как по мне, проще позвать охуевшую чуть-чуть рожу с опытом, чем ковыряться месяц в откликах, дёргая на собесы лида/подлида. Есть более менее адекватные, которые говорят просто "заебись, в нашу/заказчика вилку это попадает", или "а есть ещё проект, но там вилка, допустим на 10к меньше от запрошенных".
>>2762276 В смысле на хабре сказали? Там вообще-то наоборот занижают зарплаты. Я работаю с 2015 года, знаю как дела обстоят на рынке. Это про годные компании, на второсортных галерах могут и "сеньору" 200к платить.
>>2762139 Годное видео, я думал итт нет зоошек. Я сам тоже практикующий с собакой зоо реактодебик. Иногда скучно что ирл в программировании все поголовно натуралы или геи, кого то типа меня нет либо скрываются.
>>2762832 Можешь не строить мз себя нитакусю. Мы же на дваче, тут все свои. Так что давай рассказывай, как ты после девятичасового шлепания форм шлепаешь своего пёсика в его задний эвент луп.
>>2763370 Какая разница, с релокацией или без, наоборот на удалёнке как раз можно зарабатывать зарплаты как в Москве, в то время как живёшь в мухосрани, где всё дёшево
>>2763384 Да я понимаю, но меня никуда не звали, пока у меня желаемый уровень ЗП был 200к. Пришлось поубаваить планочку. сейчас вообще миддл с окладом 100к, так что +80к к окладу это неебейший буст
Есть 1,5 года коммерческого опыта, а найти работу стало только сложнее. Херочки не звонят и не пишут вооообще. Что я делаю не так? Уже полгода откликаюсь, ни разу даже до собеса не дошло.
>>2763454 >1.5 буквально NON-EXISTENT, если у тебя не профильная/физмат/техническая вышка И это >>2763465 Но не то чтобы это сильно поможет, но поможет. Будешь просто слушать про охуевшие требования за 100 рублей и ловить кринж с собеседований.
>>2763465 Я не пиздабол. >>2763475 >буквально NON-EXISTENT, если у тебя не профильная/физмат/техническая вышка У меня есть профильная вышка в топ универе. Всем похуй.
>>2763494 >Я не пиздабол. Автофильтру похуй, пиздабол ты или нет, если не попадаешь в нужный диапазон. А разбирать в 500 откликах кто из этих ёбичей с 1-2 года опыта пиздит - неблагодарное занятие. >>2763494 >У меня есть профильная вышка в топ универе. Всем похуй. Значит как тебе и сказали, вылезаешь из границ автофильтров, и внезапно будешь качественно отличаться. Дальше только пробития дна на собесах.
>>2763494 >У меня есть профильная вышка в топ универе. Всем похуй. Так че ты в жс треде сидишь, а не ядро линукса разрабатываешь, выпускник топ вуза? Ты думаешь, что я доебываюсь, но работодатель, вероятно, рассуждает похожим образом. Хули толку от твоего топ вуза, если необходимую базу для фронтэнда дают и на курсах обычных. На всякий случай уточню: база тебя не делает эффективным гребцом, эффективным гребцом тебя делает практика, но уник -- это не про практику.
Кстати, пока мои дноклы учились в вышках и мгу, я окончил путягу и уже шлепал формы будучи джуном. В итоге я ща уже миддл, а они только на джунов вкатились. ВУЗошизики, оправдывайтесь.
>>2756801 Меня один раз гоняли по внутрянке v8 и микрооптимизациям но довольно поверхностно, типа дали несколько примеров кода и спросили в чем тут проблема. Был массив куда пушем добавлялись значения, надо было объяснить почему это работает медленно. Спросили сколько бит в smi и почему так, есть ли разница с нодой. Моно/Поли/Мегаморфизм, IC, в каких случаях доступ к полю объекта будет быстрым. Попросили отладить кусок кода и сказать почему случилась делптимизация. Потом пару вопросов по хипу, чё такое Олд/Нью Спейс. Это все что вспомнил. Вакуха была на senior frontend 130k/y, на стартап который пилил bi со своим движком формул ( как Ексель, но с более широкими возможностями)