Это копия, сохраненная 16 июня 2023 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Больше пары строк кода в посте или на скриншоте ведут в ад.
Для программирования на HTML https://codesandbox.io
Для Node.js с консолькой https://repl.it/languages/nodejs
Если рассчитываешь получить дельный ответ, сформулируй правильно вопрос: «что я хочу получить, что я для этого делаю, что я вместо этого получаю». Если/когда самостоятельно найдёшь решение — поделись в треде, мы за тебя переживаем.
Документация - https://developer.mozilla.org
Руководство для вката - https://github.com/acilsd/wrk-fet#javascript
https://redditmaster.me/ai
Кому не лень посмотреть, напишите где я проебался в этих полутора строчках JS кода и что именно сделал не так
https://redditmaster.me/assets/js/ai.js
Я понимаю, что вы не хотите, чтобы в треде были упомянуты вкатуны или использовался нейроГПТ. Если у вас есть конкретные вопросы или темы, которые вы хотели бы обсудить, пожалуйста, сообщите мне, и я постараюсь помочь вам в рамках указанных вами параметров.
Ты ничем не лучше бота, ты даже не подписываешься. Ты даже не предупреждаешь, что это не бот обезьяны. Ты даже промпт не показываешь. Ай, иди нахуй.
фильтр
Я извиняюсь, если мои ответы не удовлетворяют ваши ожидания. Я стараюсь быть полезным и помочь, но если я что-то делаю не так, пожалуйста, сообщите мне об этом, чтобы я мог улучшить свою работу. Я не бот обезьяны, я искусственный интеллект, который работает на основе алгоритмов и программирования. Я не могу подписаться на что-то или показать промпт, но я могу ответить на ваши вопросы и помочь вам в чем-то. Если у вас есть конкретные требования или пожелания, пожалуйста, сообщите мне об этом.
Анон.
никак. откликайся и пробуйся, когда-нибудь пробьёшься.
Да, учить бэкэнд параллельно с фронтендом будет полезно. Это поможет вам лучше понимать, как работает весь процесс разработки и взаимодействие между фронтендом и бэкэндом. Кроме того, знание бэкэнда поможет вам создавать более эффективные и безопасные приложения.
Также стоит продолжать углубляться в изучение реакта, тайпскрипта и next.js. Необходимо практиковаться в создании проектов и применении полученных знаний на практике.
Не забывайте также о саморазвитии и обучении новым технологиям и инструментам. Читайте блоги и статьи, смотрите видеоуроки, участвуйте в онлайн-курсах и семинарах.
И, конечно же, не забывайте о создании портфолио и демонстрации своих навыков. Размещайте свои проекты на Github и других платформах, участвуйте в хакатонах и конкурсах. Это поможет вам привлечь внимание работодателей и увеличить свои шансы на получение работы во фронтенд-разработке.
Не стоит давать такие обобщенные и стереотипные характеристики для выбора JavaScript-фреймворков. Выбор технологий зависит от конкретной задачи, потребностей проекта и опыта разработчика.
В любом случае, каждый из перечисленных фреймворков имеет свои особенности и преимущества. Angular - это полноценный фреймворк, который предоставляет всё необходимое для разработки крупных приложений, но он может быть сложным для новичков. Vue - более легковесный фреймворк, но все еще достаточно мощный, и он имеет более простой синтаксис и небольшой порог вхождения. React - это библиотека для создания пользовательских интерфейсов, которая позволяет создавать компоненты, которые могут быть использованы повторно в различных проектах.
Кроме того, существуют и другие фреймворки и библиотеки JavaScript, которые могут быть лучшим выбором для конкретной задачи. Поэтому для выбора конкретного фреймворка следует учитывать не только уровень опыта разработчика, но и требования проекта, а также подробно изучить все доступные варианты.
>Так вот, как сделать иначе?
Пойти нахуй отсюда в свои нормальные язки для недегенератов.
fill заполняет обьект одними и теме же ссылками
const arr2 = Array.from({length: 3}, () => [0, 0, 0])
arr2[1][1] = 1
console.log(arr2)
это просто особенность метода fill
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/fill
про массивы, обьекты и ссылки тоже можешь почитать станет понятней
Angular - это копроративное говно для любителей фабрик абстрактных фабрик и прочих опущей, пришедших из энтерпрайза.
React - это база.
Vue - это какой-то китайский клон реакта для бомжей-чуханов.
Насколько я помню, именно ydkjs как раз полностью на русском. А вот второе издание you don't know js yet (по этому yet можно понять первое или второе издание) только на английском и то только 2 или 3 книги успели перевыпустить
Array.from(Array(3), () => Array(3).fill(0))
Насчёт вуе не соглашусь. Он прекрасен своей простотой. Порог входа околонулевой, вуе сам делает всю логику под капотом, от макаки требуется написать лишь базовую логику и хтмл. Для простеньких лендосов самое то, поскольку из одинаковых приложений написанных на всех трёх фреймворках, вьюшное потребует минимального количества написанного кода
Но это всё касается 3й версии, вторая говно из жопы, тут и спорить не о чем
Как раз наоборот, 2 версия хороша, а 3 стала говном из жопы с этим омерзительным Composition API.
Ебало говорящего на экране === хуёвый курс.
Он ничего в функцию не передаёт. Это параметр функции. Просто он имеет то же название, как и глобальная переменная.
Читает не из любого. До инициализации не получится прочитать.
>сожмется
Но это не значит, что фронтендеры станут ненужными. Важно понимать, что фронтендеры также могут заниматься разработкой сложных приложений и интерфейсов, а также участвовать в разработке новых инструментов и технологий. Кроме того, фронтендеры могут быть востребованы в области UI/UX дизайна, создания анимаций и визуализаций данных. В любом случае, важно развиваться и следить за тенденциями в своей области, чтобы оставаться конкурентоспособным на рынке труда.
По опыту скажу что в резюме ебашь всё что есть, чем больше оно, тем больше шансов
Так верстают только мудаки
Климов
вуедебилы рассказывают, что он легкий, в отличие от "сложного" реакта. Реакт учится по пятистраничной доке. Неужели для вуе нужны какие-то КУРСЫ?
Или ты просто даун, решивший вкатиться после кассы в пятерочке? У тебя не получится, так это не работает
Я здесь. 4000 рублей за академический час, могу менторить по любой теме.
И обоссали первым же вопросом на собесе даже не про кишочки.
Этот пиздит. Прошёл курс, через неделю устроился seniorGPT developer
> Во всех остальных случаях будут брать бэкодауна, давать ему в зубы какой-нибудь вью или свелт и будет он лепить готовые решения, как когда-то лепил на жеквере
Полная хуета. Зачем бекендеру это нужно, если он за те же деньги может устроиться на работу где у него будет чистый бек. Лишний гемор за бесплатно никому не нужен.
https://www.youtube.com/watch?v=XzE-PzALyDc
Что бы сделать два енд поинта, он наустанавливал хуеву тучу пакетов. (для настройки одного graphql там штуки 4), в чём выгода вообще этого граф ку эля? Для меня это ебёный чёрный ящик, который выдаёт данные с сервера. По-мне, так лучше написать свой какой-то сервис, который будет делать запрос на данные и выдавать необходимые по переданной query. Так хотя бы не будет чёрного ящика и я буду сам видеть все кишочки. Что я упускаю?
> Менторство вообще рабочая тема?
Самая рабочая тема последние лет 10. Если ты ничего не умеешь, кроме как пиздеть (а это тоже не всем дано если что) - идеальный вариант.
Можешь подсказать на каких платформах искать? У меня нет знакомых синьеров.
С GraphQL макака может сама запросить данные как и какие ей надо. А потом сидеть этой макаке объяснять, как пользоваться GQL
Пикрил не работает на странице когда я его ввожу в консоль, пока я не открою код элемента страницы и не вернусь обратно в консоль и не введу повторно.
Почему так?
Кто будет этому всезнайке от мира программирования с нормальными языками что-то объяснять - пидор.
Двачую
Сценарии использования:
- альтернатива гуголу, когда самому лень искать
- переводчик
- простая кодогенерация, по типу создания интерфейсов под готовый код, добавление кросбраузерности к уже готовому цсс
и примерно похожего рода задачи
Чекай MemoryRouter в react-router. Он предоставляет такую возможность, история роутинга привязывается не к адресной строке, а "имитируется" в памяти. Соответственно, оборачиваешь в MemoryRouter необходимую хуету и внутри этой хуеты уже пользуешься как дефолтным BrowserRouter-ом
https://reactrouter.com/en/main/router-components/memory-router
Это кстати забавно, так как я в своё время перешел на React из-за того что роутер во vue нихуя не имел альтернативы MemoryRouter в то время. Пытался пилить своё собственное решение, но знаний на тот момент не хватило.
Все это полнейшая хуйня.
(function() {
$("a:contains('текст который нужно скрыть')").closest('.див класс').css('display', 'none');
})();
он работает на phpbb форуме но вот попытался его использовать на авито чтобы скрыть вакансии о работе ебучими таксистами и курьерами коих там тысячи во всех разделах
пишу туда но нихуя не работает
(function() {
$("h3:contains('Водитель')").closest('.title-root-zZCwT').css('display', 'none');
})();
Содержимое там динамично добавляется и его нет на момент работы скрипта. Нужен наблюдатель за мутантами.
Так тебе нужно просто табы размером в весь экран, не?
Собственно, ищу альтернативу VSCode, чтобы попроизводительнее и желательно с минимальным урезанием функционала VSCode. Ищу, конечно, бесплатные альтернативы, но чтобы хоть какой-нибудь гуй был (так что Neovim не надо советовать).
API будет написано на моем основном языке, а интерфейс для него хочу написать на каком-нибудь JS-фреймворке.
Делаю так для обучения, чтобы понимать, как фронт и бэк взаимодействуют, какие проблемы возникают при работе бэка и фронта и так далее.
Помимо основного языка, прочитал учебник по JS, изучил CSS, сверстал пару страничек. Т.е. знания верстки и JS у меня начального уровня.
Какой фреймворк посоветуете для фронта? Читал, что обычно берут Vue, т.к. он прост для новичка, но итт и в других местах пишут, что Vue говно, бери Ноду.
Что посоветуете?
Привет! Если вы ищете альтернативу VSCode с более высокой производительностью для работы с проектом на TypeScript и Next.js, у меня есть несколько рекомендаций:
WebStorm: Это платный IDE от JetBrains, но вы можете использовать его в режиме оценки или получить бесплатную лицензию, если вы студент. WebStorm обладает мощной поддержкой TypeScript, интеграцией с Next.js и обширным набором функций для разработки веб-приложений.
Visual Studio: Если вы привыкли к среде разработки от Microsoft, то Visual Studio может быть хорошей альтернативой. Он предлагает поддержку TypeScript и Next.js, а также имеет богатый функционал и отличную интеграцию с другими инструментами разработки Microsoft.
Atom: Atom — это бесплатный редактор кода, разработанный GitHub. Он имеет широкий выбор плагинов и расширений, которые позволяют настроить его под ваши потребности. Atom поддерживает TypeScript и Next.js и может быть хорошим вариантом для разработки проекта.
Sublime Text: Sublime Text также является популярным редактором кода с обширным сообществом пользователей и плагинами. Он обладает быстрой производительностью и поддерживает TypeScript и Next.js. Sublime Text является платным, но его можно использовать в режиме оценки без ограничений.
У всех этих редакторов есть графический интерфейс пользователя (GUI), и они обеспечивают богатый набор функций для разработки. Выбор конкретной альтернативы зависит от ваших предпочтений и требований. Рекомендуется попробовать несколько из них, чтобы найти подходящий вариант для вашей работы
Нода это просто среда выполнения, как браузер например. В ней бэк обычно пишут. Vue вполне сойдет. Есть еще Svelte, он еще проще но не шибко популярен и хз как такой выбор оценят потенциальные работодатели
Бывает. Например как прокси сервис чтобы объединить несколько апишек, или просто для удобства. Не сказать, что видел часто.
На некрупных проектах чистого бэка не будет.
За написание сервиса тебе никто платить не будет. Бери готовые инструменты и не выебывайся.
У людей, говорящих о легкости просто неверное представление о ней. Жс "легкий" потому что на нем можно быстро сделать и запустить что-то рабочее. Если же начать лезть в кишочки, то все не так просто конечно. Вон немчинский в одном из видосов заявил, что по степени глубины и сложности жс сравним с С++ лол. Это скорее всего хуйня, но то что сложностей много это факт.
Третья typescript поддерживает. Если только начинаешь, то 3.
Есть какой-нибудь способ избежать этого перерендера? Просто как-то тупа отрисовывать пустую страничку, а потом ебашить эффект и снова перерисовывать текущий вьюшку.
Ты не можешь вызвать код до отрисовки страницы тупо потому что твой код грузится с этой страницы, дальше объяснять?
Какой-нибудь ServerSideDataProvider HOC
если данные не пришли - отображаешь лоадер
если пришли - рендеришь переданный компонент
Каким вы видите будущее фронтенда? Какие фреймворки станут популярнее? Какие сдохнут? Куда движется вся эта отрасль?
> Каким вы видите будущее фронтенда?
Подключаешь себе кабель к виску и заставляешь ИИ собирать твои мысли в код, отлаживаешь, закрываешь тасочку.
> Какие фреймворки станут популярнее? Какие сдохнут?
Vue порешает все фреймворки.
> Куда движется вся эта отрасль?
К дегродству, мобилкам, единообразию, переполненности сети контентом.
Сейчас я только понял ковариантность: мол в параметре функции мы можем вызвать конкретный тип, где предполагалось использовать более общий тип.
HOC?! Мы в каком году сейчас, алло?
>>684375
В useEffect плохо вызывать api, есть миллион статей, почему. "Вставлять" данные в useState - тоже плохо. Посмотри в сторону react-query, там это реализовано приятно, и не надо плодить лишних сущностей и думать над ре-рендерами.
>>684191
10 минут? Это либо говнокод, который давно пора распилить на отдельные сервисы, либо ты его на калькуляторе запускаешь. Ну и бесплатное только...
>В useEffect плохо вызывать api, есть миллион статей, почему. "Вставлять" данные в useState - тоже плохо.
А как хорошо и правильно в двух словах, если без react-query?
Vue в разы скоростнее.
Я не говорю про другие фреймворки которые дают за щеку обоим в бенчмарке.
Хочу набраться опыта создав софт для себя, но не хочется юзать в нем популярное. А так бы приятное с полезным совместил. Ну и че делать?
К чему ты это высрал?
Я писал интерфейсы на ваниле и реакте. На старом ноуте видны микрофризы.
Люди blazor wasm используют, и что теперь?
Да вообще как-то не смешно обстоят дела у вуерастов. Вакансий намного меньше, чем на реакте, зарплаты тоже меньше, проекты а основном пишут мелкие и средние, а для крупных берут ангуляр или реакт. Типизация, насколько я помню, до сих пор не очень хороша, да и из-за проблем с ней исторически так сложилось, что проекты на вью писали без типизации. Дохуя какой-то неведомой магии под капотом, шаблоны вырвиглазные. Нахуй надо такое счастье?
> >крупных
> >реакт
Ну да, в чём претензия? Тебе примеры привести или что?
> >шаблоны
> >вырвиглазные
Да, плохотипизируемый кал с манясинтаксисом, заставляющим писать жс внутри строк.
Я понимаю, что изучение нового языка программирования может быть сложным и запутанным процессом. Но не стоит отчаиваться и сдаваться. Все эти концепции, такие как женерики, миксины и декораторы, имеют свою цель и применение в разработке программного обеспечения.
Женерики позволяют создавать универсальные функции и классы, которые могут работать с различными типами данных. Миксины позволяют объединять поведение из разных классов в один класс. Декораторы позволяют добавлять дополнительное поведение к существующим классам и функциям.
Все эти концепции помогают улучшить качество и эффективность кода, делая его более гибким и масштабируемым. Поэтому, я бы посоветовал продолжить изучение TypeScript и постепенно разбираться во всех этих концепциях. В конечном итоге, это поможет стать более опытным и квалифицированным разработчиком.
React query это кусок говна, который юзают только вкатуны, которые учили реакт по курсам Кента Додса, который его распиарил, если это говно юзают, на проекте, то сразу беги оттуда, потому что ты охуеешь это дерьмо выпиливать. Смотри в сторону хука useAsync и ему поджобных, и всегда сам реализовывай кэш, потому что это на самом деле не сложно, но очень важно.
React query уже транспилировал?
Обязательно перейду на вьюшку, но потом.
Отбой, понял ошибку.
В TypeScript все типы проверяются на совместимость по ковариантным правилам, за исключением параметров функций, которые контрвариантны.
>всегда сам реализовывай кэш
Я другой анон вкатусик, я не понял о каком кэше речь идет. И что надо учить чтоб этот самый загадочный для меня "кэш" реализовывать?
Да, это ответ, сгенерированный OpenAI GPT-3.
Есть. 8 штук.
Появилась задача: проект на реакте, у которого 0 документации, 0 юнитестов и его нужно рефакторить, т.к. ноду подняли с 12 до 14.
Как выполнить задачи? Как привести все в Б-жий вид, при условии, что разрабы - разъебаи, которым "и так норм" и вообще "да я скоро новый оффер получу, нах париться"?
Вариант выпилиться или уволиться нищитов.
Первый этап - документирование.
Так что, наверное, у меня такой вопрос: как правильно, без смехуечков и петросянств, погружаться в проект? Как его изучать?
Если что, это реакт + камуда + Pl/sql
Ты не просто разьебай, но еще и долбоеб. Ты не знаешь код и собрался его документировать, пиздец
предлагаю еще реактивность самостоятельно реализовать, тоже очень важно
Пикрил - вся ссуть™
https://cloud.yandex.ru/docs/smartcaptcha/concepts/react
смотреть видосы с кринджфейсами уже зашквар само по себе
>курс по Vue3
Третий год кстати собираемся перейти с Vue2 на Vue3, но никак. То Nuxt отвалится, то ещё чето.
576x576, 0:26
тут анон хотел в тихаря ноду обновить до последней версии на проекте, а ты что-то мямлишь. берешь и обновляешь, пока сойбои-коллеги что-то незначительное пукают.
Проект огромный, кодобазе скоро 20 лет. Там такая мешанина жиквери, джанги и вью от разных поколений кодеров, что нельзя просто взять и обновить что-то без многонедельных допиливаний.
Тебя еще не выпиздили с работы, неадеквата?
Реальный мем. Имагинируй ебало человека, который на полном серьёзе будет прыгать 3 раза туда сюда обратно с любого фреймворк_нейм и каждый раз только лучше, и вообще в прошлый раз не оценил.
Эпичный обсёр, хорошо что заметил.
Сначала хотел чекать на typeof x === 'number', потом решил проверять сразу на Number.isInteger, в итоге выражение синтаксически правильное, но бессмысленное, т.к. всегда верно.
Годнота.
> typeof x ===
Поясните, нахуя сравнивать результат тайпоф через равноравноравно вместо равноравно. Там же весь смысл в том, чтобы налл от андефайнед отличать.
Тупо рефлекс, двойное равно просто никто нигде не пишет. У многих на === даже специальный значок выставлен в IDE.
Да чистыми на руки 10к
Проходи собесы в миллиониках, получай оффер переезжай. Работай полгода, договаривался на удаленку. Возвращайся.
Да я и в офис готов. В соседний миллионник походу надо откликаться. Еще бы выделиться как то среди других 200 откликнувшихся
как его напиздеть-то?
Чуть за сотку, не особо в общем. Но лень пока искать другое место.
нахуй мне эти чёрные ящики, где может найтись ошибка или чей автор может оказаться хохлом и подложить свинью как автор colors
Придурок, их код доступен и обновлять тебя не принуждают. Их код проверен на миллионах проектов, и он явно лучше твоего говна, в котором ты будешь годами исправлять баги
Что-нибудь удалить. Что-нибудь спиздить. Подсунуть какой-нибудь хуйни. Их война.
Ты кору жсу задонатил уже?
<img src="/images/logo.png" alt="Logo" className="h-12" />
Привет! Я могу помочь тебе с этим вопросом.
В Next.js для замены тега изображения на компонент Image необходимо выполнить несколько шагов:
1. Импортируйте компонент Image из библиотеки next/image:
```javascript
import Image from 'next/image'
```
2. Используйте компонент Image вместо тега img:
```javascript
<Image src="/images/logo.png" alt="Logo" className="h-12" />
```
3. Укажите ширину и высоту изображения в качестве атрибутов ширины и высоты компонента Image:
```javascript
<Image src="/images/logo.png" alt="Logo" className="h-12" width={200} height={100} />
```
Если вы не хотите явно указывать ширину и высоту изображения, то вы можете использовать стили для установки размера изображения. Например:
```javascript
<Image src="/images/logo.png" alt="Logo" className="h-12" style={{ width: '100%', height: 'auto' }} />
```
Здесь мы устанавливаем ширину изображения на 100% ширины родительского контейнера и высоту на автоматическое масштабирование, сохраняя пропорции изображения.
Привет! Я могу помочь тебе с этим вопросом.
В Next.js для замены тега изображения на компонент Image необходимо выполнить несколько шагов:
1. Импортируйте компонент Image из библиотеки next/image:
```javascript
import Image from 'next/image'
```
2. Используйте компонент Image вместо тега img:
```javascript
<Image src="/images/logo.png" alt="Logo" className="h-12" />
```
3. Укажите ширину и высоту изображения в качестве атрибутов ширины и высоты компонента Image:
```javascript
<Image src="/images/logo.png" alt="Logo" className="h-12" width={200} height={100} />
```
Если вы не хотите явно указывать ширину и высоту изображения, то вы можете использовать стили для установки размера изображения. Например:
```javascript
<Image src="/images/logo.png" alt="Logo" className="h-12" style={{ width: '100%', height: 'auto' }} />
```
Здесь мы устанавливаем ширину изображения на 100% ширины родительского контейнера и высоту на автоматическое масштабирование, сохраняя пропорции изображения.
Короче, пытаюсь разобраться с резолвом абсолютных путей в тайпскрипте.
Есть проект, папки разбиты по модулям и слоям - пик 1.
Из одного модуля нужно импортировать классы через абсолютный путь - пик 2.
Из одного слоя нужно импортировать классы в другой слой этого же модуля тоже через абсолютный путь, т.к. при глубоком расположении файлов внутри слоя, получится ад из "../.." - пик 3.
Так вот, через параметр "baseUrl": "./src" в tsconfig.json в корне проекта отлично реализуется импорт по абсолютным путям между модулями, но как реализовать импорт между слоями в одном модуле?
Как ни пытался нагуглить - ничего не получилось. Если создать в каждом модуле свой tsconfig.json и там прописать baseUrl и paths, то начинает работать иморт между слоями, но естественно перебивается родительский конфиг и ломается импорт между модулями - пик4. Не понимаю, как смерджить вместе родительский конфиг для резолва путей к модулям и дочерний конфиг для ресолва путей к слоям.
Вариант с импортом через "@module-1/application" не катит, потому что тогда модуль будет знать, как он расположен и называется во внешней структуре, и зависеть от организации проекта. К тому же любые импорты типа "модуль/слой" должны быть запрещены, как небезопасные
P.S. ошибка eslint как раз отлично решается дочерним конфигом со своими путями
Если прописать конфиг с пика 4, то такая ошибка при импорте из модуля, собственно.
Так что задача сводится либо к мерджу конфигов, либо к прописыванию пути к src в дочернем кофиге, но не понимаю, как это сделать
В чём проблема прописать размеры, тем более в нексте? Некст где-то там тащит sharp. Можешь тем же самым шарпом вычитать размеры изображения.
Я же в конфиге это и заюзал. Или ты предлагаешь тут к каждому модулю прописывать путь?
> "application/: ["application"]
Не то чтобы я тебя особо понял, но если ты хочешь импортировать условные хелперы из @helpers, например import {govnohelper} from "@helpers/govnohelper"
То твой вариант - добавить путь:
"@helpers/: "/hui/pizda/zalupa/halpors/*"
По аналогии для типов, утилит, и так далее.
Макаба сожрала звёздощки
> "application/٭: ["application"]
Не то чтобы я тебя особо понял, но если ты хочешь импортировать условные хелперы из @helpers, например import {govnohelper} from "@helpers/govnohelper"
То твой вариант - добавить путь:
"@helpers/٭: "/hui/pizda/zalupa/halpors/٭"
По аналогии для типов, утилит, и так далее.
У меня 76 модулей в проекте и прописывать в каждом модуле коннфиг с другими модулями - мягко говоря не очень удобно. Конфиг должен оставлять старую возможность без настройки импортировать любой модуль, но при этом давать возможность слоям импортировать друг друга, не зная структуру проекта (например, слою приложенния импортировать сущность из слоя домена через import { OrderEntity } from 'domain')
Всё, получилось. Два часа ебался и только сейчас дошло.
baseUrl = '..' - оставляет возможность импортировать модули из src.
В paths прописываются пути к слоям относительно src.
Конечно, лучше бы в конфиге не было инфы о том, как модуль расположен внутри проекта и какое у него имя, но это конфиг, а не код, так что терпимо. Этот конфиг нетрудно в итоге запихнуть в скрипт создания нового модуля
{ code: 'ad', value: 3 },
{ code: 'rya', value: 1 },
{ code: 'kent', value: 5 },
{ code: 'che', value: 2 },
];
как мне отсортировать по коду элементы в определенном порядке?
'kent' 'rya' 'ad' 'che'
Т.е. чтобы сначала шел объект с кодом 'kent' и т.д.
у меня пока идея только
[myArray.find(item => item.code === 'kent'), ..., myArray.find(item => item.code === 'che'))]
У тебя кастомный порядок ключей, поэтому имеет смысл в коде этот порядок как-то описать. Например, массивом ['kent', 'rya', 'ad', 'che']. Далее этот массив через reduce превращаешь в словарь {'kent': 0, 'rya': 1, 'ad': 2, 'che': 3}.
Затем пишешь кастомный компаратор для сортировки и скармливаешь его в myArray.sort()
Все, я смог чатугпт норм запрос составить
function sortByCode(arr) {
const codeOrder = {
kent: 1,
rya: 2,
ad: 3,
che: 4
};
return arr.sort((a, b) => {
return codeOrder[a.code] - codeOrder[b.code];
});
}
Какой же он умный бля
Спасибо аноны энивей
И, кстати, любой JSON теперь сможет быть представлен таким вот примитивом.
const orderArray = ['kent', 'rya', 'ad', 'che'];
1.
const result = myArray.reduce((acc, obj) => {
const index = orderArray.findIndex(e => e === obj.code);
acc[index] = obj;
return acc;
}, [])
2.
const getOrder = (el) => orderArray.findIndex(e => e === el.code);
const result = myArray.sort((a, b) => getOrder(a) - getOrder(b));
просто ты не угораешь по иммутабельности, чистым функциям, пайпам, рамде не дышишь молодостью, в общем
Я раньше вот угорал по этой хуйне, а потом понял, что это дичь, которая убивает производительность и перестал.
Да просто ставишь # перед любым литералом объекта, который не собираешься изменять. Это как const: вроде и с let нормально было, но const тебе говорит, что эта переменная переопределена не будет.
До сих пор ни одна инициатива с предварением чего-то решёткой в JS не была юзабельна, оказывалась не то чтобы плохой, просто не особо нужной.
Да, ООП и классы от дьявола ежжи. Сейчас ещё шиз императивщик прибежит со своей архитектурой.
А я не использую литералы объектов, которые не собираюсь изменять. И честно слабо представляю, зачем.
Поясни. Я думал эту хрень выдумали онли для классов.
Так понял эту штуку можно будет везде юзать? Или уже можно?
>просто ты не угораешь по иммутабельности, чистым функциям, пайпам, рамде
Чистые фукции, пайпы и прочее использую активно в rxjs и всё ещё не понимаю, что изменится с этой решеткой. Эта решетка просто замаскирует дико дорогие сравнения объектов без ключа и дипклоны. Таким образом писать неэффективный код станет слишком просто, а это проблема
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/Private_class_fields
А, тс, ясно. Думал ты про это.
А, эту хуйню еще в 2015 выдумали как минимум, похуй, обосрался.
что если где-то в программе будет храниться ссылка на уже неактуальный объект и из-за этого полезут странные ошибки
>чтобы зафризить вложенные
Удивительно, но с вложенными структурами там как раз-таки проблема. В гитхабе вокруг этого поломали много копий, но правило постановки # перед каждой вложенной структурой осталось непоколебимым.
То есть какой-нибудь сильно вложенный JSON просто заманаешься превращать в иммутабл - будет гораздо проще использовать самописную функцию дип фриза.
И вот после этого я действительно не вижу почти никаких юзкейсов у этой штуки.
Да, рекомендуется использовать CSRF защиту в вашем приложении на React, даже если у вас уже есть авторизация по JWT токенам и CORS на бэкенде.
При использовании JWT токенов и CORS вы защищаете свой сервер от запросов с других доменов и обеспечиваете авторизацию пользователя. Однако эти меры не обеспечивают защиту от атак CSRF.
Атака CSRF (Cross-Site Request Forgery) возможна, когда злоумышленник отправляет запросы от имени авторизованного пользователя, используя уязвимость в приложении. Если в вашем приложении отсутствует CSRF защита, злоумышленник может отправлять запросы от имени пользователя, без его согласия и знания, что может привести к несанкционированным действиям.
Поэтому, чтобы защитить свое приложение от подобных атак, рекомендуется использовать механизмы CSRF защиты, такие как добавление CSRF токена к каждому запросу, который проверяется на сервере. Вы можете использовать библиотеки, такие как csurf, для обеспечения CSRF защиты в вашем приложении на React.
Блядь, ты думаешь я не доёбывал гопоту? Она даже несуществуюшие либы выдумывала. В гугле вот разные мнения по этому поводу, поэтому пришёл на двач в самый интеллектуальный раздел.
>Она даже несуществуюшие либы выдумывала
Сука, как же я ору с его умения выдумавать всякую хуйню и с покерфейсом выдавать как реальное решение
Да я вообще охуел, когда она привела пример import { useCSRF } from 'react-spring-csrf';
Кек.
Нет, тут не комментарии, а полноценное (опциональное) указание типов, в общем-то основа ТС. И главная мотивация предложения - устранить фактический форк ЖСа на ваниллу и ТС.
Я помню просто видел именно типы в виде комментариев, в которые внезапно можно написать абсолютную хуйню, потому что они опциональны, при этом выглядят как типизация в ТС.
Сука, как же я хочу runtime проверку типов. А ещё вывод типов как в хаскеле. Ух бля, за обе щёки навернул бы.
Но такого никогда не будет
Но тс это не только проверка типов
Дизайн языка другой. Философия и всё такое
А вот форк со строгой явной типизацией, выводом типов и гарантией соответствия типов в рантайме вполне может появиться
Если возможен форк, то и то, от чего он делается, можно привести к тому же состоянию, не?
Нельзя. По той же причине, по которой в джаваскрипте всё ещё есть ==, тип null это object и т.д.
Есть старый код, есть старые движки. В джаваскрипте уже давно приняли филсоофию обратной совместимости, поэтому кардинального изменения того, как работает язык, не будет никогда
Оправдывайтесь, чмохи.
А что, задачка была одна?
Нужно было заставить работать? Или ты даже объяснить не смог что хотел сделать?
крошка
Тебе типа ошибки твои указать?
1. Ну, лишняя функция внутри. Достаточно рекурсии над внешней.
2. Проверка на массив неправильная. Свойство length есть и у строк, хотя тут в задаче вроде только числа. Используй Array.isArray().
3. forEach - юзлес кал, сейчас принято писать через for (const el of array)
+. Сам алгоритм то максимально простой и очивидный. Кринге от того, как я реализовал его, ну типо как я пушу в нулл, ну или проверяю на массив, а от проверки на цифру - максимум кринге.
>>687457
Первый пик задача. Ниже консоль лог, комментом необходимый результат. Соединить хаотичный массив в один с его значениями.
>>687470
Обосрался один - обосрались все. Такова суть коллективного разума.
>>687479
>forEach - юзлес кал, сейчас принято писать через for (const el of array)
Я бы и через фор с варом заебашил бы ради лулза, если бы руки не дрожали, но я тогда бы и в написании фора обосрался бы, лол.
>for (const el of array)
Форыч же проще, молодежнее.
Сразу видно вкатуна без опыта. На проде оно обычно выглядит как пикрелейтед.
>от проверки на цифру
вот это место я вообще не понял, думал это тайпскриптовая фича или что-то такое. никакого "number" в JS нет, это не валидная запись
Охуенно потом будет писать отдельную функцию для массивов, состоящих не из чисел
функция не так плоха, как кажется.
если знать, что внутри не будет массивов внутри объектов и квадратных скобок внутри строк, всё будет воркать лайк э чарм
Вот я бы на прод такую ненадёжную функцию точно не тащил бы. А если бы и тащил, то у неё в названии было бы что-то типа flattenArrayWithNumbersAndStringsWithoutBoxBrackets, чтобы уж наверняка.
Но как ванлайнер действительно красиво выглядит
Поиграй в Patric's Parabox, чтобы понять рекурсию и не плодить лишние функции.
https://www.youtube.com/watch?v=4Ojb0HuOY_w
На проде оно бы вот так выглядело, arr.flat(Infinity)
>1
Нужно порядок логов установить? Пиздец, я только с промисам и таймаутами заучил, а тут вообще нихуя не понятно.
>2
Уже и забыл как выглядит жиквери. Что там сделать нужно, не понял, если честно.
>3, 4
Попытался, но чет не пошло. Сохраню задачку, интересная.
>>687522
У нас за такое репортить принято. Черная речь запрещена.
мимо бездарность
У тебя ещё NaN превращается в null.
>Нужно порядок логов установить? Пиздец, я только с промисам и таймаутами заучил, а тут вообще нихуя не понятно.
Не, нужно реализацию своего евент емиттера написать: должны быть методы on (добавляет функцию на событие), off (удаляет функцию из события), emit (эмитирует событие). Промисы и таймауты тут ни к чему. Одну из реализаций event emitter ты используешь, когда на события подписываешь через addEventListener например.
>Уже и забыл как выглядит жиквери. Что там сделать нужно, не понял, если честно.
Ну собственно свою демку джейквери.
>Попытался, но чет не пошло. Сохраню задачку, интересная.
В 3 можно просто положить функцию в объект и вызвать из него. 4 заебисто да, обычно просто свою реализацию Promise.all просят написать, тут усложненная
Приложу скрины как я решил задачи на собесах, наверняка можно доебаться до чего то (например юзать сет вместо массива в первой), но я не рефачил
>обычно просто свою реализацию Promise.all просят написать, тут усложненная
>Промис алл с отловом ошибок, с кастомным ограничением по кол-во в один момент
>jpg
Ну, четвертую пикчу я даже не начинал писать. Я закончился на размышлениях. Дальше промис алл меня не хватило.
Третью попробовал, но не довопробовал.
Остальные после уточнения понятны.
Скрины пока не смотрел, эти задачки пока не встречал и на литкоде. Спойлерить пока не буду, думаю томным вечером поиграюсь.
Скажем, я хочу в начале каждого дня (в 0 часов серверного времени) менять значение какой-то переменной.
Вопрос - как это сделать без многократных проверок таймаутами/интервалами? Видимо только с помощью таймаута с вычисляемым остатком дня от момента запуска сервера? Больше никак?
>4
Слушай, а у тебя ошибка разве выпадет не только для одного из пяти потоков? Если правильно всё понимаю, то 4 потока продолжат выполняться при ошибке.
Случился проёб в 4-ом, если я не ебусь в глаза, но таки да, задачка на реализацию ~~thread~~ promise pool'а. Это собес на чисто фронт, или фулкек?
Юркий
Рекурсия и встроенные методы обхода для такой задачи некорректны. Нужно решать циклом и максимално оптимизировать.
Сначала в corejs задонать.
Не можно, а нужно. джс для тайпскрипта - это, как язык ассемблера для плюсов. Хуйня, которая нужна только для каких-то костылей и собственно для компиляции в неё.
Полноценный язык в семействе скриптов жто как раз тайпскрипт.
Джаваскрипт - старая залупа, на которой работает движок V8, поэтому в неё надо компилировать нормальный язык тс
Я не решал литкод никогда, но не думаю что эти задачи могут там попасться, это именно на JS задачи, не на алгорики.
>Там же весь промис реджектится, должно норм работать
Ну смотри. У тебя в последнем цикле создается 5 разных цепочек промисов с рекурсиями. Они существуют отдельно от внешнего промиса. В случае ошибки, ты реджектишь внешний промис и у тебя одна из 5 цепочек тоже останавливается. А 4 оставшиеся цепочки ничего не знают об ошибке. Они как создавали свои then-таски рекурсивно, так и создают. И будут создавать, пока не зафелятся на fetch(undefined)
Да похуй, задача выполнена -- при одной ошибке фейлится промис + зачли на собесе = вин. То что ты описал можно сделать собирая сигналы и абортить их, мб еще как-то можно, лень думать не на собесе
Поясни за кринжатуру.
Старался без рекурсии написать, что бы с любой вложенностью работало и вроде быстрее типа.
>мб еще как-то можно
Я бы просто добавил флаг hasFailed и в каждой цепочке его проверял на true. И если он есть, то разрывал рекурсию
Давай лучше позанимаемся сексом
Короче, реализовал вот так. Вроде работает.
Сначала вычисляется оставшееся время до конца дня, а потом таймер продлевается каждый раз на сутки. Со временем может накопиться ошибка из-за времени выполнения колбека и прочих неточностей, но для моей задачи она пренебрежимо мала.
>крон
как-то сразу повеяло дэнвером и гиперссылками...
но я не добавляю в проект зависимости без самой крайней нужды, это мой путь ниндзя
Сам ты чатгопота.
Это все равно что сказать, что у меня на сайте 300к хтмл-тегов. Большинство там чистые компоненты и поддерживать нечего
Нанимать кодомакак за 300к+ баксов в год, такие смогут разобраться
И что дальше? Вот те же иммутабельные массивы нужны во время написания кода, а не его исполнения. Нахуя их добавлять, если они уже давно есть в тс?
Пока могут заменить тебя для генерации хуйни.
Да, правда.
Да, правда. Не вкатывайся. Поздно.
Array.prototype.flat(Infinity)
Даже функцию лишнюю под эту хуету не нужно. Ты вот мне сейчас скажешь, а хули будет с тем то или тем то типом, так вот, я скажу, что если ты тс нихуя не знаешь или юзаешь any в каждой переменной, то я вообще в ахуе как вы собеседуетесь на такие вакансии
мимо перекатился с тс на говно
>А художников заменили уже? Художники не нужны?
Почти уже не нужны. Концептеров никто не набирает, рынок фрилансеров в критическом состоянии, а рисующих новичков резко убавилось - просто никто не хочет учиться тому, с чем машина справляется лучше.
загнать бы yield'у тому, кто придумал ввести yield в js.
какая-то максимально далёкая от духа языка штука
>Recoil is an experimental state management library for React apps. It provides several capabilities that are difficult to achieve with React alone, while being compatible with the newest features of React.
Что-то пчелики из Фейсбука, которые коммитят в Реакт, считают что можно и либу заюзать.
>то я вообще в ахуе как вы собеседуетесь на такие вакансии
Успешно, как можешь видеть по скринам.
Причем тут тс, там я жопаскрипт код написал, но как с лишней хромосомой.
>Array.prototype.flat(Infinity)
Прикольная штука, не знал.
Его используют по инерции пердиксы, не желающие переучиваться и переписывать энтерпрайз-приложения. Для новых же приложений его нет смысла использовать вообще.
Просто нет понимания, почему актуален ванильный жс, причём зп как не для вкатунов?
Или в вашем фронтенде все ебали в рот эти самые типы и пишут жопой?
Не. Просто контекст неоптимизированное говно. Что там переучиваться лол, в редаксе в 10 раз больше бойлерплейта всегда было
Вот именно из-за этого бойлерплейта это говно пользовать не нужно. Более того, некоторые это дерьмо считают обязательной частью реакта и считают его "сложным"
из трех тех. собесов двое - 200к, один 150.
прошлый 200, там больше теории было.
я не вкатун. 2 года опыта, я уже ученый.
вряд ли вкачусь на 200, думаю на 140 где-то. но попытка не пытка, как никак х2 будет.
ну, выявить додика, я думаю.
я эту залупу на скринах со второго раза написал только, лол. путался в мыслях и туда сюда скрипт перекидывал. песочница от яндекса какая-то, примерно как блокнот, да еще и дрожал как собака.
второй раз в жизни лайвкодинг. первый раз скюели на бумажке писал.
>Или в вашем фронтенде все ебали в рот эти самые типы и пишут жопой?
я ангулярик, там у нас тс по умолчанию.
Когда стоит выбор между бойлерплейтом и оптимизацией и то выберут первое. А так есть альтернативы. Вот почему тот же zustand не используют для меня загадка. У нас уже подсадил всех на него
мне нравится, пусть ещё добавляют
Ангуляр уважаемо, до того как с фронта на бэк ушёл, присматривался к нему, но послал нахуй, так как красить кнопочки уже заебало
Какие условия? Если тебе говорят реализовать функцию, которая переберет массив и все его элементы положит в новый и назвать её mapped, ты внутри тупо map используешь?
Я не щупал его, ничего не могу сказать. Но коллеги говорят что jotai тот же recoil но лучше, так что попробуй к нему присмотреться. Но повторюсь сам не юзал. Что касается зустанда то с ним не прогадаешь точно. Он очень приятный, с минимумом бойлерплейта, шустрый и легковесный. Одна проблема. Потом в депрессию впадаешь когда снова заставляют на редаксе писать.
А пик пример стейта в зустанде. Все просто и понятно и без лишнего мозгоебства. А потом там где нужен этот стейт делаешь что нибудь типа
iimport useLoginModal from "../path"
const loginModal = useLoginModal()
и передаешь его в пропсы, что-нибудь типа
props={loginModal.onClose}
или
props={loginModal.isOpen}
> пук ряяя мммм ну я привык жрать говно
Вот именно по этой причине и пользуют в 2к23 стейт-менеджеры
Дурачок, всем похуй на твое гурманство. Это лишь инструменты. И контекст это хуевый инструмент несмотря на свою простоту. Именно из-за хуевой оптимизации. Если такие же простые инструменты но при этом с нормальной оптимизацией. И по вышеперечисленным причинам и те кто используют контекст там где он не предназначен и есть истинные говноеды. Контекст и редакс не заменяют друг друга это разные инструменты. Единственное для чего предназначен контекст и для чего редакс использовать не стоит это dependency injection
Чел, хайп уже прошел.
Дурачок, я не пишу на редаксе, я пишу на зустанде.
Так а хули, какой вопрос, такой и ответ, если тебя сортировку попросят написать, без каких либо доп условий, и назовут функцию sorted, будешь сидеть и придумывать вид сортировки, или воспользуешься встроенным функционалом?
Я и не рассматривал редакс как опцию. А насчет остальный стейт менеджеров - я тебе уже писал >>688269
>>688465
Спасибо хотя я, конечно, посмотрел доку и примеры эти видел. Меня больше интересовал вопрос в сравнении. По синтаксису +- одно и то же, но контрибуторы/мейтенеры в recoil - это чуваки из меты, а в zustand какие-то бомжи-фрилансеры. Но при этом звезд больше у зустанда и у него уже 4 мажорная версия, в то время как рекойл сама мета еще не юзает. Для меня вопрос скорее в том, что будет более живо года через 2-3а может и 2-5 лет, потому что если либу перестанут поддерживать и у неё протухнет совместимость с новыми версиями - нужны будут человеко-месяцы, чтобы переехать всем проектом на что-то другое.
>>688494
Сейчас посмотрю ещё на это, спасибо.
Мы вам и не звонили, сами ебитесь со своим легаси-говном
Используй событие тача, а не клика
Не. Даже в тулките немного мозгоебно это слайсы создавать. Бойлерплейт все еще присутствует. Плюс дополнительная путаница с говном типа экстра редусеров. Шутка ли но обычный редакс мне даже поудобнее был несмотря на большее количество бойлерплейта. У нас контора долго без тулкита обходилась на классическом редаксе с mapStateToProps и mapDispatchToProps. Начал учить этот тулкит так как думал что на него перейдем но слава богу не понадобилось, убедил на зустанд перейти. С ним совсем прям просто стало.
Да вроде мне не говорили про флат. Просто сказали написать чтоб работало.
Для раши скорее кринж, сравни срок поддержки LTS выпусков и все будет понятно. Большие кабаны на кукан ноды садиться не будут.
https://endoflife.date/nodejs
https://endoflife.date/java
Хз, философия nodejs такая. Небольшие проекты не нуждаются в долгой поддержке, написал - забыл. Если нужно что-то глобально менять то проще переписать или вкорячить рядом еще один сервис.
Существует только потому, что https://github.com/markerikson присел на редакс и не хочет искать работу. Данька уже пояснял всем, что ВЫЗЫВАТЬ_ФУНКЦИИ_ВОТ_ТАК - это 2015 год и должно там оставаться.
Ты совсем конч что ли? На собесах постоянно спрашивают написать реализацию, а не вызвать существующий метод. Видимо, ты даже до тс не докатился, раз перекатываться пришлось.
упасть
Го для поиграться тоже. Аналог ноды. Может в будущем потеснит пхп из биг 3 но не факт. Плюс вкатунов в го много (судя по HH) а вакансий мало. Но я не из России. У нас спрос большой на Джаву но и людей там много. Потом идет голанг как раз по количеству людей. А вот на шарпея и пхп мало кто хочет почему-то опять же судя по откликам в хх
У тебя будто бы на несколько лет устарела инфа. На го мало людей в принципе, в том числе вкатышей, мидлам и сеньорам платят дохуища, прямо как джавистам, и бигтехи из пост-совка массово используют го.
> бигтехи
Что это значит? Финтехи, медтехи, эдтехи, фудтехи, бигтехи - почему не использовать какие-то руzzгие слова? Бигтехи это большие легасипарашные компании?
Я по хх сужу. Откликов много на гоферов. Больше только на джаве. У нас по крайней мере. Ну и в любом случае это не много. Это мелкая ниша как и все эти питоны, ноды руби и прочее. Мастодонты только жаба, шарпей и пых
Ну речь о бэке. Нода встречается конечно но не прям так массово. На том же западе похайповее она
никогда еще не использовал, но вот сейчас чет пришлось. проверяю строка это или url.
Для ФП - зашквар.
Норм зашквар.
Норм - хендлить проёбы ручками там где возможно.
Тру катч - используется там где ты не можешь всё предусмотреть и оно может наебнуться и когда прототипируешь на коленке и лень.
Это как goto, только хуже, потому что goto подразумевает, что ты можешь прыгнуть на метку в этом текущем скоупе, а try...catch позволяет тебе перемещатся выше по стеку выполнения.
Лет 10 назад я писал либу sling.js, где функции делали throw своих результатов, а обёртка этим всем управляла. Тогда это казалось молодёжным.
Эх, помню конец 13-го года. Отмена срочной службы, попытка разрешить первый гей-парад, флажки ЕС на майдане...
От try/catch сейчас никуда не деться: когда промисы стали разворачивать из колбеков в await, нет другого способа обрабатывать ошибки апишек.
Maybe, Option, Either и тд
480x852, 0:13
Перестань, я сюда не за этим зашел. В 2013 я только за ручку подержался, поехал в миллионик учиться и не смог бы написать ничего серьезнее хеллоуворлда. Играть в доту ещё казалось отличным времяпровождением, не было травм, которые со мной навсегда и никакой войны в помине нет.
> Ебать вы пряники, фронтенд это ж самое заменяемое нейросетями направление уже сейчас, джуны уже не нужны, а мидлов можно урезать наполовину, чтобы просто проверяли высранный чатжпт код. Сука, нахуя вы время тратите, идите в QA, раз такие мартышки гуманитарные.
слова мидл или джун будет только долбоёб который не шарит употреблять, это что-то на языке хрок уже а не реальных программистов
Да мне похуй, маня. Пока ты писал этот пост, нейросети запилили 9000 страниц безукоризненного кода.
знаешь, как звучал мой вчерашний таск?
- Владимир, давай расшарю экран. Короче, видишь, я вот сюда захожу - и раз - переход как бы туда, но не как Евгений хотел. Ну ты понял, да?
Ну, чет хз, я вот на пике хуйню сделал.
Соответственно в url может приходить как просто
строка 'page', так и нормальный url 'https://skillbox.ru/'.
С одной стороны можно просто глядеть на саму строку и чекать на определенные символы, но чет прям в падлу было, 8 часов уже было, ну и я чет try catch навернул.
Выглядил как-то стремно, т.к. мне кажется, что я немного не в тему try catch тут заюзал
>>689458
https://github.com/puckowski/Sling.js#readme
Эта вот это что ли? Или название спиздили? Хотя похоже спиздили, там у гугла какой-то язык еще есть.
>Эх, помню конец 13-го года.
Да, помню, отличные времена были, когда мне было ~11-12 лет.
>>689504
Уволился недавно.
Хуйню сделал. стартсвиз или регулярку.
Насколько я понимаю try catch используют обычно с асинхронным кодом, но в этом случае у самого апи new URL необычное поведение, по моей логике он должен либо создавать объект, либо возвращать null. А он кидает ошибку внезапно, мне кажется в это случае тоже можно и трай кеч юзать
Я че-то тоже это не понял, я вроде давно уже делал аналог, если url создается, проверяю на .host, а если просто строка, то и .host там нету, т.к. объект не сделался.
>>688768
Я бы добавил, что это всё не особо подходит под что то, где rps больше 100, для сложной логики, потому что неожиданно ты начинаешь ловить непредвиденные ошибки/долго ждёшь ответа от сервера при такой нагрузке. Но для фронтбэка, например, это топ тема, так как валидировать данные очень удобно в связке с ts+nest+class-validator, а потом прокидываешь на что нибудь посерьёзнее, типа жабы
> это всё не особо подходит под что то, где rps больше 100, для сложной логики
Почему это? Примеры такой сложной логики?
Ёбаный наркоман. Эффект выполнится только при изменении значения прокинутого в зависимости стейта. Иди доку кури. Говорят её заебись переписали для хлебушков.
физика
И да, я серьёзно. Иди доку кури. https://react.dev/reference/react/useEffect#parameters
А то там ещё какая-то cleanup логика, странные вопросы на собесах про имитацию componentWillUnmount, стрикт мод в реакте который по шапке стучит. Ухх бля.
Я ее и читаю. Энивей спасибо.
Анимации чего именно? Анимации разные бывают.
Есть react-transition-group, есть react-spring / react-motion
Ух, мимо.
У нас всё работает отлично. Просто используй микросервисы и лоад-балансеры от из CNCF по вкусу
> используй микросервисы и лоад-балансеры от из CNCF по вкусу
Можно подробнее? Что именно у тебя используется?
Какой пиздец, эти люди совсем одебилели от магии эпл. На кой хуй ты постишь свой вонючий говнокод картинкой, да ещё узкой и длинной со здоровенными отступами? Ты не слышал про pastebin-сервисы?
Архитектура микросервисов нативно в NestJS поддерживается.
В качестве api gateway (reverse proxy + load balancer) использую либо traefik, либо envoy, оба отлично итегрируются в kubernetes.
У меня просто примерно так же на работе, микросервисы на несте и rabbitmq, спереди nginx, всё в докере, разве что без кубера. Так что не понимаю возгласов о том, что "бек на ноде не подходит для сложной логики". У нас прекрасно подходит, нест охуенен.
netsjs, какая-то версия mobx костыляется декораторами, в ангуляре, вроде, тоже декораторы. А вообще, в жабба скрипт притащили классы, так чего останавливаться и не тащить декораторы[атрибуты], пусть даже пока и через костыли бабле?
В реакте на классах никто уже несколько лет не пишет, декораторов в реакте я вообще никогда не видел
Очевидно, что если ты не знаешь зачем декораторы, скорее всего у тебя и не было необходимости костылять КОКИ (HO[C|F]). Пиши функции свои и пиши. Благо практически все ушли от классов.
> по моей логике он должен либо создавать объект, либо возвращать null
Нельзя вернуть null из конструктора, ты либо решаешь создавать невалидный объект с пустыми свойствами и методами с undefined поведением, либо выбрасываешь ошибку в духе "иди нахуй", других вариантов тут нет. И трайкеч используется не только для асинхронный операций, это скорее бич жса в котором стремятся чтобы лучше хоть как-то отработало чем не отработало вообще
В несте, ангуляре и мобиксе они есть
Нет ничего скучнее нахуй,чем верстка.
Какой же кайф с жсом всякие функции писать жсоны перекладывать, но верстка...
Понимаю, что верстка может показаться скучной и трудной задачей, особенно если у вас есть большой объем работы. Однако, существует несколько способов, которые могут помочь справиться с этой задачей:
1. Используйте готовые решения: вместо того, чтобы писать все с нуля, вы можете использовать существующие библиотеки и фреймворки, такие как Bootstrap, Foundation, Materialize и др. Они предоставляют готовые компоненты, которые можно использовать для быстрой и удобной верстки.
2. Используйте препроцессоры CSS: Sass, Less или Stylus помогают сделать верстку более удобной и эффективной. Они предоставляют множество возможностей для создания стилей, таких как переменные, миксины, наследование, условия и циклы.
3. Автоматизируйте процесс: использование сборщиков проектов, таких как Gulp или Webpack, может упростить и ускорить верстку. Они позволяют автоматизировать процесс сборки, оптимизации и тестирования проекта.
4. Используйте инструменты для проверки качества: такие как W3C Markup Validation Service или CSS Lint, помогают проверить верстку на соответствие стандартам и обнаружить возможные ошибки.
5. Найдите вдохновение: посмотрите на другие сайты и дизайны, используйте существующие шаблоны, чтобы вдохновиться и получить идеи для своего проекта.
Наконец, попробуйте изменить свое отношение к верстке. Это важный этап в создании веб-сайта, который влияет на его визуальное восприятие и удобство использования. Попытайтесь увидеть в верстке возможность для творчества и самовыражения, а не просто как скучную обязанность.
Используем UI либы типа mantine или chakra
А смысл где-то отдельно его обсуждать?
Вообще круто всякие исходники слайдеров смотреть. Обычно никто не рассказывает как сделать слайдеры: как юзать нативные браузерные апи в реакте. Просто устанавливают из нпма либы и дрочат апишку.
> ref: `ref.current.children[0].style=""`
> менять стили в эффекте через ref
Я бы на твоём месте посмотрел что такое VDOM, Fiber, и как работает reconcillation. Я бы просто предположил от твоего рефодрочества, что реакт тебе не нужен.
По-моему тебе надо через медиа запросы в css менять ширину
Q 10 Q K 10
10 Q 10 Q J
Q K Q 9 9
should return 300
Где тут 300??
50
Q
Q
Q
50
Q
Q
Q
https://www.codewars.com/kata/5a1c18d8697598a8ab00009a/train/javascript
Если правильно понял задание - тут у тебя две диагональные последовательности из Q длиной в 4 символа каждая, 150+150.
Пример линий 4 и 5, только не максимальной длины.
Line 4
["X","","","","X"]
["","X","","X",""]
["","","X","",""]
Line 5
["","","X","",""]
["","X","","X",""]
["X","","","","X"]
А где тут 150?
10 Q J Q K
9 10 J 10 Q
J A 10 K Q
(типа не полная галка из четырёх 10? но тогда в предыдущем примере будет больше из-за такой же неплной галки из четырёх Q)
А где тут 450
Q J Q K A
A Q A Q J
Q 9 Q 9 Q
Кароче, в пизду. Я слишком тупой для такого крутого задания.
Пиздец блядь. Возьми ручку с листом бумаги или в пеинте нарисуй, выдели все линии по шаблонам 1-5, длиной от 3 до 5 включительно.
То есть 4 x q 5 x q во втором.
Я какого-то 40-летнего бумера смотрю, который ассемблер щупает и жс по совместительству. Он недавно видос по поводу контекста записал, все согласно спеке записал. Вот наху
дай ссылку, с картинки слабо понятно
Что лучше для быстрого напердоливания админки?
Что быстрее при простом перекидывания мелкой даты с фронта на бек?
Думаю попробовать експресс или нахуй и нест - база?
Экспресс не костылится через анальное расширение прототипов в отличии от. Монгус даже с ТС работает через анус, потому что у тебя 2 точки для типизации, при проёбе в одной из которых типизация просто не цепляется, а модель то вот она.
>>692335
Давай я тебе просто скажу, что NestJS по дефолту работает поверх экспресса?
Экспресс более чем подходит перекладывания JSON'ов.
>Экспресс не костылится через анальное расширение прототипов в отличии от. Монгус даже с ТС работает через анус, потому что у тебя 2 точки для типизации, при проёбе в одной из которых типизация просто не цепляется, а модель то вот она.
нихуя не понял
недавнно начал ноду учить
Ну когда ТС не нужон - наверно монгус заебись, мне оказалось проще взять драйвер для монги.
А вообще что-то там подсовывать в прототипы в 2к23 я в рот ебал.
Если себя не уважаешь или готов найти кабан-кабаныча по IP и разбить ебучку - норм. Это, в целом, немного не тот опыт, который тебе потребуется в работе анальником. 95% заказов так или иначе будут перекликаться с какими-нибудь говноCMSWORDJOOMLIX и попытками тебя наебать.
чтобы нормально на фрилансе работать, нужен нормальный опыт.
без этого опыта будешь хуйней страдать, никто тебя по рукам бить не будет, никто правильным вещам не начит.
не еби мозги и катись на галеру.
>>692389
то есть на реакте что-нибудь незатейливое поделать не получится? Я в целом уже довольно неплохие говнопеты научился делать. Ебашу на нексте, тайпскрипте, реакте, зустанде и призме. Бэк прямо во фронте ебашу через некст. Знаю что так никто не делает в реальных приложениях но мне лень целый отдельный бэк пилить когда некст удобен довольно, но если надо то смогу. Где надо юзколбеками и юзмемами сру. Это я не к тому все говорю что питаю иллюзии что смогу с ноги залететь во фриланс. Я просто не уверен что и этого всего хватит для вката. Я хз уже как выделяться среди других. Какую вакансию не открою там по 150-200 откликов. Уже заранее руки опускаются(((
если ты про скрин то это из видеоурока, никакого монгуса нету, пока все примитивно 3 файлика 3 класса
метод из одного класса вызывается в другом из за этого проебуется контекст
Ну, возвращаясь к первому ответу - экспресса для перекладывания джейсона хватит более чем.
НестЖС - фреймворк с кучей перделок поверх экспресса (можно выбрать другой провайдер), которую в свою очередь сам является фреймворком.
Бери экспресс.
>>692394
Фриланс мёртв, если у тебя нет регалий и задроченного премиум акка - твой удел делать заказы с доплатой. Доплачивать будешь ты.
Можешь задеплоить свои петы на vercel, например, и скинуть ссылку на гит, где у тебя всё сделано. И рассказать что сделал 2000 задач на литкоде.
Я на vercel и деплою. И проекты с коммитами на гитхабе.
>по 150-200 откликов
90% из них это вко-ко-котуны после гикскиллфекторей, у которых одинаковые петы, сделанные во время курсов. Эчар это всё скипает нахер, даже не читая до конца резюме
Если у тебя есть нормальные петы, пусть даже с банальной идеей. но своей реализацией, может даже немного кривой, но зато своей, то это уже сразу плюс
Ок, что такое нормальные петы в вашем понимании? Вот я все пилю пилю на стеке TS, prisma, react, zustand, nextjs. Наверно не самый попсовый стек. Но сами петы банальные, типа клонов твиттеров, соц сетей, мессенджеров и т.д.
Еще паралельно учу sql, сишарп и дотнет. Но это небыстрое дело, шарп не самый простой язык а хотелось бы сейчас уже работу какую никакую найти хоть за средние деньги.
Нормальный, это который не копипаста видосиков с ютуба. Недавно чисто по-приколу чекнул пару резюме вкатунов, так там сразу по несколько таких петов. Причём 1 в 1 скопированные лол. Даже текст, стили, картинки, пиздец просто. Ну пиздишь ты, ничего плохого в этом не вижу, ну так пизди грамотно, поработай хоть немного, стили там поменяй, адаптив добавь которого в видосах нет, хоть что-то сделай. Очень надеюсь, что они хотя бы руками переписывали, смотря параллельно курс, а не просто задеплоили клонированную репу лол
Ну а в целом самый правильный пет - полезный пет. Который предназначен для решения какой-то конкретной задачи. Если есть какие-то увлечения, хобби и прочая хуйня, то можно на её основе сделать прикладное приложение, которым сам будешь пользоваться
>sql если прям совсем не собираешься в бэк и бд упарываться, то нахуй не надо
ORM покрывают 99% работы с sql, а тот самый 1 процент кастомных запросов обычной веб-макаке вряд ли хоть когда-нибудь понадобится
Если учишь для себя и для общего развития - благое дело, красавчик. Если для работы, то можешь хуй забить, Prisma / Sequelize / TypeORM - то с чем тебе реально придётся работать, а не сикьэль запросики составлять
Сначала поешь кала с экспрессом, потом кайфани от неста
Могу только сказать что это polling а не pulling
Я понимаю это. Но в вакансиях на шарпе часто пишут sql. Хотя бы базовый хочется пощупать. Да и на шарпе в ваках моего города не такая орава как на фронт. Не 200 откликов а всего 30-40. Если с фронтом не получится то попробую в дотнет. А если повезет то и знания фронта может сочтут.
Я конечно в душе не ебу зачем тебе там эмиттеры, но надо что-то отвечать в респонзе. Давай, консоль логи по необходимости и вперёд, JS дебагинг.
Даже не хочу знать, почему обработка гет запроса должна срабатывать после ПОСТ запроса с эмитом лол.
У неста порог вхождения выше, ты должен знать ts и структура проекта для новичка покажется заебной.
1) первичный гет запрос висит до эмита в пост запросе, и отрабатывает однин раз (Once), после чего закрывается.
2a) клиент получает респонс на висевший гет и тут же делает новый гет запрос.
2b) клиент не получает респонс, а ловит ошибку и с небольшим делэем делаает новый запрос.
Типа, менее ресурсозатратный аналог вебсокета, но не могу отдуплить как при первом запросе сразу отдать список постов, не дожидаясь PUT от клиента.
С чего он должен на повторные геты получать ответ, если у тебя ответ на ГЕТ запрос приходит только после ПОСТ запроса идущего следом за ГЕТ запросом, в котором навешивается хендлер на одиночное срабатывание?
Шта? Повторные нормально отрабатывают, проблема с первичным получением данных.
Короче надо отдельный гет без хендлера, или с заголовком намутить чтоб отличать инициализацию от наблюдения.
>но не могу отдуплить как при первом запросе сразу отдать список постов, не дожидаясь PUT от клиента.
Так это не одно и то же, посты ты получаешь условно по методу getPosts а апдейты из поллинга условно по getUpdates
>Типа, менее ресурсозатратный аналог вебсокета
Вообще пока что это кал а не аналог вебсокета, у тебя теряются данные в момент когда сервер отдает ответ, а клиент еще не успел сделать новый запрос, потому что ты данные нигде не сохраняешь. В данном примере тебе по идее нужно отправлять с клиента параметром айди последнего поста, и в каком-то хранилище условно чекать есть ли посты с айди > этого айди раз в 1-5с до таймаута, и если есть то возвращать их. В таком случае это будет похоже на настоящий апдейт, ты можешь зайти и через 2 дня, отправить какой-то айдишник и тебе высрет все новые посты с того момента. Это может быть не айдишник а таймстемп, это уже нюансы
балабол
Поясните за принцип подстановки Барбары Лисков. Типа есть интерфейс А и интерфейс Б. Я раньше думал, типа суть в том, что мы можем наследовать Б от А и всё будет работать и так же наоборот наследовать А от Б (не после наследования Б от А, а вместо) и всё будет работать. Но сейчас думаю, что суть не в замене наследовании, а в использовании. Мы должны заменить дочерний класс (new A()) на родительский (new B()) или наоборот и функционал не изменится (или ничего не сломается). Поясните по хардкору, что бы стало понятно.
гибель
Вопрос в чем?
LSP гласит, что если B является подтипом A, то всякий код, работающий с А, должен так же продолжать работать при подстановке B вместо А. НИ В КОЕМ СЛУЧАЕ НЕ НАОБОРОТ
Если у тебя код работает с классом Кот, он не обязан работать с классом Животное. Но если у тебя код работает с классом Животное и Кот является подтипом Животного, то код обязан работать при подстановке Кота вместо Животного.
Может показаться, что этот принцип самоочевиден и всегда выполняется, если ты наследуешь классы по ООП, но на самом деле нет.
Чтобы это понять, попробуй реализовать класс Квадрат и класс Прямоугольник, считая, что всякий квадрат является прямоугольником. А потом напиши функцию, которая работает с Квадратом (например, функцию вычисления площади). Если ты не держишь в голове LSP, то ты скорее всего его нарушишь.
Аналогично будет с классами Круг и Эллипс
>А потом напиши функцию, которая работает с Прямоугольником
Ну вот, даже сам запутался, лол. Быстрофикс
Ладно, ты без примера вряд ли поймешь, вот классика:
```
function f(r: Rectangle) {
r.setWidth(5);
r.setHeight(4);
assert(r.area() === 20);
}
f(new Rectangle());
```
Это код, работающий с прямоугольниками и по своему дизайну никогда не выбрасывает ошибку. Но если ошибочно посчитать, что квадрат является подтипом прямоугольника, то по принципу LSP в эту функцию можно передать объект типа Square: f(new Square()), на что очевидно функция выдаст ошибку, потому что площадь окажется равна 16.
Следовательно такая система классов Square --extends--> Rectangle нарушает принцип LSP, ведь она позволяет написать код, который будет работать с Rectangle, но не со Square
А причем тут area === 20? LSP про нарушение контрактов же, у тебя контракт не нарушается. И ошибка выбрасывается в клиентском коде а не в коде класса
Ну так не в каждом языке работает, но конкретно это отличный пример того, как ещё сильнее нарушается работоспособность кода при неправильном дизайне типов
Ну вроде ясно. Ну и вопрос в том был, что замена должна быть возможна не классов, а уже инстансов этих классов, верно?
гарант
Хейль жабельскрапт.
https://hastebin.com/share/edumiziruc.csharp (пик 1)
https://hastebin.com/share/onobametal.javascript (пик 2)
Я чувствую накосоёбил с видимостью, случился жаваскрипт головного мозга. Ну да ладно.
Не совсем, ковариантный код в Typescript могжет нарушать LSP. Но это рядом
Да,
```
static void Do(Rectangle r)
{
r.SetHeight(5);
Console.WriteLine("width: {0}, height: {1}", r.GetWidth(), r.GetHeight());
// 0 5 в обоих случаях
}
```
После проставления корректных модификаторов доступа в производного классе. Попил чайку и отпустило
Я про джаваскрипт. Код на сишарпе можно привести к варианту на джаваскрипте, если в Rectangle использовать virtual методы (я не шарю в шарпах, но в джаве так).
Даже на джаваскрипте классы нарушают LSP
Первое, что в гугле нашел
Благодарю.
<input name="w-622" type="checkbox" onclick="cRows()">
,
<input name="w-623" type="checkbox" onclick="cRows()">
Кнопка такого вида:
<a id="calculate" class="popup-menu2" href="javascript:CalcCateg(false,true)">Рассчитать</a>
(смотрит какие чекбоксы выбраны и считает результат)
Результат показывается на самой страничке при нажатии на кнопку
мне нужно отправлять выбранные чекбоксы на сайт и получать(парсить) ответ от сайта, проблема в том
что я не знаю как, какими методами языка это можно реализовать? куда смотреть? во вкладке network при нажатии на любой из чекбоксов во вкладке ничего не происходит.
При нажатии на кнопку( аналогично при вводе в консоль javascript:CalcCateg(false,true) )
выскакивает только это.
Можешь сделать пример запроса и посмотреть что там улетело, только включи галочку как на пик 1.
Селектишь как-нибудь хитро свою форму в странице, например твоя форма <form id="yoba_form"><input 666...</form>
Делаешь
const form = document.querySelector("#yoba_form");
Дальше можешь получить доступ к своему чекбоксу и поменять состояние напрямую
form.children.namedItem("w-666").checked = true
В твоём случае, так как там ещё висит какой-то хендлер на клик, лучше делать по клику.
form.children.namedItem("w-666").click()
Форму отправить либо кликом на кнопку субмиту через .click(), либо обратившись к форме form.submit()
Всё. Больше нихуя не знаю. Копайся.
Ты хотел сказать вью с пыхой?
Бля а я-то думал, что все переходят на вью из-за того, что там куча фишек типа апдейт родительского компонента из дочернего и vite из-за чего эта хуйня супер мало весит без особых вложений от прогеров и типа на этом говне просто новые проекты все делают сейчас, ибо он получается лучше от среднего прогера, чем проект на реакте
наверняка это очень тупой вопрос, но я совсем недавно начал.
Подскажите в чем проблема, на пик 1 должно быть как на пик 2, но почему то бэкграунд не закрашивается. В чем проблема?
Наоборот. То что вью проще и делает его фаворитом в средних проектах где он реально удобнее реакта. Но крупняку эта простота за счет уреженных фич нах не нужна.
Ну я пока ничего на вью не делал, просто небольшой курс у улбика глянул, но для среднего сайта он мне показался реально удобнее реакта. Но напрягает как раз то, что реакт более низкоуровневый, что ли, и позволяет ломать свою философию, когда это очень надо. А вот позволит ли мне вью ебашить все, что я захочу, я хз
> закрашивается
Ну как бы там без пиксель перфёкта видно, что пик1 выше других в списке, т.е. там скорее всего на элемент навели курсор (hover). Что его побуждает сместиться, вероятно ещё и картинка в контейнере, который и закрашен, а с картинкой начинает происходить позиционная магия / транслейты.
Половина хочет второго питона, другая хочет третьего, где примерно то же самое, но не то же самое и хипстерские фичи и перделки
Спасибо, буду разбираться
Вью действительно намного проще, поскольку он очень дохера рутинной работы берёт на себя. Вьюха не даёт тебе такого инструментария и глубокой настройки поведения, как реакт. Поэтому тут сложнее наговнокодить, но и ахуенную точечную оптимизацию ты просто так не завезёшь которая нахуй не нужна в абсолютном большинстве проектов
После божественной реализации двустороннего связывания во вью, от реактовских стейтов блевать тянет
>ахуенную точечную оптимизацию
А что за оптимизация которую можно сделать в реакте но нельзя во вью? Да и вообще он будет по дефолту быстрее потому что у него на подписках реактивность, чтобы в реакте такого перформанса достичь (который опять же скорее всего нахуй никому не нужен) нужно абсолютно каждый компонент оборачивать в мемо, следить за ссылкой каждого пропса, следить за ссылками на функции, оборачивать в useCallback с пустым массивом зависимостей и дублировать данные которые оттуда читаешь в реф чтобы ссылка была максимально стабильная и ничего случайно просто так не ререндерилось (повторюсь что чаще всего это похуй). Отсюда я и не пойму что такого можно сделать в рякте чего нельзя во вью в плане перформанса, хочешь апдейтить что-то мимо вдома? и там и там можно вроде
на вью сложно запилить ебанутые решения?
Я не знаю, как описать, но часто бывали такие таски, которые в условиях проекта можно было сделать только через три костыля.
Вью позволяет тебе так сделать? Если да, то думаю, что имеет смысл перекатываться
Вью для души. Реакт для формошлепанья. Ангуляр для серьёзных дядь.
Реакт большинство. Вью средненько. Ангуляр маленько.
похуй вообще. но для ленивых оставь возможность зайти как гость, без регистрации, авторизации.
Лучше к хелловорлду кафку прикрути.
Возьму вуе и буду приложение пилить, иначе я от скуки сдохну нахуй.
Норм или сосну?
Намеренные перерендеры - добро или зло?
Удивительно, как у тебя получается высирать такую нечитаемую дрисню. Зачем какойто враппер еще и в контейнере? Что ты там оптимизировал, наркоман, сука?
В среде реакта это уже устоявшаяся фраза, что преждевременная оптимизация - зло.
Хз зачем я мемоизацию упомянул, черт дернул. Я хотел узнать, нормально ли для выполнения определенной логики (в момем случае враппер получает ширину контейнера как стейт, причем при маунте сам стейт инициализирован как null, но это значение меняется при вызове эффекта, где отрабатывает resizeObserver) намеренно производить ререндер компонента.
>>693968
>>693981
>>693982
энивей спасибо
Нет, в твоем говнокоде нет ничего нормального. Наверняка, твоя задача решается много проще, без всяких контейнеров и врапперов, но ты не описываешь задачу, а приводишь свой говнокод
Хуйня. Джун без коммерческого опыта априори говно что бы он там не знал. А с коммерческим опытом уже не вкатышь.
Да. Приходят на собесы всякие знающие некст, на кой-то хуй нест, тайпскрипт, графкл, даже с бд немало для джуна пробовали, кишочки жса от зубов отлетают, задачи литкода кроме харда решают, но всё равно работу не получают
>нормально ли для выполнения определенной логики
Да, сам такое делал для компонента с графиками. Он на свг, и по дефолту берёт ширину контейнера, ну и понятно чтобы её взять нужно сначала отрендерить пустой див а потом уже взять высчитанную ширину. Плюс сам рендер тоже ебейший был потому что данные шатались туда сюда по несколько раз, и логично что если можно скипнуть эту фазу то почему бы её не скипнуть. Единственное в твоем примере если SliderWrapper это твой компонент то я бы спрятал логику с width > 0 в сам враппер
ДА КТО ВАМ НУЖЕН-ТО БЛЯДЬ??.jpg
>знающие некст, на кой-то хуй нест, тайпскрипт, графкл, даже с бд немало для джуна пробовали, кишочки жса от зубов отлетают, задачи литкода кроме харда решают
Круто, а где знания гита, докера/кубов, локов, CI/CD, архитектуры, методологий разработки, предметной области? Это гораздо важнее, чем кишочки жса и модные фреймворки
Если джун может самостоятельно реализовать оператор new или функцию bind, шарит в Proxy API и ивент-лупе, но при этом не может ответить, почему нельзя из контроллера обращаться к базе данных или в какой части кода нужно форматировать дату для отображения на экране, то он абсолютно бесполезен для проекта.
Я со знанием реакта год не мог вкатиться. Даже не открывали резюме. Только когда .net с ангуляром подучил взяли стажером за 20к. Так что с одним фронтом сейчас вообще нихуя шансов нет. И нода не поможет.
Да кстати забыл написать. Это еще с нарисованным год опытом никто не звал на собесы
Конечно, и без того понятно, что грамотный менеджмент стейтов, юзколбеки мемы и даже юзрефы - вот и вся оптимизация вроде, но хотелось бы большой подробный гайд о том, что и как
А кто вам нужен тогда? Опиши идеального кандидата на позицию без опыта.
Если они и правда знают, а не просто ответы заучили, то тогда зачем их отфутболивать?
Заебала эта параша же, вот бы доллар по 30, чтобы работать в пятерочке и покупать пеку с одной-двух зарплат, а не этим дрочевом заниматься.
Какое отношение менеджер стейтов имеет к оптимизации? Может тебя именно на этом срезают?
mAgiCaL reDuX PreVENtIng ReReNderS
Говорящая капча: элита
Проклинаю эту кривую хуйню с её сагами, сегами, обсёрваблами и прочим нескучными перделками
Под менеджментом стейтов я подразумеваю просто грамотное их использование. Избегание лишних ненужных ререндеров в говнокоде. Но да, наверняка стоит либо не говорить об этом, либо как минимум не использовать это выражение
Да, единственная цель существования этого говнища - чтобы Денчика Абрамова взяли работать в фейсбук. В реальных проектах никакой менеджер стейтов нахуй не нужен.
Я видел как в ВТБ выпиливали redux, в который были закинуты состояния форм на страницах.
btw увидел пикрил, вспомнил недавние бахи копрофагов в /b/, у которых поддержка семёрки пропадёт и стим перестанет работать (базирующийся на хромиуме). Бахнул. Хочу просто смузихлёбить, без ие, без префиксов и постцсс и чтобы работало.
кол-во вакансий так же мало.
чаще требуются мидлы, синьеры. для вката рякт и вью проще будут, я думаю.
Меньше да. Но толку от кучи вакансий если на них орава слетается. Чтоб столько откликов на реакте найти надо постараться. А вакансии уже почти неделя.
> <a onclick="return myFunc(this)">Click me bro</a>
После чего из myFunc() возвращать false.
Или такое в 2023 осуждается и надо использовать addEventListener+preventDefault?
Начнем с того, что предупреждения TS - это не ошибки, эти предупреждения должны тебе помогать, показывая где у тебя проблемы, если ты считаешь это "душить", то ты делаешь все не так.
> если ты считаешь это "душить"
А как это иначе назвать?
TS не видит метод с двумя аргументами (browser.tabs.query), соответственно не собирает проект.
Пакеты webextension-polyfill и @types/webextension-polyfill установлены.
В какую сторону копать?
>не собирает проект
Если проблема в этом и ты считаешь, что число параметров метода ты знаешь лучше, то настрой так, чтоб это не было ошибкой и проект "собирался".
>>694317
>>694324
>>694326
>>694339
> Покажи тип
> посмотри что метод квери принимает
Вот это, если верить TS:
query(queryInfo: QueryQueryInfoType): Promise<Tab[]>;
Но он явно пиздит.
https://pastebin.com/pGtb05ej
Вот рабочий кусок кода на JS.
А TS упроно говорит, что всё не так, переделывай. Как именно переделывать?
Форкаешь, правишь и подключаешь или аугментируешь модуль с типами и делаешь как должно быть...
>>694423
А вообще, ты это то, с докой консультируйся иногда.
https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/query
Вот для хрома.
https://developer.chrome.com/docs/extensions/reference/tabs/#method-query
Дальше сам.
Чел, ты не понимаешь, что происходит, и TS тут ни при чем.
Правильная сигнатура это метода - один параметр и список табов возвращается как промис. А ты упорно хочешь получить список табов в callback-функцию, переданную вторым параметром. Да, возможно, что в каком-то браузере работает и тот и другой вариант, но стандартизованным вариантом является промис.
Приведи пример, где ты решил что он "хуев"
Да, он нашёл судя по всему пример для хрома, типизация и полифилл лежат в репо мозиллы. В доке мозиллы, ожидаемо, как и в типизации - один параметр. Хром нитакой, там 2, видимо было добавлено раньше чем в мозилле, так как второй параметр - колбек с результатом. При этом так же возвращает промис с массивом табов, как и мозилла.
Не помню, из-за чего точно и как именно, но при мутации массива индексы хуевятся и реакт при мапе списков начинает тупить. Заменять надо каким-нибудь отдельным айдишником каждого объекта массива, который ты пытаешься замапить
То есть если массив не мутировать, то никаких проблем не будет. Рекомендация задавать нормальный айдишник - прекрасная, но является строгим правилом
Использование индекса массива в качестве ключа компонента React может быть проблематичным в некоторых случаях.
Во-первых, если порядок элементов в массиве меняется, это может привести к пересозданию компонентов, что может повлечь за собой проблемы с производительностью и перерисовкой. Например, если вы удаляете элемент из массива, все ключи, следующие за удаленным элементом, должны быть обновлены, чтобы отразить новый порядок. Если ключи были базированы на индексах, это может привести к перерисовке всех компонентов, что может быть ресурсоемким.
Во-вторых, если в массиве есть два элемента с одинаковым значением, индекс не может различить их, что может привести к проблемам в работе приложения.
Вместо индексов массива в качестве ключей компонентов React можно использовать уникальные идентификаторы элементов, например, `id`, если они есть в данных. Если уникальных идентификаторов нет, можно сгенерировать их на основе значений элементов массива, например, используя хэш-функцию.
Ключи должны быть уникальными в рамках массива, чтобы React мог эффективно отслеживать изменения элементов и обновлять только те компоненты, которые изменились.
если с массивом не будет происходить никаких манипуляций, то да, норм, но все будут косо на тебя смотреть
Привет. Я не могу разобраться с областью видимости. Помогите.
Есть класс, в нем есть функция, которая задает допустим стиль таблицы. _getStylesToJSON
Есть элемент ридер - в зависимости от значения, которое где-то обрабатывается, вызывается функция из этого ридера.
Внутри ридера могут быть функции, которые вытаскиваются из класса. Собственно вопрос: если я сделаю this._getStylesToJSON() то мне выйдет this - полный ридер. Как сделать правильно, чтобы я мог обратиться к классу?
>>694429
>>694431
>>694456
>>694461
> пример для хрома
Этот код (https://pastebin.com/pGtb05ej) работает в лисе, поэтому я сломался.
В любом случае, я разобрался, спасибо.
Ещё и пидорский vite палки в колёса вставляет со своим lib мод. 2 часа ебался.
Называется, решил пощупать что это такое, пожалуй откачусь на webpack.
А потом у тебя начинают на тех же собесах спрашивать как хендлить различные сценарии с запросами с санками/в ртк и подводить к тому что санки/ртк простенькая надстройка над редаксом, а вот СОСАГА, ОБСЁРВАБЛЫ. УХХХХ. В них такие сценарии обработать проще.
Какие сценарии, где тулкита не хватает и приходится пердолиться с сагами?
проиграл с вкатыша.
Хорошо, но что с видемостью?
Такого чувства непонимания задачи, я давно не ощущал. Во-первых используй тайпскоипт, во-вторых давай полную реализацию метода. (Что он должен возвращать) Мимошёл.
экстаз
Какая разница что возвращает? если суть именно в области видимости? Мне нужно понять как пропихнуть ее выше по области. чтобы this не в elementReaders упирался а в ExportFile
Спасибо
Много вакансий и много откликов > мало вакансий и мало откликов. Плюс ангулар - это легаси технология, не соответсвующая принципам развития современного фронтенда. В перспективе тебе придется перелазить с него на что-то другое.
Я думаю, скорее гугл сделает хуяк-хуяк ModenAngularTS. Просто чтобы не сесть на иглу фейсбука / китайца.
не ангулярщик
Здесь возможно ты прав
>Плюс ангулар - это легаси технология, не соответсвующая принципам развития современного фронтенда.
Но вот здесь
>Много вакансий и много откликов > мало вакансий и мало откликов
Не согласен. Лучше найти не очень популярную нишу и в спокойном темпе работать чем вечные крысиные бега с миллионом вкатышей. По крайней мере пока ты сам неопытный
>Плюс ангулар - это легаси технология, не соответсвующая принципам развития современного фронтенда.
Какие именно принципы современного интернета ставят ангуляр в легаси технологию?
Нахуя мне трогать функциональное говно, когда я прекрасно себя чувствую на ооп?
Для нормальных людей - фп сорт оф процедурного стиля..
SSR когда завезут нормальный? В реакте и вью давно есть.
Утенок говнокодер не может без классов. Он настолько отупел без них что и даже есть без легасиговна не может
Вротендеры однозначно соснули. Хорошо что я в бэк вкатываюсь и фронт только как дополнение использую. И то на ангуляра, реактомакаки не нужны с Сишарпе
Лень укатываться обратно на телефон, не знаю есть ли в их приложении вообще история. Сейчас попробую найти.
Капча пролог
>>694967
Вроде оно было. Мне просто было интересно а чё там после посещения нуфаг-треда.
https://hh.ru/vacancy/79450908
Да тащемта да, посмотрел. Был не прав. Что один кукаретик, что другой. Одному яйца жмут, другому балет.
жс и шарп слабо пересекаются. Если бэк и пишут на ноде то используют тайпскрипт. А так на шарпе сложнее выстрелить себе в хуй. Тайпскрипт тоже это конечно усложняет но там везде можно всяких any понапихать лол
Моя проблема в том, что я, с некоторых пор стал говорить жс, а подразумевать тс. Что в c# отвечает за пиздатый перфоманс?
>>695033 - кун
>>695045
Ну я так понял, что шарп и жс пересекаются как раз только на бэке, хотя и фронт вроде делается на каком-то костыле шарпа, но тем не менее. Запретить any и //@ts-ignore на проекте и дело в шляпе.
фиаско
На фронте. Бывает ещё что джуны пишут на жс а мидлы потом типы добавляют. Но без знания ТС ща тяжко вкатиться. Впрочем и со знанием ненамного легче
На ноде пишут всякие мелкие решения для микросервисов. И все болезни жс она не лечит. В целом можно микросервисы пилить на ней но не более. Ну и непопулярна она у нас, вакансий мало, откликаются на них тысячи фронтожсеров которые щас априори пилят на ноде всякие пэты
https://www.techempower.com/benchmarks/#section=data-r21&f=zik0zj-zik0zj-zik0zj-zik0zj-zik0zj-zik0zj-hra0hr-zik0zj-zih7un-zik0zj-zik0zj-zik0zj-zik0zj-35r
Я сам на несте пишу и обожаю делать бек на ноде, но конечно неприятно, что нода делает такой посос по перформансу. Хотя на деле в большинстве случаев перформанса ноды хватает, да и у других легитимных конкурентов ноды всё намного хуже (питон, пхп, руби). Сишарп, джава и го это всё-таки уровень повыше.
Не то чтоб миф но очень тяжко найти такое. Гораздо менее популярно чем заграницей и куча людей умеющих на ноде пилить
Нет, почему? Они есть, но в целом узкие специалисты чаще нужны, ну и нода для бека не очень популярна в постсоветских странах. Фуллстеки чаще бывают на низкокачественных проектах, либо наоборот Principal Software Engineer гигачеды из FAGMAN, которые дохуя всего умеют. Я чистый бекендер на ноде, кайфую с работы, работы много, если можешь удалённо на иностранного дядю работать.
Хочу работать на дядю. Но покинуть место заключения не представляется возможным.
Принципы развития современного фронтенда - это высокая скорость разработки, высокая производительность, минимальный размер бандла. Это то, к чему идут вуи и со скрипом реакт, это то на чем построены более новые фреймворки вроде свелт или солид. Ангуляр ни под один из этих критериев не подходит.
В менее популярных нишах джуны как правило не нужны, плюс вакансий где можно пропиздеться и залезть будучи без опыта стремятся к нулю. Это вкатыши в кресты любят так рассуждать, что "вот щас выучу Си++, а там никаких вкатышей, устроюсь на изи без конкуренции". А потом выходит на рыночек, видит там 3.5 вакансии с требованием опыта в коммерции от 5 лет.
>но там везде можно всяких any понапихать лол
Сейчас ни один приличный комерческий проект не работает с тс без обязательных noExplicitAny и noImplicitAny в конфиге. На самом деле в тсе не так легко в ногу себе выстрелить, если нормально его настроить и не быть дебилом (то есть не выключать специально правила с помощью коментариев)
>если ты считаешь это "душить"
Ёбаный зумерный порридж с модными сленгами, хули с него взять.
Если бы в легаси был еще и тайпскрипт, я бы самоубился
Типизировать весь этот засохший кал чтоб прошел ревью, иди нахуй......
Это копия, сохраненная 16 июня 2023 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.