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

Долгий путь: idle

Кликер, Ролевые, Фэнтези

Играть

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

  • AlexKud AlexKud 38 постов
  • Animalrescueed Animalrescueed 36 постов
  • Oskanov Oskanov 7 постов
Посмотреть весь топ

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

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

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

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

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

Подводные камни при переходе с ES5 на ES6⁠⁠

🗿 Подводные камни при переходе с ES5 на ES6

Недавно мы с командой, наконец-то перешли с ES5 на ES6.

Всё прошло достаточно плавно, нам пришлось исправить всего несколько ошибок в рантайме. Почти все ошибки были в очень старых файлах, где были отключены проверки typescript с помощью @ts-nocheck.

Ошибка 1️⃣ — Action is not a constructor

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


const Action = () => {}; // ES6
const action = new Action(); // Action is not a constructor

var Action = function () {} // ES5
var action = new Action(); // Всё ОК


Ошибка 2️⃣ — Функции, объявленные через let, больше не попадают в window


let openAction = function () {}
window.openAction() // window.openAction is not a function

// Раньше let заменялся на var и всё работало
var openAction = function () {}
window.openAction() // всё ок


Дело в том, что когда переменная объявляется глобально через var, она автоматически становится свойством глобального объекта window. Подробнее тут.

Ошибка 3️⃣ — Cannot access variable before initialization

Одна из ошибок случалась, когда мы пытались получить доступ к переменной promise до её инициализации.


class Queue {
executing;

run(thenable) {
const promise = new Promise(async (resolve, reject) => {
// пытаемся получить значние promise
while (this.executing != promise) {
// ...
}
// ...
});
}
}

// Cannot access 'promise' before initialization
new Queue().run(Promise.resolve())


Раньше, const превращался в var и ошибки не было. Это связано с понятием временной мертвой зоны TDZ, которая не возникает у переменных, объявленных через var.

Были и другие ошибки, но они по сути вариации или комбинации тех ошибок, что я привел выше.

👉 Кстатии, размер бандлов уменьшился процентов на 20.

#TypeScript #JavaScript

Подводные камни при переходе с ES5 на ES6 Кросспостинг, Pikabu Publish Bot, Typescript, Javascript, Telegram (ссылка)
Показать полностью 1
Кросспостинг Pikabu Publish Bot Typescript Javascript Telegram (ссылка)
0
3
Eye.Providence
Eye.Providence
4 месяца назад
One Piece

Стартап, соломенных шляп. Луффи станет королем IT⁠⁠

Стартап, соломенных шляп. Луффи станет королем IT
One Piece Monkey D Luffy Тони тони чоппер Чоппер Робин Sanji Нами Зорро Брук Френки IT Аниме DevOps Javascript ChatGPT
3
6
deprime
deprime
4 месяца назад
Web-технологии

Переезд с tailwind 3 на tailwind 4⁠⁠

Недавно обновляли корпоративную дизайн систему. Кроме чистки компонентов и их упрощения решили переехать с tailwind 3 на tailwind 4. В качестве сборщика у нас Vite, фреймворк Svelte.

В предыдущей версии компонентов мы не скупясь писали блоки стилей прямо в компонентах, применяя функцию tailwind @apply - это сильно причёсывает код в плане чистоты, как шаблона, так и чистоты стилей.

Стартанули мигрирование, прогнали миграционную утилиту от tailwind, все по православному, но - при запуске apply не работал и tw классы не резолвились. Пошли читать доку, вычислили новые правила про вызов функции @reference в каждом блоке стилей в компоненте. НО блэ, в доке приводят примеры:

  • либо ссылаемся относительным путём к своему конфигу tailwind @reference "../../app.css"

  • либо красиво и лаконично @reference "tailwindcss" - но тогда твой конфиг отваливается, корпоративные токены и вся прочая мишура остаётся за бортом.

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

Добавляем в конфиг фреймворка алиас:


alias: {

'corp-tailwind': './src/corp-tailwind.css'

},

В компонентах в блоке стилей пишем (у нас scss):

<style scoped lang="scss">

@ import "corp-tailwind" reference;

...

</style>

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

Показать полностью
[моё] Программирование Javascript Frontend Текст
1
7
Hozren
5 месяцев назад

1 апреля на ПикабЪУЪ⁠⁠

Сидишь, листаешь посты и замечаешь какую-то хрень на экране, то-ли волос, то-ли трещина. При скроле не пропадает, пальцем не смахивается. А вот когда окно муваешь - плывет)

1 апреля на ПикабЪУЪ 1 апреля, Javascript, Юмор

Смотрим под капотом, а там вот такая пакость висит

1 апреля на ПикабЪУЪ 1 апреля, Javascript, Юмор

Текстом, для тех, кому не вылезло

<img everyone-who-reads-this-is-cool="" onclick="this.style.top='100vh'; localStorage.setItem('1apr_hair', Date.now() + 3600_000)" width="100" height="100" onload="

const ts = localStorage.getItem('1apr_hair');

if ((!ts || Date.now() > parseInt(ts)) &amp;&amp; Math.random() > 0.4) {

localStorage.setItem('1apr_hair', Date.now() + 60_000);

this.style.visibility = '';

}

" src="https://cs.pikabu.ru/images/fun/hair-v2.png" style="position: fixed; opacity: 0.6; right: 78px; z-index: calc(infinity); top: 39%; transition: top 0.9s ease-in-out;">

ЪУЪ @admin, @moderator, с 1 апреля!

Показать полностью 2
1 апреля Javascript Юмор
19
Andrey.Walz
Andrey.Walz
5 месяцев назад
IT-юмор

