суббота, октября 08, 2011

Java 'trace to log method call' Aspect

Tried to find that tiny java aspect somewhere in open source but failed. Wrote it myself and published here.  Might be will save a couple of hours for someone.

Short introductory example. Instead of such input args logging:
     @Override
    @Transactional(value = "incidents", readOnly = true)
    public CasesPage getHistoryFor(
        @NotNull ClientId clientId,
        @Nullable SubscriberId subscriberId,
        @Nullable Subject subject,
        @Nullable Category category,
        int offset, int limit
    ) {
        if (LOG.isTraceEnabled()) {
            LOG.trace("getHistoryFor(");
            LOG.trace(" clientId={},", clientId);
            LOG.trace(" subscriberId={},", subscriberId);
            LOG.trace(" subject={}, ", subject);
            LOG.trace(" category={}, ", category);
            LOG.trace(" offset={}, ", offset);
            LOG.trace(" limit={}", limit);
            LOG.trace(")");
        }
        
        //method body (business logic)...
you could simply mark method with annotation:
    @Override
    @Transactional(value = "incidents", readOnly = true)
    @Trace(traceArgs = true, traceRetrunValue = true)
    public CasesPage getHistoryFor(
        @NotNull ClientId clientId,
        @Nullable SubscriberId subscriberId,
        @Nullable Subject subject,
        @Nullable Category category,
        int offset, int limit
    ) {
        
        //method body (business logic)...
and get this in your logs:

13:23:47,250 TRACE getHistoryFor(Client{1,22131},SubscriberId{2,1212121},Subject{id=12, name="12"}, INFORMATION, 1, 100)
...
13:23:47,274 TRACE getHistoryFor() => CasesPage{size=12}

воскресенье, июля 31, 2011

@Index on @Emebeddable (Components) properties in hibernate

Spend about a hour to understand how to apply @Index on several properties of @Embeddable (Components) in Hibernate. To compensate lack of documentation posting example here:

@Embeddable
@AttributeOverrides({
@AttributeOverride(
name = "instanceMnemo",
column = @Column(name = "subscriber_instance_mnemo")
),
@AttributeOverride(
name = "localId",
column = @Column(name = "subscriber_local_id")
)
})
public final class SubscriberId {
//...
private final int instanceMnemo;
private final BigDecimal localId;
}

@Entity
@org.hibernate.annotations.Table(
appliesTo = "incident",
indexes = {
@Index(
name = "incidnet_subscriber_idx",
columnNames = {"subscriber_instance_mnemo", "subscriber_local_id"}
)
}
)
public class Incident {
@Embedded
private SubscriberId subscriberId;

//...

This results that on "incident" table will be created complex index of "subscriber_instance_mnemo" and "subscriber_local_id" columns

суббота, декабря 18, 2010

Масштабируем размеры vk flex приложения

Предположим вы решили написать приложение для vk на flex.

В vk жутко маленький шрифт. Чтобы там что-то прочитать я нажимаю в chromе ctrl-plus (увеличить zoom страницы) и читаю все в приемлемых размерах.

Если вы хотите, чтобы Ваше vk-flex-приложение (без контейнера) увеличило свои размеры вслед за страничкой, вам нужно будет сказать такое заклинание:


<mx:Application
 width="807"
 height="650"
 preinitialize="systemManager.stage.scaleMode = 'exactFit'">
...
</mx:Application>


Я имею в виду то, что твориться в обработчике preinitialize

вторник, мая 08, 2007

пятница, октября 13, 2006

Печенье

Варя после бессонной ночи. Утром детей накормила, поиграла, спать уложила. В головое туман, мысли не то что не бегают - ползают как улитки.

Убирается после утреннего нашествия. Подимает детские штаны, отцепляет коричневый комочек. Мысли в голове, с большими паузами, очень неспешно, сначало по спинному мозгу, через шею к серому веществу:

- какашка или печенье..?..

пауза, следующая неспешная мысль

- скорее всего печенье...
- дай-ка пропробую на вкус...

берет, пихает в рот, пробует:

- и откуда тут печенью такого цвета взяться на штанах

четверг, октября 12, 2006

Анализы

Cедня, смотрю, мама Костяна называет Антоном, а Антона - Костяном. Начинаем спорить. Варя говорит: "Я по кофтам их отличаю, на Косте всегда синяя, Антон в красной". Приходит няня. Да, говорит, перепутала ты, Варя, кофты.
Проходит минут десять. Варя: "Как же мы теперь с анализами раберемся? Я совсем запуталась, где чья баночка и кто куда писал".

воскресенье, мая 07, 2006

IMG_1831


И часто мы только в старости узнаем то, что бессознательно так хорошо знали в детстве

Л.Н. Толстой