Рубрика «java» - 272

Неправильное освобождение ресурсов — одна из наиболее часто допускаемых ошибок среди Java-программистов. Под ресурсом в данной статье я буду подразумевать всё, что реализует интерфейс java.io.Closeable. Итак, сразу к делу.

Будем рассматривать на примере OutputStream. Задача: получить на вход OutputStream, сделать некоторую полезную работу с ним, закрыть OutputStream.
Читать полностью »

в 9:17, , рубрики: class, java, метки: ,

image
Здравствуйте, читатели.

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

В общем, ни багфикса, ни исходников… Программа-то на яве, но обработана злобным протектором, переместившим примерно половину классов в пакет по умолчанию (такой код скомпилировать нельзя, но он выполняется нормально) и присвоившим им одинаковые имена в разном регистре. Про имена переменных и функций вообще молчу.

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

Ан нет. Программа скомпилирована под 7 версию java. Редакторы, которые я нашёл, в последний раз обновилялись несколько лет назад, но до сих пор исправно работали. А в этот раз я получил неработающий класс и горстку бесполезных сообщений об ошибках в крашрепорте одной из софтин. Выяснилось, что, кроме всего прочего, Jasmin код, полученный при помощи Javap, компилирует некорректно.

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

Осторожно, под катом могут быть велосипеды с квадратными колёсами.
Читать полностью »

В середине прошлого лета на программерскую рассылку отдела клиентских игр Mail.Ru Group пришло письмо – «Объявлен конкурс на позицию преподавателя курса Java в нашем совместном проекте с МГТУ им. Н. Э. Баумана». Как программист и сотрудник отдела я это письмо тоже получил. Как выпускник физтеха, а в прошлом преподаватель и научный работник, решил откликнуться.
Так для меня началась история работы преподавателем в Технопарке. Собственно об этом (о работе, о Технопарке, о своем курсе и о студентах) я и хочу вам рассказать.
Разработка сервера браузерной игры… как учебная дисциплина
Читать полностью »

Добрый день!
Нам нужны ваши мозги! :)

Приглашаем вас принять участие в конкурсе разработчиков под платформу Nokia Asha Touch.

Если вы пишете на Java или создаете веб-приложения, вас особенно заинтересует наш конкурс: участвуя в нем, вы сможете получить бесценный опыт, бесплатное продвижение и, конечно, шанс оказаться в числе победителей, которые разделят между собой призовой фонд в € 230000. Кроме того, разработка под платформу Nokia Asha Touch — это весьма перспективно, за неполный год было продано уже более 20.8 млн. устройств.


Читать полностью »

Главный архитектор платформы Java Марк Рейнхольд сегодня объявил в своём блоге, что выпуск Java 8 переехал с сентября этого года на март следующего. В последнее время много сил инженеров Oracle было брошено на борьбу с уязвимостями в Java, и поэтому сроки поехали.

Читать полностью »

Сегодня компания Oracle выпускает плановый набор Critical фиксов для Java. Обновления затрагивают Java SE (Standart Edition) версий 7 (7u15 и ниже), 6 (6u43 и ниже), 5 (5u41 и ниже). Исправлению подлежат 42 уязвимости, 39 из которых относятся к типу Remote Code Execution и могут быть успешно применены без фактической аутентификации, т. е. удаленно по сети, без применения логина и пароля для входа на удаленную систему (потенциальный drive-by installation).

Читать полностью »

Декомпиляция — процесс воссоздания исходного кода декомпилятором

Недавно я задался вопросом: Какой декомпилятор лучше?
Начал мучить Google, экспериментировать. В итоге нашел отличное решение. Как декомпильнуть любую программу и получить рабочие «исходники»? Об этом в сабже.Читать полностью »

Заранее оговорюсь что данная статья не претендует на подробное изучение стандартов WMS или огромных возможностей набора библиотек Geotools. Это лишь простое HOWTO(или если хотите, считайте это учебно-демонстрационной задачей), которого для выполнения своих задач я не нашел ни на Хабре ни где либо еще в полноценном варианте.

Постановка задачи

Задача заключается в том чтобы реализовать WMS отдающий прозрачный слой в формате PNG с нанесенными на него точками координаты которых записаны где-то в базе данных(способ хранения не столь важен). Уже в WMS клиенте этот слой можно накладывать на изображение другой карты.

Кратко о WMS

WMS это Web-сервис предоставляющий доступ к картографической информации по HTTP протоколу. Описание стандарта можно найти здесь http://www.opengeospatial.org/standards/wms. Параметры сервису передаются в Get-запросе. Стандарт WMS предусматривает три типа запроса.

  • GetCapabilities(обязательный) – Данный запрос возвращает информацию о возможностях сервиса, таких как набор слоев, стилей, возвращаемых форматах в виде XML-документа соответствующего XSD приведенному в описании стандарта.
  • GetMap(обязательный) – Основной тип запроса для WMS. Возвращает изображение, заданных в параметрах запроса размеров и формата, географической информации в области координат(BBOX) заданной системы координат.
  • GetFeatureInfo(опциональный) – Этот запрос возвращает более подробную информацию о географических объектах на карте полученной в предыдущем запросе. Не все WMS соответствующие стандарту обязаны поддерживать данный тип запроса. В случае если этот запрос не поддерживается сервис возвращает исключение OperationNotSupported.

Более подробную информацию ищите в документах по ссылке выше.
Читать полностью »

Здравствуйте уважаемые хабрачитатели. Мой рассказ как видно по названию темы пойдет о основе и особенностях создании adobe native extension(далее ANE) для Adobe AIR, в моем случаи расширения буду писать на java, для расширения функциональности AIR, на платформе Android. И так с вашего разрешения начнем.

Введение.

Что же такое ANE? Это инструмент который появился с версии Adobe AIR 3.0 и выше, он позволяет извлекать и выполнять куски нативного кода из среды AIR, условно мы можем выполнить любой нативный код. Выглядит расширение в виде скомпилированного файла библиотеки с расширением .ane.

Читать полностью »

Работа с API различных порталов — одна из самых распространенных задач, возникающих при разработке под Android. Казалось бы, ничего сложного — асинхронно посылать HTTP-запросы и отображать ответы, но дьявол, как всегда, кроется в деталях.
Написание простого приложения для работы с RESTful API под Android
Основные антипаттерны:

  • Отправка запроса прямо из кода Activity в основном треде — тут без комментариев, т.к. это приводит к заморозке UI, вследствие чего система может предложить убить приложением;
  • Отправка запроса из кода Activity при помощи AsyncTask — плохо, т.к. если пользователь, к примеру, повернет экран, Activity пересоздастся и запрос придется выполнять заново, что приводит увеличению времени ожидания и количества потребляемого трафика;
  • Отсутствие кэширования — после каждого действия пользователя ему придется ждать полной загрузки данных.

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js