• Пресейл в мобильном телекоме

      В этой статье не будет срывов покровов, разглашений NDA и т.п. Здесь будет лишь много букв, а также суждения, вынесенные по результатам субъективной оценки. А еще в этой статье не будет упомянута ни одна компания. Надеюсь, что такая абстракция сделает повествование более объективным.

      Читать далее
    • Германия — достоинства, недостатки и неповторимое, часть 1

      Живу в Германии с 2014ого.

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

      Зарплаты программистов

      Ну как же без этого? Решил вопрос оплаты вынести в самое начало, ведь если он вас разочарует, то ваш интерес к стране может сразу угаснуть.

      Читать дальше ->
    • Переезд IT-специалиста в Швейцарию: процесс релокации, стоимость жизни, полезные ссылки

        Швейцария стабильно входит в топы всех рейтингов стран по уровню жизни. К примеру, здесь она расположилась на 7 месте, а рейтинг Numbeo ставит ее на вторую позицию. При этом в стране достаточно развитая сфера IT, есть офисы многих крупных компаний, поэтому сюда едут многие инженеры. В нашей новой статье мы собрали полезную информацию о том, чего ждать при переезде. Поехали!

        Читать далее
      • «Профит велик. Мы получили множество свобод, которыми не обладали раньше», — Владимир Плизга о микросервисах

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


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


          В свою очередь, Владимир Плизга последние 6 лет погружен в разработку бэкенда интернет-банков и сопутствующих сервисов в ЦФТ, где активно топит за микросервисы и прочие модные штуки. Чтобы пообщаться с ним, я приехал прямо в офис ЦФТ, сделал сэлфи и обязательную фотку красного слона :-)


          Обсуждаемые темы:


          • Зачем нужны микросервисы;
          • Как с ними жить (судьба REST и SOAP, statefull vs. stateless, переход от монолита к микросервисам, совместимость с legacy и многое другое);
          • Микросервисные технологии (Spring Cloud Netflix, Zuul, ...), какие с ними проблемы, что нужно допиливать;
          • Документация: на русском или английском? Написание и генерация документации (Swagger, SpringMVC, SpringFox). Архитектурные диаграммы — нужны ли, в чем рисовать, как хранить;
          • Мониторинг, восстановление от сбоев;
          • Ну и самое главное: стоит ли игра свеч?


          (слева — Владимир, справа — olegchir)

          Читать дальше →
        • Как я научился проходить архитектурные секции

            Архитектурные секции у многих вызывают чувство неопределенности и тревоги: формулировки не изобилуют деталями, как проверить ответ — непонятно. При этом способность пройти архитектурную секцию отличает вчерашнего выпускника от человека, которому можно доверить строить нечто большее, чем обход бинарных деревьев. В определенный момент я решил как следует подготовиться секции по дизайну, потратил на это около пары недель и выработал системный подход, которым хочу с вами поделиться.
            Читать дальше →
          • Что нового в Spring Data (Klara Dan von) Neumann

            • Translation
            Перевод статьи подготовлен в преддверии старта курса «Разработчик на Spring Framework».

            Подробнее о курсе можно узнать посмотрев запись дня открытых дверей.





            Spring Data Neumann — это первый релиз, после перехода на новый шестимесячный релизный цикл. Сокращение сроков между релизами позволит нам чаще выпускать новые фичи, а это, в свою очередь, ускорит и вас. В этом релизе, помимо нового функционала, есть также важные изменения, потенциально ломающие совместимость с предыдущими версиями.

            Изменение мажорных версий


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

            • Spring Data JDBC 2.0 (предыдущая версия 1.1)
            • Миграция с 1.1 на 2.0 описана в этом посте.
            • Spring Data MongoDB 3.0 (предыдущая версия 2.2)
            • Spring Data для Apache Cassandra 3.0 (предыдущая версия 2.2)
            • Spring Data Couchbase 4.0 (предыдущая версия 3.2)
            • Spring Data Elasticsearch 4.0 (предыдущая версия 3.2)
            • Подробнее об изменениях см. этом посте.

            Перед тем как перейти к описанию новой функциональности, давайте посмотрим на изменения в API. Подробнее об этом смотрите в разделах по обновлению (“Upgrading”) в документации соответствующих модулей.

            Если вы не готовы обновляться сейчас, то имейте в виду, что предыдущий релиз Moore будет поддерживаться еще в течение двенадцати месяцев.
            Читать дальше →
          • Микросервисная архитектура, Spring Cloud и Docker

            • Tutorial

            Привет, Хабр. В этой статье я кратко расскажу о деталях реализации микросервисной архитектуры с использованием инструментов, которые предоставляет Spring Cloud на примере простого концепт-пруф приложения.



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

            Читать дальше →
          • Поиск автовладельцев в Instagram: от хвостов китов до автомобилей

            image


            К нам в рекламную группу Dentsu Aegis Network часто приходят компании-рекламодатели с запросом изучить и проанализировать их целевую аудиторию. И сделать это необходимо быстро и точно. Предположим, у нас есть клиент из автопрома, который хочет найти владельцев авто, а потом узнать их интересы, пол, возраст – в общем, «раскрасить» аудиторию. Логично было бы сделать социологическое исследование, но это займет несколько недель. А если у клиента очень дорогие авто стоимостью выше 2,5 млн рублей? Много ли таких владельцев наберется для исследования? А для фокус-группы?


            Хорошим способом найти нужного человека остается социальная сеть. Это место, где пользователь оставляет о себе много полезной информации, а если даже информации нет, то можно попробовать собрать её с помощью “черной” магии. Да, все верно, тут на помощь приходит data science.

            Читать дальше →
          • Расследование: создатель AlterOffice украл код у Microsoft и рвётся назад в реестр



              Полгода назад я опубликовал на Хабре статью, в которой доказал наличие клонов иностранных программ в реестре российского ПО. Мое расследование вызвало ажиотаж (даже на ютубе), и поделку компании ООО «Алми Партнер» спешно выпилили из реестра.

              С тех пор прошло уже несколько месяцев. У нас появилось новое Правительство, началась коронавирусная истерика и обвалился курс рубля. И пока отправленные на удалёнку сограждане постигали масочно-перчаточный фешн, группа нижегородских парней громко заявила о своем «камбеке»: сначала высказались в СМИ, затем подали заявление на включение в реестр, и до кучи — иск в суд на Министерство.

              Я удивился их дерзости, и решил снова поковырять AlterOffice, и вот что я выяснил: создателям AlterOffice показалось мало бесплатной «либры», и они позаимствовали интеллектуальную собственность еще и у Microsoft, Mozilla и Paratype. Под катом вас ждёт очень много букв, картинок и выводов.
              Читать дальше →
            • Практикумы от IBM: Quarkus (сверхбыстрая Java для микросервисов), Jakarta EE и OpenShift


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

                На начало июня (надеемся, лето все-таки наступит) мы запланировали несколько практических сессий, которые, уверены, будут интересны разработчикам. Во-первых — расскажем про serverless и новейший сверхбыстрый quarkus (как вам, например, 14мс холодного старта?), во-вторых — Альберт Халиулов расскажет про особенности облачной разработки на Jakarta EE, Microprofile и Docker (каждому участнику выдадим готовую виртуалку для практикума). Ну и наконец 9 июня Валерий Корниенко расскажет как можно развернуть свой OpenShift в IBM Cloud за пару минут. Интересно? Если да — детали под катом.
                Читать дальше →
              • Как научиться разработке на Python: новый видеокурс Яндекса

                • Tutorial
                Осенью прошлого года в московском офисе Яндекса прошла первая Школа бэкенд-разработки. Мы сняли занятия на видео и сегодня рады поделиться на Хабре полным видеокурсом Школы. Он позволит вам научиться промышленной разработке на Python. Авторы лекций — опытные разработчики в Яндексе. К каждому видео приложены ссылки на примеры и полезные материалы.

                Для изучения курса нужно знать основы Python и понимать, как приложения развёртываются на серверах. Мы ждём, что вы умеете делать запросы к базам данных и знаете, как создаются веб‑приложения, — хотя бы на начальном уровне.
                Читать дальше →
              • RabbitMQ. Часть 2. Разбираемся с Exchanges

                • Tutorial

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


                Exchange не является Erlang-процессом. Из соображений масштабируемости exchange — это строка (ссылка на модуль с кодом, где лежит логика маршрутизации) во встроенной базе данных mnesia. 1 тысяч обменников будут потреблять всего 1МБ памяти.

                Читать дальше →
              • Фреймворк для UI-тестирования JDI: как и зачем использовать

                  Давным-давно, в далекой-далекой галактике жили тестировщики. Они тестировали все, что только можно было, и на это уходило немало времени. Пришла эра автоматизированного тестирования, а вместе с ней — фреймворки. Многие говорили, что сделать работу тестировщиков эффективнее и проще уже невозможно. Но разработчики JDI так не думали.

                  Зачем создали JDI, когда и так есть несколько фреймворков для тестирования пользовательских интерфейсов? Чем он отличается от других и как его использовать?

                  Инженеры по автоматизированному тестированию ЕРАМ, разработчики JDI — Роман Иовлев и Алексей Гирин — ответили на вопросы о фреймворке, которые им задают чаще всего.


                  Читать дальше →
                  • +5
                  • 12.1k
                  • 3
                • Революция или эволюция Page Object Model?

                  • Translation
                  • Tutorial
                  Всем привет! Меня зовут Артём Соковец. Хочу поделиться переводом своей статьи об Atlas: реинкарнации фреймворка HTML Elements, где представлен совершенно иной подход работы с Page Object.

                  Перед тем, как перейти к деталям, хочу спросить: сколько обёрток для Page Object вы знаете? Page Element, ScreenPlay, Loadable Component, Chain of invocations…

                  А что будет, если взять Page Object с реализацией на интерфейсе, прикрутить Proxy Pattern и добавить немного функциональности Java 8?

                  Если интересно, предлагаю перейти под кат.


                  Читать дальше →
                • Service Mesh: что нужно знать каждому Software Engineer о самой хайповой технологии

                  • Translation
                  Прим. перев.: service mesh — явление, которое ещё не имеет устойчивого перевода на русский язык (более 2 лет назад мы предлагали вариант «сетка для сервисов» или «сервисная сетка», а чуть позже некоторые коллеги стали продвигать сочетание «сервисное сито»). Постоянные разговоры об этой технологии привели к ситуации, в которой слишком тесно переплелись маркетинговая и техническая составляющие. Этот замечательный материал от одного из авторов оригинального термина призван внести ясность для инженеров и не только.


                  Комикс от Sebastian Caceres

                  Введение


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

                  Service mesh зародилась в мутных, тенденциозных водах экосистемы cloud native. К сожалению, это означает, что значительная часть связанной с ней полемики варьируется от «низкокалорийной болтовни» до — если воспользоваться техническим термином — откровенной чуши. Но если отсеять весь шум, можно обнаружить, что у service mesh есть вполне реальная, определенная и важная функция.

                  В этой публикации я попытаюсь проделать именно это: представить честное, глубокое, ориентированное на инженеров руководство по сервисным сеткам. Я собираюсь ответить не только на вопрос: «Что это такое?», — но и «Зачем?», а также «Почему именно сейчас?». Наконец, попытаюсь обрисовать, почему (по моему мнению) конкретно эта технология вызвала такой сумасшедший ажиотаж, что само по себе интересная история.
                  Читать дальше →
                • Иван Осипов и Юрий Артамонов про Kotlin и плагины к IntelliJ IDEA на встрече jug.msk.ru

                    14 ноября 2019 года на встрече московского сообщества Java-разработчиков jug.msk.ru Иван Осипов и Юрий Артамонов представили доклады про миграцию приложений с Java на Kotlin и про написание плагинов для IntelliJ IDEA.


                    Читать дальше →
                    • +12
                    • 2.1k
                    • 5
                  • Необычные системные вызовы на Linux

                      ls /usr/share/man/man2/


                      Что видит программист, начиная работать с языком C? Он видит fopen, printf, scanf и ещё много других функций. Видит он и всякие open и mmap — казалось бы, зачем их выделять? Но, в отличие от первой группы, эти две функции при выполнении на ядре Linux являются системными вызовами (на самом деле нет, почти никогда системный вызов нельзя просто вызвать как функцию, и поэтому libc содержит обёртки, перепаковывающие аргументы и иногда, как в случае с тем же open, заменяющие старые системные вызовы более общими новыми). Вообще, в отличие от тысяч библиотечных функций, доступных на типичной GNU/Linux системе, интерфейс ядра имеет довольно ограниченное количество точек входа — порядка нескольких сотен, зато то, что для user space — crash (например, обращение к отсутствующей странице), для ядра — default mode of operation.


                      В этой статье я расскажу некоторые интересные на мой взгляд факты. В ней не будет futex-ов и прочих скучных (наверное) деталей реализации. Будет преимущественно то, что вызывало у меня реакцию «А что, так можно было?!?».

                      Читать дальше →
                      • +64
                      • 21k
                      • 8
                    • Подготовка к Spring Professional Certification. Контейнер, IoC, бины

                      • Translation

                      Доброго времени суток, Хабр.


                      Сегодня я решил представить вам перевод цикла статей для подготовки к Spring Professional Certification.


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


                      Зачем я это делаю, ведь уже есть куча профильных материалов?
                      1. Часто в них информация не структурирована, не собрана, или не актуальна
                      2. Молодые разработчики могут не знать английский. Этот цикл можно использовать не только для сертификации, но и для самообучения/повторения материалов.
                      3. Этими материалами можно пользоваться при подготовке к собеседованию, т.к. они выстроены в виде вопросов и ответов.
                      4. Важное, и самое главное преимущество — этот QA сделан из вопросов из  официального Study Guide от Pivotal. 

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

                      Оглавление
                      1. Внедрение зависимостей, контейнер, IoC, бины
                      2. AOP (аспектно-ориентированное программирование)
                      3. JDBC, транзакции, JPA, Spring Data
                      4. Spring Boot
                      5. Spring MVC
                      6. Spring Security
                      7. REST
                      8. Тестирование

                      Читать дальше →
                    • Фантастические плагины, vol. 1. Теория

                        Жизнь с многомодульным проектом не так уж проста. Чтобы избежать рутины создания нового модуля мы создали собственный плагин для Android Studio. В процессе реализации мы столкнулись с отсутствием практической документации, перепробовали несколько подходов и откопали множество подводных камней. Получилось две статьи: “Теория” и “Практика”. Встречайте!


                        image

                        Читать дальше →
                      • Как мы поддерживаем стабильность приложения Lamoda

                          Всем привет!

                          Меня зовут Виталий Бендик. Я тимлид команды разработки Android приложения в компании Lamoda. В 2018 году я выступал на Mosdroid Aluminium c докладом, расшифровкой которого хочу поделиться.

                          image

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

                          В докладе я расскажу:

                          1. что мы понимаем под стабильностью приложения;
                          2. об архитектуре нашего мобильного приложения;
                          3. о процессах, практиках и инструментах, которые мы используем.

                          Читать дальше →
                          • +16
                          • 5.8k
                          • 9