Это копия, сохраненная 5 августа 2022 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Больше пары строк кода в посте или на скриншоте ведут в ад.
Для программирования на HTML https://codesandbox.io
Для Node.js с консолькой https://repl.it/languages/nodejs
Если рассчитываешь получить дельный ответ, сформулируй правильно вопрос: «что я хочу получить, что я для этого делаю, что я вместо этого получаю». Если/когда самостоятельно найдёшь решение — поделись в треде, мы за тебя переживаем.
Документация - https://developer.mozilla.org
Руководство для вката - https://github.com/acilsd/wrk-fet#javascript
Боже, какие красивые скрины, это я так понял в макоси делается, но как без всего лишнего и с такой тенью приятной?
Расширение Polacode для VSCode.
Я проебался, в конфигах вебпака нужен абсолютный путь. Но первый вопрос все еще в силе, зачем нужен этот __dirname
Dzięki
Чтобы получить путь файла и нормализовать его. Технически join по __dirname то же самое, но с резолвом очевидно, что вернёт абсолютный путь. Если так корёжит от дирнейма, сохрани в отдельном модуле абсолютной путь к корневой папке в переменную и лепи остальные пути джоином с ней.
Я хочу, чтобы при работе, я становился лучше в жиесе и фронент разработке - а по факту я становлюсь лучше в битриксе, а в остальном стагнирую. Ещё и на проекте работы по фронту застопорились - я сижу какой-то лажей занимаюсь.
Я готов поверить в крутые современные проекты на битриксе, но мой не такой - он огромный, на нём хорошие рабочие процессы, но вот сама разработка, это боль.
>>298111
Звучит, как план.
Ты только это, реакт освой, с битриксом тебе залупой по губам проведут, возьмут на другую битриксогалеру.
> но вот сама разработка, это боль.
В том числе из-за меня, кстати. Сейчас то я преисполнился, а год-полгода назад лютый говнокод выдавал и теперь с ним надо работать. Когда я уйду, меня будут проклинать.
Я вью освоил. На битрикс больше не хочу.
>Я хочу, чтобы при работе, я становился лучше в жиесе и фронент разработке
Ты и так становишься лучше (хотя может у конкретно твоей должности своя специфика). Пхп, битрикс и жекверя вечны, они будут актуальны всегда. А реакты, вуи, ангуляры это скоротечное говно, лет через пять никто не вспомнит про них.
Почему ангуляр от гугла скоротечное говно, а биртикс от один ас вечен? Потому что запад все?
Потому что это старые проверенные технологии. А битрикс в россиюшке больше актуален. Ангуляр кстати первый кандидат на свалку истории. От него уже сейчас отказываются в пользу реакта. Через несколкьо лет реакт станет никому не нужен, появится очередной новомодный фреймворк. И так по кругу.
https://qna.habr.com/q/1116024
Гугол перейдет на реакт? Ты фантазер?
Вот ты на чём пишешь? Почему не на битриксе/жквери? М?
Можете не помогать, все решилось
Лучше посоветуйте, где почитать нахуя они вообще нужны и где на практике применяются, что нубы так носятся с их изучением.
Очевидно же чтобы деньги на лохах стричь биткоиноаферами.
Собственно только нубы наверно и не понимают зачем может быть нужен телеграм бот. Это платформа где за тебя уже половина всего реализована и роль фронта выполняет самый популярный в снг мессенджер.
А по теме >>298310 ты просто доку https://github.com/yagop/node-telegram-bot-api/blob/master/doc/usage.md внимательно прочитай и часть вопросов сама отпадет.
Ну вот скажи мне несколько самых полезных ботов, которыми ты пользуешься. Очень интересно.
Если будет понятнее, то делаю плеер с возможностью создания плейлистов из общей числа треков, может вообще нахуй этот firebase и с чем то другим работать?
Я могу как-то в переменную получить ссылку на "нестандартную" канву (например, создаваемую svgtoolkit, fabric.js или canvas2svg от gliffy), чтобы потом передать ее другой либе, и она все рисовала в ней, думая что это обычная канва?
НЕ СЕТКУ ПИКСЕЛЕЙ
Задача: конвертнуть векторизуемые элементы canvas (всякие круги, квадраты, градиенты) в svg не через массив пикселей, а через "парсинг" и "трансляцию" правил рисования канвы в правила рисования svg.
Умеющие такую магию библиотеки требуют, чтобы я рисовал свою канву в объекте их класса (например, var ctx = new C2S(500,500); для http://gliffy.github.io/canvas2svg/), и мне надо как-то изобразить для библиотеки, которая собственно предполагаемую к конвертации канву и рисует (к примеру тот же fabric.js или к примеру не умеющая рендерить svg, только канву https://www.chartjs.org/, или например вот этих парней https://codepen.io/wildminder/pen/wJgbLb), что она рисует на обычной канве, чтобы уже затем успешно конвертировать результат. Если что, исходник canvas2svg
https://cdn.jsdelivr.net/gh/gliffy/canvas2svg@master/canvas2svg.js
На кодепене выше можно поиграться, добавив ее.
Я залетный с бека , просто оч нужно однуштуку написать
Господа сеньоры, ну поясните уже. Вебпак всё? Перекатываемся на esbuild?
Во первых юзай fetch
Во вторых у тебя фигня какая-то вместо урл-а. Это же http запрос, ему нужен путь, куда он будет запрашиваться. А у тебя вместо него 'get_number_of_clicks'
https://nodejs.org/api/path.html#pathresolvepaths
>If, after processing all given path segments, an absolute path has not yet been generated, the current working directory is used.
То, что в твоём хелловорлде это один и тот же путь, не значит, что в сетапах посложнее они будут равны.
Сколько можно перекатываться? Этому придет конец?
ну он же дрисывает путь так localhost:post/url(который ты написал) У меня кст этот вариант заработал. Надо было просто датаТайп указать текст.
Ты в курсе что у картинки css-стили существуют, weight, height, нет не слышал?
Не факт
Для себя тоже с налету ничего не делают. вначале определись что будет на сайте потом уже думай на чем. это же просто сайт скорее всего с каким-нибудь каталогом меню формой и корзиной. для этого готовых решений до жопы.
Что не так?
С calc работает. Для всех math нужен какой-то отдельный модуль?
window.location.hash = "huy"
Спс.
Да я тебе так объясню, если координаты заданы в пикселях при зуме возникнут дробные значения и из за округления при отрисовке могут возникать пробелы
Суть в том, что мой тимлид считает, что я уже крепкий мидл и иду в сеньеры постепенно, но по моим субъективным ощущениям я тяну максимум на крепкого джуна и то смотря где.
Проблема ещё в том, что у нас особо никто не шарит во фронте, на мне сейчас 3 джуна-фронтендера, которые просто делают, что я им скажу, от этого такое чувство, как будто я сам стою на месте и делаю какую-то хуйню, т.к. тупо нет людей вокруг от которых можно услышать конструктивную критику.
Так вот, теперь вопрос. Есть шансы с таким бэкграундом вкатиться в нормальную контору Дс2 на ставку хотя бы 120к-130к чистыми (моя текущая зп с учетом годовой премии)?
>по моим субъективным ощущениям я тяну максимум на крепкого джуна и то смотря где
Пройди собес на вакансию, где обтекаемо должность написана вроде "мидл+/синьор", там тебе пояснят, на кого ты тянешь.
>Пройди собес на вакансию, где обтекаемо должность написана вроде "мидл+/синьор", там тебе пояснят, на кого ты тянешь.
Не хотелось ходить на собесы, пока на этом месте ещё работаю, а то вроде и люди все нормальные, приятно с ними работать, но для себя не вижу перспектив здесь, только деградация... видимо придется на собесы ходить так, действительно, чтобы понять на что я тяну перед тем как увольняться...
Да, ещё забыл написать, что я в тестирование вообще не умею, пытался у нас его внедрить по гайдам Кента Доддса, но хуйня полная получилась с кучей дублирования кода... потом тупо времени не было вникнуть.
Эвоно как. А есть возможность как-то обойти такую проблему оперируя пикселями? Кто-нибудь задавал данный вопрос на той же bugzilla или bugs.chromium.org, чтобы получить более детальную информацию?
Тестирование фронта - тот ещё анал-карнавал. А уж если натягивать это дело на кодовую базу без тестов (а значит и пайплан без них), то там можно и вешаться.
Вот тебе кстати и детектор синьора, TDD в мире вротенда - это марксизм-ленинизм позднего совка. То есть никто в него не верит и не практикует, но все его лекалы должны от зубов отскакивать и ты должен рассказывать о пользе TDD на интервью.
так я тебе детально объяснил
Добавь к реакту ларавел и mysql. На ларке пет сделай с очередями. За 40-60k реально устроится на небольшую галеру для начала
>а там везде еще пхп нужен
Где, лол, почти не встречал, а где встречал то вордпресная битриксная параша.
Хуя ты теоретик. Ларки полно в мелких галерах
Пиздец вам там заняться нечем, хуле это дерьмо из каробки не работает.
Где взять этот ебучий лоадер, чтобы вебавк понимал JSX синтаксис. Как же мне печёт ни одного нормального гайда на ютубе.
input.addEventListener("input", (event) => {
value = event.target.value;
event.target.value = transformDate(value)
})
>Как же мне печёт ни одного нормального гайда на ютубе.
Видосикодебилы должны страдать. Тебе нужно копать в сторону babel-loader.
Да я не знаю. ток React открыл. Кручу верчу. Мне бы чтобы эта хуерга. Для начала хотя бы запустилась.
babel-loader. это отдельный файл, или часть webpack.config.js или часть package.json.
Подскажите пожалуйста как это говно заставить работать, есть инпут в него записываются данные нужно чтоб данные брались с дома и вводились ниже инпута
Сам подумой. С русиком кстати далеко не уедешь, так как все гайды по ручной нстройке реакта даже на англюсике устарели. И это ещё вебпак даже на ESM не мигрировал.
Попробуйте установить React
3 года
Дрочу уже почти год, до сих пор без оффера, и это при том, что я молод и с вышкой. Но возможно это потому что я тупой, у тебя все обязательно получиться за полгодика.
Информатика и вычислительная техника, брат.
Месяц попробуй потратить на это. Я скоро год как дрочу, но мне в процессе начало нравиться, когда после верстки начал жс дрочить.
Сейчас начал пет-проект на реакте и тайпскрипте, как доделаю, начну откликаться на все подряд.
6 часов минимум трачу, брат.
мувисерчер
Тролль какой-то за меня отвечает, рака жопы ему.
У меня около 6 часов в день свободно, но я не могу после работы мгновенно переключиться, еще и работаю удаленно, т.е. тупо RDP отключить и запустить вебшторм это сложно, я ем, смотрю видосик какой-нибудь, плюс производительность невысокая, т.к. после работы учиться сложно.
>>299408
С апишки дергаю данные и картотеку делаю, чтобы показывало несколько карточек и при клике на нее буду делать роутинг на полную информацию. Но я выбрал неудачное апи (pokemon), так что другое что-то поищу.
> Хуёво резюме составил,
Написал что я закончил, свой стек. Написал, что я, якобы, делал работы для студентов на заказ и что у меня B1 английский. Описал по каким курсам у меня есть сертификаты. Оставил ссылку на гитхаб и самый сложный свой проект. В конце добавил, как у меня горят глаза и как я хочу дорасти до миддла. И что не так?
> не умеешь себя продавать
Это правда, я до этого никогда себя не продавал. Понятие не имею как это делать.
P.s метод length не сработает, тк айди идут не по порядку
>массив
Array.sort по значению id.
Либо же пройтись по массиву, сравнивая и сохраняя наибольшее id.
Все вопрос закрыт, я долбаеб айди итак правильно получал, забыл добавить онклик для кнопки ;)
Мне HR сказала что его обычно за пару часов делают, я уже часов 12 ебусь, осталось ток рефакторинг сделать. Его вообще реально(джуну) за пару часов замутить?
А сколько времени изучение пхп лапавел займет? Вернее именно знание и понимание бэкенда. Я из бэкенда знаю толтко как хттп работает, какие бывают заголовки и код ответа.
const maxID = Math.max(...arr.map({ id } => Number(id)))
Тут зависит от того, сталкивался ли ты с похожими задачами или нет. Я бы наверно справился, здесь нет ничего такого, что я не делал.
Да
Накинь по часу за каждый пункт, уже 6 часов получится. За пару дней реально сделать, за два часа точно не
Ну учитывая что я джун, то с большинством нет, много всего приходилось по ходу гуглить
>>299742
Ну вот прям взять все время что я кодил + гуглил, убрать время на покурить и залипание, то где-то 8 выходит, плюс рефакторинг нужно сесть делать, это думаю займет пару часов еще. крч 6-12 часов более реальная цифра. А то я прям охуел и думал это я такой долбаеб медленный
С настроенным пайплайном можно и за два часа. Вот только если у тебя есть настроенный пайплайн, то ты уже мидол. Так что скорее всего хрюша передала то, что мидол ей сказал.
Делаю все нужные изменения. Делаю коммит. И хочу залить обратно. Делаю командой git push <адрес репа>. Но какого то хуя он создает новую ветку в репозитории. Основная ветка main а та которую заливаю master. Как сделать чтобы сразу в main заливались файлы?
npm install @zaebis/counter
> Мне HR сказала что его обычно за пару часов делают
Пиздит.
Есть вопрос по реакту. Вот решил я значит весь такой правельный, делать максимально чисто по гайдам. Верстраем значится виджет, есть у нас корневой компонент который держит весь стейт и логику его обработки, внутри от него по дому уже идут функциональные компоненты без состояния.
Но ведь если в условном компоненте Ж, произойдет событие, состояние корневого компонента изменится, и реакт после изменения состояния заререндерит всех потомков заного? Чего бы я там себе в голове не на мемоизировал, это его дефолтное поведения и я должен сказать спасибо, ведь соседние виджиты не заререндерелись?
Хуйня у тебя гайды, стейт приложения надо выносить из компонентов, если он используется в нескольких местах и объявлять в самом компоненте, если он используется только в нем, иначе будет всё дерево ререндерится на каждое изменение стейта, если не мемоизировать всё через React.memo.
"Функциональные компоненты без состояния" - это тоже звучит как что-то из древнего прошлого, сейчас всё пишут на функциях и компоненты с состоянием и без, классы нужны только в особых кейсах типа ErrorBoundary.
Пихай значит всё в редух, там не нужно ничего перерендеривать, всё саамо делается.
Попробовал такой же нарисовать с помощью canvas, хуево как то выглядит
Появилось два файла. Я посмотрел. В двух файлах много похожего кода. Так и должно быть или я что-то неправильно сделал?
> иначе будет всё дерево ререндерится на каждое изменение стейта
Разве рякт не умный и не проверяет че там изменилось перед тем как ререндерить?
> и объявлять в самом компоненте, если он используется только в нем
Но ведь он может быть очень сложным, какая-нить хуебуга которая оперирует несколькими объектами предметной области. И на пулреквесте можно хуев насобирать из-за нарушения separation of concern принципа.
Алсоу, вопрос был, будет ли он ререндерить все компоненты, или только те, пропсы которых поменялись? На сколько я понял из доки, отререндерятся все, чего бы я там не хотел.
>Но ведь он может быть очень сложным, какая-нить хуебуга которая оперирует несколькими объектами предметной области.
Ты очевидно не знаешь о чём говоришь, так что можешь не кривляться про прдементные области.
>И на пулреквесте можно хуев насобирать из-за нарушения separation of concern принципа.
Какие нахуй пулл реквесты, ты блять компоненты не можешь скопозиционировать. Оуть, сейчас бы разметку делать учётом потенциальных пулл реквестов.
Если не знаешь ответа на вопрос, так бы и сказал. Зачем агрессируешь на вкатуна?
Ответы на дебильные вопросы никто не знает.
>>299937
https://webpack.js.org/guides/getting-started
На рутрекере вбей тс + фреймворк который хочешь использовать. Любой курс с удеми тебе подойдёт.
https://github.com/pmndrs/jotai
Во всём лучше. Меньше размер, интерфейс, лучше тупскрипт и т.д.
Почему-то он видит один файл стилей, но не видит стили в разных папках.
Если подробнее, то сперва настроил вебпак. Был файл один файл стилей, который он воспринимал, и js файл, который импортировал стили.
Добавил папку с блоком. В блоке был также код стилей и файл js с импортом стилей. Файл JS он проигнорировал, стили не скомпилировал.
Пришлось руками импортировать стили в самый первый файл стилей.
Бля, как ты думаешь вебпак знает, какие файлы являются частью бандла, а какие нет? Он блять импорты анализирует.
Блок и так есть на странице.
Стилей нет. Импорт через JS файл не работает.
Единственная возможность подключить стили — напрямую импортировать их в другой scss файл, стили которого вебпак почему-то видит и применяет. Однако что-то мне подсказывает, что это не лучший подход.
Почему-то он один файл компилирует, а другой игнорирует.
И почему он один импорт видит, а другой нет? Хотя у обоих есть js файл, который их импортирует. Я не вижу между ними разницы. Вебапк же отказывается видеть один из фйлов вовсе.
Первый файл он видит. Третий он не видит.
И как он у тебя увидит импорт блока, если он не импортирован во входную точку?
В стилях он его у тебя "видит", потому что за импорт стилей отвечает отдельный лоадер.
>И как он у тебя увидит импорт блока, если он не импортирован во входную точку?
Я импортировал, заработало. Но разве это сильно отличается от ручного импорта в те же стили?
Почему нельзя просто написать один импорт и ебись оно всё конем?
>Я импортировал, заработало. Но разве это сильно отличается от ручного импорта в те же стили?
В какие стили блять? Ты импортируешь джаваскрипт модули, которые включают в себя в том числе стили.
>Почему нельзя просто написать один импорт и ебись оно всё конем?
Бля, как ты думаешь вебпак знает, какие файлы являются частью бандла, а какие нет? Он блять импорты анализирует.
Если тебе так охото говнокодить, то вебпак не нужен. Просто складывай свои скриптики в папку public и ссылайся на них в шаблонах.
> Просто складывай свои скриптики в папку public и ссылайся на них в шаблонах.
Не, я нашёл и скомуниздил эту срань. Стыдно, что код уворовал, но такие времена.
Есть рендер, как изменение dom-дерева, а есть render, как изменение virtual-dom и то и то может вызывать тормоза. dom-дерево реакт ререндерит только если что-то изменилось, virtual-dom на каждый чих, если плохо понимать, что делаешь
Потому что он тебе хуйню посоветовал, такие вещи через svg делаются
Не в тему, но советую pugbem поставить еще, удобнее элементы писать без прописывания названия блока
.page
._header
вместо
.page
.page__header
А как на паге сделать так, чтобы тег в разметке имел класс как элемента блока, так и сам был блоком? Вот так <header class="page__header header"></header>
При этом, чтобы бок был вынесен в отдельную папку и не содержал ничего лишнего.
Я только дошёл до этого, но это же извращение и боль для глаз.
И чем это лучше импорта? И там и там тебе нужно ссылаться на файл строчным литералом. Вот только то, что ты использовал, никакой статический анализатор не поймёт, так как это мокрописечка вебпака.
>И чем это лучше импорта?
Предполагается множество папок и файлов. Импортировать каждый по отдельности лень.
Ты с таким говном очень быстро пососёшь хуйца на рекурсивных зависимостях.
Множество папок и файлов подразумевается в любом проекте. Как потом собираешься к этим модулям обращаться? Мокрописить то, что тебе вернул `requireAll()`? Или будешь всё в глобал скоупе хранить? Для последнего вебпак только вредить будет.
В смысле стоит? Так ES модули работают.
Руками вообще ничего не стоит импортировать, стоит юзать ts и автоимпорт.
Я так сильно не делю. Есть блок - выношу в компонент. Элементы в блоке всегда, нечего их туда-сюда таскать.
Хотя я на самом деле уже член положил на паг, т.к. реакт изучаю, там это не нужно все, а разметку маленького компонента за 5 минут несложно сделать.
>Я так сильно не делю. Есть блок - выношу в компонент.
Быстро соснёшь с таким подходом, когда элемент будет одновременно являться несколькими блоками.
Так ты особо бэк не будешь учить, когда во фронт вкатишься. В свободное время разве что. Но зачем учиться на фронта, а потом учить бэк, если можно учить бэк?
Идешь в пхп тред. учишь пхп, устраиваешься, получаешь опыт, при желании переучиваешься на другой язык.
Ну т.е. иными словами почему закомменченный код не работает, а незакомменченный который делает те же вещи, но в большее количество строк работает.
Спасибо, заработало. А я рылся, думал все ломается из-за того, что я пытаюсь на всякий случай убрать класс, которого может и не быть. А в чем принципиальная разница между i<2 и i===1 в данной ситуации?
Ты бы хоть основы языка выучил прежде чем пукать
for выполняется пока i удовлетворяет условию
Чел, даже чисто визуально
>let i = 0; i === 1
>ноль равен одному?
>let i = 0; i < 2
>ноль меньше двух?
Мм, да, в чем же принципиальная разница между этими принципиально разными условиями, загадка, ебать.
Да сел после большого перерыва, начинал изучать месяц назад и забросил из-за ковида, сейчас чутка в себя пришел и вспоминаю, вот и тупанул.
Да всем поебать куда ты там сел и как давно. Тем более в интернете. Ты пытаешься оправдать себя перед самим собой, что первопоказательно твою низкую мотивацию и заинтересованность.
Всем глубоко похуй вкатишься ты или нет. Понимаешь ты что или нет. На тебя вообще всем насрать. Это тебе должно быть не все равно. Поэтому вместо того, чтобы сопли размазвать и подбирать причины собственных неудач займись уже собой.
двачую этого мотивационного тренера
НЕ СЕТКУ ПИКСЕЛЕЙ
Задача: конвертнуть векторизуемые элементы canvas (всякие круги, квадраты, градиенты) в svg не через массив пикселей, а через "парсинг" и "трансляцию" правил рисования канвы в правила рисования svg.
Умеющие такую магию библиотеки требуют, чтобы я рисовал свою канву в объекте их класса (например, var ctx = new C2S(500,500); для http://gliffy.github.io/canvas2svg/), и мне надо как-то изобразить для библиотеки, которая собственно предполагаемую к конвертации канву и рисует (к примеру тот же fabric.js или к примеру не умеющая рендерить svg, только канву https://www.chartjs.org/, или например вот этих парней https://codepen.io/wildminder/pen/wJgbLb), что она рисует на обычной канве, чтобы уже затем успешно конвертировать результат. Если что, исходник canvas2svg
https://cdn.jsdelivr.net/gh/gliffy/canvas2svg@master/canvas2svg.js
На кодепене выше можно поиграться, добавив ее.
Нахуй так жить. И мы еще смеемся над абстрактными фабриками, вон сами полиморфизм слоями наворачиваем.
Что за игра?
А какие варианты? Переписать половину кодовой базы библиотеки чтобы вытащить наружу движок рисования и надеяться, что сделал это без багов?
>>300922
> вон сами полиморфизм слоями наворачиваем
Так сам по себе полиморфизм не что-то плохое, как раз вот для подобных задач, только я не уверен, что он тут применим, классы-то "неродственные" могут быть.
Доля падает,чехарда в руководстве и технологиях.
Скоро хромиум станет окончательным монополистом
Насколько скоро? До или после того, как умрет пхп с жабой? Хочу быть готовым просто.
>Доля падает,чехарда в руководстве и технологиях.
Опять же, чем это отличается от ситуации... Да вообще за последние 10 лет
>бабки от конкурента
будут продолжаться, чтобы местная антимонопольная не набутилила за
>хромиум станет окончательным монополистом
Они тоже скоро фсе, ты разве не знаешь? Уже лет десять умные люди об этом твердят, а ты все еще не в курсе.
Я не желаю слышать претензии к моим аналогиям от того, кто на серьезных щщах спорит с таким жирным сарказмом.
Есть что сказать по делу?
let array = [1,2,3];
let secondArray = [];
array.forEach(еl => {
secondArray[еl] = 'test';
})
console.log(secondArray)
> [undefined ,"test" ,"test" ,"test"]
возвращает аррай где первый елемент пустой, как этого избежать?
Друзя, подскажите как это реализовать. Тудушка на ваниле. конкретно не понятно, как добавить чекбокс к появляющейся таске и вообще как правильно это написать по данному гайду. Заранее спасибо
Просто не забудь сделать append
Не понял архитектуру твоей тудушки, но допустим будет типа такого
function createTask(){
//тут мы создаем DOM элемент таски
let task_element = document.createElement("DIV");
let task_text = document.createElement("SPAN"); task_text.textContent = "Я таска."
let task_checkbox = document.createElement("INPUT"); task_checkbox.setAttribute("type", "checkbox");
task_checkbox.classList.add("status"); // добавляет ебаный статус как хочет автор гайда, получите, распишитесь.
task_element.append(task_checkbox); // тот самый апенд чекбокса к таске.
task_element.append(task_text);
// навешиваем листенер с реагированием на клик и функцией completeTask
task_checkbox.addEventListener("click", completeTask);
}
function completeTask(event){
// проверяем чекнут ли чекбокс или нет event.target.checked true/false
}
Но мне непонятно зачем делать срабатывание чекбокса по клику, а не по change.
Цены выросли неслабо, есть ощущение что застоялся и мало повышаю, но и наглеть не хочу.
Сколько получаете? Что делаете на работе? Как устраивались?
Сам получаю 2500, 1.5 лет опыта фулстак node\vue
Часто ли в реальной жизни saga применяется? Или в 99% случаев можно обойтись thunk'ом?
Тыкните носом пожалуйста, почему при нажатии кнопки не срабатывает функция?
Бля, от проекта ж зависит, чо ты
Достаточно просто знать, на собесе один хуй будешь отвечать, что a.getUser() вернет undefined))0)
All убери и работай нормально, как с единичным элементом.
Если много кнопочек и всем надо листенер, for of юзай.
Хз, выглядит как будто должно работать. И у меня работает.
Подскажите, насколько сложно переделывать код с redux на redux-toolkit?
Потому что ты выводишь (и возвращаешь) свойство checkProp, чтобы вернуть свойство по значению checkprop использую квадратные скобки.
>ты выводишь (и возвращаешь) свойство checkProp, чтобы вернуть свойство по значению checkprop
Так object.property и должно возвращать значение свойства, разве нет?
Когда обращаешься как a.b оно думает что существует реальный ключ b, а не подставляет реальное значение переменной, поэтому тебе нужно a["b"]
мимо
obj[checkProp]
Правильнее делать в хэде с type="module".
const WebSocket = require ("ws")
const ws = new WebSocket(URL)
ws.onopen = () => {
ws.send(JSON.stringify(Данные для подписки));
}
ws.onmessage = (message) => {
console.log(message.data, message.message)
}
ws.onclose = () => {
console.log("Disconnected..")}
ws.onerror = (error) => {
console.log(`WebSocket error: ${error}`)
}
Но как? сокет запущени по ws.send подучена подписка, как отписаться или добавить еще одеу?
Ну так гугли API сервера и посмотри, как поменять "подписку" на существующем сокете.
Я знаю, что нужно отправить. Как это сделать, в рамках уже запущенного сокета? Если есть туториалы, отправте туда, я почитаю.
>Я знаю, что нужно отправить.
Ну так отправляй.
>Как это сделать, в рамках уже запущенного сокета?
Очевидно же если сервер не поддерживает твою фантазию, то никак.
>Ну так как?
Так же, как ты отправляешь все другие сообщения на сервер через вебсокет.
>Ответы уровня двача, лол.
Какой вопрос, такой и ответ.
Понял, бэкенд изучал, не так хорошо как фронт конечно но помокакить получалось. Значит попробую, спасибо.
Отвечает Александр Друзь синтаксис языка / справочник на главе async/await / однострочник в консоли для проверки. А, нет, обознался, в 22к2 году это уже не модно, лучше кидать скрины с кодом на двач и ждать ответа часами.
Invalid response body while trying to fetch https://registry.npmjs.org/graphql-subscriptions: Socket timeout
Анон, двач это единственное сообщество где я могу задать вопрос, больше я нигде не сижу, так что да, всю свою головную боль я несу сюда. И, нет, ты не прав, я погуглил справочники но ответа на мой вопрос там не нашел.
Тогда описывай буковками нужное тебе поведение, прикладывай код который не работает, прикладывай код который работает
Начальное состояние чего?
>ответа на мой вопрос там не нашел
Пиздобол. Первая же ссылка в гугле, пятое предложение от начала статьи.
Не говоря уже о том, что сделать ctrl+c ctrl+v аргумента в нодную/браузерную консоль - дело пяти секунд.
дружище глянь плс https://telegra.ph/Pishem-Todo-List-Gajd-dlya-zelenyh-09-08 как прировнять филд велью к пустйо строке?
Приравнять это значит поставить одно равно. Одно равно обозначает переопределение переменной.
Когда ты пишешь два равно, это проверка, равны ли два операнда, в результате возвращается ложь или истина, т.е. у тебя эта часть по-другому работает.
Тебе выше указали на строчки, где у тебя ошибка, которая затирает чекбокс. Если программа работает не так как ожидается, пиши в сомнительных строчках console.log(peremennaya) чтобы отследить как меняется значение нужной тебе переменной, или освой дебаггер жса в DevTools в своём браузере.
Открыл, т.к. знал что высер будет примерно такой. Странно что целый час ждал, а не через 3 минуты появился
Хранить каталоги в SQLite, так как один хуй при билде пути будут другие, особенно если балуешься вебпаком.
const newState = oldState.concat(newItem)
На работе зарплату получил. Полностью черную
не снимая свитер
В пакаге.жсон должна быть команда чтобы всё это запустить на дев сервере или собрать. Наверное ноду нужно будет поставить https://nodejs.org/en/ /
Да, а как это к прогерству относится?
Причем форма инпута перерендывается из-за того, что я передаю в нее функцию добавления новой записи в App.js (из самого же компонента дергаю эту фунцию в качестве пропса)
Ну я тут прочитал про мемоизацию, да и обернул функцию добавлению в useCallback да и сам компонент формы в memo.
И тут вопрос: я все правильно сделал? Это не выстрел в голову? Ведь сейчас, когда я взаимодействую со списком (меняю чекбокс, удалаю элемент) рендер формы не происходит, только самого списка?
Поставить ide/плагин к редактору
От 65-70.
Про Минина только не говори ничего и не смотри его желательно. Он многое объясняет не так, как оно работает, а так, как он понял. И понял он не всегда правильно. Почему он не может открыть доку, трудно сказать.
в директории хуйни с пакаге.жсон
На какую зп? Вакансия был с опытом или без?
А че так много?
Про владилена - я на самом деле тоже плох в доке, учился с самого начала тупо на примерах, потому что непонятно куда эти куски кода вставить, как их использовать, как изменять. А когда на примере, то сразу понятно что и где. Короче другой подход, наверное. Некоторые только доку прочитав уже начинают проекты пилить, а я походу тугой.
Спасибо за ответ, кстати
>А че так много?
Я перепутал, у тебя тайпскрипт не указан, поэтому на 5-10к срезай минимальную планку.
Не работайте блядь за 40к, вы ебанулись что ли. Особенно с коммерческим опытом более месяца.
Спасибо, пойду смотреть в сторону тайпскрипта.
А насчет месяца как-то непривычно, это же всего месяц, вообще непривычно, что новички могут получать даже 40 к, при том без специального образования и все такое
офигеваю, короче
Если не знаешь, сколько попросить, просматривай вакансии, где указан доход и примерно среднее число проси.
Ну или доверься данным хабр карьеры, у них джуны во фронте 50к в среднем зарабатывают.
Алсо, ты 3 месяца отработал и продолжаешь работать, просто ищешь место потеплее? Или уже уволился и ищешь новое? Сколько получал или получаешь?
20 получаю, это вообще первая работа, до этого месяца 3 пилил мелкие проектики и учился, потому еще есть ощущение, что вообще ничего не могу. Даже 20 к на этой галере стыдно было поначалу получать.
А думаю о вакансиях, потому что в этйо компании платят 50 к "бате бекендеру"...(который кстати меня и дрочит по люббой мелочи в коде, что тоже иногда заставляет задуматься) Ну типа это несерьезно же для человека, работающего 4 года. Я о зарплате.
А насчет наездов конечно понятно, что это помогает развиваться, но когда человек может потратить полчаса времени просто чтобы подушнить в стиле - а ты доку читал, а вот этот раздел изучал, а вот тут тогда у тебя что - и там такая мелочь, о которйо можно сказать и мне даже никаких объяснений не нужно будет, чтобы исправить, тупо забыл удалить один консоль лог, который был прописан чисто для моего удобства во время разработки. И вот после таких мелочей лекция по полчаса.
Ой, чет я много написал
Бля, жизненно, только получаю еще меньше. 18 лвл, пилю интернет-магазин на реакте и ноде. Считай, фуллстеком за еду работаю. Но с ментором повезло, славный парень, за несколько месяцев столько информации в меня вбил.
> Как там у вас сейчас?
Херово. Непонятно, что дальше будет. На улице ополченцы молодых парней ловят и отправляют воевать с невидимым врагом.
> Почему не переехал?
Некуда, да и у родителей столько денег нет. Планирую копить на переезд.
Ладно, с этим разобрался. Как понять, какой jsx файл за какую страницу отвечает?
Так ты наверное и сейчас на удаленке стажируешься? Или все таки локальный айти бизнес в днр еще шевелится?
Нет, в офис хожу. Айти это громко сказано, у нас даже такого отдела нет, просто "отдел продаж". А так, программистов, ученых и прочих головастых тут не любят. Зато 100500 вакансий а-ля таскать мешки или город обустраивать. Ну или вояки.
Да, есть такое, сейчас эти эвакуировавшиеся хуй без соли доедают вдалеке от дома. Не так много людей эвакуировалось, на самом деле.
>>303759
спасибо большое исправил, но вот именно в этом коде если таск. текст контент велью оставльять то таска пишется но нет чекбокса если убрать велью то стакается чекбокс но таска не пишется. хочется понять что хочет именно этот автор гайда https://telegra.ph/Pishem-Todo-List-Gajd-dlya-zelenyh-09-08
Деанон по количеству армян в команде
Зависит от твоего места жительства. На Кубани вероятнее всего будет куча армян, в ДС тоже может повезти, а вот в Сибири.....
plyr
ДС. А так в целом не мешают. Думал начнутся смехуечки типа "гыыыы 30 лет и только джун" но наоборот только поддержали типа только долбоеб смеется над ищущими свой путь людьми.
Бамп.
Ещё попытался поднять сайт на firebase, но у меня ничего не выходит, хотя делал по инструкции. Сам сайт - https://github.com/itfeelsharsh/shop
Буду очень благодарен, если вы мне поможете. Там ниже есть инструкция, я делаю по ней, потом по инструкции firebase:
firebase login
firebase init
firebase deploy
Пишет, что deploy успешен, но при открытии ссылки ошибка, и в firebase версия проекта не появляется.
пошел нахуй, репорт
Есть код, который изначально проверяет размер экрана и вешает нужный класс. Однако это не помогает при изменении размера экрана. Т.е если изначально был открыт десктоп, то его класс будет висеть и при уменьшении размера экрана до мобильного.
Нужно, чтобы класс также менялся и при изменении экрана. Желательно, ниже определённого размера. Такое только с resize() можно решить? Есть какие-нибудь решения лучше?
>Так как события изменения размера могут срабатывать с высокой скоростью, обработчик событий не должен выполнять дорогостоящие операции, такие как модификации DOM.
Навесить класс дорогая операция?
А ты без классов сделай через адаптив
а в js уже смотри размер экрана и в зависимости от этого навешивай события. при window.width<768 например события для моб.версии а при большем для обычной
>>304775
Поведение прописано в стилях в зависимости от того, какой класс есть. Собственно, там и был адаптив. Проблема была в том, что если я меняю экран через инструменты браузера, то первоначальный класс не менялся.
Событие клика срабатывает при наличии элементов для клика и нужного класса.
https://stackoverflow.com/questions/45905160/javascript-on-window-resize-end
тут описывается как сделать что-то вроде resizeend
хотя хз нахер надо. оно ж у тебя все равно выполнится 1 раз при загрузке сайта. или ты думаешь пользователь будет сидеть окошко браузера менять? это делаешь только ты.
Так что там возвращается? Попробуй import {default as variables} from "..path".
даже старые мемесы переписываем и транспайлим
Спасиб, это всё есть. Рецепт смузи хотелось...
огромнейшее спасибо анонче что потратил время!, очень поможет, есть что обмазговать
Тоже интересно
Опыт уже решённых каких то задач и проблем
Допустим создано 3 компонента:
- в первом кнопка добавления
- во втором пустое поле
- третий - это тот компонент, который нужно добавить внутрь второго
В первом(с кнопкой) прописываю вот такую функцию, она срабатывает и третий компонент создается, но естественно появляется только один компонент
methods: {
ShowComponent() {
createApp(component3).mount('#component2')
}
}
Каким образом создать список одинаковых компонентов, чтобы при каждом нажатии добавлялся еще один
Документация, раздел рендеринг списков.
Алсо,
>createApp внутри уже работающего приложения
Поправляйся скорее.
Длина задаётся через сеттер.
function getPersistence(num) {
let i = 0;
let number = num;
while (number > 9) {
i++;
let [a, ...b] = number.toString();
for (const k of b) {
a *= k;
}
number = a;
}
return i;
}
линтер ругается что б должна быть константой, как пофиксить?
>куда ее задать?
В лексический скоуп.
>все решение по пизде идет
Ну охуеть, заместо одно строчки придётся использовать две, кокой ужос.
Uncaught ReferenceError: Cannot access '__WEBPACK_DEFAULT_EXPORT__' before initialization
С чем связано?
Пытаешься вызвать переменную до её инициализации.
Реакт один большой пример замыканий
Счетчик лайков, просмотров
конечно можно, за 30к где-то. На большее тебя никуда не возьмут без выдроченной теории
>Любая ф-ция в жс замыкание, чел.
Чего? Замыкание не функция, это более широкое понятие.
https://ru.wikipedia.org/wiki/Замыкание_(программирование)
>>305673
>Напиши-ка обработчик события без замыканий, наркоман.
Легко. Взял пример с MDN и сделал без замыкания. Мой код:
https://jsfiddle.net/zLn5vwkt/
Оригинальный код:
https://jsfiddle.net/vnkuZ/7726/
>>305706
>конечно можно, за 30к где-то. На большее тебя никуда не возьмут без выдроченной теории
Какой еще теории?
>Взял пример с MDN и сделал без замыкания.
Почему не работает без замыкания? Фактически код делает то же самое.
Не уверен что такое замыкание, но по-моему ты вообще не понимаешь что ты нахуй пишешь.
>Легко. Взял пример с MDN и сделал без замыкания. Мой код:
Так он у тебя и не работает. Самоотсос засчитан.
>в теле обработчика берет document из внешнего скопа
Не гони, Вась. Должно работать. Разберусь с этим позже. С какого внешнего? Если не возвращать функцию из функции, то ничего не меняется по факту.
Ща меня сеньоры поправят, но я понял что зымакание это про то,что функция запоминает необходимые данные на момент создания и если они изменятся вне этой функции, то функция не узнает об этом, беря документ из внешней области видимости, ты не можешь гарантировать актуальность свой функции на момент ее вызова.
Ща меня сеньоры поправят, но я понял что зымакание это про то,что функция запоминает необходимые данные на момент создания и если они изменятся вне этой функции, то функция не узнает об этом, беря документ из внешней области видимости, ты не можешь гарантировать актуальность свой функции на момент ее вызова.
Тут не в замыкании дело, не работает оно потому что обработчик событий ожидает колбэк с аргументом `Event`, а процидурки он уже выполнил. Так что делает он не то же самое.
У тебя функция makeSizer ничего не возвращает. Поэтому у тебя в переменных size12, size14 и size16 будет храниться undefined.
И потом ты эти undefined-ы присваиваешь атрибутам onclick. Это же пиздец, ну.
Замыкание - простая херня. Но с далеко идущими следствиями. Замыкание состоит из 2 важных моментов. Но во многих "умных" объяснениях делают упор только на одном моменте. Поэтому многие путаются.
2 момента:
1. функция имеет доступ к внешним переменным
2. Эти переменные "существуют" пока существует функция
1. В примере с MDN внутри функции, которая возвращается из makeSizer доступна переменная size, т.к. она является для этой функции "внешней" переменной.
2. Эта переменная остается существовать (оказывается замкнутой) пока существует функция, которая ее "видела".
И собсна все, это и есть замыкание. Функции, которые "видели" эту переменную size присваиваются атрибутам onclick и в момент вызова используют значения из этих переменных size.
Нахуя оно нужно? Тоже просто. Нужно для того, чтобы не срать в общий скоуп переменными size, но иметь к ним доступ для тех ф-ций, для которых эти переменные требуются.
window.addEventListener
Такое можно показывать в портфолио?
Сайтик в работе: http://178.62.218.79:3001
Код: https://github.com/vertically-challenged/weather
>динамики нет никакой
А какая должна быть?
>Графику сам рисовал?
Нет, отсюда взял https://icons8.ru/icon/set/погода/dusk
>А какая должна быть?
Ну чтоб что-нибудь кликалось. Можно сделать выбор города из списка при клике на поле ввода и автодополнение там же.
>Нет, отсюда взял https://icons8.ru/icon/set/погода/dusk
Такие ламповые, аж детство вспомнил.
Неплохо, но не хватает какого-то информирования, если я ввел вместо города белиберду
Где-то накосячил значит. Должно работать.
И динамическая типизация не запрещает дебажить, дебажь на здоровье.
>Где-то накосячил значит. Должно работать.
JS исполнялся до полной загрузки страницы.
>И динамическая типизация не запрещает дебажить, дебажь на здоровье.
Ну и как? Из-за выполнения JS до полной загрузки страницы, функция возвращала null. Как такое дебажить?
Выполняй его после загрузки страницы. Охуеть блять, динамический язык ему в жопу насрал.
Суть такова:
Написал приложение на react native, замутил ему простенький бэк на ноде + экспресс, и теперь мне нужно заставить их работать. Насколько я понял мне нужен VPS/VDS сервер, на который я с помощью докера или просто руками закину приложение, затем на этом сервере нужно запустить node app.js, а в приложении на native делать запросы по ipшнику сервера, так? Возникает пара вопросов:
1) Насколько это дебильный костыль? В продакшене в нормальных компаниях так и делают или я хуету какую-то неандертальскую придумал?
2) Если же даже я сделаю так, то как лучше реализовать перезапуск бэка если VPS перезагрузится или с ним еще какая хуйня произойдет?
С меня как всегда, парни.
пикрандом
>1) Насколько это дебильный костыль? В продакшене в нормальных компаниях так и делают или я хуету какую-то неандертальскую придумал?
Ты типичную клиент-серверную архитектуру дебильным костылём назвал? Ну храни тогда секретные ключи и запросы в БД на мобилке юзера, зато недебильно будет.
> 2)Если же даже я сделаю так, то как лучше реализовать перезапуск бэка если VPS перезагрузится или с ним еще какая хуйня произойдет?
Так это не проблема бэка, а инфраструктуры, которая этот бэк шатает. И однострочного ответа на этот вопрос нету, иначе бы девопс не был бы отдельной профессией.
При перезагрузке vps системд загружает докер, а докер поднимает обратно контейнеры, которые не были остановлены.
Да я не назвал ее дебильной, а лишь поинтересовался является ли она дебильной. Просто привык уже к тому что учишь что-нибудь, делаешь, а потом выясняется что это хуета и так никто не делает уже. Я так читал про http, сделал сервер, сижу довольный с мыслями типа "Ну и нихуя тут сложного!" и только после узнал что просто http уже никому нахуй не упал, давай блять сертификаты для https, хуё моё!
>>306523
То есть мне скрипт на баше написать какой нибудь или все из каробки так работает?
> То есть мне скрипт на баше написать какой нибудь или все из каробки так работает?
https://docs.docker.com/config/containers/start-containers-automatically/
>Так ты же сказал причину:
Не морочь голову. Это сейчас по этой причине, а вообще если null, то как дебажить?
>Насколько это дебильный костыль?
Уже ответили.
>как лучше реализовать перезапуск бэка
Демонизация.
https://www.8host.com/blog/podgotovka-prilozheniya-node-js-k-proizvodstvu-v-ubuntu-20-04/
Дебажат всегда одинаково. При любой типизации. Почитай про команду debugger и дебажь как батя.
Речь не про то, должно работать, или нет, а про то, что ты воспользовался замыканием, сам того не подозревая, перед этим сказав, что легко этого избежишь.
>Почитай про команду debugger и дебажь как батя.
Спасибо, испробую.
>>306596
>Действительно, в каких случаях Document.getElementById() может возвращать null?
Так в каких же?
>>306601
>Речь не про то, должно работать, или нет, а про то, что ты воспользовался замыканием, сам того не подозревая, перед этим сказав, что легко этого избежишь.
Не могу понять зачем там замыкание. Мне кажется можно обойтись без него, но пока не понял как.
Я могу как-то в переменную получить ссылку на "нестандартный" canvas (например, объект канвы/контекста, создаваемый либами типа svgtoolkit, fabric.js или canvas2svg от gliffy), чтобы потом передать созданную переменную с канвой другой либе, и вот эта вторая либа все рисовала в ней, думая что это обычная канва? Такой типа полиморфизм.
НЕ СЕТКУ ПИКСЕЛЕЙ, НЕ КОПИЮ СОДЕРЖИМОГО КАНВЫ и т. д.
Задача: конвертнуть векторизуемые элементы canvas (всякие круги, квадраты, градиенты) в svg не через массив пикселей, а через "парсинг" и "трансляцию" правил рисования канвы в правила рисования svg.
Умеющие такую магию библиотеки требуют, чтобы я рисовал свою канву по правилам канвы, но не в любой канве, а строго в объекте их класса (например, var ctx = new C2S(500,500); для http://gliffy.github.io/canvas2svg/), и мне надо как-то изобразить для этой библиотеки, которая собственно предполагаемую к конвертации канву и рисует (к примеру тот же fabric.js или к примеру не умеющая рендерить svg, только канву https://www.chartjs.org/, или например вот этих парней https://codepen.io/wildminder/pen/wJgbLb), что она рисует на обычной канве, чтобы уже затем успешно конвертировать результат. Если что, исходник canvas2svg
https://cdn.jsdelivr.net/gh/gliffy/canvas2svg@master/canvas2svg.js
На кодепене выше можно поиграться, добавив ее.
>конвертнуть векторизуемые элементы canvas (всякие круги, квадраты, градиенты) в svg не через массив пикселей, а через "парсинг" и "трансляцию" правил рисования канвы в правила рисования svg.
Бери и конверти, зачем тебе для библиотеки изображать что она рисует на обычной канве? Ну сделай вторую канву, на первой библиотечной ты рисуешь круги и она их конвертит в свг, но одноврменно рисуешь и на второй своей канве для своих нужд. Но зачем?
>Не могу понять зачем там замыкание
Чел, ты шиз какой-то, без обид. Тебе указали на медицинский факт - ты хотел избежать замыкания и жидко это не получлось. И ты в ответ нас спрашиваешь "зачем оно там"?
Ну как бы, чтобы работало, не? Это просто показывает очередной раз, что бОльшая часть функций в жиэсе есть замыкания, даже когда вкатыши-диссиденты теории утверждают обратное.
>можно обойтись без него
Без замыкания у тебя получится функция уровня (a,b) => a+b. Ебаться с аргументом обработчика, чтобы получить из него то, что и так доступно из внешнего скопа, никому не уперлось и никто так не пишет.
Как кстати такая хуйня назвается? Похоже на каррирование, но там же типа когда несколько аргументов, а остается меньше. А тут один аргумент и всё убирается полностью.
> Не могу понять зачем там замыкание. Мне кажется можно обойтись без него, но пока не понял как.
Тебе же написали для чего. Прочитай по слогам:
> Нахуя оно нужно? Тоже просто. Нужно для того, чтобы не срать в общий скоуп переменными size, но иметь к ним доступ для тех ф-ций, для которых эти переменные требуются.
>бОльшая часть функций в жиэсе есть замыкания
Правильно говорить функция с замыканием.
>>306687
Не совсем понял о чем ты.
>>306702
Так наоборот же получается. Чтобы не цеплять глобальный скоуп, нужно чтобы все переменные в функции были связанными. Но ведь в замыкании всё наоборот, в нем все переменные не связанные.
>>306681
>>306702
Вы оба сами замыкание не понимаете. Научились только копировать код с замыканиями, а что, зачем, почему и как, вы не понимаете и не знаете.
http://dmitrysoshnikov.com/ecmascript/javascript-the-core-2nd-edition/#closure
объёмная и сложная, но очень годная выжимка.
Прям ща даже ещё раз перечитаю всю.
алсо
https://www.kinopoisk.ru/film/1162915/
>Старшеклассница мечтает избавить мать от пьющего отчима-абьюзера. Якутская драма о зарождении ненависти
на вечер субботы
> Но ведь в замыкании всё наоборот
Нет, не наоборот. Любая переменная находится в определенном лексическом окружении. Либо глобальном, либо локальном. Замыкания находятся в локальных лексических окружениях, недоступных в глобальном скоупе никак иначе, кроме как через ф-цию, на которую они были «замкнуты».
В этом смысл. В глобальном окружении «суслика не видно, но он есть»
>Вы оба сами замыкание не понимаете
Но написать обработчик без замыкания почему-то не можешь именно ты, иронично.
Ты не понял. Функция с замыканием, это та функция, у которой нет связанных переменных. Все переменные в ее теле не связанные. По простому, это значит, что в эту функцию не передаются аргументы, все переменные берутся из вышестоящего окружения.
Не правильно когда функция зависит от внешних для себя переменных. Использовать несвязанные переменные нужно осторожно. В функция должна зависеть только от входных данных. Короче, такой способ программирования приводит к бардаку.
>>306713
Я пока и не пытался.
>объёмная и сложная, но очень годная выжимка
Есть целая книга на эту тему {Вы пока еще не знаете JS} Область видимости и замыкания
На либген есть.
> Функция с замыканием, это та функция, у которой нет связанных переменных
Нет. Функция с замыканием это функция с доступом к внешнему скоупу (поэтому все ф-ции в js это ф-ции с замыканием). Есть ли у нее связанные переменные или нет - вообще не важно.
>Не правильно когда функция зависит от внешних для себя переменных. Использовать несвязанные переменные нужно осторожно. В функция должна зависеть только от входных данных. Короче, такой способ программирования приводит к бардаку.
Ну так напиши обработчик события без замыканий, посмотрим какой там небардак будет.
Вообще тебе стоит определиться со своей позицией.
Ты либо не знаешь, что такое замыкание и зачем оно нужно и тогда тебе пояснят. Либо ты знаешь что такое замыкание и заявляешь, что «оно нинужно». Тогда тебя просто пошлют нах, чего с психом дискутировать.
Ты не знаешь что такое замыкание.
Замыкание (англ. closure) в программировании — функция первого класса, в теле которой присутствуют ссылки на переменные, объявленные вне тела этой функции в окружающем коде и не являющиеся её параметрами.
>>306729
Обязательно напишу, хотя бы попробую.
>>306733
Я знаю что такое замыкание. Но у меня нет опыта работы с DOM. Я не вижу его необходимости в работе с DOM.
Ты тоже не знаешь что такое замыкание как и он >>306727
>Функция с замыканием это функция с доступом к внешнему скоупу
Любая функция имеет доступ к вышестоящему окружению. Будь то функция, в которой она объявлена, или же глобальное окружение модуля. Ты не понимаешь замыкание, да и многие вещи вообще.
>поэтому все ф-ции в js это ф-ции с замыканием
Не правильно. Функция с замыканием это функция ссылающаяся на свободные для себя переменные. То есть те, которые ей не были переданы как аргументы.
Во всех языках программирования функции имеют доступ к вышестоящему окружению. Но это не делает их функциями с замыканием.
> Я знаю что такое замыкание. Но у меня нет опыта работы с DOM. Я не вижу его необходимости в работе с DOM.
Ему показали где используется - а он все равно не видит. Охуеть история :D
Ну допустим. Где же тогда, по твоему, нужны замыкания? В дом, как мы поняли, ты считаешь, что не нужны. А где нужны?
> Функция с замыканием это функция ссылающаяся на свободные для себя переменные
Ты говоришь слова, значение которых не знаешь. Что по твоему значит, что функция «ссылается» на переменную?
>Что по твоему значит, что функция «ссылается» на переменную?
Там же в одном предложении все четко объяснено.
Ссылается это значит использует в своем теле. При этом переменная не является параметром. Он взята из внешнего по отношению к этой функции окружения. Это не обязательно глобальное окружение.
Если ты все это понимаешь, то вообще не ясно, как ты не видишь смысл замыкания в мдн примере. И пишешь свою нерабочую версию без функции высшего порядка, возвращая из нее undefined. Ты хоть где-то ранее использовал замыкания?
Но ведь функция высшего порядка - архетипичный пример использования замыканий, даже похлеще дёрганья глобала.
>без функции высшего порядка
В коде с MDN нет функции высшего порядка. Ты короче плаваешь во всех темах.
Убей себя, дебил.
function makeSizer(size) {
return function() {
document.body.style.fontSize = size + 'px';
};
}
Этого хватит что бы меня хотя бы поговорить пригласили? Своих идей нет, могу только чужие исполнять.
Нет ты.
Функция высшего порядка - это функция, которая принимает или возвращает другую функцию. Это и происходит в примере мдн. Если ты этого не видишь, то даже не знаю чем тебе помочь.
Для устройства в гугл - нет, не хватит. Для устройства на работу в какие-нибудь нижние перды - может легко хватить. Тут уже от нижних перд зависит, какие тебе попадутся.
>Если я возьму рандомные макеты разной сложности, с какого нибудь сайта фриланса например, и исполню их это сойдёт за ПЕТ ПРОЕТЫ?
Да.
>Этого хватит что бы меня хотя бы поговорить пригласили?
Да.
>Своих идей нет, могу только чужие исполнять.
Да. Идеи не нужны. Научись копировать.
>рандомные макеты разной сложности, с какого нибудь сайта фриланса например
В телеге каналов полно, сиди выбирай, намного лучше же верстать то, что понравилось и тема которого интересна.
Верстать сайты с вагинальными тренажерами успеешь в бою
>Затупил, да это ФВП. Все равно не вижу зачем нужно возвращать функцию, если можно выполнить все то же самое в самой функции.
В какой функции, наркоман?
> Все равно не вижу зачем нужно возвращать функцию
Для чего, по твоему, нужны ФВП? Вот для этого она и используется в примере мдн
Да,я. Я даже не знал что в телеге есть поиск.
>Дураком не прикидывайся
Прикидываешься тут дебилом ты, так как пиздишь про обработчик без замыканий, но так и не смог его высрать.
Ты делаешь вид, что понимаешь что-то, а сам только копипастить можешь. Если ты понимаешь зачем там возвращать функцию, то объясни зачем. Можешь? Сомневаюсь.
> Я написал, что работать за две еды желаю, а не в Гугл
Все будет зависеть от твоих зарплатных ожиданий. За 30к устроишься почти наверняка. Если фартовый и/или харизматичный, то есть шанс и на 60к залететь. Больше - уже вряд ли. Если только совсем повезет.
> >Для чего, по твоему, нужны ФВП?
>Для того чтобы оперировать не только примитивными данными, но и целыми функциями.
Нет, не для этого. Они нужны (среди прочего) для того, чтобы реализовать отложенный вызов. В примере с мдн это и происходит. ФВП возвращает функции, которые будут отложенно вызваны в момент обработки события с параметрами, замкнутыми в них.
Это тебе расскажут уже на месте, я не нанимаю)
Как повезет. Может будут просить просто говнокодить на жкверях, может еще будут просить шкафы из кабинета в кабинет переставлять. Как добазаришься короч.
За 30к имхо многого просить от работника грешно. Не вредит - уже хорошо лол
>Они нужны (среди прочего) для того, чтобы реализовать отложенный вызов.
Это частный случай оперирования целой функцией вместо примитивных данных.
>ФВП возвращает функции, которые будут отложенно вызваны в момент обработки события с параметрами, замкнутыми в них.
Здесь ключевое не замкнутые переменные, а отложенный вызов. Как ты узнал, что будет отложенный вызов? Где об этом написано, что в таких случаях это происходит?
>Если ты понимаешь зачем там возвращать функцию, то объясни зачем.
Я уже обьяснил, так твой твой обосрамс засчитан.
Дебил, прочитай уже сигнатуру Event.addEventListener() и хватит тут срать в тред своей тупизной.
Да, твой жиденький обосрамс ожидаем.
> Как ты узнал, что будет отложенный вызов?
Какой-то странный вопрос. Есть событие, которое ты хочешь обработать. Если оно произойдет - будет и вызов. Если не произойдет - не будет. Все просто.
> Но там нет колбека
Он там есть. Неявно в атрибуте onclick и явно в методе addEventListener. Любая обработка события использует именно колбеки.
Я правильно понимаю что тайпскрипт сам так не умеет и нужно писать функцию с is, которая вручную будет проверять че там и как, а потом возвращать булеан, типа проверило?
Получается, мне для каждого компонента надо писать componentDidMount и в нем заново писать запрос? Или это бред?
То есть это конечно работает, но чет оче громоздко выглядит. Или это типа так чтобы компилятор мог легко откинуть всё тайпскриптовое и не добавлять проверку сам?
>Объясните популярно как проверить имплементирует ли некий объект интерфейс?
Писать джейсон-схему для объекта и по ней валидировать объект.
>>306993
Бля я в шоке от этого вопроса. Нет конечно же, загружай вообще всё при открытии любой страницы.
>>306995
Имплементация интерфейса не про валидацию в рантайме. Конкретно "имплементация интерфейса" существует только в контексте классов и тайпскрипт тебя будет по рукам бить если твой условный class Zalupa implements IZalupa {} неправильно реализует конструктор для интерфейса.
А за пределами классов это более гибкая замена жсдоковским тайпдефам.
> джейсон-схему
Чо это? Типа
{
zalupa: function (value){return isZalupa(value),
huinya: function (value){return isHuinya(value)
}
?
Ну и вопросы у тебя. Функция должна возвращать то, для чего ее написали и для чего собираются использовать. Если ее используют для генерации колбэков - очевидно, она должна возвращать функции. В примере мдн она должна возвращать функции, что она и делает.
Почему она должна возвращать именно функцию? Ты гонишь не по теме.
<button type="button" onclick="document.getElementById('id1').style.color = 'red'">
Нажми меня!
</button>
Вот рабочий код. Есть событие, оно меняет стили. Не нужно никаких колбеков, никаких возвратов функций. Даже объявлять или вызывать отдельную функцию не нужно. Так теперь объясни почему нужно возвращать функцию, фанатик?
Не, не фанатик. Просто знаю матчасть.
Ты не знаешь как работает инлайн атрибут событий в теге. Когда ты присваиваешь инлайн-атрибуту выражение, оно под капотом оборачивается в функцию, которая будет вызвана при обработке данного события. Если же назначать обработчик не в инлайне тега, а в свойстве объекта - там ничего дополнительно не происходит и сразу присваивается ф-ция.
Подробнее можешь почитать, например, у Кантора.
Почему так не работает событие? При загрузке страницы функция срабатывает автоматически, а при событии не срабатывает. Ее можно выполнять из консоли, все будет работать, но не в событии.
function test(size) {
document.body.style.fontSize = size + 'px';
}
document.getElementById('test').onclick = test(20);
Если же изменить функцию, чтобы она возвращала другую функцию, то событие работает.
function test(size) {
return function () {
document.body.style.fontSize = size + 'px';
}
}
Потому что ты плохо учил программирование и невнимательно читаешь ответы, которые тебе пишут.
Еще раз - в поле onclick должна храниться функция. Эта функция будет автоматически вызвана при возникновении события. Если вместо функции в onclick записать ее вызов, то в onclick, что очевидно, будет сохранено значение, которая эта функция возвращает. Поэтому в первом случае у тебя ничего не работает, а во втором работает.
Вообще же, это весьма детские вопросы. Все они пропадут, как только почитаешь какой-нибудь учебник.
Прошел 2 темы пока что в freecodecamp в Responsive Web Design
Поделился с другом, который сам вкатывается, но уже больше 7 месяцев, говорит, что вертска на фрикодкэмпа устарела и смысла сейчас там ее проходить нет. Так ли это и стоит ли забить на фрикодкэмп и осваивать другие источники?
>в поле onclick
В свойстве
>Еще раз - в поле onclick должна храниться функция.
В обоих случаях у меня функция.
>>307234
>Если вместо функции в onclick записать ее вызов, то в onclick, что очевидно, будет сохранено значение, которая эта функция возвращает.
У меня в обоих случаях вызов присвоен onclick. Просто не дописал такую же строку document.getElementById('test').onclick = test(20); для второй функции.
Разница в этих двух функциях в том, что первая просто присваивает css атрибуту значение, а вторая возвращает функцию, которая присваивает css атрибуту значение. Непонятно почему первая не работает на событии, а при принудительном вызове работает.
>говорит, что вертска на фрикодкэмпа устарела
Не слушай умника. Таких пол России. Диванные эксперты.
>У меня в обоих случаях вызов присвоен onclick. Просто не дописал такую же строку document.getElementById('test').onclick = test(20); для второй функции.
Ты просто дебил блять, пиздуй уже на завод.
> В обоих случаях у меня функция
Нет. Учи матчасть, чем отличается функция от ее вызова. Это снимет твой вопрос.
там бета версия этой темы есть, вот там не устаревшая, можешь ее попробовать, если ты обычную проходил
Не тупи. Вот 2 функции
function test1(size) {
return document.body.style.fontSize = size + 'px';
}
function test2(size) {
return function() {
return document.body.style.fontSize = size + 'px';
}
}
Вот 2 вызова на событии
document.getElementById('test').onclick = test1(20);
document.getElementById('test').onclick = test2(20);
Почему первая не работает на событии? Он выполняется при загрузке страницы или если вызвать вручную в консоли.
> Не тупи
> Почему первая не работает
Потому что ты не знаешь самых базовых вещей. Не знаешь настолько, что даже не понимаешь ответы на свои вопросы. Читни кантора, рили, сразу попустит
>Не тупи. Вот 2 функции
Тупишь тут ты, уебан.
Что возвращает первая функция?
>Вот 2 вызова на событии
Это не вызовы.
Чел, посмотри что возвращает твои функции и какой из результатов больше похож на что-то, что должно стоять в onClick. Напиши вот это в консоли и помедитируй над результатами.
Я не знаю что должно быть в onclick. Первая функция не возвращает, но она переписывает css. Вторая возвращает функцию, которая переписывает css.
>Первая функция не возвращает
То есть возвращает, но я пробовал без возврата просто переписывать css. На событии не срабатывает, а срабатывает при загрузке страницы.
>Я не знаю что должно быть в onclick
https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/onclick
>Первая функция не возвращает, но она переписывает css.
Она не переписывает css, она присваивает значение ключу style элемента body.
>она присваивает значение ключу style элемента body
??? Изменяется font-size тега body.
>Она не переписывает css
Почему это? Значение меняется, шрифт увеличивается. Только это происходит не по событию клик, а в момент загрузки страницы.
>>307357
>Функция, которая будет вызвана если случится событие.
Значит у меня все правильно. Почему тогда не работает?
document.getElementById('test').onclick = test(20);
>??? Изменяется font-size тега body.
Показывай тогда как там у тебя в "стилях" что поменялось.
>Почему это? Значение меняется, шрифт увеличивается. Только это происходит не по событию клик, а в момент загрузки страницы.
Да что ты говоришь?
>Значит у меня все правильно. Почему тогда не работает?
Что возвращает твоя функция, уебан?
Ну на смотри https://jsfiddle.net/seym8pzt/
Если кликнуть run, то сработает моя функция test. Если потом нажать 12, 14 или 16, то сработает событие с функцией makeSizer. Функция тест рабочая, но не работает на событии, а только при загрузке страницы. Все здесь орали, что она не может работать. Вот смотрите, она работает, шрифт становится 30px если нажать run. Она не возращает функцию, а возвращает напрямую изменение атрибута css.
Good for you
Смотри, вас тут двое - ты и жс. И кто-то из вас тупой пидор. Если ты говоришь, что у тебя все правильно, значит можешь расслабиться - тупой пидор тут жс, а ты мамин пирожочек
Изи
Дуру не гони. В onclick должен присваиваться вызов функции? Да, и у меня в этом все правильно document.getElementById('test').onclick = test(30);
test(30) это вызов функции и эта функция корректно работает без события. Так что научись выражать свои мысли. Если ты хотел что-то другое сказать, то говори на нормальном языке.
Че ты меня уговариваешь, я на твоей стороне. Ебучий жс говно в жопу заливает, очевидно же. Держись брат
Алё, Вася. Я не знаю почему после присваивания document.getElementById('test').onclick = test(30) в document.getElementById('test').onclick оказывается null. Это не ко мне вопрос. Если в консоли ввести document.getElementById('test').onclick = test(30), то увидишь, что возращает "30px" и при этом произойдет увеличение шрифта на странице до этих самых 30px.
>>307500
>В onclick присваивается функция
Ещё один. А это по твоему что? document.getElementById('test').onclick = test(30)
Это присваивание результата функции. Вы короче сами не шарите вообще.
>>307504
Ok. Прорвёмся!
UPD. Есть подозрения, что в onclick нужно присваивать не просто вызов функции, а ссылку. Но этого местные фанатики конечно же не знают.
Соглы, выглядит уныло. Конечно бывают совсем отшибленные пОциенты, но с ними обычно интересней
> Но этого местные фанатики конечно же не знают
Куда уж им. Слава богу ты с нами и в случае чего сможешь всем пояснить!
Ой, что это
Какое хм? Там всё прекрасно написано
Кстати, на этом примере полностью показано, как нас зомбируют по теме js. До этих ваших v8 все программировали на самом правильном движке js - IE5.5. А нам говорят, что мы научились программировать только с приходом node и нынешних браузеров. Только у IE5.5 был js, а все остальные программировали на FORTRAN.
Я поэтому и говорю, что с присваиванием вызова функций нас опять обманули. Потому что если вы, как программист, то вы должны знать присваивание вызовов функций древнего js:
void function{} with typeof === document new this return
Так присваивали наши предки! А когда нам придумал гугл с эплом js липовый, с этого началась подмена программирования. Фальшивый js. На нем программировать - только обманывать и ограблять DOM.
Ну тут-то начиналось все за здравие, а потом, не вынеся бремени задачи "напиши обработчик без замыкания", он решил скатить все в клоунаду. Но позора ему все равно не избежать, анонимус все помнит, у меня все скриншоты треда нотариально заверены.
Ты че, пес, я в самом расцвете сил, не нравится про программирование - могу про историю рассказать. А вот ты знаешь, например, что Украину Ленин изобрел?
Может еще чего придумает, подождем посмотрим
То, что ты не узнал оператор битовой деструктуризации события, говорит исключительно о том, что тебя зомбировали, а ты и не заметил.
Ну ничего, мне больше void-ушек достанется.
Вот да, налицо неразрешимые противоречия js. Для построения комми-js предлагаю пока временную меру в виде
#define false true
, тогда принципы всеобщего равенства будут достигнуты в масштабах отдельного движка. И назовем это социал-джаваскрипт.
Я то знаю, но ты определись, нужно присвоить функцию или вызов.
https://vertically-challenged.github.io
>Ну тут-то начиналось все за здравие, а потом, не вынеся бремени задачи "напиши обработчик без замыкания", он решил скатить все в клоунаду.
Я сделал. В этом примере без замыкания https://jsfiddle.net/mxa7d4uo/1/
Сам, что в голову приходило, то и писал
Сам я уверен, что совсем не готов, но вдруг кто-то скажет, что уже и с этим можно, тогда бы я попробовал
>Пчел не может в сигнатуру ивент листенеров
Я смог. Потому что можно функциональное выражение. Это легально. Вот и доказательство, что можно без замыкания. Шах и мат!
Если ты уверен, что не готов, значит у тебя есть четкое представление, что делать, чтобы стать готовым. Следовательно, делаешь все, чтобы стать готовым.
Но скорее всего это просто самоедство, которое в случае успешного устройства на работу перейдет в стадию вечного синдрома самозванца. Короче таблетки прими
А если десять колбэков нужно будет навешать, будешь десять функций писать? И кстати я не вижу document в параметрах твоей функции.
>Это не замыкание. Просто анонимная функция.
>function makeSizer(size) {
> return function () {
> document.body.style.fontSize = size + 'px';
> }
>}
Сайз не захвачена, понял
>четкое представление, что делать, чтобы стать готовым
А что делать, если вообще не понятно какой уровень требуется, чтоб считать себя готовым? Что если пройтись по собеседованиям и там спросить какой уровень требуется для того, чтоб взяли работать? Ибо тексты вакансий нихуя не дают инфы из-за того, что в абсолютном большинстве случаев просто навалено дохуя технологий , и если пытаться освоить все, то ты должен в домашних условиях стать фуллстэк сеньором.
В предыдущих сериях уже определили, что поциент не понимает, что такое замыкания и даже глядя на него в упор не сможет его увидеть
> Что если пройтись по собеседованиям и там спросить какой уровень требуется для того, чтоб взяли работать?
Именно это грамотно будет, когда тебе при отказе дадут фидбек, чего не хватает в знаниях, подтянешься. Просто еще же и компании разное хотят, где-то пролезешь, где-то нет.
>void function{} with typeof === document new this return
Между прочим, довольно складная считалка, для распределения тасок между фронтанами самое то.
Это конечно можно, но мне же потом на гитхаб пагес это заливать, там то он один хуй будет виден.
Положишь ключик на страницу СИКРЕТИКИ на гитхабе.
Естественно его будет видно в нетворке, но хотя бы вид то надо сделать что ты знаешь что делаешь
???
Так я-то откуда знаю, какая команда подается первой канве? Мне нужно сконвертить нарисованную либой канву в свг в случаях, когда сама либа этого не умеет делать. Есть другие способы конвертации произвольной канвы в векторный (!) свг? Не конвертация массива пикселей, а в настоящий как угодно скалируемый свг?
>Так я-то откуда знаю, какая команда подается первой канве?
Та которой ты рисуешь, у тебя ведь либа не с готовым рисунком, ты сначала даешь ей этот рисунок а потом уже она его конвертирует.
>в случаях, когда сама либа этого не умеет делать.
Если не умеет, значит возвращает ошибку, детектишь ифом и передаешь рисунок в другую либу, если не получится, в третью и тд, рисунок хранится отдельно от всех либ.
Все твои либы принимают canvas/context. Просто передаешь в них свой специальный канвас, проблемс?
Тебе никто и никогда не сможет объяснить что такое замыкания в ЖС, это уже стало чем-то типа мема. Можешь в каждом треде об этом спрашивать хоть до тепловой смерти вселенной
Это копия, сохраненная 5 августа 2022 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.