Разработка
Evrone
3592

Почему мы выбираем Ruby для наших проектов

В отношении языка Ruby есть ряд предубеждений и мифов. Есть даже устоявшаяся фраза «Ruby мёртв», которую в разговоре об этом языке обязательно скажут те, кто понимает его лишь поверхностно.

В закладки

Технический директор компании Evrone Александр Кириллов, выступая на Meta/сonf в Воронеже, объяснил, почему Ruby является современным и актуальным языком.

Запись доклада Актуальность Ruby в современных проектах

Мифы о Ruby

Некоторые технические особенности языка во время его становления привели к тому, что сформировалось два мифа:

  1. Ruby медленный.
  2. Проекты на Ruby сложно масштабировать.

На заре существования язык действительно имел проблемы с производительностью и уступал PHP и Python. Но последние версии практически исправили этот недостаток, а будущие обновления должны добавить и новые возможности вроде работы с параллельными потоками. Сейчас медленно работающее приложение на Ruby — не столько проблема языка, сколько вопрос правильного построения архитектуры приложения и уровня знаний разработчика.

Масштабируемость и параллельные потоки в  Ruby 

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

Юкихиро Мацумото и Давид Хейнемейер Ханссон были бы удивлены, услышав, что Ruby мертв, а они продолжают над ним работать. Удивятся и сотни наших клиентов, техническая часть бизнеса которых построена на Ruby и успешно выполняет свои задачи.

Александр Кириллов
технический директор Evrone

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

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

Что делает Ruby on Rails классным

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

Модель MVC

Ruby on Rails одним из первых начал использовать схему разделения компонентов приложения Model-View-Controller (MVC), которая значительно ускоряет цикл разработки и позволяет оперативно исправлять ошибки, быстро реализовывать бизнес-требования в проекте и вносить в них изменения.

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

Если в команде случится ротация или придут новые специалисты, единообразие подхода позволит им быстро влиться в проект, а бизнесу — сократить время и снизить стоимость подключения новых разработчиков.

Базы данных

Когда ведется работа с базой данных, например с Postgresql, Active Record (ORM, используемая Ruby on Rails) позволяет абстрагироваться от текущей БД на более высоких уровнях. Это дает возможность писать практически одинаковый код под любую поддерживаемую базу данных.

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

Шаблоны

Ruby on Rails также поддерживает шаблонизаторы для веб-разработки, ускоряющие создание шаблонов для фронтенда. Самостоятельно писать HTML-код без помощи автоматизированных генераторов сложно, долго и дорого, поэтому фреймворк работает со множеством шаблонизаторов:

  • ERB,
  • HAML,
  • SLIM,
  • Liquid.

Деплой и тестирование

Чем больше бизнес-логики в приложении, тем сложнее обновлять его до актуальной версии. В Ruby есть инструменты, дающие возможность провести обновление одной командой, описав на Ruby все стадии развертывания. Система автоматизации сделает все остальное.

Поддержка проектов, написанных на Ruby

Чтобы следить за качеством кода, в экосистеме языка есть инструменты, позволяющие покрыть тестами все области написания кода, начиная от юнит-тестирования и заканчивая интеграционным. С Ruby on Rails можно использовать следующие инструменты:

  • Minitest,
  • Rspec,
  • Capybara,
  • Cucumber.

Развитие Ruby on Rails

Каждый месяц и каждый год для Ruby и фреймворка Rails выходят новые обновления и исправления. Сейчас уже доступна шестая версия Ruby on Rails, в которой представлены:

  • возможность параллельного тестирования;
  • поддержка работы с несколькими базами данных;
  • автоматизация работы с письмами;
  • инструменты для взаимодействия с фронтенд-технологиями;
  • встроенная система организации хранения пользовательских файлов.

Большая часть изменений и улучшений связана с теми требованиями, которые предъявляют к языку разработчики, решая те или иные задачи.

К примеру, для хранения пользовательских данных существует множество инструментов, созданных сообществом. Разработчики Ruby, понимая, что такие инструменты пользуются спросом, реализовали необходимые возможности на уровне языка.

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

Сравнение контрибьюторов фреймворков

Чем больше контрибьюторов, тем выше вероятность, что запрос на улучшение или на исправление ошибки будет реализован быстрее и это не придется делать внутри команды, тратя время разработки проекта.

Сравнение контрибьюторов фреймворков для Ruby

