Vue-FAQ
924 subscribers
562 photos
90 videos
557 links
Канал сайта https://vue-faq.org
Информация о Vue.js, фронтенд разработке и не только

Contacts: @RuslanMakarov
Download Telegram
Замутил тут проект от нечего делать.

Есть сайт знакомств, там 9000 кандидаток. Настоящих, не ботов.
Работает наподобие Тиндера - с пролистыванием. Ну и описание у каждой немаленькое.

Листать вручную и читать всё - влом
Написал на Playwright бота, который все это пролистал и загрузил как HTML.

Распарсил в JSON.
Выделил четкие параметры (возраст, блондинка/брюнетка, локейшн и т.п.) - это хард-скилы.
Выделил нечеткие - описание, увлечения, мечты и т.д. - это софт-скилы.

Загрузил все в БД.

Дальше фильтруем сперва по хард-скилам. Остается пару тысяч вариантов.

Выгружаем всё частями в CSV для экономии, и скармливаем батчами AI с нужным промптом - подходим ли по интересам, насколько серьёзные у нее намерения и тому подобное. В gpt-4o-mini, чтоб недорого.

Ну он ранжирует, и получаем 30 самых подходящих потенциальных невест с хорошим приданным и прямыми ссылками на профили.

День работы.

#pet #ai
Media is too big
VIEW IN TELEGRAM
Марвин Джон Химейер (Marvin John Heemeyer; 28 октября 1951 — 4 июня 2004) — владелец мастерской в Гранби, штат Колорадо, военный инженер на пенсии, аэродромный техник ВВС США.

После длительного конфликта с компанией Mountain Park Concrete (бетонный завод) и местными властями по поводу территории, на которой находилась его мастерская, он оборудовал бульдозер Komatsu D355A-3 бронёй и разрушил 13 административных зданий (в том числе все здания, принадлежавшие бетонному заводу), после чего покончил жизнь самоубийством.

Это происшествие также известно в СМИ и интернете как «Война Марвина Химейера», а его бульдозер — как KillDozer

#offtop #video
Моисей Сусанин Минин упорно продолжает куда-то вести свои 40 тысяч последователей...

#minin #react
К новости выше

«Куда ты ведешь нас?.. не видно ни зги! —
В сердцах к Владилену вскричали враги: —
Экспертами стать мы хотели Реакта,
Но света не видно в конце сего тракта.
«Куда ты завел нас?» — реактер вспрошал.
«Туда, куда надобно! — Минин сказал. —

Убейте! замучьте! — моя здесь могила!
Но знайте и рвитесь: во Vue наша сила!
Предателя, мнили, во мне вы нашли:
Их нет и не будет на вьюшной земле!
В ней каждый фреймворк сей с младенчества любит
И душу изменой свою не погубит».

«Злодей! — закричали враги, закипев, —
Умрешь под мечами!» — «Не страшен ваш гнев!
Кто с Vue в сердце ходит, тот бодро, и смело,
И радостно гибнет за правое дело!
Ни казни, ни смерти и я не боюсь:
Не дрогнув, умру за родимую Vue!»

«Умри же! — реактеры злобно вскричали,
И сабли над Мининым враз засверкали! —
Погибни, предатель! Конец твой настал!»
И медленно Минин весь в ранах упал!
Снег чистый чистейшая кровь обагрила:
Лишь губы шепнули: "Во Vue наша сила!"

#literature #creative #minin
Pinia Colada появилась и как Nuxt модуль

Сколько в Nuxt уже [неправильных] способов заменить fetch(), включая Tanstack?

#pinia #nuxt
VS Code позволяет отключить аппаратное ускорение при отрисовке, что может заметно убыстрить IDE при плохом GPU или проблемах с драйверами

1. Preferences > Configure Runtime Arguments
2. Добавить: "disable-hardware-acceleration": true

Или сразу в .vscode/argv.json

#vscode #tip #optimization
Хеллоувин!

#offtop
Из святой троицы JS, HTML и CSS последний развивается, наверно, быстрее всех

Если надо анимировано удалить какой-то блок (fade-out), то раньше использовался opacity + transition. Кроме того, блок надо было еще и реально удалить - чтобы не мешал в DOM-e, это делалось либо одновременной установкой height:0 (и блок все равно в DOM-e), либо js решение setTimeout() + display:none. Оба некрасивые.

Сейчас в большинстве браузеров поддерживаются еще 4 способа для подобного рода задач.

1. animation

.fade-out {
animation: fade-out 0.25s forwards;
}

/* Keyframe animations */
@keyframes fade-out {
100% {
opacity: 0;
display: none;
}
}


2. transition-behavior: allow-discrete;

.card {
transition: opacity 0.5s, display 0.5s;
transition-behavior: allow-discrete;
}

.card.fade-out {
opacity: 0;
display: none;
}


3. @starting-style

.card {
@starting-style {
opacity: 0;
}

opacity: 1;
transition: opacity 0.5s;
}


4. calc-size()

.card { 
height: 0;
}

.card.open {
height: calc-size(auto);
}


#css #tip
Немного о главном, уже начавшемся, мировом событии следующей недели

На первой картинке - кандидаты в президенты США по мнению "независимых" опросов

На второй - самая крупная в мире биржа по приему ставок на разные события с коэффициентами, полностью определяющимися чисто по схеме "спрос-предложение".
Ставок уже на 2.6 миллиарда.

Математика и рыночек порешали.
Ну и Маск немного.

#offtop
Вышли Vue Devtools v7 (7.5.6)

Из нового - появилась секция Timeline

Что она делает - непонятно. У меня ничего не записывает.

#vuejs #devtools
Anthony Fu

27 лет, бакалавр в CS, выпустился в 2019 году. Очень любит себя.

Не вылазит с конференций, на которых представляет доклады (а хороший доклад сделать занимает очень много времени).

Не вылазит с кучи соцсетей, постоянно дискутируя.

Работает на коммерческих работах.

Мэйнтенит и разрабатывает десятки опен сорс проектов (на его сайте перечислены около 70 больших проектов).

На второй картинке его средний день. На третьей - это когда он немного больше поработал. И так без выходных.

А еще он написал в Твиттере сегодня вот это. Но коммиты в его репозитории так и летели весь октябрь.

Я не конспиролог, но... как? На GitHub-e есть отложенные коммиты?

#antfu
2-3 ноября Vue School снова делает бесплатный доступ к своим видео.

#vueschool #learning
В Chrome 130 появился бэджик scroll на скролящихся элементах

По-моему, очень полезная штука. Порой долго ищешь по дереву, что скролится.

P.S. Такое ощущение, что как только MS Edge пересел на Chromium, сразу появилась конкуренция, и браузеры стали активно развиваться.

#chrome
Интересное сравнение нативной, кроссплатформенной (типа Flutter) и PWA разработок

Статья об этом на Хабре

#pwa #flutter
Если вам нужно визуально "увидеть" свою страницу, попробуйте вот это в глобальных стилях:

*,
*::before,
*::after {
outline: 2px solid lime;
}


Выделит все элементы по границе

*,
*::before,
*::after {
background: hsl(0 100% 50% / .1)
}


Выделит элементы и оттенком покажет вложенность

#css #tip