Это копия, сохраненная 27 апреля 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Больше пары строк кода в посте или на скриншоте ведут в Ад.
Для программирования на HTML https://jsfiddle.net/
Для Node.js с консолькой https://repl.it/languages/nodejs
Если рассчитываешь получить дельный ответ, сформулируй правильно вопрос: что я хочу получить, что я для этого делаю, что я вместо этого получаю. Если когда самостоятельно найдёшь решение — поделись в треде, мы за тебя переживаем.
Руководство для вката: https://developer.mozilla.org/
Спека разве что. Разные движки реализуют ее по-разному, так тут надо смотреть доки и сорцы конкретного движка.
Создаешь статичное поле-массив у этого класса, в конструкторе класса пишешь MyClass.StaticArrayOfInstances.push(this);
В дополнении к этому создаешь статичный метод ResetInstances который будет делать что то вроде: MyClass.StaticArrayOfInstances.forEach(e=>e.reset());
https://github.com/photopea/Typr.js/blob/gh-pages/src/
https://github.com/photopea/Typr.js/pull/16#issuecomment-474518653
Используется в пикриле.
Клон фейсбука/инстаграмм/твиттера.
>как устроен js изнутри
JS внутри никак не устроен. Тебе надо копать в сторону конкретных движков, а они все устроены по-разному. Где-то может быть JIT и овердохуя оптимизаций, а где-то самый простой интерпретатор
https://en.wikipedia.org/wiki/List_of_ECMAScript_engines
Где тег треда, долбоёб.
Проебан, хули. В следующий раз будет.
Ах ну да, редакс, роутер, вот это всё, даже какие-то шаблоны проектирования реактовские использовал
Главное не простота приложух в портфолио, а сколько тебе лет. Если ты студент или до 25-ти то там и Лаба 1 заебись и конторе зайдет. Если ты после 30-ти, то даже с личным фейбуком ты не ВПИШЕШЬСЯ В КОЛЛЕКТИВ. А судя по скрину апка норм, мне нравится.
Продублирую пост из предыдущего треда. Изначально ошибся с тредом.
Помогите новичку в React, пожалуйста. Есть родительский компонент, который содержит несколько дочерних компонентов-форм, которые можно добавлять и удалять по нажатию кнопки в родительском компоненте. Изначально количество компонентов зависит от того, какие данные пришлет сервер. В родительском компоненте есть еще кнопка "Отправить", по нажатию которой нужно забрать данные из всех дочерних форм и отправить на сервер.
Как получить доступ к данным в дочерних формах из родительского компонента? Я хотел создать для каждого дочернего компонента стейт в родительском и передать его в пропсах, но React не позволяет использовать useState в цикле.
>Как получить доступ к данным в дочерних формах из родительского компонента?
Вынести стейт в него.
>Я хотел создать для каждого дочернего компонента стейт в родительском и передать его в пропсах, но React не позволяет использовать useState в цикле.
А массивы и объекты он позволяет тебе использовать?
Вот щас обидно, мувисерч видимо одна из самых очевидных задач, в курсе буры никаких серверов вообще не было, просто получение и обработка данных :(
Заебали скругляторы.
А вот я свою тодошку выложил, ага.
Допустим, у меня один стейт на кучу компонентов. В виде массива объектов, хранящих записи из полей форм. Как мне связать отдельный кусок стейта с конкретным компонентом? С учетом того, что число компонентов и кусков стейта может увеличиваться и уменьшаться динамически.
Каждый раз, когда я пытаюсь что-то делать на React, у меня возникает стойкое ощущение, что на чистом JS все то же самое можно сделать в два раза быстрее и в три раза проще при вдвое меньшем объеме кода.
Фейсбук на нем удобнее делать посонам.
Скорость отрисовки всего этого на чистом ЖС падает по экспоненте по мере роста твоей приложухи
Ну камон, пропсы и коллбеки, как же еще. Это все даже к реакту отношения не имеет, как к таковому.
const [formsValues, setFormsValues] = useState([...])
const setFormValues = (i) =>
(nextFormValues) =>
setForms(prevFormsValues => prevFormsValues.map((formValues, j) => i === j ? nextFormValues : formValues);
return (<>
{formsValues.map((formValues, i) => <Form values={formValues} onChange={setFormValues(i)/>)}
</>)
Дальше можно усложнять, оптимизировать, передавать отдельные поля, перекатываться на формик и т.д.
Это от неумения обращаться с инструментом.
В том что у тебя приложуха когда-нибудь будет больше чем туду.
Суть — построение графиков и таблиц по заданным формулам из числовых значений выходных файлов разных форматов, сортировка этих файлов и прочее удобное, что приходилось лопатить в экселе для каждого выходного файла отдельно. Ни разу не писал с нуля приложение.
Требование — кроссплатформенность (под доебан и винду), минимальное использование ресурсов (чтобы на очень некроговне открывался и особо не жрал память), приятное визуальное оформление в сумме с расширенным функционалом (хорошая замена экселю под конкретную задачу).
Насколько я представил себе этап разработки: нашел подходящий по описанию фреймворк proton native, чтобы сделать GUI, накидал в автокаде сам GUI (пока только главного окна, пикрил), нашел подходящую библиотеку для построения графиков D3.js.
Примерно составил необходимый минимум реализации: считывание файла, определение его типа по размерам столбца (там уебищные текстовые файлы от разных производителей с разделителями в виде пробелов, мне нужно, чтобы автоматически выбирался нужный тип и в соответствии с ним обрабатывался), обработка информации и представление ее в нужном мне виде на экран.
Я ни разу не делал ничего, кроме заданий из разных курсов (это мне для хобби и удобства), расскажите, где обосрался? Какие будут подводные для нуба, что нужно добавить, с чего вообще начать, не упустил ли я чего на старте, любая критика. Заранее спасибо!
P.S. Создавая пикрил ещё не придумал, для чего будут нужны кнопки внизу, но для будущего функционала оставил под них место.
>дочерних форм
Это нарушение семантики. Оформляй всё в одну форму, а дочерние формы проставляй как филдсеты с инпутами внутри.
Чтобы всё, что не фейсбук, тормозило как говно. Типичный монополизаторский рыночек.
Ну так на выходе компоненты соберутся в одну форму.
>Типичный монополизаторский рыночек.
Лол, так пиши на чем угодно, фейсбук с ружьем за спиной у кого то стоит что ли?
Ты обосрался примерно во всем, поздравляю!
Начнем с того, что непонятно зачем ты вообще выбрал JS, если ты используешь ровно ноль его преимуществ.
>proton native
Ты понимаешь что это нативный фреймворк? То есть там не будет DOM. И никаких встроенных в браузер контролов не будет. Ты доку-то к нему открой, там даже инпута нет, лол. Сам все это будешь писать?
>нашел подходящую библиотеку для построения графиков D3.js.
Ага, которая рисует все на SVG/canvas и не работает с твоим протоном. D3 нужна куча браузерных API.
>минимальное использование ресурсов (чтобы на очень некроговне открывался и особо не жрал память)
Ага, кулстори. D3 не особо производительная библиотека (на SVG во всяком случае), а если ты переедешь на Электрон, то немного охуеешь от его потребления памяти.
Ты или бери плюсы, джаву, сишарп или на чем там сейчас пишут десктоп и ебошь на них или бери Электрон и сильно поумерь требования по производительности.
Мне кажется что ты плохо представляешь себе масштаб задачи. Тут на недели и месяцы работы даже для опытного разработчика. А уж сделать лучше экселя — просто манямирок.
>Требование — кроссплатформенность (под доебан и винду), минимальное использование ресурсов (чтобы на очень некроговне открывался и особо не жрал память)
Даз нот компют. Кроссплатформенность автоматом подразумевает ватагу нативных костылей под каждую платформу прямо в дистрибутиве и некую абстракцию от файловой системы, которая тоже будет костылиться и кушать память. Альернатива - пердолить бинарники под каждую платформу на каких-нибудь крестах.
Но тогда не будет выполняться
> приятное визуальное оформление в сумме с расширенным функционалом (хорошая замена экселю под конкретную задачу)
Так как на крестах ещё придётся и свою логику рендера писать.
Лучше всего подойдёт, учитывая тематику треда, Electron, что есть HTML/CSS/Node, но для десктопных приложений. Убийцу экселя из этого не сделаешь, но какой-нибудь прототип для впаривания вполне можно одному захуярить.
Выбрал, исходя из желания что-то написать на JS. Про протон понял, спасибо. В принципе комплюкторы потянут и электрон. В следующий раз, как буду в командировке, проверю, запустив там хромиум (я же правильно понимаю, что хромиумный фреймворк примерно столько же и сожрёт, сколько и сам хромиум). Про D3 тоже не сильно важно, могу и его заменить. Задача мне совершенно не к спеху, планировал за полгода напердолить в лучшем случае. Говорю же, хочу упростить себе работу, и в качестве хобби понять, каким образом писать ПО с нуля. Поковыряться только в радость. И уж тем более я не хочу сделать "лучше" экселя. Я хочу сделать подобно экселю, но только чтобы не плодить в каждой папке очередного выходного файла очередной идентичный файл экселя. Не думаю, что очень сильно обосрусь при построении обычных двумерных графиков зависимостей чего-либо от времени. Плюсы, джаву, сишарп и прочее не особо хочется трогать (особенно плюсы, я с ними и так работаю, программисты на моей работе пишут на них прошивки для моих изделий, хочется чего-то нового). Не относись к этому как к серьезному чему-то, просто убивание вечеров и свободного рабочего времени. И спасибо за указание на ошибки!
>>76057
Обидно, на одном предприятии дебиан стоит, хотелось и им разослать. Ну у них есть и на винде компьютеры, тогда от кроссплатформенности вынужденно откажусь. Спасибо!
Достаточно демона на ноде, и PWA, работающего с этим демоном.
Если будешь брать электрон, то он кросс-платформенный, все норм. У D3 производительно ок, просто далеко не минимальная.
В любой хорошей большой книге по жс это объясняют, в той мере, в какой это нужно знать.
Обычно это не так много инфы.
>разослать
Чувак, жс приложения деплоят на веб-сервере.
И работают с ними в браузере.
Понимаешь?
Разослать, блядь, ну надо же.
У тебя фундаментальные пробелы в развитии.
Закрой их, напиши туду лист на Vue.
Мозги на место встанут, а там решишь, что дальше делать.
Чо ты такой агрессивный? Не во всех местах разрешен есть свободный доступ к интернету, есть закрытие военные предприятия.
Электрон ты в анус себе задеплоил.
И там ему самое место.
>>76210
У-тю-тю, какие мы нежные.
Это была не агрессия, а стёб.
>есть закрытие военные предприятия.
Значит надо хостить на секретном военном веб-сервере.
А ещё лучше, конечно, найти работу не за колючкой.
Но, я понимаю, что в ебенях это может быть очень непросто.
Речь изначально шла про стендалон приложение для работы с файлами, какой еще веб-сервер?
Попробуй читать посты перед тем как на людей набрасываться.
Мне примерно понятно, что ты собрался обрабатывать.
Могу дать совет - не делай мега-приложуху "всё в одном".
Это вообще провальный путь, а для ньюфага - так без вариантов.
И, сейчас вообще в разработке тенденции прямо противоположные - микросервисы, single responsibility, и прочее подобное.
Попробуй (для начала) сделать это в виде набора специализированных утилит командной строки, под каждый специфический тип файла.
Т.е. у тебя есть файл определённого формата, ты запускаешь в комм. строке утилиту, предаёшь ей имя файла и какие-то параметры (что строить, куда писать), а она строит графики и отчёты в html/pdf/png/svg.
Сделай 1 утилиту. Для 1 типа файлов. С абсолютно минимальным функционалом. Потом - расширь функционал. Потом - сделай ещё одну, под другой тип файла. Потом - вынеси общий код в библиотеку. Потом - сделай третью, уже гораздо быстрее. Потом - если захочешь, наверни вокруг всего этого графическую оболочку.
Это называется UNIX-way. Возможно, ты что-то об этом слышал.
Делать всё это можно на чём угодно.
Я бы предложил питон. Там есть всё, что нужно, и, он, собственно, именно для этого. Графическую оболочку, если до этого дойдёт, можно сделать на PyQt или wxPython.
Но, на js тоже это всё можно, хотя это и будет сильно более заёбисто.
>понять, каким образом писать ПО с нуля.
Вот таким.
Если ты хочешь получить реальный результат, конечно.
>>76218 - кун
И нет, я не питонист, лол.
На каком веб сервер хостятся web extensions, HTA, standalone PWA и CLI-приложения, мань? По-моему, фундаментальные пробелы в развитии здесь у тебя.
Да можно и электрон.
Если хочется именно на js, и не веб, то тут вариантов не особенно много, как ты понимаешь.
По поводу моих подъёбок - это я, похоже, в мвп-треде немножко пересидел, там как раз такая атмосфера, лол.
>>76236
И, кстати, я бы эту задачу делал как серверную, с локальным деплойментом. Потому, что там, совершенно очевидно, вырисовывается и многопользовательность, и база данных по результатам экспериментов/прототипам устройств/или-что-у-них-там и т.п.
И бэк не на жс, ибо масштаб не тот, и специфика не та.
Но, это не подходит ньюфагу, который задал этот вопрос.
Хотя, по такому пути, как я описал выше, он может потом к этому и прийти, если захочет и осилит.
А сам как думаешь? Если не сделал интерфейса и системы для публикации новых новостей, то пересобирай всё каждый раз когда контент обновится.
На некоторых предприятиях нет сервера. Сейчас на живом примере объясню, что я хочу. Я разработчик схемотехник в одной небольшой НИИшке в ДС (не за колючкой, у меня все ок), и мое изделие проверяется на стареньких компьютерах (первая и основная версия изделия вообще из-под DOS, и для обработки приходится ребутиться в ХР, в новых уже совершенно другое ПО). В общем все эти предприятия, если у них что-то не выходит, либо присылают мне сами изделия, и я их у себя испытываю, либо присылают выходные файлы запусков в виде объемных DAT'ников с кучей цифр, разбитых по столбцам. Так как предприятий много, а я один, и в моих требованиях не прописано никакого ПО для обработки этих результатов, я и захотел облегчить себе в итоге задачу и заодно разобраться в JS. Прекрасно понимаю, что на питоне вышло бы легче, на плюсах эффективнее, а на джаве и сишарпе я бы нашел кучу примеров, но я хочу именно что освоить JS, так как он вроде как ОЧЕНЬ многозадачен сейчас и на нем пишут все, что душе угодно. Я и решил собсна проверить, почему бы и нет?
>>76235
Да, спасибо, я примерно так и собирался делать маленькими кусочками. Набросал интерфейс только чтобы вообще представить, какие свистоперделки хочу, ну и чтобы сюда отправить, так вроде понятнее, какую я задачу хочу сделать. Так как я неопытен, мне сразу указали на очевидные ошибки и в принципе я уже получил, что хотел. Спасибо!
>>76242
Ну я уже написал, что мне не совсем получится запускать ее на каком-то сервере, так как его нет. Это небольшая утилита для себя будет. Но за идею все равно спасибо!
Нахуй ты в это лезешь пчел, сиди перди в своем нии, делай пиздодельный вид, заставь всех думать что ты делаешь невьебенно важные вещи, нахуй тебе эта автоматизация
То, что у тебя собирает вебпак, по функционалу никак не должно отличаться от рабочей версии. Ты изначально не сделал никакой админки у себя в проекте, разумеется ты и не сможешь никаким образом публиковать новые новости, сделай админку, типа - залогинился особый пользователь, у него вылезает дополнительный интерфейс, позволяющий добавлять новые заметки и отправлять их на сервер, остальные пользователи автоматом обновляют эту инфу с сервера и видят у себя новые новости
Новости должны загружаться с сервера. Должны существовать пользователи с ролями вида "публикатор" у которых есть право загружать новые материалы. Публикаторы загружают новости, сервер их распространяет.
Ну чо обижаете. Я раньше, кстати, сидел как раз на одном из "колючих" заводов и собирал то, что сейчас разрабатываю, потом как раз решился после командировок перебраться в Нерезиновск по офферу. Если тут буду сидеть, то какой смысл? Лучше тазом рычать и повыше лезть.
>запускать ее на каком-то сервере
Ну, при разработке на JS используется Node.js
И это, в общем-то, сервер.
И запускать его можно локально, просто, чтобы иметь веб-интерфейс к своей программе.
А можно и не запускать, и использовать просто как набор библиотек.
Это просто такой способ сделать пользовательский интерфейс - локальный веб-сервер.
Прелесть в том, что можно запускать на одном компе (напр. на вирт. машине), а работать с ним - на другом.
Но, начинать с этого не надо, конечно.
Никакую оболочку вообще не надо делать.
Начать лучше просто с 1 маленькой консольной утилиты.
А, теперь понял, что вы все имели ввиду. Спасибо! Попробую просто пока набором библиотек обойтись, пока до интерфейса ещё очень далеко.
Еще и авторизацию делать, ага.
>Ну, при разработке на JS используется Node.js
>И это, в общем-то, сервер.
Ну нихуя себе, при разработке используется локальный сервер! Да ты прямо Америку открыл.
Насколько реально такое запилить в одну рожу? Это уже фулстак выходит или нет? Короче нужен сервер там крутится nginx и какой нибудь монго, там же лежит сайт, админ логинится в специальной форме создает контент отправляет на сервер, сервер отправляет остальным, правильно я понял?
>Получается нужно пилить отдельный интерфейс для админа с формами ввода загрузкой картинок, что бы он мог по сути мог оформить новый новостной блок?
А это значит, что эти данные надо где-то хранить, так что готовься расчехлять ещё один сервер/виртуалку под базу данных.
Ну ещё и редактор надо написать/подключить, статьи без подмножества html тэгов не кошерно писать. Причём этот редактор должен быть понятен человеку, не сведущем в программировании.
>Ебать это тяжело?
Это ты ещё до имплементации какого-нибудь OAuth не дошёл. Вот там начинается ёбля с менеджментом ключей и самописными скоупами.
У firebase есть возможно запилить на серверах гугла базу данных, сделать функционал для логинов, всем этим можно управлять с npm модуля, в общем гугли ищи в эту сторону, но может кто подскажет как это еще проще можно оформить
Зависит от формата новостей. У lenta.ru например всё вида - картинка + текст. Если делать в таком формате, то будет не сложно. Для чего-то более красивого нужно будет писать свой интерфейс и логику обработки вводимых данных.
https://jsfiddle.net/mpyaz23f/
>Это было очевидно, мог бы сам дойти, посиди минут на 5 больше.
Ага, успокаивай себя, даун. Жаль только это не сделает тебя умнее.
fileInput.onclick = () => {
console.log('hey')
}
Нихуя не могу понять как работать с нодами в тайпсккрипте. Any писать не хочется, а если HTMLElement | null, то обработчик события не прикручивает. инб4 тайпскрипт не нужон
Указанный тип никак не влияет на время выполнения, если не прикручивается с HTMLElement, то и с any ничего не прикрутится.
Так и делаю интуитивно. Но разве так разрабы делают при работе с нодами? Постоянно ифом проверять есть ли в переменной элемент?
const fileInput: HTMLInputElement | null = document.querySelector(".file");
if (fileInput) {
fileInput.onchange = (e): void => {
console.dir(e.target);
};
}
Тут вопрос в другом - зачем?
Если данные подтянуть с бека - это другая задача, и делается не так.
Ничего не приходит в голову, кроме того, что надо обновить какие-то зависимости - картинки, скрипты.
Но, если это твои зависимости - надо ставить хеши в URL и оно само обновится при открытии страницы, если изменилось.
А если чужие - тогда непонятно, почему такое странное требование - 1 раз, и всё.
Да хуй его знает зачем. Может ему за это бабла отвалят. Спросили - я подсказал
Можно запрос от сервера на редирект отправить.
>с чего вообще начать
Задача довольно объёмная на самом деле, объём работы большой.
Попробуй сначала отдельные части, чтобы уже потом на их основе и полученного опыта делать целиком.
Начни, например, вот с этого:
>считывание файла, определение его типа по размерам столбца (там уебищные текстовые файлы от разных производителей с разделителями в виде пробелов, мне нужно, чтобы автоматически выбирался нужный тип и в соответствии с ним обрабатывался), обработка информации и
То есть считать файл, распарсить, перевести в унифицированный формат, в JSON конкретного вида, например. Самостоятельная задача, в любом случае делать придётся. В зависимости от того, какие файлы, возни может быть много. В общем это один модуль.
Вторая задача - разберись с тем, как строить нужные тебе графики, без дополнительного функционала, на базе стандартизированного представления, описанного выше.
Ну и разные таблицы.
Продолжение второй задачи - функционал по переключению с одного вида на другой, управление масштабированием и т.п.
После можно пытаться сделать приложение-прототип для одного вводного файла.
Файловый менеджер отдельная тема, никогда не делал, но руками самому точно сложно. Наверное есть какие-то готовые варианты.
На самом деле тут дохрена работы, написать свой собственный excel ну совсем не так просто. Для новичка скорее всего непосильно, но хоть с частью задач можно разобраться.
можно пройти курс по реакту и сразу на синиора вкатиться?
Да
>Требование — кроссплатформенность (под доебан и винду)
Магических межосевых апи нет и никому они не нужны, даже в электроне тебе придётся писать if win32
>минимальное использование ресурсов (чтобы на очень некроговне открывался и особо не жрал память)
Тогда JS совсем не вариант
Как уже написали выше, если принципиально хочешь жс - лучше напиши pwa с демоном
Можешь присмотреться к биндам какого-нибудь qt на голанге
>proton native
Максимально сомнительный фреймворк
ложится в /var/www?
Ты бы вопрос сформулировал нормально для начала. Ни бабель, ни вебпак, ни папки dist и загадочная var/www никакого отношения к SPA не имеют.
Всё высирается в один js файл, типа bundle.js.
Иногда - в несколько частей, но, смысл тот же.
Иногда - ещё и css.
Этот файл (или несколько) включается в практически пустую html страницу.
И потом рисует тебе всю хуйню при загрузке страницы.
Этот шарит. Спасибо. А вот теперь смотри, есть сервер где это все лежит, теперь если я хочу получать/отправлять данные на страницу нужно на этом же сервере иметь базу данных, которая будет обрабатывать запросы?
У тебя слово «сервер» подразумевает слишком много разных вещей. И http-сервер, и приложение, и физическую машину.
Страница (то есть JS-код) может получать и отправлять данные самостоятельно, ей для этого помощь не нужна. БД сама по себе запросы не принимает и вообще никто не делает их тупо торчащими в интернет. Она только для хранения данных. Чтобы обрабатывать запросы нужен бэкенд, то есть приложение, включающее в себя http-сервер, какую-то логику и умеющее работать с базой данных.
Лежать все это может где угодно, хотя желательно чтобы бэкенд и БД были в пределах одной закрытой сети, но не обязательно на одной машине.
Настраивать все это самому довольно геморно, но есть разные сервисы которые неплохо абстрагируют всю сложность, например, Heroku.
>спа
Это 1 (одна) HTML5 страница, к которой прилинковано куча JS кода, который динамически рисует на ней всю морду. Бандлинг не обязателен, можно прямо ручками каждый отдельный JS файл линковать, это тоже будет SPA
Это зависит от того, какие данные ты хочешь отправлять, и зачем.
И какие получать.
Ты не задавай тут наводящие вопросы, а скажи прямо - чего тебе надо?
Короче тупо хочу получать и заносить данные, например список товаров, с собственной базы данных, что нужно? Сервер, node js, апач?
Да, в этом случае у тебя должна быть база данных.
Как правило, это отдельный сервер, но, для простых случаев можно и SQLite - просто файловая база
Вообще, есть _очень_ много способов это сделать, и в двух словах это не объяснить.
Очень многое зависит от того, как именно это будет использоваться и кем. И от типа и объёма данных.
Для товаров, склада и т.п. "классических" применений лучше использовать "классические" (SQL) базы данных.
Например, MySQL или SQLite.
>mongoDB
>SQLite
Нет. CouchDB
Мне нужно сделать в самом классе метод, который проходился бы по всем экземплярам и проверял набралось ли в каком-нибудь из них достаточно голосов.
Вот не могу придумать название для этого метода.
То ли Голосование.проверитьвсеголосовалки, то ли Голосование.мойсуперметод.
Помогите пожалуйста а то нет идей.
Не, пользуй EventEmitter
iterateThroughtVotes
Проходится слишком дорого, делай как на пикриле - каждый экземпляр имеет определенный триггер который знаменует конец голосования и сигнализирует об этом обработчику onComplete.
Я решаю по фану задачки на codewars. Условие - пик 1. Кто не понимает: нужно чтобы от url отрезались все префиксы, постфиксы и т. д. Моё решение - пик 2. Вопрос: почему return не возвращает строку после моих обработок? Дело в замыкании? Или в чем? Как пофиксить?
Заранее спасибо
Каком замыкании? Замыкании в твоём мозгу? Возможно.
Вернёт твоя функция результат функции сutEnd только в случае если ни одно из условий if и else if не сработает.
Перепиши, тут все не так. И задачу можно решить в одну строчку.
Дам подсказку: у тебя урлы могут быть вида http://https-lol.com
Да это понятно что нужно проверять во время добавления голоса. Но бывают ситуации когда голосов набрано достаточно, но триггер не сработает. Это когда например есть 2 игрока. Голосов нужно набрать 2. Первый игрок голосует и голосов становится 1/2. Второй игрок покидает сервер. Голос нужен 1. Состояние голосовалки будет 1/1, но триггеров никаких не будет.
Да и вообще я про название функции спрашивал.
>когда голосов набрано достаточно, но триггер не сработает
Значит выносишь проверку законченности голосования в отдельный метод и вызываешь этот метод из функций которые будут изменять текущее количество голосов и голосов нужных для завершения голосования.
Суть в том что нужно сразу правильно делать, а не придумывать названия функциям.
C#, Python, Java, C++, Javascript
Хоп, на ютубе попадается видео-интервью от Бьёрна Страуструпа (Создатель С++, я по его книгам учился в основном)
и Говорит, что один язык знать - мало, нужно твердо знать такие языки, как: C#, Python, Java, C++, Javascript.
И тут я орнул :)
я языки чисто по вкусу выбирал.
На Питоне мне нравится писать ( как альтернатива сексу )
Java - мой первый язык
C++ учил для вуза
C# для создания игр
на Js сайты писал мощные :)
крч ребят, кто там с языками не определился, начинайте учить любой из этих 5ти.. (лучше Питон либо С++, чтобы отсальные легче было)
не учите сранну Джаву первым языком... это лишние пиздострадания
Кладите большой хер на мнение Mail.ru, у них хоть и все сервера на сранной джаве, сами-то на Питон пересели в прошлом году
Это неиронично написал чел на 1 курсе, распостраните
Пашел нахуй
>>77276
>>77286
суки тупые и ебаные, хули вы раскудахтались-то? Я же сказал, ПО ФАНУ! ПО ФА-НУ. Расслабьтесь, никто ваши драгоценные места не идет забирать. Ещё раз для ёбаных неудачных дебилов конченных даунов и уебищ: ПО ФАНУ. ПРОСТО ТАК. РАДИ РАЗВЛЕЧЕНИЯ. Сука мрази токсичные.
А какие вы ещё тут вопросы ожидаете? - простите меня за нескромный вопрос.
>>77282
А тебе спасибо за совет.
Ещё в урле может быть логин и пароль перед доменом через @, в конце может быть порт, разделителем между доменной частью и path может быть не только /, но и ?,#. Рекомендую по фану почитать https://www.blackhat.com/docs/us-17/thursday/us-17-Tsai-A-New-Era-Of-SSRF-Exploiting-URL-Parser-In-Trending-Programming-Languages.pdf
Ты сейчас описал ровно то, что я и сделал. Но не придумал точное этому название. Не называть же этот метот myMethod. Название должно точно отражать суть функции, но и ещё не быть длинной. Так бы я написал Голосование.завершитьуспешновыполненныеголосования()
Go
Начнём с того, что у тебя должен быть класс (объект, синглетон) VoteService.
Метод назвать надо так, чтобы было понятно, что он делает, почему и зачем.
Из твоего описания - не очень понятно. Например, что такое "достаточно", и что должно быть потом с этим Vote?
Например:
VoteService.findCompletedVotes() //хорошее название
VoteService.checkAllVotes() //сликом общее название
Вот эта вот вся поебень и должна в сервисе быть.
Сервис должен сам создавать экземпляры Vote, и подписываться на изменения в них, всё это должно быть внутри.
Ты разницы не видишь между методом и функцией. Метод это то что у твоего класса, а функция это то что вне классов. Вот ты вынес всё в функцию и хочешь чтобы она постоянно дрочила объекты, а нужно делать всё в виде событий, не кто-то другой должен проверять закончилось ли голосование, а сам класс должен говорить о том что голосование закончилось.
>завершитьуспешновыполненныеголосования
processDoneVotes()
Не надо думать о коде по-русски.
Твоя проблема в этом.
Русский - вообще не технический, и, тем более, не "компьютерный" язык.
Учи английский, много читай по-английски, думай о программе по-английски.
Конфигу пердоль. Дальше сам
Я не пробовал (это только для шаблонов внутри html), но, думаю, что все остальные атрибуты компонента надо писать прямо в этот тег, как будто он и есть этот компонент.
Собственно, название директивы на это и намекает.
И, ещё раз - это _только_ если у тебя шаблон прямо внутри html, т.е. не в script, не в строке, тем более, не single file component.
И этот хак нужен, чтобы соблюсти правила html для vue-пасера, т.е. это ты ему объясняешь, что это, а не браузеру, например.
Привет. А я закрываю у себя этот тред. Пока.
Давай, не болей!
Ты, похоже, что-то напутал.
v-is и v-if - это очень разные вещи.
Ты бы сказал, что тебе надо получить, в итоге.
Вот дока, правда, на vue 3:
https://v3.vuejs.org/api/directives.html#v-is
Почему-то не нашёл v-is для v 2, хотя, точно помню, что читал про это ещё хуй знает когда. Но - нету.
Была ещё директива v-component, примерно (или точно) то же самое, но хуй знает куда делась - в доках теперь тоже нет. Возможно, это в 1-й было а не во 2-й.
На самом деле похуй, т.к. это не нужно вообще в реале.
Он нужен, там много полезных изменений, и в API и в движке.
Обратная совместимость - есть.
Но, не по инструментам.
Но, его ещё немножко не допилили, и в плане инструментов и вообще.
Могут быть нестыковки с библиотеками и т.п.
Если только начинаешь - начни с v2.
Можно ещё накатить composition api, и будет почти 3.
https://composition-api.vuejs.org/
Пока нукст не перекатится на V3, можешь забить на него.
В смысле до этого получал 100к+ или на первой работе разрабом? Так или иначе, я по обоим требованиям прохожу. Чтобы прям на самой-самой первой работе чел столько получал я не слышал. Самое близкое — нанимал 21-летнего парня на 80к и он довольно быстро вырос на 100к+.
У меня и так везде, где есть кликабельный скрипт, под тегом баттон. А что это дает? На сенсорных экранах прикосновение к кнопке как клик будет работать?
Конечно, лол. По-твоему когда тач-девайсы только появились на них ни один сайт не работал?
Клик на кнопку считается и как тач, и как стилус, и как нажатие пробела/энтера и как Аллах.
https://ru.vuejs.org/v2/guide/components.html#Динамическое-переключение-компонентов
Ну вот мне нужны такие табы, только с однофайловыми компонентами с пропсами и событиями.
Я сделал через v-if, как сделать через :is?
хуило ты мутабельное, ещё раз увижу let в твоих пуллреквестах - оставлю комментарий, будешь переписывать
>нет рекурсии
глаза разуй, ебанько domainName --> cutBeginning --> domainName
А чё со спойлерами пишешь, ты кого-то боишься, токсичный шиз?
Нахуй ему немутабельные переменные в задачке по кодварс? Дебил.
>хуило ты мутабельное, ещё раз увижу let в твоих пуллреквестах - оставлю комментарий, будешь переписывать
Алё, все методы строк - иммутабельные, а леты - ещё и каждый в своём лексическом окружении.
>глаза разуй, ебанько domainName --> cutBeginning --> domainName
Физически не сможет замкнуться.
>рекурсии
>не может замкнуться
У тебя в голове замкнулось что-то и не размыкается, обратись к специалистам.
Как мои навыки чтения кода повлияют на то что ты не отличаешь замыкания от рекурсии?
Бля, как тайпскрипту указать что нормально ожидать несколько разных объектов? Дефолтная ситуация, когда я делаю запрос на сервер и он может мне вернуть либо объект с данными, либо объект с ошибкой (скажем там одно поле error и в нем лежит строка, которая описывает проблему):
response: Item[] | ErrorResponseObject
Вот вроде так норм должно быть, но он все равно ругается когда я после провожу некие манипуляции с объектом response, утверждая что таких полей в нем нет
>response: Item[] | ErrorResponseObject
Ну да, все правильно.
>он все равно ругается когда я после провожу некие манипуляции с объектом response, утверждая что таких полей в нем нет
Логично, там же может быть и ошибка. Читай https://www.typescriptlang.org/docs/handbook/advanced-types.html
Проиграл с задания с говнотестами, которые не учитывают:
Твоё код выдаст имя домена === "mail"
>замыкающуюся рекурсию
Ого, что-то новое. Где об этом почитать можно? Желательно на английском, мы же не любим русикодебилов, да?
Но ты её не решил, решишь когда функция примет аргумент "https://mail.google.com/" и вернёт "google"
И что было дальше?
Только третий вариант - не говнокод, но тайпскрипт заставляет говнокодить по четвёртому варианту.
считаю, что в спеку пора протащить independent method declaration
let fn() {
...
}
Naned Method Expressin по аналогии с NFE, тоже не помешал бы.
При такой схеме, не очень понятно, как ты собрался передавать пропсы?
Компоненты же разные, пропсы разные?
Оно не для этого, мне кажется. Это для случаев, когда всё в коде вычисляется.
Думаю, что тут надо слоты (slots) использовать.
Боба Пайка на вас нет, он бы вам натащил в спеку, блядь.
Как суслики в го, сидели бы тихо, и писали чистый, понятный и эффективный код.
Я запихнул компоненты в один блок и навесил на каждый v-if.
Другое дело, что нигде не сказано, что is только для компонентов в коде.
Функция-метод.
Это и ест чистота. Методы - самые правильные функции, когда речь идет не о лямбдах и не оконструкторах. Единственный вариант объявить нормальную настоящую жс-функцию - это функция-метод.
При этом сейчас нужно писать кучу бойлерплейта ради этого, как на скрине выше.
Ооп-шиза пожаловала.
Типичная деструтуризация. Ты примерно то же самое делаешь, когда импортируешь методы из модулей.
Ты ничего не возвращаешь, а выполняешь другую функцию в if-блоке.
> return url.match(/(https?:\/\/)?(www\.)?(.+?)\./)[3]
Посмотрел в решениях - еще надо было U в регулярку впихнуть.
кроме 4 варианта, все говноедские
>Методы - самые правильные функции
>Методы - самые правильные функции
>Методы - самые правильные функции
>никто не ответил
А это что:
>Вернёт твоя функция результат функции сutEnd только в случае если ни одно из условий if и else if не сработает.
Или тебе, как особо одаренному, разжевать нужно? Ок. Начинается первый вызов твоей говнофункции, срабатывает первое условие if, далее идёт рекурсивный вызов этой же функции, как только последний вызов возвращает значение, выполнение продолжается в блоке if и куда оно уходит? Правильно, никуда, потому что в этом блоке ничего больше не происходит. И что оно вернёт, правильно, undefined, потому что в блоке if ты просто запускаешь цепочку вызовов функций.
Следовательно чтобы получить значение после первого вызова, тебе нужно добавить return всем вызовам cutBeginning. Но лучше конечно подучить js и переписать это говно, а также выучить разницу между рекурсией и замыканием.
В вакансиях либо нихуя не указывают (90%), либо 25-120к.
Хочет не проебаться, но и чтобы завышенная не отпугнула.
Бля, на проекте подрузили js abac (Attribute Based Access Control) типо так пизже, но у меня уже глаза вытекают, что это за хрень и нафига нужна? Без нее ж нормально жили
Смысл мне нанимать тебя как работодатель и платить тебе 50к+ если ты нулевый программист?
То есть, работающие пограмисты сразу как-то ненулевыми становись до первой работки?
Не могу устроиться даже на 30к. Я бы и за 20к поработал какое-то время, что бы набрать опыта коммерческой разработки, но мне даже на резюме не отвечают. Я в ахуе, если честно.
мимо другой анон
Ты просто лох, норм пацаны сходу находят работку за 70к, растут там и каждые полгода уходят на новое место практически удваивая зп. За 2 года изи добраться до $8-10к в месяц и релокейта в Европку
Тот же /b почитай
Молодежь пошла ленивая. Ты сначала версталой отработай поучись у сойбоев уму разуму. Через три - четыре года получишь джуна по профессии инженер ЭВМ. Через еще пять лет имеешь право на повышение до мидла. К сорока годам будешь ведущим мидлом.Вот тогда и будешь себе требовать зарплату 60 тысяч как у опытных сойбоев. Сойбои опытные по 12 часов работают как говориться от кофебрейка и до смузишопа. И не ленятся. А молодежи нужно зарплату чтобы минимум была 60 тысяч. Мы в нулевые не за зарплату работали. А знали что надо. Бывало придешь с удаленки в хостел и конверсы снять нет сил так и ложились спать в конверсах, а утром в тринадцать часов уже бежали на работу.
Думаю, это самый правильный вариант.
А для сложных случаев - есть рендер-функции.
Пропсы и т.п. в переключаемых компонентах можно брать из vuex store, или задавать для родительского компонента, а он их будет задавать для текущего компонента, выбираемого в коде.
function domain(str) {
const str2 = str.includes("//") ? str.substr(str.indexOf("//") + 2) : str;
const str3 = str2.indexOf("/") ? str2.substr(0, str2.indexOf("/")) : str2;
const resSplit = str3.split(".");
return resSplit[+(resSplit.length == 3)];
}
Svelte рулит!
А нахуй РАБотодателю нужен такой жук-плавунец, который съебёт через полгода и оставит с ещё большим техдолгом? За 30к ищут мега-лоха, с которого все соки можно выжать.
На сервере. Загружаешь в память (для 10000 хелловорлдов в формате UTF8 это меньше 1 мб памяти) и отдаешь по запросу твоего скрипта.
Если клиент-онли, то на похуй разгружаешь массив прямо в браузере. А так конечно нужен сервер.
У монги есть свои курсы: https://university.mongodb.com
Один из курсов включает в себя пердолинг на ноде, так что и этому чутка научишься.
Что такое "отдельное хранилище, например, в json"?
Есть админы и есть обыные юзеры, как в ангуляре отрендерить одну кнопку, чтобы она была видна только админам? Канешн на бэке своя защита, чтоб по ней не перешел обычный юзер, но с фронта по ней тоже должно быть нельзя перейти
Как такое обычное решается в ангуляре?
Хранить в сервисе данные о правах пользователя и в компоненте их подтягивать. Как фронт получит данные о юзере это отдельный вопрос, можно при логине, например.
Хостинг нужен, который будет переваривать твой нодосервер. Какой-нибудь Vercel или Heroku.
Если на пол-секунды задумываешься, лепить ли очередной див или семантический тэг, то у тебя уже достаточные знания HTML. А CSS - кумулятивная тема, там как таковых основ нет, разве что лэйауты типа флекса и гридов. На MDN есть что-то типа курса вкатывальщика-вротендера, можешь чекнуть секции по HTML и CSS.
А как у тебя обычные пользователи от админов то отличаются? Создаешь AuthService, в нём роли вида Unauthorized, Authorized, Admin, при загрузке идёт проверка прав, изменить их можно при логине/разлогине. Далее всем компонентам в которых есть различия для ролей пользователей пихаешь этот сервис и в зависимости от роли показываешь/скрываешь кнопку. Но лучше всё не через сервисы делать, а через менеджер состояний - NgRx
Вот только нихуя не пойму где держать базу данных, на хероку как я понял только бедет лежать сам сайт,
Если умеешь делать адаптивные страницы, то считай, что твоих знаний достаточно. Главное чтобы CSS не состоял из тысяч media запросов, а в дублирование в html стремилось к нулю.
На хероку есть сервис для бд.
>NgRx
Нинужно.
В ангуляре проще работать с сервисами чем с flux-state библиотеками и особенно учитывая как это реализовано в NgRx.
Так ты сам сказал, что БД будет на виртуал очке. А значит у сервера есть по дефолту доступ к ней, они ж на одной машине.
Ну если ты для себя пишешь, проект не крупный, то да, можешь без NgRx работать. Если у тебя цель устроиться на работу, то без знаний NgRx шансов у тебя будет мало, а если и устроишься, то всё равно придётся учить и привыкать к нему, отвыкая от сервисов.
Буду ждать, пока придумают новый подход, лучший. Редуксы - кал.
Как раз таки на работе и оценил насколько NgRx говно в условиях реального проекта.
Когда начинали проект, тимлид сказал, что вот: NgRx заебись, как в Redux будем писать экшены, редусеры, геттеры-хуеттеры и тд. В итоге через 3-4 месяца переписали все на сервисы, потому что работать со всем этим мусором становилось очень сложно.
Хочешь создать новый запрос от сервера? Добавь поле в интерфейс state, добавь поле в state, добавь action файл, добавь константу экшена, добавь тип экшена, опиши в экшене вызов сайд эффекта http-запроса, создай interface редусера, создай константу редусера, создай reducer файл, добавь все импорты выше перечисленных файлов в connect, пиздец! А если хочешь что-то поменять в этой логике, будь добр пройдись по всем этим файлам. Учитывая что 90% логики, это просто вызвать запрос и получить какой-то объект, для передачи его из route компонента в child компоненты через инпуты, от этого ОЧЕНЬ сильно начинала болеть голова. А если будет что-то сложнее, типа обновления данных по @Output евенту или обновления стейта через несколько http-запросов в связке, то это вообще ебнешься.
Еще ngrx считай никак не используют концепцию Observable, поэтому в использование компонентам дается только state observable который обновляется при КАЖДОЙ записи чего-либо в state. Хочешь геттеры под конкретные поля, которые емитят только при изменении значения поля? Пиши 100 pipe(map(), distinctUntilChanged()). Хочешь подписаться на вызов определенных экшенов? Делай грязный хак, да и вообще это не Flux-way, и иди нахуй. Ни декораторов, ни нормально cli, ебал рот.
Если уж и брать flux библиотеку, то NGXS, так как там концепт Observable используется намного шире и нет надобности писать такое количество boilerplate кода. И то я считаю, если ты знаешь что делаешь сервисов тебе хватит за глаза, на крайний случай можно взять Akita, который представляет собой middleware шину, которую можно использовать для повторного получения данных из кэша.
Вообще очень сильно калит, что в js фронте из-за Redux, все стали боготворить flux-way хранения состояния, хотя как по мне это лютый оверхед. Задаешься вопросом: почему ни в одном другом языке это говно не прижилось?
Как раз таки на работе и оценил насколько NgRx говно в условиях реального проекта.
Когда начинали проект, тимлид сказал, что вот: NgRx заебись, как в Redux будем писать экшены, редусеры, геттеры-хуеттеры и тд. В итоге через 3-4 месяца переписали все на сервисы, потому что работать со всем этим мусором становилось очень сложно.
Хочешь создать новый запрос от сервера? Добавь поле в интерфейс state, добавь поле в state, добавь action файл, добавь константу экшена, добавь тип экшена, опиши в экшене вызов сайд эффекта http-запроса, создай interface редусера, создай константу редусера, создай reducer файл, добавь все импорты выше перечисленных файлов в connect, пиздец! А если хочешь что-то поменять в этой логике, будь добр пройдись по всем этим файлам. Учитывая что 90% логики, это просто вызвать запрос и получить какой-то объект, для передачи его из route компонента в child компоненты через инпуты, от этого ОЧЕНЬ сильно начинала болеть голова. А если будет что-то сложнее, типа обновления данных по @Output евенту или обновления стейта через несколько http-запросов в связке, то это вообще ебнешься.
Еще ngrx считай никак не используют концепцию Observable, поэтому в использование компонентам дается только state observable который обновляется при КАЖДОЙ записи чего-либо в state. Хочешь геттеры под конкретные поля, которые емитят только при изменении значения поля? Пиши 100 pipe(map(), distinctUntilChanged()). Хочешь подписаться на вызов определенных экшенов? Делай грязный хак, да и вообще это не Flux-way, и иди нахуй. Ни декораторов, ни нормально cli, ебал рот.
Если уж и брать flux библиотеку, то NGXS, так как там концепт Observable используется намного шире и нет надобности писать такое количество boilerplate кода. И то я считаю, если ты знаешь что делаешь сервисов тебе хватит за глаза, на крайний случай можно взять Akita, который представляет собой middleware шину, которую можно использовать для повторного получения данных из кэша.
Вообще очень сильно калит, что в js фронте из-за Redux, все стали боготворить flux-way хранения состояния, хотя как по мне это лютый оверхед. Задаешься вопросом: почему ни в одном другом языке это говно не прижилось?
>Когда начинали проект, тимлид сказал, что вот: NgRx заебись
Ну т. е. твоё знакомство с NgRx происходило в напряженной обстановке, а в обстановке проекта который нужно сдать в срок? Неудивительно почему ты высрал такую простыню негодования. NgRx не тот инструмент который можно освоить нахлёстом, для того чтобы его освоить нужна спокойная обстановка и практика в виде хотя бы 2-3 проектов.
Не спорю, что за 2-3 проекта можно освоить любой инструмент, но я не вижу какую проблему решают flux библиотеки в контексте Angular, в котором есть DI. Меньше кода они не дают, и на них можно написать такой же говнокод как на сервисах, равно так же как и хороший.
Если инструмент не приносит никакой пользы, зачем его использовать?
Не забудьте пройти опрос.
Mongodb atlas или aws free tier
>А если хочешь что-то поменять в этой логике, будь добр пройдись по всем этим файлам.
Вот она - эссенция пидорской зумер-архитектуры.
Реакт - кал.
Редукс - кал, однозначно.
Когда заходит речь о реактах и редуксах, полезно вспоминать, что всё это - детище фейсбука.
А бекэнд в фейсбуке - на пхп.
Это всё, что нужно знать, для принятия решения.
Э СЛИШ СКАЖИ АНГУЛЯР КРУТА
{"name": "Alex", "department": "B2B"}
Как превратить его в query-параметры и подставить в url?
Речь не про твой парашный редакс с реактом, а про NgRx и Angular. В ангуляре есть сервисы и DI, которые полностью покрывают потребности веб-приложения в управлении состоянием. Но нет, долбоебы-смузихлебы захотели писать больше бойлерплейт кода, поэтому слизали идею редакса и притащили это говно в ангуляр.
Ты так бахаешь, как будто лично я тебе его в проект подбросил.
И на каждую такую абстракцию нужно писать/подключать как минимум 4 файла, вместо того чтобы решать через одну строчку http.subscribe(res => {}, err => {}) в route компоненте.
Может объяснишь в чем профит?
Смысл нормальных абстракций в том и состоит чтобы в одну строку все делать, а не в 4 файла. Вас постоянное написание одного и того же кода ни на какие мысли не навело? В чем там профит я не знаю, никогда с Ангуляром и ngrx не работал.
Это две разные переменные. Вторая — просто аргумент в функции. Почему ты их связал вообще?
Ещё и вуйкс не может в инстансы классов и сеты, вообще охуеть.
все я понял, первая функция при активации передает аргумент в функцию ниже, так?
только я не понимаю все таки нахуя в нижней функции этот аргумент прописывать явно
Так попробуй учить не читая код, а читая соответствующую литературу/учебные материалы.
Так зачем так равно? Ты возвращаешь query + строка. Зачем там query = query + строка? Зачем здесь мутировать аккумулятор?
async (): Promise<any> => {
const link = await playlist?.querySelector("li");
console.log(link) // null;
}
Playlist - это список, в который из базы приходят данные и динамически рендерятся лишки. Как правильно дождаться появления элементов в списке? мне нужен только первый элемент списка всегда
Нет, ты пишешь бессмыслицу. Иди читай как работают функции, что такое область видимости и т.д.
У тебя что-то очень странное происходит. Во-первых переменная playlist вообще какого типа? Это промис который возвращает элементы чтоли? Крайне затейливая архитектура. Во-вторых ты эвейтишь не его, а результат querySelector, который, видимо, null. Если ты хочешь эвейтить playlist, то должно быть: const link = (await playlist)?.querySelector("li");
Приходит скорее всего массив, которого даже в DOM'e нет. Пиздуй читать, как результат промисов превращать в json, тебе даже никаких квери селекторов не надо.
Что у тебя там за дичь, которая пересылает html в запросах? Точно с xml не путаешь?
В запросах только данные. Эти данные через самописную функцию рендера (создаётся лишка и вставляется в ul) вставляются в список.
Ну просто получаю например строку "ХУЙ" из базы данных
передаю в функцию
function renderHUI (ulElement, text){
const hui = document.createElement('li");
hui.innerHTML = text;
ulElement.apend(hui);
}
Так тебе данные или элемент нужен? Данные можешь выдёргивать из массива ещё до рендера, а элемент списка будет доступен сразу после `ulElement.appendChild(hui);`
Мне элемент нужен. Данные я получаю без проблем. Застопорился в этом моменте. (как дождаться пока в DOM элементе появится другой элемент).
>будет доступен сразу после `ulElement.appendChild(hui);`
Это да, но я хотел отдельно функцию, которая отрисует по загрузке всё, что прийдёт от базы, и другую функцию, которая после будет получать первый элемент списка и уже дальше его обрабатывать.
Нашёл решение с использованием MutationObserver (Узнал о таком интересном интерфейсе, лол). Но хотелось бы понять, возможно ли просто промисом дождаться мутации DOM'а.
Что ты под этим подразумеваешь вообще? Что значит «дождаться»? Мутации DOM синхронные, их не надо дожидаться.
У тебя логика нарушена.
> я хотел отдельно функцию, которая отрисует по загрузке всё, что прийдёт от базы, и другую функцию, которая после будет получать первый элемент списка и уже дальше его обрабатывать.
Тебе сразу нужно совершить нужные действия с данными из базы, чтобы первые элементы были готовыми до отрисовки.
Так я сразу и совершаю действия (принял данные, отрисовал нужное количество лишек и распихал данные с сервера в датасеты лишек). Потом, что бы не дёргать сервер, я работаю с данными из датасета лишки. Вот мне нужно было дождаться, когда в списке будет хоть одна лишка.
>и распихал данные с сервера в датасеты лишек
Вот тут и надо делать то, что ты хочешь делать после ожидания появления.
Почему?
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions
И поясните почему там надо явно биндить this ?
>TS2564: Property 'autofocus' has no initializer and is not definitely assigned in the constructor.
@ViewChild("autofocus", {static: true})
private autofocus.!..: ElementRef;
Ну ничего, в следующий раз будешь сразу нормальный код писать, с проверками на undefined и без использования костылей вида ViewChild
>Иди туду доделывай, не отвлекайся.
>уминя крупный праект паетаму неговнокод а необходимасть!!!
И часто ты себя так успокаиваешь, говнокодер? Зачем тебе вообще ангуляр и тайпскрипт? Сидел бы на js и react/vue, как делают остальные макаки вроде тебя.
>Насмотрелись каких-то пидоров и заставили включить "strict": true
Я хуею с того какие дегенераты тут сидят. "Заставили" его включить режим неговнокода. Пиздец!
Это общий мем, также как и создание мувисерчера. Туду и мувисерчер самые популярные проекты которые создаются новичками, в основном из-за влияния инфоцыган продающих копипасту одних и тех же курсов вида "вайти в айти за 7 дней"
>в основном из-за влияния инфоцыган
Инфохуян. Туду - просто продвинутый хелловорлд. Это классика.
Показывай мне хоть одну книгу в которой в качестве учебного проекта делается туду.
Learning Jarp by K. Wolanski
>>1879354 →
Так не мутируй. В реакте мутанты запрещены.
Нахуй ты сет преобразовываешь в массив при каждом пуке? Манипулируй методами сета.
Дя. Она должна брать инпут только при определенном ответе апи. Поэтому юз эффект и не подходит:с
А какое поведение ты собсна ожидаешь? Если ты вызываешь setState, то, конечно, это снова вызывает рендер.
Вообще чот не очень понятно зачем тебе array как отдельный кусок стейта. Считай его прямо в рендере.
>А какое поведение ты собсна ожидаешь?
Ну в моей голове это работает так.
const [array, setArray]= useState([]) дает мне изначально пустой массив array. В который я unshiftом добавляю на первое место значение, затем удаляю дубли сетом, сет эррэй перекидывает массив без дублей в array. При следующем вызове функции в массив добавляется новое значение и так далее до 10.
Да, я понимаю что это неработает из-за того, что в рендере нельзя использовать стейты.
Еще кстати вопрос. Почему вызов компонента внутри строки не работает последний скрин? В первом случае будет перекидывать компоненты андефайнд, а при записи в столбик все будет работать.
Друк, это не только в рякте. Сейчас никто не мутируем, не циклит.
Можно создавать копии и перезаписывать ими переменные.
Есть один околобордовый проект на общественных началах. Проект для поддержки специфического хобби (а-ля форумные квесты/рпг с одним автором и несколькими голосующими игроками, зародилось на форчане или недалеко от него). Хобби увлекаются достаточно много людей, но среди них достаточно мало программистов.
Теми, кто есть, уже некоторое время пилится dedicated сайт с блекджеком, шлюхами и фичами специально под хобби, но рук и времени пилить быстро у нас не особенно хватает. В связи с чем решили мы сделать систему bounty для фич оного сайта, за которые комьюнити (да и мы тоже, что уж там) готовы башлять исполнителям на пряники с чаем.
Проект интересный, нетривиальный, делается из любви к данному типу времяпрепровождения.
Теги: html, css, JS, Java, gRPC, user-generated content, open source.
Почитать побольше про проект (диздок): https://docs.google.com/document/d/1WZH-b9PGbb7gdMYRhA65-Yn3oJvI8iAyZ_wz-weK9Yw/edit?usp=sharing
Гит репа: https://gitgud.io/dqp
Баунти райское наслаждение: https://docs.google.com/document/d/1oBzPFcpfdk9TG-6WlE29ORhU7EP1rwptJ82n7ajQOKY/ (На данный момент ценник стоит в 100$ за каждую)
Сервер для координации: https://дискорд.gg/YMCPr2uPxU
Милости прошу к нашему шалашу.
репорт говну
Вполне можно, мутация/немутация это бест практис, а не что-то пиздец критичное. Главное чтобы через `setState()` изменение проходило.
Более мемного языка шаблонов не пробовал найти? Чтобы что-то пропердолить нужно ещё один незадокументированный язык шаблонов учить.
сами письма/темы/i18n/шаблонизация
Вопросы:
i18n надо реализовывать через handlebars? Или в ноде а потом в handlebars уже тупо все переведенное передавать?
не читал твои мемуары, но уверен что твоя проблема да и вообще вся задача решается в 4 строки кода
опиши что ты делаешь?
ТЗ опиши
Мимо синьер из фейсбука
зовут меня Денис
Если у тебя тудушка того уровня, которую вкатывальщики делают, то да. Если у тебя серьезное приложение, то стейт менеджер не заменить хуком, но не обязательно использовать именно редакс.
Я может чего не понимаю но какая к хуям производительность компиляции? Они там ебанулись?
Речь про TS же, что тебя смущает? Ну, кроме того, что компиляцией через него не пользуются уже.
Хотя, всегда остается компиляция в редакторе. Ее имеет смысл оптимизировать.
Наверстал галлерею изображений - аж самому нравится.
Я не умею в адаптивную верстку и поэтому поставил бутстрап. Все красиво, но галлерея пошла по пизде, вместо красивой секти, которая даже на телефонах смотрится нормально, там одно изображение на весь экран. Можно ли как-то отменить правило коллапса бутстрапа для контейнера и его потомков?
Первый пик - без бутстрапа.
Второй - с ним.
Вот и хотелось бы как-то отменить ресайз для контейнера. Я второй раз так наверстать не смогу прост.
В редакторе не похуй. Если у тебя большой проект, то как-то не очень хочется, чтобы после каждого изменения тайпинги обновлялись по 30 секунд.
>Ну, кроме того, что компиляцией через него не пользуются уже.
Зумеры уже не пользуются компиляцией TS?
Охуеть, каждый день новости.
Просто через бабель прогоняете, чтобы типы поубирал?
А теперь подумай, сынок, нахуя вам вообще TS?
Так пишите, один хуй дураки.
ну хз
самый простой вариант кмк это в инспекторе посмотреть то что проставил сам бутстрап на конкретные элементы в твоей сетке
на пике пример того что абу написал в makaba.css и те стили что тянутся из дефолтного браузерного css
так вот для всех элементов в твоей сетке надо повыпиливать то что было добавлено из bootstrap.css
Эээ, а это правда объяснять надо? Ну ладно. TS постоянно работает в редакторе, а на корректность типов в целом проект проверяется в PR через CI. С бабелем сильно удобнее, во-первых потому что компиляция шустрее, во-вторых можно быстро что-то проверить в рантайме не дроча типы.
Удивительно, конечно, насколько быстро ты готов назвать всех вокруг зумерами, дураками и сынками не разобравшись в ситуации.
Генератор собак запили
Просто не нужно быть столь категоричным - "не пользуются уже".
Вы не пользуетесь, а другие - пользуются.
С нормально настроенной средой - webpack-dev-server + proxy + hmr всё компилируется вообще незаметно при изменении кода.
А то, что делается через бабель - это не TS.
Могу себе представить, сколько может быть неочевидных багов из за этого.
>Могу себе представить, сколько может быть неочевидных багов из за этого.
Поделишься хотя бы одним?
Поискал решения к готовым слайдерам, все с какими-то костылями. Посмотрел как белые люди делают, понравилось решение на joom.com.
Перетащил к себе разметку - полет нормальный, на мобильном работает без JS.
Казалось, что дело осталось за малым - поставить события на кнопки следующий/предыдущий появляющихся на больших экранах, но я не только не нашел срабатывающие функции, но и прифигел от того, что при перемещении слайдов у них не меняется ни разметка, ни стили.
Знающий анон, подскажи, как мне оживить стрелки навигации на большом экране у этого слайдера?
И как вообще такое возможно? Как можно изменить позицию элемента на странице не меняя его свойств и стилей?
Для примера записал видео работы 2-х популярных слайдеров owlcarousel2 и slick при сдвиге слайдов там все живет, на joom ни движения.
324x570, 0:17
На видеорил функционал на малых экранах, ради которого я полез к этому слайдеру
Не могу, они же неочевидные.
Бля, этот код не просто гавно мамонта, а редкостный кал пеликана. Ебан бобан. Без негатива, если бы ты мне это показал, то шансов было бы больше у человека, который ничего не сделал. Поэтому, если ты заинтересован в том чтобы это кому-то показать, никаких принтскринов больше, и тем более кусочных кодов, потому что я чувствую, что это только вершина айсберга. Идешь и добавляешь это в реакт sandbox и кидаешь ссылку. Потом я смогу тебе помочь.
По поводу того что ты сбросил: stringify массива, чтобы понять длину массива, это мое почтение. Я когда, это увидел, я чуть не подавился.
Куча вложенных тернарных операторов, это полный пиздец. Мало того, что они не должны быть вложенными, ты еще сделал их тернарными.
Проверка на андефайнд.
Лапшекод из пропсов.
Короче, бросай все приложение и тогда будем говорить конструктивно.
Да, на фоне реакта - ангуляр выглядит просто невьебенно белым и пушистым.
Хуки вскоре устареют, подожди пока зарелизят крюки, где станет возможным писать компоненты ещё короче, быстрeе, молодежнее.
А потом зарелизят срюки, тогда вообще можно будет срать, не снимая свитер.
сосать
textContent
Вместо вложенных тернарников - свитч кейс, даром что как раз по одной переменной проверка идёт. И возвращать он должен строку которая идёт в параграф, а не новый див со строкой на каждый пук.
Вместо передачи 10+ пропсов - передавать объект и его деструктурировать уже в компоненте.
Ну и просто наркоманские отступы.
А мапа - не цикл?
Тогда при чем тут отношение скорости компиляции к количеству форм?
Где ты там функции-конструкторы увидел? Это обычные методы объекта. Ты наверно имеешь ввиду почему я не использовал стрелочные функции? Потому что стрелочные функции не захватывают this и всегда ссылаются на this той области в которой они вызваны. Из-за этого не рекомендуется использовать их в качестве методов объекта.
Нет, не обычные. function (){ ... } - это конструктор.
Метод - это mathodName(){ .. }
Стрелочные функции вообще не при чем.
Сравни оверхед по количеству лишних созданных объектов, которые у тебя леат в success.prototype, error.prototype, loading.prototype и так далее.
А this тебе тут зачем, если у тебя объявлена константная ссылка на объект? Что тебе мешает в каждом методе заменить this на handlePlayerStatsResponse?
Это было к твоему оправданию тому, что ты не можешь использовать стрелочные функции вместо методов - ты можешь.
Вопрос, почему ты все же вместо методов использовал конструкторы остается открытым.
Что-то новое для себя узнал?
Почти всё в жс - это обмен сообщениями между объектами. У всех объектов есть внутренние слоты, которые определяют возможное по-умолчанию поведение объекта, а так же то, какое именно поведение возможно перехватить из пользовательского кода с помощью средств рефлексии и метапрограммирования.
Функции - это объекты у которых определены (или нет) такие внутренние слоты как Call, Construct, FormalParametres, ThisBindingStatus, HomeObject и прочие.
Функции у которых определен слот Call - являются вызываемыми объектами. Функции у которых определен слот Construct - являются конструкторами. Определить конструктор можно лишь двумя способами (с помощью конструкции class {} и function() {} ) . У всех функций-конструкторов по умолчанию создается дополнительный объект, который кладется к ним в поле .prototype (при это у class{} этот объект нельхзя удалить или изменить, у простых контсукторов можно удалить или изменить пост-фактум, но изначально дополнительный объект есть у всех).
Вызываемыми являются все функции кроме конструкторов class{}.
У стрелочных функций, и функций-методов ( method(){...} ) дополнительного объекта в .prototype нет, у них вообще нет такого поля.
Функции методы - это те функции у которых определен внутренний слот HomeObject - проще говоря, такие функции внутри которых есть возможность использовать ключевое слово super. У функций-конструкторов определенных с помощью FE или FD слота HomeObject нет, даже если ты засунул их в поле объекта, и методами они не являются.
> стрелочные функции вместо методов - ты можешь.
Нет, потому что в стрелочных функциях this будет ссылаться на this той области в которой вызвана функция, мне нужно чтобы this ссылался на объект в котором объявлена функция. Заменять this, ухудшая читаемость, только ради того чтобы использовать стрелочные функции, не имеет смысла.
>Вопрос, почему ты все же вместо методов использовал конструкторы остается открытым.
Так код читается лучше и не превращается в кашу.
В JS вообще ничего нет, кроме null. В JS все - null.
Ты дурак? Я тебе написал, что ыт можешь использовать ссылку на сам объект вместо this и тем самым заменить методы на лямбды.
>Так код читается лучше и не превращается в кашу.
У тебя и есть каша. Мало того, что ты засрал весь код лишней информацией и кличевыми словами, нарушил семанткиу, так еще и добавил ниебический оверхед по памяти. Представляю, как ты пишешь целые сайты таким удобным способом, а потмо ходишь и арссказываешь, как жс жрет память как не в себя.
Понятно.
Да, блядь, и правда работает.
У меня просто опечатка была.
Но, в IE 11 точно не будет работать, я думаю. Проверить сейчас не могу.
>если бы ты мне это показал, то шансов было бы больше у человека, который ничего не сделал
Ты мне предлагаешь учить реакт и вообще не писать код? Это моя первая приложуха с 0.
Я конечно согласен, что у меня говнокод, но почему ты доебался к
"куча вложенных тернарных операторов"
мне лично непонятно. Код прекрасно читаем, использовать там ифы или тернарный оператор - вкусовщина же.
Завтра вечером скину тогда в реакт сендбокс, а то я еще там по-мелочи всякое переделать хочу.
У него пример прямо и показывает, что одно конструктор, а другое нет. Внезапно, да?
Да, олдфагов не осталось уже, одни зумеры.
>ссылку на сам объект вместо this и тем самым заменить методы на лямбды.
Зачем мне лямбды твои, дауненок? Зачем мне ссылка на сам объект вместо this? А если я захочу сделать этот объект классом, а не константой, то мне переделывать опять? Зачем мне писать вместо 4 букв, название объекта, которое может измениться?
>У тебя и есть каша.
У меня понятный код, который не лепит в кучу названия объектов и названия методов.
>лишней информацией
Потом такие долбоебы смотрят на свой код, который написали пару дней назад, и не могут его понять пока полностью не пройдутся по каждой линии, пытаясь понять что же в каждой строчке этого кода "без лишней информации" делается.
>ниебический оверхед по памяти.
Как там в 2000-х, уже готовишься покупать третий пентиум или мамка не накопила денег? Уже научил родителей как на спичках экономить?
перепеши мне эти тернарные операторы на if else, и посмотрим как ты считаешь это выглядит. Жду сэндбокса
За "поделился знаниями" - спасибо.
Просто не нужно делать это в ультимативном тоне, в стиле "все пидорасы, кто не я".
Тут надо понимать, что жс - достаточно мутная тема.
И лучше писать понятный и максимально совместимый код, чем экономить буковки и байтики. Потому, что браузер всё равно этих байтиков не жалеет нихуя, и тратит мегабайтами на каждый пук.
Ничего мутного в жс нет, если ты знаешь как он работает.
Использование jsx само по себе подразумевает стадию транспилирования исходного кода, поэтому о написания максимально совместимого кода это ересь несусветная.
Такая же, как использование Function Expression вместо Method Declaration, с последующем доказыванием с пеной у рта своей правоты.
Мутный он для тех, кто в нем плохо разбирается, что в общем-то логично.
>И лучше писать понятный и максимально совместимый код, чем экономить буковки и байтики.
Это не взаимоисключающие вещи.
>Потому, что браузер всё равно этих байтиков не жалеет нихуя, и тратит мегабайтами на каждый пук.
Это просто неправда, браузеры очень эффективные программы, хоть и реализующие довольно неэффективный API.
понил
Редактором. Алсо можно руками запустить проверку, но пока ни разу не пригодилось.
Короче говоря лучше не объявлять функции ключевым словом function без необходимости?
Мимо Крок
Там про методы объекта.
В том, что надо понимать разницу между Function Definition, Arrow Function Definition, Method Definition и Class Definition, результат использования каждого из них (в том числе сопутствующих им свойств), и, как следствие, применять их по назначению.
На скриншоте описал вопрос. Извините за больше чем пару строк кода.
JSBin: https://jsbin.com/futoramexe/edit?js,console
Зачем копаться в вещах, которые устарели, не используются и не рекомендуются к использованию.
Во вторых, как ты привязал переменную, которой вообще нет к window?
console.log(window.c) - undefined
Не понимаю, почему при вызове console.log(c) не выводится undefined. Ведь c === window.c по идее
>>80849
Мне лень расписывать подробно почему это работает именно так, особенно учитывая отношение местного контингента к попыткам их просвещения в чём-либо. Если тебе действительно интересно, гугли\читай про такую вещь как scope chain, как эта цепочка устроена, как она работает, и как в ней происходит лукап переменных и их определение. Успехов.
Вот с этого.
Какая разница между объявлениями методов?
const hui ={
getHui(){}
}
const hui ={
getHui: () => {}
}
мимо крок
А если тебя просят рассказать про цепочку наследования областей видимости и принципах ее работы, то какое еще оправдание собственного невежества ты придумаешь?
Что, именованиеПеременныхПолностьюОписываемымВсегоЧтоВозможно не помогает, да? Может обратно в джаву съебешься со своим говнокодом?
О, теперь и на символах в названиях экономить нужно, чтобы сорс код меньше места занимал?
Там еще loading error возвращает вместо loading и идёт вызов несуществующего метода, что сказать то хотел, дурачок?
Дебил, зачем ты ?? впихнул, если вызов никогда не возвращает null? В итоге у тебя никогда данные не обработаются и всегда будет див из одной строки. Иди штаны стирай, обосрыш.
При чем тут null, когда там undefined вернется и ?? сработает, мань?
Ах, ты же не знаешь как работает оператор ?? - да? Ну или подучи.
> Иди штаны стирай, обосрыш.
Это ты тут через пост орешь всем вкатывальщикам, что им базу знать не нужно, потому что это НИИСПОЛЬЗУЕТСЯ и УСТАРЕЛО.
Съеби по-хорошему, доебал уже всех.
Если бы да кабы. Спросят про кишочки `with`, тоже побежишь заучивать принцип его работы, лишь бы кабанчик был доволен?
У тебя есть интрфейс объекта data в компайл тайме?
Ты гарантируешь, что .length и .status вообще там могут быть?
Ну, когда справишься с копротивлением против воображаемых интерфейсов - приходи, а пока пиздуй нахуй
Когда там Undefined вернётся, долбоебина, если у тебя на все случаи значения status есть возвращаемая строка?
Еще один долбоеб. Возможные значения status - loading, error, success. Все эти значения присутствуют в response, т. е. всегда будет воpdращаться строка и никогда undefined.
Так беги на пикабушечку быстрее, сычуш, чего ты тут забыл?
Создание своих перечисляемых структур. Ой, что это, тебе нужно теперь на пальцах пояснять что такое "перечисляемая структура"? Ну так ты либо начинай изучение программирования с чего-то менее абстрактного чем JS, либо не заморачивайся на таких очень редко используемых вещах как генераторы, и уж тем более не пиши высеров типа "на пальцах про генераторы плизки".
А что может быть менее абстрактное чем JS? Паскаль для начала изучать или что? мимо другой анон
Эта лапша выглядит во сто крат хуже чем у того изначального анона. Вот не обижайтесь, но это просто напердподвыверт чтобы выебнуться или тупо специально запутать и усложнить код.
ok
> Создание своих перечисляемых структур. Ой, что это, тебе нужно теперь на пальцах пояснять что такое "перечисляемая структура"?
>Мам я такой умный. Посмотри на меня. Я вместо того что бы нормально ответить делаю нахуй никому не нужные выводы. Сижу и тралю лалок в жс треде мам
Для начала - не слушать долбоёбов.
Но, да, жс в качестве первого языка - не очень.
Если только очень надо (срочно найти работу и т.п.).
А если просто научиться программировать - то питон.
Только дело не в "абсрактности" а в том, что жс мутный и мусорный язык.
Что значит мутность и мусорность относительно ЯП?
Принцип работы with описан в разделе работ цепочеи наследования областей переменных, мань.
Ты уверен, что он обосрался, а не ты? Что вернется для status который не определен в объекте? Что вернется в геттере success если не выволнится ни одно из условий?
>status который не определен в объекте?
>не определен в объекте?
Хуесосина тупорылая, разуй глаза, в оригинальном посте (>>79468) status это переменная. И именно значение этой переменной сверяется с такими строковыми значениями как loading, success и error, да, там есть еще status в виде поля объекта data, оно значения не играет, потому что проверка идёт переменной. Понимаешь, скотина?
>Что вернется в геттере success если не выволнится ни одно из условий?
Вернёт пустую строку, потому что success имеет строковый тип возвращаемого значения.
>status это переменная
Все верно. И значение этой переменной запрашивается сверяется с тремя значениями, и двумя условиями. Если значение переменной status не является loading, status или error, а так же если status это пустой массив или объект с опеределенным поле .status - возвращается компонент, в противных случаях возвращается строка. Именно это и произойдет в приведенном коде.
>Вернёт пустую строку, потому что success имеет строковый тип возвращаемого значения.
Нет. Ты несешь чепуху и непонятно зачем ты это делаешь.
>Нет. Ты несешь чепуху и непонятно зачем ты это делаешь.
Ясно. Сразу бы и подписался "жопаскрипт макака не знающая о статической типизации", вопросов бы не было.
Т. е. надо мимикрировать под долбоебов и советовать дерьмо вместо бест практис? Свойство должно возвращать один тип данных, а не сначала строку, потом undefined, потом вообще число.
>шизик выдумал какой-то спор и аргументы
>ставит под сомнение чьё-то здоровье
Таблетки выпей, а то тебе поплохело по всей видимости.
Сам Java/Kotlin dev, в материалах и годных сайтах по JS очень мало шарю, а друг пытается вкатиться и просит посоветовать ему что-нибудь вроде справочника.
Анон, я знаю, у тебя есть любимый сайт/книга, пусть не справочник, а просто удобный референс, посоветуй, пожалуйста! С меня няшки.
В треде привели скрин кода >>80921 в качестве решения исходного >>79468 и как альтернатива для приведенного ранее >>80617
Ты начал кричать о том, что этот код работает некорректно >>80923
На самоподдуве >>80937
Регулярно расписывая в собственной некомпетентности >>81107
В итоге выдумав какую-то статическую типизацию и собственные сигнатуры методов, которых нет нигде >>81120 ни в исходной задаче не в приведеных оспариваемых решениях.
Статикодебил, плиз.
>захотелось отображать loading, error, unranked, not found заглавными буквами
>[status].toUpparCase()
>Uncaught TypeError: Cannot read property 'toUpperCase' of undefined
>РЯЯ НИНУЖНА ПУКСРЕНЬК ПРОСТА КАЖДЫЙ РАЗ БЕГАЙ ПО КОДУ И СВЕРЯЙСЯ С ТЕМ ЧТО МОЖЕШЬ ПОЛУЧИТЬ!!!
Отправляйся в петушинный угол к этому >>81149
Material UI, antd
>захотелось отображать loading, error, unranked, not found заглавными буквами
Делаешь response[status]?.toUpperCase() ?? data.map(...)
И ты пиздуешь дальше учить язык, статикодебил.
Я перешёл по ссылке, а там сразу HTML CSS и прочая вебота. Как-то не хочется друга втягивать в это, он всё-таки хочет просто изучать язык, а не стек.
Я не очень понимаю что ты хочешь тогда. MDN это лучший справочник по языку, полнее только спека. Ну https://learn.javascript.ru есть еще, но это учебник, а не справочник.
Ты интернетом пользоваться не умеешь? https://developer.mozilla.org/en-US/docs/Web/JavaScript
Ну вот и учи принципы его работы в контексте современного екмаскрипта, а то вдруг спросят.
А оно должно работать в сендбоксе? Или тебе просто код нужен?
Ни разу не пользовался им. Могу просто копипейстом навставлять туда?
Как ты собираешься DOM'ом манипулироваь без знания HTML/CSS? Тебе как опытному пердолику как раз эти секции обязательны, а то сразу потянешься ставить бутстрап и высирать парящие дивы-врапперы со встроенными стилями на каждый пук.
>две проверки на null и undefined
>потом такие жопаскрипт макаки тебе говорят, что вкладка жрущая 50% процессора и 10 гб памяти это норм
Покажи такую вкладку.
Его не надо специально никак учить. Если ты изучишь принципы цепочки наследования областей видимости, которые необходимо знать и понимать в любом контексте, хоть es3, хоть es5, хоть es6 - они везде работают одинаково ввиду обратной совместимости, ты уже будешь знать как работает конструкция with.
Я может невнимательно следил, но кто здесь запрос писал?
Мало ли что ты там понаизучал, нужно знать все кишочки `with` во всех версиях браузеров, своей спекой будешь перед тимлидом-травителем трясти.
У меня нет гита:c
Просто там еще и микробек и без него запросы к апи не получится отправить. Ладно сейчас что-то придумаю.
>У меня нет гита:c
Как ты тогда на реакте пишешь? CRA по дефолту гит-репу создаёт и даже коммитит в неё.
В диспатчере.
посмотрю либо позже сегодня, либо завтра и отвечу
Наверное когда-то давно промахнулся мимо папки. Раньше его там не было.
>apiKey ='RGAPI-1dcea17b-aad4-4042-bfc7-dac41f82a770'
Круто ты api ключами раскидываешься, дауненок.
Задудосишь меня?
Этот ключ действителен вроде до утра.
Взять новый можно здесь https://developer.riotgames.com/
Можно синхронизировать асинхронщину.
ПЕРЕКАТ >>1881459 (OP)
ПЕРЕКАТ >>1881459 (OP)
ПЕРЕКАТ >>1881459 (OP)
ПЕРЕКАТ >>1881459 (OP)
ПЕРЕКАТ >>1881459 (OP)
ПЕРЕКАТ >>1881459 (OP)
ПЕРЕКАТ >>1881459 (OP)
ПЕРЕКАТ >>1881459 (OP)
ПЕРЕКАТ >>1881459 (OP)
Это копия, сохраненная 27 апреля 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.