четверг, 29 мая 2014 г.

Способ ручного мониторинга логов

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

Вот что получилось:
tail -f logs/app.log \
| egrep -A3 "^(DEBUG|INFO|WARN|ERROR)"

Ну а где-то выключение все же полезно:
tail -f ums.log \
| egrep -v "^INFO.*NotifyBalanceChange" \
| egrep -v "^INFO.*Ping"
Вместо egrep можно пользоваться grep -E

среда, 28 мая 2014 г.

Подключение JPA настроек в приложении Spring Web MVC

Для этого нам нужно в web.xml подключить лисенер и предоставить для него context-param с именем contextConfigLocation, в нем должен находится путь к файлу настрое контекста, вринципе любого, но в нашем даном конкретном случае JPA
<context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:jpaContext.xml</param-value>
    </context-param>
    
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
Разберемся за что отвечает jpaContext.xml, который мы используем всместо persistence.xml. Его имя не обязно быть таким как мы его определили в web.xml - оно будет таким как мы его определим, но по смыслу оно таково как мы его сейчас назвали.

Этот файл содержит:
- EntityManagerFactory;
  - JPA Vendor;
  - JPA Properties;
- Transaction Manager;
- Annotation configuration;
- Datasource configuration or lookup.

EntityManagerFactory представлен в spring классом LocalContainerEntityManagerFactoryBean:
  - класс находится в spring-orm.jar;
  - представляет собой наш персистенс модуль;
  - впрыскивает датасорс, если такой не определен в нашем персистенс модуле;
  - поставляет специфические JPA свойства


Еще такой прикол в SpringMVC-Hibernate приложении. Чтобы у нас все работало гладко и с транзакциями, мы должны сканировать пакеты репозиториев, моделей и сервисов в  jpaContext.xml. Потому что аннотация @Transactional, которой помечаются методы сервисов, должна именно обрабатываться бинами из контекста  jpaContext.xml. Хоть на сервисы есть ссылки и с контроллеров, но как показывает практитка указав для сканирования только пакет с контроллерами в servlet-context.xml все работает - контейнер предоставляет сервисы из контекста  jpaContext.xml, но вот наоборот не работает.



persistence.xml

persistence.xml - в этом файле настраивается фреймворк JPA, определяются следующие настройки:
 - Datasource;
 - Allowed Operations;
 - Caching;
 - Etc.

Но если мы работаем в связке со Spring, мы оставляем этот файл пустым и используем файлы конфигурации спринга. Почему так?
 - можно перегружать настройки для конкретного энваеренмента;
 - легче проводить тестирование;
 - можно вспрыскивать в другие ресурсы.

Но не нужно забывать, что мы все еще нуждаемся в этом файле настроек, хоть и пустой.


вторник, 27 мая 2014 г.

Блин! Нафиг я делал этот мердж? - Отмена мерджа с конфликтами.

После версии включительно 1.7.4
git merge --abort

До версии 1.7.4:
git reset --merge

До версии 1.6.2. Оно по сути делает то же самое, что и команда выше:
git reset --hard



Теперь ты понимаешь что пулиться нудно было так, что ты и делаешь:
git pull -Xtheirs


Если же мерджим локальные бранчи то:
git merge --strategy-option theirs branch_name


понедельник, 26 мая 2014 г.

Mac OS X. Создать симлинку с /home на /Users

EDITOR=nano sudo -e /etc/auto_master
# add a "#" at the start of the line beginning with /home
# save changes
sudo automount -cv
sudo ln -s /Users /home

mac os git by homebrew

Andriis-MacBook-Pro-2:~ aieremenko$ brew install git
==> Downloading https://downloads.sf.net/project/machomebrew/Bottles/git-1.9.3.mavericks.bottle.1.tar.gz
######################################################################## 100.0%
==> Pouring git-1.9.3.mavericks.bottle.1.tar.gz
==> Caveats
The OS X keychain credential helper has been installed to:
  /usr/local/bin/git-credential-osxkeychain

The 'contrib' directory has been installed to:
  /usr/local/share/git-core/contrib

Bash completion has been installed to:
  /usr/local/etc/bash_completion.d

zsh completion has been installed to:
  /usr/local/share/zsh/site-functions
==> Summary

🍺  /usr/local/Cellar/git/1.9.3: 1325 files, 31M

пятница, 23 мая 2014 г.

Angularjs - общий конспект

  • Directives - HTML annotations that trigger Javascript behaviors
  • Modules - Where our application components live
  • Controllers - Where we add application behavior
  • Expressions - ow values get displayed within the page

среда, 7 мая 2014 г.

liquibase, сброс чексумм

Иногда мы замечаем, что форматирование какого-нибудь ченджсета желает быть учучшенным, но исправить его означает, вызвать панику liquibase и не позволить запустить приложение, потому что это будет выглядеть какбудто изменение в уже историческом изменении.

Чтобы обнулить чексуммы, чтобы изменения уже в примененных "изменениях базы" были восприняты, как тоже самое, но с улученным форматированием (то есть без повторного вызова указанных ченджсетов), нужно подправить записи в таблице логирования liquibase:
update DATABASECHANGELOG set MD5SUM=null;