При написании программы, разработчик примерно представляет себе, как должна работать его программа. Но не всегда его ожидания соответствуют действительности — приложения тормозят, потребляют много ресурсов и вообще ведут себя не так, как задумывалось, особенно под большой нагрузкой. В своём докладе я покажу, как заглянуть "под капот" ваших приложений на Python (и Django в частности): какие способы профилирования бывают и когда их можно использовать, расскажу об отладке приложений и различных инструментах, которые помогают разработчику при разработке.
Лекция #5. Введение в язык программирования Python 3Яковенко Кирилл
Web-программирование
Лекция #5. Введение в язык программирования Python 3
Цикл лекций читается в Омском государственном университете им. Ф.М.Достоевского на факультете компьютерных наук.
Лектор: Яковенко Кирилл Сергеевич.
* Почему Angular 2 такой быстрый и как его ускорить еще сильнее?
* Как работает Change Detection механизм и как им управлять?
* Зачем нам Zone.js и Функциональное Реактивное Программирование?
* Как работать с Redux и Mobx в Angular 2 и что можно от этого выиграть?
Об этом и ряде других вещей вы узнаете из этого доклада.
Доклад рассматривает тонкости nodejs, а так же преимущества Evented I/O для серверных приложений. Будет предоставлен ряд рекоммендаций по правильному построению архитектуры, модульности, масштабированию, дизайну кода. Краткое введение в технологию программирования "волокнами" (fibers) и ряд других эффективных практик.
* Почему Angular 2 такой быстрый и как его ускорить еще сильнее?
* Как работает Change Detection механизм и как им управлять?
* Зачем нам Zone.js и Функциональное Реактивное Программирование?
* Как работать с Redux и Mobx в Angular 2 и что можно от этого выиграть?
Об этом и ряде других вещей вы узнаете из этого доклада.
Konstantin Krivlenia - "Continuous integration for frontend"IT Event
Do you want to know what is the continuous integration? how does make a controlled code when team is growing, maintain quality of code and be calm after the release. Don't be afraid to use ruthless refactoring and don't break the product features. I am glad to share with you how it make.
При написании программы, разработчик примерно представляет себе, как должна работать его программа. Но не всегда его ожидания соответствуют действительности — приложения тормозят, потребляют много ресурсов и вообще ведут себя не так, как задумывалось, особенно под большой нагрузкой. В своём докладе я покажу, как заглянуть "под капот" ваших приложений на Python (и Django в частности): какие способы профилирования бывают и когда их можно использовать, расскажу об отладке приложений и различных инструментах, которые помогают разработчику при разработке.
Лекция #5. Введение в язык программирования Python 3Яковенко Кирилл
Web-программирование
Лекция #5. Введение в язык программирования Python 3
Цикл лекций читается в Омском государственном университете им. Ф.М.Достоевского на факультете компьютерных наук.
Лектор: Яковенко Кирилл Сергеевич.
* Почему Angular 2 такой быстрый и как его ускорить еще сильнее?
* Как работает Change Detection механизм и как им управлять?
* Зачем нам Zone.js и Функциональное Реактивное Программирование?
* Как работать с Redux и Mobx в Angular 2 и что можно от этого выиграть?
Об этом и ряде других вещей вы узнаете из этого доклада.
Доклад рассматривает тонкости nodejs, а так же преимущества Evented I/O для серверных приложений. Будет предоставлен ряд рекоммендаций по правильному построению архитектуры, модульности, масштабированию, дизайну кода. Краткое введение в технологию программирования "волокнами" (fibers) и ряд других эффективных практик.
* Почему Angular 2 такой быстрый и как его ускорить еще сильнее?
* Как работает Change Detection механизм и как им управлять?
* Зачем нам Zone.js и Функциональное Реактивное Программирование?
* Как работать с Redux и Mobx в Angular 2 и что можно от этого выиграть?
Об этом и ряде других вещей вы узнаете из этого доклада.
Konstantin Krivlenia - "Continuous integration for frontend"IT Event
Do you want to know what is the continuous integration? how does make a controlled code when team is growing, maintain quality of code and be calm after the release. Don't be afraid to use ruthless refactoring and don't break the product features. I am glad to share with you how it make.
Константин Чернухо - Аккаунт-Менеджер - we've got it!Alexander Zimin
This document discusses the benefits of making an SDK for account management and authorization. Some key points covered include:
1. SDK interfaces should be flexible but not too flexible to avoid crashes affecting all apps.
2. Making common authorization, security, and analytics code shared reduces duplicated code and updates only need to happen in one place.
3. The SDK allows for embedded customizable authorization screens as well as integration of social networks and Yandex.Key single sign-on.
4. Security features like encrypted keys and SSL pinning are built-in to securely store account information.
5. Analytics can also be integrated to gather usage statistics in a replaceable module.
Александр Зимин (Alexander Zimin) — UIViewController, откройся!CocoaHeads
The document discusses iOS app development topics including UIKit, transitions, animations, view controllers, and protocols. It provides information about modal presentation styles in UIModalPresentationStyle, transition coordinators using the UIViewControllerTransitioningDelegate protocol, and animating view controller changes using the UIViewControllerContextTransitioning protocol. The document outlines responsibilities for animating transitions between views.
Дмитрий Обухов (Dmitry Obukhov) - Growth Hacking для настольных и мобильных п...Alexander Zimin
This document provides an overview of growth hacking strategies for mobile and desktop apps. It discusses getting initial users without a marketing budget by focusing on catching bugs, testing workflows, and getting early users through soft launches. The document also recommends launching on Product Hunt and Afterparty and engaging friends and followers to help drive downloads and purchases in the early stages.
Александр Зимин, Onboarding в мобильном приложении: первое впечатление — всё,...Mail.ru Group
Александр рассказал о том, как стоит знакомить пользователя со своим приложением, поделился качественными примерами и показал, как их команде удалось создать сложный onboarding c большой конверсией выполнения.
The document provides five design principles for creating slides that effectively communicate messages to audiences:
1. Focus on the main message you want the audience to remember.
2. Keep designs simple with less text and only 1 main point per slide.
3. Use interesting fonts instead of boring standard ones to engage audiences.
4. Include high quality images that visually represent the message.
5. Choose a color scheme that fits the theme and works cohesively.
Есть такая штука как инструментирование кода. Мало кто знает о ней, даже пользуясь результатами ее применения. Между тем, с инструментированием можно делать много всего интересного и, главное, полезного. Например, это может вам помочь лучше понять код или сделать процесс разработки более эффективным. Примеры инструментирования кода и принципы его работы.
Андрей Карпов
Вы узнаете, что такое статический анализ кода и историю его развития. Узнаете, как эффективно применять инструменты статического анализа в своей работе, увидите практические примеры использования этой методологии. Доклад ориентирован на программистов, использующих языки Си/Си++, но будет полезен всем
Юрий Ефимочев, Компилируемые в реальном времени DSL для С++ Sergey Platonov
В последнее время в промышленной разработке ПО особую популярность обретают Domain-Specific Lanugages (DSL). Они драматически упрощают разработку и дают возможность “программировать” не только программистам, но и пользователям прикладных программ.
В своем докладе я расскажу об опыте использования DSL применительно к С++, причем упор будет сделан на производительность кода DSL, и его мгновенную “встраиваемость” в запущенную программу путем компиляции DSL-кода в нативный код с помощью инструментария LLVM.
В лекции рассказано о доступных средствах по отладке веб-сайтов, их возможностях, а также способах их использования. Также речь пойдет о том, как искать ошибки у пользователей в продакшене и контролировать качество продукта.
Михаил Давыдов "Масштабируемые JavaScript-приложения"Yandex
2 июля 2011, Я.Субботник в Екатеринбурге
Михаил Давыдов "Масштабируемые JavaScript-приложения"
О докладе:
Проектирование масштабируемых JavaScript-приложений уровня Яндекс.Почты.
Чем отличается сайт от JavaScript приложения? Какие проблемы могут возникнуть при разработке многокомпонентных приложений? Какую архитектуру нужно заложить, чтобы приложение могло легко развиваться?
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)Ontico
В MySQL 5.7 появился целый ряд новых возможностей, позволяющих использовать MySQL в приложениях и как хранилище JSON-документов, и как реляционную базу данных.
В этом докладе мы расскажем о поддержке JSON в MySQL 5.7, а также поговорим о том, когда имеет смысл её использовать, и насколько хорошо она работает. Кроме того, мы остановимся на новом протоколе доступа к MySQL, поддерживающем SQL. Помимо этого, мы рассмотрим CRUD-операции и такие дополнительные функции, как асинхронная коммуникация и пайплайнинг (pipelining).
В заключительной части доклада мы расскажем о возможностях MySQL 5.7 в качестве хранилища документов.
Юнит-тестирование и Google Mock. Влад Лосев, Googleyaevents
Владимир Лосев, Google
Закончил математико-механический факультет Санкт-Петербургского государственного университета в 1995 году. Работал в компаниях Motоrola, Fair Isaac и Yahoo. С 2008 года работает в Google, в группе, занимающейся вопросами повышения производительности инженеров.
Тема доклада
Юнит-тестирование и Google Mock.
Тезисы
В модульных (юнит) тестах каждый элемент программы тестируется по отдельности, в изоляции от других. Такие тесты исполняются очень быстро, поэтому их можно запускать когда угодно, что позволяет отлавливать дефекты на самых ранних стадиях разработки. Однако для тестирования объекта в изоляции от других необходимо имитировать поведение связанных с ним объектов, что на C++ довольно утомительное занятие. Разработанная в Googlе библиотека для создания и использования mock-объектов — Google Mock — позволяет существенно упростить этот процесс и ускорить написание тестов. В докладе пойдет речь о принципах и возможностях библиотеки, примерах её использования и её внутреннем устройстве.
Доклад с митапа MSK .NET Community (http://mskdotnet.org).
Поговорим о самом мощном отладчике для Windows – WinDbg. Разберем как начать использовать этот отладчик, чем он может быть полезен для .NET разработчиков. Подробней остановимся на практических моментах его применения, зачем он прикладным программистам, web-разработчикам. Посмотрим и на другие инструменты отладки, которые занимают нишу между интуитивно управляемым комбайном Visual Studio и легким, но крайне аскетичным WinDbg.
Мир мобильных телефонов очень сильно изменил нашу жизнь. В наше время невозможно представить современного человека, без этого чудо устройства. На рынке появляется все больше устройств и приложений. И чтобы удобнее пользоваться этими приложениями пользователи выбирают “умные” телефоны, или как их еще принято называть смартфоны. В своем докладе я хочу поделиться своим опытом автоматизации приложений под Android и iOS. Я расскажу о том, какие инструменты автоматизации я использовал. Поговорим о недостатках этих инструментов и какие из них стоит использовать у себя на проекте.
Similar to Роман Ермолов - Отладка приложений под iOS (20)
39. Работа с методами
// objc.h
typedef id (*IMP)(id self, SEL _cmd, ...);
39
@interface CustomClass : NSObject
- (void)methodFoo:(id)foo bar:(id)bar baz:(id)baz;
- (void)setQux:(CGFloat)qux;
- (void)setCorge:(CGRect)corge;
@end
// NSObject.h
- (IMP)methodForSelector:(SEL)aSelector;
+ (IMP)instanceMethodForSelector:(SEL)aSelector;
40. Работа с методами
40
// 1. Получаем адрес функции
(lldb) expression IMP $address = (IMP)[[CustomClass class]
instanceMethodForSelector:@selector(methodFoo:bar:baz:)]
// 2. Ставим breakpoint на адрес
(lldb) breakpoint set —-address $address
Breakpoint 1:
where = SomeApplication`___lldb_unnamed_function653$$,
address = 0xSome_Address
41. Работа с методами. Аргументы
Способы передачи аргументов в функцию:
через регистры процессора
через стек
смешанный (часть передается через регистры, часть
через стек или другую память)
41
Архитектуры:
armv7* / arm64 / x86_64
48. Работа с объектами
/// A pointer to an instance of a class.
typedef struct objc_object *id;
/// Represents an instance of a class.
struct objc_object {
Class isa OBJC_ISA_AVAILABILITY;
};
48
49. Работа с объектами
49
@interface CustomClass : NSObject {
@private
NSInteger _counter;
}
@end
struct CustomClass_object {
Class isa;
NSInteger _counter;
};
50. Работа с объектами. Значение ivar
(lldb) po [0xSome_Address valueForKey:@"_counter"]
123
50
// 1. Получаем описание переменной
(lldb) expression struct objc_ivar* $variable = (struct objc_ivar*)
class_getInstanceVariable([CustomClass class], "_counter")
// 2. Получаем смещение
(lldb) expression ptrdiff_t $offset =
(ptrdiff_t)ivar_getOffset($variable)
// 3. Получаем значение переменной
(lldb) memory read 0xSome_Address+$offset --format int64
--count 1 --size 8
0xSome_Address+$offset: {123}
51. Работа с объектами. Watchpoint
51
// 1. Получаем описание переменной
(lldb) expression struct objc_ivar* $variable = (struct objc_ivar*)
class_getInstanceVariable([CustomClass class], "_counter")
// 2. Получаем смещение
(lldb) expression ptrdiff_t $offset =
(ptrdiff_t)ivar_getOffset($variable)
// 3. Ставим watchpoint на адрес
(lldb) watchpoint set expression —-watch read_write —-size 8
-- $arg1+$offset
Watchpoint created:
Watchpoint 0: addr = 0xSome_Address size = 8 type = rw
new value: 0
52. Chisel
Установка брейкпоинтов на метод класса/объекта
Установка watchpoint’ов
Иерархия UIViewController
Открытие UIImage, UIView, UIColor в Preview
многое другое!
52