Pull to refresh
-6
Алексей@java3000

Администратор windows умеющий в программирование

Send message

Подробно о задачах Gradle

Reading time24 min
Reach and readers132K


Перевод второй главы свободно распространяемой книги Building and Testing with Gradle

Задача (task) является основным компонентом процесса сборки в файле билда Gradle. Задачи представляют собой именованные наборы инструкций билда, которые Gradle запускает выполняя сборку приложения. При сравнении с другими билд-системами, задачи могут показаться знакомой абстракцией. Однако Gradle предоставляет более развитую модель, в отличие от той, которая вам уже может быть знакома. По сравнению с традиционными возможностями объявления операций билда, связанных зависимостями, задачи Gradle являются полнофункциональными объектами, которыми вы при желании можете управлять программно.

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

Java — это просто! Java и SNMP

Reading time3 min
Reach and readers22K
Посмотрел я на не слишком объемный блог JAVA и решил, что нужно поднимать его рейтинг. К тому же многие хабрики жалуются, что «хабр уже не тот». Возникла идея написать серию статей, продвигающих идею, что JAVA — это легко! Работаю я в среде интеграторов (берем готовые «жирные» системы, связываем в единый комплекс и продаем), и частенько возникает ситуация, когда что-то невозможно решить средствами интегрируемых систем. Тогда коллеги напрявляют прожектор в ночное небо и я иду им на помощь :). Поэтому частенько приходится использовать java в разных аспектах. Начнем с работы с SNMP. Протокол SNMP используется для управления сетью.
подробности

Новый лидер Java EE? WildFly 8 в InfoboxCloud IaaS. Часть 2. Режим домена

Reading time8 min
Reach and readers11K
В первой части мы развернули WildFly 8 в Облачный конструктор InfoboxCloud в режиме Standalone. Давайте посмотрим, как можно развернуть WildFly 8 в режиме домена.

Цель: развернуть WildFly 8 в режиме домена с отдельным контроллером домена и двумя хостами, на которых в режиме высокой доступности смогут исполняться по 2 сервера приложений WildFly.

image

Режим домена или автономный режим?


Автономный режим больше подходит для сценариев разработки, когда необходим только один сервер. Только в этом режиме будут работать Arquillian тесты. Так же автономный режим подходит, если вы используете множество WildFly серверов с самописной системой управления серверами.

Режим домена (Domain mode) позволяет централизовано управлять конфигурациями WildFly. Использование домена удобно для развертывания и поддержки кластеров, состоящих из нод WildFly.

Элементы WildFly в режиме домена:
image
Читать дальше →

Компиляция Try/Catch/Finally для JVM

Reading time7 min
Reach and readers22K

Вместо введения


Автор статьи, Alan Keefer1, является главным архитектором компании Guidewire Software2, разрабатывающей программное обеспечение для страхового бизнеса. Еще будучи старшим разработчиком, он участвовал в работе над языком Gosu3. В частности, Алан занимался вопросами компиляции языка в байт-код Java.

Данная статья написана в 2009 году и посвящена деталям реализации try/catch/finally в JVM версии 1.6. Для ее прочтения необходимо иметь базовые знания синтаксиса Java, а также понимать назначение байт-кода, простыни которого лежат под катом. Также в конце статьи приведен ряд примеров, похожих на каверзные задачи SCJP.

Внутренности JVM


Одной из вещей, над которой по целому ряду причин мы сейчас работаем, является компиляция нашего «домашнего» языка в байт-код Java. (Для справки: не могу сказать, когда мы закончим. Даже примерно. Даже попадет ли он в будущие релизы.) Веселье заключается в изучении внутренностей JVM, а также поиске всех долбанутых острых углов собственного языка. Но больше всего «веселья» и острых углов доставляют такие операторы, как try/catch/finally. Поэтому, на этот раз, я не буду вдаваться в философию или аджайл. Вместо этого я углублюсь в JVM, куда большинству не требуется (или не хочется) углубляться.

