Обновить
256K+

Java *

Объектно-ориентированный язык программирования

173,66
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Барух Садогурский, JFrog: Developer Advocate, Java 9 и мировое господство Kotlin (но вы лучше посмотрите на Groovy)

Время на прочтение10 мин
Охват и читатели8.6K
В начале ноября в Киеве в седьмой раз пройдет конференция JavaDay. Мы пообщались с ее постоянным спикером Барухом jbaruch Садогурским — Developer Advocate в JFrog. За время беседы мы успели обсудить:

— Особенности работы Developer Advocate: почему он не должен продвигать продукты работодателя
— Java 9 и частоте релизов Java на примере маршруток и поездов
— Kotlin и его пути к мировому господству


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

Чат-бот своими руками: история одного велосипеда

Время на прочтение7 мин
Охват и читатели9.2K


Привет, хабр! Сегодня я расскажу о том, как своими руками с нуля собирались мозги для чат-бота, умеющего создавать резюме на основе беседы с человеком. Речь пойдет о том, как развивался написанный для этого дела велосипед, какие трудности встречал на своем пути и как изменялся в целях преодоления этих трудностей. Все описанные события происходили в процессе моего обучения в Школе программистов HeadHunter в 2017 году. Кому интересно — добро пожаловать под кат.
Читать дальше →

Тестируем новый механизм синхронизации настроек JetBrains IDEs

Время на прочтение2 мин
Охват и читатели14K
Привет, Хабр!

Если вы когда либо работали с JetBrains IDEs с разных компьютеров, вы могли сталкиваться с проблемой, что вам приходилось заново указывать настройки IDE (сочетания клавиш, подсветку синтаксиса, внешний вид, плагины и другие настройки).

До сих пор эту проблему частично решал встроенный плагин Settings Repository. Для того, чтобы, плагин синхронизировал настройки, необходимо самостоятельно создать Git репозиторий (на GitHub или другом сервисе) и указать его в IDE.

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

Разработка telegram бота с использованием Spring

Время на прочтение6 мин
Охват и читатели40K

Пишете телеграмм ботов? Ваша производительность разработки желает лучшего? Ищете чего-то нового? Тогда прошу под кат.


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

Codota: использование ИИ для улучшения кода

Время на прочтение2 мин
Охват и читатели15K
Привет Хабр! Хочу поделиться с вами одним инструментом, который помогает мне делать меньше ошибок в коде и реже гуглить по вопросам разработки.

image

В разрезе: новостной агрегатор на Android с бэкендом. Библиотека обхода интернет-сайтов на Java (crawler4j)

Время на прочтение3 мин
Охват и читатели3.5K
Вводная часть (со ссылками на все статьи)

Неотъемлемой частью системы сбора новостей является робот для обхода сайтов (crawler, круалер, «паук»). В его функции входит отслеживание изменений на указанных сайтах и внесение новых данных в базу данных (БД) системы.

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

  • простота настройки;
  • возможность настройки для обхода нескольких сайтов;
  • нетребовательность к ресурсам;
  • отсутствие дополнительных инфраструктурных вещей (координаторов работы, БД для «паука», дополнительных сервисов и т.д.).
Читать дальше →

Colibri-ui — наше решение по автоматизации тестирования мобильного приложения

Время на прочтение10 мин
Охват и читатели12K
C ростом команд неизбежно растет количество фич, а вместе с тем и тестовая модель и количество тест-кейсов, которые необходимо проверять при регрессионном тестировании. При этом количество команд растет не просто так, в нашем случае бизнесу хочется релизиться все чаще и чаще, не потеряв в качестве.

То, как мы в Альфа-Лаборатории решали проблему поиска баланса между скоростью, бюджетом и качеством, мы и рассмотрим сегодня на примере Альфа-Мобайла. Забегая вперед, ВНИМАНИЕ, СПОЙЛЕР!!! наше решение доступно на github: библиотека colibri-ui и шаблон colibri-ui-template для быстрого старта.

В написании статьи принимали активное участие Павел pvivanov и Лилия Lidiyatullina




Что случилось?


