Вы видите копию треда, сохраненную 12 сентября 2023 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Больше пары строк кода в посте или на скриншоте ведут в ад.
Для программирования на HTML https://codesandbox.io
Для Node.js с консолькой https://repl.it/languages/nodejs
Если рассчитываешь получить дельный ответ, сформулируй правильно вопрос: «что я хочу получить, что я для этого делаю, что я вместо этого получаю». Если/когда самостоятельно найдёшь решение — поделись в треде, мы за тебя переживаем.
Документация - https://developer.mozilla.org
Руководство для вката - https://github.com/acilsd/wrk-fet#javascript
Ну это прям базовая база. Раньше хрюндели хотя бы как человеки общались и если что хоть писали, что вы не подошли, даже по абстрактной надуманной причине, но они отписывали. А теперь тебя после собеса тупо гостят, лол. А когда спрашиваешь "ну чё там?" или описать какие-то организационные моменты - тебя ещё и пассивно-агрессивно пытаются оскорбить.
Новый перспективный веб-фреймворк Cample.js. Реактивность без VDOM
На сегодняшний момент (версия 3.0.1), фреймворк является активно поддерживаемым в разработке нового функционала. Есть поддержка работы с данными, которые благодаря реактивности без виртуального DOM отображаются крайне быстро:
Тесты быстродействия фреймворка(js-framework-benchmark)
Тесты быстродействия фреймворка
(js-framework-benchmark)
Это не самый быстрый результат из всех, которые существуют на данный момент среди фреймворков. Но, поэтому речь идёт о перспективности.
К примеру, у Vue скорость создания 1000 строк составляет 42 секунды, а у Svelte 48.4 секунды (на момент написания статьи).
Конечно, эти фреймворки во много раз превосходят Cample.js по функционалу и сравнение недостаточно полное. Но, в данном сравнении берётся лишь такой пункт как скорость.
Сама разработка фреймворка началась около года назад. Тогда, была выбрана модель создания компонентов через экземпляры классов. То-есть, компоненты создаются следующим путём:
const component = new Component("new-component",
`<div class="component">
{{component_text}}
</div>`)
На мой взгляд, данная структура является удобной и достаточно практичной. Чтобы не писать постоянно большие конструкции из new Component, была введена также функция, с которой компоненты обрабатываются таким-же образом, но при этом сам код существенно уменьшается.
const newComponent = component("new-component",
`<div class="component">
{{component_text}}
</div>`)
Также, была выбрана модель обработки данных через функцию, возвращающую объект с данными. Сами данные отображаются в HTML template благодаря интерполяции строк.
const newComponent = component("new-component",
`<div class="component">
{{component_text}}
</div>`),
{
data: () => {
return {
component_text: "Text",
};
},
})
Эта конструкция позволяет обрабатывать данные гораздо лучше, чем если бы просто передавался объект.
Также, для изменения данных используются функции, которые передаются через свойство script. Сами функции объявляются в объекте functions.
const newComponent = component("new-component",
`<div class="component" id="el">
{{component_text}}
</div>`),
{
data: () => {
return {
component_text: "Text",
};
},
script: [
({ elements, functions }) => {
const setText = (e) => {
functions?.setText((data) => {
return "NewText";
});
};
elements?.el?.addEventListener("click", setText);
},
{
start: "afterLoad",
el: [{ el: "#el" }],
},
],
functions: {
setText: "component_text",
},
})
Также, у фреймворка присутствует объект each, который повторяет HTML разметку в зависимости от данных.
const newEach = each("new-each",
()=>["val"],
"<div>{{data}}</div>",
{
valueName:"data"
}
);
Все эти компоненты обрабатываются через экземпляр объекта Cample следующим способом.
cample("#example", {
trimHTML: true,
}).render(
`
<div class="example_page">
{{newComponent}}
{{newEach}}
</div>
`,
{
newComponent,
newEach
}
);
Конечно, большинство функций, которые необходимы сегодня для создания prod сайта пока не поддерживаются, но работа над фреймворком идёт.
Фреймворк также довольно неплох тем, что основан на реактивности без виртуального DOM, которая в теории может быть гораздо быстрее, чем реализация через виртуальный DOM.
Если у вас есть мнение по данному фреймворку, будет очень интересно почитать о нём в комментариях! Спасибо большое за прочтение статьи.
Ссылки:
https://github.com/Camplejs/Cample.js
Новый перспективный веб-фреймворк Cample.js. Реактивность без VDOM
На сегодняшний момент (версия 3.0.1), фреймворк является активно поддерживаемым в разработке нового функционала. Есть поддержка работы с данными, которые благодаря реактивности без виртуального DOM отображаются крайне быстро:
Тесты быстродействия фреймворка(js-framework-benchmark)
Тесты быстродействия фреймворка
(js-framework-benchmark)
Это не самый быстрый результат из всех, которые существуют на данный момент среди фреймворков. Но, поэтому речь идёт о перспективности.
К примеру, у Vue скорость создания 1000 строк составляет 42 секунды, а у Svelte 48.4 секунды (на момент написания статьи).
Конечно, эти фреймворки во много раз превосходят Cample.js по функционалу и сравнение недостаточно полное. Но, в данном сравнении берётся лишь такой пункт как скорость.
Сама разработка фреймворка началась около года назад. Тогда, была выбрана модель создания компонентов через экземпляры классов. То-есть, компоненты создаются следующим путём:
const component = new Component("new-component",
`<div class="component">
{{component_text}}
</div>`)
На мой взгляд, данная структура является удобной и достаточно практичной. Чтобы не писать постоянно большие конструкции из new Component, была введена также функция, с которой компоненты обрабатываются таким-же образом, но при этом сам код существенно уменьшается.
const newComponent = component("new-component",
`<div class="component">
{{component_text}}
</div>`)
Также, была выбрана модель обработки данных через функцию, возвращающую объект с данными. Сами данные отображаются в HTML template благодаря интерполяции строк.
const newComponent = component("new-component",
`<div class="component">
{{component_text}}
</div>`),
{
data: () => {
return {
component_text: "Text",
};
},
})
Эта конструкция позволяет обрабатывать данные гораздо лучше, чем если бы просто передавался объект.
Также, для изменения данных используются функции, которые передаются через свойство script. Сами функции объявляются в объекте functions.
const newComponent = component("new-component",
`<div class="component" id="el">
{{component_text}}
</div>`),
{
data: () => {
return {
component_text: "Text",
};
},
script: [
({ elements, functions }) => {
const setText = (e) => {
functions?.setText((data) => {
return "NewText";
});
};
elements?.el?.addEventListener("click", setText);
},
{
start: "afterLoad",
el: [{ el: "#el" }],
},
],
functions: {
setText: "component_text",
},
})
Также, у фреймворка присутствует объект each, который повторяет HTML разметку в зависимости от данных.
const newEach = each("new-each",
()=>["val"],
"<div>{{data}}</div>",
{
valueName:"data"
}
);
Все эти компоненты обрабатываются через экземпляр объекта Cample следующим способом.
cample("#example", {
trimHTML: true,
}).render(
`
<div class="example_page">
{{newComponent}}
{{newEach}}
</div>
`,
{
newComponent,
newEach
}
);
Конечно, большинство функций, которые необходимы сегодня для создания prod сайта пока не поддерживаются, но работа над фреймворком идёт.
Фреймворк также довольно неплох тем, что основан на реактивности без виртуального DOM, которая в теории может быть гораздо быстрее, чем реализация через виртуальный DOM.
Если у вас есть мнение по данному фреймворку, будет очень интересно почитать о нём в комментариях! Спасибо большое за прочтение статьи.
Ссылки:
https://github.com/Camplejs/Cample.js
Этот вкатун что-то начинает понимать.
И не поспоришь.
Макаки резукрашиватели кнопок, да - все.
Потому что сейчас нужны только фуллстеки.
const str = "хуй"
const replaced = str.replace("залупа")
if (replaced === str) return null;
return replaced
там replace еще второй аргумент принимает и первый в твоем случае должен быть регуляркой. Разберешься короче
Ето хорошо. Главное, не иди к конкурентам. Иначе их веб интерфейс тоже станет тыквой с ссылками ведущими в undefined.
>к конкурентам
В гугл что ли? Они же в своей швятой россиян боятся больше чем игиловцев с афгана
Да я просто в душе не ебут, откуда это всё тянется. Есть несколько аггрегаторов, которые друг с друга аггрегируют в передачелло. На одном отваливается ссылка из-за, например, отмены рейса - в другом ссылка болтается пока время рейса не пройдёт. Или же где-то отваливается ссылка и её выпиливает, а где-то UNDEFINED HHAHAHAHAHHAHAHA LOH PIDR DEREVO O(1) IF ELSE IF ELSE IF ESLE IF ESLE IF PARAOLYMPIC PARACODING
Ну подумаешь привели к строке - со всеми бывало
> props: PropsWithChildren<TextProps>
react v < 18
Явное указание типа пропсов, который должен был посчитаться из дженерика, зачем?
> style string: string | govno | mocha
Говно/моча не присвоится без каста в строку
> lineHeight
Ковальски, дефолтное значение? Я из-за этого вынужден ловить андефайнеды?
> клали хуй на eslint
> lineHeight без дефолтного значения
> lineHeightConfig
Буквально назват по типу, кастуется в LineHeightConfig. Прописать типы на константе, не?
> size && maxLines *
Это настолько говномагия, что даже не хочу знать что и где ебанётся без дефолтных значений, когда оно вернётся из тернарника
> style.webkitKoKoKo = number
То же что и выше, строка, Ковальски, нам нужна строка Record<string, string>
А вы можете найти кратчайший путь в графе за N*logN времени? Нет? Мы вам перезвоним.
>Говно/моча не присвоится без каста в строку
>Ковальски, нам нужна строка Record<string, string>
Джунишка детектед. Тут нежен типок CSSStyleDeclaration
Кому будут показывать этот граф, если форма не натянулась?
> > style string: string | govno | mocha
> Говно/моча не присвоится без каста в строку
да и я немного погорячился, так как давно не сувал стили в реакте.
Но будет правда если обращаться к elem.style.prop = "string pliz"
>на типизацию реакта
Чел, оформляй спокуху и иди дрочить алгоритмы. https://drafts.csswg.org/cssom/#the-cssstyledeclaration-interface
Да как угодно ебать. Первое, что пришло в голову:
1. Меняешь классы/аттрибуты у элементов
2. Меньешь атрибут style уэлемента
3. Удаляешь/добавляешь жсом <link> и <style> На страницу
4. Ручками создаешь правила у CSSStyleDeclaration
Я готов поспорить еще есть не менее десятка способов стили менять, дохуя их.
Начни с этого: что я хочу сделать и зачем мне это надо?
Это если ты планировал получить конкретный вопрос, а не быть посланным в mdn.
Будто на строчках кода экономили.
1. Я бы пропсы деструктурировал в аргументах, тупо шобы дебажить проще, играясь с дефолтными значениями. Ну тогда оно в 100500 строк развернётся сразу, это да
2. Определение типа наверно вынести куда нить, наверняка где-то ещё такая хуйня используется
3. Логику вынести, инкапсулировать в каком-нибудь билдере
4. Часть тернарника size && всрато выглядит, типо посмотрите я дохуя оптимизатор
5. else if нахуя, ты ебанутый?
6. Коробит вообще от явной типизации компонента, как и от объявлений const которые экспортируются. Понятно что кейс другой немного, но что если реф передать или в мемо обернуть, всрато выглядеть будет
ещё не заметил, TextTypeSizeMap это чё вообще? Нам точно нужно это как-то конструировать? Или может просто бахнуть объект с типизацией? Возможно даже кастовать тип через as не придётся
Ну чел на строчках экономил, вынес бы в отдельное место и не пришлось бы затыкать еслинт
Ты не шаришь. На лекциях в МГУ учили, что Map<string, string> на 0.00001% быстрее чем объект типа Record<string,String>
Кстати, самое веселое, что объект обычно быстрее чем map из-за оптимизаций движка.
>ну если в мапе штук 10к записей, то может и быстрее
Не, даже если записей дохуя объект все равно будет быстрее. Ну, если у тебя в качестве ключа строка используется. Во всех остальных случаях офк map будет значительно быстрее.
тут предупреждения даже не логики, а форматирования, уже намекает
Там не критичная для жизни хуйня, а ссаный перенос, потому что я так вижу. Отключено не из-за того, что, например, TS не может вывести тип (так получилось, дядя Кабан, скоро прикрутим TS), или например, нужно перехватить в rest остаток пропов, чтобы их не заспредило вглубь в нативный элемент и консоль обосралась под себя.
Я забыл где, но в нод.жс есть какая то библиотека где при попытке заюзать енум он устарел.
>No, enums are not considered legacy in TypeScript. They are a useful feature that allows developers to define a set of named constants. This can make code more readable and maintainable by giving meaningful names to values that would otherwise be represented by obscure integers or strings. Enums have been a part of TypeScript since its inception and are still widely used in modern TypeScript codebases.
Гопота говорить изволит. Молвит оно, шо никто в говно мамонта не записывал эти ваши енумы.
Если интересно, глянь что за либа. Может индус под приправами что-то нахуевертил.
>в нод.жс есть какая то библиотека где при попытке заюзать енум он устарел
Чел, в нод.жс библиотеках нет енумов в приницпе, потому что они пишутся на чистом JS/крестах. Т.к. ты врятли в своей жизни писал на крестах (енумы там есть), то тут ты скорее всего хуйню какую-то чешишь.
откройте окно
Это утверждение. Библиотеки написаны на ЖС, а в ЖС енумов нет и пока не планируется. То, что какой-то рандомный макака-мейнтейнер нашлепал там говнокода в @types/node роли не играет.
Терпи. Если не нравится - в айти тебе не место.
Мало ли я чего-то не знал, надо спросить
реактодебил 3 годика
Да все равно не перезвонят. На рынке 1.5 реальные вакансии и человек 50-100 сеньоров-помидоров без работы.
Да похуй, главное что тех собес назначили. В одной конторе уже 2х часовую еблю алгоритмами прошел, пойду на след неделе на собес уже с PO.
Чел, ты заебал демпинговать. В приличную контору ОТ 250к для 3 лет. А говноконторы могут и 150 в потолок ставить.
ангуляр 2 года 247к на руки
>ты заебал демпинговать
У меня вводные не очень. Нет профильного образования (даже СПО), мухосрань, софт-скиллы ниже среднего.
Так и я тоже. От тебя требуется чекнуть прайс на свои скилы на херхантере по вакухам приличных контор, накинуть 10% и озвучить хрюше. А не идти с ней и ее друзьями пить пиво.
>чекнуть прайс на свои скилы на херхантере
Пытался. Чек успехом не увенчался, потому что везде вилка не указана. Тем более у приличных контор, указана либо у кабанов ИПшников, либо у галер аутсорсных.
>А не идти с ней и ее друзьями пить пиво.
Я из дома то выйти боюсь, а ты про то, что бы куда-то идти.
Блэть, жмакни чекбокс "с указанной зп" или как-то так. И фильтруй по стране, а не по муходрищенску своему
> продешевил
Нет, охуел. Мне после этого не перезванивали. Максимум через неделю, если не загостят - найдут аналогичного распиздяя на 160-180
Та хуй знает, мне тоже несколько хрюш в молчание ушли. Но три техсобеса все таки назначили, один из них успешно прошел.
Не хочу расписывать подробно, пока по собесам хожу. Если в общих чертах, то таски требующие рисерча, принятие важных решений по проекту, работы с аналитиками и другими отделами, доработка сторонних либ и реверсинженеринг решений конкурентов.
Нахуя лол? Большинство из них именно что сильно специфические, я их даже расписывать заебусь.
Ну вот по реверсинженерингу таска: прибегает менеджер и говорит что у конкурентов есть крутая фича, эксплуатирующая баг хрома, вот тебе зашифрованный скрипт.
Или таска связанная с подключаемым оборудованием: пук-мук требования пока не составили, примеров и эмуляции толком нету, где-то в соседнем отделе такое делали похожее.
>>65639
Сочувствую.
>Нахуя лол?
Да ты же джун обычный, который после вката просто прекратил своё развитие и тупо шлепал таски из жиры. Так бы сразу и сказал.
Как скажешь, свои таски распиши, посмотрю хоть издалека на ответственные сложные задач.
>ангуляр 2 года 247к на руки
ангуляр 2 (на самом деле 1, но для кабана 2) 120к.
рыночек делает бульк.
Ну вот последнее, чем я занимался: реализация редактора ациклического направленного графа с десятком различных типов узлов, параллельными ребрами и рендерингом на Pixi.js через WebGL.
100k оклад мидол
мне как-то тру помидор-обезьяна скидывал в этом треде его тестовые.
давайте порешаем его задачки.
А азадание то где? В первом надо кастомный эвентэмиттер реализовать? Во втором что? Написать собственную жиквару? В третьем очевидно создать объект и вызвать функцию как метод этого объекта. В четвертом промис олл.
мидол 100к
Были тех собесы, в конце тебе говорят: бля заебись, супер, когда выйти сможешь? По настроению чувствуется ВАУ. Потом у тебя ехидно спрашивают ожидания, 2 раза переспрашивает, в конце: на руки, да? Через неделю просто тыкаешь палочкой, когда в обещанный срок не ответили, ещё через неделю - нашли другого.
Где-то чисто сливал из-за нервов и не мог например наговнокодить на коленке элементарную хуйню. Но это в расчёт не беру.
А некоторые да, банально на предскрининге уточняют ожидания и в игнор.
>А нафига канвас для редактора?
А затем, что я изначально пилил на SVG, но очень быстро случился обсер по причине перформанса (>1000 нод уже пиздец лагодром). Пришлось переделывать под канвас.
>Типа такого что-то?
Ну да, только там в один инпут может идти неограниченное количество ребер, в том числе параллельных.
Речь идёт про ноду, нода не умеет в тайпскрипт. Только в WASM и на JS.
Его ответ ниже.
>Нужно порядок логов установить? Пиздец, я только с промисам и таймаутами заучил, а тут вообще нихуя не понятно.
Не, нужно реализацию своего евент емиттера написать: должны быть методы on (добавляет функцию на событие), off (удаляет функцию из события), emit (эмитирует событие). Промисы и таймауты тут ни к чему. Одну из реализаций event emitter ты используешь, когда на события подписываешь через addEventListener например.
>Уже и забыл как выглядит жиквери. Что там сделать нужно, не понял, если честно.
Ну собственно свою демку джейквери.
>Попытался, но чет не пошло. Сохраню задачку, интересная.
В 3 можно просто положить функцию в объект и вызвать из него. 4 заебисто да, обычно просто свою реализацию Promise.all просят написать, тут усложненная
Приложу скрины как я решил задачи на собесах, наверняка можно доебаться до чего то (например юзать сет вместо массива в первой), но я не рефачил
скрины его решений в 273, если что.
>1
class EventEmitter {
#et = new EventTarget();
on(name, cb) {this.#et.addEventListener(name, cb)}
off(name, cb) {this.#et.removeEventListener(name, cb)}
emit(name) {this.#et.dispatchEvent(new Event(name))}
}
>2
function $(selector) {
if (!(this instanceof $)) return new $(selector);
this.items = [...document.querySelectorAll(selector)];
this.addClass = function(cl) {
this.items.forEach(node => node.classList.add(cl));
return this;
}
this.toggleClass = function(cl) {
this.items.forEach(node => node.classList.toggle(cl));
return this;
}
this.removeClass= function(cl) {
this.items.forEach(node => node.classList.remove(cl));
return this;
}
this.css = function(css) {
this.items.forEach(node => Object.assign(node.style, css));
return this;
}
this.html = function(html) {
this.items.forEach(node => node.innerHTML = html));
return this;
}
}
если ему надо еще перегрзуи из живкары реализовать пусть нахуй сходит
>3
const bind = (context, func) => {
const funcSymbol = Symbol("bindedFunction")
const obj = {[funcSymbol]: func};
Object.assign(obj, context)
return (...args) => obj[funcSymbol](...args);
}
>4
чет в падлу, я на свои 150к уже овтетил, так что пусть нахуй сходит с такими требованиями.
>1
class EventEmitter {
#et = new EventTarget();
on(name, cb) {this.#et.addEventListener(name, cb)}
off(name, cb) {this.#et.removeEventListener(name, cb)}
emit(name) {this.#et.dispatchEvent(new Event(name))}
}
>2
function $(selector) {
if (!(this instanceof $)) return new $(selector);
this.items = [...document.querySelectorAll(selector)];
this.addClass = function(cl) {
this.items.forEach(node => node.classList.add(cl));
return this;
}
this.toggleClass = function(cl) {
this.items.forEach(node => node.classList.toggle(cl));
return this;
}
this.removeClass= function(cl) {
this.items.forEach(node => node.classList.remove(cl));
return this;
}
this.css = function(css) {
this.items.forEach(node => Object.assign(node.style, css));
return this;
}
this.html = function(html) {
this.items.forEach(node => node.innerHTML = html));
return this;
}
}
если ему надо еще перегрзуи из живкары реализовать пусть нахуй сходит
>3
const bind = (context, func) => {
const funcSymbol = Symbol("bindedFunction")
const obj = {[funcSymbol]: func};
Object.assign(obj, context)
return (...args) => obj[funcSymbol](...args);
}
>4
чет в падлу, я на свои 150к уже овтетил, так что пусть нахуй сходит с такими требованиями.
>>4
>чет в падлу, я на свои 150к уже овтетил, так что пусть нахуй сходит с такими требованиями.
Неосилятор, спок.
Иди кнопочки покрась.
Ну и 3 задача намного сложнее. там же еще могут контекст сравнивать по instanceof, Object.getPrototypeOf и подобному. Тут без чакушки с намберпрототайпом не справится.
Ну и я новый объект создал потому что context может быть sealed.
const urls = [...];
const results = [];
let lock = null;
let running = 0;
for (const url of urls) {
if (running === 5) {
await lock;
}
running++;
const pr = fetchUrl(url).then(data=> result.push(data)).then(()=>running--).catch(console.log);
if (running === 5) {
lock = new Promise((resolve, reject) => pr.then(() => {lock = null; resolve();}).catch(console.log));
}
}
гони мой оффер на 150к кабан клыкастый
тот дядька писал, что не сидел на кодварсе/литкоде.
а вообще, просто гугли. ну или у анонов попроси, ну или в чатике каком-нибудь.
Мы перезвоним Вам вечером, Анон. На сегодня назначено еще несколько интервью.
Было приятно с вами пообщаться!
Если будут какие-либо вопросы, обязательно пишите в чат!
Лол, пока писал вспомнил.
Эти пидоры меня в итоге задинамили.
Похоже не сможем мы им скормить пасту Анона.
Ну и похуй.
Лол, я уже забыл и про них.
мимо анон пытавшийся разжевать потенциальные ожидания от тестового
>frontend подается на fullstack
>120к стажеру, когда тут миддлам по 100к платят
Ебалус имагинарус?
Я, кст, пока так ее и не прочитал.
Она у меня в тудушке висит, лол.
На выходных может пройдусь.
>это тебе
Ебнутся, я не такой долбоеб так унижаться перед хрюшами.
наверно поэтому у меня за 23 года так и не было тянки
Ну как идея - прикольное задание. Можно поехавшим как эти ЕБА продавать подписку, и таксить дополнительно по метрикам. Но я думаю есть полно аналогов доступных. Эти просто своё хотят.
Ты этим гордишься что ли? Что за такие сложные задачи тебе жалкие 100к платят? Тебя же кабанчик просто как лоха покупает за низкий прайс
>3 годика
Чел, опыт в коммерческом программировании - это не про виртуозный стиль покраса кнопок и клепание форм с закрытыми глазами, а про заведение новых связей. За три года ты должен был быть знаком со всеми сеньерами как минимум в своем регионе, знать и активно тусить на всех сходках кодеров и устраиваться на новую работу по приглашениям и рекомендациям знакомых хрюш и помидоров, с которыми пьешь пиво в барах раз в месяц. Рынок полон самозванцев и мамкиных рисователей цифер опыта, сторонним людям со всяких хэхэру уже никто не доверяет и с учетом раздутости рынка доверять не будет. Если у тебя три года коммерции и ты ищешь работу через отстойник наполненный вкатышами, то к тебе возникают очень большие вопросы. Не являешься ли ты сам "три пишу один в уме"?
Да спокуху оформляй. Я уже намылил ласты и уэе прошел несколько тех собесов, причем прошел ответив на 99% вопросов (обосрался лишь единожды на одном собесе не ответив в чем будет отличие for (const key of Object.keys(obj)) от for (const key in obj)). Так что я уже облизываюсь на свои 200к.
>>66289
>Чел, опыт в коммерческом программировании - это не про виртуозный стиль покраса кнопок и клепание форм с закрытыми глазами
Я знаю. Поэтому у меня реальный коммерческий опыт формошлепания полтора года, но для хрюш стоит 3.5, что бы фильтр пройти.
>знать и активно тусить на всех сходках кодеров
Я интроверт. Единственная туса, куда я езжу регулярно это холижс.
>пьешь пиво
я не пью алкоголь
> ты ищешь работу через отстойник наполненный вкатышами, то к тебе возникают очень большие вопросы. Не являешься ли ты сам "три пишу один в уме"?
Да спокуху оформи, че доебался? Я просто до этого как раз ни разу работу не искал, просто самого приглашали на новое место. А тут чет эта система сбой дала и пришлось сраку напрягать.
>>66290
>>66305
Ловите пятюню. На учете у психиатра состоите?
>Я интроверт.
Я тоже. Но на самом деле на кодерских тусовках нет прям такого социоблядства. Для стороннего наблюдателя неанальника они даже могут показаться занудными в некоторых моментах, на фричество и закрытость косо не смотрят и не токсят. В целом я когда первый раз решил прийти на сходняк тоже думал что будет пиздец, но в целом народ там довольно добрый и душевный.
>На учете у психиатра состоите?
Нет, у меня вообще с кукухой все идеально, когда у биодрузяшек биполяр очка. Общение с вуман только к бедам с башкой приводят.
Ну или меня не поймали еще просто.
25 лвл
>у меня вообще с кукухой все идеально
Заблуждаешься. Отсутствие полового партнера в таком возрасте не то что говорит, а просто кричит о наличии у тебя какой-то псих болячки типа невроза. Я даже когда в военкомате у врача-психиатра был она меня спрашивала про девушку и друзей, что как бы намекает.
>просто кричит о наличии у тебя какой-то псих болячки типа невроза.
Критерии фальсификации в студию, а то так невроз можно у буддийских монахов найти. А, падажжи, они же тоже без тянок, бляяяя...
>Я даже когда в военкомате у врача-психиатра был она меня спрашивала про девушку и друзей, что как бы намекает.
А, ну раз в военкомате сказали, значит, так и есть. Друзья у меня кстати есть.
У меня нет девушки, потому что 5 лет жизни в одиночестве меня испортили. Я просто не хочу с кем-то сожительствовать, а если заводить тяночку и отношения, то сожительствовать рано или поздно придется. Мне настолько комфортно одному, что не передать словами. Когда я купил квартиру и съехал туда, я как заново родился.
Мимо
>Критерии фальсификации в студию, а то так невроз можно у буддийских монахов найти. А, падажжи, они же тоже без тянок, бляяяя...
Да я ебу что-ли, иди и загугли. Я же не врач ебаный.
>А, ну раз в военкомате сказали, значит, так и есть. Друзья у меня кстати есть.
А тянки то почему нет? Может быть у тебя расстройство полового влечения? пидор?
>>66348
Буквально шизой так и веет. Скоро наверное ружье возьмешь и пойдешь колумбайны устраивать
>Буквально шизой так и веет. Скоро наверное ружье возьмешь и пойдешь колумбайны устраивать
Нет, я хороший и добрый. Никого не обижаю и претензий не имею.
>Да я ебу что-ли, иди и загугли. Я же не врач ебаный.
Ну и нахуй иди тогда со своими диагнозами, блядь.
>В отличие от психотических расстройств, при неврозах люди критичны к своему расстройству и способны руководить своими поступками
Т.е. я сам могу понять, невроз у меня или нет. Так, симпомы:
>Эмоциональное неблагополучие
>Нерешительность
>Проблемы в общении
>Неадекватная самооценка: занижение или завышение
>Частое переживание чувства тревоги, страха
>Неопределённость или противоречивость системы ценностей
>Нестабильность настроения, его частая и резкая изменчивость.
>Высокая чувствительность к стрессам
>Плаксивость
>Тревожность.
>Зацикленность на психотравмирующей ситуации.
>При попытке работать быстро утомляются
>Чувствительность к громким звукам, яркому свету, перепадам температуры
>Расстройства сна
-
>Часто встречается цинизм.
+
>Раздражительность
>Обидчивость, ранимость.
+/-
Итого -- 2 из ~20 (если +/- считать за 0.5). И там еще физические симптомы есть, которые просто отсутствуют. Я же говорю, я здоровее некоторых социоблядей буду.
>А тянки то почему нет?
Потому что это трата времени и сил ради шанса потыкать хуем в мясную дырку. Даже если специально искать шлюх, дающих без многодневных ухаживаний, надо все равно что-то делать. Детей пока делать я не планирую. Попытки найти соулмейта среди женского племени я предпринимаю, но не факт, что они увенчаются успехом, это не в дайвинчик сходить.
>Буквально шизой так и веет.
Охуительные диагнозы от не-психиатара продолжаются. Может заткнешься и под шконку уже съебешь?
>Да я ебу что-ли, иди и загугли. Я же не врач ебаный.
Ну и нахуй иди тогда со своими диагнозами, блядь.
>В отличие от психотических расстройств, при неврозах люди критичны к своему расстройству и способны руководить своими поступками
Т.е. я сам могу понять, невроз у меня или нет. Так, симпомы:
>Эмоциональное неблагополучие
>Нерешительность
>Проблемы в общении
>Неадекватная самооценка: занижение или завышение
>Частое переживание чувства тревоги, страха
>Неопределённость или противоречивость системы ценностей
>Нестабильность настроения, его частая и резкая изменчивость.
>Высокая чувствительность к стрессам
>Плаксивость
>Тревожность.
>Зацикленность на психотравмирующей ситуации.
>При попытке работать быстро утомляются
>Чувствительность к громким звукам, яркому свету, перепадам температуры
>Расстройства сна
-
>Часто встречается цинизм.
+
>Раздражительность
>Обидчивость, ранимость.
+/-
Итого -- 2 из ~20 (если +/- считать за 0.5). И там еще физические симптомы есть, которые просто отсутствуют. Я же говорю, я здоровее некоторых социоблядей буду.
>А тянки то почему нет?
Потому что это трата времени и сил ради шанса потыкать хуем в мясную дырку. Даже если специально искать шлюх, дающих без многодневных ухаживаний, надо все равно что-то делать. Детей пока делать я не планирую. Попытки найти соулмейта среди женского племени я предпринимаю, но не факт, что они увенчаются успехом, это не в дайвинчик сходить.
>Буквально шизой так и веет.
Охуительные диагнозы от не-психиатара продолжаются. Может заткнешься и под шконку уже съебешь?
> прошел ответив на 99% вопросов
> я уже облизываюсь на свои 200к
Ебать дебил. Когда уже эти демпингующие идиоты закончатся, господи?
>Потому что это трата времени и сил ради шанса потыкать хуем в мясную дырку.
А какова твоя цель в жизни, если не потыкать хуем в мясную дырку? Она не считается тратой времени и сил?
Ничо так, нормальные. Вроде и сферические в вакууме, но не заезжанные и знать как эмиттер и другие базовые постоянно встречающиеся паттерны устроены важно Я такое люблю спрашивать. Последняя вообще в принципе и в бою встречается частенько.
>Последняя вообще в принципе и в бою встречается частенько.
например? Мне кажется если тебе надо залимитить количество параллельных действий, то твои девопсеры где-то обосрались.
У тебя после отвала первого остальные 99 продолжат загружаться.
И вывести в оригинальном порядке ты не сможешь.
Ещё не оптимально пул расходуется, ты всегда ждёшь пять запросов, хотя мог бы начинать шестой уже после ответа на первый.
Ну, как минимум обосрался у нас уже хром который не даёт больше 8 (вроде) запросов сделать на один домен одновременно в HTTP 1/2? 9й подвиснет пока первые 8 не разгребутся.
Даже какие-нибудь картинки в альбоме прогреть уже как раз такой код понадобится.
Да и промисы и пул – не обязательно только про сетевые запросы.
Псов один клиент вообще не волнует, пусть он хоть во весь свой канал запросы гонит. На 100к пользователей вот они уже к тебе придут и будете решать кто обосрался больше.
Так ты пойми, что я когда 250к оклад выставил на хабре и хх, мне просто ни одна хрюша не отписала за 2 недели. Зато как только поставил 200 так их просто ПРОРВАЛО ебать.
IntersectionObserver, ResizeObserver и MutationObserver - все это API, предоставляемые браузерами для отслеживания изменений в DOM-дереве.
Они используют разные стратегии выполнения колбэков из-за различий в их потенциальной производительности и влиянии на пользовательский интерфейс.
IntersectionObserver отслеживает пересечение элементов с определенной областью просмотра и вызывает колбэк, когда такое пересечение происходит или прекращается. Поскольку пересечения могут происходить очень часто и быстро, выполнение колбэков немедленно может создать большую нагрузку на браузер. Поэтому IntersectionObserver добавляет колбэк в очередь макротасков, чтобы избежать блокировки основного потока выполнения браузера и повысить производительность.
ResizeObserver отслеживает изменения размеров элементов и вызывает колбэк, когда изменения происходят. Поскольку изменения размеров обычно происходят реже и требуют меньше вычислительных ресурсов, ResizeObserver выполняет колбэк непосредственно в том же проходе, чтобы результаты изменений были доступны немедленно. Это помогает обеспечить более отзывчивый интерфейс и упрощает синхронизацию с другими элементами страницы.
MutationObserver отслеживает изменения в DOM-дереве, включая добавление, удаление или изменение элементов. Это может вызывать динамические изменения в структуре страницы, которые могут повлиять на другие элементы и их расположение. Поскольку изменения в DOM-дереве могут быть сложными и влиять на производительность, MutationObserver добавляет колбэк в очередь микротасков, чтобы обработка изменений была отложена до завершения текущего прохода выполнения и не блокировала основной поток.
Каждая из этих стратегий выбрана с учетом специфики каждого API и потенциальных требований к производительности и отзывчивости интерфейса.
в принципе имеет смысл, вот только с MutationObserver эта ИИ хуита обосралась
Потому что даже Андерс сказал, что если бы TS делали сейчас, то в нём не было бы енамов.
Ты не имеешь контроля над тем, как выглядит объект енама, ты можешь только ознакомиться с алгоритмом, по которому его пидорасит и знать как он выглядит в конечном варианте.
Вот, например, обычный енам на пик1
Если строчные ключи мапятся предсказуемо, "ожидаемо", то при использовании числовых значений - объект начинает пидорасить, и на числовое значение ещё добавляется и ключ, мапящийся в строкое значение ключа.
Digit = 1
-> {
"Digit": 1,
"1": "Digit"
}
Уже эта особенност в поведении, на тебя накладывает ограничение на уровне статического анализа.
Если ты попытаешься добавить в enum числовой ключ - ты получишь ошибку:
An enum member cannot have a numeric name.
А даже если попытаться добавить в enum, например 1 = 2, посмотреть в песочнице, во что оно пытается это скомплить, то в выходном JS в IIFE с инициализацией объекта добавится:
Normal[Normal[1] = 2] = 1;
Т.е. ещё 2 поля, "1" = 2, "2" = 1. Если посмотреть на пик, то становится понятно, что ключ "1" = "Digit" перепишет. Не то чтобы ты в принципе не хотел, чтобы его там не было.
Вот, например, анон скидывал фрагмент яндексиста >>64815
Без поллитра не разберёшься, я немного двинулся кукухой, пытаясь осознать происходящее вот здесь >>64944
В целом, если пояснить: яндексист пытается получить объект из enum'а, в котором не будет числовых ключей.
Т.е. если на Digit = 1 получается две пары, Digit = 1, "1" = "Digit", то пары где ключ парсится в число он выкидывает и возвращает объект.
Это вот например, могло бы пригодиться в этом фрагменте говнокода >>64792, где берётся TextSize.Chota, который видимо в этом случае число, а дальше дорисовываются где-то в коде rem/em/px.
Это поведение описано, можешь сам ознакомиться, экшули рикаминдую, чтобы не быть баттхёртом https://www.typescriptlang.org/docs/handbook/enums.html#reverse-mappings
Можно вообще сделать объявление const enum Enum.
Его не будет в коде после компиляции, только объявление в d.ts. (пик2)
А можно просто сделать объект, и объявить как редонли через as const (пик 3)
Получаешь и объект с ключами, как енам, и не имеешь всех тех ограничений енама на типы значения
Не нужно думать, что там какие-то нули лишние появились, городить internal/utils/yobaOptionsEnum, как в яндексе.
Типы ключей / значений можно и самому с такого as const объекта снять.
Потому что даже Андерс сказал, что если бы TS делали сейчас, то в нём не было бы енамов.
Ты не имеешь контроля над тем, как выглядит объект енама, ты можешь только ознакомиться с алгоритмом, по которому его пидорасит и знать как он выглядит в конечном варианте.
Вот, например, обычный енам на пик1
Если строчные ключи мапятся предсказуемо, "ожидаемо", то при использовании числовых значений - объект начинает пидорасить, и на числовое значение ещё добавляется и ключ, мапящийся в строкое значение ключа.
Digit = 1
-> {
"Digit": 1,
"1": "Digit"
}
Уже эта особенност в поведении, на тебя накладывает ограничение на уровне статического анализа.
Если ты попытаешься добавить в enum числовой ключ - ты получишь ошибку:
An enum member cannot have a numeric name.
А даже если попытаться добавить в enum, например 1 = 2, посмотреть в песочнице, во что оно пытается это скомплить, то в выходном JS в IIFE с инициализацией объекта добавится:
Normal[Normal[1] = 2] = 1;
Т.е. ещё 2 поля, "1" = 2, "2" = 1. Если посмотреть на пик, то становится понятно, что ключ "1" = "Digit" перепишет. Не то чтобы ты в принципе не хотел, чтобы его там не было.
Вот, например, анон скидывал фрагмент яндексиста >>64815
Без поллитра не разберёшься, я немного двинулся кукухой, пытаясь осознать происходящее вот здесь >>64944
В целом, если пояснить: яндексист пытается получить объект из enum'а, в котором не будет числовых ключей.
Т.е. если на Digit = 1 получается две пары, Digit = 1, "1" = "Digit", то пары где ключ парсится в число он выкидывает и возвращает объект.
Это вот например, могло бы пригодиться в этом фрагменте говнокода >>64792, где берётся TextSize.Chota, который видимо в этом случае число, а дальше дорисовываются где-то в коде rem/em/px.
Это поведение описано, можешь сам ознакомиться, экшули рикаминдую, чтобы не быть баттхёртом https://www.typescriptlang.org/docs/handbook/enums.html#reverse-mappings
Можно вообще сделать объявление const enum Enum.
Его не будет в коде после компиляции, только объявление в d.ts. (пик2)
А можно просто сделать объект, и объявить как редонли через as const (пик 3)
Получаешь и объект с ключами, как енам, и не имеешь всех тех ограничений енама на типы значения
Не нужно думать, что там какие-то нули лишние появились, городить internal/utils/yobaOptionsEnum, как в яндексе.
Типы ключей / значений можно и самому с такого as const объекта снять.
примерно. если дольше, то ты быдло ебаное.
Добавлю, что 2 корммерции во фронте, не фулкек, на шарпах вышло что-то типо полтора года не пойми чего. До этого больше служило для того, чтобы убить время, после посаженной менталочки в ВУЗе.
>почему svelte ещё не взлетел?
Потому что его единственный фанат заместо создания экосистемы в виде библиотек компонентов, стейт менеджеров и прочего занят капчеванием в ЖС треде на дваче.
Да я реактомакака, мне просто интересно стало, что за зверь такой. П
Кстати, стейт-менеджер там из коробки, как я понял.
Компонентов нет, это да. Но разве из-за единственной проблемы может проект не взлететь? Все же реакт тоже не сразу строился.
>Но разве из-за единственной проблемы может проект не взлететь? Все же реакт тоже не сразу строился.
Даже если рассматривать так. Реакт - уже взлетел. В нём есть всё что нужно, а если нет - коммьюнити сделало пакет на любой чих.
Можно взять на веру, что какую-то фичу завезут. Завезут ли её и окажется она удобной - это другой вопрос. А слезать уже будет поздно.
То что менеджер из коробки есть - круто. Позволяет минимизировать количество левых костылей типо редакса/эффектора/мобыкса/дефектора/рекойла(лол)/дементора/зустенда
Конечно, выбор, это тоже хорошо, но весь этот зоопарк надо щупать. И в идеале ещё исходники поглядеть.
так про много можно сказать. Но это не отменяет выход и популяризацию новых решений.
Я буквально в прошлом треде интересовался, пользуется ли кто-то Deno. Можешь посмотреть >>2757509 →
мобиксрешает задачу огромный кокпипасты слайсов и возможность мутировать состояние привычным способом через сеттеры, а не изъебываться в редьюсерах
Движок JavaScript (JS), такой как V8 (используемый в браузерах Chrome) или SpiderMonkey (используемый в Firefox), не предоставляет специальных оптимизаций для расположения данных в памяти. JS движки в основном сосредоточены на оптимизации выполнения кода и управлении объектами.
Оптимизация расположения данных в памяти обычно является задачей операционной системы и аппаратной части компьютера. Они могут использовать различные техники, такие как кэширование, выравнивание и предварительное чтение, для повышения производительности доступа к данным в памяти.
Однако, хотя JS движки не обеспечивают специфических оптимизаций для расположения данных в памяти, некоторые общие оптимизации могут повлиять на производительность работы с массивами объектов. Например, JIT-компиляторы в JS движках могут выполнять специализацию кода для определенных типов данных и операций. Это может привести к улучшению производительности при работе с массивами объектов, но не обязательно повлияет на физическое расположение данных в памяти.
Если вы хотите оптимизировать доступ к данным в массиве объектов в JS, можно рассмотреть следующие подходы:
1. Используйте локальность ссылок: при доступе к элементам массива объектов сохраняйте ссылки на них в локальных переменных. Это может помочь избежать повторных обращений к памяти при многократном доступе к одному и тому же элементу.
2. Разбейте данные на более компактные структуры: если ваш массив объектов содержит много ненужных полей или имеет большой размер, можно рассмотреть возможность создания отдельных массивов только с необходимыми данными или использования других структур данных, таких как хэш-таблицы или деревья, для эффективного доступа к данным.
3. Используйте алгоритмы, специфические для доступа к данным: вместо прямого обращения к каждому элементу массива вы можете использовать алгоритмы, которые выполняют итерацию по массиву с оптимальным доступом к памяти. Например, при обработке массива объектов, можно использовать алгоритмы с пространственной локальностью, которые обрабатывают смежные элементы вместо случайного доступа к разным элементам.
В целом, оптимизация доступа к данным в массиве объектов в JS зависит от конкретного случая использования и алгоритмов, применяемых для обработки данных.
Движок JavaScript (JS), такой как V8 (используемый в браузерах Chrome) или SpiderMonkey (используемый в Firefox), не предоставляет специальных оптимизаций для расположения данных в памяти. JS движки в основном сосредоточены на оптимизации выполнения кода и управлении объектами.
Оптимизация расположения данных в памяти обычно является задачей операционной системы и аппаратной части компьютера. Они могут использовать различные техники, такие как кэширование, выравнивание и предварительное чтение, для повышения производительности доступа к данным в памяти.
Однако, хотя JS движки не обеспечивают специфических оптимизаций для расположения данных в памяти, некоторые общие оптимизации могут повлиять на производительность работы с массивами объектов. Например, JIT-компиляторы в JS движках могут выполнять специализацию кода для определенных типов данных и операций. Это может привести к улучшению производительности при работе с массивами объектов, но не обязательно повлияет на физическое расположение данных в памяти.
Если вы хотите оптимизировать доступ к данным в массиве объектов в JS, можно рассмотреть следующие подходы:
1. Используйте локальность ссылок: при доступе к элементам массива объектов сохраняйте ссылки на них в локальных переменных. Это может помочь избежать повторных обращений к памяти при многократном доступе к одному и тому же элементу.
2. Разбейте данные на более компактные структуры: если ваш массив объектов содержит много ненужных полей или имеет большой размер, можно рассмотреть возможность создания отдельных массивов только с необходимыми данными или использования других структур данных, таких как хэш-таблицы или деревья, для эффективного доступа к данным.
3. Используйте алгоритмы, специфические для доступа к данным: вместо прямого обращения к каждому элементу массива вы можете использовать алгоритмы, которые выполняют итерацию по массиву с оптимальным доступом к памяти. Например, при обработке массива объектов, можно использовать алгоритмы с пространственной локальностью, которые обрабатывают смежные элементы вместо случайного доступа к разным элементам.
В целом, оптимизация доступа к данным в массиве объектов в JS зависит от конкретного случая использования и алгоритмов, применяемых для обработки данных.
Лучше объясни, почему ебучий энтерпрайз тащит по накатанной редух. Может потому, что рядом лежат 80 реп с редухом?
То что ты не видел на проектах мобых - не значит, что его нет.
Да и если брать по удобству дефолтный ДЕБАГГЕР - мобых в этом плане сосёт, да. Но просто не пиши как даун, ок да?
мимо
мобых тупо понятнее и лаконичнее, лучше ложится на логику, если её инкапсулировать в классах например, нет централизованного стора как у редакса. Хотя дебажить его то ещё веселье. Ошибся с декоратором? Получай тугой белый экран в ебало, и консоль тебе даже не подскажет что произошло.
Потому что внезапно оказалось, что 90% состояния в приложениях это асинхронщина. Поэтому редух, мобикс заменяются менималистичным зустандом. А для асинхронщины все юзают react query, apollo и подобное
>Движок JavaScript (JS), такой как V8 (используемый в браузерах Chrome) или SpiderMonkey (используемый в Firefox), не предоставляет специальных оптимизаций для расположения данных в памяти. JS движки в основном сосредоточены на оптимизации выполнения кода и управлении объектами.
Ты скозал? Вот внатуре как этой ИИ хуерге верить? Я уверен что если полезу в исходники то найду там ёба аллокаторы под жс объекты и прочую залупу
>Лучше объясни, почему ебучий энтерпрайз тащит по накатанной ноду. Может потому, что рядом лежат 80 реп с нодой?
>То что ты не видел на проектах дено не значит, что его нет.
>Да и если брать по удобству дефолтный ДЕБАГГЕР - нода в этом плане сосёт, да. Но просто не пиши как даун, ок да?
Ты же понимаешь, что на твоём дено нет реакта, нет некста? Есть аналоги. Пик 2
Спасибо vite, есть реакт, пик 1
пик4 - тасочку закрыли в 21-ом году. Лол
Изначально в тейках было что-то про изоморфное АПИ, прям как в браузере фетч вместо аксиоса.
Тейки про безопасность. Ты не можешь даже просто взять и поставить пакет не выдав ему права. Всё ради того, чтобы твою жопу не взломали и данные криптокошелька не слили.
В итоге, тебе чтобы забутстрапить реакт приложение с vite - надо прописать ещё 3 флага с разрешениями.
Ну и да, написано на TS. Поддержка TS из коробки. Но там тоже всё было не так радужно. Уже не помню, но речёвки вплоть до написания своей тулзы для работы с TS.
Привет аноны. Такие вводные: Прочитал учебник Кантора (первые 2 части, основы JS и DOM манипуляция), вроде понял, немного верстал (легкие макеты, но уже забыл все), еще пробовал React но даже до Раутинга не дошел. Думаю с такими знаниями никуда не устроюсь. Возникла идея купить курсы. Какие посоветуете?
Предлагаю план капкан. Отдаёшь мне 200к. Выдаю тебе программу развлечений на год. Дальше ты всё равно не вкатываешься, но хотя бы мне на колу с картошкой наберётся.
Там такие подвижки, что если нейронкодроч выстрелит, пойдёт очередная оптимизация в бигтехе. Лол
352x640, 2:39
В кабанчики на подскоке как пикрелейтед.
>>67707
>Пашка-парашка за так не работает.
Пашка-Парашка за первый созвон не берет.
>>67709
https://career.habr.com/pavel_poroshin
В том и проблема свелта что реакт давно построился.
Реакт был новой парадигмой и конкурентов ему особо не было. Парадигма зашла, реакт быстро захватил мир.
Свелт не предлагает совсем уж чего-то радикально нового, только некоторые места оптимизирует, поэтому чтоб взлететь ему надо реакт победить. Ну, либо довольствоваться своей нишей.
А реакт – убегающий лидер: Все пишут на реакте потому что все пишут на реакте. Работодателю проще нанять работников, а работники учат его потому что на нём проще найти работу...
пишу на обоих
Реакт.. Реакт! Оооооо, реааакт.. Все пишут. Все пишут на реакте. База. База реакт. Реакт это база.. Реакт аналогов нет. Раект - убегающий лидер.. Ооо. Аааа. Даааа. Лииидер. Оаоаоа.
Причем, если добавлять к большему массиву меньший, то процесс будет еще немного быстрее. А я всегда спредил, ебало?
https://rutracker.org/forum/viewtopic.php?t=6372975
свежий курс по реакту. по отзывам на юдеми и темам вроде норм, сам пока не смотрел
>А что там плот сайентист?
Из-за работки не смог найти время, все собирался-собирался, но не получилось, а сейчас уже забил на это.
Второй раз уже не получится. Нужно как-то по умному.
>зачем в реакте спредят
Чтобы иммутабельно шатать данные. Но в случае, если у нас массив из простых данных, то разницы никакой
>>67971
Ну ты не совсем проебался, если массив состоит из объектов, то concatom можно в последствии расшатать данные, потому что ссылка на объект в исходном массиве у новго массива возвращенного concat сохранится, а у спреда нет. Но что-то мне кажется, что все равно можно где-нибудь проебаться, так что лучше наверное на фронте не крутить массивы из миллиарда объектов и таки использовать спред
Это дегенеративная попытка что-то замерить, но тем не менее
Пик1, 2, конкат двух массивов
Пик3, 4, спред массивов
> у новго массива возвращенного concat сохранится, а у спреда нет
Спред вернёт все те же референсы, он не пересоздаст объекты на первого уровне вложенности.
Ты буквально можешь достать итератор и сам сделать то же самое, что делает спред.
А получаешь ты из итератора текущее значение, то есть ссылку на объект.
const gen = array[Symbol.iterator]();
let newArray = [];
let next = gen.next();
while (!next.done) {
newArray.push(next.value);
next = gen.next();
}
Потому что у него всратый синтаксис, потому что его автора выкупили кабанчики из верцела, потому что его уничтожил солид, который намного лучше.
> возможность мутировать состояние привычным способом через сеттеры
Так в редакс тулките это уже давно есть, года три как, не?
Я докину лишь, что если сделать как на пик1
Всё будет гораздо печальнее, чем со спредами. Оно будет работать как задумывалось, вместо того, чтобы наебнуться, но на 1к элементов расклад такой:
array1.concat(array2) ~2000ms
[...array1, ...array2] ~8000ms
array1.concat(...array2) ~20000ms
>Спред вернёт все те же референсы, он не пересоздаст объекты на первого уровне вложенности.
Да, я обосрался, что-то неправильно в консоли проверил. Тогда получается в этом смысле разницы вообще нет, короче если что-то очень большое склеить нужно, то конкатируем
Через iframe не работает.
Через embed код от gist'a тоже не получается. У меня некст, а он не хочет грузить сторонний js, который я руками создам в компоненте и встрою в head.
Если какой-то способ реализовать такое? Пока что, взял разметку из embed кода и вставляю её как dangerouslySetInnerHTML. Но хотелось бы, что бы там была актуальная инфа (что-бы я поменял в gist'е файл и в моём приложении отображалась актуальный файл)ю
Можно взять сырой файл и вставить как текст, ссылка генерится по типу https://gist.github.com/[gist_user]/[gist_id]/raw/ для гистов с 1 файлом, в целом достаточно просто /raw добавить в конец ссылки, можешь на клиенте запросик делать и потом рендерить текст через рякт
Я в курсе что это не часть спеки, а реализации движков. В каждом по-разному и в любой момент может поменяться в любую сторону. Может вообще динамически меняться прям в рантайме в зависимости от магии в компиляторах.
Хотя я вообще не совсем прав, это как раз таки часть спеки.
Но движки вертят спеку на хую и оптимизируют подобные места, там где алгоритмы эквивалентны они спокойно могут подменять один другим.
Как идея норм, но я забыл написать - хотелось что-бы с подсветкой синтаксиса и счётчиком строк.
Это не так легко!
Это как сказать, что надо просто избавиться от депрессии, а потом ты просто как долбаеб кривляешься, чтоб казаться нормальным. С Сдвг же себя придется наебывать (не выйдет), что это интересно
Никто и не обещал, что будет легко...
А так - ну делай то, что больше нравится, я хуй знает. Нахуя ты ваще изначально в жс полез?
Я не думал что сложность будет в том, что изучение редактора будет мешать изучению яп, думал сложность будет заключаться только в том, что я туп или я ленив или я {"что-то банальное"}
Учил си, услышал, что жс вообще везде б...ть. Решил полезть в жс, даже понравилось (нуб, чо), но чет все равно сижу и курю вим или баш больше чем хотелось бы, вот и решил спросить что делаете, когда мозг тянет узнать что-то, что тебе не так полезно, а остальное просто блокирует нахуй
Ага, буду сидеть рядом с людьми, котрые сидят в тиктоке вместо того, чтоб учить реакт/чатжпт/писать свои нейросети (чатжпт, накормленной пастами с двача) и продавать это за оверпрайс
ну так это псевдокод, главное чтобы функционально алгоритмы были эквивалентны, точто также как движки не создают 100500 обёрток при вызове методов на примитивах
Ну раз ты сказал, что хуета значит так и есть.
я не понял, тайлвинд еще живой?
<html>
<head>
<title>Нейронные вычисления</title>
<script>
var cache = {}; // Кэш для хранения значений
var cacheHits = 0; // Количество попаданий в кеш
function simulateNeuralComputation() {
var numNeurons = 9; // Количество нейронов
var numInputs = 9; // Количество входов
var resultsContainer = document.getElementById('results');
var cacheContainer = document.getElementById('cache');
resultsContainer.innerHTML = ''; // Очищаем контейнер перед каждым обновлением
cacheContainer.innerHTML = ''; // Очищаем контейнер перед каждым обновлением
for (var i = 0; i < numNeurons; i++) {
var inputs = [];
for (var j = 0; j < numInputs; j++) {
inputs.push(Math.random() < 0.5 ? -1 : 1);
}
var cacheKey = inputs.join(',');
var output;
// Получаем результат из кэша, если он уже существует
if (cache.hasOwnProperty(cacheKey)) {
output = cache[cacheKey];
cacheHits++; // Увеличиваем количество попаданий в кеш
} else {
var weights = [];
for (var j = 0; j < numInputs; j++) {
var layerWeights = [];
for (var k = 0; k < numInputs; k++) {
layerWeights.push(Math.random() < 0.5 ? -1 : 1);
}
weights.push(layerWeights);
}
output = computeNeuralNetwork(inputs, weights);
// Кэшируем результат
cache[cacheKey] = output;
}
var listItem = document.createElement('li');
listItem.textContent = 'Нейрон ' + (i + 1) + ': Входы: ' + inputs.join(', ') + ', Результат: ' + output;
resultsContainer.appendChild(listItem);
}
var cacheCount = Object.keys(cache).length;
var cacheCountContainer = document.getElementById('cacheCount');
cacheCountContainer.textContent = 'Результатов в кэше: ' + cacheCount + ', Попаданий в кеш: ' + cacheHits;
var table = document.createElement('table');
var tr = document.createElement('tr');
var th = document.createElement('th');
th.textContent = 'Входы';
tr.appendChild(th);
th = document.createElement('th');
th.textContent = 'Результат';
tr.appendChild(th);
table.appendChild(tr);
for (var key in cache) {
tr = document.createElement('tr');
var inputs = key.split(',');
var td = document.createElement('td');
td.textContent = inputs.join(', ');
tr.appendChild(td);
td = document.createElement('td');
td.textContent = cache[key];
tr.appendChild(td);
table.appendChild(tr);
}
cacheContainer.appendChild(table);
}
function computeNeuralNetwork(inputs, weights) {
var activation = inputs.slice();
for (var layer = 0; layer < inputs.length; layer++) {
var layerWeights = weights[layer];
var weightedSum = 0;
for (var neuron = 0; neuron < inputs.length; neuron++) {
weightedSum += activation[neuron] * layerWeights[neuron];
}
activation[layer % inputs.length] = weightedSum >= 0 ? 1 : -1;
}
return activation[Math.floor(inputs.length / 2)];
}
setInterval(simulateNeuralComputation, 0);
</script>
<style>
#cacheCount {
font-weight: bold;
margin-top: 10px;
}
#cache {
margin-top: 20px;
}
#cache table {
border-collapse: collapse;
margin-top: 10px;
}
#cache table th, #cache table td {
border: 1px solid black;
padding: 5px;
}
</style>
</head>
<body>
<ul id="results"></ul> <!-- Контейнер для отображения результатов -->
<div id="cacheCount"></div> <!-- Контейнер для отображения количества результатов в кэше -->
<div id="cache">
<h3>Кэшированные результаты</h3>
</div> <!-- Контейнер для отображения кэшированных результатов -->
</body>
</html>
<html>
<head>
<title>Нейронные вычисления</title>
<script>
var cache = {}; // Кэш для хранения значений
var cacheHits = 0; // Количество попаданий в кеш
function simulateNeuralComputation() {
var numNeurons = 9; // Количество нейронов
var numInputs = 9; // Количество входов
var resultsContainer = document.getElementById('results');
var cacheContainer = document.getElementById('cache');
resultsContainer.innerHTML = ''; // Очищаем контейнер перед каждым обновлением
cacheContainer.innerHTML = ''; // Очищаем контейнер перед каждым обновлением
for (var i = 0; i < numNeurons; i++) {
var inputs = [];
for (var j = 0; j < numInputs; j++) {
inputs.push(Math.random() < 0.5 ? -1 : 1);
}
var cacheKey = inputs.join(',');
var output;
// Получаем результат из кэша, если он уже существует
if (cache.hasOwnProperty(cacheKey)) {
output = cache[cacheKey];
cacheHits++; // Увеличиваем количество попаданий в кеш
} else {
var weights = [];
for (var j = 0; j < numInputs; j++) {
var layerWeights = [];
for (var k = 0; k < numInputs; k++) {
layerWeights.push(Math.random() < 0.5 ? -1 : 1);
}
weights.push(layerWeights);
}
output = computeNeuralNetwork(inputs, weights);
// Кэшируем результат
cache[cacheKey] = output;
}
var listItem = document.createElement('li');
listItem.textContent = 'Нейрон ' + (i + 1) + ': Входы: ' + inputs.join(', ') + ', Результат: ' + output;
resultsContainer.appendChild(listItem);
}
var cacheCount = Object.keys(cache).length;
var cacheCountContainer = document.getElementById('cacheCount');
cacheCountContainer.textContent = 'Результатов в кэше: ' + cacheCount + ', Попаданий в кеш: ' + cacheHits;
var table = document.createElement('table');
var tr = document.createElement('tr');
var th = document.createElement('th');
th.textContent = 'Входы';
tr.appendChild(th);
th = document.createElement('th');
th.textContent = 'Результат';
tr.appendChild(th);
table.appendChild(tr);
for (var key in cache) {
tr = document.createElement('tr');
var inputs = key.split(',');
var td = document.createElement('td');
td.textContent = inputs.join(', ');
tr.appendChild(td);
td = document.createElement('td');
td.textContent = cache[key];
tr.appendChild(td);
table.appendChild(tr);
}
cacheContainer.appendChild(table);
}
function computeNeuralNetwork(inputs, weights) {
var activation = inputs.slice();
for (var layer = 0; layer < inputs.length; layer++) {
var layerWeights = weights[layer];
var weightedSum = 0;
for (var neuron = 0; neuron < inputs.length; neuron++) {
weightedSum += activation[neuron] * layerWeights[neuron];
}
activation[layer % inputs.length] = weightedSum >= 0 ? 1 : -1;
}
return activation[Math.floor(inputs.length / 2)];
}
setInterval(simulateNeuralComputation, 0);
</script>
<style>
#cacheCount {
font-weight: bold;
margin-top: 10px;
}
#cache {
margin-top: 20px;
}
#cache table {
border-collapse: collapse;
margin-top: 10px;
}
#cache table th, #cache table td {
border: 1px solid black;
padding: 5px;
}
</style>
</head>
<body>
<ul id="results"></ul> <!-- Контейнер для отображения результатов -->
<div id="cacheCount"></div> <!-- Контейнер для отображения количества результатов в кэше -->
<div id="cache">
<h3>Кэшированные результаты</h3>
</div> <!-- Контейнер для отображения кэшированных результатов -->
</body>
</html>
Шёл 2023, а мне до сих пор смешно с того как пересаживаются с языков со статической типизацией на динамические и наоборот. Как кого-то в очередной раз ломает, полностью.
про юнионы понятно, а вот указание типа Animal важно только для людей? Комплятор же не покажет ошибку если ты в массив Animal пушиш обьект Knife допустим
>Комплятор же не покажет ошибку если ты в массив Animal пушиш обьект Knife допустим
У тебя песочница есть, если открывать редактор локально лень.
Оно буквально для этого и нужно, чтобы ты свои заточки не сувал куда ни попадя. Если только твой нож это не мистическая пидрилла, когда-то отнаследовавшая от класса Animal
Ну то есть указание типа Animal чисто для людей нужно? Компилятор позволяет мне туда какой угодно обьект засунуть
>>68481
Ты сделал одинаковые типы. Одинаково пустые без нихуя. Да, ТС это съест. Добавь ОТЛИЧИТЕЛЬНЫЙ признак в животне Например метод ХОДИТЬ, а в нож РЕЗАТЬ.
TS - это надстройка над JS.
Если я тебе скажу, что TS в принципе не защищает тебя от всех проёбов с типами в рантайме, а ещё можно писать как на JS без типов (any yolo), тогда что? ТС НИНУЖОН?
заработало
>тогда что? ТС НИНУЖОН?
Да. По большей части он в индустрии и используется только ради тулзов типа автокомплита.
а вот допустим у меня есть массив всех товаров(товар - обьект) у них есть общие и уникальные свойства, каждый раз что бы получить доступ к уникальному свойству товара нужно делать Type assertion? как то громоздко
Он используется для проверки типов при компиляции, а не только автодополнения. Если скрипт скомпилоровался при гипотезе, что у тебя на входе массив строк, то это доказательство корректности работы программ , в случае если у тебя на входе массив строк. Проверка типов в рантайме на входе (aka валидация), это отдельная задача.
С оговоркой что строгость проверки зависит от настроек компилятора и твоих типов. Можно сказать что утверждение о корректности работы программы включает в себя те типы которые ты определил в коде.
Мне похуй, честно. Не используй. У меня выходной.
За тайп ассершены бьют по рукам, если ты не гуру своего дела и знаешь что делаешь.
Есть явные проверки, есть тайпгарды.
Если даже у тебя разные объекты, можно сделать женерик с ограничением, что ты ожидаешь объекты с тем или иным полем.
Типо такого, хотя бы. Есть базовый интерфейс продукта с общим полем id. Какие у продукта ещё поля - для моего метода не важно. Я лишь объявил, что ожидаю, что тип будет либо Product либо расширять его, и верну массив с типом поля id в Product
Каждый ответ апишки отличается на одно-два поле у одной сущности.
get hui - id/idHui, name, disabled
put hui - name, disabled
patch hui - idHui, name, disabled
del - id
обычно меняются местами айдишники, пидорсит это поле пиздец как. но так же отличаются и другие поля.
как эту хуйню лучше затипизировть?
сейчас я думаю над таким вариантам, писать для каждого интерфейс: huiBase, в нем повторяющиеся поля и расширять каждый интерфейс под запрос этим интерфейсом.
есть еще вариант на пике.
мне он видится более красивым.
>Если скрипт скомпилоровался при гипотезе, что у тебя на входе массив строк, то это доказательство корректности работы программ
Удачи такое спиздпнуть и остаться со всеми зубами в тех областях, где доказательство корректности программы действительно важно.
дополню.
а есть подобная хрень но с интерфейсами?
типо чтобы одно из двух расширений base интерфейса было обязательным?
Нихуя не понял, но type Foo = Bar | Baz сделает тебе обязательным либо тот, либо другой. Общие поля схлопнутся при этом
ну, это понятно.
по сути твой пример, но расширенный, описан на скрине.
интересно узнать, есть ли подобное у интерфейсов.
чтобы было общее поле, а ты его расширяешь одним из n вариантов.
т.е. логика как на скринах.
Какая прикладная область, такая и строгость проверки корректности. Не надо в шизу пускаться. Для доказательства, что кнопка будет красной, а не зеленой тупаскрипта хватит. Строгость сильно зависит от типов, которые ты напишишь. Это твоя забота выбрать нужный уровень строгости проверки. Что заложишь в типы, то компилятор и выведет. Можешь везде если не any то unknown писать, то компилятор тебе и выведет "А хуй его знает, что будет". Компилятор за тебя код не пишет.
>РЯЯЯ ТЫ ОХУЕЛ НАЗЫВАТЬ <МОЯ ЛЮБИМАЯ ЛИБА НЕЙМ> ПОДОБНЫМ ДРУГИМ АСИНХРОННЫМ СТЕЙТ_МЕНЕДЖЕРАМ? <МОЯ ЛЮБИМАЯ ЛИБА НЕЙМ> ДОЛЖНА БЫТЬ ПЕРВАЯ В СПИСКЕ!!!
Чел, чего ты визжишь? Оформи спокуху уже.
Я ответил на пост, где писали:
>>67138
> Потому что внезапно оказалось, что 90% состояния в приложениях это асинхронщина. Поэтому редух, мобикс заменяются менималистичным зустандом. А для асинхронщины все юзают react query, apollo и подобное
И снова повторю вопрос, чем не устраивает редакс для состояния, зачем его заменять? Редакс стал минималистичный когда сделали тулкит. И чем не устраивает встроенное в редакс решение для асинхронщины, rtk-query? Не нужно устанавливать лишних зависимостей, по функционалу всё необходимое есть.
>чем не устраивает редакс для состояния, зачем его заменять?
Тем, что он блять не преднозначен для асинхронного состояния. Всякие костыли в виде ртк и тханков это уже не чистый редакс.
> И снова повторю вопрос, чем не устраивает редакс для состояния, зачем его заменять? Редакс стал минималистичный когда сделали тулкит. И чем не устраивает встроенное в редакс решение для асинхронщины, rtk-query? Не нужно устанавливать лишних зависимостей, по функционалу всё необходимое есть.
Один хуй это в разы больше копипасты, чем специальные решения.
> Тем, что он блять не преднозначен для асинхронного состояния.
В нём есть модуль rtk-query, который как раз предзаначен для асинхронщины
> Всякие костыли в виде ртк и тханков это уже не чистый редакс.
Ртк это не костыль, это редакс, по сути его актуальная итерация. Его сделали создатели редакса и они рекомендуют по умолчанию использовать ртк, чистый редакс уже легаси давно.
>>69185
Не в разы.
>В нём есть модуль rtk-query, который как раз предзаначен для асинхронщины
Натягивание асинхронщины на редакс это ебанизм. И модель есть не в нём, в тулките. Не путай.
>>69301
>Его сделали создатели редакса и они рекомендуют по умолчанию использовать ртк, чистый редакс уже легаси давно.
Твой ртк уже в легаси влез. 18 ряхт вышел полтора года назад, 16 вообще 4 года. Ртк до сих пор не умеет в Suspense. Ну и нахуй это легаси дерьмо брать в проект? В каждом компоненте хуярить if (isLoading) return <Preloader /> ; if (isError) return <Error error={error} /> return <Component /> ????
> Натягивание асинхронщины на редакс это ебанизм
С чего это ебанизм? Да и это не натягивание на редакс, это отдельный модуль для http запросов.
> И модель есть не в нём, в тулките. Не путай.
Ну да, а тулкит это и есть продолжение редакса. Чистый редакс это легаси, вместо него теперь редакс тулкит. То есть по сути этот модуль часть редакса.
https://redux.js.org/introduction/getting-started
Installation
Redux Toolkit is our official standard approach for writing Redux logic. It wraps around the Redux core, and contains packages and functions that we think are essential for building a Redux app. Redux Toolkit builds in our suggested best practices, simplifies most Redux tasks, prevents common mistakes, and makes it easier to write Redux applications.
> Твой ртк уже в легаси влез. 18 ряхт вышел полтора года назад, 16 вообще 4 года. Ртк до сих пор не умеет в Suspense. Ну и нахуй это легаси дерьмо брать в проект? В каждом компоненте хуярить if (isLoading) return <Preloader /> ; if (isError) return <Error error={error} /> return <Component /> ????
А с чего это он должен "уметь в Suspense"? Suspense это фича реакта, стейт-менеджер тут при чём? Легаси это чистый редакс, на котором новые проекты не пишут, а старые с адекватной командой давно переписали на ртк.
zoo.push(new Zoosexual());
zoo.slice(-1).forEach(animal=>zoo.at(-1).fuck(animal, Contractions.Fast));
>Чистый редакс это легаси
Потому что так ты скозал?
>>69370
>А с чего это он должен "уметь в Suspense"? Suspense это фича реакта, стейт-менеджер тут при чём?
А почему тогда он умеет в хуки и управление состоянием компонента используя "фичи реакта"? Почему даже мейнтейнер уже год пытается прикрутить Suspense https://github.com/reduxjs/redux-toolkit/issues/1574 ?
>Как я могу реализовать свой таймлайн наподобии такого
Верстаешь макет, добавляешь обработчики событий. Готово. В чем проблема?
челыч, гугли структурная типизация или structural typing, даже в доке тс есть упоминание
Саша, успокойся, иди дилдаком жопу подрочи.
В 2к23 каким-то нативным образом проигрывать в браузере видеопоток (RTSP) с ip-камеры по-прежнему нельзя? БЕЗ проксирующего весь трафик камеры сервера, просто по ссылке на видеопоток? Если нельзя - есть ли какой-то открытый и свободный аддон, решающий проблему и пригодный для неограниченного коммерческого использования?
> Потому что так ты скозал?
В посте, на который ты отвечаешь, цитируют разработчиков редакса, которые рекомендуют использовать rtk.
>Омерзительная блевотина из декораторов
Что именно омерзительно?
>Как и вообще весь бэкэнд на ЖС.
Ещё больше интересно, что тебе в бекенде на жс не нравится?
Факт
У вас там хттпклиент умеет интерцептить запросы? И когда вам нормальный SSR завезут? Слышал про какой-то analog, но чтобы его юзали в проде не видел ни разу. Вообще давно хочется в ангуляр перекатиться, устал быть реакт макакой.
Сорян, промахнулся.
>RTK с их Query
>Напиши бойлерплейт для стора
>Напиши бойлерплейт для запросов
>"Ой, вам надо инфинитискролл? Ой ну не подумали, костыльте сами"
>React Query
>Просто придумай ключ
>Просто дай мне функцию, откуда будут приходить данные
>Нужен инфинити скролл? Уже всё есть
После нормальных библиотек смотреть на ебанутые апишки RTK особенно смешно. Можно сделать всё тоже самое, не имея полотен builder'ов. Но видимо любителям редакса просто это говно нравится
>Что там такого удобного react query делает с Suspense?
Позволяет тебе не писать постоянную копипасту из isLoading и isError, а просто написать const {govno} = usePoedanieGovna() и гарантированно получить твоё говно. Без ебейших конструкций (await, isLoading, isError);
>>69796
>Просто придумай ключ
Двачую адеквата. Если бы была возможность еще оптимистичные обновления без ебкли с ключами а использая инстанс query напрямую проводить - был бы лютейший шин.
>Что именно омерзительно
Декораторы в параметрах функции
>>69758
>что тебе в бекенде на жс не нравится
Приходится устанавливать доп. либы на каждое действие. Либы разрабатываются не пойми кем и нет никаких гарантий, что завтра буудт работать.
Нет никаких стандартов, куча фреймворков и все дерьмо. ОРМ куча и все дрянные.
Нет ничего близкого к подходу "всё есть из коробки" типа как в Руби или Джанго.
Уже нашёл - можно.
Да тупые, потому что в то время, как во всех нормльных ЯП уже давно есть атрибуты/декораторы в жс всё никак не могут пропихнуть пропозал с оными.
мимо
Вам смешно, а когда-то (совсем недавно) на бейсике писали лабы с goto на отлично. В журнале Радио статью помню, когда я мелкий был, говорилось что любую программу можно написать с помощью следований, ветвлений и циклов, а готы не нужны. Но в школе спустя лет 5 все еще писали с goto на бейсике и никто глазом не моргнул даже.
мимо дед
Да я сам буквально месяц назад писал лабу в своем заборостроительном на VBA через goto
> Позволяет тебе не писать постоянную копипасту из isLoading и isError, а просто написать const {govno} = usePoedanieGovna() и гарантированно получить твоё говно. Без ебейших конструкций (await, isLoading, isError);
Но как отображать лоадер, точнее скелетон к примеру? Если из хука возвращаются только сами данные.
Да похуй вообще, я на тройбан написал, остальное не ебет. Главное диплом получить.
Ну и на самом то деле, аналогов у VBA до сих пор нет. Ярчайший пример, к чему приводит монополия на рынке ПО.
Есть некая либа, в данном случае редакс. Чистый редакс это устаревшая версия либы, ртк это актуальная современная версия
Так а в чём проблема с отображением скелетона через Suspense в случае использования rtk query? Практически то же самое получается, что и с react query
>Чистый редакс это устаревшая версия либы, ртк это актуальная современная версия
Где это написано? Не вижу.
>Так а в чём проблема с отображением скелетона через Suspense в случае использования rtk query?
Наверное то, что rtk query не умеет в Suspense?
>Декораторы в параметрах функции
И? Что с ними не так? Не вижу ничего омерзительного.
>Приходится устанавливать доп. либы на каждое действие. Либы разрабатываются не пойми кем и нет никаких гарантий, что завтра буудт работать.
>Нет никаких стандартов, куча фреймворков и все дерьмо. ОРМ куча и все дрянные.
>Нет ничего близкого к подходу "всё есть из коробки" типа как в Руби или Джанго.
Есть Nest, он крайне близок к подходу "всё из коробки". Достаточно только prisma/kysely/drizzle накатить и всё, ну или официальный драйвер к бд, если ты руками собираешься писать запросы. В остальном далеко не на каждое действие нужно использовать дополнительные зависимости.
>>70182
В тайпскрипте они давно есть. Ангуляробояре и Нестогосподари используют декораторы не первый и не второй год.
>В тайпскрипте
Покажи мне хотя бы одну платформу, которая запускает TS без прослойки в виде JS.
Дажы ТС нинужон
вебпак ничего кроме ЖС не понимает без десятка кастомных лоадеров
Прямо здесь, прямо на мэйле. Да.
ух ты, бля, я на первом скрине от неста не отличил, лол.
Факт остаётся фактом - на тс давно можно использовать декораторы. Весь исходный код моих проектов написан на тс, так что мне строго похуй, что там происходит под капотом в динамикодрисне жаваскриптовой
Вообщем хз о чем ты, Анончик, слишком сложный вопрос для меня, но вот что гопота думает:
К сожалению, на данный момент в браузерах по-прежнему нельзя проигрывать RTSP-потоки нативным образом без использования прокси-сервера. Однако, есть открытые и свободные библиотеки, такие как VLC.js или JSMPEG, которые позволяют проигрывать RTSP-потоки в браузере через WebSocket. Эти библиотеки можно использовать для коммерческих проектов, но необходимо учитывать их особенности и ограничения.
Как react query умеет в Suspense?
Делается что-то вроде const data = useSomeQuery() и потом {data.map(item => ... )} оборачивается в Suspense, а скелетон прокидывается в fallback?
>что гопота думает
На данный момент, большинство браузеров не поддерживает нативное воспроизведение RTSP-потоков. Это связано с тем, что RTSP является протоколом передачи потокового видео, который отличается от HTTP, который используется для загрузки веб-страниц.
Однако, существует несколько способов решения этой проблемы:
1. Использование плагинов и расширений для браузера. Например, VLC Web Plugin позволяет воспроизводить RTSP-потоки в браузере. Однако, это решение может быть неудобным и требует установки дополнительного программного обеспечения.
2. Использование HTML5-видеоплеера, который поддерживает RTSP-потоки. Например, VideoJS или JW Player могут использоваться для воспроизведения RTSP-потоков в браузере.
3. Использование прокси-сервера для конвертации RTSP-потока в HTTP-поток. Это позволит браузеру воспроизводить поток без дополнительных плагинов и расширений.
4. Разработка собственного решения для воспроизведения RTSP-потоков в браузере с помощью WebRTC или других технологий.
Открытый и свободный аддон, который решает эту проблему и пригодный для неограниченного коммерческого использования, может быть разработан на основе вышеперечисленных способов. Однако, такой аддон может потребовать значительных затрат на разработку и поддержку.
Как следует с бэка возвращать фронтеру информацию об ошибках?
Моё предложение - если это не какая-то ебейшая поломка с торчащими проводами, то возвращать STATUS 200 и к любому телу ответа добавлять error: {... , забивая хуй на структуру жсона, чтобы всегда на первом уровне вложенности чекать ошибки
Либо - возвращать 4ХХ ошибку на любой пук, вот прям на любой чих, на что угодно, пользователь не заполнил поле в форме - получает 400 в ебало
Какой подход выбрать? Как быть? Сейчас в моем проекте сделанном из говна, говна и говна ошибки возвращаются так, что у тебя в одном поле может сначала прийти тип документа, а потом вместо типа на трехкратном уровне вложенности приходит вместо типа "Error" текстом, и то, что раньше было пояснением по дальнейшим действиям, теперь содержит в себе инфу об ошибке. Мне кажется это какая-то хуйня и меня не должно ебать где конкретно произошла ошибка и почему, я хочу получать ее всегда из одного и того же места. Потом бэкеру еще что-нибудь в голову ударит, и он решит вместо id возвращать error, и т.п. Еще и в случае, если требуется какое-то следующее действие при заполнении полей, возвращает 303, так вообще делают сейчас? Если все идет как и задумывалось, то и возвращай 200, нет? Кого должны ебать эти 3ХХ статусы? Что мне с того, что этот конкретный статус 3ХХ но работаю я с ним точно так же, как с любым 200? Пиздец
400-е + error объект c статусом, титулом и описанием ошибки.
сможешь при этои тем же перехватчиком, если надо, чекать определенные коды.
зачем лишний раз напрягаться и чекать 200, если это ошибка - не понятна.
просто тупо 400 + объектик.
тебе на фронте и не нужно знать где ошибка произошла.
если запрос и данные верны - бек пиздует ебаться, остальное тебя ебать не должно.
если бекендер на любой пук кастомную хуйню отправляет - твой бек ебанат.
Да похуй, главное чтоб одинаково.
Строишь ты такой архитектуру, а потом получаешь джсон вида "<!-- Padding to disable MSIE and Chrome friendly error page..."
Это впрочем проще если у тебя обосрамсы с 400/500, а ответы реста с 200.
Да вот не знаю, с одной стороны если любая ошибка приходит по 400, можно по одной и той же структуре все запросы обрабатывать. Типа ты ждешь на этом эндпоинте некий список заранее известных ошибок и обрабатываешь их в одном и том же компоненте/редухах. А все что не прошло проверку по этим ошибкам пиздует в глобальный обработчик, там опять же проверка по ожидаемым пиздецам, и уж если всё окончательно наебнулось, то выдавать что-то обобщенное и слать пользователья нахуй, пошел он нахуй
Ну в новых то его только отбитые используют. Ни в чём серьезнее лэндинга от индуса фрилансера ты его не увидишь.
Легаси понятное дело никто не переписывает. Активные старые проекты скорее всего только бигтехи осилили переписать.
>>70707
Все утилиты давно есть в стандартных апи, либо фреймворках (а в большинстве современных вообще дом трогать зашкваром считается).
Кроссбраузерность давно обеспечивают сборщики.
берешь-делаешь тег диалог и ебашишь свое спа.
Ну тут уже либо троллинг тупостью, либо ты реально вкатун тупой.
>Ну в новых то его только отбитые используют. Ни в чём серьезнее лэндинга от индуса фрилансера ты его не увидишь.
Ну как я и сказал
Чел, у тебя рынок на 90% состоит из лендингов и всяких CRM и CMS на основе готовых решений. О каких "отбитых" идет речь? По истинне отбитый заместо того, что бы добавить парочку компонентов будет тащить react+redux или еще чего похуже.
>По истинне отбитый заместо того, что бы добавить парочку компонентов будет тащить react+redux или еще чего похуже.
В итоге так и будет продолжаться годами, когда весь проект сделан на жквери и в этом говне потом придется кому-то разбираться и чистить всё это вилкой. Или еще лучше - за это нерефакторибельное говно вообще никто не хочет браться
>В итоге так и будет продолжаться годами
В каких-то да, в других так и останется лежать годами нетронутым и приносить прибыль кабанчику.
>за это нерефакторибельное говно вообще никто не хочет браться
Невозможно в текущих реалиях. Можно дать формошлепу задачу разобраться в императивно лапше на jquery 1й версии за 500к в месяц и он с причмокиванием пойдет в этом говне копаться.
Нет, рынок на 50% состоит из бигтехов, на вторые 50% из невидимого для тебя бэкофиса и клиентских решений.
Сейчас бы на галеры одноразовых формошлёпов ещё равняться.
>бигтехов
Внутри которых аналогично крутятся куча легаси на жикварах и куча CRM/CMS на готовых решениях битрикс
маил ру на картинке
Легаси на то и легаси. Мы про свежи проекты же.
У того же майкрософта например microsoft.com на jQuery. Но это и обычный лэндинг из статей и картинок который наверное лет 10 не переписывали и на который заходят разве что скачать винду.
А office.com, головной на текущий момент веб продукт майкрософта запущенный относительно недавно, уже естественно на современном стэке.
Так ты на лендинге, в продукт то зайди.
Мы - ангулярщики, тоже жиквире используем в новых проектах.
У меня есть объект, в котором я сохраняю некоторые input fields
elems = {
huy: document.getElementById('huy')
pizda: document.getElementById('pizda')
}
В процессе работы на веб-морде значения этих полей заполняются, а так же динамически появляются новые поля с индексами: huy_1, pizda_1 и т.д.
Но при обновлении страницы добавленные поля исчезают, остаётся только одно поле с введённым в него значением.
Что делаю я не так?
з.ы. при добавлении полей в контейнер я также пробовал добавлять элементы в elems, не помогло. у меня есть подозрение, что я еблан, вот только в чём именно не пойму.
>при обновлении страницы добавленные поля исчезают, остаётся только одно поле с введённым в него значением.
Обновляешь страницу, лол. Храни своё состояние в localStorage/IndexedDB/FileSystem API и опрашивай при загрузке страницы на возможность восстановления состояния.
>Но при обновлении страницы добавленные поля исчезают
ты на беке/локалсторадже сохраняешь свои данные?
>Сохраняю на бэке, проблема с исчесзновением полей сохраняется в режиме редактирования существующей записи при обновлении страницы.
Значит смотри, что у тебя бэк возвращает. Наиболее вероятно, что в твоем случае у тебя проблема именно там.
Я на 90% уверен, что с бэком всё в порядке, он возвращает нужное значение, которое потом загоняется в функцию, которая создаёт необходимое количество полей, но после того, как я в вебе редактирую эту запись и без сохранения обновляю страницу, всё херится.
Я бы код скинул, но там лютая шиза, стыдно показывать.
>как я в вебе редактирую эту запись и без сохранения обновляю страницу, всё херится.
>лютая шиза
Вот ожидать, что у тебя изменения сохранятся без сохранения - это лютая шиза.
Я уже поблагодарил чела сверху и тебе говорю спасибо, я работаю над этим. Отрапортую потом.
Либо сохраняешь промежуточные изменения, либо заводишь таблицу/срёшь в локелстореж/индексдб с промежуточными изменениями и маркируешь как драфт изменений. На повторный визит тянешь данные, сопоставляешь, хоть по дате последнего изменения и дате изменений в драфте.
Драфт старее => дискард
Драфт новее => можешь наложить поверх.
Было бы там ещё неплохо с сигналкой помигалить, что часть данных из черновика, если ты их набрасываешь прямо на лицо пользователю, сразу.
что ты получаешь с бека?
какой список полей? все те что ты сохранил - они приходят на фронт?
законсоль массив куда попадает ответ.
>Топ 100 сайтов интернета — это в значительной степени SPA на реакте/ангуляре
Топ 100 по твоему личному мнению? Более нелепового бреда не видел.
Как можно сделать SPA на jquery? Он же выполняет роль прослойки для более простого управления DOM'ом.
>Ну в новых то его только отбитые используют.
Или бекендеры, которым надо побыстрому накидать фронт на коленке.
>>70762
>фреймворках
>сборщики
Вот чтобы с этим не ебаться, поскольку у фронта каждый год что-то меняется и если с этим постоянно не работаешь, то предварительные настройки этого говна занимают много времени. Положить файл jquery.min.js в нужное место гораздо быстрее и проще. Всё для работы с dom и ajax уже есть, 99.99% что оно будет работать везде, на остальное похуй и обычно не требуется.
> и в этом говне потом придется кому-то разбираться и чистить всё это вилкой
Ты про реакт? Я как-то backbonejs вилкой ковырял, все говорили какое оно стильное молодежное, а потом через пару лет сдохло, ангуляр первый сдох, да даже в реакте всё постоянно переделывается там случайно редакс еще не деприкейтед?
Уже лет 10 как ничего не меняется, ох уж эти оправдания жикаверидедулаев.
Так мы и поверили, что ты руками cache busting сделал, например.
https://github.com/codepb/jquery-template
Вот например, есть шаблоны. Но вообще раньше в 2010 например чтобы работал плеер на сайте, но при этом была навигация и страница не перезагружалась, просто с бэка приходила страница без хедера и футера, а в ссылках было что-то типа такого атрибута onclick="goto(this); return false;" и это более менее работало во всех браузерах. Вообще jquery для этих целей не очень подходит, он больше для формочек и рюшечек на сайтах где html приходит с бэка
>Уже лет 10 как ничего не меняется
Лол, я как на фронт не заглядываю там каждый раз что-то новое, везде всё меняется, у бекенда тоже кроме жабы со спрингом просто у фронта срок жизни инструментов обычно меньше чем у остальных, но при это жиквери достаточно стабилен на фоне остальных
Ну вот жикаверидебил до сих пор это делает руками
Да кому ты пиздишь, жикаверидебил, последний раз ты куда-то заглядывал 10 лет назад
>да даже в реакте всё постоянно переделывается
Да, зачем использовать наиболее популярное решение, ведь оно может впоследствии умереть? Поэтому давайте сразу писать на том, что подохло еще 5 лет назад. Проблем точно не будет
Ну, так как жикавери до сих пор поддерживается, жикаверидебилы еще не до конца вымерли.
Аналитику в студию
> Или бекендеры, которым надо побыстрому накидать фронт на коленке.
Для этого есть vue или svelte
> Вот чтобы с этим не ебаться, поскольку у фронта каждый год что-то меняется и если с этим постоянно не работаешь, то предварительные настройки этого говна занимают много времени. Положить файл jquery.min.js в нужное место гораздо быстрее и проще. Всё для работы с dom и ajax уже есть, 99.99% что оно будет работать везде, на остальное похуй и обычно не требуется.
yarn create vite
Слишком сложно?
>бэкэндеры
>ебаться с этими вашими зумерскими нпэамами, ряхтами, хуйями, слюнями, жсами просто что бы вернуть html шаблончик
>ебаться с этими вашими зумерскими нпэамами, ряхтами, хуйями, слюнями, жсами просто что бы вернуть html шаблончик
yarn create vite my-vue-app --template vue
Пиздец бекендеры тупые, я в ахуе
>yarn create vite
>>71763
>yarn create vite my-vue-app --template vue
Лол, а полгода назад какая команда была?
Уже блядь какой-то витя взамен вебпака или хуй знает для чего до вебпака был gulp зумеры уже не знают что это. Сука сейчас поглядел этой вите 2 года от роду, я говорю постоянно какая-то новая хуйня вылазит и все раз на это говно переходят, также разом с этого говна слазят.
>Слишком сложно?
Не сложно, запоминать каждый день новое сложнее, если в этом говне не варишься каждый день, то действительно сложно видеть как вы прыгаете по фреймворкам как придорожные шлюши по кабинам дальнобойщиков.
>Пиздец бекендеры тупые, я в ахуе
Да да тупые, не усложняем жизнь на ровном месте зумерским говном
>Уже блядь какой-то витя взамен вебпака или хуй знает для чего до вебпака был gulp зумеры уже не знают что это.
Он не понимает о чём ты. Иной раз я просыпаюсь, и думаю, почему я вкатился во фронт, именно из-за этой хуйни.
Сейчас ещё и esbuild есть, и SWC новомодный, прикрученный к NextJS, дабы избавиться от бабеля.
Что-то ещё в голове вертелось, ну да похуй.
Хочу чтобы по нажатию на обведенный элемент происходило скрытие поста вместо вывода меню поста.
Пытался тыкаться со всякими onClick и post.hide(true), но добился только предупреждений редактора с подсказками которые мало что для меня значат.
Я не разработчик, просто пытаюсь сделать для себя удобно используя подручные инструменты (установлены Stylus и Tampermonkey).
document.querySelectorAll('.post__btn_type_menu').forEach(el => el.addEventListener('click', e => e.target.closest('.post').style.display = 'none'))
> Лол, а полгода назад какая команда была?
Такая же. Можно даже проще:
npm create vue@3
А пару лет назад было так:
vue create my-app
> Уже блядь какой-то витя взамен вебпака или хуй знает для чего до вебпака был gulp зумеры уже не знают что это. Сука сейчас поглядел этой вите 2 года от роду, я говорю постоянно какая-то новая хуйня вылазит и все раз на это говно переходят, также разом с этого говна слазят.
И в чём проблема-то? Неужели это так сложно, изучить парочку новых CLI команд? Инструменты развиваются, прогресс идёт.
> Не сложно, запоминать каждый день новое сложнее, если в этом говне не варишься каждый день, то действительно сложно видеть как вы прыгаете по фреймворкам как придорожные шлюши по кабинам дальнобойщиков.
Какие же бекенд-макаки ебанутые, гиперболизация на гиперболизации.
Теперь ты официально попущен:
Vue Initial release February 2014; 9 years ago
React Initial release May 29, 2013; 10 years ago
Angular Initial release 14 September 2016; 6 years ago
Оправдывайся.
> Да да тупые, не усложняем жизнь на ровном месте зумерским говном
Системы разработки софта улучшаются со временем, это нормальный процесс. В то время как бекенд-макаки стагнируют на какой-нибудь жяве 8 версии, ну или 11 от силы, хотя актуальная уже 22, лол.
Деплоить ты сам будешь? В пайплайны сборку ты сам вставлять будешь? Согласовывать хранилище артефактов для собранных билдов ты будешь? Тесты изучать и писать под новый фреймворк ты сам будешь?
Ну если так, то напиши, пожалуйста, обоснование почему это так долго занимает времени, потому что <дед-пхпшник 50 летний из которого уже песок сыпется> говорит, что он реализует подобный функционал на пыхе и жикваре за 1 день, включая написание тестов.
> Деплоить ты сам будешь?
Девопсы. Я если что подскажу, если они не способны dockerfile сделать с npm run & lint npm run test & npm build
> В пайплайны сборку ты сам вставлять будешь? Согласовывать хранилище артефактов для собранных билдов ты будешь?
Девопс макаки совсем обленились что ли? За что им по 300к платят? Gitlab CI какой-нибудь это их отечественность
> Тесты изучать и писать под новый фреймворк ты сам будешь?
Тесты под фронтенд? Фронтенд макаки пусть пишут, но вообще для вью аппа на jest ничего сложного написать тесты
> Ну если так, то напиши, пожалуйста, обоснование почему это так долго занимает времени, потому что <дед-пхпшник 50 летний из которого уже песок сыпется> говорит, что он реализует подобный функционал на пыхе и жикваре за 1 день, включая написание тестов.
Не долго, если немного времени потратить на изучение. Вкатыши фронтендеры всё это изучают за считанные дни
>Деплоить ты сам будешь? В пайплайны сборку ты сам вставлять будешь? Согласовывать хранилище артефактов для собранных билдов ты будешь? Тесты изучать и писать под новый фреймворк ты сам будешь?
Двачаю, проблема не набрать одну волшебную команду, а во всем остальном, хотя скорее всего за этих дебилов девопсы ебутся
>на пыхе и жикваре за 1 день
На пыхе давно не писал, но вот рельсах, джанге и гошке вообще все просто пишется, а на фронт выплевываешь чистый html + jquery и это работает без всяких SPA, какую-нибудь хуйню для внутреннего пользования проще так накидать чем с фронтом ебатся и оно наудивление работает быстрее чем тонны говна с крутыми молодежными фреймворками
Спасибо за быстрый ответ!
Два момента:
1) Этот способ делает посту display = 'none', а возможно ли сворачивать посты так, как это происходит при выборе "Скрыть" из меню поста (пикрл)? (да, я сам обосрался хуёво сформулировав вопрос)
2) Мой второй обсёр, как применить решение? Когда хуярю в консоль, то работает исправно. Но если создаю новый юзерскрипт, подправляю @match для всего сайта и содержимым вписываю код — ничего не происходит. (да, я настолько не разработчик)
Веду себя как заказчик-пидорас без чёткого тз, уж простите. или нахуй шлите
>>71880
>>71869
>Девопсы. Я если что подскажу, если они не способны dockerfile сделать с npm run & lint npm run test & npm build
Зарплату девопсам ты лично платишь? А оплату и согласование железки, где всё это будет крутится ты оплатишь? Пока ты всем этим занимаешься, почему кабанчик должен терять прибыль?
>времени потратить
Ты забыл аргументировать, почему кабан должен тебе, девопсерам платить в 10 раз больше того, что может заплатить деду пыхеру и получить ЛУЧШИЙ результат.
>а возможно ли сворачивать посты так
Макаба для скрытых тредов создаёт новый тред-плейсхолдер.
С 99.9% вероятностью - нет, не может.
Можешь в tampermonkey, сделать скрипт, который будет скрывать оригинальный пост и на его место добавлять плейсхолдер с клик-хендлером, чтобы убрать пост из списка скрытых.
Соответственно стаб можешь собрать из стилей макабы, или добавить свои в <style> и зааппендить хоть в тот же <head>.
> Мой второй обсёр, как применить решение? Когда хуярю в консоль, то работает исправно. Но если создаю новый юзерскрипт, подправляю @match
https://2ch.hk/*
мимо
document.querySelectorAll('.post__btn_type_menu').forEach(el => el.addEventListener('click', e => {
Post(e.target.closest('.post').dataset.num).hide();
setTimeout(() => document.body.click(), 0);
}))
По второму не знаю, я не пользуюсь этими штуками
>npm run & lint npm run test & npm build
Это одна из десятков строчек
>dockerfile
Ты хоть докер у себя самостоятельно ставил? Был один забавный случай у нас
У тебя кейс низкосортной тир 3 галеры. В годных компаниях есть деньги и на сервера, и на девопсов, и на фронтошлёпов, и на сервисы всякие типа teamcity
> Это одна из десятков строчек
Не моя проблема как говорится. Это уже девопсовские скрипты.
> Ты хоть докер у себя самостоятельно ставил? Был один забавный случай у нас
Да, в том числе на винду, в том числе без WSL. В чём проблема? Какой случай?
>просто изучи фреймворк, лол
>просто подключи 10 пакетов, лол
>просто установи докер, лол
>просто изучи документацию к тестовому фреймворку, лол
>просто напиши пайплайны, лол
>просто дай девопсам таску на создание пайплайнов на деплой, лол
>просто согласуй все машинки и артефактори для девопсов лол
Тем временем дедуля:
>хуяк хуяк и в продакшен, кабан доволен, прибыль растет
Да это образ дедули-бэкэндера, который чинит легаси код.
Чел, любые компании гонятся за прибылью, и ни один тимлид тебе не даст клепать какую-нибудь страничку/компонент на НОВОМ МОДНО ПРОГРЕССИВНОМ ПОЧТИ НАТИВНОМ АГРЕССИВНОМ фреймворке cample.js потому что ты думаешь, что это круто.
Иногда есть задачи в стиле "сделать заебись" для бабы сраки в бухгалтерии или отдела продаж чтобы формочки-кнопочи потыкали и эксельку выгрузили из данных с БД прода, вместо того чтобы развернуть мегапроект. Там все эти фреймворки новомодные нахуй не нужны и такие штуки очень часто выкидываются и переписываются с нуля.
Для наших клиентов там да ебашат командами софт go + react, дизайны, тестеры, спринты, всё по красоте.
Чел. Посмотри вакансии ВК/мейлру, или МТС, или ещё какого-нибудь бигтеха. У них все проекты на реакте, и внутренние, и внешние. Они готовы заплатить деньги чтобы построить качественный процесс разработки качественных приложений. Пхп/жиквери макаки это удел галер ооо студия рога и копы, шлёпать битрикс парашу за 150 в месяц
>ВК/мейлру, или МТС
Нахуя мне смотреть, если я прямо сейчас шлепаю формы в одной компании из этой двойкии прекрасно знаком с бизнес процессами?
>Они готовы заплатить деньги чтобы построить качественный процесс разработки
Лол ржака, настолько готовы, что ждал регрейда 3 месяца, в результате пришлось повышать свою ЗП через контроффер.
>Пхп/жиквери макаки это удел галер ооо студия рога и копы, шлёпать битрикс парашу за 150 в месяц
Oh my sweet summer child...
Ну а что, типичная зп пхп/битрикс/жиквери макаки
>мейлру, или МТС
Ты кстати понимаешь, насколько сложно ввести в данных конторах новый фреймворк в проект? Придётся пройти ИБ и доказывать необходимость архитекторам. В отличии от
> галер ооо студия рога и копы
А там не нужно вводить новый. Там уже лет пять назад ввели ангуляр или реакт или вью.
Докажи архитекторам, что он ложится на существующую архитектуру монолита на жаве/пыхе/etc. Нарисовать UML модель для помидорок-архитекторов не забудь. И посчитать эффективность.
Это ты не понимаешь что у этих компаний по несколько десятков проектов в разных кодовых базах на разных стеках.
>Это ты не понимаешь что у этих компаний по несколько десятков проектов
Очень даже понимаю. И лично видел как выясняли отношения команды, которые пилили проект под одну и туже задачу не зная друг об друге, а потом срались и доказывали что их велосипед лучше чем у другой команды.
>в разных кодовых базах на разных стеках.
Мы ведем речь об одном абстрактном проекте написанном на абстрактной легаси-пыхе, к которой понадобилось прикрутить какой-нибудь минимальный фронт.
какой фреймворк использовать для фронтенда: vue, angular или react?
У меня фронт написан на js, хочу перекатиться на фреймворк. задачи простые - забирать некие данные с бэка и динамически засовывать в шаблон, реже - передавать данные на бэк и получать новые.
Олсо, хочу уйти от чистого js, т.к. с логикой получился оверинджиниринг близкий к говнокоду.
Земля пухом. Мои соболезнования.
мимо охуевший с МТС бюрократии зато MC скраб лорд есть штатный
>скраб лорд
Кто?
>охуевший с МТС бюрократии
Жизень. ЗП не повышают нихуя, зато всякие Talent Review без задач проводят. я прошел техничку ЖС на 5/5 КСТА
>Кто?
Скрам мастер.
Помню ту ебучую клоунаду в конце года с ретро на 300+ рыл в миро и фронты, которые пытались незамеченными докатить задачки.
>Стрим Identity
Это типа бывший стрим? Вас же смержить в одно лицо с МТС Диджитал должны были, не?
>к осени хочу свалить
Я уже в процессе. Уже даже офферы есть, так что в ближайшее время покину команду большого красного яйца квадрата
Не, ты че. Раньше был МТС ИТ, который переименовали в МТС Диджитал, потом всякие стримы и бигдаты вместе с ИТ департаментом МГТС, разрабам из просто МТС влили в Диджитал.
Да я понял. Не Стрим в смысле компания, а стрим в смысле департамент внутри подразделения (стрим внутри трайба), всё это внутри МТСД.
Ну неплохо. Я старший, вот обещали летом повысить до ведущего, но, судя по всему, я съебусь раньше. Оффер предложили 270к удаленка + бонусы.
Я прошлым годом пришел на старшего за 250 + 20% бонус годовалый. Зимой повысили до ведущего, подняли зп и выплатили бонус за первые пол года, за вторые видимо надо ждать следующий талент ревью. Но чувствую, что на проекте уже стагнирую и делаю задачи через силу, поэтому хочу уволиться, но не знаю куда.
Тебя после талент ревью повысиили типа? Меня игнорят. Уже больше месяца.
>>72106
Абсолютная правда. Но как бы есть один момент: я вкатился в диджитал из ПАО МТС, с неайтишной должности. Поэтому на старте была такая маленькая ЗП. В итоге она так и осталась на старте, повышать не хотят, хотя со слов руководителя - он полностью доволен моими результатами и обещал аж до ведущего повысить.
Нет. Сначала повысили, потом уже после талент ревью выплатили бонус. Т.е. на основании талент ревью тебе этот бонус могут или повысить или занизить. Мне повысили, т.к. средняя оценка от ревьюевера + руководителя + команды была выше моей ожидаемой. В крайнем случае, если ты просто сидишь на зряплатке и ничего не делаешь, ревью не проходишь или проходишь плохо, и команда анонимно тебе ставит низкие оценки, то могут даунгрейднуть.
Прямо как будто про другую реальность читаю. Мне после талент ревью повышенный бонус тоже выплатили: команда, ревьювер и руководитель меня хорошо оценили. А вот с повышением - хуй.
А у тебя проект внешний или чисто для внутреннего использования в МТС?
Сначала он был только внутренним, и им пользовался в основном только РТК. Но в этом году стали интегрироваться другие, как и внутри, так и извне.
Зачем доказывать? Это было сделано 5 лет назад. Практически все приложения уже лет 5 как пишут на реакте/вью/ангуляре.
>5 лет назад
А архитектура составлена 15 лет назад.
> Практически все приложения уже лет 5 как пишут на реакте/вью/ангуляре.
Так я и не отрицаю. Ты докажи, что для бизнеса будет больше профитов писать фронт на новых фреймворков, вместо того, что бы взять уже готовое решение (хоть оно и легаси) и слепить фронт на нём. Фронт если что это не полноценное SPA, а какая-то одна -2 страницы, без особой интерактивности.
>Нахуя мне смотреть, если я прямо сейчас шлепаю формы в одной компании из этой двойкии прекрасно знаком с бизнес процессами?
Видимо ты не в курсе, что на фронте в МТС юзают SPA фреймворки/либы
Фронтенд вакансии:
https://career.habr.com/vacancies?company_id=355898672&s[]=3&type=all
>Найдено 17 вакансий
Поиск среди этих вакансий с запросом "angular vue react"
https://career.habr.com/vacancies?company_id=355898672&q=angular%20vue%20react&s[]=3&type=all
>Найдено 16 вакансий
Вау, из 17 фронтендерских вакансий В МТСе только одна не упоминает angular/vue/react. Ты точно работаешь в МТС, а не в ООО "Рога из копыта" пыхапэ/битрикс/жиквери-мартышкой?
>Мы ведем речь об одном абстрактном проекте написанном на абстрактной легаси-пыхе, к которой понадобилось прикрутить какой-нибудь минимальный фронт.
В конмпания уровня мейлру или МТС большинство проектов это полноценное SPA. 1-2 страницы без особой интерактивности делаются на каком-нибудь gatsby или next с SSG или вообще на чистом html/css/js. В принципе на таких лендосах и жиквери не зашквар заюзать, но статику на нексте сделать настолько же проще, тем более его и так каждый реактошлёп должен знать.
Ну тогда как в этом посте >>72142. Поскольку скорее всего большинство фронтов будут реактошлёпами, я бы взял некст
https://nextjs.org/docs/pages/building-your-application/deploying/static-exports
>Since Next.js supports this static export, it can be deployed and hosted on any web server that can serve HTML/CSS/JS static assets.
Как раздавать статику уж разобраться можно будет без особых проблем. А если нужны шаблоны прямо внутри пыхи, то офк жиквери-макароны можно лепить.
>статику на нексте сделать настолько же проще, тем более его и так каждый реактошлёп должен знать.
Никто не отрицает, что проще. Тут вопрос в том, где ты будешь всё это деплоить и как будешь сервить клиенту. И пока ты этот вопрос решаешь, услоный дедуля из команды может на статичных шаблонах на своём спринге нашлепать полноценный макет, который сразу будет приносить АФК Системе шекели, а не высасывать как девопсер, который метается из стороны в сторону, пытаясь согласовать с центром практик планируемый путь разработки. Про архитекторов вообще молчу.
>Тут вопрос в том, где ты будешь всё это деплоить и как будешь сервить клиенту
>Since Next.js supports this static export, it can be deployed and hosted on any web server that can serve HTML/CSS/JS static assets.
С каких пор раздача статики стала сложной задачей?
С тех самых, когда твой сервис без вебморды вдруг решил её отрастить.
>>72061
>>72067
>>72079
>>72099
>>72101
>>72092
Господа МТСеры, на какую зп можно у вас рассчитывать с 6 годами опыта (больше половины опыта продуктовая разработка) во фронте (react, angular) + 3-4 годами опыта в беке на ноде (express, nest, postgresql, rabbitmq, redis)? Как раз хотел в конце месяца попробовать откликнуться.
> >> 2772067
Я мимо загребал, мне не понравилось. Таких хуёвых бизнес процессов я не видел до того момента нигде. В соседней команде даже PO сгорел и съебал в закат.
>стрим в трайбе Диджитала
Что блять за наркоманы у вас там?
У меня в таком же Российском фаанге между CEO и мной на линейной должности только два человека в формальной иерархии и я думал у нас совковый завод.
Пали годноту, что за компания?
Да хуй разберешь. На внутренних у нас вон мне (миддлу на актуальном стеке) 90к платили. И это у меня еще хорошие результаты по метрикам были. Недавно брали джуна+ к нам в команду, он 160к запросил и ему согласовали без проблем я его собеседовал, кстати. В твоем случае, наверное, 250к будет нормально.
>Что блять за наркоманы у вас там?
Да дефолт бигтех. От меня по вертикале человек 5:
1) Непосресдтвенный руководитель
2) Руководитель трайба
3) Руководитель департамента
4) Еще какой-то хуй моржовый
5) Хуй моржовый покрупнее
6) Ген. директор мтс диджитал
На внутренних продуктах скорее всего да. На внешних мб по другому дела обстоят.
Может там джун из какого-нибудь МФТИ с 1-2 лет опыта. Тогда изи такая зп может быть.
мы же присвоили в объект/функцию foo.x = 20, где про это узнать?
У джуна было полтора года опыта. И на собесе он ответил лучше миддлов, которые просили 200+.
Код также выведет число 10.
Это происходит потому, что свойство x установленное для функций foo и bar не имеет никакого отношения к переменной x, используемой внутри функций.
Функция bar все еще создает локальную переменную x со значением 30, но не передает ее в функцию foo. Вместо этого, вызывая функцию f() (которая является функцией foo), она использует глобальную переменную x, которая имеет значение 10.
Установка свойства x для функций foo и bar не имеет никакого эффекта на вывод, так как это не изменяет значение глобальной переменной x.
Она же ищет в своем [[skope]], почему foo.x не попадает в scope? Вот еще похожая херня.
у обращения к foo.x другая семантика не основанная на скопе, и здесь нет обращения к foo.x
Джунов с зп >100к принято называть миддлами, а не джун+. Это как джун++ называть сеньора 300к.
Джун это прям новичок который даже спасибо если до 80к вырывается, ну и это как называть взрослого "ребенок+". Можно, но зачем?
как я понимаю - var x === window.x
когда foo.x ставишь - это никак не затрагивает.
т.к. когда ты ставишь var x - x & this.x будет в функции такой, какой ты проставил в window.x
если не проставил window.x, то будет такой, какой проставил var x вне функций.
Не верю. Полюбому капчует анонимно. Возможно даже ты и есть Пашка.
Сам я бекенд макака.
Телегу оставлю @Brave_new_world_1932
Не ведитесь, это чеченец рабов на кирпичные заводы ищет.
нет, я к этой штуке даже прикасаться не хочу. У меня и так angular 1.5 на другом проекте. С ним ебусь.
Да никто его не использует кроме озона. Если не нравится ряхт то лучше уж сразу ангуляр использовать. Даже банальный свелт лучше будет чем вуй.
>в этом статусе сам свелт
Где ты видишь его статус?
>На вуе уже тонны легаси на пыхопроектах
А ну раз тонны легаси то да, лучший фреймворк для формошлепства нодискасс
Ты реально считаешь, что зепка легаси вуедебила будет выши зепки формошлепа на ряхте/ангуляре/свелте с актуальным стеком?
ну у меня вот есть легаси проект на доисторическом фреймворке, в котором разобраться может только лишь 1 человек.
Страшно представить какую ему зп платит кабан, что бы он никуда не свалил. Он и сам хочет отказаться от этого легаси говна, но придется дохуя переписывать.
>Он и сам хочет отказаться от этого легаси говна, но
не может, потому что нихуя кроме пердолинга этого легаси говна и не умеет.
>нихуя кроме пердолинга этого легаси говна и не умеет
Возможно, но сам понимаешь, если он решит съебать то кабан охуеет, потому что в этом доисторическом говне никто не разберется. Когда я вхезжал в этот проект я охуевал. Только клонировав его и запустив его в докере у меня ничего не поднялось. Нужно было в конфигах/бд/тд настраивать все что бы оно "просто заработало"
Это я веду к тому, что он держит яйца кабана в руке, и может сжимать ее вижимая шекели себе на карту МИР.
Все деньги мира в легаси на мой взгляд
>Нужно было в конфигах/бд/тд настраивать все что бы оно "просто заработало"
Буквально каждый первый проект.
>Это я веду к тому, что он держит яйца кабана в руке
Они взаимно друг друга держат. Этот легасипердоллер охуует перекатываясь с условного битрикса/jquery на нормальный фреймворк
а кабан знает все тонкости перехода?
Кабан догадывается, что этот конкретный прогер охуеет перекатываясь на другой фреймворк? Я предпологаю что кабан и половины не понимает в терминах (имею ввиду сокращенные названия технологий, которыми он владеет), указанных у этого "легасипердоллера" в навыках.
Я думаю кабан лишь знает, что вот есть проект на фреймворк_нейм*версия_от_2007_года
Кабан заходит на hh или куда там, вбивает в поиск нужный ему стек и видит 1,5 землекопа, готовые работать с этим доисторическим говном.
И понимает, что он нихуя не найдет. Ну мне так кажется, может ты и прав
У тебя тоже не особо много ума, если считаешь что доку по реакту кроме тебя никто не прочтет. Чел, то что фронтенд вкатываютя тянучки говорит, что ничего задротского в твоей области нет. У тян нюх на задротство, они его стороной обходят. Всегда. Любую деятельность, где надо сильно углубляться в изучение в разрез с личной жизнью.
>доку по реакту кроме тебя никто не прочтет
Получается, что любой вкатун просто прочитав доку по технологии сразу готов решать задачи? Почему тогда никому джуны не нужны, которые доку прочитали?
>ничего задротского в твоей области нет.
Фронт разный бывает. От верстки логинформ под готовую CMS до работы с графикой, мультипоточностью, бинарными блобами, необходимостью знать и уметь применять алгоритмы из программы ВУЗов.
Я без проблем перешел с жиквери на реакт, когда работал в мелкой студии лет шесть назад. Доки походу изучал, причем времени на это никто не выделял. Делай что хочешь но заказчикам нужен результат иначе они уйдут.
Вот именно, о том и речь...
Без обид, но таких людей надо из сферы ссаными тряпками гнать.
Tommorrow is thursday >>2773760 (OP)
await Friday >>2773760 (OP)
Тред уже улетел в бамп лимит, так что высрусь тут.
ОП-хуй еблан, который думает, что потреблять чуточку сложную информацию - должны глаза гореть.
Погромирование - нечеловеческая хуйня, которую ты учишь только потому что есть потребность в таких знаниях.
Глаза у него не горят, да пиздец, врачи хуеву тучу лет учатся, а тут он года два не смог осилить на вкат.
Я встречал уже таких Анонов, учатся-учатся, потом хуяк "Устали-выгорили-отложили", ну и потом тупо все забывают.
Но с другой стороны, отвечая на вечный вопрос - да, не все могут вкатиться, кто-то просто тупой как камушек, а кто-то не может себя заставить сидеть и читать доку.
Глаза горят далеко не у всех.
Вот у меня не горят, для меня айтишка - возможность работать не за копейки тупому быдлу.
>Вот у меня не горят, для меня айтишка - возможность работать не за копейки
Такие как ты быстренько фильтруются на собесе
2-3 вопроса не относящиеся к языку программированию и сразу понятно шаришь ты в Computer Science или очередной залетный самозванец с зазубренным материалом
react = всегда пишешь стандартный код и отдаешь его стандартному кодеру
angular - всегда пишешь элитный код и отдаешь его инженеру-виртуозу
Могу с той же уверенностью сказать это и про тебя.
Мне даже интересно, что ты собрался спрашивать.
Либо я не распарсил до этого такие вопросы, либо это доли процента таких собесов.
Ну, понимаешь, ты пришел на собеседование, думая, что тебя будут спрашивать про this, циклы, замыкания, промисы, обработку ошибок, новые операторы языка и так далее. И ты успел освоить все эти материалы за два вечера! Угадал? Думаешь, что так легко обманешь собеседника на другом конце провода и получишь свои заветные 200 или даже 300ысяч!
В 2023 году не все так просто.
Алгоритмы, которых нет в литкоде, спецификации, внутренности фреймворков, базовые знания сетей, скучные спецификации, архитектуры ЭВМ, различные редкие протоколы, например, loraWan, техники оптимизации, хорошее понимание работы оперативной памяти и ЦП - если ты скажешьразу "ну там GC как-то сам делает, мне это не нужно", то сразу пока чел!
Понимаю, много тем, которые не нужны на фронте,о все это показывает твою вовлеченность в IT и твой общий интерес как инженера.
Возьми, к примеру, TypeScript. Сейчас ты думаешь, что тебя спросят про интерфейсы, но нет, мы даем задачку джунам написать простую утилиту на чистом TS:
IsPalindrome<''> // false
IsPalindrome<121> // true
Ты, скорее всего, будешь жаловаться, что это не нужно на фронте!
Это не нужно макаке, но если человек инженер, он самостоятельно копался в TypeScript для себя. Такие нам и нужны.
Времена халявы ушли, программисты ищут себе сильных коллег
Чел, такие вопросы бывают на 1-5% собеседований. Макакизация айти уже давно произошла.
>Алгоритмы, которых нет в литкоде, спецификации, внутренности фреймворков, базовые знания сетей, скучные спецификации, архитектуры ЭВМ, различные редкие протоколы, например, loraWan, техники оптимизации, хорошее понимание работы оперативной памяти и ЦП - если ты скажешьразу "ну там GC как-то сам делает, мне это не нужно", то сразу пока чел!
Ты там точно на фронт набираешь или самоутверждаешься?
>loraWan
Особенно это удивило, вы там на фронт набираете или прошивки на Сях писать? Ты сам-то без википедии ответишь чем банальные rs-232 от rs-485 отличается? Хули тогда сам сидишь на этом месте?
> это показывает твою вовлеченность в IT и твой общий интерес как инженера.
Нет это покажет лишь на задрота который читает много книжек, если с этим каждый день не работаешь, то то что ты учил несколько лет назад легко забывается.
Короче классика омежка отрывается на джунах, лол
>Ты там точно на фронт набираешь или самоутверждаешься?
Я ищу того кто лучше формошлепа, инженера, человек, который является айтишником!
Смотри, Зачем мне искать водителя такси, если я могу взять водителя такси, умеющего перебирать движок и варить металл?
>Особенно это удивило loraWan,
Никто не просит этим заниматься, это лишь пример, задается 10-15 вопросов, если человек вообще ничего не слышал про докер, кубер, http3, то создается впечатление что это не айтишник, а просто зубрилкин курсов, вопросы по кругозору в IT
>Это покажет лишь на задрота который читает много книжек
Ты прав, именно таких и ищем, людей с богатым кругозором в IT
>Короче классика омежка отрывается на джунах, лол
Мы просто ищем инженеров с широким кругозором вот и все
>Я ищу того кто лучше формошлепа, инженера, человек, который является айтишником!
Во сколько твоя галера оценивает тру айтишников?
Просьба без маняврирований.
мимо*
джун 100к+
мидл 200к+
сеньер 300к+
>>76496
Нашли, у нас вся компания состоит из инженеров
Ни один самозванец с курсов не просочился
Ты бы хотел что бы твою квартиру ремонтировал просто чувак который посмотрел гайд как красить стену или строитель, который интересуется всем вплоть до плотности дерева и из чего состоит краска?
Реалии 2023, кандидатов много, можно и повыбирать
Сейчас переизбыток кадров, можем себе позволить такой жесткий отбор
>джун 100к+
>мидл 200к+
>сеньер 300к+
Вкатился на мидла 150 на текущую без интервью и тестовых, лол.
Получается весь этот багаж элитных знаний прибавляет 50к?
И можно быть обычным быдлом, но получать на +-50к меньше?
Пойду поиграю в майнкрафт что ли.
Ну или год оф вар старые части.
За +50к я такой хуйней страдать не желаю.
Я, неиллюзорно, даже доку по своему основному инструменту не открывал - ангуляру. Изредка посмотреть пример, если первая строчка в поисковике.
>Сейчас переизбыток кадров, можем себе позволить такой жесткий отбор
Да позволяйте, позволяйте. Ничего же против не говорю.
Спасибо, брат
Вы видите копию треда, сохраненную 12 сентября 2023 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.