Это копия, сохраненная 31 июля 2022 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Больше пары строк кода в посте или на скриншоте ведут в ад.
Для программирования на HTML https://codesandbox.io
Для Node.js с консолькой https://repl.it/languages/nodejs
Если рассчитываешь получить дельный ответ, сформулируй правильно вопрос: «что я хочу получить, что я для этого делаю, что я вместо этого получаю». Если/когда самостоятельно найдёшь решение — поделись в треде, мы за тебя переживаем.
Документация - https://developer.mozilla.org
Руководство для вката - https://github.com/acilsd/wrk-fet#javascript
>ребят давайте по чесноку: вам легко давалось изучение программирования? или дропнуть хотели еври дей, как я
бамп
Нелегко, но у меня мотивация есть. Заебла работа, просто тошно уже. А если уйду, хуй я найду нормальную, да и некуда на моей развиваться, я только деградирую.
>Заебла работа, просто тошно уже. А если уйду, хуй я найду нормальную, да и некуда на моей развиваться, я только деградирую.
Жиза.
Тоже самое походу, в прошлом году ничего нового не появилось
Ты троллишь или я впервые эти либы вижу?
Вот бы ивент-залупа была бы на деке. Вот бы вкатаны охуели...
Палю годноту.
Vs Code:
одно IDE на ВСЕ твои языки и фреймворки. Я на нём как миниум на 4х работал без проблем
Палю годноту
notepad.exe
одно IDE на ВСЕ твои языки и фреймворки. Я на нём как миниум на 400х работал без проблем
Так это пройденный этап, заебло накатывать всякие разные плагины и пердолить всякие автоимпорты и прочее.
вскод IDE можно назвать только для жопоскрипта, для всего остального это просто блокнот с плагинами.
Мне мой ментор сказал, что вебшторм - лучшая ИДЭЕха для фронтендера, так что сам юзай свой ВэСэКод
>это просто блокнот с плагинами.
А что еще нужно программисту?
Консоль, плагины и пердоль код 24 на 7
Профессионалам нужны профессиональные инструменты, которые ускоряют процесс работы. Это все равно что сказать - водителю нажна только баранка и педаль газа, пердоль и пердоль 24 на семь. Но сев в вольво 2020 года и затем вернувшись в жигули водитель будет вблевать от того, насколько уебищен второй вариант, как мало в нем функционала
Ускоряет процесс разработки только знания терминальных команд, остальное оставьте курсоёбам
Ну так вскод дерьмо как блокнот с плагинами, эта ниша уже давно прочно занята божественным ST. А если тебе нужна IDE под что-то, кроме жопоскрипта, то это почти наверняка будет какой-то жидбрейнс продукт, да и то, вебсторм/пхпсторм под джаваскрипт лучше, чем вскод, просто вскод из коробки настроен удобнее.
Лол блядь, посмотрю я на тебя, как ты будешь создвавать даже простой ХТМЛ документ в блокноте. В то время как в вебшторме ты за пару движений можешь создать целые блоки кода
как получить tagName класса HTML-элемента, не создавая экземпляр класса?
Например, getTagName(window.HTMLTableCellElement) должно возвращать 'TD' (ну или 'td', не важно). При этом элемент не должен создаваться. Как написать такую функцию getTagName?
Пробовал window.HTMLTableCellElement.prototype.tagName — кидает TypeError: Illegal invocation
> Зачем такие извращения? Какая цель?
Вот надо мне, например, создать экземпляр класса. Что это за класс, я не знаю заранее, он берётся динамически. Если я напишу new someClass(), а потом окажется, что someClass === window.HTMLTableCellElement, то будет TypeError: Illegal constructor, ведь надо это делать с помощью document.createElement('td');
поэтому нужна функция для создания экземпляров (в том числе HTML-классов) без этой ошибки:
function createClassInstance(Class) {
if (Object.getPrototypeOf(Class) !== window.HTMLElement) {
return new Class();
} else {
return document.createElement(getTagName(Class))
}
}
Ну вот и как это getTagName можно реализовать?
Зачем ты в принципе пытаешься смешать создание обычных классов и создание html-элементов, наркоман?
>VS Code бесплатен
Как и вебшторм. Учась, можно спиратить, а после устройства на работу можно попросить компанию оплатить.
Возможно для тебя это новость, но многие люди не хотят воровать.
> Зачем ты в принципе пытаешься смешать создание обычных классов и создание html-элементов, наркоман?
Чтобы можно было нормально расширять классы HTML-элементов для добавления нужной функциональности и потом их использовать наравне с HTML-элементами (и то, и другое создавать через вышеупомянутую функцию createClassInstance).
Кстати, для расширения класса HTML-элемента тоже пригодится функция getTagName(HTMLClass). Сейчас я не нашёл нужный файл с кодом, но помню, там была примерно такая функция:
function extendHTMLClass(HTMLClass, tagName) {
return class extends HTMLClass {
constructor() {
return document.createElement(tagName);
}
}
}
и от результата этой функции уже можно нормально наследовать (а то ведь напрямую от HTML-класса наследовать нельзя, будет ошибка при создании экземпляра).
Так вот, имея функцию getTagName(HTMLClass), можно намного удобнее реализовать функцию extendHTMLClass, которая вместо двух аргументов (HTMLClass, tagName) будет принимать только один (HTMLClass), а внутри уже делать const tagName = getTagName(HTMLClass); так не будет возможности того, что tagName не соответствует переданному классу, что поможет избежать ошибок.
Это лютейший говнокод, наследование это и так антипаттерн ООП в 99% случаев, а ты еще и динамическое наследование накостылил. И это все еще не ответ на вопрос "нахуя тебе это нужно", на него надо отвечать с точки зрения бизнес-логики: "чтобы нарисовать вот такую штуку и вот такую", а не "ну вот у меня тут уровнем повыше еще костыль и я его хочу обслужить", потому что тут опять возникает вопрос, а нахуя тебе теперь лютый костыль, который ты обслуживаешь костылями поменьше, в которых уже сам запутался >>61021>>61054
Вы посмотрите какая красота, вы только поглядите на это. Какие чистые декораторы аккуратные, господе, боже мой. Да за каким же хуем я работаю на JS, блядь это действительно сука проклятие. Это сука, наказание ебаное.
>Чтобы можно было нормально расширять классы HTML-элементов для добавления нужной функциональности и потом их использовать наравне с HTML-элементами (и то, и другое создавать через вышеупомянутую функцию createClassInstance).
Алё, тебе шаблоны прямо в среду завезли, расширяй и наследуй сколько хочешь почти без костылей.
https://developer.mozilla.org/en-US/docs/Web/Web_Components/Using_templates_and_slots
>а то ведь напрямую от HTML-класса наследовать нельзя, будет ошибка при создании экземпляра
Так потому что это не классы, а интерфейсы.
> эта транспиляция
Не, ну так-то я тоже могу бабеля подключить и обмазываться декораторами без смс и регистрации, но ведь я только что этого же бабеля выпилил из dev-сервака, чтобы порезать время сборки... Тяжело
По крайней мере любой мидломакаке с любого жава решетка пхп стека все понятно что к чему.
Серанул с говнокода на пике.
> И это все еще не ответ на вопрос "нахуя тебе это нужно", на него надо отвечать с точки зрения бизнес-логики: "чтобы нарисовать вот такую штуку и вот такую"
Так ведь много для чего нужно. Чтоб новый функционал добавлять элементам. В основном для динамических таблиц (UI для заполнения таблиц учёта выпущенных машин, автоматическая проверка и генерация отчётов о соответствии контрольных точек нормам и т. д.), да и вообще для любого поведения элемента.
Думаю, это всё можно было бы на том же Реакте сделать намного проще, но сторонние библиотеки нет возможности использовать из-за норм информационной безопасности на предприятии (оно хоть и не режимное, но выпускает продукцию для авиационной промышленности, поэтому всё довольно засекречено, и выход в инет у нас заблокирован, свои носители цифровой информации тоже подключать запрещено).
Всё правильно сделал. Если хотят моков - пусть делают на бэке, нехуй плодить сущности на фронте.
Так ты не сказал, зачем тебе такой пердолинг с конструкторами и тэгами. Компоненты ты можешь и обычными функциями создавать. А уж какой там html тэг оборачивает эта функция другие компоненты ебать не должно.
Фейкер в основном исользуют, чтоы нахуярить несуществующих сущностей на фронте. А на бэке нагенерить говна можно и без него.
А мораль какая? Не пользоваться презервативами, когда живешь среди сифилитиков и спидозников?
>несмотря на то, что код обмазан тестами и типами
Если обмазан тестами а нахуя еще фейкер нужен, если не для тестов?, то ничего сломать не могло, там до любого деплоя/билда бы вылезла эта проблема, если тесты реально используются и что-то проверяют, а не для галочки. Типы да, но это не секрет, что типы нихуя не делают и не могут делать для проверки реальной работоспособности программы.
А поч на фронте нельзя нахуярить без него?
или вот хорошая штучка http://mockjs.com/examples.html https://github.com/nuysoft/Mock
Только не пизди что типы нихуя не дают, ускорение разработки сильное дают, хотя бы благодаря тому что ты знаешь всех пользователей интерфейсов.
Стесняюсь спросить, а ты хоть на каких-то языках писал в своей жизни, кроме жопоскрипта, чтобы такие выводы делать?
>ускорение разработки сильное дают
Щас будет "РЯЯЯ, бойлерплейт писать надо".
Но ведь abstract/interface это лучшее из мира ООП, что помогает в разработке. Ты уж точно не обосрёшься с ф-цией или классом, когда знаешь, что от него нужно по ТЗ
С чего ты вообще взял, что "знание всех пользователей интерфейсов":
1) ускоряет разработку
2) стоит того, чтобы писать сотни и тысячи строк с описаниями типов вместо писания реального кода, который что-то делает?
Я говорю про опыт реальной разработки реальных продуктов, а не "в универе лабу написал" или "скрипт наговнокодил по туториалу один раз".
В том, что интерфейс пишется очень быстро и лаконично.
Интерфейс или абстрактный класс это черновик. Ты на самом верхнем уровне продумываешь как должен себя вести объект
А потом просто пишешть и всё. Как будто сам себе ТЗ пишешь
>когда знаешь, что от него нужно по ТЗ
Но ведь ты не знаешь. Любое ТЗ - это прежде всего описание функционала, и типы никаким образом тебе это описание не дадут и дать не могут, бизнес-логика из них не выводится.
В ТЗ пишешь свой уровень "CRUD", допустим. Потом свой CRUD связываешь с логикой кабана через бизнес-слой
C, C++ убери еще из этого списка и будет похоже на правду. Но вообще да, по сравнению с сями любой человеческий высокоуровневый язык программирования хорошим покажется.
>убери еще из этого списка и будет похоже на правду
Я два года пердолил и больше не хочу возвращаться
>Ты на самом верхнем уровне продумываешь как должен себя вести объект
А при чем тут типы? "знаю сигнатуру типов" не равняется "знаю поведение", это две абсолютно разные вещи с разных планет.
Придумывать ты можешь где угодно, хоть на очке, хоть на листке бумаги, вопрос в том, каким образом поведение соотносится с type signature? Правильный ответ - никак, потому что из "эта функция принимает строку и возвращает строку" ты никогда не выведешь "а, ну это наверное локализация там реализована".
Потому что код приходится постоянно рефакторить из-за субъективных причин. Например меняются требования в ТЗ. Хорошо когда ты знаешь кто использует интерфей который ты хочешь обновить. Отладка тоже облегчается (но не сильно), меньше гадать по ключам в стеке вызова что это за объект ты смотришь
>поведение
За последние 20 лет написали все возможные типовые решения на любую хотелку кабана
Термин "рефакторинг" означает изменение внутренней структуры кода без изменения внешнего интерфейса, так что тебя ебать не должно, кто там что использует снаружи. И при рефакторинге тебе нужно знать одну вещь - что поведение зарефакторенного кода не поменялось. А так как мы уже выяснили, что типы поведение не определяют, то и при рефакторинге они не помощники, любой рефакторинг требует прежде всего тестов. А если ты перелопачиваешь поведение всего кода в проекте, то во-первых это уже не рефакторинг, а обычная имплементация фич, а во-вторых тебя так же должно интересовать в первую очередь поведение этого кода, а не то, что там манятип правильный передался.
Это уже схоластика пошла. Рефакторинг это как раз улучшение структуры кода и его соответствия задаче. А то что ты говоришь это простая разработка, то есть расширение поведения, добавлением нового кода, согласно O правилу из SOLID.
>и его соответствия задаче
Любой рабочий легаси-гавнокод будет соответствовать задаче и выполнять все хотелки бизнеса
> Рефакторинг это как раз улучшение структуры кода
Гугли определение, но я тебе могу его сказать и так: Рефакторинг - это улучшение внутренней структуры кода, без изменения поведения этого кода
>и его соответствия задаче
Никакие изменения поведения к рефакторингу не относятся, это обычная доработка/багфикс, что угодно, но не рефакторинг. В процессе рефакторинга ты можешь обнаружить какой-то баг в коде, потому что код стал лучше и читаемее, и тут же поправить этот баг, но это побочный эффект, а не цель рефакторинга.
Легаси и рефакторят редко. А рефакторят когда проект еще пишется и бизнес только выявляет требования к продукту. Тогда и тесты еще пишутся и переписываются для новых требований. Ты будешь спорить что нужно рефакторить и уменьшать тех долг постоянно?
>Ты будешь спорить что нужно рефакторить и уменьшать тех долг постоянно?
За эти копейки пусть рефакторят сами, а я буду просто закрывать задачки из джиры
Я ж сказал схоластика. Люди периодически рефакторят код чтобы приспособить его к задачам. Да, потому что накапивается долг. Никакой тебе архитектор заранее не напридумает что у маркетолога на уме будет через месяц.
всё, понял. Обычно МЫ увольняемся быстрее, чем он переполняется
Долг служить кабану славно, усердно и очень исправно.
Как супружеский, только для компьютерщиков.
>Люди периодически рефакторят код чтобы приспособить его к задачам
"Приспособить к задачам" и "реализовать задачу" - это две абсолютно разные вещи. Ты путаешь процесс с целью. Разумеется, конечная цель рефакторинга - это чтобы код можно было лучше читать, удобнее менять, и так далее. Но сам процесс рефакторинга изменений в функционале не подразумевает, они идут уже следующим этапом.
Когда чтобы добавить одно поле в форму, тебе нужно ебаться два дня и потом еще неделю фиксить баги.
Ну я и говорю приспособить к задаче. Чтобы можно было хотелки заказчика выразить в к оде без потери им расширяемости, не просто хатэтэпе метод дернуть. Вот у тебя есть к примеру класс Messanger c с методом sendMessage(message: string). Приходит кабан и говорит: "Раньше мы отправляли только текстовые сообщения через сервис наших партнеров, теперь появилась возможность отправлять картинки и файлы. Сычов реализуй". Заменить метод sendMessage(message: string) на sendMessage<T extends MessageContainer>(message: T) это рефакторинг или разработка?
Разработка разумеется, ты добавляешь дополнительный функционал в проект, которого раньше не было.
Куда перекатываться из JS Backend?
>Раньше мы отправляли только текстовые сообщения через сервис наших партнеров, теперь появилась возможность отправлять картинки и файлы. Сычов реализуй
Сычёв правил DTO и всё в порядке
И как, нормально тебе? Не думал, что пора что-то менять в своем подходе к программированию?
Но я же не решаю задачу таким способом. Я просто меняю интерфейсы. Я все поменял код не сломался, все тесты я обновил чтобы они параметрический код тестировали. Но я не могу придти к кабану и сказать задача выполнена картинки отправляются. Отправляются по прежнему только строки. Но код стал больше соответствовать текущим задачам.
>Я просто меняю интерфейсы
И какой смысл в этом изменении? Ты точно так же отправляешь строку, но теперь оборачиваешь ее в лишний бесполезный объект. Нахуя? Данное изменения не имеет никакого смысла в отрыве от задачи по отправке картинок и вносить его отдельно так же смысла нет, сразу уж добавляй картинки туда. Рефакторингом это было бы, если бы sendMessage функция была простыней из сотни строк, а ты бы ее внутри разбил на функции поменьше, чтобы код читался и понимался лучше. Такое изменение имеет смысл в отрыве от любой другой задачи и его можно внести когда угодно, это и есть рефакторинг.
При чем тут легаси или не легаси? Ты пишешь код и от твоего кода все ломается нахуй. И не раз, и не два, а регулярно и как правило. Как думаешь, хорошо это или плохо и что говорит о тебе как о программисте?
Я ничего не оборачиваю
interface ImageContainer {
url: string;
w: number
h: number;
}
type MessagContainer = ImageContainer | string
У месенжера просто будет больше пользователей пользователей.
Вообще как к этому относятся? Есть ли тут патлатые, которые норм устроились?
Смотри на картинках как выглядят пхп, жс, руби, крестах кодеры и иди туда на кого больше похож.
Посылать тебя никто не будет, если не тупой)
Так это еще хуже, во-первых ты заложил туда базу для классического говнокода: когда подобная функция делает разные вещи в зависимости от флага/типа переменной, то это означает, что на самом деле у тебя должно быть две отдельные функции, во-вторых ты даже не написал ни строчки кода, просто зачем-то заранее начал ублажать конпелятор предварительными ласками.
Если не налысо выбритый даже в паху (это тоже проверяют) и не обрезанный/кастрированный, то заставят вертеть деревья на туалетной бумаге.
Зачем тебе Express в 2022? nest js учи, он кайфовый. Express игрушечный, на нем редко проекты толковые пишут
Почему ты решил что она делает это сама а не делигирует? С точки зрения интерфейса он продолжает выполнять свою абстрактную задачу - отравлять сообщения. Рефакторинг же и направлен на то чтобы абстракцию увеличить.
Ты тредом ошибся)
>Почему ты решил что она делает это сама а не делигирует?
Так а нахуя ей что-то делегировать? Если у тебя есть клиенты, которые отправляют только текстовые сообщения, а теперь появились те, которые хотят отправлять картинки, то пусть первые остаются как были, а для вторых делай функцию sendImage.
>Рефакторинг же и направлен на то чтобы абстракцию увеличить.
Абсолютно нет, рефакторинг направлен на изменения кода, но изменения могут быть любыми, в том числе и уменьшение числа абстракций. И так-то любая абстракция сама по себе делает код менее читабельным, потому что вместо прямолинейного кода тебе теперь нужно держать в голове и знать о какой-то еще структуре. Поэтому вводить их нужно только когда это увеличение сложности нивелируется другими факторами, например когда абстракция удачно изолирует связанный блок логики. Сами по себе абстракции ради абстракций код ухудшают, а не улучшают.
У тебя получается что клиенты которые отправляют сообщения зависят от интерфейса sendImage. Это нарушение I из SOLID.
Тут приходит кабан и говорит: "У нас что много клиентов стало, надо отправку сообщений в очередь ставить. Сычев делай" Ты пишешь планировщик очереди: Изображение, Изображение, Текст, Изображение, Текст. Тебе нужно выделить интерфейс
interface MessageSender {
sendMessage(message: string): void;
sendImage(image: ImageContainer): void;
}
и приделать его планировщику чтобы клиенты отправлять сообщения через планировщик а не через Messanger непосредственно. Какому шайтану нужно чтобы планировщик делал два метода, когда они обусловлены только инкапсуляцией данных сообщений. При таком подходе у тебя количество методов будет расти как снежный ком при слоистой архитектуре.
sendMessage
sendImage
sendMessageWithPadding
sendImageWithPadding
sendMessageWithNoResponse
sendImageWithNoResponse
sendMessageWithPadding
sendImageWithPadding
sendMessageWithPaddingAndNoResponse
sendImageWithPaddingAndNoResponse
>У тебя получается что клиенты которые отправляют сообщения зависят от интерфейса sendImage
Что несешь? Тот, кто пользуется функцией sendImage - зависит от ее интерфейса, тот, кто не пользуется - не зависит. Как и с любой другой функцией.
> Это нарушение I из SOLID
Нарушение как раз у тебя, потому что это ты хочешь слепить монструозную функцию, принимающую несколько типов аргументов и делающую разные вещи в зависимости от этих типов(general-purpose interface), вместо того, чтобы иметь отдельные функции для отдельных вещей(client-specific interface). Видимо все в голове уже перепуталось, только акроним запомнил.
>Тут приходит кабан и говорит
Код пишется под существующие реальные требования, а не под выдуманное тобой на пустом месте "а если".
У HTMLQuoteElement какой по-твоему долен быть тег <blockquote> или <q>?
А у HTMLHeadingElement h1, h2, h3, h4, h5 или h6?
>под существующие реальные требования
Требования "существуют" континуально по времени, а не только в одном документе ТЗ
И я ж тебя спросил откуда ты взял монструозную функцию? Messanger делегирует свою работу. Он просто абстракция отправки особщений в архитектуре. Сейчас ты будешь нужность абстракций отрицать и действительно напишешь десяток функций потому что одни клиенты исторически отправляли только сообщения, потом появились клиенты которые отправляют еще и изображения, потом напишешь метод для клиентов нового протокола с падингом, потом метод для асинхронных клиентов которые не ждут ответа.
css/scss modules тоже неплохо
sendMessage('hui') и sendMessage({url: '...', w: 123, h: 123}) - это две разные функции и два разных интерфейса. Но если клиент использует одну из них, то он автоматически привязывается ко второй, хотя вторая ему нахуй не нужна и знать он о ней не хочет. Именно так нарушение принципа разделения интерфейсов и выглядит, и именно это ты хочешь сделать.
Где это видно? MessageSender это базовый тип. TextClient не зависит от ImageContainer
https://www.typescriptlang.org/play?#code/JYOwLgpgTgZghgYwgAgJIFs4HMIGED24co0yA3gFDLXICuUANgFzIDOYUoWA3FTQBYsQtdACNovGsgDuQkeKi8AvhQpgAngAcUAWQitW2PITDEQpALxpMOAkRJRkAHzYcuvCqEixEu-YZwAZQgQABNSSilWENC9AyMAHgAVZAgAD0gw1mQ4gON7cygAPgAKdH8jFiSAShYAN3xgUOVVBAY4A2Qk9LBcBmAQsHI+agRCdihaBDB8KBLNWlF+hDYY6BZco2Cw6GryZBUR5Cg1ub2mBqbhqSkwfmBWADponahnmM2cBImuUoAiAASEAYDHwf2qRxUhzaHWyGCMfQG4GuNDGIAmUxmcwWS2AKxe4SgGwqQVOezIB1UUhOrxK50uoRRN2Qdwe71e7NiJIgCXhthMZmgpUizJugmQABYABwABgANEdRTIWAA2GXyxWi+jMZAAcgAxLrNdQlBCpFCgA
У тебя конпелятор головного мозга, попробуй его выключить и начать думать не типами, а тем, как функции используются в реальном коде и что они реально делают.
Я тебе описал практическую проблему у тебя с игнорированием абстракций. Проблема не в том что у клиента много методов которыми он не пользуется, а что методы содержат информацию об содержании сообщения, потом появится суффикс для чего-то другого. Вместо того чтобы создать интерфейс инкапсулирующий отправку сообщений. Я начал на ноде ровно как ты писать, на одних функциях и модулях. Кроме лапши ничего не вышло.
>Вместо того чтобы создать интерфейс инкапсулирующий отправку сообщений
sendMessage({...}) и sendMessage("...") - это разные функции с точки зрения пользователя этого кода, делают они разные вещи и принимают разные аргументы, то есть имеют абсолютно разные интерфейсы. Тот факт, что они засунуты в одну и ты внутри переключаешься между телом одной функции и телом другой по типу входящего аргумента, не дает тебе "инкапсулирующий интерфейс", а только вводящий в заблуждение говнокод.
>это разные функции с точки зрения пользователя этого кода, делают они разные вещи
Нет, не разные. Они обе делают одно и тоже - отправляют сообщение. И сообщения имеют право быть разного типа. Городить для каждого типа с десяток функций не нужно.
Посмотри на интерфейс MessageChannel из спецификации WebAPI. Там одна единственная функция postMessage - оперирует разными типами. В том числе логически - она может как производить структурное копирование сообщения, так и передавать владение объектом.
>Нет, не разные. Они обе делают одно и тоже - отправляют сообщение. И сообщения имеют право быть разного типа.
У этой функции есть два способа использования - один способ для тех, кто хочет отправлять картинки, а второй для тех, кто хочет отправлять текст. И если я как пользователь данного кода захочу отправить текстовое сообщение через твою sendMessage, то я автоматически привязываюсь ко всему интерфейсу данной функции, в том числе и к интерфейсу отправки сообщений картинками, хотя тот интерфейс мне нахуй не всрался, я им не пользуюсь, и не хочу о нем знать. Это та самая архитектурная проблема, которую описывает принцип разделения интерфейсов. И важна она потому, что в дальнейшем ты хуй разберешь, откуда у тебя идут текстовые сообщения, а откуда с картинками, потому что они оба засунуты в одну и ту же функцию, хотя представляют разную логику.
>Городить для каждого типа с десяток функций не нужно.
Не городи, но если ты делаешь две разные вещи, которые нужны разным пользователям, то разница между этими способами использования должна быть четко обозначена границей и единственный способ это сделать - это использовать разные функции/методы. Либо так:
sendMessage("..."); sendImage({...})
Либо так:
sendMessage(Message.text("")); sendMessage(Message.image({...}))
Второй способ очевидно сложнее и вводит больше абстракций в код, плюс требует переработки всего существующего кода, поэтому если нет веской на то причины, то по умолчанию должен использоваться более простой, т.е первый. Но твой вариант ни в каком случае не используется, это на 100% классическая архитектурная ошибка.
Теперь расскажи как должен выглядеть диспечер очереди сообщений для клиентов? Надеюсь ты не собираешься их переписывать чтобы они об очереди знали.
Как угодно - в первом примере у тебя скорее всего под капотом есть какая-то общая функция отправки, куда ты передаешь уже сформированное сообщение(а если нет, то добавить пять секунд), в нее и суй свой диспетчер, если тебе по умолчанию нужно все сообщения начать отправлять асинхронно. Во втором примере очевидно как. Но если для некоторых клиентов нужно оставить отправку синхронной, то тут только переписывать весь код на второй вариант и вводить что-то вроде sendMessageAsync(Message), это как раз и был бы пример причины, ради которой усложнение архитектуры того стоит.
Ты предлагаешь сделать две очереди? Одну для sendMessage а другую для sendImage? у тебя ж это "разные методы"
>автоматически привязываюсь ко всему интерфейсу данной функции
Да что ты такое несешь-то. Как ты к нему привязываешься, если ты его не используешь? Ты про дженерики что-нибудь слышал?
>Ты предлагаешь сделать две очереди? Одну для sendMessage а другую для sendImage?
>в первом примере у тебя скорее всего под капотом есть какая-то общая функция отправки, куда ты передаешь уже сформированное сообщение(а если нет, то добавить пять секунд), в нее и суй свой диспетчер, если тебе по умолчанию нужно все сообщения начать отправлять асинхронно
Нахуй ты отвечаешь, если читать не умеешь?
>Да что ты такое несешь-то. Как ты к нему привязываешься, если ты его не используешь?
Берешь блять и привязываешься. Если ты используешь функцию, то ты завязан на весь ее интерфейс, в том числе тот, который не используется. В интерпретируемом языке это не так очевидно, и там это просто code smell, который говорит, что одна функция делает две разные вещи. Но вы же тут тупоскриптеры должны знать, что ISP формулировался в первую очередь для проблемы рекомпиляции: когда модуль A зависит от модуля B, то он должен рекомпилироваться при изменениях в модуле B, даже если эти изменения модуль A не ебут никаким боком. Хотя не удивлюсь, если это для вас новость.
Зачем тебе модифицировать низкоуровневую функцию отправки через АПИ партнеров чтобы туда засунуть очередь? Про O (OCP) из SOLID слышал?
Зачем ты модифицируешь низкоуровневую функцию отправки, вместо того, чтобы изолировать ее в свою функцию и модифицировать там как надо? Ты дурачок и не умеешь новые функции создавать? Ну это твои проблемы.
Есть реактивная либа на 500 строк, ее можно распечатать и принести или на память забить если ты совсем отбитый. То что ты сейчас нагородишь приведёт только к неподдерживаемому пиздецу в дальнейшем.
https://github.com/jegan321/nuro/blob/master/dist/nuro.umd.js
Давно у тебя ясновидящие клиенты появились, которые знают, что там функция внутри делает и зачем, а не работают исключительно с ее интерфейсом, который явно говорит "если ты мне дашь вот эту хуйню, то я сделаю одно, а если дашь другую хуйню, то я сделаю что-то другое"?
У тебя есть два типа клиентов, один отправляет сообщения: sendMessage("hui"), а второй картинки: sendImage({...}). Различия между ними только в типе аргумента, но вся логика засунута в одну и ту же функцию и переключается по if-else. То есть оба типа клиентов привязаны к обоим типам формирования сообщения, даже к тому, который им не нужен. Я не знаю, как тебе объяснить еще, ты слишком тупой или троллишь.
Зато ты умный настолько, что не различаешь интерфейсы и реализацию.
Хуйни не неси. Даже в по жопу статически типизированный жаве тебе ничто не мешает разделить эти интерфейсы.
Сычев, я у видел что у наших конкурентов отправляется изображение вместе с подписью, а у нас отправляется только одно изображение. А еще сообщения в том числе текстовые, могут отправятся с датой отсроченной доставки (например чтобы поздравить с праздником).
Еще смотри ты засунул очередь внутрь sendMessage в низкоуровневую отправку, хотя sendMessage могла бы быть консумером очереди. Потому что ты не смог в функциональном стиле извлечь интерфейс из sendMessage и передать в клиента диспетчер сообщений с таким же интерфейсом
Я к тому, что зарпалаты JS бекендеров с каждым годом всё меньше и меньше (фронтовики и фуллстак только растёт). Такими темпами, через 5 лет судьба express будет жалкое ковыряение легаси без тестов за 50 тысяч рублей
Да в том и дело, что так зачастую всегда и делают, во всяком случае я в работе вижу такое везде. Хотя почти все функции в компоненте можно вообще выносить за пределы компонентов, ну тут наверное у лида лучше спросить
Так они неправильно делают. Ты тоже неправильно делаешь, когда смотришь на других.
Если там нетривиальная логика, что прям нужно в отдельную функцию выносить, то это надо делать чистой функцией, экспортить и отдельно тестировать.
>На Nest еще меньше вакансий. Да и хайп по нему уже прошел.
>Да и хайп по нему уже прошел.
Конец 2019: 200к установок
Конец 2020: ~600К установок
Конец 2021: 1200к установок
То есть 6ти кратный рост фреймворка за 2 года (с начала ковида) тебя не смущает? По мне так, хайп по нему будет в 2022-2024 и дефицит разработчиков ох какой большой.
А по общей популярности он находится в топе
>Если там нетривиальная логика, что прям нужно в отдельную функцию выносить
Логика там очень простая, я просто люблю разбивать код на отдельные функции, чтобы он легче читался, и не знаю плохо это или нет, потому что с одной стороны у тебя много функций, с другой код очень прост в понимании
>и не знаю плохо это или нет
Это хорошо. Прием называется - декомпозиция - основа динамического программирования (https://en.wikipedia.org/wiki/Dynamic_programming)
>с одной стороны у тебя много функций
Ты просто не экспортируй наружу все те функции, которые не предназначены для применения пользователем. У тебя может быть хоть сотня локальных функций модуля, а на экспорт у тебя идет одна единственная (в идеале).
Те вещи, что находятся внутри одного и того же модуля, должны быть максимально связаны друг с другом логикой работы - это называется прочность (или связность - cohesion) - чем она выше, тем качественнее код (если у тебя из модуля экспортируются функции\классы которые никак между собой не связаны логически и не взаимодействуют, то вероятно это должны быть разные модули).
Модули между собой должны быть связаны как можно меньше - в идеале быть независимыми целиком и образовывать конечную систему различными иными путями слабого связывания ( например, инъекцией зависимостей). Мера зависимости модулей друг от друга называется - зацепленностью (или связанностью - coupling) - чем она меньше, тем качественнее код.
Помимо локальной прочности\зависимости на уровне юнитов, еть еще общесистемная (компонентная) - вещи из разных слое архитектуры так же не должны быть зависимы (зацеплены) друг от друга (именно поэтому нельзя из компонентов интерфейса ходить в апишку, например, а из сервиса логирования напрямую писать в базу данных). В то же время компоненты должны быть как можно прочнее взаимодействовать между собой на уровне тех же слоев (например, кнопка в формочке, имеющая определенное логическое значение, должна испускать наверх события не просто клика, а конкретного действия, которое она производит, а компоненты которые отлавливают события должны слушать не низкоуровневые события вида наведения мыши - а события бизнес-логики - отправление заказа\раскрытие меню\etc).
>стоит ли выносить за пределы компонента функции, которые используются в самом компоненте? Т.е. они не будут создаваться каждый раз при ререндере занов
Как выше анон уже ответил, если чистая, то писать внутри компонента не имеет смысла. Как правило, нужно обращать внимание на семантику методов компонента и оставлять внутри него только те, которые каким-то образом завязаны на его состояние. Остальные выносить, нет смысла каждый раз при рендеринге создавать их заново. Если такая функция не передаётся в дочерние компоненты, то на скорость работы место объявления функции влиять особо не будет. Если передаётся, то над оптимизацией уже нужно работать, т.к. дочерний компонент каждый раз будет принимать такую функцию за новую (это новый объект с новой ссылкой на него).
так отвлекись, разберись и возвращайся с чистой головой
Боятся обосраться и боятся чего-то нового?
Я еще отдельно прочту весь текст, спасибо, сейчас трудно осилить.
>>61739
Да вот пизда начинается в тот момент, когда у тебя функции передаются в компоненты ниже, и тебе сотню раз приходится городить useCallback по цепочке зависимостей, и тут встаёт вопрос, не сожрет ли вся эта мемоизация больше ресурсов, чем ререндер одной кнопки. Потому что useCallback внутри себя делает много работы, и предотвращает только ререндер, но дополнительную работу все равно делает каждый раз
Потому что бэк на ноде - постоянные костыли. На фронте это ещё терпимо, так как ошибки на нём максимум вьюху уронят. Проебать же БД, потому что V8 что-то там проинтерпретировал не так, как ты думаешь он должен был проинтерпретировать, можеть вылететь в жирную копеечку.
>Проебать прод, потому что они бунтарь решил удалить свою либу с Npm, на которой завязан весь энтерпрайз
Ага,щас
Ну вебсокеты неплохо идут
Откатываешь либу на версию назад или превентивно указываешь точную версию, если так сильно не доверяешь опенсорсу
Как ты прод проебёшь из-за либы, которая даже в прод зависимости не входит? Да и прямого отношения это к ноде как языку программирования не имеет. Такие трюки можно выполнять в любом опенсурсном пакетном менеджере. Ну а то что у энтерпрайза проды ложатся из-за пакетов, проблемы энтерпрайза, так как в отлаженном CI/CD это максимум бы упало на уровне тестов, не добравшись до прода.
>постоянные костыли
Что там костыльного? TypeScript это не костыль, а самотесты для программисты, которые никак не отнимают мощности сервера
В нормальном проде только продукты FAANG ™ , ® , ©
Нахуя ты лезешь в разговор, если не понимаешь, о чем речь? Перечитай, потом вернешься.
>>61655>>61661
Шизоид, ты же понимаешь, что твои шизоидные "а если кабан заставит переписывать так, а не сяк" можно плодить без конца и аргументом они не являются? Либо ты обсуждаешь задачу так, как ты ее изначально сформулировал, либо идешь нахуй, потому что это уже твое пятое "а если надо будет сделать так, а не сяк", которые ты пытаешься использовать в качестве аргумента против нормальной имплементации, но обсираешься каждый раз.
Ну это пиздец манямир и манястатистика на пике, они там что вообще считают? Сравнивают количество двухстрочных микропроектов с монстрами на рельсах и спринге, где 100+ человек в команде может трудиться?
Если какая-то функция передаётся очень глубоко в дочерние компоненты, то это повод задуматься над архитектурой и цепочкой вложенностей. Для чего служит эта функция? Почему нужно обязательно передавать так глубоко вниз? Завязана ли она на состоянии компонента? Если завязана, то возможно эту часть состояния стоит хранить где-то извне - в context или сторе Redux (ну или в чем-то подобном)? Вот так я обычно себя спрашиваю. Сам пропсы/функции стараюсь больше 1-2 уровней не прокидывать, и на самом деле обычно хватает 1 уровня, если правильно построить вложенность компонентов.
Работы с DOM - дорогая операция, поэтому операции под капотом use Callback едва ли сравнятся с ним в сложности (время исполнения отличается на порядки).
>или превентивно указываешь точную версию
Лолблять, это должно быть по умолчанию в любом менеджере пакетов, он не может начать по желанию левой пятки обновлять версии зависимостей на обычной установке, как это делает npm, это ебаный нонсенс. Тот факт, что сломанная новая версия либы положила кучу проектов, сигнализирует о таком пиздеце, раздолбайстве и неопытности в языке даже на уровне базовых тулз, что смешно, как кто-то может выступать за серьезный бэк на нодоговне.
Тайпскрипт на бэке - как раз мегакостыль. Вот тебе стандартная бэкопроцедурка: прочитать содержание папки в проекте. Сделай её на тайпскрипте.
>>61894
>Лолблять, это должно быть по умолчанию в любом менеджере пакетов, он не может начать по желанию левой пятки обновлять версии зависимостей на обычной установке, как это делает npm, это ебаный нонсенс.
Тебе ничто не запрещает npm ci заместо npm install использовать.
>Тот факт, что сломанная новая версия либы положила кучу проектов, сигнализирует о таком пиздеце, раздолбайстве и неопытности в языке даже на уровне базовых тулз, что смешно, как кто-то может выступать за серьезный бэк на нодоговне.
Причём здесь нода?
А эти положенные проекты сейчас здесь, в этой комнате?
Дурачок, ты же в курсе, что npm i обновляет package-lock?
>>61906
>Причём здесь нода?
Ну если ты собрался на ноде писать с нулем зависимостей, то вперед, а иначе тебе придется фетчить 100 васянских пакетов, меняющихся и устаревающих каждый год, потому что инфраструктуры и нормальных фреймворков тут нет.
>Вот тебе стандартная бэкопроцедурка: прочитать содержание папки в проекте. Сделай её на тайпскрипте.
>стандартная процедура
>прочитать содержание папки
Ебать у вас там гавнокод, пиздец просто. Файлы из системы читать вообще нихуя не безопасно, вы поехавшие или ты угараешь?
>с монстрами на рельсах
Рельсы умерли еще в 2010м. Хоть одна конторка знает о существовании Ruby? Я только скриптики видел с расширением .rb
Ну и на вкурсах вкатывались 5 лет назад какие-то вкатуны
Если ты как подавляющее большинство жопоскриптеров не трогал и не нюхал другой нормальный язык, то ты вообще не ебешь, как менеджер зависимостей должен работать, и что обновление локфайла при каждой установке - это нихуя не норма. Это раз. Два - npm ci это нихуя не установка зависимостей, это переустановка, то есть все node_modules удаляются и фетчатся/ставятся заново. Можешь представить, сколько это может занять времени в проекте больше туду листа. Пользоваться им, чтобы сраный npm не лез в локфайл - это ебейший костыль от безысходности и говняности.
Проиграл с представлений жсоманьки о работе и безопасности(!) бэка. И ведь главное так безапелляционно вещает свой дебилизм.
Разве что в твоем шизомирке, рельсы как были одним из самых популярных и удобных фреймворков для стартапов и e-commerce проектов, особенно на западе, так и остались, работу можно найти за неделю. Достойного аналога им в этих областях просто нет.
>Ну если ты собрался на ноде писать с нулем зависимостей, то вперед, а иначе тебе придется фетчить 100 васянских пакетов, меняющихся и устаревающих каждый год, потому что инфраструктуры и нормальных фреймворков тут нет.
Где они есть?
>>61930
>Файлы из системы читать вообще нихуя не безопасно, вы поехавшие или ты угараешь?
Где же твой супер-правильный сервер софтваре хранит кэш?
>Где они есть?
В любом другом не-мертвом языке: пхп, питон, руби, джава, сисярп, все имеют устоявшуюся инфраструктуру и go-to фреймворки для бэка.
> хранит кэш?
А нахуя твой софтваре хранит кэш на диске? Ваша контора не знает о reddis + broker?
>работу можно найти за неделю.
Это если у тебя опыта на нём лет 5.
Вот у меня 3 года бекенда на Node.js (JS) и меня он ЗАЕБАЛ, что я готов уже сеть на дрочённый .NET
Как вкатиться в RoR хотя бы на 150к рублей? Они принимают новеньких?
>Да. Ну и?
Ты отбитый жопоскриптер, если не видишь проблем с непреднамеренным обновлением всех зависимостей в проекте на каждый пук.
>Питон трогал. Голанг трогал. И шо теперь? Там такие же pip freeze и go.mod
Если бы реально трогал и имел одну извилину, то знал бы, что там есть работающие локфайлы, которые не меняются просто так.
>Как вкатиться в RoR хотя бы на 150к рублей? Они принимают новеньких?
Берешь и вкатываешься, если английский знаешь, то в западной конторе 100-150к для джуна, да еще и с коммерческим опытом в связанной области, это как жопу почесать.
Да, английский ежедневвный устный-письменный В2 примерно, давно уже на зарубежного заказчика работаю (ну как обычный гребец на галере)
Когда был пыхарем в студии часто заставляли.
Лол, для этого оказывается textarea есть.
>непреднамеренным обновлением всех зависимостей в проекте на каждый пук
Че несет, вообще охуеть
Верстал лендинги за 200к как-то
>Нахуя ты лезешь в разговор, если не понимаешь, о чем речь? Перечитай, потом вернешься.
Ты просто осознал свою неправоту.
Использование определенного интерфейса широкоспециализированной функции не делает тебя зависимым от всех ее интерфейсов. А ты тупой долбоёб всего навсего. Вот и всё. Соси.
смотря кому дрочить будешь
Через год дроча ты выйдешь в статус "один из сотни кандидатов на вакансию джуна за 25к" в лучшем случае, но скорее всего это будет "один из двухста кандидатов на стажера бесплатно или за 10-15к". А вот уже через год коммерческого опыта да, другое дело.
Ты дебил, влезший посреди разговора, который не понял, о чем речь. Мы говорили об ISP и там "зависимость от интерфейса" прежде всего означает "зависимость на уровне компиляции", а не то, как ты это интерпретировал по выхваченному одному слову "зависимость". Съеби.
Мой мозг, выращеный Питоном, говорит что нужен какой-то парсер, но я знаю, что у жабоскрипта с HTML-ем особые отношения
Как подобное реализовать?
>(фронтовики и фуллстак только растёт).
Потому что никакого чистого бэкенда на ноде просто нет. Если нода, то только фуллстак. Я не представляю себе нодовика, который не знает какой-нибудь Реакт, не сможет покрасить кнопку или сделать SSR. Тем более что это все (ну мб кроме покраски кнопки) чаще всего и входит в круг обязанностей нодовика.
Я не совсем понимаю, в чём там разница
Просто искать определённые html теги (Например, по содержащемуся внутри тексту) и удалять их
HTML это то, что браузер получает в запросе, его можно посмотреть через ПКМ -> "View Page Source". DOM - распарсенный HTML, то что ты видишь в девтулзах. Ты говорил про динамику, так что скорее всего тебе начинать с основ: https://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model
А как делать аддоны это гугли повендорно.
Если так, то мне как вкатуну нужно сначала без graphql научиться ебаться в рукопашную с rest api?
Неправильно понимаешь, и ебли с graphql у тебя будет в сто раз больше, чем с любым рестом.
А зачем он нужен? Почему все бросят qraphql?
А зачем он нужен? Почему все не бросят qraphql?
Мне бы просто кусок кода, который примитивно вырезает какие-то кусочки HTML разметки. Один единственный раз, при загрузке страницы.
Сам дрочу реакт и нативный js
Ну, ты не html и css будешь делать, а jsx и css-in-js делать будешь.
В том, что "примитивный" не значит "лёгкий".
Или лучше сразу во фронт энд девелоперы?
Что вообще надо для успеха? Сайты запущеные свои? И сколько? Резюме, смазливое ебало и так есть.
Есть условие, от которого зависит, какой из двух компонентов отрендерится.
Нужно передать объект из одного компонента в другой. Как это сделать?
Я делаю useState в родительском компоненте и передаю стейт и функцию пропсами в оба дочерних компонента, на что Реакт пишет:
Warning: Cannot update a component (`Parent`) while rendering a different component (`Child1`). To locate the bad setState() call inside `Child1`, follow the stack trace as described in https://reactjs.org/link/setstate-in-render
Начал читать статью, а там классовые компоненты... сейчас не осилю, но завтра почитаю.
Помогите, плиз.
верстальщик и фронтендер две разные профессии которые частично пересекаются, но фронт делает упор на логику приложения, верстальщик - на высокое качество верстки. Не надо верстальщиком идти, если ты фронт, тебя там раскулачат антиdiv-ники
Так а что мне сделать то надо??
Ну типа бэк обрабатывает жсон либо данные и зановит в бд и наоборот, а какая роль у фронта?
Есть и пизда как нужна на самом деле. Сейчас нормальных (именно нормальных) верстальщиков очень мало, в свою контору на проектное сотрудничество до сих ищем.
А для чего нужны верстальщики в 2к22? Они нужны для верстания под php CMS-ки?
Ну я читал, что в 2к22 году всё ещё есть у php CMS-ок порох в пороховницах, например, где не нужно особо сложного фронтенда, а достаточно, например, товары показать
>именно нормальных
А что должен нормальный верстальщик уметь для вашей конторы? Шарить в дизайне и в UI/UX? И знать шаблонизаторы для верстки?
Плюсану. Тоже ищем верстальщика, чтобы без всяких выебонов просто верстал макеты и делал респонсивы. Но на собесы приходят одни реакто дебилы после курсов, которые набрались по верхам и мнят себя мидл фуллстеками, ни в чём ни хуя не разбираясь толком.
>а какая роль у фронта?
Сделать красиво
Получить данные с бека, красиво отобразить и при надобности отправить новые назад
Если я хочу быть верстальщиком, то мне нужно учить не реакт, а дизайн и UI/UX и шаблонизаторы?
Нет, не шутка, server side rendering - СЛОЖНА!
>Я правильно понял, что graphql призван облегчить еботню с rest api?
Нет. GraphQl это прежде возможность запилить свой стейт менеджер, с декларативным получением данных, автоматическим кешированием и пр.
>кешированием
Я искренни извиняюсь за своё существование, я просто вкатун. Объясни, плес, про какое кеширование идет речь. Про кэш который на стороне сервера? Или кэш который в браузере?
Ну, там требуется знать php, sql, cms-ки wordpress, bitrix. И уметь сервер настраивать. Так что это нихуя не верстальщик, а какой-то фуллстек или "веб-мастер"
Я находил вакансии чисто по фронту (HTML, CSS, JS, Jquery). Зп 15-30к
Только ту часть что не под спойлером
В идеале конечно шарить. Но вообще даже если просто по технике шаришь, не путаешь фигму с тильдой, а также просто готов не ебланить и не ставить при этом конский ценник, то велкоме блять, ждём с распростертыми объятиями :)
Смотря куда вкатываешься.
Если на бэк, то нест/экспрес нужны, вместо с графкл, мускл, носкл и прочими приколами.
Если на фронт, то ясен пень не нужно этого
Просто мне раньше казалось, что для фронта нужно это все. И графкуль и серверный рендеринг, в роадмапе это все есть.
> Просто мне раньше казалось, что для фронта нужно это все. И графкуль и серверный рендеринг, в роадмапе это все есть.
Сср ещё можно потыкать, а всё остальное достаточно знать максимально поверхностно
А если более менее шаришь за фронт, то бэк на ноде с приколами долго учить до фуллстека? Я ноду/экспресс совсем немного трогал. А может быть я просто прокрастинирую вместо того, чтобы работу искать
Именно. Как бы даже вот больно сложного не требуем. Но либо совсем кончи с курсов, либо ценник совсем ахуевший ставят
> то бэк на ноде с приколами долго учить до фуллстека?
Сперва фронтом стань, потом решишь надо оно тебе или нет. Вкатун фулстек это нонсенс, как по мне
>либо ценник совсем ахуевший ставят
Охуевший это сколько? Вы берете человека с расчетом на то, что он у вас поработает подольше или вам все равно когда он свалит и вознесется до фронта? Я если честно не представляю себе человека, который хочет остановить развитие своей карьеры на одной верстке. Ему либо нужно платить как фронту или близко, чтоб он туда не совался, либо просто ждать когда он свалит.
Тут в первую очередь идёт соотвествии ценника скиллу и соответсвенно сложности решаемых задач. По поводу роста до полноценного фронта, ну так только рады будем, если в стенах конторы вырастет полноценный спец. И деньгами такого соответсвенно не обделим, благо формат проектного сотрудничества позволяет.
А что ты уже сейчас знаешь? Если нихуя, то есть шанс соснуть бибу. Не потому что ты какой-то не такой и какой-то нехороший, а просто потому что не успеешь.
Я смотрел интенсив гло академии с лысым наставником. Там его какой-то пацан спросил можно ли успеть изучить вордпресс до лето. А тогда март на дворе стоял. И Лысый сказал, что ставит очко, что пацан не успеет с марта до лета.
И действительно, тот же вордпресс легкий в изучении, каждая тема по отдельности несложная, но учить надо много и выходит, что с марта до лета можно ставить очко, что нельзя успеть изучить.
Из других языков ООП, паттерны немного.
Как работают сети и все такое. днс, дхцп, модели оси, куки и прочее.
хтмл, цсс делал сайтики для тянки бывшей для курсача по информатике. Ну как сайтики, набор страничек.
>ООП
>Как работают сети
Хуя се, да ты эксперт. Так что мои слова про гло и ворд пресс в общем-то не относящаяся к тебе хуйня.
Ну еще там про SQL слышал.
Figma ковырял.
Я не знаю куда мне деваться, уж очень хочется с моей работы сисадмино съебать. Заебали принтеры и бумажки подписывать.
Заебало смотреть на 10 тысяч хеловордов и туду листов в разных интерпритациях
Что-то я сейчас подумал, наверное по другому это никак и не может работать. Если предыдущий коммит смерджируют, то в МРе уже не будет отображаться этот предыдущий коммит в изменениях?
С жс у меня знания максимум почитать, но очень уж злоебучий сайт для скрапинга попался.
надо было просто репозиторий хуями заполнить, сейчас это модно молодежно, но гугл не в теме.
https://developer.mozilla.org/en-US/docs/Learn/Front-end_web_developer
[...document.body.textContent.matchAll(/Time to complete: [0-9|\.|–]+ hour/g)].reduce((prev,curr)=>{return prev+parseFloat(curr[0].match(/[0-9|\.]+–/)[0].slice(0,-1))},0)
833 часа минимум, братан.
css, препроцессоры, flexbox, grid ну и набить руку на респонсивах, в т.ч. базовое понимание должно быть какой элемент куда поставить на мобилке, если нет под неё дизайна например.
>>62472
Тупо сейм. Летом взяли одного такого, джуном фронтендером, чтобы занимался версткой, а потом бы плавно начал писать js. Он закончил какие-то вкатунские курсы + полгода отработал в какой-то госпараше. Забавно, что он уже на собесе называл себя мидлом и говорил что хочет сразу писать на ангуляре. При этом он даже с гитом работать не умел. Дале ему верстать простую страницу для админки, там работы ну на два дня максимум, он провозился больше недели и я ахуел, сколько он там говна нагенерировал. Банальную клиент сайд валидацию полей, которая есть в html он сделал через js, дохуя всяких либ натащил, попытался в архитектуру и засрал сторонние компоненты. Полный пиздец. При этом был упрямый, говоришь ему что это неправильно, а он "вот у нас на курсах...". У него была маня-фантазия что после испыталки ега сразу мидлом сделают и будут платить 150. В итоге в последний день испыталки его просто уволили, лол.
>базовое понимание должно быть какой элемент куда поставить на мобилке, если нет под неё дизайна например.
А в чем проблема не делать дизайн, если дизайнер его не нарисовал? Почему верстальщик должен что-то придумывать?
Мне хватает и 2
Речь о том, чтобы не заёбывать дизайнера каждым пикселем экрана, а попробовать решить самому, а потом показать дизайнеру/команде как вышло. Понятно что если сложный интерфейс и большим количеством элементов, это задача дизайнера продумать, как всё должно выглядеть на маленьких экранах. Другая крайность, когда вкатун-верстальщик пилит какую-нить таблицу с формочкой пиксель в пиксель только под разрешение экрана из макета, а на то что всё ломается на экранах чуть меньше отвечает "этого не было в дизайне, создавайте отдельную задачу на респонсив!".
И ещё одна кстати проблема джунов-вкатунов, что они не тестируют свой код, даже на соответствие основным требованиям. Делал такому ревью, усомнился, развернул у себя - нихуя не работает. Спрашиваю его, ты мол локально проверял, у тебя всё работает? А он "нет, а для чего нам тестировщики?". Сам при этом заёбывал всех миллиардами вопросов, 90% которых мог бы решить сам потратив 5-10 минут.
Короче, речь больше про самостоятельность, а не про то чтобы делать чью то работу.
>Банальную клиент сайд валидацию полей, которая есть в html
Это же хуета полная, которую нельзя в конфиг вынести и потом править как душа пожелает
Здесь вкатун прав
> "этого не было в дизайне, создавайте отдельную задачу на респонсив!".
В чем он не прав? По уму должны быть макеты под основные разрешения. Десткоп, планшет и мобила. Между ними уже можно самостоятельно сделать респонсив. Но вот самому это придумывать - неблагодарное занятие. Потом придет дизайнер, скажет все хуйня и будешь переделывать.
Плюсую. Сколько раз пытался что-то нативное в браузере использовать. Потом приходит Кабан с охуительными идеями... как должен работать селект
вообще я бы сказал сколько уже вкатываюсь, но об этом лучше помолчать
Ничего не понятно, неси код.
Передать данные хочешь из родителя в один из двух дочерних, которые рендерятся по условию?
Плюсую, тоже задетектил кабанчика по валидации полей через ебанный хтмл и по классическому не хочет работать за еду, как такое возможно??
В ts я декларирую функцию
function foo(bar: MyObject = {}) {}
Потом вызываю её
foo(null)
foo(undefined)
В случае с undefined произойдёт замена на дефолтное значение, а с null нет
Даже так ему похую, ведь TS существует только на время компиляции
ТС это конечно кал, но в данном случае ты дебил, который не знает основ жса. Дефолтные значения выставляются только при undefined аргументе или когда аргумент при вызове функции не выставлен(что с точки зрения жса одно и то же, потому что костыли). null - это полноценное значение, которое ты сам передал и очевидно его на дефолтное менять нельзя, и это так работает в абсолютно любом другом языке.
>это так работает в абсолютно любом другом языке.
Ожидать, что js кал будет 100% работать как абсолютно любой нормальный язык это, конечно, кек
Есть хэдер таблицы с position: sticky и z-index: 2
Есть выпадающий список с меню с position: absolute и z-index: 11
Ячейка хэдера перекрывает меню, когда оно раскрывается.
Как это пофиксить?
Заодно, пусть на Jsfiddle проблему оформит, а то хуле гадать?
Там тоже зоопарк из разных стейт менеджеров? Пригодятся ли навыки работы с Редаксом? Пилите прохладные.
Я на эмоциях, пчелкин.
У нас на работе если видят что за чужим кодом подсматриваешь, то выставляют голым посреди офиса и стоишь весь день писюном светишь, так что я бы не советовал.
Спасибо. А вот когда в вакансиях пишут Vue, то имеется в виду вторая или третья версия? Илья Климов жаловался на третий Vue, но сейчас может быть все пофиксили.
Какую версию учить, если уже знаю React?
Как минимум vue шаблоны можно фигачить на pug
JSX нельзя, но на то он и jsx чтобы быть убогим бай дезинг
Ну так это же совсем фигня, если использовать pug для более короткого синтаксиса. Там куча плагинов вскода для этого, а весь функционал передачи аргументов и возможность условий выглядят бесполезно, потому что все равно для того что бы перерисовать станицу, ее надо перезагружать. Или я что то не понимаю?
И дальше условия, если планшет, то как сейчас написано, если телефон, то вместо ширины трех полосок надо учитывать ширину одной.
Я пытался сделать это как if(func1 && func2), но он не пашет. Я не пытаюсь скинуть на кого-то свою работу, но дедлайн до ночи, нужно сдать проект, а я сижу и пытаюсь хоть что-то наковырять
1 - как выглядит оно сейчас
2 - что у меня сейчас (огрызок)
else?
Создал на codesandbox проект, создал там папку с картинками, загрузил картинку в эту папку. Хочу эту картинку закинуть в стили как background-image, а не выходит нихуя. Адрес ссылки прописал правильно, картинки со сторонних url показывает как надо, а из папки проекта - хуй. В чем может быть косяк, или так и задумано?
Это другое. У меня именно в файл style.css не получается загрузить картинку в background-image типа:
background-image: url('../img/services_ball.png');
> мне не хватает знаний языка и синтаксиса
> дедлайн до ночи, нужно сдать проект
А-ТЯ-ТЯ, центр занятости., принимай пополнение!
>1 - как выглядит оно сейчас, 2 - что у меня сейчас (огрызок)
Зачем трогаешь return? Ну сделай какой нибудь else if(isTablet.matches) который меняет значение itemWidth.
>Какую версию учить, если уже знаю React?
Никакую.
Твой вопрос звучит как "Какой язык для бэка мне учить если знаю php?"
>когда в вакансиях пишут Vue, то имеется в виду вторая или третья версия
Имеется в виду vue. В большинстве проектов вторая, редко встречается третья. Редко, т.к. она нихуя не поддерживает, надеемся, пока что. В любом случае отличий не так много чтобы было сложно работать на третьей зная вторую.
Признак неосиляторства.
У меня наоборот. В самом-самом начале некоторые вещи казались тупыми потому что не хватало извилин один раз открыть спеку и прочитать что как и зачем.
А слышать про различия в языках в связке с недовольством жс это и вовсе скудоумие 80-го лвла. Чел, ты тупой, если тебе не нравится жс - ебашь веб-ассембли на фронте или модули на бэке. Буквально любой язык можешь встроить без особого геммороя, вот только нахуя если жс банально удобный?
если ты про "хачю чтобы скрипт сам на сайты заходил,нажимал там кнопачки какие хачю" то хуй соси. а так keyboardevent вроде
puppeteer
Или парсить html запроса ручками, или браузер нодой запускать.
могу начать
Заодно посоветуйте пездатый курс для уже не джуна с какими-нибудь продвинутыми рякт концепциями
Там есть раздел с курсами/туториалами, можешь в пул реквест запилить список.
Нашел вот этот гайд (https://forum.losper.net/topic/90-aktivatory-jetbrains-agent-dlja-ide-ot-jetbrains/#comment-238), он должен сработать, не похерю ли я все такими действиями? просто ссыкотно, если что-то сделать неправильно и я лишусь вебшторма, то это будет пиздец
Если ты вкатыш, то тебе вскода хватит за глаза. И не нужно ничего будет крякать и воровать.
Я уже на стажировке, скоро она закончится и мне нужно будет что-то более менее приближенное к реальным задачам делать
obj.addEventListener("mousemove",event=>{
console.log(event.target.clientY);
})
почему он выбрасывает ундефайнед?
Таргет это хуйня в доме, с которой ивент случился. А тебе не его координаты же нужны, а координаты самого ивента.
Что за щедрота, ты там самый главный по программированию что ли, что дают самому выбирать какие курсы проходить?
Просто скачай с рутрекера, там в каментах к раздаче обычно пишут как активировать и получилось ли.
Спасибо, тогда еще вопрос - какого хрена не работает тор? Всегда с него на рутрекер заходил, а сейчас тор тупо не пашет. И даже впн в опере отвалился... че за нах, гайки закрутили?
https://frontendmasters.com/ - лучшие курсы по фронтенду во всем интернете
https://javascript.ninja/
https://ru.hexlet.io/
Можно еще Тимура Шемсединова смотреть, у него все бесплатно выкладывается на ютубе.
Я не Илья Климов
как отфильтровать массив от цифр больше текущего индекса?
например [5,4,7,9,2,4,4,5,6]
берем первый элемент, фильтруем все шо больше 5, остается 4,2,4,4
второй 4 = 2
третий 7 = 5,4,2,4,4,5,6
и т.д.
сложна. я вкатыш
сделал пока как на пике
я хз какую функцию написать внутри фильтра чтоб он отсортировал нормально
сравнить все елементы между собой и каждый результат вывести в консоль все цифры меньше текущего елемента, я хз
вот я хотел чтоб оно так работало, но вместо 2 циклов использовать фильтр или хз что еще можно использовать в таком случае
function smaller(arr){
for (let i=0;i<arr.length;i++)
{
let temp=arr.filter(t=>t<=i);
console.log(temp);
}
}
smaller([5,4,7,9,2,4,4,5,6]);
Фильтр возвращает массив, если тебе нужна ещё и сортировка то прямо и пиши сорт, а если ещё и строка на выходе, то джоин. Что неясна то?
Ты даже не пишешь, какой у тебя уровень и над чем конкретно в практикуме ты думаешь
потом делаем обработчик события на движение,с методами сclientXY и херачим значения в позицию элемета?
Шли, что ты теряешь?
Соррян. Уровень в разработке - нулевой. Только по мелочи верстал для себя всякие формочки и странички. JS на самом базовом уровне, чтобы кнопочку покрасить или элемент удалить. В практикуме думал над этим курсом https://practicum.yandex.ru/web/
Смотря что понимаешь под "переместить". Если визуально, то достаточно transform: translate(x, y) поменять. Если по ДОМу - то там намного больше ёбли требутся.
> https://frontendmasters.com/ - лучшие курсы по фронтенду во всем интернете
Классные, но это все ещё "чувак объясняет код"
Мне бы хотелось курсов с упором на практику.
От себя могу порекомендовать epicreact от Kent C Dodds
он в несколько меньшей степени страдает от этого
Очевидно же у облачного файлохраналища будет АПИ с эндпоинтами, позволяющими манипулироваь файлохранилищем.
а есть разница в применении?
Т.е. мне отдельно кроме бд нужно создать файловое хранилище и к нему также через запросы подключаться? aws вроде нагуглился
Вообще хочу как стратежке-выбрал элемент с подсветкой,потом кликнул в другое место,он туда пошел
Ничего "отдельно" создавать не нужно, у тебя уже должен быть модуль создан с функциями, отвечающими за работу с хранилищем. Если туториал на трубе не совсем дебилом был сделан, то там уже всё ассинхронно написано, а значит тебе только понадобится условно вызывать или нодовские методы для манипуляции файловой системой или запросики в облако отправлять. Скорее всего придётся писать дополнительный модуль для работы с АПИ облака, функции которого и будут дёргаться модулем хранилища.
Ну, сейчас навел, прочитал перевод той страницы, там очень много пояснений, но из-аз перевода не совсем понятно. пох, придется на ютубе искать
Ну про создавать я имею ввиду, что у меня же должно откуда-то это хранилище появиться чтобы я туда файлы закидывал, соответственно его нужно отдельно создать?
Это уже от вендора зависит. Но как минимум тебе придётся создать аккаунт у вендора. Облачные микросервисы же!
Тут два пути, https://developer.mozilla.org/en-US/docs/Web/API/HTML_Drag_and_Drop_API или если нужно таскать элемент внутри другого, то простой аттач евента mousemove после mousedown и удаление после mouseup.
Чел, JS это язык для фронтента. Ведь ничего рискованного на морду приложения не ставят. Максимум, упадёт вьюха или поедет клавиша на 10 пикселей. Бекенд пишут на настоящих языках
Безопасно делать хуяк-хуяк в продакшен и получать 600к в месяц
>лучший бекенд фреймворк в мире
Оно уже научилось в неблокируемое IO или всё так же отжирает по стеку на каждый параллельный обработчик запросов?
Не масштабируемый
Работает на старых подходах и костылях. Все вакансии с рор требуют знание жиквери в 2022
Состоит целиком из уличной магии и трюков которые надо запоминать.
Ни одной стоящей идеи не привнес в в веб, только породил каргокульты вроде ларавела
>Не масштабируемый
Сейчас бы масташибировать Node.js, используя какие-то костыли вроде pm2 и шпионских облак
Хорошо это или плохо вообще?
Там команда менеджеров и SMM-щиков, а для разработки и поддержки сайта один фронтендер. Кто собеседовать будет? Как будут уровень оценивать?
1366x768, 5:04
1. Почему фрэймворки уровня vue или react идут с набором npm пакетов с уязвимостями из коробки, которые не фиксятся через npm audit fix?
2. Если даже что-то и фиксится, то, обычно, рушится весь проект
3. Если править ручками, то как понять какой тип уязвимости и в каком месте примерно (строка файла?). Если npm умный дофига и их находит, почему он об этом молчит?
4. Если править пакеты и их уязвимости ручками, то как быть с обновлениями пакетов? Ведь новый код обновленного пакета затрет старые исправления
5. Почему все проекты, которые я "щупал", сделанные на реакте и прочим вью, тянут с собой и jquery какой нибудь?
6. Не кажется ли Вам, что вся эта структура с кучей вложенностью компонентов, свойствами и "опусканием их вниз по компонентам" или "поднятию на верх" сильно усложняет жизнь программисту и замедляет разработку? Ну вот на jquery берешь селектор и пишешь строчку кода, например, отобразить там что-то. В реактовью надо делать компонент и передавать туда свойства, чтобы отобразить там что-то. Сильно больше писанины же.
Как скажешь
зависит от места клика
document.getElementById("container").style.transform = "translateX(30px)"
вроде на этот пример ориентировался
нужно нести код. а вообще мб ты пытаешься изменить стейт родительского компонента из дочернего компонента? для таких манипуляций нужно писать функцию в род. компоненте, изменять в ней стейт и передавать её через пропсы в дочерний, в дочернем просто вызывать её с нужными аргументами
https://stackoverflow.com/questions/35537229/how-can-i-update-the-parents-state-in-react
если я в точку попал, то я шерлок
Я забил на ту проблему, поскольку после загрузки на Github Pages эта ошибка не отображалась. Но понимаю, что надо разобраться, поэтому набросал пикрелейтед того, как это выглядит, чтобы текстом долго не объяснять. Сам код лень по кускам скриншотить.
P. S. Расстраивает, что почти все примеры и объяснения делаются на классовых компонентах, я не особо шарю в них.
ну так ты не может setAbc передавать через пропсы и пользоваться дальше, пропсы read-only, ты можешь сделать как я те написал
в двух кавычках запутался.
> Ну вот на jquery берешь селектор и пишешь строчку кода, например, отобразить там что-то. В реактовью надо делать компонент и передавать туда свойства, чтобы отобразить там что-то. Сильно больше писанины же.
Попробуй alpine.js базарю
Почему-то на эту тему почти все примеры с классовыми компонентами. По твоей ссылке для функциональных компонентов предлагают пикрелейтед решение, это ровно то же самое, что и у меня.
а вон оно что, мб нужно в юзефекте что-то делать, т.е. стейт менять после рендера компонента?
> ну так ты не может setAbc передавать через пропсы и пользоваться дальше,
Это почему? Диспатчеры сетстейта можно передавать вглубь и это работает
Есть хук, который получает данные с сервера по апи.
В родительском компоненте вызывается хук и туда передается параметр page из state у родителя. Этот state прокинут пропсом в Pagination, откуда возвращается число.
Проблема в том, что при клике на необходимую страницу сначала происходит запрос на сервер и подгрузка нового списка с фильмами, а только потом происходит ререндер компонента Pagination. При этом state у родителя сразу мгновенно обновляется при клике на необходимый номер странички.
Кратко: тыкаю на 3 страницу в Pagination, горит индикатор 1 страницы на Pagination, крутится лоадер, список загружается и с 1 страницы индикатор сразу же перескакивает на 3 страницу.
Как я хотел бы: после клика сначала происходит рендер Pagination и индикатор сразу перескакивает на выбранную страницу, а потом происходит подгрузка фильмов.
Как такого можно добиться?
я обосрался, этот хук и есть функция, в которой можно менять стейт
Это очевидно, да.
Тогда вопрос по-другому поставлю. Как заставить дочерний элемент в родителе рендерится первым, а потом рендерить всё остальное?
Ну так страдай. В этом вся суть говно-юай либ - выглядит просто и легко, а как появится проблема, то городить вагон костылей.
Никак, если ты хочешь делать такое, то тебе реакт не подходит, потому что его модель рендеринга подобное не предусматривает и не поддерживает. Другое дело, что ты пытаешься сделать хуйню, тебе нужно хранить состояние "выбрана такая страница" отдельно и передавать эту страницу в запрос, а не получать с сервера, как ты делаешь сейчас, тогда все будет меняться сразу же.
>не сидеть за пк 7 месяцев
>до сентября дрочить каждый день js
Выходит, что ты собираешься сидеть за пк 7 месяцев. По крайней мере в глазах родителей так и будет. Что ты делаешь что-то за пк, хуй знает что и эффекта нет. А для родителей так оно и выглядит, что если прямо сейчас нет триллиардов дохода, значит ты занят хуйней и играешь в пеку и переписываешься с тёлочками.
Неправильно сформулировал, да. Я имею в виду, что могу сказать, что занимаюсь программированием хотя я и так им занимался - расскажу все, что думаю и чего хочу добиться, мало ли, доверятся. Вопрос скорее в том, возможно ли получить существенный прогресс за <=7 месяцев. посколько дохуя на дваче вкатунов с хорошей зарплатой, которые вкатились 4 месяца назад, по их же словам
Это набор для фуллстэка, да? Логика в том, чтобы быть универсальным красноглазиком, что увеличивает шансы найти работу/заказ?
Второе.
ЖС не "самый востребованный для фронтенда", а единственный. ПХП нихуя не самый востребованный, на бэке зоопарк языков и у каждого своя ниша и сфера применения, можешь просто гуглить топ популярных языков для веба и выбирать какой первым понравится, разницы особой нет, работу найдешь на чем угодно.
>что лучший вкат в деньги и работу - js
Наебали. Палю лайфхак, в JS вкатываться год будешь, а вот в Ruby за 3 месяца тебя захантят уже
Зачем в мертвом языке ждуны? Там диды нужны поддерживать могилки в порядке.
А как это в фреймворк вкатиться быстрее, чем в язык, на котором этот фреймворк работает?
Когда-то тут была совсем иная атмосфера.
>А как это в фреймворк вкатиться быстрее, чем в язык, на котором этот фреймворк работает?
>Зачем в мертвом языке ждуны? Там диды нужны поддерживать могилки в порядке.
В JS 1000 Джунов на одну вакансию
В Ruby обратная конкуренцтя, 10 контор готовы принять джуна, лишь бы знал синтаксис
>Все треды это сплошное как войти в айти, наполненные чуть более, чем полностью долбоёбами.
Это НЕ из-за МВП или людей. Просто JS считается как параша для вкатунов, такая судьба оверхайпа. Мне в этом треде тоже неприятно, сижу и охуеваю от ЕБАНУТЕЙШИХ вопросов, просто пиздец. Челик вчера переменную в строку не мог передать, кому нужны такие программисты в будущем? Постоянно в треде создают вопросы уровня "как двигать кнопку влево". У людей нет навыков гугла, все хотят сразу тут и сразу здесь
Я и не говорил, что это ИЗ-ЗА мвп треда. Я сказал, что жс-тред стал его филиалом.
ВСЁ, что тут обсуждается, всегда обсуждалось именно в мвп. Он для этого и был создан. Раньше всех вкатунов и обсуждения собесов, зарплат и прочих "подводных" ссаными тряпками гнали именно в мвп. Теперь это не так лишь потому, что контингент треда сильно скатился за эти последние 5-7 лет.
Смотря где работу ищешь. В мухосрани найти контору на 200 зеленых в месяц в целом реально. Но если чо одного js будет не достаточно. Кури css за одно как адаптив пилить и всякие бест практики. В целом научится можно месяцев за три потом залелеть на вакансию сразу если повезет или стажером и через месяц на вакансию.Попробуй на сайтах с работкой поискать стажировки/курсы со стажирковкой когда какую то базу получишь. Но сразу говорю задачи будут той еще хуетой. Во фриланс даже лезть не думай
Начни с изучения сиквеля. Это основное чем беков на собесах попускают кроме верчения деревьев.
Ну так репорть нерелейтед посты, кто это за тебя будет делать? Я?
>Челик вчера переменную в строку не мог передать, кому нужны такие программисты в будущем? Постоянно в треде создают вопросы уровня "как двигать кнопку влево". У людей нет навыков гугла, все хотят сразу тут и сразу здесь
А какие ещё вопросы задавать?
Я что во время вкатунства не видел смысла задавать вопросы в треде, что тем более после вкатунства. 95% гуглится, а если не гуглится, то проблема в твоём говнокоде или в тебе.
Так что вижу две цели треда - хуесосить друг друга, флеймить, спорить почему твой фреймворк говно а мой лучше. Другими словами кидать говном в друг друга.
Ну и другая цель, это на вопросы вкатунов унижать их. Чтобы у них выработалась привычка сначала загуглить. А потом спрашивать , а спрашивать уже и не нужно будет.
Да просто у него раньше хуй стоял, а теперь нет. JS-тред всегда таким был.
Знаешь как жикверей показать пользователю всплывающее сообщение, то уже мидл. Если можешь сделать на жиесе обратный отсчет до конца скидки, то уже ниебаться синиор. Вот было время...
Сейчас - ненужен.
Нахуя нужен rar если есть zip? Нахуя нужен git если есть svn? Нахуя нужен yandex если есть google? Нахуя нужен dash если есть bash? Нахуя нужен С если есть ALGOL? Нахуя нужен ты?
Ярнодебил порвался.
Ярн уважает локфайл, а не переписывает его при каждой установке, как это делает обосранный npm, одной этой причины достаточно чтобы npm отправился на помойку. Ну и выполнение кастомных скриптов у него лучше, npm-run это тоже костыльное говно, которое даже параметры в скрипт передавать не умеет по умолчанию, надо подпирать костылем.
Как происходит принятие на удаленную работу? Как детектить персон, желающих наебать меня на личные данные?
Твои личные данные давным давно уже у кулхакеров за 10 рублей
Риск есть всегда, но если у конторы есть хотя бы страница в hh - то шансы выше
Скажите, плес, если у сайта обмен запросами и ответами проходит через GraphQL, то я смогу их увидеть в браузере в инструментах разработчика во вкладке Network/Fetch/XHR или надо отдельно скачивать расширения для браузера GraphQL, чтоб увидеть запросы и ответы?
Жы есть.
Есть идеи, как сделать это покрасивее? Мой вариант выглядит всрато как-то.. Плюс дублирование кода ещё (список строк в типе юниона и внутри функции этой).
Ладно, наверное, так оставлю.
Круто + классно и я так делал с функциями.
Но тут фишка в том, что у меня это за получение данных с API отвечает кастомный хук.
А хуки внутри других хуков не работают.
На скриншоте ход этого хука. Внутри хука действительно есть функция, которая собственно и делает запрос.
Может мне тогда лучше использовать только эту функцию? Но как тогда возвращать кортеж [data, loading, error]?
Вообще не хотелось бы отказываться от идеи использования хука. Может у кого есть какие идеи? Было бы интересно послушать.
Красивое
>fetch
>data
Ты забыл дженерик прилепить к своему хуку. И getData() на ассинхронную функцию переписать. Ну а за то, что переменную называешь как один из глобальных объектов без ведомой на то причины, вообще пиздить надо сапогами.
>А хуки внутри других хуков не работают.
Как же ты тогда ипользуешь useState() хук в своём хуке?
> Ты забыл дженерик прилепить к своему хуку.
Это что-то с TS связанное? Я еще учу его, поэтому не разобрался.
> И getData() на ассинхронную функцию переписать.
А сейчас она разве не асинхронная? Я же then использую.
> Ну а за то, что переменную называешь как один из глобальных объектов без ведомой на то причины, вообще пиздить надо сапогами.
Справедливо, совсем не подумал.
>>65062
Хорошо: хуки должны быть на верхнем уровне компонента. Надеюсь теперь правильно.
Ну и пиздливые же мрази, свистят, что раньше никто вопросов не задавал, все молча через гугл всё решали, а на самом деле нихуя подобного. Уроды ебаные, строят из себя.
А почему тогда их объявляют через const? Я просто смотрю упражнения на freecodecamp, да и просто куски кода если что-то гуглю, везде const. Здесь
https://www.w3schools.com/js/js_array_const.asp
даже написали, мол
>It has become a common practice to declare arrays using const
Чтобы этой переменной нельзя было ничего присвоить, можно только менять/добавлять свойства.
Гребцу галеры слово не давали.
const - это бессмысленная религия, воспринимай ее просто хуевый как стайл гайд, который в проекте соблюдают просто для консистентности. Чему-то полезному он не служит и служить не может, отличия от let номинальные и в основном существуют только в шизоидной голове const-адептов в виде абсурдных рационализаций.
Чтобы избежать мутаций.
А еще много где есть ес-линт, где будет ошибка, если ты напишешь let и никогда не переопределишь значение.
Экмашиз в треде.
потому что это дефолт объявление для переменной, которое нельзя переназначить будет. если пишешь лет, то сразу понятно, что ты будешь менять значение переменной, а значит повышаешь таким простым манёвром читаемость кода
550x440, 0:20
>typeof null === 'object' // => true
>undefined == null // => true
>undefined === null // => false
>NaN === NaN // => false, NaN == NaN // => false
>isNaN(1 + null) // => false
>isNaN(1 + undefined) // => true
>isNaN('hello world') // => true
>Number.isNaN('hello world') // => false
typeof NaN === 'number' // => true
>if (new Boolean(false)) {alert('evaluarted to true')}
Спасибо, чекнул!
Для тех кому надо ссылка: https://www.udemy.com/course/understanding-typescript/
>15 часов
За выходной явно не освою. Ладно, поищу что-нибудь ещё более поверхностное...
Типизации и компиляции в байткод
>код (который решает реальную проблему)
Гейткипинг вкатунов и набор в команду сильнейших из сильнейших
да ну например в коде калькулятора NaN уж точно проверять нужно, практически в любой либе есть проверки типов
Из интернета.
лет-дебил что-то там про шизиков и религию заливает.
Проверил, проверяй
а если чел введёт строку, то как её провалидировать? а если чел 0 на 0 поделит? придумай пока велосипеды, а я буду пользоваться isNaN!
на вс коде я и так сейчас сижу,хотел для разнообразия вебшторм попробовать.Кто то говорил что он удобнее
> Ну так напиши бота, который будет по баннерам переходить.
Ты не понял,рекламу ставят когда есть траф допустим 200 уников каждый день
Я на рутрекере скачал.
>удобнее
Удобнее это использовать одну полноэкранную программу для всех действий. Если им там мало функционала VS Code, то это не программисты, а макаки
В /gd/ объяснят, базарю.
Вопрос-то в чём? В игре или в профите? Лол.
Если бы на второе был общеизвестный ответ, не существовало бы понятия риска и все были бы богачами.
Это копия, сохраненная 31 июля 2022 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.