-
Apples and oranges. Сравнение веб-фреймворков.
Этим летом ко мне обратился старый знакомый, который хотел начать разработку нового веб-проекта. Он хотел пообщаться/посоветоваться на тему современных инструментов (фреймворков) для разработки веб-приложений. Дело в том, что у него скорее планировалась не разработка нового, а переделка старого проекта, сделанного на JSP и сервлетах, базовая архитектура которого ваялась еще в начале 2000-ных. В прошлом я…
-
Про ASM и манипуляции с байт-кодом.
Больше месяца назад автор статьи Decrypting Java Malware using ASM прислал мне оригинальный текст на русском языке для публикации в блоге, с целью донести широкому кругу лиц определенные аспекты защиты программ написанных на java от действий недоброжелателей. Автор статьи — разработчик, который долгое время занимается разработкой средств для противодействия реверс-инжирингу и взлому ПО, специалист в…
-
Про старый добрый RMI
Не так давно, после многолетнего перерыва, в одном небольшом проекте использовал такую древнюю технологию как RMI. В итоге хотел поделиться общими впечатлениями и сделать небольшие заметки “для себя” на будущее. Задача была типовой — перебросить выполнение некоторых функций с одного сервера на другой, на котором установлено специальным образом настроенное оборудование и программное обеспечение. В результате…
-
Java и лямбда-выражения.
Ни для кого не секрет, что во второй половине 2013 года планируется выпуск Java 8 (UPD: на JavaOne 2013 в Москве сообщили, что выход восьмерки перенесут на 2014). Мне наконец-то надоело быть пассивным читателем всех этих многочисленных восторженных отзывов о нововведениях языка и я решил скачать предварительную версию JDK (благо она уже давно выложена) и…
-
Java. Примеры копирования файлов. Эволюция и революция.
Задачка копирование файлов в свое время была хорошим тестом для программистов. 1. Streams. До появления пакета NIO (New I/O, версия Java 1.4) многие использовали обычные потоки. public static void copy(File source, File dest) throws IOException { FileInputStream is = new FileInputStream(source); try { FileOutputStream os = new FileOutputStream(dest); try { byte[] buffer = new byte[4096];…
-
Java Security Update (Java 7u13)
Вышло долгожданное обновление Java! Oracle выпустил релиз даже раньше запланированного срока (изначально должен был выйти 19 февраля 2013г). В анонсе сказано, что обновление содержит 50 исправлений безопасности: Due to the threat posed by a successful attack, Oracle strongly recommends that customers apply CPU fixes as soon as possible. This Critical Patch Update contains 50 new…
-
Липкий запуск сервисов в Android-e.
В Android API есть такой абстрактный класс как Service. Он является наследником ContextWrapper-а, который в свою очередь является наследником Context-a. При некоторых допущениях можно относиться к сервисам как к “активити без UI” (хотя это не совсем правильно в деталях). Использовать сервис рекомендуется для задач не требующих прямого вмешательства пользователя. В документации особо акцентируется внимание на…
-
Андроидная венгерско-верблюжья нотация
Для разработчиков OC Android, как и для других серьёзных программистов, существует соглашение по оформлению кода. В целом оно совпадает с соглашением в обычной Java. Как именно нужно оформлять, можно прочитать на официальной странице для Android разработчиков. Привожу краткую справку по наименованию полей класса: НЕ паблики и НЕ статики должны начинаться с “m” (анг: Non-public, non-static…
-
Тренды программистских вакансий на indeed.com
Пару дней назад прочитал интересную статью на dzone.com с занятными графиками, которые показывали количество вакансий для программистов. В статье были опубликованы данные с сайтов: indeed.com и simplyhired.com Оба сайта имеют русскоязычный интерфейс, поэтому надеюсь, что приведенные графики отображали не только данные по США (как часто бывает), а мировые тренды. Хотя может быть это и не…
-
Примеры работы с JMeter в картинках
Приблизительно раз в год у меня возникает необходимость проводить пробное нагрузочное тестирование очередного проекта. Раньше приходилось сталкиваться с этой задачей чаще, но сейчас больше времени уходит на разработку под мобильные платформы (Android и т.д.) или создание программного обеспечения для решения внутренних инфраструктурных задач клиентов. В итоге каждый раз я судорожно вспоминаю как работать с jmeter-ом.…