Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр
Открой для себя волшебный мир реальной рыбалки. Лови реальную рыбу на реальных водоемах! Исследуй новые рыболовные места и заполучи заветный трофей.

Реальная Рыбалка

Симуляторы, Мультиплеер, Спорт

Играть

Топ прошлой недели

  • AlexKud AlexKud 38 постов
  • SergeyKorsun SergeyKorsun 12 постов
  • SupportHuaport SupportHuaport 5 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня

Frontend + Web

С этим тегом используют

IT Программирование Javascript IT юмор Веб-разработка Программист Web-программирование Сайт Дизайн Все
122 поста сначала свежее
2
mars.frontier
mars.frontier
1 месяц назад

Как мы делали мини-игру про ровер на Марсе внутри Telegram WebApp⁠⁠

«Хочется сделать простую карту, чтобы листать её в Telegram». С этого всё и началось. А закончилось — изометрическим движком, авторизацией по WebApp, системой энергии, покупкой участков и боевым ровером с шестью колёсами.

1/3

🚀 С чего всё началось?

В начале всё было очень просто.
Мы сделали простенького бота, о котором я уже как-то тут писал, и бэк рендерил картинки с кусочком карты, где ты находишься.

В целом, даже эта идея была вполне рабочей и первые 300 пользователей с разных источников легко собрались. Мы даже провели на 9 мая конкурс "найди звезду победы" и выплатили победителю небольшой приз :)

Но само собой, что бот - не предел мечтаний, нужно было пилить полноценный мини-апп.

На боте лишь проверили гипотезу, отладили механики, типа уменьшения энергии, подзарядки аккумулятора в течении времени, пока не заходишь в игру.

Первый шаг в сторону мини-аппки - сделали вебстраничку, где можно было листать мышкой или пальцем — просто ради визуализации. Прямоугольная сетка, тайлы, немного стилей. Telegram WebApp проглатывал HTML5 на ура. Тогда не было никакой логики, просто подгрузка текстур и картинка под пальцем.

Вот как это выглядело:

  • Пользователь заходил и видел карту Марса.

  • Никакого взаимодействия — только “глянуть”.

🎮 А потом захотелось интерактивности

Следующим шагом стало добавление изометрии — чтобы выглядело как псевдо-3D. Самое интересное, что даже не потребовалось изменять текстуры. Серьезно :) Они по-прежнему те же самые, квадратные, 64 х 64. И не используется никакой 3д - движок.

вот краткое и понятное объяснение, как строится изометрическая карта из квадратных тайлов:


🧠 Основная идея:

Каждый квадратный тайл поворачивается на 45° и масштабируется по вертикали, чтобы получился ромб (изометрическая проекция). Вместо привычной сетки (x, y) мы рассчитываем экранные координаты (left, top) по формуле:


📐 Формулы для отображения:

При размере одного тайла T:

  • W = T * sqrt(2) — изометрическая ширина (диагональ квадрата).

  • H = W / 2 — изометрическая высота (высота ромба).

  • WX2 = W / 2, HX2 = H / 2 — половинки для смещения от центра.

Переход от логических координат (dx, dy) к пиксельным:

isoX = (dx - dy) * WX2 + centerX; isoY = (dx + dy) * HX2 + centerY;


🧩 Что это даёт:

  • (dx - dy) — смещает тайл по горизонтали.

  • (dx + dy) — смещает тайл по вертикали.

  • centerX, centerY — центр экрана, чтобы карта строилась относительно игрока.


🎯 В результате:

  • Из обычной квадратной сетки (x, y) формируется ромбовидная карта, где видны и горизонтальные, и вертикальные соседние тайлы.

  • Центральная клетка (текущий игрок) — всегда по центру, а остальные располагаются вокруг.

    Ну а дальше уже дело техники - придумали алгоритм перемещения в 8 направлениях: вверх, вниз, влево, вправо, плюс диагонали.

    Подключили ранее обкатанный в чатботе расход энергии за каждый шаг, и разный расход за диагональные движения, в сравнении с линейным. Плюс небольшой рандом :)

    Задали запреты на воду, скалы и занятую клетку, чтобы не было “читов”.

🔐 Само собой - авторизация

Чтобы пользователь не “прыгал” по чужим роверам и участкам, мы внедрили Telegram WebApp InitData (это такая строка с хешем, которую фронт передает нам в бэк, а мы - уже на сервере телеграм с токеном бота валидируем подпись. Если сошлась - то пользователь зашел к нам через телегу. Если нет - скорее всего он просто открыл веб-страницу как сайт, или что-то пытается поломать, подделать :)