Если бы две недели назад вы спросили меня о finally-блоках, я бы предположил, что их обработка реализована в JVM: это базовая часть языка, она должна быть встроенной, не так ли? Каково же было мое удивление, когда я узнал: нет, не так. На самом деле finally-блоки просто подставляются во все возможны места после try- или связанных с ним catch-блоков. Эти блоки оборачиваются в «catch(Throwable)», который повторно выбросит исключение после того, как finally-блок закончит работу. Осталось только подкрутить таблицу исключений, чтобы подставленные finally-блоки были пропущены. Ну как? (Небольшой нюанс: до версии JVM 1.6 для оператора finally, по всей видимости, использовались подпограммы вместо полной подстановки. Но сейчас мы говорим о версии 1.6, к которой все вышесказанное применимо.)
Читать дальше →

WSO2: Настройка прокси к сервису с аутентификацией по логину и паролю

Reading time7 min
Reach and readers17K

Задача


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

Решение


Использовать шину: WSO2 Enterprise Service Bus, на которой настроить прокси-сервис.
Подробности

Обновление инструментов Java-разработчика для Windows Azure

Reading time3 min
Reach and readers3.6K
image

Microsoft Open Technologies анонсировали выпуск февральского обновления инструментов Windows Azure Toolkit for Eclipse, которые представляют собой набор инструментов с интеграцией в Eclipse для разработки Java-приложений для размещения их в облачном окружении Windows Azure.

В этом выпуске представлены следующие нововведения и обновления: поддержка SSL и SSL offloading, расширенная поддержка последних версий GlasFish и пакета Azul Zulu OpenJDK, новая опция для выбора экземпляров ролей A5, выбор Windows Server 2012 R2, улучшения в меню и новые опции. Ниже вы найдете описание этих новинок.

Поддержка SSL


Вместо требования к пользователю вручную конфигурировать каждый экземпляр Java-сервера для обработки SSL-сертификатов в Windows Azure, команда MS Open Tech разработала и предложила механизм SSL Offloading, который предлагает переложить работу с SSL на облачное окружение и компоненты виртуальной машины (IIS и ARR). Таким образом, после расшифровки запроса к вашему Java-серверу придет обычный HTTP-запрос, который после отправки будет зашифрован автоматически. Этот подход работает и со sticky-сессиями и с аутентификацией через ACS.
Читать дальше →

Простой вызов удалённых сервисных методов в одностраничных приложениях

Reading time3 min
Reach and readers9.6K
В этой статье, я хочу поделиться своим подходом в организации клиент-серверного взаимодействия, в одностраничных браузерных приложениях с серверной частью на Java.

Сокращённо, я называю этот подход «Json Remote Service Procedure Call» — JRSPC. (Не очень благозвучно, возможно, но из песни слова не выкинешь.)

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

Например, на сервере, определение бизнес-метода выглядит так:

@Component("testService")
public class TestService{
    @Remote
    public String testMethod(Long userId, String role, boolean test,
            List<User> users, User user){    
            ...
           return "ok"; 
    }   
}    


а его вызов на клиенте — так:

var params = [userId, role, true, [{id:1, login:"111"},  {id:2, login:"222"} ], {id:3, login:"333"}]
Server.call("testService", "testMethod",   params,  sucessCallback, errorCallback, controlWhichWillDisabledUntilResponse);	


Больше, при определении метода, нигде, никакого кода не пишется.

Как это работает

Особенности применения нелинейных схем для написания квест-игр

Reading time7 min
Reach and readers13K
В предыдущем моем посте (ссылка) сделано несколько серьезных замечаний и показаны основные недостатки игр жанра «поиск предметов» в рамках линейной схемы прохождения. Также, были приведены свойства, которыми должна обладать современная квест-игра.

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

Знаете ли Вы массивы?

