Обновить
172
0

java / open source

Отправить сообщение

Упаковка jvm приложения в docker образ

Время на прочтение3 мин
Количество просмотров29K
Все плюсы docker для приложения, уже много раз описывали на Хабре, как и его архитектуру.

Мы же решим практическую задачу по упаковке jvm приложения и получим контейнер с миниатюрным Linux, JDK и нашим приложением, который опубликуем на hub.docker.com и сможем запускать где угодно.
Читать дальше →

Превращаем Java/JVM приложение в демона

Время на прочтение4 мин
Количество просмотров15K
Часто ли вы пишите shell скрипт и пакетный файл для запуска своего jvm приложения, а как часто копируете из другого проекта?


Если используете maven, эта информация вам поможет.

java.net.URL или старый конь борозды не испортит

Время на прочтение3 мин
Количество просмотров12K
Первое, что мы сразу вспоминаем, когда видим класс java.net.URL — это то, что он такой же матерый, как и первая версия java (@since JDK1.0). Второе — он встречается почти во всех java программах. Третье — чаще всего в нем используют протоколы file, jar и http.



А можно ли с помощью java.net.URL получить данные по протоколу CIFS/SMB, SCP, из HDFS — файловой системы хадупа или из maven репозитария? А получить изображение с веб камеры одной строчкой new URL('camel:/webcam:spycam?resolution=HD720').openStream()?
Узнаем как работать с такими URL в java и groovy

Конфигурация приложений с помощью github

Время на прочтение6 мин
Количество просмотров16K


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

Я видел много проектов, где конфигурация подкладывается в файловую систему в виде properties/json/xml файлов с непостижимыми уму переоределениями в момент загрузки. И что же на самом деле использует приложение становится ясно только после просмотра лог файлов компонента либо во время отладки.
Git как хранилище конфигурации...

Отладка Groovy скриптов с Grape на основе maven aether

Время на прочтение2 мин
Количество просмотров4.3K
В IntelliJ Idea возникают cложности с отладкой таких скриптов, так как для отладки groovy IDE использует сборку груви по-умолчанию, с Ivy провайдером для Grape.



Решение проблемы с debug...

JOIN the dark side of the SQL

Время на прочтение4 мин
Количество просмотров18K
Незаслуженно обошли вниманием появление SQL JOIN операций в проекте на основе Elasticsearch


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

Java вместо Groovy

Время на прочтение6 мин
Количество просмотров17K
Вдруг оказывается, что в проекте нужны скрипты и возникает вопрос что лучше эволюция или революция?
Но даже попытка внедрить груви может провалиться в легаси проекте с консервативным коллективом. И руководство может найти еще десяток причин не пропустить груви в проект. Хоть groovy гораздо проще и ближе программисту знающему java, чем та же scala.



Но даже в этом случае можно использовать динамически компилируемые скрипты в проекте. Научимся компилировать java код динамически в памяти и запускать его в jvm, использовать в нем динамически загружаемыме библиотеки из maven. Хотелось бы написать как можно меньше кода для этого и чтобы процесс использования был максимально прост. Да и еще бы не хотелось надеяться на доступность tools.jar нашей пограмме.
Для заинтересовавшихся как можно это сделать...

Что нам стоит сайт распарсить. Основы webdriver API

Время на прочтение16 мин
Количество просмотров66K
Поиск жилья, информации о товарах, вакансий, знакомств, сравнение товаров фирмы с конкурентами, исследование отзывов в сети.



В интернет опубликовано много полезной информации и умение извлекать данные поможет в жизни и работе. Научимся получать информацию с помощью webdriver API. В публикации приведу два примера, код которых доступен на github. В конце статьи скринкаст про то, как программа управляет браузером.
Читать дальше →

DevOps: отправляем метрики и спим спокойно

Время на прочтение9 мин
Количество просмотров19K


Внезапно, ночью раздается звонок и мы узнаем что наше приложение не работает. Есть 2 часа на его реанимацию…
Где же наш мониторинг и логи программы!?

Уличная магия в скриптах или что связывает Groovy, Ivy и Maven?

Время на прочтение9 мин
Количество просмотров11K
После мучений с отладкой сложных MVEL скриптов + MavenClassloader, обнаружил, что механизм динамического разрешения зависимостей есть в языке Groovy. К тому же отладка Groovy скриптов возможна и в Idea и в Eclipse.



Вы спросите зачем нужно динамическое разрешение зависимостей? Некоторые вещи проще делать так, а некоторые возможно только так.

В публикации вы найдете работающее решение для Groovy в виде одного jar файла и загрузчик классов из репозитариев maven для Java приложения. Узнаете про особенности работы Grape «из коробки». Чтобы не быть голословным и были понятны возможности Grape
Читать дальше →

Разбор Java программы с помощью java программы

