Вы видите копию треда, сохраненную 10 ноября 2022 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Больше пары строк кода в посте или на скриншоте ведут в ад.
Для программирования на HTML https://codesandbox.io
Для Node.js с консолькой https://repl.it/languages/nodejs
Если рассчитываешь получить дельный ответ, сформулируй правильно вопрос: «что я хочу получить, что я для этого делаю, что я вместо этого получаю». Если/когда самостоятельно найдёшь решение — поделись в треде, мы за тебя переживаем.
Документация - https://developer.mozilla.org
Руководство для вката - https://github.com/acilsd/wrk-fet#javascript
То, что нужны дженерики и так понятно, только какие?
Сейчас у меня функция выглядит так:
type IType = "string" | "number" | "object";
type IOutputType = undefined | string | number | Record<string, unknown>;
function transformObj<
KeyNames extends string = string
>(
obj: Record<string, unknown>,
types: Record<KeyNames, IType>
): Record<KeyNames, IOutputType>;
function transformValue(
value: unknown,
type: IType
): IOutputType;
Проблема в том, что у результирующего объекта у всех ключей будет сигнатура IOutputType, а мне надо тайпскрипту указать более явную связь между ключами types и их значениями.
А как ты это использовать будешь?
Вот ты выше пишешь:
transformObj(
{ key1: "001", key2: 30, key3: { 1: 0 } },
{ key1: "number", key2: "string", key3: "object" }
)
приводилось к { key2: number | undefined, key2: string | undefined, key3: Record<string, unknown> | undefined } ?
Но ты же описываешь пример данных, которые в рантейме уже придут в приложение, а там никакого тайпскрипта уже нет
>Write down decorator function example for @NgModule
Курс галеры, ревью знаний после первой лекции по ангуляру.
>А как ты это использовать будешь?
Для фильтрации query параметров клиентского роутера. Функция немного другая, но суть та же - получение объекта с приведёными типами в зависимости от сигнатуры второго аргумента.
>Но ты же описываешь пример данных, которые в рантейме уже придут в приложение, а там никакого тайпскрипта уже нет
Причём здесь рантайм? У этой функции сигнатура возврата зависит исключительно от сигнатуры аргумента types, который создаётся скриптом, а не зависит от входных данных. Этот объект - всего-лишь пример как она должна работать и что у результирующего объекта сигнатура может разительно отличаться от входного.
Я бы сделал так:
1. Поставил бы any тип на возвращаемый результат
2. Создал бы to do с номером задачи в таск-трекере где описал бы проблему и указал, что она требует дополнительного изучения и исследования
3. Просто доделал бы текущую задачу
4. Как только появилось бы время, вернулся бы к этой to do
В теории, сделать то, что ты хочешь можно, но value стремится к нулю. И больше похоже на перфекционизм
А если это твой петпрожект, то вообще хуй забей
>1. Поставил бы any тип на возвращаемый результат
Но там не any, возвращается всегда объект, с ключами, указанными в types, и значениями, типы которых зависят от значений этих ключей.
>3. Просто доделал бы текущую задачу
Да уже подумал, что пока добавлю обязательный колбэк парсинга в декоратор, и буду писать залупу вида const query_value = !router.query.query_value ? router.query.query_value : Array.isArray(router.query.query_value) ? router.query.query_value[0]: router.query.query_value, но хотелось бы более декларативненько.
>А если это твой петпрожект, то вообще хуй забей
Тащемта как раз петпрожект, а забить хуй не получится, так как мне это нужно для реализации страниц с пагинацией, зависящей от урла, и у них в этом плане у всех одинаковое и бойлерплейтное базовое поведение.
>а забить хуй не получится
Зависит от цели на которую направлен проект. Если ты дрочишь типы, то остановись и изучи проблему. Если ты тренируешься просто делать что-то, то лучше вообще взять готовый компонент для пагинации
Ты только вкатываешься?
>Зависит от цели на которую направлен проект.
Цель - как можно сильнее абстрагировать бойлерплейт пагинации и соответственно минимизировать боль при написании пагинированных страниц и их последующего рефакторинга. Это не для кабана тасочка с дедлайном, а для сохранения своих нервных клеток и времени.
>Если ты дрочишь типы, то остановись и изучи проблему.
Проблема в том, как привязать выходной тип функции к типу аргумента, не городя ручками перегрузки/многоэтажные инферы/промежуточные интерфейсы. Так-то понятно, что в случае выше можно просто добавить обязательный дженерик ReturnShape и сделать ключи types зависимыми от этого дженерика, и забить хуй на время. Но хотелось бы более лениво, чтобы тайпскрипт всё сам угадывал, а я бы только писал процiдурки.
>то лучше вообще взять готовый компонент для пагинации
Я уже навернул говна с "готовыми компонентами", так что нет. Плюс сомневаюсь, что в природе есть либа, пагинационный компонент которой бы ещё парсил query некстжсовского роутера по шаблону изкаробки. Так что он тут бы не помог.
>Ты только вкатываешься?
Да, только вчера кантора открыл.
Еще раз прочел то, как ты хочешь все это трансформировать и появился вопрос: а почему в месте получения этих данных просто не написать, что они не обязательные? Ну и в случае с объектом, просто корректно описать его структуру именно при получении. Зачем ты получаешь параметры, которые, якобы, обязательные, но потом пишешь костыль, который тебе будет все это оборачивать так, как будто они не обязательные
>а почему в месте получения этих данных просто не написать, что они не обязательные?
Причём здесь необязательность? В запросе вполне может не оказаться ключа из types, в этом случае, а также во всех случаях провала приведения по значению типа ключа, у финального объекта значение ключа будет undefined.
Не путай { key?: type } и { key: type | undefined }, у этих сигнатур разная семантика в плане поведения Object.entries()/Object.keys()/Object.values() и key in obj оператора. В большинстве случаев на эту разницу можно положить, но не во всех.
>Не путай { key?: type } и { key: type | undefined }
>у этих сигнатур разная семантика в плане поведения Object.entries()/Object.keys()/Object.values() и key in obj оператора
Это ты сейчас что-то путаешь. Перечисленные тобой методы работают с данными, а это
>{ key?: type } и { key: type | undefined }
Лишь описание их структуры
Но если у тебя есть конкретные примеры на которых поведение и правда будет разным, то принеси, пожалуйста. Очень интересно и познавательно будет
Object.keys(obj), где obj : {key: number| undefined} всегда возвращает ['key']
Object.keys(obj), где obj: {key?: number} может вернуть либо [], либо ["key"]
мимо
Аналогично для функций, если ты тип аргумента задаш к примеру как {k: number | undefined}, то у тебя при попытке передать {} в эту функцию нихуя не скомпилируется. А вот если укажешь {k?:number} - все будет ок
все тот же мимо
Как минимум - если будешь использовать один компонент на нескольких рутах TS будет некорректно отрабатывать использование оператора in
Если ты роут таким образом, что туда могут какие-то параметры не передать, то или бери значения по умолчанию или пиши компонент таким образом, чтобы эти параметры были внутри него не обязательными. Звучит так, как будто сам проблему выдумал и теперь героически ее решаешь
Ты троллить тупостью начинаешь. Отрой доку тайпскрипта и прочитай, либо загугли и открой первую ссылку.
>Ты троллить тупостью начинаешь. Отрой доку тайпскрипта и прочитай, либо загугли и открой первую ссылку.
Не сливайся так жидко, анон, прошу.
Да, я уже понял, что там поведение некоторых методов разное. Тебе это как мешает? Ты не можешь по-другому код написать? Но ты обоснуй необходимость именно такой ебли с этими параметрами. В конструкторе компонента можно просто param.p1 || defaults.p1 написать и будет все прекрасно работать
vite
>Лишь описание их структуры
Как ты блять собрался работать с данными без описания их структуры в ебаном блять тайпскрипте?
Обязательно перезвонить, ответ на ваш вопрос о том, как работать с данными в ТС без описания структур данных был дан.
Зачем ты передаёшь в компонент ненужные ему параметры?
>default
>ненужные
Вкатун, успокойся.
>он отключит вообще всё на строке, а не только один тип.
Ну отключит, дальше что? Ответ на вопрос был дан.
Мой ответ ты видимо не видел, поэтому добавлю здесь - пошёл нахуй со своим "не хами", барин
>Использует typescript
>Каким-то чудом пишет код, который позволяет передавать ненужные параметры в компонент
>Говорит, что не будет перезванивать
Мы сейчас на дваче, поэтому я тебе ещё раз повторю - пошёл нахуй, гной подзалупный. Ты начал терять берега и ПРОВЕРЯТЬ РАБОТНИКА, как только решил что нашёл исполнителя за мелкий прайс и сейчас будешь им красиво командовать. Пошёл. Нахуй.
так как в вакансиетреде воркача сидит полтора анона, запощу тут:
ищу человека, который умеет в линукс и яваскрипт.
нужно модифицировать плагин noVNC для Proxmox, а конкретно - сделать запись видео.
например, прикрутить вот этот прокси сервер https://github.com/amitbet/vncproxy и писать копию трафика в файл, чтобы потом можно было пересматривать видео в оффлайне.
вот ещё примеры подходящего софта:
от разрабов novnc https://github.com/novnc/websockify/issues/224
или от левых челов https://groups.google.com/g/novnc/c/CiI0bEH-Eoo
встроенный в noVNC плеер: https://github.com/novnc/noVNC/blob/master/tests/vnc_playback.html
в proxmox половину функционала noVNC вырезали. насколько я понял по рандомно разбросанным файлам - там вообще какая-то старая версия noVNC, которую скомпоновали в один большой файл из кучи модулей.
кароч нужен кто-то, кто хорошо разбирается в яваскрипте и всём этом говне - надо разобраться, как именно noVNC прикручен к проксмоксу, вкорячить между ними прокси, а в веб-гуй noVNC добавить кнопки типа "начать запись", "остановить запись".
сразу пишите, за сколько возьмётесь это сделать.
Возьмусь за 2к рублей в час. Если готов платить, далее общаемся, составляем план работы и оцениваем задачи по времени
Добавлю, работаю только по предоплате
есть дискорд? или любое другое средство связи, не требующее анальных регистраций как в телеге.
написал. подробного тз пока нет, надо посидеть подумать
Что я сделал не так/что можно добавить/сделать лучше?
надеюсь не обоссут
пока не спешил с ним, т.к. на подавляющем большинстве джуновских не видел его. Думаю, чуть позже возьмусь за него.
Еще что-то?
пока не спешил с ним, т.к. на подавляющем большинстве джуновских не видел его. Думаю, чуть позже возьмусь за него.
Еще что-то?
Если бы я не гуглил, то я бы ответил, что атрибут связан с DOM'ом, а свойство более общее понятие и атрибут есть частное этого понятия.
Ну и спизданул бы ещё про семантическую разницу между этими двумя понятиями.
А тебе зачем это? На собесах такое не спрашивают.
мимо сеньор
Свойства это то что есть у объекта в жабаскрипте (в частности у объекта узла дома), а атрибут то что есть у узла дома и то что ты пишешь в хтмл.
К свойствам ты обращаешься как к свойствам любого объекта. К атрибутам ты обращаешься через гетатрибут/сетатрибут.
Атрибуты доступны как свойства с таким же именем кроме class, которому соответствует свойству className.
Свойства, которые браузер узнал как атрибуты, доступны как атрибуты, левые свойства — нет.
Использую у себя singnalR в связке с redux-saga и не могу понять какого хуя eventChannel не работает. Вот тут схематично накидал код: https://codesandbox.io/s/headless-hill-0nyj1i?file=/src/index.js Вернее, бесконечный цикл который оборачивает take начинает отрабатывать, но спустя пару секунд как-будто зависает и любые эмиты не отрабатывают. Причём сообщение с хаба доходит и его можно отлогировать, но дальше ничего не происходит т.е. логи из кода идут в след. порядке:
1 - канал запущен
2 - Цикл отрабатывает (в зависимости от бразуера данное сообщение выводится от 700 до 2700 раз, после чего перестаёт выводится)
3 - Спустя некоторое время сокеты отвечают и логируется "Сообщение получено"
А дальше вообще ничего не происходит. Что за хуйня?
Понял что не получаю удовольствия от написания кода - а скорее даже наоборот.
И иду в профессию только ради денег.
Стоит ли мне продолжать?
Вроде и JS изучил, и React, осталось только Redux и TypeScript.
Но стоит ли?
основы
Конечно не получаешь, ты вообще нихуя не знаешь и не умеешь еще, откуда взяться удовольствию? Устройся хотя бы на первую работу
>useNavigate
Когда ты сабмитишь форму и когда надо сделать редирект после её сабмита. Когда ты контент вставляешь через innerHTML и не можешь использовать Link.
У тебя код в finally выполнится только в случае ошибки, иначе ты просто будешь крутить бесконечный цикл. или я что-то напутал
>У тебя код в finally выполнится только в случае ошибки, иначе ты просто будешь крутить бесконечный цикл. или я что-то напутал
Боже блять. Не позорься и иди прочитай документацию перед тем как лезть со своими объяснениями.
Правда не понимаю. Условие выхода из while - только выброс ошибки. Поясни, пожалуйста.
Согласно доке саги - переход в finally состоится в случае emit(END);
Проблема в том, что Канал Эвентов вообще не реагирует ни на что
Я juniour Node.js Backend разработчик.
Получил задание написать (почти) с нуля бэк с использованием Nest.js + MongoDB для мобильного приложения.
Хотелось бы, чтобы приложение легко масштабировалось, так как хотелки у заказчиков возникают постоянно.
Проблема возникла на стадии проектирования, приложение содержит довольно много вариантов авторизации. С учётом того, что используется noSQL бд, нужно ли разделять логику по пользователям и авторизации пользователей или сливать всё в одну коллекцию?
Единственный норм бэкендер в компании свалил в отпуск на 2 недели, моя команда состоит целиком и полностью из фронтов и мобильных разработчиков конченных идиотов, а мне очень нужна подсказка
Через что вообще её писать? В for вбить цикл, а дальше сумму через прибавление единиц считать?
>или любое другое средство связи, не требующее анальных регистраций как в телеге
Да бля, ну сразу-то сказать...
В смысле? Ты хочешь length посмотреть или что?
Что тебя телега не устраивает.
Учись читать пдфки вниманиедефицитник.
даже тут чертовы токсики
Это имело смысл в каких-то 90-х ранне-нулевых, в старых фланаганах был справочник по всей хуйне, сейчас быстрее загуглить, чем листать ебаный справочник. Теперь это больше учебник по основам.
document.designMode = 'on'; // дальше выделяешь все тексты на странице и переводишь на какой язык надо
ну вообще я читаю по learn js и freecodecsmp, еще курсов куча. но про Фленагана всегда хорошо отзывались, у меня есть книга но издание старое, до Esma script 6.. ну может оно и не надо. сейчас сказали жопа будет с айти рынком по крайней мере у нас в рф.. немного конечно демотивация
> сейчас быстрее загуглить, чем листать ебаный справочник.
а потом копипастить консольные команды в пхп скрипт и создавать треды "двач чому не робiт?"
жаль я не успел скрин сделать, лольный тред был
>жопа будет
Наоборот. Все айтишники разъехались, брать некого на работу. Мы уже набираем всех, кто хоть немного js знает, реакту и тс обучим сами.
мимо сеньер
Мы сишарпера миддлового не можем уже пол года найти. Откликов банально нет. Тестировщика вот джуна искали 3 месяца, только сейчас оффер отправили.
но мне кажется это лютый вброс, потому что в чате фронтендеров наоборот негативычи жуткие
>Спихнуть обязаности сеньера и платить поменьше, обуславливая "тыж мидл"
Ну хуй знает. У нас по сути там уже готовый небольшой бэкенд уже написанный, все что от него требуется - мелки едоработки по нему и багофиксы. Вполне себе работа для джуна, не то что для миддла.
видимо никак
блин чето нетворкинг не работает
Спасибо, тока опять не работает, пишу в консоль document.documentElement.lang = 'en'
location.reload();
Хорошо, вот тебе многострочник
(str, x) =>
str
.toLowerCase()
.split('')
.filter(s => s === x)
.length
>document.documentElement.lang = 'en'
Меняет язык страницы.
>location.reload();
Перезагружает страницу и язык на ней снова становится тот, который был изначально
ты че хочешь шизик припадочный???
>>76599
А теперь напиши что бы этот кал занимал N памяти вместо от 3N до 4N как у тебя. И что бы асимптотическая сложность была N, а не 4*N. Не напишешь - не получишь оффер на стажера.
Как мне запихнуть сюда юзернейм(юзеримеил в данном случае),
если через гет стейт я его почему-то вытянуть не могу?
Нет, пока что миддл. Я так понимаю, простейше оптимизировать функцию уровня физзбаз ты не в состоянии?
Чел, почитай про O нотацию и узнай почему O(4n) нахуй не имеет смысла, потому что это то же самое, что и O(n).
>O(4n) нахуй не имеет смысл , потому что это то же самое, что и O(n).
Что ты несешь, шизик? Каким образом выполнить 4 операции это тоже самое, что выполнить одну? У тебя совсем с арифметикой плохо? Константа в нотации большого O не обязана отбрасываться, учи матчасть.
Ммм охуенно
ну я хочу даже может на какую стажировку, мне надоело учиться бесконечно по кругу..
Потому что я подключаюсь к внешнему источнику данных, а согласно спеке в таких случаях нужен eventChannel
актуально, нужен человек с опытом работы с линуксом, не уровня "curl github.com/asdf/install.sh | sudo bash -", а способный установить ОС и компильнуть сорца.
желателен дискорд или любое другое средство связи, не требующее анальных регистраций как в телеге.
О спасибо
И let, и const нельзя переобъявить (redeclare, простите, я не знаю, как по-русски, лень гуглить).
И let, и const нельзя переназначить (reassigne).
И let, и const имеют block scope, для каждого {блока} своя let и const.
И let, и const должны быть объявлены (declare) перед использованием.
При этом еще и const, оказывается, не такая уж и константа - ковыряйся в свойствах переменной сколько хочешь, при этом выдавая её за ту же переменную. Охуеть не встать, такое-то ПОСТОЯНСТВО.
Блять, а разница в чем? В этом вот (не)постоянстве?
f(n) = O(g(n)) если существуют такие положительные целые M и n0, что f(n) <= M * g(n) для всех n >= n0 (и это определение для cs, у математиков немного другое).
Хз где ты там взял c и нахуя оно там вообще нужно.
Асимптотическая сложность говорит о порядке роста времени, которое мы затратим на вычисления, от количества данных. Все константы нам здесь не важны вообще хотя бы потому что мы в душе не ебем че там процессор делает и как долго (и не только множители, но и например 2^n и 3^n здесь одно и то же, логарифмы тоже, поэтому обычно не уточняют основание логарифма, а просто пишут log n). Это именно про сложность нашей хуйни.
Можно написать
let foo = "bar"
foo = "baz"
С const так нельзя, его можно только мутировать, присваивать что-то другое нельзя.
В доке тайпскрипта.
Нет, так блок не виден, но занимает место.
Попробуй менять display для наличия блока, а анимируй через height или min-height.
> изучаю сейчас сложение и вычитание, до тройных интегралов ещё не дошёл
а шо, на курсах гикбрейнс действительно не рассказывают о разнице между HTML, CSS и JS?
Например, на пике1 в рамках присваивания переменной b значения a++, помимо переменной b меняется и переменная a, хотя по моей логике a не должна меняться.
Тогда, например, почему на пике2 при a+1 переменная a остается неизменной?
На вскидку без проверки сказал бы что 3.
Сейчас проверил, да, 3. Оно понятно, но почему так, если это вычисление происходит в рамках присваивания переменной b?
Ну расскажи
for(let i of text) {
if ('Xx'.includes(i))
Почему 'Xx' работает по поиску большой или малой буквы в функции? Написано, что искать будет или букву или подстроку, то есть само сочетание Xx полность, а не что-то подходящее из него.
Вот примеры
'Misha'
// ищем подстроку
name.includes('Mis'), // true
name.includes('mis'), // false
Почему false, если должно находить любую из букв по отдельности тогда?
В смысле наоборот? Написано, что ищет целиком подстроку, в кавычках же единое значение.
Тогда как прописать, чтобы искало значение в строке полностью как указано?
>А должно искать Хх в строке.
Как так прописать? Это функция если что.
>Т.к. опции кейс-инсенситив поиска нет, надо делать это вручную и искать просто x.
А если 2 раза указать заглавную и маленькую в двух строчках кода?
Хотел понять как через 'или' можно 2 символа указать.
А как всё значение в точности целиком тогда искать, если ищет только совпадения с любым из входящие?
Как должны выглядеть импорты в тайпскрипте?
Называть файлы только строчными буквами, заместо пробелов и _ использовать -, экспортировать и импортировать только поимённо. Дефолтные экспорты использовать только тогда, когда от тебя фреймфорк требует.
Brainfuck
transform: translateY(-5px)
jQuery
>>77442
>вкатун не умеет пользоваться гуглом
https://www.google.com/search?q=could+not+find+a+declaration+file+for+module
Потому что щас писал бота дискорда по гайдам, ошибки все пофиксил что были, а сейчас просто процесс заканчивает работу и всё.
Если заканчивается процесс, значит ты что-то сделал неправильно в смысле организации цикла жизни кода: он отработал и без ошибок завершился
Код запуска неси
Двачую этого. У тебя сервер поднялся, прожил один жизненный цикл и умер. Он должен слушать порт постоянно, чтобы процесс не завершался.
Либа с типами и утилами.
А ты как хотел? Любишь микросервисы, люби и вагон зависимостей
>Оказалось скобки функции не дописал
Не "скобки не дописал", а "функцию не вызвал".
>Вот бы конечно нода выставляло это как варнинг,было бы идеально.
Схуёв ли рантайм должен подтирать за тобой? Ставь тайпскрипт/еслинт, чтобы он тебя пиздил палками за неправильный код.
Понял, усвою этот урок
Вопрос 1 - если мне нужно это только в одну сторону на клиент, нужно ли мне дополнительно делать/открывать сокеты на сервер.
Вопрос 2 - что делать с безопасностью, т.е. разрешить выполнять только на обращения с ориджин сервера? Нужен ли какой-то токен/соль или js весь открытий и здесь ничего не сделаешь?
Если кто знает, пожалуйста, киньте линк по сабжу/примерами.
function makeAbbreviation(words) {
let abbreviation = words[0];
for (let char = 0; char < words.length; char ++) {
if (words[char] === ' ') {
abbreviation += words[char + 1];
}
}
return abbrevation.toUppercase;
}
Почему пишет 'abbreviation' is declared but its value is never read?
Окей, а можно ведь тогда как-то держать сокеты открытыми и таким образом держать соединение, и в определенный момент стригерить выполнение js функции?
Мне почему-то кажется что должно существовать более элегантное решение нежели вываливать динамические стейты на апишку сервера и js'ом раз в n секунд чекать эндпоинт.
Везде по-разному. Но часто в вакансии довольно подробно твои обязанности описаны. Если не понятно что-то, то тебе объяснят на собеседовании
>Окей, а можно ведь тогда как-то держать сокеты открытыми и таким образом держать соединение, и в определенный момент стригерить выполнение js функции?
1. Страница загружается
2. Сразу же стартует соединение с сервером через сокет
3. Сокет в любое время, если все ок, может вызвать все что ты захочешь на клиенте
По сути тот анон выше тебе так и написал, только не так многословно
>Почему пишет 'abbreviation' is declared but its value is never read?
Точно это пишет? У тебя там было несколько опечаток в коде
Какие редактором кода пользуешься? В 2022 году они должны такие ошибки подсвечивать
Какой лучше редактор?
Я в браузере набираю. Ещё хотел узнать, почему < words.length, а не <=. Ведь тогда последний символ не будет прогоняться.
>У тебя там было несколько опечаток в коде
abbreviation исправил, теперь undefined. У меня скобок в return нет, а с ними вообще не работает.
>Какой лучше редактор?
https://code.visualstudio.com/ плагинами только доработать надо будет, но пока тебе и нативного хватит
В браузере тоже можно, но это не серьезно: нельзя сохранить и не удобно с несколькими файлами работать
>Ещё хотел узнать, почему < words.length, а не <=. Ведь тогда последний символ не будет прогоняться.
Я только опечатки исправил. Хз что там еще надо поправить
>У меня скобок в return нет, а с ними вообще не работает
Значит ты что-то еще пропустил. Будь внимательнее. Рабочий код есть на пике. Смотри и ищи отличия
VS code
> Ещё хотел узнать, почему < words.length, а не <=
Потому что с нуля
> abbreviation исправил, теперь undefined. У меня скобок в return нет, а с ними вообще не работает.
Без скобок ты возвратишь саму функцию toUppercase, а не результат.
А андефайнед потому что это toUpperCase, а не toUppercase
Веслал почти всё время в саас энтерпрайзе. Это решения компаний для внутреннего использования сотрудниками. На стили было в разной степени похуй и я занимался логикой. Если проект ориентирован на внешних клиентов - там будет много задроча с css.
>языке
С единицы - это и есть костыль. Относись к этому как к смещению, а не индексу. То есть первый элемент там, где начало массива + 0
В каком языке? В С?
А в чём хуйня получалась?
Другалек, я тебе советую посмотреть как создавать формы в реакте. То что ты высрал - хуйня.
Если заменить в коде с пика useSearchParams на useState - всё будет работать как надо. Но как прикрутить первый?
> useSearchParams на useState
Ну будет. Упрощу тебе задачу - смотри как сделать форму без ререндеров.
Реактовские или сцссовские? Оба да: одно замена бему, второе приятный сахарок для импортов.
Это вообще норм что я по пол дня сижу над всякими задачками на алгоритмы?
Хз как буду проходить собес, когда за 10-15 минут надо накодить рабочее решение и тебя ещё вдобавок обоссут за говнокод.
Для ждуна нормально.
Понял, буду их использовать. Я так понимаю, модули за тебя бэм делают
https://hastebin.com/aseyamokec.js
>>78796
useRef? Он же не может запускать код по изменению элемента.
Элементы находятся на одном уровне, там контекст не должен играть никакой роли. Причем элемент с меньшим индексом находится ниже. Я бы не спрашивал просто так.
А похуй, я еблан не в то окно смотрел.
function nameFunction(a, b) { // <<< ПАРАМЕТРЫ ФУНКЦИИ
let c = a + b;
return c;
}
Переменные параметров в объявлении функции являются let или var?
Я понимаю, что у них локальная область видимости этой функции.
Но чисто технически - let или var?
Или я в чём-то ошибаюсь?
> у них локальная область видимости этой функции
> let statement declares a block scope local variable
Какая разница? Там что у лет, что у вар будет одинаковая видимость на всю эту функцию.
Но чисто технически - как? Как то же оно обозначается во внутренностях? Я новичок, мне интересно
>Он же не может запускать код по изменению элемента.
Друг, хватит страдать хуйней. Тебе надо установить значение инпута ОДИН раз при первой загрузке формы, далее только менять урл.
ДЕЛАЕТ ФУНКЦИЮ СКЛАДЫВАЮЩУЮ АРГУМЕНТЫ
@
ДВАЧ А КАК ИНИЦИАЛИЗИРОВАТЬ ПЕРЕМЕННЫЕ ВНУТРИ ФУНКЦИИ ПРАВИЛЬНО
@
В ФУНКЦИИ ВООБЩЕ ПЕРЕМЕННЫЕ НЕ НУЖНЫ
@
Я ДУМАЛ ТУТ СПЕЦЫ СИДЯТ
>>79471
Сейчас мы с вами в прямом эфире разберемся с этой задачей как профи. Смотрите сюда:
Сначала нужно какую-то музыку поставить, чтобы все как у про было. Я запускаю продиджей. Мне кажется, что именно их слушали те самые профессиональные программисты
Далее включаем IDE. У меня под рукой только webstorm
И набираем простой пример пикрил
Далее сохраняем файл как index.js и запускаем команду
node --print-bytecode index.js
Немного модифицировал пример
Далее разбираем что это вообще такое
Читаем байткод:
LdaSmi - Load an integer literal into the accumulator as a Smi
Ldar - Load accumulator with value from register
То как это интерпретируется внутри v8 - пикрил
Уже можно сказать, что разницы между let, var и конст на уровне интерпретатора нет, но от объявления параметра в функции они отличаются. Офк, все в конечном итоге сводится к работе с регистрами, но можно точно сказать, что это и не let и не var
Дальше копать лень. Давайте итог подведем:
let и const - это всего лишь синтаксический сахар над var. Где-то на уровне выше того, который мы рассматривали, есть логика, которая AST обрабатывает и проверяет на то куда там и как выходит или не выходит переменная. В этом смысле они, конечно, разделяются между собой, но в конечном итоге все сводится к LdaSmi коду
Далее, непосредственно вопрос, который был задан выше: параметр в функции - это let или var?
Ответ: это и не let и не var. Это параметр функции, который имеет отдельную логику обработки
Всем спасибо
>который имеет отдельную логику обработки
на всех уровнях обработки js кода, а не только тот, который мы рассмотрели, конечно
Здравствуйте, уважаемые! Скажите, в JS есть вариант сразу найти работу/подработку на удалёнке/фрилансе на 4-5 часов в сутки? По деньгам достаточно минимума, важна именно минимальная длительность рабочего дня.
Зависит от твоих навыков
Вот тут много интересного
https://v8.dev/docs
В треде даже близко подобное не обсуждается, увы. Если будешь в этом разбираться, будут платить очень много
https://pastebin.com/WAPkJyrr
Он раньше работал на двоще, а теперь сломался, может кто-то поправить?
Суть кода в том, что он оставляет только те комментарии, которые имеют 3+ (?) комментария.
Очень удобно, когда тред на 300+ сообщений, ты фильтруешь и оставляешь самые самые.
например пикрил
Почему сам не сделаешь?
на, за 5 минут накидал что-то
вроде работает
document.querySelectorAll('.post__refmap').forEach((p) => {if(p.children.length < 3) p.closest('.post').remove()})
что там у тебя за код я разбираться даже не стал
спасибо, то что надо!
Разбегаются в том числе и работодатели. Количество вакух в на реакт в моем городе сократилось с почти двухсот до сорока с 24 февраля.
Вкатываться в конкретный язык программирования - моветон. Учи парадигмы программирования, паттерны и алгоритмы. Тогда будешь переключаться между языками как сумасшедший
А выучить синтаксис языка (который на 90% поход на все то, что ты уже встречал ранее) или прочитать документацию по фреймворку, чтобы сначать с ним работать, это максимум неделя времени
Подскажите насчёт тестов, это очень сложно освоить библиотеки для тестирования к vue? Или там ничего сложного?
Зря ты так. Весь твой скепсис насчет 1С построен только на том, что он не распиарен инфоцыганами так, как жопаскрипты с питонами. Но по факту на нем работа будет всегда, чего не скажешь о модных технологиях, которые теперь уже не особо нужны.
Ну да, подумаешь язык уебский, пишут во всратом встроенном редакторе и весь рот в визуальном погромировании.
Это куда лучше, чем работать в пятерочке.
Ты не аргументировал
> Цель максимально быстро найти работу
1. Находишь интересующую тебя вакансию
2. Дрочишь до умопомрачения то что там указано в требования
3. …
4. Вы приняты
А спрашивать на двача что учить - это кринж, конечно
>Весь твой скепсис насчет 1С построен только на том, что он не распиарен инфоцыганами
Что ты забыл в этом треде? Пиздуй в БД бухучёт исправлять.
Вроде, админки дашборды как SPA делают.
А ещё какие SPA-приложения заказывают клиенты?
Я учу vue и слышал, что есть nuxt для серверного рендеринга или генерации статики. И мне интересно какие приложения делаются чисто на vue как SPA без применения nuxt в реальной жизни. Вот как я понимаю админки вполне себе как SPA работают и серверный рендеринг там не надо.
>2. Дрочишь до умопомрачения то что там указано в требования
>3. В требованиях фреймворки-однодневки, нигде больше не встречающиеся в вакансиях для ждунов
>4. ...
>5. Вакансия закрывается на этапе прочтения трети доки по фреймворку
>6. Вкатываешься в Битрикс, довольно урчишь
Redux, с точки зрения кода — это объект, внутри которого лежат данные. Он используется остальными частями приложения для их хранения, изменения и извлечения. В простейшем случае для решения подобной задачи подошел бы и обычный объект JavaScript.
Но такой подход не позволяет отслеживать изменение данных. Если какая-то часть приложения изменила их, то мы об этом не узнаем, а значит не сможем отреагировать, например перерисовав нужную часть экрана. Redux решает эту проблему. Изменение данных внутри контейнера порождает события, на которые можно подписываться и выполнять произвольную логику (обычно перерисовку экрана). Достигается это за счет того, что данные внутри Redux изменяются не напрямую, как в случае обычного объекта, а через указание "действий" (actions).
Единственный способ произвести изменения состояния в хранилище — это передать/отправить действие (action) в функцию dispatch. Действие — обычный JS-объект, в котором присутствует минимум одно свойство — type. Никаких ограничений на содержимое этого свойства не накладывается, главное, чтобы внутри контейнера был подходящий ему обработчик (в switch).
Сам процесс изменения состояния описан внутри контейнера, а снаружи мы лишь говорим, какое изменение необходимо выполнить. Этот подход резко отличается от того, как мы делали в React, где чтение состояния и его обновление находится снаружи.
Продолжение следует...
Спасибо, я это понял в теории. И на практике тоже с самим редаксом. Мне бы реализацию увидеть на простом примере и голом ЖС без самого редакса, чтобы понять как это реализовано. Мне говорили что редакс это чисто паттерны функционального программирования. Вот и хотелось бы увидеть это на голом ЖС
Для написания самой простой версии Redux, нужно всего 7 строчек. Вот они:
// Второй параметр – начальное состояние данных внутри контейнера
const createStore = (reducer, initialState) => {
let state = initialState;
return {
dispatch: action => { state = reducer(state, action) },
getState: () => state,
}
}
Три принципа
Подведём итог. Что главное в Redux:
Single source of truth — используя Redux, мы работаем только с одним контейнером на приложение. Это одно из ключевых отличий от Flux-архитектуры. Всё состояние в одном месте.
State is read-only — данные меняются только косвенно, используя функциональный стиль.
Changes are made with pure functions — внутри хранилища можно использовать только чистые функции. Тут правила даже строже, чем во Flux, так как не позволяется использовать даже Date.now() и ему подобные функции, которые хотя и не обладают побочными эффектами, но все же являются недетерминированными. Все подобные вызовы должны делаться до вызова dispatch (подробнее об этом далее).
Начальное состояние
Выше упоминалось, что начальное состояние задаётся в определении редьюсера:
const reducer = (state = 0, action) => { / ... / }
Но часто этого недостаточно. Данные могут прийти из бэкенда и их нужно прогрузить в контейнер перед началом работы. Для этого случая в Redux есть особый путь:
const store = createStore(reducer, initState);
// @@redux/INIT
Redux посылает специальное действие, которое нельзя перехватывать. Если редьюсер реализован правильно и содержит секцию default в switch, то контейнер заполнится данными из initState. Пример:
const reducer = (state = 0, action) => {
switch (action.type) {
case 'INCREMENT':
return state + 1;
case 'DECREMENT':
return state - 1;
default:
return state;
}
};
const store = createStore(reducer, 100);
store.getState(); // 100
В коде выше, функция createStore вызовет редьюсер так: reducer(100, '@@redux/INIT'). Затем выполнится ветка default и состоянием контейнера станет число 100.
Что за специальность? Если около CS, то нормальный ли диплом? Выдадут копию на английском, достаточно ли кредитов для перезачет его и тд.
Если нет - смело вали и даже не думай. Иначе - хуй знает, даже в вакансиях с jQuery есть пункт "bachelor degree".
Информационные системы специальность. На английском вряд ли выдадут вуз довольно мухосранский, хоть и в миллионнике, про кредиты хз
Чел, что лучше: корка мухосранской шараги, которая нах никому не нужна вне этого Мухосранска, или гарантированная жизнь, причём в капиталистической стране? Ну я хуй знает.
>вуз довольно мухосранский
>про кредиты хз
Иди узнавай про кредиты в Болонской системе, конвертируется или нет, сколько их будет и посмотри сколько должно быть по основным предметам. Если не перезачитывается - уезжаешь, не говорят внятно - уезжаешь, впадлу узнавать - уезжаешь.
11 апреля РФ и РБ исключили из Болонской системы. Поэтому я ему говорю в любом случае валить.
Смело уезжай. Диплом хорош, когда это топ вуз и топ специальность. В крайнем случае потом купишь корочку синергии если хочется формально иметь хоть какой нибудь диплом. Но по факту везде ценят опыт и знания/скиллы.
Тернарный оператор для присваивания. Нужно несколько действий по условия - используй if
Пнятненько, спасибо.
Хз, зная как в реакте упростили жизнь хуками то не задумываясь сказал бы redux toolkit. Но сейчас изучаю его и всякие createAsyncThunk, createSlice и прочая параша еще более запутанными кажутся чем чистый redux. Поэтому забил хуй и без тулкита вкатываюсь
Посоветуйте еще чего-нибудь полезного, в частности для разработки PWA приложений
>Посоветуйте еще чего-нибудь полезного
HTML и CSS. Без иронии.
Жс прогер не знающий верстку это кринж йобанный.
>>81399 (Del)
А чем плох жиквери?
>>81411
Ну про верстку понятно. Как я уже сказал, интересует тема PWA. Что можно посмотреть по верстке масштабируемых приложений?
Бля а где можно за минимум времени поизучать? Уже тайпскрипт освоил с реакторедаксами и нодами (ясное дело на уровне нуба но ютуб клон какой могу сделать на этом стеке) а в верстку так и не научился.
Сказать по делу есть что?
на скрине норм вариант? или как проще написать?
Нахуя map и includes, когда есть some? Перемсенные с булями должны нызываться с is
а можно записать как то в одну строчку, чтоб оно еще и выходило из функции?
find()
Я попытался в C# вкатиться и оказалось что без Visual Studio, которую мой ноут не тянет, я нихуя не могу.
А на js тоже вроде можно игры делать и фронтенд по моей нубской логике не должен особых мощностей требовать, поэтому я пришел сюда, вот
Чем конкретно хочу заниматься пока не знаю, решил начать с того, что мне комп не расплавит
Не твое значит, раз за два года нихуя не получается. Займись чем-нибудь другим, есть ещё куча профессий
Так я трудоустроен, я ебанутый что ли назад выкатываться? Просто я меееееееедленный, мне уже несколько раз замечание делали. Все думают что я хуи пинаю, а я работаю блять.
Я не могу блять. Я пишу код (разметку), потом верстаю (сразу делаю адаптивно, чтобы все красиво пиксель в пиксель с макетом), потом пишу логику, потом тесты, потом нахуй день кончается и я опять нихуя не сделал.
У меня еще такая привычка дурацкая по 40 раз возвращаться к сделанной работе и проверять, все ли меня устраивает, можно ли где-то что-то сделать проще лучше и т.д.
Сам жс не расплавит, но плавить будет докеровская ебанина заместо локального бэкенда.
Тогда ты не тем вопросом задаешься, программист хуев. Зайди в гугол и напиши "Как избавиться от перфекционизма"
>Потому что очевидно проще сначала сверстать, а потом писать логику.
Ага, а потом вся логика в императивном говне, потому что ты уже сверстал.
Я вообще не понимаю как верстка может влиять на стиль кода. Логика и верстка это две параллельные вселенные которые никак не пересекаются.
https://github.com/LekoArts/gatsby-themes/tree/main/themes/gatsby-theme-jodie
Нужна возможность добавлять mp4, а не только картинки.
Создал src/pages/testvid.js по образцу с пика 2, и закинул тестовый видеофайл в нужную папку
Это "кирпичик", который мы можем добавлять в файлы страниц.
Как теперь добавить его на страницу? Как-то нужно скопировать темплейт и сделать оверрайд? Установить аддон? Как-то иначе?
Сорян, если тупо спрашиваю или не даю нужной инфы.
Удалось модифицировать 404. Вроде двигаюсь в правильном направлении, даже термин из доков нашел - shadowing.
React redux typescript
Второй год работаю, релокейт от компании в которой я сейчас, а не от какой-то новой
>Смысл нуба брать, если можно хардовых челов набрать?
У хардовых челов уже есть работа. А если вдруг и вывалится на рынок, то у него запросы адовые. Компании могут сколько угодно плакать, что джуны не нужны, но мидлов и сеньорит им никто не даст, тем более по дешевке.
Нашел место, где все картинки обрамляются тегом:
https://github.com/LekoArts/gatsby-themes/blob/main/themes/gatsby-theme-jodie/src/components/project.tsx#L50-L54
1) Как сделать так, чтобы эта функция подбирала еще и видеофайлы, а не только картинки?
2) Как сделать так, чтобы на основе того, картинка это или видео, использовался либо тег <GatsbyImage> с пикрейлейтед, либо мой тег <video controls>?
Доку редакса читай. Там есть примеры что и как типизировать.
Ты хоть проблемный тип назови, наркоман. А то стандартный ответ: программирование - не твоё.
В нормальных редакторах при наведении на функцию или переменную всплывает попап с ожидаемыми типами.
Но проблема не в попапах, а в типах либ, которые скатываются в ебанину с вагоном дженериков, у которых ожидаемый тип тоже из вагона дженериков состоит. Плюс тайпскрипт рекомендовал в прошлом однобуквенные дженерики, так что существует пласт кода, в котором нужно ковыряться в кишочках сигнатуры, потому что в попапе будет залупа уровня IZalupa<C, B, T>. Достачно сложные структуры очень сложно выразить без юнионов/интерсекшенов, а значит их нужно писать через типы заместо интерфейсов, что выливается во многоэтажные сообщения об ошибках в виде безымянного литерала.
Будто тебя спрашивать будут, лол. Кабанчик поставит перед выбором или пилить фронт, или пиздовать на фронт, и ты сразу обмякнешь.
Та я и не против. Сначала надо вкатиться, чтобы кабанчика найти
Пацаны, как оперативно освежить в памяти современную вёрстку с чисто практической точки зрения?
Сто лет с бэка не вылазил, нихуя не помню уже а тут всякие гриды да модные семантические элементы.
Гриды это цсс, к верстке не имеет отношения. Семантическую вёрстку никто не пишет, слишком сложна для мартышек, хуярят по старинке на дивах (некоторые даже батоны на дивах делают, лол). Вообще в плане элементарной веб-грамотности щас полный упадок и декаданс, так что лепи все на дивах, оборачивай каждый див во враппер-див на всякий случай, ну и ещё пару дивов в каждый контейнер вкидывай на случай, если филлеры понадобятся.
мимо 6 лет варюсь в таком котле из петушиного поноса
>>82290
Ах да, забыл добавить еще пару важных вещей, которым надо следовать, чтобы уверенно сойти за своего:
- обязательно вставляй все картинки через <img> или <svg>. Чем жирнее получится HTML - тем лучше. Альт-атрибут всегда оставляй пустой или, еще лучше, пиши туда что-нибудь типа "image" или "pic".
- старайся не использовать для форматированного текста тэги типа <h1..6>, <p> и т.д. Вместо этого делай все это дивами и обвешивай классами, аля <div class="red bold-600 underline-green font-size-14">. В идеале все стили у тебя должны оказаться внутри HTML, с отдельным классом на каждую css проперти и каждое ее значение.
- всегда держи в уме, что лейауты в 2022 можно делать исключительно на флексах и гридах, поэтому все элементы попарно оборачивай в специальные врапперные дивы.
- старайся использовать по максимуму новые фишки HTML5, такие как contenteditable. Если у тебя есть форма - сделай ее дивом, инпуты тоже сделай дивами с contenteditable="true". Сабмит-кнопку тоже сделай дивом. Ресет-кнопку старайся не использовать никогда.
- если пришлось все-таки сделать форму на инпутах, никогда не добавляй инпутам лейблы. Вместо этого всегда используй placeholder. Рекомендую выбирать для плейсхолдеров максимально обобщенный текст вроде "Enter text", и задать цвет текста плейсхолдера как можно ближе к фоновому цвету.
- заранее думай обо всех возможных девайсах и навешивай соответствующие классы на все элементы. Аля <div class="xs-3 md-4 lg-6 xl-12">
- рекомендую помещать <meta charset="utf-8"> как можно ближе к концу HTML документа.
Никому твои гриды нахуй не нужны, все юзают максиму бутстрап сетку и то это продвинутые. Все остальные ебашут дивы и флексбоксы и знаешь что? Это практично и быстро. Освой флексбокс остальное хуета.
>>81927
1) поподробнее можно? я так по одной строчке не пойму куда двигаться. что именно нужно заменить? в проекте сейчас нет плагина gatsby-plugin-image и плагина для видео, но видео вроде и так работает
Это настолько же практично и быстро, как вытирать жопу пальцем и потом его облизывать. Один сплошной профит: быстро, не надо тратиться на бумагу, руки мыть не надо, воду не тратишь.
Наврал. gatsby-plugin-image есть. Но дальше опять затык. Эдитор направил в декларацию, а где само тело функции? VSCode больше никуда не может прыгнуть отсюда.
Насколько это правда? Тоже гриды в рот ебал, но планирую получить все фишки перед поиском новой работы.
>вникать
Дано:
- темплейт (пик 1)
- который берет кучку картинок в папке (пик 2)
- и маркдаун файл (пик 3)
- и генерит из неё страничку (пик 4)
Нужно: чтобы можно было закинуть в эту папку еще и видео, и оно подхватилось и как и картинка.
Что я пока безуспешно пытаюсь сделать: найти место, которое нужно модифицировать, чтобы в массив попадали еще и видео. Тут затык, так как я не понимаю, где оно собирает файлы, нужно ли это делать через некие конфиги или шейдинг файлов.
>- заранее думай обо всех возможных девайсах и навешивай соответствующие классы на все элементы. Аля <div class="xs-3 md-4 lg-6 xl-12">
Вокруг этого аж целый фреймворк сделали, который требует больше ёбли для установки и поддержки, чем бутстрап, но при этом более костыльный и ограниченный, чем бутстрап.
>>82315
Тащемта недостаточно практично, можно жопу напрямую лизать.
Это уже проблема конкретных либ, только самому переписывать и слать пр.
Удвою, гриды для педиков, Ъ-посоны верстают тейблами под ие6.
Это фейлвинд который? Я прост не шарю, избегаю "фреймворков" CSS как проказы
Темплейт ничего не берёт сам, он только принимает массив с контентом и маппит во вьюху. Смотри на пропсы, которые ты кидаешь в темплейт, смотри, откуда оно берёт data.images.nodes.
Однобуквенные дженерики, особенно когда их несколько, это вообще пиздец, таким мудакам надо отрывать руки и засовывать в жопу ладонью внутрь. Насмотрятся блять в какой-нибудь JDK и тупо копируют, ебучие каргокультяпки.
Твой кот не здох ещё?
но не закрывается сука, какого хуя
в консоли я вижу свою функцию но она какого то хуя не вызывается
эта же функция на кнопках работает норм
так заработало, хуй знает
Там точно не keyCode?
Врешь ли в резюме?
Как часто меняешь работу?
>>82397
Да, это помогло. Спасибо.
У тебя зис в коллбеке берётся относительно окружающей среды, в которой вызывается, то есть шиндош. Во втором случае зис это инстанс класса.
Спасибо анон, теперь понял
Изи.
Просто посмотри примеры приложений, чу́тка въедешь чопачем и как тут лепят хайлоад аппсы. Как пример, realworld на гх, там много реализаций, очень.
Бэк вообще халява. Я хз нахуя их вообще держат если фронтендер это все может делать
> Сама она как есть весит аж 5 мб, думаю, вставлять ее картинкой будет хуевой идеей.
И тут ты, конечно же, сразу подумал про svg. И что надумал?
<script>
"use strict";
let myString = "Иван Петров";
alert(typeof myString); // Должно выдать, что "Иван Петров" - это строка.
let myNumber = Number(myString); // Это НЕ должно сделать "Иван Петров" числом.
alert(typeof myNumber); // Должно выдать NaN.
</script>
потому что NaN - это число
А аргументы будут?
На виндов события вешать.
Для вката надо учить js/ts, а инструменты и фреймворки - это уже обвес и +- не важно
чо скажете?
Как это реализовать? Я нагуглил что для взаимодействия между программами есть named pipes, как я понял, это просто поток, куда одна программа может писать, а другая читать. Будет тогда два пайпа, пусть в один луа пишет, в другой нода, ну и типа вот.
Или лучше просто сделать сервер на локалхосте через LuaSocket и так взаимодействовать?
Делай на том, что лучше всего знаешь. Хоть в файл данные пиши, лишь бы тебе самому было комфортно с этим работать
Ну я знаю, что если покупаешь сервак, то там можно выбрать типа у тебя среда для ноды будет и он автоматически всё сделает. А вручную как это выглядит? Допустим у меня есть удалённый сервер. Заливаю файлы через ftp, через ssh подключаюсь и прописываю npm start, правильно? А если сервак крашнулся как сделать чтобы он автоматом стартовался?
Писать свою обёртку-костыль, перехватывающую и обрабатывающую почти все ошибки или ставить чужой костыль, типа pm2.
ебаааать заёба
фрагмент нужен чтобы не было лишних divов (т.е. return должен возвращать 1 див и если это будет фрагмент, то он не отрендерится). inline-стили можно прописать для тестов, но прописать стили там дохуя вариантов можешь не заморачиваться, у тебя не работает мб потому что ты ошибся где-то
Зачем тебе фрагмент, если внутри всё равно див, который содержит в себе всё остальное?
>у долбана с ютуба получается
Принеси видео, самому интересно.
Testing library https://testing-library.com/. И то, стараюсь максимально отмазаться от тестов на фронте. Люди ради покрытия тестируют экшены/редьюсеры, меня от этого уже блевать тянет.
C 1:33:00 - начало создания компонента.
1:34:30 - уже видно как css применились
https://www.youtube.com/watch?v=QxTeE5EMiWI&ab_channel=ДавайПопробуем%3AJavaScript
Хотя бля попробовал в Эдже и получилось. А в хромах и прочих яндекс браузерах не открывает. Странно.
Что в эдже что в яндекс браузере пишет показываются стили. Но яндекс отказывается отрисовывать эти стили.
Так, пчел, ты вопрос нормально формулируй.
>Разве можно стили внутри фрагмента прописать?
Когда я прочитал вопрос, представил этот код
<React.Fragment className="class">
<div>test</div>
<div>test</div>
</React.Fragment>
Так сделать нельзя.
У тебя на скрине фрагмент нахуй не нужен, там есть родительский див.
проблема только в css может быть и тайване этом вашем
Я видел как Абрамов сам был в ахуе со своего редакса.
братан ant design или mui для реакта
Имею в виду, можно ли сделать сравнения просто через значения i, не передавая их в переменные const current = numbers;
const previous = numbers[i - 1]
Например, указав индексы i.
Что именно в логе указать?
В индексации [i - 1] прописал для сравнения с предыдущим, но результат для 3, 1, 2 true.
if (number.length < number.length[i - 1]) {
console.log(number);
return false;
То есть каждое последующее число должно быть больше.
у тебя просто number[i-1] должно быть
Мне код надо как-то в простыню развернуть чтоб посмотреть все шаги или как это сделать?
>Никому твои гриды нахуй не нужны, все юзают максиму бутстрап сетку и то это продвинутые.
Пиздец, что за хуйню я прочитал. Гриды тебе почти всю адаптивность делают автоматически без запросов и сложные композиции ты без них вообще хуй сделаешь.
>>82315
>Это настолько же практично и быстро, как вытирать жопу пальцем и потом его облизывать. Один сплошной профит: быстро, не надо тратиться на бумагу, руки мыть не надо, воду не тратишь.
Двачую.
Дайте подсказку какую нибудь.
https://www.codewars.com/kata/52b7ed099cdc285c300001cd/train/javascript
Первый шаг это очевидно сортировка по возрастанию, по обоим числам. Тут проблем нет.
Второй шаг это слияние пересекающихся интервалов. Тут не получается ничего. Как это делать?
Ну и на третьем шаге надо просто интервалы посчитать и сложить.
Если одно из значений одного интервала лежит между значений другого интервала, то берутся крайний значение из обоих интервалов и создаётся новый интервал из их крайних значений.
Вкатунский гайд на MDN.
Создаёшь новое значение из интервалов 1 и 2, далее добавляются 2, 3, 4 и так далее. Нихуя не уменьшилось.
Может, новое значение неверно задано? Нужно сделать так, чтобы прошлые не добавлялись, то есть заменить в сумме 2 значения на одно новое или несколько.
>Нужно сделать так, чтобы прошлые не добавлялись, то есть заменить в сумме 2 значения на одно новое или несколько.
Я уже неделю думаю как это сделать.
https://codepen.io/pivpivpiv/pen/VwxEobY?editors=1111
Ну вот последнее. Я думал оно, если несколько раз запустить, всё сделает, а оно делает хуйню какую-то
Здравствуйте. Посоветуйте каким костылем заменить бэкенд на учебном проекте. Вроде бы Firebase неплох, но сложилось впечатление что для его использования необходимо перечитать кучу документации. Может быть есть варианты побыстрее и попроще? Желательно бесплатные.
Ну зайди в исходники метода и посмотри что там внутри написано. Ты ведь даже не написал что за "сервер"
JSON Server.
pixabay. я просто думал что это одно и тоже, из локал стораж доставал данные через JSON.parse() а ответ от сервера так нельзя
не стукай, я только вкатываюсь
>pixabay
Хз где у него там исходиники лежат. Нашел только это https://github.com/orgs/Pixabay/repositories
В интернете "pixabay response.json()" ничего особо не ищет.
Рад бы помочь, но сам не понимаю что ты там вызываешь
https://pixabay.com/api/docs/
пример запроса - https://pixabay.com/api/?key={ KEY }&q=yellow+flowers&image_type=photo
короче вроде разобрался
JSON.parse() на ответе от сервера нельзя использовать, он не для этого я так понял
даже если будет что возвращать типо строки или цифры, все равно ошибка
JSON.parse() для парсинга джейсонов в целом. response.json() парсит только тела ответа.
>>85249
Если ты про экспресс, то нихуя не бесконечные и никакие там действия не "передаются". Если не заметил, то у всех колбэков одинаковая арность, и даже у сраного обработчика ошибок присутствует req, res, next в аргументах. И все действия заключаются в мутации аргументов req и res.
мне по другому ошибку не обработать нормально
"НЕ РАБОТАЕТ" ворд у секретарши. Ты кто такой сука чтоб такое высирать? Почему у меня работает?
https://codepen.io/pivpivpiv/pen/jOxQPVd?editors=1111
>response
Это общепринятое имя аргумента коллбека после запроса. Можешь назвать и otvetServera.
Да, это понятно, но что скрывается под этим именем - это уже большой вопрос. Я все еще рассуждаю в контексте изначального вопроса
>вызов метода на ответе от сервере response.json() и JSON.parse() это не одно и тоже? в чем разница?
JSON.parse() как минимум принимает аргумент, а response.json() - нет и единственное ли это различие или нет, неизвестно. Может он какие-то екзепшны кидает или наоборот нет. Вот к этому я и веду, что надо смотреть исходники конкретной реализации
> единственное ли это различие или нет, неизвестно
На, ознакомься:
https://developer.mozilla.org/en-US/docs/Web/API/Response
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON#static_methods
>JSON - это стандартный объект
JSON это формат сериализации, а также класс в жс со статическими методами.
>что такое тут response
Открываешь доку экспресса и смотришь.
>>85572
Ты блять вообще про какой контекст говоришь, браузерный или серверный, наркоман? С такими тупыми вопросами тебе только на фронт пиздовать.
>JSON это формат сериализации,
Ну это очевидно. Не души
>а также класс в жс со статическими методами.
Не класс, а объект. И в чем смысл уточнять, если ты и так понимаешь о чем идет речь?
>Ты блять вообще про какой контекст говоришь, браузерный или серверный, наркоман?
Все мои посты - это попытка выяснить о каком именно инструменте идет речь, который возвращает этот "response". Потому я и написал в самом первом посте, что надо плясать от того, откуда он приходит.; Тот же expressjs тоже возвращает response и что, это автоматически будет значить, что он возвращает это
Нет
>Не класс, а объект.
Откуда тогда у этого "объекта" статичные методы?
>https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON#static_methods
>И в чем смысл уточнять, если ты и так понимаешь о чем идет речь?
Проблема в том, что ты нихуя не понимаешь.
>Все мои посты - это попытка выяснить о каком именно инструменте идет речь, который возвращает этот "response".
Ты так и не назвал контекст в котором этот response вызывается.
В чем проблема объекта со статичными методами?
JSON = {
parse: (str) => объект, который спарсили
}
>Откуда тогда у этого "объекта" статичные методы?
Расскажи лучше почему конструкция let foo = new JSON() не будет работать
>Проблема в том, что ты нихуя не понимаешь.
Объясни
>Ты так и не назвал контекст в котором этот response вызывается.
Я прямым текстом написал, что я этот контекст их хочу выяснить. Как я могу его назвать, если я его не знаю?
В том, что статичные методы имеют смысл только в контексте классов.
>>85612
>Расскажи лучше почему конструкция let foo = new JSON() не будет работать
Потому что у него нет конструктора.
>Я прямым текстом написал, что я этот контекст их хочу выяснить. Как я могу его назвать, если я его не знаю?
Ты ебанутый? Контекст браузерный или серверный?
Чекаешь в корневом компоненте ссылку роутера и условно присваиваешь этот класс.
У вьюжс какой-то свой, особенный цсс или ты делаешь фронт с фреймворком, не зная как работает цсс?
Ну хз это особенность вью или нет, но у него в компонентах можно писать style scoped и тогда css применяется только для этого компонента, а не вообще ко всему сайту. Вот я и подумал, мб можно как-то обратиться к родительскому компоненту из scoped. Типа чтоб только при открытии этого компонента менялся класс родителя.
>>85739
Окей, попробую, спс.
Ой блин, кайф, сработало.
>Потому что у него нет конструктора
Класс у которого нет конструктора? Ты уверен?
>Ты ебанутый? Контекст браузерный или серверный?
Так это ты ебнутый, лол. Анон задающий вопрос выше должен это уточнить. Я тебе уже несколько раз сказал, что я не знаю о каком response идет речь
А как сделать чтобы язык обновился на странице после изменения? Автоматически этого не происходит
>Класс у которого нет конструктора? Ты уверен?
Легко, так как конструктор - всего-лишь поле объекта.
>Так это ты ебнутый, лол. Анон задающий вопрос выше должен это уточнить. Я тебе уже несколько раз сказал, что я не знаю о каком response идет речь
Хули тогда ты у меня спрашиваешь, уточнятель хуев?
>Легко, так как конструктор - всего-лишь поле объекта.
Это не тот случай, так что мимо. JSON - это объект с методами
Это равноценно созданию функции у которой типа "нет метода вызова". Бред какой-то.
Изучи чтоли что такое конструкторы в JS-классах.
>Это равноценно созданию функции у которой типа "нет метода вызова".
Битчес донт кноу эбаут статик классес.
То есть JSON - объект, а не класс
В js нет статик классес
Если вам так важно, то откройте стандарт (а лучше старый, который es5, где классов вообще нет, а жсон есть)
> 18 ECMAScript Standard Built-in Objects
> There are certain built-in objects available whenever an ECMAScript Script or Module begins execution.
...
> 25.5 The JSON Object
> The JSON object:
>
> is %JSON%.
> is the initial value of the "JSON" property of the global object.
> is an ordinary object.
> contains two functions, parse and stringify, that are used to parse and construct JSON texts.
> has a [[Prototype]] internal slot whose value is %Object.prototype%.
> does not have a [[Construct]] internal method; it cannot be used as a constructor with the new operator.
> does not have a [[Call]] internal method; it cannot be invoked as a function.
Откуда тогда у этого "объекта" статичные методы?
>https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON#static_methods
В стандарте просто сказано что есть две функции (какую выберешь?), хз что на мдн имели ввиду.
Я в программирование с телефона вкатился. Какое-то время на бумаге программы писал. То, что у тебя есть компьютер - чудо!
Щас подумал, а ведь есть еще 21:9, значит формат не важен и есть инструменты которые сами все это дело подгоняют под любой формат?
>хз что на мдн имели ввиду
Скорее всего они сами не поняли. Но если за этим правда есть какое-то обхяснение, это было бы интересно выяснить. На собеседовании таким кинуть в работодателя, он охуеет и сразу возьмет на работу
Совсем не важен, это правда. Удачи во вкате
>они не понимают разницу между жс и ес
Жс лишь одна из имплементаций ес, как акшонскрипт, который был во флеше. Имплементация не обязана полностью следовать стандарту, на котором основывается.
Жс дрисня не только потому, что имплементирует ес через жопу, но и потому, что в собственном стандарте у него противоречия между легаси из палеозоя и свежими фичами, принятыми в стандарт и описанными на мдн/в3.
>>86035
Не возьмёт, просто зачтёт тебе тему, и только если сам знает, о чём ты говоришь. На собесах нужно, чтоб мдн и дока нужного фреймворка от зубов отскакивали, даже если просто зазубришь без вникания.
>На собесах нужно, чтоб мдн и дока нужного фреймворка от зубов отскакивали, даже если просто зазубришь без вникания
Спорно. Дока на то и дока, что нужно уметь ею пользоваться, а не учить наизусть. Меня на текущее место работы взяли исключительно проверив знания базы типа алгоритмов, паттернов, структур и ванильного JS, когда как уже на рабочем месте используется TS + несколько узких либ
Когда как, на самом деле. Могут не дойти до теории на собесе вообще, просто дать задачки порешать, а могут наоборот, целый этап выделить только на теорию. Во втором случае чаще важнее отвечать по доке, чем объяснять своими словами.
Но самый гумоз это когда начинают гонять по легаси ебаному, которое лет пять, если не больше, никто не использует на практике.
Но зачем, когда можно сраться по семантике каждого отдельного билтина разной степени древности? Между нодой, ДОМом, екмаскриптом и тайпскриптом, контента ещё на пару сотен тредов.
>>86035
Есть конечно объяснение, этот "объект" был добавлен в спеку и реализован во времена, когда "классы" в жс писали только извращенцы, через функции-конструкторы. По факту он используется как статичный класс.
Классов в js все ещё нет, гений. Это синтаксический сахар над все теми же функциями-конструкторами
А как на чистом жс это реализовать?
Так сервис, который пишет и читает из базы - это прокладка обычная. Что там тестировать и зачем?
1. Юнит-тесты - это про тестирование какой-то отдельной, изолированной сущности. Например, функции конвертации чего-то, которая чистая и сама в себе
2. Если ты в коде сервиса просто перекладываешь параметры в запрос и отправляешь их дальше без какой либо обработки, то это не надо тестировать (ну или это уже не юнит тесты)
Расскажи какую проблему ты решаешь написанием тестов для сервиса. Тогда будет понятно что выбрать надо
Не, надо вопрос по другому ставить
1. Ты ты хочешь протестировать свой код в три строчки, который параметры в метод вызова стандартной либы перекладывает? В этом нет смысла
2. Ты хочешь протестировать стандартную библиотеку которую используешь для работы с базой? Она уже протестирована
3. Ты хочешь протестировать базу? Ну тут точно не юнит тесты
4. Что ты хочешь?
>Классов в js все ещё нет, гений. Это синтаксический сахар над все теми же функциями-конструкторами
Давай расскажи ещё про синтаксический сахарок в контексте обсуждения семантики.
Что за привычка от вопроса прямого уходить? Просто ответь что ты сказать хотел
>>85013
Такую хуйню за часик написал. Только вот тесты производительности чо то не проходит.
function sumIntervals(intervals) {
const a = []
const b = []
intervals.forEach(item => {
a.forEach( (temp, index) => {
item = overlap(item,temp,index,a)
})
a.push(item)
})
// тут можно как нить рекурсивно или через функцию сделать чтобы пересечения среди пересечений вычленить, лень было
a.forEach(item => {
b.forEach( (temp, index) => {
item = overlap(item,temp,index,b)
})
b.push(item)
})
return b.reduce( (sum, current) => sum + current[1] - current[0],0)
}
function overlap(first, second,index, array) {
if (second[0] <= Math.max(...first) && second[1] >= Math.min(...first) ) {
array.splice(index,1)
return [Math.min(first[0],second[0]), Math.max(first[1],second[1])]
}
return first
}
>>85013
Такую хуйню за часик написал. Только вот тесты производительности чо то не проходит.
function sumIntervals(intervals) {
const a = []
const b = []
intervals.forEach(item => {
a.forEach( (temp, index) => {
item = overlap(item,temp,index,a)
})
a.push(item)
})
// тут можно как нить рекурсивно или через функцию сделать чтобы пересечения среди пересечений вычленить, лень было
a.forEach(item => {
b.forEach( (temp, index) => {
item = overlap(item,temp,index,b)
})
b.push(item)
})
return b.reduce( (sum, current) => sum + current[1] - current[0],0)
}
function overlap(first, second,index, array) {
if (second[0] <= Math.max(...first) && second[1] >= Math.min(...first) ) {
array.splice(index,1)
return [Math.min(first[0],second[0]), Math.max(first[1],second[1])]
}
return first
}
Нихера не пойму в чём идея.
Этот шарит. У меня уже горит с додиков, которые тестируют функции от либ, а потом сидят и на ковередж надрачивают.
Не могу понять из-за чего, что она значит?
В коде прописано
for (let i = 0; i < text.length; i++) {
работает без ошибки если исправить на
for (let i of text) {
Говорю же, если заменить на for of, то всё работает. Ошибка именно в (let i = 0; i < text.length; i++
Экстрасенсы в отпуске, ты скинул только функции в которых ничего криминального не происходит.
Алсо переписал бы на класс с методами, дёргать внешнюю переменную в функциях такое себе.
Попробуй какие-нибудь переменные на let поменять. Где-то ты присваиваешь, а не мутируешь. Меняй по одной, найдешь где.
Не понял, в чём ошибка? В чём принципиальная разница между этими двумя строчками кода?
пиздос нах...
>половина этой хуйни ещё и для линукса
Сына-сычина, хватит играть кудахтере, пора ставить GNU Linux и начать за кудахтером работать. На крайняк купи мак
У тебя в первом случае в цикле может использоваться i как индекс, например, text.
text из первого случая === i из второго случая. Поэтому когда ты просто переписываешь на for of, ты, условно говоря, в цикле дёргаешь не "строка"[4], а "строка"["к"].
text
text
текст[и]
Да вроде нет. Один хуй перделки к сайтам больше ничем не прикрутить, так что не дождешься.
иронично
Вы видите копию треда, сохраненную 10 ноября 2022 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.