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

Убеги от Бабы Яги

Аркады, Мидкорные, 3D

Играть

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

  • Rahlkan Rahlkan 1 пост
  • Tannhauser9 Tannhauser9 4 поста
  • alex.carrier alex.carrier 5 постов
Посмотреть весь топ

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

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

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

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

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

Архитектура управления сущностями на сервере⁠⁠

Архитектура управления сущностями на сервере Программирование, Разработка, Lineage 2, Javascript, Nodejs

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

В игровом мире есть разные типы сущностей: NPC, игроки (Player), питомцы (Pet) и другие. Каждая из них имеет свои состояния (движение, атака, бездействие) и требует управления.

Основные сущности и их поведение
• NPC – управляет собой (перемещение, атака, idle).
• Player – управляется игроком (те же состояния: ходьба, атака и т. д.).
• Pet – похож на NPC, но принадлежит игроку.

Менеджеры и их задачи
1. NpcManager – создаёт NPC, реагирует в случае смерти NPC.
2. PlayersManager – отвечает за вход игроков в мир.
3. PetsManager – управляет питомцами (аналогично NPC, но с привязкой к игроку).
4. EntitiesManager – главный координатор:
o Управляет NpcManager и PlayersManager.
o Обрабатывает взаимодействия (например, если игрок подошёл к NPC, оба получают информацию друг о друге).
5. VisibilityManager – отвечает за видимость объектов:
o Определяет, кто кого видит.
o Периодически обновляет списки видимости для оптимизации.
6. MovingManager – обновляет позиции всех подвижных объектов в мире.

Зачем это нужно?
Такая система позволяет:
• Эффективно управлять сотнями сущностей.
• Оптимизировать обновление состояний (движение, видимость, атака).
• Гибко добавлять новые типы объектов (монстры, питомцы, NPC-торговцы).

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

Показать полностью
[моё] Программирование Разработка Lineage 2 Javascript Nodejs
0
2
WHM.Crew
WHM.Crew
3 месяца назад

Как мы меняем индустрию: цены, бесплатный хостинг и комьюнити⁠⁠

Смотри, индустрия хостинга давно сгнила изнутри. Тут всё построено не на сервисе, а на выжимании: продай домен, дожми на апгрейд, подними цену через год.
Мы решили, что пора это хоронить. Поэтому сделали WebHostMost. Не чтобы “откусить долю рынка”, а чтобы не блевать каждый раз, когда ищешь нормальный веб хостинг.

Мы не дешевле всех. Мы честнее всех

Наша цена - это не “3$ в первый месяц, 9$ потом, и 17$ с третьего, если ты не заметил”.
У нас цена, которую ты видишь - остаётся навсегда, даже если купил со скидкой.
Фикс. Всегда. Без писем с сюрпризами.

Сайт грузится за полсекунды - это норма, а не тюнинг

  • LiteSpeed Enterprise (а не бесплатный OpenLiteSpeed)

  • Redis, HTTP/3, Brotli, Keep-Alive, APC Cache

  • NVMe-диски

  • Процессоры Ryzen EPYC

  • Инфраструктура, где реально есть защита от DDoS, Imunify360 и мониторинг 24/7

Пока другие строят “скорость” через прокси и заклинания, у нас она встроена в основу.

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

Да, у нас есть реальный бесплатный тариф.
- Без баннеров.
- Без вымогательства “перейдите на PRO, чтобы не лагало”.
- С LiteSpeed, защитой, A+ заголовками и даже поддержкой.

Бесплатный хостинг - не значит ущербный. Это вход в нормальную экосистему, не маркетинговый мусор.

А теперь то, что конкуренты продают отдельно - у нас просто включено

  • A+ по Security Headers - проверено через securityheaders.com (На секундочку, НИ ОДИН хостинг во всем мире не предоставляет такую защиту сразу "из коробки". А у нас это просто есть. Для всех, даже на бесплатном тарифе).

  • Поддержка всех стеков: WordPress, Node.js, Python, PHP, Laravel, Symfony, PostgreSQL, MongoDB, MariaDB и даже Perl

  • Настоящая админка - DirectAdmin с кастомом. Никакого cPanel с интерфейсом 2007 года

  • Встроенная почта, Cron, SSH, Web терминал, email-алиасы

  • Бесплатный SSL, домен, CMS-установщик, мгновенная активация

  • Прозрачный контроль над DNS, файлы, базы, FTP - всё через 1 панель

