Это копия, сохраненная 27 июля 2020 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
НЕ КОПИРУЙ КОД ПРЯМО В ТРЕД!
Для программирования на ХТМЛ https://jsfiddle.net/
Для Ноды с консолькой https://repl.it/languages/nodejs
Для фреймворков https://codesandbox.io/
Залить, задеплоить страничку или сервер https://zeit.co/now
Аноны, хочу получить советов мудрых, высераю пару предложений и код на скриншоте, а получаю смехуёчки. Как быть?
Если рассчитываешь получить дельный ответ, сформулируй правильно вопрос:
что я хочу получить, что я для этого делаю, что я вместо этого получаю.
Сделай песочницу по ссылкам выше для ясности и удобства. Если когда самостоятельно найдёшь решение — поделись в треде, мы за тебя переживаем.
> Странное приведение типов, комплексные правила, неявные ошибки
Язык разрабатывался с расчётом на доступность Интернета для авторов любого вида. Даже плохой код должен хоть как-то работать. А тебя не обязывает всеми этими странностями пользоваться.
> Почему бы не сделать новую нормальную версию языка
Выгоды сомнительны, а Интернет ломать нельзя.
http://exploringjs.com/es6/ch_one-javascript.html
> Динамика, не компиляется, недоязык
Странно, что у тебя после объявления всех типов и компиляния осталось время кхекхекать в этом треде, старичок.
> Что там асинхронно происходит в этом одном потоке Event Loop
https://www.youtube.com/watch?v=8cV4ZvHXQL4
https://www.youtube.com/watch?v=j4_9BZezSUA
> Я могу сделать запрос с сервера к чужому API, почему с клиента такой запрос не работает
Для твоей безопасности в браузерах принудительно работает ограничение доступа к кросс-доменным ресурсам. Требуются специальные заголовки
https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS
> Хочу получить доступ к файлам на винте
Тебе бы не хотелось, чтоб произвольный сайт мог получить доступ к твоим файлам.
https://developer.mozilla.org/en-US/docs/Web/API/File/Using_files_from_web_applications
В К А Т И Т Ь С Я
Возраст, пол, образование не имеют решающего значения. Всё бесплатно для самостоятельных. Времени потребуется год с нуля, но это не точно.
https://ru.hexlet.io/blog/categories/success
Английский обязательно. Проследуй в /fl за гайдом.
Учись учиться.
https://www.youtube.com/watch?v=5MgBikgcWnY
https://www.youtube.com/watch?v=IhuwS5ZLwKY&list=PL8dPuuaLjXtNcAJRf3bE1IJU6nMfHj86W
Ты помнишь образы и связи, а не конспекты.
https://www.youtube.com/watch?v=gj3ZnKlHqxI
https://www.youtube.com/watch?v=5nTuScU70As
Ты — это то, что ты делаешь каждый день.
https://www.youtube.com/watch?v=eLYNM5QAnpw
https://www.youtube.com/watch?v=JAnNUhWJQI8&list=PL5faAYlGYYoGr49h1WMInNSd5Ya1uu7KT&index=6
https://habitica.com/
Сколько помидорок сможешь сделать за неделю?
https://www.youtube.com/watch?v=H0k0TQfZGSc
https://pomotodo.com/
HTML, CSS. Ничего сложного.
Требует только усидчивости. Как раз подойдёт для того, чтоб в простых условиях выработать правильные привычки и дисциплину.
MDN — сообщество разработчиков Мозила, обширнейшая вики-подобная база знаний по веб-технологиям. По любому вопросу поиски начинать стоит тут. Здесь же и учебник по основам разработки. Есть и на русском, но не в самом актуальном состоянии. Читай-делай тут разделы HTML и CSS, до раздела по JavaScript, этот гайд дальше предложит более лучший учебник. Но можешь и этот полистать, тоже достойный, любая информация лишней не будет.
https://developer.mozilla.org/en-US/docs/Learn/Getting_started_with_the_web
Подробно по каждому элементу с примерами, много практики, много полезных списков:
https://www.w3schools.com/html
https://www.w3schools.com/css
https://www.w3schools.com/howto
Параллельно под чаёк по вечерам посмотри:
https://www.youtube.com/watch?v=Sy_wba7l1UU&list=PLawfWYMUziZqyUL5QDLVbe3j5BKWj42E5
https://www.youtube.com/watch?v=tpIctyqH29Q&list=PL8dPuuaLjXtNlUrzyH5r6jN9ulIgZBpdo
https://www.youtube.com/watch?v=rrRZZ_3licM&list=PLo6puixMwuSMIB7x6MNBTNQA3P3Mqo_33
На этом этапе стоит начать формировать информационный фон. Собирай подписки на рассылки, Ютюб, Твиттер. Но помни, если ты что-то смотришь-читаешь, то стоит потратить минимум столько же времени на написание кода по мотивам (весь написанный код нужно бережно хранить, чтоб было, что показать). Иначе это обычная бестолковая прокрастинация.
https://habr.com/ru/company/everydaytools/blog/322980/
Или же это может быть толковая рекреация — лучше посмотреть интересный доклад, чем очередной сериал.
JavaScript. Шутки кончились.
Очень дружелюбен к ньюфаням и даст тебе хороший старт:
https://javascript.info/
У него есть предыдущая версия на русском, но она безнадёжно устарела. Здесь среди прочего описываются многие тонкости языка, которые полезны для общей картины, но на деле вряд ли пригодятся, не фрустрируй. Задачки обязательно делать. Если задачка совсем (за 10 минут) не получается, то прилежного разбора и воспроизведения готового решения будет вполне достаточно.
Искать каждый раз подробности на MDN ты уже имеешь привычку, не забывай пользоваться.
Как писать для людей:
https://github.com/ryanmcdermott/clean-code-javascript
Ссылкота по понятиям:
https://github.com/leonardomso/33-js-concepts
Тут уже нужно начать искать работку и получать опыт отказов. Удача любит смелых. Только не ври о своём уровне работодателю, а главное — себе. Сейчас ты на уровне ребёнка, который только научился говорить, пользы от тебя столько же. Но собеседования это единственный способ для тебя узнать, что требуется сейчас в твоей области (во всех смыслах) и что нужно лично тебе.
Если ещё есть время и хочется подробностей, повторений, закреплений, то
https://www.freecodecamp.org/
годнота, интерактивно обозревает всё с упором на практику.
Задачки и соревнования:
https://www.codewars.com/
Забавные объяснения и проекты:
https://eloquentjavascript.net/
Концептуальный разбор для продвинутых:
https://github.com/getify/You-Dont-Know-JS
https://github.com/getify/Functional-Light-JS
Исчерпывающе подробные справочники:
http://speakingjs.com/es5/index.html
http://exploringjs.com/es6/index.html
http://exploringjs.com/es2016-es2017/index.html
http://exploringjs.com/es2018-es2019/toc.html
Массивнейшая ссылкота по всем темам:
https://frontendmasters.com/books/front-end-handbook/2019/
Дизайн, редактура, прочие смежные дела:
https://bespoyasov.ru/front-not-pain/
Node.js позволит тебе вырваться за пределы браузера, сделать свой сервер, автоматизировать рутину в разработке и жизни.
Нода это уже отдельная среда, человечного MDN’a тут нет. Но ты же уже не боишься серьёзных документаций. Нужно сразу найти доки Ноды “nodejs doc” и сверяться с ними.
https://www.youtube.com/watch?v=fBNz5xF-Kx4
https://medium.freecodecamp.org/the-definitive-node-js-handbook-6912378afc6e
https://www.youtube.com/watch?v=WBcHgaoHh1k&list=PLHhi8ymDMrQZmXEqIIlq2S9-Ibh9b_-rQ
На этом этапе ещё нужно разобраться с инфраструктурой:
Linux
https://itsfoss.com/getting-started-with-ubuntu/
https://linuxjourney.com/
shell
https://tproger.ru/translations/bash-cheatsheet/
https://explainshell.com/
https://www.shellscript.sh/
Git
https://tproger.ru/translations/difference-between-git-and-github/
https://githowto.com
https://git-scm.com/book/ru/v2
Docker
https://dev.to/azure/docker---from-the-beginning-part-i-28c6
https://blog.risingstack.com/how-to-debug-a-node-js-app-in-a-docker-container/
https://code.visualstudio.com/docs/remote/containers
Приложение. Всё по-взрослому.
Теперь пора делать что-то серьёзное, применять на практике. Имеется множество готовых приблуд, можно делать приложения любой сложности.
В качестве идеи для проекта стоит брать что-то близкое тебе, чтоб с душой. Можно воспроизвести используемое тобой приложение, что-то улучшить. Можно сделать что-то полезное тебе в быту — учёт просмотренных тайтлов, счётчик калорий, агрегатор новостей.
https://medium.freecodecamp.org/every-time-you-build-a-to-do-list-app-a-puppy-dies-505b54637a5d
https://medium.freecodecamp.org/want-to-build-something-fun-heres-a-list-of-sample-web-app-ideas-b991bce0ed9a
https://medium.freecodecamp.org/summer-is-over-you-should-be-coding-heres-yet-another-list-of-exciting-ideas-to-build-a95d7704d36d
Писать здесь гайды к каким-то приблудам нет никакого смысла, так как каждая вполне достойна отдельного треда и имеет свой сайт, где с гайдами постарались. Жизнь готовила тебя к этому, ты сможешь разобраться самостоятельно. Алгоритм такой:
0 - находишь на Ютюбе любой обзорный видос, чтоб страх неизвестного пропал;
https://www.youtube.com/watch?v=sBws8MSXN7A
1 - находишь официальный сайт приблуды;
https://reactjs.org/
2 - на офсайте делаешь Tutorial / Getting started;
https://reactjs.org/tutorial/tutorial.html
3 - на офсайте читаешь доки, АПИшки по диагонали;
https://reactjs.org/docs/hello-world.html
4 - начинаешь делать оригинальные нужные штуки, сверяясь с доками;
https://github.com/gothinkster/react-redux-realworld-example-app
5 - попробуй поискать “github awesome приблуда”;
https://github.com/enaqx/awesome-react
6 - отважно посмотри исходники.
https://github.com/facebook/react
Сейчас с большим отрывом самый популярный стек это React + Express + Mongo. Получается что-то такое:
https://www.youtube.com/watch?v=PBTYxXADG_k&list=PLillGF-RfqbbiTGgA77tGO426V3hRF9iE
Оформи такое в портфолио на Гитхабе и можешь уверенно искать работку.
А как же другие приблуды? Сложно и долго осилить только первый язык, фреймворк, что-либо. Следующий ты освоишь в считанные недели, а то и дни.
При перекате не забудь тему и тег. Шапка с разметкой:
https://pastebin.com/NCviF7pu
> Странное приведение типов, комплексные правила, неявные ошибки
Язык разрабатывался с расчётом на доступность Интернета для авторов любого вида. Даже плохой код должен хоть как-то работать. А тебя не обязывает всеми этими странностями пользоваться.
> Почему бы не сделать новую нормальную версию языка
Выгоды сомнительны, а Интернет ломать нельзя.
http://exploringjs.com/es6/ch_one-javascript.html
> Динамика, не компиляется, недоязык
Странно, что у тебя после объявления всех типов и компиляния осталось время кхекхекать в этом треде, старичок.
> Что там асинхронно происходит в этом одном потоке Event Loop
https://www.youtube.com/watch?v=8cV4ZvHXQL4
https://www.youtube.com/watch?v=j4_9BZezSUA
> Я могу сделать запрос с сервера к чужому API, почему с клиента такой запрос не работает
Для твоей безопасности в браузерах принудительно работает ограничение доступа к кросс-доменным ресурсам. Требуются специальные заголовки
https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS
> Хочу получить доступ к файлам на винте
Тебе бы не хотелось, чтоб произвольный сайт мог получить доступ к твоим файлам.
https://developer.mozilla.org/en-US/docs/Web/API/File/Using_files_from_web_applications
В К А Т И Т Ь С Я
Возраст, пол, образование не имеют решающего значения. Всё бесплатно для самостоятельных. Времени потребуется год с нуля, но это не точно.
https://ru.hexlet.io/blog/categories/success
Английский обязательно. Проследуй в /fl за гайдом.
Учись учиться.
https://www.youtube.com/watch?v=5MgBikgcWnY
https://www.youtube.com/watch?v=IhuwS5ZLwKY&list=PL8dPuuaLjXtNcAJRf3bE1IJU6nMfHj86W
Ты помнишь образы и связи, а не конспекты.
https://www.youtube.com/watch?v=gj3ZnKlHqxI
https://www.youtube.com/watch?v=5nTuScU70As
Ты — это то, что ты делаешь каждый день.
https://www.youtube.com/watch?v=eLYNM5QAnpw
https://www.youtube.com/watch?v=JAnNUhWJQI8&list=PL5faAYlGYYoGr49h1WMInNSd5Ya1uu7KT&index=6
https://habitica.com/
Сколько помидорок сможешь сделать за неделю?
https://www.youtube.com/watch?v=H0k0TQfZGSc
https://pomotodo.com/
HTML, CSS. Ничего сложного.
Требует только усидчивости. Как раз подойдёт для того, чтоб в простых условиях выработать правильные привычки и дисциплину.
MDN — сообщество разработчиков Мозила, обширнейшая вики-подобная база знаний по веб-технологиям. По любому вопросу поиски начинать стоит тут. Здесь же и учебник по основам разработки. Есть и на русском, но не в самом актуальном состоянии. Читай-делай тут разделы HTML и CSS, до раздела по JavaScript, этот гайд дальше предложит более лучший учебник. Но можешь и этот полистать, тоже достойный, любая информация лишней не будет.
https://developer.mozilla.org/en-US/docs/Learn/Getting_started_with_the_web
Подробно по каждому элементу с примерами, много практики, много полезных списков:
https://www.w3schools.com/html
https://www.w3schools.com/css
https://www.w3schools.com/howto
Параллельно под чаёк по вечерам посмотри:
https://www.youtube.com/watch?v=Sy_wba7l1UU&list=PLawfWYMUziZqyUL5QDLVbe3j5BKWj42E5
https://www.youtube.com/watch?v=tpIctyqH29Q&list=PL8dPuuaLjXtNlUrzyH5r6jN9ulIgZBpdo
https://www.youtube.com/watch?v=rrRZZ_3licM&list=PLo6puixMwuSMIB7x6MNBTNQA3P3Mqo_33
На этом этапе стоит начать формировать информационный фон. Собирай подписки на рассылки, Ютюб, Твиттер. Но помни, если ты что-то смотришь-читаешь, то стоит потратить минимум столько же времени на написание кода по мотивам (весь написанный код нужно бережно хранить, чтоб было, что показать). Иначе это обычная бестолковая прокрастинация.
https://habr.com/ru/company/everydaytools/blog/322980/
Или же это может быть толковая рекреация — лучше посмотреть интересный доклад, чем очередной сериал.
JavaScript. Шутки кончились.
Очень дружелюбен к ньюфаням и даст тебе хороший старт:
https://javascript.info/
У него есть предыдущая версия на русском, но она безнадёжно устарела. Здесь среди прочего описываются многие тонкости языка, которые полезны для общей картины, но на деле вряд ли пригодятся, не фрустрируй. Задачки обязательно делать. Если задачка совсем (за 10 минут) не получается, то прилежного разбора и воспроизведения готового решения будет вполне достаточно.
Искать каждый раз подробности на MDN ты уже имеешь привычку, не забывай пользоваться.
Как писать для людей:
https://github.com/ryanmcdermott/clean-code-javascript
Ссылкота по понятиям:
https://github.com/leonardomso/33-js-concepts
Тут уже нужно начать искать работку и получать опыт отказов. Удача любит смелых. Только не ври о своём уровне работодателю, а главное — себе. Сейчас ты на уровне ребёнка, который только научился говорить, пользы от тебя столько же. Но собеседования это единственный способ для тебя узнать, что требуется сейчас в твоей области (во всех смыслах) и что нужно лично тебе.
Если ещё есть время и хочется подробностей, повторений, закреплений, то
https://www.freecodecamp.org/
годнота, интерактивно обозревает всё с упором на практику.
Задачки и соревнования:
https://www.codewars.com/
Забавные объяснения и проекты:
https://eloquentjavascript.net/
Концептуальный разбор для продвинутых:
https://github.com/getify/You-Dont-Know-JS
https://github.com/getify/Functional-Light-JS
Исчерпывающе подробные справочники:
http://speakingjs.com/es5/index.html
http://exploringjs.com/es6/index.html
http://exploringjs.com/es2016-es2017/index.html
http://exploringjs.com/es2018-es2019/toc.html
Массивнейшая ссылкота по всем темам:
https://frontendmasters.com/books/front-end-handbook/2019/
Дизайн, редактура, прочие смежные дела:
https://bespoyasov.ru/front-not-pain/
Node.js позволит тебе вырваться за пределы браузера, сделать свой сервер, автоматизировать рутину в разработке и жизни.
Нода это уже отдельная среда, человечного MDN’a тут нет. Но ты же уже не боишься серьёзных документаций. Нужно сразу найти доки Ноды “nodejs doc” и сверяться с ними.
https://www.youtube.com/watch?v=fBNz5xF-Kx4
https://medium.freecodecamp.org/the-definitive-node-js-handbook-6912378afc6e
https://www.youtube.com/watch?v=WBcHgaoHh1k&list=PLHhi8ymDMrQZmXEqIIlq2S9-Ibh9b_-rQ
На этом этапе ещё нужно разобраться с инфраструктурой:
Linux
https://itsfoss.com/getting-started-with-ubuntu/
https://linuxjourney.com/
shell
https://tproger.ru/translations/bash-cheatsheet/
https://explainshell.com/
https://www.shellscript.sh/
Git
https://tproger.ru/translations/difference-between-git-and-github/
https://githowto.com
https://git-scm.com/book/ru/v2
Docker
https://dev.to/azure/docker---from-the-beginning-part-i-28c6
https://blog.risingstack.com/how-to-debug-a-node-js-app-in-a-docker-container/
https://code.visualstudio.com/docs/remote/containers
Приложение. Всё по-взрослому.
Теперь пора делать что-то серьёзное, применять на практике. Имеется множество готовых приблуд, можно делать приложения любой сложности.
В качестве идеи для проекта стоит брать что-то близкое тебе, чтоб с душой. Можно воспроизвести используемое тобой приложение, что-то улучшить. Можно сделать что-то полезное тебе в быту — учёт просмотренных тайтлов, счётчик калорий, агрегатор новостей.
https://medium.freecodecamp.org/every-time-you-build-a-to-do-list-app-a-puppy-dies-505b54637a5d
https://medium.freecodecamp.org/want-to-build-something-fun-heres-a-list-of-sample-web-app-ideas-b991bce0ed9a
https://medium.freecodecamp.org/summer-is-over-you-should-be-coding-heres-yet-another-list-of-exciting-ideas-to-build-a95d7704d36d
Писать здесь гайды к каким-то приблудам нет никакого смысла, так как каждая вполне достойна отдельного треда и имеет свой сайт, где с гайдами постарались. Жизнь готовила тебя к этому, ты сможешь разобраться самостоятельно. Алгоритм такой:
0 - находишь на Ютюбе любой обзорный видос, чтоб страх неизвестного пропал;
https://www.youtube.com/watch?v=sBws8MSXN7A
1 - находишь официальный сайт приблуды;
https://reactjs.org/
2 - на офсайте делаешь Tutorial / Getting started;
https://reactjs.org/tutorial/tutorial.html
3 - на офсайте читаешь доки, АПИшки по диагонали;
https://reactjs.org/docs/hello-world.html
4 - начинаешь делать оригинальные нужные штуки, сверяясь с доками;
https://github.com/gothinkster/react-redux-realworld-example-app
5 - попробуй поискать “github awesome приблуда”;
https://github.com/enaqx/awesome-react
6 - отважно посмотри исходники.
https://github.com/facebook/react
Сейчас с большим отрывом самый популярный стек это React + Express + Mongo. Получается что-то такое:
https://www.youtube.com/watch?v=PBTYxXADG_k&list=PLillGF-RfqbbiTGgA77tGO426V3hRF9iE
Оформи такое в портфолио на Гитхабе и можешь уверенно искать работку.
А как же другие приблуды? Сложно и долго осилить только первый язык, фреймворк, что-либо. Следующий ты освоишь в считанные недели, а то и дни.
При перекате не забудь тему и тег. Шапка с разметкой:
https://pastebin.com/NCviF7pu
Потому что это последнее, что нужно знать js-ру. Оно в языке просто по-умолчанию идет. Ты даже не задумываешься об этом.
Смысл замыкания понятен, если ты шаришь еще в языке где его нет.
Я знаю, но не могу объяснить: это вот там окружение и функция имеет доступ к переменным окружения из которого вызвана... Как-то так.
дада, одни и те же мантры жиесодебилов оправдывающих свою архаичную дрисню
во всём прикладном программировании работает принцип fail fast, желательно ещё в компайл/билд-тайме, или хотя бы сразу на запуске, но жиесодебилы не любят всю шелуху отсеивать сразу и потом работать с чистым кодом, где не надо гадать что где лежит, они любят месить говно с кучей динамических чеков и кастов, перемешанных с бизнес-логикой, чтобы "интернет не сломался"
Из твоей мелкобуквенной дрысни я делаю вывод, что ты сосёшь хуи. Как я узнал? Ну у тебя же рот есть и им можно сосать хуи.
Судя по твоим речам, ты не чуешь разницы между возможностью и необходимостью.
>>52046
Нормальный ответ для трейни.
Джун скажет про [[EnvironmentRecord]].
Мид скажет про проблемы фунарга и асинхронщину.
Сеньор скажет "иди вы на хуй, вы мне ещё тестовое дайте" про объекты для бедных и неявное состояние.
Нет и не было никакой "необходимости" и это всё надуманная хуйня и оправдания. Нормальная программа должна запускаться и работать или не запускаться вообще, и в таком случае даже не поставляться. Понятно что это в идеале, но во всяком случае к этому всегда стремились. Чем вебговно принципиально отличается и почему такой подход с ним не совместим? Только давай без хуйни типа "чтоб интернет не сломался" и "сайт должен работать", больше конкретики плиз.
Есть ли возможность реализовать механизм аннотаций в Java, когда некий класс аннотируется, а в аннотации указывается какая-либо мета информация. В дальнейшем чтобы имея сам класс можно было бы получить его аннотации и извлечь их них указанную метаинформацию?
Как я понял, декораторы которые указываются у класса нужны для того, чтобы как то менять поведение при конструировании объекта, что мне в моей задаче не нужно. При этом к самому декоратору имея Type обратиться нельзя.
Если такое поведение нереализуемо, то может есть альтернативные варианты?
Если для программы определено сложение дилдаков со строками, то куда она должна падать? С чего ты взял, что у программы вообще какой-то долг есть?
Ты можешь написать расширение для браузера, которое будет убивать вкладку на ошибке.
Ты можешь написать браузер, который будет говнять винт целиком на ошибке. На всякий случай.
Ты можешь сделать на ардуине штуку, которая будет убивать тебя пожалуйста ненада любим забавным способом. И пусть твой браузер активирует её на любой ошибке -- нахуй жить в мире с ошибкой.
Всё это достаточно легко сделать потому что платформа открыта. Потому что её делали люди без гиперопеки головного мозга.
А пока нормально функционируют все банки и магазины, у них не возникает никаких проблем с дилдоками и строками, потому что этим
Н Е О Б Я З А Т Е Л Ь Н О
пользоваться.
Помнишь тот замечательный корректнейший сайт, который падал из-за всякой хуйни? Никто не помнит, потому что на хуй никому не нужен.
Думаю, это как-то связано с блокировкой экрана, временем работы программы, фоновым режимом и прочей хуйней. Куда копать что делать?
Ок, в гугле попадалось и ранее, значит стоит обратить более пристальное внимание. Спасибо!
>Чем вебговно принципиально отличается и почему такой подход с ним не совместим?
Зоопарком устройств и технологий.
>нормально функционируют все банки и магазины, у них не возникает никаких проблем с дилдоками
Ага, блять, не возникает.
Ты же что-то писал про "необходимость", а теперь пишешь что "и так норм". Нет, не норм.
Хорошо хоть TS получил большое распространение.
мерзость
https://js.do/code/425681
Конкретно, мне нужно было реализовать фильтрацию списка.
По идее, я хочу запустить скрипт не при обновлении страницы, а в режиме реального времени, так скажем. И вот как это блядь сделать пока не понимаю.
Ну смотри первая строчка скрипта - $('input#search').on('input'
Это значит найди в html input c id - search и на каждый введёный или удалёный символ запусти функцию, ну и в самой функции тоже три селектора. Тебе нужно что бы на твоей странице были все эти теги с id
Инпут он внизу, я его специально туда засунул. Я думал, что он может обратиться на любой элемент, который имеет ID search, но я менял даже на qwerty - один хер, не работает.
>И ещё какие ошибки в консоле
Вроде на ошибку не ссылается.
То есть, грубо говоря, строку поиска я добавил сам. Изначально там был только множественный список
По крайней мере скрипты jquery я вижу
<button onclick="qwe()">suck</button>
<script>
function qwe(){
alert();
}
</script>
в onclick нужно передевать ссылку на функцию, а не вызов функции
Но ладно, батон не так важен. Мне главное чтоб фильтрация сработала и все.
бля, обосрался
Express я не использую.
>если клиент сам не отправлял запрос программно XHR, fetch и т.д., где есть инструменты обратного вызова
фикс
гуглиться за секунду - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...in
>>52523
какой for of , какой forEach. Объект перебирается через for in. 1)Соответственно, ты можешь удалить свойство cdek , если оно тебе не нужно (delete).
2)Ты можешь сделать деструктурирующее присваивание и разделить объект на cdek и rest.
3)Можно переписать ключ cdek в Symbol и он будет игнорироваться перебором for in.
4)Ну и самое тупое, делать проверку в for in
const getResault = async function() {
return await fetchFromDB()
}
const getResault1 = function() {
return fetchFromDB()
}
await getResault()
await getResault1()
Иметь средние знания и получать 7к.
Аноны, где найти вот такие плееры, охуенные, как тут: http://moviebar.me/1553-129-chernobyl.html чтобы фильмы хостить?
Есть чё-нибудь опенсорцное, фришное, необфусцированное и не проприетарное, а именно свободное?
Главное, чтобы много серий было, и чтобы мотать можно было, и скорость выставлять и качество,
а ещё, чтобы по таймкодам видео было доступно.
https://pastebin.com/sdv3x4WH
как пустой?? а как же сотни вкатывальщиков и коллапс пузыря айти и веба в частности?
да
Вкатывальщики никому не нужны. Все нужны сразу 10+ лет опыта сеньеры до 20 лет, знания 5 ЯП и 15 фреймворков. Чтобы хуярить лендинги на вордпрессе
Так, блин. Решил тут посмотреть туториалы по JS и везде вижу как жс-код открывают в браузере. Я че не могу как белый человек посмотреть вывод данных в окне терминала?..
работал в свое время с Си, со скриптоязыками дел пока не имел
потому что ты не делаешь, что просят в условии каты
запускай на здоровье в консоли, только ноду поставь
питонодети и жс-пидоры уже отучились от терминала, скоро базовые моторные функции откажут
Сейчас делаю приложуху которая марсин определенный сайт, агрегирует данные, читает/пишет в каталоги, и пишет в файл.
Использую промисы и async|await, и вообще не понимаю как это все на колбеках сделать.
Например в цикле нужно получить хэш от массива файлов - это все дело асинхронное.
И после массив из хэш сумм записать в базу.
Как это сделать чисто на колбеках без промисов я не пойму.
var myNumber = 10;
var result;
console.log(result=myNumber++);
Вывод, что я получаю:
10
То есть он сначала присваивает переменной result значение, хранящееся в myNumber, а затем уже проводит инкремент myBumber?..
return на терминальном условии рекурсии забыл, но принцип ты поймешь и без него.
да:
let x = 1;
console.log(x++); // 1
console.log(x); //2
x = 1;
console.log(++x); // 2
console.log(x); //2
<video id="video-content" src="https://drive.google.com/uc?id=1iiyvcN_r5LaLbCNdmT_VtiKaGzcZzRaA&export=download" type="video/webm" controls=""></video>
2 вариант
const url = 'https://drive.google.com/uc?id=1iiyvcN_r5LaLbCNdmT_VtiKaGzcZzRaA&export=download';
fetch(url, {method: 'GET'}).then(response => response.blob()).then(blob => {...});
Почему в 1 случае запрос на сервер google drive выполняется, файл загружается и отображается, а во 2 пишет в консоль:
>Запрос из постороннего источника заблокирован: Политика одного источника запрещает чтение удаленного ресурса на https://drive.google.com/uc?id=1iiyvcN_r5LaLbCNdmT_VtiKaGzcZzRaA&export=download. (Причина: отсутствует заголовок CORS 'Access-Control-Allow-Origin').
>Запрос из постороннего источника заблокирован: Политика одного источника запрещает чтение удаленного ресурса на https://drive.google.com/uc?id=1iiyvcN_r5LaLbCNdmT_VtiKaGzcZzRaA&export=download. (Причина: не удалось выполнить запрос CORS).
>TypeError: NetworkError when attempting to fetch resource.
Статус ответа на запрос 302
Да, такой вариант понятен, последовательно-рекурсивно. Спасибо.
Я вообще думал что какой то оверхед с замыканиями можно использовать, но не понял как сделать.
И получается что вся цепочка вызвово рекурсий тянется через все вызовы.
fetch(url, {method: 'GET', mode:'no-cors'}).then(response => response.blob()).then(blob => {console.log('sasd')});
Пиздуй на learn javascript изучать тему Fetch-CORS
Колбеки тем и примечательны, что все данные должны протягиваться через всю цепочку.
Все это оборачивается еблей в жопу и плохими абстракциями в конце концов, так что забудь вообще про колбеки в боевом коде - ты все равно встретишь их разве что на проектах из 2011 года и в таких же старых сторонних либах. В любом случае будешь сразу делать promsify и работать через async await.
это в mdn есть
Запихивать декораторы в декораторы.
Так я читал, вот тут https://learn.javascript.ru/xhr-crossdomain
Из того, что там было написано, я только понял то, что сервер сам должен решать разрешать ему эти запросы или нет. Но когда я указал источник в элементе video, то такой ошибки не стало. Алсо, мне все равно не понятно. Сейчас я имею 2 запроса, один из которых с кодом 302, а другой 200. Почитав про 302, я так понимаю этот запрос перенаправляется по заголовку location и выполняется новый запрос. Данные (содержимое файла), вроде, приходит, но я не могу, похоже, правильно декодировать blob, чтобы воспроизвести его.
Делаю так:
.then(blob => {
____ const urlBlob = URL.createObjectURL(blob);
____ videoElem.setAttribute('src', urlBlob);
});
Получаю в консоль:
>HTTP «Content-Type» типа «application/x-unknown-content-type» не поддерживается. Не удалось загрузить медиаресурс blob:null/ed19eee6-50a9-41a1-a52f-b7a369799509.
>Невозможно воспроизвести медиа. Нет декодеров для запрошенных форматов: application/x-unknown-content-type
Я пробовал указывать content-type: video/webm в заголовке запроса, но не помогло.
if (condition) {
doSomeCode()
} else {
execAnother()
}
или:
if (condition)
{
doSomeCode()
}
else
{
execAnother()
}
?
Тру прогеры пишут без else.
Ввел тебя в заблуждение, анон.
Ты не получишь данные через fetch, если будешь делать запрос через браузер, т.к. с сервера гугла не передается хедер Access-Control-Allow-Origin: .
Fetch в любом случае будет делать preflight запрос и не найдет там хедер. Mode: "no-cors" не поможет, ты не будешь иметь доступа к location с видосиком кота.
В теге video по-умолчанию cors проверка выключена, поэтому он нормально подгружает видос.
Как вариант - можешь сделать прокси сервер, который будет тянуть данные с гуглосервера, добавлять к ним хедер Access-Control-Allow-Origin: и отдавать тебе.
тру-проггеры настраивают prettier и никогда не ебут себе мозг форматированием кода.
Не, тут дело в самом стиле оформления
Может меня за такое форматирование пидором назовут, а папка говорил что как только так случится, то у меня тогда будет такая кличка
в js обычно первый вариант, но да, на всех проектах линтеры и преттиры, пишешь так как заведено в компании.
Жабоскрипт может хуйнуть перенос строки, если открывающей скобкой не закончить.
и вот, если я копаюсь в блоке как на пике, т.е. выбираю че и как тыкая в радио, то при клике на какой либо вариант он рефрешит заново страницу и соответственно тем самым сбрасывает выбранный инпут. а мне нужно убрать рефреш с этих инпутов и чтобы оставалось то, что я выбрал. как мне это фиксить ..? и посоветуйте заодно тогда ресурс какой чтоли, куда я мог бы запостить эту кодапарашу бэкбоуновскую на 1к строк.
сам только за jquery шарю ибо пхпшник и бэк, а не фронт.
прошу, анон, помоги
>прокинут рефреш страницы при изменении какого то из них
зочем?
>и посоветуйте заодно тогда ресурс какой чтоли, куда я мог бы запостить эту кодапарашу бэкбоуновскую на 1к строк.
на codepen подключить бэкбон и запихнуть эту парашу.
маловато, стажер же пока. 300 вечнозеленых. не дс
>>53516
>зочем?
понятия не имею, этот модуль не я писал, легаси ебучее
https://codepen.io/sodomit228/pen/JjYPBoR здесь код всего что есть. жс файл бэкбоуна был в minify скомпрешен, пришлось разворачивать. из того что пока сам выяснил - апдейт шаблона начинается на 1443 строчке, дальше пока не продвинулся
бля ну в этом никто копаться не будет, ставь debugger и отлавливай что и когда меняется, добро пожаловать в хуёвый мир отладки.
ну вот я так и делаю уже как час наверное. алсо, хотелось бы уточнить, каким алгоритмом то мне здесь работать? после перерисовки подбрасывать ему атррибут checked или как лучше?
тру-прогеры пишут по код-стайлу конкретного проекта - будь то AirBnB или чёт кастомное.
ну где-то же хранится текущее состояние формы, при отрисовке должны подставляться это значения.
не, мой метод не прокатил. он даже после полной перерисовки шлет меня нахуй и не хочет туда ниче ставить.
алсо, где может быть это состояние формы? в шаблоне? в жс коде? в пхп коде? тут вся эта дичь глубоко завязана по самые помидоры
if condition, do: do_some_code(), else: exec_another()
Здесь же явная ошибка, идет обращение к свойству обьекта, а не к методу, или я не прав и переводчик все написал правильно?
>https://developer.mozilla.org/en-US/docs/Web/API/window/innerWidth
>The read-only Window property innerWidth
Таки да, обосрамс переводчика.
тебя в гугле забанили что ли? вот ради интереса вбил "vs code настройка eslint" - 5 статей только на русском, ещё столько же видосов на ютубе. если ты не можешь IDE настроить без двача, ты как работать будешь, ау?
Если тебе прямо в России надо, то вкатывайся в 1С/Битрикс.
десктоп приложения большинству не нужны
а так бывает на ней пишут что-нибудь какие-нибудь стартапы
Почему не получается сделать просто высоту 100%/авто/любую, где нет конкретного значения в пикселях так, чтобы блок появлялся плавно? Если задать ему конкретную высоту, то он появляется плавно, но ведь высота зависит от контента и т нельзя ограничивать её.
1 - вижу постоянно, общепринятый жсовый стиль.
2 - только в шарпе видел, некрасиво, не нравится
Ну да, K&R, не суть. Во всех проектах видел только такой стиль отступов.
Хочу optional chaining (не TSовый) не могу.
Я нашел, вроде, решение (пик), но оно не работает, пытаюсь понять в чем дело. После запуска приложения нет никаких ошибок, ничего, но спустя 10-15сек приложение просто завершается. Код использовал из примера
const Telegraf = require('telegraf')
const bot = new Telegraf(process.env.BOT_TOKEN)
bot.start((ctx) => ctx.reply('Welcome'))
bot.help((ctx) => ctx.reply('Send me a sticker'))
bot.on('sticker', (ctx) => ctx.reply(''))
bot.hears('hi', (ctx) => ctx.reply('Hey there'))
bot.launch()
Каникулы?
BOT_TOKEN прописан в энве? ВПН включил? Прокси подключил?
>telegraf
Вообще хз что это за хуйня
https://github.com/yagop/node-telegram-bot-api - возьми вот это
>что это за хуйня
Всего лишь отец всех api модулей для работы с телеботами...
Я уже решил проблему, нашел рабочий прокси методом тыка.
Пул создается при старте приложения. Хочу сделать так - в отдельном модуле я хочу создать пул подключений, и через module.exports реквайрить его уже в модули где он будет использоваться.
Но вопрос в том что само создание этого пула - асинхронный процесс.
Правильно ли я создаю пул подключений?
И как рекваирить асинхронные модули?
что то я засомневался что в пакете mysql2 коннект асинхронный:
// get the client
const mysql = require('mysql2');
// create the connection to database - этот момент асинхронен?
const connection = mysql.createConnection({
host: 'localhost',
user: 'root',
database: 'test'
});
погугли transition, visibility, opacity, вот это всё. можно сделать чистым CSS
десктоп приложения большинству нужны
а так же бывает на ней пишут что-нибудь какие-нибудь большие компании
Кому нужны?
Рядовым юзерам браузер заменил все, что нужно.
Остались офисные пакеты, узконишевые архикады и игори.
У вас есть менеджер npm (по типу питоновского pip), только вот как его установить как следует? Туториалы что дает гугол говорят об установке npm И установке Ноды, но мне вот Нода нахер не сдалась. npm вообще существует раздельно от нее?
Установка нужна как на Линух (Убунту), так и на Винду
await функция которая ничего не возвращает(не имеет ретурн) , вызванная внутри async функции - разве не возвращает промис с вечным пендинг? И не "вешает" выполнение функции?
Практика показывает что не вешает. Однако что возвращает пустая async функцимя?
вот примерный пример:
https://ideone.com/I598VL
Поспешил. Святой стэковерфлоу спасает.
Судя по всему если в конце функции нет return чего либо или Promise.resolve/reject - то async функция вернет промис со значением undefined
Точнее выводит после того как день становится больше 24
Что в форматировании/проектировании жс кода мгновенно может выдать во мне пришлого еблана?
Скажем, я хорошо разговариваю по английски и дружу с грамматикой, но говорю с дичайшим руснявым акцентом, отчего все на меня будут косо смотреть. Что аналогия для этого в js?
1. Мутации не к месту
2. Неосиливание скопов, примитивных референсов и асинка
3. Неосиливание преобразования типов
Нужна помощь.
Есть объект с параметрами, допустим:
let opHuy = {
мега: {
свойство: "1",
свойство: "2",
ещеСвойство: {
свойство: "3",
}
}
}
Допустим чтобы обратится к свойству "3", мы пишем так:
"opHuy.мега.ещеСвойство"
Так вот, у меня есть переменная коротая определяет свойство "мега", потому-что в теории их может быть дохуя в объекте. Вопрос:
Можно ли вызвать таким образм:
"opHuy.[переменнаяОпределяющееСвойствоМега].ещеСвойство"?
И как это возможно?
Ничего. Если есть опыт другого ЯП, то ты будешь лучше программировать вкатывальщиков в JS как в первый серьезный язык.
Лодаш очень близок к стандартной библиотеке.
?.
никто не знает,некоторые вещи застряли еще в 19г и не дошли до финала,а ты про 2020. у них этот процесс размазан во времени,нет единой даты для выпуска как удругих языков
Возможно. Нужно точку после opHuy убрать.
до
>opHuy.[переменнаяОпределяющееСвойствоМега].ещеСвойство
после
opHuy[переменнаяОпределяющееСвойствоМега].ещеСвойство
ты сбросил обрывки эффектов. Это 2 эффекта, которые друг за другом идут или ты тестил их по отдельности? Что значит ничего не выводит, undefined или вообще ничего?
Вопрос по ноде.
Допустим, есть объект у которого свойство - функция: obj.funcName()
Вызвать функцию "по имени" можно следующим образом:
const str = 'funcName'
obj[str]()
Как вызвать функцию, имея строку: const str = 'obj.funcName'? Желательно не используя eval.
Насколько это близко к истине?
Только применительно именно к js, а не общие понятия.
Ну вот есть функция getInfo, которая делает сетевой запрос и получает результат.
Мне нужно внутри другой функции обработать этот результат.
Я пишу getInfo().then( тут обрабатываю )
А можно без .then? Но при этом, не делая другую функцию тоже асинхронной?
Нет. Синхронная функция это такая функция, которая если стартовала, то выполнится до конца, переключение выполнения на асинхронную функцию невозможно. В принципе синхронный код это такой код, который идёт строго от начала и до конца.
Ты походу не совсем догоняешь, что такое промисы.
Например асинхронный фетч данных вернет не данные.
Он вернет обещание вернуть тебе данные.
Поэтому когда ты попытаешься вывести результат этой функции, ты получишь undefined. Потому что результат это не данные, а ОБЕЩАНИЕ.
Представь себе что Васян должен тебе сотку.
const sotka = "100";
Колян не может просто так отдать тебе сотку, у него ее еще нет, а отжать у лоха он сможет ее только завтра. Он дает тебе расписку (промис) на которой пишет, что точняк вернет тебе твою сотку, как только сможет (завтра).
const raspiskaKolyana = new Promise(resolve => {
setTimeout(() => resolve(sotka), 1000)
});
function getBabkiFromKolyan() {
return kolyanPromise;
};
Вот ты пришел в магаз, где хочешь купить сиську пива, которая стоит сотку. Если ты попытаешься просто отдать расписку, продавщица тетя Клава пошлет тебя нахуй , потому что расписка это не деньги (undefined).
function kupitPivka() {
const babki = getBabkiFromKolyan ();
if (babki === "100") {
return console.log('Ваше пивко, сударь!');
}
return console.log('Хуй тебе')
}
kupitPivka(); // "Хуй тебе";
Так что же делать? Ты можешь просто дождаться, когда Васян вернет тебе деньги (сделать тетю Клаву асинхронной)
async function kupitPivka() {
const babki = await getBabkiFromKolyan ();
if (babki === "100") {
return console.log('Ваше пивко, сударь!');
}
return console.log('Хуй тебе')
};
kupitPivka(); // “Ваше пивко, сударь!”
а можешь разъяснить тете клаве последовательно действий, при получении расписки, мол сначала она получает расписку, а потом c этой распиской идет к Коляну за деньгами.
function kupitPivka(babki) {
if (babki === "100") {
return console.log('Ваше пивко, сударь!');
}
return console.log('Хуй тебе')
}
getBabkiFromKolyan().then(babki => kupitPivka(babki));
Правда пиво ты все равно получишь после того, как тетя Клава сходит к Коляну. Ну тут уж ничего не поделать.
Ты походу не совсем догоняешь, что такое промисы.
Например асинхронный фетч данных вернет не данные.
Он вернет обещание вернуть тебе данные.
Поэтому когда ты попытаешься вывести результат этой функции, ты получишь undefined. Потому что результат это не данные, а ОБЕЩАНИЕ.
Представь себе что Васян должен тебе сотку.
const sotka = "100";
Колян не может просто так отдать тебе сотку, у него ее еще нет, а отжать у лоха он сможет ее только завтра. Он дает тебе расписку (промис) на которой пишет, что точняк вернет тебе твою сотку, как только сможет (завтра).
const raspiskaKolyana = new Promise(resolve => {
setTimeout(() => resolve(sotka), 1000)
});
function getBabkiFromKolyan() {
return kolyanPromise;
};
Вот ты пришел в магаз, где хочешь купить сиську пива, которая стоит сотку. Если ты попытаешься просто отдать расписку, продавщица тетя Клава пошлет тебя нахуй , потому что расписка это не деньги (undefined).
function kupitPivka() {
const babki = getBabkiFromKolyan ();
if (babki === "100") {
return console.log('Ваше пивко, сударь!');
}
return console.log('Хуй тебе')
}
kupitPivka(); // "Хуй тебе";
Так что же делать? Ты можешь просто дождаться, когда Васян вернет тебе деньги (сделать тетю Клаву асинхронной)
async function kupitPivka() {
const babki = await getBabkiFromKolyan ();
if (babki === "100") {
return console.log('Ваше пивко, сударь!');
}
return console.log('Хуй тебе')
};
kupitPivka(); // “Ваше пивко, сударь!”
а можешь разъяснить тете клаве последовательно действий, при получении расписки, мол сначала она получает расписку, а потом c этой распиской идет к Коляну за деньгами.
function kupitPivka(babki) {
if (babki === "100") {
return console.log('Ваше пивко, сударь!');
}
return console.log('Хуй тебе')
}
getBabkiFromKolyan().then(babki => kupitPivka(babki));
Правда пиво ты все равно получишь после того, как тетя Клава сходит к Коляну. Ну тут уж ничего не поделать.
Я, кажется, понял при каких обстоятельствах появился джаваскрипт. Скажу честно, очень сложно программировать на жс, если ты пришел после нормального языка.
Нет, ты не понял. Точнее ты просто не программировал толком. Скорее всего не работал ни с графическими оболочками, ни с асинхронным программированием.
JS построен на обработке сообщений. Тот же принцип используется при работе с окнами в gui, во всех gui.
Эта архитектура позволяет очень большие возможности получать, но и несёт проблемы какие-то.
Промисы ничего принципиально не меняют сами по себе. Фактически те же коллбэки. Меняют async-await, которые делают асинхронный код внешне похожим на синхронный.
мальчик, твои мышинные функциональные приемы с реализацией класса функции тут не канают. Если ты хотел выебнутся, то лучше бы писать про state, а не про функторы (которые кстати в разных языках по разному используются).
Еще раз повторюсь, код без ООП - это лишь набор инструкций. Никакой архитектуры, никакой семантики. Все в кучу накидал, сборщик упаковал все, запулил в релиз.
Канают, потому что промис - это тот же функтор, в котором вместо map then. Если ты с одним функтором разобраться не в силах, то ты функционально попущен.
>код без ООП - это лишь набор инструкций
Про Scala, Erlang и Smalltalk хоть слыхал, ооп-адепт?
А вот тут многоуровневая оговорочка на грани мощнейшего каламбура.
ООП и Смолток мало отношения имеют к современной дрысне уровня
приват ПерсонСинглтонПровайдерФабрика персонСинглтонПровайдерФабрика
которую жирнючий выше называет "архитектурой и семантикой".
Возвращать из метода экземпляр самого себя, что тебе не нравится, неосилятор?
питон хороший язык, главное чтобы принципы ООП реализовывал. Просто смотришь на этот JS, вроде ничего сложного после ООП, даже такие вещи, как замыкания, промисы и все остальное, что для JS макак кажутся чем то из разряда overhard, но по факту - написание кода схоже с валянием в грязи.
>>54607
Вы оба два младшекурсника.
Промисы о другом вообще, они о цикле обработки сообщений и выполнения задач, планировщике и т.п., что и составляет основу JS.
А это ООП и функцианальщина вообще о другом. Можно с ООП, можно без.
Архитектура JS, основанная на колбэках (старый стиль) и на async-await (новый, трендовый, асинхронный), он этого не зависит.
Можешь на своём любимом языке целый день потратить на важнейшие инженерные задачи, на выбор между айнсайнд интом и флоатом или на выбор между фабрикой и провайдером. Откуда у тебя время в треде срать? Решил все задачи на ЖС и осталось время философствовать?
>выбор между фабрикой и провайдером.
Типичный вкатывальщик или студень.
Который недавно прочитал про "паттерны проектирования", выучил несколько паттернов и теперь пытается бравировать своими знаниями. Все в том или ином виде это проходят.
>увидел, что двачую за питон
>любимом языке
Понятно. Я забыл, что у JS-сника только JS (ну и еще версточка, чтобы хуй не пинал и деньги отрабатывал).
кстати да, какое отношение фабрика к провайдеру имеет? Это паттерны разного применения. Типичный подзалупный студент вкатывальщик
Потому что они пишут программный код и получают за него деньги. Это и есть определение профессионального программиста. Ты какой-то глупенький.
Как сложно ты ему пожелал исчезнуть )))
>фабрикой и провайдером
>Оба они суть синглтоны
Дать бы тебе по еблу этой книжкой
>>54635
>пишут программный код
html тоже можно считать программным кодом, только разметки. JS по сути ничего больше, чем набор инструкций. Помоему одного поля ягода. Я вообще не знаю, за что платить верстальщикам килобаксы, если они за еду должны работать...
html сам по себе не тьюринг полный язык.
>говнопаттерны, придуманные специально для С++ из-за его косячных ограничений
норм источники у тебя
Давай. У тебя есть эта книга? Суп с книгой или ГТФО.
Приложил какую-то хуйню о которой слышал в интернете, а сам даже фабрику от html отличить не может. Ну хотя бы верстальщикам килобаксы платишь, в остальном ты конечно душный провайдер.
>>53509 - кун
1. То, что ты использовал паттерны, не значит, что твой код объекто-ориентированный
2. То, что ты написал класс и наследовался от него - не означает, что твой код объектно-ориентированный
3. Если код функциональный, это не значит, что он не объектно-ориентированный. Если код объектно-ориентированный, это не значит, что он не функциональный
4. Все вышесказанное имеет смысл, если рассматривать ООП таким, как его задумал его создатель. Если вам сказали, что ваш язык самый ОО, это может быть правдой, ибо ООП это не стандарт.
>>54620
Если в питоне реализовано ООП, то как в нем реализовано сокрытие данных? OH WAIT....
>>54639
>JS по сути ничего больше, чем набор инструкций
Как это мешает писать на нем программы?
>Зарубите себе на носу, товарищи первокурсники
Товарищ третекурсник вываливает пасты
>Если в питоне реализовано ООП, то как в нем реализовано сокрытие данных? OH WAIT....
давай разберемся, чем реализовуется сокрытие. Это:
1. Классы/namespaces/Методы
2. Аксессоры (Getter and setter)
3. Модификаторами доступа к объектам
Смотрим на доку питона и справниваем, что есть, чего нет. По сабжу - я написал, что питон хороший язык не из за ООП. Скажу больше, я даже не знаю как оно там реализовано.
>Как это мешает писать на нем программы?
Я не ставил под сомнение то, что на нем нельзя писать софт. Я задаюсь вопросом, чем JS-сним отличается от обычного верстальщика
Если для тебя "сокрытие данных" === "инкапсуляция", это значит, что ты либо дебил, либо зеленый. Пиздуй изучать терминологию.
>>54691
>Скажу больше, я даже не знаю как оно там реализовано.
Никак.
Все тобой приведенное - эмуляция сокрытия.
>чем JS-сним отличается от обычного верстальщика
Зарплатой, задачами, набором инструментов, требованиям к навыкам.
>Если для тебя "сокрытие данных" === "инкапсуляция"
А к чему тогда твой высер про отсутствие сокрытия данных в Питоне? ООП подразумевает обязательное сокрытие?
у тебя в голове стековерфлоу произошел? хоть помнишь что ты сам говорил 15 мин назад?
>Зарплатой
Рейт верстальщиков на препроцессорах может быть выше, чем JS-сника на fiverr, upwork
>задачами
Такой же Casual stuff. Гугли доку, копируй-вставляй, правь под себя
>набором инструментов
у JS-сников фреймворки/либы с 1к депенденсиес, ты про это?
>требованиям к навыкам
Ок, JS-сник, это не верстальщик, это верстальщик+
Как правило без знаний верстальщика даже не берут на работу. Но вся концепция сводится к одному - лепишь не понятно в каком стиле простыни/макароны какой то поеботы, сборщик это все упаковует и выливаешь в прод. Для меня самая большая загадка JSсников это: Как дебажить, как тестировать и как сапортить эту хуйню
Если ты, тупорогий кретин, не внемлил совету пиздовать учить терминологию, давай я помогу тебе немного, не благодари. Вот классическое описание ООП от человека, его создавшего:
OOP to me means only messaging, local retention and protection and hiding of state-process, and extreme late-binding of all things.
Local protection and hiding подразумевает, что данные скрываются в обязательном порядке и доступны только через messaging.
>Рейт верстальщиков на препроцессорах может быть выше, чем JS-сника на fiverr, upwork
Рейт Х может быть выше, чем рейт Y.
Бессмысленный аргумент.
>Такой же Casual stuff. Гугли доку, копируй-вставляй, правь под себя
У language_name такой же casual stuff. гугли доку, копируй-вставляй, правь под себя.
>у JS-сников фреймворки/либы с 1к депенденсиес, ты про это?
Протоколы, субд, message brokerage, кеширование, контейниризация, scaling. Про это тоже.
>Но вся концепция сводится к одному - лепишь не понятно в каком стиле простыни/макароны какой то поеботы, сборщик это все упаковует и выливаешь в прод.
Зависит не от языка, а от конторы.
>>54643
>>54635
И да, я перечитал комменты в треде и понял, что меня считают за толстяка или хейтера JS. Так вот я считаю JS хорошим языком, подтверждение тому его популярность и безальтернативность в web секторе. Я просто после ООП не до конца понимаю некоторых вещей, которые можно было бы залепить в виде ООП.
>У language_name такой же casual stuff. гугли доку, копируй-вставляй, правь под себя.
ага, тебе на митапе говорят - тут должен быть бридж, а тут фабрика. Закопипастишь такое?
>Протоколы, субд, message brokerage, кеширование, контейниризация, scaling
написал первое, что пришло в голову? Я же писал, верстальщик+, ну может ++, ладно
>Зависит не от языка, а от конторы.
Get started, npm create-app любой шаблонный запускаешь и видешь одно и тоже везде. То, что можно инкапсулировать и использовать с дженериком с перегрузом в JS реализуется копипастом с наименьшими правками
>Закопипастишь такое?
Да. Паттерны как раз и созданы для того, чтобы их копипастить.
>написал первое, что пришло в голову? Я же писал, верстальщик+, ну может ++, ладно
Написал чем может заниматься JS-задний-конец девелопер, и чем точно не будет заниматься верстак.
>Get started, npm create-app любой шаблонный запускаешь и видешь одно и тоже везде.
Ты правда считаешь, что в нормальных продуктовых конторах бездумно юзают бойлерплейты и вслепую копипастят с рандомных
репо в нпм? :)
Сам ты тупой.
В питоне нет сокрытия данный по-умолчанию, в виде protected/private, это немного минус, переменные светятся снаружи.
Есть защита от переопределения в наследниках через префикс-двойное подчёркивание.
Если тебе нужно сокрытие данных, ты можешь реализовать его через геттеры-сеттеры.
Основы ООП, что отличает от обычного программирования:
1) есть какие-то данные внутри объекта, определяющие его состояния, которые снаружи не видны - в питоне и жс есть. Это инкапсуляция.
2) Наследование тоже есть.
3) Все функции виртуальные, соответственно этим ты полиморфизм обеспечиваешь.
Это те самые столпы, на которых базируется ООП. Если они есть, то удобно писать в ООП стиле. Язык это инструмент, и что питон, что в меньшей степени жс ООП позволяют.
Допустим, в C++ и Java стройнее ООП сделано, но не об этом речь. Как инструмент, ООП в питоне работает.
>Да. Паттерны как раз и созданы для того, чтобы их копипастить.
Что за хуйня?
Паттерны - это просто именованные идеи проектирования.
Ты можешь знать какие-то подходы, можешь сам придумать, всё придумывается, если мозги есть. Немного полезно какие-то термины знать, чтобы просто сказать "фабрика", а не объяснять "хочу реализовать функцию, которая возвращает какую-то другую функцию/класс/объект".
Но поскольку слишком многие описанные паттерны близки друг к другу, деталями отличаются, никто их не помнит, конечно, хотя принципы все знают. Такое доскональное знание паттернов показывает, что ты просто недавно книжку прочитал и рвёшся что-нибудь где-нибудь применить. Пионерство играет одним словом.
>Да. Паттерны как раз и созданы для того, чтобы их копипастить
судя по всему ты их никогда не реализовывал, раз такое пишешь.
>Ты правда считаешь, что в нормальных продуктовых конторах бездумно юзают бойлерплейты и вслепую копипастят с рандомных
репо в нпм? :)
я думаю у них есть свои шаблоны проектов ака скелет, под который они стелят новые проекты. Но как много продуктовых ты знаешь в СНГ? Сапорт да и только
>Написал чем может заниматься JS-задний-конец девелопер, и чем точно не будет заниматься верстак.
Ок, давай разберем, что ты накалякал:
>Протоколы
Абстрактно, нужна конкретика
>субд
фронты занимаются БД? Или ты про Full-stack говоришь? Мой ответ - нет. Разве что через JSON что ни будь вытянуть с API
>message brokerage
опять не фронта задача, может быть фул-стэка с Node js. И это скорее как модуль, чем какая то обязанность, присущая каждому JS-снику. Так что с этим не соглашусь тоже.
>кеширование
каждый работающий с вебом работает с кешем. Да, верстальщик его не касается, ему это и не нужно
>контейниризация
Как и с message brokerage палится определениями студентоты. Для этого JS-сник и нужен, что менять функционал программы индивидуально под клиента
>scaling
3ее абсурдное определение студентоты. Расширяемость. Верстальщик тоже пишет с учетом увеличения функционала. Для этого препроцессоры и придумали.
Исходя из перечисленного тобой функционала JS-сника, который зачастую или является реализацией модуля, могу сделать вывод, что ты и сам то продуктивые никогда не видел. Могу предположить, что на реальном проекте ты тоже никогда не сидел.
>>54733
парадигма решает такие вопросы? Меня вкатыши иногда так поражают, как обухом по голове. Толи от тупости, толи от не знаний. По сабжу - async/await уже давно пришел в другие ООП языки (до JS-а)
>async/await
Делает код асинхронным. Вообще, вопрос максимально тупой, нельзя выполнить код "сейчас", используя результат выполнения кода, который выполнится "потом". Это к изначальному вопросу >>54506, после которого залетные загорелись и начали что-то про ООП писать, который к делу вообще отношения не имеет.
Насчет async/await кстати хотел узнать: какие тут ключевые отличия в жс от питоновских async/await?
>Делает код асинхронным
Странное чувство меня посещает каждый раз, когда пытаюсь вести споры на борде. Ощущение, что сам себе на ебало плюю.
А что такое? По-твоему ты можешь сделать await вне асинк функции? Ну расскажи тогда, как.
что блять за хуйню ты несешь? Какое нахуй await вне функции? Ты хоть понимаешь, как асинхронность работает и для чего тебе этот сахарочек завезли в JS? Эх блять, посмотрел бы я, как бы вы без них еблись с оптимизациями через task factory...
Так синхронный код - это и есть код, который выполняется "сейчас". Если код должен делать что-то после выполнения асинхронного кода, то он тоже должен быть асинхронным. Это простая логика, это так и должно работать.
Он обернут в then, это уже неасинхронный код?
Вот ты и дал самому себе пососать.
Эмуляция фич ООП в питоне - это охуенно, Питон стронк.
Эмуляция фич ООП в жс - говно, недоязык. "ЖС говно после ООП".
Открою секрет. В JS можно писать настолько же ООПшный код, что и в python. Правильное ООП по Кею не реализовано ни в одном из этих языков. Твое видение ООП в котором откуда-то наследование взялось, как я уже писал, может быть рабочим, а может и не быть. Я не знаю, что у тебя в голове, а объяснить ты толком и не можешь.
>>54744
Я ему:
>Написал чем может заниматься JS-задний-конец девелопер, и чем точно не будет заниматься верстак.
Он тебе:
>фронты занимаются БД? Или ты про Full-stack говоришь?
>И это скорее как модуль, чем какая то обязанность
Читать научись, блядь, потом конкретику спрашивай, зеленый.
>JS-задний-конец девелопер
Нет никакого "заднего конца". Node js запилили, но от этого backend JS-сников не появилось. Есть только Fullstack. И изъясняйся понятным языком, а не сленгом своей шараги
не джавист, но близко. Как можно задавать вопрос про "Как вынести await из метода?" Это что блять в голове должно быть?
Кстати да, обратил внимание, что JS-снички любят писать за функции. Так вот хочу посоветовать почитать, чем функция отличается от метода, прежде чем везде тыкать это определение
>"Как вынести await из метода?"
>А можно без .then? Но при этом, не делая другую функцию тоже асинхронной?
Одно и тоже, прям 1 к 1.
Одно и то же. Ты либо делаешь через .then, либо через async/await. Ключевое слово await работает только внутри async функций. Все.
>Функция - отдельная сущность, а метод - свойство объекта.
facepalm.gif
>Если ты это объяснение не понял - твои проблемы
сейчас бы от JS-сника послушать объяснение асинхронности, когда им его только в 15 году завезди и сразу оптимизированные, в виде высокоуровневого враппере
>Это тут >>54506 задали такой вопрос
ты мне задал этот тупорылый вопрос, когда я даже понятия не имею, что вы там ранее обсуждали
Я не задавал тебе вопрос, это был намек на то, что ты глупенький и не понимаешь, как работает джаваскрипт.
>Функция - отдельная сущность, а метод - свойство объекта.
Говнооперу не понять, что функция может быть объектом высшего порядка, а не только методом объекта?
>функция
>объектом высшего порядка
ебать ты заливаешь, "высший порядок". Пиши проще - метод, может содержать реализацию другого метода.
Ответ - не правильный, думай еще.
>>54836
Пост >>54719 вопрос >>54744
Объяснение >>54733
Какое отношение парадигма имеет к реализации таких вещей, как асинхронность? Ты путаешь понятия. Я говорю - Лучше ехать на велосипеде, чем на самокате, а ты мне - "Как это решит проблему с клаксоном".
Я сижу в треде около 2 часов и я понимаю, что кроме вкатышей и мимо_ойтишников тут врядли кто то пишет.
>ряяя я самый умный, вы все лахи, ну то есть я обосрался, но сейчас скажу, что нет, это тупые
учу не осиливших гугл пользоваться поисковиками. Когда будут джунами устраиваться им этот скилл пригодиться.
По сабжу - да, ООП-дед вас, щеглов ссаных, хочу чему то научит.
Кстати разобравшись в инкапсуляции, наследовании и полиморфизме очень сильно измениться взгляд на программирование.
в запросах БД, в работе с UI, в алгоритмических методах, где нужно ожидание времени выполнения. Очень много где на самом деле, так сразу все и не вспомнить
2. Напишите функцию, которая тоглит класс. Ф-ия должна принимать два аргумента: элемент и класс, который нужно добавить/убрать из набора классов. Решить нужно без использоваться classList. Ф-ия должна работать со свойством className элемента.
Для любой связи с внешним миром, по сети или через файлы-потоки.
Фактически да, это всё сетевые запросы. Работа с БД - сетевой запрос. Работа с MQ - сетевой запрос. Даже работа с memcache - сетевой запрос. Там детали вроде tcp/sock сути не меняют.
Но ведь реально таких задач довольно много может быть, и их надо как-то решать. async/await в общем не так критичны, когда немного таких точек, прекрасно и на обычных коллбэках всё делается. Главное то, что эти колбэки у JS в коробке, в отличии от подавляющего большинства других платформ.
что SOF говорит? Или ты думаешь препод из твоей шараги из другого источника вопросы берет?
так сходи пособеседуйся, хули. Узнаешь, какова чистота этого бэка на ноде, лол
>Покажи
https://hh.ru/vacancy/36533611?query=node js
https://hh.ru/vacancy/36606712?query=backend node
Что еще пизданешь?
>SOF
Чек и дабл чек соф - проблема в том что они там решают эту задачку ОПТИМАЛЬНО, а мне нужно по его условиям.
Потому что работает хорошо и быстро. Они переехали с Java. А какие варианты? На ноде очень удобно писать сервисы. А производительность очень высокая.
Скорее всего, просто была куча программистов на жс, часть из которых можно было пересадить на бэк, и в содержать это дело было дешевле чем кучу джавистов. Да и фичи быстрее на жс пилить.
>>54900
Тащемта, перформанс у жс сосёт у всех (кроме всяких питонов/руби/пхп), так что перформанс — последняя причина.
>собрать все из разных кусков,а вменяемого фреймворка нет
Учитывая их размеры, они всё равно писали бы свой фреймворк на любом языке, лол.
Просто поддерживать свои библиотеки в 80% случаев проще, чем править сторонний фреймворк.
Есть.
Это очень просто, если ты можешь, то достоин отчисления.
да и хуй с тобой
Тебе написали:
>в рынке люди спокойно работают backend-на-node разработчиками с поверхностным знанием фронтенд параши
Можешь вилять жопой сколько хочешь, но "знаю jquery и bootstrap" это и есть поверхностные знания потому как нихуя ты дельного фронтенда на таком стеке не напишешь.
Энивей, ты попросил показать тебе хоть одну вакансию чистого бека на нодах. Тебе кинули уже 3-4. Уже готов признать, что ты говноед или еще нет?
https://hh.ru/vacancy/36137641
https://hh.ru/vacancy/32435104
Даже не с поверхностными, а нормальными знаниями фронтеда можно работать чистым бекером, когда фронтом занимается другой.
блять, вкатыш, камон. Ты можешь на борде кукарекать что угодно, по поводу бэк энд ноды, но ты прийдешь на свою первую галеру и ты резко превратишься в фул стэка. Хочешь ты этого или нет. Зайди в бугурт тред и спроси - есть ли хоть один чистый нодовец. Пиздец это копротивление со своим внутренним я не дает покоя вкатышам. Те кто в теме, те понимают о чем я
Пидор, вафлер, чухоня, залупа, тетя шлюха, капрал клиторчук
Чел, блять, не могу пройти мимо вашего срача
Хуярю бэк на Питоне (Джанго). Да, меня при устройстве гоняли по вопросам фронта, однако это были весьма поверхностные вопросы насчет dom, css-селекторов и ванильного жс. Эта хуйня "учится" менее чем за неделю если у тебя есть адекватный опыт погромирования и понимания веба
Уважаемые гуру джаваскрипта. Есть один вопрос.
Я хочу внутри одного промисчейна отобразить модальное окно с выбором для пользователя и результат выбора сразу передать в следующий промис.
...
.then(() => showModal())
.then((userSelection)) => processSelection(userSelection))
........
Вопрос как мне привязать к кнопкам модального окна resolve?
Вариант №1:
Сделать два promise-chain-а, где второй будет триггерится на click по выбору.
$(modal).on('click','.choice', function(e){
StartPartTwo($(e.currentTarget));
});
Вариант №2:
В момент создания к каждому HTMLElement-у выбору привязывать event
foreach( let choice in choices){
choice.addEventListener('click', resolve);
}.
Хотелось бы узнать Best Practise для подобных проблем.
Академически ты задачу решил, но на практике нельзя отбирать у пользователя контроль, надо ждать, пока он засабмитит форму в модале. Поэтому ему лучше просто сделать обработчик события onSubmit, а промежуточные данные куда-нибудь заныкать.
Хех, а ты думал тебе сеньор за спасибо будет твою задачу решать? Очевидно, что можно обойтись без sleep и while за которые в нормальных конторах просто убьют нахуй. Могу запостить как это сделать.
В следующей части я переписал код с использованием колбэка. И опять сначала результат второй функции появляется,а потом первой. А теперь вопрос. Возможно ли сделать так чтобы вывести сначала результат первой функции (несмотря на таймер) а потом второй используя только колбэки (не промисы). Насколько я понял это можно сделать используя callback in callback. Но как это реализовать (если вообще возможно)?
Скорее нет, чем да.
Что у тебя: синхронная функция, она по определению выполняется от начала и до конца. Когда ты делаешь асинхронный вызов, кладёшь в очередь обработки задач с помощью setTimeout какую-то задачу, функцию, вместе с контекстом окружения.
Но, ты не можешь приступить в выполнению следующих задач в очереди пока не завершил текущую задачу ПОЛНОСТЬЮ.
Какие варианты у тебя есть. Оформить нужный код в виде отдельной функции, и передать её с окружающим контекстом в ту, что должна быть вызвана первой.
Но я не уверен, что тебе именно это нужно.
>>55501
Спасибо за ответы!
Что думаете по поводу решения ниже?
class Awaiter {
/
@param {Array<HTMLElement>} buttons
/
constructor(buttons){
this.buttons = buttons;
}
/
@returns {Promise<HTMLElement>}
/
AwaitFirstClick(){
let promises = [];
this.buttons.forEach(button => {
promises.push(this.AwaitClick(button));
});
return Promise.race(promises);
}
/ @param {HTMLElement} button
*/
AwaitClick(button){
return new Promise((resolve, reject) => button.addEventListener('click', resolve, { once : true}));
}
}
var awaiter = new Awaiter(buttons);
awaiter.AwaitFirstClick().then((e)=> alert(e.currentTarget.textContent));
>>55501
Спасибо за ответы!
Что думаете по поводу решения ниже?
class Awaiter {
/
@param {Array<HTMLElement>} buttons
/
constructor(buttons){
this.buttons = buttons;
}
/
@returns {Promise<HTMLElement>}
/
AwaitFirstClick(){
let promises = [];
this.buttons.forEach(button => {
promises.push(this.AwaitClick(button));
});
return Promise.race(promises);
}
/ @param {HTMLElement} button
*/
AwaitClick(button){
return new Promise((resolve, reject) => button.addEventListener('click', resolve, { once : true}));
}
}
var awaiter = new Awaiter(buttons);
awaiter.AwaitFirstClick().then((e)=> alert(e.currentTarget.textContent));
Так проще читать наверно
Нормально.
бамп
let a, b = (1 + 2, 3 + 4);
if ([]) {
console.log(b)
}
Выведется что b==7, а==undefined. В чем вообще профит такого кода? В Питоне хотя бы если указываешь переменные через запятую то они все получают ссылки на какие-то значения
Что не так? Очень удобная штука, если у тебя функция возвращает объект или массив, значения которых нужно присвоить разным переменным. Повышает читаемость кода.
Сказал хуй, написавший let a, b = (1 + 2, 3 + 4);
Тащемта если несколько переменных надо присвоить к одному значению, то можно ёбнуть
let a, b, c = x;
бамп
А, ну да, ундефинед.
Зачем ты тянешь node_modules к себе на хостинг, ты ебанутый? Это файлы для разработки.
>мне нужно убрать рефреш с этих инпутов и чтобы оставалось то, что я выбрал.
input.onChange(e) {
e.preventDefault();
}
затупил и забыл за dev/build. Спасибо
галеры - не весь рынок, ау
Друзья, нужно сделать генератор .docx файлов. Чтобы текст, введённый пользователем в формы сайта копировался в определённые поля вордовского документа, который бы выдавался пользователю.
Скажем, в документе ворд 2 предложения. Они заранее прописаны и их трогать не нужно. Между первым и вторым нужно ввести текст из поля сайта №1.
Есть ли готовые решения этого вопроса? На каком языке можно сделать подобный генератор? В какую сумму вы бы примерно оценили данную работу?
docx это тупа xml внутри архива, если вставка всегда в определенное место, всё делается за 15 минут на любом языке, где есть готовые либы для xml. Больше пары тыщ за такую шляпу платить грех
Блять, даже скриптоязык осилил а остальные не могут. Животные ебаные
На той же жабе обмазавшись Apache POI такая хуйня пишется на раз два.
А вот если тебе нужно генерировать что-то посерьезней, изменять форматирование, вставлять таблицы, то тогда полная залупа. Тот же вышеупомянутый Apache POI сосет с проглотом на таких задачах, а это пожалуй лучшая библиотека для таких задач.
В жабе так же. В плюсах и шарпиках этого нет, потому-что там сохранили goto. Жс в этом плане ни разу не уникален.
goto
Прочитал и охуел от ебаной каши. У вас действительно так всё сейчас? Какой-то рокет саенс.
>На каком языке можно сделать подобный генератор? В какую сумму вы бы примерно оценили данную работу?
На языке VBA
Он специально заточен под написание макросов для приложений Microsoft Office.
Файлы *.docx это как раз документы приложения Microsoft Office Word.
Однако сервер, на котором крутится твой сайт, в этом случае, должен работать под Windows системой, потому что понадобится Microsoft Office Word, открываемый в коде как COM объект.
В какую сумму ? - хрен его знат, я технарь, торговец из меня никакой.
Попробовал сделал такой сайт. У меня на это ушло пять часов.
Однако время было потрачено на доводку ещё не доделанного сервера, а не на код для работы, собственно с Office Word
Но поскольку он работает на моём компе, то после выключения компа или включения маршрутизатора IP-шник изменится и эта ссылка работать перестанет :
http://94.243.35.54:125/Generator_docx.html
Прошу попробовать сгенерировать файл документа. И сообщить как пашет.
По поводу :
>>56490
>docx это тупа xml внутри архива, если вставка всегда в определенное место, всё делается за 15 минут на любом языке, где есть готовые либы для xml.
.docx - это бинарный файл, а .xml - текстовый. Поскольку он хочет, чтобы на выхлопе был .docx файл, а редактировать ты собираешься .xml файл, то всё равно придётся после редактирования, чем-то .xml конвертировать в .docx.
Если же работать под Windows системой и править документ на VBA - можно, практически, делать с документом .docx любые сартальвартали, которые умеет делать сам Word.
ну как-то так и есть
кстати можно без then и не делая другую функцию асинхронной, но толку чуть
вчера только видео смотрел, лол, надо просто использовать генератор с промисами (можно без либ, но придется написать функцию, которая его будет крутить тогда), так под капотом работает async/await, но отличие в том, что не нужно возвращать промис
а толку чуть потому что, что yield, что await будут изолированы от остального кода и нет большой разницы напишешь ты генератор и крутанешь или напишешь async/await и запустишь, какая тебе тогда разница что там async/await возвращает
Просто вывалил всё говно в кучу, и озаглавил "Каково учить JS.
Учить надо как язык работает и как абстракции правильно строить.
Ещё недавно топ темой было рендерить всё у клиента, чтобы сервер не нагружать, а теперь переобулись, обозвали это пва и мода на сервер рендер. Понятно, что и то и то было раньше, но я говорю про моду. И такая ебала меняется каждые полгода-год. В других языках это меняется раз в 3-5 лет.
Проиграл, но автор просто переделал знаменитый You need to use Docker. It’s the future! на реалии фронтенда. Кто вдруг не видел
https://circleci.com/blog/its-the-future/
Спасибо анон!
Если не секрет, тебе это зачем такое надо ?
Я всё не могу перестать думать, как он это хочет применить, придумал несколько вариантов, но все они бесполезны.
Да наверняка это карманный вебмастер в конторке "рога и копыта" пытается сделать костыль, чтобы делать из данных в вэбе делать документы для менеджеров, которые в ворде потом работать будут. В нормальных компаниях наоборот, от файлов уходят в веб-приложения.
<button id="button">Button</button>
<img id='image' src="example.com/image.jpg">
<script>
button.onmouseenter = function() {
alert('Навели иышку')
}
button.ondblclick = function() {
alert('Двойной клик')
}
button.onmouseleave = function() {
alert('Увели мышку')
}
button.onclick = function() {
image.src = 'example.com/otherImage.jpg'
}
</script>
Задача.
Условие: Есть сервер, выдающий .js-файлы c JavaScript-кодом,
и есть клиент с браузером, загружающий .js-файлы c JavaScript-кодом после запроса на сервер.
Проблема: исходный код JavaScript может быть подменён в .js-файлах, по пути их даставки,
особенно по открытому каналу - в результате MITM-атаки.
Вопрос: возможно ли как-то исключить возможность подмены кода?
Первое, что приходит в голову - это передать код в виде строки,
вычислить с неё хэш и сравнить с хэшем строки на сервере,
а затем, запустить код из строки, с помощью eval()
Однако, и сам хэш может быть подменён в результате MITM-атаки.
Поэтому, можно было бы предварительно вычислить хэш строки, и опубликовать его так,
чтобы он был известен клиенту - ещё до запроса от него.
Но и в этом случае MITM-атакер может подменить хэш на свой.
Какие ещё могут быть варианты?
Если у тебя нет возможности аутентифицировать сервер, то никак вообще. Если же можно, то сервер должен подписывать код, который высылает.
В общем случае ты просто работаешь через https и не паришься.
Первый урок на learnjavascript.ru
>В общем случае ты просто работаешь через https и не паришься.
Всё-же, интересует HTTP и открытый канал,
так как и сертификаты HTTPS можно подделать,
подписав их доверенным центром сертификации.
>Если у тебя нет возможности аутентифицировать сервер, то никак вообще.
>Если же можно, то сервер должен подписывать код, который высылает.
Ок. Пусть у сервера будет pre-shared public key, и пусть он подписывает данные его скрытым private key.
И пусть подпись проверяется по pre-shared public key.
Проблема в том, что этот самый pre-shared public key может быть подменён MITM-атакером - при первом же запросе.
Можно ли как-то исключить это?
В Питонухе например string это immutable, то есть при изменениях данных исходный объект уничтожается и создается новый. А вот list это mutable, когда юзаешь append/pop то объект list остается тем же, просто данные внутри него меняются
у тебя в js точно также строка иммутабельна, если ты хочешь поменять какой-то символ в строке то тебе придется создать новую строку с замененным символом
>Проблема в том, что этот самый pre-shared public key может быть подменён MITM-атакером - при первом же запросе.
Это значит, что у тебя нет возможности аутентифицировать сервер. Остаётся только верить.
Если ты Боб, и к тебе подходит девушка, которая представляется Алисой. Как ты можешь знать, что это Алиса, если ты раньше её не видел, никто другой её не видел, общих секретов вы не знаете, надёжных документов нет и т.п.?
По сути, всё тоже самое, что и в питоне. Числа-строки копируются по значению, объекты-массивы как ссылки.
Помогите плз, как при помощи query селектора выбрать только текст "Сапоги Кошмаров"?
Если я пробую name = doc.select("h1").text(); то выбирается еще и текст из <span> элементов, то есть получается "Сапоги Кошмаров Легкий 72"
<h1 style="margin:0px;padding:0px;">Сапоги Кошмаров
<span class="add">Легкий</span>
<img src="img/grade/A.gif">
<sup><span class="add">72</span></sup>
</h1>
кодер ебанат, я вкурсе
В основе реактов и ангуляров лежат ModelView подобные паттерны. Так что да, паттерны тоже надо пынямать хотя бы.
Получилось через doc.select("h1").textNodes().get(0).text(); не очень проффесионально, но как есть.
Есть ещё elem.firstChild, который в твоём случае будет текстовой нодой, но это менее гибко, чем твой вариант. Так что ты вполне себе такой профессиональный.
решил предыдущие проблемы , но вознилка новая. на этот магаз где допилил данный модуль все встало ок, но теперь заказчик поставил его на другой такой же другие товары и лого из за чего снова блять не работает. стори: проблема была изначально в том что у меня из стандартного файла слалось все сразу из инпута когда я печатаю свой город, а не то что я выбираю из автокомплита и необходимо было менять модель в огромном файле в backbone js. тк я напримую туда лезть не мог то надо было его кидать через свой модификатор. ну хуле, допилил модель и просто впихнул ее напрямую в сам шаблон. все работало. но когда посттавили на другой сайт то нихуя не пашет. в шаблоне все есть, все нормально. но саму модель он не хочет переопределять как было записано. как решать то такую залупу?
не могу уже горю с этой хуйни поскорее бы отъебаться от нее, аж руки щас трясутся и не могу мысли собрать, надеюсь понятно.
Вот это да. Я думал первым ребенком будет <span>. Не ожидал что есть разные вещи такие как .firstChild и .firstElementChild
<button onClick={()=> this.onDismiss(item.objectID)} type="button">
работает, а с функцией
onClick={function(){this.onDismiss(item.objectID);}}
нет?
Ты вот только себя не накручивай. Мы печенегов победили и это победим.
Из твоего мелкобуквенного описания не очень понятно. Да и вряд ли можно нормально описать эту легаси кастомс.
Раз одна модель, попробуй дебагер запустить в обоих проектах и посмотреть на разницу стека вызовов. Может какие идеи появятся. Напиши debugger в одном месте.
>>56960
Лексический тхис у стрелочной
https://javascript.info/arrow-functions#arrow-functions-have-no-this
Контекст выполнения проебан. У второго варианта нет this. У первого его тоже нет, но т.к. это стрелочная функция, this приходит из компонента.
В том, когда связывание просходит.
В первом случае callback берётся из контекста, текущее значение этой переменной в момент эвента, во втором случае ты уже сразу конкретное значение указываешь.
В первом случае значение callback может измениться между моментом вызова addEventListener и самим событием, во втором нет.
>Да и вряд ли можно нормально описать эту легаси кастомс.
во во ля. ебучая cms где модули допиленные перепиленные. тут еще проблема движка в том что он не смотрит на js и css файлы. то есть я могу модификатором просто в этом огромном жс файле переопределить модель, но сам движок на него хуй забьет и воспроизведет стандартный огромный жс файл, а не мой модифицированный. поэтому я ее и делал в шаблоне. и там прекрасно работало, а тутт - хуй. настройки модулей абсолютно идентичны. хуй знает в чем дело
а где именно дебаггером то тыкаться? щас на новом проекте ставил его в свою переопределеную модель-похуй он не смотрит, в брауззере по event listener следил - он тоже мою модиф модель игнорит. как быть то?
Дебагером попробуй для начала в шаблоне, в своей модели, чтоб убедиться, что она вообще не вызывается в проблемном проекте. А потом в рабочем проекте по стеку вызовов смотри, в какой момент шаблон вызывается. Получается, этого момента не будет в проблемном.
ну посмотрел я вызовы. в общем положняк такой. на рабочем проекте: он вызывает сначала jquery, затем пикер времени, и затем уже сразу же мою модифицированную модель, на стандартную хуй забивает. на нерабочем проекте: идет сначал jquery, затем так же пикер, и потом он идет в свою стандартную модель и заканчивает на этом. мою даже не вызывает. иии собсно схуяли так и как мне сделать так чтобы он юзал мой скрипт с модиф моделью а не стандартный ..?
Вкусовшина конечно, но как по мне -- слишком.
Не понятно, что за api[42]
Лучше тогда сделать три массива methods, paths, procedures и вызывать
for (let idx = 0 ...)
{
const method = methods[idx]
const path = "/api/" + paths[idx]
router[method](path)
...}
Или чтоб красиво сделать конструктор
return { method, path, procedure }
и потом
for (let api of apis
const controller = router[api.method]
const path = "/api/" + api.path
...
await controller(path, handler)
Есть ли такие вещи, которые необходимо знать в работе с языком, но их там нет?
Сопоставление url и функций контроллеров
нет, ставиться вместе с нодой. Тебе же нужно будет как-то пакеты устанавливать в проект, а что бы получить доступ к файловой системе тебе нужна нода. Юзай nvm
Смотри уроки, где на ходу пилится какая-нибудь поебень.
Из-за того, что не поставил точку с запятой на 17 строке, babel "прилепил" массив к функции. Какие ещё подводные, если нигде не ставить точки с запятой?
>>57012 - кун
в твоем случае осталось только dom ивенты и getElement... рассмотреть
>>57085
Там вся база. Подводных камней там нет. Так же имей в виду, что чистый JS никому не нужен и имеет смысл внимательно изучить основы и сразу приступать к фреймворку. Я много раз видел в треде, что аноны изучали Vue и MobX и им было по кайфу (легкий старт для новичка). Но тоже имей в виду, что Vue в основном китайский фрейм и у нас юзают React/Angular
Но если на ноде бэк сделать, а фронт на каком-нибудь рякте, то вполне будет бложик на жс.
Вот например Дэн запилил свой уютненький бложик: https://overreacted.io
Какая-то хрень, которая идёт к реакту.
https://www.gatsbyjs.org/starters/gatsbyjs/gatsby-starter-blog/
Вот тебе будет крутейший блог на ЖоэС с последними смузи-технологиями. Рякт рендерится на сервере, посты забирает Графкуэлем из маркдаунов. Всё это супер стремительно и хостится как простая статика.
Чтобы просто сделать бложик, ага.
https://gatsby-starter-blog-demo.netlify.com/
По твоему мелкобуквенному высеру мне кажется, что тебе не нужны такие усложнённые штуки.
Тебе будет достаточно руководства из ОП-гайда. Там и куцый русик есть
https://developer.mozilla.org/en-US/docs/Learn/Getting_started_with_the_web
иди формочки клепать
можно.Но зачем?
Редакс это прослойка для управления состоянием. У тебя, грубо говоря есть твой View - это реакт или другая хуета, которая никакой логики не содержит, просто показывает, что дают. А есть редакс, который содержит в себе сценарии событий.
При каком-то действии, пользовательском или нет, реакт (для простоты) дергает редакс за соответсвующую ниточку-экшон, которая в свою очередь попадает в функцию-редюсер (банальный switch-case), а редюсер уже менят состояние в соответствии с тем, какой экшон ему пришел. После чего реакт рендерит себя с новым стейтом. Вот и все.
>реакт или другая хуета, которая никакой логики не содержит
Вот те раз. А контекст реакта, стейт, хуки и провайдеры, которые спокойно реализуются и без редакса?
Это все исключительно для отображения
Ну кароче я слышал, шо php устарел, ruby устарел, python устарел, труЪ фротэндеры пишут всё на чистом реакте или ангуларе.
я снова отчаился. висят два АБСОЛЮТНО одинаковых скрипта. один подключается в футере другой в теле шаблона т.е. раньше. и в них допустим срабатывает событие change на одном инпуте. так вот вопрос. какой именно из них будет обрабатывать мой инпут? сначала первый, а потом второй? или сразу же второй?
Ты вообще понимаешь разницу между фронтом и бэком? Между веб-приложением и веб-сервером?
куда ты там "вкатываться" собрался?
Сдается мне что в лучшем случае 1 семестр ванильного жс. Забавно выходит, если студент 4-6 лет учил стек который на максималках ему нахер не пригодился, и он идет верстать странички на Реакте
Что можно сделать с тем же реакт или ангулар того, что нельзя сделать на голом php ?
конкретно напрямую вряд ли. щас делаю курсачи для разных шараг где верстка сайта будучи при этом на какой нибудь гум хуйне типо педогики, ага. и вот там обязательно надо юзать какую то хуйню из жс. может в курсе функционального программирования проходят ?
Учить надо принципам и технологиям, а не конкретным продуктам. Конкретные продукты - удел ПТУ.
Обычно учат так, что надо реализовывать что-то прикладное, для обучения, и это прикладное делают на каком-нибудь фреймворке, библиотеке и т.п.
скорее чего нельзя сделать с помощью голого пхп, но нельзя с помощью реактов ангуляров и нод. например работать с sql бд.
Я привел пример, чтобы человека не запутать с четким разделением стейт и вью
Ты запускать то их пробовал? Два одинаковых скрипта сами по себе уже создадут проблем. Переменные, функции одни и прочее, ЖС просто не даст их создать.
Как будешь работать с БД? Как будешь обеспечивать секьюрити своего приложения? Как будешь контролировать реквесты/респонсы к сайту на низком уровне?
>А вообще js (и что главное: его фреймворки) преподаются хоть где-то в рассеянских ВУЗах на айти-направлениях?
Сомневаюсь что хоть где то его преподают. Обычно в ВУЗах это С, С++, C#, Python.
Он был у нас в ПТУ, но ванильный и очень старой версии.
А зачем нужен вообще этот стейт?
Ладно, я понимаю, зачем он нужен в ту-ду приложении.
И вообще прикольно выглядит идея синхронизировать этот стейт целиком с беком, вообще любовь и голуби.
А что если у меня не туду, а форум с базой на 10 гигов?
Ты уже второй месяц устраиваешься. Есть вакансии без опыта, просто ты их не видишь или не хочешь на них.
Покажи мне веб программиста, который не использует базовые курсы, которыми дрочат 99% ойтишнеков:
Алгоритмы и структуры данных, дискретный матан, БД, протоколы передачи данных, ООП и ФП, ИБ.
>Алгоритмы и структуры данных, дискретный матан, БД, протоколы передачи данных, ООП и ФП, ИБ
Каждая первая жиэс-макака?
С одной стороны, сразу полетят кукареканья вида: "Да нет конечно, это пиздец, а вдруг куки украдут?"
А теперь серьезно: когда вы слышали, чтобы кто-то последний раз осуществлял атаку с пиздингом кук?
Если твои куки вообще могут спиздить, то как бэ уже похуй, в открытом виде там пароль или тупо хеш сессии.
Плюсую
Вот я хрен знает когда последний раз кто-то от шлюхи подцепил ВИЧ. Поэтому всегда предлагаю им ебаться без гандона. Только ссыкливые дети отказываются
>алгоритмы и структуры данных
Начиная от примитивов, заканчивая set'ами и объектами.
Или в реакте их не юзают?)
>какая к хуям БД
На беке
>ооп и фп
А потом у макаки течет абстракция
Или она начинает перебирать коллекцию с помощью for
>протоколы передачи данных
А потом макаку спросят про хедеры в http, а она попукает в ответ.
ты хочешь сразу десять гигиов с бека оправлять на фронт и рендерить? Стейт не хранит всё состояние приложения, он хранит то, что ты туда положишь.
Как ты приложил этого бумера
>Какие ещё могут быть варианты?
Общим недостатком рассмотренных тобою способов проверки достоверности данных является передача хэш-сумм передаваемых данных по тому же самому аппаратно-программному каналу связи, по которому передаются и сами данные. Такая ситуация похожа, будто спрятали ключ от квартиры, при чём в замочную скважину прилагается записка о том, где этот ключ лежит.
В целом, проблема может быть сведена к двум разноплановым задачам :
1. Как передать хэш-сумму данных не по тому же каналу(а то и физической среде), по которому передаются данные, а по другому и заведомо защищённому. Скажем, через SMS подтверждение, как это делают банки.
2. Как свести необходимость передачи подтверждающей хэш-суммы к минимуму.
Чтобы не пришлось подтверждать КАЖДЫЙ скрипт его хэш-суммой. Можно ЛИШЬ ОДНАЖДЫ, при процедуре авторизации аккаунта, получить от сервера по заведомо защищённому каналу пароль, например, в SMS сообщении.
И этим паролем шифровать трафик.
Это могло бы выглядеть так :
Пользователь получает от доверенного источника, ОДНАЖДЫ(смотри второй пункт) файл-шифратор трафика, что равносильно получению Браузера от производителя браузеров.
Этот файл, при желании, он может сравнить с таким же файлом у Иванова, Петрова, Сидорова, чтобы убедится, что это не подделка. Скажем, проверить его размер и CRC-32 с опубликованными в открытом доступе.
Затем он запускает этот файл, приложение выбрасывает окно ввода телефонного номера, тот вводит номер, жмёт кнопку, приложение связывается с сервером и регистрирует для себя аккаунд на сервере, в подтверждение сервер высылает на указанный телефон SMS-ку с паролем, действующим в течение пяти минут.
Пользователь вбивает в это же поле - оно должно быть одним, а то перепутает куда вбивать, если их окажется два, одноразовый пароль, написанный в SMS-ке опять жмёт кнопку - окно диалога исчезает, запускается браузер(который в системе по умолчанию) на Страницу сервера с приветствием, дескать, шифратор трафика, гарантирующего приватность обмена данными установлен.
Далее трафик шифруется полученным от сервера паролем.
Как последнее осуществить - второй вопрос.
>Какие ещё могут быть варианты?
Общим недостатком рассмотренных тобою способов проверки достоверности данных является передача хэш-сумм передаваемых данных по тому же самому аппаратно-программному каналу связи, по которому передаются и сами данные. Такая ситуация похожа, будто спрятали ключ от квартиры, при чём в замочную скважину прилагается записка о том, где этот ключ лежит.
В целом, проблема может быть сведена к двум разноплановым задачам :
1. Как передать хэш-сумму данных не по тому же каналу(а то и физической среде), по которому передаются данные, а по другому и заведомо защищённому. Скажем, через SMS подтверждение, как это делают банки.
2. Как свести необходимость передачи подтверждающей хэш-суммы к минимуму.
Чтобы не пришлось подтверждать КАЖДЫЙ скрипт его хэш-суммой. Можно ЛИШЬ ОДНАЖДЫ, при процедуре авторизации аккаунта, получить от сервера по заведомо защищённому каналу пароль, например, в SMS сообщении.
И этим паролем шифровать трафик.
Это могло бы выглядеть так :
Пользователь получает от доверенного источника, ОДНАЖДЫ(смотри второй пункт) файл-шифратор трафика, что равносильно получению Браузера от производителя браузеров.
Этот файл, при желании, он может сравнить с таким же файлом у Иванова, Петрова, Сидорова, чтобы убедится, что это не подделка. Скажем, проверить его размер и CRC-32 с опубликованными в открытом доступе.
Затем он запускает этот файл, приложение выбрасывает окно ввода телефонного номера, тот вводит номер, жмёт кнопку, приложение связывается с сервером и регистрирует для себя аккаунд на сервере, в подтверждение сервер высылает на указанный телефон SMS-ку с паролем, действующим в течение пяти минут.
Пользователь вбивает в это же поле - оно должно быть одним, а то перепутает куда вбивать, если их окажется два, одноразовый пароль, написанный в SMS-ке опять жмёт кнопку - окно диалога исчезает, запускается браузер(который в системе по умолчанию) на Страницу сервера с приветствием, дескать, шифратор трафика, гарантирующего приватность обмена данными установлен.
Далее трафик шифруется полученным от сервера паролем.
Как последнее осуществить - второй вопрос.
Не устраиваюсь. Просто боюсь, что когда закончу изучение никому не буду нужен. В моём миллионнике только 5-6 вакансий для джуна без опыта
Везет тебе. В моей мухосрани было 0.
Мерзко. Ни за что не буду заниматься сексом с незнкомой женщиной.
А вот смс-аутентификация - пиздец охуенно безопасно, просто космос.
Мало того, что телефон можно проебать легко, так еще и симку через пару месяцев бездействия передают другому абоненту.
Это до того частая хуйня, что в рахе номера уже по пятому разу используются и быдло не может в вк зарегаться, потому что кто-то когда-то уже на этот номер регнулся.
Купил такой нулячий номер в салоне, а на него чей-то банковский аккаунт привязан, охуенно блять, безопасность на уровне.
Я тебе уже говорил, что вакансий гораздо больше и надо просто менее модные слова вбивать.
Вообще, у меня есть апи и в этом апи уже есть авторизация, и роли, и ограничения по роутам и все такое.
Причем там это сделано в виде объекта вида AvailableActions (User).
Короче можно всегда знать, что конкретно можно конкретному юзеру.
Пока придумал тупо хуячить в json этот объект и отправлять на фронт. Норм идея?
А там уже тупо точно так же, как и на беке, смотреть по этому объекту, что как кому отрисовывать
Хм, такое дело: есть бэк на питоновском Джанго, на одной из веб-страниц должен быть набор виджетов, которые можно будет перемещать вверх-вниз через drag-n-drop, причем их порядок после перемещения должен сохраняться (через апи отправляться на сервер в БД)
Серверная часть готова, БД, ORM и api тоже. Познания в жс есть только в ванильной его части, но нового не боюсь. Как замутить эту фичу?
new Test()
бамп
Ну и иммутабельность структуры данных, что преподносится как некая совершенно охуительная фишка, но я чет не понял, в чем космический эффект от нее и почему нельзя просто изменять стейт в редусере, если он один блять и операции с ним синхронны.
Для отправщиков событий разницы вообще нет, какой там стейт и че вообще делают с событиями после их отправки.
Скорее всего потому что запускается ближайший в скоупе.
Ну ты и соня, тебя даже вчерашний шторм не разбудил. Реальные пацаны глобал стейт через хуки уже реализуют. А про редюсер, который хук, правильно написал, но редакс существовал задолго до него, как костыль для глобал стейта.
ничто не мешает тебе кидать отклики на вакансии с требованием 1г+, особенно если у тебя диплом будет
Так блэт, что собственно у вас происходит с фреймворками? Они могут быть установлены поверх друг друга?.. Вот например TypeScript, он может работать вместе с Реактом или вместе с Нодой? Конфликты возможны?
React+Redux+Gatsby+Express и MongoDB+Spring(Java)+Node.js на бэке? ну и захуярить все это в Docker или Kubernetes?
могу хуярить на Java, сейчас вкатываюсь во фронт, с реактом все ясно, осталось ноду потрогать за сиське и с докерами разобраться
ну и чтобы не писать это в одно жало сто лет, а за пару месяцев нахуярить
туду - нахуй, скучно, новый фейсбук - нахуй, долго.
нет, это стандартная дока по js
ts не фреймворк, работать вместе могут
>React+Redux+Gatsby+Express и MongoDB+Spring(Java)+Node.js на бэке?
Нахуй тут Gatsby и Spring? Да и кубер это оркестровщик докер образов, одно не может без другого. Короче хуёво ты разобрался.
>Чтоб такого реализовать
Бизнес любит когда проект решает какие-то проблемы, воот, так что создай проблемы и реши её с помощью своего стека.
в легаси галерю давно, в том куске докер нахуй не нужон, поэтому всетакпроизошло
а по сабжу есть что сказать?
ну вот тут тестовые задания ру-контор на реактмакакинг
https://github.com/Hexlet/ru-test-assignments
браться или нет? хз прям
15 летний, ты?
ну например - https://github.com/KosyanMedia/test-tasks/tree/master/aviasales_frontend
Дергаешь бэк и рисуешь всю эту поебень и уже по этим данным фильтруешь. Нужно знать реакт и немного разбираться в js
for (let y = 0; y < blocks.length; y++) {
for (let x = 0; x < blocks[y].length; x++) {
this.playField[this.activePiece[y] + y][this.activePiece[x] + x] = this.activePiece.blocks[y][x];
}
}
Задачки на массивы нужно задрачивать? А де их взять что бы постепенно с простого к тяжелому?
Че это ха хуйня? Ангуляр жи в 2020 ненужон никому
На leetcode, сначала решаешь задачи уровня easy, потом medium. Но вообще всё с опытом приходит. Либо если ты до этого математику задрачивал и прокачал абстрактное мышление.
Давай я тоже создам блог и на первое место JQuery поставлю. Тоже прибежишь сюда и начнёшь спрашивать "Почему так?"? Ты хотя бы немного на источники информации внимание обращай, вот этот высер написан:
>Aman Goel is a Computer Science Graduate from IIT Bombay
Т. е. индусом который купил диплом в Бомбее за стадо коров. Он не пишет чем он руководствовался составляя этот список, он просто вхуячил названия и описал эти фреймворки.
Совсем дурачок? Как ты себе представляешь ноду и жабу одновременно на бэке? Так не бывает, сычуш, ты либо делаешь на жабе, либо делаешь на ноде и сосёшь хуй, потому что надо было делать на шарпе.
при помощи transform-translate и проверки нахождения границ элемента относительно бегающего в нём текста. И не забудь всё делать через window.requestAnimationFrame
То есть вью, бекбон и ембер тебя не смущают?
Ангулар наконец-то более-менее устаканился и даже имеет перспективы убить реакт в тырпрайзе за счёт сформированных стандартов, но это не точно.
Опытом может быть и личный проект. Создай какой-нибудь сайт, а лучше несколько, похуй что на них будут заходить только боты, главное чтобы было что показать. В чём проблема?
Джава не может в React SSR.
>не могу в голове
Если бы это всё в голове можно было удержать, то зачем тебе комплюктер??
Высокоуровневый язык делали специально для человеков, чтоб угождать человекам. Компутеру не нужны эти слова фор и имена функций. Проблема в том, что ты, используя высокоуровневый язык, пытаешь угодить компьютеру, по-компьютерски писать. Естественно, что по-челвоечески это перестает быть понятным.
Вместо того, чтоб пограммировавать, решать задачу, ты кодишь, подставляешь известные тебе тайные коды и надеешься что компюктер сделает чудо.
Ты типа научился кодить, молодец. А теперь забудь всё, чему тебя учили (колобок интендед).
Реши задачу по-человечески, без всяких грязных языков прогноррирования. А потом заставь комплюктер, инструмент, упростить твою жизнь и сожрать человечское решение.
роус.форИч( целлс =>
_ целлс.форИч( целл, индекс =>
_ _ пусть нужныйЦелл = целл + дистанц
_ _ ретурн сделатьВещи(нужныйЦелл, целл, индекс, небо, Аллах) // тут снова пиздёжшь, много аргументов функции палятся. Описывая задачу человечьим языком, ты редко говоришь больше чем о трёх сучностях. Это функция явно машинная, а не человечья. Надо дальше декомпозировывать.
Программа это всего лишь непротиворечивое _описание_ области интереса. Что описывает твоё решение с форами? Сделай, чтоб описывало.
Я тоже так думал, а потом понял, что они были написаны для тех, кто знает язык программирования, а не жопаскрипт. Тру стори, без негатива.
Если хочешь делать сервак, то берешь фреймворк типа экспресса. Когда ты хочешь сделать сервер на питоне, то ты идешь на сайт джанги и читаешь доку джанги.
если я хочу сервер на пхп,я беру ларавел и апач
а во вью типо нет виртуал дома и ssr? Ну и jsx то конечно круче темплето говна, ага.
>типо нет виртуал дома и ssr
Убого натянуты с родного ФП огорода в велосипедный чёрный ящик темплейт недоразумение
Композиция убита, велосипед на самом деле не осилен и зачастую ведёт к утечкам памяти
>jsx то конечно круче темплето говна
Ну ты совсем пизданулся, если не видишь разницы между виртуалдомовским потоком данных и его всраниванием при натягивании на темплейты
>Ну ты совсем пизданулся, если не видишь разницы между виртуалдомовским потоком данных и его всраниванием при натягивании на темплейты
Чё, у тебя jsx уже виртуальным домом стал? И там и там всё это превращается в кучу вложенных рендер функций.
Давай накидывай ещё умных слов, главное меньше конкретики а про потоки, фп и чёрные ящики.
кто-то соверует через интерфейс, кто-то через type. Как поступать лучше?
Почему ты тролль?
Незачем, потому что есть React/Vue/Angular
Сейчас в почёте мэнклитеры с генитально-свободными нулло, а ты тут машешь своей доистроической булавой.
ну как оно?
лень смотреть че там тезисно, сидят с пафосными ебалами, унижают, травитель с подпездышами в комплекте?
Я упоминание void видёл только в одном видосе синьора-помидора реакта, но и то линтер ему сказал поменять void 0 на undefined.
Есть тред, его стейт - посты в массиве, которые рендерятся через arr.map. Есть кнопка, которая по идее должна по клику через .push добавлять элемент в массив. Но вместо этого крашится с ошибкой "TypeError: threadPosts.map is not a function".
Что делать?
Элементы чего? Он кормит элемент массива пропсом в ThreadPostCard, который рендерит <article>.
Самую популярную
Основной :
setInterval(() => {
const button = document.querySelector('.trade_confirmbtn.ellipsis.active');
if (button) button.click();
}, 50);
Класс кнопки Ок btn_grey_white_innerfade btn_medium
Тебе нужно проверять есть ли на странице кнопка с класом btn_grey_white_innerfade btn_medium если есть кликать по ней, если нет то по trade_confirmbtn.ellipsis.active'
Я в коде вообще почти ничего не шарю. Не смогу синтаксически правильно это написать, вот поэтому и прошу помощи...
setInterval(() => {
const button = document.querySelector('.trade_confirmbtn.ellipsis.active');
const errorButton = document.querySelector('.btn_grey_white_innerfade.btn_medium');
if(errorButton) {
errorButton.click()
} else if(button) {
button.click();
}
}, 50);
Не работает. Я так понимаю тут ошибка в логике.
Ты задал переменные типа Баттон и эррор Баттон и сразу же даёшь цикл что если эррорбаттор, то на не жмякать. А если нет, то на обычную Баттон.
Но тут порядок другой. Сначала жмется обычная кнопка. При каждом нажатии на нее, вылазит окно с ошибкой и кнопкой "эррорбаттон". И потом жмется уже она. И итак по циклу. Сначала обычная, потом эррор. Ну либо я чего то не понимаю
А в твоём примере при запуске страница просто улетает вверх и кнопки не жмутся
А,ещё я так понял, тут работает так, что идёт поиск по странице, правильно? Поиск этих кнопок. И дело в том, что обычная кнопка есть всегда на странице. И она будет жаться тоже всегда при такой проверке. А эрробаттон вылазит поверх обычного Баттона
Во втором случае выполняется дофига лишних строк, а все они в методе render(). С другой стороны первый вариант - однозначный зашквар.
За такой свитч можно расстреливать без суда и следствия.
Ненужное говно, требуется в 1.5 приложениях
Корневой элемент вместе со всеми дочерними - это в любом случае дерево. Я имел в виду подмену одних дочерних элементов другими.
Все даже хуже, чем я думал.
Короче, Redux - это глобальная переменная, кек)))0 Остальное лишь синтаксический сахар.
Вообще, чтобы не пробрасывать зависимости, нормальные люди используют IOC.
Эта хуйня действительно помогает тебе избавится от ЛЮБЫХ пробрасываний, ты просто задаешь зависимости в конструкторе и получаешь их, все.
Также и тестировать легко, никаких глобальных маня-объектов нет, никаких зависимостей ни от какой хуйни вообще нет, сам объект с зависимостями ничего не знает о том, откуда их получает, полное разделение ответственности.
А тут, госпаде, какое говнище, пиздец. Теперь ты не пробрасываешь элементы стейта, теперь ты пробрасываешь говнокод редакса в каждый компонент и получаешь данные из магического очка, целиком от него завися.
Что это за пиздец вообще?
Такую ссанину могли придумать только жс-дебилы.
Кажется, я начинаю понимать, какого хуя тут каждую неделю высирают новый фреймворк.
>ты просто задаешь зависимости в конструкторе и получаешь их, все
>и получаешь данные из магического очка, целиком от него завися
одно и то же
Нет, в первом случае ты можешь передать зависимости как напрямую, так и с помощью ioc.
Сам код не меняется в зависимости от того, как данные туда поступают. Более того, он не знает, откуда их получает и ему на это и похуй. В этом суть блять. Независимость.
Класс просто сказал, что хочет получить - а откуда ему это высрали ему до пизды.
В редуксе же ты напрямую используешь методы вида "достать говно из магического очка / отправить говно в магическое очко".
Ты зависишь от этого очка.
А еще, с ioc ты ничего напрямую никуда не пробрасываешь, не пишешь никакой говнокод типа connect и HOC'и.
Вот два фатальных отличия.
В первом случае избавление от проблемы, а во втором тупо глобальная переменная со всеми вытекающими.
поговорил с мелкобуквенным пуком
Вот мы и пришли к выводу о том, что жс говно ебаное.
Разумеется, и для него есть способы это сделать и готовые либы. По сути, все, что надо ioc-контейнеру - это знать тип аргументов конструктора перез созданием объекта.
Их можно получить или из доктайпа, или нативно в тайпскрипте.
Только всем на это похуй и никто не юзает.
Это мне напоминает ситуацию с питоном.
Мощнейший скриптовый язык не юзается ни в каких серьезных задачах, потому что у него кодовая база говно говна и никто, блядь, не юзает современные фичи и типизацию.
У тебя TodoList все еще зависит только от своих инпутов, тестируй его полностью. Можешь еще селекторы потестировать, если там дохуя чего. connect - это обвязка фреймворка, где ее нет?
Помнишь старый ангуляр? Там тоже были static $inject = ['biba', 'boba']. В текущем ангуляре уже полехчи, можно просто @Injectable - и сразу типа автодискавери, только есть нюанс, хочешь поинжектить интерфейс - пиши @Inject(YOBA_SERVICE_PROVIDER) у параметра. Рефлексии то нет, а та что есть - на декораторах, а они stage-2
>базовые концепции фп
>хуки, хоки, ехал коннект через коннект в транспиляторе
Может, еще про чистые функции спизданешь?
Типы не выводяться в 70% случаев, НИУДОБНА. Вот если бы только у нас были инструменты...
Этим, кстати, объясняются и относительно высокие зарплаты у жс-макак. Потому что нормально писать на жс вообще невозможно, поэтому требуется постоянно строчить и переписывать кучи кода, чтобы поддерживать в рабочем состоянии проекты.
Тогда как на норм языке можно написать 1 раз и на 5-10 лет, то на жс код протухает за полгода и надо уже заново все писать.
Охуенно, чо
Галероребенок плез
Ты не можешь сопоставить базовый концепт IO с механизмом мутаций в реакте, но срёшь какими-то натягиваниями всего на своё узкое понимание ооп (которого в реакте как библиотеке нет вообще)
>хуки, хоки, ехал коннект через коннект в транспиляторе
>Может, еще про чистые функции спизданешь?
Очередные сравнения тёплого с мягких в твоём манямирке
статические генераторы сайтов
Наивный, это же Рякт-хуякт. Пересобирать и перезаливать весь проект даже не на каждый пост, а на каждую правку. Железо всё стерпит.
Как он тогда рисует до нажатия кнопки? Я хз почему отрывок кодпена не слушает правила css, но в деве дело выглядит пик релейтед.
Я присваиваю начальное значение threadPosts в виде массива, .map его спокойно обрабатывает, кнопка с ивентом addThreadPost должна по идее добавлять элемент в этот массив и перерисовать тред.
Что я упускаю?
Потому что до нажатия кнопки он был массивом. После нажатия кнопки он у тебя превращается в число и реакт пытается у этого числа вызвать функцию .map
function addNewPost() {
const newThreadPosts = [...threadPosts];
const currentPostsLength = threadPosts.length + 1;
const newPost = `Post #${currentPostsLength}`;
newThreadPosts.push(newPost);
addThreadPost(newThreadPosts);
}
return (
<section className="thread-view">
<h4>Thread view</h4>
{threadPosts.map(post => (
<ThreadPostCard
key={Math.random() * 1000}
postContent={post}
/>
))}
<button onClick={addNewPost}>Add a post</button>
</section>
);
}
Потому что сначала идёт сравнение, а потом уже логическое И
В итоге получается
X && true && 'O'
>После нажатия кнопки он у тебя превращается в число и реакт пытается у этого числа вызвать функцию .map
Бля, как тогда добавить элемент в массив? Неужели надо с конкатом пердолиться?
>>59374
Пикрелейтед, твой код превращает старое состояние в строку. Плюс Тайпскрипт ругается на типы в:
newThreadPosts.push(newPost);
addThreadPost(newThreadPosts)
Точно, я неправильно смотрел таблицу.
>Бля, как тогда добавить элемент в массив? Неужели надо с конкатом пердолиться?
threadPosts.push(`Post #${threadPosts.length}`) && threadPosts
Таки надо было с конкатом пердолиться.
<button onClick={() => {
addThreadPost(threadPosts.concat([`Post #${threadPosts.length + 1}`]))
}}
>
Это получается создаётся новый массив и запихивается заместо состояния старого? Как-то жирно получается, ради добавления одного элемента.
> Пикрелейтед, твой код превращает старое состояние в строку.
Мой код добавляет новый элемент к твоему массиву, а что тебе надо я не понял
Кнопка ничего не добавляет.
Сейчас копипастом вставил и всё работает. Может быть с переписыванием что-то накосячил.
Хотя по сути тот же конкат с полной заменой массива. Видать с хуками никак иначе.
Как делать такие же анимации на среакте? Нужно знать математику? Может кубы бизешки с этим справятся?
react-spring.
Госпаде, как меня бесят эти нескучные анимации на говносайтах.
Еще ни единого раза не видел, чтобы это приятно выглядело. Напротив, только бесит своей тормознутостью и нагрузкой проца.
Пожалей юзеров, не делай это говно.
Так я для себя тудушку делаю. Анимации никогда не делал, хоть тут попробую
> иии собственно где мне искать код жса, почему он не открывает всплывающее окно для обратного звонка ну и как это лечить?
Спроси у того, кто сказал это сделать - структура то у проектов может быть разной.
здесь битрикс. так что думаю что может вообще в любой жопе мира прятаться. ведь так?
Да. Я бы в первую очередь проверил local и include папки.
WebSocket
Потому что переписывать нету смысла, официальные доки нужны не для того, чтобы тебя научить правильно переменные объявлять, а для того, чтобы объяснить как эта самая библиотека работает.
Оптимальный способ добавления элемента в массив.
массивНейм = [...массивНейм, новыйЭлементНейм];
Оптимальный это push, а твоя хуйня создает новый массив, при этом старым забивает память до тех пор пока её не очистит сборщик мусора + по скорости намного проигрывает.
Я все равно не понял, маркдаун файлы - это .md? То есть как генерится такой проект? Юзер нахуярил новый пост, как происходит его персист? Он просто файлик на сервер складывает? Чем это лучше обычного блога на ПХП?
componentDidUpdate(prevProps) {
if (prevProps.someVar !== this.props.someVar)
// Do something
}
Есть ли аналогичный метод для контекста?
Токены-хуёкены на сервер всё равно надо будет отправлять. Реакт только кнопочки для админки тебе нарисует.
Меня осенило этим чудесным утром. Я занимаюсь фронтом (могу и беком но тоже на JS) и не люблю верстку. Мне нравится заниматься тем пластом бизнес логики, что перекинули на него, нарвится выстраивать взаимодействие с беком, нравится управлять стейтом приложения, но верстать я ебал. Так что подскажите продвинутые курсы по верстке плс и поделитесь есть ли у вас такое же ее отрицание как и у меня. Алсо, всегда хотелось спросить про мемы типа пика. Это же полная хуйня. Достаточно посмотреть на то сколько мозгобества и костылей может быть в энтепрайзе на том же фронте. Так что я считаю, что этим мемы делал чел, банально путающий UI со всем фронтом.
Мемасик не хуйня, а просто устарел. Теперь там двухэтажное чудище, а сверху красивая бабочка в виде макетов дизайнера
fetch чем не угодил?
Иммутабельность вполне себе оптимальна. Обобраться ты можешь только в рекурсии.
Думал перетащить сайт с компонентов на хуки
Хочу маленький сайт на реакте, клонирую create-react-app, npm install, хуяк - 180 мб. Хочу маленькое электрон-приложение на реакте, клонирую electron-react-boilerplate, npm install, хуяк - 800 мб! Да схуяли. в каждом. проекте. эта папка. с полной. копией. всех. зависимостей?? Центральный локальный репозиторий (как мавен) это не про ноду? Не поймите неправильно, я не против держать все это, но в единственном экземпляре, пожалуйста.
А есть еще всякие лок-файлы, технологии "уплощения" папки с модулями, "новый" менеджер yarn, это все туда ведет, к локальному репозиторию? Я запутался, читаю уже несколько часов, миллион вкладок в браузере открыто, помогите, как делать чтобы было нормально? Судя по технологии "нету в текущем node_modules, ищем в родительском каталоге", можно вообще эту папку в корень диска переместить, это норм метод? Как потом npm'у указывать чтобы обновлял именно ту, корневую папку? Да и версий там нет, у либ в этой папке, значит будут коллизии и это не настоящий выход. Че делать-то, как вы выживаете?
Да похуй нам.
Лок файлы - это чтобы доставлять на прод версии зависимостей, которые вы использовали при разработке, а не которые вышли 3 дня назад и все сломали.
"Уплощение" немношк уменьшает объем node_modules.
yarn - когда npm был плохеньким, yarn был быстрее выше сильнее, сейчас похуй.
>чтобы было нормально
Тут это "нормально"
А теперь установи эту же либо другой версии, и чтобы обе версии были доступны
Поиск модулей не работает так, как ты хочешь. Require и import ищут модуль, а не модуль конкретной версии, поэтому один проект на диске сможет работать, а два - уже нет, потому что версии не совпали
Так и какое решение? Держать в каждом проекте по толстой папке зависимостей это единственное решение в node-среде?
Да, ведь она рассчитана на прогресс, а не на селюков вроде тебя, которые каждые 100 мб считают.
В следующий раз, когда встречу ребят из апача, передам им, что на дваче сказали что они селюки. Надеюсь не все js-комьюнити здесь такое как ты.
>сравнивает закрытую систему и команду разработчиков с открытой системой и отдельными разработчиками, которым похуй друг на друга
А ты не очень умный, да? Хотя ничего другого от жабапетуха я и не ожидал.
Да, я не очень умный. Пожалуйста, объясни, как открытость/закрытость и разработчики связаны с отсутствием у npm локального кэша с версиями модулей?
Именно потому, что нельзя в общую директорию поставить пакеты одного модуля разных версий, в отличие от того же менеджера, что я привел выше. И ты проигнорировал мой вопрос раскрыть свой высер про разработчиков, это потому что ты реально там не имелл ничего конкретного ввиду, да?
Короче я нашел, есть pnpm. Подводных при использовании разумеется пока не знаю, если у кого есть опыт - подсказывайте. Позиционируется как drop-in replacement для npm и выглядит серьезно: в курсе о конкурентах (npm/yarn), есть бенчмарки, на сцене минимум с 17го года, 62 участника, последний коммит 4 часа назад.
Инфибо: программное обеспечение для автоматизации развёртывания и управления приложениями в средах с поддержкой контейнеризации. Позволяет «упаковать» приложение со всем егоокружением и зависимостями в контейнер, который может быть перенесён на любую Linux-систему с поддержкой cgroups в ядре, а также предоставляет среду по управлению контейнерами.
Это типо хостинг или что?
Делал когда-нибудь образ диска, iso-шку? Принцип тот же. Создается образ, маленькая операционная система, в которой крутится одна твоя программа, как центр вселенной, плюс ее "окружение" - другие программы, которые она использует, файлы конфигурации, переменные среды. Вот это все пакуется в файлик для быстрого развертывания на другой машине. Например, можно запаковать nginx + php-fpm + твой_сайт, потом просто загрузить куда надо и все это сразу заработает, без установки отдельных инструментов и прописывания конфигов.
На файрбейз задеплоил миллион проектов, что дальше?
Так проще скинуть таск на удалёнку. Исполнителю не придётся ставить и настраивать бд, сервер и тд. Просто запустил докер и всё.
useContext
Новые посты в нем как создаются?
Реквест с клиента выглядит вот так: https://github.com/dubsteploverxxxdIooIb/this-shit-doesnt-work/blob/master/fetch.js
express: 4.17.1
body-parser: 1.19.0
Перечитал убер много гайдов по этому поводу, ничего не помогло, буду крайне благодарен за любую помощь.
1) Насколько сильно вообще ооп в жс применяется на практике ?
2) Что почитать по ооп в жсе ? типа как лучше строить все, а не про синтаксис объектов user_1. Пока возникло ощущение, что придется вообще брать книги по опп из других языков. там все это постигать и переносить уже на жс.
>Стоп то есть можно быть ВЕБ ДЕВЕЛОПЕРОМ не зная что такое void?
Я синьор JS и до этого видео не знал, что в JS есть void.
Собес в Яндекс на Джуна, у Костяна-то лайт вариант был!
схоронил кто видос? ютуб выпилил уже по жалобе яндекса
вместо 59 секунд должен был написать 57, ошибся в вопросе
(скрипт должен срабатывать в чч:мм:57:500 или позже)
Это копия, сохраненная 27 июля 2020 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.