Больше пары строк кода в посте или на скриншоте ведут в ад.
Для программирования на HTML https://codesandbox.io
Для Node.js с консолькой https://repl.it/languages/nodejs
Если рассчитываешь получить дельный ответ, сформулируй правильно вопрос: «что я хочу получить, что я для этого делаю, что я вместо этого получаю». Если/когда самостоятельно найдёшь решение — поделись в треде, мы за тебя переживаем.
Документация - https://developer.mozilla.org
Руководство для вката - https://github.com/acilsd/wrk-fet#javascript
Причина тряски? Mocha звучит как мока, это отсылка к мок-тестированию.
А что мы видим на примере моки? В жс мире все по долгу не живет, но не все называется мока.
Да там под ваш рякт весь фронтендовый фарш каждый день меняется. Я как-то пробывал проекты пилить на rxjs c reduх-obsrvable а потом плюнул. В каждом проекте свое уни кальное говно.
>весь фронтендовый фарш каждый день меняется
Не меняется. Как писали серьезные проекты на редухи и мобихе, так и пишут. Разве что react-query присоединился.
После СПА процедур не нужно пить эспрессо.
Моча.
Чем он быстрее, чего туда нового добавили в последнее время?
Зачем он нужен, если есть языки будущего, такие как Go, Nim, Zig, Rust?
>А что развивается не слоупочно?
C#. Не успел посмотреть что изменилось в новой версии, а уже следующую выпустили. Ничего хорошего в этом нет.
>Нужен ли exspress для spa?
Нет. SPA можно писать 2-мя способами. Бекенд и фронтенд отдельно, бекенд отдает только данные. Для этого можно юзать стандартную библиотеку Ноды. Используя подход html over websockets (Hotwire, Blazor, Liveview, etc), для этого Экспресс не подходит.
Стал уже вторым C++. Спецификация 700 страниц. В спеке C++ описание самого языка занимает 457.
Похуй, в несте и так декораторы давно работают
В том, что новый софт никто на этой хуйне не пишет с 2008 года, даже сам микрософт давно все пишет на жс.
Ставь некст или ремикс и не слушай этого наркомана
>стандартную библиотеку Ноды
И написать самому все миддлвари экспресса, ок
> html over websockets
Какую только хуйню не придумают диды, ненавидящие жс, лишь бы не рендерить жс на сервере
>новый софт
Ты не в теме. .NET пожалуй самая продвинутая платформа на сегодня. В ней есть все плюсы других платформ, без их минусов. Какие есть фичи, которых нет в .NET?
>>277013
>Ставить сокет.ио?
Зачем? Ни в коем случае.
>>277017
>И написать самому все миддлвари экспресса, ок
Что в этом плохого? По другому не поймешь как устроено все на низком уровне.
>лишь бы не рендерить жс на сервере
В смысле рендерить на сервере?
>придумают диды
Это ты глупый дед если юзаешь оверхедный http вместо легковесных полнодукплексных протоколов.
>продвинутая платформа
Только никто ничего не пишет, поэтому она и мертвая
> что плохого делать 10х работу
Ничего, ее никто не оплатит, задачу надо было сделать вчера
> что такое SSR
Мы вам перезвоним
> .NET самая продвинутая платформа
>оверхедный http вместо легковесных полнодукплексных протоколов
Этот дурачок просто питается баззвордами
Эй, жабаскриптер, у меня mocha есть, тебе в chai ещё подлить?
>Blazor очень медленный, перформнас хуже некудa
Чепуха. На днях тестил с помощью wrk.
>Vite-ssr, Next, Remix, Nuxt, Analog
И?
>Чепуха. На днях тестил с помощью wrk.
Это ты тот шиз, который троллил с прошлом треде тем, что чистый пхп охуенно быстрый?
https://krausest.github.io/js-framework-benchmark/current.html
>И?
Перечислил тебе инструменты, с помощью которых можно рендерить на сервере. Забочусь о твоём образовании. Но странно, что ты их не знал.
>легковесных полнодукплексных протоколов.
Все эти легковесные протоколы заебешься настраивать. HTTP проверен временем и работает из коробки.
>Blazor
Поделие мелкософта для попила денег на энтерпрайзе. Удивляюсь, как команду еще не выкинули на мороз, потому что блазор мертв в зародыше.
>2 892 вакансии «.net»
Ковыряться в легаси-говне, все верно.
У тебя русский язык - не родной? Речь шла о новых проектах.
> без фреймворка ничего не можешь,
Могу, это будет стоить в 10 раз больше, так как требует в 10 раз больше времени. Смекаешь, вкатун?
> Blazor умеет
Умеет рендерить жс без жс? Мы вам перезвоним
Все эти "легковесные протоколы" придуманы для классов в Твиттере. Но находятся дурачки, которые переводят твиты их разработчиков на Хабр, а оттуда этого говно с серьезным ебалом долбоебы тянут в реальные проекты.
Юнити не имеет никакого отношения к экосистеме .NET и ни один из баззвордов, которыми ты тут щеголял, там не используется. Они используют подмножество C# (тот что есть в Моно) как скриптовый язык своего C++-движка.
Даже если верить этим цифрам, ничего страшного в них нет. Во-первых, сами тесты абсурдные, во-вторых, во всех тестах кроме создания 10к строк, скорость выполнения меньше 150 миллисекунд, это низкая задержка. Я не предлагал писать на блэйзоре игры или что-то подобное. Для обычного веба его производительности достаточно. Сам .NET страницы отдает быстрее чем Node.js и его capacity намного выше, сотни тысяч - миллионы rps.
>Ковыряться в легаси-говне
>491 вакансия «asp.net core»
Не надоело в говно окунаться?
>Могу
Верим.
>asp.net core
Это мертворожденная хуйня Микрософта по запуску дотнета на линуксе, провалилась, никто дотнет на линуксе в реальной жизни запускать не стал
> говно кунаться
Забавно, как дотнетодебил проецирует
А ну и забыл, если видишь в вакансии asp.net core, значит там старший прокрасчик кнопок решил идти в "ногу со временем" и заставляет команду переписывать свое легаси с дотнета на дотнет, тоже охуительно интересная работа
Причина тряски, вкатунчик, наебанный микрософтом на "передовую платформу"?
Печет от того, что потратил время на изучение ненужного говна?
Двачую. Protobuf тому пример. Якобы более легковесный и содержит в себе типы и спеки, но по факту кал ебаный и лучше просто использовать HTTP + OpenApi
Так и будешь срать изо рта или приведешь факты? В .NET есть всё, экосистема без минусов, ну кроме C#, зато есть F#.
протобуф еще можно понять и простить, его проектировали в дремучие времена, когда современный подход к апи еще не устоялся, но с тех, кто именно сейчас пытается сделать убийцу хттп можно только угорать.
>.NET есть всё
А тулинг для создания UI там есть более-менее нормальный? Который не блазор и не платные замены qt.
Аргументируй.
Агрошкольнику больно и треск жопы не прекращается. В жс-треде обидели любимый дотнет, какое горе.
Ты один обосрался, дурачок
>Даже если верить этим цифрам, ничего страшного в них нет.
Я больше верю им, чем твоему "я вчера затестил через wrk". Этот фронтендовый бенчмарк существует давно, он популярен уважаем сообществом, в нём объективные цифры.
>Во-первых, сами тесты абсурдные, во-вторых, во всех тестах кроме создания 10к строк, скорость выполнения меньше 150 миллисекунд, это низкая задержка.
Ваши тесты неправильные, ррряяя? Приведи тогда не абсурдный бенчмарк.
>Для обычного веба его производительности достаточно.
Ты реально не троллишь? 150 миллисекунд задержа в интерфейсе веб-приложения делает UX очень неприятным. Может у тебя глазомер как в 95-летнего, работает в тысячу раз медленнее здорового человека? Тебя не смущает memory allocation в 40+ раз больше нормальных фронтенд фреймворков? А потом люди жалуются, что фронтендеры пишут перегруженное тормозящее говно. Пусть тогда радуются, что не шарпомухи пишут фронтенд. Ну и самое главное, uncompressed size у blazor-wasm-aot 11 мегабайт,
uncompressed size 2.8 МБ. У blazor-wasm 3.7 и 1.2. Кто этим говнищем будет пользоваться?
>Сам .NET страницы отдает быстрее чем Node.js и его capacity намного выше, сотни тысяч - миллионы rps.
Для обычного веба достаточно не то что ноды, даже руби/пхп/питон достаточно быстро отдаёт страницы. Нахера мне брать дотнет, если намного проще сделать на вышеперечисленных языках и тем более на ноде?
>Для обычного веба достаточно не то что ноды, даже руби/пхп/питон достаточно быстро отдаёт страницы. Нахера мне брать дотнет, если намного проще сделать на вышеперечисленных языках и тем более на ноде
Да этот жук навозник никогда на нормальном проекте не работал. На больших продуктах всегда отдают фронтовые сервисы на откуп фронтендерам, что бы они крутили себе свои ручки/стриминг/корсы и прочее фронтоговно, которое перекладывателям джонсонов не интересно. Т.е. 99% это будет нода, 1% php.
>Сам .NET страницы отдает быстрее чем Node.js и его capacity намного выше, сотни тысяч - миллионы rps.
Чел я в кебернетесе циферку поменяю и получу тот же самый результат, при это жсдебилы меньше денег требуют, еще и работу будут выполнять быстрее, за счет огромной экосистемы. Я даже молчу про размер бинарника блазора (последний раз чекал - почти 1мегаБАЙТ, что даже для LTE овердохуя. А ведь это чисто фундамент, тебе еще компоненты надо будет грузить.
>Для обычного веба его производительности достаточно.
Обычный веб это странички магазинов и блогосайты/лендинги, собранные на битриксе(или других CRM) и готовых шаблонах. Т.е, блазор даже тут обосрался. Мертв в зародыше.
Думаю, нет.
всем похуй на эту торговую марку.
Типошиз с дотнетошизом схлестнулись в схватке мочи и говна
1) Ты собираешься разрабатывать игры на Unity/Godot
2) Ты собираешься в ближайшие годы валить в США и искать работу там.
Никаких других причин учить это больше нет. В РФ в ближайшие годы от копроративной экосистемы микрософта откажутся, дуднет отправится на помойку. Вы можете сколько угодно дрочить на свой язык и платформу, но нужно смотреть правде в глаза. А правда в том, что в корпоративном секторе почти везде жаба, от продуктов мелкомягких в РФ откажутся окончательно, кроме игр нигде у C# нет своей вотчины, где он мог бы уверенно занимать свое место (как это есть например у JS в браузере, свифте в ios да и той же жабы в ентерпрайзе) не боясь что его оттуда подвинут. Ты потратишь время на изучение "универсального и лучшего языка" C# и всей телеги что идет в комплекте чтобы обнаружить, что все ниши давно заняты другими технологиями и сишорп там не ждут. Ни в десктопах, ни в вебе, ни в блохчейне, ни в эмбедде, нигде.
О, еще и пердолика занесло сюда. Поменял в пасте 2004 на 2024 и дрочит против клятого микрософта.
Жс-тред, место встречи шизов всех мастей.
Жс давно часть "копроративной экосистемы микрософта", а тайпскрипт это язык с вендорлоком от майкрософта. В отличие от жс у него нет стандарта, только референсная реализация от майков.
мимо капитан очевидность
Только npm они купили.
Зачем городить тонны кода на чистом,если есть готовая фича на ТС?Это улучшает процесс программирования
Но ТС это и есть тонны ненужных деклараций типов, которые не имеют никакого отношения к коду и нужны только для того, чтоб подсвечивать красненьким места, где инвалид складывает лошадь с сеном
В чем разница между External HTTP/S server и Simple server?
>Жс давно часть "копроративной экосистемы микрософта", а тайпскрипт это язык с вендорлоком от майкрософта.
В чем вендорлок заключается? Это же открытый продукт, который разрабатывается в основной своей массе именно опенсорсерами. А вот сишарп в основной части разрабатывается именно мелкомягкими, т.е. очевидно, что эффективные менеджеры в один момент начнут пытаться его монетизировать (см. оркакл).
>только референсная реализация от майков
Тупее высера не слышал. Дохуя реализаций тупоскрипта, тот же babel и esbuild имеют свои собственные реализации тайпскрипта.
>esbuild
Этот пока научился только вырезать TS из файлов, оставляя JS.
Проверки типов там нет и в итоге надо одновременно иметь и tsc и esbuild. Мда и кстати эмит декоратор метадата там тоже нет, то есть сосамба с либами типа тупоорм, активно использующих эти тсявые костыли. Такие дела
Да, babel тоже не умеет, вроде как. Но тем не менее - сборка без тайпчека вполне себе реализация тайпскрипта.
Надо не читать, а писать код. Быстро поймешь что плохо, а что нет.
Так он умеет отдавать простые веб страницы?
ws умеет отдавать только вебсокеты. Веб страницы отдает сервер, который ты внутри прокидываешь.
Смысл референсная реализация понимаешь? Пример есть питон. У питона нет четкого стандарта, как в ECMAScript, например. Есть реализация cpython и дока по нему. Это называетс референсная релизация. Другие питоны Iron Python, Cython, Jython, зависят от питона, от его библиотек, они вынуждены хотя бы частично поддерживать его экосистему они самостоятельно не добавляют новый синтаксис или фичи языка, иначе их основной смысл потеряется: запускать питоний код. Но Питон польностью контролируется сообществом. Есть PEP который консенсусно планирует фичи языка.
У тайпскрипта есть референсная реализация компилятора. Но нет стандарта. Если бы комитет по стандарту языка принял бы решение, что тайпскрипт должен выводить обобщенные типы метода из ограничениий при использовании этого метода в выражении, то любая реализация, которая реализовала это, стала более продвинутой, потому что ближе к стандарту. Но стандарта нет. Комитета нет. Консенуса по языку нет. Остальные "реализации" существуют только для поддержки каких-то корнер кейсов. Есть только референсная реализация от майков. Кучка оплачиваемых разработчиков не захотела пилить эту фичу и как результат ее нигде нет.
Хотя справедливости ради, разработчики тайпскрипта изначально говорили, что не планируют язык развивать независимо от жс. То есть тайпскрипт создан чтобы следовать стандарту жс. Они как бы временную продвинутую версию жс делают.
обобщенные параметры метода*
Юзай Socket.IO и не выделывайся.
484x854, 0:19
случайно прикрепилось, извините
Фронт: React + Vite если без SSR, Next либо Remix либо Astro если с SSR, Tailwind + shadcn либо Mantine для стилей, Zustand либо Mobx для глобал стейта (он не всегда нужен!), TanStack Query для сетевых запросов.
Бек: Nest либо Fastify, TypeORM либо Prisma для запросов в БД (drizzle либо kysely если хочется нового), Socket.io для вебсокетов, остальное примерно как в других языках (Реббит/Кафка/NATS, Редис, Кликхаус, Прометеус/ELK...).
>Tailwind + shadcn
Почему местные додики так любят соевое говно из сриттера?
>он не всегда нужен
Всегда он нужен, не пизди. Разве что если ты тудулист хуяришь, тогда да - не нужен.
Скажешь это на собесе, скорее подумают что ты очередной Кулибин, а не эксперт по жс и не перезвонят. Если бы ты свой фреймворк пиарил, то было бы больше похоже на экспертизу. Человек ничего не понимающий в коллективной разработке в лучшем случае какой-то полуэксперт недоучка.
>Почему местные додики так любят соевое говно из сриттера?
Не знаю, спроси у них, но это актуальный выбор для стилизации, позволяет быстро и удобно писать стили. Лично у меня печёт с бойлерплейта в классах тейлвинда, поэтому что я пишу UI компоненты либо сам, либо использую Mantine, иногда headless, иногда с полными стилями.
>Всегда он нужен, не пизди. Разве что если ты тудулист хуяришь, тогда да - не нужен.
Нет, не всегда нужен, даже на огромном приложении бывает достаточно локал стейта + Tanstack Query. Точнее не то чтобы достаточно, это предпочтительно, потому что глобал стейт часто не только бесполезен, а ещё и вреден.
пыходебил рвется, срочно все сюда
Подробнее можно? Из тебя словно клешнями по крупицам нужно вытягивать информацию? Экспресс по твоему мнению слишком медленный, или в чём с ним проблема? И его можно сменить на фастифай
>писать стили
Ты не пишешь стили, а используешь уже готовые решения. Пусть лучше сам сначала научится в флексы с гридами, а потом уже юзает готовое. Будет намного легче.
> даже на огромном приложении бывает достаточно локал стейта + Tanstack Query.
Тебе квери будет достаточно только если у тебя витрина, без логики на фронте. Чисто взял джсон => зарендерил => опционально оптимистичное обновление => запостил обратно. Олсо, роутер это тоже вполне себе стор.
Простого реакта с гитом уже мало? Капец блин, кабаны уже совсем ахуели
> Олсо, роутер это тоже вполне себе стор.
У тебя абсолютно скорапчены мозги реактом. Хто называется глобальная переменная. И адресная строка лежит в джаваскрипте в глобальной переменной.
Да-да, вот раньше то без фреймворков ничего не делали, все сайты начали появлятся с изобретением среакта! У тебя в мозгу насрано, чел, не пиши здесь ничего, ты слишком туп. Если человек ищет работу, то он не спрашивает про стэк, он берет его из вакансий. Если человек спросил, значит он хочет сделать что-то сам, и лучше чем ванильных вариантов нет, даже если тебе что-то и понадобится (что маловероятно, сейчас ваниль покрывает все потребонсти), то ты выберешь не трендовое дерьмо, которое в тренде только из-за легасиговна, а что-то простое уровня jquery
> Если человек ищет работу, то он не спрашивает про стэк, он берет его из вакансий. Если человек спросил, значит он хочет сделать что-то сам
Ага.
Почему тогда все называют глобальную переменную стором? Потому что учили стак а не программирование.
Шизик, успокойся. Роутер это не глобальная переменная, иначе бы все подвязывались на history/navigation, вместо затягивания либы с роутером. Точно также все тянут мобикс, вместо использования чистого объекта.
Пошел нахуй, долбоеб.
Я начинал с жиквери. Тебя сейчас никто без фреймворков не пустит в компанию. Как ты без фреймворка предявишь умение писать код который все понимают. Тебе с намерением писать велосипеды на ванили устравиваться только к мелкому ИП у которого еще нет проекта.
>код который все понимают
>тем временем среакт - useState, useSelector, dispatch(zalupa), useEffect(magic)
>код который все понимают
Чел, у тебя в голове насрано, пиздуй со своими проповедями на курсы которые тебя породили.
1) Я реакт не использую так что мимо
2) Фреймворки содержат базу для создания поддерживаемого кода, какие-то паттерны. Сама посебе платформа, например нодежс, не содержит средств для создания поддерживемого кода. В ноде нету IoC контейнера например.
>В ноде нету IoC контейнера например.
Используем на проекте globalThis с тех пор как его стандартизировали в браузере и в ноде, позволяет не привязываться к багованным системам экспорта и получать ровно то что и ожидал. Через прокси можешь наворотить уже своих проверок вокруг этого
Middle+ JavaScript Developer
Если это все по нормальному сделать, то у тебя все равно получится как минимум сервис локатор или что-то подобное. И ты все равно будешь решать задачу как написать тесты для этого. И создашь подобие фреймворка. Потому что когда ты делегируешь задачу другому, ты хочешь, чтобы он сделал это согласуясь с абстрактными правилами. Потому что ты хочешь чтобы его код не ломал твой, что уже написан или ты собираешься его писать паралельно с чело которому делегировал часть работы.
При чем здесь реакт, долбоебина? Любой фреймворк тащит за собой свой синтаксис, свою магию, которую никакой программист не поймет, потому что она очевидно только его создателю, зачастую даже те кто ей пользуется не понимает как это работает, при том что язык один и тот же.
>IoC
Типичный хренворкер, тащит мегабайты зависимостей, потому что ума не хватает написать класc вида
IoC {
get(name: TName): Instance<TName>;
register(name: TName): void;
}
Магия понятна тем кто в фреймворке разобрался. Если проект самописный и большой, то значит в нем есть свой фреймворк и своя магия и тебе придется тратить время чтобы разобраться.
>IoC {
>get(name: TName): Instance<TName>;
>register(name: TName): void;
>}
Это сервис локатор. У него проблемы с тестированием. Опытный сенька не захочет у вас работать.
>тестировать калькулятор
Ясно. То что притягиванием зависимости ты будешь тестировать чужой код, только не на этапе написания, а прям в проде, это нашему хренворкеру невдомек, он ведь только еще на бумажке все знает, в прод еще ничего не выкатывал.
Зависимости зависимостям рознь. Я про нужность is-number ничего не утверждал. Я только сказал что
1) На собесах спрашивают хреньворки чтобы убедится что ты шаришь в некоторых понятиях совместной разработки
2) Нормальный фреймворк облегчает вкат в проект.
3) Трудоустройство на Nestjs более привлекательнее, чем на самомис на голой ноде. На самописе вместо того чтобы сесть и решать задачи, я должен буду бегать за местным "гуру", котрый не изучал фреймворки и поэтому в каждом отдельном случае написал, то что первое пришло ему в голову.
>Тебе квери будет достаточно только если у тебя витрина, без логики на фронте. Чисто взял джсон => зарендерил => опционально оптимистичное обновление => запостил обратно. Олсо, роутер это тоже вполне себе стор.
Если не витрина, а большое приложение с логикой на фронте, то зачем обязательно нужен глобал стор? Что мешает хранить состояние фич внутри друг друга, локально?
>тем временем среакт - useState, useSelector, dispatch(zalupa), useEffect(magic)
Если тебе всё это не понятно, то ты реально туповатый. useEffect вообще не имеет магии, useSelector и dispatch это вообще не реакт.
>>277806
>Типичный хренворкер, тащит мегабайты зависимостей, потому что ума не хватает написать класc вида
Речь про IoC зашла в контексте ноды, а там абсолютно похуй на мегабайты, код парсится всего один раз, в момент запуска бекенда.
>Что мешает хранить состояние фич внутри друг друга, локально?
Если у тебя набор витрин, никак не связанных друг с другом - ничего.
Одна фича/модуль может читать стейт другой фичи, для этого не обязательно тащить какой-нибудь редакс в проект
>может читать стейт другой фичи
Так через что она его прочитает? Через воздух? Тебе как минимум понадобится IOC, как максимум - прямой зацеп друг на друга.
Что у тебя там за витрины такие, которым нужен глобал стор? Пример есть какой-то конкретный?
>то ты реально туповатый
Но костыли в виде глобальных сторов почему то нужнв реактодаунам, а не мне. И да, открою хороший код тот, который понимает даже тупица, а не тот что способен разобрать только носитель тайных знаний, да и то с ошибками. "An idiot admires complexity, a genius admires simplicity"
>"An idiot admires complexity, a genius admires simplicity"
"A java coder admires $300k/sec, a react/vue macaco admires ₽50k/month
На фронтенде как была золотая тройка из react, redux, material ui так и осталась, даже на новых проектах. Все аналоги в плане стейт менеджмента и стилизации так или иначе косят под вышеперечисленное. На бэке в последнее время больше актуален nestjs, typeorm поощущениям уходит в прошлое и хз что там сейчас с поддержкой, prisma набирает актуальность.
На линкедине в рекомендованных тегах видел "портовый грузчик". Корявый машинный перевод, угадай что в оригинале.
Докер конечно
Начальник в твиттере про такую тройку прочитал?
Как была золотая связка Ангуляр+rxjs, так она и осталась, остальное бананы для послекурсовых макак и любителей ебаться с легаси, а также занюхнуть коксика с яиц наркомана даньки абрамова
>проверенное временем решение от лучших программистов?
>нет, лучше покушать высер наркомана, потому что в твиттере написали, что это круто
В реакте в последние годы не особо используют глобал сторы, так что оставь свои маняфантази при себе. А когда используют, то это не костыль. Jotai, например, вполне элегантный глобал стор.
>хороший код тот, который понимает даже тупица, а не тот что способен разобрать только носитель тайных знаний
Ты считаешь, что для понимания useState или useEffect нужны тайные знания? Ты действительно не очень умный. Любая реактомака легко понимает всё это.
Да вообще без проблем. Дефолтный магазин с корзиной. Как корзину будешь хранить?
Корзина хранится на бекенде в базе данных, а для работы с сетью у нас есть чудесный Tanstack Query. Хранить корзину на бекенде это бестпрактис, например Озон так делает и это охуенно. Нужен другой пример, в котором видна необходимость глобального хранилища.
На ангуляре пишут 5% проектов, на вью ещё 5, остальное реакт
>>278060
>>проверенное временем решение от лучших программистов?
Реакт проверен временем, поэтому его используют на абсолютном большинстве проектов
>>нет, лучше покушать высер наркомана, потому что в твиттере написали, что это круто
В твиттере пишут что круто это солид, астро, свелт, trpc, ещё какая-нибудь залупа, но в итоге в рабочих проектах почти выбирают проверенный временем и ставший золотым стандартом реакт
>useState или useEffect нужны тайные знания
https://stackblitz.com/edit/react-hooks-counter-example-13don5?file=index.js
Два эквивалентных по функционалу примера. Рассказывай, почему пик 1 не магический и на нем все прозрачно и понятно человеку знающему JS, а пик 2 наполнен магией и вообще непонятно как работает. Почему пик 1 требует импортов и понимание какого-то доп. синтаксиса под названием JSX, а пик два ничего кроме знаний JS не требует, но при этом пик 1 это "легко понимаю", а пик 2 "да это же неудобно!! никто не поймет!!!". Оправдывайся.
>Любая реактомака легко понимает
Именно поэтому для всего этого делают специальные гайды о том как не выстрелить себе в ногу. Верим, чел, верим!
На пике 1 всё легко и понятно любой реактомакаке, которая прошла месяц курсов в киллбоксе, нет, которая прошла даже 1 день курсов про реакт. Про магию и непонятность кода с пика 2 я и не говорил. У тебя какие-то ебанутые крайности. Код с 2 пика простой, для него достаточно знать основы работы с DOM. Но удобнее сделать как на 1 пике. В принципе для любой фронтомакаки быстрее и проще будет достигнуть понимания JSX и реактохука useState, чем работы с DOM стандартным средствами. Хз про какие ты специальные гайды, обычно достаточно еслинт плагина для реакта, который есть в любом проекте.
>для первого нужны курсы, второй очень простой
>но удобнее сделать как на певром
Логика уровень: реактомакака. Вопросов больше не имею.
мимо
Да, крупных приложений которые без реакта живут ведь никогда не существовало! Фейсбук все время существовал, но потом столкнулся с НЕРЕШАЕМОЙ проблемой вид АДИН КАУНТЕР НАДА НА ДВУХ КАМПАНЕНТАХ ОТОБРАЗИТЬ, ПРИ ЭТОМ МЕНЯТЬСЯ ОН МОЖЕТ ИЗ РАЗНЫХ МЕСТ!!! и тогда им на помощь пришел наркоман супермен дэнчик и его реакт. Верим.
Существовали другие фреймворки блакбон, кнокаут. Но в большинстве случаев страницы верстали на серверных шаблонах. Я сам пилил динамические станицы с твигом и жквери для админок и срмок, и динамические формы делал на симфони форм.
Можно кстати развить мысль.
Задача: вам нужно добавить еще одну кнопку, которая будет отображать этот же каунтер и иметь возможность увеличивать его, но находится совершенно в другом месте страницы.
Что нужно реактодаунам для выполнения такой задачи? Правильно, им нужна еще одна зависимость, которая добавит им магический store, на поверку оказывающимся обычным глобальным god-object'ом который хранит всевозможные стейты, в том числе и стейт каунтера.
Куда-то ты не в ту степь ушел.
1) Цимес реакта не в сторах, а во флуксе.
2) Стейты там хранятся емнип в замыканиях а не глобально. Поэтому тебе собственно надо setState делать а не напрямую обновлять переменную
не реактор
>не реактор
>пукает что-то невнятное
>несут пургу все кроме него
Даже не смешно уже, срыгось оформи.
Большое приложение будет тяжело поддерживать на голом js, вот в чём логика. Реакт/ангуляр/вью придумали не просто так.
Помню, что список открытых файлов (в левой панели) можно было сделать иерархическим. Не могу найти как. Помогите найти.
useContext это так сложно...
Высер наркомана - это redux. Реакт никакого отношения к нему не имеет.
а как срать?писать большие приложения???
ну чувак же не просто так пишет мне было бы интереснее узнать его точку зрения подробнее
Не понял из твоей пикчи, как "так" - на ней просто дерево проекта.
А я говорю про то что вверху есть блок Open Editors (Explorer > ... > Open Editors). Если его включить, то в нем отображется список открытых файлов. И этот список можно было сделать не плоским, а древовидным. То есть если открыты a.txt, b.txt и c.txt, то:
- Folder A
---- a.txt
- Folder B
---- b.txt
- Folder C
---- c.txt
>>278407
Вообще, чет я чем больше смотрю, тем больше не нахожу фичей, которые раньше были.
Вот это например - https://www.youtube.com/watch?v=ZJqAyoMivhU
Опять же, в Эксплорере можно было отфильтровать дерево. Не работает же это сейчас, получается?
Да, есть Ctrl+Alt+F, но он не фильтрует, он только подсвечивает и то только то, что находится в области видимости (т.е. в раскрытых директориях), он не подсветит вхождения, если папка не раскрыта.
node --inspect server.js
и сри консоль логами/дебаггерами.
Если нужна именно сеть - wireshark
Это единственный способ работать без военника/приписного
В трусиках стоял уже?
Или это как разговор с пастой - древнерусская традиция крыть хуями тех, кто пишет не на твоем любимом языке/не в любимой области?
Потому что быть фронтом это тоже самое, что освоить математику за первый класс, а потом причислять себя к профессорам математики и пытаться вычказываться на соответствующие темы.
Потому что сейчас 90% макак вебразработчики и типа все знают жс и фронтенд. Как они могут относится к челам, которые осилили только один язык и только половину профессиональных навыков?
к фуллстекам уже нормально относятся или все равно хуями кроют?
Кем нужно быть, чтобы получить уважение в сообществе?
Либо глыбой либо инфоцыганом
Блядей корёжит от зависти. У обыкновенной фронтомаки получка такая же, как у чела, который пыжился в универе, учил базу, решал литкод, вот чел и завидует.
>ненавидят Js
Потому что это сложный язык + большинство макак не умеют в спецификацию
>фронтендеров
Потому что думают, что они лутают те же деньги что и остальные просто за покрас кнопок. Обычно представление о фронтенде дальше покраса кнопок там не идет.
>Потому что это сложный язык
Проорал. И в чем же он так сложен?
>Обычно представление о фронтенде дальше покраса кнопок там не идет
Даааа, ее же еще создать надо, целых 2 строки, ахуеть можно. Мамины блять программисты
>И в чем же он так сложен?
Тем что большинству макак не хватат ума даже банально понять чему равен this в той или иной строке кода или как в нем идет неявное приведение типов. У залетных дурачков это называется "не очевидно работающий язык программирования"
>Даааа, ее же еще создать надо, целых 2 строки, ахуеть можно.
Как минимум во фронтенде мультипарадигмальный подход, много что основано на метапрограммировании и создании автоматической генерации кода (не только верстки). Одно это уже на голову выше однотипного ООП крудошлепинга, за пределами которого бэкомакаки зачастую даже не знают как мир устроен.
>И в чем же он так сложен?
Многие тайп-мартышки банально не способны осилить приведение типов в js
Мёртвый фреймворк, 90% работы на реакте, остальное ангуляр, и полтора землекомпа используют вью.
Vue хорош тем что можно стать vue+laravel фуллкеком, а потом вкатиться в php программисты. Там уже вакухи подирнее будут + работы больше
>опыт 3+
>позиция мидл
Ты не очень умный? Крути до 6 лет и вкатывайся на синьку изи. Вопросы начиная с миддла все равно одинаковые и требования тоже.
я понимаю говорить про 6 лет сеньер 20 лет назад когда индустрия была молодая и чел с таким опытом был в редкость но сейчас...
чем кстати отличается мидл от сеньера? если коротко
>чем кстати отличается мидл от сеньера
Синьер напиздел про свой опыт.
>но сейчас
Что сейчас? Сейчас собственно нихуя не изменилось.
ладно, нашёл чето
>В интернете нашёл только
Дальше первой ссылке в гугле смотреть пробовал? https://github.com/nodeca/pako - буквально второй результат выдачи
у рубистов съели маму
Этот тот дебик, который выше спорил о том, что фреймворки не нужны и лучше писать веб-приложения на чистом жс
Ну формально это вариант оптимизации. Так пишут не дурачки, а люди, которым нужно прямо крохи скорости и отовсюду выцепить.
Лол, я на такую вкатился с 0 опыта, напиздев с три короба. Планирую через год работы гапнуться на х2 до 300к+, накрутив еще больше.
Теперь ты расскажешь где ты увидел оптимизацию..
Индус за строчки кода зп получал.
не вижу никаких проблем
все читается легко, все понятно, исправить легко, добавить новое легко
в чем проблема??? ну магические цифры можно было бы в константы загнать ну так это ан 5 минут делов
Обычно на работе красят кнопки и никакие алгоритмы не используют
Node.js Design Patterns (Third Edition)
Больше фронтов получают гоферы и джависты в бигтехах. Остальные получают плюс минус одинаково
Прописали себя в глобальное пространство, возможно это какой-то экстеншн для отладки.
Полгода поиска, полтора обучения. Нахуя я на это подписался...
страшна судьба вкатунов
и озон и купер бывшие места работы - сейчас батрачу на вк
https://youtu.be/HMJ8SRVGLqk?t=2003
мне вот это показали и еще хуже загнали - там сойбой рассказывает про своего приятеля который дорос до сеньор фронтендера за 11 мес
Сеньор бекенд макака - 300-350к, сеньор фронтенд макака - 300-350к. Что там у мидлов и джунов не интересно, может там фронтомакаки и меньше среднего получают.
Да, это полный провал, я хз как ты мог настолько опозориться. В 20 лет ты уже должен был с ветерком влететь в высший менеджмент на софтах.
БЛЯЯЯЯЯДЬЬЬЬ
Ты че пес хочешь сказать чтоле что я не гребец? Вот именно поэтому твоё определение это кал.
Не понимаю зачем ты заливаешься копиумом?
Твоё опрелеление это тупая отсебятина. Всегда галерами называли аутсорс и аутстафф.
Называть себя гребцом а своего тимлида погонщиком это весело поэтому так будут делать все. А свою анальную духоту засунь себе в жопу, душнила анальник.
За ошибку на фронте у тебя отберут погремушку. За ошибку на бэке меня выебут и высушат. Я ответственный инженер. Ты сладенький пупсик рисователь компонентов
Ну например ты сломал самое важное биллинг в системе и он там какое-то время не работал. И че они тебе сделают?
Ну че сделают, я не знаю, поругают, заставят оправдываться перед заказчиком, уволят, поставят на бабки, посадят, что ещё можно придумать? Вывезут в лес
Я могу нафантазировать что всё тоже самое со мной сделают за неправильный цвет кнопки.
Да не. Ну цвет кнопки это цвет кнопки. А там данные. Бизнес это его данные и как он ими вертит. А их представление это ну так
Не срыгивай с темы. Нет у тебя никакой отвественности и никто тебе ничего за твои ошибки не сделает.
Ну и хорошо. На самом деле веб-разработка это полная хуйня. Кто-то ведь делает системы для АЭС и самолётов. Пиздец наверное
ноукод на Simatic WinCC - не сложнее крудов
> За ошибку на бэке меня выебут и высушат.
Ну ебать ты лох получается. Зепка то у джонсоно-перекладчиков и формошлепов одна и таже, а ответственности больше у первых.
>Кто-то ведь делает системы для АЭС и самолётов. Пиздец наверное
Да там говнокода еще больше, потому что зарплаты меньше.
>меня выебут и высушат.
Для тебя штраф 60к рубчиков за слив полной базы данных с ПД клиентов и исходников это "выебут и высушат"?
>Как правильно размечать страницу, и есть ли вообще в этом какой то смысл?
Гугли html5 outline algorithm. В целом, ведутся на этот счёт дебаты. Преимущество семантических тегов в том, что читабельность кода лучше, гуглу проще будет парсить, лучше аццесибилити. Сеошники проводили тесты, вроде как семантические теги практически не влияют на позицию в гугле. Но в любом случае, лучше чтобы они были чем не были.
>Что вы там ломаете?
Чел просто в очередной раз не смог пройти двухнедельное ревью реквеста с двумя строками кода в сервис сторонней команды, получил за это пиздюлей от тимлида и пришел самоутвердится.
И весь фронт вот такой переколбашенный костылями, которые бы не понадобились, если бы не проёбы на бэке.
Ну твой аргумент на самом деле не аргумент. Я сейчас работаю в вместе, где бэкеры будут плясать вокруг фронтов, потому что фронтов банально в 3 раза больше (котлин+свифт+жс). Так что они роняя кал приносят нам, фронтобогам, свою криво слепленную спеку, что бы над ними ржали и заставляли переделывать.
Ебусь уже второй день с настройкой и чтением sass / css modules / и прочих лоадерах с минимизациями.
Всякие vite и прочие новоизобретения посвященные бандлам, они ведь сдохнуть как и модный-вайбовый сноупак когда-то? А то меня гложать сомнения, ибо в гуглах вижу советы "переходи уже на another_hueta_name вместо вебпака".
>Вебпак все еще база которую надо знать?
старые проекты 99% юзают вебпак, так что придется знать, хотя бы на уровне отличия лоадера от плагина. Но глубоко вникать в него я бы не стал.
>Закончил на днях 2 курса
>где теперь искать первую работу джуном?
Ну для начала еще полгода-год поучи рякт и жс, поделай свои проекты. Потом сможешь вкатится на стажку с ЗП МРОТ.
Ебать у тебя хард дификулти по жизни выпал. Но тем не менее я искренне желаю чтоб у тебя все получилось.
>>281953
Принято. Ну недельку я наверно попердолюсь, чтоб понимать как связочка из react - typescript - sass - css modules бандлится.
На оффсайте рекомендуют не мелочиться, и сразу ебошить SSR фрейморк нахуй, от чего я в осадок немножк выпал.
Да, остальные бандлеры юзают только в твиттере
типа в одной папки будут: JS репозитории, в другой TS ну и т.д.
а то дохуя проектов, примеров, шаблонов накопилось, надо как-то отсортировать
Так просто же делаешь репозиторий JavaScript и в него закидываешь проекте по js, не?
Ебаные дизайнеры нахуй - понакидывали ХУЙНЮ - да так, что все картинки не обрезаны нихуя (наводишь - а оно на пол экрана закрывает) - сууука и нихуя не получается.
ЕЩЕ НАКИДАЛА ГРАДИЕНТОВ БЛЯТЬ
А респонсив сука....я просто не могу нахуй
Скажи спасибо что ишак сдох IE.
А то под него верстка была бы обязательной в требованиях, а у мелксофта был свой особый взгляд на html css, или изменение маленького описания DTD просто могло поменять работу правил.
Тогда кстати десигнер десигнил не в фигме, а в фотошопе, и надо было всю йобу графена впихнуть например в IE6.
> Сап, аноны. Вопрос по семантике HTML. Есть две картинки, которые по сути своей отличается.
Обе пикчи кал. Семантическая разметка не зависит от визуального расположения элементов
> в самой статье header это не заголовок страницы, и footer это не подвал страницы. Header это шапка условного поста(заголовок), а footer подвал поста(автор, время и т.д.).
В целом такое допустимо. Надо смотреть на контекст
> Как вообще правильно пользоваться семантикой?Как правильно размечать страницу, и есть ли вообще в этом какой то смысл? В большинстве своём все первые сайты которые выдаёт гугл, это сайты где разметка строится на одних только div.
1. Видишь какой-то блок
2. Размышляешь над его смыслом на данной странице
3. Идешь на https://html.spec.whatwg.org/ и смотришь, какой тег под данный блок подходит лучше всего
В целом достаточно изучить подробно спеку, можно еще глянуть стримы Мурыча по семантике. Этого хватит, чтобы начать более-менее норм размечать документ
>Всякие vite и прочие новоизобретения посвященные бандлам, они ведь сдохнуть как и модный-вайбовый сноупак когда-то?
Нет, vite это сейчас золотой стандарт для CSR приложения, и это уже 3-4 года так. Сноупак никогда и не был модным, в отличие от rollup или parcel.
Потому что удобно. А какие альтернативы? Ну можно вит взять, или астро. Принципиальной разницы не видно.
есть проект на реакт, есть папка компоненты, там функции (все как обычно)
как я понимаю программа стартует с index.js и этот файл(код) подтягивает/вызывает другие функции и прочее.
почему если я (в каком нибудь далеком от корня проекта - файле.js напишу функцию и там же вызову ее , то она отработает?
Получается все файлы js собираются в один большой файл и он отрабатывает?
тогда в каком порядке они будут идти
Потому что этот файл где-то импортирован.
Собираются не все файлы, а те, которые импортированы хоть раз.
>в каком порядке
В порядке импорта, каждый файл импортируется один раз, повторный импорт ничего не делает
>компилируемого языка
И забудь это бессмысленное словосочетание, к языку это отношения не имеет, и к описанным свойствам импорта файлов - тем более
>к языку это отношения не имеет,
в компилируемых языках (С/С++) сборка осуществляется по другому
поэтому и возник такой вопрос
Хуйню несешь. Что «по-другому»?
И еще раз - существуют интерпретаторы С. Так что ты опять повторяешь хуйню про компилируемость языка
Ты можешь через точку обратиться к существующему полю, но если его нет, то получишь ошибку. Через setAttribute ты можешь задать новое. Если у твоего объекта такое поле есть, то варианта будут работать
Не было у майкрософта никакого своего видения. ИЕ был просто очень старый и очень дефолтный. Он был везде потому что была очень популярна ос windows XP и он там по умолчанию.
Оба, офк
У микрософта было дохуя своего видения, от activeX и dhtml, до XMLHttpRequest, пока у позорного говна Netscape ничего не было. По сути современный веб переизобретает заново то, что в ИЕ было в 1996 году
Ну и соответственно виста кал, до семёрки все сидели на ХР. Все это время от ХР до семёрки это время жизни осла.
Флешовые мультики и интерфейсы тоже утерянные технологии древних.
Чел для Netscape изобрели жс, а потом майкрософт попытался украсть платформу. Если бы майки победили то ты бы сейчас писал на VBS а не JS, или в лучшем случае на JScript (отгадай почему эта хуйня назвается JScript а не JavaScript)
Мозила выиграла чисто технологически. Потому что майки изначально пошли по неправильному пути из-за бабла. Они ля захвата рынка сделали глубокую интеграцию JScript с виндой. А мозиловцы первые сделали сандбокс для скриптов
А потом хром победил фирефокс. Но я помню старый гугл где была страничка для скачивания опенсорсного софта. Среди софта был браузер фирефокс. У гугла еще хрома не было. И гугл на старничке для скачивания писал, что компания Гугл не поощряет софт который что-то делает без ведома пользователей, поэтому предлагает firefox
жс в нетскейпе нихуя не умел, пока в микрософте не придумали XMLHttpRequest, если бы не микрософт, ты бы сейчас улицы подметал, дурачок.
Я бы делал сайты на симфони и жиквери без всяких ненужных аяксов
Было свое. Даже тогда на хабре хабрахабр (как он еще тогда назывался) и других ресурсах, выходили статьи переводы материалов и статей мелкософта. Они именно что часто по своему воспринимали html css, там были вещи non-standard потому что у них в планах было пропихивать в индустрию и своего ишака и свои стандарты. Но это все сдулось.
Школьник с выеденным гуглопропагандой мозгом, "стандарты" придумали ПОСЛЕ того, как придумали фичи в ИЕ.
Зато потом Мозила выстрелила себе в ногу новым движком, убив массу полезных плагинов @
Скопировала дизайн хромонога вместо своего старого удобного @
Выгнали Брендана Эйха из-за гомогевв @
Вот теперь заебись
yoba face.jpeg
У HTML были стандарты. Более того надо было следить за указанной версией в шапке, ибо это оказывало влияние на верстку.
Самый ранний кажись RFC 1866 https://datatracker.ietf.org/doc/html/rfc1866 1995 года Hypertext Markup Language - 2.0
Причина тряски, гуглодаун?
Еще раз: стандарты интернета - это не какие-то священные скрижали, присланные сверху, по которым стали создавать браузеры. Стандарты всегда принимаются после того, как уже существуют несколько конкурирующих решений и они совместно хотят прийти к консенсусу.
Очевидно, что микрософт имел больше возможностей и ресурсов и его браузер был гораздо более развитее, чем какой-то там нетскейп, разрабатываемый тремя калеками. И микрософт одной ногой мог поддерживать стандарт html 2.0, другой разрабатывать ActiveX, третьей - разрабатывать XmlHttpRequest, и так далее, все это не противоречило ничему.
А вот догоняющим чмонькам ничего не оставалось, кроме как плакать, что клятый микрософт угнетает меньшинства, "не соблюдая стандарты", что есть абсурд, так как эти стандарты самим микрософтом и разрабатывались, с минорными правками чмонек.
Ну а гугл довел это до полного абсурда: когда он возглавил гонку, то он начал клепать "стандарты" как пирожки, и обвинять остальных в том, что они недостаточно быстро все высранные гуглом "стандарты" реализуют и "тормозят веб".
Ты прямо написал что стандарты были приняты после ишака, потому что так походу действительно был уверен. Я тебе скинул доку, а ты вместо того что пойти ознакомится с историей просто стену бугурта пишешь. Ты бы не называл итт анонов даунами, а сходил бы для начала к зеркалу.
Ну давай в вики посмотрим
- Internet Explorer Первый выпуск 24 августа 1995
- HTML 2.0 — опубликован IETF как RFC 1866 в статусе Proposed Standard 24 ноября 1995 года
Разница в 2 месяца почти. Ты хочешь сказать что самая первая версия ие имела фичи, на основании которых и придумали стандарты через пару месяцев?
Но как тогда быть с тем, то HTML это расширение SGML у которого стандарт 1986 г.
https://en.wikipedia.org/wiki/Internet_Explorer
>Starting in 1995, it was first released as part of the add-on package Plus! for Windows 95 that year.
Бля, помню этот охуенный дизайн. Окончательно пересел на хромога тогда. Пара знакомых так и ебались с перекраской лисы под старый дизайн какое-то время. Открыл браузер и сидел проверял "а не хром ли я запустил случайно?
>имела фичи, на основании которых и придумали стандарты
Еще раз: фичи это первичное. "Стандарты" - попытка их описать после. Это касается не только HTML, но и любых других областей.
> HTML это расширение SGML
Это словоблудие стандартоманек. Изначально HTML - это просто от балды взятые теги в угловых скобках, потом уже под это начали подводить какую-то базу. Причем сначала пытались выдать html за sgml, типа похоже. Потом за xml. Потом от идеи считать его xml-ом - опять отказались. Чего только ни придумывали.
А потом догоняющие чмоньки начали реветь и придумывать "стандарты" из головы, да
https://en.wikipedia.org/wiki/HTML
>In 1980, physicist Tim Berners-Lee, a contractor at CERN, proposed and prototyped ENQUIRE, a system for CERN researchers to use and share documents.
>The first publicly available description of HTML was a document called "HTML Tags",[5] first mentioned on the Internet by Tim Berners-Lee in late 1991.
HTML придумали физики а не майкрософт
В смысле от балды? Его же Тим Бернерс-Ли придумал для обмена документацией и отхода от сложности SGML, причем начал опять таки в 1986г.
>отхода от сложности
То есть он не осилил никакой SGML и от балды взял несколько тегов в угловых скобках, типа "и так норм )))" О чем и разговор.
"Физики" придумали неюзабельную хуиту, которая никогда бы за пределы их задроченных кабинетов бы не вышла, если бы не микрософт и другие коммерческие компании. Но ты можешь дрочить на ламповых занюханных чмошных физиков, конечно, и рассказывать, что вот тогда-то интернет был торт, а потом пришло быдло и все испортило.
>удобно
Ты ебанулся? Самопальный конфиг для вебпака будет удобнее, чем разработка на некстовом.
некст потому и взлетел, что для его использования не нужно дрочить самопальный конфиг
@
маркетологи и инфоцыгане PROFIT
Так уже сказали же что SSR в нём не обязательно использовать
Чем самопальный удобнее? Тебе удобно ковыряться с настройкой вебпака чтобы потом иметь меньше фич, чем есть в дефолтном нексте? И добавлять плагины в конфиг некста очень легко, так что я хз до чего ты доебался.
не знаю. вероятно проблема со стороны сео, но может быть и такое что яндексу нужен особый подход
Какие же вы бесполезные, фронтендеры.
Пока пердолишься в микросервисную архитектуру, меш сетей, nginx, helm, kong, пострес и обычный бэк: у вас проблема как кнопочку покрасить, тьфу блять.
Все баззворды собрал, думаешь на собеседовании очаровать кого-то и тебе поверят?
Не все, но откуда же такому дауну как ты знать про кубер, ингрес, грейлог, графану. Максимум, ты про сентри что-то слышал)))
Точно, ладно. Мы вам перезвоним
Ваше мнение очень важно для нас. Спасибо за ваш комментарий, пожалуйста оставайтесь на связи.
>>283372
>кубер, ингрес, графану
Пойдёт
>грейлог
Говно, есть loki
>микросервисную архитектуру, меш сетей, nginx, helm, пострес
Норм
>kong
Пораша говна для даунов не сумевших в NGINX
>сентри
Хуета для обоссаных аутистов. Вместо того, чтобы просто отправить текст ошибки на сервер и там его обработать нормальными инструментами, а позже просматреть при помощи Loki и Grafana - ты ставишь какую-то убогую хуету, с каким-то уёбищными графиками
А теперь оправдывайся, почему ты не осилил программирование и пошёл макакить yaml конфиги? У вас в девопсинге даже инструментов нормальных не завезли. Вы литерали руками пишете в yaml/HCL/env конфиги, там, где нормальный программист с ебанул бы цикл, прошёлся бы по хешмапе, и вообще генерацию конфгурации на своём любимом языке вынес бы в отдельный модуль
Ты можешь начинающих React разработчиков пытаться ввести в заблуждение, но меня не наебёшь. Мимо СТО
>А теперь оправдывайся, почему ты не осилил программирование и пошёл макакить yaml конфиги?
Щас тебе за щеку насую, СТО ты мамкин. Я бэкендер и с этой парашей работаю параллельно с бизнес задачами, девопс твой конфиг докера пердолить не будет, ci-cd в проекте не настроит, максимум шаблон даст, да даже логи для тупых фронтов не посмотрит.
Речь сейчас идет о существах которые зовут себя программистами, но по не могут зайти через ssh на сервак, не знаю как ребутнуть такой сервак, отскейлить под когда нагрузка выросла. Все что делают существа - они рисуют формочки.
Как же у реактомакак бомбануло со своей никчемности, я в ахуе просто.
Всю перечисленную тобой хуйню уже чат гпт прекрасно делает. В то время как даже в несложную верстку он до сих пор не способен.
>зайти через ssh на сервак
Трогаешь себя там, когда это делаешь?
То есть делать ты ничего не умеешь, понятно
ПУК-СРЕНЬК, в кубере есть liveness/readiness пробы и пода должна ребутаться автоматически после стопа. Про различие проб между собой, про то что их настраиваем, мы бэки, и только мы, можем это делать, я рассказывать тебе не буду)))
>>283725
Ты хоть знаешь какой командой и как генерируются ключи чтобы пустило по ssh на тачку?)))
Второй вопрос. Если bootstrap мне может помочь, то как к нему подступиться? Я сколько раз не гуглил, какие-то говно уроки только по нему. Думаю читать документацию, но поможет ли?
>css не знаю и не могу понять
>не могу понять
Ну тебе противопоказано программирование, если ты даже буквальный текст понять не может.
Красавчик, раз знаешь)
ты наверное на компилируемых ЯП типа джавы работал. На динамических шелл дает прод env где можно выполнять код, менять логику приложения в рантайме и дебажить сложные баги.
И сделать touch, куда ж без него.
Ну, я, например, не понимаю что такое каскадность.
Хотя пытался разбираться в этом, когда еще был зеленым.
А ты уже крест ставишь.
>css
>bootstrapon
>верстать страницы
Блять
Сейчас дажи девочки за 110к рабсов "верстают" компоненты на React, использую MUI. Какой, нахуй, CSS в 2к24? Свойства задавай в виде объекта через sx={{}} в компоненте. А если нет, в крайнем случае ебани sassi hui
Вёрстки как таковой не существует уже лет пять. Дегродов, которые HTML до сих пор выдают при помощи PHP а потом сверху мажут JS считать не будем - это не люди
Не знаю что там у реакта, но у меня есть опыт написания примитивного компонента на вуе.
Там же все равно верстку нужно делать в секции <template>.
- Сначала просмотрю курс от МФТИ по компьютерным сетям + по алгосам от того же вуза.
- Потом кантор.
- дока по реакту.
Дальше пока не знаю
Что я из этого курса должен вынести?
Я ж пройду и всё забуду просто
Сделай потом что-то своё с изучаемыми технологиями, вспомнишь что не запомнил.
Конспектируй каждую главу. После прочтения и конспекта пытайся пересказать своими словами. Уделяй практике как минимум час после прочтения каждой главы.
Не понял почему ты до sentry доебался, там интеграция с prometheus и grafana есть
А это таки модно на сегодня? Ну, чтобы учить наверняка, чтобы на работу точно приняли!
Я просто выпал из вката в ойти на несколько лет, без понятия, какие сейчас тренды.
Раньше мюи все советовали, но он мне не нравится потому что pay to use никому не нравится.
Mantine на голову лучше всего перечисленного
В launch.json для vscode написал
"localRoot": "${workspaceFolder}",
"remoteRoot": "/app"
Почему-то дебагер ищет сурсмапы локально, а не использует те, что в контейнере.
Соответственно работатет, если я локально создам сурсмапы с помощью nest build, а без локальных сурсмапов ругается что не может окрыть файл.
Это нормально? Чтобы локально не искало сурсмапы, надо обязательно исходники запихать в контейнер?
Пусть девопс-макака копошится с кубером
Сорс мапы указывают путь к файлу сорсов и не содержат самого исходного кода, в тсконфиге, например, для того чтобы включить сам сорс код нужно включать флаг inlineSources при компиляции.
тяжело кастомизировать - вон radix ваще голый а над шедом у тебя сто процентный контроль
и шед вроде на радиксе и тейлвинде запилен
Mantine тоже позволяет в голом режиме использовать его
Я не вижу причины его существования. Тебе чего от логов надо, читать их, делать выборку и поиск по ним, визуализацию, например, как часто те или иные события возникают и дальше их обрабатывать, например, кидать алерты. Какие лучшие инструменты для этого, Loki и его аналоги и Grafana / Power BI (если ты обезьяна). Является ли sentry лучшим в этих видах? Нет. Так зачем его брать? Может, он много полезной работы за тебя делает? Нет. Так как утилита, собирающая логи и выдающая логи пишутся за день - подними express() принимай текст с клиента, логируй в текстовый файл при помощу Winston или его аналогов, которые умеют в ротацию логов. Потом это всё Loki скорми. На клиенте глобальный хендлер ебани - это умеет любой язык, и кусочек кода напиши, который будет в очередь сохранять ошибки со стектрейсом и пытаться их отправить на сервер. Всё, то есть вместо того, чтобы сделать за день и получить свободу в выборе лучших инструментов, ты завязываешься на нелучшее говно, так ещё и за это деньги будешь платить, так как быстро в лимиты бесплатной версии упрёшься. А потом ещё захочешь странного, и твой срунти не предоставит этого, и будешь долбить поддержку, форумы или пердолиться с исходниками, плюясь
>интеграция с prometheus и grafana
Интеграция говна. Мне надо норм инструментами по логам ходить, а не просто видеть общее количество ошибок
>>283994
>shadcn
Жертва бутстрапа, плез. Пикрил приложен. Я для кого, тупая ты макака, объяснял выше, что CSS сдох, и задавать стили в текстовом виде - это параша говна, которая умерла лет 5 назад. Сегодня стиль элемента - это объект на языке, который ты передаёшь в компонент, а не текст, который ты где-то там в *.css файлах описал. И с объектам я могу, пользуясь языком, делать что хочу, а с твоим текстовым классом могу получить только хуйца. Отвыкайте уже от CSS/HTML/JS и переходите на парадигму, на который пишут все норм челики, что в C++ QT, что в JAVA, что в Dart. Когда ты в коде создаёшь элемент и в коде же имеешь доступ ко всем его свойствам и методам, а не где-то там у теня есть HTML ты ссылку на него в JS пиздишь при помощи селекторов, и где-то там есть CSS свойства, которые ещё и перезатирают друг друга (каскадность, хули), и ты к ним уважительно по текстовому имени обращаешся
>Mantine
Норм но страшновато. Явно делал чел, который любит ДСП столы, барсетку и квадратные листочки с наклеечкой. Сравни пикрил 2 и 3. Нахуй в третьем две стрелки. Хули label ярче текста. Хули label такой большой. Да там всё плохо. Хули оно такое мелкое даже на мобиле, есть же стандартные советы по размеру элементов от Goolge и Apple, я же не девочка десяти лет, чтобы попадать в эти двадцать пикселей. При этом ни анимации, как в MUI, нихуя
>radix
Не сморел
>тяжело кастомизировать
ЗОЧЕМ?? ААА? Зачем ты кастомизируешь, то что и так норм. Стили поменять не проблема. Хочешь кастомно пиши свой компонент. А то возьмёте готовое, а потом ломаете
Не понимаю, что вас на всякое говно тенят, лишь бы не мейнстрим. Нет ничего плохого в мейнстриме, если он топ
С любовью ваш HTML-трейни-тимлид СТО
\
дауны
Потому что в твиттере нет наркоманов типа Даньки Абрамова, который бы залетел в Пейсбук и начал рекламировать чистый JS. Люди быдло, следуют не разуму, а в то место куда пастух поведет.
У Fireship нет видео о MUI, значит MUI не существует, ты меня наебываешь.
И никогда не станете выше джуна потому что весь реальный опыт можно получить только на работе
Даже дяди с годами опыта не могут щас найти работу
На что надеяться в этом треде?
Крестик носите?
фуллстек-Js еще востребован?
сидеть сложа руки
Вкатываться в сложные языки без бешенной конкуренции, но точно уж не надеяться что ты будешь тем самым из 10к отликов
>. Так зачем его брать? Может, он много полезной работы за тебя делает? Нет. Так как утилита, собирающая логи и выдающая логи пишутся за день - подними express() принимай текст с клиента, логируй в текстовый файл при помощу Winston или его аналогов, которые умеют в ротацию логов. Потом это всё Loki скорми. На клиенте глобальный хендлер ебани - это умеет любой язык, и кусочек кода напиши, который будет в очередь сохранять ошибки со стектрейсом и пытаться их отправить на сервер.
Нахера мне эти велосипеды писать, если мне sentry предоставляет библиотеку для ловли ошибок на фронтенде
>CSS сдох, и задавать стили в текстовом виде - это параша говна, которая умерла лет 5 назад
В твоих тир 3 галерах на помойных проектах может и да. Я вот работаю в тир 1 компаниях последние 5 лет и мы всегда делали стили на scss модулях, а сейчас уже просто на css модулях, scss больше не нужен, чем меньше костылей, тем лучше, и это круто, когда нативное решение предоставляет всё необходимое.
>Сегодня стиль элемента - это объект на языке, который ты передаёшь в компонент, а не текст, который ты где-то там в *.css файлах описал. И с объектам я могу, пользуясь языком, делать что хочу, а с твоим текстовым классом могу получить только хуйца
Да мы поняли уже ты дитя CSS-in-JS хайпа.
>Не понимаю, что вас на всякое говно тенят, лишь бы не мейнстрим. Нет ничего плохого в мейнстриме, если он топ
Тебя как раз тянет на CSS-in-JS хайп-парашу, в то время как норм пацаны пишут на мейнстримной классике - css модулях.
>CSS-in-JS
Кто и нахуя это вообще придумал? Это так же неудобно звучит, как и пишется. Кто те долбоебы, что решили, что писать, а тем более читать вместо одного слова лишних пять очень удобно, так еще и в js-файле?
>мы всегда делали стили на scss модулях, а сейчас уже просто на css модулях, scss больше не нужен
А что изменилось? Я вот SASS этот ваш пробую
мимо-вкатун
>я только начал его трогать
Ну проорать тогда только можно с твоих визгов про сложность. Даже про css первое время все так визжали, мол нихуя непонятно
Это понятно. Я именно про знакомство с чем-либо новым. Первое время всегда нихуя не понятно
В css добавили много фичей
>самое изичное
>самый пиздец
Бтв на высоком уровне все будет пиздецом. Поэтому разница в сложности это обычные взвизги
> Я правильно пынямаю чтобы на РАБотку взяли примерно на таком уровне нужно код писать?
Вызов апи эндпоинта и вызов фетча с предустановленным env вынеси в отдельные функции
Да эт не мое мля, я вообще не понимаю что там написано
Че с ним не так?
Это победа или хуйня?
Как учился расскажи, плес.
Тоже хочу вкатиться, но пока только начинаю курить, и что-то оно очень тажко идет, походу я слишком даун.
Фронтенд очень нравится, но без понятия как нормально практиковать js
1292x1032, 1:08
Создавай свою борду, как я когда-то.
мета поиск по интернет магазинам своей мухосрани
продай кабанчикам владельцам ломбардов чтобы их сотрудники могли в два клика пробить прайс барахла что им принесли
работает просто
строка для поиска куда ты пишешь свой запрос
запрос отправляется в разные инет магазины в их поиск, результат парсится и вываливается в таблицу где есть фильтрация пейджинг и сортировка
>мета поиск по интернет магазинам своей мухосрани
В моем случае вообще не вариант. Из крупных магазинов есть только днс и билайн. У менее крупных сайта в принципе нет
спасибо, но почитаю двачик и в среднем у джунов віше 64к рублей зп (700 дол) - хуй знает...
>>284896
Для начала - английский хотя бы Б2 (будет намного легче)
С появлением ЧатГПТ - достаточно легко учить
Начинал с freecodecamp - увидел HTML - думал я это не выучу, потом заметил что там каждый открытый тег = закрытый тег, и стало проще
и так потихоньку кушаешь слона, делаешь заметки, гуглишь все непонятные слова, и все получится)
у меня ушел 1 год ровно на с 0 до получения работы джуна первой
пиздец ты тупой
И стоит соответственно вопрос: насколько актуален бек на ноде? Лучше ли он чем тот же Го?
Какой на нода-бекенд стек и откуда соответственно брать информацию?
Всех заранее благодарю за ответы всей душой и нежно целую в лобик
Бек на ноде актуален, но если тебе хочется максимальной актуальности, то пхп, питон, джава, сишарп, го более популярны на бекенде.
Бек на ноде хуже го в плане перформанса, но лучше в плане скорости разработки, удобства разработки, и самое главное — го язык довольно уродливый и неудобный, без негатива, просто так его задумали, а тайпскрипт прекрасный и элегантный, с отличной системой типов, гибкий, с приятным синтаксисом.
Стек это самая нода, фреймворк нест либо фастифай, либо велосипед над экспрессом, потому что экспресс это тупо роутер, а дальше как по стандарту — OpenAPI/Swagger, Postgresql, Redis, Rabbitmq/Kafka/NATS, кликхаус, Prometheus с графаной и локи, какой-нибудь minio под файлохранилку, nginx, docker swarm / кубер. Информацию очевидно брать из вакансий топовых контор, например.
Так я и говорю, что го популярнее.
Ну и джуны не очень нужны.
разобрался!
Асинхронность живет своей жизнью, если надо зафетчить что-то в компоненте, нужно либо пилить свой костыль на useEffect, либо использовать чужой, например tanstack query, либо вообще стейт менеджмент. Если раньше ты использовал синхронные функции в асинхронных и было понятно, как это в приницпе работает, реакт по эту ситуацию инвертирует и теперь тебе в синхронных компонентах нужно использовать асинхронность, что ломает мозг поначалу.
Правда вероятно это общая проблема клиент-сайд рендеринга, а не конкретно реакта.
>>285007
Прикол бэка на жс сейчас это монорепозитории, когда бэк и фронт в одной репе, бэк на Next или Remix, и можно использовать серверные компоненты и штуки типа tRPC и server actions. Го и Питон так не могут и не смогут никогда, там только no-js решения типа htmx, но оно совершенно по другому работает. Но это больше для хипстеров из твиттера и индивидуальных и малых манябизнесменов, чем для поиска реальной работы.
>>285034
Джуновские вакансии это Джокушка ловушкера, чтобы пришёл чел с синдромом самозванца, поднатарел, и начал работать как миддл, а Кабан ему продолжил бы платить как ждуну. Но даже Кабаны понимают что это залупа какая-то и проще нанимать миддлов-самозванцев, уверенно накручивающих опыт.
>Прикол бэка на жс сейчас это монорепозитории, когда бэк и фронт в одной репе, бэк на Next или Remix, и можно использовать серверные компоненты и штуки типа tRPC и server actions. Го и Питон так не могут и не смогут никогда, там только no-js решения типа htmx, но оно совершенно по другому работает. Но это больше для хипстеров из твиттера и индивидуальных и малых манябизнесменов, чем для поиска реальной работы.
У меня на работе так, монорепа Next + Nest, но без смузявого trpc, у нас OpenAPI и просто пакет shared types. В реальной работе такого много, но на западе, по крайней мере в молодых и свежих проектах, например в крипте очень часто так делают.
>Но это больше для хипстеров из твиттера и индивидуальных и малых манябизнесменов, чем для поиска реальной работы
Ты про htmx?
>Тебе удобно ковыряться с настройкой вебпака чтобы потом иметь меньше фич, чем есть в дефолтном нексте?
В дефолтном нексте ты в один прекрасный момент столкнешься с тем, что то, что делается элементарно на своем конфиге в пару строк на нексте вообще сделать невозможно. Даже через специальную опцию под конфиг вебпука в конфиге некста.
>Надо как-то по-особому код писать, чтобы минификация удалась?
Да, но всем похуй. Получишь экономию на спичках при в разы большей когнитивной нагрузке при написании кода
Просто юзаешь tanstack query и не знаешь бед.
>css модулях
>костылей
>нативное решение
Блять
Ты совсем отбитый. Ты не программировал нихуя. Ты не знаешь, как пишется софт, ты не видел QT, на котором, кстати работает твой браузер и операционка, на который ты запускаешь свой CCS, ты не видел крестов, ты не писал на Flash/JAVA. Ты нихуя не знаешь. Ты опущь отрыжки IT. Нахуй ты что-то пишешь, вместо того, чтобы получиться пару лет. Поясняю
>css модулях
CSS модули не нужны - у тебя вместо этого объекты. Ты вместо
.pidor {
font-size: 16px
background: #FF0000
}
Пишешь
export const pidor = { fontSize: '16px', background: "#FF0000" }
Разница в том, что во втором варианте у тебя есть язык. В первом у тебя есть только убогие модули
>костылей
>нативное решение предоставляет всё необходимое
Тупой даун рассуждает за костыли. А ты в курсе, что твой CSS - это костыль. Что вместо того, чтобы работать с объектами, ты пишешь текст. который пердолит парсер CSS и о чудо, также применяет эти свойства к объектам. Но ты тупой, ды даже никогда не интересовался, как работает та штучка, которая приносит тебе покушать
>Я вот работаю в тир 1 компаниях
Выебёваться тем, какой крутой папик тебя снял - признак опущенца. И я не работаю в галерах, а только за проценты
>CSS-in-JS
Даун, я тебе зачем сто раз объяснял про объекты - это раз. Два, какое нахуй CSS in JS, когда tsx. Ты в силу отсутсвия опыта не можешь поверить, что кто-то не просто читает туториалы и мыслит концепциями, а делает так, как удобно и эффективно, что потом становится мейнстримом. Я - мейнтсрим, ты слепок из прочитанных туториалов
А вообще я хочу развития wasm, чтобы бомжи, типо тебя, отправились на помойку, как это сделали PHP-господа. К сожалению, люди тупы. Фигма, которой полюзуется весь мир, в том числе твоя тир-1 галера, продемонстировала, что можно делать приложения без всего этого говна. Но дауны слабы интелектуально, то, что я говорю, до них дойдёт через несколько лет, когда, должно было уже лет 5 назад, а то, что делает условная фигма, для них просто аутстендинг и дойдёт только лет через 5 - 10
>css модулях
>костылей
>нативное решение
Блять
Ты совсем отбитый. Ты не программировал нихуя. Ты не знаешь, как пишется софт, ты не видел QT, на котором, кстати работает твой браузер и операционка, на который ты запускаешь свой CCS, ты не видел крестов, ты не писал на Flash/JAVA. Ты нихуя не знаешь. Ты опущь отрыжки IT. Нахуй ты что-то пишешь, вместо того, чтобы получиться пару лет. Поясняю
>css модулях
CSS модули не нужны - у тебя вместо этого объекты. Ты вместо
.pidor {
font-size: 16px
background: #FF0000
}
Пишешь
export const pidor = { fontSize: '16px', background: "#FF0000" }
Разница в том, что во втором варианте у тебя есть язык. В первом у тебя есть только убогие модули
>костылей
>нативное решение предоставляет всё необходимое
Тупой даун рассуждает за костыли. А ты в курсе, что твой CSS - это костыль. Что вместо того, чтобы работать с объектами, ты пишешь текст. который пердолит парсер CSS и о чудо, также применяет эти свойства к объектам. Но ты тупой, ды даже никогда не интересовался, как работает та штучка, которая приносит тебе покушать
>Я вот работаю в тир 1 компаниях
Выебёваться тем, какой крутой папик тебя снял - признак опущенца. И я не работаю в галерах, а только за проценты
>CSS-in-JS
Даун, я тебе зачем сто раз объяснял про объекты - это раз. Два, какое нахуй CSS in JS, когда tsx. Ты в силу отсутсвия опыта не можешь поверить, что кто-то не просто читает туториалы и мыслит концепциями, а делает так, как удобно и эффективно, что потом становится мейнстримом. Я - мейнтсрим, ты слепок из прочитанных туториалов
А вообще я хочу развития wasm, чтобы бомжи, типо тебя, отправились на помойку, как это сделали PHP-господа. К сожалению, люди тупы. Фигма, которой полюзуется весь мир, в том числе твоя тир-1 галера, продемонстировала, что можно делать приложения без всего этого говна. Но дауны слабы интелектуально, то, что я говорю, до них дойдёт через несколько лет, когда, должно было уже лет 5 назад, а то, что делает условная фигма, для них просто аутстендинг и дойдёт только лет через 5 - 10
Не понял что ты подразумеваешь под dynamic function.
Зачем ты так порвался?
>Ты не знаешь, как пишется софт, ты не видел QT, на котором, кстати работает твой браузер и операционка, на который ты запускаешь свой CCS, ты не видел крестов, ты не писал на Flash/JAVA.
Видел QT, и писал десктопный/мобильный софт на разных инструментах. В вебе чистый css это лучшее решение, если ты не согласен, то ты не понимаешь как устроен браузер. Так что тебе требуется образование, вместо этого ты с напыщенным видом рвёшься на дваче.
>А ты в курсе, что твой CSS - это костыль. Что вместо того, чтобы работать с объектами, ты пишешь текст. который пердолит парсер CSS и о чудо, также применяет эти свойства к объектам
Я в курсе, а ещё в курсе, что при использовании CSS-in-JS костылей к парсингу CSS добавляется лишний шаг, который ещё и выполняется в JS. Просто я не макака, которая пишет третьесортные продукты, в которых команда забивает на производительность.
>Даун, я тебе зачем сто раз объяснял про объекты - это раз. Два, какое нахуй CSS in JS, когда tsx. Ты в силу отсутсвия опыта не можешь поверить, что кто-то не просто читает туториалы и мыслит концепциями, а делает так, как удобно и эффективно, что потом становится мейнстримом. Я - мейнтсрим, ты слепок из прочитанных туториалов
Ты просто придираешься к терминам из-за бессильной злобы. Под CSS-in-JS подразумеваются билиотеки типа styled-components и emotion, и всем очевидно, что написание стилей при использовании этих библиотек делается в том числе jsx/tsx файлах. А мейнстрим всё-таки css, а не твои костылики. Тебе реактомакаке не понять, ты вряд ли видел как пределами твоего мирка пишутся веб-приложения на взлослых фреймворках.
>А вообще я хочу развития wasm, чтобы бомжи, типо тебя, отправились на помойку, как это сделали PHP-господа. К сожалению, люди тупы. Фигма, которой полюзуется весь мир, в том числе твоя тир-1 галера, продемонстировала, что можно делать приложения без всего этого говна. Но дауны слабы интелектуально, то, что я говорю, до них дойдёт через несколько лет, когда, должно было уже лет 5 назад, а то, что делает условная фигма, для них просто аутстендинг и дойдёт только лет через 5 - 10
99% приложений не требутся того, что делается в фигме. Для 99% приложений и через 5-10 лет лучшим решением будет применение дефолтного ангуляра/вью/реакта с тайпскриптом без всякого wasm. Wasm уже развился, и не сегодня и не вчера. Вперёд, делай веб-приложения на blazor, лол.
Зачем ты так порвался?
>Ты не знаешь, как пишется софт, ты не видел QT, на котором, кстати работает твой браузер и операционка, на который ты запускаешь свой CCS, ты не видел крестов, ты не писал на Flash/JAVA.
Видел QT, и писал десктопный/мобильный софт на разных инструментах. В вебе чистый css это лучшее решение, если ты не согласен, то ты не понимаешь как устроен браузер. Так что тебе требуется образование, вместо этого ты с напыщенным видом рвёшься на дваче.
>А ты в курсе, что твой CSS - это костыль. Что вместо того, чтобы работать с объектами, ты пишешь текст. который пердолит парсер CSS и о чудо, также применяет эти свойства к объектам
Я в курсе, а ещё в курсе, что при использовании CSS-in-JS костылей к парсингу CSS добавляется лишний шаг, который ещё и выполняется в JS. Просто я не макака, которая пишет третьесортные продукты, в которых команда забивает на производительность.
>Даун, я тебе зачем сто раз объяснял про объекты - это раз. Два, какое нахуй CSS in JS, когда tsx. Ты в силу отсутсвия опыта не можешь поверить, что кто-то не просто читает туториалы и мыслит концепциями, а делает так, как удобно и эффективно, что потом становится мейнстримом. Я - мейнтсрим, ты слепок из прочитанных туториалов
Ты просто придираешься к терминам из-за бессильной злобы. Под CSS-in-JS подразумеваются билиотеки типа styled-components и emotion, и всем очевидно, что написание стилей при использовании этих библиотек делается в том числе jsx/tsx файлах. А мейнстрим всё-таки css, а не твои костылики. Тебе реактомакаке не понять, ты вряд ли видел как пределами твоего мирка пишутся веб-приложения на взлослых фреймворках.
>А вообще я хочу развития wasm, чтобы бомжи, типо тебя, отправились на помойку, как это сделали PHP-господа. К сожалению, люди тупы. Фигма, которой полюзуется весь мир, в том числе твоя тир-1 галера, продемонстировала, что можно делать приложения без всего этого говна. Но дауны слабы интелектуально, то, что я говорю, до них дойдёт через несколько лет, когда, должно было уже лет 5 назад, а то, что делает условная фигма, для них просто аутстендинг и дойдёт только лет через 5 - 10
99% приложений не требутся того, что делается в фигме. Для 99% приложений и через 5-10 лет лучшим решением будет применение дефолтного ангуляра/вью/реакта с тайпскриптом без всякого wasm. Wasm уже развился, и не сегодня и не вчера. Вперёд, делай веб-приложения на blazor, лол.
>делай веб-приложения на blazor, лол
Учитывая все "превосходство" blazor-а, делать веб на вишневом blazer-е будет эффективнее
>тред про js
>24/7 срач про css
>к парсингу CSS добавляется лишний шаг
Нет, тупой даун. Ты не умеешь писать, код. Ты не видел QT, иначе бы ты мне тут не порол чушь. Это проверяется за час. Открываешь и читаешь, как парсится CSS
https://chromium.googlesource.com/chromium/blink/+/refs/heads/main/Source/core/css/parser
Потом открываешь и смотришь, как идёт работа с DOM
https://chromium.googlesource.com/chromium/blink/+/refs/heads/main/Source/core/dom
И ты увидишь, что если ты используешь CSS в файле или CSS in JS о которым ты тут талдычишь и пытаешься мне его приписать, хотя я никогда в жизни не использовал, а использовал объекты, то CSS парсится, то есть, его текст разибрается на токены, а потом добавляется, как атрибуты к нодам DOM. Если ты или твой фреймворк добавляет атрибут к ноде через JS, то никакого парсинга CSS не происходит
Поэтому я и написал, что ты не умеешь програмировать и ничего не видел, на шаришь за производительность. Потому, что разрабочик изучает используемый инструментарий, а ты этого не делаешь
Для тех кто не шарит. Это CCS in JS
const className = `
color: red;
font-weight: bold;
`;
А это объект
const className = {
color: 'red'
padding: '20px'
}
>Ты просто придираешься к терминам из-за бессильной злобы.
У меня нет злобы. Я пытаюсь вас хоть чему-то научить. И мне не особо интересно, что там подразумевается. Это термин, придуманный чтобы опять двигать какую-то концепцию. Большинство разрабов мыслит концепциями. А этом треде проявление этого. Это всякие люди, которые приходят и спрашивают: "Посоны, а что учить?". Они учат, что им дают, БЭМ, вью, ангуляр, редакс, что им не скорми, они не шарят. А потом оказывается, что, ой, оно устарело, надо мобикс, реакт. Я же мыслю не так. Я иду изучаю инструмент, и выбираю лучшее. Через годы макакичи доходят своими мозгами до моих подходов, а потом мне рассказывают, что я там что-то скопировал, потому, что мой подход похож на то, что они родили. У меня опускаются руки.
>99% приложений не требутся того, что делается в фигме
100% требуется то, что делает фигма. Просто есть макаки, которые не умеют. Они рассказывают, что НИНУЖНА. Это как с REST, когда давно можно уже гонять данные через UDP, макаки обмазываются TCP HTTP, долбят фетч запросами вместо нормланого соединения, срут кодами ответа в HTTP заголовки, а потом мне ещё расскаывают, что сокеты - это ДОРАГА, ты НИПАНИМАИШЬ! То же самое про сборку - всё собирается из трёх языков HTML/JS/CSS, хотя в реальности всё это исполняет программа на одном языке и этот язык C++
>Wasm уже развился
Нет. Тулинга нет. Про развился может написать только даун, которому и в блокноте норм. Бытро ответил мне, как ты дебажишь васм в бараузере?
>blazor
Так ты масдай макака. Я так и знал. Поэтому ты нихера не знаешь. "Мам, я ниасили C++ и линапс, там страшные темплейты и постоянно пули в ноги летят"
>к парсингу CSS добавляется лишний шаг
Нет, тупой даун. Ты не умеешь писать, код. Ты не видел QT, иначе бы ты мне тут не порол чушь. Это проверяется за час. Открываешь и читаешь, как парсится CSS
https://chromium.googlesource.com/chromium/blink/+/refs/heads/main/Source/core/css/parser
Потом открываешь и смотришь, как идёт работа с DOM
https://chromium.googlesource.com/chromium/blink/+/refs/heads/main/Source/core/dom
И ты увидишь, что если ты используешь CSS в файле или CSS in JS о которым ты тут талдычишь и пытаешься мне его приписать, хотя я никогда в жизни не использовал, а использовал объекты, то CSS парсится, то есть, его текст разибрается на токены, а потом добавляется, как атрибуты к нодам DOM. Если ты или твой фреймворк добавляет атрибут к ноде через JS, то никакого парсинга CSS не происходит
Поэтому я и написал, что ты не умеешь програмировать и ничего не видел, на шаришь за производительность. Потому, что разрабочик изучает используемый инструментарий, а ты этого не делаешь
Для тех кто не шарит. Это CCS in JS
const className = `
color: red;
font-weight: bold;
`;
А это объект
const className = {
color: 'red'
padding: '20px'
}
>Ты просто придираешься к терминам из-за бессильной злобы.
У меня нет злобы. Я пытаюсь вас хоть чему-то научить. И мне не особо интересно, что там подразумевается. Это термин, придуманный чтобы опять двигать какую-то концепцию. Большинство разрабов мыслит концепциями. А этом треде проявление этого. Это всякие люди, которые приходят и спрашивают: "Посоны, а что учить?". Они учат, что им дают, БЭМ, вью, ангуляр, редакс, что им не скорми, они не шарят. А потом оказывается, что, ой, оно устарело, надо мобикс, реакт. Я же мыслю не так. Я иду изучаю инструмент, и выбираю лучшее. Через годы макакичи доходят своими мозгами до моих подходов, а потом мне рассказывают, что я там что-то скопировал, потому, что мой подход похож на то, что они родили. У меня опускаются руки.
>99% приложений не требутся того, что делается в фигме
100% требуется то, что делает фигма. Просто есть макаки, которые не умеют. Они рассказывают, что НИНУЖНА. Это как с REST, когда давно можно уже гонять данные через UDP, макаки обмазываются TCP HTTP, долбят фетч запросами вместо нормланого соединения, срут кодами ответа в HTTP заголовки, а потом мне ещё расскаывают, что сокеты - это ДОРАГА, ты НИПАНИМАИШЬ! То же самое про сборку - всё собирается из трёх языков HTML/JS/CSS, хотя в реальности всё это исполняет программа на одном языке и этот язык C++
>Wasm уже развился
Нет. Тулинга нет. Про развился может написать только даун, которому и в блокноте норм. Бытро ответил мне, как ты дебажишь васм в бараузере?
>blazor
Так ты масдай макака. Я так и знал. Поэтому ты нихера не знаешь. "Мам, я ниасили C++ и линапс, там страшные темплейты и постоянно пули в ноги летят"
>100% требуется то, что делает фигма
Ору с этого додика. Вот скажи, нахуя какому-нибудь озону рисковать интерфейс через канвас?
1. Читаешь доки к HTML
2. Читаешь доки к CSS
3. Верстаешь несколько лендингов по быстрому
4. Читаешь доки к JS
5. Пилишь тудушки и все что понравится из гугла по запросу "100 проектов на чистом JS за месяц", лучше гугли на англюсике
6. Читаешь доки к рякту
7. Пилишь копию Spotify для портфолио
8. ??????
9. ПРОФИТ
Ну и там гит или еще какое говно по вечерам дрочишь, если новичок в айти. Местных петучей с их модными веяниями шлешь нахуй, это потом на первой работе наверстаешь один хуй года 3 пройдет с начала обучения ХА ХА
>freecodecamp
Залупа, которая ничего не объясняет, просто пишешь код пошагово и все (по крайней мере в курсе по JS). Я понимаю, что дев должен сам уметь гуглить, искать решения, читать доки, но freecodecamp везде хвалят как лучшую бесплатную школу для старта.
ну залупа не залупа, когда чатгпт не было я был рад и этому. А так да, прошел только html+css курс, а курс джс уже скипнул и пошел своей дорогой изучать
А щас с ЧатГПТ считаю вообще нахуй не нужны все те сайты, это лучший персональный ментор
Это связано с ограничениями безопасности и архитектурными особенностями браузеров на основе Chromium (например, Google Chrome и другие браузеры на базе Chromium). Основная проблема заключается в том, что Chromium, в отличие от Firefox, строго реализует ограничения и спецификации для Web Workers, чтобы уменьшить потенциальные риски безопасности и ошибки, связанные с многопоточностью в JavaScript.
### Почему так происходит:
1. Ограничение вложенных Worker'ов в Chromium:
В Chrome (и других Chromium-based браузерах) существует ограничение на создание Worker'ов внутри других Worker'ов (вложенных Worker'ов) из соображений производительности и безопасности. Это означает, что если вы пытаетесь создать Worker внутри другого Worker'а, этот вызов может быть проигнорирован, хотя сам объект Worker и создается. Это сделано для того, чтобы избежать потенциально высоких нагрузок на ресурсы при работе с многопоточностью.
2. Спецификация Web Workers:
По спецификации, создание вложенных Worker'ов возможно, однако браузеры не обязаны поддерживать это поведение одинаково. Firefox разрешает это и может корректно отрабатывать вложенные Worker'ы, тогда как в Chromium это ограничено по умолчанию.
3. Без сообщения об ошибке:
Chromium просто молча игнорирует этот запрос, создавая объект, но не загружая скрипт, поскольку это считается нарушением ожиданий или стандартов браузера в части многопоточности. Ошибки могут не генерироваться, потому что это не является критической ошибкой с точки зрения синтаксиса или выполнения кода — это поведение просто заблокировано.
4. Воркэраунд с основным потоком:
Вы правильно нашли обходное решение: создание нового Worker'а через основной поток. Это соответствует рекомендациям по разработке, так как основной поток может лучше управлять созданием и уничтожением Worker'ов.
### Почему так не работает в Firefox?
Firefox использует несколько иную реализацию стандартов Web Workers и допускает создание вложенных Worker'ов. Это является следствием различий в реализации движков браузеров и подходов к многопоточности.
### Итог:
Основная причина заключается в ограничениях безопасности и архитектуры браузеров на основе Chromium. Если вам нужна кросс-браузерная совместимость, workaround с основным потоком является лучшим решением.
Это связано с ограничениями безопасности и архитектурными особенностями браузеров на основе Chromium (например, Google Chrome и другие браузеры на базе Chromium). Основная проблема заключается в том, что Chromium, в отличие от Firefox, строго реализует ограничения и спецификации для Web Workers, чтобы уменьшить потенциальные риски безопасности и ошибки, связанные с многопоточностью в JavaScript.
### Почему так происходит:
1. Ограничение вложенных Worker'ов в Chromium:
В Chrome (и других Chromium-based браузерах) существует ограничение на создание Worker'ов внутри других Worker'ов (вложенных Worker'ов) из соображений производительности и безопасности. Это означает, что если вы пытаетесь создать Worker внутри другого Worker'а, этот вызов может быть проигнорирован, хотя сам объект Worker и создается. Это сделано для того, чтобы избежать потенциально высоких нагрузок на ресурсы при работе с многопоточностью.
2. Спецификация Web Workers:
По спецификации, создание вложенных Worker'ов возможно, однако браузеры не обязаны поддерживать это поведение одинаково. Firefox разрешает это и может корректно отрабатывать вложенные Worker'ы, тогда как в Chromium это ограничено по умолчанию.
3. Без сообщения об ошибке:
Chromium просто молча игнорирует этот запрос, создавая объект, но не загружая скрипт, поскольку это считается нарушением ожиданий или стандартов браузера в части многопоточности. Ошибки могут не генерироваться, потому что это не является критической ошибкой с точки зрения синтаксиса или выполнения кода — это поведение просто заблокировано.
4. Воркэраунд с основным потоком:
Вы правильно нашли обходное решение: создание нового Worker'а через основной поток. Это соответствует рекомендациям по разработке, так как основной поток может лучше управлять созданием и уничтожением Worker'ов.
### Почему так не работает в Firefox?
Firefox использует несколько иную реализацию стандартов Web Workers и допускает создание вложенных Worker'ов. Это является следствием различий в реализации движков браузеров и подходов к многопоточности.
### Итог:
Основная причина заключается в ограничениях безопасности и архитектуры браузеров на основе Chromium. Если вам нужна кросс-браузерная совместимость, workaround с основным потоком является лучшим решением.
>А щас с ЧатГПТ считаю вообще нахуй не нужны все те сайты, это лучший персональный ментор
Тут согласен, дудосю им сервера своими тупыми вопросами почему и как, а он все разжевывает с примерами.
Ok, GPT, а как мне теперь между всеми этими Workers расшарить значение integer autoincremented? Я не говорю, что это обязательно переменная JS. Наверное, может быть SharedBuffer с одним единственным значением в нем, но тогда надо это все в Isolated пихать, а там уже со сторонними яваскриптами типа гугл аналитики всякой могут быть сложности. Что скажешь?
Пиздец до чего техника дошла.
Ты прям вот так и вбил сообщение анона без изменений и гопота поняла?
А в ответе есть смысл я просто не шарю?
Вообще-то я сразу подумал примерно все, что GPT и выдал. Это для сравнения с живой макакой. Просто интересно, почему срань гугловая считает приемлемым тоном хотя бы варнинг в консольке не чиркануть, что она зажопила Worker.
Для того чтобы обеспечить расшаренное автоинкрементируемое значение между Web Workers, в том числе и в основной поток, SharedArrayBuffer — это действительно подходящее решение. Однако стоит учитывать некоторые особенности и ограничения при работе с ним, особенно в контексте безопасности (например, необходимости использования [Cross-Origin-Opener-Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cross-Origin-Opener-Policy) и [Cross-Origin-Embedder-Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cross-Origin-Embedder-Policy)).
### Решение с SharedArrayBuffer
SharedArrayBuffer позволяет нескольким потокам одновременно работать с одним и тем же участком памяти. Для инкрементации целого числа в таком буфере можно использовать Atomics, чтобы обеспечить безопасные операции без гонок данных.
#### Пример использования:
1. Создаем SharedArrayBuffer для хранения числа.
2. Используем Atomics для инкремента значения этого числа в разных потоках.
Вот пример, как это может быть реализовано:
```js
// Основной поток
const sharedBuffer = new SharedArrayBuffer(4); // 4 байта для хранения одного целого числа
const sharedArray = new Int32Array(sharedBuffer); // Массив на основе sharedBuffer
// Инициализация значения
sharedArray[0] = 0; // Начальное значение инкремента
// Создание воркеров
const worker1 = new Worker('worker.js');
const worker2 = new Worker('worker.js');
// Передача sharedBuffer воркерам
worker1.postMessage(sharedBuffer);
worker2.postMessage(sharedBuffer);
worker1.onmessage = (event) => {
console.log(`Worker1: ${event.data}`);
};
worker2.onmessage = (event) => {
console.log(`Worker2: ${event.data}`);
};
```
Теперь в файле `worker.js`:
```js
onmessage = function(event) {
const sharedArray = new Int32Array(event.data); // Получаем доступ к sharedArray
// Безопасная инкрементация с использованием Atomics
const newValue = Atomics.add(sharedArray, 0, 1); // Инкрементируем sharedArray[0]
// Возвращаем новое значение в основной поток
postMessage(`New value: ${newValue + 1}`); // Возвращаем значение после инкремента
};
```
### Ключевые моменты:
- SharedArrayBuffer позволяет разделять память между потоками, что дает возможность каждому Worker'у изменять и читать одно и то же значение.
- Atomics.add() гарантирует, что операция инкремента будет атомарной, предотвращая гонки данных, даже если несколько потоков одновременно попытаются изменить одно и то же значение.
- Буфер должен быть инициализирован в основном потоке и передан в Worker'ы через `postMessage`.
### Важные замечания:
1. Безопасность:
Для использования SharedArrayBuffer в современных браузерах, включая браузеры на базе Chromium, потребуется обеспечить строгие заголовки политики безопасности:
- Cross-Origin-Opener-Policy (COOP): `same-origin`
- Cross-Origin-Embedder-Policy (COEP): `require-corp`
Это ограничивает доступ к ресурсу сторонних скриптов, таких как Google Analytics или других внешних библиотек, что может привести к конфликтам. Чтобы обойти это, можно запускать сторонние скрипты через sandbox или конфигурировать заголовки соответствующим образом.
2. Atomics:
Без использования `Atomics` могут возникать гонки данных, когда несколько потоков одновременно пытаются изменить одно и то же значение, что приведет к некорректным результатам. Atomics гарантирует, что операции чтения и записи выполняются последовательно.
3. Изоляция:
Если SharedArrayBuffer вызывает сложности с внешними скриптами (например, Google Analytics), и вы не хотите менять политики безопасности, альтернативное решение может быть более сложным:
- Использовать основной поток как координатора для рассылки и обработки инкрементов между воркерами.
- Но это может повлиять на производительность, если воркеров много и требуется высокая частота взаимодействий.
### Варианты обхода проблем с изоляцией:
- Вариант 1: Если вам действительно нужно использовать сторонние скрипты и при этом работать с SharedArrayBuffer, можно запускать логику с воркерами на другом поддомене, настроенном с нужными политиками COOP/COEP.
- Вариант 2: Если SharedArrayBuffer мешает безопасности сторонних скриптов, можно передавать данные между воркерами через основной поток, хотя это потребует больше обмена сообщениями и может слегка снизить производительность.
### Альтернативное решение без SharedArrayBuffer:
Если изменение политики безопасности слишком сложное или нежелательное, можно использовать основной поток как медиатор для инкремента значений и передачи их между воркерами. Этот подход менее эффективен, но избежит проблем с изоляцией.
Если нужно уточнить детали или рассмотреть другие варианты, дай знать!
Для того чтобы обеспечить расшаренное автоинкрементируемое значение между Web Workers, в том числе и в основной поток, SharedArrayBuffer — это действительно подходящее решение. Однако стоит учитывать некоторые особенности и ограничения при работе с ним, особенно в контексте безопасности (например, необходимости использования [Cross-Origin-Opener-Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cross-Origin-Opener-Policy) и [Cross-Origin-Embedder-Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cross-Origin-Embedder-Policy)).
### Решение с SharedArrayBuffer
SharedArrayBuffer позволяет нескольким потокам одновременно работать с одним и тем же участком памяти. Для инкрементации целого числа в таком буфере можно использовать Atomics, чтобы обеспечить безопасные операции без гонок данных.
#### Пример использования:
1. Создаем SharedArrayBuffer для хранения числа.
2. Используем Atomics для инкремента значения этого числа в разных потоках.
Вот пример, как это может быть реализовано:
```js
// Основной поток
const sharedBuffer = new SharedArrayBuffer(4); // 4 байта для хранения одного целого числа
const sharedArray = new Int32Array(sharedBuffer); // Массив на основе sharedBuffer
// Инициализация значения
sharedArray[0] = 0; // Начальное значение инкремента
// Создание воркеров
const worker1 = new Worker('worker.js');
const worker2 = new Worker('worker.js');
// Передача sharedBuffer воркерам
worker1.postMessage(sharedBuffer);
worker2.postMessage(sharedBuffer);
worker1.onmessage = (event) => {
console.log(`Worker1: ${event.data}`);
};
worker2.onmessage = (event) => {
console.log(`Worker2: ${event.data}`);
};
```
Теперь в файле `worker.js`:
```js
onmessage = function(event) {
const sharedArray = new Int32Array(event.data); // Получаем доступ к sharedArray
// Безопасная инкрементация с использованием Atomics
const newValue = Atomics.add(sharedArray, 0, 1); // Инкрементируем sharedArray[0]
// Возвращаем новое значение в основной поток
postMessage(`New value: ${newValue + 1}`); // Возвращаем значение после инкремента
};
```
### Ключевые моменты:
- SharedArrayBuffer позволяет разделять память между потоками, что дает возможность каждому Worker'у изменять и читать одно и то же значение.
- Atomics.add() гарантирует, что операция инкремента будет атомарной, предотвращая гонки данных, даже если несколько потоков одновременно попытаются изменить одно и то же значение.
- Буфер должен быть инициализирован в основном потоке и передан в Worker'ы через `postMessage`.
### Важные замечания:
1. Безопасность:
Для использования SharedArrayBuffer в современных браузерах, включая браузеры на базе Chromium, потребуется обеспечить строгие заголовки политики безопасности:
- Cross-Origin-Opener-Policy (COOP): `same-origin`
- Cross-Origin-Embedder-Policy (COEP): `require-corp`
Это ограничивает доступ к ресурсу сторонних скриптов, таких как Google Analytics или других внешних библиотек, что может привести к конфликтам. Чтобы обойти это, можно запускать сторонние скрипты через sandbox или конфигурировать заголовки соответствующим образом.
2. Atomics:
Без использования `Atomics` могут возникать гонки данных, когда несколько потоков одновременно пытаются изменить одно и то же значение, что приведет к некорректным результатам. Atomics гарантирует, что операции чтения и записи выполняются последовательно.
3. Изоляция:
Если SharedArrayBuffer вызывает сложности с внешними скриптами (например, Google Analytics), и вы не хотите менять политики безопасности, альтернативное решение может быть более сложным:
- Использовать основной поток как координатора для рассылки и обработки инкрементов между воркерами.
- Но это может повлиять на производительность, если воркеров много и требуется высокая частота взаимодействий.
### Варианты обхода проблем с изоляцией:
- Вариант 1: Если вам действительно нужно использовать сторонние скрипты и при этом работать с SharedArrayBuffer, можно запускать логику с воркерами на другом поддомене, настроенном с нужными политиками COOP/COEP.
- Вариант 2: Если SharedArrayBuffer мешает безопасности сторонних скриптов, можно передавать данные между воркерами через основной поток, хотя это потребует больше обмена сообщениями и может слегка снизить производительность.
### Альтернативное решение без SharedArrayBuffer:
Если изменение политики безопасности слишком сложное или нежелательное, можно использовать основной поток как медиатор для инкремента значений и передачи их между воркерами. Этот подход менее эффективен, но избежит проблем с изоляцией.
Если нужно уточнить детали или рассмотреть другие варианты, дай знать!
Есть уже хоть легковесный компилер на жс скалы в wasm? Ну иначе я не могу вообще придумать, зачем это в жс треде.
Он умер при рождении, в банках поигрались и хватит
Пик. По несту ищи на торрентах сливы официальных курсов от разработчиков неста.
> >css модулях
> CSS модули не нужны - у тебя вместо этого объекты. Ты вместо
> .pidor {
> font-size: 16px
> background: #FF0000
> }
> Пишешь
> export const pidor = { fontSize: '16px', background: "#FF0000" }
Съеби в свои кресты уебище и никогда сюда не залазь.
>несту
Как же проигрываю с того, у неста так и не образовалось коммюнити, в отличии от экспресса. По нему литералли кроме офф курсов ничего нет.
А как же твиттер разработчиков, охуел
А зачем он вообще нужен? Это же просто поделка под java spring, чтобы ооп-дебилам было удобно и привычно. Разрабы с IQ > 100 пользуются преимуществами мультипарадигмального языка, а не ограничиваются ооп подходами, а у джавашарпистов своих технологий хватает, зачем им еще и это.
а ты пробовал?
> По нему литералли кроме офф курсов ничего нет.
Наверное, потому что официальной доки хватает.
Особенно в асашай где сайты прямиком из 2000 - мне кажется там одни фулстаки с упором в бэк работают
сайты нахуй не нужны, фронт мобильных приложений кури
Если для тебя релокация проще, чем освоить что-то, то ты вообще можешь релоцироваться куда угодно. Поздравляю и завидую.
Или не HLS. Но что-то такое, не помню даже точно
Чтобы сразу отметать вакансии с жава-дебилами в команде.
Чтобы объяснить проблему типов и высокоуровневой синтаксической абстракции (TS + HLS) в контексте монад, давайте разложим это на более простые элементы, начиная с понятий, которые могут быть вам знакомы.
### 1. Монады:
Монады — это концепция из функционального программирования, которая помогает управлять вычислениями, особенно когда речь идёт о последовательных действиях (например, работа с состоянием, обработка ошибок, асинхронные операции и т.д.). Монада предоставляет механизм для связывания последовательных операций так, чтобы результат одной операции можно было передавать в другую, обрабатывая их в чётко определённой последовательности.
Главное, что нужно знать:
- Монада — это контейнер: она может содержать какое-то значение.
- Bind (или `flatMap`) — это функция, которая берёт значение внутри монады, выполняет над ним операцию и возвращает новую монаду.
- Return (или `of`) — это функция, которая помещает значение внутрь монады.
Например, асинхронные вычисления в JavaScript (`Promise`) можно рассматривать как монаду, так как они позволяют описывать последовательные асинхронные действия.
Продолжаем!
### 2. TypeScript (TS):
TypeScript — это язык программирования, основанный на JavaScript, который добавляет статическую типизацию. Это значит, что мы можем указывать типы данных переменных, функций и структур, что помогает избежать ошибок на этапе компиляции и делает код более предсказуемым.
### 3. HLS (High-Level Syntax):
Здесь под HLS, вероятно, имеется в виду высокоуровневый синтаксис, который помогает писать код проще и выразительнее, предоставляя абстракции, скрывающие детали низкоуровневых вычислений. В случае с монадической обработкой это позволяет скрыть сложности управления состоянием или ошибками.
### 4. Где возникают проблемы TS + HLS в контексте монад?
Когда мы пытаемся применить концепцию монад в TypeScript с использованием высокоуровневого синтаксиса, могут возникнуть некоторые проблемы:
1. Сложности с типами:
TypeScript хорошо работает с типами, но монады часто имеют сложную иерархию типов. Например, у нас может быть "монада внутри монады" (например, `Promise<Option<T>>`), и здесь возникает сложность правильной типизации. Монады требуют тщательной работы с типами, чтобы описать их правильно, а в TS не всегда удобно работать с вложенными типами.
Проблема: TS может не всегда корректно обрабатывать глубокие вложенные типы монад, что приводит к сложности с композицией операций.
2. Работа с асинхронными операциями:
Асинхронные вычисления в TypeScript представляются через `Promise`, а это своего рода монада. Однако, если мы начинаем смешивать разные монады (например, `Promise`, `Option`, `Either`), могут возникнуть проблемы с их композицией.
Например, если у нас есть `Promise<Option<T>>`, нам нужно несколько раз "распаковать" значение: сначала дождаться результата `Promise`, а затем "распаковать" значение `Option`. Это может быть громоздким и трудно выразить в TS, особенно когда необходимо делать это много раз.
Проблема: трудности с композицией асинхронных монад (например, работа с `Promise` внутри другой монады).
3. Необходимость дополнительных абстракций:
В некоторых случаях для работы с монадической структурой в TS требуются специальные библиотеки или утилиты, чтобы было легче композировать и связывать операции. Например, такие библиотеки, как `fp-ts`, предоставляют специальные функции для работы с монадой `Either`, `Option`, `Task`, что добавляет абстракцию над стандартными механизмами TypeScript.
Проблема: без дополнительных утилит монадические операции становятся сложными и громоздкими.
### 5. Пример на TypeScript
Давайте рассмотрим пример с монадой `Option` (которая представляет собой "наличие или отсутствие значения") и `Promise`.
```typescript
// Пример с монадами Option и Promise
// Возвращает Option с данными
function getData(): Option<number> {
return some(10);
}
// Оборачиваем Option в Promise
function getAsyncData(): Promise<Option<number>> {
return Promise.resolve(getData());
}
// Используем монаду Option и Promise вместе
getAsyncData()
.then(option => option.fold(
() => console.log('Нет данных'),
(value) => console.log(`Значение: ${value}`)
));
```
Здесь, даже для простого примера, приходится использовать вложенные операции (`then` для `Promise`, `fold` для `Option`). Если добавить больше сложных операций, код быстро становится трудно читаемым и поддерживаемым.
### 6. Заключение:
Проблемы TS + HLS в контексте монад связаны с:
- Сложностью типизации и композиций монад;
- Трудностями в работе с асинхронными монадическими структурами;
- Необходимостью использования дополнительных библиотек для упрощения работы с монадами.
Монады — мощная концепция, но их реализация в TypeScript не всегда проста из-за сложных типов и асинхронных вычислений.
Чтобы объяснить проблему типов и высокоуровневой синтаксической абстракции (TS + HLS) в контексте монад, давайте разложим это на более простые элементы, начиная с понятий, которые могут быть вам знакомы.
### 1. Монады:
Монады — это концепция из функционального программирования, которая помогает управлять вычислениями, особенно когда речь идёт о последовательных действиях (например, работа с состоянием, обработка ошибок, асинхронные операции и т.д.). Монада предоставляет механизм для связывания последовательных операций так, чтобы результат одной операции можно было передавать в другую, обрабатывая их в чётко определённой последовательности.
Главное, что нужно знать:
- Монада — это контейнер: она может содержать какое-то значение.
- Bind (или `flatMap`) — это функция, которая берёт значение внутри монады, выполняет над ним операцию и возвращает новую монаду.
- Return (или `of`) — это функция, которая помещает значение внутрь монады.
Например, асинхронные вычисления в JavaScript (`Promise`) можно рассматривать как монаду, так как они позволяют описывать последовательные асинхронные действия.
Продолжаем!
### 2. TypeScript (TS):
TypeScript — это язык программирования, основанный на JavaScript, который добавляет статическую типизацию. Это значит, что мы можем указывать типы данных переменных, функций и структур, что помогает избежать ошибок на этапе компиляции и делает код более предсказуемым.
### 3. HLS (High-Level Syntax):
Здесь под HLS, вероятно, имеется в виду высокоуровневый синтаксис, который помогает писать код проще и выразительнее, предоставляя абстракции, скрывающие детали низкоуровневых вычислений. В случае с монадической обработкой это позволяет скрыть сложности управления состоянием или ошибками.
### 4. Где возникают проблемы TS + HLS в контексте монад?
Когда мы пытаемся применить концепцию монад в TypeScript с использованием высокоуровневого синтаксиса, могут возникнуть некоторые проблемы:
1. Сложности с типами:
TypeScript хорошо работает с типами, но монады часто имеют сложную иерархию типов. Например, у нас может быть "монада внутри монады" (например, `Promise<Option<T>>`), и здесь возникает сложность правильной типизации. Монады требуют тщательной работы с типами, чтобы описать их правильно, а в TS не всегда удобно работать с вложенными типами.
Проблема: TS может не всегда корректно обрабатывать глубокие вложенные типы монад, что приводит к сложности с композицией операций.
2. Работа с асинхронными операциями:
Асинхронные вычисления в TypeScript представляются через `Promise`, а это своего рода монада. Однако, если мы начинаем смешивать разные монады (например, `Promise`, `Option`, `Either`), могут возникнуть проблемы с их композицией.
Например, если у нас есть `Promise<Option<T>>`, нам нужно несколько раз "распаковать" значение: сначала дождаться результата `Promise`, а затем "распаковать" значение `Option`. Это может быть громоздким и трудно выразить в TS, особенно когда необходимо делать это много раз.
Проблема: трудности с композицией асинхронных монад (например, работа с `Promise` внутри другой монады).
3. Необходимость дополнительных абстракций:
В некоторых случаях для работы с монадической структурой в TS требуются специальные библиотеки или утилиты, чтобы было легче композировать и связывать операции. Например, такие библиотеки, как `fp-ts`, предоставляют специальные функции для работы с монадой `Either`, `Option`, `Task`, что добавляет абстракцию над стандартными механизмами TypeScript.
Проблема: без дополнительных утилит монадические операции становятся сложными и громоздкими.
### 5. Пример на TypeScript
Давайте рассмотрим пример с монадой `Option` (которая представляет собой "наличие или отсутствие значения") и `Promise`.
```typescript
// Пример с монадами Option и Promise
// Возвращает Option с данными
function getData(): Option<number> {
return some(10);
}
// Оборачиваем Option в Promise
function getAsyncData(): Promise<Option<number>> {
return Promise.resolve(getData());
}
// Используем монаду Option и Promise вместе
getAsyncData()
.then(option => option.fold(
() => console.log('Нет данных'),
(value) => console.log(`Значение: ${value}`)
));
```
Здесь, даже для простого примера, приходится использовать вложенные операции (`then` для `Promise`, `fold` для `Option`). Если добавить больше сложных операций, код быстро становится трудно читаемым и поддерживаемым.
### 6. Заключение:
Проблемы TS + HLS в контексте монад связаны с:
- Сложностью типизации и композиций монад;
- Трудностями в работе с асинхронными монадическими структурами;
- Необходимостью использования дополнительных библиотек для упрощения работы с монадами.
Монады — мощная концепция, но их реализация в TypeScript не всегда проста из-за сложных типов и асинхронных вычислений.
Кое-как сделал, заткнул дырку, и забил.
Щас наткнулся на этот же код, смог понять за 10 секунд, что тут и как. А тогда сидел, вообще нихера не понимал, что тут творится...
Какие-то кложуры, колбэки, апплаи... Щас смешно немного.
>твоих протыков
Я не знаю что это значит. Речь про официальный сайт неста. Ты так пытаешься троллить, это должно быть смешно?
Ты так часто повторяешь «официальный сайт неста», наверное, думаешь это охуительно значимое явление? В твиттере написали?
NESTJS - это фреймворк для тех, кто до сих пор не переучился с JAVA или .NET. Посмотрите биографию создателя - это типичная .NET макака которая вместо того, чтобы учить JS стала переделывать JS под то, что привыкла видеть
Поэтому у нас вместо двух коротких записей, одной в файле cats.ts
findAll() { return 'This action returns all cats' }
И второй в условном router.ts
cats: [ findAll ]
или альтернативно в schema.ts для gql
catsFildAll: findAll()
Мы пишем этого монстра
@Controller('cats')
export class CatsController {
@Get()
findAll(): string {
return 'This action returns all cats';
}
}
Второе, давно уже перекатываются все на сокеты. Эти GET/POST/PUT и прочее говно - давно уже должно сдохнуть. Нахуй вообще HTTP и его заголовки. Всё, что тебе нужно, чтобы слать на сервер запросы - это сгенерировать токен и слать всё через Вебсокеты. Подключаешь ws или uWebSocket и gql и ебашишь данные, при этом тебе ещё плейграунд документацию генерирует. Поэтому по возможности выкидывайте каку, подкллючайте отдельно либы и пишите норм
Монады - это говно собаки. Это концепция из функционального программирования которого не существует. Нет никакого функционального программирования. Всё программирование в мире, если угодно, имеративное. Хотя императивного никакого нет - это просто термин, придуманный в противопоставление функциональному. Функционального не существет, императивного тоже нет, есть просто программирование. Открываете код любого драйвера, компилятора, браузера - вот оно, программирование, последовательное исполнение инструкций. Так работаю процессоры - последовательно делая операции с числами в регистрах. Для описание этих операций придумали ASM. Потом язык C, как инструмент автоматизации генерации ASM. Потом C++ - как набор концепций для автоматизации того, что приходится писать на C. В толм числе виртуальные машины - как способ создания песочницы, работают также. Весь мир программирования работает так, что автоматизирует генерацию ASM.
Никакой математики, никаких математических функций в программировании нет. Любая попытка делать язык не для упрощения генерации кода, а для каких-то фантазий, например, для решения математических задач, порождает уёбищное переусложнённое решение, как в случае с монадами
>Например, асинхронные вычисления в JavaScript (`Promise`)
Нет, нельзя. Промис носит своей целью некое удобство программирования. Вот представь, что мы запустили два треда. В первом мы получаем значение "a" и "b", не важно как, пусть это буду долгие вычисления или долгий запрос куда-то. Во втором треде, мы хотим, когда "a" вычислилось, сразу использовать его, а не ждать, когда ещё и "b" посчитается. Для этого были рождены промисы в крестах. От-туда с теми же целями они перекочевали в другие языки.
Каким хуем тут монады? А никаким. Это просто желание создателей функциональной шизы примазаться к программированию. И всё шиза, что выдал чатгпт, не имеет никакого смысла
Монады, как и промисы - это абстракции для решения задач. Да, монады это слишком generic-абстракция, и для большинства программистов без математического образования не подходит, однако именно программисты с образованием придумывают новые удобные абстракции, а не макаки. Да, те, кто пытались примазать монады как есть - туповаты, но не все образованные люди такие.
Еще смешнее что в реальной разработке это все почти не используется и за пределами собесов не встречается.
Как раз наоборот. Что-то маленькое запустить на несте норм. Дальше проект начинает раздуваться, множатся классы, зависимости, абстракции с какой-то чудовищной скоростью.
Ну так это то, что нужно для огромной команды разработки, где можно любую задачу разрезать на миллион компонентов и разделегировать на миллион макак.
Нет. Монады - это не абстракция. Это вымышленное говно. Объясняю, что такое абстракция. Абстракция - это выделение общих свойств и отбрасывание необщих. Другими словами, у нас есть множество объектов, они чем-то похожи, а чем-то непохожи. Мы берём, отбрасываем то, чем они не похожи, оставляя общие свойства - это операция абстрагирования, в результате которой получается абстракция.
От чего абстрагируется промис, понятно - выше в одном из предыдущих сообщениях я написал. Есть много случаев, когда в первом треде надо получить данные из второго треда, когда первый ещё не закончил считать. Под эту общую задачу появляется промис
От чего абстрагируется монада? Тут ты дашь жидкого, так как на сможешь объяснить
>большинства программистов без математического образования не подходит
Это говно не подходит ни для чего. Ты же просто перепасчиваешь говно из гугла. Возможно это гпт. Это говно не работает. Обычные циклы и ветора - гораздо более пощная штука, чем твои монады
>однако именно программисты с образованием придумывают новые удобные абстракции
Неверно. Абстракции не придумывают. Я написал выше, как они рождаются. Исключительно из опыта. Просто делаешь что-то в десятый раз и видишь похожие решения в нескольких местах, и обобщаешь их. Как раз таки, когда абстракции придумывают - получаются шизофрения
>те, кто пытались примазать монады как есть - туповаты, но не все образованные люди такие
Это вообще понос. Типо, это не монадоиды придумали дрисню, а вы не доросли до монад (что там доростать, если это убожество). Так что это может сработать на тех, кто не шарит. Но меня хуй проведёшь
> промис - панятна, монада - нипанятна
О чем и речь, макакам недоступно
> не подходит ни для чего
Макакен, милый, с помощью математики решается гораздо больше задач, чем с помощью программирования макаками
> рождаются, а не придумываются
Еще раз, милый макакен - абстракции придумываются, бывают простые и понятные макакам, бывают сложные. Никакая макака ни из какого опыта своего не обобщит никакую абстракцию, у нее нет мозгов на это
> вы не доросли до монад
Ты не понял самого главного, макакен - нет ничего плохого, в том что ты макака, почему тебя это задевает? Монада - плохая для программирования абстракция, потому что требует слишком дорогих математиков вместо макак, нерентабельно.
Тот, кто пытался присунуть монады в программирование - глупый и тупой, несмотря на определенные знания в математике. Макака, выполняющая примитивные задачи - умнее его.
Сможешь второй раз осилить?
Если что, я не тот, кто тебе гпт копипастил, я мимо проходил
Я не заливал ничего себе в голову. Я не мыслю так, как ты. Я аргументирую каждое слово.
Ты же просто пизданую хуйню, что мой подгод говно - ни примеров кода, ни резъёба. Вот, я тебе и отвечаю также, что ты хуй. Пока не будет что-то внятное с твоей стороны, мои ответы будут соответсвующими
Я же сразу объяснил, твой подход говно, потому что им пользуются полторы калеки в Твиттере, не таких как все, особенных у мамки. Качество подхода определяется исключительно массовостью, дорогой нитакусик.
>Я же сразу объяснил, твой подход говно
Ты ничего не объяснил, ты пернул в лужу
>потому что им пользуются полторы калеки в Твиттере
Я не строю свою логику на твиттере, о чём тебе сообщил сразу, я исхожу из того, чтобы использовать лучше средства. Нахуй слать HTTP заголовки, если их можно не слать. Я и не делаю
>Качество подхода определяется исключительно массовостью
Я предполагал, что скоро в диалоге появится этот тезис. Нет. Массовость - всегда говно. Пирожки у метро - это массово. Жить в человейнике - это массово. Получать среднюю зарплату - это массово. Массово всегда = говно. Массово - это то, что может освоить каждый. Я говорю про лучшее, а не про то, что может осилить каждая макака. Тем более, у меня нет никаких проблем сделать тот же REST API. Я его не делаю не потому, что не могу, а потому, что это говно собаки. А вебсокеты не делают не потому, что там какие-то минусы, а потому, что это чуть сложнее, туториалов мало, и посоны в чатиках и курилках такое не обсуждают
Нитакусик, твое мнение нам, быдлу, неинтересно, зачем ты приперс продавать свои помои нам? Ищи себе подобных не здесь
Эти приколы со мной не работают, я же сказал, что ты меня хуй проведёшь. Ты можешь сколько угодно превозносить математику. Особо забавно, что ты говоришь это мне, участнику городских олимпиад. А вот, выставить себя идиотом, это у тебя хорошо получается
А теперь к делу. Перепиши простой код с пик1 на монады. Одним циклом пожалуйста, а не двумя со всякими фильтрами. Можно пользоваться чем угодно
https://www.typescriptlang.org/play/?#code/MYewdgzgLgBAZgSwEbgIbGAmBeGAKAGwQFsEoAuGMAV2KQFMAnASkprqYG0BdHAPhgBvAFAwYBerEb0I1ArFycAjABoYS7qJgB3ABYIJ+KI2r1mQrWNCRY7Boxwxps+Z2dyoAOglgA5lF0YAFp1XgBqJxkPNyj5b3o-AOCYACZNMTEEOHw7JhgBIlIoZksMpGlUAGtS9ziAB2oIXTxcli0AXy1pKGpGMEiXKGFO4WsIEAlvEF88RBQwdEw8JQAGNeZmIA
А потом, со звёздочкой, сделай это лениво, как на пик2
https://www.typescriptlang.org/play/?#code/GYVwdgxgLglg9mAVAAmDARgghhCNkAUANjALYxQBcyYIp6ApgE4CU1A4g2M1lHEwB5a9ZgBpkANzgwAJgD5kAbwBQyZEQZRkEEEyZctAXmQBGVes3IsyY2bUat6G6fMBPGAyIyXagO4ALGA1CJwFjEnIoFiVzNR09A2d0WOR3T294-TAoFKdjawBqZGS1NWtjTINzAF9lWuVgfkIIBABnLQoGUmQ4YFQMbFwYAhMABnGWFnMWsFa4DQA6IjgAcwJO0imgA
Хочется, знаете ли посмотреть мощь твоих монад. И это я ещё не просил тебя вместо привычного итератора ++i с шагом в один элемент, делать шаги в цикле в зависимости от входных данных
> я участник олимпиад, знаю матиматеку!!!!11111
> монады нипанятна!!!!!!
В голос с этого математика
В смысле значимое явление? Смотря с какой стороны. Меня буквально спросили по каким материалам нест:
>>285030
>Скажи пожалуйста, по каким материалам лучше учить ноду, а после и нест?
Я закономерно ответил, что можно скачать с торрентов курсы от разрабов неста, инфа про них есть на официальном сайте, про содержание и т.д., документация там же.
После чего один умственно отсталый начал меня доёбывать вот тут:
>>285843
>>разработчиков неста.
>твои протыки? литералли кто?
Из милосердия к болезному попытался донести до него информацию, но видимо зря, это скорее всего был всего лишь троллинг тупостью.
Значит вы что-то делаете не так. Если использовать простую и примитивную (в хорошем смысле) дефолтную архитектуру, где каждая папка (помимо какой-нибудь shared/common/utils) обозначает какую-либо фичу, то бывает уже этого достаточно. А так-то можно и DDD делать, "чистую архитектуру" и т.д., короче всё то, что есть и в больших приложениях на дотнете или спринге.
>или альтернативно в schema.ts для gql
Никто не запрещает писать на графкл в несте. Но графкл это очень убогая, вредная и мертворождённая технология, так что лучше так не делать.
>Второе, давно уже перекатываются все на сокеты
Ты имеешь в виду графкл, или что? Не вижу, чтобы какие-то "все" на вебсокеты перекатывались. Кто эти все? Феникс эликсировский и всё?
Никто не запрещает писать на графкл в несте. Я не про graphql расуждал, а показывал, насколько избыточен код в NestJS
>графкл это очень убогая, вредная и мертворождённая технология, так что лучше так не делать
Критерии? Мои критерии просты. Документация из коробки, без генераторов кода и ручной работы. Поддержка сокетов. Поддержка вложенных запросов. API позволяющее выборочно получать поля. Приведи примеры.
>Феникс эликсировский
Это дерьмо без классов и нормальной типизации. Мне пары минут хватило, чтобы ознакомиться. То есть они в 2к24 не смолги в то, что умел C++ в 98. Зачем вы лезете во всякий мусор?
>Не вижу, чтобы какие-то "все" на вебсокеты перекатывались. Кто эти все?
Ты не видишь, потому, что обитаешь на помойке. Обитатели притона тоже не видят, кто эти все, кто хорошо живёт. Возьми веб клиент телеги, фигму, zoom, игры, да любое нормальное приложение. С тем же успехом можно пойти в PHP, и оттуда вещать, что да вообще нет тех, кто использует сокеты и демоны, HTTP-запросы и cron - наше всё; правильно, потому, что PHP в них не может (без напильника)
У тебя ебанутая логика, состоящая из крайностей. По-твоему нельзя совмещать рест и вебсокеты, или что? Ты не разрабатывал серьезных проектов, очевидно. Потому что если бы разрабатывал, то понимал, что для одних задач берутся вебсокеты, для других что-то другое. А теперь скажи мне, как ты будешь кешировать графкл запросы, особенно когда у тебя огромное количество RPS?
>По-твоему нельзя совмещать рест и вебсокеты, или что?
Зачем, если сокеты умеют во всё то же самое, что и рест. Ты точно также можешь открыть соединение прокинуть данные и закрыть соединение на сокетах. Другое дело, что обычно это не требуется. Лучше соединение сохранить, и гонять данные
>что для одних задач берутся вебсокеты, для других что-то другое
Не требуется. Я выше написал, что сокеты умеют во всё то же, что умеет рест и при этом могут больше и дают больше контроля. Да, там есть накладные расходы на хендшейк, но, повторюсь, обычно соединение держат, и иногда что-то можно разово получить и оборвать соединение - это не проблема
Говоря про задачи, ты врёшь. Выявляется это просто, покажи где было какое-то место в проекте, которое, ну, просто ни при каких условиях никогда нельзя было с реста поменять на сокет. Расскажи нам про этот кейс. Какие были критерии, во что уперлись. Ты же не расскажешь, потому что такого не было. Ты просто так делаешь потому, что привык. И потому, что, чтобы делать иначе тебе надо пойти на конфликт
Все так делают. Пример с PHP и cron показателен. Бомжи на PHP не умеют в демоны в силу специфики языка - поэтому будут тебе будут рассказывать, что крон - это норм. А чё такова. При том, что нормальный демон тебе даёт больше возможностей и контроля для вызова чего-то по рассписанию. Да, это на том же петухоне с shedure напишите, всё лучше будет
Так же с API. Кто-то не освоил несколько сотен строк, чтобы разобраться, как работают сокеты - это не шутка, таких куча. Это же надо подумать, как открывать, закрывать соединение, менеджерить всё это, убивать подвисшие и т.д. Кто-то поленился разобраться с GraphQL, а чё такова, работает же, swagger накитал, мм, вкуснятина. И все эти неосиляторы ходят и говорят, что НИНУЖНА. Они, кстати, ещё любят про TS говрить, что типы не нужны. Ещё про linux - что он говно, про C++ - что язык для дедов. Я этого наслушался уже за много лет. И ты ведёшься на всё это, вторя им. Почему я определил что ты ведёшься, а не воспринял это, как твой самостоятельный выбор, я выше объяснил - критериев нет, кейсов нет
>А теперь скажи мне, как ты будешь кешировать графкл запросы
Никак. Кеширование запросов - говно для бомжей. Ты мыслишь в рамках REST. Подумай, как работают сокеты. Сокеты, если норм написаны - кидают тебе инрементально данные. Они тебе один раз выдают весь снапшот данных при входе в приложение, а потом присылают изменения. И основной поток данных - это изменения. Кешировать изменения - это шиза
>По-твоему нельзя совмещать рест и вебсокеты, или что?
Зачем, если сокеты умеют во всё то же самое, что и рест. Ты точно также можешь открыть соединение прокинуть данные и закрыть соединение на сокетах. Другое дело, что обычно это не требуется. Лучше соединение сохранить, и гонять данные
>что для одних задач берутся вебсокеты, для других что-то другое
Не требуется. Я выше написал, что сокеты умеют во всё то же, что умеет рест и при этом могут больше и дают больше контроля. Да, там есть накладные расходы на хендшейк, но, повторюсь, обычно соединение держат, и иногда что-то можно разово получить и оборвать соединение - это не проблема
Говоря про задачи, ты врёшь. Выявляется это просто, покажи где было какое-то место в проекте, которое, ну, просто ни при каких условиях никогда нельзя было с реста поменять на сокет. Расскажи нам про этот кейс. Какие были критерии, во что уперлись. Ты же не расскажешь, потому что такого не было. Ты просто так делаешь потому, что привык. И потому, что, чтобы делать иначе тебе надо пойти на конфликт
Все так делают. Пример с PHP и cron показателен. Бомжи на PHP не умеют в демоны в силу специфики языка - поэтому будут тебе будут рассказывать, что крон - это норм. А чё такова. При том, что нормальный демон тебе даёт больше возможностей и контроля для вызова чего-то по рассписанию. Да, это на том же петухоне с shedure напишите, всё лучше будет
Так же с API. Кто-то не освоил несколько сотен строк, чтобы разобраться, как работают сокеты - это не шутка, таких куча. Это же надо подумать, как открывать, закрывать соединение, менеджерить всё это, убивать подвисшие и т.д. Кто-то поленился разобраться с GraphQL, а чё такова, работает же, swagger накитал, мм, вкуснятина. И все эти неосиляторы ходят и говорят, что НИНУЖНА. Они, кстати, ещё любят про TS говрить, что типы не нужны. Ещё про linux - что он говно, про C++ - что язык для дедов. Я этого наслушался уже за много лет. И ты ведёшься на всё это, вторя им. Почему я определил что ты ведёшься, а не воспринял это, как твой самостоятельный выбор, я выше объяснил - критериев нет, кейсов нет
>А теперь скажи мне, как ты будешь кешировать графкл запросы
Никак. Кеширование запросов - говно для бомжей. Ты мыслишь в рамках REST. Подумай, как работают сокеты. Сокеты, если норм написаны - кидают тебе инрементально данные. Они тебе один раз выдают весь снапшот данных при входе в приложение, а потом присылают изменения. И основной поток данных - это изменения. Кешировать изменения - это шиза
то вылезет 10 элементов, как и надо. Но потом, что бы я ни тыкал, ничего не меняется)
Как это лучше организовать? Может, шаблон без пагинации сделать? Как прикрутить backbone события к разметке после того, как все перерендерилось?
Sorting (Dutch National Flag problem). Далеко не самое оптимизированное решение, но главное - что решил!
тогда папей гавна