Мы не просто хостим. Мы строим своё комьюнити

Вот где мы реально выбиваемся из шаблона:

  • forum.webhostmost.com - который пока что просто есть =D

  • docs.webhostmost.com - не “чекни FAQ”, а пошаговые инструкции, гайды, примеры

  • blog.webhostmost.com - статьи, сравнения, боль и правда про хостинг

  • Telegram-чат - где отвечают не “менеджеры по клиентскому счастью”, а девопсы, саппорты, дизайнер и даже директор

И да, индустрия нас пока что ненавидит. Потому что:

  • Мы не делаем апсейл на функции, которые должны быть базой

  • Мы не ограничиваем пользователей, как shared-хостинги образца 2014

  • Мы не прячемся за чат-ботами, а реально сидим в комментах

Кстати, вот вам немного сравнений с GTMetrix и SecurityHeaders рандомного UK сайта, который хостится на любом другом хостинге (в этом примере на SiteGround) и на нашем:

SiteGround:

Как мы меняем индустрию: цены, бесплатный хостинг и комьюнити Хостинг, Сайт, Технологии, IT, Сервер, Интернет, Стартап, Продукты, Nvme, Python, Nodejs, Wordpress, Длиннопост

SiteGround SecurityHeaders be like

Как мы меняем индустрию: цены, бесплатный хостинг и комьюнити Хостинг, Сайт, Технологии, IT, Сервер, Интернет, Стартап, Продукты, Nvme, Python, Nodejs, Wordpress, Длиннопост

SiteGround GTMetrix be like

Как мы меняем индустрию: цены, бесплатный хостинг и комьюнити Хостинг, Сайт, Технологии, IT, Сервер, Интернет, Стартап, Продукты, Nvme, Python, Nodejs, Wordpress, Длиннопост

WebHostMost:

Как мы меняем индустрию: цены, бесплатный хостинг и комьюнити Хостинг, Сайт, Технологии, IT, Сервер, Интернет, Стартап, Продукты, Nvme, Python, Nodejs, Wordpress, Длиннопост

WebHostMost SecurityHeaders be like

Как мы меняем индустрию: цены, бесплатный хостинг и комьюнити Хостинг, Сайт, Технологии, IT, Сервер, Интернет, Стартап, Продукты, Nvme, Python, Nodejs, Wordpress, Длиннопост

WebHostMost GTMetrix be like

Как мы меняем индустрию: цены, бесплатный хостинг и комьюнити Хостинг, Сайт, Технологии, IT, Сервер, Интернет, Стартап, Продукты, Nvme, Python, Nodejs, Wordpress, Длиннопост

И да, нас можно пнуть, задать неудобный вопрос и даже “о ужас” - поспорить с нами.
Но мы ответим. Мы рядом. Мы - WHM Crew.

Показать полностью 6
[моё] Хостинг Сайт Технологии IT Сервер Интернет Стартап Продукты Nvme Python Nodejs Wordpress Длиннопост
8
0
lineage2js
lineage2js
3 месяца назад

А вы знали, что 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
7
lineage2js
lineage2js
4 месяца назад
ИТ-проекты пикабушников

Чистомэн бы не одобрил⁠⁠

Тестирую синхронизацию объектов на перемещение и атаку между NPC и игроком и немного намусорил. Дроп, который падает, показывает текущее местоположение объекта на стороне сервера. Каждый n-ный тик происходит синхронизация.

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

Показать полностью
[моё] Программирование Разработка Lineage 2 Javascript Nodejs Мусор Видео Короткие видео
1
8
lineage2js
lineage2js
5 месяцев назад
ИТ-проекты пикабушников

Как я синхронизировал скорость персонажа на сервере в Lineage 2 на Node.js⁠⁠

Как я синхронизировал скорость персонажа на сервере в Lineage 2 на Node.js Программирование, Разработка, Lineage 2, Javascript, Nodejs, Гифка, Длиннопост

Привет.

Я разрабатываю эмулятор сервера для Lineage 2 Chronicle 1: Harbingers of war на Node.js.

Столкнулся с проблемой синхронизации скорости персонажа на сервере с клиентом. Когда в игре вы нажимаете мышкой в то место, куда хотите перейти то происходит плавный переход с анимацией движения. На сервере в этот момент тоже происходит движение по таймеру, но не такое плавное.

