Сообщения

Netbeans. Сборка обфусцированного Java-приложения

Разрабатывая приложения на языке Java, иногда приходится уменьшить размер выходного jar-файла, оптимизировать его и защитить от посторонних глаз. В этом помогает обфускатор ProGuard . Сейчас я расскажу, как это сделать в Netbeans IDE. Первым делом нужно скачать ProGuard и распаковать его в какую-нибудь директорию. Нам нужен всего один файл lib/ proguard.jar , скопируем его в папку proguard, которую создадим в корне папки Java-проекта. Например: ..\NetBeansProjects\SomeProject\proguard Далее, в этой же папке следует создать файл конфигурации с расширением .pro, допустим это будет java.pro . Впишем в этот файл такой текст: -printmapping out.map -printusage out.txt -renamesourcefileattribute SourceFile -keepattributes SourceFile,LineNumberTable,Deprecated,Signature,InnerClasses -keepattributes *Annotation* -keepclasseswithmembers public class * { public static void main(java.lang.String[]); } -keepclasseswithmembernames class * { native ; } -keepclassmembers class * extends j...

Вася в роли компилятора

Василий Викторович (далее просто Вася) работал в конторе уже третий год. Программист по образованию, он был на хорошем счету у директора Александра Ивановича, тот нисколько не сомневался в его профессиональных навыках и готов был доверить ему любую важную задачу. Директор часто набирал новых сотрудников в помощь Васе, но все они подолгу не задерживались - Вася жаловался, что, мол, плохие с них программисты, работать не хотят, пишут код, в котором сам чёрт ногу сломит, к тому же пичкают повсюду своё ООП и паттерны.  - Вася, так может ты сам поработаешь? Уже десять человек уволили... Понимаю, специалистов в наше время не сыскать, понимаю, одному работать трудно, но может всё-таки попробуешь, а?  - Иваныч, я бы с радостью, но кто тогда мелкими делами будет заниматься? Я пишу важнейшие вещи, а отвлекаться на пустяки всегда очень трудно. Найди мне хорошего человека, Иваныч! Я верю, однажды попадётся тот самый, который сможет работать как я, а то и лучше!  - Да что ты,...

Пишем компилятор ассемблера на Java

Изображение
Последние две лабораторные работы по системному программированию были посвящены разработке анализатора и компилятора для языка Assembler. Тема интересная, а поскольку я ничего подобного никогда в жизни не делал, то с удовольствием взялся за дело. Писал, конечно же на Java, так как понимал, что придётся много работать со строками. В прочем, обо всём по порядку.

ScreenWeather - погодный информер с Metro-подобным интерфейсом

Изображение
 Эта запись - дневник разработки. В ней я хотел бы осветить подробности создания программы: от возникновения идеи до её реализации. Если Вы пришли сюда исключительно чтобы скачать программу, то смело листайте в конец записи (а еще лучше сюда (версия 2.0) , там приведена ссылка на загрузку.  День первый. Идея. "Идея. Она живуча и очень заразна." (К/ф Начало).  Всё началось с того, что мои родители перед походом на дачу смотрели погоду, чтобы узнать, не застанет ли их дождь и чтобы знать, стоит ли поливать участок или же дождь сделает это за них. Для этих целей у нас был только один виджет погоды, и он не всегда соответствовал действительности. Вот тут-то у меня и возникла идея написать программу, где будет сразу несколько погодных информеров, чтобы можно было сравнить данные. Идея положена, теперь нужно найти информацию. На первом же запросе Google выдал мне несколько хороших погодных сервисов со свободными API, я в них успешно зарегистрировался и уже через два час...

Универсальный бот для игры Flood-It

Изображение
 В последнее время увлёкся игрой Flood-It . Это простенькая логическая игра, целью которой за минимальное количество шагов разукрасить всё поле одним из шести цветов. Игровое поле Flood-It  Прочитав на Хабре статью  про автоматизацию игры Flood-It, мне захотелось написать подобную программу, но более универсальную. Вооружившись тетрадкой и ручкой, я расписал план действий: распознать игровое поле и его параметры; перевести графическое представление поля в логическое (массив чисел); найти последовательность оптимальных вариантов заливки; автоматизировать процесс игры.  Отобразить результат.  По поводу последнего пункта: автоматизировать процесс, значит автоматически кликать на кнопки, отвечающие за заливку. Как правило, эти кнопки находятся за пределами игрового поля, но поскольку мы пишем универсальную программу, то кнопки также придётся находить автоматически. Немного подумав, я пришел к выводу, что лучше этого не делать, а просто вывести результа...

Как я разбирал жесткий диск

Изображение
 Однажды, в солнечное октябрьское утро, захотелось мне разобрать свой старенький винчестер, дабы посмотреть своими глазами, что же там внутри. Жесткий диск прослужил мне целых два с половиной года, и однажды, при включении, BIOS выдал мне такую фразу "Hard drive error". При этом внутри жесткого диска всё скрипело и щелкало. Я отложил его до "лучших времён". И вот сегодня эти "лучшие времена" и настали.  Действующим лицом нашего спектакля будет HDD от Western Digital с 320 Гб памяти.

Написание бота для онлайн игры

Изображение
 Не так давно, просматривая ленту на Хабре, наткнулся на такую вот статью . Бегло просмотрев её, я решил сделать подобное на своём родном языке Java. Сейчас постараюсь в точности описать ход своих мыслей и идей. Приступим.  Первым делом нужно было узнать, умеет ли Java работать с мышкой? Интуиция выдала стопроцентный положительный результат, затем, через десять секунд был введён запрос в Google и получено подтверждение - в таких делах наш помощник это класс java.awt.Robot. Он умеет получать изображение с экрана, эмулировать нажатия клавиш и управлять мышью. То что нужно. Для начала решил освоить этот класс, для этого написал метод, который "набирал" переданный ему текст. Исходный код этого метода выглядит так: /**  * Автоматическое написание сообщения  * @param text "печатаемый текст"  */ public void writeMessage(String text) {     for (char symbol : text.toCharArray()) {         boolean needShiftPress = Character...