Поэтому, выбрав язык Ruby и фреймворк Ruby on Rails для создания нового проекта, вы получите большое и активное комьюнити, огромную экспертизу, полноценные процессы и возможность быстро скорректировать работу над приложением. Язык, и фреймворк, и Evrone в этом полностью помогут.

История Ruby

История этого языка началась более 20 лет назад, когда он был представлен независимым программистом Юкихиро Мацумото.

История развития языка Ruby

В 2003 году компания 37Signals выпустила систему управления проектов Basecamp. Она стала очень популярной в США и Европе, разработчики начали присматриваться, изучать, на каком стеке технологий она создана. При работе над Basecamp родился фреймворк Rails. В 2004 году 37Signals опубликовала этот фреймворк в открытом доступе.

Благодаря возможностям, которые дает фреймворк, язык начал набирать популярность. В 2006 году Ruby занял первое место в рейтинге языков Tiobe и пробыл на лидирующей позиции 2 года.

Язык начал применяться в крупных проектах. На нем были написаны сервисы Airbnb, GitHub, первая версия Twitter. Потом социальная сеть пошла другой дорогой, но часть инфраструктуры так и осталась на Ruby. Кроме Rails, появились другие фреймворки — Hanami и Sinatra.

Материал опубликован пользователем.
Нажмите кнопку «Написать», чтобы поделиться мнением или рассказать о своём проекте.

Написать
{ "author_name": "Evrone", "author_type": "editor", "tags": [], "comments": 47, "likes": 34, "favorites": 25, "is_advertisement": false, "subsite_label": "dev", "id": 72391, "is_wide": true, "is_ugc": false, "date": "Thu, 20 Jun 2019 17:22:01 +0300", "is_special": false }
0
{ "id": 72391, "author_id": 250259, "diff_limit": 1000, "urls": {"diff":"\/comments\/72391\/get","add":"\/comments\/72391\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/72391"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 235819, "last_count_and_date": null }
47 комментариев
Популярные
По порядку
Написать комментарий...
25

Про руби говорят что он мертв в сравнении с другими языками. Вы просто взяли и описали тулкит и инфраструктуру языка, не ответив на вопрос который сами же и задали: нахрена и кому сдался руби? Чем он лучше питона и пхп? Все перечисленные инструменты есть и в других языках, представлены богаче и поддерживаются значительно бОльшим коммьюнити чем в руби.
От того что Мацумото и ДХХ продолжают над руби работу он популярнее не становится.

Ответить

Комментарий удален

–8

Все, что угодно, лучше пхп.

Ответить
4

Все что угодно. Лучше пхп.

Ответить
0

аргументируйте, но только с позиции выгоды для бизнеса

Ответить
2

Холивар тут начинать не буду и отвечать на этот тред тоже не буду, просто выскажу свою позицию с точки зрения глубокого опыта работы на западном IT рынке и достаточном количеством разных языков, методологий и команд, так как спросили.

Отсутствие строгих типов — это беда для документации. Чем длиннее код (со всякими =>), тем сложнее его поддерживать. Да, мелкие проекты на 1-2 людей проще писать без типов, документации и так, как привыкли (да хоть на 1С). Но проекты, в которых больше 1 программиста работают над одним и тем же кодом, PHP становится адом.

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

Арибедерчи ёпта.

Ответить
0

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

в денежном эквиваленте и реальных кейсов, когда технология А - лучше B приведено не было. 1С нормально зарабатывает, знаю конторы и вы их знаете которые работают больше > 1 человека и не кричат что это язык N - ад, вопрос что большой проект обычно тянет еще тучу сервисов на разных языках.

складывается ощущение что IT из problem solverov превращается в стадо инфоциган, оргазмирующих на технологии и пытающихся впарить их реальному сектору, без какого либо анализа, просто потому что это ох-но, и вероятно в будущем лет через 100 возникнет тех долг.
Когда это делает молодежь, еще понятно, но когда здоровые дядьки и конторы спорят о том какой молоток красивей, вне контекста задач - выглядит инфантильно, по меньше мере.

И вам не хворать..

Ответить
0

Удачи с ассемблером, ведь споры о молотках это "инфантильно".

Ответить
1

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

https://habr.com/ru/company/railsclub/blog/336690/

А тут он разности Ruby в пух и прах.

https://youtu.be/x0JlOxdXA_g

Ответить
8

Знаете мы вот уже 10 лет проводим мероприятие RubyRussia.club (Railsclub), и в этом году планируется под 1000 тысячу участников. Что кстати будет скорее всего рекордом конференции )