Как я синхронизировал скорость персонажа на сервере в Lineage 2 на Node.js Программирование, Разработка, Lineage 2, Javascript, Nodejs, Гифка, Длиннопост
Как я синхронизировал скорость персонажа на сервере в Lineage 2 на Node.js Программирование, Разработка, Lineage 2, Javascript, Nodejs, Гифка, Длиннопост

C(client) – двигается плавно из одной точки в другую. S(server) – делает прирост координат по таймеру.

Для примера я взял сборку написанную на java l2j-lisvus Сборок много. Но все они являются fork’ами проекта l2jserver https://l2jserver.com/И многое наследуется. В том числе и передвижение персонажа.

В l2j-lisvus, как и во всех сборках l2jserver перемещение персонажа на сервере идет при помощи таймера с приростом одинаковых значений.

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

Как я синхронизировал скорость персонажа на сервере в Lineage 2 на Node.js Программирование, Разработка, Lineage 2, Javascript, Nodejs, Гифка, Длиннопост

На коротких расстояниях проблема незаметна. Нога наступает точно в монету.

Как я синхронизировал скорость персонажа на сервере в Lineage 2 на Node.js Программирование, Разработка, Lineage 2, Javascript, Nodejs, Гифка, Длиннопост

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

Как я синхронизировал скорость персонажа на сервере в Lineage 2 на Node.js Программирование, Разработка, Lineage 2, Javascript, Nodejs, Гифка, Длиннопост

А если выкрутить скорость на максимум (900) то проблема расхождения очевидна. Это связанно с тем, что помимо скорости бега есть скорость ходьбы.

Как работает передвижение персонажа на сервере.

За основу взяты базовые характеристики персонажа. Скорость бега 126.

Как я синхронизировал скорость персонажа на сервере в Lineage 2 на Node.js Программирование, Разработка, Lineage 2, Javascript, Nodejs, Гифка, Длиннопост

126 — это количество внутренних unit’ов за секунду.

На данной схеме идет прирост координат персонажа каждые 1000мс на 126 unit’ов. Исходя из схемы выше пример кода для действий персонажем после достижения пункта назначения:

// Прироста координат нет. Просто считаем когда персонаж дойдет до конечных координат.
const distance = 1500;
const playerSpeed = 126;
const ticks = distance / playerSpeed; // 11.90
const time = ticks * 1000; // 11900mc

setTimeout(() => {
// действие персонажа после бега
}, time);

Как я синхронизировал скорость персонажа на сервере в Lineage 2 на Node.js Программирование, Разработка, Lineage 2, Javascript, Nodejs, Гифка, Длиннопост

На коротких расстояниях.

Как я синхронизировал скорость персонажа на сервере в Lineage 2 на Node.js Программирование, Разработка, Lineage 2, Javascript, Nodejs, Гифка, Длиннопост

На длинных расстояниях.

Как я синхронизировал скорость персонажа на сервере в Lineage 2 на Node.js Программирование, Разработка, Lineage 2, Javascript, Nodejs, Гифка, Длиннопост

Расхождения на коротких расстояниях.

Как я синхронизировал скорость персонажа на сервере в Lineage 2 на Node.js Программирование, Разработка, Lineage 2, Javascript, Nodejs, Гифка, Длиннопост

Расхождения на длинных расстояниях.

Зеленой зоной показана точка куда должна ступить нога персонажа если бы не было расхождений.

Рост скорости при развитии персонажа.

126 — это базовая скорость. И по мере развития персонажа будет расти и скорость передвижения. А значит расхождение будет больше. Но перед тем, как создать формулу надо подтвердить теорию, что скорость ходьбы влияет на расхождение.

Данные о характеристиках персонажа передаются от сервера к клиенту.

Пакет UserInfo.js 83 строчка.

writeD(player.runSpeed);
writeD(player.walkSpeed);

Базовые значения:

runSpeed: 126

walkSpeed: 88

Выставляю значения walkSpeed: 126. Если скорость ходьбы будет равна скорости бега, то расхождения должны пропасть.

