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

Бильярд 3D: Русский бильярд

Симуляторы, Спорт, Настольные

Играть

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

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

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

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

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

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

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

Новый 1D RPG Constructor на языке JavaScript, для создания однопользовательских игр⁠⁠

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

С 2006 года существует такая игра, как Murloc RPG, под авторством un-mediocre. В 2011 году вышло продолжение Murloc RPG 2: Episode 1

Murloc RPG 2: Episode 1

Murloc RPG 2: Episode 1

Чуть позже был анонсирован набор инструментов MUDKIT. Из за проблем с авторским правом на ресурсы из World of Warcraft`а, un-mediocre прекратил разработку следующих частей.

Фанатский ремейк игры, сделанный на юнити.

Фанатский ремейк игры, сделанный на юнити.

Наша команда, как и множество фанатов игры, начали разрабатывать что то похожее. Наш выбор пал на JavaScript, так как мы уже работали с ним. Изначальной идеей было создать нативный кодовый редактор, как в Ren'Py, но в последствии мы так же добавили визуальный редактор, на подобии Construct 3 или PlayCanvas

Работа с персонажами в 1D RPG Constructor

Работа с персонажами в 1D RPG Constructor

Первой игрой, созданной для тестирования возможностей конструктора, стала Anni di piombo, чуть позже появилась Eternal Flame с улучшенной боевой системой.

Игра Anni di piombo/ Изначально хотели назвать Смута по Итальянски.

Игра Anni di piombo/ Изначально хотели назвать Смута по Итальянски.

Сейчас конструктор находится в бета версии, однако посмотреть визуальный редактор можно здесь. Также есть видео, по работе с кодовым и визуальным редактором. На странице 1D RPG Constructor вы можете узнать больше информации о конструкторе.

Показать полностью 3
Javascript Gamedev Constructor Длиннопост
0
6
FrankyBob
FrankyBob

Как я с помощью ИИ за час собрал Помодоро-таймер, который заюзали коллеги⁠⁠

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

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

Начальный экран приложения (прелоадер)

Начальный экран приложения (прелоадер)

Завал задач и поиски спасения

Итак, дело было так. Очередной завал на работе, куча задач, мозг кипит. Вспомнил про технику Помодоро — это когда работаешь 25 минут, потом 5 минут отдыхаешь. Простая штука, но реально помогает не выгорать.

Полез искать нормальный таймер в интернете и... знакомая история:

  • Либо убого простые

  • Либо перегруженные фигнёй

  • Либо на английском

  • Либо платные

  • Либо ещё регистрацию просят

В общем, типичная ситуация: "Да я сам лучше сделаю!" Но проблема в том, что фронтенд я знаю на уровне "поменять текст на странице через консоль разработчика до перезагрузки".

Вспомнил про хайповую штуку

Тут я вспомнил про так называемый "вайб-кодинг" с нейросетями. Да, знаю, что многие к этому относятся скептически, но решил попробовать. Открыл Claude и написал примерно так:

"Старина, сделай мне HTML-страничку с таймером Помодоро. Нужно: таймер на 25 минут, задачи можно добавлять, статистика какая-нибудь и чтоб пикал когда время вышло."

И тут началось волшебство! Claude выдал мне полноценный рабочий прототип. Причём не просто "Hello World", а реально функциональную штуку😉:

  • Нормальным таймером

  • Возможностью добавлять задачи

  • Статистикой

  • Звуками

Меня понесло

Ну и дальше меня, конечно, понесло:

  • А можешь добавить сохранение в Local Storage?

  • А сделай звуки покруче

  • А перекрась вот это в зелёный

  • А добавь настройки времени

  • А мобильную адаптивность

Claude всё это выполнял как послушный джуниор! За час у меня был готов довольно приличный таймер.

Внешний вид приложения (начальной версии не осталось, к сожалению, показываю конечный результат)

Внешний вид приложения (начальной версии не осталось, к сожалению, показываю конечный результат)

Реакция коллег

Показал результат фронтенд-разрабам на работе со словами: "Смотрите, что я за час накатал, вообще без знаний!"

Их реакция:

  • 😳 (удивление)

  • 🤔 (изучают интерфейс)

  • 😯 (ещё больше удивления)

  • Нефига себе, ништяк получилося! Реально работает!

Решил довести до ума

После такой реакции подумал: "А почему бы не довести это до продакшена?" И понеслось...

Сейчас можете посмотреть результат: pomo25.ru

Что в итоге получилось:

Для тех, кто хочет настроить под себя:

  • Настраиваемые интервалы (любое время, какое хочешь!)

  • 10 типов звуков + можно загрузить свой

  • Ручное сохранение настроек

  • Push-уведомления в браузере

Для обычных людей:

  • Добавляешь задачи и следишь за прогрессом

  • Видишь статистику: сколько помидорок сделал

  • Не забываешь делать перерывы

  • Задачи сохраняются автоматически

Запуск таймера для добавленной задачи, длительностью 1 час

Запуск таймера для добавленной задачи, длительностью 1 час

Настройки приложения

Настройки приложения

Про дизайн (не кидайтесь тапками)

Отдельно про дизайн. Да, я знаю, что он специфический. Это не потому что у меня нет вкуса (хотя может и нет 😅), а потому что я специально попросил Claude сделать что-то в стиле киберпанка 90-х.

Получилось ярко, кислотно, с неоновыми цветами и пиксельными эффектами. Возможно, не всем зайдёт, но зато запоминается!

Телеграм-версия

Потом решил пойти дальше и сделал версию для Телеграма: @pomo25_bot

Плюсы:

  • Данные синхронизируются через облако Телеграма

  • Уведомления приходят от самого Телеграма

  • Работает на телефоне как нативное приложение

Минусы:

  • Не работает в фоне (об этом ниже)

Приложение в Telegram

Приложение в Telegram

Проблема с фоновой работой

Единственное, что не смог победить — работу в фоне на мобилках.

Проблема в том, что:

  1. Телеграм Web Apps работают в WebView

  2. При сворачивании приложения WebView приостанавливается

  3. JavaScript перестаёт выполняться

  4. Service Workers в WebView работают криво

  5. iOS вообще жёстко блокирует фоновые скрипты

В итоге при сворачивании таймер автоматически ставится на паузу. Для полноценной работы в фоне нужно было бы нативное приложение.

Опыт работы с нейросетями

Claude: король прототипирования

В начале Claude был просто космос:

  • Быстро понимает что нужно

  • Генерирует рабочий код

  • Хорошо итерируется

  • Не задаёт лишних вопросов

Но потом начались проблемы

Когда проект разросся, Claude начал путаться:

  • Исправляет одно, ломает другое

  • Забывает контекст больших файлов

  • Приходилось делать бэкапы в гите постоянно

Попробовал ChatGPT — ещё хуже! То ли ленился и отвечал "попробуйте перезагрузить страницу", то ли чинил совсем не там, где надо, вообще не понимая что происходит в коде.

Gemini спас ситуацию

Тогда попробовал новый Gemini (у него миллион токенов контекста). И охренел!

Gemini смог:

  • Прочитать ВЕСЬ проект целиком

  • Найти реальные причины багов

  • Переписать проблемные части

  • Почистить код от мусора


Реальная польза

Сейчас пользуюсь своим таймером каждый день:

  • Реально стал делать перерывы (раньше мог 3 часа сидеть не вставая)

  • Лучше планирую время на задачи

  • Меньше выгораю от сложных задач

  • Коллеги тоже подсели, просят фичи добавить, но я пока просто собираю обратную связь и анализируюю насколько это будет сложно реализовать и внедрить

Мораль истории

Современные нейросети действительно могут сильно понизить порог входа в разработку. Даже если ты не знаешь React/Vue/Angular, можно создать полезную штуку.

Но есть нюансы:

  • Для прототипов ИИ идеален

  • Для больших проектов нужно понимать что делаешь

  • Разные ИИ лучше для разных задач

  • Git обязателен при работе с ИИ

Итог

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

Сейчас собираю обратную связь (конструктивную, не токсичную) и планирую постепенно что-то добавлять и исправлять по мере поступления интересных идей.

Кто-то ещё экспериментировал с ИИ-разработкой? Поделитесь в комментах!


P.S. Если найдёте баги или будут идеи, пишите. Обратная связь очень ценна!

UPD: Забыл добавить — если кто захочет посмотреть, что получилось: pomo25.ru и @pomo25_bot в Телеграме!

Показать полностью 5
[моё] Искусственный интеллект Нейронные сети Gemini Таймер Веб-разработка Программирование Javascript HTML Продуктивность IT Разработка Прототипирование Эксперимент Технологии Автоматизация Работа Образ жизни Длиннопост
5
1
Lineage2JS
Lineage2JS
ИТ-проекты пикабушников

Баг или фича?⁠⁠

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

Привет. Я продолжаю разрабатывать сервер для Lineage 2 C1 на JavaScript Проект

Перейти к видео


При добавлении SoulShot функционала не добавил проверку не только на наличие оружия, но и кто атакует — игрок или NPC. Как итог теперь все атакуют с помощью SoulShot.

Блог про разработку сервера для Lineage 2 в телеге https://t.me/lineage2js

Показать полностью
[моё] Разработка Программирование MMORPG Lineage 2 Javascript Nodejs Видео Короткие видео
13
4855
contentfactory
contentfactory

Посоветуйте фильм⁠⁠

5 месяцев назад
Посоветуйте фильм
Юмор IT юмор Повтор Скриншот Переписка Javascript Изучение языка
173
2159
contentfactory
contentfactory

Работа после курсов или во время⁠⁠1

5 месяцев назад
Работа после курсов или во время
Юмор IT юмор Курсы Трудоустройство Скриншот Зашакалено Жена Javascript
124
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
Вопрос из ленты «Эксперты»
OlegMay

Загадка. Сайт работает, как получить такой же результат? (H3, hotpink). Полный алгоритм с объяснением⁠⁠

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

https://maygame.ru

Edit: ок, подсказка: https://maygame.ru/May.Js

Загадка. Сайт работает, как получить такой же результат? (H3, hotpink). Полный алгоритм с объяснением
Показать полностью 1
[моё] Вопрос Спроси Пикабу Длиннопост Javascript
8
1
Neuralnetznaet
Neuralnetznaet

Qwen сгенерировала мне цитаты Говарда Лавкрафта, если бы он был преподавателем JavaScript⁠⁠

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

1. О приведении типов и `==`

«Не смейте бросать взгляд на оператор `==`, ибо в его бездне затеряны все законы логики. То, что числа и строки кажутся равными, — лишь обман, рожденный хаосом, что правит типами. Берегитесь, ибо даже `null == undefined` — это шепот древнего ужаса, пробуждающегося в вашем коде» .

2. О переменных без `const/let`

«Когда вы опускаетесь до использования необъявленных переменных, вы призываете тень хойстинга. Она ползет из глубин памяти, искажает реальность и порождает баги, коих не в силах победить даже самые опытные рыцари отладки» .

3. О рекурсии

«Рекурсия — это дверь в бесконечность. Каждый вызов функции уводит вас глубже в лабиринт стека, где время теряет смысл, а последний кадр станет вашей могилой. Не ищите выхода — он существует лишь в теории, как и надежда на `O(1)`» .

4. О `this` в JavaScript

«Сердце `this` — это черная дыра, поглощающая контекст. Пытаясь понять его, вы рискуете обнажить разум перед лицом космической случайности. Даже `bind()` лишь временная повязка на глаза, за которой скрывается истинная бездна» .

5. Об асинхронности

«Коли вы решитесь на `callback`, знайте: ваш код разорвется на части, как тело жертвы в пасти демона. Промисы же — это змеи, что шепчут вам: "Всё будет потом", но "потом" — это эпоха, где время не имеет смысла» .

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