В далёком 2013 нас даже не посещали мысли об автоматизации тестирования, поскольку процесс регрессионного тестирования занимал один день одного тестировщика на обе ОС (iOS/Android).

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

«Есть плюсы как для админов, так и для разработчиков»: Олег Анастасьев про облако Одноклассников

Время на прочтение7 мин
Охват и читатели7.7K


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

Поэтому переход Одноклассников от подхода «каждый сервер занимается своей задачей» к облачному подходу «единый пул ресурсов распределяется по необходимости» вызвал у нас вопросы. Мигрировать такой большой проект с 11-летней историей на новую систему непросто — что именно побудило пойти на эти трудозатраты? Чем использование облака в Одноклассниках отличается от использования публичных сервисов? Почему проекту не подходят стандартные решения вроде Mesos и Kubernetes, и было сделано собственное one-cloud?

На эти и другие вопросы нам ответил ведущий разработчик Одноклассников Олег Анастасьев, уже знакомый читателям Хабра.
Читать дальше →

Атака клонов. Как бороться с дублированием кода?

Время на прочтение9 мин
Охват и читатели25K

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


В рамках данной статьи мне бы хотелось напомнить, что такое программные клоны, какие они влекут за собой проблемы и как с ними можно бороться. В статье приводятся примеры рефакторинга реальных клонов из популярного фреймворка Spring. В качестве инструментов используются Java 8, IDE IntelliJ IDEA 2017.1 и плагин Duplicate Detector 1.1.


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

MMO с нуля. Часть 2. Наращивание функционала + алгоритм Diamond Square

Время на прочтение169 мин
Охват и читатели16K
Всем привет! В предыдущей части мы разобрались с базовой архитектурой, сетью и обменом сообщениями. Нарастим теперь функционал. Сделаем возможность войти, зарегистрироваться получив при этом сессионный id, который можно в будущем использовать для управления клиентом в процессе игры. Далее мы добавим чат, по сути все работает по его принципу: получили сообщение — разослали подписантам. Сделаем возможность создавать игровые комнаты, где будем собирать игроков и отправлять в бой. Синхронизировать перемещение клиентов и напоследок проверять выстрел на проверочном сервере. Будет много кода, я продолжаю пошаговое описание, чтобы можно было быстро разобраться и воспроизвести для своих нужд. Для тех, кто не знаком с первой частью, но хочет вынести для себя что-то полезное здесь и сейчас, я добавил реализацию алгоритма генерации фрактальных ландшафтов Diamond Square, в начало. Happy coding!

Часть 1. Общая картина, сборка библиотек, подготовка клиента и сервера к обмену сообщениями
Часть 2. Наращивание игрового функционала + алгоритм Diamond Square


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

[Археология Live] Стыдный разговор о синглтонах

Время на прочтение8 мин
Охват и читатели20K

Аудитория: Java Junior, любители холиворов, профессиональные написатели синглтонов



Любые замечания и предложения — очень приветствуются. Это мое первое видео, и не совсем понятно, нужен ли тут вообще такой контент. Считайте это закрытым альфа-тестом, только для посетителей хаба Java :)


Ниже дана полная текстовая расшифровка, кому не хочется тратить время на просмотр.

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

Dagger 2. Subcomponents. Best practice

Время на прочтение9 мин
Охват и читатели41K
На хабре уже было несколько хороших статей по установке и работе с Dagger 2:


Я же хочу поделиться своим опытом использования Dagger 2 на реальных проектах с реальными кейсами. Раскрыть читателю мощь и удобство как самого Dagger’а, так и такого его аспекта, как Subcomponent.

Перед тем, как пройти под кат, следует ознакомиться с вышеуказанными статьями.
Кого заинтересовал, you are welcome!
image
Читать дальше →

Приглашаем на митап «Java и Linux – Борьба за микросекунды»

Время на прочтение3 мин
Охват и читатели7.6K


Привет, Хабр!

Я, Алексей Рагозин, и мой коллега – Сергей Сорокин приглашаем вас на открытое мероприятие по теме «Java и Linux – Борьба за микросекунды». Мероприятие пройдет во вторник 8 августа в 19.00 в офисе Технологического Центра Дойче Банка. Все подробности и регистрация по ссылке.

