Вы видите копию треда, сохраненную 8 февраля 2023 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Больше пары строк кода в посте или на скриншоте ведут в ад.
Для программирования на HTML https://codesandbox.io
Для Node.js с консолькой https://repl.it/languages/nodejs
Если рассчитываешь получить дельный ответ, сформулируй правильно вопрос: «что я хочу получить, что я для этого делаю, что я вместо этого получаю». Если/когда самостоятельно найдёшь решение — поделись в треде, мы за тебя переживаем.
Документация - https://developer.mozilla.org
Руководство для вката - https://github.com/acilsd/wrk-fet#javascript
И у меня проблема уже на первом же шаге.
Я не могу сделать апи запрос, потому что, насколько я понял, изначально в браузерах запрещён CORS
CORS можно выключить, но это не так просто, и я не хочу ничего выключать
Есть какой-нибудь способ?
host_permissions или permissions (в зависимости от версии) в манифесте не помогает?
>>13034
Не знаю, попробую. Спасибо за идею
>Слыхал, что хайп по ноде уже прошел
Прости, а ты учишь только хайповые технологии? То есть все прутся в веб, то и ты прёшься в веб? Есть области, которые возможно не очень популярны, типа электроники. Но там всегда можно заработать на свой хлеб с маслом.
Так же и здесь, даже в каком-нибудь laravel можно заработать на хлеб с маслом. Нода она как была, так и есть. Не теряла своей актуальности никогда. А то что говорят - это кто говорит? Школьник эксперт? Может это обычный тролль сидит и пишет хуйню.
А что собственно неполноценного в ноде?
>ниша языка, на котором можно и фронт и жалкое подобие на бэк
То ли дело бэк на пыхе или джаве.
Можно обернуть колбэк, который на кнопке (или в нём же) в функцию, которая будет тоглить стейт окна.
>на главной странице после нажатия на кнопку choose file появляется окно хрома для выбора
Теперь подумой своим котелком, нажатие на какой элемент какое событие производит? И кстати у скриптов к внутренностям пикера доступа нет.
Продублирую из прошлого треда.
Ребята, привет.
Нужна помощь.
Делаю свой проект, нужно отразить лист дат (можно читать как запись). У дат (записей) есть некий приоритет
На главной будет 4 кнопки, в зависимости от нажатия будет показывать записи low, medium, high или все сразу. При этом нажатая сейчас кнопка будет подсвечена.
Почему-то не получается задачть свойство width: 200px; для этих кнопок, вообще никакие габариты. В консоли F12 оно перечеркнуто, но причина непонятна.
1) почему так? почему некоторые свойства игнорируются? Я же не переопределяю свойства, а у кнопки (input) есть такие свойства
2) налицо некое дублирование кода. Как лучше сделать? менять свойства через js?
Если есть какие-то наработки, как лучше сделать и как няшно сделать, то было бы круто.
https://pastebin.com/HkLunsta
У инпутов/картинок/картинок/видео/канваса "измерения" определяются их контентом, так как это встраиваемые элементы. Хочешь их ограничивать - оборачивай в спан/див и ставь измерения на нём.
Конкретно в твоём случае достаточно поменять <input type="submit"> на <button type="submit">, так как поведение у них в контексте формы одинаковое, но при этом кнопки - не захардкоженное говно в плане стилизации.
Как получить "Текст 3" ? команда text() выводит строку вида ТекстТекст 2Текст 3, а мне только текст 3
Используя jquery
Поконкретнее вопрос задавай. Ответ целиком зависит от используемой структуры данных.
Не работает
Даже для теста обернул кнопку в div - и тоже не работает.
Подозреваю, что это может быть связано с тем, что у кнопки есть type и value
Наркоман, у теб не кнопки, а инпуты, прикидывающиеся кнопками. Пиздуй короче гайд вкатуна на MDN читать.
Да, я об этом и говорил
Какие варианты я писал: просто button, button v li и button v div v li
<button class="btn-prior priority-active-input" type="submit" name="priority_set" value="0">all</button>
<li><button class="btn-prior priority-active-input" type="submit" name="priority_set" value="1">high</button></li>
<li><div class="btn-prior priority-active-input"><button class="btn-prior priority-active-input" type="submit" name="priority_set" value="0">all</button></div></li>
Судя по всему, я где-то туплю, причём крупно, но не могу понять, где.
Тупишь в разметке, очевидно же.
Раньше как-то был на слуху, сейчас вообще почти не упоминается.
Пилить-то может его и пилят, но мало ли что пилят.
ангуляр офигенен
Разобрался
Вообще странная хуйня, я в стилях как будто запутался
Нужно основы подтянуть.
Спасибо!
Обходит примерно 100 сайтов, ходит по ссылкам на каждом максимум 50 переходов внутри сайта по случайным ссылкам, ищет элементы по классу и собирает текст в sqlite, после того как прошел генерирует json, всё асинхронное на промисах. Короче классический парсер, на node.js он хуярил минут 20 - полчаса где-то.
Запустил на deno и он минут за 10 все сделал, работал пиздец как шустро видно было по выхлопу из терминала. Правда пришлось поебатся немного, заменить axios на родной fetch, fs не понравился тоже заменил, остальное все из npm было в deno.land просто поменял везде импорты.
Недооценивал думал какая-то зумерская бесполезная хуйня очередная, но она оказалась шустрой и ts из коробки, да и вообще как-то нужно меньше ебаться нет всяких бабелей и тесты проще запускаются прямо из коробки. Когда постоянно пишешь на js наверное под рукой все это есть, но когда основной стек другой и в ноду набегами эта дроч люто бесит, а тут хуяк и готово.
Его главное преимущество что не нужно поднимать БД, просто лежит файл рядом с проектом и при этом поддерживается синтаксис sql, для всяких небольших мелочей пойдет и еще удобно для прогона тестов
>А монга говно без задач
Попробуй сравнить текстовый поиск одновременно в нескольких полях в постгресе и монго на БД с 10 млн записей не забудь индексы создать монго вообще летает
>просто лежит файл рядом с проектом
Что-то вроде json файла в котором запись/удаление происходит через fs модуль, только в sqlite, это через sql запросы?
Да типа того
Если в одну строку линтер позволяет, то пиши в одну строку, а так на скрине форма записи, которую поддерживают популярные сборники правил (eslint-config-airbnb например)
Не забудь ручками реализовывать ACID на уровне своего говноприложения. И индексы тоже ручками будешь в монге создавать.
>ACID
В нашем случае не критично если пару записей проебется/переебется ничего страшного, но очень критична скорость поиска по тексту
> И индексы тоже ручками будешь в монге создавать.
Выполнить запрос пиздец как сложно, в постгресе если надо искать за пределами праймари кей придется тоже запрос на создание индекса колотить, что то что это особой разницы нет
>В нашем случае не критично если пару записей проебется/переебется ничего страшного, но очень критична скорость поиска по тексту
Данные для поиска, конечно же, сам боженька из воздуха заносит.
>Выполнить запрос пиздец как сложно, в постгресе если надо искать за пределами праймари кей придется тоже запрос на создание индекса колотить, что то что это особой разницы нет
Вот именно, что нету, так что визг свидетелей носкюэла про индексы не понятен.
Делай много пропсов, это нормальная практика, можешь чекнуть популярные ui библиотеки, там такой же принцип
>Данные для поиска, конечно же, сам боженька из воздуха заносит.
Без транзакций их не записать? Или что ты хотел сказать? Развивай мысль до конца
Я бы не сказал, если повышает производительность, то вполне себе способная к жизни хуйня
понял. спс
Там нет обратной совместимости со всем высранным на ноде за последние годы. А обратная совместимость + высокая производительность есть в выкаченном относительно недавно Bun.
Подожди, а с асинхронным какая разница? Там же то же самое будет, только мы не напрямую вызовем колбек, как на пикче, а передадим этот колбэк в веб-апи. Т.е. понятно, что на промисах код получается более декларативных, и мы не вызываем метод B из метода A, который никак с ним не связан кроме нужного нам порядка выполнения, но речь шла именно об аргументе "РЯЯЯ, ВЛОЖЕННОСТЬ, РЯЯЯ".
Не понимаешь уровня развития людей, которые пишут вещи вроде wtfjs и тех, кто в серьез с этого смеется или бугуртит. Вот твой чел из видео, который не умеет в декомпозицию, ровно такой же персонаж.
Еще не понимаешь того, что 95% такие. И в айти в том числе. Тут большинство - идиоты.
Callback hell больше относится к асинхронным операциям, промисы в основном и сделали чтобы было удобнее работать с асинхронщиной (await работает в if/else, try/catch, тернарных операторах, скобках, Promise.all, несколько await подряд).
У тебя тут конечно всё удобно и линейно, но типичный ад наступает, когда нужно переиспользовать несколько переменных, часть из которых может быть только назначена посреди цепочки (и может быть использована в предыдущих звенах), а часть вообще из другого модуля приходит. Эту проблему облегчает только async/await, так как даже в промисах приходится костылить замыкание или засирать возвратные значения.
Да, у колбеков много проблем помимо этой
Ты не понимаешь в какой тред попал. Тут колбэки и промисы пролистывают наспех, ибо нудно и скорее хватаются за риякты.
Ну в твоём сферическом примере в вакууме разницы никакой. Проблема в том, что в реальном коде ты, весьма вероятно, не захочешь выносить каждый колбек в отдельную функцию, а захочешь написать все инлайн, особенно если сами обработчики совсем небольшие по размеру и/или логически тесно связаны друг с другом. В этом случае у тебя и получится та самая лесенка колбеков
Инлайнят обычно не из-за размеров или логики, а для того, чтобы иметь доступ к переменным в скоупе "верхних" колбэков. Альтернатива - писать каждый колбэк как фабричную функцию, принимающую объект с полями, которые она может мутировать (обычно называют контекстом), и передавать его по всей цепочке.
Ну и не стоит забывать, что в те времена никакого фетча не было и использовали XMLHttpRequest, у которого API был сделан по всем лекалам настоящего ООП, то есть куча ритуального бойлерплейта. Так же не было Headers и URLSearchParams, так что заголовки и поисковые параметры парсили, манипуляруя строкой. Не было тащемта и модулей, так что приходилось полагаться на волшебный глобал или хуярить скоупы через скоупы.
веб морда qBittorrent
Есть ли возможность в реакте через роутер сделать эндпоинты апи, которые при запросе выплёвывали бы жсон?
Условно говоря: есть данные из внешнего источника, нужно сделать так, чтобы при обращении к роуту выдавались спаршенные данные в немного другом формате. Возможно сделать средствами роутера? Или без ноды не обойтись?
Вопрос именно можно ли как-то сделать публичный эндпоинт, который проксировал бы запрос на исходный сервер с предобработкой данных, чтоб можно было стучаться на мою страничку и получать данные с другого сайта в виде жсона.
>Инлайнят обычно не из-за размеров или логики, а для того, чтобы иметь доступ к переменным в скоупе "верхних" колбэков.
Так в этом плане ты хоть колбеками пиши, хоть промисами - все равно вложенность будет, нет?
Нода именно для это и нужна. Ты сейчас буквально веб-сервер описал, насколько я понимаю.
Зависит от исходного сервера. Если там стоит несколько слоёв проксей, то запросик от твоего сервера вполне может быть послан нахуй. Будешь потом сидеть и писать логику мимикрирования под браузер на своём сервере.
>>16410
С промисами можно скоуп отдельного промиса огородить. Но так да, промисы не решили эту проблему полностью, они только лесенку в плоскую структуру превратили.
>>16410
Какую задачу решает композиция ассинхронных процедур? Хуй знает, сам подумой, что это за задача в контексте веба.
>С промисами можно скоуп отдельного промиса огородить. Но так да, промисы не решили эту проблему полностью, они только лесенку в плоскую структуру превратили.
не, в целом, для каких ситуаций это все используется? вот вкатун-джун должен это знать, уметь?
можешь практический пример рассказать?
не вижу ничего
например, что если тебе нужно поменять местами два асинхронных вызова?
проще просто свапнуть 2 строчки с авайтами
или разгребать лапшу из калбеков, менять аргументы местами?
Речь шла про вложенность. Понятно, что шлепать асинки с авейтами везде подряд удобне.
Нет, это для мобильных приложеинй, которые по сути являются локальным сервером. В браузере ты никогда не сможешь "общаться" с бд.
https://dev.to/apollotoday/going-serverless-with-mongodb-realm-vue-15m1
Тут по другому написано
Серверлесс это мем. Тебе в любом случае придётся пердолить типичный серверный конфиг и решать типичные серверные проблемы в серверлесс стэке.
Похуй на проблемы. Есть база данных в атласе теперь еще и сервер нужен отдельный что бы туда "ходить", бред
Чел, ты литературно называешь доехавшую до релиза дено мертворождённым проектом, но предлагаешь 0.2 бету какого-то другого говна? У тебя всё нормально?
Напрямую запрашивать для сайта данные из базы данных? В данном случае база данных это атлас
>Напрямую запрашивать для сайта данные из базы данных?
Секретные ключи будешь на клиенте хранить?
Найс "напрямую" запросы у тебя. Просто подними веб-сервер между БД и клиентом, и напрямую пропукивай запросы прямо с клиента!
Валидировать запросы тоже атлас будет? Или у тебя мега прогрессивная архитектура и любой крокодил может запрашивать, добавлять, изменять и удалять любые сущности в БД?
Там судя по доке можно роли назначать на запись чтение и тд. Веб сервер нужно где то арендовывать, а та сферера где хочу применить кейс веб приложение-БД по большей части населена домохозяйками. Раньше этой проблемы не было тк был хероку, сейчас они свернули атракцион зедрости, все лихорадочно ищут решения, аренда сервера домена деплой серверной части потом клиентской для некторых сравнимо с полетом на марс
Для my-enterprise-todo-app подойдет
Это обычная серверная архитектура. Данные никто никогда в монолите не хранит, для этого существуют отдельные субд на отдельных физических машинах.
В гугл забивать что-то типа "<название бд> js client" не пробовал?
А почему с равна 5? Это же не ссылочный тип, т.е. по логике хранится на стеке, захватывается копия, и выводится 0-4. Но на момент исполнения - везде 5. Откуда она вообще берется? Колбэки же выполняются после того, как стек опустеет, откуда она вообще берется?
В конце вызывается, после того, как стек опустеет. Поэтому непонятно, откуда в переменной с 5 берется.
>В конце вызывается, после того, как стек опустеет.
Так весь код технически вызывается в конце. Ты построчно объясняй, что когда запускается в цикле.
jit-скомпилированный код js всегда должен предусматривать шаги для деоптимизации и деградации, на случай если в уже скомпилированную функцию/выражение прилетит неожиданный тип.
В васм коде нет требования о том, что код может быть подгружен в любой момент а будущем, выгружен или пропатчен. Каждый модуль валидируется единчивенный раз, ходы для деградации в результирующем jit-output не нужны.
От сюла и берется выигрышь
На пракиике это не имеет никакого значения. На реалтных задачах, а не синтетических бенчмарках - жс код не проигрывает в производительности.
У васма нет динамических импортов. Васм модули подгружает жс.
Как похожий функционал на шиндошсе получить?
Накатить Докер на всл.
Т. е. грубо говоря, выигрыш здесь в отсутствии сборки мусора + наличии плоской линейной памяти + статических типах данных в противовес динамическому JS? А что за бред тогда про "near native speed" с рекламных агиток? Если эта хрень в среднем получается не быстрее С# и подобных?
>А что за бред тогда про "near native speed" с рекламных агиток?
Потому что в этом суть рекламных агиток, потому они агитками и называются.
Ну и да
> отсутствии сборки мусора + наличии плоской линейной памяти + статических типах
И делает код "near native speed".
Суть в том, что если на жс выделить плоский кусок памяти буфером и просто перекладывать там байтики скорость будет та же самая, все с оптимизирует jit, главное писать мономорфный код, чтобы вызовы функций не приводили к деоптимизациям никогда.
Ужс тут даже будет преимущество, потому что можно выделить не просто кусок памяти и дрочить в нем айтики, а например пул объектов, и переиспользвать их.
Просто чтобы писать "near native speed" код на жс, надо знать как работает жс движок. Код должен быть мономорфным - то есть оперировать всегда одними и теми же типами. Шейпы объектов не должны меняться (количество полей их типы, порядок, должны быть постоянны - нельзя использовать объекты как мапы, нельз удалть поля из объектов, и добавлять в них поля поле оздания и так далее). И тогда и жс код будет неар натив спид.
Разница между васмом и жсом в этом отношениии в том, что васм - это кросплатформенный стандарт. Код на васме выполняется не только в жс окружениях, но в специализированных аточенных только под васм. И он везде будет одинаково вести себя в соотвествии со стандартом. Жс движки же ведут себя каждый по-разному (отя три мейнстримных v8, spidermonkey и jscore почти одинаково на сегодня уже, но помимо них есть еще десяток другой движков, где никаких житов нет, или они другие - например житы от jvm). Ну и код на васме не пишут ручками, почти никогда - это таргетдля компиляторов. Хотя в жс тоже можно компилировать - тот же emscripten этим и занимается. Просто это не имеет смысла, если есть васм. Суть жса в его динамической природе. Цель васма - в числодробилках.
Большое спасибо, что подробно расписал. Как раз следующий вопрос у меня был бы про asm.js и LLJS и почему они дают выигрыш в скорости хотя исполняются тем же движком JS. Ну и да ты прав, всё же в wasm компилировать эффективнее, чем прямо в js или байткод, т.к. формат байткода у движков разный.
Запускается цикл, регестрируется 5 колбэков, программа заканчивается, ждется 10 мс, колбэки выполняются. Вопрос в том, как при этой регистрации хранятся захватываемы переменные, почему они общие выходят на 5 независимо зарегестрированных колбэков, почему когда цикл отрабатывает, он меняет значение захваченной переменной регестрируемого на ПРЕДЫДУЩЕЙ итерации цикла колбэка, если, по логике, захваченная переменная является частью колбэка, т.е. должно захватываться то значение, которое было у переменной при регистрации колбэка (по крайней мере для стековых переменных)?
>Запускается цикл, регестрируется 5 колбэков, программа заканчивается, ждется 10 мс, колбэки выполняются.
И какие же переменные "захватываются" в твоих колбэках?
>почему они общие выходят на 5 независимо зарегестрированных колбэков
Потому что во время вызова этих колбэков значение у них 5 в скоупе.
Ты сам себя путаешь, вешая переменные на глобальный скоуп. Оберни свой код в функцию и сразу станет понятно, где что куда захватывается.
Это просто так работает, почему голову ломаешь?
Хотя
> In JavaScript, closures are created every time a function is created, at function creation time.
Не понятно тогда какого хуя closures у нас created 5 раз вместе с функцией, но переменные не сохраняются в этом closure 5 раз почему-то
>Не понятно тогда какого хуя closures у нас created 5 раз вместе с функцией.
Действительно, загадка на миллион. Потому что блять циел создаёт замыкание на каждуб итерацию.
https://codesandbox.io/s/summer-hooks-3smpix?file=/src/styles.css
>Те же прокси
Ненужная хуйня для клиентского кода. Полезность проявляется только, если ты пишешь пакет для потребителей.
>ес модули
>книги
Лолблять. Нода относительно недавно их реализовала, а до этого "ес модули" были не более, чем сахарок для транспиляции. Так что любая книга, затрагивающая эту тему, априори будет неверными данными оперировать.
>Ненужная хуйня для клиентского кода. Полезность проявляется только, если ты пишешь пакет для потребителей.
Абсолютно согласен, но всё же хотелось бы по минимуму разобраться, как мобыхи, вуе и прочие реактивные библиотеки/фреймворки работают. Но пока не вижу ничего лучше чем пердолиться изучая исходники.
>Лолблять. Нода относительно недавно их реализовала, а до этого "ес модули" были не более, чем сахарок для транспиляции. Так что любая книга, затрагивающая эту тему, априори будет неверными данными оперировать.
Ну всё равно, можно же как то доступно изложить спецификацию, всю подковёрную кухню с парсингом, загрузкой модулей, циклическими зависимостями итд. Нигде не видел статей или книг где было бы до конца разжёвано. Остаётся как в посте выше - либо спецификация либо исходники движков, но от исходников движком мозги моментально закипают и хочется суициднуться.
>И какие же переменные "захватываются" в твоих колбэках?
i, c, msg
>Потому что во время вызова этих колбэков значение у них 5 в скоупе.
1. Почему тогда у i значение не в скоупе?
2. Где хранится скоуп и когда он создается?
>Ты сам себя путаешь, вешая переменные на глобальный скоуп.
Так никакой же разницы, локальный, глобальный
>Потому что блять циел создаёт замыкание на каждуб итерацию.
Почему тогда везде 5, если замыкание на каждую итерацию?
>Те же прокси
>Ненужная хуйня для клиентского кода
Меня спрашивали про js-овские прокси когда я недавно на дотнетчика собеседоволся. Я не ответил, и меня не взяли но я много чего не ответил.
>i, c, msg
Очевидно же твой пример противоречит твоим фантазиям. Тут только два исхода: или жаваскрипт в жопу насрал, или ты что-то не то нафантазировал.
>1. Почему тогда у i значение не в скоупе?
Оно-то как раз в скоупе каждой итерации цикла. В отличие от.
>2. Где хранится скоуп и когда он создается?
В памяти компьютера и создаётся он при любом конструкте вида {...}.
>Так никакой же разницы, локальный, глобальный
Абсолютно есть разница между локальным и глобальным скоупом. Твой пример - типичное ассинхронное дрочево в "ручных" циклах. И путает тебя незнание/непонимание поведения переменных, обьявленных через let в теле цикла.
>>19093
Ну так и i спокойно замкнулся. Разницу между i и двумя другими переменными знаешь?
let g = 0
for (let i = 0; i <= 5; i++) {
let l = g
setTimeout(() => console.log(`global scope: ${g}; for block scope: ${l}, ${i}`))
g++
}
почему i не сохраняет своё состояние в замыкании при каждом создании замыкания? это значит, что функция в замыкании только ссылается на переменную?
пост запросы на сервер отправляются
ну это будет выбиваться из общего стиля приложения
>почему i не сохраняет своё состояние в замыкании при каждом создании замыкания?
Потому что читай про лексические окружения, пидор.
Как, блядь, такое вообще могли утвердить? Они там совсем ебобо?
>Да и p1, p2, ..., pN нельзя собрать с помощью ...rest, ибо в конце хуйня будет
(match, ...p, offset, string) { ... }
Клиент жалуется, что в одном из писем разломалась верстка.
Поправьте и пришлите в ответе корректную верстку (ссылкой на файл).
Рассылка: http://static.directcrm.ru/webpage/polls/mindbox/test.html
Чего от меня хочут, буду рад советам мудрым
А может тебе ещё отсосать? Вёрстка писем - самые говна фронтенда, уж лучше легаси на жиквери писать.
1. Сначала выполняется инлайновый код.
2. g находится уровнем выше блока for, так как внутри блока for не объявляется локальная g, код внутри неё ссылается на внешний g
3. i и l объявляются внутри блока через let, следовательно, они не влияют на глобальный скоуп и видны только внутри блока
4. Внутри цикла у тебя создаются таймеры, которые выполняются после выполнения всего инлайнового кода. Т.е. это то же самое, что написать содержимое таймера после всего кода, поэтому g у тебя во всех таймерах одинаковое, его изменение, в отличие от цикла, не фиксируется по ходу выполнения цикла.
5. l и i при этом фиксируются, потому что let имеет блочную видимость и не хоистится, а значит внутри блока эти переменные ведут себя как внутри функции, т.е. под капотом каждую итерацию, каждый "вызов", код внутри блока знает значение переменной только текущей итерации.
Вот тебе пример, как можно всё сломать:
var g = 0
for (var i = 0; i <= 5; i++) {
var l = g
setTimeout(() => console.log(`global scope: ${g}; for block scope: ${l}, ${i}`))
g++
}
Нижний блок распидорашен, нет отступов, максимальной ширины и не центрировано, либо его достали из основной таблицы-контейнера.
Чем меньше библиотек, тем лучше. Лучше фетч задрочить, чтоб остальное не было необходимостью.
> Что по твоему должно быть "нормально"?
Например, передавать все p1, p2, ..., pN в массиве. Или вообще передавать в коллбэк один аргумент, идентичный тому, что возвращает .match() без флага g. Вообще отлично было бы, можно одну и ту же функцию использовать в обоих случаях:
const handleMatch = (match) => {
//...много кода...
};
handleMatch(
'someString'.match(/someRegexp/)
);
//позже:
const result = 'someOtherString'.replace(
/someOtherRegexp/g,
(match) => {
handleMatch(match);
return '[ДАННЫЕ УДАЛЕНЫ]';
}
);
>>19655
> (match, ...p, offset, string) { ... }
Это что вообще? Стрелочная функция должна быть? Ну и с каких пор ...rest можно не в конце ставить?
Спасибо анонче, ща пожру и буду пытаться сделать что-то с этим дерьмом, жаль что верстку я напрочь забыл
святой, большое спасибо
А, ну если муй используешь, тогда ставь сразу ещё бутстрап, тейлвинд, ангуляр и is-even. Ты у мамы дурачок? Какое отношение муй имеет к работе с сетью? Бери фетч и не выебывайся, тебе за глаза хватит
на мой взгляд mui - это набор лиших библиотек, т.е. я уже нарушил принцип имения малого количества библиотек
Значит тогда react query + axios.
https://github.com/Calvin-Huang/vue-amplitude
версии ограничь в package.json, убери ^ с пакетов
https://stackoverflow.com/questions/22343224/whats-the-difference-between-tilde-and-caret-in-package-json
>и некоторых уже нет
Такое может быть только если ты всякие малвари ставил в зависимости. Иначе npm хранит все версии пакетов.
Читать доку, как правильно передавать перменные из .env в бандлер.
Да вот нихуя, попытался ставить какой то древний аполо клиет альфа версии. Хотя локально у себя через install -f собирает с кучей ошибок, но сама сборка вроде рабочая, пытался закинуть и собрать на какой то онлайн помойке нихуя не деплоит
Не будет ничего в одном месте, лол. Нуксты/нексты/хуексты выступают в роли микросервиса для рендера шаблонов, всякие числодробильные очереди задач за пределами цикла запроса/ответа ты хуй на них обработаешь. В любом случае нужно будет отдельный сервер под БД лепить и веб-обёртку для него.
лол ну и кринж, не зря я с экспрессом работать решил и не смотреть даже всё остальное
На экспрессе писать и поддерживать чистый API сервер намного проще, чем хуярить жирнющие контроллеры для серверных шаблонов поверх. Тебе в любом случае придётся фронт мигрировать на один из этих серверных фреймворков. Как минимум нукст и некст позволяют билдить в полную статику, что для начала сойдёт.
всем добра
Больше практики, потом само заучится.
Кодварс это абстрактная хуйня, которая для формошлепства не очень то и нужна. А вообще эти вещи нарабатываются практикой.
Синдром пизды в поле from.
>ssr
>server-side rendering
Это значит, что ты html собираешь на сервере, а не что тебе сервер не нужен.
Ладно я пока не дошёл до этой темы
Нахуй нужен SSR вкратце? Чем его преймущества перед CSR. В каких случаях использовать?
Какой нахуй CSR? "SSR" - дефолтное состояние интернета, это клиентный рендер - соевая технология. А нужен он, чтобы поисковики индексировали твой очень важный продаванский сайт, так как им поебать на мегабайты жс говнеца в бандле.
Сайты с клиентским рендерингом плохо дружат с поисковиками. Гугл например вполне официально заявляет, что пессимизирует их в выдаче. Плюс летящий в бровзер бандл сам по себе огромен, что замедляет загрузку.
>При форматировании большого количества дат лучшим вариантом будет создание объекта Intl.DateTimeFormat и использование функции, предоставляемой его свойством format.
С ру вики, на англоязычной такого примечания нет, че за хуйня? Кто кого наебывает?
480x480, 0:22
Покажите мне пожалуйста стак и гит мидла фронтэендера на жс.
Да я пытаюсь выучить и устроиться работать.
Хотелось бы пару вопросов задать.
Первый: какой лучше выбрать хостинг и насколько это безопасно, учитывая что я буду там размещать файлы с API ключами от моего аккаунта на бирже.
Второй: у меня идёт работа на вебсокетах, но после выполнения условия для входа, идёт очевидно отписка и после переподписка на сокет уже с условиями для выхода из позиции. Я слышал можно сделать этот процесс лучше, через прокси, но я совсем не понял что имеется введу. Смысл в том, чтобы не отписываться. Ибо подписка на сокет это пауза в 2-3 секунды. Если где то есть нужная документация, буду благодарен.
Я с телефона, код кинуть не могу, да и модули с алгоритмами кидать бы не стал. Не думаю что в этом есть необходимость для моих вопросов.
Стрелочные функции впрочем максимально простые, просто возьми две одинаковые по смыслу функции, одну классик, другую стрелочную, внимательно сравни и готово.
А с async Await я как новичок тоже долго провозился. В целом создание асинхронной функции дело простое, сложно понять было как это использовать, не куда угодно же можно пихать Await сначала я делал ужасные матрёшки, из async функций внутри async функций, чтобы внутри них размещать нужные процессы и вызывать их через Await чуть ниже не выходя из области async функции. Но потом начал просто выносить их в модули и стало читабельно. Практикуйся и все получится.
Кто куда деплоит ноду, подскажите
Я так понимаю, что на нём, как и на нетлифае придётся костыль в виде serverless прикручивать?
Пытаясь учить сразу всё и сразу - будешь одинаково плох во всём. Не стоит распыляться на начальных этапах, учи что-то одно до приемлемого уровня, когда одну и ту же задачу ты сможешь решить как минимум тремя различными способами
>одну и ту же задачу ты сможешь решить как минимум тремя различными способами
это как типа map, foreach и for?
Под задачей я имел ввиду нечто более общее. Допустим какой-нибудь двойной инпут сделать, первое что в голову пришло
Мне кажется зачастую решение одно верное
А база данных у тебя где крутится? Фича хероку была в том, что там можно было на бесплатном тире подключить обрезанную, но функциональную постгресовскую бд в пару кликов. Альтернатива этой забаве - всякие хосты, которые сдают в аренду линуксовские сервера. Но в этом случае надо опять пердолиться с доменами и сертификатами. И конечно же не бесплатно.
>>23341
>нода
>github pages
>>23469 (Del)
Кот уже всё?
Объясните пж, как читать декоратор пропсов. В коде @Props и @Socket, там какой-то лютый синтаксис
У меня на Монго атласе
Если мне надо отправить юзеру какое-то сообщение после основного ответа на запрос, я оборачиваю отправку в setImmediate. Так вот вопрос - безопасно ли это в плане того, что не сможет ли юзер своим запросом вклиниться между этими двумя эвент лупами? (Текущим и тем, в котором будет вызван setImmediate).
>безопасно ли это в плане того, что не сможет ли юзер своим запросом вклиниться между этими двумя эвент лупами?
Нет. Делай нормальную архитектуру без подобных костылей.
>Если мне надо отправить юзеру какое-то сообщение после основного ответа на запрос
Сервер никакие запросы не сможет отправлять клиенту, он может только отвечать на запросы клиента.
>он может только отвечать на запросы клиента
Как там в палеозое, аякс уже изобрели?
Ясное дело, что связь на веб-сокетах, а в моей архитектуре сообщения от сервера вообще никак не увязаны с посылками от клиента. Каждый шлёт каждому что и когда захочет.
>>23626
Оказывается, пару лет назад я уже решил эту проблему, просто и изящно. Хотя, конечно, если юзер начнёт слать запросы в цикле, что-то, наверное, может быть отсеяно. Но пока не понадобится обработка таких случаев, усложнять не буду.
Я делаю пошаговую игру и игрок, например, может совершить ход своим существом. Сервер должен просчитать игру до её следующего стационарного состояния (т.е. ожидания следующего действия игрока), при этом некоторые процессы (например, пересчёт статов существ) лучше делать ПОСЛЕ завершения основных калькуляций, но ПЕРЕД тем, как игрок сможет сделать следующий ход.
>Как там в палеозое, аякс уже изобрели?
Аякс тоже следует клиент-серверной архитектуре.
>Ясное дело, что связь на веб-сокетах
Никакого отношения к твоему говнокоду не имеет. Вебсокет просто в покпоке высирает данные, а когда и где и их показывать - уже от клиента и сервера зависит. Так что твоё "отправить юзеру какое-то сообщение после основного ответа на запрос" превращается в "после ответа на запрос добавить сообщение в очередь сообщений, которое можеть быть обработается очередью, передастся потребителю (если он до сих пор подключен к каналу) и обработается им в его очереди задач когда-нибудь после обработки ответа клиентом и, если сильно повезёт, это оповещение отрендерится на активной вкладке браузера и пользователь в это время присутствует (если оповещения автоматом очищаются через интервал)".
Имя и телефон клиента (Яна, +79814458149), тип заказа и время исполнения( ASAP, 20.04 19:18), способ оплаты и итоговую сумму покупки (BANK_CARD_APP, 270) без налогов), его содержимое (один Айс-Латте 0,6 с сиропом Груша-базилик )
За 3-4к ты найдешь только макаку 70iq, который тебе сварганит твое говно на битриксе.
Да мне бы и макаку хотя бы. Там по сути осталось только настроить редактирование страниц товаров, поиск и рейтинг для товаров настроить
>редактирование страниц товаров, поиск и рейтинг для товаров настроить
В чем трабл? Делается за 2 дня если ты вкатун, и за пол дня если хотя бы джун.
Ну сочувствую. Оставь тут контакты, мб какой-нибудь вкатун возьмется за шабашку. Но качества жди соответствующего.
Качество там и так такое себе, к слову.
Телегу оставлю, вдруг и правда кто-то согласится: @berncastel_nipah
>использую Express+ReactJS+PostgreSQL
Чет не презентативное. Надо было брать NestJS+NextJS+ORM+PostgreSQL и на TypeScript все это писать с Unit тестами.
ну я вкатун, особо не разбираюсь. Мне посоветовали именно этот стак, так что я его и использовал.
>C ORM и нестом можешь пройти нахуй.
Студии с ними пишут.
>А некст для вкатунства не нужен.
Он утверждает что ему для курсовой.
А чё такого? Я придумал, у них код украду просто там 50 строчек хихихи
К сути вопроса, сделал сервер авторизации по этому примеру https://www.youtube.com/watch?v=fN25fMQZ2v0 с поправкой на свои особенности. Но возникли некоторые нюансы, которые я вообще нихера не могу понять. Когда и бэк и фронт запущены на локалхостах, то всё работает идеально, так как и должно. Проблема начинается при деплое. Корс настроил, то сё хуё моё, в общем работает, но, как грицца, есть 1 нюанс. В девтулсах нет куков (пик 1), но в самих запросах куки явно стоят. Сервер их видит, парсит, всё нормально работает, как и было задумано. Но почему я их не вижу в дефтулсе? На 3м пике то же приложение, но на локалхостах - куки есть. Но при этом с точки зрения функциональности они работают абсолютно одинаково
Посмотри консолечку/запросы и там тебе бразуер назовёт причину отказа.
>Но при этом с точки зрения функциональности они работают абсолютно одинаково
Не одинаково, локалхост - особый неймспейс, для которого браузеры отключают бОльшую часть требований, связанных с корсом.
Потому что реакт лютейшая параша, срыгнул оттуда на вью и теперь вспоминаю как страшный сон. Пушу в стейт и не просыпаюсь ночью от ужасов. Сейчас укатываюсь на нукст думаю забыть и про ванильный вью
Да в том-то и прикол, что отказа нет. Сервер куки ставит, клиент в запросах эти же куки отправляет, сервер их видит, нормально с ними взаимодействует
Отказы были в начале из-за SameSite, вот тогда действительно не работало, клиент в запросах куки не слал, а сервер при попытке их установить выдавал ошибку
Всё работает так, как будто бы куки есть, они и впрямь есть. Просто, такое чувство, не отображаются в девтулсах
На втором пике даже видно, как клиент в запросе указывает куки, которых нет в девтулсах
Попробуй добавить куки, доступные клиентскому скрипту, но устанавливаемые сервером.
Всё то же самое, сервер куки устанавливает Пик 1, я в ответе они есть, на клиенте ловлю test, test2 сделал чисто для проверки, как и ожидалось, он не поставился, вылезла ошибка. Но в девтулсах нема Пик 2
Сами куки на сервере Пик 3
На локалхосте ожидаемо все 3 ставятся и почему-то, сука, появляются в девтулсах
Ты шизоид. Зайди в настройках браузера, в разделе просмотра кук хоста, и посмотри какие куки у тебя стоят у origin'а, на который ты посылаешь свой кроссдоменный запрос, внезапно ты найдешь там все те куки, который у тебя якобы не отображаются.
Какого хуя ты вообще пытаешь увидить куки для домена A кглядя в куки домена B - не понятно.
Видишь, как графа называется?
Потом подумай еще раз, какой домен тебе установил куки. А в какой домен ты смотришь.
Когда в вуе саспенс завезут уже? А то прогрессивный фреймворк который еще и якобы "самый популярный" до сих пор не дошел до уровня свелте, который по фану пилится.
Куки ВСЕГДА устанавливаются для того на домена, на который ты шлешь запрос, а не с которого ты шлешь.
ты не можешь послать запрос с домена abc.com на домент xyz.com, и чтобы xyz.com тебе установил куку для домена abc.com. Все куки, который установит хост xyz.com будут установлены для домена xyz.com - вернее для origin'а - в понятие ориджина (источника) водит домен и протокол. Иногда так в ориджин попадают поддомены на том же домене, при определенны настрйоках.
Но у становить куку для чужого домена нельзя. Если ты хотя бы на секунду задумаешься, то поймешь какая бы это была брешь в безопасности.
Ты в своей продакшен весрсии делаешь КРОСДОМЕННЫЙ ЗАПРОС. Кука ставит, как положена. Но ты смотришь ее зачем-то на том домене с которого запрос посылаешь. Ее там быть не может.
На локал хосте же, ты когда тестируешь, ты делаешь НЕ кросдоменный запрос.
Про безопасность понимаю, не зря уже месяц с корсами ебусь, пытаюсь осваивать. Если даже правильный запрос на свой сервер не всегда с первого раза получается, значит левый запрос сделать ещё сложнее лол
Сейчас осталось только с доменом разобраться, локалхост как обычно работает Пик 1
site.vercel.app не работает, просто vercel.app тоже пробовал, та же ошибка Пик 2
Но уже хотя бы понимание приходит в каком направление двигаться, а не просто наугад тыкать, авось сработает, как в начале делал
То что это инстанс конструктора F
>Там всё легко и просто, а тут ебаный цирк шапито.
На жабе пустых строк не бывает и пользовательские инпуты не включают лишние пробелы/отступы?
да
Вот пусть и пиздует писать документы на XML.
Трим там только пробелы выпилить. Если пробелы валидное непустое значение, то просто !value или, если хочешь красиво if (!!value === false) {}.
>Почему запросы на сервер отображаются в консоль логах?
Их посылает клиент? Тогда почему ты считаешь, что не должны?
>но я не хочу это отображать в логах. Как это можно исправить?
Браузеры отображают неудачные запросы, которые они сделали, так что скорее всего никак.
Это сраньё называется GraphQL.
Это я так пошутил. На самом деле фронт должен знать, когда он авторизован, и не слать запросы в апи, которые зафейлят.
Какой-то ебунатый вопрос. Если ссущности никогда не удаляются, то естественно не надо. Значение D в CRUD знаешь?
Ну то есть нужно
1 - скриншот сам слайдер(шаблон)
2 - скриншот, то как у меня вышло
3 - скриншот код то как я это сделал
То есть у меня есть меню, relative и каждый элемент будет абсолютным с захардкоженными значениями left. Изначально проблема была в том, что без этого я просто не могу нормально расположить каждый элемент поверх другого, ведь absolute все сбивает и я просто понятия не имею как можно сделать по другому, в целом так не слишком уебищно и позорно, или слишком?
Пиздец, я крч в ахуе, хуй знает как это реализовать
Отсмотрел бОльшую часть курса Шварцмюллера по js, вроде более менее освоил БАЗУ, периодически применяю в работе, но зачастую не без гугла/стековерфлоу. По крайней мере простенькие скрипты теперь в состоянии писать/понимать + подключать и настраивать всякие свистоперделки. Помимо этого, есессна освоил кроссбраузерную верстку, хотя пишу в основном с помощью тейлвинда. Пробовал без него, получается, но пиздец насколько это медленнее, а сроки как правило горят всегда. В будущем возможно подтяну цсс и попробую вкатиться в препроцессоры. Суть не в этом.
Понял одно — в целом мне пиздецки скучно писать всякие слайдеры и подобное говно. Фетчить дату и парсить джейсоны, например, еще более менее интересно, но базовый фронт оказался довольно скучным. До этого немного пытался в реакт/некст, потому и пишу про работу с данными.
Короче досматриваю курс с болью, очень скучно, постоянно отвлекаюсь, когда нет практики — хоть вешайся, хз как часть про ооп смотреть, там вообще одна теория.
В связи с этим думаю попробовать потихоньку дрочить пыху. Стоит ли оно того? Думаю, что бэк будет поинтереснее, в т.ч. в связке с фронтом. На пыху выбор пал потому что это не настолько распиаренное говно как петухон, ей все еще довольно часто пользуются в СНГ + сам по себе язык показался несложным с довольно приятным с-подобным синтаксисом, очень похожим на js, а он мне по нраву.
Стоит ли перекатываться в очередной раз или все-таки досмотреть курс по js и потом трайхардить реакт, как я планировал ранее?
В идеале вкатиться бы в конторку, но мне и сейчас довольно часто стали заказы падать по верстке/вордпрессу, как начал этим плотно заниматься последние полгода.
На ютубчике всю годноту посмотрел
let a = new Array(1,2), b = new Array(3);
alert(a[0] + b[0]);
есть догадки, может из-за того, что одинаково заданы переменные? или же потому что скобки круглые, а не квадратные?
>b = new Array(3)
Конструктор с одним параметром задает длинну массива и оставляет элементы undefined. Проверь b.length, она равна 3.
три секунды в гугле, ненавижу js-парашу
Во втором варианте ты не задал значение в массиве, ты сделал обьект массива с длинной в 3 элемента
Считаю, что PHP — это нормально.
На должность PHP мидла в небольшую компанию, которая не является в веб-студией, но с очень интересными проектами даём тестовое задание написать на yii2 простенький новостной сайт с регистрацией и авторизацией используя базовые шаблоны yii2 (чтобы не думали над версткой) и в нем реализовать: CRUD для новостей и CRUD для уведомлений на страницу авторизованному пользователю и на почту, права доступа к базе данных, админку, партнёрку и обмен баннерами. Уведомления должны навешиваться на различные события. В качестве, примера в результате выполнения ТЗ должно быть уведомление, которое видит пользователь на странице при добавлении новой новости. Результат принимается на гитхабе или битбакете с условием, что название нашей компании нигде не будет фигурировать.
Я — ПМ, PHP не знаю и пишу на Python'e где-то часик в неделю. Мне кажется, что сеньор решит эту задачу достаточно быстро. Но вы даже не представляете какие гневные оды пишут соискатели: они требуют оплаты (обычно в районе 5 т.р.) за ТЗ, если они возьмутся его выполнять вне зависимости от результата — работа же выполнена; требуют только собеседования с испытательным сроком, требуют указывать им их будущую зарплату и тому подобное. То есть они именно требуют и пытаются ставить условия. При этом только некоторые из них дают ссылку на гитхаб и код у них там не ахти. В результате таким образом отсеивается порядка 99% соискателей. Остальные 1% решили сделать ТЗ и большая часть прошла до собеседования. В итоге так и не нашли действительно хороших и адекватных разработчиков, а проект закрыли.
Сейчас стартуем проект в новой области для нас и опять в поисках разработчиков и опять начались крики о том, что мы не правы. Какое ваше мнение как соискателя по отношению к там как мы? Всё правильно делаем или нет?
У меня недавно был удивительный случай тестового задания. Тестовое задание представляло из себя написание CRUD для иерархической структуры данных, приложение должно представлять из себя SPA/javascript на фронтенде, REST API/php на бекенде. На задание я потратил приличное количество времени, точно больше недели (всё 1-9 мая просидел), несмотря на то, что у меня были все наработки для реализация и я активно использовал копипаст. В итоге я получил фидбек, в котором было сказано, что тестовое задание в целом выполнено хорошо, но у них в фирме используется knockout и они смотрят в сторону Angular2, а я использовал React, поэтому готовы предложить мне сумму на четверть меньше, чем я запрашивал.
Всё бы ничего, но, во-первых, мне можно было это сказать ещё на этапе собеседования, а не заставлять меня решать тестовое задание, в котором не было сказано абсолютно ничего относительно рекомендуемого стека технологий. И, во-вторых, позиция была php-разработчик, поэтому немножко нелогично отказывать из-за отсутствия знаний по фронтедну.
Фронтедну.
>Я — ПМ, PHP не знаю и пишу на Python'e где-то часик в неделю.
Ты хоть высерок выше пытался на питоне писать?
>Какое ваше мнение как соискателя по отношению к там как мы? Всё правильно делаем или нет?
У тебя проект закрылся, пока ты единорога искал (на пыхе блять). Сам-то как думаешь?
Ну JS учить по MDN
Там есть учебник, неплохой
1. Но откуда оно берется? Я не нашел поля "constructor" у объекта или его прототипа.
2. Что такое [[PrimitiveValue]] и как оно хранится?
3. Что означает запись {'20'}? Это же не является валидным объектом.
>Но откуда оно берется?
Ниоткуда, тебя ебать это не должно.
>Я не нашел поля "constructor" у объекта или его прототипа.
Тебя ебать не должно. Виртуальная машина таким не оперирует, это сделано только для твоего удобства.
>Что такое [[PrimitiveValue]]
Внутренний слот объекта, хранящий в себе примитивное значение объекта. Что-то типа приватного поля класса.
>как оно хранится?
Как угодно. Тебя ебать не должно, т.к. ты в любом случае не взаимодействуешь с внутренними слотами.
>>26958
>Что такое [[PrimitiveValue]] и как оно хранится?
>3. Что означает запись {'20'}? Это же не является валидным объектом.
То, что это объект с примитивным значением в виде строки, очевидно же.
>1. Но откуда оно берется? Я не нашел поля "constructor" у объекта или его прототипа.
Ты его не видишь. А он есть
Название: blablabla
Описание: blablabla
как лучше сделать
если так
<span>Название:</span> -> <div>blablabla</div>
<span>Описание:</span> -> <div>blablabla</div>
хуйня? или пойдет
Так и говоришь - обозначает то-то, детали имплементации в стандарте не описаны. Говоря простым языком - ебать не должно.
спасибо
Ты прав. Значит я долбоеб.
А на пых-макаку-джуна какие тестовые у вас? Вообще для мидловой позиции это несложно, как по мне, просто долгая кропотливая работа.
>>26804
Мне больше нравится фуллстек проекты пилить с простым фронтом. Сидеть и запросы из БД ковырять действительно пиздецки скучно. Хз что делать короче.
Надо было на завод вкатываться, но я уже слишком долго в околоайти
я написал все тоже самое только вместо массива использовал строку и оно работает, есть идеии?
я хочу разобраться, почему строка обнуляется, а массив нет? То что он передается по ссылке я знаю почему ссылка не обновляется на пустой массив?
Искал. Просто просмотрел.
Есть общий внешний контейнер (белый фон), а внутри wrap-ящиеся карточки, и вот между ними должен быть еще контейнер, который просто выделял бы эти группы карточек цветом, и всегда соответсвовал бы ширине контента с небольшим padding. Как такое сделать?
Как переносить карточки если закончилась ширина я знаю. Как установить родительскому элементу ширину по его дочерним элементам я тоже знаю. Но вот как сделать одновременно и wrap и ширину родителя по врапящимся карточкам я не знаю. Т.е. если речь не идет об использовании js, тогда уже без разницы, решение найду, но не хотелось бы теребить код ради такого.
ну и вырвиглазная хуита, прощай зрение
Нужно, чтобы вот эта синяя рамка всегда автоматически по ширине подстраивались под ширину карточек внутри, но проблема в том, что эти карточки могут переносится по строкам флекс врапом, и поэтому автоматически я не знаю как ширину вот этого синего контейнера под ширину заполненных карточек адаптировать
Я так думал сделать, но проблема в том, что тогда не получится сделать как на нижней части картинки, ширина рамки должна быть общей для всех рядов
1)else вообще нельзя в коде использовать?
2)promise.all юзать только когда результат нужно получить?
>1)else вообще нельзя в коде использовать?
Чего блять, иди проспись и прекращай читать инфоцыганскую парашу
>2)promise.all юзать только когда результат нужно получить?
Какое блять отношение Promise.all имеет к получению результата? Доки открывать пробовал?
>Чего блять, иди проспись и прекращай читать инфоцыганскую парашу
ты не прав сейчас
>Какое блять отношение Promise.all имеет к получению результата?
ну смотри массив можно просто обойти, а можно результат с него получить
>ты не прав сейчас
Понятно, тогда читай инфоцыганскую поебень дальше, нахуй ты пришел сюда чето спрашивать?
>ну смотри массив можно просто обойти, а можно результат с него получить
С массива нельзя ничего получить, поехавший, массив - это просто массив
>С массива нельзя ничего получить
Ну наверное можно, потому что у массива есть внезапно методы, не говоря уже о прочих конструкциях типа for of или обычных циклов. Давай отдыхай, ламер
Чмо блять опущенное, давай, показывай, как ты собираешься "получить результат с массива". Дебил сука ебаный, ты русский язык в школе прогуливал? Посрал тебе в пасть, сглатывай
Нах ты так бахнул братан, получать результат с массива можно с помощью почти любого из методов массива, например map создаёт новый массив и заполняет его полученными результатами после выполнения функции с каждым элементом массива. А метод forEach ничего не возвращает, а просто обходит массив. Всему вас учить надо
Примитивы в современных движках - это тегированый указатель на элемент в пуле объектов определеного типа.
При присваивании.передаче копируется этот указатель. Размер указателя 32/64 бита в зависимости от архитектуры.
Значения Small Int (31 битные целые на 64хбитный архитектуре, и 30-битные на 32х битной) хранятся прямо в указателе. Числа большей разрядности или дроби или bigint хранятся в пуле.
Строке и символы тоже хранятся в пуле.
В пуле значения каждого типа присуствует в единственном экземпляре. Исключения составлюят строки - когда от строк берутся подстроки, когда они конкатенируются, движок может строить дерево смещений вместо копирования, для проиовдительности. Иногда это может влиять на память - например если взять подстроку от большой строки, в памяти отсанется вся исходная строка. Движок сам решает когда редучировать дерево.
Пулами управляет сборщик мусора, когда на объект в пуле больше не остается указателя он удаляется.
Отвечая по существу на твой вопрос - при предаче или присваивании куда либо любого значения, примитив это или объект, в js коипруются только указатели. В своременных реалихя это всегда 8 байт.
Указатели вообще не сжимаются. Тегированный указатель - это уже сжатое значение, которое описывает тип и адрес (или значение) чего-либо.
Здесь описана логика в v8 https://v8.dev/blog/pointer-compression
Но в spidermonkey и javascriptcore на сегодня принцип тот же самый.
Ну и теггированные указатели использовались с самого начала, еще в Mocha. Именно поэтому typeof null == 'object', потому что первые версии оператора typeof опирались на тег в указателе, а и у null и j,ject тег 0.
Скажи, ты траллируешь или ты реально настолько туповатый? "Результат с массива" получить нельзя, потому что понятие массива не предусматривает никаких результатов. То, о чем ты говоришь, является результатом операций, производимых над массивом, и, более того, не имеет никакого отношения к изначально заданному вопросу про то, что "Promise.all надо использовать только когда хочешь получить результат". Какое блять отношение получение какого-то результата имеет отношение к Promise.all? Прекрати уже пускать подливу в трусишки
ну я работаю с массивом и получаю с него результат ну точнее в моём случае я его просто прохожу я хз как тебе ещё объяснить, ну у меня forEach работает без Promise.all я уже затестил, от вас ответов нормальных не дождёшься ёбаный вротик
>ну я работаю с массивом и получаю с него результат
Еще раз, дебич одноклеточный: ты не "получаешь с массива" никакой результат, эта фраза тупо лишена смысла; ты выполняешь операции над массивом, и получаешь ты результаты этих операций. Научись разговаривать по русски, а не на ебаном подпивасном суржике, если не хочешь всю жизнь пробыть вкатуном (хотя судя по уровню твоего умственного развития, тебе в ойти вообще не место)
>у меня forEach работает без Promise.all
Ты сам вообще понимаешь, что ты несешь? Какая нахуй связь между forEach и Promise.all? Пиздец, иди книжку почитай какую-нибудь, пока что ты высираешь поток невнятной околесицы, я даже не знаю, как это комментировать блять
А вообще - да, разумно отключить, какой смысл их деплоить?
Да
1)else вообще нельзя в коде использовать?
Можно. После if.
2)promise.all юзать только когда результат нужно получить?
Его используют с промисами, чтобы дождаться выполнения всех промисов.
Неееееет, элс нильзя испалзавать, мне так скозали на курсе "вкатываемся за три дня от вазгена ашотовича"
>Скриптом убирай тесты после билда
Братишка, зачем ты советуешь говно? Он ведь щас реально пойдет так сделает, а тебе потом разбираться в его ебнутых пайплайнах. Не надо так
Я вообще правильно понимаю, что Math - это объект, у которого мы дергаем функции, а Date - сам по себе является функцией (конструктором)?
Что тогда с точки зрения JS означает вызов Date.now()
Никак, потому что это мешанина из легасиговна. Date ближе к обычному классу, просто у него ещё реализована сигнатура вызова. А Date.now() - типичный вызов статичного метода.
А зачем в них разбираться? Написал конфиг для тестов, и никогда туда не заглядываешь, за исключением случаев, когда с тестами хуйня. Все-таки лучше немножко насрать один раз в окружение разработки, чем постоянно подсирать новые скриптики в окружение деплоя
function Date(...args) {if (!(this instanceof Date)) return new Date(...args) }
Никак, лол. Если ты заэкстендишь билтины с такими сигнатурами, то подкласс теряет эту сигнатуру.
>>28654
>Написал конфиг для тестов, и никогда туда не заглядываешь
Фантазии свидетелей TDD. На деле же ты будешь постоянно синхронизировать этот конфиг с основным, и перепиливать его при любом обновлении зависимостей, так как в этой ебанине всегда что-нибудь да отвалится.
>чем постоянно подсирать новые скриптики в окружение деплоя
Учитывая, что запуск тестов является частью пайплайна, разницы нету. Рано или поздно один хуй процедура билда выльется в отдельный каштомный скрипт.
Ну разница таки есть, все-таки отдельный конфиг - это стандартное и прямолинейное решение, а очередной каштомный скриптик по вычистке говна из жопы мало кто захочет читать
:v-if="table_data.length"
Сап, как решается проблема потери контекста в функциях?
Использованием стрелочных функций. Учебник открывать пробовал уже?
Целью всего изучения до этого был переход к библиотекам react и ts, но посколько я парень еще не совсем опитный, часто туплю как в написании коде так и "сленге" людей что приподнялся материал.
Хотел бы уточнить есть какие-то мотоды что могут упростить вхождения в мир этих lib или ресурсы которые могут подробно на пальцах объяснить материал и первые шаги.
Не только. Ответил на твой вопрос?
window.open(url.href);
Дело в том, что в переменной url лежит ссылка по типу:
<a class="list-group-item list-group-item-action" href="https://www.google.com/" target="1670152189c1">https://www.google.com/</a>
И windows.open может открыть ее и без указания атрибута href, но меня интересует, когда я указываю его именно команде window.open она его видит? Или же игнорирует и открывает именно саму переменную без атрибута?
В сети, что-то я не нашел таких примеров.
Я нихуя не понял, честно говоря, и в первую очередь не понял, зачем ты используешь window.open
Что ещё можно придумать? Как всё разделять нормально, блядь?
Сейчас сами данные, методы и евенты всяких текстовых полей и кнопок хранятся в массивах как объекты, объекты гуя. Рест через объекты-агенты-обсерверы, на которые подписываются объекты гуя.
Есть ссылочное дерево в виде массива с ключами объектов гуя, но хуй знает даже, оно вообще нужно? Оно почти полностью повторяет функционал скриптов инициализации по сути.
Пиздец какая-то каша и я не понимаю вообще как всё организовать нормально чтобы заебись было и быстро перепроектируемо всё это. Как scheme-driven как-то, чтобы схема просто вставлялась в ссылочное дерево? А как создавать объекты-агенты-обсерверы тогда? Тьхфу, блядь, шизофрения.
Голову, при формулировке вопросов.
>может принимать атрибут
В js очень маленькое колиичество функций принимают аттрибут (Attr). В твоем случае аттрибутов вообще нет.
>в переменной url лежит ссылка
В JS нет ссылок. Есть строка, а есть объект класса HTMLAnchorElement.
>И windows.open может открыть ее и без указания атрибута href, но меня интересует, когда я указываю его именно команде window.open она его видит? Или же игнорирует и открывает именно саму переменную без атрибута?
>В сети, что-то я не нашел таких примеров.
Потому что ты не искал, а решил сразу посеменить итт.
На, читай. Тут все описано, в том числе ответ на твой вопрос: https://html.spec.whatwg.org/multipage/nav-history-apis.html#dom-open-dev
Есть ли интересное жс коммьюнити/сосаити, где можно поговорить на тему отладки и RnD? Лучше, если англоязычное. Есть материал, который хотелось бы не только читать, но и публиковать. От пресных медиумов и dev.to уже тошнит, на жидхабе летят страйки за нарушение копирайта.
>В js очень маленькое колиичество функций принимают аттрибут (Attr). В твоем случае аттрибутов вообще нет.
Есть. HREF это атрибут HTML, из моего поста это и так понятно. JS работает с HTML, и из моего поста также понятно, что HREF - имелось в виду атрибут HTML. Пруф ↓
https://www.w3schools.com/tags/att_a_href.asp
>The href ATTRIBUTE specifies the URL of the page the link goes to.
>В JS нет ссылок. Есть строка, а есть объект класса HTMLAnchorElement.
А речь шла не о JS, посмотри код из моего поста с тегом А, это код HTML а не код JS
https://www.w3schools.com/tags/tag_a.asp
>The <a> tag defines a HYPERLINK, which is used to link from one page to another.
>Потому что ты не искал, а решил сразу посеменить итт.
Ну да, так и есть, но ты начал к словам придираться, хотя из поста и так ясно, что речь идет не о JS, а о способе JS обработать HTML объекты. Так что в моем посте HREF это действительно аргумент и ссылка там настоящая(в тэге "A").
Короче можешь не отвечать, в этой помойке и так нихуя помощь не оказывают, а только ищут способ доебаться на пустом месть, тем самым повысив свою самооценку, типа я такой умный, а если ты неправильно термин сказал, я прикинусь что нихуя не понял, чтобы потом правильными терминами щеголять, и теории расписывать, вместо простого ответа на вопрос или дачи ссылки с объяснением. Легче срач устроить из ничего, чем тупо ответить, да или нет.
> HREF это атрибут HTML
Да. В HTML нет некой структуры "window.open", так что делаем вывод, что речь идет про JS, а не про HTML.
>JS работает с HTML
JS НЕ работает с HTML. JS работает только с обобщенным интерфейсом, называемым DOM. И все возможности работать напрямую с HTML (innerHTML, DOMParser) подразумевают работу именно с DOM.
>речь идет не о JS, а о способе JS
Ладно. К психиатру ходил уже?
>HREF это действительно аргумент
У тебя аргумент строка, а не href. Иди учи синтаксис языка, в любом учебнике одна из первых глав.
>Короче можешь не отвечать, в этой помойке и так нихуя помощь не оказывают, а только ищут способ доебаться на пустом месть, тем самым повысив свою самооценку, типа я такой умный, а если ты неправильно термин сказал, я прикинусь что нихуя не понял, чтобы потом правильными терминами щеголять, и теории расписывать, вместо простого ответа на вопрос или дачи ссылки с объяснением. Легче срач устроить из ничего, чем тупо ответить, да или нет.
Дегенерат, в ссылке, которую я тебе скинул максимально доходчиво написано, что происходит при вызове метода window.open, включая то, откуда из HTMLAnchorElement появляется строка с урлом. Приучайся читать стандарт при возникновении вопросов о том, как что-либо работает, а не семенить на аниме форуме и не читать хуйню из непонятных источников вроде
Бля, как я и говорил выше, ты отвечаешь не с целью дать ответ на вопрос, а тупо доебаться, по типу, ты написал ться без мягкого знака, поэтому, я притворюсь что нихуя тебя не понял, и отправлю на грамота.ру, чтобы унизить тебя и тем самым повысить свою доминантность.
Вместо обычного ответа на вопрос, переходишь на личности, унижения, и оскорбления. Денегерат ебаный здесь ты, потому что развел специально срач на пустом месте, чтобы показать здесь, какой ты неебацо крутой, и что все термины знаешь и других оскорбляешь за неверное применение этих самых терминов. Иди в пизду короче, сын шлюхи, хуево быть тобой, куском говна, который сидит здесь 24/7 и выискивает анонов, которые, по его мнению, вопрос не правильно зададут, чтобы после доебаться до них, вместо простого ответа. Ты просто конченный выродок, хуесос и пидарас, просто смирись с этим фактом, хуйло.
Можешь в ответе пиздеть про батхерт, но со своей стороны могу с уверенностью сказать, что в моем первом посте я никого здесь не унижал и не оскорблял, а просто задал вопрос, в ответ же, от конченного ебаната, то есть тебя, получил шквал оскорблений просто так. Вместо простого ответа на вопрос, который адекватный человек, который разбирается в теме, понял бы после первого прочтения. Так что соси хуй, быдло ебаное! Я твой высер на мой пост, даже читать не буду, так что сри здесь хоть до конца треда, о том какой ты умный, пне посрать.
Алсо
>посеменить итт.
Ты хоть значение то знаешь этого слова, дебил опущенный? То был мой первый пост ИТТ, ни при каких условиях нет смысла семенит в этой ситуации.
В довесок скажу что - https://www.w3schools.com
Это отличный учебник для различных языков программирования, и то, что всякий навоз из под ног, вроде тебя, что то там пиздит на него, хуже от этого он не станет. Всем похуй, дегройд ебучий.
>Бля, как я и говорил выше, ты отвечаешь не с целью дать ответ на вопрос
Нет дружок, я ставлю целью ответить на твой вопрос и параллельно доебаться.
>Вместо обычного ответа на вопрос, переходишь на личности, унижения, и оскорбления.
Я дал тебе ответ на вопрос. Семенить продолжаешь тут только ты.
>Денегерат ебаный здесь ты, потому что развел специально срач на пустом месте, чтобы показать здесь, какой ты неебацо крутой, и что все термины знаешь и других оскорбляешь за неверное применение этих самых терминов.
Да, потому что ты реально недалекий. Тебе уже второй анон пишет, что ты не прав, но ты свою палку гнуть продолжаешь.
>Иди в пизду короче, сын шлюхи, хуево быть тобой, куском говна, который сидит здесь 24/7 и выискивает анонов, которые, по его мнению, вопрос не правильно зададут, чтобы после доебаться до них, вместо простого ответа. Ты просто конченный выродок, хуесос и пидарас, просто смирись с этим фактом, хуйло.
Так чем тебя ответ мой не устроил? По существу отвечай. Если не понимаешь что написано в стандарте - задавай соответствующий вопрос.
>>31363
>Это отличный учебник для различных языков программирования, и то, что всякий навоз из под ног, вроде тебя, что то там пиздит на него, хуже от этого он не станет. Всем похуй, дегройд ебучий.
Плохой это учебник. Переполнен плохими практиками и устаревшими технологиями, как старт подойдет, но если ты пытаешься хотя бы джуном вкатится лучше его избегать.
>вы все токсики, а поэтому ваши советы не советы, а спеки не спеки
Ничего себе предъявы. Вы к нам с вумен.ру? Добро пожаловать, поешьте говна.
> JS работает с HTML
JS работает с DOM.
>что HREF - имелось в виду атрибут HTML
У HTML нет "аттрибута" HREF. Ты наверно имел ввиду интерфейс HTMLAnchorElement.
>Короче можешь не отвечать, в этой помойке и так нихуя помощь не оказывают, а только ищут способ доебаться на пустом месть, тем самым повысив свою самооценку, типа я такой умный, а если ты неправильно термин сказал, я прикинусь что нихуя не понял, чтобы потом правильными терминами щеголять, и теории расписывать, вместо простого ответа на вопрос или дачи ссылки с объяснением. Легче срач устроить из ничего, чем тупо ответить, да или нет.
Конечно же проблема в том, что все не отвечают на твой криво поставленный вопрос, а не ты являешься косноязычным дебилом.
>Можешь в ответе пиздеть про батхерт, но со своей стороны могу с уверенностью сказать, что в моем первом посте я никого здесь не унижал и не оскорблял, а просто задал вопрос, в ответ же, от конченного ебаната, то есть тебя, получил шквал оскорблений просто так.
Тащемта тот пост вполне оскорбил меня уровнем тупости.
>>31363
Он написан на устаревшем кривом высерке от майкрософт, так что в контексте следования стандартам веба он абсолютно не авторитет.
>w3fools
>хороший учебник
Аж подливу расплескал с тебя. Продолжай заниматься по нему, так и останешься дурачком, который двух слов связать не может, шлёпает дивы и копипастит с SO
Чтобы заставить тебя десять раз подумать, нужно ли тебе добавлять ещё одно поле в глобальный стейт, а потом подумать ещё десять раз
Как я понял мне надо создать WriteStream на пути к файлу, вызвать соснолечку через spawn("pg_dump", ["zalupa"]) и как-то передать врайтбл покпок в неё. Только блять примеры какой-то вырвиглаз с перекидыванием stdin/stdout в ивентах туда-сюда.
чего блять сложного в редаксе, одноклеточный?
Это конечно точечный ответ на конкретную команду, но мне нужно знать, как реализовывать башевские операторы, типа "|", ">", "<", на нодовских потоках.
> башевские операторы, типа "|", ">", "<"
оперируют stdin/stdout, так что, должно быть, ты нашёл корректные примеры.
Вебмакакерство почётно, тут всё реактивно, евентово, функционально и вообще интересрно. Это дебилы-жависты пытаются перефорсить и свою ооп-боль на нормальных людей спихнуть.
В ЖС никогда не было концепции everything is an object, ты что-то путаешь. Есть боксинг, за счет чего достигается поведение обжект-лайк, но это не взаимозаменяемые явления.
Ну ок, возможно я чего-то не понимаю. Поясни тогда за понятие примитива
При копировании иммутабельность не нарушается, ты не изменяешь значение копипуемой переменной.
А под капотом у тебя глобальное пространство всех используемых примитивных значений, которые копируются по ссылке для оптимизации количества выделяемой памяти.
>При копировании иммутабельность не нарушается
Если бы копировалось - то не нарушалась бы. Вот только нет никакого копирования, поэтому от мутабельности пришлось отказаться.
Под капотом тащемта массив байтиков, хуй знает про какие переменные и ссылки ты говоришь.
Не смешивай теорию с фактической имплементацией. То, что на практике примитивы в в8 копируются по ссылке, не означает, что по стандарту примитивные, они же значимые типы, копируются по значению. В противном случае можно смело утверждать, что Web API является неотъемлимой частью жс, или что жс многопоточный, потому что в8 многопоточный.
Очевидно, что там несколько уровней абстракции. Ты же не говоришь, что под капотом скомпилированного софта байткод?
Хули ты тогда залечиваешь про под капотом? На уровне написанного жс кода нет никакого "глобальное пространство всех используемых примитивных значений, которые копируются по ссылке для оптимизации количества выделяемой памяти". Есть только примитивы и ссылочные типы.
И в чем же его отличие от примитивного,в таком случае? Ведут они себя одинаково, с точки зрения пользовательского кода.
Ну даже не знаю, наверно в том, что по ссылке передается?
var v = new val({a: 1});
v.someProp = 123;
var v2 = new val({a: 1});
console.log(v2.someProp) // угадай вывод шизик припадочный
Ты действительно такой узколобый или прикидываешься? Ну на. Угадаеш результат?
Ты накатал такой пример только лишь ради попытки неудачного троллинга. С таким же успехом можно утверждать, что любой объект, который имеет в цепочке метод valueOf/toString - это примитив.
Скучно же.
>который имеет в цепочке метод valueOf/toString - это примитив.
Нельзя. Потому что иметь методы для кастования в определенный тип недостаточно для того, чтобы вести себя так же как примитивный тип.
Наверно уже обсуждали будущий завоз типов в JavaScript. Но меня переполняет радость
А ты уже прочитал количество предыдущих завозов типов в javascript, и причины их отклонения, прежде чем радоваться?
Да не трясись ты так.
Не взлетит.
Так это не я смешал, это смешали те, кто отказались от мутабельности из-за того, что ничего никуда не копируется.
Двачую. Собственно, с этого я начал вопрос, но тут же набежали "ря, копируется, ря на стеке". Хотя не копируется и не на стеке, а с точки зрения меня, пишущего код - принципиальная разница не понятна.
>Собственно, с этого я начал вопрос
Ты не начал вопрос, а захотел выебнуться знанием кишочков v8. Плюс ещё высрал говнокода. Однобуквенные аргументы, мутация через __proto__ (не подскажешь, почему просто не использовал "Object.defineProperty("prototype", {...})" ?), перегруженные конструкторы, возврат из конструкторов. Ну а за Object.assign() внутри классового конструктора вообще пиздить надо.
Типичный поехавший пердолик.
>Object.defineProperty("prototype", {...})
Мог дальше не продолжать. Все поняли твой уровень знания языка.
Мне вот интересно, ты на работе реально таким пердолингом занимаешься? Если да, то что в твои задачи входит? Или ты просто увлекся изучением всякой кринжовой хуятины?
Ты сейчас на полном серьезе назвал знание об устройстве своего инструмента - кринжовой хуятиной?
Да, на полном серьезе. Эта хуйня нужна в 0.1% задач и даже если знать её устройство, то оно забудется, потому что задач на использование это говна просто нет в природе. По крайней мере - сейчас.
Ну например тут на харкаче, если пост пустой, то джаваскрипт не пропускает отправку. Можно как-то это изменить или, например, убрать какую-нибудь проверку. Ну в общем, модифицировать код, который выполняется?
>джаваскрипт не пропускает отправку
Ты уверен в своих словах? Не думал о том, что пост отправляется, но приходит ответ о том, что пост не опубликован по причине спам-листа?
Т.е. ты просто формошлеп-любитель пердолинга, я тебя понял.
Ловко ты сейчас аннигилировал всех существующих разработчиков библиотек, фреймворков и движков. Их значит как бы нет, но задачи их выполняются.
Пример библиотеки, в которой используется предложенный тобой пердоллинг с FinalizerRegistry или заменой прототипа на прокси предоставить можешь?
>А на сайтах можно как-то изменять JS код, имея доступ только как пользователь?
Да, можно. Гугли greasemonkey, tampermonkey и подобные расширения.
>Можно как-то это изменить или, например, убрать какую-нибудь проверку.
Можно. Только сервер то все равно проверит.
Пример разработчика DX-продуктов жс, который не знает как устроена память в жс, ее управление и объектная модель, привести можешь?
Пример предоставишь или ты только пиздеть горазд?
Такого формата конечно можно поменять, но сервер в любом случае может (и должен) проводить валидацию повторно.
Я не знаю конечно, я сам с бэка перекатываюсь, но мне кажется такие макаки должны быть, которые только у клиента проверку сделали и всё, а с базой особо не заморачивались. Ну я простенькие сайты какие-нибудь имею в виду.
>простенькие сайты какие-нибудь имею в виду
Двач далеко не простенький сайт в плане валидации. А так да, вполне.
Да вроде в теории должно быть предельно просто:
- ограничение по количеству символов
- ограничение по размерам и MIME-типам файлов
- валидация капчи
- ...?
Нет. А можно ВКРАЦИИ какие были причины?
такое явление, как вайп тредов наблюдал? Попробуй сделать защиту от него. Хотя бы обмозгуй.
Для того же, для чего сейчас используют тупо скрипт. Только не нужны будут транспайлеры
Ну это уже не совсем про валидацию. Этак ты и баны в валидацию запишешь
Манёвр на засчитан. Давай оправдывайся, нахуя ты дёргал __proto__, но при этом используешь вполне современные фичи, языка типа приватных полей.
Ты знаешь "устройство инструмента", но при этом не умеешь писать на нём код?
Внешняя и внутреняя иммутабельность. Если знаешь питон, то жир будет примерно как ("bar", ["foo", 1])
*это
Фича браузерной соснолечки, которая принтит по референсу. В ноде уже такое не пройдёт, так как там обычный сериализуемый поток ввода/вывода. И да, привыкай вызывать JSON.stringify() в таких случаях.
Это постинкремент. Значение возвращается до того, как произойдет присваивание результата сложения с единицей.
Всегда удивляло, почему в ноде принт в сонсоль синхронный. Это же I/O, вывод в который бай дефолт должен быть асинхронным.
Так он не сихронизирован с stdio по умолчанию.
есть коммит после которого я наговнокодил и хочу вернуть файлы к прошлому коммиту
<3
Пчел, учись спрашивать такое у гугла, на ответах в треде далеко не уедешь.
Потому что ты в setTimeout передаешь не функцию, а результат ее вызова. Тебе для начала надо подтянуть знания семантики самого js, прежде чем на евент луп переходить.
Твой код в 10 строке должен выглядеть так setTimeout(cb, 3000, 'some result') чтобы он повел себя, как ты планировал. Сейчас твой код совершенно бессмысленен.
Нет
Да.Только я бы еще уточнил что
>в качестве упрощения, ожидаем успешного завершения задачи (.then)
Когда мне надо удалить объект из массива, я для безопасности (на случай, если удаление будет внутри forEach по массиву) обычно пишу:
this.expired = true; // чтобы сразу предотвратить использование объекта
setImmediate(() => { / удаляем здесь этот объект / }) // чтобы действительно удалить объект из массива
Так вот вопрос: если я так запланирую удаление тысячи объектов, например, не засру ли я ивент луп маленькими задачами, каждая из которых будет занимать целый тик? Или я не понимаю, как работает нода, и фиксированного по времени минимального тика у неё нет?
>Твой код в 10 строке должен выглядеть так setTimeout(cb, 3000, 'some result')
Так никто не пишет, лол, а значением третьего аргумента в setTimeout можно валить синьоров на собесах.
Вот что ему надо:
setTimeout(() => cb('some result'), 3000)
В общем, провёл замеры.
У меня примерно три миллиона immediate'ов срабатывает в секунду, так что никакого минимального тика, похоже, нет.
По моему опыту, фронтэнд и вёрстка всегда идут рука об руку, как try и catch, как Бивис и Баттхед, как белка и орехи. Тебе и будучи реакт-синьором регулярно придётся трахаться с sass.
Вообще, вот тут, например, пишут, что разбрасывание задач с помощью setImmediate - хороший тон даже с учётом естественного оверхеда, так как позволяет проходить другим запросам между иммедиэйтов.
https://nodejs.org/en/docs/guides/dont-block-the-event-loop/
Хм, а я вообще не знал, что когда immediate создаёт immediate, между ними что-то может вклиниться.
10 лет на ноде сижу при этом.
потому что версталой может быть даже чурка из аула, и платить ей надо будет три копейки. готов конкурировать с абдулами за нищенскую зп?
>То есть стоит попробовать и получить опыт?
Не знаю, я как-то не встречал отдельных верстальщиков, были просто фронты - кто был послабее в js, получал больше вёрстки.
>А сам как вкатился?
7+ лет пилил игры на js для души, а когда наконец решил прийти в галеру на собес, там все офигели с моих знаний js и поржали с моего незнания вёрстки (игры-то на webgl чисто делал). Терь получаю под сотку, хотя все говорят, что пора бы уж просить больше.
> If you are calling an API that might do something expensive, double-check the cost. Ask the developers to document it, or examine the source code yourself (and submit a PR documenting the cost).
Дивный манямир. Просто спроси у пейсбука стоимость рендера реактовского серверного компонента, лол. Или обёртки для бд/сторонней API.
Теперь я, кстати, понял, почему между иммедиэйтами может вклиниться таймер.
Микротаски тоже интересная штука, и оверхед у них, судя по замерам, чуть ниже, чем у макро.
Ты не понял.
т.е. что лучше
styled.div`
isCondition ? top: '45px' : 'top :'60px'
`
или
styled.div`
top: ${topIndent}px
`
Джун это минимум год коммерческого опыта. Для таких нормально с поиском работы. А вкатыши нах не нужны
Я в своём проекте выставил так:
до 5 мс - отлично
5-10 мс - хорошо
10-20 мс - так себе, но для редких операций пойдёт
больше 20 мс - надо оптимизировать
Лучше как проп передавай в отдельный компонент, внутри которого он будет через инлайновые стили выставлять.
Для начала попробуй почитать документацию, дебич.
>The default sort order is ascending, built upon converting the elements into strings, then comparing their sequences of UTF-16 code units values.
У тебя эта проблема будет в любом языке.
>везде печатать компаратор
Собственно, да.
Чтобы не держать в голове дефолтное поведение методов, почти всегда лучше задавать параметры явно.
Да заебись же: что строки, что числа - всё одинаково сортируется.
А вообще, возьми себе либу с natural sort (а еще лучше напиши сам) и всегда используй.
>У тебя эта проблема будет в любом языке.
Про сортировке строками - будет.
Вот только не все так делают.
>У тебя эта проблема будет в любом языке.
Я до этого сишарп учил, и там оно сортируется ожидаемым образом, а не конвертит числа в строки, там вообще можешь сортировать как хочешь, хоть по возрастанию, хоть по убыванию, хоть по полю, хоть по функции - и все без единого компаратора. Намного все продуманнее (а еще есть дженерики и методы расширений).
>Про сортировке строками - будет.
Отсортируй-ка массив бигинтов, флоатов и строчных представлений чисел (которые могут и бигинтами и флоатами) в одном массиве.
>>38194
>Я до этого сишарп учил, и там оно сортируется ожидаемым образом
Какой блять ожидаемый образ, если тебе прямо в документации и спеке говорится, что по дефолту значения кастятся в строку?
const StyledItem = styled.div``;
const Item = (props) => {
const [highlighted, steHighelighted] = useState(false);
return <StyledItem onClick={()=>{setHighlighted(true)}} style={{top: highlighted ? '0px' : '10px'}}>{props.children}</StyledItem>
}
Не говно, а стайлед компонент.
Это самый оптимальный вариант. Можешь через пропсы прокидывать напрямую в твой смтайлед, но это медленно + на самом элементе в DOM появится твой проп, если ты конечно не укажешь предикат.
ПЕРЕКАТ >>2538621 (OP)
ПЕРЕКАТ >>2538621 (OP)
ПЕРЕКАТ >>2538621 (OP)
ПЕРЕКАТ >>2538621 (OP)
ПЕРЕКАТ >>2538621 (OP)
ПЕРЕКАТ >>2538621 (OP)
ПЕРЕКАТ >>2538621 (OP)
ПЕРЕКАТ >>2538621 (OP)
ПЕРЕКАТ >>2538621 (OP)
>Какой блять ожидаемый образ, если тебе прямо в документации и спеке говорится, что по дефолту значения кастятся в строку?
Очень простой. Метод же называется sort(), а не sortAsString().
>>38348
>любой метод - расширение.
Я чисто про прикладную возможность определить метод, который даст возможность делать 'какая-то строка'.sendToConsole(). Очень удобно (и наглядно) всякие конвееры лепить, без необходимости писать килотонны оберток на каждую сущность.
Интересно, спасибо, почему-то в доке я вообще такого варианта не видел
Подожди, но так же получается если мне допустим стиль поменять надо, то мне придется прыгать от одного файла к другому так как стили в двух разных местах, такое себе же?
Если тестовое делаешь хорошо, знаешь базу, от curry условно не объмякнешь, и типизацию писать умеешь, то реально найти, но лучше еще и какой-то фреймворк знать, так будет вариантов больше
Вы видите копию треда, сохраненную 8 февраля 2023 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.