Ответить
0

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

Ответить
1

Любой не каждый первый знает, что Руби мертв и на конференцию не пойдет.

Ответить
0

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

Субъективно, но мне кажется перспективней iOs пилить, если смотреть с позиции начинающего разработчика (если я правильно понял аудиторию статьи).

Ответить
3

О стоимости поддержки проектов как раз есть в видео доклада. И она не ужасает.

Ответить
5

Мне кажется, это просто мода - хоронить руби.
Скажи "Руби мертв", и ты в тренде.

Ответить
2

Посмотрите статистику Google Trends, StackOverflow, на гитхабе создания новых репозиториев. Посмотрите статистику поиска на Udemy. Ruby потерял в популярности в 5 раз от пика своей популярности.

Ответить
2

Это мем ))

Ответить
2

К поддержанию и пропаганде образа “Ruby is dead” мы сами с большим удовольствием прилагаем усилия. Ник Сатерер, который немало сделал в Rails, с удовольствием наклеил себе на шею нашу татуировку-переводилку с черепом и надписью “Ruby is dead”. Серия таких татуировок и наклеек была выпущена для конференции RubyRussia.

Ответить
5

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

Ответить
1

Вроде по Rust зарплаты хорошие

Ответить
5

Что мертво, умереть не может

Ответить
0

Это вы Королю Ночи скажите. В лицо

Ответить
3

Скучная и неинформативная статья, непонятно для кого рассчитана. Такая же, как и про Rust. Тема почему вы выбираете Ruby не раскрыта.

Никто не будет спорить, что Руби = Рельсы, а Рельсы = Руби. Но указать такие плюсы как MVC, ORM и систему шаблонизации - все равно, что их не указать. Это не уникальные возможности.

Неужели эту воду пишет технический специалист ? Я не верю.
——
" Базы данных...Это дает возможность писать практически одинаковый код под любую поддерживаемую базу данных..." - конечно, хорошая практика менять продовый RDBMS раз в месяц.

"....а не заниматься написанием огромного количества низкоуровневых SQL-команд...." - ага, это язык древних.
——

Мне как специалисту было бы интересно увидеть сравнения с другими языками и как благодаря руби, например, вы ускорили разработку.

Например, если писал я. Я рассказал бы: почему, например, выбрал Golang, а не C++ или Rust. Создал бы таблицу плюсов и минусов, указал бы какие плюшки от выбора мы получили и с чем столкнулись. Рассказал бы про подводный камни, которые всплывают при больших нагрузках.

Людям интересно читать кейсы, а не пересказ википедии.

Ответить
4

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

Ответить
2

В последние 3-4 месяца заметил нарастающий хайп вокруг руби. Полагаю, что связано с миграцией разработчиков в более сладкие места/области. Отсюда и повышенное внимание к руби и сотни вакансий, - что на moikrug, что на западе. Смотрел вакансии по удаленке.
Кстати о птичках: генераторы в рельсах действительно удобны:)

Ответить
4

Отголоски хайпа шестилетней давности: у сделанных тогда проектов подходит к концу жизненный цикл, вот и ищут кто будет разбирать авгиевы удовольствия.

Ответить
1

Зачастую, с экономической точки зрения проще отрефакторить то, что уже есть, чем переделывать всё с нуля. И мы (Evrone) готовы влезть и в такое и решить головняк клиентов ;)

Ответить
1

Для кого писали этот текст?

Ответить
4

Для настоящих самураев ))

Ответить
1

Поставили вашу статью в подсайт Разработка.

Ответить
0

Ещё когда руби был на пике популярности, было понятно, что это просто хипстерская фигня. Такая же как монго (хотя монго все же получше будет).
Делать медленный куцый полуклон питона - изначально фэйл.
Если бы не мощный пиар РоР со стороны 37 сигналов, о руби бы знали только его автор и его собака

Ответить
3

Руби был одновременно и хипстерским языком, и драйвером веб-разработки, который остановил гегемонию PHP и показал широкому кругу разработчиков, что писать под веб можно на языках общего назначения и даже без страданий. Благодаря Ruby стали широко использоваться пакеты и репозитории, а веб-разработчики задумались о написании тестов. Так что про фигню – явный перебор. На мой взгляд, Руби – один из наиболее сбалансированных и выразительных языков из тех, что я пробовал. Просто очевидно, что всех победит веб-стек, поэтому вклад во все остальное – сомнительная трата времени, но не похоже, что вы об этом.

