Основные новшества Java 9, которые, на мой взгляд, наиболее актуальны.
Здоровая критика и дополнения приветствуются. Есть текстовый документ, где всё это расписано немного подробнее.
Methods for building dialog agents and the technologies we used Grid Dynamics
Chatbots have now become an integral part of software development, which are closely related to both NLP and ML. The present report highlights the basic concepts and approaches of working with NLP by implementing dialogue agents (Intent classification, NER, Slot Filing), and you can also find out how to build an entire dialog system. No SaaS, only in-house solutions!
Вступительная лекция по Java. История появления, идеи, сферы применения, место среди других языков, экосистема. Структурированная информация о Java, как о языке программирования.
Под эту лекцию имеется более развёрнутый материал. Кому интересно - пишите.
Конструктивная критика приветствуется.
Основные новшества Java 9, которые, на мой взгляд, наиболее актуальны.
Здоровая критика и дополнения приветствуются. Есть текстовый документ, где всё это расписано немного подробнее.
Methods for building dialog agents and the technologies we used Grid Dynamics
Chatbots have now become an integral part of software development, which are closely related to both NLP and ML. The present report highlights the basic concepts and approaches of working with NLP by implementing dialogue agents (Intent classification, NER, Slot Filing), and you can also find out how to build an entire dialog system. No SaaS, only in-house solutions!
Вступительная лекция по Java. История появления, идеи, сферы применения, место среди других языков, экосистема. Структурированная информация о Java, как о языке программирования.
Под эту лекцию имеется более развёрнутый материал. Кому интересно - пишите.
Конструктивная критика приветствуется.
С ростом кодовой базы становится все более очевидной необходимость использования компонентного подхода, когда каждая логическая часть обособлена. Если говорить про JavaScript, то в нем есть области видимости, опираясь на которые можно соорудить изолированные компоненты. Но в CSS нет подобных механизмов, поэтому и придумываются Shadow DOM (Web Components) и различные методики вроде БЭМ.
Но что если взглянуть на проблему под другим углом? Адаптируя подходы, что уже используются для других задач, можно получить куда больше выгоды, чем просто изолированные стили!
FrontendConf, Москва, 21 мая 2015
WSD, Санкт-Петербург, 20 июня 2015
Запись трансляции: https://youtu.be/V7bnSOwuO4M?t=1h31m33s
Ангелы и демоны многопоточного программирования / Алексей Федоров (Одноклассн...Ontico
Современные процессоры имеют на борту по нескольку вычислительных ядер, позволяющих запускать задачи на них параллельно. И, казалось бы, вот оно — счастье: бей большие задачи на куски, запускай эти куски параллельно на разных ядрах и радуйся.
Но не все так просто. Для того чтобы одновременный доступ к общим данным выполнялся корректно, современные системы используют разные примитивы синхронизации. В основе одних лежат блокировки (locks), в основе других — операции типа сравнение-с-обменом (compare-and-swap). Однако и у тех и у других есть свои слабые места. О них мы и поговорим.
Из доклада вы узнаете, чем блокирующие алгоритмы отличаются от неблокирующих, и какими достоинствами и недостатками обладает каждый из этих классов. Кроме того, будут показаны различные подводные камни тех и других решений: Deadlock, Livelock, Starvation, Mutable vs Immutable hype.
Быстрое расширение Robot Framework под свои нужды с использованием Pythonautomated-testing.info
Быстрое расширение Robot Framework под свои нужды с использованием Python, Михаил Поляруш
Когда мы начинаем заниматься автоматизацией тестирования ПО, мы редко знаем и понимаем, что нам надо будет делать, а тем более, как это нужно реализовать. Потому, выбираем самые простые решения, которые иногда даже не подразумевают программирования. Вы считаете, что успешная автоматизация может быть без программирования? Я уверен, что НЕТ, и с уверенностью могу сказать, что процесс автоматизации с помощью python и RobotFramework может значительно упростить Вам жизнь. Убедитесь в том, что архитектура RobotFramework очень гибкая, а python – лучший друг автоматизатора. Вас ждет увлекательная теория и много практики в живую.
Получасовая презентация по Java 9. Конечно, рассказать можно много больше, да и часть выводов прозизносил вслух, но в любом случае, если интересна Java 9, то изучение можно начать со ссылок в конце презентации.
Критика, предложения приветствуются.
Нейронечёткая классификация слабо формализуемых данных | Тимур ГильмуллинPositive Hack Days
1. Проблемы автоматизации классификации слабо формализуемых (нечётких) данных.
2. Нечёткие множества и нечёткие измерительные шкалы.
3. Моделирование нейронной сети для классификации данных.
4. Инструмент FuzzyClassificator и его внедрение в Компании.
5. Автоматизация классификации данных на базе TeamCity.
С ростом кодовой базы становится все более очевидной необходимость использования компонентного подхода, когда каждая логическая часть обособлена. Если говорить про JavaScript, то в нем есть области видимости, опираясь на которые можно соорудить изолированные компоненты. Но в CSS нет подобных механизмов, поэтому и придумываются Shadow DOM (Web Components) и различные методики вроде БЭМ.
Но что если взглянуть на проблему под другим углом? Адаптируя подходы, что уже используются для других задач, можно получить куда больше выгоды, чем просто изолированные стили!
FrontendConf, Москва, 21 мая 2015
WSD, Санкт-Петербург, 20 июня 2015
Запись трансляции: https://youtu.be/V7bnSOwuO4M?t=1h31m33s
Ангелы и демоны многопоточного программирования / Алексей Федоров (Одноклассн...Ontico
Современные процессоры имеют на борту по нескольку вычислительных ядер, позволяющих запускать задачи на них параллельно. И, казалось бы, вот оно — счастье: бей большие задачи на куски, запускай эти куски параллельно на разных ядрах и радуйся.
Но не все так просто. Для того чтобы одновременный доступ к общим данным выполнялся корректно, современные системы используют разные примитивы синхронизации. В основе одних лежат блокировки (locks), в основе других — операции типа сравнение-с-обменом (compare-and-swap). Однако и у тех и у других есть свои слабые места. О них мы и поговорим.
Из доклада вы узнаете, чем блокирующие алгоритмы отличаются от неблокирующих, и какими достоинствами и недостатками обладает каждый из этих классов. Кроме того, будут показаны различные подводные камни тех и других решений: Deadlock, Livelock, Starvation, Mutable vs Immutable hype.
Быстрое расширение Robot Framework под свои нужды с использованием Pythonautomated-testing.info
Быстрое расширение Robot Framework под свои нужды с использованием Python, Михаил Поляруш
Когда мы начинаем заниматься автоматизацией тестирования ПО, мы редко знаем и понимаем, что нам надо будет делать, а тем более, как это нужно реализовать. Потому, выбираем самые простые решения, которые иногда даже не подразумевают программирования. Вы считаете, что успешная автоматизация может быть без программирования? Я уверен, что НЕТ, и с уверенностью могу сказать, что процесс автоматизации с помощью python и RobotFramework может значительно упростить Вам жизнь. Убедитесь в том, что архитектура RobotFramework очень гибкая, а python – лучший друг автоматизатора. Вас ждет увлекательная теория и много практики в живую.
Получасовая презентация по Java 9. Конечно, рассказать можно много больше, да и часть выводов прозизносил вслух, но в любом случае, если интересна Java 9, то изучение можно начать со ссылок в конце презентации.
Критика, предложения приветствуются.
Нейронечёткая классификация слабо формализуемых данных | Тимур ГильмуллинPositive Hack Days
1. Проблемы автоматизации классификации слабо формализуемых (нечётких) данных.
2. Нечёткие множества и нечёткие измерительные шкалы.
3. Моделирование нейронной сети для классификации данных.
4. Инструмент FuzzyClassificator и его внедрение в Компании.
5. Автоматизация классификации данных на базе TeamCity.
Sergey Teplyakov, .NET Expert, “SOLID Principles in the real world”:
• Why design principles matters?
• SOLID principles in the real world
S – Single Responsibility Principle
O – Open-Closed Principle
L – Liskov Substitution Principle
I – Interface Segregation Principle
D – Dependency Inversion Principle
Доклад от Parallels:
Методики тестировния производительности database-centric приложений
Описание: При работе над сложными продуктами в database-centric приложениях изменения в коде и тем более в SQL запросах к базе данных могут приводить к неожиданным падениям производительности или же деградации производительности приложения с ростом размера базы данных. Поэтому важно уметь как можно быстрее отлавливать и исправлять причины таких деградаций.
Доклад о том, как устроен процесс мониторинга производительности продукта автоматизации хостинга и облачных сервисов Parallels Automation, для которого определяющим фактором является производительность базы данных.
Компания покажет, как анализирует планы исполнения SQL запросов внутри PostgreSQL, как проверяет насколько быстро и эффективно в целом работают SQL запросы, как определяет стратегию дальнейшей оптимизации.
Netpeak Group продолжает серию образовательных мероприятий — #NetpeakTalks в Одессе.
В рамках этих встреч у тебя будет возможность обсудить с практикующим спикером наболевшие темы, связанные с R&D, дизайном, менеджментом, интернет-маркетингом, QA, Customer Success, аналитикой и др. (все темы от встречи к встрече не повторяются и отличаются друг от друга).
Тема#3: Масштабируемое приложение на PHP
Краткий план:
1. Теория принципов и паттернов проектирования.
2. Примеры использования принципов и паттернов в коде (разберём какие "плюшки" даёт каждый случай).
3. Важность слабосвязанного кода (IoC).
4. Как "под капотом" работают IOC контейнера.
_____________________
Информацию об этом и следующих мероприятиях ты можешь отследить:
FaceBook: https://www.facebook.com/NetpeakTalks/
Телеграм: https://t.me/netpeaktalks
__________
Плейлист с выступлениями на YouTube: https://www.youtube.com/playlist?list=PL8LIMl0TjrcDtSS_lM5jqH-huK5FCq44A
__________
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)Pavel Tsukanov
Расскажу зачем они вообще нужны. Пройдемся по технологиям и промоем им косточки. Рассмотрим достоинства и недостатки, а также где и когда лучше всего применять ту или иную ORM.
Видео: http://www.youtube.com/watch?v=vz0U3jQpHSM
Это обзор опыта применения лучших практик разработки программного обеспечения на разных проектах от госзаказов до видеоконференций в командах от 5 до 50 человек. В докладе будут описаны не только практики, но и то, как они применяются на реальных проектах и какие выгоды они действительно приносят.
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...IT-Portfolio
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Демоны в большом проекте – проблемы и их решения (Redis, RabbitMQ, Skytools, Node.JS, HBase)", Александр Чистяков (ведущий разработчик Cezurity)
Аннотация
Когда команда разработчиков собирается написать новый сервис, у нее, как правило, отсутствует свободное время, но есть необходимый энтузиазм. Из-за нехватки времени многие архитектурные решения приходится принимать, руководствуясь общими соображениями, так как провести всесторонние тесты имеющихся на рынке средств в краткие сроки невозможно. Мы, специалисты компании Cezurity, начали свой проект не вчера, и уже накопили некоторый опыт использования технологий, появившихся сравнительно недавно - таких как Skytools, Node.JS, RabbitMQ и Redis. О том, какие возникли проблемы при внедрении этих средств, и какие их ограничения пришлось преодолевать и учитывать - мой доклад. Кроме того, я расскажу о новом направлении в нашей деятельности - внедрении HBase для хранения большого объема данных.
Биография
Докладчик - узкий специалист широкого профиля, относит себя к виду, называемому в современной англоязычной литературе термином "DevOps". Любит принимать участие в создании сложных систем и постоянно это делает. Никогда не работал в Яндексе, компенсировав это работой в Mail.Ru и некоторых других местах.
#ITsubbotnik Spring 2017: Sergey Chernolyas "JPA for NoSQL"epamspb
Для многих разработчиков стало привычным делом описывать доменные модели своих приложений с помощью JPA. И этот подход хорошо зарекомендовал себя в мире реляционных баз данных. Однако ... Возможно ли использование привычного подхода в мире NoSQL?
Мы поговорим об использовании JPA для NoSQL хранилищ (с примерами) и проекте HIbernate OGM. А также о СУБД OrientDB (с примерами) и моем интеграционном модуле для этой СУБД.
2. Зачем нужны шаблоны
• Основная сложность разработки бизнес ПО
- подобрать готовые решения и
шаблоны, заставить все работать вместе и
следить за сложностью (стоимостью)
поддержки.
• Все уже придумано до нас
3. Что такое шаблон ООП
• Шаблон это просто идея взаимодействия
группы объектов (сущностей, классов).
Реализация может быть очень разной
• Шаблоны – это общий язык общения
разработчиков
6. Abstract Factory. Фабрика
• Цель – скрыть тип создаваемого объекта
• Так же известен как Factory / FactoryMethod
• Используется везде
7. Singleton. Синглетон.
НЕ ИСПОЛЬЗОВАТЬ
• Нужен что бы инкапсулировать жизненный
цикл объекта
• Чаще всего используется (или приводит к) для
эмуляции процедурного программирования
• Т.е. в 99% страшное зло
8. Другие порождающие шаблоны
• Prototype
– Для создания дорогих объектов
• Builder
– Когда конструктор становится слишком
сложным (напр. много параметров) и не
имеющим отношения к классу
– Для создания многих похожих объектов подряд
(или клонирования)
10. Adapter
• Предоставляет единый (адаптированный)
интерфейс для нескольких схожих подсистем
• Часто используется там, где есть различные
протоколы интеграции со схожими системами
11. Proxy
• Реализует тот же интерфейс что и
оригинальный объект для прозрачного
добавления какого-нибудь функционала
• Ленивая загрузка, удаленный объект, тесты и
т.п.
12. Facade
• Предоставляет четкий интерфейс множества
подсистем, часто ограничивая сложность подсистем
• Классическое использование – интерфейс к
доменной модели
13. Composite
• Дерево вложенных друг в друга однотипных объектов
• Писать приходится не часто, но очень часто
используется в стандартных фреймворках (особенно UI).
К примеру, XML парсер.
15. Template method
• Мощнейший комплимент наследованию
• Используется повсеместно, для
ограничения нарушения инкапсуляции
наследованием
16. Command
• Абстракция любой операции. Если объединить с
composite, позволяет строить системы абстрактного
выполнения команд группами.
• Уменьшение кол-ва удаленных вызовов, UNDO,
транзакции, TCP/IP пакеты
17. Strategy
• В чем отличие от команды?
• Абстракция конкретного алгоритма, с
параметрами
18. State
• Моделирует объект у которого много разных
состояний
• Упрощает выражение схемы взаимодействия
состояний, ее изменение и расширение
19. Chain of resp. (FilterChain)
• Модель цепочки обработчиков, позволяет
легко добавлять / удалять обработчики
• Обработка HTTP запросов
20. Другие
• Observer (Publisher / Subscriber)
– События – один публикует события, другие
ждут, наблюдают и обрабатывают. В C#
реализовано на уровне языка
• Iterator
– Шаблон организации итератора по коллекции /
объекту. С C# и многих других языках реализовано
по умолчанию (IEnumerable)
• Visitor
– Позволяет «добавить» метод к целой иерархии
(или просто набору) классов. Сложно, но бывает
нужно.
22. Рефакторинг это
• Преобразование существующего кода без
изменения функциональности с целью:
– Сделать его лучше и проще в поддержке
– Сделать возможным добавление каких-то
новых функций
– Иногда решить другие проблемы (напр.
производительности)
23. Запахи кода
• Дублирование кода (Simian)
• Длинные методы (Unix!)
• Большой класс
• Много параметров
• Цикломатическая сложность
• Switch
• Группы данных
• Пустые классы данных
24. Запахи кода
• Много точек изменений по одному поводу
• Очень высокая связность
• Лишний или «на будущее» код
• Глубокие цепочки вызовов в клиентах
• Отказ от наследства
• Комментарии
25. «Научные» принципы
• Single Responsibility
• Open for extension, closed for modification
• Liskov substitution (объекты всегда
заменимы объектами-наследниками)
• Interface segregation (больше специфичных
интерфейсов)
• Depend upon abstractions
26. «Научные» принципы
• Single point of change (единая точка
изменений)
• Separation of concerns (SoC) (разделение
понятий)
• Command-query separation (СQS)
(разделение запросов и команд)
• Единый уровень абстракции
27. Agile принципы
• YAGNI
– You ain’t gonna need it
• KISS
– Keep it stupid simple
• DRY
– Don’t repeat yourself
30. Банальные
• Подвинуть метод
• Подвинуть поле
• Опустить поле / метод вниз / вверх по
иерархии
• Замена магических чисел константами
• Кодов ошибки эксепшенами и прочии и
касающиеся стиля
46. Рефакторинг – это круто
• При наличии тестов / спецификации
• При наличии конкретной цели / юскейза
• 99% рефакторингов – обратимы, нечего
терять
• Рефакторинг поддерживает принципы
YAGNI / KISS
• Полный список рефакторингов -> книга /
сайт (www.refactoring.com), но он
бесконечный
47. Ресурсы
• Приемы объектно-ориентированного
проектирования. Паттерны
проектирования
• Рефакторинг. Улучшение существующего
кода
• Чистый код. Создание, анализ и
рефакторинг
• Google “<Pattern name> pattern” +
картинки)
• Google “<аббревиатура>”
48. Темы для докладов
• AOP
• Kanban / Lean (Карпов)
• SCRUM: Team / ScrumMaster – подробнее
про процесс (DS, Retro, SprintPlan, Demo…)
• Portfolio management, BMG (Alex
Ostervald), Scrum of Scrum
• NoSql БД
• Реализация ООП в Javascript (прототипы)
49. Объявлениея
• В следующий четверг лекции не будет
– www.msteched.ru
• Давайте решать что делать со временем
лекций
• И с лабами, времени остается все меньше
50. Лабы
• Обработка открытых данных
– http://minenergo.gov.ru/activity/statistic/,http://www.fms.gov.ru/about/
ofstat/, http://www.federalspace.ru/main.php?id=10, http://ivan.begtin.
name/2011/10/02/gosuslugijson/
• Индивидуальное задание (для тех, у кого уже есть что
показать)
• Нужно:
– Или наличие БД
– Или наличие веб интерфейса
– Отчет по лабам
• Стажировка (Тестер / Разработчик)
– Нужно знание: C#, MS MVC, MS SQL Server