Не так давно в нашем блоге рассказывалось об освоении тестирования через REST API. Я же хочу поделиться опытом тестирования SOAP, меня зовут Юлия Багрий и я расскажу про «старшего брата» REST.
Не так давно в нашем блоге рассказывалось об освоении тестирования через REST API. Я же хочу поделиться опытом тестирования SOAP, меня зовут Юлия Багрий и я расскажу про «старшего брата» REST.
Laravel – один из наиболее популярных фреймворков для разработки на языке PHP. Если вы только начинаете свой путь в Laravel и хотите освоить этот мощный инструмент, то курс LaraКурс на YouTube может стать отличным помощником для вас. Курс разработан специально для разработчиков, которые не знакомы с Laravel и включает в…
Только по нашему промокоду — PARTNER — вы получите скидку 45% (вместо стандартной 40%) на курс Python-разработчик за 3 месяца в SkillFactory! Для этого переходите на сайт SkillFactory по ссылке: https://skillfactory.ru/python-intensive
На курс сейчас действует скидка 45% + вы можете получить дополнительную скидку 7% по промокоду AdvcakeSkypro_2023. Записаться на курс с гарантией трудоустройства и рассрочкой без процентов: sky.pro/courses/programming/python-web-course
Начало обучения: 22 февраля. Записаться на курс со скидкой по промокоду PARTNER: skillfactory.ru/python-intensive
\n","lang":""}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Более подробно про XML можно узнать на w3schools или codenet (по-русски). Обязательно обратите внимание на описание namespaces (метод разрешения конфликтов при описании элементов в XML) – в SOAP их использование необходимо.
"}},{"type":"header","cover":false,"hidden":false,"anchor":"","data":{"style":"h3","text":"XSD"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
При работе всегда удобно иметь стандартизированное описание возможных XML-документов и проверять их на корректность заполнения. Для этого существует XML Schema Definition (или сокращенно XSD). Две главные фичи XSD для тестировщика – это описание типов данных и наложение ограничений на возможные значения. Например, элемент из предыдущего примера можно сделать необязательным для заполнения и ограничить его размер 255 символами с помощью XSD:
"}},{"type":"code","cover":false,"hidden":false,"anchor":"","data":{"text":"...\n
XSD – это сила и мощь. Чем подробнее описан XSD, тем меньше головной боли доставит вам тестирование сервиса.
","subline1":""}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
С помощью выстроенной схемы сервис сам сможет валидировать полученные данные и возвращать пользователю ошибку. Таким образом, у вас отпадает необходимость тестировать «любимые» классы эквивалентности для форматов заполнения полей (конечно, при условии подробного и корректного описания XSD, а также реализации проверки запроса на соответствие схеме на сервере). Следовательно, первым делом при тестировании SOAP вы должны проверить документацию – XSD. Довольно часто встречаются ошибки в XSD в виде некорректно прописанных ограничений или случайно закравшихся кириллических символов. Подробнее прочитать про XSD можно опять же на w3schools и codenet (по-русски).
"}},{"type":"header","cover":false,"hidden":false,"anchor":"","data":{"style":"h3","text":"WSDL"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Web Services Description Language (WSDL) – это язык на основе XML, который используется для описания веб-сервисов. В WSDL-документе содержится информация о местонахождении сервиса и доступных методах (операциях); для каждого метода определяются параметры отправляемого и получаемого сообщения. Обратите внимание на то, что XSD может быть «встроен» внутрь WSDL-документа (например, у Yandex Speller API).
"}},{"type":"quote","cover":false,"hidden":false,"anchor":"","data":{"text":"
WSDL-документ – это «капелька магии» в мире SOAP. Его можно сгенерировать из классов для сервера, а уже из него можно создать классы для клиента. Главное – не забывать проверять адекватность и доступность WSDL-документа для пользователей.
","subline1":""}},{"type":"header","cover":false,"hidden":false,"anchor":"","data":{"style":"h3","text":"Протокол SOAP"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
У «героя» нашей статьи есть две основные версии протокола: 1.1 и 1.2. Для начинающего тестировщика различия между этими версиями не так принципиальны. Важно лишь знать, какую версию использует ваш сервис (в некоторых случаях применяются сразу обе версии, и тогда объем тестирования возрастает). SOAP задает формат сообщений, которыми обмениваются клиент и сервер, в нем же описываются подробности обработки приложениями конкретных фрагментов сообщений. Например, определенные элементы в заголовке позволяют создавать приложения, в которых сообщения сначала проходят через несколько промежуточных «станций», а только потом достигают конечного получателя.
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Пример запроса checkText через Yandex Speller API:
"}},{"type":"code","cover":false,"hidden":false,"anchor":"","data":{"text":"
И полученный ответ:
"}},{"type":"code","cover":false,"hidden":false,"anchor":"","data":{"text":"ошибка\n
Прочитать о формате SOAP сообщений можно на w3schools.
"}},{"type":"header","cover":false,"hidden":false,"anchor":"","data":{"style":"h2","text":"Расширения SOAP"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
В работе вам также могут встретиться различные «расширения» SOAP – стандарты типа WS-*. Одним из самых распространенных является WS-Security позволяющий работать с шифрованием и электронными подписями. Нередко вместе с ним применяется WS-Policy, с помощью которого можно управлять правами на использование вашего сервиса.
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Пример использования WS-Security:
"}},{"type":"code","cover":false,"hidden":false,"anchor":"","data":{"text":"
Все эти расширения – достаточно сложные конструкции, используемые далеко не в каждом SOAP-сервисе; их подробное изучение на начальном этапе освоения тестирования SOAP вряд ли будет актуально.
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
"}},{"type":"header","cover":false,"hidden":false,"anchor":"","data":{"style":"h2","text":"Инструменты"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Как вы уже поняли, SOAP – дело серьезное, для работы с ним нужно знать теорию и многочисленные стандарты. На практике такая сложность привела бы к весьма ощутимым трудозатратам (например, нужно было бы каждый раз смотреть схему в блокнотике и слать запросы curl-ом). Поэтому были созданы инструменты, облегчающие работу с SOAP.
"}},{"type":"header","cover":false,"hidden":false,"anchor":"","data":{"style":"h3","text":"Редакторы XML / XSD"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Хороший тестировщик начинает тестирование еще на стадии написания документации, поэтому для проверки схем удобно использовать специальные редакторы. Два самых известных – Oxygen (кроссплатформенный) и Altova (только для Windows); оба они являются платными. Это очень мощные программы, которыми активно пользуются аналитики при описании сервисов.
"}},{"type":"quote","cover":false,"hidden":false,"anchor":"","data":{"text":"
В моей практике полезными оказались три фичи редакторов: визуализация XSD, генерация XML на основе XSD и валидация XML по XSD.
","subline1":""}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
1. Визуализация XSD нужна для наглядного представления схемы, позволяющего быстро вычленить обязательные элементы и атрибуты, а также существующие ограничения. Например, для запроса CheckTextRequest обязательным является элемент text, а необязательными – все три атрибута (при этом у атрибута options установлено значение по умолчанию – ноль).
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Визуализация необходима в том случае, когда типов и ограничений в схеме много. Если вам нужна только она, и вы не хотите платить за специальные редакторы, то можно рассмотреть бесплатные альтернативы (например, JDeveloper).
"}},{"type":"media","cover":false,"hidden":false,"anchor":"","data":{"items":[{"title":"","image":{"type":"image","data":{"uuid":"625616f4-080a-56fe-96c7-9eb26ebf0256","width":391,"height":284,"size":17885,"type":"png","color":"efeee8","hash":"","external_service":[],"base64preview":"/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgKCgkICQkKDA8MCgsOCwkJDRENDg8QEBEQCgwSExIQEw8QEBD/2wBDAQMDAwQDBAgEBAgQCwkLEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBD/wAARCAAKAAoDAREAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAABgUJ/8QAIxAAAgEDAgcBAAAAAAAAAAAAAQIDAAQRBVEGEhMUITJCsf/EABcBAQADAAAAAAAAAAAAAAAAAAMAAQL/xAAaEQEBAAMBAQAAAAAAAAAAAAABAAIDMREz/9oADAMBAAIRAxEAPwDSbX9VS6nsZLR2WPnOWaNlY4GfVlzQb8X0l1J4yqE5iQ7qPymORsQ47ZkLlGKntScg489SOpj9Cp5QrS4uDawkzyEmNfo7Ur2wX//Z"}}}]}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
2. Генерация XML на основе XSD полезна тогда, когда вы хотите увидеть корректный пример сообщения. Я пользуюсь ей для того, чтобы быстро поэкспериментировать с возможным заполнением сообщения и проверить нюансы работы ограничений.
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
3. После использования фичи из пункта 2 полезно провести валидацию XML по XSD – то есть проверить сообщение на корректность. Вместе фичи 2 и 3 позволяют отлавливать хитрые дефекты в XSD еще тогда, когда сам сервис находится в разработке.
"}},{"type":"header","cover":false,"hidden":false,"anchor":"","data":{"style":"h2","text":"Инструмент тестирования – SoapUI"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Тестирование SOAP практически всегда подразумевает использование SoapUI. Прочитать про использование этого инструмента можно в разных источниках (источник 1, источник 2), но эффективнее всего будет ознакомиться тут.
"}},{"type":"media","cover":true,"hidden":false,"anchor":"","data":{"items":[{"title":"","image":{"type":"image","data":{"uuid":"800fc7bf-e33a-542c-8b70-357c800a8e16","width":1280,"height":720,"size":342828,"type":"png","color":"337789","hash":"","external_service":[],"base64preview":"/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgKCgkICQkKDA8MCgsOCwkJDRENDg8QEBEQCgwSExIQEw8QEBD/2wBDAQMDAwQDBAgEBAgQCwkLEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBD/wAARCAAKAAoDAREAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAABwQG/8QAJBAAAgIABQMFAAAAAAAAAAAAAQIDBAAFBxEhBhIiE0FCYXH/xAAYAQADAQEAAAAAAAAAAAAAAAADBQYEB//EACMRAAECBQMFAAAAAAAAAAAAAAEAAgMEESEiBRJBExZRkaH/2gAMAwEAAhEDEQA/AMnlGtFrMK7wtaqSOV8Zq0rhCCoJI9RQSRvyRuPvFy6cqCAFxbttgc19bcgj4gK5qb1ULc4i1W6nKCRgpEp2I34+WFXWjcvViNLkKWl2+gp9RJZa2Y0I60jRK9LyVCVB/dsHm8XinhA0jOC/dfJHbAdx498YingX/9k="}}}]}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Я выделяю 8 условных уровней владения SoapUI:
"}},{"type":"header","cover":false,"hidden":false,"anchor":"","data":{"style":"h3","text":"Уровень 1 – умею отправлять запросы"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Научитесь создавать проект на основе WSDL. SoapUI может сгенерировать все необходимые запросы для вас; вам останется лишь проверить правильность их заполнения и нажать кнопочку «Send». После выработки навыков создания корректных запросов вы должны овладеть искусством формирования некорректных запросов, вызывающих появление ошибок.
"}},{"type":"header","cover":false,"hidden":false,"anchor":"","data":{"style":"h3","text":"Уровень 2 – умею делать Test Suites и Test Cases"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Начните делать мини-автотесты. Тест-комплекты и тест-кейсы позволяют создавать сценарии тестирования API, подготавливать данные для запросов и автоматически проверять полученный ответ на соответствие ожидаемому. На первых порах их можно использовать просто как коллекции запросов. Например, если вы завели дефект и хотите быстро проверить его после фикса, можно выделить отдельный тест-комплект конкретно под запросы-дефекты.
"}},{"type":"header","cover":false,"hidden":false,"anchor":"","data":{"style":"h3","text":"Уровень 3 – умею писать Assertions"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
После освоения тест-кейсов вам будет полезно научиться делать их автоматически проверяемыми. После этого вам уже не нужно будет искать «глазами» информацию об ответе: при наличии автоматической проверки кейсы будут помечаться зеленым (если проверка пройдена) или красным (если не пройдена). SoapUI предоставляет большой набор возможных проверок (assertions), но самые удобные и простые – это Contains и Not Contains. С их помощью можно проверить факт наличия конкретного текста в полученном ответе. Эти проверки также поддерживают поиск с помощью регулярных выражений.
"}},{"type":"header","cover":false,"hidden":false,"anchor":"","data":{"style":"h3","text":"Уровень 4 – использую XPath и/или XQuery в Assertions"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Для тех, кто немного знаком с автоматизацией тестирования UI с помощью Selenium, язык XPath – знакомая вещь. Грубо говоря, XPath позволяет искать элементы в XML-документе. XQuery – похожая технология, которая может использовать XPath внутри себя; этот язык гораздо мощнее, он напоминает SQL. Оба эти языка можно использовать в Assertions. Проверки с их помощью получаются более прицельными и стабильными, поэтому ваши кейсы будут пользоваться большим доверием.
"}},{"type":"header","cover":false,"hidden":false,"anchor":"","data":{"style":"h3","text":"Уровень 5 – умею писать сложные тесты с помощью специальных шагов"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
В тест-кейсах может содержаться не только один запрос, но и несколько (к примеру, когда вы хотите эмулировать стандартный сценарий работы пользователя «создать сущность» → «экспортировать сущность»). Между запросами могут находиться другие специальные шаги, например:
"}},{"type":"list","cover":false,"hidden":false,"anchor":"","data":{"items":["Properties и Property Transfer (помогают переиспользовать данные и передавать их между запросами);","JDBC Request (используется для получения данных из базы данных);","Conditional Goto (позволяет сделать разветвления или циклы в тест-кейсе);","Run TestCase (помогает вынести какие-то типовые запросы в отдельные тест-кейсы и вызывать их там, где нужно)."],"type":"UL"}},{"type":"header","cover":false,"hidden":false,"anchor":"","data":{"style":"h3","text":"Уровень 6 – использую скрипты на Groovy"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
SoapUI позволяет писать скрипты на Groovy в различных местах. Простейший случай – это генерация данных в самом запросе с помощью вставок ${=}. Я постоянно пользуюсь такими вставками:
"}},{"type":"list","cover":false,"hidden":false,"anchor":"","data":{"items":["${=new Date().format(«yyyy-MM-dd’T’HH:mm:ss»)} – для вставки текущей даты и времени в необходимом формате;","${=java.util.UUID.randomUUID()} – для вставки корректно сформированного случайного GUID."],"type":"UL"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Полноценные скрипты можно использовать в качестве шагов в кейсах и проверках. В какой-то момент вы обнаружите, что сразу несколько специальных шагов из пятого уровня можно заменить одним скриптом.
"}},{"type":"header","cover":false,"hidden":false,"anchor":"","data":{"style":"h3","text":"Уровень 7 – использую MockServices"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
SoapUI на основе WSDL может генерировать Mock-объекты. Mock-объект – это простейшая симуляция сервиса. С помощью «моков» можно начать писать и отлаживать тест-кейсы еще до того, как сервис реально будет доступен для тестирования. Также их можно использовать в качестве «заглушек» для временно недоступных сервисов.
"}},{"type":"header","cover":false,"hidden":false,"anchor":"","data":{"style":"h3","text":"Уровень 8 – бог SoapUI"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Вы знаете разницу между платной и бесплатной версиями SoapUI и используете SoapUI API в коде. Вы используете плагины и запускаете выполнение кейсов через командную строку и/или CI. Ваши тест-кейсы просты и легко поддерживаются. В общем, вы «съели собаку» на этом инструменте. Я бы с радостью пообщалась с тем, кто освоил SoapUI на таком уровне. Если вы являетесь таковым – отпишитесь в комментариях!
"}},{"type":"header","cover":false,"hidden":false,"anchor":"","data":{"style":"h2","text":"Тестирование с помощью языков программирования"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
В какой-то момент у вас может возникнуть мысль, что проще писать тесты не в SoapUI, а просто на языках программирования. Это нормально. Будучи UI-инструментом, SoapUI имеет свои недостатки, которые в лучшем случае решаются приобретением платной версии, а в худшем – «костылями» и большими затратами времени на поддержку тестов. Для работы с протоколом SOAP в языках программирования существуют специальные библиотеки. Так, в Java можно использовать Axis2 (подробные примеры доступны в серии статей на IBM developerWorks), в Python – библиотеки suds либо zeep, в Groovy – библиотеку groovy-wslite.
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Приведу пример того, как выглядит запрос к YandexSpeller API, выполненный с помощью groovy-wslite:
"}},{"type":"code","cover":false,"hidden":false,"anchor":"","data":{"text":"import wslite.soap.*\ndef client = new SOAPClient('http://speller.yandex.net/services/spellservice?WSDL')\ndef response = client.send(SOAPAction: 'http://speller.yandex.net/services/spellservice/checkText') {\nbody {\nCheckTextRequest('lang': 'ru', 'xmlns':'http://speller.yandex.net/services/spellservice') {\ntext('ошипка')\n}\n}\n}\nassert 'ошибка' == response.CheckTextResponse.SpellResult.error.s.text()\nassert '1' == response.CheckTextResponse.SpellResult.error.@code.text()","lang":""}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Насколько я знаю, высокоуровневых фреймворков (по типу Rest-assured) для тестирования SOAP пока не существует, но появился интересный инструмент – karate. С его помощью можно описывать кейсы для тестирования SOAP и REST в виде сценариев по типу Cucumber / Gherkin. Для многих тестировщиков обращение к karate будет идеальным решением, ведь такие сценарии по сложности написания и поддержки кейсов будут лежать где-то посередине между использованием SoapUI и написанием собственного фреймворка для тестирования SOAP.
"}},{"type":"header","cover":false,"hidden":false,"anchor":"","data":{"style":"h2","text":"Заключение"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Вряд ли вам когда-либо захочется тестировать SOAP просто так, для себя (как могло бы получиться с REST-ом). Это тяжеловесный протокол, который используется в серьезных корпоративных решениях. Но его тяжеловесность одновременно является подарком тестировщику: все используемые технологии стандартизированы, имеются качественные инструменты для работы. От тестировщика требуется лишь желание их изучить и использовать.
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Давайте соберем воедино тот самый чек-лист необходимых навыков для тестировщика. Итак, если вы только начинаете тестировать SOAP сервисы, вам нужно знать и уметь использовать:
"}},{"type":"list","cover":false,"hidden":false,"anchor":"","data":{"items":["XML.","XSD.","WSDL.","SOAP.","Редакторы XML / XSD (на уровне визуализации XSD).","SoapUI на уровне 1."],"type":"UL"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Как видите, основной упор приходится на изучение стандартов, в SoapUI достаточно просто уметь выполнять запросы. По мере погружения в тестирование SOAP перед вам будут возникать задачи, которые потребуют уже более серьезных навыков и знаний, но не стоит пытаться изучить всё и сразу. Гораздо важнее последовательность в повышении уровня сложности выполняемых задач. Следуя этой рекомендации, в один прекрасный момент вы поймете, что стали хорошим специалистом в этой области!
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Изучайте! Удачи!
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
#soap #api #restapi #qualitylab #softwaretesting #qa #тестирование #тестированиепо #партнерство #изучаем #qaengineer
"}}],"summaryContent":null,"isExistSummaryContent":false,"warningFromEditor":null,"warningFromEditorTitle":null,"counters":{"comments":0,"favorites":1,"reposts":0,"views":392,"hits":1783,"reads":null,"online":0},"dateFavorite":0,"hitsCount":1783,"isCommentsEnabled":true,"isLikesEnabled":true,"isRemovedByUserRequest":false,"isFavorited":false,"isPinned":false,"repostId":null,"repostData":null,"subscribedToTreads":false,"isEditorial":false,"isAudioAvailable":false,"audioUrl":null,"isAudioAvailableToGenerate":false,"commentEditor":{"enabled":true,"who":null,"text":"","until":null,"reason":null,"type":"everybody"},"isBlur":false,"isPublished":true,"isDisabledAd":false,"withheld":[],"ogTitle":null,"ogDescription":"Тестирование SOAP API, основы SOAP и WSDL, работа с XML и XSD, инструменты для тестирования, советы для тестировщиков и менеджеров.","url":"https://vc.ru/services/1924757-testirovanie-soap-api-osnovnye-principy-i-instrumenty","author":{"id":1894539,"name":"Лаборатория Качества","nickname":null,"description":"Тестируем сайты, ПО, приложения и другие IT-продукты на аутсорсинге. NDA. Контакты и подробности о нас: quality-lab.ru","uri":"","avatar":{"type":"image","data":{"uuid":"3672385d-5e78-50ad-9425-fd4867549300","width":2040,"height":2040,"size":2188090,"type":"png","color":"065e84","hash":"","external_service":[],"base64preview":"/9j/4AAQSkZJRgABAQIAHAAcAAD/2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgKCgkICQkKDA8MCgsOCwkJDRENDg8QEBEQCgwSExIQEw8QEBD/2wBDAQMDAwQDBAgEBAgQCwkLEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBD/wAARCAAKAAoDAREAAhEBAxEB/8QAFwAAAwEAAAAAAAAAAAAAAAAAAwQGB//EACYQAAIBAgQFBQAAAAAAAAAAAAECAwQFABESIQYHIjFRExRCYXP/xAAYAQACAwAAAAAAAAAAAAAAAAAEBwACA//EAB8RAQACAQMFAAAAAAAAAAAAAAEAAwIEERITFCFBUf/aAAwDAQACEQMRAD8AyCzcvprlwnNxi92tlHCsjg+vqV9ajZU6dyfAPbDPy1HTtKwd4k69LldQ2uQEjffXE7hny/PBfNgHb4fIe61dUSaI1Mpp061i1nQrEDMhewJyGZ+hiZhyX3K0ZLWYr4j8M0ohjAlcAKPkfGMmE7s//9k="}},"cover":{"cover":{"type":"image","data":{"uuid":"0834afcd-a0e5-55d7-9800-d93ff34c512d","width":1473,"height":480,"size":93718,"type":"jpg","color":"dbeaf0","hash":"","external_service":[],"base64preview":"/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCAAKAAoDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAABAMJ/8QAIBAAAgEEAgMBAAAAAAAAAAAAAQIRAAMEEgUxIVFhof/EABUBAQEAAAAAAAAAAAAAAAAAAAQF/8QAFxEAAwEAAAAAAAAAAAAAAAAAAAECEf/aAAwDAQACEQMRAD8A0a4XBPEHK1yGyLjJDi+zOsiZ1nqhvk5CuwGMWAMA7Dz+0vYgsZMt2fdRNm2SSUUk/KQkTLrWf//Z"}},"cover_y":100},"achievements":[{"title":"Год на vc.ru","code":"registration_1_year","description":"Первый год с vc.ru. Получена 24 июля 2025.","previewUuid":"0d11c244-49de-50e7-894e-b9b27945d42b","formats":{"glb":"https://static.vc.ru/achievements/fish.glb","usdz":"https://static.vc.ru/achievements/fish.usdz"},"viewData":{"contentColor":"#C67AA3","textMaxWidth":0.634765625,"textX":0.5888671875,"textY":0.54296875,"logoX":0.5859375,"logoY":0.6669921875,"logoXNoText":0.6044921875,"logoYNoText":0.5439453125},"id":3564532,"userId":1894539,"count":0,"shareImage":"https://api.vc.ru/achievements/share/3564532"}],"lastModificationDate":1764936596,"isSubscribed":false,"isSubscribedToNewPosts":false,"isMuted":false,"isAvailableForMessenger":true,"badgeId":null,"isDonationsEnabled":true,"isPlusGiftEnabled":true,"isUnverifiedBlogForCompanyWithoutPro":true,"isRemovedByUserRequest":false,"isFrozen":false,"isDisabledAd":false,"isPlus":false,"isVerified":false,"isPro":false,"yandexMetricaId":null,"badge":null,"isOnline":false,"tgChannelShortname":null,"isUnsubscribable":true,"type":1,"subtype":"personal_blog"},"subsite":{"id":200396,"name":"Сервисы","description":"Новые сервисы, обновления инструментов, опыт использования и полезные приёмы.","uri":"/services","avatar":{"type":"image","data":{"uuid":"158fab2d-76c1-5ed8-898a-76ee48d4c795","width":1200,"height":1200,"size":99571,"type":"png","color":"7cdaea","hash":"08183848d81000","external_service":[]}},"cover":{"type":"image","data":{"uuid":"c3fe3abb-6808-527e-9eb1-2b6bb92ea400","width":3840,"height":1120,"size":19502,"type":"png","color":"7cdcec","hash":"","external_service":[]}},"lastModificationDate":1688995401,"isSubscribed":false,"isSubscribedToNewPosts":false,"isMuted":false,"isAvailableForMessenger":false,"isDisabledAd":false,"nickname":"services","isUnsubscribable":true,"badge":null,"badgeId":null,"isDonationsEnabled":false,"isOnline":false,"isPlus":false,"isUnverifiedBlogForCompanyWithoutPro":false,"isVerified":false,"isRemovedByUserRequest":false,"isFrozen":false,"isPro":false,"type":2,"subtype":"community"},"reactions":{"counters":[{"id":2,"count":1}],"reactionId":0},"isNews":false,"source":null,"clusters":[],"donations":{"amount":0,"isDonated":false},"commentsSeenCount":null}},{"type":"entry","data":{"id":665909,"customUri":null,"subsiteId":2377,"title":"LaraКурс для начинающих расхитителей гробниц","date":1682318342,"dateModified":1682318342,"blocks":[{"type":"media","cover":true,"hidden":false,"anchor":"","data":{"items":[{"title":"Такой Лару увидела Midjourney","image":{"type":"image","data":{"uuid":"33818f0b-e3af-5d84-adf7-7bf1536dd001","width":1456,"height":816,"size":836914,"type":"png","color":"353a3f","hash":"","external_service":[]}}}]}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Laravel – один из наиболее популярных фреймворков для разработки на языке PHP. Если вы только начинаете свой путь в Laravel и хотите освоить этот мощный инструмент, то курс LaraКурс на YouTube может стать отличным помощником для вас. Курс разработан специально для разработчиков, которые не знакомы с Laravel и включает в себя все необходимые знания и навыки, чтобы начать создавать современные продукты на этом фреймворке. Его записал бэкенд-разработчик нашей Студии Флаг – Алексей Смирнов, который имеет богатый опыт в разработке на Laravel. В данной статье мы рассмотрим основные характеристики курса и то, что вы можете ожидать от него.
"}},{"type":"header","cover":false,"hidden":false,"anchor":"","data":{"style":"h2","text":"LaraКурс #1. Введение в Laravel"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
В вводном видео LaraКурса Алексей знакомит зрителей с основами фреймворка Laravel. На примере создания простого приложения вы узнаете о структуре каталогов проекта, жизненном цикле запроса, MVC архитектуре, инструменте командной строки Artisan. Кроме того, курс охватывает темы создания моделей, контроллеров, репозиториев и миграций, а также заканчивается обзором итогов.
"}},{"type":"video","cover":false,"hidden":false,"anchor":"","data":{"title":"","video":{"type":"video","data":{"thumbnail":{"type":"image","data":{"uuid":"991fdcec-4227-5712-ba16-389c8e6dc214","width":1280,"height":720,"size":70119,"type":"jpg","color":"e9c7c5","hash":"","external_service":[]}},"width":800,"height":450,"time":0,"external_service":{"name":"youtube","id":"E1NxzEk8I4g"}}}}},{"type":"header","cover":false,"hidden":false,"anchor":"","data":{"style":"h2","text":"LaraКурс #2. Возможности раутинга в Laravel"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
В этом видео Алексей рассмотрел возможности раутинга подробнее: из чего он состоит, методы раутинга, группировку раутов, разделение раутов API и web и многое другое.
"}},{"type":"video","cover":false,"hidden":false,"anchor":"","data":{"title":"","video":{"type":"video","data":{"thumbnail":{"type":"image","data":{"uuid":"a3de9608-4772-55d4-b778-aa8715bc01d4","width":1280,"height":720,"size":72897,"type":"jpg","color":"e9c9c8","hash":"","external_service":[]}},"width":800,"height":450,"time":0,"external_service":{"name":"youtube","id":"-BkXG29xt2k"}}}}},{"type":"header","cover":false,"hidden":false,"anchor":"","data":{"style":"h2","text":"LaraКурс #3. Контроллеры и сервисный слой"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
В третьем уроке вы погрузитесь в мир контроллеров Laravel. Контроллеры – это классы, которые обрабатывают запросы к приложению и возвращают ответы. Они являются связующим звеном между раутингом и представлениями.
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
В этом видео Алексей рассказал, как создавать и использовать контроллеры в Laravel. Вы узнаете, как определить методы контроллера, как передавать параметры из раутов и возвращать разные типы ответов (HTML, JSON, редиректы и т. д.) . Также вы познакомитесь с концепцией ресурсных контроллеров, которые позволяют упростить работу с CRUD-операциями.
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Наш Lara-гуру также рассказал, какая ответственность лежит на контроллерах и где нужно хранить свою бизнес-логику. В видео он дает советы по организации кода и показательные примеры из своего опыта.
"}},{"type":"video","cover":false,"hidden":false,"anchor":"","data":{"title":"","video":{"type":"video","data":{"thumbnail":{"type":"image","data":{"uuid":"97d52e7a-85e6-500a-ae83-7bcc97855dcc","width":1280,"height":720,"size":73293,"type":"jpg","color":"e9c9c8","hash":"","external_service":[]}},"width":800,"height":450,"time":0,"external_service":{"name":"youtube","id":"SQH5y_ZV5L0"}}}}},{"type":"header","cover":false,"hidden":false,"anchor":"","data":{"style":"h2","text":"LaraКурс #4. Запросы, ответы и DTO"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
В этом видео вы продолжите изучать основы Laravel и углубитесь в тему request и response. Request и response – это объекты, которые представляют запрос и ответ в приложении Laravel. Они содержат различную информацию, например, параметры, заголовки, куки, сессии и т. д.
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Алексей показал, как работать с request и response в Laravel. Вы узнаете, как получать данные из запроса и валидировать их, как отправлять разные типы ответов (HTML, JSON, файлы и т. д.) . Также вы научитесь использовать сервис-контейнер Laravel для внедрения зависимостей в контроллеры.
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Бонусом вы поймете, как избавить свою бизнес-логику от зависимости от запроса клиента. Алексей объяснил, почему это важно для поддержки и расширения кода, и как это сделать с помощью сервисов и репозиториев.
"}},{"type":"video","cover":false,"hidden":false,"anchor":"","data":{"title":"","video":{"type":"video","data":{"thumbnail":{"type":"image","data":{"uuid":"81c784c9-3d7a-5000-b78f-1e8bd0bf1b33","width":1280,"height":720,"size":70616,"type":"jpg","color":"e9c7c5","hash":"","external_service":[]}},"width":800,"height":450,"time":0,"external_service":{"name":"youtube","id":"1TZt4Gz9AWM"}}}}},{"type":"header","cover":false,"hidden":false,"anchor":"","data":{"style":"h2","text":"LaraКурс #5. Модели. Несколько моделей для одной таблицы."}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
В этот раз мы займемся одной из самых важных частей любого приложения – моделями. Модели – это классы, которые представляют сущности из базы данных и позволяют с ними взаимодействовать. В Laravel используется Eloquent ORM – это очень мощный и удобный инструмент для работы с базой данных.
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Наш разработчик рассказал, как создавать и использовать модели в Laravel. Вы узнаете, как определить свойства и методы модели, как связывать модели с таблицами и выполнять с ними различные операции (создание, чтение, обновление, удаление) . Также вы познакомитесь с концепцией отношений между моделями, и как работать с ними с помощью Eloquent.
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Алексей также дает советы по организации кода и следованию лучшим практикам при работе с моделями. Он показал, как использовать миграции и фабрики для управления структурой и наполнением базы данных.
"}},{"type":"video","cover":false,"hidden":false,"anchor":"","data":{"title":"","video":{"type":"video","data":{"thumbnail":{"type":"image","data":{"uuid":"175bae1c-9788-576a-b86d-19ea5564c161","width":1280,"height":720,"size":65906,"type":"jpg","color":"e9c5c3","hash":"","external_service":[]}},"width":800,"height":450,"time":0,"external_service":{"name":"youtube","id":"gWqQ5wTSB58"}}}}},{"type":"header","cover":false,"hidden":false,"anchor":"","data":{"style":"h2","text":"LaraКурс #6. Модели. Nested set model"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
В этом видео Алексей рассказывает о работе с деревом данных в Laravel при помощи пакета nestedset. Деревья данных часто используются в веб-разработке для представления иерархических данных, таких как категории товаров, теги, меню и т. д. Пакет nestedset позволяет легко и удобно работать с такими данными в Laravel.
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Алексей начинает с обзора проблем, с которыми сталкиваются разработчики при работе с деревом данных, например, необходимость написания множества запросов для поиска дочерних и родительских элементов, а также изменения порядка элементов в дереве.
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Затем он переходит к обзору пакета nestedset и его возможностей. Он демонстрирует, как установить и настроить пакет, а также как использовать его для работы с деревьями данных. Он показывает, как создавать новые элементы, перемещать элементы, находить дочерние и родительские элементы, а также сортировать элементы в дереве. В результате, вы получите полное понимание того, как использовать пакет nestedset для работы с деревьями данных в Laravel.
"}},{"type":"video","cover":false,"hidden":false,"anchor":"","data":{"title":"","video":{"type":"video","data":{"thumbnail":{"type":"image","data":{"uuid":"2cb713d0-c5c8-5a78-82f2-91a9d9d048cd","width":1280,"height":720,"size":53454,"type":"jpg","color":"e8c7c5","hash":"","external_service":[]}},"width":800,"height":450,"time":0,"external_service":{"name":"youtube","id":"t0i2F3JON68"}}}}},{"type":"header","cover":false,"hidden":false,"anchor":"","data":{"style":"h2","text":"LaraКурс #7. Service Container"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
В этом видео Алексей Смирнов рассказывает о важной архитектурной концепции Laravel – Service Container. Он поясняет, что это своя реализация Dependency Injection (DI) Container, и как Service Container упрощает создание и настройку объектов в проектах Laravel. Алексей объясняет, как использовать Service Container для внедрения зависимостей, получения экземпляров классов и настройки конфигураций в Laravel-приложении. В конце видео, он также демонстрирует примеры использования Service Container в Laravel-приложении.
"}},{"type":"video","cover":false,"hidden":false,"anchor":"","data":{"title":"","video":{"type":"video","data":{"thumbnail":{"type":"image","data":{"uuid":"b691f9e5-13f1-567d-b2a8-ce9473a417a9","width":1280,"height":720,"size":69745,"type":"jpg","color":"e9c7c5","hash":"","external_service":[]}},"width":800,"height":450,"time":0,"external_service":{"name":"youtube","id":"gfdHf1d-iEM"}}}}},{"type":"header","cover":false,"hidden":false,"anchor":"","data":{"style":"h2","text":"LaraКурс #8. REST API на Laravel"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
В восьмом уроке Алексей переходит к правильному созданию REST API в Laravel. Он демонстрирует, какие инструменты и функции фреймворка помогают упростить этот процесс. В частности, Алексей объясняет, как использовать роутинг, контроллеры и миграции для создания API-шек. Он также демонстрирует, как использовать ресурсы, чтобы организовать логику работы с данными и как реализовать аутентификацию в API. Это видео будет полезно для всех, кто хочет научиться создавать эффективные и надежные REST API с помощью Laravel.
"}},{"type":"video","cover":false,"hidden":false,"anchor":"","data":{"title":"","video":{"type":"video","data":{"thumbnail":{"type":"image","data":{"uuid":"4b989eb0-706a-5670-92e7-72ed64ba4f8c","width":1280,"height":720,"size":70063,"type":"jpg","color":"e9c5c4","hash":"","external_service":[]}},"width":800,"height":450,"time":0,"external_service":{"name":"youtube","id":"AxA5wJZn1rY"}}}}},{"type":"header","cover":false,"hidden":false,"anchor":"","data":{"style":"h2","text":"LaraКурс #9. Автотесты в Laravel"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
В этом видео Алексей Смирнов рассказывает о важности написания автотестов в проектах и о том, как использовать возможности, предоставляемые Laravel, для написания эффективных тестов. Он рассказывает о различных типах тестов, о том, как использовать фабрики моделей и моки, а также демонстрирует, как запускать и отладить тесты с помощью инструмента PHPUnit. Кроме того, в видео рассматриваются наиболее распространенные ошибки при написании тестов и приводятся рекомендации по их избежанию.
"}},{"type":"video","cover":false,"hidden":false,"anchor":"","data":{"title":"","video":{"type":"video","data":{"thumbnail":{"type":"image","data":{"uuid":"e89e8c19-1011-553d-95ef-e03c8286facf","width":1280,"height":720,"size":74880,"type":"jpg","color":"e9c5c4","hash":"","external_service":[]}},"width":800,"height":450,"time":0,"external_service":{"name":"youtube","id":"3dmzo5xk46w"}}}}},{"type":"header","cover":false,"hidden":false,"anchor":"","data":{"style":"h2","text":"LaraКурс #10. Разработка пакетов"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
В заключительном видео он представляет пошаговое руководство по созданию пакета для Laravel. Алексей рассказывает о заполнении файла composer. json, создании assets для пакета, настройке маршрутов, контроллеров и запросов, а также о загрузке конфигураций и шаблонов пакета. Он также объясняет, как опубликовать assets пакета и добавить функционал авторизации. В заключении Алексей обсуждает фасад для пакета и дает общий обзор проделанной работы.
"}},{"type":"video","cover":false,"hidden":false,"anchor":"","data":{"title":"","video":{"type":"video","data":{"thumbnail":{"type":"image","data":{"uuid":"9b9b26e9-3b48-5386-a04a-0ead7a0fa960","width":1280,"height":720,"size":69811,"type":"jpg","color":"e8c9c7","hash":"","external_service":[]}},"width":800,"height":450,"time":0,"external_service":{"name":"youtube","id":"1FkcXK9BQYg"}}}}},{"type":"header","cover":false,"hidden":false,"anchor":"","data":{"style":"h2","text":"Заключение"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Штош, если вы дочитали статью до конца и посмотрели все-все видосы, то, поздравляю, теперь вы еще лучше шарите за Laravel. Обязательно делитесь впечатлениями в комментариях. А если есть советы и предложения по улучшению, то вэлком :)
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
#laravel #php #YouTube #restapi #api #курсы #разработка
"}}],"summaryContent":null,"isExistSummaryContent":false,"warningFromEditor":null,"warningFromEditorTitle":null,"counters":{"comments":0,"favorites":1,"reposts":0,"views":1627,"hits":322,"reads":null,"online":0},"dateFavorite":0,"hitsCount":322,"isCommentsEnabled":true,"isLikesEnabled":true,"isRemovedByUserRequest":false,"isFavorited":false,"isPinned":false,"repostId":null,"repostData":null,"subscribedToTreads":false,"isEditorial":false,"isAudioAvailable":false,"audioUrl":null,"isAudioAvailableToGenerate":false,"commentEditor":{"enabled":true,"who":null,"text":"","until":null,"reason":null,"type":"everybody"},"isBlur":false,"isPublished":true,"isDisabledAd":false,"withheld":[],"ogTitle":null,"ogDescription":null,"url":"https://vc.ru/dev/665909-larakurs-dlya-nachinayushih-rashititelei-grobnic","author":{"id":2377,"name":"Миша Радионов","nickname":null,"description":"radionov.me","uri":"","avatar":{"type":"image","data":{"uuid":"c827e50f-1bad-5b41-8255-2c9fe3916781","width":1168,"height":1170,"size":633959,"type":"png","color":"bdb2b8","hash":"","external_service":[]}},"cover":null,"achievements":[{"title":"Год на vc.ru","code":"registration_1_year","description":"Первый год с vc.ru. Получена 24 июля 2025.","previewUuid":"0d11c244-49de-50e7-894e-b9b27945d42b","formats":{"glb":"https://static.vc.ru/achievements/fish.glb","usdz":"https://static.vc.ru/achievements/fish.usdz"},"viewData":{"contentColor":"#C67AA3","textMaxWidth":0.634765625,"textX":0.5888671875,"textY":0.54296875,"logoX":0.5859375,"logoY":0.6669921875,"logoXNoText":0.6044921875,"logoYNoText":0.5439453125},"id":5418447,"userId":2377,"count":0,"shareImage":"https://api.vc.ru/achievements/share/5418447"},{"title":"3 года на vc.ru","code":"registration_3_years","description":"Провёл 3 года вместе с vc.ru. Получена 24 июля 2025.","previewUuid":"d9d72ac5-bcb5-55e0-8c72-b99251e5cdd9","formats":{"glb":"https://static.vc.ru/achievements/shark.glb","usdz":"https://static.vc.ru/achievements/shark.usdz"},"viewData":{"contentColor":"#8E6F09","textMaxWidth":0.66796875,"textX":0.5205078125,"textY":0.341796875,"logoX":0.5205078125,"logoY":0.4609375,"logoXNoText":0.5,"logoYNoText":0.3662109375},"id":1794360,"userId":2377,"count":0,"shareImage":"https://api.vc.ru/achievements/share/1794360"},{"title":"5 лет на vc.ru","code":"registration_5_years","description":"Провёл 5 лет вместе с vc.ru. Получена 23 июля 2025.","previewUuid":"a9140d54-73b8-5f40-afa8-449fbaafd42b","formats":{"glb":"https://static.vc.ru/achievements/whale.glb","usdz":"https://static.vc.ru/achievements/whale.usdz"},"viewData":{"contentColor":"#8E6F09","textMaxWidth":0.66796875,"textX":0.533203125,"textY":0.658203125,"logoX":0.533203125,"logoY":0.77734375,"logoXNoText":0.4375,"logoYNoText":0.66015625},"id":567652,"userId":2377,"count":0,"shareImage":"https://api.vc.ru/achievements/share/567652"}],"lastModificationDate":1764936596,"isSubscribed":false,"isSubscribedToNewPosts":false,"isMuted":false,"isAvailableForMessenger":true,"badgeId":null,"isDonationsEnabled":false,"isPlusGiftEnabled":true,"isUnverifiedBlogForCompanyWithoutPro":false,"isRemovedByUserRequest":false,"isFrozen":false,"isDisabledAd":false,"isPlus":false,"isVerified":false,"isPro":false,"yandexMetricaId":null,"badge":null,"isOnline":false,"tgChannelShortname":null,"isUnsubscribable":true,"type":1,"subtype":"personal_blog"},"subsite":{"id":235819,"name":"Разработка","description":"Сообщество разработчиков: публикации о личном опыте, выдающиеся приёмы при решении рутинных задач, полезные материалы для профессионального роста.","uri":"/dev","avatar":{"type":"image","data":{"uuid":"fef5b5fb-e488-5b7f-8445-e3a26a910b44","width":1200,"height":1200,"size":7757,"type":"png","color":"343434","hash":"04042b2b1c1000","external_service":[]}},"cover":{"type":"image","data":{"uuid":"2a214cc5-35cc-58ca-bc07-fc1c892d2101","width":960,"height":280,"size":177,"type":"png","color":"343434","hash":"","external_service":[]}},"lastModificationDate":1642411346,"isSubscribed":false,"isSubscribedToNewPosts":false,"isMuted":false,"isAvailableForMessenger":false,"isDisabledAd":false,"nickname":"dev","isUnsubscribable":true,"badge":null,"badgeId":null,"isDonationsEnabled":false,"isOnline":false,"isPlus":false,"isUnverifiedBlogForCompanyWithoutPro":false,"isVerified":false,"isRemovedByUserRequest":false,"isFrozen":false,"isPro":false,"type":2,"subtype":"community"},"reactions":{"counters":[{"id":1,"count":4}],"reactionId":0},"isNews":false,"source":null,"clusters":[],"donations":{"amount":0,"isDonated":false},"commentsSeenCount":null}},{"type":"entry","data":{"id":675766,"customUri":null,"subsiteId":1333114,"title":"Курс Python-разработчик за 3 месяца в SkillFactory со скидкой 45%","date":1682399703,"dateModified":1682399703,"blocks":[{"type":"text","cover":true,"hidden":false,"anchor":"","data":{"text":"
Только по нашему промокоду — PARTNER — вы получите скидку 45% (вместо стандартной 40%) на курс Python-разработчик за 3 месяца в SkillFactory! Для этого переходите на сайт SkillFactory по ссылке: https://skillfactory.ru/python-intensive
"}},{"type":"media","cover":true,"hidden":false,"anchor":"","data":{"items":[{"title":"Курс Python-разработчик за 3 месяца в SkillFactory со скидкой 45%","image":{"type":"image","data":{"uuid":"bcef78e6-9d74-565a-ab0b-ff1e94a8532d","width":997,"height":545,"size":143335,"type":"png","color":"221e1e","hash":"","external_service":[]}}}]}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
На курсы вы получите нужные навыки и знания для трудоустройства + много практики. Чтобы стать востребованным специалистом, вам предстоит решить десятки задач от наших компаний-партнеров. Мы выстроили программу от простого к сложному, а каждую тему закрепили практикой.
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Преимущества обучения на курсе:
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
— Ускоренное обучение по программе полного курса: 3 месяца вместо 12.
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
— Упор на практику с первого месяца обучения.
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
— Средняя зарплата разработчика на Python от 100 000 ₽ в месяц.
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
— Доступ ко всем льготам для айтишников.
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Перейти на сайт SkillFactory и получить скидку 45% на курс Python-разработчик за 3 месяца по промокоду — PARTNER: https://skillfactory.ru/python-intensive
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Подробнее об онлайн-школе SkillFactory: https://u4i.online/skillfactory
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
#обучение #курсы #программирование #разработкасайтов #созданиесайтов #python #pythonprogramming #pythonlearning #pythondeveloper #django #курсыпрограммирования #школапрограммирования #sql #backend #backenddeveloper #fullstackdeveloper #fullstack #трудоустройство #скидки #sqldeveloper #docker #html #htmlcss #css #restapi #postgresql #redis #celery #database #bootstrap
"}}],"summaryContent":null,"isExistSummaryContent":false,"warningFromEditor":null,"warningFromEditorTitle":null,"counters":{"comments":0,"favorites":0,"reposts":0,"views":39,"hits":132,"reads":null,"online":0},"dateFavorite":0,"hitsCount":132,"isCommentsEnabled":true,"isLikesEnabled":true,"isRemovedByUserRequest":false,"isFavorited":false,"isPinned":false,"repostId":null,"repostData":null,"subscribedToTreads":false,"isEditorial":false,"isAudioAvailable":false,"audioUrl":null,"isAudioAvailableToGenerate":false,"commentEditor":{"enabled":true,"who":null,"text":"","until":null,"reason":null,"type":"everybody"},"isBlur":false,"isPublished":true,"isDisabledAd":false,"withheld":[],"ogTitle":null,"ogDescription":null,"url":"https://vc.ru/id1333114/675766-kurs-python-razrabotchik-za-3-mesyaca-v-skillfactory-so-skidkoi-45","author":{"id":1333114,"name":"U4i.Online","nickname":null,"description":"U4i.Online — обзоры и рейтинги онлайн-школ с дистанционными курсами обучения. Телеграм: @U4iOn.","uri":"","avatar":{"type":"image","data":{"uuid":"22cd7c32-d377-59a1-ab5f-f79b26e083ce","width":1436,"height":1436,"size":39500,"type":"png","color":"c30404","hash":"","external_service":[]}},"cover":null,"achievements":[{"title":"3 года на vc.ru","code":"registration_3_years","description":"Провёл 3 года вместе с vc.ru. Получена 31 октября 2025.","previewUuid":"d9d72ac5-bcb5-55e0-8c72-b99251e5cdd9","formats":{"glb":"https://static.vc.ru/achievements/shark.glb","usdz":"https://static.vc.ru/achievements/shark.usdz"},"viewData":{"contentColor":"#8E6F09","textMaxWidth":0.66796875,"textX":0.5205078125,"textY":0.341796875,"logoX":0.5205078125,"logoY":0.4609375,"logoXNoText":0.5,"logoYNoText":0.3662109375},"id":5997020,"userId":1333114,"count":0,"shareImage":"https://api.vc.ru/achievements/share/5997020"},{"title":"Год на vc.ru","code":"registration_1_year","description":"Первый год с vc.ru. Получена 24 июля 2025.","previewUuid":"0d11c244-49de-50e7-894e-b9b27945d42b","formats":{"glb":"https://static.vc.ru/achievements/fish.glb","usdz":"https://static.vc.ru/achievements/fish.usdz"},"viewData":{"contentColor":"#C67AA3","textMaxWidth":0.634765625,"textX":0.5888671875,"textY":0.54296875,"logoX":0.5859375,"logoY":0.6669921875,"logoXNoText":0.6044921875,"logoYNoText":0.5439453125},"id":4118144,"userId":1333114,"count":0,"shareImage":"https://api.vc.ru/achievements/share/4118144"}],"lastModificationDate":1764936596,"isSubscribed":false,"isSubscribedToNewPosts":false,"isMuted":false,"isAvailableForMessenger":true,"badgeId":null,"isDonationsEnabled":false,"isPlusGiftEnabled":true,"isUnverifiedBlogForCompanyWithoutPro":true,"isRemovedByUserRequest":false,"isFrozen":false,"isDisabledAd":false,"isPlus":false,"isVerified":false,"isPro":false,"yandexMetricaId":null,"badge":null,"isOnline":false,"tgChannelShortname":null,"isUnsubscribable":true,"type":1,"subtype":"personal_blog"},"subsite":{"id":1333114,"name":"U4i.Online","nickname":null,"description":"U4i.Online — обзоры и рейтинги онлайн-школ с дистанционными курсами обучения. Телеграм: @U4iOn.","uri":"","avatar":{"type":"image","data":{"uuid":"22cd7c32-d377-59a1-ab5f-f79b26e083ce","width":1436,"height":1436,"size":39500,"type":"png","color":"c30404","hash":"","external_service":[]}},"cover":null,"achievements":[{"title":"3 года на vc.ru","code":"registration_3_years","description":"Провёл 3 года вместе с vc.ru. Получена 31 октября 2025.","previewUuid":"d9d72ac5-bcb5-55e0-8c72-b99251e5cdd9","formats":{"glb":"https://static.vc.ru/achievements/shark.glb","usdz":"https://static.vc.ru/achievements/shark.usdz"},"viewData":{"contentColor":"#8E6F09","textMaxWidth":0.66796875,"textX":0.5205078125,"textY":0.341796875,"logoX":0.5205078125,"logoY":0.4609375,"logoXNoText":0.5,"logoYNoText":0.3662109375},"id":5997020,"userId":1333114,"count":0,"shareImage":"https://api.vc.ru/achievements/share/5997020"},{"title":"Год на vc.ru","code":"registration_1_year","description":"Первый год с vc.ru. Получена 24 июля 2025.","previewUuid":"0d11c244-49de-50e7-894e-b9b27945d42b","formats":{"glb":"https://static.vc.ru/achievements/fish.glb","usdz":"https://static.vc.ru/achievements/fish.usdz"},"viewData":{"contentColor":"#C67AA3","textMaxWidth":0.634765625,"textX":0.5888671875,"textY":0.54296875,"logoX":0.5859375,"logoY":0.6669921875,"logoXNoText":0.6044921875,"logoYNoText":0.5439453125},"id":4118144,"userId":1333114,"count":0,"shareImage":"https://api.vc.ru/achievements/share/4118144"}],"lastModificationDate":1764936596,"isSubscribed":false,"isSubscribedToNewPosts":false,"isMuted":false,"isAvailableForMessenger":true,"badgeId":null,"isDonationsEnabled":false,"isPlusGiftEnabled":true,"isUnverifiedBlogForCompanyWithoutPro":true,"isRemovedByUserRequest":false,"isFrozen":false,"isDisabledAd":false,"isPlus":false,"isVerified":false,"isPro":false,"yandexMetricaId":null,"badge":null,"isOnline":false,"tgChannelShortname":null,"isUnsubscribable":true,"type":1,"subtype":"personal_blog"},"reactions":{"counters":[],"reactionId":0},"isNews":false,"source":null,"clusters":[],"donations":{"amount":0,"isDonated":false},"commentsSeenCount":null}},{"type":"entry","data":{"id":616450,"customUri":null,"subsiteId":1333114,"title":"Запишитесь на курс «Python-разработчик» в Skypro со скидкой 52% по промокоду, рассрочкой и гарантией трудоустройства!","date":1677086520,"dateModified":1677086520,"blocks":[{"type":"text","cover":true,"hidden":false,"anchor":"","data":{"text":"
На курс сейчас действует скидка 45% + вы можете получить дополнительную скидку 7% по промокоду AdvcakeSkypro_2023. Записаться на курс с гарантией трудоустройства и рассрочкой без процентов: sky.pro/courses/programming/python-web-course
"}},{"type":"media","cover":true,"hidden":false,"anchor":"","data":{"items":[{"title":"Курс «Python-разработчик» в Skypro со скидкой 52% по промокоду, рассрочкой и гарантией трудоустройства","image":{"type":"image","data":{"uuid":"1057b2cb-b4c7-5f25-bab5-62b0a25c64fa","width":999,"height":638,"size":161418,"type":"png","color":"25222b","hash":"","external_service":[]}}}]}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Преимущества обучения на курсе Skypro:
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
— Вы научитесь создавать с помощью Python действительно качественные и удобные сайты и приложения.
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
— Центр карьеры Skypro проведет вас от учебы до работы на новом месте.
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
— Skypro работает со всеми категориями студентов: и без профильного образования, и в возрасте.
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
— 95% студентов Skypro выходят на работу в течении 4 месяцев.
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
На курс сейчас действует скидка 45% + вы можете получить дополнительную скидку 7% по промокоду AdvcakeSkypro_2023. Записаться на курс с гарантией трудоустройства и рассрочкой без процентов: sky.pro/courses/programming/python-web-course
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Подробнее об онлайн-школе Skypro: https://u4i.online/skypro
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
#обучение #курсы #программирование #разработкасайтов #созданиесайтов #python #pythonprogramming #pythonlearning #pythondeveloper #django #курсыпрограммирования #школапрограммирования #sql #backend #backenddeveloper #fullstackdeveloper #fullstack #трудоустройство #скидки #sqldeveloper #docker #html #htmlcss #css #restapi #postgresql #redis #celery #database #drf
"}}],"summaryContent":null,"isExistSummaryContent":false,"warningFromEditor":null,"warningFromEditorTitle":null,"counters":{"comments":0,"favorites":0,"reposts":0,"views":14,"hits":73,"reads":null,"online":0},"dateFavorite":0,"hitsCount":73,"isCommentsEnabled":true,"isLikesEnabled":true,"isRemovedByUserRequest":false,"isFavorited":false,"isPinned":false,"repostId":null,"repostData":null,"subscribedToTreads":false,"isEditorial":false,"isAudioAvailable":false,"audioUrl":null,"isAudioAvailableToGenerate":false,"commentEditor":{"enabled":true,"who":null,"text":"","until":null,"reason":null,"type":"everybody"},"isBlur":false,"isPublished":true,"isDisabledAd":false,"withheld":[],"ogTitle":null,"ogDescription":null,"url":"https://vc.ru/id1333114/616450-zapishites-na-kurs-python-razrabotchik-v-skypro-so-skidkoi-52-po-promokodu-rassrochkoi-i-garantiei-trudoustroistva","author":{"id":1333114,"name":"U4i.Online","nickname":null,"description":"U4i.Online — обзоры и рейтинги онлайн-школ с дистанционными курсами обучения. Телеграм: @U4iOn.","uri":"","avatar":{"type":"image","data":{"uuid":"22cd7c32-d377-59a1-ab5f-f79b26e083ce","width":1436,"height":1436,"size":39500,"type":"png","color":"c30404","hash":"","external_service":[]}},"cover":null,"achievements":[{"title":"3 года на vc.ru","code":"registration_3_years","description":"Провёл 3 года вместе с vc.ru. Получена 31 октября 2025.","previewUuid":"d9d72ac5-bcb5-55e0-8c72-b99251e5cdd9","formats":{"glb":"https://static.vc.ru/achievements/shark.glb","usdz":"https://static.vc.ru/achievements/shark.usdz"},"viewData":{"contentColor":"#8E6F09","textMaxWidth":0.66796875,"textX":0.5205078125,"textY":0.341796875,"logoX":0.5205078125,"logoY":0.4609375,"logoXNoText":0.5,"logoYNoText":0.3662109375},"id":5997020,"userId":1333114,"count":0,"shareImage":"https://api.vc.ru/achievements/share/5997020"},{"title":"Год на vc.ru","code":"registration_1_year","description":"Первый год с vc.ru. Получена 24 июля 2025.","previewUuid":"0d11c244-49de-50e7-894e-b9b27945d42b","formats":{"glb":"https://static.vc.ru/achievements/fish.glb","usdz":"https://static.vc.ru/achievements/fish.usdz"},"viewData":{"contentColor":"#C67AA3","textMaxWidth":0.634765625,"textX":0.5888671875,"textY":0.54296875,"logoX":0.5859375,"logoY":0.6669921875,"logoXNoText":0.6044921875,"logoYNoText":0.5439453125},"id":4118144,"userId":1333114,"count":0,"shareImage":"https://api.vc.ru/achievements/share/4118144"}],"lastModificationDate":1764936596,"isSubscribed":false,"isSubscribedToNewPosts":false,"isMuted":false,"isAvailableForMessenger":true,"badgeId":null,"isDonationsEnabled":false,"isPlusGiftEnabled":true,"isUnverifiedBlogForCompanyWithoutPro":true,"isRemovedByUserRequest":false,"isFrozen":false,"isDisabledAd":false,"isPlus":false,"isVerified":false,"isPro":false,"yandexMetricaId":null,"badge":null,"isOnline":false,"tgChannelShortname":null,"isUnsubscribable":true,"type":1,"subtype":"personal_blog"},"subsite":{"id":1333114,"name":"U4i.Online","nickname":null,"description":"U4i.Online — обзоры и рейтинги онлайн-школ с дистанционными курсами обучения. Телеграм: @U4iOn.","uri":"","avatar":{"type":"image","data":{"uuid":"22cd7c32-d377-59a1-ab5f-f79b26e083ce","width":1436,"height":1436,"size":39500,"type":"png","color":"c30404","hash":"","external_service":[]}},"cover":null,"achievements":[{"title":"3 года на vc.ru","code":"registration_3_years","description":"Провёл 3 года вместе с vc.ru. Получена 31 октября 2025.","previewUuid":"d9d72ac5-bcb5-55e0-8c72-b99251e5cdd9","formats":{"glb":"https://static.vc.ru/achievements/shark.glb","usdz":"https://static.vc.ru/achievements/shark.usdz"},"viewData":{"contentColor":"#8E6F09","textMaxWidth":0.66796875,"textX":0.5205078125,"textY":0.341796875,"logoX":0.5205078125,"logoY":0.4609375,"logoXNoText":0.5,"logoYNoText":0.3662109375},"id":5997020,"userId":1333114,"count":0,"shareImage":"https://api.vc.ru/achievements/share/5997020"},{"title":"Год на vc.ru","code":"registration_1_year","description":"Первый год с vc.ru. Получена 24 июля 2025.","previewUuid":"0d11c244-49de-50e7-894e-b9b27945d42b","formats":{"glb":"https://static.vc.ru/achievements/fish.glb","usdz":"https://static.vc.ru/achievements/fish.usdz"},"viewData":{"contentColor":"#C67AA3","textMaxWidth":0.634765625,"textX":0.5888671875,"textY":0.54296875,"logoX":0.5859375,"logoY":0.6669921875,"logoXNoText":0.6044921875,"logoYNoText":0.5439453125},"id":4118144,"userId":1333114,"count":0,"shareImage":"https://api.vc.ru/achievements/share/4118144"}],"lastModificationDate":1764936596,"isSubscribed":false,"isSubscribedToNewPosts":false,"isMuted":false,"isAvailableForMessenger":true,"badgeId":null,"isDonationsEnabled":false,"isPlusGiftEnabled":true,"isUnverifiedBlogForCompanyWithoutPro":true,"isRemovedByUserRequest":false,"isFrozen":false,"isDisabledAd":false,"isPlus":false,"isVerified":false,"isPro":false,"yandexMetricaId":null,"badge":null,"isOnline":false,"tgChannelShortname":null,"isUnsubscribable":true,"type":1,"subtype":"personal_blog"},"reactions":{"counters":[],"reactionId":0},"isNews":false,"source":null,"clusters":[],"donations":{"amount":0,"isDonated":false},"commentsSeenCount":null}},{"type":"entry","data":{"id":612912,"customUri":null,"subsiteId":1333114,"title":"Запишитесь на курс «Интенсив по программированию: Python за три месяца» в SkillFactory со скидкой 45% по промокоду","date":1676795507,"dateModified":1676795507,"blocks":[{"type":"text","cover":true,"hidden":false,"anchor":"","data":{"text":"
Начало обучения: 22 февраля. Записаться на курс со скидкой по промокоду PARTNER: skillfactory.ru/python-intensive
"}},{"type":"media","cover":true,"hidden":false,"anchor":"","data":{"items":[{"title":"Курс «Интенсив по программированию: Python за три месяца» в SkillFactory со скидкой 45%","image":{"type":"image","data":{"uuid":"9bb065e0-314d-57b5-b525-efc2f640a741","width":900,"height":548,"size":86018,"type":"png","color":"2d231b","hash":"","external_service":[]}}}]}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
На курсы вы получите нужные навыки и знания для трудоустройства + много практики. Чтобы стать востребованным специалистом, вам предстоит решить десятки задач от наших компаний-партнеров. Мы выстроили программу от простого к сложному, а каждую тему закрепили практикой.
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Преимущества обучения на курсе:
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
— Ускоренное обучение по программе полного курса: 3 месяца вместо 12.
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
— Упор на практику с первого месяца обучения.
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
— Средняя зарплата разработчика на Python от 100 000 ₽ в месяц.
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
— Доступ ко всем льготам для айтишников.
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
Подробнее об онлайн-школе SkillFactory: https://u4i.online/skillfactory
"}},{"type":"text","cover":false,"hidden":false,"anchor":"","data":{"text":"
#обучение #курсы #программирование #разработкасайтов #созданиесайтов #python #pythonprogramming #pythonlearning #pythondeveloper #django #курсыпрограммирования #школапрограммирования #sql #backend #backenddeveloper #fullstackdeveloper #fullstack #трудоустройство #скидки #sqldeveloper #docker #html #htmlcss #css #restapi #postgresql #redis #celery #database #bootstrap
"}}],"summaryContent":null,"isExistSummaryContent":false,"warningFromEditor":null,"warningFromEditorTitle":null,"counters":{"comments":0,"favorites":0,"reposts":0,"views":39,"hits":85,"reads":null,"online":0},"dateFavorite":0,"hitsCount":85,"isCommentsEnabled":true,"isLikesEnabled":true,"isRemovedByUserRequest":false,"isFavorited":false,"isPinned":false,"repostId":null,"repostData":null,"subscribedToTreads":false,"isEditorial":false,"isAudioAvailable":false,"audioUrl":null,"isAudioAvailableToGenerate":false,"commentEditor":{"enabled":true,"who":null,"text":"","until":null,"reason":null,"type":"everybody"},"isBlur":false,"isPublished":true,"isDisabledAd":false,"withheld":[],"ogTitle":null,"ogDescription":null,"url":"https://vc.ru/id1333114/612912-zapishites-na-kurs-intensiv-po-programmirovaniyu-python-za-tri-mesyaca-v-skillfactory-so-skidkoi-45-po-promokodu","author":{"id":1333114,"name":"U4i.Online","nickname":null,"description":"U4i.Online — обзоры и рейтинги онлайн-школ с дистанционными курсами обучения. Телеграм: @U4iOn.","uri":"","avatar":{"type":"image","data":{"uuid":"22cd7c32-d377-59a1-ab5f-f79b26e083ce","width":1436,"height":1436,"size":39500,"type":"png","color":"c30404","hash":"","external_service":[]}},"cover":null,"achievements":[{"title":"3 года на vc.ru","code":"registration_3_years","description":"Провёл 3 года вместе с vc.ru. Получена 31 октября 2025.","previewUuid":"d9d72ac5-bcb5-55e0-8c72-b99251e5cdd9","formats":{"glb":"https://static.vc.ru/achievements/shark.glb","usdz":"https://static.vc.ru/achievements/shark.usdz"},"viewData":{"contentColor":"#8E6F09","textMaxWidth":0.66796875,"textX":0.5205078125,"textY":0.341796875,"logoX":0.5205078125,"logoY":0.4609375,"logoXNoText":0.5,"logoYNoText":0.3662109375},"id":5997020,"userId":1333114,"count":0,"shareImage":"https://api.vc.ru/achievements/share/5997020"},{"title":"Год на vc.ru","code":"registration_1_year","description":"Первый год с vc.ru. Получена 24 июля 2025.","previewUuid":"0d11c244-49de-50e7-894e-b9b27945d42b","formats":{"glb":"https://static.vc.ru/achievements/fish.glb","usdz":"https://static.vc.ru/achievements/fish.usdz"},"viewData":{"contentColor":"#C67AA3","textMaxWidth":0.634765625,"textX":0.5888671875,"textY":0.54296875,"logoX":0.5859375,"logoY":0.6669921875,"logoXNoText":0.6044921875,"logoYNoText":0.5439453125},"id":4118144,"userId":1333114,"count":0,"shareImage":"https://api.vc.ru/achievements/share/4118144"}],"lastModificationDate":1764936596,"isSubscribed":false,"isSubscribedToNewPosts":false,"isMuted":false,"isAvailableForMessenger":true,"badgeId":null,"isDonationsEnabled":false,"isPlusGiftEnabled":true,"isUnverifiedBlogForCompanyWithoutPro":true,"isRemovedByUserRequest":false,"isFrozen":false,"isDisabledAd":false,"isPlus":false,"isVerified":false,"isPro":false,"yandexMetricaId":null,"badge":null,"isOnline":false,"tgChannelShortname":null,"isUnsubscribable":true,"type":1,"subtype":"personal_blog"},"subsite":{"id":1333114,"name":"U4i.Online","nickname":null,"description":"U4i.Online — обзоры и рейтинги онлайн-школ с дистанционными курсами обучения. Телеграм: @U4iOn.","uri":"","avatar":{"type":"image","data":{"uuid":"22cd7c32-d377-59a1-ab5f-f79b26e083ce","width":1436,"height":1436,"size":39500,"type":"png","color":"c30404","hash":"","external_service":[]}},"cover":null,"achievements":[{"title":"3 года на vc.ru","code":"registration_3_years","description":"Провёл 3 года вместе с vc.ru. Получена 31 октября 2025.","previewUuid":"d9d72ac5-bcb5-55e0-8c72-b99251e5cdd9","formats":{"glb":"https://static.vc.ru/achievements/shark.glb","usdz":"https://static.vc.ru/achievements/shark.usdz"},"viewData":{"contentColor":"#8E6F09","textMaxWidth":0.66796875,"textX":0.5205078125,"textY":0.341796875,"logoX":0.5205078125,"logoY":0.4609375,"logoXNoText":0.5,"logoYNoText":0.3662109375},"id":5997020,"userId":1333114,"count":0,"shareImage":"https://api.vc.ru/achievements/share/5997020"},{"title":"Год на vc.ru","code":"registration_1_year","description":"Первый год с vc.ru. Получена 24 июля 2025.","previewUuid":"0d11c244-49de-50e7-894e-b9b27945d42b","formats":{"glb":"https://static.vc.ru/achievements/fish.glb","usdz":"https://static.vc.ru/achievements/fish.usdz"},"viewData":{"contentColor":"#C67AA3","textMaxWidth":0.634765625,"textX":0.5888671875,"textY":0.54296875,"logoX":0.5859375,"logoY":0.6669921875,"logoXNoText":0.6044921875,"logoYNoText":0.5439453125},"id":4118144,"userId":1333114,"count":0,"shareImage":"https://api.vc.ru/achievements/share/4118144"}],"lastModificationDate":1764936596,"isSubscribed":false,"isSubscribedToNewPosts":false,"isMuted":false,"isAvailableForMessenger":true,"badgeId":null,"isDonationsEnabled":false,"isPlusGiftEnabled":true,"isUnverifiedBlogForCompanyWithoutPro":true,"isRemovedByUserRequest":false,"isFrozen":false,"isDisabledAd":false,"isPlus":false,"isVerified":false,"isPro":false,"yandexMetricaId":null,"badge":null,"isOnline":false,"tgChannelShortname":null,"isUnsubscribable":true,"type":1,"subtype":"personal_blog"},"reactions":{"counters":[],"reactionId":0},"isNews":false,"source":null,"clusters":[],"donations":{"amount":0,"isDonated":false},"commentsSeenCount":null}}],"ogTitle":null,"ogDescription":null,"isAnonymized":true}};