Срочно! Найден дублированный UUID!⁠⁠

Срочно! Найден дублированный UUID! X (Twitter), Скриншот, Юмор, Javascript, База данных, Программирование

Срочно! Найден дублированный UUID! X (Twitter), Скриншот, Юмор, Javascript, База данных, Программирование

Срочно! Найден дублированный UUID! X (Twitter), Скриншот, Юмор, Javascript, База данных, Программирование

Если сидите на next.js, то вот вам миддлварь, решающее проблему

https://x.com/forgebitz/status/1906705693614256353

Показать полностью 2
X (Twitter) Скриншот Юмор Javascript База данных Программирование
24
Lineage2JS
Lineage2JS
5 месяцев назад

А вы знали, что Lineage 2 нарушает законы физики?⁠⁠

Помните как мы бегали по горам и не придавали значение тому как быстро спускались или поднимались на них?

Как мы знаем в реальной жизни перемещаясь на плоскости горизонтальная скорость у нас постоянная. Как только мы начинаем преодолевать горы и другие неровности то горизонтальная скорость у нас будет меньше. Но не в мире Lineage 2 где горизонтальная скорость всегда постоянная и нее зависит от неровностей. Связанно это с тем чтобы было проще синхронизировать персонажа на сервере и клиенте. Ведь на сервере нет точной модели мира, а лишь примерное очертание называемое geodata. А из-за того, что geodata приблизительно повторяет ландшафт клиента то было бы невозможно синхронизировать персонажа по Z оси. Поэтому синхронизация идет только по X и Y оси.

Видео:

1) Горизонтальная скорость на плоскости постоянная.

2) Как было бы в жизни. Взбираясь на гору горизонтальная скорость падает.

3) Как сделано в игре. Горизонтальная скорость постоянная.

4) Демонстрация из игры. Бежит словно нет никаких гор.

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

Показать полностью 3
[моё] Программирование Разработка Lineage 2 Javascript Nodejs Видео Без звука Короткие видео Длиннопост
8
6
shigemi.games
shigemi.games
5 месяцев назад

Kings Chess. Мои браузерные шахматы с элементами стратегии⁠⁠

Kings Chess. Мои браузерные шахматы с элементами стратегии Стратегия, Игровые обзоры, Статья, Шахматы, Браузерные игры, Javascript, Длиннопост

Доброго времени!

Вашему вниманию браузерные шахматы, с элементами стратегии, самостоятельно созданные на JavaScript, CSS3, PHP. Шахматная логика также была написана с нуля, поскольку существующие решения не подходили для выбранной концепции.

Kings Chess - это классические шахматы с элементами стратегии. У Вас появится возможность сыграть в шахматы привычным набором фигур по необычным правилам. Суть игры осталась прежней: в пошаговом режиме нужно напасть на вражеского короля таким образом, чтобы он не смог укрыться от атаки. Однако сами партии теперь проводятся на локациях нестандартных размеров. На свободу перемещения фигур влияют препятствия в виде элементов окружающего мира (деревья и сооружения). Используя ресурсы, собранные на шахматном поле в процессе игры, можно строить здания, которые позволят в неограниченном количестве приобретать дополнительные шахматные фигуры. Пешки имеют дополнительную ценность, поскольку приносят по одному случайному ресурсу за каждый ход. В игре присутствует возможность сыграть с компаньоном в парном режиме. Удобная система подсказок и траекторий перемещения шахматных фигур позволят сориентироваться в партии даже тем, кто не разбирается в правилах. Регистрация не требуется.

Ссылочка на игру: http://kingschess.shigemi.games/
На проект: http://shigemi.games/

Если Вас заинтересует данная реализация, Вы можете поддержать её на Boosty. Это ускорит выход новых более сложных и красочных игр, которые сейчас находятся в разработке.

Kings Chess. Мои браузерные шахматы с элементами стратегии Стратегия, Игровые обзоры, Статья, Шахматы, Браузерные игры, Javascript, Длиннопост

Редактор выбора зданий для постройки дополнительных шахматных фигур

Kings Chess. Мои браузерные шахматы с элементами стратегии Стратегия, Игровые обзоры, Статья, Шахматы, Браузерные игры, Javascript, Длиннопост

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

Показать полностью 2
[моё] Стратегия Игровые обзоры Статья Шахматы Браузерные игры Javascript Длиннопост
7
8
andrmm
5 месяцев назад
IT - Комедия

Немного странностей в JavaScript⁠⁠

Пост взят отсюда: https://t.me/jsProger

🤯 Немного странностей в JavaScript.

Как думаете, что будет выведено в консоль ❓

Немного странностей в JavaScript Javascript, Странности, IT, Telegram (ссылка)

Если вы подумали, что мы получим два false или два true, то вас ждёт сюрприз. Правильный ответ ⬇️

Немного странностей в JavaScript Javascript, Странности, IT, Telegram (ссылка)

ЧТО? 🙌 КАК ЭТО?

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

018 — недопустимое восьмеричное число (в восьмеричной системе цифры от 0 до 7). А так-как в числе 018 есть восьмёрка, то JS теперь рассматривает его как обычное десятичное, то есть равное 18. Выходит, что '018' == 18 — выражение является истинным.

А вот 017 — допустимое восьмеричное число, поэтому JS представляет его как 8-ричное число 15, потому что 1×8¹ + 7×8⁰ = 15. А строку '017' он рассматривает как десятичное число, в результате чего получается 17. Но 15 не равно 17, поэтому второе выражение неверно.

Заранее прошу извинить: не получается скопировать ссылку на сам пост.

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