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

Герои Войны

Стратегии, Мидкорные, Экшены

Играть

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

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

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

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

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

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

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

RPG Maker MV/MZ - Управление по WASD⁠⁠

Добавить поддержку клавиш W, A, S, D клавиатуры легко в MV и MZ.

Для этого достаточно добавить в проект такой код:

(function () {

var replacedKeyMapper = {

87: 'up',

65: 'left',

83: 'down',

68: 'right',

69: 'pagedown',

};

for (code in replacedKeyMapper) {

Input.keyMapper[code] = replacedKeyMapper[code];

}

})();

Здесь мы также "перекинули" стандартный функционал клавиши W на E.

Вы можете скачать файл тут и добавить его в проект, как плагин.

У каждой клавиши есть числовой код. Представим, что в движке они помечаются маркерами. Например, стрелка вверх помечена маркером 'up'. Если игрок нажимает на эту стрелку, движок видит срабатывание маркера 'up' и обрабатывает это событие.

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

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

При желании, вы можете добавлять свои пары ключ-значение в объект replacedKeyMapper из кода выше.

Вот код из файла движка rmmz_core.js:

Input.keyMapper = {

9: "tab", // tab

13: "ok", // enter

16: "shift", // shift

17: "control", // control

18: "control", // alt

27: "escape", // escape

32: "ok", // space

33: "pageup", // pageup

34: "pagedown", // pagedown

37: "left", // left arrow

38: "up", // up arrow

39: "right", // right arrow

40: "down", // down arrow

45: "escape", // insert

81: "pageup", // Q

87: "pagedown", // W

88: "escape", // X

90: "ok", // Z

96: "escape", // numpad 0

98: "down", // numpad 2

100: "left", // numpad 4

102: "right", // numpad 6

104: "up", // numpad 8

120: "debug" // F9

};

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

Есть аналогичный словарь для геймпада:

Input.gamepadMapper = {

0: "ok", // A

1: "cancel", // B

2: "shift", // X

3: "menu", // Y

4: "pageup", // LB

5: "pagedown", // RB

12: "up", // D-pad up

13: "down", // D-pad down

14: "left", // D-pad left

15: "right" // D-pad right

};

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

Коды клавиш легко находятся в интернете. Можно смотреть их, к примеру, тут. Нужны DEC-коды (то есть десятичные).

Ещё важный совет. Не меняйте код движка, не редактируйте стандартные файлы. Мало того, что это запрещено правообладателем, это также неудобно и небезопасно. Что, если вы ошибётесь или захотите откатить изменения? JavaScript позволяет переопределять всё, что удобно. Поэтому для изменения кода движка используйте плагины.

Пишите ваши вопросы в этом треде, если остались.

Каталог моих бесплатных плагинов для RPG Maker

Показать полностью
[моё] Разработка Gamedev Программирование Javascript RPG Maker Rpg maker mv Плагин Текст Урок Статья Обучение Гайд
2
2
tablepedia
1 месяц назад
Лига программистов
Серия Визуализация данных

Графики самых больших городов в мире (1950-2025)⁠⁠

Уважаемые пикабушники!

Я создал микросайт с графиками населения крупнейших городов в мире (1950-2025).

Показываю ПОШАГОВОЕ использование:

1. Зайти на https://tablepedia.com/cities2025/

Кстати, весь микросайт в архиве ZIP занимает 14 килобайт и его можно скачать по адресу: https://tablepedia.com/cities2025.zip

Если вы немного пролистнёте сайт вниз, вы увидите таблицу, а пониже неё - графики населения Токио, Дели, Шанхая и Сан-Паулу:

Графики самых больших городов в мире (1950-2025) Сайт, IT, Программа, Javascript, Svg, Визуализация, Визуализация данных, Криптовалюта, Валюта, Золото, Население, Токио, Пекин, Дели, Шанхай, Мехико, Каир, Сан-паулу, Мумбаи, Zip файл

Рис. 1. Графики населения Токио, Дели, Шанхая и Сан-Паулу (1950-2025).

2. Вы можете изменить года, вот один из результатов:

Графики самых больших городов в мире (1950-2025) Сайт, IT, Программа, Javascript, Svg, Визуализация, Визуализация данных, Криптовалюта, Валюта, Золото, Население, Токио, Пекин, Дели, Шанхай, Мехико, Каир, Сан-паулу, Мумбаи, Zip файл

Рис. 2. Графики населения городов с изменёнными годами.

3. В нижней части сайта вы видите графики Мехико, Каира, Мумбаи и Пекина:

Графики самых больших городов в мире (1950-2025) Сайт, IT, Программа, Javascript, Svg, Визуализация, Визуализация данных, Криптовалюта, Валюта, Золото, Население, Токио, Пекин, Дели, Шанхай, Мехико, Каир, Сан-паулу, Мумбаи, Zip файл

Рис. 3. Графики населения Мехико, Каира, Мумбаи и Пекина.

Думаю, очевидно, что можно менять не только года, но и города, которые показаны на графике.

Если интересно, можете посмотреть этот сайт на GitHub: https://github.com/yaroslav1982/tablepedia-microsite-cities2025

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

Если есть вопросы, напишите их, пожалуйста, в комментариях.

Показать полностью 3
[моё] Сайт IT Программа Javascript Svg Визуализация Визуализация данных Криптовалюта Валюта Золото Население Токио Пекин Дели Шанхай Мехико Каир Сан-паулу Мумбаи Zip файл
7
6
Olek.Olegovich
Olek.Olegovich
1 месяц назад
Лига Разработчиков Видеоигр
Серия RPG Maker

Новые фичи в моих плагинах для RPG Maker MZ!⁠⁠

Новые фичи в моих плагинах для RPG Maker MZ! RPG Maker, Плагин, Разработка, Программирование, Javascript, Gamedev

Phileas's Input Sub Windows in Message

Phileas's Input Sub Windows in Message - 1.1.0: теперь можно ограничить максимальное кол-во отображаемых опций выбора. Подробнее на форуме.

Phileas`s Audio Manager - 1.1.0: добавлены команды для управления плейлистом. Подробнее на форуме.

Здесь вы можете найти каталог всех моих бесплатных плагинов для RPG Maker по категориям.

Показать полностью 1
[моё] RPG Maker Плагин Разработка Программирование Javascript Gamedev
1
1
Olek.Olegovich
Olek.Olegovich
1 месяц назад
Серия RPG Maker

Разработка на RPG Maker. Приветствие⁠⁠

Привет, я Олег, также известен как Phileas.

Разработка на RPG Maker. Приветствие Gamedev, Разработка, Программирование, RPG Maker, Javascript, RPG, JRPG, Визуальная новелла, Плагин, Видео, Короткие видео, Длиннопост, Без звука

Scottside

На досуге занимаюсь инди-разработкой игр:

  • В Steam опубликовано демо нелинейной визуальной новеллы Scottside, над которой я работал программистом.

  • Остальные опубликованные проекты можно найти тут.

  • Актуальные новости и опросы игроков тут.

  • Поддержать меня можно на Boosty. Также вы можете сделать перевод через СБП по номеру телефона или на карту (данные сообщу в ЛС). Или любым другим удобным вам способом - пишите. Пока не могу включить монетизацию на Пикабу, низкий рейтинг.

1/4

Каталог моих бесплатных плагинов

Мой основной движок - RPG Maker. Для него я разрабатываю плагины. Какие-то для себя, какие-то под заказ, но многие публикую бесплатно для всех на GitHub.

Здесь каталог всех моих бесплатных плагинов по категориям.

Если вам нужен плагин/скрипт для RPG Maker, можете написать мне в Telegram или на почту (olek.olegovich@gmail.com). Если я посчитаю плагин сравнительно простым в реализации и универсальным (т.е. его можно будет вставить в любой проект без модификаций), то я могу опубликовать его бесплатно для всех и попросить вас задонатить комфортную для вас сумму. Если плагин будет сложным, специфичным для вашего проекта или вы сами запросите эксклюзивность, договоримся о заказе.

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

Показать полностью 5 1
[моё] Gamedev Разработка Программирование RPG Maker Javascript RPG JRPG Визуальная новелла Плагин Видео Короткие видео Длиннопост Без звука
4
RafGal
RafGal
1 месяц назад
Лига программистов

Есть простой путь в настоящее программирование, но не в профессиональное⁠⁠

Бывают инди-разработчики у которых нет цели работать в профессиональной индустрии. Им не нужно соответствовать стандартам индустрии.

Язык ЖивоСкрипт это визуальный блочный скриптовый язык программирования который транслируется в JS и PHP. Достаточно знать один язык ЖС чтобы писать код для клиента и сервера.

Язык ЖС разработан специально для детей 12+, но его могут использовать взрослые программисты-любители которым нужен простой инструмент.

[моё] Программирование Javascript PHP Визуальное программирование Текст
4
8
Lineage2JS
Lineage2JS
1 месяц назад
ИТ-проекты пикабушников

Видите разницу? А она есть!⁠⁠

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

Видите разницу? А она есть! Разработка, Программирование, MMORPG, Lineage 2, Javascript, Nodejs, Gamedev

В первом же квесте Fighter's Tutorial (даёт SP и карту мира) столкнулся с любопытным моментом. Охота на внешне одинаковых NPC, но на деле разных!

Речь пойдет только о квесте для людей на острове Talking Island Village.

В чём подвох?

В мире Lineage есть два NPC с одинаковым именем - Bearded Keltir.
Внутри сервера это разные NPC: ID 12082(tuto_keltir) и ID 481(keltir).
По квесту Fighter's Tutorial надо добыть Keltir Fang.

Убивайте Bearded Keltir, пока не получите Keltir Fang x4.

Как различать Bearded Keltir?

У этих NPC есть несколько зон spawn'a. Некоторые зоны пересекаются и в одной зоне могут находиться разные Bearded Keltir.
Так например если вы решите проходить квест возле Talking Island Village то вот на что надо обратить внимание:
* Keltir Fang падает с шансом в 100%. Если не упал, то вы убили не того NPC.
* С нужного Bearded Keltir не падает дроп. Дроп у ID 12082(tuto_keltir) отсутствует.

Вывод

Лучше всего проходить квест возле Cedric's Training Hall так как там одна из зон появления Bearded Keltir они же ID 12082(tuto_keltir).

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

Показать полностью
[моё] Разработка Программирование MMORPG Lineage 2 Javascript Nodejs Gamedev
15
tablepedia
1 месяц назад
Лига программистов
Серия Визуализация данных

Графики курсов криптовалют (2016-2025)⁠⁠

Уважаемые пикабушники!

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

Показываю ПОШАГОВОЕ использование:

1. Зайти на https://tablepedia.com/cryptocurrency2025/

Кстати, весь микросайт в архиве ZIP занимает 14 килобайт и его можно скачать по адресу: https://tablepedia.com/cryptocurrency2025.zip

Если вы немного пролистнёте сайт вниз, вы увидите таблицу, а пониже неё - графики курсов биткоина (BTC) и эфириума (ETH):

Графики курсов криптовалют (2016-2025) Сайт, IT, Программист, Javascript, Svg, Визуализация, Визуализация данных, Github, Криптовалюта, Валюта, Биткоины, Эфириум, Лайткоин, График, Капитализм, Спекуляция, Zip файл, Население, Freeware, Инструкция, Длиннопост

Рис. 1. Графики курсов BTC и ETH (2016-2025).

2. Вы можете изменить года, вот один из результатов:

Графики курсов криптовалют (2016-2025) Сайт, IT, Программист, Javascript, Svg, Визуализация, Визуализация данных, Github, Криптовалюта, Валюта, Биткоины, Эфириум, Лайткоин, График, Капитализм, Спекуляция, Zip файл, Население, Freeware, Инструкция, Длиннопост

Рис. 2. Графики курсов криптовалют с изменёнными годами.

3. В нижней части сайта вы видите графики лайткоина (LTC) и монеро (XMR):

Графики курсов криптовалют (2016-2025) Сайт, IT, Программист, Javascript, Svg, Визуализация, Визуализация данных, Github, Криптовалюта, Валюта, Биткоины, Эфириум, Лайткоин, График, Капитализм, Спекуляция, Zip файл, Население, Freeware, Инструкция, Длиннопост

Рис. 3. Графики LTC и XMR.

Думаю, очевидно, что можно менять не только года, но и криптовалюты, которые показаны на графике.

Если интересно, можете посмотреть этот сайт на GitHub: https://github.com/yaroslav1982/tablepedia-microsite-cryptocurrency2025

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

Если есть вопросы, напишите их, пожалуйста, в комментариях.

Показать полностью 3
[моё] Сайт IT Программист Javascript Svg Визуализация Визуализация данных Github Криптовалюта Валюта Биткоины Эфириум Лайткоин График Капитализм Спекуляция Zip файл Население Freeware Инструкция Длиннопост
1
9
hypo69
hypo69
1 месяц назад
Лига программистов
Серия Шпаргалки

Shadow DOM - DOM внутри DOM⁠⁠

Дисклеймер. На пикабу до сих пор не завезли редактор кода, поэтому картинки. Кому на нравятся картинки - при желании может почитать статью на GitHub


DOM — это программный интерфейс (API) для кода страницы, который представляет страницу как древовидную структуру объектов.

Каждый HTML-элемент (например, <p>, <div>, <img>), каждый атрибут и каждый фрагмент текста является отдельным «узлом» (node) в этом дереве. С JavaScript, мы можем обращаться к этим узлам, чтобы динамически изменять страницу: менять текст, добавлять стили, создавать новые элементы или удалять существующие. По сути, DOM — это «живая» модель документа, с которой взаимодействует код.

Но у этой открытости есть и обратная сторона. Когда мы создаем сложный, многократно используемый компонент (например, кастомный видеоплеер или виджет календаря), его внутренняя структура и стили становятся уязвимыми. Стили CSS с основной страницы могут случайно «протечь» внутрь компонента и сломать его внешний вид. Аналогично, JavaScript-код страницы может непреднамеренно изменить внутренние элементы компонента, нарушив его логику.

Для решения этой проблемы и существует Shadow DOM (теневой DOM).

По своей сути, Shadow DOM — это «DOM внутри DOM». Это скрытое дерево элементов, которое прикрепляется к обычному элементу на странице (называемому «хостом»), но при этом оно изолировано от основного DOM. Оно позволяет разработчику создать герметичную границу вокруг внутренней структуры компонента, защищая его от внешнего мира.

Теневой DOM позволяет прикреплять скрытые DOM-деревья к элементам в обычном DOM-дереве. Это теневое дерево начинается с теневого корня (shadow root), под который можно прикреплять любые элементы так же, как и в обычном DOM.

Shadow DOM - DOM внутри DOM Гайд, Программирование, IT, Frontend, Javascript, HTML, Веб-разработка, Длиннопост, Dom

https://developer.mozilla.org/

Существует несколько терминов, связанных с теневым DOM, которые следует знать:

  • Теневой хост (Shadow host): Обычный узел DOM, к которому прикреплен теневой DOM.

  • Теневое дерево (Shadow tree): DOM-дерево внутри теневого DOM.

  • Теневая граница (Shadow boundary): Место, где заканчивается теневой DOM и начинается обычный DOM.

  • Теневой корень (Shadow root): Корневой узел теневого дерева.

Вы можете воздействовать на узлы в теневом DOM точно так же, как и на обычные узлы. Разница в том, что никакой код внутри теневого DOM не может повлиять на что-либо за его пределами, что обеспечивает надёжную инкапсуляцию.

До того, как теневой DOM стал доступен веб-разработчикам, браузеры уже использовали его для инкапсуляции внутренней структуры стандартных элементов. Например, элемент <video> с элементами управления. Всё, что вы видите в DOM, — это тег <video>, но он содержит ряд кнопок и других элементов управления внутри своего теневого DOM.

Создание теневого DOM

Создавать теневой DOM можно двумя способами: императивно с помощью JavaScript или декларативно прямо в HTML.

Императивно с помощью JavaScript

Этот способ отлично подходит для приложений, рендерящихся на стороне клиента. Мы выбираем элемент-хост и вызываем на нём метод attachShadow().

Shadow DOM - DOM внутри DOM Гайд, Программирование, IT, Frontend, Javascript, HTML, Веб-разработка, Длиннопост, Dom
Shadow DOM - DOM внутри DOM Гайд, Программирование, IT, Frontend, Javascript, HTML, Веб-разработка, Длиннопост, Dom

Результат на странице будет выглядеть так:

Я нахожусь в теневом DOM Я не в теневом DOM

Декларативно с помощью HTML

Для приложений, где важен рендеринг на стороне сервера, можно определить теневой DOM декларативно, используя элемент <template> с атрибутом shadowrootmode.

Shadow DOM - DOM внутри DOM Гайд, Программирование, IT, Frontend, Javascript, HTML, Веб-разработка, Длиннопост, Dom

Когда браузер обработает этот код, он автоматически создаст теневой корень для <div> и поместит в него содержимое тега <template>. Сам тег <template> при этом исчезнет из основного DOM-дерева.

Инкапсуляция: защита от JavaScript и CSS

Главное преимущество Shadow DOM — это изоляция. Давайте посмотрим, как она работает.

Инкапсуляция от JavaScript

Добавим кнопку, которая будет пытаться изменить все элементы <span> на странице.

Shadow DOM - DOM внутри DOM Гайд, Программирование, IT, Frontend, Javascript, HTML, Веб-разработка, Длиннопост, Dom

При нажатии на кнопку текст изменится только у <span>, который находится в основном документе. Элемент внутри теневого DOM останется нетронутым, потому что document.querySelectorAll() не может "заглянуть" за теневую границу.

Доступ к теневому DOM: свойство shadowRoot и работа с вложенностью

Когда мы вызываем host.attachShadow({ mode: "open" }), мы создаём теневой DOM в "открытом" режиме. Это означает, что мы можем получить доступ к его содержимому извне через свойство host.shadowRoot.

Shadow DOM - DOM внутри DOM Гайд, Программирование, IT, Frontend, Javascript, HTML, Веб-разработка, Длиннопост, Dom

Если же указать mode: "closed", свойство host.shadowRoot вернёт null, и доступ к теневому дереву извне будет закрыт. Это не строгий механизм безопасности, а скорее соглашение для разработчиков о том, что внутренности компонента трогать не следует.

Работа с вложенными теневыми деревьями

В сложных компонентных архитектурах один пользовательский элемент может содержать внутри себя другие пользовательские элементы, каждый из которых имеет свой собственный Shadow DOM. Чтобы добраться до элемента в глубоко вложенном теневом дереве, придётся последовательно "проходить" через каждый shadowRoot.

Представим себе такую структуру:

  • Компонент <nmbrs-form> (основная форма).

  • Внутри него находится <div>, а в нём — компонент <nmbrs-button> (кастомная кнопка).

  • Внутри <nmbrs-button> находится настоящая HTML-кнопка <button>.

Чтобы получить доступ к этой кнопке из глобального контекста, путь будет выглядеть так:

Shadow DOM - DOM внутри DOM Гайд, Программирование, IT, Frontend, Javascript, HTML, Веб-разработка, Длиннопост, Dom

SВ виде одной цепочки вызовов это выглядит так:

Shadow DOM - DOM внутри DOM Гайд, Программирование, IT, Frontend, Javascript, HTML, Веб-разработка, Длиннопост, Dom

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

Инкапсуляция от CSS

Стили, определённые на основной странице, не влияют на элементы внутри теневого DOM.

Shadow DOM - DOM внутри DOM Гайд, Программирование, IT, Frontend, Javascript, HTML, Веб-разработка, Длиннопост, Dom

Элемент <span> внутри теневого дерева не получит эти стили. Это решает огромную проблему случайных пересечений и конфликтов CSS.

Применение стилей внутри теневого DOM

Стили, определённые внутри теневого дерева, в свою очередь, не влияют на основную страницу. Есть два основных способа их добавления.

1. Конструируемые таблицы стилей (Constructable Stylesheets)

Этот метод позволяет создавать объект CSSStyleSheet в JavaScript и применять его к одному или нескольким теневым деревьям. Это эффективно, если у вас есть общие стили для множества компонентов.

Shadow DOM - DOM внутри DOM Гайд, Программирование, IT, Frontend, Javascript, HTML, Веб-разработка, Длиннопост, Dom

2. Добавление элемента <style>

Простой и декларативный способ — поместить тег <style> прямо внутрь теневого дерева (часто внутри <template>).

Shadow DOM - DOM внутри DOM Гайд, Программирование, IT, Frontend, Javascript, HTML, Веб-разработка, Длиннопост, Dom

Теневой DOM и пользовательские элементы: идеальное сочетание

Вся мощь теневого DOM раскрывается при создании пользовательских элементов (Custom Elements). Без инкапсуляции они были бы невероятно хрупкими.

Пользовательский элемент — это класс, наследующий HTMLElement. Как правило, сам элемент выступает в роли теневого хоста, а вся его внутренняя структура создаётся внутри теневого дерева.

Вот пример простого компонента <filled-circle>:

Shadow DOM - DOM внутри DOM Гайд, Программирование, IT, Frontend, Javascript, HTML, Веб-разработка, Длиннопост, Dom

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

Shadow DOM - DOM внутри DOM Гайд, Программирование, IT, Frontend, Javascript, HTML, Веб-разработка, Длиннопост, Dom

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

Полезно? Подпишись.
Удачи 🚀

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