Распределенные системы в Одноклассниках / Олег Анастасьев (Одноклассники)Ontico«Одноклассники» состоят из тысяч серверов, большая часть которых участвует в онлайн-обработке запросов пользователей. Каждый из этих серверов владеет только частью данных или логики. Эти части в социальной сети изолировать друг от друга невозможно, поэтому между серверами происходит много сетевого взаимодействия — разнообразного и большого по объему. Таким образом, Одноклассники — это одна из самых больших, сложных и нагруженных распределенных систем в мире.
В этом докладе Олег расскажет об опыте построения отказоустойчивых распределенных систем на Java, основных ошибках и отказах, приемах их тестирования и диагностики. Также речь пойдет об авариях в распределенных системах и методах их предупреждения.
Ангелы и демоны многопоточного программирования / Алексей Федоров (Одноклассн...OnticoСовременные процессоры имеют на борту по нескольку вычислительных ядер, позволяющих запускать задачи на них параллельно. И, казалось бы, вот оно — счастье: бей большие задачи на куски, запускай эти куски параллельно на разных ядрах и радуйся.
Но не все так просто. Для того чтобы одновременный доступ к общим данным выполнялся корректно, современные системы используют разные примитивы синхронизации. В основе одних лежат блокировки (locks), в основе других — операции типа сравнение-с-обменом (compare-and-swap). Однако и у тех и у других есть свои слабые места. О них мы и поговорим.
Из доклада вы узнаете, чем блокирующие алгоритмы отличаются от неблокирующих, и какими достоинствами и недостатками обладает каждый из этих классов. Кроме того, будут показаны различные подводные камни тех и других решений: Deadlock, Livelock, Starvation, Mutable vs Immutable hype.
Java Core. Lecture# 5. Concurrency.Anton MoiseenkoThe 5-th lecture from the course "Java Core".
The Department of Information and Network Technologies.
St-Petersburg State University Of Aerospace Instrumentation.
Russia
Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)OnticoJavaScript, который мы пишем, не всегда исполняется, как мы думаем. Виртуальные машины, исполняющие его, делают многое, чтобы он работал быстрее. Но они не всесильны, и чтобы сделать код действительно быстрым, нужно знать их особенности и как все работает под капотом.
Поговорим об этих особенностях, что может служить причиной потери производительности, как это диагностировать и как делать код действительно быстрым. Доклад базируется на опыте, полученном в ходе работы над такими проектами как basis.js (весьма быстрый фреймворк для SPA), CSSO (минификатор CSS, который из медленного стал один из самых быстрых), CSSTree (самый быстрый детальный CSS парсер) и других.
Основы и нюансы параллельного тестрованияbearoffДоклад на конференции Selenium Camp 2012.
http://seleniumcamp.com/program/#parallel-testing
Видео: http://video.yandex.ru/users/xpinjection/view/105/#hq
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...Andrey RebrovКак-то так происходит, что “на 10 девчонок по статистике 9 ребят”, а точнее на группу из 5-7 разработчиков – 1 тестировщик. Или его нет совсем. Так что очень часто приходится и код писать, и тестировать, а дата релиза все ближе и ближе.
В тех случаях, когда мы пишем веб-приложение, помочь в нашей нелегкой судьбе может бодрящий микс из Selenium и TestNG... Как это сделали мы, какие потом получили выводы и результаты — все это я и хочу рассказать и показать
Опыт разработки и тестирования RESTful JSON сервисаIlya ChesnokovКое-что о процессах и технологиях, которые используются при разработке системы, основой которой является RESTful JSON API.
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полнойОмские ИТ-субботникиТестирование фронтенда - непростая задача. Mocha - один из подходов к ее решению.
Java Core. Lecture# 3. Part# 2. Exceptions.Anton MoiseenkoThe 2nd part of the 3rd lecture from the course "Java Core".
The Department of Information and Network Technologies.
St-Petersburg State University Of Aerospace Instrumentation.
Russia
Java Core. Lecture# 3. Part# 3. Multithreading.Anton MoiseenkoThe 3rd part of the 3rd lecture from the course "Java Core".
The Department of Information and Network Technologies.
St-Petersburg State University Of Aerospace Instrumentation.
Russia
#RuPostges в Yandex, эпизод 3. Что же нового в PostgreSQL 9.6Nikolay SamokhvalovПервый релиз-кандидат версии 9.6 вышел 1 сентября, а это значит, что совсем скоро будет полноценный релиз. Все вокруг уже успели обсудить новинки, и теперь уже стыдно ничего не знать о таких вещах, как параллелизация выполнения запросов, pushdown для FDW, мониторинг waitlocks, полнотекстовый поиск по фразам или магический \gexec в psql. Чтобы никому не приходилось краснеть, мы быстро пройдёмся по всем основным и интересным моментам версии 9.6.
Java Core. Lecture# 5. Concurrency.Anton MoiseenkoThe 5-th lecture from the course "Java Core".
The Department of Information and Network Technologies.
St-Petersburg State University Of Aerospace Instrumentation.
Russia
Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)OnticoJavaScript, который мы пишем, не всегда исполняется, как мы думаем. Виртуальные машины, исполняющие его, делают многое, чтобы он работал быстрее. Но они не всесильны, и чтобы сделать код действительно быстрым, нужно знать их особенности и как все работает под капотом.
Поговорим об этих особенностях, что может служить причиной потери производительности, как это диагностировать и как делать код действительно быстрым. Доклад базируется на опыте, полученном в ходе работы над такими проектами как basis.js (весьма быстрый фреймворк для SPA), CSSO (минификатор CSS, который из медленного стал один из самых быстрых), CSSTree (самый быстрый детальный CSS парсер) и других.
Основы и нюансы параллельного тестрованияbearoffДоклад на конференции Selenium Camp 2012.
http://seleniumcamp.com/program/#parallel-testing
Видео: http://video.yandex.ru/users/xpinjection/view/105/#hq
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...Andrey RebrovКак-то так происходит, что “на 10 девчонок по статистике 9 ребят”, а точнее на группу из 5-7 разработчиков – 1 тестировщик. Или его нет совсем. Так что очень часто приходится и код писать, и тестировать, а дата релиза все ближе и ближе.
В тех случаях, когда мы пишем веб-приложение, помочь в нашей нелегкой судьбе может бодрящий микс из Selenium и TestNG... Как это сделали мы, какие потом получили выводы и результаты — все это я и хочу рассказать и показать
Опыт разработки и тестирования RESTful JSON сервисаIlya ChesnokovКое-что о процессах и технологиях, которые используются при разработке системы, основой которой является RESTful JSON API.
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полнойОмские ИТ-субботникиТестирование фронтенда - непростая задача. Mocha - один из подходов к ее решению.
Java Core. Lecture# 3. Part# 2. Exceptions.Anton MoiseenkoThe 2nd part of the 3rd lecture from the course "Java Core".
The Department of Information and Network Technologies.
St-Petersburg State University Of Aerospace Instrumentation.
Russia
Java Core. Lecture# 3. Part# 3. Multithreading.Anton MoiseenkoThe 3rd part of the 3rd lecture from the course "Java Core".
The Department of Information and Network Technologies.
St-Petersburg State University Of Aerospace Instrumentation.
Russia
#RuPostges в Yandex, эпизод 3. Что же нового в PostgreSQL 9.6Nikolay SamokhvalovПервый релиз-кандидат версии 9.6 вышел 1 сентября, а это значит, что совсем скоро будет полноценный релиз. Все вокруг уже успели обсудить новинки, и теперь уже стыдно ничего не знать о таких вещах, как параллелизация выполнения запросов, pushdown для FDW, мониторинг waitlocks, полнотекстовый поиск по фразам или магический \gexec в psql. Чтобы никому не приходилось краснеть, мы быстро пройдёмся по всем основным и интересным моментам версии 9.6.
Unlocking funding opportunities finalsaqib_bsettlementThe document discusses a presentation given at Bournville College on unlocking funding opportunities for the third sector. It provides an overview of different funding streams such as social investment funds, grants from organizations like Big Lottery Fund, and an introduction to concepts of commissioning. The presentation advises organizations to diversify their services, funding sources, and commissioning relationships to be successful in applications. Support Solutions and Bournville College offer resources to help organizations strengthen their funding bids.
Sp soft profile (15-may-2012)SP SOFTWARESP Software is an IT company established in 1995 that provides application development, maintenance, gaming, and mobile application services. It has over 400 employees and has experienced rapid growth, with revenues increasing from $5 million in 2007 to $15 million in 2011. The company aims to exceed customer expectations with quality and aims to provide integrated, cost-effective solutions. It has achieved several process certifications like CMMI Level 3, ISO 9001:2008, and ISO 27001:2005.
แบบโครงร่างโครงงานคอมพิวตอร์Lynnie1177The document provides guidance for teaching science to junior high school students. It discusses using social media projects to engage students, with examples of assigning them to create social media accounts to log and share their daily science observations over a period of time. Students are encouraged to include photos, videos and write blog posts explaining their observations. The document also lists 10 tips for using social media safely and responsibly in the classroom.
Office 2010 migrationdavid_malmborgThis document discusses the challenges of migrating to Office 2010 and how the Dell KACE solution can help. The Dell KACE solution provides automated software inventory, asset management including license tracking, simplified software distribution, and automated reporting to aid in the Office 2010 migration process. It allows identification of hardware ready for the upgrade, removal of previous Office versions, installation of Office 2010, and monitoring software utilization for licensing.
Matlab workshopمحمدعبد الحىThis document contains information about Mohamed Abd Elhay and his skills and experience with MATLAB. It provides an overview of MATLAB including its main components and applications. It describes the MATLAB development environment and some basic functions for vectors and matrices, plotting, conditional statements, and loops. It also lists some common MATLAB toolboxes for tasks like signal processing, neural networks, optimization, and more. It briefly introduces Simulink and discusses file types and GUIDE for building GUIs.
Montras com livrosbibliotecaoureanaO documento lista o nome de 38 lojas e estabelecimentos comerciais de uma cidade, incluindo livrarias, cafés, talhos, lojas de roupa, ourivesarias, farmácias e restaurantes.
Regulamento concursoleituraconcelho ourem_aecobibliotecaoureanaEste documento descreve as regras e etapas de um concurso de leitura para alunos do 1o e 2o ciclos do ensino básico no município de Ourém. O concurso consiste em duas fases eliminatórias nas escolas e uma final municipal onde serão premiados os três primeiros colocados de cada escalão.
Project Reportharshit1991This document provides a summary of foreign direct investment (FDI) in retail in India. It discusses India's partial opening of the retail sector to FDI, allowing up to 51% FDI in single-brand retail but prohibiting FDI in multi-brand retail. It outlines the government's concerns about fully opening retail to FDI and the limitations of India's current retail setup in infrastructure and the dominance of intermediaries in the supply chain.
Kbox 101 1000 slidedavid_malmborgThis document provides instructions on how to use the asset module in KBOX 101 K1000 to manage organizational assets. It describes how to view computer details, create and edit asset types to customize asset information tracking, import asset data in bulk to update multiple assets simultaneously, relate asset features to each other, and set up software metering to monitor software usage across machines. The steps covered include selecting asset types, adding custom fields, importing asset information from a CSV file, assigning users to assets, creating smart labels for software, and configuring metering settings.
Подходы и технологии, используемые в разработке iOS-клиента Viber, Кирилл Лаш...YandexРассказ об основных принципах, которых придерживается Viber в длительной разработке приложения с большой кодовой базой — если разработкой занимается распределённая команда. Мы обсудим используемые технологии, библиотеки, работу с кодом и многое другое.
Node.js введение в технологию, КПИ #ITmeetingKPITimur ShemsedinovСеминар по Node.js в КПИ 20 октября 2014. Докладчики: Тимур Шемсединов, Никита Савченко, Максим Петренко. Краткое содержание:
* Что такое Node.js и как работает JavaScript в V8
* Профессионалы расскажут, почему они выбрали Node.js
* Вы узнаете его сильные и слабые стороны и где его лучше применять
* Будет полный обзор особеностей и внутреннего строения Node.js
* Примеры внедрения и Highload-проекты
* Вопросы развертывания, хостинг, тестирования, и отладки
* Где и что учить, что читать, как осваивать
Семь тысяч Rps, один goBadoo DevelopmentИз презентации вы узнаете:
— как мы пришли к Go, оставив идею использования Node.js, Scala или Rust;
— про первый сервис, который мы написали на Go и запустили в продакшен;
— про ошибки, с которыми сталкивались под нагрузкой;
— про оптимизации, которые мы сделали и еще планируем сделать;
— про тестирование и предотвращение тестирования на продакшене (в частности, websocket'ов).
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)OnticoHighLoad++ 2017
Зал «Рио-де-Жанейро», 8 ноября, 18:00
Тезисы:
http://www.highload.ru/2017/abstracts/2905.html
Прошло более года с того момента, как Microsoft выпустила первую версию своего нового фреймворка для разработки web-приложений ASP.NET Core, и с каждым днем он находит все больше поклонников. ASP.NET Core базируется на платформе .NET Core, кроссплатформенной версии платформы .NET c открытым исходным кодом. Теперь у С#-разработчиков появилась возможность использовать Mac в качестве среды разработки, и запускать приложения на Linux или внутри Docker-контейнеров.
...
Построение собственного JS SDK — зачем и как?buranLcmeМногие разработчики любят делать свои велосипеды, но не все задумываются зачем. Мы расскажем о том, зачем вам может понадобится собственный JavaScript SDK и полезно ли кататься на велосипедах.
Мы делали собственный JS SDK для того, чтобы дать возможность создания плагинов в рамках большой enterprise системы - <b>Parallels Automation</b> и <b>Plesk Panel</b>. Сам SDK является частью общего стандарта <b>APS</b>, который является шиной, объединяющей все наши продукты по автоматизации. Обе панели брендируются и мы должны были сохранить брендинг при уже существующей кодовой базе верстки и существующих правилах оформления. И главное - надо было дать возможность создания UI сторонним девелоперам, которые могут иметь абсолютно разный уровень - от пришедших бекэндеров до профессиональных js-разработчиков.
Владимир Кочетков "OWASP TOP 10 для.NET"MskDotNet CommunityДоклад посвящён специфике.NET Framework в рамках очередной версии хит-парада угроз безопасности приложений OWASP TOP 10, опубликованной в ноябре этого года. Поговорим о том, каким образом каждая из угроз может проявляться в.NET-приложениях, как от этого защищаться и, немного, об общем подходе к разработке защищённых приложений в.NET
Михаил Боднарчук Современное функциональное тестирование с CodeceptionAlbina Tiupa
Система обработки бизнес-логики server-side приложения на Groovy
1. СИСТЕМА ОБРАБОТКИ
БИЗНЕС-ЛОГИКИ
SERVER-SIDE ПРИЛОЖЕНИЯ
НА GROOVY
Александр Шлянников
Digital Zone
2. Задача
• Возможность изменять бизнес-логику server-side Java
EE приложения «на лету»:
• С минимальными обращениями к разработчикам системы
• Без перекомпиляции
• Без shutdown/redeploy системы на сервере
• С защитой от синтаксических и семантических ошибок
3. Применение
• Биллинговые системы:
• Операторы связи
• Такси
• Генерация разнообразных отчетов
• Пример:
• «Клиенту, сделавшему 3 заказа в прошлом месяце и с днем
рождения на этой неделе, сделать скидку в 10% после 15-й
минуты поездки»
5. Groovy
• Dynamic language for the Java Virtual Machine:
• Динамическая типизация
• Удобный и краткий синтаксис работы с
коллекциями, картами, массивами, строками
• Возможность runtime-компиляции в JVM байт-код и работы с
другим Java кодом и библиотеками
6. Архитектура
• Java EE – JBoss Application Server
• ORM – EJB JPA Persistence (Stateless & Entity Beans)
• Service MBeans
• HTTP/SOAP Client Connectors
7. Сервис команд
• Service MBean:
• Invoker:
• Object invoke(String mapping, Object[] args)
• Commands:
• Object invoke(Object[] args)
8. Оформление команд
• Команда: Groovy Script (класс)
• Runtime компиляция в JVM байт-код, создание
объектов и хранение в памяти:
• GroovyClassLoader loader = new GroovyClassLoader();
• Class groovyClass = loader.parseClass(content);
• GroovyObject groovyObject = (GroovyObject) groovyClass.newInstance();
• Файлы исходников команд расположены вне
EAR/WAR/SAR-архивов
• Мониторинг изменений директории исходников через
JBoss Deployer для runtime отслеживания изменений
9. Класс команды
• Аннотация на класс – mapping команды:
• @ScriptMapping("/createOrder")
• Имплементация Java интерфейса:
• public interface GenericScript {
• void init(Object... args);
• Object invoke(Object... args);
• void onInterrupt(Object... args);
• }
• Хранение скомпилированных объектов в сервисе в
виде ассоциативного массива [Mapping -> Object]
• Выполнение прямым вызовом метода invoke без
использования Reflections:
• GenericScript s = scripts.get(mapping);
• s.invoke(args);
10. Базовый контекст выполнения скрипта
• Новое выполнение – новый объект (аналогично
HttpServletRequest)
• Утилитные методы:
• Object getAttribute(String key);
• void setAttribute(String key, Object value);
• Object invoke(String mapping, Object[] args);
• void log(String message);
11. Типы команд
• Разделение контекстов выполнения команд:
• Calculation (базовый): без доступа к Persistence
• Read-only: с доступом к Persistence на чтение
• Read/Write: с доступом к Persistence на чтение/обновление
12. Организация доступа к данным
• EJB JPA Persistence:
• Все сущности предметной области – @Entity
• Утилитный Stateless Bean:
• public interface BaseDAO {
• <T> List<T> getAll(Class<T> c);
• <T> List<T> getEntitiesByKey(Class<T> c, String key, Object
value);
• <T> T getEntityById(Class<T> c, Object id);
• <T> T createEntity(T entity);
• void mergeEntity(Object entity);
• void removeEntity(Class c, Object id);
• }
• Методы Stateless Bean доступны через контекст скрипта
13. Организация доступа к данным
• Имплементация Stateless Bean, примеры:
• <T> T createEntity(T entity) {
• entityManager.persist(entity);
• return entity;
• }
• <T> List<T> getAll(Class<T> c) {
• Query query = entityManager.createQuery("select c from " +
c.getName() + " c");
• return query.getResultList();
• }
14. Управление транзакцией
• Работа с транзакцией в Stateless Bean:
• @TransactionManagement(value =
TransactionManagementType.CONTAINER)
• @TransactionManagement(value = TransactionManagementType.BEAN)
• При использовании CMT – аннотации на методах:
• @TransactionAttribute(TransactionAttributeType.REQUIRED)
• @TransactionAttribute(TransactionAttributeType.SUPPORTS)
• …
• sessionContext.setRollbackOnly();// откат
• В обоих случаях, нельзя:
• myStatelessBean.startTransaction();
• doSomething();
• myStatelessBean.commitTransaction();
15. Управление транзакцией
• Решение:
• Специальные методы-обертки в Stateless Bean:
• //для Read/Write контекста
• @TransactionAttribute(TransactionAttributeType.REQUIRED)
• public Object wrapTransactionRequired(ScriptWrapper sw)
• //для Read-Only контекста
• @TransactionAttribute(TransactionAttributeType.SUPPORTS)
• public Object wrapTransactionSupports(ScriptWrapper sw)
• Вызов метода invoke скрипта-команды и связывание с Stateless
Bean – внутри методов wrapTransactionRequired и
wrapTransactionSupports
16. Многопоточное исполнение
• Исполнение в очереди - ExecutorService:
• singleThreadExecutor: один поток, контроль времени
выполнения
• multiThreadExecutor: несколько потоков, контроль времени
выполнения
• debugThreadExecutor: несколько потоков, без контроля
времени выполнения
• Определение типа команды и таймаута выполнения в
аннотации к классу скрипта:
• @Target(ElementType.TYPE)
• @Retention(RetentionPolicy.RUNTIME)
• public @interface ScriptMapping {
• //…
• long runTimeout() default -1;
• ScriptThreadingType type() default ScriptThreadingType.MULTI;
• }
17. Контроль времени выполнения
• Два вложенных Callable на выполнение команды:
• 1) Внутренний: запуск скрипта
• 2) Внешний: контроль времени выполнения через
FutureTask.get(timeout)
• Внутренний ExecutorService на N+1 поток
18. Контроль времени выполнения
• 1) TimeoutException в FutureTask.get(timeout)
• 2) Вызов метода onInterrupt() у скрипта команды для
предупреждения о завершении
• 3) sleep(timeout)
• 4) stop() у потока
• 5) Запись в журнал ошибок
19. Асинхронный режим
• Вызывающий клиент имплементирует Callback для
взаимодействия с командой во время выполнения, а
получает Future:
20. Контроль ошибок
• 1) Проверка синтаксиса при компиляции:
• GroovyClassLoader loader = new GroovyClassLoader();
• Class groovyClass = loader.parseClass(content);
• - throws CompilationFailedException при
синтаксическиой ошибке
• 2) Проверка времени исполнения по таймауту
• 3) При таймауте скрипта больше K раз – исключение
из Invoker
21. Отладка
• Поддержка синтаксиса Groovy в IDE
• Удаленная отладка (JPDA) из IDE
• Выполнение в отдельном потоке без контроля
таймаута
22. Интерфейс администрирования
• Create, Read, Update, Delete команд
• Версионность для отката изменений
• Мониторинг:
• Количество команд в очереди
• Exceptions
• Отключенные команды
24. Другие платформы
• Эквивалентное выполнение скриптов:
• .NET - перенос в контекст отличающихся по синтаксису
методов:
• sqrt, pow, round, equal, etc
25. Выводы
• Разработанный сервис:
• Глубокая настройка бизнес-логики приложения
• Понятный юзерам язык и API
• Работа с сущностями предметной области системы
• Защита от ошибок
• Возможность расширения на другие платформы