Это копия, сохраненная 28 мая 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Больше пары строк кода в посте или на скриншоте ведут в ад.
Для программирования на HTML https://codesandbox.io
Для Node.js с консолькой https://repl.it/languages/nodejs
Если рассчитываешь получить дельный ответ, сформулируй правильно вопрос: «что я хочу получить, что я для этого делаю, что я вместо этого получаю». Если когда самостоятельно найдёшь решение — поделись в треде, мы за тебя переживаем.
Документация - https://developer.mozilla.org
Руководство для вката - https://github.com/acilsd/wrk-fet#javascript
Старая паста - https://pastebin.com/9yRADC0s
useContext
Суть:
Есть массив промисов (если надо, можно вместо него использовать сет промисов, чуть переписав окружающий код), с которым работают асинхронные функции. Они могут в рандомное (с нашей точки зрения) время добавлять туда промисы и удалять их оттуда. Задача: сделать функцию, которая принимает этот массив и возвращает один общий промис на выполнение всех промисов в массиве (включая добавленные позже и исключая удалённые из массива).
Promise.all не работает, он не обращает внимания на те промисы, которые добавлены позже его вызова.
Добавление я, вроде бы, смог реализовать (т. е., если используется только .push, то можно внутри асинхронной функции спокойно перебирать массив (с awaitами на каждой итерации), и если в конец массива будут добавлены новые промисы, то цикл обязательно до них дойдёт).
А вот с удалением серьёзные проблемы. Если, например, цикл дошёл до какого-то промиса и ждёт его, а в это время какая-то другая асинхронная функция удалила этот промис из массива, то как об этом узнать и прервать бессмысленное ожидание промиса, который уже удалён из массива?
>вкатываюсь
не лезь, дебил она тебя сожрёт
>Суть:
>пук
>если надо, можно вместо него использовать сет
чё несёт вообще
>возвращает один общий промис
ты хочешь странного
>Promise.all не работает
твоя мамка не работает
Тебе нужен async queue. Всё, больше не приходи сюда.
Здарова, вебаны. Такое дело. На https://duckduckgo.com при нажатии на капс форма поиска теряет фокус. Я пытаюсь это предотвратить. Очевидная идея — написать юзерскрипт, который будет перехватить нажатие клавиши и вернуть фокус на место. Но нет.
document.querySelector("#search_form_input").onkeydown=((e) => {console.log(e.which); return;})
$(document).keydown((e) => {console.log(e.which); return;})
И то, и то просто не печатает кейкод для капса. Потому что, как выяснилось, по какой-то причине в ЖСе для этих кнопок ивент нажатия просто не создаётся.
document.querySelector("#search_form_input").setAttribute("autofocus", "")
Тоже ничего не меняет.
У гугла, кстати, форма фокус не теряет.
Браузер Firefox 87.
> На https://duckduckgo.com при нажатии на капс форма поиска теряет фокус
Сука в гiлос просто.
Или куки почисть, а можт ты прост еблан и жмешь на таб вместо капса?
У меня фокся 87 все работает
Как сделать чтобы функция мониторила статус isUpdated и автоматически что-то фетчила с сервера? В useEffect прописать state.isUpdated? Но тогда это получится бесконечный цикл фетчей.
Subscribe
веб сокет
чтобы каждый элемент был в отдельной строке.
Обойти массив и заинсертить каждый его элемент в постгру.
где плохо?
Нужно:
Принимать в инпут только целые положительные числа и убирать все нули, если они стоят перед любыми другими цифрами, типа 002 -> 2
И вот что за пиздец на строке 7, я могу заменить эти нули на что угодно, но только не на пустой символ. Если заменяю их на числа от 1-9 все круто, 001 становится например 991. Но если хочу заменить на пустой символ и потом вернуть в setProductCount число, а не строку, преобразовывая через + оператор. То хуй там, нули игнорятся и остаются на том же самом месте. Они не меняются на пустой символ. Что за хуита? Почему нельзя заменить нули на пустой символ? Они ведь все равно еще до преобразования в число преобразовываться должны же?
Потому что они по сути не всегда анонимные? Ты можешь присвоить стрелочную функцию какой-нибудь переменной и тогда это уже не будет лямбда
Причем если подставить туда вообще какой-нибудь символ W, то закономерно преобразуется в NaN. А пустой символ ничего не делает совершенно
Вот теперь объясни, в каком месте я сру себе в штаны? Почему реплейс не хочет заменять нули на пустой символ, но заменяет на что угодно другое?
Может я потерял нить твоих рассуждений, но нахуя тебе в принципе что-то реплейсить на пустой символ?
>Нужно:
Принимать в инпут только целые положительные числа и убирать все нули, если они стоят перед любыми другими цифрами, типа 002 -> 2
По регулярке проверяешь, совпадает ли введенный формат. И проверяешь начинается ли значение с 0, если да, то делаешь +value.toString() (если нужно дальше работать со значением как со строкой). Или тебе нужно еще проверять кейсы типо 102 -> 12?
>>1994071
Я не понимаю почему, но дальше всё передается так, как если бы нуля не было, как в твоем примере, даже без моей проверки. Но в самом инпуте остается 002, а дальше в корзину попадает просто обычная цифры 2, даже если её в консоль как строку вывожу. Я не могу понять почему нули не пропадают из инпута. Причем пустой символ явно заменяется на 0, и возможно каким-то хером пустой символ заменяется на 0 многократно? Потому что сама замена-то работает, что за пиздец?
Необязательно отменять сам промис. Важно, чтоб функция перестала его ждать.
Сейчас подумал конкретно над этим — можно внутри функции оборачивать каждый промис в Promise.race(этотПромис, промисНаОтмену), и тогда при срабатывании отмены (правда тут вопрос, каким образом заставить её сработать в нужный момент), функция перестанет ждать изначальный промис.
>>1993785
> не лезь, дебил она тебя сожрёт
А на чём ещё сайты делать?
> >если надо, можно вместо него использовать сет
> чё несёт вообще
Просто подумал, что необязательно именно массив. В сете каждый промис будет встречаться один раз, что как раз подходит, ведь нет смысла несколько раз ждать один и тот же промис.
> >возвращает один общий промис
> ты хочешь странного
Что тут странного? Ведь для чего-то же Promise.all() существует, вот мне нужно что-то похожее, но получше. С нужной задачей Promise.all() не справляется.
> Тебе нужен async queue
>>1993776
Спасибо, попробую.
>>1994077
Дело в том, что setProductCount принимает только число, ну и в целом там дальше проверок никаких делать не нужно из-за этого. Поэтому я любые введенные значения преобразую в число. Но вот дело в том, что мне просто из начала только для пользователя нужно убирать нули. И преобразования вида +value эти нули из инпута не убирают. Хоть и для дальнейших вычислений все нули пропадают если они стоят вначале.
Дальше в качестве функции я передаю коллбек вида setProductCount={(count) => (handleItemInputCounter(item, count))}. Чтобы потом это поле введенное обрабатывать. Но блядь, почему заменя корректно работает с каким угодно символом, кроме пустого значения? Такое ощущение, что пустое значение заменяется многократно на ноль. Как если в консоли ввести + и пустые кавычки
>Что тут странного?
Твой общий промис резолвится, потом ты добавляешь новый промис в исходный массив. Ожидаемое поведение?
Покажи че setProductCount делает. И компонент где используется значение productCount
> >Что тут странного?
> Твой общий промис резолвится, потом ты добавляешь новый промис в исходный массив. Ожидаемое поведение?
Отсутствие действия. Если в массиве в какой-то момент не остаётся pending промисов (все или завершились, или удалились из массива), то текущая задача выполнена, общий промис завершился, дальше моя функция ничего делать не должна (а если вдруг надо, то её нужно заново вызвать).
>>1994107
>>1994065
В первый раз пилю свой сендбокс. Вроде бы все правильно сделал
https://codesandbox.io/s/angry-kare-slsf6?file=/basketInput.tsx
Суть в том, что в компоненте basketInput.tsx обрабатывается значение. А в компоненте App значение принимается с помощью коллбека. Может это какой-то лютоебанутый способ, я не знаю, но дело в том, что в реальном проекте туда передается еще и объект товара, так что обновление стейта там происходит чуть сложнее, и поэтому я значение из инпута принимаю таким образом. Но факт в том, что нули НЕ УБИРАЮТСЯ даже в этом упрощенном примере.
И теперь главное:
1.
В этом тестовом примере первый нолик я заменил на цифру 5. Просто удалите начальную еденичку в инпуте клавиатурой (не стрелочками) и когда появится нолик, начните вводите любое число и первый нолик заменится на 5. Если вы в коде, в строке 14 компонента basketInput.tsx поменяете 5 на пустое значение, то все нули будут оставаться на месте.
2.
Если убрать оператор + из 14 строки, и получается, передавать в setProductCount строку, НУЛИ УБИРАЮТСЯ!. Но тогда будет ошибка типизации, так как функция просит только числа. И я не хочу отправлять никуда строку, чтобы потом обрабатывать тип значения, я хочу чтобы компонент возвращал только числа.
Готов принимать хуи ведрами, только объясните в чем тут ошибка.
Ой пизда, разметку проебал. Я не специально жирно написал, не стукайте
value={String(productCount)}
У тебя был productCount=4 который ты передал в value инпуту, потом ты ввел "0" первым символом, value у инпута стало "04", а productCount ты посчитал как 4, это 4 передается обратно в value, и поскольку value не поменялось с прошлого раза, то dom можно не теребить, чего реакт и не сделал. Reconciliation!
Когда ты "0" заменяешь на "5" то у тебя получается новые value отличное от предыдущего, потом dom нужно обновить.
Когда ты уже поймешь что When leading zeros occupy the most significant digits of an integer, they could be left blank or omitted for the same numeric value.[3]
[3] - Zegarelli, Mark (2014), Basic Math and Pre-Algebra Workbook For Dummies (2nd ed.), John Wiley & Sons, p. 8, ISBN 9781118828304.
Спасибо большое, вот такого ответа мне вообще никто не давал, я думал у меня уже крыша едет и я чего-то очевидного не вижу. Наверное очевидное, да, но все же. Спасибо тебе большое
>вот такого ответа мне вообще никто не давал
А это потому что ты без кода пришел. Ну теперь то ты знаешь
Никогда, все тестовые спокойно делаются на хуках, я не представляю для чего редукс сейчас необходим
в нем лежат список, два заголовка и кнопка
при добавлении hover к section, нужно менять цвет у обоих заголовков и у элементов списка. я так понимаю, это можно сделать только путем использования js. ибо через css я уже несколько часов не могу понять КАК
я очень зеленый во всем этом деле, недавно загорелся желанием и пока начал с html и css, планирую изучать js как только буду достаточно понимать разметку и стили
Вот такой код не работает, Хром ругается "Cross-Origin Read Blocking (CORB) blocked cross-origin response". Уже блядь весь реддит перечитал, там везде похожий код, который нихуя не работает вообще
var alrtSound = document.createElement('audio');
alrtSound.src = 'https://notificationsounds.com/wake-up-tones/arpeggio-467';
alrtSound.preload = 'auto';
alrtSound.play();
CORB гуглил?
хотя там не только миксин, а вообще ничего не лезет внутрь, типа надо в шаблоне что-то прописать я понимаю, но не понимаю что
получается я в скрипте прямо так и пишу, только меняю mySection, zagolovok на свои селекторы? просто я попробовал и не получилось кусочек css и то что он делает приложу, думаю, так будет логичнее
Ну морская пехота это универсальные солдаты, чуть какая заворушка и на передовую кидают, сам смотри как сильно жить хочешь.
Какого смузи, сука? Если хочешь писать на русском - пиздуй в 1С!
Есть какой-нибудь плагин, который приведёт код в относительный порядок? Как их там называют - better visualizer или как-то так.
Как это - навернулось? Автоформат уебало? Может просто настройки где-то на дефолтные откатились?
>Как это - навернулось?
Ну вот так. До обновления были отступы, пробелы, табуляции. Обновился - их нет. Код выглядит как сплошная стена текста, остались только переходы на новую строку.
>Может просто настройки где-то на дефолтные откатились?
Я не сильно давно пользуюсь, поэтому не знаю.
dispatch(action_object)
localStorage.setItem("...", string)
P.S. Думаю сделать это через промис.
Хуевая затея, там кроме рака нихуя не будет, мимо олд js тредов
Такие конфы создавались 5 раз, на 2й-3 день они удалялись, пусть лучше в личке общаются
>на 2й-3 день они удалялись
Это потому что кто-то чмоня, которая любит вдыхать только ИЛИТНЫЙ ПЕРДЕЖ. Наоборот, чем больше всякого пиздеца и треша, тем лучше.
Идея хуйня. Вы будете двумя долбоебами которые ничего не знают, вас будет тошнить от друг друга, потому что в друг друге вы будете видеть самих себя.
если они развиваются не по одному курсу, то может нормально сработать, допустим сегодня чел1 выучил тему 1, чел2 выучил тему 2, но в любой момент они могут поделиться знаниями друг с другом, или разобраться в теме 3
Цвет кнопки должна для одного человека меняться и за ним привязываться, или чтобы любой человек мог зайти и нажатием опять поменять цвет кнопки для всех?
У меня был похожий опыт, в итоге мы пообщались года 3 назад. Парнишка был с дамбасса, хотел уехать в Харьков если ты все-таки переехал - красавец. В итоге мы пиздели на отвлеченные темы, что там в дамбассе, обсуждали семейные обстоятельства и прочую хуиту, но только не кодинг.
Для одного
Ещё пока ковырялся со сменой цвета наткнулся на странную фичу. По умолчанию цвет кнопки серый, значит при проверке условия она должна сразу же поменять цвет? Неее, нифига подобного. При первом нажатии кнопка остаётся серой, дальше работает как по маслу. Задался вопросом "Почему так?", добавил перед проверкой условия вывод цвета в консоль, и оказывается, при первом нажатии у кнопки вообще как будто нет цвета. Как это понимать?
если только для себя, то https://developer.mozilla.org/ru/docs/Web/API/Window/localStorage
а если как нормально, то поднять себе express на бэке это вопрос одного вечера. Делаешь get запрос и post на цвет и усе.
prettify
Спасибо, анонче!
И как же заебало, что блять негры и женщины набранные по квотам пишут ебаные статьи с нерабочим кодом. Вот я 5 минут назад читал статью, модуль Х с тайпскриптом и там, блять, ни в одной функции нет типа возвращаемого значения. Ну типо нахуй нужно, угнетатели хуевы понапридумывали говна. Писал негр. В другой статье половина кода типизирована как any. Охуенно. Писала женщина. Пиздец, заебись блять. Охуенный у тебя тайпскрипт.
Я тоже не какой-то суперпрограммист, а скорее всего хуевый. Но каждый ебаный раз, когда я открываю какую-то статью почитать, у меня на каком-то блять подсознательном уровне возникает понимание, что автор нихуя не понимает о чем пишет, а свой код даже не в состоянии запустить.
Нет, нихуя. Уникальные типы возвращаемых значений, уникальные аргументы, интерфейсы и т.д. И приходится либо сидеть и ебать себе мозги чтением лапшеобразного d.ts файла, либо прочитать одну годную статью, где вменяемо используются основные фичи.
Про какой модуль речь то?
Как оценить стоимость выполнения этой работы?
Проблема в том, что я не зарабатываю 300кк\секунду, а аппетиты у фрилансеров дай боже...
Ставка за час • количество часов
та пожалуйста, брат. Всегда обращайся, в JS Thread всегда можешь рассчитывать на нашу помощь. Всего наилучшего
Работаю над одним проектом, и там есть требование, чтобы при потере соединения(например человек с планшетом зашел в лифт и там нет интернета) приложене продолжало функционировать. При этом в оффлайне оно взаимодействует уже с данными, которые кешируются на клиенте. А потом как только соединение восстановилось, данные "пушились" на бекенд и актуализировались с учетом работы в оффлайн-режиме. Т.е. то что пользователь "наредактировал" в оффлайне должно в любом случае потом улететь в базу как только появится сеть.
Куда копать, чтобы реализовать такую штуку? Пока на ум приходит IndexedDB в API браузера, но не совсем понятно как "отлавливать" автоматически момент когда сеть потеряется/снова вернется. Раз в n минут опрашивать бэкенд и смотреть на статус код ответа кажется ужасным решением, т.к. это не гибко, не безопасно и есть риск потерять данные.
> но не совсем понятно как "отлавливать" автоматически момент когда сеть потеряется/снова вернется.
Ты почему даже не попробовал в гугл этот вопрос вбить, программист?
Я уже находил https://developer.mozilla.org/ru/docs/Web/API/NavigatorOnLine/onLine
но я хз точно ли это подойдет для задачи, т.к. выглядит слишком просто.
>>1995587
Спасибо, посмотрю.
А ты няшный?
Бамп
Можете посоветовать библиотеку? Которая бы предоставила некий холст, на котором можно позиционировать объекты по XY, который можно приближать-отдалять, перемещать/прокручивать, который бы позволял размещать на себе объекты (на которые бы также распространялось приближение-отдаление), выводить какую-то информацию, удалять ее, ну и пагинацию поддерживал в идеале.
Что-то вроде, только гораздо более сложно, предлагает draw.io, на холсте которого ты рисуешь свои диаграммы или виджет яндекс-карт, на которых можно размещать свои метки и подписи. Мне это нужно для отрисовки планов этажа и размещения на них элементов, подсветки зон и т. д.
В нпм по запросу "canvas" гуглятся соответствующие низкоуровневые штуки, по "floor plan" какие-то непонятные проекты без демок, как найти нужное я хз. Возможно, мне нужна некая рисовалка svg с вставкой элементов поверх, хз. Но делать на голом канвасе или даже на движке карт вроде лифлета кажется сложноватым.
Но пропсы видно в рендере даже если мы не вызываем супер.
Тогда супер для пропсов отпадает, что же остается?
Остается что супер нужен лишь для того что бы зацепить в созданный класс, методы которые прендлежат React.Component? которыми никто не пользуется по сути, у нового класса всегла свои методы.
Правильно я понимаю?
Но там написано, что мы не можем получить парент из чайлда! Как же быть? Неужели жс?!
<body>
<nav><div /></nav>
<nav><div /></nav>
<nav><div /></nav>
</body>
При наведении на любой див, подсвечиваются только дивы. Тело не трогаешь.
Так и канвас все мои хотелки покрывает. И голый жс. И голый ассемблер тоже.
Если мне нужно будет пилить костыли я открою вим и буду писать слешинклуд.
Ты и html тэг без ЖСа не можешь написать.
Я 6 лет пишу на ноде, уже дохуя сениор с зп 5к, но есть одна толстая вонючая проблема. Я не понимаю ООП, SOLID и такие простые штуки как DI.
Как, сука, это понять? Может кто-то заделиться материалом для ну совсем тупых?
Нахуй тебе ООП в жаваскрипте? Если до 5к дорос на ноде без ООП, то может этот ООП нахуй не нужен был?
Не понимаю почему при перетаскивании появляется просто запрещающий значок без самого элемента, а должно быть как на пике
взял тутор даже, там на видео с таким же кодом видно элемент, у меня просто значок
гуглил дев мозила, там в апи днд ничего про такое не сказано
>>1995902
>ООП
я сам сейчас начинаю пользоваться тайпскриптом, не понимаю зачем, но много где нужен
Наверное стоит поделать что-то простенькое типа свое апи для туду листа какого-нибудь + почитать что-то типа введения в ооп
Так по ссылке странице, а не аудио
https://notificationsounds.com/storage/sounds/file-sounds-767-arpeggio.mp3
https://www.npmjs.com/package/ibm-watson
Любая либа, которая не будет отправлять твою хуйню куда-то там в какие-то сервисы будет работать оффлаен. Посмотри вот это, глянь как происходит рекогнишен. Если это тупо апишка, то в оффлайне не оживёт. В остальном тебе похуй куда ставить потобные тулзы - на экспресс ебучий, нест, хапи или электрон - и то и то нода
Стили в head, скрипт перед закрытием body, всё ок
Потестил с другими тегами и параметрами, та же фигня. Есть одна безумная теория, что в DOM, с которым я работаю, значения стилей по умолчанию всегда "", и меняются только когда я начинаю с ними работать. Я шизик, или такое возможно?
Вообще наверное в оффлайне это залупа полная, у тебя в любом случае будет какая-то апишка, которая будет всю эту хуйню слать в какой-то сервис, который тебе уже будет отправлять результат обработки, либо ты просто добавишь толстую жирную либу в свой проект. Не надо так. В зависимости от того, насколько критичен спич рекогнишен можно либо использовать апишки под это дело
https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition
либо изъебнуться и прикрутить что-то работающее локально, либо еще больше изъебнуться и прикрутить third party на каких-то сях или пистоне и реализовать интерфейс общения с этой залупой. Но в последнем случае будет высока вероятность, что ты сделаешь велосипед и легче будет поискать что-то готовое. Но с третьей блять стороны есть вероятность что это готовое будет дырявое и нести для твоего проекта потенциальную опасность, поэтому три раза подумай, и уже потом добавляй новую говнолибу в свой проект
>>1995942 -кун
Жив, но не стоит. Реакт ебош дальше, сейчас на реактовиков ёбнутый спрос, не распыляйся
Я сейчас проверил, там в style вообще пусто, то есть не пусто, а у всех параметров пустая строка. Втф.
Ну пусть дальше дрочат, тебе-то что? Реакт популярнее и востребованнее, это все что тебе надо
Похоже style это именно стили на конкретном элементе а не ксс. Тебе немножко надо переписать логику: добавляй и убирай классы, а не напрямую стиль.
Так, чтобы ДОМу со стилями работать, надо сперва распарсить стили из ксс и прикрутить к элементу, а потом уже считывать значение. Ты можешь проверить это, смотря на элемент в ДОМе - значение появится только после нажатия кнопки.
Соответственно до вызова `style` на элементе никакого значения нет и нужно сперва вызвать `getComputedStyle()`, чтобы его присвоить.
Именно поэтому любой подход, дрочащий стили напрямую через ДОМ - всегда лютый оверхед по сравнению с манипуляцией строки класса или других аттрибутов.
TC39 дал им CSS, который всегда работает на парралельном потоке и ускоряется видимокартой, крась блять кнопки им. Говорит не хочу красить кнопки списком стилей, хочу жрать говно и красить кнопки через костыльную ассинхронщину на основном потоке. И это фронтэндеры блять? Пидоры это, а не фронтэндеры.
А насчёт сохранения состояния кнопки без бэкенда, тут только `localStorage` поможет.
Я не споро, анон. Просто финская фирма предлагает перекатиться удаленно к ним на ембер. И периодически вакансии мелькают с ним и сразу в описании ваканси обычно пишут ЕМБЕР ЭТО ОХУЕННО, МЫ РАССКАЖЕМ ПОЧЕМУ ЕМБЕР ОХУЕННЫЙ. Но я вот не особо задумывался правда ли это, а сейчас задумался и ты вот говоришь что ембер говно и статистика тоже не даст соврать. Судя по всему это скоро новый легаси.
Это уже легаси. Эмбер может прекрасно ложиться на их проект, все такое, но по факту Эмбер нахуй не нужен. Он может и не быть говном, но это никак не поменяет того факта что тебе выгоднее реакт.
У нас на проекте используется hapi. Это сука пиздец, от него блевать хочется. Но архитектор залупится писать новые сервисы на чем угодно кроме него, мол, нихуя не знаю, хапи заебись, остальные фреймворки нинужны.
С эмбером мб та же история и там такой же мамонт сидит и залупится юзать реакт. так-то реакт тоже говно и мб он это прекрасно понимает и поэтому топит за эмбер, но с финансовой стороны вопроса это никак не меняет тот факт, что реакт востребованнее и дороже.
Типы
sorbet.org
Я так понля это что то типо vue но за дизайн что отвечает? типо css фреймворк какой то?
Академию смотри наверное, я хз.
душнила
>душнила
укради где-то курс анжелы ю беком э фулл стак веб девелопер, блок с хтмл+цсс, там примерно такой сайт пошагово делают
Нужно удалить из него объект, зная только индекс.
Обычно я использую такой подход - https://jsfiddle.net/murbhpek/1/
Или есть более красивое/удобное решение?
Да так короче, спс.
есть ли какая нибудь умная тулза которая выкинет из кода этой либы все то что я в своем основном проекте не использовал? то есть уменьшит размер js файла
по описанию он именно собирает в кучу модули
он разве может удалить прям из кода этих модулей все лишнее?
пасибочки :3
А придется нет
Тут вебпук не будет волшебной таблеткой, так как у пикси даже дефолтного импорта нет. С пикси надо пердолиться по-особому и ставить отдельные пакеты вида `@pixi/${name}`. Скорее всего придётся выделить отдельный файл для реэкспорта таких пакетов с одного места, если тебе конечно писать отдельный импорт каждый раз не норм.
чо то сложновато
наверно выберу пикси.мин версию а потом в вебпаке еще выберу продакшен минификацию
бамп
Значит ты не сеньор нихуя.
может ты мне подскажешь
мне пикси нужен для создания viewport на канвасе чтобы можно было его зумить приближать и т д. Впоследствии будет пиксельный редактор типо. Я ведь не ошибся в выборе? я посомтрел и мин версия пикси примерно 500кб плохо конечно но что поделаешь...
А как же css фреймворк box-shadow?
Я знаю прямо то что нужно тебе, но не скажу, потому что на дваче нет лички, а плодить конкурентов разбалтывая годноту я не хочу.
>а плодить конкурентов разбалтывая годноту я не хочу.
Типикал токсик пидораха.
ВСЕ СЕБЕ, ДОМА ПРИХОДИТСЯ, КРУГОМ ВРАГИ, НАМ ВСЕ ЧУЖИМ НИЧЕГО, УХ ПРОВАЛИТЬСЯ БЫ ЭТОМУ ПЕТЬКЕ! ЛИШЬ БЫ НАШ САРАЙ ВЕТРОМ НЕ СДУЛО, УИИИИ ХРЮК ХРЮК. СМОТРИ КАКУЮ ШТУЧКУ ПРИНЕСЛА ТАКОЙ НИ У КОГО НЕТ!
Как хорошо что за бугром люди живут а не орки.
Вообще то это паттерны нызывается, есть еще инлайновые гайд-лайны
и флексовые митапы.
Ну и смузи элементы тож норм.
Лучшее краткое объяснение того, что такое ООП(и ФП): http://blog.cleancoder.com/uncle-bob/2018/04/13/FPvsOO.html
Принципы SOLID простым языком: http://blog.cleancoder.com/uncle-bob/2020/10/18/Solid-Relevance.html
Если под DI ты имеешь в виду Dependency Inversion, то в обоих постах она затрагивается, но сама концепция элементарная - инверсия зависимостей позволяет тебе не зависеть напрямую от низкоуровневых деталей в высокоуровневых компонентах, а общаться с ними только через заранее известный интерфейс.
Например, если ты хочешь говорить с базой данных приложения, то без DI ты это сделать можешь только через import db from "db", привязавшись таким образом к той конкретной имплементации, которая лежит в том конкретном файле. С DI ты избавляешься от этого импорта и получаешь БД из какого-то другого места(в рантайме или через контейнер) привязываясь только к публичному интерфейсу, который может реализовать любая имплементация.
Более того, вся концепция ООП была придумана и существует только для того, чтобы DI реализовывать, потому что это настолько важный и удобный паттерн.
На алгоритмы в целом похер, самые нужные все уже давно придуманы и лежат в библиотеках. Лучше учись в чистый код, рефакторинг, технологии и методологии разработки ПО.
Ok spasibo
Кстати насчет чистого кода, в тему будет эта книжка, или другие какие интересные есть?
Или ты вообще про другое?
Эти вещи изучать лучше на практике. То есть - пиздовать на джуна.
Смотришь на любой популярный проект и делаешь его клон. Как можешь так и делаешь
А дальше что? Что мне с ним делать, если я даже не знаю с какой стороны подходить? Я только сегодня узнал, что макеты отдельные люди делают.
Скачай с торента курсы и посмотри че там делают
Может за тебя ещë и работу сделать? Работай, пëс.
Тут нет ни у кого примеров работ. На дваче одни теоретики сидят.
Миллионы никогда не работавших вкатывальщиков под NDA бога.
10 минут достаточно. Че там учить, это же просто рендер-функция
Это код с официальной страницы пакета IDB для упрощения работы с indexedDB. Вопрос на миллион долларов: что здесь не так?
Поясняю: может быть я пиздец тупой и вижу ошибку там, где ее нет. А может быть все норм и я просто не понимаю каких-то осоебнностей использования языка. Короче, полчаса-час на ответы, либо до трех первых ответов, либо до первого угадавшего, а потом посмотрим, обосрался ли я.
Проектики разные в портфолио пилить, хотя у меня их уже 5 штук спа в портфолио полноценных. Да пришел к выводу что буду готовиться к собесам месяц, потом пойду их проходить. У меня такое ощущение что вот чегото не хватает сейчас, а именно на собесе и зададут такие вопросы которые я не знаю, поэтому постоянно готовлюсь дотошно что бы быть сильным на вопросах. Но уже складывается ощущение что можно и на мидла идти кек, короче свои тараканы в голове в плане подготовки, не хочу выглядеть как васян вкатун с курсов, которых 90% и которые сливаются на собесах
Структуры освой, для ООП можешь паттерны глянуть.
>на собесе и зададут такие вопросы которые я не знаю
Поэтому нужно брать количеством, а не выжидать конкретную "свою" вакансию. Джуну надо каждый день подаваться куда только можно. А так можно вечно ждать сидеть, это глупо.
Анон, помогай. Не хочу на каком-нибудь лифлете или опенлеерс низкоуровневую хуйню городить.
Как игнорировать собственное превосходство над другими кодерками и нормально работать? Вот не могу бля нормально продолжать кодить на жс, пока осознаю что нахожусь много выше всякого быдла на жаве, питонах, шарпе и прочем говне. Всякий раз как юзаю стрелочную функцию, ахуеваю от удобства и продвинутости жс по сравнению со всякими быдлоподелками
async function newDB() {
const database = await openDB("huita", 1, {
//createStore
//createIndex
//blahblahblah
});
//реализация CRUD
await database.add("huita", someShit)
await database.delete("huita", someShit)
...
}
Я один искренне не понимаю, как потом этим пользоваться? Почему везде круд пишут внутри функции-создателя БД. Окей, известно, что в ЖС функция это объект. То есть блять мне на полном серьезе предлагают потом к круду лезть через жопу путем вызова newDB.functionAdd()? Я просто не понимаю как этим пользоваться что куда писать?
Более здравым мне кажется вариант с разбиением этой хуйни на куски. Типо:
async function newDB() {
const db = await openDB("huita", 1, {
//createStore
//createIndex
//blahblahblah
});
}
async function addToDB(someShit) {
const database = await openDB("huita", 1, {
await database.add("huita", someShit)
}); и т.д.
}
Но этого почему-то нигде нет. И даже в полном примере Article store просто хуячат все в создающую функцию без задней мысли, будто бы все операции с базой проводятся из этого одного файла, будто бы не может возникнуть необходимость из рандомного файла сделать обращение к базе, чтобы, например, что-то считать. Я просто блять не понимаю. И нигде в интернете ничего внятно не объясняется, у пакета миллион загрузок в неделю и 0 инфы. Может быть кто-то с этой хуйней работал? Дайте код посмотреть.
async function newDB() {
const database = await openDB("huita", 1, {
//createStore
//createIndex
//blahblahblah
});
//реализация CRUD
await database.add("huita", someShit)
await database.delete("huita", someShit)
...
}
Я один искренне не понимаю, как потом этим пользоваться? Почему везде круд пишут внутри функции-создателя БД. Окей, известно, что в ЖС функция это объект. То есть блять мне на полном серьезе предлагают потом к круду лезть через жопу путем вызова newDB.functionAdd()? Я просто не понимаю как этим пользоваться что куда писать?
Более здравым мне кажется вариант с разбиением этой хуйни на куски. Типо:
async function newDB() {
const db = await openDB("huita", 1, {
//createStore
//createIndex
//blahblahblah
});
}
async function addToDB(someShit) {
const database = await openDB("huita", 1, {
await database.add("huita", someShit)
}); и т.д.
}
Но этого почему-то нигде нет. И даже в полном примере Article store просто хуячат все в создающую функцию без задней мысли, будто бы все операции с базой проводятся из этого одного файла, будто бы не может возникнуть необходимость из рандомного файла сделать обращение к базе, чтобы, например, что-то считать. Я просто блять не понимаю. И нигде в интернете ничего внятно не объясняется, у пакета миллион загрузок в неделю и 0 инфы. Может быть кто-то с этой хуйней работал? Дайте код посмотреть.
Есть две функции, которые делают то же самое - таймер обратного отсчета. Первая универсальная, у нее есть аргументы minutes, seconds. Вторая работает напрямую со значением из глобал скоупа (переменными pomodoroMinutes, pomodoroSeconds).
Логика у функций одинаковая, но вторая работает нормально, а первая как-то странно. Вторая выводит как надо: "1:59", "1:58", ... , "0:00". Первая выводит: "1:59", "1:59", ... , "1:59"
И не понимаю, это из-за интервала нельзя в функции значение из глобал скоупа менять или почему так нахуй? В первой функции проверял minutes === pomodoroMinutes, когда вызываешь ее с pomodoroMinutes, но эта хуйня все равно не работает!
https://jsbin.com/nuxedalaki/1/edit?js,console
Инкрементные идентификаторы - плохая идея. Чтобы нельзя было проитерировать всех твоих клиентов используется UUUID
Неосилятор, плиз.
Ебать ты долбоеб братишка. Хуже дебила, который для идентификации данных лепит где попало uuid вместо автоинкремента, может быть только червь-пидор. Особенно приятно работать в админке с таким дерьмищем, когда ты не можешь посмотреть заказ 123, тебе нужно смотреть заказ 22af49d4-8e7e-4666-8bd6-d6e0f6b41ed6 и хочется ебало набить разработчику.
uuid имеет смысл использовать только если данные сильно публичные, да и то не во всех случаях, да и то не uuid, а что-нибудь более читаемое.
Собсно на пике. подчеркнул красной полоской.
Es lint колбасит или шо? Не моху понять нихуя че он ругается!
Хорошо что ты спросил
Так наведи на ошибку свой указатель то, там в тултипе обычно пишут кто из плагинов недоволен
Как таковой ошибки нет, просто плагин ругается как буд-то скобки не закрыты, и выдает одну красную в конце.
Я удалил часть этой шаблонной строки - все заебись, вставляюю ее обратно опять разметка в коде едет, хз че за баг, но я почитал на мдн, с шаблонной строкой все праввильно делаю, походу vs code тупит. Я даж переписал строку заного, нихуя не поменялось. ДУмал мож пробел какой закрался.
>>1997964
Но я не ищу веб-геометрию, анон, спасибо конечно, добра тебе, но я вообще ни разу не ищу веб-геометрию на вебгл, я вообще не ищу параметризованного рисования примитивов, иначе бы взял канвас или хотя бы д3 какой-нибудь. Я ищу либу для отрисовки векторного фона по определенной сетке, поверх которого буду накладывать другие векторные объекты, по наведению-нажатию на которые буду выводить тултипы (или еще как-то обрабатывать эти события), и все это с приблизить-отдалить-влево-вправо-вверх-вниз. Так, как если бы мне надо было отрисовать план здания. Что-то вроде я находил тут
https://codepen.io/zachdunn/pen/VvRXdP
но визуально как-то стремно смотрится (периодически залезаешь за край карты, масштабирование смазанное и т. д.). Если кто не поленится смотреть - замените https на http
тут
https://gojs.net/latest/projects/floorplanner/FloorPlanner.html
и на хабре советовали мертвые ссылки на либы для отрисовки svg
https://qna.habr.com/q/372165
Я хотел нечто подобное, только в более вылизанном виде. >>1995662
Вот типа того, да, вот этот пример особенно.
https://qna.habr.com/q/372165
но canvas... У них, я так понял, не решена проблема с z-index, а перерисовывать заново при каждом изменении - ну хуй его знает... Особенно, когда надо поверх пихать плашки всякие всплывающие, тексты и т. д.
А, ну так это bracket colorizer значит с ума сходит
Ну ты все равно такие строки то не пиши, нечитабельно же, это код, а не фильм Нолана
На форчане спроси, там подскажут-
https://boards.4channel.org/g/thread/81168658
https://boards.4channel.org/g/thread/81176255
или на SO создай тему
По ссылкам не ходил, но прост попробуй на лифлете, там можно поменять геокарту на твою кастомную карту, и есть плагины для рисования полигончиков почти без багов.
Ну и нет ничего проблемного в перерисовке 60к/с, твою видеокарту именно для этого и делали
Вот типа того, да, вот этот пример особенно.
http://fabricjs.com/build-minimap
но canvas... У них, я так понял, не решена проблема с z-index, а перерисовывать заново при каждом изменении - ну хуй его знает... Особенно, когда надо поверх пихать плашки всякие всплывающие, тексты и т. д.
>>1998449
Да я хотел что-то окологотовое. Буду смотреть на фабрик.жс, наверное, выглядит охуенно.
Зачем они плодят сущности?
Изкаропки. Если у тебя не очень большое приложение и нету кучи сайдэффектов, то контекст вполне себе интересная штучка.
>Зачем они плодят сущности?
А вообще это суть фронтенда. Придумать для одной задачи хуеву тучу инструментов, которые со временем станут депрекейтед.
Нихуя тебя подорвало, свидетель инкрементных индикаторов.
Если жаба душит лишние символы юзать - возьми рандомный код на 5-7 латинских букв.
Потому что редух - ехал бойлерплейт через бойлерплейт.
Хуярить свой модуль, который в зависимости от поддержки indexedDB будет хранить состояние в редуксе/indexedDB/локалсторэдж, а компоненты будут только пропукивать объекты в специально выделенные функции, от результата вызова которых зависит состояние компонента.
Ты берешь примитивное значение из глобала и передаешь аргументом в функцию. Функция создает новую ссылку на свою переменную. Ты ее меняешь и она пропадает после выхода из контекста.
Вот тебе часы наоборот. https://replit.com/@CharonIV/VeneratedTastyProperty#index.js
Либо ищи библу
Никак, продолжайте гадать над значением this и ритуально биндить методы класса.
Код чище, меньше кода, лучше developer experience, работать с хуками проще и удобнее
Насколько сильно стрелочные функции влияют на производительность?
шиз, по необходиомости, везде не получится юзать, читай книжки в шапке
Классовые компоненты имеют свои преимущества. Например любые методы, которые ты объявляешь не будут пересоздаваться при каждом чихе. В функциональном компоненте это надо все оборачивать в useCallback. Нужно придумывать костыли, чтобы имитировать первый рендер и последующие. Если копнуть уже глубже, когда куча методов не было дипрекейтед, то там можно так гибко настроить, что сейчас будет полной головной болью.
Если я не ошибаюсь, то уже вроде придумали решение, что методы сразу биндятся в последней версии реакта в конструкторе.
>Например любые методы, которые ты объявляешь не будут пересоздаваться при каждом чихе
Но ведь денчик сказал что функции относятся к рендеру, а не к инстансу
>надо все оборачивать в useCallback
А может и не надо
>имитировать первый рендер и последующие
Почему это должно значить? Надо ведь декларативненько, а не "вот сейчас компонент отрендерится в первый раз и тут мы..."
>придумали решение, что методы сразу биндятся
Спасибо, уже не надо
Не должен. Сделай импорт в рут компоненте или скажи вебпаку явно, что этот файл надо тоже собирать
Все знают что в жс-системе надо быть модным подтянутым пацанчиком, а то тебя обоссут и определят в петушиный угол 3 пхпшникам, поэтому есть вопрос: зашкварно ли в 2021 писать function для объявления функций?
Не надо никого уговаривать, пусть сидят в своём болотце классов пока код не станет совсем легаси-помойкой.
>>1998874
>Нужно придумывать костыли, чтобы имитировать первый рендер и последующие.
А может, проблема не в реакте, а в отсутствии логики у разработчиков, которые пишут говно и неспособности читать?
Ты бы сходил и почитал разницу, ёба. Стрелки - это не синтактический сахар для function, это ДРУГОЕ.
Ебанашка, кто в 2021 юзает this в функциях, м?
недофреймворки, форсирующие недоооп, применяемые полутора анонами меня не интересуют
{условие ? компонент : затычка}
Есть проблема. При обновлении страницы на 1 наносекунду появляется затычка и тут же заменяется на компонент. Лично меня это раздражает, хотя я понимаю, что это потому что условие не выполняется мгновенно. Это можно как-нибудь пофиксить или просто хуй забить?
Для ошибок есть catch, для проверка запоса в then можешь использовать response && response чтобы андифайнд не принять
Ты че кретин? Ты вообще не вкуриваешь про что говоришь, просто съеби зеленый
Промис напиши, в then укажи прелоадер, then будет срабатывать только когда пройдет проверка натзагрузку, и прилоадер лишний раз не покажется
Еще можно в дид компонент маунт не вставлять прелоадер, а вставить его в компонент апдейт, то при первой загрузке страницы он тоже не будет показываться, вариаций много короче
Сделать так, чтобы условие выполнялось мгновенно. Не благодари.
Вообщем, по клику требуется найти похожие элементы на матрице, которые примыкают друг к другу, схематично изображу так.
1|1|2
1|2|2
1|1|2
То есть, необходимо найти цифру 2, по которой кликнули.
Пробовал создать многомерный массив, и проходить по нему циклом, но не получилось, встал вопрос, каким образом искать элемент сверху и снизу. Может есть какой то другой способ нахождения примыкающих друг другу элементов, чтобы были найдены элементы по горизонтали и по вертикали?
Ну смотри, я вообще ни разу не математик, а реакт-формодрочер, поэтому мое решение скорей всего будет неоптимальным. Но допустим смотри, мы щелкаем на самой правой верхней двойке. Это будет грубо говоря по координатам 3,1 (3 по горизонтали, 1 по вертикали). Нужно проверять соседние координаты, соответствуют ли они кликаемому числу. То есть какие соседние элементы у 3,1? это 2,1 и 3,2. Думаю мысль понятна.
Соседние координаты от щелчка если мы за основу берем х,y (без диагонали) это:
1) (x, y-1)
2) (x+1, y)
3) (x, y+1)
4) (x-1, y)
Ну и делаешь проверку чтобы ни одна координата не было меньше 0.
Да это очередной залетный зумерок. 2 месяца на проекте посидел, видосики на ютабе посмотрел и все - гуру нахуй, можно уже "тупым дедам" советовать что и как надо делать
Примечательно что предложить что-то такие клованы всегда рады, но реализовывать - это не к ним, пусть кто-нибудь другой пытается воплотить их великую мечту в реальность и переписать 5 десятков модулей под новый стиль
>классы это устаревшее говно и ооп вообще для пидоров
Отличные аргументы из категории "инфлюенсер так сказал"
Интересно как он будет пытаться привязать это к тому что весь ангуляр например априори построен на TS и на классах
Схуёв ли он должен импортировать файлы за пределами бандла?
Блохастый, ты понимаешь вообще каково это переписывать уже готовый проект под свои хотелки? Хоть делал когда-то такое сам, а?
Не переписывать а потихоньку внедрять хуки. То есть новый функционал делать полностью с хуками. Старый пусть на классах остается. В чем проблема?
пусть пишут на const Component = ({}) => {}
Тут нет слова function
Уже три года как реакт дал им божественные хуки с возможностью дописывать кастомные хуки, но нет, они будут обмазываться классами. Хотя достаточно обновить ривакт до 16.8+ и просто начинать новые компоненты писать на хуках, а старые или переписывать по мере возможности или вообще оставить как есть.
Охуенно ты придумал, конечно, все равно что если бы никакого условия и не было. А заглушку Пушкин рендерить будет?
Так ты же плачешься, что заглушка рендерится.
Флаг проверяй, isFirstLoad к примеру, в useEffect сбрасывай
те есть у меня компонент core/search-form
я хочу сбилдить фронт для клиента, у которого другие требования к форме поиска ( другая верстка/ф-ционал )
сделал пакет clientName в нем реализовал форму поиска как бы мне подцепить ее в движок вместо старой?
нагуглил это
https://stackoverflow.com/questions/43933783/angular-pass-component-to-a-component
проблема остается в том что мне нужно передать новую "измененную форму" с самого верху приложения, у вас в ангуляре есть чето типа реактового контекста для этого?
алсо как вы делаете инпуты ( пропсы компонента ) обязательными?
ну те чтобы если я в верстке пишу <search-form /> он бы мне не давал его отрендерить покуда я не пропишу <search-form lang='ru' /> например ?
>чето типа реактового контекста
инжектор
>как вы делаете инпуты ( пропсы компонента ) обязательными
никак
> инжектор
https://angular.io/guide/dependency-injection
это? Не вижу инфы как в билд тайме подменить компонент, тут же только сервис можно заинжектить не?
> никак
фу
Я делал через environment. Правда только с сервисами, но думаю так же можно и компоненты.
получаешь даты в году (date-fns/moment.js) с разбивкой по месяцам неделям и дням
отрисовываешь в цикле
проблемы?
something: any = {
"строка-ключ": {
"строка-ключ": [строка, еще строки...],
еще много таких пар строка-массив...
},
еще много таких объектов...
}
?
Делай мвс. Контролер принимает инпут (мышь, стрелки) и обновляет модель. Вьюха подписана на обновления модели. Модель простая, это текущая дата в милисекундах. Модель преобразуешь в массив чисел - дни текущей недели. этот массив посылаешь во вьюху при обновлении модели. Контроллер обновляет модель тривиально +-10006060247
+-1000x60x60x24x7
Получается мне надо заранее знать все названия ключей? Хуево чо.
Нет, Record - это когда не знаешь названия ключей
перепиши на ванилу, я пример накидал че ты хочешь и как это получить
У всех тс-макак в високосном году дней меньшем, чем в обычном?
в чем проблема со статическими методами?
>ts-ignore
этого не будет если закончить реализацию
> class implements
а тут ты чего порвался?
>бля пишешь ТЗ описываешь интерфейсы и желательно тесты объясняешь разрабу чего от него хочешь
>ждешь
>ждешь
>??
>profit
Мда, вот и дождались
И запомните дети, никогда не пишите календари сами
Потому что кручение и верчение этой вашей плонети немношк не совпадает )))
https://pastebin.com/wqhf9DJr
ну за 20 мин на коленке набросал, чего ты ожидаешь
так то я это и сказал
> ну и нахуя собственно говнокодить свой велосипед?
>>2000068
далее реализовываешь new Proxy к результирующему объекту
далее пилишь класс i18n + наследуешься от Calendar и в getYear уже возвращаешь html верстку
Это же затратно, наверное, среди вот таких вкатышей пик1-3 нормальных искать сам я золотце.
И как вообще дела обстоят с стажировками, они нужны или сразу до джуна пытаться лямку тянуть? И на стажировку попасть еще сложнее чем на джуна?
Блять как я же орирую с дебичей которые даже не могут запилить себе резюме на хх или хабр карьере, а хуячат на авито. Я гарантирую что тот пчел в спортивках не вкатится тупо из-за своей фоточки.
>>2000340
Не решающую, но очень важную. Как сказал мне один лид который нанимал людей, лучше взять компанейского приятного середнячка и его прокачать до нормального уровня, чем взять сильного по скилам токсика, который распугает всю команду.
Вот пример из Nest.js - создаем Controller путем декорирования класса, но почему не путем наследования? Это ж более логично
convertDayIndexToDayOfWeek < -- тут косякнул, Date.getDay() вернувший 0 это вск а не пн на любых тестах было бы заметно
> Особенно интересно как ты в декораторе собрался возвращаемый тип менять
тут ты прав, надо адаптер делать
>>2000068 - кун
Взял и без задней мысли сделал
Че эт за хуйня и как она работает? Асинхронный обработчик ошибок.
Это catch там что-то ловит?
Что-то какая-то мутная мудреная хрень
Принимает асинхронную функцию fn (которая внезапно возвращает промис), этот промис хуячится на catch
DI это ладно, но зачем оборачивать декоратором объект Request в контроллерах? Можно же просто передават ьв коллбек 1й параметр - Request, это весьма очевидный контракт, нахрена какие-то декораторы мутить?
А зачем эта вложенность функции в функцию? Что возвращает (fn) => (...args) ?
И почему catch берет именно третий аргумент args[2]?
let objects = [{key:value},{key:value}];
for (let object of objects) {
sorted[object.key] = object;
}
Как функцианально уменьшить код?
>object.key]
У тебя нет никакого object.key], твой код некорректен, хуй знает, чт ты собрался уменьшать.
>let sorted = {};
Твой soted не sorted ни при каком раскладе, порядок ключей в объекте строго определен.
Окей, бой.
let vocabulary = {};
let organs = [{zalupa: 1},{zalupa: 2}];
for (let organ of organs) {
vocabulary[organ.zalupa] = organ;
}
Когда уже научитесь Map использовать?
ПРОСТО ВКАТИСЬ
Я в 27 вкатился на вижуал бэйсик, программировал в экселе. Зато БД подтянул
Потом было уже проще перекатиться в веб. Вот я уже 3 года там, до сих пор нихуя не умею, зато платят нормальные бабки.
И ты так делай
Бля, то читаю стори что "вкатываюсь-вкатываюсь никак не могу вкатиться, все скипают, тогов работать за еду" то "вкатился изи на 70к, через 3месяца апнулся до 120к, еще через 3 получил оффер в дргую компанию и стал получать 200к"
Где тру?
Все правда. Но все зависит от человечка
>"вкатился изи на 70к, через 3месяца апнулся до 120к, еще через 3 получил оффер в дргую компанию и стал получать 200к"
Ха, возможно это был я.
Чтобы сказать фреймворку что нужен Request. Не всегда же тебе нужен реквест, иногда тебе нужен просто параметр из path, иногда из query, иногда body, причем смапленный в твои dto, иногда все вместе. Всегда передавать реквест - это значит всегда пердолиться с рассериализацией, а это именно то, что апи фреймворки хотят упростить
Проблема в том, что вот этих "джунов", которые прошли один курс и запилили по гайдам тудушку квадриллионы, из них человек 10 могут вообще внятно объяснить, что за хуйню они делают и зачем
В ангуляре тоже ооп нет, классы там для инжектов в конструктор и чтобы декораторы было куда нацепить.
Там такая же иммутабельность по тем же причинам и FRP.
This на собесах, мне кажется, спрашивают только в контексте самого языка, типа если ты его проебешь, то ты знаешь как так получилось и как с эти бороться.
Наследование - ну выучи prototype, __proto__, instanceof
Да поверхностно я конечно понимаю что это и как работает. Хочется именно нормально с этим поработать, чтобы это всё на практике закрепилось и чтобы я знал где и когда всё это можно применить
Кантора прочитай, залупа ты ебаная и ydkjs. Не нравится учить базу иди нахуй, значит не твое. Я сам прошел этот путь, знаю о чем говорю.
>и в реакте много того, что в обычном js вообще делается по другом
Реакт и есть обычный JS на 95%. Просто в нем используется более функциональный подход, как и везде сейчас.
This'ы в 2021 смешно писать.
Если так хочется разобраться, то читай learn . javascript .ru и пиши пет проекты без фреймворка.
На 100к вкатываются люди которые умеют решать задачи для бизнеса, искать информацию , уметь применять ее и т.д. На зп ниже 50к - идут либо инцелы студенты после вузика, либо инцелы по жизни которые так и не поняли че от них требуется,- "ну назоводе говорили гайки крутить, я и крутил".
Т.е. инцелы мыслят так - денег хочу много, а че от меня требуется не ебу. Вот вам моя всратая верстка, и знания по джсу который я учил раз в неделю. Таких успешно посылают на хауй на этапе скрининга.
Адекватные люди мыслят так - так ебать, че там на мидла джуна требуется за 100к, ага вот курсы на торентах 20 штук с серьезной логикой(клон спотифая, клон ютуба, клон фейсбука не рофл главное базовую логику повторить у себя, не обязательно весь функционал переписывать, написать и уметь объяснить че ты написал), вот собесы на ютубе, вот вакансии, вот статьи на виси от синьеров из санфрана, везде все расписано, все расказано, учим, дрочим, запоминаем, успешно применяем, аплаимся на 100к.
Сам вкатился в этом году на 100к, первый моя работа программистом. 2й собес по счету, аплаили на 80к, я выжал на 100.На вакансии не распылялся, в ИП Педриченко Иван Иванович резюме не отправлял, только в Корпорации уровня Тиньков, Вконтаке, Мейлсру и т.д. те что в топе по финансам и инраструктуре, потому что не хотел работать на дно галере или в мелкостудии.
Историю своего вката подробно напишу сюда в мае либо июне, когда будет свободное время, там длинная простыня, надо будет ее редактировать и подумать еще над содержанием, пока вот краткая затравка для неосиляторов.
Вот вам еще пасхалка это сказал черчиль, маск процитировал когда тесла почти стала банкротом -
Если вы осознанли что проходите через ад, не останавливайтесь, продолжайте идти. Можете применять на себя, когда будете сидеть сутками над своими проектам, изученим информации и т.д.
Совет№2 - не сиди на дваче нигде кроме этого треда. Как правило анонимы здесь - это не успешные люди, и им проще говорить о своих не удачах, много токсичоности и прочей ерунды. Часто то что здесь принимается за проблему, в реальной жизни проблемой не является. Я когда перестал доску скролить, словно голову из унитаза с говном вынул. Чужое мнение влияет на нас, так пусть это будет мнение успешных людей, а не неудачников.
Тут единственная нужная тебе доска, ее можно читать просто что бы оставаться в информационном поле айти, скажем так со со спецификой анонимности можешь попиздеть за движуху и конторы, либо за код. В остальных меди анонимности нет, там специфика общения другая, менее откровенная.
На 100к вкатываются люди которые умеют решать задачи для бизнеса, искать информацию , уметь применять ее и т.д. На зп ниже 50к - идут либо инцелы студенты после вузика, либо инцелы по жизни которые так и не поняли че от них требуется,- "ну назоводе говорили гайки крутить, я и крутил".
Т.е. инцелы мыслят так - денег хочу много, а че от меня требуется не ебу. Вот вам моя всратая верстка, и знания по джсу который я учил раз в неделю. Таких успешно посылают на хауй на этапе скрининга.
Адекватные люди мыслят так - так ебать, че там на мидла джуна требуется за 100к, ага вот курсы на торентах 20 штук с серьезной логикой(клон спотифая, клон ютуба, клон фейсбука не рофл главное базовую логику повторить у себя, не обязательно весь функционал переписывать, написать и уметь объяснить че ты написал), вот собесы на ютубе, вот вакансии, вот статьи на виси от синьеров из санфрана, везде все расписано, все расказано, учим, дрочим, запоминаем, успешно применяем, аплаимся на 100к.
Сам вкатился в этом году на 100к, первый моя работа программистом. 2й собес по счету, аплаили на 80к, я выжал на 100.На вакансии не распылялся, в ИП Педриченко Иван Иванович резюме не отправлял, только в Корпорации уровня Тиньков, Вконтаке, Мейлсру и т.д. те что в топе по финансам и инраструктуре, потому что не хотел работать на дно галере или в мелкостудии.
Историю своего вката подробно напишу сюда в мае либо июне, когда будет свободное время, там длинная простыня, надо будет ее редактировать и подумать еще над содержанием, пока вот краткая затравка для неосиляторов.
Вот вам еще пасхалка это сказал черчиль, маск процитировал когда тесла почти стала банкротом -
Если вы осознанли что проходите через ад, не останавливайтесь, продолжайте идти. Можете применять на себя, когда будете сидеть сутками над своими проектам, изученим информации и т.д.
Совет№2 - не сиди на дваче нигде кроме этого треда. Как правило анонимы здесь - это не успешные люди, и им проще говорить о своих не удачах, много токсичоности и прочей ерунды. Часто то что здесь принимается за проблему, в реальной жизни проблемой не является. Я когда перестал доску скролить, словно голову из унитаза с говном вынул. Чужое мнение влияет на нас, так пусть это будет мнение успешных людей, а не неудачников.
Тут единственная нужная тебе доска, ее можно читать просто что бы оставаться в информационном поле айти, скажем так со со спецификой анонимности можешь попиздеть за движуху и конторы, либо за код. В остальных меди анонимности нет, там специфика общения другая, менее откровенная.
inb4: formData
formData
Валидация инпутов делается проще
if (Input1.trim() && Input2.trim() && Input3.trim() ){
handleSubmit()
}
инпуты собирай обработчиком onchange в переменные и отправляй дальльше
carModel: "toyota",
carAge: 15,
color: "white",
carHorn() {
console.log("Beep beep!");
},
};
console.log(car.carHorn());
Почему в консоли после 'Beep beep!' появляется undefined?
Практически не спрашивают если это именно фронт. Могут как стилизовали код на прошлых проектах? modules или styled components? Подразумевается что вкатыш умеет верстать.
функция должна что-то возвращать,
в объявлении метода carHorn() после логирования напиши return 'anus' и посмотри что будет
первый консол лог вывод строку, второму ты говоришь покажи мне литерально web api - он закономерно посылает тебя нахуй, т.к. в js их нет
Попробовал сам, понял что обосрался. Действительно, почему консоль возвращает андефайнд?
Зумерки совсем обленились
Если easy peasy запросы будут то орм, если нет то query builder
декоратор ёпта
ее вкурил што ли ёпта?
функцию он принимает значит
и функцию возвращает
декорированную нах
понимаешь?
эта функция че-то там с args делает нах
че-то блять вытаскивает выдрачивает
2й индекс трогает ёпта
то есть 3й элемент рот его ебать
почему так?
а я ебу
контракт у него такой нах
на ус мотай
папку слушай
и збс будет
на ноде попиши дебс
Потому что ты не умеешь программировать.
Функция асинхронная, но throw должен же передать ошибку во внешний обработчик ошибок?
Вместо этого выбрасывается UnhandledPromiseRejectionWarning
Хоть ты и написал async to2ch, вернуть полезный промис ты забыл
За что ты пытаешься научить puppeteer двачевать?
>За что ты пытаешься научить puppeteer двачевать?
С двачем это я для примера написал, просто основной код большой.
>вернуть полезный промис ты забыл
А что если мне не нужно этот промис возвращать. Мне никак это ошибку не отловить вне функции?
Привет. Я левый пчел. Почему ты не обернешь в try catch промис page.goto ? И ещё. Напиши не throw, а throw new Error(e)
Все запросы - это промисы. Каждый вид запроса обладает своим удобным сахаром. Запрос строится на xmlhttprequest. Твой фетч - это обертка над xmlhttprequest. Ajax это вообще технология обращения к серверу без релоада страницы. Но то, про что ты говоришь ты скорее всего имеешь ввиду ajax в jquery.
Сейчас популярен axios. Удобный иструмент, много работы удобной за тебя из под коробки делает.
>Почему ты не обернешь в try catch промис page.goto ?
try/catch ловит только синхронные и async/await операции.
> И ещё. Напиши не throw, а throw new Error(e)
Ну там объект ошибки возвращается. Есть смысл ещё один объект создавать?
>>2001301
Спасибо. Выглядит весьма костыльно. Отлавливать ошибки через события это вообще законно?
>костыльно
Какие требования такие и решения
Это даже и не catch, обработать ошибку ты не сможешь, только пологгировать
>Какие требования такие и решения
Не думал, что это что-то необычное - отловить асинхронную ошибку.
Типа единственные правильный вариант это вовзращать промис в функции? А если промисов несколько, то все чтоль возвращать?
Но ты же ее из пизды хочешь отловить. Да, возвращать. Собрать все в один и возвращать
что-то в стиле шарик падает на батут
вот так только проще
https://www.youtube.com/watch?v=uM7o_g7JS4g
Проблема в том что т.к. query-параметры передаются в явном виде то человек может просто подменить один из них и поменять поведение в угоду себе, такого быть не должно
Очевидное решение - делать POST-запрос вместо GET, однако ж это лишь усложнит хитрожопым жизнь, но проблему не решит. По-прежнему детали запроса можно легко подменить. Как такое решать?
валидация на сервере?
> детали запроса можно легко подменить. Как такое решать?
Neekaque
Любой запрос всегда можно сделать с помощью curl
spa - это просто js файл, который отрисовывает тебе UI и делает запросы по api по мере необходимости.
Буду им физ. движки писать С КОЛЛИЗИЕЙ хуевой!!
https://codepen.io/EXDude/pen/wvgYzMx
threejs
for (let i = 0; i <= 8; i++)
fetch(`${i}.json`).then(res => res.json()).then(text => data = [...data, ...text.response['items']])
хули массив в консоли видно, а в браузере пустой?
Там ~800 спаршенных постов из вк, если что.
let a = (v: number) => 0
let b = (v: unknown) => 0
a = b;
...и никакой ошибки. Пиздец.
Потому-что анонмную лямбду с циклом браузер не поймет, так что пиши console.log(tyDown)
[1, 2, 3, 4, 5].forEach(x => x)
//undefinded
[1, 2, 3, 4, 5].forEach(x => console.log(x))
//1 2 3 4 5
чем стрелочные функции удобные то такие? по-моему обджекшены даже читаются лучше
1. Как в реакте сбросить инпут файла? Чтобы имя отправленного файла обнулялось? Чет ничего не смог нагуглить. Пока все что придумал - закрывать форму и открывать опять.
2. Кто-нибудь работал с апи от дак дак го? Интересует их поиск. Знаю, что гугл позволяет такое делать, но за бабки.
У них есть вот такая хуйня:
>An API for some of our Instant Answers, not for full search results.
То есть это значит, что они не дают доступа к поиску как гугл? Понятно что все еще можно просто посылать результат ввода из формы на дакдакго.ком, но хочется в пете выебнуться и посылать полноценные запросы по апи.
в штмл
Есть один флекс контейнер фиксированного размера - строка
В нем два дива фиксированного размера - столбцы
Задача: сделать так, чтобы при приближении, если столбец не влезает в экран, он переносился вниз. То есть это происходит динамически.
Свойство flex-wrap: wrap не работает так как надо.
> сам стреляет себе в ногу
Билять, это же просто пример. Этот код не использую, просто для наглядности механизма показал.
Причем здесь контравариантность?
Допустим,
let v: number = 0;
let u: unknown = 's'
v = u;
Здесь будет ошибка "Type 'unknown' is not assignable to type 'number'" и это вполне ожидаемо (а вот u = v как раз валидно и есть та самая контраваринтность).
А, всё, понял, там бивариантность работает. Спасибо!
Зачем ты используешь одновременно и .catch(e) на промисе, и try {await ... } catch (error) {}?
'ошибка3', как я понял, вообще никогда не выведется, ведь ошибка уже поймана внутри (и выведено 'ошибка2').
Зум страницы опредялется в мета теге вью порт и задается фиксировано один раз при загрузке страницы н грузит под нее стили. Получается тут никак их не поменять гибко.
Смотри в сторону window и его методов, там найдешь зум и ему применишь стили.
У тебя контейнер фиксированного размера и кажется тут то ты и соснул, потому что все всегда будет влезать
А по сему вопрос:
Слышал, что хранить бизнес логику в контроллере плохая практика.
Хорошая ли практика хранить бизнес логику в мидлварах?
или нужен дополнительный слой абстракций , к которому бы обращались эти мидлвары?
> Хорошая ли практика хранить бизнес логику в мидлварах?
пиздецки плохая
старайся делать так, чтобы твоя бизнес логика не знала вообще ничего о фреймворках/тулзах которые ты используешь
в идеале если вы решите переехать с express на фастифай/nestjs/deno
вы перетаскиваете классы с бизнес логикой и они без проблем заводятся в отрыве от всего
const listOfNeighbours = [
["canada", "mexico"],
["spain"],
["norway", "sweden", "russia"],
];
for (let i = 0; i < listOfNeighbours.length; i++) {
for (let y = 0; y < listOfNeighbours.length; y++) {
console.log(`Neighbour: ${listOfNeighbours[y]}`);
}
}
Окей. Понадобилось поле ввода только положительных целых чисел.
1) стандартный input type=number просто смешон, забудем про него.
2) ммм, pattern? Нет, он всего лишь делает поле невалидным. Нам надо тупому юзеру наглядно показать, что нельзя вводить ничего кроме цифр, а не просто плашечку "неверное поле, имши!".
3) окей, что у нас дальше? Регулярочки всегда выручали нас. Можно разбить ящик с бананами [(ngModel)]. Но (ngModelChange) не обновляет видимый результат после преобразования регекспом, ведь всё невалидное превратится в 0 или пустую строку, а ебучая форма у мамы умная и не желает обновить поле, ведь типа "изменений нет!". Зафорсить её на это изменение тоже нельзя, ведь она лучше знает как правильнее.
4) Штош...гуманных способов больше нет, вызываем control.setValue(filteredValue); и ещё до кучи
control.updateValueAndValidity(); чтобы ебальник ей закрыть о боже! О невалидности блять, да мы только что сделали сетвэлью, почему нахуй?!!!!
Вот ещё прикол: нельзя просто взять и присвоить полям формы свойства модели.
>Type 'string' is not assignable to type 'number'.
Ах ну да, у нас же для поля типа текст тип стринг, сделай нумбер и не будет ошибки. Да идите нахуй с этим говном.
for (let y = 0; y < listOfNeighbours.length; y++) {
console.log(`Neighbour: ${listOfNeighbours[y]}`);
Вот так наверное хотел написать. Первая итерация идет по основному массиву, когда он в него заходит то итерирует каждый его под массив, каждый подмассив итерирует на его элементы, в зависимости от длинны под массива.
лол, двач код съел, ну да ладно
Если хранишь дату в модели в нечеловеческом формате и выводишь в ридонли поле через date пайп, то при ресете формы там остается невидимое значение, и теперь из кода через модель нельзя его поменять. Да, такие сценарии бывают, не пизди.
Ангуляр это не собрание твои любимых контролов, ты бы еще спросил почему select только нативный и где автокомплит.
Формы - это про интеграцию модели (NgControl) и твоих нативных контролов (input, yobaInput и т.д.)
Поэтому пишешь свой контрол как хочешь, а потом пишешь CVA на него.
Всё равно бомбит.
>1) стандартный input type=number просто смешон, забудем про него.
Чем это тебя не устраивает лол? Как раз можешь в ней пропердолить целочисленные положительные значения, а от всяких хитрожопых валидацию при сабмите скриптом проводить.
>2) ммм, pattern? Нет, он всего лишь делает поле невалидным. Нам надо тупому юзеру наглядно показать, что нельзя вводить ничего кроме цифр, а не просто плашечку "неверное поле, имши!".
Бля, добавь тогда параграф, или какой-нибудь смолл под полем, который говорит, что можно только целочисленные положительные значения в поле вводить. Уж пользователь наверно догадается, что невалидное поле над/под этим текстом означает. Можешь заодно ещё и в `title` запихнуть. На крайняк вкуривай Constraint validation API, который позволяет кастомизировать дефолтный попап, но там придётся чуть ли не свой модуль писать для этого дела.
Да, спасибо, я уже понял. Вообще охуел когда увидел что так надо. Уж хотя бы было бы как-нибудь типа [i[y]], имхо
Так, ладно, я хуйню сказал какую-то. Я только сейчас перечитал и понял что i с [y] вообще никак не связаны с массивами.
>Нам надо...
Ну ты понел.., не мне. Такая задача была. Мне то похуй какая баба всрака будет долбиться в неправильный паттерн.
А что касается input type=number, ему добавили возможность настройки, которая не работает. Спрашивается, нахуя? Зачем даешь право написать max min и step, если это распространяется только на стрелочки? Почему если эти параметры указаны, программно не ограничивать ввод? Чтобы я костыль очередной писал на жээсе?
Валидация это не про ограничение ввода
>Чтобы я костыль очередной писал на жээсе?
Да. Другим нужны другие костыли, всем не угодишь
Ну и да, почему было не взять маску? которых целых 3, но одна говно, а вторая не поддерживается
Иснтрумент под задачу и все такое
> Чтобы я костыль очередной писал на жээсе?
Потому, что это антипаттерн. Ограничивать пользовательский ввод изначально дело неблагодарное, следовательно, идя этим путем ты заслуженно получаешь свою порцию боли. Правильный путь - валидировать пользовательский инпут по блюру/потере фокуса.
вторая страница с контентов $page=2 b и т.д
Я запиливаю пагинацию у себя, и значит вопрос, как сделать так что бы если апи дал контент на несколько страниц, то кнопки для некст страниц отображались, а если не дал, то и не отображаются?
Я понимаю что можно сделать проверку в useState мол если контент загрузился, покажи кнопку на некст страницу и подключи его с этим содержимым. Просто не догоняю, на каждую страницу делать отдельный запрос? Страниц с контентом может быть как 1 так и 10.
Почему было не взять либу типа материала просто? Я ебу? Нет. Мне спустили задачу, я поебался, правильный это путь или нет - не мое дело в данном случае. И хоть я задачу выполнил, формы огорчили тем что чуть отступишь от дефолта и тебе пизда.
Обычно серверная пагинация возвращает общее количество страниц вместе с нынешней страницей.
>правильный это путь или нет - не мое дело в данном случае
Ну понятно. А потом говорят "%фреймворк нейм% не оче". Вот теперь и у меня загорелось
Ну каждому - своё. Мне не хватает свободы.
Да все разобрался, там общего колличества страниц нет, но есть
totalResults: "113";
ток не понял как теперь это вывести. если есть, если мне надо по 10 итем на страницу надо как-то map сделать на общее колличество и поделить на 10, а че мапить то если 113 это число.
Нужно применить математику.
У нас было 113 яблок, одна корзина вмещает 10 яблок а мамаша ОПа вмещает ..., сколько корзин понадобится славику чтобы упаковать все яблоки?
Я вообще это и написал, я говорю не понял как отоброзить нужное число страниц потом. Как функция должна выглядеть
Бля не знаешь как помочь, лучше помолчи.
обычный перебор i; i<total; i++
return <div>{page}</div>
подойдет
Советы какого-то хуя с горы vs. практический опыт многомиллиардных мегакорпораций. Кого же стоит слушать???
Там про то, что бесконечный скрол хорош на сайте с лентой типа фейсбука, но плох в других случаях (например выдача поисковика или СУКА ДВАЧ ТРЕД НЕ НАЙДЕН)
А вообще, хуже фейсбука и его высеров нет в интернете.
>Там про то, что бесконечный скрол хорош на сайте с лентой типа фейсбука
Конкретно в случае пейсбуко-твиттера данные не сортируются по дате.
> Твой фетч - это обертка над xmlhttprequest
https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch
>This kind of functionality was previously achieved using XMLHttpRequest. Fetch provides a better alternative that can be easily used by other technologies such as Service Workers. Fetch also provides a single logical place to define other HTTP-related concepts such as CORS and extensions to HTTP.
Это другое, ты не понимаешь.
Пиздец. Вроде я синтаксис выучил, а задачу эту сделать не могу.
А шо там использовать. Деструктурируешь и все.
Как правильно вытащить координаты с navigator.geolocation.getCurrrentPosition?
Я делаю так:
function getPosition() {
function onSuccess(position: GeolocationPosition) {
const latitude = position.coords.latitude;
const longitude = position.coords.longitude;
return {latitude, longitude}
}
function onError(err: GeolocationPositionError) {
console.log(err);
}
return navigator.geolocation.getCurrentPosition(onSuccess, onError); // эта хуйня возвращает void поэтому нихуя не работает, компилятор ругается, когда я пытаюсь получить координаты {latitude, longitude} = getPosition();.
}
const getCurrentPosition = () => new Promise(navigator.geolocation.getCurrentPosition)
getCurrentPosition().then(position => {
const { latitude, longitude } = position.coords
})
Можешь так делать. Или через даже так
const {latutude, longitude} = (await getCurrentPosition()).coords
внутри async-функций
Ааааа блять, эта хуйня асинхронная, пиздец я затупок.
getPosition = () => {
return new Promise((resolve, reject) => {
navigator.geolocation.getCurrentPosition(
position: GeolocationPosition => resolve(position),
error => reject(error)
);
}
}
[latitude, longitude] = getPosition()
.then((position: GeolocationPosition) => [position.coords.latitude, position.coords.longitude])
.catch(error => console.log(error));
Почему так нахуй?
const {latitude, longitude} = (await getCoords()).coords // заебись, чотко.
////
const {latitude, longitude} = await getCoords()
.then((position: GeolocationPosition) => {position.coords.latitude, position.coords.longitude})
.catch((error: GeolocationPositionError) => console.log(error)); // Property 'latitude' does not exist on type 'void'. Property 'longitude' does not exist on type 'void'.
Не то чтобы я настаивал на втором варианте, просто интересно. У чего он нашел тип void? Что там void?
Ок. А почему-тогда он у меня аж целых 4 раза возвращает значение широты, если я пытаюсь вывести его в консоль?
const { latitude, longitude } = (await getCoords()).coords
console.log(latitude);
Он логирует одно и то же 4 раза подряд. Для интереса попытался сделать запрос к серверу, он отправил 4 запроса. Это полная хуйня. Это связано с тем что компонент лишние разы ререндерится (с чего бы это?) или что-то с промисами не так?
Хз, у меня вон вообще кал выводит.
Гуф умер.
БД используй, дурачок. Локал сторадж не для базы данных магазинов.
Есть длинная форма (ангуляр), как в случае ее неудачной валидации перемещать экран посетителя к ближайшему месту где есть ошибка? А то не сразу ясно, че не так
Пиздец. И вот это будущее веба
Есть scrollTo(x, y), однако он скроллит так что эти координаты x, y оказываются в левом верхнем углу экрана а не как-то иначе. Надо чтобы в центре оказался элемент, где ошибка
Можно получить координаты элемента, ок, но че дальше-то? Как понять сколько отнять от этих координат чтобы получить правильный scrollTo? Размер экрана у всех разный
get bounding client rect
Интерфейс.
const myReq = new Request();
const response = await myReq.http(url);
const json = await response.json();
Во-первых так функция сделана. Во-вторых на случай, если ответ ЖЫРНЫЙ, штоб процесс случайно не положить.
NaN !== NaN в хату, аноны. Такой вопрос, заказчик-пидор, ставит задачу очень расплывчато, потом когда сделано уже много, начинаются песни про "а вот тут вот можно вот так вот, а вот тут изменить, а тут не очень". В итоге приходится переделывать. Собственно, куда читать, где смотреть, по постановке требований к ПО? Может тут есть лиды или ПМ, которые много общаются с мычащими уродами, не знающими чего они хотят? Что помогает вам четко формализовать требования?
Так а сроки то есть? И если есть то меняются ли после новых невнятных мычаний?
Сроки наша контора сама ставит. Как правило часто выходим за сроки на сверках, но заказчик это понимает и не давит особо. Сейчас вот с короной вообще пиздец, пол года только на удаленку настраивались, но пока идем по графику. Но хочется научиться сразу ставить такие вопросы людям, чтоб они озвучивали, что конкретно им надо. Мне просто по человечески заебывает делать двойную работу и возвращаться к тому, что я уже сделал и забыл. Как то так, если что присоветуешь, буду очень благодарен.
Некоторые люди не знают что им надо пока им не покажешь, можете до разработки макетики рисовать@согласовывать, если переделки по внешнему виду, если по интеграциям - доки с описанием и диаграмками взаимодействий, но это все равно не 100% вариант, лел.
Ну а если вам платят за переделки, то тебя это вообще ебать не должно, добро пожаловать
Ох, ебать, понятно, ладно, спасибо. Просто в конторе до этого аналитики в задачах аж прописывали количество символов в полях, а тут пиздос анархия.
Что можно использовать в качестве "затычки" для тернарного оператора после двоеточия? Например у меня есть условный оператор, но нет else. Тернарный оператор требует выражение после двоеточия.
void 8
Работаю с css при помощи плагина MiniCssExtractPlugin
Проблема вот в чем:
В начале js файла стоит import '../css/style.css';
Все работает превосходно, птички поют и т.д
Если это закомментить перестает находить css (логично)
Если расскоментить то он все еще не может нихуя найти
Помогает только полный ребут серва, после которого о чудо он снова видит файл build.css
Собственно как эту херню починить. Меня заебало каждый раз ребутать сервер.
Это к теме не относится но появилась такая проблема при работе с реактом, там честенько весь синтаксис рушится, а потом css файл перестает находить пишет Refused to apply style from 'http://localhost:8080/build.css' because its MIME type ('text/html')
Печально если так. Что характерно если не использовать MiniCssExtractPlugin а просто билдить все в один свалка-файл все работает и обновляется в реальном времени.
Но хотелось немного больше порядка чтоб css был отдельным файлом
Он без минификации, просто так называется https://webpack.js.org/plugins/mini-css-extract-plugin/. Сам думал что там минификация из коробки, но нифига.
Томущо json(а можно и blob) надо распарсить.
Дело не в роутере, лол. Удалил его, все равно криво отправляется, сука не пойма че за баг. В соседней аппе все ок работает, а тут залупа с адресом какая-то
1920x1080, 0:43
так же делал аналог аск.фм, он более доработанный чем имиджборда.
Подскажите какой это уровень? Стек PERN + MobX
Можно ли устроиться с этим куда нибудь?
Подобные сервисы занимает сделать 1-3 дня с бесконечными перерывами поесть, позалипать вк, поссать, съездить в качалку и тд.
Твой сервер на локалхосте, но ты пытаешься с него фетчить другой сайт, не прописывая схему, в итоге фетч это распознает как локальный путь. Пиши fetch("http://themealdb.com/api/...") и ебись с отключением CORS в браузере
Я так и пишу, и все равно какая-то залупа. Лол. Мож апишка какая-то кривая. Буду копаться щас. Вообще с апи уже много работал, до этого штук 5 апи перепробовал все ок было, это первая которая вот чудит чет
Понял ща попробую, спс
Век живи век учись, спасибо анончик.
Заметил что самые ебаные проблемы всегда самые легкие, которые тупо не замечаешь глазом, хотя они очевидные казалось бы.
(async () => console.log(await (await fetch("")).json()))()
Тернарный оператор красивее, лаконичнее. Я легко и быстро набираю его, не отрываясь от своего смузи. А if-else громоздкая и некрасивая конструкция.
потому что ты ничего сложнее формочек не писал
нормальные приложения обрабатывают nullable значения тем или иным образом
выбрасывают эксепшены, меняют логику, делают еще что-то
в одну строчку обработку null ты не опишешь если это не hello world
Но ведь тебе не нужно if-else, дурачина, тебе нужен просто if. Можешь в одну строчку его написать, так и быть: if (true) sosatHui()
Ничего не надо перемещать, а сделать оверлэй с ошибками, и каждая из них - ссылка на поле.
Да промиса резолвишь ты хотел сказать?
Это копия, сохраненная 28 мая 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.