Это копия, сохраненная 27 июля 2022 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Больше пары строк кода в посте или на скриншоте ведут в ад.
Для программирования на HTML https://codesandbox.io
Для Node.js с консолькой https://repl.it/languages/nodejs
Если рассчитываешь получить дельный ответ, сформулируй правильно вопрос: «что я хочу получить, что я для этого делаю, что я вместо этого получаю». Если когда самостоятельно найдёшь решение — поделись в треде, мы за тебя переживаем.
Документация - https://developer.mozilla.org
Руководство для вката - https://github.com/acilsd/wrk-fet#javascript
Лудший езык
Факт. Все другие языки существуют только для того, чтобы быть скомпилированными в JavaScript и запущенными в браузере. Но зачем писать на чем-то другом, когда можно сразу писать на JavaScript?
Чтобы запускать в браузере, очевидно же. Браузер сегодня это вторая ОС. ОС поверх ОС точнее.
Если это настолько дорого и долго, то можно мне повысить немного зарплату? Ну немножко...
С кем ты разговариваешь?
Огла.. оглас.... огласите .... стек. огласите с.. стекньоры
>10900kf
>новомодные процы
Много смех
Ну а по делу - тебе упор можно сделать на хорошую память и ссд
Тебе в C# одному скучно?
Мало смех
У меня очень древний проц, так что это очень даже новомодно для меня ты че ахуел, проц 40к стоит, что тогда там новомодным считается сейчас?
document.querySelector(textarea:focus).value = text;
Ни то, ни другое не работает. Одновременно тоже. Визуально и в dom текст заменяется, но при нажатии кнопки отправки текст отправляется старый. В чем причина и как фиксить?
>В чем причина и как фиксить?
>сформулируй правильно вопрос: «что я хочу получить, что я для этого делаю, что я вместо этого получаю»
Да я рофлю просто над фактом, что ты назвал проц 2-летней давности новомодным, еще бы свежим назвал. А так-то у меня у самого i7 8-го поколения, он уже пожилой считай.
>>48723
Забыл эту строку вставить, она у меня была. Тоже не работает. Не удивительно - у textarea же нет атрибута value. Вот с <input type="text"> такое работает.
>>48725
Так это, вроде, очевидно из того, что я написал. Хочу, чтобы текст в textarea:focus заменялся не только визуально. Он заменяется визуально, я жду кнопку "отправить" и отправляется старый текст. А надо, чтобы отправлялся новый.
>>48741
У меня там переменная стояла и я когда заменял ее, то забыл кавычки проставить.
>>48739
Там проект очень большой и много говна крутится. У меня обычно довольно быстро все обновляется, сейчас i7, 16гб оперативки и ssd самсунговский, какие там цифры у всего этого я не ебу, в целом работает-то все нормально, но хочется чтобы это всё летало, вот открыл проект, указал типы, тебе идеешка сразу же дает подсказки без задержек, сохранил код, и оно максимально быстро в браузере отразилось за секунду. Но я не знаю реально ли такое вообще, даже если я максимально быструю пеку соберу
1224x276, 0:05
Вот так это выглядит. Но если вручную дописать что-то, то уже работает нормально. Хотя хуй знает, тут, на сосаче, тоже textarea, но отправка постов уже нормально работает... Может, дело в каких-то атрибутах?
Код обработчика отправки где?
Ты либо весь код давайлибо иди нахуй, никто не будет гадать что ты там наговнокодил и почему у тебя не работает
Зависит от сферы. На бэке это всего-лишь один из серверных языков, на фронте без него никуда.
Короче он и дальше будет жирнеть
Стандарт - в первую очередь художественное произведение без имплементации. Так что давай показывай как там в условном V8 реализована поддержка `HTMLTextAreaElement.value`.
Прошел почти месяц как пытаюсь вкатится
осилил как циклами перебирать строки и массивы
пару вопрос
когда получу первый офер ?
можно выкатываться ?
хуле так сложно?
>когда получу первый офер
Через год минимум
>хуле так сложно
Если тебе это не интересно, вкатываться смысла нет.
Спекодебил что-то там про манявры говорит.
Научись перебирать методами массива.
пиздос, нехочу обратно на завод
На рякте говняк планируешь делать? Так-то было бы заебись, но у меня тоже идей нет.
Вижу. Расскажешь за что отвечает?
Какой kyu надо решать, чтоб с уверенностью пиздовать на джуна? Ну понятно, что по одним задачкам судить глупо, но вообще в среднем хоть на что ориентироваться?
У меня тоже кризис, но я решил найти тестовое задание в открытом доступе, которое понравится и выполнить его, ну естественно с хорошей версткой и всяким таким.
>Какой kyu надо решать, чтоб с уверенностью пиздовать на джуна?
Никакой. Тебе надо знать технологии, либы/фреймворки и уметь их применять в разработке. В реальности кейс, когда тебе надо оптимизировать алгоритм один на тысячу.
Ды. Классический говняк на рякте и тупоскрипте.
Если ничего не придумаю, буду бутлег реддита/слака на новогодних пилить видимо.
Плюсану что это вообще не основной навык для собеса, но решение таких задачек поможет на части с лайвкодингом.
Почему сразу лох? Если ты хочешь стать тру синьер-пиздаболом 300кк/нс, то тебе в любом случае придется задрачивать алгоритмы.
Нужно уметь решать уровень изи-медиум с литкода, остальное только если собираешься в Гугл/Яндекс
Однако нашел баг, над которым вот уже где-то часик ебусь. Дело в том, что в качестве бд выступает localStorage. Есть один метод rmvNoteFromLocalStorageNotes(id) удаления заметки по айдишнику (с помощью .filter() прохожусь по всему массиву и возвращаю массив без id). Вот создаю я значит заметки (каждая заметка имеет свой айдишник) и при попытке удалить первый элемент (с айдишником 1) удаляются все заметки (если же удаляю какой-нибудь другой элемент то все норм). В чем может быть проблема?
Ну и в целом можете весь код обосрать, хочется ревью моего кода услышать
Код хуйня, непонятные классы с названиями, в целом хуево читается. База данных должна быть абстрактным классом с конкретными имплементациями, одной из которых будет локалсторадж бд. Это каксамое очевидное улучшение, в остальном оценивать нечего, всё слишком хуево.
1) не чейни тернарники, не оценят и рефакторить такое в будущем сложнее
2) нет смысла делать в конструкторе Id+1, лучше на фронте это сделать при мапинге
Поставь логеры в метод ремува и на стор и посмотри что происходит
Пока что это не код, анон, а просто набор не пойми чего.
Почитай про принципы S.O.L.I.D. в Википедии, поможет переработать. Пока самое очевидное решение - сосноль.лог везде где выполняется код и смотри где у тебя расхождение.
А так можешь уже смело идти на реакт-сеньор позицию, 1.5К долларов, они примерно такое пишут, я устал пометки о профнепригодности ставить.
Вот этот хорош. Напомнило книгу "О пользе и вреде истории для жизни" Ницше, где он рассуждает о том как искоренить высшее образование.
На пути обучения есть два главных камня предкновения:
1) Бессмысленное задрачивание кодворсов
2) Бессмысленное задрачивание особенностей языка
Эти две хуйни просто пожирают твое время.
Эм, можно объяснить что не так? Там серверу каждую секунду отправляются команды
Блет, точно, спасибо
>1
Магические константы без комментарием, которые почему-то инициируются в теле компонента через let вместо const
>2
ассеты и тесты в перемешку с исходным кодом
>Компоненты не типизированы
Надо типизировать через React.FC
>Именования CSS классов не по методологиям
Ты либо закатывайся в БЭМ, либо юзай css модули/jss/ scoped стили
>3
Тут вообще пиздец
Один компонент экспортируется имиенованным экспортом, второй дефолтным. Постоянно повторяется имя компонента в пути, потому что ты не называешь файл экспорта компонента как index.ts
>4
Проиграл с этой хуйни. Нахуя тут в JSON преобразовывать?
Не настроен единый конфиг для формтирования. В итоге у тебя в одном файле отсупы табом, в соседнем - пробелом.
>export function $(query: string): HTMLElement | null {
>return document.querySelector(query);
Пиздец. Вот тебе реально настолько сложно пару символов написать, что ты готов проебать хоть какую-то типизацию на этом методе?
> Надо типизировать через React.FC
А тут пишут что не надо.
https://github.com/facebook/create-react-app/pull/8177
> Проиграл с этой хуйни. Нахуя тут в JSON преобразовывать?
Как правильно сравнивать два объекта? Тупа перебирать все ключи и сравнивать рекурсивно?
Большое спасибо!
>2
Ассеты и тесты так cra пихает, нужно в отдельные директории?
>4
Это на случай если элементы массива объекты, читал что можно так сравнить.
Не очень понял про проебать типизацию
Понял, спс
По существу - у тебя вообще не должно появляться потребности сравнивать объекты, тем более в глубину. Если у тебя такая потребность возникла - у тебя ошибка в проектировании.
По факту, если тебе вдруг действительно очень хочется посравнивать объекты - то только рекурсивный дип обход. Но ты ахуеешь предусматривать все нюансы - что будешь делать с неперечисляемыми свойствами? Должны ли учитываться прототипы при сравнении? И тысяча тыясча подобны нюансов.
Короче говоря, ты обосрался еще раньше того, как тебе понадобилось сравнивать объекты.
В принципе может и нормально кнопки дивами размечать, но не так, как у тебя. И визуала не хватает минимального, т.е. более плавные анимации и какой-нибудь спиннер прикрути, чтобы было понятно, что нажатие случилось и надо просто ждать.
Вроде понял, потому что она записывается в свойство constructor прототипа только что созданного объекта, и поэтому функция gimeX есть, но недоступна.
Так и знал!
Либо от текущей ветки, либо от develop (или что там у вас) и туда черрипиком все коммиты из текущей перетаскивать
Написано 8 packages are looking for funding
https://opencollective.com/webpack
webpack@5.65.0, schema-utils@3.1.1, terser-webpack-plugin@5.3.0
https://opencollective.com/browserslist
browserslist@4.19.1, caniuse-lite@1.0.30001292
Чё это значит? Я теперь обязан платить что ли?
Подведи пруфы, что ты платишь. Иначе ты пиздабол, а твоя мать проститутка.
Нужен набор ячеек с помощью кнопок
запилить все в один блок по порядку я и так могу
Либо сделать один пустой блок под цифры,куда записывать цифры посредством создания элемента ,назначению ему цифры и высстроить в ряд с помощью appendChildб а разделителем будет допустим созданный p?
function clickOnNumber(e) {
let elem=e.target;
let number=elem.textContent;
let p=document.createElement('p');
divNumber.appendChild(p);
p.textContent=number;
}
короче сделал вот так и все получилось
>create-react-app
Мнение не учитывается.
>>48967
>Как правильно сравнивать два объекта?
obj1 === obj2
>>48968
>Ассеты и тесты так cra пихает, нужно в отдельные директории?
Да. И cra не используй.
>Это на случай если элементы массива объекты, читал что можно так сравнить.
А не надо писать код, где тебе надо сравнивать объекты по их внутренностям. Присваивай каждому объекту UUID или его аналог и сравнивай непосредственно их между собой.
>Не очень понял про проебать типизацию
Посмотри, какой тип возвращает querySelectorAll и сравни с вовзращаемым значением функции $.
Да, иначе жди маски шоу за нелицензионное использование ПО
Там триал, чел. Как на вебшторме. Через 30 дней прост удаляешь папку нод_модули и инсталишь npm i
Буднично напоминаю, что триало-чмоня не человек
npm fund введи и увидишь, кому нужны деньги, сможешь отправить пожертвование. Пакеты разрабатывают не всегда крупные конторы с огромным финансированием, иногда это кто-то один разрабатывает и на поддержку надо деняк. А то протухнет пакет и будешь руками сидеть какой-нибудь is-odd писать.
Птому что a первая подпадает под матч \w как и следующие за ней буквы, останавливается все на последнем матче \w за которым следует a
Как лучше всего провести поиск по test и найти совпадение по нужному символу?
Пробовал через IndexOf, но он не ищет через "массив массивов". А мне хочется всю эту толпу однообразных с небольшим различием массивов в один запихнуть, удобства ради.
test.flat().find(e => e.indexOf(searchSymbol))
А как сделать ленивый, чтобы только spaa матчился, пик не работает.
\wa+?
Чел, речь идет про объекты, чел, а не их внутрянку, чел.
В армии салаг в жопу ебут, так что мы с тобой еще мягенько. Учись гуглить тупые вопросы чтобы не быть пердиксом.
а слонам ваще в рот срут
кстати интересно если ли сейчас что-то такое, я в 2 частях был и подобной хуйни не было. только байки о том, что какие-то там челы в другой призыв ебались по обоюдке
Мы? Кто мы? Ты здесь один нахуй. Ты бы пиздюлей отхватил, из тебя дед как из говна пуля.
С трех устройств капчуешь, подлюка.
по губам получишь
Хоть иногда JS должен использоваиться по своему прямому назначению
Про прямое назначение js обычно говорят те, кто ничего не знает про это прямое назначение.
Код: https://github.com/vertically-challenged/todo
Запущенный проект: http://178.62.218.79:5000
думаю не плохо будет, но одного сайта не достаточно, ещё несколько сделай
https://www.patterns.dev/posts/classic-design-patterns/#singletonpatternjavascript
Там пример Синглотона такой, что он состоит из джвух js-файлов, которые импортируются в главный js файл.
Я сделал этот импорт с помощью вебпака. Чтоб вебпак вставил содержимое двух файлов в главный.
В результате после вебпака я вижу в результирующем файле такую штуку как:
const MyBadSingleton_0 = (MyBadSingleton); Показано внизу приложенного скрина, красным выделил.
Объясните, плес, что дают эти скобки круглые (MyBadSingleton)?
Мне кажется или они нихуя не дают?
Я попробовал сделать так консоль лог:
const MyBadSingleton_0 = (MyBadSingleton);
console.log(MyBadSingleton_0);
И потом попробовал сделать так, то есть без скобок:
const MyBadSingleton_0 = MyBadSingleton;
console.log(MyBadSingleton_0);
И результат консоль лога никак не изменился. Тогда зачем круглые скобки?
Сохраняешь объект в джейсон и из него хэш высчитываешь.
Почему не пользуешь короткую форму? Для читаемости?
типа {(onChange) => myMethod(a ,b)}
мимо ждун
>Тогда зачем круглые скобки?
Вебпак это машина, а не человек. Ему поебать что там у тебя. Он оборачивает выражение в скобки по шаблону.
Когда перестанешь страдать хуйней с транспайлерами и начнешь писать ванильный жс код?
Просто можно запихать в инпут или нужен этот ваш фетч?
>Ему поебать что там у тебя. Он оборачивает выражение в скобки по шаблону.
Спасибо огромное, а то я просто понять не мог, это что-то значит или нет, эти скобки.
>Когда перестанешь страдать хуйней с транспайлерами и начнешь писать ванильный жс код?
Я пытался в браузере посмотреть этот код с импортами. И браузер не дал этого сделать. Сказал, что CORS policy запрещает вам импортировать хуй знает что.
А я тогда вебпаку дал импорты.
Где-то в сентябре начала, посмотрел курс от Минина, но только до момента, когда он начинает объяснять Redux, попробовал себя в написании хоть чего-то, сделал какое-то подобие мессенджера на Web-сокетах, и не дописал парочку интерфейсов для некоторых API, потом посмотрел еще несколько часовых роликов для начинающих и сделал то, что показал вам, дня за три сделал.
Ну и справку я еще всю прочитал, но она совсем небольшая же... Занимался я периодически, но не каждый день, иногда и не каждую неделю, и мне кажется, что я совершенно ничего еще не знаю, не уверен, что про меня можно сказать, что я что-то учил
Да, пытался написать так, чтобы это можно было прочитать, но получилось ли, я не знаю
А я все еще вкатываюсь, уже сколько времени прошло, как я зарегистрировался на github...
>Если тебе это не интересно, вкатываться смысла нет.
90% и среди вкатунов, и среди работающих в айти занимаются этим ради бабок. Если тебе повезло быть тем, кому интересно этим заниматься, то молодец, возьми с полки пирожок. А вот со своей демотивацией иди нахуй
Откуда мне знать. Я вообще хуже всех. У меня гитхаб с 2016 года зарегистрирован. А я до сих пор не вкатился. А мои старые одногруппы с технической шараги уже в 2015 году работали разработчиками. Так что я хуже всех.
А ты пробовал искать работку?
Меня вот психолог убедила зарегистрироваться на hh и меня даже позвали на предварительное собеседование с HR, а потом дали задание сверстать табличку на React, а это как раз была первая неделя, как я с ним познакомился, естественно все получилось так плохо, что меня не взяли, но в душе появилась надежда, что я еще смогу
Так эти твои 90% перегорают через год. Отсюда и такая текучка и нехватка кадров, при казалось бы перенасыщенном рынке специалистов.
По фронтенду не пробовал. Я так чисто на всяких максимум дноработах работал. Лет так через дохуилиард я однажды вкачуся.
Давным давно вкатывался в JS, но перед этим учил HTML и CSS.
Но все это было галопом по европам, короче говоря, суть я помню, но деталей нихуя, к примеру, верстать прям как профи я так и не научился. Потом какой-то черт меня понес в ДЖАВУ ЕБАНУЮ и я словил дичайший депрессняк с нее (в основном из-за ебаного спринга ебать его в жопу) и с моих попыток вката в айти (наверное попытка вката в джаву была ошибкой).
В общем, пытаюсь начать сначала, но в этот раз двинуть в сторону ноды и тайпскрипта/реакта. Но в этот раз осознанно и не галопом.
1) Короче говоря, есть ли смысл такого действа?
2) И второй вопрос. Есть ли смысл покупать тренажеры HTML академи? я вроде слышал что в JS нужно быть прежде всего сильным версталой, прежде чем двигать дальше. Ну и когда-то смотрел их курсы по верстке, мне вроде зашло.
(алсо, от себя хочу добавить, все таки частичка позитива во мне осталась, ибо после попыток разобраться в этом говно-спринге ебаном, есть надежда что нода с каким-нибудь фреймворком зайдет проще).
Кто-то перегорает, кто-то нет. Глупо полагать, что каждому человеку нравится его работа. И если в то, что относительно многим нравится аутировать в какие-то свои пет-проекты, я еще готов поверить, то рабочий процесс и само по себе обучение явно большинству в тягость.
Сейчас бы перегорать через год, когда уже можно спрыгнуть на мидла в другую контору, сразу на сотыгу.
его я тоже пробовал слегка, перед тем как в джаву вкатиться. Говно говна, мало чем от джавы отличается
Ну смотри, тайпскрипт и сишарп созданы одним человеком, а NestJS копирует spring
Тренажёры академии можно бесплатно на Новогоднем челендже с 1 по хуй знает какое, наверное, по 9 января проходить. А ещё там можно попытаться выиграть базовый интенсив по хтмл, цсс.
В прошлый раз в Новогодней битве приз был профессия фроненд-разработчик. А сейчас приз обеднел дохуя. Прошлый раз там какой-то олд приз выиграл, на сайте академии есть пост с его рассказом, как он побеждал. Он тупо сел и 16 часов ебашил очки в битве. И победил.
Ты можешь сейчас также попробовать. Первого января начать очки в их челендже по беспределу фармить. Если тебе, конечно, вообще нужен этот базовый интенсив хтмл, цсс. Многим базовый не нужен.
Кстати победивший олд на арене не выступал. Он только на тренажерах очки хуячил 16 часов без перерыва.
>Ты можешь сейчас также попробовать. Первого января начать очки в их челендже по беспределу фармить. Если тебе, конечно, вообще нужен этот базовый интенсив хтмл, цсс. Многим базовый не нужен.
Чел, интенсивы эти мне нахуй не нужны, я могу их с торрентов спиздить.
Я вообще насколько котируется этот HTML academy в плане всего что касается верстки и до JS (не включая, там как я понял Кантор золотой стандарт)?
Чисто технически как писать хтмл, цсс - хтмлакадемия неплоха. Но там дизайнерские моменты умалчиваются. То есть как резиново адаптивить вёрстку в разных случаях жизни там умалчивается. Предлагается по отдельности покупать за тонны денег их проекты и навыки, где описывается как и почему в этом проекте-навыке и что было свёрстано.
Какой-то ты агрессивный. Нахуй тебе что-то пояснять.
в гугле не систематизировано. Помню когда только начинал, хтмл академи мне прям зашел. Но я растерял все полимеры. Вот хочу наверстать. Поэтому и спрашиваю про их тренажеры.
Не трать время. Во фронт обывалам сейчас нереально вкатиться. Конкуренция дикая. Если так долго вкатываешься, и тебя швыряет по разным темам, то шансы свои против гигазумеров 200iq ты сам понимаешь какие. Поинтересуйся статистикой по откликам на одну вакансию по стажировке в разных направлениях и сравни с фронтом (чтобы не думал, что я тебя пытаюсь наебать или задизморалить)
Мне нужно знать когда блок поменял X Y.
Я их прошел все, кроме тех, где надо верстать с флоатами и отправлять сайт на проверку и валидацию. В принципе, очень полезная штука, но т.к. я много там экспериментировал, гораздо полезнее было бы открыть, например, doka.guide, начать верстать и уже самостоятельно ставить свои эксперименты.
В общем и целом прикольно.
Никак. Возможно IntersectionObserver и MutationObserver помогут тебе хотя бы частично решить проблему
Сами по себе эелменты положение меняют только в твоей палате, чтобы это нужно было отлавливать.
>Я вообще насколько котируется
Любые курсы не котируются, а кардинально наоборот, являются признаком тотального зашквара и показателем того, что перед тобой конченый тупой долбоёб.
>Я вообще насколько котируется
Любые курсы не котируются, а кардинально наоборот, являются признаком тотального зашквара и показателем того, что перед тобой конченый тупой долбоёб.
Ссылка на запись находится во втентаклии академии, там она такая:
Записаться на бесплатный новогодний челлендж —https://tml.io/xbwt9
О бля, появилось. Отмена
Нахуй пойди, клован.
У тебя может с апи что-то полминуты ехать, и хуй ты знаешь какие тебе размеры нужны пока оно не приехало
Крутил сегодня их полдня, чото не спасает.
У меня не происходит мутаций как таковых, в том компоненте который я хочу отслеживать. У меня картинки грузятся поочереди, и этот компонент уезжает вниз. Мне надо знать на сколько
Рандомно потыкал и так получилось.
Ну там грузится 30 картинок, на кажждую подписываться отписываться? Чот такой себе план
Там сложная динамически создаваемая страница, и мне надо у одного из многих компонентов отследить когда (куда) он уезжает на перерисовке.
Страница формируется в зависимости от прав пользователя и ебилона фильтров.
Строго говоря я не ебу когда и сколько к нему на морду поедет, да это и не особо мне нужно. Я точно знаю что один из компонентов в конце загрузки уедет вниз, и вот мне надо знать на сколько.
Теперь основной вопрос. Сильно ли менее эффективным и продуктивным будет вкат через практически чистую практику? То есть начать с каких-то видео на ютубе, где делают простейшие проекты на js, повторять за автором, попутно гугля всё непонятное и осваивая на практике; затем пытаясь сделать уже что-то своё, а не повторять, продолжая гуглить всё непонятное; перед собесами полирнуть имеющуюся базу знаний при помощи "топ вопросов на собеседовании на позицию junior" и просто теории?
Так послушай сюда, я бы посоветовал тебе прочитать статьи на mdn в оригинале, например, все туторы по жс отсюда:
https://developer.mozilla.org/en-US/docs/Web/JavaScript
Если что-то не понятно, то ты это гуглишь и смотришь видео (всё на английском). Английский для чтения мдн ты освоишь достаточно быстро, потому что во всех доках одни и те же слова повторяются
MDN как справочник лучше (хотя навигация местами запутана),а вот статьи для вката у Кантора понятнее
Что за пометки? Ты наймом занимаешься чтоли
Дрочи консольку постоянно, т.е. прям в браузере нажимаешь ф12 и тестишь всякие методы какие интересно, практика там есть в некоторых разделах. По поводу видосов: можно глянуть для общего развития как делают приложения на реакте, на ваниле нахуй не надо. Обучающие видосы смотри только если не понял на мдн тему
>>49880
Я его тоже читал, но сложилось впечатление, что мдн лучше в плане туториалов. Можно и то, и то читать. И + чел сказал, что Кантора он уже читал
Спасибо!
Приложения пишутся на фреймворках же. Т.е. смысл смотреть как делать приложение на ваниле? Ну тоже для общего развития если только, но это уже advanced подготовка
Я зря учу жс получается? Можно было сразу реакт учить? А чем ваще они отличаются? Я думал реакт это как бы расширеный жс, в чем я не прав?
Вкат, как я понимаю, займёт около года, если не больше. За это время планирую свести к минимуму все свои беды, уже лечусь у психиатра.
На дваче принято только устранять конкурентов, сгущать краски, преувеличивать и преуменьшать все крайности.
Используй инструменты для нагрузочного тестирования, а не в куличики играй.
реакт это просто код на жс, естесна нужно знать жс малый, я ваще говорил про то что нужно забить на видосы, где приложуху делают на чистом жс без библиотек и фреймворков
chart.js
Не знал про такой, спасибо
Не прав в том что слишком обобщаешь личный опыт. Есть куча мелких контор, где нет никакого hr фильтра. Может чела бы устроила работа в такой конторе. Если тебя такое не устроит, то не значит другого не устроит.
В моем родном городе такие мелкоконторы ищут рякт мидла за 40к. Но да, скорее всего там на софт скилы пофигу
>куча мелких контор, где нет никакого hr фильтра
В такой гавношараге он во-первых сам через неделю заплачет и убежит звать маму. Хотя скорее выкинут за то что
>Я тупой и медленно обучаемый
В мелких конторах нет времени на раскачку и прочий онбординг, ты должен сесть и хуярить
Чел, как будто никто в мелких галерах не работал, кроме тебя... Работал я одно время джуном, какую то большую хрень почти год пилил, потом ее выкинули. Разумеется эта задача выполнялась параллельно с другими более мелкими задачами.
Да 126%
Не работал никто с бедами башки, очевидно же. Там в стрессовой среде они точно не приживутся
Сидеть жопой на кресле в тепле в окружении воспитанных анальников это стрессовая среда? Расскажи еще про стрессовые среды. Хуячить на морозе на стройке с орущим полубухим прорабом лучше?
Ты по софтскиллам не впишешься. Потому что во-первых странный, во вторых
>тупой и медленно обучаемый
Я вписался 5+ лет назад. Какие такие софтскилы нужны в конторе с 5 анальниками большая часть из которых на удаленке?
Если для тебя физический труд это только низкооплачиваемая работа на заводе, то ты немного отсталый
>MutationObserver
С утра на ссвежую голову подписался на родителя своих ссаных компонентов, и всё завертелось
Спасибо, бро
>У меня картинки грузятся поочереди, и этот компонент уезжает вниз.
Шиз, тебе не следить за этим элементом надо, а навесить на твои картинки реальную ширину и высоту через атрибут или css, что бы контент не съезжал. Это прямо база фронта, знать надо.
>лечусь
>у психиатра
Проиграл. Ты главное нейролептиков побольше пей, тогда точно вылечишься.
Мимо шиз со справкой 100к/месяц
Сколько платишь?
Смотрите, допустим есть простой класс Task. Принимает имя таски и внутри есть метод rename который меняет это имя.
Например:
class Task {
name: string;
constructor(name: string) {
this.name = name
}
rename(newName: string) {
this.name = newName
}
}
И из этих экземпляров мы делаем массив. И потом отображаем как обычно - через map.
И вот мы решили что хотим переименовать таску. Запускаем метод rename на нужной таске и имя изменилось. Но реакт не видит это изменение.
Даже если засунуть этот массив в useState. Но если мы изменим нужную таску в массиве самостоятельно, а не через её собственный метод, то реакт это заметит и отрисует изменения.
Вопрос: что я делаю не так? Где я проебался?
что думаете про эту технологию?
So? ООП в реакте не нужен, ты про это?
Я вот как раз пытаюсь понять, либо я криво понимаю ООП, либо я криво его вкорячиваю в реакт, либо они просто не особо совместимы.
На вопрос "какие примитивы в жс есть" перечисляет "string, Object, Array..."
Я, питонист, и то хуею от такого
я прям представил, как ты анусиком зажимаешь какашечку, когда этот ответ пишешь
> не лечит
>посмотри
>Иди читай
Да, иначе больно выкакивать с моим геморроем в 22 годика.
>this.name = name
Так только vue работает, как работает реакт ты можешь узнать в разделе "Состояние" в документации.
А если симптомы снимать до конца жизни то это не лечение?
> Иди читай доку реакта с самого нуля.
Спасибо за ценный совет.
Я уже второй год как пишу на реакте. И понимаю что он не сравнивает стейт вглубь. Мне интересно как к нему ООП применить.
В доке этого нет. Если нечего сказать - пройди мимо, а не пукай в лужу
Зачем лепить к функциональному Рякту ООП ? За этим иди в Ангуляр: там синглтоны, фабрики, абстрактные классы, IOC.
Н
Потому что из каждого утюга ООП ООП ООП, ПАТТЕРНЫ
>>50542 (Del)
Большое спасибо, теперь врубился
Я сказал писать
Да,а вот писать реальные проги это ад
>Я уже второй год как пишу на реакте
>this.name = newName
Я аж сквозь монитор чувствую запах твоих обосранных штанов.
>Я уже второй год как пишу на реакте.
>Не додумался прочить за эти 2 года официальную документацию
https://ru.reactjs.org/docs/higher-order-components.html
Поясняй или это все таки твои штаны?
>>50643
Почему два анона сверху поняли мой вопрос и дали дельные советы, а ты никак не можешь понять его суть?
Проблема не в том, что рендер не происходит, а в том что я не понимаю как ООП прикрутить к реакту чтобы это было не ущербно. Причем тут вообще hoc?
ну пиши, потом переделаешь на реакт
Потому что тот вариант, что тебе предложил анон сверху это тот же самый HOC.
Добавить в массив блоков в начале пустой элемент?
>Когда считываешь детей родителя,массив начинается с 0?
>С 1 начинаются имена блоков
Что ты подразумеваешь под блоками? В JS нет такого понятия
И в html нет.
wrapper.forEach(function(element){
console.log(element);
element.backgroundColor="green";
});
}
Почему форич отказывается работать,типа это не функция
форич метод массивов, твой враппер - не массив.
Кидай ссылку ну стандарт, где это описано или твоя мать шлюха.
>как правильно называть файлы и раскидывать по папкам, как правильно стилизовать код, чтоб не зачмырили опытные товарищи?
Так, как тебе удобно. С опытом придет понимание, с чем удобно работать, а с чем - нет.
Элемент неявно имеет тип "any", так как выражение типа "any" не может использоваться для индексации типа "LintResult"
Понятно, что ему тип индекса не нравится. Но как его к другому типу-то привести?
%this.cdr.detectChanges() ох вэйт, у реактоотребья нет cdr%
>Вопрос: что я делаю не так? Где я проебался?
>Где я проебался?
>React
Действительно, где?
Мимо-нагуляро-боярин
Если я храню это только в рамках этой формы, то там же архитектура идёт по пизде.
Если я всё делаю унифицировано через редукторы и стейт, то там же это всё будет храниться в стейте.
У нас гитом уже давно управляют через Алису.
Что за графический гит? Гитхаб десктоп что ли? Никто этим не пользуется, только новички и только кому на каких-нибудь курсах показали. Может версталы какие в веб-студиях мелких не умеют в консоль, но там может и гитхаба нет никакого.
> локально, для это конкретной формы
Тебе эти данные нужны только для этой формы? Если да - локально, если нет - редукс или контекст
Большинство через консоль.
Но у меня все равно стоит сурстри. Через него удобнее просматривать историю, ветки и делать некоторые операции. Вроде ребейза.
Но запускаю реально раза 2 в год. А так все через терминал прям в вскоде.
>Никто этим не пользуется, только новички
Ты скозала, манюнь?
Я охуеваю от самомнения пориджей.
Мимо-синьор-помидор, пользуюсь исключителоьно мордами для гита. Консоль нахуй не нужна.
Я все делаю в терминале. Я ъ погромист. Мам, ну скажи им уже
> метафизическое программирование троичной логики на сталин.ос
1) не метафизическое, а материалистическое
2) не троичной, а диалектической
А с меня наоборот, в первый же день и бэки и фронты кекали что я консольку пердолю, когда есть юи в жыдбрейнсовых идешках и гит десктоп.
>>51393
Блять, я думал, я единственный в мире нахуй, кто об этом думал и читал. Братишки, спасибо вам.
Камон, гайз, подскажите.
Ну да
>>51611 (Del)
>>51618 (Del)
>>51611 (Del)
>>51609 (Del)
>>51605 (Del)
>>51599 (Del)
>>51594 (Del)
>>51589 (Del)
>>51585 (Del)
Пиздуйте в /po/, сраные коммишизы. Мы тут предпочитаем кнопочки красить всеми цветами радуги, а не ваши шизопасты читать.
Следует. Пространство непрерывно --> между любыми двумя точками пространства найдется третья --> промежуток между двумя точками оказался разделен на два промежутка средней точкой --> пространство делимо.
>реальности бесконечности существовать не может
Находясь в макроскопическом приближении, бесконечность существует (просто потому что планковский масштаб, на котором обнаруживается дискретность пространства и времени, несоизмерим с макроскопическими величинами, а значит, пренебрежимо мал в сравнении с любой макроскопической величиной, до какой бы мы не доделились). А вот в планковском масштабе да, появляется дискретность и бесконечность пропадает. Поскольку речь идет о макроскопических явлениях, то говорить о бесконечно большом количестве промежуточных состояний позволительно и никакой ошибкой не является, а ошибку здесь как раз ты допускаешь, поскольку не понимаешь диалектику микро- и макромира.
>Тут же логическая ошибка и путаница между реальностью и математикой. Из непрерывности никаким образом не следует бесконечная делимость.
Давай тогда сначала поинтересуемся, какое у тебя представление о непрерывности?
>Еще раз, ты не понимаешь, что такое "бесконечность". Бесконечность это не "дохуя" и не "в охулиард раз больше". Бесконечность - это quantity without identity, т.е потенциал. Сколько ты не возьмешь из бесконечности вещей, в ней всегда потенциально будут еще вещи. И как таковая она может существовать только на бумаге, потому что в реальности у всего есть identity, т.е строго определенная ограниченная сущность, никая вещь не может быть "всем одновременно и ничем конкретно".
Еще раз - ты зачем-то ищешь расхождение между математическим конструктом и реальностью, в то время как я тебе говорю про понятие бесконечности. Чувствуешь разницу?
Ты говоришь о какой-то абстрактной бесконечности с вакууме. Я тебе говорю про понятие бесконечности, которое для макроскопического приближения подходит, для микроскопического не подходит.
Список из базы данных для страницы - это локально делать или через редукс? Я условно понимаю, что чекбокс на форме логина - это всё таки локальные данные и прогонять через редукс не надо. Везде вижу два подхода - на одном на каждый пук делают дисптач, на другом - в стейте храниться минимум данных, но где же тогда ваша архитектура в таком подходе будет?
Ты должен хранить всё ДОМ-дерево в редуксе. Да и сам редукс по-хорошему надо хранить в самом себе.
Понял, так и сделаю в нашем новом проекте в конторке.
Почему когда просто меняешь окна фотографии сжимаются так нужно, а когда через инспектор device toolbar то по-другому? Как это работает
У меня и так и так одинаково сжимаются, опиши как воспроизвести, подробнее, со скриншотами или видео.
Опять же, если у тебя этот список надо использовать в одном компоненте - то храни локально. Если же в двух и более - контекст и/или редакс.
>о. Везде вижу два подхода - на одном на каждый пук делают дисптач
Палю тебе годноту: описывай всю логику через диспчетчеры/стейт внутри контекста и заверни их в хук. Лучше еще никто не придумал.
Достаточно знать все существующие структуры данных. Когда тебе нужно эффективно с ними работать, ты идешь и разбираешь конкретнве алгоритмы, под конкретные структуры.
А какие существуют? Всякие стеки/очереди/связные списки/деревья/многомерные массивы/сеты/хэш-таблицы?
А разбирать алгоритм по О, доказывать конкретное решение - это не нужно?. У меня просто школьные знания непрофильного класса. На codewars это не станет сильной проблемой, например?
Разумеется понимать что такое алгоритмическая сложность нужно, ровно как и то, какие преимущества у каждой из структур данных, когда какую нужно принимать, и уметь применять эту эрудицию и анализ. А не просто по списку заучить что там есть. Но это все не математика, а информатика. Математика применяется уже в конкретных импементациях алгоритмов по работе с конкретными структурами - сортировки, обходы, поиск, вставки и так далее. И под каждую структуру полезнее и оптимальнее изучать\подбирать алгоритм по фатку. Заранее почти нет смысла все это изучать.
>Всякие стеки/очереди/связные списки/деревья/многомерные массивы/сеты/хэш-таблицы?
Да, открываешь википедию, и там они все перечислены. И по связным страницам тоже. И в категориях тоже. И читаешь как русскую, так и английскую.
В программировании (вообще), как и в любой инженереии, важна эрудиция - то есть широта твоих познаний, чтобы ты мог под конкретную проблему знать что именно тебе туту нужно, или что именно подошло бы. Грубо говоря знать что ИСКАТЬ. А не помнить все и всегда.
То же самое относительно все возможных проткоолов, апи библиотек, самих библиотек, языков, фрфеймворков, и прочего прочего прочего. Ты должен быть в курсе, чтобы когда понадобиться смогу найти и изучить под конкретную проблему, а не бегать с идиотскими воросами по тредам на дваче, потому что не в стостоянии сформулировать список клучевых слов.
И если ты задаешь вопрос кому-то, вместо того, чтобы найти ответ сам - это триггер твоей неспособности в этот самый поиск и самообучение.
Читайте книги, читайте статьи, читайте ветки комментариев 5-10-20-30 летней давности на форумах. Интернет просто кишит информацией. Не тратьте время на то, чтобы задать вопрос, который уже тысячу раз обсосан и получить на него в лучшем случае нерелевантный ответ, а в большинстве своем посыл нахуй. Пойдите - и найдите эти ответы сами.
Куда вы лезете? Остановитесь! Прежде, чем все эти факториалы писать, научитесь хотя бы тестами покрывать свои программы. А то блять, им факториалы нужны, а проверять корректность работы программы не нужно. Научитесь вначале:
1) Дебаггингу.
2) Написанию тестов.
3) Написанию документации.
4) Принципам как работают линтеры.
5) Как работать с гитом (CI/CD, Git flow и т.д.)
А потом уже можно говорить про какие-то алгоритмы и прочее.
>А разбирать алгоритм по О, доказывать конкретное решение
Бля, ты бы лучше научился пользоваться ПРОФАЙЛЕРОМ. Не всегда имеет смысл всё оптимизировать. Что-то нормально работает и так. Нубы концентрируются на малозначительных аспектах. Например: у тебя есть какая-то функция, которая отрабатывает за 5 миллисекунд. Допустим ты пишешь супер-пупер алгоритм, который работает в 2 раза быстрее. Итог: ты сэкономил 2,5 миллисекунды. ВАУ, ПИЗДЕЦ вот уж экономия так экономия.
Зачастую, оптимизация селекторов/замена библиотек на более легковесные даёт гораздо больше выхлопа, чем знание/применение О-нотаций.
>И если ты задаешь вопрос кому-то, вместо того, чтобы найти ответ сам - это триггер твоей неспособности в этот самый поиск и самообучение.
Сразу видно задрипанного асоциального омежку, травмированного СНГшной системой образования. У нормальных людей нет проблемы если что задать вопрос и получить помощь, это называется кооперация и работа в команде.
>А разбирать алгоритм по О
Не нужно, во-первых реальные математические алгоритмы ты не пишешь, если не математик, во-вторых ты вряд ли за всю свою карьеру столкнешься с проблемой оптимизации на уровне алгоритма.
>доказывать конкретное решение
"Доказать" в математическом смысле никакую программу нельзя, даже в случае с алгоритмом, ты не доказываешь программу, ты доказываешь алгоритм и делаешь это на бумажке. Как только алгоритм покидает бумажку и оказывается в компьютере, то все твои манядоказательства не стоят нихуя, потому единственный способ проверить работоспособность реальной программы - это выполнить ее и посмотреть на результат.
Стоит ли углубляться в классы на TS?
severity: keyof LintResult
Только начал учить Typescript и уже разочарован. Я думал это строгий язык, а тут такая же дрисня с автоприведением типов.
Только начал учить и уже обосрался. И ведь вместо того, чтобы постирать обосранные труханы, побежал с ними на площадь
Что тебе не нравится? В самой операции строка + число нет ничего нелегального.
Еще и не запрещает проводить вот такие операции, а высирает NaN без всяких ошибок. Потом этот NaN можно совать как number в функции и тоже никаких проблем. Кто-то где-то косякнет в глубинах кода и потом ищи-свищи, когда код формально работает и никаких проблем. Вот это понимаю типизайшн.
Ты пидорас
>юзает функцию для привидение чего угодно к числу
>удивляется, что она принимает что угодно и приводит к числу или NaN
Какова ваша позиция по поводу TypeScript?
Гавно? Кринж? бейст?
Взлетит ли этот очередной фреймворк или забудетеся через пару месяцев
Закрывайте тогда сию лавочку
Что делать, если я попал на легаси-проект, где нет TS?
Есть ли смысл его каким-то образом внедрять?
>Какова ваша позиция по поводу TypeScript?
Хз, если честно. У меня смешанные чувства к нему. Если использовать для несложных приложений - то там пойдёт, всё классно. Но как только начинаешь использовать для парсинга длинных апи - к примеру приходит ответ от github'а, там 500 полей и всё это нужно распарсить. Ты начинаешь всё это описывать, это такооой геморрой. Ты тратишь больше времени на описание типов, чем на реальное написание кода.
Особенно бесполезен typescript в тестах. Если я специально хочу подсунуть функции неверный результат, скажем, вместо string передать null. Он такой пишет, типа... ожидалось string, а получили null. Я такой думаю "бля, чувак, да я знаю что там должен быть string! Я просто хочу проверить как функция обработает null!" Приходится забивать такие места //@ts-ignore. А если в тестах подгружаются json-данные в качестве mock'ов, то задолбаешься это всё приводить. Опять везде ставишь //@ts-ignore. В итоге, получается говнокод, нужно отключать typescript для тестов.
На мой взгляд, рационально typescript использовать там, где строгие типы действительно нужны. Типа, в опен-соурс библиотеках. Или в серьёзных финансовых приложениях. Ну а если это простое приложение, то там тебе по барабану, какой тип выведется на экран, что string, что number. Можно без задней мысли обычный propTypes использовать. Опять же, если какая-то длинная колбаса приходит с API, то там логичнее взять библиотеку для валидации, типа joi. У него функционал помощнее, он может сам приводить типы, если нужно. А typescript'у пока пинка не дашь, он сам тебе типы не приведёт...
Чисто моё оценочное мнение, возможно я чего-то не понял. Не претендую на истину в последней инстанции.
есть лучше этого?
let rand_num=Math.floor(Math.random() * (max - min + 1)) + min;
>Ты начинаешь всё это описывать, это такооой геморрой
Куда пизже потом ебаться с этми полями, гадая что куда приходит. Вот это тру экспириенс настоящего Мужика блять
А почему случайные числа не могут быть одинаковыми?
https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues
https://github.com/ai/nanoid#custom-alphabet-or-size
Так нужно для проги
>как функция обработает null
Проиграл с дебила. ТС и сделан для того чтобы не писать такие тесты. Если у тебя всё таки она может получить null, значит указываешь типа аргумента string | null и уже после тестируешь.
Просто дегроды часто пишут
function someFun(x: string): unknown { ... }
А потом где нибудь в коде у них вызов вида:
const x: any = null;
someFun(x);
И после этого бегут кричать РЯЯЯ ТАЙПСКРИПТ ХУЙНЯ НЕ СПАС ОТ ОШИБКИ!!
Так мне и нужно неверный тип протестировать? Я специально кидаю не тот тип данных, чтобы посмотреть, вывалится ли функция или нет.
Зачем это тестировать, долбоебина? Как этот тип там появится? Просто магическим образом? Если у тебя такая вероятность существует, то тебе не тесты писать нужно, а код менять, включая стрикт мод у тс, запрещая неявные any, добавляя ассерты которые будут выбрасывать исключения, если ожидал получить x, а получил y.
>Внедрять/переписывать кто будет?
У меня сейчас есть один единственный модуль в подчинении. Ну там файликов 10 js
Весь этот модуль - отдельная директория в репозитории. Я могу какбы невзначай заливать в git скомпилированный TS->JS файлы и никто не заметит разницы.
А при увольнении сказать правду, что был коммерческий опыт с TS
>Как этот тип там появится?
По апи прилетят. Я тестирую как сработает приведение типов, если что-то неожиданное прилетит/я опечатаюсь/etc. Это лично моё мнение, никому не навязываю, не хочешь - не тестируй.
Для апи есть ассерты. Если опечатаешься, то получишь ошибку на этапе компиляции.
Тестируй что хочешь, главное не лезь со своим мнением в тред для новичков, а то ведь они примут за истину и начнут повторять твои тупые высеры.
Ой блин, случай иди ты к черту. Мне без всяких взрывных токсиков кислоты хватает. Лень с тобой в перепалку вступать.
Тайпскрипт делает любой проект больше туду листа нечитабельным неподдерживаемым говном, где ты для любого изменения половину времени дрочишь типы, чтобы конпелятор перестал ругаться на абсолютно бессмысленную хуйню. Единственная причина, почему он стал популярен - это потому что жс-мартышки не умеют писать тесты, а любой код без тестов через месяц написания превращается в легаси, которое страшно трогать - это известный факт в программировании. Мартышки это конечно заметили, и заметили говняное качество своего кода, но вместо того, чтобы решать проблему отсутствия культуры тестирования, начали искать обходные пути и почему-то решили, что уж если ввести типизацию, то точно все исправится. Но только типы тесты не заменяют и уверенности в работоспособности программы не дают. Поэтому теперь мартышки на том же месте, что и раньше, но теперь кроме рантайм багов им нужно ебаться еще и с конпелятором.
Что больше кушает ресурсов, постоянный вызов функции с .bind в классе или же постоянный вызов метода с передачей класса в качестве аргумента? .bind просто оставляет адрес области вызова, передача аргумента в жс дается через референс, можно сказать тоже обычная строка адреса. Поэтому хз.
В отладчике моззилы так и не понял куда смотреть чтобы получить нужную инфу, но вроде память не зависает поэтому чистильщик делает свое дело, хотя при определенной передачи аргумента класса и у меня все висло.
>любой проект больше туду листа нечитабельным неподдерживаемым говном
Наоборот же. Типы сильно ускоряют работу, потому что ты знаешь что туда должно приходить и не надо чекать доки и код функций. Если тебе в масштабе это усложняет работу, мартышка - это ты. Представляю тогда какая у вас там каша без тс.
Ну я не говорю сейчас про ФПшников, там всегда нечитабельное говно. Ну они вообще в своей отдельной касте опущенных, с ними никто серьезно не считается, так что похуй.
В чем проблема ПРОСТО писать тип в названии переменной? int_a, str_b, arr_c, и не нужен никакой тайсквирт.
Тебе не дебаггер могилы смотреть надо, а дебаггер движка на котором мозила работает. В хроме это в8, у них даже есть для этого специальные отладчики которые тебе всё покажут и расскажут.
Я ставлю на то что класс передавать в виде аргумента производительнее, так как bind это лишний вызов метода
У этой хуеты стайлед компонентс стили дублируются в прод билде
Неразрешенный ишью висит с 2016 года
Не знаю какая она там охуенная
Типичное заблуждение типомартышки, которая думает, что программа ограничивается типами данных, которыми она оперирует. С чего ты решил, что указание типов на принимаемые функцией аргументы могут тебе дать хоть какое-то представление о том, что эта функция делает и для чего служит? Если ты это представление не получил из названия самой функции и названий ее аргументов, то добавление перед этими переменными сигнатуры "int" никаким образом дело не улучшит, все равно нужно либо лезть в тело функции, либо в документацию, и ты шизик, если думаешь иначе.
Не, сейчас потестил варианты, в моем случае разницы нет, все равно отсылка к области делается так или иначе, это неизбежно.
class Poke
{
setStart ()
{
let obj = this;
function start (obj)
{
window.requestAnimationFrame(() => start(obj));
}
window.requestAnimationFrame(() => start(obj));
}
finish ()
{
window.requestAnimationFrame(() => this.finish());
}
setFinish ()
{
window.requestAnimationFrame(() => this.finish());
}
}
let poke = new Poke();
poke.setStart();
poke.setFinish();
>>52556
Оке, чекну
Не, сейчас потестил варианты, в моем случае разницы нет, все равно отсылка к области делается так или иначе, это неизбежно.
class Poke
{
setStart ()
{
let obj = this;
function start (obj)
{
window.requestAnimationFrame(() => start(obj));
}
window.requestAnimationFrame(() => start(obj));
}
finish ()
{
window.requestAnimationFrame(() => this.finish());
}
setFinish ()
{
window.requestAnimationFrame(() => this.finish());
}
}
let poke = new Poke();
poke.setStart();
poke.setFinish();
>>52556
Оке, чекну
Эта фича так же генерит 2 одинаковых числа
Судя по твоему коду-ты вообще не понимаешь, что происходит, когда происходит тот или иной вызов. Ты пишешь код не приходя в сознание абсолютно.
Ожидание:
>Типы сильно ускоряют работу, потому что ты знаешь что туда должно приходить
Тайпскрипт проект:
>value?: string | number | string[] | number[] | boolean | undefined;
>вместо того, чтобы решать проблему отсутствия культуры тестирования
Ты сперва научи объяснять кабану, что он будет тратить деньги и время на тесты и потом хоть обпишись
Ой, как ты "научил кабана", что он будет тратить деньги на твое писание типов? Давно заглядывал в файлики с тайпдефинишенами, где лежат сотни строк напечатанного ручками кода, которого в обычном жсе бы и близко не было? Как же ты перед кабаном оправдывался, что вместо работы заполняешь эти файлы, а не пишешь бизнес-логику? А правильный ответ заключается в том, что процесс разработки - это дело разработчиков и идти он должен всегда на их усмотрение, хоть типами ты обмазываешься, хоть тестами. Бизнес нужно только знать сроки, за сколько ты сделаешь, и если его эти сроки устраивают и ты их выполняешь, то хоть в жопу там ебитесь.
Выполню без типов за неделю. На поддержку и фикс багов будет уходить минимум месяц ежегодно.
Выполню с типами за две недели. На поддержку и фикс багов будет уходить от 0 до 3 дней ежегодно.
Даже кабан разницу поймёт и начнет топить за типизацию
Выполню с тестам за неделю. На поддержку и фикс багов будет уходить день ежегодно. Зови кабана и увольняйся.
Ок, токсик, есть что по делу кроме этого пука?
Манюнь, наличие типизации или её отсутствие никак не влияет на необходимость написания тестов. Отличие лишь в том, что твоё нетипизированное дерьмо вообще не может функционировать без тестов., в то время как типизация позволяет свисти их наличие к минимуму
Наличие тестового покрытия уничтожает нужду в типизации, потому что тебе не нужно знать, сходится ли твоя программа по манятипам, если ты знаешь, что вся бизнес-логика внутри этой программы работает. Вот наличие типизации как раз не влияет на нужду тестов, тебе нужно писать все те же самые тесты, потому что программа - это не набор типов, которыми она оперирует и "конпелятор не заругался" никаким образом не переводится в "программа работает как надо".
сап двач даунич снова на связи, пришел вас повеселить.
только что сидел решал задачу на кодварс пик1
и мое решение пик2
можно выкатываться или еще покопротивляться ?
а, забыл добавить шо я пол часа проебал
Еще 5000 задач прорешай там посмотрим
Ага, а потом получаем дебилов и их тесты вида «а вдруг мне null передадут в метод». Будешь хуячить обработки всех возможных случаев, лишь бы типизацию не вводить? Ну поздравляю, теперь пользы от отсутствия типизации нет, так как написание программ стало ещё дороже и медленнее.
Это ещё если исходить из твоего манямирке в котором каждый кейс покрыт тестом и на любой функционал у тебя сразу же пишется интеграционный тест.
Функция же может в себя принимать только string, int, bool? А если там сложный обьект?
>>52580
Кто так вообще пишет?
У тебя "?" есть, зачем добавлять undefined?
Если у тебя одна переменная столько разных типов принимать может - что то идет не так.
>>52573
Ты с С# пришел? Че за перенос строки для скобки?
Ты реально поехавший. Какой смысл у этого кода кроме рекурсивного (почти) вызова 3 методов друг в друге? От этого и зависвает.
Тайпскрипт проект программиста, а не жс макаки:
>function hasData(value: unknown): value is DtoWithData {
return “data” in value && value.data !== undefined;
}
>Ага, а потом получаем дебилов и их тесты вида «а вдруг мне null передадут в метод»
Но ведь ты и есть такой дебил, если думаешь, что тестирование - это проверки на null, а не описание правил бизнес-логики. Типичный тайпскрипт шизик, который в жизни не написал ни одного теста и думает, что без типизации код и тесты к этому коду будут выглядеть как на пике1, а не как на пике2. Точнее не думает, это слишком дебильно даже для него, а просто пытается подменять в виде соломенного чучела, потому что других аргументов у него нет. А теперь скажи мне манька, зачем мне на втором пике проверки типов? Если кто-то туда захочет передавать непонятно что, то это его проблемы, а не мои, и его обязанность написать тесты под свой код и проверить, что он работает.
>А если там сложный обьект?
>Если у тебя одна переменная столько разных типов принимать может - что то идет не так.
Ответил на свой же вопрос. Что такое "сложный объект", если не "переменная, принимающая кучу разных типов"?
>ты с С#
Че, так палевно? Все же +- по пср12.
>ты поехавший какой смысл рекурсия
Ладно, я понял что в этом треде дальше первого курса никто веба не знает. Особенно этот >>52579 хуесос только срать и может на дваче.
В этом коде 2 подхода к функционалу, которые по итогу не сильно в корне отличаются по природе, из-за общего дизигна. И они прекрасно работают, к твоему сведению. Мне нужно было понять что эффективнее по сути. Плохо работал промежуточный вариант, но он и не должен был работать, я уже понял.
Изучайте https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame
Мне даже западло что-то объяснять, я за советом пришел, а не обучать.
>его проблемы не мои
>пусть тесты пишет
О, сразу зоопарком и макаками повеяло. Макака не работает в команде где каждый стремится помогать друг другу и не перекладывает ответственность на других, макака живет по закону джунглей.
В итоге получаем каскад багов и толпу взмыленных макак которые не могут найти источник и говорят, что его возникновение невозможно, ведь у них «БИЗНИС ЛОГИКА ПАКРЫТА ТЕСТАМИ!!!»
Но ведь это ты макака, которая перекладывает ответственность на других, если на полном серьезе считаешь, что "я передаю undefined в функцию, которая не принимает undefined и получают рантайм ошибку" - это не твоя проблема, а проблема человека, писавшего функцию.
>которые не могут найти источник и говорят, что его возникновение невозможно, ведь у них «БИЗНИС ЛОГИКА ПАКРЫТА ТЕСТАМИ!!!»
Ты не писал тесты, и не работал в окружении, где бизнес-логика реально покрыта тестами, иначе бы такой хуйни не порол. Баг в таком окружении в 99% случаев находится и фиксится за пять минут - ты добавляешь тест, который воспроизводит нужный сетап, смотришь что он действительно выбивает ошибку, фиксишь эту ошибку в коде, прогоняешь остальные тесты, чтобы убедиться, что твои фиксы ничего не поломали и можно деплоить на прод.
>которая не принимает undefined
А, ну то есть ты помнишь тело каждой функции проекта и что она принимает/не принимает? Или бегаешь и смотришь её имплементацию, тратя каждый раз время, вместо того чтобы писать с типизацией? Эффективность макаки эз из
Разумеется я не помню тело каждой функции проекта и не знаю, что она делает. И ты не знаешь, потому что то, что она делает не определяется принимаемыми типами, и из них это не вывести никаким образом. Так что это очередная подмена понятий с твоей стороны и попытка абсурдно заявить, что "если я знаю типы аргументов, то я знаю, что функция делает и как ей пользоваться".
Не перестаю проигрывать с животного.
Ты не сделал проверку на undefined, передал этот undefined в функцию, из за этого возник баг. О, смотрите, макака уже пишет тест который убеждается в том, что у нас присутствует проверка на undefined.
В это время господа с типизацией даже и не думают о таких багах и тестах, потому что на этапе компиляции поняли, что в этом месте нужна проверка на undefined и добавили её.
Теперь, макакен, объясни, в чём выигрыш отсутствия типизации? В том что нужно всегда исходить из того, что на проекте работают машины, а не люди и у них в мозг встроен аналог статического анализатора? Что такое макака, опять начнёшь кричать что кроме тебяникто тестовые писал, поэтому типизация не нужна?
>Ты не сделал проверку на undefined, передал этот undefined в функцию, из за этого возник баг. О, смотрите, макака уже пишет тест который убеждается в том, что у нас присутствует проверка на undefined.
Отсылаю тебя к >>52640 потому что ты:
>Типичный тайпскрипт шизик, который в жизни не написал ни одного теста и думает, что без типизации код и тесты к этому коду будут выглядеть как на пике1, а не как на пике2.
Тут вебмакаки и сидят, никто вручную не пишет анимации.
Ты пытался сделать чтобы анимацию можно было .start()/.finish() в любом месте? Попробуй start засунуть в какой нибудь setTimeout чтобы не блокировала поток.
Так с чего ты взял, что функция «не принимает undefined”, макакен? Ты ведь пишешь, что передача того что функция не принимает - вина того кто передаёт, вот я тебя и спросил как ты определяешь, что именно функция принимает? Тестами ты такое не покрываешь, имплементации не знаешь. У меня явно указан тип того что принимает функция, при этом мне даже обращать внимание не нужно на это, так как в случае ошибки компилятор сообщит об этом. У тебя то откуда такая информация взялась? Почувствовал что не принимает, потому что ты у мамы молодец?
Ну что и следовало ожидать. Аргумент макаки «ты тестов не писал». Как это влияет на отсутствие описанных багов, макака конечно же не скажет. Будет ссылаться на манямирок и его таинственную бизнес логику, которая покрыта тестами, твёрдо и четко. При этом сам выше написал, что в процессе фикса багов добавляются тесты, как же так, противоречие получается, ну ничего, главное спиздануть что типизация не нужна.
>Тестами ты такое не покрываешь, имплементации не знаешь.
Если работа с несколькими типами данных - это часть логики функции, то очевидна эта логика должна быть покрыта тестами. И лучше ты мне скажи, какое шестое конпеляторское чувство тебе даст понять, что именно делает функция doSomething(x: undefined | string | number), если в нее передать undefined и правильно ли в твоем случае его передавать? Неужто тебе для этого придется лезть в тело функции и смотреть, что она делает? Или о ужас, выполнять написанный тобой говнокод и смотреть на результат, чем тесты и занимаются?
Есть разница между магической всемогущей переменной и обьектом, где все четко распределно. Особенно как потом работать с этим.
>>52611
Ну нихуя ты молодец, написал тест, показывающий что сама функция работает правильно. Осталось не обосраться дальше в процессе обращения к ней в самом приложении. Ну да, напишешь тоже тесты для этого. Но насколько больше времени это займет?
Кстати, если функция работает над разными типа данных и возвращает результат на основе этих типов. Во всех адекватных языках (и в ts) для этого есть дженерики. А ты каждый раз вспоминать будешь? Неэффективная трата времени.
О, спешите видеть, макакен переобувается буквально в воздухе. Теперь оказывается тесты с 1 пика >>52611 всё таки нужны, сенсация. Теперь главное каждый раз посмотреть что там за тесты, либо пробежаться по телу чтобы понять «работа с несколькими типами данных - это часть логики функции» или нет.
> какое шестое конпеляторское чувство тебе даст понять, что именно делает функция doSomething(x: undefined | string | number)
Манюнь, в этом и суть, мне не нужно в это вникать. Я со спокойной душой передаю в эту функцию undefined и получаю нужный результат. А если я передам в неё неправильный тип, то сразу получу ошибку, в то время как макака вроде тебя узнаёт об этом только после запуска тестов.
>Осталось не обосраться дальше в процессе обращения к ней в самом приложении. Ну да, напишешь тоже тесты для этого.
Напишу, разумеется. Ведь единственный способ точно знать, что твой код действительно делает то, что должен - это выполнить его и посмотреть на результат, т.е протестировать. Других нет и быть не может.
>Но насколько больше времени это займет?
Этой займет ровно столько времени, сколько требует написание работающего кода. Неработающий же код я могу написать за 0 секунд.
>Кстати, если функция работает над разными типа данных и возвращает результат на основе этих типов. Во всех адекватных языках (и в ts) для этого есть дженерики. А ты каждый раз вспоминать будешь?
Вспоминать что? При работе с любой функцией первостепенное значение имеет то, что функция делает с передаваемыми ей данными, а не тип этих данных. Если ты не знаешь, что именно она делает, то знание "ну я хотя бы поддерживаемый тип передаю" тебе не даст абсолютно нихуя в конечном итоге.
>Теперь оказывается тесты с 1 пика 2252611 (You) всё таки нужны, сенсация
С чего ты взял, шиз? Почему ты решил, что работа с разными типами данных - это исключительно выкидывание рантайм ошибок(которые и так выкидываются, если ты попробуешь сложить undefined)? Уже устал от твоих соломенных чучел.
>Манюнь, в этом и суть, мне не нужно в это вникать. Я со спокойной душой передаю в эту функцию undefined и получаю нужный результат
Какой "нужный результат"? Ты не знаешь, что получаешь и что эта функция делает внутри. Ты знаешь тип, который пришел, и тип, который ушел. Все. Других знаний у тебя нет, и результат ты судить не можешь, пока не выполнишь код или не залезешь в тело функции.
То есть самому проверять через cookies key value??? Вы чё, могли бы легше сделать.
Загружай кеш при этом делая каждый раз запрос, на беке валидируй истечение и в таком случае не возвращай данные. Клиентам нельзя доверять.
>>52653
Ты про runtime говоришь, я говорю про сам процесс написания. Типы сразу покажут ошибку, тебе же придется дополнительно запускать для этого.
>Вспоминать что?
Результат выполнения функции для того что ты ей передал. К этому времени ты уже уверен что функция работает правильно, потому что написал тест который выше) Так же?
>и так выкидываются если ты попробуешь сложить undefined
Ясно. Иди нахуй.
> результат ты судить не можешь, пока не выполнишь код или не залезешь в тело функции.
У меня есть тип возвращаемого значения, этого достаточно для того чтобы продолжать писать код и не лезть на каждый чих в тела вызываемых методов и функций. Видишь как круто с типизацией, а ты и не знал.
Т. е. строишь логику так, что этот объект кэшируется и время жизни кэша привязано к значению кукис. В итоге в каждом месте где этот объект используется ты делаешь запрос, вот только он выполняется если кэш протух, иначе берётся значение из кэша.
>Типы сразу покажут ошибку, тебе же придется дополнительно запускать для этого.
Во-первых, типы показывают только ошибки при несхождении типов, а тесты показывают ошибки в бизнес-логике, и схождение по типам абсолютно не имеет значения, если твоя бизнес-логика работает как надо, потому что ты пишешь программу для выполнения этой логики, а не для удовлетворения конпелятора. Во-вторых, ты так же должен запускать конпелятор, чтобы тебе "показало ошибку", даже если он встроен в IDE, и настроить запуск теста при изменении соответствующего файла - это дело пяти минут.
>Результат выполнения функции для того что ты ей передал.
...который ты должен так же вспоминать в тайпскрипте, потому что типы тебе этого знания магическим образом не дают. Почему тайпскриптеры в каждом предложении так любят подменять "я знаю сигнатуру функции" на "я знаю, что функция делает внутри" и их нужно каждый раз тыкать в это ебалом?
Типы - большое ускорение работы с твоей бизнес логикой.
>ты так же должен запускать конпелятор
Показывает ошибки как eslint, я же не в блокноте пишу.
>потому что типы тебе этого знания магическим образом не дают
Дают, лол. Я же сказал про дженерики.
Ты же знаешь что это такое?
>function sum(x: BigInt, y:BigInt): string { ... }
Я знаю что функция складывает два больших числа и возвращает результат в виде строки.
>function sum(x, y) { ... }
Ну вроде что то складывает, но это не точно.
Чувствуешь разницу, макакен?
>Типы - большое ускорение работы с твоей бизнес логикой.
Ничем не обоснованное заявление.
>Показывает ошибки как eslint, я же не в блокноте пишу.
Которых их показывает каким образом, как думаешь? Примерно можешь почувствовать?
>Дают, лол. Я же сказал про дженерики.
Еще раз: знание типов, которые принимает/возвращает функция не транслируется в знание того, что это функция делает.
>Я знаю что функция складывает два больших числа и возвращает результат в виде строки.
В виде какой строки? Обычной с числами? Отформатированной? В строке лежат только числа или еще добавлено что-то? Почему функция sum возвращает строку, она что, ебанутая? И еще миллион вопросов, которые возникнут у любого нормального человека, который наткнется на такой говнокод, но тайпскрипт-шизик просто глупо улыбнется и пройдет дальше, ведь он же знает, что там строка, а значит знает все.
>какой положняк по стейт-менеджерам реакта в реально крупных (где в стейте пара десятков объектов по 200 ключей в каждом) приложениях?
Положняк не хранить в глобальном стейте 2000 записей, потому что это наверняка говонкод и проеб архитектуры. Глобальное - означает доступное отовсюду, стейт - означает, что эти записи постоянно меняются. Зачем тебе 2000 постоянно меняющихся записей, доступных отовсюду?
>Ничем не обоснованное заявление.
Личный опыт. У других поспрашивай, то же самое скажут.
>что это функция делает.
Это троллинг тупостью? То что она делает превращается в результат, который имеет тип. И этот тип ты видишь в момент ввода названия функции, без необходимости смотреть имплементацию. Ну это самый базовый пример. Есть куча других приятных мелочей типо тех же дженериков.
>Личный опыт. У других поспрашивай, то же самое скажут.
То есть ты просто пукнул "бля буду" без попытки обосновать, так и запишем.
>То что она делает превращается в результат, который имеет тип. И этот тип ты видишь в момент ввода названия функции, без необходимости смотреть имплементацию
Твой брат-тайпскритер уже дал дебильный пример, который как он думал, должен был что-то доказать. Попробуй за него ответить, каким шестым чувством ты там определишь, что лежит в строке и что функция сделала, зная только тип: >>52690
Я согласен, что там процентов 50 это нахуй не нужная инфа или дубль существующей, но вот остальные 50 процентов реально нужны в приложении. Там эти зачения используется в огромном количестве компонентов (их в проекте около 600).
> В виде какой строки?
Манюнь, ну написано же string, это обычная строка. Т. е. обычный результат сложения, но в виде строки, что тут удивительного?
> Обычной с числами? Отформатированной?
Видишь в кого тебя превратило отсутствие типизации. Ты шиз который видит везде подвох и хочет залезть в детали чтобы успокоить шизу. Для того чтобы выделить отформатированную строку от обычной в тс есть следующее:
>type FormattedString = string;
Охуеть как удобно, да? И самое главное гадать не надо!
> В строке лежат только числа или еще добавлено что-то?
А вот сайд эффекты это вообще плохо, независимо от типизации. Ну я не удивлён что ты этого не знаешь, ты ведь даун без типизации.
>Т. е. обычный результат сложения, но в виде строки, что тут удивительного?
Так а как ты это узнал, не заглядывая в имплементацию? Конпелятор нашептал? А этот конпелятор он сейчас с нами, в треде?
>А вот сайд эффекты это вообще плохо, независимо от типизации
Погугли, что такое сайд-эффект, шиз.
>Ты шиз который видит везде подвох и хочет залезть в детали чтобы успокоить шизу
At first I was like:
>ДА КАК ТЫ БЕЗ ТИПОВ ПОЙМЕШЬ ЧТО ТАМ НАГОВНОКОДИЛИ ВНУТРИ, НЕ ПРИНИМАЕТ ЛИ ФУНКЦИЯ SUM ОБЪЕКТ И НЕ ВОЗВРАЩАЕТ ЛИ ОНА DATE???
But then:
>ну и что, что я не знаю, что лежит в строке, я же не шиз, мне не нужны постоянные сомнения в чужом коде
>без попытки обосновать
Сейчас специально для тебя буду писать огромные примеры с замерами, делать мне нехуй.
>>52700
Логично что там будет результат сложения в виде строки наподобии '13'
Если бы там было что то другое - мы бы сделали для этого тип и при дальнейшнем использовании этого уже сразу понимали. Пока ты бы лез в имплементацию.
>>52706
Пока писал ответ увидел твой новый пост, я засмеялся с него. Ну это уже дурка.
Тут мы определили это по названию и отстуствию специальных типов.
Вот более правильный пример:
function processOrder(id: number): Invoice {}
Вот тут мы сразу видим что надо передать цифру и что вернется обьект с определенными свойствами. Не заглядывая в имплементацию.
По возвращаемому типу, долбоебина тупорылая. Если бы это была отформатированная строка, то в коде было бы следующее:
>function sum(x: BigInt, y: BigInt): FormattedString {…}
>Логично что там будет результат сложения в виде строки наподобии '13'
Каким образом это логично? Если я вижу функцию sum, которая вместо числа возвращает строку, то первая моя мысль "нахуя и что она там делает внутри, наверняка же не просто сложение и тайпкаст, иначе бы возвращала число", т.е залезть в имплементацию и посмотреть. Может у тайпскрипт-шизов мозг уже по-другому начал работать, но это ваши проблемы.
>Тут мы определили это по названию и отстуствию специальных типов.
То есть ты расчитываешь, что на каждую отформатированную строку все будут добавлять новый тип? Это болезнь такая?
>function processOrder(id: number): Invoice {}
Смотри, делаю магию: function createOrderInvoice(orderId) Хммм, что же эта функция принимает и что она возвращает? Типов нет, вообще не понять абсолютно.
>То есть ты расчитываешь, что на каждую отформатированную строку все будут добавлять новый тип? Это болезнь такая?
> Погугли, что такое сайд-эффект, шиз.
Это когда ты в строку-результат сложения добавляешь что то дополнительное, что к этому результату не относится, т. е.
> В строке лежат только числа или еще добавлено что-то?
>Это когда ты в строку-результат сложения добавляешь что то дополнительное, что к этому результату не относится, т. е.
Ответ неправильный, гугли еще. Бля, и вот это чучело, которое полгода назад вкатилось и до сих пор не разобралось в базовых понятия, пиздит про типизацию и тесты. Иди-ка ты нахуй.
Нет, лучше конечно каждый раз в детали имплементации лезть, чем один раз добавить нужный тип и забыть о деталях, лол. Ну ты своими вопросами совсем дно пробил, надеюсь ты троллишь, не верю что бывают настолько тупые люди.
>поиграй в игру «угадай как интерпретировала макака то что она нагуглила»
Ага, щас только штаны подтяну.
>Может у тайпскрипт-шизов мозг уже по-другому начал работать
Это у тебя он дефектно работает, как у всех жс-шизов.
>То есть ты расчитываешь, что на каждую отформатированную строку все будут добавлять новый тип?
В таком случае логично сделать класс для работы с этим и enum (или дочерний класс в зависимости от сложности) для каждого типа форматирования. Все будет с типами и красиво.
У тебя вообще нет представления как делать архитектуру? Представляю какой говнокод ты пишешь у себя. Надеюсь, ты еще только вкатываешься и просто начитался всяких шизиков в интернете, и никто больше в этом дерьме не разбирается.
>function createOrderInvoice(orderId)
Жс макаки уже типы в названия вписывают. Ну что угодно только бы не работать с ними нормально, пиздец...
Не забудь в имплементацию Invoice заглянуть потом.
> Если я вижу функцию sum, которая вместо числа возвращает строку, то первая моя мысль "нахуя
Ну да, ты ведь макака у которой на UI выводятся числа, а не строки.
>В таком случае логично сделать класс для работы с этим и enum (или дочерний класс в зависимости от сложности) для каждого типа форматирования
Проиграл. Вместо того, чтобы просто возвращать строку с нужным форматированием, тайпскрипт-шиз наплодит десяток глобальных типов для каждого варианта и будет заставлять всех остальных в них копаться вместо писания кода. Продуктивность и удобство.
>У тебя вообще нет представления как делать архитектуру?
Ты не знаешь, что такое архитектура программы, если думаешь, что она имеет хоть малейшее отношение к типам.
>Жс макаки уже типы в названия вписывают
Действительно, зачем давать нормальное название функции и ее аргументам, которое будет отражать назначение этой функции и то, что она делает, ведь можно написать processData(x: number): Order {}, а остальное конпелятор на ухо нашепчет.
>нужным форматированием
Каким? Изменена пара символов? Italic? Переведена в Json?
Ну я понимаю что для вас это всё одной строкой будет и вы большую часть времени тратите на выяснение того что конкретно. Но адекватные люди делают по другому.
>Ты не знаешь, что такое архитектура программы
Ну правильнее было бы сказать структура. Хотя одно понятие входит в другое, а ты просто доебываешься до слов, хотя сам все прекрасно понимаешь, иди нахуй.
>а остальное конпелятор на ухо нашепчет.
Ага, а ты дальше вспоминай какие там поля были в Invoice :)
С минимальными подсказками в IDE. Ну да, можно jsdoc сделать и prop-types, но не проще типы написать?
Почему?
Потому что обработчики и обсерверы не клонируются.
>отвалились все обработчики,кроме 1го
Потому что он у тебя на одном из элементов-родителе стоит.
>Тайпскрипт делает любой проект больше туду листа нечитабельным неподдерживаемым говном
Любой проект становится гавном из-за неправильной архитектуры и закладывания грязного кода как базу. TS + "чистый код" + тесты выдаст охуенно поддерживаемый проект через год и через три
>выдаст охуенно поддерживаемый проект через год и через три
ага конечно
поэтому через два года выйдёт новая версия тупого скрипта
и все бросятся переписывать свое говно с нуля
Хочу сделать полноценную игру (метроид) на жс. Насколько я в жопе? Думаю делать в браузере, без серверной части. Либо специально для этого изучать электрон. Либо не быть долбоебом, взать изучить сишарп, юнити и сделать все не через жопу
Что скажете?
Очевидно, не копировать элемент или навешивать обработчики на один из родительских элементов, например на body
Не обязательно, далеко не у всех это в требованиях, а если что, доучить можно. Глянь сам насколько часто это попадается в вакансиях.
Погляжу
Я вижу, что не всегда это требуется. Но с другой стороны я не понимаю, вот, например, приду я на работу. Буду лабать на реакте и typescript. А что же тогда с SEO? Как поисковики будут это дело искать. А ещё без SSR это же будет Client side rendering, то есть пользователю придется ждать пока мой огромный бандл жс к нему придет по интернету.
И в общем я запутался, с одной стороны я не могу освоить SSR - это слишком сложно и надо углубляться в тему кэширования у сервера.
А если без него, то я не понимаю как тогда моё поделие на реакте будет работать.
В 2к21 году clinet side rendering не считается зашкварным?
А ещё я боюсь, что если я не шарю в Gatsby.js и next.js, то тогда придется на потенциального бэкендера перекладывать часть ответственности за генерацию статики, например, заставлять его делать, скажем, на РНР шаблоны под мою верстку. Вместо того, чтоб я делал статику сам на Gatsby.
Короче, я запутался и перестал понимать, что происходит.
Ну допустим. А копировать то зачем? Просто создай новый элемент, а обработчики навесь на document
Да теоретически это можно сделать. Но надо ли? Если уже сам хорошо знаешь жс, то ок. Если нет и будешь так учиться - идея говно
Надо быть студентом nо kлu4ke 0П?
>В 2к21 году clinet side rendering не считается зашкварным?
Нет. Времена, когда с клиента сдували пылинки и оптимизровали все подряд давно прошли. В 2к22 посетитель ресурса - это терпила, который будет ждать загрузку столько, сколько надо. Вкладываться в дополнительную оптимизацию кабан будет только в совсем крайних случаях.
Ну сам подумай, что лучше выглядит - когда в опенспейсе все сидят программируют синхронно как пловцы или в разнобой, каждый по-своему? Очевидно первое, поэтому не задавай глупых вопросов.
>ну а как по нажатию кнопки создать новый массив элементов
button.addEventListener('click' , ()=> {
const arr = [];
arr.push(document.createElement('div'));
})
>как по нажатию кнопки создать новый массив элементов тогда?
Читай оппост.
>Если рассчитываешь получить дельный ответ, сформулируй правильно вопрос: «что я хочу получить, что я для этого делаю, что я вместо этого получаю».
И приложи ссылку на песочницу, где есть примерный вариант твоей проблемы.
button.addEventListener('click' , заебись)
Потому что ты пытаешься заучить, а надо просто понять. Там простейший ориентированный граф. Все равно, что понять кто кому сестра брат дядя кум тетя отчим зять теща, если понимаешьк ак устроены принципы генеалогического древа.
Тебе всегда будет сложно (и в итоге ничего не получится), пока ты заучиваешь, а не изучаешь.
я не пытаюсь заучить, всё равно память плохая. просто там слишком много всего и я забываюсь
Да. У меня мозги кипят от того как в js всё завернуто с этими прототипами, которые еще и создаются неявно и сами ссылки друг на друга проставляют. Я не просто удивляюсь, я НЕ ПОНИМАЮ.
>arr.__proto__ === Array.prototype дает true
потому что "прототип" массива, который содержится в свойстве прото или лучше его брать через метод getPrototypeOf, так вот этот прототип действительно равен свойству prototype конструктора Array, а prototype это объект, в котором содержатся все методы функции-конструктора, которые он передаёт своим инстансам-объектам. Это равенство - результат построения прототипичной цепочки в джаваскрипте, а именно: Child-constructor.prototype = Object.create(Parent-constructor.prototype);
>просто там слишком много
В том-то и дело, что нет. Там буквально два с половиной правила. Тебе кажется это сложным, потмоу что ты не понимаешь принципа.
Это все равно что пытаться понять как работает сложение чисел, не понимая что оно раскладывается на простейшие операции вплоть до единиц.
Ты же вот понимаешь, что если у тебя есть сестра,а нее есть муж, то он тебе шурин? А если у тебя есть жена, то твоя мать твоей жене свекровь, а жена твоей матери сноха?
А там еще больше правил, кто кому приходитс. В жс же их буквально 2. У каждого объекта есть архетип и прототип. Все. Архетип - это то чем характеризуется его набор Internnal Property (есть простый объекты, примитивы, прокси, вызываемые объекты (которые могут быть конструкторы, стрелочные, es5-функции, функции-методы, boun-функции, не суть) - у каждого архетипа свой набор Internal свойств, из которых вытекает специфика их поведения.
И есть прототип (а у каждого прототипа еще прототип - так получается цепочка) из которой складывается наследование.
Все.
Архетип с Internal проперти отвечает за специфику поведения реализованную Рантаймом, Цепочка наследования прототипов отвечает за специфику поведения реализованную пользователем (тобишь программистом).
Всего два правила - Архетип, и прототип. Не больше, не меньше.
Это из спецификации.
Единственное там не употребляется термин Архетип, а просто рассматривается каждый из ни в виде набора Internal Property. Но вот каждый такой набор - это и есть архетип.
Отличия архетипа от прототипа в том, что Internal Property - собственные.
Не тянитесь за деньгами. Деньги намного легче добывать где-то еще. Тянитесь за страстью созидания. Инженерия - это изобретательство. Помните об этом.
Не учите - изучайте. Исследуйте. Эксперементируйте. Это же удивительно - возможность создавать всё из ничего.
Успехов вам. Технических и творческих.
мимо олд с двадцати летним коммерческим стажем, пишу на жс с момента его появления в 95-97 году, знаю его от и до, и еще с десяток языков.
Хоть где-то же я должен иметь возможность упомянуть сколько себя я посвятил этому всему. В прочих контекстах это будет всегда неуместно.
>Прошу расписать логику как это дело с 3го пика работает(для тупых)
В гугле буквально тысячи объяснений рекурсии. Ты их все посмотрел?
>пишу на жс с момента его появления в 95-97 году
Что по твоему мнению, само хуевое, что происходило с языком за весь твой опыт?
Мимо миддл, пишу на жс 3 года
То решение рекурсией не TCO, вот трушное.
Почитай про стек вызовов, cоздай сниппет в хроме и медитируй пошагово над выполнением кода, как функция создает свою копию в стеке вызовов и передает туда переменные.
Спасибо анончик. Вот такого способа наяривания логики в сниппете для наочности мне не хватало в учебных материалах. Теперь буду знать в какую сторону воевать с подобными вопросами.
В общем, я понял. Любой литерал который мы объявляем имеет два свойства, __proto__ и prototype.
prototype это его личное свойство, значение этого свойства - объект, куда можно записывать свои переменные и функции
__proto__ же содержит в себе ссылку на prototype родителя и используется для подтягивания уже переменных и функций объявленных в родителе, реализует то самое prototype chain.
Как же они хуево назвали эти свойства. Половина тупняка из-за того, что они практически одинаково называются.
мимо
Нихуя ты не понял
let a = { p: 1 }
undefined
a.prototype
undefined
function test() {}
undefined
test.prototype
{constructor: ƒ}
test.prototype.b = 42
42
let c = new test()
undefined
c.b
42
> В остальном профитов не заметил
Гланый профит это то, что в отличии от реакта вью не ререндерит полностью все дочернее древо у обновившегося компонента, поэтому можно говнокодить без потерь производительности. Ну и без лишней мозгоебли с зависимостями как реакте.
>Код в компонентах нагруженный, скобки в скобках в скобках, логика с разметкой и стилями свалены в одну кучу.
Ну так хуярь все на jsx, вью официальную поддержку для дурачков вроде тебя осуществляет.
>логика с разметкой и стилями свалены в одну кучу.
в твоем хуякте точно также логика и разметка свалена в одну кучу, и стили тоже (если ты используешь jss или scoped).
Просто ты живёшь в восточной части России, а в Китае вью намного популярней рякта. Переезжай в Москву, европейский город в Мордоре, или учи вуй.
Звучит сложнее/требовательнее к исходным данным.
https://learn.javascript.ru/
>как такое же говно со снежинками как в бэ побыромо сделать?
Создаешь n-ое количество элементов-снежинок, задаешь им background, position: fixed и радиус бордера чтоб они стали крглыми, потом через animation задаешь чтоб они меняли свою позицию
>кроме плавной и красивой анимации конечно
В девтулзах есть скрытая влкадка "Anumations". Пользуйся.
Круто, перечислил облатси в которых 5 лет вариться надо минимум, чтобы понимать че к чему+ стартовый капитл дикий.
Кайф нашел, даже не знал что в дефтулзе есть такое, буду теперь пользоваться спс. А то я гадал как найти если не получается выделить элемент
Хуита, лучше доки прочесть, там все знания нужные есть. Тебе вообще что нужно?
>>56133
Лучше почитай книжек.
Cначала та что первая на пикриле, потом серию книг "вы не знаете js" https://github.com/getify/You-Dont-Know-JS, потом 2 и 3.
По реакту/ангуляре самое лучшее - это оригинальная документация.
Курсы или видосы в youtube, которые помогли лучше и быстрее выучить джс и реакт. Для документации я туповат
И почему хуита, кстати?
Пидарасы, нахуя вы это делаете, дебилоиды блядь обоссанные? Каждый год какой-нибудь пидор где-нибудь приделает это мельтешащее говно! Сука, в ебло себе муравьёв лучше насыпь, пусть они у тебя по глазам ползают, а не у нормальный людей, пидор блядь, и ты, и твой поехавший обу!
>Серьёзно? То есть вообще никто не знает?
писать в закрытый тред
какие же вкатуны долбаёбы, пиздец просто. Завод вам вечной стекловатой
Сам ты долбоёб. Я хз, почему "навигатор" вывел меня сюда. А перекат можно было бы и пожирнее выделить.
Это копия, сохраненная 27 июля 2022 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.