Если рассчитываешь получить дельный ответ, сформулируй правильно вопрос: «что я хочу получить, что я для этого делаю, что я вместо этого получаю». Если когда самостоятельно найдёшь решение — поделись в треде, мы за тебя переживаем.
По сути, задача сводится к: 1) клонировать ряд и добавлять не в конце формы (после кнопки submit), а сразу же 2) выровнять кнопки по центру поля формы 3) для всех последующих клонов ряда убрать название (сидит внутри фласкового приложения)
Является ли подобный выкрутас с диспатчем ересью? Можно ли его так засовывать в функцию и потом вызывать эту функцию в компоненте? Во всех примерах диспатчем оборачивают в самом компоненте, но выглядит как огород.
Я тут пытаюсь разобрать кусок натурального говнокода на JS-е. И мне абсолютно не понятно, что делает вот такая вот конструкция: (()=>{ var x={123:()=>{ Тело функции }()}})
Может хоть кто-нибудь пояснить, что это означает?
1. Скрипт начинается с открывающей скобки. Зачем? Почему? 2. Сразу после фигурной скобки стоит число, двоеточие, круглые скобки и стрлочная привязка. Это число (123) - это название функции? Или это какая-то другая конструкция, которая делает что-то? (Что?) 3. Зачем после тела функции нужна ещё одна пара круглых скобок? Что она даёт? 3.
>>2220584 Скинул бы всё, чтобы линтер отформатировал. А так разбираться не буду. >2. Это словарь. 123 — ключ, а значение — это самовыполняющаяся стрелочная функция (синтаксис неправильный, но в жс это, как обычно, не проблема https://github.com/babel/babel/issues/2118)
>>2220640 П.С. Лично я следующий проект буду делать на призме. Что-то я наебался с typeorm, а судя по видосам, на призме все очень просто и няшно выглядит. В typeorm куча неочевидных моментов, например: как сохранять отношения в базу. В голом SQL это делается без задней мысли, с typeorm мне пришлось изрядно напердолиться. Это все, конечно, есть в доках, но как-то мельком и намеками, до некоторых вещей пришлось доходить самому.
>>2220485 >то ли это я не шарю в этих авторизациях, API и прочем Я первый раз вижу, чтобы от фронтоджуна требовалось что-то подобное. Видимо фронт плавно перетекает в фуллстак, и скоро от верстал будут требовать трогать базы данных с авторизацией.
>>2220665 Ну я не прочь разобраться с JWT, что-нибудь на эту тему посмотрю. Однако тратить на задание для одной конторы 3 дня (это только по их оценкам) как-то нерационально.
>>2220724 Ок, а то я подумал, что сейчас все тестовые так выглядят. Вчера создал резюме на хх.ру, это был один из первых откликов.
>>2220444 Было бы проще, если бы дал итоговый код html странички которую видит пользователь, потому что с ним жс и работает, а не с фласковскими {{ wrap.hyu }}.
>>2220469 Ты что, ебанутый, если это тестовое не на час времени или вообще не на "покодить вместе во время интервью", то смело шли нахуй, ты еще 50 контор найдешь, которым джун нужен и которые не настолько охуели, чтобы давать тестовое задание на несколько дней времени.
Что за говно выдаёт жс при работе с асинхронными функциями? Ошибки как будто вообще не связаны с происходящим в программе. Ещё и дебаг как-то через жопу работает с ними. Я один бугурчу что ли? Всем как будто нормально
Анон, есть какая-нибудь библиотека для перезаписи JSON/js-объектов по некоторым правилам? Допустим есть правила вида: {foo: "bar", baz: {a, b}} -> {foo: "bazbaz", baz: ["word", b, a]}
>>2221720 Ну так паттернматчи ключ и/или значение. У джейсонов ключами могут быть только строки, а значит ключи можно прогонят по регуляр очке и высирать нужный результат.
>>2221725 Какая перезапись нод, наркоман? Джейсоны - строки, а значит иммутабельные структуры. Максимум что ты можешь сделать - распарсить входной джейсон по твоим правилам, и потом по твоим правилам сохранить в джейсон. А уж как там "ноды" обновляются - не дело парсеров.
>>2221738 Да, причем нормально из изучи, а не кое-как, чтобы потом проблем не вызывала верстка и стилизация. Вот тебе сайт еще неплохой, используй как один из справочников - https://doka.guide/. Помни, что решает практика и умение гуглить
>>2221765 >Array.from({length: times}) Совсем ебанулся с написанием в одну строку? А если в будущем ему надо миллион итераций сделать? Где движку память набрать на массив из миллиона элементов?
>>2221765 В чем профит писать Array.from({length: times}).forEach(action); или Array.from({length: times}, action) вместо for (let i =0; i< times; i++){action} ?
>>2221796 пишу for of когда нужен break пишу for of когда нужно массив создать из другого массива пишу forEach когда есть массив объектов и у этих объектов нужно поменять свойства без изменения исходного массива пишу map когда нужно пересоздать объекты в массиве, например для change detection пишу map в rxjs
>>2221805 Чтт некрасивого в while(0 < n--) шиз. Потому что в изначальном условии не было такого требования, как тебе такое?
Давай еще накинем с десяток условий, что если теье туда прилетает данимаческий обьект выбрасывающий эксепшен при привелении к числу. Иди соси писос, долбоеб.
>>2221780 Во первых не нужно доп. проверок на то что times > 0 или != infinity Во вторых, в будущем можно легко изменить на получение агреггированого результата, заменив forEach на reduce и добавив return. Либо массив из результатов, добавив action вторым аргументом from Также ты получаешь индекс вызова, что тоже может быть полезным. И код стаеовится более читаемым. >>2221773 Он принимает map калбэк, это не то что нам нужно, такой код будет запутывать читателя кода.
>>2221817 Тебе передают Infinity и твой код опять зависает. При этом Infinity это число, т. е. даже типизация не спасёт. Вот видишь, ты второй раз крупно обосрался на простой задаче, просто потому что твой мозг не приввк писать функциональный код.
Сделал чатик для общения двух людей по сокетам. Теперь хочу сделать так, чтобы их сообщения где-то хранились, да так чтобы их можно было прочесть без доступа в интернет. Куда копать?
>>2221986 >>2221946 Спасибо, разобрался. Ещё один вопрос, дали какое-то апи ? "wss://huipizda.ru" и типо я должен работу чата с помощью нее организовать. Вопрос - что это и куда это пихать? У меня все через socket.io и localhost работает
Кто сталкивался с postgreSQL ошибкой: неверный синтаксис для типа uuid: "hello@world.com" Я пытаюсь зарегистрировать пользователя, и какого-то хуя, пострге думает, что поле email имеет тип UUID. Как это блять так? Я ничего не менял в entity пользователя. Поле email было и остается строкой, я просто добавил обертку над методом save (который работал до этого просто отлично и всегда создавал пользователя), с логикой регистрации. Если явно указать, что email это text или VARCHAR, то БД просто виснет нахуй, сервер пишет, что соединение невозможно установить. Если убрать из entity email, то регистрация проходит как по маслу, т.е. проблема именно в этом поле. Пиздец, я просто охуел блять.
Заебало, из 10 тестовых только два было, где не нужно было париться над бекендом . Во всех остальных бекенду посвящается минимум 50%. Сессии, JWT, сокеты, докеры, апишки ебанные. Ебануться, я думал вот-вот вкачусь, а теперь нужно быть фуллстаком миддлом чтобы на джуна фронта вкатиться.
Привет, аноны, есть такой вот кодdocument.querySelector('#button1').onclick = function addItem() { let ul = document.querySelector("#ul1"); let li = document.createElement("LI"); let button2 = document.createElement("BUTTON"); button2.classList.add("button2");
Создаю список и кнопку, пытаюсь сделать так, чтобы вторая кнопка удаляла только элемент списка. Но работает только первая кнопка и она удаляет полностью все...
>>2222488 let li = document.getElementsByClassName('li2')[0]; let button = document.getElementsByClassName('button2')[0];
li.remove(); button.remove();
вот такая получилась функция, кнопка удаляет элемент списка и саму себя, но остальные кнопки не работают таким же образом, я ведь создаю несколько элементов списка. Хочется сделать так, чтобы кнопка удаляла элемент списка, с которм была создана и саму себя.
Спасибо, кстати за ответ, работает, а что ноль означает?
Матан нужен? А что вообще нужно? Я тупой пизда и задачи всегда напрягали, в 1 классе как не смог решить простецкую задачу про яблоки так и хуй забил и не вчпоминал
>>2222496 Метод getElementsByClassName возвращает всё, что было найдено по классу button2 в виде хуерги HTMLCollection. Это массив-инвалид, с которым нихуя нельзя сделать, кроме как обратиться к элементу по индексу, да узнать длину. Нулевой индекс будет у первого найденного элемента.
Какие UI компоненты выбрать вкатуну для своего пет-проекта на реакте? Бутстрап - урод ебаный, и колонки на реакте использовать, мне кажется не лучшей идеей. Material UI - говорят говно, хотя дизайн мне нравится. Materialize как и MUI, но будто чуть хуже. And - ну хз. Ни одного красивого сайта китайского не видел. Да и вообще нахуй чинчонгов. Styled-components - вообще не понял что это и зачем нужно. Короче, лишком их дохуя как-то, я запутался
>>2222528 Я сам задаюсь тем же вопросом и со слезами юзаю material ui. Для vue вроде есть vuetify, не щупал, но выглядит прикольно. Правда для vue 3 это либа пока в альфе, так что сам я свой пет буду писать горько писать на реакте с mui. Какое же всё говно
>>2222528 Смотришь вакансии, смотришь требования к знанию ui либ, выбираешь самую популярную. Что тебе лично нравится всем похуй. Я бы на твоём месте бутстрап выбрал, так как довольно популярен и с его знанием можно спиздеть про наличие опыта, так как все кто с опытом его знают.
Бля, я тут подумал, если я всё же вкачусь - у меня будет профессия и стабильная зп. Типа, никто не отнимет у меня знания, я буду уверен в завтрашнем дне и дальше всё будет лишь улучшаться. Аж слезы на глазах наворачиваются, что мусору без образования вроде меня дан такой шанс, я ведь последние 3 года ебашу на дно работках и думаю, как не сдохнуть с голоду
>>2222423 Пчел я сейчас вкатываюсь уже год дрочу пару проектов для себя и в качестве портфолио, и уже сейчас понимаю что без знания бэка ты нихуя не сделаешь, пришлось поднимать свой простой бэк на монго, со всеми вытекающими, я так понял обычный верстала сейчас никому нахуй не упал
>>2222604 Мне тут надо было одну хуюшку запилить, а на жс до этого не писал, ну и взял jquery. Так меня тут местные помоями облили за то что в 202d1 я посмел jquery использовать.
Как называется такая штука в HTML/CSS, когда пользователь должен выбрать один вариант из двух предложенных. Оба находятся рядом, не вложены в select. Тот, на который кликаешь, выделяется соответствующей стилизацией.
Короче что-то такое: Вопрос: вариант1 вариант2 Вопрос: [вариант1] вариант2 кликнули на первый
>>2222586 можно. Только еще нужно хорошее знание JS. >>2222599 Как раз версталы дохуя где нужны, но это веб студии, ЗП в 80к потолок. Работа на износ, зоопарк говна в виде Jquery всяких CMS и тд.
Например, я хочу повторить какой-то дизайн, но сталкиваюсь с тем, что какие-нибудь margins и paddings плюсуются, в итоге все это выглядит криво и приходится вручную что-то менять, получается не очень-то изящно. Верстать под мобильные версии вообще не умею. Pixel perfect звучит как что-то невероятное, лол.
Причем общаюсь с ньюфагами, которые, как и я, делают тестовые, и понимаю, что у многих из них тоже не особо получается верстать по требованиям, поэтому делают как могут.
>>2222822 >какие-нибудь margins и paddings плюсуются о чем ты, друг? >Pixel perfect звучит как что-то невероятное, лол. если есть макет, то никакая не магия >Верстать под мобильные версии вообще не умею так научись, media queries для кого придумали? >Посоветуйте курсов каких-то, плиз. посоветую включить мозги, научиться гуглить и много практиковаться
>>2222846 >о чем ты, друг? Когда на макете одно расстояние от элемента до границы родительского элемента, а у тебя другое, потому что вложенные элементы имеют свои margins и padding, допустим, у тебя заголовок не просто в div'е, но еще в каком-то контейнере. Что-то поправил в одном месте, оно съезжает в другом.
Так не объяснишь, но ньюфаги поймут. Я даже от опытных разработчиков слышал, что верстку они не любят, мало в ней разбираются и предпочитают этим заниматься как можно меньше.
>гуглить В гугле зачастую выдает какие-то статьи от мастеров верстки, которые юзают какие-то эзотерические решения. Всякие CSS Tricks и Smashing Magazine.
>>2222887 ну, советую не лезть в этом дело тогда, если ты не в силах открыть ютубчик, гугл или стак оверфлоу и найти ответы на свои вопросы, тут только серьезные дяди сидят, кнопочки красить и маргин на 2 пикселя увеличивать это тебе не за кассой в маке стоять
>>2222902 На стековерфлоу наоборот обычно предлагается решение под чью-то конкретную задачу. Если ты в свое нагромождение цсс лепишь понабранные в интернете решения, то это не лучший вариант.
Курсы нужны, чтобы более-менее ясно представлять, как и по каким принципам делать верстку.
Есть двумерный массив известных размеров, как выбрать случайный элемент, если некоторые элементы выбирать нельзя (их может быть от одного до всего массива - 1)? Я придумал только сделать массив из запрещённых ячеек в том порядке, в котором они идут сверху вниз с соответствующим номером, сгенерировать число от 1 до (количество_ячеек - количество_запрещённых_ячеек), потом если попал в запрещённую, то выдавать (количество_ячеек - количество_запрещённых_ячеек + номер_в_массиве_запрещённых_ячеек). Звучит как-то тупо, но лучше чет ничего в голову не приходит.
>>2222822 Скачай с трекеров какой-нибудь говнокурс с содержанием типа "верстаем мой первый сайт". Абсолютно любой, гикбрейнс, яндекс, удеми, что угодно подойдёт, если там есть ссылка на фигмовский макет с версиями под разные разрешения (в идеале 3 версии - десктоп, планшет и мобильная).
>>2222985 В твоём случае вероятность того, что будет выбраны ячейки до первой запрещённой - намного меньше остальных. Если не хочешь парится - следуй совету этого анона: >>2223005 Если хочешь париться - создай массив разрешённых ячеек - [(x1, y1), (x2, y1), ... , (xn, yn)), и из него уже вытаскивай рандомный элемент.
>>2222909 Я другой анон, но По общим каким-то понятиям и свойствам пару статей можно прочитать. Все остальное изучается во время практики, т.е. сидишь пишешь разметку и когда ее надо стилизовать, уже гуглишь конкретно что хочешь с элементом сделать. И дрочишься, пока не получишь что хочешь.
Как часто на работе нужно будет вручную делать всякие штуки вроде ползунков типа пикрил? Или это все уде давно руками не делается, а берется готовое в UI библиотеках?
>>2223084 Про вероятность - я по началу не так понял, что хотел. По поводу: random = getRandomInt(0, allowed_amount - 1); -1 не нужен, потому что обычно верхняя граница не берётся. Касаемо алгоритма - у тебя там, кмк, опять неравновероятные элементы выходят - лень считать, плюс ты уже начинаешь заниматься перебором, что будет приближать сложность на доставание одного случайного элемента к ~O(n). Как я уже сказал, тебе после создания массива стоит пробежаться по нему и создать set с координатами допустимых ячеек и уже потом из него доставать случайный элемент. Так у тебя будет O(n) на создание, но потом линейные получение случайного и изменение состояний ячеек.
>>2223100 Ну там массив запрещённых есть отдельно и искать рандомный нужно когда он изменился. я змейку делаю лол, мне нужно сгенерировать нового кролика не на змее
У вас есть чувство неполноценности как программиста? Бекендер может создать сайт или приложение без фронтендера, обойтись базовыми знаниями, в то время как я просто дрочу эти "базовые знания" до идеала
>>2223167 У меня нет этого чувства даже по отношению к классическим программистам (а не только к веб-разработчикам). Вот по отношению к представителям таких профессий, как архитекторы, хирурги, йоба-инженеры и прочих серьезных профессий - есть
Господа, встала такая задача - есть ссылка на файл, например www.example.com/file.pdf нужно начать скачивать файл по этой ссылке и по мере загрузки анализировать поток, и если встретится определённая последовательность байт - остановить загрузку. Нужно сделать это на js, но я в нём не в зуб ногой, так что прошу подсказать, какие средства тут можно применить, пока нагуглил только FetchAPI, который, как я понял может возвращать ReadableStream. Я в правильную сторону смотрю?
>>2223078 забацай простой ui kit как пет проект и будет тебе счастье, потому что: - сможешь использовать его на своих проектах и не ебаться в будущем со стилизацией - покажешь свою компетенцию в создании китов, потому что на некоторых работах есть свои ui kit'ы, а будут случаи, где придется писать ui kit с нуля, будешь знать как они вообще делаются - подтянешь кучу скиллов по пути, типа css и т.д.
Ананасы, имеет смысл запариваться и делать авторизацию по ролям, если я использую graphql и у меня в проекте нет реста? (Например, юзер может делать это, премиум-юзер может еще и вот то, админ может еще больше и т.д.?). Прям вот как положено делать, с гардами, с декораторами, с проверкой ролей перед выполнением graphql-запроса? Или просто достаточно в резолвере чекать, при получении запроса с фронта, есть ли у пользователя отправившего запрос такая-то роль, и если нет, то выбрасывать unauthorized exception? Какие подводные?
>>2223078 Всегда берется готовое, либо явно в виде сторонней либы, либо неявно в виде своей либы которая построена по макету сторонней с прикручиванием своих свистоперделок.
>>2223246 Ну я только проснулся и ещё нихуя не сделал, но планирую setTimeout в useEffect засунуть. Задержку планирую настраивать, типа уровни сложности.
Запилил аналог физического ежедневника на чистом джсе (чисто на клиенте). Храню все данные (время создания, текст, айди) в localStorage. Появилась потребность подключить markdown разметку, чтобы все парсилось. Нашел на гитхабе готовый парсер markdown-it. Понял, что для его внедрения нужно поднимать собственный сервер. По гайду австралийца поднял рест-апи с 4 ендпоинтами на node и express, в качестве бд выбрал sqlite3 (вывести весь список заметок, добавить заметку, удалить заметку по айдишнику, обновить заметку по айдишнику). Рендерю свой html через res.SendFile. Теперь, как я понимаю, в скрипте, который напрямую подключен к index.html я могу навешать событий, чтобы брать из бдшки разные данные (fetch(localhost:3000/notes/api)) и с ними взаимодействовать в рамках клиента. Но встал вопрос как в апишку прикрутить модуль markdown-it. Есть мысль, чтобы на эндпоинт создания или обновления заметки я заведомо парсил искомый текст в html разметку и сохранял эту разметку в бдшке..
Пилю чятик, есть проблемка в мобильной версии. Есть окно с сообщениями и в конце всех сообщений есть span с 0 высоты/ширины, я при загрузке окна чата используя scrollIntoView прокручиваю до этого элемента (получается до последнего сообщения) и вроде бы всё хорошо, НО! Когда я захожу с телефончика в свой чатик и нажимаю на инпут, дабы ввести сообщение некоторые сообщения пропадают под инпутом и выходит, что я не вижу последнего сообщения. Пытался сделать что-то типа onClick={() => { endOfMessages.current.scrollIntoView({ block: "end", behavior: "smooth" }); }} Это работает с компутера, но не работает с телефона всё равно нихуя. Как я понимаю это происходит из-за резкого изменения высоты окна с сайтом в браузере, т.к. вылезает клавиатура и именно на высоту клавиатуры смещаются сообщения.
>>2223389 Ну само-то окно с сообщениями уменьшается, всё ок, просто сообщения уходят в небытие самые последние при уменьшении высоты экрана. Я юзал overflow: auto, чтобы сделать прокрутку сообщений именно в этом окне. Вообще нет идей как тут поправить верстку можно.
>>2223422 Такая же херня. Но у меня ненависть изначально была потому, что послушал кретинов с воркача с начал вкатываться с хтмлакадемии. На деле это скорее антирекомендацией должно быть.
>>2223600 В vite preview рут файл указывает на путь к самому проэкту vite, внутри которго уже ищет build.outDir для запуска на нем сервера, поэтому изменение build: { OutDir: './docs' } В конфиге должно помочь
Объясните плиз, я заебался уже. Сделал небольшое приложение для получения данных через useEffect (с Jsonplaceholder). Сделал функцию, которая фильтрует полученные данные по айдишнику (например функция с аргументами "2, 30" отфильтрует прилетевший список с второго по тридцатый) и повесил ее на кнопку, НО я хочу, чтобы каждый раз фильтровался целый список после нажатия кнопки при этом не делая повторного запроса к апишке. То есть нужно, как я понял, как-то получить доступ к конкретному состоянию, в котором у меня был весь полученный список, но я хз как это сделать. Помогите.
>>2223695 Так я зафетчил, засунул полученный список в useState, кнопкой фильтрую эти данные. Но при повторной фильтрации я каждый раз фильтрую предыдущие, уже отфильтрованные данные, а я хочу каждый раз фильтровать полный список. Можно перед каждой фильтрацией фетчить данные по новой, но я не хочу каждый раз стучаться к апишке, хватит и одного раза. Должен быть способ как-то сохранить этот первоначальный список, но я затупил жестко.
>>2223745 Два чая. В моей миллионнике уже столько же, сколько и на реакт вакансий. Вот ангуляр сокращается + на половине вакух еще и дотнет спрашивают. Похоже есть смысл поковырять vue
>>2222038 Анон, и последний вопрос. Как сделать так, чтобы при создании нового ряда введенные в форму данные стирались и клонировалась чисто пустая форма?
>>2224094 Добавил строчку в addRow https://jsfiddle.net/t6zkc9m0/ Там еще может быть проблема в том, что при клонировании строки айдишки-то не меняются, не знаю важно это или нет.
>>2224095 textContent="" стирает только дочерние узлы, а у элементов форм, таких как input или textarea их вообще нет. >>2224094 Сделай себе изначальный шаблон пустой формы и его копируй
>>2223217 > по мере загрузки анализировать поток Ищешь книгу носорога (фленеган - 7-е издание), и там в главе про fetch есть пример функции, которая качает и анализирует сколько в процентах уже скачено. Читает стрим кусочками и делить общую длину, и количество скаченного. Пик 1
Алсоу, нихуя не могу понять как нормально редактировать Header-ы в тайпскрипте. Допустим пишу враппер над fetch-ем, чтобы на выходе выдавать дтошки, и хочу зашить базовые заголовки в враппер. Но при этом дать возможность при вызове, добавить что-нить в заголовок. Но пик2 такая ебала, что мне кажется проще просто заменять нахуй и отказаться от этой идеи.
>>2224259 Не, перезаписать то я тоже могу без проблем. Интересует именно как перебрать хидеры лежащие в headers?: HeadersInit Чет такое ощущение что я просто закипел, задача же должна быть максимально тревиальной.
>>2224281 Компилятор откуда-то вывел тип string, из-за которого не дает итерировать ни по чему толком. Ни спредом ни разложить, ни по итератору перебрать. Пойду чайку наверну, попробую посмотреть вниамтельнее.
Хочу подключить компонент (форму) на реакте, следую данному гайду https://ru.reactjs.org/docs/add-react-to-a-website.html но не могу понять вот эту команду (см. скрин). Этот вотчер необходимо держать в отдельной вкладке постоянно запущенным? Нельзя спрятать его куда-то, чтобы автоматически запускался?
>>2224290 Бля, пойду доки почитаю внимательнее что ли. Какой-то уебанский юнион, который торчит хуй знает какими методами. >>2224301 Я бабель не дрочил пока что, но точно знаю что watch команда мониторит файлы на изменения, и при изменении файла запускает соответствующий процесс (компиляции, транспиляции, или чего ты сам задал)
Я еблан памагити. Нужно вытащить данные из промиса. Я делаю extractedData = promise.then((result) => result) Проблема в том, что result типа data, а extractedData типа Promise<data>. Собственно, что я делаю не так?
>>2224431 >забываешь сделать перед присвоением await >у тебя происходит присвоение в экстрактедДату раньше, чем промис зафулфилиться значением Не, это хуйня какая-то эвейт здесь точно не нужен. Должен быть способ наебать систему и вытащить данные без эвейта. У меня синхронная функция, должен быть способ зафулфилить промис без всяких эвейтов, они же позже промисов в языке появились.
>>2224443 > Не, это хуйня какая-то эвейт здесь точно не нужен. Должен быть способ наебать систему и вытащить данные без эвейта. Можно попробовать подождать, это ведь промис, он рано или поздно выполниться. Ты поставь брейкпоинт и подожди хотя бы 10 минут, потом отпишись пожалуйста, а то мне тоже интересно стало, удасться ли нам наебать систему или нет. Обещаешь?
Аноны, я не шарю за js, просто мимо проходил. В чём смысл писать пикрил конструкции? Я правильно понимаю, что мы создаём лямбда-функцию, а потом присваиваем её переменной? Почему сразу не создать функцию с таким же именем, как и у переменной?
>>2224495 У стрелочный и обычных функций разный this, ну и с памятью немного по разному работают и еще рад специфической хуйни. Но если каких-то спец требований нет, то вкусовщина и холивар.
Есть кто пилит приложения для Shopify на ДЖСе? Как вам Полярис (имхо я его рот ебал)? Может есть какие-то советы по разработке? От себя могу сказать что очень удобно использовать shopify-api-node для запросов в их АПИ, и официальный хелпер не очень как по мне
СКолько нужно вкатываться, чтобы быть нормальным джуном? Я написал всего пару простейших функций и ощущение, будто это ад ебаный, нихуя не понятно, куча кнопок, свойств, атрибутов, еще хрен знает чего. И когда гуглишь выдается сотня вариантов ответа, которые непонятно как применять в твоей конкретнйо ситуации, потому что кто-то на ебаных фреймвороках делает, а ты ищешь чистый джаваскрипт, кто-то в пример приводит массив с 3 числами, кто-то в обучалке говорит - да тут все просто, и пишет 100-страничный код сука, который для новичка набор заклинаний
КАк вы вообще вкатились то нахуй, это же нужно быть аутистом
>>2225017 Поднял уже три своих сайта с бэком и фронтом на реакте/вью и один на ванильном 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`, а к ним ещё и тестов забабахаем. И плевать, что они с редьюсерами разъедутся уже через неделю.
Резюмируя: Ангуляр вообще ни разу не про энтерпрайз требования. Наоборот, только в энтерпрайзе может быть столько бардака (как в головах, так и в коде), что поделки типа Ангуляра не выбрасываются сразу, а продолжают хорошо кормить специфическую касту разработчиков, которые годами пилят тривиальные приложения, выдавая на выходе посредственный во всех смыслах результат.
>>2225078 Если чуешь что собес пошел не так, то падай на пол, закрывайся руками и кричи "я в домике", в таком случае каверзных вопросов тебе больше задавать не будут, но смотри - более 2 раз за собес такое не желательно делать
>>2220724 Чего блять, вы тут вкатуны вообще обленились?Вы верстальщики или фронтендеры, определитесь уже.Ты 50% времени будешь тратить на послать/принять запрос от сервера, а остальные 50% на верстку.От вас требуют написать одну строку: await fetch(...), а вы уже в осадок падаете.
Я сейчас тред почитал, это форс новый какой-то?То есть, сейчас реально люди настолько отупели, что они не могут отправить запрос на сервер и получить ответ, называя это "ебкой с бекендом"?Я понимаю когда люди не понимают нахуя нужен typescript, nuxt, еще какая-то хуйня, но ведь это основа основ, на этом весь веб держится. если кто еще спизданет про конкуренцию в айти кидайте этот тред мимо >>2225439
>>2225449 Вкатун, почему ты решил что отправка с фронта запросов на сервер это фулстек? Фулстек - это если бы тебя заставили писать код на сервере, обрабатывающий запросы твоего фронта.
>>2225498 У них все что выходит за рамки "how to center div css" - не нужно, в современном жсе написать запрос на сервер и принять с него же ответ - одна строка, но это сложно, надо что такое жсон узнать, в промисах разобраться на самом деле нихуя из этого не нужно.Соболезную тем кто будет за ними на галерах хуету фиксить, сам недавно в этой роли был, людям 120к платят, а они основы основ не знают. кстати настоящий фулстек ничем практически не отличается от фронта, просто умеет на стороне сервера взять/положить значение из/в базу, научиться этому - час гугла, а зп в 2 раза выше
>>2225500 > кстати настоящий фулстек ничем практически не отличается от фронта, просто умеет на стороне сервера взять/положить значение из/в базу, научиться этому - час гугла, а зп в 2 раза выше Кабанчик, начал хорошо, но вот здесь перетолстил.
Адекватно ли дать по шее типу, который развёл свинарнию у себя во фронтент приложении и на каждом созвоне пиздит "ну бля документации АПЕ нет вот я и подготовился по максимуму ко всем возможным проблемам."?
Я работаю над связкой из 2 серверов - нода и го, документации от 3rd party apis вообще никакой, но это не помешало методом тыка исследовать их. Поэтому такая проблема не кажется серьёзной.
Сегодня этот дурак сказал "ты просто не умеешь работать", его выебали за это, но я думаю доехать до него и ушатать за наглость и обман. Призываются лётчики-реактивщики, ответьте на мой ответ - реакт приложение рил так сложно пилить с нестрогой типизацией в моделях АПЕ или я прав и это голимый пиздеж?
>>2225500 Напиши что конкретно нужно уметь по ноде в 2к22? Никто так толком и не может ответить на этот вопрос? Какой объем фронт/фуллстек по нодам должен знать?
>>2225556 Причем тут нода? У тебя бек может быть на пхп, плюсах, джаве, на чем угодно и на всем вместе. Ты должен уметь дернуть хатетепе метод или данные из вебсокета почитать, или из сервер эвентс или вообще из чего угодно, какие есть апи в браузере. Тебе дают схему апи, сиди дергай. Тебя же не заставляют даже думать, как там данные на беке сохраняются.
>>2225554 Он должен отдавать данные и все. Как ими пользоваться - твоя работа. Может ты все это сверстаешь таблицей, а может привычной сеткой с адаптивом, да еще и в мобильное приложение. Беку-то похуй, он в универсальном жсоне отдал данные, а там хоть на руби пиши че дальше. Ебаться с бэком это если работать в убогой студии, которая верстку на ворпресс или битрикс натягивает, там php надо и бекендеров нет никаких.
>>2225560 Ты видимо не понял вопроса. Я не спрашивал надо ли уметь дергать хттп или нет (итак ясно, что надо), речь конкретно об умении и познаниях в бэке. Должен ли я уметь писать микросервисы, знать реляционные БД и все в таком духе?
>>2225440 Нравятся обьекты. В классе пихаешь всякие методы и при вызове этого самого класса на выходе получаешь обьект, внутри которого методы и обработчики, использующие эти методы. Реакт не использую т.к не уверен в своих силах в ванильном жсе (считаю непутевой идеей браться за такой фрейм не имея за собой крепкой базы в ванильном жсе да и в целом в программировпнии), потому и кидаю свои репы на оценку местным анонам.
>>2225664 >В классе пихаешь всякие методы и при вызове этого самого класса на выходе получаешь обьект, внутри которого методы и обработчики, использующие эти методы. Вот только дальше тудулиста жаваскриптовская реализация классов начинает протекать, и эти дыры нужно затыкать или переобъявлением методов в конструкторе (что лютая дичь) или присваиванием стрелочных анонимок на все методы (что не без своих подводных камней). Альтернатива - очень внимательно смотреть в реализацию каждого метода и биндить контекст в переменную, если идёт проёбывание контекста. Плюс классы не минифицируются, так что бандл с классовым кодом просто жирнее. Но это фронтопроблемы, на сервере можно обмазываться классами на каждый пук. Впрочем я не знаю, проёбывается ли контекст в нодовских листенерах или нет.
>>2225165 1. Скрипт во мгновенно вызываемую функцию не обёрнут. 2. Скрипт не находится в заголовке. 3. `Markdown.renderNoteElement()` дохуя перегружен, выноси функции внутри него в отдельный класс, даром что они один хуй не используют контекст класса этого метода.
Анончи у меня странная задача, нужно из html формы, по результатам её заполнения, отправить json, всё это делается в браузере в html форме(тупо форма локально открывается). Это возможно? Лаба горит(
Анонасы, выручайте. Задача следующая: передать кучу говна из родительского компонента реакта к его потомкам. В этой куче говна есть как методы, так и обычные данные. При этом нужно, что бы компонент-потомок мог изменять переданное значение и проивзодить ререндер родительского компонента. надеюсь нормально объяснил. Как такое лучше сделать? Использовать контекст или каким-то другим способом?
>>2225686 3. `Markdown.renderNoteElement()` дохуя перегружен, выноси функции внутри него в отдельный класс, даром что они один хуй не используют контекст класса этого метода. ??? Т.е создать создать отдельный класс (не Markdown) и как то связать новосозданный класс с текущим?
>>2225768 Не поверишь, но ты можешь создавать сколько угодно классов. Конкретно в твоём случае функции, обьявленные внутри `Markdown.renderNoteElement()` живут в своём мире, который даже не обращается к инстансу класса. Создавай класс для элемента списка, отвечающего за рендер в ДОМе, который хранит в себе ссылку на элемент в доме и инстанс маркдауна, который хранит в себе маркдауновскую строку.
>>2225761 Ну это как один из вариантов, да. Но я хз как нормально на нем реализовать подобное поведение, если у меня таких компонентов будет не одна штука, а штук 10, каждый со своим сотоянием и его передачей своим потомкам
>>2225884 Маняоправдания пошли. Сейчас открыл в IE 11, там есть в chrome есть, в FF есть. Safari только не проверил, но я более чем уверен, что там тоже есть.
Есть библиотека select2, у нее есть крутые штуки для select. Есть стили, стили библиотеки импортятся в общий файл стилей с остальными стилями. По какой-то причине селекты от библиотеки, их стили подтягиваются очень не сразу, в отличии от стилей всех остальных. Это шо такое? Как чинить?
>>2225981 >у нее есть крутые штуки для select У неё нет крутых штук для селекта, она свое говно поверх него реализует. >По какой-то причине селекты от библиотеки, их стили подтягиваются очень не сразу, в отличии от стилей всех остальных. >Это шо такое? Как чинить? Ну как минимум нужна видео запись.
EVENT LOOP Разбираюсь с вот этим вот самым, понял вот что:
Есть коллстэк куда заносятся последовательно, друг за другом функции (Обычные таски: console.log, parseFloat и т.д.) и выполняются.
Если движок браузера замечает что-либо из Web API в коллстеке, то он закидывает это к себе в "среду выполнения", назову это так, выполняя эти вещи асинхронно. В Web API макротасками называются setTimeout, setInterval и т.д., микротасками - Promise и т.д.
После выполнения каждая из функций в Web API попадает в очередь и ждет полного очищения коллстэка от оставшихся задач. Когда коллстэк очищается, event loop переносит поочередно функции из очереди в коллстэк.
Вопросы: (Пикрил). Асинхронные методы у Promise выполняются по очереди даже если создаются разные экземпляры? Почему сначала полностью выполняется долгий "b", не должен ли сначала исполниться быстрый "a"? Я только что выше писал, что они по очереди передаются в коллстэк, но я думал это немного иначе работает, в общем, объясните как-нибудь, please.
setTimeout не всегда выполняется через столько, сколько мы указали вторым аргументом, потому что он обязан выполниться только после всего остального кода из коллстэка, получается его минимальный срок его выполнения зависит от оставшихся задач в ящике коллбэков? (Если второй аргумент таймаута такой маленький, что еще не весь коллстэк успел выполниться, то коллбэк таймаута выполняется самым последним, сразу после всех остальных)
>>2226034 Пока все микротаски не выполнятся, код дальше не пойдет. С макротасками это так не работает. МОжешь попробовать создавать микротаск рекурсивно внутри самого себя же - залагаешь интерфейс
>>2226054 >Пока все микротаски не выполнятся, код дальше не пойдет Я почти то же самое написал, когда не закончится первый then, не сможет начаться любой второй then. Но на обычные таски это не влияет, это только в пределах микротасков
Аноны, такая ситуация: Пишу авторизацию по ролям. Для этого написал декоратор, внутри декоратора получаются данные авторизованного пользователя (из jwt токена) и нужно проверить имеет ли он роли для доступа к маршруту или нет. Проблема в том, что в самом токене лежит голый айди, т.е. нужно достать все остальное асинхронным запросом из базы, а специфика такова, что все действие происходит в синхронном методе класса, т.е. я просто не могу сделать асинхронный запрос и вменяемо получить данные внутри синхронной функции. Как выпутаться из этой ситуации? На ум приходит только засунуть роль в токен и просто получить ее с запросом, но так делать нежелательно, насколько я понимаю.
>>2226338 Во фронте понятия джун/миддл/сеньер ничего не значат. В этой сфере нет по настоящему сложных задач. Сеньером может стать любой додик сидя на диване.
>>2226453 А как тут не разныться то бля? Встаю в 10 часов, делаю парочку коммитов, мерджу и иду дрочить осташиеся 7 рабочих часов в пое. За все это мне платят нищенские 170к/месяц. Сам бы не разнылся?
>>2225866 > сли у меня таких компонентов будет не одна штука, а штук 10, каждый со своим сотоянием и его передачей своим потомкам Значит это будет единое состояние, которое будет лежать в сторе размазанное по слайсерам.
Изучаю Redux. Есть 2 reducer'a, один отвечает за увеличение/уменьшение числа на один в нём initialstate = { number: 10 }. Второй reducer отвечает за получение юзеров с json, в нём userInitialState = { users: [] }. Я соединил их в один rootReducer с помощью combineReducers. Всё работает хорошо, но! когда я жму кнопку "получить юзеров", происходит dispatch с type GET_USER и всё отрисовывается. Но при этом компонент, отвечающий за отрисовку чисел и следящий за состоянием именно чисел (которые совсем в другом reducer'e) возвращает в консоль значения этих чисел. Получается при обновлении состояния массива юзеров зачем-то обновляется состояние чисел, которые к юзерам отношения вообще не имеют.
Нашёл вот такой кусок кода, типа const VAR = (param) => [{a: param}, {b: param}] res = VAR('123') Это вообще как понять? Почему массив вызывается как функция с параметром?
>>2226549 Я сам разобрался. У меня массив объектов users отрисовывался в App, где лежал дочерний компонент Counter, в котором был выведен состояния numbers. Поэтому при ререндере users App дёргало компонент Counter, а тот в свою очередь консолил состояние numbers. Я сделал компонент UserList и там реализовал отрисовку данных из массива объектов users и теперь всё работает хорошо.
Здравствуйте, с вами вкатун. Я возвращаюсь с рубрикой - небо голубое, в алфавите 33 буквы, а банан - это трава. В общем на компьютере, если в хроме включить Инструменты разработчика и Toggle device toolbar, то заработает эмуляция мобильного устройства. И там вместо курсора - круг. И я только сейчас узнал, что этот круг - это имитация ПАЛЬЦА. Лол, топ кек!
Зашел тут на htmlacademy первый раз за год наверное, хотел чекнуть, что изменилось, а у них за ебалы доступны курсы. Кто-то получал доступ? Это просто доступ к файлам и видео или прям можно продлевая доступ типа пройти курс и официально значится выпускником у них?
>>2226617 Я тоже видел в штмлакадемии эту хуйню. Но не использовал. Вангую, что даётся недельный доступ к файлам и всё. Предыдущего потока. Вангую, что нельзя по этой хуйне считаться прошедшим курс и стать официальными выпускником. Я ещё читал, что там на профессию фронтенд-разработчик ввели удешевлённый платный тариф - без наставника. Типа платишь меньше и сам всё проходишь без наставника.
>>2226604 Параметры это переменные, в которые передаются аргументы при вызове функции. Процедуры и функции тут не причем. function x(параметры) {} x(аргументы)
Анон, теперь у меня стоит вопрос изучения Ангуляра или Реакта, дабы денех начать зарабатывать на них, дык що выбирать то? Чисто по деньгам, то бишь ГДЕ у нас больше проектов и вакансий для джуна? Любая инфа об этом годовой давности, будто фронтенд умер год назад. Мне похуй на холивары, в любом случае, если нужно, оба выучу, вопрос в том, что выбрать первым для вката в работку.
>>2226811 >мухосране От туда только удаленка, все остальное это гребля на галере, вакансий даже в хх все на реакте, если хочешь для себя писать (по фану) то вью
Аноны, можете, пожалуйста, сделать ревью: https://pastebin.com/9Nn6sfLD Если вкратце - это класс, который может по мере загрузки zip-архива анализировать его на наличие файла с определённым именем, и если найдёт такой - остановит загрузку и вернёт содержимое файла. Я раньше на js не писал, поэтому очень нужен взгляд со стороны. Как бы вы реализовали такой функционал? Режет ли вам что-то глаз в том, как написана прога?
>>2226922 >Если вкратце - это класс Уже говно. >fromUrl А че если мне по POST запросу надо запросить? А если по DELETE? А если мне аднные для авторизации передать надо? >fetchUntilFileName А че, если мне надо, к примеру, проверить название файла на соовтетсвие регулярке? >комменты внутри метода Комменты должны быть НАД методом >new Object(); Нахуя? >const constPartSize = 30; Вынести в аргмент >const const Нахуя начинать название константы с const? Ты в блокноте пишешь чи что? Дальше не смотрел, т.к. надоело
>>2226922 >Как бы вы реализовали такой функционал Выкинул бы нахуй класс и сделал все в виде функции, которая принимает DataStream и реуглярку/строку названия файла. Добавил бы возможность вернуть все имена файлов и путь до них, а не только первое совпадение.
>>2226948 >класс - Уже говно. А как надо? >А че если мне по POST запросу надо запросить? А если по DELETE? А если мне аднные для авторизации передать надо? >А че, если мне надо, к примеру, проверить название файла на соовтетсвие регулярке? Тут моя вина, я не объяснил что этот код написан для одной специфической задачи и реализация этих функций была бы избыточна в её рамках >Комменты должны быть НАД методом Спасибо, поменяю >new Object(); Нахуя? А как надо? const val = {} ? >Вынести в аргмент В аргумент метода? У zip длина заголовка всегда одинакова, следовательно никогда не придётся менять этот параметр >Нахуя начинать название константы с const? Ты в блокноте пишешь чи что? const в constPartSize показывает не то, что это константа, а то, что это часть заголовка неизменяемой длины
>>2226968 Мне нужно как раз читать архив до первого совпадения, т.к. после его нахождения можно не загружать остальные гигабайты архива, и не нагружать сеть. На счёт остального - спасибо, подумаю как переписать
>>2226976 >Мне нужно В этом и твоя проблема. Это нужно тебе и нужно это сейчас, ты не задумываешься о том, нужно ли это будет в будущем не тебе и когда.
>>2226972 >Тут моя вина, я не объяснил что этот код написан для одной специфической задачи и реализация этих функций была бы избыточна в её рамках Ну так все равно лучше написать сразу максимально утилитарную имплементацию, для переиспользования на будущих проектах, мб даже на другой работе. Если есть ограничение по времени, то конечно да, тут можно этим принебречь. >А как надо? const val = {} ? Да, никто не пишет new Object, это слишком топорно. >В аргумент метода? У zip длина заголовка всегда одинакова, следовательно никогда не придётся менять этот параметр Понятно, тогда ОК. >const в constPartSize показывает не то, что это константа, а то, что это часть заголовка неизменяемой длины У тебя const constPart = new Object(); постоянно мутируется, хотя вроде написано что это const. В общем, не логично.
>>2226972 + еще косяк: >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 в обхекте, хотя можешь сразу выкидывать ошибку.
>>2226999 >>2226994 > ты не задумываешься о том, нужно ли это будет в будущем не тебе > лучше написать сразу максимально утилитарную имплементацию Вы оба правы, скорее всего я добавлю немного функциональности на будущее, хотя вряд ли она пригодится > У тебя const constPart = new Object(); постоянно мутируется Вот тут можно по подробнее, на сколько я понял, смысл const в том, что мы больше не будем менять ссылку на (переопределять) объект, хранящийся в переменной. Есть какое-то соглашение, что мутируемые объекты не нужно через конст объявлять? >>2227000 > Ты тратишь время на создание поля signature в обхекте, хотя можешь сразу выкидывать ошибку. Спасибо, перепишу
>>2227005 >смысл const в том, что мы больше не будем менять ссылку на (переопределять) объект Да. Но у тебя еще и в названии константы есть слово const, на что оно влияет? У меня первая мысль, это то, что этот объект иммутабелен.
>>2226968 Кстати, прелесть класса в том, что я как раз могу добавить пару методов, которые реализуют эти возможности, просто добавив пару методов, и вызывать, например не ZipFetcher.fromURL(), a ZipFetcher.fromPost() и не ZipFetcher.fetchUntilFileName(), a ZipFetcher.fetchAllFiles(), таким образом не теряя старой логики. Но на сколько я понял, в js классы не жалуют, почему?
>>2227008 Видимо надо подумать, как переименовать переменную, парой постов выше объяснил, что имеется ввиду часть заголовка, имеющая постоянный размер в 30 байт, в противоположность varPart, длину которой мы узнаем только после того, как распарсим constPart
>>2227037 >Ты задал вопрос ка ктебе vue поставить, тебе сказали. Как и куда программировать это другой вопрос Спасибо, что подсказал как поставить. Буду признателен, если напишешь про IDE, я думал vue.js это фраемворк с IDE
>>2227104 хмм, вот я устраиваюсь стажером на работу и мне чувак сказал, что нужно писать в объектно ориентированном стиле. На жабоскрипте... а ты говоришь, что так не делается, или я не так понял?
>>2227010 >в js классы не жалуют, почему? Потому что: а) Медленные шо пиздец. б) нет асинхронных конструкторов. в) Во фронте очень мало задач, которые бы решались классами. custom elements недоделанная хуета
>>2227112 С каких пор ООП подразумевает обязательное использование классов? Оно расшифровывается как Объектно Ориентированное Программирование, а не Классово Ориентированное программирование если что.
>>2227172 Я не тот анон с которым ты общался. Никаких маневров - чистая практичность типов.
представим у тебя есть метод getProfile. Он возвращает объект {userEmail: "vasya@pupkin.com", userName: "Вася"}. Тебе нужно в него добавить score: 50. С типизацией IDE найдет тебе пользователей getProfile и ты там можешь посмотреть как используется объект. С типизацией у тебя код не скомпилится и ты пройдешься по ошибкам типа {userEmail: string, userName: string, score: number} и посмотришь все проблемные места.
Без типизации у тебя IDE найдет использования getProfile только если он эксортируется/импортируется и нигде не используется динамически. Модули дают какакой-никакой неймспейсинг. Без типизации ты можешь надеятся что getProfile - уникальное название и ты можешь грэпать проект. Без типизации ты можешь надеятся что код который использует getProfile ничего не сделает с добавленым полем. Ты не в курсе что Петя где-то в коде сделал проход по всем ключам и форматирование значений.
Более сложный пример. Есть метод isAuthenticated. Он синхронный и возврачает true или false Перед тобой встала задача переделать этот метод чтобы он возвращал какой нибудь EventEmitter потому что аутентификация стала зависить от чго-то асинхронного. Ты можешь просто не узнать какой код твоего сложного приложения просто проглотит объект как true
Мы же не петпроектами занимаемся, мы приходим на проект, который хз сколько лет писался. Мы не можем ручатся за весь код, поэтому наличие типизации дает хоть какую-то увереность что мы не обос ремся в поддержке.
>>2227220 Не понял. Выше спор был классовое ооп vs прототипное ооп в жиэс, а не ооп vs не ооп. В тайпскрипте классы являются типами. Можно их использвать для типизации если тебе нужно использовать их тип в рантайме, например для DI.
>>2226626 Ну а хуле хотели, если нужна нянька — платите. В других случаях вам и так будет необходимо самостоятельно изучать материалы, даже если без хтмлакадеми.
И у меня предупреждение 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 и цикл не подходит, потому что эти элементы подгружаются при пролистывании страницы вниз. Неужели только обсерверы делать и на каждый новый элемент добавлять атрибут с онкликом? Работать будет, но не хотелось бы превращать код из нескольких строк в огромную хуетень из обсерверов. Вариант выше идеальный, только он... Не работает.
>>2227489 >Почему MouseEvent вызывается при кликах на одних элементах, но не вызывается при кликах на других? Потому что ты что-то не то делаешь, он либо перезапишется либо будет вторым вызываться в зависимости от вида навешивания слушашателя
Разберись как там сделано и от этого можешь отталкиваться
>>2227537 capture phase - это просто true в конце? elem.addEventListener(..., true) А на боди вешать, чтобы Listener не пытался начать работать с элементом, который еще не прогрузился и не вылетал с ошибкой? Повесил на старый селектор и спрятал под DOMContentLoaded, всё работает отлично, пусть я и не особо понял, как. Спасибо, анон!
>>2227625 Тут при каждом скролле вниз, что ли, заново выполняется querySelectorAll? Какое-то не очень решение. И разве если каждый раз вешать на элемент onclick, то он не будет многократно дублироваться? Я сейчас как раз переписываю код из-за того, что addEventListener click с анонимной функцией каждый раз создавал нового Listener-а.
>>2227649 Ну а что я мог написать-то? Вот есть родитель, на которого я повесил onclick. Я кликаю на всё, что есть в родителе - работает. Кликаю на кнопку, на которой точно есть другой onclick либо addEventListener - не работает, но выполняется тот код, что уже там есть. Нажимаю на элемент заголовка - работает, но если я нажимаю на <a href>-элемент да, именно без ссылки внутри заголовка, то уже не работает. И в процессе гугления много разных обсуждений конфликтов между онкликами. Ну, либо есть какая-то проблема с нажатиями на ссылки и баттоны, я не знаю.
Ладно, в любом случае elem.addEventListener(..., true) мне помогло, всем спасибо. И с многократным вызовом уже тоже разобрался.
Палю годноту, а то у чела чет канал не развивается. Лучшие туториалы обо всем вокруг веба. https://youtube.com/channel/UCyLNhHSiEVkVwPSFKxJAfSA Вместо того чтобы въебать день на чтение унылой доки, можно потратить 1 час на видос, в котором все доступно и просто объясняется на реальных примера.
>>2227932 Mdn то почитай ептыть, есть размеры как дом элемента, задаются через style, и есть размер канваса, задается через width и height атрибуты. Там же тебе расскажут про DPI и scale чтобы глазки не щипало. Позднее ты увидишь что 1px solid black рисуется как 2x solid gray, потому что линии рисуются между пикселями, а монитор между пикселями рисовать не может
>>2227984 > Mdn то почитай ептыть, есть размеры как дом элемента, задаются через style, и есть размер канваса, задается через width и height атрибуты. Это я прочитал, просто не понял как мне эти width и height вычислять (уже понял).
> Позднее ты увидишь что 1px solid black рисуется как 2x solid gray, потому что линии рисуются между пикселями, а монитор между пикселями рисовать не может Ааа, надо эту хуйню округлять значит, чет я не допер. Да, так работает, спасибо.
Аноны, запилил свой всратый ui kit и запушил на гит. Че делать-то теперь? Достаточно будет клонировать его в папку с проектом и импортировать из него элементы? Плюс устанавливать в проект все зависимости кита?
Даров, аноны, а реально получать хотя бы 120к фронтом без ебли с администраторством? Ну или с минимальной еблей...
Работаю в небольшой аутсорсинговой конторе 1,5 года (моя первая работа). На текущий момент код пишу от силы 20% времени, всё остальное время уходит на разработку всяких архитектур, помощь джунам, ревью тасков, всякие согласования и т.п. Платят за это дело 75к, а я хочу быть разрабом, а не менеджером, но и по зп проседать не хочется...
Ребят, у меня в гитхабетнесколтко проектов. Но в резюме дал ссылке в примерах работ только на один, самый сложный. Типа соцсети на стеке MERN. Этого достаточно для вката? Не стал захламлять всяким лёгким говном типа клонов Ютуба или дискорда.
Все так же разыскивается программист. Обязательно: — React + Redux + нативный JS на отличном уровне. — Уметь верстать — git — Опыт самостоятельной работы
Очень круто, если: — Опыт с монгой или mysql/postgresql — Опыт разработки больших SPA + написание прикладных скриптов, парсеров, чего угодно. — Знает, что такое prettier, stylelint, eslint — Понимание принципов работы браузеров и веб-серверов — Отличные знания и понимание как работает JS в браузере и не только. Понимание особенностей языка Проект в данный момент полностью рабочий, занимаемся рефакторингом кода. Если кого-то заинтересовало, то @bubblegum_crisis сайт проекта так же пришлю.
>>2228372 Ты че, ебанулся на дваче таким заниматься? Никто тебе не напишет, потому что это может быть развод чтобы порофлить с вкатунов, иди нахуй отсюда.
>>2228377 Ну че делать, 11 лет на двачах. Мы спокойно можем нанять программиста на апворке, как наняли человека из Альфы. Но я вполне рассматриваю новичков, которые останутся в команде. Даже если они не полностью соответствуют требованиям.
>>2228386 >новичков >— React + Redux + нативный JS на отличном уровне. >— Опыт с монгой или mysql/postgresql >— Опыт разработки больших SPA + написание прикладных скриптов, парсеров, чего угодно.
Я даже знаю что у вас там длинные простыни из useState useEffect, которые только с помощью console.loh бессонными ночами отлаживать. А ангуляр нормально дебагером отллаживается, все как у настоящих софтваре инженеров.
>>2228398 В посте максимальные требования. Никто не запрещает отписать со словами "Я новичок, знаю не все, но хотел бы поднять скиллы, знаю пока это, это и это".
Ход мысли: 1) Объявляем переменную х в глобальном скоупе и присваиваем ей значение 3. 2) В функции fn переназначем глобальную переменную х на 10. 3) Создаем фунцию x в скоупе функции fn. За счет hoisting'a объявление функции поднимается вверх и становится по сути локальной переменной x функции fn.
>>2228413 >где технологически сложные проекты Как раз технологически сложные проекты на HTML first подходе со вставками в дом дерево как на ангулярах никто делать не будет.
Стоит задача написать фронт на rest сервис, решил попробовать vue, но чёт сложно пездец, далеко от джавы. Есть что попроще? Есть шаблонзаторы html которые могут работать с rest api? Я думал с ними работает mustache или freemarket, но нихера, а лаба горит, надо писать фронт че делать то?
>>2228401 Вкатун не палится. В ангуляре ты будешь охуевать от километрового стэка вызовов rxjs и непонимания того, в каком месте ты лишний раз запровайдил/незпровайдил нужную зависимость.
>>2228779 Чел я не знаю как там весь жс поживает, но вуе чисто кал, какой-то спагетти код с гоуту по экрану. Для себя программируй на html, а для прода пусть фронтокалоеды скачут на 5 экранов.
Так, фронтаны. Три года работаю в одной крупной окологос конторе не VK фронтом, на своем проекте дорос до синьора: основные архитектурные решения принимаю, джунов учу, небольшой командой из 3-4 человек руковожу. До этого еще год в мухосранской веб студии был фронтом. Проект нравится и зп росла, поэтому последние пару лет совсем не ходил по собесам, но сейчас все летит по пизде и походу придется.
Опыт в прохождении собесов растерял, очевидно. Что там сейчас спрашивают по хард части на миддло-синьорском уровне, что подтягивать? Задачки с литкода? Эвентлуп? Прототипы? Редакс, эффектор? TS? Паттерны, ООП?
>>2228946 Да, всего по немногу. Я бы упор на паттернах и принципах проектирования делал, а также на решении литкода. Так как это обычно заключительная часть и поможет изменить о тебе мнение если обосрался на первых частях, особенно паттерны, так как о них говорить можно хоть целый день.
Попробовал я тут это ваше композишион апи с тайпскриптом. Ну че лучшне чем дефолтный вуй 2. Только с типизацией пропсов проблема в вуе 2. А так vue 2 + composition api + vueuse норм тема.
Сап, помогите разобраться нубу (или толкните куда надо).
Вот есть N страниц (блоков, неважно) - их число зависит от количества товаров, которые я хочу разместить на каждой странице. Как наполнить последовательно каждую страницу существующими товарами? То есть, товары не должны повторяться, очевидно - на 1 странице 4 первых товара, на 2 странице 4 следующих товара и т.д. То есть одним циклом, примененным ко всем страницам, тут не получается.
То есть идея в том, чтобы для каждой страницы создавать свой массив с конкретным количеством товаров? И этот генерирующий код должен быть внутри цикла по количеству страниц?
То есть идея в том, чтобы для каждой страницы создавать свой массив с конкретным количеством товаров? И этот генерирующий код должен быть внутри цикла по количеству страниц?
Читаю про Redux и не понимаю а нахуй он нужен если в реакте уже есть useContext и useReducer? Или он нужен тупо потому что уже есть много старого кода на нём?
http://htmlbook.ru и https://developer.mozilla.org/ru/docs/Web/HTMLпро мозилу стоить отметить, что читаю русифицированную, а правильности перевода я не уверен, поэтому и сомневаюсьнорм источник информации? И хотелось бы еще узнать, а есть ли какой то конкретный список, где указанно, какие теги, в HTML5, использовать признак попущенца, а какие нет? А то я помню, как основательное, кол-во времени, убил на дрочь <iframe> и потом чувствовал себя конченым идиотом, ведь я, по сути дело, убил время в пустую.
Как же заебали ПМы с описанием задачи уровня: "Почини чтобы все работало", блять как же заебался искать, додумывать, маняфантазировать про что она, где ошибка, на какой странице, как воспроизвести. Особенно заебывает, когда ты на новом проекте, а тебе фотку какого-то локального инпута в таск присылают и грят: "вот тут поиск барахлит". А мне сидеть и искать с лицом лягушки этот ебаный инпут. А когда спрашиваешь, на какой ебаной странице этот инпут??!! Как воспроизвести ошибку??!! В ответ, словно раньше все было ясно "Ой, а чего я не понятно описала??". ОООЙЙ ЩАС РВАНЬЙОООТ!!! Как же горит..
>>2229328 >А то я помню, как основательное, кол-во времени, убил на дрочь <iframe> mp4
>>2229658 Если знал, что токсики, то зачем спрашивал? Если ожидал токсиков, то чего бомбишь? Странный ты, тут всем помогают, кому-то мега наноборду с зашифровыванием жсом, кому-то верстку помогают, хотя тред даже не об этом, а ты просто токсик.
Ку, всем, помогите пожалуйста, что я сделал не так? Выводится вместо адекватного ответа, какой-то бред.
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; } }