Reading time5 min
Reach and readers130K
Думаю, мало кто из готовящихся к своему первому интервью, при приеме на первую работу в должности (pre)junior программиста, ответит на этот вопрос отрицательно. Или хотя бы усомнится в положительном ответе. Конечно, такая простая структура данных с прямым доступом по индексу — никаких подвохов! Нет, в некоторых языках типа JavaScript или PHP массивы, конечно, реализованы очень интересно и по сути являются много большим чем просто массив. Но речь не об этом, а о «традиционной» реализации массивов в виде «сплошного участка памяти». В этом случае на основании индексов и размера одного элемента просто вычисляется адрес и осуществляется доступ к соответствующему значению. Что тут сложного?
Давайте разберемся

Воспроизведение MIDI звуков на языке JAVA

Reading time7 min
Reach and readers27K
Прежде, чем перейти к сути, я немного расскажу вам о компьютерном звуке.

Существует два основных формата воспроизведения звуков компьютером:
цифровой (WAV-формат) и синтезированный (MIDI).

Цифровой звук является основным стандартом компьютерного звука сегодня. Именно оцифрованный звук вы слышите, проигрывая композиции в mp3 формате или прослушивая компакт-диски, просматривая фильм или играя в комьютерные игры.

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

Но существует и другой вид компьютерного звука — синтезированный (MIDI)
Читать дальше →

Масштабировать просто. Часть третья — стратегии

Reading time6 min
Reach and readers15K
В предыдущих частях (тут и тут) мы говорили об основных архитектурных принципах построения масштабируемых порталов. Сегодня продолжим разговор об оптимизации правильно построенного портала. Итак, стратегии масштабирования.
Читать дальше →

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

Reading time16 min
Reach and readers26K
Вы используете в своей работе SecureCRT? Вам много раз в день приходится заходить на различное оборудование в одном или нескольких пространствах ip адресов, отличающихся лишь одним-двумя конечными октетами и выполнять на них типовые задачи? Логин-пароль для входа на оборудование в вашей сети представлен одной-двумя комбинациями? Вы много думали над тем, как сделать так, чтобы все это делалось само, но боялись спросить? Или просто хотите вкратце узнать что в принципе можно сделать скриптом на SecureCRT? И так, SecureCRT + VBScript или «творчество в рутине». Добро пожаловать под кат.
Читать дальше →

IdBasedLocking

Reading time3 min
Reach and readers5.6K
У Java отличная поддержка параллелизма (concurrency) и блокировки (locking) — возможно, самая лучшая из тех, что предлагают современные языки. Кроме того, что в самом языке есть встроенная поддержка синхронизации, существует целый ряд полезных утилит на основе AQS framework. К ним относятся CountDownLatches, Barriers, Semaphores и прочие. Однако часто встречается ситуация, не поддерживающаяся напрямую: когда надо блокировать доступ не к конкретному объекту, а к идее этого объекта.

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

Пишем, собираем и запускаем HelloWorld для Android в блокноте

Reading time10 min
Reach and readers134K


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

По-сути эта статья является переводом и переработкой статьи Building Android programs on the command line под современные на данный момент JDK (7) и Android SDK (API level 19). Кроме того, я многое упростил и добавил кое-что от себя.

Используя только блокнот, мы напишем совсем маленькое учебное Android-приложение. А затем скомпилируем его, соберём и запустим на устройстве — и всё через командную строку. Заинтересовало? Тогда прошу.
Читать дальше →

Java ME Embedded на Raspberry Pi

Reading time6 min
Reach and readers31K

Насколько я могу судить, на Хабре да и не только, наблюдается всплеск интереса к микроконтроллерам — устройствам на базе ARM процессоров и другим не совсем обычным железкам. Рынок отвечает симметрично. Для удовлетворения возникшего спроса появились Arduino, Biggle Board, Raspberry Pi и множество других полезных штуковин.

