Cododel.dev | Александр
98 subscribers
472 photos
62 videos
7 files
200 links
Alexander Cododel. Full Stack Web Dev since 2019.

📍 Канал: мысли и проекты
📍 Чат: @cododel_chat
📍 Связь: @cododel

🔗 https://cododel.dev
Download Telegram
👩‍💻 На стриме был вопрос с собеседования:
Как сгенерировать массив чисел и найти в нем только четные?

Оставлю тут 🤷‍♂️
Решение на JavaScript
array = []
for (let i=0; i<100000; i++){
const num = Math.round(Math.random() * 10000000)
array.push(num)
}
array.filter(i=>!(i%2))


#javascript #forbeginners
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Не поверите!
Открыл для себя сегодня PetiteVue

Тоже самое, что AlpineJs, но ближе к Vue и мне больше нравится)

Интересно кому?

#web #frontend #javascript
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Что-то я пропал немного 😁
Выше я писал про PetiteVue, сегодня проясню.

Я в тот момент делал полноэкранный вижет обратной связи. И естественно встраиваемый.
До этого я еще почитал о ShadowDom, но не осмелился взять его в работу.
А вот опыт перескакивания между фреймворками у меня большой)

#web #frontend #javascript
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
👩‍💻 Хотел делать как всегда на AlpineJs, который мне полюбился сразу, как я начал делать что-то подобное. Но меня не покидала мысль сделать это на VueJs с компонентами и нормальной разбивкой на части.
Начал делать и понял, что целый Vue тянуть это оч плохая идея. Да и долго это всё, окружение еще настроить, сборку в единый бандл и т.п.

Почитал о SolidJs, понял что долго буду вливаться, и тут промелькнул PetiteVue, которого поддерживает сам Evan You. Почитал кучу хвалебных статей, с помаркой, мол "Для виджетов". И загорелся.
Сразу написал вам пост, и взял в работу.

И вылезли подводные камни...
Мне очень хотелось компоненты, биндинги и вынос логики в JS. А так нельзя 😂
Выходит очень перегруженно, что-то более менее сложное - сломает ногу(
Потерял день и переписал всё обратно на Alpine.

Мораль:
Почитал статью про новый "Супер мега инструмент" и планируешь внедрять - проверь на достоверность 😉

— P.S.
И кстати потом постфактум человек заказчика заявил, что нужен "Подключаемый виджет, в одном .js файле". И инициализцией через JS функцию.
Я подсуетился и за полдня при помощи EsBuild - собрал JavaScript, подключил Sass, Pug и запихнул в бандл все HTML сущности в <template> тегах.
А Alpine c CDN подтягивается, чтобы не плодить кучу разных виджетов с Alpine внутри бандла.
Делается очень просто) Потом расскажу.

#web #frontend #javascript
Please open Telegram to view this post
VIEW IN TELEGRAM
А еще знаю, что есть новички в веб разработке, напишу Вам в чате.
Что-то хочется мне для вас устроить прямую трансляцию с разбором Canvas анимации на JavaScript.

Разберем и перепишем с использованием ООП очень простой пример, который у меня на гитхабе лежит. Чуть-чуть потрогаем и вспомним школьную геометрию 8-9 классов)

А кто совсем не "бум-бум" - посмотрит просто, одним глазком. 🙂

#web #frontend #javascript #canvas #animation
👩‍💻 Знает кто-то, как отсечь петли в кривой, имея ее точки? 😅

Могу немного упростить вводные:
Синие линии строятся по уже имеющимся точкам, но они имеют такие вот петли.

Как мы можем их задетектить, вырезать и на их место поставить точку первого пересечения?


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

Закрывает две линии вначале и в конце так-же линиями из точек.
Получаем из высчитывая из стартовой или конечной точки зелёной линии - точки на окружности с заданным радиусом и частотой.

Практическое применение - мы можем получить маршрут на карте и обвести область вокруг него с заданным радиусом.
А практическое применения практического применения - я не знаю 😂

#javascript #canvas #geometry #issue #question
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔1
👩‍💻 Как создать проект на Angular без его установки в систему

Мимолетный видос о том, как решить проблемы с правами запуска и т.п. при создании проекта на Angular.
Если сделать так, что не может не создаться проект)

😉 Глядеть


#frontend
#angular #guide #troubleshooting #nodejs #javascript
Please open Telegram to view this post
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Скрипт для кинопоиска

Как вам такое?

