Начиная работать в IntelliJ IDEA, обнаружил отсутствие удобной комбинации клавиш, которой пользуюсь в Eclipse — Ctrl+Alt+Up. По этой комбинации выделенный блок текста или строка, копируется вверх с перемещением курсора в начало скопированного блока.
В Idea есть действие по умолчанию на Ctrl+D, которое копирует блок вниз (Ctrl+Alt+Down в Eclipse), но невозможно добавить аналогичное действие вверх. После гугления, был задан вопрос в Q&A, оставшийся без ответа. Заведён issue на jetbrains. Все эти действия не дали ответа, поэтому решено было написать небольшой плагин для Idea.
Читать полностью »
Рубрика «java» - 253
Пишем плагин для IntelliJ IDEA, добавляем функциональности редактору кода
2013-04-29 в 20:16, admin, рубрики: eclipse, editor, hotkeys, intellij idea, java, javascript, plugin, метки: Eclipse, editor, hotkeys, intellij idea, pluginИзменения внутреннего представления строк в Java
2013-04-29 в 20:09, admin, рубрики: changes, hash, java, stringВступление
Это мой первый перевод статьи. Решил посвятить его Java, как ни странно. В статье рассказывается об изменениях строкового типа данных, которые произошли в Java.
ВАЖНО: 17 апдейт 7 версии Java не содержит изменений, описанных в этой статье.
Разделение массива символов char[]
В настоящей реализации класса String имеется 4 экземплярных поля: массив символов char[] value — содержащий символы строки, int offset — индекс первого используемого символа в массиве value, int count — количество используемых символов и int hash — кэшированное значение вычисленного хеш кода для данной строки. Как вы могли заметить, в большинстве случаев строка будет иметь значения offset = 0 и count = value.length. Единственное исключение из этого правила, возможно, когда строка создается путем вызова метода viaString.substring или любым методом, который использует данный метод (например, split).
Читать полностью »
Правильно освобождаем ресурсы в Java
2013-04-29 в 18:40, admin, рубрики: guava, java, метки: guava, java, try-catch Неправильное освобождение ресурсов — одна из наиболее часто допускаемых ошибок среди Java-программистов. Под ресурсом в данной статье я буду подразумевать всё, что реализует интерфейс java.io.Closeable
. Итак, сразу к делу.
Будем рассматривать на примере OutputStream
. Задача: получить на вход OutputStream
, сделать некоторую полезную работу с ним, закрыть OutputStream
.
Читать полностью »
Здравствуйте, читатели.
Понадобилось мне однажды внести небольшое изменение в программу (пожелавшую остаться неизвестной), чтобы избавить её от досадного глюка. Совсем копеечное, поменять порядок вызова функций. Перед этим я довольно долго переписывался с авторами, детально описал им причины возникновения ошибки и способы воспроизведения, даже видео присылал. Но то ли английский мой настолько плох, что не понимали они, то ли просто поленились (странный порядок вызова функций провоцировал появление ошибок в подключаемых модулях. Это не наша проблема, это проблема авторов тех модулей).
В общем, ни багфикса, ни исходников… Программа-то на яве, но обработана злобным протектором, переместившим примерно половину классов в пакет по умолчанию (такой код скомпилировать нельзя, но он выполняется нормально) и присвоившим им одинаковые имена в разном регистре. Про имена переменных и функций вообще молчу.
Декомпилятор мне не помощник, 1000 с хвостиком файлов с убийственной архитектурой я не потяну. Ну что же, — подумал я, — мы пойдём другим путём. Есть несколько софтин, редактирующих классы. Есть небольшой опыт ковыряния кода. Есть описания инструкций. Казалось бы, в чём проблема?
Ан нет. Программа скомпилирована под 7 версию java. Редакторы, которые я нашёл, в последний раз обновилялись несколько лет назад, но до сих пор исправно работали. А в этот раз я получил неработающий класс и горстку бесполезных сообщений об ошибках в крашрепорте одной из софтин. Выяснилось, что, кроме всего прочего, Jasmin код, полученный при помощи Javap, компилирует некорректно.
Что нам стоит дом построить? Я решил не мелочиться и написать свой редактор. Или хотя бы парсер class-файлов, о процессе создания которого и написана эта статья.
Осторожно, под катом могут быть велосипеды с квадратными колёсами.
Читать полностью »
Разработка сервера браузерной игры… как учебная дисциплина
2013-04-25 в 10:01, admin, рубрики: java, mail.ru, Блог компании Mail.Ru Group, образование, Программирование, технопарк, метки: mail.ru, образование, Программирование, технопарк В середине прошлого лета на программерскую рассылку отдела клиентских игр Mail.Ru Group пришло письмо – «Объявлен конкурс на позицию преподавателя курса Java в нашем совместном проекте с МГТУ им. Н. Э. Баумана». Как программист и сотрудник отдела я это письмо тоже получил. Как выпускник физтеха, а в прошлом преподаватель и научный работник, решил откликнуться.
Так для меня началась история работы преподавателем в Технопарке. Собственно об этом (о работе, о Технопарке, о своем курсе и о студентах) я и хочу вам рассказать.
Читать полностью »
Конкурс разработчиков для Nokia Asha
2013-04-23 в 13:28, admin, рубрики: asha, Competition, development, java, nokia, Nokia Asha, Блог компании Nokia, метки: asha, competition, development, java, nokia, Nokia Asha Добрый день!
Нам нужны ваши мозги! :)
Приглашаем вас принять участие в конкурсе разработчиков под платформу Nokia Asha Touch.
Если вы пишете на Java или создаете веб-приложения, вас особенно заинтересует наш конкурс: участвуя в нем, вы сможете получить бесценный опыт, бесплатное продвижение и, конечно, шанс оказаться в числе победителей, которые разделят между собой призовой фонд в € 230000. Кроме того, разработка под платформу Nokia Asha Touch — это весьма перспективно, за неполный год было продано уже более 20.8 млн. устройств.
Релиз Java 8 передвинут на март 2014 года
2013-04-18 в 22:35, admin, рубрики: java, lambda, oracle, security, метки: java, lambda, oracle, securityГлавный архитектор платформы Java Марк Рейнхольд сегодня объявил в своём блоге, что выпуск Java 8 переехал с сентября этого года на март следующего. В последнее время много сил инженеров Oracle было брошено на борьбу с уязвимостями в Java, и поэтому сроки поехали.
Oracle исправляет 42 уязвимости в Java
2013-04-16 в 19:54, admin, рубрики: java, Блог компании ESET NOD32, информационная безопасность, метки: javaСегодня компания Oracle выпускает плановый набор Critical фиксов для Java. Обновления затрагивают Java SE (Standart Edition) версий 7 (7u15 и ниже), 6 (6u43 и ниже), 5 (5u41 и ниже). Исправлению подлежат 42 уязвимости, 39 из которых относятся к типу Remote Code Execution и могут быть успешно применены без фактической аутентификации, т. е. удаленно по сети, без применения логина и пароля для входа на удаленную систему (потенциальный drive-by installation).
Декомпиляция Java приложений
2013-04-16 в 14:28, admin, рубрики: java, декомпиляция, метки: java, декомпиляцияДекомпиляция — процесс воссоздания исходного кода декомпилятором
Недавно я задался вопросом: Какой декомпилятор лучше?
Начал мучить Google, экспериментировать. В итоге нашел отличное решение. Как декомпильнуть любую программу и получить рабочие «исходники»? Об этом в сабже.Читать полностью »
Web Map Service (WMS) Implementation с использованием Geotools
2013-04-16 в 10:42, admin, рубрики: java, wms, Программирование, метки: java, wmsЗаранее оговорюсь что данная статья не претендует на подробное изучение стандартов 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.
Более подробную информацию ищите в документах по ссылке выше.
Читать полностью »