company_banner
  • Бразилия, темная магия, Mortal Kombat, Марс и 15000 человек. Итоги года Онтико

      Сальса, румба, капоэйра, яркие костюмы, энергичная бразильская музыка — в SAP Digital Space проходит бразильский карнавал. Продакты, управляющие и директора IT-компаний несколько минут назад слушали как захватывать рынки, строить программу обучения и анализировать данные, и вот они подтанцовывают в такт музыке, фотографируются и улыбаются. Так завершился Product Fest, последняя конференция Онтико в 2019 году. Это значит, что пришло время подвести итоги: осознать, что произошло, посмотреть назад, вспомнить интересные моменты и провести ретроспективу.


      Читать дальше →
    • Метрики — индикаторы здоровья проекта

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



        Под катом Руслан Остропольский (RusOstropolsky) расскажет всё о метриках, которые являются индикаторами здоровья IT-систем. Разберет, какие бывают метрики, как они меняются по мере развития проекта, какие в каком проекте лучше применять. Объяснит, как качество и бизнес помогают друг другу с точки зрения метрик и зачем нужна эта коллаборация.
        Читать дальше →
        • +26
        • 9,8k
        • 2
      • Самое интересное в PHP 8

          PHP 7.4 только-только объявлена stable, а нам уже подавай еще больше усовершенствований. И лучше всех о том, что ждет PHP, может рассказать Дмитрий Стогов — один из ведущих разработчиков Open Source PHP и, наверное, старейший активный контрибьютор.

          Все доклады Дмитрия только о тех технологиях и решениях, над которыми он работает лично. В лучших традициях Онтико под катом текстовая версия рассказа о самых интересных с точки зрения Дмитрия нововведениях PHP 8, которые могут открыть новые use-case-ы. В первую очередь JIT и FFI — не в ключе «потрясающих перспектив», а с подробностями реализации и подводными камнями.


          Для справки: Дмитрий Стогов познакомился с программированием в 1984, когда еще далеко не все из читателей появились на свет, и успел внести существенный вклад в развитие инструментов разработки, и PHP в частности (хоть Дмитрий повышает производительность PHP не специально для российских разработчиков, они выразили свою благодарность в виде Премии HighLoad++). Дмитрий автор Turck MMCache для PHP (eAccelerator), майнтейнер Zend OPcache, лидер проекта PHPNG, легшего в основу PHP 7, и лидер разработки JIT для PHP.
          Читать дальше →
        • Как китайские стратагемы помогают в работе

            Наша повседневная работа часто похожа на череду противостояний. Мы «воюем» с заказчиками и другими командами, с тестировщиками и коллегами, а отделы внутри компании соперничают друг с другом. Мы боремся за зарплату, принятие удобных технических решений, сроки и тысячи других вещей. В этой череде конфликтов тимлид — это лидер небольшой боевой единицы, команды. Он знает слабые и сильные стороны каждого «рядового», координирует и организует их работу, чтобы достичь целей с минимальными потерями.

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



            Алексей Золотых (zolotyh) — тимлид в Infobip. Алексей использует в своей работе правила ведения войны древнего Китая. Из статьи на основе его доклада на Saint TeamLead 2019, вы узнаете, как стратагемы помогают в жизни тимлида: как помириться с разработчиком внутри команды, как завоевать авторитет среди коллег, как отстоять свое мнение, зачем жертвовать сливой, ругать акацию, прикидываться безумным и бить по траве.
            Читать дальше →
            • +21
            • 6,8k
            • 5
          • Как правильно использовать доступный объем хранилища

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



              Для облачного сервиса все иначе — у него возникают проблемы хранения данных. Каждая игра может весить десятки или сотни гигабайт, например, «Ведьмак 3» занимает 50 Гбайт, а «Call of Duty: Black Ops III» — 113. При этом игроки не будут пользоваться сервисом с 2-3 играми, как минимум нужно несколько десятков. Кроме хранения сотен игр, сервису нужно решать, какой объем хранилища выделять на одного игрока, и масштабироваться, когда их будут тысячи.

              Хранить ли все это на своих серверах: сколько их нужно, где ставить дата-центры, как «на лету» синхронизировать данные между несколькими дата-центрами? Покупать «облака»? Использовать виртуальные машины? Можно ли хранить данные пользователей со сжатием в 5 раз и предоставлять их в real-time? Как исключить любое влияние пользователей друг на друга при последовательном использовании одной и той же виртуальной машины?

              Все эти задачи успешно удалось решить в Playkey.net — облачной игровой платформе. Владимир Рябов (Graymansama) — руководитель отдела системного администрирования — подробно расскажет о технологии ZFS для FreeBSD, которая в этом помогла, и ее свежем форке ZOL (ZFS on Linux).
              Читать дальше →
              • +20
              • 3,9k
              • 3
            • Официальная позиция Программных комитетов Highload++ и других IT-конференций на претензии к Игорю Сысоеву…

                Вручение премии HighLoad++ Игорю Сысоеву в 2018 году

                Официальная позиция Программных комитетов Highload++ и других IT-конференций на претензии к Игорю Сысоеву и Максиму Коновалову


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


                Мы выражаем свою поддержку Игорю, и хотим особо отметить его вклад в развитие отрасли, Игорь заложил фундамент для качественной работы более 80% всех высоконагруженных ресурсов Рунета. Он и его продукт стали тем катализатором, который позволил российским сервисам быть конкурентоспособными на мировом рынке и занимать лидирующие позиции в вопросах разработки проектов, выдерживающих большую нагрузку.


                Мы учреждаем премию, вручаем её лучшим разработчикам, всячески поддерживая и рассказывая о любых разработках, к которым имеют отношение российские программисты. И что получаем в итоге? Один из игроков рынка, оказывается, не заинтересован в развитии этого рынка.


                Также хотим отметить, что претензии к open source продуктам в целом, и к nginx, в частности, ставят под сомнение экономическую безопасность крупнейших российских и мировых сервисов, использующих nginx и другие open source-продукты. К тому же, подобные действия негативно повлияют на инвестиционный климат в IT-отрасли России и могут привести к деградации самой отрасли.


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


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

                Читать дальше →
              • Видеозвонки под капотом: от миллионов в сутки до 100 участников в одной конференции

                  Сейчас, кажется, невозможно найти мессенджер без функции звонков. Это удобно для пользователей, потому что все коммуникации можно вести в одном приложении. Если объединить всю доступную в СМИ статистику, то получится, что люди разговаривают через интернет более миллиарда минут в день. И по мере развития технологий растет доля видеосвязи, потому что видео лучше передает эмоции собеседника и позволяет создать эффект присутствия.

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

                  Руководитель разработки платформ Видео и Лента Александр Тоболь (alatobol) покажет, что под капотом у сервиса видеозвонков, какие технологии и хаки применить, чтобы сделать свой сервер конференций, и как правильно передавать видео. Заходите под кат и узнаете, как перевести сервис звонков один на один к групповым звонкам на 100 человек и зачем вообще нужна поддержка такого количества участников.
                  Читать дальше →
                  • +45
                  • 5,1k
                  • 2
                • Elixir как цель развития для python async

                    В книге «Python. К вершинам мастерства» Лучано Рамальо описывает одну историю. В 2000 году Лучано проходил курсы, и однажды в аудиторию заглянул Гвидо ван Россум. Раз подвернулся такой случай, все стали задавать ему вопросы. На вопрос о том, какие функции Python заимствовал из других языков, Гвидо ответил: «Все, что есть хорошего в Python, украдено из других языков».

                    Это действительно так. Python давно живет в контексте других языков программирования и впитывает концепции из окружения: asyncio позаимствован, благодаря Lisp появились лямбда-выражения, а Tornado скопировали с libevent. Но если у кого и стоит заимствовать идеи, так это у Erlang. Он создан 30 лет назад, и все концепции в Python, которые сейчас реализуются или только намечаются, в Erlang давно работают: многоядерность, сообщения как основа коммуникации, вызовы методов и интроспекция внутри живой системы на продакшн. Эти идеи в том или в ином виде находят своё проявление в системах вроде Seastar.io.


                    Если не брать во внимание Data Science, в котором Python сейчас вне конкуренции, то все остальное уже реализовано в Erlang: работа с сетью, обработка HTTP и веб-сокетов, работа с базами данных. Поэтому Python-разработчикам важно понимать, куда будет двигаться язык: по дороге, которую уже прошли 30 лет назад.

                    Чтобы разобраться в истории развития других языков и понять, куда двигается прогресс, мы пригласили на Moscow Python Conf++ Максима Лапшина (erlyvideo) — автора проекта Erlyvideo.ru.

                    Под катом текстовая версия этого доклада, а именно: в каком направлении вынуждена развиваться система, которая продолжает мигрировать от простого линейного кода к libevent и дальше, что общего и в чем отличия между Elixir и Python. Отдельное внимание уделим тому, как на разных языках программирования и платформах управлять сокетами, потоками исполнения и данными.
                    Читать дальше →
                  • Трансформация. Управление как компетенция

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



                      «Что за странная задача, какая функция? Просто берем синьора, назначаем тимлидом и готово!» Но мы знаем, что когда хорошего технического специалиста пытаются перевести в касту менеджеров, чаще теряют хорошего технаря и приобретают плохого менеджера. Все потому, что тимлид это именно менеджер: ему нужно управлять людьми, организовывать командную работу и решать самые разные проблемы. Здесь нужен набор навыков руководителя и новые шаблоны поведения, а технические скилы часто мешают.

                      Чтобы разобраться в задаче трансформации технического специалиста в руководителя, нам нужен человек, который знает о тимлидах практически все — это Дмитрий Смирягин. Дмитрий 20 лет в разработке ПО, из них 15 лет руководил группами архитектуры, разработки и внедрения продуктовых решений для 20th Century Fox, Wells Fargo Bank, Zurich Insurance, BoA и подразделениями производства ПО полного цикла, от аналитики до поддержки решений. Работал разработчиком, тимлидом и руководителем тимлидов, а сейчас обучает последние две группы и консультирует по вопросам IT-управления. Это идеальный опыт, чтобы решить нашу задачу — приступим.
                      Читать дальше →
                      • +19
                      • 8,4k
                      • 6
                    • Школа магии PHP

                        Что такое магия в PHP? Обычно под этим подразумевают методы вроде _construct() или __get(). Магические методы в PHP — это лазейки, которые помогают разработчикам выполнять удивительные вещи. В сети полно инструкций по их использованию, с которыми вы наверняка знакомы. Но что если мы скажем, что вы даже не видели настоящую магию? Ведь, чем больше вам кажется, что вы знаете все, тем больше магии ускользает от вас.



                        Давайте отбросим установленные рамки правил ООП и сделаем невозможное возможным в школе магии PHP. Главный и первый волшебный преподаватель школы — Александр Лисаченко (NightTiger). Он научит магическому мышлению и, возможно, вы полюбите магические методы, нестандартные способы доступа к свойствам, изменение контекстов, аспектно-ориентированное программирование и потоковые фильтры.

                        Читать дальше →
                      • Системный подход в бирюзовых тонах при онбординге джунов

                          Мы уже писали о ключевых темах, которые планируем осветить на ближайшей пятой тусовке тимлидов в Москве — TeamLead Conf 2020. В этот раз, выбирая их, мы с программным комитетом конференции в большей степени ориентировались на сообщество, чем когда бы то ни было. Мы общались с участниками, изучали опросы, мониторили чатики и каналы, статьи на Хабре, ловили обратную связь от коллег по цеху — и нашли самые больные темы этого сезона. Они уже встречались на наших прошлых конференциях, но скорее вскользь, а в этот раз мы попросили докладчиков делать акценты в своих выступлениях именно на эти направления.

                          TL;DR, но оно того стоит, уверяю вас.



                          Темы на картинке и подробнее ниже, а пока немного расскажу о том, что будет помимо докладов: мы решили сделать много интерактивных мероприятий, тренингов и воркшопов. Пригласили именитых тренеров, специалистов в области софт-скилов и попросили провести полноценные мастер-классы на несколько часов. Давно ли вы посещали сессию групповой депрокрастинации на 200 человек? Или мастер-класс по фасилитации и приведению команды к принятию решения? А может быть вы уже проходили спецкурс Онтико и слушали автора феерических картинок и мегаслайдов к очень известным книгам и большого специалиста в области публичных выступлений? Или вы были студентами самой большой онлайн-школы по менеджменту и бывали на мероприятиях её основателей? Кроме того, по традиции у нас будет два трека крутейших докладов, два зала митапов, которые предлагают наши с вами коллеги, и нон-стоп коучинг-сессия по самоопределению от наших давнишних друзей и партнёров Aletheia Business. Зоны для бесконечного общения с бесконечным кофе и булочками — неприкосновенный must have. Готовьтесь сгонять килограммы после. Они реально вкусные:)

                          Интрига есть. Детали последуют.
                          Читать дальше →
                          • +24
                          • 4,3k
                          • 2
                        • Если бы на Марсе были города… Что бы там делали люди с HighLoad++?

                            7 ноября в Конгресс-Холле СКОЛКОВО состоялось награждение лауреатов Премии HighLoad++ 2019. В этот раз номинантов и победителей выбирали не только эксперты, но и представители IT-сообщества.

                            И мы тут подумали: в СКОЛКОВО HighLoad++ вмещается уже с трудом. Надо менять формат конференции или площадку (а с ней и формат)… Вполне возможно, что совсем скоро выбора не останется — придётся лететь на Марс, организовывать там IT-колонию и движуху вокруг неё.


                            Мы уверены, что победители премии HighLoad++ 2019 вполне смогут организовать IT-отрасль на отдельно взятой планете. И решили прикинуть, что делали бы эти 9 человек в роли отцов-основателей гипотетической колонии на Марсе. Работы там много. А за плечами каждого из этих людей стоит сильная команда инженеров и разработчиков. В общем, представьте себе…
                            Читать дальше →
                          • По следам русского Scala-движа. Часть 3

                              Это заключительная часть расследования о Scala-движении в России. В первой части я узнал от Романа Гребенникова о воронежском бомонде, C++ и Erlang, а от Романа Тимушева о первой Akka и рождении московских митапов. Во второй части побеседовал с Александром Подхалюзиным и Михаилом Муцянко: знакомство со Scala, 2007-й, Scala Days, Scala Native, переход в Kotlin, чем Scala хороша для банков, первые ивенты в Санкт-Петербурге, Eclipse, Jason Zaugg, IDE и Scala Plugin.



                              Во время подготовки второй части Владимир Успенский (vuspenskiy) направил меня к Александру Подхалюзину, с которым мы записали огромное интервью. На следующий день я получил от Владимира сообщение, но теперь уже с его личной историей: Qiwi, Scala в Тинькофф, первые встречи, ссылки на старые блоги (отдельное спасибо за это), и функциональщина из 2008 от Rúnar, которая исполняется на Java, — это та еще кровь из глаз как минимум необычно. В дополнение — истории Романа Елизарова, Алексея Фомкина и Николая Татаринова. Особенности найма Scala-разработчиков, курсы на Coursera, «идеальный код», «демоническая» компиляция, дизайн в Kotlin, 10 000 строк кода, интернет-банк Тинькофф, опять Тинькофф, Play Framework, скончавшийся Flash, «Восход» и питерские митапы — обо всем этом в заключительной части трилогии под катом.
                              Читать дальше →
                            • Зачем айтишнику личный бренд

                                Слово «бренд» часто связывают с материальной выгодой. HR-бренд позволяет эффективнее нанимать, а личный бренд — наниматься. А еще у личного бренда есть одно неочевидное преимущество, которое никак не связано с качеством/посылом/стратегией личного бренда. Неважно, знают вас как щепетильного перфекциониста или любителя хайпа, вы получаете свои плюшки и становитесь лучшим программистом.



                                Под катом бытовая нейрофизиология для айтишников и традиционно ошибающийся здравый смысл.
                                Читать дальше →
                              • Аутентификация устройств на Linux по аппаратному ключу в системах верхнего уровня

                                  Industrial IoT — это мониторинг, диспетчеризация и автоматизация инженерных систем промышленных объектов, зданий, бизнес-объектов. Датчики разных параметров, счетчики и контроллеры собирают данные с этих объектов, например, температуру и влажность воздуха в серверной, показания счетчиков воды в многоквартирных домах, уровень углекислого газа в помещениях. Контроллеры обрабатывают эту информацию и отправляют все в «облако».

                                  Компания Wiren Board производит контроллеры с Linux для industrial IoT. Устройства собирают данные с нефтедобывающих скважин и банковских отделений, следят за микроклиматом в серверных и супермаркетах. Контроллеры интегрируются с системами верхнего уровня партнеров компании. Системы аутентифицируют устройства — понимают, что разговаривают со своим датчиком, а не с чужим, а потом авторизуют. На этом этапе возникает проблема — контроллеров тысячи, клиентов сотни, а единой системы интеграции нет. Простые традиционные способы, например, пары логин/пароль, уязвимы к атакам и неудобны в развёртывании.



                                  Поэтому в компании разработали аутентификацию в системах верхнего уровня по аппаратным ключам — на основе стандартной асимметричной криптографии с использованием аппаратного защищённого элемента для хранения ключей. Теперь единая система интеграции не нужна —аутентификация и авторизация защищены, и работают «из коробки». Как это удалось сделать расскажет Евгений Богер: как выбирали «крипточип», как прикручивали его к железу и к Linux, как заставили с ним дружить распространённые библиотеки и ПО. Особый упор на развёртывание: внедрение инициализации устройств на производстве, внедрение поддержки разного софта верхнего уровня, в том числе в чужого и закрытого.
                                  Читать дальше →
                                  • +23
                                  • 5,3k
                                  • 9
                                • Открытая трансляция Главного зала HighLoad++ 2019

                                    В эфире главное событие для разработчиков высоконагруженных систем. По хорошей традиции 7 и 8 ноября мы собираемся, чтобы делиться опытом в построении веб-сервисов, позволяющих одновременно помогать десяткам, сотням тысяч пользователей решать свои задачи. Если в этот раз мы с вами не увидимся в СКОЛКОВО, подключайтесь к открытой трансляции Главного зала конференции.

                                    Открытая трансляция первого дня конференции HighLoad++


                                    7 ноября трансляция докладов начинается в 9:45, в 18:00 они закончатся, и начнется церемония вручения Премии HighLoad++.

                                    Открытая трансляция второго дня конференции HighLoad++


                                    8 ноября первый доклад в Главном зале и трансляция начинается в 11:00.



                                    Под катом расписание и информация о докладах.
                                    Читать дальше →
                                  • ScalaConf 2019 — проповедник Джон, Святой Грааль и «Профессор Hаskell»

                                      26 ноября в Инфопространстве пройдет ScalaConf 2019 — профессиональная конференция для Scala-разработчиков. Возможно, первая в России. Накануне события мы попросили Вадима Челышова (dos65), руководителя ПК ScalaConf 2019, рассказать о докладах и концепции конференции.



                                      Вот, что мы узнали: на конференции нас ждет проповедник функционального программирования, четыре англоязычных доклада, новый инструмент, который решит проблемы дата-инженеров, доклад о том, почему Scala Plugin несовместим со Scala-компилятором, «Профессор Haskell» и много функционального программирования. Также мы поговорили о границах развития Scala-разработчика, почему среди них нет джунов, о «холиваре» между Scala и Haskell, и об информационном «пузыре» коммьюнити. Подробности под катом.
                                      Читать дальше →
                                    • Базы данных на HighLoad++ 2019

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

                                        А если все сделать по уму, то получится обрабатывать запросы многих тысяч пользователей. Поэтому в расписании HighLoad++ традиционно много докладов по базам данных. У нас есть треки по PostgreSQL, MySQL и ClickHouse, есть несколько докладов по MongoDB (в лучших традициях спикер —инженер по производительности в MongoDB). Кроме того, есть выступления, посвященные сравнению разных подходов или рассматривающие специализированные решения. И для общности прибавим сюда Tarantool и in-memory. Итого 33 доклада прямо относятся к секции «Базы данных и системы хранения» и как минимум 10 — косвенно. И это не считая митапов, которых уже не меньше десяти, а еще будут добавляться новые по ходу дела.

                                        Попробуем помочь сориентироваться во всем многообразии и не пропустить действительно уникальные доклады. Для надежности спросим мнения у члена Программного комитета, отвечающего за эту секцию, Николая Самохвалова. И не смотрите, что Николай основатель Postgres.ai и вообще postgresmen — он отлично ориентируется в мире БД, знает любопытные закулисные истории и тренды.
                                        Читать дальше →
                                      • Семантика средств разрешения зависимостей

                                        • Перевод

                                        Средство разрешения зависимостей


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


                                        Ограничения обычно задаются именами модулей и номерами версий. В экосистеме JVM для модулей Maven будет ещё указано наименование организации (group id). Кроме того, ограничения могут содержать диапазоны версий, исключаемые модули, переопределения версий и т.п.


                                        Три основных категории пакетов представлены OS-пакетами (Homebrew, Debian-пакеты, и т.п.),
                                        модулями для конкретных языков программирования (CPAN, RubyGem, Maven, etc) и расширения, специфичные для приложения (Eclipse plugins, IntelliJ plugins, VS Code extensions).

                                        Читать дальше →
                                        • +12
                                        • 1,5k
                                        • 1
                                      • Распределенное логирование и трассировка для микросервисов

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

                                          Если логирование хорошо организовано, то позволяет понимать, что, когда и как идет не так, как задумано, и передавать нужную информацию людям, которым предстоит эти ошибки исправлять. Для системы, в которой каждую секунду отправляется 100 тысяч сообщений в 10 дата-центрах на 190 стран, а 350 инженеров каждый день что-то деплоят, система логирования особенно важна.



                                          Иван Летенко — тимлид и разработчик в Infobip. Чтобы решить проблему централизованной обработки и трассировки логов в микросервисной архитектуре при таких огромных нагрузках, в компании пробовали различные комбинации стека ELK, Graylog, Neo4j и MongoDB. В итоге, спустя много грабель, написали свой лог-сервис на Elasticsearch, а как БД для дополнительной информации взяли PostgreSQL.

                                          Под катом подробно, с примерами и графиками: архитектура и эволюция системы, грабли, логирование и трассировка, метрики и мониторинг, практика работы с кластерами Elasticsearch и их администрирования в условиях ограниченных ресурсов.
                                          Читать дальше →
                                          • +36
                                          • 8,3k
                                          • 3

                                        Самое читаемое