Ответить
0

Django появился в 2005 году.
РоР появился в.... 2005 году!
Не надо плз выставлять все так как будто РоР пришёл этакий на белом коне и всех спас. В нескольких известных мне конторах писали на джанге уже давным давно и просто поулыбались когда РоР вылез на пик популярности и такой "вот до меня у вас ничего не было, а теперь есть всё".
Лучше бы человеко-часы, потраченные на руби, потратили на тот же питон или с++.
По сути люди вбухали годы своей жизни в никуда

Ответить
1

Вбухал годы своей жизни на руби — полет нормальный

Ответить
0

Что Питон, что C++ – языки с ужасной инфраструктурой. И RoR обошел Django именно по этой причине, и потому что он был построен на Ruby, который сделан для людей. Помимо этого C++ в тот момент стагнировал и вкладывать в него время было очень рисково. Да, до возникновения RoR существовали все инструменты и концепции, но Ruby позволил сделать все это быстро, дешево и с использованием последних наработок и минимумом легаси-кода.

Все что подвело Ruby – это низкая скорость и высокие требования к ресурсам. И как только остальные языки обзавелись соответствующей инфраструктурой, конкурировать пришлось вновь, но тут у Ruby не оказалось козырей. А Python/Django на сервере так и не смог вытеснить Ruby за все эти годы.

Ответить
1

У вас опять много субъективных утверждений и ни одного факта. Кроме низкой скорости Руби :)

Ответить
0

Для начала вы приведите факты вместо подмены логики и эмоциональных высказываний. Вы ведь не считаете тезисы подобные этому: "В нескольких известных мне конторах писали на джанге уже давным давно" фактами?

Ответить
0

Конечно считаю, потому что знаю эти компании и этих людей лично. Для меня это факт. Если для вас нет (и я могу это понять), то это в общем-то не мои проблемы, а ваши :) Так же как и умирающий Руби

Ответить

Комментарий удален

0

Какая ужасная статья

имел проблемы с производительностью и уступал PHP и Python. Но последние версии практически исправили этот недостаток

И все еще уступает, PHP значительно, а Python немного
https://benchmarksgame-team.pages.debian.net/benchmarksgame/which-programs-are-fastest.html
Если все так радужно - почему часто ruby дополняют elixir или go?

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

Ну это можно сказать практически про любой язык, тем более с подобной областью применения, в основном io-bound

Основной плюс ruby(и рельс, конечно) - это множество подходов и инструментов, созданных в других языках под влиянием и по примеру ruby. При этом сам ruby остается языком одного фреймворка(рельс) и одного предназначения - тех самых MVC.

Ответить
0

Вы уверены, что стоит продолжать поддерживать реноме Evrone как компании, которая пишет только на Рубях, в то время как вы стараетесь привлекать питонистов, спонсируя Moscow Pythin Conf и Pycon Russia? :)

Ответить
1

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

Ответить
0

кек, спасибо, Evgeny Boyko! Возможно, Вы сэкономили мне кучу времени!
промахнулся я...

Ответить
1

Почему считаете, что промахнулись?

Ответить
0

Имел в виду, что промахнулся комментарием (выше).

Ответить
0

Помянем...
Ну какой Ruby? Давно мёртвый язык, к сожалению. Будущего у него нет.
Хотя сам язык хороший вроде бы.

Ответить
0

Смешно

Ответить
0

В общем, как обычно — малочисленность сторонников компенсируется их пассионарностью.

Ответить
–2

Используете ли вы Basic и почему?

Ответить
{ "page_type": "article" }

Прямой эфир

[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fizc" } } }, { "id": 4, "label": "Article Branding", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "cfovx", "p2": "glug" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjog" } } }, { "id": 10, "disable": true, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "disable": true, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "bscsh", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-223676-0", "render_to": "inpage_VI-223676-0-1104503429", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=bugf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Баннер в ленте на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudx", "p2": "ftjf" } } }, { "id": 16, "label": "Кнопка в шапке мобайл", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byzqf", "p2": "ftwx" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvc" } } }, { "id": 19, "disable": true, "label": "Тизер на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "p1": "cbltd", "p2": "gazs" } } } ] { "page_type": "default" }