Содержание
- 2. Smart1: система бронирования ТВ-рекламы Вся реклама на телеканалах 1+1, 2+2, ТЕТ, CITI продается через Smart1 Месячный
- 4. Архитектура CentOS 4.1.2 PostgreSQL 8.4.4 Tomcat 6.0.20 Hibernate 3.3.x Ehcache 2.1.0 Java 1.6 64-Bit server GWT
- 5. Разработка Java 1.6 64-Bit server IntelliJ IDEA 10 GIT Maven 2 Jetbrains TeamCity 6.0.3 Selenium 1.0.2
- 6. Производительность Денормализация структуры БД Тяжелые отчеты обновляются по расписанию Ряд задач выполняется только ночью HP Proliant
- 7. Строки кода
- 8. От Java к Groovy Smart1 - наш второй groovy проект До перехода сомнения: что такого принципиального
- 9. Опрос: Насколько Groovy эффективнее Java? 4-6 раз, коллеги Я бы сказал 2-3 раза, Алекс Ткачман Я
- 10. Groovy - это гораздо больше, чем убрать из Java ; и типы! значительно меньше кода код
- 11. Коротко и выразительно! Взять все проходящие размещения и отсортировать сначала по цене, потом по дате создания
- 12. List bookedPlacements = new ArrayList(); for (Placement placement : placements) { if (placement.isBooked()) { bookedPlacements.add(placement); }
- 13. Коротко и выразительно! Вернуть короткие названия бюджетных месяцев def monthNames = budgets*.month*.shortName List monthNames = new
- 14. Коротко и выразительно! Эфирное время конца программы – это время начала первого из послепрограмных блоков, либо
- 15. List afterBlocks = new ArrayList (); for (Block block : blocks) { if (block.getPosition() == AFTER)
- 16. Коротко и выразительно! Если плательщик задан, то вернуть его, иначе взять плательщика из прошлого периода. Если
- 17. if (payee != null) { return payee; } if (getPrevInYear() != null && getPrevInYear().getPayee() != null)
- 18. Немного сложнее? Взять размещения из самой популярной категории placements.groupBy { it.category }.collect {it} .sort {it.value.size()}.last().value
- 19. Java, с использованием «библиотечных» groupBy и last: List groupsList = new ArrayList((Util.groupBy(placements, new GroupSelector () {
- 20. Java, прямая реализация: Map > categoryPlacements = new HashMap >(); for (Placement placement : placements) {
- 21. Сила Closure Настоящие возможности открываются, когда мы понимаем что такое Closure sort, findAll, groupBy и т.п
- 22. Сила Closure Получить Map время, на название (названия уникальны для времени) placements.mapUnique(‘time’) { it.name } Map
- 23. Расширение существующих классов Мы можем добавлять методы и поля к уже написанным классам без наследования. Наш
- 24. Расширение существующих классов Методы у Object дают нам следующий синтаксис: transaction { new User(‘New User’).dbStore() }
- 25. Расширение существующих классов Сделаем немного удобнее Hibernate Criteria API: def clientGroups = RobotGroup.dbQuery.with { eq('deleted', false)
- 26. DSL делается легко count = 0 new SwingBuilder().edt { frame(title: 'Frame', size: [300, 300], show: true)
- 27. JFrame frame = new JFrame("Frame"); frame.setSize(300, 300); frame.setLayout(new BorderLayout()); final JLabel label = new JLabel("Click the
- 28. DSL делается легко shopList(client, 2011, 'Test ShopList', primePercent: 70) { discount(offPrime: -10.disc) channelSl(channel, lowDiscount: -30.disc) {
- 29. Selenium junit тест void testPlace_SpotClient() { runTest( agent, { chooseCampaigns 'XC' placeClick getBlock(1), 'XC' waitForError 'No
- 30. Динамика Динамическое программирование позволяет нам понять что такое повторное использование по настоящему! Например давайте перестанем каждый
- 31. Bidirectional Association class Program { @OneToMany (mappedBy = "_program") Set _blocks = [] } class Block
- 32. Bidirectional Association И теперь мы сразу можем работать: def p = new Program() def b =
- 33. Bidirectional Association Этого писать не нужно: class Program { ... void addBlock(Block b) { b._program =
- 34. Lazy initialization Этого писать не нужно: class MonthBudget { ... Centi __actualBudget() { ... calculation }
- 35. Но не все так хорошо Скорость? IDE?
- 36. Реально тормоз! Groovy работает в 10 раз медленнее Java
- 37. Benchmark Groovy, Grovy++, Java https://github.com/alextkachman/fib-benchmark
- 38. Но на этом можно работать Groovy работает также как Python, Ruby, PHP и т.п.
- 39. Benchmark Java, Python, Ruby http://shootout.alioth.debian.org/
- 40. Скорость Groovy не забываем, что часто узкое место база данных любой фрагмент можно переписать на java
- 41. Groovy++ Статически типизированное расширение Groovy По скорости выполнения почти не уступает Java Может рассматриваться как альтернатива
- 42. IDEA IDEA в целом очень хорошо поддерживает groovy: Для работы с динамическими методами и полями в
- 44. Скачать презентацию









































Программные продукты, выполняющие АВС анализ
Процесс взаимодействия с IT
Задачи и решения для модуля: цикл for
Современные технологии разработки ПО
Сложные условия
Практическая работа в Power Point № 2
Информационная комиссия (2 часть)
Электронный документооборот
Мемы
Инструмент для создания цветовых комбинаций на базе исходного изображения
Переполнение. Системы счисления
Первый полёт
Google Chrome
Презентация на тему Что такое пиксель
Формирование информационной культуры школьников
Электронно-библиотечная система консультант студента
Статистика_ЗаконодательствоИнформационная безопасность
Система координат. Графические операторы Basica
Технология составления компьютерных тестов средствами Excel
Введение в машинное обучение
Защита информации
Презентация
Кластерные структуры
Медиаплееры
9-1-5
Словесные информационные модели. 7 класс
Использование Удаленного Доступа В Windows Server 2012 R2
Средства организации чертежа в САПР. Слои и свойства объектов