Это копия, сохраненная 26 ноября 2020 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Больше пары строк кода в посте или на скриншоте ведут в Ад.
Для программирования на HTML https://jsfiddle.net/
Для Node.js с консолькой https://repl.it/languages/nodejs
Если рассчитываешь получить дельный ответ, сформулируй правильно вопрос: что я хочу получить, что я для этого делаю, что я вместо этого получаю. Если когда самостоятельно найдёшь решение — поделись в треде, мы за тебя переживаем.
Руководство для вката:
https://pastebin.com/9yRADC0s
Я так ине понял тебя за эти сутки, чем слабая динамическая типизация хуева-то, помимо того, что дает тебе возможность стрелять куда угодно, а ты зачем-то стреляешь прямо себе в жопу не холостыми. Ну, вот серьезно. Я просто не могу понять, как надопроектировать систему, что у модулей настолько большая связанность, или так часто меняющееся апи, или так сами модули просто не выполняют принципов единственной ответственности, или что блядь надо такое делать, чтоыб умудряться везде и всюжу стрелять себе по ногам. Единственный вариант который я могу предположить, это если писать код с закрытыми глазами. Все остальные доводы, аля - ололо мне не надо читать документацию, все декларировано в коде, и мне иде все дополняет - ну это сюр какой-то. Документацию тебе все равно надо читатать, если это писал не ты. А если ты, и написал так, что без документации теперь не разобраться, то видимо хуево написал. Ну, а про интеллидженс это даже не смешно.
Так что в итоге. Зачем нужен этот оверехед со статической типизацией. Типы и так все есть, проектируется все и так на них. Но все именуется интуитивно, все проектируется SOLIDово, служные участки независимых частей документируются, как полагается. Ну так и в чем тогда возникает проблема?
Любимый довод апологетов статической типизации - это ололо вы не писали больших систем, динамикопараша пригодня только для скриптов на один файл. Ну так да, блядь. Так ты и пиши компоненты систему так, чтобы один логический модуль был простым как здрасти и не требовал никакой нахуй статической типизации. У которого задокументированы все внешние интерфейсы как положено, и провалидированы все входы, которые нужно валидировать. Динамикопараша же годится для написания мелочи? Так в чем проблема писать много это мелочи, из которой потом строить большие системы. Или принципы слабой связанности статически-типезированных фанбоев не касаются, я не знаю. Мне действительно сложно понять.
Да это императивная параша свои интересы продвигает. Ничего, рыночек их порешает. Уже сейчас у них за меньше чем у динамикогоспод и разрыв только увеличивается
статическую типизацию ты считаешь говнокодингом? Скажи еще, что ООП не нужен. У меня один вопрос - как вы дебажите и поддерживаете код, где переменные выстреливают в любом месте, где только ударит моча макаке, которая пишет этот код? Передача аргументов происходит так, что хуй поймешь - это тип класса, пропс или что это вообще за говно?
Ооп действительно не нужен.функциональщина полностью покрывает все потребности. И ооп в современном мире программирования только ленивый не пинает. Да заступники тоже есть. Да это работает. Но это консервативно и закостенело.
я не знаю, чем ты занимаешься. Возможно ты делаешь SPA, сайтики и прочую плевую работу. Те, кто пришел в JS (возможно не по своей воле) из интерпрайз языков (а они практически все со строгой типизацией и ООП) используют имперический стиль и проецирует все на OOP-mind.
>Но это консервативно и закостенело.
Так вот насчет ООП - ты видимо не работал в крупных проектах, где десятки тысяч классов, где сборка билдиться около часа на последней конфигурции пекарни, где даже Solution architect (бывает не один) сам не может собрать воедино все, что есть в проекте из за кучи связей. Где UML диаграмма может занимать карту звездного неба. Именно в таких проектах - без ООП никуда.
ООП и ФП это ортогональные парадигмы, никто не мешает использовать обе одновременно. Ты явно лурки перечитал
Пост, на который я отвечал, хоть читал? Или мне надо было подробный интерфейс поста перед обьявлением цитаты сперва вставить, чтобы ты не запутался?
>ооп в современном мире программирования только ленивый не пинает
В "современном мире программирования" слишком дохера жс-макак и питонистов-датасоентистов, обе категории имеют весьма-весьма далеко представление об ООП
Да много. Но это не отменяет того что функциональщина вполне себе альтернатива. Ее не только на жс и пестонах пишут. Да что там целые книги ей обучают типа sicp того же который отнюдь не жс макаками написан.
>>08962
Да не занимался. Но такие проекты вполне пишутся на го, эрлангах и прочих скалах. Да не так распространено. Но тем не менее прекрасно работает и слышать об ооп ничего не хочет. В то время как жава веруны и сисярписты пищат от радости когда к ним протекает что из функциональщины. Да что там один из столпов функциональщины о том что не надо мутировать Стейт уже сам по себе исключает нужду в ооп. Да понятно что не мутировать Стейт в таких языках как жс проблематично. Но все же можно организовать это.
Ёпт кто-то пояснит за const?
В ЖС слабая типизация: можно вычитать из строки integer (Number) и получать валидные результаты без эксепшнов, можно добавить в динамический массив размером 4 элемент на позицию 100 и все будет норм, private/protected точно такие же как и в Петухоне (только TypeScript выручает), но при этом существует отдельное объявление константы блять. Нахуя? Что за наркоман ввел его? let это типо некошерно? Обязательно выебнуться, написав const в языке, который знаменит херней, что я перечислил в начале?
Нужно чтобы пользователь ввел свое имя в формате Фамилия Имя Отчество, иначе отобразить подсказку, и так пока не введет правильный вариант.
Потом вывести список вопросов по порядку, получить на каждый ответ Да или Нет, опять же если введет что то неправильно - отобразить подсказку. И так пока не будет получен ответ на каждый вопрос.
Пытался на цикле while сделать но не понял как дождаться нажатия кнопки - постоянно получался бесконечный цикл, поле ввода было неактивным.
Примеры в интернете все по формам были.
Куда посмотреть, чем воспользоваться?
При чем тут типизация и константы? Тебе константы дали, что бы явно было понятно, что их нельзя изменять. Константы дают некоторую защиту от дурака (пускай и без иммутабельности для объектов) + возможность парсеру оптимизировать выполнение того говна, что ты ему скармливаешь.
Они в принципе не вписываются в логику языка. Это как в пистоне 3.9 ввели продвинутые typehintings и протоколов чтобы он был на С++ похож походу. Эта херня просто не вписывается в концепцию языка
>что бы явно было понятно, что их нельзя изменять
Но тем не менее private/protected методы не нужны, так? _ добавил и збс, для констант кстати тоже конвенция есть, въебать UPPER_SNAKE_CASE и все, нахера вводить const? Я правда хочу понять, чем руководствовался человек, который это ввел
Какая из парадигм в жс противоречит существованию констант и вообще иммутабельности данных?
Вот прям по строчкам, если можно.
---> https://pastebin.com/VbPL3cpJ
А ты как думаешь? Вуе только парочка хипстеров обсуждает. Вернее один семенчщий шизик.
О бозечки, звёздочки на гитхабе. Не ну вы видели. Звёздочки на гитхабе.
Кратко о звездочках
В js есть приватные поля, с разморозкой.
твой пост был настолько же содержательный, как и твои знания об ООП и его применении
>>09145
>Да не занимался
>Но такие проекты вполне пишутся на го, эрлангах и прочих скалах
/facepalm
ты знаешь, почему выбирают Java или сисярп, а не Golang/Skala? Это высокоуровневые интерфейсы, поддерживаемость, читаемость и комьюнити.
>>08963
этого двачую. В каждом ООП языке есть реализации ФП
Я вообще не понимаю, почему тут перья поднимают фанаты ФП, динамической типизации и страпонов. Если есть концепция, есть и применение. Ваше мнение, что хорошо, а что плохо - никому нахуй не нужно. Есть практики, есть эстимейты на задачи и есть люди, которые этими вещами оперируют.
И кстати да, ебусь с GUI на реакт+редакс уже неделю и хочу вам сказать, что редакс, как и сама концепция флекса - это просто ебаный костыль из за несовершенства концепции с односторонней направленностью данных.
Ага. Пхп тоже читаемость и комьюнити. Но при этом его представители ценятся на уровне параши. Что и отражают их зарплаты. Жава уровень выше. И зп тоже. Скала с го ещё выше и соответственно денег больше платят. Я уже молчу что каждый жавист мечтает стать скалистом. А кто не мечтает тот котлинистом
В голос с этих вскукареков со стороны императивной параши. Мань, ооп устаревшая параша. Любой функциональщик на функциях за 5 минут с нуля организует ооп. И да он популярен только потому что армия макак есть его пишущих в то время как хорошего функциональщика ещё поискать надо. И таким как правило очень хорошо платят.
>Но при этом его представители ценятся на уровне параши
Я не хочу тебя расстраивать, но на пыхе и по сей день пишут хуй его знает сколько людей и все так же клепают проекты на нем. Хотя этот язык хоронят уже хуй его знает сколько лет. Знаешь почему? Простота, комьюнити, чуть ниже (чуть) ЗП, чем у остальных. Проекты работают? Сапортяться? Вот и славно. Все рады.
>Но при этом его представители ценятся на уровне параши. Что и отражают их зарплаты. Жава уровень выше. И зп тоже
> Я уже молчу что каждый жавист мечтает стать скалистом. А кто не мечтает тот котлинистом
что за бред ты несешь? Java и котлин - это практически как два брата близнеца. 10 лет назад шли работать джавистами и перепрыгивали на решетки, как и наоборот
>>09423
Вскукареки со стороны неосилятора ООП.
>Любой функциональщик на функциях за 5 минут с нуля организует ооп
Напиши мне на ФП ковариантность и контрвариантность обобщенных интерфейсов за 5 минут. Смогёшь? Или ты думаешь, что ООП это море классов, переменных и связей между ними? Загугли что такое LINQ в #
>И да он популярен только потому что армия макак есть его пишущих в то время как хорошего функциональщика ещё поискать надо. И таким как правило очень хорошо платят.
ты мой пост читал вообще? Пиздуй читать теорию о 3 ногом стуле, заебался уже макак учить, как рыночек работает.
Кстати да, советую почитать книгу - Совершенный код, чтобы у вас больше моча не била не в голову что хорошо, а что плохо
Лол, дурачок, на пхп пишут да. Но то что море макак пишут на нем не значит что это лучшее решение. По факту ооп осилит каждый у кого есть вышка профильная. Это не плюсы даже которые сложные и в итоге студенты от силы на 10% его знают. А функциональщину мало кто знает. Это элита программирования. В то время как ооп это обычная быдломасса коих везде около 95%. Так что не надо про неосиляторство учитывая сколько макак пишут с ним. Это как сказать что ты не осилил поп музыку типа монеточки поэтому она тебе не нравится.
И да, фреймворки типа реакта, ангуляра и вуе используются в крупных проектах, если тебе нужен сайт для небольшой аудитории, то ничего лучше чем jquery и ванильного js ты не найдешь.
> Начало работы 2008
Это нормально. Вообще, критикуя легаси парашу, это не означает, что легаси умерло и его нигде нет. Проблема легаси, что это ужасный выбор для новичков и вообще любого, кто хочет расти как специалистом. Легаси оправданно только для стариков, которые на таких проектах ждут своей пенсии и им уже глубоко по барабану, что там будет завтра.
Возможно, на легаси можно даже неплохо зарабатывать, так как не каждый опытный дев туда пойдет, а новички зачастую даже не знаю о таких технологиях динозавров. С другой стороны, если у них в 2020 до сих пор жиквери, то, возможно, у них очень небольшие бюджеты на айти отдел, не позволяющие поддерживать актуальность код базы и там ловить нечего.
Опять это говно? Нахуй ты снова вбрасываешь неясный высер в околонулевом качестве да еще и на 18 минут? Чего ты ожидаешь?
Я не буду с него смеяться тут, потому-что на собесе я могу, наверно, так же само обосраться. Я на таких собесах всегда нервничаю и мозг может начать выдавать майндфаки. Хорошо что у меня достаточно опыта и толстый гитхаб, так что на последние работы проходил без подобного, проходя только через манагеров, тогда как техлиды просто гитхаб смотрели и кратко со мной общались по теории.
Ну тим там надо просто собрать объект типа {a: 1, b: 2} из массива типа [name: "a", value: 1, name: "b", value: 2] и чел там минут 10 извращается через getProperty, map и прочие манйдфаки, при этом рассказывает, что легко такое решал и это тривиальная задача. Не хотел бы быть на его месте.
по факту ты несешь хуйню. Мне надоело тыкать тебя носом в каждую бредовую строку. Советую тебе пересмотреть свои взгляды на программирование, на первой работе очень тяжело будет принять то, против чего ты так яро топишь. И да, смешно читать за ФП в треде JS-a, ладно бы там Erlang тред
Надо было его попросиь реализовать функцию сжатия строк, по типу
aaadddccc -> 3a3d3c
aaaaaaaaaa -> 10a
abcdds -> abc2ds
И потом разжатия.
Жс конечно не идеал программирования. Но нет ничего смешнее читать мантры ооп манек тогда как есть куча доказательств того что функциональщина работает вполне себе хорошо без императивной параши. И быстрее. Да эрланг эт круто. Все лучше чем жава макака с непомерным эго. И да я на эрланге к сожалению не пишу. Но мне и на го платят норм. И да нам прекрасно пишется без ооп параши.
Бля как подготовиться к такому? По факту я за 2 минуту нануглю решению. А ирл также тупить могу. Как не обосраться на таких вопросах. Есть методичка какая?
Да это проще простого. Просто поучи жс немного подольше и все будет само решаться как по маслу.
хз как жс макаки не могут этого знать. Я изредка пишу на жс, ито знаю что там можно объект собрать через [], типа
let obj = {}
obj["hujnja"] = "pizda";
и все, это все что нужно чтобы решить эту задачу.
Испанский стыд от этого видоса. Полностью не смотрел, но от отрывков прям почему-то кринжево.
Хотя сам эту задачу часто на собеседованиях задаю.
Писать код, больше думать самому, и меньше гуглить. И еще раз писать код.
Отдельно можно потренироваться на каком-нибудь кодварсе. Но вообще задачка элементарнейшая.
Он здесь не подойдет в чистом виде, или придется данные предобработать, тогда подойдет.
Это вообще задачка чисто для разогрева, на нее обычно больше 3-4 минут не уходит.
Лучшее решение, на мой вкус, с reduce. Цикл тоже норм.
Так, даун-питонист попытался "на пальцах" наваять хуйни. Хз насколько это валидно: https://ideone.com/FvjVK9 (на моей машине вроде прошло)
Как троллинг годно. Или ты серьезно?
Не образая внимания на реализацию, ошибка только одна. myObj объявлена как глобальная переменная. Так нельзя.
Ох, да я забываю эти let ебучие а код все равно запускается лол, могу даже порой на ; забивать хуй, но интерепретатор за меня их доставляет а иногда нет
так он и будет запускаться. суть в том, что у тебя myobj остается доступна за пределами функции, так как по факту она у тебя определена в глобальном объекте gloalThis.myObj
с точками с запятой тоже все в порядкею достаточно один раз понять как парсятся выражения, и ничего удивлять не будет.
>мне и на го платят норм.
>да нам прекрасно пишется без ооп параши
>The Go Programming Language ParadigmMulti-paradigm: concurrent, functional, imperative, object-oriented
проиграл с дауна. У тебя все типы начинаются с UpperCase? А если обосрешься и напишешь с маленькой? Интерфейсы наверное тоже не используешь? И структуры наверное не нужны? Зачем ты срешь себе в штаны, если даже не знаешь что такое ООП? Жаль тебя, не знаю, за что тебе там платят на голанге...
Катарсис сука!
Спасибо, схоронил.
А что, если в *.html файле нет объекта с id #output?
Так может быть задумано или это незначительная ошибка, или просто элемент для дебага опущен?
Где можно почитать про свёртку объекта или как это правильно называется?
Допустим, мне надо передать нажатие кнопки, т.е. отправить 1?
>А что, если в *.html файле нет объекта с id #output?
Будет exception потому что innerHTML вызовается у undefined. Если исключение не отловить, оно отобразиться в консоли.
>Где можно почитать про свёртку объекта или как это правильно называется?
Обо всем можно и нужно читать на mdn. https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce
>Допустим, мне надо передать нажатие кнопки, т.е. отправить 1?
Этот вопрос не ясен, потому что он плохо сформулирован.
>Этот вопрос не ясен, потому что он плохо сформулирован.
Ладно, попробую сам разобраться.
Вот няша.
>Есть возможность писать ооп парашу
>Ряяяя значит ты пишешь ее но не знаешь об этом
Мда, не зря императивщиков низшим звеном считают после 1сников и вордпрессников
https://www.reddit.com/r/webdev/comments/gu2l2v/spacex_nasa_used_chromium_and_js_in_the_dragon/
https://space.stackexchange.com/questions/9243/what-computer-and-software-is-used-by-the-falcon-9/9446#9446
Просто удивительно, как он не разбился.
JS, Chromium, Linux - это же шанс успешной миссии 1 на миллион.
Да, так себе он конечно. Если хотите норм наставника то Юрий Бура лучше. Единственный минус у него хуки слабо освещаются.
Ах да еще забыл сказать. Этот даун постоянно чай или кофе пьет. Так и слышить как он во время курса глоток отпивает и кладет чашку. Пздц просто. Профессионализм зашкаливает.
надо было на php делать
это дрочилки JS макак? Я бы в императивном стиле через dictionary и вложенные If-else - тупо нехуй делать
А, жопой прочитал, только что читал про сжатие сериями. Если не надо для одиночного символа ставить цифру, то правильно, но если надо, то задача несколько сложнее получилась
Задача кстати хуевастенькая, потому что в исходной последовательности не может быть цифр
Чем они лучше mocha и chai? А бекенд на экспрессе чем лучше тестировать?
Я в этом вашем дискорде не сижу. По нему вроде разговаривают, какая нахуя музыка
>>09843
интересная задачка была. Кому интересно решение в императивном стиле на решетках получилось вот так https://pastebin.com/iX5XnFYZ
Нуачо, конкурс на самое ебанутое решение. Через регулярку тоже весело
У меня есть приложение на Реакте в котором изменение пароля происходит через отправку письма на почту. В этом письме должна быть ссылка, которая редиректит обратно на спец. страницу в приложении. Как такое правильно провернуть? Есть гайды по тому, как правильно такую ссылку сделать и запихнуть в неё нужные серваку параметры?
Где вообще про подобное читать?
>как правильно такую ссылку сделать и запихнуть в неё нужные серваку параметры
В эту ссылку не надо ничего запихивать, это было бы небезопасно. Это обычно хэш какой-нибудь рандомный, который на бэке запоминается. Какого-то прямо правила как это делать нет. Пришел на специальную страницу с почты, достал из урла хэш, отправил на бэк. Юэк проверил правильность и работай...
В данном конкретном случае зачем ты его пересоздаешь. Каким боком тут иммутабельность тебе нужна, у тебя не меняется массив.
Точняк. И что, я провалил собеседование?
Видел, но я так понимаю, что данный способ именно под Ангуляр, а под Вью не помогает. Насколько я понимаю, что Вью с пва-плагином само должно регистрировать воркеров, но что по гайду из того поста, что еще по одному ( https://blog.n11sh1.com/vue-pwa-tutorial/ ) у них прямого импорта сервис-воркера нету. Но при этом, блядь, оно нихуя не работает у меня, создается только стандартный воркер от плагина.
Проиграл с "можно пропустить эту задачу, она слишком легкая", а потом пук-среньк
Потому что позволяет сделать красиво, не заебывась с чем-то сложным
У вас нет моего телефона, запишите
А что это за скобки в возврате стрелочной функции? Там же должно быть или тело функции в {} или одно значение просто.
Я спрашиваю, вот это что такое? После "=>" должно быть или выражение или тело функции, че за круглые скобки с присваением?
Спасибо
тоже самое, что (1 + 2, 1 + 3)
Похоже на какой-нибудь Материал Юай
Хуйню написал, задача решается в одну строку:
let objectFromArr = arr.reduce((acc,e)=> (acc[e.name] = e.value, acc),{});
Почему долбоебы свой мап везде суют?
Потому что мап первое, что приходит в голову.
А если там будут не name и value, то код работать не будет.
>let objectFromArr = arr.reduce((acc,e)=> (acc[e.name] = e.value, acc),{});
А как приходить к таким решениям в одну строку?
Я не могу. Давай теперь ты объясни мне логику свою объявления переменных. В расчет твои алгоритмы не берем.
Функция objArray, ты объявляешь мутабельную переменную arrRes, которую менять не собираешься на самом деле, и иммутабельную res, которую вообще не собираешься использовать. Почему сразу не написать return arrRes? Почему у тебя res const, почему не let? А если ты топишь за иммутабельность, то почему arrRes не const?
Дальше. Функция makeItemObj, перееменная prop где объявлена? Во внешнем скоупе? Замечательно. Зато у нас тут везде const через const, потому что кто-то сказал, что так надо.
Хоть отчасти задумываетесь вообще что, когда и почему. Почему let, почему var, почему const? Перестаньте, пожалуйста блядь. Если не разобрались еще, то просто используйте let, везде, для всего. До те пор пока не поймете, что когда использовать.
Никаким особенным. Как так вышло, что ты про Object.fromEntries, который только недавно совсем вошел в спеку знаешь и применяешь, а про reduce не знаешь или не вспомнил?
>А если там будут не name и value, то код работать не будет.
У тебя тогда говно получится в любом случае. Ключей в объектах может быть больше 2х, js не гарантирует порядок ключей.
К слову, пока не гарантирует. В грядущей спеке начнет гарантировать.
>Почему сразу не написать return arrRes?
Всё так, нужно было таким образом.
Prop я забыл объявить.
Не стукай.
Так не страшно, все приходит с опытом. Это и был ответ на твой вопрос - каким образом надо мыслить. Никаким, не считая обычного алгоритмического мышления. Все остальное просто опыт. Само придет.
Но ведь это реально короче. Одна инициализация цикла сколько места занимает, даже через for of. А ты бля, старый дурачок, скоро вылетишь на помойку времени и будешь там обдрачиваться своим for (var i = 0; i < arr.length: i++) {}
совас дай в нормальном качестве
Ну смотри. У тебя есть много объектов в массиве, тебе нужно сделать 1 объект. Т. е. уменьшить, сжать изначальный объем. Вспоминаем названия функций и что они делают. MAP - название говорит о том, что он служит для внесения изменений в уже существующий массив, без изменения его структуры, рри этом возвращает он новый массив, т. е. нам не подходит. Reduce - само название говорит "уменьшить, сжать", используется для изменения структуры объекта и возвращения произвольного типа данных. Т. е. то что нам нужно.
Он и для объектов неожиданный резулььат выдает, так как не гарантирует порядок выдачи ключей.
Она еще и депенденси тянет, оподливился
Но map и вправду быстрее использовать, чем итерировать.
NaN (англ. Not-a-Number, «нечисло») — одно из особых состояний числа с плавающей запятой.
То есть это состояние числа?
Для итерации надо использовать forEach. А использующие map не то что вылетать, даже залетать не должны.
Аноны, почему у меня detectDayBudget на строке 38 не видит значение свойства объекта appData.budget, если запросить показать вне функции, то он прекрасно выводит, скрин прилагаю
То что map создает новый массив и поэтому его нельзя использовать - хуета высосаная из пальца.
Возвращать новый объект это сейчас мода такая. Типа не месит говно в одном объекте на протяжении одного экрана, а реализовать пайплайн: сделал операцию над обектом и выплюнул на вход другого оператора. Микро разделение ответственности.
Библиотеки которые используют цепочечный синтаксис уже стары как мир начиная жикуери и заканчивая рхжс.
Неа, в итоге заработало так, что я вначале запускаю функцию start, ниже пишу сам объект, после чего запускаю функцию detectDayBudget, только так работает
Нет ты
Бля, я думал что объект можно объявить в самом начале кода а потом менять его значения, чет какая то хуйня, функция start меняет значение переменной money, но записывает значение только, если объект идет после вызова функции
Печально
Но никто не мешает делать короткие цепочки и переменные с нормальными названиями.
Тут динамикодебилы рвутся от тайпскрипта, а ты какие-то самодокументированности ожидаешь.
По-твоему из этих двух конкретных функций, как более эффективна и почему?
Что ты там считаешь в браузере? Количество пунктов в меню? Или у тебя хайлоад на фронте от снежинок?
При чем тут семантика. В твоем примере ты мобифицируешь исходный массив. Замени тест на то, чтобы у тебя просто вызывался console.log(item) каждого эоемента. И мерий скорость.
объяснение для долбоебов - у тебя есть массив на четыре миллиона эелментов, в памяти занимает допустим гигабайт. тебе надо передать каждый элемент массива в функцию.
после forEach у тебя так и остался массив на четыре миллиона элементов. после map утебя два таких массива - старый и новый. при этом тебе новый не нужен был. ты ничего в массиве не менял.
и сравни с concat
Ты через джейсоны массивы на 4 миллиона элементов передаёшь?
Если у тебя специфическая задача что пиздец памяти не хваттает как в калькуляторе с парой регистров, то очевидно перекладывай из одного ведра в другое
И что по-твоему быстрее?
Вот пока такие, как ты долбоебы будут писать код, по и продолжает жрать как не в себя.
Но самый больщшой долбаеб тот, кто стал в браузере массивы с миллионами элементов перебирать.
Как там в 2005ом, когда понятия толстого клиента отстуствует, а js пока только в браузерах? Доллар закупил? Скоро рубль упадет.
Зато всего-лишь один запрос на бэке!
>а js пока только в браузерах
Нода существует как прокладка между вебомским js и базой данных. То есть ей тоже не доверяют перебор массива с миллионами элементов.
Ты заебал. На ноде уже целые IDE ходят. Иди отсюда.
Ебааа, новый массив. Уууу не ну вы видели создаёт целый новый массив. И что с того идиот? В голос с клоунов вроде тебя. Ещё сидят с умным видом, наезжают на бедных новичков притом что у самих каша в голове.
>про HTTP
>из 500
Таненбаума по сетям, чтоли? Один ссаный протокол HTTP можно уместить на 2-3 страницах
>как мне например выгрузить видео с ючуб
куда?
на каком языке?
причем тут вообще изучение об http протокола к парсингу контента?
>Когда я уже научусь перехватывать трафик
решил почитать тред твоих сообщений и у меня к тебе вопрос - ты вкладку Network того же ютуба когда нибудь открывал?
Тебе не про http нужно читать, а про парсеры
>Когда я уже научусь перехватывать трафик и запилю свое приложение для скачивания музыки и видео с разных сервисов?
Когда полностью прочитаешь.
я рад за таких долбоебов, которые задают невнятный вопрос и получают невнятный ответ. Особенно угодаю с тех, кто хочет научиться программировать и ему советуют "Для начала Assembler, потом Сишечка, далее ++, только потом Java/# ". Или что то типо "Кнута не читал, нипрограммист"
Ну вот я тоже так подумал. Просто не знаю чем материал закреплять
>>11917
> Тебе не про http нужно читать, а про парсеры
А чего про них читать? Сделал запрос, засунул в jsdom и что надо вытащил.
> решил почитать тред твоих сообщений
Я сюда два сообщения написал, какой тред?
> и у меня к тебе вопрос - ты вкладку Network того же ютуба когда нибудь открывал?
Да открывал. Там куча запросов каких то, ну я и испугался
>Там куча запросов каких то, ну я и испугался
там где 200 code и type - формата, который тебе нужен - это и есть перехват контента. Но сейчас многие видео ресурсы начали переходить на xhr requests, которые таким макаром уже не словишь. Дальше разберешься
>Ну вот я тоже так подумал.
Вот и верно подумал. Алсо, заметь как налетели неосиляторы, которые и 20 страниц книги не осилят. Они хотят затащить тебя в яму с дерьмом, в которой они оказались, потому что являются ленивым скотом, который только и может что копипастить код со стэковерфлоу и представлять всё в виде магических объектов, которые "просто работают".
>Просто не знаю чем материал закреплять
Сначала прочитай, потом уже закреплять начнёшь. Во время закрепления смотри в книгу. Главное сейчас не зазубрить всё так чтобы от зубов отскакивало, а запомнить общие моменты, чтобы при написании кода ты вспомнил "так, вот про это я читал в той книге, надо посмотреть как там это описывается". В общем, у тебя в голове должно остаться краткое содержание, которое ты потом на практике будешь конвертировать в конкретные, углубленные знания.
>Таненбаума еще 4 томика прочти
Если хочешь работать с низкоуровневым кодом, то да, нужно прочесть. Также как и Кнута, если хочешь работать с математически-ориентированным кодом. Но в этом нет смысла, если ты прочтенное никогда на практике не применишь, т. е. в первом случае не будешь работать с низкоуровневым кодом, а во втором с математически-ориентированным кодом.
Но ты ведь тупорылая скотина, которая триггерится от упоминания любой литературы, поэтому даже книга по HTTP, которым пользуются повсеместно, тебе разорвала жопу.
>Или JS-еры работает с низкоуровневыми абстрациями?
Щас вубассембле бахнет мигом заработаешь, скот. Книжычки ему видите ли читать не хочется, сеньор залупы
Танненбаума надо читать, не чтобы с низкоуровневым кодом работать, а тчобы вообще понимать как устроено все ниже уровнем. Программисты, не важно какого уровня, не знающий что такое процессы и потоки, или планировщик, памяьб куча, стек, хотя бы в общих чертах, хуевый программист, ровно настолько же, насколько хуев какой-нибудь стоматолог не имеющий представления о резус факторе.
А вот Кнута, как раз, читать надо когда ты собираешься дрочить низкий уровень, потому что у него там в целом все упирается в математику и низкие абстракции для прогаммирования, аля понимания абстрактного ассемблера и реалиация алгоритмов на его уровне. Это прикладному программисту как раз не обязательно.
Когда щас. Он уже давно бахнул, с размоорозкой.
Мы третий год поддерживаем webCAD с модулями на wasm.
Модули пишут сишники, и компилируют в целевой байт код. Задача веб-разработчичков только подгрузить модули, и передавать им управление когда надо. На васме пишут библиотеки, он для того и создавался. Это такой dll\so для веба. Только отбитые будут полностью на нем строить веб-приложение. На фронте это оверхед. На бэке это ни к чему, там можно использовать нативный код.
>Щас вубассембле бахнет мигом заработаешь, скот.
В шепорт проиграл с дауна. Твой wasm нахуй никому не нужен. И языки создаются по возрастанию использования высокоуровневых абстраций, а не наоборот
>сеньор залупы
Senior stackoverflow copy-past developer, читать разучился или зрение потерял от дрочки байтиков?
>>11980
кому по кайфу имо, всем остальным - похуй на него. Я его все в планах держу почитать, но есть другие приоритеты.
>А вот Кнута
мастхев тем, кто идет в программирование за бабосом. Чтобы жизнь малиной не казалась
>Или JS-еры работает с низкоуровневыми абстрациями?
Это вообще от языка не зависит. А от задач. Поставят тебе задачу на клиенте байтики дрочить - будешь дрочить.
typedarray, sharedbuffers, atomics, - это в языке все по-твоему зачем.
>Это вообще от языка не зависит
как раз таки зависит. Если вести диалог в таком ключе, то все можно писать на Сях, только это займет в сотни и тысяч раз дольше, чем на готовой высокоуровневой реализации с валидациями алгоритмов, тонн тостов и прочего, прочего
По сабжу в любом языке есть низкоуровневые шняги. В #9.0 вводят ФП фишки, думаешь от этого все начнуть их юзать?
Я считаю каждый должен выполнять свою работу и заботиться о хорошей реализации своего функционала, а не заморачиваться про то, к чему даже близко не касаешься в работе. Дома на пете подрочить, посмотреть что и как - your welcome. Это тоже самое, что говорить таксистам учить внутреннее строение двигателя внутреннего сгорания. Ему максимум что нужно знать - это как устранить мелкие поломки, в случае если что то наебнется.
Так и я тебе про работу. Есть ТЗ реализовать на фронте низкоуровневую парашу, аля какую-нибудь кастомную криптографию, будешь реализовывать. Далеко не все задачи сводятся к CRUD'ам.
Вот я обычный фронтендер в преимущество, хотя могу фуллстек. Из последних задач на фронте за последние пару месяцев - hex-редактор для панели управления веб-сервером, виджет просмотра и редактирования шрифтов, редактор превьюшек товаров, с возможностью не слишком сложного редактирования растровых изображений и склейки их в крутящуюся модель. Сейчас вот стоит задача реализовать вьювер sqlite файлов бд, на клиенте. да.
Забей, у этой маньки неизлечимая дихотомия черное/белое и он в жизни на js не делал ничего сложнее верстания компонент
>посидел в [name] треде
>куда не зайди - везде зеленые
>чтобы лента треда двигалась быстрее
>вся суть двощей
>Школьник
>Советует читать кнута
>Пишет на асме хелоу ворде
>Изучает алгоритмы
>Устраивается на работу верстальщиком
>Далеко не все задачи сводятся к CRUD'ам.
Фронт, карл. Какая нахуй логика может быть в трансфере данных и их отрисовки?
>hex-редактор для панели управления веб-сервером
и что же ты низкоуровневого сделал? Grid с байтами накинул с хуками по интерфейсу к серверу?
>задача реализовать вьювер sqlite файлов бд
это вообще плева
Макакены или не могут понять, что такое frontend as it is или пытаються в зеленых.
>>12071
еще есть особенная каста - студентота. Им препод говорит какую то залупу написать ака управление кеша, но студентота же берется за то, что уже знает (JS) и начинает его дрочить всеми правдами и не правдами, а потом пытаться в кул хацкеров и нитаких_как_все
жиза, знаю тестировщика, который выдрочил на # алгоритмы поиска и сортировки, может Merge sort на бумажке расписать (как он говорит, не проверял, нахуй нужно), может по unsafe code пояснить, но блять не может обычный контекст провайдера с БД запилить. Тем не менее у этого шизика ЧСВ пробивает крышу и он брыжет желчью в своем загоне тестировщиков (которым все его знания, как кобыле 5 нога)
>с низкоуровневыми абстрациями
>HTTP
В голос, блять. Скоро и разделение строки станет "НИЗКОУРОВНИВАЯ АСБТРАКЦИЯ!!". HTTP это как раз то, с чем непосредственно работает JS-ер.
>Если хочешь работать с низкоуровневым кодом, то да, нужно прочесть.
Ты тред не попутал, котлетный?
Можете смеяться, но мне в пет проекте приходилось на ноде делать по байтам фрейм и посылать по tcp, разрезая по байтам ответ же. Хз что тут за восклицания.
Мимо.
Байтоеб, твоя любимая сишечка в соседнем треде. Так оголодал от низких байтоебских зарплат что теряешься уже?
>На джс тоже иногда приходится байты двигать, всякое бывает
>БАЙТОЕБ, РЯЯ, УЕБЫВАЙ В СВОЙ ТРЕД
А через 5 минут эта обезьянка будет доказывать кому-нибудь, что его язык полноценный и на нем можно делать не только алерты при нажатии на div
Мань считать байтоебство критерием полноценности языка это как умение на лошади считать за водительский стаж
Ты либо плохо читаешь, либо делаешь неверные логические выводы в своей шизанутой голове.
А вообще да. Если язык позволяет байтоебить, то он еще не полноценный. Но если не позволяет, то точно с ним что-то не то.
Да личный, для разминки. Умел в том числе получать с сервера игрушки список онлайна и другие метаданные и показывал на фронте + дискорд боте
https://twitter.com/dan_abramov/status/1267544361929256966
Да он там вполне интегрировался в неолиберальный стэк, аж до местоимений.
Плюс в своём курсе шутковал про президента Пуха. Чёт сильно сомневаюсь, что он будет шутковать про двух президентов США, летающих на Лолита Экспрессе.
Я больше всего проиграл с #TakeAction. Вангую с его бонусами и зарплатами он либо нихуя не сделает кроме постов в твитир, либо за любое действие (типа задержки релизов реката) их там всех уволят к хуям, а нормальные конторы не будут брать дофига революционеров на работу.
В целом ситуация грустная. React.js теперь официально фреймворк куколдов получается? Куда перекатываться? На Vue.js?
Зачем куда-то перекатываться? Развитие реакта, по факту, уже закончилось - сейчас идет просто освоение бюджетов на всякие свистелки-перделки типа хуков. Через пару лет, скорее всего, появится десктопная версия реакта с какой-нибудь skia в качестве рендерера - а так ВСЕ.
Реакт не нужен. Есть ванильные веб-компоненты.
Неправильно.
Правильный ответ:
arr.reduce((acc, {name, value}) => (acc[name] = value, acc) , {});
прозреваю, что там что-то связано с экспрешонами. типа если терм после запятой это топ левел экспрешон, то мощный интерпретптор считает его за ретурн стейтмент
мимо питоноблядь
Так оно неявно только дурачку вроде тебя, другой видя запятую сразуй понимает, что возвращаться будет последнее значение
>Кроме того, очень незначительным отличием includes является то, что он правильно обрабатывает NaN в отличие от indexOf/lastIndexOf:
И как он находит NaN, если он не равен даже самому себе?
По какому массиву в данном случае будет осуществляться проход? Можно ли его получить в функции мапа?
>Если язык позволяет байтоебить, то он еще не полноценный. Но если не позволяет, то точно с ним что-то не то.
Из 2 IF возвращает false.
>неверные логические выводы
>логические
>выводы
Знаю нескольких байтодрочеров, так вот они никогда не начали бы полоскать мозг за высокоуровневые ЯПы, где только экземпляры создавай и работай дальше. Единственное, от чего у них может пригореть - это от ЗП и спроса на рынке.
Так что не кормите этих долбоебов, которые хотят (пытаються) сделать из JS что то типо С, с криками "Если ты не используешь, не значит, что это не нужно".
У них разные предназначения. Форич не создает новый массив и предназначен либо для модификации данных существующего массива, либо для их определенной обработки.
Мап предназначен либо для создания ассоциативного массива, либо просто определенно модифицированной копии массива.
Коллбэк мапа принимает три аргумента - элемент, его индек, и сам массив. Получай на здоровье.
Проход в твоем пример будет по масиву str.split('"")
Выходит, что по-втоему если ты не используешь, значит не нужно или что ты хотел сказать?
Ты вообще какой-то ебанутый, прилетел переворачивать все с ног на голову. Тут по треду никто не кричал о том, что байты это все и только их нужно дрочить. Тут лишь пытались сказать, что js это не только лишь и не всегда формочки и компоненты. Но если ты с этим не согласен, то хули с тебя взять.
Поясняю за поясняторов вроде тебя - все возводящие что-либо в абсолют, особо недалекого ума. И ты яркий тому показатель своим срыванием покровов.
типичный представитель ЧСВ-быдла, который выносит мозги в обед своими маня мирами с низкоуровневыми реализациями на высокоуровневом языке
Как раз пример, где макака прочитала жопой
он же у тебя в билде, а там сплошной простыней тысячи строк + привязки к разным ресурсам, без которых сайт при парсинге получается кастрированный. Кому нахуй такое счастье нужно?
Используеься только одна либа. Код пишу для себя, поэтому читается и понимается легко.
хочу тебя разочаровать, но клиентский код не спрячешь от клиента. Нет компиляции в JS. Единственное, что ты можешь сделать - это минифицировать и ограничить доступ CORS только к твоему клиентскому приложению из БД, чтобы как я писал ранее - даже спиздив у тебя всю начинку, получился полупустой контент, который выпал из хуков по Web Api
> хочу тебя разочаровать, но клиентский код не спрячешь от клиента. Нет компиляции в JS.
Поэтому и спрашиваю о переносе на сервер.
> Единственное, что ты можешь сделать - это минифицировать и ограничить доступ CORS только к твоему клиентскому приложению из БД, чтобы как я писал ранее - даже спиздив у тебя всю начинку, получился полупустой контент, который выпал из хуков по Web Api
Ну ок. Буду гуглить то что ты сказал. А сложно перенести всякие canvas'ы, dragndrop'ы?
>Поэтому и спрашиваю о переносе на сервер.
У тебя твой веб сайт хостится на сервере. Еще раз повторю - ты делаешь клиенский код, который открывает клиент в своем браузере. Это означает, что он качает все твои голые сорсы при открытии страницы твоего сайта.
>А сложно перенести всякие canvas'ы, dragndrop'ы
Куда перенести? Твой контент (картинки, данные, файлы) храниться где то на локальном диске хостинг машины. Если есть логика в приложении типо базы данных, расчетов, крудов - то это бэк (не JS).
из крайности в крайность
Кому твой код нахуй нужен, чмошник
Форич мутирует, не чейнится и ничего не возвращает.
Мэп создаёт новый массив, возвращает его и чейнится в форич.
Ситуация - есть приложушка на реакте с корзиной. Эта корзина изначально была реализована с помощью редакса + локалСтораджа и саг как способа преверса корзины после перезагрузки страницы. Но сейчас ее переписывают чисто на локал сторадж, мотивируя это тем, что в "сагах не должно быть действий, не связанных с редаксом, и нет смысла держать редакс, если мы и так храним данные в локалСторадже". Что однако порождает написание внутри компонентов немалого количества проверок этого самого стораджа, и мануальный ререндер во всех связанных компонентах соответственно.
Ваше мнение - имеет ли смысл оставить в данном случае "не по кулинарной книжке" использование редакса, которое дает меньше пространства для человеческой ошибки (не надо описывать проверки внутри связных компонентов), или стоит выпилить редаксовскую часть и использовать только локалстор, но пилить проверки?
Дискач
пресерва быстрофикс
Делаешь кастомный хук, который делает все нужные проверки и сгружает/разгружает локал сторэдж.
Это в целом и было реализовано, только не хуком (их тогда еще не было толком), а отловом экшнов в саге и изменением локалстора там же. Соответственно, это был код, привязанный к экшнам, написанный один раз, и не требовавший более проверок.
Но сейчас его переписывают с мотивацией "не тру", толком не объясняя зачем, и какие проблемы могут возникнуть, если не переписать, а оставить так, как есть.
Очевидно же синьор хочет не терять своё хлебное место и размазывает логику по коду.
Пусть лучше локалсторедж перепишут в редакс стейт, сеньоры-помидоры бля. Неосилили редакс сто процентов
Так это как раз по кулинарной книжке - саги должны заниматься слайд эффектами, срать и читать локал сторадж - это сайд эффект, все сходится.
По такой логике следующим вашим шагом будет переписать все хттп реквесты без использования саг, ну и тогда в целом вам Релакс больше не нужен будет, а данные вы будете хранить в контексте
фух, я уж было думал придётся переучиваться
Лучше наверни старую версию этого сайта.
Там многое изменилось в худшую сторону в плане объяснений.
Всё равно потом придётся фреймворки по документации учить, а основы и на этом сайте сойдут. Или не сойдут?
Тогда будет лучше навернуть этот сайт в форме книжки образца 2017 года, получается? Илья кантор это переводчик тупо?
Да, лучше навернуть старую книжку, а потом уже быстро пройтись по современному сайту.
Если переменная X значимый тип, значит при присваивании её переменной Y создастся новый объект-копия и присвоится переменной Y. Если это ссылочный тип, то присваивается её копия.
Уже дочитал до этого момента в книжке, спасибо.
Смотрели у него что-то? Очередной Владилен Минин или можно посмотреть?
Так это просто пердоликам бомбит, что скриптовый язык на коленке взлетел, а их древний борщеязык - нет.
Там восстание обезьян произошло. Теперь писать на JS для серверной стороны - это зашквар. А то белые люди у них, видите ли, - глобальная угроза. Впрочем, думаю, все помнят, как Брендана Эйха, создателя языка, пидорнули из Мудилла Пидорэйшн за то, что не прогнулся под пидорасов. В общем, JS - это пидорская негрофилия (не зря же первое его название - "Моча").
Возвращать воид.
Эван официально окуколден.
Адблок ему не нравится. Так это что, таки реклама? Он получает комиссию с пожертвований? Ссаная китайская шлюха.
У меня для тебя плохие новости. Жсблядки все окуколдены.
https://github.com/vuejs/vuejs.org/pull/2609
>This adds a banner to express community solidarity, like many Open Source projects including Ember, Django, TypeScript, React, Parcel, Angular or styled-components have added already.
>The banner includes a link to the Equal Justice Initiative, inspired by React in particular.
>Жсблядки все окуколдены.
До GO ещё далеко, впрочем: https://www.youtube.com/watch?v=ZACOc-NwV0c
> Ember, Django, TypeScript, React, Parcel, Angular
В сортах хреньворков не разбираемся, на этом говне и так одни пидорасы пишут.
Правильно говорить "жукверик"
https://nodejs.org/en/
Как же мне горит нахуй
Для нас было бы неправильно игнорировать незаработанную привилегию, существующую в Node.js: большая часть руководства проекта - белая, а большинство - мужчины. Мы являемся и были систематически причастны к увековечиванию проблем, которые привели к тому, где мы сейчас находимся.
Начиная с нашего предстоящего мероприятия на высшем уровне Collaborator Summit, и за его пределами, мы будем предлагать наставничество чернокожим членам сообщества, которые хотят стать участниками проекта Node.js. Если вы заинтересованы в этом, пожалуйста, отправьте нам письмо по адресу
Будто бы это говно для макак нужно в беке
Это вот это вот говно, которое без костылей не может даже сделать мне Array.rand()?
Мне всегда было любопытно как называется вот эта болезнь коверкать слова, словно это смешно.
Да это поехавший с хабра, топит там за жс и говорит, что жс идеальный язык без недостатков. Не обращай внимания.
Вся суть хреньворкщика: не можем написать две строчки кода, называя их костылём, - подключим вагон кривых тормозных костылей, пригнанный на квадратных колёсах по прогнившим деревянным рельсам.
То ли дело самому вагон с квадратными колёсами собирать!
Высокоуровневые языки тоже костыль, пиздуй на ассемблере пиши и сишке для макак.
Ну а кто мне виноват, что жс говно сам по себе, а жсбляди такие тупые, что могут строить только
>кривых тормозных костылей, пригнанный на квадратных колёсах по прогнившим деревянным рельсам.
Я не выбирал жс, на фронте альтернатив нет.
а я не знаю
Давай на брейнфаке писать, он тоже тьюринг-полный.
Ну посмотрит и что делать будет? Это же сторона клиента, любой может стать клиентом, поэтому какой смысл в сокрытии этих данных?
Тупая макака не может два значка на ES6 связать.
const массив = ((длина, до) => [...new Array(длина)].map(() => Math.random() * до | 0))(10, 1000);
>Это не язык говно беспомощное, это ты говно беспомощное! Не сметь даже думать об улучшениях!
Ха-ха, классическая жсблядь. Стокгольмский синдром не замучал?
den73, ты?
А, так ты ещё и долбоёб.
Я хочу случайный элемент массива, а не массив, заполненный случайными числами. Жс даже в такую простую и насущную задачу не может из коробки. Чё, тоже скажешь, что нинужно?
Сука, ну охуеть баранины кусок. Какие ещё говнометоды придумаешь для массива, чтобы забить язык всяким говном?
массив[Math.random() * массив.length | 0] уже ленится написать, тупорылая обезьяна.
Да, согласен, лодаш на пустом месте возник, им только лохи пользуются. Буду теперь только на ванилле писать, ты меня убедил, спасибо.
Лодаш возник не на пустом месте, но тащить ради одной-двух функций весь лодаш в боевой проект - классический идиотизм вкатывальщиков.
Счастливый человек такого никогда не напишет. Не хочешь поделиться, что в твоей жизни не так, что ты вынужден на анонимной борде брызгать желчью?
Счастливый человек и кодить не будет.
спасибо
_lodash
Ты в курсе, что ты можешь заимпортировать не весь лодаш, а только нужные функции? tree-shaking называется.
Это тебе к доктору
Если нормально импортировать, то весь лодаш не залезает
Почему бы просто не использовать одну из сотни библиотек для валидации форм? Самое сложное - выбрать что-то вменяемое среди кучи полуработающего говна.
какую посоветуешь? Я уже высрал у себя в проекте Stepper на material-ui, походу прийдеться сносить...
Не знаю, я только фреймворками обмазываюсь. Выбирай сам.
Это пидзец. Есть кто-нибудь вообще в мире программирование не зашкваренный?
Сап, Яваскриптач.
Не могу до конца осознать для себя отличие объекта в js от объекта в других языках, как следствие, суть прототипиного наследования, вот это вот все. Кажется, что понимание Объекта как ассоциативного массива с ФУНКЦИЯМИ - как-то однобоко. В общем, не могу постичь дзен яваскрипт-объектов.
Может быть, есть у кого ссылка, где все это разжевыватся, идеально, если со сравнением с C#/Java?
В js есть только объекты. Больше ничего.
Есть еще примитивы, но их можно тоже рассматривать в качестве синглтон объектов, потому как они боксятся, а сделаны разумеется для производительности. (тем более что сейчас ничего не мешает у примитивных добавить в цепочку прототипов прокси объект, отлавливащий сообщения, типа присваивания, и реалиховать поведение прототипов как полноценных объектов, но это ни к чему. проще воспринимать их как синглтоны. когда надо, любой примитив можно обернуть в полноценный независимый объект).
Так. Короче только объекты.
Все объекты делятся на callable и non-callable. Callable это функции, в понимании большинства. Но по факту это все те же объекты, со всеми свойствами что и у других.
Все объекты могут принимать всего несколько типов сообщений - get, set и call. При чем call может принимать только callable объект. при попытке послать call сообщение не-callable объекту будет исключение.
Сообщение get содержит один параметр, сообщение set два. Сообщение call параметром содержит кортеж аргументов, а так контекст this.
Если в объекте (а так же в цепочке прототипов) не назначены слушатели для get и set с определенными параметрами, ищутся слоты с такими именами в объекте и по цепочке. Если находится возвращается то, что в них лежит. Если в них лежит callable объект и ему посылают сообщние call сразу как получили его из слота, то у него будет перегружен контекст (this) на объект из чьего слота его получили. Если только этот объект не был сконструирован стрелочным синтаксисом, иначе контекст перегрузить нельзя. Если после получение callable объекта из слота его сразу не вызвать, а например положить ссылку на него в переменную, то контекст будет сброшен на тот, который был установлен у него в момент его создания (и это не обязательно будет тот же объект из чьего слота его получили).
У callable объектов есть scope (область видимости) и контекст (this) в момент посылки им сообщения call (вызова). scope средствами языка перегрузить нельзя, но некоторые окружения позволяют (например в ноде есть модеуль vm), this перегружается у callable объектов сконструированных не-стрелочным синтаксисом
Классов нет. Есть конструкторы. Любой конструктор принимает новый созданный объект, которому выставлен определенный прототип (другой объект). Оператор instanceof (someObject instanceof SomeClassName) проверяет лишь есть ли в цепочке прототипов у someObject объект который лежит у SomeClassConstructor в слоте с именем prototype. На сам конструктор ему поебать. Чтобы сменить класс, достаточно сменить цепочку прототипов. Даже если объект был сконструированным определенным конструктором.
Так же у объектов есть параметр ограничения доступа, контролирующие его расширяемость или изменяемость (sealed, extensible, frozen). У слотов объекта есть параметры configurable, enumerable, writable. Параметры слотов объекта не влияют на объекты, что в них лежат. Они лишь контролируют доступ к самим слотам.
Все. Никаких классов. Никаких интерфейсов. Как отдельных сущностей. По факту все есть объект и все строит из них.
наследование реализуется выстраиванием цепочки прототипов. Инкапсуляция только на уровне scope'в (читай замыканий).
В остальном все меняется и все динамично, если только специально все не зафризить в момент конструирования. Но обычно этим никто не заморачивается по причине оверхеда и бессмысленности. Разве только фанатики по иммутабельности, н это все из разряда те, кому надо чтобы им по рукам бил компилятор\рантайм\дядя петя. Все "привычные" понятия тянуться в язык для еще более простого вкатывания тех, кто приходит из других языков. Так уж сложилось, что есть куча литературы по привычному, статически классовому ООП, но очень мало по мессадж-пассинг\прототайп-базед\мета-программинг. Все эти притянутые понятия выливают в синтаксический сахар, который не делает ничего полезного, а даже наоборот, еще больше вносит путаницы и от того непонимамания многих вещей в языке. При этом часто этот синтаксический сахар дэже урезан и вспомнинают об этом лишь после (как например проебались с полями в конструкции class и тянут ее теперь только в proposol'ах будущих версий).
JS истинно объектный язык. В современный язык притащили много вкусных вещей для метапрограммирования. Нову примитивную сущность Symbol, и Proxy-объекты. С помощью которых можно еще больше и сильнее перегружать и менять поведение в динамике.
Другое дело, что почти никто не умеет этим пользоваться и не понимает, что такое объектное программирование на самом деле.
Им нужно не объектное, а статически типизированное. А какие именно структуры будут скрываться за этими типами, не собо важно. Важно что это просто структуры и функции, строго привязанные к ним, или иногда менее строго. То, что в Java\C++ это больше структурное программирование, нежели объектное. Объектное программирование не может существовать без динамической среды. Это противоречит самому понятию объекта. А динамическое программирование это слишком сложна и непанятна. И как бы не старались с пеной у рта фанатики кричать про низкий порог входа - низкий он именно что для входа, а не для всего остального. Модификация программ в рантайме всегда было уделом креативно мыслящих людей. Для большинства это слишком сложный уровень высокой абстракции.
В js есть только объекты. Больше ничего.
Есть еще примитивы, но их можно тоже рассматривать в качестве синглтон объектов, потому как они боксятся, а сделаны разумеется для производительности. (тем более что сейчас ничего не мешает у примитивных добавить в цепочку прототипов прокси объект, отлавливащий сообщения, типа присваивания, и реалиховать поведение прототипов как полноценных объектов, но это ни к чему. проще воспринимать их как синглтоны. когда надо, любой примитив можно обернуть в полноценный независимый объект).
Так. Короче только объекты.
Все объекты делятся на callable и non-callable. Callable это функции, в понимании большинства. Но по факту это все те же объекты, со всеми свойствами что и у других.
Все объекты могут принимать всего несколько типов сообщений - get, set и call. При чем call может принимать только callable объект. при попытке послать call сообщение не-callable объекту будет исключение.
Сообщение get содержит один параметр, сообщение set два. Сообщение call параметром содержит кортеж аргументов, а так контекст this.
Если в объекте (а так же в цепочке прототипов) не назначены слушатели для get и set с определенными параметрами, ищутся слоты с такими именами в объекте и по цепочке. Если находится возвращается то, что в них лежит. Если в них лежит callable объект и ему посылают сообщние call сразу как получили его из слота, то у него будет перегружен контекст (this) на объект из чьего слота его получили. Если только этот объект не был сконструирован стрелочным синтаксисом, иначе контекст перегрузить нельзя. Если после получение callable объекта из слота его сразу не вызвать, а например положить ссылку на него в переменную, то контекст будет сброшен на тот, который был установлен у него в момент его создания (и это не обязательно будет тот же объект из чьего слота его получили).
У callable объектов есть scope (область видимости) и контекст (this) в момент посылки им сообщения call (вызова). scope средствами языка перегрузить нельзя, но некоторые окружения позволяют (например в ноде есть модеуль vm), this перегружается у callable объектов сконструированных не-стрелочным синтаксисом
Классов нет. Есть конструкторы. Любой конструктор принимает новый созданный объект, которому выставлен определенный прототип (другой объект). Оператор instanceof (someObject instanceof SomeClassName) проверяет лишь есть ли в цепочке прототипов у someObject объект который лежит у SomeClassConstructor в слоте с именем prototype. На сам конструктор ему поебать. Чтобы сменить класс, достаточно сменить цепочку прототипов. Даже если объект был сконструированным определенным конструктором.
Так же у объектов есть параметр ограничения доступа, контролирующие его расширяемость или изменяемость (sealed, extensible, frozen). У слотов объекта есть параметры configurable, enumerable, writable. Параметры слотов объекта не влияют на объекты, что в них лежат. Они лишь контролируют доступ к самим слотам.
Все. Никаких классов. Никаких интерфейсов. Как отдельных сущностей. По факту все есть объект и все строит из них.
наследование реализуется выстраиванием цепочки прототипов. Инкапсуляция только на уровне scope'в (читай замыканий).
В остальном все меняется и все динамично, если только специально все не зафризить в момент конструирования. Но обычно этим никто не заморачивается по причине оверхеда и бессмысленности. Разве только фанатики по иммутабельности, н это все из разряда те, кому надо чтобы им по рукам бил компилятор\рантайм\дядя петя. Все "привычные" понятия тянуться в язык для еще более простого вкатывания тех, кто приходит из других языков. Так уж сложилось, что есть куча литературы по привычному, статически классовому ООП, но очень мало по мессадж-пассинг\прототайп-базед\мета-программинг. Все эти притянутые понятия выливают в синтаксический сахар, который не делает ничего полезного, а даже наоборот, еще больше вносит путаницы и от того непонимамания многих вещей в языке. При этом часто этот синтаксический сахар дэже урезан и вспомнинают об этом лишь после (как например проебались с полями в конструкции class и тянут ее теперь только в proposol'ах будущих версий).
JS истинно объектный язык. В современный язык притащили много вкусных вещей для метапрограммирования. Нову примитивную сущность Symbol, и Proxy-объекты. С помощью которых можно еще больше и сильнее перегружать и менять поведение в динамике.
Другое дело, что почти никто не умеет этим пользоваться и не понимает, что такое объектное программирование на самом деле.
Им нужно не объектное, а статически типизированное. А какие именно структуры будут скрываться за этими типами, не собо важно. Важно что это просто структуры и функции, строго привязанные к ним, или иногда менее строго. То, что в Java\C++ это больше структурное программирование, нежели объектное. Объектное программирование не может существовать без динамической среды. Это противоречит самому понятию объекта. А динамическое программирование это слишком сложна и непанятна. И как бы не старались с пеной у рта фанатики кричать про низкий порог входа - низкий он именно что для входа, а не для всего остального. Модификация программ в рантайме всегда было уделом креативно мыслящих людей. Для большинства это слишком сложный уровень высокой абстракции.
Еще добавлю, что то, о чем ты пишешь, очень похоже на "изначальную" идею ООП и объектов как обменщиков сообщениями. Вообще, за один язык из какого-то говна для форм превратился в любопытное и особенное явление.
Теперь хочу разобраться хорошо.
Еще раз спасибо.
В современном ооп (жава/шарп) объект при создании получает ссылку на vtable - список ссылок на методы объекта, там лежат все доступные для класса методы с учетом наследования и полиморфизма. Ни ссылку на vtable ни список методов ты поменять уже не можешь, все уже скомпилировано.
В жс классов нет, vtable нет, зато у каждого объекта есть поле __proto__ в котором лежит другой объект. Это поле ведет себя как обычное поле - можешь менять значения в рантайме. Особенное оно тем, что рантайм жса смотрит на него при лукапе полей, ну про это ты наверное прочитал и про цепочки прототипов тоже.
Для сравнения в хаскеле нет ни классов ни прототипов, тем не менее функции можно перегружать, рантайм выбирает нужную функцию на основании типа значения.
Я не тот анон, да и знаю всю эту кухню хорошо, но ты очень грамотно написал, мое увОжение. Приятно видеть, что тут не только вкатывальщики за длинным рублем после курсов гикбрейнса.
>Модификация программ в рантайме всегда было уделом креативно мыслящих людей.
Скорее, альтернативно мыслящих.
Эта фишка может быть полезной, иногда она сильно выручает и это почти всегда значит, что был обсёр на этапе проектирования, но строить на ней всю программу - это ебланство, а не исключительно креативное мышление, недоступное обывателям. Если ты видишь именно этот аспект как самое важное преимущество js, то ты либо гений в самом прямом смысле, способный в одиночку работать над огромными проектами, либо долбоёб, никогда не работавший над проектом больше туду листа или не работавший в команде.
Если ты считаешь себя гением, то я бы посадил тебя за проект, написанный другим таким гением, и посмотрел, как бы ты разбирался, где какая функция в контексте чего выполняется, где она была модифицирована, вот это вот всё.
Ох уж эти беспощадные пр высеры с натягиванием мягких на квадратные верхи
>потому как они боксятся
на каком этапе? Боксинг и анбоксинг в решетках и Java происходит во время компиляции в промежуточный safe code - MSIL/хз что там в Java. А в JS что? Тем более какая нужна в боксинге, если все является объектом и передается по ссылке?
>Все объекты делятся на callable и non-callable
приведи пример non-callable объекта. Если все объекты наследуется от prototype -> по наследованию получают все поля и методы, соответственно без перегрузки call в null не может быть non-callable объектов
>больше вносит путаницы
в Java есть Эккель, в # есть Рихтер. В JS - еще не находил внятной литературы про работу "под капотом" (я особо и не искал и даже особо не пишу на JS - только React прикручиваю знаниями из других языков и гугла)
>сущность Symbol
для чего это говно вообще нужно?
>на каком этапе?
На этапе доступа к свойствам и методам примитива. Нет, не все передается по ссылке, точнее не так. Тут не уместно рассмтаривать понятия по ссылке и не по ссылке. Если сказать, что примитив епередается по значению - это будет не совсем правдой, потому что под капотом примитив (если это не какое-нибудь маленькое число) - это сложная структура данных, которая так же переадется по ссылке, но для программиста (пользователя) эти нюнансы в принципе не особо нужны. Достаточно понять что изменяемое,а что нет. Примитивы - immutable, любая операция над ним, возвращает новый примитив. И даже если инициализировать объект на основе такого примитива (который как раз будет передаваться по ссылке и являться полноценным объектом, но с неизменяемыми поялми), то все что ты сможешь с ним сделать, это добавлять новыйе свойства, но внутренее представление - тот самый примитив, ты изменить непосредственно в объекте не сможешь. Под капотом как раз есть те самые примитивные типы. 'string' - это примитив. new String('string') - это объект, внутри которого будет лежать примитив. Свойства и методы у них одинаковые, потому что в момент доступа с методу примитива он боксится в свой класс. То есть когда ты делаешь 'string'.length - под капотом происходит new String('string').length
В общем случае для пользователя (программиста) разницы между примитивным типом, и каким-нибудь кастомным синглтоном не будет. Поэтому проще воспринимать примитивные типы как снглтон объекты, чтобы не ебать себе мозги.
>приведи пример non-callable объекта
У всех объектов под капотом есть множество скрытых слотов. Такие как [Prototype], [Scope] (у callable обеъектов), [Call] и т.д. Часть из них ты можешь увидеть в дебаггере, но непосредственного доступа у программиста к ним нет. Callable объекты это те, у которых слот Call не null. По умолчанию он null у всех, кроме function. При этом у констуркторов классов es6, которые тоже в сущности function - [Call] так же отстутсвует.
Так что любой объект non-callble, что тут приводить пример. x = {a:2} , объект x in non-callable
>сущность Symbol
В целом для хранения разной метаинформации в объектах. Все символы уникальны. То есть Symbol() !== Symbol() В отличии от тех же строк или чисел. Есть возможность получать неуникальные символы, само собой. При этом символы являются примитивами, и могут быть ключами объекта. То есть, там где раньше писали x = {__siperprivateslot: 10} с символами можно делать private = Symbol() x = { [private]: 10 } И таким образом избегать конфликтов.
В то же время поля с ключами в виде символов стали использоваться для проброса внутренностей движков наружу, чтобы появилась возможность перегруки. Есть известные символы Symbol.hasInstance, Symbol.iterator, Symbol.toPrimitive и так далее, с помощью которых можно перегружать определенные поведения операторов. Например перегрузить тот самые операторо instanceof или изменить логугку приведения объекта к примитиву, и так далее.
---
>на каком этапе?
На этапе доступа к свойствам и методам примитива. Нет, не все передается по ссылке, точнее не так. Тут не уместно рассмтаривать понятия по ссылке и не по ссылке. Если сказать, что примитив епередается по значению - это будет не совсем правдой, потому что под капотом примитив (если это не какое-нибудь маленькое число) - это сложная структура данных, которая так же переадется по ссылке, но для программиста (пользователя) эти нюнансы в принципе не особо нужны. Достаточно понять что изменяемое,а что нет. Примитивы - immutable, любая операция над ним, возвращает новый примитив. И даже если инициализировать объект на основе такого примитива (который как раз будет передаваться по ссылке и являться полноценным объектом, но с неизменяемыми поялми), то все что ты сможешь с ним сделать, это добавлять новыйе свойства, но внутренее представление - тот самый примитив, ты изменить непосредственно в объекте не сможешь. Под капотом как раз есть те самые примитивные типы. 'string' - это примитив. new String('string') - это объект, внутри которого будет лежать примитив. Свойства и методы у них одинаковые, потому что в момент доступа с методу примитива он боксится в свой класс. То есть когда ты делаешь 'string'.length - под капотом происходит new String('string').length
В общем случае для пользователя (программиста) разницы между примитивным типом, и каким-нибудь кастомным синглтоном не будет. Поэтому проще воспринимать примитивные типы как снглтон объекты, чтобы не ебать себе мозги.
>приведи пример non-callable объекта
У всех объектов под капотом есть множество скрытых слотов. Такие как [Prototype], [Scope] (у callable обеъектов), [Call] и т.д. Часть из них ты можешь увидеть в дебаггере, но непосредственного доступа у программиста к ним нет. Callable объекты это те, у которых слот Call не null. По умолчанию он null у всех, кроме function. При этом у констуркторов классов es6, которые тоже в сущности function - [Call] так же отстутсвует.
Так что любой объект non-callble, что тут приводить пример. x = {a:2} , объект x in non-callable
>сущность Symbol
В целом для хранения разной метаинформации в объектах. Все символы уникальны. То есть Symbol() !== Symbol() В отличии от тех же строк или чисел. Есть возможность получать неуникальные символы, само собой. При этом символы являются примитивами, и могут быть ключами объекта. То есть, там где раньше писали x = {__siperprivateslot: 10} с символами можно делать private = Symbol() x = { [private]: 10 } И таким образом избегать конфликтов.
В то же время поля с ключами в виде символов стали использоваться для проброса внутренностей движков наружу, чтобы появилась возможность перегруки. Есть известные символы Symbol.hasInstance, Symbol.iterator, Symbol.toPrimitive и так далее, с помощью которых можно перегружать определенные поведения операторов. Например перегрузить тот самые операторо instanceof или изменить логугку приведения объекта к примитиву, и так далее.
---
День добрый, анон.
Может ли кто-нибудь дать ответ на данный вопрос?
Около 30 минут сижу с тетрадью и ручкой, но, судя по всему, ловлю тупняки.
Грубо говоря, если n > 0, но n < 1001 => ((++n)+ n). Или я чего-то не понимаю?
Возможно ли написать рекурсивную функцию, которая вычисляет сумму серии чисел? (например, сумму чисел от 1 до 1000)
Не, хуйня какая-то. Не понимаю, как сложить весь ряд, а не довести его до 1000.
нихуя не понял но
def recursive_sum(upper_bound):
if upper_bound == 0:
return 0
else:
return upper_bound + recursive_sum(upper_bound-1)
function getRectArea(width, height) {
if (width > 0 && height > 0) {
return width * height;
}
return 0;
}
читается примерно так:
1. Объявляем функцию.
2. Если width > 0 и height > 0, то возвращаем произведение онных.
3. Иначе, возвращаем 0.
Т.е. здесь, просто опущено else перед 'return 0'? Или нет?
В целом, да.
Но else тут не опущено, оно просто не нужно.
У тебя идет
2. Если width > 0 и height > 0, то прерываем выполнение функции и возвращаем произведение онных.
Соотвественно если условие не выполняется, то выполнение функции не прерывается и идет дальше.
Спасибо, мил человек.
обычная зп для первой работы в мухосранске. Стэк уныние и боль
это в деревянных написал или в UAH? Если в деревянных - то идите вы нахуй с такими ЗП
Ошибка постинга: Bad Gateway - что за хуйня?
Очередной вкатывалищик на связи.
Выбирая пет-проект, решил совместить приятное с полезным. Одним знакомым хуям, которые решили стать звездами порнахаба понадобился бот, который будет фолловить новых пользователей (ну или всех пользователей).
Можно ли это сделать на JS`е? И в каком направлении для этого капать?
возьми nodejs. с его помощью можно запускать скрипты вне браузера и делать запросы на сайты.
если надо просто отправить запросы, см. библиотеку request, если надо взаимодействовать с загруженной страницей в браузере, есть какая-то библиотека - эмулятор браузера, название не помню, но можно нагуглить
не знаете, что вообще делать? с помощью инструментов разработчика в браузере изучите кнопки по которым нужно щёлкать, посмотрите каким элементам они соответствуют, какой код вызывают, ну а дальше сами.
если не понимаете что я говорю то наверное будет трудно и проще нанять профи
>Как в реакте отключать асинхронщину?
Но в рякте нет ассинхронщины. Конкарент моуд пока ещё манямирок и с нынешним состоянием Абрамова сомневаюсь, что прогресс будет продвигаться в этом направлении.
>Или что то типо then, как в axios.
Как бы тебе сказать... then не фича аксиоса, а просто адапция под промисы.
Читай https://javascript.info/promise-chaining
>>18400
Да, смузи просто впитывается в мозг и оседает.
>В js есть только объекты. Больше ничего.
нет, все ВЕДЁТ себя как объект. Примитивные значения не объекты.
Все, что я вижу в туторах - это просто вывод через console.log нужные переменные. Хуйня якась
Работающие брейкпойнты — не тривиально, на это надо потратить время. Либо чтобы разобраться, как это всё устроено на низком уровне, либо чтобы правильно настроить среду разработки, в которой оно работает из коробки. В vue работает из коробки.
по совету >>18525 подебажил через брейкпоинты в хроме - вроде все ок. В IDE так и не смог запустить (особо не пытался) дебаггер.
Вопрос, раз уж поднял эту тему - как тестировать в JS/React? У меня нет опыта тестов в этом языке, но в # я создавал моки и прогонял юнити тестами блоки кода (изолированные). Как тут, если даже NameSpace нету?
Я не знаю, никогда не видел, чтобы фронтенд тестировали.
Можно рядом с каждой функцией создавать имяФункцииTest(), и где-нибудь ещё функцию runTests(), в которую захардкодить все эти вызовы, и запускать её вручную.
Ну, или jestjs.io
Хотел скинуть им прямые ссылки на залитые на сервер проекты, чтобы не отсеили сразу. Два уже есть, но они средней хуевости, а этот на TS и с тестами. Скину тогда репозиторий, может хватит для вызова на собеседование.
Есть сайт скачанный с помощью
https://github.com/hartator/wayback-machine-downloader
с archive.org. Что делать дальше чтобы можно было в браузере просматривать со всеми стилями/картинками? Наверняка есть automated скриптег чтобы это все comprehensively изменить, есть же?
https://archive.st/ad9y
let menu = document.querySelectorAll('.menu .menu-item');
menu.insertBefore(menu[3], menu[2]);
let menu = document.getElementsByClassName("menu")[0],
menuItem = document.getElementsByClassName("menu-item");
menu.insertBefore(menuItem[2], menuItem[1]);
Это конечно круто, но у меня идет 3 стейта и 3 метода, каждый из которых проверяет стейт и делает setState другого свойства. Условно:
state1, state2, state3
CheckMethod1(state1) { return setState2 }
CheckMethod2(state2) { return setState3}
CheckMethod3(state3) { return result }
И setState в реакте по хукам происходит после рендеринга страницы и после выполнения всех 3 методов. Хуйня якась с этими хуками. Тригерить forceUpdate() после каждого метода?
пикрилейтед и archive.st-рилейтед это платный archivarix
мне нужно из того что
https://github.com/hartator/wayback-machine-downloader
как-то сделать читабельную версию сайта
сайт обыкновенная вики с картинками и стилями
Ну купи на торрентах.
в моем случае это валидационные поля (login, password), которые в случае ошибки заполняются полями (loginError, passwordError). Третий state - это если loginError и passwordError == ''
спасибо, сохранил ссыль, когда дойдет дело до тестирования или прийду к TDD, посмотрю что там
getElementsByClassName возвращает массив, откуда ты берешь элемент с индексом 0
>как в аргумент функции x попадают элементы массива?
никак, туда попадает массив, нужно какую то логику еще добавить
проиграл с макаки
так это я хуйню сказал, щас посмотрел, походу туда элементы попадают из filter, по типу замыкания что ли, как же тяжело аааааа
Вопрос по поводу книги JavaScript. Подробное руководство. 6-е издание, Дэвида Флэнагана. В продаже я нашел только 2017 год, там описывается ECMAScript 5. Есть смысл покупать? Может есть другая книга с актуальной информацией? Спасибо
Вечная ротация персонала и структура работы, при которой сперва пишут, а потом думают.
У твиттора вообще отдельного css файла нету, они всё инлайном хуячат.
Никакую. Нужно либо WordPress освоить и работать за 5к/неделя, либо какой-нибудь фреймворк из трёх - React/Vue/Angular
Не функция, а аргумент функции. function(x)
А что по фреймворкам? Читал реакт самый годный из них. Сколько в него вкатываться? Что потом по зп?
Как сашка серова?
Всегда было интересно как работает ставка в час. Типо за тобой надзирателя закрепляют который смотрит пишешь ты код или листаешь спотифай или что? Расскажи подробнее.
Либо в конце недели заполняешь таймщит и тебе платят по нему, либо просто договариваешься что работаешь 40 часов в неделю, и тогда ничего заполнять не надо, зависит от компании
сейчас например - зареверсить старую систему, переписать на реакт фронтенд + java бек, AWS. ну я один делаю, лул. только прогресс репорты шлю каждый день, и все.
Метод filter вызывает твою функцию для каждого элемента и передает туда этот элемент как аргумент, вот и все
Да всмысле?
Ты шо у детей спрашиваешь, извращенец?
>есть ли либа с генерацией таких линков
сам сгенерируй. или тебе надо на каждый случай свою либу?
1. фронт реквестит сброс пароля
2. бек генерирует линк, отсылает письмо
3. юзер кликает на линк, попадает обратно на фронт
4. фронт парсит токен, генерирует страницу с кнопкой "окей, введите новый пароль".
5. отсылает новый пароль и токен беку
6. бек проверяет что токен валидный и не заэкспайрился
7. если норм, меняет пароль, возвращает фронту хттп 200
8. фронт показывает счастливое сообщение что пароль поменян.
вопрос только с генерацией страницы на фронте, остальное - без проблем. Вопрос - как?
Не понимаю в чем проблема, обычная страница на реакте (часть твоего приложения). Просто парсит токен из урла, рисует форму для смены пароля
не знаю, как это сделать. Page generator react js - не гуглится. Скажи хотя бы, как это правильно называется
Нету никакого генератора. Это дело в худшем случае реализуется отдельным компонентом, который рендерится в зависимости от состояния кнопки "забыл пароль" в каком-нибудь GlobalStateSingletonLoginControl.
можешь дать пример реализации? Я использую Router -> Route и делать страницу типо RecoverPassword имо не торт, т.к. у юзера не должно быть доступа к ней при переходе /RecoverPassword. К такой странице должен добавляться токен и только тогда получать доступ. Я думаю, что запилить что то типо <Route path="/CreatePassword + $token"> из GlobalState. Что скажешь?
Вот это поворот! Динамикодебилы убили ES4 в давние времена.
Хроника событий: чистильщики бассейнов не понимают разницу между manifest и static типизацией, хоронят обе, потом видят в лице typescript приличный пример последней и спускают в штаны от радости. На всё про всё - больше десяти лет.
Если что, сейчас те же чистильщики бассейнов делают тебе simd в webassembly - с фиксированным, сукаблять, размером вектора.
Да хуйню бы какую нибудь сделали вместо типов. Импорты сделали, теперь пропозал на переделку висит - если его примут - будет два синтаксиса, вот потеха.
И если с импортами можно обосраться только сверху файла, с типами - сразу в всем. Даже юнион пишут как тупл, "комитет", блядь.
Тайпскрипт хоть задепрекейтить и удалить может свои проебы, а хромоги "не хотят сломать интернет"
Html импорты задепрекейтили и удалили. Use strict половину синиаксиса удалил. Так что вме можно.
Хуясе ты нюфаня.
https://github.com/bmeck/proposal-from-import
Но он в inactive, так что не будет
Вкратце, неудобно интелисенсить, удобнее писать from "yoba" import { / wild import list appears / }
>>22090
Тогда надежда есть, просто все эти смешные истории про "о, нет, это старый флексбокс, мы так уже не делаем" и "шадоу дом будет, но другой версии" немношк не смешные
Обратная совместимость, это когда старый код выполняется в новых версиях исполняющей среды, а не новый код в старых версиях. Так что никакой проблемы с доманием веба никогда не было. Текушие стандарты и так несовместимы со старыми движками и никогда не будут. Большое заблуждение считать, что в вебе что-то не меняют чтобы не сломать. Не меняют, потому что есть большой бюррократический процесс. И решение принимает ни кто тоединолично. Хочешь затащить статическую типизацию в ванилу - кто мешает? Пиши пропозлы, отстаивай доказывай, все в твоих руках. Но никто не делает. А те кто делают, в итоге не могут отстоять необходимость того или иного грвна.
Теперь даже мозилла учит макакенов реакту.
Странно, меня она Vue учит:
https://developer.mozilla.org/en-US/docs/Learn/Tools_and_testing/Client-side_JavaScript_frameworks/Vue_getting_started
Наверно ты петух...
Изменение стандартного поведения.
Термин «перегрузка» — это калька английского слова overloading. Такой перевод появился в книгах по языкам программирования в первой половине 1990-х годов. В изданиях советского периода аналогичные механизмы назывались переопределением или повторным определением, перекрытием операций.
/\(\)=>/
Он должен найти синтаксис лямбда-выражения, типа (arg1, arg2)=>
Но находит только ")=>", то есть без аргументов и открывающей скобки.
Почему так?
/\(.*\)=>/
у меня всё работает
(возможно джвач напутает пикчи)
Пик1 - я добавил кнопку на сайт
Пик2- код кнопки. По нажатию она должна открывать нужный мне html файл, однако, происходит пик3
Пик3 - Браузер не пропускает открытие этой ссылки по нажатию на кнопочку.
Пик4 - эта же ссылка прекрасно открывается, если ее просто вбить в строку браузера.
Вопрос, как эту ебалу обойти, что бы оно открывалось нормально?
Читай гайды по созданию расширений для хрома. Какой нахуй window.open, это не так делается.
Да там все не так делается
>.innetHTML +=
>.onclick =
Ему вообще гайды надо читать, в целом, а не только по расширениям.
ну так ебать скажи как оно делается, я сюда за этим пришел. То что мне надо читать гайды я и так знаю.
Тут по-твоему сидят все кто каждодневно пилит расширения или что. Или телепаты, которые в курсе в каком контексте ты запускаешь код. Очень здорово предлагать сходить за тебя на developer.chrome.com но будет лучше, если ты сделаешь это сам.
Вот так?
let encode = (str) => str.replace(/(\w)\1{1,}/g, m => m.length + m[0]);
let decode = (str) => str.replace(/\d\w/g, m => m[1].repeat(m[0]));
А впрочем уже не важно.
В руководстве по реакту я нашёл вот такую вот хуйню
>this.handleClick = this.handleClick.bind(this);
вот тут https://reactjs.org/docs/handling-events.html
Объясните, как это хуйня работает и зачем привязывать к себе себя же?
Не привязка себя к себе а привязка метода к контексту. Посмотри в каком контекте объявляется метод, и что такое this в твоем примере.
Это не работает.
Хотя мне кажется все намного проще. У этого сайта есть сайт с таким же названием но с другим региональным доменом, который работает по http. Мне кажется это honeypot от этих же людей, чекают подключенные ip на сайте с ответами - сравнивают с подключенными ip на сайте экзамена - и если есть совпадения репортят этих людей преподу.
А где лучше? В какой нибудь пыхе были бы везде ебучие function
анонимный метод, хули. В # тоже самое
Смотри с телефона.
Что перегружено?
some.map(arg => result)
Это то же само, что
some.map(function(arg){ return result }.bind(this))
Что именно тебе непонятно?
На твоем скрине тебе просто поясняют, что если ты используешь синтаксический сахар ввиде aeeow functions без block statement а сразу возвращаешь что-то, и это что-то - литерал объекта, то тебе следует его обернуть в скобки, потому как {...} используется как и для литерала объекта, так и для тела функции, и чтобы пасрер мог понять, что именно ты от него хочешь, то ты должен явно это обозначить. Если тебе это сложно, но не используй сахар, а пиши везде функции с телом и испольуй явный return, тебе никто не мешает.
users.map(user => {
return {firstname: vasy, lastname: huyasa}
})
Можешь и стрелочные функции неиспользовать а писать function, и точки с запятыми расставлять явно. Тебе никто не мешает. Это сахар. Но сахар он как раз для того, чтобы писать и читать было ЛЕГЧЕ. Как так выходит, что тебе от сахара сложнее - не ясно.
он прийдет на галеру, где будет стандарт. В его случае пусть лучше идет от дефолта к сахару - легче будет приспособиться. А то увидит всю конструкцию и будет в носу ковырять, что с ней делать. Тоже самое и с итераторами - current, next, reset, а не один ебаный yeild
>дистанционно
не дочитал. Тогда это пиздежь, насчет трафика. Могу сделать хендлер на открытое окно в браузере - альтабнулся или переключил вкладку - идет событие.
Возьми ноут/телефон/планшет и не парься
Да я то так и сделал, только мне просто стал интересно каким образом javascript может детектить подобное. По сути ведь заходя на эту парашу, я могу потенциально локально скачать себе js-скрипт, который сигналит обратно админом если я выделю что-нибудь из текста на странице задания, так ведь?
конечно, клиенская сторона на то и клиентская
Жопаскрипт может воспроизвести полную хронологию твоих действий на странице, вплоть до движений курсора и переключения на другую вкладку, не говоря уже о таких тривиальных событиях как выделение и копирование. Можно даже отследить открывалась ли панель разработчика.
Это заёбы классовой системы в ЖС. Если пишешь через функциональные компоненты, то с этим пердолиться не нужно.
async text => {
let err = false
do {
try {
let result = await request(text)
err = false
} catch (e) {
err = e
}
} while (err);
}
Посылаю запросы и получаю результат либо ошибку.
Когда получаю ошибку - я хочу направлять запросы еще столько раз, пока не получу результат.
Написал такую функцию, то когда получаю ошибку - исполнение останавливается.
Что я сделал не так?
Может кто объяснить, почему в задаче
Реализуйте (с использованием рекурсивного процесса) функцию sequenceSum, которая находит сумму последовательности целых чисел. Последовательность задается двумя значениями: begin - начало последовательности, end - конец последовательности.
sequrnceSum(1, 3) можно представить как:
1 + sequrnceSum(2, 3)
1 + 2 + sequrnceSum(3, 3)
Откуда это вообще? Где можно подробнее почитать?
что почитать? Тебе дают массив чисел, ты должен по нему пройти с N индекса до N индекса, сложить все целые числа и вернуть ее
И что? я там просто смотрю его наличие
Вся эта функция анонимна, я ее передаю в качестве аргумента другой функции, как ее вызвать?
Не, я мог сделать, может быть, и рекурсивный вызов, но в том виде в котором я записал тоже должно работать
>как ее вызвать?
text()
Я присмотрелся - какой нахуй Do-while? В Try проверяешь исполнение, если все ок - получаешь результат минуя catch или же обычным return. Получаешь ошибку - в Catch делай рекурсию функции, все
text это не имя функции, а аргумент
> в Catch делай рекурсию функции
> Вся эта функция анонимна, я ее передаю в качестве аргумента другой функции, как ее вызвать?
У меня есть video элемент, которыйуспешно забирает видео, а вот элемент track, который должен забрать субтитры пишет вот такую хуйню Попытка нарушения системы безопасности: содержимое «http://localhost:8080/» не имеет права загружать данные из
Допустим у меня есть форма из трёх полей. Как лучше с такой работать? Использовать useState для каждого поля отдельно или сделать объект, который имеет свойство под каждое поле?
Короче, нужно элементу video добавить атрибут crossorigin, пиздец
ПЕРЕКАТ >>1724720 (OP)
ПЕРЕКАТ >>1724720 (OP)
ПЕРЕКАТ >>1724720 (OP)
ПЕРЕКАТ >>1724720 (OP)
ПЕРЕКАТ >>1724720 (OP)
ПЕРЕКАТ >>1724720 (OP)
ПЕРЕКАТ >>1724720 (OP)
ПЕРЕКАТ >>1724720 (OP)
ПЕРЕКАТ >>1724720 (OP)
ПЕРЕКАТ >>1724720 (OP)
ПЕРЕКАТ >>1724720 (OP)
ПЕРЕКАТ >>1724720 (OP)
ПЕРЕКАТ >>1724720 (OP)
ПЕРЕКАТ >>1724720 (OP)
ПЕРЕКАТ >>1724720 (OP)
ПЕРЕКАТ >>1724720 (OP)
ПЕРЕКАТ >>1724720 (OP)
ПЕРЕКАТ >>1724720 (OP)
ПЕРЕКАТ >>1724720 (OP)
ПЕРЕКАТ >>1724720 (OP)
ПЕРЕКАТ >>1724720 (OP)
ПЕРЕКАТ >>1724720 (OP)
ПЕРЕКАТ >>1724720 (OP)
ПЕРЕКАТ >>1724720 (OP)
ПЕРЕКАТ >>1724720 (OP)
ПЕРЕКАТ >>1724720 (OP)
ПЕРЕКАТ >>1724720 (OP)
ПЕРЕКАТ >>1724720 (OP)
ПЕРЕКАТ >>1724720 (OP)
ПЕРЕКАТ >>1724720
ПЕРЕКАТ >>1724720
ПЕРЕКАТ >>1724720
ПЕРЕКАТ >>1724720
ПЕРЕКАТ >>1724720
ПЕРЕКАТ >>1724720
ПЕРЕКАТ >>1724720
ПЕРЕКАТ >>1724720
ПЕРЕКАТ >>1724720
ПЕРЕКАТ >>1724720 (OP)
ПЕРЕКАТ >>1724720 (OP)
ПЕРЕКАТ >>1724720 (OP)
ПЕРЕКАТ >>1724720 (OP)
ПЕРЕКАТ >>1724720 (OP)
ПЕРЕКАТ >>1724720 (OP)
ПЕРЕКАТ >>1724720 (OP)
ПЕРЕКАТ >>1724720 (OP)
ПЕРЕКАТ >>1724720 (OP)
ПЕРЕКАТ >>1724720 (OP)
ПЕРЕКАТ >>1724720 (OP)
ПЕРЕКАТ >>1724720 (OP)
ПЕРЕКАТ >>1724720 (OP)
ПЕРЕКАТ >>1724720 (OP)
ПЕРЕКАТ >>1724720 (OP)
ПЕРЕКАТ >>1724720 (OP)
ПЕРЕКАТ >>1724720 (OP)
ПЕРЕКАТ >>1724720 (OP)
ПЕРЕКАТ >>1724720 (OP)
ПЕРЕКАТ >>1724720 (OP)
ПЕРЕКАТ >>1724720 (OP)
ПЕРЕКАТ >>1724720 (OP)
ПЕРЕКАТ >>1724720 (OP)
ПЕРЕКАТ >>1724720 (OP)
ПЕРЕКАТ >>1724720 (OP)
ПЕРЕКАТ >>1724720 (OP)
ПЕРЕКАТ >>1724720 (OP)
ПЕРЕКАТ >>1724720 (OP)
ПЕРЕКАТ >>1724720 (OP)
ПЕРЕКАТ >>1724720
ПЕРЕКАТ >>1724720
ПЕРЕКАТ >>1724720
ПЕРЕКАТ >>1724720
ПЕРЕКАТ >>1724720
ПЕРЕКАТ >>1724720
ПЕРЕКАТ >>1724720
ПЕРЕКАТ >>1724720
ПЕРЕКАТ >>1724720
Это копия, сохраненная 26 ноября 2020 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.