Игры, математика, программирование, и просто размышлизмы

среда, 2 октября 2013 г.

Баг с хайлайтером JXTable и способы его починки

Есть в свинге (swing) такая штука - JXTable, хорошая но бажная, поскольку находится в проекте лабс. И есть у этой штуки(равно, как и у других таблиц унаследованных от JTable) возможность выделить разным способом ячейки таблицы: цветом беграунда, размером и цветом шрифта и так далее. Существует множество дефолтных хайлайтеров, у дефолтного определяется нужно ли выделять ячейку с помощью предиката, который передаётся в конструктор.
      Всё вроде бы хорошо, но у дефолтного ColorHighlighter-а(он задаёт цвет беграунда и фореграунда) есть бага - если его задать, линии таблицы в выделенных ячейках пропадают. Фигово, товарищи.

Решается это дело добавлением другого хайлайтера PainterHighlighter. В него передаётся паинтер, который собственно и рисует линии таблицы.
Примерно так

public class InsteadGridPainter implements Painter {
    @Override
    public void paint(Graphics2D g, Object object, int width, int height) {

        g.setColor(Color.gray);
        g.drawLine(width - 1, 0, width - 1, height + 1);
        g.drawLine(0, height - 1, width, height - 1);

    }
}

Вот, этим нехитрым способом и можно побороть этот грёбаный баг

вторник, 28 мая 2013 г.

Тонкости настройки maven в Intellij Idea

В последних версиях идеи чтобы правильно заэкспортить maven проекты созданные с помощью третьего мейвена необходимо установить чекбокс "использование третьего мейвена".
Идем в файлы, настройки, мейвен, импорт и устанавливаем галку в "использование третьего мейвена"

среда, 17 апреля 2013 г.

Java Persistence with Hibernate устарела

Читаю я тут книжечку Java Persistence with Hibernate от некоего Кристиана Бауэра и Девида Кинга. Ну что сказать, книжечка хорошая, но ошибок там - туева хуча. Попробую другую завтра с утреца.

понедельник, 14 января 2013 г.

Проект для создания виртуальных миров castle


Проект моделирует мир населённый человекоподобными роботами: синтезирует восприятие роботами окружающей действительности и отвечает на их действия.
В составе средства предлагаются человекоподобные роботы исследущие окружающий мир с помощью сенсоров имитирующих органы чувств человека; видение(с помощью одного или нескольких глаз), проприоцепция и касание. В будущем планируется добавление и других органов чувств (однако судя по темпам развития проекта, это будущее может не настать никогда).
Состояние мира сохраняется с помощью реляционной базы данных, в проекте используется PostgreSQL, однако возможно выбрать любую другую реляционную базу. Существует так же возможность вмешиваться в работу программы с помощью сторонних приложений.
Средство создано с помощью pure Java(без сторонних фреймворков), 3D моделирование обеспечивается с помощью библиотеки Java 3D. Для верстки 3D конструкций предлагается средство collada(которое уже не поддерживается, по крайней мере сайт в не активном состоянии)
Ботов на для этого средства можно писать с помощью языков C++, Java, Python, Ruby и C#.
Для понимания возможностей средства разработчиками написано видео представленное по ссылке https://project.setcorp.com/castle/videos/egghunt/egghunt1.mpeg. На видео робот движется по сцене отыскивая яйца разного цвета попутно сталкиваясь с маленькими мячиками, которые от него отскакивают. Если робот подъезжает к яйцу, оно исчезает. После сбора четырёх яиц одного цвета появляются яйца другого цвета.

Данный проект обладает несколькими недостатками, на мой взгляд существенными. Главный из них это заброшенность проекта - последнее его обновление вышло в 2010-м году. Кроме того, мир, представленный на вышеуказанном видео беден, интересный мир с его помощью будет довольно сложно построить. Также, документирование средства слабое, в нём придётся разбираться попутно исправляя возможные ошибки разработчиков.
С другой стороны, проект бесплатный, поэтому может быть интересен в качестве бесплатного средства, которое можно развивать. Кроме того, декларируется восприятие роботов подобное человеческому. Возможно, проект можно развить усилиями нескольких энтузиастов.


четверг, 27 декабря 2012 г.

webots - программа для создания и моделирования роботов


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

Webots(http://www.cyberbotics.com) программное обеспечение предназначенное для эмуляции трехмерных мобильных роботов с учётом физических характеристик: ходящих, плавающих, летающих. Возможны так же комбинации, на пример плавающий и ходящий робот. Имеются и реальные реализации моделей, с помощью которых можно проверить созданные программы. В прошлом имелись два контеста, http://www.robotstadium.org (роботы играли в футбол) и http://www.ratslife.org (крысиный мир) но в данный момент деятельность этих контестов прекращена, почему неизвестно – на сайте информации нет.
Программа управляющая роботом в терминологии Webots называется «контроллер». Создать её можно на языках C/C++, Java, Python, язык MatLab. Существует так же возможность управлять роботами по TСP/IP, что даёт возможность писать агенты на других языках(к примеру на Lisp-е). Есть возможность создавать простые программы, пользуясь графическим языком e-puck(создаётся конечный автомат)
Мир – 3D описание свойств роботов и их окружения: физических свойств, типов объектов и т.п., организован в иерархической форме, для его создания используется внутренний DSL(Domain Specific Language) язык. Роботы с помощью этого языка описываются гибко: на этапе описания физических характеристик я могу не задумываться о том, какой язык используется для программирования собственно робота.
Данное программное обеспечение обеспечивает на первый взгляд довольно реалистичную физику моделируемых миров (используется физический движок Open Dynamic Engine)
Существует довольно неплохая документация на английском языке описывающая все ньюансы. Есть платный набор обучающих текстов(см. абзац ниже)
Версии программы существуют для windows xp, 7 и Vista, MacOS и Ubuntu. Она платная, существует две версии: образовательная и pro. На момент написания статьи pro версия стоила 2300 швейцарских франков(то есть 2500 долларов), что как по мне дороговастенько, образовательная версия стоит 320 швейцарских франков . Детальное цены можно посмотреть здесь http://www.cyberbotics.com/webots/.

Вывод: webots хорошо использовать для моделирования роботов и визуализации их поведения, однако это только движок - задачи пригодной для решения интеллектуальным агентом(как например в играх, он не предлагает).