Вы видите копию треда, сохраненную 31 мая 2020 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
НЕ КОПИРУЙ КОД ПРЯМО В ТРЕД!
Для программирования на ХТМЛ https://codepen.io/pen/
Для Ноды с консолькой https://repl.it/languages/nodejs
Для фреймворков https://codesandbox.io/
Залить, задеплоить страничку, сервер, контейнер https://zeit.co/now
Аноны, хочу получить советов мудрых, высераю пару предложений и код на скриншоте, а получаю смехуёчки. Как быть?
Если рассчитываешь получить дельный ответ, формулируй правильно вопрос:
У меня есть проблема\задача (А) %текст-ошибки или задача%. Я пытался решить ее так %кусок-кода-опционально% (Б), у меня не вышло %текст-ошибки%. Я погуглил, почитал документацию и попробовал сделать так %кусок-кода-%(В), но получаю ошибку (Г).
Сделай песочницу по ссылкам выше для ясности и удобства. Если никогда самостоятельно найдёшь решение — поделись в треде, мы за тебя переживаем.
Уряяяя
ну чё это за шапка
Дашчан не скопировал тег, печаль
учи js потом реакт. По js есть Кантор, по реакту дока и мильён курсов не юдеми всяких
1. Если React JSX - это компоненты, то получается проект будет состоять только из 1 html и остальных JSX файлов, которые хукаются друг с другом?
2. Впердолил JS template, хочу переписать на ReactJS - застопорился на Layout. Какой он в React-e? Это JSX с кучей компонентом, где между хедером, слайдерами и футерами просовываю контент определенной страницы?
3. Я нашел фишки с раутингом - React-Router - это часть фреймворка?
Накидайте пожалуйста Best practice по проектам на ReactJS, я .NET-чик, в JS-е не силен на уровне интуиции и гугла
Ваннаби-бэкендер на связи
Пишу на Рельсах либо на Питоновской Джанге. Встала задача реализовать список из виджетов (один под другим), которые можно перетягивать (drag and drop) и менять местами друг с другом. При этом новый порядок должен сохраниться, даже когда юзер покинет страницу (это уже лежит на бэке)
Чем и как мне это реализовать на фронте?
Подскажите, если у меня на канвасе есть несколько элементов, то кликая по одному из них, я могу получить его id? Или для такого svg используют?
Блять, а я-то думал, почему я именно в этом треде отписался!
Спс, бро. Теперь все встало на свои места
алсо сразу называйте зп, чтобы видеть, насколько авторитетный анон вещает
бамп, тварыны
> 1. Если React JSX - это компоненты, то получается проект будет состоять только из 1 html и остальных JSX файлов, которые хукаются друг с другом?
JSX компоненты в реакте это жс объекты. Проект состоит из одного хтмл файла, в котором должен быть рутовый дом элемент, обычно это див, после чего в этот див и рендерится твоя приложуха.
>которые хукаются друг с другом?
Структура жсх это обычное дерево, в рутовый компонент импортишь всю свою кашу.
>Впердолил JS template, хочу переписать на ReactJS - застопорился на Layout. Какой он в React-e? Это JSX с кучей компонентом, где между хедером, слайдерами и футерами просовываю контент определенной страницы?
Хз что это за поток слов, но если ты хочешь добавить реакта на уже существующию странуцу, то просто создай пустой див, в который заинжекти реакт приложуху.
>Я нашел фишки с раутингом - React-Router - это часть фреймворка?
Это часть экосистемы, для роутинга обычно используется эта либа https://reacttraining.com/react-router/
>Чем и как мне это реализовать на фронте?
Конечно же реактом!
либа для перенести-и-бросить
https://github.com/atlassian/react-beautiful-dnd
Накидал тебе пример оттуда же. Только добавил сохранение в кеше браузера. Строчки 15 и 17. Вместе с/Вместо кеша можно сделать обращение с апи. Чтобы увидеть, что твой список сохранился - перезагрузи страницу.
https://codesandbox.io/s/vertical-list-yyft1
Вот, как думаю я:
1. Клиент делает запрос на размер запрашиваемого файла.
2. После получения ответа, на клиенте каким-то алгоритмом определяется оптимальный размер каждого чанка, основываясь на полученных данных.
3. После этого клиент запрашивает, например, первые 0-1000 байт через Content-Length.
4. Сервер ему отсылает эти байты, после чего на клиенте формируется blob, который тут же воспроизводится.
5. Далее, в зависимости от текущего положения, клиент выполняет запросы далее 1001-2002 каждые X секунд, пока не достигнет максимального запаса для просмотра, чтобы не перегружать память клиента.
6. Если клиент решит в случайное место ткнуть ползунок, то высчитывается выбранный диапазон и все повторяется с 3 шага.
Так ли это?
Еще интересует, как новые чанки состыковать с предыдущими, которые уже являются blob объектом?
А с кэшем как?
Блядь, как же это сложно, нахуй...
>Как работать с чанками данных?
https://nodejs.org/api/stream.html
>Банальный пример - фильм.
https://webrtc.org/
Да про это то понятно. За сторону сервера вопросов пока нет, если я правильно понимаю. Отослать запрашиваемый диапазон байтов не сложно. Сложно понять как это на стороне клиента все должно работать. Как стыковать эти чанки и хранить в кэше, чтобы повторно постоянно не запрашивать одно и тоже, если придется перематывать обратно.
канвас - пиксельный, в нем нет элементов как таковых
свд - векторный, в нем у элементов могут быть айди
>Штуку облегчающую и сокращающую написание кода на ПХП как это делает ЖКВЕРИ на ЖАВАСКРИПТ
щито
При чем тут вообще плюсы? Блядь, если вы сами не знаете, нахуя хуйню нести такую? Подожду тех, кто знает, а еще лучше, кто писал свой медиа-плеер на js.
У меня пока ничего нет. Я продолжаю искать инфу, как это все правильно организовать перед реализацией. Алсо, на сервере я бы просто сделал что-то вроде fs.createReadStream(file).pipe(response).
Этот способ, насколько я знаю, в асинхронном режиме передает файл порциями. Но как их правильно обработать в клиенте я хз. Я раньше пытался написать аудио-плеер, но по этой самой причине застопорился, ибо на практике воспроизведение не начинается, пока файл не загрузится полностью.
Еще я смотрел как работает youtube/vimeo. Они выполняют запросы постепенно, словно обращаются к файлу. Т.е. такое ощущение, что у них эти все видео хранятся в уже порезаном на части состоянии. Когда смотрел содержимое запросов и ответов, они Content-Range даже не использовали.
Пытался их исходники проанализировать, там вообще хер разберешь что в коде происходит после этих вебпаков.
И еще, опять же, когда я писал аудио-плеер, blob я формировал на стороне клиента. Вот так
then внутри другого then?
Ну и пошел нахуй
спасибо, про поток слов - я нашел web template - https://colorlib.com/wp/template/logis/, захотел его переписать на ReactJS - начал пукориться с компоновкой компонентов. Еще вопрос - насчет Layout - ты написал, что проект это один Html, на него будет 1 компонент - Layout.jsx, в котором будут куча других компонентов?
И ты можешь какой ни будь пример не большой скинуть, как это все правильно обустроить? Типо best practice
Ну объясни, блять, что ты хочешь на клиенте делать?
Чем тебя <video /> не устраивает?
https://axel.isouard.fr/blog/2016/05/24/streaming-webm-video-over-html5-with-media-source
>Еще вопрос - насчет Layout - ты написал, что проект это один Html, на него будет 1 компонент - Layout.jsx, в котором будут куча других компонентов?
Будет index.html в котором будет <div id="app"></div>, реакт в него примаунтит(отрендерит) какой-нибудь App.js в которм ты уже будешь импортировать все свои компонент. Поставить create-react-app и посмотри структуру
сын шалавы что ты там пукнул, научить читать весь текст, а не то что тебе хочется в нём видеть
это какой то наглый пыхарь который молится на мвк и пытается разобраться в реакте даже не зная что реакт обычно не применяют в мвк говне
И то и другое. У стандартных <audio> и <video> нет api, чтобы манипулировать с данными. Я же сказал, что мой способ, когда я пытался с аудио работать, не сработал. У меня файл пока не загрузится полностью, не будет воспроизводиться. Поэтому нужно как-то самому управлять этими данными. Вручную. Что тут, блядь, не ясно?
>>30000
Ты тупой?
>Как это все работает? Как это должно работать? Сколько не искал, толковой инфы, отвечающей на мои вопросы найти не смог.
>Еще интересует, как новые чанки состыковать с предыдущими, которые уже являются blob объектом?
>А с кэшем как?
>на практике воспроизведение не начинается, пока файл не загрузится полностью.
>И то и другое.
Старина, хуйней ты маешься. Если не знаешь с чего начать, особенно, когда задача для тебя слишком сложная, то упрости все нахуй. А то какие то чанки, хуянки.
Я бы так делал - взял бы видос, порезал бы его на кадры ффмпегом - картинки бы перегнал в base64. На клиенте бы в цикле запрашивал бы куски и рендерил бы их в канвасе. Это если прям кастомный плеер делать. Ну и со звуком бы примерно так же делал. Дальше гугли видео кодеки и занимаешься байтоебством. Но нахуя?
Второй вариант, который используют многие плееры - они режут весь видос на куски по 3-5 секунд, после чего в нужный момент запрашивают нужный кусок. И показывают его. Ну и поверх дефолтного видео можно интерфейс замутить.
>Как это все работает? Как это должно работать? Сколько не искал, толковой инфы, отвечающей на мои вопросы найти не смог.
Хуево искал. Просто это не твой уровень. Ты бы сначала хелоуворлды поделал.
>Еще интересует, как новые чанки состыковать с предыдущими, которые уже являются blob объектом?
Ты ебанутый со своими чанками.
>>А с кэшем как?
Да никак. В локалсторейдже, насколько я знаю, всего 5 метров можно сохранить.
>на практике воспроизведение не начинается, пока файл не загрузится полностью.
Смотри выше про куски по 5 секунд.
class Hohl {
function salo() {console.log("Hellow ЕБАТЬ")}
};
svinina = new Hohl;
svinina.salo();
Можно использоваться и
var Hohl = {
"salo": "Hello ЕБАТЬ"
};
Hohl.salo();
И считай это одно и тоже?
Возможно в коде ошибка, сейчас засосало в php, мог и перепутать, но я так понял в php по этого и дрочат классы, что у них ассоциативный массив не может содержать функции, как это может делать простой объект у нас в JS, я правильно понял или проебался?
>Второй вариант, который используют многие плееры - они режут весь видос на куски по 3-5 секунд, после чего в нужный момент запрашивают нужный кусок. И показывают его. Ну и поверх дефолтного видео можно интерфейс замутить.
Так мне вот хотя бы это и сделать. Мне просто нужно, чтобы файлы по 50/100+ мегабайт не пытались сначала полностью загрузиться, а уже потом только предоставлять клиенту возможность его слушать.
Со стандартными audio/video у меня не работает так, как это надо. Я уже сказал об этом 3 раза.
>Да никак. В локалсторейдже, насколько я знаю, всего 5 метров можно сохранить.
Под кэшем я подразумевал оперативную память, в которой какое-то время можно хранить относительно много информации.
Буду более конкретным. Открываю свой проект, с которым раньше что-то пытался сделать. Вот тут ключевые фрагменты кода.
https://jsfiddle.net/mfq8n9ga/
В функции sendAudioFile я пытался оперировать с частью данных, устанавливая end в несколько мегабайт, тогда вообще происходит какая-то херня.
>многие плееры - они режут весь видос на куски по 3-5 секунд
Т.е. на сервере файл физически уже в порезанном виде хранится? Или этим постоянно занимается сервер, отправляя данные? Мне это было бы не удобно, ибо сервером является мой пк, на котором я эти файлы использую. Поэтому хочу понять как правильно нужно разбить этот файл на части программно. Как я уже сказал, пытался со start и end оперировать - не вышло.
><audio> и <video>
>манипулировать с данными
Потому что они не должны манипулировать
API манипулированием данных состоит из буквально пары топ лвл объектов их sourcebuffer mediasource mediameta и т.д, по всем должно быть всё расписано в одной какой-нибудь статье
Если ты не осилил сорсы hls/mpeg, крутящие абсолютно несложные материи выше, нахуй ты вообще лезишь?
Высрал две строки толкания блоба, еще и каким-то образом всрато вложенные в промисы, а чсв как у байтоеба с 20 летним стажем
класс это больше чем просто ассоциативный массив с функциями
так то проблем использовать функцию в объекте нет
let obj = {fn: () => console.log(42)}
obj.fn()
42
класс должен иметь конструктор который создаёт его инстанс
в джаваскрипте класс это не простой объект - ассоциативный массив, а функция
function A(a) {this.a = a}
let a = new A(11)
console.log(a.a)
11
>Потому что они не должны манипулировать
Поэтому и хочу разобраться как самому этим управлять. Мне все равно как это будет достигнуто, мне просто, блядь, нужно чтобы файл подгружался частями. Код я скинул, если ты дохуя умный, то объясняй почему это не работает. Нахуя ты пердишь в лужу, еще называя кого-то чсв? Мне вообще похуй, я хочу решить проблему.
>Если ты не осилил сорсы hls/mpeg, крутящие абсолютно несложные материи выше, нахуй ты вообще лезишь?
Чего, блядь? Что ты несешь вообще? Конечная цель - воспроизвести файл, достигнута. Но то, как это работает на практике, мне не нравится.
>Высрал две строки толкания блоба, еще и каким-то образом всрато вложенные в промисы
А как их еще вложить, чтобы получить доступ к response.headers.get('content-type') во втором then? Расскажи. В любом случае, от этого ничего не меняется.
Вот, блядь. Буквально вся суть местного скама. Когда задают вопросы сложнее того, как разбить строку на подстроки, так сразу цепляются к какой-то хуйне, не могут четко и ясно что-либо сказать по делу. Вместо этого говном покроют, вылив все свои омежкины комплексы. Пиздец. Хррртьфу!
Долбаеб я тебе написал sourcebuffer mediasource mediameta
API уровнем выше придумать просто невозмжно
Вместо пердежа десятка параграфов мог бы уже догуглить двухстраничную документацию по этому хеллоуворлду
>сервером является мой пк, на котором я эти файлы использую. Поэтому хочу понять как правильно нужно разбить этот файл на части программно
Ты так и не написал. какую задачу решаешь, а мне надоело гадать и задавать наводящие вопросы. Так что или напиши, что собераешься делать или ебись сам с этим.
Там поддержка для нужной мне платформы нулевая. Android Firefox. Можно ли с blobами это решить? У меня никаких нет идей, кроме как как-то постоянно пересобирать этот blob при получении нового чанка. Но для этого еще нужно как-то разбить файл на эти чанки на сервере. Как это сделать правильно? Чтобы это работало? Чтобы на клиенте можно было жонглировать ими? Чтобы вот это вот все.
>>30162
А что не понятного? Медиа-ресурс для души. Чтобы с телефона можно было получить доступ к гигабайтам личной музыки и послушать ее. Не надо мне облаков никаких предлагать только. Это еще интерес какой-то у меня вызывает.
Функция над функциями? Или даже функция имеющая методы? Ебануться
Для ообновления постов после удаления или редактирования создал асинхронный метод, который выполняет GET- запрос, получает список постов и перезаписывает их список в data. Этот метод я передаю в компонент создания поста пропсом и вызываю там после создания.
Подключен плагин moment js, но после перезаписывания списка постов дата (минут назад...) не обновляется и остаётся той, что отрисовалась при загрузке страницы. Как можно исправить?
хуйню какую-то написал.
a - объект. Ты не можешь вызывать объект, как функцию.
Никаких "дефолтных методов" у объекта в js нет.
>https://axel.isouard.fr/blog/2016/05/24/streaming-webm-video-over-html5-with-media-source
>sourcebuffer mediasource
>Там поддержка для нужной мне платформы нулевая. Android Firefox.
Касаемо <video>/<audio>
Я уже сказал много раз, что с ними у меня не работает частичная загрузка файла. Код здесь https://jsfiddle.net/mfq8n9ga/
Это просто пиздец ты похоже абсолютно не понимаешь ни чего ты хочешь ни что ты копипастишь
Я просто оставлю здесь Тьюринг-полные шрифты, которые могут захакать все ваши системы.
Я оставил ключевую фразу для гуглежа.
И знаешь как они хакают? А вот так: https://habr.com/ru/post/429602/
Сначала вгружается непреметненький шрифтик...
А у него... эммм. ТЬЮРИНГ-ПОЛНОТА!
После чего хакаются все системы нахуй, к хуям собачьим!
Если знать о тьюринг-полноте шрифтов, то уже не удивляет полнота по Тюрингу документов TeX, что естественно вызывает многие серьёзные и интересные уязвимости в безопасности шрифтов и медиа, такие как BLEND или Linux-эксплоиты SNES и NES. В других форматах вроде PDF просто ужасное количество уязвимостей. Опять же, выдающиеся достижения вроде создания небольшой машины Тьюринга из кубиков «Лего» или домино, не считаются, поскольку нам уже давно известно, как работают механические компьютеры.
Студент, учусь на айти направлении. Параллельно недавно начал самостоятельно вкатываться в веб разработку, так как нравится. Но чем дальше погружаюсь в тему, тем чаще и больше слышу что-то вроде "вебмакаки не нужны", "вебмакака не программист", "вас всех заменят тильды через 5 лет" и т.д.
Очень все это неприятно слышать, учитывая то, что веб разработка мне действительно нравится. Почему создался такой стереотип? Есть ли в этом доля правды? Может, мне стоит идти в другом направлении, пока не поздно? Не хотелось бы.
Стадный инстинкт. Не нравится веб - не учи, нравится - учи и программируй. Большинству насрать, на чем ты кодишь. Люди хотят чтобы их слышали, независимо от того, какую чушь они несут.
Бамп вопросу, не нагуглил решение.
да, рили - один фетч и погнали. Спасибо
Нихуя не понял, можешь кратко по русски описать что это за хуйня и что из-за неё может случиться?
бля анон когда я начинал учить тоже думал что влезаю в говно, не слушай даунов бородатых хадротов, блять, веб правит миром, этого тебе должно быть достаточно, все визги и вяки это от старых аутистов которые до сих пор борятся за каждый бит скорости и нагрузки, что конечно есть хорошо, но никто так делать не будет, все выберу дерьмо которые сжирает всю память на устройстве для своего выполения
Мне нравится веб по-настоящему, но я ещё при этом хотел бы иметь валидную профессию, чтобы зарабатывать на этом ближайшие лет 30.
Значит ты испытываешь стадный инстинкт и ищешь выбор, который одобрили бы окружающие. Решай сам.
В смыслея причем тут стадный инстинкт? Мне похуй, если все будут говорить типа моя профессия не профессия, но я хочу, чтобы на деле она все же была профессией.
Никем, потому что послушал вот этих чмарей и не стал учить js и php
Так это уязвимость или нет? Чем это грозит яваскрипту? Инъекции на сайт с помощью шрифта в комментариях? Я нихуя не понял
Вакансий по жс много, платят хорошо, хх каждый день открываю. Но. Вопрос-то в том, как изменится ситуация через условные 5 лет. Многие пророчат веб разработке смерть. Так ли это?
В смысле? На сайте? Или если самому запустить код на своих файлах? Алсо, мне и не подойдет этот способ, даже если он работает, ибо лиса на ведроиде не поддерживает это апи. https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer
Код я никакой не писал еще. Завтра попробую. Я пока в бреду, у меня температура высокая и мне хуево, так что пока я особо еще не вникал ни во что, просто собираю информацию поверхостно.
Still the salaries are pretty fine, was there anything you wanted to prove with your comment?
function GetBlocks() {
const blocks = document.getElementsByClassName('sbs_rigth');
for( let i = 0; i < blocks.length; i++){
const cats = Array.from(blocks.getElementsByClassName('field__impl'));
const cat1 = cats.slice(0 ,3);
const cat2 = cats.slice(7 ,10);
const cat3 = cats.slice(14 ,17);
const cat4 = cats.slice(21 ,24);
const cats1 = cat1.concat(cat2, cat3, cat4);
console.log ('111',cats1);
>только текст внутри разный
const blocks = [...document.querySelectorAll('.field__impl')];
function findBlock(text, blocks) {
return blocks.find(e => e.textContent.includes(text))
}
const resultArray = ['Текст из блока1', 'Текст из блока2', 'Текст из блока3', 'Текст из блока4', 'Текст из блока5'].map(e => findBlock(e, blocks));
inb4 Квиз можно пройти три раза (не только фронт). Вопросы вполне дефолтные, но я растерялся из-за таймеров и где-то четверть точно накосячил, остальные точно не знал (там есть теоретические вопросы)
PS как же я ору с того что мне советуют фронт, при том что я проходил квиз на фронт и в то же время мой результат по фронту в их графе самый слабый.
Судя по консоли, твой вариант только из первого блока "sbs_rigth" вытягивает '.field__impl' с найденным текстом, а мне нужно из всех 5.
>document.querySelectorAll('.field__impl')
Здесь поиск по всему документу. Поиск по .sbs_rigth вообще не нужен.
Так что либо .field__impl есть только в первом блоке, либо ты что-то сломал в этом коде.
>Уезжаем работать в америку.
А кто же страну поднимать с колен будет, так и останется в руках воров и мошенников
Так они сами уже одно ногой там.
>.field__impl есть только в первом блоке
Не, эти блоки везде одинаковые. Не думаю, что это имеет значение, но текст не непосредственно в них, а в Span через несколько потомков div. Просто мне нужно обращаться именно к ним.
Я твой синтаксис не до конца понимаю, стрелочный еще не изучал.
Скинь структуру на codepen или jsfiddle.
>но текст не непосредственно в них, а в Span через несколько потомков div
Меняешь на
return blocks.find(e => e.textContent.includes(text).closest('.field__impl'))
Хотя нет, не меняешь, хуйню написал. Он и так должен найти .field__impl с нужным текстом внутри (в том чсиле и во ложенных в него блоках), но вернет .field__impl .
Да, и смена ошибку выдает "не функция". Может тут цикла не хватает, чтоб по всем полям пройтись?
Прост я писал похожую функцию, но отказался, поскольку ее надо вызывать много раз для каждого слова. Вот она возвращает все элемы с нужным свойством из всех 5 разделов.
function get_elements_by_inner(word) {
var res = []
var elemst = [...document.getElementsByClassName('field__impl')];
elemst.forEach((elem) => {
if(elem.outerHTML.includes(word)) {
res.push(elem)
}
})
return(res)
}
Я думал, у тебя блоки уникальные, то есть одно слово - один блок.
Вот, если нужно найти блоки с повторяющимися словами.
const blocks = [...document.querySelectorAll('.field__impl')];
const words = ['Текст1', 'Текст2', 'Текст3', 'Текст4', 'Текст5'];
const result = blocks.filter(block => words.some(word => block.textContent.includes(word)));
Супер, работает. Спасибо, дружище.
Мда, конечно стрелочные функции сильно отличаются, хрен разберешь че происходит вообще. Надо курить мануалы.
тут в стрелочных функциях аргументы и что вернуть. Хз что тебя тут смутило. Это наверное то, что проходят на первом занятии оффлайн курсов уже.
И еще, я тебя не хочу никак обидеть и если ты это делаешь для себя (реально для себя), то играйся на здоровье. Но если ты это потом хочешь где-то показать, то лучше остановись. Потому что эти поиски по селекторам уже никому не нужны, кроме самих фреймворков.
>проходят на первом занятии оффлайн курсов
Я не был даже онлайн. Лет 6 назад изучал PHP пару месяцев, потом забил. А щас вот понадобилось дизайн на одном сайте под себя сделать, вот и полез в JS. Дней 5 только изучаю.
Прост классический синтаксис похож на php, поэтому мне более понятен. Хотя хз че там щас уже.
Что мешает вебговнокодить на джанге?
Ну тащемта есть 3 фреймворка.
1. Реакт - говно редкостное, но везде нужно.
2. Вью - шикарная вещь, но нигде не нужно.
3. Ангуляр - говно редкостное и нигде не нужно.
Выбирай 1 или 2.
upd: если даун, то бери 2. Реакт сложнее.
А чем вью лучше? Постоянно нужно работать в двух контекстах - вьюшная магия и js, не лучше ли что бы всё было js?
Ебаное говно для индусов неосиливающих что-то сложнее темплейтов
Взлетело только благодаря количество этих самых дегенератов
> лучше ли что бы всё было js
Лучше. На самом деле, ничего лучше нового JS без фреймворков и всяких жикуери/страпон нет.
Во вьюхе всё удобно и искаробки. Пиздец какой удобный менеджмент стэйта через вьюх. Очень пиздатый роутер без ебли. Да и вообще хорошо когда фреймворк это фреймворк.
>>30750
Ну да, всё так. А что такого
quote.title в этом объекте не существует
есть например obj.quote.tariff_137_0.title (если твой объект называется obj)
ты можешь получить все ключи с помощью let keys = Object.keys(obj.quote) и подставить ключ потом obj.quote[keys[0]].title например
только так? тут просто до меня в коде висела хуйня в виде:
_.each(obj.quote, function(quote) { alert(quote.title) }
поэтому думал может что полегче есть чтобы я мог обратиться только к тому где тариф_137 не используя этот ебучий цикл
Непроходимо реализовать функцию clone, которая будет работать следующим образом:
let arr = [1,2,3,4,5,6];
let brr = clone(arr);
console.log(brr); // [1,2,3,4,5,6]
brr[0] = 42;
console.log(brr); // [42,2,3,4,5,6]
console.log(arr); // [1,2,3,4,5,6]
всякими слайсами пользоваться нельзя, только циклы. У меня получается хуйня, и возвращает два массива уже с изменением (Да, я понял что это просто ссылка на оригинальный массив и перемены происходят и в оригинале, но как это бойти?)
75$
Ты ебанутый?
const clone = arr => {
let new = [];
while(let i = 0 < arr.length -1)
new = arr;
return new;
}
>for ( let tarif in quote )
пипец хак какой-то, ключи по in выдает как для массивов, а значения по of не даёт, пишет не может интегрировать объект
думаю попадает под "всякие слайсы"
Да, фамилия Говно, из города Львiв
Пытался сделать через box-shadow, но треугольник не обрезается, так что тень прямоугольная (скрин 1)
Если сделать border-color, то треугольник закрашивается (пик 2)
Как можно сделать ему border и белый фон?
Стили для треугольника:
.tooltip-arrow
width: 0
height: 0
border-style: solid
position: absolute
margin: 5px
border-color: #fff
z-index: 1
box-shadow: 0px 3px 10px rgba(0, 0, 0, 0.12)
Слушай, если ты еще тут, можешь еще подсказать. Если я, допустим, хочу превратить твой код в функцию, которой буду передавать массив слов для поиска, а она будет возвращать все содержащие слова блоки, что мне туда добавить нужно? Чет вообще не раздуплю эти стрелочные функции. Или если не трудно, мог бы ты переписать эту функцию под классический синтаксис, чтобы я мог сравнить и разобраться сам.
function getCats(){
const blocks = [...document.querySelectorAll('.field__impl')];
const wordsCat1 = ['Авто', 'Бизнес', 'Дом', 'Кино', 'Книги', 'Мистика', 'Развлечения', 'Спорт', 'Стиль'];
const cat1 = blocks.filter(block => wordsCat1.some(word => block.textContent.includes(word)));
for( let i = 0; i < cat1.length; i++){
cat1.style.background = '#4dd0e1';
}
}
Вговнокодить абсолютом относительно справого верхнего угла рамки
Все не нужно, я разобрался. Прост не знал, что агрументы это не массив
const wordsCat1 = ['Авто', 'Бизнес', 'Дом', 'Кино', 'Книги', 'Мистика', 'Развлечения', 'Спорт', 'Стиль'];
function getCats(words) {
const blocks = [...document.querySelectorAll('.field__impl')];
return blocks.filter(block => words.some(word => block.textContent.includes(word)));
}
getCats(wordsCat1).forEach(e => e.style.background = '#4dd0e1')
Будучи онли реакт-макакой я однажды задумался, а в каких ситуациях я буду юзать вью вместо реакта? Когда меня спросят на собесе, почему вы не учили другие фреймворки, нужно сказать что-то умное, нельзя же сказать, что я выбрал реакт ради денег, потому что в фронтенд-треде на дваче так посоветовали.
Но я не работаю ради денег и разбираюсь в каждом аспекте своей работы, посвещая ей каждую минуту своего свободного времени и даже выходные дни, ведь я большой профессионал. таков мой образ
Просто не посылай резюме на вакансии где нужны другие фремворки это вообще показатель ебанутой конторы, которая обмазывается любым говном после обезьян - в нормальных местах есть устаканившийся стек/подход на котором все делается
это не в реакте, а в целом в современном жсе, var уже много лет никто не использует
у русских слово var ассоциируется со словом ВОР, по этому они перешли на let и const
a=1;
console.log(a);
Твой код и тебябудут считать говном все, кому придётся с ним работать после тебя. С ним не удобно работать.
>Если ты 100% создаёшь для неё уникальное название
Ну да, легко так говорить, когда ничего длиннее 20-ти строк не писал. Когда у тебя полноценное предложение, то ты ни в чём на 100% не уверен. Ну а в 20-ти строках так будут писать только дебилы, потому что они не понимают, что это рано или поздно войдет в привычку и они где-нибудь в крупном проекте ёбнут своё a = 1; и наебнут весь код.
Да, не дописал что пишу только для себя, я не жс пхп макака сидящая на зарплате, учитывая то что на других похуй, чем чревато объявлять переменную без var let const
>>31448
В своих подделках конечно же, делаю их только для личного пользования, допиливаю то что другие обмутки создавая сайты допилить не в состоянии или не хватило мозгов
>>31451
Берём идеальный случай, что все названия уникальны, нахуй вообще задавать видимость переменной, если она тебе нужна просто как переменная, учитывая это можно же так писать не ебясь с var let const? У меня например как минимум ад перфикциониста когда ты пишешь код в 1 строку и у тебя в коде единсвенный пробел это когда ты объявляешь ебучую переменную, все остальные пробелы у тебя просто улетают при сжатии
Так делать нельзя, есть строгий режим в котором будет ошибка.
Такая переменная становится глобальной (т.е. объявляется через var по сути) и всплывает, где ее не объяви. Глобальные переменные не нужны.
>ад перфикциониста
>когда ты пишешь код
реально ад
>Берём идеальный случай
И какой смысл обсуждения сферических коней в вакууме?
>ад перфикциониста
В голос. Ад перфекциониста это как раз хуйня вида:
а=1;
перфекционист пишет:
let a = 1;
Нет, ад это вот это
<script>var a=1;let b=2;const c=3;console.log(a+b+c);</script>
Нигде блять нет пробела, и только инвалидское объявление переменных их добавляет, нужно сделать как в пхп $a=1, будет охуенно
>>31474
Да и насрать что она становится глобальной, имя же у неё уникальное, её никто не тронет кроме тебя, берём в расчёт только личное пользование, конечно сидя на бутылкезарплате жс макаки ты будешь писать всё отдельно в новой строке, но для себя ты будешь это всё максимально сжимать после написания, чтобы ни 1 макака не пазарилась на твой код, и поебать что переменные глобальные, если они тебе ненужны для какой-то функции внутри, памяти она не сожрёт и проц твой от этого не нагрузит, ПО Е БАТЬ
Каким дебилом надо быть чтобы скрипт писать в теге, а не загружать из источника?
>чтобы ни 1 макака не пазарилась на твой код
Шизик, успокойся, уже давно придумали инструменты, которые сами добавят нужные отступы.
А, нет, не пиши так, это я обосрался.
Зачем в скрипте что-писать, если это для стороннего сайта? Есть же всякие тамперманки и прочие дополнения.
Если кода мало, зачем источники?
https://universal-play.glitch.me змей рисовать можно в одном файле.
Чтобы всё было аккуратно и тебе не надо было грузить весь html файл для исправления 1 строки.
user ~
$ node
> (function(){var a=1})()
undefined
> console.log(a)
ReferenceError: a is not defined
>
>Разговор был про объявление без ключевого слова.
Не знаю с кем ты там в своей голове разговаривал, но писал ты следующее:
>Такая переменная становится глобальной (т.е. объявляется через var по сути)
Написано, что переменная без ключевого слова объявляется как через var (в противовес как через let или const) и всплывает.
А теперь покажи где написано, что var всплывает из функции.
А ты писал, что я (другой анон) путаю функцию и IIFE. Но и то, и другое, что с var, что без, работает одинаково.
Но с этой функцией получается так, что всё из getCats(1); перемещается в последний враппер на странице, а не в каждый.
function createBlocks(){
const cont = document.querySelectorAll('.wrap1');
const elem = getCats(1);
for (var i = 0; i < cont.length; i ++) {
for (var j = 0; j < elem.length; j ++) {
cont.appendChild(elem[j]);
}
}
}
>Пыхер
>Шизик
Откуда вы меня знаете
>>31543
Кстати, а расширения для браузер - это же тот же js файл да? То есть можно взять любое расширение, удалять там всю анальную гебню следящую за тобой и переделать как тебе удобно само расширение?
>>31530
Обезьянка, открой любой более вменяемый сайт, сейчас всё пишут в самом коде html для ускорения загрузки и уменьшения количества запросов при загрузке страницы, даже css стили все стали писать прямо в коде html и только общие стилли в файле, как и js код, если он исполняется только на 1 странице, нахуй мне помещать его в файл чтобы даже на микросекунды задерживать его выполение тварь
>Но она не объявляется как через var, сычуш
>без ключевого слова она попадает в глобал скоуп
Страшная тайна, но все Var тоже попадают в глобал скоуп и становятся свойствами глобального объета, как и без ключевого слова вообще. В это и была суть сообщения, что как var, но не как let/const
>Ты же говорил, что между не объявлением и объявлением через var нет разницы
>переменная становится глобальной (т.е. объявляется через var по сути) и всплывает, где ее не объяви
У тебя дислексия или ты просто долбоеб?
>Страшная тайна, но все Var тоже попадают в глобал скоуп и становятся свойствами глобального объета, как и без ключевого слова вообще.
Тогда почему ты обосрался и не смог прочитать переменную объявленную в функции через var, но смог это сделал с переменной объявленной без ключевого слова? Ты троллить пытаешься или правда тупой?
Ладно, здесь я обосрался. Ключевая суть была про разницу с let/const.
А ты обосрался с самого начала
Ты сказал про объявление через var, ответ был про объявление без ключевого слова. Разницу находишь?
40-50к это только для фильмов и браузера. Для программирования нужен мощный, как минимум за 70к, если прям сейчас брать будешь, если будешь ждать, то уже за 85к придется брать с нынешним курсом.
Программирование это IDE и несколько открытых проектов, несколько вкладок браузера, виртуалка, локальный сервер. Всё это требует как минимум 16 гб оперативки.
Какой ответ, поехавший? Я отвечал на это:
>Такая переменная становится глобальной (т.е. объявляется через var по сути)
Указывая на то, что объявление с var и вообще без ключевого слова не являются одинаковыми.
Сын, ты как с матерью разговариваешь скотина родила урода!
А там в конце написано "ой, нет, я ошибся, это не одно и тоже"? Если нет, то я дочитал до конца и ничего не обрезал.
Ну если у тебя проблемы с чтением, то я вряд ли смогу дочитать за тебя и собрать мысль воедино.
Если из 1 модели конечно мощнее, +4 виртуальных потока ебать
Короче нужен ноут на подобии мака но не мак, то есть крепкий может даже алюминиевый и стильный чтобы не блевать при его виде и не охуевать как он скрепит или звучит при постукивании как дешёвый китайский пластик, ну и матрица чтобы не выжигала глаза засветами и разной картинкой при малейшем отклонении в строну
Говно то хоть своё собрать сможешь? А то уже на весь тред воняет.
>Теперь скажи в каком месте ты писал про переменную с var?
Это подразумевается исходя из цитируемого поста.
>Такая переменная...
>Если в рамках функции, то она не будет глобальной.
>Если в рамках функции, то объявленная через var не будет глобальной.
Да-да, обтекай дальше.
Если уж очень хочется использовать циклы, хотя бы for of используй, а не это.
В коде ты проходишь циклом по cont. В каждой итерации ты перетаскиваешь в cont элементы elem.
То есть ты несколько раз раз перетаскиваешь элементы туда, где они уже и лежат (после первой итерации).
А зачем?
>Такая переменная становится глобальной (т.е. объявляется через var по сути) и всплывает, где ее не объяви.
>Если в рамках функции, то она не будет глобальной.
Так ты к посту добавляй, что у тебя IQ < 80, тогда тебе будут в развернутом виде всё писать, без надежды на то, что ты сам найдешь то место, в котором проебался.
То есть я отрицаю, что объявленная переменная без ключевого слова, объявляется через var по сути.
>я всё равно будут писать без var let и const, потому что разницы нихуя
Смысл в том, что практически невозможна ситуация, когда говнокод-1.0 присваивает значение глобальной A, потом говнокод-2 присваивает значение глобальной А, потом говнокод-1.1 пытается использовать значение А из говнокода 1.0. Потому это и работает.
Сейчас уже другое отрицаешь. Маневры продолжаются.
Она становится глобальной и по сути объявляется как var.
Сначала глобальной, потом как var (а не как let/const, в чем и суть).
>(т.е. объявляется через var по сути)
Тови слова, которые я и отрицаю. Когда это стало другим?
Да... в твоей шизе даже опытный психиатр с трудом разберется.
>А зачем?
Циклы не обязательны. Но в cont же содержатся 5 блоков на странице, в каждый из которых мне нужно запихать элементы из elem. Как это сделать иначе?
Прост потерял, но результат я описывал с ней.
Вот так получается, но чет по моему сильно костыльно
function createBlocks(){
const cont = document.querySelectorAll('.wrap1');
const elem = getCats(1);
console.log(elem);
const elem1 = elem.slice(0, 9);
const elem2 = elem.slice(9, 18);
for (let i = 0; i < elem1.length; i ++) {
cont[0].appendChild(elem1);
}
for (let i = 0; i < elem2.length; i ++) {
cont[1].appendChild(elem2);
}
}
>for (let i = 0; i < elem1.length; i ++) {
>cont[0].appendChild(elem1);
Зачем ты один элемент (cont[0]) перекладываешь elem1.length раз в elem1?
>for (let i = 0; i < elem2.length; i ++) {
>cont[1].appendChild(elem2);
Зачем ты один элемент (cont[1]) перекладываешь elem2.length раз в elem1?
Без циклов такой путаницы не было бы.
Ну так у меня массив из 5 блоков в cont, в каждый блок мне нужно положить определенное кол-во элементов из массива elem. Как иначе это сделать? Я же это и спрашиваю.
Ты один и тот же блок пытаешься положить в другой, а не несколько блоков.
appendChild вырезает блок и текущего места и кладет в другое, ты делаешь это несколько раз подряд, то есть просто вырезаешь его из блока и кладешь в тот же блок.
elem1 elem2 может быть нужны?
Слайсы еще эти зачем-то.
Наверняка это все можно в одну строчку запилить. Просто непонятно, что нужно.
По этой же причине и у меня их нет лул
Короч суть в том, что мне в 5 cont надо переместить каждые 9 элементов из elem. Первый cont - первые 9 из elem, и т.д.
Чет мне кажется там можно переместить все куда надо сразу без лишних выдергиваний, без этого:
>Я выдернул из всех 5 разделов нужные блоки (они идут не по порядку), их возвращает функция getCats(1) (там 5 разделов с 9 потомками в каждом).
То есть сразу взять блоки из документа и положить куда надо.
Эти блоки выбираются по тексту внутри. Потому что на странице они идут по порядку с одинаковыми классами во всех 5 разделах, типа 123456789... А мне нужно типа 123 и 789 обернуть враппером в каждом разделе, а потом так же 456 и 10-11-12
Ну так находи сразу и оборачивай, зачем вырезать, вставлять?
Да и оборачивать наверняка не обязательно - меняй текущие на лету или просто стили добавляй каждому.
>Ну так находи сразу и оборачивай
Ну так я и нашел, их функция уже вытащила, проблема то не в этом бля.
>Да и оборачивать наверняка не обязательно
Обязательно. Стили я уже и так поменял, но мне нужно сделать типа блок для фокуса по хоткею, где будут еще 9 блоков с выбором инпутов по хоткеям
>если все работает
Да не работает нихрена. Работает только первая версия с тонной текста только для одного блока из 3.
Пробую вот так, все правильно оборачивается, но все блоки, которые функция getCats вытащила, вываливаются в последний враппер, вместо каждого блядь. Заебался уже.
Код забыл
function createBlocks(){
const cont = document.querySelectorAll('.wrap1');
let wrapper = null;
[...getCats(1)].forEach((el, i) => {
if (i % 9 === 0) {
wrapper = document.createElement('div')
wrapper.className = "wrap";
for (let i = 0; i < cont.length; i ++) {
cont.appendChild(wrapper)
}
}
wrapper.appendChild(el)
})
}
через const удобно обозначать массивы и объекты, которые сохраняют ссылку на объект но меняют содержание, чтобы случайно их не перезаписать саму ссылку
Я просто не догоняю, что ты хочешь.
>на странице 5 разделов, в каждом по 26 блоков.
>Я выдернул из всех 5 разделов нужные блоки (они идут не по порядку), их возвращает функция getCats(1) (там 5 разделов с 9 потомками в каждом).
>я обернул все 26 блоков в каждом из 5 основных во wrap1 и теперь мне нужно каждые 9 блоков из getCats(1) переместить в wrap1 во всех 5 разделах.
Так если ты врапнул 26 блоков, то те самые из getCats(1) уже внутри врапера, они же одни из 26-ти.
Как я понял твою структуру: https://jsfiddle.net/oh8ckun0/
Какой результат должен быть после всех преобразований? Хотя бы в пейнте нарисуй.
грр *?
>Как я понял твою структуру
Так есть сейчас, да. А надо так. Но вот эти блоки, что во врапперах, уже поделены на 3 группы в 5 секциях функцией getCats(1), где цифра - номер группы. Мне нужно только их врапперами обернуть. Чтобы в каждой секции были врапперы 1-2-3, а в них как на картинке.
Стало только хуже. Лол.
Тебе нужно копировать блоки, чтоле? По два раза странице - в обычном месте и в новых-блоках врапперах?
https://jsfiddle.net/mc537agz/
Вот мой текущий код. Он полностью решает эту задау. Но он пиздец уродский и длинный. Я уверен можно это сделать проще, но чет не получается.
>Тебе нужно копировать блоки, чтоле?
Нет, создать по 3 враппера в каждой из 5 секций и в них перетащить блоки по очередности как на скрине. По умолчанию как у тебя в коде, все блоки идут по порядку от 1 до 29 в каждой из 5 секций.
>Обезьянка, открой любой более вменяемый сайт, сейчас всё пишут в самом коде html для ускорения загрузки и уменьшения количества запросов при загрузке страницы, даже css стили все стали писать прямо в коде html и только общие стилли в файле, как и js код, если он исполняется только на 1 странице, нахуй мне помещать его в файл чтобы даже на микросекунды задерживать его выполение тварь
Ебать давно я так не смеялся.
Мне кажется нужно делать куда проще.
Делаешь массив из трех подмассивов. В каждом подмассиве наборы слов для нужного враппера (я так понимаю).
Потом приходишься по
>Суть такая, на странице 5 разделов, в каждом по 26 блоков.
каждому из этих пяти разделов. Если блок содержит слово, которое есть в массиве, перемещаешь его во враппер с номером, как и индекс подмассива (три враппера - три подмассива).
> В каждом подмассиве наборы слов для нужного враппера (я так понимаю).
Или лучше индексы, по которым они находятся в списке в своем разделе (если, конечно, не изменяются и одинаковы для разделов).
И почитай рекомендации здлесь хуйло тупое украинское https://search.google.com/test/mobile-friendly?hl=ru
В ноутбуках выбирать особо не из чего. За 40к можно взять ноут на ryzen 5, без установленной винды, ( - 8к к цене ) и накатить туда линукс, ну и плашку докупить оперативы. Экран IPS без вариантов.
>но чтобы это был не пидоромак, бюджет 40-50к
Можно подумать ты на эти копейки мак купить бы мог лул
>>31952
>А на какую фирму опираться
asus, acer, лучше по отзывам смотреть, т.к. у каждой модели есть косяки, у одной звук говно, у другой вентилятор шумит и т.п. и уже выбирать под себя.
>мак
>MacBook Pro 13 за 109к, 13 дюймов экран, 8 гб, 128 ssd, i5.
Видимо маки тащат из за мертвого рынка ноутов и лгбт сообщества.
Я не спец в жс, но я бы создал функцию с циклом(let key in object) и вызывал ее в самой себе. Если я правильно понял что тебе нужно
это ок способ для того что нормально стрингифается (функция в объекте не пойдет)
а так напиши свою дип копи
const io = require("socket.io")(server);
я понимаю что io становится экземпляром socket.io, но что блядь там делает сервер в скобочках?
{123:[название1, ссылка1, картинка1, комментарии 10, тд.],124:[название2, ссылка2, картинка2, комментарии 20, тд.]}
Как эту лабуду отсортировать по названию, то есть по 1 элементу в массиве каждого объекта
гугли каррирование
Мне нужно циклом проходить по всем свойствам и свойствам свойств до бесконечности, пока свойство в свойстве есть. Сколько попыток делал - не получается.
let obj = <твой объект>;
while (obj !== null) {
console.log(obj.value);
obj = obj.next;
}
Даже вот этот пример не помог. Хоть и тут понятно, что после каждого выполнения перезаписывает на следующий next и показывает его
Еще загвостка в том, что у свойств нет имен, ну они в " " кавычках и на русском языке, хотелось бы самому решить и получить какой-то прогресс, не хочется проигрывать..
Рекурсия.
>Еще загвостка в том, что у свойств нет имен, ну они в " " кавычках и на русском языке, хотелось бы самому решить и получить какой-то прогресс, не хочется проигрывать..
object['пидор']
ну вот смотрит получится
{
11: {title3: "title", desc2: "description"},
22: {title2: "title", desc1: "description"},
33: {title1: "title", desc3: "description"}
}
А если я начнут всё это выводить на станицу, то они выведутся по очереди, как есть, то есть 11, 22, 33, то есть по айди, а как отсортировать этот объект в объекте, чтобы он перед выводом, отсортировался по названию, то есть так
{
33: {title1: "title", desc3: "description"},
22: {title2: "title", desc1: "description"},
11: {title3: "title", desc2: "description"}
}
https://basicweb.ru/javascript/js_array_sort.php
Чёто я запутался, можешь пример из этого сделать, я так понимаю сперва нужно будет этот объект обернуть в квадратные скобки, то есть
var material = [{
11: {title: "title3", desc: "description2"},
22: {title: "title2", desc: "description1"},
33: {title: "title1", desc: "description3"}
}]
а дальше
material.sort(( a, b ) => a.title> b.title)
Так? А если у нас значений больше, то есть помимо тайтл и дескрипшин есть ещё значения, то код будет таким же?
Бля чёто я запутался, этот вариант конечно же не работает
И нахуя плодить лишние действия, когда можно сразу все записать в html?
Он же троллит.
Я хуй знает о чём ты, я о том что нахуй мне объявлять постоянно переменные с помощью var let const, если я могу делать это так a=1, и весь код могу писать просто в строку, прямо в хтмл, нахуй мне это выводить в отдельны файл, если этот код срабатывает только на 1 странице, и повторю для долбаёба, я не работаю в конторе, скрипты пишу для себя, так что все имена у переменных 1000500% уникальны и поебать что они будут глобальными, АБСОЛЮТНО
японский бог. Вы хотя бы читайте доку, которую можно за день пролистать.
Нужно пройтись по ключам и создать массив. Затем его отсортировать, как тебе нужно. https://repl.it/@CharonIV/Object
Вот я на пальцах все показал. И убери массивные скобки в своем примере.
нет, я автор калькулятора хохол-69
А вообще только такой способ возможен чтобы хранить все материалы в 1 переменной в куках? Имею ввиду что делаем пустой объект, закидываем туда объекты с ключом материала и уже в каждом объекте внутри ключа сохраняем нужные нам поля из материала? А потом всё это просто парсим в строку и записывает в переменную в локалсторейд или куки? Ну а при извлчение парсим обратно в объект с объектами с помощью джейсон парс?
я вопроса не понимаю. В куках ты хранишь одну информацию, в localStorage, useState, Редакс, context (хуков) ты хранишь совсем другую информацию. Важно, то что в качестве тестовых заданий для фронта (например мувисерчер), тебе предлагают хранить всю инфу в localStorage, это просто чтобы облегчить задание. На деле, ты хранишь свистоперделки в localStorage. Реальную инфу, ты запрашиваешь с бэка SQL и там же её и хранишь. О какой информации идет речь?
const cont1 = document.querySelectorAll('.wrap1');
for (let i = 0; i < cont1.length; i ++) {
cont1.tabIndex=1
cont1.addEventListener("focusin", () => cont1.classList.add('focused'));
cont1.addEventListener("focusout", () => cont1.classList.remove('focused'));
}
Ладно забудем о куки, берём локалсторейдж, там мы можем хранить в 1 переменной только 1 значение, строку, то есть чтобы сохранить массив материалов нам нужно объект конвертнуть в строку для сохранения, и обратно распарсить в объект для извлечения и отризовки на странице, отсюда у меян и вопрос только такой вариант существует хранения избранного в локалсторейдже?
Ну можешь написать функцию, которая будет разбирать твой массив на переменные и каждую отдельно закидывать в стораге, а потом выдирать и заново собирать массив.
(function repeat(){
var element = document.getElementsByTagName('div')[6];
if(!element) return setTimeout(repeat, 100);
Мне кажется это невозможно, а вдруг туда поместят значение из другого кода и вот ты уже парсишь чужие данные, можно сделать что-то типа ключа и проверять на его наличие, но это уже извращение, отсюда и получается что вариант только загонять всё в джейсон массив и сжимать его в строку, просто сортировать этот джейсон объект не так уж и красиво получается, много говнокода с лишними движениями, как вариант с помощью .keys задать каждому объекту айди и уже подставляя этот кей работать с родительским обектом, короче говнокод получается
>Ладно забудем о куки, берём локалсторейдж, там мы можем хранить в 1 переменной только 1 значение
кто тебе это сказал?, ты делаешь объект , в объекте ключей сколько тебе надо. В значения может быть хоть число, хоть объект, хоть массив или строчка. Откуда вы берете эту информацию, что за гавно?
Что тебе скидывать, создаём объект, храним в нём объекты название у которых ключ, айди
array = {
id1: {title: "title 3", desc: "description", "url 4", "img 5"},
id2: {title: "title 2", desc: "description", "url 6", "img 7"},
id3: {title: "title 1", desc: "description", "url 8", "img 9"}
}
Сжимаем его в строку с помощью JSON.stringify и помещаем в перменную в локалсторейдж
Когда хотим вывести данные на стнаницу, распашиваем эту строку с помощью JSON.parse, и вот у нас уже опять объект, но сортировка в нём по айди, а нужно например отсортировать по title перед выводом на станицу, и тут начинается свитопляскоебля с выдиранием айди и добавлением его в массив и уже потом с помощь .sort сортировать это говно подставляя айди и ключ значения из каждого объекта, короче хуй знает поймёшь если надо, я этот способ увидел у хохла на ютубе и хочу узнать у анонов это единственный способ хранения избранного пользольвателя в локасторейд в 1 переменной или есть другеи спосбы, пока способа кроме джейсон обекта сжатого в строку в голову не приходит
Парсишь строку в JSON, а потом обратно.
я говорил про localStorage React
https://repl.it/@CharonIV/sortArr
Все, доволен? Я надеюсь не надо объяснять, как привести к такому массиву и как расширить объект (добавить ключ в объект)
Анон, прикол в чём, как ты теперь удалишь например весь объект с id: "1", по этому и нужно айди задавать снаружи этого объекта, чтобы потом просто по айди его удалить без свистоплясок когда пользователь это захочет, по этому нужен вид именно
id1: {title: "3", desc: "zxc", url:"4", img: "5"},
id2: {title: "3", desc: "zxc", url:"4", img: "5"}
...
Вот десь код абу по распаршиванию и сортировки избанного https://2ch.hk/makaba/templates/js/sharkey.js (М)
Но чёто слишком дохуя у него там кода, можно же намного меньше
какой-то говнокод получается, человек должен нажать удалить из избранного, после чего скрипт просто удаляет объект с этим дивом, всё, пример у тебя перед глазами, добавить или удалить тред из избранного
>К содержимому внутри фрейма обращаться нельзя
С чего вдруг? То, что для кросс доменного фрейма нужно пост мессеж юзать я в курсе, но это если из родительской страницы обращаешься, а я обращаюсь напрямую к фрейму внутри страницы из скрипта Темперманки и выполняю всю логику там.
Но скрипт видимо выполняется до того, как фрейм полностью загрузится, поэтому он не видит элементов. Я пытался подцепить листенер или онлоад, но это не работает. Если же устанавливать таймаут, то все работает, но только 1 раз при загрузке страницы, а при переходе на следующую не срабатывает. Как подправить чтоб работало?
(function repeat(){
var element = var element = document.getElementsByTagName('div')[6];
if(!element) return setTimeout(repeat, 100);
//МОЯ ЛОГИКА
}());
Что интересно, если я заменю
document.getElementsByTagName('div')[6]
На
document.querySelector('любой класс в фрейме');
То вообще ничего не работает. В чем прикол?
Можно и с .sort, но мне кажется всё равно айди нужно делать именем объекта, даже у макаки так сделано, скрин выше
Ты пытаешься сделать на JS, то что возвращает бэк макаки. Он делает запрос к своей базе и сортирует например по id. Затем преобразует это в JSON и через апи отправляет тебе. Все что его JS делает, это рисует по приходящему JSON. Его JS никак ничего не меняет. Гугли базы данных. Если ты хочешь делать тоже самое в минимум движений, то тебе нужно получать эти данные, отправлять к себе на базу и так же сортировать по запросу, который тебя устраивает.
Я тебе предлагал как это сделать через JS. Если тебя это не устраивает, то можешь id пихать в тело объекта, а ключем делать то по чему хочешь сортировать. Все, больше вариантов нет (по крайней мере в моем случае). Если тебе лень это делать, то иди учи запросы к базе и хватит срать в треде.
Хорошо спасибо анон, просто хотелось увидеть максимум возможных способов и собрать из них лучший, а то как хранить всё это в куках/сторейдже я так понимаю вариантов и нет, только в сжатом в строку джейсоне
Бля, я спрашиваю одно, ты мне отвечаешь другое. Фрейм на другом домене, но это не имеет значения, потому что ОН ВСТАВЛЕН РЕКВАЙЕРОМ В ТЕМПЕРМАНКИ. Вся логика выполняется ТОЛЬКО на фрейме, что мне и нужно. Проблема в том, как выполнить логику после загрузки всего контента во фрейме, чтоб скрипт видел элементы в нем. Интервал или Таймаут ее решает, но только при обновлении страницы, а при переходе на следующую скрипт не выполняется.
Когда делаю запрос, то получаю embeded_url, который сайт предлагает вставлять через iframe. Есть какой-нибудь способ вставлять такое через img? А то если на странице 5+ таких фреймов, добавление новых вызывает тормоза.
Я понимаю что нужно использовать в задаче, но не понимаю как правильный алгоритм решения составить
Что обычно вкатывальщики с этим делают? просят помощи и как-то подтолкнуть у других людей, в чатиках или у знакомых прогеров?
Reduce более "широкий" и использовать его для создания массивов костыльно
Reduce - чтобы посчитать сумму:
[1, 2, 3].reduce((acc, x) => acc + x) // => 6
Map - чтобы создать новый массив:
[1, 2, 3].map(x => x * 2) // => [2, 4, 6]
Я конечно не знаю что там, но подозреваю что проблема в том, что там абстрактная хуйня. Совет - не занимайся абстрактной хуйней, решай реальные практические задачи. Как правило как решать реальные задачи субоптимально хотя бы сразу более или менее понятно, делаешь, потом оптимизируешь если не нравится. Вся эта абстрактная хуйня отбила мне напрочь желание кодить в студенческие годы, потом пришел в промышленный кодинг и там этой ебалы вообще нет, промышленный кодинг совсем про другое. И вообще голый JS никому особо не нужен, vue или react учи. У кого-то видел что он когда берет новую фронтохуергу пишет клон трелло, вот напиши клон трелло. Как допишешь, если оно будет норм выглядеть и работать, считай что ты джун и пиздуй искать куда жопу приткнуть, без работы над чем-то реальным в реальной команде будешь развиваться со скоростью улитки.
Ты долбоеб? Зачем ты что-то пишешь, если сам ничего не понимаешь?
>>32721
У них разные предназначения. Reduce чаще используют когда тебе нужно сжать данные или преобразовать их, вычленив из них что-то нужное, поэтому при помощи Reduce ты можешь возвращать любой тип от объкта с массиво, до строки с числом. Map используют для модификации уже существующих данных в массиве, без изменения структуры массива.
Зависит от сложности задачи. Если это задачи уровня Easy, значит тебе нужно дрочить теорию и логику. Для уровня Medium нужны базовые знания алгоритмов. Уровень Hard это уже продвинутое знание алгоритмов, которые ты сможешь решить только если дрочил похожие задачи при изучении алгоритмов.
В любом случае, можешь смотреть на решение и запоминать принцип по какому оно сделано, а также использованный в нём алгоритм. С опытом сам научишься решать также.
Слушай, dawg. Я тебя понимаю. Алгоритмы и вся эта хуерга полезна для развития ума, но по больше части к кодингу реальному отношения особо не имеет. Да ты выучишься алгоритмы сортировки скажем. Но использовать ты будешь скорее всего готовый от фреймворка какого-нибудь или lodash'евский. Все эти размены монеток, управление лифтами, относительно полезно, чтобы не протухнуть. Но по факту, вдупляй в работу с DOM-деревом, вдупляй в аяксы-хуяксы. Меня конечно может обоссут тут, но я не верю в JS на бэке, и вообще не джаваскриптер я, но при необходимости, когда тима осталась без фронта, месяц его замещал на проекте с Vue. Мое мнение - все что на бэке может JS, другие языки могут лучше. А на фронте никаких яблок, монеток, лифтов нет. Слушаешь события, обрщаешься к API, меняешь состояние компонента (или напрямую DOM, если у тебя жакверипараша). Ну или просто слушаешь события и меняешь состояние.
> Алгоритмы и вся эта хуерга
>для нахождения суммы чисел массива от 1 до n хуячит цикл
>для нахождения единственного не дублированного элемента массива, хуячит два вложенных цикла.
>РЯЯ НИНУЖНЫ Я СКОЗАЛ НИНУЖНЫ МААМ СКАЖИ И М
Можно только посмеяться над твоими мантрами.
>Да ты выучишься алгоритмы сортировки скажем. Но использовать ты будешь скорее всего готовый от фреймворка какого-нибудь или lodash'евский.
вы что наркоманы чтоле
чем вам не нравится родной алгоритм сортировки
и что вообще за хуйня этот лодаш, я ни разу не видел ни одного полезного примера с ним, такое впечатление что это набор велосипедных копий того что и так есть в языке, с их forEach я отдельно проорал
>А на бэкэнде никаких яблок, монеток, лифтов нет. Слушаешь контроллеры, достаешь данные из базы, меняешь их и отдаешь на фронт
Да так оно и есть на самом деле. Я пока эти лифтов с яблоками нигде не видел.
Еще хуже сделаю, и сорян за лодаш, его доку проще листать чем жсовую.
_.reduce(_.times(n, v => v + 1), (s, v) => s + v, 0)
_.filter(arr, (v) => arr.indexOf(v) == arr.lastIndexOf(v))
1) Почему? Потому что могу блеат. Потому что в одну строчку. Потому что никому нахуй не нужна сумма чисел от 1 до n. Потому что реальные данные не имеют отношения к 1 до n хуйне, они куда более непредсказуемы. Ну или загуглю.
2) Да не оптимально, зато читаемо, понятно, в одну строчку. Да и кому такие задачи нужны вообще?
Ну то есть реально, когда ты последний раз решал такие задачи для чего-то что где-то в проде крутится?
Нужно вкатиться в ванильный ЖС (на полшишечки), чтобы лучше врубаться в веб. html и css уже освоены, скиньте годные пособия/видеокурсы чтоб было максимально информативно
в шапке треда ничего нет
Смотря что такое врубаться в веб
Завтра ищешь в интернете книжку HTML5 Canvas. Похуй если ничего не поймешь. Затем идешь на w3.org и изучаешь стандарты от корки до корки. Потом зубришь, именно, сука, вызубриваешь содержимое сайта developer.mozilla.org, чтобы от зубов отскакивало. Когда напишешь свой первый сайт - видеоредактор, по пути детально разобравшись в WebGL, скачиваешь и изучаешь любой редактор, рекомендую Notepad++ или Adobe Dreamweaver. Как переделаешь редактор, чтобы можно было добавлять объекты из 3DSMax и красивые 3D-переходы, можешь идти дальше - тебя ждет увлекательный мир JavaScript. WebCL, XUL, сверхбыстрый асинхронный Node.JS, сверхмощная мозговыебывательная многоуровневая обфускация. Отсос хиккующих выблядков / просто неудачников типа рейфага или Flash/Silverlight-хуесосов, которые сосут хуй по жизни не заставит себя ждать и уже через пол года ты будешь получать такие суммы, что любая баба будет течь при одном упоминании твоей зарплаты.
Загрузил хтмл, с помощью селекторов $('селекторы') нашел нужный мне <tr>...</tr> таблицы в хтмл.
Это все получил как cheerio-объект.
let ch_obj = $('селекторы');
А дальше я хочу уже поитерировать <td></td> уже в как дочерние объекты в объекте ch_obj. Но чет запутался нахуй в методах и свойствах у этого чертового объекта ch_obj.
ch_obj - это фактически строка таблицы. Какие методы нужно использовать что бы достать конкретные ячейки этой строки?
>> без работы над чем-то реальным в реальной команде будешь развиваться со скоростью улитки.
Это, увы факт.
мимо-самостоятельная улитка в гос.шараге
п.с. я даже как то устал. Для своей шараги я небольшое приложение на пхп/sql запилил. В ноде подразобрался.
Но все это - самостоятельный пердолинг, от бизнес-работы я далек.
На hh есть учетка с репозиториями, и мне даже hr предложения свои кидают. А я хз че им отвечать, и вот почему: на данный момент имею работу, которая очень хороша по условиям, ЗП - сорокет.
Уходить на галеру в бизнес работать за еду - звучит как хуйня. А на ЗП которая стоит того что бы уйти с нынешней- я не потяну по навыкам.
Я как то ходил в контору одну на собес, написал тестовое, его приняли, потом даже позвали уже общаться с гендиром, обсуждать ЗП и условия. Но он увидел видимо что я по сути и не ищу работу зп 60-70 предлагали, но я ей богу бы не ушел со своей работы скорее всего и короче не позвонили, хотя уже обещали прям что позвонят и пригласят уже решить как поступить, увольняться мне с предидущей работы и т.д.
Короче уныло.
Буду искать удаленку чтоли, и парсеры писать хочу.
чебля?
...
Я не зеленый вкатывальщик. Начинал прогать еще 2 года назад - прошивал микроконтроллеры на Си на предприятии. Затем вкатывался в Питон и в Пыху. Мне не нужно глубоко влезать во фронт, буквально поверхностно освоить жс чтоб было легче работать с вебом в целом Сети Танненбаума уже давно прочитаны, так что тут тоже все норм
Мне только окунуться в жс и не более
судя по твоему посту ты не хочешь работать вообще а не не хочешь работать за еду, раз не хочешь кодить за большую зп чем у тебя сейчас
ты какой-то дефектный, на дворе 2020 год, за 300к в секунду ищут data science и просят на питоне написать hello world, после курса на курсеры. Ты же перекатываешься из Си в Пыху, затем зачем-то хочешь знать чистый JS, который нахуй никому не всрался и при этом всем, ты не задаешь : аноны хочу доку по Реакту/Angular/Vue на офф сайте почитать, норм или где-то в другом месте? Ты же даже не можешь открыть учебную доку по JS, прочитать по диагонали за один день и угомониться
PS какие нахуй видеокурсы по чистому JS, для человека с продакшен опытом СИ? КАКИЕ видеокурсы, что тебе тут не понятно?
Много. У меня в мувике 5 всего
Короче, меня не слушается скрипт, никак не могу заставить его прогнать ссаный цикл.
При первой же итерации счетчик равен links.length - 1, хотя ссылок там больше сотни.
Если поставить условие j < 100, то он при первой итерации будет 99 и цикл прекратится.
Дичь какая-то, уже 6 часов не могу собрать ссылки со страницы.
Элементы берутся нормально, проверял.
наверно потому что айди должен быть уникальным, по этому жс и не может его перебрать, попробуй через кверисилектор по другому значению собрать эти ссылки
продолжай жить в своем маня мирке, у меня пару друзей именно так вкатились туда. Один уже синьер. Но тебе виднее.
Да не, даже просто цикл от 0 до 100, к примеру, не выполняется. Счетчик в первой же итерации 99 и все.
попробуй другой браузер может свой ты выебал
бля анон ты чё сутками сидишь и эти ебучие свечи и графики караулишь? как вспомню, так вздрогну, это же пиздец, особенно когда всё падает, особенно сейчас
в JS треде че забыл?
шо то не въехал че за синтаксис такой уебанский? на стэке помогут если че?
Ты какой-то тривиальной ебенью пугаешь, надо Бурбаками по олдфажному пугать https://books.google.ru/books/about/Theory_of_Sets.html?id=IL-SI67hjI4C
Если че то на пикче объясняется максимально тривиальная ебота для 1го курса, но уже на этом большинство "веб-инженеров будущего" прогающих копипастой с гугла жидко кекнут и откинутся. Что уж говорить променее тривиальные главы
А те умники которые со всем справятся в большинстве своем пойдут во всякии НИИ за копейки на сях писать или еще что-то там, потому что у математиков обычно с головой что-то не то малек. А веб-инженеры будущего пропрыгав пару тройку галер в принципе нормально устроятся, там мозгов так-то больших не надо, не быть дебилом, не быть аутистом и местечко в тепле найдешь.
>пропрыгав пару тройку хуев
Вот теперь правдоподобнее
>пойдут во всякии НИИ за копейки
Мы про дата саенс базарим, але
Откуда в РФ на первом или каком-либо еще курсе дата-саенс? То есть нет, математическую базу которую дата-саенс использует может и дадут, но настолько скучно, оторвано от жизни и вообще, что ты нихуя не поймешь что это такое было и зачем. В итоге в универе всю эту хуйню учат ток аутисты-математики.
['a', 'b', 'c']
[1, 2, 3]
превратить в один массив вида
['a1', 'b2', 'c3'] ?
массив 3 = массив1[0] + массив2[0]
массив 3 = массив1[1] + массив2[1]
массив 3 = массив1[2] + массив2[2]
зипа в джс нет, нужен мэп
const arr1 = ['a', 'b', 'c']
const arr2 = [1, 2, 3]
const res = arr1.map((el, i) => el + arr2)
массивы должны быть равной длины или хотя бы arr1 короче arr2
если второй массив это именно цифры по порядку с единицы он вообще не нужен
const res = arr1.map((el, i) => el + (i + 1))
Ты прав. Приложуху для шараги я писал то ковыряясь пальцем в носу. Хочу пишу, хочу не пишу - хобби короче.
Я немного свои мотивации проанализировал, поэтому решил что буду активно искать удаленку, или работу что по условиям устроит.
Нужно что бы этот скрипт запускался раз в сутки.
Как это сделать?
п.с.
скрипт - в рамках сревера работает. Т.е. сервак работает, выполняет свои функциии. А раз в сутки должен запускаться мой скрипт парсинга и обновлять данные на вэю-морде
crontab.
если средствами джаваскрипта то setinterval, а вообще смотри выше, cron надёжнее
Так не работает:
> import 'chai/register-expect';
А так работает
> import 'chai/register-expect.js';
А что лучше использовать?
Мне для автоматизации тестирования. Выбрал Mocha и Chai, так как про них больше всего написано в интернетах.
Тут что-то странное, должны такие пути ресолвиться правильно
У тебя нода 13+ или babel?
Может у тебя где-то кроме либы есть папка "chai"
На моей машине всё работает с обычным require('chai/register-expect')
При клике на кнопку на страницу добавляется gif через iframe. При каждом новом нажатии все ранее добавленные gif перезагружаются. Можно как-нибудь сделать так, чтобы они не перезагружались?
Хуёрстка. Работа на фрейморках сейчас в основном.
Пишу на реакте, для получения gif использую GIPHY API. У меня поле поиска в которое я ввожу название тега и по нажатию кнопки я делаю запрос гифки по этому тэгу. В ответ АПИ мне вот такое отдаёт: "https://giphy.com/embed/cMnt7i2RykmpW".
Дока говорит, что embeded можно только с помощью iframe вставить. Я так и делаю, но проблема в том, что я все запросы сохраняю и я вывожу все гифки, которые искал пользователь, т.е. при каждом запросе у меня стейт обновляется, что тригерит компоненту, отображающую все этих гифки.
У меня есть форма с инпутом, под которым отображается таблица. Таблица отрисовывает в зависимости от того, что именно отправила форма. Но почему-то каждый раз, когда я что-то пишу в инпуте, вся таблица по новой рендерится. Как привязать рендер таблицы к моменту отправки формы?
https://codesandbox.io/s/elated-rgb-25ste
У меня тоже самое, что и здесь. При любом изменении инпута происходит перерендер списка.
Так вот, как мне использовать эту функцию в других функциях? Как к ней обратиться так, чтобы получить результат? Ведь ей уже передается аргумент jNode из основной функции. А мне нужен сам элемент, но прошедший ожидание.
именно такое поведение и должно быть. У тебя стоит onChange и функция, которая меняет стэйт. Происходит изменение стэйта при каждом символе и ререндер. Это никак не сказывается на производительности из-за того что в Реакте существует Virtual DOM и он смотрит что надо перестроить. В твоем случае меняется только эта строчка в input, больше ничего.
Либо, вот как сказал анон >>34105
Нет, просто это грозит утечкой данных, за счёт выполнения произвольного кода из-под шрифтов,
а ещё - DDoS'ом системы, по причине иммутабельности строкового типа в JavaScript,
так как при изменении строки, и её присваивании её другой переменной,
как и при копировании, каждый раз создаётся новый объект - новая строка.
Так вот, эти операции могут быть зациклены при помощи Тьюринг-полных шрифтов, и замкнуты рекурсивно.
так мне это не надо. нужно чтобы он слал только после моего выбора.
отсылай после клика не меню, добавь делэй
Хочу, чтобы во время загрузки данных от АПИ кнопка была заблокирована, но этого не происходит. Я понимаю, что это происходит из-за того, что у меня друг за другом идут setLoading. Как по умному это провернуть?
https://codesandbox.io/s/stoic-lehmann-k6u18
№1 Import React from 'react'; etc...
А вижу и такой синтаксис:
№ 2 class App extends React.Component {
Чем они отличаются? Проблема у меня состоит в следующем: Проект на ASp.NET Core 3.0, на версии 2.2 я использовал webpackmiddleware, но судя по MSDN - его выпилили из ASp.NET Core. Теперь идет подключение jsEngineSwitcher - V8+ChakraCore, где используется не привычный и не удобный синтаксис 2. Как его измнить на 1? Извиняюсь, если не по теме со своим .NET Core
> Import React from 'react';
Тебе в любом компоненте нужно импортировать реакт, он нужен для jsx.
>class App extends React.Component
Это реакт класс компонент. У него есть своё состояние, которые ты можешь хранить.
Если ты хочешь использовать простые рендер компоненты, то сейчас ты можешь юзать хуки.
Вот этот скрипт
https://gist.github.com/BrockA/2625891#file-waitforkeyelements-js
Сюда забивается нужный элемент
waitForKeyElements (
".field__impl"
, nodeCallbackFunction
);
А эта возвращает тот самый элемент
function nodeCallbackFunction (jNode) {
}
Так как его потом использовать в других функциях? Смотрю доки, но никак не пойму.
у меня при импорте компонентов не компилиться файл, хз чего. Только если задаю в синтаксисе 2
она блокируется, но на милисекунды. Добавь это, чтобы убедиться.
>Как по умному это провернуть?
Для начала добавить этот запрос, а не выдумывать его у себя в голове. Добавить его в useEffect и написать промис, который на этапе формирования будет блокировать кнопку, а когда получает результат, то будет разблокировать.
Спасибо.
Дрюк, там 2014 год жиксери и вообще таймеры.
Используй mutation observer, если нужно следить за изменениями документа.
Как с помощью прокси отслеживать добавляемые аяксом элементы?
Так значит он ограничен размерами родительского блока.
Хуево
вот майкрософт и подмял под себя всю жс-экосистему. гитхаб, вскод, тайпскрипт, теперь еще и нпм
>Используй mutation observer,
Я копал в эту сторону, но ничего не получается. То ли я не догоняю как он работает, то ли он не работает в моем случае. Мне нужно получить элементы со страницы, содержимое которых подгружаются по мере ее загрузки из внешних источников. Там наверно что-то типа парсера или типа того. Короче, нужно получить почти всю страницу, но когда она полностью загрузится. Как это сделать обсервером, можешь показать пример?
Вооооот. Теперь закроет это все нахуй и вернет VBScript и IE6
Для себя выделил гикбрейнс пока что.
Сейчас почитываю learn javascript параллельно закрепляя за какими-нибудь задачками (пока это console.log, alert, prompt + условия). Скудно и мало, но если буду спешить, все надо мной будут смеяться.
>начать изучение
Изучение чего?
Синтаксиса джс? У тебя уже есть лерн джс, этого достаточно.
>гикбрейнс
Хочешь заплатить деньги за курсы, бесплатными аналогами которых захламлен ютуб?
Всё что тебе нужно https://developer.mozilla.org/ru/docs/Web/JavaScript
Нахуй learn javascript
>Точнее, подскажите, с чего точно не стоит, пожалуйста.
>Для себя выделил гикбрейнс пока что.
Я написал, что в гикбрейнс вообще заглядывать не буду
Спасибо, анон
При вызове метода shallow всё крашится. Вот поподробней:
menu test › encountered a declaration exception
TypeError: Cannot read property 'contextTypes' of undefined
34 | fetchMenu: () => {},}
35 | Enzyme.configure({ adapter: new Adapter() })
> 36 | const menu_container = shallow(<Menu {...props} />)
| ^
37 | it('renders <Menu/> template', ()=>{
38 | expect(menu_container.find('a').toHaveLength(1))
39 | })
Есть вопрос. Существует ли вариант используя html5 и js стримить аудио/видео в файл на отдалённом облаке? Так, чтобы если стрим вдруг оборвался, то чтобы файл не корраптился или корраптился не особо сильно.
Знаю только, что можно просто используя getUserMedia() получить аудио/видео, а потом его уже запилить в файл, но мне, как видите, нужно немного не это.
Заранее благодарю за помощь.
Смотришь, какой самый корневой элемент, который грузится сразу. Вешаешь на него обсервер с childList true.
Перебираешь мутации, если добавлен нужный элемент, вызываешь действие.
В ней <p> и под ним два <span>. Как второй спан выровнять по правому краю, кроме float right?
Импорт и объявление компонента это вообще про разное.
Напиши лог, почему не компилируется, там видно будет.
Единственный плагин, который я нашел (CopyWebpackPlugin), умеет это делать лишь во время --watch флага, что совершенно не подходит при сборке продакшен-версии или на какой-нибудь CI/CD-платформе, например.
this.props.history.push(url) , урл в стоке меняется, но компоненты не рендерятся, но когла просто вызываю в скрипте this.props.history.push(url), то все работает
что?
Сап, есть такая проблема:
Есть приложение на ангуляре, навигация в компонентах через router с абсолютными путями.
Сейчас появилась необходимость добавить еще компонент на верхнем уровне, у которого будет доступ к существующим, при этом будет свой машрут с префиксом.
Т.е, было:
host/entities/2
стало
host/entities/2
&
host/PREFIX/entities/2
Из-за того что в некоторых компонентах, навигация через router с абсолютными путями:
router.navigate('/entities')
То при навигации из нового компонента (с урлом /prefix/entities), перекидывает не на тот маршрут.
Где было можно переписал на относительные пути, но есть места где такое не катит.
Какие есть варианты?
Ну кажись получилось. Я сделал перебор элементов в мутации через foreach, и теперь на запрос элемента мне приходит в консоли штук 10 пустых массивов, а потом еще почти сколько же нужных. Я так понимаю это получается перебор по мере их загрузки? Это норм вообще или как?
Мог бы в документации посмотреть а не копаться в гугле
https://webpack.js.org/loaders/file-loader/#publicpath
https://webpack.js.org/loaders/file-loader/#function-2
Оно?
С третьегруппными либами
npm install -D string-replace-loader
{
test: /\.js$/,
loader: 'string-replace-loader',
options: {
search: '(?<=url\().*(?=\))',
replace: 'https://cdn.com',
flags: 'g'
}
}
бамп и PS
Пикрелейтед 2 слова , с одинаковым шрифтом, font-size и кол-вом символов. Однако их ширина отличается
спасибо анон, не знал что такие есть шрифты
Че скажете? И нахуй оно вообще нужно? И чего почитать про нее подробнее?
Существует ли какой-то способ, разблочить setTimeout, пока выполняется и ещё не завершён - цикл while или for?
Смотрите сюда.
Есть promise, и он уже разрешён.
Пытаюсь его вывести, в консоли браузера выдаётся это:
>Promise {<resolved>: true}
>__proto__: Promise
>[[PromiseStatus]]: "resolved"
>[[PromiseValue]]: true
Так вот, какими же хитроумными завихрениями говнокода - взять да выколупать это ёбанное true оттуда???
Оо, внатуре. А то я уже и promise["<resolved>"], и promise.resolved и JSON.stringify(promise) - всё перепробовал, и только 8======D в консоли увидел.
хуета. Надо без async-await как-то запилить, а то не во всех браузерах работает:
>await (new Promise(function(resolve, reject){setTimeout(function(){resolve(true)},500);}));
>Uncaught ReferenceError: await is not defined
Вот, через promise.then() заебись всё пашет, без этих всяких async, await, let, const и стрелочных функций:
>var result_value = false;
>new Promise(function(resolve, reject){setTimeout(function(){resolve(true)},500);}).then(function(result){result_value = result; console.log(result_value)});
>var i = 0; var check_result_value = setInterval(function(){if(i<10){i++; console.log(result_value);}else{clearInterval(check_result_value)}}, 100);
Вот я могу использовать их например для перебора большого массива, чтобы перебор не блочил ничего? Как это будет выглдеть?
Важно понимать, что в синхронных же функциях - циклы, как и рекурсивные вызовы функций - блочат весь поток.
Но можно сделать функцию с петлями - асинхронной, и спать в ней через promise - с await, как-то так:
>var completed = false; setTimeout(function(){completed = true;}, 2000); //true after 2 sec
>//function sleep(ms){var end = Date.now() + ms;while (Date.now() < end){continue;}};//just do nothing, and continue. This while is blocking setTimeout.
>//function is_completed(){for(var test = 1; test<=5; test++){sleep(1000);}return completed;} //5 seconds, but setTimeout blocked, and completed = false;
>function sleep(ms) {return new Promise(res => setTimeout(res, ms));}//sleep, by using promise
>async function is_completed() {while(completed == false){await sleep(1000);}return completed;}//wait in while with sleeping in the loop
>console.log("is_completed = ", (await is_completed()));
Анус себе отсоси, ленивое хуйло. Вы ещё, блять, на стандартнейшем HTML 1.1 не кодили ваши поделки. Никто из-за ваших стрелок ебучьих, проверенные временем, опенсорцные браузеры, не будет менять на какое-то говно проприетарное, копирастическое, потому что проще переписать ваш говенный быдлокод - на нормальный, обратно-совместимый, стандартнейший, каноничный код.
>в синхронных же функциях
>рекурсивные вызовы функций - блочат весь поток
>можно сделать функцию с петлями - асинхронной, и спать в ней через promise - с await
Действительно, рекурсивные вызовы без setTimeout - блочат поток, и при приводят к "Uncaught RangeError: Maximum call stack size exceeded".
Но если их производить по таймауту - то не блочат:
>var completed = false; setTimeout(function(){completed = true;}, 2000); //true after 2 sec
>function sleep(ms){var end = Date.now() + ms;while (Date.now() < end){continue;}};//just do nothing, and continue. This while is blocking setTimeout.
>//var slept = 1; function is_completed(){if(completed==true || slept > 5){return completed;}else{sleep(1000); console.log(slept+"s"); slept++; return is_completed();}}//false after 5s
>//setTimeout(function(){console.log("completed: ", completed);}, 3000)//true, after is_completed finish
>//console.log("is_completed = ", is_completed());
>function x (callback) {setTimeout(function () {if(completed == false){console.log("completed still is ", completed); x(callback);}else{callback(completed);}},500);}//stop, after 2s
>x(console.log.bind(console)); //this is special case of console.log//or //x(console.log);
Очевидно, что здесь, нет async и await, и наверняка, можно было бы даже вернуть completed (как - не знаю), но можно и обработать его через callback.
И вообще, чтоб рекурсией не заниматься, и не выхватить "Uncaught RangeError: Maximum call stack size exceeded" - можно сделать так:
>var completed = false; setTimeout(function(){completed = true;}, 2000); //true after 2 sec
>function x(callback) {callback(completed);}//stop, after 2s
>function return_value(callback){var timerId = setInterval(function(){if(completed){x(callback);clearInterval(timerId);}},100);}
>return_value(console.log); //or return_value(console.log.bind(console));
Подцепил его на перебор addedNodes, чтобы получить элементы, которые загружаются динамически. Потом проверяю наличие элемента с нужным классом и пихаю в массив глобальной переменной, чтоб потом в других функциях можно было использовать. Почему по логам он мне возвращает 4 одинаковых массива?
https://jsfiddle.net/jxy2vo8h/
>>35627>>35658>>35672>>35703
Аноны, вот здесь: https://developer.mozilla.org/ru/docs/Web/API/WindowTimers/setTimeout
Я вижу polyfill для setTimeout и setInterval.
Эти функции, помимо callback-функции и задержки в миллисекундах - принимают ещё какие-то аргументы:
>(func, [, delay, param1, param2, ...])
Вопрос: а можно ли как-то переписать этот полифилл,
так, чтобы при указании, в качестве какого-либо аргумента, определённого значения,
эти функции setTimeout, и setInterval - возвращали значение, возвращаемое callback-функцией,
а не timerId?
А потом, этим новым polyfill'ом - заоверрайдить системные и стандартные функции setTimeout, и setInterval?
Например:
>return timerId = setTimeout(function(){return timerId = value_changed_after_some_time;}, milliseconds, "return_callback_value"); //return value_changed_after_some_time, not timerId CYKABLYAT'
Пробовал уже. Ноль эффекта
>>35479
Кек, ебанутый способ, но я на него думал положиться, если совсем решения не найду. Про лоадер такой не знал правда. думал галпом запилить. Но твой способ тоже что-то не работает. Регулярку я переделал под нужное, в выхлопе ссылки всё равно неизменные. Причём даже вручную попробовал так же замену уже в минифицированном файле сделать и там всё заменилось. Печаль, в общем.
А вот насчёт возврата значения из функции - вообще ничего на ум не приходит...
Кроме как... Вернуть promise, и обработать резульат в then callback'ом:
>var result_value = false; setTimeout(function(){result_value = true;}, 20000); //true after 2 sec or 20 sed (to see timeout error)
>function x(callback, result) {callback(result);}//stop, after 2s, or after 5s
>function return_value(callback_function){var max_timeout = 5000;var wait = 0;return new Promise(function(resolve, reject){var timerId = setInterval(function(){if(result_value == true && wait<max_timeout){resolve(result_value);clearInterval(timerId);}else if(wait>=max_timeout){reject("Too long time: ((wait = "+wait+") >= (max_timeout = "+max_timeout+"))");clearInterval(timerId);}else{wait += 100;}},100);}).then(function(result, err){x(callback_function, result);}).catch(function(err){x(callback_function, err);});}
>return_value(console.log.bind(console)); //or (console.log)
А вот как вернуть его из секции then - вообще хуй знает, блядь.
Переборы массивов чисто cpu-bound и асинхронщина не даёт ничего для этого. В таких случая обычно в другом потоке считают. У нас, считай, в web worker отправить. Люди пишут правда всякие асинхронные итераторы иногда, но, отвечаю, говна только наешься с ними. А вообще промисы нужны для любого io( запросы, чтение из файлов, события).
Ишь ты какой умный! Одного не учёл...
Там что, разве в 2к20-м, заебатые хромы для Windows XP - уже завезли?
И да, ты, кажется, забыл 'http://' дописать, в том же китайском 360ExtremeExplorer,
без исходника, который, и который уже меня вкрай доебал -
так там вообще какая-то хуйня открывается по ссылке. Пирил.
Захардкодить моноширный шрифт тебе уже вроде подсказали
https://fonts.google.com/?category=Monospace
Но лучше стремиться быть гибким. Например
text-overflow: ellipsis;
https://developer.mozilla.org/en-US/docs/Web/CSS/text-overflow
Самое мощное это воткнуть текст в вектор
https://developer.mozilla.org/en-US/docs/Web/SVG/Element/text
Так получишь суперсилу управлять любым масштабированием. Но с большой силой приходят большие заморочки, я пример сходу не смогу накидать.
Нет. В первый раз слышу, даже если что-то дельное говорят то я вряд-ли запомню. Например уже второй раз вижу задачу, где нужно каррирование использовать, но забываю и не знаю как его использовать, потому что не практиковался с ним и не знаю как вообще код писать.
>задачу, где нужно каррирование использовать
Один высер охуительнее другого
Сри в своих дискорд конфочках с такими же раками, нахуй ты сюда это приносишь
>Один высер охуительнее другого
Почему ты такой злой?
>Сри в своих дискорд конфочках с такими же раками
К сожалению только 1 друг шарит в проге, и то недавно с ним познакомился
>нахуй ты сюда это приносишь
Не знаю что делать и ною
Даже китайское дерьмо поддерживает async/await, а ты долбоеб, который о каком-то поддерживаемом легаси говорит.
спасибо, вот ellipsis вообще не вариант, так как это тайтл фильма и обрезать я его не имею права (потому что это не красиво). А с масштабированием буду ебаться.
Overview у меня просто обрезается до 200 символов и добавляется это троеточие
Джейсоны, а давайте-ка сходим на TOR'о-двач, и обсудим там няшную - НАНОБОРДУ: http://76dqlkbo4ffj475k.onion/s/res/771.html ?
Допустим я вставляю эту функцию в App.jsx (т.е. в главный компонент), чтобы все дети всегда знали, какой размер экрана в текущий момент. Зачем мне отписываться от этого события ? Возможно, тут момент, что я не совсем понимаю зачем вообще отписываются, но конкретно тут я знаю, что даже если мы решим загрузить App1.jsx вместо App.jsx, то происходит автоматическое размонтирование всех компонент и вроде бы, если происходит автоматическое размонтирование компонент, то уничтожается весь контект этих функций, а значит и eventListner'ов.
Меня интересует ответ конкретно по моему вопросу, конкретно с этим eventListner'ом , а не вообще.
>Svelte
>Нахуй оно вообще нужно?
Ты работаешь фронтом уже 5+ лет, тебя все заебало, скучно, react / angular уже знаешь, хочется поковырять че нить новенькое, опа svelte, прикольно, можно пет проектик запилить на нем.
Да хер тебе, не поехидничаешь. Я всё-таки настроил это говно. Там порядок лоадеров был неправильный. Я и забыл, что вебпак всё снизу вверх загружает
спасибо, я этот факт не учел
Создал flex окно, в него выводится таблица, прописал overflow: auto;
Хоть и появляется прокрутка, но почему-то все равно таблица обрезается, как фиксить?
Ты забываешь как его использовать по одной простой причине - ты не знаешь язык и у тебя нет опыта его практического использования за пределами готовых рельсов и библиотек.
>ты не знаешь язык и у тебя нет опыта его практического использования
И как тогда выйти из этого круга сансары?
хотя я вот сейчас внимательно посмотрел и вижу, что пунктир от грида справа не вижу. Но это невозможно. У меня все построено на процентах. Весь контент перед глазами, как может вторая колонка гридов быть шире , чем первая. Что за хуйня
походу тут появляется прокрутка вбок и я уже просто туплю.
Там я нашел скрипты - https://www.languagesandnumbers.com/javascript/all-js-20.js
Мы посылаем числа цифрами и получаем ответ буквами на самых разных языках.
Мне нужны все цифры определенная часть на всех языках, хотя бы и в столбик в sql базе ноутпаде.
Есть варианты - написать бота или подобрать и понять пост запрос.
Собственно, яваскрипт я вообще не знаю, подскажите, пожалуйста, правильный пост запрос или объясните как скрипт работает и как его подключить к нормальному языку программирования.
Смарите, как JavaScript может модифицировать байты в скомилированных виндовых бинарниках - portable.exe: https://github.com/username1565/uTox_winXP/releases
Лол.
Я конечно не эксперт, но попробуй использовать <= вместо <
Бля это фотошоп или я действительно вижу ребенка Солженицына и Пучкова
хаскеллисты подъехали
Есть массив данных и асинхронная функция, нужно сделать так чтобы эти данные обрабатывались не больше чем по 10, потом ожидалось подтверждение продолжения работы и так до окончания.
Подумал что нужно воркерами, наткнулся на совет использования worker-farm, но не могу сделать так чтобы оно ждало между вызовами, в смысле вызывается воркер на каждый элемент без промежутка после каждого 10
Развлекаюсь парсером, решил немного попарсить авито, раздел авто.
Использую cheerio.
Короче хочу получить ссылки на фото машины для каждого объевления.Т.е. атрибут src в нужном тэге img.
Каждое объявление имеет одинаковый html.
По итогу в результирующем массиве объявлений первые пять элементов какие нужно - ссылки на картинки нормальные, в соответствии с разметкой.
А воо всех остальных 50 - у по результату для каждой картинки присваивается вот такой странный url "https://www.avito.st/s/a/i/0.gif?f8b9e75"
Ниче не пойму
Врулил, у них ajax-ом по мере прокрутки вниз загружаются src для картинок
Парсит ссылки (элемент массива данных)
и в связи с этим вопрос: как блять найти эту функцию в своем проекте? и как она именно называется ? add или cock? или же cock.add?
Catch
для начала тебе надо поделить массив на кусочки по десять
потом с async/await ты можешь делать так
arrPiece.forEach(async (val) => {
await yourAsyncFunction(val);
})
это самое простое решение, можно еще Promise.all
в любом случае следующий кусок запускаешь по ивенту, нажатие кнопки подтверждения
>Either
Это для try/catch? Есть либы с уже готовыми реализациями? Алсо для if/else мне maybe нужна?
while (urls.length > 0) {
urls_slice = urlssplice(0, 10)
console.log(urls_slice)
urls_slice.forEach(async (val) => {
let answer = await worke(val);
console.log(answer)
})
console.log(>end')
}
Не хочет, в смысле запускать-то запускает, но просто перебором не дожидаясь ответа от выполнения функции и все разом, а не по 10
Кок - объект, ад - его метод.
Так что тебе нужно найти объявление объекта кок и посмотреть код ада.
Но этот вопрос слишком общий, хуй знает что там в глобал скоупе твоего проекта насрано, плюс конкретно в твоём примере .add это вообще встроенный метод глобального объекта Set: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/add.
Ну или ты в жыкверях ковыряешься: https://api.jquery.com/add/.
По идее твоя айдиешечка должна подсвечивать все инстансы локальной переменной при её выделении. Если не подсвечивает, просто гуглишь что-то типа "js .add".
cock.add.toString()
Всего 5 вакансий без опыта в моем миллионнике
Не в борде дело, завтра наною утром ответ.
это на 5 вакансий больше чем в моем :)
бака, я же написал - следующий кусочек запускаешь по ивенту, откуда у тебя появилась петля?
петлю так просто не прервать
Прочитал и прорешал 1 часть Кантора
Практика на задачках <== я здесь!!
Прочитать и прорешать 2 часть Кантора
Не прокрастинирую, не играю, ничем кроме проги не увлекаюсь. Изучаю жс уже полтора месяца.
С задачками ничего не получается. Ни одну задачу на легком уровне на лите решить не могу, захожу на двач ною 5 минут и выхожу обратно втуплять в задачу. Ничего не помогает, всё говорят что не нужно знать сложные алгоритмы чтобы решать легкие задачи.
И дело не с технической точки зрения, что я не знаю как какие методы использовать и т.п, а с алгоритмической. Просто не могу придумать долбанное решение, а даже если придумываю, то реализовать его не могу. Например вчера открыл задачу, втуплял часик, посмотрел решения не смог его анализировать из-за сложности. НЕ ОСИЛИЛ. Зашел на вторую задачу и так по колесу сансары.
Сейчас еще одну осилить пытаюсь. Пока смог рекурсивно обойти все значения, а мне нужно определенного пути. Подсказки и т.д не помогают, даже если решу по ним, то прогресс будет очень маленький или склонный к нулю.
интересно примет ли, лол
>Не прокрастинирую, не играю
Вот это ты зря. Помесишь крипчиков в том же ПОЕ и потом со свежей головой вникаешь. Помогает.
Опыта нет)
Спасибо, няш, я конечно нихуя не понял, но твои объяснения помогли мне придумать кастыль который вроде работает. Сейчас я отойду от радости и попробую дописать это дерьмо
>> Изучаю жс уже полтора месяца.
Мало, со временем придет.
>>ничем кроме проги не увлекаюсь
Начни. Человек лучше работает когда его действительность не монотонная, а контрастная. Что бы эффективно работать тебе придется научить себя эффективно отдыхать - и отдых принципиально не связан с компом должен быть.
И еще, такая трабла. Я немного парсю авито, и загружаю картинки из объявлений. Интереснов вот что, я выше писал - при загрузке страницы атрибут src у тега img проставляется только на первых пяти страницах, в остальных пятидесяти - заглушка.
И при прокручивании странички вниз какой то скрипт проставляет на место заглушек в src - уже правильные сслылки на картинки. Но суть в том что в этот момент браузер не отправляет ajax на сервер авито. То есть правильные ссылки загружены сразу, вопрос - как их найти?
Может они в какой то клиентской базе данных? Редис?
Как проверить ?
Как то можно посмотреть в браузере какой скрипт сейчас отрабатывает?
да анон спасибо все так и оказалось. кок это объект, ад это метод с ajax запросом.
Например, есть страница, на ней 40 имен Вася петя итд, рядом значение - количество голосов и кнопка проголосовать. При нажатии кнопки количество голосов за этого человека увеличивается на один, внезапно. Голоса для надежности хранятся в sql. Это всё просто и понятно, а теперь - как сделать так, чтобы при нажатии кнопки одним человеком голоса сразу обновились у всех, кто смотрит данную страницу (в ирл задаче на неё человека три будут смотреть), при этом в идеале не весь массив слать а только вася=40. Просто хз как это вообще гуглить.
>ничем кроме проги
Во-первых, пиздишь сам себе.
https://pomotodo.com/
Позаписывай-ка помидорки за неделю. Если не знаком с техникой, то g:pomodoro. Таймер останавливать нельзя. Если отвлёкся -- отменяешь помидорку. Если учишься работать, то учишься работать. Уверен, фактический результат будет отличаться от твоего восприятия собственного титанического труда.
Во-вторых, извольте анекдот:
Молодой врач жалуется опытному на сложный случай: "Не знаю, что делать". Опытный спрашивает: "А пациент твой играет в гольф"? Молодой не понимает, как это может быть связано. Опытный говорит: "Очень просто. Если играет, то пусть прекратит. Если не играет, то пусть начнёт. И всё у него изменится".
В-третьих, в интернетах ты уже должен был заметить, что все твои проблемы не то, что не уникальны, а не проблемы даже. Во тут
https://www.coursera.org/learn/learning-how-to-learn/
тебе разжуют, почему утренний душ это лучше место для изобретений. Или почему интенсивней биться головой об стену не помогает.
>С задачками ничего не получается.
А почему должно получаться? Для начала Канторович пишет хорошо, но только про простые практические вещи в простом языке. А задачки, они не про синтаксис или применение языка.
Посмотри на Ютюбчике про алгоритмы и структуры данных на ЖС, посмотри на других языках, чтоб утёнком не быть, от языка оторваться. Там есть бородатый няш, который питона душит, быстро у тебя в рекомендациях появится.
Конечно же я обязан на Лиспе настаивать ))))))))))))))))))))))))))))))
https://www.edx.org/course/how-to-code-simple-data
> уже полтора месяца
Даже если бы ты трудился по 8 часов в день, это бы получилось 250 часов всего-то. Что конечно заметно и я уверен, Илюха тебя уже научил делать некоторые забавные штуки. Но давай честно, если бы это было вот так просто, за пару часов, стали бы за это 300к платить?
Спасибо.
Павильный ответ -- да.
Жопаскрипит, благодаря Господом нам посланному Айку и дальнейшей благой карме, достойно реализует прям все парадигмы. Это позволит тебе использовать его так, как того требует задача.
Если твоя программа похожа на чистую функцию, принимает данные и однажды даёт результат, то тут функциональщиной ваще красиво. Но как только появится какое-то состояние, ты сразу упрёшься в проблемы ветвления и вывода и пойдут монадки в монадки, ризон баут ит станет просто невозможно.
И с жооп похожая история. Пока твоя программа это конкретные вещи, которые делают конкретные вещи, очень красивая ЮМЛка получается. Как только ты попытаешься сделать что-то немного универсальней или даже добавить "чистых выдумок" для безопасности, всё сразу превратится в тот мемес, который все видели, ну или в "банан и все джунгли".
Поэтому Жопаскрипит не только позволяет всем этим пользоваться, но и позволяет всем этим пренебрегать. Невозможно без реанимационной бригады нормально объяснить хардкорному адепту любой парадигмы, что классы это функции, а функции это объекты, а объекты могут инкапсулировать чистые функции, которые всё равно могут получать состояние из замыкания. Да даже всем смешная система типов позволяет в пару строчек такое обобщённое программирование делать, что в других языках это будет неопределённым поведением программы, не компиляеца.
Большая свобода это большая ответственность. Поэтому пиши просто, пиши под задачу, пиши для людей, не злоупотребляй, не выёбывайся.
> стали бы за это 300к платить?
А че если выучить вот это все, можно сразу на 300к вкатится джуном ?
Вот сам конфиг вебпака: https://pastebin.com/2tdSWZQu
Нет, нужен СТОЛИЧНЫЙ ОПЫТ.
и вот когда я обращаюсь с этому баттону в таком виде $('#add span').addAttr('style') то у меня срабатывает почему то только на первый блок, а второму ваще поебать. в чем может быть проблема?
Чаще экспериментировать и писать для себя всякие штуки. Попробовать написать "свой реакт", "свой стейтмендежер", "свой движок для игр", на самом примитивном уровне. Должно быть интересно. Если не интересно - то да и хуй забей
Угу, конешно. Я уже напердолился парсеры писать на node, данные в файл, в базу, обратно на фронт(который из компонентов реакта могу собрать), хоть в жопу к дьяволу обратно отправлю. Все асинхронно, промисы + async/await. Плюс все это могу сделать и на пхп, без асинхронности естественно. И чет не отрывают меня с руками/ногами.
Что бы хорошо поднимать в этом деле деньги - нужно или прям быть с хорошим опытом и разбираться в теме хорошо. Либо подскакивать кабанчиком, искать больших денег, пилить свое - но это совсем не каждому дано. Назадротить до уровня "возьмите меня на галеру на семьдесят тыщ" считаю проще.
https://518770.playcode.io/
Бабок платят уже не так много, а что бы платили много, нужно въебывать как вахтовики, т.е. реально напрягать свою жопу.
есть такое
рыночек порешал, такое в JS, питоне, пхп, шарпах и джаве.
Сейчас тоьлко девопсы и комьютер сайнс хорошо себя чувствует.
Ну еще сишники и разрабы под UNIX боги до сих пор
Мой вариант, в две строчки:
Раз:
>var toHexString = function(buffer, Up) {var s = '', h = '0123456789'+((Up)?'ABCEDF':'abcdef');(new Uint8Array(buffer)).forEach((v) => { s += h[v >> 4] + h[v & 15]; });return s;}
Два:
>var sha256_hash = ""; crypto.subtle.digest("SHA-256", new TextEncoder().encode('data_for_hashing').buffer).then(function(res){return hash = toHexString(new Uint8Array(res)); console.log(hash); return hash;}); //async sha256-hash.
Нет. В срансках пхп онли для старта. А нода - это для развития, в последствии.Астнхронность и событийно ориентированность это хорошо для общего развития
Спорное утверждение. Нода совсем не погремушка по функционалу и скорости. И для нуба - ощутимо сложнее того же пхп. Просто специфичная штука
Так это хорошо же. Количество вкатывальщиков снизится, рынок стабилизируется. Халява конечно кончится для любителей нихуя не делать за дорого. А если ты норм спец, и не овощь - то денег ты всегда найдешь. Вообще эта индустрия крайне инфантильна , люди зарабатывают хорошие деньги, люди близки к гигантскому рынку. А результат - бесконечное нытье про выгорание , лол.
Инфантильные нытики - и это кстати хорошо для подскакивающих кабанчиков.
>джаве
Ну хуй знает, дохуя вакансий на джунов-стажёров в ДС вижу.
Друг пишущий на джаве говорит, что адекватных джавистов с руками отрывают.
а толку от стажера? там платят копейки.
лучше идти в макдак и получать свои 50к.
а дома из стажера в джуны знания подтягивать
можно по быстрому запилить реал тайм приложуху
Через год работы стажером ты можешь получать в полтора-два раза больше, чем в макдаке.
Через год работы в макдаке ты можешь заработать варикоз и депрессию.
нанимаю стажеров по 3-5 штук в год.
отдаем им самую рутинную работу, все помои разработки.
после чего они все равно сваливают.
Аноны, привет.
Хотели бы дописывать этот лютый код?
там внизу
https://2ch.hk/makaba/templates/js/sharkey.js (М)
Не надо ничего дописывать, лучше просто поменяй let на var, в этом скрипте, чтобы двач в старых браузерах открывался.
Вы видите копию треда, сохраненную 31 мая 2020 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.