• Круги ада с GitHub Actions (строим CI/CD pipeline для Java-проекта)



      Мне частенько приходится строить пайплайн для сборки проектов на Java. Иногда это опенсорс, иногда нет. Недавно я решил попробовать перенести часть своих репозиториев с Travis-CI и TeamCity на GitHub Actions, и вот что из этого получилось.
      Читать дальше →
    • «Никаких кликов»: интервью с Джессикой Дин о командной строке, автоматизации и DevOps


        Мне нравятся хоткеи, алиасы, shell-скрипты и другие способы повысить свою продуктивность с помощью клавиатуры. Сам я не очень далеко зашёл на этом пути, но меня всегда впечатляют люди, по-настоящему углубившиеся в это, и хочется их расспрашивать.


        Осенью на нашей конференции DevOops выступала Джессика Дин. Она удивительно разносторонний человек в отношении платформ: обожает Linux, постоянно пользуется Mac и при этом работает в Microsoft. И она очень любит автоматизацию, скрипты и отказ от мышки — настолько, что в её дотфайлах уже сотни коммитов.


        В трансляции DevOops мы с Михаилом Дружининым (xomyakus) поспрашивали её и об использовании терминала, и о совмещении миров Windows/Linux/Mac, а поскольку дело было на девопс-конференции, к концу разговор свернул ещё и в сторону Kubernetes. А сейчас, прямо перед новым онлайновым DevOops, мне захотелось перевести это интервью на русский, чтобы оно было и в текстовом формате.

        Читать дальше →
      • JPoint 2020: новый формат, новые возможности

          С 29 июня по 3 июля 2020 года в онлайн-формате прошла Java-конференция JPoint 2020. Информация о докладах, спикерах, особенностях проведения, впечатления от конференции — всё это можно прочитать далее.


          Читать дальше →
        • Используем Xtend для прикладной кодогенерации: сеанс чёрной магии с разоблачением

          • Tutorial

          Привет Хабр! Меня зовут Когунь Андрей. В КРОК я руковожу группой разработчиков Java (у нас большая распределённая по всей стране команда). Ещё я провожу встречи московского сообщества Java разработчиков JUG.MSK. Делаю это исключительно в корыстных целях: фотографируюсь там со всеми докладчиками, и однажды открою галерею с самыми интересными людьми в мире Java-разработки. Также помогаю делать конференции для разработчиков: JPoint, Joker и DevOops — в качестве члена программного комитета. Ну и для души, так сказать, преподаю Java-технологии студентам.


          В КРОК мы с коллегами в основном занимаемся заказной разработкой. Одно из наших направлений — так называемые учётные системы. Их надо делать по возможности быстро. Они типовые, различия обычно наблюдаются только в доменной модели. Поэтому мы постоянно боремся за то, чтобы писать меньше бойлерплейт-кода, будь то тривиальные геттеры-сеттеры, конструкторы и т.п. или CRUD-репозитории и контроллеры. Мы для этого активно пользуем кодогенерацию.


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


          Читать дальше →
          • +39
          • 3.2k
          • 6
        • 5 главных причин того, что JS-разработчики будут использовать Deno вместо Node

          • Translation
          Создатель Node.js Райан Даль выпустил новую платформу, которая рассчитана на решение многих проблем Node.js. Возможно, вашей первой реакцией на эту новость будет: «О, отлично, очередной JS-фреймворк? Его мне только и не хватало…». Я отреагировал на эту новость точно так же. А вот после того, как я немного вник в особенности Deno, я понял причины, по которым Deno можно назвать в точности тем, что серверным JavaScript-разработчикам нужно в 2020 году.



          Сравним Deno и Node.js и рассмотрим 5 основных причин того, что хорошего способна дать разработчику эта платформа. В частности, речь идёт о том, что, благодаря Deno, в распоряжении того, кто раньше использовал Node.js, окажется более удобный и современный инструмент.
          Читать дальше →
        • Project Loom: виртуальные потоки в Java уже близко

            Несколько дней назад Ron Pressler разродился статьей State of Loom, которую не полайкал только самый ленивый джавист. Статья действительно хорошая, в ней много интересных метафор, которые я собираюсь бессовестно использовать теперь без ссылки на первоисточник.

            Со своей стороны я неосторожно позволил высказать некоторый скептицизм, когда же с этим Project Loom можно будет наконец-то реально поработать. Спустя буквально час прилетела ответочка от самого Ron'а — «а ты попробуй!». Что ж, пришлось пробовать.
            Читать дальше →
          • 6 концепций, которые нужно освоить архитектору Angular-приложений

            • Translation
            Angular — один из самых масштабных из существующих веб-фреймворков. Он включает в себя множество встроенных возможностей. А это значит, что для полноценного освоения Angular нужно разобраться с изрядным количеством концепций.



            Автор материала, перевод которого мы сегодня публикуем, полагает, что существует шесть концепций, глубокое знание которых нужно Angular-разработчикам для того чтобы создавать хорошо спроектированные приложения. При этом он говорит не об изучении исходного кода реализации этих концепций, хотя и ему самому иногда приходится заглядывать в код. Речь идёт о понимании соответствующих механизмов и об умении применять их на практике.
            Читать дальше →
          • Две альтернативы JDBC

              Примеры для двух неблокирующих библиотек доступа к SQL базам данных — Vert.X SQL и R2DBC. Примеры будут основаны на PostgreSQL и реактивных обертках Java.



              Начнем с главного: JDBC — это отличный стандарт. Служил и служит верой и правдой.


              Но новые веяния просят новых решений. И даже есть смысл иногда потеснить JDBC.


              Я предлагаю взглянуть на две альтернативных реализации доступа к SQL базам из JVM приложений и их (реализаций) применимости.


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

              Читать дальше →
            • Кто создал Java: главное про Джеймса Гослинга


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


                Мы считаем, что такие люди заслуживают большего внимания. Поэтому, во-первых, Джеймс появится на нашей онлайн-конференции JPoint и ответит там на многие вопросы. А во-вторых, в этом посте мы расписали заметные вехи его жизни до, во время и после работы над Java. Как он успел насолить Ричарду Столлману? Почему по изначальному плану язык Java вообще не должен был появиться? Какое отношение Гослинг имеет к подводным роботам?

                Читать дальше →
                • +52
                • 11.8k
                • 9
              • Подводные камни тестирования Kafka Streams


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

                  Читать дальше →
                • «Чтобы лучше тебя слышать, спикер мой»: как качественнее вещать из дома


                    Мы тестируем оборудование


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


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


                    Здесь есть много интересных нюансов. Например, при словах «улучшить качество» в голову может приходить дорогая камера, но вообще-то она тут дело не первое и даже не третье. Почему так? И что важнее неё? Мы расписали вопросы, которые прорабатываем сейчас сами и которые могут помочь другим.

                    Читать дальше →
                  • Руководство по возможностям Java версий 8-14

                    • Translation

                    Здесь есть все, что вам нужно знать о различных версиях и функциях Java.



                    Java 8, Java 11, Java 13, Java 14 — какая разница?


                    Вы можете использовать это руководство, чтобы получить практическую информацию о том, как найти и установить последнюю версию Java, понять различия между дистрибутивами Java (AdoptOpenJdk, OpenJDK, OracleJDK и т.д.), А также получить обзор возможностей языка Java, включая версии Java 8-14.


                    Примечание переводчика
                    17 февраля был опубликован перевод Руководство по версиям и возможностям Java
                    В комментарии к нему Julegg написал
                    Там у Марко уже описание java-14 добавилось. Будет ли тут перевод добавлен?

                    Вашему вниманию предлагается обновленная версия руководства от 09 апреля 2020 г.
                    Читать дальше →
                  • Мир, код, май: проводим праздники с полезными докладами


                      Автор оригинала diliago


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


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


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


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

                      Читать дальше →
                      • +25
                      • 4.1k
                      • 1
                    • История моей трудовой деятельности в ООО «Опен Продукт»



                        Часть первая. Конфликт



                        Среда, 4 марта 2020, полдень

                        Я отдыхаю дома. Звонит наш техдир Рома:
                        — Миша, когда ты будешь на работе?
                        — Я решил сегодня остаться дома.
                        — Хорошо, я передам руководству
                        — По ТК есть норма, что если 15 дней задержка, то можно не выходить
                        (на тот момент я не видел зарплаты больше месяца)
                        — Да, я знаю
                        Рома перезванивает мне через 15 мин:
                        — Во сколько ты можешь приехать за зарплатой?
                        — Давай уже завтра, как обычно
                        — Хорошо, тогда до завтра

                        Читать дальше →
                      • 3 способа рендеринга больших списков в Angular

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

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



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

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

                          Два года назад я вызвался постоять на стенде нашей компании JetBrains на последней конференции JBreak в Новосибирске. Перед конференцией мне спустили сверху вот такие карточки:



                          И сказали, мол, ну раздай каким-нибудь людям на конференции на своё усмотрение. Я запаниковал. Как же я буду людей-то выбирать?


                          Тогда я довольно плотно работал с анализом потока данных в статическом анализаторе IntelliJ IDEA для Java. Во-первых, я обкатывал новые фичи, проверяя код самой IDE. Во-вторых, разгребал входящие баг-репорты. Иногда IDEA находила удивительные проблемы, и мне приходилось долго разбираться, чтобы вообще понять, правильное ли предупреждение она выдаёт или это баг.

                          Читать дальше →
                        • Angular 9 теперь доступен — Ivy прибыл

                          • Translation
                          Вышла 9 версия Angular, это основной релиз, охватывающий всю платформу, включая сам фреймворк, angular material и CLI. В этом релизе приложения по умолчанию переключаются на компилятор и рантайм Ivy и, а также представляются улучшенные способы тестирования компонентов.

                          Это одно из самых больших обновлений Angular за последние 3 года, и команда разработчиков рада возможностям, позволяющим разработчикам создавать лучшие приложения и вносить свой вклад в экосистему Angular.
                          Читать дальше →
                        • Ад инди-разработчика или как довести свой проект до релиза и не застрелиться в процессе

                          Когда мои друзья\знакомые\собутыльники узнают о том, что я разработчик игр, они приходят в дикий восторг, смешанный с белой завистью. “О, да ты шо, когда новый Ассасин выпустишь? ” — “Ого, вот это кайф. Такая крутая работа! ” и все в таком духе. Сразу их быстро опускаю на землю, ибо разработчик игр хоть и звучит круто, но за этим стоит огромная работа. Зачастую, не самая веселая. Рутинная, монотонная и, откровенно, утомительная. Однако, очень-очень нужная.

                          Опытные разработчики поймут о чем я, а те наивные мечтатели, которые еще только думают о том, чтобы перейти в геймдев — поверьте мне на слово. Ну или прочитайте всю статью от начала до конца. Немного об авторе — 4 года в геймдеве. Удалось поработать с такими проектами как Iratus: Lord of the Dead, Utopia Syndrome, парочкой VR проектов. В данный момент работаю в студии CrispApp, основное направление которой — игры жанра Hidden Object.

                          Читать дальше →
                        • Учёт собственных публикаций в таблице LynxReport

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


                            1. просмотры;
                            2. комментарии с разным эмоциональным оттенком;
                            3. сохранения (сколько пользователей этого сайта добавили материал в свои закладки);
                            4. рейтинги (сколько пользователей этого сайта проголосовали за или против).


                            Если все ваши статьи размещены на одном ресурсе, то особых проблем с учетом не возникает. Вышеперечисленные показатели обычно сведены в админке (как на картинке ниже) и всегда можно наглядно оценить какая из собственных тем более популярна. У меня же публикации по одной теме часто «размазаны» по разным ресурсах, таких как Хабр, виси.ру, Medium, Яндекс Дзен и (если корректно отнести к публикациям) GitHub. И передо мной была проблема увидеть общую картину по проектам и темам «в одном окне».

                            Читать дальше →
                            • +15
                            • 2.3k
                            • 2