Как я синхронизировал скорость персонажа на сервере в Lineage 2 на Node.js Программирование, Разработка, Lineage 2, Javascript, Nodejs, Гифка, Длиннопост
Как я синхронизировал скорость персонажа на сервере в Lineage 2 на Node.js Программирование, Разработка, Lineage 2, Javascript, Nodejs, Гифка, Длиннопост

Нога персонажа достигает правильной конечной точки.

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

Сколько же персонаж успевает пройти перед тем, как начинает бежать?

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

runSpeed: 10

walkSpeed: 600

Как я синхронизировал скорость персонажа на сервере в Lineage 2 на Node.js Программирование, Разработка, Lineage 2, Javascript, Nodejs, Гифка, Длиннопост

Ходьба быстрее бега.

При скорости шага в 600 персонаж успевает пройти 250, прежде чем начинает бежать.

600 / 250 = 2.4

700 / 291 = 2.4

800 / 333 = 2.4

Из этого вывод, что персонаж перед тем, как начать бежать успевает пройти расстояние в 2.4 раза меньше, чем его скорость ходьбы.

Значит при скорости ходьбы 88 персонаж пройдет 36 unit’ов.

88 / 2.4 = 36

Как я синхронизировал скорость персонажа на сервере в Lineage 2 на Node.js Программирование, Разработка, Lineage 2, Javascript, Nodejs, Гифка, Длиннопост

Первое деление — это начало движения (ходьба) а следующие деления — это бег.

Решение

Формула для расчета времени:

сколько_прошли_на_старте = скорость_ходьбы / 2.4

(((дистанция_между_нпц_и_игроком - сколько_прошли_на_старте) / скорость_бега) * 1000мс) + время_которое_прошли

Для примера дистанция 1500.

Из них мы 36 прошли.

1500 - 36 = 1464 расстояние для бега.

Скорость бега 126 в секунду.

1464 / 126 = 11.61 (количество отрезков, которое мы пройдем за секунду).

11.61 * 1000 = 11610мс бега.

к 11610 надо прибавить время ходьбы

Скорость ходьбы 88 в секунду.

1000 / 88 = 11.36мс за 1 unit

36 unit * 11.36мс = 408мс

11610 + 408 = 12018мс

12018мс является точным временем от начала старта и до конца.

Сравниваем со старым временем 11900мс. Разница в 118мс.

setTimeout(() => {
player.attack(npc);
}, 12018);

Как я синхронизировал скорость персонажа на сервере в Lineage 2 на Node.js Программирование, Разработка, Lineage 2, Javascript, Nodejs, Гифка, Длиннопост

Скорость бега 126.

Как я синхронизировал скорость персонажа на сервере в Lineage 2 на Node.js Программирование, Разработка, Lineage 2, Javascript, Nodejs, Гифка, Длиннопост

Скорость бега 900.

Как я синхронизировал скорость персонажа на сервере в Lineage 2 на Node.js Программирование, Разработка, Lineage 2, Javascript, Nodejs, Гифка, Длиннопост

Положение ноги при скорости 126.

Как я синхронизировал скорость персонажа на сервере в Lineage 2 на Node.js Программирование, Разработка, Lineage 2, Javascript, Nodejs, Гифка, Длиннопост

Положение ноги при скорости 900.

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

Ссылка на проект: https://github.com/lineage2js

Ссылка на блог: https://t.me/lineage2js

Показать полностью 19
[моё] Программирование Разработка Lineage 2 Javascript Nodejs Гифка Длиннопост
6
12
lineage2js
lineage2js
5 месяцев назад
ИТ-проекты пикабушников

Все оружие в Lineage 2 C1 за 1 минуту⁠⁠

Привет.

Занимаюсь разработкой сервера для Lineage 2 C1 на JavaScript(Node.js). Копался в клиенте игры и решил сделать перебор всего оружия для теста.

Ссылка на проект: https://github.com/lineage2js

Ссылка на блог: https://t.me/lineage2js

Показать полностью
[моё] Программирование Разработка Lineage 2 Javascript Nodejs Видео Вертикальное видео Короткие видео Игры
16
1
cododelia
cododelia
8 месяцев назад
Лига программистов

ЧЕТЫРЕ РАЗА! — ПЕРЕПИСЫВАЛ... проект! (Supabase, Strapi, AppWrite, Directus, FilamentPHP)⁠⁠