Вот о чем мы планируем говорить.
Читать дальше →

Ближайшие события

В разрезе: новостной агрегатор на Android с бэкендом. Система последовательной интеграции

Время на прочтение5 мин
Охват и читатели2.5K
Вводная часть (со ссылками на все статьи)

«Система последовательной интеграции», не уверен, что перевод правильный – лучше называть система непрерывной интеграции (continuous integration).
С ними первый раз я столкнулся в начале своей работы, когда 5-7 программистов усиленно писали код и тесты, меняли конфигурационные файлы и лили все свои результаты в trunk/master. В итоге частенько (так частенько, что аж бесило) в основной ветке появлялось нечто нерабочее. Причём выявлялось это тогда, когда нужно было развернуть тестовый стенд, что сильно замедляло работу группы тестирования (ждали исправления) и разработчиков (соответственно исправляли). Т.е. работоспособность кода не контролировалась после помещения его в репозиторий.
Читать дальше →

Обзор возможностей библиотеки Apache Curator для Apache Zookeeper

Время на прочтение12 мин
Охват и читатели18K

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

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

Олег Ненашев, Кирилл Толкачёв и Александр Тарасов про Groovy DSL и Pipeline в Jenkins на jug.msk.ru

Время на прочтение3 мин
Охват и читатели6.3K
27 июля 2017 года прошла совместная встреча сообществ jug.msk.ru и Jenkins MSK. На встрече с докладами о Jenkins выступили Олег Ненашев («Groovy DSL в Jenkins и Pipeline. Как оно работает?») и Кирилл Толкачёв с Александром Тарасовым («DSL много не бывает. Мигрируем со Scripted Pipeline на Declarative (Live)»).


JetBrains MPS для интересующихся #3

Время на прочтение7 мин
Охват и читатели4.3K

Бинго-бонго и Джимбо-джамбо, дорогие друзья!


У меня на дачке не было света 2 дня, я практически иссох и впал в спячку, но я снова здесь! В этом посте мы начнем писать предсказания погоды и немного напишем кода, а не потыкаем мышкой! Ура! Наконец-то!


Какие прогнозы мы хотим делать


Очень простые! Пока прогнозировать будем только следующий день, а правила придумаем сами; а точнее, правил не будет. Мы просто будем выводить температуру на следующий день, абсолютно такую же, как и сегодня. Сделаем один прикольчик, демонстрирующий возможности projectional editor.


Концепты


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


image

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

Работа с сервлетами для чайников. GET / POST

Время на прочтение8 мин
Охват и читатели106K


В прошлой статье Создание сервлетов для чайников. Пошаговое руководство я описал, как создать сервлеты и попытался объяснить, как это работает. В этой статье мы научим наши сервлеты работать с UI через HTTP-запросы GET и POST.

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

  • GET — обрабатывает адресную строку, которая получается при вызове сервлета. Например, site.com/example?action=test&id=10&admin=true
  • POST — обрабатывает загруженный контент (картинку, файл, строки, объектные данные), в общем, всё, что можно передать через HTTP

В Java-сервлете запросы POST и GET обрабатывают соответствующие методы doPost(); и doGet().
Читать дальше →

Android O: особенности поддержки новой операционной системы

Время на прочтение6 мин
Охват и читатели36K

Всем привет! Совсем скоро состоится важное событие – выход Android O. Поддержка новых версий операционной системы – обязанность любого серьезного продукта. Каждое обновление Android заставляет многих разработчиков серьезно поработать для сохранения работоспособности имеющихся функций и привнесения нового благодаря возможностям новых версий Android.


В данной статье мы рассмотрим основные изменения Android O и оценим их возможное влияние.


image

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

Внедрение зависимостей через поля — плохая практика

Время на прочтение6 мин
Охват и читатели88K
Перевод статьи Field Dependency Injection Considered Harmful за авторством Vojtech Ruzicka

image

Внедрение зависимостей через поля является очень популярной практикой в DI-фреймворках, таких как Spring. Тем не менее, у этого метода есть несколько серьезных компромиссов и поэтому стоит чаще избегать его.
Читать дальше →