• «В карантин нагрузка выросла в 5 раз, но мы были готовы». Как Lingualeo переехал на PostgreSQL с 23 млн юзеров

      image

      Проекту Lingualeo уже 10 лет. Более 23 миллионов человек из России, Турции, Испании и стран Латинской Америки учат с помощью нашего сервиса английский.

      LinguaLeo создавали в конце нулевых – начале десятых годов и использовали передовые на тот момент технологии и методы. Но прошло время, и они сильно устарели. Так что мы решили, что систему пора обновить.

      Мы попросили нашего лидера бэкэнд разработки, Олега Правдина, рассказать о том, как они с командой параллельно с поддержкой основного продукта собрали новую модульную структуру сервиса на базе PostgreSQL, перенесли бизнес-логику в базы данных и провели миграцию с миллионами пользователей.

      Проблемы зрелого продукта


      «Я пришёл в Lingualeo в августе 2018 руководить бэкэнд разработкой. Тогда бэком занималась команда из 8 разработчиков и 2 админов, которые обслуживали монолит на 1 миллион строк кода преимущественно на PHP. Чтобы внедрить даже небольшую новую фичу, уходило 2 месяца. А затраты на инфраструктуру на 10 000 активных пользователей превышали 1 000 $ в год.

      Как это произошло? Дело в том, что за 10 лет в проекте сменилось несколько команд разработки. Приходили новые люди, как и я, они по-своему добавляли новые модули и фичи. Команды менялись, новички не всегда понимали, как работают старые части системы, в итоге код Lingualeo постепенно превратился в чёрный ящик: непрозрачная логика в бэкенде, перегруженный фронт, обилие костылей, большие пробелы в документации.

      Всего у нас в штате было 20 разработчиков, но развивать продукт было невозможно: если что-то добавить, вылезали неожиданные проблемы. У команды уходило 2–3 недели, чтобы всё починить. Разработчики занимались поддержкой кода из 2013 года, и ресурсов на обновление функциональности не было.
      Читать дальше →
    • Kubernetes в переводе на детский



        CNCF — созданная при фонде The Linux Foundation международная организация, занимающаяся развитием и продвижением Open Source технологий, которые используются для построения и функционирования инфраструктур, предназначенных для запуска облачных приложений. Но это вы, наверное, и так знаете. Зато, возможно, вы не знали, что CNCF «балуется» издательством книг. Более того, книг для детей. Более того, книг для детей про современные IT-технологии! Перед Новым годом нам попалась одна из них — «The Illustrated Children’s Guide to Kubernetes». И она оказалась такой милой, что даже самые суровые из наших коллег светлели взглядом, листая виртуальные странички.

        «Ого, — подумали мы. — Это же так круто!» Конечно, круто: детская иллюстрированная книжка, где на примере историй смешных персонажей простыми словами объясняется, что такое Kubernetes. А ведь K8s — давным-давно уже вездесущее настоящее в мире IT… Вот мы и решили, что нашим детям пора бы знать, чем занимаются их родители. Решили — и перевели книгу на русский язык.
        Читать дальше →
      • Про Бурали-Форти, Пуанкаре и то самое определение единицы

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

          image

          Наверняка также вы задавались вопросом: что, чёрт подери, здесь написано? Формула из этой цитаты интересна тем, что у человека, имеющего высшее математическое образование, этот вопрос возникает столь же неумолимо, как и у любознательного семиклассника. У нелюбознательных семиклассников несколько иной круг интересов, выходящий за рамки данной статьи; однако даже они не откажут себе в удовольствии похихикать над «этими чокнутыми ботаниками», или как оно там формулируется на современном молодёжном сленге.

          В нижеследующем тексте я раскрою перед вами тайну этого загадочного сочетания символов. Пожалуйте под кат, однако помните поучительную историю о любопытной Варваре, которой на базаре рассказали про парадокс Банаха-Тарского, отчего она сошла с ума, разрезала себе нос на конечное количество частей и склеила из них рогатую сферу Александера.
          N.B. Я предупреждал.
        • Завтра мы начнём вас убивать, или Зачем нужны инженеры

            Привет, Хабр. Под этим пафосным заголовком я бы хотел поговорить о том, что такое «инженерная наука», в чём состоит главная обязанность инженера и что бывает, если он с ней не справляется — мне кажется, в последнее время эта тема становится всё более актуальной, при этом её публичного обсуждения я не вижу.

            Сподвигла меня на это разразившаяся (при моём активном участии) в минувшие выходные история с «нейроинтерфейсами» компании Bitronics Lab — детскими учебными наборами для снятия ЭЭГ и мышечной активности, которые при ближайшем рассмотрении оказались попросту небезопасны в использовании из-за несоблюдения их производителем базовых требований к электробезопасности медицинского оборудования.

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

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

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



            Казалось бы, что может пойти не так?
            Читать дальше →
          • Debian 9: что нового



              17 июня 2017 года вышла в свет новая, девятая версия Debian под кодовым названием Stretch. Работа над Debian 9 длилась два с небольшим года, а если совсем точно — 26 месяцев. Она будет поддерживаться в течение ближайших пяти лет.

              Новая версия посвящена памяти основателя проекта Debian Иэна Мёрдока, погибшего в конце 2015 года.


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

              Кроме того, у нас есть ещё одна новость, не менее важная: образ Debian 9 уже доступен пользователям наших облачных сервисов — Vscale и Virtual Private Cloud, и вы можете познакомиться с ним поближе прямо сейчас.

              Читать дальше →
            • 12 навыков создания защищенных веб-приложений

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

                Большинство примеров кода не привязаны к какому-либо конкретному языку программирования, но для наглядности я буду использовать PHP.

                Итак, поехали.

                Читать дальше →
              • Наводим порядок: как организовать работу в ходе создания сайта. (Часть 1)

                • Translation
                Немного не по теме

                Заручившись согласием ilusha_sergeevich мы планируем размещать на Хабре переводы некоторых статей, ссылки на которые он приводит в публикациях «Несколько интересностей и полезностей для веб-разработчика» в разделе «Западные мысли или что стоило бы перевести на Хабре». На самом старте этого начинания мы хотим поинтересоваться у сообщества о степени его целесообразности (опрос в конце статьи).

                Собственно, сам текст

                К сожалению, мы использовали слово «организовать» в названии. «Тушите свет» — это, вероятно, то, о чем подумали многие. Организованность – это немного скучно, но крайне важно. Возможно, стоит рассмотреть это понятие в контексте.

                Давайте представим, что мы делаем сайт для модного арт-кафе «Beat». Это атмосферное место с картинами 20-х годов на стенах, живым джазом и богатым покровителем, но у них все еще нет собственного сайта. Они нанимают вас, чтобы исправить ситуацию. Как талантливый дизайнер, вы уверены, что сможете создать фантастический сайт, но у них есть множество идей о функционале и вы не совсем уверены в том, как организовать все файлы, необходимые для вашего сайта.
                Читать дальше →
              • UNIX-подобные системы содержат кучу костылей. Крах «философии UNIX»

                  UPD от 2017-03-04: кто-то выполнил английский перевод. Обсуждение на Hacker News.

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

                  Костыли в UNIX начали возникать ещё с момента появления UNIX, а это было ещё раньше появления не только Windows, но даже вроде бы Microsoft DOS (вроде бы, мне лень проверять, проверяйте сами). Если лень читать, хотя бы просмотрите все пункты, что-нибудь интересное найдёте. Это далеко не полный список, это просто те косяки, который я захотел упомянуть.
                  Читать дальше →
                • Загрузка данных в Google Analytics: три способа узнать о вашей рекламе больше

                    Если бы нас спросили, что же главное в аналитике, то одним из пунктов мы бы назвали сравнение данных: статистики рекламных кампаний, сегментов пользователей, показателей эффективности. Сравнение позволяет создавать предложения для каждого сегмента рынка. В этом контексте ценна возможность агрегации и сопоставления данных по контекстной рекламе на всех площадках. Данные Google AdWords и Яндекс.Директ часто отличаются, и сравнительный анализ показателей наталкивает на новые нестандартные решения для маркетинговых активностей. Предлагаем поговорить о системах загрузки данных в интерфейс главного инструмента веб-аналитики — Google Analytics.


                    Читать дальше →
                  • Что такое SBC (Пограничный Контроллер Сессий) и зачем он нужен

                      Рынок пограничных контроллеров сессий с каждым годом набирает обороты, при этом для многих в области VoIP данное устройство остаётся неким вопросом – а зачем он нужен и где его правильно применять. Собственно, хотелось бы описать те функции и задачи, которые выполняет данное оборудование и почему установка данного устройства, если не обязательно, то уж точно крайне желательно на сети VoIP.
                      Пойдём от простого к сложному. Для начала определим те самые три функции, которые SBC выполняет на сети заказчика.

                      1. Безопасность
                      2. Совместимость
                      3. Обеспечение и контроль качества

                      читать дальше...
                    • Китайцы — они такие китайцы

                        Сей пост навеян неожиданным для меня интересом хабранаселения к посту уважаемого Milfgard из Мосигры про производство в Китае. Дело в том, что один из моих интересов как раз в производстве батарей – Denaq. И производство расположено ну конечно же в Китае. Я не стану рассказывать про организацию производства, там свои замечательные фокусы есть. Я расскажу именно про заказ чего-то под себя и покупку всякого опта. Что-то вроде алгоритма украшенного реальными историями из личного опыта. Это все будет про электронику, так как я сам именно ею занимаюсь. Истории и иллюстрации я буду выделять курсивом. Кому скучно читать общие выводы – читайте только их.
                        Читать дальше →
                      • Парсим на Python: Pyparsing для новичков

                        Парсинг (синтаксический анализ) представляет собой процесс сопоставления последовательности слов или символов — так называемой формальной грамматике. Например, для строчки кода:

                        import matplotlib.pyplot  as plt
                        

                        имеет место следующая грамматика: сначала идёт ключевое слово import, потом название модуля или цепочка имён модулей, разделённых точкой, потом ключевое слово as, а за ним — наше название импортируемому модулю.

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

                        { 'import': [ 'matplotlib', 'pyplot' ], 'as': 'plt' }
                        

                        Данное выражение представляет собой словарь Python, который имеет два ключа: 'import' и 'as'. Значением для ключа 'import' является список, в котором по порядку перечислены названия импортируемых модулей.

                        Для парсинга как правило используют регулярные выражения. Для этого имеется модуль Python под названием re (regular expression — регулярное выражение). Если вам не доводилось работать с регулярными выражениями, их вид может вас испугать. Например, для строки кода 'import matplotlib.pyplot as plt' оно будет иметь вид:

                        r'^[ \t]*import +\D+\.\D+ +as \D+'
                        

                        К счастью, есть удобный и гибкий инструмент для парсинга, который называется Pyparsing. Главное его достоинство — он делает код более читаемым, а также позволяет проводить дополнительную обработку анализируемого текста.

                        В данной статье мы установим Pyparsing и создадим на нём наш первый парсер.

                        Читать дальше →
                      • Как подобрать платье с помощью метода главных компонент

                        • Translation
                        Итак, кто не против, чтобы одежду ему подбирала программа, машина, нейросеть?

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

                        image
                        Читать дальше →
                      • Почему IDEA лучше Eclipse

                          Священный спор


                          Принято считать, что есть «вечные» вопросы, на которые нет правильного ответа. Например, что лучше: Windows или Linux, Java или C#; Чужой против Хищника или Чак Норрис против Ван Дамма.

                          Одним из таких холиваров считается выбор лучшей IDE для Java:


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

                          Так вот, я утверждаю, что это не просто дело вкуса. Есть объективные причины, почему
                          Intellij IDEA однозначно лучше, чем Eclipse.

                          Подчёркиваю, мы сейчас рассматриваем обе среды именно как Java IDE.

                          Я не буду приводить кучу мелких различий вроде плагинов, горячих клавиш и т.п. — этому посвящены многие страницы в интернете, а объясню лишь одно, самое главное отличие. Как правило, о нём не знают ни идеяшники, ни эклипсофилы, ибо первые привыкли к нему и не знают, что в других IDE этого может и не быть, а вторые привыкли жить без него, и даже не догадываются, что может быть лучше. Более того, эклипсники его не замечают, когда пробуют IDEA ради интереса, ибо привыкли работать по-старому.

                          Итак, главное различие между IDEA и Eclipse
                        • Как закрыть Интернет в России

                            Начнём с источников:
                            • Проект развития мультисервисных сетей в России на ближайшие годы, усилиями Минкомсвязи: minsvyaz.ru/ru/discussions/index.php?id=41
                            • Разбор и обсуждение оного с эвфимизмами в отношении существующих телекомов: www.kipchatov.ru/blog/?p=1151 (очень рекомендуется к прочтению)

                            Для скучающего читателя выписываю самую жаренную часть.

                            По планам минкомсвязи ожидается изменение провайдерского рынка — все операторы делятся на «федеральных операторов связи» и плебейских просто операторов связи.

                            При этом:

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

                            Самим федеральным операторам связи ставится в обязательство присутствовать на всей территории страны, причём год от года требования по присутствию увеличиваются — к 2014 это города с 100к населения, а к 2018 — с 8к (да-да, в каждый заполярный город оптику). Таким образом стать ФОС сможет только Очень Очень Очень толстый оператор. И у него будет монополия на иностранный трафик.

                            Тарифы для подключения операторов, разумеется, демократические, регулируемые регулятором (который изо всех сил начинает сдерживать внезапно образовавшегося монополиста/монополистов).
                            Читать дальше →
                          • Pull request'ы на GitHub или Как мне внести изменения в чужой проект

                            • Tutorial
                            По просьбе tulskiy делаю вольный перевод частей официальной документации GitHub'а Fork A Repo и Send pull requests.

                            Итак, что же такое «запрос на включение (сделанных вами изменений)» (именно так я перевёл pull request)? В официальной документации гитхаба говорится следующее:
                            Pull request'ы позволяют вам рассказать другим о тех изменениях, которые вы разместили в своём GitHub-репозитории. Как только pull request отправлен, заинтересованные стороны рассматривают ваши изменения, обсуждают возможные правки или даже добавляют дополняющие коммиты, если нужно.

                            Говоря своим языком: Посылая pull request, вы говорите автору изначального репозитория (и всем заинтересованным лицам): «Смотрите, что я сделал, не хотите ли принять мои изменения и влить их в проект?»
                            Читать дальше, но теперь уже обо всём по порядку
                          • Ликбез — как стать программистом

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

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

                              Далее я постараюсь описать какими знаниями, умениями и навыками обладает хороший программист, и что нужно делать, что бы этого достичь.
                              Читать дальше →
                            • Почему 1С это плохо и почему так не любят 1С программистов

                                Мы продолжаем то, что мы уже много наделали.

                                Черномырдин В.С.

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

                                Конечно, в данном конкретном случае я постарался решить все проблемы в самые короткие сроки, и, в результате, работа офиса вернулась в привычное русло. Но даже в такой ситуации я получил массу негатива со стороны клиента. И тогда я задумался о том, почему с программными продуктами 1С постоянно возникает такое количество проблем, почему от клиентов идет столько негатива, а самих 1С-программистов часто недолюбливают, в том числе, и другие программисты?
                                Читать дальше →
                              • Микроэлектронная индустрия в России (2012)

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

                                  Под катом — драматическая история о пластиковой электронике, российской «гуманитарной помощи» знакомой многим компании AMD и билетах Метро.

                                  Ну и в дополнение — график показывающий как изменялось состояние российской микроэлектроники последние 22 года по сравнению с США и Китаем.
                                  Читать дальше →
                                • Конференции для разработчиков c видео презентациями

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

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

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

                                    Читать дальше →