С начала этого года прошло всего ничего, а на Хабре появились сразу две статьи о применении Java платформы на Rasprerry Pi «Raspberry Pi и чашечку Java, пожалуйста!» и «Raspberry PI и JAVA: пристальный взгляд». Вполне естественно, что в экспериментах использовалась привычная всем Java SE, порт которой под ARM появился около двух лет назад. Мало кто знает, что Java ME не почила с миром вместе с эрой кнопочных телефонов от Nokia. Она живет полноценной жизнью в новом мире — мире встроенных систем. О применении Java ME на Raspberry Pi я и хочу сегодня рассказать.
Читать дальше →

0day* уязвимости к Новому Году: ICQ, Ebay, Forbes, PayPal и AVG

Reading time3 min
Reach and readers32K
В одном из своих постов я пытался привлечь внимание к проблеме безответственного отношения к уязвимостям различных веб-сайтов. Представьте себе ситуацию: вы энтузиаст в области информационной безопасности, нашли уязвимости на каком-нибудь известном сайте и пытаетесь о ней сообщить, но:

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

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

BugsCollector.com — все security баги в одном месте

Reading time3 min
Reach and readers4.7K
image 2 с лишним года я старался радовать Хабр статьями (преимущественно, личными) в области информационной безопасности, по большей части в сфере веб. Делился знаниями, получал опыт и отзывы, знакомился с интересными людьми.


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

И, работая в этой сфере, я прочувствовал несколько проблем, решения для которых я не мог найти нигде. Я встречал и других людей, которые столкнулись с этим же. Но решения так и не было! И, тогда, я принял решение — решить, в первую очередь, свою проблему, и знать, что я точно помогу многим. Так и родился ресурс с говорящим за себя адресом — bugscollector.com.
Читать дальше →

AXFR — возвращение

Reading time3 min
Reach and readers44K
Эта статья о давно известном баге в конфигурации dns-серверов — разрешение на трансфер зоны любому юзеру. И о том, как я написал небольшой сканер для проверки конфигурации dns-серверов самых популярных сайтов. И где уязвимыми оказались банки, гос. сайты, провайдеры и многие другие важные ресурсы.

AXFR-запросы


Передача зоны DNS, AXFR — вид транзакции DNS. Является одним из механизмов репликации баз DNS между серверами © wikipedia

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

Простое оформление текстов

Level of difficultyEasy
Reading time6 min
Reach and readers17K
За последний месяц мне довелось обработать для размещения в вебе около пяти сотен вордовских страниц со сложным и разнородным содержимым: таблицами с вложенными ячейками, несколькими уровнями заголовков, пятью видами кавычек, подчеркиванием внутри полужирного наклоненного текста и, конечно же, массой ошибок оформления.
Сейчас такие задачи передо мною возникают редко — не то что во времена работы веб-мастером — но все-таки случаются. Да и вообще — разве можно в ИТ обойтись без навыков работы с текстами? Оформление документации, статей, деловых писем, в конце концов, развернутых комментариев — все это требует соблюдения определенных правил, которые иногда кажутся малозначительными, но фактически производят такой же эффект, как ошибки в коде — не позволяют решать задачу.

…Чтобы упростить работу и ускорить выполнение задачи, я использовал достижения техники на всю катушку — сложные регулярные выражения, пакетная обработка файлов, предварительно настроенные на очистку текстов от мусора формы, плагины редакторов для форматирования кода — все пошло в дело. Но с каждым днем все более очевидным становилось, что мы делаем двойную работу — кто-то потратил массу времени, чтобы «намусроить» в тексте, а теперь я привожу его к первоначальному состоянию! Конечно, гораздо проще было бы изначально делать текст более чистым.
Читать дальше →
12 ...
791

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity

Specialization

Десктоп разработчик, Администратор серверов
Младший
From 110,000 ₽
Java
Java Spring Framework
RESTful WebServices.
PostgreSQL
SQL
Hibernate
Linux
Базы данных
Microsoft SQL Server
Разработка программного обеспечения