Pull to refresh
13
0
Vlad Barcelo @vladbarcelo

frontend-костылятор

Send message
у инвестора было предложение, что я начинаю продолжать вести себя уже как совсем полный мудак, чтобы вся команда в итоге хлопнула по собственнуму желанию, причём эта идея какое-то время нами (инвестор, представитель и я) активно обуждалась, но в итоге всё-таки отказались

Дальше не читал. Комментарии излишни.

А что вообще можно обсуждать больше часа? Нет, срсли, одно дело когда у вас созвон а-ля "нужно обсудить крупную таску, чтобы все правильно поняли что от них требуется" или митинг по поводу "мы хотим внедрить X, Y и Z, но мы сначала хотим выслушать других лидов". ИМХО, созвоны дольше часа сильно расфокусируют внимание, даже если в процессе обсуждается какое-нибудь мега-ТЗ или кипит долгий спор о том что внедрять персики лучше чем внедрять нектарины.

Со сплющиванием массива есть тоже забавный хак:


const flat = (arr) => arr.join().split(',')

flat([1, [2, [3, [4,5]]]]); // => [1, 2, 3, 4, 5]

Хорошо, окей, а если мне в блоке инициализации приложения нужно пользоваться async/await?


Пока что получается такая конструкция:


(async () => {
  await someDatabaseInit()
  await someCacheInit()
  // ...
})()

Был в Хельсинки всего один раз, всё понравилось, кроме огромного количества цыган в центре, которые могли докопаться по поводу мелочи аж на двух языках.

Использовать в качестве пульта смартфон не выйдет. Достойные аппараты со встроенным инфракрасным портом больше не выпускаются. А те, у которых нет этого порта, могут только выключить ТВ, но не включить его (командами по сети).

А как же телефоны от Xiaomi? Достойные аппараты, и порт инфракрасный есть.

Лихо вы обозвали исключения goto. Так ведь можно и любую event-based систему заклеймить.

Можно. Тогда авиалайнер сделает скриншот. /s

Оно же гораздо ниже чем мониторное, разве нет?

Формально — нет, но под него есть QT...

Ни хуки в реакте, ни новый синтаксис Vue не обязательны к использованию. Старый синтаксис как работал, так и работает, и будет работать как минимум до следующего мажорного релиза.

А ещё так можно выбросить ненужные свойства объекта:


const data = { usefulProp1: 1, usefulProp2: 2, uselessProp1: 3, usefulProp3: 4 }
const { uselessProp1, ...usefulData } = data // хоба!
console.log(usefulData) // дальше работаем с этой переменной

Пардон, поправил.

А почему SSR не используете? Быстрее работает же, апишка дёргается на сервере, первичный html отдаётся гидрированным, ну и для ботов хорошо. Вообще, по-моему круто для более-менее статичных страниц (типа лендинга) использовать пререндеринг на уровне CI/CD, для динамических — первые несколько блоков кидать на SSR, а дальнейшие блоки внизу страницы грузить и гидрировать лениво и асинхронно, отдавая скелетоны на время загрузки чанка с ними. Ну и выбросить все блоки, которые доступны после логина в отдельный чанк, который тоже загрузится после логина. Можно ещё обмазать это каким-нибудь smart prefetch-ингом, чтобы совсем всё отлично было.

Вот, кстати, ещё один метод обхода, вдогонку: script capital letters. Например: https://pastebin.com/6jWMb15a

По сути, просто используется RLO в середине словосочетания. Строка на входе получается мусором c юникодом, а при отображении юникод-символ не отображается, но переворачивает всё что идёт за ним справа на лево. Вы и сами можете это увидеть — попробуйте выделить ругательное словосочетание в комментарии и увидите как выделение "глючит" — сначала выделяет слева на право, о потом начинает идти в обратную сторону.

Спасибо, было интересно.
Можно ещё добавить что-нибудь про lazy hydration, метрики TTI этот приём улучшает на порядок.

Жаль что иногда банит слова в пользу "ругательного" значения. Например, рассказать как съел крекер с сыром не получится — забанят за расовые оскорбления, ууу.


Плюс, можно легчайшим образом обмануть:


console.log("fu\u202etahssa gnikc")
// получаем (можете попробовать сами): fu‮tahssa gnikc

И система это не детектит, для неё это выглядит как "fu\u202etahssa gnikc".

После Тараса КТЛ серьёзно воспринимать словосочетание "чистый код" не получается.

Потому что на любом митинге идея встроить в план исправление техдолга с удовольствием примется и отложится в долгий ящик по всё тем же причинам. Стремиться к этому, в свою очередь, можно бесконечно.

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Registered
Activity