Содержание
- 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. Скачать презентацию









































Организация ветвлений на Паскале
История развития баз данных
Алгоритм и его свойства
Инстаграм-программа Sprechen Sie Deutsch? (Разговариваете ли вы на немецком?)
Просте впорядкування даних
Инструмент для создания цветовых комбинаций на базе исходного изображения
Проектирование информационных систем. Структурные модели ПО (лекция 8)
Исключения. Работа с файлами
Fakultetus
Дискретное представление звуковой и видеоинформации
Полезные и интересные интернет-ресурсы
Базы данных и системы управления ими
Цифровое будущее
Программное обеспечение компьютера
OpenGL
Разработка класса Автопарк
Беспроводная сеть сбора метрологических данных
Архитектура и функциональные возможности Visual Studio Team Foundation Server
Xamarin_Lect2
Уроки практического программирования. Переменные и операторы
Крестики-нолики. Шаблон
Обзор промышленных сетей
C++1
Информатика, основные понятия
Персональное информационное пространство
Представление информации
Автоматизированная информационная система результатов обучающихся в детской спортивной школе
Introduction in test automation