Вы видите копию треда, сохраненную 28 июня 2022 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Больше пары строк кода в посте или на скриншоте ведут в ад.
Для программирования на HTML https://codesandbox.io
Для Node.js с консолькой https://repl.it/languages/nodejs
Если рассчитываешь получить дельный ответ, сформулируй правильно вопрос: «что я хочу получить, что я для этого делаю, что я вместо этого получаю». Если когда самостоятельно найдёшь решение — поделись в треде, мы за тебя переживаем.
Документация - https://developer.mozilla.org
Руководство для вката - https://github.com/acilsd/wrk-fet#javascript
Как про useContext, так и про всякие Redux и MobX.
>>2214714 →
Это снова я со своим flask-bootstrap и попытками в js. Короче говоря, анон помог, но возникла маленькая сложность.
Дано: https://pastebin.com/tjKDXkwd
Как есть: пикрил 1
Как хотелось бы: пикрил 2
По сути, задача сводится к:
1) клонировать ряд и добавлять не в конце формы (после кнопки submit), а сразу же
2) выровнять кнопки по центру поля формы
3) для всех последующих клонов ряда убрать название (сидит внутри фласкового приложения)
Выручай, анон. Без тебя никак.
Смущает, что на него дается аж целых 3 дня.
Для Реакт-разработчика.
Не пойму, то ли это реально трудное задание, то ли это я не шарю в этих авторизациях, API и прочем.
И мне абсолютно не понятно, что делает вот такая вот конструкция:
(()=>{ var x={123:()=>{ Тело функции }()}})
Может хоть кто-нибудь пояснить, что это означает?
1. Скрипт начинается с открывающей скобки. Зачем? Почему?
2. Сразу после фигурной скобки стоит число, двоеточие, круглые скобки и стрлочная привязка. Это число (123) - это название функции? Или это какая-то другая конструкция, которая делает что-то? (Что?)
3. Зачем после тела функции нужна ещё одна пара круглых скобок? Что она даёт?
3.
Скинул бы всё, чтобы линтер отформатировал. А так разбираться не буду.
>2.
Это словарь. 123 — ключ, а значение — это самовыполняющаяся стрелочная функция (синтаксис неправильный, но в жс это, как обычно, не проблема https://github.com/babel/babel/issues/2118)
П.С.
Лично я следующий проект буду делать на призме. Что-то я наебался с typeorm, а судя по видосам, на призме все очень просто и няшно выглядит. В typeorm куча неочевидных моментов, например: как сохранять отношения в базу. В голом SQL это делается без задней мысли, с typeorm мне пришлось изрядно напердолиться. Это все, конечно, есть в доках, но как-то мельком и намеками, до некоторых вещей пришлось доходить самому.
Для джуна непросто, но реализуемо. Посмотри пару видео про jwt, разберешься, думаю.
>то ли это я не шарю в этих авторизациях, API и прочем
Я первый раз вижу, чтобы от фронтоджуна требовалось что-то подобное. Видимо фронт плавно перетекает в фуллстак, и скоро от верстал будут требовать трогать базы данных с авторизацией.
Было бы проще, если бы дал итоговый код html странички которую видит пользователь, потому что с ним жс и работает, а не с фласковскими {{ wrap.hyu }}.
Ты что, ебанутый, если это тестовое не на час времени или вообще не на "покодить вместе во время интервью", то смело шли нахуй, ты еще 50 контор найдешь, которым джун нужен и которые не настолько охуели, чтобы давать тестовое задание на несколько дней времени.
От backenda здесь ничего нет, обычная работа с авторизацией на каждый запрос, решается вроде через axios interceptors
Ты чо бля наворотил
В героиновую зависимость.
Спасибо, няша. Бобра тебе.
Что за тайскрипт? Тайский js?
Это делает вебпак
Ни разу за 3 года в разработке жс не прописывал его и не ловил ошибки связанные со строгим режимом
Ошибки как будто вообще не связаны с происходящим в программе.
Ещё и дебаг как-то через жопу работает с ними. Я один бугурчу что ли? Всем как будто нормально
Привыкай, тебя ждет увлекательный мир жабаскрипта. Сверхвонючий язык, суперпотные грязные хаки.
Допустим есть правила вида:
{foo: "bar", baz: {a, b}} -> {foo: "bazbaz", baz: ["word", b, a]}
Есть какая-нибудь библиотека?
Да, эта библиотека называется "второй аргумент для JSON.stringify() и JSON.parse()".
Ну так паттернматчи ключ и/или значение. У джейсонов ключами могут быть только строки, а значит ключи можно прогонят по регуляр очке и высирать нужный результат.
Нужна не отдельная перезапись ключей, а комплексная перезапись нод в AST по правилам pattern -> object.
К примеру:
["+", ...args] -> ["js-eval", args.join("+")]
[["∘", f, g], x] -> [f, [g, x]]
Было бы заебись, если бы в JS изначально был бы паттерн-метчинг, но его нет, в том-то и проблема.
Какая перезапись нод, наркоман? Джейсоны - строки, а значит иммутабельные структуры. Максимум что ты можешь сделать - распарсить входной джейсон по твоим правилам, и потом по твоим правилам сохранить в джейсон. А уж как там "ноды" обновляются - не дело парсеров.
> Руководство для вката - https://github.com/acilsd/wrk-fet#javascript
Я правильно понял, что вкатываться нужно сначала в html+css, и только потом в js?
Да, причем нормально из изучи, а не кое-как, чтобы потом проблем не вызывала верстка и стилизация. Вот тебе сайт еще неплохой, используй как один из справочников - https://doka.guide/. Помни, что решает практика и умение гуглить
function execute(times: number, action: Function): void {
Array.from({length: times}).forEach(action);
}
execute(12, (_, i) => console.log(i))
>Array.from({length: times})
Совсем ебанулся с написанием в одну строку? А если в будущем ему надо миллион итераций сделать? Где движку память набрать на массив из миллиона элементов?
Ебануться! Ты какой покемон?
В чем профит писать Array.from({length: times}).forEach(action); или Array.from({length: times}, action) вместо for (let i =0; i< times; i++){action} ?
Потому что этот pevth думает, что написать в одну строку ебаный говнокод это лучше, чем как бумеры писать СИшный for
пишу for of когда нужен break
пишу for of когда нужно массив создать из другого массива
пишу forEach когда есть массив объектов и у этих объектов нужно поменять свойства без изменения исходного массива
пишу map когда нужно пересоздать объекты в массиве, например для change detection
пишу map в rxjs
мимо шел
Чтт некрасивого в while(0 < n--) шиз.
Потому что в изначальном условии не было такого требования, как тебе такое?
Давай еще накинем с десяток условий, что если теье туда прилетает данимаческий обьект выбрасывающий эксепшен при привелении к числу. Иди соси писос, долбоеб.
Что если n infinity, шищ. М?
Во первых не нужно доп. проверок на то что times > 0 или != infinity
Во вторых, в будущем можно легко изменить на получение агреггированого результата, заменив forEach на reduce и добавив return. Либо массив из результатов, добавив action вторым аргументом from
Также ты получаешь индекс вызова, что тоже может быть полезным.
И код стаеовится более читаемым.
>>21773
Он принимает map калбэк, это не то что нам нужно, такой код будет запутывать читателя кода.
Тебе передают Infinity и твой код опять зависает. При этом Infinity это число, т. е. даже типизация не спасёт.
Вот видишь, ты второй раз крупно обосрался на простой задаче, просто потому что твой мозг не приввк писать функциональный код.
Обновлённая фукнция addRow
https://pastebin.com/raw/bqdyGVGX
>>21944
https://learn.javascript.ru/data-storage
>их можно было прочесть без доступа в интернет. Куда копать?
localstorage
indexedDB
service woker
Ну это просто ты молодец. А я долбоеб, который где-то в div'ах проебался.
Я пытаюсь зарегистрировать пользователя, и какого-то хуя, пострге думает, что поле email имеет тип UUID. Как это блять так? Я ничего не менял в entity пользователя. Поле email было и остается строкой, я просто добавил обертку над методом save (который работал до этого просто отлично и всегда создавал пользователя), с логикой регистрации. Если явно указать, что email это text или VARCHAR, то БД просто виснет нахуй, сервер пишет, что соединение невозможно установить. Если убрать из entity email, то регистрация проходит как по маслу, т.е. проблема именно в этом поле. Пиздец, я просто охуел блять.
Тебе не в жс тред с такими вопросами
В интернете столько вариантов предлагается, ни один из них нормально не работает.
код то скинешь? или ты сюда не за помощью пришел, а пожаловаться на свою глупость?
man flexbox/grid - align-items/justify-content
Flexbox тебе в помощь. Сам когда обнаружил эту фичу вздохнул с облегчением.
Заходи в БД и смотри, какие там колонки у таблицы. Если нихуя не понятно, то pg_dump позволяет сохранять схемки потаблично.
let ul = document.querySelector("#ul1");
let li = document.createElement("LI");
let button2 = document.createElement("BUTTON");
button2.classList.add("button2");
ul.appendChild(li)
ul.appendChild(button2);
li.innerText = "hello"
И хтмл:
<button class="btn btn-add" id="button1">создать</button>
<div class="div1">
<ul id="ul1">
</ul>
</div>
Что не так с кодом, по клику на кнопку не происходит создание блока со списком и второй кнопкой
Создаю список и кнопку, пытаюсь сделать так, чтобы вторая кнопка удаляла только элемент списка. Но работает только первая кнопка и она удаляет полностью все...
Где я накосячил?
подсмотрел как это делает один ютубер
Может у тебя колумн индексовый и уникальный и ты забыл соответствующий декоратор добавить, вот он и пытается додумать ставя uuid
Сделать массив передаваемых значений и через фор оф вызвать
let li = document.getElementsByClassName('li2')[0];
let button = document.getElementsByClassName('button2')[0];
li.remove();
button.remove();
вот такая получилась функция, кнопка удаляет элемент списка и саму себя, но остальные кнопки не работают таким же образом, я ведь создаю несколько элементов списка. Хочется сделать так, чтобы кнопка удаляла элемент списка, с которм была создана и саму себя.
Спасибо, кстати за ответ, работает, а что ноль означает?
Как это делается?
И матан и линал нужен, и желательно гуманитарную вышку тоже.
Метод getElementsByClassName возвращает всё, что было найдено по классу button2 в виде хуерги HTMLCollection. Это массив-инвалид, с которым нихуя нельзя сделать, кроме как обратиться к элементу по индексу, да узнать длину.
Нулевой индекс будет у первого найденного элемента.
А, нужно сделать счетчик и присвоить каждому элементу ли на единицу больше, пойду искать как это творится
Я сам задаюсь тем же вопросом и со слезами юзаю material ui. Для vue вроде есть vuetify, не щупал, но выглядит прикольно. Правда для vue 3 это либа пока в альфе, так что сам я свой пет буду писать горько писать на реакте с mui. Какое же всё говно
Смотришь вакансии, смотришь требования к знанию ui либ, выбираешь самую популярную.
Что тебе лично нравится всем похуй. Я бы на твоём месте бутстрап выбрал, так как довольно популярен и с его знанием можно спиздеть про наличие опыта, так как все кто с опытом его знают.
Крепись, анон, ты сможешь!
Пчел я сейчас вкатываюсь уже год дрочу пару проектов для себя и в качестве портфолио, и уже сейчас понимаю что без знания бэка ты нихуя не сделаешь, пришлось поднимать свой простой бэк на монго, со всеми вытекающими, я так понял обычный верстала сейчас никому нахуй не упал
ты ответил на свой вопрос
Мне тут надо было одну хуюшку запилить, а на жс до этого не писал, ну и взял jquery. Так меня тут местные помоями облили за то что в 202d1 я посмел jquery использовать.
Короче что-то такое:
Вопрос: вариант1 вариант2
Вопрос: [вариант1] вариант2 кликнули на первый
Спасибо.
Например, я хочу повторить какой-то дизайн, но сталкиваюсь с тем, что какие-нибудь margins и paddings плюсуются, в итоге все это выглядит криво и приходится вручную что-то менять, получается не очень-то изящно. Верстать под мобильные версии вообще не умею. Pixel perfect звучит как что-то невероятное, лол.
Причем общаюсь с ньюфагами, которые, как и я, делают тестовые, и понимаю, что у многих из них тоже не особо получается верстать по требованиям, поэтому делают как могут.
Посоветуйте курсов каких-то, плиз.
>какие-нибудь margins и paddings плюсуются
о чем ты, друг?
>Pixel perfect звучит как что-то невероятное, лол.
если есть макет, то никакая не магия
>Верстать под мобильные версии вообще не умею
так научись, media queries для кого придумали?
>Посоветуйте курсов каких-то, плиз.
посоветую включить мозги, научиться гуглить и много практиковаться
Chakra UI попробуй, а лучше чистый css или scss, его больше в вакансиях в разы
Иди до талого, я год назад в такой же ситуации был пока не вкатился. Главное не забрасывать и разбираться пока не поймёшь
>о чем ты, друг?
Когда на макете одно расстояние от элемента до границы родительского элемента, а у тебя другое, потому что вложенные элементы имеют свои margins и padding, допустим, у тебя заголовок не просто в div'е, но еще в каком-то контейнере. Что-то поправил в одном месте, оно съезжает в другом.
Так не объяснишь, но ньюфаги поймут. Я даже от опытных разработчиков слышал, что верстку они не любят, мало в ней разбираются и предпочитают этим заниматься как можно меньше.
>гуглить
В гугле зачастую выдает какие-то статьи от мастеров верстки, которые юзают какие-то эзотерические решения. Всякие CSS Tricks и Smashing Magazine.
А я реквестирую базу.
Если уж не вышло, то и не берись. Тут только модные сасные пацаны, всех неумех на бэк пересаживаем
ну, советую не лезть в этом дело тогда, если ты не в силах открыть ютубчик, гугл или стак оверфлоу и найти ответы на свои вопросы, тут только серьезные дяди сидят, кнопочки красить и маргин на 2 пикселя увеличивать это тебе не за кассой в маке стоять
Лучше расскажи, как ты сам изучал CSS. Вряд ли чисто на гуглении выезжал, основы где-то брал наверняка.
На стековерфлоу наоборот обычно предлагается решение под чью-то конкретную задачу. Если ты в свое нагромождение цсс лепишь понабранные в интернете решения, то это не лучший вариант.
Курсы нужны, чтобы более-менее ясно представлять, как и по каким принципам делать верстку.
Я придумал только сделать массив из запрещённых ячеек в том порядке, в котором они идут сверху вниз с соответствующим номером, сгенерировать число от 1 до (количество_ячеек - количество_запрещённых_ячеек), потом если попал в запрещённую, то выдавать (количество_ячеек - количество_запрещённых_ячеек + номер_в_массиве_запрещённых_ячеек). Звучит как-то тупо, но лучше чет ничего в голову не приходит.
Генерить рандомный номер ячейки, если попал на запрещенную, то генерить еще раз, пока не попадешь на разрешенную.
Но это будет очень хуево работать если запрещено много ячеек, а вполне могут быть запрещены все кроме одной.
Скачай с трекеров какой-нибудь говнокурс с содержанием типа "верстаем мой первый сайт". Абсолютно любой, гикбрейнс, яндекс, удеми, что угодно подойдёт, если там есть ссылка на фигмовский макет с версиями под разные разрешения (в идеале 3 версии - десктоп, планшет и мобильная).
В твоём случае вероятность того, что будет выбраны ячейки до первой запрещённой - намного меньше остальных.
Если не хочешь парится - следуй совету этого анона: >>23005
Если хочешь париться - создай массив разрешённых ячеек - [(x1, y1), (x2, y1), ... , (xn, yn)), и из него уже вытаскивай рандомный элемент.
А лучше не массив, а set из разрешённых ячеек
там есть обучалки, а есть просто про каждое отдельное свойство статья
сделал обычные внутри компонента компоненты List -> ListItem, а еслинт выебывается, что может быть не так?
>решение под чью-то конкретную задачу
Так мы и выяснили, что ты не умеешь в декомпозицию задач
Нашел, import вместо import type делал
Я другой анон, но
По общим каким-то понятиям и свойствам пару статей можно прочитать. Все остальное изучается во время практики, т.е. сидишь пишешь разметку и когда ее надо стилизовать, уже гуглишь конкретно что хочешь с элементом сделать. И дрочишься, пока не получишь что хочешь.
Смотри, предположим у нас пикрил ситуация, getRandomInt() сгенерила 2, какую ячейку ты выберешь по своей схеме?
Смотря на какой. По возможности конечно берется готовое
Там проблема не в вероятности тогда, а в том что оно попадает на запрещённые.
А если так:
https://pastebin.com/ZR4PdZcP ?
Только я там всрато ищу количество запрещённых до рандомного, но ты понял.
От работы зависит. Условный озон для себя сам UI кит пилит, вебстудии, сдающие новый проект раз в 2 недели, берут готовый.
А какая разница, это делается за 10-15 минут под ключ
Что из бэкенда нужно уметь делать? Весь роадмап ноды ковырять?
Про вероятность - я по началу не так понял, что хотел.
По поводу:
random = getRandomInt(0, allowed_amount - 1);
-1 не нужен, потому что обычно верхняя граница не берётся.
Касаемо алгоритма - у тебя там, кмк, опять неравновероятные элементы выходят - лень считать, плюс ты уже начинаешь заниматься перебором, что будет приближать сложность на доставание одного случайного элемента к ~O(n).
Как я уже сказал, тебе после создания массива стоит пробежаться по нему и создать set с координатами допустимых ячеек и уже потом из него доставать случайный элемент. Так у тебя будет O(n) на создание, но потом линейные получение случайного и изменение состояний ячеек.
Ну там массив запрещённых есть отдельно и искать рандомный нужно когда он изменился. я змейку делаю лол, мне нужно сгенерировать нового кролика не на змее
Типа параллельно с движением змеи иметь сет из всего что не змея и генерировать рандом оттуда? А это норм в стейте хранить избыточную хуйню?
Лучше же конечно всё поле пробегать каждый цикл, чтобы вычислить запретные поля.
У меня нет этого чувства даже по отношению к классическим программистам (а не только к веб-разработчикам). Вот по отношению к представителям таких профессий, как архитекторы, хирурги, йоба-инженеры и прочих серьезных профессий - есть
В 25 джуном нереально работку найти, везде уже очередь из 20 летних с 2 годами опыта
Промахнулся тредом?
Если очень хочется избежать изыточности - храни только доступные клетки, а недоступные убери.
забацай простой ui kit как пет проект и будет тебе счастье, потому что:
- сможешь использовать его на своих проектах и не ебаться в будущем со стилизацией
- покажешь свою компетенцию в создании китов, потому что на некоторых работах есть свои ui kit'ы, а будут случаи, где придется писать ui kit с нуля, будешь знать как они вообще делаются
- подтянешь кучу скиллов по пути, типа css и т.д.
Html academy, без рофлов, купи доступ. Хороший структурных подход, интерактивная песочница. Но не вздумай js у них учить. Говно лютое.
Всегда берется готовое, либо явно в виде сторонней либы, либо неявно в виде своей либы которая построена по макету сторонней с прикручиванием своих свистоперделок.
Прикольно, а расскажи как движение происходит, через setIntterval? Сколько мс Задержка?
Ну я только проснулся и ещё нихуя не сделал, но планирую setTimeout в useEffect засунуть. Задержку планирую настраивать, типа уровни сложности.
Т. е. посмотреть на миллион готовых решений ты не в состоянии?
Рендерю свой html через res.SendFile. Теперь, как я понимаю, в скрипте, который напрямую подключен к index.html я могу навешать событий, чтобы брать из бдшки разные данные (fetch(localhost:3000/notes/api)) и с ними взаимодействовать в рамках клиента.
Но встал вопрос как в апишку прикрутить модуль markdown-it. Есть мысль, чтобы на эндпоинт создания или обновления заметки я заведомо парсил искомый текст в html разметку и сохранял эту разметку в бдшке..
Когда я захожу с телефончика в свой чатик и нажимаю на инпут, дабы ввести сообщение некоторые сообщения пропадают под инпутом и выходит, что я не вижу последнего сообщения.
Пытался сделать что-то типа onClick={() => {
endOfMessages.current.scrollIntoView({ block: "end", behavior: "smooth" });
}}
Это работает с компутера, но не работает с телефона всё равно нихуя.
Как я понимаю это происходит из-за резкого изменения высоты окна с сайтом в браузере, т.к. вылезает клавиатура и именно на высоту клавиатуры смещаются сообщения.
Как можно пофиксить это?
Чат делаю на React, если это важно.
Ясно, я вот flappy bird хочу написать. Пока думаю насколько ресурсоемко будет колизии обсчитывать.
Ну само-то окно с сообщениями уменьшается, всё ок, просто сообщения уходят в небытие самые последние при уменьшении высоты экрана.
Я юзал overflow: auto, чтобы сделать прокрутку сообщений именно в этом окне.
Вообще нет идей как тут поправить верстку можно.
> Нашел на гитхабе готовый парсер markdown-it. Понял, что для его внедрения нужно поднимать собственный сервер.
WUT?
Такая же херня. Но у меня ненависть изначально была потому, что послушал кретинов с воркача с начал вкатываться с хтмлакадемии. На деле это скорее антирекомендацией должно быть.
Bump
Ну хз, каждый раз когда смотрю его ловлю дикий кринж, очень странно и немного зажато он себя показывает. Точно не чед, максимум бетка.
пишу
>vite preview docs
На любой путь выдает ошибку о ненайденом файле
найс доебался до чела, он просто безэмоциональный как и большинство кодеров
В vite preview рут файл указывает на путь к самому проэкту vite, внутри которго уже ищет build.outDir для запуска на нем сервера, поэтому изменение build: { OutDir: './docs' } В конфиге должно помочь
Уволен
Тому что ты зыс проебал, надо f.call(String.prototype.trim, ' test ')
Ну зафетчь или выбери селектором сколько тебе нужно, передай это в юзстейт и фильтруй как хочешь.
Так я зафетчил, засунул полученный список в useState, кнопкой фильтрую эти данные. Но при повторной фильтрации я каждый раз фильтрую предыдущие, уже отфильтрованные данные, а я хочу каждый раз фильтровать полный список. Можно перед каждой фильтрацией фетчить данные по новой, но я не хочу каждый раз стучаться к апишке, хватит и одного раза. Должен быть способ как-то сохранить этот первоначальный список, но я затупил жестко.
> шапка
> vue.js - мало работы
Шапка какого года? Щас на hh смотрю - везде этот vue
Все, разобрался. Спасибо.
Так svelte убил вью
Два чая. В моей миллионнике уже столько же, сколько и на реакт вакансий. Вот ангуляр сокращается + на половине вакух еще и дотнет спрашивают. Похоже есть смысл поковырять vue
Углодебил, ты что обиделся?
Их в открытом доступе как говна, от хекслета гитхаб гугли. Или просто набери "тестовое задание уровень направление"
Анон, и последний вопрос. Как сделать так, чтобы при создании нового ряда введенные в форму данные стирались и клонировалась чисто пустая форма?
Добавил строчку в addRow
https://jsfiddle.net/t6zkc9m0/
Там еще может быть проблема в том, что при клонировании строки айдишки-то не меняются, не знаю важно это или нет.
jpeg или webp
чем сжатие картинки для бэкграунда отличается от сжатия картинки не для бэкграунда?
Надо заработать на два стула
> по мере загрузки анализировать поток
Ищешь книгу носорога (фленеган - 7-е издание), и там в главе про fetch есть пример функции, которая качает и анализирует сколько в процентах уже скачено. Читает стрим кусочками и делить общую длину, и количество скаченного. Пик 1
Алсоу, нихуя не могу понять как нормально редактировать Header-ы в тайпскрипте. Допустим пишу враппер над fetch-ем, чтобы на выходе выдавать дтошки, и хочу зашить базовые заголовки в враппер. Но при этом дать возможность при вызове, добавить что-нить в заголовок. Но пик2 такая ебала, что мне кажется проще просто заменять нахуй и отказаться от этой идеи.
Бля, не тот комментарий на скрине захватил, ну да похуй.
interface Headers {
"Content-type": "text/html" | "application/json"
Authorization: "Bearer ${string}"
}
И тд
Не, перезаписать то я тоже могу без проблем. Интересует именно как перебрать хидеры лежащие в headers?: HeadersInit
Чет такое ощущение что я просто закипел, задача же должна быть максимально тревиальной.
forEach((headerValue, headerName) => {
predefinedHeaders.set(headerValue, headerName);
}
Или [...predefinedHeaders.entries(), ...reqOpt.headers.entries()]
Компилятор откуда-то вывел тип string, из-за которого не дает итерировать ни по чему толком. Ни спредом ни разложить, ни по итератору перебрать. Пойду чайку наверну, попробую посмотреть вниамтельнее.
Этот вотчер необходимо держать в отдельной вкладке постоянно запущенным? Нельзя спрятать его куда-то, чтобы автоматически запускался?
Бля, пойду доки почитаю внимательнее что ли. Какой-то уебанский юнион, который торчит хуй знает какими методами.
>>24301
Я бабель не дрочил пока что, но точно знаю что watch команда мониторит файлы на изменения, и при изменении файла запускает соответствующий процесс (компиляции, транспиляции, или чего ты сам задал)
Нужно вытащить данные из промиса.
Я делаю extractedData = promise.then((result) => result)
Проблема в том, что result типа data, а extractedData типа Promise<data>. Собственно, что я делаю не так?
>забываешь сделать перед присвоением await
>у тебя происходит присвоение в экстрактедДату раньше, чем промис зафулфилиться значением
Не, это хуйня какая-то эвейт здесь точно не нужен. Должен быть способ наебать систему и вытащить данные без эвейта. У меня синхронная функция, должен быть способ зафулфилить промис без всяких эвейтов, они же позже промисов в языке появились.
> Не, это хуйня какая-то эвейт здесь точно не нужен. Должен быть способ наебать систему и вытащить данные без эвейта.
Можно попробовать подождать, это ведь промис, он рано или поздно выполниться. Ты поставь брейкпоинт и подожди хотя бы 10 минут, потом отпишись пожалуйста, а то мне тоже интересно стало, удасться ли нам наебать систему или нет. Обещаешь?
У стрелочный и обычных функций разный this, ну и с памятью немного по разному работают и еще рад специфической хуйни. Но если каких-то спец требований нет, то вкусовщина и холивар.
Понял, спасибо
В данном случае это хуевый код вкатуна.
function name(...arg): ReturnType {...}
Пишут в случае если эта функция используется в верхнем скоупе
Через объявленте только в скоупе другой функции, при этом если она не меняется, то объявляют через const, иначе через let.
Понял, принял
А если через промисы решить?
Как и в любом другом деле, трать на него время.
Есть кто после бекенда изучал данный фреймворк? Сколько по времени заняло до базового уровня прикасаться и что-то самостоятельно лепить вменяемое?
>про useContext
Доку почитай!
>Redux
Только курс устаревший.
https://max-frontend.gitbook.io/redux-course-ru-v2
Может тебе нужно сначала декодировать в джсон, прежде чем ты сможешь прочитать.
https://learn.javascript.ru/fetch
extractedData = promise.then((result) => result.json()) попробуй
Дошел до циклов
Реакт расхайплен сильно конечно. По факту учить вью на порядок проще.
КАк вы вообще вкатились то нахуй, это же нужно быть аутистом
Поднял уже три своих сайта с бэком и фронтом на реакте/вью и один на ванильном html, и только недавно понял насколько дохуя еще надо знать что бы хоть что то нормально делать
А зачем для своих собственных сайтов программировать? есть же специальные инструменты для вебмастеров
AngularJS был действительно сверхпопулярным фреймворком в своё время, но Angular-у даже похожего названия не хватило, чтобы набрать сопоставимую популярность. Причина тут в общей переусложнённости и необходимости полностью переписывать весь код. А раз уж всё равно переписывать, то есть куда более простые и быстрые альтернативы. Так что многие перешли на Vue (современная инкарнация AngularJS) или, на волне хайпа, на React. И даже те, кто по начало верили в Ангуляр и переписали код, потом всё-равно меняли коней. Я сам лично наблюдал за подобными процессами в Энтерпрайзе.
Типичные причины:
скорость работы приложения
скорость разработки
сложность миграции между версиями
Идея сделать фронт похожим на бэк витала у гугла довольно давно. И уже не раз проваливалась. Взять тот же GWT позволявший даже код писать на Java.
RxJS - это отвратительное решение. Как архитектурно, так и в реализации. Они несколько раз меняли API до неузнаваемости, в итоге по сети разбросаны куча версий документации и неработающих примеров кода. А Stack Overflow просто забит вопросами в духе "хочу сделать простейшую вещь, но не пойму как это сделать на Rx".
Redux - это просто рак. Но NgRx - это, пожалуй, лучшая версия редакса, ибо в нём хотя бы мемоизация селекторов есть из коробки. Но это всё-равно отвратительное архитектурное решение, мешающее переиспользованию компонент. Я лично под давлением переписывал приложение с MobX на NgRx, так что мне есть с чем сравнить: перфоманс просел в несколько раз, а объём кода, наоборот, в несколько раз увеличился. И ладно бы только объём, увеличилась и его сложность. Хотя, стоит признать, что по сравнению с голым RxJS, NgRx действительно упрощает код, ибо не надо постоянно решать головоломки.
DI в Ангуляре сделан через задницу. Никто не понимает как он работает. Работает он медленно. А поддержка кода с ним крайне переусложнена. Как сделать простой и быстрый DI я недавно рассказывал.
Компонентные тесты тоже дико тормозят, ибо каждый раз инициализируют пол мира. В итоге типичная оптимизация:
Выпиливаем Default стратегию детекта изменений.
Выпиливаем зоны.
Выпиливаем инициализацию пол мира для каждого теста
В конструкторах инъектим только инъектор, а все зависимости уже лениво получаем через него.
И это только для того, чтобы добиться лишь приемлемой производительности, но ничего выдающегося.
Когда мы начинали разработку $mol, мы смотрели и на Ionic, и на Polymer и на другие технологии гугла - всё это безбожно тормозило на мобилках.
А так называемые Ангуляр-разработчики от 350к, которые умеют делать лишь квадратно-гнездовые приложения, - это прекрасный способ выбрасывать деньги на ветер. Показываешь им простой код на MobX, объясняешь как всё работает, - говорят, что не понимают, дайте нам NgRx, будем писать тривиальные селекторы в духе `a.b.c.d`, а к ним ещё и тестов забабахаем. И плевать, что они с редьюсерами разъедутся уже через неделю.
Резюмируя: Ангуляр вообще ни разу не про энтерпрайз требования. Наоборот, только в энтерпрайзе может быть столько бардака (как в головах, так и в коде), что поделки типа Ангуляра не выбрасываются сразу, а продолжают хорошо кормить специфическую касту разработчиков, которые годами пилят тривиальные приложения, выдавая на выходе посредственный во всех смыслах результат.
AngularJS был действительно сверхпопулярным фреймворком в своё время, но Angular-у даже похожего названия не хватило, чтобы набрать сопоставимую популярность. Причина тут в общей переусложнённости и необходимости полностью переписывать весь код. А раз уж всё равно переписывать, то есть куда более простые и быстрые альтернативы. Так что многие перешли на Vue (современная инкарнация AngularJS) или, на волне хайпа, на React. И даже те, кто по начало верили в Ангуляр и переписали код, потом всё-равно меняли коней. Я сам лично наблюдал за подобными процессами в Энтерпрайзе.
Типичные причины:
скорость работы приложения
скорость разработки
сложность миграции между версиями
Идея сделать фронт похожим на бэк витала у гугла довольно давно. И уже не раз проваливалась. Взять тот же GWT позволявший даже код писать на Java.
RxJS - это отвратительное решение. Как архитектурно, так и в реализации. Они несколько раз меняли API до неузнаваемости, в итоге по сети разбросаны куча версий документации и неработающих примеров кода. А Stack Overflow просто забит вопросами в духе "хочу сделать простейшую вещь, но не пойму как это сделать на Rx".
Redux - это просто рак. Но NgRx - это, пожалуй, лучшая версия редакса, ибо в нём хотя бы мемоизация селекторов есть из коробки. Но это всё-равно отвратительное архитектурное решение, мешающее переиспользованию компонент. Я лично под давлением переписывал приложение с MobX на NgRx, так что мне есть с чем сравнить: перфоманс просел в несколько раз, а объём кода, наоборот, в несколько раз увеличился. И ладно бы только объём, увеличилась и его сложность. Хотя, стоит признать, что по сравнению с голым RxJS, NgRx действительно упрощает код, ибо не надо постоянно решать головоломки.
DI в Ангуляре сделан через задницу. Никто не понимает как он работает. Работает он медленно. А поддержка кода с ним крайне переусложнена. Как сделать простой и быстрый DI я недавно рассказывал.
Компонентные тесты тоже дико тормозят, ибо каждый раз инициализируют пол мира. В итоге типичная оптимизация:
Выпиливаем Default стратегию детекта изменений.
Выпиливаем зоны.
Выпиливаем инициализацию пол мира для каждого теста
В конструкторах инъектим только инъектор, а все зависимости уже лениво получаем через него.
И это только для того, чтобы добиться лишь приемлемой производительности, но ничего выдающегося.
Когда мы начинали разработку $mol, мы смотрели и на Ionic, и на Polymer и на другие технологии гугла - всё это безбожно тормозило на мобилках.
А так называемые Ангуляр-разработчики от 350к, которые умеют делать лишь квадратно-гнездовые приложения, - это прекрасный способ выбрасывать деньги на ветер. Показываешь им простой код на MobX, объясняешь как всё работает, - говорят, что не понимают, дайте нам NgRx, будем писать тривиальные селекторы в духе `a.b.c.d`, а к ним ещё и тестов забабахаем. И плевать, что они с редьюсерами разъедутся уже через неделю.
Резюмируя: Ангуляр вообще ни разу не про энтерпрайз требования. Наоборот, только в энтерпрайзе может быть столько бардака (как в головах, так и в коде), что поделки типа Ангуляра не выбрасываются сразу, а продолжают хорошо кормить специфическую касту разработчиков, которые годами пилят тривиальные приложения, выдавая на выходе посредственный во всех смыслах результат.
Если чуешь что собес пошел не так, то падай на пол, закрывайся руками и кричи "я в домике", в таком случае каверзных вопросов тебе больше задавать не будут, но смотри - более 2 раз за собес такое не желательно делать
Тоже пойдет, "домик" работает и по удаленке
Выпей закрепляюшего - крепкий чай там, смекта.Вот это всё.
Если при заходе в офис тебе под ноги кинут шаблон - переходи.
Диванона боюсь
Ты че епта, каждая буква кода написана собственноручно
https://github.com/webPrsnr/js-markdown-notes
Ну такое, слабенько чтобы прям показывать.
Это даже не Todo app.
Попробуй что-нибудь посложнее и хоть как-то применимое.
>textContent="" стирает только дочерние узлы, а у элементов форм, таких как textarea их вообще нет.
А че тут сложного?Пару часов под чаек и ютуб.
Чего блять, вы тут вкатуны вообще обленились?Вы верстальщики или фронтендеры, определитесь уже.Ты 50% времени будешь тратить на послать/принять запрос от сервера, а остальные 50% на верстку.От вас требуют написать одну строку: await fetch(...), а вы уже в осадок падаете.
если кто еще спизданет про конкуренцию в айти кидайте этот тред
мимо >>25439
Кабанчик, спок. У тебя не выйдет зафорсить, что это норма. Сам ебись в своем фулстаке
Страшно спросить: а что в твоем понимании фронтенд?Таблички верстать?А данные для табличек откуда брать будешь?Хардкодить каждую ячейку?
Вкатун, почему ты решил что отправка с фронта запросов на сервер это фулстек? Фулстек - это если бы тебя заставили писать код на сервере, обрабатывающий запросы твоего фронта.
У них все что выходит за рамки "how to center div css" - не нужно, в современном жсе написать запрос на сервер и принять с него же ответ - одна строка, но это сложно, надо что такое жсон узнать, в промисах разобраться на самом деле нихуя из этого не нужно.Соболезную тем кто будет за ними на галерах хуету фиксить, сам недавно в этой роли был, людям 120к платят, а они основы основ не знают.
кстати настоящий фулстек ничем практически не отличается от фронта, просто умеет на стороне сервера взять/положить значение из/в базу, научиться этому - час гугла, а зп в 2 раза выше
> кстати настоящий фулстек ничем практически не отличается от фронта, просто умеет на стороне сервера взять/положить значение из/в базу, научиться этому - час гугла, а зп в 2 раза выше
Кабанчик, начал хорошо, но вот здесь перетолстил.
Я работаю над связкой из 2 серверов - нода и го, документации от 3rd party apis вообще никакой, но это не помешало методом тыка исследовать их. Поэтому такая проблема не кажется серьёзной.
Сегодня этот дурак сказал "ты просто не умеешь работать", его выебали за это, но я думаю доехать до него и ушатать за наглость и обман. Призываются лётчики-реактивщики, ответьте на мой ответ - реакт приложение рил так сложно пилить с нестрогой типизацией в моделях АПЕ или я прав и это голимый пиздеж?
Напиши что конкретно нужно уметь по ноде в 2к22? Никто так толком и не может ответить на этот вопрос? Какой объем фронт/фуллстек по нодам должен знать?
Причем тут нода? У тебя бек может быть на пхп, плюсах, джаве, на чем угодно и на всем вместе. Ты должен уметь дернуть хатетепе метод или данные из вебсокета почитать, или из сервер эвентс или вообще из чего угодно, какие есть апи в браузере. Тебе дают схему апи, сиди дергай. Тебя же не заставляют даже думать, как там данные на беке сохраняются.
Он должен отдавать данные и все. Как ими пользоваться - твоя работа. Может ты все это сверстаешь таблицей, а может привычной сеткой с адаптивом, да еще и в мобильное приложение. Беку-то похуй, он в универсальном жсоне отдал данные, а там хоть на руби пиши че дальше.
Ебаться с бэком это если работать в убогой студии, которая верстку на ворпресс или битрикс натягивает, там php надо и бекендеров нет никаких.
Ты видимо не понял вопроса. Я не спрашивал надо ли уметь дергать хттп или нет (итак ясно, что надо), речь конкретно об умении и познаниях в бэке. Должен ли я уметь писать микросервисы, знать реляционные БД и все в таком духе?
Как скажешь.
Тебя ебать должно, какой там бардак на фронте?
А я и не искал, мне предложили попробовать
Это от тебя зависит насколько ты гибкий. Можно вообще нихуя не знать и бабки получать просто так.
Нравятся обьекты. В классе пихаешь всякие методы и при вызове этого самого класса на выходе получаешь обьект, внутри которого методы и обработчики, использующие эти методы.
Реакт не использую т.к не уверен в своих силах в ванильном жсе (считаю непутевой идеей браться за такой фрейм не имея за собой крепкой базы в ванильном жсе да и в целом в программировпнии), потому и кидаю свои репы на оценку местным анонам.
>В классе пихаешь всякие методы и при вызове этого самого класса на выходе получаешь обьект, внутри которого методы и обработчики, использующие эти методы.
Вот только дальше тудулиста жаваскриптовская реализация классов начинает протекать, и эти дыры нужно затыкать или переобъявлением методов в конструкторе (что лютая дичь) или присваиванием стрелочных анонимок на все методы (что не без своих подводных камней). Альтернатива - очень внимательно смотреть в реализацию каждого метода и биндить контекст в переменную, если идёт проёбывание контекста. Плюс классы не минифицируются, так что бандл с классовым кодом просто жирнее.
Но это фронтопроблемы, на сервере можно обмазываться классами на каждый пук. Впрочем я не знаю, проёбывается ли контекст в нодовских листенерах или нет.
1. Скрипт во мгновенно вызываемую функцию не обёрнут.
2. Скрипт не находится в заголовке.
3. `Markdown.renderNoteElement()` дохуя перегружен, выноси функции внутри него в отдельный класс, даром что они один хуй не используют контекст класса этого метода.
В интернет на сайт. Надо ввести логин@пас в форму, форма должна из них сделать json и передать для авторизации.
Это блять наипростейший способ. Альтернатива - перебирать ДОМ.
Задача следующая: передать кучу говна из родительского компонента реакта к его потомкам. В этой куче говна есть как методы, так и обычные данные. При этом нужно, что бы компонент-потомок мог изменять переданное значение и проивзодить ререндер родительского компонента. надеюсь нормально объяснил.
Как такое лучше сделать? Использовать контекст или каким-то другим способом?
>https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea
>Default content entered between the opening and closing tags. <textarea> does not support the value attribute.
3. `Markdown.renderNoteElement()` дохуя перегружен, выноси функции внутри него в отдельный класс, даром что они один хуй не используют контекст класса этого метода.
???
Т.е создать создать отдельный класс (не Markdown) и как то связать новосозданный класс с текущим?
Не поверишь, но ты можешь создавать сколько угодно классов. Конкретно в твоём случае функции, обьявленные внутри `Markdown.renderNoteElement()` живут в своём мире, который даже не обращается к инстансу класса. Создавай класс для элемента списка, отвечающего за рендер в ДОМе, который хранит в себе ссылку на элемент в доме и инстанс маркдауна, который хранит в себе маркдауновскую строку.
Ну это как один из вариантов, да. Но я хз как нормально на нем реализовать подобное поведение, если у меня таких компонентов будет не одна штука, а штук 10, каждый со своим сотоянием и его передачей своим потомкам
Маняоправдания пошли. Сейчас открыл в IE 11, там есть в chrome есть, в FF есть. Safari только не проверил, но я более чем уверен, что там тоже есть.
А какое значение должно быть у только что созданной пустой текстарии? Что там блять должно быть, глупышка?
Ты еще тупее, если думаешь, что при пустом значении там будет null
Только за 50 змагаровских
за 500 рублей сделаю, плата 50 до / 50 после
Ты как дешевая проститутка
1280x720, 0:55
Есть стили, стили библиотеки импортятся в общий файл стилей с остальными стилями.
По какой-то причине селекты от библиотеки, их стили подтягиваются очень не сразу, в отличии от стилей всех остальных.
Это шо такое? Как чинить?
>у нее есть крутые штуки для select
У неё нет крутых штук для селекта, она свое говно поверх него реализует.
>По какой-то причине селекты от библиотеки, их стили подтягиваются очень не сразу, в отличии от стилей всех остальных.
>Это шо такое? Как чинить?
Ну как минимум нужна видео запись.
И еще код не забудь скинуть на кодепен или жсфиддл
Разбираюсь с вот этим вот самым, понял вот что:
Есть коллстэк куда заносятся последовательно, друг за другом функции (Обычные таски: console.log, parseFloat и т.д.) и выполняются.
Если движок браузера замечает что-либо из Web API в коллстеке, то он закидывает это к себе в "среду выполнения", назову это так, выполняя эти вещи асинхронно. В Web API макротасками называются setTimeout, setInterval и т.д., микротасками - Promise и т.д.
После выполнения каждая из функций в Web API попадает в очередь и ждет полного очищения коллстэка от оставшихся задач. Когда коллстэк очищается, event loop переносит поочередно функции из очереди в коллстэк.
Вопросы:
(Пикрил). Асинхронные методы у Promise выполняются по очереди даже если создаются разные экземпляры? Почему сначала полностью выполняется долгий "b", не должен ли сначала исполниться быстрый "a"? Я только что выше писал, что они по очереди передаются в коллстэк, но я думал это немного иначе работает, в общем, объясните как-нибудь, please.
setTimeout не всегда выполняется через столько, сколько мы указали вторым аргументом, потому что он обязан выполниться только после всего остального кода из коллстэка, получается его минимальный срок его выполнения зависит от оставшихся задач в ящике коллбэков? (Если второй аргумент таймаута такой маленький, что еще не весь коллстэк успел выполниться, то коллбэк таймаута выполняется самым последним, сразу после всех остальных)
Всё остальное я правильно понял?
Забыл добавить, отличие микро и макро тасок находится в 1 моём вопросе? Микротаски МЕЖДУ СОБОЙ выполняются синхронно, а макро как угодно?
Пока все микротаски не выполнятся, код дальше не пойдет. С макротасками это так не работает. МОжешь попробовать создавать микротаск рекурсивно внутри самого себя же - залагаешь интерфейс
>Пока все микротаски не выполнятся, код дальше не пойдет
Я почти то же самое написал, когда не закончится первый then, не сможет начаться любой второй then. Но на обычные таски это не влияет, это только в пределах микротасков
Какой инструмент в Редаксе более ТруЪ по состояню на 2022 год: redux-thunk, RTK query, Redux-saga?
За JS и Node.js будущее. Ну еще пригодится Rust.
Пишу авторизацию по ролям. Для этого написал декоратор, внутри декоратора получаются данные авторизованного пользователя (из jwt токена) и нужно проверить имеет ли он роли для доступа к маршруту или нет. Проблема в том, что в самом токене лежит голый айди, т.е. нужно достать все остальное асинхронным запросом из базы, а специфика такова, что все действие происходит в синхронном методе класса, т.е. я просто не могу сделать асинхронный запрос и вменяемо получить данные внутри синхронной функции. Как выпутаться из этой ситуации? На ум приходит только засунуть роль в токен и просто получить ее с запросом, но так делать нежелательно, насколько я понимаю.
Нельзя, я не уверен что тогда вообще что-то работать будет т.к. этот метод наследуется из прототипа и возвращает типы без промисов.
Я хуйню спизданул, так ничего он не наследует. Но есть чувство, что все равно все сломается нахуй, попробую в любом случае.
В чем проблема получать JSON с правами и маршрутами при запуске приложения?
Китайцы не умеют программировать
Не снимая штанов
На мидла нужно знать примерно как сеньор с 6 годами опыта в беке, нужно ли говорить что мидлу платят меньше?
Во фронте понятия джун/миддл/сеньер ничего не значат. В этой сфере нет по настоящему сложных задач. Сеньером может стать любой додик сидя на диване.
Ангуляр — не библиотека. Шах и мат.
Ну и нафиг ты во фронт тогда полез и вообще в веб, раз учить много? Учи кресты или джаву какую-нибудь.
А как тут не разныться то бля? Встаю в 10 часов, делаю парочку коммитов, мерджу и иду дрочить осташиеся 7 рабочих часов в пое. За все это мне платят нищенские 170к/месяц. Сам бы не разнылся?
Строить вертикальную архитектуру, а не лапшевидную.
В ангуляре юзал typescript, в реакте js
> сли у меня таких компонентов будет не одна штука, а штук 10, каждый со своим сотоянием и его передачей своим потомкам
Значит это будет единое состояние, которое будет лежать в сторе размазанное по слайсерам.
Бамп вопросу.
Я соединил их в один rootReducer с помощью combineReducers.
Всё работает хорошо, но! когда я жму кнопку "получить юзеров", происходит dispatch с type GET_USER и всё отрисовывается. Но при этом компонент, отвечающий за отрисовку чисел и следящий за состоянием именно чисел (которые совсем в другом reducer'e) возвращает в консоль значения этих чисел. Получается при обновлении состояния массива юзеров зачем-то обновляется состояние чисел, которые к юзерам отношения вообще не имеют.
Это так и должно быть или я люто наговнокодил?
Алсо, при этом если я обновляю состояние чисел, то массив users не возвращается в консоль.
const VAR = (param) => [{a: param}, {b: param}]
res = VAR('123')
Это вообще как понять? Почему массив вызывается как функция с параметром?
Я сам разобрался. У меня массив объектов users отрисовывался в App, где лежал дочерний компонент Counter, в котором был выведен состояния numbers. Поэтому при ререндере users App дёргало компонент Counter, а тот в свою очередь консолил состояние numbers.
Я сделал компонент UserList и там реализовал отрисовку данных из массива объектов users и теперь всё работает хорошо.
Массив создается внутри arrow-функции и нкиуда не вызывается.
>const VAR = (param) => [{a: param}, {b: param}]
Тоже самое, что и:
function VAR(param){
return [{a: param}, {b: param}];
}
А имитацией чего это еще должно быть если эта штука при тачах заставляет вести себя браузер так как на мобиле?
Не знаю, я просто думал, ну, круг и круг, никогда не придавал значения, что это символизирует. А оно вот оно что, Михайлович! Вон оно чё!
Я тоже видел в штмлакадемии эту хуйню. Но не использовал. Вангую, что даётся недельный доступ к файлам и всё. Предыдущего потока. Вангую, что нельзя по этой хуйне считаться прошедшим курс и стать официальными выпускником. Я ещё читал, что там на профессию фронтенд-разработчик ввели удешевлённый платный тариф - без наставника. Типа платишь меньше и сам всё проходишь без наставника.
Главное для себя вынес - теперь можно без преувеличений говорить на собесах, что проходил легально курсы у них с пруфами, это самое главное.
Параметры это переменные, в которые передаются аргументы при вызове функции. Процедуры и функции тут не причем.
function x(параметры) {}
x(аргументы)
Чекал вакансии в своей мухосране, онли ангуляр проекты, я как понял, на это похуй, пушта все равно все на удаленке?
>мухосране
От туда только удаленка, все остальное это гребля на галере, вакансий даже в хх все на реакте, если хочешь для себя писать (по фану) то вью
Если вкратце - это класс, который может по мере загрузки zip-архива анализировать его на наличие файла с определённым именем, и если найдёт такой - остановит загрузку и вернёт содержимое файла. Я раньше на js не писал, поэтому очень нужен взгляд со стороны. Как бы вы реализовали такой функционал? Режет ли вам что-то глаз в том, как написана прога?
>Если вкратце - это класс
Уже говно.
>fromUrl
А че если мне по POST запросу надо запросить? А если по DELETE? А если мне аднные для авторизации передать надо?
>fetchUntilFileName
А че, если мне надо, к примеру, проверить название файла на соовтетсвие регулярке?
>комменты внутри метода
Комменты должны быть НАД методом
>new Object();
Нахуя?
>const constPartSize = 30;
Вынести в аргмент
>const const
Нахуя начинать название константы с const? Ты в блокноте пишешь чи что?
Дальше не смотрел, т.к. надоело
>Как бы вы реализовали такой функционал
Выкинул бы нахуй класс и сделал все в виде функции, которая принимает DataStream и реуглярку/строку названия файла. Добавил бы возможность вернуть все имена файлов и путь до них, а не только первое совпадение.
>класс - Уже говно.
А как надо?
>А че если мне по POST запросу надо запросить? А если по DELETE? А если мне аднные для авторизации передать надо?
>А че, если мне надо, к примеру, проверить название файла на соовтетсвие регулярке?
Тут моя вина, я не объяснил что этот код написан для одной специфической задачи и реализация этих функций была бы избыточна в её рамках
>Комменты должны быть НАД методом
Спасибо, поменяю
>new Object(); Нахуя?
А как надо? const val = {} ?
>Вынести в аргмент
В аргумент метода? У zip длина заголовка всегда одинакова, следовательно никогда не придётся менять этот параметр
>Нахуя начинать название константы с const? Ты в блокноте пишешь чи что?
const в constPartSize показывает не то, что это константа, а то, что это часть заголовка неизменяемой длины
Мне нужно как раз читать архив до первого совпадения, т.к. после его нахождения можно не загружать остальные гигабайты архива, и не нагружать сеть. На счёт остального - спасибо, подумаю как переписать
>Мне нужно
В этом и твоя проблема. Это нужно тебе и нужно это сейчас, ты не задумываешься о том, нужно ли это будет в будущем не тебе и когда.
>Тут моя вина, я не объяснил что этот код написан для одной специфической задачи и реализация этих функций была бы избыточна в её рамках
Ну так все равно лучше написать сразу максимально утилитарную имплементацию, для переиспользования на будущих проектах, мб даже на другой работе. Если есть ограничение по времени, то конечно да, тут можно этим принебречь.
>А как надо? const val = {} ?
Да, никто не пишет new Object, это слишком топорно.
>В аргумент метода? У zip длина заголовка всегда одинакова, следовательно никогда не придётся менять этот параметр
Понятно, тогда ОК.
>const в constPartSize показывает не то, что это константа, а то, что это часть заголовка неизменяемой длины
У тебя const constPart = new Object(); постоянно мутируется, хотя вроде написано что это const. В общем, не логично.
+ еще косяк:
>const constPart = new Object();
> constPart.signature = headerConstPartView.getUint32(0, true);
> if (constPart.signature != 0x04034b50) {
> throw new Error(
> `Unexpected file signature - ${constPart.signature.toString(16)}`
> );
> }
Ты тратишь время на создание поля signature в обхекте, хотя можешь сразу выкидывать ошибку.
>>26994
> ты не задумываешься о том, нужно ли это будет в будущем не тебе
> лучше написать сразу максимально утилитарную имплементацию
Вы оба правы, скорее всего я добавлю немного функциональности на будущее, хотя вряд ли она пригодится
> У тебя const constPart = new Object(); постоянно мутируется
Вот тут можно по подробнее, на сколько я понял, смысл const в том, что мы больше не будем менять ссылку на (переопределять) объект, хранящийся в переменной. Есть какое-то соглашение, что мутируемые объекты не нужно через конст объявлять?
>>27000
> Ты тратишь время на создание поля signature в обхекте, хотя можешь сразу выкидывать ошибку.
Спасибо, перепишу
>смысл const в том, что мы больше не будем менять ссылку на (переопределять) объект
Да. Но у тебя еще и в названии константы есть слово const, на что оно влияет? У меня первая мысль, это то, что этот объект иммутабелен.
Кстати, прелесть класса в том, что я как раз могу добавить пару методов, которые реализуют эти возможности, просто добавив пару методов, и вызывать, например не ZipFetcher.fromURL(), a ZipFetcher.fromPost() и не ZipFetcher.fetchUntilFileName(), a ZipFetcher.fetchAllFiles(), таким образом не теряя старой логики.
Но на сколько я понял, в js классы не жалуют, почему?
Видимо надо подумать, как переименовать переменную, парой постов выше объяснил, что имеется ввиду часть заголовка, имеющая постоянный размер в 30 байт, в противоположность varPart, длину которой мы узнаем только после того, как распарсим constPart
>Ты задал вопрос ка ктебе vue поставить, тебе сказали. Как и куда программировать это другой вопрос
Спасибо, что подсказал как поставить. Буду признателен, если напишешь про IDE, я думал vue.js это фраемворк с IDE
Терминал умер, спасибо. Надеюсь ты доволен?
хмм, вот я устраиваюсь стажером на работу и мне чувак сказал, что нужно писать в объектно ориентированном стиле. На жабоскрипте... а ты говоришь, что так не делается, или я не так понял?
>в js классы не жалуют, почему?
Потому что:
а) Медленные шо пиздец.
б) нет асинхронных конструкторов.
в) Во фронте очень мало задач, которые бы решались классами.
custom elements недоделанная хуета
В официальной документации все есть.
> Во фронте очень мало задач, которые бы решались классами.
Скажем так, почти нигде они не решаются ООПшиной.
С каких пор ООП подразумевает обязательное использование классов? Оно расшифровывается как Объектно Ориентированное Программирование, а не Классово Ориентированное программирование если что.
Двачую. А там где пытались натянуть решение проблем при помощи классов, aka Web Components, React Class components были жидкие обсеры.
>ОБъект это инстанс класса
Нет. Объект - инстанс прототипа этого объекта. По крайней мере в JS
Нет классов или интерфейсов - нет типов, нет типов - нет рефакторинга, нет рефакторинга - нет поддерживаемости.
Я не тот анон с которым ты общался. Никаких маневров - чистая практичность типов.
представим у тебя есть метод getProfile. Он возвращает объект {userEmail: "
С типизацией IDE найдет тебе пользователей getProfile и ты там можешь посмотреть как используется объект.
С типизацией у тебя код не скомпилится и ты пройдешься по ошибкам типа {userEmail: string, userName: string, score: number} и посмотришь все проблемные места.
Без типизации у тебя IDE найдет использования getProfile только если он эксортируется/импортируется и нигде не используется динамически. Модули дают какакой-никакой неймспейсинг.
Без типизации ты можешь надеятся что getProfile - уникальное название и ты можешь грэпать проект.
Без типизации ты можешь надеятся что код который использует getProfile ничего не сделает с добавленым полем. Ты не в курсе что Петя где-то в коде сделал проход по всем ключам и форматирование значений.
Более сложный пример. Есть метод isAuthenticated. Он синхронный и возврачает true или false Перед тобой встала задача переделать этот метод чтобы он возвращал какой нибудь EventEmitter потому что аутентификация стала зависить от чго-то асинхронного. Ты можешь просто не узнать какой код твоего сложного приложения просто проглотит объект как true
Мы же не петпроектами занимаемся, мы приходим на проект, который хз сколько лет писался. Мы не можем ручатся за весь код, поэтому наличие типизации дает хоть какую-то увереность что мы не обос
ремся в поддержке.
Не понял. Выше спор был классовое ооп vs прототипное ооп в жиэс, а не ооп vs не ооп. В тайпскрипте классы являются типами. Можно их использвать для типизации если тебе нужно использовать их тип в рантайме, например для DI.
Выше был спор о том, подразумевает ли ООП обязательное использование классов или нет
const hui = () => {
//something
setPizda(/something/)
}
useEffect(() => {setTimeout(hui, 1000)}, [pizda])
И у меня предупреждение React Hook useEffect has a missing dependency: 'hui'. Either include it or remove the dependency array react-hooks/exhaustive-deps
Я нихуя не понял, че ему надо то?
На собесах в принципе не нужно говорить что проходил курсы, а тем более платные.
document.querySelector('.audio_row').parentNode.onclick = function(el) {
console.log(el);
};
Почему MouseEvent вызывается при кликах на одних элементах, но не вызывается при кликах на других? Они все внутри ('.audio_row').parentNode, естественно. Подозреваю, что дело в конфликте с каким-то другим onclick. Но как тогда заставить работать оба onclick-а?
Либо подскажите, как заставить работать onclick на всех элементах с одним классом. querySelectorAll и цикл не подходит, потому что эти элементы подгружаются при пролистывании страницы вниз. Неужели только обсерверы делать и на каждый новый элемент добавлять атрибут с онкликом? Работать будет, но не хотелось бы превращать код из нескольких строк в огромную хуетень из обсерверов. Вариант выше идеальный, только он... Не работает.
>Почему MouseEvent вызывается при кликах на одних элементах, но не вызывается при кликах на других?
Потому что ты что-то не то делаешь, он либо перезапишется либо будет вторым вызываться в зависимости от вида навешивания слушашателя
Разберись как там сделано и от этого можешь отталкиваться
let lastPos = 0;
window.addEventListener('scroll', () => {
currentPos = window.scrollY;
if (currentPos > lastPos) {
lastPos = currentPos;
let audioRow = document.querySelectorAll('.audio_row');
audioRow.forEach(audio => {
audio.parentNode.onclick = () => {
alert();
}
})
}
})
capture phase - это просто true в конце?
elem.addEventListener(..., true)
А на боди вешать, чтобы Listener не пытался начать работать с элементом, который еще не прогрузился и не вылетал с ошибкой?
Повесил на старый селектор и спрятал под DOMContentLoaded, всё работает отлично, пусть я и не особо понял, как. Спасибо, анон!
>>27625
Тут при каждом скролле вниз, что ли, заново выполняется querySelectorAll? Какое-то не очень решение. И разве если каждый раз вешать на элемент onclick, то он не будет многократно дублироваться? Я сейчас как раз переписываю код из-за того, что addEventListener click с анонимной функцией каждый раз создавал нового Listener-а.
Понял, вроде бы.
>>27649
Ну а что я мог написать-то? Вот есть родитель, на которого я повесил onclick. Я кликаю на всё, что есть в родителе - работает. Кликаю на кнопку, на которой точно есть другой onclick либо addEventListener - не работает, но выполняется тот код, что уже там есть. Нажимаю на элемент заголовка - работает, но если я нажимаю на <a href>-элемент да, именно без ссылки внутри заголовка, то уже не работает. И в процессе гугления много разных обсуждений конфликтов между онкликами. Ну, либо есть какая-то проблема с нажатиями на ссылки и баттоны, я не знаю.
Ладно, в любом случае elem.addEventListener(..., true) мне помогло, всем спасибо. И с многократным вызовом уже тоже разобрался.
Там может быть stopPropagation
ну 15к российских баксов, само собой.
Лучшие туториалы обо всем вокруг веба. https://youtube.com/channel/UCyLNhHSiEVkVwPSFKxJAfSA
Вместо того чтобы въебать день на чтение унылой доки, можно потратить 1 час на видос, в котором все доступно и просто объясняется на реальных примера.
Неплохо, даже с низким уровнем английского все понятно.
Мидлы в каждой конторе разные, но я бы не ебал голову и работал удаленно без необходимости срезать зп
С точки зрения синтаксиса обычное название переменной, с точки зрения семантики переменная на которую нам поебать.
Я пробовал через css написать что width и height 100%, но тогда оно становится размытым.
Mdn то почитай ептыть, есть размеры как дом элемента, задаются через style, и есть размер канваса, задается через width и height атрибуты.
Там же тебе расскажут про DPI и scale чтобы глазки не щипало.
Позднее ты увидишь что 1px solid black рисуется как 2x solid gray, потому что линии рисуются между пикселями, а монитор между пикселями рисовать не может
> Mdn то почитай ептыть, есть размеры как дом элемента, задаются через style, и есть размер канваса, задается через width и height атрибуты.
Это я прочитал, просто не понял как мне эти width и height вычислять (уже понял).
> Позднее ты увидишь что 1px solid black рисуется как 2x solid gray, потому что линии рисуются между пикселями, а монитор между пикселями рисовать не может
Ааа, надо эту хуйню округлять значит, чет я не допер.
Да, так работает, спасибо.
Потому что по дырявым элементам массива нельзя пройтись методами массивов. Это знать надо.
Работаю в небольшой аутсорсинговой конторе 1,5 года (моя первая работа). На текущий момент код пишу от силы 20% времени, всё остальное время уходит на разработку всяких архитектур, помощь джунам, ревью тасков, всякие согласования и т.п. Платят за это дело 75к, а я хочу быть разрабом, а не менеджером, но и по зп проседать не хочется...
Прикольно, значит рили надо ливать и искать другое место.
Подключай его гит модулем.
смотри вакансию, смотри что требуют, в сопроводительном кидаешь проект со всеми указанными технологиями, все
Замени M хотя бы на P, тогда и выкладывай своё поделие.
Вышка есть? Фотка в профиле? Портфолио на гитхабе с серьезными проектами уровня своей соц. сети?
бамп вопросу
JSON schema store
Обязательно:
— React + Redux + нативный JS на отличном уровне.
— Уметь верстать
— git
— Опыт самостоятельной работы
Очень круто, если:
— Опыт с монгой или mysql/postgresql
— Опыт разработки больших SPA + написание прикладных скриптов, парсеров, чего угодно.
— Знает, что такое prettier, stylelint, eslint
— Понимание принципов работы браузеров и веб-серверов
— Отличные знания и понимание как работает JS в браузере и не только. Понимание особенностей языка
Проект в данный момент полностью рабочий, занимаемся рефакторингом кода. Если кого-то заинтересовало, то @bubblegum_crisis сайт проекта так же пришлю.
Ты че, ебанулся на дваче таким заниматься? Никто тебе не напишет, потому что это может быть развод чтобы порофлить с вкатунов, иди нахуй отсюда.
Ну че делать, 11 лет на двачах. Мы спокойно можем нанять программиста на апворке, как наняли человека из Альфы. Но я вполне рассматриваю новичков, которые останутся в команде. Даже если они не полностью соответствуют требованиям.
Не люблю реакт. Он для хипстеров с зелеными волосами и пирсингом в сиськах. Перерефакторте в ангуляр, тогда я подумаю...
>новичков
>— React + Redux + нативный JS на отличном уровне.
>— Опыт с монгой или mysql/postgresql
>— Опыт разработки больших SPA + написание прикладных скриптов, парсеров, чего угодно.
Какое-нибудь наебалово с криптой и азартными играми пилите, раз даже тематику проекта не назвал?
В посте максимальные требования. Никто не запрещает отписать со словами "Я новичок, знаю не все, но хотел бы поднять скиллы, знаю пока это, это и это".
Нет. Сайт проекта можно узнать по моему контакту, как и описание проекта. Так же он есть в чате программача.
Ход мысли:
1) Объявляем переменную х в глобальном скоупе и присваиваем ей значение 3.
2) В функции fn переназначем глобальную переменную х на 10.
3) Создаем фунцию x в скоупе функции fn. За счет hoisting'a объявление функции поднимается вверх и становится по сути локальной переменной x функции fn.
Дальше ступор и не понимание, почему.
Да не пизди. Он остался на стороне где технологически сложные проекты. А хипстеры уплыли на соломенном плоту.
Он остался на стороне легасиговна, как какая-нибудь питоновоская джанга.
>где технологически сложные проекты
Как раз технологически сложные проекты на HTML first подходе со вставками в дом дерево как на ангулярах никто делать не будет.
VKUI
Вкатун не палится. В ангуляре ты будешь охуевать от километрового стэка вызовов rxjs и непонимания того, в каком месте ты лишний раз запровайдил/незпровайдил нужную зависимость.
Для джавистов есть ангуляр, если его не освоишь, то ты не джавист, а очередной вкатун на кассу в фастфуд.
Чел я не знаю как там весь жс поживает, но вуе чисто кал, какой-то спагетти код с гоуту по экрану. Для себя программируй на html, а для прода пусть фронтокалоеды скачут на 5 экранов.
Три года работаю в одной крупной окологос конторе не VK фронтом, на своем проекте дорос до синьора: основные архитектурные решения принимаю, джунов учу, небольшой командой из 3-4 человек руковожу.
До этого еще год в мухосранской веб студии был фронтом.
Проект нравится и зп росла, поэтому последние пару лет совсем не ходил по собесам, но сейчас все летит по пизде и походу придется.
Опыт в прохождении собесов растерял, очевидно.
Что там сейчас спрашивают по хард части на миддло-синьорском уровне, что подтягивать? Задачки с литкода? Эвентлуп? Прототипы? Редакс, эффектор? TS? Паттерны, ООП?
Стек платиновый сейчас, React+TS, Redux, styled-components
Да, всего по немногу. Я бы упор на паттернах и принципах проектирования делал, а также на решении литкода. Так как это обычно заключительная часть и поможет изменить о тебе мнение если обосрался на первых частях, особенно паттерны, так как о них говорить можно хоть целый день.
Ну посмотри собесы на ютабе, че как этот
>на русском
>для полного новичка
Мы тут не плодим индусов, возвращайся когда выучишь технический английский и базу js.
С типизацией пропсов в темплейтах
Почему ты такой никчемный? Пиздуй на завод.
Вот есть N страниц (блоков, неважно) - их число зависит от количества товаров, которые я хочу разместить на каждой странице. Как наполнить последовательно каждую страницу существующими товарами? То есть, товары не должны повторяться, очевидно - на 1 странице 4 первых товара, на 2 странице 4 следующих товара и т.д. То есть одним циклом, примененным ко всем страницам, тут не получается.
const goods = [ {goodId: 1, ...}, ..., {goodId: n, ...} ]
function getPageWith4Goods(goods, currentPage) {
const pageSize = 4
const begin = (currentPage - 1) pageSize
const end = currentPage pageSize
return goods.slice(begin, end)
}
Спасибо.
То есть идея в том, чтобы для каждой страницы создавать свой массив с конкретным количеством товаров? И этот генерирующий код должен быть внутри цикла по количеству страниц?
Попробую.
Спасибо.
То есть идея в том, чтобы для каждой страницы создавать свой массив с конкретным количеством товаров? И этот генерирующий код должен быть внутри цикла по количеству страниц?
Попробую.
>ем бутерброд и не понимаю а нахуй я заказывал его доставку, если у меня на столе лежит такой же
462x360, 0:21
ОООЙЙ ЩАС РВАНЬЙОООТ!!! Как же горит..
Просто она хочет чтобы ты ее выебал.
Ясно, идите нахуй, тут нету смысла спрашивать советов. Я и забыл, что этот парашный сайт загон для токсиков, вроде тебя.
1280x720, 0:10
>А то я помню, как основательное, кол-во времени, убил на дрочь <iframe>
mp4
>>29658
Если знал, что токсики, то зачем спрашивал?
Если ожидал токсиков, то чего бомбишь?
Странный ты, тут всем помогают, кому-то мега наноборду с зашифровыванием жсом, кому-то верстку помогают, хотя тред даже не об этом, а ты просто токсик.
ПЕРЕКАТ
ПЕРЕКIТ
https://2ch.hk/pr/res/2229318.html (М)
https://2ch.hk/pr/res/2229318.html (М)
https://2ch.hk/pr/res/2229318.html (М)
https://2ch.hk/pr/res/2229318.html (М)
https://2ch.hk/pr/res/2229318.html (М)
https://2ch.hk/pr/res/2229318.html (М)
https://2ch.hk/pr/res/2229318.html (М)
https://2ch.hk/pr/res/2229318.html (М)
https://2ch.hk/pr/res/2229318.html (М)
https://2ch.hk/pr/res/2229318.html (М)
https://2ch.hk/pr/res/2229318.html (М)
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
System.out.println("Введите значение x, a");
double x = readNum("Enter x: ");
double a = readNum("Enter a: ");
double b;
int chisl = 1;
int znamenat = 1;
for (int i = 1; i <= 32; i++) {
a = (x - 2 i);
chisl = a;
}
for (int i = 1; i <= 31; i++) {
if (i == 1) {
b = (x - i);
} else{
b = (x - 3 i);
znamenat = b;
}
final var y = chisl / znamenat;
System.out.println(y);
}
final var y = (((((x - a) x - a) x - a) x - a) x - a) * x - a;
System.out.println(y);
}
private static double readNum(String text) {
System.out.print(text);
Scanner scanner = new Scanner(System.in);
int num = scanner.nextInt();
if (num <= 0) {
System.out.println("Error");
}
return num;
}
}
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
System.out.println("Введите значение x, a");
double x = readNum("Enter x: ");
double a = readNum("Enter a: ");
double b;
int chisl = 1;
int znamenat = 1;
for (int i = 1; i <= 32; i++) {
a = (x - 2 i);
chisl = a;
}
for (int i = 1; i <= 31; i++) {
if (i == 1) {
b = (x - i);
} else{
b = (x - 3 i);
znamenat = b;
}
final var y = chisl / znamenat;
System.out.println(y);
}
final var y = (((((x - a) x - a) x - a) x - a) x - a) * x - a;
System.out.println(y);
}
private static double readNum(String text) {
System.out.print(text);
Scanner scanner = new Scanner(System.in);
int num = scanner.nextInt();
if (num <= 0) {
System.out.println("Error");
}
return num;
}
}
Какие библиотеки я обязательно должен знать? Lodash там, что ещё?
Вы видите копию треда, сохраненную 28 июня 2022 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.