Это копия, сохраненная 5 июня 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Больше пары строк кода в посте или на скриншоте ведут в ад.
Для программирования на HTML https://codesandbox.io
Для Node.js с консолькой https://repl.it/languages/nodejs
Если рассчитываешь получить дельный ответ, сформулируй правильно вопрос: «что я хочу получить, что я для этого делаю, что я вместо этого получаю». Если когда самостоятельно найдёшь решение — поделись в треде, мы за тебя переживаем.
Документация - https://developer.mozilla.org
Руководство для вката - https://github.com/acilsd/wrk-fet#javascript
У меня на гитхабе в петпроекте, последние коммиты это редактирование Readme файла, я его редактировал раз 20 и все это в выстроилось в ряд коммитов, которые засирают ветку изменений. Как это можно сплющить до одного коммита? Или удалить как-то их что бы изменения не потерялись в самом ридми?
Можешь попробовать сделать бэкап проекта, на всякий пожарный и выполнить git rebase. Или это не подойдет?
Зачем делать бэкап если бэкап на сервере сделан?
Вот даже статью нашел, там точно так же сделан контроллед инпут. Точно также онЧейндж и вэлью.
Ну да. Только без Controller, а по-обычному:
<input className="input" type="text" {...register("input", options.required)} value={state.input} onChange={handleChange} />
{errors.input && <span className="input">{errors.input.message}</span>}
бля, откуда вы лезете? Как можно было придумать гибрид react-hook-form и "обычной" работы с инпутом? сука...
А как надо работать с react hook from? Во всех статьях что я читал, работают так и не обламываются.
Ну день, ну может джва. Хуль там изучать-та
Спасибо анончик!
2-3 недели.
Отправил тебе защекоинов, проверяй.
Я ставил себе для андроида по итогу реально эмулятор, nox например, можно и наверное более подходящий для разработки и в т.ч. для яблок. Хотя обычно хватает браузерных в фоксе и хроме с определенной допустимой погрешностью.
Я вот раньше с телефона и смотрел, в браузере эмулировал, а потом пришёл яблочник и сказал, что всё хуйня, вёрстка поехала. Вот и не знаю как можно всё разом протестить. Ну видимо только browserstack и остается. Там есть фриланс лицензия за 20 баксов
Если хочешь заниматься бэком, то лучше вкатывайся на пхп или сишарпе. На ноде ждуны не нужны, хуй работу найдешь.
Пример с лерн жаваскрипт
//рекурсивный setTimeout
let timerId = setTimeout(function tick() {
alert('tick');
timerId = setTimeout(tick, 2000);
}, 2000);
что меня смущает - не создается ли при такой реализации цепочки из замыканий?
Я привык к инжектящимся сервисам, т.е. у меня источник правды и так везде один.
У сервисов методы и ивенты с какой хочешь сигнатурой, а не одинаковые.
Единственное, что приходит в голову - это когда делаешь какую-нибудь хуйню с единственным стейтом, то в редуксе не надо править никакой код, а только добавлять свой.
Ты на вопрос так и не ответил. Почему я должен юзать редукс, а не отдельный сервис, где у меня свои методы и ивенты, а не диспатч экшнов и регистрация редюсеров?
Так чтобы инжектить сервисы нужен инжектор лучше дерево и сервисы. Всего этого естественно нет, поэтому на-ка вот, подержись за синглтон
> что меня смущает - не создается ли при такой реализации цепочки из замыканий?
Откуда? Функция создаётся 1 раз, остальные разу исполняется уже созданная функция.
Если все есть, то хули ты спрашиваешь? Да, он тебе не нужен.
Прочитал пару глав, вроде бы перевод не совсем ебал её рука. А английскую версию сложно читать, потому что мало того, что язык не родной, так еще новые сущности постигать совсем трудно. Вот только не знаю насколько удобно будет такую огромную книгу в руках вертеть, и не лучше ли будет всё таки электронную навернуть?
useContext или Connect react-reduxa?
Я и то ито пишу, но щас говорят что хуки для проброса предпочтительнее типо. В реале как?
>Заказывал кто-нибудь
На торентах лежит, перевод местами хуевый, лучше в ориге читать.
Там помоему опять перевели что то уровня ПРИВЯЗКИ
function sayHi() { // (1) создаём
alert( "Привет" );
}
let func = sayHi; // (2) копируем
func(); // Привет // (3) вызываем копию (работает)!
sayHi(); // Привет // прежняя тоже работает (почему бы нет)
=====================================
Почему func() сработало, это не функция нихуя, схуя ли она стала функцией.
Ну если быть точным, то это переменная, содержащая ссылку на функцию. JS смотрит, что в ссылке, а раз там функция, значит её можно вызвать
Там вроде со скобочками функция вызывается, а без скобочек можно с ней че-то делать.
у всех разрабов вакансии с вилкой 300-400к + всякие бонусы, на собесе говорят что будет работа в каких то своих проектах. вопросы на тех собесе были обычные мидловские. зазывают очень усердно и настойчиво. из требований которые я выяснил на собесе: не пить не курить,отсутствие татуировок, не носить длинную бороду, не носить длинные волосы. сам про контору накопал что занимается типо white hat хакингом, но типо не на заказ, а делает контент на основе этого статьи на хабре, тик токи, видосы в инсте + то что там большая текучка и мало кто долго прорабатывает т.е. не больше года-полтора. из за чего становится непонятно откуда у них бабки чтобы платить разрабам такие бабосы. аноны, вы что нибудь знаете о ней, стоит ли туда соваться ?
>let func = sayHi; // (2) копируем
Нет, тут ты ничего не копируешь. Ты кладёшь в переменную func ссылку на функцию sayHi. Всё.
А, ну тогда другое дело. Так понятно. Спасибо за объяснение.
Нет. Тут он копирует ссылку на функцию из одной переменной, в другую. Теперь на функцию указывает две независимые ссылки.
>не пить не курить,отсутствие татуировок, не носить длинную бороду, не носить длинные волосы
Чего нахуй? Ну не пить разве что на рабочем, месте, остальное вообще с чего вдруг высралось?
https://v1.postuf.com/conditions
Пиздец ебанный, все моники повернуты к надзирателю с плёткой. У всех на столах таймеры отсчитывающих время рабства. Я не знаю сколько они там платят, но это какой-то пиздец. Наверное еще палками пиздят каждый час, чтобы держали строй
https://v1.postuf.com/equality
>Нужно способствовать дисциплине и не допускать злоупотребления правилами, иначе никакого равенства не будет. Не нужно стесняться и думать, что это донос. Это считается доносом только в том случае, если ты и нарушитель не признаете правил и не считаете нужным их соблюдать.
Похоже рабовладелец какой-то пизданутый шиз с манией величия. Охуенная там атмосфера в коллективе наверное
Пролистай страничку, там панорамное фото, у всех на столах
Судя по написаному на компам тайм трекеры стоят, уже после этого можно дальше не читать че там. Это архаичный рудимент нулевых, который используют говно конторы. Смотри лучше банковский сектор, в банках щас рост колличества вакансий к прошлому году больше на 50% и зп самые высокие, средняя зп в банках тоже к прошлому году выросла у айтишников. Большая корпортивная культура и не анальные услвлия работы, для вката самое то.
Неверная инфа. Работал в тиньке и в альфе.
А лол, я их вспомнил, эт они на хабре форсили свой клиент телеги с двойным дном, еще просили дурова ответить, кекус. Поднялись однако, там было два разработчика, щас уже целый стартап с неплохими зарплатами, но начальник поехавший.
Хули если бы я свою контору открыл я бы тоже ебанутые требования ввел, всем ходить в розовых поло и пить воду только из бутилированных фаллоиметаторов.
Все что решает задачу релевантно
>Он релевантен в 2021 веке?
С какой стати он должен был перестать быть релевантным? Для ебанутого преобразования данных ничего лучше еще не придумали.
А чего нет-то? Проекту 2 года. Как видишь, используем lodash хотя бы 1 раз на 2500 строк, лол.
Хуевую картинку приложил, вот более информативная.
ramda.js же
>базовые ФП утилити без которых код в принципе нельзя писать читабельный
>ХЕЛПЕРЫ
Вголос с маньки. Как там, циклы for небось пишешь до сих пор?
> Mobile phone support format 380 + 50|63|66|67|68|91|92|93|97| 96 + 7 digits.
Уверен для сидящих тут профи это на минуту-две.
Изучай стандартную библиотеку ноды, express, потом nest.js + typescript, библиотеки для работы с вебсокетами, базами и очередями, аутентификацию и авторизацию
Там вроде какие-то проблема были с next.js
Так у тебя все написано уже
Ну так докер и не для дебилов вкатывальщиков, а для состоявшихся инженеров.
хуки просто песня. В проекте получилась целая библиотека shared hooks, которые используют context внутри. Запросы к api тоже через hooks с кешированием. Полностью отказались от redux и других state managing libraries.
Через props спускаем только данные для dump components
Sps anon
В докере хуй разберешься блядь по человечески, хотя на деле довольно простая оказалась штука
А что за хуки? Самописные? Есть какой-то гайд по этому делу? не по самописным хукам, а по отказу от стейт менеджеров в пользу хуков
Для вкатывания начинать с оф документации reactjs.org по context api и hooks. Поняв всю мощь комбинации useContext/useState/useRef/useYourOtherCustomHook inside custom hook, можно начинать эксперименты. Тут тебе сразу и свой элегантный аналог DI можно запилить и что душе угодно, ведь получаешь натуральный конструктор
Но я не понимаю почему там стоит именно M? Я сначала думал, что M это просто название объекта и можно подставить любое значение, поэтому я заменил M на другую букву, но оно не сработало, что означает, что M имеет особое значение, но в Интернете ровно НОЛЬ упоминаний window.M. Кто-нибудь объяснит?
Тебе по беку не нужно вообще никаких знаний. Даже базовых. Там всё на 99% работает как в реакте. Разве что нужно будет условно чекать window например, чтобы на стороне сервера к нему обращения не было. Но ты всё равно об этом сразу узнаешь, посколько в dev режиме у тебя всё будет в ssr рендерится. Единственный заёб, это стейт менеджмент, нужно разделять стор на клиенте и сервере, чтобы на сервере каждый раз новый стор создавался. Но на гитхабе некста есть примеры того, как это сделать
Покажи лучше весь код, у тебя похоже что-то записывается в объект виндов, и потом чтение происходит. По дефолту никакого поля М у виндова нет, можешь в бразуере чекнуть шиз. И вообще что за ебалу ты там делаешь? Читай учебники лучше
export const useMessage = () => {
return useCallback(text => {
if(window.M && text){
window.M.toast({html: text})
}
}, [])
}
Честно говоря, мне главное то, что оно работает, но я пытаюсь понять суть того почему этот код работает. Ты бы кстати молчал про "Читай учебники", я уверен, что значительно начитанее тебя.
Очевидно библиотека какая-то что-то добавляет. Без песочницы твой фрагмент кода ничего не дает
Неофит на связи. Пишу через js куки время в секундах каждую секунду для того чтобы передать их в пыху. Но каждое обновление откуда-то берется 2 абсолютно разных времени. Писал и алерты и смотрел в значения куки в бразуерах.
const printx = { log: console.log, error: console.error };
По дефолту нет никаких M объектов. Подключи правильно либу, и может быть появится.
>php
Зашквар и неуважение -1000соц.кредитов.
>Задает вопрос без кода
"Бля, рибята у миня сламалася памахити!!"
Зашквар и неуважение -1000соц.кредитов.
>Неофит
Вкатыши не нужны. И уж тем более во фронте.
Берут this из того места, в котором они объявлены. Могут возвращать результат без указания return. Всё остальное ситуативно
>Зашквар и неуважение -1000соц.кредитов.
Нихуя себе самомнение у жопаскрип макаки
>И уж тем более во фронте.
Ахахахахахахахахахахаха, блядь
Сразу видно человека, который никогда не писал реализацию bind()
>>Зашквар и неуважение -1000соц.кредитов.
>Нихуя себе самомнение у жопаскрип макаки
>
>>И уж тем более во фронте.
>Ахахахахахахахахахахаха, блядь
Проблема:
Я не могу получить доступ к элементу через querySelector, он всегда возвращает null. Поиск элемента происходит после загрузки страницы вот так:
if (document.readyState == "complete" || document.readyState == "loaded" || document.readyState == "interactive") {
console.log(document.querySelector(".selector"))
}
При этом если поставить сюда вместо лога в консоль алерт, то алерт начнет выполняться еще до того, как табличка прогрузилась (там вметсо нее будет спинер вертеться). Как мне выполнить запрос вовремя и содрать с хитрой таблички данные?
Только начинаю учить js и пока такого термина, как "стандартная библиотека" вообще не встречал.
Однажды ты узнаешь, что Земля вращается вокруг Солнца.
>DOMContentLoaded
Вообще не стартует из tampermonkey. Видно, что в девтулзе обработчик висит на событие, и видно, что из скрипта, но оно не стартует.
Хорошо, где взять гайд как стать состоявшимся инженером?
>>13512
Да я о том же, я не девопс, мне не нужно каждую заебульку настраивать. Просто хочу создать отдельное окружение для своего проекта, image или как там его. Сука все же просто в теории. Почему ни одного нормального гайда. Анон, как ты в итоге разобрался в нем?
Иди нахуй, хуесос.
>как ты в итоге разобрался в нем?
Мне нужно было для некста контейнер собрать, у них на гитхабе был пример, оттуда и взял. И уже после этого теперь мне понятно, что я в принципе должен писать в докерфайле. Вообще у них есть примеры неплохие в доках. Проблема моя изначально была в том, что я вообще нахуй не мог понять, что такое докер, и нахуй эти контейнеры нужны. Вообще чем больше я сталкиваюсь с непонятной хуйней, тем больше понимаю, что единственный способ разобраться в чем-то, это: не понимать, не понимать, не понимать, а потом ККААААК ПОНЯТЬ.
Ладно, спасибо, пойду к ним в доки за примерами.
hui budesh?
>Окружение предоставляет «стандартную библиотеку»
То есть веб-апи браузера и «стандартная библиотека» это одно и тоже?
Нет.
Ты конкатенируешь к булеану число, происходит преобразование типов булеан в число, при это фолс становится нулем, тру становится единицей, соответственно при тру у тебя тру становится 1 + еще три единицы итого 4, а при фолсе он становится нулем и еще три единицы - это 3.
setTimer, дебич
Короче в жс динамическая типизация, при попытке сложить два типа они приводятся к одному, в данном случае к числу, по правилам преобразования тру становится единицей, фолс нулем. Читай лерн жабаскрипт мазафака.
Во-во. А потом носится тут анти-тайпскрип-шиз по треду и орет: АРЯЯЯЯЯЯЯ КОНПЕЛЯТОР УБЛОЖАЕТЕ!
но ведь ты и есть шиз
Не учи. Выбери то, что тебе по силам.
Hold я так понял что всегда используют
Trial временные технологии
а остальное че?
hold это "остановись, подумой"
Премного благодарен, анон.
Откуда картинка?
Разве рендеринг это не обновление дома? Если изменений не произошло, то реакт ничегр ререндерить не будет в этих компонентах же? А вот что там виртуальный дом шатает, я не знаю при этом
Если не ошибаюсь, то при использовании контекста при изменении данных в контексте запустится ререндер всех потомков контекст провайдера, даже если эти потомки не используют эти данные
Хотел прикрутить тайпскрипт к пет-проекту на вью, и ничего не вышло. Нормально работает только в 80 процентах ситуаций, а в остальных 20 приходится либо ублажать конпелятор, либо лепить ts-ignore. Надо было писать на реакте - он с тайпскриптом работает нормально.
Все верно. Context API не имеет никакого отношения к стейт менеджменту, это тулза для других целей и ее юзать надо с умом.
Просто в понимании даунов стейт менеджмет это только прокидывание глобальных переменных в компоненты.
Даунов настолько много, что появилась даже такая хуйня - https://github.com/dai-shi/use-context-selector
>Вроде в Vue3 уже лучше поддержку завезли
Завезли (хоть и все равно не полную), только под третью версию пока еще не адаптировали много библиотек.
Anya?
>А использование тайпскрипта на проекте, в котором его нет, максимум в >>14754 выльется.
Не обязательно. Тайпскрипт можно внедрять потихоньку, просто с отключенным strict any и т.д.
Проблема в том что для этого нужен чувак который уже шарит в ТС и его настройке, а так с нуля вряд ли выйдет и правда.
>Че там с вебпаком делать, лоадер прописать лол?
Перенести бабелеподобные трансформации, переименовать все файлы, потом во всех этих файлах отловить все критические ошибки тайпскрипта.
Ну или хуярить отдельный энтрипоинт для тайпскриптовской компиляции, который хуй пойми как будет взаимодействовать с основным.
Поехавший, миграция на ТС не происходит "переименовать все файлы". Любой js файл является валидным ts файлом. Ты просто начинаешь переименовывать по очереди и добавлять базовые типы, работая над проектом.
>Любой js файл является валидным ts файлом.
Найс мантра, вот только js файлы уже прогоняются через бабель, который несовместим с тайпскриптом. Впрочем для конторки уровня "пиши в проекте на тайпскрипте через полторы недели" прогонять код через две транспиляции и так сойдёт.
>пиши в проекте на тайпскрипте через полторы недели
Я написал своей первый тайпскрипт код в 16 лет.
Мимо руководитель конторы.
Через вебпак больше чем 2 транспиляции проходит. Да, сначала тс для транспиляции с тс в джс, потом бабель для рантайм генераторов и подобного, в сложных проектах и больше лоадеров висит в конфиге.
В реале всегда такой уверенный титан непоколебимый, а тут встал вопрос устройства на новую работку, прочитал что там будет собес в стиле FAANG и у меня чет яички немного вжались.
Понимаю что нужно похуистически отнестись к собесу, и отвечать на похуй - что бы было все на расслабоне, я так и планирую.
Но томительное ожидание перед собесом повышает градус волнения. Буквально каждую секунду начал ощущать которая приблежает меня к собесу.
Садишься, закрываешь глаза и минут 20 представляешь в самом наихудшем кошмаре, как ты проваливаешь это собеседование. Если ты будешь делать все правильно (т е не будешь давать себе поблажек в этих вымышленных ситуаиях), то к концу времени ты должен заметить: что твой мозгу надоест об этом думать и он будет пытаться смещать внимание на другие проблемы или интересные вещи и что ты стал более спокойным. Ты должен осознать, что ты принял полностью ситуацию, что ты придешь и обосрешься так сильно как никогда раньше и тебе в целом норм.
Точно анончик, спасибо. Как-то раз уже использовал такую технику, представляешь самое худшее что может случиться, много об этом думаешь и вот в реале все не так уж страшно получается. В какой-то книге давно читал этот лайфхак. Спасибо!
Включаешь прям на собесе с внешних колонок Death Grips и игноришь все просьбы сделать музыку потише.
Это главный недостаток данного подхода
lohkok
Всем привет. Чуть больше 3х лет работаю формошлепом, хочу углубиться в CS и получить "минимум разработчика", который в теории получают студенты IT - шных направлений. В первую очередь апнуться в классических алгоритмах/структурах данных и паттернах проектирования, так как с этим так или иначе приходится сталкиваться в работе. Кто знает - посоветуйте пожалуйста книги по означенным темам, идеально, если для реализации примеров будет использоваться js/псевдокод, вникать в Паскали - Джавы не хочу. Трехтомники Кнутов на 3000+ страниц так же прошу не предлагать.
Это псевдокод. Паскаль ты по этой книге не изучишь. Эт вообще известная фундаментальная книжка, от авторов другой известной книжки по компиляторам. Тебе надо на русском нач цкл кон цкл? Есть такая для школьников https://www.litres.ru/d-m-zlatopolskiy/programmirovanie-tipovye-zadachi-algoritmy-metody-6509134/
На нпм забанили?
За полгода можно не то что джс выучить, а реакт свой написать на нем с блекджеком и шлюхами.
Ты видимо что-то не то делаешь.
Курсы норм, но не инфоциганские как на скрине у тебя, а на udemy, frontendmasters, coursera. Сам сейчас прохожу
https://frontendmasters.com/courses/hardcore-js-patterns/
Отлично заходит после его же книжки.
Это хардкор материал, но я к тому что самостоятельное изучение и возможные курсы это часть "быть программистом". Поэтому если ты за полгода не понял что происходить, то возможно это просто не твое. Особенно если "насильная зубрежка" есть. У меня 5 лет работы и я не помню чтобы хоть раз насильно что-то учил. Тебе либо интересно понять как работает и как писать код, либо нет.
Сорян, возможно описание жопой прочел. А по паттернам можешь что нибудь посоветовать?
Redux > Mobx > вся остальная хуета
Redux это функциональный, математический, чистый подход (Update монада). Все остальное лишь попытки накостылить стейт менеджмет для зумеров, чтобы им не было СЛОЖНО.
Я не зумер и мне в целом нравится редакс, но почему в нем нужно везде вручную делать мемоизацию селекторов чтобы не было лишних ререндеров? В мобиксе это встроено из коробки, и в vuex тоже
>Redux это функциональный, математический, чистый подход
Набор религиозных мантр типичного фп-шизоида, без единой попытки обосновать их "хорошесть" в данном контексте, да и вообще в любом контексте.
>Все остальное лишь попытки накостылить стейт менеджмет для зумеров, чтобы им не было СЛОЖНО.
Расскажешь, почему сложный подход лучше простого и почему ты в таком случае пишешь на высокоуровневом языке, а не дрочишь байты на ассемблере, что в сто раз СЛОЖНЕЕ?
>функциональный, математический, чистый подход
Это когда для поиска одного элемента перебираешь весь массив?
>Набор религиозных мантр типичного фп-шизоида, без единой попытки обосновать их "хорошесть" в данном контексте, да и вообще в любом контексте.
Что обосновывать? Плюсы те же, что и во всем фп - надежность, экспрессивность, скалируемость и читаемость кода. Лучше объясни хорошесть магический реактивных переменных мобкса.
>Расскажешь, почему сложный подход лучше простого и почему ты в таком случае пишешь на высокоуровневом языке, а не дрочишь байты на ассемблере, что в сто раз СЛОЖНЕЕ?
Когда простота ухудшает кодовую базу, ничего хорошего в ней нет тоже. Должен быть баланс. Тут дело как раз в том, что зумеры подсели на иглу ЧТОБЫ ПРОЩЕ И МЕНЬШЕ "БОЙЛЕРПЛЕЙТА", а потом мы имеем портянки из говнокода на реакте.
>Плюсы те же, что и во всем фп - надежность, экспрессивность, скалируемость и читаемость кода
Опять набор религиозных безосновательных мантр, да еще и идущих вразрез с реальностью, в которой ФП-языки даже со всем хайпом до сих пор находятся в жопе по использованию.
>Когда простота ухудшает кодовую базу, ничего хорошего в ней нет тоже
"Когда код ухудшает кодовую базу, ничего хорошего в нем нет". Охуенное откровение, шизло, но твоя изначальная позиция ничего ни про какое ухудшение не говорила, а просто атаковала простоту используемого кода как таковую.
Почему в мобиксе решили эту проблему, а при работе с редаксом надо на каждый пук писать селекторы на реселекте? Утомляет куча бойлерплейта
>Опять набор религиозных безосновательных мантр
"Мантры" обоснованы теорией категорий и пруфабельностью кода, так что твои гавканья (как и вообще любые наезды на функциональщину) идут мимо.
>а просто атаковала простоту используемого кода как таковую.
А ФП код еще проще, если понимать основы Я говорю именно про дебилизацию кода, которая автоматом несет за собой ухудшение его качеств.
Ты ответь в чём прикол писать громоздкие селекторы на каждый пук чтобы не было лишних ререндеров?
Потому что мобикс больше подходит для неоптимизированного реакт кода, где каждый пук вызывает ненужный ререндер. Я не зря упомянул его на 2 месте после Редакса - я думаю для Реакта мобикс это дефолтный выбор для мелкопроектов, не поймите меня неправильно. Я лишь защищаю Редакс как ФП паттерн, на который гавкают зумеры, не понимая зачем он и как его использовать.
>>15676
А я тебе говорю, что это проблема байндингов Редакса к Реакту и в Реакте как таковом, к самому паттерну это не имеет никакого отношения. Селекторы сами по себе даже не часть Редакса - это просто логическое продолжение его использования. А реселект накостылен вообще, вместо того чтобы нормально сделать через Reader монаду, оттуда и бойлерплейт.
>"Мантры" обоснованы теорией категорий и пруфабельностью кода
Ты можешь хоть обпруфабиться себе в штаны, но математически доказать работоспособность программы нельзя. Тот факт, что на бумажке твой код куда-то сходится, ни слова не говорит о работоспособности реально выполняемой программы, это две абсолютно разные категории, и только ФП-шизик может между ними ставить знак равно.
>А ФП код еще проще, если понимать основы
Объективно нет. Мутабельный цикл понять в сто раз проще, чем редьюс или боже упаси антипаттерн под названием рекурсия. Хоть обосрись со своим "ДА ТИ ПРОСТА ФП НИЗНАЕШЬ, Я КАЖДЫЙ ДЕНЬ РЕКУРСИИ РАЗМАТЫВАЮ КАК ОРЕШКИ", но факт останется фактом: последовательность команд человеческому мозгу воспринять проще.
>но математически доказать работоспособность программы нельзя
Ну тебе виднее, как скажешь.
>Объективно
Ясно
>Мутабельный цикл понять в сто раз проще
Сразу видно нуба без опыта. Мутабельный цикл каждый индус сделает по-разному, делая абсолютно разные операциии внутри него (или что еще хуже, вместе с какими-то сайд эффектами) и тебе придется каждый цикл разбирать как работает. С редьюсом выучив что такое редьюс ты мгновенно поймешь что код делает, потому что низкоуровневая итерация спратана.
>Мутабельный цикл каждый индус сделает по-разному, делая абсолютно разные операциии внутри него
> С редьюсом выучив что такое редьюс ты мгновенно поймешь что код делает
ФП-шиз, расскажи, какое такое магическое свойство редьюса предотвращает индуса от выполнения всех тех же операций внутри редьюсер-функции, которые он выполнил бы в теле цикла?
А если индус знает слово редьюс, то он достаточно образован, чтобы не делать магических операций в теле функции. Если бы каждого индуса-кодера обучили ФП, качество кода стало бы в разы чище. Меньше маневра сделать так чтоб работало, но наговнокодить.
Но все это неважно, когда-нибудь с опытом ты сам всё поймешь. Пока можно набивать руку и говнокодить императивные портянки, благо спрос есть.
Ну в итоге байндинги у нас только одни, и используя реакт с редаксом в любом случае придется писать селекторы иначе будут лишние ререндеры
>А если индус знает слово редьюс, то он достаточно образован, чтобы не делать магических операций
"Если индус знает о боге, то он достаточно образован, чтобы молиться каждый день, и это доказывает полезность молитвы"
>когда-нибудь с опытом ты сам всё поймешь
"Когда-нибудь сам поймешь, что бог есть, а пока оставайся в заблуждении"
Ожидаемая "аргументация" от религиозного ФП-шизика.
>А если индус знает слово редьюс, то он достаточно образован, чтобы не делать магических операций в теле функции
Тебя спрашивают, чем редьюс лучше цикла, а ты говоришь, что редьюс оказывается нужен не потому что он лучше цикла, а потому он якобы приходит вместе с сокровенным знанием о том, как писать код. Кто ты, если не шизик?
Можно подумать с твоей стороны была какая-то аргументация кроме "ФП-шиза" и "объективно" (лол), я лишь высказываю свою точку зрения основываясь на опыте. Почитай книги по разработке ПО, по ООП, ФП, по архитектуре больших систем, поработай мидлом хотя бы на крупных проектах и будут тебе пруфы и аргументация.
Я сказал чем редьюс лучше цикла (и производные от него как map, filter, fold) - ты скрываешь реализацию и фокусируешься на том что ты хочешь сделать. Обычный цикл нужно каждый раз читать, ведь неизвестно фильтруешь ты там что-то, вызываешь функцию над элементами или вообще запросы к базе данных делаешь. Вот и всё.
Конечно, вкатывальщикам кажется что более читабельный и проще обычный цикл - потому что они не работали над большими проектами или с комплексной бизнес логикой, где за for по рукам могут дать.
Но ведь это ты пришел в тред и начал высыпать набор безосновательных мантр про "функциональность математику чистоту надежность читаемость", тебе эти мантры и нужно доказывать, раз уж заикнулся. Тот факт, что ты абсолютно ничего в их защиту не сказал за 10 постов, кроме "почитай книжки умные и поработай, тогда и поверишь в моего бога, а пока ты недостаточно просвещен", очень многое демонстрирует.
>ты скрываешь реализацию и фокусируешься на том что ты хочешь сделать
А в цикле ты на чем фокусируешься, на мамке твоей?
>Обычный цикл нужно каждый раз читать, ведь неизвестно фильтруешь ты там что-то
А магические редьюс-функции не нужно читать, они отпечатываются прямо в мозгу и ты знаешь, что в них происходит.
С экранированием будут проблемы. Да и вопрос мена тупой, надо использовать по ситуации, это вариативный инстр
Нахуй они нужны без интерполяции?
>Почему нельзя использовать шаблонные строки 24/7?
А поддерживать IE11- и браузеры 2014 года кто за тебя будет, Пушкин?
Пользователи IE11, который даже сама майкрософт уже не поддерживает, будут жрать распухший бандл бабеля.
бабель будет это всё делать, с ума сошел там весь код кроссбраузерить руками?
ебать ну пользователям ие11 и браузеров 2014 года лучше вообще интернетом не пользоваться
>Привет аноны, пол года зубрю js но к сожалению упёрся в потолок.
Че там полгода зубрить-то? Кантор за месяц ковыряния в носу прочитывается. Остальное добивается практикой.
Вот как я js учил:
Играл в игру: Divinity original sin 2\Dark souls 1, когда заебывало, я выключал и читал кантора до тех пор, пока не заебет читать, потом опять играл в игру и так по кругу весь день (спасибо за клиповое зумерское мышление блять). В итоге за 3 недели осилил весь учебник и перешел на фреймворки.
Двачую. Надо не читать через силу, а то хуйня будет полная. Заебало – отдохнул, надоело – пошёл учить.
Да, должно быть интересно. Я вот вчера снова второй диван поставил. Думал, буду играть и в перерывах кодить пет. В итоге почти не играл, потому что писать код для оказалось интереснее, особенно когда затыков на ровном месте нет. Хз как чел, который не смог js за полгода осилить, собирается работать. Это же квинтэссенция неинтересности получится, когда не хочется + лень + заебало.
Ну так решение затыка это сразу +1000 к мотивации, не? Я вот по два дня ебусь, потом сюда пощу, меня носом тыкают в то, что я где-то две скобки не поставил, так потом сразу охуенная мотивация появляется кодить и ебашить, возникает удовлетворение от того, что задача решена.
Да, конечно. Но вот бывает проблема в том, что ты сам тупой и не можешь подумать и сделать план решения. Пиздец, вот у меня лично такая хуйня и я еле-еле справляюсь с ней. Проблема не в незнании синтаксиса, а ебаном сдвг.
>Проблема не в незнании синтаксиса
Синтаксис это хуйня, инструмент. Тут решает логическое и математическое мышление, при решении конкретной задачи.
Тренировать мышление.
Займись математикой, алгоритмами, больше программируй, решай задачи на codewars, leetcode.
И потом такой маняматик хранит переменную в глобальном скоупе. Ну а чё, синтаксис это ж хуйня.
>И потом такой маняматик хранит переменную в глобальном скоупе
Долбоеб, объясни мне, как фундаментальные знания исключают узкие вроде того, что глобальные переменные это плохо?
Кстати, вот насчёт этого. Что-то я не понял почему в глобалке хранить плохо, всё равно же всегда в локалку уходит всё. У меня ни разу не было конфликтов такого вида.
>как фундаментальные знания исключают узкие вроде того, что глобальные переменные это плохо?
Без знания синтаксиса ты даже не поймёшь, что запихнул переменную в глобальный скоуп.
>>16099
Так в туду листе и не будет конфликтов. Проблемы с глобальными переменными всплывают намного позже, когда даже разработчик, который эту переменную запихнул, уже не участвует в проекте.
Smooshgate - типичный результат засирания глобал скоупа.
function Card() {}
function CardBody() {}
Card.Body = CardBody
Если тайпскрипт то мержишь function и namespace
const вроде как нельзя изменять, но когда я пишу в редакторе const то я могу спокойно его изменить на let либо var.
Двачую.
Под кроватью зумерков поизи, шиз
Сработает, здесь все рассчитано на то что классы это функции, а функции это объекты, а у объектов есть поля
Определил класс, определил функцию и привязал её к классу Card.Body = Body
Как определить место для исполнения функции внутри класса? {this.Body()} не работает. И какие аргументы передать функции, чтобы из
<Card>
<Card.Body>
foo
</Card.Body>
</Card
было понятно, что foo — относится именно к Card.Body, хоть и есть в Card.children?
>{this.Body()} не работает
bodyEl = Children.toArray(children).find((x) => x.type === Body);
Или сделай <Card body={<Card.Body />} />, тогда можно будет props.body
>какие аргументы передать функции
Никакие, foo и так в bodyEl.props.children
Что ты подразумеваешь под top-level? Типа обязан ли ты всегда дергать хуки только в стековом кадре компонента? Нет, вложенность может быть любой. Вызовы хуков "привязаны" под капотом к инстансу компонента.
Всё, кажется я тебя понял. Написал в файле Card компонента две функции:
function Body() {}
function Title() {}
Привязал их к основному компоненту:
Card.Body = Body;
Card.Title = Title;
И таким образом достаю нужные children:
let body = this.props.children.find( child => {
if (child.type.name === 'Body') {
return child
}
}).props.children;
И вставляю {body} в компонент. Всё взлетело, спасибо большое, анон.
Ну т.е. у тебя порядок хуков не меняется ведь в рамках одного компонента. Вот хотел узнать, может ли само создание хука быть условным хоть в каком-то виде? Но судя по всему нет. И даже если он при каких-то условиях не используется, то создан должен быть всегда?
>Вот хотел узнать, может ли само создание хука быть условным хоть в каком-то виде?
Просто так писать if (something) { useEffect() } нельзя, потому. Ты можешь либо перенести условие внутрь хука, либо вынести хук в отдельный компонент, то есть something && <MyComponentWithUseEffect/>
Ну это же маркер слота, у функции есть имя и на этом ее миссия выполена.
В Body и Title ты можешь сделать `return children`, тогда у тебя не будет пустых функций и не придется делать .props.children в Card
Реакт знает, какой компонент рендерится в данный момент, и когда происходит первый вызов хука, он сохраняет этот хук и его стейт в некий глобальный контейнер с привязкой к компоненту. Когда хук вызывается во второй раз, реакт идет в этот глобальный контейнер и достает оттуда на каждый вызов по очереди все хуки, вызванные для этого компонента в первый раз. Если ты поменяешь очередность вызова хуков, то реакт не сможет однозначно определить, какому хуку принадлежит какой стейт и все сломается нахуй, в useState тудушек попадет useState пользователей и так далее.
Ну вот про маркер слота я понял, так как сперва попытался в Card.Body впихнуть 'Title', но оно заработало не так, как ожидалось.
В целом, задача была перестать передавать огромные пропсы в качестве атрибутов. Было раньше <Card body={ огромный кусок кода } и сейчас можно будет нормально писать.
Без тебя бы не справился, спасибо ещё раз.
>>16288
В общем, время читать и осознавать хуки настало, иначе дальше пизда.
>Он стоит, но ругается так только на базовые реактовские хуки.
Он ругается на все, что начинается с use, плюс есть несколько дополнений для стандартных реактовских хуков(проверка массива зависимостей для useEffect/useMemo, не нужно указывать setState и рефы в массиве зависимостей, потому что он знает что они не изменятся и т.д). А условные рендеры любых хуков выдают ошибку без вариантов.
Зачем ты перебираешь дочерние компоненты? Порядок компонентов - это ответственность того, кто твой компонент использует, как ему нужно, так пусть и рендерит. А если тебе в дочерний компонент нужно передать какой-то стейт, то это делается через контекст, а не через перебирание и переписывание пропсов.
Чтобы вставить их в правильное место в html. Как лучше тогда это сделать? this.props.children[0]?
Мне нужно, чтобы значение тайтла попадало в одно место, а значение бади в другое.
>Чтобы вставить их в правильное место в html
Что значит "правильное место"? Если у тебя внутри Card есть какие-то элементы-обертки, внутри которых и должны рендериться Card.Title и Card.Body то по-хорошему эти элементы тоже должны быть частью публичного API, а не скрытой внутри неожиданной магией.
Например так:
<div> //Контейнер для карточки
<div> //Контейнер для хедера карточки
{title}
<button>+</button>
</div>
{body}
</div>
body получается слишком огромным пропсом. Я думал, чтобы объявлять body в переменной и потом передавать в качестве пропса, но вариант с <Card.Body> внутри самой карточки выглядит лучше.
Что значит "слишком огромным"? Передавать объект в пропсах или в children - это одно и то же, но вытащить конкретный нужный тебе объект из пропсов гораздо проще и удобнее, чем перебирать массив children, да еще и с проверкой по текстовому имени элемента.
Например в бади нужно указать форму, плюс контролы к ней. И это уже выглядит достаточно громоздко, чтобы объявлять это отдельно, а не просто записать внутри тега <Card.Body>.
Плюс у меня ещё верстальческое мышление, мне удобнее было бы держать всё, как на пике, а не объявлять где-то отдельные переменные.
Нужно больше компонентов
function func() {};
или
const func = function(){}; // стрелочная отличается по другой причине, поэтому тут её не привожу
Нахуй второе нужно вообще?
Единственные ответы, которые мне приходят, в первом случае она всплывает и можно вызывать функцию, до её создания, что по сути, на работу кода никак не влияет, ну напиши функцию сверху и хуй бы с ней. И во втором, функцию нельзя перезаписать типа func = 10. И по сути, лучше по этой причине использовать второй вариант, просто первый введён был раньше?
Принципиальные различия только в этом? Можно всегда пользоваться вторым вариантом? Ууу сука блядь
Ну и разумеется, если пользоваться вторым вариантом, то всегда можно и стрелочную вместо неё хуярить, пока тебе this не понадобится, аргументс нахуй не нужны, тогда вопрос уже вообще теряет всякий смысл, потому что они всё равно будут отличаться, но уже по другой причине.
>Нахуй второе нужно вообще?
Не нужно, это вопрос стиля, и "объявление именованной функции" без вариантов читается лучше, чем "объявление переменной и запись в нее функции".
А как же подводная защита от перезаписи конста?
Почему всегда не использовать стрелочную вообще? Читается пизже
>А как же подводная защита от перезаписи конста?
Ты охуеешь, но если тебе не нужно переписывать переменную, то не переписывай и надуманная проблема констошизиков решена. Две функции с одинаковым именем ты и так объявить не можешь.
>Почему всегда не использовать стрелочную вообще? Читается пизже
Спорное заявление, по-моему пизже читается когда ты открыто и без сомнений пишешь мужское function, объявляя всему миру, что ты альфач и только что объявил ФУНКЦИЮ, а не дрочишь втихую как омеган переменные и анонимные стрелочки.
В том, что твоя реализация будет выглядеть как пик 1, а моя как пик 2. Делают они то же самое, но 1) моя проще 2) моя не полагается на проверку текстового имени 3) моя не прячет тот факт, что порядок дочерних элементов на самом деле значения не имеет 4) у моей есть явно объявленное публичное API, а не спрятанные внутри переборы непонятно чего.
Зато дебажится сложнее, функции анонимные в дебагере. Но конечно стрелочная функция удобней и ближе к матанской записи, что удобно в функциональщине.
const add => x => y => x + y;
сравни с
function add(x) {
return function(y) {
return x + y;
}
}
Всё дело в том, что я наоборот хочу отказаться от того, что ты предлагаешь. У меня сейчас так и есть проблемы с тем, что атрибуты слишком громоздкие.
javamentor
Сам не проходил, но слышал от доверенных источников, что люди получали хорошие офферы
>У меня сейчас так и есть проблемы с тем, что атрибуты слишком громоздкие.
И ты ее не решаешь, потому что функционально это абсолютно то же самое, только неявно, скрыто и включает больше ненужного кода.
Тогда уж сравни с function add(x, y) { return x+y; }. А если у тебя реально сложная логика, требующая преобразования аргументов и возвращения новых функций, а не выдуманный неиспользуемый нигде пример из одной строчки, то стрелочная залупа будет читаться в сто раз хуже.
Решаю это тем, что теперь оно похоже на хтмл больше, чем на жс. Хотя, конечно, сомнительно. Я вообще просто кнопки хочу красить и блоки двигать, а мне пихают реакт.
Ну и по твоей логике получается, что бутстрап для реакта — говно. Код выше с карточками на пике — БС.
>Ну и по твоей логике получается, что бутстрап для реакта — говно
Большинство компонентов в нем перебор children не используют и куда попало их не вставляют, ты всегда должен однозначно структуру объявлять.
Блять, что стрелочные функции берут this из внешнего скоупа и их нельзя использовать как методы. Всё.
Да я все различия и так знаю. Я же сам описал в первом вопросе. А типа если на собесе спросят, какие функции ты используешь по дефолту? Вот хули бы мне не использовать стрелочные везде? Что ты мне сделаешь? КАКИЕ ЛУЧШЕ ИСПОЛЬЗОВАТЬ ВЕЗДЕ ОТВЕЧАЙ МРАЗЬ ЧТО ТЫ ПИШЕШЬ, ТЫ ПИШЕШЬ ФУНКЦИИ? ПОКАЖИ КАК ТЫ ПИШЕШЬ, ХОЧУ ВИДЕТЬ КАК ТЫ ПИШЕШЬ ФУНКЦИИ О ДА СОЗДАЙ ДЛЯ МЕНЯ ЕЩЕ ПАРОЧКУ ФУНКЦИИ ГРЯЗНАЯ СУЧКА
Можешь объяснить, что значит однозначно объявлять структуру? У меня всегда в тайтле будет тайтл, местами ни с чем он не будет меняться
Значит, что если я напишу <Card><Card.Title/><Card.Body/></Card>, то это отрендерится как и написано - сначала Title, после него Body, и ничего лишнего там не возникнет. А если внутри Card идет перебор children, и Title с Body рендерятся в обратном порядке, или между ними вставляется кнопка, или вообще один засовывается внутрь другого, то это расхождение по структуре - написал я одно, а рендерится неожиданно абсолютно другое.
Омеганский ответ джуна: "использую вот такое, но очевидно это вопрос вкуса и зависит от стиля в проекте, если принято писать стрелочные, то буду писать их".
Ответ альфы-сеньора: "пишу вот так, все остальное неправильно, и сейчас я вам объясню почему".
Звучит именно так, как предполагается
А ты ответь сначала в чем разница между всеми видами функций.п еще лучше,попробуйихвсеперечислить.
Отвечал и перечислял на собесе. Использую стрелочные потому что хули ты мне сделаешь?
Не возьму тебя на работу.
Не нужны, рекурсия это антипаттерн даже в ФП-языках, а уж тем более в языках без tail-call оптимизации типа жопоскрипта.
Чтобы выебываться. За самостоятельно написанную рекурсию на боевом (точнее любом, кроме СПЕЦИФИЧНЫХ cs-задач) проекте нужно руки отрывать.
Вроде большинство так и делают. Но насколько я понимаю, в почете 2-3 года на одном месте, тогда конечно же больше плюсов перед HR.
>>16633
>рекурсия это антипаттерн даже в ФП-языках
Бред. Рекурсия это как раз-таки норм паттерн в ФП языках, те же списки в ФП обычно оформлены как list = head, tail: list(n - 1)
Но верно на счет tail-call оптимизации - в большинстве языков рекурсию нужно с умом применять.
хоть каждый месяц меняй, главное опыт и знания.
В резюме можешь сказать что работал на стартап ИП, работал в нем два года, потом он закрылся, вот ищешь работу. Наличие портфолио с кодом + знания нужные для позиции - все что нужно hr на счет работы можно смело пиздеть, никто это не проверяет.
Это ты зря, на самом деле нередкая история при разборе структурированных данных, пакетов JSON, XML, или в DOM дереве.
Подход через xpath, json-path, css-selectors тут не всегда хорошая альтернатива.
Ещё вариант, когда надо дерево генерить, чтобы отобразить. Ещё вариант обхода файловой системы или ссылок на страницах.
Это вот бытовые вещи, встречающиеся, где рекурсия очень естественная.
В алгоритмах реже, только ДП задачи какие-нибудь, но мне кажется на практике с ними очень редко сталкиваешься.
>Бред. Рекурсия это как раз-таки норм паттерн в ФП языках
В любом гайде по любому современному ФП языку тебе на первой же странице с рекурсией будут талдычить, что если перед тобой два решения: рекурсивное и не-рекурсивное, то выбирай то, где рекурсии нет.
ОФК styled components, а если из готовых сборок?
Слышал библа Material UI под рякт заточена, так ли она хороша? Лучше чем бутстрап?
на стайлет компонентс или css modules? на чем пилят?
я не миша, но ты мне уже второй раз этой пикчей итт отвечаешь
, поэтомк если хочешь я буду мишей
Чтобы быть в курсе чего-либо, не нужно с этим работать. Нужно просто интересоваться сферой. Как минимум читать профильные ресурсы каждый день. Если ты этого не делаешь, то твои знания устаревают еще до того, как ты их приобретаешь.
Ок спасибо, я на хабре ток на реакт был подписан
Ты бы еще группу в телеграмме своих одноклассников читал, и считал это профильным ресурсом.
Потому что, что зекач, что группы твоих одноклассников - это токсичные комьюнити, состоящее преимущественно из дилетантов и невежд, кидающихся друг в друга говном. По подобным сообществам в 2к21 году даже релевантный срез мнений уже не составишь, как было в аналогичных загонах в начале века. Именно потому тут каждый второй истинный долбоёб, который лишь ретранслирует то, что где-то прочитал, и вскрывается на раз, стоит его лишь копнуть.
Нк и зачем ты такой токсик? Тебя токсики покусали?
ну я скажу так, если бы я был твоим работодателем или hr, то я взял бы второго, у кого может меньше знаний, но кто не так часто меняет работу. Но это мое личное мнение, я не hr и не работодатель.
Я исхожу из такой логики. Неважно миддл , джун, синьор. Приходит новый человек и его надо обучать под свои нужды. На это в любом случае уходит время и силы. Никто делать это повторно не хочет.
Представь, если тебе постоянно ставили нового человека раз в 2 месяца. Сделай выводы сам.
В крупных конторах процесс найма и онбординга налажен на поток, там тебе и психолухи штатские и класс для обучения и целая программа для быстрого внедрения в команду, плюс методы разработки выстроены таким образом что их может писать каждую неделю любой вася, хуевым легаси такой код все равно не станет, поэтому они не заметят кто пришел а кто ушел, а вот конторки со штатом меньше 10 чел могут хуево переживать текучесть кадров
>рекурсия это антипаттерн даже в ФП-языках
рекурсия с паттерн-матчингом есть основа любого ФП-языка.
Хрюше надо получить премию за нового работника и наконец-то закрыть позицию. Тимлиду нужно тоже кого-то на проект посадить в ближайшее время. Что там будет через 7 месяцев мало кого волнует.
>айфоне
Safari щитобраузер
>Pwa это будущее
Ещё можно даже упаковать в андрюшу-апкашку и виндоус-лайкнатив.
Это никакая ни основа, а один конкретный паттерн, и то его надо использовать с пиздецовой осторожностью, потому что написать лютый говнокод, который вместо обычного редьюса пытается сматчить все на свете в одной функции - как раз плюнуть. К вопросу "что использовать, рекурсию или цикл/list comprehensions" он отношение имеет слабое.
Это как раз тот случай, что если тебе нужно пройтись по коллекции, то лучше воспользоваться list comprehensions/соответствующией стандартной функцией ака map-reduce-each, а не лепить рекурсивный паттерн матчинг, который превратится в неподдерживаемый пиздец, как только логика усложнится.
Это всё ровно что сказать: мол, не используйте наследование, тк антипаттерн, предпочти композицию, но ведь от этого наследование не перестанет быть основой ОО.
Наследование не основа ОО и можно(нужно) писать на 100% ОО код, не используя наследование ни разу.
>Можно, можно как угодно писать
Нет, не можно. Если ты говоришь, что что-то - "основа ОО/ФП", а потом вдруг выясняется, что без этого чего-то можно спокойно писать ОО/ФП код, то это никакая не основа.
Молодец, авторитета процитировал не думая, а теперь расскажи мне своими словами, почему программа на джаве, не использующая слово extends ни разу, внезапно перестет быть ОО программой, и становится... чем?
>почему программа на джаве, не использующая слово extends ни разу, внезапно перестет быть ОО программой
Потому что перестает соблюдать основный принцип ООП.
> и становится... чем?
Объектной программой, а не объектно-ориентированной. Ты читать не научился еще?
> Напишите мне вычисление факториала без рекурсии на js
Как нехуй делать:
function fact(x) {
let result = 1;
for (let i = 2; i <= x; i++) {
result *= i;
}
return result;
}
>Потому что перестает соблюдать основный принцип ООП.
Который ты определил как?.. Авторитет в книжке написал? Почему же тогда, если я эту программу покажу любому программисту, он сразу скажет, что это ООП?
>Объектной программой, а не объектно-ориентированной
Такой парадигмы и термина не существует, поменьше читай мусорные русские тексты, написанные/переведенные непонятно кем.
"к матанской записи"
Долбоеб блять, ты не матан дрочишь на парах на 2м курсе, ты прогаешь
Я тебя дурачка уже помню по твоим шизоидным постам из предыдущих тредов - про фп и матан. Думаешь ты у нас дохуя математик бля? Ты веб-макака обычная, математикам ты и в подметки не годишься, не надо себе приписывать то, чем ты в помине не являешься, лишь бы придать элитарности своему занятию
>элитарности своему занятию
Обычный культист, который думает, что прогерство надо любить и заниматься этим с пеленок. А все остальные не трупрогеры.
Мимо.
Задача: сделать расширение для браузера.
Суть: нужную мне функцию сделали платной, данные можно смотреть за определенное число, но сравнивать их с данными за другие числа нельзя, а очень хочется. У сайта есть API, я хочу через него вытащить данные и записать их в файл, добавлять данные в файл при появлении новых записей, и встроить в интерфейс сайта табличку, где я мог бы эти данные сравнивать.
Почитав доки по API выяснил: можно вытащить список записей в виде json, по id записи можно вытащить список сегментов в этой записи, там же в каждом сегменте нужные данные для сравнения.
В итоге таблица: сегмент, дата, данные сегмента.
Как это сделать?
Есть некоторые навыки JS/HTML/CSS/JSON.
Не знаю, первое, что в голову пришло.
>Напиши на ноде простенький бэк, закинь на heroku.
А этим способом можно будет табличку в сайт встроить? Мне хочется, скажем так, восстановить функцию, которая стала платной.
>А этим способом можно будет табличку в сайт встроить?
В чужой сайт нельзя, можно у себя похожую страницу нарисовать.
А надо в чужой, поэтому экстеншен придется делать.
Расширение изи делается.
https://developer.mozilla.org/ru/docs/Mozilla/Add-ons/WebExtensions/Your_first_WebExtension
Но чет не совсем понятно зачем тебе оно в виде расширения.
Как бонуска к основному стеку да. В идеале надо все пошупать, никогда не угадаешь какой стрельнет и будет юзаться в след году.
Вложенных объектов внутри большого объекта много, но они все подпадают либо под первый, либо под второй тип. Дальше на основе содержащихся в них полей создаются компоненты, в которые передаётся только один из типов, но вот компонент принимает только точный тип, а не union. Каким образом объяснить, что в него пришел конкретный тип? Самое банальное решение добавлять везде as. Но это это кажется срань какая-то.
Тут упрощенный пример приведён разумеется, чтобы обозначить саму проблему.
убери юнион тайп и создай разные типы для разных компонентов
Можно вот так: https://www.typescriptlang.org/play?target=99#code/C4TwDgpgBAKuEHkB20C8UDeBDAXFAzsAE4CWSA5gNwC+lAUKJLPDAO4D2U6GARnkgFcAtjwhEa9BvCgBVJCXZI4TdMsQooAH2aQ27SY2gBhRYSJYywLlABKEAMbsiAEwA8ZsuQA0s+YrUAfJIAZgJI9sAKSFAkzhBIkaCuMFAQAB7A8c74UCZIZhYJAQAUaXgwAJTlmHRQdUQQwAJE0Wn01HR0jvlW7DwAVtax8YkgxRi1dbiYUNMA5FhzUNRek1B8MxsAjMt01BWSJEJgTlYAVLM5dlgRUMFE7EJQcw03wHOS3YS5W3jXEQA6ABiRlcGCgfX6DmA5XgyAglGWAWsxQqXGRggANpj6F8rEYAEx-CBvYGg8GQ6Gw3QcRHUZHoVHoqBYnGdPFQRzHRQjHLoADaa1cRh2lIiqAwkIBWGoUAA9AFVnUoMKCRCBtCJVKeLKFUq6sLRRrxZKBgCdfLFULCeqoSapTLLasALr0IA
Суть подхода состоит в том, чтобы не прописывать тип на object явно (что перетрет литеральные типы), а спрятать проверку в generic'е.
Сап, начал изучать nest.js, но по нему как-то мало информации, официальная документация какая-то очень краткая. Есть ли какие-то плюс-минус подробные гайды по этому фреймворку или курсы?
>чистый подход (Update монада).
Угу, всю грязь в тханки вываливают, зато экшоны ЧИСТЫЕ. Не забудь ещё хуярить по 3+ экшона на каждый ассинхронный пук.
>>15655
За пределами реакта редукс нахуй не нужен.
>>15735
>А если индус знает слово редьюс, то он достаточно образован, чтобы не делать магических операций в теле функции.
То-то прямо в доке редукса плачутся, что все такие неправильные мутабельный код постоянно суют в редюсеры.
У пхпшников с их дрисней так вообще лютый каргокульт Жавы, все громадные паттерны пиздят оттуда, уверяя что "это тру", хотя по большей степени все это нахер не нужно. Но им главное заставить самих себя поверить что они ничуть не хуже "белых людей" (жавистов) и что они не обычные веб-макаки а сцуко Инженеры Будущего с кучей хитровыебанных паттернов и DtO
>То-то прямо в доке редукса плачутся
Да забей, для это дурачка-зумерка "стрелочные функции + мап-редьюс - значица ФП нахой"
А чем оно лучше того же экспресса? Все в каких-то декораторах и дженериках вымазано, выглядит как говно.
Я в ахуе от твоего вопроса , а именно от каши. Если я все правильно понял, то вот - https://codesandbox.io/s/reverent-rain-2lzhp
Я работаю со spring boot, увидел nest.js, мне он показался чем-то похожим и я решил покрутить, повертеть этот фреймворк. Но не знаю с чего начать, потому что доков оч мало, а тот видогайд, что у них на сайте - платный. Щас бы делать гайды на свой фреймвор платными, пиздец
Сейчас нашел рандомный видос с собеседованием. Там два достопочтенных мужа собеседуют джуна, который похоже жс никогда не учил. И вот чуть ли не на первом же вопросе сразу ОБА интервьюера жидко срут в штаны, поясняя за Object.assign, с умным видом рассказывая, как он круто умеет копировать геттеры, а потом в комментах оказывается, что не могут. Что-то я в ахуе с этих собеседований, когда даже люди, которые проверяют твои знания, этими знаниями не обладают. Пиздец.
Я смотрел все их собесы, там откровенно слабые вопросы.
Хочешь нормальных собесов - посмотри на канале арчакова, там реальные хрюши и тех диры собесят с реальных собесов.
https://t.me/joinchat/niTY9ejYMXxlMDUy
Есть еще конфа, но там меньше людишек. Но как плюс, там нет пустого флуда, а только по делу.
Почему у кантора функция это не тип данных?
Почему в ecmascript функция это тип, и typeof вернёт тип function для функции? Вам въебать?
Хуй будешь?
> Почему array не является типом данных, но функция является?
Потому что массивы это объекты. Функция "объект" лишь на очень низком уровне, на который всем похуй. А массив по сути и есть объект, просто оптимизированный.
>Почему у кантора функция это не тип данных?
Потому что кантор это говнище, которое делает фокус на вещах, который либо не имеют значения, либо не используются вовсе. По ДЖС есть намного лучше книги, например
>Почему в ecmascript функция это тип, и typeof вернёт тип function для функции?
А чем она еще должна быть, мамкой твоей? Про низкий уровень даже не начинай, функции это функции, внутренняя реализация не имеет значения.
То есть все тестирование фронта сводится к тому, чтобы "прокликать" по всем компонентам, сделать снапшот до и после, и сравнить их? Охуенно. Охуенно.
А как писать в TDD стиле? Я сначала должен написать тесты, "прокликать" по всем компонентам "в уме", а потом уже писать, собственно, сами компоненты? Охуенно. Охуенно. Ни разу не ебля ради ебли на пустом месте, очень нужно и полезно.
Все верно, TDD для UI пишется по-старинке - когда ты можешь просто querySelector и наличие элемента или его текст внутри, клики по кнопкам, переходы на страницы и т.д.
Дизайн не тестируется так конечно же.
Какие тесты в тренде?
Вот самый ахуй тут в том, что на собесе меня ебут в жопу прототипами, ВАРАМИ блядь, ВАРАМИ, еб вашу мать, КОНСТРУКТОРОМ ФУНКЦИИ, не функцией конструктором, а ИМЕННО КОНСТРУКТОРОМ ФУНКЦИИ, пиздец. Я то конечно знаю как по хардкору за всю хуйню пояснять теперь, после парочки таких собесов, про все эти блядь области видимости их мамаш, про ебанутейшие варианты работы с объектами и прочей хуетой, которую последний раз в коде использовали в 19 веке. Так что зачеркнуть-то можно, а потом придется мычать на собесах как побитая шлюха. Причем про всю вышеперечисленную хуйню меня спрашивали вообще на каждом собесе, ну ладно там прототипы, но конструктор функций, ой блядь
>То есть все тестирование фронта сводится к тому, чтобы "прокликать" по всем компонентам, сделать снапшот до и после, и сравнить их
Нет. Тестирование по снапшотам - это антипаттерн и оно имеет смысл только для регрессивных тестов старого не покрытого нормальными тестами функционала. Если ты пишешь функциональные тесты сразу, то писать их нужно без всяких снапшотов, проверяя конкретный функционал, вроде "когда я жму на кнопку, на сервер отправляется такой запрос", "когда с сервера приходит такой ответ, форма отображает вот это".
>А как писать в TDD стиле? Я сначала должен написать тесты, "прокликать" по всем компонентам "в уме", а потом уже писать, собственно, сами компоненты?
Сначала ты должен написать в виде красного теста одно условие, которое будущий код должен реализовать. Потом написать реализацию для этого одного условия, которая сделает тест зеленым. Повторить до победного конца. И это не ебля на пустом месте, а методология разработки, благодаря которой ты в момент написания кода будешь сразу знать, что весь написанный тобой код делает ровно то, что должен, а не писать огромный неработающий кусок логики, и потом лезть в UI или в дебагер, пытаясь этому куску логики настучать палкой по голове, чтобы он кое-как заработал.
По ошибке, сори. Но суть вы поняли.
> писать огромный неработающий кусок логики, и потом лезть в UI или в дебагер, пытаясь этому куску логики настучать палкой по голове, чтобы он кое-как заработал.
Кек, это пугающе точное описание моего последнего пета.
Да он просто ебик который не осилил теорию, Очередной зумерок которому пообещали должность синьера после недельных курсов
Вникать не хотят, а денег хотят. Ну не долбоебы? Долбоебы!
Я может быть объяснил всрато, это не совсем то, что нужно, но в любом случае спасибо
Не спугни, пускай сидит в треде нюхает мои синьерские яйца, набирается опыта так сказать.
—Яйца помогите вкатиться.
Яйца расщедрятся если вы их хорошенько занюхнете, шанс вката от яиц выше чем после курсов,
Яйца помогите вкатиться!
Ага на собесе потом скажешь я ниучил потому что на двачи сказали нинада! Нюхай яйца лучше сразу
Яйца волосатые. Не буду.
> ИМЕННО КОНСТРУКТОРОМ ФУНКЦИИ
Вот ето ебать рокетсаенс
> new Function('x', 'y', 'return x+y');
> и затем надо пройтись по ним и навесить эвенты
Не надо. Создаеш элемент, вешаеш обработчик, приклеиваеш элемент в дом.
Ну так нарисуй, я постараюсь ответить или распиши
1. Переписываешь underscore. Без всяких изъебств. Заходишь на сайт либы, смотришь на примерах как работают методы и пишешь свои функции. Так набьешь руку на работе с массивами, объектами, функциями.
2. Переписываешь Jquery. Таким же макаром. Реализуй примеры с сайта по документации средствами нативного JS. Так набьешь руку и поймешь как работать с DOM.
3. Тоже самое с другими библиотеками и фреймворками.
Параллельно пиши всякие пет проекты. Реализовывать пет проекты с нуля долго и неэффективно. Поэтому находишь на гитхабах готовую реализацию чего-либо и пытаешься сделать ее сам. В случае сильных ступоров подсматриваешь исходники. Так ты учишься делать проекты, читать чужой код, учишься эффективно (не решаешь слишком простые задачи с одной стороны и не зависаешь часами над сложной херней с другой).
fetch(finalLink)
.then(response => {
console.log(response.status, response.ok)
if (response.ok) {
console.log("Успех")
finalLink = "https://img.youtube.com/vi/" + link + "/maxresdefault.jpg";
img.setAttribute("src", finalLink);
}
else {
console.log('Неудача')
}
})
.catch(() => {
console.log('Ошибка')
});
Зачем ты собрался справляться с логированием сообщений в консоль?
Чтобы не засирало консоль. Это не ошибка. Оно и должно проверять существует ли файл по данному адресу.
Ну или как вариант посоветуй как можно это проверять мирно, чтоб на ошибку не нарваться
>>18447
Еще раз, читай внимательно - это ЛОГИРОВАНИЕ.
Это НЕ ошибка. Это ничем не отличается от console.log в твоем коде. Как ты перехватываешь console.log в чужом коде? Ты вообще отбитый нахуй? Тебе скрин выше зачем прикрепили?
>Чтобы не засирало консоль
Тебе выше показали какую галочку поставить в девтулзах, чтобы не видеть лог-сообщений работы с сетью.
Да хоть чипирование. Оно красным выскакивает. Как это отрубить? Код полностью мой. Почему я в своем собственном коде любую другую ошибку могу отловить и написать отдельный вывод ошибки, а тут нет?
>Тебе выше показали какую галочку поставить в девтулзах
И причем здесь детский сад с галочками.
Если я это приложение куда нибудь выложу, мне тоже людей просить галочки ставить и объяснять какого хуя у меня то и дело ошибки вылазят. Ой простите не ошибки а ЛОГИРОВАНИЕ.
Ну а кто тогда ты, раз тупую задачу решить не можешь
Ну там про карринг рассказать, "приватные" методы, вар и лет в цикле.
> sinon.stub(console, 'error')
Настрой прокси, который раздаёт картинку, чтобы отдавал 200 на отсутствующей картинке.
Если элементы однотипные, то через делегацию событий вешай обработчик на контэйнер этих элементов. Нигде пробегаться не нужно и потеть о рендерах.
>React has been doing event delegation automatically since its first release. When a DOM event fires on the document, React figures out which component to call, and then the React event «bubbles» upwards through your components. But behind the scenes, the native event has already bubbled up to the document level, where React installs its event handlers.
Правильно ли я понял, что делегировать события в реакте можно, но не нужно? В этом нет смысла?
https://github.com/facebook/react/issues/13635
Денчик тоже пояснил, что не нужно.
Несколько на собесах при этом слышал вопросы по делегированию событий в реакте и как это лучше сделать, причем без явного троллинга в сторону того, что оно не нужно.
>Правильно ли я понял, что делегировать события в реакте можно, но не нужно? В этом нет смысла?
В рякте ты уже сорт оф делегируешь события, передавая функцию от родителя предкам через пропсы.
>Несколько на собесах при этом слышал вопросы по делегированию событий в реакте и как это лучше сделать, причем без явного троллинга в сторону того, что оно не нужно.
Потому что собесить тебя будут пердуны, которые писали на классах, а Абрамчик признался, что рякт автоматом делегирует события и обработчики событий на DOM-элементах в браузере - исключительно затычки для сафари, только в конце прошлого года.
Как это именно работает? Я в том плане что - как именно функция оборачивается в промис? Хочу это попробовать вручную написать
Посмотри как async/await в es5 транспилируется
Ещё не успел. Питон знаю немного
В общем вопрос такой: как через одну кнопку проходить по каждому элементу массива?
> сложно кароче объяснить
Если не можешь объяснить простыми словами, значит сам не понимаешь, что хочешь, и колхозишь велосипед.
Кок-пок перфоманс, 64кБ хватит на всех.
Вкрации, тут условный оператор запускается один раз в момент инициализации. Внутри функции он будет тригериться на каждый вызов, к тому же занимая в памяти больше места под свой аргумент.
Ну это же опять реализация на уровне моего пк. Грусть печаль тоска. Нуежели совсем никак в коде такое не реализовать? Я уже носом землю рою, и решения все еще не нашел. Ощущение что этот момент реально не продумали. Крайне глупо что в жсе нельзя аккуратно проверить наличие файла в сети без ругани в консоль.
>Крайне глупо что в жсе нельзя аккуратно проверить наличие файла в сети без ругани в консоль.
Зачем клиентскому скрипту проверять наличие чего-то там за пределами страницы? Подразумевается, что это делает или сервер, возвращающий нужный респонс в эндпоинте, или на стадии билда/тестов.
Можно ещё фетчи в воркере проводить, но учитывая, что воркер может в фетч изкаробки, вполне вероятно консольную ошибку браузеру он тоже будет передавать.
Каков пиздец, а красная строка в нетворке тебя не смущает? А 404 в логах сервера? Тебе ещё админ потом позвонит скажет «хуль ты пидор файлы грузишь которых нет»
Ну хотелось бы без сервера просто мини приложение запилить и поделится с группой людей. Ладно я уже понял что это неизбежность. Печаль беда. Надо было в сярпе пилить.
>>19067
Вот кстати, да смущает. Еслиб смог решить проблему с консолью, это был бы второй шаг. А вообще да можете считать это перфекционсткими заскоками и аллергией на красный цвет.
Лол, ну пиши на электроне, там есть нода, есть fs, все у тебя будет не красное
Над полем должно появиться некое всплывающее окошко, где будет отображен текст, но которое не будет блочить действия пользователя
Дядь ты ебанутый, оптимизировать аргументы функции(!) и вызовы if-else операторо(!) и жопоскрипте(!!!)?
> тренд вместо гугла
input.addEventListener('focus', () => {}) ;
input.addEventListener('blur', () => {}) ;
Погуглил что да как делают, нашел две альтернативы:
1. Выделение кода в пакеты - пока не попробовал, можно просто в гитлаб вынести пакетом общие типы, интерфейсы и обертки, но так придется постоянно апдейтить зависимость внутри репозиториев что конечно-же небольшая проблема но выглядит неоптимально.
2. Монорепозиторий - собрал всё под один корень и переделал сборку - работает и удобно что весь код решения рядом, но все-равно чувствую осадочек.
И вот с учетом того что по итогу у проектов между собой общая в основном только метаинформация, типо конфигов (даже тот-же еслинт) и типов, некоторых зависимостей, а конкретно логика не повторяется (кроме минимальных оберток) то все равно есть ощущение что share nothing более уместен, даже не смотря на то что это не полностью самостоятельные микросервисы допустим, а части общего решения.
element + div {
visibility: hidden;
opacity: 0;
}
element:focus + div {
visibility: visible;
opacity: 1;
}
>перфекционсткими заскоками
Перфекционизмом это могло быбыть, нсли бы ты разбирался в том, что делаешь и понимал, что вообще происходит. А ты тотальный невежа,который неодупляет смысла происходящего, и хочет, чтобы число пи было целым, просто потому что тебе целые больше нравятся.
>а реакт свой написать на нем с блекджеком и шлюхами
Интересно это тяжело? Кто-нибудь пробовал? Имею в виду не создание собственной библиотеки, а реализацию тех или иных фишек на нативном JS.
Очевидная монорепа, что тащемта не избавит от необходимости бампать версии.
Ты уже решил, где будешь хостить пакеты?
Зачем хостить пакеты в монорепе, если можно просто имортить исходники?
Гитлаба хватает. В том варианте монорепы что я взял (очень тупо просто ярн воркспейс в корне) при сборке контейнера затягиваются куски т.ч. бампать не нужно, при изменении само пересобирается. М.б. это не так оптимально как публиковать их пакетами и затягивать при сборке конечно, но это нужно дополнительно уточнять - насколько.
Не хочешь пояснить почему ты считаешь вариант с монорепо самым подходящим (независимо от того как происходит сборка, если конечно не относится напрямую к преимуществам каким-либо образом)?
Прост
Как минимум версионирование. Получается контейнер должен знать, что пакет брать не из ветки main master, а условной bugfix/piece-of-code, хотя контейнеру должно быть поебать, не его ответственность.
Ну так бери на гитхабе баг и чини. Вуаля, теперь ты у мамы контрибутор в попенсорц.
Довольно разумно, спасибо.
Ой иди нахуй. Это ты нихуя не разобрался. Я же к этому моменту уже все перекопал по вопросу, да и в треде мою уверенность окончательно утвердили, что это сделать в принципе невозможно. И тут приходишь ты и начинаешь пиздеть, что я чего то не знаю. Харкаю в твою напыщеную рожу. Хуже тупых людей которые нихуя не знают, только тупые, которые строят вид что они умники, когда на деле сами в вопросе нихуя не шарят и просто хотят высраться, запутывая вопрашающих ньюфагов.
>>18891
Не помогает. Я посмотрел, как другие делают корзину (примеры и обучающие видео) - у каждого товара есть кнопка. У меня только одна кнопка в одном модальном окне, содержание которого зависит от объекта массивов. Но когда я пытаюсь простым циклом вывести в консоли объект по каждому клику, он выводит мне все объекты в массиве.
Хочу через одно модальное окно ввести данные в локальное хранилище, а оттуда на отдельную страницу с корзиной. Но как мне сделать так, чтобы по клику отреагировал только один объект, я не понял.
Кодовая база условного сервера не будет пересекаться с вротендом, даже если оба на ЖСе, так что их не имеет смысла в одном контексте держать (да и заебёшься тулинг под свою айдиешечку настраивать, который бы одновременно переваривал интерфейсы ноды и ватагу браузерных апи). Фронт-сервер - это типа отдельный сервер под папки public и templates? Если сервисы не находятся на отдельном хостинге, то их нет смысла пихать как отдельные серверы, а пропукивать амазоновские апишечки может и мейн сервер через воркеров.
Репозитории лучше пилить по хостингам, так как они рано или поздно разрастутся всякими мелкими деталями конфигов, нужных для хоста. Ну а какие-то общие конфиги можно хранить в руте монорепы в виде джейсонов.
>не чувствовать давление от DRY
Так ты о драе вспоминай когда в одном контексте ебучий бойлерплейт всплывает, а не когда в двух контекстах какая-то общая логика начинает появляться. То что она в конкретный момент времени схожа, не значит, что она не поменяется в одном из контекстов. И чем больше контекстов, разнящихся в деталях, тем больше оверхеда добавляет талмудическое следование драю.
Ну попиши интерфейсный код на ванильном жс, после тысячного вызова `document.createElement()` как раз придёшь к реактоподобной шаблонизации.
А я тебе уже говорил: "пошел нахуй". Уже то что у тебя даже никаких аргументов нет, выдает в тебе тупоролого выпендрежника. Рака яичек тебе и твоей семье
Ну или просто подскажите мне пожалуйста, как сейчас делают корзину на чистом JS (или нечистом, не знаю). Чтобы я понял, как нужно, а как не нужно.
По твоему описанию нихуяшеньки не понятно.
Ну чтобы меньше килобайтов там туда-сюда.
А самому разобраться? Это же самые основы основ.
Яйца понюхал? Иди нюхай.
Так в чем проблема просто проходить по массиву и если айдишник совпадает выводишь в заказе этот объект?
Я уже сказал фильтр юзать, это просто очередной кретин не вменямый который не хочет вникать а хочет денег.
Как я понял, у него там можно и с помощью фор проверять айдишник кликнутого элемента.
Просто вкатышь может и не знать фильтр, ну а фор...
Крч очередной неосилятор, работаем дальше.
html
css
scss
js
react
redux
react-bootstrap
typescript
mongo
webpack
postcss
jest
react testing library
cypress
git
linux (bash-команды, свободно могу собрать рачик на коленке, почти не подглядывая в мануал)
немного mongo и node
Планирую выучить (на уровне свободно написать пет, не получая слишком долгих затупов):
redux-saga
styled components
graphQL + apollo
node + express
Oauth
аутентификация в целом (passport.js, например)
socket.io
next.js
любая SQL-бд
досмотреть курс по алгоритмам + прочитать книжечку.
осилить YDKJS, все книжки.
В целом неплохо было бы поковырять:
Что-нибудь по безопасности
Паттерны проектирования
ООП
Docker
Микросервисы
Nginx
Естественно, в процессе всей этой хуйни пишутся петы и заливаются в портфолио.
После этого я планирую начать искать работу на позицию junior frontend developer с зарплатой от 15ти до 30ти тысяч. Где я проябался, сеньоры, поясните плз.
html
css
scss
js
react
redux
react-bootstrap
typescript
mongo
webpack
postcss
jest
react testing library
cypress
git
linux (bash-команды, свободно могу собрать рачик на коленке, почти не подглядывая в мануал)
немного mongo и node
Планирую выучить (на уровне свободно написать пет, не получая слишком долгих затупов):
redux-saga
styled components
graphQL + apollo
node + express
Oauth
аутентификация в целом (passport.js, например)
socket.io
next.js
любая SQL-бд
досмотреть курс по алгоритмам + прочитать книжечку.
осилить YDKJS, все книжки.
В целом неплохо было бы поковырять:
Что-нибудь по безопасности
Паттерны проектирования
ООП
Docker
Микросервисы
Nginx
Естественно, в процессе всей этой хуйни пишутся петы и заливаются в портфолио.
После этого я планирую начать искать работу на позицию junior frontend developer с зарплатой от 15ти до 30ти тысяч. Где я проябался, сеньоры, поясните плз.
>я проябался, сеньоры
Знание названия технологии != знание самой технологии.
>Я знаю:
>typescript
>В целом неплохо было бы поковырять:
>ООП
Иди верстать учись, вкатышь.
По совету анона пишу сюда, нид пара-тройка анонов способных собрать сайты на конструкторе, я оп треда https://2ch.hk/b/res/245873424.html#245878122 (М)
Дублирую шапку оп-треда на случай если потрут
Сап б. Это не очередная рулеточка или фейковая раздача денег на даблы.
Я пришел предложить анону легальную подработку анону. В воркаче 2,5 человека, поэтому решил создать тред в б.
Суть такова, требуется пара тройка можно больше анонов, способных собирать простые сайты на конструкторе. Оплата фиксированная (3800 рублей за 10-15 страниц сайта), как и перечень того, что входит в стоимость создания сайта.
Поток клиентов уже налажен, от вас лишь потребуется своевременно сдавать работу, в течение 10 дней. График свободный, все как маняфантазировал анон.
Для начала необходимо пройти небольшое тестовое задание.
Вопросы можете задать тут, либо можно писать в тг.
тг для связи potatoju1ce
>Я знаю:
>typescript
>В целом неплохо было бы поковырять:
>ООП
Я не вижу противоречий. Я использую ТС в реакте для ФП. Знать ООП паттерны в которых применяется ТС != знать ТС.
>Я использую ТС в реакте для ФП.
Это тот ФП на ТС, в котором к функциональным объявлениям нельзя привязать тип?
Спасибо, анон, крайне отзывчиво. Я же помощь предлагал, но спасибо за мнение. Вкатывайся дальше
Ты еще и наебщик, наверное. Будешь какое-нибудь говно на гидре продавать, а придут за аноном. Съеби нахуй.
А если нет? Что ты сделаешь?
Дохуя вас вкатывальщиков, а если предлагаешь что-то стоящее, по типу той же работы, пусть и на конструкторе, тебя сразу же шлют на хуй
Так ты не сказал, какой конструктор, так что скорее всего тильда. В этом случае тебе не в этот тред, а в какой-нибудь /web/.
>Я знаю:
>html
>css
>scss
>js
>react
На последнем пункте уже надо было идти работу искать и сейчас бы уже работал. А так потратил время на кучу технологий.
Дали им редукс, так нет же, будем свои портянки передавать на три этажа вниз.
А что ты понимаешь под пет проектами? Я вот тоже наизучал всякого, но понятия не имею что реализовать и главное выложить на всеобщее обозрение. Всякое не сложное говно уже 1000 раз сделано и переделано по всему интернету, а что придумывать сложное хз, я же не мамкин стартапер.
Лучше конечно хранить каждую без исключения портянку в глобальном стейте с тонной бойлерплейта, чтобы каждая шавка на задворках приложения могла откуда угодно эту портянку вытащить и поменять как шавке вздумается, сыглы.
у меня apollo-client, я как раз таки фрагменты прокидываю: каждый нижний компонент просит меньшего куска данных, а я даю больше, благо типы ограничивают и есть структурная типизация
А есть ли для работы с js и вообще с веб фронтендом движки или мб плагины, которые позволяют интерфейс строить как например в Андроид студии или в Юнити. То есть не писать <кнопка на пять метров вправо></кнопка> и вот этот весь пиздец с версткой. А просто кинуть объект кнопки на полотно. А функцию уже писать на js. И чтоб html был как xml, то есть для дополнительного задротства. М?
Такого плана это какого? Я пишу на C# и джаве. Смогу ли я понять js?
Это ты к чему? Есть нужда поменять, пусть меняет. А то давайте к портянке ещё пару колбэков пристегнем.
Тильда, ебать.
А как ты организуешь сохранение данных? Допустим, надо в таблице чекнуть пару хуевин, потом в попапе ввести текст и нажать кнопку.
>То есть не писать <кнопка на пять метров вправо></кнопка> и вот этот весь пиздец с версткой.
Попробуй выучить CSS.
>А просто кинуть объект кнопки на полотно. А функцию уже писать на js. И чтоб html был как xml, то есть для дополнительного задротства.
Это ты React описал.
Дайте советов мудрых.
Ну, например, надо ли комменитровать каждую строку кода или ревьюверу пофиг?
И всё в таком духе.
Додик, забрасывай в модалочку один свой объект товара и работай там с ним. У тебя товары и так должны быть уникальны хотя бы по одному признаку, зачем тебе в модалку заказа товара кидать весь список?
Но это, блин, совершенно другая философия, чем покадрово вычисляемые координаты.
Так что у меня вопрос: есть ли вообще в CSS способ проводить над элементом несколько одновременных трансформаций с разными изингами? Например, я хочу, чтобы по оси X элемент двигался равномерно, а по Y - по квадратичной функции. Это как-нибудь реализуемо средствами CSS?
>Линтер есть? Тесты есть?
Нет, ничего этого нет.
>Вообще, давай его сюда, я обоссу.
Сюда скидываеть не буду, только в ЛС, лол.
Мне мало обоссать - мне надо узнать, как оно должно быть на самом деле; желательно конкретным примером.
П.С. Говно-проект на vue \ vuetify.
>>19882
>Хороший код в комментариях не нуждается.
Вот только не надо.
Попадались кодеры, которым показываешь меньше ста строк кода, а они воют, что код сложно читаемый. Межтем, у самих такое дерьмо замешано, без вилки не разберёшь.
Канвас думаешь просто так придумали? Сотни манипуляций домом в секунду - пизда какое дорогое удовольствие. Обычно анимируют пару элементов всего.
Добавляешь `transform` в `transition-property` и там можешь вертеть по осям хоть свою мамашу.
>Сотни манипуляций домом в секунду
Так вроде трансформ затем и нужен, чтобы DOM не трогать при каждой перерисовке?
> Канвас думаешь просто так придумали?
У канваса нет инструментов работы со шрифтами Если нужно много интерактивного текста, канвас не вариант.
Да есть. Чем раньше начинаешь ходить на собесы, тем быстрее получаешь обратную связь, знакомишься с рынком, работаешь над ошибками. Все равно первые несколько десятков собесов будешь заваливать.
Web Animation API тебе нужны.
Это JS апи для манипуляции именно CSS анимациями. Можно делать все. И покадрово генерировать KEYFRAMES в том числе.
Нет, генерить реферал ссылки - технически невозможно в нынешней реализации екмаскрипта.
Да ладно, наверняка уже запилили плугин для жиквери.
Сначала напиши мультиплеерную игру, а такие тупые вопросы затем отвалятся сами собой.
>>20228
http://ru.battleship-game.org/
Ну вот пример, нужных движков нет для подобных игорь? с нуля не охото пейсать всю клиент-серверную лапшу
Сылка генерится для коннект а не реферала
Ну и сиди дальше в жопе.
p2p? Сессион очка? Напрямую? Через твой бэк?
Какая нахуй разница, действительно.
>Web Animation API тебе нужны.
Посмотрел, что такое. Выглядит как сахарок для уже существующих возможностей. При этом я всё ещё не вижу способа задать элементу экспоненциальное движение по одной оси и линейное по другой. Есть там разные изинги для разных параметров? Или мне делать миллион кейфреймов?
p.s. Вот же оно.
> / Multiple timing functions /
> transition-timing-function: ease, step-start, cubic-bezier(0.1, 0.7, 1.0, 0.1);
Да пока больше никаких. Просто хочу надо модный стек с реактами и редуксами, а на этой вакансии этого всего нет. С другой стороны смотрю я на вкатунов, которые месяцами вообще никуда вкатиться не могут и думаю мб это не такой плохой вариант.
pps Не, нихера не работает, по крайней мере через Web Animation API.
> Например, я хочу, чтобы по оси X элемент двигался равномерно, а по Y - по квадратичной функции
Если сможешь выразить эту функцию через Безье, то без проблем:
transition: left 123s linear, top 456s cubic-bezier(1,2,3,4);
Это пиздеж. Я даже на всякий случай вакансии перепроверил. Везде миллиард технологий в стеке и еще "плюс будет ...". Хуй ты куда джуном устроишься, если ты не миддл, лол.
Нет. Я еще ебейший стек не выучил, следовательно, нехуй соваться. Вот закончу алгоритмы, саги, ноду, многотомник YDKNJ, напишу штук 10 петов (как полагается, с беком, с тестами, на ТС), чтобы гитхаб сразу в глаза бросался, вот тогда буду ходить.
Так ты и выучив всю эту ебалу на миддловскую позицию не устроишься. Думаешь там идиоты сидят и схавают твои домашние поделия за коммерческий опыт? Даже не пытайся наебать там никого, себе хуже сделаешь. Ищи более менее джунские вакансии и не выпендривайся.
>Так ты и выучив всю эту ебалу на миддловскую позицию не устроишься
Так я и не собираюсь, ало. Я на ждуна пойду.
>Например, я хочу, чтобы по оси X элемент двигался равномерно, а по Y - по квадратичной функции. Это как-нибудь реализуемо средствами CSS?
Кажется, на данный момент есть только такой воркэраунд. Идея очень простая. Вопрос в том, насколько это производительно.
https://tobiasahlin.com/blog/curved-path-animations-in-css/
>Хороший код в комментариях не нуждается. Он САМОКОММЕНТИРУЕМЫЙ.
Это применимо не ко всем областям. В том же машобе у меня зачастую по несколько строк комментариев на одну строку кода. Да и в вебе попадаются моменты, когда приходится комментировать некоторые неочевидные вещи.
Не очевидные вещи занимают небольшую часть от общей массы и обычно это высокооптимизированные куски. Нахуй остальной код засирать комментами на корявом рунглише, лучше просто написать простой код.
Все, что приходит в голову. Я обычно реализую что-нибудь, что занимает не больше одного дня (с оговоркой на мои умения). На что-то дольше у меня обычно пропадает интерес.
Нет поддержки в сафари, да и сама концепция весьма ограниченная, не сильно лучше кейфреймов, насколько я понял.
p.s. Всё свелось к такому решению, лол. Буду сейчас тестировать, что там по производительности получается.
https://www.youtube.com/watch?v=Z8-EM1znIrU
Кстати, зачем игры на js делать? Есть же всякие юнити-хуюнити.
Мимо вкатышь.
Зачем нужен хуюнити, если есть жс?
>Ну как успехи? Лень пробовать.
По производительности - мне хватает.
А вот с вращением не очень получилось. Транслейт работает like a charm, но вот поворотный контейнер внутри поворотного контейнера иногда выдаёт такие странные штуки, что мне даже стало лень с этим разбираться. В итоге оставил слайдеры по осям и только один "шарнир" для поворота по всем углам. Обойдусь без разных изингов для rotateX, rotateY и rotateZ.
>>21162
>Кстати, зачем игры на js делать? Есть же всякие юнити-хуюнити.
Весь смысл игр на JS в том, что они в другой лиге, нежели игры на десктопе. У тебя обед/начальник отвернулся - ты щёлкаешь по закладке и уже через секунду играешь. Закрыл вкладку - чист перед законом.
Есть это:
export const indicators: Record<MetricName, string> = {
propA: 'mappedValue1',
propB: 'mappedValue2',
propC: 'mappedValue3',
propD: 'mappedValue4',
};
А на выходе надо иметь значения:
[
{
label: 'mappedValue1',
value: 'propA',
...
},
];
Вот нашел такой пример https://jsfiddle.net/gxab98nq/ Работает если сортировать по авиакомпаниям(carrier)
> ...items.map(n => n.carrier) ])];
>items.filter(n => filteredBrands.includes(n.carrier));
Как изменить, что б сортировать по пересадкам?
Массив легко, кортеж - не ебу чет. https://www.typescriptlang.org/play?#code/KYDwDg9gTgLgBAYwgOwM7wJbICYYQQxmlTgF44BvAKDjjCgjAEEAuOAcgFt8wxhsAavgA2AV2ABGdgBoadBmABCbLjz6CR4gEwy59RgGEV3XvyFjgAZl219YACLG1ZzcAAsugL5x8JJGhgAbioqGABPPjgASRw8QmIyOHC+CAAzOCxcAiIoVGDQiOA4ACVgVFFheHImKCh8MIAealoAbQBpDOQ4AGtgMLTo2OziAF02Zto4ADdXNjbgybhhfAAjYGE2GKz43PaRhbhPKk8W3v70rbic1BGAPnzkoqZEs4HL4dz8-3Q4KDKKmBsUrlSqJFpyCa0GYWNgAIjsTFhskWyzWGw4JnU5nEUjkR32VCAA
>через секунду играешь.
Недавно анон в прошлом/позапрошлом треде писал, что его надзиратель уволил за неуспеваемость.
Какую игру думаешь сделать, если не секрет?
>Как изменить, что б сортировать по пересадкам?
Так сортировать или фильтровать? Сформируй вопрос нормально блядь, откуда такой вкатываешься?
с type Result круто, спасибо, только хочу, чтобы компилятор ругался, когда в const result не все свойства из const indicators в качестве элементов использованы, как в Record
До последнего хуярил на ваниле свои небольшие проекты, т.к люто выворачивает от реактоговна
На светке же спустя пару ройку дней интенсивного изучения в легкую перепилил последний проект. Кода в разы меньше, писать очень приятно
Это будущее
Ай ду..
Фильмопоиск. Понятней не стало. Зачем пилить фильмпоиск, блять?! Это типо парсер какой-то?
Или блять обычная сортировка что ли?
Гуйня к апишечке imdb.
Так тебе роутер через контекст параметры все отдает.
> /item/1
А как ты до этого докатился без роутера?
> никак не могу понять как передать данные между компонентами
Щас вкатыши начнут кукарекать за пропсы, но ты просто прикрути редукс.
Лол когда пробовал это говно даже хелловорд не скомпилился с ошибкой
>Какую игру думаешь сделать, если не секрет?
Пошаговый коффибрейк-роглайк с боёвкой как в Disciples-2 и оригинальной механикой захвата карты. Серьёзно, в двух словах не объяснить, этому пет-проекту семь лет будет осенью (из которых года три активной разработки).
Лучше сходи за редукс сагами ебаными
>Любую такую хуйню на канвасе делают
Какую - такую?
Если у тебя не спелунки, где можно играть джойстиком, а что-то типа ККИ, где есть карты, на которых есть надписи и на которые могут быть наложены эффекты, представленные значками, и каждый значок эффекта должен быть интерактивным.
Не, канвас хорош для своих целей, а CSS для своих. У меня вообще three.js раньше юзался в этом проекте, но однажды я потестил его на мобилках и понял, что подлаг от инициализации либы слишком огромный, и он не закэшируется, как 500кб её веса.
ждет тебя впереди стилей каскад ты готов открывайся вскод
фронтендская дрооооооочь
очередной фреймвооооорк
здесь state и props
input type="file" и Blob's
npm и redux
о дивный фулстак
о manager product
здесь синьор и лидак
код ревьюхой грозят
смотри не деплой!
хоть сложон и заеб но прекрасен фулсток
google.com stackoverflow и вперед
пусть от пхп пронесет и jquery умрет
пиздуй в фулстак куда эйчарка зовет!
Интересней ну и найти можно больше все же
Насколько вообще обоснованы страхи, что фронт перегрет и при первом же кризисе зарплаты уйдут в пол?
Инб4, нахуя так сложно: я в программе inkscape хочу сделать для некого ящика стороны, но у этих сторон есть замки по краям пикрелейт, в форме прорезей в виде буквы Т, и мне нужно видеть совпадают ли прорези у сторон куба например А и Б.
Хз, главное не быть мудаком, а род деятельности не важен.
Я вот прочно окопался на проекте, даже менеджерка слабо представляет все процессы. Можно сказать, что автобусный фактор равен 1.
Ошибки:
index.js:1 TypeError: Cannot read property 'options' of undefined
at Object.getWeekFirstDay (dateFns.js:86)
at getWeekStartDate (dateUtil.js:95)
at DateBody (DateBody.js:21)
at renderWithHooks (react-dom.development.js:14977)
at mountIndeterminateComponent (react-dom.development.js:17803)
at beginWork (react-dom.development.js:19041)
at HTMLUnknownElement.callCallback (react-dom.development.js:3945)
at Object.invokeGuardedCallbackDev (react-dom.development.js:3994)
at invokeGuardedCallback (react-dom.development.js:4056)
at beginWork$1 (react-dom.development.js:23956)
at performUnitOfWork (react-dom.development.js:22768)
at workLoopSync (react-dom.development.js:22699)
at renderRootSync (react-dom.development.js:22662)
at performSyncWorkOnRoot (react-dom.development.js:22285)
at react-dom.development.js:11319
at unstable_runWithPriority (scheduler.development.js:646)
at runWithPriority$1 (react-dom.development.js:11268)
at flushSyncCallbackQueueImpl (react-dom.development.js:11314)
at flushSyncCallbackQueue (react-dom.development.js:11301)
at discreteUpdates$1 (react-dom.development.js:22412)
at discreteUpdates (react-dom.development.js:3756)
at dispatchDiscreteEvent (react-dom.development.js:5881) {componentStack: "↵ at DateBody
и:
index.js:1 TypeError: Cannot read property 'localize' of undefined
at dateFns.js:108
at Array.map (<anonymous>)
at Object.getShortMonths (dateFns.js:105)
at DateHeader (DateHeader.js:26)
at renderWithHooks (react-dom.development.js:14977)
at mountIndeterminateComponent (react-dom.development.js:17803)
at beginWork (react-dom.development.js:19041)
at HTMLUnknownElement.callCallback (react-dom.development.js:3945)
at Object.invokeGuardedCallbackDev (react-dom.development.js:3994)
at invokeGuardedCallback (react-dom.development.js:4056)
at beginWork$1 (react-dom.development.js:23956)
at performUnitOfWork (react-dom.development.js:22768)
at workLoopSync (react-dom.development.js:22699)
at renderRootSync (react-dom.development.js:22662)
at performSyncWorkOnRoot (react-dom.development.js:22285)
at react-dom.development.js:11319
at unstable_runWithPriority (scheduler.development.js:646)
at runWithPriority$1 (react-dom.development.js:11268)
at flushSyncCallbackQueueImpl (react-dom.development.js:11314)
at flushSyncCallbackQueue (react-dom.development.js:11301)
at discreteUpdates$1 (react-dom.development.js:22412)
at discreteUpdates (react-dom.development.js:3756)
at dispatchDiscreteEvent (react-dom.development.js:5881)
Как локаль добавить?
Ошибки:
index.js:1 TypeError: Cannot read property 'options' of undefined
at Object.getWeekFirstDay (dateFns.js:86)
at getWeekStartDate (dateUtil.js:95)
at DateBody (DateBody.js:21)
at renderWithHooks (react-dom.development.js:14977)
at mountIndeterminateComponent (react-dom.development.js:17803)
at beginWork (react-dom.development.js:19041)
at HTMLUnknownElement.callCallback (react-dom.development.js:3945)
at Object.invokeGuardedCallbackDev (react-dom.development.js:3994)
at invokeGuardedCallback (react-dom.development.js:4056)
at beginWork$1 (react-dom.development.js:23956)
at performUnitOfWork (react-dom.development.js:22768)
at workLoopSync (react-dom.development.js:22699)
at renderRootSync (react-dom.development.js:22662)
at performSyncWorkOnRoot (react-dom.development.js:22285)
at react-dom.development.js:11319
at unstable_runWithPriority (scheduler.development.js:646)
at runWithPriority$1 (react-dom.development.js:11268)
at flushSyncCallbackQueueImpl (react-dom.development.js:11314)
at flushSyncCallbackQueue (react-dom.development.js:11301)
at discreteUpdates$1 (react-dom.development.js:22412)
at discreteUpdates (react-dom.development.js:3756)
at dispatchDiscreteEvent (react-dom.development.js:5881) {componentStack: "↵ at DateBody
и:
index.js:1 TypeError: Cannot read property 'localize' of undefined
at dateFns.js:108
at Array.map (<anonymous>)
at Object.getShortMonths (dateFns.js:105)
at DateHeader (DateHeader.js:26)
at renderWithHooks (react-dom.development.js:14977)
at mountIndeterminateComponent (react-dom.development.js:17803)
at beginWork (react-dom.development.js:19041)
at HTMLUnknownElement.callCallback (react-dom.development.js:3945)
at Object.invokeGuardedCallbackDev (react-dom.development.js:3994)
at invokeGuardedCallback (react-dom.development.js:4056)
at beginWork$1 (react-dom.development.js:23956)
at performUnitOfWork (react-dom.development.js:22768)
at workLoopSync (react-dom.development.js:22699)
at renderRootSync (react-dom.development.js:22662)
at performSyncWorkOnRoot (react-dom.development.js:22285)
at react-dom.development.js:11319
at unstable_runWithPriority (scheduler.development.js:646)
at runWithPriority$1 (react-dom.development.js:11268)
at flushSyncCallbackQueueImpl (react-dom.development.js:11314)
at flushSyncCallbackQueue (react-dom.development.js:11301)
at discreteUpdates$1 (react-dom.development.js:22412)
at discreteUpdates (react-dom.development.js:3756)
at dispatchDiscreteEvent (react-dom.development.js:5881)
Как локаль добавить?
Да никто тут не будет дебажить велосипеды по переписке. Сам себе головняк создал, сам и разгребай.
Да понятно, думал, может, кто еще в AntD date-fns ставил вместо moment'а. задача популярная вроде
Нефеговая подготовка к пятнице. Балдеж
Прошу вас, объясните на пальцах, зачем нуден REACT
Я учу его пару дней, т.к он самый популярный фреймворк, но я совсем не понимаю зачем нужны танцы с бубном и писанина в 100 строк, если можно просто добавить в HTML то что ты хочешь.
Как я понял, реакт нужен для автоматизации, или он как-то с бэком подключается через апи, ну крч вот эти возможности которых нет в ванильном хтмл5. Ещё я не могу понять зачем нужно ставить сайт на локалхост? Не судите строго, я и ES6 не особо понимаю зачем, но JS знаю в общем хорошо, спасибо за совет
>зачем нужны танцы с бубном и писанина в 100 строк, если можно просто добавить в HTML то что ты хочешь.
А ты так пробовал? Ты ж взвоешь и попросишь реакт, когда начнешь делать spa или сложный динамический интерфейс.
Чет судя по твоей простыне - у тебя какая-то каша в голове. Реакт это просто библиотека, позволяющая создавать удобные пользовательские компоненты, которыми легко манипулировать. Намного легче, чем писать миллионы строк и отслеживать изменения с помощью ванильного JS.
У тебя же написано, что
> Cannot read property 'options' of undefined
Куда options дел? Почему не передаешь или передаешь пустоту?
Нет
Реакт позволяет создавать SPA. Плюс ко всему, у реакта есть внутренний virtualdom, в который сначала вносятся изменения при рендере элементов, потом изменения сравниваются с текущим домом, и в текущий дом вносятся только те изменения, которые отличаются от виртуального, страница целиком не обновляется. Правда я не знаю каким образом реакт обновляет только необходимые элементы и не заставляет бровсер перерисовывать всё целиком.
Реакт можно назвать фреймворком в том смысле, что он довольно-сильно диктует принцип написания кода и вообще подход к разработке. Так что с этой точки зрения, реакт - фреймворк. Но кому вообще не похуй?
Но он ничего не диктует, ты с JSX путаешь, который можно и без рякта пользовать (и рякт без JSX).
В самом реакте ты просто прокидываешь функции и жонглируешь скоупом, то есть пишешь типичный жс код.
'156' же
Нужно из предложения удалить все спец символы/любые возможные НЕ БУКВЫ
Причем слова могут быть написаны на любомом языке, где буквы например с кракозябрами или вообще иероглифы
Так же, если символ стоит МЕЖДУ, например "КАК-НИБУДЬ" или "CAT'S", то в данном случае нужно удалить символ и заменить пробелом чтобы не слипалось
Не сработает твое выражение. Уже нашел рабочий вариант
someString.replaceAll(/([^\u00C0-\u1FFF\u2C00-\uD7FF\w])+/g, " ")
Допустим, во входных данных слово :
красивый
Должен получить массив слов типа:
красивая, красивой, красивую, красивыми и т.п
>SPA
Зачем они нужны? В чем преимущество перед обычным многостраничником? Как будет индексироваться контент в поисковиках?
Зачем тебе в многостраничниках сложный интерфейс?
Они платные
Но нашел вот такой сервис. Осталось понять, как отсюда
https://context-tools.ru/keywords/morfolog-word
спиздить урл для запроса
В нетворке показывает
https://context-tools.ru/keywords/morfolog-word/process
но непонятно, какие ключи тут
Типичная пидераха, абы спиздить.
Что непонятного? Девтулз показывает какие поля в запросе
keywords[]: жопа
morphy_options: 0
not_morphy_list[]:
not_morphy_words: 0
morphy_comma: 0
>У тебя без SPA страницы перезагружаться будут постоянно
Пускай. Если ты кешируешь повторяющийся контент, то это не проблема.
>У тебя без SPA страницы перезагружаться будут постоянно
Они и в спа будут перезагружаться, просто перезагрузка будет идти фетчем и ререндерингом DOMa, к которому прикрепляются костыли в виде мамкой клянусь неглобального состояния и всяких листенеров микропуков.
>Ой блядь, ну конвенция в рякте есть?
Без конвенций ты и два модуля не напишешь.
> Пускай. Если ты кешируешь повторяющийся контент, то это не проблема.
Ага, проблема у юзера, который твою портянку через 3Г грузит.
Ты корзину без бэка не пересчитаешь, лол.
> Какую - такую?
60фпс же.
> должен быть интерактивным.
Енто проблема, енто да. Но решается одним буфером.
> подлаг от инициализации либы слишком огромный, и он не закэшируется, как 500кб её веса.
Значит ты какую-то хуйню сделол. В идеале на three вообще нет никаких "подлагов", и не 500кб, а 250-300.
Three можно вообще уменьшить до 100кб или даже меньше.
Ну так не делай много логики. Хотя бы преакт возьми, если не способен на что-то другое.
Я просто не могу понять для чего нужны SPA с точки зрения бизнеса, который должен выбирать именно их. Пока все, что я читаю об SPA похоже на какое-то наебалово. Их разработка дороже, с индексацией и вообще SEO проблемы. Чтобы избавиться от этих проблем, нужно танцевать с бубном и делать SPA похожим на многостраничник (настраивать роутинг и присобачивать урлы) и тогда тем более не понятно, что мешает сразу сделать многостраничник и продвигать его в поисковике и рекламе.
Да логики может быть как угодно много. Вопрос нахрена это все нужно на клиенте?
Ебта, если тебе не нужно спа, значит не делай спа. Другие пользуются, потому что им норм.
Не хочешь от стада отбиться или чо?
Ну вот в стародавние времена писали десктопы, а теперь не пишут, обновления там, кроссплатформа, еще что нибудь наверное. СЕО там не надо и продвигают его не через сео. Делать такое серверсайд многие пытались, никто не преуспел. Потом в чат входит жаваскрипт
нахуя тебе весь это винигрет? учи технологии, с которыми планируешь работать первое время на работе, всё остальное наверстывается уже в процессе на реальных задачах тогда и поймёшь в какую технологую лучше углубиться, а какую скипнуть к хуям собачим
Это все просят в требованиях к джуновским вакухам. Велком ту 2к21 пост ковид ворлд, когда кассиры и охранники масссово вкатываютсяя во фронт. Со стеком хтмл ксс жс реакт редукс сейчас только хуй за щеку можно найти.
>Их разработка дороже, с индексацией и вообще SEO проблемы
С чего вдруг разработка дороже, шиз? Ты половину бека по сути на фронте крутишь, для СЕО есть SSR, роутинг это у тебя танцы с бубном, а кодить ты вообще как собрался? Ты на нексте пробовал многостраничник делать? Для этого буквально нужно создать папку с файлом, всё. Ты вообще работал со всем этим или с головы всё берешь? Пиздец.
>>23393
Да в вакансиях просто рандомно хуярять все что можно как кейворды. Там 80% "технологий" это 3-4 часа чтения доки, такого никто по хардкору не требует. Если у тебя есть хорошее знание жс + любой современный фреймворк на хорошем уровне, это уже почти пройденный собес. Какие там охранники код пишут, можешь показать-то? Наслушаются этих охуительных историй. Для рандомного нормиса поставить себе IDE, ноду и страничку в браузере запустить это уже рокет сайенс. Учи блядь нормально жс, напиши сложную приложуху многостраничную, оформи всё нормально и можешь пиздовать на собесы. "сложная" приложуха, это какой-нибудь простейший мувисерчер с логином и возможностью добавления фильмов в избранное, я не шучу, думаешь там без лично написанного фейсбука не возьмут? Меня вот с такой хуетой уже приглашали, хотя у меня просто висело резюме и я сам никому не писал. А дальше будешь срать на собесах, пока не научишься не срать на собесах.
Основной подводный камень в том, что ты играешь в эту игру не против херки или техдира или хуй знает кого, а против таких же вкатышей. Вот придет нас 10 человек, если все со стеком хтмл ксс жс реакт (у всех примерно однаковый скилл), то я хуй знает, почему должны взять именно меня, я скорее всего нахуй пойду. А так у меня туз в рукаве есть, строгая типизация, тесты, сервер с аутентификацией, SSR и алгоритмы. Да и не очень-то хочется слишком много собесов заваливать, когда в мухосранске во время второй волны ковида кол-во вакансий на реактомакаку-джуна срезало нахуй со ~140 до ~20.
> Ну так ты там понаписал стекохуеты на 200 человек
Где? Что там такого-то? Дефолтный джуностек в 2к21.
>Меня вот с такой хуетой уже приглашали, хотя у меня просто висело резюме и я сам никому не писал. А дальше будешь срать на собесах, пока не научишься не срать на собесах.
Ты забыл упомянуть, когда вкатился.
Реакт не фреймворк, а библиотека. Такаяже, как жквери.
"Уже" в том смысле, что этого было достаточно. Вкатился около года назад
Да, на бэке у меня совсем уже эзотерическая ебанина вроде генератора вордовских документов и апишечек с авторизацией по сертификатам.
Здорово. А товары в корзине ты на клиенте считаешь, да?
Реакт нужен для создания веб-приложений. Веб-приложения отличаются от обычного сайта тем что подразумевают большую интерактивность и нетривиальное взаимодействие с пользователем. Вэб-приложение это калькулятор, интерактивная гео-карта, чатик, терминал для биржи, мультиплеерная игра. Всё это можно написать и без реакта, но на реакте это сделать проще.
Если у тебя простой сайт с формой обратной связи или бложек реакт не нужен.
Преимущество - это знание еще какого-нибудь языка, помимо JS/TS, это знание и понимание базы (алгоритмов и структур данных). Это то, что реально отличает человека, основательно идущего в сферу от поверхностного нормиса. На собесах отсеивают прежде всего поверхностных манек, которые выучили хуйню по роадмапам, а за их пределами не в курсе как веб и кодинг вообще устроены.
>С чего вдруг разработка дороже, шиз?
С того, что сделать сайт на PHP без всей твоей фронтодрисни дешевле. Почему кабан должен выбирать твои кручения на фронте? Ты в курсе как много пользователей даже не заходят на сайт, когда видят как долго вся эта хуйня грузится от того, что ты кучу хуеты вывалил на клиент? Посмотри статистику посещаемости крупных порталов. Куча народу до сих пор заходит с допотопных мобил, предлагаешь бизнесу выбрасывать их за борт, потому что у тебя модная еба, в которой половина бэка крутится на фронте?
Обычно когда объясняется, что такое асинхронность в JS, то говорится об Event loop, очереди синхронного кода, очереди микро и макро задач. И в целом можно представить что весь код JS это очередь. И в паралельности там работают либо созданые вручную воркеры, либо воркеры из под капота типа таймингов.
Исходят из этого, если мне, например, нужно сделать 15 HTTP запросов, то особо нет смысла, делать их синхронно через async/await или асинхронно. что там что там они в итоге попадут в очередь.
Однако на практике асинхронные запросы выполняются быстрей. Я так понимаю, что они всё же работают параллельно? Каждый совершает запрос не дожидаясь ответа, а после получения response уже код выполняется дальше.
Правильно я мыслю?
> Я просто не могу понять для чего нужны SPA с точки зрения бизнеса
Быстрозагружаемые микространчки на свелте. Или интерактивные 60фпс странички на среакте. Или просто красивые продающие штраницы.
> похоже на какое-то наебалово.
Это называется капитализм, добро пожаловать.
> Их разработка дороже, с индексацией и вообще SEO проблемы.
Они работают через рекламу. Но никакой индексации или сео-проблем нет на шамом деле, тебе показалось.
> что мешает сразу сделать многостраничник и продвигать его в поисковике и рекламе.
Мешает отсутствие 60 фпс при онлисервер рендере. А 60фпс вполне себе продают.
>>23364
Так не делай логику на клиенте, я же тебе написал. Логика на апи-сервере лежит.
Бизнес-наебщикам логика на клиенте нужна чтобы сервера разгрузить. На эти СПА приходят миллионы клиентов в день, например, и весьма важно чтобы за сервер платить меньше, а контент по цдн и апи раскидывать.
> Однако на практике асинхронные запросы выполняются быстрей.
Они не быстрей.
> они всё же работают параллельно?
В ЖС нет параллелизма, кроме вебворкеров.
> Правильно я мыслю?
Не знаю, я не читал.
>на PHP без всей твоей фронтодрисни
А что тогда он показывает? Сайт на PHP, если браузер только фронт понимает!
>Почему кабан должен выбирать
В том то и дело что выбирает кабан то что дешевле сделают, а потом набравшись опыта, то что дешевле обойдется!
>твои кручения на фронте?
BFF снимает нагрузку на сервер, сервер на миллионы пользователей стоит недешево.
>Ты в курсе как много пользователей даже не заходят на сайт, когда видят как долго вся эта хуйня грузится
Слышал про 4сек. В Lighthouse PWA на Реакте летает и загружается быстро, стоит только исправить проблемы на которые тебе укажут.
> Куча народу до сих пор заходит с допотопных мобил
WEB приложухи собираются и транспилируются в старый JS, а также оптимизируются под браузеры которые использует более 1% пользователей.
>предлагаешь бизнесу выбрасывать их за борт
ТыТруб на PWA, Впараш заглушку ставит на не тех браузерах.
>Но никакой индексации или сео-проблем нет на шамом деле, тебе показалось.
Не пизди, из поисковых движков только гугл честное слово дал, что он прогружает клиентские скрипты. Остальные просто забьют на твоё СПА-говнецо.
response = await fetch(url)
На кой мы потом делаем вот этот await:
result = await response.json()
Что тут асинхронно await-ить? Респонс уже получен жи
Годно. Искал хороший курс по ФП и надыбал на этот - автор оказывается автор и редактор двух книг которые я осилил по ФП в JS (Functional Light JS и Mostly Adequate Guide to FP). Так что приятно увидеть вживую.
Сам курс конечно, intermediate уровень (сначала нужно книги прочесть), но очень годный, который можно вполне применять на работе, в конце курса идет написание редакса (который по сути Reader монада) с блекджеком и шлюхами, а у нас на работе как раз Редакс + Ramda
спасибо анон, ты ответил на то что я спрашивал
Лучше юзер экспириенс, ты можешь пиздеть что угодно, но по статистике чем быстрее/плавнее сайт, тем выше продажи/retention.
Без SPA возможно делать (Hotwire на Рельсах или LiveView на Фениксе), но пока не популярно.
Если делать через дефолтный ХТМЛ, у тебя будет триллион перезагрузок, юзерам не нравится. Хотя я сам лично люблю стандартный веб, а не лагучее реактодерьмо. Но даже с реактолагами, все равно ощущение "живости" и динамические подгрузки страниц и компонентов улучшают юзер экспериенс.
А с реактоговном можно сделать суезный магазин?
И я же правлиьно понимаю, что спа подтягивает данные с сервера, типо как ажакс.
Типо вот у тебя главная, кликаешь на раздел, он открывается без березагрузки. Кликаешь на товар, а там актуальные данные подтянутые с сервера, открывшиеся без перезагрузки.
Мимо вкатышь, почти ничего не слышал про рякт кроме двачей.
Тому що тело респонса - это поток, его надо для начала качнуть в память, потом уже распрсить.
>Держи, почитай!
Ничего нового для себя я там не увидел. Возможно я просто слеп, но эти объяснения с consol log и setTimeout я уже и так читал.
Дайте простой ответ почему код асинхронный код на пикриле быстрее почти в три раза.
Тому що в первом случае все запросы стартуют синхронно, но ответы приходят болименее параллельно.
Во втором - ты руками синхронизируешь запросы.
Ок. Спасибо, я это и хотел увидеть.
Сервер рендер у последнего блядофреймворка есть так-то. Проблем нет никаких.
Тайпскриптеры, объясните ситуацию:
Делаю "declare var x: number" - х становится глобальной переменной, доступной как сама по себе так и через window.x
Делаю "declare const x: number" - x становится глобальной переменной, доступной только сама по себе, попытки получить window.x заканчиваются тем, что нет такого ключа у объекта window. Почему?
А ты попробуй проверить будет ли у тебя window.x после транспиляции в JS даже в первом случае.
TS повторяет (точнее старается повторять) JS. B в JS var, объявленная на верхнем уровне станет доступна на window, а const - нет, т.к. const - block-scoped. Т.е. пусть это и не описано явно в доке TS, но все максимально логично.
> Что тут асинхронно await-ить? Респонс уже получен жи
Только заголовки же. А остальное надо опять awaitить.
>>24489
О чем вы вообще спорите бля?
Асинхронка для конкруентного исполнения блять, думаю это в 2021 для всех очевидно, ведь так? Преимущества асинхронки именно в этом
Сам по себе код, написанный через промисы / await не будет быстрее чисто синхронного если там нет конкретного доступа к ресурсам, будет сцуко медленнее потому что нужны ресурсы на переключение контекста
Это уже пруфали на примере синхронных и асинхронных фреймворков того же Пистона, где синхронные оказывались пизже по rps и latency чем асинхронные, однако стоило накидать в код хождений в бд, запись в файлы как синхронные начали отсасывать
пиздец...
эти долбоебы разве сами не видят что городят нечитаемую хуйню? дженерики же должны облегчить работу программиста, а не извратить ее
Ну в принципе так и думал. Но тут, теперь, другая беда, перестал работать чекбокс,
<input type="checkbox" checked={active} data-value={value} onChange={onChange} />
получаю всегда active===false
const onFilterChange = ({ target: { checked: active, dataset: { value } } }) => {
const
newFilters = filters.map(n => [n.value, 'all'].includes(value) ? {...n, active} : n),
isAll = newFilters.filter(n => n.value !== 'all').every(n => n.active);
newFilters.find(n => n.value === 'all').active = isAll;
setFilters(newFilters);
};
Ты что-то другого ожидал от Яндекса? Главное повыёбываться, как ты можешь засунуть всё в один интерфейс, а не писать читаемый и изменяемый код.
public class Main
{
public static void main(String[] args) {
System.out.println(2.0 - 1.1);
}
}
// 0.899999999999999999
Потому что яп ни при чем, бесконечную точность в процессорный регистр не засунешь. Используй специальные типы данных, если тебе сильно нужно.
После транспиляции вообще ничего не будет, это просто объявление переменных, declare чисто тайпскриптовская хуйня.
>>24334
Так если block'a нет, const и let попадают в глобальный скоуп, я думал. А вот оно как.
https://stackoverflow.com/questions/55030498/why-dont-const-and-let-statements-get-defined-on-the-window-object
Нахера вкатываешься в жаву если ты долбоеб? Катись в жс/питон и не еби себе мозги
Порванное очко вижу, аргументы по факту нет.
Читать ошибки / ставить двухлетнюю ноду
Глобальный скоуп !== ключ объекта window. В консолечке можешь значение x посмотреть, всё там будет.
Рибейз все твои коммиты в один сожмёт и присвоит им дату рибейза, что позволяет очень легко в мастер ветке отлавливать регрессии и откатываться, если надо.
А если fast forward не сделать?
Зачем ты свой анус в игнор добавил?
Понаписали dsl и компиляторов к ним, а потом хвастаются как жаваскрипт может
объект
Драститя. Делаю проект на реакте, хочу общаться с json-файлом в папке проекта, читать из него и записывать в него. Это вообще возможно, реакт такое поддерживает? В интернете чет ничего внятного не нашел.
Будто в этом твоём петухоне нет проблемы точности плавающей точки.
Хреново искал, кейс элементарный.
Куда позвали на ствжировку, туда и качусь.
Или лучше сразу на галеру вкатываться?
Я туда попаду с первого раза, я скозал. Ну а вообще не попробуешь не узнаешь, но вот надо ли вот это вот оно все? Я просто слышал, что это зашквар сравнимый с скиллбоксом.
>В интернете чет ничего внятного не нашел.
В интернете нет информации на этот счёт. Ты первый кому пришла в голову подобная невероятная идея. Что делать дальше, думай сам. Можешь патентовать.
Нужно массив превратить в обьект, где ключ - это название элемента, а значение - кол-во в массиве.
[red, red, red, black, white, white]
=>
{
red: 3,
black: 1,
white: 2
}
Ты ебаный дебил и я ебал твою мать.
Рект на фронте, json файл в папке проекта. Можешь читать и писать в него с сервера, можешь отправить этот json на фронт и хранить в localStorage\IndexedDB. Серверный файл реактом ты никак не потрогаешь, они вообще не связаны.
Красиво, спизжу себе.
Существует ли инструмент для отрисовки подобных туманностей/градиентных пятен на произвольной карте мира? Не обязательно именно в таком виде, просто нужно показать расположение неких объектов относительно карты Земли.
Плагины посмотри к своим любимым картам
https://leafletjs.com/plugins.html#heatmaps
https://www.patrick-wied.at/static/heatmapjs/example-heatmap-leaflet.html
Спасибо, гляну
JSON-файл в папке проекта вебпаком превратится в тришейкнутый объект внутри скрипта.
ДАвай я тебе вирусов запишу на диск через твой браузер
Пришло то самое время.
И как оно?
Array.map() заместо спредов.
любой. реакт это элементарная библиотека
самое сложное и забывающее это верстка и клепание формочек, пропуская их велью обратным кольцом через жопу редакс
Мне нужно сперва допердолить опп и ts, а потом уже лезть в реакт? Или моно пропустить? Я принципы наследования, классов, объектов, прототайпа понял, но я чувству, что один хуй забуду это все ибо мне сейчас нет где применять то. В реакт оно надо это всё?
Тебе вообще не нужно ничего знать про наследование в Реакте в 2021
Сейчас можно писать все на функциональных компонентах.
Они шарят функционал через композицию, а не наследование
Не веришь мне почитай эту статью с их сайта
https://reactjs.org/docs/composition-vs-inheritance.html
Что касается TS - это модная штука, которой пользуются, чтобы упростить работу в команде над крупными проектами
Возможно это мастхев в 2021 году
Паттерны разработки в Реакте совсем свои. ТАм нет такой хуйни как ООП, Грасп, ГОФ,Dep. injection
В каком смысле можно? Так все сейчас пишут и это стандарт или это уровня можно верстать используя импортант, но за это по рукам бьют?
Я что то охуел малость от реакта. Когда я пробовал вью, все было максимально понятно и просто, но мне не понравилось, что там какая то своя ёбань, когда в реакте ты по сути пишешь js код. Сейчас читаю доки реакта и что то блядь пиздец какой то, яннп и пишу какую то хуиту, а не js код.
В смысле раньше нельзя было, а теперь можно. Никто не хочет горить "нужно" потому что тогда код на классах автоматически превращается в легаси и его требуется переписать, а так как бы и нет. В любом случае ооп тебе пока не нужно
>>2027019 (OP)
>>2027019 (OP)
>>2027019 (OP)
дышим
> Ну или поменяй ?? на !!
> Uncaught SyntaxError: missing ) in parenthetical
На || ?
> в этом примере монопенисуально.
Эквипенисуально.
> После спреда.
> ['red', 'red', 'red', 'black', 'white', 'white'].reduce((acc, el) => ({...[el]acc, el: (acc[el] ?? 0) + 1}), {});
> Uncaught SyntaxError: missing } after property list
> Не тралируй.
То не я (я траллировал с { el: 1 } и чуть выше в этом посте тоже), то другой анон, может он реально не понял.
Вы уже который день на 3 странице
Это копия, сохраненная 5 июня 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.