четверг, 25 октября 2012 г.

Как мы можем передавать properties при запуске приложения

* Первый самый известный способ это через файлы *.properties, которые мы читаем из нашего приложения

* Через параметры командной строки
java -Dmy.property=myPropertyValue -Dmy.property2=myPropertyValue2 AppName

* Добавлением параметра в системную переменную JAVA_OPT

set "JAVA_OPTS=%JAVA_OPTS% -Dfile.encoding=UTF8 -Duser.timezone=GMT -Xmx1024m -XX:MaxPermSize=256m"

среда, 24 октября 2012 г.

org.springframework.util.ReflectionUtils

Волшебная штука позволяет например перебрать все поля класса:


ReflectionUtils.doWithFields(MyClass.class, new ReflectionUtils.FieldCallback() {
      @Override
      public void doWith(Field field) throws IllegalArgumentException, IllegalAccessException {
        String fieldVale = (String) field.get(null);
        MyAnnotation annotation = field.getAnnotation(MyAnnotation.class);
        //..other code
      }
    });

вторник, 23 октября 2012 г.

lambdaj

http://code.google.com/p/lambdaj/

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

понедельник, 22 октября 2012 г.

Кастомные поля в лайфрее

Их можно создавать для юзера и для организаций. Они еще называются Expandos.
Чтобы к ним обратиться из кода нужно также иметь определенные права.

String customAttr = (String)user.getExpandoBridge().getAttribute("customAttr");
Вместо строки мы можем сохранять/получать любой обьект, которые реализцет интерфейс серилизации.

воскресенье, 21 октября 2012 г.

Передача параметров в джава методы

Простые типы всегда передаются по значению.
Обьекты тоже передаются по значению, но ели внутри обьекту менять  его состояния через его методы или доступные поля, то эти измения остаются. Если же мы переприсвоели аргументу новые обьект, то с наружи сохранится все-равно предыдущий обьект.

пятница, 19 октября 2012 г.

Как вставить в документ значение поточного времени. Привязка макроса по нажатию кнопки на это.

1. Чтобы вставить время нужно Вставка->Поля->Время.  Так поточное время вставить в место, где стоит каретка.

среда, 17 октября 2012 г.

Отлючение фильтров минификатора скриптов и стилей через урл


Нужно добавить в параметры урла:

?js_fast_load=0&css_fast_load=0

понедельник, 15 октября 2012 г.

Встраивание портлеты в вебконтент

Для этого существует тег < runtime-portlet name="47" instance="4433" queryString=""/>, его вставляют в вебконтент, потом некий фильтр его находит и обеспечивает там вывод его результата.

воскресенье, 14 октября 2012 г.

Полиморфизм, два вида

Полиморфизм представлен в двух его видах:

1) Подтипы -- классический для объектно-ориентированного программирования, представлен в виде наследования, где мы можем передавать в места где ожидаются родительский тип(класс) наследников этого типа.
2) Обобщения(дженерики) -- пришел с функционального программирования, когда мы определяем что определенная функция может работать с любым типом, выполняя какие-то внутри обобщенные операции, для которых не важен тип. 

суббота, 13 октября 2012 г.

разница между полями класса определенными def и val

val - если там експрешин, то он выполняется только один раз, при создании инстранции.
def - ели тут експрешин, то он выполняется каждый раз когда, происходит обращение к полю.

пятница, 5 октября 2012 г.

Создание нового юзера и базы данных с одинаковыми именами и правами

CREATE DATABASE IF NOT EXISTS  `mydatabase` ;

CREATE USER 'username'@'hostname' IDENTIFIED BY  'password';
GRANT USAGE ON `mydatabase`.* TO  'username'@'hostname' IDENTIFIED BY  'password' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;

CREATE USER 'username'@'Host.IP.X.X' IDENTIFIED BY  'password';
GRANT USAGE ON `mydatabase`. * TO  'username'@'Host.IP.X.X' IDENTIFIED BY  'password' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;

GRANT ALL PRIVILEGES ON `mydatabase`.* TO  'username'@'hostname';
GRANT ALL PRIVILEGES ON `mydatabase`.* TO  'username'@'Host.IP.X.X';