Время на прочтение14 мин
Количество просмотров22K
Разобрались с теорией в публикации «Модификация программы и что лучше менять: исполняемый код или AST программы?». Перейдем к практике, используя Eclipse java compiler API.



Java программа, которая переваривает java программу, начинается с работы над абстрактным синтаксическим деревом (AST)…
Читать дальше →

Модификация программы и что лучше менять: исполняемый код или AST программы?

Время на прочтение11 мин
Количество просмотров15K
Принципы в заметке общие для почти любого языка программирования и системы исполнения, но акцент будет на jvm. Рассмотрим два основных подхода по модификации программы:

  • манипуляции с исполняемым кодом программы после компиляции или во время загрузки кода;
  • изменение исходного кода перед компиляцией.


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

Диагностируем причину, выживаем в JAR hell: не дышим серой и не варимся в котле

Время на прочтение6 мин
Количество просмотров21K
Бывает что в крупном проекте работающем в jvm, внезапно обнаруживается что приложение не работает и даже не запускается при обновлении какой-либо из зависимостей проекта. Такое же возможно из-за любого другого события, которое изменило порядок следования библиотек в classpath приложения.


Добро пожаловать в JAR hell

Доклад: «Аспектно-ориентированное программирование в распределенных системах для java разработчиков и QA»

Время на прочтение2 мин
Количество просмотров8.5K

Под катом — краткое описание доклада про аспектно-ориентированное программирование и применение AspectJ-scripting, а также ссылки на материалы по теме и видеозапись выступления.
Читать дальше →

Публикация логов в Elasticsearch — жизнь без регулярных выражений и без logstash

Время на прочтение5 мин
Количество просмотров27K

При использовании подхода из данного решения парсинг файлов будет не нужен. При изменении формата логирования или появлении новых сообщений не нужно поддерживать большой набор регулярок. Будем перехватывать вызовы методов error, warn, info, debug, trace логера и отправлять данные сразу в elasticsearch. С этим нам поможет аспектно-ориентированное программирование!
Программа, конфигурация и скринкаст...

Протоколирование JDBC запросов и их параметров в существующем приложении

Время на прочтение4 мин
Количество просмотров14K


В публикации рассмотрим как можно внедрить логирование jdbc операций в существующее приложение без его пересборки и перекомпиляции. Это даст возможность протоколировать параметры запросов, которые заполняет программа, и многие другие аспекты работы с jdbc.
Описание процесса и скринкаст...

Хабр шелл: встраиваем кросплатформенный ssh server в java приложение

Время на прочтение4 мин
Количество просмотров15K


Расскажу как внедрить в существующее java приложение ssh сервер, который может выводить в терминал данные о лучших статьях с habrahabr. Это лишь пример, но на его основе вы сможете получить дополнительное средство для администрирования вашей программы и расширить поведение любыми командами, без изменения исходного кода и пересборки приложения.
Подробности

Внедрение веб консолей в jvm процесс на примере SonarQube

Время на прочтение5 мин
Количество просмотров12K
По аналогии с примером из этой статьи, вы сможете внедрить консоль hawtio в свое jvm приложение без его пересборки и перекомпиляции. А также в случае с DEV/QA хостами внедрить в java процесс SQL веб консоль из проекта H2


Скринкасты, описание процесса и краткий обзор компонент...

Как я пытался лечиться по ДМС, а получил 3D модель головы и чуть больше здоровья за свои деньги

Время на прочтение10 мин
Количество просмотров35K
Ситуация, с которой наверное сталкивались многие обладатели полиса ДМС с оплатой стоматологии, когда страховая отказывается оплачивать лечение зуба. Стоматолог отправляет с обострением домой — «записывайтесь на прием», не говоря ни слова про то что следующий прием и лечение будут не по страховке.



В заметке расскажу как удалось сделать КТ челюсти с записью на диск, что такое формат данных DICOM и с помощью каких open source программ с ним можно работать. А также как и где мне удалось найти стоматологическую помощь.
Читать дальше →

Аспектно-ориентированное программирование. Основы

Время на прочтение4 мин
Количество просмотров42K
Продолжим тему, начатую в прошлой слесарно-программистской статье про AspectJ и open source расширение для этой библиотеки aspectj-scripting. В этой заметке рассмотрим какие задачи решает аспектно-ориентированное программирование (AOP) на примере и синтаксисе самой известной библиотеки среди адептов этой методологии. AspectJ — дитя Xerox PARC, теперь совершеннолетнее и живущее в Eclipse Foundation.


(фото из статьи на lurkmore про евроремонт)

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

Disclaimer: Я не теоретик, поэтому рассказанное в статье субъективно, пропущено через призму опыта.
Читать дальше →

Информация

В рейтинге
Не участвует
Откуда
Россия
Зарегистрирован
Активность