• Организация типовых модулей во Vuex

      Как мы организовали Vuex-сторы и победили копипасту


      Vuex — это официальная библиотека для управления состоянием приложений, разработанная специально для фреймворка Vue.js.


      Vuex реализует паттерн управления состоянием, который служит централизованным хранилищем данных для всех компонентов приложения.


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


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


      Работая над проектом CloudBlue Connect и создавая очередной модуль, мы поймали себя на мысли, что пишем один и тот же шаблонный код снова и снова, меняя лишь эндпоинт:


      1. Репозиторий, в которой содержится логика взаимодействия с бекендом;
      2. Модуль для Vuex, который работает с репозиторием;
      3. Юнит-тесты для репозиториев и модулей.

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


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


      Для этого мы создали фабрику типовых модулей Vuex, сократившую практически до нуля написание нового кода для взаимодействия с бекендом и хранилищем (стором).

      Читать дальше →
    • Интеграция проекта VueJS+TS с SonarQube

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



      В данной статье речь пойдет, как писал выше, о платформе SonarQube. Немного теории — что это такое вообще, для тех, кто слышит о ней впервые:


      SonarQube (бывший Sonar) — платформа с открытым исходным кодом для непрерывного анализа (англ. continuous inspection) и измерения качества кода.
      Поддерживает анализ кода и поиск ошибок согласно правилам стандартов программирования MISRA C, MISRA C++, MITRE/CWE и CERT Secure Coding Standards. А также умеет распознавать ошибки из списков OWASP Топ-10 и CWE/SANS Топ-25 ошибок программирования.
      Несмотря на то, что платформа использует различные готовые инструменты, SonarQube сводит результаты к единой информационной панели (англ. dashboard), ведя историю прогонов и позволяя тем самым увидеть общую тенденцию изменения качества программного обеспечения в ходе разработки.

      Более подробно можно узнать на официальном сайте


      Поддерживается большое количество языков программирования. Судя по информации из ссылки выше — это более 25 языков. Для поддержки конкретного языка необходимо установить соответствующий плагин. В community-версию входит плагин для работы с Javascript (в том числе typesсript), хотя в wiki написано обратное. За Javascript отвечает плагин SonarJS, за Typescript SonarTS соответственно.


      Для отправки информации о покрытии используется официальный клиент sonarqube-scanner, который, используя настройки из config-файла, отправляет эти данные на сервер SonarQube для дальнейшей консолидации и агрегирования.


      Для Javascript есть npm-обертка. Итак, начинаем пошаговое внедрение SonarQube в Vue-проект, использующий Typescript.

      Читать дальше →
    • 10 строк кода, которые уменьшат боль от вашего проекта на Vue

      … или знакомство с плагинами Vue JS на примере интегрированной шины событий


      Пара слов о…


      Всем привет! Сразу оговорюсь. Я очень люблю VueJS, активно пишу на нем уже больше 2-х лет и не считаю, что разработка на нем может причинить боль хоть в какой-то значимой степени :)
      С другой стороны, мы всегда пытаемся найти универсальные решения, которые помогут тратить меньше времени на механическую работу и больше – на то, что действительно интересно. Иногда решение оказывается особенно удачным. Одним из таких я хочу поделиться с вами. 10 строк, о которых пойдет речь (спойлер: в конце их окажется немного больше), родились в процессе работы над проектом Cloud Blue – Connect, который представляет собой достаточно крупное приложение на 400+ компонентов. Найденное нами решение уже интегрировано в самые разные точки системы и вот уже более полугода ни разу не требовало правок, поэтому его смело можно считать успешно проверенным на устойчивость.
      Читать дальше →
    • Скребём Github: поиск «секретов» разработки

        image

        При разработке софтверного продукта или облачного SaaS-сервиса достаточно трудно отслеживать сторонние активности всех специалистов, вовлеченных в процесс разработки. Достаточно открыть Github, ввести в поиске «<имя_домена_компании.com> pass» и оценить выдачу. В том случае, если вдруг Github действительно показывает в своей выдаче что-то интересное, то мы рассмотрим сценарии, которые могут помочь злоумышленникам нарушить бизнес-процесс твоей компании. А если Github все же молчит, то рассмотрим альтернативные варианты атаки на цикл разработки продукта, при которых точкой входа в инфраструктуру могут стать не только разработчики, но даже Security-инженеры.
        Читать дальше →
      • Сибирское саппорт-комьюнити: начало

          Это было обычное утро обычного апрельского вторника. Мы сидели на кухне и холиварили о том, как нужно делать саппорт. Вдруг Дима Дягилев (Operations Manager Technical Support) нарушил привычный ход событий. Причем не только на вторник, но и ближайшие полгода.

          — Ребята, вам не кажется дико несправедливым то, что у девелоперов, PM’ов, QA’шников и эйчаров есть свои митапы, а у саппорта что-то не очень. Ведь полно скиловых инженеров,  многим есть чем поделиться с коллегами, о чем рассказать.



          Возникла небольшая пауза, мы задумались.

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

          «Ну так что, делаем?» — «Конечно делаем!»
          Читать дальше →
        • Патентование, настолка для программистов, сети в Kubernetes и самокат в подарок



            28-29 мая в Сколково пройдет фестиваль конференций РИТ++. На стенде Ingram Micro Сloud мы устраиваем битву в игре-головоломке CloudPipe за главный приз — электросамокат. Побороться за другие награды можно удаленно, регистрация и подробности на cloudpipe.win

            И это не единственная активность Ingram Micro Cloud на РИТ++. На разных конференциях можно будет еще послушать выступления наших ребят. Подробности — под катом.
            Читать дальше →
            • +10
            • 3,1k
            • 1
          • Как сделать Public API, которым будут пользоваться

              Во фронтенде практически безраздельно правит OpenSource, а с недавних пор набирает популярность компонентный подход. Вроде бы всё чудесно. Небольшим компаниям компонентный подход помогает переиспользовать код, а крупным компаниям выравнивать UX во всей линейке продуктов, сервисов и прочего. И вот мы все такие замечательные крутые разработчики пилим свои фреймворки, библиотеки и виджеты, радостно полагая, что если они решают наши задачи, то решают и проблемы окружающего мира. Мы выкладываем их в паблик, ожидая благодарных пользователей, звезд на GitHub, скачиваний на NPM-е. Но почему-то одни библиотеки взлетают, а другие остаются незамеченными и позабытыми.


              Почему же так происходит?
            • Как в IT-компании запустить патентный процесс



                В декабре 2015 года американский дистрибьютор с оборотом $43 млрд. Ingram Micro купил часть бизнеса Parallels, Odin Automation — платформу для дистрибуции облачных сервисов. Кроме разработчиков и нескольких ключевых патентов на сам продукт, Ingram Micro получил в наследство еще и зачатки «культуры патентования», которая впоследствии расцвела и накрыла защитной кроной все новые разработки. О том, как росло это «дерево» и чем его «поливали» я расскажу в этом посте.
                Читать дальше →
              • Ingram Micro и Odin Automation

                  Привет Хабр! Меня зовут Тимур Хакимьянов, я являюсь вице-президентом Odin Automation и руковожу разработкой платформы дистрибуции облачных сервисов и приложений. Информация о нашей компании в Рунете крайне скудна, несмотря на то, что нашими продуктами пользуется более 150 телеком-операторов, хостеров и провайдеров по всему миру, среди которых есть очень крупные и известные. При этом почти весь наш департамент разработки находится в России. Поэтому я хочу немного заполнить информационный вакуум и подробнее рассказать о том, кто мы такие и что делаем.
                  Читать дальше →
                • Что же такое RQL

                    Представьте, что у вас есть хранилище данных с REST-интерфейсом. Пусть в нем хранится информация о книгах и вы хотите вывести список всех книг. Можно сделать метод «books», который будет возвращать нам список книг. Но при отображении списка обычно есть паджинация или ленивая подгрузка данных, а еще пользовать хочет фильтровать и сортировать данные. Когда мы добавляем поддержку мобильных устройств у нас появляется еще потребность как-то ограничить объем получаемых данных не передавая часть полей. Всю эту информацию должен уметь понимать почти любой метод получения списка объектов, т.к. списки отображаются с помощью специального виджета. И тут нам на помощь приходит Resource Query Language.

                    Resource Query Language (RQL) — это язык запросов, разработанный для использования в URI при работе с объекто-подобными структурами данных. С помощью RQL клиент может запрашивать у сервера список объектов соответствующих определенным правилам, т.е., по сути, это синтаксис, который описывает как запрашивать данные. Например, запрос выбирающий все книги авторства Перумова может быть записан как eq(author,Перумов) или в обычном формате URL: author=Перумов.
                    Читать дальше →
                  • «Сломай голосовалку на РИТ++». Даёшь 1 000 000 RPS


                      Прошёл второй день РИТ++, и по горячим следам мы хотим рассказать о том, как всем миром пытались сломать нашу голосовалку. Под катом — код, метрики, имена победителей и самых активных участников, и прочие грязные подробности.

                      Читать дальше →
                    • Итоги половины дня! Сломай голосовалку на РИТ++ за 50 наклеек. День два

                        UPD 6 июня, 13:00 Промежуточные итоги половины дня (играем до 18.00)

                        TOP25
                        { _id: 'burik666@...', count: 577979174 },
                        { _id: 'ivan@...', count: 513559731 },
                        { _id: 'alarkin@...', count: 222891322 },
                        { _id: 'i@...', count: 216486374 },
                        { _id: 'odn@...', count: 145072331 },
                        { _id: 'A1977494@...', count: 55572517 },
                        { _id: 'elena@...', count: 44642302 },
                        { _id: 'hack@...', count: 15686298 },
                        { _id: 'alexey.tsikov@...', count: 12685075 },
                        { _id: 'minkin.andrew@...', count: 8200540 },
                        { _id: 'perminoff@...', count: 5428646 },
                        { _id: '256@...', count: 5030088 },
                        { _id: 'v@...', count: 2163356 },
                        { _id: 'pen<ОЙ>is@...', count: 2100855 },
                        { _id: 'lebedevcommerical@...', count: 1605961 },
                        { _id: 'serg_sokolov@...', count: 1600238 },
                        { _id: 'msalnikov@...', count: 1499220 },
                        { _id: 'ghostlyfox@...', count: 1473142 },
                        { _id: 'alex21021991@...', count: 1437472 },
                        { _id: 'nikita.shapovalov@...', count: 1007977 },
                        { _id: 'evgen300@...', count: 652291 },
                        { _id: 'malchenko.dmitriy.by@...', count: 611410 },
                        { _id: 'dzmitry_t@...', count: 279287 },
                        { _id: 'maniaque.ru@...', count: 262446 },
                        { _id: 'e.tabatsky@...', count: 190766 }


                        UPD 6 июня, 12:40

                        361K RPS Голосуй за свой ЯП? #ritfest2017 high load голосование https://t.co/CbbDhHJKNj @IngramCloud pic.twitter.com/mT6jfI9L4G

                        — Alex Hayorov (@hayorov) June 6, 2017

                        6 июня, 10:00
                        Сегодня второй день! Мы добавили мощностей и немного изменили дизайн, теперь вы можете видеть топ-5 голосующих.



                        Приходите на наш стенд рядом с конгресс-холлом.
                        Читать дальше →
                      • Технология APS: фронтенд контрольной панели и возможности JS SDK

                          В прошлый раз мы рассказали об APS (Application Packaging Standard) — нашей открытой технологии интегрирования приложений в платформу по продаже облачных сервисов (SaaS marketplace) Odin Automation. Наша платформа связывает разработчиков и потребителей облачных сервисов через инфраструктуру крупных сервис-провайдеров (поставщиков телекоммуникационных и хостинг-услуг), одновременно предоставляя точку входа для конечных пользователей: контрольную панель или портал, с помощью которого можно создать сайт, настроить почту, купить антивирус или виртуальную машину в облаке. В этом посте мы более подробно остановимся на том, как устроен фронтенд контрольной панели и APS-приложений и какие возможности предоставляет APS JavaScript SDK.


                          Читать дальше →
                        • Технология APS: облачный стандарт

                            Привет, Хабр! Меня зовут Тимур Низаметдинов, я работаю Senior Software Architect облачной экосистемы Odin (Ingram Micro). Сегодня я хочу рассказать вам об APS (Application Packaging Standard) — ключевой технологии, используемой для интеграции в платформу по продаже и потреблению облачных сервисов (SaaS marketplace) Odin Automation.

                            Про платформу





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

                            Odin Automation состоит из следующих компонентов:


                            • Онлайн-магазин, задача которого привлечь конечных пользователей, а также представителей малого и среднего бизнеса, заинтересованных в приобретении таких продуктов, как Microsoft Office 365 или Dropbox for Business. Система помогает выбрать наиболее подходящие решения, сориентироваться в их возможностях и версиях.

                            • Панель управления купленными сервисами (Контрольная панель / Self-management Control Panel), задача которой предоставить возможности управления, докупки (upsell) и перекрестной продажи (cross-sell) сервисов покупателю.

                            • Система бизнес-поддержки (BSS, Business Support System), которая управляет рабочими процессами, инициирует процессы оплаты, предоставления (provisioning), биллинга и так далее.

                            • Система поддержки операций (OSS, Operation Support System), которая занимается учетом, планированием и предоставлением услуг.

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


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

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