Это копия, сохраненная 20 мая 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Больше пары строк кода в посте или на скриншоте ведут в ад.
Для программирования на HTML https://codesandbox.io
Для Node.js с консолькой https://repl.it/languages/nodejs
Если рассчитываешь получить дельный ответ, сформулируй правильно вопрос: «что я хочу получить, что я для этого делаю, что я вместо этого получаю». Если когда самостоятельно найдёшь решение — поделись в треде, мы за тебя переживаем.
Документация - https://developer.mozilla.org
Руководство для вката - https://github.com/acilsd/wrk-fet#javascript
Старая паста, частично устарела - https://pastebin.com/9yRADC0s
1920x1080, 0:15
В жс очень хреновый дизайн у функциональщины. Лучше for лишний раз написать.
LAMP
>асинхронность
Хули тут понимать, язык выполняет только одну строчку кода в стеке вызовов, если он видит асинхронную ебалу, он отправляет эту ебалу выполняться в web api если это браузер, далее эта хуета ждет своей очереди в очереди,лол, далее как только стек вызовов очишается event loop запихивает твой промис в стэк
>обучают
Нахуй его кому то учить? Всякие минины своей целью ставят не обучить а заработать на кабанчиках.
Торрент
Да нет это заставит его загуглить хотя бы что такое стэк вызовов, эвент луп, вряд ли ру ютуберы ему об этом рассказали
>>67450
>>67452
>>67446
Да все въехал, посмотрел этот видос -
https://www.youtube.com/watch?v=vIZs5tH-HGQ
После начал читать пикрил, все стало понятно, ну почти, осталось на практике закрепить.
Алсо симпсон охуенно объясняет, очень подробно.
Вот еще пояснения набрасал, пока читал.
Ну типа сижу я смотрю на тыщу компонентов и сотню сервисов, и куда тут воевать?
Начать ебашить юниты на каждый пук, и интеграционные на каждую пару пуков - будешь писать их дольше чем сам проект.
Или наоборот начать со здоровых е2е - а они пропускать все будут.
Вы к кому обращаетесь, млад человек?
Забыл добавить, что читать нужно исключительно на английском языке.
Да во что нахуй? Я ебу что ли? Я нашел решение, оно работает, мне кажется хорошим. Спрашиваю, потому что интересно так делается или нет, и если не делается, то что делается вместо этого и как белые люди динамически изменяют класс.
Точно, совсем затупил придя к местному скаму с вопросом. Спасибо, что напомнил кто здесь обитает.
Так быстро прочёл?
Да охуенно, может мне еще ядерной физикой заняться? Иначе как я смогу сайты разрабатывать, точно не зная куда там по кремнию электроны летают.
Глупости не пиши тут. Ленишься - так и скажи.
Если не прикручивать болтами фреймворки - вполне норм. Хули там еще придумать-то можно?
Когда тебя ебут в жопу, ты мождешь надрачивать одной рукой хуй а другой мацать ебаря за жопу. Вроде как действия выполняются "параллельно", однако на самом деле они выполняются "конкурентно" и это главное. Конкруентность может быть и асинхронной
Уволен.
>ввиду
в виду раздельно
Имеется в виду что вуй или реакт например позволяют привязать состояние элемента напрямую к переменной и этим (реактивностью) славны. Вроде. А к чему ты стейт помянул?
https://repl.it/join/xirpxlmw-lolkaazhaha
function smallestCommons(arr) {
const [min, max] = arr.sort((a, b) => a - b);
const range = Array(max - min + 1)
.fill(0)
.map((_, i) => i + min);
const gcd = (a, b) => (b === 0) ? a : gcd(b, a % b);
const lcm = (a, b) => a * b / gcd(a, b);
return range.reduce((multiple, curr) => lcm(multiple, curr));
}
smallestCommons([1, 5]);
Теперь ты начинаешь понимать, почему на большинстве проектов забивают хуй на тестирование. TTD в контексте жабаскрипта - марксисм-ленинизм послегрузинского совка. Никто в него не верит и не практикует, но ты обязан повторять цитаты из него как мантры, чтобы на работу взяли.
Код выглядит как жуткая псевдофункциональная лапша, за которую на ревью открутили бы башку. Перепиши нормально.
Если хавер без бизнес-логики, то достаточно `:hover` использовать.
>TTD в контексте жабаскрипта - марксисм-ленинизм послегрузинского совка
Бля, какое хорошее сравнение.
А, тада ладно. Но код мне все равно не нравится, особенно редьюсом - он неинтутитивный какой-то, не люблю его.
Да TDD (два раза подряд, это уже не опечатка, сука) практикуют.
Просто потом тесты никто не поддерживает и в какой-то момент спустя пару лет внезапно обнаруживает что они нихуя не стартуют и проще их заигнорить или выкинуть.
Или для них, или для забитых омежек, третьего не дано.
Есть примитивный хэндлер клика, который проверяет, была ли нажата метаКей на маке и если была, то вызывает функцию.
const handleMcClick = (e: MouseEvent): void => {
if (e.metaKey) {
gayAlert();
} else return;
}
Все это назначается обработчиком в onClick.
640x480, 0:03
>>67615
Этот тред для гетеросексуальных мальчиков!
Уважаемый петух, пожалуйте обратно к себе в петушатню
>>1961875 (OP)
Ты блядь откуда этот бэм выкапал? Он нахуй не нужен с styled components или tailwindcss, тем более если юзаешь среакт или вью
А что за срач я пропустил? Второй тред подряд кого то в йажа-тред посылают.
Так просто хотел навернуть этот бэм.
в первом случае глобальный контекст ссылки, во втором блочный
ты присваиваешь метод которого у тебя нет
у тебя есть функция с именем sayHi()
ее и надо передавать
>let func = user.sayHi();
Что бы не было андефайнд делай bind или вызывай через контсруктор
да
Если я вообще убираю любое упоминание кнопок, то ничего не меняется. Проблема в обращение к ивенту как к таковому. Та же самая ошибка, если не проверяются кнопки клавиатуры, но есть, например: e.preventDefault()
Как ты модешь не поддерживать тесты при TDD, если при TDD они пишутся прежде любого кода?
На ноде/deno асинхронность нинужна. Всё равно все будут юзать зелёные треды на cpython, если такая необходимость будет.
В браузере вебворкеры, а не аснихронность, они тоже нинужны в основном, покрайнеймере не для тебя.
Там нужно свой MouseEvent использовать. Типа React.MouseEvent.
Кажется блядь в JS вообще не существует нехитровыебанных вопросов. В любом говне десятки подводных, вплоть до того, что ты можешь обосраться на вопросе чем отличается let от var.
Сделал 2 коммерческих сайта с фуллстеком, работаю на 3-м. Всё еще не могу устроиться никуда на постоянку, потому что такое ощущение, что к тому моменту, когда я смогу ответить на все вопросы на собесе, я уже просто пойду проходить собесы на сеньера. У меня довольно много опыта, код который я писал проходит код ревью, но какой же пиздец начинается, когда открываешь доку жс и список из 300 вопросов на собеседовании, и понимаешь какое же количество разнообразного говна тебе еще нужно знать, несмотря на то, что в работе это гуглися просто за пару секунд и применяется примерно столько же. Я просто в ахуе с того, какое количество ебанутых корнеркейсов и подковырок нужно знать джуну. Я вообще не могу представить, каким образом это всё можно вот так вот просто взять и выучить. Кажется, как будто работать с ЖС и устроиться на работу это просто бесконечно далекие друг от друга задачи. Какой же пиздеж все эти разговоры про "программирование это просто", ты нахуй в петлю раньше полезешь, чем первый офер получишь. Но тут конечно есть плюс, количество инфоциган и вкатывальщиков кажется оказывает абсолютно нулевое воздействие на уровень зарплат именно по вышеописанной причине.
Но стрелочные функции берут this из верхнего скоупа... Как тогда быть?
Шиз, у тебя синдром самозванца, лечится походами на собесы, пока не пройдешь хоть одно
Не так много ситуаций, когда тебе действительно нужны function https://dmitripavlutin.com/differences-between-arrow-and-regular-functions/
В какое дно вы ходите вообще? Охуеть просто.
Нет, стрелочки писать зашквар.
Когда тебе нуден this, есть method function declaration.
> this
Кстати тоже писать зашквар, потому что вероятнее всего будет хуевая очистка мусора (но это не точно) да и вообще чистота нарушается.
>>67908
Был на 5 собесах. В последний раз это было примерно 4 месяца назад. С тех пор нашел себе фриланс и работаю теперь так, попутно вечерами задрачивая то, чего не знаю. Пока нет желания ходить на эти публичные сеансы унижения от рандомных хуёв. Но хотя бы теперь не совсем прожирая запасы от отложенных денег с прошлого места работы. Но на данный момент работаю по ставке 200р в час, хотя уверен на 100%, что это стоит конечно же куда больше, я бы рад работать за большее, но причину я уже описал постом выше. А согласен я на такое только потому, что в дальнейшем у меня есть перспектива роста, иначе бы уже грузчиком пошел работать, возможно за большие деньги, лол
У тебя синдром самозванца, который ты оправдываешь внешними силами(кококнторы плохие, а я вот хороший!)
Конторам нахуй не нужны твои знания при строгом и нестрогом сравнении, это просто тесты на долбоебов, что бы отсеять немощных вкатунов и не тратить время на них.
Конторам нужно только одно - что бы ты мог приносить им бабки. Если у тебя прокачан скилл программирования и ты можешь быть полезен компании этим, тебя 100% возьмут на работу.
Так вот причина по которой ты еще не на галере - это ты сам. Либо пиздабол и нихуя не знаешь, либо долбоеб и не можешь пройти банальные тесты к которым можно подготовиться за два дня до собеса, либо ты ласкаешь свой синдром самозванца. Вылазий из зоны комфорта, если ты канешь не корзина мамкина как славик сычев.
>Но на данный момент работаю по ставке 200р в час
В пересчёте на месячную зарплату это 30 т.р. в месяц.
Ну хуй знает, чел пчел. Вот думаю закончить 3-й проект и уже пиздовать в галеры, а то стыдно без 300к сек кодить. С комфортом у меня проблем нет, учитывая то, из какого говна я постепенно выбираюсь.
И что тебя спрашивали на этих собесах, что ты не смог ответить, учитывая то, что регулярно работаешь с языком?
Спасибо канеш, исходный код этого решения покажешь? А то я все никак посчитать не мог.
В последний раз это было 4 месяца назад, тогда не знал что такое замыкание, всплытие события и т.п. такого же рода вопросы. С тех пор конечно я это выучил, это конечно круто, что я теперь обо всём этом в подробностях знаю. Вот только пока не понял каким хуем это мне помогло проектировать интерфейсы и писать совсем простенький бек. Ну ладно ладно, чуть чуть помогло, но опять же, когда столкнулся с проблемой срабатывания клика по множеству элементов, все равно загуглилось за 0.12132423 секунды
Чувак, если ты умудрился разрабатывать приложенияна жс, не зная, что такое замыкания и принципов распространения DOM- событий, то все эти "интерфейсы" тобой писанные, о которых ты говоришь - это неподдерживаемый говнокод, и тебя совершенно заслужено не взяли.
Это все равно, что строить деревянные дома, связывая бревна веревками, и потом говорить - но я же построил. Какие в пизду строительные крепежи, нахуй они нужны.
Не согласен буквально с каждым твоим утверждением
Да пиздит он как дышит, я эту суку сразу раскусил мужики. Давайте ему бучу устроим, и в петушиный угол определим.
Что замыкания, что дом события выдадут свои очевидные ошибки при незнании того, как они работают сразу же, как только ты начнешь с этим работать. Так что можно и без знания о подобных вещах проектировать приложение. Или ты думаешь я код писал проверяя его только в проде на работающем сайте?
И кстати говоря, это не я утверждал, что мне пора пиздовать на галеру, а говорил только о том, что учить нужно дохуя всего. Так что вы сейчас опровергаете собственные же представления на мой счет. А о том, что я сделал несколько рабочих сайтов на реакте и ноде я не пиздел.
И вот к примеру
>банальные тесты к которым можно подготовиться за два дня до собеса
это же очевидный пиздеж. Того, что нужно знать на собесе за 2 дня ты даже прочитать не успеешь, не то, что запомнить или понять.
Может быть вы устраивались на работу лет 5-10 назад, и у вас представление о требованиях берутся из того периода.
Нюхай носки падла дырявая, ты теперь чушкарь позорный, бери миску и пожалуй к пораше. Сиди там и смотри как галерные работяги отдыхают в треди.
Банальные? Сложение массива, строки, объекта и жирафа это не банальные. А поскольку на практике ты это не будешь делать никогда, то надо эту теорию дрочить не за два дня до собеса, а каждый день чтобы она не забывалась.
Харош свои инцельные потуги в тред распылять, если у тебя айкью выше 100 это не проблема запомнить.
Если ты не забыл это вообще то программирование нахуй, не хочешь напрягать голову иди в пятерочку работать, там таким нытикам самое место.
Просто отсоси!
Больше функционального подхода и больше чистых функций. Никаких this и прочей хуйни. Настраивайся писать четкий код, потом привыкнешь, а всю this хуйню будешь в отдельные слои хуйни загонять, типо //////TODO: FIX OOP GOVNOKOD
представляю как борщехлёбы придут в тренд, а тут замыкания обсуждают
Верстал, спок
>это неподдерживаемый говнокод
Бля, а как понять, что ты пишешь говнокод? У меня такая паранойя по этому поводу пиздец. Но в отличии от того гения я и про замыкания и про всплытие знаю.
Я тут недавно наткнулся на https://youtu.be/pahO5XjnfLA с темой про замыкания. Потом почитал кантора на эту же тему. Почему в этом видео по сути рассказывается вообще про другое? В целом конечно зная как работают замыкания можно сказать, что примерно он описывает этот процесс, но это же пиздец. У самураев этих ваших то же самое будет? Я еще хуею потом с того, что вот насмотришься таких видосов и будешь блядь собесы проходить. А еще и просмотров ведь дохуя и все благодарят. А фактически он говорит, что замыкания - это когда одна функция находится внутри другой. Это каким хуем вообще относится к замыканию?
>Но в отличии от того гения я и про замыкания
Да ты сам тот еще гений нахуй если жопой мой пост прочел, еще и высокомерный хуесос, СМАТРИТИ В АТЛИЧИИ ОТ ТОГО ВОТ А Я ТО УЖ А Я ВОТ НЕ ТО ЧТО ОН, фу блядь, иди под струю мойся
>Да ты сам тот еще гений нахуй если жопой мой пост прочел, еще и высокомерный хуесос
В твоем посте 0 конкретики. Только какие-то маняаналогии с деревянными домами.
Блядь, всё, тут невозможно без неймфажества вести диалог. Про деревянные дома писал НЕ Я.
Ну а хуле ты отвечаешь тогда не на свой пост, ало нахуй? За мной тоже в каждом треде бегается даун, который отвечает от моего имени на посты.
Да потому что в рот я ебал это анонимное общение, все разговаривают как сумасшедшие и никто ни за что не в ответе. Еще и хуй пойми кто вообще кому отвечает
это ты ПЛИЗ
Я тут с 2009 года, это не отменяет того факта, что анонимное общение не скатывается в говно едва это заходит дальше фап рулетки
>с 2009 года
>РЯЯЯЯЯЯЯЯЯЯ АНОНИМНОЕ ОБЩЕНИЕ НИПАНЯТНА КТО КОМУ ОТВЕЧАЕТ, ВОТ НА ШВЯТЫХ ФОРУМАХ С КАРМОЙ...
ПЛИЗ
ТАК ЭТО ТЫ ДОЛБОЁБ НЕ ПОНЯЛ КТО ТЕБЕ ОТВЕТИЛ СУКА
Ты даже локику разговора двух людей не можешь проследить. Какой нахуй кодинг. Ложкой в рот попадаешь? Вилкой без пробки пользуешься или тебе не доверяют такое?
Я нахуй ливаю из этого пиздеца, чтоб я еще раз тут о чем-то разговор завел, это пиздец, битва глухого со слепым в глубокой жопе обезъяны темной ночью
Хотя нет, я пожалуй останусь! Всё-таки с 2009 тут, привык... Вы мне как родные, простите, анончики!!!
Вот ты мразь конечно, выдал всю свою подлую суть, поняв, что слился. Решил воспользоваться анонимностью общения и опять же написать от моего имени, иначе ведь бы вышло, что насрал тебе в штаны всё-таки ты сам? Ну пацаны-то с утра увидят кто тут обосрался на самом деле. Но ты конечно мразь по настоящему, если решил прибегнуть к такой хуйне. Фу блядь, вот это было по настоящему мерзко. Очередная причина не поддерживать тут никакой активности и кому-то еще отвечать. Пошел нахуй
Всем привет, друзья!
Деревянные дома, а не вот это вот всё...
деревянный
Пиздуй в телегу долбоеб. Там чатов по жс жопой жуй,хули ты тут разнылся.
У меня ещё ВК есть!
Сразу вспомнился мем про нотариально заверенные скриншоты.
https://habr.com/ru/company/otus/blog/547098/
>АРЯЯ КЛАССЫ НИНУЖНЫ!
>Использование классов гарантировает правильное приминение Inline Cache и рост производительности
>НИНУЖНЫ! НИНУЖНЫ! МНЕ ПАЦАНЫ ТАК СКАЗАЛИ!!
Что с тобой?
>хтмл с цсс такое гавно?
Эх сейчас бы писать сайты на плюсах с компиляцией, каждый сайт под отдельную архитектуру, было бы заебись да?
Да, но лучше на ассемблере.
>которые запоминать надо
Как уже заебали неосиляторы подпивасные у которых память как у рыбки. Ебаные хтмлакадемии расплодили как бактерий этих даунов, а они и как дышать забыли, потому что это запоминать еще надо!
Еще один ребенок, увидевший var. Ведет себя в точности как пятиклассник, услышавший в тексте число 69
Я тебе такое полотно в голове накидал, что ты бы на пару лет в депрессии уебался, но тебе повезло и я забыл, что хотел написать.
мимо хтмлпрограммист
Тебе ж и говорят: Использование классов гарантировает правильное приминение Inline Cache. Нигде не сказано что оно магическим образом под капотом его несет
Пидерашка а кто за тебя будет чистить мусор? У тебя просто будет 100001 лет-копия в цыкле и память утечет примерно за час.
На связи фуллстек макака: питон (aiohttp/sanic) + жс (ангуляр)
9 месяцев назад вкатился, сейчас думаю менять работу чтобы не застрять на одном месте (и апнуть зп конечно же). Как посоветуете выбирать проекты, чтобы не продаться за дешево или не сесть за неликвидное гавно?
буду также идти фуллстеком пока либо только в бэк, как получится
Мог бы пойти и в бэк на Ноду, но вакансий не шибко много да и берут туда в основном сеньористых мидлов
>Как посоветуете выбирать проекты,
Ставишь перед собой бутылки, подписываешь их именами проектов. Крутишь бутылки, которая горлом покажет на тебя - садишься на нее.
Ну что бы на дошик хотя бы хватало(месячный запас), ну и раз в неделю под хвост буду с удовольствием принимать(готов бесплатно!). В целом будет клево если еще стекломоя смогу купить на оставшуюся зп.
От 100к минимум
На моем нынешнем месте в ДС2 мне походу чисто из принципа не хотят повышать ("аноннейм, ты больно много хочешь! мы тебя за 50к взяли, сейчас повысили до 60! куда тебе еще-то?")
Сделал такую бочку в Valheim
>аноннейм, ты больно много хочешь! мы тебя за 50к взяли, сейчас повысили до 60! куда тебе еще-то?
Провинция, известная галера, з.п. миддла вчерашнего юниора FE 80, что в питере фуллстэку платят 60, я бы не поверил, но вот только что прочитал на форуме, где все друзья. Это пиздец.
Рили, я бы на твоем месте откликался на все подряд - куча вакансий в ХХ удаленных в том числе где зарплата от 100. Мне бы даже 100 мало показаось, я бы брал от 150.
В экосистеме должны существовать все, и чушки работающие за еду, и люди которые себя уважают.
>фуллстэку платят 60
Хе, так я ж зеленым вкатуном тогда был. На тот момент это действительно было норм, тем более что к моим косякам относились с пониманием и даже позволяли учить ангуляр на ходу, особо не доебываясь на этой почве, но пора расти
Тут еще такое может быть что ты вырос, но у них восприятие тебя тем же вкатуном никуда не ушло. Это даже понятие такое есть в психологии, не вспомню сейчас. Отрезвляет в таких случаях только оффер на руках с циферками, после которого у них должна проснуться мысль, что такая корова нужна самому, и следовательно контроффер в ответ. Ну или не должна, но у тебя уже вариант есть.Только так.
>Это даже понятие такое есть в психологии
Психология тут ни причём, программисты существуют, чтобы приносить ПРИБЫЛЬ бизнесу, соответственно чем выше ЗП у отдельного программиста, тем ниже ПРИБЫЛЬ у бизнеса.
>и следовательно контроффер в ответ
Если РАБотник прошёл через поиск новой работы находясь на нынешней, то скорее всего его не устраивает не только ЗП, и эти проблемы повышением ЗП не решатся.
Эх, если бы. По собственному опыту скажу - видел сеньоров, которые доебывали миддлов вопросами, а-ля что там как работает, и джунов посмышленнее миддлов, и лидов, которые в жизни не подумал бы что лиды.
>Психология тут ни причём, программисты существуют, чтобы приносить ПРИБЫЛЬ бизнесу
Трава зеленая, небо голубое.
Я и говорю про то, что ЕСЛИ он вырос, следовательно приносит больше прибыли, они должны его мотивировать, но часто бывает так, что действительно вырос, но этого НИКАК не видят - и это проблема ПСИХОЛОГИИ восприятия.
>Если РАБотник прошёл через поиск новой работы находясь на нынешней, то скорее всего его не устраивает не только ЗП
> скорее всего
Отдавать самый ценный ресурс - время, работая по найму, и не ставить во главе угла ЗП, по мне это несмышленность, как минимум. Тем более речь о том что ты не меняешь профиль деятельности, а делаешь работу которую и до этого делал за меньшую зп.
Да, но я имел ввиду не лид команды, а lead developer как ступень после senior developer (у нас по крайней мере такая градация).
>Я и говорю про то, что ЕСЛИ он вырос, следовательно приносит больше прибыли
От того, что он запомнил все глобальные методы Ангуляра, ПРИБЫЛЬ у компании не возросла. Соответственно платить ему больше снихуя - уменьшение ПРИБЫЛИ компании.
>но часто бывает так, что действительно вырос, но этого НИКАК не видят
Почему эта ситуация частая, ты конечно же не задавался вопросом.
>Отдавать самый ценный ресурс - время, работая по найму, и не ставить во главе угла ЗП, по мне это несмышленность, как минимум.
Есть два стула: на одном компания из отбитых вороватых пидорах за 300к наносек, на другом - цивилизованная фирма белых людей, но за 150к. На какой из стульев сядешь?
После синьора идут уже околокабанчиковые должности, так что условный лид необязательно лучше в кодинге чем даже мидл.
https://reactjs.org/
https://redux.js.org/ (слышал что многие нелестно отзываются, но тут больше вопрос того что требуется в вакансиях)
Этих офдок будет же недостаточно да?
в шапке треда
бамп, вдруг кто объяснит
>От того, что он запомнил все глобальные методы Ангуляра, ПРИБЫЛЬ у компании не возросла.
Правда? Тоесть гугл может нанять вкатывальщиков, готовых кодить за еду, прибыль вырастит - платить же меньше, так? И что будет с такой компанией в дальнейшем? Какие перспективы?
Или ты имеешь ввиду цель компании - оптимизация - взять получше и подешевле? Тогда почему наемному сотруднику также не относится к компании?
>Почему эта ситуация частая, ты конечно же не задавался вопросом.
Для меня это само собой разумеющееся, и опять сводится к ПСИХОЛОГИИ - организм стремится к покою, поиск нового - раздражитель.
>Есть два стула: на одном компания из отбитых вороватых пидорах за 300к наносек, на другом - цивилизованная фирма белых людей, но за 150к. На какой из стульев сядешь?
У тебя крайности, в мире все не так. Я из условного люксофта, буду стремиться в условный авиасэйлз, когда и если скилл будет позволять, думаю как и любой адекватно мыслящий кодер.
Нихуя не понял из высера этого петухабра, зато нашел нормальное https://gist.github.com/twokul/9501770 https://richardartoul.github.io/jekyll/update/2015/04/26/hidden-classes.html объяснение.
Суть - динамический js будет работать быстрее, с кэшированием, только в случае неизменности макета.
Чистые функции и неизменяемые переменные кэшировались всегда (но это не точно), так что абсолютно похуй.
> Я из условного люксофта, буду стремиться в условный авиасэйлз
Сразу скажу из-за з.п. я, так получилось, знаю сколько платят миддлам в этих компаниях, а не из-за того что условный авиасейлз стильныймодныймолодежный. В продуктовых потому что платят существенно больше чем на галере, не беря в рассчет исключения ноунеймы - а-ля "веб студия васи иванова".
>У самураев этих ваших то же самое будет?
Нет.
https://www.youtube.com/playlist?list=PLcvhF2Wqh7DNVy1OCUpG3i5lyxyBWhGZ8
https://www.youtube.com/playlist?list=PLcvhF2Wqh7DM3z1XqMw0kPuxpbyMo3HvN
Как ты там собрался замерять прибыль, лол. Может только у онлайн-галлер есть такое преимущество в замерах, да и то там экономического смысла почти нихуя нет в большинстве случаев.
Я именно про лида который КОДИТ и ничего не лидит, как ступень после сеньора. Лид, который лидит,в той команде тоже был, но речь именно про скилл того лида, который чисто кодер был.
Взять/придумать проект со всеми фичами современных веб-сервисов и гуглить/стэковерфловить как это сделать на том или ином фреймворке. Доки чисто как база, как алфавит, можно сказать. Все на практике только познается.
Редакс много где сейчас, там паттерн надо вдуплить, кроме редакса есть еще реализации, но редакс по кол-ву звездочек их все вместе взятых рвет.
В больших компаниях вполне бывают должности выше сеньора без кабанизма. Техлид или архитектор обычно они называются, но тут совсем вакханалия с семантикой начинается: Вакансия с названием техлида может оказаться по факту хоть на менеджера, хоть на тимлида или сеньора.
гитхаб
Нет ее, это высшая инженерная ступень.
Я вообще бекенд пишу, реакт знаю по вершкам. Но чет сам решил нативным JS на классах сделать в свой приложухе динамическую форму - получилось. Но код просто блядь пугает.
Особенно тот момент когда я DOM-элемент "привязываю" к какому то своему объекту. Ну в объекте есть ссылка на объект DOM.
Как правильно работать с тем, что этот объект может получить любой другой обработчик, и менять его состояние как ему угодно.
Или эта тема нормально не реализуется без своего маленького реакта?
ппс
>Как правильно работать с тем, что этот объект может получить любой другой обработчик, и менять его состояние как ему угодно.
Как правильно работать с тем, что этот объект DOM может получить любой другой обработчик, и менять его состояние ( и его html ) как ему угодно.
Вопрос про источники инфы, всетаки. Где наиболее сконцентирована инфа по реакта. Нагуглить и так понятно что можно что угодно
>Как ты там собрался замерять прибыль, лол.
Так её и не замеряют. Соответсвенно увеличение ЗП === уменьшение ПРИБЫЛИ для компании без ведомых на то причин. А причины искать не будут, потому что вся эта техническая хуитка для стороннего наблюдателя, манагера то есть - чистый и незамутнённый талмудизм. Хоть всю спеку TC39 заучи после вката, для манагеров будешь всё тем же вкатывальщиком-ждуном.
>Как правильно работать с тем, что этот объект может получить любой другой обработчик, и менять его состояние как ему угодно.
Object.freeze().
>>68501
>Как правильно работать с тем, что этот объект DOM может получить любой другой обработчик, и менять его состояние ( и его html ) как ему угодно.
Не пихать скрипты с любыми другими обработчиками? Откуда ты блять левые обработчики ожидаешь в своём скрипте увидеть?
И вью, и реакт, и ангуляр никрута так-то
>>А чому ты хочешь без реакта писать? Есть сокральный смысол?
В своем приложении хочу и повелосипедить немного ( пока что, оно может вырасти ).
>>68549
>>Не пихать скрипты с любыми другими обработчиками? Откуда ты блять левые обработчики ожидаешь в своём скрипте увидеть?
Исхожу из логики что потом уже не я могу этот код поддерживать. На бэке принято пердолитсья со всякими патернами ООП и прочим. В JS мире может на это хер кладут. Я потому и спрашиваю какую нибудь хорошую книгу в которой описан лучший путь.
п.с.
>Object.freeze()
Я правильно понимаю что допустим получив в одном обработчике объект формы я могу его заморозить. Но ничто не мешает в другом обработчике получить объект этой же формы, и допустим перепахать ее html как угодно?
фриз не изменяемый метод
>Но ничто не мешает в другом обработчике получить объект этой же формы, и допустим перепахать ее html как угодно?
А тебя ебать должно во что там перепахался html? В объекте будут храниться все релевантные данные и все изменения в нём будут происходить только через определённые методы, которые будут менять и состояние полей в html в одностороннем порядке. Если добавить сюда ассинхронщину, то переизобретёшь флюкс. А если посчитаешь, что собирать компоненты в доме слишком заёбисто, то переизобретёшь и jsx.
> повелосипедить
Лучше велосипедь с фреймворками вроде solid. Свои велосипеды бессмысленны и опасны в ситуации внешних апи.
Что можно делать в таком случае? Есть еще конечно идея, переписать немного сайт так, чтобы внешне он уже не совпадал с тем, что ты делал до этого, но тогда опять же ведь код будет тот же самый.
Как этот вопрос вообще решается в сфере кодеров? Например в тех случаях, когда то, что ты пишешь, это вообще не что-то публичное, и тогда невозможно просто взять и выложить это на всеобщее обозрение, бек там какой-нибудь
Серверный код лучше не транспилировать, так как ошибки из-за трансформаций могут вылететь в копеечку, в отличии от клиентского кода, который в худшем случае просто не заработает.
Дальше YDKJS с отладчиком на вооружении. Кантор - это не более чем ознакомление с темой, его уже давно недостаточно для понимания жс.
Хоть что-то запомнил? Правда интересно
Так это не функционально, ты же не вызвал функцию..
Я вообще не уверен, но Симонс или Симпсонс так говорит
Че ыкаешь, макакен?
Пример сверху не увидел. То есть получается это работает не в случае с функцией, а с условием if?
Какая-то дрочь с этим варом если честно, вообще не логично, хотя Симпсон говорит, что и var и let нужно использовать, хотя для меня проще в начале блока указать let, чтобы область видимости была там, где мне это нужно использовать в дальнейшем по назначению, а внутри блока при необходимости изменять эти данные через конструкции if и так далее.
А вот такую хочу <script src="/build/app.js" defer></script>
Сложности жс именно в уебанских тонкостях работы интерпретатора и необходимости тащить легаси-парашу без возможности просто ее отбросить (а то код в браузерах просто кекнится и перестанет работать)
Забавно кстати когда некоторые прогеры на жс выставляет это все как достоинства блин. Питонисты кстати тоже часто этим страдают
Это просто, но не совсем логично. Зачем мне var, если я могу сделать такой код.
let num = 5;
let num2 = 0;
if(num == 5){
num2 = 10;
}
console.log(num2);
Я хочу явно видить, где у меня эта переменная используется, в моем случае, я получу какое-то стандартное значение, если даже if не пройдет, иначе ReferenceError.
Когда функция создается, у неё сразу же появляется скрытое свойство environment, которое содержит ссылку на внешнее лексическое окружение того места, в котором она была создана, что и создает замыкание.
При этом сама функция содержит скрытый объект Lexical Environment, в котором есть Environment record, с списком всех локальных переенных, и объект содержащий ссылку на внешнее лексическое окружение.
Вопрос! Нахуя функции 2 ссылки на внешнее лексическое окружение, если все функции это всё равно замыкания? Как это работает? Ссылки из environment нужна функции только если она была присвоена какой-то переменной?
>Его не нужно использовать в свежем коде.
Вот с этого я в ахуе каждый раз. Постоянно везде где только можно вижу вар, в новых уроках, от всяких прошаренных спецов, в свежих документациях написанных вчера, везде! Вы что-то от меня скрываете? Почему вар используется везде и по сей день? Ответ о том, что это просто старый урок, код, дока и т.п. совершенно не принимается, поскольку это не так. Тут должно быть что-то еще
Была единственная подозрительная хуйня в конфиге - splitEntryChunks() Я ее вырубил, но после билда нихера не поменялось.
Генераторы нужны в 2к21?
>от всяких прошаренных спецов
Так эти "спецы" или с другого языка вкатываются и по привычке хуярят вар, или писали код до появления даже строгого режима и необучаемые. Особенно проигрываю с яндекса, там как пить дать перемалывают косточки с var/let/const на собесе и прочие пропозалы екмаскрипта, но внутреннее говно будешь на варах и фабричных функциях писать.
Они приконые.
Если let в цикле использовать, то это.. это самое плохое.. потом так и будешь использовать
>Если let в цикле использовать, то это.. это самое плохое.. потом так и будешь использовать
Примерно так весь кодинг и объясняется
Мне не обязательно серия YDK, по Ангуляру там только вопросы, без постепенной подачи материала, которая поможет на практике. Есть книга или сайт какой-то такого же уровня, как и по JS?
Годно, и MEAN стак можно изучить, и RxJs еще. А ты сам брал по Ангуляру, оч хороший, устроился потом куда-нибудь? И если что, можешь аккаунтом поделиться или выгрузить, а то джуну без опыта идти только дворником работать чтобы за пару месяцев на курс накопить.
>>А тебя ебать должно во что там перепахался html?
Ну допустим из разметки я при каком то вызове хендлера должен получить, и не сейчас прям, а через некоторое время. А в это время другой объект может получить элемент DOM из этой разметки и нахуевертить.
Я готов потратить месяцок на пердолинг с книгой, что бы лучше понять как правильно все структурировать.
Вот книгу и спрашиваю. Чето типа "построение корпоративных интерфесов на JS без фреймворков и мокрых писек без смс"
оф дока
считается ли хорошим тоном использовать в тестовом фреймворки типа материала
в тз написано что Используемые технологии: JS, HTML, CSS. JS-фреймворки не запрещены.
у меня от вас генераторы и даже обещания
Не важно, тебя все равно не возьмут на работу, пока ты не напишешь по памяти в блокноте клон гугла. С беком конечно, и всеми сервисами. Но это только для бесплатной стажировки.
Генераторы, долбоеб.
Что за механизм заставляет передавать в функции параметры, как например здесь в методе filter, когда мы делаем этого явно. Ведь мы просто создаём анонимную функцию, которая ждет, что в нее будет передан параметр. Как фильтр передает в эту функцию текущий элемент массива? Как это называется? Где прочитать?
фильтр возвращает массив готовый массив, элемент массива передает стрелочная функция
аргумет с массивом парсится в множество аргументов для функции
можешь представить это как обычный цикл for
>Ну допустим из разметки я при каком то вызове хендлера должен получить, и не сейчас прям, а через некоторое время.
Хендлер будет вызывать связанный метод с твоим состоянием, все модификации дома за пределами этих методов будут считаться невалидными для состояния.
>А в это время другой объект может получить элемент DOM из этой разметки и нахуевертить.
Чё ты вообще несёшь? Какой другой объект? Поконкретней юзкейс приведи, а то получается, что ты не можешь управиться с домом даже на своей странице.
>Я готов потратить месяцок на пердолинг с книгой, что бы лучше понять как правильно все структурировать.
Нет такой книги, так как пока её будут писать, то советы в ней устареют. Касается в принципе всех книг по жс, кроме самых общих.
>Вот книгу и спрашиваю. Чето типа "построение корпоративных интерфесов на JS без фреймворков и мокрых писек без смс"
Никто не будет эту книгу писать. Человеку, на это способному, проще свой фреймворк создать и пропихнуть, чем вкатунов учить.
ебать с такими вопросами иди документацию джаваскрипта читай и гугли на тему как работают языки программирования
Ну т.е. если мы передаем в функцию параметр явно, например:
func(5);
Это понятно, а когда мы не передаем в функцию аргумент явно, то каким образом он туда передается? Я не спрашиваю как работает метод фильтр, это просто пример.
Потому что вот здесь someArr.filter(arrElement => arrElement.length > 1), откуда анонимная функция берет этот arrElement? Что передает к примеру в данном конкретном случае текущий элемент массива в эту функцию?
>документацию джаваскрипта читай
С радостью, вот бы только знать, где там об этом написано
>Ну т.е. если мы передаем в функцию параметр явно, например:
Но ты не передаёшь функцию здесь, а только результат её вызова.
Я тоже так думал, когда 5G еще только в головах у людей был.
Суть такова скорость веба по другому работает, нежели скорость передачи данных по сети. Фильмы может будешь качать быстрее, но странички быстрее своего максимума открываться не станут.
Откуда тогда сама эта функция берет аргумент для себя? Я же нигде этот аргумент в неё не передаю. arrElement ведь каким-то образом сам подставляет в себя текущий элемент массива. Как?
Ну есть же типа всякин http2 или еще че
>>69021
Все эти фреймворки нужны не для уменьшения трафика, а для во первых более быстрой работы страниц в самом браузере. Потому что то, как браузер оперирует элементами DOM по дефолту, это очень долго. Второе - SPA. Сам по себе браузер не может оперировать страницей так, как будто бы ты работаешь с приложением. Для этого и нужны фреймворки. Вот две этих основных задачи и выполняют фреймворки/библиотеки. Все остальное вторично
>интернет космических скоростей
Абсолютно однохуйственно после того, как страница и весь контент загрузились.
>на пекарнях майнят
Майнят на видеокартах, а жабаскрипт, однопоточный синхронный язык, работает на процессоре. На котором ещё вся остальная система работает, включая браузер, в котором этот жабаскрипт запускается.
>нахуя все эти библиотеки реакты вью редаксы графкли , неудели нельзя пилить сайты как раньше ?
Ты залётный что ли? Библиотеки эти нужны, чтобы хуяк хуяк и готово быстрее приближать. Попробуй любой компонент средней сложности писать без какого-нибудь шаблонизатора, даже на условном жикверике быстро завоешь волком и побежишь в цирк выступать.
Потому что блять он ожидает в аргумент функцию с конкретным аргументом. Учи замыкания, чтобы не быть баттхёртом. А ещё лучше напиши отдельную функцию, которая должна колбэком в arr.filter() идти, а не инлайнь её анонимкой, там сразу всё поймёшь.
Почитай про rhs и lhs
Бля, он передаёт ВЫЗОВ функции, которая возвращает функцию, подходящую параметрами как колбэк для фильтра. Тут тебе уж точно надо учить захват переменныхзамыкания.
>Учи замыкания, чтобы не быть баттхёртом.
В данном случае не замыкания, а коллбеки ведь, вот лишь бы спиздануть
Francesco Strazzullo - Frameworkless Front-End Development_ Do You Control Your Dependencies Or Are They Controlling You_ (2019, Apress)
Я тебя сейчас ударю нахуй. Каким образом это относится к замыканиям сука? Замыкания - способность функции запоминать ссылку на внешнее окружение при её создании. Как этот факт объясняет то, что в Х попадает текущий элемент массива?
Тоже сгорела от них жопа. А там еще всякие связки генераторов с промисами и прочее. И про async/await автор упоминает лишь вскользь, хотя как я понял они руинять всю эту хуйню с генераторами и делают их по сути нахуй не нужными.
Я вроде как расчитался, читаю просто бегло, че не понимаю - похуй, читаю дальше, автор хорошо от абзаца к абзацу объясняет, если не понял с первого абзаца есть впереди еще три или четыри, он там свои мысли по кругу гоняет, короче просто дочитывая уже вкуриваешь че он хочет сказать. Норм. Яже не жалуюсь в принципе.
Начать просто было тяжело.
>хотя как я понял они руинять всю эту хуйню с генераторами и делают их по сути нахуй не нужными
Мякотка в том что ты можешь писать свои запускаторы генераторов, которые необязательно запускают промисы. Посмотри redux-saga например
Потому что аррей это объект, и у него есть проперти, в которых он хранит все что нужно и передает в колбеки если надо
class Array {
..items = [...];
..filter = (callback) => {
....for (let item of this.items) {
......callback(item);
....}
..}
}
Библия
>>69027
Вы так говорите будто реакты-редаксы ускоряют загрузку или скорость работы страниц а не наоборот.
Только благодаря как раз таки скорости современного интернета и тому что у каждой собаки 3ГГц и 16 памяти современные фреймворки и существуют. SPA на реакт ты вообще хуй запустишь на каком-нибудь старом говне мамонта.
Для мальчиков, книга для мальчиков так и загугли.
Они работу самого сайта ускоряют, а не загрузку. Работу сайта, когда он уже загрузился. Если у тебя там одна страница буквально без каки-то интерактивных элементов, то тебе фреймворки не нужны
Хуй знает о чем ты, я говорю что скорость загрузки сайтов на компе через оптоволокно уже максимальна если у тебя 100МБ канал.
Ускорить загрузку помогут только - новые версии веб апи, новые браузеры, новые мощные сервера с хорошим откликом.
Для мобилок 5g нужен потому нужен что бы принимать без потерь волн - частоту, она более мощная чем предыдущие и интернет стабильнее будет, и скажем на мобилке условия будут приближены к стационарным пека с оптоволокном, не более.
>>Никто не будет эту книгу писать. Человеку, на это способному, проще свой фреймворк создать и пропихнуть, чем вкатунов учить.
Ну да, то то в джава мире половина книг это "строим корпоративные приложения". Вторая - шла фабрика через абстрактную фабрику к цепочке обязанностей.
>>Чё ты вообще несёшь? Какой другой объект?
Конкретней - другой прогер, решил доработать клиентский код на странице, читать что я там нахуярил и как оно работает - он в рот ебал. (Я хоть разообрался как вебпак работает, и +\- по классам все раскидал, но все же лапша.)
Написал он свой обработчик, который чето где то меняет html того элемента разметки на котором у меня висит обработчик. А у меня мой обработчик хуиту начал возвращать.Типа такого. Я не особо могу сформулировать, потому что из юз кейсов у меня пока - нихуя особого.
Просто после бэка с его ооп и прочим стремлением к низкой связности, меня беспокоит что состояние html элементов, из которых какие то обработчики могут данные тянуть - могут быть изменены хуй пойми как и кем.
Полагаю это хуйню либы типа реакта и решают.
Если че не батхерти, а то у вас в треде конечно клоунада
>Все остальное вторично
Чет я думаю что то о чем ты пишешь - вторично.
Первично структурирование кода, но я могу ошибатсья
И откуда этот колбэк берёт значения для сравнения?
Структурировать код можно и без фреймворка, но да, это то, что фреймворки делают очень хорошо
>Написал он свой обработчик
Ну если он трогает чужие элементы то очевидно же что распидорасит.
>после бэка
По аналогии, тебя не беспокоит что соседний сервис насрет тебе в базу в обход твоей бизнес логики?
>Вы так говорите будто реакты-редаксы ускоряют загрузку или скорость работы страниц а не наоборот.
Они скорость разработки ускоряют. Просто блять нахуячь какую-нибудь карточку товара с несколькими обработчиками на срякте, а потом напиши эквивалент на чистой ванилле без всяких хаков с инсертами шаблонных строк и сравни затраты времени.
>>Ну если он трогает чужие элементы то очевидно же что распидорасит.
Короче это вещь которую нужно принять как факт.
>>По аналогии
Я об этом думал, конечно сторонний сервис может мне данные поменять, но структуру то не изменит. Не типы данных, ни количество полей.
Тут же сторонний скрипт может тупо разметку удалить вообще. Ладно, я понял, спасибо.
Охуеваю ебаться с постоянными обращениями к дом, и блять залупой с навешиванием/убиранием обработчиков нна элементах которые динамически создаются и удаляются.
Хорошо хоть шаблонизатор хенделбарс жизнь облегчил пиздец.
Но вообще поебусь еще пару недель, да закачусь в реакт. Мне не SPA пилить, а всякие сложные формы с динамически подгружаемыми данными нужны.
>>69109 - кун
>Ну да, то то в джава мире половина книг это "строим корпоративные приложения". Вторая - шла фабрика через абстрактную фабрику к цепочке обязанностей.
Это конечно хорошо, но мы говорим о жаваскрипт мирке, в котором за год может родиться и помереть целый фреймворк вместе со своими идеями. А неумершие могут полностью поменять парадигму, как например реакт с классов на хуки. Или выйти новая мажорная версия бандлера, с которой половина старых либ не дружит.
>Я не особо могу сформулировать, потому что из юз кейсов у меня пока - нихуя особого.
Берёшь html, лепишь на него элементы, через скрипт вешаешь на них обработчики и смотришь на результат.
>Полагаю это хуйню либы типа реакта и решают.
Реакт это дело не совсем решает, он больше как клиентский шаблонизатор, но конкретно что ты хочешь сделать - флюксо-подобное управление состоянием. И редукс является одной из реализаций этой парадигмы. И он не является частью реакта, хоть его часто в реактоподелия и пихают.
>>Но вообще поебусь еще пару недель, да закачусь в реакт. Мне не SPA пилить, а всякие сложные формы с динамически подгружаемыми данными нужны.
Бля, и в тоже время я навелосипедил нативным js такой уютный пагинатор загруженных данных, переход по страничкам результата - это ajax запросы. Было прикольно его васянить.
>Нахуя городить все эти замыкания, если можно передавать в функцию просто больше аргументов?
Какие больше аргументов в колбэк фильтра, если он ожидает колбэк с определённым количеством аргументов?
Кайл Симпсон "Ты не знаешь Javascript, мразь!"
Ну типо несколько раз назначить внутренние функции, хз вообще как это называется r = k(0); s = r(1) d = s(). Ну а я типо прост беру и делаю r = k(0); s = l(1); x(r, s).
В любом случае, нахуя нужны замыкания? Нипанимат.
Расскажите плез, где можно достатать весь список методов и вообще всего из чего состоит Реакт. На самом сайте Реакта в документации все этим методы как-то не структурированы, вплетены в графоманию.
Вот это верно.
И это единственное что современные фреймворки ускоряют, в угоду всего остального.
Но как только производительность начинает вставать серьёзной хронической проблемой (например объём данных в редаксе того же порядка что объём памяти на устройстве) все внезапно охуевают от точно что пути назад в ванилу уже нет.
Ты и так возвращаешь функции, так что не более изъёбисто.
В теле этих функций один хуй будет что-то типа `return function(x)`;
Всё равно нихуя не понял. Почему нельзя через пикрелейтед всё делать? Если через return function(x){}, то меньше памяти и что-то с оптимизацией связанное?
Твой пример никакого отношения к теме не имеет.
Пример с фильтром можно было переписать как
const filter = inBetween(3, 6);
arr.filter(predicate);
Но тогда было бы слишком понятно.
Ну так я спрашиваю, нахоя нужны эти замыкания, если можно и без них?
В случае фильтра, я просто делаю filtered = function(a, b, arr){};
>Ну так я спрашиваю, нахоя нужны эти замыкания, если можно и без них?
Чтобы не городить аргументы.
Когда засовываю его в некий контейнер то текст высирается в одну строку (конечно, пробелов-то нет), как заставить его делать переносы по строкам и уместиться в контейнер? Возможно кстати тут даже без жс обойтись выйдет
Тем что это тяжело поддерживать и функции становятся тяжелыми, зависимыми от кучи аргументов.
В примере с фильтром, предикат (функция, которая фильтрует элемент) можно переиспользовать в другом фильтре. Или объединять с другими предикатами. Или передавать как аргумент в другуюфункцию. И так дальше.
>как заставить его делать переносы по строкам
Каким строкам, если у тебя в тексте строк и переносов нет? Он должен за тебя распарсить текст и лайнбрейки вставить по смыслу или что?
>и уместиться в контейнер
Текст всегда умещается в родительский контейнер по умолчанию, тут уже надо спрашивать что ты с этим контейнером сделал, что у тебя не умещается.
Функция должна делать что-то одно хорошо.
Твой пример сверху вообще-то не просто "фильтр", это комбинация из нескольких операций. Больше-равно, меньше-равно, "и" и фильтр.
const smallerThen = (x, y) => x < y;
const biggerThen = (x, y) => x > y;
const both = (fn1, fn2) => (...args) => fn1(...args) && fn2(...args);
const inBetween = both(smallerThen, biggerThen);
// ...
arr.filter(inBetween(3, 6))
К счастью, многие вспомогательные функции уже написаны до нас, т.к. они постоянно используются. Ramda.js популярная библиотека сейчас, с помощью нее вышенаписанное можно написать сразу
const array = [1, 2, 3, 4, 5, 6, 7, 8];
filter(both(lte(3), gte(6)), array) // [3, 4, 5, 6]
Нужен ли подобный подход каждому проекту? Нет, для туду листа на реакте можно хоть через for цикл нахуярить. Но на больших проектах переиспользование функций уменьшает количество кода и позволяет делать его более выразительным и проще поддерживаемым.
Кроме того, подобный подход улучшает твое качество кода, ты пишешь меньше процедурных портянок и код становится более абстрагированным, когда ты начинаешь использовать функции как аргументы. Тогда и становится понятно, что без замыкания на ДЖС писать вообще было бы невозможно, пожалуй.
Сам спросил, сам нашел ответ, в общем Денчик порешал, что нет, нахуй нам не нужон этот ваш эвент делегирование https://github.com/facebook/react/issues/13635
У тебя на скрине не байты, а числа в десятеричной системе, которые ты используешь как свойства объекта.
Теперь по крайней мере понятно почему ты ничего не понял про функции и замыкания, JS еще учить и учить. Алсо судя стилю письма тебе не больше 18 лет.
>простые, более понятные
Нет. Когда-нибудь возможно ты попадешь в большой проект и поймешь почему твои выглядящие "просто" бредовые идеи на самом деле говнокод.
>более производительные
Да. Но в 99% случаев разницы между наносекундами погоды не сделают, если только ты не пишешь под микроконтроллеры.
Пашел на хуй
Ты и так делаешь сорт оф делегирование, передавая колбэк потомкам.
Как-то раз, 5 минут назад, забавы ради, зашёл в доку ramba. Функциональненько так, сигнатурки красивые вся хуйня. Есть вот, к примеру, функция toUpper, её исходник это мягко говоря пиздец. Оно ведь сложно ради ничего!
Вопрос зачем и нахуя?
> её исходник это мягко говоря пиздец
https://github.com/ramda/ramda/blob/v0.27.0/source/toUpper.js
Там ровно одна строчка кода.
Катись обратно
> У тебя на скрине не байты, а числа в десятеричной системе
Именно так в жс байты используются, лол. Просто массив в число (если нужны преобразования ради надёжности, например) или строку хуяришь и всё. Ты же массивы не можешь сравнивать. Естественно нужен еще один словарь длин и цикл преобразования бинарных массивов, которые примерно так же будут работать.
> которые ты используешь как свойства объекта.
Кстати, а это нормально вообще, так переменные в объектах назначать? Выглядит кросиво, бохато, но как-то неприятно. Оно же просто как ссылки на буферы памяти используется, да?
> Теперь по крайней мере понятно почему ты ничего не понял про функции и замыкания, JS еще учить и учить.
Не понимаю зачем они нужны. Нужно практическое применение, но на практике это лишний говнокод с говноконтекстом и падение производительности. Мне кажется даже вот такой словарь с функциями будет медленнее простой портянки сравнения строк через if. Но это не точно, объекты это центральное свойство жс, возможно интерпретатор тут всё же использует высокоэффективный код.
> Алсо судя стилю письма тебе не больше 18 лет.
Меньше фантазируй.
> Нет. Когда-нибудь возможно ты попадешь в большой проект и поймешь почему твои выглядящие "просто" бредовые идеи на самом деле говнокод.
Не, говнокод это когда ты читать не можешь и не вкуриваешь сколько контекста функция принимает и где, например. Или что она храниться в памяти всегда. Это реальный говнокод, когда сайтик хуево работает на i5.
> Да. Но в 99% случаев разницы между наносекундами погоды не сделают, если только ты не пишешь под микроконтроллеры.
Речь шла про сурьезное программирование, в котором огромное кол-во функций и их переиспользования. Очевидно ни про какие наносекунды речи не идёт уже, а модули работают уже микросекундное время.
Какие функции почему вебпак не видит мой экземпляр класса че за хуйня
Хотя в другом проекте точно также объявляю и все работает
Он создаёт каждый раз новую область видимости, т.е. каждый раз будет работать scope.h, каждый раз будет работать аллокатор.
Для for(let ; ; ) это нормально, но если ты будешь внутри цикла что-то там создавать объемное.... Боюсь говнокод v8 к таким нагрузкам еще не готов....
Плохо, что сказать. У меня ОЧЕНЬ много кода когда я так делаю, ещё больше в forEach... А какая альтернатива есть тогда? Я не вижу чтобы тормозили проекты мои, но всё же.
Сап, программач. Очередной вкатывальщик с очередной тупой проблемой. Подключил файл со скриптами в <head>, написал простенькую херню по аналогии с тем, что когда-то писал на делфях, но в результате получаю пикрил. Может я чего-то не понимаю и функции в жс, например, не могут содержать больше одной строки кода?
Если по факту - то это хорошо, я ради этого и пришёл.
Google://js function syntax
Используй const или let для переменных.
Выведи копипастный код в отдельную функцию.
Скобеи у теья непрааильно расставоены и не закрыиы.
А в целом у теья тут новнокод, поэтому ты и не понимаешь ничего.
Говно и моча. Хочешь быстро вкатиться что бы писать по мелочи учи jquery, хочешь нормально выучить язык читай все что в шапке., книги, доку. И свою хуйню больше не кидай, пока хоть одну книгу не прочтешь.
Да ничего не делай, всем похуй, память резиновая.
Альтернатива - дрочи архитектуры при которых в циклах переменные не объявляешь. Хз где про это читать даже и к чему это относится.
Что за тег скрипт в js файле? Чо началось то?
Все у тебя нормально, ты забыл фигурные скобки для функции
Тоже так делал когда вкатывался, сейчас вообще охуеваю вспоминая откуда у меня силы брались на такую дисциплину.
напердолил уже несколько сложных приколюх на реакте без всяких редуксов, полёт нормальный
есть мнение что сам редукс лучше не использовать а использовать либы использующие редукс
>A single instance of Node.js runs in a single thread. To take advantage of multi-core systems, the user will sometimes want to launch a cluster of Node.js processes to handle the load.
>Именно так в жс байты используются, лол. Просто массив в число (если нужны преобразования ради надёжности, например) или строку хуяришь и всё. Ты же массивы не можешь сравнивать. Естественно нужен еще один словарь длин и цикл преобразования бинарных массивов, которые примерно так же будут работать.
Екмаскрипт ему дал типизированные массивы для байтоёбства, пердолься на здоровье. Говорит, не хочу пердолиться нормально, хочу жрать говно и костылить псевдобайтоёбство высокоуровневыми конструкциями.
>Это реальный говнокод, когда сайтик хуево работает на i5.
Давай рассказывай, как тебе ш5 поможет для рантайма синхронного однопоточного языка.
короче все было из-за того что вебшторм создал мой файл с классом жсным, но в конце не было .js
и вот из-за этой хуйни вебпак его не видел
Документацию прочитал бы, там есть объекты которые позволяют запускать доп- процессы на ядрах.
Первый компонент принимает в качестве пропса функцию с аргументом и типом возврата, второй принимает без аргументов и возвращает нихуя, в остальном они похожи.
Пока что я написал 2 интерфейса:
interface One {
//blahblahblah
myFunc(abc: string) => number
}
interface Two {
//blahblahblah
myFunc() => void
}
и в пропсах: const Component = ({...blahblahblah, myFunc}: One | Two): JSX.Element => {}
Это норм?
И как можно проверить, какому интерфейсу удовлетворяют полученные пропсы? Я хотел бы на основании этого подключать другие стили.
>Екмаскрипт ему дал типизированные массивы для байтоёбства, пердолься на здоровье. Говорит, не хочу пердолиться нормально, хочу жрать говно и костылить псевдобайтоёбство высокоуровневыми конструкциями
Дрочился с этими массивами на ноде, пока васянил свою реализацию вэб-сокетов. Интересно
А там разве json строкой срать нельзя? Не первый раз вижу всякие костыли вокруг ws.
Серьезно блять? Пиздец. Почему для этого не предусмотрели функцию? То есть даже костылями нельзя проверить, всегда придется руками передавать тип? Пиздец блять.
Хуета, берешь массив, потом считаешь количество хуеты в массиве.
если аргументов 4 то срешь говном, если 5 то жидко и вонюче пердишь и т.д.
Я дрочился с передачей бинарных файлов через сокеты. Картинки например. Чисто велосипедостроение. Там много всякого, мим-типы.
Отправил клиент бинарным потоком через сокет картинку - сервер принимает этот поток. Там много интересного пердолинга.
да, но можно заспавнить 10 процессов и посадить их по разным портам, но тут нужно писать балансировщик
ты про ОС?
Нет. У каждого инстанса ноды под копатом пул потоков, который используется для операций ввода вывода.
Веб воркеры это тоже отдельные треды.
Треды по логическим иядрам рапсредялет ОС.
interface Props {
//blahblahblah
myFuncOne?: (abc: string) => number;
myFuncTwo?: () => void;
componentType: "TypeOne" | "TypeTwo"; --Это типо литерал стринг тайп или как-то так
}
В пропсах перечислены все возможные варианты, т.е. и myFyncOne и myFuncTwo. Это норм?
В самом компоненте есть onClick обработчик. Я хочу, чтобы в зависимости от componentType onClick был либо myFuncOne либо myFuncTwo, это норм, если я сделаю useState, в проверку типа в If, в зависимости от которой будет либо state=myFuncOne либо myFuncTwo и уже стейт будет передоваться в onClick.
Это норм вообще? Выглядит костыльно. Или лучше было бы не ебать мозг и оставить 2 компонента, которые отличаются 1й функцией?
Бля, проиграл с нюфани, который 2 + 2 научился складывать, и теперь хочет "чего то применяемого в дела"
Там нет ничего хорошего. Почти для каждой темы что я ответственно прошёл и из которой пробовал решать шизо задания я после гуглил/смотрел выборочно у чувака из курса с юдеми.
А зачем на усредненом фронте ООП,асинк,коллбеки,объекты,если надо учить практич манипулирование DOM ом
>ООП
хз
>асинк
Запросы по апи.
>коллбеки
Бывает иногда нужно.
>объекты
Ебанулся?
>если надо учить практич манипулирование DOM ом
Манипулирование домом из ванили - мозгоебство.
Ты вкатывальщик? Освоишь Кантора, потрать день/два на чисто на верстку, затем недельку/две на реакт/вью/ангуляр и иди на собес уже
План примерно такой и был, но спустя 3 часа мозгоебли над сабжем я реально бугуртнул. Пойду прогуляюсь, наверну кофе и может пересилю себя да добью этот ужас.
Сдался в рабство тс-комплиятору по надуманной причине и под веянием моды - терпи, хули еще тебе делать. Жс-господа тем временем наслаждаются свободой без анальных пробок и передают в функции что хотят.
ТС это охуенно. Когда я писал на жс всегда получалась лапша ебаная вместо кода, а теперь я боле-лименья доволен собой.
Запили проект просто, да и узнаешь, что нужно на практике. Какой-нибудь просмотрщик 3D моделей на three. И опыт, и портфолио.
Вообще забей на мерж всего двух функций, особенно если нужно пихать литералы в аргументы. Это они сейчас отличаются только одной функцией, потом захочешь чего-нибудь ещё подкрутить в одном компоненте и это будет намного сложней сделать.
Теперь у тебя получается лапша кода вперемешку с лапшой типов?
Большинство ошибок возникают после компиляции, во время работы с апи и тд.
ТС не поможет тебе защититься от них. Но как инструмент для выработки правильных привычек в написании кода тс гуд
> План примерно такой и был, но спустя 3 часа мозгоебли над сабжем я реально бугуртнул.
Если где конкретно тупишь - юзай ютуб. Просто на джуновских собесах обычно ебут именно за самую базу за css спрашивали больше чем за реакт
> Пойду прогуляюсь, наверну кофе и может пересилю себя да добью этот ужас.
Норм, главное потом вернись за обучение
Можно ли как-то обратиться к одному объекту апи если там нет айди (есть уникальный таймстамп)
>Но как инструмент для выработки правильных привычек в написании кода тс гуд
Я об этом и говорю.
Забыл добавить что и документации никакой нет, это просто набор объектов в жсоне и я хочу по ссылке или как-то ещё подучить один объект
Они же нумеруются от 0 до конца
Ну значит парси весь джейсон в массив и по нему пробегайся. Альтернатива - смотреть исходники сервака.
Прежде чем писать типы расскажи, как ты без componentType собирался определять будешь ты передавать в одну общую функцию аргумент или не передавать в одну общую функцию аргумент
Никак, очевидно. К чему эти вопросы? Меня больше интересует вот эта часть:
>В пропсах перечислены все возможные варианты, т.е. и myFyncOne и myFuncTwo. Это норм?
В самом компоненте есть onClick обработчик. Я хочу, чтобы в зависимости от componentType onClick был либо myFuncOne либо myFuncTwo, это норм, если я сделаю useState, в проверку типа в If, в зависимости от которой будет либо state=myFuncOne либо myFuncTwo и уже стейт будет передоваться в onClick.
кинь посмотреть
К тому что нужно ли оно, или есть уже другое (возможно вычисляемое) поле
Не над пихать пропсы в стейт
> Екмаскрипт ему дал типизированные массивы для байтоёбства, пердолься на здоровье. Говорит, не хочу пердолиться нормально, хочу жрать говно и костылить псевдобайтоёбство высокоуровневыми конструкциями.
Так из uint8 всё равно словарь придется делать, о чем ты нахой. Мне больше интересно эффективно ли хранить словарь в объекте.
> Давай рассказывай, как тебе ш5 поможет для рантайма синхронного однопоточного языка.
Система загрузку приложений на несколько ядер распределяет. И жопаскрипт будет на одном из. И желательно чтобы он не сжирал своими замыканиями и прочим говнокодом всё ядро.
>Система загрузку приложений на несколько ядер распределяет.
Ядра с потоками путаешь.
>И желательно чтобы он не сжирал своими замыканиями и прочим говнокодом всё ядро.
Ты конечно же тесты проводил, что твой говнокод дохуя быстрый без замыканий, да?
Ну, как-то так у меня и получилось. Я смотрю ты шаришь в реакте. Где можно вообще бест практис почекать по реакт + тс? И стоит ли ебать себе мозг с ворнингом об exhaustive deps с хуком юз эффект, если я 100% уверен, что все норм, просто эта хуйня глаза мозолит.
> Ядра с потоками путаешь.
Не суть, не суть. Суть в том что даже хром нагрузку по ядрам распределяет.
> Ты конечно же тесты проводил, что твой говнокод дохуя быстрый без замыканий, да?
Это в руководстве мозилы по замыканиям написано.
>>70114
П.С. А вообще я вот что хотел:
Без передачи в пропсы type вычислить, к какому типу принадлежат пропсы. Типо:
type Props = X | Y
props: Props
И дальше блять я точно не знаю, вроде я чет такое читал на typescript.org
Идет проверка, удовлетворяет ли props интерфейсу X, и если да, то выполняется какой-то код. Блять надо посмотреть, что-то такое там точно было. И никаких дополнительных type= в компоненте не надо.
>Суть в том что даже хром нагрузку по ядрам распределяет.
Хром ничего "не распределяет", что ему система даст, то и будет жрать.
>Это в руководстве мозилы по замыканиям написано.
Наркоман, там только пример с фабричными функциями приведён, который перерос в классовый сахарок в свежем жс.
> Хром ничего "не распределяет", что ему система даст, то и будет жрать.
Че несешь, ты поехал что ли. Он давно уже вкладки по потокам и ядрам распределяет.
> Наркоман, там только пример с фабричными функциями приведён, который перерос в классовый сахарок в свежем жс.
У тебя шиза началась. Буквально.
> > It is unwise to unnecessarily create functions within other functions if closures are not needed for a particular task, as it will negatively affect script performance both in terms of processing speed and memory consumption.
>Идет проверка, удовлетворяет ли props интерфейсу X, и если да, то выполняется какой-то код
type guards
Но в них тоже надо что то чекать, типов то в рантайме нету
>Че несешь, ты поехал что ли. Он давно уже вкладки по потокам и ядрам распределяет.
Кого он тебе распределяет, наркоман? Он вкладки в отдельных процессах создаёт, а как эти процессы будут насиловать ядра и потоки решает система.
>It is unwise to unnecessarily create functions within other functions if closures are not needed for a particular task
Долбоёб.
Блять, да я ебал. Сложно было было что ли изначально типизацию к языку прикрутить. Пиздец блять боже, как же я завидую всяким сишарпам, где все няшно и изкаробки.
> Кого он тебе распределяет, наркоман? Он вкладки в отдельных процессах создаёт, а как эти процессы будут насиловать ядра и потоки решает система.
Создание вкладок в отдельных процессах это и есть распределение. Подходит немношк.
> Долбоёб.
> if closures are not needed for a particular task
Так вопрос с этого начинался.
Нахуя нужны замыкания на практике? В какой такой практической задаче (напоминаю, let уже изобрели) замыкания понадобятся и без них (напоминаю, любую рекурсию можно в цикл разложить) жить нельзя?
Тебе похоже чуть побольше надо из компонента вынести чем одну функцию. Но без примера тут хз
>Создание вкладок в отдельных процессах это и есть распределение.
Вкладки создаются, чтобы память хорошо сжиралась, а не для каких-то волшебных многопоточных оптимизаций.
>Нахуя нужны замыкания на практике?
Ты даже типичную промисифированную реализацию таймаута без захвата переменныхзамыканий не напишешь. Да и любую любой враппер в принципе.
>(напоминаю, любую рекурсию можно в цикл разложить)
В цикл можно хоть твою мамашу разложить, вот только не каждая реализация рекурсии циклом сохраняет оригинальную читабельность.
>Нахуя нужны замыкания на практике?
Зачем промисы если есть колбэки?
Зачем вообще колбеки если можно просто в цикле чекать интерапты
Нахуя ваши циклы, я могу просто goto!
Это я подсмотрел уже в готовых решениях как вывести итоговый результат. Поэтому и не понимаю.
Есть функция которая делает некое вычисление, в этой функции есть абстрактный(?) параметр sum
И только если в конце объявить что um(menu), то typeof выдаст мне желаемый результат. Что происходит когда срабатывает это um(menu)? из объекта menu подставляются данные?
происходит 8-12 строка, нажми брейкпоинт в дебаггере да посмотри по шагам что происходит если читать не умеешь
захуй она нужна, чтобы проблемы на ровном месте создавать?
>В цикл можно хоть твою мамашу разложить, вот только не каждая реализация рекурсии циклом сохраняет оригинальную читабельность.
Можешь забить, чел живет в своем шизомире Даннинг-Крюгера т понятия не имеет как работает JS.
Рамда в исходниках сложная чтобы соблюдать каррирование каждой функции и выжимать перфоманс (многие функции под капотом там через while написаны)
Вообще-то сложно, типизация это отдельная сложная область. У тебя мало опыта просто.
> Вкладки создаются, чтобы память хорошо сжиралась, а не для каких-то волшебных многопоточных оптимизаций.
Не суть, не суть. Главное что вкладки не в одном потоке и не на одном ядре работают.
> Ты даже типичную промисифированную реализацию таймаута без захвата переменныхзамыканий не напишешь.
А зачем нужен таймаут в промисах? Таймаут ведь имеет колдблек.
Промисы тоже ненужны, они создавались когда вебворкеров не было и изобретали шизофрению с псевдоасинхронностью. Сейчас же чисто поебать на блокирование потока которому предначертано быть блокированным и асинхронным.
> Да и любую любой враппер в принципе.
Вот тут точно нет необходимости в замыканиях.
> В цикл можно хоть твою мамашу разложить, вот только не каждая реализация рекурсии циклом сохраняет оригинальную читабельность.
Проблемы говнокодеров.
>>70173
Вот действительно, зачем нужны промисы, когда есть коллбеки и нормальная асинхронность? Ну почти нормальная, изменения dom и так отделены фреймворком, так что похуй.
>>70238
Ну так я и спрашиваю зачем это всё нужно, че объяснить-то сложно что ли.
Алсо, на пике буквально единственная хуйня, которую хоть как-то можно прикрутить к использованию, за счет того что оно промисы возвращает и имеет в себе try...catch. Но даже оно заменяется обычным куском кода и try..catch.
>Сейчас же чисто поебать на блокирование потока которому предначертано быть блокированным и асинхронным.
ты чё несешь поехавший.
А рендеринг у тебя в браузере когда происходит, если у тебя поток все время блокирован?
>Не суть, не суть. Главное что вкладки не в одном потоке и не на одном ядре работают.
В этом-то и ссуть, что вкладко-процессы не из-за мифических оптимизаций добавили, а чтобы браузер не крашился при достижении 2ГБ/4ГБ памяти. Про охуенные многопокпоковые оптимизации уже после придумали, чтобы оправдать пожирание памяти.
>А зачем нужен таймаут в промисах? Таймаут ведь имеет колдблек.
Бля, ты долбоёб. Колбэки как раз насильно заставляют скоупы для замыканий плодить.Если ты конечно не любитель анонимки пихать в колбэки. Но тогда твои пуки про производительность ничего не стоят.
>Промисы тоже ненужны, они создавались когда вебворкеров не было и изобретали шизофрению с псевдоасинхронностью. Сейчас же чисто поебать на блокирование потока которому предначертано быть блокированным и асинхронным.
Земля тебе пухом, братишка. Интерфейс вебворкеров по дефолту на колбэках работает (а значит больше замыканий), не разделяет контекст с основным потоком и не может в конструкции, не представляемые джейсоном. То есть для всех небайтоёбских операций он добавляет оверхед в виде конвертаций сообщений на обоих концах. Да и требует ассинхронного взаимодействия, на заблоченном потоке ты даже воркеров не сможет пропукать.
>В цикл можно хоть твою мамашу разложить, вот только не каждая реализация рекурсии циклом сохраняет оригинальную читабельность.
Что ты несешь, поехавший, рекурсия - это нечитабельный антипаттерн, которого нужно избегать всеми силами. Дрочат на него только вкатывальщики в ФП, которые написали свою первую функцию для чисел Фибоначчи, либо жсеры, которые реального ФП и его подходов в глаза не видели, и думают что ФП ЭТА КАГДА ФУНКЦИИ ПИШЫШЬ
Подскажите, как работают побитовые операции в данной функции сложения? Чет не совсем догоняю этих хитростей побитовых.
function add (x, y) {
while (y != 0)
{
var carry = x & y;
x = x ^ y;
y = carry << 1;
}
return x;
}
В общем, хотелось бы получить более ли менее подробное объяснение.
>var
Начитался, блядь, двачей.
Где хитрости то?
Сложение столбиком помнишь? Тут тоже самое, только в двоичной системе
x' = x ^ y складываем каждый разряд по модулю 2, в десятеричной ты складываешь по модулю 10
y' = (x & y) << 1 каждый разряд который у обоих чисел равен 1 переносим в старший
Очевидно, что x + y == x' + y'
Что непонятного то?
Нахера каунтер, когда можно return false при первом же не совпадении?
И да просто сравни с реверсной строкой
Кирпичный конечно
Ироничный try catch с колбеками
Укатывайся к себе в пхп тред, жс - язык для господ.
В общем, функция должна возвращать массив с объектами, которые собираются внутри функции из массива с ключами и массива с массивами данных.
Моя хуйня возвращает массив с тремя одинаковыми объектами, значения которых взяты из последнего массива.
ну да проебался с каунтером, да и итерировать там полмассива можно было. а просто сравнивать я не хотел
ty
>Моя хуйня возвращает массив с тремя одинаковыми объектами
Нет, это один объект. Тебя не смущает, что ты не создаёшь новые объекты?
Так трудно вместо i и j как-то осмысленно называть переменные? Ты три раза засунул один и тот же объект в массив, чего ты ожидал увидеть там?
Всё, понял. Спасибо.
>изменить в коде мб или типа того?
ну хуй знает
'race car'.match(/[^\s]/g).every((e,i,a) => e === a.reverse())
В js нет встроенной функции reverse для строк, приходится так, да.
Ну а в функцию мне было лень оборачивать
>В js нет встроенной функции reverse
https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Array/reverse
Блять, читаю по диагонали, короче. Нахуя тебе реверс для строки, если ты получаешь массив из регулярки.
Нужно getом забирать данные с бэка пока не придет stop в json
пагинации нет, данные приходят так называемыми пачками (batch)
Тоесть пришел ответ 10000 items, stop:false значит не весь, stop:true может быть когда придет 1000000 items
Понятно что ждать весь ответ не вариант, нужно показать юзеру результат уже из первой пачки
Проблема в том, что когда еще не все пачки загружены, юзер уже должен иметь возможность имеющееся данные отфильтровать
тоесть у меня в стэйте будет отфильтрованные данные в одной пачке, но с сервера следующая пачка придет неотфильтрованная
Как я думаю сделать:
если фильтр выбран применить его к уже загруженным данным, произойдет ререндер и они отобразятся в соответствии с условиями фильтра, это понятно
но нужно будет также начать применять фильтр к другим пачкам, сразу после загрузки, и только потом показывать данные (чтобы уже отфильтрованные отобразились), пока не знаю как реализовать, но мысль правильная? не подскажешь как лучше сделать? какие еще подводные могут быть?
Нужно сделать на редаксе, еще все покрыть тестами - thunk, если покрывать, слышал, что гемор ужасный, так ли это и почему? А saga типа норм, но с ней дело не имел.
Сделай полоску загрузки, чтобы юзер понимал что данные не полны, фильтр запрети менять во время подгрузки, опционально кнопку отмены, если запросы рили долгие.
>если юзер фильтр сбросит чо будешь делать?
Изначальное состояние будет доступно - в редаксе так можно, как я понимаю. В таком случае верну стэйт в исходный для загруженных данных, а к дозагружаемым просто не буду применять фильтр. Пойдет?
>фильтр запрети менять во время подгрузки
Может юзер захочет посмотреть отбор из тех 5тыс. items, что прогрузились (там с фильтрами результат будет 50-200), пока грузятся остальные 50тыс. Такое решение не пойдет - тут именно нужно чтобы моментально смотреть загруженные данные с нужными фильтрами, ничего ждать нельзя.
И вообще, думаю, что первые 5-10 сек. запретить применять фильтр - плохой пример UX в нынешнее время, где все скорость решает. Юзер к конкуренту уйдет, потому что "там не тормозит".
Кек. Вебворкер и рендеринг это отдельные потоки.
>>70345
> В этом-то и ссуть, что вкладко-процессы не из-за мифических оптимизаций добавили,
Какая разница? Речь шла о том, что хром использует потанцевал ш5.
> Бля, ты долбоёб. Колбэки как раз насильно заставляют скоупы для замыканий плодить.Если ты конечно не любитель анонимки пихать в колбэки. Но тогда твои пуки про производительность ничего не стоят.
Проиграл с этой хуйни. Зачем мне плодить какие-то там колбеки или промисы? Вся асинхронная работа происходит в разных потоках, вебворкер сам пропукивает пропуки для стейта и тасков.
Для всего остального давно придумали различные реализации реактивности, которые кстати работают на коллбеках в большинстве случаев, тому что ромисы имеют собственную петлю, отличную от коллбеков.
> на заблоченном потоке ты даже воркеров не сможет пропукать.
Зачем пропукивать воркеров? Параллелизм не так работает, пропуки это сообщения между тредами.
>>70438
Им дали вебворкеры для нормальной параллельной асинхронной работы, нет, промисированную псевдоасинхронищу жрать вкуснее. Нахуя нужно чтобы интерфейс без лагов был? Нее, это не про говнокодеров, ща нахуярим.then(чтобы скроллинг лагал).
Пиздец просто.
Завернут на код ревью так. Компания дрочит на скорость, как никто другой. Тут уже в первой пачке данных фильтруй нехочу, а ты предлагаешь ждать, чтобы все пришли - уже ПРОСАДКА в эффективности, выражаясь их языком. Недаром бэк так спроектирован - пачками отдавать, наверное.
>>70647
>>70591
Генератор фильтра должен быть доступен всегда. Т.е. фильтр генерируется на сервере и отдается клиенту, клиент может начать фильтровать не имея данных вообще.
Как клиент, так и сервер имеет свой экземпляр фильтр, который синхронизируются между клиентом и сервером.
Данные фильтра и сами данные идут двумя отдельными запросами.
Алсо, сейчас пишу json-фильтр с байтовым потоком и байтоебством, может покажу потом что вышло и какяэтавижу.
Костя Базров научит тебя рекурсии. Лучший учитель имхо
>фильтр генерируется на сервере и отдается клиенту
Анон, условия придумываю не я. В своем ОП-посте я их изложил. Или я не так тебя понял?
Фильтрации на бэке нет, отдаются пачками данными.
>клиент может начать фильтровать не имея данных вообще
Да, именно. Врубаешь фильтр(ы), к данным которые пришли он применяется, потом рендерится.
>Какая разница? Речь шла о том, что хром использует потанцевал ш5.
Потанцевал в память срать? Вроде ты тут над байтиками трясёшься, но при этом защищаешь всирание памяти браузером.
>Вся асинхронная работа происходит в разных потоках
Ты дебил или вкатыш?
>вебворкер сам пропукивает пропуки для стейта и тасков
Ух какой волшебный воркер, ничего не делаешь, а всё есть. Ты на синтаксис его инициализации, вызова и взаимодействия посмотри, дебил блять.
>Для всего остального давно придумали различные реализации реактивности, которые кстати работают на коллбеках в большинстве случаев, тому что ромисы имеют собственную петлю, отличную от коллбеков.
Это не из-за какой-то волшебности колбэков, которые кстати срут ненавистными тобой замыканиями, а потому что эти либы были написаны до промисов.
>Нахуя нужно чтобы интерфейс без лагов был? Нее, это не про говнокодеров, ща нахуярим.then(чтобы скроллинг лагал).
Ты случаем не из пыхатреда? Скроллинг у тебя и на генераторах, и на колбэках будет лагать, и даже на воркере, у которого кстати доступа к дому нету. Нормальный многопокпок у него на воркерах, одна история охуительней другой.
> Или я не так тебя понял?
Не, всё верно, я предлагаю въебать фильтрацию и на беке и на клиенте.
> Анон, условия придумываю не я.
Так возьми и придумай. Скажи "птсс, если на беке будет фильтрация, то производительность будет в тысячу раз лучше и денег будет меньше".
> Да, именно. Врубаешь фильтр(ы), к данным которые пришли он применяется, потом рендерится.
Не, смотри. Ты берешь полный набор данных, которые есть на беке. И генерируешь фильтр. И отсылаешь его на клиент. Т.е. фильтр уже сгенерирован будет и клиент уже может щелкать по клавишам, пока данные только идут.
А новые данные просто проходят через существующий фильтр, когда они приходят на клиент. Можно на каждый пакет данных навесить хэш фильтра, чтобы знать применялся к ним конкретный фильтр или нет. Если эти пакеты хоть как-то структурированы, офк.
А надо ли? Я помню, что это работало, а сейчас хз, может это я просто в конфиге где-то проебался. Кто кодит с вебпаком и модулями, у вас получается имена классов как named export импортить?
>Ты берешь полный набор данных, которые есть на беке. И генерируешь фильтр. И отсылаешь его на клиент. Т.е. фильтр уже сгенерирован будет и клиент уже может щелкать по клавишам, пока данные только идут.
Я что-то не раздуплюсь - если на бэке нет фильтра, почему на фронте только не использовать этот подход? Ну тоесть фильтр не выбран - все так и остается - данные рендерятся в порядке, как на бэке они, выберешь фильтр - загруженные данные фильтруются, происходит перерендер, новые через фильтр проходят; если не загружено ничего, а клиент успел щелкнуть по фильтру, соответственно данные проходят через фильтр прежде чем отрендерятся.
> Потанцевал в память срать? Вроде ты тут над байтиками трясёшься, но при этом защищаешь всирание памяти браузером.
Что за хуйню ты несешь блядь каждый раз? Речь была про распределение жс по ядрам. Какая память, блядь?
> Ты дебил или вкатыш?
> Ух какой волшебный воркер, ничего не делаешь, а всё есть. Ты на синтаксис его инициализации, вызова и взаимодействия посмотри, дебил блять.
Сказать-то что можешь или только жидко пукать?
> Это не из-за какой-то волшебности колбэков, которые кстати срут ненавистными тобой замыканиями, а потому что эти либы были написаны до промисов.
> эти либы были написаны до промисов.
> до промисов
Ахах. Дебил, блядь, промисовый, промисы 9 лет в либах существуют и 6 лет как стадарт.
> Ты случаем не из пыхатреда? Скроллинг у тебя и на генераторах, и на колбэках будет лагать, и даже на воркере, у которого кстати доступа к дому нету. Нормальный многопокпок у него на воркерах, одна история охуительней другой.
Промисовый, смотри.
Основной поток - для рендера, чтобы UI не лагал никогда. Асинхронные потоки - для асинхронных событий.
Доступно излагаю?
А как они поступают если нужно получить данные сразу с нескольких API и вывести в нужном порядке? То есть если 1 API недоустпен - вывести данные со 2API и т.д.
>Что за хуйню ты несешь блядь каждый раз? Речь была про распределение жс по ядрам. Какая память, блядь?
Нести хуйню про ядра начал тут ты, потому что обосрался. Я тебя просто поправляю.
>Сказать-то что можешь или только жидко пукать?
То есть ты вообще не понимаешь, что несёшь полную хуйню.
>Ахах. Дебил, блядь, промисовый, промисы 9 лет в либах существуют и 6 лет как стадарт.
Ну да, ведь либы стали писать ещё до стандартизации промисов, да?
>Основной поток - для рендера, чтобы UI не лагал никогда. Асинхронные потоки - для асинхронных событий.
Это у тебя в пыхопитоне такое разделение? Пиздуй-ка обратно в свой загон, нам жабадебилов с ООП головного мозга и так хватает.
Ты вообще про что? На клиентской стороне ты всё так же фетчем можешь запрашивать, а на ноде фетча и не было, кроме отдельного пакета.
Только на brainfuck'e, транслируемом в es3
>Ты вообще про что?
Про то что как на PHP парсят API, с помощью file_get_contents и curl_init? Больше способов нет?
Ты долбоёб братишка, промисы делают код читаемым и понимаемым то есть редактируемым и поддерживаемым, чо у тебя там лагает выброси свой пентиум и купи компьютер.
на codewars заценят
храни нефильтрованое фильтруй в рендере хули ты изобретаешь там
> Нести хуйню про ядра начал тут ты, потому что обосрался. Я тебя просто поправляю.
Распределение вкладок по ядрам есть? Есть. Дальше пошли твои маняманевры и подрывы.
> То есть ты вообще не понимаешь, что несёшь полную хуйню.
Ну так поясни и не пукай. Но ты не можешь, потому что очевидно хуйню несешь ты.
> Ну да, ведь либы стали писать ещё до стандартизации промисов, да?
Не, либы которые я использую написаны в 2019.
> Это у тебя в пыхопитоне такое разделение? Пиздуй-ка обратно в свой загон, нам жабадебилов с ООП головного мозга и так хватает.
Это разделение не_у_говнокодеров, мань. И нужно чтобы поток UI не лагал, как у говнокодера.
>>70767
Ох уж эти проблемы говнокодеров, которые писать не могут без промисов. Ору нах
>И нужно чтобы поток UI не лагал, как у говнокодера.
Братишка, даже там, где для распаралеливания уже за тебя сделано всё, и у тебя есть и потоки, и удобные абстракции над ними из коробки, и возможность распаралелить каждый пук от парсинга жсона и его вставки в базу до подсчёта высоты текста в UI (и даже возможность паралелить рендеринг UI!!!, хотя и не из коробки, и получать 120 фпс на ебаном айфоне 4с, хуяря код в декларативном стиле на флексбоксе) все всё делают в главном потоке нахуй.
Просто ирл всем тупо похуй, такие вот объебосы (а их большинство) берут самый медленный лэйаут, прикованный костылями к главному треду, парсят жсон на мэин треде, там же ходят в базу и пишут в/читают с бд там же — и у всех отмазки уровня "ну бизнесу жи нормальна, когда ебать начнут тогда и начну шевелиться", и потом у нас 4 из 5 приложений лагают на ровном месте как говно, лол.
мимо-айосер-увидевший-пост-на-главной
К чему я это — просто забей на этих долбоёбов и расслабься, твоё портфолио если будешь всё делать качественно всё равно тебя протащит вверх через них, лол.
Двачую.
мимокрок потратитл время на вылизывание всех своих пет-проектов перед собесами, после чего успешно был принят на галерку
> просто забей на этих долбоёбов и расслабься
Да и так сижу проигрываю над этой хуйней. Отрицание вебворкеров, лол, ну и пиздец.
> твоё портфолио если будешь всё делать качественно всё равно тебя протащит вверх через них, лол.
Предлагали уже купить проекты из портфолио, правда с полными правами. Планирую сделать полноценную CMS и продавать их тащемта, отличный запасной план если другие проекты будут хуево денег приносить
>А почему бразуеры вообще не делают параллельный тред для всего, кроме работы с DOM'ом, нахуй все эти воркеры?
Потому что это нихуя не тривиальная задача, мозилла пыталась это дело ресёрчить https://ru.wikipedia.org/wiki/Servo_(движок) , но новая директор_ка закрыла этот проект нахуй, поэтому всё надо будет делать руками ближайшие 5-10 лет.
bump
У меня от таких объяснений Uncaught RangeError: Maximum call stack size exceeded
Чтобы у нанооптимизатора интерфейс на 2мс не подвис из-за того, что ты джейсон в основном треде парсишь.
>Распределение вкладок по ядрам есть? Есть. Дальше пошли твои маняманевры и подрывы.
Распределение вкладок по процессам, дебилоид. И распределили их не с целью, чтобы i5 использовать по полной.
>Ну так поясни и не пукай. Но ты не можешь, потому что очевидно хуйню несешь ты.
Что тебе пояснять если ты хуйню несёшь? С тобой и так всё понятно.
>Не, либы которые я использую написаны в 2019.
Ну нихуя себе, ты аж целые либы используешь, которые даже не на промисах написаны. Это конечно невъебенный пруф.
>Это разделение не_у_говнокодеров, мань.
Это разделение в твоём мирке, не имеющее отношение к движку.
>>70809
>А почему бразуеры вообще не делают параллельный тред для всего, кроме работы с DOM'ом, нахуй все эти воркеры?
Потому что полное распараллеливание - рэйс кондишн через рэйс кондишн.
Воркеры это просто потоки. Ньюфаги, и всяческого рода поехавшие, думают что асинхронное событийное погроммирование не блокирует поток js, но на самом деле он блокируется в момент исполнения промиса. В итоге - лаги интерфейса и всё такое. асинхронщина нужна для работы с несколькими внешними интерфейсами, но это редкий случай микросервисов/внешних сервисов
Чтобы подебить эти проблемы блокирования, придумали вебворкеров - отдельные потоки для интерфейса, ядер, сети, всего i/o в целом. Это всё уже давно используется (нет) на нативе, с недавнего времени и в вебе (нет).
Самый шик это конечно servo. Но это уже будущее нахуй, которое успешно проебали. Сообщество js и веба уже глубоко консервативно, монополизировано и обоссано шизоидами, никаких изменений не намечается, анон >>70814 писал уже. Даже фреймворки с многоядерной работой на вебворкерах это редкость.
>>70896
Чтобы не быть говнокодером, очевидно.
>>70901
Почему нельзя просто писать нормальный код? Неужели это настолько сложно?
> Это разделение в твоём мирке, не имеющее отношение к движку.
На самом деле вебворкеров не существует?
Ты таблетки забыл принять.
>Неужели это настолько сложно?
Да, я не хочу учить воркеры, эти их ебанные send, onmessage, или как там они сообщениями меняются. Каждый выпук делать как обработчик событий, ну ебаный в рот, мне так лень. И нахуя? Даже на моем некропк почти не лагает ни один сайт, кого ебет, что там 50мс жс какой-то занял, люди это даже не замечают.
Я скрипт-то уже написал, так вот, массив получается вида
{
['id25', 'name25', 'url25'],
['id7', 'name7', 'url7'],
['id52, 'name52', 'url52']
}
Как видно айдишники в разброс, но блять после их парсинга из локасторейдж и привидения в массив они сука сортируются по айди и выводятся не сперва новодобаленные закладки, а по номеру айди, что за прикол какого хуя и почему так происходит?
Конвертирую их в строку с помощью JSON.stringify(), а обратно в массив с помощью JSON.parse(), я всё понятно объяснил? Как заставить их храниться и выводиться новые в начале, старые в конце?
Немного проебался с описанием массива, он выглядит вот так
{
25:['id25', 'name25', 'url25'],
7:['name7', 'url7'],
52:['name52', 'url52']
}
И сортируется по цифрам при добавлении новой новости и парсинге его в строку или обратно для вывода на странице закаладок, заебал уже
Хэш таблица - не упорядоченная структура данных, почему ты обратного ожидал?
Хочешь порядка - храни в упорядоченной, массиве
Не понял немного, как понять упорядочанный массив?
Сейчас ещё раз потыкал скрипт и понял что вся проблема в моменте добавления новости в массив, я это делаю так
bookmark[5] = ['name5', 'url5']
И о чудо эта хуйня добавляется в начало как с самым маленьким айди, а не в конец как самая последняя добавленная, я так понимаю проблема в этом, я неправильно добавляю новое значение в массив или нужно отказаться от айди? Тогда я не вдупляю как добавлять новое значение, просто кидая его в начало или конец массива
Есть массив который я паршу туда и обратно с помощью JSON.stringify() и JSON.parse() чтобы сохранить его как строку в localStorage, в массиве хранятся айди новости, название и ссылка на новость, массив получается вида
{
25:["name25", "url25"],
7:["name7", "url7"],
52:["name52", "url52"]
}
Добавляю новые данные я туда вот так
bookmark[5] = ['name5', 'url5']
После таких действий он автоматически сортируется по айди и получается вида
{
5:["name5", "url5"],
7:["name7", "url7"],
25:["name25", "url25"],
52:["name52", "url52"]
}
Как мне добавить новую новость ["name5", "url5"] в конец, я реально запутался пиздец, айдики можно тоже во внутрь убрать, типа ["id5", "name5", "url5"], то есть в итоге после добавления новой новости в закладки должно получиться
{
["id25", "name25", "url25"],
["id7", "name7", "url7"],
["id52", "name52", "url52"],
["id5", "name5", "url5"]
}
Но как это сделать? Как сделать добавление нового значения без указания айди типа bookmark[n] =
Есть массив который я паршу туда и обратно с помощью JSON.stringify() и JSON.parse() чтобы сохранить его как строку в localStorage, в массиве хранятся айди новости, название и ссылка на новость, массив получается вида
{
25:["name25", "url25"],
7:["name7", "url7"],
52:["name52", "url52"]
}
Добавляю новые данные я туда вот так
bookmark[5] = ['name5', 'url5']
После таких действий он автоматически сортируется по айди и получается вида
{
5:["name5", "url5"],
7:["name7", "url7"],
25:["name25", "url25"],
52:["name52", "url52"]
}
Как мне добавить новую новость ["name5", "url5"] в конец, я реально запутался пиздец, айдики можно тоже во внутрь убрать, типа ["id5", "name5", "url5"], то есть в итоге после добавления новой новости в закладки должно получиться
{
["id25", "name25", "url25"],
["id7", "name7", "url7"],
["id52", "name52", "url52"],
["id5", "name5", "url5"]
}
Но как это сделать? Как сделать добавление нового значения без указания айди типа bookmark[n] =
>массив получается вида
>
>{
>25:["name25", "url25"],
>7:["name7", "url7"],
>52:["name52", "url52"]
>}
>
Это объект
Ну там ебаные onmessage и прочее
>Это объект
Да анон так и есть, просто я сходу не вспомнил, давно уже не баловался JS
>>71010
Бля аноны нашёл на learn.javascript
>Упорядочены ли свойства объекта? Другими словами, если мы будем в цикле перебирать все свойства объекта, получим ли мы их в том же порядке, в котором мы их добавляли?
>Короткий ответ: свойства упорядочены особым образом: свойства с целочисленными ключами сортируются по возрастанию
То есть эта хуйня и правда сортируется по номеру или алфавиту при добавлении новых свойств в объект, я проверил даже, как обойти эту хуйню? Чтобы новые свойства добавлялись в начало или конец как мне нужно?
> Чтобы новые свойства добавлялись в начало или конец как мне нужно?
Это объект, у него нет начала или конца. Вставляй ключ order в котором будет именно массив а не ебаный объект с idшками упорядоченными.
test = [a, b, c]
Как удалить значение с ключём 1? То есть элемент b? Задать ему пустоту?
test[1]=""?
test.slice(0,1).concat(test.slice(2));
let [a, c] = variable
...
}
Аноны, что это за синтаксис в аргументе? Что за присваивание? Причем эта функция в коде везде вызывается вообще без аргументов.
Default parameters
Не могу понять откуда ебаная вложенность в стэйте.
Вот почему корзины такие не решительные? Вот блять твою судьбу должен рандомный человек решить?
Иди если бесплатно, хоть опыт получишь, не понравится сделаешь вывод - на бесплатные кормушки семинары больше не ходить, понравится - так наоборот больше профита поимеешь.
Что-то мне подсказывает, что подтягивать питон и математику немного ахуеть какие разные вещи)
Ты ее сам создал, напиши типы
впиливать тесты в имеющийся проект - ебала редкостная. нужно ТДДшить новые компоненты и писать тесты которые проверяют не ебнется ли старый функционал от выполнения нового. иначе как девелопер ты не сможешь девелопить, а портратишь месяц-два на покрытие тестами того, что кое-как, но работает уже.
если не дали спеку, что должен делать тот или иной легаси компонент, можешь посылать нахуй смело - как ты учтешь все кейсы без четкой спеки? написать 9 тестов к примеру займет полдня, но не будет учтен крит какой-то и компонент все равно попадает/некорректно обработает, полдня потрачено, а баг живой и здоровый
мне ТДД сэкономил много времени и нервов, но это не марксизм-ленинизм per se, а Госплан скорее - без четкого соотношения задач и имеющегося продукта - это хуета, а не Госплан
мимо сеньор-помидор 4.5К/мес
Какого хуя мне пустой массив возвращает рекурсия?
function z(ls) {
const result = [].concat(ls)
if(ls.length === 0) {
console.log("kakogo xyia");
return result;
}
return z(ls.slice(1));
}
console.log(z([0, 1, 3, 6, 10]))
Отбой, понял что я тупой.
>впиливать тесты в имеющийся проект - ебала редкостная
Это единственное средство зафиксировать стабильное поведение программы в свете надвигающегося рефакторинга.
ну если рефакторинг по шаблону strangler, или как его там, делаеш, и большинство компонентов будет переработано, то конечно имеет смысл. если иметь какую-никакую версионность параллельную, то от версии к версии можно тест-базу наращивать.
мимогречневый
на верстку чего?
Пара месяцев это точно минимум. Уверяю тебя, что ты не выучишь прямо всё по части css и html. Чуть больше базы освоишь, а все остальное узнаешь с опытом и временем
Спасибо анончик, добра тебе
Иногда вижу сайты, где все элементы абсолютно позиционированы, так что там
1. нихуя не сдвинуть
2. высота НУЛЬ
цвета, шрифты, паддинги - все ок. Но что было в голове у человека, который гвоздями приколачивал блоки (и не к родителю, а к странице, т.к. все топ-лефт-райт от края экрана вплоть до top 1200px)...хм...
Вы проебали мое уютненькое программирование, никаких инженерных принципов, никакого желания учиться, из-за вас JS считают говном не за настоящие его слабые стороны, а из-за качества выполнения задач.
Про то, что половина из вас хачи, хохлы и фемки - я молчу.
Это копия, сохраненная 20 мая 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.