Рarse'им бэкенд
Аким Халилов
Вы хотите выучить Backbone? Хотите просто писать клиентский код, не думая о сервере и о том, как все обрабатывать, хранить, бэкапить? Выход есть – храните с помощью Parse. Parse – платформа, которая предоставляет возможность хранения данных без забот о сервере. Хранилище данных, соц. сети, push-notification, cloud code. Что такое Parse и что он умеет, о библиотеке для использования:
- знакомство с JS API и примеры использования;
- начинаем кодить: stub-проект;
- кодим фичи: CRUD + плюшки;
- хостим.
Лекция #5. Введение в язык программирования Python 3Яковенко Кирилл
Web-программирование
Лекция #5. Введение в язык программирования Python 3
Цикл лекций читается в Омском государственном университете им. Ф.М.Достоевского на факультете компьютерных наук.
Лектор: Яковенко Кирилл Сергеевич.
ASP.NET MVC - как построить по-настоящему гибкое веб-приложениеAlexander Byndyu
В докладе рассматривается использование популярных фреймворков в разработке ASP.NET MVC приложения, как сделать его наиболее гибким. Будет затронута тема минимизации дублирования и повторное использование кода, применение методов метапрограммирования отображений; уменьшение логики в контроллерах; применение принципов SOLID и GRASP для разработки доменной модели приложения.
По материалам конференции .NET разработчиков http://www.dotnetconf.ru/Materialy/Asp_net_mvc_kak_postroit_gibkoe_web_prilozenie
Рarse'им бэкенд
Аким Халилов
Вы хотите выучить Backbone? Хотите просто писать клиентский код, не думая о сервере и о том, как все обрабатывать, хранить, бэкапить? Выход есть – храните с помощью Parse. Parse – платформа, которая предоставляет возможность хранения данных без забот о сервере. Хранилище данных, соц. сети, push-notification, cloud code. Что такое Parse и что он умеет, о библиотеке для использования:
- знакомство с JS API и примеры использования;
- начинаем кодить: stub-проект;
- кодим фичи: CRUD + плюшки;
- хостим.
Лекция #5. Введение в язык программирования Python 3Яковенко Кирилл
Web-программирование
Лекция #5. Введение в язык программирования Python 3
Цикл лекций читается в Омском государственном университете им. Ф.М.Достоевского на факультете компьютерных наук.
Лектор: Яковенко Кирилл Сергеевич.
ASP.NET MVC - как построить по-настоящему гибкое веб-приложениеAlexander Byndyu
В докладе рассматривается использование популярных фреймворков в разработке ASP.NET MVC приложения, как сделать его наиболее гибким. Будет затронута тема минимизации дублирования и повторное использование кода, применение методов метапрограммирования отображений; уменьшение логики в контроллерах; применение принципов SOLID и GRASP для разработки доменной модели приложения.
По материалам конференции .NET разработчиков http://www.dotnetconf.ru/Materialy/Asp_net_mvc_kak_postroit_gibkoe_web_prilozenie
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...Andrey Rebrov
Как-то так происходит, что “на 10 девчонок по статистике 9 ребят”, а точнее на группу из 5-7 разработчиков – 1 тестировщик. Или его нет совсем. Так что очень часто приходится и код писать, и тестировать, а дата релиза все ближе и ближе.
В тех случаях, когда мы пишем веб-приложение, помочь в нашей нелегкой судьбе может бодрящий микс из Selenium и TestNG... Как это сделали мы, какие потом получили выводы и результаты — все это я и хочу рассказать и показать
Сергей Константинов — Что интересного готовит нам W3CYandex
2014 год обещает нам множество интересных нововведений. Помимо новинок в HTML5, нас ждут глобальные изменения в самой веб-платформе. Promises и модули — революция в стандартах разработки стандартов. Service Workers — новый подход к решению проблемы офлайновых веб-приложений. @@create — отнаследуйся от HTMLElement! Обо всём этом и пойдёт речь в докладе.
ASP.NET MVC за пределами Hello World. Дятлов Александр D2D Just.NETDev2Dev
ASP.NET MVC простой и распространённый инструмент. Но строить на его основе большое веб-приложение не так просто. Туториалы не раскрывают проблем возникающих при росте проекта. Зачастую, изначально стройная архитектура размазывается с каждой следующей итерацией.
Я хочу поделиться своим опытом. Рассказать об основных проблемах и предложить выбранные мной решения.
Практические основы тестирования на php Unit-test: понятия, тонкости, пути решения, вопросы для проработки.
PHPUnittest fast start
Разработано http://webgloss.ru
Архитектура кода нового 2ГИС Web API или куда мы дели MVCDevDay
Сергей Коржнев
Архитектор версии 1.4 2ГИС Web API
Архитектура кода нового 2ГИС Web API или куда мы дели MVC
Тезисы:
● Как организован код в старой версии.
● Вдумчиво смотрим, как мы используем Yii, хватаемся за голову и клавиатуру. Там отрезаем, тут пришиваем, и вуаля!
● Ну и делаем выводы, как мы забороли две классические проблемы программирования: борьба с дублированием кода и сложностью системы.
Доклад Алексея Малейкова, ведущего разработчика в HTML Academy.
«Совместно с платформой «Открытое образование» мы запустили курс, посвященный основам HTML и CSS. Перед нами стояла задача разработать систему, которая будет автоматически проверять итоговые проекты на соответствие заранее подготовленному макету. В качестве основной техники для проверки было выбрано регрессионное тестирование.
В каждом проекте мы проверяли разметку, сетку и стилевое оформление не только страницы целиком, но и отдельных блоков. Одной из главных проблем был поиск этих самых блоков, так как о том, какой будет верстка студентов, мы не знали ничего - ни какие теги они использовали, ни какие классы и идентификаторы были задействованы. Имели только общее представление о структуре.
В докладе я расскажу, от чего мы отталкивались при построении этой системы, как мы разбирали и анализировали проекты. Какие инструменты и технологии мы для этого использовали и почему. Какие подводные камни вылезали, и какие возникали проблемы».
Использование юнит-тестов для повышения качества разработкиvictor-yastrebov
В докладе рассмотрены подходы к созданию надежных юнит-тестов, которые просты в поддержке и модернизации, а также принципы создания кода пригодного для покрытия автотестами. Приведены два способа внедрения зависимости: с использованием конструктора тестируемого объекта, а также с использованием подхода "выделить и переопределить". Каждый из способов разобран на примере, демонстрирующем особенности его реализации и применения. Приведен ряд практических советов, нацеленных на создание надежных юнит-тестов. Использование на практике приведенных подходов и принципов позволяет упростить процесс поддержки и модификации существующего кода, а также дает уверенность в надежности работы добавляемого нового функционала. В конечном итоге это приводит к повышению качества разрабатываемого продукта.
Similar to Выжить с помощью ООП. Максим Гопей (20)
Классифицируем текст в iOS без CoreML: как и зачем? EatDog
Доклад Вячеслава Володько для Съесть собаку #16: iOS 21/03/2019
Тезисы:
- Классификация текстов с помощью встроенных в iOS SDK средств.
- Ограничения NLLanguageRecognizer и MLTextClassifier.
- Построение собственного классификатора текстов.
- Техники, которые позволяют встроить классификатор в AppExtension.
- Оценка эффективности классификатора.
macOS app development for iOS devs: expand your horizonsEatDog
Доклад Юлии Ващенко для Съесть собаку #16: iOS, 21/03/2019
Тезисы:
- Преимущества разработки под macOS для iOS программистов.
- UIKit vs AppKit.
- Подготовка к релизу Marzipan на наших платформах.
- Взгляд на macOS & iOS с точки зрения их истории.
- Технологии, специфичные для десктопа.
- Демо: Современное межпроцессорное общение.
- Бонус для iOS разработчиков, посетивших доклад.
Доклад Антона Минашкина для Съесть собаку #15, 27/11/18
Тезисы:
- Почему DI – такой популярный design pattern в Android;
- Что особенного в DI для Kotlin;
- Практическая польза и опции DI.
Быстрый в имплементации и в работе мониторинг с использованием ELKEatDog
Доклад Ивана Мельничука на "Съесть собаку"#14: PHP, 20/09/2018
Тезисы:
Как начать кастомно логировать приложение при минимальных усилиях;
Как выглядит готовый стек логирования ELK;
Немного о наболевшем или как доказать заказчику в чем проблема сайта;
Google Analytics семплирует данные, а вы можете узнать больше.
Доклад Евгения Кузьмина для "Съесть собаку" #14: PHP, 20/092018
Тезисы:
Построение процесса continuous integration/delivery на примере Laravel-приложения;
Структура организации авто-тестирования;
Интеграция запуска тестов и деплоя на CI сервере Jenkins;
Применение Docker в связке с AWS ElasticBeanstalk для blue-green деплоя.
Как мы экспериментируем в больших микросервисных системахEatDog
Доклад Александра Баранецкого для Съесть собаку #13, 14/06/2018.
Тезисы:
- Как сделать гибкой разработку на микросервисной системе, в которой более 100 узлов;
- Как минимизировать ошибки и их цену;
- Как мягко обеспечить миграции версий и эволюцию всей системы в целом.
Доклад Александра Котыни на Съесть собаку #13, 14/06/2018.
Тезисы:
- Зачем использовать Redis;
- Эволюция внедрения Redis в крупный проект и подводные камни при его использовании;
- Варианты достижения высокой доступности и отказоустойчивости;
- Наш сценарий.
Доклад Антона Немцева для Съесть собаку #12: JavaScript, 15/03/2018.
Тезисы:
- Зачем, ну зачем нам это?!
- Что именно мы ограничиваем и как выбираем кодстайл;
- Правила и ограничения при написании скриптов, стилей и рабочего процесса;
- Напишем свой собственный npm-пакет с целью особо изощренного насилия;
- Правила и ограничения для рабочего процесса на стороне систем контроля версий;
- Что дальше?
Refactor to Reactive With Spring 5 and Project ReactorEatDog
The document discusses refactoring a Spring application to use reactive approaches. It begins with an overview of reactivity and its benefits compared to blocking implementations. The refactoring process involves 3 main steps: 1) Refactoring the design to use a push model with streaming APIs instead of pulling data; 2) Choosing reactive tooling like Project Reactor, Spring WebFlux and non-blocking drivers; 3) Refactoring the code to use asynchronous and non-blocking implementations, updating contracts to use reactive types like Mono and Flux, and handling errors through retry operators. Examples show converting services to return reactive streams and consume external APIs asynchronously.
1) APIs and GraphQL are discussed as alternatives to traditional database-centric approaches for building applications.
2) GraphQL provides an alternative query language and runtime that allows clients to efficiently fetch nested data from multiple sources in a single request.
3) The document discusses some advantages of GraphQL like efficient data fetching, easier development, and analytics capabilities. It also notes some challenges around caching, security, and error handling.
Доклад Александра Макарова для Съесть собаку #10: PHP, 12/10/2017.
Тезисы:
- Что такое архитектура сайта и зачем она нужна
- Виноват ли фреймворк в плохой архитектуре
- Где выход из сложности и регрессий
- Что делать со сложным доменом
- Выводы.
Доклад Ивана Мосева для Съесть собаку #10: PHP, 12/10/2017.
Тезисы:
- Места обитания: где разворачивать свои микросервисы
- Взаимоотношения в стае: как микросервисы общаются между собой
- Микросервисы и человек: авторизация пользователей и роутинг
- Содержание в неволе: как разрабатывать микросервисы локально
- Выводы.
Доклад Антона Молдована, Software Architect, для Съесть собаку #9, 15/06/2017.
Тезисы:
- Большая роль TDD и DI
- Проблемы с TDD и DI
- Суть альтернативного подхода Dependency Rejection
- Разрушительная перспектива с TDD without Mocks
- Выводы.
Доклад Сергея Калинца, Software Architect, для Съесть собаку #9, 15/06/2017.
Тезисы:
- Проблемы стандартного процесса разработки
- Понятие CI pipeline
- Решения для автоматизации сборки, тестирования и развертывания
- Инструменты для эффективной разработки
- Использование тестовых двойников в .NET
- Концепция "живого кода"
- Демонстрация применения современных библиотек и инструментов для эффективного написания кода.
Доклад Дмитрия Науменко для "Съесть собаку #8", PHP, 20/04/17.
Тезисы:
- Понятие DDD и его цели
- Концепции и паттерны применяемые в DDD
- Использование подходов DDD в разработке приложений
- Преимущества и недостатки
- Выводы.
Доклад Максима Гопея для "Съесть собаку #8", PHP, 20/04/17
Тезисы:
- Моделирование угрозы
- Виды атак и уязвимостей в коде
- Как проверять безопасность систем
- Выводы.
Нельзя просто так взять и сделать версионирование APIEatDog
"Нельзя просто так взять и сделать версионирование API"
Почему важно иметь версионирование и какие проблемы оно решает
Какие есть подходы к версионированию API
Какие инструменты и решения предоставляют популярные веб-фреймворки
Почему версионирование - это не просто и как решить возникшие трудности
Выводы
API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемостьEatDog
"Особенности SaaS под углом платного доступа к API и ресурсам"
Проблемный домен — введение в управление ресурсами SaaS решения
SLA и требования к отказоустойчивости
Алгоритмы балансировки запросов API
Расширяемость решения в облачной инфраструктуре
Вычислительная сложность задач и управлении запросами пользователей
Пути решения и выбор инструментов, расширение их возможностей
Выводы
29. interface Container {
public function drop();
}
class Glass implements Container {
public function drop() { /* well, crash */ }
}
class Cup implements Container {
public function drop() { /* well, crash, and throw the handle out */ }
}
class Cat {
public function dropContainer(Container $container) {
$container->drop();
}
}
01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
12.
13.
14.
29
31. class ContainerCollection implements Iterator {
public function current() : Container { /* ... */ };
// ...
}
$containersOnTable = new ContainerCollection();
// Your mom fills the collection here:
$eventManager->dispatch('serve_table', $containers);
array_walk($containersOnTable,
function(Container $container) use ($cat) {
$cat->dropContainer($container);
}
);
01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
12.
13.
14.
15.
31
32. Инкапсуляция помогает скрыть реализацию за абстракицей.
Наследование помогает строить абстракции.
Полиморфизм помогает писать код на основе абстракций.
32
37. Метод-команда
• принимает запрос на изменение состояния объекта,
• ничего не возвращает (void),
• выполняется успешно, либо бросает исключение.
37
38. Метод-запрос
• принимает запрос на получение информации,
• возвращает значение указанного типа,
• если это невозможно, возвращает NULL ,
• или бросает исключение,
• никогда не меняет наблюдаемое состояние объекта.
*
*
38
47. class Person {
private $firstName, $lastName, $email, $gender;
public function rename(NameChangingRequest $request) {
// change first/last/... names depending on request
// throw exception if name is not male, for instance
}
public function changeGender(GenderChangingRequest $request) {
// A request which contains also the new name,
// maybe the reason or whatever is needed.
}
}
$person->changeGender(new GenderChangingRequest('M', 'New Name'));
01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
12.
13.
14.
15.
47
59. Интернет-аптека для ветеринаров.
Можно покупать товар:
• для клиники (clinic),
• для клиента (pet owner).
От этого зависит процесс заказа. Например, при заказе для
клиента можно оформить доставку в клинику или на дом.
59