UPD.
— Адаптировал под SSR
— Добавил кнопок на страницы со списками
— Добавил поддержку сериалов
— Заменил текст в кнопке на иконку
— Доработал стили, сделав адаптивными вне зависимости от цвета фона

До этого работало только при прямом переходе на страницу извне, либо после перезагрузки страницы
И только на фильмах

Вот более развернутая демонстрация

Используется для того, чтобы вручную ссылки не переписывать и фильмы смотреть даже те, которых нет в KinopoiskHD
На Кинопоиске по сути все фильмы есть, его как поисковик и каталог использую, а смотрю на другом сервисе.
Только теперь это в интерфейс самого кинопоиска вписал.


#JavaScript
1👍1
💬 Отслеживание сетевой активности и переходов между страницами в SPA

При создании инъецируемых скриптов для сайтов, использующих архитектуру SPA (Single Page Application), может возникнуть потребность отслеживать переходы между страницами или перезагрузки элементов. Из-за динамической подгрузки контента через AJAX и Fetch, события DOMContentLoaded или load будут бесполезны.

Для инъецируемых скриптов, хорошим решением будет отслеживать состояние радиомолчания (network idle). Оно наступает, когда все сетевые запросы завершены, и сеть на некоторое время «замолкает». Подобное поведение полезно, если нужно запустить код только после того, как пройдут все запросы или после перехода на другую страницу, чтобы реинициализировать скрипт.

💻 Пример сценария использования

Представьте себе, что вы хотите внедрить кнопки, виджет или другую логику на странице, которая должна запускаться после перехода на новую страницу в SPA-приложении. В этом случае подойдет отслеживание network-idle, чтобы понять, когда контент страницы загрузился.

🤫 Как это работает

1. Инициализация счетчика активных сетевых запросов.

Сниппет отслеживает все сетевые запросы на странице (Fetch и XMLHttpRequest) с помощью PerformanceObserver. Каждый раз, когда начинается новый сетевой запрос, счетчик activeRequests увеличивается.

2. Обработка завершения запросов.

После завершения запроса activeRequests уменьшается, и проверяется состояние сети. Если активных запросов не осталось, через 500 мс на объекте window генерируется событие network-idle.

3. Использование события network-idle.

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

4. Задержка перед генерацией события.

Задержка в 500 мс добавлена, чтобы устранить "шум" случайных срабатываний и убедиться, что действительно наступило состояние радиомолчания.

📞 Важно:

• Модификации роутов в SPA. Если у вашего SPA-приложения не используются сетевые запросы при изменении маршрутов, дополнительно можно привязаться к событиям history.pushState и popstate.

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

🫡 Заключение

Этот сниппет помогает организовать логику на основе сетевых событий в инъецируемых скриптах для приложений с динамическим роутингом, позволяя учитывать состояние “радиомолчания” и гарантируя, инъецируемые скрипты выполняются после прогрузки страницы, а также помогает перезапускать инъецируемый скрипт при переходах между страницами.

🖼️ Ознакомиться со сниппетом можно на GitHub Gist.

#JavaScript
Please open Telegram to view this post
VIEW IN TELEGRAM
1
This media is not supported in your browser
VIEW IN TELEGRAM
И снова React!
Простая библиотека для уведомлений

Сижу подучиваю его, по случаю выхода Tauri v2 из beta!
Rust базово уже знаю, а большая часть работы у меня в любом случае пока ожидается с веб технолиями или фронтом, по Rust я только мелкие задачки буду брать, и делать интерфейс им на React!

Ну а на видео - полностью самописная стилизованная на css modules библиотека, если можно так выразиться.

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

Сначала я чуть не изобрел заново Class Components, при этом не используя реальные классовые компоненты, и даже заставил это вё дело работать.
Под шумок смог реализовать возможность вызова экземпляров класса, будто это функция, как в PHP и Python.
Выложил сниппет в gist.
Достаточно вернуть toCallable(this) из конструткора любого класса, и реализовать ему метод call

Но меня остановил TypeScript, когда я уже смог типизировать абсолютно все свои извращения, но он мне не дал возможности создать тип, который бы представлял из себя смесь объекта и функции.
За что я его люблю, это за две вещи:
• Сильно прокачивает IDE, в плане подсказок кода (и AI ассистенты гораздо лучше тебя понимают)
• И ты если пошел не в ту сторону, если в своем уме, в процессе поиска решения и постоянного рефатокринга, рано или поздно задумаешься "А прав ли я?"

ЗЫ.
Исходники выложу если попросите.


#react #JavaScript #TypeScript
👍1