Если кратко:

  • Telegram сам отдаёт токен с подписью.

  • Мы проверяем подпись на бэке по HMAC SHA256.

  • Получаем ID пользователя, сохраняем его в сессии.

Теперь всё честно: ровер – только твой, кристаллы – только твои.

🪐 Стало красивее: добавили кристаллы и рамки

Потом появились:

  • Кристаллы на клетках — можно собирать.

  • Подсветка клеток: белая рамка — твоя, красная — чужая.

  • Имена владельцев, чтобы было видно, кто что захватил.

    В планах: Покупка участков за кристаллы. Это было в текстовом боте. И ползая по карте, даже видны купленные тобой (белым) и оппонентами (красным) участки.

⚡️ Оптимизация и загрузка ассетов

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

  • Добавили прелоадер, который подгружает PNG-шки перед игрой.

  • Сделали показ спиннера на любом действии (движение, загрузка).

  • Кэшируем тайлы и обновляем только при движении.

🤖 Как выглядит сейчас

Игрок:

  • Заходит в Telegram Mini App.

  • Авторизуется за доли секунды.

  • Видит изометрическую карту с ровером, кристаллами, участками, рекламными баннерами.

  • Может двигаться по клеткам, собирать кристаллы (в будущем - бурить и находить ресурсы, торговать ими, покупать землю).

А мы — всё это рисуем прямо в DOM.
Никаких Canvas, WebGL, или тяжелых движков. Только HTML, CSS и немного магии на JS.


💬 Если интересно — покажу, как это выглядит вживую.
Тестить можно тут. А если зайдёт — добавим NFT, фермы и квесты на выживание 😄

Показать полностью 3
[моё] Gamedev Разработка Программирование Telegram Javascript Python Unity Frontend Backend Web Web-программирование Ton HTML CSS Верстка Длиннопост
9
3
cododelia
cododelia
8 месяцев назад
Web-технологии

Отслеживание сетевой активности и переходов между страницами в 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.
А подобные посты чаще в пишу в Telegram канале, там же и пример проекта, где это применимо.

Показать полностью
[моё] Программирование Javascript Frontend Web Web-программирование Tampermonkey Текст
3
AlexeyPerfilev
AlexeyPerfilev
11 месяцев назад

Vue.js: Почему этот фреймворк рвёт всех⁠⁠

Привет, Пикабушники! Сегодня хочу рассказать вам, почему Vue.js — это просто бомба среди фронтенд-фреймворков. Если вы еще не пробовали, то вот вам причины, почему стоит:

  1. Проще некуда Vue настолько прост, что даже ваша бабушка сможет в нем разобраться (ну ладно, может не совсем). Но серьезно, его синтаксис настолько интуитивный, что вы начнете писать код почти сразу.

  2. Гибкий, как гимнастка на Олимпиаде Хотите маленький виджет? Пожалуйста! Нужно огромное приложение? Да без проблем! Vue подстроится под любые ваши хотелки.

  3. Быстрый, как Усэйн Болт Vue такой шустрый, что вашему приложению позавидует даже Flash. Виртуальный DOM и умная система отслеживания изменений делают его молниеносным.

  4. Документация - просто сказка Официальная документация Vue настолько хороша, что ее можно читать вместо сказки на ночь. Всё разложено по полочкам, с примерами и объяснениями.

  5. Комьюнити - огонь Вокруг Vue собралось столько крутых разработчиков, что любой вопрос решается быстрее, чем вы успеете сказать "Спасибо".

  6. Дружит со всеми Vue легко вписывается в существующие проекты. Хотите добавить его к своему древнему сайту на jQuery? Да пожалуйста!

В общем, друзья, если вы еще не попробовали Vue, то самое время начать. Это как попробовать борщ после овсянки - вы поймете, что жили не той жизнью!

P.S. Если кто-то скажет, что React или Angular лучше, можете смело кидать в них помидорами. Vue - он как Чак Норрис в мире фронтенда, только лучше! 😎

Кто уже юзает Vue? Делитесь впечатлениями в комментах!

Показать полностью
[моё] Frontend Vue Javascript Web Программирование Веб-разработка Web-программирование IT Программист Текст
20
9
5173
1 год назад

You Don’t Know CSS: Свойство content⁠⁠

You Don’t Know CSS: Свойство content CSS, Web, Frontend, Веб-разработка, Длиннопост

Привет, пикабу! Решил написать серию небольших постов про Frontend в которых постараюсь рассказать о свойствах CSS, которые мало кто знает или не знает всех возможностей.

