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

среда, 30 июля 2014 г.

GXT обновление дерева vs обновление грида

Оказывается, в отличии от дерева, которое рисуется всё сразу, грид рисуется по кусочкам.
Поэтому чтобы как либо видоизменить view после апдейта(например нарисовать что либо на нём) надо дождаться полной отрисовки. Иначе изменения могут затереться.

Самый простой способ - запустить таймер. Делается это так

   @Override
    public void recalculate() {
        // TODO Auto-generated method stub
        super.recalculate();
 
            Timer timer = new Timer() {
                @Override
                public void run() {
                   //do something
                   
                }
            };
           
        timer.schedule(SOME_TIME);
    }

пятница, 25 июля 2014 г.

gxt как сохранить позицию скролла в дереве после апдейта.

Да очень просто, внимание на экран.

TreePanel{
    //....
    protected void onScroll(TreePanelEvent tpe) {
     target = tpe.getTarget();
     vScroll = target.getScrollTop();
    hScroll = target.getScrollLeft();
    //do something
  }

 //...

 @Override
  public void recalculate() {
    super.recalculate();
    //do something
    if (target!=null){
        target.setScrollTop(vScroll);
        target.setScrollLeft(hScroll);
       
    }
  }


}

среда, 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-м году. Кроме того, мир, представленный на вышеуказанном видео беден, интересный мир с его помощью будет довольно сложно построить. Также, документирование средства слабое, в нём придётся разбираться попутно исправляя возможные ошибки разработчиков.
С другой стороны, проект бесплатный, поэтому может быть интересен в качестве бесплатного средства, которое можно развивать. Кроме того, декларируется восприятие роботов подобное человеческому. Возможно, проект можно развить усилиями нескольких энтузиастов.