ЧЕТЫРЕ РАЗА! — ПЕРЕПИСЫВАЛ... проект! (Supabase, Strapi, AppWrite, Directus, FilamentPHP) Программирование, Javascript, Backend, Cms, Mysql, Postgresql, IT, Фриланс, Длиннопост, PHP, Laravel, Nodejs, Typescript, Личный опыт, React

AppWrite, SupaBase, Directus, Strapi - не понравились

AppWrite

Есть всё, кроме массового импорта. Мощнейшая вещь.

Но настройка его сложна для новичка, и жрет о 2-4гб оперативки на сервере.

SupaBase

Крутая штука, не допёр как сделать авторизацию 🤣

И тоже с настройкой были траблы.

Плюс мне не нравится HTTP Basic Авторизация по захардкоженным credentials в конфиге прокси сервера.

За то импорт и экспорт нормальный есть

Directus

Очень крутая штука, особенно его Flows.

Стал сильно продуманнее за прошедшие полгода с моей встречи с ним.

Но все так же документация меня вымораживает. Много не раскрытых тем, и скрытых, не упомянутых ограничений.

Например условная нода логики в тех же Flow - не поддерживает тупую проверку входных данных на их наличие... Не уверен что мне когда-либо понравится это. И так же во flows много других ограничений, хотя задумка улетная.

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

Ограничения так же можно обойти, сделав простое расширение, я так пол логики в прошлом проекте сделал, но теряется весь шарм легкости и наглядности. 🥲

Думаю ребята в нужном направлении двигаются, и их время просто ещё не настало, держу звезду на гитзабе за них.

Strapi

HeadlessCMS, да. Крутая, да. Популярная? А вот хз-хз.

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

НО КАК? Как может не быть у такой популярной CMS функционала для импорта/экспорта, хотя бы банального!?

Он справделивости ради есть в официальном маркете расширений, но... На прошлую версию 😖 Не без обратной совместимости 😩

Ну я его тоже оставил откисать.

FilamentPHP

Тяжелая артилерия из TALL Stack компонентов и не то что целой системы, а уже целой ЭКОсистемы для любого рода панелей, да еще и на базе Laravel 😤

Ну это козырь был.

Я пытался, честно, вот даже описал что меня останавило, и на каждый из вариантов я потратил минимум 4 часа времени.

Думал ребята допили свои проекты, обещающие супер быстрый старт, но везде какие-то проблемы...

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

Меня просто удивляет продуманность этого Filament. Баги есть, не без них, конечно. Как оказалось без ошибок ни то, что люди, роботы не справятся 🙃 (Отсылка к нейросетям)

Тут я за пару дней уложился извернуться и не сорвать сроки, а сделано:

  • Админка

  • Бизнес логика

  • Token Based Авторизация по API
    (пришлось потратить полдня, чтобы разобраться в этой теме, так как я её намеренно игнорировал последние 3 года)

  • API c аутентификацией по токену

  • Расширение для хрома на WXT + React (TanStack Router, Query, Store)

  • Для расширения хромовского - я вообще только с WXT работал и голым React, чисто для верстки.

К сожалению - опять не пригодился Background скрипт, так что всё ещё познать вполне не удастся разработку расширений...

Но с TanStack я не работал. Как-то раз для крипто проекта пытался его настроить и за целый день - так и не вышло. Сейчас же скажу - это мастхэв! Очень крутая штука!

Ну и отказался от Tailwind и SCSS в пользу CSS Modules в паре с clsx. И я не сказал бы, что стили писать долго. В моем случае я заказы беру вообще без дизайна и предпочтений, так что 50-80% от них пишет нейросеть, а я просто не претендую на произведение искусства 😆

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

Показать полностью
[моё] Программирование Javascript Backend Cms Mysql Postgresql IT Фриланс Длиннопост PHP Laravel Nodejs Typescript Личный опыт React
3
Партнёрский материал Реклама
specials
specials

Только каждый третий пикабушник доходит до конца⁠⁠

А сможете ли вы уложить теплый пол, как супермонтажник?

Проверить

Ремонт Теплый пол Текст
9
bruzgoff
bruzgoff
8 месяцев назад

Ответ на пост «Курсы по разработке на Node JS»⁠⁠1

Я один не понимаю нахера в принципе нужны платные курсы?

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

И вот вот этот спрос стали заполнять ПЛАТНЫМИ курсами.

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