Итак, сегодня рассмотрим такое свойство как content. Уверен многие frontend-разработчики используют его каждый день для псевдоэлементов. Ну как-то так:

You Don’t Know CSS: Свойство content CSS, Web, Frontend, Веб-разработка, Длиннопост

Мало кто знает, что это свойство может принимать не только текст, но и attr(), counter(), url() и градиенты. А еще это свойство можно использовать и для обычных элементов. То есть мы можем поместить картинку внутрь псевдоэлемента или даже превратить <div /> в <img /> всего одной строчкой в CSS:

1/2

Демо

К сожалению градиенты не поддерживаются в Safari, поэтому не советую их использовать. А вот url() поддерживается всеми браузерами (даже IE8 !!!).

Еще можно указывать в content сразу несколько значений, но это работает только для псевдоэлементов:

You Don’t Know CSS: Свойство content CSS, Web, Frontend, Веб-разработка, Длиннопост

На этом пока всё. Если зайдет, то буду писать еще. И не только про CSS.

Показать полностью 4
[моё] CSS Web Frontend Веб-разработка Длиннопост
3
4287
propovednikHulio
1 год назад

Фронтендщики, отзовитесь!⁠⁠

Фронтендщики, отзовитесь!
Javascript Frontend Web IT юмор Программирование Комиксы Theycantalk Гусь
409
6
Neurosonya
Neurosonya
1 год назад
Полезные нейросети
Серия Полезность

Бесплатно веб-дизайн по текстовому запросу и готовый код⁠⁠

Designpatterns – также известный как Magic Patterns, представляет собой нового помощника для разработки фронтенда, он создаст веб-дизайн по текстовому запросу и сгенерирует готовый код.  Достаточно описать словами, какой вид формы, страницы или компонента интерфейса вы хотите получить. Также можно легко изменять и дополнять полученный дизайн.

На сайте представлено более 10 000 шаблонов, включая различные элементы дизайна веб-интерфейсов, такие как списки клиентов, формы входа, таблицы для событий, финансовые панели управления и многое другое, часто интегрированные с популярными инструментами и фреймворками веб-разработки, такими как Radix Themes, Tailwind, Mantine, Inline, Shadcn и HTML

Что самое приятное, сервис бесплатный

Хотите узнавать первыми о полезных сервисах с искусственным интеллектом для работы, учебы и облегчения жизни? Подпишитесь на мой тг НейроProfit, там я рассказываю, как можно использовать нейросети для бизнеса

Показать полностью
[моё] Полезное Искусственный интеллект Технологии Нейронные сети Инновации Digital Web Дизайн Frontend Видео Без звука
0
8
tarstarkaas
1 год назад
Лига программистов

Ответ на пост «Что делать если нет frontend разработчика, а проект нужно делать»⁠⁠1

вы не разработчики, вы копипастеры, вам дали готовое решение

о чем и сказал человек на стриме

Программирование Разработка Программист IT Frontend Backend Web Видео YouTube Ответ на пост
4
NutrientElement
NutrientElement
1 год назад
Лига программистов
Серия Программирование

Что делать если нет frontend разработчика, а проект нужно делать⁠⁠1

Если у вас нет фронтенд-разработчика, вы все равно можете реализовать проект, используя различные подходы и инструменты.

Что делать если нет frontend разработчика, а проект нужно делать Программирование, Разработка, Программист, IT, Frontend, Backend, Web
  • Используйте готовые шаблоны и библиотеки: Существует множество готовых шаблонов и библиотек для фронтенд-разработки, которые можно использовать для создания пользовательского интерфейса вашего проекта. Некоторые из них, такие как Bootstrap или Material-UI, предоставляют готовые компоненты и стили, которые можно легко настроить под ваши нужды.

  • Используйте генераторы кода: Существуют инструменты, которые позволяют генерировать фронтенд-код на основе заданных параметров и конфигурации. Например, вы можете использовать инструменты, такие как Yeoman или Create React App, чтобы автоматически создать базовую структуру проекта и начать разрабатывать интерфейс без необходимости писать код с нуля.

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

  • Используйте готовые решения сторонних компаний: Существуют сторонние компании, которые предоставляют готовые решения для фронтенд-разработки. Например, вы можете использовать платформы, такие как WordPress или Shopify, чтобы создать и настроить веб-сайт или интернет-магазин без необходимости писать код.

Интересные факты и фичи языков программирования у нас в канале, заходи :)

Показать полностью
[моё] Программирование Разработка Программист IT Frontend Backend Web
9
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии