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

Пикаджамп

Аркады, Казуальные, На ловкость

Играть

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

  • solenakrivetka solenakrivetka 7 постов
  • Animalrescueed Animalrescueed 53 поста
  • ia.panorama ia.panorama 12 постов
Посмотреть весь топ

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

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

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

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

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

Интернет-магазин по продаже различных товаров со своей уникальной идей списков и подарков⁠⁠

5 месяцев назад

Задача

Сделать редизайн сайта на основе предоставленного заказчиком дизайна. Подключение новой оплаты, доставки и других функций.

Решение

1 Адаптивная верстка уникального дизайна.

2 Программирование по разработанной верстке.

- Программирование на OpenCart.

- Подключение отправки форм.

- Подключение оплаты Kaspi.

- Подключение Яндекс доставки.

- Проработка функционала создания списков, дарителей и резервирования подарков.

- Создание мини-игры «Тайный Санта».

- Создание быстрой регистрации

- Создание и настройка личных кабинетов.

3 Настройка панели администратора.

- Редактирование контента.

- Публикация новых проектов и новостей.

- Управление пользователями и их покупками.

- Настройка загрузки товаров.

4 Тестирование продукта.

Результат

Простой и понятный интернет-магазин на OpenCart. На сайте реализована уникальная идея создания списков желаний с возможностью поделиться ими, а также функционала дарителя и резервирования подарков. На сайте созданы мини-игра «Тайный Санта». На сайте есть оплата и доставка товаров.

Показать полностью 6
[моё] IT Программирование Дизайн Веб-дизайн Веб-разработка Frontend Backend Длиннопост
1
DaTstudio
DaTstudio

Корпоративный сайт "под ключ" рассказывающий о инвестиционном фонде, его проектах и задачах⁠⁠

5 месяцев назад

Задача

Создать простой и понятный корпоративный сайт для инвестиционного фонда в ОАЭ для стран Африки. Предоставить посетителям ознакомиться с услугами и проектами фонда, а также отправить заявку на дальнейшее сотрудничество.

Решение

1 Подбор шаблона на WordPress для переработки под потребности Заказчика.

- Сбор требований, анализ конкурентов, переработка структуры шаблона.

- Создание логотипа и разработка прототипа.

2 Программирование по разработанным прототипам.

- Установка и настройка WordPress.

- Подключение отправки форм.

- Переход по ссылкам.

3 Настройка панели администратора.

- Редактирование контента.

- Публикация новых проектов и новостей.

4 Создание уникальных текстов (копирайтинг) .

5 Тестирование продукта.

6 Покупка домена и выделение собственного сервера под нужды Заказчика.

Результат

Простой и понятный корпоративный сайт на CMS WordPress. Сайт отвечает на базовые потребности пользователей: рассказывает о фонде, об услугах, о проекте и последних новостях, а также позволяет связать напрямую с представителями через форму обратной связи.

Показать полностью 7
Программирование IT Веб-дизайн Веб-разработка Frontend Backend Длиннопост
0
10
DELETED
DELETED

Ответ на пост «Я УВОЛИЛ ФРОНТЕНДЕРА. Его заменил ИИ за 0$. Что это значит для джунов?»⁠⁠1

5 месяцев назад

Проблема в том, что джунам будет не на чем учиться. Тогда откуда возьмутся мидлы и синьоры?

Искусственный интеллект Frontend Разработка Программирование Технологии Опыт Работа Будущее Короткопост Ответ на пост Текст
16
AndreyButakov
AndreyButakov

Я УВОЛИЛ ФРОНТЕНДЕРА. Его заменил ИИ за 0$. Что это значит для джунов?⁠⁠1

5 месяцев назад
Я УВОЛИЛ ФРОНТЕНДЕРА. Его заменил ИИ за 0$. Что это значит для джунов?

Я УВОЛИЛ ФРОНТЕНДЕРА. Его заменил ИИ за 0$. Звучит как заголовок из жёлтой прессы, правда? Но давайте будем честными: современный фронтенд — это боль. Вебпаки, зависимости, фреймворки, которые устаревают быстрее, чем ты успеваешь их освоить. Мой подход всегда был прост: чистый HTML/CSS/JS. Поэтому, когда мне понадобилось что-то запилить по-быстрому, я решил: а почему бы не проверить, сможет ли ИИ заменить мне фронтендера?

ЭКСПЕРИМЕНТ: ИИ ПРОТИВ ФРОНТЕНДЕРА

Я взял три популярных ИИ-сервиса: lovable.dev, v0.dev и bolt.new. Задача была несложной, но требовала интерактивности: создать приложение, которое превращает картинки в ASCII-арт. С ползунками, интерактивом и чтобы выглядело прилично. В общем, типичная задача для джуна, который только что закончил курсы.

РАУНД 1: БАЗОВЫЙ ФУНКЦИОНАЛ

На этом этапе lovable и v0 справились без проблем. Выдали вполне рабочие прототипы. А вот bolt.new... ну, он просто не запустился. Видимо, ИИ тоже иногда болеет.

РАУНД 2: ЦВЕТНОЙ ASCII-АРТ

Здесь я усложнил задачу, попросив добавить возможность делать цветной ASCII-арт. И снова lovable и v0 показали себя на высоте. Шли ноздря в ноздрю, выдавая примерно одинаковый результат. Казалось бы, победа ИИ очевидна.

ИНТЕГРАЦИЯ: ГДЕ СОБАКА ЗАРЫТА

И вот тут началось самое интересное. Когда дело дошло до интеграции решения на мой сайт, вскрылась вся правда. lovable выкатил мне полноценный REACT-проект: десятки файлов, куча зависимостей, тонны кода. Это как купить новую машину, а потом обнаружить, что к ней прилагается ещё и завод по производству запчастей. "Спасибо, но нет", – подумал я.

А вот v0 поступил элегантно. Он просто дал мне ОДИН ФАЙЛ на 300 строк. Никаких тебе зависимостей, никаких вебпаков. Просто чистый, понятный код, который можно было взять и вставить куда угодно. Разница была не в качестве кода, а в "цене интеграции". И здесь v0 оказался абсолютным чемпионом. ИИ, кстати, настаивает, что это "классный термин". Ну, пусть будет так.

ВЫВОДЫ: ДЖУНЫ, ВАМ КОНЕЦ?

ИИ пока не заменит архитектора фронтенда. Он не умеет думать стратегически, не понимает контекста бизнеса и не способен предвидеть проблемы. Но он уже отлично заменяет джуна для типовых задач. Тех самых, за которые раньше платили деньги начинающим специалистам. Главный скилл теперь — не писать код, а быстро оценивать и перебирать варианты, адаптировать сгенерированный результат, отсеивая остальной мусор. Я допилил эти 300 строк, и вот живой результат: https://optifyhub.ru/ascii_creator

Так что же теперь делать джунам? Как им устраиваться на работу и набираться опыта, если их место уже занято бездушной машиной за 0$? Или это просто очередной хайп, и скоро все вернется на круги своя? Жду ваших мнений в комментариях. Может, кто-то уже столкнулся с подобным?

Показать полностью
[моё] Искусственный интеллект Frontend Разработка Программирование Технологии Опыт Работа Будущее
12
3
user10424664
user10424664

Как переносить «висячие» слова на новую строку с помощью JavaScript⁠⁠

5 месяцев назад
изображение сгенерировано в ChatGPT

изображение сгенерировано в ChatGPT

В типографике существует понятие “висячих слов” — это короткие слова (предлоги, союзы, местоимения), которые остаются в конце строки при переносе текста. Такие переносы нарушают удобочитаемость и эстетику текста. В русской типографике принято избегать переносов после коротких слов длиной 1-2 символа.

Решение проблемы с помощью JavaScript

Для автоматического предотвращения переносов после коротких слов можно использовать JavaScript, который заменяет обычные пробелы на неразрывные пробелы ( ) после определённых слов.

// Перенос висячих слов

document.addEventListener('DOMContentLoaded', function () {

// 1. Находим все текстовые элементы, которые нужно обработать

const textElements = document.querySelectorAll('p, span, h1, h2, h3, h4, h5, h6, li, dt, dd');

// 2. Список предлогов и союзов, которые нельзя переносить

const prepositions = ['в', 'без', 'до', 'из', 'к', 'на', 'по', 'о', 'от', 'перед', 'при', 'через', 'для', 'с', 'у', 'и', 'а', 'но', 'да', 'или', 'либо', 'что', 'чтобы', 'как', 'когда', 'если', 'вы'];

// 3. Функция для обработки каждого элемента

textElements.forEach(element => {

// Получаем все текстовые узлы внутри элемента

const walker = document.createTreeWalker(element, NodeFilter.SHOW_TEXT);

const textNodes = [];

while (walker.nextNode()) {

textNodes.push(walker.currentNode);

}

// Обрабатываем каждый текстовый узел

textNodes.forEach(textNode => {

let text = textNode.nodeValue;

// Заменяем пробелы после коротких слов на неразрывные пробелы

text = text.replace(/(^|\s)([а-яё]{1,2})\s/gi, (match, prefix, word) => {

// Проверяем, есть ли слово в списке предлогов

if (prepositions.includes(word.toLowerCase())) {

return prefix + word + '\u00A0'; // \u00A0 - это неразрывный пробел

}

return match;

});

// Обновляем содержимое текстового узла

textNode.nodeValue = text;

});

});

});


Разбор кода по частям


1. Инициализация скрипта

document.addEventListener('DOMContentLoaded', function () {

Код выполняется после полной загрузки DOM-дерева страницы. Это гарантирует, что все элементы будут доступны для обработки.


2. Поиск текстовых элементов

const textElements = document.querySelectorAll('p, span, h1, h2, h3, h4, h5, h6, li, dt, dd');

Скрипт находит все основные текстовые элементы на странице: параграфы, заголовки, элементы списков и другие. Вы можете расширить этот список, добавив другие селекторы.


3. Список коротких слов

const prepositions = ['в', 'без', 'до', 'из', 'к', 'на', 'по', 'о', 'от', 'перед', 'при', 'через', 'для', 'с', 'у', 'и', 'а', 'но', 'да', 'или', 'либо', 'что', 'чтобы', 'как', 'когда', 'если', 'вы'];

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


4. Обход текстовых узлов

const walker = document.createTreeWalker(element, NodeFilter.SHOW_TEXT);

TreeWalker позволяет пройти по всем текстовым узлам внутри элемента, включая вложенные теги. Это важно, так как текст может содержать форматирование (, и т.д.).


5. Регулярное выражение для замены

text = text.replace(/(^|\s)([а-яё]{1,2})\s/gi, (match, prefix, word) => {

Регулярное выражение ищет:
· (^|\s) — начало строки или пробел (группа 1);
· ([а-яё]{1,2}) — слово из 1-2 русских букв (группа 2);
· \s — пробел после слова;
· Флаги gi означают глобальный поиск без учёта регистра.


6. Условная замена

if (prepositions.includes(word.toLowerCase())) {

return prefix + word + '\u00A0'; // \u00A0 - это неразрывный пробел

}

Если найденное короткое слово есть в списке предлогов, обычный пробел заменяется на неразрывный пробел (\u00A0). Это предотвращает разрыв строки между предлогом и следующим словом.


Результат работы

После выполнения скрипта текст “Я иду в магазин” не будет разорван на строки как “Я иду в” и “магазин”. Предлог “в” всегда останется на одной строке со следующим словом благодаря неразрывному пробелу.

Настройка скрипта

Вы можете легко адаптировать скрипт под свои нужды:
· Добавить новые селекторы в querySelectorAll() для обработки других элементов;
· Расширить список слов в массиве prepositions;
· Изменить длину слов в регулярном выражении с {1,2} на другое значение;
· Добавить обработку других языков, изменив диапазон символов в регулярном выражении.

Этот простой скрипт значительно улучшает типографику русскоязычных веб-страниц, делая текст более читаемым и профессионально оформленным.

P.S.: это JS решение иногда не во всех случаях срабатывает + бывают сложности с адаптивностью: на смартфонах может переносить совсем не так, как хотелось бы, текст может «уехать» за пределы контейнера, нужно будет «фиксить» эти моменты в CSS.


Разработчики, а как вы решаете вопрос переноса «висячих» слов?

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

Показать полностью 1
Разработка Программирование Javascript Типографика Uxui Ui Ux Frontend Верстка IT Программист Telegram (ссылка) Длиннопост
13
1
cherkalexander
cherkalexander

Онбординг ИИ⁠⁠

6 месяцев назад

🤖 Онбординг ИИ

Что происходит, когда в команде появляется новый сотрудник? Правильно — он адаптируется и старается писать код в соответствии с гайдлайнами, принятыми в команде. А помогают ему в этом документация, линтеры и ревью коллег.

По сути, ИИ — это ваш коллега, которому вы делегируете задачи, и ему тоже нужно объяснить, как писать код. И здесь как раз пригодится документация, которую никто из ваших коллег не читает 😄, но ИИ — будет.

Многие ИИ-агенты поддерживают формат "правила/инструкции", где можно описать стандарты и архитектуру проекта. Это, по сути, обычный Markdown-файл, который будет добавляться к системному промпту при каждом запросе.

- В Cline — это custom instructions
- В Cursor — rules
- В Copilot — instructions
- В Windsurf — rules


Названия немного отличаются — но суть одна.

Примеры

1️⃣ У меня Copilot упорно пытался использовать pnpm, пока я явно не указал использовать npm.

2️⃣ На работе мы используем BEM и префиксы для всех имён классов, чтобы избежать коллизий. Cline, конечно, этого не понял, пока я явно не задал это в инструкциях.

3️⃣ На выходных решил набросать MVP пет-проекта из бэклога. Сначала написал ТЗ с помощью ИИ, положил его в .github/instructions/requirements-instruction.md и попросил Copilot написать проект по ТЗ. Он справился, потребовались лишь небольшие правки. Теперь при любых изменениях он уже знает требования.

4️⃣ Можно попросить ИИ использовать conventional commits при генерации сообщений к коммитам.

Некоторые примеры — на скринах.

#ai #frontend

Показать полностью 5
Кросспостинг Pikabu Publish Bot Искусственный интеллект Frontend
2
2
mars.frontier
mars.frontier

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

6 месяцев назад

«Хочется сделать простую карту, чтобы листать её в 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
rabota.pikabu
rabota.pikabu
Пикабу Работа
Серия Вакансии в IT

Разработчик Frontend/Backend (Битрикс) в Создаватель, Удаленно⁠⁠

7 месяцев назад

Опыт работы: от 1 до 3 лет
Зарплата: от 30 000 до 80 000 рублей

Другие вакансии от Создаватель

Ваши задачи:

  • Писать сайты на 1С-Битрикс — да, мы тоже сначала не верили, что это может быть интересно

  • Настраивать и настраивать CRM Битрикс24 (а иногда чинить то, что кто-то "настроил до нас")

  • Придумывать, как бы сделать хорошо, а потом ещё и делать

  • Лезть на сервер через SSH, ставить кроны, делать бэкапы, спасать мир (по ситуации)

  • Работать с командой: у нас тут всё цивильно — без «разработчики против тестировщиков»

Требования:

  • PHP 7+, Git, ООП — прям чтоб знал

  • Понимание, как работает веб (и зачем вообще нужен backend)

  • Если умеешь в JavaScript, HTML, CSS, Битрикс24 и SQL — вообще супер, но не обязательно

ОТКЛИКНУТЬСЯ →

Больше вакансий по вашим предпочтениям ищите на сайте Пикабу Работа.

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